{"version":3,"file":"rolatech-angular-onboarding-agent-apply-review-page-DR-hxYHj.mjs","sources":["../../../../packages/angular-onboarding/src/lib/pages/agent-apply/agent-apply-review-page.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, inject, signal, ViewEncapsulation } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport {\n  OnboardingApplicationDetailResponse,\n  OnboardingDocumentResponse,\n  OnboardingDocumentService,\n  onboardingApplicantTypeLabel,\n  onboardingDocumentTypeLabel,\n  onboardingStatusLabel,\n  onboardingVatModeLabel,\n} from '@rolatech/angular-services';\nimport { firstValueFrom } from 'rxjs';\nimport { OnboardingDocumentPreviewDialog } from '../../components/onboarding/onboarding-document-preview-dialog';\nimport { OnboardingIssueList } from '../../components/onboarding/onboarding-issue-list';\nimport { OnboardingReviewIssuesBanner } from '../../components/onboarding/onboarding-review-issues-banner';\nimport { OnboardingSummaryCard } from '../../components/onboarding/onboarding-summary-card';\nimport { OnboardingTimelineDrawer } from '../../components/onboarding/onboarding-timeline-drawer';\nimport { AgentApplyFacade } from '../../store/agent-apply.facade';\n\ninterface ReviewDocumentItem {\n  label: string;\n  helper: string;\n  filename: string;\n  document: OnboardingDocumentResponse | null;\n}\n\n@Component({\n  selector: 'rolatech-agent-apply-review-page',\n  standalone: true,\n  imports: [\n    OnboardingSummaryCard,\n    OnboardingIssueList,\n    OnboardingTimelineDrawer,\n    OnboardingReviewIssuesBanner,\n    OnboardingDocumentPreviewDialog,\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'block' },\n  template: `\n    @if (facade.detail(); as detail) {\n      <div class=\"space-y-4\">\n        @if (detail.status === 'NEED_MORE_INFO' || detail.status === 'SUBMITTED' || detail.status === 'IN_REVIEW') {\n          <rolatech-onboarding-review-issues-banner [issues]=\"detail.issues\" [status]=\"detail.status\" />\n        }\n\n        <rolatech-onboarding-summary-card [title]=\"'Application'\" [items]=\"applicationItems()\" />\n        <rolatech-onboarding-summary-card [title]=\"'Profile'\" [items]=\"profileItems()\" />\n\n        <section class=\"rounded-2xl border border-(--rt-border-color) bg-(--rt-base-background) p-5 shadow-sm\">\n          <div class=\"flex flex-wrap items-start justify-between gap-3\">\n            <div class=\"space-y-1\">\n              <div class=\"flex flex-wrap items-center gap-2\">\n                <h3 class=\"text-base font-semibold text-(--rt-text-primary)\">Documents</h3>\n                @if (!facade.requiresDocuments()) {\n                  <span\n                    class=\"rounded-full border border-(--rt-border-color) bg-(--rt-raised-background) px-2.5 py-1 text-xs font-semibold text-(--rt-text-secondary)\"\n                  >\n                    Optional\n                  </span>\n                }\n              </div>\n              <p class=\"text-sm text-(--rt-text-secondary)\">\n                Open uploaded files before you submit or resubmit the application.\n              </p>\n            </div>\n          </div>\n\n          <div class=\"mt-4 grid gap-4 md:grid-cols-2\">\n            @for (item of documentItems(); track item.document?.id ?? item.label + ':' + item.filename) {\n              <article class=\"rounded-xl border border-(--rt-border-color) bg-(--rt-raised-background) p-3\">\n                <div class=\"flex flex-wrap items-start justify-between gap-3\">\n                  <div class=\"min-w-0 space-y-1\">\n                    <p class=\"text-xs font-medium uppercase tracking-wide text-(--rt-text-secondary)\">{{ item.label }}</p>\n                    <p class=\"wrap-break-words text-sm font-medium text-(--rt-text-primary)\">{{ item.filename }}</p>\n                    @if (item.helper) {\n                      <p class=\"text-xs text-(--rt-text-secondary)\">{{ item.helper }}</p>\n                    }\n                  </div>\n\n                  @if (item.document) {\n                    <button\n                      type=\"button\"\n                      class=\"cursor-pointer rounded-full border border-(--rt-border-color) bg-(--rt-raised-background) px-3 py-1.5 text-xs font-semibold text-(--rt-text-primary) transition hover:bg-(--rt-base-background) disabled:cursor-not-allowed disabled:opacity-60\"\n                      [disabled]=\"previewBusy(item.document.id)\"\n                      (click)=\"openDocumentPreview(item)\"\n                    >\n                      {{ previewBusy(item.document.id) ? 'Loading...' : 'Preview' }}\n                    </button>\n                  } @else {\n                    <span\n                      class=\"rounded-full border border-(--rt-border-color) bg-(--rt-base-background) px-2.5 py-1 text-xs font-semibold text-(--rt-text-secondary)\"\n                    >\n                      Missing\n                    </span>\n                  }\n                </div>\n              </article>\n            }\n          </div>\n        </section>\n\n        <rolatech-onboarding-summary-card [title]=\"'Financial'\" [items]=\"financialItems()\" />\n        <rolatech-onboarding-summary-card [title]=\"bankingTitle()\" [items]=\"bankingItems()\" />\n\n        <rolatech-onboarding-issue-list [issues]=\"detail.issues\" />\n\n        <section\n          class=\"flex flex-wrap items-center justify-between gap-3 rounded-2xl border border-(--rt-border-color) bg-(--rt-base-background) p-5 shadow-sm\"\n        >\n          <div class=\"flex items-center gap-2\">\n            <button\n              type=\"button\"\n              class=\"rounded-xl border border-(--rt-border-color) px-4 py-2.5 text-sm font-medium text-(--rt-text-secondary) transition hover:bg-(--rt-raised-background)\"\n              (click)=\"back()\"\n            >\n              Back to form\n            </button>\n\n            <button\n              type=\"button\"\n              class=\"rounded-xl border border-(--rt-border-color) bg-(--rt-base-background) px-4 py-2.5 text-sm font-medium text-(--rt-text-secondary) transition hover:bg-(--rt-raised-background)\"\n              (click)=\"openTimeline()\"\n            >\n              Timeline\n            </button>\n          </div>\n\n          @if (showSubmitAction()) {\n            <button\n              type=\"button\"\n              class=\"rounded-xl bg-(--rt-brand-color) px-5 py-2.5 text-sm font-semibold text-(--rt-text-primary-inverse) transition hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-60\"\n              [disabled]=\"!facade.canSubmit()\"\n              (click)=\"submit()\"\n            >\n              {{ submitLabel() }}\n            </button>\n          } @else {\n            <button\n              type=\"button\"\n              class=\"rounded-xl border border-(--rt-border-color) px-5 py-2.5 text-sm font-semibold text-(--rt-text-primary) transition hover:bg-(--rt-raised-background)\"\n              (click)=\"openResult()\"\n            >\n              View Result\n            </button>\n          }\n        </section>\n\n        <rolatech-onboarding-timeline-drawer\n          [open]=\"timelineOpen()\"\n          [title]=\"'Application Timeline'\"\n          [items]=\"detail.timeline\"\n          [zIndex]=\"9100\"\n          (closeRequested)=\"closeTimeline()\"\n        />\n\n        <rolatech-onboarding-document-preview-dialog\n          [open]=\"previewOpen()\"\n          [title]=\"previewTitle()\"\n          [subtitle]=\"previewSubtitle()\"\n          [url]=\"previewUrl()\"\n          [loading]=\"previewLoading()\"\n          [error]=\"previewError()\"\n          (closeRequested)=\"closeDocumentPreview()\"\n        />\n      </div>\n    } @else {\n      <div\n        class=\"rounded-2xl border border-(--rt-border-color) bg-(--rt-base-background) p-5 text-sm text-(--rt-text-secondary) shadow-sm\"\n      >\n        Loading application summary...\n      </div>\n    }\n  `,\n})\nexport class AgentApplyReviewPage {\n  readonly facade = inject(AgentApplyFacade);\n  private readonly onboardingDocumentService = inject(OnboardingDocumentService);\n  readonly timelineOpen = signal(false);\n  readonly previewOpen = signal(false);\n  readonly previewLoading = signal(false);\n  readonly previewError = signal<string | null>(null);\n  readonly previewUrl = signal<string | null>(null);\n  readonly previewTitle = signal<string | null>(null);\n  readonly previewSubtitle = signal<string | null>(null);\n  readonly previewDocumentId = signal<string | null>(null);\n  private readonly router = inject(Router);\n  private readonly route = inject(ActivatedRoute);\n\n  readonly applicationItems = computed(() => {\n    const detail = this.facade.detail();\n\n    if (!detail) {\n      return [];\n    }\n\n    return [\n      { label: 'Applicant type', value: onboardingApplicantTypeLabel(detail.applicantType) },\n      { label: 'Operating region', value: this.countryCodeLabel(detail.countryCode) },\n      { label: 'Status', value: onboardingStatusLabel(detail.status) },\n    ];\n  });\n\n  readonly profileItems = computed(() => {\n    const detail = this.facade.detail();\n\n    if (!detail) {\n      return [];\n    }\n\n    return [\n      { label: this.facade.isCompany() ? 'Company legal name' : 'Applicant name', value: this.primaryName(detail) },\n      { label: this.facade.isCompany() ? 'Representative' : 'Primary contact', value: detail.contactName },\n      { label: 'Primary email', value: detail.contactEmail },\n      { label: 'Phone number', value: detail.contactPhone },\n    ];\n  });\n\n  readonly documentItems = computed<ReviewDocumentItem[]>(() => {\n    const detail = this.facade.detail();\n\n    if (!detail) {\n      return [];\n    }\n\n    const requiredItems = this.facade.requiredDocuments().map((spec) => {\n      const document = this.facade.getDocument(spec.type);\n\n      return {\n        label: spec.label,\n        helper: spec.helperText ?? '',\n        filename: document?.originalFilename ?? 'Missing',\n        document,\n      };\n    });\n\n    const requiredTypes = new Set(this.facade.requiredDocuments().map((spec) => spec.type));\n    const additionalItems = detail.documents\n      .filter((item) => !requiredTypes.has(item.documentType))\n      .map((document) => ({\n        label: `Additional: ${onboardingDocumentTypeLabel(document.documentType)}`,\n        helper: 'Supporting document uploaded with the application.',\n        filename: document.originalFilename,\n        document,\n      }));\n\n    return [...requiredItems, ...additionalItems];\n  });\n\n  readonly financialItems = computed(() => {\n    const detail = this.facade.detail();\n\n    if (!detail) {\n      return [];\n    }\n\n    return [\n      { label: 'VAT mode', value: onboardingVatModeLabel(detail.vatMode ?? null) },\n      {\n        label: 'VAT number',\n        value: detail.vatNumber || (detail.vatMode === 'MANUAL_REVIEW_REQUIRED' ? 'Manual review' : null),\n      },\n      { label: 'VAT rate', value: detail.applicantType === 'INDIVIDUAL' ? '0%' : '20%' },\n    ];\n  });\n\n  readonly bankingItems = computed(() => {\n    const detail = this.facade.detail();\n\n    if (!detail) {\n      return [];\n    }\n\n    return [\n      { label: 'Bank name', value: detail.bankName },\n      { label: 'Account holder', value: detail.accountHolderName },\n      { label: 'Sort code', value: this.facade.formatSortCode(detail.sortCode) },\n      { label: 'Account number', value: detail.accountNumber },\n    ];\n  });\n\n  readonly bankingTitle = computed(() => (this.facade.requiresBanking() ? 'Banking' : 'Banking (optional)'));\n\n  readonly showSubmitAction = computed(() => {\n    const status = this.facade.status();\n    return status === 'DRAFT' || status === 'IN_PROGRESS' || status === 'NEED_MORE_INFO' || status === null;\n  });\n\n  readonly submitLabel = computed(() =>\n    this.facade.status() === 'NEED_MORE_INFO' ? 'Resubmit application' : 'Submit application',\n  );\n\n  async submit(): Promise<void> {\n    const submitted = await this.facade.submit();\n\n    if (!submitted) {\n      return;\n    }\n\n    await this.router.navigate(['../result'], {\n      relativeTo: this.route,\n    });\n  }\n\n  async back(): Promise<void> {\n    await this.router.navigate(['../form'], {\n      relativeTo: this.route,\n    });\n  }\n\n  async openResult(): Promise<void> {\n    await this.router.navigate(['../result'], {\n      relativeTo: this.route,\n    });\n  }\n\n  openTimeline(): void {\n    this.timelineOpen.set(true);\n  }\n\n  closeTimeline(): void {\n    this.timelineOpen.set(false);\n  }\n\n  previewBusy(documentId: string): boolean {\n    return this.previewLoading() && this.previewDocumentId() === documentId;\n  }\n\n  async openDocumentPreview(item: ReviewDocumentItem): Promise<void> {\n    if (!item.document) {\n      return;\n    }\n\n    this.previewOpen.set(true);\n    this.previewLoading.set(true);\n    this.previewError.set(null);\n    this.previewUrl.set(null);\n    this.previewTitle.set(item.label);\n    this.previewSubtitle.set(item.document.originalFilename || null);\n    this.previewDocumentId.set(item.document.id);\n\n    try {\n      const response = await firstValueFrom(this.onboardingDocumentService.getPreviewUrl(item.document.id));\n      this.previewUrl.set(response.previewUrl);\n      this.previewDocumentId.set(response.documentId);\n    } catch (error) {\n      this.previewError.set(this.toErrorMessage(error));\n    } finally {\n      this.previewLoading.set(false);\n    }\n  }\n\n  closeDocumentPreview(): void {\n    this.previewOpen.set(false);\n    this.previewLoading.set(false);\n    this.previewError.set(null);\n    this.previewUrl.set(null);\n    this.previewTitle.set(null);\n    this.previewSubtitle.set(null);\n    this.previewDocumentId.set(null);\n  }\n\n  private countryCodeLabel(value: string | null | undefined): string {\n    switch ((value ?? '').toUpperCase()) {\n      case 'CN':\n        return 'China';\n      case 'GB':\n        return 'United Kingdom';\n      default:\n        return value || '—';\n    }\n  }\n\n  private primaryName(detail: OnboardingApplicationDetailResponse): string | null | undefined {\n    return detail.applicantType === 'COMPANY' ? detail.organizationName : detail.contactName;\n  }\n\n  private toErrorMessage(error: unknown): string {\n    if (error instanceof Error && error.message) {\n      return error.message;\n    }\n\n    return 'Unable to load the document preview.';\n  }\n}\n"],"names":[],"mappings":";;;;;;;MA+Ka,oBAAoB,CAAA;AACtB,IAAA,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACzB,IAAA,yBAAyB,GAAG,MAAM,CAAC,yBAAyB,CAAC;AACrE,IAAA,YAAY,GAAG,MAAM,CAAC,KAAK,mFAAC;AAC5B,IAAA,WAAW,GAAG,MAAM,CAAC,KAAK,kFAAC;AAC3B,IAAA,cAAc,GAAG,MAAM,CAAC,KAAK,qFAAC;AAC9B,IAAA,YAAY,GAAG,MAAM,CAAgB,IAAI,mFAAC;AAC1C,IAAA,UAAU,GAAG,MAAM,CAAgB,IAAI,iFAAC;AACxC,IAAA,YAAY,GAAG,MAAM,CAAgB,IAAI,mFAAC;AAC1C,IAAA,eAAe,GAAG,MAAM,CAAgB,IAAI,sFAAC;AAC7C,IAAA,iBAAiB,GAAG,MAAM,CAAgB,IAAI,wFAAC;AACvC,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,IAAA,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC;AAEtC,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;QAEnC,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,EAAE;QACX;QAEA,OAAO;AACL,YAAA,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,4BAA4B,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE;AACtF,YAAA,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;AAC/E,YAAA,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,qBAAqB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;SACjE;AACH,IAAA,CAAC,uFAAC;AAEO,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;QAEnC,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,EAAE;QACX;QAEA,OAAO;YACL,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,oBAAoB,GAAG,gBAAgB,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;YAC7G,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,gBAAgB,GAAG,iBAAiB,EAAE,KAAK,EAAE,MAAM,CAAC,WAAW,EAAE;YACpG,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE;YACtD,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE;SACtD;AACH,IAAA,CAAC,mFAAC;AAEO,IAAA,aAAa,GAAG,QAAQ,CAAuB,MAAK;QAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;QAEnC,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,EAAE;QACX;AAEA,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;AACjE,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;YAEnD,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,gBAAA,MAAM,EAAE,IAAI,CAAC,UAAU,IAAI,EAAE;AAC7B,gBAAA,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,IAAI,SAAS;gBACjD,QAAQ;aACT;AACH,QAAA,CAAC,CAAC;QAEF,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;AACvF,QAAA,MAAM,eAAe,GAAG,MAAM,CAAC;AAC5B,aAAA,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC;AACtD,aAAA,GAAG,CAAC,CAAC,QAAQ,MAAM;YAClB,KAAK,EAAE,eAAe,2BAA2B,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA,CAAE;AAC1E,YAAA,MAAM,EAAE,oDAAoD;YAC5D,QAAQ,EAAE,QAAQ,CAAC,gBAAgB;YACnC,QAAQ;AACT,SAAA,CAAC,CAAC;AAEL,QAAA,OAAO,CAAC,GAAG,aAAa,EAAE,GAAG,eAAe,CAAC;AAC/C,IAAA,CAAC,oFAAC;AAEO,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;QAEnC,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,EAAE;QACX;QAEA,OAAO;AACL,YAAA,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,sBAAsB,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,EAAE;AAC5E,YAAA;AACE,gBAAA,KAAK,EAAE,YAAY;AACnB,gBAAA,KAAK,EAAE,MAAM,CAAC,SAAS,KAAK,MAAM,CAAC,OAAO,KAAK,wBAAwB,GAAG,eAAe,GAAG,IAAI,CAAC;AAClG,aAAA;AACD,YAAA,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,aAAa,KAAK,YAAY,GAAG,IAAI,GAAG,KAAK,EAAE;SACnF;AACH,IAAA,CAAC,qFAAC;AAEO,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;QAEnC,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,EAAE;QACX;QAEA,OAAO;YACL,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE;YAC9C,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,CAAC,iBAAiB,EAAE;AAC5D,YAAA,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;YAC1E,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE;SACzD;AACH,IAAA,CAAC,mFAAC;IAEO,YAAY,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,GAAG,SAAS,GAAG,oBAAoB,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAEjG,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AACnC,QAAA,OAAO,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,aAAa,IAAI,MAAM,KAAK,gBAAgB,IAAI,MAAM,KAAK,IAAI;AACzG,IAAA,CAAC,uFAAC;IAEO,WAAW,GAAG,QAAQ,CAAC,MAC9B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,gBAAgB,GAAG,sBAAsB,GAAG,oBAAoB,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAC1F;AAED,IAAA,MAAM,MAAM,GAAA;QACV,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;QAE5C,IAAI,CAAC,SAAS,EAAE;YACd;QACF;QAEA,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,EAAE;YACxC,UAAU,EAAE,IAAI,CAAC,KAAK;AACvB,SAAA,CAAC;IACJ;AAEA,IAAA,MAAM,IAAI,GAAA;QACR,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,EAAE;YACtC,UAAU,EAAE,IAAI,CAAC,KAAK;AACvB,SAAA,CAAC;IACJ;AAEA,IAAA,MAAM,UAAU,GAAA;QACd,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,EAAE;YACxC,UAAU,EAAE,IAAI,CAAC,KAAK;AACvB,SAAA,CAAC;IACJ;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;IAC7B;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;IAC9B;AAEA,IAAA,WAAW,CAAC,UAAkB,EAAA;QAC5B,OAAO,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,iBAAiB,EAAE,KAAK,UAAU;IACzE;IAEA,MAAM,mBAAmB,CAAC,IAAwB,EAAA;AAChD,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB;QACF;AAEA,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;AACjC,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,IAAI,CAAC;QAChE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;AAE5C,QAAA,IAAI;AACF,YAAA,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,yBAAyB,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACrG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;YACxC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;QACjD;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACnD;gBAAU;AACR,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;QAChC;IACF;IAEA,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;AAC3B,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;IAClC;AAEQ,IAAA,gBAAgB,CAAC,KAAgC,EAAA;QACvD,QAAQ,CAAC,KAAK,IAAI,EAAE,EAAE,WAAW,EAAE;AACjC,YAAA,KAAK,IAAI;AACP,gBAAA,OAAO,OAAO;AAChB,YAAA,KAAK,IAAI;AACP,gBAAA,OAAO,gBAAgB;AACzB,YAAA;gBACE,OAAO,KAAK,IAAI,GAAG;;IAEzB;AAEQ,IAAA,WAAW,CAAC,MAA2C,EAAA;AAC7D,QAAA,OAAO,MAAM,CAAC,aAAa,KAAK,SAAS,GAAG,MAAM,CAAC,gBAAgB,GAAG,MAAM,CAAC,WAAW;IAC1F;AAEQ,IAAA,cAAc,CAAC,KAAc,EAAA;QACnC,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE;YAC3C,OAAO,KAAK,CAAC,OAAO;QACtB;AAEA,QAAA,OAAO,sCAAsC;IAC/C;uGAhNW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAxIrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsIT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA/IC,qBAAqB,yGACrB,mBAAmB,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,wBAAwB,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACxB,4BAA4B,mHAC5B,+BAA+B,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,KAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FA6ItB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBArJhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kCAAkC;AAC5C,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE;wBACP,qBAAqB;wBACrB,mBAAmB;wBACnB,wBAAwB;wBACxB,4BAA4B;wBAC5B,+BAA+B;AAChC,qBAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;AACxB,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsIT,EAAA,CAAA;AACF,iBAAA;;;;;"}