{"version":3,"file":"copyleaks-ng-web-report.mjs","sources":["../../../projects/copyleaks-web-report/src/lib/components/core/cr-custom-results/models/cr-custom-results.enums.ts","../../../projects/copyleaks-web-report/src/lib/models/report-matches.models.ts","../../../projects/copyleaks-web-report/src/lib/constants/report-content.constants.ts","../../../projects/copyleaks-web-report/src/lib/enums/copyleaks-web-report.enums.ts","../../../projects/copyleaks-web-report/src/lib/utils/until-destroy.ts","../../../projects/copyleaks-web-report/src/lib/constants/report-exclude.constants.ts","../../../projects/copyleaks-web-report/src/lib/utils/report-match-helpers.ts","../../../projects/copyleaks-web-report/src/lib/constants/report-iframe-styles.constants.ts","../../../projects/copyleaks-web-report/src/lib/utils/one-to-many-iframe-logic.ts","../../../projects/copyleaks-web-report/src/lib/utils/one-to-one-iframe-logic.ts","../../../projects/copyleaks-web-report/src/lib/constants/report-alerts.constants.ts","../../../projects/copyleaks-web-report/src/lib/utils/highlight-helpers.ts","../../../projects/copyleaks-web-report/src/lib/services/report-view.service.ts","../../../projects/copyleaks-web-report/src/lib/services/report-match-highlight.service.ts","../../../projects/copyleaks-web-report/src/lib/components/core/cr-paginator/cr-paginator.component.ts","../../../projects/copyleaks-web-report/src/lib/components/core/cr-paginator/cr-paginator.component.html","../../../projects/copyleaks-web-report/src/lib/components/core/cr-powered-by/cr-powered-by.component.ts","../../../projects/copyleaks-web-report/src/lib/components/core/cr-powered-by/cr-powered-by.component.html","../../../projects/copyleaks-web-report/src/lib/directives/report-match-tooltip/cr-report-match-tooltip-content.component.ts","../../../projects/copyleaks-web-report/src/lib/directives/report-match-tooltip/cr-report-match-tooltip-content.component.html","../../../projects/copyleaks-web-report/src/lib/directives/report-match-tooltip/cr-report-match-tooltip.directive.ts","../../../projects/copyleaks-web-report/src/lib/components/core/cr-text-match/cr-text-match.component.ts","../../../projects/copyleaks-web-report/src/lib/directives/original-text-helper.directive.ts","../../../projects/copyleaks-web-report/src/lib/utils/enums-helpers.ts","../../../projects/copyleaks-web-report/src/lib/utils/report-statistics-helpers.ts","../../../projects/copyleaks-web-report/src/lib/utils/retry-with-delay.ts","../../../projects/copyleaks-web-report/src/lib/constants/report-scan-errors.constants.ts","../../../projects/copyleaks-web-report/src/lib/constants/report-result-tags.constants.ts","../../../projects/copyleaks-web-report/src/lib/services/report-errors.service.ts","../../../projects/copyleaks-web-report/src/lib/services/report-data.service.ts","../../../projects/copyleaks-web-report/src/lib/directives/original-html-helper.directive.ts","../../../projects/copyleaks-web-report/src/lib/services/report-matches.service.ts","../../../projects/copyleaks-web-report/src/lib/directives/source-html-helper.directive.ts","../../../projects/copyleaks-web-report/src/lib/directives/suspect-html-helper.directive.ts","../../../projects/copyleaks-web-report/src/lib/directives/source-text-helper.directive.ts","../../../projects/copyleaks-web-report/src/lib/directives/suspect-text-helper.directive.ts","../../../projects/copyleaks-web-report/src/lib/pipes/decode-uri/decode-uri.pipe.ts","../../../projects/copyleaks-web-report/src/lib/components/containers/report-alerts-container/components/author-alert-card/author-alert-card.component.ts","../../../projects/copyleaks-web-report/src/lib/components/containers/report-alerts-container/components/author-alert-card/author-alert-card.component.html","../../../projects/copyleaks-web-report/src/lib/pipes/file-name/file-name.pipe.ts","../../../projects/copyleaks-web-report/src/lib/components/containers/content-viewer-container/content-viewer-container.component.ts","../../../projects/copyleaks-web-report/src/lib/components/containers/content-viewer-container/content-viewer-container.component.html","../../../projects/copyleaks-web-report/src/lib/services/report-ng-templates.service.ts","../../../projects/copyleaks-web-report/src/lib/components/containers/report-actions-container/report-actions-container.component.ts","../../../projects/copyleaks-web-report/src/lib/components/containers/report-actions-container/report-actions-container.component.html","../../../projects/copyleaks-web-report/src/lib/components/containers/report-alerts-container/components/alert-card/alert-card.component.ts","../../../projects/copyleaks-web-report/src/lib/components/containers/report-alerts-container/components/alert-card/alert-card.component.html","../../../projects/copyleaks-web-report/src/lib/components/containers/report-alerts-container/report-alerts-container.component.ts","../../../projects/copyleaks-web-report/src/lib/components/containers/report-alerts-container/report-alerts-container.component.html","../../../projects/copyleaks-web-report/src/lib/components/containers/report-results-container/components/empty-result-state/empty-result-state.component.ts","../../../projects/copyleaks-web-report/src/lib/components/containers/report-results-container/components/empty-result-state/empty-result-state.component.html","../../../projects/copyleaks-web-report/src/lib/dialogs/filter-result-dailog/models/filter-result-dailog.enum.ts","../../../projects/copyleaks-web-report/src/lib/dialogs/filter-result-dailog/services/filter-result-dailog.service.ts","../../../projects/copyleaks-web-report/src/lib/components/core/cr-spinner/cr-spinner.component.ts","../../../projects/copyleaks-web-report/src/lib/components/core/cr-spinner/cr-spinner.component.html","../../../projects/copyleaks-web-report/src/lib/components/core/cr-button/cr-button.component.ts","../../../projects/copyleaks-web-report/src/lib/components/core/cr-button/cr-button.component.html","../../../projects/copyleaks-web-report/src/lib/dialogs/filter-result-dailog/components/mat-slide-filter-result/mat-slide-filter-result.component.ts","../../../projects/copyleaks-web-report/src/lib/dialogs/filter-result-dailog/components/mat-slide-filter-result/mat-slide-filter-result.component.html","../../../projects/copyleaks-web-report/src/lib/dialogs/filter-result-dailog/components/source-type-filter-result/source-type-filter-result.component.ts","../../../projects/copyleaks-web-report/src/lib/dialogs/filter-result-dailog/components/source-type-filter-result/source-type-filter-result.component.html","../../../projects/copyleaks-web-report/src/lib/dialogs/filter-result-dailog/components/match-type-filter-result/match-type-filter-result.component.ts","../../../projects/copyleaks-web-report/src/lib/dialogs/filter-result-dailog/components/match-type-filter-result/match-type-filter-result.component.html","../../../projects/copyleaks-web-report/src/lib/dialogs/filter-result-dailog/components/general-filter-result/general-filter-result.component.ts","../../../projects/copyleaks-web-report/src/lib/dialogs/filter-result-dailog/components/general-filter-result/general-filter-result.component.html","../../../projects/copyleaks-web-report/src/lib/dialogs/filter-result-dailog/components/included-tags-filter-result/included-tags-filter-result.component.ts","../../../projects/copyleaks-web-report/src/lib/dialogs/filter-result-dailog/components/included-tags-filter-result/included-tags-filter-result.component.html","../../../projects/copyleaks-web-report/src/lib/dialogs/filter-result-dailog/components/meta-filter-result/meta-filter-result.component.ts","../../../projects/copyleaks-web-report/src/lib/dialogs/filter-result-dailog/components/meta-filter-result/meta-filter-result.component.html","../../../projects/copyleaks-web-report/src/lib/dialogs/remove-result-confirmation-dialog/remove-result-confirmation-dialog.component.ts","../../../projects/copyleaks-web-report/src/lib/dialogs/remove-result-confirmation-dialog/remove-result-confirmation-dialog.component.html","../../../projects/copyleaks-web-report/src/lib/components/containers/report-results-item-container/components/percentage-result-item/models/percentage-result-item.enum.ts","../../../projects/copyleaks-web-report/src/lib/pipes/similarity-pipe/similarity.pipe.ts","../../../projects/copyleaks-web-report/src/lib/directives/report-score-tooltip/cr-report-score-tooltip-content.component.ts","../../../projects/copyleaks-web-report/src/lib/directives/report-score-tooltip/cr-report-score-tooltip-content.component.html","../../../projects/copyleaks-web-report/src/lib/directives/report-score-tooltip/report-score-tooltip.directive.ts","../../../projects/copyleaks-web-report/src/lib/components/containers/report-results-item-container/components/percentage-result-item/percentage-result-item.component.ts","../../../projects/copyleaks-web-report/src/lib/components/containers/report-results-item-container/components/percentage-result-item/percentage-result-item.component.html","../../../projects/copyleaks-web-report/src/lib/pipes/remove-protocol/remove-protocol.pipe.ts","../../../projects/copyleaks-web-report/src/lib/components/containers/report-results-item-container/components/report-results-item/report-results-item.component.ts","../../../projects/copyleaks-web-report/src/lib/components/containers/report-results-item-container/components/report-results-item/report-results-item.component.html","../../../projects/copyleaks-web-report/src/lib/dialogs/filter-result-dailog/components/excluded-results-dailog/excluded-results-dailog.component.ts","../../../projects/copyleaks-web-report/src/lib/dialogs/filter-result-dailog/components/excluded-results-dailog/excluded-results-dailog.component.html","../../../projects/copyleaks-web-report/src/lib/dialogs/filter-result-dailog/components/excluded-domains-input/excluded-domains-input.component.ts","../../../projects/copyleaks-web-report/src/lib/dialogs/filter-result-dailog/components/excluded-domains-input/excluded-domains-input.component.html","../../../projects/copyleaks-web-report/src/lib/dialogs/filter-result-dailog/filter-result-dailog.component.ts","../../../projects/copyleaks-web-report/src/lib/dialogs/filter-result-dailog/filter-result-dailog.component.html","../../../projects/copyleaks-web-report/src/lib/components/containers/report-results-container/components/results-actions/results-actions.component.ts","../../../projects/copyleaks-web-report/src/lib/components/containers/report-results-container/components/results-actions/results-actions.component.html","../../../projects/copyleaks-web-report/src/lib/components/containers/report-results-item-container/components/models/report-result-item.enum.ts","../../../projects/copyleaks-web-report/src/lib/components/core/cr-categories-analysis-panel/cr-categories-analysis-panel.component.ts","../../../projects/copyleaks-web-report/src/lib/components/core/cr-categories-analysis-panel/cr-categories-analysis-panel.component.html","../../../projects/copyleaks-web-report/src/lib/components/core/cr-real-time-result-section-animation/cr-real-time-result-section-animation.component.ts","../../../projects/copyleaks-web-report/src/lib/components/core/cr-real-time-result-section-animation/cr-real-time-result-section-animation.component.html","../../../projects/copyleaks-web-report/src/lib/components/containers/report-results-container/report-results-container.component.ts","../../../projects/copyleaks-web-report/src/lib/components/containers/report-results-container/report-results-container.component.html","../../../projects/copyleaks-web-report/src/lib/components/containers/report-results-item-container/components/report-expand-result-item/report-expand-result-item.component.ts","../../../projects/copyleaks-web-report/src/lib/components/containers/report-results-item-container/components/report-expand-result-item/report-expand-result-item.component.html","../../../projects/copyleaks-web-report/src/lib/components/core/cr-result-disclaimer/cr-result-disclaimer.component.ts","../../../projects/copyleaks-web-report/src/lib/components/core/cr-result-disclaimer/cr-result-disclaimer.component.html","../../../projects/copyleaks-web-report/src/lib/components/containers/report-results-item-container/report-results-item-container.component.ts","../../../projects/copyleaks-web-report/src/lib/components/containers/report-results-item-container/report-results-item-container.component.html","../../../projects/copyleaks-web-report/src/lib/components/containers/report-tabs-container/report-tabs-container.component.ts","../../../projects/copyleaks-web-report/src/lib/components/containers/report-tabs-container/report-tabs-container.component.html","../../../projects/copyleaks-web-report/src/lib/components/core/cr-spinner/cr-spinner.module.ts","../../../projects/copyleaks-web-report/src/lib/components/core/cr-button/cr-button.module.ts","../../../projects/copyleaks-web-report/src/lib/components/core/cr-custom-empty-results/cr-custom-empty-results.component.ts","../../../projects/copyleaks-web-report/src/lib/components/core/cr-custom-empty-results/cr-custom-empty-results.component.html","../../../projects/copyleaks-web-report/src/lib/components/core/cr-custom-results/components/cr-custom-results-box-content/cr-custom-results-box-content.component.ts","../../../projects/copyleaks-web-report/src/lib/components/core/cr-custom-results/components/cr-custom-results-box-content/cr-custom-results-box-content.component.html","../../../projects/copyleaks-web-report/src/lib/components/core/cr-custom-results/cr-custom-results.component.ts","../../../projects/copyleaks-web-report/src/lib/components/core/cr-custom-results/cr-custom-results.component.html","../../../projects/copyleaks-web-report/src/lib/components/core/cr-custom-tabs/components/cr-custom-tab-item/cr-custom-tab-item.component.ts","../../../projects/copyleaks-web-report/src/lib/components/core/cr-custom-tabs/components/cr-custom-tab-item/cr-custom-tab-item.component.html","../../../projects/copyleaks-web-report/src/lib/components/core/cr-custom-tabs/cr-custom-tabs.component.ts","../../../projects/copyleaks-web-report/src/lib/components/core/cr-custom-tabs/cr-custom-tabs.component.html","../../../projects/copyleaks-web-report/src/lib/components/core/cr-paginator/cr-paginator.module.ts","../../../projects/copyleaks-web-report/src/lib/components/core/cr-powered-by/cr-powered-by.module.ts","../../../projects/copyleaks-web-report/src/lib/components/core/cr-report-actions/cr-actions.component.ts","../../../projects/copyleaks-web-report/src/lib/components/core/cr-report-actions/cr-actions.component.html","../../../projects/copyleaks-web-report/src/lib/components/layouts/base/report-layout-base.component.ts","../../../projects/copyleaks-web-report/src/lib/components/layouts/base/report-layout-one-to-many-base.component.ts","../../../projects/copyleaks-web-report/src/lib/services/report-statistics.service.ts","../../../projects/copyleaks-web-report/src/lib/services/report-realtime-results.service.ts","../../../projects/copyleaks-web-report/src/lib/components/core/cr-correction/cr-correction.component.ts","../../../projects/copyleaks-web-report/src/lib/components/core/cr-correction/cr-correction.component.html","../../../projects/copyleaks-web-report/src/lib/dialogs/filter-corrections-dialog/enums/filter-corrections-dialog.enums.ts","../../../projects/copyleaks-web-report/src/lib/dialogs/filter-corrections-dialog/services/filter-corrections-dialog.service.ts","../../../projects/copyleaks-web-report/src/lib/dialogs/filter-corrections-dialog/filter-corrections-dialog.component.ts","../../../projects/copyleaks-web-report/src/lib/dialogs/filter-corrections-dialog/filter-corrections-dialog.component.html","../../../projects/copyleaks-web-report/src/lib/components/core/cr-corrections-actions/cr-corrections-actions.component.ts","../../../projects/copyleaks-web-report/src/lib/components/core/cr-corrections-actions/cr-corrections-actions.component.html","../../../projects/copyleaks-web-report/src/lib/components/containers/report-corrections-container/report-corrections-container.component.ts","../../../projects/copyleaks-web-report/src/lib/components/containers/report-corrections-container/report-corrections-container.component.html","../../../projects/copyleaks-web-report/src/lib/pipes/seconds-to-time/seconds-to-time.pipe.ts","../../../projects/copyleaks-web-report/src/lib/components/core/cr-readability-score/cr-readability-score.component.ts","../../../projects/copyleaks-web-report/src/lib/components/core/cr-readability-score/cr-readability-score.component.html","../../../projects/copyleaks-web-report/src/lib/components/core/cr-assessment-tool-tab-score-panel/cr-assessment-tool-tab-score-panel.component.ts","../../../projects/copyleaks-web-report/src/lib/components/core/cr-assessment-tool-tab-score-panel/cr-assessment-tool-tab-score-panel.component.html","../../../projects/copyleaks-web-report/src/lib/components/containers/content-ai-container/components/ai-percentage/ai-percentage.component.ts","../../../projects/copyleaks-web-report/src/lib/components/containers/content-ai-container/components/ai-percentage/ai-percentage.component.html","../../../projects/copyleaks-web-report/src/lib/directives/cr-ai-score-tooltip-content/cr-ai-score-tooltip-content.component.ts","../../../projects/copyleaks-web-report/src/lib/directives/cr-ai-score-tooltip-content/cr-ai-score-tooltip-content.component.html","../../../projects/copyleaks-web-report/src/lib/directives/cr-ai-score-tooltip-content/cr-ai-score-tooltip-content.directive.ts","../../../projects/copyleaks-web-report/src/lib/components/core/cr-ai-source-match-entry/cr-ai-source-match-entry.component.ts","../../../projects/copyleaks-web-report/src/lib/components/core/cr-ai-source-match-entry/cr-ai-source-match-entry.component.html","../../../projects/copyleaks-web-report/src/lib/components/core/cr-ai-phrases-entry/cr-ai-phrases-entry.component.ts","../../../projects/copyleaks-web-report/src/lib/components/core/cr-ai-phrases-entry/cr-ai-phrases-entry.component.html","../../../projects/copyleaks-web-report/src/lib/pipes/forma-decimal-number/forma-decimal-number.pipe.ts","../../../projects/copyleaks-web-report/src/lib/components/containers/content-ai-container/components/explainable-ai-result-container/explainable-ai-result-container.component.ts","../../../projects/copyleaks-web-report/src/lib/components/containers/content-ai-container/components/explainable-ai-result-container/explainable-ai-result-container.component.html","../../../projects/copyleaks-web-report/src/lib/services/report-ai-results.service.ts","../../../projects/copyleaks-web-report/src/lib/components/containers/content-ai-container/components/resourcess-container/resources-container.component.ts","../../../projects/copyleaks-web-report/src/lib/components/containers/content-ai-container/components/resourcess-container/resources-container.component.html","../../../projects/copyleaks-web-report/src/lib/components/containers/content-ai-container/content-ai-container.component.ts","../../../projects/copyleaks-web-report/src/lib/components/containers/content-ai-container/content-ai-container.component.html","../../../projects/copyleaks-web-report/src/lib/components/layouts/one-to-many/one-to-many-report-layout-desktop/one-to-many-report-layout-desktop.component.ts","../../../projects/copyleaks-web-report/src/lib/components/layouts/one-to-many/one-to-many-report-layout-desktop/one-to-many-report-layout-desktop.component.html","../../../projects/copyleaks-web-report/src/lib/components/core/cr-ai-phrases-mobile-header/cr-ai-phrases-mobile-header.component.ts","../../../projects/copyleaks-web-report/src/lib/components/core/cr-ai-phrases-mobile-header/cr-ai-phrases-mobile-header.component.html","../../../projects/copyleaks-web-report/src/lib/components/layouts/one-to-many/one-to-many-report-layout-mobile/one-to-many-report-layout-mobile.component.ts","../../../projects/copyleaks-web-report/src/lib/components/layouts/one-to-many/one-to-many-report-layout-mobile/one-to-many-report-layout-mobile.component.html","../../../projects/copyleaks-web-report/src/lib/components/layouts/base/report-layout-one-to-one-base.component.ts","../../../projects/copyleaks-web-report/src/lib/components/layouts/one-to-one/one-to-one-report-layout-desktop/one-to-one-report-layout-desktop.component.ts","../../../projects/copyleaks-web-report/src/lib/components/layouts/one-to-one/one-to-one-report-layout-desktop/one-to-one-report-layout-desktop.component.html","../../../projects/copyleaks-web-report/src/lib/components/layouts/one-to-one/one-to-one-report-layout-mobile/one-to-one-report-layout-mobile.component.ts","../../../projects/copyleaks-web-report/src/lib/components/layouts/one-to-one/one-to-one-report-layout-mobile/one-to-one-report-layout-mobile.component.html","../../../projects/copyleaks-web-report/src/lib/components/layouts/only-ai/only-ai-report-layout-desktop/only-ai-report-layout-desktop.component.ts","../../../projects/copyleaks-web-report/src/lib/components/layouts/only-ai/only-ai-report-layout-desktop/only-ai-report-layout-desktop.component.html","../../../projects/copyleaks-web-report/src/lib/components/layouts/only-ai/only-ai-report-layout-mobile/only-ai-report-layout-mobile.component.ts","../../../projects/copyleaks-web-report/src/lib/components/layouts/only-ai/only-ai-report-layout-mobile/only-ai-report-layout-mobile.component.html","../../../projects/copyleaks-web-report/src/lib/copyleaks-web-report.component.ts","../../../projects/copyleaks-web-report/src/lib/copyleaks-web-report.component.html","../../../projects/copyleaks-web-report/src/lib/pipes/similarity-pipe/similarity-pipe.module.ts","../../../projects/copyleaks-web-report/src/lib/directives/report-score-tooltip/cr-report-score-tooltip-content.module.ts","../../../projects/copyleaks-web-report/src/lib/pipes/decode-uri/decode-uri.module.ts","../../../projects/copyleaks-web-report/src/lib/pipes/seconds-to-time/seconds-to-time.module.ts","../../../projects/copyleaks-web-report/src/lib/directives/report-match-tooltip/cr-report-match-tooltip-content.module.ts","../../../projects/copyleaks-web-report/src/lib/components/core/cr-banner-section/cr-banner-section.component.ts","../../../projects/copyleaks-web-report/src/lib/components/core/cr-banner-section/cr-banner-section.component.html","../../../projects/copyleaks-web-report/src/lib/components/core/cr-ai-disclaimer/cr-ai-disclaimer.component.ts","../../../projects/copyleaks-web-report/src/lib/components/core/cr-ai-disclaimer/cr-ai-disclaimer.component.html","../../../projects/copyleaks-web-report/src/lib/pipes/file-name/file-name.module.ts","../../../projects/copyleaks-web-report/src/lib/directives/cr-ai-score-tooltip-content/cr-ai-score-tooltip-content.module.ts","../../../projects/copyleaks-web-report/src/lib/pipes/forma-decimal-number/forma-decimal-number.module.ts","../../../projects/copyleaks-web-report/src/lib/pipes/remove-protocol/remove-protocol.module.ts","../../../projects/copyleaks-web-report/src/lib/components/core/cr-ai-logic-banner/cr-ai-logic-banner.component.ts","../../../projects/copyleaks-web-report/src/lib/components/core/cr-ai-logic-banner/cr-ai-logic-banner.component.html","../../../projects/copyleaks-web-report/src/lib/components/core/cr-ai-source-match-upgrade/cr-ai-source-match-upgrade.component.ts","../../../projects/copyleaks-web-report/src/lib/components/core/cr-ai-source-match-upgrade/cr-ai-source-match-upgrade.component.html","../../../projects/copyleaks-web-report/src/lib/copyleaks-web-report.module.ts","../../../projects/copyleaks-web-report/src/lib/models/report-data.models.ts","../../../projects/copyleaks-web-report/src/public-api.ts","../../../projects/copyleaks-web-report/src/copyleaks-ng-web-report.ts"],"sourcesContent":["export enum ECustomResultsReportView {\n\tPartial = 0,\n\tFull = 1,\n}\n","import { CrTextMatchComponent } from '../components/core/cr-text-match/cr-text-match.component';\nimport { EMatchClassification, EWritingFeedbackCategories } from '../enums/copyleaks-web-report.enums';\n\nimport { EExcludeReason } from '../enums/copyleaks-web-report.enums';\nimport { IResultDetailResponse } from './report-data.models';\n\n/**\n * Represents a `ScanResult` and its `id`\n */\nexport interface ResultDetailItem {\n\tid: string;\n\tresult?: IResultDetailResponse;\n}\n\n/** Simple range type */\nexport interface Range {\n\t/** The start of the range */\n\tstart: number;\n\t/** The end of the range */\n\tend: number;\n}\n\n/**\n * Represents a suspected part of a scanned document content either **text** or **html**\n * @extends Range\n */\nexport interface Match extends Range {\n\t/** The suspicion type associated with this suspected match */\n\ttype: MatchType;\n\t/** The scan ids that are associated with this suspected match */\n\tids?: string[];\n\t/** associated group id - relevant to **html** content */\n\tgid?: number;\n\t/** associated exclude reason - relevant to **excluded** match type */\n\treason?: EExcludeReason;\n\t/** associated writing feedback type - relevant to **WritingFeedback** match type */\n\twritingFeedbackType?: EWritingFeedbackCategories;\n\t/** The original text that was scanned */\n\twrongText?: string;\n\t/** The corrected text */\n\tcorrectionText?: string;\n\t/** The proportion type of explain ai */\n\tproportionType?: EProportionType;\n}\n\n/**\n * Enum of possible kinds of suspicion a match could have\n */\nexport enum MatchType {\n\texcluded = -1,\n\tidentical = 0,\n\tminorChanges = 1,\n\trelatedMeaning = 2,\n\twritingFeedback = 3,\n\taiText = 4,\n\taiExplain = 6,\n\tnone = 5,\n\n\t// custom\n\tsuspectedCharacterReplacement = 100,\n}\n\n/**\n * Enum of possible kinds of an endpoint could have\n */\nexport enum EndpointKind {\n\tstart,\n\tend,\n}\n\n/**\n * Represents a the actual string `content` that a `match` is representing\n */\nexport interface SlicedMatch {\n\tcontent: string;\n\tmatch: Match;\n}\n\n/**\n * Represents a numeric endpoint with an `index` and a `kind`.\n */\nexport interface Endpoint {\n\tindex: number;\n\tkind: EndpointKind;\n}\n/**\n * Represents an endpoint in a `ScannedDocument` content, either **text** or **html**.\n */\nexport interface MatchEndpoint extends Endpoint {\n\ttype: MatchType;\n\tids?: string[];\n\tgid?: number;\n\treason?: EExcludeReason;\n}\n/** possible key options for results origin */\nexport type SubjectResultKey = 'source' | 'suspected';\n/** possible key options for results match type */\nexport type ComparisonKey = 'identical' | 'minorChanges' | 'relatedMeaning';\n/** possible key options for results content */\nexport type ContentKey = 'text' | 'html';\n/** possible key options for results ranges */\nexport type MatchUnit = 'chars' | 'words';\n\nexport interface AIExplainResult {\n\tstart: number[];\n\tend: number[];\n\tlength: number[];\n}\n\nexport interface AIExplainResultItem {\n\tcontent: string;\n\tproportionType: EProportionType;\n\taiCount: number;\n\thumanCount: number;\n\tproportion: number;\n\tisInfinity?: boolean;\n\tstart: number;\n\tend: number;\n}\n\nexport interface ExplainableAIResults {\n\texplain?: AIExplainPattern;\n\taiScanAlert?: AIScanAlert;\n\tslicedMatch?: SlicedMatch[];\n\tsourceText: string;\n}\n\nexport interface AIScanResult {\n\tresults: AIScanResultItem[];\n\tsummary: AIScanResultSummary;\n\tscannedDocument: AIScannedDocument;\n\texplain: AIExplainPattern;\n}\n\nexport interface AIScanAlert {\n\ttitle: string;\n\tmessage: string;\n}\n\nexport interface AIExplainPattern {\n\tpatterns: {\n\t\tstatistics: AIPatternStatistics;\n\t\ttext: {\n\t\t\tchars: AIScanResultMatchChar;\n\t\t\twords: AIScanResultMatchChar;\n\t\t};\n\t\thtml: {\n\t\t\tchars: AIScanResultMatchHtml;\n\t\t\twords: AIScanResultMatchHtml;\n\t\t};\n\t};\n}\n\nexport interface AIPatternStatistics {\n\taiCount: number[];\n\thumanCount: number[];\n\tproportion: number[];\n}\n\nexport enum EProportionType {\n\tLow = 'low',\n\tMedium = 'medium',\n\tHigh = 'high',\n}\n\nexport interface AIScannedDocument {\n\tscanId: string;\n\tcreationTime: string;\n}\n\nexport interface AIScanResultSummary {\n\thuman: number;\n\tai: number;\n\tunknown: number;\n\tanother_writer_score: number;\n}\n\nexport interface WritingFeedbackScanResultSummary {\n\toverallTotalIssues: number;\n\toverallScore: number;\n}\n\nexport interface AIScanResultItem {\n\tclassification: EMatchClassification;\n\tprobability: number;\n\tmatches: AIScanResultMatch[];\n}\n\nexport interface AIScanResultMatch {\n\ttext: {\n\t\tchars: AIScanResultMatchChar;\n\t\twords: AIScanResultMatchChar;\n\t};\n\thtml: {\n\t\tchars: AIScanResultMatchHtml;\n\t\twords: AIScanResultMatchHtml;\n\t};\n}\n\nexport interface AIScanResultMatchChar {\n\tstarts: number[];\n\tlengths: number[];\n}\n\nexport interface AIScanResultMatchHtml {\n\tstarts: number[];\n\tlengths: number[];\n\tgroupIds: number[];\n}\n\nexport interface AIMatch extends Match {\n\ttotalWords: number;\n\tclassification: EMatchClassification;\n\tprobability: number;\n}\n\n/**\n * Type definition for allowed report origins.\n *\n * @type\n * - 'original': Scan source in \"one-to-many\" view.\n * - 'source': Scan source in \"one-to-one\" view.\n * - 'suspect': Result view in scan report.\n */\nexport type ReportOrigin = 'original' | 'source' | 'suspect';\n\nexport interface TextMatchHighlightEvent {\n\telem: CrTextMatchComponent | null;\n\torigin: ReportOrigin;\n\tbroadcast: boolean;\n\tmultiSelect?: boolean;\n\tshowResults?: boolean;\n}\n\nexport interface HtmlMatchClickEvent {\n\tmatch: Match | null;\n\tisSource: boolean;\n\tbroadcast: boolean;\n}\n","/** Font size unit for increasing/decreasing font size while in `text` content mode */\nexport const TEXT_FONT_SIZE_UNIT = 0.25;\n\n/** Max font size zoom level */\nexport const MAX_TEXT_ZOOM = 4;\n\n/** Min font size zoom level */\nexport const MIN_TEXT_ZOOM = 0.5;\n","/**\n * Enum for all the copyleaks report view types.\n */\nexport enum EReportMode {\n\t/**\n\t * The normal web reoprt view.\n\t */\n\tWebReport = 'web-report',\n\t/**\n\t * The Assessment tool view.\n\t */\n\tAssessmentTool = 'assessment-tool',\n}\n\n/**\n * Enum for all the copyleaks report layouts types.\n */\nexport enum EReportLayoutType {\n\t/**\n\t * One to one layout/view: when two documents are compared to each other.\n\t */\n\tOneToOne = 'one-to-one',\n\t/**\n\t * One to many layout/view: The default report layout, which shows the document along with the results section.\n\t */\n\tOneToMany = 'one-to-many',\n\t/**\n\t * Only AI layout/view: The layout where there is only AI view (plagiarism is disabled).\n\t */\n\tOnlyAi = 'only-ai',\n\t/**\n\t * Only AI layout/view: The layout where there is only AI view (plagiarism is disabled).\n\t */\n\tWritingFeedback = 'writing-feedback',\n}\n\n/**\n * Enum for all the copyleaks report responsive views types.\n */\nexport enum EResponsiveLayoutType {\n\t/**\n\t * Desktop view.\n\t */\n\tDesktop = 'desktop',\n\t/**\n\t * Tablet view.\n\t */\n\tTablet = 'tablet',\n\t/**\n\t * Mobile view.\n\t */\n\tMobile = 'mobile',\n}\n\nexport enum EReportViewType {\n\tAIView = 'AIView',\n\tPlagiarismView = 'PlagiarismView',\n\tCustomTabView = 'CustomTabView',\n\tWritingFeedbackTabView = 'WritingFeedbackTabView',\n}\n\nexport enum EReportScoreTooltipPosition {\n\tABOVE = 'above',\n\tBELOW = 'below',\n\tLEFT = 'left',\n\tRIGHT = 'right',\n\tDEFAULT = 'above',\n}\n\nexport enum EReportScoreTooltipView {\n\tTooltip = 'tooltip',\n\tInline = 'inline',\n}\n\n/**\n * Enum representing reasons for exclusion\n */\nexport enum EExcludeReason {\n\tQuotation = 1,\n\tReference = 2,\n\tHeader = 3,\n\tFooter = 4,\n\tHtmlTemplate = 5,\n\tTableOfContent = 6,\n\tCodeComments = 7,\n\tPartialScan = 8,\n}\n\n/** Enum representing the status of a scan */\nexport enum EScanStatus {\n\tSuccess = 0,\n\tError = 1,\n\tCreditsChecked = 2,\n\tIndexed = 3,\n\tCrawling = 4,\n\tPaying = 5,\n\tRefilling = 6,\n\tScanning = 7,\n\tGenerateReport = 8,\n}\n\nexport enum ECompleteResultNotificationAlertSeverity {\n\tVeryLow = 0,\n\tLow = 1,\n\tMedium = 2,\n\tHigh = 3,\n\tVeryHigh = 4,\n}\n\n/** result preview types  */\nexport enum EResultPreviewType {\n\tBatch,\n\tRepositroy,\n\tInternet,\n\tDatabase,\n\n\t// CUSTOM\n\tAISourceMatch,\n\tAISourceMatchUpgrade,\n}\n\n/** Enum representing the access of a result */\nexport enum ResultAccess {\n\tfull,\n\tlocked,\n}\n\nexport enum EMatchClassification {\n\tUnknown = 0,\n\tHuman = 1,\n\tAI = 2,\n\tSameWriter = 3,\n\tAnotherWriter = 4,\n}\n\nexport enum EWritingFeedbackTypes {\n\tGeneral,\n\tGrammar,\n\tWordChoice,\n\tMechanics,\n\tSentenceStructure,\n\tMismatchInGenderBetweenAdjectives,\n\tIncorrectNumberAgreementBetweenArticles,\n\tIncorrectNumberAgreementBetweenNouns,\n}\n\nexport enum EWritingFeedbackCategories {\n\tGeneral = 1,\n\n\t// Grammar\n\tSubjectVerbDisagreement,\n\tNounForm,\n\tVerbForm,\n\tArticle,\n\tPreposition,\n\tPronoun,\n\tPartOfSpeech,\n\tConjunction,\n\n\t// Word Choice\n\tMisusedWord,\n\tHomophone,\n\n\t// Mechanics\n\tCapitalization,\n\tHyphen,\n\tPunctuation,\n\tComma,\n\tApostrophe,\n\tSpace,\n\tSpelling,\n\n\t// Sentence Structure\n\tFusedSentence,\n\tCommaSplice,\n\tSentenceFragments,\n\tIneffectiveConstruction,\n\tExtraWords,\n\tMissingWords,\n\n\t// Mismatch in gender between adjectives\n\tAdjectiveGenderAgreement,\n\tAdjectiveNumberAgreement,\n\n\t// Incorrect number agreement between articles\n\tArticleGenderAgreement,\n\tArticleNumberAgreement,\n\n\t// Incorrect number agreement between nouns\n\tNounGenderAgreement,\n\tSubjunctiveMood,\n\tCompoundWordError,\n\tMoodInconsistency,\n\tAccentError,\n\n\t// Grammar\n\tHomoglyphError,\n}\n\nexport enum EReadabilityLevel {\n\tFifthGrader = 1,\n\tSixthGrader,\n\tSeventhGrader,\n\tEighthNinthGrader,\n\tTenthTwelfthGrader,\n\tCollegeStudent,\n\tCollegeGraduate,\n\tProfessional,\n}\n\n/**\n * Enum representing the platform that is using the report component\n */\nexport enum EPlatformType {\n\tAPP = 0,\n\tLMS = 1,\n}\n","import { MonoTypeOperatorFunction, Observable } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n/** create a symbol identify the observable I add to\n * the component so it doesn't conflict with anything.\n * I need this so I'm able to add the desired behaviour to the component.\n */\nexport const destroy$ = Symbol('destroy$');\n\n/**\n * decorate `component`'s ngOnDestroy method and complete it before destroy\n * @internal\n */\nexport const addDestroyObservableToComponent = (component: any) => {\n\tcomponent[destroy$] = new Observable<void>(observer => {\n\t\t// keep track of the original destroy function,\n\t\t// the user might do something in there\n\t\tconst orignalDestroy = component.ngOnDestroy;\n\t\tif (orignalDestroy == null) {\n\t\t\t// Angular does not support dynamic added destroy methods\n\t\t\t// so make sure there is one.\n\t\t\tthrow new Error('untilDestroy operator needs the component to have an ngOnDestroy method');\n\t\t}\n\t\t// replace the ngOndestroy\n\t\tcomponent.ngOnDestroy = () => {\n\t\t\t// fire off the destroy observable\n\t\t\tobserver.next();\n\t\t\t// complete the observable\n\t\t\tobserver.complete();\n\t\t\t// and at last, call the original destroy\n\t\t\torignalDestroy.call(component);\n\t\t};\n\t\t// return cleanup function.\n\t\treturn (_: any) => (component[destroy$] = undefined);\n\t});\n};\n\n/**\n * An operator that takes until destroy it takes a components this a parameter\n * returns a pipeable RxJS operator.\n */\nexport const untilDestroy = <T>(component: any): MonoTypeOperatorFunction<T> => {\n\tif (component[destroy$] === undefined) {\n\t\t// only hookup each component once.\n\t\taddDestroyObservableToComponent(component);\n\t}\n\t// pipe in the takeUntil destroy$ and return the source unaltered\n\treturn takeUntil<T>(component[destroy$]);\n};\n","/** User messages for text exclusion cases */\n/// <reference types=\"@angular/localize\" />\n\nexport const EXCLUDE_MESSAGE: { [key: string]: string } = {\n\t1: $localize`Omitted: Quotation`,\n\t2: $localize`Omitted: Reference`,\n\t3: $localize`Omitted: Header`,\n\t4: $localize`Omitted: Footer`,\n\t5: $localize`Omitted: HTML template`,\n\t6: $localize`Omitted: Table of content`,\n\t7: $localize`Omitted: Source code comment`,\n\t0: $localize`Hidden Sensitive Data`,\n\t8: $localize`This text was not scanned because there were not enough credits. Please upgrade your plan in order to scan the entire document.`,\n\t9: $localize`Omitted: Citation`,\n\t10: $localize`Omitted: Title`,\n\t11: $localize`Omitted: Matches exclusion template`,\n};\n","import {\n\tAIMatch,\n\tAIScanResult,\n\tAIScanResultMatch,\n\tComparisonKey,\n\tContentKey,\n\tEndpointKind,\n\tEProportionType,\n\tMatch,\n\tMatchEndpoint,\n\tMatchType,\n\tResultDetailItem,\n\tSlicedMatch,\n\tSubjectResultKey,\n} from '../models/report-matches.models';\nimport {\n\tComparison,\n\tICompleteResultNotificationAlert,\n\tIScanSource,\n\tIWritingFeedbackScanScource,\n} from '../models/report-data.models';\n\nimport { ICopyleaksReportOptions } from '../models/report-options.models';\nimport { EExcludeReason, EMatchClassification } from '../enums/copyleaks-web-report.enums';\nimport { EXCLUDE_MESSAGE } from '../constants/report-exclude.constants';\n\n/** A reduce function to extrace `MatchEndpoint`s */\nconst extractMatchEndpoints = (acc: MatchEndpoint[], curr: Match): MatchEndpoint[] => {\n\tacc.push({\n\t\tindex: curr.start,\n\t\ttype: curr.type,\n\t\tkind: EndpointKind.start,\n\t\tids: [...(curr.ids ?? [])],\n\t\tgid: curr.gid,\n\t\treason: curr.reason,\n\t});\n\tacc.push({\n\t\tindex: curr.end,\n\t\ttype: curr.type,\n\t\tkind: EndpointKind.end,\n\t\tids: [...(curr.ids ?? [])],\n\t\tgid: curr.gid,\n\t\treason: curr.reason,\n\t});\n\treturn acc;\n};\n\n/**\n * Takes a list of matches and push the missing gaps as matches with type of MatchType.none\n */\nexport const fillMissingGaps = (intervals: Match[], length: number): Match[] => {\n\tlet start = 0;\n\tconst end = length;\n\tif (intervals.length === 0) {\n\t\treturn [{ start, end, type: MatchType.none }];\n\t}\n\tfor (let i = 0; i < intervals.length; i++) {\n\t\tconst current = intervals[i];\n\t\tif (start < current.start) {\n\t\t\tintervals.splice(i, 0, { start, end: current.start, type: MatchType.none });\n\t\t\ti++;\n\t\t}\n\t\tstart = current.end;\n\t}\n\tconst last = intervals[intervals.length - 1];\n\tif (intervals[intervals.length - 1].end < end) {\n\t\tintervals.push({ start: last.end || 0, end, type: MatchType.none });\n\t}\n\treturn intervals;\n};\n\n/**\n * divide a list of `matches` into nests of none distinct ranges\n * @param matches the base `matches` to process\n */\nexport const findNests = (matches: Match[]): Match[][] => {\n\tif (matches.length === 0) {\n\t\treturn [];\n\t}\n\tmatches.sort((a, b) => a.start - b.start || a.end - b.end || a.type - b.type);\n\tconst nests: Match[][] = [[matches[0]]];\n\tlet nestFurthestEnd = matches[0].end;\n\tlet nestFurthestReason = matches[0].reason;\n\n\tfor (const interval of matches.slice(1)) {\n\t\tif (\n\t\t\tinterval.start > nestFurthestEnd ||\n\t\t\t(interval.start === nestFurthestEnd && interval.reason !== nestFurthestReason)\n\t\t) {\n\t\t\tnests.push([interval]);\n\t\t\tnestFurthestEnd = interval.end;\n\t\t} else {\n\t\t\tnests[nests.length - 1].push(interval);\n\t\t\tnestFurthestEnd = Math.max(nestFurthestEnd, interval.end);\n\t\t}\n\t\tnestFurthestReason = interval.reason;\n\t}\n\treturn nests;\n};\n\n/**\n * merge the overlapping ranges (matches) within a list of none distinct ranges\n * preserving the match ids and deciding the match type based on priority\n * @param matches the matches to merge - should not include distinct ranges (gaps)\n */\nconst mergeMatchesInNest = (matches: Match[]): Match[] => {\n\tconst uniqueMatches = matches.slice(1).reduce(\n\t\t(prev: Match[], curr: Match) => {\n\t\t\tconst last = prev[prev.length - 1];\n\t\t\tif (last.start === curr.start && last.end === curr.end) {\n\t\t\t\tlast.type = Math.min(last.type, curr.type);\n\t\t\t\tif (curr.ids?.length != undefined && curr.ids?.length != 0 && last.ids?.indexOf(curr.ids[0]) === -1) {\n\t\t\t\t\tlast.ids.push(curr.ids[0]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tprev.push(curr);\n\t\t\t}\n\t\t\treturn prev;\n\t\t},\n\t\t[matches[0]]\n\t);\n\n\tconst endpoints = uniqueMatches\n\t\t.reduce(extractMatchEndpoints, [])\n\t\t.sort((a, b) => a.index - b.index || b.kind - a.kind);\n\n\tconst subMatches: Match[] = [];\n\tconst idMap: { [key: string]: number } = {};\n\tconst types: number[] = [0, 0, 0, 0, 0, 0, 0];\n\tlet start: number | undefined = undefined;\n\tfor (const { index, type, ids, kind, gid, reason } of endpoints) {\n\t\tif (kind === EndpointKind.start) {\n\t\t\tif (start) {\n\t\t\t\tif (index !== start) {\n\t\t\t\t\tconst participatingIds = Object.entries(idMap)\n\t\t\t\t\t\t.filter(([, value]) => value > 0)\n\t\t\t\t\t\t.map(([key]) => key);\n\t\t\t\t\tsubMatches.push({\n\t\t\t\t\t\tstart,\n\t\t\t\t\t\tend: index,\n\t\t\t\t\t\ttype: types.findIndex(x => x > 0),\n\t\t\t\t\t\tids: participatingIds,\n\t\t\t\t\t\tgid,\n\t\t\t\t\t\treason,\n\t\t\t\t\t\twritingFeedbackType:\n\t\t\t\t\t\t\tuniqueMatches.find(um => um.start === start && um.type === MatchType.writingFeedback)\n\t\t\t\t\t\t\t\t?.writingFeedbackType ?? undefined,\n\t\t\t\t\t\tproportionType: matches[0]?.proportionType,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tids?.forEach(id => (idMap[id] = (idMap[id] || 0) + 1));\n\t\t\ttypes[type]++;\n\t\t\tstart = index;\n\t\t}\n\t\tif (kind === EndpointKind.end) {\n\t\t\tif (index !== start) {\n\t\t\t\tconst participatingIds = Object.entries(idMap)\n\t\t\t\t\t.filter(([, value]) => value > 0)\n\t\t\t\t\t.map(([key]) => key);\n\t\t\t\tsubMatches.push({\n\t\t\t\t\tstart: start ?? 0,\n\t\t\t\t\tend: index,\n\t\t\t\t\ttype: types.findIndex(x => x > 0),\n\t\t\t\t\tids: participatingIds,\n\t\t\t\t\tgid,\n\t\t\t\t\treason,\n\t\t\t\t\twritingFeedbackType:\n\t\t\t\t\t\tuniqueMatches.find(um => um.start === start && um.type === MatchType.writingFeedback)\n\t\t\t\t\t\t\t?.writingFeedbackType ?? undefined,\n\t\t\t\t\tproportionType: matches[0]?.proportionType,\n\t\t\t\t});\n\t\t\t}\n\t\t\tids?.forEach(id => (idMap[id] = (idMap[id] || 0) - 1));\n\t\t\ttypes[type]--;\n\t\t\tstart = Object.entries(idMap).filter(([, value]) => value > 0).length === 0 ? undefined : index;\n\t\t}\n\t}\n\n\tconst result: Match[] = subMatches.slice(1).reduce(\n\t\t(prev: Match[], curr: Match) => {\n\t\t\tconst last = prev[prev.length - 1];\n\n\t\t\tif (\n\t\t\t\tlast.type != MatchType.writingFeedback &&\n\t\t\t\tlast.type === curr.type &&\n\t\t\t\tcurr.ids?.sort().join(',') === last.ids?.sort().join(',')\n\t\t\t) {\n\t\t\t\tlast.end = curr.end;\n\t\t\t} else {\n\t\t\t\tprev.push(curr);\n\t\t\t}\n\t\t\treturn prev;\n\t\t},\n\t\t[subMatches[0]]\n\t);\n\treturn result;\n};\n\n/**\n * merge a list of matches , removing overlaps while preserving the match attributes\n * @param matches the list of matches\n */\nexport const mergeMatches = (matches: Match[]): Match[] => {\n\tconst nests = findNests(matches);\n\tconst merged = nests.reduce((prev: Match[], nest: Match[]) => {\n\t\tif (nest[0].start == nest[0].end) {\n\t\t\treturn prev;\n\t\t} else {\n\t\t\tconst joined = mergeMatchesInNest(nest);\n\t\t\treturn prev.concat(joined);\n\t\t}\n\t}, []);\n\treturn merged;\n};\n\n/**\n * split `content` according to the given `matches` the result should contain a list of matches\n * for every page according to `pages`\n * @param content a string representing scan **text** or **html**\n * @param pages an array where every element is a start position of a page\n * @param matches `matches` containing the data to slice the `content`\n */\nexport const paginateMatches = (content: string, pages: number[], matches: Match[]): SlicedMatch[][] => {\n\tconst result: SlicedMatch[][] = [[]];\n\tlet page = 0;\n\tfor (let match of matches) {\n\t\tif (match.start >= pages[page + 1]) {\n\t\t\tpage++;\n\t\t\tresult[page] = [];\n\t\t}\n\t\tif (match.end < pages[page + 1]) {\n\t\t\tresult[page].push({ content: content.slice(match.start, match.end), match });\n\t\t} else {\n\t\t\twhile (match.end > pages[page + 1]) {\n\t\t\t\tconst complement = { ...match, start: pages[page + 1] };\n\t\t\t\tmatch.end = pages[page + 1] - 1;\n\t\t\t\tresult[page].push({ content: content.slice(match.start, match.end), match });\n\t\t\t\tmatch = complement;\n\t\t\t\tpage++;\n\t\t\t\tresult[page] = [];\n\t\t\t}\n\t\t\tresult[page].push({ content: content.slice(match.start, match.end), match });\n\t\t}\n\t}\n\treturn result;\n};\n\n/**\n * Higher order function that returns a function that extracts Match Intervals from a Result\n * @param comparison name of the comparison type to extract ( identical | minorChanges | relatedMeaning)\n * @param content name of the content to extract from ( text | html )\n * @param subject name of the subject to extract from ( source | suspected)\n */\nconst extractMatches =\n\t(comparison: ComparisonKey, content: ContentKey, subject: SubjectResultKey) => (item: ResultDetailItem) => {\n\t\tconst { result, id } = item;\n\t\tif (!result || !result[content] || !result[content].comparison) {\n\t\t\treturn [];\n\t\t}\n\t\tconst gids = result[content].comparison[comparison].groupId || [];\n\t\tconst { starts, lengths } = result[content].comparison[comparison][subject].chars;\n\t\treturn starts.map(\n\t\t\t(start, i): Match => ({\n\t\t\t\tstart,\n\t\t\t\tend: start + lengths[i],\n\t\t\t\ttype: MatchType[comparison],\n\t\t\t\tids: [id],\n\t\t\t\tgid: gids[i],\n\t\t\t})\n\t\t);\n\t};\n\n/**\n * Higher order function that returns a function that extracts Excluded intervals from the source document\n * @param content name of the content to extract from (text | html)\n */\nconst extractExcluded = (content: ContentKey) => (source: IScanSource) => {\n\tif (!source?.[content]?.exclude) {\n\t\treturn [];\n\t}\n\tconst { starts, lengths, groupIds, reasons } = source[content]?.exclude;\n\treturn starts.map(\n\t\t(start, i): Match => ({\n\t\t\tstart,\n\t\t\tend: start + lengths[i],\n\t\t\ttype: MatchType.excluded,\n\t\t\treason: reasons[i],\n\t\t\tids: [],\n\t\t\tgid: groupIds ? groupIds[i] : undefined,\n\t\t})\n\t);\n};\n\n/** A function to extract `identical` matches from the `text` of a `source` document */\nexport const sourceTextIdentical = extractMatches('identical', 'text', 'source');\n\n/** A function to extract `relatedMeaning` matches from the `text` of a `source` document */\nexport const sourceTextRelatedMeaning = extractMatches('relatedMeaning', 'text', 'source');\n\n/** A function to extract `minorChanges` matches from the `text` of a `source` document */\nexport const sourceTextMinorChanges = extractMatches('minorChanges', 'text', 'source');\n\n/** A function to extract `identical` matches from the `html` of a `source` document */\nexport const sourceHtmlIdentical = extractMatches('identical', 'html', 'source');\n\n/** A function to extract `relatedMeaning` matches from the `html` of a `source` document */\nexport const sourceHtmlRelatedMeaning = extractMatches('relatedMeaning', 'html', 'source');\n\n/** A function to extract `minorChanges` matches from the `html` of a `source` document */\nexport const sourceHtmlMinorChanges = extractMatches('minorChanges', 'html', 'source');\n\n/** A function to extract `identical` matches from the `text` of a `suspect` document */\nexport const suspectTextIdentical = extractMatches('identical', 'text', 'suspected');\n\n/** A function to extract `relatedMeaning` matches from the `text` of a `suspect` document */\nexport const suspectTextRelatedMeaning = extractMatches('relatedMeaning', 'text', 'suspected');\n\n/** A function to extract `minorChanges` matches from the `text` of a `suspect` document */\nexport const suspectTextMinorChanges = extractMatches('minorChanges', 'text', 'suspected');\n\n/** A function to extract `identical` matches from the `html` of a `suspect` document */\nexport const suspectHtmlIdentical = extractMatches('identical', 'html', 'suspected');\n\n/** A function to extract `relatedMeaning` matches from the `html` of a `suspect` document */\nexport const suspectHtmlRelatedMeaning = extractMatches('relatedMeaning', 'html', 'suspected');\n\n/** A function to extract `minorChanges` matches from the `html` of a `suspect` document */\nexport const suspectHtmlMinorChanges = extractMatches('minorChanges', 'html', 'suspected');\n\n/** A function to extract `excluded` matches from the `text` of a `source` document */\nexport const sourceTextExcluded = extractExcluded('text');\n\n/** A function to extract `excluded` matches from the `html` of a `source` document */\nexport const sourceHtmlExcluded = extractExcluded('html');\n\n/**\n * Locate the respective match start index for a given index in the given comparison.\n * If `fromSource` is set to true, the initial index is assumed to be from the comparison source\n * and therefore will search in the respective `ComparisonData`. Returns a tuple of two indices\n * where the first number is start index of the respective match, and the second is the start index\n * of the closest match to the initially given index\n * @param index a position on the text/html that covers a match\n * @param comparison comparison relevant to the match type and associated content\n * @param fromSource flag indicating that `index` is coming from the source suspect\n */\nexport const findRespectiveStart = (index: number, comparison: Comparison, fromSource = true): [number, number] => {\n\tconst { source, suspected } = comparison;\n\tconst [from, to] = fromSource ? [source, suspected] : [suspected, source];\n\tconst found = from.chars.starts.findIndex((s, i) => s <= index && index <= s + source.chars.lengths[i]);\n\treturn [to.chars.starts[found], from.chars.starts[found]];\n};\n\nexport const processCorrectionsText = (\n\tcorrections: IWritingFeedbackScanScource,\n\tcontent: ContentKey,\n\tsource: IScanSource\n) => {\n\tif (!corrections || !corrections[content]) return [];\n\n\tconst gids = content === 'html' ? corrections[content].chars.groupIds : [];\n\tconst { starts, lengths, types } = corrections[content].chars;\n\tconst extractedCorrections = starts.map(\n\t\t(start, i): Match => ({\n\t\t\tstart,\n\t\t\tend: start + lengths[i],\n\t\t\ttype: MatchType.writingFeedback,\n\t\t\tgid: gids[i],\n\t\t\twritingFeedbackType: types[i],\n\t\t})\n\t);\n\n\tconst excluded = []; // ! temprorarily ignored the excluded for writing feedback scan\n\tconst grouped = mergeMatches([...extractedCorrections, ...excluded]);\n\tconst filled = fillMissingGaps(grouped, source.text.value.length);\n\treturn paginateMatches(source.text.value, source.text.pages.startPosition, filled);\n};\n\nexport const processCorrectionsHtml = (\n\tcorrections: IWritingFeedbackScanScource,\n\tcontent: ContentKey,\n\tsource: IScanSource\n) => {\n\tif (!corrections || !corrections[content]) return [];\n\tconst gids = content === 'html' ? corrections[content].chars.groupIds : [];\n\tconst { starts, lengths, types } = corrections[content].chars;\n\tconst extractedCorrections = starts.map(\n\t\t(start, i): Match => ({\n\t\t\tstart,\n\t\t\tend: start + lengths[i],\n\t\t\ttype: MatchType.writingFeedback,\n\t\t\tgid: gids[i],\n\t\t\twritingFeedbackType: types[i],\n\t\t\tids: [],\n\t\t})\n\t);\n\tconst excluded = []; // ! temprorarily ignored the excluded for writing feedback scan\n\tconst grouped = mergeMatches([...extractedCorrections, ...excluded]);\n\tconst filled = fillMissingGaps(grouped, source.html?.value?.length);\n\n\treturn filled;\n};\n\n/**\n * This function will process one or more results and generate a list of match intervals that will help\n * highlight the source html with respect to user settings and match type priority\n * @param results one or more result item on which the calculation will be based on\n * @param settings the current user settings\n * @param source the scan source\n * @param text `true` if calculation should base on text comparison, `false` for html\n */\nexport const processSourceText = (\n\tresults: ResultDetailItem | ResultDetailItem[],\n\tsettings: ICopyleaksReportOptions,\n\tsource: IScanSource,\n\ttext: boolean = true\n) => {\n\tconst items = Array.isArray(results) ? results : [results]; // Type guard\n\tconst identical = settings.showIdentical\n\t\t? items.reduce((acc: Match[], res) => acc.concat((text ? sourceTextIdentical : sourceHtmlIdentical)(res)), [])\n\t\t: [];\n\tconst minor = settings.showMinorChanges\n\t\t? items.reduce((acc: Match[], res) => acc.concat((text ? sourceTextMinorChanges : sourceHtmlMinorChanges)(res)), [])\n\t\t: [];\n\tconst related = settings.showRelated\n\t\t? items.reduce(\n\t\t\t\t(acc: Match[], res) => acc.concat((text ? sourceTextRelatedMeaning : sourceHtmlRelatedMeaning)(res)),\n\t\t\t\t[]\n\t\t  )\n\t\t: [];\n\tconst excluded = sourceTextExcluded(source);\n\tconst grouped = mergeMatches([...identical, ...minor, ...related, ...excluded]);\n\tconst filled = fillMissingGaps(grouped, source.text.value.length);\n\treturn paginateMatches(source.text.value, source.text.pages.startPosition, filled);\n};\n\n/**\n * This function will process notifications and generate a list of match intervals that will help\n * highlight the source text.\n * @param source the scan source\n * @param alertToMatch alert to process\n */\nexport const processSuspectedCharacterMatches = (\n\tsource: IScanSource,\n\talertToMatch: ICompleteResultNotificationAlert\n): SlicedMatch[][] => {\n\tconst matches: Match[] = [];\n\tconst data: {\n\t\tstarts: number[];\n\t\tlengths: number[];\n\t} = JSON.parse(alertToMatch.additionalData);\n\tif (data && data.starts && data.lengths) {\n\t\tfor (let i = 0; i < data.starts.length; i++) {\n\t\t\tmatches.push({\n\t\t\t\tstart: data.starts[i],\n\t\t\t\tend: data.starts[i] + data.lengths[i],\n\t\t\t\ttype: MatchType.suspectedCharacterReplacement,\n\t\t\t\tids: [],\n\t\t\t});\n\t\t}\n\t}\n\n\tconst grouped = matches;\n\tconst filled = fillMissingGaps(grouped, source.text.value.length);\n\treturn paginateMatches(source.text.value, source.text.pages.startPosition, filled);\n};\n\n/**\n * This function will process notifications and generate a list of match intervals that will help\n * highlight the source text.\n * @param source the scan source\n * @param alertToMatch alert to process\n */\nexport const processAIInsightsTextMatches = (\n\tsource: IScanSource,\n\talertToMatch: ICompleteResultNotificationAlert,\n\tshowAIPhrases: boolean = false\n): SlicedMatch[][] => {\n\tconst matches: Match[] = [];\n\tlet lastExplainIndex = 0;\n\n\tconst scanResult = JSON.parse(alertToMatch.additionalData) as AIScanResult;\n\tconst explainResult = showAIPhrases ? scanResult?.explain : null;\n\tconst lengthExplain = explainResult?.patterns?.text?.chars?.starts?.length ?? 0;\n\tconst proportionArray = explainResult\n\t\t? updateExplainProportionType(explainResult.patterns.statistics.proportion)\n\t\t: [];\n\n\t// Process each result and match\n\tscanResult?.results?.forEach(result => {\n\t\tresult?.matches?.forEach((match: AIScanResultMatch) => {\n\t\t\t// Map raw matches\n\t\t\tconst mappedMatches =\n\t\t\t\tmatch?.text?.chars?.starts?.map((start, idx) => ({\n\t\t\t\t\tstart,\n\t\t\t\t\tend: start + match.text.chars.lengths[idx],\n\t\t\t\t\ttype: result.classification === EMatchClassification.AI ? MatchType.aiText : MatchType.none,\n\t\t\t\t\tids: [],\n\t\t\t\t\tclassification: result.classification,\n\t\t\t\t\tprobability: result.probability,\n\t\t\t\t\ttotalWords: match.text.words.lengths[idx],\n\t\t\t\t})) ?? [];\n\n\t\t\t// Process each mapped match\n\t\t\tmappedMatches.forEach(mappedMatch => {\n\t\t\t\tif (mappedMatch.type === MatchType.aiText && lastExplainIndex < lengthExplain) {\n\t\t\t\t\tlet startMapped = mappedMatch.start;\n\t\t\t\t\tlet endMapped = mappedMatch.end;\n\n\t\t\t\t\t// Handle AI insights within the match\n\t\t\t\t\twhile (lastExplainIndex < lengthExplain) {\n\t\t\t\t\t\tconst explainStart = explainResult?.patterns?.text?.chars?.starts[lastExplainIndex];\n\t\t\t\t\t\tconst explainEnd = explainStart + (explainResult?.patterns?.text?.chars?.lengths[lastExplainIndex] ?? 0);\n\n\t\t\t\t\t\tif (startMapped > explainEnd) {\n\t\t\t\t\t\t\tlastExplainIndex++;\n\t\t\t\t\t\t\tcontinue; // Skip irrelevant explanations\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (endMapped < explainStart) {\n\t\t\t\t\t\t\tbreak; // No more relevant explanations\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Add match before the insight if necessary\n\t\t\t\t\t\tif (startMapped < explainStart) {\n\t\t\t\t\t\t\tmatches.push(createMatch(mappedMatch, startMapped, explainStart - 1));\n\t\t\t\t\t\t\tstartMapped = explainStart;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Add the AI insight\n\t\t\t\t\t\tmatches.push(createExplainMatch(mappedMatch, explainStart, explainEnd, proportionArray[lastExplainIndex]));\n\t\t\t\t\t\tstartMapped = explainEnd + 1;\n\n\t\t\t\t\t\tlastExplainIndex++;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Add remaining part of the match after all insights\n\t\t\t\t\tif (startMapped < endMapped) {\n\t\t\t\t\t\tmatches.push(createMatch(mappedMatch, startMapped, endMapped));\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tmatches.push(mappedMatch); // Add non-AI matches directly\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t});\n\n\t// Handle excluded regions and gaps\n\tconst excluded = sourceTextExcluded(source);\n\tconst grouped = mergeMatches([...matches, ...excluded]);\n\tconst filled = fillMissingGaps(grouped, source.text.value.length);\n\n\t// Paginate the matches\n\treturn paginateMatches(source.text.value, source.text.pages.startPosition, filled);\n};\n\n/**\n * Creates a generic match segment.\n */\nconst createMatch = (baseMatch: Match, start: number, end: number): Match => ({\n\t...baseMatch,\n\tstart,\n\tend,\n});\n\n/**\n * Creates an AI explain match segment.\n */\nconst createExplainMatch = (baseMatch: Match, start: number, end: number, proportionType: EProportionType): Match => ({\n\t...baseMatch,\n\tstart,\n\tend,\n\ttype: MatchType.aiExplain,\n\tproportionType,\n});\n\n/**\n * This function will process notifications and generate a list of match intervals that will help\n * highlight the source text.\n * @param source the scan source\n * @param alertToMatch alert to process\n */\nexport const processAIInsightsHTMLMatches = (\n\tsource: IScanSource,\n\talertToMatch: ICompleteResultNotificationAlert,\n\tshowAIPhrases: boolean = false\n): Match[] => {\n\tconst matches: Match[] = [];\n\tlet lastExplainIndex: number = 0;\n\tvar scanResult = JSON.parse(alertToMatch.additionalData) as AIScanResult;\n\tconst explainResult = showAIPhrases ? scanResult?.explain ?? false : false;\n\tconst lengthExplain = explainResult ? explainResult?.patterns?.html?.chars?.starts?.length : 0;\n\tconst proportionArray = explainResult\n\t\t? updateExplainProportionType(explainResult?.patterns?.statistics?.proportion)\n\t\t: [];\n\n\tscanResult?.results?.forEach(result => {\n\t\tresult?.matches?.forEach((match: AIScanResultMatch) => {\n\t\t\tconst mappedMatches = match?.html?.chars?.starts?.map(\n\t\t\t\t(start, idx) =>\n\t\t\t\t\t({\n\t\t\t\t\t\tstart,\n\t\t\t\t\t\tend: start + match.html.chars.lengths[idx],\n\t\t\t\t\t\ttype: result.classification == EMatchClassification.AI ? MatchType.aiText : MatchType.none,\n\t\t\t\t\t\tids: [],\n\t\t\t\t\t\tclassification: result.classification,\n\t\t\t\t\t\tprobability: result.probability,\n\t\t\t\t\t\ttotalWords: match.html.words.lengths[idx],\n\t\t\t\t\t\tgid: -1,\n\t\t\t\t\t} as AIMatch)\n\t\t\t);\n\t\t\t//#region add explain to the matches\n\t\t\tmappedMatches?.forEach(match => {\n\t\t\t\tif (match && match.type == MatchType.aiText && lastExplainIndex < lengthExplain) {\n\t\t\t\t\tlet startMappedMatches = match.start;\n\t\t\t\t\tlet endMappedMatches = match.end;\n\t\t\t\t\tfor (let i = lastExplainIndex; i < lengthExplain; i++) {\n\t\t\t\t\t\tconst firstExolain = scanResult?.explain?.patterns?.html?.chars?.starts[i];\n\t\t\t\t\t\tconst endExolain = firstExolain + scanResult.explain?.patterns?.html?.chars?.lengths[i];\n\t\t\t\t\t\tif (startMappedMatches <= firstExolain && endMappedMatches >= endExolain) {\n\t\t\t\t\t\t\tlastExplainIndex = i + 1;\n\t\t\t\t\t\t\tif (startMappedMatches < firstExolain) {\n\t\t\t\t\t\t\t\tconst matchBefore = {\n\t\t\t\t\t\t\t\t\tstart: startMappedMatches,\n\t\t\t\t\t\t\t\t\tend: firstExolain - 1,\n\t\t\t\t\t\t\t\t\ttype: match.type,\n\t\t\t\t\t\t\t\t\tids: [],\n\t\t\t\t\t\t\t\t\tgid: match.gid,\n\t\t\t\t\t\t\t\t\tclassification: match.classification,\n\t\t\t\t\t\t\t\t\tprobability: match.probability,\n\t\t\t\t\t\t\t\t\ttotalWords: match.totalWords,\n\t\t\t\t\t\t\t\t} as AIMatch;\n\t\t\t\t\t\t\t\tmatches.push(matchBefore);\n\t\t\t\t\t\t\t\tstartMappedMatches = firstExolain;\n\t\t\t\t\t\t\t\ti = i - 1;\n\t\t\t\t\t\t\t} else if (startMappedMatches == firstExolain) {\n\t\t\t\t\t\t\t\tconst explainMatch = {\n\t\t\t\t\t\t\t\t\tstart: firstExolain,\n\t\t\t\t\t\t\t\t\tend: endExolain,\n\t\t\t\t\t\t\t\t\ttype: MatchType.aiExplain,\n\t\t\t\t\t\t\t\t\tids: [],\n\t\t\t\t\t\t\t\t\tgid: scanResult?.explain?.patterns?.html?.chars?.groupIds[i],\n\t\t\t\t\t\t\t\t\tclassification: match.classification,\n\t\t\t\t\t\t\t\t\tprobability: match.probability,\n\t\t\t\t\t\t\t\t\ttotalWords: match.totalWords,\n\t\t\t\t\t\t\t\t\tproportionType: proportionArray[scanResult?.explain?.patterns?.html?.chars?.groupIds[i]],\n\t\t\t\t\t\t\t\t} as AIMatch;\n\t\t\t\t\t\t\t\tmatches.push(explainMatch);\n\t\t\t\t\t\t\t\tstartMappedMatches = endExolain + 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (startMappedMatches < endMappedMatches) {\n\t\t\t\t\t\tconst matchAfter = {\n\t\t\t\t\t\t\tstart: startMappedMatches,\n\t\t\t\t\t\t\tend: endMappedMatches,\n\t\t\t\t\t\t\ttype: match.type,\n\t\t\t\t\t\t\tids: [],\n\t\t\t\t\t\t\tclassification: match.classification,\n\t\t\t\t\t\t\tprobability: match.probability,\n\t\t\t\t\t\t\ttotalWords: match.totalWords,\n\t\t\t\t\t\t\tgid: match.gid,\n\t\t\t\t\t\t} as AIMatch;\n\t\t\t\t\t\tmatches.push(matchAfter);\n\t\t\t\t\t}\n\t\t\t\t} else if (match) {\n\t\t\t\t\tmatches.push(match);\n\t\t\t\t}\n\t\t\t});\n\t\t\t//#endregion\n\t\t});\n\t});\n\n\tconst excluded = sourceHtmlExcluded(source);\n\tconst grouped = mergeMatches([...matches, ...excluded]);\n\tconst final = fillMissingGaps(grouped, source.html?.value?.length);\n\treturn final;\n};\n\nexport const updateExplainProportionType = (proportionArray: number[]) => {\n\tlet proportionArrayType: EProportionType[] = [];\n\tif (proportionArray.length == 0) {\n\t\treturn proportionArrayType;\n\t}\n\tconst positiveValues = proportionArray.filter(value => value > 0);\n\tconst min = Math.min(...positiveValues);\n\tconst max = Math.max(...proportionArray);\n\tconst divider = (max - min) / 3;\n\tproportionArray.forEach(value => {\n\t\tif (value == -1) {\n\t\t\tproportionArrayType.push(EProportionType.High);\n\t\t} else if (min <= value && value < divider) {\n\t\t\tproportionArrayType.push(EProportionType.Low);\n\t\t} else if (divider <= value && value < divider * 2) {\n\t\t\tproportionArrayType.push(EProportionType.Medium);\n\t\t} else if (divider * 2 <= value && value <= max) {\n\t\t\tproportionArrayType.push(EProportionType.High);\n\t\t}\n\t});\n\treturn proportionArrayType;\n};\n\n/**\n * This function will process one result and generate a list of match intervals that will help\n * highlight the suspect text with respect to user options and match type priority\n * @param suspect the suspect result item\n * @param options the current user options\n * @param text `true` if calculation should base on text comparison, `false` for html\n */\nexport const processSuspectText = (\n\tsuspect: ResultDetailItem,\n\toptions: ICopyleaksReportOptions,\n\ttext: boolean = true\n): SlicedMatch[][] => {\n\tconst identical = options.showIdentical ? (text ? suspectTextIdentical : suspectHtmlIdentical)(suspect) : [];\n\tconst minor = options.showMinorChanges ? (text ? suspectTextMinorChanges : suspectHtmlMinorChanges)(suspect) : [];\n\tconst related = options.showRelated ? (text ? suspectTextRelatedMeaning : suspectHtmlRelatedMeaning)(suspect) : [];\n\tconst grouped = mergeMatches([...identical, ...minor, ...related]);\n\tconst filled = fillMissingGaps(grouped, suspect?.result?.text?.value?.length ?? 0);\n\tconst final = paginateMatches(\n\t\tsuspect?.result?.text?.value ?? '',\n\t\tsuspect?.result?.text?.pages?.startPosition ?? [],\n\t\tfilled\n\t);\n\treturn final;\n};\n\n/**\n * This function will process one or more results and generate a list of match intervals that will help\n * highlight the source html with respect to user options and match type priority\n * @param results one or more result item on which the calculation will be based on\n * @param options the current user options\n * @param source the scan source\n */\nexport const processSourceHtml = (\n\tresults: ResultDetailItem | ResultDetailItem[],\n\toptions: ICopyleaksReportOptions,\n\tsource: IScanSource\n) => {\n\tif (!source || !source.html) {\n\t\treturn null;\n\t}\n\tconst items = Array.isArray(results) ? results : [results]; // Type guard\n\tconst identical = options.showIdentical\n\t\t? items.reduce((acc: Match[], res) => acc.concat(sourceHtmlIdentical(res)), [])\n\t\t: [];\n\tconst minor = options.showMinorChanges\n\t\t? items.reduce((acc: Match[], res) => acc.concat(sourceHtmlMinorChanges(res)), [])\n\t\t: [];\n\tconst related = options.showRelated\n\t\t? items.reduce((acc: Match[], res) => acc.concat(sourceHtmlRelatedMeaning(res)), [])\n\t\t: [];\n\tconst excluded = sourceHtmlExcluded(source);\n\tconst grouped = mergeMatches([...identical, ...minor, ...related, ...excluded]);\n\tconst final = fillMissingGaps(grouped, source.html?.value?.length);\n\treturn final;\n};\n\n/**\n * This function will process one result and generate a list of match intervals that\n * will help highlight the suspect html with respect to user options and match type priority\n * @param suspect the suspect result item\n * @param options the current user options\n */\nexport const processSuspectHtml = (suspect: ResultDetailItem, options: ICopyleaksReportOptions): Match[] | null => {\n\tif (!suspect || !suspect?.result?.html) {\n\t\treturn null;\n\t}\n\tconst identical = options.showIdentical ? suspectHtmlIdentical(suspect) : [];\n\tconst minor = options.showMinorChanges ? suspectHtmlMinorChanges(suspect) : [];\n\tconst related = options.showRelated ? suspectHtmlRelatedMeaning(suspect) : [];\n\tconst grouped = mergeMatches([...identical, ...minor, ...related]);\n\treturn fillMissingGaps(grouped, suspect.result?.html.value?.length ?? 0);\n};\n\n/**\n * Render list of matches in the iframe's HTML\n * @param matches the matches to render\n */\nexport const getRenderedMatches = (matches: Match[] | null, originalHtml: string): string | null => {\n\tif (!matches || !originalHtml) return originalHtml;\n\n\t// Add the matches to the html and return the updated html\n\n\t//#region old code\n\t// const html = matches.reduceRight((prev: string, curr: Match, i: number) => {\n\t// \tlet slice = originalHtml?.substring(curr.start, curr.end);\n\t// \tswitch (curr.type) {\n\t// \t\tcase MatchType.excluded:\n\t// \t\t\tvar reason = curr.reason != undefined && curr.reason != null ? EXCLUDE_MESSAGE[curr.reason] : null;\n\t// \t\t\tif (curr.reason === EExcludeReason.PartialScan) {\n\t// \t\t\t\tslice = `<span exclude-partial-scan data-type=\"${curr.type}\" data-index=\"${i}\" title=\"${reason}\">${slice}</span>`;\n\t// \t\t\t} else {\n\t// \t\t\t\tif (reason) slice = `<span exclude title=\"${reason}\">${slice}</span>`;\n\t// \t\t\t\telse slice = `<span exclude title=\"UnKnown\">${slice}</span>`;\n\t// \t\t\t}\n\t// \t\t\tbreak;\n\t// \t\tcase MatchType.none:\n\t// \t\t\tbreak;\n\t// \t\tdefault:\n\t// \t\t\tif (curr.type === MatchType.writingFeedback) {\n\t// \t\t\t\tslice = `<span match data-type=\"${curr.type}\" data-index=\"${i}\" data-gid=\"${curr.gid}\" data-correction-text=\"${curr.correctionText}\" data-wrong-text=\"${curr.wrongText}\">${slice}</span>`;\n\t// \t\t\t} else slice = `<span match data-type=\"${curr.type}\" data-index=\"${i}\" data-gid=\"${curr.gid}\">${slice}</span>`;\n\t// \t\t\tbreak;\n\t// \t}\n\t// \treturn slice ? slice?.concat(prev) : '';\n\t// }, '');\n\t//#endregion old code\n\n\tconst stringBuilder: string[] = [];\n\tlet lastIndex = 0;\n\n\tmatches.forEach((curr: Match, i: number) => {\n\t\t// Add the part of the original HTML before the current match\n\t\tif (curr.start > lastIndex) {\n\t\t\tstringBuilder.push(originalHtml?.substring(lastIndex, curr.start));\n\t\t}\n\n\t\tlet slice = originalHtml?.substring(curr.start, curr.end);\n\t\tswitch (curr.type) {\n\t\t\tcase MatchType.excluded:\n\t\t\t\tconst reason = curr.reason != undefined && curr.reason != null ? EXCLUDE_MESSAGE[curr.reason] : null;\n\t\t\t\tif (curr.reason === EExcludeReason.PartialScan) {\n\t\t\t\t\tstringBuilder.push(\n\t\t\t\t\t\t`<span exclude-partial-scan data-type=\"${curr.type}\" data-index=\"${i}\" title=\"${reason}\">${slice}</span>`\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tif (reason) {\n\t\t\t\t\t\tstringBuilder.push(\n\t\t\t\t\t\t\t`<span exclude class=\"copyleaks-custom-tooltip-trigger\" data-tooltip=\"${reason}\">${slice}<div class=\"copyleaks-custom-tooltip\">${reason}</div></span>`\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstringBuilder.push(\n\t\t\t\t\t\t\t`<span exclude class=\"copyleaks-custom-tooltip-trigger\" data-tooltip=\"UnKnown\">${slice}<div class=\"copyleaks-custom-tooltip\">UnKnown</div></span>`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase MatchType.none:\n\t\t\t\tstringBuilder.push(slice);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tif (curr.type === MatchType.writingFeedback) {\n\t\t\t\t\tstringBuilder.push(\n\t\t\t\t\t\t`<span match data-type=\"${curr.type}\" data-index=\"${i}\" data-gid=\"${curr.gid}\" data-correction-text=\"${curr.correctionText}\" data-wrong-text=\"${curr.wrongText}\">${slice}</span>`\n\t\t\t\t\t);\n\t\t\t\t} else if (curr.type === MatchType.aiExplain) {\n\t\t\t\t\tstringBuilder.push(\n\t\t\t\t\t\t`<span match data-type=\"${curr.type}\" data-index=\"${i}\" data-gid=\"${curr.gid}\" data-proportion=\"${curr.proportionType}\">${slice}</span>`\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tstringBuilder.push(\n\t\t\t\t\t\t`<span match data-type=\"${curr.type}\" data-index=\"${i}\" data-gid=\"${curr.gid}\">${slice}</span>`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t\tlastIndex = curr.end;\n\t});\n\n\t// Add the remaining part of the original HTML after the last match\n\tif (lastIndex < originalHtml?.length) {\n\t\tstringBuilder.push(originalHtml?.substring(lastIndex));\n\t}\n\n\tconst html = stringBuilder.join('');\n\n\treturn html;\n};\n","export const COPYLEAKS_REPORT_IFRAME_STYLES: string = `\n@import url('https://p.typekit.net/p.css?s=1&k=ieb7ycr&ht=tk&f=34762.34763.34771.34772&a=120129709&app=typekit&e=css');\n\n@font-face {\n\tfont-family: 'haboro-soft';\n\tsrc: url('https://use.typekit.net/af/ef3c52/00000000000000007735ad5b/30/l?primer=7cdcb44be4a7db8877ffa5c0007b8dd865b3bbc383831fe2ea177f62257a9191&fvd=n2&v=3')\n\t\t\tformat('woff2'),\n\t\turl('https://use.typekit.net/af/ef3c52/00000000000000007735ad5b/30/d?primer=7cdcb44be4a7db8877ffa5c0007b8dd865b3bbc383831fe2ea177f62257a9191&fvd=n2&v=3')\n\t\t\tformat('woff'),\n\t\turl('https://use.typekit.net/af/ef3c52/00000000000000007735ad5b/30/a?primer=7cdcb44be4a7db8877ffa5c0007b8dd865b3bbc383831fe2ea177f62257a9191&fvd=n2&v=3')\n\t\t\tformat('opentype');\n\tfont-display: auto;\n\tfont-style: normal;\n\tfont-weight: 200;\n\tfont-stretch: normal;\n}\n\n@font-face {\n\tfont-family: 'haboro-soft';\n\tsrc: url('https://use.typekit.net/af/521a26/00000000000000007735ad5e/30/l?primer=7cdcb44be4a7db8877ffa5c0007b8dd865b3bbc383831fe2ea177f62257a9191&fvd=i2&v=3')\n\t\t\tformat('woff2'),\n\t\turl('https://use.typekit.net/af/521a26/00000000000000007735ad5e/30/d?primer=7cdcb44be4a7db8877ffa5c0007b8dd865b3bbc383831fe2ea177f62257a9191&fvd=i2&v=3')\n\t\t\tformat('woff'),\n\t\turl('https://use.typekit.net/af/521a26/00000000000000007735ad5e/30/a?primer=7cdcb44be4a7db8877ffa5c0007b8dd865b3bbc383831fe2ea177f62257a9191&fvd=i2&v=3')\n\t\t\tformat('opentype');\n\tfont-display: auto;\n\tfont-style: italic;\n\tfont-weight: 200;\n\tfont-stretch: normal;\n}\n\n@font-face {\n\tfont-family: 'haboro-soft';\n\tsrc: url('https://use.typekit.net/af/c99e0e/00000000000000007735ad79/30/l?primer=7cdcb44be4a7db8877ffa5c0007b8dd865b3bbc383831fe2ea177f62257a9191&fvd=n7&v=3')\n\t\t\tformat('woff2'),\n\t\turl('https://use.typekit.net/af/c99e0e/00000000000000007735ad79/30/d?primer=7cdcb44be4a7db8877ffa5c0007b8dd865b3bbc383831fe2ea177f62257a9191&fvd=n7&v=3')\n\t\t\tformat('woff'),\n\t\turl('https://use.typekit.net/af/c99e0e/00000000000000007735ad79/30/a?primer=7cdcb44be4a7db8877ffa5c0007b8dd865b3bbc383831fe2ea177f62257a9191&fvd=n7&v=3')\n\t\t\tformat('opentype');\n\tfont-display: auto;\n\tfont-style: normal;\n\tfont-weight: 700;\n\tfont-stretch: normal;\n}\n\n@font-face {\n\tfont-family: 'haboro-soft';\n\tsrc: url('https://use.typekit.net/af/90ed13/00000000000000007735ad7b/30/l?primer=7cdcb44be4a7db8877ffa5c0007b8dd865b3bbc383831fe2ea177f62257a9191&fvd=i7&v=3')\n\t\t\tformat('woff2'),\n\t\turl('https://use.typekit.net/af/90ed13/00000000000000007735ad7b/30/d?primer=7cdcb44be4a7db8877ffa5c0007b8dd865b3bbc383831fe2ea177f62257a9191&fvd=i7&v=3')\n\t\t\tformat('woff'),\n\t\turl('https://use.typekit.net/af/90ed13/00000000000000007735ad7b/30/a?primer=7cdcb44be4a7db8877ffa5c0007b8dd865b3bbc383831fe2ea177f62257a9191&fvd=i7&v=3')\n\t\t\tformat('opentype');\n\tfont-display: auto;\n\tfont-style: italic;\n\tfont-weight: 700;\n\tfont-stretch: normal;\n}\n\n@font-face {\n\tfont-family: 'haboro-soft';\n\tsrc: url('https://use.typekit.net/af/203813/00000000000000007735ad69/30/l?subset_id=2&fvd=i5&v=3') format('woff2'),\n\t\turl('https://use.typekit.net/af/203813/00000000000000007735ad69/30/d?subset_id=2&fvd=i5&v=3') format('woff'),\n\t\turl('https://use.typekit.net/af/203813/00000000000000007735ad69/30/a?subset_id=2&fvd=i5&v=3') format('opentype');\n\tfont-display: auto;\n\tfont-style: italic;\n\tfont-weight: 500;\n\tfont-stretch: normal;\n}\n\n@font-face {\n\tfont-family: 'haboro-soft';\n\tsrc: url('https://use.typekit.net/af/afca7d/00000000000000007735ad6c/30/l?primer=7cdcb44be4a7db8877ffa5c0007b8dd865b3bbc383831fe2ea177f62257a9191&fvd=n5&v=3')\n\t\t\tformat('woff2'),\n\t\turl('https://use.typekit.net/af/afca7d/00000000000000007735ad6c/30/d?primer=7cdcb44be4a7db8877ffa5c0007b8dd865b3bbc383831fe2ea177f62257a9191&fvd=n5&v=3')\n\t\t\tformat('woff'),\n\t\turl('https://use.typekit.net/af/afca7d/00000000000000007735ad6c/30/a?primer=7cdcb44be4a7db8877ffa5c0007b8dd865b3bbc383831fe2ea177f62257a9191&fvd=n5&v=3')\n\t\t\tformat('opentype');\n\tfont-display: auto;\n\tfont-style: normal;\n\tfont-weight: 500;\n\tfont-stretch: normal;\n}\n\n.tk-haboro-soft {\n\tfont-family: 'haboro-soft', sans-serif;\n}\n\n::-moz-selection {\n\tbackground: #b4d7fe !important;\n\tborder-radius: 2px !important;\n}\n\n::selection {\n\tbackground: #b4d7fe !important;\n\tborder-radius: 2px !important;\n}\n\nbody,\nhtml {\n\tuser-select: text;\n\t-webkit-user-select: text;\n\t-moz-user-select: text;\n\t-ms-user-select: text;\n}\n\nhtml {\n\tpadding: 4px;\n}\n::-webkit-scrollbar {\n\twidth: 8px;\n\theight: 8px !important;\n}\n::-webkit-scrollbar-track {\n\tborder-radius: 4px;\n\ttransform: matrix(0, 1, -1, 0, 0, 0);\n\tbackground: #ebf3f5;\n\tborder: 1px solid #fbffff;\n}\n::-webkit-scrollbar-thumb {\n\tborder-radius: 4px !important;\n\tbackground: rgba(17, 41, 96, 0.4) !important;\n\tbox-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.27) !important;\n}\n#sidebar.opened + #page-container {\n\tleft: 0px !important;\n}\n#page-container {\n\t.c {\n\t\tpointer-events: none !important;\n\t}\n\t.t {\n\t\tpointer-events: all !important;\n\t}\n}\nspan[exclude] {\n\tposition: relative;\n\tfont-style: normal !important;\n\topacity: 1 !important;\n\tcolor: #0b163e !important;\n\tcursor: pointer;\n\tborder-radius: 2px;\n\tborder-bottom: 2px dashed #3f9af5 !important;\n\tbackground: rgba(63, 154, 245, 0.2) !important;\n}\nspan[exclude-partial-scan] {\n\tposition: relative;\n\tfilter: blur(6px);\n\tcursor: pointer;\n}\nspan[match] {\n\tcursor: pointer;\n\tcolor: #000;\n\tposition: relative;\n\tborder-radius: 2px !important;\n}\nspan[match] a:link {\n\tpointer-events: none;\n}\nspan[ignored] {\n\tfont-style: italic;\n}\nspan[match][data-type='0'] {\n\tbackground-color: #fd7366;\n\ttransition: 0.2s;\n}\nspan[match][data-type='0'].hover {\n\tbackground-color: #00e2a2;\n}\nspan[match][data-type='1'] {\n\tbackground-color: #ffb1b1;\n\ttransition: 0.2s;\n}\nspan[match][data-type='1'].hover {\n\tbackground-color: #00e2a2;\n}\nspan[match][data-type='2'] {\n\tbackground-color: #fed5a9;\n\ttransition: 0.2s;\n}\nspan[match][data-type='2'].hover {\n\tbackground-color: #00e2a2;\n}\nspan[match][data-type='3'] {\n\tbackground-color: #ff9a02;\n\ttransition: 0.2s;\n}\nspan[match][data-type='3'].hover {\n\tbackground-color: #00e2a2;\n}\nspan[match][data-type='6'] {\n\tbackground-color: #d7c5ff;\n\ttransition: 0.2s;\n}\n\nspan[match][data-type='4'] {\n\tbackground-color: #f8eaff;\n\ttransition: 0.2s;\n\tpointer-events: none !important;\n}\n\nspan[match][data-proportion='low'] {\n\tbackground-color: #d7c5ff !important;\n\ttransition: 0.2s;\n}\n\nspan[match][data-proportion='medium'] {\n\tbackground-color: #bca6ff !important;\n\ttransition: 0.2s;\n}\n\nspan[match][data-proportion='high'] {\n\tbackground-color: #a188ff !important;\n\ttransition: 0.2s;\n}\n\nspan[match][data-type='6'].hover {\n\tbackground-color: #00e2a2 !important;\n}\n\nspan[match][on] {\n\tbackground-color: #00e2a2 !important;\n}\n\nspan[match] .tooltip-match-content-container {\n\tmin-width: 120px;\n\tmax-width: 300px !important;\n\tposition: absolute;\n\tz-index: 111111111111;\n\tbottom: 160%;\n\tleft: 50%;\n\ttransition: opacity 0.3s, transform 0.3s;\n\tdisplay: flex;\n\tpadding: 10px 18px;\n\ttransform: translate(-50%, 0);\n\tjustify-content: center;\n\talign-items: center;\n\tborder-radius: 10px;\n\tbackground: #0b163e;\n\tcolor: #fbffff;\n\tflex-direction: row;\n\tgap: 16px;\n\tbox-shadow: 0px 0px 10px 0px rgba(11, 22, 62, 0.12);\n\tborder: none;\n\tbox-sizing: border-box;\n\ttransform-origin: 50% 100%;\n\tz-index: 999999999;\n\tword-spacing: normal !important;\n\tletter-spacing: normal !important;\n\n\tsvg {\n\t\tdisplay: block !important;\n\t\theight: 17px !important;\n\t\twidth: 16px !important;\n\t}\n\n\t.correction-text,\n\t.wrong-text {\n\t\tfont-size: 14px;\n\t\tfont-style: normal;\n\t\tfont-weight: 500;\n\t\tfont-family: haboro-soft, sans-serif !important;\n\t\tdisplay: block;\n\t\tmax-width: 100%;\n\t\twhite-space: nowrap;\n\t\tline-height: normal;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\tmax-width: 100%;\n\t\tword-spacing: normal !important;\n\t\tletter-spacing: normal !important;\n\t}\n\t.wrong-text {\n\t\ttext-decoration: line-through;\n\t\ttext-decoration-color: #d04340;\n\t}\n\t.correction-text {\n\t\tcolor: #ff9a02;\n\t}\n}\n\nspan[exclude] .excluded-reason-tooltip,\nspan[exclude-partial-scan] .excluded-reason-tooltip {\n\tposition: absolute;\n\twidth: 220px;\n\theight: auto;\n\tdisplay: flex;\n\tjustify-content: center;\n\topacity: 1;\n\ttransition: opacity 0.3s, transform 0.3s;\n\tz-index: 111111111111;\n\tbottom: 160%;\n\tleft: 50%;\n\tborder-radius: 4px;\n\tbackground: #112960;\n\tpadding: 8px;\n\tcolor: #fbffff;\n\tfont-family: haboro-soft, sans-serif !important;\n\tfont-size: 14px;\n\tfont-style: normal;\n\tfont-weight: 500;\n\tline-height: normal;\n\tword-spacing: normal !important;\n\tletter-spacing: normal !important;\n\tline-break: normal;\n\twhite-space: normal;\n}\n\nspan.copyleaks-highlight {\n\tbackground-color: #ffdf54;\n\tcursor: pointer;\n\ttransition: 0.2s ease-in-out;\n\tborder-radius: 2px !important;\n\n\t&:hover,\n\t&.hover,\n\t&.selected {\n\t\tbackground-color: #00e2a2;\n\t}\n}\n\nspan[match] .tooltip-match-content-container::after {\n\tcontent: '';\n\tposition: absolute;\n\ttop: 100%;\n\tleft: 50%;\n\tmargin-inline-start: -5px;\n\tborder-width: 7px;\n\tborder-style: solid;\n\tborder-color: #112960 transparent transparent transparent;\n}\n\nspan[match] .tooltip-match-content-container.right-arrow::after {\n\tcontent: '';\n\tposition: absolute;\n\ttop: 50% !important;\n\tleft: 100% !important;\n\tmargin: 0px !important;\n\tmargin-top: -5px !important;\n\tborder-width: 7px;\n\tborder-style: solid;\n\tborder-color: transparent transparent transparent #112960;\n}\n\nspan[match] .tooltip-match-content-container.left-arrow::after {\n\tcontent: '';\n\tposition: absolute;\n\ttop: 50% !important;\n\tright: 100% !important;\n\tleft: auto !important;\n\tmargin: 0px !important;\n\tmargin-top: -5px !important;\n\tborder-width: 7px;\n\tborder-style: solid;\n\tborder-color: transparent #112960 transparent transparent;\n}\n\n.cls-add-annotation-btn {\n\tposition: absolute;\n\tz-index: 999999999;\n\tborder-radius: 56px;\n\tbackground: var(--Colors-Main-Blue, #3f9af5);\n\tbox-shadow: 0px 0px 4px 0px rgba(63, 154, 245, 0.4), 0px 2px 4px 0px rgba(0, 0, 0, 0.25);\n\tpadding: 8px;\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\tbox-sizing: border-box;\n\tcursor: pointer;\n\tcolor: #fbffff;\n\ttransition: 0.4s ease-in-out;\n\n\tsvg {\n\t\twidth: 24px;\n\t\theight: 24px;\n\t\tflex-shrink: 0;\n\t}\n\t&:hover {\n\t\tbackground: #fbffff;\n\n\t\tsvg {\n\t\t\tpath {\n\t\t\t\tcolor: #3f9af5 !important;\n\t\t\t\tfill: #3f9af5 !important;\n\t\t\t}\n\t\t}\n\t}\n}\n\n.copyleaks-custom-tooltip {\n\tposition: absolute !important;\n\tbackground: #616161 !important;\n\tcolor: white !important;\n\tborder-radius: 4px !important;\n\tfont-size: 12px !important;\n\topacity: 0;\n\ttransform: scale(0);\n\ttransform-origin: center top;\n\ttransition: transform 0.15s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.15s cubic-bezier(0.4, 0, 0.2, 1);\n\tpointer-events: none !important;\n\twhite-space: nowrap !important;\n\tmin-width: 120px !important;\n\ttext-align: center !important;\n\tbox-shadow: 0 3px 5px -1px rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.14), 0 1px 18px 0 rgba(0, 0, 0, 0.12) !important;\n\tword-spacing: normal !important;\n\tfont-family: haboro-soft, sans-serif !important;\n\tfont-size: 14px !important;\n\tfont-weight: 500 !important;\n\tcolor: #fbffff !important;\n\tbackground-color: #112960 !important;\n\tborder-radius: 4px !important;\n\tpadding: 8px !important;\n\twhite-space: pre-line !important;\n\tz-index: 999999999 !important;\n\tline-height: normal !important;\n}\n\n.copyleaks-custom-tooltip-trigger:hover .copyleaks-custom-tooltip {\n\topacity: 1;\n\ttransform: scale(1) translateY(8px);\n}\n\n.copyleaks-custom-tooltip {\n\tleft: 50%;\n\tbottom: 170%;\n\ttransform: translateX(-50%);\n}\n\n.copyleaks-custom-tooltip-trigger:hover .copyleaks-custom-tooltip {\n\ttransform: translateX(-50%) scale(calc(1 / var(--iframe-scale, 1))) translateY(8px);\n}\n\n@media screen {\n\t.copyleaks-custom-tooltip {\n\t\ttransform: translateX(-50%) scale(calc(1 / var(--iframe-scale, 1)));\n\t\ttransform-origin: center bottom;\n\t}\n}\n\n`;\n","/* tslint:disable */\n\nimport {\n\tCorrectionSelectEvent,\n\tMatchGroupSelectEvent,\n\tMatchJumpEvent,\n\tMatchSelectEvent,\n\tPostMessageEvent,\n} from '../models/report-iframe-events.models';\n\n/**\n * document ready event handler\n * @param fn the callback to execute when the document is ready\n */\nfunction onDocumentReady(fn: any) {\n\tif (document.readyState === 'complete' || document.readyState === 'interactive') {\n\t\tsetTimeout(fn, 1);\n\t} else {\n\t\tdocument.addEventListener('DOMContentLoaded', fn);\n\t}\n}\n\n/**\n * Callback to execute when the document is ready\n */\nfunction ready() {\n\tlet current: HTMLSpanElement | null;\n\tlet currentMulti: HTMLSpanElement[] = [];\n\tlet matches: HTMLSpanElement[];\n\tlet currentZoom: number = 1;\n\tlet pdfZoom: number = 1;\n\n\t(window as any).addEventListener(\n\t\t'wheel',\n\t\tfunction (event) {\n\t\t\tif (event && event.ctrlKey) {\n\t\t\t\tevent.preventDefault(); // Prevent the default zoom action\n\t\t\t\t// Check if the scroll is up or down & update the zoom property accordingly\n\t\t\t\tif (event.deltaY < 0) zoomIn();\n\t\t\t\telse if (event.deltaY > 0) zoomOut();\n\t\t\t}\n\t\t},\n\t\t{ passive: false }\n\t);\n\n\t(window as any).addEventListener('click', function (event) {\n\t\tif (event.shiftKey) document.body.style.userSelect = 'none';\n\t\telse document.body.style.userSelect = 'auto';\n\t});\n\n\tlet isPdf = document.querySelector('meta[content=\"pdf2htmlEX\"]') !== null;\n\tif (isPdf) pdfZoom = 0.4; // this is the default zoom for pdfs in the pdf2htmlEX format\n\n\t(window as any).addEventListener('message', onMessageFromParent);\n\n\tinitMatchTooltipEventListeners();\n\n\tinitExcludedTextTooltipEventListeners();\n\n\tinit();\n\n\t/**\n\t * Initialization code, will execute before emitting iframe-ready event\n\t */\n\tfunction init() {\n\t\tArray.from(document.links).forEach(x => {\n\t\t\tx.href = 'javascript:void(0)';\n\t\t\tx.title = 'disable link';\n\t\t\tvar dataDestAttr = x.getAttribute('data-dest-detail');\n\t\t\tif (dataDestAttr) {\n\t\t\t\tx.setAttribute('data-dest-detail', '');\n\t\t\t}\n\t\t}); // disable links\n\t\tmatches = Array.from(document.querySelectorAll('span[match]'));\n\t\tmatches.forEach(elem => {\n\t\t\telem.addEventListener('click', onMatchClick);\n\t\t\telem.addEventListener('mouseenter', onMatchHover);\n\t\t\telem.addEventListener('mouseleave', onMatchHover);\n\t\t});\n\n\t\tdocument.querySelectorAll('span[exclude-partial-scan]').forEach((elem: any) => {\n\t\t\telem.addEventListener('click', () => messageParent({ type: 'upgrade-plan' }));\n\t\t\telem.addEventListener('mouseenter', onMatchHover);\n\t\t\telem.addEventListener('mouseleave', onMatchHover);\n\t\t});\n\t}\n\n\t/**\n\t * Message event handler\n\t */\n\tfunction onMessageFromParent(nativeEvent: any) {\n\t\tif (nativeEvent.source !== (window as any).parent) {\n\t\t\treturn;\n\t\t}\n\t\tconst event = nativeEvent.data as PostMessageEvent;\n\t\tswitch (event.type) {\n\t\t\tcase 'match-select':\n\t\t\t\thandleBroadcastMatchSelect(event);\n\t\t\t\tbreak;\n\t\t\tcase 'match-group-select':\n\t\t\t\thandleBroadcastGroupMatchesSelect(event);\n\t\t\t\tbreak;\n\t\t\tcase 'match-jump':\n\t\t\t\tonMatchJump(event);\n\t\t\t\tbreak;\n\t\t\tcase 'zoom':\n\t\t\t\tif (event.zoomIn) zoomIn();\n\t\t\t\telse zoomOut();\n\t\t\t\tbreak;\n\t\t\tcase 'multi-match-select':\n\t\t\t\t// do nothing\n\t\t\t\tbreak;\n\t\t\tcase 'matches-refresh':\n\t\t\t\tmatches = Array.from(document.querySelectorAll('span[match]'));\n\t\t\t\t// clear all previous event listeners to avoid duplicate events\n\t\t\t\tmatches.forEach(elem => {\n\t\t\t\t\telem.removeEventListener('click', onMatchClick);\n\t\t\t\t\telem.removeEventListener('mouseenter', onMatchHover);\n\t\t\t\t\telem.removeEventListener('mouseleave', onMatchHover);\n\t\t\t\t});\n\t\t\t\tmatches.forEach(elem => {\n\t\t\t\t\telem.addEventListener('click', onMatchClick);\n\t\t\t\t\telem.addEventListener('mouseenter', onMatchHover);\n\t\t\t\t\telem.addEventListener('mouseleave', onMatchHover);\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase 'correction-select':\n\t\t\t\thandelCorrectionSelect(event);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t}\n\t}\n\n\t/**\n\t * handle a broadcasted `match-select` event\n\t * @param event the match select event\n\t */\n\tfunction handleBroadcastMatchSelect(event: MatchSelectEvent) {\n\t\tconst elem: any = document.querySelector<HTMLSpanElement>(`span[match][data-index='${event.index}']`);\n\t\tif (!elem && event.index !== -1) {\n\t\t\tmessageParent({ type: 'match-warn' });\n\t\t}\n\t\tif (!elem && event.index === -1 && current) {\n\t\t\tcurrentMulti.forEach(e => e?.toggleAttribute('on', false));\n\t\t\tcurrentMulti = [];\n\t\t\tcurrent?.toggleAttribute('on', false);\n\t\t\tcurrent = null;\n\t\t\tmessageParent({ type: 'match-select', index: -1 });\n\t\t\treturn;\n\t\t}\n\t\tonMatchSelect(elem, true); // should not rebroadcast\n\t}\n\n\t/**\n\t * handle a broadcasted `match-select` event\n\t * @param event the match select event\n\t */\n\tfunction handleBroadcastGroupMatchesSelect(event: MatchGroupSelectEvent) {\n\t\tconst elems: any = document.querySelectorAll<HTMLSpanElement>(`span[match][data-gid='${event.groupId}']`);\n\n\t\tif (elems.length === 0) {\n\t\t\tmessageParent({ type: 'match-warn' });\n\t\t\treturn;\n\t\t}\n\n\t\tonMatchMultiSelect(elems[0], false, false);\n\t}\n\n\t/**\n\t * handle a broadcasted `match-select` event\n\t * @param event the match select event\n\t */\n\tfunction handelCorrectionSelect(event: CorrectionSelectEvent) {\n\t\tconst elements: any = document.querySelectorAll<HTMLSpanElement>(`span[match][data-gid='${event.gid}']`);\n\t\tlet elem: HTMLSpanElement;\n\t\tfor (let element of elements) {\n\t\t\t// find the first element that can be viewed as selected\n\t\t\tif ((element as HTMLSpanElement).innerHTML && (element as HTMLSpanElement).innerHTML.trim().length > 0) {\n\t\t\t\telem = element;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// select the correction\n\t\tcurrent?.toggleAttribute('on', false);\n\t\tcurrent = elem;\n\t\tcurrentMulti.forEach(e => e?.toggleAttribute('on', false));\n\t\tif (current) {\n\t\t\tcurrentMulti = [...elements];\n\t\t\tcurrentMulti.forEach(e => {\n\t\t\t\te?.toggleAttribute('on', true);\n\t\t\t});\n\t\t} else currentMulti = [];\n\t\tcurrent?.toggleAttribute('on', true);\n\t\tif (isPdf) {\n\t\t\telem?.closest('.pc')?.classList?.add('opened');\n\t\t\tcurrentMulti.forEach(e => e?.closest('.pc')?.classList?.add('opened'));\n\t\t}\n\t\tcurrent?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n\t}\n\n\t/**\n\t * Event handler for a `MatchJumpEvent` that is fired when the user clicks the\n\t * go to next/prev match buttons\n\t */\n\tfunction onMatchJump(event: MatchJumpEvent) {\n\t\tif (!current) {\n\t\t\tonMatchSelect(matches[0]);\n\t\t\treturn;\n\t\t}\n\t\tconst first = matches[0];\n\t\tconst last = matches[matches.length - 1];\n\t\tif ((current === first && !event.forward) || (current === last && event.forward)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst currentIndex = matches.indexOf(current);\n\t\tconst nextIndex = currentIndex + (event.forward ? 1 : -1);\n\n\t\tonMatchSelect(matches[nextIndex]);\n\t}\n\n\t/**\n\t * Emits an event to the parent window using PostMessage API\n\t * @param event the event content to emit\n\t */\n\tfunction messageParent(event: PostMessageEvent) {\n\t\t(window as any).parent.postMessage(event, '*');\n\t}\n\n\t/**\n\t * Event handler for the default click event of a match\n\t * @param event the default mouse event object\n\t */\n\tfunction onMatchClick(event: MouseEvent) {\n\t\tlet elem = event.target as HTMLSpanElement;\n\t\tif (elem.classList.contains('tooltip-match-content-container')) {\n\t\t\tif (!elem.parentElement) return;\n\t\t\telem = elem.parentElement as HTMLSpanElement;\n\t\t}\n\t\t// check if the shift key is pressed (multi selection)\n\t\t// clear the text selection\n\t\tdocument.getSelection()?.removeAllRanges();\n\n\t\tif (event.shiftKey || isGroupedMatch(elem)) {\n\t\t\tonMatchMultiSelect(elem);\n\t\t} else {\n\t\t\tonMatchSelect(elem);\n\t\t}\n\t}\n\n\t/**\n\t * Execute the logic of a match selection.\n\t * - highlight `elem` and message the parent window about it\n\t * - if an element is allready highlighted turn it off and highlight `elem`\n\t * @param elem the selected element\n\t */\n\tfunction onMatchSelect(elem: HTMLSpanElement, broadcast: boolean = false): void {\n\t\tif (!broadcast && current === elem) {\n\t\t\tcurrent?.toggleAttribute('on', false);\n\t\t\tcurrent = null;\n\t\t\tcurrentMulti.forEach(e => e?.toggleAttribute('on', false));\n\t\t\tcurrentMulti = [];\n\t\t\tmessageParent({\n\t\t\t\ttype: 'match-select',\n\t\t\t\tindex: -1,\n\t\t\t\tprevIndex: !!elem?.dataset?.['index'] ? +(elem?.dataset?.['index'] ?? '') : -1,\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tif (!broadcast && current) {\n\t\t\tcurrent?.toggleAttribute('on', false);\n\t\t}\n\t\tcurrent = elem;\n\t\tcurrentMulti.forEach(e => e?.toggleAttribute('on', false));\n\t\tif (current) currentMulti = [current];\n\t\telse currentMulti = [];\n\t\tcurrent?.toggleAttribute('on', true);\n\t\tif (isPdf) {\n\t\t\telem?.closest('.pc')?.classList?.add('opened');\n\t\t}\n\t\tcurrent?.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n\t\tmessageParent({\n\t\t\ttype: 'match-select',\n\t\t\tindex: !!current?.dataset?.['index'] ? +(current?.dataset?.['index'] ?? '') : -1,\n\t\t});\n\t}\n\n\t/**\n\t * Execute the logic of a multi match selection.\n\t * - highlight and add the `elem` to the highlighted matches\n\t * @param elem the selected element\n\t */\n\tfunction onMatchMultiSelect(\n\t\telem: HTMLSpanElement,\n\t\tbroadcast: boolean = false,\n\t\tsendOutsideEvent: boolean = true\n\t): void {\n\t\tlet foundSelection = currentMulti.find(e => elem === e);\n\n\t\tif (isGroupedMatch(elem) && !foundSelection && currentMulti?.length > 0) {\n\t\t\tconst groupId = elem.dataset['gid'];\n\t\t\tconst elems = document.querySelectorAll<HTMLSpanElement>(`span[match][data-gid='${groupId}']`);\n\n\t\t\tif (elems.length > 0) {\n\t\t\t\tconst elemsArray = Array.from(elems);\n\t\t\t\tfoundSelection = currentMulti.find(e => elemsArray.includes(e));\n\t\t\t}\n\t\t}\n\n\t\tif (!broadcast && foundSelection) {\n\t\t\tcurrentMulti = currentMulti.filter(e => e != elem);\n\n\t\t\tif (isGroupedMatch(elem)) {\n\t\t\t\tconst groupId = elem.dataset['gid'];\n\t\t\t\tconst elems = document.querySelectorAll<HTMLSpanElement>(`span[match][data-gid='${groupId}']`);\n\t\t\t\telems.forEach(e => e?.toggleAttribute('on', false));\n\n\t\t\t\tconst elemsArray = Array.from(elems);\n\t\t\t\t// remove the elements from the currentMulti array\n\t\t\t\tcurrentMulti = currentMulti.filter(e => !elemsArray.includes(e));\n\t\t\t} else foundSelection?.toggleAttribute('on', false);\n\n\t\t\tlet indexes = currentMulti.map(e => +e?.dataset?.['index']);\n\t\t\tindexes = indexes.filter(e => e > -1 && !isNaN(e));\n\n\t\t\tif (currentMulti.length === 1) current = currentMulti[0];\n\t\t\telse current = null;\n\n\t\t\tif (sendOutsideEvent) messageParent({ type: 'multi-match-select', indexes });\n\t\t\treturn;\n\t\t}\n\t\tcurrentMulti.push(elem);\n\t\telem?.toggleAttribute('on', true);\n\t\tif (isPdf) {\n\t\t\telem?.closest('.pc')?.classList?.add('opened');\n\t\t}\n\t\telem?.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n\n\t\tif (isGroupedMatch(elem)) {\n\t\t\tconst groupId = elem.dataset['gid'];\n\t\t\tconst elems: any = document.querySelectorAll<HTMLSpanElement>(`span[match][data-gid='${groupId}']`);\n\t\t\telems.forEach(e => {\n\t\t\t\te?.toggleAttribute('on', true);\n\t\t\t\tif (!currentMulti.includes(e)) currentMulti.push(e);\n\t\t\t});\n\t\t}\n\n\t\tif (currentMulti.length === 1) current = currentMulti[0];\n\t\telse current = null;\n\t\tlet indexes = currentMulti.map(e => (!!e?.dataset?.['index'] ? +(e?.dataset?.['index'] ?? '') : -1));\n\t\tindexes = indexes.filter(e => e > -1 && !isNaN(e));\n\t\tif (sendOutsideEvent) messageParent({ type: 'multi-match-select', indexes });\n\t}\n\n\t/**\n\t * Event handler for the default `mouseenter` or `mouseleave` event\n\t * @param event the default mouse event object\n\t */\n\tfunction onMatchHover(event: MouseEvent): void {\n\t\tconst elem = event?.target as HTMLSpanElement;\n\n\t\tif (isGroupedMatch(elem)) {\n\t\t\tconst groupId = elem.dataset['gid'];\n\t\t\tconst elems: any = document.querySelectorAll<HTMLSpanElement>(`span[match][data-gid='${groupId}']`);\n\t\t\telems.forEach(e => e?.classList?.toggle('hover'));\n\t\t} else {\n\t\t\telem?.classList?.toggle('hover');\n\t\t}\n\t}\n\n\tfunction zoomIn() {\n\t\tcurrentZoom += 0.1;\n\t\tupdateIframeZoomView();\n\t}\n\n\tfunction zoomOut() {\n\t\tcurrentZoom = Math.max(0.1, currentZoom - 0.1);\n\t\tupdateIframeZoomView();\n\t}\n\n\tfunction updateIframeZoomView() {\n\t\tif (isPdf) {\n\t\t\t// for pdf the scale doesn't work for the html or body elements, because the divs in the pdf are all with absolute positioning\n\t\t\tlet pageContainer = document.querySelector('#page-container') as HTMLElement;\n\t\t\tlet sidebar = document.querySelector('#sidebar') as HTMLElement;\n\t\t\tif (pageContainer) {\n\t\t\t\tpageContainer.style.setProperty('transform', `scale(${currentZoom})`);\n\t\t\t\tpageContainer.style.setProperty('transform-origin', '0 0');\n\t\t\t\tpageContainer.style.setProperty('height', `fit-content`);\n\t\t\t\tpageContainer.style.setProperty('overflow', `hidden`);\n\t\t\t} else {\n\t\t\t\tdocument.body.style.setProperty('transform', `scale(${currentZoom})`);\n\t\t\t\tdocument.body.style.setProperty('transform-origin', '0 0');\n\t\t\t}\n\n\t\t\tif (sidebar) sidebar.style.setProperty('display', 'none');\n\t\t} else {\n\t\t\tdocument.body.style.setProperty('transform', `scale(${currentZoom})`);\n\t\t\tdocument.body.style.setProperty('transform-origin', '0 0');\n\t\t}\n\t}\n\n\tfunction initMatchTooltipEventListeners() {\n\t\tdocument.querySelectorAll('span[match][data-type=\"3\"]').forEach(match => {\n\t\t\tmatch.addEventListener('mouseenter', (_: MouseEvent) => {\n\t\t\t\tconst tooltipSpanContent = generateWritingFeedbackMatchTooltip(\n\t\t\t\t\t(match as HTMLSpanElement).dataset?.['wrongText'],\n\t\t\t\t\t(match as HTMLSpanElement).dataset?.['correctionText']\n\t\t\t\t);\n\n\t\t\t\t// create a span element with the class name tooltip-match-content-container and style the color to red\n\t\t\t\tconst tooltipSpan = document.createElement('span');\n\t\t\t\ttooltipSpan.classList.add('tooltip-match-content-container');\n\t\t\t\ttooltipSpan.innerHTML = tooltipSpanContent;\n\t\t\t\ttooltipSpan.style.transform = `translate(-50%, 0) scale(${1 / (currentZoom * pdfZoom)})`;\n\t\t\t\ttooltipSpan.style.transformOrigin = '50% 100%';\n\t\t\t\tmatch.appendChild(tooltipSpan);\n\t\t\t\tmodifyTooltipsStyles(match);\n\t\t\t});\n\n\t\t\tmatch.addEventListener('mouseleave', () => {\n\t\t\t\t// remove span with class name tooltip-match-content-container\n\t\t\t\tdocument.querySelectorAll('.tooltip-match-content-container').forEach(e => e.remove());\n\t\t\t});\n\t\t});\n\n\t\t// document.querySelectorAll('span[exclude]').forEach(excludedMatch => {\n\t\t// \texcludedMatch.addEventListener('mouseenter', (_: MouseEvent) => {\n\t\t// \t\tconst tooltipSpanContent = (excludedMatch as HTMLSpanElement).dataset?.['reason'];\n\n\t\t// \t\tconst tooltipSpan = document.createElement('span');\n\t\t// \t\ttooltipSpan.classList.add('excluded-reason-tooltip');\n\t\t// \t\ttooltipSpan.innerHTML = tooltipSpanContent;\n\t\t// \t\ttooltipSpan.style.transform = `translate(-50%, 0) scale(${1 / (currentZoom * pdfZoom)})`;\n\t\t// \t\ttooltipSpan.style.transformOrigin = '50% 100%';\n\t\t// \t\texcludedMatch.appendChild(tooltipSpan);\n\t\t// \t\tmodifyTooltipsStyles(excludedMatch, '.excluded-reason-tooltip');\n\t\t// \t});\n\n\t\t// \texcludedMatch.addEventListener('mouseleave', () => {\n\t\t// \t\tdocument.querySelectorAll('.excluded-reason-tooltip').forEach(e => e.remove());\n\t\t// \t});\n\t\t// });\n\t}\n\n\tfunction initExcludedTextTooltipEventListeners() {\n\t\tconst detectScale = () => {\n\t\t\tconst currentScale = currentZoom * pdfZoom;\n\t\t\tdocument.body.style.setProperty('--iframe-scale', currentScale.toString());\n\t\t};\n\n\t\t// Initial detection\n\t\tdetectScale();\n\n\t\t// Event listeners\n\t\t(window as any).addEventListener('load', detectScale);\n\t\t(window as any).addEventListener('resize', detectScale);\n\n\t\tdocument.addEventListener('mouseover', e => {\n\t\t\tconst trigger = (e.target as Element).closest('.copyleaks-custom-tooltip-trigger');\n\t\t\tif (trigger) {\n\t\t\t\tconst tooltip = trigger.querySelector('.copyleaks-custom-tooltip');\n\t\t\t\tupdateTooltipPosition(tooltip);\n\t\t\t}\n\t\t});\n\n\t\t// Optional: MutationObserver for dynamic content changes\n\t\tconst observer = new MutationObserver(detectScale);\n\t\tobserver.observe(document.body, {\n\t\t\tattributes: true,\n\t\t\tchildList: true,\n\t\t\tsubtree: true,\n\t\t});\n\n\t\tconst updateTooltipPosition = tooltip => {\n\t\t\tlet rect = tooltip.getBoundingClientRect();\n\t\t\tif (rect.left < 0) {\n\t\t\t\ttooltip.style.left = '0';\n\t\t\t\ttooltip.style.transform = `translateX(0) scale(calc(1 / var(--iframe-scale, ${currentZoom * pdfZoom})))`;\n\t\t\t}\n\t\t};\n\t}\n\n\tfunction generateWritingFeedbackMatchTooltip(wrongText: string, correctionText: string): string {\n\t\tvar contentHTML = '';\n\n\t\tif (wrongText !== correctionText) {\n\t\t\tcontentHTML += `<span class=\"wrong-text\">${wrongText}</span>`;\n\t\t}\n\t\t// Adding SVG arrow\n\t\tif (wrongText != correctionText && correctionText)\n\t\t\tcontentHTML += `<span style='font-size:14px !important; line-height: normal !important;'>&#129106;</span>`;\n\n\t\tif (correctionText) {\n\t\t\tcontentHTML += `<span class=\"correction-text\">${correctionText}</span>`;\n\t\t}\n\t\treturn contentHTML;\n\t}\n\n\tfunction modifyTooltipsStyles(match?: Element, tooltipClass: string = 'tooltip-match-content-container') {\n\t\tconst tooltip = match.querySelector(tooltipClass) as HTMLElement;\n\n\t\tif (tooltip instanceof HTMLElement) {\n\t\t\tlet tooltipRect = tooltip.getBoundingClientRect();\n\t\t\tlet tooltipWidth = tooltipRect.width;\n\n\t\t\tlet iframeWidth: number;\n\t\t\tif (isPdf) {\n\t\t\t\tlet pageContainer = document.querySelector('#page-container') as HTMLElement;\n\t\t\t\tiframeWidth = pageContainer.clientWidth;\n\t\t\t} else iframeWidth = window.innerWidth;\n\n\t\t\tlet matchRect = match.getBoundingClientRect();\n\n\t\t\t// Move tooltip to the right side if it exceeds the iframe left boundary\n\t\t\tif (matchRect.left + tooltipWidth > iframeWidth) {\n\t\t\t\ttooltip.style.transform = `translate(-100%, 0) scale(${1 / (currentZoom * pdfZoom)})`;\n\t\t\t\ttooltip.style.transformOrigin = `calc(100% + ${matchRect.width + 10}px) -50%`;\n\t\t\t\ttooltip.classList.add('right-arrow');\n\t\t\t}\n\t\t\t// Move tooltip to the left side if it exceeds the iframe left boundary\n\t\t\telse if (matchRect.right - tooltipWidth < 0) {\n\t\t\t\ttooltip.style.transform = `translate(0, 0) scale(${1 / (currentZoom * pdfZoom)})`; // Move tooltip to the right side of the match\n\t\t\t\ttooltip.style.transformOrigin = `-${matchRect.width + 10}px -50%`;\n\t\t\t\ttooltip.classList.add('left-arrow');\n\t\t\t}\n\n\t\t\t// if (matchRect.top - tooltipHeight < 0) {\n\t\t\t// \ttooltip.style.transform = `translate(-50%, 100%) scale(${1 / (currentZoom * pdfZoom)})`; // Move tooltip under the match\n\t\t\t// \ttooltip.style.transformOrigin = `0 -${2 * matchRect.height}px`;\n\t\t\t// }\n\t\t}\n\t}\n\n\tfunction isGroupedMatch(elem: HTMLSpanElement): boolean {\n\t\tconst matchProportion = elem?.dataset?.['proportion'];\n\t\tif (matchProportion === 'low' || matchProportion === 'medium' || matchProportion === 'high') return true;\n\n\t\treturn false;\n\t}\n}\n\nexport default `(${onDocumentReady.toString()})(${ready.toString()})`;\n","/* tslint:disable */\n\nimport { PostMessageEvent, MatchJumpEvent, MatchSelectEvent } from '../models/report-iframe-events.models';\n\n/**\n * document ready event handler\n * @param fn the callback to execute when the document is ready\n */\nfunction onDocumentReady(fn: any) {\n\tif (document.readyState === 'complete' || document.readyState === 'interactive') {\n\t\tsetTimeout(fn, 1);\n\t} else {\n\t\tdocument.addEventListener('DOMContentLoaded', fn);\n\t}\n}\n\nfunction ready() {\n\tlet current: HTMLSpanElement | null;\n\tlet matches: HTMLSpanElement[];\n\tlet groups: { [gid: string]: HTMLSpanElement[] };\n\tlet isPdf = document.querySelector('meta[content=\"pdf2htmlEX\"]') !== null;\n\tlet currentZoom: number = 1;\n\n\t(window as any).addEventListener(\n\t\t'wheel',\n\t\tfunction (event) {\n\t\t\tif (event && event.ctrlKey) {\n\t\t\t\tevent.preventDefault(); // Prevent the default zoom action\n\t\t\t\t// Check if the scroll is up or down & update the zoom property accordingly\n\t\t\t\tif (event.deltaY < 0) zoomIn();\n\t\t\t\telse if (event.deltaY > 0) zoomOut();\n\t\t\t}\n\t\t},\n\t\t{ passive: false }\n\t);\n\n\t(window as any).addEventListener('message', handleMessageFromParent);\n\tinit();\n\n\t/**\n\t * Initialization code, will execute before emitting iframe-ready event\n\t */\n\tfunction init() {\n\t\tArray.from(document.links).forEach(x => (x.href = 'javascript:void(0)')); // disable links\n\t\tmatches = Array.from(document.querySelectorAll('span[match]'));\n\t\tgroups = matches.reduce((prev: any, curr: any) => {\n\t\t\tprev[curr.dataset.gid] = prev[curr.dataset.gid] || [];\n\t\t\tprev[curr.dataset.gid].push(curr);\n\t\t\treturn prev;\n\t\t}, {});\n\n\t\tmatches.forEach(elem => {\n\t\t\telem.addEventListener('click', onMatchClick);\n\t\t\telem.addEventListener('mouseenter', onMatchHover);\n\t\t\telem.addEventListener('mouseleave', onMatchHover);\n\t\t});\n\n\t\tdocument.querySelectorAll('span[exclude-partial-scan]').forEach(elem => {\n\t\t\telem.addEventListener('click', () => messageParent({ type: 'upgrade-plan' }));\n\t\t});\n\t}\n\n\tfunction handleMessageFromParent(nativeEvent: any) {\n\t\tif (nativeEvent.source !== (window as any).parent) {\n\t\t\treturn;\n\t\t}\n\t\tconst event = nativeEvent.data as PostMessageEvent;\n\t\tswitch (event.type) {\n\t\t\tcase 'match-select':\n\t\t\t\thandleBroadcastMatchSelect(event);\n\t\t\t\tbreak;\n\t\t\tcase 'match-jump':\n\t\t\t\thandleMatchJump(event);\n\t\t\t\tbreak;\n\t\t\tcase 'zoom':\n\t\t\t\tif (event.zoomIn) zoomIn();\n\t\t\t\telse zoomOut();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tconsole.error('unknown event in source frame', nativeEvent);\n\t\t}\n\t}\n\n\t/**\n\t * Handle a match-jump event\n\t * @param event the match-jump event object\n\t */\n\tfunction handleMatchJump(event: MatchJumpEvent) {\n\t\t// cases:\n\t\t// nothing is marked - force the start\n\n\t\tif (!current) {\n\t\t\thandleMatchSelect(matches[0], true);\n\t\t\treturn;\n\t\t}\n\n\t\t// start is marked and backward  -  do nothing\n\t\t// end is marked and forward - do nothing\n\t\tconst oldGid = current.dataset['gid'];\n\t\tconst firstGid = matches[0].dataset['gid'];\n\t\tconst lastGid = matches[matches.length - 1].dataset['gid'];\n\t\tif ((oldGid === firstGid && !event.forward) || (oldGid === lastGid && event.forward)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// middle is marked - just go next/prev\n\t\tlet currentIndex = matches.indexOf(current);\n\t\tconst step = event.forward ? 1 : -1;\n\t\twhile (0 <= currentIndex && currentIndex < matches.length) {\n\t\t\tcurrentIndex += step;\n\t\t\tif (matches[currentIndex].dataset['gid'] !== oldGid) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tconst nextGid = matches[currentIndex].dataset['gid'];\n\t\thandleMatchSelect(groups[nextGid as keyof HTMLSpanElement][0], true);\n\t}\n\n\t/**\n\t * Emit events to parent using postMessage API\n\t * @param event the event to emit\n\t */\n\tfunction messageParent(event: PostMessageEvent) {\n\t\t(window as any).parent.postMessage(event, '*');\n\t}\n\n\t/**\n\t * Handle a click on a match element\n\t * @param event the default mouse event\n\t */\n\tfunction onMatchClick(event: MouseEvent) {\n\t\tconst elem = event.target as HTMLSpanElement;\n\t\thandleMatchSelect(elem, true);\n\t}\n\n\t/**\n\t * handle a broadcasted `match-select` event\n\t * @param event the match select event\n\t */\n\tfunction handleBroadcastMatchSelect(event: MatchSelectEvent) {\n\t\tconst elem = document.querySelector<HTMLSpanElement>(`span[match][data-index='${event.index}']`);\n\t\tif (!elem && event.index !== -1) {\n\t\t\tmessageParent({ type: 'match-warn' });\n\t\t}\n\t\thandleMatchSelect(elem || current, false); // should not rebroadcast\n\t}\n\n\t/**\n\t * Handles match selection that was requested programmatically or by user click\n\t * @param elem the element that was selected\n\t * @param broadcast a flag indicating wether to message the suspect frame about this element being selected\n\t */\n\tfunction handleMatchSelect(elem: HTMLSpanElement | null, broadcast: boolean = false): void {\n\t\tif (current && current.dataset['gid'] === elem?.dataset['gid']) {\n\t\t\tgroups[current.dataset['gid'] as keyof HTMLSpanElement].forEach(el => el.toggleAttribute('on', false));\n\t\t\tcurrent = null;\n\t\t\tif (broadcast) {\n\t\t\t\tmessageParent({ type: 'match-select', index: -1 });\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (current) {\n\t\t\tgroups[current.dataset['gid'] as keyof HTMLSpanElement].forEach(el => el.toggleAttribute('on', false));\n\t\t}\n\t\tif (elem) {\n\t\t\tgroups[elem.dataset['gid'] as keyof HTMLSpanElement].forEach(el => el.toggleAttribute('on', true));\n\t\t\tif (isPdf) {\n\t\t\t\telem?.closest('.pc')?.classList.add('opened');\n\t\t\t}\n\t\t\telem.scrollIntoView();\n\t\t}\n\t\tcurrent = elem;\n\t\tif (broadcast) {\n\t\t\tmessageParent({ type: 'match-select', index: +(current?.dataset?.['index'] ?? '') });\n\t\t}\n\t}\n\n\t/**\n\t * Handle match hover event\n\t * @param event the default mouse event\n\t */\n\tfunction onMatchHover(event: MouseEvent) {\n\t\tconst elem = event?.target as HTMLSpanElement;\n\t\tgroups[elem?.dataset['gid'] as keyof HTMLSpanElement]?.forEach(el => el?.classList?.toggle('hover'));\n\t}\n\n\tfunction zoomIn() {\n\t\tcurrentZoom += 0.1;\n\t\tupdateIframeZoomView();\n\t}\n\n\tfunction zoomOut() {\n\t\tcurrentZoom = Math.max(0.1, currentZoom - 0.1);\n\t\tupdateIframeZoomView();\n\t}\n\n\tfunction updateIframeZoomView() {\n\t\tif (isPdf) {\n\t\t\t// for pdf the scale doesn't work for the html or body elements, because the divs in the pdf are all with absolute positioning\n\t\t\tlet pageContainer = document.querySelector('#page-container') as HTMLElement;\n\t\t\tlet sidebar = document.querySelector('#sidebar') as HTMLElement;\n\t\t\tif (pageContainer) {\n\t\t\t\tpageContainer.style.setProperty('transform', `scale(${currentZoom})`);\n\t\t\t\tpageContainer.style.setProperty('transform-origin', '0 0');\n\t\t\t\tpageContainer.style.setProperty('height', `fit-content`);\n\t\t\t\tpageContainer.style.setProperty('overflow', `hidden`);\n\t\t\t} else {\n\t\t\t\tdocument.body.style.setProperty('transform', `scale(${currentZoom})`);\n\t\t\t\tdocument.body.style.setProperty('transform-origin', '0 0');\n\t\t\t}\n\n\t\t\tif (sidebar) sidebar.style.setProperty('display', 'none');\n\t\t} else {\n\t\t\tdocument.body.style.setProperty('transform', `scale(${currentZoom})`);\n\t\t\tdocument.body.style.setProperty('transform-origin', '0 0');\n\t\t}\n\t}\n}\n\nexport default `(${onDocumentReady.toString()})(${ready.toString()})`;\n","export const ALERTS = {\n\tSUSPECTED_CHARACTER_REPLACEMENT_CODE: 'suspected-character-replacement',\n\tSUSPECTED_CHEATING_DETECTED_CODE: 'suspected-cheating-detected',\n\tSUSPECTED_AI_TEXT_DETECTED: 'suspected-ai-text',\n\tWRITING_FEEDBACK_LANG_NOT_SUPPORTED: 'writing-feedback-lang-not-supported',\n\tWRITING_FEEDBACK_FAILED: 'writing-feedback-failed',\n\tAI_INSIGHTS_LANG_UNSUPPORTED: 'ai-insights-lang-unsupported',\n};\n","import { CrTextMatchComponent } from '../components/core/cr-text-match/cr-text-match.component';\nimport { Comparison, IComparisonCollection } from '../models/report-data.models';\nimport { Match, MatchType, SlicedMatch } from '../models/report-matches.models';\n\n/**\n * Find the respective match for a given match directive element containing a match object\n * If the match is from the source, the return value will contain the source index first, and\n * then the suspect's index, and vice versa.\n * @param match the match directive element\n * @param result the suspect currently viewed\n * @param isSource whether the match comes from the source\n * @returns pair of indices.\n */\nexport const findRespectiveMatch = (\n\tmatch: Match,\n\tcomparisons: IComparisonCollection,\n\tisSource = true\n): [number, number] => {\n\tconst { type, start } = match;\n\tconst { source: original, suspected: suspect }: Comparison = comparisons[\n\t\tMatchType[type] as keyof IComparisonCollection\n\t] as Comparison;\n\tconst [source, target] = isSource ? [original, suspect] : [suspect, original];\n\tconst index = source.chars.starts.findIndex((s, i) => s <= start && start <= s + source.chars.lengths[i]);\n\treturn [source.chars.starts[index], target.chars.starts[index]];\n};\n\n/**\n * Calculates the page number of where the start position should be\n * @param start the start position\n * @param pages array of start positions\n */\nexport const findRespectivePage = (start: number, pages: number[]): number => {\n\tlet page: number;\n\tfor (page = 1; page < pages.length; page++) {\n\t\tif (start < pages[page]) {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn page;\n};\n\n/**\n * Search source for a match containing the given match's start position and return that match's start position\n * @param start the match to look for\n * @param source the scan source object.\n */\nexport const findPartialMatch = (match: Match, suspect: IComparisonCollection): number | void => {\n\tconst { start, end } = match;\n\tconst { identical, minorChanges, relatedMeaning } = suspect;\n\tfor (const comparison of [identical, minorChanges, relatedMeaning]) {\n\t\tif (!comparison) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst { source } = comparison;\n\t\tconst found = source.chars.starts.find((s, i) => s <= start && end <= s + source.chars.lengths[i]);\n\t\tif (found !== undefined) {\n\t\t\treturn found;\n\t\t}\n\t}\n};\n\n/**\n * Locate the index of the next page that contains some match\n * @param matches the matches to look up in\n * @param current the index of the current page\n */\nexport const findNextPageWithMatch = (matches: SlicedMatch[][], current: number): number => {\n\tfor (let i = current; i < matches.length; i++) {\n\t\tif (matches[i].some(({ match }) => match.type !== MatchType.none && match.type !== MatchType.excluded)) {\n\t\t\treturn i + 1;\n\t\t}\n\t}\n\treturn current;\n};\n\n/**\n * Locate the index of the previouse page that contains some match\n * @param matches the current active matches\n * @param current the index of the current match\n */\nexport const findPrevPageWithMatch = (matches: SlicedMatch[][], current: number): number => {\n\tfor (let i = current - 2; i >= 0; i--) {\n\t\tif (matches[i].some(match => match.match.type !== MatchType.none)) {\n\t\t\treturn i + 1;\n\t\t}\n\t}\n\treturn current;\n};\n\n/**\n * Mark/Unmark the next match component based on the previously marked component\n * @param prev the previously marked/unmarked match\n * @param next the match to mark/unmark next\n * @returns `true` if the match is eventualy highlighted\n */\nexport const onTextMatchChange = ([prev, next]: [CrTextMatchComponent | null, CrTextMatchComponent | null]) => {\n\tif (next) {\n\t\tif (prev && prev !== next) {\n\t\t\tprev.focused = false;\n\t\t}\n\t\tnext.focused = !next.focused;\n\t} else {\n\t\tif (prev) {\n\t\t\tprev.focused = false;\n\t\t}\n\t}\n};\n","import { Injectable, TemplateRef } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { ResultDetailItem } from '../models/report-matches.models';\nimport { IReportResponsiveMode, IReportViewEvent } from '../models/report-view.models';\n\n@Injectable()\nexport class ReportViewService {\n\tprivate _reportViewMode$ = new BehaviorSubject<IReportViewEvent>({\n\t\tisHtmlView: true,\n\t\tviewMode: 'one-to-one',\n\t\tsourcePageIndex: 1,\n\t});\n\t/** Subject for the report view mode. */\n\tpublic get reportViewMode$() {\n\t\treturn this._reportViewMode$;\n\t}\n\t/** Getter for the report data endpoints. */\n\tpublic get reportViewMode() {\n\t\treturn this._reportViewMode$.value;\n\t}\n\n\tprivate _reportResponsiveMode$ = new BehaviorSubject<IReportResponsiveMode | null>(null);\n\t/** Subject for sharing the report reposive view mode. */\n\tpublic get reportResponsiveMode$() {\n\t\treturn this._reportResponsiveMode$;\n\t}\n\t/** Getter for the report reposive view mode. */\n\tpublic get reportResponsiveMode() {\n\t\treturn this._reportResponsiveMode$.value;\n\t}\n\n\tprivate _selectedResult$ = new BehaviorSubject<ResultDetailItem | null>(null);\n\t/** Subject for the report selected matching result. */\n\tpublic get selectedResult$() {\n\t\treturn this._selectedResult$;\n\t}\n\t/** Getter for the report selected matching result. */\n\tpublic get selectedResult() {\n\t\treturn this._selectedResult$.value;\n\t}\n\n\tprivate _selectedAlert$ = new BehaviorSubject<string | null>(null);\n\t/** Subject for the report selected alert. */\n\tpublic get selectedAlert$() {\n\t\treturn this._selectedAlert$;\n\t}\n\t/** Getter for the report selected alert. */\n\tpublic get selectedAlert() {\n\t\treturn this._selectedAlert$.value;\n\t}\n\n\tprivate _selectedCustomTabContent$ = new BehaviorSubject<TemplateRef<any> | null>(null);\n\t/** Subject for the report selected custom tab content (the content viewer section). */\n\tpublic get selectedCustomTabContent$() {\n\t\treturn this._selectedCustomTabContent$;\n\t}\n\t/** Getter for the report selected custom tab content (the content viewer section).*/\n\tpublic get selectedCustomTabContent() {\n\t\treturn this._selectedCustomTabContent$.value;\n\t}\n\n\tprivate _selectedCustomTabResultSectionContent$ = new BehaviorSubject<TemplateRef<any> | null>(null);\n\t/** Subject for the report selected custom tab results section. */\n\tpublic get selectedCustomTabResultSectionContent$() {\n\t\treturn this._selectedCustomTabResultSectionContent$;\n\t}\n\t/** Getter for the report selected custom tab results section. */\n\tpublic get selectedCustomTabResultSectionContent() {\n\t\treturn this._selectedCustomTabResultSectionContent$.value;\n\t}\n\n\tprivate _progress$ = new BehaviorSubject<number>(0);\n\t/** Subject for the report current scanning progress (0-100%)*/\n\tpublic get progress$() {\n\t\treturn this._progress$;\n\t}\n\n\tprivate _documentDirection$ = new BehaviorSubject<'ltr' | 'rtl'>(this._getDocumentDirection());\n\t/** Subject for the report document direction (ltr/rtl). */\n\tpublic get documentDirection$() {\n\t\treturn this._documentDirection$;\n\t}\n\t/** Getter for the report document direction (ltr/rtl). */\n\tpublic get documentDirection() {\n\t\treturn this._documentDirection$.value;\n\t}\n\tprivate observer: MutationObserver;\n\n\tconstructor() {\n\t\tthis._observeDocumentDirection();\n\t}\n\n\t/**\n\t * Observe the document direction changes.\n\t */\n\tprivate _observeDocumentDirection(): void {\n\t\tthis.observer = new MutationObserver(() => {\n\t\t\tthis.documentDirection$.next(this._getDocumentDirection());\n\t\t});\n\n\t\tthis.observer.observe(document.documentElement, {\n\t\t\tattributeFilter: ['dir'],\n\t\t});\n\t}\n\n\t/**\n\t * Get the document direction (ltr/rtl).\n\t * @returns The document direction (ltr/rtl).\n\t */\n\tprivate _getDocumentDirection(): 'ltr' | 'rtl' {\n\t\treturn document?.documentElement?.getAttribute('dir') === 'rtl' ? 'rtl' : 'ltr';\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.observer?.disconnect();\n\t}\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { filter, map, withLatestFrom } from 'rxjs/operators';\nimport { CrTextMatchComponent } from '../components/core/cr-text-match/cr-text-match.component';\nimport { ContentMode, ViewMode } from '../models/report-config.models';\nimport { HtmlMatchClickEvent, Match, TextMatchHighlightEvent } from '../models/report-matches.models';\nimport * as helpers from '../utils/highlight-helpers';\nimport { untilDestroy } from '../utils/until-destroy';\nimport { ReportViewService } from './report-view.service';\nimport { IWritingFeedbackCorrectionViewModel } from '../models/report-data.models';\nimport { ISelectExplainableAIResult } from '../models/report-ai-results.models';\n\n@Injectable()\nexport class ReportMatchHighlightService implements OnDestroy {\n\tprivate readonly _originalText = new BehaviorSubject<CrTextMatchComponent | null>(null);\n\tprivate readonly _multiOriginalText = new BehaviorSubject<CrTextMatchComponent[]>([]);\n\tprivate readonly _sourceText = new BehaviorSubject<CrTextMatchComponent | null>(null);\n\tprivate readonly _suspectText = new BehaviorSubject<CrTextMatchComponent | null>(null);\n\tprivate readonly _originalHtml = new BehaviorSubject<Match | null>(null);\n\tprivate readonly _sourceHtml = new BehaviorSubject<Match | null>(null);\n\tprivate readonly _suspectHtml = new BehaviorSubject<Match | null>(null);\n\tprivate readonly _textMatchClick = new Subject<TextMatchHighlightEvent>();\n\tprivate readonly _htmlMatchClick = new Subject<HtmlMatchClickEvent>();\n\tprivate readonly _jump = new Subject<boolean>();\n\tprivate readonly _clear = new Subject<ViewMode>();\n\n\tconstructor(private _reportViewService: ReportViewService) {\n\t\tthis.textMatchClick$.pipe(untilDestroy(this)).subscribe(event => {\n\t\t\tswitch (event.origin) {\n\t\t\t\tcase 'original':\n\t\t\t\t\tthis.setOriginalTextMatch(event?.elem, event?.multiSelect, event?.showResults);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'source':\n\t\t\t\t\tthis.setSourceTextMatch(event?.elem);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'suspect':\n\t\t\t\t\tthis.setSuspectTextMatch(event?.elem);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\n\t\tthis._aiInsightsSelect$.pipe(untilDestroy(this)).subscribe(selectedResult => {\n\t\t\tif (selectedResult) {\n\t\t\t\t// add it to _aiInsightsSelectedResults if not already there\n\t\t\t\tconst selectedResults = this._aiInsightsSelectedResults$.value ?? [];\n\t\t\t\tconst index = selectedResults.findIndex(\n\t\t\t\t\tresult =>\n\t\t\t\t\t\tresult.resultRange.start === selectedResult.resultRange.start &&\n\t\t\t\t\t\tresult.resultRange.end === selectedResult.resultRange.end\n\t\t\t\t);\n\t\t\t\tif (index === -1) selectedResults.push(selectedResult);\n\t\t\t\tthis._aiInsightsSelectedResults$.next(selectedResults);\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic get jump$() {\n\t\treturn this._jump.asObservable();\n\t}\n\n\tpublic get clear$() {\n\t\treturn this._clear;\n\t}\n\n\tpublic get oneToManyTextMatchClick$() {\n\t\treturn this.textMatchClick$.pipe(filter(ev => ev.origin === 'original'));\n\t}\n\n\tpublic get oneToOneTextMatchClick$() {\n\t\treturn this.textMatchClick$.pipe(filter(ev => ev.origin === 'source' || ev.origin === 'suspect'));\n\t}\n\n\tpublic get oneToManyHtmlMatchClick$() {\n\t\treturn this._htmlMatchClick.asObservable().pipe(\n\t\t\twithLatestFrom(this._reportViewService.reportViewMode$),\n\t\t\tfilter(([, data]) => data.viewMode === 'one-to-many' || data.viewMode === 'writing-feedback'),\n\t\t\tmap(([event]) => event)\n\t\t);\n\t}\n\n\tpublic get oneToOneHtmlMatchClick$() {\n\t\treturn this._htmlMatchClick.asObservable().pipe(\n\t\t\twithLatestFrom(this._reportViewService.reportViewMode$),\n\t\t\tfilter(([, data]) => data.viewMode === 'one-to-one'),\n\t\t\tmap(([event]) => event)\n\t\t);\n\t}\n\n\tpublic get originalText$() {\n\t\treturn this._originalText.asObservable();\n\t}\n\tpublic get multiOriginalText$() {\n\t\treturn this._multiOriginalText.asObservable();\n\t}\n\tpublic get sourceText$() {\n\t\treturn this._sourceText.asObservable();\n\t}\n\tpublic get suspectText$() {\n\t\treturn this._suspectText.asObservable();\n\t}\n\n\tpublic get originalHtml$() {\n\t\treturn this._originalHtml.asObservable();\n\t}\n\tpublic get sourceHtml$() {\n\t\treturn this._sourceHtml.asObservable();\n\t}\n\tpublic get suspectHtml$() {\n\t\treturn this._suspectHtml.asObservable();\n\t}\n\tpublic get textMatchClick$() {\n\t\treturn this._textMatchClick.asObservable();\n\t}\n\n\tprivate _correctionSelect$ = new BehaviorSubject<IWritingFeedbackCorrectionViewModel | null>(null);\n\t/** Emits matches that are relevant to source html one-to-many mode */\n\tpublic get correctionSelect$() {\n\t\treturn this._correctionSelect$;\n\t}\n\tpublic get correctionSelect() {\n\t\treturn this._correctionSelect$.value;\n\t}\n\n\tprivate _aiInsightsSelect$ = new BehaviorSubject<ISelectExplainableAIResult | null>(null);\n\t/** Emits matches that are relevant to source html one-to-many mode */\n\tpublic get aiInsightsSelect$() {\n\t\treturn this._aiInsightsSelect$;\n\t}\n\n\tprivate _aiInsightsShowResult$ = new BehaviorSubject<ISelectExplainableAIResult | null>(null);\n\tpublic get aiInsightsShowResult$() {\n\t\treturn this._aiInsightsShowResult$;\n\t}\n\n\tprivate _aiInsightsSelectedResults$ = new BehaviorSubject<ISelectExplainableAIResult[] | null>(null);\n\tpublic get aiInsightsSelectedResults$() {\n\t\treturn this._aiInsightsSelectedResults$;\n\t}\n\tpublic get aiInsightsSelectedResults() {\n\t\treturn this._aiInsightsSelectedResults$.value;\n\t}\n\n\t/**\n\t * Clear the currently selected matches\n\t * @param mode the mode to clear, leave empty for both\n\t */\n\tpublic clear(mode?: ContentMode) {\n\t\tif (!mode || mode === 'html') {\n\t\t\tthis.textMatchClicked({ elem: null, broadcast: false, origin: 'original' });\n\t\t\tthis.textMatchClicked({ elem: null, broadcast: false, origin: 'source' });\n\t\t\tthis.textMatchClicked({ elem: null, broadcast: false, origin: 'suspect' });\n\t\t}\n\t\tif (!mode || mode === 'text') {\n\t\t\tthis.htmlMatchClicked(null, true);\n\t\t\tthis.htmlMatchClicked(null, false);\n\t\t}\n\t}\n\n\t/**\n\t * Pushes a new `TextMatchClickEvent` to the text match click observer\n\t * @param event The match component that was clicked\n\t */\n\tpublic textMatchClicked(event: TextMatchHighlightEvent) {\n\t\tthis._textMatchClick.next(event);\n\t}\n\n\t/**\n\t * Pushes a new `HtmlMatchClickEvent` to the html match click observer\n\t * @param match the match data of the clicked element\n\t * @param isSource `true` if the match comes from the `source` and `false` if it comes from the `suspect`\n\t */\n\tpublic htmlMatchClicked(match: Match | null, isSource: boolean) {\n\t\tthis._htmlMatchClick.next({ match, isSource, broadcast: true });\n\t}\n\t/**\n\t * Pushes the match that should be marked to the original text match observer\n\t * This will mark/unmark the text match in the original component while in `one-to-many` view mode\n\t * @param match The match to mark/unmark\n\t */\n\tpublic setOriginalTextMatch(\n\t\tnext: CrTextMatchComponent | null,\n\t\tmultiSelect: boolean = false,\n\t\tshowResults: boolean = true\n\t) {\n\t\t// check if the shift key is pressed (multi selection)\n\t\tif (multiSelect) {\n\t\t\tif (!next) {\n\t\t\t\tthis._multiOriginalText.value.forEach(match => {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tif (match) match.focused = false;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tif (showResults) this._multiOriginalText.next([]);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst foundSelection = this._multiOriginalText.value.find(match => match === next);\n\t\t\tif (foundSelection) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tfoundSelection.focused = false;\n\t\t\t\t});\n\t\t\t\tconst selected = this._multiOriginalText.value.filter(match => match != next);\n\t\t\t\tif (showResults) {\n\t\t\t\t\tif (selected.length === 0) {\n\t\t\t\t\t\tthis._multiOriginalText.next([]);\n\t\t\t\t\t\tthis._originalText.next(null);\n\t\t\t\t\t} else this._multiOriginalText.next([...selected]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tnext.focused = true;\n\t\t\t\t});\n\t\t\t\tif (showResults) this._multiOriginalText.next([...this._multiOriginalText.value, next]);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tthis._multiOriginalText.value.forEach(match => {\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (match) match.focused = false;\n\t\t\t});\n\t\t});\n\n\t\tconst prev = this._originalText.value;\n\t\tif (prev === next) {\n\t\t\tnext = null;\n\t\t\tif (showResults) this._multiOriginalText.next([]);\n\t\t} else {\n\t\t\tif (showResults) {\n\t\t\t\tif (next) this._multiOriginalText.next([next]);\n\t\t\t\telse this._multiOriginalText.next([]);\n\t\t\t}\n\t\t}\n\t\tsetTimeout(() => {\n\t\t\thelpers.onTextMatchChange([prev, next]);\n\t\t});\n\t\tif (showResults) this._originalText.next(next);\n\t}\n\n\t/**\n\t * Pushes the match that should be marked to the source text match observer\n\t * This will mark/unmark the text match in the original component while in `one-to-one` view mode\n\t * @param match The match to mark/unmark\n\t */\n\tpublic setSourceTextMatch(next: CrTextMatchComponent | null) {\n\t\tconst prev = this._sourceText.value;\n\t\tif (prev === next) {\n\t\t\tnext = null;\n\t\t}\n\t\tsetTimeout(() => {\n\t\t\thelpers.onTextMatchChange([prev, next]);\n\t\t});\n\t\tthis._sourceText.next(next);\n\t}\n\t/**\n\t * Pushes the match that should be marked to the suspect text match observer\n\t * This will mark/unmark the text match in the suspect component while in `one-to-one` view mode\n\t * @param next The match to mark/unmark\n\t */\n\tpublic setSuspectTextMatch(next: CrTextMatchComponent | null) {\n\t\tconst prev = this._suspectText.value;\n\t\tif (prev === next) {\n\t\t\tnext = null;\n\t\t}\n\t\tsetTimeout(() => {\n\t\t\thelpers.onTextMatchChange([prev, next]);\n\t\t});\n\t\tthis._suspectText.next(next);\n\t}\n\n\t/**\n\t * Pushes the match that should be marked to the original html match observer\n\t * This will mark/unmark the html match in the original component while in `one-to-many` view mode\n\t * @param match The match to mark/unmark\n\t */\n\tpublic setOriginalHtmlMatch(match: Match | null) {\n\t\tthis._originalHtml.next(match);\n\t}\n\t/**\n\t * Pushes the match that should be marked to the source html match observer\n\t * This will mark/unmark the html match in the original component while in `one-to-one` view mode\n\t * @param match The match to mark/unmark\n\t */\n\tpublic setSourceHtmlMatch(match: Match | null) {\n\t\tthis._sourceHtml.next(match);\n\t}\n\t/**\n\t * Pushes the match that should be marked to the suspect html match observer\n\t * This will mark/unmark the html match in the suspect component while in `one-to-one` view mode\n\t * @param match The match to mark/unmark\n\t */\n\tpublic setSuspectHtmlMatch(match: Match | null) {\n\t\tthis._suspectHtml.next(match);\n\t}\n\n\t/**\n\t * clear all selected matches\n\t */\n\tpublic clearAllMatchs() {\n\t\tthis.setOriginalTextMatch(null);\n\t\tthis.setSuspectTextMatch(null);\n\t\tthis.setOriginalHtmlMatch(null);\n\t\tthis.setSourceHtmlMatch(null);\n\t\tthis.setSuspectHtmlMatch(null);\n\t\tthis.setSourceTextMatch(null);\n\t}\n\n\t/**\n\t * Push a new jump event to the jump observer\n\t *\n\t * @param next `true` to jump to the next match and `false` to jump to the previous match\n\t */\n\tpublic jump(next: boolean) {\n\t\tthis._jump.next(next);\n\t}\n\n\t/** dtor */\n\tngOnDestroy() {\n\t\tthis._originalText.complete();\n\t\tthis._sourceText.complete();\n\t\tthis._suspectText.complete();\n\t\tthis._originalHtml.complete();\n\t\tthis._sourceHtml.complete();\n\t\tthis._suspectHtml.complete();\n\t\tthis._jump.complete();\n\t\tthis._textMatchClick.complete();\n\t\tthis._htmlMatchClick.complete();\n\t\tthis._jump.complete();\n\t\tthis._clear.complete();\n\t}\n}\n","import { Component, EventEmitter, Input, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { IPaginateData, PageEvent } from './models/cr-paginator.models';\n\n/**\n * Class representing a new design for the Copyleaks Paginator.\n */\n@Component({\n\tselector: 'cr-paginator',\n\ttemplateUrl: './cr-paginator.component.html',\n\tstyleUrls: ['./cr-paginator.component.scss'],\n\tstandalone: false,\n})\nexport class CrPaginatorComponent implements OnInit {\n\t/***\n\t * The current selected page size\n\t * @Input\n\t */\n\t@Input() numberOfPages: number = 0;\n\n\t/***\n\t * The current page index\n\t * @Input\n\t */\n\t@Input() pageIndex: number = 1;\n\n\t/**\n\t * Event that fires when:\n\t * 1) A new page size is selected\n\t * 2) Navigation to the next or previous page\n\t * @Output\n\t */\n\t@Output() readonly page: EventEmitter<PageEvent> = new EventEmitter<PageEvent>();\n\n\toffSet: number = 0; // how many entities have been loaded\n\tshowPageSizeOptions = true; // flag for showing the page size options\n\n\tconstructor() {}\n\n\tngOnInit() {}\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif ('pageIndex' in changes || 'numberOfPages' in changes) {\n\t\t\tthis.pageIndex = this.pageIndex > this.numberOfPages ? 1 : this.pageIndex;\n\t\t}\n\t}\n\n\t/**\n\t * Function that is called when 'previous page' button is clicked\n\t * sends an event to the upper component that the previous page called\n\t * @param dataOffset the total number of data has been loaded\n\t */\n\tprevious() {\n\t\tconst preIndex = this.pageIndex;\n\t\tthis.pageIndex--;\n\t\tthis._emitPageEvent(preIndex);\n\t}\n\n\t/**\n\t * Function that is called when 'next page' button is clicked\n\t * sends an event to the upper component that the next page called\n\t */\n\tnext() {\n\t\tconst preIndex = this.pageIndex;\n\t\tthis.pageIndex++;\n\t\tthis._emitPageEvent(preIndex);\n\t}\n\n\t/**\n\t * Send an event to the upper component which contains data about the page size change or the current selected page\n\t * @param preIndex the previous page index\n\t */\n\tprivate _emitPageEvent(preIndex: number) {\n\t\tthis.page.emit({\n\t\t\tpreIndex: preIndex,\n\t\t\tpageIndex: this.pageIndex,\n\t\t} as IPaginateData);\n\t}\n}\n","<div class=\"paginator-top-container\">\n\t<div class=\"paginator-container\">\n\t\t<div *ngIf=\"numberOfPages && pageIndex\" class=\"items-per-page\">\n\t\t\t<div i18n>Page {{ pageIndex }} of {{ numberOfPages }}</div>\n\t\t</div>\n\n\t\t<div class=\"buttons-container\" fxLayout=\"row\" fxLayoutAlign=\"center center\">\n\t\t\t<button\n\t\t\t\tclass=\"prev-page-button\"\n\t\t\t\tmat-icon-button\n\t\t\t\t(click)=\"previous()\"\n\t\t\t\t[disabled]=\"pageIndex === 1\"\n\t\t\t\taria-label=\"left\"\n\t\t\t\ti18n-aria-label\n\t\t\t\tmatTooltip=\"Go to previous page\"\n\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\ti18n-matTooltip>\n\t\t\t\t<mat-icon fontSet=\"material-icons-round\">chevron_left</mat-icon>\n\t\t\t</button>\n\t\t\t<button\n\t\t\t\tclass=\"next-page-button\"\n\t\t\t\tmat-icon-button\n\t\t\t\t(click)=\"next()\"\n\t\t\t\t[disabled]=\"pageIndex >= numberOfPages || !numberOfPages\"\n\t\t\t\taria-label=\"right\"\n\t\t\t\ti18n-aria-label\n\t\t\t\tmatTooltip=\"Go to next page\"\n\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\ti18n-matTooltip>\n\t\t\t\t<mat-icon fontSet=\"material-icons-round\">chevron_right</mat-icon>\n\t\t\t</button>\n\t\t</div>\n\t</div>\n</div>\n","import { Component, HostListener, OnInit } from '@angular/core';\n\n@Component({\n\tselector: 'cr-powered-by',\n\ttemplateUrl: './cr-powered-by.component.html',\n\tstyleUrls: ['./cr-powered-by.component.scss'],\n\tstandalone: false,\n})\nexport class CrPoweredByComponent implements OnInit {\n\t@HostListener('click', ['$event'])\n\thandleClick() {\n\t\twindow.open('https://copyleaks.com', '_blank');\n\t}\n\n\tconstructor() {}\n\n\tngOnInit(): void {}\n}\n","<a\n\thref=\"https://copyleaks.com\"\n\tclass=\"powered-by-container\"\n\ttitle=\"Powered By Copyleaks\"\n\ttarget=\"_blank\"\n\ttabindex=\"0\"\n\taria-label=\"Powered By Copyleaks\">\n\t<div fxLayout=\"row wrap\" fxLayoutAlign=\"start center\" fxLayoutGap=\"2px\">\n\t\t<div class=\"text-container\">\n\t\t\t<span web-report-title-font i18n>Powered by</span>\n\t\t</div>\n\t\t<div class=\"powered-by\">\n\t\t\t<svg\n\t\t\t\twidth=\"100%\"\n\t\t\t\theight=\"100%\"\n\t\t\t\tviewBox=\"0 0 88 23\"\n\t\t\t\talt=\"Powered by Copyleaks\"\n\t\t\t\taria-label=\"Copyleaks\"\n\t\t\t\ti18n-aria-label\n\t\t\t\ti18n-alt>\n\t\t\t\t<use xlink:href=\"#logo\"></use>\n\t\t\t</svg>\n\t\t</div>\n\t</div>\n</a>\n<svg width=\"0\" height=\"0\" style=\"display: none\">\n\t<symbol version=\"1.1\" id=\"logo\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<path\n\t\t\tid=\"Vector\"\n\t\t\td=\"M8.7147 8.3244C10.1956 6.73271 13.2212 6.76454 14.6384 8.37215L16.3104 6.70087C15.0047 5.45935 13.5078 4.85451 11.581 4.87042C8.93764 4.85451 6.53311 6.43029 5.54582 8.84966C3.77826 13.195 6.83567 17.9542 11.5969 17.9382C13.4601 17.9542 15.0684 17.3016 16.3741 16.0919L14.7021 14.4206C13.89 15.2801 12.8549 15.694 11.581 15.678C9.92492 15.7099 8.41214 14.7389 7.8548 13.1791C7.31339 11.6192 7.5204 9.55001 8.69878 8.34032L8.7147 8.3244Z\"\n\t\t\tfill=\"#0B163E\" />\n\t\t<path\n\t\t\tid=\"Vector_2\"\n\t\t\td=\"M36.4532 11.0784C35.3704 8.86596 32.106 8.03827 30.2906 9.80506V9.02512H27.918V21.4085H30.2588V16.9995C30.9117 17.6362 31.7875 17.9386 32.7429 17.9386C36.3099 17.9386 37.9182 14.0071 36.4373 11.0784H36.4532ZM34.2716 14.612C33.8895 15.3282 33.2366 15.7739 32.3608 15.758C29.9722 15.8057 29.383 12.4791 31.2302 11.3331C31.883 10.9352 32.8863 10.967 33.5232 11.3649C34.5583 12.0016 34.8131 13.5774 34.2716 14.612Z\"\n\t\t\tfill=\"#0B163E\" />\n\t\t<path\n\t\t\tid=\"Vector_3\"\n\t\t\td=\"M44.0176 9.0249L41.9315 14.564L39.9569 9.0249H37.3613L40.6735 16.9993L38.5716 21.4242H41.1194C42.1385 19.0844 45.5303 11.4443 46.6132 9.0249H44.0176Z\"\n\t\t\tfill=\"#0B163E\" />\n\t\t<path id=\"Vector_4\" d=\"M47.5527 17.7633V4.71143H49.9254V17.7633H47.5527Z\" fill=\"#0B163E\" />\n\t\t<path\n\t\t\tid=\"Vector_5\"\n\t\t\td=\"M59.7661 10.9507C58.2055 8.00605 53.6035 8.22889 52.043 11.0621C51.6449 11.7465 51.4378 12.5105 51.4378 13.386C51.406 16.0441 53.5876 17.986 56.1991 17.9541C57.5686 17.9541 58.8425 17.4926 59.7502 16.442L58.3329 15.0254C57.5367 16.0123 55.9443 16.1555 54.8774 15.6303C54.3679 15.3279 53.9538 14.8185 53.8424 14.2296H60.212C60.4668 13.1154 60.2757 11.858 59.7661 10.9507ZM54.8137 11.1258C55.8169 10.5687 57.3616 10.7438 57.8711 11.8898C57.9667 12.049 58.0145 12.24 58.0622 12.4469H53.8424C53.9698 11.9057 54.336 11.4123 54.8137 11.1258Z\"\n\t\t\tfill=\"#0B163E\" />\n\t\t<path\n\t\t\tid=\"Vector_6\"\n\t\t\td=\"M67.9519 9.02513V9.85281C66.8054 8.61129 64.6557 8.5317 63.2862 9.42305C59.7511 11.6514 60.9772 17.8909 65.42 17.9068C66.3914 17.9068 67.2831 17.6044 67.9678 16.9199V17.7317H70.3564V9.02513H67.9519ZM67.4742 15.0736C67.0761 15.5192 66.5188 15.7421 65.8659 15.7421C64.5601 15.758 63.5728 14.6438 63.6365 13.3386C63.6047 11.5082 65.4519 10.4258 67.0124 11.3331C68.1908 12.0812 68.4296 14.0867 67.4742 15.0736Z\"\n\t\t\tfill=\"#0B163E\" />\n\t\t<path\n\t\t\tid=\"Vector_7\"\n\t\t\td=\"M80.834 17.7633L77.2351 13.1952L80.6747 9.02492H77.9358L74.7669 13.036V4.71143H72.4102V17.7633H74.7669V13.5135L77.9517 17.7633H80.834Z\"\n\t\t\tfill=\"#0B163E\" />\n\t\t<path\n\t\t\tid=\"Vector_8\"\n\t\t\td=\"M84.4657 17.9542C83.0325 17.9542 81.5834 17.413 80.6758 16.3147L82.1089 14.8822C82.6981 15.5826 83.5103 15.9009 84.4338 15.9009C84.816 15.9009 85.1186 15.8532 85.3097 15.7258C85.7396 15.503 85.6918 14.9141 85.2937 14.7071C84.1154 14.0705 82.3319 14.15 81.5198 12.8608C81.058 12.1604 81.0898 10.8393 81.6312 10.1071C81.9179 9.70921 82.3 9.35903 82.8096 9.15211C84.4657 8.46769 86.9021 8.78603 88.0008 10.3141L86.5677 11.7625C85.9466 10.9666 84.6568 10.6006 83.7969 10.9985C83.4306 11.2054 83.4625 11.7625 83.8287 11.9535C84.0198 12.0649 84.3065 12.1604 84.6409 12.2718C85.3097 12.4788 86.1218 12.6698 86.7428 13.0677C87.4913 13.5452 87.8894 14.2137 87.8734 15.1846C87.8734 17.0788 86.3129 17.9701 84.4657 17.9542Z\"\n\t\t\tfill=\"#0B163E\" />\n\t\t<path\n\t\t\tid=\"Vector_9\"\n\t\t\td=\"M17.6638 11.0624C16.8517 12.3995 16.8358 14.3572 17.6957 15.6943C17.8868 16.0285 18.1416 16.3309 18.3963 16.6015C18.4919 16.6652 18.6033 16.7925 18.7467 16.888C19.2244 16.2354 19.6066 15.5351 19.9091 14.7552C19.6543 14.3572 19.5906 14.1185 19.5429 13.6728C19.511 13.4181 19.511 13.1635 19.5429 12.9088C19.5747 12.6064 19.6703 12.3676 19.8136 12.1289C20.7849 10.3939 23.3805 10.7759 23.8901 12.6382C23.9379 12.8133 23.9538 12.9884 23.9538 13.1635C23.9857 13.7842 23.9538 14.0866 23.6831 14.6119C23.492 14.9621 23.2054 15.2486 22.871 15.4237C22.6799 15.5669 22.3614 15.6306 22.1544 15.7102C21.8518 16.4901 21.4856 17.2223 21.0238 17.8908H21.0556C23.9857 18.2091 26.4061 16.1559 26.3902 13.2112C26.3583 8.54755 19.9887 7.17869 17.6479 11.0465L17.6638 11.0624Z\"\n\t\t\tfill=\"#0B163E\" />\n\t\t<path\n\t\t\tid=\"Vector_10\"\n\t\t\td=\"M22.6479 11.7785C22.0269 11.4125 21.0077 11.4761 20.5141 12.0332C20.2434 16.7924 16.2942 20.5806 11.4533 20.5806C6.61244 20.5806 2.37666 16.5218 2.37666 11.508C2.37666 6.49412 6.43728 2.43529 11.4533 2.43529C15.4184 2.43529 18.8102 5.01384 20.0364 8.57924C20.5619 8.40415 21.1351 8.30865 21.7243 8.30865C22.0109 8.30865 22.2657 8.32457 22.5364 8.3564C21.167 3.53356 16.7083 0 11.4533 0C-3.81778 0.604844 -3.81778 22.3952 11.4533 23C17.807 23 22.6798 18.1135 22.9345 11.9855C22.839 11.89 22.7435 11.8263 22.632 11.7626L22.6479 11.7785Z\"\n\t\t\tfill=\"#3F9AF5\" />\n\t</symbol>\n</svg>\n","import { Component, OnInit } from '@angular/core';\nimport { trigger, state, transition, animate, style } from '@angular/animations';\nimport { IWritingFeedbackCorrectionViewModel } from '../../models/report-data.models';\nimport { ReportViewService } from '../../services/report-view.service';\nimport { untilDestroy } from '../../utils/until-destroy';\n\n@Component({\n\tselector: 'cr-report-match-tooltip-content',\n\ttemplateUrl: './cr-report-match-tooltip-content.component.html',\n\tstyleUrls: ['./cr-report-match-tooltip-content.component.scss'],\n\tanimations: [trigger('fade', [state('void', style({ opacity: 0 })), transition('void <=> *', animate(300))])],\n\tstandalone: false,\n})\nexport class CrReportMatchTooltipContentComponent implements OnInit {\n\tcorrectionData: IWritingFeedbackCorrectionViewModel;\n\tdocDirection: 'ltr' | 'rtl';\n\n\tconstructor(private _reportViewSvc: ReportViewService) {}\n\n\tngOnInit(): void {\n\t\tif (this._reportViewSvc)\n\t\t\tthis._reportViewSvc.documentDirection$.pipe(untilDestroy(this)).subscribe(dir => {\n\t\t\t\tthis.docDirection = dir;\n\t\t\t});\n\t}\n\n\tngOnDestroy(): void {}\n}\n","<div @fade [dir]=\"docDirection\" class=\"animation-container\">\n\t<span\n\t\t*ngIf=\"correctionData?.wrongText != correctionData?.correctionText\"\n\t\tclass=\"wrong-text\"\n\t\t[innerHtml]=\"correctionData.wrongText\"></span>\n\n\t<ng-container *ngIf=\"correctionData?.wrongText != correctionData?.correctionText && correctionData.correctionText\">\n\t\t<svg class=\"arrow-svg\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\n\t\t\t<g clip-path=\"url(#clip0_8196_107591)\">\n\t\t\t\t<path\n\t\t\t\t\td=\"M9.52665 4.30633C9.26665 4.56633 9.26665 4.98633 9.52665 5.24633L12.1133 7.83299H1.99998C1.63331 7.83299 1.33331 8.133 1.33331 8.49966C1.33331 8.86633 1.63331 9.16633 1.99998 9.16633H12.12L9.53331 11.753C9.27331 12.013 9.27331 12.433 9.53331 12.693C9.79331 12.953 10.2133 12.953 10.4733 12.693L14.2 8.96633C14.46 8.70633 14.46 8.28633 14.2 8.02633L10.4666 4.30633C10.2133 4.04633 9.78665 4.04633 9.52665 4.30633Z\"\n\t\t\t\t\tfill=\"#A0A9BF\" />\n\t\t\t</g>\n\t\t\t<defs>\n\t\t\t\t<clipPath id=\"clip0_8196_107591\">\n\t\t\t\t\t<rect width=\"16\" height=\"16\" fill=\"white\" transform=\"translate(0 0.5)\" />\n\t\t\t\t</clipPath>\n\t\t\t</defs>\n\t\t</svg>\n\t</ng-container>\n\n\t<span\n\t\t*ngIf=\"correctionData.correctionText\"\n\t\tclass=\"correction-text\"\n\t\t[innerHtml]=\"correctionData.correctionText\"></span>\n</div>\n","import { Overlay, OverlayPositionBuilder, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ComponentRef, Directive, ElementRef, HostListener, Input } from '@angular/core';\nimport { CrReportMatchTooltipContentComponent } from './cr-report-match-tooltip-content.component';\nimport { MatchType } from '../../models/report-matches.models';\n\n@Directive({\n\tselector: '[crReportMatchTooltip]',\n\tstandalone: false,\n})\nexport class CrReportMatchTooltipDirective {\n\t/**\n\t * Data to be passed to the tooltip component.\n\t */\n\t@Input(`crReportMatchTooltip`) data: any;\n\n\t/**\n\t * Type of the report match.\n\t */\n\t@Input() crReportMatchTooltipType: MatchType;\n\n\tprivate _overlayRef: OverlayRef;\n\n\tconstructor(\n\t\tprivate _overlay: Overlay,\n\t\tprivate _overlayPositionBuilder: OverlayPositionBuilder,\n\t\tprivate _elementRef: ElementRef\n\t) {}\n\n\t/**\n\t * Initializes the directive.\n\t */\n\tngOnInit() {\n\t\tif (!this.data) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst positionStrategy = this._overlayPositionBuilder.flexibleConnectedTo(this._elementRef).withPositions([\n\t\t\t{\n\t\t\t\toriginX: 'center',\n\t\t\t\toriginY: 'top',\n\t\t\t\toverlayX: 'center',\n\t\t\t\toverlayY: 'bottom',\n\t\t\t\toffsetY: 1,\n\t\t\t},\n\t\t]);\n\n\t\tthis._overlayRef = this._overlay.create({ positionStrategy });\n\t}\n\n\t/**\n\t * Event listener for mouseenter event.\n\t * Shows the tooltip when the mouse enters the element.\n\t */\n\t@HostListener('mouseenter')\n\tshow() {\n\t\t// Attach the component if it has not already attached to the overlay\n\t\tif (this._overlayRef && !this._overlayRef.hasAttached()) {\n\t\t\tconst tooltipRef: ComponentRef<CrReportMatchTooltipContentComponent> = this._overlayRef.attach(\n\t\t\t\tnew ComponentPortal(CrReportMatchTooltipContentComponent)\n\t\t\t);\n\n\t\t\tswitch (this.crReportMatchTooltipType) {\n\t\t\t\tcase MatchType.writingFeedback:\n\t\t\t\t\ttooltipRef.instance.correctionData = this.data;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Event listener for mouseleave event.\n\t * Hides the tooltip when the mouse leaves the element.\n\t */\n\t@HostListener('mouseleave')\n\thide() {\n\t\tthis.closeToolTip();\n\t}\n\n\t/**\n\t * Cleans up the directive when it is destroyed.\n\t */\n\tngOnDestroy() {\n\t\tthis.closeToolTip();\n\t}\n\n\t/**\n\t * Closes the tooltip by detaching it from the overlay.\n\t */\n\tprivate closeToolTip() {\n\t\tif (this._overlayRef) {\n\t\t\tthis._overlayRef.detach();\n\t\t}\n\t}\n}\n","import { AfterContentInit, Component, ElementRef, HostBinding, HostListener, Input, Renderer2 } from '@angular/core';\nimport { Match, MatchType, ReportOrigin } from '../../../models/report-matches.models';\nimport scrollIntoView from 'scroll-into-view-if-needed';\nimport { ReportMatchHighlightService } from '../../../services/report-match-highlight.service';\nimport { ISelectExplainableAIResult } from '../../../models/report-ai-results.models';\nimport { ReportViewService } from '../../../services/report-view.service';\n//import { ISelectExplainableAIResult } from '../../../models/report-ai-results.models';\n\n@Component({\n\tselector: 'span[cr-match]',\n\tstyleUrls: ['./cr-text-match.component.scss'],\n\ttemplate: '<ng-content></ng-content>',\n\tstandalone: false,\n})\nexport class CrTextMatchComponent implements AfterContentInit {\n\tconstructor(\n\t\tpublic element: ElementRef<HTMLElement>,\n\t\tprivate renderer: Renderer2,\n\t\tprivate _highlightService: ReportMatchHighlightService,\n\t\tprivate _reportViewService: ReportViewService\n\t) {}\n\n\t// tslint:disable-next-line:no-input-rename\n\t@Input('cr-match')\n\tpublic match: Match;\n\n\t@Input()\n\tpublic origin: ReportOrigin;\n\n\tprivate _focused = false;\n\t/** focused flag, if set to `true` the element will be highlighted */\n\t@HostBinding('class.cr-highlight')\n\tpublic get focused() {\n\t\treturn this._focused;\n\t}\n\tpublic set focused(value: boolean) {\n\t\tthis._focused = value;\n\t\tif (value) {\n\t\t\tscrollIntoView(this.element.nativeElement, {\n\t\t\t\tbehavior: 'smooth',\n\t\t\t\tblock: 'center',\n\t\t\t\tskipOverflowHiddenElements: true,\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * emits the element through the match click event\n\t */\n\t@HostListener('click', ['$event'])\n\tpublic click(event) {\n\t\tif (this.match.type === MatchType.aiText) return;\n\n\t\tif (this._reportViewService.reportViewMode.isHtmlView && this.origin === 'original') {\n\t\t\tthis._reportViewService.reportViewMode$.next({ ...this._reportViewService.reportViewMode, isHtmlView: false });\n\t\t}\n\t\t// clear window selection\n\t\tdocument.getSelection()?.removeAllRanges();\n\n\t\tif (this.match.type === MatchType.aiExplain) {\n\t\t\tconst selectAIMachText = !this._focused;\n\t\t\tthis._highlightService.aiInsightsShowResult$.next({\n\t\t\t\tresultRange: {\n\t\t\t\t\tstart: this.match.start,\n\t\t\t\t\tend: this.match.end,\n\t\t\t\t},\n\t\t\t\tisSelected: selectAIMachText,\n\t\t\t} as ISelectExplainableAIResult);\n\t\t} else {\n\t\t\t// If the match isn't AI, then trigger the match click event\n\t\t\t// also update the selection type according to the user click (with or without the shift for multi selection)\n\t\t\tthis._highlightService.textMatchClicked({\n\t\t\t\telem: this,\n\t\t\t\tbroadcast: true,\n\t\t\t\torigin: this.origin,\n\t\t\t\tmultiSelect: event && event.shiftKey,\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Life-cycle method\n\t * Add a class to the native element that represents the match type\n\t */\n\tngAfterContentInit() {\n\t\tif (this.match.type === MatchType.aiExplain) {\n\t\t\tthis.renderer.addClass(this.element.nativeElement, `cr-m-${MatchType.aiExplain}-${this.match.proportionType}`);\n\t\t} else {\n\t\t\tthis.renderer.addClass(this.element.nativeElement, `cr-m-${this.match.type}`);\n\t\t}\n\t}\n}\n","import { AfterContentInit, ContentChildren, Directive, EventEmitter, Input, OnDestroy, QueryList } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { distinctUntilChanged, filter, take, takeUntil, withLatestFrom } from 'rxjs/operators';\nimport { CrTextMatchComponent } from '../components/core/cr-text-match/cr-text-match.component';\nimport { Range, SlicedMatch, TextMatchHighlightEvent } from '../models/report-matches.models';\nimport { ReportMatchHighlightService } from '../services/report-match-highlight.service';\nimport { ReportViewService } from '../services/report-view.service';\nimport * as helpers from '../utils/highlight-helpers';\nimport { untilDestroy } from '../utils/until-destroy';\nimport { IWritingFeedbackCorrectionViewModel } from '../models/report-data.models';\nimport { PageEvent } from '../components/core/cr-paginator/models/cr-paginator.models';\n\n@Directive({\n\tselector: '[crOriginalTextHelper]',\n\tstandalone: false,\n})\nexport class OriginalTextHelperDirective implements AfterContentInit, OnDestroy {\n\t@Input() public host: {\n\t\tcontentTextMatches: any;\n\t\tcurrentPage: number;\n\t\tcustomViewMatchesData: {\n\t\t\tid: string;\n\t\t\tparentId: string;\n\t\t\tstart: number;\n\t\t\tend: number;\n\t\t\tpageNumber: number;\n\t\t\tsubmitterEmail: string;\n\t\t\tisRead: boolean;\n\t\t}[][];\n\t\tcustomViewMatcheClassName;\n\t\tonTextMatchSelectionEvent: EventEmitter<TextMatchHighlightEvent | any>;\n\t\tonPaginationEvent(event: PageEvent): void;\n\t};\n\tprivate unsubscribe$ = new Subject();\n\n\tprivate lastSelectedOriginalTextMatch: TextMatchHighlightEvent;\n\n\tconstructor(private _highlightService: ReportMatchHighlightService, private _viewService: ReportViewService) {}\n\n\t@ContentChildren(CrTextMatchComponent)\n\tprivate children: QueryList<CrTextMatchComponent>;\n\tprivate current: CrTextMatchComponent | Element | null;\n\n\t/**\n\t * Handles the jump logic\n\t * @param forward the direction of the jump\n\t */\n\thandleJump(forward: boolean) {\n\t\tif (this.host.customViewMatchesData) {\n\t\t\tlet customMatches = document.querySelectorAll('.' + this.host.customViewMatcheClassName);\n\t\t\tif (customMatches.length === 0) return;\n\t\t\tconst canJump = forward\n\t\t\t\t? this.current !== customMatches[customMatches.length - 1]\n\t\t\t\t: this.current !== customMatches[0];\n\n\t\t\tif (canJump) {\n\t\t\t\tconst components = Array.from(customMatches);\n\t\t\t\tconst nextIndex = this.current ? components.indexOf(this.current as Element) + (forward ? 1 : -1) : 0;\n\t\t\t\tconst selectedElementId = (components[nextIndex] as HTMLElement)?.dataset?.['id'];\n\t\t\t\tthis.selecteCustomElementById(selectedElementId, components, nextIndex);\n\t\t\t} else {\n\t\t\t\tlet nextPage = null;\n\t\t\t\tif (forward) {\n\t\t\t\t\tfor (let i = this.host.currentPage; i < this.host.customViewMatchesData.length; i++) {\n\t\t\t\t\t\tif (this.host.customViewMatchesData[i].length > 0) {\n\t\t\t\t\t\t\tnextPage = i + 1;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfor (let i = this.host.currentPage - 2; i >= 0; i--) {\n\t\t\t\t\t\tif (this.host.customViewMatchesData[i].length > 0) {\n\t\t\t\t\t\t\tnextPage = i + 1;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (nextPage === null) nextPage = this.host.currentPage;\n\n\t\t\t\tif (this.host.currentPage !== nextPage) {\n\t\t\t\t\tthis.host.currentPage = nextPage;\n\t\t\t\t\tthis.host.onPaginationEvent({\n\t\t\t\t\t\tpageIndex: nextPage,\n\t\t\t\t\t\tpreIndex: nextPage,\n\t\t\t\t\t});\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tcustomMatches = document.querySelectorAll('.' + this.host.customViewMatcheClassName);\n\t\t\t\t\t\tconst components = Array.from(customMatches);\n\t\t\t\t\t\tconst nextIndex = forward ? 0 : customMatches.length - 1;\n\t\t\t\t\t\tconst selectedElementId = (components[nextIndex] as HTMLElement)?.dataset?.['id'];\n\t\t\t\t\t\tthis.selecteCustomElementById(selectedElementId, components, nextIndex);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (this.canJumpInCurrentPage(forward)) {\n\t\t\t\tconst components = this.children.toArray();\n\t\t\t\tconst nextIndex = this.current\n\t\t\t\t\t? components.indexOf(this.current as CrTextMatchComponent) + (forward ? 1 : -1)\n\t\t\t\t\t: 0;\n\t\t\t\tthis._highlightService.textMatchClicked({ elem: components[nextIndex], broadcast: true, origin: 'original' });\n\t\t\t} else {\n\t\t\t\tconst page = (forward ? helpers.findNextPageWithMatch : helpers.findPrevPageWithMatch)(\n\t\t\t\t\tthis.host.contentTextMatches,\n\t\t\t\t\tthis.host.currentPage\n\t\t\t\t);\n\t\t\t\tif (this.host.currentPage !== page) {\n\t\t\t\t\tthis.children.changes.pipe(take(1)).subscribe(() => {\n\t\t\t\t\t\tconst comp = forward ? this.children.first : this.children.last;\n\t\t\t\t\t\tthis._highlightService.textMatchClicked({ elem: comp, broadcast: true, origin: 'original' });\n\t\t\t\t\t});\n\t\t\t\t\tthis.host.currentPage = page;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tselecteCustomElementById(selectedElementId: string, components: Element[], nextIndex: number) {\n\t\tconst contentContainer = document.querySelector('.content-container')?.querySelector('.content-container');\n\t\tif (!contentContainer) return;\n\n\t\tconst rect = components[nextIndex].getBoundingClientRect();\n\t\tlet scrollY = contentContainer.scrollTop;\n\n\t\tconst top = rect.top + scrollY;\n\n\t\tconst selectedAnnotation = this.host.customViewMatchesData[this.host.currentPage - 1].find(\n\t\t\tcvm => cvm.id === selectedElementId\n\t\t);\n\t\tconst annotationEvent = {\n\t\t\ttype: 'annotation-click',\n\t\t\tid: selectedAnnotation.id,\n\t\t\tstart: selectedAnnotation.start,\n\t\t\tend: selectedAnnotation.end,\n\t\t\toffsetTop: top + 'px',\n\t\t\tscrollViewOffsetTop: rect.top + 'px',\n\t\t};\n\t\tthis.host.onTextMatchSelectionEvent.emit(annotationEvent);\n\n\t\tthis.current = components[nextIndex];\n\t\tcomponents.forEach(c => {\n\t\t\tc.classList.remove('selected');\n\t\t});\n\t\t(this.current as HTMLElement).scrollIntoView({ behavior: 'smooth', block: 'center' });\n\t\t(this.current as HTMLElement).classList.add('selected');\n\t}\n\n\t/**\n\t * Handles the jump logic\n\t * @param forward the direction of the jump\n\t */\n\thandleCorrectionSelect(correctionSelect: IWritingFeedbackCorrectionViewModel) {\n\t\tconst foundCorrectionInfo = this.findMatchWithStartAndEnd(\n\t\t\tthis.host.contentTextMatches as SlicedMatch[][],\n\t\t\tcorrectionSelect.start,\n\t\t\tcorrectionSelect.end\n\t\t);\n\t\tif (foundCorrectionInfo.page === -1) return;\n\n\t\tsetTimeout(() => {\n\t\t\tif (this.host.currentPage === foundCorrectionInfo.page + 1) {\n\t\t\t\tconst components = this.children.toArray();\n\t\t\t\tcomponents?.forEach(component => {\n\t\t\t\t\tif (component) component.focused = false;\n\t\t\t\t});\n\t\t\t\tconst comp = components.find(\n\t\t\t\t\tcomp => comp?.match?.start === correctionSelect.start && comp?.match?.end === correctionSelect.end\n\t\t\t\t);\n\t\t\t\tthis._highlightService.textMatchClicked({\n\t\t\t\t\telem: comp,\n\t\t\t\t\tbroadcast: false,\n\t\t\t\t\torigin: 'original',\n\t\t\t\t\tshowResults: false,\n\t\t\t\t\tmultiSelect: false,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.host.currentPage = foundCorrectionInfo.page + 1;\n\t\t\t\tthis.children.changes.pipe(take(1)).subscribe(() => {\n\t\t\t\t\tconst components = this.children.toArray();\n\t\t\t\t\tcomponents?.forEach(component => {\n\t\t\t\t\t\tif (component) component.focused = false;\n\t\t\t\t\t});\n\t\t\t\t\tconst comp = components.find(\n\t\t\t\t\t\tcomp => comp?.match?.start === correctionSelect.start && comp?.match?.end === correctionSelect.end\n\t\t\t\t\t);\n\t\t\t\t\tthis._highlightService.textMatchClicked({\n\t\t\t\t\t\telem: comp,\n\t\t\t\t\t\tbroadcast: false,\n\t\t\t\t\t\torigin: 'original',\n\t\t\t\t\t\tshowResults: false,\n\t\t\t\t\t\tmultiSelect: false,\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * select ai match resuli\n\t * @param match\n\t */\n\tselectAIInsights(match: Range) {\n\t\tconst foundCorrectionInfo = this.findMatchWithStartAndEnd(\n\t\t\tthis.host.contentTextMatches as SlicedMatch[][],\n\t\t\tmatch.start,\n\t\t\tmatch.end\n\t\t);\n\t\tif (foundCorrectionInfo.page === -1) return;\n\t\tsetTimeout(() => {\n\t\t\tif (this.host.currentPage === foundCorrectionInfo.page + 1) {\n\t\t\t\tconst components = this.children.toArray();\n\t\t\t\tconst comp = components.find(comp => comp?.match?.start === match.start && comp?.match?.end === match.end);\n\t\t\t\tthis._highlightService.textMatchClicked({\n\t\t\t\t\telem: comp,\n\t\t\t\t\tbroadcast: false,\n\t\t\t\t\torigin: 'original',\n\t\t\t\t\tshowResults: false,\n\t\t\t\t\tmultiSelect: false,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.host.currentPage = foundCorrectionInfo.page + 1;\n\t\t\t\tthis.children.changes.pipe(take(1)).subscribe(() => {\n\t\t\t\t\tconst components = this.children.toArray();\n\t\t\t\t\tconst comp = components.find(comp => comp?.match?.start === match.start && comp?.match?.end === match.end);\n\t\t\t\t\tthis._highlightService.textMatchClicked({\n\t\t\t\t\t\telem: comp,\n\t\t\t\t\t\tbroadcast: false,\n\t\t\t\t\t\torigin: 'original',\n\t\t\t\t\t\tshowResults: false,\n\t\t\t\t\t\tmultiSelect: false,\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * remove select ai match result\n\t * @param match\n\t */\n\tremoveSelectAIInsights(match: Range) {\n\t\tconst foundCorrectionInfo = this.findMatchWithStartAndEnd(\n\t\t\tthis.host.contentTextMatches as SlicedMatch[][],\n\t\t\tmatch.start,\n\t\t\tmatch.end\n\t\t);\n\t\tif (foundCorrectionInfo.page === -1) return;\n\t\tsetTimeout(() => {\n\t\t\tif (this.host.currentPage === foundCorrectionInfo.page + 1) {\n\t\t\t\tconst components = this.children.toArray();\n\t\t\t\tconst comp = components.find(comp => comp?.match?.start === match.start && comp?.match?.end === match.end);\n\t\t\t\tif (comp) comp.focused = false;\n\t\t\t} else {\n\t\t\t\tthis.children.changes.pipe(take(1)).subscribe(() => {\n\t\t\t\t\tconst components = this.children.toArray();\n\t\t\t\t\tconst comp = components.find(comp => comp?.match?.start === match.start && comp?.match?.end === match.end);\n\t\t\t\t\tif (comp) comp.focused = false;\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\t/**\n\t * Checks whether it is possible to jump forward/backward in the current page\n\t * @param forward the direction of the jump\n\t */\n\tcanJumpInCurrentPage(forward: boolean) {\n\t\tif (this.current) {\n\t\t\treturn forward ? this.current !== this.children.last : this.current !== this.children.first;\n\t\t} else {\n\t\t\treturn this.children?.length > 0;\n\t\t}\n\t}\n\n\tfindMatchWithStartAndEnd(\n\t\tcontentTextMatches: SlicedMatch[][],\n\t\tstart: number,\n\t\tend: number\n\t): { match: SlicedMatch | null; page: number; index: number } {\n\t\tif (!contentTextMatches || contentTextMatches.length === 0) return { match: null, page: -1, index: -1 };\n\t\tfor (let page = 0; page < contentTextMatches.length; page++) {\n\t\t\tfor (let index = 0; index < contentTextMatches[page].length; index++) {\n\t\t\t\tconst slicedMatch = contentTextMatches[page][index];\n\t\t\t\tif (slicedMatch.match.start === start && slicedMatch.match.end === end) {\n\t\t\t\t\treturn { match: slicedMatch, page, index };\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// If no match is found\n\t\treturn { match: null, page: -1, index: -1 };\n\t}\n\n\t/**\n\t * Life-cycle method\n\t * - subscribe to text jump clicks\n\t * - subscribe to original text selected match state\n\t */\n\tngAfterContentInit() {\n\t\tconst { jump$, originalText$, textMatchClick$ } = this._highlightService;\n\t\toriginalText$.pipe(untilDestroy(this), takeUntil(this.unsubscribe$)).subscribe(value => (this.current = value));\n\n\t\tconst { reportViewMode$ } = this._viewService;\n\n\t\tjump$\n\t\t\t.pipe(\n\t\t\t\twithLatestFrom(reportViewMode$),\n\t\t\t\tfilter(\n\t\t\t\t\t([, viewData]) =>\n\t\t\t\t\t\t(viewData.viewMode === 'one-to-many' ||\n\t\t\t\t\t\t\tviewData.viewMode === 'only-ai' ||\n\t\t\t\t\t\t\tviewData.viewMode === 'writing-feedback') &&\n\t\t\t\t\t\t!viewData.isHtmlView\n\t\t\t\t),\n\t\t\t\tuntilDestroy(this),\n\t\t\t\ttakeUntil(this.unsubscribe$)\n\t\t\t)\n\t\t\t.subscribe(([forward]) => this.handleJump(forward));\n\n\t\ttextMatchClick$\n\t\t\t.pipe(\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\twithLatestFrom(reportViewMode$),\n\t\t\t\tfilter(\n\t\t\t\t\t([, viewData]) =>\n\t\t\t\t\t\t(viewData.viewMode === 'one-to-many' ||\n\t\t\t\t\t\t\tviewData.viewMode === 'only-ai' ||\n\t\t\t\t\t\t\tviewData.viewMode === 'writing-feedback') &&\n\t\t\t\t\t\t!viewData.isHtmlView\n\t\t\t\t),\n\t\t\t\tuntilDestroy(this),\n\t\t\t\ttakeUntil(this.unsubscribe$)\n\t\t\t)\n\t\t\t.subscribe(([textMatchClickEvent, ,]) => {\n\t\t\t\tif (\n\t\t\t\t\tthis.lastSelectedOriginalTextMatch === textMatchClickEvent ||\n\t\t\t\t\t(this.lastSelectedOriginalTextMatch &&\n\t\t\t\t\t\tthis.lastSelectedOriginalTextMatch.elem?.match === textMatchClickEvent?.elem?.match)\n\t\t\t\t) {\n\t\t\t\t\tthis.lastSelectedOriginalTextMatch = null;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.lastSelectedOriginalTextMatch = textMatchClickEvent;\n\t\t\t\tif (!textMatchClickEvent) return;\n\n\t\t\t\tconst currentSelectedCorrection = this._highlightService.correctionSelect;\n\t\t\t\tif (\n\t\t\t\t\t!!currentSelectedCorrection &&\n\t\t\t\t\ttextMatchClickEvent?.elem?.match?.start != currentSelectedCorrection.start &&\n\t\t\t\t\ttextMatchClickEvent?.elem?.match?.end != currentSelectedCorrection.end\n\t\t\t\t)\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tconst components = this.children?.toArray();\n\t\t\t\t\t\tcomponents?.forEach(component => {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tcomponent &&\n\t\t\t\t\t\t\t\tcomponent?.match?.start === currentSelectedCorrection.start &&\n\t\t\t\t\t\t\t\tcomponent?.match?.end === currentSelectedCorrection.end\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tcomponent.focused = false;\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t});\n\n\t\treportViewMode$\n\t\t\t.pipe(\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\tfilter(\n\t\t\t\t\tviewData =>\n\t\t\t\t\t\tthis.lastSelectedOriginalTextMatch &&\n\t\t\t\t\t\t(viewData.viewMode === 'one-to-many' ||\n\t\t\t\t\t\t\tviewData.viewMode === 'only-ai' ||\n\t\t\t\t\t\t\tviewData.viewMode === 'writing-feedback') &&\n\t\t\t\t\t\t!viewData.isHtmlView\n\t\t\t\t),\n\t\t\t\tuntilDestroy(this),\n\t\t\t\ttakeUntil(this.unsubscribe$)\n\t\t\t)\n\t\t\t.subscribe(_ => {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tconst start = this.lastSelectedOriginalTextMatch?.elem?.match?.start;\n\t\t\t\t\tconst end = this.lastSelectedOriginalTextMatch?.elem?.match?.end;\n\t\t\t\t\tconst comp = this.children.find(item => item.match.start === start && item.match.end === end);\n\t\t\t\t\tif (!comp) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthis._highlightService.textMatchClicked({ elem: comp, broadcast: false, origin: 'original' });\n\t\t\t\t}, 100);\n\t\t\t});\n\n\t\tthis._highlightService.correctionSelect$\n\t\t\t.pipe(\n\t\t\t\tuntilDestroy(this),\n\t\t\t\twithLatestFrom(reportViewMode$),\n\t\t\t\tfilter(\n\t\t\t\t\t([correctionSelect, viewModeData]) =>\n\t\t\t\t\t\tcorrectionSelect && viewModeData.viewMode === 'writing-feedback' && !viewModeData.isHtmlView\n\t\t\t\t)\n\t\t\t)\n\t\t\t.subscribe(([correctionSelect, _]) => {\n\t\t\t\tthis.handleCorrectionSelect(correctionSelect);\n\t\t\t});\n\n\t\tthis._highlightService.aiInsightsSelect$\n\t\t\t.pipe(\n\t\t\t\tuntilDestroy(this),\n\t\t\t\twithLatestFrom(reportViewMode$),\n\t\t\t\tfilter(\n\t\t\t\t\t([correctionSelect, viewModeData]) =>\n\t\t\t\t\t\tcorrectionSelect &&\n\t\t\t\t\t\t(viewModeData.viewMode === 'one-to-many' || viewModeData.viewMode === 'only-ai') &&\n\t\t\t\t\t\t!viewModeData.isHtmlView\n\t\t\t\t)\n\t\t\t)\n\t\t\t.subscribe(([aiInsightsSelect, _]) => {\n\t\t\t\tif (!aiInsightsSelect) {\n\t\t\t\t\tthis.lastSelectedOriginalTextMatch = null;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (aiInsightsSelect.isSelected) {\n\t\t\t\t\tthis.selectAIInsights(aiInsightsSelect.resultRange);\n\t\t\t\t} else {\n\t\t\t\t\tthis.lastSelectedOriginalTextMatch = null;\n\t\t\t\t\tthis.removeSelectAIInsights(aiInsightsSelect.resultRange);\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis._highlightService.clear$.pipe(untilDestroy(this)).subscribe(() => {\n\t\t\tconst components = this.children?.toArray();\n\t\t\tif (!components) return;\n\t\t\tcomponents.forEach(component => {\n\t\t\t\tif (component) component.focused = false;\n\t\t\t});\n\t\t});\n\n\t\tthis.host.onTextMatchSelectionEvent.subscribe((event: any) => {\n\t\t\tif (event.type === 'annotation-click') {\n\t\t\t\tconst customMatches = document.querySelectorAll('.' + this.host.customViewMatcheClassName);\n\t\t\t\tconst components = Array.from(customMatches);\n\t\t\t\tconst clickedElement = components.find(c => (c as HTMLElement)?.dataset?.['id'] === event.id);\n\t\t\t\tthis.current = clickedElement;\n\t\t\t\tcomponents.forEach(c => {\n\t\t\t\t\tc.classList.remove('selected');\n\t\t\t\t});\n\t\t\t\tif (!clickedElement) return;\n\n\t\t\t\t(this.current as HTMLElement).classList.add('selected');\n\t\t\t}\n\t\t});\n\t}\n\n\tngOnDestroy() {\n\t\tthis.unsubscribe$.next();\n\t\tthis.unsubscribe$.complete();\n\t}\n}\n","import {\n\tEResultPreviewType,\n\tEWritingFeedbackCategories,\n\tEWritingFeedbackTypes,\n} from '../enums/copyleaks-web-report.enums';\nimport { IWritingFeedbackTypeStatistics, IWritingFeedbackCategoryStatistics } from '../models/report-statistics.models';\n\nexport function getResultsTypeTitle(type: EResultPreviewType): string {\n\tswitch (type) {\n\t\tcase EResultPreviewType.Batch:\n\t\t\treturn $localize`This batch`;\n\t\tcase EResultPreviewType.Internet:\n\t\t\treturn $localize`Internet`;\n\t\tcase EResultPreviewType.Repositroy:\n\t\t\treturn $localize`Private Cloud Hub`;\n\t\tcase EResultPreviewType.Database:\n\t\t\treturn $localize`Copyleaks Shared Data Hub`;\n\t\tcase EResultPreviewType.AISourceMatch:\n\t\tcase EResultPreviewType.AISourceMatchUpgrade:\n\t\t\treturn $localize`AI Source Match`;\n\t\tdefault:\n\t\t\treturn $localize`Unknown Type`;\n\t}\n}\n\nexport function getCorrectionTypeTitle(type: EWritingFeedbackTypes): string {\n\tswitch (type) {\n\t\tcase EWritingFeedbackTypes.General:\n\t\t\treturn $localize`General`;\n\t\tcase EWritingFeedbackTypes.Grammar:\n\t\t\treturn $localize`Grammar`;\n\t\tcase EWritingFeedbackTypes.Mechanics:\n\t\t\treturn $localize`Mechanics`;\n\t\tcase EWritingFeedbackTypes.WordChoice:\n\t\t\treturn $localize`Word Choice`;\n\t\tcase EWritingFeedbackTypes.SentenceStructure:\n\t\t\treturn $localize`Sentence Structure`;\n\t\tcase EWritingFeedbackTypes.IncorrectNumberAgreementBetweenArticles:\n\t\t\treturn $localize`Incorrect Number Agreement Between Articles`;\n\t\tcase EWritingFeedbackTypes.IncorrectNumberAgreementBetweenNouns:\n\t\t\treturn $localize`Incorrect Number Agreement Between Nouns`;\n\t\tcase EWritingFeedbackTypes.MismatchInGenderBetweenAdjectives:\n\t\t\treturn $localize`Mismatch In Gender Between Adjectives`;\n\t\tdefault:\n\t\t\treturn $localize`Unknown Type`;\n\t}\n}\n\nexport function getCorrectionCategoryTitle(type: EWritingFeedbackCategories): string {\n\tswitch (type) {\n\t\tcase EWritingFeedbackCategories.General:\n\t\t\treturn $localize`General`;\n\t\tcase EWritingFeedbackCategories.SubjectVerbDisagreement:\n\t\t\treturn $localize`Subject Verb Disagreement`;\n\t\tcase EWritingFeedbackCategories.NounForm:\n\t\t\treturn $localize`Noun Form`;\n\t\tcase EWritingFeedbackCategories.VerbForm:\n\t\t\treturn $localize`Verb Form`;\n\t\tcase EWritingFeedbackCategories.Article:\n\t\t\treturn $localize`Article`;\n\t\tcase EWritingFeedbackCategories.Preposition:\n\t\t\treturn $localize`Preposition`;\n\t\tcase EWritingFeedbackCategories.Pronoun:\n\t\t\treturn $localize`Pronoun`;\n\t\tcase EWritingFeedbackCategories.PartOfSpeech:\n\t\t\treturn $localize`Part of Speech`;\n\t\tcase EWritingFeedbackCategories.Conjunction:\n\t\t\treturn $localize`Conjunction`;\n\t\tcase EWritingFeedbackCategories.CommaSplice:\n\t\t\treturn $localize`Comma Splice`;\n\t\tcase EWritingFeedbackCategories.FusedSentence:\n\t\t\treturn $localize`Fused Sentence`;\n\t\tcase EWritingFeedbackCategories.MissingWords:\n\t\t\treturn $localize`Missing Words`;\n\t\tcase EWritingFeedbackCategories.ExtraWords:\n\t\t\treturn $localize`Extra Words`;\n\t\tcase EWritingFeedbackCategories.IneffectiveConstruction:\n\t\t\treturn $localize`Ineffective Construction`;\n\t\tcase EWritingFeedbackCategories.MisusedWord:\n\t\t\treturn $localize`Misused Word`;\n\t\tcase EWritingFeedbackCategories.Homophone:\n\t\t\treturn $localize`Homophone`;\n\t\tcase EWritingFeedbackCategories.Spelling:\n\t\t\treturn $localize`Spelling`;\n\t\tcase EWritingFeedbackCategories.Comma:\n\t\t\treturn $localize`Comma`;\n\t\tcase EWritingFeedbackCategories.Apostrophe:\n\t\t\treturn $localize`Apostrophe`;\n\t\tcase EWritingFeedbackCategories.Capitalization:\n\t\t\treturn $localize`Capitalization`;\n\t\tcase EWritingFeedbackCategories.Hyphen:\n\t\t\treturn $localize`Hyphen`;\n\t\tcase EWritingFeedbackCategories.Punctuation:\n\t\t\treturn $localize`Punctuation`;\n\t\tcase EWritingFeedbackCategories.Space:\n\t\t\treturn $localize`Space`;\n\t\tcase EWritingFeedbackCategories.SentenceFragments:\n\t\t\treturn $localize`Sentence Fragments`;\n\t\tcase EWritingFeedbackCategories.AdjectiveGenderAgreement:\n\t\t\treturn $localize`Adjective Gender Agreement`;\n\t\tcase EWritingFeedbackCategories.AdjectiveNumberAgreement:\n\t\t\treturn $localize`Adjective Number Agreement`;\n\t\tcase EWritingFeedbackCategories.ArticleGenderAgreement:\n\t\t\treturn $localize`Article Gender Agreement`;\n\t\tcase EWritingFeedbackCategories.ArticleNumberAgreement:\n\t\t\treturn $localize`Article Number Agreement`;\n\t\tcase EWritingFeedbackCategories.NounGenderAgreement:\n\t\t\treturn $localize`Noun Gender Agreement`;\n\t\tcase EWritingFeedbackCategories.SubjunctiveMood:\n\t\t\treturn $localize`Subjunctive Mood`;\n\t\tcase EWritingFeedbackCategories.CompoundWordError:\n\t\t\treturn $localize`Compound Word Error`;\n\t\tcase EWritingFeedbackCategories.MoodInconsistency:\n\t\t\treturn $localize`Mood Inconsistency`;\n\t\tcase EWritingFeedbackCategories.AccentError:\n\t\t\treturn $localize`Accent Error`;\n\t\tcase EWritingFeedbackCategories.HomoglyphError:\n\t\t\treturn $localize`Homoglyph Error`;\n\t\tdefault:\n\t\t\treturn $localize`Unknown Type`;\n\t}\n}\n\nexport function getCorrectionCategoryDescription(type: EWritingFeedbackCategories): string {\n\tswitch (type) {\n\t\tcase EWritingFeedbackCategories.General:\n\t\t\treturn $localize`A general correction detected.`;\n\t\tcase EWritingFeedbackCategories.SubjectVerbDisagreement:\n\t\t\treturn $localize`The subject and verb do not agree in number.`;\n\t\tcase EWritingFeedbackCategories.NounForm:\n\t\t\treturn $localize`Using an incorrect form of a noun (such as pluralization or possessive form) in a sentence.`;\n\t\tcase EWritingFeedbackCategories.VerbForm:\n\t\t\treturn $localize`Using an incorrect form of a verb (such as tense, aspect, or agreement) in a sentence results.`;\n\t\tcase EWritingFeedbackCategories.Article:\n\t\t\treturn $localize`Using the wrong article (a, an, or the) or omitting an article inappropriately in a sentence results.`;\n\t\tcase EWritingFeedbackCategories.Preposition:\n\t\t\treturn $localize`Using the wrong preposition or misplacing a preposition in a sentence.`;\n\t\tcase EWritingFeedbackCategories.Pronoun:\n\t\t\treturn $localize`Using an incorrect pronoun or misplacing a pronoun in a sentence.`;\n\t\tcase EWritingFeedbackCategories.PartOfSpeech:\n\t\t\treturn $localize`Misusing or misidentifying a word's grammatical category, such as confusing a noun with a verb.`;\n\t\tcase EWritingFeedbackCategories.Conjunction:\n\t\t\treturn $localize`Misusing or misplacing conjunctions, which are words that connect words, phrases, or clauses in a sentence.`;\n\t\tcase EWritingFeedbackCategories.CommaSplice:\n\t\t\treturn $localize`Two independent clauses are incorrectly joined by a comma without a coordinating conjunction or appropriate punctuation.`;\n\t\tcase EWritingFeedbackCategories.FusedSentence:\n\t\t\treturn $localize`When two independent clauses are incorrectly joined without appropriate punctuation or conjunction.`;\n\t\tcase EWritingFeedbackCategories.MissingWords:\n\t\t\treturn $localize`Identifies sentences that are missing essential words, resulting in incomplete or unclear meaning.`;\n\t\tcase EWritingFeedbackCategories.ExtraWords:\n\t\t\treturn $localize`Sentences that contain unnecessary or redundant words, which can be removed for clearer and more concise writing.`;\n\t\t// Note: \"ExtraWords\" and \"MissingWords\" repeated, using the first occurrence for simplicity.\n\t\tcase EWritingFeedbackCategories.IneffectiveConstruction:\n\t\t\treturn $localize`Refers to sentences or phrases that are poorly constructed or lack clarity, making it difficult for readers to understand the intended meaning.`;\n\t\tcase EWritingFeedbackCategories.MisusedWord:\n\t\t\treturn $localize`Words that are used incorrectly or inappropriately in a given context.`;\n\t\tcase EWritingFeedbackCategories.Homophone:\n\t\t\treturn $localize`Confusing two words that phonetically sound similar but have a different meaning (e.g., 'their' and 'there' or 'to' and 'too').`;\n\t\tcase EWritingFeedbackCategories.Spelling:\n\t\t\treturn $localize`Misspelling of a word.`;\n\t\tcase EWritingFeedbackCategories.Comma:\n\t\t\treturn $localize`Incorrect use of commas in sentences.`;\n\t\tcase EWritingFeedbackCategories.Apostrophe:\n\t\t\treturn $localize`Incorrect use of apostrophes in sentences.`;\n\t\tcase EWritingFeedbackCategories.Capitalization:\n\t\t\treturn $localize`Word was not capitalized correctly (e.g., 'paris' should be 'Paris').`;\n\t\tcase EWritingFeedbackCategories.Hyphen:\n\t\t\treturn $localize`Incorrect or inconsistent use of hyphens in a sentence.`;\n\t\tcase EWritingFeedbackCategories.Punctuation:\n\t\t\treturn $localize`Incorrect use of punctuation marks, such as commas, periods, semicolons, or colons`;\n\t\tcase EWritingFeedbackCategories.Space:\n\t\t\treturn $localize`Missing or extra spaces detected in sentence.`;\n\t\tcase EWritingFeedbackCategories.SentenceFragments:\n\t\t\treturn $localize`When a group of words appears to be a sentence but is incomplete because it lacks a subject, a predicate, or both.`;\n\t\tcase EWritingFeedbackCategories.AdjectiveGenderAgreement:\n\t\t\treturn $localize`Detects errors in the gender agreement between adjectives and nouns.`;\n\t\tcase EWritingFeedbackCategories.AdjectiveNumberAgreement:\n\t\t\treturn $localize`Highlights discrepancies in the number agreement between adjectives and nouns for improved grammatical precision.`;\n\t\tcase EWritingFeedbackCategories.ArticleGenderAgreement:\n\t\t\treturn $localize`Agreement between articles and nouns in terms of gender is incorrect, ensuring grammatical accuracy.`;\n\t\tcase EWritingFeedbackCategories.ArticleNumberAgreement:\n\t\t\treturn $localize`Number mismatch between articles and nouns creating inconsistency in how they refer to the same or similar elements in a sentence.`;\n\t\tcase EWritingFeedbackCategories.NounGenderAgreement:\n\t\t\treturn $localize`Lack of agreement between nouns and their associated genders, ensuring grammatical harmony.`;\n\t\tcase EWritingFeedbackCategories.SubjunctiveMood:\n\t\t\treturn $localize`Identifies the incorrect usage of the subjunctive mood in sentences, ensuring proper expression of hypothetical or unreal situations.`;\n\t\tcase EWritingFeedbackCategories.CompoundWordError:\n\t\t\treturn $localize`Identifies incorrect compound word usage.`;\n\t\tcase EWritingFeedbackCategories.MoodInconsistency:\n\t\t\treturn $localize`Detects inconsistencies in the expression of mood within a sentence, ensuring cohesive writing.`;\n\t\tcase EWritingFeedbackCategories.AccentError:\n\t\t\treturn $localize`Highlights deviations in accents, promoting uniform language usage.`;\n\t\tcase EWritingFeedbackCategories.HomoglyphError:\n\t\t\treturn $localize`Non-standard characters that resemble standard ones have been detected.`;\n\t\tdefault:\n\t\t\treturn $localize`Unknown feedback type.`;\n\t}\n}\n\nexport function getSelectedCategoryType(type: EWritingFeedbackCategories): EWritingFeedbackTypes {\n\tswitch (type) {\n\t\tcase EWritingFeedbackCategories.General:\n\t\t\treturn EWritingFeedbackTypes.General;\n\n\t\tcase EWritingFeedbackCategories.SubjectVerbDisagreement:\n\t\tcase EWritingFeedbackCategories.NounForm:\n\t\tcase EWritingFeedbackCategories.VerbForm:\n\t\tcase EWritingFeedbackCategories.Article:\n\t\tcase EWritingFeedbackCategories.Preposition:\n\t\tcase EWritingFeedbackCategories.Pronoun:\n\t\tcase EWritingFeedbackCategories.PartOfSpeech:\n\t\tcase EWritingFeedbackCategories.Conjunction:\n\t\tcase EWritingFeedbackCategories.HomoglyphError:\n\t\t\treturn EWritingFeedbackTypes.Grammar;\n\n\t\tcase EWritingFeedbackCategories.MisusedWord:\n\t\tcase EWritingFeedbackCategories.Homophone:\n\t\t\treturn EWritingFeedbackTypes.WordChoice;\n\n\t\tcase EWritingFeedbackCategories.Capitalization:\n\t\tcase EWritingFeedbackCategories.Hyphen:\n\t\tcase EWritingFeedbackCategories.Punctuation:\n\t\tcase EWritingFeedbackCategories.Comma:\n\t\tcase EWritingFeedbackCategories.Apostrophe:\n\t\tcase EWritingFeedbackCategories.Space:\n\t\tcase EWritingFeedbackCategories.Spelling:\n\t\t\treturn EWritingFeedbackTypes.Mechanics;\n\n\t\tcase EWritingFeedbackCategories.FusedSentence:\n\t\tcase EWritingFeedbackCategories.CommaSplice:\n\t\tcase EWritingFeedbackCategories.SentenceFragments:\n\t\tcase EWritingFeedbackCategories.IneffectiveConstruction:\n\t\tcase EWritingFeedbackCategories.ExtraWords:\n\t\tcase EWritingFeedbackCategories.MissingWords:\n\t\t\treturn EWritingFeedbackTypes.SentenceStructure;\n\n\t\tcase EWritingFeedbackCategories.AdjectiveGenderAgreement:\n\t\tcase EWritingFeedbackCategories.AdjectiveNumberAgreement:\n\t\t\treturn EWritingFeedbackTypes.MismatchInGenderBetweenAdjectives;\n\n\t\tcase EWritingFeedbackCategories.ArticleGenderAgreement:\n\t\tcase EWritingFeedbackCategories.ArticleNumberAgreement:\n\t\t\treturn EWritingFeedbackTypes.IncorrectNumberAgreementBetweenArticles;\n\n\t\tcase EWritingFeedbackCategories.NounGenderAgreement:\n\t\tcase EWritingFeedbackCategories.SubjunctiveMood:\n\t\tcase EWritingFeedbackCategories.CompoundWordError:\n\t\tcase EWritingFeedbackCategories.MoodInconsistency:\n\t\tcase EWritingFeedbackCategories.AccentError:\n\t\t\treturn EWritingFeedbackTypes.IncorrectNumberAgreementBetweenNouns;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n}\nexport function getSelectedCategoryStats(\n\ttype: EWritingFeedbackCategories,\n\twritingFeedbackStats: IWritingFeedbackTypeStatistics[]\n): IWritingFeedbackCategoryStatistics {\n\tswitch (type) {\n\t\tcase EWritingFeedbackCategories.General:\n\t\t\treturn writingFeedbackStats[EWritingFeedbackTypes.General].categories[0];\n\n\t\tcase EWritingFeedbackCategories.SubjectVerbDisagreement:\n\t\tcase EWritingFeedbackCategories.NounForm:\n\t\tcase EWritingFeedbackCategories.VerbForm:\n\t\tcase EWritingFeedbackCategories.Article:\n\t\tcase EWritingFeedbackCategories.Preposition:\n\t\tcase EWritingFeedbackCategories.Pronoun:\n\t\tcase EWritingFeedbackCategories.PartOfSpeech:\n\t\tcase EWritingFeedbackCategories.Conjunction:\n\t\t\treturn writingFeedbackStats[EWritingFeedbackTypes.Grammar].categories[\n\t\t\t\ttype - EWritingFeedbackCategories.SubjectVerbDisagreement\n\t\t\t];\n\n\t\tcase EWritingFeedbackCategories.MisusedWord:\n\t\tcase EWritingFeedbackCategories.Homophone:\n\t\t\treturn writingFeedbackStats[EWritingFeedbackTypes.WordChoice].categories[\n\t\t\t\ttype - EWritingFeedbackCategories.MisusedWord\n\t\t\t];\n\n\t\tcase EWritingFeedbackCategories.Capitalization:\n\t\tcase EWritingFeedbackCategories.Hyphen:\n\t\tcase EWritingFeedbackCategories.Punctuation:\n\t\tcase EWritingFeedbackCategories.Comma:\n\t\tcase EWritingFeedbackCategories.Apostrophe:\n\t\tcase EWritingFeedbackCategories.Space:\n\t\tcase EWritingFeedbackCategories.Spelling:\n\t\t\treturn writingFeedbackStats[EWritingFeedbackTypes.Mechanics].categories[\n\t\t\t\ttype - EWritingFeedbackCategories.Capitalization\n\t\t\t];\n\n\t\tcase EWritingFeedbackCategories.FusedSentence:\n\t\tcase EWritingFeedbackCategories.CommaSplice:\n\t\tcase EWritingFeedbackCategories.SentenceFragments:\n\t\tcase EWritingFeedbackCategories.IneffectiveConstruction:\n\t\tcase EWritingFeedbackCategories.ExtraWords:\n\t\tcase EWritingFeedbackCategories.MissingWords:\n\t\t\treturn writingFeedbackStats[EWritingFeedbackTypes.SentenceStructure].categories[\n\t\t\t\ttype - EWritingFeedbackCategories.FusedSentence\n\t\t\t];\n\n\t\tcase EWritingFeedbackCategories.AdjectiveGenderAgreement:\n\t\tcase EWritingFeedbackCategories.AdjectiveNumberAgreement:\n\t\t\treturn writingFeedbackStats[EWritingFeedbackTypes.MismatchInGenderBetweenAdjectives].categories[\n\t\t\t\ttype - EWritingFeedbackCategories.AdjectiveGenderAgreement\n\t\t\t];\n\n\t\tcase EWritingFeedbackCategories.ArticleGenderAgreement:\n\t\tcase EWritingFeedbackCategories.ArticleNumberAgreement:\n\t\t\treturn writingFeedbackStats[EWritingFeedbackTypes.IncorrectNumberAgreementBetweenArticles].categories[\n\t\t\t\ttype - EWritingFeedbackCategories.ArticleGenderAgreement\n\t\t\t];\n\n\t\tcase EWritingFeedbackCategories.NounGenderAgreement:\n\t\tcase EWritingFeedbackCategories.SubjunctiveMood:\n\t\tcase EWritingFeedbackCategories.CompoundWordError:\n\t\tcase EWritingFeedbackCategories.MoodInconsistency:\n\t\tcase EWritingFeedbackCategories.AccentError:\n\t\t\treturn writingFeedbackStats[EWritingFeedbackTypes.IncorrectNumberAgreementBetweenNouns].categories[\n\t\t\t\ttype - EWritingFeedbackCategories.NounGenderAgreement\n\t\t\t];\n\n\t\tcase EWritingFeedbackCategories.HomoglyphError:\n\t\t\treturn writingFeedbackStats[EWritingFeedbackTypes.Grammar].categories[8];\n\n\t\tdefault:\n\t\t\treturn null;\n\t}\n}\n","import { ALERTS } from '../constants/report-alerts.constants';\nimport { EWritingFeedbackTypes } from '../enums/copyleaks-web-report.enums';\nimport {\n\tICompleteResults,\n\tIWritingFeedbackCorrections,\n\tIWritingFeedbackScanScource,\n\tIWritingFeedbackScore,\n} from '../models/report-data.models';\nimport {\n\tAIScanResult,\n\tAIScanResultSummary,\n\tComparisonKey,\n\tMatch,\n\tMatchType,\n\tResultDetailItem,\n\tSubjectResultKey,\n\tWritingFeedbackScanResultSummary,\n} from '../models/report-matches.models';\nimport { ICopyleaksReportOptions } from '../models/report-options.models';\nimport { ReportStatistics } from '../models/report-statistics.models';\nimport { getSelectedCategoryType } from './enums-helpers';\n\n/**\n * Higher order function that returns a function that extracts Match Intervals from a Result\n * @param type name of the match type to extract ( identical | minorChanges | relatedMeaning)\n * @param subject name of the subject to extract from ( source | suspected)\n */\nexport const createWordIntervalsFrom =\n\t(type: ComparisonKey, subject: SubjectResultKey) =>\n\t({ result }: ResultDetailItem) => {\n\t\tif (!result) {\n\t\t\treturn [];\n\t\t}\n\t\tconst { starts, lengths } = result.text.comparison[type][subject].words;\n\t\treturn starts.map(\n\t\t\t(start, i): Match => ({\n\t\t\t\tstart,\n\t\t\t\tend: start + lengths[i] + 1,\n\t\t\t\ttype: MatchType[type],\n\t\t\t})\n\t\t);\n\t};\n\n/**\n * merge consecutive intervals based on start and end index\n * while prioritizing type ( lower is better )\n * this function assumes all intervals are non-distinct (has no gaps)\n */\nexport const mergeWordIntervals = (matches: Match[]): Match[] =>\n\tmatches.reduce((joined: Match[], next: Match) => {\n\t\tif (joined.length === 0) {\n\t\t\tjoined.push(next);\n\t\t\treturn joined;\n\t\t}\n\t\tconst prev = joined[joined.length - 1];\n\n\t\t// equal points\n\t\t// [---p---]\n\t\t// [---n---]\n\t\tif (prev.end === next.end && prev.start === next.start) {\n\t\t\tif (next.type < prev.type) {\n\t\t\t\tjoined[joined.length - 1] = { ...prev, type: next.type };\n\t\t\t}\n\t\t}\n\t\t// same start inclusion\n\t\t// [---p---]  or\n\t\t// [--n--]\n\t\telse if (next.start === prev.start && next.end < prev.end) {\n\t\t\tif (next.type < prev.type) {\n\t\t\t\tjoined[joined.length - 1] = next;\n\t\t\t\tjoined.push({ ...prev, start: next.start });\n\t\t\t}\n\t\t}\n\t\t// same end inclusion\n\t\t// [---p---]\n\t\t// \t[--n--]\n\t\telse if (prev.end === next.end && prev.start < next.start) {\n\t\t\tif (next.type < prev.type) {\n\t\t\t\tjoined[joined.length - 1] = { ...prev, end: next.start };\n\t\t\t\tjoined.push(next);\n\t\t\t}\n\t\t}\n\t\t// complete inclusion\n\t\t// [---p---]\n\t\t// [--n--]\n\t\telse if (prev.start < next.start && next.end < prev.end) {\n\t\t\tif (next.type < prev.type) {\n\t\t\t\tjoined[joined.length - 1] = { ...prev, end: next.start };\n\t\t\t\tjoined.push(next);\n\t\t\t\tjoined.push({ ...prev, start: next.end });\n\t\t\t}\n\t\t}\n\t\t// intersecting or adjacent\n\t\t// [---p---]      or [---p---]\n\t\t//     [---n---]              [---n---]\n\t\telse if (next.start > prev.start && next.end > prev.end) {\n\t\t\tif (next.type === prev.type) {\n\t\t\t\tjoined[joined.length - 1] = { ...prev, end: next.end };\n\t\t\t} else if (next.type < prev.type) {\n\t\t\t\tjoined[joined.length - 1] = { ...prev, end: next.start };\n\t\t\t\tjoined.push(next);\n\t\t\t} else if (next.type > prev.type) {\n\t\t\t\tjoined.push({ ...next, start: prev.end });\n\t\t\t}\n\t\t}\n\t\t// same start\n\t\t// [--p--]\n\t\t// [---n---]\n\t\telse if (prev.start === next.start && prev.end < next.end) {\n\t\t\tif (next.type <= prev.type) {\n\t\t\t\tjoined[joined.length - 1] = next;\n\t\t\t} else {\n\t\t\t\tjoined.push({ ...next, start: prev.end });\n\t\t\t}\n\t\t} else {\n\t\t\tjoined.push(next);\n\t\t}\n\t\treturn joined;\n\t}, []);\n\n/**\n * split an array of matches into nests where each nest is distinct and nested items are all overlapped\n * @param matches the matches to split\n */\nexport const findNests = (matches: Match[]): Match[][] => {\n\tif (matches.length === 0) {\n\t\treturn [[]];\n\t}\n\tmatches.sort((a, b) => a.start - b.start || a.end - b.end || a.type - b.type);\n\tconst nests: Match[][] = [[matches[0]]];\n\tlet nestFurthestEnd = matches[0].end;\n\tfor (const interval of matches) {\n\t\tif (interval.start > nestFurthestEnd) {\n\t\t\tnests.push([interval]);\n\t\t\tnestFurthestEnd = interval.end;\n\t\t} else {\n\t\t\tnests[nests.length - 1].push(interval);\n\t\t\tnestFurthestEnd = Math.max(nestFurthestEnd, interval.end);\n\t\t}\n\t}\n\treturn nests;\n};\n\n/**\n * merge overlapping matches in a list of matches\n * @param matches the list of matches\n */\nexport const mergeWords = (matches: Match[]): Match[] => {\n\treturn findNests(matches).reduce((all, nest) => all.concat(mergeWordIntervals(nest)), []);\n};\n\n/**\n * calculate statistics using the scan's `completeResult` and a list of `results`\n * @param completeResult the report's complete result\n * @param results the results to calculate statistics from\n */\nexport const calculateStatistics = (\n\tcompleteResult: ICompleteResults,\n\tresults: ResultDetailItem[],\n\toptions?: ICopyleaksReportOptions\n): ReportStatistics => {\n\tconst { totalWords, totalExcluded } = completeResult.scannedDocument;\n\tconst identical = options?.showIdentical ? results.flatMap(createWordIntervalsFrom('identical', 'source')) : [];\n\tconst minorChanges = options?.showMinorChanges\n\t\t? results.flatMap(createWordIntervalsFrom('minorChanges', 'source'))\n\t\t: [];\n\tconst relatedMeaning = options?.showRelated\n\t\t? results.flatMap(createWordIntervalsFrom('relatedMeaning', 'source'))\n\t\t: [];\n\tconst withOutoverlaps = mergeWords([...relatedMeaning, ...minorChanges, ...identical]);\n\tconst identicalCount = withOutoverlaps\n\t\t.filter(match => match.type === MatchType.identical)\n\t\t.reduce((total, elem) => total + (elem.end - elem.start), 0);\n\tconst minorChangesCount = withOutoverlaps\n\t\t.filter(match => match.type === MatchType.minorChanges)\n\t\t.reduce((total, elem) => total + (elem.end - elem.start), 0);\n\tconst relatedMeaningCount = withOutoverlaps\n\t\t.filter(match => match.type === MatchType.relatedMeaning)\n\t\t.reduce((total, elem) => total + (elem.end - elem.start), 0);\n\n\tlet aggregatedScore = Math.min(\n\t\t1,\n\t\t(identicalCount + relatedMeaningCount + minorChangesCount) / (totalWords - totalExcluded)\n\t);\n\taggregatedScore = isNaN(aggregatedScore) ? 0 : aggregatedScore;\n\n\tconst aiStatistics = getAiStatistics(completeResult);\n\n\treturn {\n\t\taggregatedScore,\n\t\tidentical: identicalCount,\n\t\trelatedMeaning: relatedMeaningCount,\n\t\tminorChanges: minorChangesCount,\n\t\tomittedWords: totalExcluded,\n\t\ttotal: totalWords,\n\t\taiScore: aiStatistics?.ai ?? 0,\n\t\thumanScore: aiStatistics?.human ?? 0,\n\t};\n};\n\nexport const getAiStatistics = (completeResult: ICompleteResults): AIScanResultSummary | null => {\n\tconst aiAlert = completeResult.notifications?.alerts?.find(a => a.code === ALERTS.SUSPECTED_AI_TEXT_DETECTED);\n\tif (aiAlert) {\n\t\tconst aiData: AIScanResult = JSON.parse(aiAlert.additionalData);\n\t\treturn aiData.summary;\n\t}\n\treturn null;\n};\n\nexport const getWritingFeedbackStatistics = (\n\tscore: IWritingFeedbackScore,\n\tfilteredCorrections?: IWritingFeedbackScanScource,\n\ttotalWords?: number\n): WritingFeedbackScanResultSummary | null => {\n\tif (!score?.corrections || !filteredCorrections)\n\t\treturn {\n\t\t\toverallScore: null,\n\t\t\toverallTotalIssues: null,\n\t\t};\n\tconst scoreCopy: IWritingFeedbackScore = JSON.parse(JSON.stringify(score));\n\tscoreCopy.corrections = {\n\t\t...scoreCopy.corrections,\n\t\tgrammarCorrectionsScore: calculateScore(\n\t\t\ttotalWords,\n\t\t\tfilteredCorrections?.text?.chars?.types?.filter(\n\t\t\t\ttype => getSelectedCategoryType(type) === EWritingFeedbackTypes.Grammar\n\t\t\t)?.length ?? 0\n\t\t),\n\t\tsentenceStructureCorrectionsScore: calculateScore(\n\t\t\ttotalWords,\n\t\t\tfilteredCorrections?.text?.chars?.types?.filter(\n\t\t\t\ttype => getSelectedCategoryType(type) === EWritingFeedbackTypes.SentenceStructure\n\t\t\t)?.length ?? 0\n\t\t),\n\t\tmechanicsCorrectionsScore: calculateScore(\n\t\t\ttotalWords,\n\t\t\tfilteredCorrections?.text?.chars?.types?.filter(\n\t\t\t\ttype => getSelectedCategoryType(type) === EWritingFeedbackTypes.Mechanics\n\t\t\t)?.length ?? 0\n\t\t),\n\t\twordChoiceCorrectionsScore: calculateScore(\n\t\t\ttotalWords,\n\t\t\tfilteredCorrections?.text?.chars?.types?.filter(\n\t\t\t\ttype => getSelectedCategoryType(type) === EWritingFeedbackTypes.WordChoice\n\t\t\t)?.length ?? 0\n\t\t),\n\t};\n\n\treturn {\n\t\toverallScore: (calculateOverallCorrectionsScore(scoreCopy.corrections) ?? 0) / 100,\n\t\toverallTotalIssues: filteredCorrections?.text?.chars?.operationTexts?.length,\n\t};\n};\n\nexport const calculateOverallCorrectionsScore = (correctionsScore: IWritingFeedbackCorrections): number => {\n\tif (!correctionsScore) return 0;\n\tconst weightSum =\n\t\tcorrectionsScore.grammarScoreWeight +\n\t\tcorrectionsScore.mechanicsScoreWeight +\n\t\tcorrectionsScore.sentenceStructureScoreWeight +\n\t\tcorrectionsScore.wordChoiceScoreWeight;\n\n\tif (weightSum > 0) {\n\t\tconst overallCorrectionsScore =\n\t\t\tMath.round(\n\t\t\t\t((correctionsScore.grammarCorrectionsScore * correctionsScore.grammarScoreWeight +\n\t\t\t\t\tcorrectionsScore.mechanicsCorrectionsScore * correctionsScore.mechanicsScoreWeight +\n\t\t\t\t\tcorrectionsScore.sentenceStructureCorrectionsScore * correctionsScore.sentenceStructureScoreWeight +\n\t\t\t\t\tcorrectionsScore.wordChoiceCorrectionsScore * correctionsScore.wordChoiceScoreWeight) /\n\t\t\t\t\tweightSum) *\n\t\t\t\t\tMath.pow(10, 0)\n\t\t\t) / Math.pow(10, 0);\n\t\treturn overallCorrectionsScore;\n\t}\n\treturn 0; // or handle the case where weightSum <= 0 differently if needed\n};\n\nexport const calculateScore = (numTokens: number, categoryCorrectedTokens: number): number => {\n\tif (!numTokens) return 0;\n\tconst score = ((numTokens - categoryCorrectedTokens) / numTokens) ** 4 * 100;\n\treturn score;\n};\n","import { Observable, throwError, timer } from 'rxjs';\nimport { retryWhen, concatMap } from 'rxjs/operators';\n\nexport function retryWithDelay(retryIntervals: number[] = [10000, 15000, 20000]) {\n\treturn <T>(source: Observable<T>) =>\n\t\tsource.pipe(\n\t\t\tretryWhen(errors =>\n\t\t\t\terrors.pipe(\n\t\t\t\t\tconcatMap((error, index) => {\n\t\t\t\t\t\tif (error?.status && error?.status > 500 && index < retryIntervals.length) {\n\t\t\t\t\t\t\treturn timer(retryIntervals[index]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn throwError(error);\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t)\n\t\t);\n}\n","/**\n * File: report-scan-errors.constants.ts\n *\n * Description:\n * This file defines a constant object, `ERROR_MESSAGES`, which maps error codes\n * to their corresponding localized error messages. It is used to provide consistent\n * and maintainable error handling for the report scanning feature.\n *\n * Each error code corresponds to a predefined error message, localized using Angular's\n * `$localize` for internationalization support.\n *\n * Usage:\n * Import the `ERROR_MESSAGES` constant wherever error messages need to be retrieved\n * based on error codes.\n *\n * Example:\n * ```typescript\n * import { ERROR_MESSAGES } from './report-scan-errors.constants';\n *\n * const errorCode = 2;\n * console.log(ERROR_MESSAGES[errorCode]); // Output: Invalid login credentials.\n * ```\n *\n * Key Considerations:\n * - Always use `$localize` to ensure proper internationalization of error messages.\n * - Handle unknown error codes by checking for `undefined` values.\n * - This file should be updated whenever new error codes or messages are introduced.\n *\n * Structure:\n * { [key: number]: string }\n * - Key: The error code (numeric).\n * - Value: The localized error message (string).\n */\nexport const ERROR_MESSAGES: { [key: number]: string } = {\n\t1: $localize`Bad request. One or several required parameters are missing or incorrect.`,\n\t2: $localize`Invalid login credentials.`,\n\t3: $localize`To use your account, you need to confirm the email address.`,\n\t4: $localize`This user is disabled. Contact support for help.`,\n\t5: $localize`Failed to download the requested URL.`,\n\t6: $localize`Cannot complete the scan request because the file is too large. For more information: http://bit.ly/2fqJOqP`,\n\t7: $localize`Failed reading the submitted text.`,\n\t8: $localize`The image quality is too low to scan.`,\n\t9: $localize`Temporarily unavailable. Please try again later.`,\n\t10: $localize`This file type is not supported. Read more - link`,\n\t11: $localize`Not enough text to scan. The minimum text length is 30 characters and at least 6 words.`,\n\t13: $localize`You don't have enough credits to complete the request!`,\n\t14: $localize`The submitted file is invalid.`,\n\t15: $localize`The submitted URL is invalid!`,\n\t17: $localize`You have no credits. You need to purchase credits in order to complete the request.`,\n\t18: $localize`Copyshield widget is not showing on your webpage.`,\n\t20: $localize`Only MIME multipart content type is allowed!`,\n\t21: $localize`You can upload one file at a time!`,\n\t22: $localize`Unable to determine file size.`,\n\t24: $localize`Bad filename!`,\n\t25: $localize`Undefined language!`,\n\t26: $localize`The request cannot be completed because the process is still running.`,\n\t27: $localize`Unknown process id!`,\n\t37: $localize`Authorization has been denied for this request.`,\n};\n","export const RESULT_TAGS_CODES = {\n\tYOUR_FILE: 'your-file',\n\tORGANIZATION: 'organization',\n\tSUMMARY_DATE: 'summary-date',\n\tAI_SOURCE_MATCH: 'ai-source-match',\n};\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ReportHttpRequestErrorModel } from '../models/report-errors.models';\nimport { HttpErrorResponse } from '@angular/common/http';\n\n@Injectable()\nexport class ReportErrorsService {\n\tprivate _reportHttpRequestError$ = new Subject<ReportHttpRequestErrorModel>();\n\t/**\n\t * Subject for sharing the report data endpoints.\n\t */\n\tpublic get reportHttpRequestError$() {\n\t\treturn this._reportHttpRequestError$;\n\t}\n\n\tconstructor() {}\n\n\tpublic handleHttpError(error: HttpErrorResponse, methodName: string) {\n\t\tconst httpError: ReportHttpRequestErrorModel = {\n\t\t\tstatusCode: error.status,\n\t\t\tmessage: error.message,\n\t\t\tendpoint: error.url || '',\n\t\t\tmethod: methodName,\n\t\t\ttimestamp: new Date(),\n\t\t\theaders: error.headers,\n\t\t\tresponseData: error.error,\n\t\t};\n\n\t\t// Send the error model, so that we can emit it to outside components\n\t\tthis.reportHttpRequestError$.next(httpError);\n\t}\n}\n","import { PercentPipe } from '@angular/common';\nimport { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, EMPTY, Subject, combineLatest, forkJoin, from, interval } from 'rxjs';\nimport { concatMap, distinctUntilChanged, filter, take, takeUntil } from 'rxjs/operators';\nimport { IResultItem } from '../components/containers/report-results-item-container/components/models/report-result-item.models';\nimport { ALERTS } from '../constants/report-alerts.constants';\nimport { EResultPreviewType, EScanStatus } from '../enums/copyleaks-web-report.enums';\nimport { IClsReportEndpointConfigModel, IEndpointDetails } from '../models/report-config.models';\nimport {\n\tIAPIProgress,\n\tICompleteResults,\n\tIDatabaseResultPreview,\n\tIDeleteScanResultModel,\n\tIExcludedCorrection,\n\tIHtmlWritingFeedbackRange,\n\tIInternetResultPreview,\n\tIRepositoryResultPreview,\n\tIResultDetailResponse,\n\tIResultPreviewBase,\n\tIScanSource,\n\tIWritingFeedback,\n\tIWritingFeedbackCorrectionViewModel,\n\tIWritingFeedbackRange,\n\tIWritingFeedbackScanScource,\n\tResultPreview,\n} from '../models/report-data.models';\nimport { AIScanResult, ResultDetailItem } from '../models/report-matches.models';\nimport { ICopyleaksReportOptions } from '../models/report-options.models';\nimport * as helpers from '../utils/report-statistics-helpers';\nimport { untilDestroy } from '../utils/until-destroy';\nimport { ReportErrorsService } from './report-errors.service';\nimport { ReportViewService } from './report-view.service';\nimport { ReportStatistics } from '../models/report-statistics.models';\nimport { retryWithDelay } from '../utils/retry-with-delay';\nimport { ERROR_MESSAGES } from '../constants/report-scan-errors.constants';\nimport { RESULT_TAGS_CODES } from '../constants/report-result-tags.constants';\n\n@Injectable()\nexport class ReportDataService {\n\tpublic isRealTimeView$ = new BehaviorSubject<boolean>(false);\n\tpublic get isRealTimeView(): boolean {\n\t\treturn this.isRealTimeView$.value;\n\t}\n\n\t//#region Report Endpoint Configuration\n\n\tprivate _reportEndpointConfig$ = new BehaviorSubject<IClsReportEndpointConfigModel | undefined>(undefined);\n\t/**\n\t * Observable stream for the report endpoint configuration.\n\t */\n\tpublic get reportEndpointConfig$() {\n\t\treturn this._reportEndpointConfig$;\n\t}\n\t/**\n\t * Current value of the report endpoint configuration.\n\t */\n\tpublic get reportEndpointConfig() {\n\t\treturn this._reportEndpointConfig$.value;\n\t}\n\n\t//#endregion\n\n\t//#region Scan Results Details\n\n\tprivate _scanResultsDetails$ = new BehaviorSubject<ResultDetailItem[] | undefined>(undefined);\n\tprivate _loadedResultsDetails$: ResultDetailItem[] = [];\n\t/**\n\t * Observable stream for the complete scan result details.\n\t */\n\tpublic get scanResultsDetails$() {\n\t\treturn this._scanResultsDetails$;\n\t}\n\t/**\n\t * Current value of the complete scan result details.\n\t */\n\tpublic get scanResultsDetails() {\n\t\treturn this._scanResultsDetails$.value;\n\t}\n\n\t//#endregion\n\n\t//#region Scan Results Previews\n\n\tpublic completeResultsSnapshot: ICompleteResults | undefined;\n\tprivate _scanResultsPreviews$ = new BehaviorSubject<ICompleteResults | undefined>(undefined);\n\t/**\n\t * Observable stream for scan results preview data.\n\t */\n\tpublic get scanResultsPreviews$() {\n\t\treturn this._scanResultsPreviews$;\n\t}\n\t/**\n\t * Current value of the scan results preview data.\n\t */\n\tpublic get scanResultsPreviews() {\n\t\treturn this._scanResultsPreviews$.value;\n\t}\n\n\t//#endregion\n\n\t//#region Crawled Version\n\n\tprivate _crawledVersion$ = new BehaviorSubject<IScanSource | undefined>(undefined);\n\t/**\n\t * Observable stream for the crawled source version information.\n\t */\n\tpublic get crawledVersion$() {\n\t\treturn this._crawledVersion$;\n\t}\n\t/**\n\t * Current value of the crawled source version information.\n\t */\n\tpublic get crawledVersion() {\n\t\treturn this._crawledVersion$.value;\n\t}\n\n\t//#endregion\n\n\t//#region Writing Feedback\n\n\tprivate _writingFeedback$ = new BehaviorSubject<IWritingFeedback | undefined>(undefined);\n\t/**\n\t * Observable stream for writing feedback associated with the report.\n\t */\n\tpublic get writingFeedback$() {\n\t\treturn this._writingFeedback$;\n\t}\n\t/**\n\t * Current value of the writing feedback.\n\t */\n\tpublic get writingFeedback() {\n\t\treturn this._writingFeedback$.value;\n\t}\n\n\t//#endregion\n\n\t//#region Excluded Corrections\n\n\tprivate _excludedCorrections$ = new BehaviorSubject<IExcludedCorrection[] | undefined>(undefined);\n\t/**\n\t * Observable stream for excluded corrections in one-to-many source mode.\n\t */\n\tpublic get excludedCorrections$() {\n\t\treturn this._excludedCorrections$;\n\t}\n\t/**\n\t * Current value of the excluded corrections.\n\t */\n\tpublic get excludedCorrections() {\n\t\treturn this._excludedCorrections$.value;\n\t}\n\n\t//#endregion\n\n\t//#region Filter Options\n\n\tprivate _filterOptions$ = new BehaviorSubject<ICopyleaksReportOptions | undefined>(undefined);\n\t/**\n\t * Observable stream for the report filtering options.\n\t */\n\tpublic get filterOptions$() {\n\t\treturn this._filterOptions$;\n\t}\n\t/**\n\t * Current value of the report filtering options.\n\t */\n\tpublic get filterOptions() {\n\t\treturn this._filterOptions$.value;\n\t}\n\n\t//#endregion\n\n\t//#region Excluded Results IDs\n\n\tprivate _excludedResultsIds$ = new BehaviorSubject<string[] | undefined>(undefined);\n\t/**\n\t * Observable stream for IDs of results excluded from the report.\n\t */\n\tpublic get excludedResultsIds$() {\n\t\treturn this._excludedResultsIds$;\n\t}\n\t/**\n\t * Current value of the excluded result IDs.\n\t */\n\tpublic get excludedResultsIds() {\n\t\treturn this._excludedResultsIds$.value;\n\t}\n\n\t//#endregion\n\n\t//#region Selected Category Result IDs\n\n\tprivate _selectedCategoryResultsIds$ = new BehaviorSubject<string[] | undefined>(undefined);\n\t/**\n\t * Observable stream for IDs of results selected by category.\n\t */\n\tpublic get selectedCategoryResultsIds$() {\n\t\treturn this._selectedCategoryResultsIds$;\n\t}\n\t/**\n\t * Current value of the selected category result IDs.\n\t */\n\tpublic get selectedCategoryResultsIds() {\n\t\treturn this._selectedCategoryResultsIds$.value;\n\t}\n\n\t//#endregion\n\n\t//#region Loading State\n\n\tprivate _loadingMoreResults$ = new BehaviorSubject<boolean>(false);\n\t/**\n\t * Observable stream indicating whether additional results are currently being loaded.\n\t */\n\tpublic get loadingMoreResults$() {\n\t\treturn this._loadingMoreResults$;\n\t}\n\t/**\n\t * Current loading state for additional results.\n\t */\n\tpublic get loadingMoreResults() {\n\t\treturn this._loadingMoreResults$.value;\n\t}\n\n\t//#endregion\n\n\tpublic get isFilterOn(): boolean {\n\t\tlet totalIdentical = 0,\n\t\t\ttotalMinorChanges = 0,\n\t\t\ttotalParaphrased = 0;\n\t\tthis.scanResultsDetails?.forEach(result => {\n\t\t\tif (result.result?.statistics.identical && result.result?.statistics.identical > 0) totalIdentical++;\n\t\t\tif (result.result?.statistics.minorChanges && result.result?.statistics.minorChanges > 0) totalMinorChanges++;\n\t\t\tif (result.result?.statistics.relatedMeaning && result.result?.statistics.relatedMeaning > 0) totalParaphrased++;\n\t\t});\n\n\t\tlet totalYourFiles = 0,\n\t\t\ttotalOthersFiles = 0;\n\t\tthis.scanResultsPreviews?.results.database.forEach((result: IDatabaseResultPreview) => {\n\t\t\tif (result.scanId) totalYourFiles++;\n\t\t\telse totalOthersFiles++;\n\t\t});\n\n\t\treturn (\n\t\t\t(totalIdentical > 0 && this._filterOptions$.value?.showIdentical === false) ||\n\t\t\t(totalMinorChanges > 0 && this._filterOptions$.value?.showMinorChanges === false) ||\n\t\t\t(totalParaphrased > 0 && this._filterOptions$.value?.showRelated === false) ||\n\t\t\tthis._filterOptions$.value?.showAlerts === false ||\n\t\t\tthis._filterOptions$.value?.showSameAuthorSubmissions === false ||\n\t\t\t(this.scanResultsPreviews?.results.internet.length &&\n\t\t\t\tthis._filterOptions$.value?.showInternetResults === false) ||\n\t\t\t(this.scanResultsPreviews?.results.database.length &&\n\t\t\t\t((this._filterOptions$.value?.showOthersResults === false && totalOthersFiles > 0) ||\n\t\t\t\t\t(this._filterOptions$.value?.showYourResults === false && totalYourFiles > 0))) ||\n\t\t\t(this.scanResultsPreviews?.results.batch.length && this._filterOptions$.value?.showBatchResults === false) ||\n\t\t\t(!!this.scanResultsPreviews?.results.repositories?.length &&\n\t\t\t\t!!this._filterOptions$.value?.hiddenRepositories?.length) ||\n\t\t\t(this._filterOptions$.value?.showTop100Results === true && this.totalCompleteResults > 100) ||\n\t\t\t(this._filterOptions$.value?.includedTags?.length && this._filterOptions$.value?.includedTags?.length > 0) ||\n\t\t\t(this._filterOptions$.value?.excludedDomains?.length &&\n\t\t\t\tthis._filterOptions$.value?.excludedDomains?.length > 0) ||\n\t\t\t!!this._filterOptions$.value?.publicationDate ||\n\t\t\t!!this._filterOptions$.value?.wordLimit ||\n\t\t\tthis._filterOptions$.value?.includeResultsWithoutDate == false\n\t\t);\n\t}\n\n\tpublic get totalCompleteResults(): number {\n\t\tlet completeResults = [\n\t\t\t...(this.scanResultsPreviews$.value?.results.internet ?? []),\n\t\t\t...(this.scanResultsPreviews$.value?.results.batch ?? []),\n\t\t\t...(this.scanResultsPreviews$.value?.results.database ?? []),\n\t\t\t...(this.scanResultsPreviews$.value?.results.repositories ?? []),\n\t\t];\n\n\t\treturn completeResults.length;\n\t}\n\n\tpublic get totalOriginalCompleteResults(): number {\n\t\tlet completeResults = [\n\t\t\t...(this.completeResultsSnapshot?.results.internet ?? []),\n\t\t\t...(this.completeResultsSnapshot?.results.batch ?? []),\n\t\t\t...(this.completeResultsSnapshot?.results.database ?? []),\n\t\t\t...(this.completeResultsSnapshot?.results.repositories ?? []),\n\t\t];\n\n\t\treturn completeResults.length;\n\t}\n\n\tprivate _newResults$ = new BehaviorSubject<IResultItem[] | undefined>([]);\n\t/** Emits matches that are relevant to source html one-to-many mode */\n\tpublic get newResults$() {\n\t\treturn this._newResults$;\n\t}\n\tpublic get newResults() {\n\t\treturn this._newResults$.value;\n\t}\n\n\tconstructor(\n\t\tprivate _http: HttpClient,\n\t\tprivate _viewSvc: ReportViewService,\n\t\tprivate _reportErrorsSvc: ReportErrorsService,\n\t\tprivate _percentPipe: PercentPipe\n\t) {\n\t\tcombineLatest([\n\t\t\tthis.filterOptions$.pipe(distinctUntilChanged()),\n\t\t\tthis.excludedResultsIds$.pipe(distinctUntilChanged()),\n\t\t\tthis.scanResultsDetails$.pipe(distinctUntilChanged()),\n\t\t\tthis.excludedCorrections$.pipe(distinctUntilChanged()),\n\t\t\tthis.writingFeedback$.pipe(distinctUntilChanged()),\n\t\t])\n\t\t\t.pipe(\n\t\t\t\tuntilDestroy(this),\n\t\t\t\tfilter(\n\t\t\t\t\t([options, excludedResultsIds, , excludedCorrections]) =>\n\t\t\t\t\t\toptions !== undefined && excludedResultsIds !== undefined && excludedCorrections !== undefined\n\t\t\t\t)\n\t\t\t)\n\t\t\t.subscribe(([options, excludedResultsIds, , excludedCorrections, writingFeedback]) => {\n\t\t\t\tif (\n\t\t\t\t\t!this.scanResultsPreviews ||\n\t\t\t\t\tthis.scanResultsPreviews === undefined ||\n\t\t\t\t\t!this.scanResultsDetails ||\n\t\t\t\t\t!this.scanResultsDetails === undefined ||\n\t\t\t\t\t!options ||\n\t\t\t\t\t!excludedResultsIds ||\n\t\t\t\t\t!excludedCorrections ||\n\t\t\t\t\tthis._viewSvc.progress$.value !== 100 ||\n\t\t\t\t\t(this.totalCompleteResults <= 100 &&\n\t\t\t\t\t\tthis.scanResultsDetails.length != this.totalCompleteResults &&\n\t\t\t\t\t\tthis.isRealTimeView) ||\n\t\t\t\t\t(this.isWritingFeedbackEnabled() && writingFeedback === undefined)\n\t\t\t\t)\n\t\t\t\t\treturn;\n\n\t\t\t\tconst filteredResults = this.filterResults(options, excludedResultsIds);\n\t\t\t\tlet filteredCorrections: IWritingFeedbackScanScource;\n\t\t\t\tif (writingFeedback) {\n\t\t\t\t\tfilteredCorrections = this.filterCorrections(\n\t\t\t\t\t\tJSON.parse(JSON.stringify(writingFeedback?.corrections)),\n\t\t\t\t\t\tthis.filterOptions,\n\t\t\t\t\t\tthis.excludedCorrections\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst stats: ReportStatistics = this._getReportStats(\n\t\t\t\t\tfilteredResults,\n\t\t\t\t\tthis.scanResultsPreviews,\n\t\t\t\t\tfilteredCorrections,\n\t\t\t\t\twritingFeedback\n\t\t\t\t);\n\t\t\t\tconst filteredOutResultsIds = [\n\t\t\t\t\t...(this.scanResultsPreviews$.value?.results.internet ?? []),\n\t\t\t\t\t...(this.scanResultsPreviews$.value?.results.batch ?? []),\n\t\t\t\t\t...(this.scanResultsPreviews$.value?.results.database ?? []),\n\t\t\t\t\t...(this.scanResultsPreviews$.value?.results.repositories ?? []),\n\t\t\t\t]\n\t\t\t\t\t.filter(\n\t\t\t\t\t\tresult => !filteredResults.find(r => result.id === r.id) && !excludedResultsIds.find(id => result.id === id)\n\t\t\t\t\t)\n\t\t\t\t\t.map(result => result.id);\n\n\t\t\t\t// Load all the viewed results\n\t\t\t\tif (\n\t\t\t\t\t!this.isRealTimeView ||\n\t\t\t\t\t(this.isRealTimeView &&\n\t\t\t\t\t\tthis.totalCompleteResults > 100 &&\n\t\t\t\t\t\tthis.scanResultsDetails.length != this.totalCompleteResults &&\n\t\t\t\t\t\t!options.showTop100Results)\n\t\t\t\t)\n\t\t\t\t\tthis.loadViewedResultsDetails();\n\n\t\t\t\tthis._scanResultsPreviews$.next({\n\t\t\t\t\t...this.scanResultsPreviews,\n\t\t\t\t\tresults: {\n\t\t\t\t\t\t...this.scanResultsPreviews.results,\n\t\t\t\t\t\tscore: {\n\t\t\t\t\t\t\tidenticalWords: stats.identical,\n\t\t\t\t\t\t\tminorChangedWords: stats.minorChanges,\n\t\t\t\t\t\t\trelatedMeaningWords: stats.relatedMeaning,\n\t\t\t\t\t\t\taggregatedScore: this.isPlagiarismEnabled() ? stats.aggregatedScore ?? 0 : null,\n\t\t\t\t\t\t\twritingFeedbackOverallIssues: this.isWritingFeedbackEnabled() ? stats.writingFeedbackOverallIssues : null,\n\t\t\t\t\t\t\twritingFeedbackOverallScore: this.isWritingFeedbackEnabled() ? stats.writingFeedbackOverallScore : null,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tfilters: {\n\t\t\t\t\t\tisFilterEnabled: this.isFilterOn || excludedResultsIds?.length > 0,\n\t\t\t\t\t\tgeneral: {\n\t\t\t\t\t\t\talerts: options?.showAlerts ?? true,\n\t\t\t\t\t\t\tauthorSubmissions: options?.showSameAuthorSubmissions ?? true,\n\t\t\t\t\t\t\ttopResult: options?.showTop100Results ?? true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tincludedTags: options?.includedTags,\n\t\t\t\t\t\tmatchType: {\n\t\t\t\t\t\t\tidenticalText: options?.showIdentical ?? true,\n\t\t\t\t\t\t\tminorChanges: options?.showMinorChanges ?? true,\n\t\t\t\t\t\t\tparaphrased: options?.showRelated ?? true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tresultsMetaData: {\n\t\t\t\t\t\t\tpublicationDate: {\n\t\t\t\t\t\t\t\tpublicationEnabled: !!options?.publicationDate,\n\t\t\t\t\t\t\t\tresultsWithNoDates: options?.includeResultsWithoutDate ?? true,\n\t\t\t\t\t\t\t\tstartDate: options?.publicationDate,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\twordLimit: {\n\t\t\t\t\t\t\t\twordLimitEnabled: !!options?.wordLimit,\n\t\t\t\t\t\t\t\ttotalWordLimit: options?.wordLimit,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsourceType: {\n\t\t\t\t\t\t\tbatch: options?.showBatchResults ?? true,\n\t\t\t\t\t\t\tinternalDatabase: options?.showYourResults || options?.showOthersResults,\n\t\t\t\t\t\t\tyourResults: options?.showYourResults ?? true,\n\t\t\t\t\t\t\tothersResults: options?.showOthersResults ?? true,\n\t\t\t\t\t\t\tinternet: options?.showInternetResults ?? true,\n\t\t\t\t\t\t\trepositories: options?.hiddenRepositories ?? [],\n\t\t\t\t\t\t\taiSourceMatch: options?.showAISourceMatch ?? true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\texecludedResultIds: excludedResultsIds ?? [],\n\t\t\t\t\t\tfilteredResultIds: filteredOutResultsIds ?? [],\n\t\t\t\t\t\twritingFeedback: {\n\t\t\t\t\t\t\thiddenCategories: options.writingFeedback.hiddenCategories ?? [],\n\t\t\t\t\t\t\texcludedCorrections: excludedCorrections,\n\t\t\t\t\t\t},\n\t\t\t\t\t\texcludedDomains: options?.excludedDomains ?? [],\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\t/**\n\t * Initializes report data by fetching necessary information from specified endpoints:\n\t * Crawled Version & Complete Results\n\t *\n\t * @param {IClsReportEndpointConfigModel} endpointsConfig - The configuration object for API endpoints required for the report data.\n\t *\n\t * @returns {void} - The function does not return anything.\n\t *\n\t */\n\tpublic initReportData(endpointsConfig: IClsReportEndpointConfigModel) {\n\t\tif (!endpointsConfig) return;\n\n\t\t// init the subject values\n\t\tthis._reportEndpointConfig$.next(endpointsConfig);\n\n\t\tif (!endpointsConfig.progress?.url) {\n\t\t\tthis.initSync(endpointsConfig);\n\t\t} else {\n\t\t\tconst progressResult$ = this._http.get<IAPIProgress>(endpointsConfig.progress.url, {\n\t\t\t\theaders: this._createHeaders(endpointsConfig.progress),\n\t\t\t});\n\t\t\tprogressResult$.pipe(retryWithDelay(), take(1), untilDestroy(this)).subscribe(\n\t\t\t\tprogress => {\n\t\t\t\t\tif (progress.status === EScanStatus.Error) {\n\t\t\t\t\t\tthis._handleProgressErrorResponse(progress, endpointsConfig);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (progress?.percents == 100) this.initSync(endpointsConfig);\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis._viewSvc.progress$.next(progress.percents);\n\t\t\t\t\t\tthis._checkScanProgress(progress).then(\n\t\t\t\t\t\t\t_ => {\n\t\t\t\t\t\t\t\tthis.initAsync();\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\terror => {\n\t\t\t\t\t\t\t\tthis._reportErrorsSvc.handleHttpError(error as HttpErrorResponse, 'initReportData');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t(error: HttpErrorResponse) => {\n\t\t\t\t\t// Error handling logic\n\t\t\t\t\tthis._reportErrorsSvc.handleHttpError(error, 'initReportData');\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t}\n\tpublic initSync(endpointsConfig: IClsReportEndpointConfigModel) {\n\t\t// first emit the progress as 100, so no real-time view is rendered\n\t\tthis._viewSvc.progress$.next(100);\n\n\t\tthis._http\n\t\t\t.get<IScanSource>(endpointsConfig.crawledVersion.url, {\n\t\t\t\theaders: this._createHeaders(endpointsConfig.crawledVersion),\n\t\t\t})\n\t\t\t.pipe(retryWithDelay(), untilDestroy(this))\n\t\t\t.subscribe(\n\t\t\t\tcrawledVersionRes => {\n\t\t\t\t\tthis._crawledVersion$.next(crawledVersionRes);\n\n\t\t\t\t\tif (!crawledVersionRes.html?.value && this._viewSvc.reportViewMode.isHtmlView)\n\t\t\t\t\t\tthis._viewSvc.reportViewMode$.next({\n\t\t\t\t\t\t\t...this._viewSvc.reportViewMode,\n\t\t\t\t\t\t\tisHtmlView: false,\n\t\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\t(error: HttpErrorResponse) => {\n\t\t\t\t\tthis._reportErrorsSvc.handleHttpError(error, 'initSync - crawledVersion');\n\t\t\t\t}\n\t\t\t);\n\n\t\tthis._http\n\t\t\t.get<ICompleteResults>(endpointsConfig.completeResults.url, {\n\t\t\t\theaders: this._createHeaders(endpointsConfig.completeResults),\n\t\t\t})\n\t\t\t.pipe(retryWithDelay(), untilDestroy(this))\n\t\t\t.subscribe(\n\t\t\t\tcompleteResultsRes => {\n\t\t\t\t\tthis.completeResultsSnapshot = JSON.parse(JSON.stringify(completeResultsRes));\n\t\t\t\t\tthis._scanResultsPreviews$.next(completeResultsRes);\n\t\t\t\t\t// if the writing feedback endpoint is passed & is enabled in the complete results response then fetch its data\n\t\t\t\t\tif (endpointsConfig.writingFeedback && endpointsConfig.writingFeedback.url && this.isWritingFeedbackEnabled())\n\t\t\t\t\t\tthis._http\n\t\t\t\t\t\t\t.get<IWritingFeedback>(endpointsConfig.writingFeedback?.url, {\n\t\t\t\t\t\t\t\theaders: this._createHeaders(endpointsConfig.writingFeedback),\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.pipe(retryWithDelay(), untilDestroy(this))\n\t\t\t\t\t\t\t.subscribe(\n\t\t\t\t\t\t\t\twritingFeedbackVersionRes => {\n\t\t\t\t\t\t\t\t\tthis._writingFeedback$.next(writingFeedbackVersionRes);\n\t\t\t\t\t\t\t\t\tthis._updateCompleteResults(completeResultsRes);\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t(error: HttpErrorResponse) => {\n\t\t\t\t\t\t\t\t\tthis._reportErrorsSvc.handleHttpError(error, 'initSync - writingFeedback');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t);\n\t\t\t\t\telse this._updateCompleteResults(completeResultsRes);\n\t\t\t\t},\n\t\t\t\t(error: HttpErrorResponse) => {\n\t\t\t\t\tthis._reportErrorsSvc.handleHttpError(error, 'initSync - completeResults');\n\t\t\t\t\tthis.scanResultsDetails$.next([]);\n\t\t\t\t\tthis.scanResultsPreviews$.next({\n\t\t\t\t\t\tresults: {\n\t\t\t\t\t\t\tbatch: [],\n\t\t\t\t\t\t\tinternet: [],\n\t\t\t\t\t\t\tdatabase: [],\n\t\t\t\t\t\t\tscore: {\n\t\t\t\t\t\t\t\taggregatedScore: 0,\n\t\t\t\t\t\t\t\tidenticalWords: 0,\n\t\t\t\t\t\t\t\tminorChangedWords: 0,\n\t\t\t\t\t\t\t\trelatedMeaningWords: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tscannedDocument: {\n\t\t\t\t\t\t\tcredits: 0,\n\t\t\t\t\t\t\tscanId: '',\n\t\t\t\t\t\t\ttotalWords: 0,\n\t\t\t\t\t\t\ttotalExcluded: 0,\n\t\t\t\t\t\t\tcreationTime: '',\n\t\t\t\t\t\t\tenabled: {\n\t\t\t\t\t\t\t\taiDetection: false,\n\t\t\t\t\t\t\t\tplagiarismDetection: false,\n\t\t\t\t\t\t\t\tcheatDetection: false,\n\t\t\t\t\t\t\t\tpdfReport: false,\n\t\t\t\t\t\t\t\twritingFeedback: false,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstatus: EScanStatus.Error,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t);\n\t}\n\n\tpublic async initAsync() {\n\t\tconst ENABLE_REALTIME_MOCK_TESTING = false;\n\t\tlet testCounter = 25;\n\n\t\t// Set the layout view to: one-to-many plagiarism with no selected alerts\n\t\tthis._viewSvc.selectedAlert$.next(null);\n\t\tthis._viewSvc.reportViewMode$.next({\n\t\t\tviewMode: 'one-to-many',\n\t\t\talertCode: undefined,\n\t\t\tsuspectId: undefined,\n\t\t\t...this._viewSvc.reportViewMode,\n\t\t});\n\n\t\tthis.isRealTimeView$.next(true);\n\n\t\t// subscribtion to stop the 10 sec inteval when the progress is 100% and the report data is loaded\n\t\tvar _realTimeUpdateSub = new Subject();\n\t\tinterval(5000)\n\t\t\t.pipe(\n\t\t\t\tconcatMap(() => this._getReportScanProgress()),\n\t\t\t\tuntilDestroy(this),\n\t\t\t\ttakeUntil(_realTimeUpdateSub)\n\t\t\t)\n\t\t\t.subscribe(\n\t\t\t\tprogress => {\n\t\t\t\t\tif (ENABLE_REALTIME_MOCK_TESTING) {\n\t\t\t\t\t\tif (testCounter < 80) {\n\t\t\t\t\t\t\ttestCounter += Math.floor(Math.random() * 26);\n\t\t\t\t\t\t\tprogress.percents = testCounter;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttestCounter = 100;\n\t\t\t\t\t\t\tprogress.percents = 100;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (progress.percents >= 0 && progress.percents <= 100) {\n\t\t\t\t\t\tthis._viewSvc.progress$.next(progress.percents);\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._checkScanProgress(progress)\n\t\t\t\t\t\t.catch(error => {\n\t\t\t\t\t\t\tthis._reportErrorsSvc.handleHttpError(error as HttpErrorResponse, '_checkScanProgress');\n\t\t\t\t\t\t\t_realTimeUpdateSub.next(null);\n\t\t\t\t\t\t\t_realTimeUpdateSub.complete();\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.finally(() => {\n\t\t\t\t\t\t\tif (progress.percents === 100) {\n\t\t\t\t\t\t\t\t_realTimeUpdateSub.next(null);\n\t\t\t\t\t\t\t\t_realTimeUpdateSub.complete();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\t(error: HttpErrorResponse) => {\n\t\t\t\t\t// Error handling logic here\n\t\t\t\t\tthis._reportErrorsSvc.handleHttpError(error, 'getReportScanProgress');\n\t\t\t\t\t_realTimeUpdateSub.next(null);\n\t\t\t\t\t_realTimeUpdateSub.complete();\n\t\t\t\t}\n\t\t\t);\n\t}\n\n\tpublic loadViewedResultsDetails(firstLoad: boolean = false) {\n\t\tconst cachedResults = this._scanResultsDetails$.getValue();\n\n\t\tif (cachedResults?.length === this.totalCompleteResults || !this.filterOptions || !this.excludedResultsIds) {\n\t\t\tthis._loadingMoreResults$.next(false);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._loadingMoreResults$.next(true);\n\n\t\tlet resultsIds = this.filterPreviewedResults(this.filterOptions, this.excludedResultsIds);\n\t\tresultsIds = resultsIds.filter(id => !this._scanResultsDetails$.value?.find(r => r.id === id));\n\n\t\t// But the results ids in a list of batches (10 each)\n\t\tconst batchSize = 10;\n\t\tconst idBatches = [];\n\t\tfor (let i = 0; i < resultsIds.length; i += batchSize) {\n\t\t\tidBatches.push(resultsIds.slice(i, i + batchSize));\n\t\t}\n\n\t\t// Calculate the total number of batches you'll have\n\t\tconst totalBatches = idBatches.length;\n\t\tlet currentBatchIndex = 0; // Initialize a variable to keep track of the current batch index\n\n\t\tif (totalBatches === 0) {\n\t\t\tif (this.totalCompleteResults === 0 || firstLoad) this._scanResultsDetails$.next([]);\n\t\t\tthis._loadingMoreResults$.next(false);\n\t\t}\n\n\t\tthis._loadedResultsDetails$ = [...(this._scanResultsDetails$.value ?? [])];\n\t\t// Send the GET results requests in batches\n\t\tconst fetchResultsBatches = from(idBatches);\n\t\tfetchResultsBatches\n\t\t\t.pipe(\n\t\t\t\tconcatMap(ids => {\n\t\t\t\t\tcurrentBatchIndex++; // Increment the current batch index each time a new batch starts\n\t\t\t\t\treturn forkJoin(...ids.map(id => this.getReportResultAsync(id)));\n\t\t\t\t}),\n\t\t\t\tuntilDestroy(this)\n\t\t\t)\n\t\t\t.subscribe((results: ResultDetailItem[]) => {\n\t\t\t\tif (results) {\n\t\t\t\t\t// Add the new fetched results to the Cache subject\n\t\t\t\t\tthis._loadedResultsDetails$ = [...this._loadedResultsDetails$, ...results] as ResultDetailItem[];\n\n\t\t\t\t\t// Check if this is the last batch\n\t\t\t\t\tif (currentBatchIndex === totalBatches) {\n\t\t\t\t\t\tthis._scanResultsDetails$.next(this._loadedResultsDetails$);\n\t\t\t\t\t\tthis._loadingMoreResults$.next(false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tpublic async getReportResultAsync(resultId: string, throwError: boolean = false) {\n\t\tif (!this._reportEndpointConfig$?.value?.result) return;\n\n\t\tvar requestUrl = this._reportEndpointConfig$.value.result.url.replace('{RESULT_ID}', resultId);\n\n\t\ttry {\n\t\t\tconst response = await this._http\n\t\t\t\t.get<IResultDetailResponse>(requestUrl, {\n\t\t\t\t\theaders: this._createHeaders(this._reportEndpointConfig$?.value.result),\n\t\t\t\t})\n\t\t\t\t.pipe(retryWithDelay())\n\t\t\t\t.toPromise();\n\n\t\t\treturn {\n\t\t\t\tid: resultId,\n\t\t\t\tresult: response,\n\t\t\t} as ResultDetailItem;\n\t\t} catch (error) {\n\t\t\t// Error handling logic\n\t\t\tthis._reportErrorsSvc.handleHttpError(error as HttpErrorResponse, 'getReportResultAsync');\n\t\t\tif (throwError) throw error;\n\t\t}\n\t}\n\n\tpublic filterResults(settings?: ICopyleaksReportOptions, excludedResultsIds?: string[]): ResultDetailItem[] {\n\t\tif (!this.scanResultsDetails || !this.scanResultsPreviews || !settings || !excludedResultsIds) return [];\n\n\t\tlet completeResults = [\n\t\t\t...(this.scanResultsPreviews$.value?.results.internet ?? []),\n\t\t\t...(this.scanResultsPreviews$.value?.results.batch ?? []),\n\t\t\t...(this.scanResultsPreviews$.value?.results.database ?? []),\n\t\t\t...(this.scanResultsPreviews$.value?.results.repositories ?? []),\n\t\t];\n\n\t\tlet filteredResultsIds = this._getFilteredResultsIds(settings, completeResults, excludedResultsIds);\n\n\t\t// check if a match hiding will make one of the results score zero, if so filter theses results out\n\t\tlet resultsUpdateStatistics = this.scanResultsDetails\n\t\t\t.filter(r => r != undefined)\n\t\t\t.map(r => {\n\t\t\t\treturn {\n\t\t\t\t\t...r,\n\t\t\t\t\tresult: {\n\t\t\t\t\t\t...r.result,\n\t\t\t\t\t\tstatistics: {\n\t\t\t\t\t\t\tidentical: r.result?.statistics?.identical,\n\t\t\t\t\t\t\tminorChanges: r.result?.statistics?.minorChanges,\n\t\t\t\t\t\t\trelatedMeaning: r.result?.statistics?.relatedMeaning,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t} as ResultDetailItem;\n\t\t\t});\n\t\tresultsUpdateStatistics.forEach(r => {\n\t\t\tif (!settings.showIdentical && r.result?.statistics.identical != undefined) r.result.statistics.identical = 0;\n\t\t\tif (!settings.showMinorChanges && r.result?.statistics.minorChanges != undefined)\n\t\t\t\tr.result.statistics.minorChanges = 0;\n\t\t\tif (!settings.showRelated && r.result?.statistics.relatedMeaning != undefined)\n\t\t\t\tr.result.statistics.relatedMeaning = 0;\n\t\t});\n\n\t\tfilteredResultsIds = filteredResultsIds.filter(id =>\n\t\t\tresultsUpdateStatistics.find(\n\t\t\t\tcr =>\n\t\t\t\t\t(cr.id === id &&\n\t\t\t\t\t\t// check if after the percentage transform, the viewed percentage will be 0.0\n\t\t\t\t\t\tthis._percentPipe.transform(\n\t\t\t\t\t\t\t((cr.result?.statistics?.relatedMeaning ?? 0) +\n\t\t\t\t\t\t\t\t(cr.result?.statistics?.minorChanges ?? 0) +\n\t\t\t\t\t\t\t\t(cr.result?.statistics?.identical ?? 0)) /\n\t\t\t\t\t\t\t\t((this.scanResultsPreviews?.scannedDocument.totalWords ?? 0) -\n\t\t\t\t\t\t\t\t\t(this.scanResultsPreviews?.scannedDocument.totalExcluded ?? 0)),\n\t\t\t\t\t\t\t'1.0-1'\n\t\t\t\t\t\t) !== '0%') ||\n\t\t\t\t\t// for compare scan situation: check if the filter match options are on, then don't hide the results with zero matches\n\t\t\t\t\t(settings.showIdentical &&\n\t\t\t\t\t\tsettings.showRelated &&\n\t\t\t\t\t\tsettings.showMinorChanges &&\n\t\t\t\t\t\tthis._percentPipe.transform(\n\t\t\t\t\t\t\t((cr.result?.statistics?.relatedMeaning ?? 0) +\n\t\t\t\t\t\t\t\t(cr.result?.statistics?.minorChanges ?? 0) +\n\t\t\t\t\t\t\t\t(cr.result?.statistics?.identical ?? 0)) /\n\t\t\t\t\t\t\t\t((this.scanResultsPreviews?.scannedDocument.totalWords ?? 0) -\n\t\t\t\t\t\t\t\t\t(this.scanResultsPreviews?.scannedDocument.totalExcluded ?? 0)),\n\t\t\t\t\t\t\t'1.0-1'\n\t\t\t\t\t\t) === '0%')\n\t\t\t)\n\t\t);\n\n\t\tvar result = this.scanResultsDetails.filter(r => !!filteredResultsIds.find(id => r.id === id));\n\t\treturn this._removeDuplicates(result, 'id');\n\t}\n\n\tprivate _removeDuplicates(array: ResultDetailItem[], property: string) {\n\t\tconst seen = new Set();\n\t\treturn array.filter((obj: any) => {\n\t\t\tconst value = obj[property];\n\t\t\tif (!seen.has(value)) {\n\t\t\t\tseen.add(value);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t});\n\t}\n\n\tpublic filterPreviewedResults(settings: ICopyleaksReportOptions, excludedResultsIds: string[]): string[] {\n\t\tif (!this.scanResultsPreviews || !settings || !excludedResultsIds) return [];\n\n\t\tlet completeResults = [\n\t\t\t...(this.scanResultsPreviews$.value?.results.internet ?? []),\n\t\t\t...(this.scanResultsPreviews$.value?.results.batch ?? []),\n\t\t\t...(this.scanResultsPreviews$.value?.results.database ?? []),\n\t\t\t...(this.scanResultsPreviews$.value?.results.repositories ?? []),\n\t\t];\n\n\t\tlet filteredResultsIds = this._getFilteredResultsIds(settings, completeResults, excludedResultsIds);\n\n\t\treturn filteredResultsIds;\n\t}\n\n\tpublic hasNonAIAlerts() {\n\t\tconst completeResult = this.scanResultsPreviews;\n\t\tif (completeResult === undefined) return null;\n\t\tif (\n\t\t\t(completeResult?.notifications?.alerts?.filter(s => s.code != ALERTS.SUSPECTED_AI_TEXT_DETECTED)?.length ?? 0) > 0\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic isPlagiarismEnabled() {\n\t\tconst completeResult = this.scanResultsPreviews;\n\t\tif (this._viewSvc.progress$.value != 100) return true;\n\t\tif (!completeResult) return false;\n\t\tif (completeResult) {\n\t\t\tif (completeResult?.scannedDocument?.enabled?.plagiarismDetection != null)\n\t\t\t\treturn completeResult?.scannedDocument?.enabled?.plagiarismDetection;\n\t\t}\n\t\treturn true;\n\t}\n\n\tpublic isAiDetectionEnabled() {\n\t\tconst completeResult = this.scanResultsPreviews;\n\t\tif (this._viewSvc.progress$.value != 100) return true;\n\t\tif (completeResult) {\n\t\t\tif (completeResult?.scannedDocument?.enabled?.aiDetection) return true;\n\t\t\treturn (\n\t\t\t\tcompleteResult?.notifications?.alerts?.length &&\n\t\t\t\tcompleteResult?.notifications?.alerts.filter(alert => alert.code == ALERTS.SUSPECTED_AI_TEXT_DETECTED).length ==\n\t\t\t\t\t1\n\t\t\t);\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic isAiSourceMatchEnabled() {\n\t\tconst completeResult = this.scanResultsPreviews;\n\t\tif (this._viewSvc.progress$.value != 100) return true;\n\t\tif (completeResult?.scannedDocument?.enabled?.aiSourceMatch) return true;\n\t\treturn false;\n\t}\n\n\tpublic isWritingFeedbackEnabled() {\n\t\tconst completeResult = this.scanResultsPreviews;\n\t\tif (this._viewSvc.progress$.value != 100) return true;\n\t\tif (!completeResult || !this.reportEndpointConfig?.writingFeedback) return false;\n\t\tif (\n\t\t\tcompleteResult?.notifications?.alerts?.length &&\n\t\t\tcompleteResult?.notifications?.alerts.filter(\n\t\t\t\talert =>\n\t\t\t\t\talert.code == ALERTS.WRITING_FEEDBACK_LANG_NOT_SUPPORTED || alert.code == ALERTS.WRITING_FEEDBACK_FAILED\n\t\t\t).length >= 1\n\t\t)\n\t\t\treturn false;\n\t\tif (completeResult?.scannedDocument?.enabled?.writingFeedback != null)\n\t\t\treturn completeResult?.scannedDocument?.enabled?.writingFeedback;\n\t\treturn false;\n\t}\n\n\tpublic getAiScore() {\n\t\tif (this.isAiDetectionEnabled()) {\n\t\t\tconst completeResult = this.scanResultsPreviews;\n\t\t\tif (completeResult === undefined) return null;\n\t\t\tconst aiAlert = completeResult.notifications?.alerts.find(\n\t\t\t\talert => alert.code == ALERTS.SUSPECTED_AI_TEXT_DETECTED\n\t\t\t);\n\t\t\tif (aiAlert) {\n\t\t\t\tconst aiData = JSON.parse(aiAlert.additionalData) as AIScanResult;\n\t\t\t\treturn aiData.summary.ai;\n\t\t\t}\n\t\t\treturn 0;\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic getWritingFeedbackScore() {\n\t\tif (this.isWritingFeedbackEnabled()) {\n\t\t\tconst completeResult = this.scanResultsPreviews;\n\t\t\tif (completeResult === undefined || !completeResult.writingFeedback) return null;\n\t\t\treturn completeResult.writingFeedback.score.overallScore;\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic clearFilter() {\n\t\t// Load the filter options from the complete results response\n\t\tthis.filterOptions$.next({\n\t\t\tshowIdentical: true,\n\t\t\tshowMinorChanges: true,\n\t\t\tshowRelated: true,\n\n\t\t\tshowAlerts: true,\n\t\t\tshowTop100Results: false,\n\t\t\tshowSameAuthorSubmissions: true,\n\n\t\t\tincludedTags: [],\n\n\t\t\tshowInternetResults: true,\n\t\t\tshowInternalDatabaseResults: true,\n\t\t\tshowYourResults: true,\n\t\t\tshowOthersResults: true,\n\t\t\tshowAISourceMatch: true,\n\n\t\t\tshowBatchResults: true,\n\t\t\thiddenRepositories: [],\n\n\t\t\twordLimit: undefined,\n\n\t\t\tincludeResultsWithoutDate: true,\n\t\t\tpublicationDate: undefined,\n\n\t\t\twritingFeedback: {\n\t\t\t\thiddenCategories: this.filterOptions?.writingFeedback?.hiddenCategories ?? [],\n\t\t\t},\n\t\t});\n\t}\n\n\tpublic clearCorrectionsFilter() {\n\t\t// Load the filter options from the complete results response\n\t\tthis.filterOptions$.next({\n\t\t\t...this.filterOptions,\n\t\t\twritingFeedback: {\n\t\t\t\thiddenCategories: [],\n\t\t\t},\n\t\t});\n\t}\n\n\tpublic async deleteResultById(resultInfo: IResultItem): Promise<void> {\n\t\tif (\n\t\t\t!this._reportEndpointConfig$.value ||\n\t\t\t!this._reportEndpointConfig$.value.deleteResult?.url ||\n\t\t\t!this.scanResultsPreviews ||\n\t\t\t!resultInfo ||\n\t\t\t!resultInfo.resultDetails\n\t\t)\n\t\t\treturn;\n\n\t\ttry {\n\t\t\tlet filteredResults = this.filterResults(this.filterOptions, this.excludedResultsIds);\n\t\t\tfilteredResults = filteredResults.filter(result => result.id != resultInfo.resultPreview?.id);\n\t\t\tconst stats = helpers.calculateStatistics(this.scanResultsPreviews, filteredResults, this.filterOptions);\n\n\t\t\t// Build the request model & URL\n\t\t\tvar requestUrl = this._reportEndpointConfig$.value.deleteResult.url.replace(\n\t\t\t\t'{RESULT_ID}',\n\t\t\t\tresultInfo.resultDetails.id\n\t\t\t);\n\t\t\tvar requestModel: IDeleteScanResultModel = {\n\t\t\t\tresultId: resultInfo.resultDetails.id,\n\t\t\t\t/** */\n\t\t\t\ttotalWords: this.scanResultsPreviews.scannedDocument.totalWords,\n\t\t\t\ttotalExcluded: this.scanResultsPreviews.scannedDocument.totalExcluded,\n\t\t\t\t/** */\n\t\t\t\taggregatedScore: stats.aggregatedScore ?? 0,\n\t\t\t\tidenticalWords: stats.identical ?? 0,\n\t\t\t\tminorChangedWords: stats.minorChanges ?? 0,\n\t\t\t\trelatedMeaningWords: stats.relatedMeaning ?? 0,\n\t\t\t};\n\n\t\t\t// Send the delete request & update UI accordingly if the request was successful\n\t\t\tawait this._http\n\t\t\t\t.patch(requestUrl, requestModel, {\n\t\t\t\t\theaders: this._createHeaders(this._reportEndpointConfig$.value.deleteResult),\n\t\t\t\t})\n\t\t\t\t.pipe(retryWithDelay())\n\t\t\t\t.toPromise();\n\n\t\t\t// Function to find and remove an result by ID from a the give results list\n\t\t\tconst removeResultById = (results: IResultPreviewBase[]) => {\n\t\t\t\tconst index = results.findIndex(result => result.id === resultInfo.resultDetails?.id);\n\t\t\t\tif (index !== -1) {\n\t\t\t\t\tresults.splice(index, 1);\n\t\t\t\t\tif (!this.scanResultsPreviews) return;\n\t\t\t\t\tthis.scanResultsPreviews$.next({\n\t\t\t\t\t\t...this.scanResultsPreviews,\n\t\t\t\t\t\tresults: {\n\t\t\t\t\t\t\t...this.scanResultsPreviews.results,\n\t\t\t\t\t\t\tscore: {\n\t\t\t\t\t\t\t\taggregatedScore: stats.aggregatedScore ?? 0,\n\t\t\t\t\t\t\t\tidenticalWords: stats.identical ?? 0,\n\t\t\t\t\t\t\t\tminorChangedWords: stats.minorChanges ?? 0,\n\t\t\t\t\t\t\t\trelatedMeaningWords: stats.relatedMeaning ?? 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// Remove the result *if found* from the complete results & update the score\n\t\t\tif (this.scanResultsPreviews?.results?.internet) removeResultById(this.scanResultsPreviews.results.internet);\n\t\t\tif (this.scanResultsPreviews?.results?.database) removeResultById(this.scanResultsPreviews?.results?.database);\n\t\t\tif (this.scanResultsPreviews?.results?.batch) removeResultById(this.scanResultsPreviews?.results?.batch);\n\t\t\tif (this.scanResultsPreviews?.results?.repositories)\n\t\t\t\tremoveResultById(this.scanResultsPreviews?.results?.repositories);\n\n\t\t\t// Remove the result *if found* from the results details list\n\t\t\tif (this.scanResultsDetails) {\n\t\t\t\tconst index = this.scanResultsDetails.findIndex(result => result.id === resultInfo.resultDetails?.id);\n\t\t\t\tif (index !== -1) {\n\t\t\t\t\tthis.scanResultsDetails.splice(index, 1);\n\t\t\t\t\tthis.scanResultsDetails$.next(this.scanResultsDetails);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tthis._reportErrorsSvc.handleHttpError(error as HttpErrorResponse, 'deleteResultById');\n\t\t}\n\t}\n\n\tpublic filterCorrections(\n\t\tcorrections: IWritingFeedbackScanScource,\n\t\tfilterOptions: ICopyleaksReportOptions,\n\t\texcludedCorrections: IWritingFeedbackCorrectionViewModel[]\n\t): IWritingFeedbackScanScource {\n\t\t// Filter indices where the type matches any of the corrections hidden categories\n\n\t\tlet htmlFilteredFeedback: IHtmlWritingFeedbackRange;\n\t\tconst hasHtml =\n\t\t\t!!corrections?.html?.chars &&\n\t\t\t!!corrections?.html?.chars.types &&\n\t\t\t!!corrections?.html?.chars.groupIds &&\n\t\t\t!!corrections?.html?.chars.lengths &&\n\t\t\t!!corrections?.html?.chars.starts;\n\t\tif (hasHtml) {\n\t\t\tconst htmlFilterIndices = corrections?.html?.chars.types.reduce((indices, currentType, index) => {\n\t\t\t\tconst groupId = corrections?.html?.chars.groupIds[index];\n\t\t\t\tconst start = corrections.text.chars.starts[groupId];\n\t\t\t\tconst length = corrections.text.chars.lengths[groupId];\n\t\t\t\tif (\n\t\t\t\t\t(filterOptions?.writingFeedback?.hiddenCategories ?? []).includes(currentType) ||\n\t\t\t\t\t(excludedCorrections ?? []).find(ex => ex.start === start && ex.end === start + length)\n\t\t\t\t) {\n\t\t\t\t\tindices.push(index);\n\t\t\t\t}\n\t\t\t\treturn indices;\n\t\t\t}, [] as number[]);\n\n\t\t\t// Update both the text & html corrections ranges to filter the hidden categories\n\t\t\thtmlFilteredFeedback = {\n\t\t\t\tstarts: corrections?.html?.chars.starts.filter((_, index) => !htmlFilterIndices.includes(index)),\n\t\t\t\tlengths: corrections?.html?.chars.lengths.filter((_, index) => !htmlFilterIndices.includes(index)),\n\t\t\t\ttypes: corrections?.html?.chars.types.filter((_, index) => !htmlFilterIndices.includes(index)),\n\t\t\t\toperationTexts: corrections?.html?.chars.operationTexts.filter(\n\t\t\t\t\t(_, index) => !htmlFilterIndices.includes(index)\n\t\t\t\t),\n\t\t\t\tgroupIds: corrections?.html?.chars.groupIds.filter((_, index) => !htmlFilterIndices.includes(index)),\n\t\t\t};\n\t\t}\n\n\t\tconst textFilterIndices = corrections.text.chars.types.reduce((indices, currentType, index) => {\n\t\t\tconst start = corrections.text.chars.starts[index];\n\t\t\tconst length = corrections.text.chars.lengths[index];\n\t\t\tif (\n\t\t\t\t(filterOptions?.writingFeedback?.hiddenCategories ?? []).includes(currentType) ||\n\t\t\t\t(excludedCorrections ?? []).find(ex => ex.start === start && ex.end === start + length)\n\t\t\t) {\n\t\t\t\tindices.push(index);\n\t\t\t}\n\t\t\treturn indices;\n\t\t}, [] as number[]);\n\t\tconst textFilteredFeedback: IWritingFeedbackRange = {\n\t\t\tstarts: corrections.text.chars.starts.filter((_, index) => !textFilterIndices.includes(index)),\n\t\t\tlengths: corrections.text.chars.lengths.filter((_, index) => !textFilterIndices.includes(index)),\n\t\t\ttypes: corrections.text.chars.types.filter((_, index) => !textFilterIndices.includes(index)),\n\t\t\toperationTexts: corrections.text.chars.operationTexts.filter((_, index) => !textFilterIndices.includes(index)),\n\t\t};\n\n\t\tcorrections.text.chars = textFilteredFeedback;\n\t\tif (hasHtml) corrections.html.chars = htmlFilteredFeedback;\n\n\t\treturn corrections;\n\t}\n\n\tprivate _handleProgressErrorResponse(progress: IAPIProgress, endpointsConfig: IClsReportEndpointConfigModel) {\n\t\tthis._viewSvc.progress$.next(100);\n\t\tconst errorMessage = ERROR_MESSAGES[progress.errorCode] || $localize`Scan failed`;\n\t\tthrow {\n\t\t\tstatus: 500,\n\t\t\tstatusText: errorMessage,\n\t\t\turl: endpointsConfig.progress.url,\n\t\t\theaders: new HttpHeaders(),\n\t\t\terror: new Error(errorMessage),\n\t\t\tmessage: errorMessage,\n\t\t} as HttpErrorResponse;\n\t}\n\n\tprivate async _checkScanProgress(progress: IAPIProgress) {\n\t\tif (progress.status === EScanStatus.Error) {\n\t\t\tthis._handleProgressErrorResponse(progress, this._reportEndpointConfig$.value);\n\t\t\treturn;\n\t\t}\n\n\t\tif (progress.percents < 100 && progress.percents > 36 && !this._crawledVersion$.value) {\n\t\t\tconst crawledVersion = await this._getReportCrawledVersion();\n\t\t\tthis._crawledVersion$.next(crawledVersion);\n\n\t\t\tif (!crawledVersion?.html.value)\n\t\t\t\tthis._viewSvc.reportViewMode$.next({\n\t\t\t\t\t...this._viewSvc.reportViewMode,\n\t\t\t\t\tisHtmlView: false,\n\t\t\t\t});\n\t\t} else if (progress.percents === 100) {\n\t\t\tconst completeResults = await this._getReportCompleteResults();\n\t\t\tthis.completeResultsSnapshot = JSON.parse(JSON.stringify(completeResults));\n\t\t\tthis._scanResultsPreviews$.next(completeResults);\n\t\t\tthis._updateCompleteResults(completeResults);\n\n\t\t\tif (!this._crawledVersion$.value) {\n\t\t\t\tconst crawledVersion = await this._getReportCrawledVersion();\n\t\t\t\tthis._crawledVersion$.next(crawledVersion);\n\n\t\t\t\tif (!crawledVersion?.html.value)\n\t\t\t\t\tthis._viewSvc.reportViewMode$.next({\n\t\t\t\t\t\t...this._viewSvc.reportViewMode,\n\t\t\t\t\t\tisHtmlView: false,\n\t\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tthis.reportEndpointConfig.writingFeedback &&\n\t\t\t\tthis.reportEndpointConfig.writingFeedback.url &&\n\t\t\t\tthis.isWritingFeedbackEnabled()\n\t\t\t) {\n\t\t\t\tconst writingFeedback = await this._getReportWritingFeedback();\n\t\t\t\tthis._writingFeedback$.next(writingFeedback);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _updateCompleteResults(completeResultsRes?: ICompleteResults) {\n\t\tif (!completeResultsRes) return;\n\n\t\tcompleteResultsRes.results.batch.forEach(result => {\n\t\t\tresult.type = EResultPreviewType.Batch;\n\t\t});\n\t\tcompleteResultsRes.results.database.forEach(result => {\n\t\t\tresult.type = EResultPreviewType.Database;\n\t\t});\n\t\tcompleteResultsRes.results.internet.forEach(result => {\n\t\t\tresult.type = EResultPreviewType.Internet;\n\t\t});\n\t\tcompleteResultsRes.results?.repositories?.forEach(result => {\n\t\t\tresult.type = EResultPreviewType.Repositroy;\n\t\t});\n\n\t\t// Load the excluded results Ids\n\t\tthis._excludedResultsIds$.next(completeResultsRes.filters?.execludedResultIds ?? []);\n\n\t\t// Load the excluded corrections\n\t\tthis._excludedCorrections$.next(completeResultsRes.filters?.writingFeedback?.excludedCorrections ?? []);\n\n\t\t// Load the filter options from the complete results response\n\t\tthis._filterOptions$.next({\n\t\t\tshowIdentical:\n\t\t\t\tcompleteResultsRes.filters?.matchType?.identicalText != undefined\n\t\t\t\t\t? completeResultsRes.filters?.matchType?.identicalText\n\t\t\t\t\t: true,\n\t\t\tshowMinorChanges:\n\t\t\t\tcompleteResultsRes.filters?.matchType?.minorChanges != undefined\n\t\t\t\t\t? completeResultsRes.filters?.matchType?.minorChanges\n\t\t\t\t\t: true,\n\t\t\tshowRelated:\n\t\t\t\tcompleteResultsRes.filters?.matchType?.paraphrased != undefined\n\t\t\t\t\t? completeResultsRes.filters?.matchType?.paraphrased\n\t\t\t\t\t: true,\n\n\t\t\tshowAlerts:\n\t\t\t\tcompleteResultsRes.filters?.general?.alerts != undefined ? completeResultsRes.filters?.general?.alerts : true,\n\t\t\tshowTop100Results:\n\t\t\t\tcompleteResultsRes.filters?.general?.topResult != undefined\n\t\t\t\t\t? completeResultsRes.filters?.general?.topResult\n\t\t\t\t\t: true,\n\t\t\tshowSameAuthorSubmissions:\n\t\t\t\tcompleteResultsRes.filters?.general?.authorSubmissions != undefined\n\t\t\t\t\t? completeResultsRes.filters?.general?.authorSubmissions\n\t\t\t\t\t: true,\n\n\t\t\tincludedTags: completeResultsRes.filters?.includedTags,\n\n\t\t\tshowInternetResults:\n\t\t\t\tcompleteResultsRes.filters?.sourceType?.internet != undefined\n\t\t\t\t\t? completeResultsRes.filters?.sourceType?.internet\n\t\t\t\t\t: true,\n\t\t\tshowInternalDatabaseResults:\n\t\t\t\tcompleteResultsRes.filters?.sourceType?.yourResults != undefined &&\n\t\t\t\tcompleteResultsRes.filters?.sourceType?.othersResults != undefined\n\t\t\t\t\t? completeResultsRes.filters?.sourceType?.yourResults || completeResultsRes.filters?.sourceType?.othersResults\n\t\t\t\t\t: completeResultsRes.filters?.sourceType?.internalDatabase != undefined\n\t\t\t\t\t? completeResultsRes.filters?.sourceType?.internalDatabase\n\t\t\t\t\t: true,\n\t\t\tshowYourResults:\n\t\t\t\tcompleteResultsRes.filters?.sourceType?.yourResults != undefined\n\t\t\t\t\t? completeResultsRes.filters?.sourceType?.yourResults\n\t\t\t\t\t: completeResultsRes.filters?.sourceType?.internalDatabase != undefined\n\t\t\t\t\t? completeResultsRes.filters?.sourceType?.internalDatabase\n\t\t\t\t\t: true,\n\t\t\tshowOthersResults:\n\t\t\t\tcompleteResultsRes.filters?.sourceType?.othersResults != undefined\n\t\t\t\t\t? completeResultsRes.filters?.sourceType?.othersResults\n\t\t\t\t\t: completeResultsRes.filters?.sourceType?.internalDatabase != undefined\n\t\t\t\t\t? completeResultsRes.filters?.sourceType?.internalDatabase\n\t\t\t\t\t: true,\n\t\t\tshowBatchResults:\n\t\t\t\tcompleteResultsRes.filters?.sourceType?.batch != undefined\n\t\t\t\t\t? completeResultsRes.filters?.sourceType?.batch\n\t\t\t\t\t: true,\n\t\t\thiddenRepositories: completeResultsRes.filters?.sourceType?.repositories,\n\t\t\tshowAISourceMatch:\n\t\t\t\tcompleteResultsRes.filters?.sourceType?.aiSourceMatch != undefined\n\t\t\t\t\t? completeResultsRes.filters?.sourceType?.aiSourceMatch\n\t\t\t\t\t: true,\n\n\t\t\twordLimit: completeResultsRes.filters?.resultsMetaData?.wordLimit?.wordLimitEnabled\n\t\t\t\t? completeResultsRes.filters?.resultsMetaData?.wordLimit?.totalWordLimit\n\t\t\t\t: undefined,\n\n\t\t\tincludeResultsWithoutDate:\n\t\t\t\tcompleteResultsRes.filters?.resultsMetaData?.publicationDate?.resultsWithNoDates != undefined\n\t\t\t\t\t? completeResultsRes.filters?.resultsMetaData?.publicationDate?.resultsWithNoDates\n\t\t\t\t\t: true,\n\t\t\tpublicationDate: completeResultsRes.filters?.resultsMetaData?.publicationDate?.startDate,\n\t\t\twritingFeedback: {\n\t\t\t\thiddenCategories: completeResultsRes.filters?.writingFeedback?.hiddenCategories ?? [],\n\t\t\t},\n\t\t\texcludedDomains: completeResultsRes.filters?.excludedDomains ?? [],\n\t\t});\n\n\t\tconst filteredResults = this.filterResults(this.filterOptions, this.excludedResultsIds);\n\t\tlet filteredCorrections: IWritingFeedbackScanScource;\n\t\tif (this.writingFeedback) {\n\t\t\tfilteredCorrections = this.filterCorrections(\n\t\t\t\tJSON.parse(JSON.stringify(this.writingFeedback?.corrections)),\n\t\t\t\tthis.filterOptions,\n\t\t\t\tthis.excludedCorrections\n\t\t\t);\n\t\t}\n\t\tconst stats: ReportStatistics = this._getReportStats(\n\t\t\tfilteredResults,\n\t\t\tcompleteResultsRes,\n\t\t\tfilteredCorrections,\n\t\t\tthis.writingFeedback\n\t\t);\n\n\t\tthis._scanResultsPreviews$.next({\n\t\t\t...completeResultsRes,\n\t\t\tresults: {\n\t\t\t\t...completeResultsRes.results,\n\t\t\t\tscore: {\n\t\t\t\t\tidenticalWords: stats.identical,\n\t\t\t\t\tminorChangedWords: stats.minorChanges,\n\t\t\t\t\trelatedMeaningWords: stats.relatedMeaning,\n\t\t\t\t\taggregatedScore: this.isPlagiarismEnabled() ? stats.aggregatedScore ?? 0 : null,\n\t\t\t\t\twritingFeedbackOverallIssues: this.isWritingFeedbackEnabled() ? stats.writingFeedbackOverallIssues : null,\n\t\t\t\t\twritingFeedbackOverallScore: this.isWritingFeedbackEnabled() ? stats.writingFeedbackOverallScore : null,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfilters: {\n\t\t\t\tgeneral: {\n\t\t\t\t\talerts: this.filterOptions?.showAlerts ?? true,\n\t\t\t\t\tauthorSubmissions: this.filterOptions?.showSameAuthorSubmissions ?? true,\n\t\t\t\t\ttopResult: this.filterOptions?.showTop100Results ?? true,\n\t\t\t\t},\n\t\t\t\tincludedTags: this.filterOptions?.includedTags,\n\t\t\t\tmatchType: {\n\t\t\t\t\tidenticalText: this.filterOptions?.showIdentical ?? true,\n\t\t\t\t\tminorChanges: this.filterOptions?.showMinorChanges ?? true,\n\t\t\t\t\tparaphrased: this.filterOptions?.showRelated ?? true,\n\t\t\t\t},\n\t\t\t\tresultsMetaData: {\n\t\t\t\t\tpublicationDate: {\n\t\t\t\t\t\tpublicationEnabled: !!this.filterOptions?.publicationDate,\n\t\t\t\t\t\tresultsWithNoDates: this.filterOptions?.includeResultsWithoutDate ?? true,\n\t\t\t\t\t\tstartDate: this.filterOptions?.publicationDate,\n\t\t\t\t\t},\n\t\t\t\t\twordLimit: {\n\t\t\t\t\t\twordLimitEnabled: !!this.filterOptions?.wordLimit,\n\t\t\t\t\t\ttotalWordLimit: this.filterOptions?.wordLimit,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tsourceType: {\n\t\t\t\t\tbatch: this.filterOptions?.showBatchResults ?? true,\n\t\t\t\t\tinternalDatabase: this.filterOptions?.showYourResults || this.filterOptions?.showOthersResults,\n\t\t\t\t\tinternet: this.filterOptions?.showInternetResults ?? true,\n\t\t\t\t\trepositories: this.filterOptions?.hiddenRepositories ?? [],\n\t\t\t\t\tyourResults: this.filterOptions?.showYourResults ?? true,\n\t\t\t\t\tothersResults: this.filterOptions?.showOthersResults ?? true,\n\t\t\t\t\taiSourceMatch: this.filterOptions?.showAISourceMatch ?? true,\n\t\t\t\t},\n\t\t\t\texecludedResultIds: this.excludedResultsIds ?? [],\n\t\t\t\tfilteredResultIds: [],\n\t\t\t\texcludedDomains: this.filterOptions?.excludedDomains ?? [],\n\t\t\t},\n\t\t});\n\n\t\tif (this.filterOptions && this.excludedResultsIds) {\n\t\t\t// Load all the complete scan results\n\t\t\tthis.loadViewedResultsDetails(this.isRealTimeView ? false : true);\n\t\t}\n\t}\n\n\tprivate _getReportStats(\n\t\tfilteredResults: ResultDetailItem[],\n\t\tcompleteResultsRes: ICompleteResults,\n\t\tfilteredCorrections?: IWritingFeedbackScanScource,\n\t\twritingFeedback?: IWritingFeedback\n\t) {\n\t\tconst showAll =\n\t\t\tthis.filterOptions?.showIdentical && this.filterOptions?.showMinorChanges && this.filterOptions?.showRelated;\n\n\t\tconst numberOfOriginalResults = this.totalOriginalCompleteResults;\n\t\tlet stats: ReportStatistics;\n\t\tif (\n\t\t\tthis.totalCompleteResults != filteredResults.length ||\n\t\t\t!showAll ||\n\t\t\t!this.completeResultsSnapshot ||\n\t\t\tnumberOfOriginalResults != this.totalCompleteResults ||\n\t\t\t(this.isWritingFeedbackEnabled() &&\n\t\t\t\tthis.writingFeedback &&\n\t\t\t\tthis.writingFeedback?.corrections.text.chars.operationTexts?.length !=\n\t\t\t\t\tfilteredCorrections?.text?.chars?.operationTexts?.length)\n\t\t) {\n\t\t\tstats = helpers.calculateStatistics(completeResultsRes, filteredResults, this.filterOptions);\n\n\t\t\tif (\n\t\t\t\tthis.isWritingFeedbackEnabled() &&\n\t\t\t\tthis.writingFeedback &&\n\t\t\t\tthis.writingFeedback?.corrections.text.chars.operationTexts?.length !=\n\t\t\t\t\tfilteredCorrections?.text?.chars?.operationTexts?.length\n\t\t\t) {\n\t\t\t\tconst wfStats = helpers.getWritingFeedbackStatistics(\n\t\t\t\t\twritingFeedback?.score,\n\t\t\t\t\tfilteredCorrections,\n\t\t\t\t\tcompleteResultsRes?.scannedDocument?.totalWords\n\t\t\t\t);\n\t\t\t\tstats.writingFeedbackOverallIssues = wfStats.overallTotalIssues;\n\t\t\t\tstats.writingFeedbackOverallScore = wfStats.overallScore;\n\t\t\t} else {\n\t\t\t\tstats.writingFeedbackOverallIssues = filteredCorrections?.text?.chars?.operationTexts?.length ?? 0;\n\t\t\t\tstats.writingFeedbackOverallScore =\n\t\t\t\t\t(this.completeResultsSnapshot?.writingFeedback?.score?.overallScore ?? 0) / 100;\n\t\t\t}\n\t\t} else {\n\t\t\t// * if results are still loading  or no results are fitlered while all match types are visible\n\t\t\t// * we can use the complete result stats without heavy calculations\n\t\t\tconst aiStatistics = helpers.getAiStatistics(completeResultsRes);\n\t\t\tstats = {\n\t\t\t\taggregatedScore: (this.completeResultsSnapshot.results?.score?.aggregatedScore ?? 0) / 100,\n\t\t\t\tidentical: this.completeResultsSnapshot.results.score.identicalWords,\n\t\t\t\trelatedMeaning: this.completeResultsSnapshot.results.score.relatedMeaningWords,\n\t\t\t\tminorChanges: this.completeResultsSnapshot.results.score.minorChangedWords,\n\t\t\t\tomittedWords: this.completeResultsSnapshot.scannedDocument.totalExcluded,\n\t\t\t\ttotal: this.completeResultsSnapshot.scannedDocument.totalWords,\n\t\t\t\taiScore: aiStatistics?.ai ?? 0,\n\t\t\t\thumanScore: aiStatistics?.human ?? 0,\n\t\t\t\twritingFeedbackOverallScore: (this.completeResultsSnapshot?.writingFeedback?.score?.overallScore ?? 0) / 100,\n\t\t\t\twritingFeedbackOverallIssues: filteredCorrections?.text?.chars?.operationTexts?.length ?? 0,\n\t\t\t};\n\t\t}\n\t\treturn stats;\n\t}\n\n\tprivate _createHeaders(endpointDetails: IEndpointDetails): HttpHeaders {\n\t\t// Create HttpHeaders using the authToken and any additional headers provided in the endpoint details\n\t\treturn new HttpHeaders({\n\t\t\t...endpointDetails.headers,\n\t\t});\n\t}\n\n\tprivate _getReportScanProgress() {\n\t\tif (!this._reportEndpointConfig$.value || !this._reportEndpointConfig$.value.progress?.url) return EMPTY;\n\n\t\treturn this._http\n\t\t\t.get<IAPIProgress>(this._reportEndpointConfig$.value.progress.url, {\n\t\t\t\theaders: this._createHeaders(this._reportEndpointConfig$.value.progress),\n\t\t\t})\n\t\t\t.pipe(retryWithDelay());\n\t}\n\n\tprivate async _getReportCrawledVersion() {\n\t\tif (!this._reportEndpointConfig$.value || !this._reportEndpointConfig$.value.crawledVersion?.url) return undefined;\n\n\t\treturn await this._http\n\t\t\t.get<IScanSource>(this._reportEndpointConfig$.value.crawledVersion.url, {\n\t\t\t\theaders: this._createHeaders(this._reportEndpointConfig$.value.crawledVersion),\n\t\t\t})\n\t\t\t.pipe(retryWithDelay())\n\t\t\t.toPromise();\n\t}\n\n\tprivate async _getReportCompleteResults() {\n\t\tif (!this._reportEndpointConfig$.value || !this._reportEndpointConfig$.value.completeResults?.url) return undefined;\n\n\t\treturn await this._http\n\t\t\t.get<ICompleteResults>(this._reportEndpointConfig$.value.completeResults.url, {\n\t\t\t\theaders: this._createHeaders(this._reportEndpointConfig$.value.completeResults),\n\t\t\t})\n\t\t\t.pipe(retryWithDelay())\n\t\t\t.toPromise();\n\t}\n\n\tprivate async _getReportWritingFeedback() {\n\t\tif (!this._reportEndpointConfig$.value || !this._reportEndpointConfig$.value.completeResults?.url) return undefined;\n\n\t\treturn await this._http\n\t\t\t.get<IWritingFeedback>(this._reportEndpointConfig$.value.writingFeedback.url, {\n\t\t\t\theaders: this._createHeaders(this._reportEndpointConfig$.value.writingFeedback),\n\t\t\t})\n\t\t\t.pipe(retryWithDelay())\n\t\t\t.toPromise();\n\t}\n\n\tprivate _getFilteredResultsIds(\n\t\tsettings: ICopyleaksReportOptions,\n\t\tcompleteResults: (IInternetResultPreview | IDatabaseResultPreview | IRepositoryResultPreview)[],\n\t\texcludedResultsIds: string[]\n\t) {\n\t\tif (settings.showTop100Results !== undefined && settings.showTop100Results === true)\n\t\t\tcompleteResults = completeResults.sort((a, b) => b.matchedWords - a.matchedWords).slice(0, 100);\n\n\t\tlet filteredResultsIds: string[] = completeResults\n\t\t\t.filter(r => !excludedResultsIds.find(id => id === r.id))\n\t\t\t.map(result => result.id);\n\n\t\tif (filteredResultsIds && filteredResultsIds.length === 0) return [];\n\n\t\tif (settings.showInternetResults !== undefined && settings.showInternetResults === false)\n\t\t\tfilteredResultsIds = filteredResultsIds.filter(id =>\n\t\t\t\tcompleteResults.find(\n\t\t\t\t\tcr =>\n\t\t\t\t\t\tcr.id === id &&\n\t\t\t\t\t\t(cr.type !== EResultPreviewType.Internet ||\n\t\t\t\t\t\t\tcr.tags?.find(t => t.code === RESULT_TAGS_CODES.AI_SOURCE_MATCH))\n\t\t\t\t)\n\t\t\t);\n\n\t\tif (settings.showBatchResults !== undefined && settings.showBatchResults === false)\n\t\t\tfilteredResultsIds = filteredResultsIds.filter(id =>\n\t\t\t\tcompleteResults.find(\n\t\t\t\t\tcr =>\n\t\t\t\t\t\tcr.id === id &&\n\t\t\t\t\t\t(cr.type !== EResultPreviewType.Batch || cr.tags?.find(t => t.code === RESULT_TAGS_CODES.AI_SOURCE_MATCH))\n\t\t\t\t)\n\t\t\t);\n\n\t\tif (\n\t\t\tsettings.showInternalDatabaseResults !== undefined &&\n\t\t\tsettings.showYourResults === false &&\n\t\t\tsettings.showOthersResults === false\n\t\t)\n\t\t\tfilteredResultsIds = filteredResultsIds.filter(id =>\n\t\t\t\tcompleteResults.find(\n\t\t\t\t\tcr =>\n\t\t\t\t\t\tcr.id === id &&\n\t\t\t\t\t\t(cr.type !== EResultPreviewType.Database ||\n\t\t\t\t\t\t\tcr.tags?.find(t => t.code === RESULT_TAGS_CODES.AI_SOURCE_MATCH))\n\t\t\t\t)\n\t\t\t);\n\t\telse if (settings.showInternalDatabaseResults !== undefined && settings.showYourResults === false)\n\t\t\tfilteredResultsIds = filteredResultsIds.filter(id =>\n\t\t\t\tcompleteResults.find(\n\t\t\t\t\tcr =>\n\t\t\t\t\t\tcr.id === id &&\n\t\t\t\t\t\t(cr.type !== EResultPreviewType.Database ||\n\t\t\t\t\t\t\t!cr.scanId ||\n\t\t\t\t\t\t\tcr.tags?.find(t => t.code === RESULT_TAGS_CODES.AI_SOURCE_MATCH))\n\t\t\t\t)\n\t\t\t);\n\t\telse if (settings.showInternalDatabaseResults !== undefined && settings.showOthersResults === false)\n\t\t\tfilteredResultsIds = filteredResultsIds.filter(id =>\n\t\t\t\tcompleteResults.find(\n\t\t\t\t\tcr =>\n\t\t\t\t\t\tcr.id === id &&\n\t\t\t\t\t\t(cr.type !== EResultPreviewType.Database ||\n\t\t\t\t\t\t\t!!cr.scanId ||\n\t\t\t\t\t\t\tcr.tags?.find(t => t.code === RESULT_TAGS_CODES.AI_SOURCE_MATCH))\n\t\t\t\t)\n\t\t\t);\n\n\t\tif (settings.hiddenRepositories !== undefined && settings.hiddenRepositories.length > 0) {\n\t\t\tfilteredResultsIds = filteredResultsIds.filter(id =>\n\t\t\t\tcompleteResults.find(\n\t\t\t\t\tcr =>\n\t\t\t\t\t\tcr.id === id &&\n\t\t\t\t\t\t(cr.type !== EResultPreviewType.Repositroy ||\n\t\t\t\t\t\t\t!settings.hiddenRepositories?.find(id => id === (cr as IRepositoryResultPreview)?.repositoryId) ||\n\t\t\t\t\t\t\tcr.tags?.find(t => t.code === RESULT_TAGS_CODES.AI_SOURCE_MATCH))\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\tif (settings.showAISourceMatch !== undefined && settings.showAISourceMatch === false)\n\t\t\tfilteredResultsIds = filteredResultsIds.filter(id =>\n\t\t\t\tcompleteResults.find(cr => cr.id === id && !cr.tags?.find(t => t.code === RESULT_TAGS_CODES.AI_SOURCE_MATCH))\n\t\t\t);\n\n\t\tif (!!settings.wordLimit)\n\t\t\tfilteredResultsIds = filteredResultsIds.filter(id =>\n\t\t\t\tcompleteResults.find(cr => cr.id === id && cr.matchedWords >= (settings.wordLimit ?? 0))\n\t\t\t);\n\n\t\tif (!!settings.publicationDate)\n\t\t\tfilteredResultsIds = filteredResultsIds.filter(id =>\n\t\t\t\tcompleteResults.find(\n\t\t\t\t\tcr =>\n\t\t\t\t\t\tcr.id === id &&\n\t\t\t\t\t\tnew Date(settings.publicationDate ?? new Date()).getTime() <=\n\t\t\t\t\t\t\tnew Date(cr.metadata?.publishDate ?? settings.publicationDate ?? new Date()).getTime()\n\t\t\t\t)\n\t\t\t);\n\n\t\tif (settings.includeResultsWithoutDate != undefined && settings.includeResultsWithoutDate === false)\n\t\t\tfilteredResultsIds = filteredResultsIds.filter(id =>\n\t\t\t\tcompleteResults.find(cr => cr.id === id && !!cr.metadata?.publishDate)\n\t\t\t);\n\n\t\tif (settings.includedTags && settings.includedTags.length > 0)\n\t\t\tfilteredResultsIds = filteredResultsIds.filter(id =>\n\t\t\t\tcompleteResults.find(cr => cr.id === id && cr.tags?.find(t => settings.includedTags?.includes(t.title)))\n\t\t\t);\n\n\t\tif (settings.excludedDomains && settings.excludedDomains.length > 0)\n\t\t\tfilteredResultsIds = filteredResultsIds.filter(id =>\n\t\t\t\t// check if the result is from the internet and the domain is not excluded, the domain exclude must check if it has the domain in case also the excluded domain is like copyleaks.com\n\t\t\t\tcompleteResults.find(\n\t\t\t\t\tcr =>\n\t\t\t\t\t\tcr.id === id &&\n\t\t\t\t\t\t(cr.type !== EResultPreviewType.Internet ||\n\t\t\t\t\t\t\t!settings.excludedDomains?.find(domain => cr.url && cr.url?.includes(domain)))\n\t\t\t\t)\n\t\t\t);\n\t\treturn filteredResultsIds;\n\t}\n\n\tpushNewResults(newResults: ResultPreview[]) {\n\t\tif (!this.reportEndpointConfig || !newResults || !this.crawledVersion) return;\n\n\t\t// Remove duplicates from newResults based on the id\n\t\tconst uniqueIds = new Set();\n\t\tconst filteredNewResults = newResults.filter(result => {\n\t\t\tif (!uniqueIds.has(result.id)) {\n\t\t\t\tuniqueIds.add(result.id);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t});\n\t\tnewResults = filteredNewResults;\n\n\t\t// check for only *new* results, i.e. don't add new results that exists already\n\t\tconst existingResults = this._newResults$.value || [];\n\t\tconst uniqueNewResults = newResults.filter(\n\t\t\tnewResult => !existingResults.some(existingResult => existingResult.resultPreview.id === newResult.id)\n\t\t);\n\n\t\t// Put all the results IDs in one lits\n\t\tconst resultsIds = [...uniqueNewResults.map(result => result.id)];\n\n\t\t// But the results ids in a list of batches (10 each)\n\t\tconst batchSize = 10;\n\t\tconst idBatches = [];\n\t\tfor (let i = 0; i < resultsIds.length; i += batchSize) {\n\t\t\tidBatches.push(resultsIds.slice(i, i + batchSize));\n\t\t}\n\n\t\t// Calculate the total number of batches you'll have\n\t\tconst totalBatches = idBatches.length;\n\t\tlet currentBatchIndex = 0; // Initialize a variable to keep track of the current batch index\n\n\t\tif (totalBatches === 0) this._newResults$.next([]);\n\n\t\tthis._loadedResultsDetails$ = [];\n\n\t\t// Send the GET results requests in batches\n\t\tconst fetchResultsBatches = from(idBatches);\n\t\tfetchResultsBatches\n\t\t\t.pipe(\n\t\t\t\tconcatMap(ids => {\n\t\t\t\t\tcurrentBatchIndex++; // Increment the current batch index each time a new batch starts\n\t\t\t\t\treturn forkJoin(...ids.map(id => this.getReportResultAsync(id, true)));\n\t\t\t\t}),\n\t\t\t\tuntilDestroy(this)\n\t\t\t)\n\t\t\t.subscribe((results: ResultDetailItem[]) => {\n\t\t\t\tif (results) {\n\t\t\t\t\t// Add the new fetched results to the Cache subject\n\t\t\t\t\tthis._loadedResultsDetails$ = [...this._loadedResultsDetails$, ...results] as ResultDetailItem[];\n\n\t\t\t\t\tthis.scanResultsDetails$.next([...(this.scanResultsDetails ?? []), ...this._loadedResultsDetails$]);\n\n\t\t\t\t\t// Check if this is the last batch\n\t\t\t\t\tif (currentBatchIndex === totalBatches) {\n\t\t\t\t\t\tconst mappedResults = this._loadedResultsDetails$.map(resultDetail => {\n\t\t\t\t\t\t\tconst foundResultDetail = newResults?.find(r => r.id === resultDetail.id);\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tresultPreview: foundResultDetail,\n\t\t\t\t\t\t\t\tresultDetails: resultDetail,\n\t\t\t\t\t\t\t\tiStatisticsResult: resultDetail?.result?.statistics,\n\t\t\t\t\t\t\t\tmetadataSource: {\n\t\t\t\t\t\t\t\t\twords: this.crawledVersion?.metadata.words ?? 0,\n\t\t\t\t\t\t\t\t\texcluded: this.crawledVersion?.metadata.excluded ?? 0,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t} as IResultItem;\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconst allNewResults = [...existingResults, ...mappedResults].sort(\n\t\t\t\t\t\t\t(a, b) => b.resultPreview.matchedWords - a.resultPreview.matchedWords\n\t\t\t\t\t\t);\n\t\t\t\t\t\tthis._newResults$.next(allNewResults);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tngOnDestroy() {}\n}\n","import { Directive, ElementRef, HostBinding, OnDestroy, OnInit } from '@angular/core';\nimport { distinctUntilChanged, filter, map, withLatestFrom } from 'rxjs/operators';\nimport {\n\tCorrectionSelectEvent,\n\tMatchGroupSelectEvent,\n\tMatchJumpEvent,\n\tMatchSelectEvent,\n} from '../models/report-iframe-events.models';\nimport { ReportMatchHighlightService } from '../services/report-match-highlight.service';\nimport { ReportViewService } from '../services/report-view.service';\nimport { untilDestroy } from '../utils/until-destroy';\nimport { ALERTS } from '../constants/report-alerts.constants';\nimport { ReportDataService } from '../services/report-data.service';\nimport { AIScanResult } from '../models/report-matches.models';\n\n@Directive({\n\tselector: '[crOriginalHtmlHelper]',\n\tstandalone: false,\n})\nexport class OriginalHtmlHelperComponent implements OnInit, OnDestroy {\n\t/** sets the seamsless attribute to the iframe */\n\t@HostBinding('attr.seamless') readonly seamless = true;\n\n\tconstructor(\n\t\tprivate _reportViewSvc: ReportViewService,\n\t\tprivate _reportDataSvc: ReportDataService,\n\t\tprivate _highlightSvc: ReportMatchHighlightService,\n\t\tprivate _element: ElementRef<HTMLIFrameElement>\n\t) {}\n\n\tngOnInit() {\n\t\tconst { jump$, originalHtml$ } = this._highlightSvc;\n\t\tconst { reportViewMode$ } = this._reportViewSvc;\n\n\t\tconst onOneToManyHtmlJump$ = jump$.pipe(\n\t\t\twithLatestFrom(reportViewMode$),\n\t\t\tdistinctUntilChanged(),\n\t\t\tfilter(\n\t\t\t\t([jumpForward, viewModeData]) =>\n\t\t\t\t\t(jumpForward === true || jumpForward === false) &&\n\t\t\t\t\t(viewModeData.viewMode === 'one-to-many' ||\n\t\t\t\t\t\tviewModeData.viewMode === 'writing-feedback' ||\n\t\t\t\t\t\tviewModeData.viewMode === 'only-ai') &&\n\t\t\t\t\tviewModeData.isHtmlView\n\t\t\t),\n\t\t\tmap(([jumpForward]) => jumpForward),\n\t\t\tuntilDestroy(this)\n\t\t);\n\t\tonOneToManyHtmlJump$.subscribe(jumpForward => {\n\t\t\tthis.messageFrame({ type: 'match-jump', forward: jumpForward } as MatchJumpEvent);\n\t\t});\n\n\t\t// handle 'Clear Match' event\n\t\toriginalHtml$\n\t\t\t.pipe(\n\t\t\t\tuntilDestroy(this),\n\t\t\t\tfilter(m => m === null)\n\t\t\t)\n\t\t\t.subscribe(_ => {\n\t\t\t\tthis.messageFrame({ type: 'match-select', index: -1 } as MatchSelectEvent);\n\t\t\t});\n\n\t\tthis._highlightSvc.correctionSelect$\n\t\t\t.pipe(\n\t\t\t\tuntilDestroy(this),\n\t\t\t\twithLatestFrom(reportViewMode$),\n\t\t\t\tfilter(\n\t\t\t\t\t([correctionSelect, viewModeData]) =>\n\t\t\t\t\t\tcorrectionSelect && viewModeData.viewMode === 'writing-feedback' && viewModeData.isHtmlView\n\t\t\t\t)\n\t\t\t)\n\t\t\t.subscribe(([correctionSelect, _]) => {\n\t\t\t\tthis.frame.postMessage(\n\t\t\t\t\t{ type: 'correction-select', gid: correctionSelect.index } as CorrectionSelectEvent,\n\t\t\t\t\t'*'\n\t\t\t\t);\n\t\t\t});\n\n\t\tthis._highlightSvc.aiInsightsSelect$\n\t\t\t.pipe(\n\t\t\t\tuntilDestroy(this),\n\t\t\t\twithLatestFrom(reportViewMode$),\n\t\t\t\tfilter(([selectResult, viewModeData]) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\tselectResult && viewModeData.alertCode === ALERTS.SUSPECTED_AI_TEXT_DETECTED && viewModeData.isHtmlView\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t)\n\t\t\t.subscribe(([selectResult, _]) => {\n\t\t\t\tconst validSelectedAlert = this._reportDataSvc.scanResultsPreviews?.notifications?.alerts?.find(\n\t\t\t\t\ta => a.code === ALERTS.SUSPECTED_AI_TEXT_DETECTED\n\t\t\t\t);\n\t\t\t\tif (validSelectedAlert) {\n\t\t\t\t\tvar scanResult = JSON.parse(validSelectedAlert.additionalData) as AIScanResult;\n\t\t\t\t\tconst index = scanResult.explain.patterns.text.chars.starts.findIndex(\n\t\t\t\t\t\ts => s === selectResult.resultRange.start\n\t\t\t\t\t);\n\t\t\t\t\tthis.messageFrame({ type: 'match-group-select', groupId: index } as MatchGroupSelectEvent);\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tprotected get frame() {\n\t\treturn this._element.nativeElement.contentWindow;\n\t}\n\n\t/**\n\t * Send a message to the iframe using PostMessage API\n\t * @param data the data to post\n\t */\n\tprotected messageFrame(data: any) {\n\t\tthis.frame && this.frame.postMessage(data, '*');\n\t}\n\n\tngOnDestroy() {}\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, combineLatest } from 'rxjs';\nimport { distinctUntilChanged, filter } from 'rxjs/operators';\nimport { ALERTS } from '../constants/report-alerts.constants';\nimport {\n\tICompleteResults,\n\tIScanSource,\n\tIWritingFeedback,\n\tIWritingFeedbackCorrectionViewModel,\n} from '../models/report-data.models';\nimport { Match, ResultDetailItem, SlicedMatch } from '../models/report-matches.models';\nimport { ICopyleaksReportOptions } from '../models/report-options.models';\nimport { IReportViewEvent } from '../models/report-view.models';\nimport * as helpers from '../utils/report-match-helpers';\nimport { untilDestroy } from '../utils/until-destroy';\nimport { ReportDataService } from './report-data.service';\nimport { ReportViewService } from './report-view.service';\n\n/**\n * Service that calculates the matches highlight positions with respect to the view and content mode.\n * It exposes some observable streams that you can subscribe to and get the newest relevant calculations.\n */\n@Injectable()\nexport class ReportMatchesService implements OnDestroy {\n\tprivate _sourceTextMatches = new BehaviorSubject<SlicedMatch[][] | null>(null);\n\t/** Emits matches that are relevant to source text one-to-one mode */\n\tpublic get sourceTextMatches$() {\n\t\treturn this._sourceTextMatches.asObservable().pipe();\n\t}\n\n\tprivate _sourceHtmlMatches = new BehaviorSubject<Match[] | null>(null);\n\t/** Emits matches that are relevant to source html one-to-one mode */\n\tpublic get sourceHtmlMatches$() {\n\t\treturn this._sourceHtmlMatches.asObservable().pipe();\n\t}\n\n\tprivate _suspectTextMatches = new BehaviorSubject<SlicedMatch[][] | null>(null);\n\t/** Emits matches that are relevant to suspect text one-to-one mode */\n\tpublic get suspectTextMatches$() {\n\t\treturn this._suspectTextMatches.asObservable().pipe();\n\t}\n\n\tprivate _suspectHtmlMatches = new BehaviorSubject<Match[] | null>(null);\n\t/** Emits matches that are relevant to suspect html one-to-one mode */\n\tpublic get suspectHtmlMatches$() {\n\t\treturn this._suspectHtmlMatches.asObservable().pipe();\n\t}\n\n\tprivate _originalTextMatches = new BehaviorSubject<SlicedMatch[][] | null>(null);\n\t/** Emits matches that are relevant to source text one-to-many mode */\n\tpublic get originalTextMatches$() {\n\t\treturn this._originalTextMatches.asObservable().pipe();\n\t}\n\tpublic get originalTextMatches() {\n\t\treturn this._originalTextMatches.value;\n\t}\n\n\tprivate _originalHtmlMatches = new BehaviorSubject<Match[] | null>(null);\n\t/** Emits matches that are relevant to source html one-to-many mode */\n\tpublic get originalHtmlMatches$() {\n\t\treturn this._originalHtmlMatches.asObservable().pipe();\n\t}\n\tpublic get originalHtmlMatches() {\n\t\treturn this._originalHtmlMatches.value;\n\t}\n\n\tprivate _showOmittedWords$ = new BehaviorSubject<boolean>(true);\n\t/** Emits a falg that indicates if the omitted words should be shown or not */\n\tpublic get showOmittedWords$() {\n\t\treturn this._showOmittedWords$;\n\t}\n\tpublic get showOmittedWords() {\n\t\treturn this._showOmittedWords$.value;\n\t}\n\n\tprivate _showAIPhrases$ = new BehaviorSubject<boolean>(false);\n\t/** Emits a falg that indicates if the AI phrases should be shown or not\n\t */\n\tpublic get showAIPhrases$() {\n\t\treturn this._showAIPhrases$;\n\t}\n\tpublic get showAIPhrases() {\n\t\treturn this._showAIPhrases$.value;\n\t}\n\n\tprivate _aiPhrases$ = new BehaviorSubject<SlicedMatch[][] | null>(null);\n\t/** Emits matches that are relevant to source html one-to-many mode */\n\tpublic get aiPhrases$() {\n\t\treturn this._aiPhrases$.asObservable().pipe();\n\t}\n\tpublic get aiPhrases() {\n\t\treturn this._aiPhrases$.value;\n\t}\n\n\tconstructor(private _reportDataSvc: ReportDataService, private _reportViewSvc: ReportViewService) {\n\t\tthis._initOneToManyMatchesHandler();\n\t\tthis._initOneToOneMatchesHandler();\n\t\tthis._initAlertMatchesHandler();\n\t\tthis._initWritingFeedbackCorrectionsHandler();\n\t}\n\n\tprivate _initOneToManyMatchesHandler() {\n\t\tcombineLatest([\n\t\t\tthis._reportDataSvc.crawledVersion$.pipe(distinctUntilChanged()),\n\t\t\tthis._reportDataSvc.scanResultsDetails$.pipe(distinctUntilChanged()),\n\t\t\tthis._reportViewSvc.reportViewMode$.pipe(distinctUntilChanged()),\n\t\t\tthis._reportViewSvc.selectedAlert$.pipe(distinctUntilChanged()),\n\t\t\tthis._reportDataSvc.filterOptions$.pipe(distinctUntilChanged()),\n\t\t\tthis._reportDataSvc.excludedResultsIds$.pipe(distinctUntilChanged()),\n\t\t\tthis.showOmittedWords$.pipe(distinctUntilChanged()),\n\t\t\tthis._reportDataSvc.selectedCategoryResultsIds$.pipe(distinctUntilChanged()),\n\t\t])\n\t\t\t.pipe(\n\t\t\t\tuntilDestroy(this),\n\t\t\t\tfilter(\n\t\t\t\t\t([scanSource, , viewMode, selectedAlert]: [\n\t\t\t\t\t\tIScanSource,\n\t\t\t\t\t\tResultDetailItem[],\n\t\t\t\t\t\tIReportViewEvent,\n\t\t\t\t\t\tstring,\n\t\t\t\t\t\tICopyleaksReportOptions,\n\t\t\t\t\t\tstring[],\n\t\t\t\t\t\tboolean,\n\t\t\t\t\t\tstring[]\n\t\t\t\t\t]) =>\n\t\t\t\t\t\tscanSource != undefined && viewMode != null && viewMode.viewMode === 'one-to-many' && selectedAlert === null\n\t\t\t\t)\n\t\t\t)\n\t\t\t.subscribe(\n\t\t\t\t([\n\t\t\t\t\tscanSource,\n\t\t\t\t\tscanResults,\n\t\t\t\t\tviewMode,\n\t\t\t\t\t,\n\t\t\t\t\tfilterOptions,\n\t\t\t\t\texcludedResultsIds,\n\t\t\t\t\tshowOmittedWords,\n\t\t\t\t\tselectedCategoryResultsIds,\n\t\t\t\t]: [\n\t\t\t\t\tIScanSource,\n\t\t\t\t\tResultDetailItem[],\n\t\t\t\t\tIReportViewEvent,\n\t\t\t\t\tstring,\n\t\t\t\t\tICopyleaksReportOptions,\n\t\t\t\t\tstring[],\n\t\t\t\t\tboolean,\n\t\t\t\t\tstring[]\n\t\t\t\t]) => {\n\t\t\t\t\tlet modifiedScanSource = scanSource ? JSON.parse(JSON.stringify(scanSource)) : null;\n\t\t\t\t\tif (!showOmittedWords && modifiedScanSource) {\n\t\t\t\t\t\tif (modifiedScanSource?.html) modifiedScanSource.html.exclude = null;\n\t\t\t\t\t\tif (modifiedScanSource?.text) modifiedScanSource.text.exclude = null;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t(modifiedScanSource && this._reportViewSvc.progress$.value != 100) ||\n\t\t\t\t\t\t(modifiedScanSource && (!scanResults || scanResults.length === 0))\n\t\t\t\t\t) {\n\t\t\t\t\t\t// process the mathces according to the report view\n\t\t\t\t\t\tif (viewMode.isHtmlView) {\n\t\t\t\t\t\t\tthis._processOneToManyMatchesHtml(scanResults ?? [], undefined, [], modifiedScanSource);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis._processOneToManyMatchesText(scanResults ?? [], undefined, [], modifiedScanSource);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!modifiedScanSource || !viewMode || !filterOptions || !excludedResultsIds) return;\n\n\t\t\t\t\tif (!modifiedScanSource?.html?.value && viewMode.isHtmlView) {\n\t\t\t\t\t\tthis._reportViewSvc.reportViewMode$.next({\n\t\t\t\t\t\t\t...this._reportViewSvc.reportViewMode,\n\t\t\t\t\t\t\tisHtmlView: false,\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t// process the mathces according to the report view\n\t\t\t\t\tconst isRealtimeInitView =\n\t\t\t\t\t\tthis._reportDataSvc.isRealTimeView &&\n\t\t\t\t\t\t!this._reportDataSvc.isFilterOn &&\n\t\t\t\t\t\t(!this._reportDataSvc.excludedResultsIds || this._reportDataSvc.excludedResultsIds.length === 0);\n\n\t\t\t\t\tif (viewMode.isHtmlView) {\n\t\t\t\t\t\tthis._processOneToManyMatchesHtml(\n\t\t\t\t\t\t\tscanResults,\n\t\t\t\t\t\t\tisRealtimeInitView ? undefined : filterOptions,\n\t\t\t\t\t\t\texcludedResultsIds,\n\t\t\t\t\t\t\tmodifiedScanSource,\n\t\t\t\t\t\t\tselectedCategoryResultsIds\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis._processOneToManyMatchesText(\n\t\t\t\t\t\t\tscanResults,\n\t\t\t\t\t\t\tisRealtimeInitView ? undefined : filterOptions,\n\t\t\t\t\t\t\texcludedResultsIds,\n\t\t\t\t\t\t\tmodifiedScanSource,\n\t\t\t\t\t\t\tselectedCategoryResultsIds\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t}\n\n\tprivate _initOneToOneMatchesHandler() {\n\t\tcombineLatest([\n\t\t\tthis._reportDataSvc.crawledVersion$.pipe(distinctUntilChanged()),\n\t\t\tthis._reportViewSvc.selectedResult$.pipe(distinctUntilChanged()),\n\t\t\tthis._reportViewSvc.reportViewMode$.pipe(distinctUntilChanged()),\n\t\t\tthis._reportViewSvc.selectedAlert$.pipe(distinctUntilChanged()),\n\t\t\tthis._reportDataSvc.filterOptions$.pipe(distinctUntilChanged()),\n\t\t\tthis.showOmittedWords$.pipe(distinctUntilChanged()),\n\t\t])\n\t\t\t.pipe(\n\t\t\t\tuntilDestroy(this),\n\t\t\t\tfilter(\n\t\t\t\t\t([scanSource, scanResults, viewMode, selectedAlert]) =>\n\t\t\t\t\t\tscanSource != undefined &&\n\t\t\t\t\t\tscanResults != undefined &&\n\t\t\t\t\t\tviewMode != null &&\n\t\t\t\t\t\tviewMode.viewMode === 'one-to-one' &&\n\t\t\t\t\t\tselectedAlert === null\n\t\t\t\t)\n\t\t\t)\n\t\t\t.subscribe(([scanSource, selectedResult, viewMode, , filterOptions, showOmittedWords]) => {\n\t\t\t\tlet modifiedScanSource = scanSource ? JSON.parse(JSON.stringify(scanSource)) : null;\n\t\t\t\tif (!showOmittedWords && modifiedScanSource) {\n\t\t\t\t\tif (modifiedScanSource?.html) modifiedScanSource.html.exclude = null;\n\t\t\t\t\tif (modifiedScanSource?.text) modifiedScanSource.text.exclude = null;\n\t\t\t\t}\n\n\t\t\t\tif (modifiedScanSource && selectedResult && this._reportViewSvc.progress$.value != 100) {\n\t\t\t\t\tif (modifiedScanSource && this._reportViewSvc.progress$.value != 100) {\n\t\t\t\t\t\tthis._processOneToOneMatches(\n\t\t\t\t\t\t\tselectedResult,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tshowIdentical: true,\n\t\t\t\t\t\t\t\tshowRelated: true,\n\t\t\t\t\t\t\t\tshowMinorChanges: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmodifiedScanSource,\n\t\t\t\t\t\t\tviewMode\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!modifiedScanSource || !selectedResult || !viewMode || !filterOptions) return;\n\n\t\t\t\tthis._processOneToOneMatches(selectedResult, filterOptions, modifiedScanSource, viewMode);\n\t\t\t});\n\t}\n\n\tprivate _initAlertMatchesHandler() {\n\t\tcombineLatest([\n\t\t\tthis._reportDataSvc.crawledVersion$.pipe(distinctUntilChanged()),\n\t\t\tthis._reportViewSvc.selectedAlert$.pipe(distinctUntilChanged()),\n\t\t\tthis._reportDataSvc.scanResultsPreviews$.pipe(distinctUntilChanged()),\n\t\t\tthis._reportDataSvc.filterOptions$.pipe(distinctUntilChanged()),\n\t\t\tthis.showOmittedWords$.pipe(distinctUntilChanged()),\n\t\t\tthis.showAIPhrases$.pipe(distinctUntilChanged()),\n\t\t\tthis._reportViewSvc.reportViewMode$.pipe(distinctUntilChanged()),\n\t\t])\n\t\t\t.pipe(\n\t\t\t\tuntilDestroy(this),\n\t\t\t\tfilter(\n\t\t\t\t\t([scanSource, selectedAlert, scanResultsPreviews, filterOptions, _, __, ___]) =>\n\t\t\t\t\t\tscanSource != null &&\n\t\t\t\t\t\tscanSource != undefined &&\n\t\t\t\t\t\tselectedAlert != null &&\n\t\t\t\t\t\tselectedAlert != undefined &&\n\t\t\t\t\t\tscanResultsPreviews != null &&\n\t\t\t\t\t\tfilterOptions != null\n\t\t\t\t)\n\t\t\t)\n\t\t\t.subscribe(\n\t\t\t\t([scanSource, selectedAlert, completeResults, filterOptions, showOmittedWords, showAIPhrases, _]: [\n\t\t\t\t\tIScanSource,\n\t\t\t\t\tstring,\n\t\t\t\t\tICompleteResults,\n\t\t\t\t\tICopyleaksReportOptions,\n\t\t\t\t\tboolean,\n\t\t\t\t\tboolean,\n\t\t\t\t\tIReportViewEvent\n\t\t\t\t]) => {\n\t\t\t\t\tlet modifiedScanSource = scanSource ? JSON.parse(JSON.stringify(scanSource)) : null;\n\t\t\t\t\tif (!showOmittedWords && modifiedScanSource) {\n\t\t\t\t\t\tif (modifiedScanSource?.html) modifiedScanSource.html.exclude = null;\n\t\t\t\t\t\tif (modifiedScanSource?.text) modifiedScanSource.text.exclude = null;\n\t\t\t\t\t}\n\t\t\t\t\tif (\n\t\t\t\t\t\t(modifiedScanSource && this._reportViewSvc.progress$.value != 100) ||\n\t\t\t\t\t\t(modifiedScanSource && selectedAlert)\n\t\t\t\t\t) {\n\t\t\t\t\t\tthis._processAlertMatches(modifiedScanSource, selectedAlert, filterOptions, completeResults, showAIPhrases);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!modifiedScanSource || !selectedAlert || !completeResults || !filterOptions) return;\n\n\t\t\t\t\tthis._processAlertMatches(modifiedScanSource, selectedAlert, filterOptions, completeResults, showAIPhrases);\n\t\t\t\t}\n\t\t\t);\n\t}\n\n\tprivate _initWritingFeedbackCorrectionsHandler() {\n\t\tcombineLatest([\n\t\t\tthis._reportDataSvc.crawledVersion$.pipe(distinctUntilChanged()),\n\t\t\tthis._reportViewSvc.selectedAlert$.pipe(distinctUntilChanged()),\n\t\t\tthis._reportDataSvc.writingFeedback$.pipe(distinctUntilChanged()),\n\t\t\tthis._reportViewSvc.reportViewMode$.pipe(distinctUntilChanged()),\n\t\t\tthis._reportDataSvc.filterOptions$.pipe(distinctUntilChanged()),\n\t\t\tthis._reportDataSvc.excludedCorrections$.pipe(distinctUntilChanged()),\n\t\t])\n\t\t\t.pipe(\n\t\t\t\tuntilDestroy(this),\n\t\t\t\tfilter(\n\t\t\t\t\t([scanSource, selectedAlert, writingFeedback, viewMode]) =>\n\t\t\t\t\t\tscanSource != null &&\n\t\t\t\t\t\tscanSource != undefined &&\n\t\t\t\t\t\t!selectedAlert &&\n\t\t\t\t\t\twritingFeedback != null &&\n\t\t\t\t\t\twritingFeedback != undefined &&\n\t\t\t\t\t\tviewMode.viewMode === 'writing-feedback'\n\t\t\t\t)\n\t\t\t)\n\t\t\t.subscribe(([scanSource, , writingFeedback, viewMode, filterOptions, excludedCorrections]) => {\n\t\t\t\tif (!scanSource || !writingFeedback || !viewMode) return;\n\n\t\t\t\tconst hasHtml =\n\t\t\t\t\t!!writingFeedback?.corrections?.html?.chars &&\n\t\t\t\t\t!!writingFeedback?.corrections?.html?.chars.types &&\n\t\t\t\t\t!!writingFeedback?.corrections?.html?.chars.groupIds &&\n\t\t\t\t\t!!writingFeedback?.corrections?.html?.chars.lengths &&\n\t\t\t\t\t!!writingFeedback?.corrections?.html?.chars.starts;\n\n\t\t\t\tif (viewMode.isHtmlView && !hasHtml) {\n\t\t\t\t\tthis._reportViewSvc.reportViewMode$.next({\n\t\t\t\t\t\t...this._reportViewSvc.reportViewMode,\n\t\t\t\t\t\tisHtmlView: false,\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (hasHtml)\n\t\t\t\t\tthis._processHtmlWritingFeedbackCorrections(scanSource, writingFeedback, filterOptions, excludedCorrections);\n\t\t\t\tthis._processTextWritingFeedbackCorrections(scanSource, writingFeedback, filterOptions, excludedCorrections);\n\t\t\t});\n\t}\n\t/**\n\t * Process matches on the `one-to-many` view mode\n\t * will calculate the matches when showing `text` or `html` for the first time\n\t * @param results the results to calculate matches from\n\t * @param settings the report settings\n\t * @param source  the scan source\n\t */\n\tprivate _processOneToManyMatchesHtml(\n\t\tresults: ResultDetailItem[] | undefined,\n\t\tsettings: ICopyleaksReportOptions | undefined,\n\t\texcludedResultsIds: string[],\n\t\tsource: IScanSource,\n\t\tselectedCategoryResultsIds: string[] = []\n\t) {\n\t\tif (settings) results = this._reportDataSvc.filterResults(settings, excludedResultsIds);\n\t\tif (results && selectedCategoryResultsIds.length > 0)\n\t\t\tresults = results.filter(result => selectedCategoryResultsIds.includes(result.id));\n\n\t\tconst html = helpers.processSourceHtml(\n\t\t\tresults ?? [],\n\t\t\tsettings ?? {\n\t\t\t\tshowIdentical: true,\n\t\t\t\tshowRelated: true,\n\t\t\t\tshowMinorChanges: true,\n\t\t\t},\n\t\t\tsource\n\t\t);\n\t\tif (html) {\n\t\t\tthis._originalHtmlMatches.next(html);\n\t\t}\n\t}\n\n\t/**\n\t * Process matches on the `one-to-many` view mode\n\t * will calculate the matches when showing `text` or `html` for the first time\n\t * @param results the results to calculate matches from\n\t * @param settings the report settings\n\t * @param source  the scan source\n\t */\n\tprivate _processOneToManyMatchesText(\n\t\tresults: ResultDetailItem[] | undefined,\n\t\tsettings: ICopyleaksReportOptions | undefined,\n\t\texcludedResultsIds: string[],\n\t\tsource: IScanSource,\n\t\tselectedCategoryResultsIds: string[] = []\n\t) {\n\t\tif (settings) results = this._reportDataSvc.filterResults(settings, excludedResultsIds);\n\t\tif (results && selectedCategoryResultsIds.length > 0)\n\t\t\tresults = results.filter(result => selectedCategoryResultsIds.includes(result.id));\n\n\t\tconst text = helpers.processSourceText(\n\t\t\tresults ?? [],\n\t\t\tsettings ?? {\n\t\t\t\tshowIdentical: true,\n\t\t\t\tshowRelated: true,\n\t\t\t\tshowMinorChanges: true,\n\t\t\t},\n\t\t\tsource\n\t\t);\n\t\tif (text) {\n\t\t\tthis._originalTextMatches.next(text);\n\t\t}\n\t}\n\n\t/**\n\t * Process matches on the `one-to-one` view mode\n\t * will calculate the matches when showing `text` or `html` for the first time\n\t * @param item the result to calculate matches from\n\t * @param settings the report settings\n\t * @param source  the scan source\n\t */\n\tprivate _processOneToOneMatches(\n\t\titem: ResultDetailItem,\n\t\tsettings: ICopyleaksReportOptions,\n\t\tsource: IScanSource,\n\t\tviewMode: IReportViewEvent\n\t) {\n\t\t// Case where source has html but suspect doesnt\n\t\tif (source.html && source.html.value && !(item.result?.html && item.result.html.value)) {\n\t\t\t// Create the report left side (the source document) text matches\n\t\t\tthis._sourceTextMatches.next(helpers.processSourceText(item, settings, source));\n\n\t\t\t// Create the report left side (the source document) html matches\n\t\t\tthis._sourceHtmlMatches.next(helpers.processSourceHtml(item, settings, source));\n\n\t\t\t// Create the report right side (the result/suspect document) text matches\n\t\t\tthis._suspectTextMatches.next(helpers.processSuspectText(item, settings, !viewMode.isHtmlView));\n\t\t}\n\t\t// Case where suspect has html but source doesnt\n\t\telse if (!(source.html && source.html.value) && item.result?.html && item.result.html.value) {\n\t\t\t// Create the report left side (the source document) text matches\n\t\t\tthis._sourceTextMatches.next(helpers.processSourceText(item, settings, source, !viewMode.isHtmlView));\n\n\t\t\t// Create the report right side (the result/suspect document) text matches\n\t\t\tthis._suspectTextMatches.next(helpers.processSuspectText(item, settings));\n\n\t\t\t// Create the report right side (the result/suspect document) html matches\n\t\t\tthis._suspectHtmlMatches.next(helpers.processSuspectHtml(item, settings));\n\t\t}\n\t\t// Case where both source and suspect have html & text views\n\t\telse {\n\t\t\t// Create the report left side (the source document) text and html matches\n\t\t\tthis._sourceTextMatches.next(helpers.processSourceText(item, settings, source));\n\t\t\tthis._sourceHtmlMatches.next(helpers.processSourceHtml(item, settings, source));\n\n\t\t\t// Create the report right side (the result/suspect document) text and html matches\n\t\t\tthis._suspectTextMatches.next(helpers.processSuspectText(item, settings));\n\t\t\tthis._suspectHtmlMatches.next(helpers.processSuspectHtml(item, settings));\n\t\t}\n\t}\n\n\t/**\n\t * Process matches on the `suspected-character-replacement` view mode\n\t * will calculate the matches when showing `text` or `html` for the first time\n\t * @param settings the report settings\n\t * @param source  the scan source\n\t */\n\tprivate _processAlertMatches(\n\t\tsource: IScanSource,\n\t\tselectedAlertCode: string | null,\n\t\tsettings?: ICopyleaksReportOptions,\n\t\tcompleteResults?: ICompleteResults,\n\t\tshowAIPhrases: boolean = false\n\t) {\n\t\tlet text: SlicedMatch[][];\n\t\tlet html: Match[];\n\n\t\t// check if the selected alert code is valid\n\t\tconst selectedAlert = completeResults?.notifications?.alerts.find(alert => alert.code === selectedAlertCode);\n\t\tif (selectedAlert) {\n\t\t\tswitch (selectedAlertCode) {\n\t\t\t\tcase ALERTS.SUSPECTED_AI_TEXT_DETECTED:\n\t\t\t\t\ttext = helpers.processAIInsightsTextMatches(source, selectedAlert, showAIPhrases);\n\t\t\t\t\thtml = helpers.processAIInsightsHTMLMatches(source, selectedAlert, showAIPhrases);\n\n\t\t\t\t\t// We need the AI phrases for the AI insights view stats, so we need to store them in a separate variable\n\t\t\t\t\t// Fetch the AI phrases only if they are not already fetched\n\t\t\t\t\tif (!this.aiPhrases || this.aiPhrases.length === 0) {\n\t\t\t\t\t\tif (showAIPhrases) this._aiPhrases$.next(text);\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tconst allPhrases = helpers.processAIInsightsTextMatches(source, selectedAlert, true);\n\t\t\t\t\t\t\tthis._aiPhrases$.next(allPhrases);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase ALERTS.SUSPECTED_CHARACTER_REPLACEMENT_CODE:\n\t\t\t\t\ttext = helpers.processSuspectedCharacterMatches(source, selectedAlert);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\ttext = [];\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t// otherwise, update the text view with zero results\n\t\telse\n\t\t\ttext = helpers.processSourceText(\n\t\t\t\t[],\n\t\t\t\tsettings ?? {\n\t\t\t\t\tshowIdentical: true,\n\t\t\t\t\tshowRelated: true,\n\t\t\t\t\tshowMinorChanges: true,\n\t\t\t\t},\n\t\t\t\tsource\n\t\t\t);\n\t\tif (text) this._originalTextMatches.next(text);\n\n\t\t// update the html view with zero results\n\t\tif (!html)\n\t\t\thtml = helpers.processSourceHtml(\n\t\t\t\t[],\n\t\t\t\tsettings ?? {\n\t\t\t\t\tshowIdentical: true,\n\t\t\t\t\tshowRelated: true,\n\t\t\t\t\tshowMinorChanges: true,\n\t\t\t\t},\n\t\t\t\tsource\n\t\t\t);\n\n\t\tif (html) this._originalHtmlMatches.next(html);\n\t}\n\n\t/**\n\t * Process matches on the `suspected-character-replacement` view mode\n\t * will calculate the matches when showing `text` or `html` for the first time\n\t * @param settings the report settings\n\t * @param source  the scan source\n\t */\n\tprivate _processHtmlWritingFeedbackCorrections(\n\t\tsource: IScanSource,\n\t\twritingFeedback: IWritingFeedback,\n\t\tfilterOptions: ICopyleaksReportOptions,\n\t\texcludedCorrections: IWritingFeedbackCorrectionViewModel[]\n\t) {\n\t\tconst filteredCorrections = this._reportDataSvc.filterCorrections(\n\t\t\tJSON.parse(JSON.stringify(writingFeedback.corrections)),\n\t\t\tfilterOptions,\n\t\t\texcludedCorrections\n\t\t);\n\n\t\tconst html = helpers.processCorrectionsHtml(filteredCorrections, 'html', source);\n\t\tif (html) this._originalHtmlMatches.next(html);\n\t}\n\n\t/**\n\t * Process matches on the `suspected-character-replacement` view mode\n\t * will calculate the matches when showing `text` or `html` for the first time\n\t * @param settings the report settings\n\t * @param source  the scan source\n\t */\n\tprivate _processTextWritingFeedbackCorrections(\n\t\tsource: IScanSource,\n\t\twritingFeedback: IWritingFeedback,\n\t\tfilterOptions: ICopyleaksReportOptions,\n\t\texcludedCorrections: IWritingFeedbackCorrectionViewModel[]\n\t) {\n\t\tconst filteredCorrections = this._reportDataSvc.filterCorrections(\n\t\t\tJSON.parse(JSON.stringify(writingFeedback.corrections)),\n\t\t\tfilterOptions,\n\t\t\texcludedCorrections\n\t\t);\n\n\t\tconst text = helpers.processCorrectionsText(filteredCorrections, 'text', source);\n\t\tif (text) this._originalTextMatches.next(text);\n\t}\n\n\t/**\n\t * dtor\n\t */\n\tngOnDestroy() {\n\t\tthis._sourceTextMatches && this._sourceTextMatches.complete();\n\t\tthis._sourceHtmlMatches && this._sourceHtmlMatches.complete();\n\t\tthis._suspectTextMatches && this._suspectTextMatches.complete();\n\t\tthis._suspectHtmlMatches && this._suspectHtmlMatches.complete();\n\t\tthis._originalTextMatches && this._originalTextMatches.complete();\n\t\tthis._originalHtmlMatches && this._originalHtmlMatches.complete();\n\t}\n}\n","import { Directive, ElementRef, OnDestroy, OnInit } from '@angular/core';\nimport { filter, map, withLatestFrom } from 'rxjs/operators';\nimport { IComparisonCollection } from '../models/report-data.models';\nimport { MatchJumpEvent, MatchSelectEvent } from '../models/report-iframe-events.models';\nimport { MatchType } from '../models/report-matches.models';\nimport { ReportMatchHighlightService } from '../services/report-match-highlight.service';\nimport { ReportMatchesService } from '../services/report-matches.service';\nimport { ReportViewService } from '../services/report-view.service';\nimport { findRespectiveStart } from '../utils/report-match-helpers';\nimport { untilDestroy } from '../utils/until-destroy';\n\n@Directive({\n\tselector: '[crSourceHtmlHelper]',\n\tstandalone: false,\n})\nexport class SourceHtmlHelperComponent implements OnInit, OnDestroy {\n\tconstructor(\n\t\tprivate _reportViewSvc: ReportViewService,\n\t\tprivate _highlightSvc: ReportMatchHighlightService,\n\t\tprivate _element: ElementRef<HTMLIFrameElement>,\n\t\tprivate _matchesSvc: ReportMatchesService\n\t) {}\n\n\tprotected get frame() {\n\t\treturn this._element.nativeElement.contentWindow;\n\t}\n\n\t/**\n\t * Life-cycle method\n\t * subscribe to:\n\t * - source and suspect html matches\n\t * - report metadata source and suspect objects\n\t * - viewmode changes\n\t * - jump events\n\t */\n\tngOnInit() {\n\t\tconst { suspectHtml$, jump$, textMatchClick$ } = this._highlightSvc;\n\t\tconst { sourceHtmlMatches$ } = this._matchesSvc;\n\t\tconst { reportViewMode$, selectedResult$ } = this._reportViewSvc;\n\n\t\tjump$\n\t\t\t.pipe(\n\t\t\t\twithLatestFrom(reportViewMode$),\n\t\t\t\tfilter(([, viewData]) => viewData.viewMode === 'one-to-one' && viewData.isHtmlView),\n\t\t\t\tuntilDestroy(this)\n\t\t\t)\n\t\t\t.subscribe(([forward]) => {\n\t\t\t\tthis.messageFrame({ type: 'match-jump', forward } as MatchJumpEvent);\n\t\t\t});\n\n\t\ttextMatchClick$\n\t\t\t.pipe(\n\t\t\t\tfilter(ev => ev.origin === 'suspect' && ev.broadcast),\n\t\t\t\tmap(ev => ev.elem),\n\t\t\t\twithLatestFrom(selectedResult$, sourceHtmlMatches$, reportViewMode$),\n\t\t\t\tfilter(([, , matches, viewData]) => viewData.isHtmlView && !!matches),\n\t\t\t\tuntilDestroy(this)\n\t\t\t)\n\t\t\t.subscribe(([elem, suspect, matches]) => {\n\t\t\t\tif (elem && suspect?.result && matches) {\n\t\t\t\t\tconst comparison = suspect.result.html.comparison[MatchType[elem.match.type] as keyof IComparisonCollection];\n\t\t\t\t\tconst [start] = findRespectiveStart(elem.match.start, comparison, false);\n\t\t\t\t\tconst found = matches.findIndex(m => m.start === start);\n\t\t\t\t\tthis.markSingleMatchInFrame(found);\n\t\t\t\t} else {\n\t\t\t\t\tthis.markSingleMatchInFrame(-1);\n\t\t\t\t}\n\t\t\t});\n\n\t\tsuspectHtml$\n\t\t\t.pipe(\n\t\t\t\twithLatestFrom(selectedResult$, sourceHtmlMatches$, reportViewMode$),\n\t\t\t\tfilter(([, , matches, viewData]) => viewData.isHtmlView && !!matches),\n\t\t\t\tuntilDestroy(this)\n\t\t\t)\n\t\t\t.subscribe(([match, suspect, matches]) => {\n\t\t\t\tif (match && suspect && suspect.result && matches) {\n\t\t\t\t\tconst comparison = suspect.result.html.comparison[MatchType[match.type] as keyof IComparisonCollection];\n\t\t\t\t\tconst [start] = findRespectiveStart(match.start, comparison, false);\n\t\t\t\t\tconst found = matches.findIndex(m => m.start === start);\n\t\t\t\t\tthis.markSingleMatchInFrame(found);\n\t\t\t\t} else {\n\t\t\t\t\tthis.markSingleMatchInFrame(-1);\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\t/**\n\t * Send a message to the iframe using PostMessage API\n\t * @param data the data to post\n\t */\n\tprotected messageFrame(data: any) {\n\t\tthis.frame && this.frame.postMessage(data, '*');\n\t}\n\n\t/**\n\t * highlight a single match in the iframe\n\t * @param index the index of the match to mark\n\t */\n\tprotected markSingleMatchInFrame(index: number) {\n\t\tthis.messageFrame({ type: 'match-select', index } as MatchSelectEvent);\n\t}\n\n\tngOnDestroy() {}\n}\n","import { Directive, ElementRef, OnDestroy, OnInit } from '@angular/core';\nimport { filter, map, withLatestFrom } from 'rxjs/operators';\nimport { IComparisonCollection } from '../models/report-data.models';\nimport { MatchSelectEvent } from '../models/report-iframe-events.models';\nimport { MatchType } from '../models/report-matches.models';\nimport { ReportMatchHighlightService } from '../services/report-match-highlight.service';\nimport { ReportMatchesService } from '../services/report-matches.service';\nimport { ReportViewService } from '../services/report-view.service';\nimport { findRespectiveStart } from '../utils/report-match-helpers';\nimport { untilDestroy } from '../utils/until-destroy';\n\n@Directive({\n\tselector: '[crSuspectHtmlHelper]',\n\tstandalone: false,\n})\nexport class SuspectHtmlHelperComponent implements OnInit, OnDestroy {\n\tconstructor(\n\t\tprivate _reportViewSvc: ReportViewService,\n\t\tprivate _highlightSvc: ReportMatchHighlightService,\n\t\tprivate _element: ElementRef<HTMLIFrameElement>,\n\t\tprivate _matchesSvc: ReportMatchesService\n\t) {}\n\n\tprotected get frame() {\n\t\treturn this._element.nativeElement.contentWindow;\n\t}\n\n\t/**\n\t * Life-cycle method\n\t * subscribe to:\n\t * - suspect changes\n\t * - view mode changes\n\t * - source and suspect html matches\n\t */\n\tngOnInit() {\n\t\tconst { sourceHtml$, textMatchClick$ } = this._highlightSvc;\n\t\tconst { suspectHtmlMatches$ } = this._matchesSvc;\n\t\tconst { reportViewMode$, selectedResult$ } = this._reportViewSvc;\n\n\t\ttextMatchClick$\n\t\t\t.pipe(\n\t\t\t\tfilter(ev => ev.origin === 'source' && ev.broadcast),\n\t\t\t\tmap(ev => ev.elem),\n\t\t\t\twithLatestFrom(selectedResult$, suspectHtmlMatches$, reportViewMode$),\n\t\t\t\tfilter(([, , matches, viewData]) => viewData.isHtmlView && !!matches),\n\t\t\t\tuntilDestroy(this)\n\t\t\t)\n\t\t\t.subscribe(([elem, suspect, matches]) => {\n\t\t\t\tif (elem && suspect && suspect.result && matches) {\n\t\t\t\t\tconst comparison = suspect.result.html.comparison[MatchType[elem.match.type] as keyof IComparisonCollection];\n\t\t\t\t\tconst [start] = findRespectiveStart(elem.match.start, comparison, true);\n\t\t\t\t\tconst found = matches.findIndex(m => m.start === start);\n\t\t\t\t\tthis.markSingleMatchInFrame(found);\n\t\t\t\t} else {\n\t\t\t\t\tthis.markSingleMatchInFrame(-1);\n\t\t\t\t}\n\t\t\t});\n\n\t\tsourceHtml$\n\t\t\t.pipe(\n\t\t\t\twithLatestFrom(selectedResult$, suspectHtmlMatches$, reportViewMode$),\n\t\t\t\tfilter(([, , matches, viewData]) => viewData.isHtmlView && !!matches),\n\t\t\t\tfilter(\n\t\t\t\t\t([, suspect, ,]) =>\n\t\t\t\t\t\tsuspect != undefined &&\n\t\t\t\t\t\tsuspect != null &&\n\t\t\t\t\t\tsuspect.result != null &&\n\t\t\t\t\t\tsuspect.result != undefined &&\n\t\t\t\t\t\t!!suspect.result.html.value\n\t\t\t\t),\n\t\t\t\tuntilDestroy(this)\n\t\t\t)\n\t\t\t.subscribe(([match, suspect, matches]) => {\n\t\t\t\tif (match && suspect && suspect.result && matches) {\n\t\t\t\t\tconst comparison = suspect.result.html.comparison[MatchType[match.type] as keyof IComparisonCollection];\n\t\t\t\t\tconst [start] = findRespectiveStart(match.start, comparison, true);\n\t\t\t\t\tconst found = matches.findIndex(m => m.start === start);\n\t\t\t\t\tthis.markSingleMatchInFrame(found);\n\t\t\t\t} else {\n\t\t\t\t\tthis.markSingleMatchInFrame(-1);\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\t/**\n\t * Send a message to the iframe using PostMessage API\n\t * @param data the data to post\n\t */\n\tprotected messageFrame(data: any) {\n\t\tthis.frame && this.frame.postMessage(data, '*');\n\t}\n\n\t/**\n\t * highlight a single match in the iframe\n\t * @param index the index of the match to mark\n\t */\n\tprotected markSingleMatchInFrame(index: number) {\n\t\tthis.messageFrame({ type: 'match-select', index } as MatchSelectEvent);\n\t}\n\n\tngOnDestroy() {}\n}\n","import { AfterContentInit, ContentChildren, Directive, Input, OnDestroy, QueryList } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { filter, take, takeUntil, withLatestFrom } from 'rxjs/operators';\nimport { CrTextMatchComponent } from '../components/core/cr-text-match/cr-text-match.component';\nimport { ContentMode } from '../models/report-config.models';\nimport { IResultDetailResponse, IScanSource } from '../models/report-data.models';\nimport { Match } from '../models/report-matches.models';\nimport { ReportDataService } from '../services/report-data.service';\nimport { ReportMatchHighlightService } from '../services/report-match-highlight.service';\nimport { ReportViewService } from '../services/report-view.service';\nimport * as helpers from '../utils/highlight-helpers';\nimport { untilDestroy } from '../utils/until-destroy';\n\n@Directive({\n\tselector: '[crSourceTextHelper]',\n\tstandalone: false,\n})\nexport class SourceTextHelperDirective implements AfterContentInit, OnDestroy {\n\t@ContentChildren(CrTextMatchComponent)\n\tprivate children: QueryList<CrTextMatchComponent>;\n\tprivate current: CrTextMatchComponent | null;\n\n\tprivate unsubscribe$ = new Subject();\n\n\t@Input() public host: { currentPage: number; contentTextMatches: any };\n\n\tconstructor(\n\t\tprivate _highlightSvc: ReportMatchHighlightService,\n\t\tprivate _viewService: ReportViewService,\n\t\tprivate _dataSvc: ReportDataService\n\t) {}\n\n\tngAfterContentInit(): void {\n\t\tconst { textMatchClick$, jump$, sourceText$, suspectHtml$ } = this._highlightSvc;\n\t\tconst { crawledVersion$ } = this._dataSvc;\n\t\tconst { reportViewMode$, selectedResult$ } = this._viewService;\n\t\tsourceText$.pipe(untilDestroy(this), takeUntil(this.unsubscribe$)).subscribe(value => (this.current = value));\n\t\ttextMatchClick$\n\t\t\t.pipe(\n\t\t\t\tfilter(ev => ev.origin === 'suspect' && ev.broadcast),\n\t\t\t\twithLatestFrom(crawledVersion$, selectedResult$, reportViewMode$),\n\t\t\t\tfilter(([, , , viewData]) => !viewData.isHtmlView),\n\t\t\t\tuntilDestroy(this),\n\t\t\t\ttakeUntil(this.unsubscribe$)\n\t\t\t)\n\t\t\t.subscribe(([{ elem }, source, suspect]) => {\n\t\t\t\tif (elem && source && suspect?.result) {\n\t\t\t\t\tthis.handleBroadcast(elem.match, source, suspect.result, 'text');\n\t\t\t\t}\n\t\t\t});\n\n\t\tjump$\n\t\t\t.pipe(\n\t\t\t\twithLatestFrom(reportViewMode$),\n\t\t\t\tfilter(([, viewData]) => viewData.viewMode === 'one-to-one' && !viewData.isHtmlView),\n\t\t\t\tuntilDestroy(this),\n\t\t\t\ttakeUntil(this.unsubscribe$)\n\t\t\t)\n\t\t\t.subscribe(([forward]) => this.handleJump(forward));\n\n\t\tsuspectHtml$\n\t\t\t.pipe(\n\t\t\t\twithLatestFrom(crawledVersion$, selectedResult$, reportViewMode$),\n\t\t\t\tfilter(([, , , viewData]) => viewData.isHtmlView),\n\t\t\t\tfilter(([, source]) => !source?.html || !source.html.value)\n\t\t\t)\n\t\t\t.subscribe(([match, source, suspect]) => {\n\t\t\t\tif (match && source && suspect?.result) this.handleBroadcast(match, source, suspect.result, 'html');\n\t\t\t\tif (!match && source && suspect?.result)\n\t\t\t\t\tthis._highlightSvc.textMatchClicked({ elem: null, broadcast: false, origin: 'source' });\n\t\t\t});\n\t}\n\t/**\n\t * Handle a match click that was broadcasted by the suspect text helper\n\t * @param elem the broadcasted element\n\t * @param suspect the suspected scan result\n\t */\n\thandleBroadcast(match: Match, source: IScanSource, suspect: IResultDetailResponse, contentMode: ContentMode) {\n\t\tconst [, start] = helpers.findRespectiveMatch(match, suspect[contentMode].comparison, false);\n\t\tconst page = helpers.findRespectivePage(start, source.text.pages.startPosition);\n\t\tif (page === this.host.currentPage) {\n\t\t\tconst comp = this.children.find(item => item.match.start === start);\n\t\t\tif (comp === null || comp === undefined) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._highlightSvc.textMatchClicked({ elem: comp, broadcast: false, origin: 'source' });\n\t\t} else {\n\t\t\tthis.children.changes.pipe(take(1)).subscribe(() => {\n\t\t\t\tconst comp = this.children.find(item => item.match.start === start);\n\t\t\t\tif (comp === null || comp === undefined) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._highlightSvc.textMatchClicked({ elem: comp, broadcast: false, origin: 'source' });\n\t\t\t});\n\t\t\tthis.host.currentPage = page;\n\t\t}\n\t}\n\t/**\n\t * Handles the jump logic\n\t * @param forward the direction of the jump\n\t */\n\thandleJump(forward: boolean) {\n\t\tif (this.canJumpInCurrentPage(forward)) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tconst components = this.children.toArray();\n\t\t\t\tconst nextIndex = this.current ? components.indexOf(this.current) + (forward ? 1 : -1) : 0;\n\t\t\t\tthis._highlightSvc.textMatchClicked({ elem: components[nextIndex], broadcast: true, origin: 'source' });\n\t\t\t});\n\t\t} else {\n\t\t\tsetTimeout(() => {\n\t\t\t\tconst page = forward\n\t\t\t\t\t? helpers.findNextPageWithMatch(this.host.contentTextMatches, this.host.currentPage)\n\t\t\t\t\t: helpers.findPrevPageWithMatch(this.host.contentTextMatches, this.host.currentPage);\n\t\t\t\tif (this.host.currentPage !== page) {\n\t\t\t\t\tthis._highlightSvc.textMatchClicked({ elem: this.current, broadcast: true, origin: 'source' });\n\t\t\t\t\tthis.children.changes.pipe(take(1)).subscribe(() => {\n\t\t\t\t\t\tconst comp = forward ? this.children.first : this.children.last;\n\t\t\t\t\t\tthis._highlightSvc.textMatchClicked({ elem: comp, broadcast: true, origin: 'source' });\n\t\t\t\t\t});\n\t\t\t\t\tthis.host.currentPage = page;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Checks whether it is possible to jump forward/backward in the current page\n\t * @param forward the direction of the jump\n\t */\n\tcanJumpInCurrentPage(forward: boolean): boolean {\n\t\tif (this.current) {\n\t\t\treturn forward ? this.current !== this.children.last : this.current !== this.children.first;\n\t\t} else {\n\t\t\treturn this.children.length > 0;\n\t\t}\n\t}\n\n\tngOnDestroy() {\n\t\tthis.unsubscribe$.next();\n\t\tthis.unsubscribe$.complete();\n\t}\n}\n","import { AfterContentInit, ContentChildren, Directive, Input, OnDestroy, QueryList } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { filter, take, takeUntil, withLatestFrom } from 'rxjs/operators';\nimport { CrTextMatchComponent } from '../components/core/cr-text-match/cr-text-match.component';\nimport { ContentMode } from '../models/report-config.models';\nimport { IResultDetailResponse } from '../models/report-data.models';\nimport { Match } from '../models/report-matches.models';\nimport { ReportMatchHighlightService } from '../services/report-match-highlight.service';\nimport { ReportViewService } from '../services/report-view.service';\nimport * as helpers from '../utils/highlight-helpers';\nimport { untilDestroy } from '../utils/until-destroy';\n\n@Directive({\n\tselector: '[crSuspectTextHelper]',\n\tstandalone: false,\n})\nexport class SuspectTextHelperDirective implements AfterContentInit, OnDestroy {\n\t@Input() public host: { currentPage: number };\n\n\tprivate unsubscribe$ = new Subject();\n\n\tconstructor(private _highlightSvc: ReportMatchHighlightService, private _viewService: ReportViewService) {}\n\n\t@ContentChildren(CrTextMatchComponent)\n\tprivate children: QueryList<CrTextMatchComponent>;\n\n\t/**\n\t * Handle a match click that was broadcasted by the source text helper\n\t * @param elem the broadcasted element\n\t * @param suspect the suspected scan result\n\t * @param contentMode content mode of the broadcasting match\n\t */\n\thandleBroadcast(match: Match, suspect: IResultDetailResponse, contentMode: ContentMode) {\n\t\tsetTimeout(() => {\n\t\t\tconst [, start] = helpers.findRespectiveMatch(match, suspect[contentMode].comparison, true);\n\t\t\tconst page = helpers.findRespectivePage(start, suspect.text.pages.startPosition);\n\t\t\tif (page === this.host.currentPage) {\n\t\t\t\tconst comp = this.children.find(item => item.match.start === start);\n\t\t\t\tif (comp === null || comp === undefined) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._highlightSvc.textMatchClicked({ elem: comp, broadcast: false, origin: 'suspect' });\n\t\t\t} else {\n\t\t\t\tthis.children.changes.pipe(take(1)).subscribe(() => {\n\t\t\t\t\tconst comp = this.children.find(item => item.match.start === start);\n\t\t\t\t\tif (comp === null || comp === undefined) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthis._highlightSvc.textMatchClicked({ elem: comp, broadcast: false, origin: 'suspect' });\n\t\t\t\t});\n\t\t\t\tthis.host.currentPage = page;\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Life-cycle method\n\t * - listen to text match clicks from `source`\n\t */\n\tngAfterContentInit() {\n\t\tconst { reportViewMode$, selectedResult$ } = this._viewService;\n\t\tconst { textMatchClick$, sourceHtml$ } = this._highlightSvc;\n\t\ttextMatchClick$\n\t\t\t.pipe(\n\t\t\t\tfilter(ev => ev.origin === 'source' && ev.broadcast),\n\t\t\t\twithLatestFrom(selectedResult$),\n\t\t\t\tuntilDestroy(this),\n\t\t\t\ttakeUntil(this.unsubscribe$)\n\t\t\t)\n\t\t\t.subscribe(([{ elem }, suspect]) => {\n\t\t\t\tif (elem && suspect?.result) {\n\t\t\t\t\tthis.handleBroadcast(elem.match, suspect.result, 'text');\n\t\t\t\t}\n\t\t\t});\n\n\t\tsourceHtml$\n\t\t\t.pipe(\n\t\t\t\twithLatestFrom(selectedResult$, reportViewMode$),\n\t\t\t\tfilter(([, , viewData]) => viewData.isHtmlView),\n\t\t\t\tfilter(\n\t\t\t\t\t([, suspect]) =>\n\t\t\t\t\t\tsuspect != null && suspect != undefined && suspect.result != undefined && !suspect.result.html.value\n\t\t\t\t)\n\t\t\t)\n\t\t\t.subscribe(([match, suspect]) => {\n\t\t\t\tif (match && suspect?.result) this.handleBroadcast(match, suspect.result, 'html');\n\t\t\t\tif (!match && suspect?.result)\n\t\t\t\t\tthis._highlightSvc.textMatchClicked({ elem: null, broadcast: false, origin: 'suspect' });\n\t\t\t});\n\t}\n\n\tngOnDestroy() {\n\t\tthis.unsubscribe$.next();\n\t\tthis.unsubscribe$.complete();\n\t}\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n\tname: 'decodeUri',\n\tstandalone: false,\n})\nexport class DecodeUriPipe implements PipeTransform {\n\ttransform(value: string): string {\n\t\treturn decodeURI(value);\n\t}\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { IAuthorAlertCard } from './models/author-alert-card.models';\n\n@Component({\n\tselector: 'cr-author-alert-card',\n\ttemplateUrl: './author-alert-card.component.html',\n\tstyleUrls: ['./author-alert-card.component.scss'],\n\tstandalone: false,\n})\nexport class AuthorAlertCardComponent implements OnInit {\n\t@Input() authorAlert: IAuthorAlertCard;\n\t@Input() onlyAiView: boolean = false;\n\tconstructor() {}\n\n\tngOnInit(): void {}\n}\n","<div\n\tfxLayout=\"row\"\n\tfxLayoutAlign=\"start start\"\n\tfxLayoutGap=\"8px\"\n\t[ngClass]=\"{\n\t\t'only-ai-container': onlyAiView,\n\t\t'author-alert-card-container': !onlyAiView\n\t}\">\n\t<div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n\t\t<mat-icon fontSet=\"material-icons-round\" class=\"author-alert-card-person-icon\">person</mat-icon>\n\t</div>\n\n\t<ng-container *ngIf=\"!onlyAiView; else onlyAiViewRef\">\n\t\t<div fxLayout=\"column\" fxLayoutAlign=\"start start\" fxLayoutGap=\"4px\">\n\t\t\t<div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"4px\" class=\"author-alert-card-title\">\n\t\t\t\t<mat-chip-listbox role=\"listbox\">\n\t\t\t\t\t<mat-chip-option>{{ authorAlert.title | decodeUri }}</mat-chip-option>\n\t\t\t\t</mat-chip-listbox>\n\t\t\t\t<mat-icon fontSet=\"material-icons-outlined\">info</mat-icon>\n\t\t\t</div>\n\t\t\t<span class=\"author-alert-card-message\">{{ authorAlert.message }}</span>\n\t\t</div>\n\t</ng-container>\n\n\t<ng-template #onlyAiViewRef>\n\t\t<div class=\"author-alert-content-container\">\n\t\t\t<div class=\"author-alert-card-title\">\n\t\t\t\t{{ authorAlert.message }}\n\t\t\t</div>\n\t\t\t<div class=\"author-alert-card-message-container\">\n\t\t\t\t<mat-icon fontSet=\"material-icons-outlined\">info</mat-icon>\n\t\t\t\t<mat-chip-listbox>\n\t\t\t\t\t<mat-chip-option>\n\t\t\t\t\t\t{{ authorAlert.title | decodeUri }}\n\t\t\t\t\t</mat-chip-option>\n\t\t\t\t</mat-chip-listbox>\n\t\t\t</div>\n\t\t</div>\n\t</ng-template>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n\tname: 'fileName',\n\tstandalone: false,\n})\nexport class FileNamePipe implements PipeTransform {\n\ttransform(fileName: string): string {\n\t\treturn this._cleanFileName(fileName);\n\t}\n\n\tprivate _cleanFileName(fileName: string): string {\n\t\t// Replace multiple periods with a single period\n\t\tlet cleanedFileName = fileName.replace(/\\.{2,}/g, '.');\n\n\t\t// Remove any invalid characters that are not allowed in file names\n\t\tcleanedFileName = cleanedFileName.replace(/[<>:\"/\\\\|?*\\x00-\\x1F]/g, '');\n\n\t\t// Ensure there are no trailing periods or spaces\n\t\tcleanedFileName = cleanedFileName.trim().replace(/\\.$/, '');\n\n\t\treturn cleanedFileName;\n\t}\n}\n","import {\n\tAfterViewInit,\n\tChangeDetectorRef,\n\tComponent,\n\tElementRef,\n\tEventEmitter,\n\tHostBinding,\n\tHostListener,\n\tInput,\n\tOnChanges,\n\tOnInit,\n\tOutput,\n\tRenderer2,\n\tSimpleChanges,\n\tTemplateRef,\n\tViewChild,\n} from '@angular/core';\nimport { PostMessageEvent, ZoomEvent } from '../../../models/report-iframe-events.models';\nimport { IReportViewEvent } from '../../../models/report-view.models';\nimport {\n\tMatch,\n\tMatchType,\n\tReportOrigin,\n\tResultDetailItem,\n\tSlicedMatch,\n\tTextMatchHighlightEvent,\n} from '../../../models/report-matches.models';\nimport { DirectionMode as ReportContentDirectionMode, ViewMode } from '../../../models/report-config.models';\nimport { TEXT_FONT_SIZE_UNIT, MIN_TEXT_ZOOM, MAX_TEXT_ZOOM } from '../../../constants/report-content.constants';\nimport { PageEvent } from '../../core/cr-paginator/models/cr-paginator.models';\nimport { ReportMatchHighlightService } from '../../../services/report-match-highlight.service';\nimport { IScanSource } from '../../../models/report-data.models';\nimport { EResponsiveLayoutType, EPlatformType } from '../../../enums/copyleaks-web-report.enums';\nimport { ReportViewService } from '../../../services/report-view.service';\nimport { untilDestroy } from '../../../utils/until-destroy';\nimport { EXCLUDE_MESSAGE } from '../../../constants/report-exclude.constants';\nimport { IAuthorAlertCard } from '../report-alerts-container/components/author-alert-card/models/author-alert-card.models';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport * as helpers from '../../../utils/report-match-helpers';\nimport { COPYLEAKS_REPORT_IFRAME_STYLES } from '../../../constants/report-iframe-styles.constants';\n\nimport oneToManyIframeJsScript from '../../../utils/one-to-many-iframe-logic';\nimport oneToOneIframeJsScript from '../../../utils/one-to-one-iframe-logic';\nimport { filter } from 'rxjs/operators';\nimport * as rangy from 'rangy';\nimport * as rangyclassapplier from 'rangy/lib/rangy-classapplier';\n\nimport { ALERTS } from '../../../constants/report-alerts.constants';\n\n@Component({\n\tselector: 'copyleaks-content-viewer-container',\n\ttemplateUrl: './content-viewer-container.component.html',\n\tstyleUrls: ['./content-viewer-container.component.scss'],\n\tanimations: [\n\t\ttrigger('fadeIn', [\n\t\t\tstate('void', style({ opacity: 0 })),\n\t\t\ttransition(':enter', [animate('0.5s ease-in', style({ opacity: 1 }))]),\n\t\t]),\n\t],\n\tstandalone: false,\n})\nexport class ContentViewerContainerComponent implements OnInit, AfterViewInit, OnChanges {\n\t@HostBinding('style.flex-grow')\n\tflexGrowProp: number;\n\n\t@HostListener('click', ['$event'])\n\thandleClick(event: MouseEvent): void {\n\t\tif (event.shiftKey) this.isShiftClicked = true;\n\t\telse this.isShiftClicked = false;\n\t}\n\n\t/**\n\t * Handles PostMessage events, making sure they are from the correct iframe.\n\t * @param event the default PostMessage event\n\t */\n\t@HostListener('window:message', ['$event'])\n\tonFrameMessage(event: MessageEvent) {\n\t\tconst { source, data } = event;\n\t\tif (source !== this.iFrameWindow) {\n\t\t\treturn;\n\t\t}\n\t\tthis.iFrameMessageEvent.emit(data as PostMessageEvent);\n\t}\n\n\t@ViewChild('contentIFrame', { static: false }) contentIFrame: ElementRef<HTMLIFrameElement>;\n\n\t@ViewChild('contentText', { static: false }) contentText: ElementRef;\n\n\t/**\n\t * @Input Determines if the view should be rendered as HTML.\n\t *\n\t * @description\n\t * When set to `true`, the component will view the source/result conent as HTML `only` if the source/result has such content.\n\t * When set to `false`, the text view will be showed.\n\t *\n\t * @default `false`\n\t */\n\t@Input() isHtmlView: boolean;\n\n\t/**\n\t * @Input Determines if the view should be rendered as HTML.\n\t *\n\t * @description\n\t * When set to `true`, the component will view the source/result conent as HTML `only` if the source/result has such content.\n\t * When set to `false`, the text view will be showed.\n\t *\n\t * @default `false`\n\t */\n\t@Input() isExportedComponent: boolean = false;\n\n\t/**\n\t * @Input Determines if the view is for alerts or not.\n\t *\n\t * @description\n\t * When set to `true`, the component will view the source/result conent as TEXT and highlights the alert matches.\n\t * When set to `false`, the text view will be showed.\n\t *\n\t * @default `false`\n\t */\n\t@Input() isAlertsView: boolean;\n\n\t/**\n\t * @Input Determines if the view is for AI view or not.\n\t *\n\t * @default `false`\n\t */\n\t@Input() isAIView: boolean;\n\n\t/**\n\t * @Input Determines whether the button to switch between text and html view should be hidden or not.\n\t *\n\t * @description\n\t * When set to `true`, the button to switch between text and html view will be hidden.\n\t * When set to `false`, the button to switch between text and html view will be shown.\n\t *\n\t * @default `false`\n\t */\n\t@Input() hideTextModeSwitch: boolean;\n\n\t/**\n\t * @Input The scan source (the original scanned document) data\n\t *\n\t * @description\n\t * Includes data about the text & Html views.\n\t */\n\t@Input() scanSource: IScanSource;\n\n\t/**\n\t * @Input The scan result data\n\t *\n\t * @description\n\t * Includes data about the text & Html views of the result.\n\t */\n\t@Input() resultData: ResultDetailItem;\n\n\t/**\n\t * @Input The source/result text view matches.\n\t */\n\t@Input() contentTextMatches: SlicedMatch[][];\n\n\t/**\n\t * @Input The source/result text view matches.\n\t */\n\t@Input() contentHtmlMatches: Match[];\n\n\t/**\n\t * @Input Flag indicating whether to show the content title or not.\n\t */\n\t@Input() hideTitleContainer = false;\n\n\t/**\n\t * @Input Flag indicating whether to show the content paginator or not.\n\t */\n\t@Input() hidePoweredBy = false;\n\n\t/**\n\t * @Input Flex grow property - flex-grow\n\t */\n\t@Input() flexGrow: number;\n\n\t/**\n\t * @Input The content direction of the source/result text conent.\n\t */\n\t@Input() contentDirection: ReportContentDirectionMode = 'ltr';\n\n\t/**\n\t * @Input Flag indicating whether the content has masked text or not.\n\t */\n\t@Input() hasMaskedContent: boolean;\n\n\t/**\n\t * @Input Sets the zoom level for the content of the source/result text document.\n\t *\n\t * @description\n\t * Controls the zoom level of the text in the document.\n\t * The value represents a multiplier where `1` is 100% (normal size),\n\t * `2` would be 100% (zoomed in), and so on.\n\t *\n\t * @default `1`\n\t *\n\t * @constraints\n\t * - Minimum value: 0.5 (50% zoom out)\n\t * - Maximum value: 4 (400% zoom in)\n\t */\n\t@Input() contentZoom: number = 1;\n\n\t/**\n\t * @Input The current page index in text view document.\n\t */\n\t@Input() currentPage: number = 1;\n\n\t/**\n\t * Sets the report view mode.\n\t *\n\t * @description\n\t * Determines how the report should be displayed in relation to the source document.\n\t *\n\t * - 'one-to-many': Displays the source document side-by-side with multiple result documents.\n\t * - 'one-to-one': Displays the source document compared to a single result document.\n\t *\n\t * @default 'one-to-many'\n\t *\n\t * @see ViewMode\n\t */\n\t@Input() viewMode: ViewMode = 'one-to-many';\n\n\t/**\n\t * Specifies the origin of the report content.\n\t *\n\t * @description\n\t * Defines the source context for the content displayed in the report.\n\t *\n\t * - 'original': The scan source in the \"one-to-many\" view.\n\t * - 'source': The scan source in the \"one-to-one\" view.\n\t * - 'suspect': The result view in the scan report.\n\t *\n\t * @default 'original'\n\t *\n\t * @see ReportOrigin\n\t */\n\t@Input() reportOrigin: ReportOrigin = 'original';\n\n\t/**\n\t * Specifies the responsive layout type for the report.\n\t *\n\t * @description\n\t * This input controls the layout view of the report based on the device type.\n\t *\n\t * Acceptable values are from the `EResponsiveLayoutType` enum:\n\t * - 'Desktop': Layout optimized for desktop view.\n\t * - 'Tablet': Layout optimized for tablet view.\n\t * - 'Mobile': Layout optimized for mobile view.\n\t *\n\t * @see EResponsiveLayoutType\n\t */\n\t@Input() reportResponsive: EResponsiveLayoutType = EResponsiveLayoutType.Desktop;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether to show the loading view or not.\n\t */\n\t@Input() showLoadingView = true;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether to show the omitted words or not.\n\t */\n\t@Input() showOmittedWords = false;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether the scan is a partital scan or not.\n\t */\n\t@Input() isPartitalScan: boolean = false;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether the match selection is multiple or not.\n\t */\n\t@Input() isMultiSelection = false;\n\n\t/**\n\t * @Input {string} Submitted document name.\n\t */\n\t@Input() submittedDocumentName = null;\n\n\t@Input() authorAlert: IAuthorAlertCard | null;\n\n\t/**\n\t * `true` if the source document has an `html` section\n\t */\n\t@Input() hasHtml: boolean;\n\n\t/**\n\t * @Input {string} The custom script to be injected into the iframe.\n\t */\n\t@Input() customIframeScript: string;\n\n\t/**\n\t * @Input {string} The current user email.\n\t */\n\t@Input() currentUserEmail: string;\n\n\t/**\n\t * @Input The custom view matches data.\n\t */\n\t@Input() customViewMatchesData: {\n\t\tid: string;\n\t\tparentId: string;\n\t\tstart: number;\n\t\tend: number;\n\t\ttext: string;\n\t\tpageNumber: number;\n\t\tsubmitterEmail: string;\n\t\tisRead: boolean;\n\t}[][];\n\n\t/**\n\t * @Input {string} The class name to be used for the custom view matches.\n\t */\n\t@Input() customViewMatcheClassName: string = 'copyleaks-highlight';\n\n\t/**\n\t * @Input {boolean} Flag indicating whether to show the add custom match icon or not.\n\t */\n\t@Input() allowCustomViewAddBtn: boolean = false;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether to show the match navigation buttons or not.\n\t */\n\t@Input() hideMatchNavigationButtons = false;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether to show the omitted words button or not.\n\t */\n\t@Input() hideOmittedWordsButton = false;\n\n\t/**\n\t * Emits iFrame messages to the parent layout component.\n\t *\n\t * @example\n\t * <app-child-component (iFrameMessageEvent)=\"handleIFrameMessageEvent($event)\"></app-child-component>\n\t *\n\t * @description\n\t * This output emits messages that originate from an iFrame embedded within this component.\n\t * The emitted event is of type `PostMessageEvent`, which contains the message data.\n\t * Parent components can subscribe to this output event to handle iFrame messages accordingly.\n\t *\n\t * @see PostMessageEvent\n\t */\n\t@Output() iFrameMessageEvent = new EventEmitter<PostMessageEvent>();\n\n\t/**\n\t * Emits events when a match is selected.\n\t */\n\t@Output() onTextMatchSelectionEvent = new EventEmitter<TextMatchHighlightEvent | any>();\n\n\t/**\n\t * Emits events when there are changes to the component's view.\n\t *\n\t * @example\n\t * <app-report-component (viewChangeEvent)=\"handleViewChange($event)\"></app-report-component>\n\t *\n\t * @description\n\t * This output emitter is triggered whenever there's a change in the view within this component.\n\t * The emitted event is of type `IReportViewEvent`, which encapsulates the details of the view change.\n\t * Parent components can subscribe to this output event to respond to view changes appropriately.\n\t *\n\t * @see IReportViewEvent\n\t */\n\t@Output() viewChangeEvent = new EventEmitter<IReportViewEvent>();\n\n\t/**\n\t * Event emitter for Opening the disclaimer.\n\t *\n\t * @event onOpenDisclaimer\n\t * @type {EventEmitter<any>}\n\t */\n\t@Output() onOpenDisclaimer: EventEmitter<any> = new EventEmitter<any>();\n\n\t/**\n\t * Event emitter for Opening the disclaimer.\n\t *\n\t * @event onShowOmittedWords\n\t * @type {EventEmitter<boolean>}\n\t */\n\t@Output() onShowOmittedWords: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n\trerendered: boolean = false;\n\ttextStartIndex: number | null = null;\n\ttextEndIndex: number | null = null;\n\n\tcontentTextChangesObserver: MutationObserver;\n\tdocDirObserver: MutationObserver;\n\n\tisShiftClicked: boolean;\n\tiframeLoaded: boolean;\n\n\tnumberOfPages: number = 1;\n\tnumberOfWords: number | undefined = undefined;\n\n\tcontentHtml: string;\n\n\tALERTS = ALERTS;\n\tEXCLUDE_MESSAGE = EXCLUDE_MESSAGE;\n\tVIEW_OMITTED_WORDS_TOOLTIP_MESSAGE = $localize`Show omitted words`;\n\tHIDE_OMITTED_WORDS_TOOLTIP_MESSAGE = $localize`Hide omitted words`;\n\tZOOM_IN_TOOLTIP_MESSAGE = $localize`Zoom in`;\n\tZOOM_OUT_TOOLTIP_MESSAGE = $localize`Zoom out`;\n\n\tiframeStyle: string = COPYLEAKS_REPORT_IFRAME_STYLES;\n\tiframeJsScript: string;\n\n\tget pages(): number[] {\n\t\tif (this.scanSource) return this.scanSource && this.scanSource.text.pages.startPosition;\n\t\tif (this.resultData.result) return this.resultData.result?.text.pages.startPosition;\n\n\t\treturn [];\n\t}\n\n\tiFrameWindow: Window | null; // IFrame nativeElement reference\n\n\tMatchType = MatchType; // Match type enum\n\tEResponsiveLayoutType = EResponsiveLayoutType;\n\tEPlatformType = EPlatformType;\n\n\tcustomTabContent: TemplateRef<any> | null;\n\n\tcustomMatchTobeAddedData = null;\n\n\tONLY_TEXT_VIEW_IS_AVAILABLE = $localize`Only text view is available`;\n\tMULTISELECT_IS_ON = $localize`Can't navigate between matches when multiple matches are selected`;\n\tMULTISELECT_IS_OF_NEXT = $localize`Go to next match`;\n\tMULTISELECT_IS_OF_PREV = $localize`Go to previous match`;\n\n\ticonPosition = { top: 0, left: 0 };\n\ticonVisible = false;\n\n\tcustomMatchesWithEventListenersIds: string[] = [];\n\n\tdocDirection: 'ltr' | 'rtl';\n\n\tprivate _zoomIn: boolean;\n\n\tconstructor(\n\t\tprivate _renderer: Renderer2,\n\t\tprivate _cdr: ChangeDetectorRef,\n\t\tprivate _highlightService: ReportMatchHighlightService,\n\t\tpublic viewSvc: ReportViewService,\n\t\tprivate _el: ElementRef\n\t) {}\n\n\tngOnInit(): void {\n\t\tif (this.flexGrow !== undefined && this.flexGrow !== null) this.flexGrowProp = this.flexGrow;\n\n\t\tif (!this.isExportedComponent) {\n\t\t\tthis.viewSvc.selectedCustomTabContent$.pipe(untilDestroy(this)).subscribe(content => {\n\t\t\t\tif (this.viewMode !== 'one-to-one') this.customTabContent = content;\n\t\t\t});\n\t\t\tthis.viewSvc.documentDirection$.pipe(untilDestroy(this)).subscribe(dir => {\n\t\t\t\tthis.docDirection = dir;\n\t\t\t});\n\t\t} else {\n\t\t\tthis._observeDocumentDirection();\n\t\t}\n\n\t\tthis._highlightService.textMatchClick$\n\t\t\t.pipe(\n\t\t\t\tfilter(event => event.origin === this.reportOrigin),\n\t\t\t\tuntilDestroy(this)\n\t\t\t)\n\t\t\t.subscribe(event => {\n\t\t\t\tthis.onTextMatchSelectionEvent.emit(event);\n\t\t\t});\n\t}\n\n\tngAfterViewInit() {\n\t\tif (this.contentHtml) {\n\t\t\t// This is important in the one-to-one view where the iframe is not rendered right away, so we need to wait for it to be rendered\n\t\t\tthis._renderer.setAttribute(this.contentIFrame?.nativeElement, 'srcdoc', this.contentHtml);\n\t\t}\n\n\t\tthis.contentIFrame?.nativeElement?.addEventListener(\n\t\t\t'load',\n\t\t\t() => {\n\t\t\t\tif (this.contentHtml) {\n\t\t\t\t\tthis.iFrameWindow = this.contentIFrame?.nativeElement?.contentWindow;\n\t\t\t\t\tthis.iframeLoaded = true;\n\t\t\t\t\tthis.showLoadingView = false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tfalse\n\t\t);\n\n\t\tthis.contentText?.nativeElement?.addEventListener('wheel', this._handleScroll, { passive: false });\n\t\tif (this.allowCustomViewAddBtn) {\n\t\t\tdocument.addEventListener('selectionchange', () => {\n\t\t\t\tconst selection = window.getSelection();\n\t\t\t\tif (selection && selection.rangeCount > 0) {\n\t\t\t\t\tconst range = selection.getRangeAt(0);\n\t\t\t\t\tif (this._el.nativeElement.contains(range.commonAncestorContainer) && !document.getSelection().toString()) {\n\t\t\t\t\t\tthis.hideAddCustomMatchIcon();\n\t\t\t\t\t} else if (\n\t\t\t\t\t\tthis._el.nativeElement.contains(range.commonAncestorContainer) &&\n\t\t\t\t\t\tthis.reportResponsive === EResponsiveLayoutType.Mobile\n\t\t\t\t\t) {\n\t\t\t\t\t\tthis.showAddCustomMatchIcon(null);\n\t\t\t\t\t}\n\t\t\t\t} else this.hideAddCustomMatchIcon();\n\t\t\t});\n\n\t\t\twindow.addEventListener('mouseup', event => {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.showAddCustomMatchIcon(event);\n\t\t\t\t}, 100);\n\t\t\t});\n\n\t\t\t// Mutation observer to handle DOM changes\n\t\t\tthis.contentTextChangesObserver = new MutationObserver(() => {\n\t\t\t\t// Temporarily disconnect the observer to prevent infinite loop\n\t\t\t\tthis.contentTextChangesObserver?.disconnect();\n\n\t\t\t\t// Reconnect the observer\n\t\t\t\tthis.contentTextChangesObserver.observe(this.contentText?.nativeElement, {\n\t\t\t\t\tchildList: true,\n\t\t\t\t\tsubtree: true,\n\t\t\t\t\tcharacterData: true,\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tthis.contentTextChangesObserver.observe(this.contentText?.nativeElement, {\n\t\t\t\tchildList: true,\n\t\t\t\tsubtree: true,\n\t\t\t\tcharacterData: true,\n\t\t\t});\n\n\t\t\t// Apply existing customMatches on page load\n\t\t\tif (this.customViewMatchesData)\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.customViewMatchesData[this.currentPage - 1].forEach(customMatch => {\n\t\t\t\t\t\tif (customMatch.parentId) return;\n\t\t\t\t\t\tthis.highlightCustomMatchText(customMatch);\n\t\t\t\t\t});\n\t\t\t\t}, 1000);\n\t\t}\n\t}\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif (\n\t\t\t(('contentTextMatches' in changes && changes['contentTextMatches'].currentValue != undefined) ||\n\t\t\t\t('customViewMatchesData' in changes && changes['customViewMatchesData'].currentValue != undefined)) &&\n\t\t\t(!this.isHtmlView || !this.hasHtml)\n\t\t) {\n\t\t\tthis.showLoadingView = false;\n\t\t\tif (!this.isHtmlView && this.viewSvc.reportViewMode.isHtmlView && this.reportOrigin === 'original')\n\t\t\t\tthis.viewSvc.reportViewMode$.next({ ...this.viewSvc.reportViewMode, isHtmlView: false });\n\t\t}\n\n\t\tif ('isAlertsView' in changes && !changes['isAlertsView'].currentValue && !changes['isAlertsView'].firstChange)\n\t\t\tthis.iframeLoaded = false;\n\n\t\tif (this.allowCustomViewAddBtn && 'customViewMatchesData' in changes) {\n\t\t\t// Apply existing customMatches on page load\n\t\t\tif (this.customViewMatchesData)\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.customViewMatchesData[this.currentPage - 1].forEach(customMatch => {\n\t\t\t\t\t\tif (customMatch.parentId) return;\n\t\t\t\t\t\tthis.highlightCustomMatchText(customMatch);\n\t\t\t\t\t});\n\t\t\t\t}, 1000);\n\t\t}\n\t\tif (\n\t\t\t'scanSource' in changes ||\n\t\t\t'reportOrigin' in changes ||\n\t\t\t'resultData' in changes ||\n\t\t\t'contentHtmlMatches' in changes ||\n\t\t\t'isHtmlView' in changes\n\t\t) {\n\t\t\tthis.iframeJsScript = this.reportOrigin === 'original' ? oneToManyIframeJsScript : oneToOneIframeJsScript;\n\n\t\t\tif ((this.reportOrigin === 'source' || this.reportOrigin === 'original') && !!this.scanSource) {\n\t\t\t\tthis.numberOfWords = this.scanSource?.metadata?.words ?? 0;\n\t\t\t\tthis.numberOfPages = this.scanSource?.text?.pages?.startPosition?.length ?? 1;\n\t\t\t\tif (\n\t\t\t\t\tthis.allowCustomViewAddBtn &&\n\t\t\t\t\t(!this.customViewMatchesData || this.customViewMatchesData.length != this.numberOfPages)\n\t\t\t\t)\n\t\t\t\t\tthis.customViewMatchesData = Array.from({ length: this.numberOfPages }, () => []);\n\t\t\t}\n\n\t\t\tif (this.reportOrigin === 'suspect' && !!this.resultData) {\n\t\t\t\tthis.numberOfPages = this.resultData.result?.text?.pages?.startPosition?.length ?? 1;\n\t\t\t}\n\n\t\t\tif (!!this.contentHtmlMatches && this.isHtmlView) {\n\t\t\t\tif (\n\t\t\t\t\tthis.contentHtmlMatches &&\n\t\t\t\t\tchanges['contentHtmlMatches']?.previousValue != changes['contentHtmlMatches']?.currentValue\n\t\t\t\t) {\n\t\t\t\t\tthis.showLoadingView = true;\n\t\t\t\t\tthis.rerendered = false;\n\t\t\t\t}\n\n\t\t\t\tif (this.reportOrigin === 'original' || this.reportOrigin === 'source') {\n\t\t\t\t\tconst updatedHtml = this._getRenderedMatches(this.contentHtmlMatches, this.scanSource?.html?.value);\n\t\t\t\t\tif (updatedHtml && this.contentHtmlMatches) {\n\t\t\t\t\t\tthis.contentHtml = updatedHtml;\n\t\t\t\t\t\tthis.rerendered = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (this.reportOrigin === 'suspect') {\n\t\t\t\t\tconst updatedHtml = this._getRenderedMatches(this.contentHtmlMatches, this.resultData?.result?.html?.value);\n\t\t\t\t\tif (updatedHtml && this.contentHtmlMatches) {\n\t\t\t\t\t\tthis.contentHtml = updatedHtml;\n\t\t\t\t\t\tthis.rerendered = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\t((changes['contentHtmlMatches'] && changes['contentHtmlMatches'].currentValue) || this.contentHtmlMatches) &&\n\t\t\tthis.contentIFrame?.nativeElement &&\n\t\t\tthis.isHtmlView &&\n\t\t\t!changes['isMultiSelection']\n\t\t) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis._renderer.setAttribute(this.contentIFrame?.nativeElement, 'srcdoc', this.contentHtml);\n\t\t\t\tthis._cdr.detectChanges();\n\t\t\t\tthis.showLoadingView = true;\n\t\t\t}, 500);\n\t\t} else if (\n\t\t\t((changes['contentHtmlMatches'] && changes['contentHtmlMatches'].currentValue) || this.contentHtmlMatches) &&\n\t\t\tthis.contentIFrame?.nativeElement &&\n\t\t\tthis.isHtmlView &&\n\t\t\tchanges['isMultiSelection'] &&\n\t\t\tthis.isAIView\n\t\t) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis._renderer.setAttribute(this.contentIFrame?.nativeElement, 'srcdoc', this.contentHtml);\n\t\t\t\tthis._cdr.detectChanges();\n\t\t\t\tthis.showLoadingView = true;\n\t\t\t}, 500);\n\t\t}\n\n\t\tif ('submittedDocumentName' in changes && this.submittedDocumentName) {\n\t\t\tthis.submittedDocumentName = decodeURIComponent(this.submittedDocumentName);\n\t\t}\n\t}\n\n\tonViewChange() {\n\t\tif (!this.iframeLoaded) this.showLoadingView = true;\n\t\tif (this.viewSvc.reportViewMode.alertCode === ALERTS.SUSPECTED_AI_TEXT_DETECTED) {\n\t\t\tthis._highlightService.aiInsightsSelectedResults?.forEach(result => {\n\t\t\t\tthis._highlightService.aiInsightsShowResult$.next({\n\t\t\t\t\tresultRange: {\n\t\t\t\t\t\tstart: result.resultRange.start,\n\t\t\t\t\t\tend: result.resultRange.end,\n\t\t\t\t\t},\n\t\t\t\t\tisSelected: false,\n\t\t\t\t});\n\t\t\t});\n\t\t\tthis._highlightService.aiInsightsSelectedResults$.next([]);\n\t\t\tthis._highlightService.aiInsightsShowResult$.next(null);\n\t\t\tthis._highlightService.clear$.next(null);\n\t\t}\n\n\t\tif (this.reportOrigin === 'original' || this.reportOrigin === 'source')\n\t\t\tthis.viewChangeEvent.emit({\n\t\t\t\t...this.viewSvc.reportViewMode,\n\t\t\t\tisHtmlView: !this.isHtmlView,\n\t\t\t\tviewMode: this.viewMode,\n\t\t\t\tsourcePageIndex: this.currentPage,\n\t\t\t});\n\t\telse\n\t\t\tthis.viewChangeEvent.emit({\n\t\t\t\t...this.viewSvc.reportViewMode,\n\t\t\t\tisHtmlView: !this.isHtmlView,\n\t\t\t\tviewMode: this.viewMode,\n\t\t\t\tsuspectPageIndex: this.currentPage,\n\t\t\t});\n\t\tthis._highlightService.clear();\n\t\tthis._highlightService.clearAllMatchs();\n\t\tthis._cdr.detectChanges();\n\t}\n\n\tchangeContentDirection(direction: ReportContentDirectionMode) {\n\t\tthis.contentDirection = direction;\n\n\t\tthis._cdr.detectChanges();\n\t}\n\n\t/**\n\t * updates the font size of the suspect text.\n\t * @param amount a decimal number between 0.5 and 4\n\t */\n\tzoomOut(amount: number = TEXT_FONT_SIZE_UNIT) {\n\t\tif (this.isHtmlView && this.hasHtml) {\n\t\t\tthis._zoomIn = false;\n\t\t\tthis._adjustZoom();\n\t\t} else this.contentZoom = Math.max(this.contentZoom - amount, MIN_TEXT_ZOOM);\n\n\t\tthis._cdr.detectChanges();\n\t}\n\n\t/**\n\t * updates the font size of the suspect text.\n\t * @param amount a decimal number between 0.5 and 4\n\t */\n\tzoomIn(amount: number = TEXT_FONT_SIZE_UNIT) {\n\t\tif (this.isHtmlView && this.hasHtml) {\n\t\t\tthis._zoomIn = true;\n\t\t\tthis._adjustZoom();\n\t\t} else this.contentZoom = Math.min(this.contentZoom + amount, MAX_TEXT_ZOOM);\n\n\t\tthis._cdr.detectChanges();\n\t}\n\n\tonPaginationEvent(event: PageEvent) {\n\t\tif (!event) return;\n\n\t\tthis.currentPage = event.pageIndex;\n\n\t\tif (this.reportOrigin === 'original' || this.reportOrigin === 'source')\n\t\t\tthis.viewChangeEvent.emit({\n\t\t\t\t...this.viewSvc.reportViewMode,\n\t\t\t\tsourcePageIndex: this.currentPage,\n\t\t\t});\n\t\telse\n\t\t\tthis.viewChangeEvent.emit({\n\t\t\t\t...this.viewSvc.reportViewMode,\n\t\t\t\tsuspectPageIndex: this.currentPage,\n\t\t\t});\n\n\t\t// Apply existing customMatches on page load\n\t\tif (this.allowCustomViewAddBtn && this.customViewMatchesData)\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.customMatchesWithEventListenersIds = [];\n\t\t\t\tthis.hideAddCustomMatchIcon();\n\t\t\t\tthis.customViewMatchesData[this.currentPage - 1].forEach(customMatch => {\n\t\t\t\t\tif (customMatch.parentId) return;\n\t\t\t\t\tthis.highlightCustomMatchText(customMatch);\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\t/**\n\t * Jump to next match click handler.\n\t * @param next if `true` jump to next match, otherwise jumpt to previous match\n\t */\n\tonJumpToNextMatchClick(next: boolean = true) {\n\t\tthis._highlightService.jump(next);\n\t}\n\n\topenDisclaimer() {\n\t\tthis.onOpenDisclaimer.emit(null);\n\t}\n\n\ttoggleOmittedWordsView() {\n\t\tthis.onShowOmittedWords.emit(!this.showOmittedWords);\n\t}\n\n\tprivate _adjustZoom() {\n\t\tthis.contentIFrame.nativeElement.contentWindow.postMessage(\n\t\t\t{ type: 'zoom', zoomIn: this._zoomIn } as ZoomEvent,\n\t\t\t'*'\n\t\t);\n\t}\n\n\t/**\n\t * Handels the Ctrl key and scroll events, by updating the content zoom view accordingly only for text view\n\t * @param event The wheel event\n\t */\n\tprivate _handleScroll = (event: WheelEvent): void => {\n\t\tif (event && event.ctrlKey && (!this.isHtmlView || !this.hasHtml)) {\n\t\t\tevent.preventDefault();\n\t\t\t// Check if the scroll is up or down & update the zoom property accordingly\n\t\t\tif (event.deltaY < 0) this.zoomIn();\n\t\t\telse if (event.deltaY > 0) this.zoomOut();\n\t\t}\n\t};\n\n\t/**\n\t * Render list of matches in the iframe's HTML\n\t * @param matches the matches to render\n\t */\n\tprotected _getRenderedMatches(matches: Match[] | null, originalHtml?: string) {\n\t\tif (this.rerendered == true || !matches || !originalHtml) return null;\n\n\t\tconst html = helpers.getRenderedMatches(matches, originalHtml);\n\t\tif (!html) return null;\n\n\t\tconst css = this._renderer.createElement('style') as HTMLStyleElement;\n\t\tcss.textContent = this.iframeStyle;\n\t\tconst iframeStyle = css.outerHTML;\n\n\t\tconst js = this._renderer.createElement('script') as HTMLScriptElement;\n\t\tjs.textContent = this.iframeJsScript;\n\t\tlet iframeJsScript = js.outerHTML;\n\n\t\tif (this.customIframeScript) {\n\t\t\tconst customScript = this._renderer.createElement('script') as HTMLScriptElement;\n\t\t\tcustomScript.textContent = this.customIframeScript;\n\t\t\tiframeJsScript +=\n\t\t\t\tcustomScript.outerHTML +\n\t\t\t\t`<script await src=\"https://cdnjs.cloudflare.com/ajax/libs/rangy/1.3.0/rangy-core.min.js\"></script>\n        <script await src=\"https://cdnjs.cloudflare.com/ajax/libs/rangy/1.3.0/rangy-classapplier.min.js\"></script>\n        <script src=\"https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js\"></script> `;\n\t\t}\n\n\t\treturn html + iframeStyle + iframeJsScript;\n\t}\n\n\taddCustomMatchBtnClick(event) {\n\t\tif (!this.allowCustomViewAddBtn) return;\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\t// get the current selection top offset\n\t\tconst contentContainer = document.querySelector('.content-container')?.querySelector('.content-container');\n\t\tif (!contentContainer) return;\n\t\tconst rect = window.getSelection().getRangeAt(0).getBoundingClientRect();\n\n\t\tconst scrollY = contentContainer.scrollTop;\n\t\tconst top = rect.top + scrollY;\n\t\tconst selectTextEvent = {\n\t\t\ttype: 'annotation-select',\n\t\t\tid: this.customMatchTobeAddedData.id,\n\t\t\tstart: this.customMatchTobeAddedData.start,\n\t\t\tend: this.customMatchTobeAddedData.end,\n\t\t\ttext: this.customMatchTobeAddedData.selectedText,\n\t\t\toffsetTop: top + 'px',\n\t\t\tscrollViewOffsetTop: rect.top + 'px',\n\t\t};\n\t\tthis.onTextMatchSelectionEvent.emit(selectTextEvent);\n\t}\n\n\t// Generate a unique ID for each customMatch\n\tgenerateCustomMatchId() {\n\t\treturn 'annotation-' + Math.random().toString(36).substr(2, 9);\n\t}\n\n\t// Function to get the text content and compute start and end indices\n\tgetCustomMatchData(range) {\n\t\tvar preSelectionRange = range.cloneRange();\n\t\tpreSelectionRange.selectNodeContents(this.contentText?.nativeElement);\n\t\tpreSelectionRange.setEnd(range.startContainer, range.startOffset);\n\t\tvar start = preSelectionRange.toString().length;\n\n\t\tvar selectedText = range.toString();\n\t\tif (!selectedText) return;\n\t\tvar end = start + selectedText.length;\n\n\t\treturn {\n\t\t\tid: this.generateCustomMatchId(),\n\t\t\tstart: start,\n\t\t\tend: end,\n\t\t\ttext: selectedText,\n\t\t\tpageNumber: this.currentPage,\n\t\t\tsubmitterEmail: this.currentUserEmail,\n\t\t};\n\t}\n\n\t// Function to create and display customMatch\n\tcreateCustomMatch() {\n\t\tif (this.customMatchTobeAddedData) {\n\t\t\tthis.customViewMatchesData[this.currentPage - 1].push(this.customMatchTobeAddedData);\n\t\t\t// Display customMatch\n\n\t\t\t// Highlight the selected text\n\t\t\tthis.highlightCustomMatchText(this.customMatchTobeAddedData);\n\t\t\twindow.getSelection()?.removeAllRanges();\n\t\t}\n\t}\n\n\t// Function to highlight or remove highlight of the selected text\n\thighlightCustomMatchText(customMatch, remove = false) {\n\t\tif (!this.allowCustomViewAddBtn) return;\n\t\tvar range = rangy.createRange();\n\t\tvar container = this.contentText?.nativeElement;\n\t\tvar startContainer, endContainer;\n\t\tvar startOffset = customMatch.start;\n\t\tvar endOffset = customMatch.end;\n\t\tvar offset = 0;\n\n\t\tfunction findNodeAndOffset(node, targetOffset) {\n\t\t\tif (node.nodeType === Node.TEXT_NODE) {\n\t\t\t\tif (offset + node.length >= targetOffset) {\n\t\t\t\t\treturn { node: node, offset: targetOffset - offset };\n\t\t\t\t}\n\t\t\t\toffset += node.length;\n\t\t\t} else if (node.nodeType === Node.ELEMENT_NODE) {\n\t\t\t\tfor (var i = 0; i < node.childNodes.length; i++) {\n\t\t\t\t\tvar result = findNodeAndOffset(node.childNodes[i], targetOffset);\n\t\t\t\t\tif (result) {\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\n\t\tvar startNodeInfo = findNodeAndOffset(container, startOffset);\n\t\tstartContainer = startNodeInfo.node;\n\t\tstartOffset = startNodeInfo.offset;\n\n\t\toffset = 0; // Reset offset for end node search\n\t\tvar endNodeInfo = findNodeAndOffset(container, endOffset);\n\t\tendContainer = endNodeInfo.node;\n\t\tendOffset = endNodeInfo.offset;\n\n\t\t// Set the range\n\t\tif (startContainer && endContainer) {\n\t\t\trange.setStart(startContainer, startOffset);\n\t\t\trange.setEnd(endContainer, endOffset);\n\n\t\t\t// Apply or remove highlight\n\n\t\t\tvar highlight = rangyclassapplier.createClassApplier(this.customViewMatcheClassName, {\n\t\t\t\telementTagName: 'span',\n\t\t\t\telementProperties: {\n\t\t\t\t\tclassName: this.customViewMatcheClassName,\n\t\t\t\t},\n\t\t\t\tnormalize: true, // This ensures that overlapping highlights are merged\n\t\t\t});\n\t\t\tif (remove) {\n\t\t\t\thighlight.undoToRange(range);\n\t\t\t} else {\n\t\t\t\thighlight.applyToRange(range);\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.attachHighlightClickEvent(customMatch.id);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Ensure the data-id attribute is set after applying the highlight\n\t\t\tdocument.querySelectorAll('.' + this.customViewMatcheClassName).forEach(element => {\n\t\t\t\tif (!element.getAttribute('data-id')) {\n\t\t\t\t\telement.setAttribute('data-id', customMatch.id);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t// Function to attach click event to highlight\n\tattachHighlightClickEvent(customMatchId) {\n\t\tif (this.customMatchesWithEventListenersIds.includes(customMatchId)) return;\n\t\tconst elements = document.querySelectorAll(\n\t\t\t'.' + this.customViewMatcheClassName + '[data-id=\"' + customMatchId + '\"]'\n\t\t);\n\t\telements.forEach(element => {\n\t\t\telement.addEventListener('click', event => {\n\t\t\t\tevent.stopPropagation(); // Prevent event bubbling\n\t\t\t\tconst flattenedArray = this.customViewMatchesData.reduce((acc, curr) => acc.concat(curr), []);\n\t\t\t\tconst selectedCustomMatch = flattenedArray.find(customMatch => customMatch.id === customMatchId);\n\t\t\t\tif (!selectedCustomMatch) return;\n\n\t\t\t\t// check if element has attribute 'on'\n\t\t\t\tconst isOn = element.classList.contains('selected');\n\t\t\t\tif (isOn) {\n\t\t\t\t\tconst customMatchEvent = {\n\t\t\t\t\t\ttype: 'annotation-click',\n\t\t\t\t\t\tid: null,\n\t\t\t\t\t\tstart: null,\n\t\t\t\t\t\tend: null,\n\t\t\t\t\t\ttext: null,\n\t\t\t\t\t\toffsetTop: null,\n\t\t\t\t\t};\n\t\t\t\t\telement.classList.remove('selected');\n\t\t\t\t\tthis.onTextMatchSelectionEvent.emit(customMatchEvent);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// add attribute 'on' to the element\n\t\t\t\telement.classList.add('selected');\n\n\t\t\t\tconst contentContainer = document.querySelector('.content-container')?.querySelector('.content-container');\n\t\t\t\tif (!contentContainer) return;\n\n\t\t\t\tconst rect = element.getBoundingClientRect();\n\t\t\t\tlet scrollY = contentContainer.scrollTop;\n\n\t\t\t\tconst top = rect.top + scrollY;\n\n\t\t\t\tconst customMatchEvent = {\n\t\t\t\t\ttype: 'annotation-click',\n\t\t\t\t\tid: selectedCustomMatch.id,\n\t\t\t\t\tstart: selectedCustomMatch.start,\n\t\t\t\t\tend: selectedCustomMatch.end,\n\t\t\t\t\ttext: selectedCustomMatch.text,\n\t\t\t\t\toffsetTop: top + 'px',\n\t\t\t\t\tscrollViewOffsetTop: rect.top + 'px',\n\t\t\t\t};\n\t\t\t\tthis.onTextMatchSelectionEvent.emit(customMatchEvent);\n\t\t\t\tselectedCustomMatch.isRead = true;\n\t\t\t});\n\t\t\tthis.customMatchesWithEventListenersIds.push(customMatchId);\n\t\t});\n\t}\n\n\tshowAddCustomMatchIcon(event: MouseEvent): void {\n\t\tif (!this.allowCustomViewAddBtn) return;\n\t\tconst selection = window.getSelection();\n\n\t\tconst container = this.contentText.nativeElement;\n\t\tconst containerRange = container.ownerDocument.createRange();\n\t\tcontainerRange.selectNodeContents(container);\n\n\t\tif (selection && selection.rangeCount > 0) {\n\t\t\tconst range = selection.getRangeAt(0);\n\n\t\t\t// Restrict the selection to the container\n\t\t\tif (\n\t\t\t\trange.compareBoundaryPoints(Range.START_TO_START, containerRange) < 0 ||\n\t\t\t\trange.compareBoundaryPoints(Range.END_TO_END, containerRange) > 0\n\t\t\t) {\n\t\t\t\tconst newRange = container.ownerDocument.createRange();\n\n\t\t\t\t// Adjust the start of the range if it is outside the container\n\t\t\t\tif (range.compareBoundaryPoints(Range.START_TO_START, containerRange) < 0) {\n\t\t\t\t\tnewRange.setStart(containerRange.startContainer, containerRange.startOffset);\n\t\t\t\t} else {\n\t\t\t\t\tnewRange.setStart(range.startContainer, range.startOffset);\n\t\t\t\t}\n\n\t\t\t\t// Adjust the end of the range if it is outside the container\n\t\t\t\tif (range.compareBoundaryPoints(Range.END_TO_END, containerRange) > 0) {\n\t\t\t\t\tnewRange.setEnd(containerRange.endContainer, containerRange.endOffset);\n\t\t\t\t} else {\n\t\t\t\t\tnewRange.setEnd(range.endContainer, range.endOffset);\n\t\t\t\t}\n\n\t\t\t\t// check if the new range is empty\n\t\t\t\tif (newRange.toString().trim() === '') {\n\t\t\t\t\tthis.hideAddCustomMatchIcon(false);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tselection.removeAllRanges();\n\t\t\t\tselection.addRange(newRange);\n\t\t\t}\n\n\t\t\t// Remove the specified element (e.g., highlight-icon which is the icon that ) from the selection\n\t\t\tconst highlightIcon = document.getElementById('highlight-icon');\n\t\t\tif (highlightIcon) {\n\t\t\t\tconst highlightRange = document.createRange();\n\t\t\t\thighlightRange.selectNodeContents(highlightIcon);\n\n\t\t\t\tif (range.intersectsNode(highlightIcon)) {\n\t\t\t\t\t// If the selection includes the highlight-icon, split the range\n\t\t\t\t\tif (range.compareBoundaryPoints(Range.START_TO_START, highlightRange) < 0) {\n\t\t\t\t\t\trange.setEndBefore(highlightIcon);\n\t\t\t\t\t} else if (range.compareBoundaryPoints(Range.END_TO_END, highlightRange) > 0) {\n\t\t\t\t\t\trange.setStartAfter(highlightIcon);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Apply the adjusted range back to the selection\n\t\t\t\t\tselection.removeAllRanges();\n\t\t\t\t\tselection.addRange(range);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (selection && selection.rangeCount > 0) {\n\t\t\tconst range = selection.getRangeAt(0);\n\t\t\tif (!range.collapsed) {\n\t\t\t\tif (!document.getSelection().toString()) {\n\t\t\t\t\tthis.hideAddCustomMatchIcon(false);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// const rect = range.getBoundingClientRect();\n\t\t\t\tthis.iconPosition.top = event.y - this.contentText.nativeElement.getBoundingClientRect().top;\n\t\t\t\tthis.iconPosition.left = event.x - this.contentText.nativeElement.getBoundingClientRect().left;\n\t\t\t\tthis.iconVisible = true;\n\n\t\t\t\tconst contentTextRect = this.contentText?.nativeElement.getBoundingClientRect();\n\n\t\t\t\t// Adjust left position if overflowing on the right\n\t\t\t\tif (this.iconPosition.left + 40 > contentTextRect.width) {\n\t\t\t\t\tthis.iconPosition.left = contentTextRect.width - 40;\n\t\t\t\t}\n\n\t\t\t\tif (this.iconPosition.left < 0) {\n\t\t\t\t\tthis.iconPosition.left = 0;\n\t\t\t\t}\n\n\t\t\t\tif (this.iconPosition.top < 0) {\n\t\t\t\t\tthis.iconPosition.top = 0;\n\t\t\t\t}\n\n\t\t\t\tthis._saveRangySelectionData();\n\t\t\t} else {\n\t\t\t\tthis.hideAddCustomMatchIcon();\n\t\t\t}\n\t\t} else {\n\t\t\tthis.hideAddCustomMatchIcon();\n\t\t}\n\t}\n\n\thideAddCustomMatchIcon(emitEvent = true): void {\n\t\tif (!this.allowCustomViewAddBtn) return;\n\t\tthis.iconVisible = false;\n\t\tconst selectTextEvent = {\n\t\t\ttype: 'annotation-select',\n\t\t\tid: null,\n\t\t\tstart: null,\n\t\t\tend: null,\n\t\t\ttext: null,\n\t\t\toffsetTop: null,\n\t\t\tscrollViewOffsetTop: null,\n\t\t};\n\t\tif (emitEvent) this.onTextMatchSelectionEvent.emit(selectTextEvent);\n\t}\n\n\tprivate _saveRangySelectionData() {\n\t\tvar rangySelection = rangy.getSelection();\n\t\tif (rangySelection.rangeCount > 0) {\n\t\t\tvar range = rangySelection.getRangeAt(0);\n\t\t\tthis.customMatchTobeAddedData = this.getCustomMatchData(range);\n\t\t}\n\t}\n\n\t/**\n\t * Observe the document direction changes.\n\t */\n\tprivate _observeDocumentDirection(): void {\n\t\tthis.docDirObserver = new MutationObserver(() => {\n\t\t\tthis.docDirection = this._getDocumentDirection();\n\t\t});\n\n\t\tthis.docDirObserver.observe(document.documentElement, {\n\t\t\tattributeFilter: ['dir'],\n\t\t});\n\t}\n\n\t/**\n\t * Get the document direction (ltr/rtl).\n\t * @returns The document direction (ltr/rtl).\n\t */\n\tprivate _getDocumentDirection(): 'ltr' | 'rtl' {\n\t\treturn document?.documentElement?.getAttribute('dir') === 'rtl' ? 'rtl' : 'ltr';\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.docDirObserver?.disconnect();\n\t\tthis.contentTextChangesObserver?.disconnect();\n\t}\n}\n","<div\n\t@fadeIn\n\t*ngIf=\"!hideTitleContainer && !customTabContent && !showLoadingView\"\n\tclass=\"title-and-actions-container\"\n\t[dir]=\"docDirection\">\n\t<div class=\"title-container\">\n\t\t<span class=\"title\" web-report-title-font>\n\t\t\t<ng-container *ngIf=\"reportOrigin != 'suspect'\">\n\t\t\t\t<ng-container *ngIf=\"!submittedDocumentName; else submittedDocumentNameRef\" i18n>Submitted text</ng-container>\n\t\t\t\t<ng-template #submittedDocumentNameRef>\n\t\t\t\t\t<div\n\t\t\t\t\t\t*ngIf=\"\n\t\t\t\t\t\t\treportResponsive != EResponsiveLayoutType.Mobile ||\n\t\t\t\t\t\t\tviewSvc.reportViewMode.platformType != EPlatformType.APP\n\t\t\t\t\t\t\"\n\t\t\t\t\t\tclass=\"submitted-doc-name-container\"\n\t\t\t\t\t\t[matTooltip]=\"submittedDocumentName | fileName\"\n\t\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\">\n\t\t\t\t\t\t<mat-icon>description</mat-icon>\n\t\t\t\t\t\t<span>{{ submittedDocumentName | fileName }}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</ng-template>\n\t\t\t</ng-container>\n\t\t\t<ng-container *ngIf=\"reportOrigin === 'suspect'\">\n\t\t\t\t<div class=\"has-masked-content-title\">\n\t\t\t\t\t<button\n\t\t\t\t\t\tmat-icon-button\n\t\t\t\t\t\tclass=\"mat-icon-button-override open-disclaimer-btn\"\n\t\t\t\t\t\t*ngIf=\"hasMaskedContent\"\n\t\t\t\t\t\tmatTooltip=\"Open disclaimer\"\n\t\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t\t\t(click)=\"openDisclaimer()\"\n\t\t\t\t\t\ti18n-matTooltip\n\t\t\t\t\t\taria-label=\"Opens a disclaimer\"\n\t\t\t\t\t\ti18n-aria-label>\n\t\t\t\t\t\t<mat-icon>info_outline</mat-icon>\n\t\t\t\t\t</button>\n\t\t\t\t\t<span web-report-title-font i18n>Found text</span>\n\t\t\t\t</div>\n\t\t\t</ng-container>\n\t\t</span>\n\n\t\t<span *ngIf=\"numberOfWords\" class=\"number-of-words\" i18n>\n\t\t\t({{ numberOfWords | number }}\n\t\t\t{numberOfWords, plural, =1 {word} other {words}})\n\t\t</span>\n\n\t\t<svg\n\t\t\t*ngIf=\"reportOrigin != 'suspect' && scanSource?.metadata?.excluded > 0\"\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\twidth=\"2\"\n\t\t\theight=\"18\"\n\t\t\tviewBox=\"0 0 2 18\"\n\t\t\tfill=\"none\">\n\t\t\t<path d=\"M1 1.19699L0.999999 17.197\" stroke=\"#EBF3F5\" stroke-linecap=\"round\" />\n\t\t</svg>\n\n\t\t<button\n\t\t\t*ngIf=\"\n\t\t\t\treportOrigin != 'suspect' &&\n\t\t\t\tscanSource?.metadata?.excluded > 0 &&\n\t\t\t\t!isPartitalScan &&\n\t\t\t\tviewMode != 'writing-feedback' &&\n\t\t\t\t!hideOmittedWordsButton\n\t\t\t\"\n\t\t\tclass=\"omitted-text-btn\"\n\t\t\t[class.isOn]=\"showOmittedWords\"\n\t\t\t[matTooltip]=\"showOmittedWords ? HIDE_OMITTED_WORDS_TOOLTIP_MESSAGE : VIEW_OMITTED_WORDS_TOOLTIP_MESSAGE\"\n\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\ti18n-matTooltip\n\t\t\t(click)=\"toggleOmittedWordsView()\"\n\t\t\t[attr.aria-label]=\"showOmittedWords ? HIDE_OMITTED_WORDS_TOOLTIP_MESSAGE : VIEW_OMITTED_WORDS_TOOLTIP_MESSAGE\">\n\t\t\t<mat-icon fontSet=\"material-icons-outlined\">fact_check</mat-icon>\n\t\t\t<span>\n\t\t\t\t({{ scanSource?.metadata?.excluded ?? 0 }}\n\t\t\t\t<ng-container i18n>Omitted</ng-container>\n\t\t\t\t<ng-container>)</ng-container>\n\t\t\t</span>\n\t\t</button>\n\t</div>\n\t<div class=\"actions-container\">\n\t\t<ng-container *ngIf=\"!customTabContent\">\n\t\t\t<div *ngIf=\"!hideMatchNavigationButtons\" class=\"actions-pair-container\">\n\t\t\t\t<span\n\t\t\t\t\t*ngIf=\"reportOrigin != 'suspect' && !(isHtmlView && !hasHtml)\"\n\t\t\t\t\tclass=\"icon-tooltip-wrapper\"\n\t\t\t\t\t[matTooltip]=\"isMultiSelection ? MULTISELECT_IS_ON : MULTISELECT_IS_OF_PREV\"\n\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\">\n\t\t\t\t\t<button\n\t\t\t\t\t\tclass=\"actions-container-icon-button\"\n\t\t\t\t\t\t[disabled]=\"isMultiSelection\"\n\t\t\t\t\t\tmat-icon-button\n\t\t\t\t\t\t(click)=\"onJumpToNextMatchClick(false)\"\n\t\t\t\t\t\taria-label=\"Go to previous match\"\n\t\t\t\t\t\ti18n-aria-label>\n\t\t\t\t\t\t<mat-icon\n\t\t\t\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t\t\t\t'disabled-icon': isMultiSelection\n\t\t\t\t\t\t\t}\"\n\t\t\t\t\t\t\tfontSet=\"material-icons-round\">\n\t\t\t\t\t\t\tarrow_upward\n\t\t\t\t\t\t</mat-icon>\n\t\t\t\t\t</button>\n\t\t\t\t</span>\n\n\t\t\t\t<span\n\t\t\t\t\t*ngIf=\"reportOrigin != 'suspect' && !(isHtmlView && !hasHtml)\"\n\t\t\t\t\tclass=\"icon-tooltip-wrapper\"\n\t\t\t\t\t[matTooltip]=\"isMultiSelection ? MULTISELECT_IS_ON : MULTISELECT_IS_OF_NEXT\"\n\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\">\n\t\t\t\t\t<button\n\t\t\t\t\t\tclass=\"actions-container-icon-button\"\n\t\t\t\t\t\t[disabled]=\"isMultiSelection\"\n\t\t\t\t\t\tmat-icon-button\n\t\t\t\t\t\t(click)=\"onJumpToNextMatchClick()\"\n\t\t\t\t\t\taria-label=\"Go to next match\"\n\t\t\t\t\t\ti18n-aria-label>\n\t\t\t\t\t\t<mat-icon\n\t\t\t\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t\t\t\t'disabled-icon': isMultiSelection\n\t\t\t\t\t\t\t}\"\n\t\t\t\t\t\t\tfontSet=\"material-icons-round\">\n\t\t\t\t\t\t\tarrow_downward\n\t\t\t\t\t\t</mat-icon>\n\t\t\t\t\t</button>\n\t\t\t\t</span>\n\t\t\t</div>\n\n\t\t\t<svg\n\t\t\t\t*ngIf=\"reportOrigin != 'suspect' && !(isHtmlView && !hasHtml) && !hideMatchNavigationButtons\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth=\"2\"\n\t\t\t\theight=\"18\"\n\t\t\t\tviewBox=\"0 0 2 18\"\n\t\t\t\tfill=\"none\">\n\t\t\t\t<path d=\"M1 0.696991L0.999999 16.697\" stroke=\"#EBF3F5\" stroke-linecap=\"round\" />\n\t\t\t</svg>\n\n\t\t\t<div *ngIf=\"!isHtmlView || !hasHtml || isAlertsView\" class=\"actions-pair-container\">\n\t\t\t\t<span class=\"icon-tooltip-wrapper\" *ngIf=\"!isHtmlView || !hasHtml || isAlertsView\">\n\t\t\t\t\t<button\n\t\t\t\t\t\tclass=\"actions-container-icon-button\"\n\t\t\t\t\t\tmat-icon-button\n\t\t\t\t\t\t(click)=\"changeContentDirection('ltr')\"\n\t\t\t\t\t\tmatTooltip=\"Align left\"\n\t\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t\t\ti18n-matTooltip\n\t\t\t\t\t\taria-label=\"Align content to left\"\n\t\t\t\t\t\ti18n-aria-label>\n\t\t\t\t\t\t<mat-icon fontSet=\"material-icons-round\">format_align_left</mat-icon>\n\t\t\t\t\t</button>\n\t\t\t\t</span>\n\n\t\t\t\t<span class=\"icon-tooltip-wrapper\" *ngIf=\"!isHtmlView || !hasHtml || isAlertsView\">\n\t\t\t\t\t<button\n\t\t\t\t\t\tclass=\"actions-container-icon-button\"\n\t\t\t\t\t\tmat-icon-button\n\t\t\t\t\t\t(click)=\"changeContentDirection('rtl')\"\n\t\t\t\t\t\tmatTooltip=\"Align right\"\n\t\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t\t\ti18n-matTooltip\n\t\t\t\t\t\taria-label=\"Align content to right\"\n\t\t\t\t\t\ti18n-aria-label>\n\t\t\t\t\t\t<mat-icon fontSet=\"material-icons-round\">format_align_right</mat-icon>\n\t\t\t\t\t</button>\n\t\t\t\t</span>\n\t\t\t</div>\n\n\t\t\t<svg\n\t\t\t\t*ngIf=\"!isHtmlView || !hasHtml || isAlertsView\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth=\"2\"\n\t\t\t\theight=\"18\"\n\t\t\t\tviewBox=\"0 0 2 18\"\n\t\t\t\tfill=\"none\">\n\t\t\t\t<path d=\"M1 0.696991L0.999999 16.697\" stroke=\"#EBF3F5\" stroke-linecap=\"round\" />\n\t\t\t</svg>\n\n\t\t\t<div class=\"actions-pair-container\">\n\t\t\t\t<span class=\"icon-tooltip-wrapper\">\n\t\t\t\t\t<button\n\t\t\t\t\t\tclass=\"actions-container-icon-button\"\n\t\t\t\t\t\tmat-icon-button\n\t\t\t\t\t\t(click)=\"zoomIn()\"\n\t\t\t\t\t\t[matTooltip]=\"ZOOM_IN_TOOLTIP_MESSAGE\"\n\t\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t\t\ti18n-matTooltip\n\t\t\t\t\t\taria-label=\"Zoom in\"\n\t\t\t\t\t\ti18n-aria-label>\n\t\t\t\t\t\t<mat-icon fontSet=\"material-icons-round\">add</mat-icon>\n\t\t\t\t\t</button>\n\t\t\t\t</span>\n\n\t\t\t\t<span class=\"icon-tooltip-wrapper\">\n\t\t\t\t\t<button\n\t\t\t\t\t\tclass=\"actions-container-icon-button\"\n\t\t\t\t\t\tmat-icon-button\n\t\t\t\t\t\t(click)=\"zoomOut()\"\n\t\t\t\t\t\t[matTooltip]=\"ZOOM_OUT_TOOLTIP_MESSAGE\"\n\t\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t\t\ti18n-matTooltip\n\t\t\t\t\t\taria-label=\"Zoom out\"\n\t\t\t\t\t\ti18n-aria-label>\n\t\t\t\t\t\t<mat-icon fontSet=\"material-icons-round\">remove</mat-icon>\n\t\t\t\t\t</button>\n\t\t\t\t</span>\n\t\t\t</div>\n\n\t\t\t<svg\n\t\t\t\t*ngIf=\"hasHtml && !isAlertsView\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth=\"2\"\n\t\t\t\theight=\"18\"\n\t\t\t\tviewBox=\"0 0 2 18\"\n\t\t\t\tfill=\"none\">\n\t\t\t\t<path d=\"M1 0.696991L0.999999 16.697\" stroke=\"#EBF3F5\" stroke-linecap=\"round\" />\n\t\t\t</svg>\n\n\t\t\t<span\n\t\t\t\t*ngIf=\"hasHtml && !isAlertsView && !hideTextModeSwitch\"\n\t\t\t\tclass=\"icon-tooltip-wrapper\"\n\t\t\t\t[matTooltip]=\"!hasHtml ? ONLY_TEXT_VIEW_IS_AVAILABLE : ''\"\n\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\ti18n-matTooltip>\n\t\t\t\t<button\n\t\t\t\t\tclass=\"actions-container-icon-button\"\n\t\t\t\t\tmat-icon-button\n\t\t\t\t\t*ngIf=\"isHtmlView && hasHtml && !hideTextModeSwitch\"\n\t\t\t\t\t(click)=\"onViewChange()\"\n\t\t\t\t\tmatTooltip=\"Switch to textual mode\"\n\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t\ti18n-matTooltip\n\t\t\t\t\taria-label=\"Switch to textual mode\"\n\t\t\t\t\ti18n-aria-label>\n\t\t\t\t\t<mat-icon\n\t\t\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t\t\t'disabled-icon': !hasHtml || isAlertsView\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\tfontSet=\"material-icons-round\">\n\t\t\t\t\t\ttitle\n\t\t\t\t\t</mat-icon>\n\t\t\t\t</button>\n\t\t\t\t<button\n\t\t\t\t\tclass=\"actions-container-icon-button\"\n\t\t\t\t\tmat-icon-button\n\t\t\t\t\t*ngIf=\"!isHtmlView || (isHtmlView && !hasHtml)\"\n\t\t\t\t\t(click)=\"onViewChange()\"\n\t\t\t\t\tmatTooltip=\"Switch to rich text mode\"\n\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t\ti18n-matTooltip\n\t\t\t\t\taria-label=\"Switch to rich text mode\"\n\t\t\t\t\ti18n-aria-label>\n\t\t\t\t\t<mat-icon\n\t\t\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t\t\t'disabled-icon': !hasHtml || isAlertsView\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\tfontSet=\"material-icons-outlined\">\n\t\t\t\t\t\timage\n\t\t\t\t\t</mat-icon>\n\t\t\t\t</button>\n\t\t\t</span>\n\t\t</ng-container>\n\t</div>\n</div>\n\n<cr-author-alert-card\n\t@fadeIn\n\t*ngIf=\"!hideTitleContainer && !customTabContent && !showLoadingView && authorAlert\"\n\t[authorAlert]=\"authorAlert\"\n\t[onlyAiView]=\"!(reportResponsive === EResponsiveLayoutType.Mobile)\"></cr-author-alert-card>\n\n<div\n\t@fadeIn\n\tclass=\"content-container\"\n\t[dir]=\"docDirection\"\n\ttabindex=\"0\"\n\t[ngStyle]=\"{\n\t\tvisibility: showLoadingView ? 'hidden' : '',\n\t\theight: showLoadingView ? '0' : '',\n\t\tflexGrow: showLoadingView ? '0' : ''\n\t}\">\n\t<ng-container [ngSwitch]=\"reportOrigin\">\n\t\t<ng-container *ngSwitchCase=\"'original'\">\n\t\t\t<iframe\n\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t'hide-iframe': !isHtmlView || !hasHtml || isAlertsView || customTabContent || showLoadingView\n\t\t\t\t}\"\n\t\t\t\t#contentIFrame\n\t\t\t\tsandbox=\"allow-scripts\"\n\t\t\t\tcrOriginalHtmlHelper\n\t\t\t\ttitle=\"Submitted text\"></iframe>\n\n\t\t\t<div\n\t\t\t\t*ngIf=\"!customTabContent\"\n\t\t\t\tclass=\"text-container\"\n\t\t\t\t#contentText\n\t\t\t\t[ngStyle]=\"{\n\t\t\t\t\tdisplay: !(!isHtmlView || !hasHtml || isAlertsView) || customTabContent || showLoadingView ? 'none' : '',\n\t\t\t\t\t'font-size': contentZoom + 'em'\n\t\t\t\t}\"\n\t\t\t\t[class.with-shift-selected]=\"isShiftClicked\"\n\t\t\t\t[dir]=\"contentDirection\"\n\t\t\t\tcrOriginalTextHelper\n\t\t\t\t[host]=\"this\"\n\t\t\t\ttext-container>\n\t\t\t\t<ng-container *ngIf=\"contentTextMatches; else clean\">\n\t\t\t\t\t<ng-container *ngFor=\"let partial of contentTextMatches[currentPage - 1]\">\n\t\t\t\t\t\t<span tabindex=\"0\" *ngIf=\"partial.match.type === MatchType.none\">{{ partial.content }}</span>\n\t\t\t\t\t\t<!--  -->\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t\t\t*ngIf=\"partial.match.type !== MatchType.none && partial.match.type !== MatchType.excluded\"\n\t\t\t\t\t\t\t[cr-match]=\"partial.match\"\n\t\t\t\t\t\t\torigin=\"original\"\n\t\t\t\t\t\t\t[crReportMatchTooltip]=\"\n\t\t\t\t\t\t\t\tpartial.match.type === MatchType.writingFeedback && reportResponsive !== EResponsiveLayoutType.Mobile\n\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\twrongText: partial?.match?.wrongText,\n\t\t\t\t\t\t\t\t\t\t\tcorrectionText: partial?.match?.correctionText\n\t\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t\t: null\n\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t\t[crReportMatchTooltipType]=\"partial.match.type\">\n\t\t\t\t\t\t\t{{ partial.content }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<!--  -->\n\t\t\t\t\t\t<i\n\t\t\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t\t\t*ngIf=\"partial.match.type === MatchType.excluded && partial.match.reason != 8\"\n\t\t\t\t\t\t\texclude-match\n\t\t\t\t\t\t\t[matTooltip]=\"\n\t\t\t\t\t\t\t\tpartial.match.reason != undefined && partial.match.reason != null\n\t\t\t\t\t\t\t\t\t? EXCLUDE_MESSAGE[partial.match.reason]\n\t\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\">\n\t\t\t\t\t\t\t{{ partial.content }}\n\t\t\t\t\t\t</i>\n\t\t\t\t\t\t<!--  -->\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t\t\t*ngIf=\"partial.match.type === MatchType.excluded && partial.match.reason == 8\"\n\t\t\t\t\t\t\texclude-partial-scan\n\t\t\t\t\t\t\t[matTooltip]=\"\n\t\t\t\t\t\t\t\tpartial.match.reason != undefined && partial.match.reason != null\n\t\t\t\t\t\t\t\t\t? EXCLUDE_MESSAGE[partial.match.reason]\n\t\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\">\n\t\t\t\t\t\t\t{{ partial.content }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</ng-container>\n\t\t\t\t</ng-container>\n\t\t\t\t<ng-template #clean>\n\t\t\t\t\t{{ scanSource && (scanSource.text.value | slice : pages[currentPage - 1] : pages[currentPage]) }}\n\t\t\t\t</ng-template>\n\t\t\t\t<div\n\t\t\t\t\t*ngIf=\"isExportedComponent\"\n\t\t\t\t\tid=\"highlight-icon\"\n\t\t\t\t\t[ngStyle]=\"{\n\t\t\t\t\t\t'top.px': iconPosition.top,\n\t\t\t\t\t\t'left.px': iconPosition.left,\n\t\t\t\t\t\tdisplay: iconVisible ? 'flex' : 'none'\n\t\t\t\t\t}\"\n\t\t\t\t\t(mouseup)=\"addCustomMatchBtnClick($event)\"\n\t\t\t\t\tmatTooltip=\"Add annotation\"\n\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t\ti18n-matTooltip>\n\t\t\t\t\t<mat-icon fontSet=\"material-icons-round\">add</mat-icon>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</ng-container>\n\n\t\t<ng-container *ngSwitchCase=\"'source'\">\n\t\t\t<iframe\n\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t'hide-iframe': !isHtmlView || !hasHtml || isAlertsView || customTabContent || showLoadingView\n\t\t\t\t}\"\n\t\t\t\t#contentIFrame\n\t\t\t\tsandbox=\"allow-scripts\"\n\t\t\t\tcrSourceHtmlHelper\n\t\t\t\ttitle=\"Submitted text\"></iframe>\n\t\t\t<div\n\t\t\t\tclass=\"text-container\"\n\t\t\t\t[class.with-shift-selected]=\"isShiftClicked\"\n\t\t\t\t#contentText\n\t\t\t\t[ngStyle]=\"{\n\t\t\t\t\tdisplay: !(!isHtmlView || !hasHtml || isAlertsView) || customTabContent || showLoadingView ? 'none' : '',\n\t\t\t\t\t'font-size': contentZoom + 'em'\n\t\t\t\t}\"\n\t\t\t\t[dir]=\"contentDirection\"\n\t\t\t\tcrSourceTextHelper\n\t\t\t\t[host]=\"this\"\n\t\t\t\ttext-container>\n\t\t\t\t<ng-container *ngIf=\"contentTextMatches; else clean\">\n\t\t\t\t\t<ng-container *ngFor=\"let partial of contentTextMatches[currentPage - 1]\">\n\t\t\t\t\t\t<span tabindex=\"0\" *ngIf=\"partial.match.type === MatchType.none\">{{ partial.content }}</span>\n\t\t\t\t\t\t<!--  -->\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t\t\t*ngIf=\"partial.match.type !== MatchType.none && partial.match.type !== MatchType.excluded\"\n\t\t\t\t\t\t\t[cr-match]=\"partial.match\"\n\t\t\t\t\t\t\torigin=\"source\">\n\t\t\t\t\t\t\t{{ partial.content }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<!--  -->\n\t\t\t\t\t\t<i\n\t\t\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t\t\t*ngIf=\"partial.match.type === MatchType.excluded && partial.match.reason != 8\"\n\t\t\t\t\t\t\texclude-match\n\t\t\t\t\t\t\t[matTooltip]=\"\n\t\t\t\t\t\t\t\tpartial.match.reason != undefined && partial.match.reason != null\n\t\t\t\t\t\t\t\t\t? EXCLUDE_MESSAGE[partial.match.reason]\n\t\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\">\n\t\t\t\t\t\t\t{{ partial.content }}\n\t\t\t\t\t\t</i>\n\t\t\t\t\t\t<!--  -->\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t\t\t*ngIf=\"partial.match.type === MatchType.excluded && partial.match.reason == 8\"\n\t\t\t\t\t\t\texclude-partial-scan\n\t\t\t\t\t\t\t[matTooltip]=\"EXCLUDE_MESSAGE[partial.match.reason]\"\n\t\t\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\">\n\t\t\t\t\t\t\t{{ partial.content }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</ng-container>\n\t\t\t\t</ng-container>\n\t\t\t\t<ng-template #clean>\n\t\t\t\t\t{{ scanSource && (scanSource.text.value | slice : pages[currentPage - 1] : pages[currentPage]) }}\n\t\t\t\t</ng-template>\n\t\t\t</div>\n\t\t</ng-container>\n\n\t\t<ng-container *ngSwitchCase=\"'suspect'\">\n\t\t\t<iframe\n\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t'hide-iframe': !isHtmlView || !hasHtml || isAlertsView || customTabContent || showLoadingView\n\t\t\t\t}\"\n\t\t\t\t#contentIFrame\n\t\t\t\tsandbox=\"allow-scripts\"\n\t\t\t\tcrSuspectHtmlHelper\n\t\t\t\ttitle=\"Submitted text\"></iframe>\n\t\t\t<div\n\t\t\t\tclass=\"text-container\"\n\t\t\t\t[class.with-shift-selected]=\"isShiftClicked\"\n\t\t\t\t#contentText\n\t\t\t\tcrSuspectTextHelper\n\t\t\t\t[host]=\"this\"\n\t\t\t\ttext-container\n\t\t\t\t[ngStyle]=\"{\n\t\t\t\t\tdisplay: !(!isHtmlView || !hasHtml || isAlertsView) || customTabContent || showLoadingView ? 'none' : '',\n\t\t\t\t\t'font-size': contentZoom + 'em'\n\t\t\t\t}\"\n\t\t\t\t[dir]=\"contentDirection\">\n\t\t\t\t<ng-container *ngIf=\"contentTextMatches; else clean\">\n\t\t\t\t\t<ng-container *ngFor=\"let partial of contentTextMatches[currentPage - 1]\">\n\t\t\t\t\t\t<span tabindex=\"0\" *ngIf=\"partial.match.type === MatchType.none\">{{ partial.content }}</span>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t\t\t*ngIf=\"partial.match.type !== MatchType.none\"\n\t\t\t\t\t\t\t[cr-match]=\"partial.match\"\n\t\t\t\t\t\t\torigin=\"suspect\">\n\t\t\t\t\t\t\t{{ partial.content }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</ng-container>\n\t\t\t\t</ng-container>\n\t\t\t</div>\n\t\t\t<!-- text without match highlighting -->\n\t\t\t<ng-template #clean>\n\t\t\t\t{{ scanSource && (scanSource.text.value | slice : pages[currentPage - 1] : pages[currentPage]) }}\n\t\t\t</ng-template>\n\t\t</ng-container>\n\t\t<ng-container *ngSwitchDefault></ng-container>\n\t</ng-container>\n\n\t<ng-container *ngTemplateOutlet=\"customTabContent\"></ng-container>\n</div>\n\n<div\n\t@fadeIn\n\t*ngIf=\"!showLoadingView\"\n\tclass=\"paginator-container\"\n\t[dir]=\"docDirection\"\n\t[ngStyle]=\"{ 'justify-content': customTabContent ? 'center' : '' }\">\n\t<ng-container *ngIf=\"!hidePoweredBy\">\n\t\t<cr-powered-by></cr-powered-by>\n\t</ng-container>\n\n\t<cr-paginator\n\t\t*ngIf=\"(!isHtmlView || !hasHtml || isAlertsView) && numberOfPages > 1 && !customTabContent\"\n\t\t[pageIndex]=\"currentPage\"\n\t\t[numberOfPages]=\"numberOfPages\"\n\t\t(page)=\"onPaginationEvent($event)\"></cr-paginator>\n</div>\n\n<ng-container *ngIf=\"showLoadingView\">\n\t<div class=\"title-and-actions-loader-container\">\n\t\t<div class=\"title-loader-container\">\n\t\t\t<ngx-skeleton-loader class=\"title-loader skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"stats-loader skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t</div>\n\n\t\t<div class=\"actions-loader-container\">\n\t\t\t<ngx-skeleton-loader class=\"circle skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"circle skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"circle skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"circle skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"circle skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"circle skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t</div>\n\t</div>\n\n\t<div class=\"content-loader-container\">\n\t\t<div class=\"paragraph-loader-container\">\n\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 97%\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 80%\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 85%\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 80%\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 90%\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 70%\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 85%\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 50%\"></ngx-skeleton-loader>\n\t\t</div>\n\t\t<ngx-skeleton-loader\n\t\t\tclass=\"skeleton\"\n\t\t\t[appearance]=\"'line'\"\n\t\t\tstyle=\"width: 97%; visibility: hidden\"></ngx-skeleton-loader>\n\n\t\t<div class=\"paragraph-loader-container\">\n\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 97%\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 80%\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 85%\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 80%\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 90%\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 70%\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 85%\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 50%\"></ngx-skeleton-loader>\n\t\t</div>\n\n\t\t<ngx-skeleton-loader\n\t\t\tclass=\"skeleton\"\n\t\t\t[appearance]=\"'line'\"\n\t\t\tstyle=\"width: 97%; visibility: hidden\"></ngx-skeleton-loader>\n\n\t\t<div class=\"last-paragraph-loader-container\">\n\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 97%\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 80%\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 85%\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 80%\"></ngx-skeleton-loader>\n\t\t</div>\n\t</div>\n</ng-container>\n","import { Injectable, TemplateRef } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { ECustomResultsReportView } from '../components/core/cr-custom-results/models/cr-custom-results.enums';\nimport { ICustomClsReportTabTemplatesRefs, ICustomClsReportTemplatesRefs } from '../models/report-ng-templates.models';\nimport { IResultItem } from '../components/containers/report-results-item-container/components/models/report-result-item.models';\n\n@Injectable()\nexport class ReportNgTemplatesService {\n\tprivate _reportTemplatesRefs$ = new BehaviorSubject<ICustomClsReportTemplatesRefs | undefined>(undefined);\n\t/**\n\t * Subject for sharing the report custom components references in the report library.\n\t */\n\tpublic get reportTemplatesSubject$() {\n\t\treturn this._reportTemplatesRefs$;\n\t}\n\t/**\n\t * Getter for the report custom components references in the report library.\n\t */\n\tpublic get reportTemplatesRefs() {\n\t\treturn this._reportTemplatesRefs$.value;\n\t}\n\n\tprivate _reportTemplatesMode$ = new BehaviorSubject<ECustomResultsReportView | undefined>(undefined);\n\t/**\n\t * Subject for sharing the report custom components references in the report library.\n\t */\n\tpublic get reportTemplatesMode$() {\n\t\treturn this._reportTemplatesMode$;\n\t}\n\n\t/**\n\t * Setter for the custom report actions section template reference.\n\t */\n\tpublic setReportCustomActionsTemplateRef(template: TemplateRef<any>) {\n\t\tthis._reportTemplatesRefs$.next({\n\t\t\t...this._reportTemplatesRefs$.value,\n\t\t\tcustomActionsTemplate: template,\n\t\t} as ICustomClsReportTemplatesRefs);\n\t}\n\n\t/**\n\t * Setter for the custom report results section template reference.\n\t */\n\tpublic setReportCustomEmptyResultsTemplateRef(template: TemplateRef<any>) {\n\t\tthis._reportTemplatesRefs$.next({\n\t\t\t...this._reportTemplatesRefs$.value,\n\t\t\tcustomEmptyResultsTemplate: template,\n\t\t} as ICustomClsReportTemplatesRefs);\n\t}\n\n\t/**\n\t * Setter for the custom report results section template reference.\n\t */\n\tpublic setReportCustomTabsTemplateRef(templates: ICustomClsReportTabTemplatesRefs[]) {\n\t\tthis._reportTemplatesRefs$.next({\n\t\t\t...this._reportTemplatesRefs$.value,\n\t\t\tcustomTabsTemplates: templates,\n\t\t} as ICustomClsReportTemplatesRefs);\n\t}\n\n\t/**\n\t * Setter for the custom report results section template reference.\n\t */\n\tpublic setReportCustomResultsTemplateRef(template: TemplateRef<any>) {\n\t\tthis._reportTemplatesRefs$.next({\n\t\t\t...this._reportTemplatesRefs$.value,\n\t\t\tcustomResultsTemplate: template,\n\t\t} as ICustomClsReportTemplatesRefs);\n\t}\n\n\t/**\n\t * Setter for the custom report banner section references\n\t */\n\tpublic setReportCustomBannerSectionTemplateRef(template: TemplateRef<any>) {\n\t\tthis._reportTemplatesRefs$.next({\n\t\t\t...this._reportTemplatesRefs$.value,\n\t\t\tcustomBannerSectionTemplate: template,\n\t\t} as ICustomClsReportTemplatesRefs);\n\t}\n\n\t/**\n\t * Setter for the custom report custom AI source match upgrade component references\n\t */\n\tpublic setReportCustomAISourceMatchUpgradeTemplateRef(template: TemplateRef<any>) {\n\t\tthis._reportTemplatesRefs$.next({\n\t\t\t...this._reportTemplatesRefs$.value,\n\t\t\tcustomAISourceMatchUpgradeTemplate: template,\n\t\t} as ICustomClsReportTemplatesRefs);\n\t}\n\n\t/**\n\t * Setter for the custom report results section template reference.\n\t */\n\tpublic setLockedResultItemTemplateRef(template: TemplateRef<IResultItem>) {\n\t\tthis._reportTemplatesRefs$.next({\n\t\t\t...this._reportTemplatesRefs$.value,\n\t\t\tlockedResultItemTemplateRef: template,\n\t\t} as ICustomClsReportTemplatesRefs);\n\t}\n}\n","import {\n\tAfterViewInit,\n\tComponent,\n\tElementRef,\n\tHostBinding,\n\tInput,\n\tOnDestroy,\n\tOnInit,\n\tTemplateRef,\n\tViewChild,\n} from '@angular/core';\nimport { ReportNgTemplatesService } from '../../../services/report-ng-templates.service';\nimport { untilDestroy } from '../../../utils/until-destroy';\n\n@Component({\n\tselector: 'copyleaks-report-actions-container',\n\ttemplateUrl: './report-actions-container.component.html',\n\tstyleUrls: ['./report-actions-container.component.scss'],\n\tstandalone: false,\n})\nexport class ReportActionsContainerComponent implements OnInit, AfterViewInit, OnDestroy {\n\t@HostBinding('style.display')\n\tdisplay = 'flex';\n\n\t@HostBinding('style.flex-grow')\n\tflexGrowProp: number;\n\n\t@ViewChild('actionsContainer', { static: true }) actionsContainer: ElementRef;\n\n\t/**\n\t * @Input {number} Flex grow property - flex-grow\n\t */\n\t@Input() flexGrow: number;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether to show the loading view or not.\n\t */\n\t@Input() showLoadingView = false;\n\n\t@Input() companyLogo: string = null;\n\n\tcustomActionsTemplateRef: TemplateRef<any>;\n\tcustomTemplateRefSub: any;\n\n\tconstructor(private _reportNgTemplatesSvc: ReportNgTemplatesService) {}\n\n\tngOnInit(): void {\n\t\tif (this.flexGrow !== undefined && this.flexGrow !== null) this.flexGrowProp = this.flexGrow;\n\t}\n\n\tngAfterViewInit(): void {\n\t\tthis._initCustomActionsTemplatesRefs();\n\t\tthis.updateComponentDisplay();\n\t}\n\n\t/**\n\t * Initializes the report custom actions with the reference which could be provided in the templates service.\n\t * Also starts a subscription for the custom actions reference changes\n\t */\n\tprivate _initCustomActionsTemplatesRefs() {\n\t\t// Read the report custom actions template reference if it is alredy provided.\n\t\tif (this._reportNgTemplatesSvc.reportTemplatesRefs?.customActionsTemplate)\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.customActionsTemplateRef = this._reportNgTemplatesSvc.reportTemplatesRefs\n\t\t\t\t\t?.customActionsTemplate as TemplateRef<any>;\n\t\t\t\tthis.updateComponentDisplay();\n\t\t\t});\n\n\t\t// Starts a subscription for the custom actions reference changes\n\t\tthis._reportNgTemplatesSvc.reportTemplatesSubject$.pipe(untilDestroy(this)).subscribe(refs => {\n\t\t\tif (refs?.customActionsTemplate !== undefined && this.customActionsTemplateRef == undefined)\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.customActionsTemplateRef = refs?.customActionsTemplate as TemplateRef<any>;\n\t\t\t\t\tthis.updateComponentDisplay();\n\t\t\t\t});\n\t\t});\n\t}\n\n\tget showReportActions() {\n\t\tconst containerDiv = this.actionsContainer?.nativeElement;\n\t\treturn containerDiv?.children?.length > 0;\n\t}\n\n\tupdateComponentDisplay() {\n\t\tsetTimeout(() => {\n\t\t\tif (this.showReportActions) this.display = 'flex';\n\t\t\telse this.display = 'none';\n\t\t});\n\t}\n\n\tngOnDestroy(): void {}\n}\n","<div\n\tclass=\"actions-container\"\n\t#actionsContainer\n\t[style.display]=\"showReportActions && !showLoadingView ? 'flex' : 'none'\">\n\t<ng-container *ngIf=\"companyLogo\">\n\t\t<img class=\"custom-company-logo\" [src]=\"companyLogo\" alt=\"Company Logo\" i18n-alt />\n\t</ng-container>\n\t<ng-container *ngTemplateOutlet=\"customActionsTemplateRef\"></ng-container>\n</div>\n\n<ng-container *ngIf=\"showLoadingView\">\n\t<div class=\"actions-loader-container\">\n\t\t<div class=\"buttons-loader-container\">\n\t\t\t<ngx-skeleton-loader class=\"skeleton first\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 40%\"></ngx-skeleton-loader>\n\t\t</div>\n\t\t<div class=\"icons-loader-container\">\n\t\t\t<ngx-skeleton-loader class=\"skeleton circle\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"skeleton circle\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"skeleton circle\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t</div>\n\t</div>\n</ng-container>\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { ALERTS } from '../../../../../constants/report-alerts.constants';\nimport { ECompleteResultNotificationAlertSeverity } from '../../../../../enums/copyleaks-web-report.enums';\nimport { ICompleteResultNotificationAlert } from '../../../../../models/report-data.models';\nimport { ReportMatchHighlightService } from '../../../../../services/report-match-highlight.service';\nimport { ReportViewService } from '../../../../../services/report-view.service';\nimport { untilDestroy } from '../../../../../utils/until-destroy';\n\n@Component({\n\tselector: 'cr-alert-card',\n\ttemplateUrl: './alert-card.component.html',\n\tstyleUrls: ['./alert-card.component.scss'],\n\tstandalone: false,\n})\nexport class AlertCardComponent implements OnInit, OnDestroy {\n\t@Input() alert: ICompleteResultNotificationAlert;\n\t@Input() isSelected: boolean = false;\n\n\tseverity = ECompleteResultNotificationAlertSeverity;\n\n\tmatChipList: string[] = [];\n\tshowMatChipList: boolean = true;\n\n\tget displayPreviewButton() {\n\t\treturn (\n\t\t\t(this.alert?.helpLink && this.alert?.code == ALERTS.SUSPECTED_CHARACTER_REPLACEMENT_CODE) ||\n\t\t\tthis.alert?.code == ALERTS.SUSPECTED_AI_TEXT_DETECTED\n\t\t);\n\t}\n\n\tconstructor(private _reportView: ReportViewService, private _reportMatchSvc: ReportMatchHighlightService) {}\n\n\tngOnInit(): void {\n\t\tif (this._reportView.reportViewMode.alertCode == this.alert.code) {\n\t\t\tthis.isSelected = true;\n\t\t\tthis._jumpToFirstMatch();\n\t\t}\n\t\tthis._reportView.selectedAlert$.pipe(untilDestroy(this)).subscribe(data => {\n\t\t\tthis.isSelected = data === this.alert.code;\n\t\t});\n\t}\n\n\ttoggleAlertPreview() {\n\t\tthis.isSelected = !this.isSelected;\n\n\t\tthis._reportView.selectedAlert$.next(!this.isSelected ? null : this.alert?.code);\n\t\tthis._reportView.reportViewMode$.next({\n\t\t\t...this._reportView.reportViewMode,\n\t\t\tisHtmlView: !this.isSelected ? this._reportView.reportViewMode.isHtmlView : false,\n\t\t\talertCode: !this.isSelected ? undefined : this.alert.code,\n\t\t\tsourcePageIndex: 1,\n\t\t\tsuspectPageIndex: 1,\n\t\t});\n\n\t\tif (!this.isSelected) this._reportMatchSvc.clear();\n\t\tif (this.isSelected) {\n\t\t\tthis._jumpToFirstMatch();\n\t\t}\n\t}\n\n\tprivate _jumpToFirstMatch() {\n\t\tif (this.alert.code !== ALERTS.SUSPECTED_AI_TEXT_DETECTED)\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis._reportMatchSvc.jump(true);\n\t\t\t});\n\t}\n\n\tngOnDestroy(): void {}\n}\n","<div\n\tclass=\"alert-card-container\"\n\tfxLayout=\"column\"\n\tfxLayoutAlign=\"start \"\n\tfxLayoutGap=\"8px\"\n\t[class.selected]=\"isSelected\">\n\t<div fxLayout=\"row\" fxLayoutAlign=\"space-between start\" fxLayoutGap=\"4px\" class=\"alert-card-header\">\n\t\t<div fxLayout=\"column\" fxLayoutAlign=\"center start\" fxLayoutGap=\"4px\">\n\t\t\t<span class=\"alert-card-title\" web-report-title-font>{{ alert.title }}</span>\n\t\t\t<div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"8px\">\n\t\t\t\t<ng-container [ngSwitch]=\"alert.severity\">\n\t\t\t\t\t<p class=\"alert-card-severity\" *ngSwitchCase=\"severity.VeryLow\" i18n>Very Low</p>\n\t\t\t\t\t<p class=\"alert-card-severity\" *ngSwitchCase=\"severity.Low\" i18n>Low</p>\n\t\t\t\t\t<p class=\"alert-card-severity\" *ngSwitchCase=\"severity.Medium\" i18n>Medium</p>\n\t\t\t\t\t<p class=\"alert-card-severity\" *ngSwitchCase=\"severity.High\" i18n>High</p>\n\t\t\t\t\t<p class=\"alert-card-severity\" *ngSwitchCase=\"severity.VeryHigh\" i18n>Very High</p>\n\t\t\t\t</ng-container>\n\n\t\t\t\t<ng-container *ngIf=\"showMatChipList && matChipList && matChipList.length > 0\">\n\t\t\t\t\t<mat-chip-listbox class=\"my-chip-list\" role=\"listbox\">\n\t\t\t\t\t\t<div fxLayout=\"row\" fxLayoutGap=\"8px\">\n\t\t\t\t\t\t\t<mat-chip-option class=\"mat-chip-severity\" *ngFor=\"let item of matChipList\">\n\t\t\t\t\t\t\t\t{{ item | decodeUri }}\n\t\t\t\t\t\t\t</mat-chip-option>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</mat-chip-listbox>\n\t\t\t\t</ng-container>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div fxLayout=\"column\" fxLayoutAlign=\"center start\" fxLayoutGap=\"10px\">\n\t\t\t<button\n\t\t\t\t*ngIf=\"displayPreviewButton\"\n\t\t\t\tfxLayout=\"row\"\n\t\t\t\tfxLayoutAlign=\"center center\"\n\t\t\t\tclass=\"alert-card-preview\"\n\t\t\t\t(click)=\"toggleAlertPreview()\">\n\t\t\t\t<ng-container *ngIf=\"isSelected; else notSelected\">\n\t\t\t\t\t<mat-icon fontSet=\"material-icons-outlined\">visibility_off</mat-icon>\n\t\t\t\t\t<span i18n>hide</span>\n\t\t\t\t</ng-container>\n\t\t\t\t<ng-template #notSelected>\n\t\t\t\t\t<mat-icon fontSet=\"material-icons-outlined\">visibility</mat-icon>\n\t\t\t\t\t<span i18n>show</span>\n\t\t\t\t</ng-template>\n\t\t\t</button>\n\t\t\t<a\n\t\t\t\t*ngIf=\"alert?.helpLink\"\n\t\t\t\tclass=\"disclamer\"\n\t\t\t\t[href]=\"alert.helpLink\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\taria-label=\"Open disclaimer in new tab\"\n\t\t\t\ti18n-aria-label\n\t\t\t\ti18n>\n\t\t\t\tDisclaimer\n\t\t\t</a>\n\t\t</div>\n\t</div>\n\t<span class=\"alert-card-message\">\n\t\t{{ alert.message }}\n\t</span>\n</div>\n","import { Component, ElementRef, HostBinding, Input, OnInit, ViewChild } from '@angular/core';\nimport { ICompleteResultNotificationAlert } from '../../../models/report-data.models';\nimport { ReportViewService } from '../../../services/report-view.service';\nimport { untilDestroy } from '../../../utils/until-destroy';\n\n@Component({\n\tselector: 'copyleaks-report-alerts-container',\n\ttemplateUrl: './report-alerts-container.component.html',\n\tstyleUrls: ['./report-alerts-container.component.scss'],\n\tstandalone: false,\n})\nexport class ReportAlertsContainerComponent implements OnInit {\n\t@HostBinding('style.display')\n\tdisplay = 'flex';\n\n\t@HostBinding('style.flex-grow')\n\tflexGrowProp: number;\n\n\t@ViewChild('alertsContainer') alertsContainerRef: ElementRef<HTMLDivElement>;\n\t@ViewChild('expansionPanel') expansionPanelRef: ElementRef;\n\n\t/**\n\t * @Input {number} Flex grow property - flex-grow\n\t */\n\t@Input() flexGrow: number;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether the view is a mobile or not.\n\t */\n\t@Input() isMobile: boolean;\n\n\t/**\n\t * @Input Alerts list.\n\t */\n\t@Input() alerts: ICompleteResultNotificationAlert[];\n\n\thideAlerts: boolean = false;\n\tcontainerHeight: number;\n\taddPaddingToContainer: boolean;\n\tstopPaddingCheck: boolean;\n\n\tEXPEND_TOOLTIP = $localize`Expand`;\n\tCOLLAPSE_TOOLTIP = $localize`Collapse`;\n\n\tdocDirection: 'ltr' | 'rtl';\n\n\tconstructor(private _reportViewSvc: ReportViewService) {}\n\n\tngOnInit(): void {\n\t\tif (this.flexGrow !== undefined && this.flexGrow !== null) this.flexGrowProp = this.flexGrow;\n\n\t\tthis._reportViewSvc.documentDirection$.pipe(untilDestroy(this)).subscribe(dir => {\n\t\t\tthis.docDirection = dir;\n\t\t});\n\t}\n\n\thideAlertsClick() {\n\t\tthis.hideAlerts = true;\n\t}\n\n\tshowAlertsClick() {\n\t\tthis.hideAlerts = false;\n\t}\n\n\tngAfterViewInit() {\n\t\tthis.checkForScrollbar();\n\t}\n\n\tprivate checkForScrollbar() {\n\t\tif (this.stopPaddingCheck) return;\n\n\t\tsetTimeout(() => {\n\t\t\tconst alertsContainer = this.alertsContainerRef.nativeElement;\n\t\t\tconst expansionPanel = this.expansionPanelRef.nativeElement;\n\n\t\t\tconst contentHeight = alertsContainer.scrollHeight;\n\t\t\tconst hostHeight = expansionPanel.clientHeight;\n\n\t\t\tthis.addPaddingToContainer = contentHeight > hostHeight - 24; // 24 is the title panel height\n\t\t});\n\t\tthis.stopPaddingCheck = false;\n\t}\n\n\tngOnDestroy(): void {}\n}\n","<mat-accordion [dir]=\"docDirection\" #expansionPanel>\n\t<mat-expansion-panel #panel [expanded]=\"!isMobile\" (opened)=\"showAlertsClick()\" (closed)=\"hideAlertsClick()\">\n\t\t<mat-expansion-panel-header\n\t\t\t[ngClass]=\"{ 'mobile-results-panel-header': isMobile }\"\n\t\t\taria-label=\"Hide or show alerts\"\n\t\t\ti18n-aria-label>\n\t\t\t<mat-panel-title>\n\t\t\t\t<div class=\"container-title\">\n\t\t\t\t\t<mat-icon fontSet=\"material-icons-round\">warning_amber</mat-icon>\n\t\t\t\t\t<h6 class=\"title\" web-report-title-font i18n>Alerts</h6>\n\t\t\t\t</div>\n\t\t\t</mat-panel-title>\n\n\t\t\t<mat-panel-description>\n\t\t\t\t<mat-icon\n\t\t\t\t\tclass=\"hide-alerts-icon\"\n\t\t\t\t\tfontSet=\"material-icons-round\"\n\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t\t[matTooltip]=\"panel.expanded ? COLLAPSE_TOOLTIP : EXPEND_TOOLTIP\">\n\t\t\t\t\tarrow_drop_down\n\t\t\t\t</mat-icon>\n\t\t\t</mat-panel-description>\n\t\t</mat-expansion-panel-header>\n\n\t\t<div #alertsContainer class=\"container-alerts\">\n\t\t\t<ng-container *ngFor=\"let alert of alerts; let isFirst = first\">\n\t\t\t\t<cr-alert-card\n\t\t\t\t\t*ngIf=\"isFirst\"\n\t\t\t\t\t[alert]=\"alert\"\n\t\t\t\t\t[ngClass]=\"{ 'item-with-padding': addPaddingToContainer }\"></cr-alert-card>\n\t\t\t\t<cr-alert-card\n\t\t\t\t\t*ngIf=\"!isFirst\"\n\t\t\t\t\t[alert]=\"alert\"\n\t\t\t\t\t[ngClass]=\"{ 'item-with-padding': addPaddingToContainer }\"></cr-alert-card>\n\t\t\t</ng-container>\n\t\t</div>\n\t</mat-expansion-panel>\n</mat-accordion>\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n\tselector: 'cr-empty-result-state',\n\ttemplateUrl: './empty-result-state.component.html',\n\tstyleUrls: ['./empty-result-state.component.scss'],\n\tstandalone: false,\n})\nexport class EmptyResultStateComponent implements OnInit {\n\t@Input() message: string;\n\n\tconstructor() {}\n\n\tngOnInit(): void {}\n}\n","<div class=\"empty-result-state-container\" fxLayout=\"column\" fxLayoutAlign=\"center center\" fxLayoutGap=\"4px\">\n\t<svg width=\"197\" height=\"176\" viewBox=\"0 0 197 176\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<g clip-path=\"url(#clip0_29296_102034)\">\n\t\t\t<path\n\t\t\t\td=\"M0 34.2939C0 20.1357 11.4587 8.6582 25.5936 8.6582H95.312C109.447 8.6582 120.906 20.1357 120.906 34.2939V127.947C120.906 142.105 109.447 153.583 95.312 153.583H25.5936C11.4587 153.581 0 142.105 0 127.947V34.2939Z\"\n\t\t\t\tfill=\"#EBF3F5\" />\n\t\t\t<path\n\t\t\t\td=\"M24.8585 22.9764C27.1704 9.01049 40.3487 -0.436474 54.2934 1.88086L123.073 13.3046C137.018 15.6203 146.447 28.8219 144.136 42.7878L128.841 135.178C126.529 149.146 113.35 158.591 99.4056 156.275L30.6261 144.852C16.6814 142.536 7.25157 129.336 9.56348 115.368L24.8585 22.9764Z\"\n\t\t\t\tfill=\"#FBFFFF\" />\n\t\t\t<path\n\t\t\t\td=\"M103.604 157.763C102.156 157.763 100.69 157.644 99.2162 157.4L30.4366 145.976C23.3919 144.806 17.2241 140.958 13.0688 135.142C8.91359 129.326 7.26874 122.237 8.43689 115.181L23.7335 22.7907C26.1447 8.22503 39.938 -1.66031 54.4781 0.754805L123.258 12.1785C130.302 13.3486 136.47 17.1961 140.625 23.0123C144.781 28.8284 146.426 35.9173 145.257 42.9736L129.962 135.364C127.795 148.453 116.438 157.763 103.606 157.763H103.604ZM24.8578 22.9764L25.982 23.1638L10.687 115.554C9.61806 122.009 11.123 128.493 14.9236 133.814C18.7241 139.135 24.3664 142.655 30.8108 143.725L99.5904 155.149C100.937 155.372 102.28 155.482 103.604 155.482C115.344 155.482 125.734 146.965 127.716 134.991L143.011 42.6004C144.079 36.1455 142.575 29.6612 138.774 24.3404C134.973 19.0197 129.331 15.4997 122.887 14.429L54.1056 3.00532C40.8036 0.795546 28.1865 9.83836 25.9804 23.1622L24.8561 22.9748L24.8578 22.9764Z\"\n\t\t\t\tfill=\"#DFE5E8\" />\n\t\t\t<path\n\t\t\t\td=\"M114.922 51.2973L49.756 40.4733C47.5255 40.1034 46.0856 37.967 46.4403 35.8273C46.795 33.6876 48.9426 32.1492 51.0755 32.5028L116.338 43.3431C118.568 43.7131 120.008 45.8495 119.653 47.9892C119.299 50.1289 117.151 51.6673 115.018 51.3136L114.921 51.2973H114.922Z\"\n\t\t\t\tfill=\"#EBF3F5\" />\n\t\t\t<path\n\t\t\t\td=\"M110.821 76.0825L45.6545 65.2585C43.4239 64.8886 41.9841 62.7521 42.3387 60.6124C42.6934 58.4727 44.841 56.9344 46.9739 57.288L112.236 68.1283C114.467 68.4982 115.906 70.6347 115.552 72.7744C115.197 74.9124 113.05 76.4524 110.917 76.0988L110.819 76.0825H110.821Z\"\n\t\t\t\tfill=\"#EBF3F5\" />\n\t\t\t<path\n\t\t\t\td=\"M106.703 100.963L41.5373 90.1394C39.3067 89.7694 37.8669 87.633 38.2216 85.4933C38.5762 83.3536 40.7238 81.8152 42.8568 82.1688L108.119 93.0091C110.349 93.3791 111.789 95.5155 111.435 97.6552C111.08 99.7933 108.932 101.333 106.799 100.98L106.702 100.963H106.703Z\"\n\t\t\t\tfill=\"#EBF3F5\" />\n\t\t\t<path\n\t\t\t\td=\"M102.598 125.748L37.4318 114.924C35.2013 114.554 33.7614 112.417 34.1161 110.277C34.4708 108.139 36.6183 106.599 38.7513 106.953L104.013 117.793C106.244 118.163 107.684 120.3 107.329 122.439C106.974 124.577 104.827 126.117 102.694 125.764L102.596 125.748H102.598Z\"\n\t\t\t\tfill=\"#EBF3F5\" />\n\t\t\t<path\n\t\t\t\td=\"M185.474 157.867H185.318C182.234 157.82 179.352 156.583 177.201 154.367L140.961 117.1L145.227 114.641L147.81 112.656L182.941 148.776C183.602 149.457 184.482 149.833 185.424 149.848C186.28 149.761 187.258 149.496 187.934 148.837C189.33 147.483 189.358 145.234 187.996 143.833L152.831 107.671L155.563 104.148L157.496 100.974L193.736 138.24C198.174 142.806 198.075 150.146 193.521 154.587C191.351 156.702 188.501 157.869 185.474 157.869V157.867Z\"\n\t\t\t\tfill=\"#00E2A2\" />\n\t\t\t<path\n\t\t\t\td=\"M155.435 116.71C136.725 134.966 106.678 134.571 88.4496 115.827C70.2212 97.0832 70.6149 66.9872 89.3249 48.7321C108.035 30.477 138.082 30.8714 156.31 49.6154C174.538 68.3594 174.145 98.4554 155.435 116.71ZM95.0843 54.6542C79.6364 69.7266 79.311 94.5817 94.3619 110.058C109.413 125.535 134.227 125.861 149.675 110.788C165.123 95.716 165.449 70.8608 150.398 55.3842C135.347 39.9076 110.532 39.5817 95.0843 54.6542Z\"\n\t\t\t\tfill=\"#3F9AF5\" />\n\t\t\t<path\n\t\t\t\td=\"M122.379 122.196C144.144 122.196 161.788 104.523 161.788 82.7216C161.788 60.9204 144.144 43.2471 122.379 43.2471C100.613 43.2471 82.9688 60.9204 82.9688 82.7216C82.9688 104.523 100.613 122.196 122.379 122.196Z\"\n\t\t\t\tfill=\"#FBFFFF\" />\n\t\t</g>\n\t\t<defs>\n\t\t\t<clipPath id=\"clip0_29296_102034\">\n\t\t\t\t<rect width=\"197\" height=\"176\" fill=\"white\" />\n\t\t\t</clipPath>\n\t\t</defs>\n\t</svg>\n\t<ng-container *ngIf=\"message; else defaultMessageRef\">\n\t\t<span class=\"empty-state-text\" web-report-title-font i18n>{{ message }}</span>\n\t</ng-container>\n\t<ng-template #defaultMessageRef>\n\t\t<span class=\"empty-state-text\" web-report-title-font i18n>No matched text results were found!</span>\n\t</ng-template>\n</div>\n","import { ReportDataService } from '../../../services/report-data.service';\nimport { ReportMatchHighlightService } from '../../../services/report-match-highlight.service';\nimport { ReportViewService } from '../../../services/report-view.service';\n\nexport enum EFilterResultForm {\n\t//Source Type\n\tfgSourceType = 'sourceType',\n\tfcInternet = 'internet',\n\tfcInternalDatabase = 'internalDatabase',\n\tfcYourResults = 'yourResults',\n\tfcOthersResults = 'othersResults',\n\tfcBatch = 'batch',\n\tfgRepositories = 'repositories',\n\tfgAISourceMatch = 'aiSourceMatch',\n\n\t//Results Meta\n\tfgResultsMeta = 'resultsMeta',\n\tfgWordLimit = 'wordLimit',\n\tfcWordLimitEnabled = 'wordLimitEnabled',\n\tfcWordLimitTotalWordlimt = 'totalWordlimt',\n\tfgPublicationDate = 'publicationDate',\n\tfcPublicationEnabled = 'publicationEnabled',\n\tfcPublicationStartDate = 'startDate',\n\tfcResultsWithNoDates = 'resultsWithNoDates',\n\n\t//Match Type\n\tfgMatchTypes = 'matchTypes',\n\tfcIdenticalText = 'identicalText',\n\tfcMinorChanges = 'minorChanges',\n\tfcParaphrased = 'paraphrased',\n\n\t//General Filters\n\tfgGeneralFilters = 'generalFilters',\n\tfcTopResult = 'topResult',\n\tfcAlerts = 'alerts',\n\tfcAuthorSubmissions = 'authorSubmissions',\n\n\tfcIncludedTags = 'includedTags',\n\n\tfcExcludedDomains = 'excludedDomains',\n}\n\nexport enum EFilterResultSection {\n\tSourceTypes = 0,\n\tMatchTypes,\n\tGeneralFilters,\n\tAdvancedFilterSettings,\n\tExcludeDomains,\n\tIncludedTags,\n}\n\nexport interface IFilterResultDailogData {\n\treportDataSvc: ReportDataService;\n\treportViewSvc: ReportViewService;\n\thighlightService: ReportMatchHighlightService;\n\tshowExcludedDailog: boolean;\n\tisMobile: boolean;\n}\n","import { Injectable } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { EFilterResultForm } from '../models/filter-result-dailog.enum';\nimport { ITagItem } from '../components/included-tags-filter-result/models/included-tags-filter-result.models';\nimport { ICompleteResults } from '../../../models/report-data.models';\nimport { ISourceRepositoryType } from '../components/source-type-filter-result/models/source-type-filter-result.models';\n\n@Injectable()\nexport class FilterResultDailogService {\n\tprivate _filterResultForm: UntypedFormGroup;\n\tprivate _completeResults: ICompleteResults;\n\n\tselectedTagItem: ITagItem[] = [];\n\n\tget filterResultFormGroup() {\n\t\treturn this._filterResultForm;\n\t}\n\n\tget sourceTypeFormGroup() {\n\t\treturn this._filterResultForm?.get(EFilterResultForm.fgSourceType) as UntypedFormGroup;\n\t}\n\n\tget matchTypeFormGroup() {\n\t\treturn this._filterResultForm?.get(EFilterResultForm.fgMatchTypes) as UntypedFormGroup;\n\t}\n\n\tget generalFiltersFormGroup() {\n\t\treturn this._filterResultForm?.get(EFilterResultForm.fgGeneralFilters) as UntypedFormGroup;\n\t}\n\n\tget resultsMetaFormGroup() {\n\t\treturn this._filterResultForm?.get(EFilterResultForm.fgResultsMeta) as UntypedFormGroup;\n\t}\n\n\tget includedTagsFormControl() {\n\t\treturn this._filterResultForm?.get(EFilterResultForm.fcIncludedTags) as UntypedFormControl;\n\t}\n\n\tget excludedDomainsFormControl() {\n\t\treturn this._filterResultForm?.get(EFilterResultForm.fcExcludedDomains) as UntypedFormControl;\n\t}\n\n\tget repositoriesFormGroup() {\n\t\treturn this.sourceTypeFormGroup.get(EFilterResultForm.fgRepositories) as UntypedFormGroup;\n\t}\n\n\tget reposIds() {\n\t\tif (!this._completeResults || !this._completeResults.results?.repositories) return [];\n\n\t\tconst reposMap = new Map<string, ISourceRepositoryType>();\n\n\t\tthis._completeResults.results.repositories.forEach(r => {\n\t\t\t// Check if the repository already exists in the map\n\t\t\tif (!reposMap.has(r.repositoryId)) {\n\t\t\t\t// Add the repository with an initial count of 1\n\t\t\t\treposMap.set(r.repositoryId, {\n\t\t\t\t\tid: r.repositoryId,\n\t\t\t\t\ttitle: r.title,\n\t\t\t\t\ttotalResults: 1,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\t// Increment the totalResults count for the existing repository\n\t\t\t\tconst existingRepo = reposMap.get(r.repositoryId);\n\t\t\t\tif (existingRepo) {\n\t\t\t\t\texistingRepo.totalResults++;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn Array.from(reposMap.values());\n\t}\n\n\tconstructor(private _formBuilder: UntypedFormBuilder) {}\n\n\tpublic initForm(completeResults: ICompleteResults) {\n\t\tthis._completeResults = completeResults;\n\n\t\tthis.initTags();\n\n\t\tthis._filterResultForm = this._formBuilder.group({\n\t\t\tsourceType: this._formBuilder.group({\n\t\t\t\tinternet: new UntypedFormControl(this.getFormControlValue(EFilterResultForm.fcInternet)),\n\t\t\t\tinternalDatabase: new UntypedFormControl(this.getFormControlValue(EFilterResultForm.fcInternalDatabase)),\n\t\t\t\tyourResults: new UntypedFormControl(this.getFormControlValue(EFilterResultForm.fcYourResults)),\n\t\t\t\tothersResults: new UntypedFormControl(this.getFormControlValue(EFilterResultForm.fcOthersResults)),\n\t\t\t\tbatch: new UntypedFormControl(this.getFormControlValue(EFilterResultForm.fcBatch)),\n\t\t\t\taiSourceMatch: new UntypedFormControl(this.getFormControlValue(EFilterResultForm.fgAISourceMatch)),\n\t\t\t\trepositories: this._formBuilder.group({}),\n\t\t\t}),\n\t\t\tresultsMeta: this._formBuilder.group({\n\t\t\t\twordLimit: this._formBuilder.group({\n\t\t\t\t\twordLimitEnabled: new UntypedFormControl(this.getFormControlValue(EFilterResultForm.fcWordLimitEnabled)),\n\t\t\t\t\ttotalWordlimt: new UntypedFormControl(this.getFormControlValue(EFilterResultForm.fcWordLimitTotalWordlimt)),\n\t\t\t\t}),\n\t\t\t\tpublicationDate: this._formBuilder.group({\n\t\t\t\t\tpublicationEnabled: new UntypedFormControl(this.getFormControlValue(EFilterResultForm.fcPublicationEnabled)),\n\t\t\t\t\tstartDate: new UntypedFormControl(this.getFormControlValue(EFilterResultForm.fcPublicationStartDate)),\n\t\t\t\t\tresultsWithNoDates: new UntypedFormControl(this.getFormControlValue(EFilterResultForm.fcResultsWithNoDates)),\n\t\t\t\t}),\n\t\t\t}),\n\t\t\tmatchTypes: this._formBuilder.group({\n\t\t\t\tidenticalText: new UntypedFormControl(this.getFormControlValue(EFilterResultForm.fcIdenticalText)),\n\t\t\t\tminorChanges: new UntypedFormControl(this.getFormControlValue(EFilterResultForm.fcMinorChanges)),\n\t\t\t\tparaphrased: new UntypedFormControl(this.getFormControlValue(EFilterResultForm.fcParaphrased)),\n\t\t\t}),\n\t\t\tgeneralFilters: this._formBuilder.group({\n\t\t\t\ttopResult: new UntypedFormControl(this.getFormControlValue(EFilterResultForm.fcTopResult)),\n\t\t\t\talerts: new UntypedFormControl(this.getFormControlValue(EFilterResultForm.fcAlerts)),\n\t\t\t\tauthorSubmissions: new UntypedFormControl(this.getFormControlValue(EFilterResultForm.fcAuthorSubmissions)),\n\t\t\t}),\n\t\t\tincludedTags: new UntypedFormControl(this.getFormControlValue(EFilterResultForm.fcIncludedTags)),\n\t\t\texcludedDomains: new UntypedFormControl(this.getFormControlValue(EFilterResultForm.fcExcludedDomains)),\n\t\t});\n\n\t\tthis.addRepositoriesToForm(this.reposIds);\n\t}\n\n\tpublic initTags() {\n\t\tconst allResults = [\n\t\t\t...(this._completeResults.results.internet ?? []),\n\t\t\t...(this._completeResults.results.database ?? []),\n\t\t\t...(this._completeResults.results.repositories ?? []),\n\t\t\t...(this._completeResults.results.batch ?? []),\n\t\t];\n\t\tthis.selectedTagItem = [];\n\t\tconst tagSet = new Set();\n\t\tallResults.forEach(result => {\n\t\t\tresult.tags?.forEach(tag => {\n\t\t\t\tif (!tag || !tag.title || tag.title.trim() === '') return;\n\t\t\t\tconst tagKey = `${tag.code}-${tag.description}-${tag.title}`;\n\n\t\t\t\tif (!tagSet.has(tagKey)) {\n\t\t\t\t\ttagSet.add(tagKey);\n\n\t\t\t\t\tthis.selectedTagItem.push({\n\t\t\t\t\t\tselected: false,\n\t\t\t\t\t\tcode: tag.code,\n\t\t\t\t\t\tdescription: tag.description,\n\t\t\t\t\t\ttitle: tag.title,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\t// Select all tags that are provided in the filter options in the complete results response\n\t\tconst filteredTags = this._completeResults.filters?.includedTags;\n\t\tif (filteredTags && filteredTags.length > 0) {\n\t\t\tfilteredTags.forEach(tagTitle => {\n\t\t\t\tthis.selectedTagItem.forEach(tag => {\n\t\t\t\t\tif (tag.title === tagTitle) tag.selected = true;\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}\n\n\tclearForm() {\n\t\tthis.initTags();\n\t\tthis.selectedTagItem?.forEach(tag => {\n\t\t\ttag.selected = false;\n\t\t});\n\n\t\tthis._filterResultForm.patchValue({\n\t\t\tsourceType: {\n\t\t\t\tinternet: true,\n\t\t\t\tinternalDatabase: true,\n\t\t\t\tyourResults: true,\n\t\t\t\tothersResults: true,\n\t\t\t\tbatch: true,\n\t\t\t\trepositories: {},\n\t\t\t\taiSourceMatch: true,\n\t\t\t},\n\t\t\tresultsMeta: {\n\t\t\t\twordLimit: {\n\t\t\t\t\twordLimitEnabled: false,\n\t\t\t\t\ttotalWordlimt: 0,\n\t\t\t\t},\n\t\t\t\tpublicationDate: {\n\t\t\t\t\tpublicationEnabled: false,\n\t\t\t\t\tstartDate: null,\n\t\t\t\t\tresultsWithNoDates: true,\n\t\t\t\t},\n\t\t\t},\n\t\t\tmatchTypes: {\n\t\t\t\tidenticalText: true,\n\t\t\t\tminorChanges: true,\n\t\t\t\tparaphrased: true,\n\t\t\t},\n\t\t\tgeneralFilters: {\n\t\t\t\ttopResult: false,\n\t\t\t\talerts: true,\n\t\t\t\tauthorSubmissions: true,\n\t\t\t},\n\t\t\tincludedTags: this.selectedTagItem ?? ([] as ITagItem[]),\n\t\t\texcludedDomains: [],\n\t\t});\n\n\t\tthis.initFormRepositories();\n\t}\n\n\tpublic getFormControlValue(eFilterResultForm: EFilterResultForm) {\n\t\tswitch (eFilterResultForm) {\n\t\t\t// Source Type\n\t\t\tcase EFilterResultForm.fcInternet:\n\t\t\t\treturn this._completeResults.filters?.sourceType?.internet != undefined\n\t\t\t\t\t? this._completeResults.filters?.sourceType?.internet\n\t\t\t\t\t: true;\n\t\t\tcase EFilterResultForm.fcInternalDatabase:\n\t\t\t\treturn this._completeResults.filters?.sourceType?.othersResults != undefined &&\n\t\t\t\t\tthis._completeResults.filters?.sourceType?.yourResults != undefined\n\t\t\t\t\t? this._completeResults.filters?.sourceType?.othersResults ||\n\t\t\t\t\t\t\tthis._completeResults.filters?.sourceType?.yourResults\n\t\t\t\t\t: true;\n\t\t\tcase EFilterResultForm.fcYourResults:\n\t\t\t\treturn this._completeResults.filters?.sourceType?.yourResults != undefined\n\t\t\t\t\t? this._completeResults.filters?.sourceType?.yourResults\n\t\t\t\t\t: true;\n\t\t\tcase EFilterResultForm.fcOthersResults:\n\t\t\t\treturn this._completeResults.filters?.sourceType?.othersResults != undefined\n\t\t\t\t\t? this._completeResults.filters?.sourceType?.othersResults\n\t\t\t\t\t: true;\n\t\t\tcase EFilterResultForm.fcBatch:\n\t\t\t\treturn this._completeResults.filters?.sourceType?.batch != undefined\n\t\t\t\t\t? this._completeResults.filters?.sourceType?.batch\n\t\t\t\t\t: true;\n\t\t\tcase EFilterResultForm.fgAISourceMatch:\n\t\t\t\treturn this._completeResults.filters?.sourceType?.aiSourceMatch != undefined\n\t\t\t\t\t? this._completeResults.filters?.sourceType?.aiSourceMatch\n\t\t\t\t\t: true;\n\t\t\t//Results Meta\n\t\t\tcase EFilterResultForm.fcWordLimitEnabled:\n\t\t\t\treturn this._completeResults.filters?.resultsMetaData?.wordLimit?.wordLimitEnabled != undefined\n\t\t\t\t\t? this._completeResults.filters?.resultsMetaData?.wordLimit?.wordLimitEnabled\n\t\t\t\t\t: false;\n\t\t\tcase EFilterResultForm.fcWordLimitTotalWordlimt:\n\t\t\t\treturn this._completeResults.filters?.resultsMetaData?.wordLimit?.totalWordLimit != undefined\n\t\t\t\t\t? this._completeResults.filters?.resultsMetaData?.wordLimit?.totalWordLimit\n\t\t\t\t\t: 0;\n\t\t\tcase EFilterResultForm.fcPublicationEnabled:\n\t\t\t\treturn this._completeResults.filters?.resultsMetaData?.publicationDate?.publicationEnabled != undefined\n\t\t\t\t\t? this._completeResults.filters?.resultsMetaData?.publicationDate?.publicationEnabled\n\t\t\t\t\t: false;\n\t\t\tcase EFilterResultForm.fcPublicationStartDate:\n\t\t\t\treturn this._completeResults.filters?.resultsMetaData?.publicationDate?.startDate != undefined\n\t\t\t\t\t? this._completeResults.filters?.resultsMetaData?.publicationDate?.startDate\n\t\t\t\t\t: null;\n\t\t\tcase EFilterResultForm.fcResultsWithNoDates:\n\t\t\t\treturn this._completeResults.filters?.resultsMetaData?.publicationDate?.resultsWithNoDates != undefined\n\t\t\t\t\t? this._completeResults.filters?.resultsMetaData?.publicationDate?.resultsWithNoDates\n\t\t\t\t\t: true;\n\t\t\t//Match Type\n\t\t\tcase EFilterResultForm.fcIdenticalText:\n\t\t\t\treturn this._completeResults.filters?.matchType?.identicalText != undefined\n\t\t\t\t\t? this._completeResults.filters?.matchType?.identicalText\n\t\t\t\t\t: true;\n\t\t\tcase EFilterResultForm.fcMinorChanges:\n\t\t\t\treturn this._completeResults.filters?.matchType?.minorChanges != undefined\n\t\t\t\t\t? this._completeResults.filters?.matchType?.minorChanges\n\t\t\t\t\t: true;\n\t\t\tcase EFilterResultForm.fcParaphrased:\n\t\t\t\treturn this._completeResults.filters?.matchType?.paraphrased != undefined\n\t\t\t\t\t? this._completeResults.filters?.matchType?.paraphrased\n\t\t\t\t\t: true;\n\t\t\t//General Filters\n\t\t\tcase EFilterResultForm.fcTopResult:\n\t\t\t\treturn this._completeResults.filters?.general?.topResult != undefined\n\t\t\t\t\t? this._completeResults.filters?.general?.topResult\n\t\t\t\t\t: true;\n\t\t\tcase EFilterResultForm.fcAlerts:\n\t\t\t\treturn this._completeResults.filters?.general?.alerts != undefined\n\t\t\t\t\t? this._completeResults.filters?.general?.alerts\n\t\t\t\t\t: true;\n\t\t\tcase EFilterResultForm.fcAuthorSubmissions:\n\t\t\t\treturn this._completeResults.filters?.general?.authorSubmissions != undefined\n\t\t\t\t\t? this._completeResults.filters?.general?.authorSubmissions\n\t\t\t\t\t: true;\n\t\t\tcase EFilterResultForm.fcIncludedTags:\n\t\t\t\treturn this.selectedTagItem ?? ([] as ITagItem[]);\n\t\t\tcase EFilterResultForm.fcExcludedDomains:\n\t\t\t\treturn this._completeResults.filters?.excludedDomains != undefined\n\t\t\t\t\t? this._completeResults.filters?.excludedDomains\n\t\t\t\t\t: [];\n\t\t\tdefault:\n\t\t\t\treturn null;\n\t\t}\n\t}\n\n\tpublic getRepositoryValueById() {\n\t\treturn true;\n\t}\n\n\taddRepositoriesToForm(repositories: ISourceRepositoryType[], clear: boolean = false): void {\n\t\trepositories.forEach(repo => {\n\t\t\t// Add a new FormControl for each repository\n\t\t\t// Using the repo id as the form control name and setting the initial value to false\n\n\t\t\tthis.repositoriesFormGroup?.addControl(\n\t\t\t\trepo.id,\n\t\t\t\tnew UntypedFormControl(\n\t\t\t\t\tclear\n\t\t\t\t\t\t? true\n\t\t\t\t\t\t: !this._completeResults.filters?.sourceType?.repositories\n\t\t\t\t\t\t? true\n\t\t\t\t\t\t: this._completeResults.filters?.sourceType?.repositories?.find(id => id === repo.id) === undefined\n\t\t\t\t\t\t? true\n\t\t\t\t\t\t: false\n\t\t\t\t)\n\t\t\t);\n\t\t});\n\t}\n\n\tgetSelectedRepositoryIds(): string[] {\n\t\t// This will hold the IDs of the repositories with a value of true\n\t\tconst selectedRepoIds: string[] = [];\n\n\t\t// Iterate over the keys of the form group controls\n\t\tObject.keys(this.repositoriesFormGroup?.controls).forEach(key => {\n\t\t\tconst control = this.repositoriesFormGroup?.controls[key];\n\n\t\t\t// Check if the control's value is true\n\t\t\tif (control.value === false) {\n\t\t\t\tselectedRepoIds.push(key);\n\t\t\t}\n\t\t});\n\n\t\treturn selectedRepoIds;\n\t}\n\n\tinitFormRepositories(): void {\n\t\t// Iterate over the keys of the form group controls\n\t\tObject.keys(this.repositoriesFormGroup?.controls).forEach(key => {\n\t\t\tconst control = this.repositoriesFormGroup?.controls[key];\n\t\t\tcontrol?.setValue(true);\n\t\t});\n\t}\n}\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n\tselector: 'cr-spinner',\n\ttemplateUrl: './cr-spinner.component.html',\n\tstyleUrls: ['./cr-spinner.component.scss'],\n\tstandalone: false,\n})\nexport class CrSpinnerComponent implements OnInit {\n\t/**\n\t * The spinner size\n\t * this will be the width/height of the spinner\n\t * @type {string}\n\t * @Input\n\t */\n\t@Input() size = '100px';\n\n\t/**\n\t * The spinner color\n\t * @type {string}\n\t * @Input\n\t */\n\t@Input() color = '#17a1ff';\n\n\tconstructor() {}\n\n\tngOnInit() {}\n}\n","<div class=\"showbox\">\n\t<div class=\"loader\" [style.width]=\"size\">\n\t\t<svg class=\"circular\" viewBox=\"25 25 50 50\">\n\t\t\t<circle class=\"path\" cx=\"50\" cy=\"50\" r=\"20\" fill=\"none\" stroke-width=\"2\" stroke-miterlimit=\"10\" />\n\t\t</svg>\n\t</div>\n</div>\n","import { Component, Input, OnInit, SimpleChanges } from '@angular/core';\nimport { ClsButtonColor } from './models/cr-button.models';\n\n/**\n * Class representing a new design for the Copyleaks Button.\n */\n@Component({\n\tselector: 'cr-button',\n\ttemplateUrl: './cr-button.component.html',\n\tstyleUrls: ['./cr-button.component.scss'],\n\tstandalone: false,\n})\nexport class CrButtonComponent implements OnInit {\n\t/**\n\t * Flag that indicates whether the button is disabled or not\n\t * @Input\n\t */\n\t@Input() disabled: boolean = false;\n\n\t/**\n\t * The button tooltip text content\n\t * @Input\n\t */\n\t@Input() buttonTooltip: string = '';\n\n\t/**\n\t * Flag that indicates whether the button is disabled or not\n\t * @Input\n\t */\n\t@Input() showSpinner: boolean = false;\n\n\t/**\n\t *  The button aria label\n\t * @Input\n\t */\n\t@Input() ariaLabel: string = '';\n\n\t// Button style properties\n\t/**\n\t * The button theme color\n\t * @Input\n\t */\n\t@Input() color: ClsButtonColor = 'primary';\n\n\t/**\n\t * Flag that indicates whether the button is outlined or not (only the text & the border will be the same as the theme color)\n\t * @Input\n\t */\n\t@Input() outlined: boolean = false;\n\n\t/**\n\t * The width of the button (e.g. '100px' or '100%')\n\t * @Input\n\t */\n\t@Input() width: string = '';\n\n\t/**\n\t * The height of the button (e.g. '100px')\n\t * @Input\n\t */\n\t@Input() height: string = '';\n\n\t// Button icon properties\n\t/**\n\t * The name of the button icon\n\t * @Input\n\t */\n\t@Input() icon: string = '';\n\n\t/**\n\t * Flag that indicates whether the button is just an icon or not\n\t * @Input\n\t */\n\t@Input() onlyIcon: boolean = false;\n\n\t/**\n\t * The size of the buttons icon\n\t * @Input\n\t */\n\t@Input() iconSize: string = '20px';\n\n\t// Link button properties\n\n\t/**\n\t * Flag that indicates whether the button is link or not\n\t * @Input\n\t */\n\t@Input() isLink: boolean = false;\n\n\t/**\n\t * Flag that indicates whether the button will have a shadow or not\n\t * @Input\n\t */\n\t@Input() addShadow: boolean = false;\n\n\t/**\n\t * The link URL\n\t * @Input\n\t */\n\t@Input() href: string = '';\n\n\t/**\n\t * The link target\n\t * @Input\n\t */\n\t@Input() traget: string = '_blank';\n\t/**\n\t * The tab index\n\t * @Input\n\t */\n\t@Input() tabindex: number = 0;\n\t/**\n\t * The tab index\n\t * @Input\n\t */\n\t@Input() padding: string;\n\t/**\n\t * Indicates where the icon will be position relative to the text\n\t * @Input\n\t */\n\t@Input() isIconRighToText: boolean = false;\n\n\t/**\n\t * The font-weight of the button text.\n\t * @Input\n\t */\n\t@Input() fontWeight: string = '500';\n\n\t/**\n\t * The font-size of the button text.\n\t * @Input\n\t */\n\t@Input() fontSize: string = '16px';\n\n\t/**\n\t * Getter for the filled button classes names (put together)\n\t */\n\tget filledButtonColorClassName(): string {\n\t\treturn `${this.color}-filled-button${this.disabled ? '-disabled' : ''}`;\n\t}\n\n\t/**\n\t * Getter for the outlined button classes names (put together)\n\t */\n\tget outlinedButtonColorClassName(): string {\n\t\treturn `${this.color}-outlined-button${this.disabled ? '-disabled' : ''}`;\n\t}\n\n\t/**\n\t * Getter for the link button classes names (put together)\n\t */\n\tget linkButtonColorClassName(): string {\n\t\treturn `${this.color}-link-button${this.disabled ? '-disabled' : ''}`;\n\t}\n\n\t/**\n\t * Getter for the icon button classes names (put together)\n\t */\n\tget iconButtonColorClassName(): string {\n\t\treturn `${this.color}-icon-button${this.disabled ? '-disabled' : ''}`;\n\t}\n\n\ticonStyle: any = {};\n\tbuttonStyle: any = {};\n\n\tconstructor() {}\n\n\tngOnInit(): void {\n\t\t// check if the icon property is added, and if so update the icon style\n\t\tif (this.icon)\n\t\t\tthis.iconStyle = {\n\t\t\t\t'font-size': this.iconSize,\n\t\t\t\twidth: this.iconSize,\n\t\t\t\theight: this.iconSize,\n\t\t\t};\n\n\t\t// Apply button style.\n\t\tthis.buttonStyle = {\n\t\t\t...this.buttonStyle,\n\t\t\twidth: this.width,\n\t\t\theight: this.height,\n\t\t\t'font-weight': this.fontWeight,\n\t\t\t'font-size': this.fontSize,\n\t\t};\n\n\t\t// check if the button shadow property is added, and if so update the button accordingly\n\t\tif (this.addShadow)\n\t\t\tthis.buttonStyle = {\n\t\t\t\t...this.buttonStyle,\n\t\t\t\t'box-shadow': '2px 2px 4px rgba(0, 0, 0, 0.15), -2px -2px 8px rgba(255, 255, 255, 0.5)',\n\t\t\t};\n\n\t\tif (this.padding)\n\t\t\tthis.buttonStyle = {\n\t\t\t\t...this.buttonStyle,\n\t\t\t\tpadding: this.padding,\n\t\t\t};\n\t}\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif (changes['iconSize']) {\n\t\t\tthis.iconStyle = {\n\t\t\t\t'font-size': this.iconSize,\n\t\t\t\twidth: this.iconSize,\n\t\t\t\theight: this.iconSize,\n\t\t\t};\n\t\t}\n\n\t\tif (changes['width'] || changes['height'] || changes['fontWeight'] || changes['fontSize'] || changes['padding']) {\n\t\t\tthis.buttonStyle = {\n\t\t\t\t...this.buttonStyle,\n\t\t\t\twidth: this.width,\n\t\t\t\theight: this.height,\n\t\t\t\t'font-weight': this.fontWeight,\n\t\t\t\t'font-size': this.fontSize,\n\t\t\t\tpadding: this.padding,\n\t\t\t};\n\t\t}\n\t}\n}\n","<ng-template #buttonContent>\n\t<div fxLayout=\"row\" fxLayoutAlign=\"center center\" [fxLayoutGap]=\"onlyIcon ? '0px' : '10px'\">\n\t\t<!-- button icon -->\n\t\t<ng-template #btnIcon>\n\t\t\t<mat-icon\n\t\t\t\t*ngIf=\"icon && !showSpinner\"\n\t\t\t\tclass=\"cls-button-icon\"\n\t\t\t\tfontSet=\"material-icons-round\"\n\t\t\t\t[ngStyle]=\"iconStyle\">\n\t\t\t\t{{ icon }}\n\t\t\t</mat-icon>\n\t\t</ng-template>\n\t\t<!-- show icon on the left side of the text -->\n\t\t<ng-container *ngIf=\"!isIconRighToText\" [ngTemplateOutlet]=\"btnIcon\"></ng-container>\n\t\t<!-- inner text -->\n\t\t<span class=\"cls-button-text\">\n\t\t\t<ng-content></ng-content>\n\t\t</span>\n\t\t<!-- show icon on the right side of the text -->\n\t\t<ng-container *ngIf=\"isIconRighToText\" [ngTemplateOutlet]=\"btnIcon\"></ng-container>\n\t\t<!-- button spinner -->\n\t\t<cr-spinner *ngIf=\"showSpinner\" size=\"20px\"></cr-spinner>\n\t</div>\n</ng-template>\n\n<!-- Check if the button is just a link and set the style accordingly -->\n<ng-container *ngIf=\"isLink; else normalButton\">\n\t<div\n\t\tclass=\"tooltip-container\"\n\t\tfxLayout=\"row\"\n\t\tfxLayoutAlign=\"start center\"\n\t\t[matTooltip]=\"buttonTooltip\"\n\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\ti18n-matTooltip>\n\t\t<a\n\t\t\t[class]=\"linkButtonColorClassName + ' background-transition'\"\n\t\t\t[ngStyle]=\"buttonStyle\"\n\t\t\tmat-flat-button\n\t\t\t[href]=\"href\"\n\t\t\t[target]=\"traget\"\n\t\t\t[color]=\"color\"\n\t\t\t[disabled]=\"disabled || showSpinner\"\n\t\t\t[attr.aria-label]=\"ariaLabel\"\n\t\t\t[tabIndex]=\"tabindex\"\n\t\t\ti18n-aria-label>\n\t\t\t<ng-container *ngTemplateOutlet=\"buttonContent\"></ng-container>\n\t\t</a>\n\t</div>\n</ng-container>\n\n<!-- Normal button -->\n<ng-template #normalButton>\n\t<!-- Filled button -->\n\t<div\n\t\tclass=\"tooltip-container\"\n\t\tfxLayout=\"row\"\n\t\tfxLayoutAlign=\"start center\"\n\t\t[matTooltip]=\"buttonTooltip\"\n\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\ti18n-matTooltip>\n\t\t<ng-container *ngIf=\"!outlined; else outlinedButton\">\n\t\t\t<ng-container *ngIf=\"!onlyIcon; else onlyIconOutlinedButton\">\n\t\t\t\t<button\n\t\t\t\t\tmat-raised-button\n\t\t\t\t\t[ngStyle]=\"buttonStyle\"\n\t\t\t\t\t[class]=\"filledButtonColorClassName + ' background-transition'\"\n\t\t\t\t\t[color]=\"color\"\n\t\t\t\t\t[attr.aria-label]=\"ariaLabel\"\n\t\t\t\t\t[disabled]=\"disabled || showSpinner\"\n\t\t\t\t\t[tabIndex]=\"tabindex\"\n\t\t\t\t\ti18n-aria-label>\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"buttonContent\"></ng-container>\n\t\t\t\t</button>\n\t\t\t</ng-container>\n\n\t\t\t<ng-template #onlyIconOutlinedButton>\n\t\t\t\t<button\n\t\t\t\t\tmat-icon-button\n\t\t\t\t\t[ngStyle]=\"buttonStyle\"\n\t\t\t\t\t[class]=\"iconButtonColorClassName + ' background-transition'\"\n\t\t\t\t\t[color]=\"color\"\n\t\t\t\t\t[attr.aria-label]=\"ariaLabel\"\n\t\t\t\t\t[disabled]=\"disabled || showSpinner\"\n\t\t\t\t\t[tabIndex]=\"tabindex\"\n\t\t\t\t\ti18n-aria-label>\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"buttonContent\"></ng-container>\n\t\t\t\t</button>\n\t\t\t</ng-template>\n\t\t</ng-container>\n\n\t\t<!-- Outlined button -->\n\t\t<ng-template #outlinedButton>\n\t\t\t<ng-container *ngIf=\"!onlyIcon; else onlyIconOutlinedButton\">\n\t\t\t\t<button\n\t\t\t\t\tmat-button\n\t\t\t\t\t[class]=\"outlinedButtonColorClassName + ' background-transition'\"\n\t\t\t\t\t[ngStyle]=\"buttonStyle\"\n\t\t\t\t\t[color]=\"color\"\n\t\t\t\t\t[attr.aria-label]=\"ariaLabel\"\n\t\t\t\t\t[disabled]=\"disabled || showSpinner\"\n\t\t\t\t\t[tabIndex]=\"tabindex\"\n\t\t\t\t\ti18n-aria-label>\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"buttonContent\"></ng-container>\n\t\t\t\t</button>\n\t\t\t</ng-container>\n\t\t\t<ng-template #onlyIconOutlinedButton>\n\t\t\t\t<button\n\t\t\t\t\tmat-icon-button\n\t\t\t\t\t[ngStyle]=\"buttonStyle\"\n\t\t\t\t\t[class]=\"iconButtonColorClassName + ' background-transition'\"\n\t\t\t\t\t[color]=\"color\"\n\t\t\t\t\t[attr.aria-label]=\"ariaLabel\"\n\t\t\t\t\t[disabled]=\"disabled || showSpinner\"\n\t\t\t\t\t[tabIndex]=\"tabindex\"\n\t\t\t\t\ti18n-aria-label>\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"buttonContent\"></ng-container>\n\t\t\t\t</button>\n\t\t\t</ng-template>\n\t\t</ng-template>\n\t</div>\n</ng-template>\n","import { Component, Input, OnInit, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatSlideToggleChange } from '@angular/material/slide-toggle';\n\n@Component({\n\tselector: 'cr-mat-slide-filter-result',\n\ttemplateUrl: './mat-slide-filter-result.component.html',\n\tstyleUrls: ['./mat-slide-filter-result.component.scss'],\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => MatSlideFilterResultComponent),\n\t\t\tmulti: true,\n\t\t},\n\t],\n\tstandalone: false,\n})\nexport class MatSlideFilterResultComponent implements OnInit, ControlValueAccessor {\n\t/**\n\t * @Input {string} The title text to display for the section or component\n\t */\n\t@Input() title: string;\n\n\t/**\n\t * @Input {string} The text to display for the tooltip\n\t */\n\t@Input() tooltipText: string;\n\n\t/**\n\t * @Input {number} The total number of items or results to display\n\t */\n\t@Input() total: number;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether the component is disabled\n\t */\n\t@Input() disabled: boolean = false;\n\n\tvalue: boolean;\n\n\tget disabledSlide() {\n\t\treturn this.total === 0;\n\t}\n\n\tupdateParentControllerValue: (value: boolean) => void;\n\tngOnInit(): void {}\n\n\twriteValue(result: boolean): void {\n\t\tthis.value = result;\n\t}\n\n\tregisterOnChange(fn: any): void {\n\t\tthis.updateParentControllerValue = fn;\n\t}\n\n\tchanegValue(event: MatSlideToggleChange) {\n\t\tthis.value = event.checked;\n\t\tthis.updateParentControllerValue(this.value);\n\t}\n\n\tchangeValueOnEnter() {\n\t\tthis.value = !this.value;\n\t\tthis.updateParentControllerValue(this.value);\n\t}\n\n\tregisterOnTouched(): void {}\n\tonInputChange() {}\n}\n\n@Component({\n\tselector: 'mat-slide-logo',\n\ttemplate: '<ng-content></ng-content>',\n\tstandalone: false,\n})\nexport class MatSlideLogoFilterResultComponent {}\n","<div class=\"mat-slide-container\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\" fxLayoutGap=\"10px\">\n\t<div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"8px\">\n\t\t<ng-content select=\"mat-slide-logo\"></ng-content>\n\t\t<span class=\"mat-slide-title\">{{ title }}</span>\n\t\t<span *ngIf=\"!!total\" class=\"mat-slide-total\">({{ total }})</span>\n\t\t<mat-icon\n\t\t\t*ngIf=\"tooltipText\"\n\t\t\tclass=\"info-icon\"\n\t\t\tfontSet=\"material-icons-round\"\n\t\t\ttabindex=\"0\"\n\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t[attr.aria-label]=\"tooltipText\"\n\t\t\t[matTooltip]=\"tooltipText\">\n\t\t\tinfo_outline\n\t\t</mat-icon>\n\t</div>\n\t<mat-slide-toggle\n\t\t[checked]=\"value && !disabledSlide\"\n\t\t(change)=\"chanegValue($event)\"\n\t\t[disableRipple]=\"true\"\n\t\taria-label=\"This is a slide toggle to enable the given filter option.\"\n\t\ti18n-aria-label\n\t\t[disabled]=\"disabledSlide || disabled\"></mat-slide-toggle>\n</div>\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { ITotalSourceType } from './models/source-type-filter-result.models';\nimport { FilterResultDailogService } from '../../services/filter-result-dailog.service';\nimport { EFilterResultForm } from '../../models/filter-result-dailog.enum';\nimport { ReportViewService } from '../../../../services/report-view.service';\nimport { EPlatformType } from '../../../../enums/copyleaks-web-report.enums';\nimport { untilDestroy } from '../../../../utils/until-destroy';\nimport { ReportDataService } from '../../../../services/report-data.service';\n\n@Component({\n\tselector: 'cr-source-type-filter-result',\n\ttemplateUrl: './source-type-filter-result.component.html',\n\tstyleUrls: ['./source-type-filter-result.component.scss'],\n\tstandalone: false,\n})\nexport class SourceTypeFilterResultComponent implements OnInit, OnDestroy {\n\t/**\n\t * @Input {ITotalSourceType} Total counts of different source types in the report\n\t */\n\t@Input() totalSourceType: ITotalSourceType = {\n\t\ttotalInternet: 0,\n\t\ttotalInternalDatabase: 0,\n\t\ttotalbatch: 0,\n\t\ttotalOthersFiles: 0,\n\t\ttotalYourFiles: 0,\n\t\ttotalAISourceMatch: 0,\n\t};\n\n\t/**\n\t * @Input {ReportViewService} Service for managing the report view state and interactions\n\t */\n\t@Input() reportViewSvc: ReportViewService;\n\n\t/**\n\t * @Input {ReportDataService} Service for accessing and managing report data\n\t */\n\t@Input() reportDataSvc: ReportDataService;\n\n\teFilterResultForm = EFilterResultForm;\n\tePlatformType = EPlatformType;\n\n\tINTERNET_SOURCE = $localize`Internet Source`;\n\tIINTERNAL_DATABASE = $localize`Shared Data Hub`;\n\tTHIS_BACTCH = $localize`This batch`;\n\tAI_SOURCE_MATCH = $localize`AI Source Match`;\n\tAI_SOURCE_MATCH_TOOLTIP = $localize`AI Source Match blends plagiarism and AI detection to identify reused or repurposed AI-generated content from other sources.`;\n\n\tplatformType: EPlatformType;\n\n\tget repositoriesForm() {\n\t\treturn this.filterService.sourceTypeFormGroup?.get(EFilterResultForm.fgRepositories) as UntypedFormGroup;\n\t}\n\n\tget repositoryLength() {\n\t\treturn this.totalSourceType?.repository?.length || 0;\n\t}\n\n\tconstructor(public filterService: FilterResultDailogService) {}\n\n\tngOnInit(): void {\n\t\tif (this.totalSourceType?.repository) {\n\t\t\tthis.totalSourceType?.repository.forEach(repo => {\n\t\t\t\tthis.addRepositoryControl(repo.id);\n\t\t\t});\n\t\t}\n\n\t\tif (this.reportViewSvc) {\n\t\t\tthis.platformType = this.reportViewSvc.reportViewMode.platformType;\n\t\t\tthis.reportViewSvc.reportViewMode$.pipe(untilDestroy(this)).subscribe(data => {\n\t\t\t\tif (!data) return;\n\t\t\t\tthis.platformType = data.platformType;\n\t\t\t});\n\t\t}\n\t}\n\n\taddRepositoryControl(repoId: string) {\n\t\tconst repositories = this.repositoriesForm;\n\t\trepositories.addControl(repoId, new UntypedFormControl(this.filterService.getRepositoryValueById()));\n\t}\n\n\tngOnDestroy(): void {}\n}\n","<div\n\tclass=\"top-container\"\n\t[ngClass]=\"{ 'top-container-scroll': repositoryLength > 1 }\"\n\tfxLayout=\"column\"\n\tfxLayoutAlign=\"start start\"\n\tfxLayoutGap=\"16px\">\n\t<form\n\t\tclass=\"container\"\n\t\t[formGroup]=\"filterService.sourceTypeFormGroup\"\n\t\t[class.scroll-padding]=\"repositoryLength > 1\"\n\t\tfxLayout=\"column\"\n\t\tfxLayoutAlign=\"start start\"\n\t\tfxLayoutGap=\"8px\">\n\t\t<!-- Internet Source -->\n\t\t<ng-container>\n\t\t\t<cr-mat-slide-filter-result\n\t\t\t\tclass=\"mat-slide-filter-result\"\n\t\t\t\t[formControlName]=\"eFilterResultForm.fcInternet\"\n\t\t\t\t[title]=\"INTERNET_SOURCE\"\n\t\t\t\t[total]=\"totalSourceType.totalInternet\">\n\t\t\t\t<mat-slide-logo>\n\t\t\t\t\t<div class=\"source-type-icon-container\" fxLayout=\"column\" fxLayoutAlign=\"center center\">\n\t\t\t\t\t\t<mat-icon>language</mat-icon>\n\t\t\t\t\t</div>\n\t\t\t\t</mat-slide-logo>\n\t\t\t</cr-mat-slide-filter-result>\n\t\t</ng-container>\n\t\t<!-- Internal Database -->\n\t\t<ng-container>\n\t\t\t<cr-mat-slide-filter-result\n\t\t\t\tclass=\"mat-slide-filter-result\"\n\t\t\t\t[formControlName]=\"eFilterResultForm.fcInternalDatabase\"\n\t\t\t\t[title]=\"IINTERNAL_DATABASE\"\n\t\t\t\t[total]=\"totalSourceType.totalInternalDatabase\">\n\t\t\t\t<mat-slide-logo>\n\t\t\t\t\t<div class=\"source-type-icon-container\" fxLayout=\"column\" fxLayoutAlign=\"center center\">\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\tclass=\"internal-database-icon\"\n\t\t\t\t\t\t\twidth=\"17\"\n\t\t\t\t\t\t\theight=\"22\"\n\t\t\t\t\t\t\tviewBox=\"0 0 17 22\"\n\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\td=\"M13.8584 2.77719C13.8584 4.08999 10.8904 5.15399 7.2304 5.15399C3.5704 5.15399 0.602398 4.08999 0.602398 2.77719C0.602398 1.46439 3.5696 0.40039 7.2304 0.40039C10.8912 0.40039 13.8584 1.46439 13.8584 2.77719ZM13.7608 3.87879C13.8248 3.99782 13.8583 4.13085 13.8584 4.26599V8.15399C13.8584 9.28039 10.8848 10.2004 7.2304 10.2004C3.576 10.2004 0.602398 9.28199 0.602398 8.15399V4.26599C0.602436 4.13125 0.636267 3.99867 0.700798 3.88039C1.2608 5.01799 4.0048 5.84279 7.2304 5.84279C10.456 5.84279 13.2032 5.01719 13.7592 3.87879H13.7608ZM2.5728 7.53079C2.56413 7.44405 2.53047 7.36168 2.4759 7.29369C2.42134 7.2257 2.34822 7.175 2.26541 7.14776C2.1826 7.12051 2.09366 7.11788 2.00938 7.14019C1.92511 7.16249 1.84912 7.20878 1.79063 7.27343C1.73215 7.33807 1.69368 7.41831 1.6799 7.50439C1.66611 7.59047 1.67761 7.6787 1.71299 7.75838C1.74837 7.83805 1.80611 7.90575 1.87921 7.95325C1.95231 8.00075 2.03762 8.02602 2.1248 8.02599C2.2496 8.01916 2.36664 7.96328 2.45041 7.87052C2.53418 7.77775 2.57869 7.65564 2.5728 7.53079ZM13.7608 9.02839C13.8248 9.14742 13.8583 9.28045 13.8584 9.41559L13.8584 13.3036C13.8584 14.4316 10.8848 15.35 7.2304 15.35C3.576 15.35 0.602398 14.4316 0.602398 13.3036L0.602398 9.41559C0.602436 9.28085 0.636267 9.14827 0.700798 9.02999C1.2608 10.1676 4.0048 10.9924 7.2304 10.9924C10.456 10.9924 13.2032 10.166 13.7592 9.02839H13.7608ZM2.572 12.6796C2.56333 12.5928 2.52967 12.5105 2.4751 12.4425C2.42054 12.3745 2.34742 12.3238 2.26461 12.2966C2.1818 12.2693 2.09286 12.2667 2.00858 12.289C1.92431 12.3113 1.84832 12.3576 1.78983 12.4222C1.73135 12.4869 1.69288 12.5671 1.6791 12.6532C1.66531 12.7393 1.67681 12.8275 1.71219 12.9072C1.74757 12.9869 1.80531 13.0545 1.87841 13.1021C1.95151 13.1496 2.03682 13.1748 2.124 13.1748C2.24894 13.1682 2.36619 13.1124 2.45013 13.0196C2.53407 12.9268 2.57788 12.8046 2.572 12.6796ZM13.7608 14.0804C13.8245 14.1989 13.8581 14.3314 13.8584 14.466L13.8584 18.354C13.8584 19.482 10.8848 20.4004 7.2304 20.4004C3.576 20.4004 0.602398 19.482 0.602398 18.354V14.466C0.602195 14.3312 0.636042 14.1986 0.700798 14.0804C1.2608 15.218 4.0048 16.0428 7.2304 16.0428C10.456 16.0428 13.2032 15.2172 13.7592 14.0804H13.7608ZM2.572 17.7308C2.5785 17.6681 2.57176 17.6047 2.5522 17.5447C2.53265 17.4848 2.50073 17.4296 2.45849 17.3827C2.41626 17.3359 2.36467 17.2985 2.30704 17.2728C2.24942 17.2472 2.18706 17.234 2.124 17.234C2.06093 17.234 1.99857 17.2472 1.94095 17.2728C1.88333 17.2985 1.83174 17.3359 1.7895 17.3827C1.74727 17.4296 1.71535 17.4848 1.69579 17.5447C1.67624 17.6047 1.6695 17.6681 1.676 17.7308C1.6695 17.7935 1.67624 17.8569 1.69579 17.9169C1.71535 17.9768 1.74727 18.032 1.7895 18.0788C1.83174 18.1257 1.88333 18.1631 1.94095 18.1888C1.99857 18.2144 2.06093 18.2276 2.124 18.2276C2.18706 18.2276 2.24942 18.2144 2.30704 18.1888C2.36467 18.1631 2.41626 18.1257 2.45849 18.0788C2.50073 18.032 2.53265 17.9768 2.5522 17.9169C2.57176 17.8569 2.5785 17.7935 2.572 17.7308Z\"\n\t\t\t\t\t\t\t\tfill=\"#3F9AF5\" />\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\td=\"M16.358 20.1885C17.9652 18.1424 17.6915 15.2448 15.6962 13.5372C13.5368 11.6653 10.1284 12.1681 8.58089 14.5827C6.71 17.4553 8.38186 21.2888 11.7057 21.9061C13.4074 22.2696 15.2932 21.5576 16.363 20.1885H16.358Z\"\n\t\t\t\t\t\t\t\tfill=\"#FBFFFF\" />\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\td=\"M17.3882 19.6885H17.2787C18.429 17.5257 17.9692 14.8253 16.0225 13.1583C13.631 11.0866 9.87147 11.6443 8.16091 14.3114C6.09755 17.4818 7.9397 21.7106 11.6078 22.3965C13.5002 22.7978 15.5742 22.0102 16.757 20.4964L17.3882 19.6885ZM15.2808 19.0944L15.2808 19.0944L15.2777 19.0988C14.6768 19.9509 13.7076 20.4851 12.6013 20.4851L12.5986 20.4851C10.2392 20.498 8.62123 17.9763 9.60659 15.8388C9.86246 15.2919 10.2521 14.8105 10.7391 14.5024L10.7506 14.4951L10.7617 14.4872C12.0914 13.5405 14.063 13.8547 15.0726 15.0713L15.0726 15.0713L15.0783 15.078C16.0653 16.2258 16.1378 17.9069 15.2808 19.0944Z\"\n\t\t\t\t\t\t\t\tfill=\"#3F9AF5\"\n\t\t\t\t\t\t\t\tstroke=\"#FBFFFF\" />\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\td=\"M12.6716 19.8856C11.149 19.9006 9.915 18.6609 9.92992 17.1474C9.91002 15.6389 11.144 14.3993 12.6566 14.4142C13.4577 14.4092 14.0847 14.6631 14.632 15.1809L13.9304 15.8829C13.607 15.5294 13.1642 15.3751 12.6566 15.3751C11.6466 15.3601 10.9699 16.1567 10.9898 17.1524C10.9599 18.1382 11.6515 18.9497 12.6616 18.9297C13.199 18.9347 13.617 18.7655 13.9653 18.407L14.6669 19.109C14.1195 19.6168 13.4528 19.9055 12.6716 19.8956V19.8856Z\"\n\t\t\t\t\t\t\t\tfill=\"#0B163E\" />\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</div>\n\t\t\t\t</mat-slide-logo>\n\t\t\t</cr-mat-slide-filter-result>\n\n\t\t\t<div class=\"internal-database-checkboxes-container\">\n\t\t\t\t<mat-checkbox [formControlName]=\"eFilterResultForm.fcYourResults\">\n\t\t\t\t\t<div class=\"checkbox-content-container\">\n\t\t\t\t\t\t<ng-container [ngSwitch]=\"platformType\">\n\t\t\t\t\t\t\t<ng-container *ngSwitchCase=\"ePlatformType.APP\">\n\t\t\t\t\t\t\t\t<span class=\"title\" i18n>Your Results</span>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngSwitchCase=\"ePlatformType.LMS\">\n\t\t\t\t\t\t\t\t<span class=\"title\" i18n>Your organization's results</span>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngSwitchDefault></ng-container>\n\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t<span class=\"total\" web-report-title-font>({{ totalSourceType.totalYourFiles }})</span>\n\t\t\t\t\t\t<mat-icon\n\t\t\t\t\t\t\tmatTooltip=\"Results from files submitted by you or your organization. Content will likely be available to view.\"\n\t\t\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t\t\t\ti18n-matTooltip\n\t\t\t\t\t\t\ttabindex=\"0\">\n\t\t\t\t\t\t\tinfo_outline\n\t\t\t\t\t\t</mat-icon>\n\t\t\t\t\t</div>\n\t\t\t\t</mat-checkbox>\n\t\t\t\t<mat-checkbox [formControlName]=\"eFilterResultForm.fcOthersResults\">\n\t\t\t\t\t<div class=\"checkbox-content-container\">\n\t\t\t\t\t\t<ng-container [ngSwitch]=\"platformType\">\n\t\t\t\t\t\t\t<ng-container *ngSwitchCase=\"ePlatformType.APP\">\n\t\t\t\t\t\t\t\t<span class=\"title\" i18n>Others' Results</span>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngSwitchCase=\"ePlatformType.LMS\">\n\t\t\t\t\t\t\t\t<span class=\"title\" i18n>All other results</span>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngSwitchDefault></ng-container>\n\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t<span class=\"total\" web-report-title-font>({{ totalSourceType.totalOthersFiles }})</span>\n\t\t\t\t\t\t<mat-icon\n\t\t\t\t\t\t\tmatTooltip=\"Results from files submitted by those outside you or your organization. You will receive a match alert; however, the content will be masked for privacy. \"\n\t\t\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t\t\t\ti18n-matTooltip\n\t\t\t\t\t\t\ttabindex=\"0\">\n\t\t\t\t\t\t\tinfo_outline\n\t\t\t\t\t\t</mat-icon>\n\t\t\t\t\t</div>\n\t\t\t\t</mat-checkbox>\n\t\t\t</div>\n\t\t</ng-container>\n\t\t<!-- Batch -->\n\t\t<ng-container>\n\t\t\t<cr-mat-slide-filter-result\n\t\t\t\t*ngIf=\"platformType === ePlatformType.APP\"\n\t\t\t\t[formControlName]=\"eFilterResultForm.fcBatch\"\n\t\t\t\tclass=\"mat-slide-filter-result\"\n\t\t\t\t[title]=\"THIS_BACTCH\"\n\t\t\t\t[total]=\"totalSourceType.totalbatch\">\n\t\t\t\t<mat-slide-logo>\n\t\t\t\t\t<div class=\"source-type-icon-container\" fxLayout=\"column\" fxLayoutAlign=\"center center\">\n\t\t\t\t\t\t<mat-icon fontSet=\"material-icons-round\">compare_arrows</mat-icon>\n\t\t\t\t\t</div>\n\t\t\t\t</mat-slide-logo>\n\t\t\t</cr-mat-slide-filter-result>\n\t\t</ng-container>\n\t\t<!-- Repositories -->\n\t\t<ng-container *ngIf=\"repositoryLength\">\n\t\t\t<div\n\t\t\t\t[formGroup]=\"repositoriesForm\"\n\t\t\t\t*ngFor=\"let item of totalSourceType.repository\"\n\t\t\t\tclass=\"repository-container\"\n\t\t\t\tfxLayout=\"column\"\n\t\t\t\tfxLayoutAlign=\"start start\"\n\t\t\t\tfxLayoutGap=\"8px\">\n\t\t\t\t<cr-mat-slide-filter-result\n\t\t\t\t\t[formControlName]=\"item.id\"\n\t\t\t\t\tclass=\"mat-slide-filter-result\"\n\t\t\t\t\t[title]=\"item.title\"\n\t\t\t\t\t[total]=\"item.totalResults\">\n\t\t\t\t\t<mat-slide-logo>\n\t\t\t\t\t\t<div class=\"source-type-icon-container\" fxLayout=\"column\" fxLayoutAlign=\"center center\">\n\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\tclass=\"title-img\"\n\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\twidth=\"11\"\n\t\t\t\t\t\t\t\theight=\"16\"\n\t\t\t\t\t\t\t\tviewBox=\"0 0 11 16\"\n\t\t\t\t\t\t\t\tfill=\"none\">\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\td=\"M10.1426 2.58338C10.1426 3.56798 7.91658 4.36598 5.17158 4.36598C2.42658 4.36598 0.200578 3.56798 0.200578 2.58338C0.200578 1.59878 2.42598 0.80078 5.17158 0.80078C7.91718 0.80078 10.1426 1.59878 10.1426 2.58338ZM10.0694 3.40958C10.1174 3.49885 10.1425 3.59862 10.1426 3.69998V6.61598C10.1426 7.46078 7.91238 8.15078 5.17158 8.15078C2.43078 8.15078 0.200578 7.46198 0.200578 6.61598V3.69998C0.200606 3.59893 0.22598 3.49949 0.274378 3.41078C0.694378 4.26398 2.75238 4.88258 5.17158 4.88258C7.59078 4.88258 9.65118 4.26338 10.0682 3.40958H10.0694ZM1.67838 6.14858C1.67187 6.08352 1.64663 6.02175 1.60571 5.97075C1.56478 5.91976 1.50994 5.88174 1.44783 5.8613C1.38573 5.84087 1.31902 5.8389 1.25582 5.85563C1.19261 5.87236 1.13562 5.90707 1.09175 5.95556C1.04789 6.00404 1.01904 6.06422 1.0087 6.12878C0.998364 6.19334 1.00699 6.25951 1.03352 6.31927C1.06005 6.37903 1.10336 6.4298 1.15819 6.46543C1.21301 6.50105 1.27699 6.52001 1.34238 6.51998C1.43598 6.51486 1.52376 6.47295 1.58659 6.40337C1.64942 6.3338 1.68279 6.24222 1.67838 6.14858ZM10.0694 7.27178C10.1174 7.36105 10.1425 7.46082 10.1426 7.56218L10.1426 10.4782C10.1426 11.3242 7.91238 12.013 5.17158 12.013C2.43078 12.013 0.200578 11.3242 0.200578 10.4782L0.200578 7.56218C0.200606 7.46113 0.22598 7.36169 0.274378 7.27298C0.694378 8.12618 2.75238 8.74478 5.17158 8.74478C7.59078 8.74478 9.65118 8.12498 10.0682 7.27178H10.0694ZM1.67778 10.0102C1.67127 9.94512 1.64603 9.88335 1.60511 9.83236C1.56418 9.78136 1.50934 9.74334 1.44723 9.72291C1.38513 9.70247 1.31842 9.7005 1.25522 9.71723C1.19201 9.73396 1.13502 9.76867 1.09115 9.81716C1.04729 9.86564 1.01844 9.92582 1.0081 9.99038C0.997765 10.0549 1.00639 10.1211 1.03292 10.1809C1.05946 10.2406 1.10276 10.2914 1.15759 10.327C1.21241 10.3627 1.27639 10.3816 1.34178 10.3816C1.43548 10.3766 1.52342 10.3348 1.58637 10.2652C1.64933 10.1956 1.68219 10.1039 1.67778 10.0102ZM10.0694 11.0608C10.1172 11.1497 10.1423 11.249 10.1426 11.35V14.266C10.1426 15.112 7.91238 15.8008 5.17158 15.8008C2.43078 15.8008 0.200578 15.112 0.200578 14.266V11.35C0.200425 11.2489 0.22581 11.1494 0.274378 11.0608C0.694378 11.914 2.75238 12.5326 5.17158 12.5326C7.59078 12.5326 9.65118 11.9134 10.0682 11.0608H10.0694ZM1.67778 13.7986C1.68265 13.7515 1.6776 13.704 1.66293 13.659C1.64827 13.6141 1.62432 13.5727 1.59265 13.5375C1.56098 13.5024 1.52228 13.4743 1.47906 13.4551C1.43585 13.4359 1.38908 13.426 1.34178 13.426C1.29448 13.426 1.24771 13.4359 1.20449 13.4551C1.16128 13.4743 1.12258 13.5024 1.09091 13.5375C1.05923 13.5727 1.03529 13.6141 1.02062 13.659C1.00596 13.704 1.0009 13.7515 1.00578 13.7986C1.0009 13.8456 1.00596 13.8932 1.02062 13.9381C1.03529 13.9831 1.05923 14.0245 1.09091 14.0596C1.12258 14.0947 1.16128 14.1228 1.20449 14.1421C1.24771 14.1613 1.29448 14.1712 1.34178 14.1712C1.38908 14.1712 1.43585 14.1613 1.47906 14.1421C1.52228 14.1228 1.56098 14.0947 1.59265 14.0596C1.62432 14.0245 1.64827 13.9831 1.66293 13.9381C1.6776 13.8932 1.68265 13.8456 1.67778 13.7986Z\"\n\t\t\t\t\t\t\t\t\tfill=\"#3F9AF5\" />\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</mat-slide-logo>\n\t\t\t\t</cr-mat-slide-filter-result>\n\t\t\t</div>\n\t\t</ng-container>\n\t\t<!-- AI Source Match -->\n\t\t<ng-container>\n\t\t\t<cr-mat-slide-filter-result\n\t\t\t\t*ngIf=\"reportDataSvc.isAiSourceMatchEnabled()\"\n\t\t\t\t[formControlName]=\"eFilterResultForm.fgAISourceMatch\"\n\t\t\t\tclass=\"mat-slide-filter-result\"\n\t\t\t\t[title]=\"AI_SOURCE_MATCH\"\n\t\t\t\t[tooltipText]=\"AI_SOURCE_MATCH_TOOLTIP\"\n\t\t\t\t[total]=\"totalSourceType.totalAISourceMatch\">\n\t\t\t\t<mat-slide-logo>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"source-type-icon-container ai-source-match-filter-slide\"\n\t\t\t\t\t\tfxLayout=\"column\"\n\t\t\t\t\t\tfxLayoutAlign=\"center center\">\n\t\t\t\t\t\t<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\td=\"M9 0.5C13.6944 0.5 17.5 4.30558 17.5 9C17.5 13.6944 13.6944 17.5 9 17.5C4.30558 17.5 0.5 13.6944 0.5 9C0.5 4.30558 4.30558 0.5 9 0.5Z\"\n\t\t\t\t\t\t\t\tfill=\"#FBFFFF\" />\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\td=\"M9 0.5C13.6944 0.5 17.5 4.30558 17.5 9C17.5 13.6944 13.6944 17.5 9 17.5C4.30558 17.5 0.5 13.6944 0.5 9C0.5 4.30558 4.30558 0.5 9 0.5Z\"\n\t\t\t\t\t\t\t\tfill=\"url(#paint0_linear_7562_15522)\"\n\t\t\t\t\t\t\t\tfill-opacity=\"0.6\" />\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\td=\"M9 0.5C13.6944 0.5 17.5 4.30558 17.5 9C17.5 13.6944 13.6944 17.5 9 17.5C4.30558 17.5 0.5 13.6944 0.5 9C0.5 4.30558 4.30558 0.5 9 0.5Z\"\n\t\t\t\t\t\t\t\tstroke=\"#FD7366\" />\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\tfill-rule=\"evenodd\"\n\t\t\t\t\t\t\t\tclip-rule=\"evenodd\"\n\t\t\t\t\t\t\t\td=\"M15.7045 8.22541C14.5389 5.65858 11.9024 4 8.98764 4C7.50589 4 6.07598 4.42467 4.85269 5.22793C3.62939 6.0312 2.69811 7.15701 2.15982 8.48345L2.00195 8.8724L2.15982 9.26129C2.69811 10.5878 3.62926 11.7136 4.85269 12.5168C6.07611 13.3201 7.50589 13.7448 8.98764 13.7448C9.96358 13.7448 10.9083 13.5588 11.7771 13.2151L11.0242 12.4406C10.423 12.7561 9.73333 12.9354 9.00007 12.9354C6.66464 12.9354 4.7714 11.1164 4.7714 8.8724C4.7714 6.62845 6.66464 4.80937 9.00007 4.80937C11.3355 4.80937 13.2288 6.62845 13.2288 8.8724C13.2288 9.67518 12.9865 10.4236 12.5683 11.0538L13.6334 12.1494C14.5135 11.4565 15.2306 10.563 15.7045 9.51936L15.9982 8.8724L15.7045 8.22541ZM13.2203 12.4518L12.2584 11.4624C12.028 11.7296 11.7628 11.968 11.4694 12.1711L12.273 12.9978C12.6028 12.8389 12.9195 12.6563 13.2203 12.4518Z\"\n\t\t\t\t\t\t\t\tfill=\"#FD7366\" />\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\td=\"M11.2424 11.3478C9.92292 12.6356 7.80399 12.6078 6.51852 11.2856C5.23305 9.96333 5.26083 7.84049 6.58029 6.55274C7.89976 5.265 10.0187 5.29282 11.3041 6.61503C12.5897 7.93724 12.5618 10.0601 11.2424 11.3478ZM6.98644 6.9705C5.89702 8.03375 5.87409 9.787 6.93549 10.8786C7.99689 11.9703 9.74681 11.9934 10.8362 10.9301C11.9256 9.86683 11.9486 8.1136 10.8872 7.02195C9.82578 5.93031 8.07586 5.90725 6.98644 6.9705Z\"\n\t\t\t\t\t\t\t\tfill=\"#FBFFFF\" />\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\td=\"M11.2424 11.3478C9.92292 12.6356 7.80399 12.6078 6.51852 11.2856C5.23305 9.96333 5.26083 7.84049 6.58029 6.55274C7.89976 5.265 10.0187 5.29282 11.3041 6.61503C12.5897 7.93724 12.5618 10.0601 11.2424 11.3478ZM6.98644 6.9705C5.89702 8.03375 5.87409 9.787 6.93549 10.8786C7.99689 11.9703 9.74681 11.9934 10.8362 10.9301C11.9256 9.86683 11.9486 8.1136 10.8872 7.02195C9.82578 5.93031 8.07586 5.90725 6.98644 6.9705Z\"\n\t\t\t\t\t\t\t\tfill=\"url(#paint1_linear_7562_15522)\" />\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\tfill-rule=\"evenodd\"\n\t\t\t\t\t\t\t\tclip-rule=\"evenodd\"\n\t\t\t\t\t\t\t\td=\"M7.20914 9.68222C7.43576 10.2551 7.92057 10.6974 8.51976 10.8648L8.71653 9.7686C8.53966 9.68683 8.39549 9.55345 8.2994 9.39043L7.20914 9.68222ZM7.08013 9.14939L7.94078 8.91905L7.08162 8.73693C7.07415 8.80706 7.07031 8.87827 7.07031 8.95038C7.07031 9.01755 7.07364 9.08394 7.08013 9.14939ZM10.3093 7.41177C9.96733 7.13136 9.53019 6.96311 9.05383 6.96311C8.22273 6.96311 7.51101 7.47523 7.2159 8.20168L8.29296 8.42996C8.48896 8.0814 8.88824 7.8745 9.3017 7.94324C9.43116 7.96475 9.54987 8.01126 9.65381 8.07705L10.3093 7.41177ZM10.6089 7.71657L9.95386 8.38136C10.072 8.57371 10.1224 8.80927 10.0791 9.05095C10.0031 9.47388 9.66316 9.78645 9.26001 9.84629L9.06411 10.9376C10.1548 10.9321 11.0374 10.0445 11.0374 8.95038C11.0374 8.4842 10.8771 8.05551 10.6089 7.71657Z\"\n\t\t\t\t\t\t\t\tfill=\"#A188FF\" />\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\tfill-rule=\"evenodd\"\n\t\t\t\t\t\t\t\tclip-rule=\"evenodd\"\n\t\t\t\t\t\t\t\td=\"M11.4688 12.1711L13.0905 13.8393C13.1892 13.941 13.3214 13.9979 13.4629 14H13.4701C13.6089 14 13.7397 13.9465 13.8392 13.8494C14.0482 13.6456 14.0527 13.3089 13.8491 13.0993L12.2577 11.4624C12.0274 11.7296 11.7622 11.968 11.4688 12.1711Z\"\n\t\t\t\t\t\t\t\tfill=\"#FBFFFF\" />\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\tfill-rule=\"evenodd\"\n\t\t\t\t\t\t\t\tclip-rule=\"evenodd\"\n\t\t\t\t\t\t\t\td=\"M11.4688 12.1711L13.0905 13.8393C13.1892 13.941 13.3214 13.9979 13.4629 14H13.4701C13.6089 14 13.7397 13.9465 13.8392 13.8494C14.0482 13.6456 14.0527 13.3089 13.8491 13.0993L12.2577 11.4624C12.0274 11.7296 11.7622 11.968 11.4688 12.1711Z\"\n\t\t\t\t\t\t\t\tfill=\"url(#paint2_linear_7562_15522)\" />\n\t\t\t\t\t\t\t<defs>\n\t\t\t\t\t\t\t\t<linearGradient\n\t\t\t\t\t\t\t\t\tid=\"paint0_linear_7562_15522\"\n\t\t\t\t\t\t\t\t\tx1=\"7.51007\"\n\t\t\t\t\t\t\t\t\ty1=\"0.174074\"\n\t\t\t\t\t\t\t\t\tx2=\"6.28097\"\n\t\t\t\t\t\t\t\t\ty2=\"20.1472\"\n\t\t\t\t\t\t\t\t\tgradientUnits=\"userSpaceOnUse\">\n\t\t\t\t\t\t\t\t\t<stop stop-color=\"#F8EAFF\" />\n\t\t\t\t\t\t\t\t\t<stop offset=\"1\" stop-color=\"#D7C5FF\" />\n\t\t\t\t\t\t\t\t</linearGradient>\n\t\t\t\t\t\t\t\t<linearGradient\n\t\t\t\t\t\t\t\t\tid=\"paint1_linear_7562_15522\"\n\t\t\t\t\t\t\t\t\tx1=\"5.57227\"\n\t\t\t\t\t\t\t\t\ty1=\"9.45519\"\n\t\t\t\t\t\t\t\t\tx2=\"11.8153\"\n\t\t\t\t\t\t\t\t\ty2=\"11.1034\"\n\t\t\t\t\t\t\t\t\tgradientUnits=\"userSpaceOnUse\">\n\t\t\t\t\t\t\t\t\t<stop stop-color=\"#BCA6FF\" />\n\t\t\t\t\t\t\t\t\t<stop offset=\"1\" stop-color=\"#9345F9\" />\n\t\t\t\t\t\t\t\t</linearGradient>\n\t\t\t\t\t\t\t\t<linearGradient\n\t\t\t\t\t\t\t\t\tid=\"paint2_linear_7562_15522\"\n\t\t\t\t\t\t\t\t\tx1=\"11.4687\"\n\t\t\t\t\t\t\t\t\ty1=\"12.9227\"\n\t\t\t\t\t\t\t\t\tx2=\"13.8344\"\n\t\t\t\t\t\t\t\t\ty2=\"13.5466\"\n\t\t\t\t\t\t\t\t\tgradientUnits=\"userSpaceOnUse\">\n\t\t\t\t\t\t\t\t\t<stop stop-color=\"#BCA6FF\" />\n\t\t\t\t\t\t\t\t\t<stop offset=\"1\" stop-color=\"#9345F9\" />\n\t\t\t\t\t\t\t\t</linearGradient>\n\t\t\t\t\t\t\t</defs>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</div>\n\t\t\t\t</mat-slide-logo>\n\t\t\t</cr-mat-slide-filter-result>\n\t\t</ng-container>\n\t</form>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { EFilterResultForm } from '../../models/filter-result-dailog.enum';\nimport { FilterResultDailogService } from '../../services/filter-result-dailog.service';\n\n@Component({\n\tselector: 'cr-match-type-filter-result',\n\ttemplateUrl: './match-type-filter-result.component.html',\n\tstyleUrls: ['./match-type-filter-result.component.scss'],\n\tstandalone: false,\n})\nexport class MatchTypeFilterResultComponent implements OnInit {\n\t/**\n\t * @Input {number} Total number of results identified as identical matches\n\t */\n\t@Input() identicalTotal: number = 0;\n\n\t/**\n\t * @Input {number} Total number of results with minor changes from the original content\n\t */\n\t@Input() minorChangesTotal: number = 0;\n\n\t/**\n\t * @Input {number} Total number of results identified as paraphrased content\n\t */\n\t@Input() paraphrasedTotal: number = 0;\n\n\teFilterResultForm = EFilterResultForm;\n\n\tIDENTICAL_TEXT = $localize`Identical Text`;\n\tMINOR_CHANGES = $localize`Minor Changes`;\n\tPARAPHRASED = $localize`Paraphrased`;\n\tconstructor(public filterService: FilterResultDailogService) {}\n\tngOnInit() {}\n}\n","<div\n\t[formGroup]=\"filterService.matchTypeFormGroup\"\n\tclass=\"match-type-container\"\n\tfxLayout=\"column\"\n\tfxLayoutAlign=\"start start\"\n\tfxLayoutGap=\"8px\">\n\t<!-- identical -->\n\t<cr-mat-slide-filter-result\n\t\t[formControlName]=\"eFilterResultForm.fcIdenticalText\"\n\t\t[title]=\"IDENTICAL_TEXT\"\n\t\t[total]=\"identicalTotal\">\n\t\t<mat-slide-logo>\n\t\t\t<span class=\"dot identical-text\"></span>\n\t\t</mat-slide-logo>\n\t</cr-mat-slide-filter-result>\n\n\t<!-- minor -->\n\t<cr-mat-slide-filter-result\n\t\t[formControlName]=\"eFilterResultForm.fcMinorChanges\"\n\t\t[title]=\"MINOR_CHANGES\"\n\t\t[total]=\"minorChangesTotal\">\n\t\t<mat-slide-logo>\n\t\t\t<span class=\"dot minor-changes\"></span>\n\t\t</mat-slide-logo>\n\t</cr-mat-slide-filter-result>\n\n\t<!-- Paraphrased -->\n\t<cr-mat-slide-filter-result\n\t\t[formControlName]=\"eFilterResultForm.fcParaphrased\"\n\t\t[title]=\"PARAPHRASED\"\n\t\t[total]=\"paraphrasedTotal\">\n\t\t<mat-slide-logo>\n\t\t\t<span class=\"dot paraphrased\"></span>\n\t\t</mat-slide-logo>\n\t</cr-mat-slide-filter-result>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { EFilterResultForm } from '../../models/filter-result-dailog.enum';\nimport { FilterResultDailogService } from '../../services/filter-result-dailog.service';\n\n@Component({\n\tselector: 'cr-general-filter-result',\n\ttemplateUrl: './general-filter-result.component.html',\n\tstyleUrls: ['./general-filter-result.component.scss'],\n\tstandalone: false,\n})\nexport class GeneralFilterResultComponent implements OnInit {\n\t/**\n\t * @Input {number} Total number of alerts related to the report or content\n\t */\n\t@Input() totalAlerts: number = 0;\n\n\t/**\n\t * @Input {number} Total number of results detected from the same author\n\t */\n\t@Input() totalSameAuthor: number = 0;\n\n\teFilterResultForm = EFilterResultForm;\n\n\tSHOW_ONLY_TOP = $localize`Show only the top 100 results`;\n\tALERTS = $localize`Alerts`;\n\tSAME_AUTH_SUB = $localize`Same author submissions`;\n\n\tconstructor(public filterService: FilterResultDailogService) {}\n\tngOnInit() {}\n}\n","<div\n\t[formGroup]=\"filterService.generalFiltersFormGroup\"\n\tclass=\"container\"\n\tfxLayout=\"column\"\n\tfxLayoutAlign=\"start start\"\n\tfxLayoutGap=\"8px\">\n\t<!-- Top result -->\n\t<cr-mat-slide-filter-result\n\t\t[formControlName]=\"eFilterResultForm.fcTopResult\"\n\t\t[title]=\"SHOW_ONLY_TOP\"></cr-mat-slide-filter-result>\n\t<!-- Alerts -->\n\t<cr-mat-slide-filter-result\n\t\t[formControlName]=\"eFilterResultForm.fcAlerts\"\n\t\t[title]=\"ALERTS\"\n\t\t[total]=\"totalAlerts\"></cr-mat-slide-filter-result>\n\t<!-- Author submissions -->\n\t<cr-mat-slide-filter-result\n\t\t[formControlName]=\"eFilterResultForm.fcAuthorSubmissions\"\n\t\t[title]=\"SAME_AUTH_SUB\"\n\t\t[total]=\"totalSameAuthor\"></cr-mat-slide-filter-result>\n</div>\n","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { ITagItem } from './models/included-tags-filter-result.models';\nimport { FilterResultDailogService } from '../../services/filter-result-dailog.service';\nimport { UntypedFormControl } from '@angular/forms';\nimport { map, startWith } from 'rxjs/operators';\nimport { untilDestroy } from '../../../../utils/until-destroy';\nimport { Observable } from 'rxjs';\n\n@Component({\n\tselector: 'cr-included-tags-filter-result',\n\ttemplateUrl: './included-tags-filter-result.component.html',\n\tstyleUrls: ['./included-tags-filter-result.component.scss'],\n\tstandalone: false,\n})\nexport class IncludedTagsFilterResultComponent implements OnInit, OnChanges {\n\t/**\n\t * @Input {ITagItem[]} List of all tag items available for display or selection\n\t */\n\t@Input() allTagItem: ITagItem[];\n\n\tincludedTagsForm: UntypedFormControl;\n\tfilteredTagList: Observable<ITagItem[]>;\n\tsearchTagControl = new UntypedFormControl('');\n\tshowMoreMenu: boolean = false;\n\n\tget includedTagsFormValue() {\n\t\treturn this.includedTagsForm.value as ITagItem[];\n\t}\n\n\tget selectedList() {\n\t\treturn this.allTagItem.filter(item => item.selected).map(item => item.title);\n\t}\n\n\tget searchValue() {\n\t\treturn this.searchTagControl.value;\n\t}\n\n\tEXPEND_TOOLTIP = $localize`Expand`;\n\tCOLLAPSE_TOOLTIP = $localize`Collapse`;\n\n\tconstructor(private _filterService: FilterResultDailogService) {}\n\n\tngOnInit(): void {\n\t\tthis.isSearchInputDisabled();\n\t\tthis.includedTagsForm = this._filterService.includedTagsFormControl;\n\n\t\tthis.filteredTagList = this.searchTagControl.valueChanges.pipe(\n\t\t\tuntilDestroy(this),\n\t\t\tstartWith(''),\n\t\t\tmap(value => this._filterTags(value || ''))\n\t\t);\n\t}\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif (changes['allTagItem'])\n\t\t\tthis.filteredTagList = this.searchTagControl.valueChanges.pipe(\n\t\t\t\tuntilDestroy(this),\n\t\t\t\tstartWith(''),\n\t\t\t\tmap(value => this._filterTags(value || ''))\n\t\t\t);\n\t}\n\n\tselectTag() {\n\t\tthis.includedTagsForm.setValue(this.allTagItem.filter(tag => tag.selected));\n\t\tthis.showMoreMenu = true;\n\t}\n\n\tprivate _filterTags(value: string) {\n\t\treturn this.allTagItem.filter(tag => tag.title.toLowerCase().includes(value.toLowerCase()));\n\t}\n\n\tclearSearch() {\n\t\tthis.searchTagControl.setValue('');\n\t}\n\n\tisSearchInputDisabled() {\n\t\tif (!this.allTagItem || this.allTagItem.length === 0) this.searchTagControl.disable();\n\t}\n\n\tngOnDestroy() {}\n}\n","<div class=\"contaienr\" fxLayout=\"column\" fxLayoutAlign=\"start start\" fxLayoutGap=\"4px\">\n\t<mat-form-field class=\"mat-input-no-bottom-padding with-label\" appearance=\"fill\">\n\t\t<div class=\"search-icon\" fxLayout=\"column\" fxLayoutAlign=\"center center\" matPrefix>\n\t\t\t<ng-container *ngIf=\"!searchValue; else clearSearchIcon\">\n\t\t\t\t<mat-icon>search</mat-icon>\n\t\t\t</ng-container>\n\t\t\t<ng-template #clearSearchIcon>\n\t\t\t\t<button\n\t\t\t\t\tmat-icon-button\n\t\t\t\t\taria-label=\"Clear search\"\n\t\t\t\t\ti18n-aria-label\n\t\t\t\t\tclass=\"clear-icon-button\"\n\t\t\t\t\t(click)=\"searchValue ? clearSearch() : ''\"\n\t\t\t\t\tmatTooltip=\"Clear\"\n\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t\ti18n-matTooltip>\n\t\t\t\t\t<mat-icon>close</mat-icon>\n\t\t\t\t</button>\n\t\t\t</ng-template>\n\t\t</div>\n\t\t<mat-label i18n>Search Tag</mat-label>\n\t\t<input\n\t\t\taria-label=\"Search Tag\"\n\t\t\ti18n-aria-label\n\t\t\t[formControl]=\"searchTagControl\"\n\t\t\tclass=\"included-tags-input\"\n\t\t\t[type]=\"'text'\"\n\t\t\tmatInput />\n\t</mat-form-field>\n\t<div\n\t\t*ngIf=\"selectedList.length != 0\"\n\t\tclass=\"mat-chip-container\"\n\t\tfxLayout=\"row\"\n\t\tfxLayoutAlign=\"start center\"\n\t\tfxLayoutGap=\"4px\">\n\t\t<button\n\t\t\t*ngIf=\"allTagItem && allTagItem.length > 0\"\n\t\t\tmat-icon-button\n\t\t\tclass=\"arrow-drop-button\"\n\t\t\t(click)=\"showMoreMenu = !showMoreMenu\"\n\t\t\t[matTooltip]=\"showMoreMenu ? COLLAPSE_TOOLTIP : EXPEND_TOOLTIP\"\n\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\trole=\"button\"\n\t\t\taria-label=\"Collapse or expand tags list\"\n\t\t\ti18n-aria-label\n\t\t\ti18n-matTooltip>\n\t\t\t<ng-container *ngIf=\"showMoreMenu; else showLessMenuIcon\">\n\t\t\t\t<mat-icon fontSet=\"material-icons-round\" role=\"button\" aria-label=\"Collapse tags list\" i18n-aria-label>\n\t\t\t\t\tarrow_drop_up\n\t\t\t\t</mat-icon>\n\t\t\t</ng-container>\n\t\t\t<ng-template #showLessMenuIcon>\n\t\t\t\t<mat-icon fontSet=\"material-icons-round\" role=\"button\" aria-label=\"Expand tags list\" i18n-aria-label>\n\t\t\t\t\tarrow_drop_down\n\t\t\t\t</mat-icon>\n\t\t\t</ng-template>\n\t\t</button>\n\t\t<mat-chip-listbox role=\"listbox\" aria-label=\"List of all the results tags\" i18n-aria-label>\n\t\t\t<ng-container *ngFor=\"let tag of selectedList; let idx = index\">\n\t\t\t\t<mat-chip-option class=\"selected-tag-mat-chip\" *ngIf=\"idx < 2\">\n\t\t\t\t\t{{ tag | decodeUri }}\n\t\t\t\t</mat-chip-option>\n\t\t\t</ng-container>\n\t\t</mat-chip-listbox>\n\t\t<div class=\"total-select-tags\" *ngIf=\"selectedList.length > 2\">\n\t\t\t<span>+{{ selectedList.length - 2 }}</span>\n\t\t</div>\n\t</div>\n\t<div\n\t\t*ngIf=\"showMoreMenu || selectedList.length === 0\"\n\t\tclass=\"tag-list-container\"\n\t\tfxLayout=\"column\"\n\t\tfxLayoutAlign=\"start start\"\n\t\tfxLayoutGap=\"2px\">\n\t\t<div class=\"tag-list\" *ngFor=\"let item of filteredTagList | async\" fxLayout=\"row\" fxLayoutAlign=\"start center\">\n\t\t\t<mat-checkbox\n\t\t\t\t[checked]=\"item.selected == true\"\n\t\t\t\t[(ngModel)]=\"item.selected\"\n\t\t\t\t(change)=\"selectTag()\"\n\t\t\t\tclass=\"mat-checkbox-tag\">\n\t\t\t\t{{ item.title | decodeUri }}\n\t\t\t</mat-checkbox>\n\t\t</div>\n\t</div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { EFilterResultForm } from '../../models/filter-result-dailog.enum';\nimport { FilterResultDailogService } from '../../services/filter-result-dailog.service';\n\n@Component({\n\tselector: 'cr-meta-filter-result',\n\ttemplateUrl: './meta-filter-result.component.html',\n\tstyleUrls: ['./meta-filter-result.component.scss'],\n\tstandalone: false,\n})\nexport class MetaFilterResultComponent implements OnInit {\n\t/**\n\t * @Input {number} Minimum word limit filter applied to the results\n\t */\n\t@Input() minWordLimit: number;\n\n\t/**\n\t * @Input {number} Maximum word limit filter applied to the results\n\t */\n\t@Input() maxWordLimit: number;\n\n\t/**\n\t * @Input {string[]} List of publication dates available for the results\n\t */\n\t@Input() publicationDates: string[];\n\n\t/**\n\t * @Input {number} Total number of results that do not have a publication date\n\t */\n\t@Input() totalResultsWithoutDate: number;\n\n\teFilterResultForm = EFilterResultForm;\n\n\tRESULT_WORD_LIMIT = $localize`Minimum words per result:`;\n\tRESULT_PUBLISH_DATE = $localize`Publication date:`;\n\n\tconstructor(public filterService: FilterResultDailogService) {}\n\n\tget form(): UntypedFormGroup {\n\t\treturn this.filterService.resultsMetaFormGroup;\n\t}\n\n\tget wordLimitform(): UntypedFormGroup {\n\t\treturn this.filterService.resultsMetaFormGroup.get(EFilterResultForm.fgWordLimit) as UntypedFormGroup;\n\t}\n\n\tget publicationDateForm(): UntypedFormGroup {\n\t\treturn this.filterService.resultsMetaFormGroup.get(EFilterResultForm.fgPublicationDate) as UntypedFormGroup;\n\t}\n\n\tget publicationDate(): UntypedFormControl {\n\t\treturn this.publicationDateForm.get(EFilterResultForm.fcPublicationStartDate) as UntypedFormControl;\n\t}\n\n\tget wordLimitTotalWord() {\n\t\treturn this.wordLimitform.get(EFilterResultForm.fcWordLimitTotalWordlimt)?.value;\n\t}\n\n\tget wordLimitTotalWordFc() {\n\t\treturn this.wordLimitform.get(EFilterResultForm.fcWordLimitTotalWordlimt) as UntypedFormControl;\n\t}\n\n\tget maxSliderDates() {\n\t\treturn this.publicationDates?.length > 1 ? this.publicationDates?.length - 1 : 1;\n\t}\n\n\tget valueSliderDate() {\n\t\tif (this.publicationDates?.length == 1) return 1;\n\t\telse return this.publicationDates?.indexOf(this.publicationDateValue) ?? 0;\n\t}\n\n\tget publicationDateValue() {\n\t\tconst date = new Date(this.publicationDateForm.get(EFilterResultForm.fcPublicationStartDate)?.value);\n\t\tconst monthYear = date.toLocaleString('default', { month: 'long', year: 'numeric' });\n\t\treturn monthYear;\n\t}\n\n\tngOnInit(): void {\n\t\tif (\n\t\t\t!this.publicationDateForm.get(EFilterResultForm.fcPublicationStartDate)?.value &&\n\t\t\tthis.publicationDateForm.get(EFilterResultForm.fcPublicationEnabled)?.value == true\n\t\t) {\n\t\t\tthis.publicationDateForm\n\t\t\t\t.get(EFilterResultForm.fcPublicationStartDate)\n\t\t\t\t?.setValue(new Date(this.publicationDates[0]));\n\t\t}\n\t}\n\n\tgetFormGroup(eFilterResultForm: EFilterResultForm) {\n\t\treturn this.filterService.resultsMetaFormGroup.get(eFilterResultForm) as UntypedFormGroup;\n\t}\n\n\tgetEnabledValue(eFilterResultForm: EFilterResultForm) {\n\t\tswitch (eFilterResultForm) {\n\t\t\tcase EFilterResultForm.fcPublicationEnabled:\n\t\t\t\treturn this.publicationDateForm.get(EFilterResultForm.fcPublicationEnabled)?.value;\n\t\t\tcase EFilterResultForm.fcWordLimitEnabled:\n\t\t\t\treturn this.wordLimitform.get(EFilterResultForm.fcWordLimitEnabled)?.value;\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t}\n\t}\n\n\tchangeSliderDate($event: any) {\n\t\tthis.publicationDate?.setValue(new Date(this.publicationDates[$event.value]));\n\t}\n\n\tonPublicationEnabledChange(enabled: boolean) {\n\t\tif (!enabled) this.publicationDate?.setValue(null);\n\t\telse this.publicationDate?.setValue(new Date(this.publicationDates[0]));\n\t}\n\n\tonSliderChange(event: any) {\n\t\t// Check if the slider is at or near its maximum position (within one step)\n\t\tif (event.value >= this.maxWordLimit - 10 && event.value < this.maxWordLimit) {\n\t\t\tthis.wordLimitTotalWordFc.setValue(Number(this.maxWordLimit));\n\t\t} else {\n\t\t\tthis.wordLimitTotalWordFc.setValue(Number(event.value));\n\t\t}\n\t}\n}\n","<div\n\t[formGroup]=\"filterService.resultsMetaFormGroup\"\n\tclass=\"results-container\"\n\tfxLayout=\"column\"\n\tfxLayoutAlign=\"start start\"\n\tfxLayoutGap=\"16px\">\n\t<div\n\t\t[formGroupName]=\"eFilterResultForm.fgWordLimit\"\n\t\tclass=\"result-word-limit-container\"\n\t\tfxLayout=\"column\"\n\t\tfxLayoutAlign=\"start start\">\n\t\t<cr-mat-slide-filter-result\n\t\t\t[formControlName]=\"eFilterResultForm.fcWordLimitEnabled\"\n\t\t\t[title]=\"RESULT_WORD_LIMIT\"\n\t\t\t[disabled]=\"minWordLimit === maxWordLimit\"></cr-mat-slide-filter-result>\n\t\t<ng-container *ngIf=\"getEnabledValue(eFilterResultForm.fcWordLimitEnabled)\">\n\t\t\t<mat-slider\n\t\t\t\t[disableRipple]=\"true\"\n\t\t\t\tclass=\"mat-slider-container\"\n\t\t\t\taria-label=\"'This is a slider for the result filter word limit.\"\n\t\t\t\ti18n-aria-label\n\t\t\t\t[min]=\"minWordLimit\"\n\t\t\t\t[max]=\"maxWordLimit\"\n\t\t\t\t[disabled]=\"minWordLimit === maxWordLimit\"\n\t\t\t\t[step]=\"10\"\n\t\t\t\t#ngSlider>\n\t\t\t\t<input\n\t\t\t\t\tmatSliderThumb\n\t\t\t\t\t[formControlName]=\"eFilterResultForm.fcWordLimitTotalWordlimt\"\n\t\t\t\t\t(input)=\"onSliderChange({ source: ngSliderThumb, parent: ngSlider, value: ngSliderThumb.value })\"\n\t\t\t\t\t#ngSliderThumb=\"matSliderThumb\" />\n\t\t\t</mat-slider>\n\t\t\t<span class=\"limit-result\">\n\t\t\t\t{{ wordLimitTotalWord }} / {{ maxWordLimit }}\n\t\t\t\t<ng-container i18n>WORDS</ng-container>\n\t\t\t</span>\n\t\t</ng-container>\n\t</div>\n\t<mat-divider></mat-divider>\n\t<div\n\t\t[formGroupName]=\"eFilterResultForm.fgPublicationDate\"\n\t\tclass=\"result-publication-top-container\"\n\t\tfxLayout=\"column\"\n\t\tfxLayoutAlign=\"start start\"\n\t\tfxLayoutGap=\"4px\">\n\t\t<div class=\"result-publication-container\" fxLayout=\"column\" fxLayoutAlign=\"start start\">\n\t\t\t<cr-mat-slide-filter-result\n\t\t\t\t[formControlName]=\"eFilterResultForm.fcPublicationEnabled\"\n\t\t\t\t[title]=\"RESULT_PUBLISH_DATE\"\n\t\t\t\t[total]=\"publicationDates.length\"\n\t\t\t\t(ngModelChange)=\"onPublicationEnabledChange($event)\"></cr-mat-slide-filter-result>\n\t\t\t<ng-container *ngIf=\"getEnabledValue(eFilterResultForm.fcPublicationEnabled) && !!publicationDates?.length\">\n\t\t\t\t<mat-slider\n\t\t\t\t\tclass=\"mat-slider-container invert\"\n\t\t\t\t\taria-label=\"'This is a slider for the result publication date selection.\"\n\t\t\t\t\ti18n-aria-label\n\t\t\t\t\t[disabled]=\"publicationDates.length < 2\"\n\t\t\t\t\t[min]=\"0\"\n\t\t\t\t\t[max]=\"maxSliderDates\"\n\t\t\t\t\t#ngSlider>\n\t\t\t\t\t<input\n\t\t\t\t\t\tmatSliderThumb\n\t\t\t\t\t\t[value]=\"valueSliderDate\"\n\t\t\t\t\t\t(input)=\"changeSliderDate({ source: ngSliderThumb, parent: ngSlider, value: ngSliderThumb.value })\"\n\t\t\t\t\t\t#ngSliderThumb=\"matSliderThumb\" />\n\t\t\t\t</mat-slider>\n\t\t\t\t<div class=\"date-container\" fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"4px\">\n\t\t\t\t\t<span class=\"start-from\" i18n>Starting from:</span>\n\t\t\t\t\t<span class=\"publication-date\">{{ publicationDateValue }}</span>\n\t\t\t\t</div>\n\t\t\t</ng-container>\n\t\t</div>\n\t\t<mat-checkbox\n\t\t\t[formControlName]=\"eFilterResultForm.fcResultsWithNoDates\"\n\t\t\tclass=\"include-results-checkbox\"\n\t\t\ti18n-aria-label\n\t\t\taria-label=\"Include or exclude results with no date\"\n\t\t\ti18n>\n\t\t\tInclude results with no date\n\t\t\t<span *ngIf=\"totalResultsWithoutDate > 0\" class=\"total-stat\">({{ totalResultsWithoutDate }})</span>\n\t\t</mat-checkbox>\n\t</div>\n</div>\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { IRemoveResultConfirmationDialogData } from './models/remove-result-confirmation-dialog.models';\n\n@Component({\n\tselector: 'cr-remove-result-confirmation-dialog',\n\ttemplateUrl: './remove-result-confirmation-dialog.component.html',\n\tstyleUrls: ['./remove-result-confirmation-dialog.component.scss'],\n\tstandalone: false,\n})\nexport class RemoveResultConfirmationDialogComponent implements OnInit {\n\tdeleting: boolean = false;\n\n\tconstructor(\n\t\tprivate _dialogRef: MatDialogRef<RemoveResultConfirmationDialogComponent>,\n\t\t@Inject(MAT_DIALOG_DATA) public data: IRemoveResultConfirmationDialogData\n\t) {}\n\n\tngOnInit(): void {}\n\n\tonCancel() {\n\t\tthis._dialogRef.close();\n\t}\n\n\tasync onConfirmAsync() {\n\t\ttry {\n\t\t\t// show loading view & don't allow for outside clicks\n\t\t\tthis.deleting = true;\n\t\t\tthis._dialogRef.disableClose = true;\n\n\t\t\t// send the delete request and close dialog if sucess\n\t\t\tawait this.data.reportDataSvc.deleteResultById(this.data.resultInfo);\n\t\t\tthis._dialogRef.close();\n\t\t} catch (error) {\n\t\t} finally {\n\t\t\tthis._dialogRef.disableClose = false;\n\t\t\tthis.deleting = false;\n\t\t}\n\t}\n}\n","<h2 class=\"title\" web-report-title-font i18n>Are you sure you want to delete the selected result?</h2>\n\n<div class=\"confirmation-message\" i18n>\n\tThis action will permanently delete all traces of your submission from the Copyleaks server, including the Shared Data\n\tHub. This will take up to 24 hours.\n</div>\n\n<div class=\"btns-container\">\n\t<cr-button\n\t\t[outlined]=\"true\"\n\t\t[padding]=\"'4px 24px'\"\n\t\t(click)=\"onCancel()\"\n\t\t[width]=\"'132px'\"\n\t\tcolor=\"primary\"\n\t\t[disabled]=\"deleting\">\n\t\t<span class=\"discard-changes-button\" i18n>NO</span>\n\t</cr-button>\n\t<cr-button (click)=\"onConfirmAsync()\" [width]=\"'132px'\" padding=\"3px 24px\" color=\"primary\" [showSpinner]=\"deleting\">\n\t\t<span class=\"apply-filters-button\" i18n>YES</span>\n\t</cr-button>\n</div>\n","export enum EMatchType {\n\tIdentical,\n\tMinorChanges,\n\tParaphrased,\n\tSimilarWords,\n\tOmittedWords,\n}\n","import { PercentPipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n\tname: 'similarity',\n\tstandalone: false,\n})\nexport class SimilarityPipe implements PipeTransform {\n\tconstructor(private _percentPipe: PercentPipe) {}\n\t/**\n\t * Works like @angular/common PercentPipe but when value is larger than 0\n\t * and the result string is 0% , it returns < 1%.\n\t * See `PercentPipe` for params info.\n\t */\n\ttransform(value: any, digitsInfo?: string, locale?: string): string | null {\n\t\tlet result = this._percentPipe.transform(value, digitsInfo, locale);\n\t\tif (value > 1) {\n\t\t\tresult = '100%';\n\t\t}\n\t\treturn result;\n\t}\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { EReportScoreTooltipPosition, EReportScoreTooltipView } from '../../enums/copyleaks-web-report.enums';\nimport { IReportScoreTooltipModel } from '../../models/report-view.models';\nimport { trigger, state, transition, animate, style } from '@angular/animations';\nimport { ReportViewService } from '../../services/report-view.service';\n\n@Component({\n\tselector: 'cr-report-score-tooltip-content',\n\ttemplateUrl: './cr-report-score-tooltip-content.component.html',\n\tstyleUrls: ['./cr-report-score-tooltip-content.component.scss'],\n\tanimations: [trigger('fade', [state('void', style({ opacity: 0 })), transition('void <=> *', animate(300))])],\n\tstandalone: false,\n})\nexport class CrReportScoreTooltipContentComponent implements OnInit {\n\t@Input() scoreStats: IReportScoreTooltipModel | null = null;\n\t@Input() viewType: EReportScoreTooltipView = EReportScoreTooltipView.Tooltip;\n\t@Input() reportViewService: ReportViewService;\n\n\tposition: EReportScoreTooltipPosition = EReportScoreTooltipPosition.DEFAULT;\n\tleft: number = 0;\n\ttop: number = 0;\n\n\tEReportScoreTooltipPosition = EReportScoreTooltipPosition;\n\tEReportScoreTooltipView = EReportScoreTooltipView;\n\n\tconstructor() {}\n\n\tngOnInit(): void {}\n}\n","<div\n\t[@fade]\n\tclass=\"tooltip\"\n\t[dir]=\"reportViewService?.documentDirection\"\n\t[class.inline]=\"viewType === EReportScoreTooltipView.Inline\"\n\t[ngClass]=\"['tooltip--' + position]\"\n\t[style.left]=\"left + 'px'\"\n\t[style.top]=\"top + 'px'\">\n\t<div class=\"tooltip-titles-container\">\n\t\t<span class=\"match-type-text\" i18n>Match type</span>\n\t\t<div class=\"text-coverage-container\">\n\t\t\t<span class=\"text-coverage-text\" i18n>Text Coverage</span>\n\t\t\t<div class=\"column-titles-container\">\n\t\t\t\t<span class=\"match-type-text\" i18n>Match</span>\n\t\t\t\t<span class=\"match-type-text\" style=\"margin-inline-start: auto\" i18n>Words</span>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\n\t<ng-container\n\t\t*ngIf=\"\n\t\t\tscoreStats?.minorChangesPct != undefined &&\n\t\t\t\tscoreStats?.identicalPct != undefined &&\n\t\t\t\tscoreStats?.paraphrasedPct != undefined;\n\t\t\telse aiPctWords\n\t\t\">\n\t\t<div class=\"tooltip-stats-container\">\n\t\t\t<div class=\"match-type-stats-container\">\n\t\t\t\t<div class=\"match-type-stats-numbers-container\">\n\t\t\t\t\t<span class=\"match-type-title-text\" i18n>Identical</span>\n\t\t\t\t\t<div class=\"match-type-numbers-container\" i18n>\n\t\t\t\t\t\t<span class=\"match-type-numbers\" style=\"width: 35px; text-align: end\">\n\t\t\t\t\t\t\t{{ scoreStats?.identicalPct?.percentage ?? 0 | similarity : '1.0-1' }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span class=\"match-type-numbers\" style=\"margin-inline-start: auto\">\n\t\t\t\t\t\t\t{{ scoreStats?.identicalPct?.totalWords ?? 0 | number }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"match-type-stats-bar-container identical\">\n\t\t\t\t\t<span\n\t\t\t\t\t\tclass=\"match-type-bar-pct\"\n\t\t\t\t\t\t[style.width]=\"(scoreStats?.identicalPct?.percentage ?? 0) * 100 + '%'\"></span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"tooltip-stats-container\">\n\t\t\t<div class=\"match-type-stats-container\">\n\t\t\t\t<div class=\"match-type-stats-numbers-container\">\n\t\t\t\t\t<span class=\"match-type-title-text\" i18n>Minor changes</span>\n\t\t\t\t\t<div class=\"match-type-numbers-container\" i18n>\n\t\t\t\t\t\t<span class=\"match-type-numbers\" style=\"width: 35px; text-align: end\">\n\t\t\t\t\t\t\t{{ scoreStats?.minorChangesPct?.percentage ?? 0 | similarity : '1.0-1' }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span class=\"match-type-numbers\" style=\"margin-inline-start: auto\">\n\t\t\t\t\t\t\t{{ scoreStats?.minorChangesPct?.totalWords ?? 0 | number }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"match-type-stats-bar-container minor-changes\">\n\t\t\t\t\t<span\n\t\t\t\t\t\tclass=\"match-type-bar-pct\"\n\t\t\t\t\t\t[style.width]=\"(scoreStats?.minorChangesPct?.percentage ?? 0) * 100 + '%'\"></span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"tooltip-stats-container\">\n\t\t\t<div class=\"match-type-stats-container\">\n\t\t\t\t<div class=\"match-type-stats-numbers-container\">\n\t\t\t\t\t<span class=\"match-type-title-text\" i18n>Paraphrased</span>\n\t\t\t\t\t<div class=\"match-type-numbers-container\" i18n>\n\t\t\t\t\t\t<span class=\"match-type-numbers\" style=\"width: 35px; text-align: end\">\n\t\t\t\t\t\t\t{{ scoreStats?.paraphrasedPct?.percentage ?? 0 | similarity : '1.0-1' }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span class=\"match-type-numbers\" style=\"margin-inline-start: auto\">\n\t\t\t\t\t\t\t{{ scoreStats?.paraphrasedPct?.totalWords ?? 0 | number }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"match-type-stats-bar-container paraphrased\">\n\t\t\t\t\t<span\n\t\t\t\t\t\tclass=\"match-type-bar-pct\"\n\t\t\t\t\t\t[style.width]=\"(scoreStats?.paraphrasedPct?.percentage ?? 0) * 100 + '%'\"></span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"tooltip-stats-container\">\n\t\t\t<div class=\"match-type-stats-container\">\n\t\t\t\t<div class=\"match-type-stats-numbers-container\">\n\t\t\t\t\t<span class=\"match-type-title-text\" i18n>Original text</span>\n\t\t\t\t\t<div class=\"match-type-numbers-container\" i18n>\n\t\t\t\t\t\t<span class=\"match-type-numbers\" style=\"width: 35px; text-align: end\">\n\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\t(1 -\n\t\t\t\t\t\t\t\t\tscoreStats?.paraphrasedPct?.percentage -\n\t\t\t\t\t\t\t\t\tscoreStats?.minorChangesPct?.percentage -\n\t\t\t\t\t\t\t\t\tscoreStats?.identicalPct?.percentage >=\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t\t? 1 -\n\t\t\t\t\t\t\t\t\t  scoreStats?.paraphrasedPct?.percentage -\n\t\t\t\t\t\t\t\t\t  scoreStats?.minorChangesPct?.percentage -\n\t\t\t\t\t\t\t\t\t  scoreStats?.identicalPct?.percentage\n\t\t\t\t\t\t\t\t\t: 0\n\t\t\t\t\t\t\t\t) | similarity : '1.0-1'\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span class=\"match-type-numbers\" style=\"margin-inline-start: auto\">\n\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\t(scoreStats?.totalWords -\n\t\t\t\t\t\t\t\t\t(scoreStats?.omittedPct?.totalWords ?? 0) -\n\t\t\t\t\t\t\t\t\t(scoreStats?.paraphrasedPct?.totalWords ?? 0) -\n\t\t\t\t\t\t\t\t\t(scoreStats?.minorChangesPct?.totalWords ?? 0) -\n\t\t\t\t\t\t\t\t\t(scoreStats?.identicalPct?.totalWords ?? 0) >=\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t\t? scoreStats?.totalWords -\n\t\t\t\t\t\t\t\t\t  (scoreStats?.omittedPct?.totalWords ?? 0) -\n\t\t\t\t\t\t\t\t\t  (scoreStats?.paraphrasedPct?.totalWords ?? 0) -\n\t\t\t\t\t\t\t\t\t  (scoreStats?.minorChangesPct?.totalWords ?? 0) -\n\t\t\t\t\t\t\t\t\t  (scoreStats?.identicalPct?.totalWords ?? 0)\n\t\t\t\t\t\t\t\t\t: 0\n\t\t\t\t\t\t\t\t) | number\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"match-type-stats-bar-container original\">\n\t\t\t\t\t<span\n\t\t\t\t\t\t*ngIf=\"\n\t\t\t\t\t\t\t1 -\n\t\t\t\t\t\t\t\tscoreStats?.paraphrasedPct?.percentage -\n\t\t\t\t\t\t\t\tscoreStats?.minorChangesPct?.percentage -\n\t\t\t\t\t\t\t\tscoreStats?.identicalPct?.percentage >\n\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\"\n\t\t\t\t\t\tclass=\"match-type-bar-pct\"\n\t\t\t\t\t\t[style.width]=\"\n\t\t\t\t\t\t\t(1 -\n\t\t\t\t\t\t\t\t(scoreStats?.paraphrasedPct?.percentage ?? 0) -\n\t\t\t\t\t\t\t\t(scoreStats?.minorChangesPct?.percentage ?? 0) -\n\t\t\t\t\t\t\t\t(scoreStats?.identicalPct?.percentage ?? 0)) *\n\t\t\t\t\t\t\t\t100 +\n\t\t\t\t\t\t\t'%'\n\t\t\t\t\t\t\"></span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</ng-container>\n\t<ng-template #aiPctWords>\n\t\t<div class=\"tooltip-stats-container\">\n\t\t\t<div class=\"match-type-stats-container\">\n\t\t\t\t<div class=\"match-type-stats-numbers-container\">\n\t\t\t\t\t<span class=\"match-type-title-text\" i18n>AI content</span>\n\t\t\t\t\t<div class=\"match-type-numbers-container\" i18n>\n\t\t\t\t\t\t<span class=\"match-type-numbers\" style=\"width: 35px; text-align: end\">\n\t\t\t\t\t\t\t{{ scoreStats?.aiPct?.percentage ?? 0 | similarity : '1.0-1' }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span class=\"match-type-numbers\" style=\"margin-inline-start: auto\">\n\t\t\t\t\t\t\t{{ scoreStats?.aiPct?.totalWords ?? 0 | number }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"match-type-stats-bar-container ai\">\n\t\t\t\t\t<span class=\"match-type-bar-pct\" [style.width]=\"(scoreStats?.aiPct?.percentage ?? 0) * 100 + '%'\"></span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"tooltip-stats-container\">\n\t\t\t<div class=\"match-type-stats-container\">\n\t\t\t\t<div class=\"match-type-stats-numbers-container\">\n\t\t\t\t\t<span class=\"match-type-title-text\" i18n>Human text</span>\n\t\t\t\t\t<div class=\"match-type-numbers-container\" i18n>\n\t\t\t\t\t\t<span class=\"match-type-numbers\" style=\"width: 35px; text-align: end\">\n\t\t\t\t\t\t\t{{ scoreStats?.humanPct?.percentage ?? 0 | similarity : '1.0-1' }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span class=\"match-type-numbers\" style=\"margin-inline-start: auto\">\n\t\t\t\t\t\t\t{{ scoreStats?.humanPct?.totalWords ?? 0 | number }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"match-type-stats-bar-container original\">\n\t\t\t\t\t<span\n\t\t\t\t\t\tclass=\"match-type-bar-pct\"\n\t\t\t\t\t\t[style.width]=\"(scoreStats?.humanPct?.percentage ?? 0) * 100 + '%'\"\n\t\t\t\t\t\t[style.display]=\"\n\t\t\t\t\t\t\t!scoreStats?.humanPct?.percentage || scoreStats?.humanPct?.percentage === 0 ? 'none' : ''\n\t\t\t\t\t\t\"></span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</ng-template>\n\n\t<ng-container *ngIf=\"!!scoreStats?.omittedPct && scoreStats?.omittedPct?.totalWords > 0 && !scoreStats?.isResult\">\n\t\t<svg class=\"line-break\" xmlns=\"http://www.w3.org/2000/svg\" width=\"250\" height=\"2\" viewBox=\"0 0 250 2\" fill=\"none\">\n\t\t\t<path d=\"M1 1H249\" stroke=\"#EBF3F5\" stroke-linecap=\"round\" />\n\t\t</svg>\n\n\t\t<div class=\"tooltip-stats-container\">\n\t\t\t<div class=\"omitted-words-stats-container\">\n\t\t\t\t<span class=\"omitted-words-title-text\" i18n>Omitted words</span>\n\t\t\t\t<span class=\"total-omitted-words\">{{ scoreStats?.omittedPct?.totalWords ?? 0 | number }}</span>\n\t\t\t\t<!-- <div class=\"omitted-words-stats-bar-container\">\n\t\t\t\t\t<span\n\t\t\t\t\t\t*ngIf=\"scoreStats?.omittedPct?.percentage * 100 > 0\"\n\t\t\t\t\t\tclass=\"omitted-words-bar-pct\"\n\t\t\t\t\t\t[style.width]=\"(scoreStats?.omittedPct?.percentage ?? 0) * 100 + '%'\"></span>\n\t\t\t\t</div> -->\n\t\t\t</div>\n\t\t</div>\n\t</ng-container>\n\n\t<ng-container *ngIf=\"!scoreStats?.isResult\">\n\t\t<svg class=\"line-break\" xmlns=\"http://www.w3.org/2000/svg\" width=\"250\" height=\"2\" viewBox=\"0 0 250 2\" fill=\"none\">\n\t\t\t<path d=\"M1 1H249\" stroke=\"#EBF3F5\" stroke-linecap=\"round\" />\n\t\t</svg>\n\n\t\t<div class=\"tooltip-stats-container\">\n\t\t\t<div class=\"omitted-words-stats-container\">\n\t\t\t\t<span class=\"omitted-words-title-text\" i18n>Total words</span>\n\t\t\t\t<span class=\"total-omitted-words\">{{ scoreStats?.totalWords ?? 0 | number }}</span>\n\t\t\t</div>\n\t\t</div>\n\t</ng-container>\n\n\t<svg\n\t\tclass=\"tooltip-indicator\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\twidth=\"15\"\n\t\theight=\"13\"\n\t\tviewBox=\"0 0 15 13\"\n\t\tfill=\"none\">\n\t\t<path d=\"M7.5 13L0.500001 0L14.5 0L7.5 13Z\" fill=\"#FBFFFF\" />\n\t</svg>\n</div>\n","import {\n\tDirective,\n\tElementRef,\n\tComponentRef,\n\tEmbeddedViewRef,\n\tHostListener,\n\tInjector,\n\tInput,\n\tOnDestroy,\n\tViewContainerRef,\n} from '@angular/core';\nimport { CrReportScoreTooltipContentComponent } from './cr-report-score-tooltip-content.component';\nimport { IReportScoreTooltipModel } from '../../models/report-view.models';\nimport { EReportScoreTooltipPosition, EResponsiveLayoutType } from '../../enums/copyleaks-web-report.enums';\nimport { ReportViewService } from '../../services/report-view.service';\n\n@Directive({\n\tselector: '[crReportScoreTooltip]',\n\tstandalone: false,\n})\nexport class ReportScoreTooltipDirective implements OnDestroy {\n\t@Input() crReportScoreTooltip: IReportScoreTooltipModel | null = null;\n\t@Input() crReportScoreTooltipPosition: EReportScoreTooltipPosition = EReportScoreTooltipPosition.DEFAULT;\n\t@Input() reportViewService!: ReportViewService;\n\n\tprivate componentRef: ComponentRef<CrReportScoreTooltipContentComponent> | null = null;\n\n\tconstructor(private elementRef: ElementRef, private injector: Injector, private vcr: ViewContainerRef) {}\n\n\t@HostListener('mouseenter')\n\t@HostListener('focus')\n\tonMouseEnter(): void {\n\t\tif (this.reportViewService.reportResponsiveMode.mode === EResponsiveLayoutType.Mobile) {\n\t\t\treturn;\n\t\t}\n\t\tif (!this.componentRef && !this._areAllPropsUndefined) {\n\t\t\t// 1) Create and insert the component in one go:\n\t\t\tthis.componentRef = this.vcr.createComponent(CrReportScoreTooltipContentComponent, { injector: this.injector });\n\n\t\t\t// 2) Trigger change detection\n\t\t\tthis.componentRef.changeDetectorRef.detectChanges();\n\n\t\t\t// 3) Move its host element under <body>\n\t\t\tconst domElem = (this.componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n\t\t\tdocument.body.appendChild(domElem);\n\n\t\t\t// 4) Set inputs & positioning\n\t\t\tthis._setTooltipComponentProperties();\n\t\t}\n\t}\n\n\t@HostListener('mouseleave')\n\t@HostListener('blur')\n\tonMouseLeave(): void {\n\t\tthis.destroy();\n\t}\n\n\tprivate _setTooltipComponentProperties(): void {\n\t\tif (!this.componentRef) return;\n\n\t\tObject.assign(this.componentRef.instance, {\n\t\t\tscoreStats: this.crReportScoreTooltip,\n\t\t\treportViewService: this.reportViewService,\n\t\t\tposition: this.crReportScoreTooltipPosition,\n\t\t});\n\n\t\tconst { left, right, top, bottom } = this.elementRef.nativeElement.getBoundingClientRect();\n\n\t\tswitch (this.crReportScoreTooltipPosition) {\n\t\t\tcase EReportScoreTooltipPosition.BELOW:\n\t\t\t\tthis.componentRef.instance.left = Math.round((right - left) / 2 + left);\n\t\t\t\tthis.componentRef.instance.top = Math.round(bottom);\n\t\t\t\tbreak;\n\t\t\tcase EReportScoreTooltipPosition.ABOVE:\n\t\t\t\tthis.componentRef.instance.left = Math.round((right - left) / 2 + left);\n\t\t\t\tthis.componentRef.instance.top = Math.round(top - 10);\n\t\t\t\tbreak;\n\t\t\tcase EReportScoreTooltipPosition.RIGHT:\n\t\t\t\tthis.componentRef.instance.left = Math.round(right);\n\t\t\t\tthis.componentRef.instance.top = Math.round(top + (bottom - top) / 2);\n\t\t\t\tbreak;\n\t\t\tcase EReportScoreTooltipPosition.LEFT:\n\t\t\t\tthis.componentRef.instance.left = Math.round(left);\n\t\t\t\tthis.componentRef.instance.top = Math.round(top + (bottom - top) / 2);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tprivate get _areAllPropsUndefined(): boolean {\n\t\treturn (\n\t\t\tthis.crReportScoreTooltip?.aiPct === undefined &&\n\t\t\tthis.crReportScoreTooltip?.humanPct === undefined &&\n\t\t\tthis.crReportScoreTooltip?.identicalPct === undefined &&\n\t\t\tthis.crReportScoreTooltip?.minorChangesPct === undefined &&\n\t\t\tthis.crReportScoreTooltip?.paraphrasedPct === undefined\n\t\t);\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.destroy();\n\t}\n\n\tprivate destroy(): void {\n\t\tif (this.componentRef) {\n\t\t\t// No need to detach via ApplicationRef—destroy handles cleanup\n\t\t\tthis.componentRef.destroy();\n\t\t\tthis.componentRef = null;\n\t\t}\n\t}\n}\n","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { ISourceMetadataSection, IStatistics } from '../../../../../models/report-data.models';\nimport { EMatchType } from './models/percentage-result-item.enum';\nimport { IPercentageResult } from './models/percentage-result-item.models';\nimport { ReportDataService } from '../../../../../services/report-data.service';\nimport { ReportViewService } from '../../../../../services/report-view.service';\nimport { untilDestroy } from '../../../../../utils/until-destroy';\nimport { EReportScoreTooltipPosition } from '../../../../../enums/copyleaks-web-report.enums';\n\n@Component({\n\tselector: 'cr-percentage-result-item',\n\ttemplateUrl: './percentage-result-item.component.html',\n\tstyleUrls: ['./percentage-result-item.component.scss'],\n\tstandalone: false,\n})\nexport class PercentageResultItemComponent implements OnInit, OnChanges {\n\t/**\n\t * @Input {IPercentageResult} The percentage result data to be displayed\n\t */\n\t@Input() percentageResult: IPercentageResult;\n\n\t/**\n\t * @Input {ReportDataService} Service for accessing report-related data\n\t */\n\t@Input() reportDataSvc: ReportDataService;\n\n\t/**\n\t * @Input {ReportViewService} Service for managing report view state and logic\n\t */\n\t@Input() reportViewService: ReportViewService;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether this result should be excluded\n\t */\n\t@Input() excludeResult: boolean = false;\n\n\t/**\n\t * @Input {EReportScoreTooltipPosition} Position of the tooltip relative to the report score\n\t */\n\t@Input() crReportScoreTooltipPosition: EReportScoreTooltipPosition = EReportScoreTooltipPosition.ABOVE;\n\n\tshowPlagiarismPercentages: boolean = false;\n\tmetadataSource: ISourceMetadataSection;\n\tiStatisticsResult: IStatistics;\n\tsimilarWords: number;\n\teMatchType = EMatchType;\n\n\tPERCENTAGE_BTN_EXPEND_TOOLTIP = $localize`Expand`;\n\tPERCENTAGE_BTN_COLLAPSE_TOOLTIP = $localize`Collapse`;\n\tdocDirection: 'ltr' | 'rtl';\n\n\tconstructor() {}\n\n\tget stackedBarHeight() {\n\t\treturn this.percentageResult?.stackedBarHeight || '8px';\n\t}\n\n\tget stackedBarBackgroundColor() {\n\t\treturn this.percentageResult?.stackedBarBackgroundColor || '#fbffff';\n\t}\n\tngOnInit(): void {\n\t\tif (this.reportViewService)\n\t\t\tthis.reportViewService.documentDirection$.pipe(untilDestroy(this)).subscribe(dir => {\n\t\t\t\tthis.docDirection = dir;\n\t\t\t});\n\t}\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif ('percentageResult' in changes) {\n\t\t\tif (this.percentageResult?.resultItem) {\n\t\t\t\tthis.metadataSource = this.percentageResult.resultItem.metadataSource;\n\t\t\t\tthis.iStatisticsResult = this.percentageResult.resultItem.iStatisticsResult;\n\t\t\t\tthis.similarWords =\n\t\t\t\t\tthis.percentageResult.resultItem.iStatisticsResult.identical +\n\t\t\t\t\tthis.percentageResult.resultItem.iStatisticsResult.minorChanges +\n\t\t\t\t\tthis.percentageResult.resultItem.iStatisticsResult.relatedMeaning;\n\t\t\t}\n\t\t}\n\t}\n\n\tgetMatchTypePercentage(eMatchType: EMatchType) {\n\t\tif (this.iStatisticsResult && this.metadataSource) {\n\t\t\tconst result = this.metadataSource.words - this.metadataSource.excluded;\n\t\t\tswitch (eMatchType) {\n\t\t\t\tcase EMatchType.Identical: {\n\t\t\t\t\treturn this.iStatisticsResult.identical / result;\n\t\t\t\t}\n\t\t\t\tcase EMatchType.MinorChanges: {\n\t\t\t\t\treturn this.iStatisticsResult.minorChanges / result;\n\t\t\t\t}\n\t\t\t\tcase EMatchType.Paraphrased: {\n\t\t\t\t\treturn this.iStatisticsResult.relatedMeaning / result;\n\t\t\t\t}\n\t\t\t\tcase EMatchType.SimilarWords: {\n\t\t\t\t\treturn this.similarWords / result;\n\t\t\t\t}\n\t\t\t\tcase EMatchType.OmittedWords: {\n\t\t\t\t\treturn this.metadataSource.excluded / this.metadataSource.words;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn 0;\n\t}\n\n\tngOnDestroy(): void {}\n}\n","<div\n\tclass=\"plagiarism-detection-percentage-top-container\"\n\tfxLayout=\"row\"\n\tfxLayoutAlign=\"space-between start\"\n\tfxLayoutGap=\"4px\"\n\t[reportViewService]=\"reportViewService\"\n\t[dir]=\"docDirection\"\n\t[crReportScoreTooltipPosition]=\"crReportScoreTooltipPosition\"\n\t[crReportScoreTooltip]=\"\n\t\tpercentageResult && percentageResult.showTooltip\n\t\t\t? {\n\t\t\t\t\tidenticalPct: {\n\t\t\t\t\t\tpercentage: getMatchTypePercentage(eMatchType.Identical),\n\t\t\t\t\t\ttotalWords: iStatisticsResult?.identical ?? 0,\n\t\t\t\t\t\tdisabled: excludeResult ? false : reportDataSvc.filterOptions?.showIdentical === false\n\t\t\t\t\t},\n\t\t\t\t\tminorChangesPct: {\n\t\t\t\t\t\tpercentage: getMatchTypePercentage(eMatchType.MinorChanges),\n\t\t\t\t\t\ttotalWords: iStatisticsResult?.minorChanges ?? 0,\n\t\t\t\t\t\tdisabled: excludeResult ? false : reportDataSvc.filterOptions?.showMinorChanges === false\n\t\t\t\t\t},\n\t\t\t\t\tparaphrasedPct: {\n\t\t\t\t\t\tpercentage: getMatchTypePercentage(eMatchType.Paraphrased),\n\t\t\t\t\t\ttotalWords: iStatisticsResult?.relatedMeaning ?? 0,\n\t\t\t\t\t\tdisabled: excludeResult ? false : reportDataSvc.filterOptions?.showRelated === false\n\t\t\t\t\t},\n\t\t\t\t\tomittedPct: undefined,\n\t\t\t\t\ttotalWords: metadataSource?.words ?? 0,\n\t\t\t\t\tisResult: true\n\t\t\t  }\n\t\t\t: null\n\t\">\n\t<div\n\t\tclass=\"plagiarism-detection-percentage-container\"\n\t\tfxLayout=\"column\"\n\t\tfxLayoutAlign=\"start start\"\n\t\tfxLayoutGap=\"4px\">\n\t\t<div\n\t\t\tclass=\"plagiarism-detection-percentage-result\"\n\t\t\tfxLayout=\"column\"\n\t\t\tfxLayoutAlign=\"start start\"\n\t\t\t*ngIf=\"showPlagiarismPercentages && percentageResult?.showArrowButton; else showStackedBar\">\n\t\t\t<ng-container *ngTemplateOutlet=\"plagiarismPercentage\"></ng-container>\n\t\t</div>\n\n\t\t<ng-template #showStackedBar>\n\t\t\t<div class=\"stacked-bar-top-container\" fxLayout=\"row\" fxLayoutGap=\"8px\" fxLayoutAlign=\"center center\">\n\t\t\t\t<div *ngIf=\"percentageResult?.title\" class=\"title\">\n\t\t\t\t\t<span>{{ percentageResult.title }}</span>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"stacked-bar-container\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"stackedBar\"></ng-container>\n\t\t\t\t</div>\n\n\t\t\t\t<div\n\t\t\t\t\t*ngIf=\"percentageResult?.title\"\n\t\t\t\t\tclass=\"title-percentage\"\n\t\t\t\t\tfxLayout=\"row\"\n\t\t\t\t\tfxLayoutAlign=\"space-between start\">\n\t\t\t\t\t<span>{{ getMatchTypePercentage(eMatchType.SimilarWords) | similarity : '1.0-1' }}</span>\n\t\t\t\t</div>\n\t\t\t\t<span *ngIf=\"!percentageResult?.title\" class=\"similar-words-percentage\">\n\t\t\t\t\t{{ getMatchTypePercentage(eMatchType.SimilarWords) | similarity : '1.0-1' }}\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</ng-template>\n\t</div>\n\n\t<button\n\t\t*ngIf=\"percentageResult?.showArrowButton\"\n\t\tmat-icon-button\n\t\tclass=\"show-plagiarism-detection-button\"\n\t\taria-label=\"'This is a button to expand or collapse the result score statistics.\"\n\t\ti18n-aria-label\n\t\t[matTooltip]=\"showPlagiarismPercentages ? PERCENTAGE_BTN_COLLAPSE_TOOLTIP : PERCENTAGE_BTN_EXPEND_TOOLTIP\"\n\t\ti18n-matTooltip\n\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t(click)=\"showPlagiarismPercentages = !showPlagiarismPercentages\">\n\t\t<ng-container *ngIf=\"showPlagiarismPercentages; else showLessPerDetailsIcon\">\n\t\t\t<mat-icon fontSet=\"material-icons-round\">arrow_drop_up</mat-icon>\n\t\t</ng-container>\n\t\t<ng-template #showLessPerDetailsIcon>\n\t\t\t<mat-icon fontSet=\"material-icons-round\">arrow_drop_down</mat-icon>\n\t\t</ng-template>\n\t</button>\n</div>\n\n<!-- #percentageLessResult -->\n<ng-template #stackedBar>\n\t<div\n\t\tclass=\"stacked-bar\"\n\t\t[style.background-color]=\"stackedBarBackgroundColor\"\n\t\tfxLayout=\"row\"\n\t\tfxLayoutAlign=\"start center\">\n\t\t<div\n\t\t\tclass=\"identical first-percentage\"\n\t\t\t[class.last-percentage]=\"\n\t\t\t\t!getMatchTypePercentage(eMatchType.MinorChanges) && !getMatchTypePercentage(eMatchType.Paraphrased)\n\t\t\t\"\n\t\t\t[style.height]=\"stackedBarHeight\"\n\t\t\t[style.width]=\"getMatchTypePercentage(eMatchType.Identical) | similarity : '1.0-1'\"></div>\n\t\t<div\n\t\t\tclass=\"minorChanges\"\n\t\t\t[class.first-percentage]=\"!getMatchTypePercentage(eMatchType.Identical)\"\n\t\t\t[class.last-percentage]=\"!getMatchTypePercentage(eMatchType.Paraphrased)\"\n\t\t\t[style.height]=\"stackedBarHeight\"\n\t\t\t[style.width]=\"getMatchTypePercentage(eMatchType.MinorChanges) | similarity : '1.0-1'\"></div>\n\t\t<div\n\t\t\tclass=\"paraphrased last-percentage\"\n\t\t\t[class.first-percentage]=\"\n\t\t\t\t!getMatchTypePercentage(eMatchType.Identical) && !getMatchTypePercentage(eMatchType.MinorChanges)\n\t\t\t\"\n\t\t\t[style.height]=\"stackedBarHeight\"\n\t\t\t[style.width]=\"getMatchTypePercentage(eMatchType.Paraphrased) | similarity : '1.0-1'\"></div>\n\t</div>\n</ng-template>\n\n<ng-template #plagiarismPercentage>\n\t<div class=\"match-type-top-container\" fxLayout=\"column\" fxLayoutAlign=\"start start\" fxLayoutGap=\"6px\">\n\t\t<div\n\t\t\t*ngIf=\"!percentageResult?.showTooltip\"\n\t\t\tclass=\"match-type-title\"\n\t\t\tfxLayout=\"row\"\n\t\t\tfxLayoutAlign=\"space-between center\">\n\t\t\t<span i18n>Match type</span>\n\t\t\t<div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"12px\">\n\t\t\t\t<span class=\"percentage-match\" i18n>Match</span>\n\t\t\t\t<span class=\"number-words-match\" i18n>Words</span>\n\t\t\t</div>\n\t\t</div>\n\t\t<!--identical-->\n\t\t<div class=\"match-type-cotainer\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n\t\t\t<div fxLayout=\"row\" fxLayoutGap=\"8px\" fxLayoutAlign=\"start center\">\n\t\t\t\t<span class=\"dot identical\"></span>\n\t\t\t\t<span class=\"type-name\" i18n>IDENTICAL</span>\n\t\t\t</div>\n\t\t\t<div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"12px\">\n\t\t\t\t<span class=\"percentage-match type-value\">\n\t\t\t\t\t{{ getMatchTypePercentage(eMatchType.Identical) | similarity : '1.0-1' }}\n\t\t\t\t</span>\n\t\t\t\t<span *ngIf=\"!percentageResult?.showTooltip && iStatisticsResult\" class=\"number-words-match type-value\">\n\t\t\t\t\t{{ iStatisticsResult.identical }}\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t\t<!--minorChanges-->\n\t\t<div class=\"match-type-cotainer\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n\t\t\t<div fxLayout=\"row\" fxLayoutGap=\"8px\" fxLayoutAlign=\"start center\">\n\t\t\t\t<span class=\"dot minorChanges\"></span>\n\t\t\t\t<span class=\"type-name\" i18n>MINOR CHANGES</span>\n\t\t\t</div>\n\t\t\t<div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"12px\">\n\t\t\t\t<span class=\"percentage-match type-value\">\n\t\t\t\t\t{{ getMatchTypePercentage(eMatchType.MinorChanges) | similarity : '1.0-1' }}\n\t\t\t\t</span>\n\t\t\t\t<span *ngIf=\"!percentageResult?.showTooltip && iStatisticsResult\" class=\"number-words-match type-value\">\n\t\t\t\t\t{{ iStatisticsResult.minorChanges }}\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t\t<!-- paraphrased -->\n\t\t<div class=\"match-type-cotainer\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n\t\t\t<div fxLayout=\"row\" fxLayoutGap=\"8px\" fxLayoutAlign=\"start center\">\n\t\t\t\t<span class=\"dot paraphrased\"></span>\n\t\t\t\t<span class=\"type-name\" i18n>PARAPHRASED</span>\n\t\t\t</div>\n\t\t\t<div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"12px\">\n\t\t\t\t<span class=\"percentage-match type-value\">\n\t\t\t\t\t{{ getMatchTypePercentage(eMatchType.Paraphrased) | similarity : '1.0-1' }}\n\t\t\t\t</span>\n\t\t\t\t<span *ngIf=\"!percentageResult?.showTooltip && iStatisticsResult\" class=\"number-words-match type-value\">\n\t\t\t\t\t{{ iStatisticsResult.relatedMeaning }}\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</ng-template>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n\tname: 'removeProtocol',\n\tstandalone: false,\n})\nexport class RemoveProtocolPipe implements PipeTransform {\n\ttransform(url: string): string {\n\t\tif (!url) {\n\t\t\treturn '';\n\t\t}\n\n\t\t// Use regex to remove protocol and \"www.\"\n\t\treturn url.replace(/^(https?:\\/\\/)?(www\\.)?/, '');\n\t}\n}\n","import {\n\tComponent,\n\tEventEmitter,\n\tHostListener,\n\tInput,\n\tOnChanges,\n\tOnDestroy,\n\tOnInit,\n\tOutput,\n\tSimpleChanges,\n\tTemplateRef,\n\tViewChild,\n} from '@angular/core';\nimport { EPlatformType, EResultPreviewType } from '../../../../../enums/copyleaks-web-report.enums';\nimport { IResultPreviewBase } from '../../../../../models/report-data.models';\nimport { ReportViewService } from '../../../../../services/report-view.service';\nimport { IResultItem } from '../models/report-result-item.models';\nimport { IPercentageResult } from '../percentage-result-item/models/percentage-result-item.models';\nimport { trigger, state, transition, animate, style } from '@angular/animations';\nimport { ReportNgTemplatesService } from '../../../../../services/report-ng-templates.service';\nimport { untilDestroy } from '../../../../../utils/until-destroy';\nimport { ReportDataService } from '../../../../../services/report-data.service';\nimport { MatDialog } from '@angular/material/dialog';\nimport { RemoveResultConfirmationDialogComponent } from '../../../../../dialogs/remove-result-confirmation-dialog/remove-result-confirmation-dialog.component';\nimport { IRemoveResultConfirmationDialogData } from '../../../../../dialogs/remove-result-confirmation-dialog/models/remove-result-confirmation-dialog.models';\nimport { ReportMatchHighlightService } from '../../../../../services/report-match-highlight.service';\nimport { MatMenuTrigger } from '@angular/material/menu';\nimport { DatePipe } from '@angular/common';\nimport { RESULT_TAGS_CODES } from '../../../../../constants/report-result-tags.constants';\n\n@Component({\n\tselector: 'cr-report-results-item',\n\ttemplateUrl: './report-results-item.component.html',\n\tstyleUrls: ['./report-results-item.component.scss'],\n\tanimations: [\n\t\ttrigger('fadeIn', [\n\t\t\tstate('void', style({ opacity: 0 })),\n\t\t\ttransition(':enter', [animate('0.5s ease-in', style({ opacity: 1 }))]),\n\t\t]),\n\t],\n\tstandalone: false,\n})\nexport class ReportResultsItemComponent implements OnInit, OnChanges, OnDestroy {\n\t@ViewChild(MatMenuTrigger) public resultItemMenuTrigger: MatMenuTrigger;\n\n\t/**\n\t * @Input {IResultItem} The result item to be displayed in the component\n\t */\n\t@Input() resultItem: IResultItem;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether to show a loading indicator\n\t */\n\t@Input() showLoader: boolean = false;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether to display the body of the result item\n\t */\n\t@Input() showItemBody: boolean = true;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether to exclude the result view from rendering\n\t */\n\t@Input() excludeView: boolean = false;\n\n\t/**\n\t * @Input {boolean} Flag indicating if the result is marked as excluded\n\t */\n\t@Input() isResultExcluded: boolean = false;\n\n\t/**\n\t * @Input {boolean} Flag indicating if the view is in mobile mode\n\t */\n\t@Input() isMobile: boolean = false;\n\n\t/**\n\t * @Input {ReportViewService} Service for managing report view state and interactions\n\t */\n\t@Input() reportViewSvc: ReportViewService;\n\n\t/**\n\t * @Input {ReportDataService} Service for accessing report-related data\n\t */\n\t@Input() reportDataSvc: ReportDataService;\n\n\t/**\n\t * @Input {ReportMatchHighlightService} Service for managing highlight logic in matched results\n\t */\n\t@Input() highlightService: ReportMatchHighlightService;\n\n\t/**\n\t * @Input {ReportNgTemplatesService} Service for retrieving custom Angular templates for report rendering\n\t */\n\t@Input() reportNgTemplatesSvc: ReportNgTemplatesService;\n\n\t/**\n\t * @Output {EventEmitter<string>} Emits when a result is hidden, sending the result ID\n\t */\n\t@Output() hiddenResultEvent = new EventEmitter<string>();\n\n\t/**\n\t * @Output {EventEmitter<string>} Emits when a hidden result is shown again, sending the result ID\n\t */\n\t@Output() showResultEvent = new EventEmitter<string>();\n\n\tpercentageResult: IPercentageResult;\n\tpreviewResult: IResultPreviewBase;\n\teResultPreviewType = EResultPreviewType;\n\tlockedResultItemTemplateRef: TemplateRef<IResultItem> | undefined;\n\n\tfaviconExists: boolean = true;\n\tfaviconURL: string;\n\tplatformType: EPlatformType;\n\tcopyMessage: string;\n\tdocDirection: 'ltr' | 'rtl';\n\n\tRESULT_TAGS_CODES = RESULT_TAGS_CODES;\n\n\t@HostListener('click', ['$event'])\n\thandleClick() {\n\t\tif (!this.resultItem || this.showLoader || !this.resultItem.resultDetails || this.excludeView || this.isLocked)\n\t\t\treturn;\n\n\t\tthis.reportViewSvc?.selectedResult$.next(this.resultItem.resultDetails);\n\t\tthis.reportViewSvc?.reportViewMode$.next({\n\t\t\t...this.reportViewSvc?.reportViewMode,\n\t\t\tviewMode: 'one-to-one',\n\t\t\tsuspectId: this.resultItem.resultPreview.id,\n\t\t\tsourcePageIndex: 1,\n\t\t\tsuspectPageIndex: 1,\n\t\t\talertCode: undefined,\n\t\t});\n\t\tthis.reportViewSvc?.selectedAlert$.next(null);\n\t}\n\n\tget isOwner(): boolean {\n\t\treturn !!this.previewResult?.scanId;\n\t}\n\n\tget authorName() {\n\t\tif (\n\t\t\tthis.previewResult?.metadata?.author &&\n\t\t\t!(this.previewResult?.scanId && this.resultItem?.resultPreview?.type === EResultPreviewType.Database)\n\t\t)\n\t\t\treturn this.previewResult.metadata?.author;\n\n\t\treturn null;\n\t}\n\n\tget resultType() {\n\t\tif (this.previewResult) {\n\t\t\tswitch (this.previewResult.type) {\n\t\t\t\tcase EResultPreviewType.Internet:\n\t\t\t\t\treturn 'Internet Result';\n\t\t\t\tcase EResultPreviewType.Database:\n\t\t\t\t\treturn 'Shared Data Hub Result';\n\t\t\t\tcase EResultPreviewType.Batch:\n\t\t\t\t\treturn 'Batch Result';\n\t\t\t\tcase EResultPreviewType.Repositroy:\n\t\t\t\t\treturn 'Private Cloud Hub Result';\n\t\t\t\tdefault:\n\t\t\t\t\treturn '';\n\t\t\t}\n\t\t}\n\t\treturn '';\n\t}\n\n\tget isLocked(): boolean {\n\t\treturn !this.showLoader && (this.resultItem?.resultPreview?.isLocked ?? false);\n\t}\n\n\tget firstTag() {\n\t\tif (!this.resultItem?.resultPreview?.tags || this.resultItem?.resultPreview?.tags.length === 0) return null;\n\n\t\t// Check if there is a tag in the tags list with the code 'ai-source-match' and return the first tag that is not the 'ai-source-match' tag\n\t\tconst aiSourceMatchTag = this.resultItem?.resultPreview?.tags.find(\n\t\t\ttag => tag.code === RESULT_TAGS_CODES.AI_SOURCE_MATCH\n\t\t);\n\t\tif (aiSourceMatchTag) {\n\t\t\taiSourceMatchTag.title = $localize`AI Source Match`;\n\t\t\taiSourceMatchTag.description = $localize`AI Source Match blends plagiarism and AI detection to identify reused or repurposed AI-generated content from other sources.`;\n\t\t\treturn aiSourceMatchTag;\n\t\t}\n\n\t\treturn this.resultItem.resultPreview.tags[0];\n\t}\n\n\tget numberOfTags() {\n\t\treturn this.previewResult?.tags?.length ?? 0;\n\t}\n\n\tconstructor(private _matDialog: MatDialog, private _datePipe: DatePipe) {}\n\n\tngOnInit(): void {\n\t\tif (this.resultItem) {\n\t\t\tthis.previewResult = this.resultItem.resultPreview;\n\n\t\t\tthis._updateResultTags();\n\n\t\t\tthis.percentageResult = {\n\t\t\t\tresultItem: this.resultItem,\n\t\t\t\tshowTooltip: true,\n\t\t\t};\n\t\t}\n\n\t\t// check if custom locked result template was passed\n\t\tthis.reportNgTemplatesSvc?.reportTemplatesSubject$.pipe(untilDestroy(this)).subscribe(refs => {\n\t\t\tif (refs?.lockedResultItemTemplateRef !== undefined)\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.lockedResultItemTemplateRef = refs?.lockedResultItemTemplateRef;\n\t\t\t\t});\n\t\t});\n\n\t\tif (this.reportViewSvc)\n\t\t\tthis.reportViewSvc.documentDirection$.pipe(untilDestroy(this)).subscribe(dir => {\n\t\t\t\tthis.docDirection = dir;\n\t\t\t});\n\t}\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif ('resultItem' in changes)\n\t\t\tif (this.resultItem) {\n\t\t\t\tthis.previewResult = this.resultItem.resultPreview;\n\t\t\t\tthis.percentageResult = {\n\t\t\t\t\tresultItem: this.resultItem,\n\t\t\t\t\tshowTooltip: true,\n\t\t\t\t};\n\n\t\t\t\tif (this.resultItem.resultPreview.type === EResultPreviewType.Internet && this.resultItem?.resultPreview?.url) {\n\t\t\t\t\tconst url = new URL(this.resultItem.resultPreview.url);\n\t\t\t\t\tthis.faviconURL = url.host;\n\t\t\t\t}\n\n\t\t\t\t// Add the organization name to the tags list if available\n\t\t\t\tthis._updateResultTags();\n\t\t\t}\n\t}\n\n\tprivate _updateResultTags() {\n\t\t// Add the date tag to the tags list if available which includes the creation date, last modification date and publish date\n\t\tif (\n\t\t\t(this.previewResult?.metadata?.creationDate ||\n\t\t\t\tthis.previewResult?.metadata?.lastModificationDate ||\n\t\t\t\tthis.previewResult?.metadata?.publishDate ||\n\t\t\t\tthis.previewResult?.metadata?.submissionDate) &&\n\t\t\t!this.previewResult?.tags?.find(tag => tag.code === RESULT_TAGS_CODES.SUMMARY_DATE)\n\t\t) {\n\t\t\tconst date =\n\t\t\t\tthis.previewResult.metadata.creationDate ||\n\t\t\t\tthis.previewResult.metadata.lastModificationDate ||\n\t\t\t\tthis.previewResult.metadata.publishDate ||\n\t\t\t\tthis.previewResult.metadata.submissionDate;\n\t\t\tthis.previewResult?.tags?.unshift({\n\t\t\t\ttitle: this._datePipe.transform(date, 'MMM d, y, HH:mm:ss'),\n\t\t\t\tdescription: $localize`Published: ${\n\t\t\t\t\tthis._datePipe.transform(this.previewResult.metadata.publishDate, \"MMM d, y 'at' h:mm a\") || 'not available'\n\t\t\t\t}.\\nCreated: ${\n\t\t\t\t\tthis._datePipe.transform(this.previewResult.metadata.creationDate, \"MMM d, y 'at' h:mm a\") || 'not available'\n\t\t\t\t}.\\nLast modification: ${\n\t\t\t\t\tthis._datePipe.transform(this.previewResult.metadata.lastModificationDate, \"MMM d, y 'at' h:mm a\") ||\n\t\t\t\t\t'not available'\n\t\t\t\t}.\\nSubmission Date: ${\n\t\t\t\t\tthis._datePipe.transform(this.previewResult.metadata.submissionDate, \"MMM d, y 'at' h:mm a\") ||\n\t\t\t\t\t'not available'\n\t\t\t\t}.`,\n\t\t\t\tcode: RESULT_TAGS_CODES.SUMMARY_DATE,\n\t\t\t});\n\t\t}\n\n\t\tif (!!this.resultItem?.resultPreview?.metadata?.organization) {\n\t\t\tif (!this.previewResult.tags) this.previewResult.tags = [];\n\t\t\tif (this.previewResult.tags.find(tag => tag.code === RESULT_TAGS_CODES.ORGANIZATION) === undefined)\n\t\t\t\tthis.previewResult?.tags?.unshift({\n\t\t\t\t\ttitle: this.resultItem?.resultPreview?.metadata?.organization,\n\t\t\t\t\tdescription: $localize`Organization Name`,\n\t\t\t\t\tcode: RESULT_TAGS_CODES.ORGANIZATION,\n\t\t\t\t});\n\t\t}\n\n\t\t// Add the 'Your File' tag to the start of the tags array if the result is a database result and has a scanId and the platofrm that runs the report is APP\n\t\tif (\n\t\t\tthis.resultItem?.resultPreview?.scanId &&\n\t\t\tthis.resultItem?.resultPreview?.type === EResultPreviewType.Database\n\t\t) {\n\t\t\tif (!this.previewResult.tags) this.previewResult.tags = [];\n\t\t\t// push 'Your File' tag to the start of tags array\n\t\t\tif (this.previewResult.tags.find(tag => tag.code === RESULT_TAGS_CODES.YOUR_FILE) === undefined)\n\t\t\t\tthis.previewResult?.tags?.unshift({\n\t\t\t\t\ttitle:\n\t\t\t\t\t\tthis.reportViewSvc?.reportViewMode?.platformType === EPlatformType.APP\n\t\t\t\t\t\t\t? $localize`Your File`\n\t\t\t\t\t\t\t: $localize`Your Organization's File`,\n\t\t\t\t\tdescription:\n\t\t\t\t\t\tthis.reportViewSvc?.reportViewMode?.platformType === EPlatformType.APP\n\t\t\t\t\t\t\t? $localize`This is your file`\n\t\t\t\t\t\t\t: $localize`This is uploaded by your organization`,\n\t\t\t\t\tcode: RESULT_TAGS_CODES.YOUR_FILE,\n\t\t\t\t});\n\t\t}\n\n\t\tif (this.previewResult.tags)\n\t\t\tthis.previewResult.tags = this.previewResult.tags.filter(\n\t\t\t\ttag =>\n\t\t\t\t\ttag.description !== 'File Name' &&\n\t\t\t\t\ttag.description.toLowerCase() !== 'last modification date' &&\n\t\t\t\t\ttag.description.toLowerCase() !== 'submission date' &&\n\t\t\t\t\ttag.description.toLowerCase() !== 'publish date'\n\t\t\t);\n\n\t\t// remove empty tags from the tags list\n\t\tif (this.previewResult?.tags)\n\t\t\tthis.previewResult.tags = this.previewResult.tags.filter(tag => tag.title && tag.title.trim() !== '');\n\n\t\t// Check if there is a tag in the tags list with the code 'ai-source-match' and put it in the first place\n\t\tconst aiSourceMatchTag = this.previewResult?.tags?.find(tag => tag.code === RESULT_TAGS_CODES.AI_SOURCE_MATCH);\n\t\tif (aiSourceMatchTag) {\n\t\t\tif (aiSourceMatchTag.title != 'AI Source Match') {\n\t\t\t\taiSourceMatchTag.title = $localize`AI Source Match`;\n\t\t\t\taiSourceMatchTag.description = $localize`AI Source Match blends plagiarism and AI detection to identify reused or repurposed AI-generated content from other sources.`;\n\t\t\t}\n\t\t\tthis.previewResult.tags = [\n\t\t\t\taiSourceMatchTag,\n\t\t\t\t...this.previewResult.tags.filter(tag => tag.code !== RESULT_TAGS_CODES.AI_SOURCE_MATCH),\n\t\t\t];\n\t\t}\n\t}\n\n\tonFaviconError() {\n\t\tthis.faviconExists = false;\n\t}\n\n\tonFaviconLoad() {\n\t\tthis.faviconExists = true;\n\t}\n\n\tshowResult() {\n\t\tthis.showResultEvent.emit(this.previewResult.id);\n\t\tthis.isResultExcluded = false;\n\t}\n\n\thideResult() {\n\t\tthis.hiddenResultEvent.emit(this.previewResult.id);\n\t\tthis.isResultExcluded = true;\n\t\tthis.highlightService.clearAllMatchs();\n\t\tthis.resultItemMenuTrigger?.closeMenu();\n\t}\n\n\tdeleteResult() {\n\t\tthis._matDialog.open(RemoveResultConfirmationDialogComponent, {\n\t\t\tminWidth: this.isMobile ? '95%' : '',\n\t\t\twidth: this.isMobile ? '' : '670px',\n\t\t\tpanelClass: 'filter-result-dailog',\n\t\t\tariaLabel: $localize`Report Filter Options`,\n\t\t\tautoFocus: false,\n\t\t\tdata: {\n\t\t\t\tisMobile: this.isMobile,\n\t\t\t\treportDataSvc: this.reportDataSvc,\n\t\t\t\tdeleteEndpoint: this.reportDataSvc?.reportEndpointConfig?.deleteResult,\n\t\t\t\tresultInfo: this.resultItem,\n\t\t\t} as IRemoveResultConfirmationDialogData,\n\t\t});\n\t\tthis.highlightService.clearAllMatchs();\n\t}\n\n\tcomapreResult() {\n\t\tthis.reportViewSvc?.reportViewMode$.next({\n\t\t\t...this.reportViewSvc?.reportViewMode,\n\t\t\tviewMode: 'one-to-one',\n\t\t\tsourcePageIndex: 1,\n\t\t\tsuspectPageIndex: 1,\n\t\t\tsuspectId: this.previewResult.id,\n\t\t});\n\t}\n\n\tvisitResultSource() {\n\t\tif (!this.previewResult.url) return;\n\t\twindow.open(this.previewResult.url, '_blank');\n\t}\n\n\topenResultMenu(menuTrigger: MatMenuTrigger): void {\n\t\tmenuTrigger?.openMenu();\n\t}\n\n\tcopyResultURL() {\n\t\tif (!this.previewResult.url) return;\n\t\tnavigator.clipboard.writeText(this.previewResult?.url).then(\n\t\t\t() => {\n\t\t\t\tthis.copyMessage = $localize`URL copied!`;\n\t\t\t\tsetTimeout(() => (this.copyMessage = ''), 3000); // Clear the message after 3 seconds\n\t\t\t},\n\t\t\terr => {\n\t\t\t\tconsole.error('Failed to copy text: ', err);\n\t\t\t\tthis.copyMessage = $localize`Failed to copy text.`;\n\t\t\t}\n\t\t);\n\t}\n\n\topenResultURLInNewTab() {\n\t\tif (this.previewResult?.url) window.open(this.previewResult.url, '_blank');\n\t}\n\n\tngOnDestroy(): void {}\n}\n","<a\n\t@fadeIn\n\tclass=\"result-item-container\"\n\t[ngClass]=\"{\n\t\t'result-item-hover-container': !showLoader && !isLocked,\n\t\t'locked-result-item-container': isLocked\n\t}\"\n\tfxLayout=\"column\"\n\tfxLayoutAlign=\"start center\"\n\t[tabIndex]=\"0\"\n\trole=\"link\"\n\t[dir]=\"docDirection\"\n\taria-label=\"Opens view of the selected result agianst the submitted text\"\n\ti18n-aria-label\n\t(keyup.enter)=\"handleClick()\">\n\t<ng-container *ngIf=\"!isLocked\">\n\t\t<!--  -->\n\t\t<div fxLayout=\"column\" fxLayoutAlign=\"start\" class=\"item-container\">\n\t\t\t<div class=\"item-header-container\" fxLayout=\"row\" fxLayoutAlign=\"space-between start\">\n\t\t\t\t<div class=\"item-header\" fxLayout=\"row\" fxLayoutAlign=\"start start\" fxLayoutGap=\"8px\">\n\t\t\t\t\t<div\n\t\t\t\t\t\t*ngIf=\"!showLoader; else showLogoSkeleton\"\n\t\t\t\t\t\tfxLayout=\"column\"\n\t\t\t\t\t\tfxLayoutAlign=\"center center\"\n\t\t\t\t\t\tclass=\"item-logo\"\n\t\t\t\t\t\t[class.ai-source-match-icon]=\"firstTag?.code === RESULT_TAGS_CODES.AI_SOURCE_MATCH\">\n\t\t\t\t\t\t<ng-container *ngIf=\"firstTag?.code !== RESULT_TAGS_CODES.AI_SOURCE_MATCH; else AISourceMatchResultRef\">\n\t\t\t\t\t\t\t<ng-container [ngSwitch]=\"previewResult.type\">\n\t\t\t\t\t\t\t\t<ng-container *ngSwitchCase=\"eResultPreviewType.Batch\">\n\t\t\t\t\t\t\t\t\t<mat-icon>compare_arrows</mat-icon>\n\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t<ng-container *ngSwitchCase=\"eResultPreviewType.Repositroy\">\n\t\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\t\tclass=\"title-img\"\n\t\t\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\t\t\twidth=\"11\"\n\t\t\t\t\t\t\t\t\t\theight=\"16\"\n\t\t\t\t\t\t\t\t\t\tviewBox=\"0 0 11 16\"\n\t\t\t\t\t\t\t\t\t\tfill=\"none\">\n\t\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\t\td=\"M10.1426 2.58338C10.1426 3.56798 7.91658 4.36598 5.17158 4.36598C2.42658 4.36598 0.200578 3.56798 0.200578 2.58338C0.200578 1.59878 2.42598 0.80078 5.17158 0.80078C7.91718 0.80078 10.1426 1.59878 10.1426 2.58338ZM10.0694 3.40958C10.1174 3.49885 10.1425 3.59862 10.1426 3.69998V6.61598C10.1426 7.46078 7.91238 8.15078 5.17158 8.15078C2.43078 8.15078 0.200578 7.46198 0.200578 6.61598V3.69998C0.200606 3.59893 0.22598 3.49949 0.274378 3.41078C0.694378 4.26398 2.75238 4.88258 5.17158 4.88258C7.59078 4.88258 9.65118 4.26338 10.0682 3.40958H10.0694ZM1.67838 6.14858C1.67187 6.08352 1.64663 6.02175 1.60571 5.97075C1.56478 5.91976 1.50994 5.88174 1.44783 5.8613C1.38573 5.84087 1.31902 5.8389 1.25582 5.85563C1.19261 5.87236 1.13562 5.90707 1.09175 5.95556C1.04789 6.00404 1.01904 6.06422 1.0087 6.12878C0.998364 6.19334 1.00699 6.25951 1.03352 6.31927C1.06005 6.37903 1.10336 6.4298 1.15819 6.46543C1.21301 6.50105 1.27699 6.52001 1.34238 6.51998C1.43598 6.51486 1.52376 6.47295 1.58659 6.40337C1.64942 6.3338 1.68279 6.24222 1.67838 6.14858ZM10.0694 7.27178C10.1174 7.36105 10.1425 7.46082 10.1426 7.56218L10.1426 10.4782C10.1426 11.3242 7.91238 12.013 5.17158 12.013C2.43078 12.013 0.200578 11.3242 0.200578 10.4782L0.200578 7.56218C0.200606 7.46113 0.22598 7.36169 0.274378 7.27298C0.694378 8.12618 2.75238 8.74478 5.17158 8.74478C7.59078 8.74478 9.65118 8.12498 10.0682 7.27178H10.0694ZM1.67778 10.0102C1.67127 9.94512 1.64603 9.88335 1.60511 9.83236C1.56418 9.78136 1.50934 9.74334 1.44723 9.72291C1.38513 9.70247 1.31842 9.7005 1.25522 9.71723C1.19201 9.73396 1.13502 9.76867 1.09115 9.81716C1.04729 9.86564 1.01844 9.92582 1.0081 9.99038C0.997765 10.0549 1.00639 10.1211 1.03292 10.1809C1.05946 10.2406 1.10276 10.2914 1.15759 10.327C1.21241 10.3627 1.27639 10.3816 1.34178 10.3816C1.43548 10.3766 1.52342 10.3348 1.58637 10.2652C1.64933 10.1956 1.68219 10.1039 1.67778 10.0102ZM10.0694 11.0608C10.1172 11.1497 10.1423 11.249 10.1426 11.35V14.266C10.1426 15.112 7.91238 15.8008 5.17158 15.8008C2.43078 15.8008 0.200578 15.112 0.200578 14.266V11.35C0.200425 11.2489 0.22581 11.1494 0.274378 11.0608C0.694378 11.914 2.75238 12.5326 5.17158 12.5326C7.59078 12.5326 9.65118 11.9134 10.0682 11.0608H10.0694ZM1.67778 13.7986C1.68265 13.7515 1.6776 13.704 1.66293 13.659C1.64827 13.6141 1.62432 13.5727 1.59265 13.5375C1.56098 13.5024 1.52228 13.4743 1.47906 13.4551C1.43585 13.4359 1.38908 13.426 1.34178 13.426C1.29448 13.426 1.24771 13.4359 1.20449 13.4551C1.16128 13.4743 1.12258 13.5024 1.09091 13.5375C1.05923 13.5727 1.03529 13.6141 1.02062 13.659C1.00596 13.704 1.0009 13.7515 1.00578 13.7986C1.0009 13.8456 1.00596 13.8932 1.02062 13.9381C1.03529 13.9831 1.05923 14.0245 1.09091 14.0596C1.12258 14.0947 1.16128 14.1228 1.20449 14.1421C1.24771 14.1613 1.29448 14.1712 1.34178 14.1712C1.38908 14.1712 1.43585 14.1613 1.47906 14.1421C1.52228 14.1228 1.56098 14.0947 1.59265 14.0596C1.62432 14.0245 1.64827 13.9831 1.66293 13.9381C1.6776 13.8932 1.68265 13.8456 1.67778 13.7986Z\"\n\t\t\t\t\t\t\t\t\t\t\tfill=\"#3F9AF5\" />\n\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t<ng-container *ngSwitchCase=\"eResultPreviewType.Internet\">\n\t\t\t\t\t\t\t\t\t<ng-container *ngIf=\"faviconExists; else defaultInternetIcon\">\n\t\t\t\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\t\t\t\tclass=\"internet-result-favicon\"\n\t\t\t\t\t\t\t\t\t\t\trole=\"img\"\n\t\t\t\t\t\t\t\t\t\t\t[src]=\"'https://www.google.com/s2/favicons?domain=' + faviconURL\"\n\t\t\t\t\t\t\t\t\t\t\t(error)=\"onFaviconError()\"\n\t\t\t\t\t\t\t\t\t\t\t(load)=\"onFaviconLoad()\"\n\t\t\t\t\t\t\t\t\t\t\talt=\"Internet result icon\"\n\t\t\t\t\t\t\t\t\t\t\ti18n-alt />\n\t\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t\t<ng-template #defaultInternetIcon>\n\t\t\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\t\t\tclass=\"internet-result-icon\"\n\t\t\t\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\t\t\t\twidth=\"16\"\n\t\t\t\t\t\t\t\t\t\t\theight=\"16\"\n\t\t\t\t\t\t\t\t\t\t\tviewBox=\"0 0 16 16\"\n\t\t\t\t\t\t\t\t\t\t\tfill=\"none\">\n\t\t\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\t\t\td=\"M8.13805 0.714853C6.66857 0.716514 5.23258 1.15378 4.01156 1.97139C2.79055 2.78899 1.83933 3.95023 1.27814 5.30832C0.716944 6.66641 0.570971 8.16039 0.858669 9.60143C1.14637 11.0425 1.85482 12.3659 2.89448 13.4044C3.93414 14.4428 5.25834 15.1498 6.6997 15.4359C8.14106 15.7219 9.63488 15.5743 10.9923 15.0115C12.3498 14.4488 13.51 13.4963 14.3262 12.2744C15.1424 11.0524 15.578 9.61593 15.578 8.14645C15.5785 7.16968 15.3863 6.20241 15.0125 5.3C14.6387 4.3976 14.0905 3.57778 13.3995 2.88749C12.7084 2.1972 11.888 1.64998 10.9851 1.27717C10.0823 0.904361 9.11482 0.713275 8.13805 0.714853ZM13.2878 5.17345H11.0942C10.8617 4.25311 10.5173 3.3647 10.0688 2.52805C11.4251 2.99429 12.568 3.9334 13.2884 5.17345H13.2878ZM8.14525 2.23345C8.76929 3.13318 9.24832 4.12524 9.56485 5.17345H6.72625C7.04254 4.1244 7.52157 3.13152 8.14585 2.23105L8.14525 2.23345ZM2.39425 9.63265C2.13664 8.6586 2.13664 7.63431 2.39425 6.66025H4.90585C4.84118 7.15309 4.80652 7.64941 4.80205 8.14645C4.80652 8.6435 4.84118 9.13981 4.90585 9.63265H2.39425ZM3.00325 11.1189H5.19565C5.4282 12.0392 5.77256 12.9276 6.22105 13.7643C4.86407 13.3002 3.72101 12.3605 3.00325 11.1189ZM5.19565 5.17345H3.00325C3.72101 3.93185 4.86407 2.99213 6.22105 2.52805C5.77256 3.3647 5.4282 4.25311 5.19565 5.17345ZM8.14585 14.0613C7.5218 13.1615 7.04277 12.1695 6.72625 11.1213H9.56485C9.24856 12.1696 8.76974 13.1619 8.14585 14.0619V14.0613ZM9.88585 9.63205H6.40585C6.33208 9.13996 6.29198 8.64341 6.28585 8.14585C6.29168 7.64829 6.33178 7.15171 6.40585 6.65965H9.88585C9.95992 7.15171 10 7.64829 10.0058 8.14585C9.99934 8.64364 9.95885 9.14039 9.88465 9.63265L9.88585 9.63205ZM10.0718 13.7637C10.5193 12.9271 10.8626 12.0389 11.0942 11.1189H13.2866C12.5671 12.3582 11.4255 13.2973 10.0706 13.7643L10.0718 13.7637ZM11.387 9.63205C11.4517 9.13921 11.4864 8.6429 11.4908 8.14585C11.4864 7.64881 11.4517 7.15249 11.387 6.65965H13.8986C14.1563 7.63371 14.1563 8.658 13.8986 9.63205H11.387Z\"\n\t\t\t\t\t\t\t\t\t\t\t\tfill=\"#3F9AF5\" />\n\t\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t<ng-container *ngSwitchCase=\"eResultPreviewType.Database\">\n\t\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\t\tclass=\"title-img\"\n\t\t\t\t\t\t\t\t\t\twidth=\"17\"\n\t\t\t\t\t\t\t\t\t\theight=\"22\"\n\t\t\t\t\t\t\t\t\t\tviewBox=\"0 0 17 22\"\n\t\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\t\td=\"M13.8584 2.77719C13.8584 4.08999 10.8904 5.15399 7.2304 5.15399C3.5704 5.15399 0.602398 4.08999 0.602398 2.77719C0.602398 1.46439 3.5696 0.40039 7.2304 0.40039C10.8912 0.40039 13.8584 1.46439 13.8584 2.77719ZM13.7608 3.87879C13.8248 3.99782 13.8583 4.13085 13.8584 4.26599V8.15399C13.8584 9.28039 10.8848 10.2004 7.2304 10.2004C3.576 10.2004 0.602398 9.28199 0.602398 8.15399V4.26599C0.602436 4.13125 0.636267 3.99867 0.700798 3.88039C1.2608 5.01799 4.0048 5.84279 7.2304 5.84279C10.456 5.84279 13.2032 5.01719 13.7592 3.87879H13.7608ZM2.5728 7.53079C2.56413 7.44405 2.53047 7.36168 2.4759 7.29369C2.42134 7.2257 2.34822 7.175 2.26541 7.14776C2.1826 7.12051 2.09366 7.11788 2.00938 7.14019C1.92511 7.16249 1.84912 7.20878 1.79063 7.27343C1.73215 7.33807 1.69368 7.41831 1.6799 7.50439C1.66611 7.59047 1.67761 7.6787 1.71299 7.75838C1.74837 7.83805 1.80611 7.90575 1.87921 7.95325C1.95231 8.00075 2.03762 8.02602 2.1248 8.02599C2.2496 8.01916 2.36664 7.96328 2.45041 7.87052C2.53418 7.77775 2.57869 7.65564 2.5728 7.53079ZM13.7608 9.02839C13.8248 9.14742 13.8583 9.28045 13.8584 9.41559L13.8584 13.3036C13.8584 14.4316 10.8848 15.35 7.2304 15.35C3.576 15.35 0.602398 14.4316 0.602398 13.3036L0.602398 9.41559C0.602436 9.28085 0.636267 9.14827 0.700798 9.02999C1.2608 10.1676 4.0048 10.9924 7.2304 10.9924C10.456 10.9924 13.2032 10.166 13.7592 9.02839H13.7608ZM2.572 12.6796C2.56333 12.5928 2.52967 12.5105 2.4751 12.4425C2.42054 12.3745 2.34742 12.3238 2.26461 12.2966C2.1818 12.2693 2.09286 12.2667 2.00858 12.289C1.92431 12.3113 1.84832 12.3576 1.78983 12.4222C1.73135 12.4869 1.69288 12.5671 1.6791 12.6532C1.66531 12.7393 1.67681 12.8275 1.71219 12.9072C1.74757 12.9869 1.80531 13.0545 1.87841 13.1021C1.95151 13.1496 2.03682 13.1748 2.124 13.1748C2.24894 13.1682 2.36619 13.1124 2.45013 13.0196C2.53407 12.9268 2.57788 12.8046 2.572 12.6796ZM13.7608 14.0804C13.8245 14.1989 13.8581 14.3314 13.8584 14.466L13.8584 18.354C13.8584 19.482 10.8848 20.4004 7.2304 20.4004C3.576 20.4004 0.602398 19.482 0.602398 18.354V14.466C0.602195 14.3312 0.636042 14.1986 0.700798 14.0804C1.2608 15.218 4.0048 16.0428 7.2304 16.0428C10.456 16.0428 13.2032 15.2172 13.7592 14.0804H13.7608ZM2.572 17.7308C2.5785 17.6681 2.57176 17.6047 2.5522 17.5447C2.53265 17.4848 2.50073 17.4296 2.45849 17.3827C2.41626 17.3359 2.36467 17.2985 2.30704 17.2728C2.24942 17.2472 2.18706 17.234 2.124 17.234C2.06093 17.234 1.99857 17.2472 1.94095 17.2728C1.88333 17.2985 1.83174 17.3359 1.7895 17.3827C1.74727 17.4296 1.71535 17.4848 1.69579 17.5447C1.67624 17.6047 1.6695 17.6681 1.676 17.7308C1.6695 17.7935 1.67624 17.8569 1.69579 17.9169C1.71535 17.9768 1.74727 18.032 1.7895 18.0788C1.83174 18.1257 1.88333 18.1631 1.94095 18.1888C1.99857 18.2144 2.06093 18.2276 2.124 18.2276C2.18706 18.2276 2.24942 18.2144 2.30704 18.1888C2.36467 18.1631 2.41626 18.1257 2.45849 18.0788C2.50073 18.032 2.53265 17.9768 2.5522 17.9169C2.57176 17.8569 2.5785 17.7935 2.572 17.7308Z\"\n\t\t\t\t\t\t\t\t\t\t\tfill=\"#3F9AF5\" />\n\t\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\t\td=\"M16.358 20.1885C17.9652 18.1424 17.6915 15.2448 15.6962 13.5372C13.5368 11.6653 10.1284 12.1681 8.58089 14.5827C6.71 17.4553 8.38186 21.2888 11.7057 21.9061C13.4074 22.2696 15.2932 21.5576 16.363 20.1885H16.358Z\"\n\t\t\t\t\t\t\t\t\t\t\tfill=\"#FBFFFF\" />\n\t\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\t\td=\"M17.3882 19.6885H17.2787C18.429 17.5257 17.9692 14.8253 16.0225 13.1583C13.631 11.0866 9.87147 11.6443 8.16091 14.3114C6.09755 17.4818 7.9397 21.7106 11.6078 22.3965C13.5002 22.7978 15.5742 22.0102 16.757 20.4964L17.3882 19.6885ZM15.2808 19.0944L15.2808 19.0944L15.2777 19.0988C14.6768 19.9509 13.7076 20.4851 12.6013 20.4851L12.5986 20.4851C10.2392 20.498 8.62123 17.9763 9.60659 15.8388C9.86246 15.2919 10.2521 14.8105 10.7391 14.5024L10.7506 14.4951L10.7617 14.4872C12.0914 13.5405 14.063 13.8547 15.0726 15.0713L15.0726 15.0713L15.0783 15.078C16.0653 16.2258 16.1378 17.9069 15.2808 19.0944Z\"\n\t\t\t\t\t\t\t\t\t\t\tfill=\"#3F9AF5\"\n\t\t\t\t\t\t\t\t\t\t\tstroke=\"#FBFFFF\" />\n\t\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\t\td=\"M12.6716 19.8856C11.149 19.9006 9.915 18.6609 9.92992 17.1474C9.91002 15.6389 11.144 14.3993 12.6566 14.4142C13.4577 14.4092 14.0847 14.6631 14.632 15.1809L13.9304 15.8829C13.607 15.5294 13.1642 15.3751 12.6566 15.3751C11.6466 15.3601 10.9699 16.1567 10.9898 17.1524C10.9599 18.1382 11.6515 18.9497 12.6616 18.9297C13.199 18.9347 13.617 18.7655 13.9653 18.407L14.6669 19.109C14.1195 19.6168 13.4528 19.9055 12.6716 19.8956V19.8856Z\"\n\t\t\t\t\t\t\t\t\t\t\tfill=\"#0B163E\" />\n\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t<ng-container *ngSwitchDefault>\n\t\t\t\t\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n\t\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\t\td=\"M8.13805 0.714853C6.66857 0.716514 5.23258 1.15378 4.01156 1.97139C2.79055 2.78899 1.83933 3.95023 1.27814 5.30832C0.716944 6.66641 0.570971 8.16039 0.858669 9.60143C1.14637 11.0425 1.85482 12.3659 2.89448 13.4044C3.93414 14.4428 5.25834 15.1498 6.6997 15.4359C8.14106 15.7219 9.63488 15.5743 10.9923 15.0115C12.3498 14.4488 13.51 13.4963 14.3262 12.2744C15.1424 11.0524 15.578 9.61593 15.578 8.14645C15.5785 7.16968 15.3863 6.20241 15.0125 5.3C14.6387 4.3976 14.0905 3.57778 13.3995 2.88749C12.7084 2.1972 11.888 1.64998 10.9851 1.27717C10.0823 0.904361 9.11482 0.713275 8.13805 0.714853ZM13.2878 5.17345H11.0942C10.8617 4.25311 10.5173 3.3647 10.0688 2.52805C11.4251 2.99429 12.568 3.9334 13.2884 5.17345H13.2878ZM8.14525 2.23345C8.76929 3.13318 9.24832 4.12524 9.56485 5.17345H6.72625C7.04254 4.1244 7.52157 3.13152 8.14585 2.23105L8.14525 2.23345ZM2.39425 9.63265C2.13664 8.6586 2.13664 7.63431 2.39425 6.66025H4.90585C4.84118 7.15309 4.80652 7.64941 4.80205 8.14645C4.80652 8.6435 4.84118 9.13981 4.90585 9.63265H2.39425ZM3.00325 11.1189H5.19565C5.4282 12.0392 5.77256 12.9276 6.22105 13.7643C4.86407 13.3002 3.72101 12.3605 3.00325 11.1189ZM5.19565 5.17345H3.00325C3.72101 3.93185 4.86407 2.99213 6.22105 2.52805C5.77256 3.3647 5.4282 4.25311 5.19565 5.17345ZM8.14585 14.0613C7.5218 13.1615 7.04277 12.1695 6.72625 11.1213H9.56485C9.24856 12.1696 8.76974 13.1619 8.14585 14.0619V14.0613ZM9.88585 9.63205H6.40585C6.33208 9.13996 6.29198 8.64341 6.28585 8.14585C6.29168 7.64829 6.33178 7.15171 6.40585 6.65965H9.88585C9.95992 7.15171 10 7.64829 10.0058 8.14585C9.99934 8.64364 9.95885 9.14039 9.88465 9.63265L9.88585 9.63205ZM10.0718 13.7637C10.5193 12.9271 10.8626 12.0389 11.0942 11.1189H13.2866C12.5671 12.3582 11.4255 13.2973 10.0706 13.7643L10.0718 13.7637ZM11.387 9.63205C11.4517 9.13921 11.4864 8.6429 11.4908 8.14585C11.4864 7.64881 11.4517 7.15249 11.387 6.65965H13.8986C14.1563 7.63371 14.1563 8.658 13.8986 9.63205H11.387Z\"\n\t\t\t\t\t\t\t\t\t\t\tfill=\"#3F9AF5\" />\n\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t<ng-template #AISourceMatchResultRef>\n\t\t\t\t\t\t\t<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t\t\t\t<rect x=\"0.5\" y=\"0.5\" width=\"23\" height=\"23\" rx=\"11.5\" fill=\"#FBFFFF\" />\n\t\t\t\t\t\t\t\t<rect\n\t\t\t\t\t\t\t\t\tx=\"0.5\"\n\t\t\t\t\t\t\t\t\ty=\"0.5\"\n\t\t\t\t\t\t\t\t\twidth=\"23\"\n\t\t\t\t\t\t\t\t\theight=\"23\"\n\t\t\t\t\t\t\t\t\trx=\"11.5\"\n\t\t\t\t\t\t\t\t\tfill=\"url(#paint0_linear_8004_807)\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"0.6\" />\n\t\t\t\t\t\t\t\t<rect x=\"0.5\" y=\"0.5\" width=\"23\" height=\"23\" rx=\"11.5\" stroke=\"#FD7366\" />\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tfill-rule=\"evenodd\"\n\t\t\t\t\t\t\t\t\tclip-rule=\"evenodd\"\n\t\t\t\t\t\t\t\t\td=\"M20.0446 11.0705C18.6459 7.9903 15.4821 6 11.9844 6C10.2063 6 8.4904 6.50961 7.02244 7.47352C5.55448 8.43744 4.43695 9.78841 3.79101 11.3801L3.60156 11.8469L3.79101 12.3135C4.43695 13.9053 5.55433 15.2563 7.02244 16.2202C8.49056 17.1841 10.2063 17.6937 11.9844 17.6937C13.1555 17.6937 14.2892 17.4706 15.3317 17.0581L14.4282 16.1287C13.7068 16.5073 12.8792 16.7225 11.9993 16.7225C9.19679 16.7225 6.9249 14.5396 6.9249 11.8469C6.9249 9.15414 9.19679 6.97124 11.9993 6.97124C14.8018 6.97124 17.0737 9.15414 17.0737 11.8469C17.0737 12.8102 16.783 13.7083 16.2811 14.4645L17.5593 15.7793C18.6154 14.9478 19.4759 13.8756 20.0446 12.6232L20.3971 11.8469L20.0446 11.0705ZM17.0635 16.1422L15.9093 14.9549C15.6329 15.2755 15.3146 15.5616 14.9625 15.8054L15.9269 16.7974C16.3226 16.6066 16.7026 16.3876 17.0635 16.1422Z\"\n\t\t\t\t\t\t\t\t\tfill=\"#FD7366\" />\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\td=\"M14.6909 14.8174C13.1075 16.3627 10.5648 16.3293 9.02223 14.7426C7.47966 13.1559 7.51299 10.6085 9.09635 9.06323C10.6797 7.51794 13.2224 7.55134 14.765 9.13799C16.3077 10.7246 16.2742 13.2721 14.6909 14.8174ZM9.58373 9.56455C8.27643 10.8404 8.24891 12.9443 9.52259 14.2543C10.7963 15.5643 12.8962 15.592 14.2035 14.316C15.5108 13.0401 15.5383 10.9363 14.2646 9.62629C12.9909 8.31632 10.891 8.28865 9.58373 9.56455Z\"\n\t\t\t\t\t\t\t\t\tfill=\"#FBFFFF\" />\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\td=\"M14.6909 14.8174C13.1075 16.3627 10.5648 16.3293 9.02223 14.7426C7.47966 13.1559 7.51299 10.6085 9.09635 9.06323C10.6797 7.51794 13.2224 7.55134 14.765 9.13799C16.3077 10.7246 16.2742 13.2721 14.6909 14.8174ZM9.58373 9.56455C8.27643 10.8404 8.24891 12.9443 9.52259 14.2543C10.7963 15.5643 12.8962 15.592 14.2035 14.316C15.5108 13.0401 15.5383 10.9363 14.2646 9.62629C12.9909 8.31632 10.891 8.28865 9.58373 9.56455Z\"\n\t\t\t\t\t\t\t\t\tfill=\"url(#paint1_linear_8004_807)\" />\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tfill-rule=\"evenodd\"\n\t\t\t\t\t\t\t\t\tclip-rule=\"evenodd\"\n\t\t\t\t\t\t\t\t\td=\"M9.85214 12.8185C10.1241 13.506 10.7059 14.0366 11.4249 14.2376L11.661 12.9221C11.4488 12.824 11.2758 12.6639 11.1605 12.4683L9.85214 12.8185ZM9.69733 12.1791L10.7301 11.9027L9.69912 11.6841C9.69015 11.7683 9.68555 11.8537 9.68555 11.9403C9.68555 12.0209 9.68954 12.1005 9.69733 12.1791ZM13.5723 10.0939C13.162 9.75743 12.6374 9.55554 12.0658 9.55554C11.0684 9.55554 10.2144 10.1701 9.86026 11.0418L11.1527 11.3158C11.3879 10.8975 11.8671 10.6492 12.3632 10.7317C12.5186 10.7575 12.661 10.8133 12.7857 10.8923L13.5723 10.0939ZM13.9318 10.4597L13.1458 11.2574C13.2876 11.4883 13.3481 11.7709 13.2961 12.0609C13.2049 12.5685 12.797 12.9436 12.3132 13.0154L12.0781 14.325C13.387 14.3183 14.446 13.2532 14.446 11.9403C14.446 11.3809 14.2537 10.8664 13.9318 10.4597Z\"\n\t\t\t\t\t\t\t\t\tfill=\"#A188FF\" />\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tfill-rule=\"evenodd\"\n\t\t\t\t\t\t\t\t\tclip-rule=\"evenodd\"\n\t\t\t\t\t\t\t\t\td=\"M14.9609 15.8053L16.907 17.8071C17.0255 17.9292 17.1841 17.9974 17.3539 17.9999H17.3626C17.5292 17.9999 17.686 17.9357 17.8055 17.8193C18.0563 17.5747 18.0617 17.1706 17.8173 16.9191L15.9077 14.9548C15.6313 15.2755 15.3131 15.5615 14.9609 15.8053Z\"\n\t\t\t\t\t\t\t\t\tfill=\"#FBFFFF\" />\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tfill-rule=\"evenodd\"\n\t\t\t\t\t\t\t\t\tclip-rule=\"evenodd\"\n\t\t\t\t\t\t\t\t\td=\"M14.9609 15.8053L16.907 17.8071C17.0255 17.9292 17.1841 17.9974 17.3539 17.9999H17.3626C17.5292 17.9999 17.686 17.9357 17.8055 17.8193C18.0563 17.5747 18.0617 17.1706 17.8173 16.9191L15.9077 14.9548C15.6313 15.2755 15.3131 15.5615 14.9609 15.8053Z\"\n\t\t\t\t\t\t\t\t\tfill=\"url(#paint2_linear_8004_807)\" />\n\t\t\t\t\t\t\t\t<defs>\n\t\t\t\t\t\t\t\t\t<linearGradient\n\t\t\t\t\t\t\t\t\t\tid=\"paint0_linear_8004_807\"\n\t\t\t\t\t\t\t\t\t\tx1=\"10.0134\"\n\t\t\t\t\t\t\t\t\t\ty1=\"0.232098\"\n\t\t\t\t\t\t\t\t\t\tx2=\"8.37462\"\n\t\t\t\t\t\t\t\t\t\ty2=\"26.8629\"\n\t\t\t\t\t\t\t\t\t\tgradientUnits=\"userSpaceOnUse\">\n\t\t\t\t\t\t\t\t\t\t<stop stop-color=\"#F8EAFF\" />\n\t\t\t\t\t\t\t\t\t\t<stop offset=\"1\" stop-color=\"#D7C5FF\" />\n\t\t\t\t\t\t\t\t\t</linearGradient>\n\t\t\t\t\t\t\t\t\t<linearGradient\n\t\t\t\t\t\t\t\t\t\tid=\"paint1_linear_8004_807\"\n\t\t\t\t\t\t\t\t\t\tx1=\"7.88672\"\n\t\t\t\t\t\t\t\t\t\ty1=\"12.5462\"\n\t\t\t\t\t\t\t\t\t\tx2=\"15.3784\"\n\t\t\t\t\t\t\t\t\t\ty2=\"14.524\"\n\t\t\t\t\t\t\t\t\t\tgradientUnits=\"userSpaceOnUse\">\n\t\t\t\t\t\t\t\t\t\t<stop stop-color=\"#BCA6FF\" />\n\t\t\t\t\t\t\t\t\t\t<stop offset=\"1\" stop-color=\"#9345F9\" />\n\t\t\t\t\t\t\t\t\t</linearGradient>\n\t\t\t\t\t\t\t\t\t<linearGradient\n\t\t\t\t\t\t\t\t\t\tid=\"paint2_linear_8004_807\"\n\t\t\t\t\t\t\t\t\t\tx1=\"14.9609\"\n\t\t\t\t\t\t\t\t\t\ty1=\"16.7072\"\n\t\t\t\t\t\t\t\t\t\tx2=\"17.7997\"\n\t\t\t\t\t\t\t\t\t\ty2=\"17.4558\"\n\t\t\t\t\t\t\t\t\t\tgradientUnits=\"userSpaceOnUse\">\n\t\t\t\t\t\t\t\t\t\t<stop stop-color=\"#BCA6FF\" />\n\t\t\t\t\t\t\t\t\t\t<stop offset=\"1\" stop-color=\"#9345F9\" />\n\t\t\t\t\t\t\t\t\t</linearGradient>\n\t\t\t\t\t\t\t\t</defs>\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t</div>\n\t\t\t\t\t<ng-template #showLogoSkeleton>\n\t\t\t\t\t\t<ngx-skeleton-loader class=\"logo-skeleton\" [appearance]=\"'circle'\"></ngx-skeleton-loader>\n\t\t\t\t\t</ng-template>\n\t\t\t\t\t<div class=\"title-author-container\" fxLayout=\"column\" fxLayoutAlign=\"start\" fxLayoutGap=\"2px\">\n\t\t\t\t\t\t<ng-container *ngIf=\"!showLoader; else showTitleSkeleton\">\n\t\t\t\t\t\t\t<span class=\"item-title\" [ngClass]=\"{ 'mobile-text': isMobile }\">\n\t\t\t\t\t\t\t\t{{ previewResult?.metadata?.filename ?? previewResult.title }}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<div class=\"author-name\">\n\t\t\t\t\t\t\t\t<span>{{ resultType }}</span>\n\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\t*ngIf=\"(resultItem?.resultPreview?.tags && resultItem?.resultPreview?.tags?.length) || authorName\"\n\t\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\t\twidth=\"5\"\n\t\t\t\t\t\t\t\t\theight=\"5\"\n\t\t\t\t\t\t\t\t\tviewBox=\"0 0 5 5\"\n\t\t\t\t\t\t\t\t\tfill=\"none\">\n\t\t\t\t\t\t\t\t\t<ellipse cx=\"2.07075\" cy=\"2.83008\" rx=\"2.07075\" ry=\"2\" fill=\"#9DA9BF\" />\n\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t*ngIf=\"authorName\"\n\t\t\t\t\t\t\t\t\tclass=\"author-name-text\"\n\t\t\t\t\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t\t\t\t\t\t[matTooltip]=\"authorName\">\n\t\t\t\t\t\t\t\t\t{{ authorName }}\n\t\t\t\t\t\t\t\t</span>\n\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclass=\"chips-container\"\n\t\t\t\t\t\t\t\t\t[class.non-empty-container]=\"numberOfTags > 0\"\n\t\t\t\t\t\t\t\t\taria-label=\"This is a list of tags the are associated with the given results\"\n\t\t\t\t\t\t\t\t\t[class.suspected-ai-generated-container]=\"firstTag?.code === RESULT_TAGS_CODES.AI_SOURCE_MATCH\"\n\t\t\t\t\t\t\t\t\ti18n-aria-label\n\t\t\t\t\t\t\t\t\trole=\"list\">\n\t\t\t\t\t\t\t\t\t<mat-chip-option\n\t\t\t\t\t\t\t\t\t\t*ngIf=\"firstTag\"\n\t\t\t\t\t\t\t\t\t\tclass=\"first-tag\"\n\t\t\t\t\t\t\t\t\t\t[class.one-tag]=\"numberOfTags === 1\"\n\t\t\t\t\t\t\t\t\t\t[class]=\"firstTag.code\"\n\t\t\t\t\t\t\t\t\t\t[matTooltip]=\"firstTag.description | decodeUri\"\n\t\t\t\t\t\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t\t\t\t\t\t\ti18n-matTooltip\n\t\t\t\t\t\t\t\t\t\t[tabIndex]=\"0\"\n\t\t\t\t\t\t\t\t\t\trole=\"listitem\"\n\t\t\t\t\t\t\t\t\t\taria-label=\"Opens view of the selected result agianst the submitted text\"\n\t\t\t\t\t\t\t\t\t\ti18n-aria-label\n\t\t\t\t\t\t\t\t\t\t(click)=\"handleClick()\">\n\t\t\t\t\t\t\t\t\t\t{{ firstTag.title | decodeUri }}\n\t\t\t\t\t\t\t\t\t</mat-chip-option>\n\n\t\t\t\t\t\t\t\t\t<mat-chip-option\n\t\t\t\t\t\t\t\t\t\t*ngIf=\"numberOfTags > 1\"\n\t\t\t\t\t\t\t\t\t\tclass=\"plus-chip\"\n\t\t\t\t\t\t\t\t\t\t(click)=\"handleClick()\"\n\t\t\t\t\t\t\t\t\t\t[tabIndex]=\"0\"\n\t\t\t\t\t\t\t\t\t\trole=\"listitem\"\n\t\t\t\t\t\t\t\t\t\taria-label=\"Opens view of the selected result agianst the submitted text\"\n\t\t\t\t\t\t\t\t\t\ti18n-aria-label>\n\t\t\t\t\t\t\t\t\t\t{{ '+' + (numberOfTags - 1) }}\n\t\t\t\t\t\t\t\t\t</mat-chip-option>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t<ng-template #showTitleSkeleton>\n\t\t\t\t\t\t\t<ngx-skeleton-loader class=\"title-skeleton skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t\t<ngx-skeleton-loader class=\"author-name-skeleton skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<ng-container *ngIf=\"!showLoader\">\n\t\t\t\t\t<ng-container *ngIf=\"!excludeView; else showExcludeResult\">\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tmat-icon-button\n\t\t\t\t\t\t\tclass=\"icon-button\"\n\t\t\t\t\t\t\t[matMenuTriggerFor]=\"menu\"\n\t\t\t\t\t\t\tmatTooltip=\"More Options\"\n\t\t\t\t\t\t\ti18n-matTooltip\n\t\t\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t\t\t\taria-label=\"More Options\"\n\t\t\t\t\t\t\ti18n-aria-label\n\t\t\t\t\t\t\t#menuTrigger=\"matMenuTrigger\"\n\t\t\t\t\t\t\t[tabIndex]=\"0\"\n\t\t\t\t\t\t\t[attr.aria-hidden]=\"false\"\n\t\t\t\t\t\t\t(keyup.enter)=\"$event.stopPropagation(); $event.preventDefault(); openResultMenu(menuTrigger)\"\n\t\t\t\t\t\t\t(click)=\"$event.stopPropagation()\">\n\t\t\t\t\t\t\t<mat-icon>more_vert</mat-icon>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</ng-container>\n\n\t\t\t\t\t<ng-template #showExcludeResult>\n\t\t\t\t\t\t<ng-container *ngIf=\"isResultExcluded; else showResultRef\">\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\tmat-icon-button\n\t\t\t\t\t\t\t\t(click)=\"showResult()\"\n\t\t\t\t\t\t\t\tclass=\"icon-button\"\n\t\t\t\t\t\t\t\tmatTooltip=\"Include result\"\n\t\t\t\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t\t\t\t\ti18n-matTooltip\n\t\t\t\t\t\t\t\taria-label=\"Includes result in report\"\n\t\t\t\t\t\t\t\ti18n-aria-label>\n\t\t\t\t\t\t\t\t<mat-icon class=\"exclude-result\" mat-icon fontSet=\"material-icons-outlined\">visibility</mat-icon>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t<ng-template #showResultRef>\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\tmat-icon-button\n\t\t\t\t\t\t\t\t(click)=\"hideResult()\"\n\t\t\t\t\t\t\t\tclass=\"icon-button\"\n\t\t\t\t\t\t\t\tmatTooltip=\"Exclude result\"\n\t\t\t\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t\t\t\t\ti18n-matTooltip\n\t\t\t\t\t\t\t\taria-label=\"Exclude result in report\"\n\t\t\t\t\t\t\t\ti18n-aria-label>\n\t\t\t\t\t\t\t\t<mat-icon class=\"exclude-result\" mat-icon fontSet=\"material-icons-outlined\">visibility_off</mat-icon>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t</ng-template>\n\t\t\t\t</ng-container>\n\t\t\t</div>\n\t\t\t<!--  -->\n\t\t\t<div class=\"item-body\" *ngIf=\"showItemBody\">\n\t\t\t\t<ng-container *ngIf=\"!showLoader; else showItemBodySkeleton\">\n\t\t\t\t\t<div *ngIf=\"previewResult?.url\" class=\"item-url-container\">\n\t\t\t\t\t\t<ng-container *ngIf=\"copyMessage; else showItemURL\">\n\t\t\t\t\t\t\t<mat-chip-option class=\"copied-url-chip\">\n\t\t\t\t\t\t\t\t<div class=\"copied-url-chip-content-container\">\n\t\t\t\t\t\t\t\t\t<mat-icon fontSet=\"material-icons-round\">done</mat-icon>\n\t\t\t\t\t\t\t\t\t<div class=\"copy-message\" i18n>{{ copyMessage }}</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</mat-chip-option>\n\t\t\t\t\t\t</ng-container>\n\n\t\t\t\t\t\t<ng-template #showItemURL>\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\tclass=\"copy-url-button\"\n\t\t\t\t\t\t\t\t(click)=\"$event.preventDefault(); $event.stopPropagation(); copyResultURL()\"\n\t\t\t\t\t\t\t\tmatTooltip=\"Copy result URL to clipboard\"\n\t\t\t\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t\t\t\t\ti18n-matTooltip>\n\t\t\t\t\t\t\t\t<mat-icon fontSet=\"material-icons-round\">content_copy</mat-icon>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\tclass=\"copy-url-button\"\n\t\t\t\t\t\t\t\tmatTooltip=\"Open result URL in a new tab\"\n\t\t\t\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t\t\t\t\ti18n-matTooltip\n\t\t\t\t\t\t\t\t(click)=\"$event.preventDefault(); $event.stopPropagation(); openResultURLInNewTab()\">\n\t\t\t\t\t\t\t\t<mat-icon fontSet=\"material-icons-round\">open_in_new</mat-icon>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tclass=\"item-url\"\n\t\t\t\t\t\t\t\t[href]=\"previewResult.url\"\n\t\t\t\t\t\t\t\t[title]=\"previewResult.url\"\n\t\t\t\t\t\t\t\t(click)=\"$event.preventDefault()\">\n\t\t\t\t\t\t\t\t{{ !!previewResult.url ? (previewResult.url | removeProtocol) : previewResult.url }}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div *ngIf=\"previewResult.introduction\" class=\"item-introduction\" [ngClass]=\"{ 'mobile-text': isMobile }\">\n\t\t\t\t\t\t{{ previewResult.introduction }}\n\t\t\t\t\t</div>\n\t\t\t\t</ng-container>\n\t\t\t\t<ng-template #showItemBodySkeleton>\n\t\t\t\t\t<ngx-skeleton-loader class=\"url-skeleton skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t<ngx-skeleton-loader class=\"introduction-skeleton skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t</ng-template>\n\t\t\t</div>\n\t\t</div>\n\t\t<!--  -->\n\t\t<div\n\t\t\t*ngIf=\"resultItem?.resultDetails || showLoader\"\n\t\t\tclass=\"percentage-result-item-container\"\n\t\t\tfxLayout=\"row\"\n\t\t\tfxLayoutGap=\"8px\"\n\t\t\tfxLayoutAlign=\"start center\">\n\t\t\t<ng-container *ngIf=\"!showLoader; else showPercentageSkeleton\">\n\t\t\t\t<cr-percentage-result-item\n\t\t\t\t\t[percentageResult]=\"percentageResult\"\n\t\t\t\t\t[excludeResult]=\"excludeView\"\n\t\t\t\t\t[reportViewService]=\"reportViewSvc\"\n\t\t\t\t\t[reportDataSvc]=\"reportDataSvc\"></cr-percentage-result-item>\n\t\t\t</ng-container>\n\t\t\t<ng-template #showPercentageSkeleton>\n\t\t\t\t<ngx-skeleton-loader\n\t\t\t\t\tclass=\"percentage-skeleton skeleton\"\n\t\t\t\t\t[count]=\"1\"\n\t\t\t\t\t[appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t</ng-template>\n\t\t</div>\n\t</ng-container>\n\t<!--  -->\n\t<ng-container *ngIf=\"isLocked\">\n\t\t<div class=\"locked-result-container\" *ngIf=\"!lockedResultItemTemplateRef\">\n\t\t\t<ng-container>\n\t\t\t\t<mat-icon>lock</mat-icon>\n\t\t\t\t<span i18n>Locked Result</span>\n\t\t\t</ng-container>\n\t\t</div>\n\t\t<!--  -->\n\t\t<ng-container *ngIf=\"lockedResultItemTemplateRef\">\n\t\t\t<ng-container\n\t\t\t\t[ngTemplateOutlet]=\"lockedResultItemTemplateRef\"\n\t\t\t\t[ngTemplateOutletContext]=\"{ result: resultItem }\"></ng-container>\n\t\t</ng-container>\n\t</ng-container>\n</a>\n\n<mat-menu class=\"result-item-menu-list\" #menu=\"matMenu\" yPosition=\"below\">\n\t<button mat-menu-item (click)=\"$event.stopPropagation(); hideResult()\" [disableRipple]=\"true\">\n\t\t<mat-icon class=\"mat-menu-item-icon\" fontSet=\"material-icons-outlined\">visibility_off</mat-icon>\n\t\t<span class=\"mat-menu-item-text\" i18n>Exclude result</span>\n\t</button>\n\t<a\n\t\t*ngIf=\"\n\t\t\treportDataSvc?.reportEndpointConfig?.deleteResult && previewResult?.type != eResultPreviewType.Internet && isOwner\n\t\t\"\n\t\tmat-menu-item\n\t\t(click)=\"deleteResult()\"\n\t\t[disableRipple]=\"true\"\n\t\t[tabIndex]=\"0\">\n\t\t<mat-icon class=\"mat-menu-item-icon\" fontSet=\"material-icons-round\">delete</mat-icon>\n\t\t<span class=\"mat-menu-item-text\" i18n>Delete result</span>\n\t</a>\n\t<a\n\t\t*ngIf=\"previewResult?.url\"\n\t\tmat-menu-item\n\t\t(click)=\"visitResultSource()\"\n\t\t(keyup.enter)=\"visitResultSource()\"\n\t\t[disableRipple]=\"true\"\n\t\t[tabIndex]=\"0\">\n\t\t<mat-icon class=\"mat-menu-item-icon\" fontSet=\"material-icons-round\">open_in_new</mat-icon>\n\t\t<span class=\"mat-menu-item-text\" i18n>Visit result source</span>\n\t</a>\n\t<a mat-menu-item (click)=\"comapreResult()\" (keyup.enter)=\"comapreResult()\" [disableRipple]=\"true\" [tabIndex]=\"0\">\n\t\t<mat-icon class=\"mat-menu-item-icon\" fontSet=\"material-icons-round\">compare_arrows</mat-icon>\n\t\t<span class=\"mat-menu-item-text\" i18n>Compare with submitted file</span>\n\t</a>\n</mat-menu>\n","import {\n\tAfterViewInit,\n\tComponent,\n\tElementRef,\n\tEventEmitter,\n\tInput,\n\tOnInit,\n\tOutput,\n\tRenderer2,\n\tViewChild,\n} from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime, startWith } from 'rxjs/operators';\nimport { IResultItem } from '../../../../components/containers/report-results-item-container/components/models/report-result-item.models';\nimport { ReportDataService } from '../../../../services/report-data.service';\nimport { ReportViewService } from '../../../../services/report-view.service';\nimport { ReportMatchHighlightService } from '../../../../services/report-match-highlight.service';\nimport { untilDestroy } from '../../../../utils/until-destroy';\n\n@Component({\n\tselector: 'cr-excluded-results-dailog',\n\ttemplateUrl: './excluded-results-dailog.component.html',\n\tstyleUrls: ['./excluded-results-dailog.component.scss'],\n\tstandalone: false,\n})\nexport class ExcludedResultsDailogComponent implements OnInit, AfterViewInit {\n\t/**\n\t * @Input {IResultItem[]} List of all result items to be displayed in the dialog\n\t */\n\t@Input() allResultsItem: IResultItem[] = [];\n\n\t/**\n\t * @Input {ReportDataService} Service for accessing and managing report data\n\t */\n\t@Input() reportDataSvc: ReportDataService;\n\n\t/**\n\t * @Input {ReportViewService} Service for controlling report view behavior and state\n\t */\n\t@Input() reportViewSvc: ReportViewService;\n\n\t/**\n\t * @Input {ReportMatchHighlightService} Service responsible for handling result text highlighting\n\t */\n\t@Input() highlightService: ReportMatchHighlightService;\n\n\t/**\n\t * @Output {EventEmitter<boolean>} Emits a boolean when the dialog is closed (true if confirmed, false if cancelled)\n\t */\n\t@Output() closeDailogEvent = new EventEmitter<boolean>();\n\n\tfilteredList: IResultItem[];\n\tsearchControl = new UntypedFormControl('');\n\n\tprivate _startingIndex: number = 0;\n\tprivate _pageSize: number = 10;\n\tprivate _currentPage: number = 1;\n\n\t@ViewChild('resultsContainer', { read: ElementRef }) public resultsContainer: ElementRef;\n\n\tget searchValue() {\n\t\treturn this.searchControl.value;\n\t}\n\n\tget allResultsItemLength() {\n\t\treturn this.allResultsItem?.length;\n\t}\n\n\tget filteredListLength() {\n\t\treturn this.filteredList?.length;\n\t}\n\n\tget excludedResultist() {\n\t\tif (this.filteredListLength > this._pageSize) {\n\t\t\treturn this.filteredList.slice(this._startingIndex, this.EndingIndex);\n\t\t} else {\n\t\t\treturn this.filteredList;\n\t\t}\n\t}\n\n\tget EndingIndex(): number {\n\t\treturn this._startingIndex + this._pageSize * this._currentPage;\n\t}\n\n\tget lastItemLoading() {\n\t\tif (this.EndingIndex >= this.filteredListLength || this.filteredListLength == 0) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\tget allResultsIncluded(): boolean {\n\t\treturn this.reportDataSvc.excludedResultsIds?.length === 0;\n\t}\n\n\tconstructor(private _renderer: Renderer2) {}\n\n\tngOnInit() {\n\t\tthis.searchControl.valueChanges.pipe(untilDestroy(this), startWith('')).subscribe(value => {\n\t\t\tthis.filteredList = this._filterTags(value || '');\n\t\t});\n\t}\n\n\tngAfterViewInit(): void {\n\t\tfromEvent(this.resultsContainer.nativeElement, 'scroll')\n\t\t\t.pipe(debounceTime(200), untilDestroy(this))\n\t\t\t.subscribe((e: any) => this.onTableScroll(e));\n\t}\n\n\tprivate onTableScroll(e: any) {\n\t\tconst tableViewHeight = e.target.offsetHeight;\n\t\tconst tableScrollHeight = e.target.scrollHeight;\n\t\tconst scrollLocation = e.target.scrollTop;\n\t\tconst scrollThreshold = 200;\n\t\tconst scrollDownLimit = tableScrollHeight - tableViewHeight - scrollThreshold;\n\t\tif (scrollLocation > scrollDownLimit && this.EndingIndex < this.filteredListLength) {\n\t\t\tthis._currentPage += 1;\n\t\t\tthis.scrollTo(tableScrollHeight / 2 + tableViewHeight);\n\t\t}\n\t}\n\n\tprivate scrollTo(position: number): void {\n\t\tthis._renderer.setProperty(this.resultsContainer.nativeElement, 'scrollTop', position);\n\t}\n\n\tprivate _filterTags(value: string) {\n\t\treturn this.allResultsItem.filter(\n\t\t\tresult =>\n\t\t\t\tresult?.resultPreview?.title?.toLowerCase().includes(value?.toLowerCase()) ||\n\t\t\t\tresult?.resultPreview?.metadata?.filename?.toLowerCase()?.includes(value?.toLowerCase())\n\t\t);\n\t}\n\n\tcloseDailog() {\n\t\tthis.closeDailogEvent.emit(true);\n\t}\n\n\tclearSearch() {\n\t\tthis.searchControl.setValue('');\n\t}\n\n\tincludeAllButtonToggle() {\n\t\t// if all the results are already excluded, then don't do anything\n\t\tif (this.allResultsIncluded)\n\t\t\tthis.reportDataSvc.excludedResultsIds$.next(this.filteredList?.map(result => result?.resultPreview?.id) ?? []);\n\t\telse this.reportDataSvc.excludedResultsIds$.next([]);\n\t}\n\n\tisResultExcluded(id?: string): boolean {\n\t\treturn this.reportDataSvc.excludedResultsIds?.find(resultId => resultId === id) != undefined;\n\t}\n\n\tincludeResultById(resultId: string) {\n\t\tconst excludedResutsIds = this.reportDataSvc.excludedResultsIds ?? [];\n\t\tthis.reportDataSvc.excludedResultsIds$.next(excludedResutsIds.filter(id => id != resultId));\n\t}\n\n\texcludeResultById(resultId: string) {\n\t\tconst excludedResutsIds = new Set(this.reportDataSvc.excludedResultsIds);\n\t\texcludedResutsIds.add(resultId);\n\t\tthis.reportDataSvc.excludedResultsIds$.next(Array.from(excludedResutsIds));\n\t}\n\n\tngOnDestroy() {}\n}\n","<div mat-dialog-title class=\"header-container\">\n\t<div fxLayoutAlign=\"start center\" fxLayoutGap=\"8px\">\n\t\t<span class=\"header\" web-report-title-font i18n>Excluded Matching Results</span>\n\t\t<span class=\"total-excluded\">({{ allResultsItemLength }})</span>\n\t</div>\n\t<button\n\t\tmat-icon-button\n\t\tclass=\"dialog-close-button\"\n\t\t(click)=\"closeDailog()\"\n\t\tmatTooltip=\"Close\"\n\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\ti18n-matTooltip\n\t\taria-label=\"Closes the dialog\"\n\t\ti18n-aria-label>\n\t\t<mat-icon class=\"close-icon\">close</mat-icon>\n\t</button>\n</div>\n\n<div mat-dialog-content>\n\t<mat-form-field class=\"search-input mat-input-no-bottom-padding with-label\" appearance=\"fill\">\n\t\t<div class=\"search-input-icon-container\" fxLayoutAlign=\"center center\" style=\"margin-inline-end: 8px\" matPrefix>\n\t\t\t<ng-container *ngIf=\"!searchValue; else clearSearchIcon\">\n\t\t\t\t<mat-icon class=\"search-input-search-icon\" fontSet=\"material-icons-round\">search</mat-icon>\n\t\t\t</ng-container>\n\t\t\t<ng-template #clearSearchIcon>\n\t\t\t\t<button\n\t\t\t\t\tclass=\"mat-icon-button-override clear-input-search-btn\"\n\t\t\t\t\tmat-icon-button\n\t\t\t\t\tmatTooltip=\"Clear\"\n\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t\ti18n-matTooltip\n\t\t\t\t\taria-label=\"Clears entered text\"\n\t\t\t\t\ti18n-aria-label\n\t\t\t\t\t(click)=\"!!searchValue ? clearSearch() : ''\">\n\t\t\t\t\t<mat-icon class=\"clear-input-search-icon\" fontSet=\"material-icons-round\">close</mat-icon>\n\t\t\t\t</button>\n\t\t\t</ng-template>\n\t\t</div>\n\t\t<mat-label i18n>Search result</mat-label>\n\t\t<input matInput [spellcheck]=\"false\" [formControl]=\"searchControl\" aria-label=\"Search results\" />\n\t</mat-form-field>\n\n\t<div class=\"results-top-container\">\n\t\t<div #resultsContainer class=\"results-container\">\n\t\t\t<ng-container *ngFor=\"let item of filteredList\">\n\t\t\t\t<cr-report-results-item\n\t\t\t\t\t[resultItem]=\"item\"\n\t\t\t\t\t[isResultExcluded]=\"isResultExcluded(item.resultPreview.id)\"\n\t\t\t\t\t[excludeView]=\"true\"\n\t\t\t\t\t[showItemBody]=\"false\"\n\t\t\t\t\t[style]=\"'width:100%'\"\n\t\t\t\t\t[reportViewSvc]=\"reportViewSvc\"\n\t\t\t\t\t[reportDataSvc]=\"reportDataSvc\"\n\t\t\t\t\t[highlightService]=\"highlightService\"\n\t\t\t\t\t(hiddenResultEvent)=\"excludeResultById($event)\"\n\t\t\t\t\t(showResultEvent)=\"includeResultById($event)\"></cr-report-results-item>\n\t\t\t</ng-container>\n\t\t</div>\n\t</div>\n</div>\n\n<div mat-dialog-actions>\n\t<button\n\t\tclass=\"include-all-button\"\n\t\t(click)=\"includeAllButtonToggle()\"\n\t\taria-label=\"Includes or excludes previously excluded results\"\n\t\ti18n-aria-label>\n\t\t<ng-container *ngIf=\"!allResultsIncluded; else ExcludeResultBtnTxtRef\">\n\t\t\t<span i18n>Include all</span>\n\t\t</ng-container>\n\t\t<ng-template #ExcludeResultBtnTxtRef><span i18n>Exclude all</span></ng-template>\n\t</button>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { FilterResultDailogService } from '../../services/filter-result-dailog.service';\nimport { trigger, transition, animate, keyframes, style } from '@angular/animations';\n\n@Component({\n\tselector: 'cr-excluded-domains-input',\n\ttemplateUrl: './excluded-domains-input.component.html',\n\tstyleUrls: ['./excluded-domains-input.component.scss'],\n\tanimations: [\n\t\ttrigger('fadeIn', [transition(':enter', [style({ opacity: 0 }), animate('0.5s', style({ opacity: 1 }))])]),\n\t\ttrigger('errorAnimation', [\n\t\t\ttransition(':enter', [\n\t\t\t\tanimate(\n\t\t\t\t\t'0.5s ease-in',\n\t\t\t\t\tkeyframes([\n\t\t\t\t\t\tstyle({ transform: 'translateY(-10px)', offset: 0.1 }),\n\t\t\t\t\t\tstyle({ transform: 'translateY(0px)', offset: 0.2 }),\n\t\t\t\t\t\tstyle({ transform: 'translateY(-10px)', offset: 0.3 }),\n\t\t\t\t\t\tstyle({ transform: 'translateY(0px)', offset: 0.4 }),\n\t\t\t\t\t\tstyle({ transform: 'translateY(-10px)', offset: 0.5 }),\n\t\t\t\t\t\tstyle({ transform: 'translateY(0px)', offset: 1.0 }),\n\t\t\t\t\t])\n\t\t\t\t),\n\t\t\t]),\n\t\t]),\n\t],\n\tstandalone: false,\n})\nexport class ExcludedDomainsInputComponent implements OnInit {\n\taddDomainControl = new UntypedFormControl('');\n\texcludedDomainsForm: UntypedFormControl;\n\terrorMessage: string;\n\n\tget excludedDomainsFormValue() {\n\t\treturn this.excludedDomainsForm.value as string[];\n\t}\n\n\tconstructor(private _filterService: FilterResultDailogService) {}\n\n\tngOnInit(): void {\n\t\tthis.excludedDomainsForm = this._filterService.excludedDomainsFormControl;\n\t}\n\n\taddDomain() {\n\t\tconst domain = this.addDomainControl.value;\n\t\tif (!domain) {\n\t\t\t// update the errorMessage text to demand a non empty domain\n\t\t\tthis.errorMessage = 'Please enter a domain';\n\t\t\treturn;\n\t\t}\n\t\t// check if the domain is already in the excludedDomainsForm value\n\t\t// if it is, return\n\t\tif (this.excludedDomainsForm.value?.includes(domain)) {\n\t\t\tthis.errorMessage = 'Domain already exists';\n\t\t\treturn;\n\t\t}\n\t\t// check if the domain is a valid domain\n\t\t// if it is not, return and update the errorMessage text to demand a valid domain or subdomain or url\n\t\tif (!this.isValidUrl(domain) && !this.isValidDomain(domain) && !this.isValidSubdomain(domain)) {\n\t\t\tthis.errorMessage = 'Please enter a valid domain or subdomain or url';\n\t\t\treturn;\n\t\t}\n\t\t// update the errorMessage text to an empty string\n\t\tthis.errorMessage = '';\n\t\tthis.excludedDomainsForm.setValue([...(this.excludedDomainsForm.value ?? []), domain]);\n\n\t\tthis.addDomainControl.setValue('');\n\t}\n\n\tremoveDomain(domain: string) {\n\t\tif (!domain) return;\n\t\t// update the excludedDomainsForm value by removing the domain from its value\n\t\tthis.excludedDomainsForm.setValue((this.excludedDomainsForm.value ?? []).filter((d: string) => d !== domain));\n\t\tthis.errorMessage = '';\n\t}\n\n\tisValidUrl(url: string): boolean {\n\t\tconst urlRegex = /^(https?:\\/\\/)?([a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)+.*)$/;\n\t\treturn urlRegex.test(url);\n\t}\n\n\tisValidDomain(domain: string): boolean {\n\t\tconst domainRegex = /^([a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)+)$/;\n\t\treturn domainRegex.test(domain);\n\t}\n\n\tisValidSubdomain(subdomain: string): boolean {\n\t\tconst subdomainRegex = /^([a-zA-Z0-9-]+\\.)*([a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)+)$/;\n\t\treturn subdomainRegex.test(subdomain);\n\t}\n}\n","<div class=\"input-container\">\n\t<label for=\"excluded-domain-input\" class=\"input-message\" i18n>Enter domain to exclude from results</label>\n\t<div class=\"excluded-domains-input\">\n\t\t<input\n\t\t\taria-label=\"Enter domain to be excluded from results\"\n\t\t\ti18n-aria-label\n\t\t\tid=\"excluded-domain-input\"\n\t\t\t[formControl]=\"addDomainControl\"\n\t\t\t[type]=\"'text'\"\n\t\t\tplaceholder=\"domain.com\"\n\t\t\tspellcheck=\"false\"\n\t\t\ti18n-placeholder\n\t\t\tmatInput\n\t\t\t(keyup.enter)=\"addDomain()\" />\n\t\t<button\n\t\t\tmat-icon-button\n\t\t\tclass=\"mat-icon-button-override add-domain-btn\"\n\t\t\t(click)=\"addDomain()\"\n\t\t\taria-label=\"Click to add domain\"\n\t\t\ti18n-aria-label\n\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\tmatTooltip=\"Add domain\"\n\t\t\ti18n-matTooltip>\n\t\t\t<mat-icon [style.color]=\"addDomainControl?.value ? '#052D8B' : ''\">add_link</mat-icon>\n\t\t</button>\n\t</div>\n\t<mat-error *ngIf=\"errorMessage\" @errorAnimation>{{ errorMessage }}</mat-error>\n</div>\n\n<mat-accordion *ngIf=\"excludedDomainsFormValue?.length > 0\" #expansionPanel>\n\t<mat-expansion-panel [expanded]=\"true\" aria-label=\"Click to show or hide excluded domains\" i18n-aria-label>\n\t\t<mat-expansion-panel-header>\n\t\t\t<mat-panel-title>\n\t\t\t\t<span class=\"expansion-title\" i18n>\n\t\t\t\t\t{{ excludedDomainsFormValue?.length ?? 0 }} {excludedDomainsFormValue?.length, plural, =1 {domain is} other\n\t\t\t\t\t{domains are}} filtered out\n\t\t\t\t</span>\n\t\t\t</mat-panel-title>\n\n\t\t\t<mat-panel-description>\n\t\t\t\t<mat-icon class=\"hide-domains-icon\" fontSet=\"material-icons-round\">arrow_drop_down</mat-icon>\n\t\t\t</mat-panel-description>\n\t\t</mat-expansion-panel-header>\n\n\t\t<div #alertsContainer class=\"excluded-domains-container\">\n\t\t\t<div *ngFor=\"let domain of excludedDomainsFormValue\" @fadeIn class=\"excluded-domain\">\n\t\t\t\t<button\n\t\t\t\t\tmat-icon-button\n\t\t\t\t\tclass=\"mat-icon-button-override remove-doamin-btn\"\n\t\t\t\t\t(click)=\"removeDomain(domain)\"\n\t\t\t\t\taria-label=\"Click to remove domain\"\n\t\t\t\t\ti18n-aria-label\n\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t\tmatTooltip=\"Remove domain\"\n\t\t\t\t\ti18n-matTooltip>\n\t\t\t\t\t<mat-icon class=\"remove-domain-icon\">highlight_off</mat-icon>\n\t\t\t\t</button>\n\t\t\t\t<span class=\"domain\" [title]=\"domain\">{{ domain }}</span>\n\t\t\t</div>\n\t\t</div>\n\t</mat-expansion-panel>\n</mat-accordion>\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { IResultsActions } from '../../components/containers/report-results-container/components/results-actions/models/results-actions.models';\nimport { IResultItem } from '../../components/containers/report-results-item-container/components/models/report-result-item.models';\nimport { ITotalSourceType } from './components/source-type-filter-result/models/source-type-filter-result.models';\nimport { FilterResultDailogService } from './services/filter-result-dailog.service';\nimport { ITagItem } from './components/included-tags-filter-result/models/included-tags-filter-result.models';\nimport { EFilterResultForm, EFilterResultSection, IFilterResultDailogData } from './models/filter-result-dailog.enum';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { untilDestroy } from '../../utils/until-destroy';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { combineLatest } from 'rxjs';\nimport { ALERTS } from '../../constants/report-alerts.constants';\nimport { ICompleteResults } from '../../models/report-data.models';\nimport { ICopyleaksReportOptions } from '../../models/report-options.models';\nimport { trigger, transition, animate, keyframes, style } from '@angular/animations';\nimport { EResponsiveLayoutType } from '../../enums/copyleaks-web-report.enums';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { PercentPipe } from '@angular/common';\nimport { RESULT_TAGS_CODES } from '../../constants/report-result-tags.constants';\n\n@Component({\n\tselector: 'cr-filter-result-dailog',\n\ttemplateUrl: './filter-result-dailog.component.html',\n\tstyleUrls: ['./filter-result-dailog.component.scss'],\n\tanimations: [\n\t\ttrigger('errorAnimation', [\n\t\t\ttransition(':enter', [\n\t\t\t\tanimate(\n\t\t\t\t\t'0.5s ease-in',\n\t\t\t\t\tkeyframes([\n\t\t\t\t\t\tstyle({ transform: 'translateY(-10px)', offset: 0.1 }),\n\t\t\t\t\t\tstyle({ transform: 'translateY(0px)', offset: 0.2 }),\n\t\t\t\t\t\tstyle({ transform: 'translateY(-10px)', offset: 0.3 }),\n\t\t\t\t\t\tstyle({ transform: 'translateY(0px)', offset: 0.4 }),\n\t\t\t\t\t\tstyle({ transform: 'translateY(-10px)', offset: 0.5 }),\n\t\t\t\t\t\tstyle({ transform: 'translateY(0px)', offset: 1.0 }),\n\t\t\t\t\t])\n\t\t\t\t),\n\t\t\t]),\n\t\t]),\n\t],\n\tstandalone: false,\n})\nexport class FilterResultDailogComponent implements OnInit {\n\tallTagItem: ITagItem[] = [];\n\tallExcludedDomains: string[] = [];\n\tisMobile: boolean = false;\n\tresultsActions: IResultsActions = {\n\t\ttotalResults: 0,\n\t\ttotalExcluded: 0,\n\t\ttotalFiltered: 0,\n\t\tselectedResults: 0,\n\t};\n\n\ttotalSourceType: ITotalSourceType;\n\tallResultsItem: IResultItem[] = [];\n\texcludedResults: IResultItem[] = [];\n\tminWordLimit: number = 0;\n\tmaxWordLimit: number = 0;\n\tpublicationDates: string[] = [];\n\tloading: boolean = true;\n\n\ttotalIdentical: number = 0;\n\ttotalMinorChanges: number = 0;\n\ttotalParaphrased: number = 0;\n\n\ttotalSameAuthor: number = 0;\n\ttotalAlerts: number = 0;\n\n\tcompleteResults: ICompleteResults;\n\tsourceTypeErrorMessage: string | null;\n\tmatchTypeErrorMessage: string | null;\n\tinitFormData: boolean = false;\n\ttotalResultsWithoutDate: number;\n\n\tEFilterResultSection = EFilterResultSection;\n\tselectedFilter: EFilterResultSection;\n\tdocDirection: 'ltr' | 'rtl';\n\n\tget totalFiltered() {\n\t\treturn this.totalSourceType ? this.getTotalFilterdResult() : 0;\n\t}\n\n\tget sourceTypeFormGroup() {\n\t\treturn this._filterResultsSvc.sourceTypeFormGroup;\n\t}\n\n\tconstructor(\n\t\tprivate _filterResultsSvc: FilterResultDailogService,\n\t\tprivate _percentPipe: PercentPipe,\n\t\tprivate _dialogRef: MatDialogRef<FilterResultDailogComponent>,\n\t\t@Inject(MAT_DIALOG_DATA) public data: IFilterResultDailogData\n\t) {}\n\n\tngOnInit() {\n\t\tthis.initResultItem();\n\n\t\tthis.data.reportViewSvc?.reportResponsiveMode$.pipe(untilDestroy(this)).subscribe(view => {\n\t\t\tthis.isMobile = view.mode === EResponsiveLayoutType.Mobile;\n\t\t});\n\n\t\tthis.data.reportViewSvc?.documentDirection$.pipe(untilDestroy(this)).subscribe(dir => {\n\t\t\tthis.docDirection = dir;\n\t\t});\n\n\t\tthis._filterResultsSvc.filterResultFormGroup.valueChanges.pipe(untilDestroy(this)).subscribe(_ => {\n\t\t\tconst formData = this.getFilterCurrentData();\n\t\t\tif (\n\t\t\t\t!formData.showInternetResults &&\n\t\t\t\t!formData.showBatchResults &&\n\t\t\t\t!formData.showYourResults &&\n\t\t\t\t!formData.showOthersResults &&\n\t\t\t\t!formData.showInternalDatabaseResults &&\n\t\t\t\t!formData.showAISourceMatch &&\n\t\t\t\tformData.hiddenRepositories &&\n\t\t\t\tformData.hiddenRepositories.length === this._filterResultsSvc.reposIds.length &&\n\t\t\t\t!(\n\t\t\t\t\tthis.totalSourceType.totalInternet === 0 &&\n\t\t\t\t\tthis.totalSourceType.totalInternalDatabase === 0 &&\n\t\t\t\t\tthis.totalSourceType.totalbatch === 0 &&\n\t\t\t\t\tthis.totalSourceType.totalAISourceMatch === 0 &&\n\t\t\t\t\t!(this.totalSourceType.repository && this.totalSourceType.repository?.length > 0)\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tif (this.totalSourceType.totalInternet > 0)\n\t\t\t\t\t\tthis._filterResultsSvc.filterResultFormGroup\n\t\t\t\t\t\t\t?.get(EFilterResultForm.fgSourceType)\n\t\t\t\t\t\t\t?.get(EFilterResultForm.fcInternet)\n\t\t\t\t\t\t\t?.setValue(true, { emitEvent: false });\n\t\t\t\t\telse if (this.totalSourceType.totalInternalDatabase > 0) {\n\t\t\t\t\t\tthis._filterResultsSvc.filterResultFormGroup\n\t\t\t\t\t\t\t?.get(EFilterResultForm.fgSourceType)\n\t\t\t\t\t\t\t?.get(EFilterResultForm.fcInternalDatabase)\n\t\t\t\t\t\t\t?.setValue(true, { emitEvent: false });\n\t\t\t\t\t\tif (this.totalSourceType.totalYourFiles > 0)\n\t\t\t\t\t\t\tthis._filterResultsSvc.sourceTypeFormGroup\n\t\t\t\t\t\t\t\t.get(EFilterResultForm.fcYourResults)\n\t\t\t\t\t\t\t\t?.setValue(true, { emitEvent: false });\n\n\t\t\t\t\t\tif (this.totalSourceType.totalOthersFiles > 0)\n\t\t\t\t\t\t\tthis._filterResultsSvc.sourceTypeFormGroup\n\t\t\t\t\t\t\t\t.get(EFilterResultForm.fcOthersResults)\n\t\t\t\t\t\t\t\t?.setValue(true, { emitEvent: false });\n\t\t\t\t\t} else if (this.totalSourceType.totalbatch > 0)\n\t\t\t\t\t\tthis._filterResultsSvc.filterResultFormGroup\n\t\t\t\t\t\t\t?.get(EFilterResultForm.fgSourceType)\n\t\t\t\t\t\t\t?.get(EFilterResultForm.fcBatch)\n\t\t\t\t\t\t\t?.setValue(true, { emitEvent: false });\n\t\t\t\t\telse if (this.totalSourceType.repository && this.totalSourceType.repository?.length > 0) {\n\t\t\t\t\t\tthis._filterResultsSvc.filterResultFormGroup\n\t\t\t\t\t\t\t?.get(EFilterResultForm.fgSourceType)\n\t\t\t\t\t\t\t?.get(EFilterResultForm.fgRepositories)\n\t\t\t\t\t\t\t?.get(this._filterResultsSvc.reposIds[0].id)\n\t\t\t\t\t\t\t?.setValue(true, { emitEvent: false });\n\t\t\t\t\t} else if (this.totalSourceType.totalAISourceMatch > 0) {\n\t\t\t\t\t\tthis._filterResultsSvc.filterResultFormGroup\n\t\t\t\t\t\t\t?.get(EFilterResultForm.fgSourceType)\n\t\t\t\t\t\t\t?.get(EFilterResultForm.fgAISourceMatch)\n\t\t\t\t\t\t\t?.setValue(true, { emitEvent: false });\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tthis.sourceTypeErrorMessage = $localize`At least one match Source type needs to be activated.`;\n\t\t\t} else if (\n\t\t\t\t!formData.showIdentical &&\n\t\t\t\t!formData.showMinorChanges &&\n\t\t\t\t!formData.showRelated &&\n\t\t\t\t!(this.totalParaphrased === 0 && this.totalMinorChanges === 0 && this.totalIdentical === 0)\n\t\t\t) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tif (this.totalIdentical > 0)\n\t\t\t\t\t\tthis._filterResultsSvc.filterResultFormGroup\n\t\t\t\t\t\t\t?.get(EFilterResultForm.fgMatchTypes)\n\t\t\t\t\t\t\t?.get(EFilterResultForm.fcIdenticalText)\n\t\t\t\t\t\t\t?.setValue(true, { emitEvent: false });\n\t\t\t\t\telse if (this.totalMinorChanges > 0)\n\t\t\t\t\t\tthis._filterResultsSvc.filterResultFormGroup\n\t\t\t\t\t\t\t?.get(EFilterResultForm.fgMatchTypes)\n\t\t\t\t\t\t\t?.get(EFilterResultForm.fcMinorChanges)\n\t\t\t\t\t\t\t?.setValue(true, { emitEvent: false });\n\t\t\t\t\telse if (this.totalParaphrased > 0)\n\t\t\t\t\t\tthis._filterResultsSvc.filterResultFormGroup\n\t\t\t\t\t\t\t?.get(EFilterResultForm.fgMatchTypes)\n\t\t\t\t\t\t\t?.get(EFilterResultForm.fcParaphrased)\n\t\t\t\t\t\t\t?.setValue(true, { emitEvent: false });\n\t\t\t\t});\n\t\t\t\tthis.matchTypeErrorMessage = $localize`At least one match type needs to be activated.`;\n\t\t\t} else this.matchTypeErrorMessage = this.sourceTypeErrorMessage = null;\n\t\t});\n\n\t\tthis._filterResultsSvc.sourceTypeFormGroup\n\t\t\t.get(EFilterResultForm.fcInternalDatabase)\n\t\t\t.valueChanges.pipe(untilDestroy(this))\n\t\t\t.subscribe(value => {\n\t\t\t\t// If the internal database is selected, then the your results and others results should be selected\n\t\t\t\tif (\n\t\t\t\t\tvalue &&\n\t\t\t\t\t!this._filterResultsSvc.sourceTypeFormGroup.get(EFilterResultForm.fcYourResults).value &&\n\t\t\t\t\t!this._filterResultsSvc.sourceTypeFormGroup.get(EFilterResultForm.fcOthersResults).value\n\t\t\t\t) {\n\t\t\t\t\tif (this.totalSourceType.totalYourFiles > 0)\n\t\t\t\t\t\tthis._filterResultsSvc.sourceTypeFormGroup\n\t\t\t\t\t\t\t.get(EFilterResultForm.fcYourResults)\n\t\t\t\t\t\t\t?.setValue(true, { emitEvent: false });\n\n\t\t\t\t\tif (this.totalSourceType.totalOthersFiles > 0)\n\t\t\t\t\t\tthis._filterResultsSvc.sourceTypeFormGroup\n\t\t\t\t\t\t\t.get(EFilterResultForm.fcOthersResults)\n\t\t\t\t\t\t\t?.setValue(true, { emitEvent: false });\n\t\t\t\t}\n\n\t\t\t\t// If the internal database is unselected, then the your results and others results should be unselected\n\t\t\t\tif (\n\t\t\t\t\t!value &&\n\t\t\t\t\t(this._filterResultsSvc.sourceTypeFormGroup.get(EFilterResultForm.fcYourResults).value ||\n\t\t\t\t\t\tthis._filterResultsSvc.sourceTypeFormGroup.get(EFilterResultForm.fcOthersResults).value)\n\t\t\t\t) {\n\t\t\t\t\tthis._filterResultsSvc.sourceTypeFormGroup\n\t\t\t\t\t\t.get(EFilterResultForm.fcYourResults)\n\t\t\t\t\t\t?.setValue(false, { emitEvent: false });\n\t\t\t\t\tthis._filterResultsSvc.sourceTypeFormGroup\n\t\t\t\t\t\t.get(EFilterResultForm.fcOthersResults)\n\t\t\t\t\t\t?.setValue(false, { emitEvent: false });\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis._filterResultsSvc.sourceTypeFormGroup\n\t\t\t.get(EFilterResultForm.fcYourResults)\n\t\t\t.valueChanges.pipe(untilDestroy(this))\n\t\t\t.subscribe(value => {\n\t\t\t\t// If the your results is selected, then the internal database should be selected\n\t\t\t\tif (value && !this._filterResultsSvc.sourceTypeFormGroup.get(EFilterResultForm.fcInternalDatabase).value)\n\t\t\t\t\tthis._filterResultsSvc.sourceTypeFormGroup\n\t\t\t\t\t\t.get(EFilterResultForm.fcInternalDatabase)\n\t\t\t\t\t\t?.setValue(true, { emitEvent: false });\n\n\t\t\t\tif (value && this.totalSourceType.totalYourFiles <= 0)\n\t\t\t\t\tthis._filterResultsSvc.sourceTypeFormGroup\n\t\t\t\t\t\t.get(EFilterResultForm.fcYourResults)\n\t\t\t\t\t\t?.setValue(false, { emitEvent: false });\n\n\t\t\t\t// If both your results and others results are unselected, then the internal database should be unselected\n\t\t\t\tif (!value && !this._filterResultsSvc.sourceTypeFormGroup.get(EFilterResultForm.fcOthersResults).value)\n\t\t\t\t\tthis._filterResultsSvc.sourceTypeFormGroup.get(EFilterResultForm.fcInternalDatabase)?.setValue(false);\n\t\t\t});\n\n\t\tthis._filterResultsSvc.sourceTypeFormGroup\n\t\t\t.get(EFilterResultForm.fcOthersResults)\n\t\t\t.valueChanges.pipe(untilDestroy(this))\n\t\t\t.subscribe(value => {\n\t\t\t\t// If the your results is selected, then the internal database should be selected\n\t\t\t\tif (value && !this._filterResultsSvc.sourceTypeFormGroup.get(EFilterResultForm.fcInternalDatabase).value)\n\t\t\t\t\tthis._filterResultsSvc.sourceTypeFormGroup\n\t\t\t\t\t\t.get(EFilterResultForm.fcInternalDatabase)\n\t\t\t\t\t\t?.setValue(true, { emitEvent: false });\n\n\t\t\t\tif (value && this.totalSourceType.totalOthersFiles <= 0)\n\t\t\t\t\tthis._filterResultsSvc.sourceTypeFormGroup\n\t\t\t\t\t\t.get(EFilterResultForm.fcOthersResults)\n\t\t\t\t\t\t?.setValue(false, { emitEvent: false });\n\n\t\t\t\t// If both your results and others results are unselected, then the internal database should be unselected\n\t\t\t\tif (!value && !this._filterResultsSvc.sourceTypeFormGroup.get(EFilterResultForm.fcYourResults).value)\n\t\t\t\t\tthis._filterResultsSvc.sourceTypeFormGroup.get(EFilterResultForm.fcInternalDatabase)?.setValue(false);\n\t\t\t});\n\t}\n\n\tgetTotalFilterdResult() {\n\t\tlet totalEnabledSource = 0;\n\t\tfor (const controlName in this.sourceTypeFormGroup.controls) {\n\t\t\tif (this.sourceTypeFormGroup.get(controlName)?.value) {\n\t\t\t\ttotalEnabledSource += this.getTotalForEchSourceType(controlName);\n\t\t\t}\n\t\t}\n\t\treturn totalEnabledSource;\n\t}\n\n\tgetTotalForEchSourceType(eFilterResultForm: string) {\n\t\tswitch (eFilterResultForm) {\n\t\t\tcase EFilterResultForm.fcInternet:\n\t\t\t\treturn this.totalSourceType.totalInternet;\n\t\t\tcase EFilterResultForm.fcInternalDatabase:\n\t\t\t\treturn this.totalSourceType.totalInternalDatabase;\n\t\t\tcase EFilterResultForm.fcBatch:\n\t\t\t\treturn this.totalSourceType.totalbatch;\n\t\t\tcase EFilterResultForm.fgRepositories:\n\t\t\t\treturn this.getTotalEnabledRepositories();\n\t\t\tdefault:\n\t\t\t\treturn 0;\n\t\t}\n\t}\n\n\tgetTotalEnabledRepositories() {\n\t\tlet countRepo = 0;\n\t\tvar repositories = this.sourceTypeFormGroup.get(EFilterResultForm.fgRepositories) as UntypedFormGroup;\n\t\tfor (const controlName in repositories.controls) {\n\t\t\tif (repositories.get(controlName)?.value) {\n\t\t\t\tcountRepo += 1;\n\t\t\t}\n\t\t}\n\t\treturn countRepo;\n\t}\n\n\tsetTotalMatchTypesStatistics() {\n\t\tthis.totalParaphrased = this.totalMinorChanges = this.totalIdentical = 0;\n\n\t\tconst totalWords =\n\t\t\t(this.data?.reportDataSvc?.scanResultsPreviews$?.value?.scannedDocument?.totalWords ?? 0) -\n\t\t\t(this.data?.reportDataSvc?.scanResultsPreviews$?.value?.scannedDocument?.totalExcluded ?? 0);\n\n\t\tif (totalWords <= 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst calculatePercentage = value => {\n\t\t\tconst percentage = this._percentPipe.transform(value / totalWords, '1.0-1');\n\t\t\treturn percentage !== '0%';\n\t\t};\n\n\t\tthis.allResultsItem.forEach(result => {\n\t\t\tconst stats = result.iStatisticsResult;\n\n\t\t\tif (stats.identical > 0 && calculatePercentage(stats.identical)) {\n\t\t\t\tthis.totalIdentical++;\n\t\t\t}\n\n\t\t\tif (stats.minorChanges > 0 && calculatePercentage(stats.minorChanges)) {\n\t\t\t\tthis.totalMinorChanges++;\n\t\t\t}\n\n\t\t\tif (stats.relatedMeaning > 0 && calculatePercentage(stats.relatedMeaning)) {\n\t\t\t\tthis.totalParaphrased++;\n\t\t\t}\n\t\t});\n\t}\n\n\tsetExcludedResultsStats() {\n\t\tconst excludedResultsIds = this.data.reportDataSvc.excludedResultsIds;\n\t\tlet filterData = this.getFilterCurrentData();\n\t\tif (!filterData.showIdentical && !filterData.showMinorChanges && !filterData.showRelated)\n\t\t\tfilterData.showIdentical = filterData.showMinorChanges = filterData.showRelated = true;\n\t\tconst filteredResults = this.data.reportDataSvc.filterResults(filterData, excludedResultsIds ?? []);\n\t\tthis.excludedResults = this.allResultsItem.filter(\n\t\t\tresult => !!excludedResultsIds?.find(id => result.resultPreview?.id === id)\n\t\t);\n\n\t\tthis.resultsActions = {\n\t\t\t...this.resultsActions,\n\t\t\ttotalExcluded: this.excludedResults.length,\n\t\t\ttotalFiltered:\n\t\t\t\t(this.data.reportDataSvc.totalCompleteResults ?? 0) - filteredResults.length <= 0\n\t\t\t\t\t? 0\n\t\t\t\t\t: (this.data.reportDataSvc.totalCompleteResults ?? 0) -\n\t\t\t\t\t  filteredResults.length -\n\t\t\t\t\t  (excludedResultsIds?.length ?? 0),\n\t\t\ttotalResults: this.data.reportDataSvc.totalCompleteResults,\n\t\t};\n\t}\n\n\tsetResultsPublicationDate() {\n\t\tconst dates = new Set<string>(); // Use a Set to store unique month-year strings\n\t\tthis.allResultsItem.forEach(result => {\n\t\t\tif (result.resultPreview?.metadata?.publishDate) {\n\t\t\t\t// Create a new Date object from the publish date\n\t\t\t\tconst date = new Date(result.resultPreview.metadata.publishDate);\n\t\t\t\t// Convert the date to a locale string with options for month and year\n\t\t\t\tconst monthYear = date.toLocaleString('default', { month: 'long', year: 'numeric' });\n\t\t\t\tdates.add(monthYear); // Add the resulting string to the Set\n\t\t\t}\n\t\t});\n\t\tthis.publicationDates = [...dates];\n\t\tthis.totalResultsWithoutDate = this.allResultsItem.filter(\n\t\t\tresult => !result.resultPreview?.metadata?.publishDate\n\t\t).length;\n\t\tif (this.publicationDates.length === 0)\n\t\t\tthis._filterResultsSvc.resultsMetaFormGroup\n\t\t\t\t.get(EFilterResultForm.fgPublicationDate)\n\t\t\t\t?.get(EFilterResultForm.fcPublicationEnabled)\n\t\t\t\t?.disable();\n\t}\n\n\tsetResultsWordsLimit() {\n\t\tthis.maxWordLimit = 0;\n\t\tconst allResults = [\n\t\t\t...(this.completeResults.results?.internet ?? []),\n\t\t\t...(this.completeResults.results?.database ?? []),\n\t\t\t...(this.completeResults.results?.batch ?? []),\n\t\t\t...(this.completeResults.results?.repositories ?? []),\n\t\t];\n\t\tallResults.forEach(r => {\n\t\t\tif (r.matchedWords >= this.maxWordLimit) this.maxWordLimit = r.matchedWords;\n\t\t});\n\t}\n\n\tinitResultItem() {\n\t\tcombineLatest([\n\t\t\tthis.data.reportDataSvc.scanResultsPreviews$.pipe(distinctUntilChanged()),\n\t\t\tthis.data.reportDataSvc.scanResultsDetails$.pipe(distinctUntilChanged()),\n\t\t])\n\t\t\t.pipe(untilDestroy(this))\n\t\t\t.subscribe(([completeResults, resultsDetails]) => {\n\t\t\t\tif (completeResults) {\n\t\t\t\t\tthis.completeResults = completeResults;\n\n\t\t\t\t\tconst results = completeResults.results;\n\t\t\t\t\tthis.totalSourceType = {\n\t\t\t\t\t\ttotalInternet: results.internet.length,\n\t\t\t\t\t\ttotalInternalDatabase: results.database.length,\n\t\t\t\t\t\ttotalbatch: results.batch.length,\n\t\t\t\t\t\trepository: this._filterResultsSvc.reposIds,\n\t\t\t\t\t\ttotalYourFiles: results.database.filter(r => !!r.scanId).length,\n\t\t\t\t\t\ttotalOthersFiles: results.database.filter(r => !r.scanId).length,\n\t\t\t\t\t\ttotalAISourceMatch: 0,\n\t\t\t\t\t};\n\n\t\t\t\t\tconst allResults = [\n\t\t\t\t\t\t...(results?.internet ?? []),\n\t\t\t\t\t\t...(results?.database ?? []),\n\t\t\t\t\t\t...(results?.batch ?? []),\n\t\t\t\t\t\t...(results?.repositories ?? []),\n\t\t\t\t\t];\n\n\t\t\t\t\tthis.resultsActions.totalResults = allResults.length;\n\t\t\t\t\tthis.totalSourceType.totalAISourceMatch =\n\t\t\t\t\t\tallResults?.filter(i => i.tags?.find(t => t.code === RESULT_TAGS_CODES.AI_SOURCE_MATCH))?.length ?? 0;\n\n\t\t\t\t\tthis.allResultsItem = allResults.map(result => {\n\t\t\t\t\t\tconst resultDetail = resultsDetails?.find(r => r.id === result.id);\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tresultPreview: result,\n\t\t\t\t\t\t\tresultDetails: resultDetail,\n\t\t\t\t\t\t\tiStatisticsResult: {\n\t\t\t\t\t\t\t\tidentical: resultDetail ? resultDetail?.result?.statistics.identical : result.identicalWords,\n\t\t\t\t\t\t\t\tminorChanges: resultDetail ? resultDetail?.result?.statistics.minorChanges : result.similarWords,\n\t\t\t\t\t\t\t\trelatedMeaning: resultDetail\n\t\t\t\t\t\t\t\t\t? resultDetail?.result?.statistics.relatedMeaning\n\t\t\t\t\t\t\t\t\t: result.paraphrasedWords,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tmetadataSource: {\n\t\t\t\t\t\t\t\twords: completeResults?.scannedDocument.totalWords ?? 0,\n\t\t\t\t\t\t\t\texcluded: completeResults?.scannedDocument.totalExcluded ?? 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} as IResultItem;\n\t\t\t\t\t});\n\n\t\t\t\t\tthis.setTotalMatchTypesStatistics();\n\n\t\t\t\t\tthis.totalAlerts =\n\t\t\t\t\t\tcompleteResults?.notifications?.alerts?.filter(a => a.code != ALERTS.SUSPECTED_AI_TEXT_DETECTED)?.length ??\n\t\t\t\t\t\t0;\n\n\t\t\t\t\tif (this.initFormData === false) this._filterResultsSvc.initForm(completeResults);\n\n\t\t\t\t\tthis.totalSourceType.repository = this._filterResultsSvc.reposIds;\n\n\t\t\t\t\tthis.setExcludedResultsStats();\n\t\t\t\t\tthis.setResultsPublicationDate();\n\t\t\t\t\tthis.setResultsWordsLimit();\n\n\t\t\t\t\tthis.allTagItem = this._filterResultsSvc.selectedTagItem;\n\n\t\t\t\t\tthis.allExcludedDomains = this._filterResultsSvc.excludedDomainsFormControl.value;\n\t\t\t\t\tthis._filterResultsSvc.excludedDomainsFormControl.valueChanges.pipe(untilDestroy(this)).subscribe(value => {\n\t\t\t\t\t\tthis.allExcludedDomains = value;\n\t\t\t\t\t});\n\n\t\t\t\t\tif (this.totalSourceType.totalYourFiles == 0) {\n\t\t\t\t\t\tthis._filterResultsSvc.sourceTypeFormGroup\n\t\t\t\t\t\t\t.get(EFilterResultForm.fcYourResults)\n\t\t\t\t\t\t\t?.setValue(false, { emitEvent: false });\n\t\t\t\t\t\tthis._filterResultsSvc.sourceTypeFormGroup.get(EFilterResultForm.fcYourResults)?.disable();\n\t\t\t\t\t}\n\t\t\t\t\tif (this.totalSourceType.totalOthersFiles == 0) {\n\t\t\t\t\t\tthis._filterResultsSvc.sourceTypeFormGroup\n\t\t\t\t\t\t\t.get(EFilterResultForm.fcOthersResults)\n\t\t\t\t\t\t\t?.setValue(false, { emitEvent: false });\n\t\t\t\t\t\tthis._filterResultsSvc.sourceTypeFormGroup.get(EFilterResultForm.fcOthersResults)?.disable();\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.loading = false;\n\t\t\t\t\tthis.initFormData = true;\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tonClearFilter() {\n\t\tthis._filterResultsSvc.clearForm();\n\t\tthis.allTagItem = this._filterResultsSvc.selectedTagItem;\n\t}\n\n\tonDiscardChanges() {\n\t\tthis._dialogRef.close();\n\t}\n\n\tonSaveChanges() {\n\t\tthis.data.reportDataSvc.filterOptions$.next(this.getFilterCurrentData());\n\n\t\tthis._dialogRef.close();\n\t}\n\n\tgetFilterCurrentData(): ICopyleaksReportOptions {\n\t\treturn {\n\t\t\t// Tags\n\t\t\tincludedTags: this._filterResultsSvc.selectedTagItem.filter(a => a.selected).map(a => a.title) ?? [],\n\n\t\t\t// Matches\n\t\t\tshowIdentical:\n\t\t\t\tthis.totalIdentical === 0\n\t\t\t\t\t? false\n\t\t\t\t\t: this._filterResultsSvc.matchTypeFormGroup.get(EFilterResultForm.fcIdenticalText)?.value,\n\t\t\tshowMinorChanges:\n\t\t\t\tthis.totalMinorChanges === 0\n\t\t\t\t\t? false\n\t\t\t\t\t: this._filterResultsSvc.matchTypeFormGroup.get(EFilterResultForm.fcMinorChanges)?.value,\n\t\t\tshowRelated:\n\t\t\t\tthis.totalParaphrased === 0\n\t\t\t\t\t? false\n\t\t\t\t\t: this._filterResultsSvc.matchTypeFormGroup.get(EFilterResultForm.fcParaphrased)?.value,\n\n\t\t\t// General\n\t\t\tshowAlerts: this._filterResultsSvc.generalFiltersFormGroup.get(EFilterResultForm.fcAlerts)?.value,\n\t\t\tshowSameAuthorSubmissions: this._filterResultsSvc.generalFiltersFormGroup.get(\n\t\t\t\tEFilterResultForm.fcAuthorSubmissions\n\t\t\t)?.value,\n\t\t\tshowTop100Results: this._filterResultsSvc.generalFiltersFormGroup.get(EFilterResultForm.fcTopResult)?.value,\n\n\t\t\t// Source\n\t\t\tshowInternetResults:\n\t\t\t\tthis.totalSourceType.totalInternet === 0\n\t\t\t\t\t? false\n\t\t\t\t\t: this._filterResultsSvc.sourceTypeFormGroup.get(EFilterResultForm.fcInternet)?.value,\n\t\t\tshowInternalDatabaseResults:\n\t\t\t\tthis.totalSourceType.totalInternalDatabase === 0\n\t\t\t\t\t? false\n\t\t\t\t\t: this._filterResultsSvc.sourceTypeFormGroup.get(EFilterResultForm.fcYourResults)?.value ||\n\t\t\t\t\t  this._filterResultsSvc.sourceTypeFormGroup.get(EFilterResultForm.fcOthersResults)?.value,\n\t\t\tshowYourResults:\n\t\t\t\tthis.totalSourceType.totalInternalDatabase === 0\n\t\t\t\t\t? false\n\t\t\t\t\t: this._filterResultsSvc.sourceTypeFormGroup.get(EFilterResultForm.fcYourResults)?.value,\n\t\t\tshowOthersResults:\n\t\t\t\tthis.totalSourceType.totalInternalDatabase === 0\n\t\t\t\t\t? false\n\t\t\t\t\t: this._filterResultsSvc.sourceTypeFormGroup.get(EFilterResultForm.fcOthersResults)?.value,\n\t\t\tshowBatchResults:\n\t\t\t\tthis.totalSourceType.totalbatch === 0\n\t\t\t\t\t? false\n\t\t\t\t\t: this._filterResultsSvc.sourceTypeFormGroup.get(EFilterResultForm.fcBatch)?.value,\n\t\t\thiddenRepositories: !this.totalSourceType.repository?.length\n\t\t\t\t? []\n\t\t\t\t: this._filterResultsSvc.getSelectedRepositoryIds(),\n\t\t\tshowAISourceMatch:\n\t\t\t\tthis.totalSourceType.totalAISourceMatch === 0\n\t\t\t\t\t? false\n\t\t\t\t\t: this._filterResultsSvc.sourceTypeFormGroup.get(EFilterResultForm.fgAISourceMatch)?.value,\n\n\t\t\t// Metadata\n\t\t\twordLimit: this._filterResultsSvc.resultsMetaFormGroup\n\t\t\t\t.get(EFilterResultForm.fgWordLimit)\n\t\t\t\t?.get(EFilterResultForm.fcWordLimitEnabled)?.value\n\t\t\t\t? this._filterResultsSvc.resultsMetaFormGroup\n\t\t\t\t\t\t.get(EFilterResultForm.fgWordLimit)\n\t\t\t\t\t\t?.get(EFilterResultForm.fcWordLimitTotalWordlimt)?.value\n\t\t\t\t: undefined,\n\t\t\tincludeResultsWithoutDate: this._filterResultsSvc.resultsMetaFormGroup\n\t\t\t\t.get(EFilterResultForm.fgPublicationDate)\n\t\t\t\t?.get(EFilterResultForm.fcResultsWithNoDates)?.value,\n\t\t\tpublicationDate: this._filterResultsSvc.resultsMetaFormGroup\n\t\t\t\t.get(EFilterResultForm.fgPublicationDate)\n\t\t\t\t?.get(EFilterResultForm.fcPublicationStartDate)?.value,\n\n\t\t\twritingFeedback: {\n\t\t\t\thiddenCategories: this.data.reportDataSvc.filterOptions.writingFeedback?.hiddenCategories ?? [],\n\t\t\t},\n\t\t\texcludedDomains: this._filterResultsSvc.excludedDomainsFormControl?.value ?? [],\n\t\t} as ICopyleaksReportOptions;\n\t}\n\n\texpandSettings(selectedFilter?: EFilterResultSection) {\n\t\tthis.selectedFilter = selectedFilter;\n\t}\n\n\tngOnDestroy() {}\n}\n","<div role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"dialog-title\" aria-describedby=\"dialog-description\">\n\t<ng-container *ngIf=\"!data.showExcludedDailog; else excludedDailog\">\n\t\t<div mat-dialog-title class=\"header-container\" fxLayout=\"column\" fxLayoutGap=\"8px\">\n\t\t\t<div class=\"title-container\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\" fxLayoutGap=\"4px\">\n\t\t\t\t<span web-report-title-font i18n>Filter Matching Results</span>\n\t\t\t\t<button\n\t\t\t\t\t(click)=\"onClearFilter()\"\n\t\t\t\t\tclass=\"clear-button\"\n\t\t\t\t\tfxLayout=\"row\"\n\t\t\t\t\tfxLayoutAlign=\"start center\"\n\t\t\t\t\tfxLayoutGap=\"4px\"\n\t\t\t\t\taria-label=\"Clears filters selection\"\n\t\t\t\t\ti18n-aria-label>\n\t\t\t\t\t<mat-icon>refresh</mat-icon>\n\t\t\t\t\t<span i18n>Clear filter</span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div class=\"result-container\" [class.mobile]=\"isMobile\">\n\t\t\t\t<span class=\"total-results\" [class.mobile]=\"isMobile\" web-report-title-font>\n\t\t\t\t\t<ng-container i18n>Matching Results</ng-container>\n\t\t\t\t\t({{ resultsActions.totalResults }})\n\t\t\t\t</span>\n\t\t\t\t<div class=\"chips-stats-container\" *ngIf=\"!!resultsActions.totalFiltered || !!resultsActions?.totalExcluded\">\n\t\t\t\t\t<ng-container *ngIf=\"!!resultsActions?.totalExcluded\">\n\t\t\t\t\t\t<mat-basic-chip\n\t\t\t\t\t\t\ttabIndex=\"0\"\n\t\t\t\t\t\t\tclass=\"total-excluded\"\n\t\t\t\t\t\t\trole=\"button\"\n\t\t\t\t\t\t\taria-label=\"View excluded results\"\n\t\t\t\t\t\t\ti18n-aria-label\n\t\t\t\t\t\t\t(keyup.enter)=\"!!resultsActions.totalExcluded ? (data.showExcludedDailog = !data.showExcludedDailog) : ''\"\n\t\t\t\t\t\t\t(click)=\"!!resultsActions.totalExcluded ? (data.showExcludedDailog = !data.showExcludedDailog) : ''\">\n\t\t\t\t\t\t\t{{ resultsActions.totalExcluded }}\n\t\t\t\t\t\t\t<ng-container i18n>excluded</ng-container>\n\t\t\t\t\t\t</mat-basic-chip>\n\t\t\t\t\t</ng-container>\n\n\t\t\t\t\t<ng-container *ngIf=\"!!resultsActions.totalFiltered\">\n\t\t\t\t\t\t<mat-basic-chip class=\"total-filtered\" role=\"contentinfo\">\n\t\t\t\t\t\t\t{{ resultsActions.totalFiltered }}\n\t\t\t\t\t\t\t<ng-container i18n>filtered</ng-container>\n\t\t\t\t\t\t</mat-basic-chip>\n\t\t\t\t\t</ng-container>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div\n\t\t\tmat-dialog-content\n\t\t\tfxLayoutAlign=\"start start\"\n\t\t\t[class.mobile-body-top-container]=\"isMobile\"\n\t\t\t[dir]=\"docDirection\">\n\t\t\t<ng-container *ngIf=\"!isMobile; else contentMobileViewRef\">\n\t\t\t\t<div class=\"body-container\" [class.mobile-body-container]=\"isMobile\" fxLayout=\"row\" fxLayoutGap=\"32px\">\n\t\t\t\t\t<div class=\"left-side-container\" [class.mobile]=\"isMobile\" fxLayout=\"column\" fxLayoutGap=\"16px\">\n\t\t\t\t\t\t<!-- source type -->\n\t\t\t\t\t\t<section class=\"section-container sources-type-top-container\" fxLayout=\"column\" fxLayoutGap=\"16px\">\n\t\t\t\t\t\t\t<div class=\"body-title-container\">\n\t\t\t\t\t\t\t\t<span class=\"body-title\" web-report-title-font i18n>Source Type</span>\n\t\t\t\t\t\t\t\t<span *ngIf=\"sourceTypeErrorMessage\" @errorAnimation class=\"dialog-error-message\">\n\t\t\t\t\t\t\t\t\t{{ sourceTypeErrorMessage }}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"!loading\">\n\t\t\t\t\t\t\t\t<cr-source-type-filter-result\n\t\t\t\t\t\t\t\t\t[totalSourceType]=\"totalSourceType\"\n\t\t\t\t\t\t\t\t\t[reportViewSvc]=\"data.reportViewSvc\"\n\t\t\t\t\t\t\t\t\t[reportDataSvc]=\"data.reportDataSvc\"\n\t\t\t\t\t\t\t\t\tclass=\"sources-type-container\"></cr-source-type-filter-result>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</section>\n\t\t\t\t\t\t<mat-divider></mat-divider>\n\n\t\t\t\t\t\t<!-- results meta -->\n\t\t\t\t\t\t<section class=\"section-container\" fxLayout=\"column\" fxLayoutGap=\"16px\">\n\t\t\t\t\t\t\t<span class=\"body-title\" web-report-title-font i18n>Advanced Filter Settings</span>\n\t\t\t\t\t\t\t<cr-meta-filter-result\n\t\t\t\t\t\t\t\t[publicationDates]=\"publicationDates\"\n\t\t\t\t\t\t\t\t[totalResultsWithoutDate]=\"totalResultsWithoutDate\"\n\t\t\t\t\t\t\t\t[minWordLimit]=\"minWordLimit\"\n\t\t\t\t\t\t\t\t[maxWordLimit]=\"maxWordLimit\"\n\t\t\t\t\t\t\t\tclass=\"meta-filter-container\"></cr-meta-filter-result>\n\t\t\t\t\t\t</section>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<mat-divider [vertical]=\"!isMobile\" class=\"vertical-divider\"></mat-divider>\n\n\t\t\t\t\t<div class=\"right-side-conatier\" [class.mobile]=\"isMobile\" fxLayout=\"column\" fxLayoutGap=\"16px\">\n\t\t\t\t\t\t<!-- match type -->\n\t\t\t\t\t\t<section class=\"match-type-container\" fxLayout=\"column\" fxLayoutGap=\"16px\">\n\t\t\t\t\t\t\t<div class=\"body-title-container\">\n\t\t\t\t\t\t\t\t<span class=\"body-title\" web-report-title-font i18n>Match Types</span>\n\n\t\t\t\t\t\t\t\t<span *ngIf=\"matchTypeErrorMessage\" @errorAnimation class=\"dialog-error-message\">\n\t\t\t\t\t\t\t\t\t{{ matchTypeErrorMessage }}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<cr-match-type-filter-result\n\t\t\t\t\t\t\t\t[identicalTotal]=\"totalIdentical\"\n\t\t\t\t\t\t\t\t[minorChangesTotal]=\"totalMinorChanges\"\n\t\t\t\t\t\t\t\t[paraphrasedTotal]=\"totalParaphrased\"\n\t\t\t\t\t\t\t\tclass=\"match-type-filter-container\"></cr-match-type-filter-result>\n\t\t\t\t\t\t</section>\n\t\t\t\t\t\t<mat-divider></mat-divider>\n\t\t\t\t\t\t<section class=\"exclude-domains-container\" fxLayout=\"column\" fxLayoutGap=\"16px\">\n\t\t\t\t\t\t\t<div class=\"body-title-container\">\n\t\t\t\t\t\t\t\t<span class=\"body-title included-tags-container\" i18n>\n\t\t\t\t\t\t\t\t\t<span web-report-title-font>Exclude domains</span>\n\t\t\t\t\t\t\t\t\t<span *ngIf=\"allExcludedDomains && allExcludedDomains?.length > 0\" class=\"total-stat\">\n\t\t\t\t\t\t\t\t\t\t({{ allExcludedDomains?.length }})\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<cr-excluded-domains-input></cr-excluded-domains-input>\n\t\t\t\t\t\t</section>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<mat-divider [vertical]=\"!isMobile\" class=\"vertical-divider\"></mat-divider>\n\n\t\t\t\t\t<div class=\"right-side-conatier\" [class.mobile]=\"isMobile\" fxLayout=\"column\" fxLayoutGap=\"16px\">\n\t\t\t\t\t\t<!--General filters-->\n\t\t\t\t\t\t<section class=\"general-filters-container\" fxLayout=\"column\" fxLayoutGap=\"16px\">\n\t\t\t\t\t\t\t<span class=\"body-title\" web-report-title-font i18n>General Filters</span>\n\t\t\t\t\t\t\t<cr-general-filter-result\n\t\t\t\t\t\t\t\tclass=\"general-filter-container\"\n\t\t\t\t\t\t\t\t[totalAlerts]=\"totalAlerts\"\n\t\t\t\t\t\t\t\t[totalSameAuthor]=\"totalSameAuthor\"></cr-general-filter-result>\n\t\t\t\t\t\t</section>\n\t\t\t\t\t\t<mat-divider></mat-divider>\n\t\t\t\t\t\t<!-- Included Tags -->\n\t\t\t\t\t\t<section\n\t\t\t\t\t\t\tclass=\"included-tags-container\"\n\t\t\t\t\t\t\tfxLayout=\"column\"\n\t\t\t\t\t\t\tfxLayoutGap=\"8px\"\n\t\t\t\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t\t\t\t'disabled-section': !allTagItem || allTagItem.length === 0\n\t\t\t\t\t\t\t}\">\n\t\t\t\t\t\t\t<span class=\"body-title included-tags-container\" i18n>\n\t\t\t\t\t\t\t\t<span web-report-title-font>Included Tags</span>\n\t\t\t\t\t\t\t\t<span *ngIf=\"allTagItem && allTagItem.length > 0\" class=\"total-stat\">({{ allTagItem.length }})</span>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<cr-included-tags-filter-result\n\t\t\t\t\t\t\t\t[allTagItem]=\"allTagItem\"\n\t\t\t\t\t\t\t\tclass=\"included-tags-filter-result\"></cr-included-tags-filter-result>\n\t\t\t\t\t\t</section>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</ng-container>\n\n\t\t\t<ng-template #contentMobileViewRef>\n\t\t\t\t<mat-accordion #expansionPanel>\n\t\t\t\t\t<mat-expansion-panel\n\t\t\t\t\t\t[expanded]=\"selectedFilter === EFilterResultSection.SourceTypes\"\n\t\t\t\t\t\t(opened)=\"expandSettings(EFilterResultSection.SourceTypes)\">\n\t\t\t\t\t\t<mat-expansion-panel-header>\n\t\t\t\t\t\t\t<mat-panel-title>\n\t\t\t\t\t\t\t\t<span class=\"mobile-option-title\" web-report-title-font i18n>Source type</span>\n\t\t\t\t\t\t\t</mat-panel-title>\n\n\t\t\t\t\t\t\t<mat-panel-description>\n\t\t\t\t\t\t\t\t<mat-icon class=\"expand-icon\" fontSet=\"material-icons-round\">arrow_drop_down</mat-icon>\n\t\t\t\t\t\t\t</mat-panel-description>\n\t\t\t\t\t\t</mat-expansion-panel-header>\n\n\t\t\t\t\t\t<span *ngIf=\"sourceTypeErrorMessage\" @errorAnimation class=\"dialog-error-message\">\n\t\t\t\t\t\t\t{{ sourceTypeErrorMessage }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<ng-container *ngIf=\"!loading\">\n\t\t\t\t\t\t\t<cr-source-type-filter-result\n\t\t\t\t\t\t\t\t[totalSourceType]=\"totalSourceType\"\n\t\t\t\t\t\t\t\t[reportViewSvc]=\"data.reportViewSvc\"\n\t\t\t\t\t\t\t\t[reportDataSvc]=\"data.reportDataSvc\"\n\t\t\t\t\t\t\t\tclass=\"sources-type-container\"></cr-source-type-filter-result>\n\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t</mat-expansion-panel>\n\t\t\t\t</mat-accordion>\n\n\t\t\t\t<mat-accordion #expansionPanel>\n\t\t\t\t\t<mat-expansion-panel\n\t\t\t\t\t\t[expanded]=\"selectedFilter === EFilterResultSection.AdvancedFilterSettings\"\n\t\t\t\t\t\t(opened)=\"expandSettings(EFilterResultSection.AdvancedFilterSettings)\">\n\t\t\t\t\t\t<mat-expansion-panel-header>\n\t\t\t\t\t\t\t<mat-panel-title>\n\t\t\t\t\t\t\t\t<span class=\"mobile-option-title\" web-report-title-font i18n>Advanced Filter Settings</span>\n\t\t\t\t\t\t\t</mat-panel-title>\n\n\t\t\t\t\t\t\t<mat-panel-description>\n\t\t\t\t\t\t\t\t<mat-icon class=\"expand-icon\" fontSet=\"material-icons-round\">arrow_drop_down</mat-icon>\n\t\t\t\t\t\t\t</mat-panel-description>\n\t\t\t\t\t\t</mat-expansion-panel-header>\n\n\t\t\t\t\t\t<cr-meta-filter-result\n\t\t\t\t\t\t\t[publicationDates]=\"publicationDates\"\n\t\t\t\t\t\t\t[totalResultsWithoutDate]=\"totalResultsWithoutDate\"\n\t\t\t\t\t\t\t[minWordLimit]=\"minWordLimit\"\n\t\t\t\t\t\t\t[maxWordLimit]=\"maxWordLimit\"\n\t\t\t\t\t\t\tclass=\"meta-filter-container\"></cr-meta-filter-result>\n\t\t\t\t\t</mat-expansion-panel>\n\t\t\t\t</mat-accordion>\n\n\t\t\t\t<mat-accordion #expansionPanel>\n\t\t\t\t\t<mat-expansion-panel\n\t\t\t\t\t\t[expanded]=\"selectedFilter === EFilterResultSection.MatchTypes\"\n\t\t\t\t\t\t(opened)=\"expandSettings(EFilterResultSection.MatchTypes)\">\n\t\t\t\t\t\t<mat-expansion-panel-header>\n\t\t\t\t\t\t\t<mat-panel-title>\n\t\t\t\t\t\t\t\t<span class=\"mobile-option-title\" web-report-title-font i18n>Match types</span>\n\t\t\t\t\t\t\t</mat-panel-title>\n\n\t\t\t\t\t\t\t<mat-panel-description>\n\t\t\t\t\t\t\t\t<mat-icon class=\"expand-icon\" fontSet=\"material-icons-round\">arrow_drop_down</mat-icon>\n\t\t\t\t\t\t\t</mat-panel-description>\n\t\t\t\t\t\t</mat-expansion-panel-header>\n\t\t\t\t\t\t<span *ngIf=\"matchTypeErrorMessage\" @errorAnimation class=\"dialog-error-message\">\n\t\t\t\t\t\t\t{{ matchTypeErrorMessage }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<cr-match-type-filter-result\n\t\t\t\t\t\t\t[identicalTotal]=\"totalIdentical\"\n\t\t\t\t\t\t\t[minorChangesTotal]=\"totalMinorChanges\"\n\t\t\t\t\t\t\t[paraphrasedTotal]=\"totalParaphrased\"\n\t\t\t\t\t\t\tclass=\"match-type-filter-container\"></cr-match-type-filter-result>\n\t\t\t\t\t</mat-expansion-panel>\n\t\t\t\t</mat-accordion>\n\n\t\t\t\t<mat-accordion #expansionPanel>\n\t\t\t\t\t<mat-expansion-panel\n\t\t\t\t\t\t[expanded]=\"selectedFilter === EFilterResultSection.ExcludeDomains\"\n\t\t\t\t\t\t(opened)=\"expandSettings(EFilterResultSection.ExcludeDomains)\">\n\t\t\t\t\t\t<mat-expansion-panel-header>\n\t\t\t\t\t\t\t<mat-panel-title>\n\t\t\t\t\t\t\t\t<span class=\"mobile-option-title\" i18n>\n\t\t\t\t\t\t\t\t\t<span web-report-title-font>Exclude domains</span>\n\t\t\t\t\t\t\t\t\t<span *ngIf=\"allExcludedDomains && allExcludedDomains?.length > 0\" class=\"total-stat\">\n\t\t\t\t\t\t\t\t\t\t({{ allExcludedDomains?.length }})\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</mat-panel-title>\n\n\t\t\t\t\t\t\t<mat-panel-description>\n\t\t\t\t\t\t\t\t<mat-icon class=\"expand-icon\" fontSet=\"material-icons-round\">arrow_drop_down</mat-icon>\n\t\t\t\t\t\t\t</mat-panel-description>\n\t\t\t\t\t\t</mat-expansion-panel-header>\n\n\t\t\t\t\t\t<cr-excluded-domains-input></cr-excluded-domains-input>\n\t\t\t\t\t</mat-expansion-panel>\n\t\t\t\t</mat-accordion>\n\n\t\t\t\t<mat-accordion #expansionPanel>\n\t\t\t\t\t<mat-expansion-panel\n\t\t\t\t\t\t[expanded]=\"selectedFilter === EFilterResultSection.GeneralFilters\"\n\t\t\t\t\t\t(opened)=\"expandSettings(EFilterResultSection.GeneralFilters)\">\n\t\t\t\t\t\t<mat-expansion-panel-header>\n\t\t\t\t\t\t\t<mat-panel-title>\n\t\t\t\t\t\t\t\t<span class=\"mobile-option-title\" web-report-title-font i18n>General filters</span>\n\t\t\t\t\t\t\t</mat-panel-title>\n\n\t\t\t\t\t\t\t<mat-panel-description>\n\t\t\t\t\t\t\t\t<mat-icon class=\"expand-icon\" fontSet=\"material-icons-round\">arrow_drop_down</mat-icon>\n\t\t\t\t\t\t\t</mat-panel-description>\n\t\t\t\t\t\t</mat-expansion-panel-header>\n\t\t\t\t\t\t<cr-general-filter-result\n\t\t\t\t\t\t\tclass=\"general-filter-container\"\n\t\t\t\t\t\t\t[totalAlerts]=\"totalAlerts\"\n\t\t\t\t\t\t\t[totalSameAuthor]=\"totalSameAuthor\"></cr-general-filter-result>\n\t\t\t\t\t</mat-expansion-panel>\n\t\t\t\t</mat-accordion>\n\n\t\t\t\t<mat-accordion\n\t\t\t\t\t#expansionPanel\n\t\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t\tdisabled: !allTagItem || allTagItem.length === 0\n\t\t\t\t\t}\">\n\t\t\t\t\t<mat-expansion-panel\n\t\t\t\t\t\t[expanded]=\"selectedFilter === EFilterResultSection.IncludedTags\"\n\t\t\t\t\t\t(opened)=\"expandSettings(EFilterResultSection.IncludedTags)\"\n\t\t\t\t\t\t[disabled]=\"!allTagItem || allTagItem.length === 0\">\n\t\t\t\t\t\t<mat-expansion-panel-header>\n\t\t\t\t\t\t\t<mat-panel-title>\n\t\t\t\t\t\t\t\t<span class=\"mobile-option-title\" web-report-title-font i18n>\n\t\t\t\t\t\t\t\t\t<span web-report-title-font>Included Tags</span>\n\t\t\t\t\t\t\t\t\t<span *ngIf=\"allTagItem && allTagItem.length > 0\" class=\"total-stat\">({{ allTagItem.length }})</span>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</mat-panel-title>\n\n\t\t\t\t\t\t\t<mat-panel-description>\n\t\t\t\t\t\t\t\t<mat-icon class=\"expand-icon\" fontSet=\"material-icons-round\">arrow_drop_down</mat-icon>\n\t\t\t\t\t\t\t</mat-panel-description>\n\t\t\t\t\t\t</mat-expansion-panel-header>\n\t\t\t\t\t\t<cr-included-tags-filter-result\n\t\t\t\t\t\t\t[allTagItem]=\"allTagItem\"\n\t\t\t\t\t\t\tclass=\"included-tags-filter-result\"></cr-included-tags-filter-result>\n\t\t\t\t\t</mat-expansion-panel>\n\t\t\t\t</mat-accordion>\n\t\t\t</ng-template>\n\t\t</div>\n\t\t<div\n\t\t\tmat-dialog-actions\n\t\t\tclass=\"apply-and-discard-button-contaier\"\n\t\t\t[class.is-mobile]=\"isMobile\"\n\t\t\t[style.padding-top]=\"isMobile ? '16px !important' : ''\">\n\t\t\t<cr-button\n\t\t\t\t[outlined]=\"true\"\n\t\t\t\t[padding]=\"isMobile ? '3px 17px' : '3px 24px'\"\n\t\t\t\t(click)=\"$event.stopPropagation(); $event.preventDefault(); onDiscardChanges()\"\n\t\t\t\t[width]=\"isMobile ? '151px' : '180px'\"\n\t\t\t\t[isLink]=\"isMobile\"\n\t\t\t\tcolor=\"primary\">\n\t\t\t\t<span class=\"discard-changes-button\" i18n>Discard changes</span>\n\t\t\t</cr-button>\n\t\t\t<cr-button (click)=\"onSaveChanges()\" [width]=\"isMobile ? '161px' : '220px'\" padding=\"3px 24px\" color=\"primary\">\n\t\t\t\t<span class=\"apply-filters-button\" i18n>Apply filters</span>\n\t\t\t</cr-button>\n\t\t</div>\n\t</ng-container>\n\t<ng-template #excludedDailog>\n\t\t<cr-excluded-results-dailog\n\t\t\t[allResultsItem]=\"excludedResults\"\n\t\t\t[reportDataSvc]=\"data.reportDataSvc\"\n\t\t\t[reportViewSvc]=\"data.reportViewSvc\"\n\t\t\t[highlightService]=\"data.highlightService\"\n\t\t\t(closeDailogEvent)=\"data.showExcludedDailog = !$event\"></cr-excluded-results-dailog>\n\t</ng-template>\n</div>\n","import {\n\tComponent,\n\tEventEmitter,\n\tHostBinding,\n\tInput,\n\tOnChanges,\n\tOnDestroy,\n\tOnInit,\n\tOutput,\n\tSimpleChanges,\n\tViewChild,\n\tElementRef,\n} from '@angular/core';\nimport { IResultsActions } from './models/results-actions.models';\nimport { UntypedFormControl } from '@angular/forms';\nimport { MatDialog } from '@angular/material/dialog';\nimport { FilterResultDailogComponent } from '../../../../../dialogs/filter-result-dailog/filter-result-dailog.component';\nimport { ReportDataService } from '../../../../../services/report-data.service';\nimport { IFilterResultDailogData } from '../../../../../dialogs/filter-result-dailog/models/filter-result-dailog.enum';\nimport { ReportViewService } from '../../../../../services/report-view.service';\nimport { ReportMatchHighlightService } from '../../../../../services/report-match-highlight.service';\nimport { untilDestroy } from '../../../../../utils/until-destroy';\n\n@Component({\n\tselector: 'cr-results-actions',\n\ttemplateUrl: './results-actions.component.html',\n\tstyleUrls: ['./results-actions.component.scss'],\n\tstandalone: false,\n})\nexport class ResultsActionsComponent implements OnInit, OnChanges, OnDestroy {\n\t@ViewChild('searchInput') searchInput: ElementRef;\n\n\t@HostBinding('style.padding')\n\tpaddingProp: string;\n\n\t@HostBinding('style.justify-content')\n\tjustifyContent = 'center';\n\n\t@HostBinding('style.border-bottom')\n\tborderBottom: string;\n\n\t@Input() resultsActions: IResultsActions | null;\n\t@Input() searchedValue: string | null = null;\n\t@Input() isMobile: boolean = false;\n\t@Input() hideTotal: boolean = false;\n\t@Input() isFilterOn: boolean = false;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether to show the loading view or not.\n\t */\n\t@Input() showLoadingView: boolean = false;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether to show the loading view or not.\n\t */\n\t@Input() expandSection: boolean = false;\n\n\t@Output() onSearch = new EventEmitter<string>();\n\t@Output() onExpandToggle = new EventEmitter<boolean>();\n\n\tsearchFc = new UntypedFormControl('');\n\tshowSearchFiled: boolean = false;\n\tloadingResults: boolean;\n\tdocDirection: 'ltr' | 'rtl';\n\n\tconstructor(\n\t\tprivate _matDialog: MatDialog,\n\t\tprivate _reportDataSvc: ReportDataService,\n\t\tprivate _reportViewSvc: ReportViewService,\n\t\tprivate _highlightService: ReportMatchHighlightService\n\t) {}\n\n\tngOnInit(): void {\n\t\tthis.searchFc.valueChanges.pipe(untilDestroy(this)).subscribe(value => {\n\t\t\tthis.onSearch.emit(value);\n\t\t});\n\n\t\tthis._reportDataSvc.loadingMoreResults$.pipe(untilDestroy(this)).subscribe(value => {\n\t\t\tthis.loadingResults = value;\n\t\t});\n\n\t\tthis._reportViewSvc.documentDirection$.pipe(untilDestroy(this)).subscribe(dir => {\n\t\t\tthis.docDirection = dir;\n\t\t});\n\t}\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif ('searchedValue' in changes) this.searchFc.setValue(changes['searchedValue'].currentValue);\n\t\tif ('isMobile' in changes && changes['isMobile'].currentValue === true) this.borderBottom = 'none';\n\t}\n\n\tshowSearch() {\n\t\tthis.showSearchFiled = !this.showSearchFiled;\n\n\t\tif (!this.showSearchFiled) {\n\t\t\tthis.searchFc.setValue('');\n\t\t\tthis.justifyContent = 'center';\n\t\t} else this.justifyContent = 'start';\n\n\t\tsetTimeout(() => {\n\t\t\tif (this.searchInput) {\n\t\t\t\tthis.searchInput.nativeElement.setAttribute('aria-live', 'assertive');\n\t\t\t\tthis.searchInput.nativeElement.focus();\n\t\t\t\tthis.searchInput.nativeElement.select();\n\t\t\t}\n\t\t}, 100);\n\t}\n\n\texpandResultsSection() {\n\t\tthis.expandSection = !this.expandSection;\n\t\tthis.onExpandToggle.emit(this.expandSection);\n\t\tif (this.expandSection) this.paddingProp = '8px 8px 0px 8px';\n\t\telse this.paddingProp = '8px 8px 8px 8px';\n\t}\n\n\tshowFilterDialog(showExcludedDailog: boolean = false) {\n\t\tthis._matDialog.open(FilterResultDailogComponent, {\n\t\t\tminWidth: this.isMobile ? '100%' : '',\n\t\t\twidth: this.isMobile ? '100%' : '1010px',\n\t\t\tpanelClass: 'filter-result-dailog',\n\t\t\tariaLabel: $localize`Report Filter Options`,\n\t\t\tautoFocus: false,\n\t\t\tdata: {\n\t\t\t\treportDataSvc: this._reportDataSvc,\n\t\t\t\treportViewSvc: this._reportViewSvc,\n\t\t\t\thighlightService: this._highlightService,\n\t\t\t\tshowExcludedDailog: showExcludedDailog,\n\t\t\t\tisMobile: this.isMobile,\n\t\t\t} as IFilterResultDailogData,\n\t\t});\n\t}\n\n\tdeselectMatch() {\n\t\tthis._highlightService.clearAllMatchs();\n\t}\n\n\tclearFilter() {\n\t\tthis._reportDataSvc.clearFilter();\n\t}\n\n\tngOnDestroy() {}\n}\n","<ng-container *ngIf=\"!showLoadingView; else loadingViewRef\">\n\t<div class=\"actions-container\" [dir]=\"docDirection\">\n\t\t<ng-container\n\t\t\t*ngIf=\"!resultsActions?.selectedResults || resultsActions?.selectedResults === 0; else highlightedResultsView\">\n\t\t\t<div *ngIf=\"!showSearchFiled\" class=\"tootal-results-container\">\n\t\t\t\t<h6 class=\"tootal-results\" web-report-title-font>\n\t\t\t\t\t<span i18n>Matching Text Results</span>\n\t\t\t\t\t<span *ngIf=\"!hideTotal\">&nbsp;({{ resultsActions?.totalResults }})</span>\n\t\t\t\t</h6>\n\t\t\t</div>\n\n\t\t\t<mat-form-field\n\t\t\t\t*ngIf=\"showSearchFiled\"\n\t\t\t\tclass=\"input-search-container mat-input-no-bottom-padding with-label\"\n\t\t\t\tappearance=\"fill\">\n\t\t\t\t<mat-icon class=\"search-icon\" fontSet=\"material-icons-round\" matPrefix>search</mat-icon>\n\t\t\t\t<mat-label i18n>Search by: Title, Intro, URL, Result type...</mat-label>\n\t\t\t\t<input\n\t\t\t\t\t#searchInput\n\t\t\t\t\tclass=\"search-input\"\n\t\t\t\t\taria-label=\"Search results\"\n\t\t\t\t\ti18n-aria-label\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tmatInput\n\t\t\t\t\t[formControl]=\"searchFc\" />\n\t\t\t\t<button\n\t\t\t\t\tmatSuffix\n\t\t\t\t\tmat-icon-button\n\t\t\t\t\tclass=\"icon-button clear-button\"\n\t\t\t\t\t(click)=\"showSearch()\"\n\t\t\t\t\tmatTooltip=\"Clear\"\n\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t\ti18n-matTooltip\n\t\t\t\t\taria-label=\"Clears entered text\"\n\t\t\t\t\ti18n-aria-label>\n\t\t\t\t\t<mat-icon class=\"clear-icon\" fontSet=\"material-icons-outlined\">cancel</mat-icon>\n\t\t\t\t</button>\n\t\t\t</mat-form-field>\n\n\t\t\t<div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"8px\" class=\"results-search-filter-container\">\n\t\t\t\t<button\n\t\t\t\t\tclass=\"icon-button\"\n\t\t\t\t\t[ngClass]=\"{ 'disabled-icon': !resultsActions?.totalResults || resultsActions?.totalResults === 0 }\"\n\t\t\t\t\tmat-icon-button\n\t\t\t\t\t*ngIf=\"!showSearchFiled\"\n\t\t\t\t\t(click)=\"!resultsActions?.totalResults || resultsActions?.totalResults === 0 ? '' : showSearch()\"\n\t\t\t\t\tmatTooltip=\"Search Results\"\n\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t\ti18n-matTooltip\n\t\t\t\t\taria-label=\"Search Results\"\n\t\t\t\t\ti18n-aria-label>\n\t\t\t\t\t<mat-icon class=\"open-search-icon\" fontSet=\"material-icons-round\">search</mat-icon>\n\t\t\t\t</button>\n\t\t\t\t<button\n\t\t\t\t\tclass=\"icon-button\"\n\t\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t\t'disabled-icon': !resultsActions?.totalResults || resultsActions?.totalResults === 0,\n\t\t\t\t\t\t'selected-icon': isFilterOn || resultsActions?.totalFiltered != 0\n\t\t\t\t\t}\"\n\t\t\t\t\tmat-icon-button\n\t\t\t\t\t(click)=\"!resultsActions?.totalResults || resultsActions?.totalResults === 0 ? '' : showFilterDialog()\"\n\t\t\t\t\tmatTooltip=\"Filter Matching Results\"\n\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t\ti18n-matTooltip\n\t\t\t\t\taria-label=\"Filter Matching Results\"\n\t\t\t\t\taria-haspopup=\"dialog\"\n\t\t\t\t\ti18n-aria-label>\n\t\t\t\t\t<mat-icon class=\"filter-search-icon\" fontSet=\"material-icons-round\">filter_list</mat-icon>\n\t\t\t\t</button>\n\n\t\t\t\t<mat-icon\n\t\t\t\t\t*ngIf=\"isMobile\"\n\t\t\t\t\tclass=\"expand-icon\"\n\t\t\t\t\t(click)=\"expandResultsSection()\"\n\t\t\t\t\t[ngClass]=\"{ 'expanded-section-icon': expandSection }\"\n\t\t\t\t\tfontSet=\"material-icons-round\"\n\t\t\t\t\taria-label=\"Expand or Collapse results section\"\n\t\t\t\t\ti18n-aria-label>\n\t\t\t\t\tarrow_drop_down\n\t\t\t\t</mat-icon>\n\t\t\t</div>\n\t\t</ng-container>\n\n\t\t<ng-template #highlightedResultsView>\n\t\t\t<div class=\"tootal-results-container\">\n\t\t\t\t<span class=\"tootal-results\" web-report-title-font>\n\t\t\t\t\t<ng-container i18n>Highlighted Results&nbsp;</ng-container>\n\t\t\t\t\t<span *ngIf=\"!hideTotal\">({{ resultsActions?.selectedResults }})</span>\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t\t<button\n\t\t\t\tclass=\"icon-button\"\n\t\t\t\tmat-icon-button\n\t\t\t\t(click)=\"deselectMatch()\"\n\t\t\t\tmatTooltip=\"Deselect Match\"\n\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\ti18n-matTooltip\n\t\t\t\taria-label=\"Deselects a match result\"\n\t\t\t\ti18n-aria-label>\n\t\t\t\t<mat-icon class=\"diselect-match-icon\" fontSet=\"material-icons-outlined\">cancel</mat-icon>\n\t\t\t</button>\n\t\t</ng-template>\n\t</div>\n\n\t<div\n\t\t*ngIf=\"resultsActions?.totalExcluded || resultsActions?.totalFiltered\"\n\t\tclass=\"chips-container\"\n\t\t[dir]=\"docDirection\">\n\t\t<ng-container *ngIf=\"resultsActions?.totalExcluded\">\n\t\t\t<mat-basic-chip\n\t\t\t\t(click)=\"showFilterDialog(true)\"\n\t\t\t\t(keyup.enter)=\"showFilterDialog(true)\"\n\t\t\t\trole=\"button\"\n\t\t\t\taria-label=\"View excluded results\"\n\t\t\t\ti18n-aria-label\n\t\t\t\ttabindex=\"0\">\n\t\t\t\t{{ resultsActions?.totalExcluded }}\n\t\t\t\t<ng-container i18n>excluded</ng-container>\n\t\t\t</mat-basic-chip>\n\t\t</ng-container>\n\n\t\t<ng-container *ngIf=\"resultsActions?.totalFiltered\">\n\t\t\t<mat-basic-chip\n\t\t\t\tclass=\"filter-chip\"\n\t\t\t\t[class.disabled]=\"loadingResults\"\n\t\t\t\t(click)=\"showFilterDialog()\"\n\t\t\t\t(keyup.enter)=\"showFilterDialog()\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t\trole=\"button\"\n\t\t\t\taria-label=\"View results filter dialog\"\n\t\t\t\ti18n-aria-label>\n\t\t\t\t<span>\n\t\t\t\t\t{{ resultsActions?.totalFiltered }}\n\t\t\t\t\t<ng-container i18n>filtered</ng-container>\n\t\t\t\t</span>\n\t\t\t\t<ng-container *ngIf=\"!loadingResults; else loadingResultsViewRef\">\n\t\t\t\t\t<mat-icon\n\t\t\t\t\t\ttabIndex=\"0\"\n\t\t\t\t\t\tclass=\"clear-filter-icon\"\n\t\t\t\t\t\tfontSet=\"material-icons-round\"\n\t\t\t\t\t\t(click)=\"$event.stopPropagation(); clearFilter()\"\n\t\t\t\t\t\t(keyup.enter)=\"clearFilter()\"\n\t\t\t\t\t\tmatTooltip=\"Clear Filter\"\n\t\t\t\t\t\taria-hidden=\"false\"\n\t\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t\t\trole=\"button\"\n\t\t\t\t\t\taria-label=\"Clear all filtered results\"\n\t\t\t\t\t\ti18n-aria-label\n\t\t\t\t\t\ti18n-matTooltip>\n\t\t\t\t\t\thighlight_off\n\t\t\t\t\t</mat-icon>\n\t\t\t\t</ng-container>\n\t\t\t\t<ng-template #loadingResultsViewRef>\n\t\t\t\t\t<cr-spinner size=\"14px\"></cr-spinner>\n\t\t\t\t</ng-template>\n\t\t\t</mat-basic-chip>\n\t\t</ng-container>\n\t</div>\n</ng-container>\n\n<ng-template #loadingViewRef>\n\t<div class=\"actions-loader-container\">\n\t\t<ngx-skeleton-loader\n\t\t\tclass=\"skeleton search-input-loader\"\n\t\t\t[appearance]=\"'line'\"\n\t\t\tstyle=\"width: 40%\"></ngx-skeleton-loader>\n\n\t\t<div class=\"icons-loader-container\">\n\t\t\t<ngx-skeleton-loader class=\"skeleton circle\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"skeleton circle\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t</div>\n\t</div>\n</ng-template>\n","export enum EnumNavigateMobileButton {\n\tFirstButton,\n\tSecondButton,\n\tThirdButton,\n\tFourthButton,\n\tFifthButton,\n\tNone,\n}\n","import {\n\tComponent,\n\tElementRef,\n\tEventEmitter,\n\tHostBinding,\n\tInput,\n\tOnChanges,\n\tOnInit,\n\tOutput,\n\tSimpleChanges,\n\tTemplateRef,\n\tViewChild,\n} from '@angular/core';\nimport { getCorrectionCategoryTitle, getCorrectionTypeTitle, getResultsTypeTitle } from '../../../utils/enums-helpers';\nimport {\n\tEPlatformType,\n\tEReportViewType,\n\tEResultPreviewType,\n\tEWritingFeedbackCategories,\n\tEWritingFeedbackTypes,\n} from '../../../enums/copyleaks-web-report.enums';\nimport {\n\tIMatchesCategoryStatistics,\n\tIMatchesTypeStatistics,\n\tIWritingFeedbackTypeStatistics,\n} from '../../../models/report-statistics.models';\nimport { ReportViewService } from '../../../services/report-view.service';\n\n@Component({\n\tselector: 'cr-categories-analysis-panel',\n\ttemplateUrl: './cr-categories-analysis-panel.component.html',\n\tstyleUrls: ['./cr-categories-analysis-panel.component.scss'],\n\tstandalone: false,\n})\nexport class CrCategoriesAnalysisTypePanelComponent implements OnInit, OnChanges {\n\t@HostBinding('style.display')\n\tdisplayProp: string;\n\n\t@ViewChild('actionsContainer', { static: false }) actionsContainer: ElementRef;\n\n\t/**\n\t * Flag indicating whether the view is a mobile or not.\n\t */\n\t@Input() isMobile: boolean;\n\n\t/**\n\t * The selected view type.\n\t */\n\t@Input() selectedView: EReportViewType;\n\n\t/**\n\t * The statistics for the writing feedback type.\n\t */\n\t@Input() writingFeedbackStats: IWritingFeedbackTypeStatistics;\n\n\t/**\n\t * The statistics for the writing feedback type.\n\t */\n\t@Input() matchesStats: IMatchesTypeStatistics;\n\n\t/**\n\t * The template for the custom AI source match upgrade.\n\t */\n\t@Input() customAISourceMatchUpgradeTemplate: TemplateRef<any> | undefined = undefined;\n\n\t/**\n\t * Event emitted when a category is selected.\n\t */\n\t@Output() selectCategory = new EventEmitter<EWritingFeedbackCategories | IMatchesCategoryStatistics>();\n\n\t/**\n\t * The total number of corrections.\n\t */\n\ttotalCorrections: number = 0;\n\n\texpanded: boolean = false;\n\n\tEReportViewType = EReportViewType;\n\tEResultPreviewType = EResultPreviewType;\n\tEPlatformType = EPlatformType;\n\n\tEXPAND_TOOLTIP = $localize`Expand`;\n\tCOLLAPSE_TOOLTIP = $localize`Collapse`;\n\tAI_SOURCE_MATCH_TOOLTIP = $localize`AI Source Match blends plagiarism and AI detection to identify reused or repurposed AI-generated content from other sources.`;\n\n\tprivate mutationObserver!: MutationObserver;\n\n\tconstructor(public reportViewSvc: ReportViewService) {}\n\n\t/**\n\t * Lifecycle hook that is called when any data-bound property of the component changes.\n\t * @param changes - The changed properties.\n\t */\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif (changes['writingFeedbackStats']) {\n\t\t\tthis.totalCorrections = 0;\n\t\t\tthis.writingFeedbackStats.categories.forEach(c => {\n\t\t\t\tthis.totalCorrections += c?.totalIssues ?? 0;\n\t\t\t});\n\t\t\tif (this.totalCorrections === 0) this.displayProp = 'none';\n\t\t\telse this.displayProp = 'flex';\n\n\t\t\t// sort the writingFeedbackStats categories by the number of issues\n\t\t\tthis.writingFeedbackStats.categories.sort((a, b) => b.totalIssues - a.totalIssues);\n\t\t}\n\t\tif (changes['matchesStats']) {\n\t\t\tif (\n\t\t\t\t(this.matchesStats?.totalResults === 0 || this.matchesStats?.categories?.length === 0) &&\n\t\t\t\tthis.matchesStats.type !== EResultPreviewType.AISourceMatchUpgrade\n\t\t\t)\n\t\t\t\tthis.displayProp = 'none';\n\t\t\telse this.displayProp = 'flex';\n\n\t\t\t// sort the matchesStats categories by the number of issues\n\t\t\tthis.matchesStats.categories.sort((a, b) => b.totalResults - a.totalResults);\n\t\t}\n\n\t\tif (changes['customAISourceMatchUpgradeTemplate'] && this.customAISourceMatchUpgradeTemplate) {\n\t\t\tthis.refreshDisplayState();\n\t\t}\n\t}\n\n\tngOnInit(): void {}\n\n\tngAfterViewInit(): void {\n\t\tif (this.actionsContainer) {\n\t\t\tthis.mutationObserver = new MutationObserver(mutations => {\n\t\t\t\tfor (const mutation of mutations) {\n\t\t\t\t\tif (mutation.type === 'childList') {\n\t\t\t\t\t\tif (this.customAISourceMatchUpgradeTemplate) this.refreshDisplayState();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.mutationObserver.observe(this.actionsContainer.nativeElement, {\n\t\t\t\tchildList: true,\n\t\t\t\tsubtree: true,\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Gets the title for the correction category.\n\t * @param type - The correction category type.\n\t * @returns The title of the correction category.\n\t */\n\tgetCorrectionCategoryTitle(type: EWritingFeedbackCategories): string {\n\t\treturn getCorrectionCategoryTitle(type);\n\t}\n\n\t/**\n\t * Gets the title for the correction type.\n\t * @param type - The correction type.\n\t * @returns The title of the correction type.\n\t */\n\tgetCorrectionTypeTitle(type: EWritingFeedbackTypes): string {\n\t\treturn getCorrectionTypeTitle(type);\n\t}\n\n\t/**\n\t * Gets the title for the result type.\n\t * @param type - The resul type.\n\t * @returns The title of the result type.\n\t */\n\tgetResultsTypeTitle(type: EResultPreviewType): string {\n\t\treturn getResultsTypeTitle(type);\n\t}\n\n\t/**\n\t * Handles the selection of a category.\n\t * @param type - The selected category type.\n\t */\n\tonSelectCategory(type: EWritingFeedbackCategories | IMatchesCategoryStatistics, event?: KeyboardEvent): void {\n\t\tif (!event || event.key === 'Enter') this.selectCategory.emit(type);\n\t}\n\n\texpandedChange(event): void {\n\t\tsetTimeout(() => {\n\t\t\tthis.expanded = event;\n\t\t}, 100);\n\t}\n\texpandAccordion() {\n\t\tthis.expanded = true;\n\t}\n\n\tget isCustomTemplateNotEmpty() {\n\t\tconst containerDiv = this.actionsContainer?.nativeElement;\n\t\treturn containerDiv?.children?.length > 0;\n\t}\n\n\trefreshDisplayState() {\n\t\tsetTimeout(() => {\n\t\t\tif (this.isCustomTemplateNotEmpty) this.displayProp = 'flex';\n\t\t\telse this.displayProp = 'none';\n\t\t});\n\t}\n}\n","<mat-accordion\n\t#expansionPanel\n\t[tabIndex]=\"-1\"\n\t[class.is-upgrade-category]=\"matchesStats?.type === EResultPreviewType.AISourceMatchUpgrade\">\n\t<mat-expansion-panel #panel [expanded]=\"expanded\" (expandedChange)=\"expandedChange($event)\" [tabIndex]=\"-1\">\n\t\t<mat-expansion-panel-header\n\t\t\t[ngClass]=\"{ 'mobile-results-panel-header': isMobile }\"\n\t\t\t[tabIndex]=\"0\"\n\t\t\t(keydown.enter)=\"expandAccordion()\">\n\t\t\t<mat-panel-title>\n\t\t\t\t<div class=\"container-title\">\n\t\t\t\t\t<ng-container [ngSwitch]=\"selectedView\">\n\t\t\t\t\t\t<ng-container *ngSwitchCase=\"EReportViewType.PlagiarismView\">\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclass=\"matches-category-title-container\"\n\t\t\t\t\t\t\t\t[style.flex-direction]=\"expanded ? 'column' : 'row'\"\n\t\t\t\t\t\t\t\t[style.gap]=\"expanded ? '2px' : '16px'\">\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclass=\"title-percentage-container\"\n\t\t\t\t\t\t\t\t\t[class.is-upgrade-title]=\"matchesStats?.type === EResultPreviewType.AISourceMatchUpgrade\">\n\t\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\t\t*ngIf=\"matchesStats?.type === EResultPreviewType.AISourceMatchUpgrade\"\n\t\t\t\t\t\t\t\t\t\twidth=\"22\"\n\t\t\t\t\t\t\t\t\t\theight=\"16\"\n\t\t\t\t\t\t\t\t\t\tviewBox=\"0 0 22 16\"\n\t\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\t\tid=\"Union\"\n\t\t\t\t\t\t\t\t\t\t\tfill-rule=\"evenodd\"\n\t\t\t\t\t\t\t\t\t\t\tclip-rule=\"evenodd\"\n\t\t\t\t\t\t\t\t\t\t\td=\"M12.0085 3.6355C12.5215 3.27341 12.8564 2.67607 12.8564 2.00049C12.8564 0.895919 11.961 0.000488281 10.8564 0.000488281C9.75185 0.000488281 8.85642 0.895919 8.85642 2.00049C8.85642 2.69982 9.21535 3.31531 9.75904 3.67281C8.70013 5.34691 7.25642 7.8147 7.25642 8.8253C6.69325 7.46927 5.13761 6.58355 3.83987 6.05856C4.03171 5.75158 4.14258 5.3888 4.14258 5.00012C4.14258 3.89555 3.24715 3.00012 2.14258 3.00012C1.03801 3.00012 0.142578 3.89555 0.142578 5.00012C0.142578 6.10469 1.03801 7.00012 2.14258 7.00012C2.16908 7.00012 2.19547 6.99961 2.22172 6.99858L3.85643 13.9995H17.8564L19.4983 6.96802C19.6145 6.98903 19.7342 7 19.8564 7C20.961 7 21.8564 6.10457 21.8564 5C21.8564 3.89543 20.961 3 19.8564 3C18.7519 3 17.8564 3.89543 17.8564 5C17.8564 5.35977 17.9514 5.69736 18.1177 5.98904C16.8312 6.50383 15.1931 7.40749 14.5372 8.8253C14.5372 7.62255 13.0883 5.24225 12.0085 3.6355ZM3.92819 15.9995C3.88067 15.6702 3.85643 15.3361 3.85643 14.9995H10.8564H17.8564C17.8564 15.3361 17.8322 15.6702 17.7847 15.9995H3.92819Z\"\n\t\t\t\t\t\t\t\t\t\t\tfill=\"#2B95FF\" />\n\t\t\t\t\t\t\t\t\t</svg>\n\n\t\t\t\t\t\t\t\t\t<span class=\"title\" i18n>{{ getResultsTypeTitle(matchesStats?.type) }}</span>\n\t\t\t\t\t\t\t\t\t<span *ngIf=\"matchesStats?.type != EResultPreviewType.AISourceMatchUpgrade\" class=\"percentage\" i18n>\n\t\t\t\t\t\t\t\t\t\t{{ matchesStats?.totalResultsPct | percent }}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t<mat-chip-option\n\t\t\t\t\t\t\t\t\t\t*ngIf=\"expanded && matchesStats?.type === EResultPreviewType.AISourceMatch\"\n\t\t\t\t\t\t\t\t\t\tclass=\"new-chip\"\n\t\t\t\t\t\t\t\t\t\ti18n>\n\t\t\t\t\t\t\t\t\t\tNew\n\t\t\t\t\t\t\t\t\t</mat-chip-option>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"stats-container\">\n\t\t\t\t\t\t\t\t\t<ng-container *ngIf=\"expanded && matchesStats?.type != EResultPreviewType.AISourceMatchUpgrade\">\n\t\t\t\t\t\t\t\t\t\t<mat-icon>swap_vert</mat-icon>\n\t\t\t\t\t\t\t\t\t\t<span i18n>Top results first</span>\n\t\t\t\t\t\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"5\" height=\"5\" viewBox=\"0 0 5 5\" fill=\"none\">\n\t\t\t\t\t\t\t\t\t\t\t<ellipse cx=\"2.07075\" cy=\"2.83008\" rx=\"2.07075\" ry=\"2\" fill=\"#9DA9BF\" />\n\t\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t\t</ng-container>\n\n\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t*ngIf=\"matchesStats?.type != EResultPreviewType.AISourceMatchUpgrade\"\n\t\t\t\t\t\t\t\t\t\tstyle=\"font-weight: 700\"\n\t\t\t\t\t\t\t\t\t\ti18n>\n\t\t\t\t\t\t\t\t\t\t{{ matchesStats?.totalResults ?? 0 }} Results\n\t\t\t\t\t\t\t\t\t</span>\n\n\t\t\t\t\t\t\t\t\t<mat-chip-option\n\t\t\t\t\t\t\t\t\t\t*ngIf=\"!expanded && matchesStats?.type === EResultPreviewType.AISourceMatch\"\n\t\t\t\t\t\t\t\t\t\tclass=\"new-chip\"\n\t\t\t\t\t\t\t\t\t\ti18n>\n\t\t\t\t\t\t\t\t\t\tNew\n\t\t\t\t\t\t\t\t\t</mat-chip-option>\n\t\t\t\t\t\t\t\t\t<ng-container *ngIf=\"expanded && matchesStats?.type != EResultPreviewType.AISourceMatchUpgrade\">\n\t\t\t\t\t\t\t\t\t\t<ng-container\n\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"\n\t\t\t\t\t\t\t\t\t\t\t\tmatchesStats?.type === EResultPreviewType.Internet ||\n\t\t\t\t\t\t\t\t\t\t\t\tmatchesStats?.type === EResultPreviewType.Batch\n\t\t\t\t\t\t\t\t\t\t\t\">\n\t\t\t\t\t\t\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"5\" height=\"5\" viewBox=\"0 0 5 5\" fill=\"none\">\n\t\t\t\t\t\t\t\t\t\t\t\t<ellipse cx=\"2.07075\" cy=\"2.83008\" rx=\"2.07075\" ry=\"2\" fill=\"#9DA9BF\" />\n\t\t\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"matchesStats?.type === EResultPreviewType.Internet\" style=\"font-weight: 700\" i18n>\n\t\t\t\t\t\t\t\t\t\t\t\t{{ matchesStats?.categories?.length ?? 0 }} Domains\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"matchesStats?.type === EResultPreviewType.Batch\" style=\"font-weight: 700\" i18n>\n\t\t\t\t\t\t\t\t\t\t\t\t{{ matchesStats?.categories?.length ?? 0 }} Authors\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"matchesStats?.type === EResultPreviewType.Repositroy\" style=\"font-weight: 700\" i18n>\n\t\t\t\t\t\t\t\t\t\t\t\t{{ matchesStats?.categories?.length ?? 0 }} Repositroies\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</ng-container>\n\n\t\t\t\t\t\t<ng-container *ngSwitchCase=\"EReportViewType.AIView\">\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclass=\"matches-category-title-container\"\n\t\t\t\t\t\t\t\t[style.flex-direction]=\"expanded ? 'column' : 'row'\"\n\t\t\t\t\t\t\t\t[style.gap]=\"expanded ? '2px' : '16px'\">\n\t\t\t\t\t\t\t\t<div class=\"title-percentage-container\">\n\t\t\t\t\t\t\t\t\t<span class=\"title\" i18n>{{ getResultsTypeTitle(matchesStats?.type) }}</span>\n\t\t\t\t\t\t\t\t\t<span class=\"percentage\" i18n>{{ matchesStats?.totalResultsPct | percent }}</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"stats-container\">\n\t\t\t\t\t\t\t\t\t<ng-container *ngIf=\"expanded\">\n\t\t\t\t\t\t\t\t\t\t<mat-icon>swap_vert</mat-icon>\n\t\t\t\t\t\t\t\t\t\t<span i18n>Top results first</span>\n\t\t\t\t\t\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"5\" height=\"5\" viewBox=\"0 0 5 5\" fill=\"none\">\n\t\t\t\t\t\t\t\t\t\t\t<ellipse cx=\"2.07075\" cy=\"2.83008\" rx=\"2.07075\" ry=\"2\" fill=\"#9DA9BF\" />\n\t\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t\t</ng-container>\n\n\t\t\t\t\t\t\t\t\t<span style=\"font-weight: 700\" i18n>{{ matchesStats?.totalResults ?? 0 }} Results</span>\n\t\t\t\t\t\t\t\t\t<ng-container *ngIf=\"expanded\">\n\t\t\t\t\t\t\t\t\t\t<ng-container\n\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"\n\t\t\t\t\t\t\t\t\t\t\t\tmatchesStats?.type === EResultPreviewType.Internet ||\n\t\t\t\t\t\t\t\t\t\t\t\tmatchesStats?.type === EResultPreviewType.Batch\n\t\t\t\t\t\t\t\t\t\t\t\">\n\t\t\t\t\t\t\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"5\" height=\"5\" viewBox=\"0 0 5 5\" fill=\"none\">\n\t\t\t\t\t\t\t\t\t\t\t\t<ellipse cx=\"2.07075\" cy=\"2.83008\" rx=\"2.07075\" ry=\"2\" fill=\"#9DA9BF\" />\n\t\t\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"matchesStats?.type === EResultPreviewType.Internet\" style=\"font-weight: 700\" i18n>\n\t\t\t\t\t\t\t\t\t\t\t\t{{ matchesStats?.categories?.length ?? 0 }} Domains\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"matchesStats?.type === EResultPreviewType.Batch\" style=\"font-weight: 700\" i18n>\n\t\t\t\t\t\t\t\t\t\t\t\t{{ matchesStats?.categories?.length ?? 0 }} Authors\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"matchesStats?.type === EResultPreviewType.Repositroy\" style=\"font-weight: 700\" i18n>\n\t\t\t\t\t\t\t\t\t\t\t\t{{ matchesStats?.categories?.length ?? 0 }} Repositroies\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</ng-container>\n\n\t\t\t\t\t\t<ng-container *ngSwitchCase=\"EReportViewType.WritingFeedbackTabView\">\n\t\t\t\t\t\t\t<span class=\"title\" i18n>{{ getCorrectionTypeTitle(writingFeedbackStats?.type) }}</span>\n\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t<ng-container *ngSwitchDefault></ng-container>\n\t\t\t\t\t</ng-container>\n\t\t\t\t</div>\n\t\t\t</mat-panel-title>\n\n\t\t\t<mat-panel-description>\n\t\t\t\t<span *ngIf=\"selectedView === EReportViewType.WritingFeedbackTabView\" class=\"description\" i18n>\n\t\t\t\t\t{{ totalCorrections }} CORRECTIONS\n\t\t\t\t</span>\n\t\t\t\t<mat-icon\n\t\t\t\t\t*ngIf=\"matchesStats?.type === EResultPreviewType.AISourceMatch\"\n\t\t\t\t\tclass=\"info-icon\"\n\t\t\t\t\tfontSet=\"material-icons-round\"\n\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t[attr.aria-label]=\"AI_SOURCE_MATCH_TOOLTIP\"\n\t\t\t\t\t[matTooltip]=\"AI_SOURCE_MATCH_TOOLTIP\">\n\t\t\t\t\tinfo_outline\n\t\t\t\t</mat-icon>\n\t\t\t\t<mat-icon\n\t\t\t\t\tclass=\"hide-alerts-icon\"\n\t\t\t\t\tfontSet=\"material-icons-round\"\n\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t\t[attr.aria-label]=\"panel.expanded ? COLLAPSE_TOOLTIP : EXPAND_TOOLTIP\"\n\t\t\t\t\t[matTooltip]=\"panel.expanded ? COLLAPSE_TOOLTIP : EXPAND_TOOLTIP\">\n\t\t\t\t\tkeyboard_arrow_down\n\t\t\t\t</mat-icon>\n\t\t\t</mat-panel-description>\n\t\t</mat-expansion-panel-header>\n\n\t\t<div class=\"categories-container\" role=\"listbox\" aria-label=\"List of categories\" i18n-aria-label>\n\t\t\t<ng-container [ngSwitch]=\"selectedView\">\n\t\t\t\t<ng-container *ngSwitchCase=\"EReportViewType.PlagiarismView\">\n\t\t\t\t\t<ng-container\n\t\t\t\t\t\t*ngIf=\"matchesStats?.type != EResultPreviewType.AISourceMatchUpgrade; else aiSourceMatchUpgradeRef\">\n\t\t\t\t\t\t<mat-basic-chip\n\t\t\t\t\t\t\t*ngFor=\"let stat of matchesStats?.categories\"\n\t\t\t\t\t\t\t[style.display]=\"stat?.totalResults === 0 ? 'none' : 'flex'\"\n\t\t\t\t\t\t\t[tabIndex]=\"0\"\n\t\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\t\taria-label=\"Category item\"\n\t\t\t\t\t\t\ti18n-aria-label\n\t\t\t\t\t\t\taria-hidden=\"false\"\n\t\t\t\t\t\t\t(keyup.enter)=\"onSelectCategory(stat)\"\n\t\t\t\t\t\t\t(click)=\"onSelectCategory(stat)\">\n\t\t\t\t\t\t\t{{ stat?.type }} ({{ stat?.totalResults }})\n\t\t\t\t\t\t</mat-basic-chip>\n\t\t\t\t\t</ng-container>\n\n\t\t\t\t\t<ng-template #aiSourceMatchUpgradeRef>\n\t\t\t\t\t\t<div class=\"actions-container\" #actionsContainer>\n\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"customAISourceMatchUpgradeTemplate ?? null\"></ng-container>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</ng-template>\n\t\t\t\t</ng-container>\n\n\t\t\t\t<ng-container *ngSwitchCase=\"EReportViewType.AIView\">\n\t\t\t\t\t<mat-basic-chip\n\t\t\t\t\t\t*ngFor=\"let stat of matchesStats?.categories\"\n\t\t\t\t\t\t[style.display]=\"stat?.totalResults === 0 ? 'none' : 'flex'\"\n\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\taria-label=\"Category item\"\n\t\t\t\t\t\ti18n-aria-label\n\t\t\t\t\t\taria-hidden=\"false\"\n\t\t\t\t\t\t[tabIndex]=\"0\"\n\t\t\t\t\t\t(keyup.enter)=\"onSelectCategory(stat)\"\n\t\t\t\t\t\t(click)=\"onSelectCategory(stat)\">\n\t\t\t\t\t\t{{ stat?.type }} ({{ stat?.totalResults }})\n\t\t\t\t\t</mat-basic-chip>\n\t\t\t\t</ng-container>\n\n\t\t\t\t<ng-container *ngSwitchCase=\"EReportViewType.WritingFeedbackTabView\">\n\t\t\t\t\t<mat-basic-chip\n\t\t\t\t\t\t*ngFor=\"let stat of writingFeedbackStats?.categories\"\n\t\t\t\t\t\t[style.display]=\"stat?.totalIssues === 0 || !stat?.totalIssues ? 'none' : 'flex'\"\n\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\taria-label=\"Category item\"\n\t\t\t\t\t\ti18n-aria-label\n\t\t\t\t\t\taria-hidden=\"false\"\n\t\t\t\t\t\t[tabIndex]=\"0\"\n\t\t\t\t\t\t(keyup.enter)=\"onSelectCategory(stat?.type)\"\n\t\t\t\t\t\t(click)=\"onSelectCategory(stat?.type)\">\n\t\t\t\t\t\t{{ getCorrectionCategoryTitle(stat?.type) }} ({{ stat?.totalIssues }})\n\t\t\t\t\t</mat-basic-chip>\n\t\t\t\t</ng-container>\n\t\t\t\t<ng-container *ngSwitchDefault></ng-container>\n\t\t\t</ng-container>\n\t\t</div>\n\t</mat-expansion-panel>\n</mat-accordion>\n","import { trigger, transition, animate, style } from '@angular/animations';\nimport { Component, OnInit } from '@angular/core';\n\n@Component({\n\tselector: 'cr-real-time-result-section-animation',\n\ttemplateUrl: './cr-real-time-result-section-animation.component.html',\n\tstyleUrls: ['./cr-real-time-result-section-animation.component.scss'],\n\tanimations: [\n\t\ttrigger('expandContainer', [\n\t\t\ttransition(':enter', [\n\t\t\t\tstyle({ height: '0', opacity: 0, overflow: 'hidden' }),\n\t\t\t\tanimate('800ms cubic-bezier(0.4, 0.0, 0.2, 1)', style({ height: '*', opacity: 1, overflow: 'hidden' })),\n\t\t\t]),\n\t\t\ttransition(':leave', [animate('200ms ease-in', style({ height: '0', opacity: 0, overflow: 'hidden' }))]),\n\t\t]),\n\t],\n\tstandalone: false,\n})\nexport class CrRealTimeResultSectionAnimationComponent implements OnInit {\n\tcounter: number = 1;\n\tinterval: any;\n\tconstructor() {}\n\n\tngOnInit(): void {\n\t\tthis.interval = setInterval(() => {\n\t\t\tthis.counter++;\n\t\t}, 3000);\n\t}\n\n\tngOnDestroy(): void {\n\t\tif (this.interval) {\n\t\t\tclearInterval(this.interval);\n\t\t}\n\t}\n}\n","<div class=\"loading-item-container\">\n\t<ng-container *ngIf=\"counter % 10 == 1; else defaultLoadingTemplate\">\n\t\t<div class=\"loading-details\" @expandContainer>\n\t\t\t<div class=\"title-container\">\n\t\t\t\t<div class=\"icon-container\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"matchingSvgTemplate\"></ng-container>\n\n\t\t\t\t\t<mat-icon fontSet=\"material-icons-round\">language</mat-icon>\n\t\t\t\t</div>\n\t\t\t\t<span i18n>Analyzing billions of web pages for matching content…</span>\n\t\t\t</div>\n\n\t\t\t<ng-container *ngTemplateOutlet=\"detailsLoadingTableTemplate\"></ng-container>\n\t\t</div>\n\t</ng-container>\n</div>\n<div class=\"loading-item-container\">\n\t<ng-container *ngIf=\"counter % 10 == 2; else defaultLoadingTemplate\">\n\t\t<div class=\"loading-details\" @expandContainer>\n\t\t\t<div class=\"title-container\">\n\t\t\t\t<div class=\"icon-container\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"matchingSvgTemplate\"></ng-container>\n\n\t\t\t\t\t<mat-icon fontSet=\"material-icons-round\">psychology</mat-icon>\n\t\t\t\t</div>\n\t\t\t\t<span i18n>Breaking down your text for in-depth analysis...</span>\n\t\t\t</div>\n\t\t\t<ng-container *ngTemplateOutlet=\"detailsLoadingTableTemplate\"></ng-container>\n\t\t</div>\n\t</ng-container>\n</div>\n<div class=\"loading-item-container\">\n\t<ng-container *ngIf=\"counter % 10 == 3; else defaultLoadingTemplate\">\n\t\t<div class=\"loading-details\" @expandContainer>\n\t\t\t<div class=\"title-container\">\n\t\t\t\t<div class=\"icon-container\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"matchingSvgTemplate\"></ng-container>\n\n\t\t\t\t\t<mat-icon fontSet=\"material-icons-round\">cloud_circle</mat-icon>\n\t\t\t\t</div>\n\t\t\t\t<span i18n>Scanning millions of publications for potential matches...</span>\n\t\t\t</div>\n\t\t\t<ng-container *ngTemplateOutlet=\"detailsLoadingTableTemplate\"></ng-container>\n\t\t</div>\n\t</ng-container>\n</div>\n<div class=\"loading-item-container\">\n\t<ng-container *ngIf=\"counter % 10 == 4; else defaultLoadingTemplate\">\n\t\t<div class=\"loading-details\" @expandContainer>\n\t\t\t<div class=\"title-container\">\n\t\t\t\t<div class=\"icon-container\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"matchingSvgTemplate\"></ng-container>\n\n\t\t\t\t\t<mat-icon fontSet=\"material-icons-round\">change_history</mat-icon>\n\t\t\t\t</div>\n\t\t\t\t<span i18n>Analyzing for advanced rewording and paraphrasing...</span>\n\t\t\t</div>\n\t\t\t<ng-container *ngTemplateOutlet=\"detailsLoadingTableTemplate\"></ng-container>\n\t\t</div>\n\t</ng-container>\n</div>\n<div class=\"loading-item-container\">\n\t<ng-container *ngIf=\"counter % 10 == 5; else defaultLoadingTemplate\">\n\t\t<div class=\"loading-details\" @expandContainer>\n\t\t\t<div class=\"title-container\">\n\t\t\t\t<div class=\"icon-container\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"matchingSvgTemplate\"></ng-container>\n\n\t\t\t\t\t<mat-icon fontSet=\"material-icons-round\">copyright</mat-icon>\n\t\t\t\t</div>\n\t\t\t\t<span i18n>Ensuring your content is uniquely yours...</span>\n\t\t\t</div>\n\t\t\t<ng-container *ngTemplateOutlet=\"detailsLoadingTableTemplate\"></ng-container>\n\t\t</div>\n\t</ng-container>\n</div>\n<div class=\"loading-item-container\">\n\t<ng-container *ngIf=\"counter % 10 == 6; else defaultLoadingTemplate\">\n\t\t<div class=\"loading-details\" @expandContainer>\n\t\t\t<div class=\"title-container\">\n\t\t\t\t<div class=\"icon-container\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"aiSvgTemplate\"></ng-container>\n\n\t\t\t\t\t<mat-icon class=\"ai-details-icon\" fontSet=\"material-icons-round\">fingerprint</mat-icon>\n\t\t\t\t</div>\n\t\t\t\t<span i18n>Identifying the subtle patterns left by AI...</span>\n\t\t\t</div>\n\t\t\t<ng-container *ngTemplateOutlet=\"detailsLoadingTableTemplate\"></ng-container>\n\t\t</div>\n\t</ng-container>\n</div>\n<div class=\"loading-item-container\">\n\t<ng-container *ngIf=\"counter % 10 == 7; else defaultLoadingTemplate\">\n\t\t<div class=\"loading-details\" @expandContainer>\n\t\t\t<div class=\"title-container\">\n\t\t\t\t<div class=\"icon-container\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"aiSvgTemplate\"></ng-container>\n\n\t\t\t\t\t<mat-icon class=\"ai-details-icon\" fontSet=\"material-icons-round\">generating_tokens</mat-icon>\n\t\t\t\t</div>\n\t\t\t\t<span i18n>Reviewing for content from LLMs like ChatGPT, Gemini etc...</span>\n\t\t\t</div>\n\t\t\t<ng-container *ngTemplateOutlet=\"detailsLoadingTableTemplate\"></ng-container>\n\t\t</div>\n\t</ng-container>\n</div>\n<div class=\"loading-item-container\">\n\t<ng-container *ngIf=\"counter % 10 == 8; else defaultLoadingTemplate\">\n\t\t<div class=\"loading-details\" @expandContainer>\n\t\t\t<div class=\"title-container\">\n\t\t\t\t<div class=\"icon-container\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"aiSvgTemplate\"></ng-container>\n\n\t\t\t\t\t<mat-icon class=\"ai-details-icon\" fontSet=\"material-icons-round\">auto_awesome</mat-icon>\n\t\t\t\t</div>\n\t\t\t\t<span i18n>Analyzing AI Phrases to clarify detection results...</span>\n\t\t\t</div>\n\t\t\t<ng-container *ngTemplateOutlet=\"detailsLoadingTableTemplate\"></ng-container>\n\t\t</div>\n\t</ng-container>\n</div>\n<div class=\"loading-item-container\">\n\t<ng-container *ngIf=\"counter % 10 == 9; else defaultLoadingTemplate\">\n\t\t<div class=\"loading-details\" @expandContainer>\n\t\t\t<div class=\"title-container\">\n\t\t\t\t<div class=\"icon-container\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"aiSvgTemplate\"></ng-container>\n\n\t\t\t\t\t<mat-icon class=\"ai-details-icon\" fontSet=\"material-icons-round\">join_inner</mat-icon>\n\t\t\t\t</div>\n\t\t\t\t<span i18n>Pinpointing where AI generated content blends with human text...</span>\n\t\t\t</div>\n\t\t\t<ng-container *ngTemplateOutlet=\"detailsLoadingTableTemplate\"></ng-container>\n\t\t</div>\n\t</ng-container>\n</div>\n<div class=\"loading-item-container\">\n\t<ng-container *ngIf=\"counter % 10 == 0; else defaultLoadingTemplate\">\n\t\t<div class=\"loading-details\" @expandContainer>\n\t\t\t<div class=\"title-container\">\n\t\t\t\t<div class=\"icon-container\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"aiSvgTemplate\"></ng-container>\n\n\t\t\t\t\t<mat-icon class=\"ai-details-icon\" fontSet=\"material-icons-round\">bolt</mat-icon>\n\t\t\t\t</div>\n\t\t\t\t<span i18n>Tracking the latest shifts in AI-generated writing styles...</span>\n\t\t\t</div>\n\t\t\t<ng-container *ngTemplateOutlet=\"detailsLoadingTableTemplate\"></ng-container>\n\t\t</div>\n\t</ng-container>\n</div>\n\n<ng-template #defaultLoadingTemplate>\n\t<div class=\"loading-item\" @expandContainer>\n\t\t<ngx-skeleton-loader class=\"circle skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t<ngx-skeleton-loader class=\"description-loader skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t</div>\n</ng-template>\n\n<ng-template #detailsLoadingTableTemplate>\n\t<div class=\"table-container\">\n\t\t<div class=\"row-container\">\n\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 50%\"></ngx-skeleton-loader>\n\t\t</div>\n\t\t<div class=\"row-container\">\n\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 10%\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 50%\"></ngx-skeleton-loader>\n\t\t</div>\n\t\t<div class=\"row-container\">\n\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 15%\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 40%\"></ngx-skeleton-loader>\n\t\t</div>\n\t</div>\n</ng-template>\n\n<ng-template #matchingSvgTemplate>\n\t<svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<g opacity=\"0.4\">\n\t\t\t<mask id=\"mask0_9030_84\" style=\"mask-type: alpha\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"64\" height=\"32\">\n\t\t\t\t<path\n\t\t\t\t\td=\"M0 16C0 7.16344 7.16344 0 16 0H48C56.8366 0 64 7.16344 64 16C64 24.8366 56.8366 32 48 32H16C7.16344 32 0 24.8366 0 16Z\"\n\t\t\t\t\tfill=\"url(#paint0_linear_9030_84)\" />\n\t\t\t</mask>\n\t\t\t<g mask=\"url(#mask0_9030_84)\">\n\t\t\t\t<path\n\t\t\t\t\td=\"M0 16C0 7.16344 7.16344 0 16 0C24.8366 0 32 7.16344 32 16C32 24.8366 24.8366 32 16 32C7.16344 32 0 24.8366 0 16Z\"\n\t\t\t\t\tfill=\"#FFB1B1\" />\n\t\t\t</g>\n\t\t</g>\n\t\t<defs>\n\t\t\t<linearGradient\n\t\t\t\tid=\"paint0_linear_9030_84\"\n\t\t\t\tx1=\"64\"\n\t\t\t\ty1=\"32\"\n\t\t\t\tx2=\"-1.30775\"\n\t\t\t\ty2=\"29.0611\"\n\t\t\t\tgradientUnits=\"userSpaceOnUse\">\n\t\t\t\t<stop offset=\"0.0154342\" stop-color=\"#7B8499\" />\n\t\t\t\t<stop offset=\"0.567708\" stop-color=\"#8E97A9\" stop-opacity=\"0\" />\n\t\t\t\t<stop offset=\"1\" stop-color=\"#EBF3F5\" />\n\t\t\t</linearGradient>\n\t\t</defs>\n\t</svg>\n</ng-template>\n\n<ng-template #aiSvgTemplate>\n\t<svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<g opacity=\"0.4\">\n\t\t\t<mask id=\"mask0_9030_1014\" style=\"mask-type: alpha\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"64\" height=\"32\">\n\t\t\t\t<path\n\t\t\t\t\td=\"M0 16C0 7.16344 7.16344 0 16 0H48C56.8366 0 64 7.16344 64 16C64 24.8366 56.8366 32 48 32H16C7.16344 32 0 24.8366 0 16Z\"\n\t\t\t\t\tfill=\"url(#paint0_linear_9030_1014)\" />\n\t\t\t</mask>\n\t\t\t<g mask=\"url(#mask0_9030_1014)\">\n\t\t\t\t<path\n\t\t\t\t\td=\"M0 16C0 7.16344 7.16344 0 16 0C24.8366 0 32 7.16344 32 16C32 24.8366 24.8366 32 16 32C7.16344 32 0 24.8366 0 16Z\"\n\t\t\t\t\tfill=\"#A188FF\" />\n\t\t\t</g>\n\t\t</g>\n\t\t<defs>\n\t\t\t<linearGradient\n\t\t\t\tid=\"paint0_linear_9030_1014\"\n\t\t\t\tx1=\"64\"\n\t\t\t\ty1=\"32\"\n\t\t\t\tx2=\"-1.30775\"\n\t\t\t\ty2=\"29.0611\"\n\t\t\t\tgradientUnits=\"userSpaceOnUse\">\n\t\t\t\t<stop offset=\"0.0154342\" stop-color=\"#7B8499\" />\n\t\t\t\t<stop offset=\"0.567708\" stop-color=\"#8E97A9\" stop-opacity=\"0\" />\n\t\t\t\t<stop offset=\"1\" stop-color=\"#EBF3F5\" />\n\t\t\t</linearGradient>\n\t\t</defs>\n\t</svg>\n</ng-template>\n","import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport {\n\tChangeDetectorRef,\n\tComponent,\n\tElementRef,\n\tHostBinding,\n\tInput,\n\tOnChanges,\n\tOnInit,\n\tSimpleChanges,\n\tTemplateRef,\n\tViewChild,\n} from '@angular/core';\nimport { Observable, combineLatest, fromEvent } from 'rxjs';\nimport { distinctUntilChanged, filter, map, pairwise } from 'rxjs/operators';\nimport {\n\tEPlatformType,\n\tEReportViewType,\n\tEResponsiveLayoutType,\n\tEResultPreviewType,\n} from '../../../enums/copyleaks-web-report.enums';\nimport { ICopyleaksReportOptions } from '../../../models/report-options.models';\nimport { ReportDataService } from '../../../services/report-data.service';\nimport { ReportNgTemplatesService } from '../../../services/report-ng-templates.service';\nimport { ReportViewService } from '../../../services/report-view.service';\nimport { untilDestroy } from '../../../utils/until-destroy';\nimport { ECustomResultsReportView } from '../../core/cr-custom-results/models/cr-custom-results.enums';\nimport { EnumNavigateMobileButton } from '../report-results-item-container/components/models/report-result-item.enum';\nimport { IResultItem } from '../report-results-item-container/components/models/report-result-item.models';\nimport { IResultsActions } from './components/results-actions/models/results-actions.models';\nimport { ReportMatchHighlightService } from '../../../services/report-match-highlight.service';\nimport { IMatchesCategoryStatistics, IMatchesTypeStatistics } from '../../../models/report-statistics.models';\nimport { RESULT_TAGS_CODES } from '../../../constants/report-result-tags.constants';\n\n@Component({\n\tselector: 'copyleaks-report-results-container',\n\ttemplateUrl: './report-results-container.component.html',\n\tstyleUrls: ['./report-results-container.component.scss'],\n\tstandalone: false,\n})\nexport class ReportResultsContainerComponent implements OnInit, OnChanges {\n\t@HostBinding('style.display')\n\tdisplayProp = 'flex';\n\n\t@HostBinding('style.flex-grow')\n\tflexGrowProp: number;\n\n\t@ViewChild('resultsContainer', { read: ElementRef }) public resultsContainer: ElementRef;\n\t@ViewChild('resultitem', { read: ElementRef }) public resultitem: ElementRef;\n\t@ViewChild('customEmptyResultView', { read: ElementRef }) public customEmptyResultView: ElementRef;\n\t@ViewChild(CdkVirtualScrollViewport, { static: false }) viewport: CdkVirtualScrollViewport;\n\n\t/**\n\t * @Input {number} Flex grow property - flex-grow\n\t */\n\t@Input() flexGrow: number;\n\n\t/**\n\t * @Input {EResponsiveLayoutType} Responsive layout type for the report\n\t */\n\t@Input() reportResponsive: EResponsiveLayoutType;\n\n\t/**\n\t * @Input {IResultItem[]} All result items to be displayed\n\t */\n\t@Input() allResults: IResultItem[] = [];\n\n\t/**\n\t * @Input {IResultItem[]} New result items to be displayed\n\t */\n\t@Input() newResults: IResultItem[];\n\n\t/**\n\t * @Input {IResultsActions} Set of available result actions (e.g., click handlers)\n\t */\n\t@Input() resultsActions: IResultsActions;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether the view is in mobile mode\n\t */\n\t@Input() isMobile: boolean;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether to hide the AI tab\n\t */\n\t@Input() hideAiTap: boolean;\n\n\t/**\n\t * @Input {ICopyleaksReportOptions} Filter options applied to the report\n\t */\n\t@Input() filterOptions: ICopyleaksReportOptions;\n\n\t/**\n\t * @Input {TemplateRef<any> | undefined} Custom template used for rendering results\n\t */\n\t@Input() customResultsTemplate: TemplateRef<any> | undefined = undefined;\n\n\t/**\n\t * @Input {ECustomResultsReportView} Current view mode for the report\n\t */\n\t@Input() reportViewMode: ECustomResultsReportView;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether to show the loading view or not\n\t */\n\t@Input() showLoadingView = false;\n\n\tshowResultsSection: boolean = true;\n\n\tdisplayedResults: IResultItem[];\n\tlastItemLoading: boolean = false;\n\n\tnavigateMobileButton: EnumNavigateMobileButton;\n\tenumNavigateMobileButton = EnumNavigateMobileButton;\n\tEReportViewType = EReportViewType;\n\tEPlatformType = EPlatformType;\n\tsearchedValue: string;\n\n\tcustomEmptyResultsTemplate: TemplateRef<any> | undefined = undefined;\n\tcustomAISourceMatchUpgradeTemplate: TemplateRef<any> | undefined = undefined;\n\tshowCustomView: boolean;\n\tcurrentViewedIndex: number = 0;\n\tscrollSub: any;\n\taddPaddingToContainer: boolean;\n\n\tfilterIsOn: boolean;\n\tfilterIndicatorOn: boolean = false;\n\n\texcludedResultsIds: string[];\n\n\tECustomResultsReportView = ECustomResultsReportView;\n\n\tallMatchResultsStats: IMatchesTypeStatistics[];\n\tselectedCategory: IMatchesCategoryStatistics | null;\n\tselectedCategoryResults: IResultItem[];\n\n\taiSourceMatchUpgradeCategory: IMatchesTypeStatistics = {\n\t\tcategories: [],\n\t\ttotalResults: 0,\n\t\ttotalResultsPct: 0,\n\t\ttype: EResultPreviewType.AISourceMatchUpgrade,\n\t};\n\n\tprivate _resizeObserver: ResizeObserver;\n\thideCategoriesSection: boolean;\n\tdocDirection: 'ltr' | 'rtl';\n\n\tget allResultsItemLength() {\n\t\treturn this.allResults?.length;\n\t}\n\n\tget displayedResultsLength() {\n\t\treturn this.displayedResults?.length;\n\t}\n\n\tget showCustomResults() {\n\t\treturn this.reportViewMode === ECustomResultsReportView.Full;\n\t}\n\n\tget getSelectedCategoryResults() {\n\t\tconst results = this.selectedCategory?.results.filter(result =>\n\t\t\tthis.displayedResults.find(r => r?.resultPreview?.id === result?.resultPreview?.id)\n\t\t);\n\t\treturn results;\n\t}\n\n\tconstructor(\n\t\tprivate _cdr: ChangeDetectorRef,\n\t\tprivate _elementRef: ElementRef,\n\t\tpublic reportDataSvc: ReportDataService,\n\t\tpublic highlightService: ReportMatchHighlightService,\n\t\tpublic reportNgTemplatesSvc: ReportNgTemplatesService,\n\t\tpublic reportViewSvc: ReportViewService\n\t) {}\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tif (changes['allResults']?.currentValue) {\n\t\t\tthis.searchedValue = '';\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (!this.filterIsOn) {\n\t\t\t\t\tthis.displayedResults = this.allResults;\n\t\t\t\t\tthis.selectedCategoryResults = this.getSelectedCategoryResults;\n\t\t\t\t\tthis._updateMatchesResultsStats();\n\t\t\t\t\tif (this.selectedCategoryResults?.length === 0) this._setSelectedCategoryRef(null);\n\t\t\t\t}\n\t\t\t\tif (this.reportDataSvc.filterOptions && this.reportDataSvc.excludedResultsIds)\n\t\t\t\t\tthis._filterResults(this.reportDataSvc.filterOptions, this.reportDataSvc.excludedResultsIds);\n\t\t\t});\n\t\t}\n\t\tif (changes['showLoadingView']?.currentValue == false) {\n\t\t\tthis._handelFilterUpdates();\n\t\t\tthis.checkAndApplyPadding();\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tconst container: HTMLElement = this.customEmptyResultView?.nativeElement;\n\t\t\t\tif (container && container?.childElementCount > 0) this.showCustomView = true;\n\t\t\t\telse this.showCustomView = false;\n\n\t\t\t\tthis.detectEndOfList();\n\t\t\t});\n\t\t}\n\n\t\tif ('filterOptions' in changes && changes['filterOptions'].currentValue) {\n\t\t\tthis.displayedResults?.forEach(result => {\n\t\t\t\tresult.iStatisticsResult = {\n\t\t\t\t\tidentical: this.filterOptions.showIdentical ? result.iStatisticsResult?.identical ?? 0 : 0,\n\t\t\t\t\tminorChanges: this.filterOptions.showMinorChanges ? result.iStatisticsResult?.minorChanges ?? 0 : 0,\n\t\t\t\t\trelatedMeaning: this.filterOptions.showRelated ? result.iStatisticsResult?.relatedMeaning ?? 0 : 0,\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\t}\n\n\tngOnInit(): void {\n\t\tif (this.flexGrow !== undefined && this.flexGrow !== null) {\n\t\t\tthis.flexGrowProp = this.flexGrow;\n\t\t}\n\t\tthis.navigateMobileButton = EnumNavigateMobileButton.FirstButton;\n\n\t\tthis.reportNgTemplatesSvc.reportTemplatesSubject$.pipe(untilDestroy(this)).subscribe(refs => {\n\t\t\tif (refs?.customEmptyResultsTemplate !== undefined && this.customEmptyResultsTemplate === undefined) {\n\t\t\t\tthis.customEmptyResultsTemplate = refs?.customEmptyResultsTemplate;\n\t\t\t\tthis._cdr.detectChanges();\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\trefs?.customAISourceMatchUpgradeTemplate !== undefined &&\n\t\t\t\tthis.customAISourceMatchUpgradeTemplate === undefined\n\t\t\t) {\n\t\t\t\tthis.customAISourceMatchUpgradeTemplate = refs?.customAISourceMatchUpgradeTemplate;\n\t\t\t\tthis._cdr.detectChanges();\n\t\t\t}\n\t\t});\n\n\t\tthis._resizeObserver = new ResizeObserver(_ => {\n\t\t\tthis.viewport?.checkViewportSize();\n\t\t});\n\n\t\tthis.reportViewSvc.documentDirection$.pipe(untilDestroy(this)).subscribe(dir => {\n\t\t\tthis.docDirection = dir;\n\t\t});\n\t}\n\n\tprivate _handelFilterUpdates() {\n\t\tif (this.reportDataSvc.filterOptions && this.reportDataSvc.excludedResultsIds)\n\t\t\tthis._filterResults(this.reportDataSvc.filterOptions, this.reportDataSvc.excludedResultsIds);\n\n\t\tcombineLatest([\n\t\t\tthis.reportDataSvc.filterOptions$.pipe(distinctUntilChanged()),\n\t\t\tthis.reportDataSvc.excludedResultsIds$.pipe(distinctUntilChanged()),\n\t\t])\n\t\t\t.pipe(untilDestroy(this))\n\t\t\t.subscribe(([filterOptions, excludedResultsIds]) => {\n\t\t\t\tif (this.showLoadingView || !filterOptions || !excludedResultsIds) return;\n\t\t\t\tthis.filterIndicatorOn = this.reportDataSvc.isFilterOn;\n\t\t\t\tthis._filterResults(filterOptions, excludedResultsIds);\n\t\t\t});\n\t}\n\n\tngAfterViewInit(): void {\n\t\tthis.detectEndOfList();\n\n\t\tfromEvent(window, 'resize')\n\t\t\t.pipe(untilDestroy(this))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.checkAndApplyPadding();\n\t\t\t});\n\n\t\tthis._resizeObserver.observe(this._elementRef.nativeElement);\n\t}\n\n\tcheckAndApplyPadding() {\n\t\tsetTimeout(() => {\n\t\t\tif (!this.viewport || this.showLoadingView) return;\n\t\t\tconst isScrollable =\n\t\t\t\tthis.viewport.elementRef.nativeElement.scrollHeight > this.viewport.elementRef.nativeElement.clientHeight;\n\n\t\t\tthis.addPaddingToContainer = isScrollable;\n\t\t});\n\t}\n\n\thideResultItem() {\n\t\tthis.displayProp = 'none';\n\t}\n\n\tonSearch(value: string): void {\n\t\tthis.searchedValue = value;\n\n\t\tif (this.reportDataSvc.filterOptions && this.reportDataSvc.excludedResultsIds)\n\t\t\tthis._filterResults(this.reportDataSvc.filterOptions, this.reportDataSvc.excludedResultsIds);\n\n\t\tif (!value || value === '') {\n\t\t\treturn;\n\t\t}\n\n\t\tvalue = value.toLowerCase();\n\n\t\tthis.displayedResults = this.displayedResults.filter(\n\t\t\tr =>\n\t\t\t\tr.resultPreview.introduction?.toLowerCase()?.includes(value) ||\n\t\t\t\tr.resultPreview.title?.toLowerCase()?.includes(value) ||\n\t\t\t\tr.resultPreview.metadata?.filename?.toLowerCase()?.includes(value) ||\n\t\t\t\t(r.resultPreview.url && r.resultPreview.url?.toLowerCase()?.includes(value)) ||\n\t\t\t\tthis.isSearchByType(value, r)\n\t\t);\n\t}\n\n\tisSearchByType(value: string, r: IResultItem): boolean {\n\t\tif (!value) return false;\n\n\t\tvalue = value.toLowerCase();\n\t\t// check if the searched value is the result type name\n\t\tswitch (value) {\n\t\t\tcase 'internet':\n\t\t\t\treturn r.resultPreview.type === EResultPreviewType.Internet;\n\t\t\tcase 'copyleaks shared data hub':\n\t\t\tcase 'shared data hub':\n\t\t\t\treturn r.resultPreview.type === EResultPreviewType.Database;\n\t\t\tcase 'private cloud hub':\n\t\t\t\treturn r.resultPreview.type === EResultPreviewType.Repositroy;\n\t\t\tcase 'batch':\n\t\t\t\treturn r.resultPreview.type === EResultPreviewType.Batch;\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t}\n\t}\n\n\t//#region navigate mobile button\n\n\tonScroll(index: number) {\n\t\tthis.currentViewedIndex = index;\n\t\tif (index === 0) this.navigateMobileButton = EnumNavigateMobileButton.FirstButton;\n\t\telse if (index === 1) this.navigateMobileButton = EnumNavigateMobileButton.SecondButton;\n\t\telse if (\n\t\t\t(index >= 2 && index != this.allResultsItemLength - 1 && index != this.allResultsItemLength - 2) ||\n\t\t\t(index === 2 && this.allResultsItemLength <= 5)\n\t\t)\n\t\t\tthis.navigateMobileButton = EnumNavigateMobileButton.ThirdButton;\n\t\telse if (index === this.allResultsItemLength - 2) this.navigateMobileButton = EnumNavigateMobileButton.FourthButton;\n\t\telse if (index === this.allResultsItemLength - 1) this.navigateMobileButton = EnumNavigateMobileButton.FifthButton;\n\t}\n\n\t// Function to scroll to the given index\n\tscrollToIndex(index?: number): void {\n\t\tif (!this.viewport) return;\n\t\tif (index != undefined) this.viewport.scrollToIndex(index, 'smooth');\n\t}\n\n\tonDotNavigate(dot: EnumNavigateMobileButton) {\n\t\tswitch (dot) {\n\t\t\tcase EnumNavigateMobileButton.FirstButton: {\n\t\t\t\tif (this.displayedResultsLength > 5 && this.currentViewedIndex >= this.displayedResultsLength - 3)\n\t\t\t\t\tthis.scrollToIndex(this.displayedResultsLength - 5);\n\t\t\t\telse if (this.displayedResultsLength > 5 && this.currentViewedIndex >= 3)\n\t\t\t\t\tthis.scrollToIndex(this.currentViewedIndex - 2);\n\t\t\t\telse this.scrollToIndex(0);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase EnumNavigateMobileButton.SecondButton: {\n\t\t\t\tif (this.displayedResultsLength > 5 && this.currentViewedIndex >= this.displayedResultsLength - 3)\n\t\t\t\t\tthis.scrollToIndex(this.displayedResultsLength - 4);\n\t\t\t\telse if (this.displayedResultsLength > 5 && this.currentViewedIndex >= 3)\n\t\t\t\t\tthis.scrollToIndex(this.currentViewedIndex - 1);\n\t\t\t\telse this.scrollToIndex(1);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase EnumNavigateMobileButton.ThirdButton: {\n\t\t\t\tif (this.displayedResultsLength > 5 && this.currentViewedIndex >= this.displayedResultsLength - 3)\n\t\t\t\t\tthis.scrollToIndex(this.displayedResultsLength - 3);\n\t\t\t\telse if (this.displayedResultsLength > 5 && this.currentViewedIndex >= 3)\n\t\t\t\t\tthis.scrollToIndex(this.currentViewedIndex);\n\t\t\t\telse this.scrollToIndex(2);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase EnumNavigateMobileButton.FourthButton: {\n\t\t\t\tif (this.displayedResultsLength > 5 && this.currentViewedIndex >= this.displayedResultsLength - 3)\n\t\t\t\t\tthis.scrollToIndex(this.displayedResultsLength - 2);\n\t\t\t\telse if (this.displayedResultsLength > 5 && this.currentViewedIndex >= 3)\n\t\t\t\t\tthis.scrollToIndex(this.currentViewedIndex + 1);\n\t\t\t\telse this.scrollToIndex(3);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase EnumNavigateMobileButton.FifthButton: {\n\t\t\t\tif (this.displayedResultsLength > 5 && this.currentViewedIndex >= this.displayedResultsLength - 3)\n\t\t\t\t\tthis.scrollToIndex(this.displayedResultsLength - 1);\n\t\t\t\telse if (this.displayedResultsLength > 5 && this.currentViewedIndex >= 3)\n\t\t\t\t\tthis.scrollToIndex(this.currentViewedIndex + 2);\n\t\t\t\telse this.scrollToIndex(4);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tprivate detectEndOfList() {\n\t\tif (!this.viewport || this.scrollSub) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst scrolledIndexChange$: Observable<number> = this.viewport.scrolledIndexChange;\n\n\t\t// Detect if we're at the end of the list\n\t\tthis.scrollSub = scrolledIndexChange$\n\t\t\t.pipe(\n\t\t\t\tmap(index => index + this.viewport.getViewportSize() / 313),\n\t\t\t\tpairwise(),\n\t\t\t\tfilter(([prevIndex, currIndex]) => {\n\t\t\t\t\tconst viewportSize = this.viewport.getViewportSize();\n\t\t\t\t\tconst totalContentSize = this.viewport.getDataLength() * 313;\n\t\t\t\t\t// Determine if the end is reached by comparing the current index and the total content size\n\t\t\t\t\tconst endReached = currIndex > prevIndex && viewportSize + currIndex * 313 >= totalContentSize;\n\t\t\t\t\treturn endReached;\n\t\t\t\t}),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\tuntilDestroy(this)\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.currentViewedIndex = this.allResultsItemLength - 1;\n\t\t\t\tif (this.allResultsItemLength === 2) this.navigateMobileButton = EnumNavigateMobileButton.SecondButton;\n\t\t\t\tif (this.allResultsItemLength === 3) this.navigateMobileButton = EnumNavigateMobileButton.ThirdButton;\n\t\t\t\tif (this.allResultsItemLength === 4) this.navigateMobileButton = EnumNavigateMobileButton.FourthButton;\n\t\t\t\tif (this.allResultsItemLength >= 5) this.navigateMobileButton = EnumNavigateMobileButton.FifthButton;\n\t\t\t});\n\t}\n\n\tincludeResultById(resultId: string) {\n\t\tconst excludedResutsIds = this.reportDataSvc.excludedResultsIds ?? [];\n\t\tthis.reportDataSvc.excludedResultsIds$.next(excludedResutsIds.filter(id => id != resultId));\n\t}\n\n\texcludeResultById(resultId: string) {\n\t\tconst excludedResutsIds = new Set(this.reportDataSvc.excludedResultsIds);\n\t\texcludedResutsIds.add(resultId);\n\t\tthis.reportDataSvc.excludedResultsIds$.next(Array.from(excludedResutsIds));\n\t}\n\n\tprivate _filterResults(filterOptions: ICopyleaksReportOptions, excludedResultsIds: string[]) {\n\t\tthis.excludedResultsIds = excludedResultsIds;\n\n\t\tconst filteredResults = this.reportDataSvc.filterResults(filterOptions, excludedResultsIds);\n\n\t\tthis.displayedResults = this.allResults\n\t\t\t.filter(result => !!filteredResults.find(r => r.id === result.resultPreview?.id))\n\t\t\t.map(result => {\n\t\t\t\treturn {\n\t\t\t\t\t...result,\n\t\t\t\t\tiStatisticsResult: {\n\t\t\t\t\t\tidentical: filterOptions.showIdentical ? result.iStatisticsResult?.identical ?? 0 : 0,\n\t\t\t\t\t\tminorChanges: filterOptions.showMinorChanges ? result.iStatisticsResult?.minorChanges ?? 0 : 0,\n\t\t\t\t\t\trelatedMeaning: filterOptions.showRelated ? result.iStatisticsResult?.relatedMeaning ?? 0 : 0,\n\t\t\t\t\t},\n\t\t\t\t} as IResultItem;\n\t\t\t})\n\t\t\t.sort(\n\t\t\t\t(a, b) =>\n\t\t\t\t\t(b.resultPreview.isLocked\n\t\t\t\t\t\t? 0\n\t\t\t\t\t\t: b.iStatisticsResult.identical + b.iStatisticsResult.minorChanges + b.iStatisticsResult.relatedMeaning) -\n\t\t\t\t\t(a.resultPreview.isLocked\n\t\t\t\t\t\t? 0\n\t\t\t\t\t\t: a.iStatisticsResult.identical + a.iStatisticsResult.minorChanges + a.iStatisticsResult.relatedMeaning)\n\t\t\t);\n\n\t\tthis.resultsActions = {\n\t\t\t...this.resultsActions,\n\t\t\ttotalExcluded: excludedResultsIds?.length,\n\t\t\ttotalFiltered:\n\t\t\t\tthis.reportDataSvc.totalCompleteResults - filteredResults.length <= 0\n\t\t\t\t\t? 0\n\t\t\t\t\t: this.reportDataSvc.totalCompleteResults - filteredResults.length - excludedResultsIds?.length,\n\t\t\ttotalResults: this.reportDataSvc.totalCompleteResults,\n\t\t};\n\n\t\tthis.filterIsOn = filteredResults.length !== this.reportDataSvc.scanResultsDetails?.length;\n\t\tif (!filterOptions.showIdentical || !filterOptions.showMinorChanges || !filterOptions.showRelated)\n\t\t\tthis.filterIsOn = true;\n\n\t\tthis._updateMatchesResultsStats();\n\t\tthis.selectedCategoryResults = this.getSelectedCategoryResults;\n\t\tif (this.selectedCategoryResults?.length === 0) this._setSelectedCategoryRef(null);\n\n\t\tsetTimeout(() => {\n\t\t\tthis.checkAndApplyPadding();\n\t\t});\n\t}\n\n\t//#endregion\n\tgoToAllResultsView() {\n\t\tthis.reportDataSvc.selectedCategoryResultsIds$.next(undefined);\n\t\tthis._setSelectedCategoryRef(null);\n\n\t\t// if (this.reportViewSvc.reportViewMode?.navigateBackToAIView && this.reportDataSvc.isAiDetectionEnabled()) {\n\t\t// \tthis.reportViewSvc.selectedAlert$.next(ALERTS.SUSPECTED_AI_TEXT_DETECTED);\n\t\t// \tthis.reportViewSvc.reportViewMode$.next({\n\t\t// \t\t...this.reportViewSvc.reportViewMode,\n\t\t// \t\tviewMode: 'one-to-many',\n\t\t// \t\talertCode: ALERTS.SUSPECTED_AI_TEXT_DETECTED,\n\t\t// \t});\n\t\t// }\n\t}\n\n\tonSelectCategory(selectedCategory: IMatchesCategoryStatistics) {\n\t\tthis._setSelectedCategoryRef(selectedCategory);\n\t\tthis.selectedCategoryResults = this.getSelectedCategoryResults;\n\t\tif (this.selectedCategoryResults?.length === 0) this._setSelectedCategoryRef(null);\n\n\t\tif (selectedCategory) {\n\t\t\tconst selectedCategoryResultsIds = this.allResults\n\t\t\t\t.filter(result => selectedCategory.results.find(r => r.resultPreview?.id === result?.resultPreview?.id))\n\t\t\t\t.map(r => r.resultPreview.id);\n\t\t\tthis.reportDataSvc.selectedCategoryResultsIds$.next([...selectedCategoryResultsIds]);\n\t\t\tthis.reportViewSvc.reportViewMode$.next({\n\t\t\t\t...this.reportViewSvc.reportViewMode,\n\t\t\t\tnavigateBackToAIView: false,\n\t\t\t});\n\t\t} else {\n\t\t\tthis.reportDataSvc.selectedCategoryResultsIds$.next(undefined);\n\t\t}\n\t}\n\n\tprivate _setSelectedCategoryRef(selectedCategory: IMatchesCategoryStatistics | null) {\n\t\tthis.selectedCategory = selectedCategory;\n\n\t\tif (!selectedCategory) this.reportDataSvc.selectedCategoryResultsIds$.next([]);\n\n\t\tconst selectedCategoryTypeQueryParam = this.reportViewSvc.reportViewMode.selectedResultsCategory\n\t\t\t? decodeURI(this.reportViewSvc.reportViewMode.selectedResultsCategory)\n\t\t\t: null;\n\t\tif (selectedCategoryTypeQueryParam === selectedCategory?.type) return;\n\t\tthis.reportViewSvc.reportViewMode$.next({\n\t\t\t...this.reportViewSvc.reportViewMode,\n\t\t\tselectedResultsCategory: selectedCategory?.type ? encodeURI(selectedCategory?.type) : null,\n\t\t});\n\t}\n\n\tprivate _updateMatchesResultsStats() {\n\t\tthis.allMatchResultsStats = this._initMatchResultsStatistics();\n\t\tthis.displayedResults.forEach(result => {\n\t\t\t// if the result is an AI source match result add it to the AI source match category\n\t\t\tconst aiSourceMatchTag = result?.resultPreview?.tags?.find(tag => tag.code === RESULT_TAGS_CODES.AI_SOURCE_MATCH);\n\t\t\tif (aiSourceMatchTag) {\n\t\t\t\tthis._increaseMatchResultsCategoryTotal(\n\t\t\t\t\tthis.allMatchResultsStats,\n\t\t\t\t\tEResultPreviewType.AISourceMatch,\n\t\t\t\t\t$localize`AI Source Match`,\n\t\t\t\t\tresult\n\t\t\t\t);\n\t\t\t\tthis.allMatchResultsStats[4].totalResults += 1;\n\t\t\t\tthis.allMatchResultsStats[4].totalResultsPct =\n\t\t\t\t\tthis.allMatchResultsStats[4].totalResults / (this.displayedResults?.length ?? 0);\n\t\t\t}\n\n\t\t\tswitch (result.resultPreview.type) {\n\t\t\t\tcase EResultPreviewType.Internet:\n\t\t\t\t\tif (result.resultPreview.url)\n\t\t\t\t\t\tthis._increaseMatchResultsCategoryTotal(\n\t\t\t\t\t\t\tthis.allMatchResultsStats,\n\t\t\t\t\t\t\tEResultPreviewType.Internet,\n\t\t\t\t\t\t\tresult.resultPreview.url,\n\t\t\t\t\t\t\tresult\n\t\t\t\t\t\t);\n\t\t\t\t\tthis.allMatchResultsStats[0].totalResults += 1;\n\t\t\t\t\tthis.allMatchResultsStats[0].totalResultsPct = this.allMatchResultsStats[0].totalResultsPct =\n\t\t\t\t\t\tthis.allMatchResultsStats[0].totalResults / (this.displayedResults?.length ?? 0);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EResultPreviewType.Batch:\n\t\t\t\t\tif (result?.resultPreview?.metadata?.author)\n\t\t\t\t\t\tthis._increaseMatchResultsCategoryTotal(\n\t\t\t\t\t\t\tthis.allMatchResultsStats,\n\t\t\t\t\t\t\tEResultPreviewType.Batch,\n\t\t\t\t\t\t\tresult.resultPreview.metadata.author,\n\t\t\t\t\t\t\tresult\n\t\t\t\t\t\t);\n\t\t\t\t\tthis.allMatchResultsStats[1].totalResults += 1;\n\t\t\t\t\tthis.allMatchResultsStats[1].totalResultsPct =\n\t\t\t\t\t\tthis.allMatchResultsStats[1].totalResults / (this.displayedResults?.length ?? 0);\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase EResultPreviewType.Database:\n\t\t\t\t\tif (result?.resultPreview?.scanId)\n\t\t\t\t\t\tthis._increaseMatchResultsCategoryTotal(\n\t\t\t\t\t\t\tthis.allMatchResultsStats,\n\t\t\t\t\t\t\tEResultPreviewType.Database,\n\t\t\t\t\t\t\t'Your files',\n\t\t\t\t\t\t\tresult\n\t\t\t\t\t\t);\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis._increaseMatchResultsCategoryTotal(\n\t\t\t\t\t\t\tthis.allMatchResultsStats,\n\t\t\t\t\t\t\tEResultPreviewType.Database,\n\t\t\t\t\t\t\t'Others files',\n\t\t\t\t\t\t\tresult\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tthis.allMatchResultsStats[2].totalResults += 1;\n\t\t\t\t\tthis.allMatchResultsStats[2].totalResultsPct =\n\t\t\t\t\t\tthis.allMatchResultsStats[2].totalResults / (this.displayedResults?.length ?? 0);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EResultPreviewType.Repositroy:\n\t\t\t\t\tthis._increaseMatchResultsCategoryTotal(\n\t\t\t\t\t\tthis.allMatchResultsStats,\n\t\t\t\t\t\tEResultPreviewType.Repositroy,\n\t\t\t\t\t\tresult.resultPreview.title,\n\t\t\t\t\t\tresult\n\t\t\t\t\t);\n\t\t\t\t\tthis.allMatchResultsStats[3].totalResults += 1;\n\t\t\t\t\tthis.allMatchResultsStats[3].totalResultsPct =\n\t\t\t\t\t\tthis.allMatchResultsStats[3].totalResults / (this.displayedResults?.length ?? 0);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t\t// check if all allMatchResultsStats categories are empty\n\t\tif (this.allMatchResultsStats.every(r => r.categories.length === 0)) this.hideCategoriesSection = true;\n\t\telse this.hideCategoriesSection = false;\n\n\t\tconst selectedCategoryType = this.reportViewSvc.reportViewMode.selectedResultsCategory\n\t\t\t? decodeURI(this.reportViewSvc.reportViewMode.selectedResultsCategory)\n\t\t\t: null;\n\n\t\tif (selectedCategoryType != this.selectedCategory?.type) {\n\t\t\tlet selectedCategory: IMatchesCategoryStatistics = null;\n\t\t\tthis.allMatchResultsStats.forEach(r => {\n\t\t\t\tconst category = r?.categories?.find(c => c?.type === selectedCategoryType);\n\t\t\t\tif (category) selectedCategory = category;\n\t\t\t});\n\t\t\tthis.selectedCategory = selectedCategory;\n\t\t\tif (selectedCategory) {\n\t\t\t\tconst selectedCategoryResultsIds = this.allResults\n\t\t\t\t\t.filter(result => selectedCategory.results.find(r => r.resultPreview?.id === result?.resultPreview?.id))\n\t\t\t\t\t.map(r => r.resultPreview.id);\n\t\t\t\tthis.reportDataSvc.selectedCategoryResultsIds$.next([...selectedCategoryResultsIds]);\n\t\t\t} else {\n\t\t\t\tthis.reportDataSvc.selectedCategoryResultsIds$.next(undefined);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _initMatchResultsStatistics(): IMatchesTypeStatistics[] {\n\t\treturn [\n\t\t\t{\n\t\t\t\ttype: EResultPreviewType.Internet,\n\t\t\t\tcategories: [],\n\t\t\t\ttotalResults: 0,\n\t\t\t\ttotalResultsPct: 0,\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: EResultPreviewType.Batch,\n\t\t\t\tcategories: [],\n\t\t\t\ttotalResults: 0,\n\t\t\t\ttotalResultsPct: 0,\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: EResultPreviewType.Database,\n\t\t\t\tcategories: [],\n\t\t\t\ttotalResults: 0,\n\t\t\t\ttotalResultsPct: 0,\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: EResultPreviewType.Repositroy,\n\t\t\t\tcategories: [],\n\t\t\t\ttotalResults: 0,\n\t\t\t\ttotalResultsPct: 0,\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: EResultPreviewType.AISourceMatch,\n\t\t\t\tcategories: [],\n\t\t\t\ttotalResults: 0,\n\t\t\t\ttotalResultsPct: 0,\n\t\t\t},\n\t\t];\n\t}\n\n\tprivate _increaseMatchResultsCategoryTotal(\n\t\twritingFeedbackStats: IMatchesTypeStatistics[],\n\t\tresultType: EResultPreviewType,\n\t\tcategory: string,\n\t\tresultItem: IResultItem\n\t) {\n\t\tconst index = writingFeedbackStats.findIndex(r => r.type === resultType);\n\t\tif (index === -1) return;\n\n\t\tconst resultStats = writingFeedbackStats[index];\n\t\tif (resultType === EResultPreviewType.Internet) {\n\t\t\tconst urlObj = new URL(category);\n\t\t\tcategory = urlObj.hostname;\n\t\t}\n\t\tconst categoryIndex = resultStats.categories.findIndex(c => c.type === category);\n\t\tif (categoryIndex > -1) {\n\t\t\tresultStats.categories[categoryIndex].totalResults++;\n\t\t\t// check if the results array is not undefined and create it if it is\n\t\t\tif (!resultStats.categories[categoryIndex].results) resultStats.categories[categoryIndex].results = [];\n\t\t\tif (!resultStats.categories[categoryIndex].results.find(r => r.resultPreview.id === resultItem.resultPreview.id))\n\t\t\t\tresultStats.categories[categoryIndex].results.push(resultItem);\n\t\t} else {\n\t\t\tresultStats.categories.push({\n\t\t\t\ttype: category,\n\t\t\t\ttotalResults: 1,\n\t\t\t\tresults: [resultItem],\n\t\t\t});\n\t\t}\n\t}\n\n\tngOnDestroy() {\n\t\tthis._resizeObserver.disconnect();\n\t}\n}\n","<ng-container *ngIf=\"!selectedCategory; else selectedCategroyRef\">\n\t<cr-results-actions\n\t\t*ngIf=\"!showLoadingView\"\n\t\t[class.is-mobile]=\"isMobile\"\n\t\t[class.is-desktop]=\"!isMobile\"\n\t\t[dir]=\"docDirection\"\n\t\t[resultsActions]=\"resultsActions\"\n\t\t[searchedValue]=\"searchedValue\"\n\t\t[showLoadingView]=\"false\"\n\t\t[isMobile]=\"isMobile\"\n\t\t[isFilterOn]=\"filterIndicatorOn\"\n\t\t[expandSection]=\"showResultsSection\"\n\t\t(onExpandToggle)=\"showResultsSection = $event\"\n\t\t(onSearch)=\"onSearch($event)\"></cr-results-actions>\n\n\t<div\n\t\tclass=\"report-results-item-top-container\"\n\t\t[dir]=\"docDirection\"\n\t\t[style]=\"'width:100%'\"\n\t\t[style.display]=\"\n\t\t\tshowLoadingView || !showResultsSection || !displayedResults || showCustomResults || displayedResults.length === 0\n\t\t\t\t? 'none'\n\t\t\t\t: 'flex'\n\t\t\">\n\t\t<div #resultsContainer class=\"results-item-top-container\">\n\t\t\t<div\n\t\t\t\tfxLayoutGap=\"8px\"\n\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t'results-item-container': !isMobile,\n\t\t\t\t\t'results-item-mobile-container': isMobile\n\t\t\t\t}\">\n\t\t\t\t<ng-container *ngIf=\"displayedResults && displayedResults.length > 0\">\n\t\t\t\t\t<ng-container *ngIf=\"!isMobile; else mobileContainerView\">\n\t\t\t\t\t\t<cdk-virtual-scroll-viewport\n\t\t\t\t\t\t\tclass=\"desktop-scroll\"\n\t\t\t\t\t\t\titemSize=\"189\"\n\t\t\t\t\t\t\t[ngClass]=\"{ 'scroll-with-padding': addPaddingToContainer }\"\n\t\t\t\t\t\t\tminBufferPx=\"200\"\n\t\t\t\t\t\t\tmaxBufferPx=\"100000\">\n\t\t\t\t\t\t\t<div class=\"corrections-types-container\">\n\t\t\t\t\t\t\t\t<span *ngIf=\"!hideCategoriesSection\" class=\"categorized-summery\" i18n>Categorized Summary</span>\n\n\t\t\t\t\t\t\t\t<cr-categories-analysis-panel\n\t\t\t\t\t\t\t\t\t*ngFor=\"let stats of allMatchResultsStats\"\n\t\t\t\t\t\t\t\t\t[matchesStats]=\"stats\"\n\t\t\t\t\t\t\t\t\t[selectedView]=\"EReportViewType.PlagiarismView\"\n\t\t\t\t\t\t\t\t\t(selectCategory)=\"onSelectCategory($event)\"></cr-categories-analysis-panel>\n\n\t\t\t\t\t\t\t\t<cr-categories-analysis-panel\n\t\t\t\t\t\t\t\t\t*ngIf=\"hideAiTap && !reportViewSvc?.reportViewMode?.hideAISourceMatchUpgrade\"\n\t\t\t\t\t\t\t\t\t[matchesStats]=\"aiSourceMatchUpgradeCategory\"\n\t\t\t\t\t\t\t\t\t[selectedView]=\"EReportViewType.PlagiarismView\"\n\t\t\t\t\t\t\t\t\t[customAISourceMatchUpgradeTemplate]=\"\n\t\t\t\t\t\t\t\t\t\tcustomAISourceMatchUpgradeTemplate\n\t\t\t\t\t\t\t\t\t\"></cr-categories-analysis-panel>\n\t\t\t\t\t\t\t\t<span class=\"categorized-summery\" i18n>Descending</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tstyle=\"width: 100%\"\n\t\t\t\t\t\t\t\tfxLayout=\"column\"\n\t\t\t\t\t\t\t\tfxLayoutAlign=\"start start\"\n\t\t\t\t\t\t\t\tfxLayoutGap=\"4px\"\n\t\t\t\t\t\t\t\t*cdkVirtualFor=\"let item of displayedResults\">\n\t\t\t\t\t\t\t\t<cr-report-results-item\n\t\t\t\t\t\t\t\t\t#resultitem\n\t\t\t\t\t\t\t\t\t[resultItem]=\"item\"\n\t\t\t\t\t\t\t\t\t[isMobile]=\"isMobile\"\n\t\t\t\t\t\t\t\t\t[reportViewSvc]=\"reportViewSvc\"\n\t\t\t\t\t\t\t\t\t[reportDataSvc]=\"reportDataSvc\"\n\t\t\t\t\t\t\t\t\t[highlightService]=\"highlightService\"\n\t\t\t\t\t\t\t\t\t[reportNgTemplatesSvc]=\"reportNgTemplatesSvc\"\n\t\t\t\t\t\t\t\t\t(hiddenResultEvent)=\"excludeResultById($event)\"\n\t\t\t\t\t\t\t\t\t(showResultEvent)=\"includeResultById($event)\"\n\t\t\t\t\t\t\t\t\tstyle=\"width: 100%\"></cr-report-results-item>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</cdk-virtual-scroll-viewport>\n\t\t\t\t\t</ng-container>\n\t\t\t\t\t<ng-template #mobileContainerView>\n\t\t\t\t\t\t<cdk-virtual-scroll-viewport\n\t\t\t\t\t\t\tclass=\"mobile-scroll\"\n\t\t\t\t\t\t\torientation=\"horizontal\"\n\t\t\t\t\t\t\titemSize=\"313\"\n\t\t\t\t\t\t\t(scrolledIndexChange)=\"onScroll($event)\">\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tstyle=\"width: 100%\"\n\t\t\t\t\t\t\t\tfxLayout=\"column\"\n\t\t\t\t\t\t\t\tfxLayoutAlign=\"start start\"\n\t\t\t\t\t\t\t\tfxLayoutGap=\"4px\"\n\t\t\t\t\t\t\t\t*cdkVirtualFor=\"let item of displayedResults\">\n\t\t\t\t\t\t\t\t<cr-report-results-item\n\t\t\t\t\t\t\t\t\t#resultitem\n\t\t\t\t\t\t\t\t\t[resultItem]=\"item\"\n\t\t\t\t\t\t\t\t\t[isMobile]=\"isMobile\"\n\t\t\t\t\t\t\t\t\t[reportViewSvc]=\"reportViewSvc\"\n\t\t\t\t\t\t\t\t\t[reportDataSvc]=\"reportDataSvc\"\n\t\t\t\t\t\t\t\t\t[highlightService]=\"highlightService\"\n\t\t\t\t\t\t\t\t\t[reportNgTemplatesSvc]=\"reportNgTemplatesSvc\"\n\t\t\t\t\t\t\t\t\t(hiddenResultEvent)=\"excludeResultById($event)\"\n\t\t\t\t\t\t\t\t\t(showResultEvent)=\"includeResultById($event)\"\n\t\t\t\t\t\t\t\t\tstyle=\"width: 100%\"></cr-report-results-item>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclass=\"custom-results-container-mobile\"\n\t\t\t\t\t\t\t\t#customEmptyResultView\n\t\t\t\t\t\t\t\t[ngStyle]=\"{\n\t\t\t\t\t\t\t\t\tdisplay:\n\t\t\t\t\t\t\t\t\t\tcustomResultsTemplate && reportViewMode === ECustomResultsReportView.Partial && showResultsSection\n\t\t\t\t\t\t\t\t\t\t\t? 'flex'\n\t\t\t\t\t\t\t\t\t\t\t: 'none'\n\t\t\t\t\t\t\t\t}\">\n\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"customResultsTemplate ?? null\"></ng-container>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</cdk-virtual-scroll-viewport>\n\t\t\t\t\t</ng-template>\n\n\t\t\t\t\t<ng-container *ngIf=\"lastItemLoading\">\n\t\t\t\t\t\t<cr-report-results-item\n\t\t\t\t\t\t\t[reportViewSvc]=\"reportViewSvc\"\n\t\t\t\t\t\t\t[reportNgTemplatesSvc]=\"reportNgTemplatesSvc\"\n\t\t\t\t\t\t\t[reportDataSvc]=\"reportDataSvc\"\n\t\t\t\t\t\t\t[highlightService]=\"highlightService\"\n\t\t\t\t\t\t\t[showLoader]=\"true\"\n\t\t\t\t\t\t\t[style]=\"'width:100%'\"></cr-report-results-item>\n\t\t\t\t\t</ng-container>\n\t\t\t\t</ng-container>\n\t\t\t</div>\n\t\t</div>\n\t\t<div\n\t\t\tclass=\"navigate-mobie-button-contaienr\"\n\t\t\t*ngIf=\"isMobile && displayedResultsLength > 1\"\n\t\t\tfxLayout=\"row\"\n\t\t\tfxLayoutAlign=\"start center\"\n\t\t\tfxLayoutGap=\"8px\">\n\t\t\t<mat-chip-option\n\t\t\t\t*ngIf=\"displayedResultsLength > 5 && currentViewedIndex > 2\"\n\t\t\t\trole=\"button\"\n\t\t\t\t(click)=\"scrollToIndex(0)\"\n\t\t\t\tclass=\"mat-chip-navigate\">\n\t\t\t\t{{ currentViewedIndex < displayedResultsLength - 3 ? currentViewedIndex - 2 : displayedResultsLength - 5 }}\n\t\t\t</mat-chip-option>\n\t\t\t<button\n\t\t\t\tclass=\"navigate-mobie-button\"\n\t\t\t\taria-label=\"This is a result navigation button.\"\n\t\t\t\ti18n-aria-label\n\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t'navigate-mobie-button-select ': navigateMobileButton == enumNavigateMobileButton.FirstButton\n\t\t\t\t}\"\n\t\t\t\t(click)=\"onDotNavigate(enumNavigateMobileButton.FirstButton)\"></button>\n\t\t\t<button\n\t\t\t\t*ngIf=\"displayedResultsLength > 1\"\n\t\t\t\tclass=\"navigate-mobie-button\"\n\t\t\t\taria-label=\"This is a result navigation button.\"\n\t\t\t\ti18n-aria-label\n\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t'navigate-mobie-button-select ': navigateMobileButton == enumNavigateMobileButton.SecondButton\n\t\t\t\t}\"\n\t\t\t\t(click)=\"onDotNavigate(enumNavigateMobileButton.SecondButton)\"></button>\n\t\t\t<button\n\t\t\t\t*ngIf=\"displayedResultsLength > 2\"\n\t\t\t\tclass=\"navigate-mobie-button\"\n\t\t\t\taria-label=\"This is a result navigation button.\"\n\t\t\t\ti18n-aria-label\n\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t'navigate-mobie-button-select ': navigateMobileButton == enumNavigateMobileButton.ThirdButton\n\t\t\t\t}\"\n\t\t\t\t(click)=\"onDotNavigate(enumNavigateMobileButton.ThirdButton)\"></button>\n\t\t\t<button\n\t\t\t\t*ngIf=\"displayedResultsLength > 3\"\n\t\t\t\tclass=\"navigate-mobie-button\"\n\t\t\t\taria-label=\"This is a result navigation button.\"\n\t\t\t\ti18n-aria-label\n\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t'navigate-mobie-button-select ': navigateMobileButton == enumNavigateMobileButton.FourthButton\n\t\t\t\t}\"\n\t\t\t\t(click)=\"onDotNavigate(enumNavigateMobileButton.FourthButton)\"></button>\n\t\t\t<button\n\t\t\t\t*ngIf=\"displayedResultsLength > 4\"\n\t\t\t\tclass=\"navigate-mobie-button\"\n\t\t\t\taria-label=\"This is a result navigation button.\"\n\t\t\t\ti18n-aria-label\n\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t'navigate-mobie-button-select ': navigateMobileButton == enumNavigateMobileButton.FifthButton\n\t\t\t\t}\"\n\t\t\t\t(click)=\"onDotNavigate(enumNavigateMobileButton.FifthButton)\"></button>\n\n\t\t\t<mat-chip-option\n\t\t\t\t*ngIf=\"displayedResultsLength > 5 && currentViewedIndex < displayedResultsLength - 3\"\n\t\t\t\trole=\"button\"\n\t\t\t\t(click)=\"scrollToIndex(displayedResultsLength - 1)\"\n\t\t\t\tclass=\"mat-chip-navigate\">\n\t\t\t\t{{ currentViewedIndex > 2 ? displayedResultsLength - currentViewedIndex - 3 : displayedResultsLength - 5 }}\n\t\t\t</mat-chip-option>\n\t\t</div>\n\t</div>\n\t<ng-container *ngIf=\"showLoadingView\">\n\t\t<cr-results-actions\n\t\t\t*ngIf=\"!(reportViewSvc.progress$.value < 100 && (!newResults || newResults.length === 0))\"\n\t\t\t[showLoadingView]=\"showLoadingView\"></cr-results-actions>\n\t\t<div\n\t\t\tclass=\"report-results-item-top-container\"\n\t\t\t[style]=\"'width:100%'\"\n\t\t\tfxLayout=\"column\"\n\t\t\tfxLayoutAlign=\"start center\"\n\t\t\tfxLayoutGap=\"8px\">\n\t\t\t<div #resultsContainer class=\"results-item-top-container\">\n\t\t\t\t<div\n\t\t\t\t\tfxLayoutGap=\"8px\"\n\t\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t\t'results-item-container': !isMobile,\n\t\t\t\t\t\t'results-item-mobile-container': isMobile\n\t\t\t\t\t}\">\n\t\t\t\t\t<ng-container *ngIf=\"!newResults || newResults.length === 0; else resultsRealTimeView\">\n\t\t\t\t\t\t<ng-container\n\t\t\t\t\t\t\t*ngIf=\"\n\t\t\t\t\t\t\t\t!!reportDataSvc.reportEndpointConfig$.value &&\n\t\t\t\t\t\t\t\t\treportViewSvc.progress$.value < 100 &&\n\t\t\t\t\t\t\t\t\t!isMobile &&\n\t\t\t\t\t\t\t\t\treportDataSvc.isRealTimeView$.value;\n\t\t\t\t\t\t\t\telse nonRealTimeView\n\t\t\t\t\t\t\t\">\n\t\t\t\t\t\t\t<cr-real-time-result-section-animation></cr-real-time-result-section-animation>\n\t\t\t\t\t\t</ng-container>\n\n\t\t\t\t\t\t<ng-template #nonRealTimeView>\n\t\t\t\t\t\t\t<ng-container *ngFor=\"let _ of [1, 2, 3, 4, 5, 6, 7, 8]\">\n\t\t\t\t\t\t\t\t<cr-report-results-item\n\t\t\t\t\t\t\t\t\t[reportViewSvc]=\"reportViewSvc\"\n\t\t\t\t\t\t\t\t\t[reportNgTemplatesSvc]=\"reportNgTemplatesSvc\"\n\t\t\t\t\t\t\t\t\t[reportDataSvc]=\"reportDataSvc\"\n\t\t\t\t\t\t\t\t\t[highlightService]=\"highlightService\"\n\t\t\t\t\t\t\t\t\t[showLoader]=\"true\"\n\t\t\t\t\t\t\t\t\t[style]=\"'width:100%'\"></cr-report-results-item>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t</ng-container>\n\t\t\t\t\t<ng-template #resultsRealTimeView>\n\t\t\t\t\t\t<ng-container *ngFor=\"let item of newResults\">\n\t\t\t\t\t\t\t<cr-report-results-item\n\t\t\t\t\t\t\t\tclass=\"real-time-result\"\n\t\t\t\t\t\t\t\t[reportViewSvc]=\"reportViewSvc\"\n\t\t\t\t\t\t\t\t[reportNgTemplatesSvc]=\"reportNgTemplatesSvc\"\n\t\t\t\t\t\t\t\t[reportDataSvc]=\"reportDataSvc\"\n\t\t\t\t\t\t\t\t[highlightService]=\"highlightService\"\n\t\t\t\t\t\t\t\t[resultItem]=\"item\"\n\t\t\t\t\t\t\t\t[isMobile]=\"isMobile\"\n\t\t\t\t\t\t\t\t[showLoader]=\"false\"\n\t\t\t\t\t\t\t\t[showItemBody]=\"true\"\n\t\t\t\t\t\t\t\t(hiddenResultEvent)=\"excludeResultById($event)\"\n\t\t\t\t\t\t\t\t(showResultEvent)=\"includeResultById($event)\"\n\t\t\t\t\t\t\t\tstyle=\"width: 100%\">\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t</cr-report-results-item>\n\t\t\t\t\t\t</ng-container>\n\n\t\t\t\t\t\t<ng-container *ngFor=\"let _ of [1, 2, 3]\">\n\t\t\t\t\t\t\t<cr-report-results-item\n\t\t\t\t\t\t\t\t[reportViewSvc]=\"reportViewSvc\"\n\t\t\t\t\t\t\t\t[reportNgTemplatesSvc]=\"reportNgTemplatesSvc\"\n\t\t\t\t\t\t\t\t[reportDataSvc]=\"reportDataSvc\"\n\t\t\t\t\t\t\t\t[highlightService]=\"highlightService\"\n\t\t\t\t\t\t\t\t[showLoader]=\"true\"\n\t\t\t\t\t\t\t\t[style]=\"'width:100%'\"></cr-report-results-item>\n\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t</ng-template>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</ng-container>\n\n\t<cr-empty-result-state\n\t\t*ngIf=\"\n\t\t\t!showLoadingView &&\n\t\t\t!showCustomView &&\n\t\t\tshowResultsSection &&\n\t\t\t(!displayedResults || displayedResults.length === 0) &&\n\t\t\t!(\n\t\t\t\tcustomResultsTemplate &&\n\t\t\t\t(reportViewMode === ECustomResultsReportView.Full || reportViewMode === ECustomResultsReportView.Partial)\n\t\t\t)\n\t\t\">\n\t\t>\n\t</cr-empty-result-state>\n\n\t<div\n\t\tclass=\"custom-empty-results-container\"\n\t\t#customEmptyResultView\n\t\t[ngStyle]=\"{\n\t\t\tdisplay:\n\t\t\t\t!showCustomView ||\n\t\t\t\tshowLoadingView ||\n\t\t\t\t!(!displayedResults || displayedResults.length === 0) ||\n\t\t\t\t!showResultsSection ||\n\t\t\t\t(customResultsTemplate &&\n\t\t\t\t\t(reportViewMode === ECustomResultsReportView.Full || reportViewMode === ECustomResultsReportView.Partial))\n\t\t\t\t\t? 'none'\n\t\t\t\t\t: 'flex'\n\t\t}\">\n\t\t<ng-container *ngTemplateOutlet=\"customEmptyResultsTemplate ?? null\"></ng-container>\n\t</div>\n\n\t<div\n\t\tclass=\"custom-results-container\"\n\t\t[ngStyle]=\"{\n\t\t\tdisplay:\n\t\t\t\t(customResultsTemplate && reportViewMode === ECustomResultsReportView.Full && showResultsSection) ||\n\t\t\t\t(!showLoadingView &&\n\t\t\t\t\tcustomResultsTemplate &&\n\t\t\t\t\tisMobile &&\n\t\t\t\t\treportViewMode === ECustomResultsReportView.Partial &&\n\t\t\t\t\tshowResultsSection &&\n\t\t\t\t\t(!displayedResults || displayedResults.length === 0))\n\t\t\t\t\t? 'flex'\n\t\t\t\t\t: 'none'\n\t\t}\">\n\t\t<ng-container *ngTemplateOutlet=\"customResultsTemplate ?? null\"></ng-container>\n\t</div>\n</ng-container>\n\n<ng-template #selectedCategroyRef>\n\t<div class=\"selected-category-container\" [dir]=\"docDirection\">\n\t\t<div class=\"selected-category-toolbar\">\n\t\t\t<button class=\"total-corrections-container\" (click)=\"goToAllResultsView()\" [tabIndex]=\"0\">\n\t\t\t\t<mat-icon class=\"left-arrow\">chevron_left</mat-icon>\n\t\t\t\t<!-- <ng-container *ngIf=\"reportViewSvc?.reportViewMode?.navigateBackToAIView; else backToResultsRef\">\n\t\t\t\t\t<span class=\"all-correction-title\" i18n>Back to AI Detection</span>\n\t\t\t\t</ng-container>\n\t\t\t\t<ng-template #backToResultsRef>\n\t\t\t\t\t<span class=\"all-correction-title\" i18n>All Matching Results ({{ resultsActions?.totalResults }})</span>\n\t\t\t\t</ng-template> -->\n\t\t\t\t<span class=\"all-correction-title\" i18n>All Matching Results ({{ resultsActions?.totalResults }})</span>\n\t\t\t</button>\n\t\t\t<div class=\"selected-correction-container\">\n\t\t\t\t<mat-icon class=\"right-arrow\">chevron_right</mat-icon>\n\t\t\t\t<span class=\"correction-title\" web-report-title-font i18n>\n\t\t\t\t\t{{ selectedCategory?.type }} ({{ selectedCategoryResults?.length }})\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<span class=\"categorized-summery\" i18n>Descending</span>\n\n\t\t<cdk-virtual-scroll-viewport\n\t\t\tclass=\"desktop-scroll all-corrections-info-container\"\n\t\t\titemSize=\"189\"\n\t\t\t[ngClass]=\"{ 'scroll-with-padding': addPaddingToContainer }\">\n\t\t\t<div\n\t\t\t\tstyle=\"width: 100%\"\n\t\t\t\tfxLayout=\"column\"\n\t\t\t\tfxLayoutAlign=\"start start\"\n\t\t\t\tfxLayoutGap=\"4px\"\n\t\t\t\t*cdkVirtualFor=\"let item of selectedCategoryResults\">\n\t\t\t\t<cr-report-results-item\n\t\t\t\t\t#resultitem\n\t\t\t\t\t[resultItem]=\"item\"\n\t\t\t\t\t[isMobile]=\"isMobile\"\n\t\t\t\t\t[reportViewSvc]=\"reportViewSvc\"\n\t\t\t\t\t[reportDataSvc]=\"reportDataSvc\"\n\t\t\t\t\t[highlightService]=\"highlightService\"\n\t\t\t\t\t[reportNgTemplatesSvc]=\"reportNgTemplatesSvc\"\n\t\t\t\t\t(hiddenResultEvent)=\"excludeResultById($event)\"\n\t\t\t\t\t(showResultEvent)=\"includeResultById($event)\"\n\t\t\t\t\tstyle=\"width: 100%\"></cr-report-results-item>\n\t\t\t</div>\n\t\t</cdk-virtual-scroll-viewport>\n\t</div>\n</ng-template>\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport {\n\tEPlatformType,\n\tEReportScoreTooltipPosition,\n\tEReportViewType,\n\tEResultPreviewType,\n} from '../../../../../enums/copyleaks-web-report.enums';\nimport { ReportViewService } from '../../../../../services/report-view.service';\nimport { IResultItem } from '../models/report-result-item.models';\nimport { IPercentageResult } from '../percentage-result-item/models/percentage-result-item.models';\nimport { ReportMatchHighlightService } from '../../../../../services/report-match-highlight.service';\nimport { DatePipe } from '@angular/common';\nimport { IResultTag } from '../../../../../models/report-data.models';\nimport { untilDestroy } from '../../../../../utils/until-destroy';\nimport { RESULT_TAGS_CODES } from '../../../../../constants/report-result-tags.constants';\nimport { ReportDataService } from '../../../../../services/report-data.service';\nimport { MatChip } from '@angular/material/chips';\n\n@Component({\n\tselector: 'cr-report-expand-result-item',\n\ttemplateUrl: './report-expand-result-item.component.html',\n\tstyleUrls: ['./report-expand-result-item.component.scss'],\n\tstandalone: false,\n})\nexport class ReportExpandResultItemComponent implements OnInit, OnChanges {\n\t/**\n\t * @Input {IResultItem} The result item details to display.\n\t */\n\t@Input() resultItem: IResultItem | null = null;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether to show the loading view or not.\n\t */\n\t@Input() showLoadingView = false;\n\n\t/**\n\t * @Output {EventEmitter<string>} Emit the result id to exclude the result from the report.\n\t */\n\t@Output() excludeResultEvent = new EventEmitter<string>();\n\n\tpercentageResult: IPercentageResult;\n\tshowMorePercentage: boolean = false;\n\teResultPreviewType = EResultPreviewType;\n\texclude: boolean = false;\n\n\tfaviconExists: boolean = true;\n\tfaviconURL: string;\n\n\tEReportViewType = EReportViewType;\n\tdocDirection: 'ltr' | 'rtl';\n\n\tRESULT_TAGS_CODES = RESULT_TAGS_CODES;\n\tEReportScoreTooltipPosition = EReportScoreTooltipPosition;\n\tisAiSourceResult: boolean;\n\tcopyMessage: string;\n\n\tget authorName() {\n\t\tif (this.resultItem?.resultPreview) {\n\t\t\tswitch (this.resultItem?.resultPreview.type) {\n\t\t\t\tcase EResultPreviewType.Internet:\n\t\t\t\t\treturn 'Internet Result';\n\t\t\t\tcase EResultPreviewType.Database:\n\t\t\t\t\treturn 'Shared Data Hub Result';\n\t\t\t\tcase EResultPreviewType.Batch:\n\t\t\t\t\treturn 'Batch Result';\n\t\t\t\tcase EResultPreviewType.Repositroy:\n\t\t\t\t\treturn 'Private Cloud Hub Result';\n\t\t\t\tdefault:\n\t\t\t\t\treturn '';\n\t\t\t}\n\t\t}\n\t\treturn '';\n\t}\n\n\tEXCLUDE_RESULT_TOOLTIP = $localize`Exclude result`;\n\tINCLUDE_RESULT_TOOLTIP = $localize`Include result`;\n\n\tconstructor(\n\t\tpublic reportViewSvc: ReportViewService,\n\t\tpublic reportDataSvc: ReportDataService,\n\t\tprivate _highlightService: ReportMatchHighlightService,\n\t\tprivate _datePipe: DatePipe\n\t) {}\n\n\tngOnInit(): void {\n\t\tthis._updateResultTags();\n\n\t\tthis.reportViewSvc.documentDirection$.pipe(untilDestroy(this)).subscribe(dir => {\n\t\t\tthis.docDirection = dir;\n\t\t});\n\t}\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif ('resultItem' in changes && changes['resultItem'].currentValue) {\n\t\t\tthis.percentageResult = {\n\t\t\t\tresultItem: changes['resultItem'].currentValue,\n\t\t\t\ttitle: $localize`Matching Text`,\n\t\t\t\tshowArrowButton: false,\n\t\t\t\tshowTooltip: true,\n\t\t\t\tstackedBarHeight: '8px',\n\t\t\t\tstackedBarBackgroundColor: '#EBF3F5',\n\t\t\t};\n\n\t\t\tif (\n\t\t\t\tchanges['resultItem'].currentValue.resultPreview?.type === EResultPreviewType.Internet &&\n\t\t\t\tchanges['resultItem'].currentValue.resultPreview?.url\n\t\t\t) {\n\t\t\t\tconst url = new URL(changes['resultItem'].currentValue.resultPreview.url);\n\t\t\t\tthis.faviconURL = url.host;\n\t\t\t}\n\n\t\t\tthis._updateResultTags();\n\t\t}\n\t}\n\n\tprivate _updateResultTags() {\n\t\t// Add the date tag to the tags list if available which includes the creation date, last modification date and publish date\n\t\tif (\n\t\t\t(this.resultItem?.resultPreview?.metadata?.creationDate ||\n\t\t\t\tthis.resultItem?.resultPreview?.metadata?.lastModificationDate ||\n\t\t\t\tthis.resultItem?.resultPreview?.metadata?.publishDate ||\n\t\t\t\tthis.resultItem?.resultPreview?.metadata?.submissionDate) &&\n\t\t\t!this.resultItem.resultPreview.tags.find(tag => tag.code === RESULT_TAGS_CODES.SUMMARY_DATE)\n\t\t) {\n\t\t\tconst date =\n\t\t\t\tthis.resultItem.resultPreview.metadata.creationDate ||\n\t\t\t\tthis.resultItem.resultPreview.metadata.lastModificationDate ||\n\t\t\t\tthis.resultItem.resultPreview.metadata.publishDate ||\n\t\t\t\tthis.resultItem.resultPreview.metadata.submissionDate;\n\t\t\tthis.resultItem.resultPreview.tags.push({\n\t\t\t\ttitle: this._datePipe.transform(date, 'MMM d, y, HH:mm:ss'),\n\t\t\t\tdescription: $localize`Published: ${\n\t\t\t\t\tthis._datePipe.transform(this.resultItem.resultPreview.metadata.publishDate, \"MMM d, y 'at' h:mm a\") ||\n\t\t\t\t\t'not available'\n\t\t\t\t}.\\nCreated: ${\n\t\t\t\t\tthis._datePipe.transform(this.resultItem.resultPreview.metadata.creationDate, \"MMM d, y 'at' h:mm a\") ||\n\t\t\t\t\t'not available'\n\t\t\t\t}.\\nLast modification: ${\n\t\t\t\t\tthis._datePipe.transform(\n\t\t\t\t\t\tthis.resultItem.resultPreview.metadata.lastModificationDate,\n\t\t\t\t\t\t\"MMM d, y 'at' h:mm a\"\n\t\t\t\t\t) || 'not available'\n\t\t\t\t}.\\nSubmission Date: ${\n\t\t\t\t\tthis._datePipe.transform(this.resultItem.resultPreview.metadata.submissionDate, \"MMM d, y 'at' h:mm a\") ||\n\t\t\t\t\t'not available'\n\t\t\t\t}.`,\n\t\t\t\tcode: RESULT_TAGS_CODES.SUMMARY_DATE,\n\t\t\t});\n\t\t}\n\n\t\t// Add the organization name to the tags list if available\n\t\tif (!!this.resultItem?.resultPreview?.metadata?.organization) {\n\t\t\tif (!this.resultItem.resultPreview.tags) this.resultItem.resultPreview.tags = [];\n\t\t\tif (this.resultItem.resultPreview.tags.find(tag => tag.code === RESULT_TAGS_CODES.ORGANIZATION) === undefined)\n\t\t\t\tthis.resultItem.resultPreview?.tags?.unshift({\n\t\t\t\t\ttitle: this.resultItem?.resultPreview?.metadata?.organization,\n\t\t\t\t\tdescription: $localize`Organization Name`,\n\t\t\t\t\tcode: RESULT_TAGS_CODES.ORGANIZATION,\n\t\t\t\t});\n\t\t}\n\n\t\t// Add the 'Your File' tag to the start of the tags array if the result is a database result and has a scanId and the platofrm that runs the report is APP\n\t\tif (\n\t\t\tthis.resultItem?.resultPreview?.scanId &&\n\t\t\tthis.resultItem?.resultPreview?.type === EResultPreviewType.Database\n\t\t) {\n\t\t\tif (!this.resultItem.resultPreview.tags) this.resultItem.resultPreview.tags = [];\n\t\t\t// push 'Your File' tag to the start of tags array\n\t\t\tif (this.resultItem.resultPreview.tags.find(tag => tag.code === RESULT_TAGS_CODES.YOUR_FILE) === undefined)\n\t\t\t\tthis.resultItem?.resultPreview?.tags?.unshift({\n\t\t\t\t\ttitle:\n\t\t\t\t\t\tthis.reportViewSvc?.reportViewMode?.platformType === EPlatformType.APP\n\t\t\t\t\t\t\t? $localize`Your File`\n\t\t\t\t\t\t\t: $localize`Your Organization's File`,\n\t\t\t\t\tdescription:\n\t\t\t\t\t\tthis.reportViewSvc?.reportViewMode?.platformType === EPlatformType.APP\n\t\t\t\t\t\t\t? $localize`This is your file`\n\t\t\t\t\t\t\t: $localize`This is uploaded by your organization`,\n\t\t\t\t\tcode: RESULT_TAGS_CODES.YOUR_FILE,\n\t\t\t\t});\n\t\t}\n\n\t\tif (this.resultItem?.resultPreview?.tags)\n\t\t\tthis.resultItem.resultPreview.tags = this.resultItem.resultPreview.tags.filter(\n\t\t\t\ttag =>\n\t\t\t\t\ttag.description !== 'File Name' &&\n\t\t\t\t\ttag.description.toLowerCase() !== 'last modification date' &&\n\t\t\t\t\ttag.description.toLowerCase() !== 'submission date' &&\n\t\t\t\t\ttag.description.toLowerCase() !== 'publish date'\n\t\t\t);\n\n\t\t// remove empty tags from the tags list\n\t\tif (this.resultItem?.resultPreview?.tags)\n\t\t\tthis.resultItem.resultPreview.tags = this.resultItem.resultPreview.tags.filter(\n\t\t\t\ttag => tag.title && tag.title.trim() !== ''\n\t\t\t);\n\n\t\t// Check if there is a tag in the tags list with the code 'ai-source-match' and put it in the first place\n\t\tconst aiSourceMatchTag = this.resultItem?.resultPreview?.tags?.find(\n\t\t\ttag => tag.code === RESULT_TAGS_CODES.AI_SOURCE_MATCH\n\t\t);\n\t\tif (aiSourceMatchTag) {\n\t\t\tthis.isAiSourceResult = true;\n\t\t\tif (aiSourceMatchTag.title != 'AI Source Match') {\n\t\t\t\taiSourceMatchTag.title = $localize`AI Source Match`;\n\t\t\t\taiSourceMatchTag.description = $localize`AI Source Match blends plagiarism and AI detection to identify reused or repurposed AI-generated content from other sources.`;\n\t\t\t}\n\t\t\tthis.resultItem.resultPreview.tags = [\n\t\t\t\taiSourceMatchTag,\n\t\t\t\t...this.resultItem.resultPreview.tags.filter(tag => tag.code !== RESULT_TAGS_CODES.AI_SOURCE_MATCH),\n\t\t\t];\n\t\t} else this.isAiSourceResult = false;\n\t}\n\n\tclickBack() {\n\t\tthis.reportViewSvc.reportViewMode$.next({\n\t\t\t...this.reportViewSvc.reportViewMode,\n\t\t\tviewMode: 'one-to-many',\n\t\t\tsuspectId: undefined,\n\t\t\tsourcePageIndex: 1,\n\t\t\tsuspectPageIndex: 1,\n\t\t\talertCode: undefined,\n\t\t});\n\n\t\tthis.reportViewSvc.selectedAlert$.next(null);\n\n\t\tthis._highlightService.clear();\n\t}\n\n\texcludeResult() {\n\t\tthis.exclude = !this.exclude;\n\t\tthis.excludeResultEvent.emit(this.resultItem?.resultPreview.id);\n\t}\n\n\tonFaviconError() {\n\t\tthis.faviconExists = false;\n\t}\n\n\tonFaviconLoad() {\n\t\tthis.faviconExists = true;\n\t}\n\n\tcopyResultURL() {\n\t\tif (!this.resultItem?.resultPreview.url) return;\n\t\tnavigator.clipboard.writeText(this.resultItem?.resultPreview?.url).then(\n\t\t\t() => {\n\t\t\t\tthis.copyMessage = $localize`URL copied!`;\n\t\t\t\tsetTimeout(() => (this.copyMessage = ''), 3000); // Clear the message after 3 seconds\n\t\t\t},\n\t\t\terr => {\n\t\t\t\tconsole.error('Failed to copy text: ', err);\n\t\t\t\tthis.copyMessage = $localize`Failed to copy text.`;\n\t\t\t}\n\t\t);\n\t}\n\n\topenResultURLInNewTab() {\n\t\tif (this.resultItem?.resultPreview?.url) window.open(this.resultItem?.resultPreview.url, '_blank');\n\t}\n\n\t/**\n\t * Checks if the tag text is with ellipsis or not ('...' at the end of the text)\n\t * @param tagChip The tag chip element\n\t * @returns true if the tag text is overflowing, false otherwise\n\t */\n\tisTagChipTextOverflowing(tagChip: HTMLElement): boolean {\n\t\tif (!tagChip) return false;\n\t\t// Check if the tag text is overflowing by comparing the scrollWidth with the clientWidth\n\t\treturn tagChip.scrollWidth > tagChip.clientWidth;\n\t}\n\n\t/**\n\t * Returns the tooltip text for the tag chip, if the text is overflowing it will return the tag title with modification: 'tag title: tag content'\n\t * @param tag The tag object\n\t * @param chipContent The tag chip content element\n\t * @returns The tooltip text for the tag chip\n\t */\n\tgetTagChipTooltipText(tag: IResultTag, chipContent: MatChip): string {\n\t\tconst fullText = chipContent._elementRef.nativeElement.textContent?.trim() || '';\n\t\t// Check if the tag text is overflowing and the tag is not 'summary-date' or 'organization' or 'your-file' tags & not empty\n\t\tif (\n\t\t\tthis.isTagChipTextOverflowing(chipContent._elementRef.nativeElement) &&\n\t\t\ttag.code !== RESULT_TAGS_CODES.SUMMARY_DATE &&\n\t\t\ttag.code !== RESULT_TAGS_CODES.YOUR_FILE\n\t\t) {\n\t\t\treturn `${tag?.description}: ${fullText}`;\n\t\t}\n\n\t\tif (tag.code === RESULT_TAGS_CODES.AI_SOURCE_MATCH) {\n\t\t\treturn $localize`AI Source Match blends plagiarism and AI detection to identify reused or repurposed AI-generated content from other sources.`;\n\t\t}\n\t\treturn tag?.description;\n\t}\n\n\tngOnDestroy(): void {}\n}\n","<ng-container *ngIf=\"!showLoadingView; else loadingViewRef\">\n\t<div class=\"expand-result-top-continer\" fxLayout=\"column\" fxLayoutAlign=\"space-between start\" [dir]=\"docDirection\">\n\t\t<div class=\"expand-result-continer\" fxLayout=\"column\" fxLayoutAlign=\"start start\">\n\t\t\t<div class=\"result-header\" fxLayout=\"column\" fxLayoutAlign=\"space-between center\">\n\t\t\t\t<div class=\"back-and-chips-container\">\n\t\t\t\t\t<a\n\t\t\t\t\t\ttabIndex=\"0\"\n\t\t\t\t\t\tclass=\"back-button\"\n\t\t\t\t\t\tfxLayout=\"row\"\n\t\t\t\t\t\tfxLayoutAlign=\"center center\"\n\t\t\t\t\t\tfxLayoutGap=\"4px\"\n\t\t\t\t\t\tmat-button\n\t\t\t\t\t\t[disableRipple]=\"true\"\n\t\t\t\t\t\t(click)=\"clickBack()\"\n\t\t\t\t\t\t(keyup.enter)=\"clickBack()\"\n\t\t\t\t\t\trole=\"link\"\n\t\t\t\t\t\taria-label=\"Navigates back.\"\n\t\t\t\t\t\ti18n-aria-label>\n\t\t\t\t\t\t<mat-icon fontSet=\"material-icons-round\">chevron_left</mat-icon>\n\t\t\t\t\t\t<span i18n>Back</span>\n\t\t\t\t\t</a>\n\t\t\t\t\t<div\n\t\t\t\t\t\t*ngIf=\"resultItem?.resultPreview?.tags?.length\"\n\t\t\t\t\t\tclass=\"mat-chip-list-container\"\n\t\t\t\t\t\tfxLayout=\"row\"\n\t\t\t\t\t\tfxLayoutAlign=\"start start\">\n\t\t\t\t\t\t<mat-chip-listbox\n\t\t\t\t\t\t\taria-label=\"This is a list of tags the are associated with the given results\"\n\t\t\t\t\t\t\ti18n-aria-label\n\t\t\t\t\t\t\trole>\n\t\t\t\t\t\t\t<mat-chip-option\n\t\t\t\t\t\t\t\t*ngFor=\"let tag of resultItem?.resultPreview?.tags\"\n\t\t\t\t\t\t\t\t#chipContent\n\t\t\t\t\t\t\t\t[class]=\"tag?.code\"\n\t\t\t\t\t\t\t\t[matTooltip]=\"getTagChipTooltipText(tag, chipContent)\"\n\t\t\t\t\t\t\t\t[matTooltipClass]=\"\n\t\t\t\t\t\t\t\t\ttag?.code === RESULT_TAGS_CODES.SUMMARY_DATE\n\t\t\t\t\t\t\t\t\t\t? ['web-report-mat-tooltip', 'date-tooltip']\n\t\t\t\t\t\t\t\t\t\t: 'web-report-mat-tooltip'\n\t\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t\t\ti18n-matTooltip>\n\t\t\t\t\t\t\t\t{{ tag?.title ?? '' | decodeUri }}\n\t\t\t\t\t\t\t</mat-chip-option>\n\t\t\t\t\t\t</mat-chip-listbox>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div fxLayout=\"row\" fxLayoutAlign=\"start start\" fxLayoutGap=\"8px\" style=\"width: 100%\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"result-logo\"\n\t\t\t\t\t\tfxLayout=\"column\"\n\t\t\t\t\t\tfxLayoutAlign=\"center center\"\n\t\t\t\t\t\t[class.ai-source-match-icon]=\"isAiSourceResult\">\n\t\t\t\t\t\t<ng-container *ngIf=\"!isAiSourceResult; else AISourceMatchResultRef\">\n\t\t\t\t\t\t\t<ng-container [ngSwitch]=\"resultItem?.resultPreview?.type\">\n\t\t\t\t\t\t\t\t<ng-container *ngSwitchCase=\"eResultPreviewType.Batch\">\n\t\t\t\t\t\t\t\t\t<mat-icon fontSet=\"material-icons-round\">compare_arrows</mat-icon>\n\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t<ng-container *ngSwitchCase=\"eResultPreviewType.Repositroy\">\n\t\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\t\tclass=\"repo-img\"\n\t\t\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\t\t\twidth=\"11\"\n\t\t\t\t\t\t\t\t\t\theight=\"16\"\n\t\t\t\t\t\t\t\t\t\tviewBox=\"0 0 11 16\"\n\t\t\t\t\t\t\t\t\t\tfill=\"none\">\n\t\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\t\td=\"M10.1426 2.58338C10.1426 3.56798 7.91658 4.36598 5.17158 4.36598C2.42658 4.36598 0.200578 3.56798 0.200578 2.58338C0.200578 1.59878 2.42598 0.80078 5.17158 0.80078C7.91718 0.80078 10.1426 1.59878 10.1426 2.58338ZM10.0694 3.40958C10.1174 3.49885 10.1425 3.59862 10.1426 3.69998V6.61598C10.1426 7.46078 7.91238 8.15078 5.17158 8.15078C2.43078 8.15078 0.200578 7.46198 0.200578 6.61598V3.69998C0.200606 3.59893 0.22598 3.49949 0.274378 3.41078C0.694378 4.26398 2.75238 4.88258 5.17158 4.88258C7.59078 4.88258 9.65118 4.26338 10.0682 3.40958H10.0694ZM1.67838 6.14858C1.67187 6.08352 1.64663 6.02175 1.60571 5.97075C1.56478 5.91976 1.50994 5.88174 1.44783 5.8613C1.38573 5.84087 1.31902 5.8389 1.25582 5.85563C1.19261 5.87236 1.13562 5.90707 1.09175 5.95556C1.04789 6.00404 1.01904 6.06422 1.0087 6.12878C0.998364 6.19334 1.00699 6.25951 1.03352 6.31927C1.06005 6.37903 1.10336 6.4298 1.15819 6.46543C1.21301 6.50105 1.27699 6.52001 1.34238 6.51998C1.43598 6.51486 1.52376 6.47295 1.58659 6.40337C1.64942 6.3338 1.68279 6.24222 1.67838 6.14858ZM10.0694 7.27178C10.1174 7.36105 10.1425 7.46082 10.1426 7.56218L10.1426 10.4782C10.1426 11.3242 7.91238 12.013 5.17158 12.013C2.43078 12.013 0.200578 11.3242 0.200578 10.4782L0.200578 7.56218C0.200606 7.46113 0.22598 7.36169 0.274378 7.27298C0.694378 8.12618 2.75238 8.74478 5.17158 8.74478C7.59078 8.74478 9.65118 8.12498 10.0682 7.27178H10.0694ZM1.67778 10.0102C1.67127 9.94512 1.64603 9.88335 1.60511 9.83236C1.56418 9.78136 1.50934 9.74334 1.44723 9.72291C1.38513 9.70247 1.31842 9.7005 1.25522 9.71723C1.19201 9.73396 1.13502 9.76867 1.09115 9.81716C1.04729 9.86564 1.01844 9.92582 1.0081 9.99038C0.997765 10.0549 1.00639 10.1211 1.03292 10.1809C1.05946 10.2406 1.10276 10.2914 1.15759 10.327C1.21241 10.3627 1.27639 10.3816 1.34178 10.3816C1.43548 10.3766 1.52342 10.3348 1.58637 10.2652C1.64933 10.1956 1.68219 10.1039 1.67778 10.0102ZM10.0694 11.0608C10.1172 11.1497 10.1423 11.249 10.1426 11.35V14.266C10.1426 15.112 7.91238 15.8008 5.17158 15.8008C2.43078 15.8008 0.200578 15.112 0.200578 14.266V11.35C0.200425 11.2489 0.22581 11.1494 0.274378 11.0608C0.694378 11.914 2.75238 12.5326 5.17158 12.5326C7.59078 12.5326 9.65118 11.9134 10.0682 11.0608H10.0694ZM1.67778 13.7986C1.68265 13.7515 1.6776 13.704 1.66293 13.659C1.64827 13.6141 1.62432 13.5727 1.59265 13.5375C1.56098 13.5024 1.52228 13.4743 1.47906 13.4551C1.43585 13.4359 1.38908 13.426 1.34178 13.426C1.29448 13.426 1.24771 13.4359 1.20449 13.4551C1.16128 13.4743 1.12258 13.5024 1.09091 13.5375C1.05923 13.5727 1.03529 13.6141 1.02062 13.659C1.00596 13.704 1.0009 13.7515 1.00578 13.7986C1.0009 13.8456 1.00596 13.8932 1.02062 13.9381C1.03529 13.9831 1.05923 14.0245 1.09091 14.0596C1.12258 14.0947 1.16128 14.1228 1.20449 14.1421C1.24771 14.1613 1.29448 14.1712 1.34178 14.1712C1.38908 14.1712 1.43585 14.1613 1.47906 14.1421C1.52228 14.1228 1.56098 14.0947 1.59265 14.0596C1.62432 14.0245 1.64827 13.9831 1.66293 13.9381C1.6776 13.8932 1.68265 13.8456 1.67778 13.7986Z\"\n\t\t\t\t\t\t\t\t\t\t\tfill=\"#3F9AF5\" />\n\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t<ng-container *ngSwitchCase=\"eResultPreviewType.Internet\">\n\t\t\t\t\t\t\t\t\t<ng-container *ngIf=\"faviconExists; else defaultInternetIcon\">\n\t\t\t\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\t\t\t\talt=\"Source image\"\n\t\t\t\t\t\t\t\t\t\t\trole=\"img\"\n\t\t\t\t\t\t\t\t\t\t\ti18n-alt\n\t\t\t\t\t\t\t\t\t\t\tclass=\"internet-result-favicon\"\n\t\t\t\t\t\t\t\t\t\t\t[src]=\"'https://www.google.com/s2/favicons?domain=' + faviconURL\"\n\t\t\t\t\t\t\t\t\t\t\t(error)=\"onFaviconError()\"\n\t\t\t\t\t\t\t\t\t\t\t(load)=\"onFaviconLoad()\" />\n\t\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t\t<ng-template #defaultInternetIcon>\n\t\t\t\t\t\t\t\t\t\t<mat-icon fontSet=\"material-icons-round\">language</mat-icon>\n\t\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t<ng-container *ngSwitchCase=\"eResultPreviewType.Database\">\n\t\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\t\tclass=\"internal-database-img\"\n\t\t\t\t\t\t\t\t\t\twidth=\"17\"\n\t\t\t\t\t\t\t\t\t\theight=\"22\"\n\t\t\t\t\t\t\t\t\t\tviewBox=\"0 0 17 22\"\n\t\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\t\td=\"M13.8584 2.77719C13.8584 4.08999 10.8904 5.15399 7.2304 5.15399C3.5704 5.15399 0.602398 4.08999 0.602398 2.77719C0.602398 1.46439 3.5696 0.40039 7.2304 0.40039C10.8912 0.40039 13.8584 1.46439 13.8584 2.77719ZM13.7608 3.87879C13.8248 3.99782 13.8583 4.13085 13.8584 4.26599V8.15399C13.8584 9.28039 10.8848 10.2004 7.2304 10.2004C3.576 10.2004 0.602398 9.28199 0.602398 8.15399V4.26599C0.602436 4.13125 0.636267 3.99867 0.700798 3.88039C1.2608 5.01799 4.0048 5.84279 7.2304 5.84279C10.456 5.84279 13.2032 5.01719 13.7592 3.87879H13.7608ZM2.5728 7.53079C2.56413 7.44405 2.53047 7.36168 2.4759 7.29369C2.42134 7.2257 2.34822 7.175 2.26541 7.14776C2.1826 7.12051 2.09366 7.11788 2.00938 7.14019C1.92511 7.16249 1.84912 7.20878 1.79063 7.27343C1.73215 7.33807 1.69368 7.41831 1.6799 7.50439C1.66611 7.59047 1.67761 7.6787 1.71299 7.75838C1.74837 7.83805 1.80611 7.90575 1.87921 7.95325C1.95231 8.00075 2.03762 8.02602 2.1248 8.02599C2.2496 8.01916 2.36664 7.96328 2.45041 7.87052C2.53418 7.77775 2.57869 7.65564 2.5728 7.53079ZM13.7608 9.02839C13.8248 9.14742 13.8583 9.28045 13.8584 9.41559L13.8584 13.3036C13.8584 14.4316 10.8848 15.35 7.2304 15.35C3.576 15.35 0.602398 14.4316 0.602398 13.3036L0.602398 9.41559C0.602436 9.28085 0.636267 9.14827 0.700798 9.02999C1.2608 10.1676 4.0048 10.9924 7.2304 10.9924C10.456 10.9924 13.2032 10.166 13.7592 9.02839H13.7608ZM2.572 12.6796C2.56333 12.5928 2.52967 12.5105 2.4751 12.4425C2.42054 12.3745 2.34742 12.3238 2.26461 12.2966C2.1818 12.2693 2.09286 12.2667 2.00858 12.289C1.92431 12.3113 1.84832 12.3576 1.78983 12.4222C1.73135 12.4869 1.69288 12.5671 1.6791 12.6532C1.66531 12.7393 1.67681 12.8275 1.71219 12.9072C1.74757 12.9869 1.80531 13.0545 1.87841 13.1021C1.95151 13.1496 2.03682 13.1748 2.124 13.1748C2.24894 13.1682 2.36619 13.1124 2.45013 13.0196C2.53407 12.9268 2.57788 12.8046 2.572 12.6796ZM13.7608 14.0804C13.8245 14.1989 13.8581 14.3314 13.8584 14.466L13.8584 18.354C13.8584 19.482 10.8848 20.4004 7.2304 20.4004C3.576 20.4004 0.602398 19.482 0.602398 18.354V14.466C0.602195 14.3312 0.636042 14.1986 0.700798 14.0804C1.2608 15.218 4.0048 16.0428 7.2304 16.0428C10.456 16.0428 13.2032 15.2172 13.7592 14.0804H13.7608ZM2.572 17.7308C2.5785 17.6681 2.57176 17.6047 2.5522 17.5447C2.53265 17.4848 2.50073 17.4296 2.45849 17.3827C2.41626 17.3359 2.36467 17.2985 2.30704 17.2728C2.24942 17.2472 2.18706 17.234 2.124 17.234C2.06093 17.234 1.99857 17.2472 1.94095 17.2728C1.88333 17.2985 1.83174 17.3359 1.7895 17.3827C1.74727 17.4296 1.71535 17.4848 1.69579 17.5447C1.67624 17.6047 1.6695 17.6681 1.676 17.7308C1.6695 17.7935 1.67624 17.8569 1.69579 17.9169C1.71535 17.9768 1.74727 18.032 1.7895 18.0788C1.83174 18.1257 1.88333 18.1631 1.94095 18.1888C1.99857 18.2144 2.06093 18.2276 2.124 18.2276C2.18706 18.2276 2.24942 18.2144 2.30704 18.1888C2.36467 18.1631 2.41626 18.1257 2.45849 18.0788C2.50073 18.032 2.53265 17.9768 2.5522 17.9169C2.57176 17.8569 2.5785 17.7935 2.572 17.7308Z\"\n\t\t\t\t\t\t\t\t\t\t\tfill=\"#3F9AF5\" />\n\t\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\t\td=\"M16.358 20.1885C17.9652 18.1424 17.6915 15.2448 15.6962 13.5372C13.5368 11.6653 10.1284 12.1681 8.58089 14.5827C6.71 17.4553 8.38186 21.2888 11.7057 21.9061C13.4074 22.2696 15.2932 21.5576 16.363 20.1885H16.358Z\"\n\t\t\t\t\t\t\t\t\t\t\tfill=\"#FBFFFF\" />\n\t\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\t\td=\"M17.3882 19.6885H17.2787C18.429 17.5257 17.9692 14.8253 16.0225 13.1583C13.631 11.0866 9.87147 11.6443 8.16091 14.3114C6.09755 17.4818 7.9397 21.7106 11.6078 22.3965C13.5002 22.7978 15.5742 22.0102 16.757 20.4964L17.3882 19.6885ZM15.2808 19.0944L15.2808 19.0944L15.2777 19.0988C14.6768 19.9509 13.7076 20.4851 12.6013 20.4851L12.5986 20.4851C10.2392 20.498 8.62123 17.9763 9.60659 15.8388C9.86246 15.2919 10.2521 14.8105 10.7391 14.5024L10.7506 14.4951L10.7617 14.4872C12.0914 13.5405 14.063 13.8547 15.0726 15.0713L15.0726 15.0713L15.0783 15.078C16.0653 16.2258 16.1378 17.9069 15.2808 19.0944Z\"\n\t\t\t\t\t\t\t\t\t\t\tfill=\"#3F9AF5\"\n\t\t\t\t\t\t\t\t\t\t\tstroke=\"#FBFFFF\" />\n\t\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\t\td=\"M12.6716 19.8856C11.149 19.9006 9.915 18.6609 9.92992 17.1474C9.91002 15.6389 11.144 14.3993 12.6566 14.4142C13.4577 14.4092 14.0847 14.6631 14.632 15.1809L13.9304 15.8829C13.607 15.5294 13.1642 15.3751 12.6566 15.3751C11.6466 15.3601 10.9699 16.1567 10.9898 17.1524C10.9599 18.1382 11.6515 18.9497 12.6616 18.9297C13.199 18.9347 13.617 18.7655 13.9653 18.407L14.6669 19.109C14.1195 19.6168 13.4528 19.9055 12.6716 19.8956V19.8856Z\"\n\t\t\t\t\t\t\t\t\t\t\tfill=\"#0B163E\" />\n\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t<ng-container *ngSwitchDefault>\n\t\t\t\t\t\t\t\t\t<mat-icon fontSet=\"material-icons-round\">language</mat-icon>\n\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t<ng-template #AISourceMatchResultRef>\n\t\t\t\t\t\t\t<svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t\t\t\t<rect x=\"1\" y=\"1\" width=\"38\" height=\"38\" rx=\"19\" fill=\"#F8EAFF\" />\n\t\t\t\t\t\t\t\t<rect x=\"1\" y=\"1\" width=\"38\" height=\"38\" rx=\"19\" stroke=\"#FD7366\" stroke-width=\"2\" />\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tfill-rule=\"evenodd\"\n\t\t\t\t\t\t\t\t\tclip-rule=\"evenodd\"\n\t\t\t\t\t\t\t\t\td=\"M33.2228 18.4724C30.924 13.4102 25.7245 10.1392 19.9761 10.1392C17.0539 10.1392 14.2338 10.9767 11.8213 12.5609C9.40878 14.1451 7.57215 16.3653 6.51056 18.9813L6.19922 19.7484L6.51056 20.5153C7.57215 23.1313 9.40852 25.3516 11.8213 26.9357C14.2341 28.5199 17.0539 29.3574 19.9761 29.3574C21.9008 29.3574 23.764 28.9907 25.4773 28.3128L23.9925 26.7854C22.8069 27.4077 21.4467 27.7613 20.0006 27.7613C15.3948 27.7613 11.661 24.1738 11.661 19.7484C11.661 15.3229 15.3948 11.7354 20.0006 11.7354C24.6064 11.7354 28.3403 15.3229 28.3403 19.7484C28.3403 21.3316 27.8624 22.8075 27.0377 24.0504L29.1383 26.2111C30.8739 24.8446 32.2881 23.0825 33.2228 21.0243L33.802 19.7484L33.2228 18.4724ZM28.3235 26.8076L26.4265 24.8563C25.9722 25.3832 25.4492 25.8534 24.8705 26.254L26.4554 27.8843C27.1058 27.5709 27.7303 27.2108 28.3235 26.8076Z\"\n\t\t\t\t\t\t\t\t\tfill=\"#FD7366\" />\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\td=\"M24.4245 24.6303C21.8224 27.17 17.6435 27.1151 15.1084 24.5075C12.5732 21.8998 12.628 17.7133 15.2302 15.1736C17.8324 12.634 22.0112 12.6889 24.5464 15.2965C27.0817 17.9041 27.0267 22.0907 24.4245 24.6303ZM16.0312 15.9975C13.8827 18.0944 13.8374 21.5521 15.9307 23.705C18.0239 25.8579 21.475 25.9034 23.6236 23.8064C25.7721 21.7095 25.8173 18.2519 23.7241 16.099C21.6308 13.9461 18.1797 13.9006 16.0312 15.9975Z\"\n\t\t\t\t\t\t\t\t\tfill=\"#FBFFFF\" />\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\td=\"M24.4245 24.6303C21.8224 27.17 17.6435 27.1151 15.1084 24.5075C12.5732 21.8998 12.628 17.7133 15.2302 15.1736C17.8324 12.634 22.0112 12.6889 24.5464 15.2965C27.0817 17.9041 27.0267 22.0907 24.4245 24.6303ZM16.0312 15.9975C13.8827 18.0944 13.8374 21.5521 15.9307 23.705C18.0239 25.8579 21.475 25.9034 23.6236 23.8064C25.7721 21.7095 25.8173 18.2519 23.7241 16.099C21.6308 13.9461 18.1797 13.9006 16.0312 15.9975Z\"\n\t\t\t\t\t\t\t\t\tfill=\"url(#paint0_linear_8009_2488)\" />\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tfill-rule=\"evenodd\"\n\t\t\t\t\t\t\t\t\tclip-rule=\"evenodd\"\n\t\t\t\t\t\t\t\t\td=\"M16.4711 21.3453C16.918 22.4752 17.8743 23.3474 19.0561 23.6776L19.4442 21.5155C19.0954 21.3543 18.811 21.0912 18.6215 20.7697L16.4711 21.3453ZM16.2166 20.2944L17.9143 19.8401L16.2196 19.4809C16.2048 19.6192 16.1973 19.7597 16.1973 19.9019C16.1973 20.0344 16.2038 20.1654 16.2166 20.2944ZM22.5852 16.8677C21.9108 16.3146 21.0486 15.9827 20.1091 15.9827C18.4701 15.9827 17.0665 16.9927 16.4844 18.4253L18.6088 18.8756C18.9954 18.1881 19.7828 17.7801 20.5982 17.9157C20.8535 17.9581 21.0876 18.0498 21.2926 18.1795L22.5852 16.8677ZM23.176 17.4688L21.8844 18.7797C22.1174 19.1591 22.2168 19.6236 22.1313 20.1002C21.9815 20.9343 21.3111 21.5508 20.516 21.6688L20.1296 23.8211C22.2806 23.81 24.0209 22.0596 24.0209 19.9019C24.0209 18.9826 23.705 18.1372 23.176 17.4688Z\"\n\t\t\t\t\t\t\t\t\tfill=\"#A188FF\" />\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tfill-rule=\"evenodd\"\n\t\t\t\t\t\t\t\t\tclip-rule=\"evenodd\"\n\t\t\t\t\t\t\t\t\td=\"M24.8691 26.254L28.0675 29.5439C28.2621 29.7445 28.5229 29.8566 28.802 29.8608H28.8162C29.0899 29.8608 29.3477 29.7553 29.5441 29.5638C29.9562 29.162 29.9651 28.4978 29.5635 28.0844L26.4251 24.8563C25.9709 25.3832 25.4478 25.8534 24.8691 26.254Z\"\n\t\t\t\t\t\t\t\t\tfill=\"#FBFFFF\" />\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tfill-rule=\"evenodd\"\n\t\t\t\t\t\t\t\t\tclip-rule=\"evenodd\"\n\t\t\t\t\t\t\t\t\td=\"M24.8691 26.254L28.0675 29.5439C28.2621 29.7445 28.5229 29.8566 28.802 29.8608H28.8162C29.0899 29.8608 29.3477 29.7553 29.5441 29.5638C29.9562 29.162 29.9651 28.4978 29.5635 28.0844L26.4251 24.8563C25.9709 25.3832 25.4478 25.8534 24.8691 26.254Z\"\n\t\t\t\t\t\t\t\t\tfill=\"url(#paint1_linear_8009_2488)\" />\n\t\t\t\t\t\t\t\t<defs>\n\t\t\t\t\t\t\t\t\t<linearGradient\n\t\t\t\t\t\t\t\t\t\tid=\"paint0_linear_8009_2488\"\n\t\t\t\t\t\t\t\t\t\tx1=\"13.2422\"\n\t\t\t\t\t\t\t\t\t\ty1=\"20.8977\"\n\t\t\t\t\t\t\t\t\t\tx2=\"25.5544\"\n\t\t\t\t\t\t\t\t\t\ty2=\"24.1482\"\n\t\t\t\t\t\t\t\t\t\tgradientUnits=\"userSpaceOnUse\">\n\t\t\t\t\t\t\t\t\t\t<stop stop-color=\"#BCA6FF\" />\n\t\t\t\t\t\t\t\t\t\t<stop offset=\"1\" stop-color=\"#9345F9\" />\n\t\t\t\t\t\t\t\t\t</linearGradient>\n\t\t\t\t\t\t\t\t\t<linearGradient\n\t\t\t\t\t\t\t\t\t\tid=\"paint1_linear_8009_2488\"\n\t\t\t\t\t\t\t\t\t\tx1=\"24.8691\"\n\t\t\t\t\t\t\t\t\t\ty1=\"27.7362\"\n\t\t\t\t\t\t\t\t\t\tx2=\"29.5345\"\n\t\t\t\t\t\t\t\t\t\ty2=\"28.9666\"\n\t\t\t\t\t\t\t\t\t\tgradientUnits=\"userSpaceOnUse\">\n\t\t\t\t\t\t\t\t\t\t<stop stop-color=\"#BCA6FF\" />\n\t\t\t\t\t\t\t\t\t\t<stop offset=\"1\" stop-color=\"#9345F9\" />\n\t\t\t\t\t\t\t\t\t</linearGradient>\n\t\t\t\t\t\t\t\t</defs>\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"result-title-container\" fxLayout=\"column\" fxLayoutAlign=\"start start\" fxLayoutGap=\"4px\">\n\t\t\t\t\t\t<div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"8px\">\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\tclass=\"exclude-button\"\n\t\t\t\t\t\t\t\t(click)=\"excludeResult()\"\n\t\t\t\t\t\t\t\taria-label=\"This is a button that excludes or includes the result in the plagiarism report.\"\n\t\t\t\t\t\t\t\ti18n-aria-label\n\t\t\t\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t\t\t\t\ti18n-matTooltip\n\t\t\t\t\t\t\t\t[matTooltip]=\"exclude ? INCLUDE_RESULT_TOOLTIP : EXCLUDE_RESULT_TOOLTIP\">\n\t\t\t\t\t\t\t\t<mat-icon *ngIf=\"exclude\" fontSet=\"material-icons-round\">visibility</mat-icon>\n\t\t\t\t\t\t\t\t<mat-icon *ngIf=\"!exclude\" fontSet=\"material-icons-round\">visibility_off</mat-icon>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t<span class=\"result-title\" [title]=\"resultItem?.resultPreview?.title\">\n\t\t\t\t\t\t\t\t{{ resultItem?.resultPreview?.metadata?.filename ?? resultItem?.resultPreview?.title }}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<ng-container *ngIf=\"resultItem?.resultPreview?.url; else resultSource\">\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tclass=\"result-url-source\"\n\t\t\t\t\t\t\t\t[href]=\"resultItem?.resultPreview?.url\"\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\taria-label=\"Opens the founded source\"\n\t\t\t\t\t\t\t\ti18n-aria-label>\n\t\t\t\t\t\t\t\t<ng-container *ngIf=\"copyMessage; else showItemURL\">\n\t\t\t\t\t\t\t\t\t<mat-chip-option class=\"copied-url-chip\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"copied-url-chip-content-container\">\n\t\t\t\t\t\t\t\t\t\t\t<mat-icon fontSet=\"material-icons-round\">done</mat-icon>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"copy-message\" i18n>{{ copyMessage }}</div>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</mat-chip-option>\n\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t<ng-template #showItemURL>\n\t\t\t\t\t\t\t\t\t<mat-icon\n\t\t\t\t\t\t\t\t\t\tfontSet=\"material-icons-round\"\n\t\t\t\t\t\t\t\t\t\tclass=\"copy-url-button\"\n\t\t\t\t\t\t\t\t\t\trole=\"button\"\n\t\t\t\t\t\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t\t\t\t\t\taria-label=\"Copy result URL to clipboard\"\n\t\t\t\t\t\t\t\t\t\t(click)=\"$event.preventDefault(); $event.stopPropagation(); copyResultURL()\"\n\t\t\t\t\t\t\t\t\t\t(keydown.enter)=\"copyResultURL()\"\n\t\t\t\t\t\t\t\t\t\t(keydown.space)=\"copyResultURL(); $event.preventDefault()\"\n\t\t\t\t\t\t\t\t\t\tmatTooltip=\"Copy result URL to clipboard\"\n\t\t\t\t\t\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t\t\t\t\t\t\ti18n-matTooltip\n\t\t\t\t\t\t\t\t\t\ti18n-aria-label>\n\t\t\t\t\t\t\t\t\t\tcontent_copy\n\t\t\t\t\t\t\t\t\t</mat-icon>\n\n\t\t\t\t\t\t\t\t\t<mat-icon\n\t\t\t\t\t\t\t\t\t\tfontSet=\"material-icons-round\"\n\t\t\t\t\t\t\t\t\t\tclass=\"copy-url-button\"\n\t\t\t\t\t\t\t\t\t\trole=\"button\"\n\t\t\t\t\t\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t\t\t\t\t\taria-label=\"Open result URL in new tab\"\n\t\t\t\t\t\t\t\t\t\t(click)=\"$event.preventDefault(); $event.stopPropagation(); openResultURLInNewTab()\"\n\t\t\t\t\t\t\t\t\t\t(keydown.enter)=\"openResultURLInNewTab()\"\n\t\t\t\t\t\t\t\t\t\t(keydown.space)=\"openResultURLInNewTab(); $event.preventDefault()\"\n\t\t\t\t\t\t\t\t\t\tmatTooltip=\"Open result URL in a new tab\"\n\t\t\t\t\t\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t\t\t\t\t\t\ti18n-matTooltip\n\t\t\t\t\t\t\t\t\t\ti18n-aria-label>\n\t\t\t\t\t\t\t\t\t\topen_in_new\n\t\t\t\t\t\t\t\t\t</mat-icon>\n\t\t\t\t\t\t\t\t\t<span [title]=\"resultItem?.resultPreview?.url\">\n\t\t\t\t\t\t\t\t\t\t{{ resultItem?.resultPreview?.url | removeProtocol }}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t<ng-template #resultSource>\n\t\t\t\t\t\t\t<span class=\"result-source\" i18n>Source: {{ authorName }}</span>\n\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"plagiarism-detection-container\">\n\t\t\t<cr-percentage-result-item\n\t\t\t\t[reportViewService]=\"reportViewSvc\"\n\t\t\t\t[reportDataSvc]=\"reportDataSvc\"\n\t\t\t\t[percentageResult]=\"percentageResult\"\n\t\t\t\t[crReportScoreTooltipPosition]=\"EReportScoreTooltipPosition.BELOW\"></cr-percentage-result-item>\n\t\t</div>\n\t</div>\n</ng-container>\n\n<ng-template #loadingViewRef>\n\t<div class=\"loader-container\">\n\t\t<div class=\"left-side-loader\">\n\t\t\t<ngx-skeleton-loader class=\"skeleton back-btn\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t<div class=\"result-title-loader-container\">\n\t\t\t\t<ngx-skeleton-loader class=\"skeleton result-icon-loader\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t<div class=\"icons-loader-container\">\n\t\t\t\t\t<ngx-skeleton-loader class=\"skeleton icon-loader\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t<ngx-skeleton-loader class=\"skeleton icon-loader\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"info-loader-container\">\n\t\t\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"result-chips-loader-container\">\n\t\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"right-side-loader\">\n\t\t\t<ngx-skeleton-loader class=\"skeleton title-loader\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t<div class=\"stats-loader-container\">\n\t\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t<div class=\"stats-values-loader-container\">\n\t\t\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"stats-loader-container\">\n\t\t\t\t<div class=\"specific-stat-loader-container\">\n\t\t\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"stats-values-loader-container\">\n\t\t\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"stats-loader-container\">\n\t\t\t\t<div class=\"specific-stat-loader-container\">\n\t\t\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"stats-values-loader-container\">\n\t\t\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"stats-loader-container\">\n\t\t\t\t<div class=\"specific-stat-loader-container\">\n\t\t\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"stats-values-loader-container\">\n\t\t\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</ng-template>\n","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\n\n@Component({\n\tselector: 'cr-result-disclaimer',\n\ttemplateUrl: './cr-result-disclaimer.component.html',\n\tstyleUrls: ['./cr-result-disclaimer.component.scss'],\n\tstandalone: false,\n})\nexport class CrResultDisclaimerComponent implements OnInit {\n\t@Output() onCloseDisclaimer: EventEmitter<any> = new EventEmitter<any>();\n\n\tconstructor() {}\n\n\tngOnInit(): void {}\n\n\tcloseDisclaimer() {\n\t\tthis.onCloseDisclaimer.emit(null);\n\t}\n}\n\n@Component({\n\tselector: 'cr-result-disclaimer-title',\n\ttemplate: `\n\t\t<ng-content></ng-content>\n\t`,\n\tstyleUrls: [],\n\tstandalone: false,\n})\nexport class CrResultDisclaimerTitleComponent implements OnInit {\n\tconstructor() {}\n\n\tngOnInit(): void {}\n}\n\n@Component({\n\tselector: 'cr-result-disclaimer-description',\n\ttemplate: `\n\t\t<ng-content></ng-content>\n\t`,\n\tstyleUrls: [],\n\tstandalone: false,\n})\nexport class CrResultDisclaimerDescriptionComponent implements OnInit {\n\tconstructor() {}\n\n\tngOnInit(): void {}\n}\n","<div class=\"title-container\">\n\t<ng-content select=\"cr-result-disclaimer-title\"></ng-content>\n\t<mat-icon\n\t\tclass=\"close-icon\"\n\t\tmatTooltip=\"Close disclaimer\"\n\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\ti18n-matTooltip\n\t\t(click)=\"closeDisclaimer()\">\n\t\tclose\n\t</mat-icon>\n</div>\n<ng-content select=\"cr-result-disclaimer-description\"></ng-content>\n","import { AfterViewInit, Component, HostBinding, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { EReportMode, EResponsiveLayoutType } from '../../../enums/copyleaks-web-report.enums';\nimport { IResultItem } from './components/models/report-result-item.models';\nimport { ReportDataService } from '../../../services/report-data.service';\n\n@Component({\n\tselector: 'copyleaks-report-results-item-container',\n\ttemplateUrl: './report-results-item-container.component.html',\n\tstyleUrls: ['./report-results-item-container.component.scss'],\n\tstandalone: false,\n})\nexport class ReportResultsItemContainerComponent implements OnInit, AfterViewInit, OnChanges {\n\t@HostBinding('style.display')\n\tdisplayProp = 'flex';\n\n\t@HostBinding('style.flex-grow')\n\tflexGrowProp: number;\n\n\t/**\n\t * @Input {number} Flex grow property - flex-grow\n\t */\n\t@Input() flexGrow: number;\n\n\t/**\n\t * @Input {EResponsiveLayoutType} The responsive layout type of the report.\n\t */\n\t@Input() reportResponsive: EResponsiveLayoutType;\n\n\t/**\n\t * @Input {IResultItem} The result item details to display.\n\t */\n\t@Input() resultItem: IResultItem | null = null;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether to show the excluded results or not.\n\t */\n\t@Input() isMobile: boolean;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether to show the loading view or not.\n\t */\n\t@Input() showLoadingView = false;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether the content has masked text or not.\n\t */\n\t@Input() hasMaskedContent: boolean;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether the content has masked text or not.\n\t */\n\t@Input() hideMaskedContentDisclaimer: { flag: boolean } = {\n\t\tflag: false,\n\t};\n\n\t/**\n\t * @Input {EReportMode} The report mode.\n\t */\n\t@Input() reportMode: EReportMode;\n\n\tconstructor(private _reportDataSvc: ReportDataService) {}\n\n\tngOnInit(): void {}\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif (changes['hideMaskedContentDisclaimer']) {\n\t\t\t// save this property in the local storage to keep the state of the disclaimer\n\t\t\tthis._saveHideFlagInLocalStorage();\n\t\t}\n\t}\n\n\tngAfterViewInit(): void {}\n\n\texcludeResultToggle(resultId: string) {\n\t\tconst isFound = !!this._reportDataSvc.excludedResultsIds?.find(id => id === resultId);\n\t\tif (isFound)\n\t\t\tthis._reportDataSvc.excludedResultsIds$.next([\n\t\t\t\t...(this._reportDataSvc.excludedResultsIds?.filter(id => id !== resultId) ?? []),\n\t\t\t]);\n\t\telse this._reportDataSvc.excludedResultsIds$.next([...(this._reportDataSvc.excludedResultsIds ?? []), resultId]);\n\t}\n\n\tcloseDisclaimer() {\n\t\tthis.hideMaskedContentDisclaimer.flag = true;\n\t\tthis._saveHideFlagInLocalStorage();\n\t}\n\n\tprivate _saveHideFlagInLocalStorage() {\n\t\ttry {\n\t\t\tlocalStorage.setItem('hideMaskedContentDisclaimer', JSON.stringify(this.hideMaskedContentDisclaimer));\n\t\t} catch (error) {\n\t\t\tconsole.error('Error saving disclaimer hide flag in local storage: ', error);\n\t\t}\n\t}\n\n\t//#endregion\n\tngOnDestroy() {}\n}\n","<cr-report-expand-result-item\n\t[resultItem]=\"resultItem\"\n\t[showLoadingView]=\"showLoadingView\"\n\t(excludeResultEvent)=\"excludeResultToggle($event)\"></cr-report-expand-result-item>\n\n<ng-container *ngIf=\"hasMaskedContent && !hideMaskedContentDisclaimer.flag\">\n\t<cr-result-disclaimer (onCloseDisclaimer)=\"closeDisclaimer()\">\n\t\t<cr-result-disclaimer-title>\n\t\t\t<div class=\"disclaimer-title-content-container\">\n\t\t\t\t<div class=\"svg-container\">\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 22 22\" fill=\"none\">\n\t\t\t\t\t\t<path\n\t\t\t\t\t\t\td=\"M8.24991 14.6667L7.49366 17.6688C7.44783 17.8674 7.34852 18.0278 7.19575 18.15C7.04297 18.2722 6.85963 18.3334 6.64575 18.3334C6.35547 18.3334 6.11866 18.2188 5.93533 17.9896C5.752 17.7604 5.69852 17.5084 5.77491 17.2334L6.41658 14.6667H3.91866C3.61311 14.6667 3.36866 14.5483 3.18533 14.3115C3.002 14.0747 2.94852 13.8111 3.02491 13.5209C3.07075 13.307 3.17769 13.1389 3.34575 13.0167C3.5138 12.8945 3.70477 12.8334 3.91866 12.8334H6.87491L7.79158 9.16669H5.29366C4.98811 9.16669 4.74366 9.04828 4.56033 8.81148C4.377 8.57467 4.32352 8.31113 4.39991 8.02085C4.44575 7.80696 4.55269 7.63891 4.72075 7.51669C4.8888 7.39446 5.07977 7.33335 5.29366 7.33335H8.24991L9.00616 4.33127C9.052 4.13266 9.1513 3.97224 9.30408 3.85002C9.45686 3.7278 9.64019 3.66669 9.85408 3.66669C10.1444 3.66669 10.3812 3.78127 10.5645 4.01044C10.7478 4.2396 10.8013 4.49169 10.7249 4.76669L10.0832 7.33335H13.7499L14.5062 4.33127C14.552 4.13266 14.6513 3.97224 14.8041 3.85002C14.9569 3.7278 15.1402 3.66669 15.3541 3.66669C15.6444 3.66669 15.8812 3.78127 16.0645 4.01044C16.2478 4.2396 16.3013 4.49169 16.2249 4.76669L15.5832 7.33335H18.0812C18.3867 7.33335 18.6312 7.45176 18.8145 7.68856C18.9978 7.92537 19.0513 8.18891 18.9749 8.47919C18.9291 8.69308 18.8221 8.86113 18.6541 8.98335C18.486 9.10558 18.2951 9.16669 18.0812 9.16669H15.1249L14.2082 12.8334H16.7062C17.0117 12.8334 17.2562 12.9518 17.4395 13.1886C17.6228 13.4254 17.6763 13.6889 17.5999 13.9792C17.5541 14.1931 17.4471 14.3611 17.2791 14.4834C17.111 14.6056 16.9201 14.6667 16.7062 14.6667H13.7499L12.9937 17.6688C12.9478 17.8674 12.8485 18.0278 12.6957 18.15C12.543 18.2722 12.3596 18.3334 12.1457 18.3334C11.8555 18.3334 11.6187 18.2188 11.4353 17.9896C11.252 17.7604 11.1985 17.5084 11.2749 17.2334L11.9166 14.6667H8.24991ZM8.70825 12.8334H12.3749L13.2916 9.16669H9.62491L8.70825 12.8334Z\"\n\t\t\t\t\t\t\tfill=\"#3F9AF5\" />\n\t\t\t\t\t</svg>\n\t\t\t\t</div>\n\t\t\t\t<span web-report-title-font i18n>This Result is Hidden Due to Privacy Policies</span>\n\t\t\t</div>\n\t\t</cr-result-disclaimer-title>\n\n\t\t<cr-result-disclaimer-description i18n>\n\t\t\tTo protect our user data we mask Shared Data Hub results from outside of your organization that contain identical,\n\t\t\tminor changes, or paraphrased text passages. The highlighting appears to show that similar content has been found\n\t\t\thowever we cannot show the exact text from the user.\n\t\t</cr-result-disclaimer-description>\n\t</cr-result-disclaimer>\n</ng-container>\n","import {\n\tChangeDetectorRef,\n\tComponent,\n\tInput,\n\tOnChanges,\n\tOnDestroy,\n\tOnInit,\n\tSimpleChanges,\n\tTemplateRef,\n} from '@angular/core';\nimport { EReportMode, EReportScoreTooltipPosition, EReportViewType } from '../../../enums/copyleaks-web-report.enums';\nimport { ReportViewService } from '../../../services/report-view.service';\nimport { ALERTS } from '../../../constants/report-alerts.constants';\nimport { ReportNgTemplatesService } from '../../../services/report-ng-templates.service';\nimport { untilDestroy } from '../../../utils/until-destroy';\nimport { ReportMatchHighlightService } from '../../../services/report-match-highlight.service';\nimport { ReportDataService } from '../../../services/report-data.service';\nimport { trigger, state, transition, animate, style } from '@angular/animations';\n\n@Component({\n\tselector: 'copyleaks-report-tabs-container',\n\ttemplateUrl: './report-tabs-container.component.html',\n\tstyleUrls: ['./report-tabs-container.component.scss'],\n\tanimations: [\n\t\ttrigger('fadeIn', [\n\t\t\tstate('void', style({ opacity: 0 })),\n\t\t\ttransition(':enter', [animate('0.5s ease-in', style({ opacity: 1 }))]),\n\t\t]),\n\t],\n\tstandalone: false,\n})\nexport class ReportTabsContainerComponent implements OnInit, OnDestroy, OnChanges {\n\t/**\n\t * @Input {boolean} Flag indicating whether to show the report AI tab or not.\n\t */\n\t@Input() selectedTap: EReportViewType | undefined = EReportViewType.PlagiarismView;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether to show the report AI tab or not.\n\t */\n\t@Input() wordsTotal: number = 0;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether to show the report AI tab or not.\n\t */\n\t@Input() identicalTotal: number = 0;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether to show the report AI tab or not.\n\t */\n\t@Input() minorChangesTotal: number = 0;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether to show the report AI tab or not.\n\t */\n\t@Input() paraphrasedTotal: number = 0;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether to show the report AI tab or not.\n\t */\n\t@Input() excludedTotal: number = 0;\n\n\t/**\n\t * @Input {number} The report plagiarism score.\n\t */\n\t@Input() plagarismScore: number = 0;\n\n\t/**\n\t * @Input {number} The report AI score.\n\t */\n\t@Input() aiScore: number = 0;\n\n\t/**\n\t * @Input {number} The report Writing Feedback score.\n\t */\n\t@Input() writingFeedbackScore: number = 0;\n\n\t/**\n\t * @Input {number} The report Writing Feedback total issues.\n\t */\n\t@Input() totalWritingFeedbackIssues: number = 0;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether to show the report Plagiarism tab or not.\n\t */\n\t@Input() hidePlagarismTap = false;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether to show the report AI tab or not.\n\t */\n\t@Input() hideAiTap = false;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether to show the report Writing Feedback tab or not.\n\t */\n\t@Input() hideWritingFeedbackTap = false;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether to show the loading view or not.\n\t */\n\t@Input() showLoadingView = false;\n\n\t/**\n\t * @Input {boolean} - Flag indicating whether to still show the disabled products tabs.\n\t */\n\t@Input() showDisabledProducts: boolean = false;\n\n\t/**\n\t * @Input {number} - The current scan progress percentage.\n\t */\n\t@Input() loadingProgressPct: number = 0;\n\n\t/**\n\t * @Input {string} - Link for the company logo image to display in the tabs panel.\n\t */\n\t@Input() companyLogo: string = null;\n\n\t/**\n\t * @Input {string} - Flag indicating whether to show the Writing Feedback tab with total number of issues or not (with score percentage).\n\t */\n\t@Input() showWritingFeedbackIssues: boolean = true;\n\n\t@Input() isMobile: boolean = false;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether to force the Writing Feedback tab to hide or not.\n\t */\n\t@Input() forceWritingFeedbackTapHide = false;\n\n\t@Input() reportMode: EReportMode;\n\n\tEReportMode = EReportMode;\n\n\tEReportViewType = EReportViewType;\n\tEReportScoreTooltipPosition = EReportScoreTooltipPosition;\n\tcustomTabsTemplateRef: TemplateRef<any>[] | undefined = undefined;\n\n\t// constants\n\tDISABLED: string = $localize`Disabled`;\n\n\ttotalAiWords: number = 0;\n\ttotalHumanWords: number = 0;\n\n\tplagarismScoreChartColorScheme = {\n\t\tdomain: ['#fd7366', '#ffb1b1', '#fed5a9', '#EBF3F5'],\n\t};\n\n\taiScoreChartColorScheme = {\n\t\tdomain: ['#c1addc', '#EBF3F5'],\n\t};\n\n\tplagarismScoreChartData = [];\n\n\taiScoreChartData = [];\n\tdocDirection: 'ltr' | 'rtl';\n\n\tconstructor(\n\t\tpublic reportViewSvc: ReportViewService,\n\t\tpublic reportDataSvc: ReportDataService,\n\t\tprivate _reportNgTemplatesSvc: ReportNgTemplatesService,\n\t\tprivate cdr: ChangeDetectorRef,\n\t\tprivate _matchSvc: ReportMatchHighlightService\n\t) {}\n\n\tngOnInit(): void {\n\t\tthis._reportNgTemplatesSvc.reportTemplatesSubject$.pipe(untilDestroy(this)).subscribe(refs => {\n\t\t\tif (refs?.customTabsTemplates !== undefined && this.customTabsTemplateRef == undefined) {\n\t\t\t\tthis.customTabsTemplateRef = refs?.customTabsTemplates?.map(\n\t\t\t\t\tctt => ctt.customTabTitleTemplates as TemplateRef<any>\n\t\t\t\t);\n\t\t\t\tthis.cdr.detectChanges();\n\t\t\t}\n\t\t});\n\n\t\tthis.reportViewSvc.selectedCustomTabContent$.pipe(untilDestroy(this)).subscribe(content => {\n\t\t\tthis.selectedTap = content ? EReportViewType.CustomTabView : this.selectedTap;\n\t\t});\n\n\t\tthis.reportViewSvc.documentDirection$.pipe(untilDestroy(this)).subscribe(dir => {\n\t\t\tthis.docDirection = dir;\n\t\t});\n\t}\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif (\n\t\t\t'showDisabledProducts' in changes ||\n\t\t\t'hidePlagarismTap' in changes ||\n\t\t\t'hideAiTap' in changes ||\n\t\t\t'hideWritingFeedbackTap' in changes ||\n\t\t\t('showLoadingView' in changes && changes['showLoadingView'].currentValue === false)\n\t\t) {\n\t\t\tif (\n\t\t\t\t(!this.showLoadingView &&\n\t\t\t\t\tthis.showDisabledProducts &&\n\t\t\t\t\t!this.hidePlagarismTap &&\n\t\t\t\t\tthis.hideAiTap &&\n\t\t\t\t\tthis.hideWritingFeedbackTap) ||\n\t\t\t\t(!this.showLoadingView && !this.hidePlagarismTap && this.hideAiTap && this.hideWritingFeedbackTap)\n\t\t\t) {\n\t\t\t\tthis.selectedTap = EReportViewType.PlagiarismView;\n\t\t\t\tthis.reportViewSvc.selectedAlert$.next(null);\n\t\t\t\tthis.reportViewSvc.reportViewMode$.next({ ...this.reportViewSvc.reportViewMode, alertCode: undefined });\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t!this.showLoadingView &&\n\t\t\t\tthis.hidePlagarismTap &&\n\t\t\t\t!this.hideAiTap &&\n\t\t\t\t!(this.selectedTap === EReportViewType.WritingFeedbackTabView && !this.hideWritingFeedbackTap)\n\t\t\t) {\n\t\t\t\tthis.selectedTap = EReportViewType.AIView;\n\t\t\t\tthis.reportViewSvc.selectedAlert$.next(ALERTS.SUSPECTED_AI_TEXT_DETECTED);\n\t\t\t\tthis.reportViewSvc.reportViewMode$.next({\n\t\t\t\t\t...this.reportViewSvc.reportViewMode,\n\t\t\t\t\tviewMode: 'one-to-many',\n\t\t\t\t\talertCode: ALERTS.SUSPECTED_AI_TEXT_DETECTED,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (!this.showLoadingView && this.hidePlagarismTap && this.hideAiTap && !this.hideWritingFeedbackTap) {\n\t\t\t\tthis.selectedTap = EReportViewType.WritingFeedbackTabView;\n\t\t\t\tthis.reportViewSvc.selectedAlert$.next(null);\n\n\t\t\t\tthis.reportViewSvc.reportViewMode$.next({\n\t\t\t\t\t...this.reportViewSvc.reportViewMode,\n\t\t\t\t\talertCode: undefined,\n\t\t\t\t\tviewMode: 'writing-feedback',\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t!this.showLoadingView &&\n\t\t\t\tthis.hideWritingFeedbackTap &&\n\t\t\t\tthis.selectedTap === EReportViewType.WritingFeedbackTabView\n\t\t\t) {\n\t\t\t\tthis.selectedTap = !this.hidePlagarismTap\n\t\t\t\t\t? EReportViewType.PlagiarismView\n\t\t\t\t\t: !this.hideAiTap\n\t\t\t\t\t? EReportViewType.AIView\n\t\t\t\t\t: null;\n\n\t\t\t\tthis.reportViewSvc.reportViewMode$.next({\n\t\t\t\t\t...this.reportViewSvc.reportViewMode,\n\t\t\t\t\tviewMode: 'one-to-many',\n\t\t\t\t\talertCode: !this.hidePlagarismTap\n\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t: !this.hideAiTap\n\t\t\t\t\t\t? ALERTS.SUSPECTED_AI_TEXT_DETECTED\n\t\t\t\t\t\t: undefined,\n\t\t\t\t});\n\t\t\t\tthis.reportViewSvc.selectedAlert$.next(\n\t\t\t\t\t!this.hidePlagarismTap ? null : !this.hideAiTap ? ALERTS.SUSPECTED_AI_TEXT_DETECTED : null\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (this.isMobile && 'selectedTap' in changes) this._updateSelectedTabColors();\n\n\t\tthis.totalAiWords = Math.ceil(this.aiScore * ((this.wordsTotal ?? 0) - (this.excludedTotal ?? 0)));\n\t\tthis.totalHumanWords = Math.ceil((this.wordsTotal ?? 0) - (this.excludedTotal ?? 0) - (this.totalAiWords ?? 0));\n\n\t\tif (\n\t\t\tthis.isMobile &&\n\t\t\t('aiScore' in changes ||\n\t\t\t\t'paraphrasedTotal' in changes ||\n\t\t\t\t'minorChangesTotal' in changes ||\n\t\t\t\t'identicalTotal' in changes ||\n\t\t\t\t'wordsTotal' in changes ||\n\t\t\t\t('showLoadingView' in changes && changes['showLoadingView'].currentValue === false))\n\t\t) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.plagarismScoreChartData = [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Identical',\n\t\t\t\t\t\tvalue: this.identicalTotal,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Minor Changes',\n\t\t\t\t\t\tvalue: this.minorChangesTotal,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Paraphrased',\n\t\t\t\t\t\tvalue: this.paraphrasedTotal,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Left',\n\t\t\t\t\t\tvalue:\n\t\t\t\t\t\t\tthis.wordsTotal -\n\t\t\t\t\t\t\tthis.excludedTotal -\n\t\t\t\t\t\t\tthis.identicalTotal -\n\t\t\t\t\t\t\tthis.minorChangesTotal -\n\t\t\t\t\t\t\tthis.paraphrasedTotal,\n\t\t\t\t\t},\n\t\t\t\t];\n\n\t\t\t\tthis.aiScoreChartData = [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'AI',\n\t\t\t\t\t\tvalue: this.totalAiWords,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Human',\n\t\t\t\t\t\tvalue: this.wordsTotal - this.totalAiWords,\n\t\t\t\t\t},\n\t\t\t\t];\n\t\t\t});\n\t\t}\n\t}\n\n\tselectTap(selectedTab: EReportViewType) {\n\t\tif (\n\t\t\tselectedTab == this.selectedTap ||\n\t\t\t(selectedTab === EReportViewType.PlagiarismView && this.hidePlagarismTap && this.showDisabledProducts) ||\n\t\t\t(selectedTab === EReportViewType.AIView && this.hideAiTap && this.showDisabledProducts) ||\n\t\t\t(selectedTab === EReportViewType.WritingFeedbackTabView &&\n\t\t\t\tthis.hideWritingFeedbackTap &&\n\t\t\t\tthis.showDisabledProducts) ||\n\t\t\tthis.loadingProgressPct != 100\n\t\t)\n\t\t\treturn;\n\n\t\tthis.selectedTap = selectedTab;\n\t\tthis._matchSvc.clear();\n\n\t\tswitch (selectedTab) {\n\t\t\tcase EReportViewType.AIView:\n\t\t\t\tthis.reportViewSvc.reportViewMode$.next({\n\t\t\t\t\t...this.reportViewSvc.reportViewMode,\n\t\t\t\t\tviewMode: 'one-to-many',\n\t\t\t\t\tisHtmlView: !!this.reportDataSvc.crawledVersion?.html?.value,\n\t\t\t\t\talertCode: ALERTS.SUSPECTED_AI_TEXT_DETECTED,\n\t\t\t\t\tsourcePageIndex: 1,\n\t\t\t\t\tsuspectPageIndex: 1,\n\t\t\t\t\tselectedCustomTabId: undefined,\n\t\t\t\t\tnavigateBackToAIView: false,\n\t\t\t\t});\n\t\t\t\tthis.reportViewSvc.selectedAlert$.next(ALERTS.SUSPECTED_AI_TEXT_DETECTED);\n\t\t\t\tthis.reportViewSvc.selectedCustomTabContent$.next(null);\n\t\t\t\tthis.reportViewSvc.selectedCustomTabResultSectionContent$.next(null);\n\n\t\t\t\tbreak;\n\t\t\tcase EReportViewType.PlagiarismView:\n\t\t\t\tthis.reportViewSvc.reportViewMode$.next({\n\t\t\t\t\t...this.reportViewSvc.reportViewMode,\n\t\t\t\t\tviewMode: 'one-to-many',\n\t\t\t\t\talertCode: undefined,\n\t\t\t\t\tsourcePageIndex: 1,\n\t\t\t\t\tsuspectPageIndex: 1,\n\t\t\t\t\tselectedCustomTabId: undefined,\n\t\t\t\t\tisHtmlView: !!this.reportDataSvc.crawledVersion?.html?.value,\n\t\t\t\t});\n\t\t\t\tthis.reportViewSvc.selectedAlert$.next(null);\n\t\t\t\tthis.reportViewSvc.selectedCustomTabContent$.next(null);\n\t\t\t\tthis.reportViewSvc.selectedCustomTabResultSectionContent$.next(null);\n\t\t\t\tbreak;\n\t\t\tcase EReportViewType.WritingFeedbackTabView:\n\t\t\t\tthis.reportViewSvc.reportViewMode$.next({\n\t\t\t\t\t...this.reportViewSvc.reportViewMode,\n\t\t\t\t\tviewMode: 'writing-feedback',\n\t\t\t\t\talertCode: undefined,\n\t\t\t\t\tsourcePageIndex: 1,\n\t\t\t\t\tsuspectPageIndex: 1,\n\t\t\t\t\tselectedCustomTabId: undefined,\n\t\t\t\t\tisHtmlView: !!this.reportDataSvc.crawledVersion?.html?.value,\n\t\t\t\t});\n\t\t\t\tthis.reportViewSvc.selectedAlert$.next(null);\n\t\t\t\tthis.reportViewSvc.selectedCustomTabContent$.next(null);\n\t\t\t\tthis.reportViewSvc.selectedCustomTabResultSectionContent$.next(null);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tprivate _updateSelectedTabColors() {\n\t\tswitch (this.selectedTap) {\n\t\t\tcase EReportViewType.AIView:\n\t\t\t\tthis.plagarismScoreChartColorScheme = {\n\t\t\t\t\tdomain: ['#fd7366', '#ffb1b1', '#fed5a9', '#FBFFFF'],\n\t\t\t\t};\n\t\t\t\tthis.aiScoreChartColorScheme = {\n\t\t\t\t\tdomain: ['#c1addc', '#EBF3F5'],\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase EReportViewType.PlagiarismView:\n\t\t\t\tthis.plagarismScoreChartColorScheme = {\n\t\t\t\t\tdomain: ['#fd7366', '#ffb1b1', '#fed5a9', '#EBF3F5'],\n\t\t\t\t};\n\t\t\t\tthis.aiScoreChartColorScheme = {\n\t\t\t\t\tdomain: ['#c1addc', '#EBF3F5'],\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase EReportViewType.WritingFeedbackTabView:\n\t\t\t\tthis.plagarismScoreChartColorScheme = {\n\t\t\t\t\tdomain: ['#fd7366', '#ffb1b1', '#fed5a9', '#FBFFFF'],\n\t\t\t\t};\n\t\t\t\tthis.aiScoreChartColorScheme = {\n\t\t\t\t\tdomain: ['#c1addc', '#EBF3F5'],\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tngOnDestroy(): void {}\n}\n","<ng-container [ngSwitch]=\"reportMode\">\n\t<!-- Web Report -->\n\t<ng-container *ngSwitchCase=\"EReportMode.WebReport\">\n\t\t<ng-container *ngIf=\"loadingProgressPct === 100; else realTimeView\">\n\t\t\t<ng-container *ngIf=\"!showLoadingView; else loadingViewRef\">\n\t\t\t\t<ng-container *ngIf=\"companyLogo\">\n\t\t\t\t\t<div @fadeIn class=\"custom-company-logo-cotainer\">\n\t\t\t\t\t\t<img class=\"custom-company-logo\" [src]=\"companyLogo\" alt=\"Company Logo\" i18n-alt />\n\t\t\t\t\t</div>\n\t\t\t\t</ng-container>\n\n\t\t\t\t<a\n\t\t\t\t\t*ngIf=\"!hidePlagarismTap || showDisabledProducts\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\trole=\"button\"\n\t\t\t\t\taria-describedby=\"plagiarism-view-text\"\n\t\t\t\t\t@fadeIn\n\t\t\t\t\tclass=\"tab-plagiarism\"\n\t\t\t\t\t[reportViewService]=\"reportViewSvc\"\n\t\t\t\t\t[crReportScoreTooltip]=\"\n\t\t\t\t\t\thidePlagarismTap && showDisabledProducts\n\t\t\t\t\t\t\t? null\n\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\tidenticalPct: {\n\t\t\t\t\t\t\t\t\t\tpercentage: wordsTotal - excludedTotal === 0 ? 0 : identicalTotal / (wordsTotal - excludedTotal),\n\t\t\t\t\t\t\t\t\t\ttotalWords: identicalTotal ?? 0,\n\t\t\t\t\t\t\t\t\t\tdisabled: reportDataSvc.filterOptions?.showIdentical === false\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tminorChangesPct: {\n\t\t\t\t\t\t\t\t\t\tpercentage: wordsTotal - excludedTotal === 0 ? 0 : minorChangesTotal / (wordsTotal - excludedTotal),\n\t\t\t\t\t\t\t\t\t\ttotalWords: minorChangesTotal ?? 0,\n\t\t\t\t\t\t\t\t\t\tdisabled: reportDataSvc.filterOptions?.showMinorChanges === false\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tparaphrasedPct: {\n\t\t\t\t\t\t\t\t\t\tpercentage: wordsTotal - excludedTotal === 0 ? 0 : paraphrasedTotal / (wordsTotal - excludedTotal),\n\t\t\t\t\t\t\t\t\t\ttotalWords: paraphrasedTotal ?? 0,\n\t\t\t\t\t\t\t\t\t\tdisabled: reportDataSvc.filterOptions?.showRelated === false\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tomittedPct: {\n\t\t\t\t\t\t\t\t\t\tpercentage: excludedTotal / wordsTotal,\n\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\ttotalWords: excludedTotal ?? 0\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\ttotalWords: wordsTotal\n\t\t\t\t\t\t\t  }\n\t\t\t\t\t\"\n\t\t\t\t\t[crReportScoreTooltipPosition]=\"EReportScoreTooltipPosition.BELOW\"\n\t\t\t\t\t[style.flex-grow]=\"1\"\n\t\t\t\t\t[class.tab-selected]=\"selectedTap === EReportViewType.PlagiarismView && !hidePlagarismTap\"\n\t\t\t\t\t[class.tab-disabled]=\"hidePlagarismTap && showDisabledProducts\"\n\t\t\t\t\t[class.with-company-logo]=\"selectedTap === EReportViewType.PlagiarismView && !hidePlagarismTap && companyLogo\"\n\t\t\t\t\t[class.mobile]=\"isMobile\"\n\t\t\t\t\t[matTooltip]=\"hidePlagarismTap && showDisabledProducts ? DISABLED : ''\"\n\t\t\t\t\t[dir]=\"docDirection\"\n\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t\t(click)=\"selectTap(EReportViewType.PlagiarismView)\"\n\t\t\t\t\t(keyup.enter)=\"selectTap(EReportViewType.PlagiarismView)\">\n\t\t\t\t\t<ng-container *ngIf=\"!isMobile; else mobileViewRef\">\n\t\t\t\t\t\t<div class=\"bar-title-container\">\n\t\t\t\t\t\t\t<span id=\"plagiarism-view-text\" class=\"bar-title\" web-report-title-font i18n>Matched Text</span>\n\t\t\t\t\t\t\t<span *ngIf=\"!isMobile\" class=\"bar-score\" web-report-title-font>\n\t\t\t\t\t\t\t\t{{ hidePlagarismTap && showDisabledProducts ? 'N/A' : (plagarismScore | percent : '1.0-1') }}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"grade-bar\">\n\t\t\t\t\t\t\t<div class=\"bar plagiarism\" [style.width.%]=\"100\">\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclass=\"identical\"\n\t\t\t\t\t\t\t\t\t[class.first-percentage]=\"!!identicalTotal\"\n\t\t\t\t\t\t\t\t\t[class.last-percentage]=\"!minorChangesTotal && !paraphrasedTotal\"\n\t\t\t\t\t\t\t\t\t[style.width.%]=\"\n\t\t\t\t\t\t\t\t\t\twordsTotal - excludedTotal === 0 ? 0 : (identicalTotal / (wordsTotal - excludedTotal)) * 100\n\t\t\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t\t\t\t[style.border]=\"!identicalTotal ? 'none' : ''\"></div>\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclass=\"minor-changes\"\n\t\t\t\t\t\t\t\t\t[class.first-percentage]=\"!identicalTotal\"\n\t\t\t\t\t\t\t\t\t[class.last-percentage]=\"!paraphrasedTotal\"\n\t\t\t\t\t\t\t\t\t[style.width.%]=\"\n\t\t\t\t\t\t\t\t\t\twordsTotal - excludedTotal === 0 ? 0 : (minorChangesTotal / (wordsTotal - excludedTotal)) * 100\n\t\t\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t\t\t\t[style.border]=\"!minorChangesTotal ? 'none' : ''\"></div>\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclass=\"paraphrased last-percentage\"\n\t\t\t\t\t\t\t\t\t[class.first-percentage]=\"!identicalTotal && !minorChangesTotal\"\n\t\t\t\t\t\t\t\t\t[style.width.%]=\"\n\t\t\t\t\t\t\t\t\t\twordsTotal - excludedTotal === 0 ? 0 : (paraphrasedTotal / (wordsTotal - excludedTotal)) * 100\n\t\t\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t\t\t\t[style.border]=\"!paraphrasedTotal ? 'none' : ''\"></div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</ng-container>\n\t\t\t\t\t<ng-template #mobileViewRef>\n\t\t\t\t\t\t<div class=\"mobile-tab-container\">\n\t\t\t\t\t\t\t<div class=\"charts-container\">\n\t\t\t\t\t\t\t\t<ng-container *ngIf=\"!hidePlagarismTap; else NaViewRef\">\n\t\t\t\t\t\t\t\t\t<ngx-charts-pie-chart\n\t\t\t\t\t\t\t\t\t\t[results]=\"plagarismScoreChartData\"\n\t\t\t\t\t\t\t\t\t\t[view]=\"[90, 90]\"\n\t\t\t\t\t\t\t\t\t\t[legend]=\"false\"\n\t\t\t\t\t\t\t\t\t\t[labels]=\"false\"\n\t\t\t\t\t\t\t\t\t\t[arcWidth]=\"0.2\"\n\t\t\t\t\t\t\t\t\t\t[scheme]=\"plagarismScoreChartColorScheme\"\n\t\t\t\t\t\t\t\t\t\t[tooltipDisabled]=\"true\"\n\t\t\t\t\t\t\t\t\t\t[doughnut]=\"true\"\n\t\t\t\t\t\t\t\t\t\t[gradient]=\"true\"\n\t\t\t\t\t\t\t\t\t\t[explodeSlices]=\"true\"></ngx-charts-pie-chart>\n\t\t\t\t\t\t\t\t\t<span class=\"mobile-tab-score\" web-report-title-font i18n>\n\t\t\t\t\t\t\t\t\t\t{{ plagarismScore | percent : '1.0-1' }}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</ng-container>\n\n\t\t\t\t\t\t\t\t<ng-template #NaViewRef>\n\t\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\t\tclass=\"na-border-pic\"\n\t\t\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\t\t\twidth=\"51\"\n\t\t\t\t\t\t\t\t\t\theight=\"50\"\n\t\t\t\t\t\t\t\t\t\tviewBox=\"0 0 51 50\"\n\t\t\t\t\t\t\t\t\t\tfill=\"none\">\n\t\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\t\td=\"M25.6665 3.5C22.8431 3.5 20.0473 4.05611 17.4388 5.13659C14.8303 6.21706 12.4602 7.80074 10.4637 9.7972C8.46726 11.7937 6.88358 14.1638 5.8031 16.7723C4.72262 19.3808 4.16651 22.1766 4.1665 25C4.1665 27.8234 4.72262 30.6192 5.80309 33.2277C6.88357 35.8362 8.46724 38.2063 10.4637 40.2028C12.4602 42.1992 14.8303 43.7829 17.4388 44.8634C20.0473 45.9439 22.8431 46.5 25.6665 46.5C28.4899 46.5 31.2857 45.9439 33.8942 44.8634C36.5027 43.7829 38.8728 42.1993 40.8693 40.2028C42.8658 38.2063 44.4494 35.8362 45.5299 33.2277C46.6104 30.6192 47.1665 27.8234 47.1665 25C47.1665 22.1766 46.6104 19.3808 45.5299 16.7723C44.4494 14.1638 42.8658 11.7937 40.8693 9.7972C38.8728 7.80075 36.5027 6.21707 33.8942 5.13659C31.2857 4.05611 28.4899 3.5 25.6665 3.5ZM16.2908 2.36495C19.2633 1.13371 22.4491 0.499998 25.6665 0.5C28.8839 0.5 32.0698 1.13371 35.0422 2.36495C38.0147 3.59619 40.7156 5.40085 42.9906 7.67589C45.2657 9.95092 47.0703 12.6518 48.3016 15.6243C49.5328 18.5967 50.1665 21.7826 50.1665 25C50.1665 28.2174 49.5328 31.4033 48.3015 34.3757C47.0703 37.3482 45.2657 40.0491 42.9906 42.3241C40.7156 44.5992 38.0147 46.4038 35.0422 47.6351C32.0698 48.8663 28.8839 49.5 25.6665 49.5C22.4491 49.5 19.2632 48.8663 16.2908 47.635C13.3183 46.4038 10.6174 44.5991 8.34238 42.3241C6.06735 40.0491 4.26269 37.3482 3.03145 34.3757C1.80021 31.4033 1.1665 28.2174 1.1665 25C1.1665 21.7826 1.80022 18.5967 3.03146 15.6242C4.2627 12.6518 6.06736 9.95091 8.3424 7.67587C10.6174 5.40084 13.3183 3.59618 16.2908 2.36495Z\"\n\t\t\t\t\t\t\t\t\t\t\tfill=\"#FBFFFF\"\n\t\t\t\t\t\t\t\t\t\t\tstroke=\"#9DA9BF\" />\n\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t\t<span class=\"na-border-text\" web-report-title-font i18n>N/A</span>\n\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<span class=\"mobile-tab-title\" web-report-title-font i18n>Matched Text</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</ng-template>\n\t\t\t\t</a>\n\n\t\t\t\t<a\n\t\t\t\t\t*ngIf=\"!hideAiTap || showDisabledProducts\"\n\t\t\t\t\t@fadeIn\n\t\t\t\t\trole=\"button\"\n\t\t\t\t\taria-describedby=\"AI-view-text\"\n\t\t\t\t\tclass=\"tab-ai\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t[reportViewService]=\"reportViewSvc\"\n\t\t\t\t\t[crReportScoreTooltip]=\"\n\t\t\t\t\t\thideAiTap && showDisabledProducts\n\t\t\t\t\t\t\t? null\n\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\taiPct: {\n\t\t\t\t\t\t\t\t\t\tpercentage: wordsTotal - excludedTotal === 0 ? 0 : totalAiWords / (wordsTotal - excludedTotal),\n\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\ttotalWords: totalAiWords ?? 0\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\thumanPct: {\n\t\t\t\t\t\t\t\t\t\tpercentage: wordsTotal - excludedTotal === 0 ? 0 : totalHumanWords / (wordsTotal - excludedTotal),\n\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\ttotalWords: totalHumanWords\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tomittedPct: {\n\t\t\t\t\t\t\t\t\t\tpercentage: excludedTotal / wordsTotal,\n\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\ttotalWords: excludedTotal ?? 0\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\ttotalWords: wordsTotal\n\t\t\t\t\t\t\t  }\n\t\t\t\t\t\"\n\t\t\t\t\t[crReportScoreTooltipPosition]=\"EReportScoreTooltipPosition.BELOW\"\n\t\t\t\t\t[style.flex-grow]=\"1\"\n\t\t\t\t\t[class.tab-selected]=\"selectedTap === EReportViewType.AIView && !hideAiTap\"\n\t\t\t\t\t[class.tab-disabled]=\"hideAiTap && showDisabledProducts\"\n\t\t\t\t\t[class.with-company-logo]=\"\n\t\t\t\t\t\tselectedTap === EReportViewType.AIView && !hideAiTap && hidePlagarismTap && companyLogo\n\t\t\t\t\t\"\n\t\t\t\t\t[class.mobile]=\"isMobile\"\n\t\t\t\t\t[dir]=\"docDirection\"\n\t\t\t\t\t[matTooltip]=\"hideAiTap && showDisabledProducts ? DISABLED : ''\"\n\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t\t(click)=\"selectTap(EReportViewType.AIView)\"\n\t\t\t\t\t(keyup.enter)=\"selectTap(EReportViewType.AIView)\">\n\t\t\t\t\t<ng-container *ngIf=\"!isMobile; else mobileViewRef\">\n\t\t\t\t\t\t<div class=\"bar-title-container\">\n\t\t\t\t\t\t\t<span id=\"AI-view-text\" class=\"bar-title\" web-report-title-font i18n>AI Content</span>\n\t\t\t\t\t\t\t<span *ngIf=\"!isMobile\" class=\"bar-score\" web-report-title-font>\n\t\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\t\thideAiTap && showDisabledProducts\n\t\t\t\t\t\t\t\t\t\t? 'N/A'\n\t\t\t\t\t\t\t\t\t\t: wordsTotal - excludedTotal === 0\n\t\t\t\t\t\t\t\t\t\t? 0\n\t\t\t\t\t\t\t\t\t\t: (totalAiWords / (wordsTotal - excludedTotal) | percent : '1.0-1')\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div *ngIf=\"!isMobile\" class=\"grade-bar\">\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclass=\"bar ai-content\"\n\t\t\t\t\t\t\t\t[style.width.%]=\"\n\t\t\t\t\t\t\t\t\t(wordsTotal - excludedTotal === 0 ? 0 : totalAiWords / (wordsTotal - excludedTotal)) * 100\n\t\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t\t\t[style.border]=\"\n\t\t\t\t\t\t\t\t\t!(wordsTotal - excludedTotal === 0 ? 0 : totalAiWords / (wordsTotal - excludedTotal)) ? 'none' : ''\n\t\t\t\t\t\t\t\t\"></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</ng-container>\n\t\t\t\t\t<ng-template #mobileViewRef>\n\t\t\t\t\t\t<div class=\"mobile-tab-container\">\n\t\t\t\t\t\t\t<div class=\"charts-container\">\n\t\t\t\t\t\t\t\t<ng-container *ngIf=\"!hideAiTap; else NaViewRef\">\n\t\t\t\t\t\t\t\t\t<ngx-charts-pie-chart\n\t\t\t\t\t\t\t\t\t\t[results]=\"aiScoreChartData\"\n\t\t\t\t\t\t\t\t\t\t[view]=\"[90, 90]\"\n\t\t\t\t\t\t\t\t\t\t[legend]=\"false\"\n\t\t\t\t\t\t\t\t\t\t[labels]=\"false\"\n\t\t\t\t\t\t\t\t\t\t[arcWidth]=\"0.2\"\n\t\t\t\t\t\t\t\t\t\t[scheme]=\"aiScoreChartColorScheme\"\n\t\t\t\t\t\t\t\t\t\t[tooltipDisabled]=\"true\"\n\t\t\t\t\t\t\t\t\t\t[doughnut]=\"true\"></ngx-charts-pie-chart>\n\t\t\t\t\t\t\t\t\t<span class=\"mobile-tab-score\" web-report-title-font i18n>\n\t\t\t\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\t\t\t\twordsTotal - excludedTotal === 0\n\t\t\t\t\t\t\t\t\t\t\t\t? 0\n\t\t\t\t\t\t\t\t\t\t\t\t: (totalAiWords / (wordsTotal - excludedTotal) | percent : '1.0-1')\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t<ng-template #NaViewRef>\n\t\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\t\tclass=\"na-border-pic\"\n\t\t\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\t\t\twidth=\"51\"\n\t\t\t\t\t\t\t\t\t\theight=\"50\"\n\t\t\t\t\t\t\t\t\t\tviewBox=\"0 0 51 50\"\n\t\t\t\t\t\t\t\t\t\tfill=\"none\">\n\t\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\t\td=\"M25.6665 3.5C22.8431 3.5 20.0473 4.05611 17.4388 5.13659C14.8303 6.21706 12.4602 7.80074 10.4637 9.7972C8.46726 11.7937 6.88358 14.1638 5.8031 16.7723C4.72262 19.3808 4.16651 22.1766 4.1665 25C4.1665 27.8234 4.72262 30.6192 5.80309 33.2277C6.88357 35.8362 8.46724 38.2063 10.4637 40.2028C12.4602 42.1992 14.8303 43.7829 17.4388 44.8634C20.0473 45.9439 22.8431 46.5 25.6665 46.5C28.4899 46.5 31.2857 45.9439 33.8942 44.8634C36.5027 43.7829 38.8728 42.1993 40.8693 40.2028C42.8658 38.2063 44.4494 35.8362 45.5299 33.2277C46.6104 30.6192 47.1665 27.8234 47.1665 25C47.1665 22.1766 46.6104 19.3808 45.5299 16.7723C44.4494 14.1638 42.8658 11.7937 40.8693 9.7972C38.8728 7.80075 36.5027 6.21707 33.8942 5.13659C31.2857 4.05611 28.4899 3.5 25.6665 3.5ZM16.2908 2.36495C19.2633 1.13371 22.4491 0.499998 25.6665 0.5C28.8839 0.5 32.0698 1.13371 35.0422 2.36495C38.0147 3.59619 40.7156 5.40085 42.9906 7.67589C45.2657 9.95092 47.0703 12.6518 48.3016 15.6243C49.5328 18.5967 50.1665 21.7826 50.1665 25C50.1665 28.2174 49.5328 31.4033 48.3015 34.3757C47.0703 37.3482 45.2657 40.0491 42.9906 42.3241C40.7156 44.5992 38.0147 46.4038 35.0422 47.6351C32.0698 48.8663 28.8839 49.5 25.6665 49.5C22.4491 49.5 19.2632 48.8663 16.2908 47.635C13.3183 46.4038 10.6174 44.5991 8.34238 42.3241C6.06735 40.0491 4.26269 37.3482 3.03145 34.3757C1.80021 31.4033 1.1665 28.2174 1.1665 25C1.1665 21.7826 1.80022 18.5967 3.03146 15.6242C4.2627 12.6518 6.06736 9.95091 8.3424 7.67587C10.6174 5.40084 13.3183 3.59618 16.2908 2.36495Z\"\n\t\t\t\t\t\t\t\t\t\t\tfill=\"#FBFFFF\"\n\t\t\t\t\t\t\t\t\t\t\tstroke=\"#9DA9BF\" />\n\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t\t<span class=\"na-border-text\" web-report-title-font i18n>N/A</span>\n\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<span class=\"mobile-tab-title\" web-report-title-font i18n>AI Content</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</ng-template>\n\t\t\t\t</a>\n\n\t\t\t\t<a\n\t\t\t\t\t*ngIf=\"(!hideWritingFeedbackTap || showDisabledProducts) && !forceWritingFeedbackTapHide\"\n\t\t\t\t\t@fadeIn\n\t\t\t\t\tclass=\"tab-grammar\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\trole=\"button\"\n\t\t\t\t\taria-describedby=\"WritingFeedback-view-text\"\n\t\t\t\t\t[style.flex-grow]=\"1\"\n\t\t\t\t\t[class.tab-selected]=\"selectedTap === EReportViewType.WritingFeedbackTabView && !hideWritingFeedbackTap\"\n\t\t\t\t\t[class.tab-disabled]=\"hideWritingFeedbackTap && showDisabledProducts\"\n\t\t\t\t\t[class.with-company-logo]=\"\n\t\t\t\t\t\tselectedTap === EReportViewType.WritingFeedbackTabView &&\n\t\t\t\t\t\t!hideWritingFeedbackTap &&\n\t\t\t\t\t\thideAiTap &&\n\t\t\t\t\t\thidePlagarismTap &&\n\t\t\t\t\t\tcompanyLogo\n\t\t\t\t\t\"\n\t\t\t\t\t[class.mobile]=\"isMobile\"\n\t\t\t\t\t[dir]=\"docDirection\"\n\t\t\t\t\t[matTooltip]=\"hideWritingFeedbackTap && showDisabledProducts ? DISABLED : ''\"\n\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t\t(click)=\"selectTap(EReportViewType.WritingFeedbackTabView)\"\n\t\t\t\t\t(keyup.enter)=\"selectTap(EReportViewType.WritingFeedbackTabView)\">\n\t\t\t\t\t<ng-container *ngIf=\"!isMobile; else mobileViewRef\">\n\t\t\t\t\t\t<div class=\"bar-title-container\">\n\t\t\t\t\t\t\t<span id=\"WritingFeedback-view-text\" class=\"bar-title\" web-report-title-font i18n>Writing Assistant</span>\n\t\t\t\t\t\t\t<span class=\"bar-score\" web-report-title-font>\n\t\t\t\t\t\t\t\t<ng-container *ngIf=\"showWritingFeedbackIssues; else pctRef\" i18n>\n\t\t\t\t\t\t\t\t\t{{ hideWritingFeedbackTap && showDisabledProducts ? 'N/A' : totalWritingFeedbackIssues }}\n\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t<ng-template #pctRef>\n\t\t\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\t\t\thideWritingFeedbackTap && showDisabledProducts ? 'N/A' : (writingFeedbackScore | percent : '1.0-1')\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"grade-bar\" [style.visibility]=\"showWritingFeedbackIssues || !isMobile ? 'hidden' : 'auto'\">\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclass=\"bar grammar-check\"\n\t\t\t\t\t\t\t\t[style.width.%]=\"writingFeedbackScore * 100\"\n\t\t\t\t\t\t\t\t[style.border]=\"!writingFeedbackScore ? 'none' : ''\"></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</ng-container>\n\t\t\t\t\t<ng-template #mobileViewRef>\n\t\t\t\t\t\t<div class=\"mobile-tab-container\">\n\t\t\t\t\t\t\t<div class=\"mobile-tab-score-container\">\n\t\t\t\t\t\t\t\t<ng-container *ngIf=\"!hideWritingFeedbackTap; else NaViewRef\">\n\t\t\t\t\t\t\t\t\t<span class=\"mobile-tab-score\" web-report-title-font>{{ totalWritingFeedbackIssues }}</span>\n\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t<ng-template #NaViewRef>\n\t\t\t\t\t\t\t\t\t<span class=\"na-border-text\" web-report-title-font i18n>N/A</span>\n\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<span class=\"mobile-tab-title\" web-report-title-font>Assistant</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</ng-template>\n\t\t\t\t</a>\n\n\t\t\t\t<ng-container *ngFor=\"let ref of customTabsTemplateRef\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"ref\"></ng-container>\n\t\t\t\t</ng-container>\n\t\t\t</ng-container>\n\n\t\t\t<ng-template #loadingViewRef>\n\t\t\t\t<div class=\"loading-tab first\">\n\t\t\t\t\t<div class=\"bar-title-container\">\n\t\t\t\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 40%\"></ngx-skeleton-loader>\n\t\t\t\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 20%\"></ngx-skeleton-loader>\n\t\t\t\t\t</div>\n\t\t\t\t\t<ngx-skeleton-loader class=\"bar skeleton\" [appearance]=\"'line'\" style=\"width: 100%\"></ngx-skeleton-loader>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"loading-tab\">\n\t\t\t\t\t<div class=\"bar-title-container\">\n\t\t\t\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 40%\"></ngx-skeleton-loader>\n\t\t\t\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 20%\"></ngx-skeleton-loader>\n\t\t\t\t\t</div>\n\t\t\t\t\t<ngx-skeleton-loader class=\"bar skeleton\" [appearance]=\"'line'\" style=\"width: 100%\"></ngx-skeleton-loader>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"loading-tab\">\n\t\t\t\t\t<div class=\"bar-title-container\">\n\t\t\t\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 40%\"></ngx-skeleton-loader>\n\t\t\t\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 20%\"></ngx-skeleton-loader>\n\t\t\t\t\t</div>\n\t\t\t\t\t<ngx-skeleton-loader class=\"bar skeleton\" [appearance]=\"'line'\" style=\"width: 100%\"></ngx-skeleton-loader>\n\t\t\t\t</div>\n\t\t\t</ng-template>\n\t\t</ng-container>\n\n\t\t<ng-template #realTimeView>\n\t\t\t<div\n\t\t\t\tclass=\"tab-plagiarism\"\n\t\t\t\t@fadeIn\n\t\t\t\t[style.flex-grow]=\"1\"\n\t\t\t\t[class.tab-selected]=\"selectedTap === EReportViewType.PlagiarismView && !hidePlagarismTap\"\n\t\t\t\t[class.tab-disabled]=\"hidePlagarismTap && showDisabledProducts\"\n\t\t\t\t[dir]=\"docDirection\"\n\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\">\n\t\t\t\t<div class=\"bar-title-container\">\n\t\t\t\t\t<div class=\"loading-div\"></div>\n\t\t\t\t\t<span class=\"bar-score real-time-view\" web-report-title-font>\n\t\t\t\t\t\t<ng-container i18n>Loading...</ng-container>\n\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t{{ loadingProgressPct + '%' }}\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t\t<mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n\t\t\t</div>\n\t\t</ng-template>\n\t</ng-container>\n\t<!-- Assessment Report -->\n\t<ng-container *ngSwitchCase=\"EReportMode.AssessmentTool\">\n\t\t<div class=\"assessment-tool-container\" [class.mobile]=\"isMobile\">\n\t\t\t<ng-container *ngIf=\"!showLoadingView\">\n\t\t\t\t<ng-container *ngFor=\"let ref of customTabsTemplateRef\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"ref\"></ng-container>\n\t\t\t\t</ng-container>\n\t\t\t</ng-container>\n\n\t\t\t<a\n\t\t\t\tclass=\"matched-text-tab\"\n\t\t\t\t*ngIf=\"!hidePlagarismTap || showDisabledProducts || showLoadingView\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t\trole=\"button\"\n\t\t\t\taria-describedby=\"plagiarism-view-text\"\n\t\t\t\t@fadeIn\n\t\t\t\t[class.tab-selected]=\"selectedTap === EReportViewType.PlagiarismView && !hidePlagarismTap\"\n\t\t\t\t[class.at-tab-disabled]=\"hidePlagarismTap && showDisabledProducts\"\n\t\t\t\t[class.at-tab-enabled]=\"!(hidePlagarismTap && showDisabledProducts)\"\n\t\t\t\t[class.tab-loading]=\"showLoadingView\"\n\t\t\t\t[dir]=\"docDirection\"\n\t\t\t\t[class.mobile]=\"isMobile\"\n\t\t\t\t[matTooltip]=\"hidePlagarismTap && showDisabledProducts ? DISABLED : ''\"\n\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t(click)=\"selectTap(EReportViewType.PlagiarismView)\"\n\t\t\t\t(keyup.enter)=\"selectTap(EReportViewType.PlagiarismView)\">\n\t\t\t\t<div class=\"icon-container\">\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\n\t\t\t\t\t\t<g clip-path=\"url(#clip0_4484_12191)\">\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\td=\"M16.1053 17.1534H16.1195C16.3932 17.1534 16.651 17.0478 16.8474 16.8564C17.2595 16.4545 17.2684 15.7903 16.8668 15.377L13.5878 12.0042L13.413 12.2914L13.1658 12.6103L12.7114 13.0614L12.4777 13.2411L12.0918 13.4636L15.3708 16.8365C15.5654 17.0371 15.8262 17.1491 16.1053 17.1534Z\"\n\t\t\t\t\t\t\t\tfill=\"#FD7366\" />\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\td=\"M11.7273 11.9227C9.1251 14.4624 4.94624 14.4075 2.41109 11.7999C-0.124067 9.19226 -0.069288 5.00568 2.5329 2.46604C5.1351 -0.0735905 9.31395 -0.0187077 11.8491 2.58889C14.3845 5.19649 14.3295 9.3831 11.7273 11.9227ZM3.3339 3.28993C1.18539 5.38683 1.14017 8.84451 3.23342 10.9974C5.32667 13.1503 8.77778 13.1958 10.9263 11.0988C13.0748 9.00195 13.12 5.54431 11.0268 3.39141C8.93352 1.23851 5.48241 1.19304 3.3339 3.28993Z\"\n\t\t\t\t\t\t\t\tfill=\"#FD7366\" />\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\td=\"M7.13121 11.2688C9.37721 11.2688 11.198 9.4446 11.198 7.19433C11.198 4.94407 9.37721 3.11987 7.13121 3.11987C4.88521 3.11987 3.06445 4.94407 3.06445 7.19433C3.06445 9.4446 4.88521 11.2688 7.13121 11.2688Z\"\n\t\t\t\t\t\t\t\tfill=\"#FFC5BF\" />\n\t\t\t\t\t\t</g>\n\t\t\t\t\t\t<defs>\n\t\t\t\t\t\t\t<clipPath id=\"clip0_4484_12191\">\n\t\t\t\t\t\t\t\t<rect width=\"17\" height=\"17.7727\" fill=\"white\" transform=\"translate(0.5 0.113525)\" />\n\t\t\t\t\t\t\t</clipPath>\n\t\t\t\t\t\t</defs>\n\t\t\t\t\t</svg>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"tab-title-container\">\n\t\t\t\t\t<span class=\"title\" i18n>Matching</span>\n\t\t\t\t\t<div class=\"score-container\">\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t*ngIf=\"!showLoadingView\"\n\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\twidth=\"8\"\n\t\t\t\t\t\t\theight=\"9\"\n\t\t\t\t\t\t\tviewBox=\"0 0 8 9\"\n\t\t\t\t\t\t\tfill=\"none\">\n\t\t\t\t\t\t\t<circle cx=\"4\" cy=\"4.5\" r=\"4\" fill=\"#F44336\" />\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t<span class=\"score\">\n\t\t\t\t\t\t\t<ng-container *ngIf=\"!showLoadingView; else loadingViewRef\">\n\t\t\t\t\t\t\t\t{{ hidePlagarismTap && showDisabledProducts ? 'N/A' : (plagarismScore | percent : '1.0-1') }}\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-template #loadingViewRef>\n\t\t\t\t\t\t\t\t<ngx-skeleton-loader class=\"assessment-tool-skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</a>\n\t\t\t<a\n\t\t\t\tclass=\"ai-tab\"\n\t\t\t\t*ngIf=\"!hideAiTap || showDisabledProducts || showLoadingView\"\n\t\t\t\t@fadeIn\n\t\t\t\trole=\"button\"\n\t\t\t\taria-describedby=\"AI-view-text\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t\t[dir]=\"docDirection\"\n\t\t\t\t[class.tab-selected]=\"selectedTap === EReportViewType.AIView && !hideAiTap\"\n\t\t\t\t[class.at-tab-disabled]=\"hideAiTap && showDisabledProducts\"\n\t\t\t\t[class.at-tab-enabled]=\"!(hideAiTap && showDisabledProducts)\"\n\t\t\t\t[class.tab-loading]=\"showLoadingView\"\n\t\t\t\t[class.with-company-logo]=\"\n\t\t\t\t\tselectedTap === EReportViewType.AIView && !hideAiTap && hidePlagarismTap && companyLogo\n\t\t\t\t\"\n\t\t\t\t[class.mobile]=\"isMobile\"\n\t\t\t\t[matTooltip]=\"hideAiTap && showDisabledProducts ? DISABLED : ''\"\n\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t(click)=\"selectTap(EReportViewType.AIView)\"\n\t\t\t\t(keyup.enter)=\"selectTap(EReportViewType.AIView)\">\n\t\t\t\t<div class=\"icon-container\">\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"16\" viewBox=\"0 0 22 16\" fill=\"none\">\n\t\t\t\t\t\t<g clip-path=\"url(#clip0_4484_11317)\">\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\tfill-rule=\"evenodd\"\n\t\t\t\t\t\t\t\tclip-rule=\"evenodd\"\n\t\t\t\t\t\t\t\td=\"M10.8346 0.962097C15.1459 0.962097 19.0455 3.33985 20.7696 7.01967L21.204 7.9472L20.7696 8.87468C19.0455 12.5545 15.1459 14.9322 10.8346 14.9322C8.64293 14.9322 6.52812 14.3234 4.71853 13.1718C2.90893 12.0203 1.53165 10.4063 0.735461 8.50472L0.501953 7.9472L0.735461 7.3896C1.53165 5.48801 2.90912 3.87404 4.71853 2.72247C6.52792 1.57091 8.64293 0.962097 10.8346 0.962097ZM4.5983 7.9472C4.5983 11.1641 7.39862 13.772 10.853 13.772C14.3074 13.772 17.1077 11.1641 17.1077 7.9472C17.1077 4.73026 14.3074 2.12241 10.853 2.12241C7.39862 2.12241 4.5983 4.73026 4.5983 7.9472Z\"\n\t\t\t\t\t\t\t\tfill=\"#6512D2\" />\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\tfill-rule=\"evenodd\"\n\t\t\t\t\t\t\t\tclip-rule=\"evenodd\"\n\t\t\t\t\t\t\t\td=\"M6.97669 6.24113C6.4128 7.41023 6.44365 8.80611 7.15062 9.97874L9.44021 8.43504C9.3368 8.16247 9.32507 7.86997 9.39784 7.5969L6.97669 6.24113ZM12.0612 7.12805C11.6864 6.61987 11.0273 6.41713 10.4352 6.57791L8.91854 4.3172C10.7738 3.4162 13.088 3.9297 14.3226 5.60337C14.7782 6.22089 15.0287 6.91776 15.0877 7.62009L12.2986 7.64014C12.2571 7.46127 12.1786 7.28714 12.0612 7.12805ZM12.294 8.27705C12.2133 8.6043 12.012 8.90567 11.7021 9.11467C11.1596 9.48035 10.4501 9.45148 9.94667 9.08968L7.64657 10.6405C9.06452 12.1837 11.5013 12.4872 13.2968 11.2767C14.3774 10.5481 14.9956 9.42621 15.0889 8.25697L12.294 8.27705ZM7.40903 5.53987C7.63051 5.2515 7.89518 4.98716 8.2015 4.75607L9.52044 6.72219L7.40903 5.53987Z\"\n\t\t\t\t\t\t\t\tfill=\"#C1ADDC\" />\n\t\t\t\t\t\t</g>\n\t\t\t\t\t\t<defs>\n\t\t\t\t\t\t\t<clipPath id=\"clip0_4484_11317\">\n\t\t\t\t\t\t\t\t<rect width=\"21\" height=\"14.5385\" fill=\"white\" transform=\"translate(0.5 0.730774)\" />\n\t\t\t\t\t\t\t</clipPath>\n\t\t\t\t\t\t</defs>\n\t\t\t\t\t</svg>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"tab-title-container\">\n\t\t\t\t\t<span class=\"title\" i18n>AI Content</span>\n\t\t\t\t\t<div class=\"score-container\">\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t*ngIf=\"!showLoadingView\"\n\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\twidth=\"9\"\n\t\t\t\t\t\t\theight=\"9\"\n\t\t\t\t\t\t\tviewBox=\"0 0 9 9\"\n\t\t\t\t\t\t\tfill=\"none\">\n\t\t\t\t\t\t\t<circle cx=\"4.5\" cy=\"4.5\" r=\"4\" fill=\"#6512D2\" />\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t<ng-container *ngIf=\"!showLoadingView; else loadingViewRef\">\n\t\t\t\t\t\t\t<span class=\"score\">\n\t\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\t\thideAiTap && showDisabledProducts\n\t\t\t\t\t\t\t\t\t\t? 'N/A'\n\t\t\t\t\t\t\t\t\t\t: wordsTotal - excludedTotal === 0\n\t\t\t\t\t\t\t\t\t\t? 0\n\t\t\t\t\t\t\t\t\t\t: (totalAiWords / (wordsTotal - excludedTotal) | percent : '1.0-1')\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t<ng-template #loadingViewRef>\n\t\t\t\t\t\t\t<ngx-skeleton-loader class=\"assessment-tool-skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</a>\n\t\t\t<a\n\t\t\t\tclass=\"writing-assistant-tab\"\n\t\t\t\t*ngIf=\"((!hideWritingFeedbackTap || showDisabledProducts) && !forceWritingFeedbackTapHide) || showLoadingView\"\n\t\t\t\t@fadeIn\n\t\t\t\ttabindex=\"0\"\n\t\t\t\trole=\"button\"\n\t\t\t\t[dir]=\"docDirection\"\n\t\t\t\taria-describedby=\"WritingFeedback-view-text\"\n\t\t\t\t[class.tab-selected]=\"selectedTap === EReportViewType.WritingFeedbackTabView && !hideWritingFeedbackTap\"\n\t\t\t\t[class.at-tab-disabled]=\"hideWritingFeedbackTap && showDisabledProducts\"\n\t\t\t\t[class.at-tab-enabled]=\"!(hideWritingFeedbackTap && showDisabledProducts)\"\n\t\t\t\t[class.tab-loading]=\"showLoadingView\"\n\t\t\t\t[class.with-company-logo]=\"\n\t\t\t\t\tselectedTap === EReportViewType.WritingFeedbackTabView &&\n\t\t\t\t\t!hideWritingFeedbackTap &&\n\t\t\t\t\thideAiTap &&\n\t\t\t\t\thidePlagarismTap &&\n\t\t\t\t\tcompanyLogo\n\t\t\t\t\"\n\t\t\t\t[class.mobile]=\"isMobile\"\n\t\t\t\t[matTooltip]=\"hideWritingFeedbackTap && showDisabledProducts ? DISABLED : ''\"\n\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t(click)=\"selectTap(EReportViewType.WritingFeedbackTabView)\"\n\t\t\t\t(keyup.enter)=\"selectTap(EReportViewType.WritingFeedbackTabView)\">\n\t\t\t\t<div class=\"icon-container\">\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"13\" viewBox=\"0 0 20 13\" fill=\"none\">\n\t\t\t\t\t\t<g clip-path=\"url(#clip0_4484_11335)\">\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\tfill-rule=\"evenodd\"\n\t\t\t\t\t\t\t\tclip-rule=\"evenodd\"\n\t\t\t\t\t\t\t\td=\"M0.548828 1.80615C0.548828 1.19654 1.06372 0.711182 1.68758 0.711182H5.28834C5.9122 0.711182 6.42709 1.19654 6.42709 1.80615C6.42709 2.41577 5.9122 2.90142 5.28834 2.90142H1.68758C1.06372 2.90142 0.548828 2.41577 0.548828 1.80615Z\"\n\t\t\t\t\t\t\t\tfill=\"#FF9A02\" />\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\td=\"M18.5067 1.04102H9.67247C9.23099 1.04102 8.87305 1.38357 8.87305 1.80613C8.87305 2.22869 9.23099 2.57153 9.67247 2.57153H18.5067C18.9482 2.57153 19.3062 2.22898 19.3062 1.80642C19.3062 1.38386 18.9482 1.04102 18.5067 1.04102Z\"\n\t\t\t\t\t\t\t\tfill=\"#FFCB8E\" />\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\tfill-rule=\"evenodd\"\n\t\t\t\t\t\t\t\tclip-rule=\"evenodd\"\n\t\t\t\t\t\t\t\td=\"M12.0625 4.84277C12.0625 4.21202 12.5952 3.70953 13.2412 3.70953H18.1257C18.7716 3.70953 19.3044 4.21202 19.3044 4.84277C19.3044 5.47353 18.7716 5.97632 18.1257 5.97632H13.2412C12.5952 5.97632 12.0625 5.47352 12.0625 4.84277Z\"\n\t\t\t\t\t\t\t\tfill=\"#FF9A02\" />\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\td=\"M9.17989 4.07764H1.34829C0.906761 4.07764 0.548828 4.42018 0.548828 4.84275C0.548828 5.26531 0.906761 5.60815 1.34829 5.60815H9.17989C9.62144 5.60815 9.97938 5.2656 9.97938 4.84304C9.97938 4.42047 9.62144 4.07764 9.17989 4.07764Z\"\n\t\t\t\t\t\t\t\tfill=\"#FFCB8E\" />\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\td=\"M12.9493 7.11414H8.29747C7.85593 7.11414 7.49805 7.45666 7.49805 7.87928C7.49805 8.30183 7.85593 8.64462 8.29747 8.64462H12.9493C13.3908 8.64462 13.7488 8.30209 13.7488 7.87954C13.7488 7.45692 13.3908 7.11414 12.9493 7.11414Z\"\n\t\t\t\t\t\t\t\tfill=\"#FFCB8E\" />\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\td=\"M18.5056 7.11414H17.3502C16.9087 7.11414 16.5508 7.45666 16.5508 7.87928C16.5508 8.30183 16.9087 8.64462 17.3502 8.64462H18.5056C18.9471 8.64462 19.305 8.30209 19.305 7.87954C19.305 7.45692 18.9471 7.11414 18.5056 7.11414Z\"\n\t\t\t\t\t\t\t\tfill=\"#FFCB8E\" />\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\tfill-rule=\"evenodd\"\n\t\t\t\t\t\t\t\tclip-rule=\"evenodd\"\n\t\t\t\t\t\t\t\td=\"M0.548828 7.8793C0.548828 7.26965 1.06372 6.7843 1.68758 6.7843H4.4946C5.11846 6.7843 5.63335 7.26965 5.63335 7.8793C5.63335 8.48889 5.11846 8.97451 4.4946 8.97451H1.68758C1.06372 8.97451 0.548828 8.48889 0.548828 7.8793Z\"\n\t\t\t\t\t\t\t\tfill=\"#FF9A02\" />\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\tfill-rule=\"evenodd\"\n\t\t\t\t\t\t\t\tclip-rule=\"evenodd\"\n\t\t\t\t\t\t\t\td=\"M9.97852 10.9157C9.97852 10.3062 10.4934 9.8208 11.1172 9.8208H18.166C18.7898 9.8208 19.3047 10.3062 19.3047 10.9157C19.3047 11.5253 18.7898 12.011 18.166 12.011H11.1172C10.4934 12.011 9.97852 11.5253 9.97852 10.9157Z\"\n\t\t\t\t\t\t\t\tfill=\"#FF9A02\" />\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\td=\"M7.34686 10.1506H1.34829C0.906761 10.1506 0.548828 10.4932 0.548828 10.9157C0.548828 11.3383 0.906761 11.6811 1.34829 11.6811H7.34686C7.78834 11.6811 8.14629 11.3386 8.14629 10.916C8.14629 10.4935 7.78834 10.1506 7.34686 10.1506Z\"\n\t\t\t\t\t\t\t\tfill=\"#FFCB8E\" />\n\t\t\t\t\t\t</g>\n\t\t\t\t\t\t<defs>\n\t\t\t\t\t\t\t<clipPath id=\"clip0_4484_11335\">\n\t\t\t\t\t\t\t\t<rect width=\"19\" height=\"11.875\" fill=\"white\" transform=\"translate(0.5 0.5625)\" />\n\t\t\t\t\t\t\t</clipPath>\n\t\t\t\t\t\t</defs>\n\t\t\t\t\t</svg>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"tab-title-container\">\n\t\t\t\t\t<span class=\"title\" i18n>Writing Assist.</span>\n\t\t\t\t\t<div class=\"score-container\">\n\t\t\t\t\t\t<span class=\"score\">\n\t\t\t\t\t\t\t<ng-container *ngIf=\"!showLoadingView; else loadingViewRef\">\n\t\t\t\t\t\t\t\t{{ hideWritingFeedbackTap && showDisabledProducts ? 'N/A' : totalWritingFeedbackIssues }}\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-template #loadingViewRef>\n\t\t\t\t\t\t\t\t<ngx-skeleton-loader class=\"assessment-tool-skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</a>\n\t\t</div>\n\t</ng-container>\n\t<ng-container *ngSwitchDefault></ng-container>\n</ng-container>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CrSpinnerComponent } from './cr-spinner.component';\n\n@NgModule({\n\tdeclarations: [CrSpinnerComponent],\n\timports: [CommonModule],\n\texports: [CrSpinnerComponent],\n})\nexport class CrSpinnerModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { FlexLayoutModule } from 'ngx-flexible-layout';\nimport { CrSpinnerModule } from '../cr-spinner/cr-spinner.module';\nimport { CrButtonComponent } from './cr-button.component';\n\n@NgModule({\n\tdeclarations: [CrButtonComponent],\n\timports: [CommonModule, MatIconModule, MatButtonModule, MatTooltipModule, FlexLayoutModule, CrSpinnerModule],\n\texports: [CrButtonComponent],\n})\nexport class CrButtonModule {}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n\tselector: 'cr-custom-empty-results',\n\ttemplateUrl: './cr-custom-empty-results.component.html',\n\tstyleUrls: ['./cr-custom-empty-results.component.scss'],\n\tstandalone: false,\n})\nexport class CrCustomEmptyResultsComponent implements OnInit {\n\tconstructor() {}\n\n\tngOnInit(): void {}\n}\n","<ng-content></ng-content>\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n\tselector: 'cr-custom-results-box-content',\n\ttemplateUrl: './cr-custom-results-box-content.component.html',\n\tstyleUrls: ['./cr-custom-results-box-content.component.scss'],\n\tstandalone: false,\n})\nexport class CrCustomResultsBoxContentComponent implements OnInit {\n\tconstructor() {}\n\n\tngOnInit(): void {}\n}\n","<ng-content></ng-content>\n","import {\n\tAfterViewInit,\n\tComponent,\n\tElementRef,\n\tHostListener,\n\tInput,\n\tOnChanges,\n\tOnDestroy,\n\tOnInit,\n\tSimpleChanges,\n} from '@angular/core';\nimport { EResponsiveLayoutType } from '../../../enums/copyleaks-web-report.enums';\nimport { ReportNgTemplatesService } from '../../../services/report-ng-templates.service';\nimport { ReportViewService } from '../../../services/report-view.service';\nimport { untilDestroy } from '../../../utils/until-destroy';\nimport { IResultsActions } from '../../containers/report-results-container/components/results-actions/models/results-actions.models';\nimport { ECustomResultsReportView } from './models/cr-custom-results.enums';\n\n@Component({\n\tselector: 'cr-custom-results',\n\ttemplateUrl: './cr-custom-results.component.html',\n\tstyleUrls: ['./cr-custom-results.component.scss'],\n\tstandalone: false,\n})\nexport class CrCustomResultsComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\t@Input() reportView: ECustomResultsReportView = ECustomResultsReportView.Partial;\n\n\tresultsActionsMock: IResultsActions = {\n\t\ttotalResults: 0,\n\t\ttotalExcluded: 0,\n\t\ttotalFiltered: 0,\n\t\tselectedResults: 0,\n\t};\n\tresponsiveMode: EResponsiveLayoutType;\n\n\tECustomResultsReportView = ECustomResultsReportView;\n\tEResponsiveLayoutType = EResponsiveLayoutType;\n\tdocDirection: 'ltr' | 'rtl';\n\n\t@HostListener('window:resize', ['$event'])\n\tonResize() {}\n\n\tconstructor(\n\t\tprivate _reportTemplatesSvc: ReportNgTemplatesService,\n\t\tpublic reportViewSvc: ReportViewService,\n\t\tprivate _el: ElementRef\n\t) {}\n\n\tngOnInit(): void {\n\t\tsetTimeout(() => {\n\t\t\tthis._reportTemplatesSvc.reportTemplatesMode$.next(this.reportView);\n\t\t\tthis.responsiveMode = this.reportViewSvc.reportResponsiveMode$.value?.mode ?? EResponsiveLayoutType.Desktop;\n\t\t\tthis.reportViewSvc.reportResponsiveMode$.pipe(untilDestroy(this)).subscribe(data => {\n\t\t\t\tif (!data) return;\n\t\t\t\tthis.responsiveMode = data.mode;\n\t\t\t});\n\t\t\tthis.reportViewSvc.documentDirection$.pipe(untilDestroy(this)).subscribe(dir => {\n\t\t\t\tthis.docDirection = dir;\n\t\t\t});\n\t\t});\n\t}\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif ('reportView' in changes) this._reportTemplatesSvc.reportTemplatesMode$.next(this.reportView);\n\t}\n\n\tngAfterViewInit() {}\n\n\tget listOfLoadingResults(): number[] {\n\t\tlet numberOfLoadingResults = this.hostHeight / 145;\n\t\treturn Array.from({ length: Math.round(numberOfLoadingResults) + 1 }, (_, k) => k + 1);\n\t}\n\n\tget hostHeight(): number {\n\t\treturn this._el.nativeElement.offsetHeight - (this.reportView === ECustomResultsReportView.Full ? 38 : 0);\n\t}\n\n\tngOnDestroy(): void {}\n}\n","<cr-results-actions\n\t*ngIf=\"reportView === ECustomResultsReportView.Full && responsiveMode !== EResponsiveLayoutType.Mobile\"\n\t[resultsActions]=\"resultsActionsMock\"\n\t[hideTotal]=\"true\"></cr-results-actions>\n\n<section class=\"loading-section\" [dir]=\"docDirection\">\n\t<div\n\t\tclass=\"centered-box-content-container\"\n\t\t[style.width]=\"responsiveMode !== EResponsiveLayoutType.Mobile ? '90%' : '100%'\">\n\t\t<ng-content select=\"cr-custom-results-box-content\"></ng-content>\n\t</div>\n\t<ng-container *ngIf=\"responsiveMode !== EResponsiveLayoutType.Mobile\">\n\t\t<cr-report-results-item\n\t\t\t*ngFor=\"let i of listOfLoadingResults\"\n\t\t\t[reportViewSvc]=\"reportViewSvc\"\n\t\t\t[showLoader]=\"true\"></cr-report-results-item>\n\t</ng-container>\n\n\t<div *ngIf=\"responsiveMode !== EResponsiveLayoutType.Mobile\" class=\"results-loader-container\"></div>\n</section>\n","import { Component, Input, OnInit, TemplateRef, ViewChild } from '@angular/core';\nimport { ReportViewService } from '../../../../../services/report-view.service';\nimport { untilDestroy } from '../../../../../utils/until-destroy';\n\n@Component({\n\tselector: 'cr-custom-tab-item',\n\ttemplateUrl: './cr-custom-tab-item.component.html',\n\tstyleUrls: ['./cr-custom-tab-item.component.scss'],\n\tstandalone: false,\n})\nexport class CrCustomTabItemComponent implements OnInit {\n\t@ViewChild('tabTemplateTitle', { static: true }) tabTemplateTitle: TemplateRef<any>;\n\t@ViewChild('tabTemplateContent', { static: true }) tabTemplateContent: TemplateRef<any>;\n\t@ViewChild('tabTemplateResultSectionContent', { static: true }) tabTemplateResultSectionContent: TemplateRef<any>;\n\n\t/**\n\t * @Input Flex grow property - flex-grow\n\t */\n\t@Input() flexGrow: number;\n\n\t/**\n\t * @Input Flex grow property - flex-grow\n\t */\n\t@Input() tabId: string;\n\n\tselected: boolean = false;\n\tisTabResultSectionContentNotEmpty: boolean;\n\n\tconstructor(private _reportViewSvc: ReportViewService) {}\n\n\tngOnInit(): void {\n\t\tthis._reportViewSvc.selectedCustomTabContent$.pipe(untilDestroy(this)).subscribe(content => {\n\t\t\tthis.selected = content === this.tabTemplateContent;\n\t\t});\n\n\t\tif (!!this.tabId)\n\t\t\tthis._reportViewSvc.reportViewMode$.pipe(untilDestroy(this)).subscribe(data => {\n\t\t\t\tif (data.selectedCustomTabId !== this.tabId) return;\n\t\t\t\tthis._reportViewSvc.selectedCustomTabContent$.next(this.tabTemplateContent);\n\t\t\t\tthis.checkIfTabResultSectionContentNotEmpty();\n\t\t\t\tif (this.isTabResultSectionContentNotEmpty)\n\t\t\t\t\tthis._reportViewSvc.selectedCustomTabResultSectionContent$.next(this.tabTemplateResultSectionContent);\n\t\t\t\telse this._reportViewSvc.selectedCustomTabResultSectionContent$.next(null);\n\t\t\t});\n\t}\n\n\tclickEvent() {\n\t\tif (\n\t\t\tthis._reportViewSvc.reportViewMode.selectedCustomTabId === this.tabId &&\n\t\t\tthis.tabId != undefined &&\n\t\t\tthis.tabId != null\n\t\t)\n\t\t\treturn;\n\n\t\tthis._reportViewSvc.selectedCustomTabContent$.next(this.tabTemplateContent);\n\t\tthis.checkIfTabResultSectionContentNotEmpty();\n\t\tif (this.isTabResultSectionContentNotEmpty)\n\t\t\tthis._reportViewSvc.selectedCustomTabResultSectionContent$.next(this.tabTemplateResultSectionContent);\n\t\telse this._reportViewSvc.selectedCustomTabResultSectionContent$.next(null);\n\t\tthis._reportViewSvc.reportViewMode$.next({\n\t\t\t...this._reportViewSvc.reportViewMode,\n\t\t\tselectedCustomTabId: this.tabId ?? 'tab-id',\n\t\t\tsuspectId: null,\n\t\t\talertCode: null,\n\t\t});\n\t\tthis._reportViewSvc.selectedAlert$.next(null);\n\t}\n\n\tcheckIfTabResultSectionContentNotEmpty() {\n\t\t// Create an embedded view to inspect the content\n\t\tconst embeddedView = this.tabTemplateResultSectionContent.createEmbeddedView(null);\n\t\t// Check if the embedded view contains any nodes\n\t\tthis.isTabResultSectionContentNotEmpty = embeddedView.rootNodes.length > 0;\n\t\tembeddedView.destroy();\n\t}\n\n\tngOnDestroy(): void {}\n}\n\n@Component({\n\tselector: 'cr-custom-tab-item-title',\n\ttemplate: `\n\t\t<ng-content></ng-content>\n\t`,\n\tstyleUrls: ['./cr-custom-tab-item.component.scss'],\n\tstandalone: false,\n})\nexport class CrCustomTabItemTitleComponent implements OnInit {\n\tconstructor() {}\n\n\tngOnInit(): void {}\n}\n\n@Component({\n\tselector: 'cr-custom-tab-item-content',\n\ttemplate: `\n\t\t<ng-content></ng-content>\n\t`,\n\tstyleUrls: ['./cr-custom-tab-item.component.scss'],\n\tstandalone: false,\n})\nexport class CrCustomTabItemContentComponent implements OnInit {\n\tconstructor() {}\n\n\tngOnInit(): void {}\n}\n\n@Component({\n\tselector: 'cr-custom-tab-item-result-section-content',\n\ttemplate: `\n\t\t<ng-content></ng-content>\n\t`,\n\tstyleUrls: ['./cr-custom-tab-item.component.scss'],\n\tstandalone: false,\n})\nexport class CrCustomTabItemResultSectionComponent implements OnInit {\n\tconstructor() {}\n\n\tngOnInit(): void {}\n}\n","<ng-template #tabTemplateTitle>\n\t<button\n\t\tclass=\"custom-tab\"\n\t\t[id]=\"tabId ?? ''\"\n\t\t(click)=\"clickEvent()\"\n\t\t[tabindex]=\"0\"\n\t\t(keyup.enter)=\"clickEvent()\"\n\t\t[style.flex-grow]=\"flexGrow\"\n\t\t[class.tab-selected]=\"selected\"\n\t\taria-label=\"Click to switch to tab\"\n\t\ti18n-aria-label>\n\t\t<ng-content select=\"cr-custom-tab-item-title\"></ng-content>\n\t</button>\n</ng-template>\n\n<ng-template #tabTemplateContent>\n\t<ng-content select=\"cr-custom-tab-item-content\"></ng-content>\n</ng-template>\n\n<ng-template #tabTemplateResultSectionContent>\n\t<ng-content select=\"cr-custom-tab-item-result-section-content\"></ng-content>\n</ng-template>\n","import { Component, ContentChildren, OnInit, QueryList } from '@angular/core';\nimport { ICustomClsReportTabTemplatesRefs } from '../../../models/report-ng-templates.models';\nimport { ReportNgTemplatesService } from '../../../services/report-ng-templates.service';\nimport { CrCustomTabItemComponent } from './components/cr-custom-tab-item/cr-custom-tab-item.component';\n\n@Component({\n\tselector: 'cr-custom-tabs',\n\ttemplateUrl: './cr-custom-tabs.component.html',\n\tstyleUrls: ['./cr-custom-tabs.component.scss'],\n\tstandalone: false,\n})\nexport class CrCustomTabsComponent implements OnInit {\n\t@ContentChildren(CrCustomTabItemComponent) tabItems: QueryList<CrCustomTabItemComponent>;\n\n\ttemplateRefsArray: ICustomClsReportTabTemplatesRefs[] = [];\n\n\tngAfterContentInit() {\n\t\tthis.tabItems.forEach(tabItem => {\n\t\t\tthis.templateRefsArray.push({\n\t\t\t\tcustomTabTitleTemplates: tabItem.tabTemplateTitle,\n\t\t\t\tcustomTabContentTemplates: tabItem.tabTemplateContent,\n\t\t\t} as ICustomClsReportTabTemplatesRefs);\n\t\t});\n\n\t\tif (this.templateRefsArray.length > 0)\n\t\t\tthis._reportTemplateRefsSvc.setReportCustomTabsTemplateRef(this.templateRefsArray);\n\t}\n\tconstructor(private _reportTemplateRefsSvc: ReportNgTemplatesService) {}\n\n\tngOnInit(): void {}\n}\n","<ng-content select=\"cr-custom-tab-item\"></ng-content>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CrPaginatorComponent } from './cr-paginator.component';\nimport { FlexLayoutModule } from 'ngx-flexible-layout';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@NgModule({\n\tdeclarations: [CrPaginatorComponent],\n\timports: [\n\t\tCommonModule,\n\t\tFormsModule,\n\t\tFlexLayoutModule,\n\t\tMatFormFieldModule,\n\t\tMatSelectModule,\n\t\tMatButtonModule,\n\t\tMatTooltipModule,\n\t\tMatIconModule,\n\t],\n\texports: [CrPaginatorComponent],\n})\nexport class CrPaginatorModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CrPoweredByComponent } from './cr-powered-by.component';\nimport { FlexLayoutModule } from 'ngx-flexible-layout';\n\n@NgModule({\n\tdeclarations: [CrPoweredByComponent],\n\timports: [CommonModule, FlexLayoutModule],\n\texports: [CrPoweredByComponent],\n})\nexport class CrPoweredByModule {}\n","import { Component } from '@angular/core';\n\n@Component({\n\tselector: 'cr-actions',\n\ttemplateUrl: './cr-actions.component.html',\n\tstyleUrls: ['./cr-actions.component.scss'],\n\tstandalone: false,\n})\nexport class CrActionsComponent {}\n","<div class=\"actions-container\">\n\t<ng-content></ng-content>\n</div>\n","import { Renderer2 } from '@angular/core';\nimport { ReportDataService } from '../../../services/report-data.service';\nimport { ReportMatchesService } from '../../../services/report-matches.service';\nimport { IReportViewEvent } from '../../../models/report-view.models';\nimport { ReportViewService } from '../../../services/report-view.service';\nimport { ReportMatchHighlightService } from '../../../services/report-match-highlight.service';\nimport { ReportStatisticsService } from '../../../services/report-statistics.service';\nimport { ReportNgTemplatesService } from '../../../services/report-ng-templates.service';\nimport { ReportRealtimeResultsService } from '../../../services/report-realtime-results.service';\nimport { ReportErrorsService } from '../../../services/report-errors.service';\nimport { ALERTS } from '../../../constants/report-alerts.constants';\n\nexport abstract class ReportLayoutBaseComponent {\n\tisHtmlView: boolean;\n\n\tget isAlertsMode(): boolean {\n\t\treturn !!this.reportViewSvc.selectedAlert && this.reportViewSvc.selectedAlert != ALERTS.SUSPECTED_AI_TEXT_DETECTED;\n\t}\n\n\tconstructor(\n\t\tprotected reportDataSvc: ReportDataService,\n\t\tprotected reportViewSvc: ReportViewService,\n\t\tprotected matchSvc: ReportMatchesService,\n\t\tprotected renderer: Renderer2,\n\t\tprotected highlightSvc: ReportMatchHighlightService,\n\t\tprotected statisticsSvc: ReportStatisticsService,\n\t\tprotected templatesSvc: ReportNgTemplatesService,\n\t\tprotected realTimeResultsSvc: ReportRealtimeResultsService,\n\t\tprotected reportErrorsSvc: ReportErrorsService\n\t) {}\n\n\tonReportViewChange(event: IReportViewEvent) {\n\t\tthis.isHtmlView = event.isHtmlView;\n\t\tthis.reportViewSvc.reportViewMode$.next(event);\n\t}\n\n\tonShowOmittedWords(showOmittedWords: boolean) {\n\t\tthis.matchSvc.showOmittedWords$.next(showOmittedWords);\n\t}\n}\n","import { Renderer2, TemplateRef } from '@angular/core';\nimport { Subject, combineLatest } from 'rxjs';\nimport { distinctUntilChanged, filter, takeUntil } from 'rxjs/operators';\nimport { ALERTS } from '../../../constants/report-alerts.constants';\nimport { EExcludeReason, EReportViewType, EResponsiveLayoutType } from '../../../enums/copyleaks-web-report.enums';\nimport {\n\tICompleteResultNotificationAlert,\n\tICompleteResults,\n\tIScanSource,\n\tIWritingFeedback,\n\tIWritingFeedbackCorrectionViewModel,\n\tIWritingFeedbackScanScource,\n\tResultPreview,\n} from '../../../models/report-data.models';\nimport { PostMessageEvent } from '../../../models/report-iframe-events.models';\nimport {\n\tAIScanResult,\n\tExplainableAIResults,\n\tMatch,\n\tMatchType,\n\tResultDetailItem,\n\tSlicedMatch,\n} from '../../../models/report-matches.models';\nimport { ICopyleaksReportOptions } from '../../../models/report-options.models';\nimport {\n\tIMatchesTypeStatistics,\n\tIWritingFeedbackTypeStatistics,\n\tReportStatistics,\n} from '../../../models/report-statistics.models';\nimport { ReportDataService } from '../../../services/report-data.service';\nimport { ReportMatchHighlightService } from '../../../services/report-match-highlight.service';\nimport { ReportMatchesService } from '../../../services/report-matches.service';\nimport { ReportNgTemplatesService } from '../../../services/report-ng-templates.service';\nimport { ReportStatisticsService } from '../../../services/report-statistics.service';\nimport { ReportViewService } from '../../../services/report-view.service';\nimport { IAuthorAlertCard } from '../../containers/report-alerts-container/components/author-alert-card/models/author-alert-card.models';\nimport { IResultsActions } from '../../containers/report-results-container/components/results-actions/models/results-actions.models';\nimport { IResultItem } from '../../containers/report-results-item-container/components/models/report-result-item.models';\nimport { ECustomResultsReportView } from '../../core/cr-custom-results/models/cr-custom-results.enums';\nimport { ReportLayoutBaseComponent } from './report-layout-base.component';\nimport { ReportRealtimeResultsService } from '../../../services/report-realtime-results.service';\nimport { IClsReportEndpointConfigModel, ViewMode } from '../../../models/report-config.models';\nimport * as helpers from '../../../utils/report-match-helpers';\nimport { ReportErrorsService } from '../../../services/report-errors.service';\nimport { RESULT_TAGS_CODES } from '../../../constants/report-result-tags.constants';\n\nexport abstract class OneToManyReportLayoutBaseComponent extends ReportLayoutBaseComponent {\n\thideRightSection: boolean = false;\n\n\treportCrawledVersion: IScanSource;\n\treportMatches: Match[];\n\n\tcontentTextMatches: SlicedMatch[][];\n\tnumberOfPages: number;\n\tcurrentPageSource: number;\n\n\toneToManyRerendered: boolean = false;\n\tEResponsiveLayoutType = EResponsiveLayoutType;\n\talerts: ICompleteResultNotificationAlert[];\n\treportStatistics: ReportStatistics | undefined;\n\tfilterOptions: ICopyleaksReportOptions;\n\tselectedTap: EReportViewType = EReportViewType.PlagiarismView;\n\n\tscanResultsPreviews: ICompleteResults | undefined;\n\tscanResultsDetails: ResultDetailItem[] | undefined;\n\taiSourceMatchResults: IResultItem[];\n\tscanResultsView: IResultItem[];\n\tscanResultsActions: IResultsActions = {\n\t\ttotalResults: 0,\n\t\ttotalExcluded: 0,\n\t\ttotalFiltered: 0,\n\t\tselectedResults: 0,\n\t};\n\tnewScanResultsView: IResultItem[];\n\tallScanCorrectionsView: IWritingFeedbackCorrectionViewModel[];\n\tdisplayedScanCorrectionsView: IWritingFeedbackCorrectionViewModel[];\n\n\tfocusedMatch: Match | null;\n\n\tisLoadingScanContent: boolean = true;\n\tisLoadingScanResults: boolean = true;\n\tisLoadingScanCorrections: boolean = true;\n\tloadingProgressPct: number = 0;\n\n\thidePlagarismTap: boolean = false;\n\thideAiTap: boolean = false;\n\thideWritingFeedbackTap: boolean = false;\n\tshowDisabledProducts: boolean = false;\n\treportTemplateMode: ECustomResultsReportView;\n\tviewMode: ViewMode = 'one-to-many';\n\tisMultiSelection: boolean = false;\n\n\tEReportViewType = EReportViewType;\n\tECustomResultsReportView = ECustomResultsReportView;\n\n\tauthorAlert: IAuthorAlertCard | null = null;\n\n\tcustomResultsTemplate: TemplateRef<any> | undefined = undefined;\n\tcustomBannerSectionTemplate: TemplateRef<any> | undefined = undefined;\n\twritingFeedback: IWritingFeedback;\n\twritingFeedbackStats: IWritingFeedbackTypeStatistics[];\n\tcorrectionClicked: boolean = false;\n\ttotalFilteredCorrections: number;\n\tshowCorrectionsLoadingView: boolean = true;\n\tshowReadabilityLoadingView: boolean = true;\n\tallWritingFeedbacksStats: IWritingFeedbackTypeStatistics[];\n\tallMatchResultsStats: IMatchesTypeStatistics[];\n\tcustomActionsTemplate: TemplateRef<any>;\n\tcustomAISourceMatchUpgradeTemplate: TemplateRef<any>;\n\tselectedCustomTabResultSectionContentTemplate: TemplateRef<any>;\n\tshowOmittedWords: boolean;\n\tisPartitalScan: boolean;\n\texplainableAI: ExplainableAIResults = { explain: null, slicedMatch: [], sourceText: '' };\n\tloadingExplainableAI: boolean = true;\n\tisAiHtmlViewAvailable: boolean = false;\n\tshowAIPhrases: boolean = false;\n\thideAISourceMatchUpgrade: boolean = false;\n\n\treportEndpointConfig: IClsReportEndpointConfigModel;\n\tisRealTimeView: boolean;\n\n\t// Subject for destroying all the subscriptions in base component\n\tprivate unsubscribe$ = new Subject();\n\n\tget combined() {\n\t\tif (!this.reportStatistics) return 0;\n\t\treturn (\n\t\t\tthis.reportStatistics?.identical + this.reportStatistics?.relatedMeaning + this.reportStatistics?.minorChanges\n\t\t);\n\t}\n\n\tget filteredCorrections(): IWritingFeedbackCorrectionViewModel[] {\n\t\tif (!this.reportDataSvc.writingFeedback?.corrections || !this.reportCrawledVersion) return [];\n\t\tconst filteredCorrections = this.reportDataSvc.filterCorrections(\n\t\t\tJSON.parse(JSON.stringify(this.reportDataSvc.writingFeedback?.corrections)),\n\t\t\tthis.reportDataSvc.filterOptions,\n\t\t\tthis.reportDataSvc.excludedCorrections\n\t\t);\n\t\treturn this._mapCorrectionsToViewModel(filteredCorrections);\n\t}\n\n\tplagiarismScore: number;\n\tnumberOfWords: number;\n\tgrammarScore: number;\n\n\tconstructor(\n\t\treportDataSvc: ReportDataService,\n\t\treportViewSvc: ReportViewService,\n\t\tmatchSvc: ReportMatchesService,\n\t\trenderer: Renderer2,\n\t\thighlightSvc: ReportMatchHighlightService,\n\t\tstatisticsSvc: ReportStatisticsService,\n\t\ttemplatesSvc: ReportNgTemplatesService,\n\t\trealTimeResultsSvc: ReportRealtimeResultsService,\n\t\treportErrorsSvc: ReportErrorsService\n\t) {\n\t\tsuper(\n\t\t\treportDataSvc,\n\t\t\treportViewSvc,\n\t\t\tmatchSvc,\n\t\t\trenderer,\n\t\t\thighlightSvc,\n\t\t\tstatisticsSvc,\n\t\t\ttemplatesSvc,\n\t\t\trealTimeResultsSvc,\n\t\t\treportErrorsSvc\n\t\t);\n\t}\n\n\tinitOneToManyViewData(): void {\n\t\t// Init the subscriptions for the one-to-many view\n\t\tthis.unsubscribe$ = new Subject();\n\n\t\tthis.reportViewSvc.reportViewMode$.pipe(takeUntil(this.unsubscribe$)).subscribe(data => {\n\t\t\tif (!data) return;\n\t\t\tthis.isHtmlView = data.isHtmlView;\n\t\t\tthis.currentPageSource = data.sourcePageIndex;\n\t\t\tthis.viewMode = data.viewMode;\n\t\t\tthis.hideAISourceMatchUpgrade = data.hideAISourceMatchUpgrade;\n\n\t\t\tif (data.viewMode === 'writing-feedback') {\n\t\t\t\tthis.selectedTap = EReportViewType.WritingFeedbackTabView;\n\t\t\t} else\n\t\t\t\tthis.selectedTap = data.selectedCustomTabId\n\t\t\t\t\t? EReportViewType.CustomTabView\n\t\t\t\t\t: data.alertCode === ALERTS.SUSPECTED_AI_TEXT_DETECTED\n\t\t\t\t\t? EReportViewType.AIView\n\t\t\t\t\t: EReportViewType.PlagiarismView;\n\n\t\t\tif (this.selectedTap != EReportViewType.AIView) {\n\t\t\t\tthis.highlightSvc.aiInsightsSelectedResults$.next([]);\n\t\t\t\tthis.highlightSvc.aiInsightsSelect$.next(null);\n\t\t\t\tthis.highlightSvc.aiInsightsShowResult$.next(null);\n\t\t\t\tthis.highlightSvc.setOriginalHtmlMatch(null);\n\t\t\t\tthis.highlightSvc.setOriginalTextMatch(null);\n\t\t\t}\n\n\t\t\tthis.showDisabledProducts = data.showDisabledProducts ?? false;\n\n\t\t\tcombineLatest([\n\t\t\t\tthis.reportDataSvc.scanResultsPreviews$.pipe(distinctUntilChanged()),\n\t\t\t\tthis.reportDataSvc.scanResultsDetails$.pipe(distinctUntilChanged()),\n\t\t\t])\n\t\t\t\t.pipe(takeUntil(this.unsubscribe$))\n\t\t\t\t.subscribe(([previews, details]) => {\n\t\t\t\t\tif (this.reportDataSvc.filterOptions?.showAlerts === false) this.alerts = [];\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.alerts =\n\t\t\t\t\t\t\tpreviews?.notifications?.alerts?.filter(\n\t\t\t\t\t\t\t\ta => a.code != ALERTS.SUSPECTED_AI_TEXT_DETECTED && a.code != ALERTS.AI_INSIGHTS_LANG_UNSUPPORTED\n\t\t\t\t\t\t\t) ?? [];\n\t\t\t\t\tthis.scanResultsPreviews = previews;\n\t\t\t\t\tthis.scanResultsDetails = details;\n\n\t\t\t\t\tthis.isLoadingScanResults = this.scanResultsPreviews === undefined || this.scanResultsDetails === undefined;\n\n\t\t\t\t\tthis.hideAiTap = !this.reportDataSvc.isAiDetectionEnabled();\n\t\t\t\t\tthis.hidePlagarismTap = !this.reportDataSvc.isPlagiarismEnabled();\n\t\t\t\t\tthis.hideWritingFeedbackTap = !this.reportDataSvc.isWritingFeedbackEnabled();\n\n\t\t\t\t\tif (previews && this.hideWritingFeedbackTap) this.isLoadingScanCorrections = false;\n\n\t\t\t\t\tthis.numberOfWords = previews?.scannedDocument?.totalWords;\n\n\t\t\t\t\tif (this.scanResultsPreviews && this.scanResultsDetails) {\n\t\t\t\t\t\tthis.scanResultsActions.totalResults = this.reportDataSvc.totalCompleteResults;\n\t\t\t\t\t\tconst allResults = [\n\t\t\t\t\t\t\t...(this.scanResultsPreviews.results?.internet ?? []),\n\t\t\t\t\t\t\t...(this.scanResultsPreviews.results?.database ?? []),\n\t\t\t\t\t\t\t...(this.scanResultsPreviews.results?.batch ?? []),\n\t\t\t\t\t\t\t...(this.scanResultsPreviews.results?.repositories ?? []),\n\t\t\t\t\t\t];\n\n\t\t\t\t\t\tthis.scanResultsView = allResults\n\t\t\t\t\t\t\t.filter(result => result != undefined)\n\t\t\t\t\t\t\t.sort((a, b) => (b.isLocked ? 0 : b.matchedWords) - (a.isLocked ? 0 : a.matchedWords))\n\t\t\t\t\t\t\t.map(result => {\n\t\t\t\t\t\t\t\tconst foundResultDetail = this.scanResultsDetails?.find(r => r.id === result.id);\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\tresultPreview: result,\n\t\t\t\t\t\t\t\t\tresultDetails: foundResultDetail,\n\t\t\t\t\t\t\t\t\tiStatisticsResult: foundResultDetail?.result?.statistics,\n\t\t\t\t\t\t\t\t\tmetadataSource: {\n\t\t\t\t\t\t\t\t\t\twords: this.scanResultsPreviews?.scannedDocument.totalWords ?? 0,\n\t\t\t\t\t\t\t\t\t\texcluded: this.scanResultsPreviews?.scannedDocument.totalExcluded ?? 0,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t} as IResultItem;\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t// Filter \"AI Source Match\" results by checking their alert code\n\n\t\t\t\t\t\tthis.aiSourceMatchResults = this.scanResultsView?.filter(\n\t\t\t\t\t\t\tresult => !!result?.resultPreview?.tags?.find(t => t.code === RESULT_TAGS_CODES.AI_SOURCE_MATCH)\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.scanResultsPreviews && this.selectedTap === EReportViewType.AIView) {\n\t\t\t\t\t\tconst validSelectedAlert = previews?.notifications?.alerts?.find(\n\t\t\t\t\t\t\ta => a.code === ALERTS.SUSPECTED_AI_TEXT_DETECTED\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (validSelectedAlert) {\n\t\t\t\t\t\t\tvar aiScanResult = JSON.parse(validSelectedAlert.additionalData) as AIScanResult;\n\n\t\t\t\t\t\t\tthis.isAiHtmlViewAvailable = false;\n\t\t\t\t\t\t\taiScanResult.results.forEach(result => {\n\t\t\t\t\t\t\t\tresult.matches?.forEach(match => {\n\t\t\t\t\t\t\t\t\tif (match.html != null && match.html != undefined) this.isAiHtmlViewAvailable = true;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.isAiHtmlViewAvailable = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!this.isAiHtmlViewAvailable) {\n\t\t\t\t\t\t\tthis.isHtmlView = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t});\n\n\t\tthis.reportDataSvc.reportEndpointConfig$\n\t\t\t.pipe(distinctUntilChanged())\n\t\t\t.pipe(takeUntil(this.unsubscribe$))\n\t\t\t.subscribe(config => {\n\t\t\t\tthis.reportEndpointConfig = config;\n\t\t\t});\n\n\t\tthis.reportDataSvc.isRealTimeView$\n\t\t\t.pipe(distinctUntilChanged())\n\t\t\t.pipe(takeUntil(this.unsubscribe$))\n\t\t\t.subscribe(isRealTimeView => {\n\t\t\t\tthis.isRealTimeView = isRealTimeView;\n\t\t\t});\n\n\t\tthis.reportDataSvc.scanResultsPreviews$\n\t\t\t.pipe(distinctUntilChanged())\n\t\t\t.pipe(takeUntil(this.unsubscribe$))\n\t\t\t.subscribe(scanResults => {\n\t\t\t\tif (scanResults) {\n\t\t\t\t\tconst validSelectedAlert = scanResults?.notifications?.alerts?.find(\n\t\t\t\t\t\ta => a.code === ALERTS.SUSPECTED_AI_TEXT_DETECTED\n\t\t\t\t\t);\n\t\t\t\t\tif (validSelectedAlert) {\n\t\t\t\t\t\tvar scanResult = JSON.parse(validSelectedAlert.additionalData) as AIScanResult;\n\n\t\t\t\t\t\tthis.explainableAI.explain = scanResult?.explain;\n\t\t\t\t\t}\n\t\t\t\t\t// Check if the AI insights are unsupported\n\t\t\t\t\tconst aiInsightsUnsup = scanResults?.notifications?.alerts?.find(\n\t\t\t\t\t\ta => a.code === ALERTS.AI_INSIGHTS_LANG_UNSUPPORTED\n\t\t\t\t\t);\n\t\t\t\t\t// Set the alert for unsupported AI insights\n\t\t\t\t\tif (aiInsightsUnsup) {\n\t\t\t\t\t\tthis.explainableAI.aiScanAlert = {\n\t\t\t\t\t\t\ttitle: $localize`Language Not Yet Supported for AI Insights`,\n\t\t\t\t\t\t\tmessage: $localize`Unsupported language for AI insights, no specific AI phrase found, but other criteria indicate AI generation.`,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tthis.loadingExplainableAI = false;\n\t\t\t\t\t}, 100);\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis.reportDataSvc.writingFeedback$.pipe(takeUntil(this.unsubscribe$)).subscribe(data => {\n\t\t\tif (data) this.writingFeedback = data;\n\t\t\tthis.showReadabilityLoadingView = !data;\n\t\t});\n\n\t\tthis.reportViewSvc.progress$.pipe(takeUntil(this.unsubscribe$)).subscribe(progress => {\n\t\t\tthis.loadingProgressPct = progress;\n\t\t});\n\n\t\tthis.reportDataSvc.newResults$.pipe(takeUntil(this.unsubscribe$)).subscribe(data => {\n\t\t\tif (data) this.newScanResultsView = data;\n\t\t});\n\n\t\tthis.reportDataSvc.crawledVersion$.pipe(takeUntil(this.unsubscribe$)).subscribe(data => {\n\t\t\tif (data) {\n\t\t\t\tthis.reportCrawledVersion = data;\n\t\t\t\tthis.explainableAI.sourceText = data?.text?.value ?? '';\n\t\t\t\tthis.numberOfPages = data.text?.pages?.startPosition?.length ?? 1;\n\t\t\t\tif (\n\t\t\t\t\t(this.reportCrawledVersion?.html?.exclude?.reasons?.filter(r => r === EExcludeReason.PartialScan).length >\n\t\t\t\t\t\t0 ||\n\t\t\t\t\t\tthis.reportCrawledVersion?.text?.exclude?.reasons?.filter(r => r === EExcludeReason.PartialScan).length >\n\t\t\t\t\t\t\t0) &&\n\t\t\t\t\t(!this.isPartitalScan || !this.showOmittedWords)\n\t\t\t\t) {\n\t\t\t\t\tthis.matchSvc.showOmittedWords$.next(true);\n\t\t\t\t\tthis.isPartitalScan = true;\n\t\t\t\t\tthis.showOmittedWords = true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis.reportViewSvc.selectedCustomTabResultSectionContent$.pipe(takeUntil(this.unsubscribe$)).subscribe(content => {\n\t\t\tthis.selectedCustomTabResultSectionContentTemplate = content;\n\t\t});\n\n\t\tthis.matchSvc.showOmittedWords$.pipe(takeUntil(this.unsubscribe$)).subscribe(data => {\n\t\t\tthis.showOmittedWords = data;\n\t\t});\n\n\t\tthis.reportErrorsSvc.reportHttpRequestError$.pipe(takeUntil(this.unsubscribe$)).subscribe(error => {\n\t\t\tif (!error) return;\n\n\t\t\tif (error.method === 'initSync - crawledVersion') {\n\t\t\t\tthis.isLoadingScanContent = false;\n\t\t\t\tthis.reportMatches = this.contentTextMatches = [];\n\n\t\t\t\tthis.oneToManyRerendered = true;\n\t\t\t\tthis.isHtmlView = false;\n\t\t\t}\n\t\t});\n\n\t\tcombineLatest([\n\t\t\tthis.reportDataSvc.crawledVersion$.pipe(distinctUntilChanged()),\n\t\t\tthis.reportDataSvc.writingFeedback$.pipe(distinctUntilChanged()),\n\t\t])\n\t\t\t.pipe(\n\t\t\t\ttakeUntil(this.unsubscribe$),\n\t\t\t\tfilter(([scanSource, writingFeedback]) => !!writingFeedback && !!scanSource)\n\t\t\t)\n\t\t\t.subscribe(([scanSource, writingFeedback]) => {\n\t\t\t\tconst filteredCorrections = this.reportDataSvc.filterCorrections(\n\t\t\t\t\tJSON.parse(JSON.stringify(writingFeedback?.corrections)),\n\t\t\t\t\t{\n\t\t\t\t\t\twritingFeedback: {\n\t\t\t\t\t\t\thiddenCategories: [],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t[]\n\t\t\t\t);\n\n\t\t\t\tthis.allScanCorrectionsView = [];\n\t\t\t\tthis.allWritingFeedbacksStats = this.statisticsSvc.initCorrectionsStatistics();\n\n\t\t\t\tconst contentTextMatches = helpers.processCorrectionsText(filteredCorrections, 'text', scanSource);\n\t\t\t\tlet correctionIndex: number = 0;\n\t\t\t\tfor (let correctionsRow of contentTextMatches) {\n\t\t\t\t\tfor (let correction of correctionsRow) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tcorrection.match.type === MatchType.writingFeedback &&\n\t\t\t\t\t\t\tfilteredCorrections?.text?.chars?.operationTexts\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tthis.allScanCorrectionsView.push({\n\t\t\t\t\t\t\t\tcorrectionText: filteredCorrections.text.chars.operationTexts[correctionIndex],\n\t\t\t\t\t\t\t\ttype: correction.match.writingFeedbackType,\n\t\t\t\t\t\t\t\twrongText: this.reportCrawledVersion.text.value.substring(correction.match.start, correction.match.end),\n\t\t\t\t\t\t\t\tstart: correction.match.start,\n\t\t\t\t\t\t\t\tend: correction.match.end,\n\t\t\t\t\t\t\t\tindex: correctionIndex,\n\t\t\t\t\t\t\t} as IWritingFeedbackCorrectionViewModel);\n\t\t\t\t\t\t\tthis.statisticsSvc.increaseCorrectionsCategoryTotal(\n\t\t\t\t\t\t\t\tthis.allWritingFeedbacksStats,\n\t\t\t\t\t\t\t\tcorrection.match.writingFeedbackType\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tcorrectionIndex++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.totalFilteredCorrections =\n\t\t\t\t\t(this.allScanCorrectionsView?.length ?? 0) -\n\t\t\t\t\t(this.displayedScanCorrectionsView?.length ?? 0) -\n\t\t\t\t\t(this.reportDataSvc.excludedCorrections?.length ?? 0);\n\n\t\t\t\tthis.displayedScanCorrectionsView?.forEach(c => {\n\t\t\t\t\tc.index = this.allScanCorrectionsView.find(\n\t\t\t\t\t\tcorrection => correction.start === c.start && correction.end === c.end\n\t\t\t\t\t)?.index;\n\t\t\t\t});\n\n\t\t\t\tthis.isLoadingScanCorrections = false;\n\t\t\t});\n\n\t\tthis.reportDataSvc.filterOptions$.pipe(takeUntil(this.unsubscribe$)).subscribe(data => {\n\t\t\tif (!data) return;\n\t\t\tif (data.showAlerts === false) {\n\t\t\t\tthis.alerts = [];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.filterOptions = data;\n\t\t\tthis.alerts =\n\t\t\t\tthis.scanResultsPreviews?.notifications?.alerts?.filter(\n\t\t\t\t\ta => a.code != ALERTS.SUSPECTED_AI_TEXT_DETECTED && a.code != ALERTS.AI_INSIGHTS_LANG_UNSUPPORTED\n\t\t\t\t) ?? [];\n\t\t});\n\n\t\tthis.matchSvc.originalHtmlMatches$.pipe(takeUntil(this.unsubscribe$)).subscribe(data => {\n\t\t\tthis.isLoadingScanContent = data === null;\n\t\t\tif (data != this.reportMatches) {\n\t\t\t\tthis.oneToManyRerendered = false;\n\t\t\t}\n\t\t\tif (this.reportViewSvc.reportViewMode?.viewMode === 'writing-feedback')\n\t\t\t\tdata?.forEach(match => {\n\t\t\t\t\tif (\n\t\t\t\t\t\t!match ||\n\t\t\t\t\t\tmatch.type !== MatchType.writingFeedback ||\n\t\t\t\t\t\t!this.allScanCorrectionsView ||\n\t\t\t\t\t\tthis.allScanCorrectionsView?.length <= 0\n\t\t\t\t\t)\n\t\t\t\t\t\treturn;\n\t\t\t\t\tconst correction = this.allScanCorrectionsView[match.gid];\n\t\t\t\t\tif (!correction) return;\n\t\t\t\t\tmatch.wrongText = correction.wrongText;\n\t\t\t\t\tmatch.correctionText = correction.correctionText;\n\t\t\t\t});\n\t\t\tthis.reportMatches = data ?? [];\n\t\t});\n\n\t\tthis.matchSvc.originalTextMatches$.pipe(takeUntil(this.unsubscribe$)).subscribe(data => {\n\t\t\tif (data) {\n\t\t\t\tthis.isLoadingScanContent = false;\n\t\t\t\tthis.contentTextMatches = data;\n\t\t\t\tlet slicedMatch: SlicedMatch[] = [];\n\t\t\t\tthis.contentTextMatches.forEach(result => {\n\t\t\t\t\tconst explainText = result.filter(re => re.match.type === MatchType.aiExplain);\n\t\t\t\t\tif (explainText.length > 0) {\n\t\t\t\t\t\tslicedMatch.push(...explainText);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (this.reportViewSvc.reportViewMode?.viewMode === 'writing-feedback') {\n\t\t\t\t\tif (\n\t\t\t\t\t\tthis.writingFeedback &&\n\t\t\t\t\t\tthis.isHtmlView &&\n\t\t\t\t\t\t!(\n\t\t\t\t\t\t\tthis.writingFeedback?.corrections?.html?.chars &&\n\t\t\t\t\t\t\tthis.writingFeedback?.corrections?.html?.chars.types &&\n\t\t\t\t\t\t\tthis.writingFeedback?.corrections?.html?.chars.groupIds &&\n\t\t\t\t\t\t\tthis.writingFeedback?.corrections?.html?.chars.lengths &&\n\t\t\t\t\t\t\tthis.writingFeedback?.corrections?.html?.chars.starts\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\tthis.isHtmlView = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst filteredCorrections = this.reportDataSvc.filterCorrections(\n\t\t\t\t\t\tJSON.parse(JSON.stringify(this.reportDataSvc.writingFeedback?.corrections)),\n\t\t\t\t\t\tthis.reportDataSvc.filterOptions,\n\t\t\t\t\t\tthis.reportDataSvc.excludedCorrections\n\t\t\t\t\t);\n\t\t\t\t\tthis.displayedScanCorrectionsView = this._mapCorrectionsToViewModel(filteredCorrections);\n\t\t\t\t\tthis.showCorrectionsLoadingView = false;\n\t\t\t\t\tthis.totalFilteredCorrections =\n\t\t\t\t\t\t(this.allScanCorrectionsView?.length ?? 0) -\n\t\t\t\t\t\t(this.displayedScanCorrectionsView?.length ?? 0) -\n\t\t\t\t\t\t(this.reportDataSvc.excludedCorrections?.length ?? 0);\n\n\t\t\t\t\t// iterrate over contentTextMatches and update the wrong and correct text for each correction that is a writing-feedback type\n\t\t\t\t\tthis.contentTextMatches.forEach(row => {\n\t\t\t\t\t\trow.forEach(correction => {\n\t\t\t\t\t\t\tif (correction.match.type === MatchType.writingFeedback) {\n\t\t\t\t\t\t\t\tcorrection.match.wrongText = this.displayedScanCorrectionsView.find(\n\t\t\t\t\t\t\t\t\tc => c.start === correction.match.start && c.end === correction.match.end\n\t\t\t\t\t\t\t\t)?.wrongText;\n\t\t\t\t\t\t\t\tcorrection.match.correctionText = this.displayedScanCorrectionsView.find(\n\t\t\t\t\t\t\t\t\tc => c.start === correction.match.start && c.end === correction.match.end\n\t\t\t\t\t\t\t\t)?.correctionText;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis.matchSvc.showAIPhrases$.pipe(takeUntil(this.unsubscribe$)).subscribe(data => {\n\t\t\tthis.showAIPhrases = data;\n\t\t});\n\n\t\tthis.statisticsSvc.statistics$.pipe(takeUntil(this.unsubscribe$)).subscribe(data => {\n\t\t\tif (data) this.reportStatistics = data;\n\t\t\tconst res = Math.min(\n\t\t\t\t1,\n\t\t\t\tthis.combined / ((this.reportStatistics?.total ?? 0) - (this.reportStatistics?.omittedWords ?? 0))\n\t\t\t);\n\t\t\tthis.plagiarismScore = isNaN(res) ? 0 : res;\n\t\t});\n\n\t\tconst { originalText$, originalHtml$, multiOriginalText$ } = this.highlightSvc;\n\t\tcombineLatest([\n\t\t\toriginalText$.pipe(distinctUntilChanged()),\n\t\t\toriginalHtml$.pipe(distinctUntilChanged()),\n\t\t\tmultiOriginalText$.pipe(distinctUntilChanged()),\n\t\t\tthis.reportViewSvc.reportViewMode$.pipe(distinctUntilChanged()),\n\t\t\tthis.reportDataSvc.crawledVersion$.pipe(distinctUntilChanged()),\n\t\t])\n\t\t\t.pipe(\n\t\t\t\ttakeUntil(this.unsubscribe$),\n\t\t\t\tfilter(\n\t\t\t\t\t([originalText, originalHtml, , reportViewMode, crawledVersion]) =>\n\t\t\t\t\t\t!!crawledVersion &&\n\t\t\t\t\t\treportViewMode?.alertCode !== ALERTS.SUSPECTED_AI_TEXT_DETECTED &&\n\t\t\t\t\t\toriginalHtml?.type != MatchType.aiExplain &&\n\t\t\t\t\t\toriginalHtml?.type != MatchType.aiText &&\n\t\t\t\t\t\toriginalText?.match?.type != MatchType.aiExplain &&\n\t\t\t\t\t\toriginalText?.match?.type != MatchType.aiText\n\t\t\t\t)\n\t\t\t)\n\t\t\t.subscribe(([text, html, multiText, content]) => {\n\t\t\t\tif (multiText && multiText.length > 0) {\n\t\t\t\t\tconst selectedMatches = multiText.map(c => c.match);\n\t\t\t\t\tif (this.viewMode === 'one-to-many' || this.viewMode === 'only-ai') {\n\t\t\t\t\t\tthis._showResultsForMatchingMultiSelection(selectedMatches);\n\t\t\t\t\t} else if (this.viewMode === 'writing-feedback') {\n\t\t\t\t\t\tif (selectedMatches.length === 0) this.displayedScanCorrectionsView = this.filteredCorrections;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tthis.displayedScanCorrectionsView = this.allScanCorrectionsView.filter(sc =>\n\t\t\t\t\t\t\t\tselectedMatches.find(sm => sm.start === sc.start && sm.end === sc.end)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\tthis.correctionClicked = selectedMatches?.length > 0;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.focusedMatch = !content.isHtmlView ? text && text.match : html;\n\t\t\t\t\tif (this.viewMode === 'one-to-many' || this.viewMode === 'only-ai') {\n\t\t\t\t\t\tthis._showResultsForSelectedMatch(this.focusedMatch);\n\t\t\t\t\t} else if (this.viewMode === 'writing-feedback') {\n\t\t\t\t\t\tif (this.focusedMatch)\n\t\t\t\t\t\t\tthis.displayedScanCorrectionsView = this.allScanCorrectionsView.filter(\n\t\t\t\t\t\t\t\tsc => this.focusedMatch.start === sc.start && this.focusedMatch.end === sc.end\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\telse this.displayedScanCorrectionsView = this.filteredCorrections;\n\t\t\t\t\t\tthis.correctionClicked = !!this.focusedMatch;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis.templatesSvc.reportTemplatesSubject$.pipe(takeUntil(this.unsubscribe$)).subscribe(refs => {\n\t\t\tif (refs?.customResultsTemplate !== undefined && this.customResultsTemplate === undefined) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.customResultsTemplate = refs?.customResultsTemplate;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (refs?.customBannerSectionTemplate !== undefined && this.customBannerSectionTemplate === undefined) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.customBannerSectionTemplate = refs?.customBannerSectionTemplate;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\trefs?.customAISourceMatchUpgradeTemplate !== undefined &&\n\t\t\t\tthis.customAISourceMatchUpgradeTemplate === undefined\n\t\t\t) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.customAISourceMatchUpgradeTemplate = refs?.customAISourceMatchUpgradeTemplate;\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tthis.templatesSvc.reportTemplatesMode$.pipe(takeUntil(this.unsubscribe$)).subscribe(mode => {\n\t\t\tif (mode === undefined) return;\n\t\t\tthis.reportTemplateMode = mode;\n\t\t});\n\n\t\tthis.matchSvc.aiPhrases$.pipe(takeUntil(this.unsubscribe$)).subscribe(phrases => {\n\t\t\tif (!phrases) return;\n\t\t\tlet slicedMatch: SlicedMatch[] = [];\n\t\t\tphrases?.forEach(result => {\n\t\t\t\tconst explainText = result.filter(re => re.match.type === MatchType.aiExplain);\n\t\t\t\tif (explainText.length > 0) {\n\t\t\t\t\tslicedMatch.push(...explainText);\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (this.explainableAI.slicedMatch.length === 0) {\n\t\t\t\tthis.explainableAI.slicedMatch = slicedMatch;\n\t\t\t}\n\t\t});\n\t}\n\n\tonIFrameMessage(message: PostMessageEvent) {\n\t\tswitch (message.type) {\n\t\t\tcase 'match-select':\n\t\t\t\tconst selectedMatch = message.index !== -1 ? this.reportMatches[message.index] : null;\n\t\t\t\tif (this.viewMode === 'one-to-many') this._showResultsForSelectedMatch(selectedMatch);\n\t\t\t\telse if (this.viewMode === 'writing-feedback') {\n\t\t\t\t\tif (selectedMatch) {\n\t\t\t\t\t\tconst textSelectedMatch = this.allScanCorrectionsView[selectedMatch.gid];\n\t\t\t\t\t\tthis.displayedScanCorrectionsView = this.allScanCorrectionsView.filter(\n\t\t\t\t\t\t\tsc => textSelectedMatch.start === sc.start && textSelectedMatch.end === sc.end\n\t\t\t\t\t\t);\n\t\t\t\t\t} else this.displayedScanCorrectionsView = this.filteredCorrections;\n\t\t\t\t\tthis.correctionClicked = !!selectedMatch;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'multi-match-select':\n\t\t\t\tlet selectedMatches: Match[] = [];\n\t\t\t\tmessage.indexes.forEach(i => {\n\t\t\t\t\tif (!selectedMatches.find(s => s && s.gid === this.reportMatches[i]?.gid))\n\t\t\t\t\t\tselectedMatches.push(this.reportMatches[i]);\n\t\t\t\t});\n\t\t\t\tif (\n\t\t\t\t\t(this.viewMode === 'one-to-many' && this.selectedTap === EReportViewType.AIView) ||\n\t\t\t\t\tthis.viewMode === 'only-ai'\n\t\t\t\t) {\n\t\t\t\t\tthis._showResultsForAIInsightsMultiSelection(selectedMatches);\n\t\t\t\t} else if (this.viewMode === 'one-to-many') {\n\t\t\t\t\tthis._showResultsForMatchingMultiSelection(selectedMatches);\n\t\t\t\t} else if (this.viewMode === 'writing-feedback') {\n\t\t\t\t\tif (selectedMatches.length === 0) this.displayedScanCorrectionsView = this.filteredCorrections;\n\t\t\t\t\telse this.displayedScanCorrectionsView = [];\n\t\t\t\t\tselectedMatches.forEach(sc => {\n\t\t\t\t\t\tif (sc && sc.gid >= 0 && sc.gid < this.allScanCorrectionsView.length)\n\t\t\t\t\t\t\tthis.displayedScanCorrectionsView.push(this.allScanCorrectionsView[sc.gid]);\n\t\t\t\t\t});\n\t\t\t\t\tthis.correctionClicked = selectedMatches?.length > 0;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'upgrade-plan':\n\t\t\t\tconsole.log(message);\n\t\t\t\tbreak;\n\t\t\tcase 'match-warn':\n\t\t\t\tconsole.warn('match not found');\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tconsole.error('unknown event', message);\n\t\t}\n\t}\n\n\tprivate _showResultsForAIInsightsMultiSelection(selectedMatches: Match[]): void {\n\t\tconst selectedAIInsights: SlicedMatch[] = [];\n\t\tconst prevSelectedAIInsights = this.highlightSvc.aiInsightsSelectedResults ?? [];\n\t\tconst validSelectedAlert = this.reportDataSvc.scanResultsPreviews?.notifications?.alerts?.find(\n\t\t\ta => a.code === ALERTS.SUSPECTED_AI_TEXT_DETECTED\n\t\t);\n\t\tconst scanResult: AIScanResult = validSelectedAlert\n\t\t\t? (JSON.parse(validSelectedAlert.additionalData) as AIScanResult)\n\t\t\t: null;\n\n\t\t// Process selected matches\n\t\tselectedMatches.forEach(selectedMatch => {\n\t\t\tconst selectedAIInsight = this.explainableAI.slicedMatch[selectedMatch?.gid];\n\t\t\tif (!selectedAIInsight) return;\n\n\t\t\tselectedAIInsights.push(selectedAIInsight);\n\n\t\t\tconst isAlreadySelected = prevSelectedAIInsights.some(\n\t\t\t\tai =>\n\t\t\t\t\tai.resultRange.start === selectedAIInsight.match.start && ai.resultRange.end === selectedAIInsight.match.end\n\t\t\t);\n\n\t\t\t// Add to highlights if not already selected\n\t\t\tif (!isAlreadySelected) {\n\t\t\t\tthis.highlightSvc.setOriginalHtmlMatch(selectedMatch);\n\t\t\t}\n\t\t});\n\n\t\t// Filter out unselected AI insights\n\t\tconst unselectedAIInsights = prevSelectedAIInsights.filter(\n\t\t\tai =>\n\t\t\t\t!selectedAIInsights.some(\n\t\t\t\t\tselected => selected.match.start === ai.resultRange.start && selected.match.end === ai.resultRange.end\n\t\t\t\t)\n\t\t);\n\n\t\t// Process unselected matches\n\t\tunselectedAIInsights.forEach(unselectedMatch => {\n\t\t\tif (!scanResult) return;\n\n\t\t\tconst index = scanResult.explain.patterns.text.chars.starts.findIndex(\n\t\t\t\tstart => start === unselectedMatch.resultRange.start\n\t\t\t);\n\n\t\t\tconst matchToUnhighlight = this.reportMatches.find(match => match.gid === index);\n\t\t\tif (matchToUnhighlight) {\n\t\t\t\tthis.highlightSvc.setOriginalHtmlMatch(matchToUnhighlight);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _showResultsForSelectedMatch(selectedMatch: Match | null) {\n\t\tthis.isMultiSelection = false;\n\t\tlet viewedResults: ResultPreview[] = [];\n\t\tif (selectedMatch)\n\t\t\tviewedResults = [\n\t\t\t\t...(this.reportDataSvc.scanResultsPreviews?.results?.internet?.filter(item =>\n\t\t\t\t\tselectedMatch?.ids?.includes(item.id)\n\t\t\t\t) ?? []),\n\t\t\t\t...(this.reportDataSvc.scanResultsPreviews?.results?.batch?.filter(item =>\n\t\t\t\t\tselectedMatch?.ids?.includes(item.id)\n\t\t\t\t) ?? []),\n\t\t\t\t...(this.reportDataSvc.scanResultsPreviews?.results?.database?.filter(item =>\n\t\t\t\t\tselectedMatch?.ids?.includes(item.id)\n\t\t\t\t) ?? []),\n\t\t\t\t...(this.reportDataSvc.scanResultsPreviews?.results?.repositories?.filter(item =>\n\t\t\t\t\tselectedMatch?.ids?.includes(item.id)\n\t\t\t\t) ?? []),\n\t\t\t];\n\t\telse\n\t\t\tviewedResults = [\n\t\t\t\t...(this.reportDataSvc.scanResultsPreviews?.results?.internet ?? []),\n\t\t\t\t...(this.reportDataSvc.scanResultsPreviews?.results?.batch ?? []),\n\t\t\t\t...(this.reportDataSvc.scanResultsPreviews?.results?.database ?? []),\n\t\t\t\t...(this.reportDataSvc.scanResultsPreviews?.results?.repositories ?? []),\n\t\t\t];\n\n\t\tif (this.reportDataSvc.filterOptions && this.reportDataSvc.excludedResultsIds) {\n\t\t\tconst filteredResults = this.reportDataSvc.filterResults(\n\t\t\t\tthis.reportDataSvc.filterOptions,\n\t\t\t\tthis.reportDataSvc.excludedResultsIds\n\t\t\t);\n\t\t\tviewedResults = viewedResults.filter(r => filteredResults.find(fr => fr.id === r.id));\n\t\t}\n\n\t\tthis.scanResultsView = viewedResults\n\t\t\t.sort((a, b) => (b.isLocked ? 0 : b.matchedWords) - (a.isLocked ? 0 : a.matchedWords))\n\t\t\t.map(result => {\n\t\t\t\tconst foundResultDetail = this.scanResultsDetails?.find(r => r.id === result.id);\n\t\t\t\treturn {\n\t\t\t\t\tresultPreview: result,\n\t\t\t\t\tresultDetails: foundResultDetail,\n\t\t\t\t\tiStatisticsResult: foundResultDetail?.result?.statistics,\n\t\t\t\t\tmetadataSource: {\n\t\t\t\t\t\twords: this.scanResultsPreviews?.scannedDocument.totalWords ?? 0,\n\t\t\t\t\t\texcluded: this.scanResultsPreviews?.scannedDocument.totalExcluded ?? 0,\n\t\t\t\t\t},\n\t\t\t\t} as IResultItem;\n\t\t\t});\n\n\t\tif (selectedMatch)\n\t\t\tthis.scanResultsActions = {\n\t\t\t\t...this.scanResultsActions,\n\t\t\t\tselectedResults: this.scanResultsView.length,\n\t\t\t};\n\t\telse\n\t\t\tthis.scanResultsActions = {\n\t\t\t\t...this.scanResultsActions,\n\t\t\t\tselectedResults: 0,\n\t\t\t};\n\t}\n\n\tprivate _showResultsForMatchingMultiSelection(selctions: Match[]) {\n\t\tif (selctions?.length <= 1) this.isMultiSelection = false;\n\t\telse this.isMultiSelection = true;\n\n\t\tlet viewedResults: ResultPreview[] = [];\n\t\tif (selctions && selctions.length > 0)\n\t\t\tviewedResults = [\n\t\t\t\t...(this.reportDataSvc.scanResultsPreviews?.results?.internet?.filter(\n\t\t\t\t\titem => !!selctions.find(match => match?.ids?.includes(item.id))\n\t\t\t\t) ?? []),\n\t\t\t\t...(this.reportDataSvc.scanResultsPreviews?.results?.batch?.filter(\n\t\t\t\t\titem => !!selctions.find(match => match?.ids?.includes(item.id))\n\t\t\t\t) ?? []),\n\t\t\t\t...(this.reportDataSvc.scanResultsPreviews?.results?.database?.filter(\n\t\t\t\t\titem => !!selctions.find(match => match?.ids?.includes(item.id))\n\t\t\t\t) ?? []),\n\t\t\t\t...(this.reportDataSvc.scanResultsPreviews?.results?.repositories?.filter(\n\t\t\t\t\titem => !!selctions.find(match => match?.ids?.includes(item.id))\n\t\t\t\t) ?? []),\n\t\t\t];\n\t\telse\n\t\t\tviewedResults = [\n\t\t\t\t...(this.reportDataSvc.scanResultsPreviews?.results?.internet ?? []),\n\t\t\t\t...(this.reportDataSvc.scanResultsPreviews?.results?.batch ?? []),\n\t\t\t\t...(this.reportDataSvc.scanResultsPreviews?.results?.database ?? []),\n\t\t\t\t...(this.reportDataSvc.scanResultsPreviews?.results?.repositories ?? []),\n\t\t\t];\n\n\t\tif (this.reportDataSvc.filterOptions && this.reportDataSvc.excludedResultsIds) {\n\t\t\tconst filteredResults = this.reportDataSvc.filterResults(\n\t\t\t\tthis.reportDataSvc.filterOptions,\n\t\t\t\tthis.reportDataSvc.excludedResultsIds\n\t\t\t);\n\t\t\tviewedResults = viewedResults.filter(r => filteredResults.find(fr => fr.id === r.id));\n\t\t}\n\n\t\tthis.scanResultsView = viewedResults\n\t\t\t.sort((a, b) => (b.isLocked ? 0 : b.matchedWords) - (a.isLocked ? 0 : a.matchedWords))\n\t\t\t.map(result => {\n\t\t\t\tconst foundResultDetail = this.scanResultsDetails?.find(r => r.id === result.id);\n\t\t\t\treturn {\n\t\t\t\t\tresultPreview: result,\n\t\t\t\t\tresultDetails: foundResultDetail,\n\t\t\t\t\tiStatisticsResult: foundResultDetail?.result?.statistics,\n\t\t\t\t\tmetadataSource: {\n\t\t\t\t\t\twords: this.scanResultsPreviews?.scannedDocument.totalWords ?? 0,\n\t\t\t\t\t\texcluded: this.scanResultsPreviews?.scannedDocument.totalExcluded ?? 0,\n\t\t\t\t\t},\n\t\t\t\t} as IResultItem;\n\t\t\t});\n\n\t\tif (selctions && selctions.length > 0)\n\t\t\tthis.scanResultsActions = {\n\t\t\t\t...this.scanResultsActions,\n\t\t\t\tselectedResults: this.scanResultsView.length,\n\t\t\t};\n\t\telse\n\t\t\tthis.scanResultsActions = {\n\t\t\t\t...this.scanResultsActions,\n\t\t\t\tselectedResults: 0,\n\t\t\t};\n\t}\n\tprivate _mapCorrectionsToViewModel(\n\t\tfilteredCorrections: IWritingFeedbackScanScource\n\t): IWritingFeedbackCorrectionViewModel[] {\n\t\tif (\n\t\t\tthis.contentTextMatches.length * (this.contentTextMatches[0] ? this.contentTextMatches[0].length : 0) === 0 ||\n\t\t\t!this.contentTextMatches\n\t\t)\n\t\t\treturn [];\n\n\t\tthis.writingFeedbackStats = this.statisticsSvc.initCorrectionsStatistics();\n\n\t\tconst viewedCorrections = [];\n\t\tlet correctionIndex: number = 0;\n\t\tfor (let correctionsRow of this.contentTextMatches) {\n\t\t\tfor (let correction of correctionsRow) {\n\t\t\t\tif (correction.match.type === MatchType.writingFeedback && filteredCorrections?.text?.chars?.operationTexts) {\n\t\t\t\t\tviewedCorrections.push({\n\t\t\t\t\t\tcorrectionText: filteredCorrections.text.chars.operationTexts[correctionIndex],\n\t\t\t\t\t\ttype: correction.match.writingFeedbackType,\n\t\t\t\t\t\twrongText: this.reportCrawledVersion?.text?.value?.substring(correction.match.start, correction.match.end),\n\t\t\t\t\t\tstart: correction.match.start,\n\t\t\t\t\t\tend: correction.match.end,\n\t\t\t\t\t\tindex: this.allScanCorrectionsView?.find(\n\t\t\t\t\t\t\tc => correction.match.start === c.start && correction.match.end === c.end\n\t\t\t\t\t\t)?.index,\n\t\t\t\t\t} as IWritingFeedbackCorrectionViewModel);\n\t\t\t\t\tthis.statisticsSvc.increaseCorrectionsCategoryTotal(\n\t\t\t\t\t\tthis.writingFeedbackStats,\n\t\t\t\t\t\tcorrection.match.writingFeedbackType\n\t\t\t\t\t);\n\t\t\t\t\tcorrectionIndex++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn viewedCorrections;\n\t}\n\n\tprotected onComponentDestroy(): void {\n\t\tthis.unsubscribe$.next();\n\t\tthis.unsubscribe$.complete();\n\t}\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, combineLatest } from 'rxjs';\nimport { distinct, distinctUntilChanged, filter } from 'rxjs/operators';\nimport {\n\tICompleteResults,\n\tIExcludedCorrection,\n\tIWritingFeedback,\n\tIWritingFeedbackScanScource,\n} from '../models/report-data.models';\nimport { ResultDetailItem } from '../models/report-matches.models';\nimport { ICopyleaksReportOptions } from '../models/report-options.models';\nimport { IWritingFeedbackTypeStatistics, ReportStatistics } from '../models/report-statistics.models';\nimport * as helpers from '../utils/report-statistics-helpers';\nimport { untilDestroy } from '../utils/until-destroy';\nimport { ReportDataService } from './report-data.service';\nimport { ReportViewService } from './report-view.service';\nimport { IReportViewEvent } from '../models/report-view.models';\nimport { EWritingFeedbackTypes, EWritingFeedbackCategories } from '../enums/copyleaks-web-report.enums';\n\n@Injectable()\nexport class ReportStatisticsService implements OnDestroy {\n\tprivate _statistics = new BehaviorSubject<ReportStatistics | undefined>(undefined);\n\tpublic statistics$ = this._statistics.asObservable().pipe(distinct());\n\n\tconstructor(private _reportDataSvc: ReportDataService, private _reportViewSvc: ReportViewService) {\n\t\tconst {\n\t\t\tscanResultsPreviews$,\n\t\t\tscanResultsDetails$,\n\t\t\texcludedResultsIds$,\n\t\t\tfilterOptions$,\n\t\t\twritingFeedback$,\n\t\t\texcludedCorrections$,\n\t\t} = this._reportDataSvc;\n\t\tconst { selectedResult$, reportViewMode$ } = this._reportViewSvc;\n\n\t\tcombineLatest([\n\t\t\tscanResultsPreviews$.pipe(distinctUntilChanged()),\n\t\t\tselectedResult$.pipe(distinctUntilChanged()),\n\t\t\treportViewMode$.pipe(distinctUntilChanged()),\n\t\t])\n\t\t\t.pipe(\n\t\t\t\tuntilDestroy(this),\n\t\t\t\tfilter(([, suspect, viewModeData]) => viewModeData?.viewMode === 'one-to-one' && !!suspect)\n\t\t\t)\n\t\t\t.subscribe(([completeResult, suspect]) => {\n\t\t\t\tif (completeResult && suspect)\n\t\t\t\t\tthis.retreiveOneToOneStatistics(completeResult, suspect, {\n\t\t\t\t\t\tshowRelated: true,\n\t\t\t\t\t\tshowIdentical: true,\n\t\t\t\t\t\tshowMinorChanges: true,\n\t\t\t\t\t\tshowPageSources: true,\n\t\t\t\t\t\tshowOnlyTopResults: true,\n\t\t\t\t\t\tsetAsDefault: true,\n\t\t\t\t\t} as ICopyleaksReportOptions);\n\t\t\t});\n\n\t\tcombineLatest([\n\t\t\tscanResultsPreviews$.pipe(distinctUntilChanged()),\n\t\t\tscanResultsDetails$.pipe(distinctUntilChanged()),\n\t\t\treportViewMode$.pipe(distinctUntilChanged()),\n\t\t\texcludedResultsIds$.pipe(distinctUntilChanged()),\n\t\t\tfilterOptions$.pipe(distinctUntilChanged()),\n\t\t\twritingFeedback$.pipe(distinctUntilChanged()),\n\t\t\texcludedCorrections$.pipe(distinctUntilChanged()),\n\t\t])\n\t\t\t.pipe(\n\t\t\t\tuntilDestroy(this),\n\t\t\t\tfilter(\n\t\t\t\t\t([, , viewModeData, excludedResultsIds, filterOptions, ,]: [\n\t\t\t\t\t\tICompleteResults,\n\t\t\t\t\t\tResultDetailItem[],\n\t\t\t\t\t\tIReportViewEvent,\n\t\t\t\t\t\tstring[],\n\t\t\t\t\t\tICopyleaksReportOptions,\n\t\t\t\t\t\tIWritingFeedback,\n\t\t\t\t\t\tIExcludedCorrection[]\n\t\t\t\t\t]) =>\n\t\t\t\t\t\t(viewModeData?.viewMode === 'one-to-many' ||\n\t\t\t\t\t\t\tviewModeData?.viewMode === 'only-ai' ||\n\t\t\t\t\t\t\tviewModeData?.viewMode === 'writing-feedback') &&\n\t\t\t\t\t\texcludedResultsIds != undefined &&\n\t\t\t\t\t\tfilterOptions != undefined\n\t\t\t\t)\n\t\t\t)\n\t\t\t.subscribe(([completeResult, , , excludedResultsIds, filterOptions, writingFeedback, excludedCorrections]) => {\n\t\t\t\tif (completeResult && filterOptions && excludedResultsIds) {\n\t\t\t\t\tconst isRealtimeInitView =\n\t\t\t\t\t\tthis._reportDataSvc.isRealTimeView &&\n\t\t\t\t\t\t!this._reportDataSvc.isFilterOn &&\n\t\t\t\t\t\t(!this._reportDataSvc.excludedResultsIds || this._reportDataSvc.excludedResultsIds.length === 0);\n\n\t\t\t\t\tconst filteredResults = this._reportDataSvc.filterResults(filterOptions, excludedResultsIds);\n\t\t\t\t\tlet filteredCorrections: IWritingFeedbackScanScource;\n\t\t\t\t\tif (writingFeedback) {\n\t\t\t\t\t\tfilteredCorrections = this._reportDataSvc.filterCorrections(\n\t\t\t\t\t\t\tJSON.parse(JSON.stringify(writingFeedback?.corrections)),\n\t\t\t\t\t\t\tfilterOptions,\n\t\t\t\t\t\t\texcludedCorrections\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (isRealtimeInitView && this._reportDataSvc.totalCompleteResults != filteredResults.length) return;\n\t\t\t\t\tthis.retreieveOneToManyStatistics(\n\t\t\t\t\t\tcompleteResult,\n\t\t\t\t\t\tfilteredResults,\n\t\t\t\t\t\tfilterOptions,\n\t\t\t\t\t\tfilteredCorrections,\n\t\t\t\t\t\twritingFeedback\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\t/**\n\t * Retreive statistics for a one-to-one comparison using the complete result, suspect, and report options\n\t * @param completeResult The complete result - contains the count of total words and excluded words in the document\n\t * @param suspect the currently viewed suspect Result\n\t * @param options the current report options\n\t */\n\tretreiveOneToOneStatistics(\n\t\tcompleteResult: ICompleteResults,\n\t\tsuspect: ResultDetailItem,\n\t\toptions: ICopyleaksReportOptions\n\t) {\n\t\tconst aiStatistics = helpers.getAiStatistics(completeResult);\n\t\tthis._statistics.next({\n\t\t\tidentical: options.showIdentical && suspect.result ? suspect.result.statistics.identical : 0,\n\t\t\trelatedMeaning: options.showRelated && suspect.result ? suspect.result.statistics.relatedMeaning : 0,\n\t\t\tminorChanges: options.showMinorChanges && suspect.result ? suspect.result.statistics.minorChanges : 0,\n\t\t\tomittedWords: completeResult.scannedDocument.totalExcluded,\n\t\t\ttotal: completeResult.scannedDocument.totalWords,\n\t\t\taiScore: aiStatistics?.ai ?? 0,\n\t\t\thumanScore: aiStatistics?.human ?? 0,\n\t\t});\n\t}\n\n\t/**\n\t * Retreive statistics for a one-to-many comparison using the complete result, results,filtered results, and report options\n\t * @param completeResult the complete result\n\t * @param results list of result items containing all the results from the current scan\n\t * @param filteredResults list of results filtered by user settings, will be the same as `results` when no filter applied\n\t * @param options the current report options\n\t */\n\tretreieveOneToManyStatistics(\n\t\tcompleteResult: ICompleteResults,\n\t\tfilteredResults: ResultDetailItem[],\n\t\toptions: ICopyleaksReportOptions,\n\t\tfilteredCorrections?: IWritingFeedbackScanScource,\n\t\twritingFeedback?: IWritingFeedback\n\t) {\n\t\tconst showAll = options.showIdentical && options.showMinorChanges && options.showRelated;\n\t\tconst missingAggregated =\n\t\t\tthis._reportDataSvc.totalCompleteResults !== 0 && completeResult.results.score.aggregatedScore === 0;\n\t\tconst numberOfOriginalResults = this._reportDataSvc.totalOriginalCompleteResults;\n\t\tlet stats: ReportStatistics;\n\t\tif (\n\t\t\tthis._reportDataSvc.totalCompleteResults != filteredResults.length ||\n\t\t\t!showAll ||\n\t\t\tmissingAggregated ||\n\t\t\t!this._reportDataSvc.completeResultsSnapshot ||\n\t\t\tnumberOfOriginalResults != this._reportDataSvc.totalCompleteResults\n\t\t) {\n\t\t\tstats = helpers.calculateStatistics(completeResult, filteredResults, options);\n\n\t\t\tif (\n\t\t\t\tthis._reportDataSvc.isWritingFeedbackEnabled() &&\n\t\t\t\tthis._reportDataSvc.writingFeedback &&\n\t\t\t\tthis._reportDataSvc.writingFeedback?.corrections.text.chars.operationTexts?.length !=\n\t\t\t\t\tfilteredCorrections?.text?.chars?.operationTexts?.length\n\t\t\t) {\n\t\t\t\tconst wfStats = helpers.getWritingFeedbackStatistics(\n\t\t\t\t\twritingFeedback?.score,\n\t\t\t\t\tfilteredCorrections,\n\t\t\t\t\tcompleteResult.scannedDocument?.totalWords\n\t\t\t\t);\n\t\t\t\tstats.writingFeedbackOverallIssues = wfStats.overallTotalIssues;\n\t\t\t\tstats.writingFeedbackOverallScore = wfStats.overallScore;\n\t\t\t} else {\n\t\t\t\tstats.writingFeedbackOverallIssues = filteredCorrections?.text?.chars?.operationTexts?.length ?? 0;\n\t\t\t\tstats.writingFeedbackOverallScore =\n\t\t\t\t\t(this._reportDataSvc.completeResultsSnapshot?.writingFeedback?.score?.overallScore ?? 0) / 100;\n\t\t\t}\n\t\t} else {\n\t\t\t// * if results are still loading  or no results are fitlered while all match types are visible\n\t\t\t// * we can use the complete result stats without heavy calculations\n\t\t\tconst aiStatistics = helpers.getAiStatistics(completeResult);\n\t\t\tstats = {\n\t\t\t\taggregatedScore: (this._reportDataSvc.completeResultsSnapshot?.results?.score?.aggregatedScore ?? 0) / 100,\n\t\t\t\tidentical: this._reportDataSvc.completeResultsSnapshot?.results?.score?.identicalWords ?? 0,\n\t\t\t\trelatedMeaning: this._reportDataSvc.completeResultsSnapshot?.results?.score?.relatedMeaningWords ?? 0,\n\t\t\t\tminorChanges: this._reportDataSvc.completeResultsSnapshot?.results?.score?.minorChangedWords ?? 0,\n\t\t\t\tomittedWords: this._reportDataSvc.completeResultsSnapshot?.scannedDocument?.totalExcluded ?? 0,\n\t\t\t\ttotal: this._reportDataSvc.completeResultsSnapshot?.scannedDocument?.totalWords,\n\t\t\t\taiScore: aiStatistics?.ai ?? 0,\n\t\t\t\thumanScore: aiStatistics?.human ?? 0,\n\t\t\t\twritingFeedbackOverallScore:\n\t\t\t\t\t(this._reportDataSvc.completeResultsSnapshot?.writingFeedback?.score?.overallScore ?? 0) / 100,\n\t\t\t\twritingFeedbackOverallIssues: filteredCorrections?.text?.chars?.operationTexts?.length ?? 0,\n\t\t\t};\n\t\t}\n\n\t\tthis._statistics.next(stats);\n\t}\n\n\tpublic initCorrectionsStatistics(): IWritingFeedbackTypeStatistics[] {\n\t\treturn [\n\t\t\t{\n\t\t\t\ttype: EWritingFeedbackTypes.General,\n\t\t\t\tcategories: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: EWritingFeedbackCategories.General,\n\t\t\t\t\t\ttotalIssues: 0,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: EWritingFeedbackTypes.Grammar,\n\t\t\t\tcategories: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: EWritingFeedbackCategories.SubjectVerbDisagreement,\n\t\t\t\t\t\ttotalIssues: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: EWritingFeedbackCategories.NounForm,\n\t\t\t\t\t\ttotalIssues: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: EWritingFeedbackCategories.VerbForm,\n\t\t\t\t\t\ttotalIssues: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: EWritingFeedbackCategories.Article,\n\t\t\t\t\t\ttotalIssues: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: EWritingFeedbackCategories.Preposition,\n\t\t\t\t\t\ttotalIssues: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: EWritingFeedbackCategories.Pronoun,\n\t\t\t\t\t\ttotalIssues: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: EWritingFeedbackCategories.PartOfSpeech,\n\t\t\t\t\t\ttotalIssues: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: EWritingFeedbackCategories.Conjunction,\n\t\t\t\t\t\ttotalIssues: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: EWritingFeedbackCategories.HomoglyphError,\n\t\t\t\t\t\ttotalIssues: 0,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: EWritingFeedbackTypes.WordChoice,\n\t\t\t\tcategories: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: EWritingFeedbackCategories.MisusedWord,\n\t\t\t\t\t\ttotalIssues: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: EWritingFeedbackCategories.Homophone,\n\t\t\t\t\t\ttotalIssues: 0,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: EWritingFeedbackTypes.Mechanics,\n\t\t\t\tcategories: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: EWritingFeedbackCategories.Capitalization,\n\t\t\t\t\t\ttotalIssues: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: EWritingFeedbackCategories.Hyphen,\n\t\t\t\t\t\ttotalIssues: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: EWritingFeedbackCategories.Punctuation,\n\t\t\t\t\t\ttotalIssues: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: EWritingFeedbackCategories.Comma,\n\t\t\t\t\t\ttotalIssues: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: EWritingFeedbackCategories.Apostrophe,\n\t\t\t\t\t\ttotalIssues: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: EWritingFeedbackCategories.Space,\n\t\t\t\t\t\ttotalIssues: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: EWritingFeedbackCategories.Spelling,\n\t\t\t\t\t\ttotalIssues: 0,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: EWritingFeedbackTypes.SentenceStructure,\n\t\t\t\tcategories: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: EWritingFeedbackCategories.FusedSentence,\n\t\t\t\t\t\ttotalIssues: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: EWritingFeedbackCategories.CommaSplice,\n\t\t\t\t\t\ttotalIssues: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: EWritingFeedbackCategories.SentenceFragments,\n\t\t\t\t\t\ttotalIssues: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: EWritingFeedbackCategories.IneffectiveConstruction,\n\t\t\t\t\t\ttotalIssues: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: EWritingFeedbackCategories.ExtraWords,\n\t\t\t\t\t\ttotalIssues: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: EWritingFeedbackCategories.MissingWords,\n\t\t\t\t\t\ttotalIssues: 0,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: EWritingFeedbackTypes.MismatchInGenderBetweenAdjectives,\n\t\t\t\tcategories: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: EWritingFeedbackCategories.AdjectiveGenderAgreement,\n\t\t\t\t\t\ttotalIssues: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: EWritingFeedbackCategories.AdjectiveNumberAgreement,\n\t\t\t\t\t\ttotalIssues: 0,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: EWritingFeedbackTypes.IncorrectNumberAgreementBetweenArticles,\n\t\t\t\tcategories: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: EWritingFeedbackCategories.ArticleGenderAgreement,\n\t\t\t\t\t\ttotalIssues: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: EWritingFeedbackCategories.ArticleNumberAgreement,\n\t\t\t\t\t\ttotalIssues: 0,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: EWritingFeedbackTypes.IncorrectNumberAgreementBetweenNouns,\n\t\t\t\tcategories: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: EWritingFeedbackCategories.NounGenderAgreement,\n\t\t\t\t\t\ttotalIssues: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: EWritingFeedbackCategories.SubjunctiveMood,\n\t\t\t\t\t\ttotalIssues: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: EWritingFeedbackCategories.CompoundWordError,\n\t\t\t\t\t\ttotalIssues: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: EWritingFeedbackCategories.MoodInconsistency,\n\t\t\t\t\t\ttotalIssues: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: EWritingFeedbackCategories.AccentError,\n\t\t\t\t\t\ttotalIssues: 0,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t];\n\t}\n\n\tpublic increaseCorrectionsCategoryTotal(\n\t\twritingFeedbackStats: IWritingFeedbackTypeStatistics[],\n\t\ttype: EWritingFeedbackCategories\n\t) {\n\t\tswitch (type) {\n\t\t\tcase EWritingFeedbackCategories.General:\n\t\t\t\twritingFeedbackStats[EWritingFeedbackTypes.General].categories[0].totalIssues++;\n\t\t\t\tbreak;\n\n\t\t\tcase EWritingFeedbackCategories.SubjectVerbDisagreement:\n\t\t\tcase EWritingFeedbackCategories.NounForm:\n\t\t\tcase EWritingFeedbackCategories.VerbForm:\n\t\t\tcase EWritingFeedbackCategories.Article:\n\t\t\tcase EWritingFeedbackCategories.Preposition:\n\t\t\tcase EWritingFeedbackCategories.Pronoun:\n\t\t\tcase EWritingFeedbackCategories.PartOfSpeech:\n\t\t\tcase EWritingFeedbackCategories.Conjunction:\n\t\t\t\twritingFeedbackStats[EWritingFeedbackTypes.Grammar].categories[\n\t\t\t\t\ttype - EWritingFeedbackCategories.SubjectVerbDisagreement\n\t\t\t\t].totalIssues++;\n\t\t\t\tbreak;\n\n\t\t\tcase EWritingFeedbackCategories.MisusedWord:\n\t\t\tcase EWritingFeedbackCategories.Homophone:\n\t\t\t\twritingFeedbackStats[EWritingFeedbackTypes.WordChoice].categories[type - EWritingFeedbackCategories.MisusedWord]\n\t\t\t\t\t.totalIssues++;\n\t\t\t\tbreak;\n\n\t\t\tcase EWritingFeedbackCategories.Capitalization:\n\t\t\tcase EWritingFeedbackCategories.Hyphen:\n\t\t\tcase EWritingFeedbackCategories.Punctuation:\n\t\t\tcase EWritingFeedbackCategories.Comma:\n\t\t\tcase EWritingFeedbackCategories.Apostrophe:\n\t\t\tcase EWritingFeedbackCategories.Space:\n\t\t\tcase EWritingFeedbackCategories.Spelling:\n\t\t\t\twritingFeedbackStats[EWritingFeedbackTypes.Mechanics].categories[\n\t\t\t\t\ttype - EWritingFeedbackCategories.Capitalization\n\t\t\t\t].totalIssues++;\n\t\t\t\tbreak;\n\n\t\t\tcase EWritingFeedbackCategories.FusedSentence:\n\t\t\tcase EWritingFeedbackCategories.CommaSplice:\n\t\t\tcase EWritingFeedbackCategories.SentenceFragments:\n\t\t\tcase EWritingFeedbackCategories.IneffectiveConstruction:\n\t\t\tcase EWritingFeedbackCategories.ExtraWords:\n\t\t\tcase EWritingFeedbackCategories.MissingWords:\n\t\t\t\twritingFeedbackStats[EWritingFeedbackTypes.SentenceStructure].categories[\n\t\t\t\t\ttype - EWritingFeedbackCategories.FusedSentence\n\t\t\t\t].totalIssues++;\n\t\t\t\tbreak;\n\n\t\t\tcase EWritingFeedbackCategories.AdjectiveGenderAgreement:\n\t\t\tcase EWritingFeedbackCategories.AdjectiveNumberAgreement:\n\t\t\t\twritingFeedbackStats[EWritingFeedbackTypes.MismatchInGenderBetweenAdjectives].categories[\n\t\t\t\t\ttype - EWritingFeedbackCategories.AdjectiveGenderAgreement\n\t\t\t\t].totalIssues++;\n\t\t\t\tbreak;\n\n\t\t\tcase EWritingFeedbackCategories.ArticleGenderAgreement:\n\t\t\tcase EWritingFeedbackCategories.ArticleNumberAgreement:\n\t\t\t\twritingFeedbackStats[EWritingFeedbackTypes.IncorrectNumberAgreementBetweenArticles].categories[\n\t\t\t\t\ttype - EWritingFeedbackCategories.ArticleGenderAgreement\n\t\t\t\t].totalIssues++;\n\t\t\t\tbreak;\n\n\t\t\tcase EWritingFeedbackCategories.NounGenderAgreement:\n\t\t\tcase EWritingFeedbackCategories.SubjunctiveMood:\n\t\t\tcase EWritingFeedbackCategories.CompoundWordError:\n\t\t\tcase EWritingFeedbackCategories.MoodInconsistency:\n\t\t\tcase EWritingFeedbackCategories.AccentError:\n\t\t\t\twritingFeedbackStats[EWritingFeedbackTypes.IncorrectNumberAgreementBetweenNouns].categories[\n\t\t\t\t\ttype - EWritingFeedbackCategories.NounGenderAgreement\n\t\t\t\t].totalIssues++;\n\t\t\t\tbreak;\n\n\t\t\tcase EWritingFeedbackCategories.HomoglyphError:\n\t\t\t\twritingFeedbackStats[EWritingFeedbackTypes.Grammar].categories[8].totalIssues++;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t/** dtor */\n\tngOnDestroy() {\n\t\tthis._statistics.complete();\n\t}\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ResultPreview } from '../models/report-data.models';\n\n@Injectable()\nexport class ReportRealtimeResultsService {\n\tprivate _onNewResults$ = new Subject<ResultPreview[]>();\n\n\t/** Emits matches that are relevant to source html one-to-many mode */\n\tpublic get onNewResults$() {\n\t\treturn this._onNewResults$;\n\t}\n\n\t/**\n\t * Function that adds new results to the report real-time view,\n\t * these result will be added to the already existing results & will be available for one-to-one view\n\t * @param newResults List of new results for real time view\n\t */\n\tpublic pushNewResults(newResults: ResultPreview[]): void {\n\t\tthis._onNewResults$.next(newResults);\n\t}\n\n\tngOnDestroy(): void {}\n}\n","import { Component, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { IWritingFeedbackCorrectionViewModel } from '../../../models/report-data.models';\nimport { EWritingFeedbackCategories } from '../../../enums/copyleaks-web-report.enums';\nimport { getCorrectionCategoryTitle, getCorrectionCategoryDescription } from '../../../utils/enums-helpers';\nimport { ReportDataService } from '../../../services/report-data.service';\nimport { untilDestroy } from '../../../utils/until-destroy';\nimport { trigger, state, transition, animate, style } from '@angular/animations';\nimport { ReportMatchesService } from '../../../services/report-matches.service';\nimport { ReportMatchHighlightService } from '../../../services/report-match-highlight.service';\nimport { ReportViewService } from '../../../services/report-view.service';\n\n@Component({\n\tselector: 'cr-correction',\n\ttemplateUrl: './cr-correction.component.html',\n\tstyleUrls: ['./cr-correction.component.scss'],\n\tanimations: [\n\t\ttrigger('fadeIn', [\n\t\t\tstate('void', style({ opacity: 0 })),\n\t\t\ttransition(':enter', [animate('0.5s ease-in', style({ opacity: 1 }))]),\n\t\t]),\n\t],\n\tstandalone: false,\n})\n/**\n * Represents the correction component used for displaying and interacting with a writing feedback correction.\n */\nexport class CrCorrectionComponent implements OnInit, OnDestroy {\n\t@HostListener('click', ['$event'])\n\thandleClick(_): void {\n\t\tif (this.isExcludeView || this.showLoadingView || !this.reportMatchesSvc) return;\n\t\tthis.highlightService.correctionSelect$.next(this.correction);\n\t}\n\n\t/**\n\t * @Input Represents the correction for the writing feedback.\n\t */\n\t@Input() correction: IWritingFeedbackCorrectionViewModel;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether the view is for the execluded correction view.\n\t */\n\t@Input() isExcludeView: boolean = false;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether to show the correction description or not.\n\t */\n\t@Input() hideDescription: boolean = false;\n\n\t/**\n\t * @Input Service for all the report data.\n\t */\n\t@Input() reportDataSvc: ReportDataService;\n\n\t/**\n\t * @Input Service for the report view.\n\t */\n\t@Input() reportViewSvc: ReportViewService;\n\n\t/**\n\t * @Input Service for report matches and corrections.\n\t */\n\t@Input() reportMatchesSvc: ReportMatchesService;\n\n\t/**\n\t * @Input Service for report match highlight.\n\t */\n\t@Input() highlightService: ReportMatchHighlightService;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether to show the loading view or not.\n\t */\n\t@Input() showLoadingView: boolean = false;\n\n\t/**\n\t * Emits an event when a category is selected.\n\t * @event selectCategory\n\t * @type {EventEmitter<EWritingFeedbackCategories>}\n\t */\n\t@Output() selectCategory = new EventEmitter<EWritingFeedbackCategories>();\n\n\tisExcluded: boolean = false;\n\texcludedTooltipText: string;\n\tisMenuAccessible: boolean = true;\n\tdocDirection: 'ltr' | 'rtl';\n\n\tget getCorrectionType(): string {\n\t\treturn getCorrectionCategoryTitle(this.correction?.type);\n\t}\n\n\tget getCorrectionDescription(): string {\n\t\treturn getCorrectionCategoryDescription(this.correction?.type);\n\t}\n\n\tEWritingFeedbackTypes = EWritingFeedbackCategories;\n\tcorrectionDescription: string;\n\tcorrectionType: string;\n\tconstructor() {}\n\n\tngOnInit(): void {\n\t\tif (this.reportDataSvc)\n\t\t\tthis.reportDataSvc.excludedCorrections$.pipe(untilDestroy(this)).subscribe(excludedCorrections => {\n\t\t\t\tif (!excludedCorrections) return;\n\t\t\t\tif (!excludedCorrections.find(ec => ec.end === this.correction.end && ec.start === this.correction.start)) {\n\t\t\t\t\tthis.isExcluded = false;\n\t\t\t\t\tthis.excludedTooltipText = $localize`Ignore correction`;\n\t\t\t\t} else {\n\t\t\t\t\tthis.isExcluded = true;\n\t\t\t\t\tthis.excludedTooltipText = $localize`Include correction`;\n\t\t\t\t}\n\t\t\t});\n\n\t\tif (this.reportViewSvc)\n\t\t\tthis.reportViewSvc.documentDirection$.pipe(untilDestroy(this)).subscribe(dir => {\n\t\t\t\tthis.docDirection = dir;\n\t\t\t});\n\t}\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif (changes['correction']) {\n\t\t\tthis.correctionType = this.getCorrectionType;\n\t\t\tthis.correctionDescription = this.getCorrectionDescription;\n\n\t\t\tif (this.correction.type === EWritingFeedbackCategories.Space) {\n\t\t\t\tthis.correction.correctionText = this.replaceExtraSpacesWithSpan(this.correction.correctionText);\n\t\t\t\tthis.correction.wrongText = this.replaceExtraSpacesWithSpan(this.correction.wrongText);\n\t\t\t}\n\t\t}\n\t}\n\n\treplaceExtraSpacesWithSpan(correctionText) {\n\t\tconst regex = /( {2,})/g;\n\t\tconst replacementFunction = correction => {\n\t\t\tlet result = ' ';\n\t\t\tfor (let i = 1; i < correction.length; i++) {\n\t\t\t\tresult += `<span class=\"duplicated-space\">&nbsp;</span>`;\n\t\t\t}\n\t\t\treturn result;\n\t\t};\n\t\treturn correctionText.replace(regex, replacementFunction);\n\t}\n\n\tignoreCorrection() {\n\t\tif (\n\t\t\t!this.reportDataSvc.excludedCorrections?.find(\n\t\t\t\tec => ec.end === this.correction?.end && ec.start === this.correction?.start\n\t\t\t)\n\t\t) {\n\t\t\tthis.reportDataSvc.excludedCorrections$.next([\n\t\t\t\t...(this.reportDataSvc.excludedCorrections ?? []),\n\t\t\t\tthis.correction,\n\t\t\t]);\n\t\t\tthis.highlightService.clearAllMatchs();\n\t\t}\n\t}\n\n\texcludeToggle() {\n\t\tif (\n\t\t\t!this.reportDataSvc.excludedCorrections?.find(\n\t\t\t\tec => ec.end === this.correction?.end && ec.start === this.correction?.start\n\t\t\t)\n\t\t)\n\t\t\tthis.reportDataSvc.excludedCorrections$.next([\n\t\t\t\t...(this.reportDataSvc.excludedCorrections ?? []),\n\t\t\t\tthis.correction,\n\t\t\t]);\n\t\telse\n\t\t\tthis.reportDataSvc.excludedCorrections$.next([\n\t\t\t\t...(this.reportDataSvc.excludedCorrections ?? []).filter(\n\t\t\t\t\tec => ec.end !== this.correction?.end && ec.start !== this.correction?.start\n\t\t\t\t),\n\t\t\t]);\n\t}\n\n\tgoToCorrectionCategoryView(event?: KeyboardEvent) {\n\t\tif (!event) this.selectCategory.emit(this.correction?.type);\n\t\telse {\n\t\t\tif (event.key === 'Enter') {\n\t\t\t\tthis.selectCategory.emit(this.correction?.type);\n\t\t\t}\n\t\t}\n\t}\n\n\topenResultMenu(menuTrigger: any): void {\n\t\tif (this.isMenuAccessible) {\n\t\t\tmenuTrigger?.openMenu();\n\t\t}\n\t}\n\n\tngOnDestroy(): void {}\n}\n","<ng-container *ngIf=\"!showLoadingView; else loadingViewRef\">\n\t<div [dir]=\"docDirection\" class=\"correction-container\" (keyup.enter)=\"handleClick($event)\">\n\t\t<div class=\"correction-info-container\">\n\t\t\t<div class=\"correction-description-container\">\n\t\t\t\t<span\n\t\t\t\t\t*ngIf=\"correction?.wrongText != correction?.correctionText\"\n\t\t\t\t\tclass=\"wrong-text\"\n\t\t\t\t\t[style.max-width]=\"!correction.correctionText ? '100%' : ''\"\n\t\t\t\t\t[matTooltip]=\"correction?.wrongText ?? ''\"\n\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t\t[innerHtml]=\"correction.wrongText\"\n\t\t\t\t\ti18n-matTooltip></span>\n\t\t\t\t<mat-icon\n\t\t\t\t\t*ngIf=\"correction?.wrongText != correction?.correctionText && correction.correctionText\"\n\t\t\t\t\tclass=\"arrow-icon\"\n\t\t\t\t\tfontSet=\"material-icons-round\">\n\t\t\t\t\teast\n\t\t\t\t</mat-icon>\n\t\t\t\t<span\n\t\t\t\t\t*ngIf=\"correction.correctionText\"\n\t\t\t\t\tclass=\"correction-text\"\n\t\t\t\t\t[style.max-width]=\"correction?.wrongText != correction?.correctionText ? '42%' : '100%'\"\n\t\t\t\t\t[matTooltip]=\"correction?.correctionText ?? ''\"\n\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t\t[innerHtml]=\"correction.correctionText\"\n\t\t\t\t\ti18n-matTooltip></span>\n\t\t\t</div>\n\n\t\t\t<mat-chip-option\n\t\t\t\t*ngIf=\"!hideDescription\"\n\t\t\t\t[tabIndex]=\"0\"\n\t\t\t\tclass=\"correction-type\"\n\t\t\t\tmatTooltip=\"Show All Corrections by Category\"\n\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\trole=\"button\"\n\t\t\t\taria-label=\"Show All Corrections by Category\"\n\t\t\t\t(click)=\"$event.stopPropagation(); $event.preventDefault(); goToCorrectionCategoryView()\"\n\t\t\t\t(keydown)=\"goToCorrectionCategoryView($event)\"\n\t\t\t\ti18n-matTooltip\n\t\t\t\ti18n-aria-label>\n\t\t\t\t{{ correctionType }}\n\t\t\t</mat-chip-option>\n\t\t</div>\n\t\t<button\n\t\t\tmat-icon-button\n\t\t\t*ngIf=\"isExcludeView; else excludedIconRef\"\n\t\t\t[tabIndex]=\"0\"\n\t\t\tclass=\"icon-button exclude-toggle-btn\"\n\t\t\t(click)=\"excludeToggle()\"\n\t\t\t[matTooltip]=\"excludedTooltipText\"\n\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\taria-label=\"Include or exclude correction in report\"\n\t\t\ti18n-aria-label>\n\t\t\t<mat-icon class=\"options-icon\" fontSet=\"material-icons-outlined\">\n\t\t\t\t{{ isExcluded ? 'visibility' : 'visibility_off' }}\n\t\t\t</mat-icon>\n\t\t</button>\n\t\t<ng-template #excludedIconRef>\n\t\t\t<mat-icon\n\t\t\t\t#menuTrigger=\"matMenuTrigger\"\n\t\t\t\t(keydown)=\"$event.stopPropagation(); $event.preventDefault(); openResultMenu(menuTrigger)\"\n\t\t\t\tclass=\"options-icon\"\n\t\t\t\tfontSet=\"material-icons-round\"\n\t\t\t\t(click)=\"$event.stopPropagation(); $event.preventDefault()\"\n\t\t\t\t[matMenuTriggerFor]=\"menu\"\n\t\t\t\tmatTooltip=\"More Options\"\n\t\t\t\ti18n-matTooltip\n\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\taria-label=\"More Options\"\n\t\t\t\trole=\"button\"\n\t\t\t\ti18n-aria-label\n\t\t\t\t[tabIndex]=\"isMenuAccessible ? 0 : -1\"\n\t\t\t\t[attr.aria-hidden]=\"!isMenuAccessible\">\n\t\t\t\tmore_vert\n\t\t\t</mat-icon>\n\t\t</ng-template>\n\t</div>\n\t<span *ngIf=\"!hideDescription\" class=\"correction-type-description\" [dir]=\"docDirection\" i18n>\n\t\t{{ correctionDescription }}\n\t</span>\n</ng-container>\n\n<ng-template #loadingViewRef>\n\t<div class=\"loader-container\">\n\t\t<div class=\"correction-title-loader\">\n\t\t\t<ngx-skeleton-loader\n\t\t\t\tclass=\"skeleton correction-line-loader\"\n\t\t\t\t[appearance]=\"'line'\"\n\t\t\t\tstyle=\"width: 40%\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"skeleton circle-loader\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader\n\t\t\t\tclass=\"skeleton correction-line-loader\"\n\t\t\t\t[appearance]=\"'line'\"\n\t\t\t\tstyle=\"width: 40%\"></ngx-skeleton-loader>\n\t\t</div>\n\t\t<ngx-skeleton-loader\n\t\t\tclass=\"skeleton correction-line-loader\"\n\t\t\t[appearance]=\"'line'\"\n\t\t\tstyle=\"width: 15%\"></ngx-skeleton-loader>\n\n\t\t<ngx-skeleton-loader\n\t\t\tclass=\"skeleton correction-line-loader correction-description-loader\"\n\t\t\t[appearance]=\"'line'\"\n\t\t\tstyle=\"width: 100%\"></ngx-skeleton-loader>\n\t</div>\n</ng-template>\n\n<mat-menu class=\"result-item-menu-list\" #menu=\"matMenu\" yPosition=\"below\">\n\t<button mat-menu-item [disableRipple]=\"true\" (click)=\"ignoreCorrection()\">\n\t\t<mat-icon class=\"mat-menu-item-icon\" fontSet=\"material-icons-outlined\">visibility_off</mat-icon>\n\t\t<span class=\"mat-menu-item-text\" i18n>Ignore Correction</span>\n\t</button>\n</mat-menu>\n","export enum EFilterCorrectionsDialogView {\n\tFilter,\n\tExclude,\n}\n","import { Injectable } from '@angular/core';\nimport { EWritingFeedbackCategories } from '../../../enums/copyleaks-web-report.enums';\nimport { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { getSelectedCategoryStats } from '../../../utils/enums-helpers';\nimport { IWritingFeedbackTypeStatistics } from '../../../models/report-statistics.models';\n\n@Injectable()\nexport class FilterCorrectionsDialogService {\n\tprivate _filterCorrectionsForm: UntypedFormGroup;\n\n\tget filterCorrectionsForm(): UntypedFormGroup {\n\t\treturn this._filterCorrectionsForm;\n\t}\n\n\tconstructor(private _formBuilder: UntypedFormBuilder) {}\n\n\tpublic initForm(\n\t\thiddenCategories: EWritingFeedbackCategories[],\n\t\twritingFeedbackStats: IWritingFeedbackTypeStatistics[]\n\t): void {\n\t\tconst controls = Object.keys(EWritingFeedbackCategories)\n\t\t\t.filter(key => !isNaN(Number(EWritingFeedbackCategories[key])))\n\t\t\t.reduce((acc, key) => {\n\t\t\t\tconst isHidden = hiddenCategories.includes(Number(EWritingFeedbackCategories[key]));\n\n\t\t\t\tconst categoryStat = getSelectedCategoryStats(Number(EWritingFeedbackCategories[key]), writingFeedbackStats);\n\t\t\t\tconst isDisabled: boolean = !categoryStat || categoryStat.totalIssues === 0;\n\n\t\t\t\tconst control = new UntypedFormControl({ value: !isHidden, disabled: isDisabled });\n\t\t\t\tacc[key] = control;\n\t\t\t\treturn acc;\n\t\t\t}, {});\n\n\t\tthis._filterCorrectionsForm = this._formBuilder.group(controls);\n\t}\n\n\tpublic onSubmit(): EWritingFeedbackCategories[] {\n\t\tconst selectedCategories: EWritingFeedbackCategories[] = [];\n\n\t\tObject.keys(this._filterCorrectionsForm.value).forEach(key => {\n\t\t\tif (this._filterCorrectionsForm.value[key] == false) {\n\t\t\t\t// If the category checkbox is checked\n\t\t\t\t// Convert the string key back to the enum value\n\t\t\t\tconst enumValue = EWritingFeedbackCategories[key as keyof typeof EWritingFeedbackCategories];\n\t\t\t\tif (enumValue !== undefined) {\n\t\t\t\t\tselectedCategories.push(enumValue);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn selectedCategories;\n\t}\n\n\tpublic clearFilter(): void {\n\t\tconst controls = this._filterCorrectionsForm.controls;\n\n\t\t// Set all the categories checkboxes to be checked\n\t\tconst newValues = {};\n\t\tObject.keys(controls).forEach(key => {\n\t\t\tnewValues[key] = true;\n\t\t});\n\n\t\tthis._filterCorrectionsForm.patchValue(newValues);\n\t}\n}\n","import { Component, Inject, OnDestroy, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { IFilterCorrectionsDialogData } from './models/filter-corrections-dialog.models';\nimport { EFilterCorrectionsDialogView } from './enums/filter-corrections-dialog.enums';\nimport { IWritingFeedbackCorrectionViewModel } from '../../models/report-data.models';\nimport { untilDestroy } from '../../utils/until-destroy';\nimport { EResponsiveLayoutType } from '../../enums/copyleaks-web-report.enums';\nimport { FilterCorrectionsDialogService } from './services/filter-corrections-dialog.service';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { startWith } from 'rxjs/operators';\nimport { getCorrectionCategoryDescription, getCorrectionCategoryTitle } from '../../utils/enums-helpers';\nimport { IWritingFeedbackTypeStatistics } from '../../models/report-statistics.models';\n\n@Component({\n\tselector: 'cr-filter-corrections-dialog',\n\ttemplateUrl: './filter-corrections-dialog.component.html',\n\tstyleUrls: ['./filter-corrections-dialog.component.scss'],\n\tstandalone: false,\n})\nexport class FilterCorrectionsDialogComponent implements OnInit, OnDestroy {\n\tisMobile: boolean;\n\tselectedView: EFilterCorrectionsDialogView = EFilterCorrectionsDialogView.Filter;\n\tEFilterCorrectionsDialogView = EFilterCorrectionsDialogView;\n\n\texcludedCorrections: IWritingFeedbackCorrectionViewModel[] = [];\n\tsearchedExcludedCorrections: IWritingFeedbackCorrectionViewModel[] = [];\n\twritingFeedbackStats: IWritingFeedbackTypeStatistics[];\n\n\tfilterCorrectionsForm: UntypedFormGroup;\n\ttotalExcludedCorrections: number = 0;\n\tcategoriesKeys: string[];\n\tallIncluded: boolean;\n\ttotalCorrections: number = 0;\n\ttotalFilteredCorrections: number = 0;\n\tsearchControl = new UntypedFormControl('');\n\n\tdocDirection: 'ltr' | 'rtl';\n\n\tconstructor(\n\t\tprivate _filterCorrectionsSvc: FilterCorrectionsDialogService,\n\t\tprivate _dialogRef: MatDialogRef<FilterCorrectionsDialogComponent>,\n\t\t@Inject(MAT_DIALOG_DATA) public data: IFilterCorrectionsDialogData\n\t) {}\n\n\tngOnInit(): void {\n\t\tif (this.data?.reportViewSvc) {\n\t\t\tthis.data.reportViewSvc.reportResponsiveMode$.pipe(untilDestroy(this)).subscribe(view => {\n\t\t\t\tthis.isMobile = view.mode === EResponsiveLayoutType.Mobile;\n\t\t\t});\n\n\t\t\tthis.data.reportViewSvc.documentDirection$.pipe(untilDestroy(this)).subscribe(dir => {\n\t\t\t\tthis.docDirection = dir;\n\t\t\t});\n\t\t}\n\n\t\tthis.selectedView = this.data.selectedView ?? EFilterCorrectionsDialogView.Filter;\n\t\tif (this.selectedView === EFilterCorrectionsDialogView.Exclude)\n\t\t\tthis._dialogRef.addPanelClass('excluded-corrections-dialog');\n\n\t\tthis.totalCorrections = this.data.totalCorrections ?? 0;\n\t\tthis.totalFilteredCorrections = this.data.totalFilteredCorrections ?? 0;\n\t\tthis.writingFeedbackStats = this.data.writingFeedbackStats;\n\n\t\tthis.excludedCorrections = this.searchedExcludedCorrections = this.data?.reportDataSvc.excludedCorrections;\n\t\tthis.data?.reportDataSvc.excludedCorrections$.pipe(untilDestroy(this)).subscribe(excludedCorrections => {\n\t\t\tthis.totalExcludedCorrections = (excludedCorrections ?? []).length;\n\t\t\tthis.allIncluded = excludedCorrections?.length !== (this.excludedCorrections ?? []).length;\n\t\t});\n\n\t\tconst hiddenCategories = this.data?.reportDataSvc?.filterOptions?.writingFeedback?.hiddenCategories ?? [];\n\t\tthis._filterCorrectionsSvc.initForm(hiddenCategories, this.writingFeedbackStats);\n\t\tthis.filterCorrectionsForm = this._filterCorrectionsSvc.filterCorrectionsForm;\n\t\tthis.categoriesKeys = Object.keys(this._filterCorrectionsSvc.filterCorrectionsForm?.controls);\n\n\t\tthis.searchControl.valueChanges.pipe(untilDestroy(this), startWith('')).subscribe(value => {\n\t\t\tthis.searchedExcludedCorrections = this._searchCorrections(value || '');\n\t\t});\n\t}\n\n\tonClearFilter(): void {\n\t\tthis._filterCorrectionsSvc.clearFilter();\n\t}\n\n\tonDiscardChanges(): void {\n\t\tthis._dialogRef.close();\n\t}\n\n\tonSaveChanges(): void {\n\t\tconst selectedCategories = this._filterCorrectionsSvc.onSubmit();\n\t\tthis.data.reportDataSvc.filterOptions$.next({\n\t\t\t...this.data.reportDataSvc.filterOptions,\n\t\t\twritingFeedback: {\n\t\t\t\thiddenCategories: selectedCategories,\n\t\t\t},\n\t\t});\n\t\tthis._dialogRef.close();\n\t}\n\n\tviewExcludedDialog() {\n\t\tthis.selectedView = EFilterCorrectionsDialogView.Exclude;\n\t\tthis._dialogRef.addPanelClass('excluded-corrections-dialog');\n\t}\n\n\tonCloseExecludedView() {\n\t\tthis.selectedView = EFilterCorrectionsDialogView.Filter;\n\t\tthis._dialogRef.removePanelClass('excluded-corrections-dialog');\n\t\tthis.excludedCorrections = this.searchedExcludedCorrections = this.data?.reportDataSvc.excludedCorrections;\n\t}\n\n\tformatCategroyFormControlKey(key: string): string {\n\t\tconst formattedKey = key.replace(/([A-Z])/g, ' $1').trim();\n\t\treturn formattedKey.charAt(0).toUpperCase() + formattedKey.slice(1);\n\t}\n\n\tincludeAllToggle() {\n\t\tif (!this.allIncluded) this.data.reportDataSvc.excludedCorrections$.next([]);\n\t\telse this.data.reportDataSvc.excludedCorrections$.next(this.excludedCorrections);\n\t}\n\n\tprivate _searchCorrections(searchValue: string): IWritingFeedbackCorrectionViewModel[] {\n\t\tif (!searchValue || searchValue === '') return this.excludedCorrections;\n\n\t\tsearchValue = searchValue.toLowerCase();\n\n\t\treturn this.excludedCorrections.filter(\n\t\t\tec =>\n\t\t\t\tec.correctionText?.toLowerCase().includes(searchValue) ||\n\t\t\t\tec.wrongText?.toLowerCase().includes(searchValue) ||\n\t\t\t\tgetCorrectionCategoryTitle(ec.type)?.toLowerCase()?.includes(searchValue) ||\n\t\t\t\tgetCorrectionCategoryDescription(ec.type)?.toLowerCase()?.includes(searchValue)\n\t\t);\n\t}\n\n\tngOnDestroy(): void {}\n}\n","<ng-container [ngSwitch]=\"selectedView\">\n\t<ng-container *ngSwitchCase=\"EFilterCorrectionsDialogView.Filter\">\n\t\t<div mat-dialog-title class=\"header-container\">\n\t\t\t<div class=\"title-container\">\n\t\t\t\t<span web-report-title-font class=\"dialog-title\" i18n>Filter Writing Assistant Corrections</span>\n\t\t\t\t<span web-report-title-font class=\"corrections-stats\" i18n>Corrections ({{ totalCorrections }})</span>\n\t\t\t\t<div\n\t\t\t\t\tclass=\"stats-chips-container\"\n\t\t\t\t\taria-label=\"This is a list of tags the are associated with the given corrections\"\n\t\t\t\t\ti18n-aria-label\n\t\t\t\t\trole=\"list\">\n\t\t\t\t\t<mat-chip-option\n\t\t\t\t\t\t*ngIf=\"totalFilteredCorrections > 0\"\n\t\t\t\t\t\tclass=\"filtered-chip\"\n\t\t\t\t\t\trole=\"listitem\"\n\t\t\t\t\t\taria-label=\"Shows the total number of filtered corrections\"\n\t\t\t\t\t\ti18n-aria-label\n\t\t\t\t\t\ti18n>\n\t\t\t\t\t\t{{ totalFilteredCorrections }} filtered\n\t\t\t\t\t</mat-chip-option>\n\t\t\t\t\t<mat-chip-option\n\t\t\t\t\t\t*ngIf=\"totalExcludedCorrections > 0\"\n\t\t\t\t\t\tclass=\"excluded-chip\"\n\t\t\t\t\t\t(click)=\"viewExcludedDialog()\"\n\t\t\t\t\t\t(keyup.enter)=\"viewExcludedDialog()\"\n\t\t\t\t\t\ttabIndex=\"0\"\n\t\t\t\t\t\trole=\"listitem\"\n\t\t\t\t\t\taria-label=\"Opens list of the excluded corrections\"\n\t\t\t\t\t\ti18n-aria-label\n\t\t\t\t\t\ti18n>\n\t\t\t\t\t\t{{ totalExcludedCorrections }} excluded\n\t\t\t\t\t</mat-chip-option>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<button\n\t\t\t\tmat-button\n\t\t\t\tclass=\"clear-filter-btn clear-filter-button-text icon-button\"\n\t\t\t\taria-label=\"Reset filters\"\n\t\t\t\ti18n-aria-label\n\t\t\t\t[disableRipple]=\"true\"\n\t\t\t\t(click)=\"onClearFilter()\">\n\t\t\t\t<mat-icon class=\"clear-filter-button-icon\">refresh</mat-icon>\n\t\t\t\t<span class=\"clear-filter-button-text\" i18n>Clear filter</span>\n\t\t\t</button>\n\t\t</div>\n\n\t\t<div mat-dialog-content class=\"content-container\" [dir]=\"docDirection\">\n\t\t\t<form [formGroup]=\"filterCorrectionsForm\">\n\t\t\t\t<div class=\"corrections-container\">\n\t\t\t\t\t<div class=\"correction-type-container\">\n\t\t\t\t\t\t<span class=\"correction-type-title\" web-report-title-font i18n>General</span>\n\t\t\t\t\t\t<div class=\"correction-categories-container\">\n\t\t\t\t\t\t\t<mat-checkbox\n\t\t\t\t\t\t\t\t*ngFor=\"let key of categoriesKeys | slice : 0 : 1\"\n\t\t\t\t\t\t\t\tclass=\"category-checkbox\"\n\t\t\t\t\t\t\t\t[formControlName]=\"key\"\n\t\t\t\t\t\t\t\ti18n-aria-label\n\t\t\t\t\t\t\t\taria-label=\"Choose to include or exclude general corrections\"\n\t\t\t\t\t\t\t\taria-live=\"assertive\">\n\t\t\t\t\t\t\t\t<span class=\"category-name\" i18n>{{ formatCategroyFormControlKey(key) }}</span>\n\t\t\t\t\t\t\t\t<span class=\"total-stat\" web-report-title-font>\n\t\t\t\t\t\t\t\t\t({{ writingFeedbackStats[0].categories[0].totalIssues }})\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</mat-checkbox>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"correction-type-container\">\n\t\t\t\t\t\t<span class=\"correction-type-title\" web-report-title-font i18n>Grammar</span>\n\t\t\t\t\t\t<div class=\"correction-categories-container\">\n\t\t\t\t\t\t\t<mat-checkbox\n\t\t\t\t\t\t\t\t*ngFor=\"let key of categoriesKeys | slice : 1 : 9; let i = index\"\n\t\t\t\t\t\t\t\tclass=\"category-checkbox\"\n\t\t\t\t\t\t\t\t[formControlName]=\"key\"\n\t\t\t\t\t\t\t\ti18n-aria-label\n\t\t\t\t\t\t\t\taria-label=\"Choose to include or exclude corrections of type grammar\"\n\t\t\t\t\t\t\t\taria-live=\"assertive\">\n\t\t\t\t\t\t\t\t<span class=\"category-name\" i18n>{{ formatCategroyFormControlKey(key) }}</span>\n\t\t\t\t\t\t\t\t<span class=\"total-stat\" web-report-title-font>\n\t\t\t\t\t\t\t\t\t({{ writingFeedbackStats[1].categories[i].totalIssues }})\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</mat-checkbox>\n\n\t\t\t\t\t\t\t<mat-checkbox\n\t\t\t\t\t\t\t\t*ngFor=\"let key of categoriesKeys | slice : 33 : 34; let i = index\"\n\t\t\t\t\t\t\t\tclass=\"category-checkbox\"\n\t\t\t\t\t\t\t\t[formControlName]=\"key\"\n\t\t\t\t\t\t\t\ti18n-aria-label\n\t\t\t\t\t\t\t\taria-label=\"Choose to include or exclude corrections of type grammar\"\n\t\t\t\t\t\t\t\taria-live=\"assertive\">\n\t\t\t\t\t\t\t\t<span class=\"category-name\" i18n>{{ formatCategroyFormControlKey(key) }}</span>\n\t\t\t\t\t\t\t\t<span class=\"total-stat\" web-report-title-font>\n\t\t\t\t\t\t\t\t\t({{ writingFeedbackStats[1].categories[8].totalIssues }})\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</mat-checkbox>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"correction-type-container\">\n\t\t\t\t\t\t<span class=\"correction-type-title\" web-report-title-font i18n>Word choice</span>\n\t\t\t\t\t\t<div class=\"correction-categories-container\">\n\t\t\t\t\t\t\t<mat-checkbox\n\t\t\t\t\t\t\t\t*ngFor=\"let key of categoriesKeys | slice : 9 : 11; let i = index\"\n\t\t\t\t\t\t\t\tclass=\"category-checkbox\"\n\t\t\t\t\t\t\t\t[formControlName]=\"key\"\n\t\t\t\t\t\t\t\ti18n-aria-label\n\t\t\t\t\t\t\t\taria-label=\"Choose to include or exclude corrections of type word choice\"\n\t\t\t\t\t\t\t\taria-live=\"assertive\">\n\t\t\t\t\t\t\t\t<span class=\"category-name\" i18n>{{ formatCategroyFormControlKey(key) }}</span>\n\t\t\t\t\t\t\t\t<span class=\"total-stat\" web-report-title-font>\n\t\t\t\t\t\t\t\t\t({{ writingFeedbackStats[2].categories[i].totalIssues }})\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</mat-checkbox>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"corrections-container\">\n\t\t\t\t\t<div class=\"correction-type-container\">\n\t\t\t\t\t\t<span class=\"correction-type-title\" web-report-title-font i18n>Mechanics</span>\n\t\t\t\t\t\t<div class=\"correction-categories-container\">\n\t\t\t\t\t\t\t<mat-checkbox\n\t\t\t\t\t\t\t\t*ngFor=\"let key of categoriesKeys | slice : 11 : 18; let i = index\"\n\t\t\t\t\t\t\t\tclass=\"category-checkbox\"\n\t\t\t\t\t\t\t\t[formControlName]=\"key\"\n\t\t\t\t\t\t\t\ti18n-aria-label\n\t\t\t\t\t\t\t\taria-label=\"Choose to include or exclude corrections of type mechanics\"\n\t\t\t\t\t\t\t\taria-live=\"assertive\">\n\t\t\t\t\t\t\t\t<span class=\"category-name\" i18n>{{ formatCategroyFormControlKey(key) }}</span>\n\t\t\t\t\t\t\t\t<span class=\"total-stat\" web-report-title-font>\n\t\t\t\t\t\t\t\t\t({{ writingFeedbackStats[3].categories[i].totalIssues }})\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</mat-checkbox>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"correction-type-container\">\n\t\t\t\t\t\t<span class=\"correction-type-title\" web-report-title-font i18n>\n\t\t\t\t\t\t\tIncorrect number agreement between nouns\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<div class=\"correction-categories-container\">\n\t\t\t\t\t\t\t<mat-checkbox\n\t\t\t\t\t\t\t\t*ngFor=\"let key of categoriesKeys | slice : 28 : 33; let i = index\"\n\t\t\t\t\t\t\t\tclass=\"category-checkbox\"\n\t\t\t\t\t\t\t\t[formControlName]=\"key\"\n\t\t\t\t\t\t\t\ti18n-aria-label\n\t\t\t\t\t\t\t\taria-label=\"Choose to include or exclude corrections of type Incorrect number agreement between nouns\"\n\t\t\t\t\t\t\t\taria-live=\"assertive\">\n\t\t\t\t\t\t\t\t<span class=\"category-name\" i18n>{{ formatCategroyFormControlKey(key) }}</span>\n\t\t\t\t\t\t\t\t<span class=\"total-stat\" web-report-title-font>\n\t\t\t\t\t\t\t\t\t({{ writingFeedbackStats[7].categories[i].totalIssues }})\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</mat-checkbox>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"corrections-container\">\n\t\t\t\t\t<div class=\"correction-type-container\">\n\t\t\t\t\t\t<span class=\"correction-type-title\" web-report-title-font i18n>Sentence structure</span>\n\t\t\t\t\t\t<div class=\"correction-categories-container\">\n\t\t\t\t\t\t\t<mat-checkbox\n\t\t\t\t\t\t\t\t*ngFor=\"let key of categoriesKeys | slice : 18 : 24; let i = index\"\n\t\t\t\t\t\t\t\tclass=\"category-checkbox\"\n\t\t\t\t\t\t\t\t[formControlName]=\"key\"\n\t\t\t\t\t\t\t\ti18n-aria-label\n\t\t\t\t\t\t\t\taria-label=\"Choose to include or exclude corrections of type sentence structure\"\n\t\t\t\t\t\t\t\taria-live=\"assertive\">\n\t\t\t\t\t\t\t\t<span class=\"category-name\" i18n>{{ formatCategroyFormControlKey(key) }}</span>\n\t\t\t\t\t\t\t\t<span class=\"total-stat\" web-report-title-font>\n\t\t\t\t\t\t\t\t\t({{ writingFeedbackStats[4].categories[i].totalIssues }})\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</mat-checkbox>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"correction-type-container\">\n\t\t\t\t\t\t<span class=\"correction-type-title\" web-report-title-font i18n>Mismatch in gender between adjectives</span>\n\t\t\t\t\t\t<div class=\"correction-categories-container\">\n\t\t\t\t\t\t\t<mat-checkbox\n\t\t\t\t\t\t\t\t*ngFor=\"let key of categoriesKeys | slice : 24 : 26; let i = index\"\n\t\t\t\t\t\t\t\tclass=\"category-checkbox\"\n\t\t\t\t\t\t\t\t[formControlName]=\"key\"\n\t\t\t\t\t\t\t\ti18n-aria-label\n\t\t\t\t\t\t\t\taria-label=\"Choose to include or exclude corrections of type mismatch in gender between adjectives\"\n\t\t\t\t\t\t\t\taria-live=\"assertive\">\n\t\t\t\t\t\t\t\t<span class=\"category-name\" i18n>{{ formatCategroyFormControlKey(key) }}</span>\n\t\t\t\t\t\t\t\t<span class=\"total-stat\" web-report-title-font>\n\t\t\t\t\t\t\t\t\t({{ writingFeedbackStats[5].categories[i].totalIssues }})\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</mat-checkbox>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\"correction-type-container\">\n\t\t\t\t\t\t<span class=\"correction-type-title\" web-report-title-font i18n>\n\t\t\t\t\t\t\tIncorrect number agreement between articles\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<div class=\"correction-categories-container\">\n\t\t\t\t\t\t\t<mat-checkbox\n\t\t\t\t\t\t\t\t*ngFor=\"let key of categoriesKeys | slice : 26 : 28; let i = index\"\n\t\t\t\t\t\t\t\tclass=\"category-checkbox\"\n\t\t\t\t\t\t\t\t[formControlName]=\"key\"\n\t\t\t\t\t\t\t\ti18n-aria-label\n\t\t\t\t\t\t\t\taria-label=\"Choose to include or exclude corrections of type Incorrect number agreement between articles\"\n\t\t\t\t\t\t\t\taria-live=\"assertive\">\n\t\t\t\t\t\t\t\t<span class=\"category-name\" i18n>{{ formatCategroyFormControlKey(key) }}</span>\n\t\t\t\t\t\t\t\t<span class=\"total-stat\" web-report-title-font>\n\t\t\t\t\t\t\t\t\t({{ writingFeedbackStats[6].categories[i].totalIssues }})\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</mat-checkbox>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</form>\n\t\t</div>\n\n\t\t<div mat-dialog-actions class=\"apply-and-discard-button-contaier\" [class.is-mobile]=\"isMobile\">\n\t\t\t<cr-button\n\t\t\t\t[outlined]=\"true\"\n\t\t\t\t[padding]=\"isMobile ? '3px 17px' : '3px 24px'\"\n\t\t\t\t(click)=\"onDiscardChanges()\"\n\t\t\t\t[width]=\"isMobile ? '151px' : '180px'\"\n\t\t\t\tcolor=\"primary\"\n\t\t\t\tariaLabel=\"Discard changes and closes filters dialog\">\n\t\t\t\t<span class=\"discard-changes-button\" i18n>Discard changes</span>\n\t\t\t</cr-button>\n\t\t\t<cr-button\n\t\t\t\tariaLabel=\"Saves changes and apply filters\"\n\t\t\t\t(click)=\"onSaveChanges()\"\n\t\t\t\t[width]=\"isMobile ? '161px' : '220px'\"\n\t\t\t\tpadding=\"3px 24px\"\n\t\t\t\tcolor=\"primary\">\n\t\t\t\t<span class=\"apply-filters-button\" i18n>Apply filters</span>\n\t\t\t</cr-button>\n\t\t</div>\n\t</ng-container>\n\t<ng-container *ngSwitchCase=\"EFilterCorrectionsDialogView.Exclude\">\n\t\t<div mat-dialog-title class=\"excluded-header-container\">\n\t\t\t<div class=\"excluded-title-exit-container\">\n\t\t\t\t<div class=\"excluded-title-container\">\n\t\t\t\t\t<span web-report-title-font class=\"dialog-title\" i18n>Ignored Corrections</span>\n\t\t\t\t\t<span web-report-title-font class=\"ignored-corrections-stats\" i18n>({{ totalExcludedCorrections }})</span>\n\t\t\t\t</div>\n\t\t\t\t<button\n\t\t\t\t\tmat-icon-button\n\t\t\t\t\tclass=\"icon-button close-dialog-btn\"\n\t\t\t\t\t(click)=\"onCloseExecludedView()\"\n\t\t\t\t\taria-label=\"Closes dialog\"\n\t\t\t\t\ti18n-aria-label>\n\t\t\t\t\t<mat-icon class=\"exit-filter-button-icon\">close</mat-icon>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<mat-form-field class=\"search-input with-label\" appearance=\"fill\">\n\t\t\t\t<div class=\"search-input-icon-container\" fxLayoutAlign=\"center center\" style=\"margin-inline-end: 8px\" matPrefix>\n\t\t\t\t\t<mat-icon class=\"search-input-search-icon\" fontSet=\"material-icons-round\">search</mat-icon>\n\t\t\t\t</div>\n\t\t\t\t<mat-label i18n>Search correction</mat-label>\n\t\t\t\t<input\n\t\t\t\t\taria-label=\"Search correction\"\n\t\t\t\t\ti18n-aria-label\n\t\t\t\t\tmatInput\n\t\t\t\t\t[spellcheck]=\"false\"\n\t\t\t\t\t[formControl]=\"searchControl\" />\n\t\t\t</mat-form-field>\n\t\t</div>\n\n\t\t<div mat-dialog-content class=\"excluded-content-container\" [dir]=\"docDirection\">\n\t\t\t<cdk-virtual-scroll-viewport class=\"correction-info-container\" itemSize=\"107\">\n\t\t\t\t<cr-correction\n\t\t\t\t\t*cdkVirtualFor=\"let correction of searchedExcludedCorrections\"\n\t\t\t\t\t[correction]=\"correction\"\n\t\t\t\t\t[reportDataSvc]=\"data?.reportDataSvc\"\n\t\t\t\t\t[reportViewSvc]=\"data?.reportViewSvc\"\n\t\t\t\t\t[isExcludeView]=\"true\"></cr-correction>\n\t\t\t</cdk-virtual-scroll-viewport>\n\t\t</div>\n\n\t\t<div mat-dialog-actions class=\"include-all-container\">\n\t\t\t<button\n\t\t\t\tmat-button\n\t\t\t\tclass=\"icon-button include-all-btn\"\n\t\t\t\taria-label=\"Includes or excludes previously excluded results\"\n\t\t\t\ti18n-aria-label\n\t\t\t\t(click)=\"includeAllToggle()\">\n\t\t\t\t<ng-container *ngIf=\"allIncluded; else includeAllRef\" i18n>Exclude all</ng-container>\n\t\t\t\t<ng-template #includeAllRef>\n\t\t\t\t\t<ng-container i18n>Include all</ng-container>\n\t\t\t\t</ng-template>\n\t\t\t</button>\n\t\t</div>\n\t</ng-container>\n\t<ng-container *ngSwitchDefault></ng-container>\n</ng-container>\n","import { Component, EventEmitter, HostBinding, Input, OnInit, Output } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { FilterCorrectionsDialogComponent } from '../../../dialogs/filter-corrections-dialog/filter-corrections-dialog.component';\nimport { IFilterCorrectionsDialogData } from '../../../dialogs/filter-corrections-dialog/models/filter-corrections-dialog.models';\nimport { ReportDataService } from '../../../services/report-data.service';\nimport { ReportViewService } from '../../../services/report-view.service';\nimport { EFilterCorrectionsDialogView } from '../../../dialogs/filter-corrections-dialog/enums/filter-corrections-dialog.enums';\nimport { ReportMatchHighlightService } from '../../../services/report-match-highlight.service';\nimport { IWritingFeedbackTypeStatistics } from '../../../models/report-statistics.models';\n\n@Component({\n\tselector: 'cr-corrections-actions',\n\ttemplateUrl: './cr-corrections-actions.component.html',\n\tstyleUrls: ['./cr-corrections-actions.component.scss'],\n\tstandalone: false,\n})\nexport class CrCorrectionsActionsComponent implements OnInit {\n\t/**\n\t * The padding style property.\n\t */\n\t@HostBinding('style.padding')\n\tpaddingProp: string;\n\n\t/**\n\t * The total number of writing feedback issues.\n\t */\n\t@Input() totalWritingFeedbackIssues: number = 0;\n\n\t/**\n\t * The total number of ignored writing feedback issues.\n\t */\n\t@Input() totalIgnoredWritingFeedbackIssues: number = 0;\n\n\t/**\n\t * The total number of selected writing feedback issues.\n\t */\n\t@Input() totalSelectedWritingFeedbackIssues: number = 0;\n\n\t/**\n\t * The total number of filtered writing feedback issues.\n\t */\n\t@Input() totalFilteredWritingFeedbackIssues: number = 0;\n\n\t/**\n\t * The statistics for different types of writing feedback.\n\t */\n\t@Input() writingFeedbackStats: IWritingFeedbackTypeStatistics[];\n\n\t/**\n\t * Indicates if a correction is clicked.\n\t */\n\t@Input() correctionClicked: boolean = false;\n\n\t/**\n\t * Indicates if the section should be expanded.\n\t */\n\t@Input() expandSection: boolean = false;\n\n\t/**\n\t * Indicates if the component is being viewed on a mobile device.\n\t */\n\t@Input() isMobile: boolean = false;\n\n\t/**\n\t * Indicates if the filter indicator is on.\n\t */\n\t@Input() filterIndicatorOn: boolean = false;\n\n\t/**\n\t * Indicates if the loading view should be shown.\n\t */\n\t@Input() showLoadingView: boolean = true;\n\n\t/**\n\t * Event emitter for expand toggle.\n\t */\n\t@Output() onExpandToggle = new EventEmitter<boolean>();\n\n\tconstructor(\n\t\tprivate _matDialog: MatDialog,\n\t\tprivate _reportDataSvc: ReportDataService,\n\t\tprivate _reportViewSvc: ReportViewService,\n\t\tprivate _highlightService: ReportMatchHighlightService\n\t) {}\n\n\tngOnInit(): void {}\n\n\t/**\n\t * Opens the filter dialog.\n\t * @param excludedView Indicates if the excluded view is selected.\n\t */\n\topenFilterDialog(excludedView: boolean = false, event?: KeyboardEvent): void {\n\t\tif (!event || event.key === 'Enter') {\n\t\t\tthis._matDialog.open(FilterCorrectionsDialogComponent, {\n\t\t\t\tmaxWidth: this.isMobile ? '100%' : '',\n\t\t\t\tminWidth: this.isMobile ? '100%' : '',\n\t\t\t\twidth: '1290px',\n\t\t\t\tpanelClass: 'filter-corrections-dailog',\n\t\t\t\tariaLabel: $localize`Report Corrections Filter Options`,\n\t\t\t\tautoFocus: false,\n\t\t\t\tdata: {\n\t\t\t\t\treportViewSvc: this._reportViewSvc,\n\t\t\t\t\treportDataSvc: this._reportDataSvc,\n\t\t\t\t\tselectedView: excludedView ? EFilterCorrectionsDialogView.Exclude : EFilterCorrectionsDialogView.Filter,\n\t\t\t\t\ttotalCorrections: this.totalWritingFeedbackIssues,\n\t\t\t\t\ttotalFilteredCorrections: this.totalFilteredWritingFeedbackIssues,\n\t\t\t\t\twritingFeedbackStats: this.writingFeedbackStats,\n\t\t\t\t} as IFilterCorrectionsDialogData,\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Clears the filter.\n\t */\n\tclearFilter() {\n\t\tthis._reportDataSvc.clearCorrectionsFilter();\n\t}\n\n\t/**\n\t * Deselects the match.\n\t */\n\tdeselectMatch() {\n\t\tthis._highlightService.clearAllMatchs();\n\t}\n\n\t/**\n\t * Toggles the expand state of the results section.\n\t */\n\texpandResultsSection() {\n\t\tthis.expandSection = !this.expandSection;\n\t\tthis.onExpandToggle.emit(this.expandSection);\n\t\tif (this.expandSection) this.paddingProp = '8px 8px 0px 8px';\n\t\telse this.paddingProp = '8px 8px 8px 8px';\n\t}\n}\n","<ng-container *ngIf=\"!showLoadingView; else loadingViewRef\">\n\t<div class=\"corrections-total\" web-report-title-font>\n\t\t<span class=\"corrections-total-title\">\n\t\t\t<ng-container *ngIf=\"!correctionClicked; else highlightedCorrectionRef\" i18n>\n\t\t\t\tCorrections ({{ totalWritingFeedbackIssues }})\n\t\t\t</ng-container>\n\t\t\t<ng-template #highlightedCorrectionRef>\n\t\t\t\t<ng-container i18n>Highlighted Corrections ({{ totalSelectedWritingFeedbackIssues }})</ng-container>\n\t\t\t</ng-template>\n\t\t</span>\n\t\t<div *ngIf=\"totalIgnoredWritingFeedbackIssues || totalFilteredWritingFeedbackIssues\" class=\"stats-chips-container\">\n\t\t\t<mat-basic-chip\n\t\t\t\t*ngIf=\"totalIgnoredWritingFeedbackIssues\"\n\t\t\t\t(click)=\"openFilterDialog(true)\"\n\t\t\t\t(keyup.enter)=\"openFilterDialog(true, $event)\"\n\t\t\t\trole=\"button\"\n\t\t\t\taria-label=\"View all excluded corrections\"\n\t\t\t\ti18n-aria-label\n\t\t\t\t[tabIndex]=\"0\">\n\t\t\t\t{{ totalIgnoredWritingFeedbackIssues }}\n\t\t\t\t<ng-container i18n>excluded</ng-container>\n\t\t\t</mat-basic-chip>\n\t\t\t<mat-basic-chip\n\t\t\t\t*ngIf=\"totalFilteredWritingFeedbackIssues\"\n\t\t\t\tclass=\"filter-chip\"\n\t\t\t\t(click)=\"openFilterDialog()\"\n\t\t\t\t(keyup.enter)=\"openFilterDialog(false, $event)\"\n\t\t\t\trole=\"button\"\n\t\t\t\taria-label=\"Show corrections filter dialog\"\n\t\t\t\ti18n-aria-label\n\t\t\t\t[tabIndex]=\"0\">\n\t\t\t\t<span>\n\t\t\t\t\t{{ totalFilteredWritingFeedbackIssues }}\n\t\t\t\t\t<ng-container i18n>filtered</ng-container>\n\t\t\t\t</span>\n\t\t\t\t<mat-icon\n\t\t\t\t\tclass=\"clear-filter-icon\"\n\t\t\t\t\tfontSet=\"material-icons-round\"\n\t\t\t\t\t(click)=\"$event.stopPropagation(); clearFilter()\"\n\t\t\t\t\t(keyup.enter)=\"clearFilter()\"\n\t\t\t\t\t[tabIndex]=\"0\"\n\t\t\t\t\taria-hidden=\"false\"\n\t\t\t\t\tmatTooltip=\"Clear Filter\"\n\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t\trole=\"button\"\n\t\t\t\t\taria-label=\"Clear all filtered corrections\"\n\t\t\t\t\ti18n-aria-labe\n\t\t\t\t\ti18n-matTooltip>\n\t\t\t\t\thighlight_off\n\t\t\t\t</mat-icon>\n\t\t\t</mat-basic-chip>\n\t\t</div>\n\t</div>\n\n\t<div class=\"actions-btns-container\">\n\t\t<ng-container *ngIf=\"!correctionClicked; else highlightedCorrectioniconRef\">\n\t\t\t<button\n\t\t\t\tmat-icon-button\n\t\t\t\tclass=\"filter-btn\"\n\t\t\t\t(click)=\"openFilterDialog()\"\n\t\t\t\tmatTooltip=\"Filter corrections\"\n\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\ti18n-matTooltip\n\t\t\t\t[disabled]=\"totalWritingFeedbackIssues <= 0\"\n\t\t\t\taria-label=\"Opens filters dialog\"\n\t\t\t\ti18n-aria-label>\n\t\t\t\t<mat-icon\n\t\t\t\t\tclass=\"filter-icon\"\n\t\t\t\t\t[class.off]=\"!filterIndicatorOn\"\n\t\t\t\t\t[class.on]=\"filterIndicatorOn && totalWritingFeedbackIssues > 0\"\n\t\t\t\t\t[class.disabled-icon]=\"totalWritingFeedbackIssues <= 0\"\n\t\t\t\t\tfontSet=\"material-icons-round\">\n\t\t\t\t\tfilter_list\n\t\t\t\t</mat-icon>\n\t\t\t</button>\n\t\t</ng-container>\n\n\t\t<ng-template #highlightedCorrectioniconRef>\n\t\t\t<button\n\t\t\t\tmat-icon-button\n\t\t\t\tclass=\"mat-icon-button-override deselect-match-btn\"\n\t\t\t\t(click)=\"deselectMatch()\"\n\t\t\t\tmatTooltip=\"Deselect Match\"\n\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\ti18n-matTooltip\n\t\t\t\taria-label=\"Deselect Match\"\n\t\t\t\ti18n-aria-label>\n\t\t\t\t<mat-icon class=\"diselect-match-icon\" fontSet=\"material-icons-outlined\">cancel</mat-icon>\n\t\t\t</button>\n\t\t</ng-template>\n\n\t\t<mat-icon\n\t\t\t*ngIf=\"isMobile\"\n\t\t\tclass=\"expand-icon\"\n\t\t\t(click)=\"expandResultsSection()\"\n\t\t\t[ngClass]=\"{ 'expanded-section-icon': expandSection }\"\n\t\t\tfontSet=\"material-icons-round\">\n\t\t\tarrow_drop_down\n\t\t</mat-icon>\n\t</div>\n</ng-container>\n\n<ng-template #loadingViewRef>\n\t<div class=\"actions-loader-container\">\n\t\t<ngx-skeleton-loader\n\t\t\tclass=\"skeleton search-input-loader\"\n\t\t\t[appearance]=\"'line'\"\n\t\t\tstyle=\"width: 40%\"></ngx-skeleton-loader>\n\n\t\t<div class=\"icons-loader-container\">\n\t\t\t<ngx-skeleton-loader class=\"skeleton circle\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"skeleton circle\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t</div>\n\t</div>\n</ng-template>\n","import {\n\tAfterViewInit,\n\tComponent,\n\tElementRef,\n\tInput,\n\tOnChanges,\n\tOnDestroy,\n\tOnInit,\n\tSimpleChanges,\n\tViewChild,\n} from '@angular/core';\nimport { trigger, state, transition, animate, style } from '@angular/animations';\nimport { IWritingFeedbackCorrectionViewModel } from '../../../models/report-data.models';\nimport { EReportViewType, EWritingFeedbackCategories } from '../../../enums/copyleaks-web-report.enums';\nimport {\n\tgetCorrectionCategoryDescription,\n\tgetCorrectionCategoryTitle,\n\tgetSelectedCategoryType,\n} from '../../../utils/enums-helpers';\nimport { ReportDataService } from '../../../services/report-data.service';\nimport { EnumNavigateMobileButton } from '../report-results-item-container/components/models/report-result-item.enum';\nimport { distinctUntilChanged, filter, map, pairwise } from 'rxjs/operators';\nimport { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport { Observable, fromEvent } from 'rxjs';\nimport { untilDestroy } from '../../../utils/until-destroy';\nimport { ReportMatchesService } from '../../../services/report-matches.service';\nimport { ReportMatchHighlightService } from '../../../services/report-match-highlight.service';\nimport { IWritingFeedbackTypeStatistics } from '../../../models/report-statistics.models';\nimport { ReportViewService } from '../../../services/report-view.service';\n\n@Component({\n\tselector: 'copyleaks-report-corrections-container',\n\ttemplateUrl: './report-corrections-container.component.html',\n\tstyleUrls: ['./report-corrections-container.component.scss'],\n\tanimations: [\n\t\ttrigger('fadeIn', [\n\t\t\tstate('void', style({ opacity: 0 })),\n\t\t\ttransition(':enter', [animate('0.5s ease-in', style({ opacity: 1 }))]),\n\t\t]),\n\t],\n\tstandalone: false,\n})\nexport class ReportCorrectionsContainerComponent implements OnInit, OnDestroy, OnChanges, AfterViewInit {\n\t@ViewChild(CdkVirtualScrollViewport, { static: false }) viewport: CdkVirtualScrollViewport;\n\n\t/**\n\t * @Input {number} The report Writing Feedback total issues.\n\t */\n\t@Input() totalWritingFeedbackIssues: number = 0;\n\n\t/**\n\t * @Input {number} The report Writing Feedback total filtered issues.\n\t */\n\t@Input() totalFilteredCorrections: number = 0;\n\n\t/**\n\t * Represents the statistics for different types of writing feedback.\n\t */\n\t@Input() writingFeedbackStats: IWritingFeedbackTypeStatistics[];\n\n\t/**\n\t * Represents the statistics for different types of writing feedbacks.\n\t */\n\t@Input() allWritingFeedbacksStats: IWritingFeedbackTypeStatistics[];\n\t/**\n\t * Represents the displayed scan corrections view.\n\t */\n\t@Input() displayedScanCorrectionsView: IWritingFeedbackCorrectionViewModel[];\n\n\t/**\n\t * Represents all the scan corrections view.\n\t */\n\t@Input() allScanCorrectionsView: IWritingFeedbackCorrectionViewModel[];\n\n\t/**\n\t * Represents the selected category for writing feedback.\n\t */\n\t@Input() selectedCategroy: EWritingFeedbackCategories | undefined = undefined;\n\n\t/**\n\t * Represents whether a correction is clicked or not.\n\t */\n\t@Input() correctionClicked: boolean = false;\n\n\t/**\n\t * Represents whether the component is being viewed on a mobile device.\n\t */\n\t@Input() isMobile: boolean = false;\n\n\t/**\n\t * Represents whether the loading view should be shown or not.\n\t */\n\t@Input() showLoadingView: boolean = true;\n\n\tselectedCategroyTotal: number = 0;\n\tselectedCategroyTitle: string;\n\tselectedCategroyDescription: string;\n\tselectedCategroyCorrections: IWritingFeedbackCorrectionViewModel[];\n\temptyCorrectionsMessage: string = $localize`No Grammar corrections were found!`;\n\ttotalIgnoredWritingFeedbackIssues: number = 0;\n\ttotalSelectedWritingFeedbackIssues: number = 0;\n\n\tprivate _resizeObserver: ResizeObserver;\n\taddPaddingToContainer: boolean;\n\tscrollSub: any;\n\tcurrentViewedIndex: number = 0;\n\tnavigateMobileButton: EnumNavigateMobileButton;\n\tenumNavigateMobileButton = EnumNavigateMobileButton;\n\tEReportViewType = EReportViewType;\n\tshowResultsSection: boolean = true;\n\tfilterIndicatorOn: boolean;\n\tdocDirection: 'ltr' | 'rtl';\n\n\tget allResultsItemLength() {\n\t\treturn this.allScanCorrectionsView?.length;\n\t}\n\n\tget displayedScanCorrectionsViewLength() {\n\t\treturn this.displayedScanCorrectionsView?.length;\n\t}\n\n\tconstructor(\n\t\tpublic reportDataSvc: ReportDataService,\n\t\tpublic reportViewSvc: ReportViewService,\n\t\tpublic reportMatchesSvc: ReportMatchesService,\n\t\tpublic highlightService: ReportMatchHighlightService,\n\t\tprivate _elementRef: ElementRef\n\t) {}\n\n\tngOnInit(): void {\n\t\tthis._resizeObserver = new ResizeObserver(_ => {\n\t\t\tthis.viewport?.checkViewportSize();\n\t\t});\n\n\t\tthis.reportDataSvc.scanResultsPreviews$.pipe(untilDestroy(this)).subscribe(scanResultsPreviews => {\n\t\t\tif (!scanResultsPreviews) return;\n\t\t\tthis.filterIndicatorOn =\n\t\t\t\tscanResultsPreviews?.filters?.writingFeedback?.hiddenCategories?.length > 0 ||\n\t\t\t\tscanResultsPreviews?.filters?.writingFeedback?.excludedCorrections?.length > 0;\n\t\t});\n\n\t\tthis.reportViewSvc.documentDirection$.pipe(untilDestroy(this)).subscribe(dir => {\n\t\t\tthis.docDirection = dir;\n\t\t});\n\t}\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif (changes['displayedScanCorrectionsView'] || changes['allScanCorrectionsView'] || changes['correctionClicked']) {\n\t\t\tthis.totalIgnoredWritingFeedbackIssues = (this.reportDataSvc.excludedCorrections ?? []).length;\n\t\t\tif (this.correctionClicked)\n\t\t\t\tthis.totalSelectedWritingFeedbackIssues = this.displayedScanCorrectionsView?.length ?? 0;\n\t\t\telse this.totalSelectedWritingFeedbackIssues = 0;\n\n\t\t\tif (this.selectedCategroy) {\n\t\t\t\tthis.selectedCategroyCorrections = this.displayedScanCorrectionsView.filter(\n\t\t\t\t\tc => c.type === this.selectedCategroy\n\t\t\t\t);\n\t\t\t\tif (this.selectedCategroyCorrections.length === 0) this.selectedCategroy = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\tchanges['showLoadingView']?.currentValue == false ||\n\t\t\tchanges['displayedScanCorrectionsView'] ||\n\t\t\tchanges['allScanCorrectionsView']\n\t\t) {\n\t\t\tthis.checkAndApplyPadding();\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.detectEndOfList();\n\t\t\t});\n\t\t}\n\t}\n\n\tngAfterViewInit(): void {\n\t\tthis.detectEndOfList();\n\n\t\tfromEvent(window, 'resize')\n\t\t\t.pipe(untilDestroy(this))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.checkAndApplyPadding();\n\t\t\t});\n\n\t\tthis._resizeObserver.observe(this._elementRef.nativeElement);\n\t}\n\n\tonSelectCategory(category: EWritingFeedbackCategories) {\n\t\tthis.selectedCategroy = category;\n\t\tthis.selectedCategroyTitle = this.getCorrectionCategoryTitle(category);\n\t\tthis.selectedCategroyDescription = this.getCorrectionCategoryDescription(category);\n\t\tthis.selectedCategroyCorrections = this.displayedScanCorrectionsView.filter(c => c.type === category);\n\t\tthis.highlightService.clearAllMatchs();\n\n\t\tconst selectedType = getSelectedCategoryType(category);\n\t\tif (this.writingFeedbackStats && this.writingFeedbackStats[selectedType]) {\n\t\t\tconst selectedCategoryStats = this.writingFeedbackStats[selectedType].categories?.find(c => c.type === category);\n\t\t\tif (selectedCategoryStats) this.selectedCategroyTotal = selectedCategoryStats.totalIssues;\n\t\t\telse this.selectedCategroyTotal = 0;\n\t\t}\n\t}\n\n\tgoToAllCorrectionsView() {\n\t\tthis.selectedCategroy = undefined;\n\t}\n\n\tgetCorrectionCategoryTitle(type: EWritingFeedbackCategories): string {\n\t\treturn getCorrectionCategoryTitle(type);\n\t}\n\n\tgetCorrectionCategoryDescription(type: EWritingFeedbackCategories): string {\n\t\treturn getCorrectionCategoryDescription(type);\n\t}\n\n\t//#region navigate mobile button\n\n\tonScroll(index: number) {\n\t\tthis.currentViewedIndex = index;\n\t\tif (index === 0) this.navigateMobileButton = EnumNavigateMobileButton.FirstButton;\n\t\telse if (index === 1) this.navigateMobileButton = EnumNavigateMobileButton.SecondButton;\n\t\telse if (\n\t\t\t(index >= 2 && index != this.allResultsItemLength - 1 && index != this.allResultsItemLength - 2) ||\n\t\t\t(index === 2 && this.allResultsItemLength <= 5)\n\t\t)\n\t\t\tthis.navigateMobileButton = EnumNavigateMobileButton.ThirdButton;\n\t\telse if (index === this.allResultsItemLength - 2) this.navigateMobileButton = EnumNavigateMobileButton.FourthButton;\n\t\telse if (index === this.allResultsItemLength - 1) this.navigateMobileButton = EnumNavigateMobileButton.FifthButton;\n\t}\n\n\t// Function to scroll to the given index\n\tscrollToIndex(index?: number): void {\n\t\tif (!this.viewport) return;\n\t\tif (index != undefined) this.viewport.scrollToIndex(index, 'smooth');\n\t}\n\n\tonDotNavigate(dot: EnumNavigateMobileButton) {\n\t\tswitch (dot) {\n\t\t\tcase EnumNavigateMobileButton.FirstButton: {\n\t\t\t\tif (\n\t\t\t\t\tthis.displayedScanCorrectionsViewLength > 5 &&\n\t\t\t\t\tthis.currentViewedIndex >= this.displayedScanCorrectionsViewLength - 3\n\t\t\t\t)\n\t\t\t\t\tthis.scrollToIndex(this.displayedScanCorrectionsViewLength - 5);\n\t\t\t\telse if (this.displayedScanCorrectionsViewLength > 5 && this.currentViewedIndex >= 3)\n\t\t\t\t\tthis.scrollToIndex(this.currentViewedIndex - 2);\n\t\t\t\telse this.scrollToIndex(0);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase EnumNavigateMobileButton.SecondButton: {\n\t\t\t\tif (\n\t\t\t\t\tthis.displayedScanCorrectionsViewLength > 5 &&\n\t\t\t\t\tthis.currentViewedIndex >= this.displayedScanCorrectionsViewLength - 3\n\t\t\t\t)\n\t\t\t\t\tthis.scrollToIndex(this.displayedScanCorrectionsViewLength - 4);\n\t\t\t\telse if (this.displayedScanCorrectionsViewLength > 5 && this.currentViewedIndex >= 3)\n\t\t\t\t\tthis.scrollToIndex(this.currentViewedIndex - 1);\n\t\t\t\telse this.scrollToIndex(1);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase EnumNavigateMobileButton.ThirdButton: {\n\t\t\t\tif (\n\t\t\t\t\tthis.displayedScanCorrectionsViewLength > 5 &&\n\t\t\t\t\tthis.currentViewedIndex >= this.displayedScanCorrectionsViewLength - 3\n\t\t\t\t)\n\t\t\t\t\tthis.scrollToIndex(this.displayedScanCorrectionsViewLength - 3);\n\t\t\t\telse if (this.displayedScanCorrectionsViewLength > 5 && this.currentViewedIndex >= 3)\n\t\t\t\t\tthis.scrollToIndex(this.currentViewedIndex);\n\t\t\t\telse this.scrollToIndex(2);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase EnumNavigateMobileButton.FourthButton: {\n\t\t\t\tif (\n\t\t\t\t\tthis.displayedScanCorrectionsViewLength > 5 &&\n\t\t\t\t\tthis.currentViewedIndex >= this.displayedScanCorrectionsViewLength - 3\n\t\t\t\t)\n\t\t\t\t\tthis.scrollToIndex(this.displayedScanCorrectionsViewLength - 2);\n\t\t\t\telse if (this.displayedScanCorrectionsViewLength > 5 && this.currentViewedIndex >= 3)\n\t\t\t\t\tthis.scrollToIndex(this.currentViewedIndex + 1);\n\t\t\t\telse this.scrollToIndex(3);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase EnumNavigateMobileButton.FifthButton: {\n\t\t\t\tif (\n\t\t\t\t\tthis.displayedScanCorrectionsViewLength > 5 &&\n\t\t\t\t\tthis.currentViewedIndex >= this.displayedScanCorrectionsViewLength - 3\n\t\t\t\t)\n\t\t\t\t\tthis.scrollToIndex(this.displayedScanCorrectionsViewLength - 1);\n\t\t\t\telse if (this.displayedScanCorrectionsViewLength > 5 && this.currentViewedIndex >= 3)\n\t\t\t\t\tthis.scrollToIndex(this.currentViewedIndex + 2);\n\t\t\t\telse this.scrollToIndex(4);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tprivate detectEndOfList() {\n\t\tif (!this.viewport || this.scrollSub) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst scrolledIndexChange$: Observable<number> = this.viewport.scrolledIndexChange;\n\n\t\t// Detect if we're at the end of the list\n\t\tthis.scrollSub = scrolledIndexChange$\n\t\t\t.pipe(\n\t\t\t\tmap(index => index + this.viewport.getViewportSize() / 313),\n\t\t\t\tpairwise(),\n\t\t\t\tfilter(([prevIndex, currIndex]) => {\n\t\t\t\t\tconst viewportSize = this.viewport.getViewportSize();\n\t\t\t\t\tconst totalContentSize = this.viewport.getDataLength() * 313;\n\t\t\t\t\t// Determine if the end is reached by comparing the current index and the total content size\n\t\t\t\t\tconst endReached = currIndex > prevIndex && viewportSize + currIndex * 313 >= totalContentSize;\n\t\t\t\t\treturn endReached;\n\t\t\t\t}),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\tuntilDestroy(this)\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.currentViewedIndex = this.allResultsItemLength - 1;\n\t\t\t\tif (this.allResultsItemLength === 2) this.navigateMobileButton = EnumNavigateMobileButton.SecondButton;\n\t\t\t\tif (this.allResultsItemLength === 3) this.navigateMobileButton = EnumNavigateMobileButton.ThirdButton;\n\t\t\t\tif (this.allResultsItemLength === 4) this.navigateMobileButton = EnumNavigateMobileButton.FourthButton;\n\t\t\t\tif (this.allResultsItemLength >= 5) this.navigateMobileButton = EnumNavigateMobileButton.FifthButton;\n\t\t\t});\n\t}\n\n\tcheckAndApplyPadding() {\n\t\tsetTimeout(() => {\n\t\t\tif (!this.viewport || this.showLoadingView) return;\n\t\t\tconst isScrollable =\n\t\t\t\tthis.viewport.elementRef.nativeElement.scrollHeight > this.viewport.elementRef.nativeElement.clientHeight;\n\n\t\t\tthis.addPaddingToContainer = isScrollable;\n\t\t});\n\t}\n\n\t//#endregion\n\n\tngOnDestroy(): void {}\n}\n","<ng-container *ngIf=\"selectedCategroy === undefined; else selectedCategroyRef\">\n\t<cr-corrections-actions\n\t\t[class.mobile]=\"isMobile\"\n\t\t[dir]=\"docDirection\"\n\t\t[totalWritingFeedbackIssues]=\"totalWritingFeedbackIssues\"\n\t\t[totalFilteredWritingFeedbackIssues]=\"totalFilteredCorrections\"\n\t\t[totalIgnoredWritingFeedbackIssues]=\"totalIgnoredWritingFeedbackIssues\"\n\t\t[totalSelectedWritingFeedbackIssues]=\"totalSelectedWritingFeedbackIssues\"\n\t\t[writingFeedbackStats]=\"allWritingFeedbacksStats\"\n\t\t[correctionClicked]=\"correctionClicked\"\n\t\t[isMobile]=\"isMobile\"\n\t\t[filterIndicatorOn]=\"filterIndicatorOn\"\n\t\t[expandSection]=\"showResultsSection\"\n\t\t(onExpandToggle)=\"showResultsSection = $event\"\n\t\t[showLoadingView]=\"showLoadingView\"></cr-corrections-actions>\n\t<ng-container *ngIf=\"!showLoadingView; else loadingViewRef\">\n\t\t<div\n\t\t\t*ngIf=\"showResultsSection\"\n\t\t\tclass=\"corrections-container\"\n\t\t\t[class.mobile]=\"isMobile\"\n\t\t\t[class.less-or-equal-to-one]=\"(displayedScanCorrectionsView?.length ?? 0) <= 1\"\n\t\t\t[class.empty]=\"(displayedScanCorrectionsView?.length ?? 0) === 0\"\n\t\t\t[dir]=\"docDirection\">\n\t\t\t<ng-container\n\t\t\t\t*ngIf=\"\n\t\t\t\t\t!displayedScanCorrectionsView || displayedScanCorrectionsView.length === 0;\n\t\t\t\t\telse displayedCorrectionsRef\n\t\t\t\t\">\n\t\t\t\t<cr-empty-result-state [message]=\"emptyCorrectionsMessage\"></cr-empty-result-state>\n\t\t\t</ng-container>\n\n\t\t\t<ng-template #displayedCorrectionsRef>\n\t\t\t\t<ng-container *ngIf=\"!isMobile; else correctionsMobileViewRef\">\n\t\t\t\t\t<cdk-virtual-scroll-viewport\n\t\t\t\t\t\tclass=\"correction-info-container\"\n\t\t\t\t\t\t[class.scroll-with-padding]=\"addPaddingToContainer\"\n\t\t\t\t\t\titemSize=\"107\"\n\t\t\t\t\t\tminBufferPx=\"200\"\n\t\t\t\t\t\tmaxBufferPx=\"1000\">\n\t\t\t\t\t\t<div class=\"corrections-types-container\">\n\t\t\t\t\t\t\t<span class=\"categorized-summery\" i18n>Categorized Summary</span>\n\t\t\t\t\t\t\t<cr-categories-analysis-panel\n\t\t\t\t\t\t\t\t*ngFor=\"let correctionTypeStats of writingFeedbackStats\"\n\t\t\t\t\t\t\t\t[writingFeedbackStats]=\"correctionTypeStats\"\n\t\t\t\t\t\t\t\t[selectedView]=\"EReportViewType.WritingFeedbackTabView\"\n\t\t\t\t\t\t\t\t(selectCategory)=\"onSelectCategory($event)\"></cr-categories-analysis-panel>\n\t\t\t\t\t\t\t<span class=\"categorized-summery\" i18n>Chronological</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<cr-correction\n\t\t\t\t\t\t\t*cdkVirtualFor=\"let correction of displayedScanCorrectionsView\"\n\t\t\t\t\t\t\t[tabIndex]=\"0\"\n\t\t\t\t\t\t\t[correction]=\"correction\"\n\t\t\t\t\t\t\t[reportDataSvc]=\"reportDataSvc\"\n\t\t\t\t\t\t\t[reportViewSvc]=\"reportViewSvc\"\n\t\t\t\t\t\t\t[reportMatchesSvc]=\"reportMatchesSvc\"\n\t\t\t\t\t\t\t[highlightService]=\"highlightService\"\n\t\t\t\t\t\t\t[showLoadingView]=\"false\"\n\t\t\t\t\t\t\t(selectCategory)=\"onSelectCategory($event)\"></cr-correction>\n\t\t\t\t\t</cdk-virtual-scroll-viewport>\n\t\t\t\t</ng-container>\n\t\t\t\t<ng-template #correctionsMobileViewRef>\n\t\t\t\t\t<cdk-virtual-scroll-viewport\n\t\t\t\t\t\tclass=\"mobile-scroll\"\n\t\t\t\t\t\torientation=\"horizontal\"\n\t\t\t\t\t\titemSize=\"320\"\n\t\t\t\t\t\t(scrolledIndexChange)=\"onScroll($event)\">\n\t\t\t\t\t\t<cr-correction\n\t\t\t\t\t\t\t*cdkVirtualFor=\"let correction of displayedScanCorrectionsView\"\n\t\t\t\t\t\t\t[tabIndex]=\"0\"\n\t\t\t\t\t\t\t[correction]=\"correction\"\n\t\t\t\t\t\t\t[reportDataSvc]=\"reportDataSvc\"\n\t\t\t\t\t\t\t[reportViewSvc]=\"reportViewSvc\"\n\t\t\t\t\t\t\t[reportMatchesSvc]=\"reportMatchesSvc\"\n\t\t\t\t\t\t\t[highlightService]=\"highlightService\"\n\t\t\t\t\t\t\t[showLoadingView]=\"false\"></cr-correction>\n\t\t\t\t\t</cdk-virtual-scroll-viewport>\n\t\t\t\t</ng-template>\n\t\t\t</ng-template>\n\t\t</div>\n\t\t<div\n\t\t\tclass=\"navigate-mobie-button-container\"\n\t\t\t*ngIf=\"isMobile && (displayedScanCorrectionsView?.length ?? 0) > 1 && showResultsSection\"\n\t\t\tfxLayout=\"row\"\n\t\t\tfxLayoutAlign=\"start center\"\n\t\t\tfxLayoutGap=\"8px\">\n\t\t\t<mat-chip-option\n\t\t\t\t*ngIf=\"(displayedScanCorrectionsView?.length ?? 0) > 5 && currentViewedIndex > 2\"\n\t\t\t\trole=\"button\"\n\t\t\t\t(click)=\"scrollToIndex(0)\"\n\t\t\t\tclass=\"mat-chip-navigate\">\n\t\t\t\t{{\n\t\t\t\t\tcurrentViewedIndex < (displayedScanCorrectionsView?.length ?? 0) - 3\n\t\t\t\t\t\t? currentViewedIndex - 2\n\t\t\t\t\t\t: (displayedScanCorrectionsView?.length ?? 0) - 5\n\t\t\t\t}}\n\t\t\t</mat-chip-option>\n\t\t\t<button\n\t\t\t\tclass=\"navigate-mobie-button\"\n\t\t\t\taria-label=\"This is a result navigation button.\"\n\t\t\t\ti18n-aria-label\n\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t'navigate-mobie-button-select ': navigateMobileButton == enumNavigateMobileButton.FirstButton\n\t\t\t\t}\"\n\t\t\t\t(click)=\"onDotNavigate(enumNavigateMobileButton.FirstButton)\"></button>\n\t\t\t<button\n\t\t\t\t*ngIf=\"(displayedScanCorrectionsView?.length ?? 0) > 1\"\n\t\t\t\tclass=\"navigate-mobie-button\"\n\t\t\t\taria-label=\"This is a result navigation button.\"\n\t\t\t\ti18n-aria-label\n\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t'navigate-mobie-button-select ': navigateMobileButton == enumNavigateMobileButton.SecondButton\n\t\t\t\t}\"\n\t\t\t\t(click)=\"onDotNavigate(enumNavigateMobileButton.SecondButton)\"></button>\n\t\t\t<button\n\t\t\t\t*ngIf=\"(displayedScanCorrectionsView?.length ?? 0) > 2\"\n\t\t\t\tclass=\"navigate-mobie-button\"\n\t\t\t\taria-label=\"This is a result navigation button.\"\n\t\t\t\ti18n-aria-label\n\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t'navigate-mobie-button-select ': navigateMobileButton == enumNavigateMobileButton.ThirdButton\n\t\t\t\t}\"\n\t\t\t\t(click)=\"onDotNavigate(enumNavigateMobileButton.ThirdButton)\"></button>\n\t\t\t<button\n\t\t\t\t*ngIf=\"(displayedScanCorrectionsView?.length ?? 0) > 3\"\n\t\t\t\tclass=\"navigate-mobie-button\"\n\t\t\t\taria-label=\"This is a result navigation button.\"\n\t\t\t\ti18n-aria-label\n\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t'navigate-mobie-button-select ': navigateMobileButton == enumNavigateMobileButton.FourthButton\n\t\t\t\t}\"\n\t\t\t\t(click)=\"onDotNavigate(enumNavigateMobileButton.FourthButton)\"></button>\n\t\t\t<button\n\t\t\t\t*ngIf=\"(displayedScanCorrectionsView?.length ?? 0) > 4\"\n\t\t\t\tclass=\"navigate-mobie-button\"\n\t\t\t\taria-label=\"This is a result navigation button.\"\n\t\t\t\ti18n-aria-label\n\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t'navigate-mobie-button-select ': navigateMobileButton == enumNavigateMobileButton.FifthButton\n\t\t\t\t}\"\n\t\t\t\t(click)=\"onDotNavigate(enumNavigateMobileButton.FifthButton)\"></button>\n\n\t\t\t<mat-chip-option\n\t\t\t\t*ngIf=\"\n\t\t\t\t\t(displayedScanCorrectionsView?.length ?? 0) > 5 &&\n\t\t\t\t\tcurrentViewedIndex < (displayedScanCorrectionsView?.length ?? 0) - 3\n\t\t\t\t\"\n\t\t\t\trole=\"button\"\n\t\t\t\t(click)=\"scrollToIndex((displayedScanCorrectionsView?.length ?? 0) - 1)\"\n\t\t\t\tclass=\"mat-chip-navigate\">\n\t\t\t\t{{\n\t\t\t\t\tcurrentViewedIndex > 2\n\t\t\t\t\t\t? (displayedScanCorrectionsView?.length ?? 0) - currentViewedIndex - 3\n\t\t\t\t\t\t: (displayedScanCorrectionsView?.length ?? 0) - 5\n\t\t\t\t}}\n\t\t\t</mat-chip-option>\n\t\t</div>\n\t</ng-container>\n\n\t<ng-template #loadingViewRef>\n\t\t<div class=\"corrections-loader-container\" [class.mobile]=\"isMobile\">\n\t\t\t<cr-correction\n\t\t\t\t*ngFor=\"let _ of isMobile ? [1, 2, 3, 4] : [1, 2, 3, 4, 5, 6, 7, 8, 9]\"\n\t\t\t\tclass=\"loading-correction-view\"\n\t\t\t\t[showLoadingView]=\"true\"></cr-correction>\n\t\t</div>\n\t</ng-template>\n</ng-container>\n<ng-template #selectedCategroyRef>\n\t<div class=\"selected-category-toolbar\" [dir]=\"docDirection\">\n\t\t<button\n\t\t\tmat-icon-button\n\t\t\tclass=\"total-corrections-container all-correction-title icon-button\"\n\t\t\t(click)=\"goToAllCorrectionsView()\"\n\t\t\taria-label=\"Navigates back to all correction results.\"\n\t\t\ti18n-aria-label>\n\t\t\t<mat-icon class=\"left-arrow\">chevron_left</mat-icon>\n\t\t\t<span i18n>All Corrections</span>\n\t\t\t({{ totalWritingFeedbackIssues }})\n\t\t</button>\n\t\t<div class=\"selected-correction-container\">\n\t\t\t<mat-icon class=\"right-arrow\">chevron_right</mat-icon>\n\t\t\t<span class=\"correction-title\" web-report-title-font i18n>\n\t\t\t\t{{ selectedCategroyTitle }} ({{ selectedCategroyTotal }})\n\t\t\t</span>\n\t\t</div>\n\t</div>\n\n\t<span class=\"selected-category-description\" i18n>\n\t\t{{ selectedCategroyDescription }}\n\t</span>\n\n\t<span class=\"categorized-summery\" i18n>Chronological</span>\n\n\t<cdk-virtual-scroll-viewport class=\"all-corrections-info-container\" itemSize=\"40\" [dir]=\"docDirection\">\n\t\t<cr-correction\n\t\t\t*cdkVirtualFor=\"let correction of selectedCategroyCorrections\"\n\t\t\t[tabIndex]=\"0\"\n\t\t\t[correction]=\"correction\"\n\t\t\t[hideDescription]=\"true\"\n\t\t\t[reportDataSvc]=\"reportDataSvc\"\n\t\t\t[reportViewSvc]=\"reportViewSvc\"\n\t\t\t[reportMatchesSvc]=\"reportMatchesSvc\"\n\t\t\t[highlightService]=\"highlightService\"></cr-correction>\n\t</cdk-virtual-scroll-viewport>\n</ng-template>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n\tname: 'secondsToTime',\n\tstandalone: false,\n})\nexport class SecondsToTimePipe implements PipeTransform {\n\ttransform(value: number): string {\n\t\tif (!value && value !== 0) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst hours: number = Math.floor(value / 3600);\n\t\tconst minutes: number = Math.floor((value % 3600) / 60);\n\t\tconst seconds: number = Math.floor(value % 60);\n\n\t\tlet timeParts = [];\n\t\tif (hours > 0) {\n\t\t\ttimeParts.push($localize`${hours} Hour${hours > 1 ? 's' : ''}`);\n\t\t}\n\t\tif (minutes > 0) {\n\t\t\ttimeParts.push($localize`${minutes} Minute${minutes > 1 ? 's' : ''}`);\n\t\t}\n\t\tif (seconds > 0 || value === 0) {\n\t\t\t// To handle the 0 second case\n\t\t\ttimeParts.push($localize`${seconds} Second${seconds === 1 ? '' : 's'}`);\n\t\t}\n\n\t\t// Combine time parts with \"and\" before the last element if more than one element exists\n\t\tlet result = '';\n\t\tif (timeParts.length > 1) {\n\t\t\t// Join all elements with \", \" except the last one, then add \" and \" before the last element\n\t\t\tresult = timeParts.slice(0, -1).join(', ') + $localize` and ` + timeParts.slice(-1);\n\t\t} else {\n\t\t\tresult = timeParts.join('');\n\t\t}\n\n\t\treturn result;\n\t}\n}\n","import { Component, ElementRef, HostBinding, Input, OnChanges, OnInit, SimpleChanges, ViewChild } from '@angular/core';\nimport { IReadabilityScore, IWritingFeedbackStatistics } from '../../../models/report-data.models';\nimport { EReadabilityLevel } from '../../../enums/copyleaks-web-report.enums';\n\n@Component({\n\tselector: 'cr-readability-score',\n\ttemplateUrl: './cr-readability-score.component.html',\n\tstyleUrls: ['./cr-readability-score.component.scss'],\n\tstandalone: false,\n})\nexport class CrReadabilityScoreComponent implements OnInit, OnChanges {\n\t@HostBinding('style.display')\n\tdisplay = 'flex';\n\n\t@HostBinding('style.flex-grow')\n\tflexGrowProp: number;\n\n\t@HostBinding('style.box-shadow')\n\tboxShadow: string;\n\n\t@ViewChild('alertsContainer') alertsContainerRef: ElementRef<HTMLDivElement>;\n\t@ViewChild('expansionPanel') expansionPanelRef: ElementRef;\n\n\t/**\n\t * @Input {number} Flex grow property - flex-grow\n\t */\n\t@Input() flexGrow: number;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether the view is a mobile or not.\n\t */\n\t@Input() isMobile: boolean;\n\n\t@Input() readabilityInfo: IReadabilityScore;\n\n\t@Input() statisticsInfo: IWritingFeedbackStatistics;\n\n\t@Input() showLoadingView: boolean = false;\n\n\thideAlerts: boolean;\n\treadabilityLevelText: string;\n\n\tget getReadabilityLevelText(): string {\n\t\tswitch (this.readabilityInfo?.readabilityLevel) {\n\t\t\tcase EReadabilityLevel.FifthGrader:\n\t\t\t\treturn $localize`Readable for 5th grader`;\n\t\t\tcase EReadabilityLevel.SixthGrader:\n\t\t\t\treturn $localize`Readable for 6th grader`;\n\t\t\tcase EReadabilityLevel.SeventhGrader:\n\t\t\t\treturn $localize`Readable for 7th grader`;\n\t\t\tcase EReadabilityLevel.EighthNinthGrader:\n\t\t\t\treturn $localize`Readable for 8th-9th grader`;\n\t\t\tcase EReadabilityLevel.TenthTwelfthGrader:\n\t\t\t\treturn $localize`Readable for 10th-12th grader`;\n\t\t\tcase EReadabilityLevel.CollegeStudent:\n\t\t\t\treturn $localize`Readable for college student`;\n\t\t\tcase EReadabilityLevel.CollegeGraduate:\n\t\t\t\treturn $localize`Readable for college graduate`;\n\t\t\tcase EReadabilityLevel.Professional:\n\t\t\t\treturn $localize`Readable for professional`;\n\t\t\tdefault:\n\t\t\t\treturn $localize`Unknown readability level`;\n\t\t}\n\t}\n\n\tEXPEND_TOOLTIP = $localize`Expand`;\n\tCOLLAPSE_TOOLTIP = $localize`Collapse`;\n\n\tconstructor() {}\n\n\tngOnInit(): void {}\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif (changes['readabilityInfo']) {\n\t\t\tthis.readabilityLevelText = this.getReadabilityLevelText;\n\t\t}\n\n\t\tif (changes['isMobile']) {\n\t\t\tif (changes['isMobile'].currentValue === true)\n\t\t\t\tthis.boxShadow = '-2px -2px 8px 0px rgba(255, 255, 255, 0.5), 2px 2px 4px 0px rgba(0, 0, 0, 0.15)';\n\t\t\telse this.boxShadow = null;\n\t\t}\n\t}\n\n\thideAlertsClick() {\n\t\tthis.hideAlerts = true;\n\t}\n\n\tshowAlertsClick() {\n\t\tthis.hideAlerts = false;\n\t}\n}\n","<mat-accordion #expansionPanel>\n\t<mat-expansion-panel #panel [expanded]=\"false\" aria-label=\"Opens the readabilty insights\" i18n-aria-label>\n\t\t<mat-expansion-panel-header [ngClass]=\"{ 'mobile-results-panel-header': isMobile }\">\n\t\t\t<mat-panel-title>\n\t\t\t\t<div class=\"container-title\">\n\t\t\t\t\t<h6 class=\"title\" web-report-title-font i18n>Readability Score:</h6>\n\t\t\t\t\t<span class=\"description\" i18n>{{ readabilityInfo?.readabilityLevelDescription }}</span>\n\t\t\t\t</div>\n\t\t\t</mat-panel-title>\n\n\t\t\t<mat-panel-description>\n\t\t\t\t<mat-icon\n\t\t\t\t\tclass=\"hide-alerts-icon\"\n\t\t\t\t\t[class.mobile]=\"isMobile\"\n\t\t\t\t\tfontSet=\"material-icons-round\"\n\t\t\t\t\t[matTooltip]=\"panel.expanded ? COLLAPSE_TOOLTIP : EXPEND_TOOLTIP\"\n\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\">\n\t\t\t\t\tarrow_drop_down\n\t\t\t\t</mat-icon>\n\t\t\t</mat-panel-description>\n\t\t</mat-expansion-panel-header>\n\n\t\t<div class=\"stats-container\">\n\t\t\t<div class=\"stat-container insights\">\n\t\t\t\t<span class=\"stat-title insights\" i18n>Insights</span>\n\t\t\t\t<span class=\"stat-value readability-description\" web-report-title-font i18n>\n\t\t\t\t\tReading level:\n\t\t\t\t\t<span style=\"font-weight: 500\">{{ readabilityInfo?.readabilityLevelText }}</span>\n\t\t\t\t</span>\n\t\t\t</div>\n\n\t\t\t<div class=\"stat-container\">\n\t\t\t\t<span class=\"stat-title\" i18n>Number of sentences:</span>\n\t\t\t\t<span class=\"stat-value\" i18n>\n\t\t\t\t\t{{ statisticsInfo?.sentenceCount }} {statisticsInfo?.sentenceCount, plural, =1 {Sentence} other {Sentences}}\n\t\t\t\t</span>\n\t\t\t</div>\n\n\t\t\t<div class=\"stat-container\">\n\t\t\t\t<span class=\"stat-title\" i18n>Avg. Words per sentences:</span>\n\t\t\t\t<span class=\"stat-value\" i18n>\n\t\t\t\t\t{{ statisticsInfo?.averageSentenceLength }} {statisticsInfo?.averageSentenceLength, plural, =1 {Word} other\n\t\t\t\t\t{Words}}\n\t\t\t\t</span>\n\t\t\t</div>\n\n\t\t\t<div class=\"stat-container\">\n\t\t\t\t<span class=\"stat-title\" i18n>Avg. Word length:</span>\n\t\t\t\t<span class=\"stat-value\" i18n>\n\t\t\t\t\t{{ statisticsInfo?.averageWordLength }} {statisticsInfo?.averageWordLength, plural, =1 {Character} other\n\t\t\t\t\t{Characters}}\n\t\t\t\t</span>\n\t\t\t</div>\n\n\t\t\t<div class=\"stat-container\">\n\t\t\t\t<span class=\"stat-title\" i18n>Reading time:</span>\n\t\t\t\t<span class=\"stat-value\" i18n>{{ statisticsInfo?.readingTimeSeconds | secondsToTime }}</span>\n\t\t\t</div>\n\n\t\t\t<div class=\"stat-container\">\n\t\t\t\t<span class=\"stat-title\" i18n>Speaking time:</span>\n\t\t\t\t<span class=\"stat-value\" i18n>{{ statisticsInfo?.speakingTimeSeconds | secondsToTime }}</span>\n\t\t\t</div>\n\n\t\t\t<div class=\"stat-container\">\n\t\t\t\t<span class=\"stat-title\" i18n>Readability score:</span>\n\t\t\t\t<span class=\"stat-value\" i18n>{{ readabilityInfo?.score }}%</span>\n\t\t\t</div>\n\t\t</div>\n\t</mat-expansion-panel>\n</mat-accordion>\n","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { EReportScoreTooltipView, EReportViewType } from '../../../enums/copyleaks-web-report.enums';\nimport { ReportDataService } from '../../../services/report-data.service';\nimport { ReportViewService } from '../../../services/report-view.service';\nimport { untilDestroy } from '../../../utils/until-destroy';\n\n@Component({\n\tselector: 'cr-assessment-tool-tab-score-panel',\n\ttemplateUrl: './cr-assessment-tool-tab-score-panel.component.html',\n\tstyleUrls: ['./cr-assessment-tool-tab-score-panel.component.scss'],\n\tstandalone: false,\n})\nexport class CrAssessmentToolTabScorePanelComponent implements OnInit, OnChanges {\n\t/**\n\t * @Input {boolean} Flag indicating whether to show the report AI tab or not.\n\t */\n\t@Input() selectedTap: EReportViewType | undefined = EReportViewType.PlagiarismView;\n\n\t/**\n\t * Flag indicating whether the view is a mobile or not.\n\t */\n\t@Input() isMobile: boolean;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether to show the report AI tab or not.\n\t */\n\t@Input() wordsTotal: number = 0;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether to show the report AI tab or not.\n\t */\n\t@Input() identicalTotal: number = 0;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether to show the report AI tab or not.\n\t */\n\t@Input() minorChangesTotal: number = 0;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether to show the report AI tab or not.\n\t */\n\t@Input() paraphrasedTotal: number = 0;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether to show the report AI tab or not.\n\t */\n\t@Input() excludedTotal: number = 0;\n\n\t/**\n\t * @Input {number} The report plagiarism score.\n\t */\n\t@Input() plagarismScore: number = 0;\n\n\t/**\n\t * @Input {number} The report AI score.\n\t */\n\t@Input() aiScore: number = 0;\n\n\t/**\n\t * @Input {number} The report Writing Feedback score.\n\t */\n\t@Input() writingFeedbackScore: number = 0;\n\n\t/**\n\t * @Input {number} The report Writing Feedback total issues.\n\t */\n\t@Input() totalWritingFeedbackIssues: number = 0;\n\n\t/**\n\t * @Input {boolean} Flag indicating whether to show the loading view or not.\n\t */\n\t@Input() showLoadingView: boolean = false;\n\n\texpanded: boolean = false;\n\ttotalAiWords: number = 0;\n\ttotalHumanWords: number = 0;\n\n\tEXPAND_TOOLTIP = $localize`Expand`;\n\tCOLLAPSE_TOOLTIP = $localize`Collapse`;\n\tMATCHED_TEXT_TITLE = $localize`Matched Text`;\n\tAI_CONTENT_TITLE = $localize`AI Content `;\n\n\tEReportScoreTooltipView = EReportScoreTooltipView;\n\tEReportViewType = EReportViewType;\n\tdocDirection: 'ltr' | 'rtl';\n\n\tconstructor(public reportDataSvc: ReportDataService, private _reportViewSvc: ReportViewService) {}\n\n\tngOnInit(): void {}\n\n\tngOnChanges(_: SimpleChanges): void {\n\t\tthis.totalAiWords = Math.ceil(this.aiScore * ((this.wordsTotal ?? 0) - (this.excludedTotal ?? 0)));\n\t\tthis.totalHumanWords = Math.ceil((this.wordsTotal ?? 0) - (this.excludedTotal ?? 0) - (this.totalAiWords ?? 0));\n\n\t\tthis._reportViewSvc.documentDirection$.pipe(untilDestroy(this)).subscribe(dir => {\n\t\t\tthis.docDirection = dir;\n\t\t});\n\t}\n\n\texpandedChange(event): void {\n\t\tsetTimeout(() => {\n\t\t\tthis.expanded = event;\n\t\t}, 100);\n\t}\n\texpandAccordion() {\n\t\tthis.expanded = true;\n\t}\n\n\tngOnDestroy(): void {}\n}\n","<ng-container *ngIf=\"!showLoadingView\">\n\t<mat-accordion #expansionPanel [tabIndex]=\"0\" (keydown)=\"expandAccordion()\" [dir]=\"docDirection\">\n\t\t<mat-expansion-panel #panel [expanded]=\"expanded\" (expandedChange)=\"expandedChange($event)\">\n\t\t\t<mat-expansion-panel-header [ngClass]=\"{ 'mobile-results-panel-header': isMobile }\">\n\t\t\t\t<mat-panel-title>\n\t\t\t\t\t<div class=\"upper-title-section-container\">\n\t\t\t\t\t\t<div class=\"title-container\">\n\t\t\t\t\t\t\t<mat-icon\n\t\t\t\t\t\t\t\tclass=\"hide-alerts-icon\"\n\t\t\t\t\t\t\t\tfontSet=\"material-icons-round\"\n\t\t\t\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip\"\n\t\t\t\t\t\t\t\t[matTooltip]=\"panel.expanded ? COLLAPSE_TOOLTIP : EXPAND_TOOLTIP\">\n\t\t\t\t\t\t\t\tarrow_drop_down\n\t\t\t\t\t\t\t</mat-icon>\n\t\t\t\t\t\t\t<span class=\"title\" web-report-title-font i18n>\n\t\t\t\t\t\t\t\t{{ selectedTap === EReportViewType.PlagiarismView ? MATCHED_TEXT_TITLE : AI_CONTENT_TITLE }}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<span class=\"score\" web-report-title-font>\n\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\tselectedTap === EReportViewType.PlagiarismView\n\t\t\t\t\t\t\t\t\t? (plagarismScore | percent : '1.0-1')\n\t\t\t\t\t\t\t\t\t: wordsTotal - excludedTotal === 0\n\t\t\t\t\t\t\t\t\t? 0\n\t\t\t\t\t\t\t\t\t: (totalAiWords / (wordsTotal - excludedTotal) | percent : '1.0-1')\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div *ngIf=\"!expanded\" class=\"grade-bar\">\n\t\t\t\t\t\t<ng-container *ngIf=\"selectedTap === EReportViewType.PlagiarismView\">\n\t\t\t\t\t\t\t<div class=\"bar plagiarism\" [style.width.%]=\"100\">\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclass=\"identical\"\n\t\t\t\t\t\t\t\t\t[class.first-percentage]=\"!!identicalTotal\"\n\t\t\t\t\t\t\t\t\t[class.last-percentage]=\"!minorChangesTotal && !paraphrasedTotal\"\n\t\t\t\t\t\t\t\t\t[style.width.%]=\"\n\t\t\t\t\t\t\t\t\t\twordsTotal - excludedTotal === 0 ? 0 : (identicalTotal / (wordsTotal - excludedTotal)) * 100\n\t\t\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t\t\t\t[style.border]=\"!identicalTotal ? 'none' : ''\"></div>\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclass=\"minor-changes\"\n\t\t\t\t\t\t\t\t\t[class.first-percentage]=\"!identicalTotal\"\n\t\t\t\t\t\t\t\t\t[class.last-percentage]=\"!paraphrasedTotal\"\n\t\t\t\t\t\t\t\t\t[style.width.%]=\"\n\t\t\t\t\t\t\t\t\t\twordsTotal - excludedTotal === 0 ? 0 : (minorChangesTotal / (wordsTotal - excludedTotal)) * 100\n\t\t\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t\t\t\t[style.border]=\"!minorChangesTotal ? 'none' : ''\"></div>\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclass=\"paraphrased last-percentage\"\n\t\t\t\t\t\t\t\t\t[class.first-percentage]=\"!identicalTotal && !minorChangesTotal\"\n\t\t\t\t\t\t\t\t\t[style.width.%]=\"\n\t\t\t\t\t\t\t\t\t\twordsTotal - excludedTotal === 0 ? 0 : (paraphrasedTotal / (wordsTotal - excludedTotal)) * 100\n\t\t\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t\t\t\t[style.border]=\"!paraphrasedTotal ? 'none' : ''\"></div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</ng-container>\n\n\t\t\t\t\t\t<ng-container *ngIf=\"selectedTap === EReportViewType.AIView\">\n\t\t\t\t\t\t\t<div class=\"bar ai-content\" [style.width.%]=\"aiScore * 100\" [style.border]=\"!aiScore ? 'none' : ''\"></div>\n\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t</div>\n\t\t\t\t</mat-panel-title>\n\t\t\t</mat-expansion-panel-header>\n\n\t\t\t<ng-container *ngIf=\"selectedTap === EReportViewType.AIView\">\n\t\t\t\t<cr-report-score-tooltip-content\n\t\t\t\t\t[scoreStats]=\"{\n\t\t\t\t\t\tomittedPct: {\n\t\t\t\t\t\t\tpercentage: excludedTotal / wordsTotal,\n\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\ttotalWords: excludedTotal ?? 0\n\t\t\t\t\t\t},\n\t\t\t\t\t\taiPct: {\n\t\t\t\t\t\t\tpercentage: wordsTotal - excludedTotal === 0 ? 0 : totalAiWords / (wordsTotal - excludedTotal),\n\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\ttotalWords: totalAiWords ?? 0\n\t\t\t\t\t\t},\n\t\t\t\t\t\thumanPct: {\n\t\t\t\t\t\t\tpercentage: wordsTotal - excludedTotal === 0 ? 0 : totalHumanWords / (wordsTotal - excludedTotal),\n\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\ttotalWords: totalHumanWords\n\t\t\t\t\t\t},\n\t\t\t\t\t\ttotalWords: wordsTotal\n\t\t\t\t\t}\"\n\t\t\t\t\t[viewType]=\"EReportScoreTooltipView.Inline\"></cr-report-score-tooltip-content>\n\t\t\t</ng-container>\n\n\t\t\t<ng-container *ngIf=\"selectedTap === EReportViewType.PlagiarismView\">\n\t\t\t\t<cr-report-score-tooltip-content\n\t\t\t\t\t[scoreStats]=\"{\n\t\t\t\t\t\tidenticalPct: {\n\t\t\t\t\t\t\tpercentage: wordsTotal - excludedTotal === 0 ? 0 : identicalTotal / (wordsTotal - excludedTotal),\n\t\t\t\t\t\t\ttotalWords: identicalTotal ?? 0,\n\t\t\t\t\t\t\tdisabled: reportDataSvc.filterOptions?.showIdentical === false\n\t\t\t\t\t\t},\n\t\t\t\t\t\tminorChangesPct: {\n\t\t\t\t\t\t\tpercentage: wordsTotal - excludedTotal === 0 ? 0 : minorChangesTotal / (wordsTotal - excludedTotal),\n\t\t\t\t\t\t\ttotalWords: minorChangesTotal ?? 0,\n\t\t\t\t\t\t\tdisabled: reportDataSvc.filterOptions?.showMinorChanges === false\n\t\t\t\t\t\t},\n\t\t\t\t\t\tparaphrasedPct: {\n\t\t\t\t\t\t\tpercentage: wordsTotal - excludedTotal === 0 ? 0 : paraphrasedTotal / (wordsTotal - excludedTotal),\n\t\t\t\t\t\t\ttotalWords: paraphrasedTotal ?? 0,\n\t\t\t\t\t\t\tdisabled: reportDataSvc.filterOptions?.showRelated === false\n\t\t\t\t\t\t},\n\t\t\t\t\t\tomittedPct: {\n\t\t\t\t\t\t\tpercentage: excludedTotal / wordsTotal,\n\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\ttotalWords: excludedTotal ?? 0\n\t\t\t\t\t\t},\n\n\t\t\t\t\t\taiPct: {\n\t\t\t\t\t\t\tpercentage: wordsTotal - excludedTotal === 0 ? 0 : totalAiWords / (wordsTotal - excludedTotal),\n\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\ttotalWords: totalAiWords ?? 0\n\t\t\t\t\t\t},\n\t\t\t\t\t\thumanPct: {\n\t\t\t\t\t\t\tpercentage: wordsTotal - excludedTotal === 0 ? 0 : totalHumanWords / (wordsTotal - excludedTotal),\n\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\ttotalWords: totalHumanWords\n\t\t\t\t\t\t},\n\t\t\t\t\t\ttotalWords: wordsTotal\n\t\t\t\t\t}\"\n\t\t\t\t\t[viewType]=\"EReportScoreTooltipView.Inline\"></cr-report-score-tooltip-content>\n\t\t\t</ng-container>\n\t\t</mat-expansion-panel>\n\t</mat-accordion>\n</ng-container>\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n\tselector: 'copyleaks-ai-percentage',\n\ttemplateUrl: './ai-percentage.component.html',\n\tstyleUrls: ['./ai-percentage.component.scss'],\n\tstandalone: false,\n})\nexport class AiPercentageComponent implements OnInit {\n\t/**\n\t * @Input {boolean} A flag indicating if the component is in loading state\n\t */\n\t@Input() isLoading: boolean = false;\n\n\t/**\n\t * @Input {number} The AI percentage result\n\t */\n\t@Input() aiPercentageResult: number = 0;\n\n\ttooltipText: string = $localize`This is the overall percentage of content from the submitted text that is likely to contain AI content.`;\n\n\tngOnInit(): void {}\n}\n","<div class=\"ai-percentage-container\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\" fxLayoutGap=\"8px\">\n\t<ng-container *ngIf=\"!isLoading; else loadingState\">\n\t\t<div class=\"contet-container\" fxLayout=\"column\" fxLayoutAlign=\"start start\" fxLayoutGap=\"8px\">\n\t\t\t<div class=\"title\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\" fxLayoutGap=\"4px\">\n\t\t\t\t<span i18n>{aiPercentageResult, select, 0 {No AI Content Found} other {AI Content Found} }</span>\n\t\t\t\t<mat-icon\n\t\t\t\t\tclass=\"info-icon\"\n\t\t\t\t\tfontSet=\"material-icons-outlined\"\n\t\t\t\t\t[tabIndex]=\"0\"\n\t\t\t\t\taria-label=\"percentage of ai content\"\n\t\t\t\t\ti18n-aria-label\n\t\t\t\t\t[matTooltip]=\"tooltipText\"\n\t\t\t\t\ti18n-matTooltip\n\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip tooltip-contanier\"\n\t\t\t\t\taria-hidden=\"false\">\n\t\t\t\t\tinfo\n\t\t\t\t</mat-icon>\n\t\t\t</div>\n\t\t\t<span class=\"description\" i18n>Percentage of text that may be AI-generated.</span>\n\t\t</div>\n\t\t<div class=\"percentage-score-container\" [class.zero-result]=\"!aiPercentageResult\">\n\t\t\t<span class=\"percentage-result\">{{ aiPercentageResult | percent : '1.0-1' }}</span>\n\t\t</div>\n\t</ng-container>\n\n\t<ng-template #loadingState>\n\t\t<div class=\"loader-container\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\" fxLayoutGap=\"8px\">\n\t\t\t<div class=\"loader-header-container\" fxLayout=\"column\" fxLayoutGap=\"8px\">\n\t\t\t\t<ngx-skeleton-loader class=\"title-loader skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t<ngx-skeleton-loader class=\"description-loader skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t</div>\n\t\t\t<div class=\"loader-percentage-score-container\">\n\t\t\t\t<ngx-skeleton-loader class=\"percentage-score-loader skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t</div>\n\t\t</div>\n\t</ng-template>\n</div>\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n\tselector: 'cr-ai-score-tooltip-content',\n\ttemplateUrl: './cr-ai-score-tooltip-content.component.html',\n\tstyleUrls: ['./cr-ai-score-tooltip-content.component.scss'],\n\tanimations: [trigger('fade', [state('void', style({ opacity: 0 })), transition('void <=> *', animate(300))])],\n\tstandalone: false,\n})\nexport class CrAIScoreTooltipContentComponent implements OnInit {\n\t@Input() tooltipText: string = '';\n\t@Input() isTooltipBar: boolean = false;\n\n\tconstructor() {}\n\n\tngOnInit(): void {}\n}\n","<div @fade *ngIf=\"tooltipText\" fxLayout=\"column\" fxLayoutAlign=\"center center\">\n\t<div class=\"top-container\" fxLayout=\"column\" fxLayoutAlign=\"center center\" fxLayoutGap=\"6px\">\n\t\t<span class=\"title\" [class.center-text]=\"isTooltipBar\" i18n>\n\t\t\t{{ tooltipText }}\n\t\t</span>\n\t\t<ng-container *ngIf=\"isTooltipBar\">\n\t\t\t<div class=\"frequencys-contanier\" fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"4px\">\n\t\t\t\t<div class=\"frequency-frame low-frequency\">\n\t\t\t\t\t<span i18n>\n\t\t\t\t\t\tLow\n\t\t\t\t\t\t<br />\n\t\t\t\t\t\tFrequency\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"frequency-frame medium-frequency\">\n\t\t\t\t\t<span i18n>\n\t\t\t\t\t\tMedium\n\t\t\t\t\t\t<br />\n\t\t\t\t\t\tFrequency\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"frequency-frame high-frequency\">\n\t\t\t\t\t<span i18n>\n\t\t\t\t\t\tHigh\n\t\t\t\t\t\t<br />\n\t\t\t\t\t\tFrequency\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</ng-container>\n\t</div>\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"7\" viewBox=\"0 0 14 7\" fill=\"none\">\n\t\t<path d=\"M6.8639 0H13.4953L6.8639 7L0.504883 0H6.8639Z\" fill=\"#0B163E\" />\n\t</svg>\n</div>\n","import { Overlay, OverlayPositionBuilder, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentRef, Directive, ElementRef, HostListener, Input } from '@angular/core';\nimport { CrAIScoreTooltipContentComponent } from './cr-ai-score-tooltip-content.component';\nimport { ComponentPortal } from '@angular/cdk/portal';\n\n@Directive({\n\tselector: '[crAIScoreTooltipContent]',\n\tstandalone: false,\n})\nexport class CrAIScoreTooltipContentDirective {\n\tprivate _overlayRef: OverlayRef;\n\t@Input() isResultTitle: boolean = false;\n\t@Input() tooltipText: string = '';\n\t@Input() tooltipPosition: string = 'top';\n\t@Input() isTooltipBar: boolean = false;\n\n\tconstructor(\n\t\tprivate _overlay: Overlay,\n\t\tprivate _overlayPositionBuilder: OverlayPositionBuilder,\n\t\tprivate _elementRef: ElementRef\n\t) {}\n\n\tngOnInit() {\n\t\tconst positionStrategy = this._overlayPositionBuilder.flexibleConnectedTo(this._elementRef).withPositions([\n\t\t\t{\n\t\t\t\toriginX: 'center',\n\t\t\t\toriginY: 'top',\n\t\t\t\toverlayX: 'center',\n\t\t\t\toverlayY: 'bottom',\n\t\t\t\toffsetY: -8,\n\t\t\t},\n\t\t]);\n\n\t\tthis._overlayRef = this._overlay.create({ positionStrategy });\n\t}\n\n\t/**\n\t * Event listener for mouseenter event.\n\t * Shows the tooltip when the mouse enters the element.\n\t */\n\t@HostListener('mouseenter')\n\t@HostListener('focus')\n\tshow() {\n\t\tlet isOverflowing = false;\n\t\tif (this.isResultTitle && this.tooltipText) {\n\t\t\tisOverflowing = this._elementRef.nativeElement.scrollWidth > this._elementRef.nativeElement.clientWidth;\n\t\t}\n\t\t// Attach the component if it has not already attached to the overlay\n\t\tif (this._overlayRef && !this._overlayRef.hasAttached()) {\n\t\t\tconst tooltipRef: ComponentRef<CrAIScoreTooltipContentComponent> = this._overlayRef.attach(\n\t\t\t\tnew ComponentPortal(CrAIScoreTooltipContentComponent)\n\t\t\t);\n\t\t\ttooltipRef.instance.tooltipText = this.isResultTitle ? (isOverflowing ? this.tooltipText : '') : this.tooltipText;\n\t\t\ttooltipRef.instance.isTooltipBar = this.isTooltipBar;\n\t\t}\n\t}\n\n\t/**\n\t * Event listener for mouseleave event.\n\t * Hides the tooltip when the mouse leaves the element.\n\t */\n\t@HostListener('mouseleave')\n\t@HostListener('blur')\n\thide() {\n\t\tthis.closeToolTip();\n\t}\n\n\t/**\n\t * Cleans up the directive when it is destroyed.\n\t */\n\tngOnDestroy() {\n\t\tthis.closeToolTip();\n\t}\n\n\t/**\n\t * Closes the tooltip by detaching it from the overlay.\n\t */\n\tprivate closeToolTip() {\n\t\tif (this._overlayRef) {\n\t\t\tthis._overlayRef.detach();\n\t\t}\n\t}\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ReportStatistics } from '../../../models/report-statistics.models';\nimport { EReportScoreTooltipPosition } from '../../../enums/copyleaks-web-report.enums';\nimport { ReportViewService } from '../../../services/report-view.service';\nimport { ReportDataService } from '../../../services/report-data.service';\n\n@Component({\n\tselector: 'cr-ai-source-match-entry',\n\ttemplateUrl: './cr-ai-source-match-entry.component.html',\n\tstyleUrls: ['./cr-ai-source-match-entry.component.scss'],\n\tstandalone: false,\n})\nexport class CrAiSourceMatchEntryComponent implements OnInit {\n\t/**\n\t * @Input {ReportStatistics} The full statistics object for AI source match results\n\t */\n\t@Input() aiSourceMatchResultsStats: ReportStatistics;\n\n\t/**\n\t * @Input {number} The overall AI source match score\n\t */\n\t@Input() aiSourceMatchResultsScore: number = 0;\n\n\t/**\n\t * @Input {number} The score representing identical content matches\n\t */\n\t@Input() aiSourceMatchResultsIndenticalScore: number = 0;\n\n\t/**\n\t * @Input {number} The score representing matches with minor changes\n\t */\n\t@Input() aiSourceMatchResultsMinorChangesScore: number = 0;\n\n\t/**\n\t * @Input {number} The score representing paraphrased content matches\n\t */\n\t@Input() aiSourceMatchResultsParaphrasedScore: number = 0;\n\n\t/**\n\t * @Input {number} The total number of AI source match results\n\t */\n\t@Input() aiSourceMatchResultsTotal: number = 0;\n\n\t/**\n\t * @Input {boolean} A flag indicating if the component is in loading state\n\t */\n\t@Input() isLoading: boolean = true;\n\n\t/**\n\t * @Output {EventEmitter<void>} Emits when user navigates to the AI source match results categroy view\n\t */\n\t@Output() onNavigateToResults = new EventEmitter<void>();\n\n\tEReportScoreTooltipPosition = EReportScoreTooltipPosition;\n\n\tconstructor(public reportViewSvc: ReportViewService, public reportDataSvc: ReportDataService) {}\n\n\tngOnInit(): void {}\n\n\tonNavigateToResultsClick() {\n\t\tthis.onNavigateToResults.emit();\n\t}\n}\n","<ng-container *ngIf=\"!isLoading; else loadingViewRef\">\n\t<div class=\"top-section-container\">\n\t\t<div class=\"ai-source-match-title-container\">\n\t\t\t<div class=\"title-container\">\n\t\t\t\t<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t<rect x=\"0.5\" y=\"0.5\" width=\"23\" height=\"23\" rx=\"11.5\" fill=\"#FBFFFF\" />\n\t\t\t\t\t<rect\n\t\t\t\t\t\tx=\"0.5\"\n\t\t\t\t\t\ty=\"0.5\"\n\t\t\t\t\t\twidth=\"23\"\n\t\t\t\t\t\theight=\"23\"\n\t\t\t\t\t\trx=\"11.5\"\n\t\t\t\t\t\tfill=\"url(#paint0_linear_8004_807)\"\n\t\t\t\t\t\tfill-opacity=\"0.6\" />\n\t\t\t\t\t<rect x=\"0.5\" y=\"0.5\" width=\"23\" height=\"23\" rx=\"11.5\" stroke=\"#FD7366\" />\n\t\t\t\t\t<path\n\t\t\t\t\t\tfill-rule=\"evenodd\"\n\t\t\t\t\t\tclip-rule=\"evenodd\"\n\t\t\t\t\t\td=\"M20.0446 11.0705C18.6459 7.9903 15.4821 6 11.9844 6C10.2063 6 8.4904 6.50961 7.02244 7.47352C5.55448 8.43744 4.43695 9.78841 3.79101 11.3801L3.60156 11.8469L3.79101 12.3135C4.43695 13.9053 5.55433 15.2563 7.02244 16.2202C8.49056 17.1841 10.2063 17.6937 11.9844 17.6937C13.1555 17.6937 14.2892 17.4706 15.3317 17.0581L14.4282 16.1287C13.7068 16.5073 12.8792 16.7225 11.9993 16.7225C9.19679 16.7225 6.9249 14.5396 6.9249 11.8469C6.9249 9.15414 9.19679 6.97124 11.9993 6.97124C14.8018 6.97124 17.0737 9.15414 17.0737 11.8469C17.0737 12.8102 16.783 13.7083 16.2811 14.4645L17.5593 15.7793C18.6154 14.9478 19.4759 13.8756 20.0446 12.6232L20.3971 11.8469L20.0446 11.0705ZM17.0635 16.1422L15.9093 14.9549C15.6329 15.2755 15.3146 15.5616 14.9625 15.8054L15.9269 16.7974C16.3226 16.6066 16.7026 16.3876 17.0635 16.1422Z\"\n\t\t\t\t\t\tfill=\"#FD7366\" />\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M14.6909 14.8174C13.1075 16.3627 10.5648 16.3293 9.02223 14.7426C7.47966 13.1559 7.51299 10.6085 9.09635 9.06323C10.6797 7.51794 13.2224 7.55134 14.765 9.13799C16.3077 10.7246 16.2742 13.2721 14.6909 14.8174ZM9.58373 9.56455C8.27643 10.8404 8.24891 12.9443 9.52259 14.2543C10.7963 15.5643 12.8962 15.592 14.2035 14.316C15.5108 13.0401 15.5383 10.9363 14.2646 9.62629C12.9909 8.31632 10.891 8.28865 9.58373 9.56455Z\"\n\t\t\t\t\t\tfill=\"#FBFFFF\" />\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M14.6909 14.8174C13.1075 16.3627 10.5648 16.3293 9.02223 14.7426C7.47966 13.1559 7.51299 10.6085 9.09635 9.06323C10.6797 7.51794 13.2224 7.55134 14.765 9.13799C16.3077 10.7246 16.2742 13.2721 14.6909 14.8174ZM9.58373 9.56455C8.27643 10.8404 8.24891 12.9443 9.52259 14.2543C10.7963 15.5643 12.8962 15.592 14.2035 14.316C15.5108 13.0401 15.5383 10.9363 14.2646 9.62629C12.9909 8.31632 10.891 8.28865 9.58373 9.56455Z\"\n\t\t\t\t\t\tfill=\"url(#paint1_linear_8004_807)\" />\n\t\t\t\t\t<path\n\t\t\t\t\t\tfill-rule=\"evenodd\"\n\t\t\t\t\t\tclip-rule=\"evenodd\"\n\t\t\t\t\t\td=\"M9.85214 12.8185C10.1241 13.506 10.7059 14.0366 11.4249 14.2376L11.661 12.9221C11.4488 12.824 11.2758 12.6639 11.1605 12.4683L9.85214 12.8185ZM9.69733 12.1791L10.7301 11.9027L9.69912 11.6841C9.69015 11.7683 9.68555 11.8537 9.68555 11.9403C9.68555 12.0209 9.68954 12.1005 9.69733 12.1791ZM13.5723 10.0939C13.162 9.75743 12.6374 9.55554 12.0658 9.55554C11.0684 9.55554 10.2144 10.1701 9.86026 11.0418L11.1527 11.3158C11.3879 10.8975 11.8671 10.6492 12.3632 10.7317C12.5186 10.7575 12.661 10.8133 12.7857 10.8923L13.5723 10.0939ZM13.9318 10.4597L13.1458 11.2574C13.2876 11.4883 13.3481 11.7709 13.2961 12.0609C13.2049 12.5685 12.797 12.9436 12.3132 13.0154L12.0781 14.325C13.387 14.3183 14.446 13.2532 14.446 11.9403C14.446 11.3809 14.2537 10.8664 13.9318 10.4597Z\"\n\t\t\t\t\t\tfill=\"#A188FF\" />\n\t\t\t\t\t<path\n\t\t\t\t\t\tfill-rule=\"evenodd\"\n\t\t\t\t\t\tclip-rule=\"evenodd\"\n\t\t\t\t\t\td=\"M14.9609 15.8053L16.907 17.8071C17.0255 17.9292 17.1841 17.9974 17.3539 17.9999H17.3626C17.5292 17.9999 17.686 17.9357 17.8055 17.8193C18.0563 17.5747 18.0617 17.1706 17.8173 16.9191L15.9077 14.9548C15.6313 15.2755 15.3131 15.5615 14.9609 15.8053Z\"\n\t\t\t\t\t\tfill=\"#FBFFFF\" />\n\t\t\t\t\t<path\n\t\t\t\t\t\tfill-rule=\"evenodd\"\n\t\t\t\t\t\tclip-rule=\"evenodd\"\n\t\t\t\t\t\td=\"M14.9609 15.8053L16.907 17.8071C17.0255 17.9292 17.1841 17.9974 17.3539 17.9999H17.3626C17.5292 17.9999 17.686 17.9357 17.8055 17.8193C18.0563 17.5747 18.0617 17.1706 17.8173 16.9191L15.9077 14.9548C15.6313 15.2755 15.3131 15.5615 14.9609 15.8053Z\"\n\t\t\t\t\t\tfill=\"url(#paint2_linear_8004_807)\" />\n\t\t\t\t\t<defs>\n\t\t\t\t\t\t<linearGradient\n\t\t\t\t\t\t\tid=\"paint0_linear_8004_807\"\n\t\t\t\t\t\t\tx1=\"10.0134\"\n\t\t\t\t\t\t\ty1=\"0.232098\"\n\t\t\t\t\t\t\tx2=\"8.37462\"\n\t\t\t\t\t\t\ty2=\"26.8629\"\n\t\t\t\t\t\t\tgradientUnits=\"userSpaceOnUse\">\n\t\t\t\t\t\t\t<stop stop-color=\"#F8EAFF\" />\n\t\t\t\t\t\t\t<stop offset=\"1\" stop-color=\"#D7C5FF\" />\n\t\t\t\t\t\t</linearGradient>\n\t\t\t\t\t\t<linearGradient\n\t\t\t\t\t\t\tid=\"paint1_linear_8004_807\"\n\t\t\t\t\t\t\tx1=\"7.88672\"\n\t\t\t\t\t\t\ty1=\"12.5462\"\n\t\t\t\t\t\t\tx2=\"15.3784\"\n\t\t\t\t\t\t\ty2=\"14.524\"\n\t\t\t\t\t\t\tgradientUnits=\"userSpaceOnUse\">\n\t\t\t\t\t\t\t<stop stop-color=\"#BCA6FF\" />\n\t\t\t\t\t\t\t<stop offset=\"1\" stop-color=\"#9345F9\" />\n\t\t\t\t\t\t</linearGradient>\n\t\t\t\t\t\t<linearGradient\n\t\t\t\t\t\t\tid=\"paint2_linear_8004_807\"\n\t\t\t\t\t\t\tx1=\"14.9609\"\n\t\t\t\t\t\t\ty1=\"16.7072\"\n\t\t\t\t\t\t\tx2=\"17.7997\"\n\t\t\t\t\t\t\ty2=\"17.4558\"\n\t\t\t\t\t\t\tgradientUnits=\"userSpaceOnUse\">\n\t\t\t\t\t\t\t<stop stop-color=\"#BCA6FF\" />\n\t\t\t\t\t\t\t<stop offset=\"1\" stop-color=\"#9345F9\" />\n\t\t\t\t\t\t</linearGradient>\n\t\t\t\t\t</defs>\n\t\t\t\t</svg>\n\t\t\t\t<span i18n>AI Source Match</span>\n\t\t\t\t<mat-chip-option class=\"new-chip\" i18n>New</mat-chip-option>\n\t\t\t</div>\n\t\t\t<ng-container *ngIf=\"aiSourceMatchResultsTotal >= 0; else zeroTotalRef\">\n\t\t\t\t<div class=\"total-results\" i18n>\n\t\t\t\t\t{{ aiSourceMatchResultsTotal | number }}\n\t\t\t\t\t{aiSourceMatchResultsTotal, plural, =1 {Result} other {Results}}\n\t\t\t\t</div>\n\t\t\t</ng-container>\n\t\t\t<ng-template #zeroTotalRef>\n\t\t\t\t<div class=\"no-results-info-container\">\n\t\t\t\t\t<span class=\"total-results\" i18n>No Results Found</span>\n\t\t\t\t\t<mat-icon\n\t\t\t\t\t\tfontSet=\"material-icons-round\"\n\t\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t\tmatTooltip=\"AI Source Match blends plagiarism and AI detection to identify reused or repurposed AI-generated content from other sources.\"\n\t\t\t\t\t\t[matTooltipPosition]=\"'after'\"\n\t\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip tooltip-contanier\"\n\t\t\t\t\t\ti18n-matTooltip>\n\t\t\t\t\t\tinfo_outline\n\t\t\t\t\t</mat-icon>\n\t\t\t\t</div>\n\t\t\t</ng-template>\n\t\t</div>\n\t\t<div *ngIf=\"aiSourceMatchResultsTotal >= 0\" class=\"ai-source-match-description\" i18n>\n\t\t\tIdentifies if any part of the text matches AI-generated content already published elsewhere.\n\t\t</div>\n\t</div>\n\n\t<div *ngIf=\"aiSourceMatchResultsTotal >= 0\" class=\"bottom-section-container\">\n\t\t<div class=\"match-bar-container\">\n\t\t\t<span class=\"ai-source-match-score\">{{ aiSourceMatchResultsScore | similarity : '1.0-1' }}</span>\n\t\t\t<div\n\t\t\t\tclass=\"grade-bar\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t\t[reportViewService]=\"reportViewSvc\"\n\t\t\t\t[crReportScoreTooltipPosition]=\"EReportScoreTooltipPosition.ABOVE\"\n\t\t\t\t[crReportScoreTooltip]=\"{\n\t\t\t\t\tidenticalPct: {\n\t\t\t\t\t\tpercentage: aiSourceMatchResultsIndenticalScore,\n\t\t\t\t\t\ttotalWords: aiSourceMatchResultsStats?.identical ?? 0\n\t\t\t\t\t},\n\t\t\t\t\tminorChangesPct: {\n\t\t\t\t\t\tpercentage: aiSourceMatchResultsMinorChangesScore,\n\t\t\t\t\t\ttotalWords: aiSourceMatchResultsStats?.minorChanges ?? 0\n\t\t\t\t\t},\n\t\t\t\t\tparaphrasedPct: {\n\t\t\t\t\t\tpercentage: aiSourceMatchResultsParaphrasedScore,\n\t\t\t\t\t\ttotalWords: aiSourceMatchResultsStats?.relatedMeaning ?? 0\n\t\t\t\t\t},\n\t\t\t\t\tomittedPct: undefined,\n\t\t\t\t\ttotalWords: aiSourceMatchResultsStats?.total ?? 0,\n\t\t\t\t\tisResult: true\n\t\t\t\t}\">\n\t\t\t\t<div class=\"bar plagiarism\" [style.width.%]=\"100\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"identical\"\n\t\t\t\t\t\t[class.first-percentage]=\"!!aiSourceMatchResultsIndenticalScore\"\n\t\t\t\t\t\t[class.last-percentage]=\"!aiSourceMatchResultsMinorChangesScore && !aiSourceMatchResultsParaphrasedScore\"\n\t\t\t\t\t\t[style.width.%]=\"aiSourceMatchResultsIndenticalScore * 100\"\n\t\t\t\t\t\t[style.border]=\"!aiSourceMatchResultsIndenticalScore ? 'none' : ''\"></div>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"minor-changes\"\n\t\t\t\t\t\t[class.first-percentage]=\"!aiSourceMatchResultsIndenticalScore\"\n\t\t\t\t\t\t[class.last-percentage]=\"!aiSourceMatchResultsParaphrasedScore\"\n\t\t\t\t\t\t[style.width.%]=\"aiSourceMatchResultsMinorChangesScore * 100\"\n\t\t\t\t\t\t[style.border]=\"!aiSourceMatchResultsMinorChangesScore ? 'none' : ''\"></div>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"paraphrased last-percentage\"\n\t\t\t\t\t\t[class.first-percentage]=\"!aiSourceMatchResultsIndenticalScore && !aiSourceMatchResultsMinorChangesScore\"\n\t\t\t\t\t\t[style.width.%]=\"aiSourceMatchResultsParaphrasedScore * 100\"\n\t\t\t\t\t\t[style.border]=\"!aiSourceMatchResultsParaphrasedScore ? 'none' : ''\"></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<cr-button\n\t\t\ticon=\"tab\"\n\t\t\t[outlined]=\"true\"\n\t\t\t[isLink]=\"true\"\n\t\t\t[dir]=\"reportViewSvc.documentDirection\"\n\t\t\tpadding=\"4px 8px\"\n\t\t\t[ngStyle]=\"{\n\t\t\t\t'pointer-events': aiSourceMatchResultsTotal <= 0 ? 'none' : 'auto',\n\t\t\t\t'border-color': aiSourceMatchResultsTotal <= 0 ? '#9DA9BF' : '$color-primary'\n\t\t\t}\"\n\t\t\t[disabled]=\"aiSourceMatchResultsTotal <= 0\"\n\t\t\t(click)=\"$event.preventDefault(); $event.stopPropagation(); onNavigateToResultsClick()\">\n\t\t\t<ng-container i18n>Matching Results</ng-container>\n\t\t</cr-button>\n\t</div>\n</ng-container>\n<ng-template #loadingViewRef>\n\t<div class=\"title-loading-container\">\n\t\t<div class=\"top-part-loading-container\">\n\t\t\t<div class=\"first-loading\">\n\t\t\t\t<ngx-skeleton-loader class=\"skeleton circle\" [appearance]=\"'circle'\"></ngx-skeleton-loader>\n\t\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 100%\"></ngx-skeleton-loader>\n\t\t\t</div>\n\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 15%\"></ngx-skeleton-loader>\n\t\t</div>\n\t\t<div class=\"bottom-part-loading-container\">\n\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 100%\"></ngx-skeleton-loader>\n\t\t</div>\n\t</div>\n\n\t<div class=\"content-loading-container\">\n\t\t<div class=\"top-part-loading-container\">\n\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 15%\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"skeleton bar\" [appearance]=\"'line'\" style=\"width: 85%\"></ngx-skeleton-loader>\n\t\t</div>\n\t\t<div class=\"bottom-part-loading-container\">\n\t\t\t<ngx-skeleton-loader class=\"skeleton circle small\" [appearance]=\"'circle'\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 30%\"></ngx-skeleton-loader>\n\t\t</div>\n\t</div>\n</ng-template>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ReportViewService } from '../../../services/report-view.service';\n\n@Component({\n\tselector: 'cr-ai-phrases-entry',\n\ttemplateUrl: './cr-ai-phrases-entry.component.html',\n\tstyleUrls: ['./cr-ai-phrases-entry.component.scss'],\n\tstandalone: false,\n})\nexport class CrAiPhrasesEntryComponent implements OnInit {\n\t/**\n\t * @Input {string} Title of the alert displayed in the component\n\t */\n\t@Input() alertTitle: string = '';\n\n\t/**\n\t * @Input {string} Message of the alert displayed in the component\n\t */\n\t@Input() alertMessage: string = '';\n\n\t/**\n\t * @Input {boolean} Flag indicating if the alert is related to AI insights\n\t */\n\t@Input() aiInsightAlert: boolean = false;\n\n\t/**\n\t * @Input {string} Tooltip text displayed on the bar component\n\t */\n\t@Input() barTooltipText: string = '';\n\n\t/**\n\t * @Input {number} Minimum proportion value used for rendering the bar chart\n\t */\n\t@Input() minProportion: number = 0;\n\n\t/**\n\t * @Input {number} Maximum proportion value used for rendering the bar chart\n\t */\n\t@Input() maxProportion: number = 0;\n\n\t/**\n\t * @Input {number} Minimum grade value displayed on the bar\n\t */\n\t@Input() minGradeBar: number = 0;\n\n\t/**\n\t * @Input {number} Maximum grade value displayed on the bar\n\t */\n\t@Input() maxGradeBar: number = 0;\n\n\t/**\n\t * @Input {number} Midpoint grade value displayed on the bar for reference\n\t */\n\t@Input() midGradeBar: number = 0;\n\n\t/**\n\t * @Input {boolean} A flag indicating if the result includes an infinity value\n\t */\n\t@Input() hasInfinityResult: boolean = false;\n\n\t/**\n\t * @Input {number} Total number of phrases contributing to the result\n\t */\n\t@Input() totalPhrases: number = 0;\n\n\t/**\n\t * @Input {boolean} A flag indicating if the component is in loading state\n\t */\n\t@Input() isLoading: boolean = true;\n\n\t/**\n\t * @Input {number} The AI percentage result to display on the bar\n\t */\n\t@Input() aiPercentageResult: number = 0;\n\n\t/**\n\t * @Output {EventEmitter<void>} Emits when user navigates to the phrases section\n\t */\n\t@Output() onNavigateToPhrases = new EventEmitter<void>();\n\n\tconstructor(public reportViewSvc: ReportViewService) {}\n\n\tngOnInit(): void {}\n\n\tonNavigateToPhrasesClick() {\n\t\tthis.onNavigateToPhrases.emit();\n\t}\n}\n","<ng-container *ngIf=\"!isLoading; else loadingViewRef\">\n\t<div class=\"top-section-container\">\n\t\t<div class=\"ai-source-match-title-container\">\n\t\t\t<div class=\"title-container\">\n\t\t\t\t<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t<rect x=\"0.5\" y=\"0.5\" width=\"23\" height=\"23\" rx=\"11.5\" fill=\"#EBF3F5\" />\n\t\t\t\t\t<rect x=\"0.5\" y=\"0.5\" width=\"23\" height=\"23\" rx=\"11.5\" stroke=\"#FBFFFF\" />\n\t\t\t\t\t<rect x=\"0.5\" y=\"0.5\" width=\"23\" height=\"23\" rx=\"11.5\" stroke=\"url(#paint0_linear_7308_1032)\" />\n\t\t\t\t\t<rect x=\"2\" y=\"2\" width=\"20\" height=\"20\" rx=\"10\" fill=\"#FBFFFF\" />\n\t\t\t\t\t<rect x=\"2\" y=\"2\" width=\"20\" height=\"20\" rx=\"10\" fill=\"url(#paint1_linear_7308_1032)\" />\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M16.4545 10.0909L17.25 8.34091L19 7.54545L17.25 6.75L16.4545 5L15.6591 6.75L13.9091 7.54545L15.6591 8.34091L16.4545 10.0909ZM11.6818 10.4091L10.0909 6.90909L8.5 10.4091L5 12L8.5 13.5909L10.0909 17.0909L11.6818 13.5909L15.1818 12L11.6818 10.4091ZM16.4545 13.9091L15.6591 15.6591L13.9091 16.4545L15.6591 17.25L16.4545 19L17.25 17.25L19 16.4545L17.25 15.6591L16.4545 13.9091Z\"\n\t\t\t\t\t\tfill=\"white\" />\n\t\t\t\t\t<defs>\n\t\t\t\t\t\t<linearGradient\n\t\t\t\t\t\t\tid=\"paint0_linear_7308_1032\"\n\t\t\t\t\t\t\tx1=\"-1.01822e-07\"\n\t\t\t\t\t\t\ty1=\"13.811\"\n\t\t\t\t\t\t\tx2=\"22.4306\"\n\t\t\t\t\t\t\ty2=\"19.7441\"\n\t\t\t\t\t\t\tgradientUnits=\"userSpaceOnUse\">\n\t\t\t\t\t\t\t<stop stop-color=\"#BCA6FF\" />\n\t\t\t\t\t\t\t<stop offset=\"1\" stop-color=\"#9345F9\" />\n\t\t\t\t\t\t</linearGradient>\n\t\t\t\t\t\t<linearGradient\n\t\t\t\t\t\t\tid=\"paint1_linear_7308_1032\"\n\t\t\t\t\t\t\tx1=\"2\"\n\t\t\t\t\t\t\ty1=\"13.5092\"\n\t\t\t\t\t\t\tx2=\"20.6922\"\n\t\t\t\t\t\t\ty2=\"18.4534\"\n\t\t\t\t\t\t\tgradientUnits=\"userSpaceOnUse\">\n\t\t\t\t\t\t\t<stop stop-color=\"#BCA6FF\" />\n\t\t\t\t\t\t\t<stop offset=\"1\" stop-color=\"#9345F9\" />\n\t\t\t\t\t\t</linearGradient>\n\t\t\t\t\t</defs>\n\t\t\t\t</svg>\n\n\t\t\t\t<span i18n>AI Phrases</span>\n\t\t\t</div>\n\t\t\t<ng-container *ngIf=\"!aiInsightAlert; else notApplicableRef\">\n\t\t\t\t<div class=\"total-results\" i18n>\n\t\t\t\t\t{{ totalPhrases | number }}\n\t\t\t\t\t{totalPhrases, plural, =1 {Phrase} other {Phrases}}\n\t\t\t\t</div>\n\t\t\t</ng-container>\n\t\t\t<ng-template #notApplicableRef>\n\t\t\t\t<span class=\"not-applicable-results\" i18n>N/A</span>\n\t\t\t</ng-template>\n\t\t</div>\n\t\t<div *ngIf=\"totalPhrases >= 0\" class=\"ai-source-match-description\" i18n>\n\t\t\tDetects phrases that appear with higher frequency in AI-written text than in human writing.\n\t\t</div>\n\t</div>\n\n\t<div\n\t\t*ngIf=\"\n\t\t\t((totalPhrases > 0 && aiPercentageResult > 0) || (totalPhrases == 0 && !aiPercentageResult)) && !aiInsightAlert\n\t\t\"\n\t\tclass=\"bottom-section-container\">\n\t\t<div class=\"match-bar-container\">\n\t\t\t<span *ngIf=\"totalPhrases > 0\" class=\"ai-source-match-score\">{{ minProportion?.toLocaleString() }}x</span>\n\t\t\t<div\n\t\t\t\tclass=\"grade-bar-container\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t\tcrAIScoreTooltipContent\n\t\t\t\t[isTooltipBar]=\"true\"\n\t\t\t\t[tooltipText]=\"barTooltipText\"\n\t\t\t\tfxLayout=\"row\"\n\t\t\t\tfxLayoutAlign=\"start center\"\n\t\t\t\tfxLayoutGap=\"16px\">\n\t\t\t\t<div class=\"grade-bar\" fxLayout=\"row\">\n\t\t\t\t\t<div class=\"min-result\" [style.width]=\"minGradeBar + '%'\"></div>\n\t\t\t\t\t<div class=\"mid-result\" [style.width]=\"midGradeBar + '%'\"></div>\n\t\t\t\t\t<div class=\"max-result\" [style.width]=\"maxGradeBar + '%'\"></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<span class=\"ai-source-match-score\">\n\t\t\t\t<ng-container *ngIf=\"hasInfinityResult; else maxResultCheck\">10,000x</ng-container>\n\t\t\t\t<ng-template #maxResultCheck>\n\t\t\t\t\t<ng-container *ngIf=\"totalPhrases > 0; else emptyResult\">{{ maxProportion?.toLocaleString() }}x</ng-container>\n\t\t\t\t\t<ng-template #emptyResult></ng-template>\n\t\t\t\t</ng-template>\n\t\t\t</span>\n\t\t</div>\n\t\t<cr-button\n\t\t\ticon=\"chevron_right\"\n\t\t\t[outlined]=\"true\"\n\t\t\t[isLink]=\"true\"\n\t\t\t[dir]=\"reportViewSvc.documentDirection\"\n\t\t\t[disabled]=\"totalPhrases <= 0\"\n\t\t\t[ngStyle]=\"{\n\t\t\t\t'pointer-events': totalPhrases <= 0 ? 'none' : 'auto',\n\t\t\t\t'border-color': totalPhrases <= 0 ? '#9DA9BF' : '$color-primary'\n\t\t\t}\"\n\t\t\tpadding=\"4px 8px\"\n\t\t\t(click)=\"$event.preventDefault(); $event.stopPropagation(); onNavigateToPhrasesClick()\">\n\t\t\t<ng-container i18n>See phrases</ng-container>\n\t\t</cr-button>\n\t</div>\n\n\t<div *ngIf=\"aiInsightAlert\" class=\"lang-not-supported-container\" fxLayoutAlign=\"center center\">\n\t\t<div class=\"language-icon-container\">\n\t\t\t<mat-icon fontSet=\"material-icons-round\">language_outline</mat-icon>\n\t\t</div>\n\t\t<div class=\"insight-text\" fxLayout=\"column\">\n\t\t\t<span class=\"title\" i18n>\n\t\t\t\t{{ alertTitle }}\n\t\t\t</span>\n\t\t\t<span class=\"description\" i18n>\n\t\t\t\t{{ alertMessage }}\n\t\t\t</span>\n\t\t</div>\n\t</div>\n\n\t<div *ngIf=\"!totalPhrases && aiPercentageResult > 0\" class=\"empty-state-with-ai-score\">\n\t\t<div class=\"info-icon-container\">\n\t\t\t<mat-icon fontSet=\"material-icons-round\">info_outline</mat-icon>\n\t\t</div>\n\n\t\t<span i18n>\n\t\t\tThere is no specific phrase that indicates AI. However, other criteria suggest that this text was generated by AI.\n\t\t</span>\n\t</div>\n</ng-container>\n<ng-template #loadingViewRef>\n\t<div class=\"title-loading-container\">\n\t\t<div class=\"top-part-loading-container\">\n\t\t\t<div class=\"first-loading\">\n\t\t\t\t<ngx-skeleton-loader class=\"skeleton circle\" [appearance]=\"'circle'\"></ngx-skeleton-loader>\n\t\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 100%\"></ngx-skeleton-loader>\n\t\t\t</div>\n\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 15%\"></ngx-skeleton-loader>\n\t\t</div>\n\t\t<div class=\"bottom-part-loading-container\">\n\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 100%\"></ngx-skeleton-loader>\n\t\t</div>\n\t</div>\n\n\t<div class=\"content-loading-container\">\n\t\t<div class=\"top-part-loading-container\">\n\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 15%\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"skeleton bar\" [appearance]=\"'line'\" style=\"width: 70%\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 15%\"></ngx-skeleton-loader>\n\t\t</div>\n\t\t<div class=\"bottom-part-loading-container\">\n\t\t\t<ngx-skeleton-loader class=\"skeleton circle small\" [appearance]=\"'circle'\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 30%\"></ngx-skeleton-loader>\n\t\t</div>\n\t</div>\n</ng-template>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n\tname: 'formaDecimalNumber',\n\tstandalone: false,\n})\nexport class FormaDecimalNumberPipe implements PipeTransform {\n\ttransform(value: number): string {\n\t\t// Check if the number is an integer\n\t\tif (value >= 1) {\n\t\t\treturn Math.round(value).toLocaleString(); // Return integers unchanged\n\t\t}\n\n\t\t// For numbers with decimal places, round to the desired significant figures\n\t\tconst decimalPosition = Math.floor(Math.log10(Math.abs(value)));\n\n\t\tconst factor = Math.pow(10, -decimalPosition);\n\n\t\t// Round to significant figures without altering whole numbers\n\t\tconst roundedValue = Math.round(value * factor) / factor;\n\n\t\treturn roundedValue > 999 ? roundedValue.toLocaleString() : roundedValue.toString();\n\t}\n}\n","import {\n\tAfterViewInit,\n\tComponent,\n\tElementRef,\n\tEventEmitter,\n\tInput,\n\tOnChanges,\n\tOnDestroy,\n\tOnInit,\n\tOutput,\n\tQueryList,\n\tSimpleChanges,\n\tTemplateRef,\n\tViewChild,\n\tViewChildren,\n} from '@angular/core';\nimport {\n\tAIExplainResultItem,\n\tEProportionType,\n\tExplainableAIResults,\n\tMatch,\n\tRange,\n} from '../../../../../models/report-matches.models';\nimport { EnumNavigateMobileButton } from '../../../report-results-item-container/components/models/report-result-item.enum';\nimport { MatExpansionPanel } from '@angular/material/expansion';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { ReportMatchesService } from '../../../../../services/report-matches.service';\nimport { ISelectExplainableAIResult } from '../../../../../models/report-ai-results.models';\nimport { ReportMatchHighlightService } from '../../../../../services/report-match-highlight.service';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { ReportViewService } from '../../../../../services/report-view.service';\nimport { IResultItem } from '../../../report-results-item-container/components/models/report-result-item.models';\nimport * as helpers from '../../../../../utils/report-statistics-helpers';\nimport { ReportDataService } from '../../../../../services/report-data.service';\nimport { EPlatformType } from '../../../../../enums/copyleaks-web-report.enums';\nimport { ReportStatistics } from '../../../../../models/report-statistics.models';\n\n@Component({\n\tselector: 'copyleaks-explainable-ai-result-container',\n\ttemplateUrl: './explainable-ai-result-container.component.html',\n\tstyleUrls: ['./explainable-ai-result-container.component.scss'],\n\tstandalone: false,\n})\nexport class ExplainableAIResultContainerComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\t@ViewChild('aiPhrasesMobileViewScrollContainer') aiPhrasesMobileViewScrollContainer!: ElementRef;\n\t@ViewChild('aiDefaultMobileViewScrollContainer') aiDefaultMobileViewScrollContainer!: ElementRef<HTMLDivElement>;\n\t@ViewChildren(MatExpansionPanel) panels: QueryList<MatExpansionPanel>;\n\t@ViewChild('desktopScroll') desktopScroll!: ElementRef;\n\n\t/**\n\t * @Input {ExplainableAIResults} The explainable AI results\n\t */\n\t@Input() explainableAIResults: ExplainableAIResults;\n\n\t/**\n\t * @Input {boolean} A flag indicating if the results are locked\n\t */\n\t@Input() lockedResults: boolean = false;\n\n\t/**\n\t * @Input {boolean} A flag indicating if the component is in mobile view\n\t */\n\t@Input() isMobile: boolean = false;\n\n\t/**\n\t * @Input {boolean} A flag indicating if the component is in loading state\n\t */\n\t@Input() isLoading: boolean = false;\n\n\t/**\n\t * @Input {boolean} A flag indicating if the plagiarism tab is hidden or disabled\n\t */\n\t@Input() hidePlagarismTap: boolean = false;\n\n\t/**\n\t * @Input Service for report matches and corrections.\n\t */\n\t@Input() reportMatchesSvc: ReportMatchesService;\n\n\t/**\n\t * @Input Service for report matches highlights.\n\t */\n\t@Input() highlightService: ReportMatchHighlightService;\n\n\t/**\n\t * @Input {(IInternetResultPreview | IDatabaseResultPreview | IRepositoryResultPreview)[]} The AI source match results\n\t */\n\t@Input() aiSourceMatchResults: IResultItem[];\n\n\t/**\n\t * @Input {number} The AI percentage result\n\t */\n\t@Input() aiPercentageResult: number = 0;\n\n\t/**\n\t * @Input {TemplateRef<any> | undefined} The template for the custom AI source match upgrade.\n\t */\n\t@Input() customAISourceMatchUpgradeTemplate: TemplateRef<any> | undefined = undefined;\n\n\t/**\n\t * @Input {boolean} A flag indicating if the AI phrases are shown\n\t */\n\t@Input() showAIPhrases: boolean;\n\n\t/**\n\t * @Output {boolean} Event emitted when the user clears the selected result\n\t */\n\t@Output() clearSelectResultEvent = new EventEmitter<boolean>();\n\n\t/**\n\t * @Output {void} Event emitted when the user navigates to the  AI Insights phrases\n\t */\n\t@Output() onNavigateToPhrases = new EventEmitter<void>();\n\n\t/**\n\t * @Output {void} Event emitted when the user navigates to the  AI Insights phrases\n\t */\n\t@Output() onNavigateToDefault = new EventEmitter<void>();\n\n\texplainResults: AIExplainResultItem[] = [];\n\texplainItemResults: AIExplainResultItem[] = [];\n\tnavigateMobileButton: EnumNavigateMobileButton = EnumNavigateMobileButton.FirstButton;\n\tenumNavigateMobileButton = EnumNavigateMobileButton;\n\tEPlatformType = EPlatformType;\n\n\tproportions: number[] = [];\n\temptyView: boolean = false;\n\taiInsightAlert: boolean = false;\n\talertTitle: string;\n\talertMessage: string;\n\ttitle: string;\n\thasInfinityResult: boolean = false;\n\topenedPanel: boolean = false; // its for the ai insight result height, once panel opened we want to add more height\n\tminProportion: number = 0;\n\tmaxProportion: number = 0;\n\tminGradeBar: number = 0;\n\tmidGradeBar: number = 0;\n\tmaxGradeBar: number = 0;\n\tcurrentViewedIndex: number = 0;\n\tinfoTooltipText: string;\n\tproportionTooltipText: string;\n\tresultTooltipText: string;\n\tbarTooltipText: string;\n\tupdateResult: boolean = false;\n\tpanelIndex: number[] = [];\n\ttooltipVisible: boolean = false;\n\tisProgrammaticChange: boolean;\n\tdocDirection: 'ltr' | 'rtl';\n\n\taiSourceMatchResultsStats: ReportStatistics;\n\taiSourceMatchResultsScore: number = 0;\n\taiSourceMatchResultsIndenticalScore: number = 0;\n\taiSourceMatchResultsMinorChangesScore: number = 0;\n\taiSourceMatchResultsParaphrasedScore: number = 0;\n\taiSourceMatchResultsTotal: number = 0;\n\n\t// Subject for destroying all the subscriptions in the main library component\n\tprivate unsubscribe$ = new Subject();\n\n\tconstructor(public reportViewSvc: ReportViewService, private _reportDataSvc: ReportDataService) {}\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif (changes['isLoading']?.currentValue == false) {\n\t\t\t{\n\t\t\t\tthis._initResults();\n\t\t\t\tif (!this.isAiSourceMatchEnabled() && this.reportViewSvc?.reportViewMode?.hideAISourceMatchUpgrade) {\n\t\t\t\t\tthis.reportMatchesSvc.showAIPhrases$.next(true);\n\t\t\t\t\tthis.showAIPhrases = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (changes['aiSourceMatchResults']?.currentValue && changes['aiSourceMatchResults']?.currentValue.length > 0) {\n\t\t\tthis._calculateAiSourceMatchResultsStats();\n\t\t}\n\t}\n\n\tpublic isPlagiarismEnabled(): boolean {\n\t\treturn this._reportDataSvc.isPlagiarismEnabled();\n\t}\n\n\tpublic isAiSourceMatchEnabled(): boolean {\n\t\treturn this._reportDataSvc.isAiSourceMatchEnabled();\n\t}\n\n\tngOnInit(): void {\n\t\tif (!this.isLoading) this._initResults();\n\t\tthis.highlightService.aiInsightsShowResult$\n\t\t\t.pipe(takeUntil(this.unsubscribe$))\n\t\t\t.subscribe((selectResult: ISelectExplainableAIResult) => {\n\t\t\t\tif (selectResult) {\n\t\t\t\t\tconst selectIndex = this.explainItemResults.findIndex(\n\t\t\t\t\t\tresult => result.start <= selectResult.resultRange.start && selectResult.resultRange.end <= result.end\n\t\t\t\t\t);\n\t\t\t\t\tif (selectIndex === -1) return;\n\t\t\t\t\tif (selectResult.isSelected) {\n\t\t\t\t\t\tif (this.isMobile) {\n\t\t\t\t\t\t\tthis.scrollToIndex(selectIndex);\n\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\tthis.panels?.toArray()[selectIndex]?.open();\n\t\t\t\t\t\t\t}, 500);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.panels?.toArray()[selectIndex]?.open();\n\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\tthis.desktopScroll.nativeElement.children[selectIndex].scrollIntoView({\n\t\t\t\t\t\t\t\t\tbehavior: 'smooth',\n\t\t\t\t\t\t\t\t\tblock: 'center',\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}, 350);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.panels?.toArray()[selectIndex]?.close();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t// Subscription to the originalHtml$ observable to handle the AI insight match click\n\t\tthis.highlightService.originalHtml$.pipe(takeUntil(this.unsubscribe$)).subscribe(selectedMatch => {\n\t\t\tthis._handleHtmlAIInsightMatchClick(selectedMatch);\n\t\t});\n\n\t\tthis.reportViewSvc.documentDirection$.pipe(takeUntil(this.unsubscribe$)).subscribe(dir => {\n\t\t\tthis.docDirection = dir;\n\t\t});\n\t}\n\n\tngAfterViewInit() {\n\t\tthis.aiDefaultMobileViewScrollContainer?.nativeElement?.addEventListener(\n\t\t\t'scroll',\n\t\t\tthis.onAIDefaultViewScrollMobile.bind(this)\n\t\t);\n\t}\n\n\tonAIDefaultViewScrollMobile() {\n\t\tconst container = this.aiDefaultMobileViewScrollContainer?.nativeElement;\n\t\tconst scrollLeft = container.scrollLeft;\n\t\tconst maxScrollLeft = container.scrollWidth - container.clientWidth;\n\n\t\tif (scrollLeft >= maxScrollLeft - 5) {\n\t\t\tthis.navigateMobileButton = EnumNavigateMobileButton.SecondButton;\n\t\t} else {\n\t\t\tthis.navigateMobileButton = EnumNavigateMobileButton.FirstButton;\n\t\t}\n\t}\n\n\tonAIDefaultViewDotNavigate(button: EnumNavigateMobileButton) {\n\t\tconst container = this.aiDefaultMobileViewScrollContainer?.nativeElement;\n\t\tconst scrollTo = button === EnumNavigateMobileButton.FirstButton ? 0 : container.scrollWidth / 2;\n\n\t\tcontainer.scrollTo({\n\t\t\tleft: scrollTo,\n\t\t\tbehavior: 'smooth',\n\t\t});\n\n\t\tthis.navigateMobileButton = button;\n\t}\n\n\ttoggleTooltip(tooltip: MatTooltip): void {\n\t\tthis.tooltipVisible = !this.tooltipVisible;\n\t\tthis.tooltipVisible ? tooltip.show() : tooltip.hide();\n\t}\n\n\tonAIPhrasesScrollMobile() {\n\t\tif (this.isMobile && this.openedPanel && this.panelIndex.length) {\n\t\t\tthis.closePanel();\n\t\t}\n\t\tconst container = this.aiPhrasesMobileViewScrollContainer.nativeElement;\n\t\tconst itemWidth = container.clientWidth;\n\t\tconst scrollPosition = container.scrollLeft;\n\n\t\t// Calculate the index of the item in the center\n\t\tconst index = Math.round(scrollPosition / itemWidth);\n\t\tthis.currentViewedIndex = index;\n\t\tif (index === 0) this.navigateMobileButton = EnumNavigateMobileButton.FirstButton;\n\t\telse if (index === 1) this.navigateMobileButton = EnumNavigateMobileButton.SecondButton;\n\t\telse if (\n\t\t\t(index >= 2 && index != this.explainItemResults.length - 1 && index != this.explainItemResults.length - 2) ||\n\t\t\t(index === 2 && this.explainItemResults.length <= 5)\n\t\t)\n\t\t\tthis.navigateMobileButton = EnumNavigateMobileButton.ThirdButton;\n\t\telse if (index === this.explainItemResults.length - 2)\n\t\t\tthis.navigateMobileButton = EnumNavigateMobileButton.FourthButton;\n\t\telse if (index === this.explainItemResults.length - 1)\n\t\t\tthis.navigateMobileButton = EnumNavigateMobileButton.FifthButton;\n\t}\n\n\tonAIPhrasesViewDotNavigate(dot: EnumNavigateMobileButton) {\n\t\tswitch (dot) {\n\t\t\tcase EnumNavigateMobileButton.FirstButton: {\n\t\t\t\tif (this.explainItemResults.length > 5 && this.currentViewedIndex >= this.explainItemResults.length - 3)\n\t\t\t\t\tthis.scrollToIndex(this.explainItemResults.length - 5);\n\t\t\t\telse if (this.explainItemResults.length > 5 && this.currentViewedIndex >= 3)\n\t\t\t\t\tthis.scrollToIndex(this.currentViewedIndex - 2);\n\t\t\t\telse this.scrollToIndex(0);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase EnumNavigateMobileButton.SecondButton: {\n\t\t\t\tif (this.explainItemResults.length > 5 && this.currentViewedIndex >= this.explainItemResults.length - 3)\n\t\t\t\t\tthis.scrollToIndex(this.explainItemResults.length - 4);\n\t\t\t\telse if (this.explainItemResults.length > 5 && this.currentViewedIndex >= 3)\n\t\t\t\t\tthis.scrollToIndex(this.currentViewedIndex - 1);\n\t\t\t\telse this.scrollToIndex(1);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase EnumNavigateMobileButton.ThirdButton: {\n\t\t\t\tif (this.explainItemResults.length > 5 && this.currentViewedIndex >= this.explainItemResults.length - 3)\n\t\t\t\t\tthis.scrollToIndex(this.explainItemResults.length - 3);\n\t\t\t\telse if (this.explainItemResults.length > 5 && this.currentViewedIndex >= 3)\n\t\t\t\t\tthis.scrollToIndex(this.currentViewedIndex);\n\t\t\t\telse this.scrollToIndex(2);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase EnumNavigateMobileButton.FourthButton: {\n\t\t\t\tif (this.explainItemResults.length > 5 && this.currentViewedIndex >= this.explainItemResults.length - 3)\n\t\t\t\t\tthis.scrollToIndex(this.explainItemResults.length - 2);\n\t\t\t\telse if (this.explainItemResults.length > 5 && this.currentViewedIndex >= 3)\n\t\t\t\t\tthis.scrollToIndex(this.currentViewedIndex + 1);\n\t\t\t\telse this.scrollToIndex(3);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase EnumNavigateMobileButton.FifthButton: {\n\t\t\t\tif (this.explainItemResults.length > 5 && this.currentViewedIndex >= this.explainItemResults.length - 3)\n\t\t\t\t\tthis.scrollToIndex(this.explainItemResults.length - 1);\n\t\t\t\telse if (this.explainItemResults.length > 5 && this.currentViewedIndex >= 3)\n\t\t\t\t\tthis.scrollToIndex(this.currentViewedIndex + 2);\n\t\t\t\telse this.scrollToIndex(4);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Function to scroll to the given index\n\tscrollToIndex(index?: number): void {\n\t\tconst itemWidth = this.aiPhrasesMobileViewScrollContainer.nativeElement.clientWidth;\n\t\tconst scrollPosition = index * itemWidth;\n\n\t\tthis.aiPhrasesMobileViewScrollContainer.nativeElement.scrollTo({ left: scrollPosition, behavior: 'smooth' });\n\t}\n\n\t/**\n\t *  close all the panels\n\t */\n\tclosePanel() {\n\t\tthis.panels.forEach(panel => panel.close());\n\t}\n\n\t/**\n\t * Add the panel index to the list when the panel is opened\n\t * @param index\n\t */\n\taddToPanelIndex(index: number) {\n\t\tif (this.isProgrammaticChange) return;\n\n\t\tthis.panelIndex.push(index);\n\t\tthis.openedPanel = true; // its for the ai insight result height, once panel opened we want to add more height\n\n\t\tthis.highlightService.aiInsightsSelect$.next({\n\t\t\tresultRange: {\n\t\t\t\tstart: this.explainItemResults[index].start,\n\t\t\t\tend: this.explainItemResults[index].end,\n\t\t\t} as Range,\n\t\t\tisSelected: true,\n\t\t} as ISelectExplainableAIResult);\n\t}\n\n\t/**\n\t *\n\t * Remove the panel index from the list when the panel is closed\n\t * @param index\n\t */\n\tremoveFromPanelIndex(index: number) {\n\t\tif (this.isProgrammaticChange) return;\n\n\t\tthis.panelIndex = this.panelIndex.filter(i => i !== index);\n\t\tif (!this.panelIndex.length) this.openedPanel = false;\n\n\t\tthis.highlightService.aiInsightsSelect$.next({\n\t\t\tresultRange: {\n\t\t\t\tstart: this.explainItemResults[index].start,\n\t\t\t\tend: this.explainItemResults[index].end,\n\t\t\t} as Range,\n\t\t\tisSelected: false,\n\t\t} as ISelectExplainableAIResult);\n\t}\n\n\t/**\n\t * Check if the panel is open\n\t * @param index\n\t * @returns boolean\n\t */\n\tisPanelOpen(index: number) {\n\t\treturn this.panelIndex.includes(index);\n\t}\n\n\t/**\n\t * Get the proportion class type\n\t * @param proportionType\n\t * @returns string\n\t */\n\tgetProportionClassType(proportionType: EProportionType) {\n\t\tswitch (proportionType) {\n\t\t\tcase EProportionType.Low:\n\t\t\t\treturn 'low-proportion';\n\t\t\tcase EProportionType.Medium:\n\t\t\t\treturn 'medium-proportion';\n\t\t\tcase EProportionType.High:\n\t\t\t\treturn 'high-proportion';\n\t\t}\n\t}\n\n\t/**\n\t * Handle the click event on the AI phrases entry by navigating to the AI phrases\n\t */\n\tonNavigateToPhrasesClick() {\n\t\tthis.reportMatchesSvc.showAIPhrases$.next(true);\n\t\tthis.showAIPhrases = true;\n\t\tthis.navigateMobileButton = EnumNavigateMobileButton.FirstButton;\n\t\tthis.reportViewSvc.reportViewMode$.next({\n\t\t\t...this.reportViewSvc.reportViewMode,\n\t\t\tshowAIPhrases: true,\n\t\t});\n\n\t\tthis.onNavigateToPhrases.emit();\n\t}\n\n\t/**\n\t * Habdle the click event on the AI Source Match results by navigating to the AI Source Match results in the Matching tab\n\t */\n\tonNavigateToResultsClick() {\n\t\tthis.reportMatchesSvc.showAIPhrases$.next(false);\n\t\tthis.showAIPhrases = false;\n\n\t\tthis.reportViewSvc.reportViewMode$.next({\n\t\t\t...this.reportViewSvc.reportViewMode,\n\t\t\talertCode: null,\n\t\t\tselectedResultsCategory: this.isMobile ? null : encodeURI($localize`AI Source Match`),\n\t\t\t// navigateBackToAIView: !this.isMobile,\n\t\t\tshowAIPhrases: false,\n\t\t});\n\t\tthis.reportViewSvc.selectedAlert$.next(null);\n\n\t\tthis._reportDataSvc.selectedCategoryResultsIds$.next([\n\t\t\t...this.aiSourceMatchResults.map(result => result?.resultPreview?.id),\n\t\t]);\n\t}\n\n\t/**\n\t * Handle the click event on the back button in the AI phrases entry by returning to the default view in the AI tab\n\t */\n\tonBackClick() {\n\t\tthis.reportMatchesSvc.showAIPhrases$.next(false);\n\t\tthis.showAIPhrases = false;\n\t\tthis.navigateMobileButton = EnumNavigateMobileButton.FirstButton;\n\t\tthis.reportViewSvc.reportViewMode$.next({\n\t\t\t...this.reportViewSvc.reportViewMode,\n\t\t\tshowAIPhrases: false,\n\t\t});\n\n\t\tthis.onNavigateToDefault.emit();\n\t}\n\n\tprivate _initResults() {\n\t\tif (!this.updateResult) {\n\t\t\tthis._updateTooltipText();\n\t\t\tif (this.explainableAIResults?.explain && this.explainableAIResults?.slicedMatch.length > 0) {\n\t\t\t\tthis.title = $localize`AI Insights`;\n\t\t\t\tthis._mapingtoResultItem();\n\t\t\t\tthis._updateProportionRange();\n\t\t\t} else if (!this.lockedResults) {\n\t\t\t\tthis.emptyView = true;\n\t\t\t\t// If the AI insights are empty, check if there is an AI alert\n\t\t\t\tthis.aiInsightAlert = !!this.explainableAIResults?.aiScanAlert;\n\t\t\t\tif (this.aiInsightAlert) {\n\t\t\t\t\tthis.alertTitle = this.explainableAIResults?.aiScanAlert?.title;\n\t\t\t\t\tthis.alertMessage = this.explainableAIResults?.aiScanAlert?.message;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.updateResult = true;\n\t\t}\n\t}\n\n\t/**\n\t * Update the tooltip text\n\t */\n\tprivate _updateTooltipText() {\n\t\tthis.infoTooltipText = $localize`Learn more about AI Insights`;\n\t\tthis.proportionTooltipText = $localize`The ratio represents how many times on average AI would use the phrase compared to how many times on average a human would use this phrase.`;\n\t\tthis.resultTooltipText = $localize`Our dataset consists of millions of documents containing both AI and human written text. Here, we are showing the results normalized per 1M texts for an easier interpretation of the data shown.`;\n\t\tthis.barTooltipText = $localize`The darker the color, the more frequently the phrase is used by AI compared to a human.`;\n\t}\n\n\t/**\n\t * Update the bar score\n\t */\n\tprivate _updateProportionRange(): void {\n\t\tthis.proportions = this.explainResults?.map(result => result.proportion) ?? [];\n\t\tconst proportionsFiltered = this.proportions.filter(p => p > 0);\n\t\tthis.minProportion = Number(Math.min(...proportionsFiltered).toFixed(0));\n\t\tthis.maxProportion = Number(Math.max(...proportionsFiltered).toFixed(0));\n\t\tthis.hasInfinityResult = this.proportions.some(p => p == -1);\n\t\tthis.minGradeBar = this._getGradePercentByPropoType(EProportionType.Low);\n\t\tthis.midGradeBar = this._getGradePercentByPropoType(EProportionType.Medium);\n\t\tthis.maxGradeBar = this._getGradePercentByPropoType(EProportionType.High);\n\t}\n\n\t/**\n\t * Get the grade percent in bar score by proportion type\n\t * @param type\n\t * @returns Number\n\t */\n\tprivate _getGradePercentByPropoType(type: EProportionType): number {\n\t\tconst grade =\n\t\t\t(this.explainResults?.filter(result => result.proportionType == type)?.length / this.proportions.length) * 100;\n\t\treturn Number(grade.toFixed(0));\n\t}\n\n\t/**\n\t * Mapping the result to AIExplainResultItem\n\t */\n\tprivate _mapingtoResultItem() {\n\t\tthis.explainableAIResults.explain.patterns.statistics.proportion.forEach((item, index) => {\n\t\t\tconst wordStart = this.explainableAIResults?.explain?.patterns?.text?.chars.starts[index];\n\t\t\tconst wordEnd = this.explainableAIResults?.explain?.patterns?.text?.chars.lengths[index] + wordStart;\n\t\t\tconst content = this.explainableAIResults?.sourceText.substring(wordStart, wordEnd);\n\t\t\tconst slicedMatchResult = this.explainableAIResults.slicedMatch.find(result => result.match.start === wordStart);\n\n\t\t\tif (slicedMatchResult?.content) {\n\t\t\t\tthis.explainResults.push({\n\t\t\t\t\tcontent: content,\n\t\t\t\t\tproportionType: slicedMatchResult.match.proportionType,\n\t\t\t\t\taiCount: Number(this.explainableAIResults.explain.patterns.statistics.aiCount[index]),\n\t\t\t\t\thumanCount: Number(this.explainableAIResults.explain.patterns.statistics.humanCount[index]),\n\t\t\t\t\tproportion: Number(item.toFixed(0)),\n\t\t\t\t\tisInfinity: item == -1,\n\t\t\t\t\tstart: this.explainableAIResults.explain.patterns.text.chars.starts[index],\n\t\t\t\t\tend: this.explainableAIResults.explain.patterns.text.chars.lengths[index] + wordStart,\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\tthis.explainItemResults = this.explainResults.sort((a, b) => {\n\t\t\tif (a.proportion === -1) return -1;\n\t\t\tif (b.proportion === -1) return 1;\n\t\t\treturn b.proportion - a.proportion;\n\t\t});\n\t\tthis.explainItemResults = [...this.explainResults];\n\t}\n\n\t/**\n\t * Handle the HTML View AI insight match click, and expand the panel if the match is selected and collapse it if it's not\n\t * @param selectedMatch The selected HTML match\n\t */\n\tprivate _handleHtmlAIInsightMatchClick(selectedMatch: Match): void {\n\t\tlet selectedAIInsight = this.explainableAIResults.slicedMatch[selectedMatch?.gid];\n\t\tif (!selectedAIInsight) return;\n\n\t\tlet prevSelectedAIInsights = this.highlightService.aiInsightsSelectedResults ?? [];\n\t\tlet alreadySelected = prevSelectedAIInsights.find(\n\t\t\tai => ai.resultRange.start === selectedAIInsight.match.start && ai.resultRange.end === selectedAIInsight.match.end\n\t\t);\n\n\t\tconst selectIndex = this.explainItemResults.findIndex(\n\t\t\tresult => result.start <= selectedAIInsight.match.start && selectedAIInsight.match.end <= result.end\n\t\t);\n\t\tif (alreadySelected) {\n\t\t\tif (this.panels?.toArray()[selectIndex]) this._programmaticallyCollapsePanel(selectIndex);\n\t\t\tthis.highlightService.aiInsightsSelectedResults$.next(\n\t\t\t\tprevSelectedAIInsights.filter(\n\t\t\t\t\tai =>\n\t\t\t\t\t\tai.resultRange.start !== selectedAIInsight.match.start && ai.resultRange.end !== selectedAIInsight.match.end\n\t\t\t\t)\n\t\t\t);\n\t\t} else if (this.panels?.toArray()[selectIndex]) {\n\t\t\t// add the selected AI insight to reportMatchesSvc.aiInsightsSelectedResults if not already selected\n\t\t\tconst selectedResults = this.highlightService.aiInsightsSelectedResults$.value ?? [];\n\t\t\tconst index = selectedResults.findIndex(\n\t\t\t\tresult =>\n\t\t\t\t\tresult.resultRange.start === this.explainItemResults[selectIndex].start &&\n\t\t\t\t\tresult.resultRange.end === this.explainItemResults[selectIndex].end\n\t\t\t);\n\t\t\tif (index === -1)\n\t\t\t\tselectedResults.push({\n\t\t\t\t\tresultRange: {\n\t\t\t\t\t\tstart: this.explainItemResults[selectIndex].start,\n\t\t\t\t\t\tend: this.explainItemResults[selectIndex].end,\n\t\t\t\t\t},\n\t\t\t\t} as ISelectExplainableAIResult);\n\t\t\tthis.highlightService.aiInsightsSelectedResults$.next(selectedResults);\n\n\t\t\tif (this.isMobile) {\n\t\t\t\tthis.scrollToIndex(selectIndex);\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis._programmaticallyExpandPanel(selectIndex);\n\t\t\t\t}, 500);\n\t\t\t} else {\n\t\t\t\tthis._programmaticallyExpandPanel(selectIndex);\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.desktopScroll.nativeElement.children[selectIndex].scrollIntoView({\n\t\t\t\t\t\tbehavior: 'smooth',\n\t\t\t\t\t\tblock: 'center',\n\t\t\t\t\t});\n\t\t\t\t}, 350);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Programmatically expand the panel at the given index & don't allow the Material Expansion Panel built-in event to trigger (open/close) the panel\n\t * @param index The index of the panel to expand\n\t */\n\tprivate _programmaticallyExpandPanel(index: number): void {\n\t\tif (index <= -1) return;\n\t\tconst panel = this.panels.toArray()[index];\n\t\tif (panel) {\n\t\t\t// Don't allow the Material Expansion Panel built-in event to trigger (open/close) the panel\n\t\t\tthis.isProgrammaticChange = true;\n\t\t\tpanel.expanded = true;\n\t\t\tthis.panelIndex.push(index);\n\t\t\tthis.openedPanel = true;\n\t\t\tsetTimeout(() => (this.isProgrammaticChange = false), 0); // Reset the flag after the change\n\t\t}\n\t}\n\n\t/**\n\t * Programmatically collapse the panel at the given index & don't allow the Material Expansion Panel built-in event to trigger (open/close) the panel\n\t * @param index The index of the panel to expand\n\t */\n\tprivate _programmaticallyCollapsePanel(index: number): void {\n\t\tif (index <= -1) return;\n\t\tconst panel = this.panels.toArray()[index];\n\t\tif (panel) {\n\t\t\t// Don't allow the Material Expansion Panel built-in event to trigger (open/close) the panel\n\t\t\tthis.isProgrammaticChange = true;\n\t\t\tpanel.expanded = false;\n\t\t\tthis.panelIndex = this.panelIndex.filter(i => i !== index);\n\t\t\tif (!this.panelIndex.length) this.openedPanel = false;\n\t\t\tsetTimeout(() => (this.isProgrammaticChange = false), 0); // Reset the flag after the change\n\t\t}\n\t}\n\n\t/**\n\t * Calculate the AI source match results statistics\n\t * @returns void\n\t */\n\tprivate _calculateAiSourceMatchResultsStats() {\n\t\tthis.aiSourceMatchResultsStats = helpers.calculateStatistics(\n\t\t\tthis._reportDataSvc.scanResultsPreviews,\n\t\t\tthis.aiSourceMatchResults?.map(amr => amr.resultDetails),\n\t\t\t{\n\t\t\t\tshowIdentical: true,\n\t\t\t\tshowMinorChanges: true,\n\t\t\t\tshowRelated: true,\n\t\t\t}\n\t\t);\n\n\t\tthis.aiSourceMatchResultsScore = this.aiSourceMatchResultsStats.aggregatedScore;\n\t\tthis.aiSourceMatchResultsIndenticalScore =\n\t\t\tthis.aiSourceMatchResultsStats.total - this.aiSourceMatchResultsStats.omittedWords <= 0\n\t\t\t\t? 0\n\t\t\t\t: this.aiSourceMatchResultsStats.identical /\n\t\t\t\t  (this.aiSourceMatchResultsStats.total - this.aiSourceMatchResultsStats.omittedWords);\n\t\tthis.aiSourceMatchResultsMinorChangesScore =\n\t\t\tthis.aiSourceMatchResultsStats.total - this.aiSourceMatchResultsStats.omittedWords <= 0\n\t\t\t\t? 0\n\t\t\t\t: this.aiSourceMatchResultsStats.minorChanges /\n\t\t\t\t  (this.aiSourceMatchResultsStats.total - this.aiSourceMatchResultsStats.omittedWords);\n\t\tthis.aiSourceMatchResultsParaphrasedScore =\n\t\t\tthis.aiSourceMatchResultsStats.total - this.aiSourceMatchResultsStats.omittedWords <= 0\n\t\t\t\t? 0\n\t\t\t\t: this.aiSourceMatchResultsStats.relatedMeaning /\n\t\t\t\t  (this.aiSourceMatchResultsStats.total - this.aiSourceMatchResultsStats.omittedWords);\n\t\tthis.aiSourceMatchResultsTotal = this.aiSourceMatchResults?.length ?? 0;\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.unsubscribe$.next();\n\t\tthis.unsubscribe$.complete();\n\t}\n}\n","<div\n\tclass=\"top-container\"\n\t[class.empty-view]=\"emptyView\"\n\t[class.locked-view]=\"lockedResults\"\n\tfxLayout=\"column\"\n\t[class.default-view]=\"!showAIPhrases\"\n\t[dir]=\"docDirection\">\n\t<ng-container *ngIf=\"showAIPhrases; else defaultView\">\n\t\t<ng-container *ngIf=\"!isLoading; else loadingState\">\n\t\t\t<div\n\t\t\t\t*ngIf=\"!isMobile && !isAiSourceMatchEnabled() && reportViewSvc?.reportViewMode?.hideAISourceMatchUpgrade\"\n\t\t\t\tclass=\"desktop-view-ai-logics-container\">\n\t\t\t\t<div class=\"desktop-view-ai-logics-title-container\">\n\t\t\t\t\t<div class=\"title-text-container\">\n\t\t\t\t\t\t<div class=\"title-text\" i18n>AI Logic</div>\n\t\t\t\t\t\t<mat-icon\n\t\t\t\t\t\t\tfontSet=\"material-icons-round\"\n\t\t\t\t\t\t\tmatTooltip=\"AI Logic uses a layered detection approach that applies multiple analysis methods in tandem, providing a highly accurate perspective on how AI may have influenced a piece of text.\"\n\t\t\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip tooltip-contanier\"\n\t\t\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t\t\ti18n-matTooltip>\n\t\t\t\t\t\t\tinfo_outline\n\t\t\t\t\t\t</mat-icon>\n\t\t\t\t\t</div>\n\t\t\t\t\t<span class=\"title-text-description\" i18n>\n\t\t\t\t\t\tShows you the “why” behind AI detection with sources you can see and verify.\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div *ngIf=\"!isMobile\" class=\"top-header-container\">\n\t\t\t\t<div\n\t\t\t\t\t*ngIf=\"!emptyView\"\n\t\t\t\t\tclass=\"header-container\"\n\t\t\t\t\t[class.header-container-mobile]=\"isMobile && !lockedResults\"\n\t\t\t\t\tfxLayout=\"column\"\n\t\t\t\t\tfxLayoutGap=\"12px\">\n\t\t\t\t\t<!-- Header -->\n\n\t\t\t\t\t<div *ngIf=\"!emptyView && !isMobile\" class=\"header\">\n\t\t\t\t\t\t<cr-button\n\t\t\t\t\t\t\t*ngIf=\"isAiSourceMatchEnabled() || !reportViewSvc?.reportViewMode?.hideAISourceMatchUpgrade\"\n\t\t\t\t\t\t\t[isLink]=\"true\"\n\t\t\t\t\t\t\t[outlined]=\"true\"\n\t\t\t\t\t\t\t[dir]=\"reportViewSvc.documentDirection\"\n\t\t\t\t\t\t\tpadding=\"4px\"\n\t\t\t\t\t\t\ticon=\"arrow_back_ios\"\n\t\t\t\t\t\t\tfontSize=\"14px\"\n\t\t\t\t\t\t\ticonSize=\"12px\"\n\t\t\t\t\t\t\tcolor=\"#0517A6\"\n\t\t\t\t\t\t\t(click)=\"$event.preventDefault(); $event.stopPropagation(); onBackClick()\">\n\t\t\t\t\t\t\t<ng-container i18n>Back</ng-container>\n\t\t\t\t\t\t</cr-button>\n\t\t\t\t\t\t<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t\t\t<rect x=\"0.5\" y=\"0.5\" width=\"23\" height=\"23\" rx=\"11.5\" fill=\"#EBF3F5\" />\n\t\t\t\t\t\t\t<rect x=\"0.5\" y=\"0.5\" width=\"23\" height=\"23\" rx=\"11.5\" stroke=\"#FBFFFF\" />\n\t\t\t\t\t\t\t<rect x=\"0.5\" y=\"0.5\" width=\"23\" height=\"23\" rx=\"11.5\" stroke=\"url(#paint0_linear_7308_1032)\" />\n\t\t\t\t\t\t\t<rect x=\"2\" y=\"2\" width=\"20\" height=\"20\" rx=\"10\" fill=\"#FBFFFF\" />\n\t\t\t\t\t\t\t<rect x=\"2\" y=\"2\" width=\"20\" height=\"20\" rx=\"10\" fill=\"url(#paint1_linear_7308_1032)\" />\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\td=\"M16.4545 10.0909L17.25 8.34091L19 7.54545L17.25 6.75L16.4545 5L15.6591 6.75L13.9091 7.54545L15.6591 8.34091L16.4545 10.0909ZM11.6818 10.4091L10.0909 6.90909L8.5 10.4091L5 12L8.5 13.5909L10.0909 17.0909L11.6818 13.5909L15.1818 12L11.6818 10.4091ZM16.4545 13.9091L15.6591 15.6591L13.9091 16.4545L15.6591 17.25L16.4545 19L17.25 17.25L19 16.4545L17.25 15.6591L16.4545 13.9091Z\"\n\t\t\t\t\t\t\t\tfill=\"white\" />\n\t\t\t\t\t\t\t<defs>\n\t\t\t\t\t\t\t\t<linearGradient\n\t\t\t\t\t\t\t\t\tid=\"paint0_linear_7308_1032\"\n\t\t\t\t\t\t\t\t\tx1=\"-1.01822e-07\"\n\t\t\t\t\t\t\t\t\ty1=\"13.811\"\n\t\t\t\t\t\t\t\t\tx2=\"22.4306\"\n\t\t\t\t\t\t\t\t\ty2=\"19.7441\"\n\t\t\t\t\t\t\t\t\tgradientUnits=\"userSpaceOnUse\">\n\t\t\t\t\t\t\t\t\t<stop stop-color=\"#BCA6FF\" />\n\t\t\t\t\t\t\t\t\t<stop offset=\"1\" stop-color=\"#9345F9\" />\n\t\t\t\t\t\t\t\t</linearGradient>\n\t\t\t\t\t\t\t\t<linearGradient\n\t\t\t\t\t\t\t\t\tid=\"paint1_linear_7308_1032\"\n\t\t\t\t\t\t\t\t\tx1=\"2\"\n\t\t\t\t\t\t\t\t\ty1=\"13.5092\"\n\t\t\t\t\t\t\t\t\tx2=\"20.6922\"\n\t\t\t\t\t\t\t\t\ty2=\"18.4534\"\n\t\t\t\t\t\t\t\t\tgradientUnits=\"userSpaceOnUse\">\n\t\t\t\t\t\t\t\t\t<stop stop-color=\"#BCA6FF\" />\n\t\t\t\t\t\t\t\t\t<stop offset=\"1\" stop-color=\"#9345F9\" />\n\t\t\t\t\t\t\t\t</linearGradient>\n\t\t\t\t\t\t\t</defs>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t<span class=\"title\" i18n>AI Phrases</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<!-- Description and Grade-Bar -->\n\t\t\t\t\t<div *ngIf=\"!emptyView && !lockedResults && !isMobile\" fxLayout=\"column\" fxLayoutGap=\"16px\">\n\t\t\t\t\t\t<div class=\"grade-bar-top-container\" fxLayout=\"column\" fxLayoutGap=\"8px\">\n\t\t\t\t\t\t\t<div class=\"ai-phrases-bar-title-container\">\n\t\t\t\t\t\t\t\t<span class=\"title\" i18n>Frequency of phrases in AI vs human text.</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclass=\"grade-bar-container\"\n\t\t\t\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t\t\t\tcrAIScoreTooltipContent\n\t\t\t\t\t\t\t\t[isTooltipBar]=\"true\"\n\t\t\t\t\t\t\t\t[tooltipText]=\"barTooltipText\">\n\t\t\t\t\t\t\t\t<span class=\"min-proportion\">{{ minProportion.toLocaleString() }}x</span>\n\t\t\t\t\t\t\t\t<div class=\"grade-bar\" fxLayout=\"row\">\n\t\t\t\t\t\t\t\t\t<div class=\"min-result\" [style.width]=\"minGradeBar + '%'\"></div>\n\t\t\t\t\t\t\t\t\t<div class=\"mid-result\" [style.width]=\"midGradeBar + '%'\"></div>\n\t\t\t\t\t\t\t\t\t<div class=\"max-result\" [style.width]=\"maxGradeBar + '%'\"></div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<ng-container *ngIf=\"hasInfinityResult; else maxResult\">\n\t\t\t\t\t\t\t\t\t<span class=\"max-proportion\">10,000x</span>\n\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t<ng-template #maxResult>\n\t\t\t\t\t\t\t\t\t<span class=\"max-proportion\">{{ maxProportion.toLocaleString() }}x</span>\n\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\t*ngIf=\"!emptyView && !lockedResults && !isMobile\"\n\t\t\t\t\tclass=\"result-header\"\n\t\t\t\t\tfxLayout=\"row\"\n\t\t\t\t\tfxLayoutAlign=\"start center\"\n\t\t\t\t\tfxLayoutGap=\"16px\">\n\t\t\t\t\t<div class=\"ratio-contanier\" fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"2px\">\n\t\t\t\t\t\t<mat-icon\n\t\t\t\t\t\t\tclass=\"info-icon\"\n\t\t\t\t\t\t\tfontSet=\"material-icons-outlined\"\n\t\t\t\t\t\t\taria-hidden=\"false\"\n\t\t\t\t\t\t\t[tabIndex]=\"0\"\n\t\t\t\t\t\t\t[matTooltip]=\"proportionTooltipText\"\n\t\t\t\t\t\t\t[matTooltipPosition]=\"'after'\"\n\t\t\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip tooltip-contanier\">\n\t\t\t\t\t\t\tinfo\n\t\t\t\t\t\t</mat-icon>\n\t\t\t\t\t\t<span i18n>Ratio</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<span class=\"phrase\" i18n>Phrase</span>\n\n\t\t\t\t\t<span class=\"total-phrases\" i18n>Phrases ({{ explainItemResults?.length ?? 0 }})</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\tclass=\"container-explain-results\"\n\t\t\t\t[class.explain-results-mobile-container]=\"isMobile\"\n\t\t\t\t[class.explain-results-mobile-container-height]=\"isMobile && openedPanel\"\n\t\t\t\t[class.explain-results-mobile-container-padding]=\"isMobile && lockedResults\"\n\t\t\t\tfxLayout=\"column\">\n\t\t\t\t<!-- Empty and Locked view -->\n\t\t\t\t<ng-container *ngIf=\"emptyView || lockedResults; else showResults\">\n\t\t\t\t\t<ng-container *ngIf=\"aiInsightAlert\">\n\t\t\t\t\t\t<div class=\"lang-not-supported-container\" fxLayoutAlign=\"center center\">\n\t\t\t\t\t\t\t<div class=\"language-icon-container\">\n\t\t\t\t\t\t\t\t<mat-icon fontSet=\"material-icons-round\">language_outline</mat-icon>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"insight-text\" fxLayout=\"column\">\n\t\t\t\t\t\t\t\t<span class=\"title\" i18n>{{ alertTitle }}</span>\n\t\t\t\t\t\t\t\t<span class=\"description\" i18n>\n\t\t\t\t\t\t\t\t\t{{ alertMessage }}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</ng-container>\n\t\t\t\t\t<ng-container *ngIf=\"!aiInsightAlert\">\n\t\t\t\t\t\t<div class=\"empty-and-locked-contaienr\" fxLayout=\"column\" fxLayoutAlign=\"center center\">\n\t\t\t\t\t\t\t<!-- Empty view -->\n\t\t\t\t\t\t\t<ng-container *ngIf=\"emptyView; else lockedResults\">\n\t\t\t\t\t\t\t\t<div class=\"empty-contaienr\" fxLayout=\"column\" fxLayoutAlign=\"center center\" fxLayoutGap=\"4px\">\n\t\t\t\t\t\t\t\t\t<ng-container *ngIf=\"aiInsightAlert; else emptyState\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"title\" i18n>{{ alertTitle }}</span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"description\" i18n>\n\t\t\t\t\t\t\t\t\t\t\t{{ alertMessage }}\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t\t<ng-template #emptyState>\n\t\t\t\t\t\t\t\t\t\t<span class=\"title\" i18n>No AI Insights Were Found</span>\n\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"aiPercentageResult > 0\" class=\"description\" i18n>\n\t\t\t\t\t\t\t\t\t\t\tThere is no specific phrase that indicates AI. However, other criteria suggest that this text was\n\t\t\t\t\t\t\t\t\t\t\tgenerated by AI.\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<!-- Locked view -->\n\t\t\t\t\t\t\t<ng-template #lockedResults>\n\t\t\t\t\t\t\t\t<div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"8px\">\n\t\t\t\t\t\t\t\t\t<mat-icon class=\"lock-icon\">lock</mat-icon>\n\t\t\t\t\t\t\t\t\t<span i18n>Locked results</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</ng-container>\n\t\t\t\t</ng-container>\n\t\t\t\t<!-- Show results -->\n\t\t\t\t<ng-template #showResults>\n\t\t\t\t\t<!-- Desktop view -->\n\t\t\t\t\t<ng-container *ngIf=\"!isMobile; else aiPhrasesMobileViewRef\">\n\t\t\t\t\t\t<div #desktopScroll class=\"desktop-scroll\" fxLayout=\"column\">\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclass=\"explain-results\"\n\t\t\t\t\t\t\t\t[id]=\"'result-' + i\"\n\t\t\t\t\t\t\t\tfxLayout=\"column\"\n\t\t\t\t\t\t\t\t*ngFor=\"let result of explainItemResults; let i = index\">\n\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"templateResult; context: { item: result, index: i }\"></ng-container>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</ng-container>\n\t\t\t\t\t<!-- Mobile view -->\n\t\t\t\t\t<ng-template #aiPhrasesMobileViewRef>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t#aiPhrasesMobileViewScrollContainer\n\t\t\t\t\t\t\tclass=\"mobile-scroll\"\n\t\t\t\t\t\t\tfxLayout=\"row\"\n\t\t\t\t\t\t\t(scroll)=\"onAIPhrasesScrollMobile()\">\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclass=\"explain-results\"\n\t\t\t\t\t\t\t\t[style.margin-inline-end]=\"i == explainItemResults.length - 1 ? '0px' : '16px'\"\n\t\t\t\t\t\t\t\tfxLayout=\"row\"\n\t\t\t\t\t\t\t\t*ngFor=\"let result of explainItemResults; let i = index\"\n\t\t\t\t\t\t\t\t[attr.data-index]=\"i\">\n\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"templateResult; context: { item: result, index: i }\"></ng-container>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</ng-template>\n\t\t\t\t</ng-template>\n\t\t\t</div>\n\t\t\t<!-- Mobile navigate buttons -->\n\t\t\t<div\n\t\t\t\t*ngIf=\"isMobile && explainItemResults.length > 1\"\n\t\t\t\tclass=\"navigate-mobie-button-contaienr\"\n\t\t\t\tfxLayout=\"row\"\n\t\t\t\tfxLayoutAlign=\"center center\"\n\t\t\t\tfxLayoutGap=\"8px\">\n\t\t\t\t<mat-chip-option\n\t\t\t\t\t*ngIf=\"explainItemResults.length > 5 && currentViewedIndex > 2\"\n\t\t\t\t\trole=\"button\"\n\t\t\t\t\t(click)=\"scrollToIndex(0)\"\n\t\t\t\t\tclass=\"mat-chip-navigate\">\n\t\t\t\t\t{{\n\t\t\t\t\t\tcurrentViewedIndex < explainItemResults.length - 3 ? currentViewedIndex - 2 : explainItemResults.length - 5\n\t\t\t\t\t}}\n\t\t\t\t</mat-chip-option>\n\n\t\t\t\t<button\n\t\t\t\t\tclass=\"navigate-mobie-button\"\n\t\t\t\t\t[class.navigate-mobie-button-select]=\"navigateMobileButton == enumNavigateMobileButton.FirstButton\"\n\t\t\t\t\t(click)=\"onAIPhrasesViewDotNavigate(enumNavigateMobileButton.FirstButton)\"></button>\n\t\t\t\t<button\n\t\t\t\t\tclass=\"navigate-mobie-button\"\n\t\t\t\t\t[class.navigate-mobie-button-select]=\"navigateMobileButton == enumNavigateMobileButton.SecondButton\"\n\t\t\t\t\t(click)=\"onAIPhrasesViewDotNavigate(enumNavigateMobileButton.SecondButton)\"></button>\n\t\t\t\t<button\n\t\t\t\t\tclass=\"navigate-mobie-button\"\n\t\t\t\t\t[class.navigate-mobie-button-select]=\"navigateMobileButton == enumNavigateMobileButton.ThirdButton\"\n\t\t\t\t\t(click)=\"onAIPhrasesViewDotNavigate(enumNavigateMobileButton.ThirdButton)\"></button>\n\t\t\t\t<button\n\t\t\t\t\tclass=\"navigate-mobie-button\"\n\t\t\t\t\t[class.navigate-mobie-button-select]=\"navigateMobileButton == enumNavigateMobileButton.FourthButton\"\n\t\t\t\t\t(click)=\"onAIPhrasesViewDotNavigate(enumNavigateMobileButton.FourthButton)\"></button>\n\t\t\t\t<button\n\t\t\t\t\tclass=\"navigate-mobie-button\"\n\t\t\t\t\t[class.navigate-mobie-button-select]=\"navigateMobileButton == enumNavigateMobileButton.FifthButton\"\n\t\t\t\t\t(click)=\"onAIPhrasesViewDotNavigate(enumNavigateMobileButton.FifthButton)\"></button>\n\n\t\t\t\t<mat-chip-option\n\t\t\t\t\t*ngIf=\"explainItemResults.length > 5 && currentViewedIndex < explainItemResults.length - 3\"\n\t\t\t\t\trole=\"button\"\n\t\t\t\t\t(click)=\"scrollToIndex(explainItemResults.length - 1)\"\n\t\t\t\t\tclass=\"mat-chip-navigate\">\n\t\t\t\t\t{{\n\t\t\t\t\t\tcurrentViewedIndex > 2 ? explainItemResults.length - currentViewedIndex - 3 : explainItemResults.length - 5\n\t\t\t\t\t}}\n\t\t\t\t</mat-chip-option>\n\t\t\t</div>\n\t\t</ng-container>\n\t\t<ng-template #loadingState>\n\t\t\t<div class=\"loading-container\" fxLayout=\"column\">\n\t\t\t\t<ng-container *ngIf=\"!isMobile; else mobileLoading\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"phrases-title-loading-container\"\n\t\t\t\t\t\tstyle=\"\n\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\tpadding: 16px 14px 16px 14px;\n\t\t\t\t\t\t\tflex-direction: column;\n\t\t\t\t\t\t\talign-items: flex-start;\n\t\t\t\t\t\t\tgap: 12px;\n\t\t\t\t\t\t\talign-self: stretch;\n\t\t\t\t\t\t\">\n\t\t\t\t\t\t<div style=\"display: flex; align-items: center; align-self: stretch; flex-wrap: wrap\">\n\t\t\t\t\t\t\t<div class=\"part\" style=\"width: 50px\">\n\t\t\t\t\t\t\t\t<ngx-skeleton-loader class=\"skeleton circle\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t\t\t<ngx-skeleton-loader\n\t\t\t\t\t\t\t\t\tclass=\"skeleton search-input-loader\"\n\t\t\t\t\t\t\t\t\t[appearance]=\"'line'\"\n\t\t\t\t\t\t\t\t\tstyle=\"flex-grow: 1\"></ngx-skeleton-loader>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"part\" style=\"width: 90px\">\n\t\t\t\t\t\t\t\t<ngx-skeleton-loader class=\"skeleton circle\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t\t\t<ngx-skeleton-loader\n\t\t\t\t\t\t\t\t\tclass=\"skeleton search-input-loader\"\n\t\t\t\t\t\t\t\t\t[appearance]=\"'line'\"\n\t\t\t\t\t\t\t\t\tstyle=\"flex-grow: 1\"></ngx-skeleton-loader>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div class=\"part\" style=\"width: 90px\">\n\t\t\t\t\t\t\t\t<ngx-skeleton-loader class=\"skeleton circle\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t\t\t<ngx-skeleton-loader\n\t\t\t\t\t\t\t\t\tclass=\"skeleton search-input-loader\"\n\t\t\t\t\t\t\t\t\t[appearance]=\"'line'\"\n\t\t\t\t\t\t\t\t\tstyle=\"flex-grow: 1\"></ngx-skeleton-loader>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div style=\"display: flex; flex-direction: column; align-items: flex-start; gap: 8px; align-self: stretch\">\n\t\t\t\t\t\t\t<div style=\"display: flex; justify-content: space-between; align-items: flex-end; align-self: stretch\">\n\t\t\t\t\t\t\t\t<ngx-skeleton-loader\n\t\t\t\t\t\t\t\t\tclass=\"skeleton search-input-loader\"\n\t\t\t\t\t\t\t\t\t[appearance]=\"'line'\"\n\t\t\t\t\t\t\t\t\tstyle=\"width: 60%\"></ngx-skeleton-loader>\n\t\t\t\t\t\t\t\t<ngx-skeleton-loader\n\t\t\t\t\t\t\t\t\tclass=\"skeleton search-input-loader\"\n\t\t\t\t\t\t\t\t\t[appearance]=\"'line'\"\n\t\t\t\t\t\t\t\t\tstyle=\"width: 15%\"></ngx-skeleton-loader>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div style=\"display: flex; align-items: center; gap: 8px; align-self: stretch\">\n\t\t\t\t\t\t\t\t<ngx-skeleton-loader\n\t\t\t\t\t\t\t\t\tclass=\"skeleton search-input-loader\"\n\t\t\t\t\t\t\t\t\t[appearance]=\"'line'\"\n\t\t\t\t\t\t\t\t\tstyle=\"width: 10%\"></ngx-skeleton-loader>\n\t\t\t\t\t\t\t\t<ngx-skeleton-loader\n\t\t\t\t\t\t\t\t\tclass=\"search-input-loader bar\"\n\t\t\t\t\t\t\t\t\t[appearance]=\"'line'\"\n\t\t\t\t\t\t\t\t\tstyle=\"width: 80%\"></ngx-skeleton-loader>\n\t\t\t\t\t\t\t\t<ngx-skeleton-loader\n\t\t\t\t\t\t\t\t\tclass=\"skeleton search-input-loader\"\n\t\t\t\t\t\t\t\t\t[appearance]=\"'line'\"\n\t\t\t\t\t\t\t\t\tstyle=\"width: 10%\"></ngx-skeleton-loader>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div\n\t\t\t\t\t\tstyle=\"\n\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\tjustify-content: space-between;\n\t\t\t\t\t\t\talign-items: center;\n\t\t\t\t\t\t\twidth: 100%;\n\t\t\t\t\t\t\tborder-radius: 10px 10px 0px 0px;\n\t\t\t\t\t\t\tbackground: var(--Colors-Main-Medium-light, #ebf3f5);\n\t\t\t\t\t\t\tpadding: 8px 16px 8px 16px;\n\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\">\n\t\t\t\t\t\t<div style=\"display: flex; width: 60px; height: 28px; padding: 4px 2px; align-items: center; gap: 4px\">\n\t\t\t\t\t\t\t<ngx-skeleton-loader class=\"skeleton circle\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t\t<ngx-skeleton-loader\n\t\t\t\t\t\t\t\tclass=\"skeleton search-input-loader\"\n\t\t\t\t\t\t\t\t[appearance]=\"'line'\"\n\t\t\t\t\t\t\t\tstyle=\"flex-grow: 1\"></ngx-skeleton-loader>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<ngx-skeleton-loader\n\t\t\t\t\t\t\tclass=\"skeleton search-input-loader\"\n\t\t\t\t\t\t\t[appearance]=\"'line'\"\n\t\t\t\t\t\t\tstyle=\"width: 20%\"></ngx-skeleton-loader>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"loading-result-top-container\" fxLayout=\"column\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"loading-result-container\"\n\t\t\t\t\t\t\tfxLayout=\"row\"\n\t\t\t\t\t\t\tfxLayoutAlign=\"start center\"\n\t\t\t\t\t\t\tfxLayoutGap=\"16px\"\n\t\t\t\t\t\t\tstyle=\"border-radius: 10px 10px 0px 0px\">\n\t\t\t\t\t\t\t<ngx-skeleton-loader class=\"proportion-loading skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t\t<ngx-skeleton-loader class=\"result-loading skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"loading-contant-result-container\"\n\t\t\t\t\t\t\tfxLayout=\"column\"\n\t\t\t\t\t\t\tfxLayoutGap=\"2px\"\n\t\t\t\t\t\t\tstyle=\"margin-bottom: 8px\">\n\t\t\t\t\t\t\t<div class=\"description-loading\" fxLayout=\"column\">\n\t\t\t\t\t\t\t\t<ngx-skeleton-loader\n\t\t\t\t\t\t\t\t\tclass=\"loading skeleton skeleton-small-height\"\n\t\t\t\t\t\t\t\t\t[appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclass=\"ai-count-loading-container\"\n\t\t\t\t\t\t\t\tfxLayout=\"row\"\n\t\t\t\t\t\t\t\tfxLayoutAlign=\"space-between center\"\n\t\t\t\t\t\t\t\tfxLayoutGap=\"4px\"\n\t\t\t\t\t\t\t\tstyle=\"margin-bottom: 8px\">\n\t\t\t\t\t\t\t\t<ngx-skeleton-loader\n\t\t\t\t\t\t\t\t\tclass=\"ai-count-loading skeleton skeleton-small-height\"\n\t\t\t\t\t\t\t\t\t[appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t\t\t<ngx-skeleton-loader\n\t\t\t\t\t\t\t\t\tclass=\"result-loading skeleton skeleton-small-height\"\n\t\t\t\t\t\t\t\t\t[appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclass=\"human-count-loading-container\"\n\t\t\t\t\t\t\t\tfxLayout=\"row\"\n\t\t\t\t\t\t\t\tfxLayoutAlign=\"space-between center\"\n\t\t\t\t\t\t\t\tfxLayoutGap=\"4px\">\n\t\t\t\t\t\t\t\t<ngx-skeleton-loader\n\t\t\t\t\t\t\t\t\tclass=\"human-count-loading skeleton skeleton-small-height\"\n\t\t\t\t\t\t\t\t\t[appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t\t\t<ngx-skeleton-loader\n\t\t\t\t\t\t\t\t\tclass=\"result-loading skeleton skeleton-small-height\"\n\t\t\t\t\t\t\t\t\t[appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"loading-result-container\"\n\t\t\t\t\t\t\tfxLayout=\"row\"\n\t\t\t\t\t\t\tfxLayoutAlign=\"start center\"\n\t\t\t\t\t\t\tfxLayoutGap=\"16px\"\n\t\t\t\t\t\t\tstyle=\"margin-bottom: 8px\">\n\t\t\t\t\t\t\t<ngx-skeleton-loader class=\"proportion-loading skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t\t<ngx-skeleton-loader class=\"result-loading skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"loading-result-container\"\n\t\t\t\t\t\t\tfxLayout=\"row\"\n\t\t\t\t\t\t\tfxLayoutAlign=\"start center\"\n\t\t\t\t\t\t\tfxLayoutGap=\"16px\"\n\t\t\t\t\t\t\tstyle=\"margin-bottom: 8px\">\n\t\t\t\t\t\t\t<ngx-skeleton-loader class=\"proportion-loading skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t\t<ngx-skeleton-loader class=\"result-loading skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"loading-result-container\"\n\t\t\t\t\t\t\tfxLayout=\"row\"\n\t\t\t\t\t\t\tfxLayoutAlign=\"start center\"\n\t\t\t\t\t\t\tfxLayoutGap=\"16px\"\n\t\t\t\t\t\t\tstyle=\"margin-bottom: 8px\">\n\t\t\t\t\t\t\t<ngx-skeleton-loader class=\"proportion-loading skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t\t<ngx-skeleton-loader class=\"result-loading skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"loading-result-container\"\n\t\t\t\t\t\t\tfxLayout=\"row\"\n\t\t\t\t\t\t\tfxLayoutAlign=\"start center\"\n\t\t\t\t\t\t\tfxLayoutGap=\"16px\"\n\t\t\t\t\t\t\tstyle=\"margin-bottom: 8px\">\n\t\t\t\t\t\t\t<ngx-skeleton-loader class=\"proportion-loading skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t\t<ngx-skeleton-loader class=\"result-loading skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"loading-result-container\"\n\t\t\t\t\t\t\tfxLayout=\"row\"\n\t\t\t\t\t\t\tfxLayoutAlign=\"start center\"\n\t\t\t\t\t\t\tfxLayoutGap=\"16px\"\n\t\t\t\t\t\t\tstyle=\"margin-bottom: 8px\">\n\t\t\t\t\t\t\t<ngx-skeleton-loader class=\"proportion-loading skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t\t<ngx-skeleton-loader class=\"result-loading skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"loading-result-container\"\n\t\t\t\t\t\t\tfxLayout=\"row\"\n\t\t\t\t\t\t\tfxLayoutAlign=\"start center\"\n\t\t\t\t\t\t\tfxLayoutGap=\"16px\"\n\t\t\t\t\t\t\tstyle=\"margin-bottom: 8px\">\n\t\t\t\t\t\t\t<ngx-skeleton-loader class=\"proportion-loading skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t\t<ngx-skeleton-loader class=\"result-loading skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"loading-result-container\"\n\t\t\t\t\t\t\tfxLayout=\"row\"\n\t\t\t\t\t\t\tfxLayoutAlign=\"start center\"\n\t\t\t\t\t\t\tfxLayoutGap=\"16px\"\n\t\t\t\t\t\t\tstyle=\"margin-bottom: 8px\">\n\t\t\t\t\t\t\t<ngx-skeleton-loader class=\"proportion-loading skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t\t<ngx-skeleton-loader class=\"result-loading skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"loading-result-container\"\n\t\t\t\t\t\t\tfxLayout=\"row\"\n\t\t\t\t\t\t\tfxLayoutAlign=\"start center\"\n\t\t\t\t\t\t\tfxLayoutGap=\"16px\"\n\t\t\t\t\t\t\tstyle=\"margin-bottom: 8px\">\n\t\t\t\t\t\t\t<ngx-skeleton-loader class=\"proportion-loading skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t\t<ngx-skeleton-loader class=\"result-loading skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</ng-container>\n\t\t\t\t<ng-template #mobileLoading>\n\t\t\t\t\t<div class=\"mobile-view-scroll-container\">\n\t\t\t\t\t\t<div class=\"mobile-view-default-entries-container\">\n\t\t\t\t\t\t\t<div class=\"mobile-loading-container\" fxLayout=\"column\" fxLayoutGap=\"16px\">\n\t\t\t\t\t\t\t\t<div class=\"result-loading-container\" fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"16px\">\n\t\t\t\t\t\t\t\t\t<ngx-skeleton-loader class=\"proportion-loading skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t\t\t\t<ngx-skeleton-loader class=\"result-loading skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"mobile-loading-container\" fxLayout=\"column\" fxLayoutGap=\"16px\">\n\t\t\t\t\t\t\t\t<div class=\"result-loading-container\" fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"16px\">\n\t\t\t\t\t\t\t\t\t<ngx-skeleton-loader class=\"proportion-loading skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t\t\t\t<ngx-skeleton-loader class=\"result-loading skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"mobile-loading-container\" fxLayout=\"column\" fxLayoutGap=\"16px\">\n\t\t\t\t\t\t\t\t<div class=\"result-loading-container\" fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"16px\">\n\t\t\t\t\t\t\t\t\t<ngx-skeleton-loader class=\"proportion-loading skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t\t\t\t<ngx-skeleton-loader class=\"result-loading skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"mobile-loading-container\" fxLayout=\"column\" fxLayoutGap=\"16px\">\n\t\t\t\t\t\t\t\t<div class=\"result-loading-container\" fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"16px\">\n\t\t\t\t\t\t\t\t\t<ngx-skeleton-loader class=\"proportion-loading skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t\t\t\t<ngx-skeleton-loader class=\"result-loading skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</ng-template>\n\t\t\t</div>\n\t\t</ng-template>\n\t</ng-container>\n\t<ng-template #defaultView>\n\t\t<ng-container *ngIf=\"!isMobile; else deafultMobileView\">\n\t\t\t<div class=\"divider\"></div>\n\t\t\t<div class=\"desktop-view-ai-logics-container with-scroll\">\n\t\t\t\t<div class=\"desktop-view-ai-logics-title-container\">\n\t\t\t\t\t<div class=\"title-text-container\">\n\t\t\t\t\t\t<div class=\"title-text\" i18n>AI Logic</div>\n\t\t\t\t\t\t<mat-icon\n\t\t\t\t\t\t\t*ngIf=\"!hidePlagarismTap\"\n\t\t\t\t\t\t\tfontSet=\"material-icons-round\"\n\t\t\t\t\t\t\tmatTooltip=\"AI Logic uses a layered detection approach that applies multiple analysis methods in tandem, providing a highly accurate perspective on how AI may have influenced a piece of text.\"\n\t\t\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip tooltip-contanier\"\n\t\t\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t\t\ti18n-matTooltip>\n\t\t\t\t\t\t\tinfo_outline\n\t\t\t\t\t\t</mat-icon>\n\t\t\t\t\t</div>\n\t\t\t\t\t<span class=\"title-text-description\" i18n>\n\t\t\t\t\t\tShows you the “why” behind AI detection with sources you can see and verify.\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\n\t\t\t\t<ng-container *ngIf=\"!hidePlagarismTap || isLoading\">\n\t\t\t\t\t<cr-ai-source-match-entry\n\t\t\t\t\t\t[isLoading]=\"isLoading\"\n\t\t\t\t\t\t[aiSourceMatchResultsStats]=\"aiSourceMatchResultsStats\"\n\t\t\t\t\t\t[aiSourceMatchResultsIndenticalScore]=\"aiSourceMatchResultsIndenticalScore\"\n\t\t\t\t\t\t[aiSourceMatchResultsMinorChangesScore]=\"aiSourceMatchResultsMinorChangesScore\"\n\t\t\t\t\t\t[aiSourceMatchResultsParaphrasedScore]=\"aiSourceMatchResultsParaphrasedScore\"\n\t\t\t\t\t\t[aiSourceMatchResultsScore]=\"aiSourceMatchResultsScore\"\n\t\t\t\t\t\t[aiSourceMatchResultsTotal]=\"aiSourceMatchResultsTotal\"\n\t\t\t\t\t\t(onNavigateToResults)=\"onNavigateToResultsClick()\"></cr-ai-source-match-entry>\n\t\t\t\t</ng-container>\n\n\t\t\t\t<ng-container\n\t\t\t\t\t*ngIf=\"hidePlagarismTap && !isLoading && !reportViewSvc?.reportViewMode?.hideAISourceMatchUpgrade\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"customAISourceMatchUpgradeTemplate ?? null\"></ng-container>\n\t\t\t\t</ng-container>\n\n\t\t\t\t<cr-ai-phrases-entry\n\t\t\t\t\t[isLoading]=\"isLoading\"\n\t\t\t\t\t[aiPercentageResult]=\"aiPercentageResult\"\n\t\t\t\t\t[maxProportion]=\"maxProportion\"\n\t\t\t\t\t[minProportion]=\"minProportion\"\n\t\t\t\t\t[barTooltipText]=\"barTooltipText\"\n\t\t\t\t\t[maxGradeBar]=\"maxGradeBar\"\n\t\t\t\t\t[midGradeBar]=\"midGradeBar\"\n\t\t\t\t\t[totalPhrases]=\"explainItemResults?.length ?? 0\"\n\t\t\t\t\t[hasInfinityResult]=\"hasInfinityResult\"\n\t\t\t\t\t[minGradeBar]=\"minGradeBar\"\n\t\t\t\t\t[alertTitle]=\"alertTitle\"\n\t\t\t\t\t[alertMessage]=\"alertMessage\"\n\t\t\t\t\t[aiInsightAlert]=\"aiInsightAlert\"\n\t\t\t\t\t(onNavigateToPhrases)=\"onNavigateToPhrasesClick()\"></cr-ai-phrases-entry>\n\t\t\t</div>\n\t\t</ng-container>\n\n\t\t<ng-template #deafultMobileView>\n\t\t\t<div class=\"mobile-view-ai-logics-container\">\n\t\t\t\t<div class=\"title-container\">\n\t\t\t\t\t<span i18n>AI Logic</span>\n\t\t\t\t</div>\n\n\t\t\t\t<mat-icon\n\t\t\t\t\tfontSet=\"material-icons-round\"\n\t\t\t\t\tmatTooltip=\"Wonder how we spot AI content? Get a glimpse into our validation process.\"\n\t\t\t\t\t[matTooltipPosition]=\"'after'\"\n\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip tooltip-contanier\"\n\t\t\t\t\ti18n-matTooltip>\n\t\t\t\t\tinfo_outline\n\t\t\t\t</mat-icon>\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tclass=\"mobile-view-scroll-container\"\n\t\t\t\t#aiDefaultMobileViewScrollContainer\n\t\t\t\t(scroll)=\"onAIDefaultViewScrollMobile()\">\n\t\t\t\t<div class=\"mobile-view-default-entries-container\">\n\t\t\t\t\t<ng-container *ngIf=\"!hidePlagarismTap || isLoading\">\n\t\t\t\t\t\t<cr-ai-source-match-entry\n\t\t\t\t\t\t\t[isLoading]=\"isLoading\"\n\t\t\t\t\t\t\t[aiSourceMatchResultsStats]=\"aiSourceMatchResultsStats\"\n\t\t\t\t\t\t\t[aiSourceMatchResultsIndenticalScore]=\"aiSourceMatchResultsIndenticalScore\"\n\t\t\t\t\t\t\t[aiSourceMatchResultsMinorChangesScore]=\"aiSourceMatchResultsMinorChangesScore\"\n\t\t\t\t\t\t\t[aiSourceMatchResultsParaphrasedScore]=\"aiSourceMatchResultsParaphrasedScore\"\n\t\t\t\t\t\t\t[aiSourceMatchResultsScore]=\"aiSourceMatchResultsScore\"\n\t\t\t\t\t\t\t[aiSourceMatchResultsTotal]=\"aiSourceMatchResultsTotal\"\n\t\t\t\t\t\t\t(onNavigateToResults)=\"onNavigateToResultsClick()\"></cr-ai-source-match-entry>\n\t\t\t\t\t</ng-container>\n\n\t\t\t\t\t<ng-container\n\t\t\t\t\t\t*ngIf=\"hidePlagarismTap && !isLoading && !reportViewSvc?.reportViewMode?.hideAISourceMatchUpgrade\">\n\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"customAISourceMatchUpgradeTemplate ?? null\"></ng-container>\n\t\t\t\t\t</ng-container>\n\n\t\t\t\t\t<cr-ai-phrases-entry\n\t\t\t\t\t\t[isLoading]=\"isLoading\"\n\t\t\t\t\t\t[aiPercentageResult]=\"aiPercentageResult\"\n\t\t\t\t\t\t[maxProportion]=\"maxProportion\"\n\t\t\t\t\t\t[minProportion]=\"minProportion\"\n\t\t\t\t\t\t[barTooltipText]=\"barTooltipText\"\n\t\t\t\t\t\t[maxGradeBar]=\"maxGradeBar\"\n\t\t\t\t\t\t[midGradeBar]=\"midGradeBar\"\n\t\t\t\t\t\t[totalPhrases]=\"explainItemResults?.length ?? 0\"\n\t\t\t\t\t\t[hasInfinityResult]=\"hasInfinityResult\"\n\t\t\t\t\t\t[minGradeBar]=\"minGradeBar\"\n\t\t\t\t\t\t[alertTitle]=\"alertTitle\"\n\t\t\t\t\t\t[alertMessage]=\"alertMessage\"\n\t\t\t\t\t\t[aiInsightAlert]=\"aiInsightAlert\"\n\t\t\t\t\t\t(onNavigateToPhrases)=\"onNavigateToPhrasesClick()\"></cr-ai-phrases-entry>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div *ngIf=\"customAISourceMatchUpgradeTemplate\" class=\"dots-container\">\n\t\t\t\t<button\n\t\t\t\t\tclass=\"navigate-mobie-button\"\n\t\t\t\t\t[class.navigate-mobie-button-select]=\"navigateMobileButton === enumNavigateMobileButton.FirstButton\"\n\t\t\t\t\t(click)=\"onAIDefaultViewDotNavigate(enumNavigateMobileButton.FirstButton)\"></button>\n\n\t\t\t\t<button\n\t\t\t\t\tclass=\"navigate-mobie-button\"\n\t\t\t\t\t[class.navigate-mobie-button-select]=\"navigateMobileButton === enumNavigateMobileButton.SecondButton\"\n\t\t\t\t\t(click)=\"onAIDefaultViewDotNavigate(enumNavigateMobileButton.SecondButton)\"></button>\n\t\t\t</div>\n\t\t</ng-template>\n\t</ng-template>\n</div>\n\n<!-- AI result template -->\n<ng-template #templateResult let-item=\"item\" let-index=\"index\">\n\t<mat-accordion #panels>\n\t\t<mat-expansion-panel #panel (opened)=\"addToPanelIndex(index)\" (closed)=\"removeFromPanelIndex(index)\" hideToggle>\n\t\t\t<mat-expansion-panel-header>\n\t\t\t\t<mat-panel-title>\n\t\t\t\t\t<div class=\"panel-header-container\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\" fxLayoutGap=\"16px\">\n\t\t\t\t\t\t<div class=\"proportion-content-container\" fxLayout=\"row\" fxLayoutAlign=\"start start\" fxLayoutGap=\"16px\">\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclass=\"proportion {{ getProportionClassType(item.proportionType) }}\"\n\t\t\t\t\t\t\t\tfxLayout=\"column\"\n\t\t\t\t\t\t\t\tfxLayoutAlign=\"center center\">\n\t\t\t\t\t\t\t\t<ng-container *ngIf=\"item.isInfinity; else showProportionValue\">\n\t\t\t\t\t\t\t\t\t<span class=\"content\">10,000x</span>\n\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t<ng-template #showProportionValue>\n\t\t\t\t\t\t\t\t\t<span>{{ item.proportion.toLocaleString() }}x</span>\n\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclass=\"content\"\n\t\t\t\t\t\t\t\t[class.show-all-text]=\"isMobile && isPanelOpen(index)\"\n\t\t\t\t\t\t\t\tcrAIScoreTooltipContent\n\t\t\t\t\t\t\t\t[tooltipText]=\"isMobile ? '' : item.content\"\n\t\t\t\t\t\t\t\t[isResultTitle]=\"true\">\n\t\t\t\t\t\t\t\t{{ item.content }}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<mat-icon class=\"keyboard-arrow-icon\">\n\t\t\t\t\t\t\t<ng-container *ngIf=\"isPanelOpen(index); else closePanel\">keyboard_arrow_up</ng-container>\n\t\t\t\t\t\t\t<ng-template #closePanel>keyboard_arrow_down</ng-template>\n\t\t\t\t\t\t</mat-icon>\n\t\t\t\t\t</div>\n\t\t\t\t</mat-panel-title>\n\t\t\t</mat-expansion-panel-header>\n\t\t\t<div class=\"result-top-container\" fxLayout=\"column\" fxLayoutGap=\"8px\">\n\t\t\t\t<div class=\"result-container\" fxLayout=\"column\" fxLayoutGap=\"2px\">\n\t\t\t\t\t<div class=\"result-header\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n\t\t\t\t\t\t<span class=\"title\" i18n>How frequently the phrase was found in our dataset :</span>\n\t\t\t\t\t\t<mat-icon\n\t\t\t\t\t\t\tclass=\"info-icon\"\n\t\t\t\t\t\t\tfontSet=\"material-icons-outlined\"\n\t\t\t\t\t\t\t#tooltipResult=\"matTooltip\"\n\t\t\t\t\t\t\t[tabIndex]=\"0\"\n\t\t\t\t\t\t\t[matTooltip]=\"resultTooltipText\"\n\t\t\t\t\t\t\t[matTooltipPosition]=\"'before'\"\n\t\t\t\t\t\t\t(click)=\"isMobile ? toggleTooltip(tooltipResult) : ''\"\n\t\t\t\t\t\t\t(keyup.enter)=\"isMobile ? toggleTooltip(tooltipResult) : ''\"\n\t\t\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip tooltip-contanier\">\n\t\t\t\t\t\t\tinfo\n\t\t\t\t\t\t</mat-icon>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"ai-count-container\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n\t\t\t\t\t\t<span class=\"title\" i18n>AI Text</span>\n\t\t\t\t\t\t<span class=\"count-result\" i18n>\n\t\t\t\t\t\t\t{{ item.aiCount | formaDecimalNumber }} occurrences per 1 million documents\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"human-count-container\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n\t\t\t\t\t\t<span class=\"title\" i18n>Human Text</span>\n\t\t\t\t\t\t<span class=\"count-result\" i18n>\n\t\t\t\t\t\t\t{{ item.humanCount | formaDecimalNumber }} occurrences per 1 million documents\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<span class=\"result-number-explain\" i18n>*Decimals are hidden for numbers greater than 1.</span>\n\t\t\t</div>\n\t\t</mat-expansion-panel>\n\t</mat-accordion>\n</ng-template>\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { IResourceStartExplainableAIVideo } from '../models/report-ai-results.models';\n\n@Injectable()\nexport class ReportAIResultsService {\n\tprivate _resourcesStartExplainableAIVideo$ = new BehaviorSubject<IResourceStartExplainableAIVideo | null>(null);\n\t/** Subject for sharing the report reposive view mode. */\n\tpublic get resourcesStartExplainableVideo$() {\n\t\treturn this._resourcesStartExplainableAIVideo$;\n\t}\n\tpublic get resourcesStartExplainableVideo() {\n\t\treturn this._resourcesStartExplainableAIVideo$.value;\n\t}\n\n\tconstructor() {}\n\n\tngOnDestroy(): void {}\n}\n","import { Component, Input, OnInit, ViewChild } from '@angular/core';\nimport { IResources } from './models/resources-container.models';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { ReportAIResultsService } from '../../../../../services/report-ai-results.service';\n\n@Component({\n\tselector: 'copyleaks-resources-container',\n\ttemplateUrl: './resources-container.component.html',\n\tstyleUrls: ['./resources-container.component.scss'],\n\tstandalone: false,\n})\nexport class ResourcesContainerComponent implements OnInit {\n\t/**\n\t * @Input {boolean} A flag indicating if the component is in loading state\n\t */\n\t@Input() isLoading: boolean = false;\n\n\t/**\n\t * @Input {boolean} A flag indicating if the component is in mobile view\n\t */\n\t@Input() isMobile: boolean = false;\n\n\t/**\n\t * @Input {boolean} A flag indicating if no results were found\n\t */\n\t@Input() noResults: boolean = false;\n\n\t@ViewChild('resourcesTooltipView') resourcesTooltipView: MatTooltip;\n\n\tisOpen: boolean = false;\n\tresourcessTooltip: string;\n\tresourcesList: IResources[] = [];\n\n\tconstructor(private _reportAIResultsService: ReportAIResultsService) {}\n\n\tngOnInit(): void {\n\t\tthis.resourcessTooltip = $localize`Learn more about AI content, how to talk about it with students and writers, our testing methodology and more with our resources.`;\n\t\tthis.resourcesList = [\n\t\t\t{\n\t\t\t\ttitle: $localize`Start Here`,\n\t\t\t\tdescription: $localize`Learn the fundamentals of AI Logic.`,\n\t\t\t\tbuttontext: $localize`Watch video`,\n\t\t\t\tlink: 'https://player.vimeo.com/video/1084270773?badge=0&amp',\n\t\t\t\tisVideo: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: $localize`AI Detector FAQs`,\n\t\t\t\tdescription: $localize`Includes commonly asked questions about accuracy, model training, and more.`,\n\t\t\t\tlink: 'https://copyleaks.com/wp-content/uploads/2023/05/ai-content-detector-faqs.pdf',\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: $localize`Bringing AI Into The Classroom : Talking To Students About AI`,\n\t\t\t\tdescription: $localize`Strategies for opening the conversation between educators and students around utilizing AI and AI detectors in the classroom.`,\n\t\t\t\tlink: 'https://copyleaks.com/blog/talking-to-students-about-ai',\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: $localize`Check Out Our Help Center`,\n\t\t\t\tdescription: $localize`Find answers to general questions, troubleshooting guides, and video tutorials.`,\n\t\t\t\tlink: 'https://help.copyleaks.com/hc/en-us',\n\t\t\t},\n\t\t];\n\t}\n\n\tstartVideo(event, link) {\n\t\tevent.preventDefault();\n\t\tthis._reportAIResultsService.resourcesStartExplainableVideo$.next({\n\t\t\tstartVideo: true,\n\t\t\tlink: link,\n\t\t});\n\t}\n}\n","<div\n\tclass=\"resourcess-container\"\n\t[class.resourcess-container-open]=\"!noResults && isOpen\"\n\t#resourcesTooltipView=\"matTooltip\"\n\t[matTooltip]=\"isLoading || isOpen ? '' : resourcessTooltip\"\n\tmatTooltipClass=\"web-report-mat-tooltip resourcess-mat-tooltip\">\n\t<ng-container *ngIf=\"!isLoading; else loadingState\">\n\t\t<mat-accordion fxLayout=\"column\">\n\t\t\t<mat-expansion-panel class=\"expansion-panel\" (opened)=\"isOpen = true\" (closed)=\"isOpen = false\" hideToggle>\n\t\t\t\t<mat-expansion-panel-header\n\t\t\t\t\t(focus)=\"isMobile ? '' : resourcesTooltipView?.show()\"\n\t\t\t\t\t(blur)=\"isMobile ? '' : resourcesTooltipView?.hide()\">\n\t\t\t\t\t<mat-panel-title i18n>\n\t\t\t\t\t\t<span>Resources</span>\n\t\t\t\t\t</mat-panel-title>\n\t\t\t\t\t<mat-panel-description>\n\t\t\t\t\t\t<mat-icon>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"isOpen; else closePanel\">keyboard_arrow_up</ng-container>\n\t\t\t\t\t\t\t<ng-template #closePanel>keyboard_arrow_down</ng-template>\n\t\t\t\t\t\t</mat-icon>\n\t\t\t\t\t</mat-panel-description>\n\t\t\t\t</mat-expansion-panel-header>\n\t\t\t\t<div fxLayout=\"column\" fxLayoutAlign=\"start start\" fxLayoutGap=\"24px\">\n\t\t\t\t\t<ng-container *ngFor=\"let res of resourcesList\">\n\t\t\t\t\t\t<mat-divider></mat-divider>\n\t\t\t\t\t\t<ng-container\n\t\t\t\t\t\t\t*ngTemplateOutlet=\"\n\t\t\t\t\t\t\t\tresourcesTemplate;\n\t\t\t\t\t\t\t\tcontext: {\n\t\t\t\t\t\t\t\t\ttitle: res.title,\n\t\t\t\t\t\t\t\t\tbuttontext: res?.buttontext,\n\t\t\t\t\t\t\t\t\tlink: res.link,\n\t\t\t\t\t\t\t\t\tdescription: res.description,\n\t\t\t\t\t\t\t\t\tisVideo: res.isVideo\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\"></ng-container>\n\t\t\t\t\t</ng-container>\n\t\t\t\t\t<mat-divider></mat-divider>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"platforms-container\">\n\t\t\t\t\t<span i18n>\n\t\t\t\t\t\tCertain platforms, like Grammarly, use ChatGPT and other genAI models for key functionalities and can be\n\t\t\t\t\t\tflagged as potential AI content.\n\t\t\t\t\t</span>\n\t\t\t\t\t<a\n\t\t\t\t\t\tclass=\"learn-more\"\n\t\t\t\t\t\t[href]=\"\n\t\t\t\t\t\t\t'https://help.copyleaks.com/hc/en-us/articles/23768743576845-Can-Copyleaks-detect-AI-generated-content'\n\t\t\t\t\t\t\"\n\t\t\t\t\t\ttarget=\"_blank\">\n\t\t\t\t\t\t<span i18n>Learn more</span>\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</mat-expansion-panel>\n\t\t</mat-accordion>\n\t</ng-container>\n\t<ng-template #loadingState>\n\t\t<div class=\"loader-container\" fxLayout=\"column\" fxLayoutAlign=\"start start\">\n\t\t\t<ngx-skeleton-loader class=\"title-loader skeleton\" [appearance]=\"'line'\"></ngx-skeleton-loader>\n\t\t</div>\n\t</ng-template>\n</div>\n\n<ng-template\n\t#resourcesTemplate\n\tlet-title=\"title\"\n\tlet-buttontext=\"buttontext\"\n\tlet-link=\"link\"\n\tlet-description=\"description\"\n\tlet-isVideo=\"isVideo\">\n\t<div class=\"content-conrainer\" fxLayout=\"column\" fxLayoutAlign=\"start start\" fxLayoutGap=\"12px\">\n\t\t<div class=\"header-contaienr\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\" fxLayoutGap=\"4px\">\n\t\t\t<span class=\"title\" i18n>{{ title }}</span>\n\t\t\t<a\n\t\t\t\t(click)=\"isVideo && startVideo($event, link)\"\n\t\t\t\tfxLayout=\"row\"\n\t\t\t\tfxLayoutAlign=\"start end\"\n\t\t\t\tclass=\"learn-more\"\n\t\t\t\t[href]=\"!isVideo ? link : null\"\n\t\t\t\ttarget=\"_blank\">\n\t\t\t\t<span>\n\t\t\t\t\t<ng-container *ngIf=\"buttontext; else learnMore\">\n\t\t\t\t\t\t<ng-container i18n>{{ buttontext }}</ng-container>\n\t\t\t\t\t</ng-container>\n\t\t\t\t\t<ng-template #learnMore>\n\t\t\t\t\t\t<ng-container i18n>Learn more</ng-container>\n\t\t\t\t\t</ng-template>\n\t\t\t\t</span>\n\t\t\t\t<mat-icon>chevron_right</mat-icon>\n\t\t\t</a>\n\t\t</div>\n\t\t<span class=\"description\">{{ description }}</span>\n\t</div>\n</ng-template>\n","import { ChangeDetectorRef, Component, Input, OnChanges, OnInit, SimpleChanges, TemplateRef } from '@angular/core';\nimport { ExplainableAIResults } from '../../../models/report-matches.models';\nimport { ReportMatchHighlightService } from '../../../services/report-match-highlight.service';\nimport { ReportMatchesService } from '../../../services/report-matches.service';\nimport { IResultItem } from '../report-results-item-container/components/models/report-result-item.models';\nimport { ReportNgTemplatesService } from '../../../services/report-ng-templates.service';\nimport { untilDestroy } from '../../../utils/until-destroy';\nimport { ReportViewService } from '../../../services/report-view.service';\nimport { ReportDataService } from '../../../services/report-data.service';\n\n@Component({\n\tselector: 'copyleaks-content-ai-container',\n\ttemplateUrl: './content-ai-container.component.html',\n\tstyleUrls: ['./content-ai-container.component.scss'],\n\tstandalone: false,\n})\nexport class ContentAiContainerComponent implements OnInit, OnChanges {\n\t/**\n\t * @Input {boolean} A flag indicating if the component is in mobile view\n\t */\n\t@Input() isMobile: boolean = false;\n\n\t/**\n\t * @Input {boolean} A flag indicating if the component is in loading state\n\t */\n\t@Input() isLoading: boolean = false;\n\n\t/**\n\t * @Input {boolean} A flag indicating if the plagiarism tab is hidden or disabled\n\t */\n\t@Input() hidePlagarismTap: boolean = false;\n\n\t/**\n\t * @Input {boolean} A flag indicating if the results are locked\n\t */\n\t@Input() lockedResults: boolean = false;\n\n\t/**\n\t * @Input {number} The total number of words in this scan\n\t */\n\t@Input() wordsTotal: number = 0;\n\n\t/**\n\t * @Input {number} The AI probability\n\t */\n\t@Input() aiScore: number = 0;\n\n\t/**\n\t * @Input {number} The total number of omitted words matched in this scan\n\t */\n\t@Input() excludedTotal: number = 0;\n\n\t/**\n\t * @Input {ExplainableAIResults} The explainable AI results\n\t */\n\t@Input() explainableAIResults: ExplainableAIResults;\n\n\t/**\n\t * @Input {(IInternetResultPreview | IDatabaseResultPreview | IRepositoryResultPreview)[]} The AI source match results\n\t */\n\t@Input() aiSourceMatchResults: IResultItem[];\n\n\t/**\n\t * @Input {boolean} A flag indicating if the AI phrases are shown\n\t */\n\t@Input() showAIPhrases: boolean;\n\n\t/**\n\t * {number} The AI percentage result\n\t */\n\taiPercentageResult: number = 0;\n\n\tcustomAISourceMatchUpgradeTemplate: TemplateRef<any> | undefined = undefined;\n\n\tconstructor(\n\t\tprivate _cdr: ChangeDetectorRef,\n\t\tprivate _reportDataSvc: ReportDataService,\n\t\tpublic highlightService: ReportMatchHighlightService,\n\t\tpublic reportMatchesSvc: ReportMatchesService,\n\t\tpublic reportNgTemplatesSvc: ReportNgTemplatesService,\n\t\tpublic reportViewSvc: ReportViewService\n\t) {}\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif (changes['isLoading']?.currentValue == false) {\n\t\t\tthis._updateAiPercentageResult();\n\t\t}\n\t}\n\n\tngOnInit(): void {\n\t\tthis._updateAiPercentageResult();\n\n\t\tthis.reportNgTemplatesSvc.reportTemplatesSubject$.pipe(untilDestroy(this)).subscribe(refs => {\n\t\t\tif (\n\t\t\t\trefs?.customAISourceMatchUpgradeTemplate !== undefined &&\n\t\t\t\tthis.customAISourceMatchUpgradeTemplate === undefined\n\t\t\t) {\n\t\t\t\tthis.customAISourceMatchUpgradeTemplate = refs?.customAISourceMatchUpgradeTemplate;\n\t\t\t\tthis._cdr.detectChanges();\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic isAiSourceMatchEnabled(): boolean {\n\t\treturn this._reportDataSvc.isAiSourceMatchEnabled();\n\t}\n\n\t/**\n\t * Update the AI percentage result\n\t */\n\tprivate _updateAiPercentageResult() {\n\t\tthis.aiPercentageResult =\n\t\t\tthis.wordsTotal - this.excludedTotal === 0\n\t\t\t\t? 0\n\t\t\t\t: Math.ceil(this.aiScore * ((this.wordsTotal ?? 0) - (this.excludedTotal ?? 0))) /\n\t\t\t\t  (this.wordsTotal - this.excludedTotal);\n\t}\n\n\t/**\n\t * Clear the selected result\n\t */\n\tclearSelectResult() {\n\t\tthis.highlightService.clearAllMatchs();\n\t}\n\n\tonNavigateToPhrasesClick() {\n\t\tthis.showAIPhrases = true;\n\t}\n\n\tonNavigateToDefaultClick() {\n\t\tthis.showAIPhrases = false;\n\t}\n\n\tngOnDestroy(): void {}\n}\n","<div class=\"explain-ai-top-container\" fxLayout=\"column\" fxLayoutAlign=\"start center\" fxLayoutGap=\"8px\">\n\t<div\n\t\tclass=\"percentage-result-container\"\n\t\t[class.percentage-result-container-height]=\"aiPercentageResult !== 0\"\n\t\tfxLayout=\"column\"\n\t\tfxLayoutGap=\"8px\">\n\t\t<copyleaks-ai-percentage\n\t\t\t*ngIf=\"!isMobile && !showAIPhrases\"\n\t\t\t[isLoading]=\"isLoading\"\n\t\t\t[aiPercentageResult]=\"aiPercentageResult\"></copyleaks-ai-percentage>\n\t\t<copyleaks-explainable-ai-result-container\n\t\t\tclass=\"copyleaks-explainable-ai-result\"\n\t\t\t[isMobile]=\"isMobile\"\n\t\t\t[isLoading]=\"isLoading\"\n\t\t\t[hidePlagarismTap]=\"hidePlagarismTap\"\n\t\t\t[reportMatchesSvc]=\"reportMatchesSvc\"\n\t\t\t[highlightService]=\"highlightService\"\n\t\t\t[customAISourceMatchUpgradeTemplate]=\"customAISourceMatchUpgradeTemplate\"\n\t\t\t[lockedResults]=\"lockedResults\"\n\t\t\t[aiPercentageResult]=\"aiPercentageResult\"\n\t\t\t[explainableAIResults]=\"explainableAIResults\"\n\t\t\t[showAIPhrases]=\"showAIPhrases\"\n\t\t\t[aiSourceMatchResults]=\"aiSourceMatchResults\"\n\t\t\t(clearSelectResultEvent)=\"clearSelectResult()\"\n\t\t\t(onNavigateToPhrases)=\"onNavigateToPhrasesClick()\"\n\t\t\t(onNavigateToDefault)=\"onNavigateToDefaultClick()\"></copyleaks-explainable-ai-result-container>\n\t</div>\n\t<ng-container\n\t\t*ngIf=\"\n\t\t\t!isLoading &&\n\t\t\t(!showAIPhrases || (!isAiSourceMatchEnabled() && reportViewSvc?.reportViewMode?.hideAISourceMatchUpgrade)) &&\n\t\t\t!isMobile\n\t\t\">\n\t\t<copyleaks-resources-container\n\t\t\tclass=\"copyleaks-resources-container\"\n\t\t\t[isLoading]=\"isLoading\"\n\t\t\t[isMobile]=\"isMobile\"\n\t\t\t[noResults]=\"aiPercentageResult === 0\"></copyleaks-resources-container>\n\t</ng-container>\n</div>\n","import { Component, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\nimport { ReportDataService } from '../../../../services/report-data.service';\nimport { ReportMatchesService } from '../../../../services/report-matches.service';\nimport { ReportViewService } from '../../../../services/report-view.service';\nimport { ReportMatchHighlightService } from '../../../../services/report-match-highlight.service';\nimport { ReportStatisticsService } from '../../../../services/report-statistics.service';\nimport { OneToManyReportLayoutBaseComponent } from '../../base/report-layout-one-to-many-base.component';\nimport { ReportNgTemplatesService } from '../../../../services/report-ng-templates.service';\nimport { ReportRealtimeResultsService } from '../../../../services/report-realtime-results.service';\nimport { EReportMode } from '../../../../enums/copyleaks-web-report.enums';\nimport { ReportErrorsService } from '../../../../services/report-errors.service';\n\n@Component({\n\tselector: 'copyleaks-one-to-many-report-layout-desktop',\n\ttemplateUrl: './one-to-many-report-layout-desktop.component.html',\n\tstyleUrls: ['./one-to-many-report-layout-desktop.component.scss'],\n\tstandalone: false,\n})\nexport class OneToManyReportLayoutDesktopComponent\n\textends OneToManyReportLayoutBaseComponent\n\timplements OnInit, OnDestroy\n{\n\t@Input() companyLogo: string = null;\n\n\t@Input() hideWritingFeedback: boolean = false;\n\n\t@Input() reportMode: EReportMode;\n\n\t@Input() lockedExplainAIResults: boolean = false;\n\n\tEReportMode = EReportMode;\n\n\tconstructor(\n\t\treportDataSvc: ReportDataService,\n\t\treportViewSvc: ReportViewService,\n\t\tmatchSvc: ReportMatchesService,\n\t\trenderer: Renderer2,\n\t\thighlightSvc: ReportMatchHighlightService,\n\t\tstatisticsSvc: ReportStatisticsService,\n\t\ttemplatesSvc: ReportNgTemplatesService,\n\t\trealTimeResultsSvc: ReportRealtimeResultsService,\n\t\treportErrorsSvc: ReportErrorsService\n\t) {\n\t\tsuper(\n\t\t\treportDataSvc,\n\t\t\treportViewSvc,\n\t\t\tmatchSvc,\n\t\t\trenderer,\n\t\t\thighlightSvc,\n\t\t\tstatisticsSvc,\n\t\t\ttemplatesSvc,\n\t\t\trealTimeResultsSvc,\n\t\t\treportErrorsSvc\n\t\t);\n\t}\n\n\tngOnInit(): void {\n\t\tthis.initOneToManyViewData();\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.onComponentDestroy();\n\t}\n}\n","<!-- Left side section -->\n<div\n\t[class.web-report-left-section]=\"reportMode === EReportMode.WebReport\"\n\t[class.assessment-tool-left-section]=\"reportMode === EReportMode.AssessmentTool\">\n\t<ng-container *ngTemplateOutlet=\"customBannerSectionTemplate ?? null\"></ng-container>\n\t<!-- Report tabs container --->\n\t<copyleaks-report-tabs-container\n\t\t*ngIf=\"reportMode === EReportMode.WebReport\"\n\t\t[reportMode]=\"reportMode\"\n\t\t[hideAiTap]=\"hideAiTap\"\n\t\t[hidePlagarismTap]=\"hidePlagarismTap\"\n\t\t[forceWritingFeedbackTapHide]=\"hideWritingFeedback\"\n\t\t[hideWritingFeedbackTap]=\"hideWritingFeedbackTap\"\n\t\t[selectedTap]=\"selectedTap\"\n\t\t[plagarismScore]=\"plagiarismScore\"\n\t\t[aiScore]=\"reportStatistics?.aiScore ?? 0\"\n\t\t[writingFeedbackScore]=\"reportStatistics?.writingFeedbackOverallScore\"\n\t\t[totalWritingFeedbackIssues]=\"reportStatistics?.writingFeedbackOverallIssues\"\n\t\t[wordsTotal]=\"reportStatistics?.total ?? 0\"\n\t\t[identicalTotal]=\"reportStatistics?.identical ?? 0\"\n\t\t[minorChangesTotal]=\"reportStatistics?.minorChanges ?? 0\"\n\t\t[paraphrasedTotal]=\"reportStatistics?.relatedMeaning ?? 0\"\n\t\t[excludedTotal]=\"reportStatistics?.omittedWords ?? 0\"\n\t\t[showLoadingView]=\"\n\t\t\tselectedTap === EReportViewType.WritingFeedbackTabView\n\t\t\t\t? isLoadingScanCorrections\n\t\t\t\t: isLoadingScanContent || isLoadingScanResults\n\t\t\"\n\t\t[hideAiTap]=\"hideAiTap\"\n\t\t[hidePlagarismTap]=\"hidePlagarismTap\"\n\t\t[showDisabledProducts]=\"showDisabledProducts\"\n\t\t[loadingProgressPct]=\"loadingProgressPct\"\n\t\t[companyLogo]=\"companyLogo\"></copyleaks-report-tabs-container>\n\n\t<!-- Report content container  -->\n\t<copyleaks-content-viewer-container\n\t\t[ngClass]=\"{\n\t\t\t'assessment-tool-view': reportMode === EReportMode.AssessmentTool\n\t\t}\"\n\t\t[isHtmlView]=\"isHtmlView\"\n\t\t[hideTextModeSwitch]=\"!isAiHtmlViewAvailable && selectedTap === EReportViewType.AIView\"\n\t\t[isAlertsView]=\"isAlertsMode\"\n\t\t[scanSource]=\"reportCrawledVersion\"\n\t\t[contentTextMatches]=\"contentTextMatches\"\n\t\t[contentHtmlMatches]=\"reportMatches\"\n\t\t[currentPage]=\"currentPageSource\"\n\t\t[reportResponsive]=\"EResponsiveLayoutType.Desktop\"\n\t\t[isMultiSelection]=\"selectedTap !== EReportViewType.AIView && isMultiSelection ? true : null\"\n\t\t[isAIView]=\"selectedTap === EReportViewType.AIView\"\n\t\t[showOmittedWords]=\"showOmittedWords\"\n\t\t[isPartitalScan]=\"isPartitalScan\"\n\t\t[hasHtml]=\"\n\t\t\tviewMode === 'writing-feedback'\n\t\t\t\t? !!writingFeedback?.corrections?.html &&\n\t\t\t\t  !!writingFeedback?.corrections.html.chars &&\n\t\t\t\t  !!writingFeedback?.corrections.html.chars.groupIds &&\n\t\t\t\t  !!writingFeedback?.corrections.html.chars.lengths &&\n\t\t\t\t  !!writingFeedback?.corrections.html.chars.starts &&\n\t\t\t\t  !!writingFeedback?.corrections.html.chars.operationTexts &&\n\t\t\t\t  !!writingFeedback?.corrections.html.chars.types\n\t\t\t\t: !!reportCrawledVersion?.html?.value\n\t\t\"\n\t\t[viewMode]=\"viewMode\"\n\t\treportOrigin=\"original\"\n\t\t[hidePoweredBy]=\"reportMode === EReportMode.AssessmentTool\"\n\t\t[submittedDocumentName]=\"scanResultsPreviews?.scannedDocument?.metadata?.filename\"\n\t\t(iFrameMessageEvent)=\"onIFrameMessage($event)\"\n\t\t(viewChangeEvent)=\"onReportViewChange($event)\"\n\t\t(onShowOmittedWords)=\"onShowOmittedWords($event)\"></copyleaks-content-viewer-container>\n</div>\n\n<!-- Right side section -->\n<div\n\t*ngIf=\"!hideRightSection\"\n\t[class.web-report-right-section]=\"reportMode === EReportMode.WebReport\"\n\t[class.assessment-tool-middle-section]=\"reportMode === EReportMode.AssessmentTool\"\n\tid=\"one-to-many-report-right-section\">\n\t<!-- Report actions container -->\n\t<copyleaks-report-actions-container [showLoadingView]=\"isLoadingScanContent\"></copyleaks-report-actions-container>\n\n\t<!-- Report results & alerts container -->\n\t<div\n\t\tclass=\"results-alerts-container\"\n\t\t[class.ai-results-container]=\"selectedTap === EReportViewType.AIView\"\n\t\t[style.overflow]=\"isLoadingScanResults ? 'hidden' : ''\"\n\t\t[class.is-real-time]=\"\n\t\t\tloadingProgressPct < 100 &&\n\t\t\t(!newScanResultsView || newScanResultsView.length === 0) &&\n\t\t\t!!reportEndpointConfig &&\n\t\t\tisRealTimeView\n\t\t\">\n\t\t<ng-container *ngIf=\"!selectedCustomTabResultSectionContentTemplate; else customResultSectionRef\">\n\t\t\t<cr-assessment-tool-tab-score-panel\n\t\t\t\t*ngIf=\"reportMode === EReportMode.AssessmentTool && selectedTap !== EReportViewType.WritingFeedbackTabView\"\n\t\t\t\t[selectedTap]=\"selectedTap\"\n\t\t\t\t[plagarismScore]=\"plagiarismScore\"\n\t\t\t\t[aiScore]=\"reportStatistics?.aiScore ?? 0\"\n\t\t\t\t[writingFeedbackScore]=\"reportStatistics?.writingFeedbackOverallScore\"\n\t\t\t\t[totalWritingFeedbackIssues]=\"reportStatistics?.writingFeedbackOverallIssues\"\n\t\t\t\t[wordsTotal]=\"reportStatistics?.total ?? 0\"\n\t\t\t\t[identicalTotal]=\"reportStatistics?.identical ?? 0\"\n\t\t\t\t[minorChangesTotal]=\"reportStatistics?.minorChanges ?? 0\"\n\t\t\t\t[paraphrasedTotal]=\"reportStatistics?.relatedMeaning ?? 0\"\n\t\t\t\t[excludedTotal]=\"reportStatistics?.omittedWords ?? 0\"\n\t\t\t\t[showLoadingView]=\"isLoadingScanContent || isLoadingScanResults\"></cr-assessment-tool-tab-score-panel>\n\t\t\t<!-- Report alerts container -->\n\t\t\t<copyleaks-report-alerts-container\n\t\t\t\t*ngIf=\"\n\t\t\t\t\talerts &&\n\t\t\t\t\talerts.length > 0 &&\n\t\t\t\t\t!isLoadingScanResults &&\n\t\t\t\t\treportTemplateMode !== ECustomResultsReportView.Full &&\n\t\t\t\t\treportTemplateMode !== ECustomResultsReportView.Partial &&\n\t\t\t\t\tviewMode === 'one-to-many'\n\t\t\t\t\"\n\t\t\t\t[class.container-with-custom-results]=\"reportTemplateMode != undefined\"\n\t\t\t\t[class.ai-alerts-contanier]=\"selectedTap === EReportViewType.AIView\"\n\t\t\t\t[class.assessment-tool-alerts-contanier]=\"reportMode === EReportMode.AssessmentTool\"\n\t\t\t\t[alerts]=\"alerts\"\n\t\t\t\t[flexGrow]=\"25\"></copyleaks-report-alerts-container>\n\n\t\t\t<!-- Report results container -->\n\n\t\t\t<copyleaks-content-ai-container\n\t\t\t\t*ngIf=\"selectedTap === EReportViewType.AIView\"\n\t\t\t\tclass=\"ai-results-container\"\n\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t'assessment-tool-view': reportMode === EReportMode.AssessmentTool\n\t\t\t\t}\"\n\t\t\t\t[isLoading]=\"loadingExplainableAI || !reportStatistics || !reportCrawledVersion || isLoadingScanResults\"\n\t\t\t\t[lockedResults]=\"lockedExplainAIResults\"\n\t\t\t\t[aiScore]=\"reportStatistics?.aiScore ?? 0\"\n\t\t\t\t[wordsTotal]=\"reportStatistics?.total ?? 0\"\n\t\t\t\t[excludedTotal]=\"reportStatistics?.omittedWords ?? 0\"\n\t\t\t\t[explainableAIResults]=\"explainableAI\"\n\t\t\t\t[hidePlagarismTap]=\"hidePlagarismTap\"\n\t\t\t\t[showAIPhrases]=\"showAIPhrases\"\n\t\t\t\t[aiSourceMatchResults]=\"aiSourceMatchResults\"></copyleaks-content-ai-container>\n\n\t\t\t<copyleaks-report-results-container\n\t\t\t\t*ngIf=\"\n\t\t\t\t\treportTemplateMode !== ECustomResultsReportView.Full &&\n\t\t\t\t\t!(\n\t\t\t\t\t\treportTemplateMode === ECustomResultsReportView.Partial &&\n\t\t\t\t\t\tscanResultsActions.totalResults === 0 &&\n\t\t\t\t\t\t!isLoadingScanResults\n\t\t\t\t\t) &&\n\t\t\t\t\tviewMode === 'one-to-many' &&\n\t\t\t\t\tselectedTap === EReportViewType.PlagiarismView\n\t\t\t\t\"\n\t\t\t\t[class.container-with-custom-results]=\"reportTemplateMode != undefined\"\n\t\t\t\t[flexGrow]=\"65\"\n\t\t\t\t[allResults]=\"scanResultsView\"\n\t\t\t\t[hideAiTap]=\"hideAiTap\"\n\t\t\t\t[resultsActions]=\"scanResultsActions\"\n\t\t\t\t[showLoadingView]=\"isLoadingScanResults || isLoadingScanCorrections\"\n\t\t\t\t[filterOptions]=\"filterOptions\"\n\t\t\t\t[newResults]=\"newScanResultsView\"></copyleaks-report-results-container>\n\n\t\t\t<ng-container *ngIf=\"viewMode === 'writing-feedback'\">\n\t\t\t\t<cr-readability-score\n\t\t\t\t\t*ngIf=\"!showReadabilityLoadingView\"\n\t\t\t\t\t[statisticsInfo]=\"writingFeedback?.score?.statistics\"\n\t\t\t\t\t[readabilityInfo]=\"writingFeedback?.score?.readability\"\n\t\t\t\t\t[showLoadingView]=\"showReadabilityLoadingView\"></cr-readability-score>\n\n\t\t\t\t<copyleaks-report-corrections-container\n\t\t\t\t\t[totalWritingFeedbackIssues]=\"allScanCorrectionsView?.length ?? 0\"\n\t\t\t\t\t[totalFilteredCorrections]=\"totalFilteredCorrections\"\n\t\t\t\t\t[writingFeedbackStats]=\"writingFeedbackStats\"\n\t\t\t\t\t[allWritingFeedbacksStats]=\"allWritingFeedbacksStats\"\n\t\t\t\t\t[allScanCorrectionsView]=\"allScanCorrectionsView\"\n\t\t\t\t\t[displayedScanCorrectionsView]=\"displayedScanCorrectionsView\"\n\t\t\t\t\t[correctionClicked]=\"correctionClicked\"\n\t\t\t\t\t[showLoadingView]=\"\n\t\t\t\t\t\tshowCorrectionsLoadingView || isLoadingScanCorrections\n\t\t\t\t\t\"></copyleaks-report-corrections-container>\n\t\t\t</ng-container>\n\n\t\t\t<div\n\t\t\t\tclass=\"custom-results-container\"\n\t\t\t\t*ngIf=\"selectedTap !== EReportViewType.AIView\"\n\t\t\t\t#customResultView\n\t\t\t\t[style.flex-grow]=\"'1'\">\n\t\t\t\t<ng-container *ngTemplateOutlet=\"customResultsTemplate ?? null\"></ng-container>\n\t\t\t</div>\n\t\t</ng-container>\n\t\t<ng-template #customResultSectionRef>\n\t\t\t<div class=\"custom-tab-item-results-section\" [style.flex-grow]=\"'1'\">\n\t\t\t\t<ng-container *ngTemplateOutlet=\"selectedCustomTabResultSectionContentTemplate ?? null\"></ng-container>\n\t\t\t</div>\n\t\t</ng-template>\n\t</div>\n</div>\n\n<copyleaks-report-tabs-container\n\t*ngIf=\"reportMode === EReportMode.AssessmentTool\"\n\tclass=\"assessment-tool-tabs\"\n\t[reportMode]=\"reportMode\"\n\t[hideAiTap]=\"hideAiTap\"\n\t[hidePlagarismTap]=\"hidePlagarismTap\"\n\t[forceWritingFeedbackTapHide]=\"hideWritingFeedback\"\n\t[hideWritingFeedbackTap]=\"hideWritingFeedbackTap\"\n\t[selectedTap]=\"selectedTap\"\n\t[plagarismScore]=\"plagiarismScore\"\n\t[aiScore]=\"reportStatistics?.aiScore ?? 0\"\n\t[writingFeedbackScore]=\"reportStatistics?.writingFeedbackOverallScore\"\n\t[totalWritingFeedbackIssues]=\"reportStatistics?.writingFeedbackOverallIssues\"\n\t[wordsTotal]=\"reportStatistics?.total ?? 0\"\n\t[identicalTotal]=\"reportStatistics?.identical ?? 0\"\n\t[minorChangesTotal]=\"reportStatistics?.minorChanges ?? 0\"\n\t[paraphrasedTotal]=\"reportStatistics?.relatedMeaning ?? 0\"\n\t[excludedTotal]=\"reportStatistics?.omittedWords ?? 0\"\n\t[showLoadingView]=\"\n\t\tselectedTap === EReportViewType.WritingFeedbackTabView\n\t\t\t? isLoadingScanCorrections\n\t\t\t: isLoadingScanContent || isLoadingScanResults\n\t\"\n\t[hideAiTap]=\"hideAiTap\"\n\t[hidePlagarismTap]=\"hidePlagarismTap\"\n\t[showDisabledProducts]=\"showDisabledProducts\"\n\t[loadingProgressPct]=\"loadingProgressPct\"\n\t[companyLogo]=\"companyLogo\"></copyleaks-report-tabs-container>\n","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { ReportMatchesService } from '../../../services/report-matches.service';\nimport { AIExplainResultItem, EProportionType, ExplainableAIResults } from '../../../models/report-matches.models';\nimport { ReportViewService } from '../../../services/report-view.service';\nimport { ReportDataService } from '../../../services/report-data.service';\n\n@Component({\n\tselector: 'cr-ai-phrases-mobile-header',\n\ttemplateUrl: './cr-ai-phrases-mobile-header.component.html',\n\tstyleUrls: ['./cr-ai-phrases-mobile-header.component.scss'],\n\tstandalone: false,\n})\nexport class CrAiPhrasesMobileHeaderComponent implements OnInit, OnChanges {\n\t/**\n\t * @Input {boolean} A flag indicating if the component is in loading state\n\t */\n\t@Input() isLoading: boolean = false;\n\n\t/**\n\t * @Input {boolean} A flag indicating if the plagiarism tab is hidden or disabled\n\t */\n\t@Input() hidePlagarismTap: boolean = false;\n\n\t/**\n\t * @Input {boolean} A flag indicating if the results are locked\n\t */\n\t@Input() lockedResults: boolean = false;\n\n\t/**\n\t * @Input {number} The total number of words in this scan\n\t */\n\t@Input() wordsTotal: number = 0;\n\n\t/**\n\t * @Input {number} The AI probability\n\t */\n\t@Input() aiScore: number = 0;\n\n\t/**\n\t * @Input {number} The total number of omitted words matched in this scan\n\t */\n\t@Input() excludedTotal: number = 0;\n\n\t/**\n\t * @Input {ExplainableAIResults} The explainable AI results\n\t */\n\t@Input() explainableAIResults: ExplainableAIResults;\n\n\texplainResults: AIExplainResultItem[] = [];\n\texplainItemResults: AIExplainResultItem[] = [];\n\n\tbarTooltipText: string = '';\n\tminProportion: number = 0;\n\tmaxProportion: number = 0;\n\tminGradeBar: number = 0;\n\tmaxGradeBar: number = 0;\n\tmidGradeBar: number = 0;\n\thasInfinityResult: boolean = false;\n\tproportions: number[] = [];\n\temptyView: boolean = false;\n\taiInsightAlert: boolean = false;\n\talertTitle: string;\n\talertMessage: string;\n\ttitle: string;\n\tinfoTooltipText: string;\n\tproportionTooltipText: string;\n\tresultTooltipText: string;\n\tupdateResult: boolean = false;\n\n\tconstructor(\n\t\tprivate _reportMatchesSvc: ReportMatchesService,\n\t\tpublic reportViewSvc: ReportViewService,\n\t\tprivate _reportDataSvc: ReportDataService\n\t) {}\n\n\tngOnInit(): void {}\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif (changes['isLoading']?.currentValue == false) {\n\t\t\tthis._initResults();\n\t\t}\n\t}\n\n\tonBackClick() {\n\t\tthis._reportMatchesSvc.showAIPhrases$.next(false);\n\t\tthis.reportViewSvc.reportViewMode$.next({\n\t\t\t...this.reportViewSvc.reportViewMode,\n\t\t\tshowAIPhrases: false,\n\t\t});\n\t}\n\n\tpublic isPlagiarismEnabled(): boolean {\n\t\treturn this._reportDataSvc.isPlagiarismEnabled();\n\t}\n\n\tpublic isAiSourceMatchEnabled(): boolean {\n\t\treturn this._reportDataSvc.isAiSourceMatchEnabled();\n\t}\n\n\tprivate _initResults() {\n\t\tif (!this.updateResult) {\n\t\t\tthis._updateTooltipText();\n\t\t\tif (this.explainableAIResults?.explain && this.explainableAIResults?.slicedMatch.length > 0) {\n\t\t\t\tthis.title = $localize`AI Insights`;\n\t\t\t\tthis._mapingtoResultItem();\n\t\t\t\tthis._updateProportionRange();\n\t\t\t} else if (!this.lockedResults) {\n\t\t\t\tthis.emptyView = true;\n\t\t\t\t// If the AI insights are empty, check if there is an AI alert\n\t\t\t\tthis.aiInsightAlert = !!this.explainableAIResults?.aiScanAlert;\n\t\t\t\tif (this.aiInsightAlert) {\n\t\t\t\t\tthis.alertTitle = this.explainableAIResults?.aiScanAlert?.title;\n\t\t\t\t\tthis.alertMessage = this.explainableAIResults?.aiScanAlert?.message;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.updateResult = true;\n\t\t}\n\t}\n\n\t/**\n\t * Update the tooltip text\n\t */\n\tprivate _updateTooltipText() {\n\t\tthis.infoTooltipText = $localize`Learn more about AI Insights`;\n\t\tthis.proportionTooltipText = $localize`The ratio represents how many times on average AI would use the phrase compared to how many times on average a human would use this phrase.`;\n\t\tthis.resultTooltipText = $localize`Our dataset consists of millions of documents containing both AI and human written text. Here, we are showing the results normalized per 1M texts for an easier interpretation of the data shown.`;\n\t\tthis.barTooltipText = $localize`The darker the color, the more frequently the phrase is used by AI compared to a human.`;\n\t}\n\n\t/**\n\t * Update the bar score\n\t */\n\tprivate _updateProportionRange(): void {\n\t\tthis.proportions = this.explainResults?.map(result => result.proportion) ?? [];\n\t\tconst proportionsFiltered = this.proportions.filter(p => p > 0);\n\t\tthis.minProportion = Number(Math.min(...proportionsFiltered).toFixed(0));\n\t\tthis.maxProportion = Number(Math.max(...proportionsFiltered).toFixed(0));\n\t\tthis.hasInfinityResult = this.proportions.some(p => p == -1);\n\t\tthis.minGradeBar = this._getGradePercentByPropoType(EProportionType.Low);\n\t\tthis.midGradeBar = this._getGradePercentByPropoType(EProportionType.Medium);\n\t\tthis.maxGradeBar = this._getGradePercentByPropoType(EProportionType.High);\n\t}\n\n\t/**\n\t * Get the grade percent in bar score by proportion type\n\t * @param type\n\t * @returns Number\n\t */\n\tprivate _getGradePercentByPropoType(type: EProportionType): number {\n\t\tconst grade =\n\t\t\t(this.explainResults?.filter(result => result.proportionType == type)?.length / this.proportions.length) * 100;\n\t\treturn Number(grade.toFixed(0));\n\t}\n\n\t/**\n\t * Mapping the result to AIExplainResultItem\n\t */\n\tprivate _mapingtoResultItem() {\n\t\tthis.explainableAIResults.explain.patterns.statistics.proportion.forEach((item, index) => {\n\t\t\tconst wordStart = this.explainableAIResults?.explain?.patterns?.text?.chars.starts[index];\n\t\t\tconst wordEnd = this.explainableAIResults?.explain?.patterns?.text?.chars.lengths[index] + wordStart;\n\t\t\tconst content = this.explainableAIResults?.sourceText.substring(wordStart, wordEnd);\n\t\t\tconst slicedMatchResult = this.explainableAIResults.slicedMatch.find(result => result.match.start === wordStart);\n\n\t\t\tif (slicedMatchResult?.content) {\n\t\t\t\tthis.explainResults.push({\n\t\t\t\t\tcontent: content,\n\t\t\t\t\tproportionType: slicedMatchResult.match.proportionType,\n\t\t\t\t\taiCount: Number(this.explainableAIResults.explain.patterns.statistics.aiCount[index]),\n\t\t\t\t\thumanCount: Number(this.explainableAIResults.explain.patterns.statistics.humanCount[index]),\n\t\t\t\t\tproportion: Number(item.toFixed(0)),\n\t\t\t\t\tisInfinity: item == -1,\n\t\t\t\t\tstart: this.explainableAIResults.explain.patterns.text.chars.starts[index],\n\t\t\t\t\tend: this.explainableAIResults.explain.patterns.text.chars.lengths[index] + wordStart,\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\tthis.explainItemResults = this.explainResults.sort((a, b) => {\n\t\t\tif (a.proportion === -1) return -1;\n\t\t\tif (b.proportion === -1) return 1;\n\t\t\treturn b.proportion - a.proportion;\n\t\t});\n\t\tthis.explainItemResults = [...this.explainResults];\n\t}\n}\n","<ng-container *ngIf=\"!isLoading; else loadingViewRef\">\n\t<div class=\"title-container\">\n\t\t<cr-button\n\t\t\t*ngIf=\"isAiSourceMatchEnabled() || !reportViewSvc?.reportViewMode?.hideAISourceMatchUpgrade\"\n\t\t\t[isLink]=\"true\"\n\t\t\t[outlined]=\"true\"\n\t\t\t[dir]=\"reportViewSvc.documentDirection\"\n\t\t\tpadding=\"4px\"\n\t\t\ticon=\"arrow_back_ios\"\n\t\t\tfontSize=\"14px\"\n\t\t\ticonSize=\"12px\"\n\t\t\tcolor=\"#0517A6\"\n\t\t\t(click)=\"$event.preventDefault(); $event.stopPropagation(); onBackClick()\">\n\t\t\t<ng-container i18n>Back</ng-container>\n\t\t</cr-button>\n\n\t\t<div\n\t\t\tclass=\"ai-phrases\"\n\t\t\t[ngClass]=\"{\n\t\t\t\t'justify-left': !isAiSourceMatchEnabled() && reportViewSvc?.reportViewMode?.hideAISourceMatchUpgrade\n\t\t\t}\">\n\t\t\t<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t<rect x=\"0.5\" y=\"0.5\" width=\"23\" height=\"23\" rx=\"11.5\" fill=\"#EBF3F5\" />\n\t\t\t\t<rect x=\"0.5\" y=\"0.5\" width=\"23\" height=\"23\" rx=\"11.5\" stroke=\"#FBFFFF\" />\n\t\t\t\t<rect x=\"0.5\" y=\"0.5\" width=\"23\" height=\"23\" rx=\"11.5\" stroke=\"url(#paint0_linear_7308_1032)\" />\n\t\t\t\t<rect x=\"2\" y=\"2\" width=\"20\" height=\"20\" rx=\"10\" fill=\"#FBFFFF\" />\n\t\t\t\t<rect x=\"2\" y=\"2\" width=\"20\" height=\"20\" rx=\"10\" fill=\"url(#paint1_linear_7308_1032)\" />\n\t\t\t\t<path\n\t\t\t\t\td=\"M16.4545 10.0909L17.25 8.34091L19 7.54545L17.25 6.75L16.4545 5L15.6591 6.75L13.9091 7.54545L15.6591 8.34091L16.4545 10.0909ZM11.6818 10.4091L10.0909 6.90909L8.5 10.4091L5 12L8.5 13.5909L10.0909 17.0909L11.6818 13.5909L15.1818 12L11.6818 10.4091ZM16.4545 13.9091L15.6591 15.6591L13.9091 16.4545L15.6591 17.25L16.4545 19L17.25 17.25L19 16.4545L17.25 15.6591L16.4545 13.9091Z\"\n\t\t\t\t\tfill=\"white\" />\n\t\t\t\t<defs>\n\t\t\t\t\t<linearGradient\n\t\t\t\t\t\tid=\"paint0_linear_7308_1032\"\n\t\t\t\t\t\tx1=\"-1.01822e-07\"\n\t\t\t\t\t\ty1=\"13.811\"\n\t\t\t\t\t\tx2=\"22.4306\"\n\t\t\t\t\t\ty2=\"19.7441\"\n\t\t\t\t\t\tgradientUnits=\"userSpaceOnUse\">\n\t\t\t\t\t\t<stop stop-color=\"#BCA6FF\" />\n\t\t\t\t\t\t<stop offset=\"1\" stop-color=\"#9345F9\" />\n\t\t\t\t\t</linearGradient>\n\t\t\t\t\t<linearGradient\n\t\t\t\t\t\tid=\"paint1_linear_7308_1032\"\n\t\t\t\t\t\tx1=\"2\"\n\t\t\t\t\t\ty1=\"13.5092\"\n\t\t\t\t\t\tx2=\"20.6922\"\n\t\t\t\t\t\ty2=\"18.4534\"\n\t\t\t\t\t\tgradientUnits=\"userSpaceOnUse\">\n\t\t\t\t\t\t<stop stop-color=\"#BCA6FF\" />\n\t\t\t\t\t\t<stop offset=\"1\" stop-color=\"#9345F9\" />\n\t\t\t\t\t</linearGradient>\n\t\t\t\t</defs>\n\t\t\t</svg>\n\t\t\t<span class=\"title\" i18n>AI Phrases</span>\n\t\t</div>\n\n\t\t<div class=\"total-phrases\">Phrases ({{ explainItemResults?.length ?? 0 }})</div>\n\t</div>\n\n\t<div class=\"ai-bar-container\">\n\t\t<div class=\"freq-title\" i18n>Frequency of phrases in AI vs human text.</div>\n\t\t<div class=\"match-bar-container\">\n\t\t\t<span class=\"ai-source-match-score\">{{ minProportion?.toLocaleString() }}x</span>\n\t\t\t<div\n\t\t\t\tclass=\"grade-bar-container\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t\tcrAIScoreTooltipContent\n\t\t\t\t[isTooltipBar]=\"true\"\n\t\t\t\t[tooltipText]=\"barTooltipText\"\n\t\t\t\tfxLayout=\"row\"\n\t\t\t\tfxLayoutAlign=\"start center\"\n\t\t\t\tfxLayoutGap=\"16px\">\n\t\t\t\t<div class=\"grade-bar\" fxLayout=\"row\">\n\t\t\t\t\t<div class=\"min-result\" [style.width]=\"minGradeBar + '%'\"></div>\n\t\t\t\t\t<div class=\"mid-result\" [style.width]=\"midGradeBar + '%'\"></div>\n\t\t\t\t\t<div class=\"max-result\" [style.width]=\"maxGradeBar + '%'\"></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<span class=\"ai-source-match-score\">\n\t\t\t\t<ng-container *ngIf=\"hasInfinityResult; else maxResult\">10,000x</ng-container>\n\t\t\t\t<ng-template #maxResult>{{ maxProportion?.toLocaleString() }}x</ng-template>\n\t\t\t</span>\n\t\t</div>\n\t</div>\n</ng-container>\n<ng-template #loadingViewRef>\n\t<div class=\"title-loading-container\">\n\t\t<div class=\"part-1\">\n\t\t\t<ngx-skeleton-loader class=\"skeleton circle\" [appearance]=\"'circle'\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 100%\"></ngx-skeleton-loader>\n\t\t</div>\n\t\t<div class=\"part-2\">\n\t\t\t<ngx-skeleton-loader class=\"skeleton circle\" [appearance]=\"'circle'\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 100%\"></ngx-skeleton-loader>\n\t\t</div>\n\t\t<div class=\"part-3\">\n\t\t\t<ngx-skeleton-loader class=\"skeleton circle\" [appearance]=\"'circle'\"></ngx-skeleton-loader>\n\t\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 100%\"></ngx-skeleton-loader>\n\t\t</div>\n\t</div>\n\n\t<div class=\"bar-loading-container\">\n\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 15%\"></ngx-skeleton-loader>\n\t\t<ngx-skeleton-loader class=\"skeleton bar\" [appearance]=\"'line'\" style=\"width: 70%\"></ngx-skeleton-loader>\n\t\t<ngx-skeleton-loader class=\"skeleton\" [appearance]=\"'line'\" style=\"width: 15%\"></ngx-skeleton-loader>\n\t</div>\n</ng-template>\n","import { Component, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\nimport { ReportDataService } from '../../../../services/report-data.service';\nimport { ReportMatchesService } from '../../../../services/report-matches.service';\nimport { ReportViewService } from '../../../../services/report-view.service';\nimport { ReportMatchHighlightService } from '../../../../services/report-match-highlight.service';\nimport { ReportStatisticsService } from '../../../../services/report-statistics.service';\nimport { OneToManyReportLayoutBaseComponent } from '../../base/report-layout-one-to-many-base.component';\nimport { ReportNgTemplatesService } from '../../../../services/report-ng-templates.service';\nimport { ReportRealtimeResultsService } from '../../../../services/report-realtime-results.service';\nimport { EReportMode } from '../../../../enums/copyleaks-web-report.enums';\nimport { ReportErrorsService } from '../../../../services/report-errors.service';\nimport { MatTooltip } from '@angular/material/tooltip';\n\n@Component({\n\tselector: 'copyleaks-one-to-many-report-layout-mobile',\n\ttemplateUrl: './one-to-many-report-layout-mobile.component.html',\n\tstyleUrls: ['./one-to-many-report-layout-mobile.component.scss'],\n\tstandalone: false,\n})\nexport class OneToManyReportLayoutMobileComponent\n\textends OneToManyReportLayoutBaseComponent\n\timplements OnInit, OnDestroy\n{\n\t@Input() companyLogo: string = null;\n\n\t@Input() hideWritingFeedback: boolean = false;\n\n\t@Input() reportMode: EReportMode;\n\n\t@Input() lockedExplainAIResults: boolean = false;\n\n\tEReportMode = EReportMode;\n\n\ttooltipVisible: boolean = false;\n\n\tconstructor(\n\t\treportDataSvc: ReportDataService,\n\t\treportViewSvc: ReportViewService,\n\t\tmatchSvc: ReportMatchesService,\n\t\trenderer: Renderer2,\n\t\thighlightSvc: ReportMatchHighlightService,\n\t\tstatisticsSvc: ReportStatisticsService,\n\t\ttemplatesSvc: ReportNgTemplatesService,\n\t\trealTimeResultsSvc: ReportRealtimeResultsService,\n\t\treportErrorsSvc: ReportErrorsService\n\t) {\n\t\tsuper(\n\t\t\treportDataSvc,\n\t\t\treportViewSvc,\n\t\t\tmatchSvc,\n\t\t\trenderer,\n\t\t\thighlightSvc,\n\t\t\tstatisticsSvc,\n\t\t\ttemplatesSvc,\n\t\t\trealTimeResultsSvc,\n\t\t\treportErrorsSvc\n\t\t);\n\t}\n\n\ttoggleTooltip(tooltip: MatTooltip): void {\n\t\tthis.tooltipVisible = !this.tooltipVisible;\n\t\tthis.tooltipVisible ? tooltip.show() : tooltip.hide();\n\t}\n\n\tpublic isPlagiarismEnabled(): boolean {\n\t\treturn this.reportDataSvc.isPlagiarismEnabled();\n\t}\n\n\tpublic isAiSourceMatchEnabled(): boolean {\n\t\treturn this.reportDataSvc.isAiSourceMatchEnabled();\n\t}\n\n\tngOnInit(): void {\n\t\tthis.initOneToManyViewData();\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.onComponentDestroy();\n\t}\n}\n","<div style=\"display: flex; flex-direction: column; flex-grow: 1; overflow-y: auto; gap: 8px\">\n\t<ng-container *ngTemplateOutlet=\"customBannerSectionTemplate ?? null\"></ng-container>\n\n\t<!-- Report actions -->\n\t<copyleaks-report-actions-container\n\t\tclass=\"report-actions-container\"\n\t\t[showLoadingView]=\"isLoadingScanContent\"\n\t\t[companyLogo]=\"companyLogo\"></copyleaks-report-actions-container>\n\n\t<div class=\"middle-section\">\n\t\t<cr-assessment-tool-tab-score-panel\n\t\t\t*ngIf=\"\n\t\t\t\treportMode === EReportMode.AssessmentTool &&\n\t\t\t\tselectedTap !== EReportViewType.WritingFeedbackTabView &&\n\t\t\t\t!selectedCustomTabResultSectionContentTemplate\n\t\t\t\"\n\t\t\t[selectedTap]=\"selectedTap\"\n\t\t\t[plagarismScore]=\"plagiarismScore\"\n\t\t\t[aiScore]=\"reportStatistics?.aiScore ?? 0\"\n\t\t\t[writingFeedbackScore]=\"reportStatistics?.writingFeedbackOverallScore\"\n\t\t\t[totalWritingFeedbackIssues]=\"reportStatistics?.writingFeedbackOverallIssues\"\n\t\t\t[wordsTotal]=\"reportStatistics?.total ?? 0\"\n\t\t\t[identicalTotal]=\"reportStatistics?.identical ?? 0\"\n\t\t\t[minorChangesTotal]=\"reportStatistics?.minorChanges ?? 0\"\n\t\t\t[paraphrasedTotal]=\"reportStatistics?.relatedMeaning ?? 0\"\n\t\t\t[excludedTotal]=\"reportStatistics?.omittedWords ?? 0\"\n\t\t\t[showLoadingView]=\"isLoadingScanContent || isLoadingScanResults\"></cr-assessment-tool-tab-score-panel>\n\n\t\t<!-- Report alerts -->\n\t\t<ng-container *ngIf=\"!selectedCustomTabResultSectionContentTemplate\">\n\t\t\t<copyleaks-report-alerts-container\n\t\t\t\t*ngIf=\"\n\t\t\t\t\tviewMode === 'one-to-many' &&\n\t\t\t\t\talerts &&\n\t\t\t\t\talerts.length > 0 &&\n\t\t\t\t\t!isLoadingScanResults &&\n\t\t\t\t\treportTemplateMode !== ECustomResultsReportView.Full &&\n\t\t\t\t\treportTemplateMode !== ECustomResultsReportView.Partial &&\n\t\t\t\t\t!(selectedTap === EReportViewType.AIView && showAIPhrases)\n\t\t\t\t\"\n\t\t\t\t[alerts]=\"alerts\"\n\t\t\t\t[isMobile]=\"true\"\n\t\t\t\t[flexGrow]=\"20\"></copyleaks-report-alerts-container>\n\n\t\t\t<cr-readability-score\n\t\t\t\t*ngIf=\"viewMode === 'writing-feedback' && !showReadabilityLoadingView\"\n\t\t\t\t[statisticsInfo]=\"writingFeedback?.score?.statistics\"\n\t\t\t\t[readabilityInfo]=\"writingFeedback?.score?.readability\"\n\t\t\t\t[isMobile]=\"true\"></cr-readability-score>\n\t\t</ng-container>\n\n\t\t<!-- Report scan content section -->\n\t\t<div class=\"content-section\">\n\t\t\t<!-- Report scan content tabs -->\n\t\t\t<copyleaks-report-tabs-container\n\t\t\t\t*ngIf=\"\n\t\t\t\t\t(reportMode === EReportMode.WebReport && !(selectedTap === EReportViewType.AIView && showAIPhrases)) ||\n\t\t\t\t\t(reportMode === EReportMode.WebReport &&\n\t\t\t\t\t\tselectedTap === EReportViewType.AIView &&\n\t\t\t\t\t\t!isAiSourceMatchEnabled() &&\n\t\t\t\t\t\thideAISourceMatchUpgrade)\n\t\t\t\t\"\n\t\t\t\t[reportMode]=\"reportMode\"\n\t\t\t\t[hideAiTap]=\"hideAiTap\"\n\t\t\t\t[hidePlagarismTap]=\"hidePlagarismTap\"\n\t\t\t\t[forceWritingFeedbackTapHide]=\"hideWritingFeedback\"\n\t\t\t\t[hideWritingFeedbackTap]=\"hideWritingFeedbackTap\"\n\t\t\t\t[writingFeedbackScore]=\"reportStatistics?.writingFeedbackOverallScore\"\n\t\t\t\t[totalWritingFeedbackIssues]=\"reportStatistics?.writingFeedbackOverallIssues\"\n\t\t\t\t[selectedTap]=\"selectedTap\"\n\t\t\t\t[plagarismScore]=\"plagiarismScore\"\n\t\t\t\t[aiScore]=\"reportStatistics?.aiScore ?? 0\"\n\t\t\t\t[wordsTotal]=\"reportStatistics?.total ?? 0\"\n\t\t\t\t[identicalTotal]=\"reportStatistics?.identical ?? 0\"\n\t\t\t\t[minorChangesTotal]=\"reportStatistics?.minorChanges ?? 0\"\n\t\t\t\t[paraphrasedTotal]=\"reportStatistics?.relatedMeaning ?? 0\"\n\t\t\t\t[excludedTotal]=\"reportStatistics?.omittedWords ?? 0\"\n\t\t\t\t[showLoadingView]=\"\n\t\t\t\t\tselectedTap === EReportViewType.WritingFeedbackTabView\n\t\t\t\t\t\t? isLoadingScanCorrections\n\t\t\t\t\t\t: isLoadingScanContent || isLoadingScanResults\n\t\t\t\t\"\n\t\t\t\t[showDisabledProducts]=\"showDisabledProducts\"\n\t\t\t\t[loadingProgressPct]=\"loadingProgressPct\"\n\t\t\t\t[isMobile]=\"true\"></copyleaks-report-tabs-container>\n\n\t\t\t<div\n\t\t\t\t*ngIf=\"selectedTap === EReportViewType.AIView && !isAiSourceMatchEnabled() && hideAISourceMatchUpgrade\"\n\t\t\t\tclass=\"mobile-view-ai-logics-container\">\n\t\t\t\t<div class=\"title-container\">\n\t\t\t\t\t<span i18n>AI Logic</span>\n\t\t\t\t</div>\n\n\t\t\t\t<mat-icon\n\t\t\t\t\tfontSet=\"material-icons-round\"\n\t\t\t\t\tmatTooltip=\"Wonder how we spot AI content? Get a glimpse into our validation process.\"\n\t\t\t\t\t[matTooltipPosition]=\"'before'\"\n\t\t\t\t\t#tooltipResult=\"matTooltip\"\n\t\t\t\t\t[tabIndex]=\"0\"\n\t\t\t\t\tmatTooltipClass=\"web-report-mat-tooltip tooltip-contanier\"\n\t\t\t\t\t(click)=\"toggleTooltip(tooltipResult)\"\n\t\t\t\t\t(keyup.enter)=\"toggleTooltip(tooltipResult)\"\n\t\t\t\t\ti18n-matTooltip>\n\t\t\t\t\tinfo_outline\n\t\t\t\t</mat-icon>\n\t\t\t</div>\n\n\t\t\t<cr-ai-phrases-mobile-header\n\t\t\t\t*ngIf=\"selectedTap === EReportViewType.AIView && showAIPhrases\"\n\t\t\t\t[isLoading]=\"loadingExplainableAI || !reportStatistics || !reportCrawledVersion\"\n\t\t\t\t[lockedResults]=\"lockedExplainAIResults\"\n\t\t\t\t[aiScore]=\"reportStatistics?.aiScore ?? 0\"\n\t\t\t\t[wordsTotal]=\"reportStatistics?.total ?? 0\"\n\t\t\t\t[excludedTotal]=\"reportStatistics?.omittedWords ?? 0\"\n\t\t\t\t[ngStyle]=\"{\n\t\t\t\t\t'border-radius':\n\t\t\t\t\t\t!isPlagiarismEnabled() ||\n\t\t\t\t\t\t(selectedTap === EReportViewType.AIView && !isAiSourceMatchEnabled() && hideAISourceMatchUpgrade)\n\t\t\t\t\t\t\t? '0px'\n\t\t\t\t\t\t\t: null\n\t\t\t\t}\"\n\t\t\t\t[explainableAIResults]=\"explainableAI\"></cr-ai-phrases-mobile-header>\n\t\t\t<!-- Report scan content viewer -->\n\t\t\t<copyleaks-content-viewer-container\n\t\t\t\t*ngIf=\"\n\t\t\t\t\t!(loadingProgressPct < 100 && (!newScanResultsView || newScanResultsView.length === 0)) ||\n\t\t\t\t\t\t!reportEndpointConfig ||\n\t\t\t\t\t\t!isRealTimeView;\n\t\t\t\t\telse realTimeResultsLoading\n\t\t\t\t\"\n\t\t\t\t[isHtmlView]=\"isHtmlView\"\n\t\t\t\t[isAlertsView]=\"isAlertsMode\"\n\t\t\t\t[scanSource]=\"reportCrawledVersion\"\n\t\t\t\t[hideTextModeSwitch]=\"!isAiHtmlViewAvailable && selectedTap === EReportViewType.AIView\"\n\t\t\t\t[hasHtml]=\"\n\t\t\t\t\tviewMode === 'writing-feedback'\n\t\t\t\t\t\t? !!writingFeedback?.corrections?.html &&\n\t\t\t\t\t\t  !!writingFeedback?.corrections.html.chars &&\n\t\t\t\t\t\t  !!writingFeedback?.corrections.html.chars.groupIds &&\n\t\t\t\t\t\t  !!writingFeedback?.corrections.html.chars.lengths &&\n\t\t\t\t\t\t  !!writingFeedback?.corrections.html.chars.starts &&\n\t\t\t\t\t\t  !!writingFeedback?.corrections.html.chars.operationTexts &&\n\t\t\t\t\t\t  !!writingFeedback?.corrections.html.chars.types\n\t\t\t\t\t\t: !!reportCrawledVersion?.html?.value\n\t\t\t\t\"\n\t\t\t\t[contentTextMatches]=\"contentTextMatches\"\n\t\t\t\t[contentHtmlMatches]=\"reportMatches\"\n\t\t\t\t[currentPage]=\"currentPageSource\"\n\t\t\t\t[reportResponsive]=\"EResponsiveLayoutType.Mobile\"\n\t\t\t\t[hidePoweredBy]=\"true\"\n\t\t\t\t[isAIView]=\"selectedTap === EReportViewType.AIView\"\n\t\t\t\t[isMultiSelection]=\"selectedTap !== EReportViewType.AIView && isMultiSelection ? true : null\"\n\t\t\t\t[showOmittedWords]=\"showOmittedWords\"\n\t\t\t\t[isPartitalScan]=\"isPartitalScan\"\n\t\t\t\t[viewMode]=\"viewMode\"\n\t\t\t\t[submittedDocumentName]=\"scanResultsPreviews?.scannedDocument?.metadata?.filename\"\n\t\t\t\treportOrigin=\"original\"\n\t\t\t\t(iFrameMessageEvent)=\"onIFrameMessage($event)\"\n\t\t\t\t(viewChangeEvent)=\"onReportViewChange($event)\"\n\t\t\t\t(onShowOmittedWords)=\"onShowOmittedWords($event)\"></copyleaks-content-viewer-container>\n\n\t\t\t<ng-template #realTimeResultsLoading>\n\t\t\t\t<cr-real-time-result-section-animation></cr-real-time-result-section-animation>\n\t\t\t</ng-template>\n\t\t</div>\n\t</div>\n</div>\n\n<div style=\"display: flex; flex-direction: column; flex-shrink: 0; gap: 8px\">\n\t<ng-container *ngIf=\"!selectedCustomTabResultSectionContentTemplate; else customResultSectionRef\">\n\t\t<!-- Report results -->\n\t\t<copyleaks-content-ai-container\n\t\t\t*ngIf=\"selectedTap === EReportViewType.AIView\"\n\t\t\tclass=\"ai-results-container\"\n\t\t\t[isMobile]=\"true\"\n\t\t\t[isLoading]=\"loadingExplainableAI || !reportStatistics || !reportCrawledVersion || isLoadingScanResults\"\n\t\t\t[lockedResults]=\"lockedExplainAIResults\"\n\t\t\t[aiScore]=\"reportStatistics?.aiScore ?? 0\"\n\t\t\t[wordsTotal]=\"reportStatistics?.total ?? 0\"\n\t\t\t[excludedTotal]=\"reportStatistics?.omittedWords ?? 0\"\n\t\t\t[explainableAIResults]=\"explainableAI\"\n\t\t\t[showAIPhrases]=\"showAIPhrases\"\n\t\t\t[hidePlagarismTap]=\"hidePlagarismTap\"\n\t\t\t[aiSourceMatchResults]=\"aiSourceMatchResults\"></copyleaks-content-ai-container>\n\n\t\t<copyleaks-report-results-container\n\t\t\t*ngIf=\"\n\t\t\t\t((selectedTap !== EReportViewType.AIView && selectedTap !== EReportViewType.WritingFeedbackTabView) ||\n\t\t\t\t\treportTemplateMode === ECustomResultsReportView.Partial ||\n\t\t\t\t\treportTemplateMode === ECustomResultsReportView.Full) &&\n\t\t\t\tviewMode === 'one-to-many' &&\n\t\t\t\tselectedTap === EReportViewType.PlagiarismView\n\t\t\t\"\n\t\t\tclass=\"results-container\"\n\t\t\t[flexGrow]=\"15\"\n\t\t\t[allResults]=\"scanResultsView\"\n\t\t\t[newResults]=\"newScanResultsView\"\n\t\t\t[hideAiTap]=\"hideAiTap\"\n\t\t\t[resultsActions]=\"scanResultsActions\"\n\t\t\t[isMobile]=\"true\"\n\t\t\t[showLoadingView]=\"isLoadingScanResults || isLoadingScanCorrections\"\n\t\t\t[filterOptions]=\"filterOptions\"\n\t\t\t[reportViewMode]=\"reportTemplateMode\"\n\t\t\t[customResultsTemplate]=\"customResultsTemplate\"></copyleaks-report-results-container>\n\n\t\t<copyleaks-report-corrections-container\n\t\t\t*ngIf=\"viewMode === 'writing-feedback'\"\n\t\t\t[totalWritingFeedbackIssues]=\"allScanCorrectionsView?.length ?? 0\"\n\t\t\t[totalFilteredCorrections]=\"totalFilteredCorrections\"\n\t\t\t[writingFeedbackStats]=\"writingFeedbackStats\"\n\t\t\t[allWritingFeedbacksStats]=\"allWritingFeedbacksStats\"\n\t\t\t[allScanCorrectionsView]=\"allScanCorrectionsView\"\n\t\t\t[displayedScanCorrectionsView]=\"displayedScanCorrectionsView\"\n\t\t\t[correctionClicked]=\"correctionClicked\"\n\t\t\t[isMobile]=\"true\"\n\t\t\t[showLoadingView]=\"\n\t\t\t\tshowCorrectionsLoadingView || isLoadingScanCorrections\n\t\t\t\"></copyleaks-report-corrections-container>\n\n\t\t<!-- Powered by Copyleaks image section -->\n\t\t<div *ngIf=\"reportMode === EReportMode.WebReport\" class=\"powered-by-copyleaks-container\">\n\t\t\t<cr-powered-by></cr-powered-by>\n\t\t</div>\n\t</ng-container>\n\n\t<ng-template #customResultSectionRef>\n\t\t<div class=\"custom-tab-item-results-section\" [style.flex-grow]=\"'1'\">\n\t\t\t<ng-container *ngTemplateOutlet=\"selectedCustomTabResultSectionContentTemplate ?? null\"></ng-container>\n\t\t</div>\n\t</ng-template>\n\n\t<copyleaks-report-tabs-container\n\t\t*ngIf=\"reportMode === EReportMode.AssessmentTool\"\n\t\t[reportMode]=\"reportMode\"\n\t\t[hideAiTap]=\"hideAiTap\"\n\t\t[hidePlagarismTap]=\"hidePlagarismTap\"\n\t\t[forceWritingFeedbackTapHide]=\"hideWritingFeedback\"\n\t\t[hideWritingFeedbackTap]=\"hideWritingFeedbackTap\"\n\t\t[writingFeedbackScore]=\"reportStatistics?.writingFeedbackOverallScore\"\n\t\t[totalWritingFeedbackIssues]=\"reportStatistics?.writingFeedbackOverallIssues\"\n\t\t[selectedTap]=\"selectedTap\"\n\t\t[plagarismScore]=\"plagiarismScore\"\n\t\t[aiScore]=\"reportStatistics?.aiScore ?? 0\"\n\t\t[wordsTotal]=\"reportStatistics?.total ?? 0\"\n\t\t[identicalTotal]=\"reportStatistics?.identical ?? 0\"\n\t\t[minorChangesTotal]=\"reportStatistics?.minorChanges ?? 0\"\n\t\t[paraphrasedTotal]=\"reportStatistics?.relatedMeaning ?? 0\"\n\t\t[excludedTotal]=\"reportStatistics?.omittedWords ?? 0\"\n\t\t[showLoadingView]=\"\n\t\t\tselectedTap === EReportViewType.WritingFeedbackTabView\n\t\t\t\t? isLoadingScanCorrections\n\t\t\t\t: isLoadingScanContent || isLoadingScanResults\n\t\t\"\n\t\t[showDisabledProducts]=\"showDisabledProducts\"\n\t\t[loadingProgressPct]=\"loadingProgressPct\"\n\t\t[isMobile]=\"true\"></copyleaks-report-tabs-container>\n</div>\n","import { Renderer2 } from '@angular/core';\nimport { ReportDataService } from '../../../services/report-data.service';\nimport { Match, MatchType, ResultDetailItem, SlicedMatch } from '../../../models/report-matches.models';\nimport { ReportMatchesService } from '../../../services/report-matches.service';\nimport { ReportViewService } from '../../../services/report-view.service';\nimport { ReportMatchHighlightService } from '../../../services/report-match-highlight.service';\nimport { ReportStatisticsService } from '../../../services/report-statistics.service';\nimport { distinctUntilChanged, filter, takeUntil } from 'rxjs/operators';\nimport { EExcludeReason, EResponsiveLayoutType, EResultPreviewType } from '../../../enums/copyleaks-web-report.enums';\nimport { ICompleteResults, IScanSource } from '../../../models/report-data.models';\nimport { PostMessageEvent } from '../../../models/report-iframe-events.models';\nimport { untilDestroy } from '../../../utils/until-destroy';\nimport { ReportLayoutBaseComponent } from './report-layout-base.component';\nimport { IResultItem } from '../../containers/report-results-item-container/components/models/report-result-item.models';\nimport { Subject, combineLatest } from 'rxjs';\nimport { ReportNgTemplatesService } from '../../../services/report-ng-templates.service';\nimport { ReportRealtimeResultsService } from '../../../services/report-realtime-results.service';\nimport { ReportErrorsService } from '../../../services/report-errors.service';\n\nexport abstract class OneToOneReportLayoutBaseComponent extends ReportLayoutBaseComponent {\n\thideRightSection = false;\n\n\tnumberOfPagesSuspect: number;\n\tnumberOfPagesSource: number;\n\trerenderedSource: boolean = false;\n\trerenderedSuspect: boolean = false;\n\n\tsuspectCrawledVersion: IScanSource;\n\tsourceCrawledVersion: IScanSource;\n\n\tscanResultsPreviews: ICompleteResults | undefined;\n\n\tsuspectIframeHtml: string;\n\tsourceIframeHtml: string;\n\n\tsourceTextMatches: SlicedMatch[][];\n\tsuspectTextMatches: SlicedMatch[][];\n\n\tsourceHtmlMatches: Match[];\n\tsuspectHtmlMatches: Match[];\n\n\tcurrentPageSuspect: number;\n\tcurrentPageSource: number;\n\tresultData: ResultDetailItem;\n\tresultItem: IResultItem | null = null;\n\n\tEResponsiveLayoutType = EResponsiveLayoutType;\n\n\tisLoadingSourceContent: boolean = false;\n\tisLoadingSuspectContent: boolean = false;\n\tisLoadingResultItem: boolean = false;\n\n\tisOthersFile: boolean;\n\thasNonIdenticalMatchWords: boolean;\n\thideMaskedContentDisclaimer: { flag: boolean } = {\n\t\tflag: false,\n\t};\n\n\tshowOmittedWords: boolean;\n\tisPartitalScan: boolean;\n\n\t// Subject for destroying all the subscriptions in base component\n\tprivate unsubscribe$ = new Subject();\n\n\tget isLoadingScanContent(): boolean {\n\t\treturn (!this.suspectIframeHtml && !this.suspectTextMatches) || (!this.sourceIframeHtml && !this.sourceTextMatches);\n\t}\n\n\tget numberOfWords(): number | undefined {\n\t\treturn this.reportDataSvc.scanResultsPreviews?.scannedDocument?.totalWords;\n\t}\n\n\tconstructor(\n\t\treportDataSvc: ReportDataService,\n\t\treportViewSvc: ReportViewService,\n\t\tmatchSvc: ReportMatchesService,\n\t\trenderer: Renderer2,\n\t\thighlightSvc: ReportMatchHighlightService,\n\t\tstatisticsSvc: ReportStatisticsService,\n\t\ttemplatesSvc: ReportNgTemplatesService,\n\t\trealTimeResultsSvc: ReportRealtimeResultsService,\n\t\treportErrorsSvc: ReportErrorsService\n\t) {\n\t\tsuper(\n\t\t\treportDataSvc,\n\t\t\treportViewSvc,\n\t\t\tmatchSvc,\n\t\t\trenderer,\n\t\t\thighlightSvc,\n\t\t\tstatisticsSvc,\n\t\t\ttemplatesSvc,\n\t\t\trealTimeResultsSvc,\n\t\t\treportErrorsSvc\n\t\t);\n\t}\n\n\tinitOneToOneViewData(): void {\n\t\tthis.unsubscribe$ = new Subject();\n\n\t\tthis.reportDataSvc.crawledVersion$.pipe(untilDestroy(this), takeUntil(this.unsubscribe$)).subscribe(data => {\n\t\t\tif (data) {\n\t\t\t\tthis.sourceCrawledVersion = data;\n\t\t\t\tthis.numberOfPagesSource = data.text?.pages?.startPosition?.length ?? 1;\n\t\t\t\tif (\n\t\t\t\t\t(this.sourceCrawledVersion?.html?.exclude?.reasons?.filter(r => r === EExcludeReason.PartialScan).length >\n\t\t\t\t\t\t0 ||\n\t\t\t\t\t\tthis.sourceCrawledVersion?.text?.exclude?.reasons?.filter(r => r === EExcludeReason.PartialScan).length >\n\t\t\t\t\t\t\t0) &&\n\t\t\t\t\t(!this.isPartitalScan || !this.showOmittedWords)\n\t\t\t\t) {\n\t\t\t\t\tthis.matchSvc.showOmittedWords$.next(true);\n\t\t\t\t\tthis.isPartitalScan = true;\n\t\t\t\t\tthis.showOmittedWords = true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis.matchSvc.suspectTextMatches$.pipe(untilDestroy(this), takeUntil(this.unsubscribe$)).subscribe(data => {\n\t\t\tif (data) {\n\t\t\t\tthis.suspectTextMatches = data;\n\t\t\t\tthis.hasNonIdenticalMatchWords =\n\t\t\t\t\tdata\n\t\t\t\t\t\t.flat()\n\t\t\t\t\t\t?.filter(\n\t\t\t\t\t\t\tmatch =>\n\t\t\t\t\t\t\t\tmatch?.match?.type === MatchType.none ||\n\t\t\t\t\t\t\t\tmatch?.match?.type === MatchType.minorChanges ||\n\t\t\t\t\t\t\t\tmatch?.match?.type === MatchType.relatedMeaning\n\t\t\t\t\t\t)?.length > 0;\n\t\t\t}\n\t\t});\n\n\t\tthis.matchSvc.sourceHtmlMatches$.pipe(untilDestroy(this), takeUntil(this.unsubscribe$)).subscribe(data => {\n\t\t\tif (data) {\n\t\t\t\tthis.sourceHtmlMatches = data;\n\t\t\t}\n\t\t});\n\n\t\tthis.matchSvc.sourceTextMatches$.pipe(untilDestroy(this), takeUntil(this.unsubscribe$)).subscribe(data => {\n\t\t\tif (data) this.sourceTextMatches = data;\n\t\t});\n\n\t\tcombineLatest([\n\t\t\tthis.reportDataSvc.scanResultsPreviews$.pipe(distinctUntilChanged()),\n\t\t\tthis.reportViewSvc.selectedResult$.pipe(distinctUntilChanged()),\n\t\t])\n\t\t\t.pipe(untilDestroy(this), takeUntil(this.unsubscribe$))\n\t\t\t.subscribe(([previews, resultData]) => {\n\t\t\t\tthis.scanResultsPreviews = previews;\n\t\t\t\tif (this.reportViewSvc.progress$.value != 100 && resultData) {\n\t\t\t\t\tthis.numberOfPagesSuspect = resultData.result?.text?.pages?.startPosition?.length ?? 1;\n\t\t\t\t\tthis.resultData = resultData;\n\t\t\t\t\tthis.resultItem = this.reportDataSvc.newResults?.find(r => r.resultDetails?.id === resultData.id) ?? null;\n\n\t\t\t\t\tthis.isOthersFile =\n\t\t\t\t\t\tthis.resultItem?.resultPreview?.type === EResultPreviewType.Database &&\n\t\t\t\t\t\t!this.resultItem?.resultPreview?.scanId;\n\n\t\t\t\t\tthis.matchSvc.suspectHtmlMatches$.pipe(untilDestroy(this), takeUntil(this.unsubscribe$)).subscribe(data => {\n\t\t\t\t\t\tif (!resultData?.result?.html.value) return;\n\t\t\t\t\t\tif (data) {\n\t\t\t\t\t\t\tthis.suspectHtmlMatches = data;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.isLoadingResultItem = resultData === null || previews === undefined;\n\n\t\t\t\tif (resultData && previews) {\n\t\t\t\t\tthis.numberOfPagesSuspect = resultData.result?.text?.pages?.startPosition?.length ?? 1;\n\t\t\t\t\tthis.resultData = resultData;\n\t\t\t\t\tconst allResults = [\n\t\t\t\t\t\t...(previews.results?.internet ?? []),\n\t\t\t\t\t\t...(previews.results?.database ?? []),\n\t\t\t\t\t\t...(previews.results?.batch ?? []),\n\t\t\t\t\t\t...(previews.results?.repositories ?? []),\n\t\t\t\t\t];\n\t\t\t\t\tthis.resultItem = {\n\t\t\t\t\t\tresultPreview: allResults.find(r => r.id === resultData.id),\n\t\t\t\t\t\tresultDetails: resultData,\n\t\t\t\t\t\tiStatisticsResult: resultData?.result?.statistics,\n\t\t\t\t\t\tmetadataSource: {\n\t\t\t\t\t\t\twords: this.reportDataSvc.crawledVersion?.metadata.words ?? 0,\n\t\t\t\t\t\t\texcluded: this.reportDataSvc.crawledVersion?.metadata.excluded ?? 0,\n\t\t\t\t\t\t},\n\t\t\t\t\t} as IResultItem;\n\n\t\t\t\t\tthis.isOthersFile =\n\t\t\t\t\t\tthis.resultItem?.resultPreview?.type === EResultPreviewType.Database &&\n\t\t\t\t\t\t!this.resultItem?.resultPreview?.scanId;\n\t\t\t\t}\n\n\t\t\t\tthis.matchSvc.suspectHtmlMatches$.pipe(untilDestroy(this), takeUntil(this.unsubscribe$)).subscribe(data => {\n\t\t\t\t\tif (!resultData?.result?.html.value) return;\n\t\t\t\t\tif (data) {\n\t\t\t\t\t\tthis.suspectHtmlMatches = data;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\n\t\tthis.reportViewSvc.reportViewMode$\n\t\t\t.pipe(\n\t\t\t\tfilter(data => data.viewMode === 'one-to-one'),\n\t\t\t\tuntilDestroy(this),\n\t\t\t\ttakeUntil(this.unsubscribe$)\n\t\t\t)\n\t\t\t.subscribe(data => {\n\t\t\t\tif (!data) return;\n\t\t\t\tthis.isHtmlView = data.isHtmlView;\n\t\t\t\tthis.currentPageSource = data.sourcePageIndex;\n\t\t\t\tif (data.suspectPageIndex) this.currentPageSuspect = data.suspectPageIndex;\n\t\t\t\tthis.reportDataSvc.scanResultsDetails$\n\t\t\t\t\t.pipe(untilDestroy(this), takeUntil(this.unsubscribe$))\n\t\t\t\t\t.subscribe(results => {\n\t\t\t\t\t\tif (!results) return;\n\t\t\t\t\t\tconst foundSuspect = results?.find(result => result.id === data.suspectId);\n\t\t\t\t\t\tif (foundSuspect) this.reportViewSvc.selectedResult$.next(foundSuspect);\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t// if the result is not found, then change the view to one-to-many\n\t\t\t\t\t\t\tthis.reportViewSvc.reportViewMode$.next({\n\t\t\t\t\t\t\t\tisHtmlView: data.isHtmlView,\n\t\t\t\t\t\t\t\tviewMode: 'one-to-many',\n\t\t\t\t\t\t\t\tsourcePageIndex: data.sourcePageIndex,\n\t\t\t\t\t\t\t\tsuspectPageIndex: data.suspectPageIndex,\n\t\t\t\t\t\t\t\tsuspectId: undefined,\n\t\t\t\t\t\t\t\t...this.reportViewSvc.reportViewMode,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t});\n\n\t\tthis.matchSvc.showOmittedWords$.pipe(untilDestroy(this)).subscribe(data => {\n\t\t\tthis.showOmittedWords = data;\n\t\t});\n\n\t\tthis._initMaskedContentFlags();\n\t}\n\n\tonSourceIFrameMessage(message: PostMessageEvent) {\n\t\tswitch (message.type) {\n\t\t\tcase 'match-select':\n\t\t\t\tthis.highlightSvc.setSourceHtmlMatch(message.index !== -1 ? this.sourceHtmlMatches[message.index] : null);\n\t\t\t\tbreak;\n\t\t\tcase 'upgrade-plan':\n\t\t\t\tconsole.log(message);\n\t\t\t\tbreak;\n\t\t\tcase 'match-warn':\n\t\t\t\tconsole.warn('match not found');\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tconsole.error('unknown event', message);\n\t\t}\n\t}\n\n\tonSuspectIFrameMessage(message: PostMessageEvent) {\n\t\tswitch (message.type) {\n\t\t\tcase 'match-select':\n\t\t\t\tthis.highlightSvc.setSuspectHtmlMatch(message.index !== -1 ? this.suspectHtmlMatches[message.index] : null);\n\t\t\t\tbreak;\n\t\t\tcase 'upgrade-plan':\n\t\t\t\tconsole.log(message);\n\t\t\t\tbreak;\n\t\t\tcase 'match-warn':\n\t\t\t\tconsole.warn('match not found');\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tconsole.error('unknown event', message);\n\t\t}\n\t}\n\n\topenDisclaimer() {\n\t\tthis.hideMaskedContentDisclaimer = {\n\t\t\tflag: false,\n\t\t};\n\t}\n\n\tprivate _initMaskedContentFlags() {\n\t\ttry {\n\t\t\tconst hideMaskedContentDisclaimer = JSON.parse(localStorage.getItem('hideMaskedContentDisclaimer')) as {\n\t\t\t\tflag: boolean;\n\t\t\t};\n\t\t\tif (hideMaskedContentDisclaimer) this.hideMaskedContentDisclaimer = hideMaskedContentDisclaimer;\n\t\t} catch (error) {\n\t\t\tconsole.error('Error getting disclaimer hide flag from local storage: ', error);\n\t\t}\n\t}\n\n\tprotected onComponentDestroy(): void {\n\t\tthis.unsubscribe$.next();\n\t\tthis.unsubscribe$.complete();\n\t}\n}\n","import { Component, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\nimport { ReportDataService } from '../../../../services/report-data.service';\nimport { ReportMatchesService } from '../../../../services/report-matches.service';\nimport { ReportViewService } from '../../../../services/report-view.service';\nimport { ReportMatchHighlightService } from '../../../../services/report-match-highlight.service';\nimport { ReportStatisticsService } from '../../../../services/report-statistics.service';\nimport { OneToOneReportLayoutBaseComponent } from '../../base/report-layout-one-to-one-base.component';\nimport { ReportNgTemplatesService } from '../../../../services/report-ng-templates.service';\nimport { ReportRealtimeResultsService } from '../../../../services/report-realtime-results.service';\nimport { EReportMode } from '../../../../enums/copyleaks-web-report.enums';\nimport { ReportErrorsService } from '../../../../services/report-errors.service';\n\n@Component({\n\tselector: 'copyleaks-one-to-one-report-layout-desktop',\n\ttemplateUrl: './one-to-one-report-layout-desktop.component.html',\n\tstyleUrls: ['./one-to-one-report-layout-desktop.component.scss'],\n\tstandalone: false,\n})\nexport class OneToOneReportLayoutDesktopComponent\n\textends OneToOneReportLayoutBaseComponent\n\timplements OnInit, OnDestroy\n{\n\t@Input() reportMode: EReportMode;\n\tEReportMode = EReportMode;\n\n\tconstructor(\n\t\treportDataSvc: ReportDataService,\n\t\treportViewSvc: ReportViewService,\n\t\tmatchSvc: ReportMatchesService,\n\t\trenderer: Renderer2,\n\t\thighlightSvc: ReportMatchHighlightService,\n\t\tstatisticsSvc: ReportStatisticsService,\n\t\ttemplatesSvc: ReportNgTemplatesService,\n\t\trealTimeResultsSvc: ReportRealtimeResultsService,\n\t\treportErrorsSvc: ReportErrorsService\n\t) {\n\t\tsuper(\n\t\t\treportDataSvc,\n\t\t\treportViewSvc,\n\t\t\tmatchSvc,\n\t\t\trenderer,\n\t\t\thighlightSvc,\n\t\t\tstatisticsSvc,\n\t\t\ttemplatesSvc,\n\t\t\trealTimeResultsSvc,\n\t\t\treportErrorsSvc\n\t\t);\n\t}\n\n\tngOnInit(): void {\n\t\tthis.initOneToOneViewData();\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.onComponentDestroy();\n\t}\n}\n","<!-- Left side section -->\n<div class=\"left-section\">\n\t<!--Report scan content viewer -->\n\t<copyleaks-content-viewer-container\n\t\t[isHtmlView]=\"!!sourceCrawledVersion?.html?.value ? isHtmlView : false\"\n\t\t[scanSource]=\"sourceCrawledVersion\"\n\t\t[contentTextMatches]=\"sourceTextMatches\"\n\t\t[contentHtmlMatches]=\"sourceHtmlMatches\"\n\t\t[currentPage]=\"currentPageSource\"\n\t\t[reportResponsive]=\"EResponsiveLayoutType.Desktop\"\n\t\t[showOmittedWords]=\"showOmittedWords\"\n\t\t[isPartitalScan]=\"isPartitalScan\"\n\t\tviewMode=\"one-to-one\"\n\t\treportOrigin=\"source\"\n\t\t[hasHtml]=\"!!sourceCrawledVersion?.html?.value\"\n\t\t[submittedDocumentName]=\"scanResultsPreviews?.scannedDocument?.metadata?.filename\"\n\t\t[hidePoweredBy]=\"reportMode === EReportMode.AssessmentTool\"\n\t\t(iFrameMessageEvent)=\"onSourceIFrameMessage($event)\"\n\t\t(viewChangeEvent)=\"onReportViewChange($event)\"\n\t\t(onShowOmittedWords)=\"onShowOmittedWords($event)\"></copyleaks-content-viewer-container>\n</div>\n\n<!-- Right side section-->\n<div *ngIf=\"!hideRightSection\" class=\"right-section\">\n\t<!-- <div class=\"close-btn\" (click)=\"hideRightSection = !hideRightSection\">X</div> -->\n\n\t<!-- Report result item section -->\n\t<copyleaks-report-results-item-container\n\t\tstyle=\"display: flex; flex-direction: column; flex-shrink: 0; gap: 8px\"\n\t\t[isMobile]=\"false\"\n\t\t[resultItem]=\"resultItem\"\n\t\t[reportResponsive]=\"EResponsiveLayoutType.Desktop\"\n\t\t[showLoadingView]=\"isLoadingResultItem\"\n\t\t[hasMaskedContent]=\"isOthersFile && hasNonIdenticalMatchWords\"\n\t\t[hideMaskedContentDisclaimer]=\"hideMaskedContentDisclaimer\"></copyleaks-report-results-item-container>\n\n\t<!-- Report result content viewer -->\n\t<copyleaks-content-viewer-container\n\t\tstyle=\"display: flex; flex-direction: column; flex-grow: 1; overflow-y: auto; gap: 8px\"\n\t\t[flexGrow]=\"80\"\n\t\t[isHtmlView]=\"!!suspectHtmlMatches ? isHtmlView : false\"\n\t\t[resultData]=\"resultData\"\n\t\t[contentTextMatches]=\"suspectTextMatches\"\n\t\t[contentHtmlMatches]=\"suspectHtmlMatches\"\n\t\t[currentPage]=\"currentPageSuspect\"\n\t\t[reportResponsive]=\"EResponsiveLayoutType.Desktop\"\n\t\t[hidePoweredBy]=\"true\"\n\t\t[hasMaskedContent]=\"isOthersFile && hasNonIdenticalMatchWords\"\n\t\t[hasHtml]=\"!!suspectHtmlMatches\"\n\t\tviewMode=\"one-to-one\"\n\t\treportOrigin=\"suspect\"\n\t\t(onOpenDisclaimer)=\"openDisclaimer()\"\n\t\t(iFrameMessageEvent)=\"onSuspectIFrameMessage($event)\"\n\t\t(viewChangeEvent)=\"onReportViewChange($event)\"></copyleaks-content-viewer-container>\n</div>\n","import { Component, ElementRef, HostListener, Input, OnDestroy, OnInit, Renderer2, ViewChild } from '@angular/core';\nimport { ReportDataService } from '../../../../services/report-data.service';\nimport { ReportMatchHighlightService } from '../../../../services/report-match-highlight.service';\nimport { ReportMatchesService } from '../../../../services/report-matches.service';\nimport { ReportViewService } from '../../../../services/report-view.service';\nimport { ReportStatisticsService } from '../../../../services/report-statistics.service';\nimport { OneToOneReportLayoutBaseComponent } from '../../base/report-layout-one-to-one-base.component';\nimport { ReportNgTemplatesService } from '../../../../services/report-ng-templates.service';\nimport { ReportRealtimeResultsService } from '../../../../services/report-realtime-results.service';\nimport { EReportMode } from '../../../../enums/copyleaks-web-report.enums';\nimport { ReportErrorsService } from '../../../../services/report-errors.service';\n\n@Component({\n\tselector: 'copyleaks-one-to-one-report-layout-mobile',\n\ttemplateUrl: './one-to-one-report-layout-mobile.component.html',\n\tstyleUrls: ['./one-to-one-report-layout-mobile.component.scss'],\n\tstandalone: false,\n})\nexport class OneToOneReportLayoutMobileComponent\n\textends OneToOneReportLayoutBaseComponent\n\timplements OnInit, OnDestroy\n{\n\t@ViewChild('contentViewersContainer', { static: false }) contentViewersContainer: ElementRef;\n\n\t@Input() reportMode: EReportMode;\n\tEReportMode = EReportMode;\n\n\ttopHeightPercent: number = 40; // Initial height as a percentage\n\tbottomHeightPercent: number = 40; // Initial height as a percentage\n\tprivate dragging = false;\n\n\tconstructor(\n\t\treportDataSvc: ReportDataService,\n\t\treportViewSvc: ReportViewService,\n\t\tmatchSvc: ReportMatchesService,\n\t\trenderer: Renderer2,\n\t\thighlightSvc: ReportMatchHighlightService,\n\t\tstatisticsSvc: ReportStatisticsService,\n\t\ttemplatesSvc: ReportNgTemplatesService,\n\t\trealTimeResultsSvc: ReportRealtimeResultsService,\n\t\treportErrorsSvc: ReportErrorsService\n\t) {\n\t\tsuper(\n\t\t\treportDataSvc,\n\t\t\treportViewSvc,\n\t\t\tmatchSvc,\n\t\t\trenderer,\n\t\t\thighlightSvc,\n\t\t\tstatisticsSvc,\n\t\t\ttemplatesSvc,\n\t\t\trealTimeResultsSvc,\n\t\t\treportErrorsSvc\n\t\t);\n\t}\n\n\tngOnInit(): void {\n\t\tthis.initOneToOneViewData();\n\t}\n\n\tngAfterViewInit(): void {}\n\n\tstartDragging(event: MouseEvent | TouchEvent): void {\n\t\tthis.dragging = true;\n\t\tevent.preventDefault(); // Prevent text selection during drag\n\t}\n\n\t@HostListener('window:mousemove', ['$event'])\n\t@HostListener('window:touchmove', ['$event'])\n\tonMouseMove(event: MouseEvent | TouchEvent): void {\n\t\tif (this.dragging) {\n\t\t\tlet clientY;\n\t\t\tif (event instanceof MouseEvent) {\n\t\t\t\tclientY = event.clientY;\n\t\t\t} else {\n\t\t\t\tclientY = event.touches[0].clientY;\n\t\t\t}\n\n\t\t\tconst containerTop = this.contentViewersContainer.nativeElement.getBoundingClientRect().top;\n\t\t\tconst containerHeight = this.contentViewersContainer.nativeElement.clientHeight;\n\t\t\tconst newTopHeight = clientY - containerTop;\n\t\t\tconst newBottomHeight = containerHeight - newTopHeight;\n\n\t\t\t// Prevent the heights from being too small or negative\n\t\t\tif (newTopHeight > 60 && newBottomHeight > 60) {\n\t\t\t\tthis.topHeightPercent = (newTopHeight / containerHeight) * 100 * 0.4;\n\t\t\t\tthis.bottomHeightPercent = (newBottomHeight / containerHeight) * 100 * 0.4;\n\t\t\t}\n\t\t}\n\t}\n\n\t@HostListener('window:mouseup')\n\t@HostListener('window:touchend')\n\t@HostListener('window:touchcancel')\n\tonMouseUp(): void {\n\t\tthis.dragging = false;\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.onComponentDestroy();\n\t}\n}\n","<!-- Report actions section -->\n<copyleaks-report-actions-container\n\tclass=\"report-actions-container\"\n\t[showLoadingView]=\"isLoadingScanContent\"></copyleaks-report-actions-container>\n\n<div class=\"middle-section\">\n\t<!-- Report result item section -->\n\t<copyleaks-report-results-item-container\n\t\tstyle=\"display: flex; flex-direction: column; flex-shrink: 0; gap: 8px\"\n\t\t[resultItem]=\"resultItem\"\n\t\t[reportMode]=\"reportMode\"\n\t\t[reportResponsive]=\"EResponsiveLayoutType.Mobile\"\n\t\t[showLoadingView]=\"isLoadingResultItem\"\n\t\t[flexGrow]=\"20\"\n\t\t[isMobile]=\"true\"\n\t\t[hasMaskedContent]=\"isOthersFile && hasNonIdenticalMatchWords\"\n\t\t[hideMaskedContentDisclaimer]=\"hideMaskedContentDisclaimer\"></copyleaks-report-results-item-container>\n\n\t<div\n\t\t#contentViewersContainer\n\t\tstyle=\"display: flex; flex-direction: column; flex-grow: 1; overflow-y: hidden; gap: 8px\">\n\t\t<!--Report scan content viewer -->\n\t\t<copyleaks-content-viewer-container\n\t\t\t[style.height.%]=\"topHeightPercent\"\n\t\t\t[style.flex-grow]=\"topHeightPercent\"\n\t\t\t[isHtmlView]=\"!!sourceCrawledVersion?.html?.value ? isHtmlView : false\"\n\t\t\t[scanSource]=\"sourceCrawledVersion\"\n\t\t\t[contentTextMatches]=\"sourceTextMatches\"\n\t\t\t[contentHtmlMatches]=\"sourceHtmlMatches\"\n\t\t\t[currentPage]=\"currentPageSource\"\n\t\t\t[reportResponsive]=\"EResponsiveLayoutType.Mobile\"\n\t\t\t[showOmittedWords]=\"showOmittedWords\"\n\t\t\t[isPartitalScan]=\"isPartitalScan\"\n\t\t\tviewMode=\"one-to-one\"\n\t\t\treportOrigin=\"source\"\n\t\t\t[hasHtml]=\"!!sourceCrawledVersion?.html?.value\"\n\t\t\t[submittedDocumentName]=\"scanResultsPreviews?.scannedDocument?.metadata?.filename\"\n\t\t\t[hidePoweredBy]=\"true\"\n\t\t\t(iFrameMessageEvent)=\"onSourceIFrameMessage($event)\"\n\t\t\t(viewChangeEvent)=\"onReportViewChange($event)\"\n\t\t\t(onShowOmittedWords)=\"onShowOmittedWords($event)\"></copyleaks-content-viewer-container>\n\n\t\t<div class=\"expand-icon-container\">\n\t\t\t<div class=\"line\"></div>\n\t\t\t<svg\n\t\t\t\t(mousedown)=\"startDragging($event)\"\n\t\t\t\t(touchstart)=\"startDragging($event)\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth=\"18\"\n\t\t\t\theight=\"18\"\n\t\t\t\tviewBox=\"0 0 18 18\"\n\t\t\t\tfill=\"none\">\n\t\t\t\t<g clip-path=\"url(#clip0_4678_10271)\">\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M14.25 6.75H3.75C3.3375 6.75 3 7.0875 3 7.5C3 7.9125 3.3375 8.25 3.75 8.25H14.25C14.6625 8.25 15 7.9125 15 7.5C15 7.0875 14.6625 6.75 14.25 6.75ZM3.75 11.25H14.25C14.6625 11.25 15 10.9125 15 10.5C15 10.0875 14.6625 9.75 14.25 9.75H3.75C3.3375 9.75 3 10.0875 3 10.5C3 10.9125 3.3375 11.25 3.75 11.25Z\"\n\t\t\t\t\t\tfill=\"#0B163E\" />\n\t\t\t\t</g>\n\t\t\t\t<defs>\n\t\t\t\t\t<clipPath id=\"clip0_4678_10271\">\n\t\t\t\t\t\t<rect width=\"18\" height=\"18\" fill=\"white\" />\n\t\t\t\t\t</clipPath>\n\t\t\t\t</defs>\n\t\t\t</svg>\n\t\t\t<div class=\"line\"></div>\n\t\t</div>\n\n\t\t<!-- Report result content viewer -->\n\t\t<copyleaks-content-viewer-container\n\t\t\t[style.height.%]=\"bottomHeightPercent\"\n\t\t\t[style.flex-grow]=\"bottomHeightPercent\"\n\t\t\t[isHtmlView]=\"isHtmlView\"\n\t\t\t[contentHtmlMatches]=\"suspectHtmlMatches\"\n\t\t\t[contentTextMatches]=\"suspectTextMatches\"\n\t\t\t[resultData]=\"resultData\"\n\t\t\t[currentPage]=\"currentPageSuspect\"\n\t\t\t[reportResponsive]=\"EResponsiveLayoutType.Mobile\"\n\t\t\t[hidePoweredBy]=\"true\"\n\t\t\t[hasMaskedContent]=\"isOthersFile && hasNonIdenticalMatchWords\"\n\t\t\tviewMode=\"one-to-one\"\n\t\t\t[hasHtml]=\"!!suspectHtmlMatches\"\n\t\t\treportOrigin=\"suspect\"\n\t\t\t(onOpenDisclaimer)=\"openDisclaimer()\"\n\t\t\t(iFrameMessageEvent)=\"onSuspectIFrameMessage($event)\"\n\t\t\t(viewChangeEvent)=\"onReportViewChange($event)\"></copyleaks-content-viewer-container>\n\t</div>\n</div>\n\n<!-- Powered by Copyleaks image section -->\n<div *ngIf=\"reportMode === EReportMode.WebReport\" class=\"powered-by-copyleaks-container\">\n\t<cr-powered-by></cr-powered-by>\n</div>\n","import { Component, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\nimport { ReportDataService } from '../../../../services/report-data.service';\nimport { ReportMatchHighlightService } from '../../../../services/report-match-highlight.service';\nimport { ReportMatchesService } from '../../../../services/report-matches.service';\nimport { ReportStatisticsService } from '../../../../services/report-statistics.service';\nimport { ReportViewService } from '../../../../services/report-view.service';\nimport { OneToManyReportLayoutBaseComponent } from '../../base/report-layout-one-to-many-base.component';\nimport { ReportNgTemplatesService } from '../../../../services/report-ng-templates.service';\nimport { ReportRealtimeResultsService } from '../../../../services/report-realtime-results.service';\nimport { ReportErrorsService } from '../../../../services/report-errors.service';\n\n@Component({\n\tselector: 'copyleaks-only-ai-report-layout-desktop',\n\ttemplateUrl: './only-ai-report-layout-desktop.component.html',\n\tstyleUrls: ['./only-ai-report-layout-desktop.component.scss'],\n\tstandalone: false,\n})\nexport class OnlyAiReportLayoutDesktopComponent\n\textends OneToManyReportLayoutBaseComponent\n\timplements OnInit, OnDestroy\n{\n\t@Input() companyLogo: string = null;\n\n\t@Input() hideWritingFeedback: boolean = false;\n\n\tconstructor(\n\t\treportDataSvc: ReportDataService,\n\t\treportViewSvc: ReportViewService,\n\t\tmatchSvc: ReportMatchesService,\n\t\trenderer: Renderer2,\n\t\thighlightSvc: ReportMatchHighlightService,\n\t\tstatisticsSvc: ReportStatisticsService,\n\t\ttemplatesSvc: ReportNgTemplatesService,\n\t\trealTimeResultsSvc: ReportRealtimeResultsService,\n\t\treportErrorsSvc: ReportErrorsService\n\t) {\n\t\tsuper(\n\t\t\treportDataSvc,\n\t\t\treportViewSvc,\n\t\t\tmatchSvc,\n\t\t\trenderer,\n\t\t\thighlightSvc,\n\t\t\tstatisticsSvc,\n\t\t\ttemplatesSvc,\n\t\t\trealTimeResultsSvc,\n\t\t\treportErrorsSvc\n\t\t);\n\t}\n\n\tngOnInit(): void {\n\t\tthis.initOneToManyViewData();\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.onComponentDestroy();\n\t}\n}\n","<copyleaks-report-actions-container [showLoadingView]=\"isLoadingScanContent\"></copyleaks-report-actions-container>\n\n<copyleaks-report-tabs-container\n\t[hideAiTap]=\"hideAiTap\"\n\t[hidePlagarismTap]=\"hidePlagarismTap\"\n\t[selectedTap]=\"EReportViewType.AIView\"\n\t[forceWritingFeedbackTapHide]=\"hideWritingFeedback\"\n\t[hideWritingFeedbackTap]=\"hideWritingFeedbackTap\"\n\t[writingFeedbackScore]=\"reportStatistics?.writingFeedbackOverallScore\"\n\t[totalWritingFeedbackIssues]=\"reportStatistics?.writingFeedbackOverallIssues\"\n\t[plagarismScore]=\"plagiarismScore\"\n\t[showDisabledProducts]=\"showDisabledProducts\"\n\t[aiScore]=\"reportStatistics?.aiScore ?? 0\"\n\t[wordsTotal]=\"reportStatistics?.total ?? 0\"\n\t[showLoadingView]=\"isLoadingScanContent\"\n\t[loadingProgressPct]=\"loadingProgressPct\"\n\t[companyLogo]=\"companyLogo\"></copyleaks-report-tabs-container>\n\n<!-- Report content container  -->\n<copyleaks-content-viewer-container\n\t[isHtmlView]=\"isHtmlView\"\n\t[isAlertsView]=\"isAlertsMode\"\n\t[scanSource]=\"reportCrawledVersion\"\n\t[contentTextMatches]=\"contentTextMatches\"\n\t[contentHtmlMatches]=\"reportMatches\"\n\t[hideTextModeSwitch]=\"!isAiHtmlViewAvailable && selectedTap === EReportViewType.AIView\"\n\t[currentPage]=\"currentPageSource\"\n\t[reportResponsive]=\"EResponsiveLayoutType.Desktop\"\n\t[authorAlert]=\"authorAlert\"\n\t[isAIView]=\"selectedTap === EReportViewType.AIView\"\n\t[isPartitalScan]=\"isPartitalScan\"\n\tviewMode=\"one-to-many\"\n\treportOrigin=\"original\"\n\t[submittedDocumentName]=\"scanResultsPreviews?.scannedDocument?.metadata?.filename\"\n\t[hasHtml]=\"\n\t\tviewMode === 'writing-feedback'\n\t\t\t? !!writingFeedback?.corrections?.html &&\n\t\t\t  !!writingFeedback?.corrections.html.chars &&\n\t\t\t  !!writingFeedback?.corrections.html.chars.groupIds &&\n\t\t\t  !!writingFeedback?.corrections.html.chars.lengths &&\n\t\t\t  !!writingFeedback?.corrections.html.chars.starts &&\n\t\t\t  !!writingFeedback?.corrections.html.chars.operationTexts &&\n\t\t\t  !!writingFeedback?.corrections.html.chars.types\n\t\t\t: !!reportCrawledVersion?.html?.value\n\t\"\n\t[isMultiSelection]=\"selectedTap !== EReportViewType.AIView && isMultiSelection ? true : null\"\n\t[showOmittedWords]=\"showOmittedWords\"\n\t(iFrameMessageEvent)=\"onIFrameMessage($event)\"\n\t(viewChangeEvent)=\"onReportViewChange($event)\"\n\t(onShowOmittedWords)=\"onShowOmittedWords($event)\"></copyleaks-content-viewer-container>\n","import { Component, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\nimport { ReportDataService } from '../../../../services/report-data.service';\nimport { ReportMatchHighlightService } from '../../../../services/report-match-highlight.service';\nimport { ReportMatchesService } from '../../../../services/report-matches.service';\nimport { ReportStatisticsService } from '../../../../services/report-statistics.service';\nimport { ReportViewService } from '../../../../services/report-view.service';\nimport { OneToManyReportLayoutBaseComponent } from '../../base/report-layout-one-to-many-base.component';\nimport { ReportNgTemplatesService } from '../../../../services/report-ng-templates.service';\nimport { ReportRealtimeResultsService } from '../../../../services/report-realtime-results.service';\nimport { ReportErrorsService } from '../../../../services/report-errors.service';\n\n@Component({\n\tselector: 'copyleaks-only-ai-report-layout-mobile',\n\ttemplateUrl: './only-ai-report-layout-mobile.component.html',\n\tstyleUrls: ['./only-ai-report-layout-mobile.component.scss'],\n\tstandalone: false,\n})\nexport class OnlyAiReportLayoutMobileComponent extends OneToManyReportLayoutBaseComponent implements OnInit, OnDestroy {\n\t@Input() companyLogo: string = null;\n\n\t@Input() hideWritingFeedback: boolean = false;\n\n\tconstructor(\n\t\treportDataSvc: ReportDataService,\n\t\treportViewSvc: ReportViewService,\n\t\tmatchSvc: ReportMatchesService,\n\t\trenderer: Renderer2,\n\t\thighlightSvc: ReportMatchHighlightService,\n\t\tstatisticsSvc: ReportStatisticsService,\n\t\ttemplatesSvc: ReportNgTemplatesService,\n\t\trealTimeResultsSvc: ReportRealtimeResultsService,\n\t\treportErrorsSvc: ReportErrorsService\n\t) {\n\t\tsuper(\n\t\t\treportDataSvc,\n\t\t\treportViewSvc,\n\t\t\tmatchSvc,\n\t\t\trenderer,\n\t\t\thighlightSvc,\n\t\t\tstatisticsSvc,\n\t\t\ttemplatesSvc,\n\t\t\trealTimeResultsSvc,\n\t\t\treportErrorsSvc\n\t\t);\n\t}\n\n\tngOnInit(): void {\n\t\tthis.initOneToManyViewData();\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.onComponentDestroy();\n\t}\n}\n","<div style=\"display: flex; flex-direction: column; flex-grow: 1; overflow-y: auto; gap: 12px\">\n\t<!-- Report actions -->\n\t<copyleaks-report-actions-container\n\t\tclass=\"report-actions-container\"\n\t\t[showLoadingView]=\"isLoadingScanContent\"\n\t\t[companyLogo]=\"companyLogo\"></copyleaks-report-actions-container>\n\n\t<div class=\"middle-section\">\n\t\t<!-- Report alerts -->\n\n\t\t<!-- Report scan content section -->\n\t\t<div class=\"content-section\">\n\t\t\t<!-- Report scan content tabs -->\n\t\t\t<copyleaks-report-tabs-container\n\t\t\t\t[hideAiTap]=\"hideAiTap\"\n\t\t\t\t[hidePlagarismTap]=\"hidePlagarismTap\"\n\t\t\t\t[forceWritingFeedbackTapHide]=\"hideWritingFeedback\"\n\t\t\t\t[hideWritingFeedbackTap]=\"hideWritingFeedbackTap\"\n\t\t\t\t[writingFeedbackScore]=\"reportStatistics?.writingFeedbackOverallScore\"\n\t\t\t\t[totalWritingFeedbackIssues]=\"reportStatistics?.writingFeedbackOverallIssues\"\n\t\t\t\t[selectedTap]=\"EReportViewType.AIView\"\n\t\t\t\t[plagarismScore]=\"plagiarismScore\"\n\t\t\t\t[aiScore]=\"reportStatistics?.aiScore ?? 0\"\n\t\t\t\t[wordsTotal]=\"reportStatistics?.total ?? 0\"\n\t\t\t\t[showLoadingView]=\"isLoadingScanContent\"\n\t\t\t\t[loadingProgressPct]=\"loadingProgressPct\"\n\t\t\t\t[isMobile]=\"true\"\n\t\t\t\t[showDisabledProducts]=\"showDisabledProducts\"></copyleaks-report-tabs-container>\n\n\t\t\t<!-- Report scan content viewer -->\n\t\t\t<copyleaks-content-viewer-container\n\t\t\t\t[isHtmlView]=\"isHtmlView\"\n\t\t\t\t[isAlertsView]=\"isAlertsMode\"\n\t\t\t\t[scanSource]=\"reportCrawledVersion\"\n\t\t\t\t[isAIView]=\"selectedTap === EReportViewType.AIView\"\n\t\t\t\t[contentTextMatches]=\"contentTextMatches\"\n\t\t\t\t[contentHtmlMatches]=\"reportMatches\"\n\t\t\t\t[hideTextModeSwitch]=\"!isAiHtmlViewAvailable && selectedTap === EReportViewType.AIView\"\n\t\t\t\t[currentPage]=\"currentPageSource\"\n\t\t\t\t[reportResponsive]=\"EResponsiveLayoutType.Mobile\"\n\t\t\t\t[authorAlert]=\"authorAlert\"\n\t\t\t\t[isPartitalScan]=\"isPartitalScan\"\n\t\t\t\tviewMode=\"one-to-many\"\n\t\t\t\treportOrigin=\"original\"\n\t\t\t\t[submittedDocumentName]=\"scanResultsPreviews?.scannedDocument?.metadata?.filename\"\n\t\t\t\t[hasHtml]=\"\n\t\t\t\t\tviewMode === 'writing-feedback'\n\t\t\t\t\t\t? !!writingFeedback?.corrections?.html &&\n\t\t\t\t\t\t  !!writingFeedback?.corrections.html.chars &&\n\t\t\t\t\t\t  !!writingFeedback?.corrections.html.chars.groupIds &&\n\t\t\t\t\t\t  !!writingFeedback?.corrections.html.chars.lengths &&\n\t\t\t\t\t\t  !!writingFeedback?.corrections.html.chars.starts &&\n\t\t\t\t\t\t  !!writingFeedback?.corrections.html.chars.operationTexts &&\n\t\t\t\t\t\t  !!writingFeedback?.corrections.html.chars.types\n\t\t\t\t\t\t: !!reportCrawledVersion?.html?.value\n\t\t\t\t\"\n\t\t\t\t[isMultiSelection]=\"selectedTap !== EReportViewType.AIView && isMultiSelection ? true : null\"\n\t\t\t\t[showOmittedWords]=\"showOmittedWords\"\n\t\t\t\t(iFrameMessageEvent)=\"onIFrameMessage($event)\"\n\t\t\t\t(viewChangeEvent)=\"onReportViewChange($event)\"\n\t\t\t\t(onShowOmittedWords)=\"onShowOmittedWords($event)\"></copyleaks-content-viewer-container>\n\t\t</div>\n\t</div>\n</div>\n\n<div style=\"display: flex; flex-direction: column; flex-shrink: 0; gap: 12px\">\n\t<!-- Powered by Copyleaks image section -->\n\t<div class=\"powered-by-copyleaks-container\"><cr-powered-by></cr-powered-by></div>\n</div>\n","import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport {\n\tComponent,\n\tEventEmitter,\n\tInput,\n\tOnDestroy,\n\tOnInit,\n\tOutput,\n\tSimpleChanges,\n\tTemplateRef,\n\tViewChild,\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { distinctUntilChanged, filter, map, takeUntil } from 'rxjs/operators';\nimport { IResultItem } from './components/containers/report-results-item-container/components/models/report-result-item.models';\nimport { ALERTS } from './constants/report-alerts.constants';\nimport {\n\tEPlatformType,\n\tEReportLayoutType,\n\tEReportMode,\n\tEResponsiveLayoutType,\n} from './enums/copyleaks-web-report.enums';\nimport { IClsReportEndpointConfigModel } from './models/report-config.models';\nimport { ICompleteResults, IScanSource } from './models/report-data.models';\nimport { ReportHttpRequestErrorModel } from './models/report-errors.models';\nimport { IReportViewEvent, IReportViewQueryParams } from './models/report-view.models';\nimport { ReportDataService } from './services/report-data.service';\nimport { ReportErrorsService } from './services/report-errors.service';\nimport { ReportMatchHighlightService } from './services/report-match-highlight.service';\nimport { ReportMatchesService } from './services/report-matches.service';\nimport { ReportNgTemplatesService } from './services/report-ng-templates.service';\nimport { ReportStatisticsService } from './services/report-statistics.service';\nimport { ReportViewService } from './services/report-view.service';\nimport { ReportRealtimeResultsService } from './services/report-realtime-results.service';\nimport { ECustomResultsReportView } from './components/core/cr-custom-results/models/cr-custom-results.enums';\nimport { Subject } from 'rxjs';\nimport { IResourceStartExplainableAIVideo } from './models/report-ai-results.models';\nimport { ReportAIResultsService } from './services/report-ai-results.service';\n\n@Component({\n\tselector: 'copyleaks-web-report',\n\ttemplateUrl: './copyleaks-web-report.component.html',\n\tstyleUrls: ['./copyleaks-web-report.component.scss'],\n\tproviders: [\n\t\tReportErrorsService,\n\t\tReportViewService,\n\t\tReportDataService,\n\t\tReportNgTemplatesService,\n\t\tReportMatchesService,\n\t\tReportMatchHighlightService,\n\t\tReportStatisticsService,\n\t\tReportAIResultsService,\n\t],\n\tstandalone: false,\n})\nexport class CopyleaksWebReportComponent implements OnInit, OnDestroy {\n\t@ViewChild('customActionsTemplate', { static: true }) customActionsTemplate: TemplateRef<any>;\n\t@ViewChild('customEmptyResultsTemplate', { static: true }) customEmptyResultsTemplate: TemplateRef<any>;\n\t@ViewChild('customResultsTemplate', { static: true }) customResultsTemplate: TemplateRef<any>;\n\t@ViewChild('customBannerSectionTemplate', { static: true }) customBannerSectionTemplate: TemplateRef<any>;\n\t@ViewChild('customAISourceMatchUpgradeTemplate', { static: true })\n\tcustomAISourceMatchUpgradeTemplate: TemplateRef<any>;\n\n\t/**\n\t * @Input {EReportMode} - The copyleaks report view type.\n\t * @Default value: EReportMode.WebReport\n\t * @Description: The type of the report view.\n\t * @Example: EReportMode.WebReport\n\t * @Example: EReportMode.AssessmentTool\n\t */\n\t@Input() reportMode: EReportMode = EReportMode.WebReport;\n\n\t/**\n\t * @Input {ReportLayoutType} - The copyleaks report layout type.\n\t * @Default value: ReportLayoutType.OneToMany\n\t */\n\t@Input() reportLayoutType: EReportLayoutType;\n\n\t/**\n\t * @Input {ReportLayoutType} - The copyleaks report reposive type.\n\t */\n\t@Input() responsiveLayoutType: EResponsiveLayoutType | null = null;\n\n\t/**\n\t * @Input {IClsReportEndpointConfigModel} - The copyleaks report data endpoints configuration model.\n\t */\n\t@Input() reportEndpointConfig: IClsReportEndpointConfigModel;\n\n\t/**\n\t * @Input {boolean} - Flag indicating whether to still show the disabled products tabs.\n\t */\n\t@Input() showDisabledProducts: boolean = false;\n\n\t/**\n\t * @Input {TemplateRef<IResultItem>} - Custom locked result template ref.\n\t */\n\t@Input() lockedResultTemplateRef: TemplateRef<IResultItem>;\n\n\t/**\n\t * @Input {string} - Custom company logo which will be shown in the tabs sections.\n\t */\n\t@Input() companyLogo: string = null;\n\n\t/**\n\t * @Input {boolean} - Flag indicating whether to show the Grammar tab and content in the report.\n\t */\n\t@Input() hideWritingFeedback: boolean = false;\n\n\t/**\n\t * @Input {EPlatformType} - The type of the platform that the report is running on.\n\t */\n\t@Input() platformType: EPlatformType = EPlatformType.APP;\n\n\t/**\n\t * @Input {boolean} - Flag indicating whether to show the locked result in the AI explain.\n\t */\n\t@Input() lockedExplainAIResults: boolean = false;\n\n\t/**\n\t * @Input {boolean} - Flag indicating whether to show the AI source match upgrade component.\n\t * @Default value: true\n\t */\n\t@Input() hideAISourceMatchUpgrade: boolean = true;\n\n\t/**\n\t * @Output {IResourceStartExplainableAIVideo} - Emits once AI Insight explination start video button clicked.\n\t */\n\t@Output() onExplainableAIStartVideoButtonClicked = new EventEmitter<IResourceStartExplainableAIVideo>();\n\n\t/**\n\t * @Output {ReportHttpRequestErrorModel} - Emits HTTP request data, when any request to update & fetch report data fails.\n\t */\n\t@Output() onReportRequestError = new EventEmitter<ReportHttpRequestErrorModel>();\n\n\t/**\n\t * @Output {ICompleteResults} - Emits complete request updates.\n\t */\n\t@Output() onCompleteResultUpdate = new EventEmitter<ICompleteResults>();\n\n\t/**\n\t * @Output {IScanSource} - Emits crawled version updates.\n\t */\n\t@Output() onCrawledVersionUpdate = new EventEmitter<IScanSource>();\n\n\t// Layout realated properties\n\tReportLayoutType = EReportLayoutType;\n\tResponsiveLayoutType = EResponsiveLayoutType;\n\tEReportMode = EReportMode;\n\tdocDirection: 'ltr' | 'rtl';\n\n\t// Subject for destroying all the subscriptions in the main library component\n\tprivate unsubscribe$ = new Subject();\n\n\tconstructor(\n\t\tprivate _breakpointObserver: BreakpointObserver,\n\t\tprivate _reportNgTemplatesSvc: ReportNgTemplatesService,\n\t\tprivate _reportDataSvc: ReportDataService,\n\t\tprivate _reportRealtimeResultsSvc: ReportRealtimeResultsService,\n\t\tprivate _activatedRoute: ActivatedRoute,\n\t\tprivate _reportViewSvc: ReportViewService,\n\t\tprivate _reportErrorsSvc: ReportErrorsService,\n\t\tprivate _router: Router,\n\t\tprivate _reportAIResultsSvc: ReportAIResultsService,\n\t\tprivate _reportMatchesSvc: ReportMatchesService\n\t) {}\n\n\tngOnInit(): void {\n\t\t// Handel responsive view changes\n\t\tif (this.responsiveLayoutType == null) this._initResponsiveLayoutType();\n\n\t\t// Handel report layout changes\n\t\tif (!this.reportLayoutType) this._initReportLayoutType();\n\n\t\t// Initialize the report data\n\t\tif (this.reportEndpointConfig) this._reportDataSvc.initReportData(this.reportEndpointConfig);\n\n\t\t// Listen to route params changes\n\t\tthis._listenToRouteParamsChange();\n\n\t\t// Listen to document direction changes (RTL/LTR)\n\t\tthis._listenToDocumentDirectionChange();\n\n\t\t// Handle report requests errors & emit it\n\t\tthis._reportErrorsSvc.reportHttpRequestError$\n\t\t\t.pipe(takeUntil(this.unsubscribe$))\n\t\t\t.subscribe(error => this.onReportRequestError.emit(error));\n\n\t\t// Handle start video explination clicked & emit it\n\t\tthis._reportAIResultsSvc.resourcesStartExplainableVideo$.pipe(takeUntil(this.unsubscribe$)).subscribe(data => {\n\t\t\tif (!data?.startVideo) return;\n\t\t\tthis.onExplainableAIStartVideoButtonClicked.emit(data);\n\t\t});\n\n\t\tthis._reportDataSvc.scanResultsPreviews$\n\t\t\t.pipe(\n\t\t\t\ttakeUntil(this.unsubscribe$),\n\t\t\t\tfilter(\n\t\t\t\t\tscanResultsPreviews =>\n\t\t\t\t\t\tscanResultsPreviews != undefined &&\n\t\t\t\t\t\tscanResultsPreviews.filters != undefined &&\n\t\t\t\t\t\tscanResultsPreviews.filters.filteredResultIds != undefined\n\t\t\t\t)\n\t\t\t)\n\t\t\t.subscribe(scanResultsPreviews => {\n\t\t\t\tif (\n\t\t\t\t\t!this._reportDataSvc.isPlagiarismEnabled() &&\n\t\t\t\t\t!this._reportDataSvc.isWritingFeedbackEnabled() &&\n\t\t\t\t\tthis._reportDataSvc.isAiDetectionEnabled() &&\n\t\t\t\t\tthis.reportLayoutType != EReportLayoutType.OnlyAi &&\n\t\t\t\t\t!this.showDisabledProducts &&\n\t\t\t\t\tthis._reportNgTemplatesSvc.reportTemplatesMode$.value != ECustomResultsReportView.Full &&\n\t\t\t\t\tthis._reportNgTemplatesSvc.reportTemplatesMode$.value != ECustomResultsReportView.Partial\n\t\t\t\t) {\n\t\t\t\t\tthis._reportViewSvc.reportViewMode$.next({\n\t\t\t\t\t\t...this._reportViewSvc.reportViewMode,\n\t\t\t\t\t\tviewMode: 'one-to-many',\n\t\t\t\t\t\talertCode: ALERTS.SUSPECTED_AI_TEXT_DETECTED,\n\t\t\t\t\t});\n\t\t\t\t\tthis._reportViewSvc.selectedAlert$.next(ALERTS.SUSPECTED_AI_TEXT_DETECTED);\n\t\t\t\t}\n\n\t\t\t\tif (this._reportDataSvc.scanResultsDetails) this.onCompleteResultUpdate.emit(scanResultsPreviews);\n\t\t\t});\n\n\t\tthis._reportDataSvc.crawledVersion$.pipe(takeUntil(this.unsubscribe$)).subscribe(crawledVersion => {\n\t\t\tif (!crawledVersion) return;\n\t\t\tthis.onCrawledVersionUpdate.emit(crawledVersion);\n\t\t});\n\n\t\tthis._reportRealtimeResultsSvc.onNewResults$.pipe(takeUntil(this.unsubscribe$)).subscribe(data => {\n\t\t\tthis._reportDataSvc.pushNewResults(data);\n\t\t});\n\t}\n\n\tngAfterViewInit() {\n\t\t// Read provided custom components\n\t\tthis._initCustomTemplatesRefs();\n\t}\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif ('reportEndpointConfig' in changes && !changes['reportEndpointConfig'].firstChange) {\n\t\t\tthis._reportDataSvc.initReportData(this.reportEndpointConfig);\n\t\t}\n\n\t\tif ('showDisabledProducts' in changes) {\n\t\t\tif (!!this._reportViewSvc.reportViewMode)\n\t\t\t\tthis._reportViewSvc.reportViewMode$.next({\n\t\t\t\t\t...this._reportViewSvc.reportViewMode,\n\t\t\t\t\tshowDisabledProducts: this.showDisabledProducts,\n\t\t\t\t} as IReportViewEvent);\n\t\t}\n\n\t\tif ('hideAISourceMatchUpgrade' in changes) {\n\t\t\tif (!!this._reportViewSvc.reportViewMode)\n\t\t\t\tthis._reportViewSvc.reportViewMode$.next({\n\t\t\t\t\t...this._reportViewSvc.reportViewMode,\n\t\t\t\t\thideAISourceMatchUpgrade: this.hideAISourceMatchUpgrade,\n\t\t\t\t} as IReportViewEvent);\n\t\t}\n\t}\n\n\t/**\n\t * Reads the report custom components templates references & saves them in the templates service.\n\t */\n\tprivate _initCustomTemplatesRefs() {\n\t\t// Read the report custom actions template reference.\n\t\tif (this.customActionsTemplate)\n\t\t\tthis._reportNgTemplatesSvc.setReportCustomActionsTemplateRef(this.customActionsTemplate);\n\n\t\t// Read the report custom empty results template reference.\n\t\tif (this.customEmptyResultsTemplate)\n\t\t\tthis._reportNgTemplatesSvc.setReportCustomEmptyResultsTemplateRef(this.customEmptyResultsTemplate);\n\n\t\t// Read the report custom results template reference.\n\t\tif (this.customResultsTemplate)\n\t\t\tthis._reportNgTemplatesSvc.setReportCustomResultsTemplateRef(this.customResultsTemplate);\n\n\t\t// Read the report custom results template reference.\n\t\tif (this.customBannerSectionTemplate)\n\t\t\tthis._reportNgTemplatesSvc.setReportCustomBannerSectionTemplateRef(this.customBannerSectionTemplate);\n\n\t\t// Read the report custom AI source match upgrade component reference\n\t\tif (this.customAISourceMatchUpgradeTemplate)\n\t\t\tthis._reportNgTemplatesSvc.setReportCustomAISourceMatchUpgradeTemplateRef(\n\t\t\t\tthis.customAISourceMatchUpgradeTemplate\n\t\t\t);\n\n\t\t// Read the report results locked result item template reference.\n\t\tif (this.lockedResultTemplateRef)\n\t\t\tthis._reportNgTemplatesSvc.setLockedResultItemTemplateRef(this.lockedResultTemplateRef);\n\t}\n\n\t/**\n\t * Starts a subscription for the screen size changes & updates the layout & responsive view accordingly.\n\t */\n\tprivate _initResponsiveLayoutType() {\n\t\tconst layoutChanges = this._breakpointObserver.observe([\n\t\t\tBreakpoints.Handset,\n\t\t\tBreakpoints.Tablet,\n\t\t\tBreakpoints.Web,\n\t\t\tBreakpoints.Large,\n\t\t\tBreakpoints.XLarge,\n\t\t\tBreakpoints.TabletLandscape,\n\t\t\tBreakpoints.Medium,\n\t\t\tBreakpoints.Small,\n\t\t\tBreakpoints.XSmall,\n\t\t\tBreakpoints.HandsetPortrait,\n\t\t\tBreakpoints.HandsetLandscape,\n\t\t\tBreakpoints.TabletPortrait,\n\t\t]);\n\n\t\tlayoutChanges\n\t\t\t.pipe(\n\t\t\t\tmap(result => {\n\t\t\t\t\tif (result.matches) {\n\t\t\t\t\t\t// Desktop view\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tresult.breakpoints[Breakpoints.Web] ||\n\t\t\t\t\t\t\tresult.breakpoints[Breakpoints.Large] ||\n\t\t\t\t\t\t\tresult.breakpoints[Breakpoints.XLarge]\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn EResponsiveLayoutType.Desktop;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Tablet view\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tresult.breakpoints[Breakpoints.Tablet] ||\n\t\t\t\t\t\t\tresult.breakpoints[Breakpoints.TabletLandscape] ||\n\t\t\t\t\t\t\tresult.breakpoints[Breakpoints.Medium]\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn EResponsiveLayoutType.Tablet;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Mobile view\n\t\t\t\t\t\telse return EResponsiveLayoutType.Mobile;\n\t\t\t\t\t}\n\t\t\t\t\treturn null;\n\t\t\t\t}),\n\n\t\t\t\ttakeUntil(this.unsubscribe$)\n\t\t\t)\n\t\t\t.subscribe((layout: EResponsiveLayoutType | null) => {\n\t\t\t\tthis.responsiveLayoutType = layout;\n\t\t\t\tif (layout)\n\t\t\t\t\tthis._reportViewSvc.reportResponsiveMode$.next({\n\t\t\t\t\t\tmode: layout,\n\t\t\t\t\t});\n\t\t\t});\n\t}\n\n\t/**\n\t * Starts a subscription for the report layout query params\n\t */\n\tprivate _initReportLayoutType() {\n\t\tconst params = this._activatedRoute.snapshot.queryParams;\n\t\tif (!params) return;\n\n\t\tconst viewMode = params['viewMode'];\n\t\tconst contentMode = params['contentMode'];\n\t\tconst sourcePage = params['sourcePage'];\n\t\tconst suspectPage = params['suspectPage'];\n\t\tconst suspectId = params['suspectId'];\n\t\tconst alertCode = params['alertCode'];\n\t\tconst selectedCustomTabId = params['selectedCustomTabId'];\n\t\tconst selectedResultsCategory = params['selectedResultsCategory'];\n\t\tconst showAIPhrases = params['showAIPhrases'];\n\n\t\tthis.reportLayoutType = viewMode ?? 'one-to-many';\n\t\tif (viewMode === 'writing-feedback') this.reportLayoutType = EReportLayoutType.OneToMany;\n\t\tif (suspectId)\n\t\t\t// Add the suspect Id if available\n\t\t\tthis.reportLayoutType = EReportLayoutType.OneToOne;\n\n\t\tthis._reportViewSvc.reportViewMode$.next({\n\t\t\tviewMode: viewMode === 'writing-feedback' ? EReportLayoutType.WritingFeedback : this.reportLayoutType,\n\t\t\tisHtmlView:\n\t\t\t\t(!contentMode || contentMode == 'html') && (!alertCode || alertCode === ALERTS.SUSPECTED_AI_TEXT_DETECTED),\n\t\t\tsourcePageIndex: sourcePage ? Number(sourcePage) ?? 1 : 1,\n\t\t\tsuspectId: suspectId,\n\t\t\tsuspectPageIndex: suspectPage ? Number(suspectPage) ?? 1 : 1,\n\t\t\talertCode: alertCode,\n\t\t\tshowDisabledProducts: this.showDisabledProducts,\n\t\t\thideAISourceMatchUpgrade: this.hideAISourceMatchUpgrade,\n\t\t\tplatformType: this.platformType,\n\t\t\tselectedCustomTabId: selectedCustomTabId,\n\t\t\tselectedResultsCategory: selectedResultsCategory,\n\t\t\tshowAIPhrases: showAIPhrases === 'true',\n\t\t} as IReportViewEvent);\n\n\t\tif (alertCode) this._reportViewSvc.selectedAlert$.next(alertCode);\n\t\tif (showAIPhrases === 'true' && !this._reportMatchesSvc.showAIPhrases)\n\t\t\tthis._reportMatchesSvc.showAIPhrases$.next(true);\n\n\t\tthis._reportViewSvc.reportViewMode$.pipe(distinctUntilChanged(), takeUntil(this.unsubscribe$)).subscribe(data => {\n\t\t\tif (!data) return;\n\n\t\t\tlet updatedParams: IReportViewQueryParams = {\n\t\t\t\tviewMode: data.viewMode,\n\t\t\t\tcontentMode: data.isHtmlView ? 'html' : 'text',\n\t\t\t\tsourcePage: String(data.sourcePageIndex) ?? '1',\n\t\t\t\tsuspectPage: String(data.suspectPageIndex) ?? '1',\n\t\t\t\tsuspectId: data.suspectId,\n\t\t\t\talertCode: data.alertCode,\n\t\t\t\tselectedCustomTabId: data.selectedCustomTabId,\n\t\t\t\tselectedResultsCategory: data.selectedResultsCategory,\n\t\t\t\tshowAIPhrases: data.showAIPhrases ? 'true' : 'false',\n\t\t\t};\n\n\t\t\tif (data.viewMode == 'one-to-many' || data.viewMode == 'writing-feedback')\n\t\t\t\tthis.reportLayoutType = EReportLayoutType.OneToMany;\n\t\t\telse if (data.viewMode == 'one-to-one') this.reportLayoutType = EReportLayoutType.OneToOne;\n\t\t\telse this.reportLayoutType = EReportLayoutType.OnlyAi;\n\n\t\t\t// Add the suspect Id if available\n\t\t\tif (data.suspectId)\n\t\t\t\tupdatedParams = {\n\t\t\t\t\t...updatedParams,\n\t\t\t\t\tsuspectId: data.suspectId,\n\t\t\t\t};\n\t\t\t// Add the suspect pagination page index if available\n\t\t\tif (data.suspectPageIndex)\n\t\t\t\tupdatedParams = {\n\t\t\t\t\t...updatedParams,\n\t\t\t\t\tsuspectPage: String(data.suspectPageIndex),\n\t\t\t\t};\n\t\t\t// Navigate without page reload\n\t\t\tthis._router.navigate([], {\n\t\t\t\trelativeTo: this._activatedRoute,\n\t\t\t\tqueryParams: updatedParams,\n\t\t\t\tqueryParamsHandling: 'merge',\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate _listenToRouteParamsChange() {\n\t\tthis._activatedRoute.queryParams.pipe(distinctUntilChanged(), takeUntil(this.unsubscribe$)).subscribe(params => {\n\t\t\tconst viewMode = params['viewMode'];\n\t\t\tconst contentMode = params['contentMode'];\n\t\t\tconst sourcePage = params['sourcePage'];\n\t\t\tconst suspectPage = params['suspectPage'];\n\t\t\tconst suspectId = params['suspectId'];\n\t\t\tconst alertCode = params['alertCode'];\n\t\t\tconst selectedCustomTabId = params['selectedCustomTabId'];\n\t\t\tconst selectedResultsCategory = params['selectedResultsCategory'];\n\t\t\tconst showAIPhrases = params['showAIPhrases'];\n\n\t\t\tthis.reportLayoutType = viewMode ?? 'one-to-many';\n\t\t\tif (viewMode === 'writing-feedback') {\n\t\t\t\tthis.reportLayoutType = EReportLayoutType.OneToMany;\n\t\t\t}\n\t\t\tif (suspectId) {\n\t\t\t\tthis.reportLayoutType = EReportLayoutType.OneToOne;\n\t\t\t}\n\n\t\t\t// check if the reportViewMode$ value is the same as new value\n\t\t\tif (\n\t\t\t\t!(\n\t\t\t\t\tthis._reportViewSvc.reportViewMode?.viewMode ==\n\t\t\t\t\t\t(viewMode === 'writing-feedback' ? EReportLayoutType.WritingFeedback : this.reportLayoutType) &&\n\t\t\t\t\tthis._reportViewSvc.reportViewMode?.isHtmlView ==\n\t\t\t\t\t\t((!contentMode || contentMode == 'html') &&\n\t\t\t\t\t\t\t(!alertCode || alertCode === ALERTS.SUSPECTED_AI_TEXT_DETECTED)) &&\n\t\t\t\t\tthis._reportViewSvc.reportViewMode?.sourcePageIndex == (sourcePage ? Number(sourcePage) ?? 1 : 1) &&\n\t\t\t\t\tthis._reportViewSvc.reportViewMode?.suspectId == suspectId &&\n\t\t\t\t\tthis._reportViewSvc.reportViewMode?.suspectPageIndex == (suspectPage ? Number(suspectPage) ?? 1 : 1) &&\n\t\t\t\t\tthis._reportViewSvc.reportViewMode?.alertCode == alertCode &&\n\t\t\t\t\tthis._reportViewSvc.reportViewMode?.showDisabledProducts == this.showDisabledProducts &&\n\t\t\t\t\tthis._reportViewSvc.reportViewMode?.hideAISourceMatchUpgrade == this.hideAISourceMatchUpgrade &&\n\t\t\t\t\tthis._reportViewSvc.reportViewMode?.platformType == this.platformType &&\n\t\t\t\t\tthis._reportViewSvc.reportViewMode?.selectedCustomTabId == selectedCustomTabId &&\n\t\t\t\t\tthis._reportViewSvc.reportViewMode?.selectedResultsCategory == selectedResultsCategory &&\n\t\t\t\t\tthis._reportViewSvc.reportViewMode?.showAIPhrases == (showAIPhrases === 'true' ? true : false)\n\t\t\t\t)\n\t\t\t)\n\t\t\t\tthis._reportViewSvc.reportViewMode$.next({\n\t\t\t\t\tviewMode: viewMode === 'writing-feedback' ? EReportLayoutType.WritingFeedback : this.reportLayoutType,\n\t\t\t\t\tisHtmlView:\n\t\t\t\t\t\t(!contentMode || contentMode == 'html') && (!alertCode || alertCode === ALERTS.SUSPECTED_AI_TEXT_DETECTED),\n\t\t\t\t\tsourcePageIndex: sourcePage ? Number(sourcePage) ?? 1 : 1,\n\t\t\t\t\tsuspectId: suspectId,\n\t\t\t\t\tsuspectPageIndex: suspectPage ? Number(suspectPage) ?? 1 : 1,\n\t\t\t\t\talertCode: alertCode,\n\t\t\t\t\tshowDisabledProducts: this.showDisabledProducts,\n\t\t\t\t\thideAISourceMatchUpgrade: this.hideAISourceMatchUpgrade,\n\t\t\t\t\tplatformType: this.platformType,\n\t\t\t\t\tselectedCustomTabId: selectedCustomTabId,\n\t\t\t\t\tselectedResultsCategory: selectedResultsCategory,\n\t\t\t\t\tshowAIPhrases: showAIPhrases === 'true',\n\t\t\t\t} as IReportViewEvent);\n\t\t\tif (alertCode && this._reportViewSvc.selectedAlert != alertCode)\n\t\t\t\tthis._reportViewSvc.selectedAlert$.next(alertCode);\n\t\t\telse if (alertCode === null && this._reportViewSvc.selectedAlert != null)\n\t\t\t\tthis._reportViewSvc.selectedAlert$.next(null);\n\t\t\tif (!selectedCustomTabId || selectedCustomTabId == 'null') {\n\t\t\t\tthis._reportViewSvc.selectedCustomTabContent$.next(null);\n\t\t\t\tthis._reportViewSvc.selectedCustomTabResultSectionContent$.next(null);\n\t\t\t}\n\t\t\tif (showAIPhrases === 'true') this._reportMatchesSvc.showAIPhrases$.next(showAIPhrases === 'true');\n\t\t});\n\t}\n\n\tprivate _listenToDocumentDirectionChange() {\n\t\tthis._reportViewSvc.documentDirection$.pipe(takeUntil(this.unsubscribe$)).subscribe(dir => {\n\t\t\tthis.docDirection = dir;\n\t\t});\n\t}\n\tngOnDestroy() {\n\t\tthis.unsubscribe$.next();\n\t\tthis.unsubscribe$.complete();\n\t}\n}\n","<!-- Custom report actions reference -->\n<ng-template #customActionsTemplate>\n\t<ng-content select=\"cr-actions\"></ng-content>\n</ng-template>\n\n<!-- Custom empty report results reference -->\n<ng-template #customEmptyResultsTemplate>\n\t<ng-content select=\"cr-custom-empty-results\"></ng-content>\n</ng-template>\n\n<!-- Custom report results reference -->\n<ng-template #customResultsTemplate>\n\t<ng-content select=\"cr-custom-results\"></ng-content>\n</ng-template>\n\n<!-- Custom report bannner section reference -->\n<ng-template #customBannerSectionTemplate>\n\t<ng-content select=\"cr-banner-section\"></ng-content>\n</ng-template>\n\n<!-- Custom AI source match upgrade component reference -->\n<ng-template #customAISourceMatchUpgradeTemplate>\n\t<ng-content select=\"cr-ai-source-match-upgrade\"></ng-content>\n</ng-template>\n\n<!-- Report layout type switch case -->\n<ng-container [ngSwitch]=\"reportLayoutType\">\n\t<!-- One to many layout - start -->\n\t<ng-container *ngSwitchCase=\"ReportLayoutType.OneToMany\">\n\t\t<ng-container [ngSwitch]=\"responsiveLayoutType\">\n\t\t\t<!-- Desktop View -->\n\t\t\t<ng-container *ngSwitchCase=\"ResponsiveLayoutType.Desktop\">\n\t\t\t\t<copyleaks-one-to-many-report-layout-desktop\n\t\t\t\t\t[dir]=\"docDirection\"\n\t\t\t\t\t[lockedExplainAIResults]=\"lockedExplainAIResults\"\n\t\t\t\t\t[companyLogo]=\"companyLogo\"\n\t\t\t\t\t[reportMode]=\"reportMode\"\n\t\t\t\t\t[hideWritingFeedback]=\"hideWritingFeedback\"></copyleaks-one-to-many-report-layout-desktop>\n\t\t\t</ng-container>\n\t\t\t<!-- Tablet View -->\n\t\t\t<ng-container *ngSwitchCase=\"ResponsiveLayoutType.Tablet\">\n\t\t\t\t<copyleaks-one-to-many-report-layout-desktop\n\t\t\t\t\t[dir]=\"docDirection\"\n\t\t\t\t\t[lockedExplainAIResults]=\"lockedExplainAIResults\"\n\t\t\t\t\t[companyLogo]=\"companyLogo\"\n\t\t\t\t\t[reportMode]=\"reportMode\"\n\t\t\t\t\t[hideWritingFeedback]=\"hideWritingFeedback\"></copyleaks-one-to-many-report-layout-desktop>\n\t\t\t</ng-container>\n\t\t\t<!-- Mobile View -->\n\t\t\t<ng-container *ngSwitchCase=\"ResponsiveLayoutType.Mobile\">\n\t\t\t\t<copyleaks-one-to-many-report-layout-mobile\n\t\t\t\t\t[dir]=\"docDirection\"\n\t\t\t\t\t[lockedExplainAIResults]=\"lockedExplainAIResults\"\n\t\t\t\t\t[companyLogo]=\"companyLogo\"\n\t\t\t\t\t[reportMode]=\"reportMode\"\n\t\t\t\t\t[hideWritingFeedback]=\"hideWritingFeedback\"></copyleaks-one-to-many-report-layout-mobile>\n\t\t\t</ng-container>\n\t\t\t<ng-container *ngSwitchDefault>Unsupported Layout</ng-container>\n\t\t</ng-container>\n\t</ng-container>\n\t<!-- One to many layout - end -->\n\n\t<!-- One to one layout - start -->\n\t<ng-container *ngSwitchCase=\"ReportLayoutType.OneToOne\">\n\t\t<ng-container [ngSwitch]=\"responsiveLayoutType\">\n\t\t\t<!-- Desktop View -->\n\t\t\t<ng-container *ngSwitchCase=\"ResponsiveLayoutType.Desktop\">\n\t\t\t\t<copyleaks-one-to-one-report-layout-desktop\n\t\t\t\t\t[dir]=\"docDirection\"\n\t\t\t\t\t[reportMode]=\"reportMode\"></copyleaks-one-to-one-report-layout-desktop>\n\t\t\t</ng-container>\n\t\t\t<!-- Tablet View -->\n\t\t\t<ng-container *ngSwitchCase=\"ResponsiveLayoutType.Tablet\">\n\t\t\t\t<copyleaks-one-to-one-report-layout-desktop\n\t\t\t\t\t[dir]=\"docDirection\"\n\t\t\t\t\t[reportMode]=\"reportMode\"></copyleaks-one-to-one-report-layout-desktop>\n\t\t\t</ng-container>\n\t\t\t<!-- Mobile View -->\n\t\t\t<ng-container *ngSwitchCase=\"ResponsiveLayoutType.Mobile\">\n\t\t\t\t<copyleaks-one-to-one-report-layout-mobile\n\t\t\t\t\t[dir]=\"docDirection\"\n\t\t\t\t\t[reportMode]=\"reportMode\"></copyleaks-one-to-one-report-layout-mobile>\n\t\t\t</ng-container>\n\t\t\t<ng-container *ngSwitchDefault>Unsupported Layout</ng-container>\n\t\t</ng-container>\n\t\t<ng-container *ngSwitchDefault>Unsupported Layout</ng-container>\n\t</ng-container>\n\t<!-- One to many layout - end -->\n\n\t<!-- Only AI layout - start -->\n\t<ng-container *ngSwitchCase=\"ReportLayoutType.OnlyAi\">\n\t\t<ng-container [ngSwitch]=\"responsiveLayoutType\">\n\t\t\t<!-- Desktop View -->\n\t\t\t<ng-container *ngSwitchCase=\"ResponsiveLayoutType.Desktop\">\n\t\t\t\t<copyleaks-one-to-many-report-layout-desktop\n\t\t\t\t\t[dir]=\"docDirection\"\n\t\t\t\t\t[lockedExplainAIResults]=\"lockedExplainAIResults\"\n\t\t\t\t\t[companyLogo]=\"companyLogo\"\n\t\t\t\t\t[reportMode]=\"reportMode\"\n\t\t\t\t\t[hideWritingFeedback]=\"hideWritingFeedback\"></copyleaks-one-to-many-report-layout-desktop>\n\t\t\t</ng-container>\n\t\t\t<!-- Tablet View -->\n\t\t\t<ng-container *ngSwitchCase=\"ResponsiveLayoutType.Tablet\">\n\t\t\t\t<copyleaks-one-to-many-report-layout-desktop\n\t\t\t\t\t[dir]=\"docDirection\"\n\t\t\t\t\t[lockedExplainAIResults]=\"lockedExplainAIResults\"\n\t\t\t\t\t[companyLogo]=\"companyLogo\"\n\t\t\t\t\t[reportMode]=\"reportMode\"\n\t\t\t\t\t[hideWritingFeedback]=\"hideWritingFeedback\"></copyleaks-one-to-many-report-layout-desktop>\n\t\t\t</ng-container>\n\t\t\t<!-- Mobile View -->\n\t\t\t<ng-container *ngSwitchCase=\"ResponsiveLayoutType.Mobile\">\n\t\t\t\t<copyleaks-one-to-many-report-layout-mobile\n\t\t\t\t\t[dir]=\"docDirection\"\n\t\t\t\t\t[lockedExplainAIResults]=\"lockedExplainAIResults\"\n\t\t\t\t\t[companyLogo]=\"companyLogo\"\n\t\t\t\t\t[reportMode]=\"reportMode\"\n\t\t\t\t\t[hideWritingFeedback]=\"hideWritingFeedback\"></copyleaks-one-to-many-report-layout-mobile>\n\t\t\t</ng-container>\n\t\t\t<ng-container *ngSwitchDefault>Unsupported Layout</ng-container>\n\t\t</ng-container>\n\t</ng-container>\n\t<ng-container *ngSwitchDefault>Unsupported Layout</ng-container>\n\t<!-- Only AI layout - end -->\n</ng-container>\n","import { NgModule } from '@angular/core';\nimport { CommonModule, PercentPipe } from '@angular/common';\nimport { SimilarityPipe } from './similarity.pipe';\n\n@NgModule({\n\tdeclarations: [SimilarityPipe],\n\texports: [SimilarityPipe],\n\tproviders: [PercentPipe],\n\timports: [CommonModule],\n})\nexport class SimilarityPipeModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CrReportScoreTooltipContentComponent } from './cr-report-score-tooltip-content.component';\nimport { SimilarityPipeModule } from '../../pipes/similarity-pipe/similarity-pipe.module';\nimport { ReportScoreTooltipDirective } from './report-score-tooltip.directive';\n\n@NgModule({\n\tdeclarations: [CrReportScoreTooltipContentComponent, ReportScoreTooltipDirective],\n\timports: [CommonModule, SimilarityPipeModule],\n\texports: [CrReportScoreTooltipContentComponent, ReportScoreTooltipDirective],\n})\nexport class CrReportScoreTooltipModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule, PercentPipe } from '@angular/common';\nimport { DecodeUriPipe } from './decode-uri.pipe';\n\n@NgModule({\n\tdeclarations: [DecodeUriPipe],\n\texports: [DecodeUriPipe],\n\tproviders: [PercentPipe],\n\timports: [CommonModule],\n})\nexport class DecodeUriPipeModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule, PercentPipe } from '@angular/common';\nimport { SecondsToTimePipe } from './seconds-to-time.pipe';\n\n@NgModule({\n\tdeclarations: [SecondsToTimePipe],\n\texports: [SecondsToTimePipe],\n\tproviders: [PercentPipe],\n\timports: [CommonModule],\n})\nexport class SecondsToTimePipeModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { SimilarityPipeModule } from '../../pipes/similarity-pipe/similarity-pipe.module';\nimport { CrReportMatchTooltipContentComponent } from './cr-report-match-tooltip-content.component';\nimport { CrReportMatchTooltipDirective } from './cr-report-match-tooltip.directive';\n\n@NgModule({\n\tdeclarations: [CrReportMatchTooltipContentComponent, CrReportMatchTooltipDirective],\n\timports: [CommonModule, SimilarityPipeModule],\n\texports: [CrReportMatchTooltipContentComponent, CrReportMatchTooltipDirective],\n})\nexport class CrReportMatchTooltipModule {}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n\tselector: 'cr-banner-section',\n\ttemplateUrl: './cr-banner-section.component.html',\n\tstyleUrls: ['./cr-banner-section.component.scss'],\n\tstandalone: false,\n})\nexport class CrBannerSectionComponent implements OnInit {\n\tconstructor() {}\n\n\tngOnInit(): void {}\n}\n","<ng-content></ng-content>\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n\tselector: 'cr-ai-disclaimer',\n\ttemplateUrl: './cr-ai-disclaimer.component.html',\n\tstyleUrls: ['./cr-ai-disclaimer.component.scss'],\n\tstandalone: false,\n})\nexport class CrAiDisclaimerComponent implements OnInit {\n\tconstructor() {}\n\n\tngOnInit(): void {}\n}\n","<div class=\"title\" i18n>Disclaimer</div>\n<div class=\"description\">\n\t<span i18n>\n\t\tCertain platforms, like Grammarly, use ChatGPT and other genAI models for key functionalities and can be flagged as\n\t\tpotential AI content.&nbsp;\n\t</span>\n\t<a\n\t\thref=\"https://help.copyleaks.com/hc/en-us/articles/23768743576845-Can-Copyleaks-detect-AI-generated-content\"\n\t\ttarget=\"_blank\"\n\t\ti18n>\n\t\tLearn more.\n\t</a>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule, PercentPipe } from '@angular/common';\nimport { FileNamePipe } from './file-name.pipe';\n\n@NgModule({\n\tdeclarations: [FileNamePipe],\n\texports: [FileNamePipe],\n\tproviders: [PercentPipe],\n\timports: [CommonModule],\n})\nexport class FileNamePipeModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CrAIScoreTooltipContentDirective } from './cr-ai-score-tooltip-content.directive';\nimport { CrAIScoreTooltipContentComponent } from './cr-ai-score-tooltip-content.component';\nimport { FlexLayoutModule } from 'ngx-flexible-layout';\n\n@NgModule({\n\texports: [CrAIScoreTooltipContentDirective, CrAIScoreTooltipContentComponent],\n\tdeclarations: [CrAIScoreTooltipContentDirective, CrAIScoreTooltipContentComponent],\n\timports: [CommonModule, FlexLayoutModule],\n})\nexport class CrAIScoreTooltipContentModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule, PercentPipe } from '@angular/common';\nimport { FormaDecimalNumberPipe } from './forma-decimal-number.pipe';\n\n@NgModule({\n\tdeclarations: [FormaDecimalNumberPipe],\n\texports: [FormaDecimalNumberPipe],\n\tproviders: [PercentPipe],\n\timports: [CommonModule],\n})\nexport class FormaDecimalPipeModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule, PercentPipe } from '@angular/common';\nimport { RemoveProtocolPipe } from './remove-protocol.pipe';\n\n@NgModule({\n\tdeclarations: [RemoveProtocolPipe],\n\texports: [RemoveProtocolPipe],\n\tproviders: [PercentPipe],\n\timports: [CommonModule],\n})\nexport class RemoveProtocolPipeModule {}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n\tselector: 'cr-ai-logic-banner',\n\ttemplateUrl: './cr-ai-logic-banner.component.html',\n\tstyleUrls: ['./cr-ai-logic-banner.component.scss'],\n\tstandalone: false,\n})\nexport class CrAiLogicBannerComponent implements OnInit {\n\tconstructor() {}\n\n\tngOnInit(): void {}\n}\n","<div class=\"title-container\">\n\t<mat-icon fontSet=\"material-icons-round\">auto_awesome</mat-icon>\n\t<span i18n>AI Logic</span>\n</div>\n\n<div class=\"content-container\">\n\t<span class=\"what-is-ai\" i18n>Why is it AI?</span>\n\t<span i18n>See a few of our key methods for validating text originality.</span>\n</div>\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n\tselector: 'cr-ai-source-match-upgrade',\n\ttemplateUrl: './cr-ai-source-match-upgrade.component.html',\n\tstyleUrls: ['./cr-ai-source-match-upgrade.component.scss'],\n\tstandalone: false,\n})\nexport class CrAiSourceMatchUpgradeComponent implements OnInit {\n\tconstructor() {}\n\n\tngOnInit(): void {}\n}\n","<ng-content></ng-content>\n","import { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FlexLayoutModule } from 'ngx-flexible-layout';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';\nimport { ContentViewerContainerComponent } from './components/containers/content-viewer-container/content-viewer-container.component';\nimport { ReportActionsContainerComponent } from './components/containers/report-actions-container/report-actions-container.component';\nimport { AlertCardComponent } from './components/containers/report-alerts-container/components/alert-card/alert-card.component';\nimport { AuthorAlertCardComponent } from './components/containers/report-alerts-container/components/author-alert-card/author-alert-card.component';\nimport { ReportAlertsContainerComponent } from './components/containers/report-alerts-container/report-alerts-container.component';\nimport { EmptyResultStateComponent } from './components/containers/report-results-container/components/empty-result-state/empty-result-state.component';\nimport { ResultsActionsComponent } from './components/containers/report-results-container/components/results-actions/results-actions.component';\nimport { ReportResultsContainerComponent } from './components/containers/report-results-container/report-results-container.component';\nimport { PercentageResultItemComponent } from './components/containers/report-results-item-container/components/percentage-result-item/percentage-result-item.component';\nimport { ReportExpandResultItemComponent } from './components/containers/report-results-item-container/components/report-expand-result-item/report-expand-result-item.component';\nimport { ReportResultsItemComponent } from './components/containers/report-results-item-container/components/report-results-item/report-results-item.component';\nimport { ReportResultsItemContainerComponent } from './components/containers/report-results-item-container/report-results-item-container.component';\nimport { ReportTabsContainerComponent } from './components/containers/report-tabs-container/report-tabs-container.component';\nimport { CrButtonModule } from './components/core/cr-button/cr-button.module';\nimport { CrCustomEmptyResultsComponent } from './components/core/cr-custom-empty-results/cr-custom-empty-results.component';\nimport { CrCustomResultsBoxContentComponent } from './components/core/cr-custom-results/components/cr-custom-results-box-content/cr-custom-results-box-content.component';\nimport { CrCustomResultsComponent } from './components/core/cr-custom-results/cr-custom-results.component';\nimport {\n\tCrCustomTabItemComponent,\n\tCrCustomTabItemContentComponent,\n\tCrCustomTabItemResultSectionComponent,\n\tCrCustomTabItemTitleComponent,\n} from './components/core/cr-custom-tabs/components/cr-custom-tab-item/cr-custom-tab-item.component';\nimport { CrCustomTabsComponent } from './components/core/cr-custom-tabs/cr-custom-tabs.component';\nimport { CrPaginatorModule } from './components/core/cr-paginator/cr-paginator.module';\nimport { CrPoweredByModule } from './components/core/cr-powered-by/cr-powered-by.module';\nimport { CrActionsComponent } from './components/core/cr-report-actions/cr-actions.component';\nimport { CrTextMatchComponent } from './components/core/cr-text-match/cr-text-match.component';\nimport { OneToManyReportLayoutDesktopComponent } from './components/layouts/one-to-many/one-to-many-report-layout-desktop/one-to-many-report-layout-desktop.component';\nimport { OneToManyReportLayoutMobileComponent } from './components/layouts/one-to-many/one-to-many-report-layout-mobile/one-to-many-report-layout-mobile.component';\nimport { OneToOneReportLayoutDesktopComponent } from './components/layouts/one-to-one/one-to-one-report-layout-desktop/one-to-one-report-layout-desktop.component';\nimport { OneToOneReportLayoutMobileComponent } from './components/layouts/one-to-one/one-to-one-report-layout-mobile/one-to-one-report-layout-mobile.component';\nimport { OnlyAiReportLayoutDesktopComponent } from './components/layouts/only-ai/only-ai-report-layout-desktop/only-ai-report-layout-desktop.component';\nimport { OnlyAiReportLayoutMobileComponent } from './components/layouts/only-ai/only-ai-report-layout-mobile/only-ai-report-layout-mobile.component';\nimport { CopyleaksWebReportComponent } from './copyleaks-web-report.component';\nimport { ExcludedResultsDailogComponent } from './dialogs/filter-result-dailog/components/excluded-results-dailog/excluded-results-dailog.component';\nimport { GeneralFilterResultComponent } from './dialogs/filter-result-dailog/components/general-filter-result/general-filter-result.component';\nimport { IncludedTagsFilterResultComponent } from './dialogs/filter-result-dailog/components/included-tags-filter-result/included-tags-filter-result.component';\nimport {\n\tMatSlideFilterResultComponent,\n\tMatSlideLogoFilterResultComponent,\n} from './dialogs/filter-result-dailog/components/mat-slide-filter-result/mat-slide-filter-result.component';\nimport { MatchTypeFilterResultComponent } from './dialogs/filter-result-dailog/components/match-type-filter-result/match-type-filter-result.component';\nimport { MetaFilterResultComponent } from './dialogs/filter-result-dailog/components/meta-filter-result/meta-filter-result.component';\nimport { SourceTypeFilterResultComponent } from './dialogs/filter-result-dailog/components/source-type-filter-result/source-type-filter-result.component';\nimport { FilterResultDailogComponent } from './dialogs/filter-result-dailog/filter-result-dailog.component';\nimport { FilterResultDailogService } from './dialogs/filter-result-dailog/services/filter-result-dailog.service';\nimport { OriginalHtmlHelperComponent } from './directives/original-html-helper.directive';\nimport { OriginalTextHelperDirective } from './directives/original-text-helper.directive';\nimport { CrReportScoreTooltipModule } from './directives/report-score-tooltip/cr-report-score-tooltip-content.module';\nimport { SourceHtmlHelperComponent } from './directives/source-html-helper.directive';\nimport { SourceTextHelperDirective } from './directives/source-text-helper.directive';\nimport { SuspectHtmlHelperComponent } from './directives/suspect-html-helper.directive';\nimport { SuspectTextHelperDirective } from './directives/suspect-text-helper.directive';\nimport { SimilarityPipeModule } from './pipes/similarity-pipe/similarity-pipe.module';\nimport { ReportRealtimeResultsService } from './services/report-realtime-results.service';\nimport { RemoveResultConfirmationDialogComponent } from './dialogs/remove-result-confirmation-dialog/remove-result-confirmation-dialog.component';\nimport { CrSpinnerModule } from './components/core/cr-spinner/cr-spinner.module';\nimport { DecodeUriPipeModule } from './pipes/decode-uri/decode-uri.module';\nimport { ReportCorrectionsContainerComponent } from './components/containers/report-corrections-container/report-corrections-container.component';\nimport { CrCorrectionComponent } from './components/core/cr-correction/cr-correction.component';\nimport { CrReadabilityScoreComponent } from './components/core/cr-readability-score/cr-readability-score.component';\nimport { CrCategoriesAnalysisTypePanelComponent } from './components/core/cr-categories-analysis-panel/cr-categories-analysis-panel.component';\nimport { CrCorrectionsActionsComponent } from './components/core/cr-corrections-actions/cr-corrections-actions.component';\nimport { FilterCorrectionsDialogComponent } from './dialogs/filter-corrections-dialog/filter-corrections-dialog.component';\nimport { FilterCorrectionsDialogService } from './dialogs/filter-corrections-dialog/services/filter-corrections-dialog.service';\nimport { NgxChartsModule } from '@swimlane/ngx-charts';\nimport { SecondsToTimePipeModule } from './pipes/seconds-to-time/seconds-to-time.module';\nimport { ExcludedDomainsInputComponent } from './dialogs/filter-result-dailog/components/excluded-domains-input/excluded-domains-input.component';\nimport {\n\tCrResultDisclaimerComponent,\n\tCrResultDisclaimerDescriptionComponent,\n\tCrResultDisclaimerTitleComponent,\n} from './components/core/cr-result-disclaimer/cr-result-disclaimer.component';\nimport { CrReportMatchTooltipModule } from './directives/report-match-tooltip/cr-report-match-tooltip-content.module';\nimport { CrBannerSectionComponent } from './components/core/cr-banner-section/cr-banner-section.component';\nimport { CrAiDisclaimerComponent } from './components/core/cr-ai-disclaimer/cr-ai-disclaimer.component';\nimport { CrAssessmentToolTabScorePanelComponent } from './components/core/cr-assessment-tool-tab-score-panel/cr-assessment-tool-tab-score-panel.component';\nimport { ReportMatchHighlightService } from './services/report-match-highlight.service';\nimport { ReportMatchesService } from './services/report-matches.service';\nimport { ReportViewService } from './services/report-view.service';\nimport { ReportDataService } from './services/report-data.service';\nimport { ReportErrorsService } from './services/report-errors.service';\nimport { FileNamePipeModule } from './pipes/file-name/file-name.module';\nimport { ContentAiContainerComponent } from './components/containers/content-ai-container/content-ai-container.component';\nimport { AiPercentageComponent } from './components/containers/content-ai-container/components/ai-percentage/ai-percentage.component';\nimport { ExplainableAIResultContainerComponent } from './components/containers/content-ai-container/components/explainable-ai-result-container/explainable-ai-result-container.component';\nimport { ResourcesContainerComponent } from './components/containers/content-ai-container/components/resourcess-container/resources-container.component';\nimport { ReportAIResultsService } from './services/report-ai-results.service';\nimport { CrAIScoreTooltipContentModule } from './directives/cr-ai-score-tooltip-content/cr-ai-score-tooltip-content.module';\nimport { FormaDecimalPipeModule } from './pipes/forma-decimal-number/forma-decimal-number.module';\nimport { RemoveProtocolPipeModule } from './pipes/remove-protocol/remove-protocol.module';\nimport { CrAiLogicBannerComponent } from './components/core/cr-ai-logic-banner/cr-ai-logic-banner.component';\nimport { CrAiSourceMatchEntryComponent } from './components/core/cr-ai-source-match-entry/cr-ai-source-match-entry.component';\nimport { CrAiPhrasesEntryComponent } from './components/core/cr-ai-phrases-entry/cr-ai-phrases-entry.component';\nimport { CrAiSourceMatchUpgradeComponent } from './components/core/cr-ai-source-match-upgrade/cr-ai-source-match-upgrade.component';\nimport { CrAiPhrasesMobileHeaderComponent } from './components/core/cr-ai-phrases-mobile-header/cr-ai-phrases-mobile-header.component';\nimport { CrRealTimeResultSectionAnimationComponent } from './components/core/cr-real-time-result-section-animation/cr-real-time-result-section-animation.component';\n\n@NgModule({\n\tdeclarations: [\n\t\tCopyleaksWebReportComponent,\n\t\tCrActionsComponent,\n\t\tCrCustomTabsComponent,\n\t\tCrCustomTabItemComponent,\n\t\tCrCustomTabItemContentComponent,\n\t\tCrCustomTabItemTitleComponent,\n\t\tCrCustomTabItemResultSectionComponent,\n\t\tCrCustomEmptyResultsComponent,\n\t\tCrCustomResultsComponent,\n\t\tCrCustomResultsBoxContentComponent,\n\t\tResultsActionsComponent,\n\t\tReportResultsItemComponent,\n\t\tReportResultsContainerComponent,\n\t\tEmptyResultStateComponent,\n\t\tContentViewerContainerComponent,\n\t\tCrTextMatchComponent,\n\t\tOriginalTextHelperDirective,\n\t\tOriginalHtmlHelperComponent,\n\t\tSourceHtmlHelperComponent,\n\t\tSuspectHtmlHelperComponent,\n\t\tSourceTextHelperDirective,\n\t\tSuspectTextHelperDirective,\n\t\tReportActionsContainerComponent,\n\t\tReportAlertsContainerComponent,\n\t\tAlertCardComponent,\n\t\tAuthorAlertCardComponent,\n\t\tReportResultsItemContainerComponent,\n\t\tReportExpandResultItemComponent,\n\t\tPercentageResultItemComponent,\n\t\tReportTabsContainerComponent,\n\t\tReportCorrectionsContainerComponent,\n\t\tOneToManyReportLayoutDesktopComponent,\n\t\tOneToManyReportLayoutMobileComponent,\n\t\tOneToOneReportLayoutDesktopComponent,\n\t\tOneToOneReportLayoutMobileComponent,\n\t\tOnlyAiReportLayoutDesktopComponent,\n\t\tOnlyAiReportLayoutMobileComponent,\n\t\tFilterResultDailogComponent,\n\t\tRemoveResultConfirmationDialogComponent,\n\t\tSourceTypeFilterResultComponent,\n\t\tMatchTypeFilterResultComponent,\n\t\tGeneralFilterResultComponent,\n\t\tIncludedTagsFilterResultComponent,\n\t\tMetaFilterResultComponent,\n\t\tMatSlideFilterResultComponent,\n\t\tMatSlideLogoFilterResultComponent,\n\t\tExcludedResultsDailogComponent,\n\t\tCrCorrectionComponent,\n\t\tCrReadabilityScoreComponent,\n\t\tCrCategoriesAnalysisTypePanelComponent,\n\t\tCrCorrectionsActionsComponent,\n\t\tFilterCorrectionsDialogComponent,\n\t\tExcludedDomainsInputComponent,\n\t\tCrResultDisclaimerComponent,\n\t\tCrResultDisclaimerDescriptionComponent,\n\t\tCrResultDisclaimerTitleComponent,\n\t\tCrBannerSectionComponent,\n\t\tCrAiDisclaimerComponent,\n\t\tCrAssessmentToolTabScorePanelComponent,\n\t\tContentAiContainerComponent,\n\t\tAiPercentageComponent,\n\t\tExplainableAIResultContainerComponent,\n\t\tResourcesContainerComponent,\n\t\tCrAiLogicBannerComponent,\n\t\tCrAiSourceMatchEntryComponent,\n\t\tCrAiPhrasesEntryComponent,\n\t\tCrAiSourceMatchUpgradeComponent,\n\t\tCrAiPhrasesMobileHeaderComponent,\n\t\tCrRealTimeResultSectionAnimationComponent,\n\t],\n\timports: [\n\t\tCommonModule,\n\t\tMatIconModule,\n\t\tNgxSkeletonLoaderModule,\n\t\tFormsModule,\n\t\tMatFormFieldModule,\n\t\tReactiveFormsModule,\n\t\tFlexLayoutModule,\n\t\tRemoveProtocolPipeModule,\n\t\tMatChipsModule,\n\t\tMatMenuModule,\n\t\tMatInputModule,\n\t\tMatButtonModule,\n\t\tMatDialogModule,\n\t\tScrollingModule,\n\t\tCrButtonModule,\n\t\tMatTooltipModule,\n\t\tCrPaginatorModule,\n\t\tCrPoweredByModule,\n\t\tMatExpansionModule,\n\t\tSimilarityPipeModule,\n\t\tDecodeUriPipeModule,\n\t\tFileNamePipeModule,\n\t\tFormaDecimalPipeModule,\n\t\tSecondsToTimePipeModule,\n\t\tCrReportScoreTooltipModule,\n\t\tCrReportMatchTooltipModule,\n\t\tCrAIScoreTooltipContentModule,\n\t\tMatSlideToggleModule,\n\t\tMatDividerModule,\n\t\tMatSliderModule,\n\t\tMatCheckboxModule,\n\t\tMatProgressBarModule,\n\t\tCrSpinnerModule,\n\t\tNgxChartsModule,\n\t],\n\texports: [\n\t\tCopyleaksWebReportComponent,\n\t\tCrActionsComponent,\n\t\tCrCustomTabsComponent,\n\t\tCrCustomTabItemComponent,\n\t\tCrCustomTabItemContentComponent,\n\t\tCrCustomTabItemResultSectionComponent,\n\t\tCrCustomTabItemTitleComponent,\n\t\tCrCustomEmptyResultsComponent,\n\t\tCrCustomResultsComponent,\n\t\tCrCustomResultsBoxContentComponent,\n\t\tCrBannerSectionComponent,\n\t\tEmptyResultStateComponent,\n\t\tContentViewerContainerComponent,\n\t\tCrAiSourceMatchUpgradeComponent,\n\t],\n\tproviders: [\n\t\tReportRealtimeResultsService,\n\t\tFilterResultDailogService,\n\t\tFilterCorrectionsDialogService,\n\t\tDatePipe,\n\t\tReportViewService,\n\t\tReportMatchHighlightService,\n\t\tReportMatchesService,\n\t\tReportDataService,\n\t\tReportErrorsService,\n\t\tReportAIResultsService,\n\t],\n})\nexport class CopyleaksWebReportModule {}\n","import {\n\tECompleteResultNotificationAlertSeverity as ECompleteResultNotificationAlertSeverity,\n\tEExcludeReason,\n\tEResultPreviewType,\n\tEScanStatus,\n\tEWritingFeedbackCategories,\n} from '../enums/copyleaks-web-report.enums';\n\n//#region Crawled version related models\n/**\n *\n */\nexport interface IScanSource {\n\tmetadata: ISourceMetadataSection;\n\ttext: ISourceTextSection;\n\thtml: ISourceHtmlSection;\n\tversion?: number;\n}\n\n/**\n * Type representing the metadata of a source document\n */\nexport interface ISourceMetadataSection {\n\twords: number;\n\texcluded: number;\n}\n\n/**\n * Type representing `html` data of a source document\n */\nexport interface ISourceHtmlSection {\n\texclude: IHtmlExclude;\n\tvalue: string;\n}\n\n/**\n * Type representing `text` data of a source document\n */\nexport interface ISourceTextSection {\n\texclude: ITextExclude;\n\tpages: {\n\t\tstartPosition: number[];\n\t};\n\tvalue: string;\n}\n\n/**\n * Base type for representing an excluded part of source document's content\n */\nexport interface IBaseExclude {\n\tstarts: number[];\n\tlengths: number[];\n\treasons: EExcludeReason[];\n}\n\n/**\n * Type representing excluded `html` of a source document\n */\nexport interface IHtmlExclude extends IBaseExclude {\n\tgroupIds: number[];\n}\n\n/**\n * Type representing excluded `text` of a source document\n */\nexport interface ITextExclude extends IBaseExclude {\n\tgroupIds: void;\n}\n\n//#endregion\n\n//#region Complete results related models\n\n/** Progress endpoint response from Copyleaks api */\nexport interface IAPIProgress {\n\tpercents: number;\n\terrorCode?: number;\n\tstatus?: EScanStatus;\n}\n\n/** A basic response from Copyleaks api */\nexport interface IBasicResponse {\n\tstatus: EScanStatus;\n\terror?: IScanError;\n\tdeveloperPayload?: string;\n}\n\n/** An error response from Copyleaks api */\nexport interface IScanError {\n\tmessage?: string;\n\tcode: number;\n}\n\n/** A scan complete response from Copyleaks api */\nexport interface ICompleteResults extends IBasicResponse {\n\tscannedDocument: IScannedDocument;\n\tresults: IResultPreviews;\n\tfilters?: ICompleteResultsFilters;\n\tnotifications?: ICompleteResultNotification;\n\twritingFeedback?: ICompleteResultWritingFeedback;\n}\n\n/**\n * A notification of a complete response from Copyleaks api\n */\nexport interface ICompleteResultNotification {\n\talerts: ICompleteResultNotificationAlert[];\n}\n/**\n * A notification alert of a complete response from Copyleaks api\n */\nexport interface ICompleteResultNotificationAlert {\n\tadditionalData: string;\n\tcode: string;\n\thelpLink: string;\n\tmessage: string;\n\tseverity: ECompleteResultNotificationAlertSeverity;\n\ttitle: string;\n}\n\n/**\n * A result preview of a complete response from Copyleaks api\n */\nexport interface IResultPreviews {\n\tinternet: IInternetResultPreview[];\n\tdatabase: IDatabaseResultPreview[];\n\tbatch: IBatchResultPreview[];\n\trepositories?: IRepositoryResultPreview[];\n\tscore: IScore;\n}\n\n/*\n * A results filters for report view\n */\nexport interface ICompleteResultsFilters {\n\texecludedResultIds?: string[];\n\tfilteredResultIds?: string[];\n\tgeneral?: IGeneralFilters;\n\tsourceType?: ISourceTypeFilters;\n\tmatchType?: IMatchTypeFilters;\n\tresultsMetaData?: IResultsMetaDataFilters;\n\tincludedTags?: string[];\n\twritingFeedback?: IWritingFeedbackFilter;\n\texcludedDomains?: string[];\n\tisFilterEnabled?: boolean;\n}\n\nexport interface IGeneralFilters {\n\ttopResult: boolean;\n\talerts: boolean;\n\tauthorSubmissions: boolean;\n}\n\nexport interface IMatchTypeFilters {\n\tidenticalText: boolean;\n\tminorChanges: boolean;\n\tparaphrased: boolean;\n}\n\nexport interface ISourceTypeFilters {\n\tinternet: boolean;\n\tinternalDatabase: boolean;\n\tbatch: boolean;\n\trepositories: string[];\n\tyourResults?: boolean;\n\tothersResults?: boolean;\n\taiSourceMatch?: boolean;\n}\n\nexport interface IResultsMetaDataFilters {\n\twordLimit: IWordLimitFilter;\n\tpublicationDate: IPublicationDateFilter;\n}\n\nexport interface IWordLimitFilter {\n\twordLimitEnabled: boolean;\n\ttotalWordLimit?: number;\n}\n\nexport interface IPublicationDateFilter {\n\tpublicationEnabled: boolean;\n\tstartDate?: Date;\n\tresultsWithNoDates: boolean;\n}\n\nexport interface IWritingFeedbackFilter {\n\thiddenCategories?: EWritingFeedbackCategories[];\n\texcludedCorrections?: IExcludedCorrection[];\n}\n\nexport interface IExcludedCorrection {\n\twrongText: string;\n\tcorrectionText: string;\n\ttype: EWritingFeedbackCategories;\n\tstart: number;\n\tend: number;\n\tindex: number;\n}\n\n/** Type representing a summary of the scanned document from Copyleaks api */\nexport interface IScannedDocument {\n\tscanId: string;\n\ttotalWords: number;\n\ttotalExcluded: number;\n\tcredits: number;\n\texpectedCredits?: number;\n\tcreationTime: string;\n\tmetadata?: IResultMetaData;\n\tenabled?: IScanEnabledSettings;\n}\n\nexport interface IScanEnabledSettings {\n\taiDetection: boolean;\n\tplagiarismDetection: boolean;\n\twritingFeedback: boolean;\n\tpdfReport: boolean;\n\tcheatDetection: boolean;\n\taiSourceMatch?: boolean;\n}\n\n/** Type representing a summary of the reuslts of a scanned document */\nexport interface IScore {\n\tidenticalWords: number;\n\tminorChangedWords: number;\n\trelatedMeaningWords: number;\n\taggregatedScore: number;\n\twritingFeedbackOverallIssues?: number;\n\twritingFeedbackOverallScore?: number;\n}\n\n/** Base type for a result preview  */\nexport interface IResultPreviewBase {\n\tisLocked?: boolean;\n\tid: string;\n\ttitle: string;\n\tintroduction: string;\n\ttype: EResultPreviewType;\n\tmatchedWords: number;\n\tidenticalWords?: number;\n\tsimilarWords?: number;\n\tparaphrasedWords?: number;\n\tscanId?: string | void;\n\turl?: string | void;\n\tmetadata?: IResultMetaData;\n\ttags?: IResultTag[];\n}\n\n/** Type of tag for result preview tags */\nexport interface IResultTag {\n\tcode: string;\n\ttitle: string;\n\tdescription: string;\n}\n\n/** Type for complete result meta data for scanned docuemnts and result preview */\nexport interface IResultMetaData {\n\tfinalUrl?: string;\n\tcanonicalUrl?: string;\n\tauthor?: string;\n\torganization?: string;\n\tfilename?: string;\n\tpublishDate?: string;\n\tcreationDate?: string;\n\tlastModificationDate?: string;\n\tsubmissionDate?: string;\n\tsubmittedBy?: string;\n\tcustomMetadata?: ICustomMetaData[];\n}\n/** custom meta data */\nexport interface ICustomMetaData {\n\tkey?: string;\n\tvalue?: string;\n}\n\n/** Type containing a preview of a result from the internet */\nexport interface IInternetResultPreview extends IResultPreviewBase {\n\turl: string;\n\tscanId: void;\n}\n/** Type containing a preview of a result from the copyleaks database */\nexport interface IDatabaseResultPreview extends IResultPreviewBase {\n\turl: void;\n\tscanId?: string;\n}\n/** Type containing a preview of a result from a batch scan */\nexport interface IBatchResultPreview extends IResultPreviewBase {\n\tscanId: string;\n\turl: void;\n}\n/** Type containing a preview of a result from a repository scan */\nexport interface IRepositoryResultPreview extends IResultPreviewBase {\n\trepositoryId: string;\n}\n\n/** Type containing some preview of a result from copyleaks api */\nexport type ResultPreview =\n\t| IInternetResultPreview\n\t| IDatabaseResultPreview\n\t| IBatchResultPreview\n\t| IRepositoryResultPreview;\n//#endregion\n\n//#region Scan result related models\n/** Type representing a scan result from copyleaks api */\nexport interface IResultDetailResponse {\n\tstatistics: IStatistics;\n\ttext: IResultTextSection;\n\thtml: IResultHtmlSection;\n\tversion: number;\n}\n\n/** Type representing the statistics section of a scan result */\nexport interface IStatistics {\n\tidentical: number;\n\tminorChanges: number;\n\trelatedMeaning: number;\n}\n\n/** Base type of a result of some content */\ninterface IResultBase {\n\tcomparison: IComparisonCollection;\n\tvalue?: string;\n}\n\n/** Type representing a result of `html` content */\nexport interface IResultHtmlSection extends IResultBase {\n\tvalue?: string;\n}\n/** Type representing a result of `text` content */\nexport interface IResultTextSection extends IResultBase {\n\tvalue: string;\n\tpages: {\n\t\tstartPosition: number[];\n\t};\n}\n\n/** Request model for deleting a specific result */\nexport interface IDeleteScanResultModel {\n\tresultId: string;\n\ttotalWords: number;\n\ttotalExcluded: number;\n\tidenticalWords: number;\n\tminorChangedWords: number;\n\trelatedMeaningWords: number;\n\taggregatedScore: number;\n}\n\n/** Base type of a comparison */\ninterface IComparisonBase {\n\tsource: IComparisonData;\n\tsuspected: IComparisonData;\n}\n/** Type representing a `text` comparison of a scan result */\nexport interface ITextComparison extends IComparisonBase {\n\tgroupId: void;\n}\n/** Type representing an `html` comparison of a scan result */\nexport interface IHtmlComparison extends IComparisonBase {\n\tgroupId: number[];\n}\n\n/** Type representing a comparison of some content */\nexport type Comparison = ITextComparison | IHtmlComparison;\n\n/** Type representing a bunch of comparisons of a scan result */\nexport interface IComparisonCollection {\n\tidentical: Comparison;\n\tminorChanges: Comparison;\n\trelatedMeaning: Comparison;\n}\n\n/** Type representing the data of a comparison */\nexport interface IComparisonData {\n\tchars: IComparisonRange;\n\twords: IComparisonRange;\n}\n/** Type representing the matches of a comparison of some kind */\nexport interface IComparisonRange {\n\tstarts: number[];\n\tlengths: number[];\n}\n//#endregion\n\n//#region Grammar Feedback related models\nexport interface IWritingFeedback {\n\tscore: IWritingFeedbackScore;\n\tcorrections: IWritingFeedbackScanScource;\n\tscannedDocument: IScannedDocument;\n\tscanType: string;\n}\n\nexport interface IWritingFeedbackRange {\n\tstarts: number[];\n\tlengths: number[];\n\ttypes: EWritingFeedbackCategories[];\n\toperationTexts: string[];\n}\n\nexport interface IHtmlWritingFeedbackRange extends IWritingFeedbackRange {\n\tgroupIds: number[];\n}\n\nexport interface IWritingFeedbackScore {\n\treadability: IReadabilityScore;\n\tstatistics: IWritingFeedbackStatistics;\n\tcorrections: IWritingFeedbackCorrections;\n}\n\nexport interface IReadabilityScore {\n\tscore: number;\n\treadabilityLevel: number;\n\treadabilityLevelText: string;\n\treadabilityLevelDescription: string;\n}\n\nexport interface IWritingFeedbackStatistics {\n\tsentenceCount: number;\n\taverageSentenceLength: number;\n\taverageWordLength: number;\n\treadingTimeSeconds: number;\n\tspeakingTimeSeconds: number;\n}\n\nexport interface IWritingFeedbackCorrections {\n\tgrammarCorrectionsCount: number;\n\tgrammarCorrectionsScore: number;\n\tgrammarScoreWeight: number;\n\tmechanicsCorrectionsCount: number;\n\tmechanicsCorrectionsScore: number;\n\tmechanicsScoreWeight: number;\n\tsentenceStructureCorrectionsCount: number;\n\tsentenceStructureCorrectionsScore: number;\n\tsentenceStructureScoreWeight: number;\n\twordChoiceCorrectionsCount: number;\n\twordChoiceCorrectionsScore: number;\n\twordChoiceScoreWeight: number;\n\toverallScore: number;\n}\n\nexport interface IWritingFeedbackScanScource {\n\ttext: IWritingFeedbackTextSection;\n\thtml: IWritingFeedbackHtmlSection;\n}\n\nexport interface IWritingFeedbackTextSection {\n\tchars: IWritingFeedbackRange;\n}\n\nexport interface IWritingFeedbackHtmlSection {\n\tchars: IHtmlWritingFeedbackRange;\n}\n\nexport interface ICompleteResultWritingFeedback {\n\tscore: IWritingFeedbackCorrections;\n\ttextStatistics: IWritingFeedbackStatistics;\n\treadability: IReadabilityScore;\n}\n\nexport interface IWritingFeedbackCorrectionViewModel {\n\twrongText: string;\n\tcorrectionText: string;\n\ttype: EWritingFeedbackCategories;\n\tstart: number;\n\tend: number;\n\tindex: number;\n}\n//#region\n","/*\n * Public API Surface of copyleaks-web-report\n */\n\n// Exported models\nexport * from './lib/components/core/cr-custom-results/models/cr-custom-results.enums';\nexport * from './lib/copyleaks-web-report.module';\nexport * from './lib/enums/copyleaks-web-report.enums';\nexport * from './lib/models/report-config.models';\nexport * from './lib/models/report-data.models';\nexport * from './lib/models/report-errors.models';\nexport * from './lib/models/report-matches.models';\nexport * from './lib/models/report-iframe-events.models';\nexport * from './lib/models/report-view.models';\nexport * from './lib/constants/report-scan-errors.constants';\n\n// Exported components\nexport * from './lib/components/containers/report-results-container/components/empty-result-state/empty-result-state.component';\nexport * from './lib/components/core/cr-custom-empty-results/cr-custom-empty-results.component';\nexport * from './lib/components/core/cr-custom-results/components/cr-custom-results-box-content/cr-custom-results-box-content.component';\nexport * from './lib/components/core/cr-custom-results/cr-custom-results.component';\nexport * from './lib/components/core/cr-custom-tabs/components/cr-custom-tab-item/cr-custom-tab-item.component';\nexport * from './lib/components/core/cr-custom-tabs/cr-custom-tabs.component';\nexport * from './lib/components/core/cr-report-actions/cr-actions.component';\nexport * from './lib/components/core/cr-banner-section/cr-banner-section.component';\nexport * from './lib/components/core/cr-ai-source-match-upgrade/cr-ai-source-match-upgrade.component';\nexport * from './lib/components/containers/content-viewer-container/content-viewer-container.component';\nexport * from './lib/copyleaks-web-report.component';\n\n// Exported services\nexport * from './lib/services/report-realtime-results.service';\nexport * from './lib/services/report-match-highlight.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["findNests","onDocumentReady","ready","helpers.onTextMatchChange","i1.ReportViewService","i1","i2","i5","i1.ReportMatchHighlightService","i2.ReportViewService","helpers.findNextPageWithMatch","helpers.findPrevPageWithMatch","helpers.calculateStatistics","helpers.getWritingFeedbackStatistics","helpers.getAiStatistics","i3.ReportErrorsService","i4","i2.ReportDataService","i3.ReportMatchHighlightService","helpers.processSourceHtml","helpers.processSourceText","helpers.processSuspectText","helpers.processSuspectHtml","helpers.processAIInsightsTextMatches","helpers.processAIInsightsHTMLMatches","helpers.processSuspectedCharacterMatches","helpers.processCorrectionsHtml","helpers.processCorrectionsText","i1.ReportDataService","i2.ReportMatchHighlightService","i3.ReportMatchesService","helpers.findRespectiveMatch","helpers.findRespectivePage","i3.ReportDataService","i3","i6.DecodeUriPipe","helpers.getRenderedMatches","i8","i9","i10.CrPaginatorComponent","i11.CrPoweredByComponent","i12.CrReportMatchTooltipDirective","i13.CrTextMatchComponent","i14.OriginalTextHelperDirective","i15.OriginalHtmlHelperComponent","i16.SourceHtmlHelperComponent","i17.SuspectHtmlHelperComponent","i18.SourceTextHelperDirective","i19.SuspectTextHelperDirective","i20.AuthorAlertCardComponent","i21.FileNamePipe","i1.ReportNgTemplatesService","i6","i7.DecodeUriPipe","i7","i8.AlertCardComponent","i7.CrSpinnerComponent","i1.FilterResultDailogService","i9.MatSlideFilterResultComponent","i9.MatSlideLogoFilterResultComponent","i4.MatSlideFilterResultComponent","i4.MatSlideLogoFilterResultComponent","i10","i11","i12.DecodeUriPipe","i8.MatSlideFilterResultComponent","i2.CrButtonComponent","i2.SimilarityPipe","i7.ReportScoreTooltipDirective","i8.SimilarityPipe","i12.PercentageResultItemComponent","i13.RemoveProtocolPipe","i14.DecodeUriPipe","i10.ReportResultsItemComponent","i9.CrButtonComponent","i12.SourceTypeFilterResultComponent","i13.MatchTypeFilterResultComponent","i14.GeneralFilterResultComponent","i15.IncludedTagsFilterResultComponent","i16.MetaFilterResultComponent","i17.ExcludedResultsDailogComponent","i18.ExcludedDomainsInputComponent","i3.ReportViewService","i4.ReportMatchHighlightService","i12","i13","i14","i15","i16","i17.CrSpinnerComponent","i3.ReportNgTemplatesService","i4.ReportViewService","i12.ResultsActionsComponent","i13.ReportResultsItemComponent","i14.EmptyResultStateComponent","i15.CrCategoriesAnalysisTypePanelComponent","i16.CrRealTimeResultSectionAnimationComponent","i3.ReportExpandResultItemComponent","i4.CrResultDisclaimerComponent","i4.CrResultDisclaimerDescriptionComponent","i4.CrResultDisclaimerTitleComponent","i9.ReportScoreTooltipDirective","i5.ResultsActionsComponent","i6.ReportResultsItemComponent","i13.CrButtonComponent","i15.CrCorrectionComponent","i13.EmptyResultStateComponent","i14.CrCorrectionComponent","i16.CrCorrectionsActionsComponent","i6.SecondsToTimePipe","i9.CrReportScoreTooltipContentComponent","i11.ReportScoreTooltipDirective","i12.SimilarityPipe","i8.CrButtonComponent","i9.CrAIScoreTooltipContentDirective","i12.CrAIScoreTooltipContentDirective","i13.CrAiSourceMatchEntryComponent","i14.CrAiPhrasesEntryComponent","i15.FormaDecimalNumberPipe","i1.ReportAIResultsService","i4.ReportNgTemplatesService","i5.ReportViewService","i8.AiPercentageComponent","i9.ExplainableAIResultContainerComponent","i10.ResourcesContainerComponent","i5.ReportStatisticsService","i6.ReportNgTemplatesService","i7.ReportRealtimeResultsService","i8.ReportErrorsService","i11.ReportResultsContainerComponent","i12.ContentViewerContainerComponent","i13.ReportActionsContainerComponent","i14.ReportAlertsContainerComponent","i15.ReportTabsContainerComponent","i16.ReportCorrectionsContainerComponent","i17.CrReadabilityScoreComponent","i18.CrAssessmentToolTabScorePanelComponent","i19.ContentAiContainerComponent","i1.ReportMatchesService","i10.CrAIScoreTooltipContentDirective","i13.CrPoweredByComponent","i14.ReportResultsContainerComponent","i15.ContentViewerContainerComponent","i16.ReportActionsContainerComponent","i17.ReportAlertsContainerComponent","i18.ReportTabsContainerComponent","i19.ReportCorrectionsContainerComponent","i20.CrReadabilityScoreComponent","i21.CrAssessmentToolTabScorePanelComponent","i22.ContentAiContainerComponent","i23.CrAiPhrasesMobileHeaderComponent","i24.CrRealTimeResultSectionAnimationComponent","i10.ContentViewerContainerComponent","i11.ReportResultsItemContainerComponent","i10.CrPoweredByComponent","i11.ContentViewerContainerComponent","i12.ReportActionsContainerComponent","i13.ReportResultsItemContainerComponent","i9.ContentViewerContainerComponent","i10.ReportActionsContainerComponent","i11.ReportTabsContainerComponent","i9.CrPoweredByComponent","i11.ReportActionsContainerComponent","i12.ReportTabsContainerComponent","i2.ReportNgTemplatesService","i4.ReportRealtimeResultsService","i6.ReportViewService","i7.ReportErrorsService","i8.ReportAIResultsService","i9.ReportMatchesService","i12.OneToManyReportLayoutDesktopComponent","i13.OneToManyReportLayoutMobileComponent","i14.OneToOneReportLayoutDesktopComponent","i15.OneToOneReportLayoutMobileComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAAY;AAAZ,CAAA,UAAY,wBAAwB,EAAA;AACnC,IAAA,wBAAA,CAAA,wBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW;AACX,IAAA,wBAAA,CAAA,wBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ;AACT,CAAC,EAHW,wBAAwB,KAAxB,wBAAwB,GAGnC,EAAA,CAAA,CAAA;;AC0CD;;AAEG;IACS;AAAZ,CAAA,UAAY,SAAS,EAAA;AACpB,IAAA,SAAA,CAAA,SAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,CAAA,GAAA,UAAa;AACb,IAAA,SAAA,CAAA,SAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa;AACb,IAAA,SAAA,CAAA,SAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAgB;AAChB,IAAA,SAAA,CAAA,SAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAkB;AAClB,IAAA,SAAA,CAAA,SAAA,CAAA,iBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,iBAAmB;AACnB,IAAA,SAAA,CAAA,SAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU;AACV,IAAA,SAAA,CAAA,SAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa;AACb,IAAA,SAAA,CAAA,SAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ;;AAGR,IAAA,SAAA,CAAA,SAAA,CAAA,+BAAA,CAAA,GAAA,GAAA,CAAA,GAAA,+BAAmC;AACpC,CAAC,EAZW,SAAS,KAAT,SAAS,GAYpB,EAAA,CAAA,CAAA;AAED;;AAEG;IACS;AAAZ,CAAA,UAAY,YAAY,EAAA;AACvB,IAAA,YAAA,CAAA,YAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK;AACL,IAAA,YAAA,CAAA,YAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAG;AACJ,CAAC,EAHW,YAAY,KAAZ,YAAY,GAGvB,EAAA,CAAA,CAAA;IA2FW;AAAZ,CAAA,UAAY,eAAe,EAAA;AAC1B,IAAA,eAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,eAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,eAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACd,CAAC,EAJW,eAAe,KAAf,eAAe,GAI1B,EAAA,CAAA,CAAA;;ACnKD;AACO,MAAM,mBAAmB,GAAG,IAAI;AAEvC;AACO,MAAM,aAAa,GAAG,CAAC;AAE9B;AACO,MAAM,aAAa,GAAG,GAAG;;ACPhC;;AAEG;IACS;AAAZ,CAAA,UAAY,WAAW,EAAA;AACtB;;AAEG;AACH,IAAA,WAAA,CAAA,WAAA,CAAA,GAAA,YAAwB;AACxB;;AAEG;AACH,IAAA,WAAA,CAAA,gBAAA,CAAA,GAAA,iBAAkC;AACnC,CAAC,EATW,WAAW,KAAX,WAAW,GAStB,EAAA,CAAA,CAAA;AAED;;AAEG;IACS;AAAZ,CAAA,UAAY,iBAAiB,EAAA;AAC5B;;AAEG;AACH,IAAA,iBAAA,CAAA,UAAA,CAAA,GAAA,YAAuB;AACvB;;AAEG;AACH,IAAA,iBAAA,CAAA,WAAA,CAAA,GAAA,aAAyB;AACzB;;AAEG;AACH,IAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,SAAkB;AAClB;;AAEG;AACH,IAAA,iBAAA,CAAA,iBAAA,CAAA,GAAA,kBAAoC;AACrC,CAAC,EAjBW,iBAAiB,KAAjB,iBAAiB,GAiB5B,EAAA,CAAA,CAAA;AAED;;AAEG;IACS;AAAZ,CAAA,UAAY,qBAAqB,EAAA;AAChC;;AAEG;AACH,IAAA,qBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB;;AAEG;AACH,IAAA,qBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB;;AAEG;AACH,IAAA,qBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AAClB,CAAC,EAbW,qBAAqB,KAArB,qBAAqB,GAahC,EAAA,CAAA,CAAA;IAEW;AAAZ,CAAA,UAAY,eAAe,EAAA;AAC1B,IAAA,eAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,eAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC;AACjC,IAAA,eAAA,CAAA,eAAA,CAAA,GAAA,eAA+B;AAC/B,IAAA,eAAA,CAAA,wBAAA,CAAA,GAAA,wBAAiD;AAClD,CAAC,EALW,eAAe,KAAf,eAAe,GAK1B,EAAA,CAAA,CAAA;IAEW;AAAZ,CAAA,UAAY,2BAA2B,EAAA;AACtC,IAAA,2BAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,2BAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,2BAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,2BAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,2BAAA,CAAA,SAAA,CAAA,GAAA,OAAiB;AAClB,CAAC,EANW,2BAA2B,KAA3B,2BAA2B,GAMtC,EAAA,CAAA,CAAA;IAEW;AAAZ,CAAA,UAAY,uBAAuB,EAAA;AAClC,IAAA,uBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,uBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AAClB,CAAC,EAHW,uBAAuB,KAAvB,uBAAuB,GAGlC,EAAA,CAAA,CAAA;AAED;;AAEG;IACS;AAAZ,CAAA,UAAY,cAAc,EAAA;AACzB,IAAA,cAAA,CAAA,cAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa;AACb,IAAA,cAAA,CAAA,cAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa;AACb,IAAA,cAAA,CAAA,cAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU;AACV,IAAA,cAAA,CAAA,cAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU;AACV,IAAA,cAAA,CAAA,cAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAgB;AAChB,IAAA,cAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAkB;AAClB,IAAA,cAAA,CAAA,cAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAgB;AAChB,IAAA,cAAA,CAAA,cAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAe;AAChB,CAAC,EATW,cAAc,KAAd,cAAc,GASzB,EAAA,CAAA,CAAA;AAED;IACY;AAAZ,CAAA,UAAY,WAAW,EAAA;AACtB,IAAA,WAAA,CAAA,WAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW;AACX,IAAA,WAAA,CAAA,WAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS;AACT,IAAA,WAAA,CAAA,WAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAkB;AAClB,IAAA,WAAA,CAAA,WAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW;AACX,IAAA,WAAA,CAAA,WAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY;AACZ,IAAA,WAAA,CAAA,WAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU;AACV,IAAA,WAAA,CAAA,WAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa;AACb,IAAA,WAAA,CAAA,WAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY;AACZ,IAAA,WAAA,CAAA,WAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAkB;AACnB,CAAC,EAVW,WAAW,KAAX,WAAW,GAUtB,EAAA,CAAA,CAAA;IAEW;AAAZ,CAAA,UAAY,wCAAwC,EAAA;AACnD,IAAA,wCAAA,CAAA,wCAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW;AACX,IAAA,wCAAA,CAAA,wCAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAO;AACP,IAAA,wCAAA,CAAA,wCAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU;AACV,IAAA,wCAAA,CAAA,wCAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ;AACR,IAAA,wCAAA,CAAA,wCAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY;AACb,CAAC,EANW,wCAAwC,KAAxC,wCAAwC,GAMnD,EAAA,CAAA,CAAA;AAED;IACY;AAAZ,CAAA,UAAY,kBAAkB,EAAA;AAC7B,IAAA,kBAAA,CAAA,kBAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK;AACL,IAAA,kBAAA,CAAA,kBAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAU;AACV,IAAA,kBAAA,CAAA,kBAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ;AACR,IAAA,kBAAA,CAAA,kBAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ;;AAGR,IAAA,kBAAA,CAAA,kBAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAa;AACb,IAAA,kBAAA,CAAA,kBAAA,CAAA,sBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,sBAAoB;AACrB,CAAC,EATW,kBAAkB,KAAlB,kBAAkB,GAS7B,EAAA,CAAA,CAAA;AAED;IACY;AAAZ,CAAA,UAAY,YAAY,EAAA;AACvB,IAAA,YAAA,CAAA,YAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACJ,IAAA,YAAA,CAAA,YAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM;AACP,CAAC,EAHW,YAAY,KAAZ,YAAY,GAGvB,EAAA,CAAA,CAAA;IAEW;AAAZ,CAAA,UAAY,oBAAoB,EAAA;AAC/B,IAAA,oBAAA,CAAA,oBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW;AACX,IAAA,oBAAA,CAAA,oBAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS;AACT,IAAA,oBAAA,CAAA,oBAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,GAAA,IAAM;AACN,IAAA,oBAAA,CAAA,oBAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAc;AACd,IAAA,oBAAA,CAAA,oBAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAiB;AAClB,CAAC,EANW,oBAAoB,KAApB,oBAAoB,GAM/B,EAAA,CAAA,CAAA;IAEW;AAAZ,CAAA,UAAY,qBAAqB,EAAA;AAChC,IAAA,qBAAA,CAAA,qBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO;AACP,IAAA,qBAAA,CAAA,qBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO;AACP,IAAA,qBAAA,CAAA,qBAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAU;AACV,IAAA,qBAAA,CAAA,qBAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAS;AACT,IAAA,qBAAA,CAAA,qBAAA,CAAA,mBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,mBAAiB;AACjB,IAAA,qBAAA,CAAA,qBAAA,CAAA,mCAAA,CAAA,GAAA,CAAA,CAAA,GAAA,mCAAiC;AACjC,IAAA,qBAAA,CAAA,qBAAA,CAAA,yCAAA,CAAA,GAAA,CAAA,CAAA,GAAA,yCAAuC;AACvC,IAAA,qBAAA,CAAA,qBAAA,CAAA,sCAAA,CAAA,GAAA,CAAA,CAAA,GAAA,sCAAoC;AACrC,CAAC,EATW,qBAAqB,KAArB,qBAAqB,GAShC,EAAA,CAAA,CAAA;IAEW;AAAZ,CAAA,UAAY,0BAA0B,EAAA;AACrC,IAAA,0BAAA,CAAA,0BAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW;;AAGX,IAAA,0BAAA,CAAA,0BAAA,CAAA,yBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,yBAAuB;AACvB,IAAA,0BAAA,CAAA,0BAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ;AACR,IAAA,0BAAA,CAAA,0BAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ;AACR,IAAA,0BAAA,CAAA,0BAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO;AACP,IAAA,0BAAA,CAAA,0BAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAW;AACX,IAAA,0BAAA,CAAA,0BAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO;AACP,IAAA,0BAAA,CAAA,0BAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAY;AACZ,IAAA,0BAAA,CAAA,0BAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAW;;AAGX,IAAA,0BAAA,CAAA,0BAAA,CAAA,aAAA,CAAA,GAAA,EAAA,CAAA,GAAA,aAAW;AACX,IAAA,0BAAA,CAAA,0BAAA,CAAA,WAAA,CAAA,GAAA,EAAA,CAAA,GAAA,WAAS;;AAGT,IAAA,0BAAA,CAAA,0BAAA,CAAA,gBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,gBAAc;AACd,IAAA,0BAAA,CAAA,0BAAA,CAAA,QAAA,CAAA,GAAA,EAAA,CAAA,GAAA,QAAM;AACN,IAAA,0BAAA,CAAA,0BAAA,CAAA,aAAA,CAAA,GAAA,EAAA,CAAA,GAAA,aAAW;AACX,IAAA,0BAAA,CAAA,0BAAA,CAAA,OAAA,CAAA,GAAA,EAAA,CAAA,GAAA,OAAK;AACL,IAAA,0BAAA,CAAA,0BAAA,CAAA,YAAA,CAAA,GAAA,EAAA,CAAA,GAAA,YAAU;AACV,IAAA,0BAAA,CAAA,0BAAA,CAAA,OAAA,CAAA,GAAA,EAAA,CAAA,GAAA,OAAK;AACL,IAAA,0BAAA,CAAA,0BAAA,CAAA,UAAA,CAAA,GAAA,EAAA,CAAA,GAAA,UAAQ;;AAGR,IAAA,0BAAA,CAAA,0BAAA,CAAA,eAAA,CAAA,GAAA,EAAA,CAAA,GAAA,eAAa;AACb,IAAA,0BAAA,CAAA,0BAAA,CAAA,aAAA,CAAA,GAAA,EAAA,CAAA,GAAA,aAAW;AACX,IAAA,0BAAA,CAAA,0BAAA,CAAA,mBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,mBAAiB;AACjB,IAAA,0BAAA,CAAA,0BAAA,CAAA,yBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,yBAAuB;AACvB,IAAA,0BAAA,CAAA,0BAAA,CAAA,YAAA,CAAA,GAAA,EAAA,CAAA,GAAA,YAAU;AACV,IAAA,0BAAA,CAAA,0BAAA,CAAA,cAAA,CAAA,GAAA,EAAA,CAAA,GAAA,cAAY;;AAGZ,IAAA,0BAAA,CAAA,0BAAA,CAAA,0BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,0BAAwB;AACxB,IAAA,0BAAA,CAAA,0BAAA,CAAA,0BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,0BAAwB;;AAGxB,IAAA,0BAAA,CAAA,0BAAA,CAAA,wBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,wBAAsB;AACtB,IAAA,0BAAA,CAAA,0BAAA,CAAA,wBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,wBAAsB;;AAGtB,IAAA,0BAAA,CAAA,0BAAA,CAAA,qBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,qBAAmB;AACnB,IAAA,0BAAA,CAAA,0BAAA,CAAA,iBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,iBAAe;AACf,IAAA,0BAAA,CAAA,0BAAA,CAAA,mBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,mBAAiB;AACjB,IAAA,0BAAA,CAAA,0BAAA,CAAA,mBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,mBAAiB;AACjB,IAAA,0BAAA,CAAA,0BAAA,CAAA,aAAA,CAAA,GAAA,EAAA,CAAA,GAAA,aAAW;;AAGX,IAAA,0BAAA,CAAA,0BAAA,CAAA,gBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,gBAAc;AACf,CAAC,EAnDW,0BAA0B,KAA1B,0BAA0B,GAmDrC,EAAA,CAAA,CAAA;IAEW;AAAZ,CAAA,UAAY,iBAAiB,EAAA;AAC5B,IAAA,iBAAA,CAAA,iBAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAe;AACf,IAAA,iBAAA,CAAA,iBAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAW;AACX,IAAA,iBAAA,CAAA,iBAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAa;AACb,IAAA,iBAAA,CAAA,iBAAA,CAAA,mBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,mBAAiB;AACjB,IAAA,iBAAA,CAAA,iBAAA,CAAA,oBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,oBAAkB;AAClB,IAAA,iBAAA,CAAA,iBAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAc;AACd,IAAA,iBAAA,CAAA,iBAAA,CAAA,iBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,iBAAe;AACf,IAAA,iBAAA,CAAA,iBAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAY;AACb,CAAC,EATW,iBAAiB,KAAjB,iBAAiB,GAS5B,EAAA,CAAA,CAAA;AAED;;AAEG;IACS;AAAZ,CAAA,UAAY,aAAa,EAAA;AACxB,IAAA,aAAA,CAAA,aAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAO;AACP,IAAA,aAAA,CAAA,aAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAO;AACR,CAAC,EAHW,aAAa,KAAb,aAAa,GAGxB,EAAA,CAAA,CAAA;;ACrND;;;AAGG;AACI,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC;AAE1C;;;AAGG;AACI,MAAM,+BAA+B,GAAG,CAAC,SAAc,KAAI;IACjE,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,UAAU,CAAO,QAAQ,IAAG;;;AAGrD,QAAA,MAAM,cAAc,GAAG,SAAS,CAAC,WAAW;AAC5C,QAAA,IAAI,cAAc,IAAI,IAAI,EAAE;;;AAG3B,YAAA,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC;;;AAG3F,QAAA,SAAS,CAAC,WAAW,GAAG,MAAK;;YAE5B,QAAQ,CAAC,IAAI,EAAE;;YAEf,QAAQ,CAAC,QAAQ,EAAE;;AAEnB,YAAA,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;AAC/B,SAAC;;AAED,QAAA,OAAO,CAAC,CAAM,MAAM,SAAS,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;AACrD,KAAC,CAAC;AACH,CAAC;AAED;;;AAGG;AACI,MAAM,YAAY,GAAG,CAAI,SAAc,KAAiC;AAC9E,IAAA,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,SAAS,EAAE;;QAEtC,+BAA+B,CAAC,SAAS,CAAC;;;AAG3C,IAAA,OAAO,SAAS,CAAI,SAAS,CAAC,QAAQ,CAAC,CAAC;AACzC,CAAC;;AChDD;AACA;AAEO,MAAM,eAAe,GAA8B;IACzD,CAAC,EAAE,SAAS,CAAA,CAAoB,kBAAA,CAAA;IAChC,CAAC,EAAE,SAAS,CAAA,CAAoB,kBAAA,CAAA;IAChC,CAAC,EAAE,SAAS,CAAA,CAAiB,eAAA,CAAA;IAC7B,CAAC,EAAE,SAAS,CAAA,CAAiB,eAAA,CAAA;IAC7B,CAAC,EAAE,SAAS,CAAA,CAAwB,sBAAA,CAAA;IACpC,CAAC,EAAE,SAAS,CAAA,CAA2B,yBAAA,CAAA;IACvC,CAAC,EAAE,SAAS,CAAA,CAA8B,4BAAA,CAAA;IAC1C,CAAC,EAAE,SAAS,CAAA,CAAuB,qBAAA,CAAA;IACnC,CAAC,EAAE,SAAS,CAAA,CAAiI,+HAAA,CAAA;IAC7I,CAAC,EAAE,SAAS,CAAA,CAAmB,iBAAA,CAAA;IAC/B,EAAE,EAAE,SAAS,CAAA,CAAgB,cAAA,CAAA;IAC7B,EAAE,EAAE,SAAS,CAAA,CAAqC,mCAAA,CAAA;CAClD;;ACUD;AACA,MAAM,qBAAqB,GAAG,CAAC,GAAoB,EAAE,IAAW,KAAqB;IACpF,GAAG,CAAC,IAAI,CAAC;QACR,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,YAAY,CAAC,KAAK;QACxB,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;QAC1B,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,MAAM,EAAE,IAAI,CAAC,MAAM;AACnB,KAAA,CAAC;IACF,GAAG,CAAC,IAAI,CAAC;QACR,KAAK,EAAE,IAAI,CAAC,GAAG;QACf,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,YAAY,CAAC,GAAG;QACtB,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;QAC1B,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,MAAM,EAAE,IAAI,CAAC,MAAM;AACnB,KAAA,CAAC;AACF,IAAA,OAAO,GAAG;AACX,CAAC;AAED;;AAEG;AACI,MAAM,eAAe,GAAG,CAAC,SAAkB,EAAE,MAAc,KAAa;IAC9E,IAAI,KAAK,GAAG,CAAC;IACb,MAAM,GAAG,GAAG,MAAM;AAClB,IAAA,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3B,QAAA,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;;AAE9C,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,QAAA,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC;AAC5B,QAAA,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE;YAC1B,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;AAC3E,YAAA,CAAC,EAAE;;AAEJ,QAAA,KAAK,GAAG,OAAO,CAAC,GAAG;;IAEpB,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AAC5C,IAAA,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE;QAC9C,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;;AAEpE,IAAA,OAAO,SAAS;AACjB,CAAC;AAED;;;AAGG;AACI,MAAMA,WAAS,GAAG,CAAC,OAAgB,KAAe;AACxD,IAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACzB,QAAA,OAAO,EAAE;;AAEV,IAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;IAC7E,MAAM,KAAK,GAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,IAAI,eAAe,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG;IACpC,IAAI,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM;IAE1C,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AACxC,QAAA,IACC,QAAQ,CAAC,KAAK,GAAG,eAAe;AAChC,aAAC,QAAQ,CAAC,KAAK,KAAK,eAAe,IAAI,QAAQ,CAAC,MAAM,KAAK,kBAAkB,CAAC,EAC7E;AACD,YAAA,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AACtB,YAAA,eAAe,GAAG,QAAQ,CAAC,GAAG;;aACxB;AACN,YAAA,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;YACtC,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,GAAG,CAAC;;AAE1D,QAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAM;;AAErC,IAAA,OAAO,KAAK;AACb,CAAC;AAED;;;;AAIG;AACH,MAAM,kBAAkB,GAAG,CAAC,OAAgB,KAAa;AACxD,IAAA,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAC5C,CAAC,IAAa,EAAE,IAAW,KAAI;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAClC,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE;AACvD,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;AAC1C,YAAA,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,IAAI,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACpG,gBAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;;aAErB;AACN,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;;AAEhB,QAAA,OAAO,IAAI;KACX,EACD,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CACZ;IAED,MAAM,SAAS,GAAG;AAChB,SAAA,MAAM,CAAC,qBAAqB,EAAE,EAAE;SAChC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;IAEtD,MAAM,UAAU,GAAY,EAAE;IAC9B,MAAM,KAAK,GAA8B,EAAE;AAC3C,IAAA,MAAM,KAAK,GAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7C,IAAI,KAAK,GAAuB,SAAS;AACzC,IAAA,KAAK,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,SAAS,EAAE;AAChE,QAAA,IAAI,IAAI,KAAK,YAAY,CAAC,KAAK,EAAE;YAChC,IAAI,KAAK,EAAE;AACV,gBAAA,IAAI,KAAK,KAAK,KAAK,EAAE;AACpB,oBAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK;AAC3C,yBAAA,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,KAAK,GAAG,CAAC;yBAC/B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC;oBACrB,UAAU,CAAC,IAAI,CAAC;wBACf,KAAK;AACL,wBAAA,GAAG,EAAE,KAAK;AACV,wBAAA,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjC,wBAAA,GAAG,EAAE,gBAAgB;wBACrB,GAAG;wBACH,MAAM;wBACN,mBAAmB,EAClB,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,KAAK,KAAK,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,eAAe;8BACjF,mBAAmB,IAAI,SAAS;AACpC,wBAAA,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,cAAc;AAC1C,qBAAA,CAAC;;;YAGJ,GAAG,EAAE,OAAO,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtD,YAAA,KAAK,CAAC,IAAI,CAAC,EAAE;YACb,KAAK,GAAG,KAAK;;AAEd,QAAA,IAAI,IAAI,KAAK,YAAY,CAAC,GAAG,EAAE;AAC9B,YAAA,IAAI,KAAK,KAAK,KAAK,EAAE;AACpB,gBAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK;AAC3C,qBAAA,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,KAAK,GAAG,CAAC;qBAC/B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC;gBACrB,UAAU,CAAC,IAAI,CAAC;oBACf,KAAK,EAAE,KAAK,IAAI,CAAC;AACjB,oBAAA,GAAG,EAAE,KAAK;AACV,oBAAA,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjC,oBAAA,GAAG,EAAE,gBAAgB;oBACrB,GAAG;oBACH,MAAM;oBACN,mBAAmB,EAClB,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,KAAK,KAAK,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,eAAe;0BACjF,mBAAmB,IAAI,SAAS;AACpC,oBAAA,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,cAAc;AAC1C,iBAAA,CAAC;;YAEH,GAAG,EAAE,OAAO,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtD,YAAA,KAAK,CAAC,IAAI,CAAC,EAAE;AACb,YAAA,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,GAAG,KAAK;;;AAIjG,IAAA,MAAM,MAAM,GAAY,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CACjD,CAAC,IAAa,EAAE,IAAW,KAAI;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAElC,QAAA,IACC,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,eAAe;AACtC,YAAA,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;YACvB,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EACxD;AACD,YAAA,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG;;aACb;AACN,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;;AAEhB,QAAA,OAAO,IAAI;KACX,EACD,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CACf;AACD,IAAA,OAAO,MAAM;AACd,CAAC;AAED;;;AAGG;AACI,MAAM,YAAY,GAAG,CAAC,OAAgB,KAAa;AACzD,IAAA,MAAM,KAAK,GAAGA,WAAS,CAAC,OAAO,CAAC;IAChC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAa,EAAE,IAAa,KAAI;AAC5D,QAAA,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AACjC,YAAA,OAAO,IAAI;;aACL;AACN,YAAA,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC;AACvC,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;;KAE3B,EAAE,EAAE,CAAC;AACN,IAAA,OAAO,MAAM;AACd,CAAC;AAED;;;;;;AAMG;AACI,MAAM,eAAe,GAAG,CAAC,OAAe,EAAE,KAAe,EAAE,OAAgB,KAAqB;AACtG,IAAA,MAAM,MAAM,GAAoB,CAAC,EAAE,CAAC;IACpC,IAAI,IAAI,GAAG,CAAC;AACZ,IAAA,KAAK,IAAI,KAAK,IAAI,OAAO,EAAE;QAC1B,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE;AACnC,YAAA,IAAI,EAAE;AACN,YAAA,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;;QAElB,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE;YAChC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC;;aACtE;YACN,OAAO,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE;AACnC,gBAAA,MAAM,UAAU,GAAG,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE;gBACvD,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC;gBAC/B,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC;gBAC5E,KAAK,GAAG,UAAU;AAClB,gBAAA,IAAI,EAAE;AACN,gBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;;YAElB,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC;;;AAG9E,IAAA,OAAO,MAAM;AACd,CAAC;AAED;;;;;AAKG;AACH,MAAM,cAAc,GACnB,CAAC,UAAyB,EAAE,OAAmB,EAAE,OAAyB,KAAK,CAAC,IAAsB,KAAI;AACzG,IAAA,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI;AAC3B,IAAA,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE;AAC/D,QAAA,OAAO,EAAE;;AAEV,IAAA,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,OAAO,IAAI,EAAE;IACjE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK;IACjF,OAAO,MAAM,CAAC,GAAG,CAChB,CAAC,KAAK,EAAE,CAAC,MAAa;QACrB,KAAK;AACL,QAAA,GAAG,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC;AACvB,QAAA,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC;QAC3B,GAAG,EAAE,CAAC,EAAE,CAAC;AACT,QAAA,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AACZ,KAAA,CAAC,CACF;AACF,CAAC;AAEF;;;AAGG;AACH,MAAM,eAAe,GAAG,CAAC,OAAmB,KAAK,CAAC,MAAmB,KAAI;IACxE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,EAAE,OAAO,EAAE;AAChC,QAAA,OAAO,EAAE;;AAEV,IAAA,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO;IACvE,OAAO,MAAM,CAAC,GAAG,CAChB,CAAC,KAAK,EAAE,CAAC,MAAa;QACrB,KAAK;AACL,QAAA,GAAG,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC;QACvB,IAAI,EAAE,SAAS,CAAC,QAAQ;AACxB,QAAA,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAClB,QAAA,GAAG,EAAE,EAAE;AACP,QAAA,GAAG,EAAE,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS;AACvC,KAAA,CAAC,CACF;AACF,CAAC;AAED;AACO,MAAM,mBAAmB,GAAG,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC;AAEhF;AACO,MAAM,wBAAwB,GAAG,cAAc,CAAC,gBAAgB,EAAE,MAAM,EAAE,QAAQ,CAAC;AAE1F;AACO,MAAM,sBAAsB,GAAG,cAAc,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,CAAC;AAEtF;AACO,MAAM,mBAAmB,GAAG,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC;AAEhF;AACO,MAAM,wBAAwB,GAAG,cAAc,CAAC,gBAAgB,EAAE,MAAM,EAAE,QAAQ,CAAC;AAE1F;AACO,MAAM,sBAAsB,GAAG,cAAc,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,CAAC;AAEtF;AACO,MAAM,oBAAoB,GAAG,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC;AAEpF;AACO,MAAM,yBAAyB,GAAG,cAAc,CAAC,gBAAgB,EAAE,MAAM,EAAE,WAAW,CAAC;AAE9F;AACO,MAAM,uBAAuB,GAAG,cAAc,CAAC,cAAc,EAAE,MAAM,EAAE,WAAW,CAAC;AAE1F;AACO,MAAM,oBAAoB,GAAG,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC;AAEpF;AACO,MAAM,yBAAyB,GAAG,cAAc,CAAC,gBAAgB,EAAE,MAAM,EAAE,WAAW,CAAC;AAE9F;AACO,MAAM,uBAAuB,GAAG,cAAc,CAAC,cAAc,EAAE,MAAM,EAAE,WAAW,CAAC;AAE1F;AACO,MAAM,kBAAkB,GAAG,eAAe,CAAC,MAAM,CAAC;AAEzD;AACO,MAAM,kBAAkB,GAAG,eAAe,CAAC,MAAM,CAAC;AAEzD;;;;;;;;;AASG;AACI,MAAM,mBAAmB,GAAG,CAAC,KAAa,EAAE,UAAsB,EAAE,UAAU,GAAG,IAAI,KAAsB;AACjH,IAAA,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,UAAU;IACxC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,UAAU,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC;AACzE,IAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACvG,IAAA,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAEM,MAAM,sBAAsB,GAAG,CACrC,WAAwC,EACxC,OAAmB,EACnB,MAAmB,KAChB;AACH,IAAA,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;AAAE,QAAA,OAAO,EAAE;IAEpD,MAAM,IAAI,GAAG,OAAO,KAAK,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE;AAC1E,IAAA,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK;AAC7D,IAAA,MAAM,oBAAoB,GAAG,MAAM,CAAC,GAAG,CACtC,CAAC,KAAK,EAAE,CAAC,MAAa;QACrB,KAAK;AACL,QAAA,GAAG,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC;QACvB,IAAI,EAAE,SAAS,CAAC,eAAe;AAC/B,QAAA,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AACZ,QAAA,mBAAmB,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7B,KAAA,CAAC,CACF;AAED,IAAA,MAAM,QAAQ,GAAG,EAAE,CAAC;AACpB,IAAA,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,GAAG,oBAAoB,EAAE,GAAG,QAAQ,CAAC,CAAC;AACpE,IAAA,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AACjE,IAAA,OAAO,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC;AACnF,CAAC;AAEM,MAAM,sBAAsB,GAAG,CACrC,WAAwC,EACxC,OAAmB,EACnB,MAAmB,KAChB;AACH,IAAA,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;AAAE,QAAA,OAAO,EAAE;IACpD,MAAM,IAAI,GAAG,OAAO,KAAK,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE;AAC1E,IAAA,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK;AAC7D,IAAA,MAAM,oBAAoB,GAAG,MAAM,CAAC,GAAG,CACtC,CAAC,KAAK,EAAE,CAAC,MAAa;QACrB,KAAK;AACL,QAAA,GAAG,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC;QACvB,IAAI,EAAE,SAAS,CAAC,eAAe;AAC/B,QAAA,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AACZ,QAAA,mBAAmB,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7B,QAAA,GAAG,EAAE,EAAE;AACP,KAAA,CAAC,CACF;AACD,IAAA,MAAM,QAAQ,GAAG,EAAE,CAAC;AACpB,IAAA,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,GAAG,oBAAoB,EAAE,GAAG,QAAQ,CAAC,CAAC;AACpE,IAAA,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC;AAEnE,IAAA,OAAO,MAAM;AACd,CAAC;AAED;;;;;;;AAOG;AACI,MAAM,iBAAiB,GAAG,CAChC,OAA8C,EAC9C,QAAiC,EACjC,MAAmB,EACnB,IAAgB,GAAA,IAAI,KACjB;IACH,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;AAC3D,IAAA,MAAM,SAAS,GAAG,QAAQ,CAAC;AAC1B,UAAE,KAAK,CAAC,MAAM,CAAC,CAAC,GAAY,EAAE,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,mBAAmB,GAAG,mBAAmB,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE;UAC3G,EAAE;AACL,IAAA,MAAM,KAAK,GAAG,QAAQ,CAAC;AACtB,UAAE,KAAK,CAAC,MAAM,CAAC,CAAC,GAAY,EAAE,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,sBAAsB,GAAG,sBAAsB,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE;UACjH,EAAE;AACL,IAAA,MAAM,OAAO,GAAG,QAAQ,CAAC;AACxB,UAAE,KAAK,CAAC,MAAM,CACZ,CAAC,GAAY,EAAE,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,wBAAwB,GAAG,wBAAwB,EAAE,GAAG,CAAC,CAAC,EACpG,EAAE;UAEF,EAAE;AACL,IAAA,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC;AAC3C,IAAA,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,GAAG,SAAS,EAAE,GAAG,KAAK,EAAE,GAAG,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAC;AAC/E,IAAA,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AACjE,IAAA,OAAO,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC;AACnF,CAAC;AAED;;;;;AAKG;AACI,MAAM,gCAAgC,GAAG,CAC/C,MAAmB,EACnB,YAA8C,KAC1B;IACpB,MAAM,OAAO,GAAY,EAAE;IAC3B,MAAM,IAAI,GAGN,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC;IAC3C,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;AACxC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC5C,OAAO,CAAC,IAAI,CAAC;AACZ,gBAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACrB,gBAAA,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;gBACrC,IAAI,EAAE,SAAS,CAAC,6BAA6B;AAC7C,gBAAA,GAAG,EAAE,EAAE;AACP,aAAA,CAAC;;;IAIJ,MAAM,OAAO,GAAG,OAAO;AACvB,IAAA,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AACjE,IAAA,OAAO,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC;AACnF,CAAC;AAED;;;;;AAKG;AACI,MAAM,4BAA4B,GAAG,CAC3C,MAAmB,EACnB,YAA8C,EAC9C,aAAA,GAAyB,KAAK,KACV;IACpB,MAAM,OAAO,GAAY,EAAE;IAC3B,IAAI,gBAAgB,GAAG,CAAC;IAExB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,CAAiB;AAC1E,IAAA,MAAM,aAAa,GAAG,aAAa,GAAG,UAAU,EAAE,OAAO,GAAG,IAAI;AAChE,IAAA,MAAM,aAAa,GAAG,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;IAC/E,MAAM,eAAe,GAAG;UACrB,2BAA2B,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU;UACxE,EAAE;;AAGL,IAAA,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,IAAG;QACrC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,KAAwB,KAAI;;AAErD,YAAA,MAAM,aAAa,GAClB,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,MAAM;gBAChD,KAAK;AACL,gBAAA,GAAG,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;AAC1C,gBAAA,IAAI,EAAE,MAAM,CAAC,cAAc,KAAK,oBAAoB,CAAC,EAAE,GAAG,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI;AAC3F,gBAAA,GAAG,EAAE,EAAE;gBACP,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;aACzC,CAAC,CAAC,IAAI,EAAE;;AAGV,YAAA,aAAa,CAAC,OAAO,CAAC,WAAW,IAAG;AACnC,gBAAA,IAAI,WAAW,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,IAAI,gBAAgB,GAAG,aAAa,EAAE;AAC9E,oBAAA,IAAI,WAAW,GAAG,WAAW,CAAC,KAAK;AACnC,oBAAA,IAAI,SAAS,GAAG,WAAW,CAAC,GAAG;;AAG/B,oBAAA,OAAO,gBAAgB,GAAG,aAAa,EAAE;AACxC,wBAAA,MAAM,YAAY,GAAG,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,gBAAgB,CAAC;wBACnF,MAAM,UAAU,GAAG,YAAY,IAAI,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAExG,wBAAA,IAAI,WAAW,GAAG,UAAU,EAAE;AAC7B,4BAAA,gBAAgB,EAAE;AAClB,4BAAA,SAAS;;AAGV,wBAAA,IAAI,SAAS,GAAG,YAAY,EAAE;AAC7B,4BAAA,MAAM;;;AAIP,wBAAA,IAAI,WAAW,GAAG,YAAY,EAAE;AAC/B,4BAAA,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;4BACrE,WAAW,GAAG,YAAY;;;AAI3B,wBAAA,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAC1G,wBAAA,WAAW,GAAG,UAAU,GAAG,CAAC;AAE5B,wBAAA,gBAAgB,EAAE;;;AAInB,oBAAA,IAAI,WAAW,GAAG,SAAS,EAAE;AAC5B,wBAAA,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;;;qBAEzD;AACN,oBAAA,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;AAE5B,aAAC,CAAC;AACH,SAAC,CAAC;AACH,KAAC,CAAC;;AAGF,IAAA,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC;AAC3C,IAAA,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAC;AACvD,IAAA,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;;AAGjE,IAAA,OAAO,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC;AACnF,CAAC;AAED;;AAEG;AACH,MAAM,WAAW,GAAG,CAAC,SAAgB,EAAE,KAAa,EAAE,GAAW,MAAa;AAC7E,IAAA,GAAG,SAAS;IACZ,KAAK;IACL,GAAG;AACH,CAAA,CAAC;AAEF;;AAEG;AACH,MAAM,kBAAkB,GAAG,CAAC,SAAgB,EAAE,KAAa,EAAE,GAAW,EAAE,cAA+B,MAAa;AACrH,IAAA,GAAG,SAAS;IACZ,KAAK;IACL,GAAG;IACH,IAAI,EAAE,SAAS,CAAC,SAAS;IACzB,cAAc;AACd,CAAA,CAAC;AAEF;;;;;AAKG;AACI,MAAM,4BAA4B,GAAG,CAC3C,MAAmB,EACnB,YAA8C,EAC9C,aAAA,GAAyB,KAAK,KAClB;IACZ,MAAM,OAAO,GAAY,EAAE;IAC3B,IAAI,gBAAgB,GAAW,CAAC;IAChC,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,CAAiB;AACxE,IAAA,MAAM,aAAa,GAAG,aAAa,GAAG,UAAU,EAAE,OAAO,IAAI,KAAK,GAAG,KAAK;IAC1E,MAAM,aAAa,GAAG,aAAa,GAAG,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC;IAC9F,MAAM,eAAe,GAAG;UACrB,2BAA2B,CAAC,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU;UAC3E,EAAE;AAEL,IAAA,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,IAAG;QACrC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,KAAwB,KAAI;AACrD,YAAA,MAAM,aAAa,GAAG,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CACpD,CAAC,KAAK,EAAE,GAAG,MACT;gBACA,KAAK;AACL,gBAAA,GAAG,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;AAC1C,gBAAA,IAAI,EAAE,MAAM,CAAC,cAAc,IAAI,oBAAoB,CAAC,EAAE,GAAG,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI;AAC1F,gBAAA,GAAG,EAAE,EAAE;gBACP,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;gBACzC,GAAG,EAAE,CAAC,CAAC;AACK,aAAA,CAAA,CACd;;AAED,YAAA,aAAa,EAAE,OAAO,CAAC,KAAK,IAAG;AAC9B,gBAAA,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC,MAAM,IAAI,gBAAgB,GAAG,aAAa,EAAE;AAChF,oBAAA,IAAI,kBAAkB,GAAG,KAAK,CAAC,KAAK;AACpC,oBAAA,IAAI,gBAAgB,GAAG,KAAK,CAAC,GAAG;AAChC,oBAAA,KAAK,IAAI,CAAC,GAAG,gBAAgB,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE;AACtD,wBAAA,MAAM,YAAY,GAAG,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AAC1E,wBAAA,MAAM,UAAU,GAAG,YAAY,GAAG,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;wBACvF,IAAI,kBAAkB,IAAI,YAAY,IAAI,gBAAgB,IAAI,UAAU,EAAE;AACzE,4BAAA,gBAAgB,GAAG,CAAC,GAAG,CAAC;AACxB,4BAAA,IAAI,kBAAkB,GAAG,YAAY,EAAE;AACtC,gCAAA,MAAM,WAAW,GAAG;AACnB,oCAAA,KAAK,EAAE,kBAAkB;oCACzB,GAAG,EAAE,YAAY,GAAG,CAAC;oCACrB,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,oCAAA,GAAG,EAAE,EAAE;oCACP,GAAG,EAAE,KAAK,CAAC,GAAG;oCACd,cAAc,EAAE,KAAK,CAAC,cAAc;oCACpC,WAAW,EAAE,KAAK,CAAC,WAAW;oCAC9B,UAAU,EAAE,KAAK,CAAC,UAAU;iCACjB;AACZ,gCAAA,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;gCACzB,kBAAkB,GAAG,YAAY;AACjC,gCAAA,CAAC,GAAG,CAAC,GAAG,CAAC;;AACH,iCAAA,IAAI,kBAAkB,IAAI,YAAY,EAAE;AAC9C,gCAAA,MAAM,YAAY,GAAG;AACpB,oCAAA,KAAK,EAAE,YAAY;AACnB,oCAAA,GAAG,EAAE,UAAU;oCACf,IAAI,EAAE,SAAS,CAAC,SAAS;AACzB,oCAAA,GAAG,EAAE,EAAE;AACP,oCAAA,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;oCAC5D,cAAc,EAAE,KAAK,CAAC,cAAc;oCACpC,WAAW,EAAE,KAAK,CAAC,WAAW;oCAC9B,UAAU,EAAE,KAAK,CAAC,UAAU;AAC5B,oCAAA,cAAc,EAAE,eAAe,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;iCAC7E;AACZ,gCAAA,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;AAC1B,gCAAA,kBAAkB,GAAG,UAAU,GAAG,CAAC;;;;AAItC,oBAAA,IAAI,kBAAkB,GAAG,gBAAgB,EAAE;AAC1C,wBAAA,MAAM,UAAU,GAAG;AAClB,4BAAA,KAAK,EAAE,kBAAkB;AACzB,4BAAA,GAAG,EAAE,gBAAgB;4BACrB,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,4BAAA,GAAG,EAAE,EAAE;4BACP,cAAc,EAAE,KAAK,CAAC,cAAc;4BACpC,WAAW,EAAE,KAAK,CAAC,WAAW;4BAC9B,UAAU,EAAE,KAAK,CAAC,UAAU;4BAC5B,GAAG,EAAE,KAAK,CAAC,GAAG;yBACH;AACZ,wBAAA,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;;;qBAEnB,IAAI,KAAK,EAAE;AACjB,oBAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;;AAErB,aAAC,CAAC;;AAEH,SAAC,CAAC;AACH,KAAC,CAAC;AAEF,IAAA,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC;AAC3C,IAAA,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAC;AACvD,IAAA,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC;AAClE,IAAA,OAAO,KAAK;AACb,CAAC;AAEM,MAAM,2BAA2B,GAAG,CAAC,eAAyB,KAAI;IACxE,IAAI,mBAAmB,GAAsB,EAAE;AAC/C,IAAA,IAAI,eAAe,CAAC,MAAM,IAAI,CAAC,EAAE;AAChC,QAAA,OAAO,mBAAmB;;AAE3B,IAAA,MAAM,cAAc,GAAG,eAAe,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC;IACjE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC;IACvC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC;IACxC,MAAM,OAAO,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;AAC/B,IAAA,eAAe,CAAC,OAAO,CAAC,KAAK,IAAG;AAC/B,QAAA,IAAI,KAAK,IAAI,CAAC,CAAC,EAAE;AAChB,YAAA,mBAAmB,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;;aACxC,IAAI,GAAG,IAAI,KAAK,IAAI,KAAK,GAAG,OAAO,EAAE;AAC3C,YAAA,mBAAmB,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;;aACvC,IAAI,OAAO,IAAI,KAAK,IAAI,KAAK,GAAG,OAAO,GAAG,CAAC,EAAE;AACnD,YAAA,mBAAmB,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;;aAC1C,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG,EAAE;AAChD,YAAA,mBAAmB,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;;AAEhD,KAAC,CAAC;AACF,IAAA,OAAO,mBAAmB;AAC3B,CAAC;AAED;;;;;;AAMG;AACI,MAAM,kBAAkB,GAAG,CACjC,OAAyB,EACzB,OAAgC,EAChC,IAAA,GAAgB,IAAI,KACA;IACpB,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,GAAG,CAAC,IAAI,GAAG,oBAAoB,GAAG,oBAAoB,EAAE,OAAO,CAAC,GAAG,EAAE;IAC5G,MAAM,KAAK,GAAG,OAAO,CAAC,gBAAgB,GAAG,CAAC,IAAI,GAAG,uBAAuB,GAAG,uBAAuB,EAAE,OAAO,CAAC,GAAG,EAAE;IACjH,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,GAAG,CAAC,IAAI,GAAG,yBAAyB,GAAG,yBAAyB,EAAE,OAAO,CAAC,GAAG,EAAE;AAClH,IAAA,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,GAAG,SAAS,EAAE,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC,CAAC;AAClE,IAAA,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC;AAClF,IAAA,MAAM,KAAK,GAAG,eAAe,CAC5B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,EAClC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,IAAI,EAAE,EACjD,MAAM,CACN;AACD,IAAA,OAAO,KAAK;AACb,CAAC;AAED;;;;;;AAMG;AACI,MAAM,iBAAiB,GAAG,CAChC,OAA8C,EAC9C,OAAgC,EAChC,MAAmB,KAChB;IACH,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AAC5B,QAAA,OAAO,IAAI;;IAEZ,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;AAC3D,IAAA,MAAM,SAAS,GAAG,OAAO,CAAC;UACvB,KAAK,CAAC,MAAM,CAAC,CAAC,GAAY,EAAE,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE;UAC5E,EAAE;AACL,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC;UACnB,KAAK,CAAC,MAAM,CAAC,CAAC,GAAY,EAAE,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE;UAC/E,EAAE;AACL,IAAA,MAAM,OAAO,GAAG,OAAO,CAAC;UACrB,KAAK,CAAC,MAAM,CAAC,CAAC,GAAY,EAAE,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE;UACjF,EAAE;AACL,IAAA,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC;AAC3C,IAAA,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,GAAG,SAAS,EAAE,GAAG,KAAK,EAAE,GAAG,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAC;AAC/E,IAAA,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC;AAClE,IAAA,OAAO,KAAK;AACb,CAAC;AAED;;;;;AAKG;AACI,MAAM,kBAAkB,GAAG,CAAC,OAAyB,EAAE,OAAgC,KAAoB;IACjH,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;AACvC,QAAA,OAAO,IAAI;;AAEZ,IAAA,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,GAAG,oBAAoB,CAAC,OAAO,CAAC,GAAG,EAAE;AAC5E,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,gBAAgB,GAAG,uBAAuB,CAAC,OAAO,CAAC,GAAG,EAAE;AAC9E,IAAA,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,GAAG,yBAAyB,CAAC,OAAO,CAAC,GAAG,EAAE;AAC7E,IAAA,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,GAAG,SAAS,EAAE,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC,CAAC;AAClE,IAAA,OAAO,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC;AACzE,CAAC;AAED;;;AAGG;AACI,MAAM,kBAAkB,GAAG,CAAC,OAAuB,EAAE,YAAoB,KAAmB;AAClG,IAAA,IAAI,CAAC,OAAO,IAAI,CAAC,YAAY;AAAE,QAAA,OAAO,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;IA6BlD,MAAM,aAAa,GAAa,EAAE;IAClC,IAAI,SAAS,GAAG,CAAC;IAEjB,OAAO,CAAC,OAAO,CAAC,CAAC,IAAW,EAAE,CAAS,KAAI;;AAE1C,QAAA,IAAI,IAAI,CAAC,KAAK,GAAG,SAAS,EAAE;AAC3B,YAAA,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;;AAGnE,QAAA,IAAI,KAAK,GAAG,YAAY,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC;AACzD,QAAA,QAAQ,IAAI,CAAC,IAAI;YAChB,KAAK,SAAS,CAAC,QAAQ;gBACtB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,SAAS,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI;gBACpG,IAAI,IAAI,CAAC,MAAM,KAAK,cAAc,CAAC,WAAW,EAAE;AAC/C,oBAAA,aAAa,CAAC,IAAI,CACjB,CAAA,sCAAA,EAAyC,IAAI,CAAC,IAAI,CAAiB,cAAA,EAAA,CAAC,YAAY,MAAM,CAAA,EAAA,EAAK,KAAK,CAAA,OAAA,CAAS,CACzG;;qBACK;oBACN,IAAI,MAAM,EAAE;wBACX,aAAa,CAAC,IAAI,CACjB,CAAwE,qEAAA,EAAA,MAAM,CAAK,EAAA,EAAA,KAAK,CAAyC,sCAAA,EAAA,MAAM,CAAe,aAAA,CAAA,CACtJ;;yBACK;AACN,wBAAA,aAAa,CAAC,IAAI,CACjB,iFAAiF,KAAK,CAAA,0DAAA,CAA4D,CAClJ;;;gBAGH;YACD,KAAK,SAAS,CAAC,IAAI;AAClB,gBAAA,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;gBACzB;AACD,YAAA;gBACC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,eAAe,EAAE;oBAC5C,aAAa,CAAC,IAAI,CACjB,CAA0B,uBAAA,EAAA,IAAI,CAAC,IAAI,CAAA,cAAA,EAAiB,CAAC,CAAA,YAAA,EAAe,IAAI,CAAC,GAAG,CAA2B,wBAAA,EAAA,IAAI,CAAC,cAAc,CAAsB,mBAAA,EAAA,IAAI,CAAC,SAAS,CAAK,EAAA,EAAA,KAAK,CAAS,OAAA,CAAA,CACjL;;qBACK,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS,EAAE;oBAC7C,aAAa,CAAC,IAAI,CACjB,CAAA,uBAAA,EAA0B,IAAI,CAAC,IAAI,iBAAiB,CAAC,CAAA,YAAA,EAAe,IAAI,CAAC,GAAG,sBAAsB,IAAI,CAAC,cAAc,CAAK,EAAA,EAAA,KAAK,CAAS,OAAA,CAAA,CACxI;;qBACK;AACN,oBAAA,aAAa,CAAC,IAAI,CACjB,CAA0B,uBAAA,EAAA,IAAI,CAAC,IAAI,CAAA,cAAA,EAAiB,CAAC,CAAA,YAAA,EAAe,IAAI,CAAC,GAAG,KAAK,KAAK,CAAA,OAAA,CAAS,CAC/F;;gBAEF;;AAGF,QAAA,SAAS,GAAG,IAAI,CAAC,GAAG;AACrB,KAAC,CAAC;;AAGF,IAAA,IAAI,SAAS,GAAG,YAAY,EAAE,MAAM,EAAE;QACrC,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;;IAGvD,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;AAEnC,IAAA,OAAO,IAAI;AACZ,CAAC;;ACr2BM,MAAM,8BAA8B,GAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAubrD;;ACvbD;AAUA;;;AAGG;AACH,SAASC,iBAAe,CAAC,EAAO,EAAA;AAC/B,IAAA,IAAI,QAAQ,CAAC,UAAU,KAAK,UAAU,IAAI,QAAQ,CAAC,UAAU,KAAK,aAAa,EAAE;AAChF,QAAA,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;;SACX;AACN,QAAA,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,EAAE,CAAC;;AAEnD;AAEA;;AAEG;AACH,SAASC,OAAK,GAAA;AACb,IAAA,IAAI,OAA+B;IACnC,IAAI,YAAY,GAAsB,EAAE;AACxC,IAAA,IAAI,OAA0B;IAC9B,IAAI,WAAW,GAAW,CAAC;IAC3B,IAAI,OAAO,GAAW,CAAC;AAEtB,IAAA,MAAc,CAAC,gBAAgB,CAC/B,OAAO,EACP,UAAU,KAAK,EAAA;AACd,QAAA,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE;AAC3B,YAAA,KAAK,CAAC,cAAc,EAAE,CAAC;;AAEvB,YAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;AAAE,gBAAA,MAAM,EAAE;AACzB,iBAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;AAAE,gBAAA,OAAO,EAAE;;AAEtC,KAAC,EACD,EAAE,OAAO,EAAE,KAAK,EAAE,CAClB;AAEA,IAAA,MAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,KAAK,EAAA;QACxD,IAAI,KAAK,CAAC,QAAQ;YAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM;;YACtD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM;AAC7C,KAAC,CAAC;IAEF,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,4BAA4B,CAAC,KAAK,IAAI;AACzE,IAAA,IAAI,KAAK;AAAE,QAAA,OAAO,GAAG,GAAG,CAAC;AAExB,IAAA,MAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,mBAAmB,CAAC;AAEhE,IAAA,8BAA8B,EAAE;AAEhC,IAAA,qCAAqC,EAAE;AAEvC,IAAA,IAAI,EAAE;AAEN;;AAEG;AACH,IAAA,SAAS,IAAI,GAAA;AACZ,QAAA,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAG;AACtC,YAAA,CAAC,CAAC,IAAI,GAAG,oBAAoB;AAC7B,YAAA,CAAC,CAAC,KAAK,GAAG,cAAc;YACxB,IAAI,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC,kBAAkB,CAAC;YACrD,IAAI,YAAY,EAAE;AACjB,gBAAA,CAAC,CAAC,YAAY,CAAC,kBAAkB,EAAE,EAAE,CAAC;;SAEvC,CAAC,CAAC;AACH,QAAA,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;AAC9D,QAAA,OAAO,CAAC,OAAO,CAAC,IAAI,IAAG;AACtB,YAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC;AAC5C,YAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,YAAY,CAAC;AACjD,YAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,YAAY,CAAC;AAClD,SAAC,CAAC;QAEF,QAAQ,CAAC,gBAAgB,CAAC,4BAA4B,CAAC,CAAC,OAAO,CAAC,CAAC,IAAS,KAAI;AAC7E,YAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,aAAa,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;AAC7E,YAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,YAAY,CAAC;AACjD,YAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,YAAY,CAAC;AAClD,SAAC,CAAC;;AAGH;;AAEG;IACH,SAAS,mBAAmB,CAAC,WAAgB,EAAA;QAC5C,IAAI,WAAW,CAAC,MAAM,KAAM,MAAc,CAAC,MAAM,EAAE;YAClD;;AAED,QAAA,MAAM,KAAK,GAAG,WAAW,CAAC,IAAwB;AAClD,QAAA,QAAQ,KAAK,CAAC,IAAI;AACjB,YAAA,KAAK,cAAc;gBAClB,0BAA0B,CAAC,KAAK,CAAC;gBACjC;AACD,YAAA,KAAK,oBAAoB;gBACxB,iCAAiC,CAAC,KAAK,CAAC;gBACxC;AACD,YAAA,KAAK,YAAY;gBAChB,WAAW,CAAC,KAAK,CAAC;gBAClB;AACD,YAAA,KAAK,MAAM;gBACV,IAAI,KAAK,CAAC,MAAM;AAAE,oBAAA,MAAM,EAAE;;AACrB,oBAAA,OAAO,EAAE;gBACd;AACD,YAAA,KAAK,oBAAoB;;gBAExB;AACD,YAAA,KAAK,iBAAiB;AACrB,gBAAA,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;;AAE9D,gBAAA,OAAO,CAAC,OAAO,CAAC,IAAI,IAAG;AACtB,oBAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,CAAC;AAC/C,oBAAA,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,YAAY,CAAC;AACpD,oBAAA,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,YAAY,CAAC;AACrD,iBAAC,CAAC;AACF,gBAAA,OAAO,CAAC,OAAO,CAAC,IAAI,IAAG;AACtB,oBAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC;AAC5C,oBAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,YAAY,CAAC;AACjD,oBAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,YAAY,CAAC;AAClD,iBAAC,CAAC;gBACF;AACD,YAAA,KAAK,mBAAmB;gBACvB,sBAAsB,CAAC,KAAK,CAAC;gBAC7B;YACD;;;AAIF;;;AAGG;IACH,SAAS,0BAA0B,CAAC,KAAuB,EAAA;AAC1D,QAAA,MAAM,IAAI,GAAQ,QAAQ,CAAC,aAAa,CAAkB,CAA2B,wBAAA,EAAA,KAAK,CAAC,KAAK,CAAI,EAAA,CAAA,CAAC;QACrG,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE;AAChC,YAAA,aAAa,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;;AAEtC,QAAA,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,IAAI,OAAO,EAAE;AAC3C,YAAA,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC1D,YAAY,GAAG,EAAE;AACjB,YAAA,OAAO,EAAE,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC;YACrC,OAAO,GAAG,IAAI;AACd,YAAA,aAAa,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;YAClD;;AAED,QAAA,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;;AAG3B;;;AAGG;IACH,SAAS,iCAAiC,CAAC,KAA4B,EAAA;AACtE,QAAA,MAAM,KAAK,GAAQ,QAAQ,CAAC,gBAAgB,CAAkB,CAAyB,sBAAA,EAAA,KAAK,CAAC,OAAO,CAAI,EAAA,CAAA,CAAC;AAEzG,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACvB,YAAA,aAAa,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;YACrC;;QAGD,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC;;AAG3C;;;AAGG;IACH,SAAS,sBAAsB,CAAC,KAA4B,EAAA;AAC3D,QAAA,MAAM,QAAQ,GAAQ,QAAQ,CAAC,gBAAgB,CAAkB,CAAyB,sBAAA,EAAA,KAAK,CAAC,GAAG,CAAI,EAAA,CAAA,CAAC;AACxG,QAAA,IAAI,IAAqB;AACzB,QAAA,KAAK,IAAI,OAAO,IAAI,QAAQ,EAAE;;AAE7B,YAAA,IAAK,OAA2B,CAAC,SAAS,IAAK,OAA2B,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvG,IAAI,GAAG,OAAO;gBACd;;;;AAKF,QAAA,OAAO,EAAE,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC;QACrC,OAAO,GAAG,IAAI;AACd,QAAA,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC1D,IAAI,OAAO,EAAE;AACZ,YAAA,YAAY,GAAG,CAAC,GAAG,QAAQ,CAAC;AAC5B,YAAA,YAAY,CAAC,OAAO,CAAC,CAAC,IAAG;AACxB,gBAAA,CAAC,EAAE,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC;AAC/B,aAAC,CAAC;;;YACI,YAAY,GAAG,EAAE;AACxB,QAAA,OAAO,EAAE,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC;QACpC,IAAI,KAAK,EAAE;AACV,YAAA,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC;YAC9C,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;;AAEvE,QAAA,OAAO,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;;AAGjE;;;AAGG;IACH,SAAS,WAAW,CAAC,KAAqB,EAAA;QACzC,IAAI,CAAC,OAAO,EAAE;AACb,YAAA,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACzB;;AAED,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC;QACxB,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,MAAM,OAAO,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE;YACjF;;QAGD,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;AAC7C,QAAA,MAAM,SAAS,GAAG,YAAY,IAAI,KAAK,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAEzD,QAAA,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;;AAGlC;;;AAGG;IACH,SAAS,aAAa,CAAC,KAAuB,EAAA;QAC5C,MAAc,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC;;AAG/C;;;AAGG;IACH,SAAS,YAAY,CAAC,KAAiB,EAAA;AACtC,QAAA,IAAI,IAAI,GAAG,KAAK,CAAC,MAAyB;QAC1C,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,iCAAiC,CAAC,EAAE;YAC/D,IAAI,CAAC,IAAI,CAAC,aAAa;gBAAE;AACzB,YAAA,IAAI,GAAG,IAAI,CAAC,aAAgC;;;;AAI7C,QAAA,QAAQ,CAAC,YAAY,EAAE,EAAE,eAAe,EAAE;QAE1C,IAAI,KAAK,CAAC,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE;YAC3C,kBAAkB,CAAC,IAAI,CAAC;;aAClB;YACN,aAAa,CAAC,IAAI,CAAC;;;AAIrB;;;;;AAKG;AACH,IAAA,SAAS,aAAa,CAAC,IAAqB,EAAE,YAAqB,KAAK,EAAA;AACvE,QAAA,IAAI,CAAC,SAAS,IAAI,OAAO,KAAK,IAAI,EAAE;AACnC,YAAA,OAAO,EAAE,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC;YACrC,OAAO,GAAG,IAAI;AACd,YAAA,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC1D,YAAY,GAAG,EAAE;AACjB,YAAA,aAAa,CAAC;AACb,gBAAA,IAAI,EAAE,cAAc;gBACpB,KAAK,EAAE,CAAC,CAAC;AACT,gBAAA,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;AAC9E,aAAA,CAAC;YACF;;AAED,QAAA,IAAI,CAAC,SAAS,IAAI,OAAO,EAAE;AAC1B,YAAA,OAAO,EAAE,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC;;QAEtC,OAAO,GAAG,IAAI;AACd,QAAA,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC1D,QAAA,IAAI,OAAO;AAAE,YAAA,YAAY,GAAG,CAAC,OAAO,CAAC;;YAChC,YAAY,GAAG,EAAE;AACtB,QAAA,OAAO,EAAE,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC;QACpC,IAAI,KAAK,EAAE;AACV,YAAA,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC;;AAE/C,QAAA,OAAO,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AACjE,QAAA,aAAa,CAAC;AACb,YAAA,IAAI,EAAE,cAAc;AACpB,YAAA,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;AAChF,SAAA,CAAC;;AAGH;;;;AAIG;IACH,SAAS,kBAAkB,CAC1B,IAAqB,EACrB,YAAqB,KAAK,EAC1B,mBAA4B,IAAI,EAAA;AAEhC,QAAA,IAAI,cAAc,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;AAEvD,QAAA,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,YAAY,EAAE,MAAM,GAAG,CAAC,EAAE;YACxE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,gBAAgB,CAAkB,CAAyB,sBAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAAC;AAE9F,YAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrB,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AACpC,gBAAA,cAAc,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;;;AAIjE,QAAA,IAAI,CAAC,SAAS,IAAI,cAAc,EAAE;AACjC,YAAA,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAElD,YAAA,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE;gBACzB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;gBACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,gBAAgB,CAAkB,CAAyB,sBAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAAC;AAC9F,gBAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAEnD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;;AAEpC,gBAAA,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;;;AAC1D,gBAAA,cAAc,EAAE,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC;AAEnD,YAAA,IAAI,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC;YAC3D,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAElD,YAAA,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;AAAE,gBAAA,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC;;gBACnD,OAAO,GAAG,IAAI;AAEnB,YAAA,IAAI,gBAAgB;gBAAE,aAAa,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,CAAC;YAC5E;;AAED,QAAA,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;AACvB,QAAA,IAAI,EAAE,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC;QACjC,IAAI,KAAK,EAAE;AACV,YAAA,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC;;AAE/C,QAAA,IAAI,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAE9D,QAAA,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YACnC,MAAM,KAAK,GAAQ,QAAQ,CAAC,gBAAgB,CAAkB,CAAyB,sBAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAAC;AACnG,YAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAG;AACjB,gBAAA,CAAC,EAAE,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC;AAC9B,gBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;AAAE,oBAAA,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;AACpD,aAAC,CAAC;;AAGH,QAAA,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC;;YACnD,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpG,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAClD,QAAA,IAAI,gBAAgB;YAAE,aAAa,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,CAAC;;AAG7E;;;AAGG;IACH,SAAS,YAAY,CAAC,KAAiB,EAAA;AACtC,QAAA,MAAM,IAAI,GAAG,KAAK,EAAE,MAAyB;AAE7C,QAAA,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YACnC,MAAM,KAAK,GAAQ,QAAQ,CAAC,gBAAgB,CAAkB,CAAyB,sBAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAAC;AACnG,YAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;;aAC3C;AACN,YAAA,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC;;;AAIlC,IAAA,SAAS,MAAM,GAAA;QACd,WAAW,IAAI,GAAG;AAClB,QAAA,oBAAoB,EAAE;;AAGvB,IAAA,SAAS,OAAO,GAAA;QACf,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,GAAG,GAAG,CAAC;AAC9C,QAAA,oBAAoB,EAAE;;AAGvB,IAAA,SAAS,oBAAoB,GAAA;QAC5B,IAAI,KAAK,EAAE;;YAEV,IAAI,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,iBAAiB,CAAgB;YAC5E,IAAI,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAgB;YAC/D,IAAI,aAAa,EAAE;gBAClB,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,CAAS,MAAA,EAAA,WAAW,CAAG,CAAA,CAAA,CAAC;gBACrE,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,kBAAkB,EAAE,KAAK,CAAC;gBAC1D,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAa,WAAA,CAAA,CAAC;gBACxD,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,EAAE,CAAQ,MAAA,CAAA,CAAC;;iBAC/C;AACN,gBAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,CAAA,MAAA,EAAS,WAAW,CAAA,CAAA,CAAG,CAAC;gBACrE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,kBAAkB,EAAE,KAAK,CAAC;;AAG3D,YAAA,IAAI,OAAO;gBAAE,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC;;aACnD;AACN,YAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,CAAA,MAAA,EAAS,WAAW,CAAA,CAAA,CAAG,CAAC;YACrE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,kBAAkB,EAAE,KAAK,CAAC;;;AAI5D,IAAA,SAAS,8BAA8B,GAAA;QACtC,QAAQ,CAAC,gBAAgB,CAAC,4BAA4B,CAAC,CAAC,OAAO,CAAC,KAAK,IAAG;YACvE,KAAK,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,CAAa,KAAI;gBACtD,MAAM,kBAAkB,GAAG,mCAAmC,CAC5D,KAAyB,CAAC,OAAO,GAAG,WAAW,CAAC,EAChD,KAAyB,CAAC,OAAO,GAAG,gBAAgB,CAAC,CACtD;;gBAGD,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AAClD,gBAAA,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,iCAAiC,CAAC;AAC5D,gBAAA,WAAW,CAAC,SAAS,GAAG,kBAAkB;AAC1C,gBAAA,WAAW,CAAC,KAAK,CAAC,SAAS,GAAG,CAA4B,yBAAA,EAAA,CAAC,IAAI,WAAW,GAAG,OAAO,CAAC,GAAG;AACxF,gBAAA,WAAW,CAAC,KAAK,CAAC,eAAe,GAAG,UAAU;AAC9C,gBAAA,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC;gBAC9B,oBAAoB,CAAC,KAAK,CAAC;AAC5B,aAAC,CAAC;AAEF,YAAA,KAAK,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAK;;AAEzC,gBAAA,QAAQ,CAAC,gBAAgB,CAAC,kCAAkC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;AACvF,aAAC,CAAC;AACH,SAAC,CAAC;;;;;;;;;;;;;;;;;AAqBH,IAAA,SAAS,qCAAqC,GAAA;QAC7C,MAAM,WAAW,GAAG,MAAK;AACxB,YAAA,MAAM,YAAY,GAAG,WAAW,GAAG,OAAO;AAC1C,YAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,gBAAgB,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC;AAC3E,SAAC;;AAGD,QAAA,WAAW,EAAE;;AAGZ,QAAA,MAAc,CAAC,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC;AACpD,QAAA,MAAc,CAAC,gBAAgB,CAAC,QAAQ,EAAE,WAAW,CAAC;AAEvD,QAAA,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,IAAG;YAC1C,MAAM,OAAO,GAAI,CAAC,CAAC,MAAkB,CAAC,OAAO,CAAC,mCAAmC,CAAC;YAClF,IAAI,OAAO,EAAE;gBACZ,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,2BAA2B,CAAC;gBAClE,qBAAqB,CAAC,OAAO,CAAC;;AAEhC,SAAC,CAAC;;AAGF,QAAA,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,WAAW,CAAC;AAClD,QAAA,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC/B,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,OAAO,EAAE,IAAI;AACb,SAAA,CAAC;AAEF,QAAA,MAAM,qBAAqB,GAAG,OAAO,IAAG;AACvC,YAAA,IAAI,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE;AAC1C,YAAA,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE;AAClB,gBAAA,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG;gBACxB,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,oDAAoD,WAAW,GAAG,OAAO,CAAA,GAAA,CAAK;;AAE1G,SAAC;;AAGF,IAAA,SAAS,mCAAmC,CAAC,SAAiB,EAAE,cAAsB,EAAA;QACrF,IAAI,WAAW,GAAG,EAAE;AAEpB,QAAA,IAAI,SAAS,KAAK,cAAc,EAAE;AACjC,YAAA,WAAW,IAAI,CAAA,yBAAA,EAA4B,SAAS,CAAA,OAAA,CAAS;;;AAG9D,QAAA,IAAI,SAAS,IAAI,cAAc,IAAI,cAAc;YAChD,WAAW,IAAI,2FAA2F;QAE3G,IAAI,cAAc,EAAE;AACnB,YAAA,WAAW,IAAI,CAAA,8BAAA,EAAiC,cAAc,CAAA,OAAA,CAAS;;AAExE,QAAA,OAAO,WAAW;;AAGnB,IAAA,SAAS,oBAAoB,CAAC,KAAe,EAAE,eAAuB,iCAAiC,EAAA;QACtG,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,YAAY,CAAgB;AAEhE,QAAA,IAAI,OAAO,YAAY,WAAW,EAAE;AACnC,YAAA,IAAI,WAAW,GAAG,OAAO,CAAC,qBAAqB,EAAE;AACjD,YAAA,IAAI,YAAY,GAAG,WAAW,CAAC,KAAK;AAEpC,YAAA,IAAI,WAAmB;YACvB,IAAI,KAAK,EAAE;gBACV,IAAI,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,iBAAiB,CAAgB;AAC5E,gBAAA,WAAW,GAAG,aAAa,CAAC,WAAW;;;AACjC,gBAAA,WAAW,GAAG,MAAM,CAAC,UAAU;AAEtC,YAAA,IAAI,SAAS,GAAG,KAAK,CAAC,qBAAqB,EAAE;;YAG7C,IAAI,SAAS,CAAC,IAAI,GAAG,YAAY,GAAG,WAAW,EAAE;AAChD,gBAAA,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,CAA6B,0BAAA,EAAA,CAAC,IAAI,WAAW,GAAG,OAAO,CAAC,GAAG;AACrF,gBAAA,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,CAAA,YAAA,EAAe,SAAS,CAAC,KAAK,GAAG,EAAE,CAAA,QAAA,CAAU;AAC7E,gBAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC;;;iBAGhC,IAAI,SAAS,CAAC,KAAK,GAAG,YAAY,GAAG,CAAC,EAAE;AAC5C,gBAAA,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,yBAAyB,CAAC,IAAI,WAAW,GAAG,OAAO,CAAC,CAAG,CAAA,CAAA,CAAC;AAClF,gBAAA,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,CAAA,CAAA,EAAI,SAAS,CAAC,KAAK,GAAG,EAAE,CAAA,OAAA,CAAS;AACjE,gBAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC;;;;;;;;IAUtC,SAAS,cAAc,CAAC,IAAqB,EAAA;QAC5C,MAAM,eAAe,GAAG,IAAI,EAAE,OAAO,GAAG,YAAY,CAAC;QACrD,IAAI,eAAe,KAAK,KAAK,IAAI,eAAe,KAAK,QAAQ,IAAI,eAAe,KAAK,MAAM;AAAE,YAAA,OAAO,IAAI;AAExG,QAAA,OAAO,KAAK;;AAEd;AAEA,8BAAe,CAAA,CAAA,EAAID,iBAAe,CAAC,QAAQ,EAAE,CAAK,EAAA,EAAAC,OAAK,CAAC,QAAQ,EAAE,CAAA,CAAA,CAAG;;AC/hBrE;AAIA;;;AAGG;AACH,SAAS,eAAe,CAAC,EAAO,EAAA;AAC/B,IAAA,IAAI,QAAQ,CAAC,UAAU,KAAK,UAAU,IAAI,QAAQ,CAAC,UAAU,KAAK,aAAa,EAAE;AAChF,QAAA,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;;SACX;AACN,QAAA,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,EAAE,CAAC;;AAEnD;AAEA,SAAS,KAAK,GAAA;AACb,IAAA,IAAI,OAA+B;AACnC,IAAA,IAAI,OAA0B;AAC9B,IAAA,IAAI,MAA4C;IAChD,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,4BAA4B,CAAC,KAAK,IAAI;IACzE,IAAI,WAAW,GAAW,CAAC;AAE1B,IAAA,MAAc,CAAC,gBAAgB,CAC/B,OAAO,EACP,UAAU,KAAK,EAAA;AACd,QAAA,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE;AAC3B,YAAA,KAAK,CAAC,cAAc,EAAE,CAAC;;AAEvB,YAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;AAAE,gBAAA,MAAM,EAAE;AACzB,iBAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;AAAE,gBAAA,OAAO,EAAE;;AAEtC,KAAC,EACD,EAAE,OAAO,EAAE,KAAK,EAAE,CAClB;AAEA,IAAA,MAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,uBAAuB,CAAC;AACpE,IAAA,IAAI,EAAE;AAEN;;AAEG;AACH,IAAA,SAAS,IAAI,GAAA;QACZ,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,oBAAoB,CAAC,CAAC,CAAC;AACzE,QAAA,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;QAC9D,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAS,EAAE,IAAS,KAAI;AAChD,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE;AACrD,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,YAAA,OAAO,IAAI;SACX,EAAE,EAAE,CAAC;AAEN,QAAA,OAAO,CAAC,OAAO,CAAC,IAAI,IAAG;AACtB,YAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC;AAC5C,YAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,YAAY,CAAC;AACjD,YAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,YAAY,CAAC;AAClD,SAAC,CAAC;QAEF,QAAQ,CAAC,gBAAgB,CAAC,4BAA4B,CAAC,CAAC,OAAO,CAAC,IAAI,IAAG;AACtE,YAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,aAAa,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;AAC9E,SAAC,CAAC;;IAGH,SAAS,uBAAuB,CAAC,WAAgB,EAAA;QAChD,IAAI,WAAW,CAAC,MAAM,KAAM,MAAc,CAAC,MAAM,EAAE;YAClD;;AAED,QAAA,MAAM,KAAK,GAAG,WAAW,CAAC,IAAwB;AAClD,QAAA,QAAQ,KAAK,CAAC,IAAI;AACjB,YAAA,KAAK,cAAc;gBAClB,0BAA0B,CAAC,KAAK,CAAC;gBACjC;AACD,YAAA,KAAK,YAAY;gBAChB,eAAe,CAAC,KAAK,CAAC;gBACtB;AACD,YAAA,KAAK,MAAM;gBACV,IAAI,KAAK,CAAC,MAAM;AAAE,oBAAA,MAAM,EAAE;;AACrB,oBAAA,OAAO,EAAE;gBACd;AACD,YAAA;AACC,gBAAA,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,WAAW,CAAC;;;AAI9D;;;AAGG;IACH,SAAS,eAAe,CAAC,KAAqB,EAAA;;;QAI7C,IAAI,CAAC,OAAO,EAAE;YACb,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;YACnC;;;;QAKD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;AAC1C,QAAA,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;QAC1D,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,MAAM,MAAM,KAAK,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE;YACrF;;;QAID,IAAI,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;AAC3C,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,OAAO,CAAC,IAAI,YAAY,IAAI,YAAY,GAAG,OAAO,CAAC,MAAM,EAAE;YAC1D,YAAY,IAAI,IAAI;AACpB,YAAA,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,MAAM,EAAE;gBACpD;;;QAGF,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;QACpD,iBAAiB,CAAC,MAAM,CAAC,OAAgC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;;AAGrE;;;AAGG;IACH,SAAS,aAAa,CAAC,KAAuB,EAAA;QAC5C,MAAc,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC;;AAG/C;;;AAGG;IACH,SAAS,YAAY,CAAC,KAAiB,EAAA;AACtC,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,MAAyB;AAC5C,QAAA,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC;;AAG9B;;;AAGG;IACH,SAAS,0BAA0B,CAAC,KAAuB,EAAA;AAC1D,QAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAkB,CAA2B,wBAAA,EAAA,KAAK,CAAC,KAAK,CAAI,EAAA,CAAA,CAAC;QAChG,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE;AAChC,YAAA,aAAa,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;;QAEtC,iBAAiB,CAAC,IAAI,IAAI,OAAO,EAAE,KAAK,CAAC,CAAC;;AAG3C;;;;AAIG;AACH,IAAA,SAAS,iBAAiB,CAAC,IAA4B,EAAE,YAAqB,KAAK,EAAA;AAClF,QAAA,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE;YAC/D,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAA0B,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACtG,OAAO,GAAG,IAAI;YACd,IAAI,SAAS,EAAE;AACd,gBAAA,aAAa,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;;YAEnD;;QAED,IAAI,OAAO,EAAE;YACZ,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAA0B,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;;QAEvG,IAAI,IAAI,EAAE;YACT,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAA0B,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAClG,IAAI,KAAK,EAAE;AACV,gBAAA,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;;YAE9C,IAAI,CAAC,cAAc,EAAE;;QAEtB,OAAO,GAAG,IAAI;QACd,IAAI,SAAS,EAAE;YACd,aAAa,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;;;AAItF;;;AAGG;IACH,SAAS,YAAY,CAAC,KAAiB,EAAA;AACtC,QAAA,MAAM,IAAI,GAAG,KAAK,EAAE,MAAyB;QAC7C,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAA0B,CAAC,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;;AAGrG,IAAA,SAAS,MAAM,GAAA;QACd,WAAW,IAAI,GAAG;AAClB,QAAA,oBAAoB,EAAE;;AAGvB,IAAA,SAAS,OAAO,GAAA;QACf,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,GAAG,GAAG,CAAC;AAC9C,QAAA,oBAAoB,EAAE;;AAGvB,IAAA,SAAS,oBAAoB,GAAA;QAC5B,IAAI,KAAK,EAAE;;YAEV,IAAI,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,iBAAiB,CAAgB;YAC5E,IAAI,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAgB;YAC/D,IAAI,aAAa,EAAE;gBAClB,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,CAAS,MAAA,EAAA,WAAW,CAAG,CAAA,CAAA,CAAC;gBACrE,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,kBAAkB,EAAE,KAAK,CAAC;gBAC1D,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAa,WAAA,CAAA,CAAC;gBACxD,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,EAAE,CAAQ,MAAA,CAAA,CAAC;;iBAC/C;AACN,gBAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,CAAA,MAAA,EAAS,WAAW,CAAA,CAAA,CAAG,CAAC;gBACrE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,kBAAkB,EAAE,KAAK,CAAC;;AAG3D,YAAA,IAAI,OAAO;gBAAE,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC;;aACnD;AACN,YAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,CAAA,MAAA,EAAS,WAAW,CAAA,CAAA,CAAG,CAAC;YACrE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,kBAAkB,EAAE,KAAK,CAAC;;;AAG7D;AAEA,6BAAe,CAAA,CAAA,EAAI,eAAe,CAAC,QAAQ,EAAE,CAAK,EAAA,EAAA,KAAK,CAAC,QAAQ,EAAE,CAAA,CAAA,CAAG;;AC3N9D,MAAM,MAAM,GAAG;AACrB,IAAA,oCAAoC,EAAE,iCAAiC;AACvE,IAAA,gCAAgC,EAAE,6BAA6B;AAC/D,IAAA,0BAA0B,EAAE,mBAAmB;AAC/C,IAAA,mCAAmC,EAAE,qCAAqC;AAC1E,IAAA,uBAAuB,EAAE,yBAAyB;AAClD,IAAA,4BAA4B,EAAE,8BAA8B;CAC5D;;ACHD;;;;;;;;AAQG;AACI,MAAM,mBAAmB,GAAG,CAClC,KAAY,EACZ,WAAkC,EAClC,QAAQ,GAAG,IAAI,KACM;AACrB,IAAA,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK;AAC7B,IAAA,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,GAAe,WAAW,CACvE,SAAS,CAAC,IAAI,CAAgC,CAChC;IACf,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,QAAQ,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC;AAC7E,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACzG,IAAA,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED;;;;AAIG;AACI,MAAM,kBAAkB,GAAG,CAAC,KAAa,EAAE,KAAe,KAAY;AAC5E,IAAA,IAAI,IAAY;AAChB,IAAA,KAAK,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;AAC3C,QAAA,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE;YACxB;;;AAGF,IAAA,OAAO,IAAI;AACZ,CAAC;AAED;;;;AAIG;AACI,MAAM,gBAAgB,GAAG,CAAC,KAAY,EAAE,OAA8B,KAAmB;AAC/F,IAAA,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,KAAK;IAC5B,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,OAAO;IAC3D,KAAK,MAAM,UAAU,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,cAAc,CAAC,EAAE;QACnE,IAAI,CAAC,UAAU,EAAE;YAChB;;AAED,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU;AAC7B,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAClG,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACxB,YAAA,OAAO,KAAK;;;AAGf,CAAC;AAED;;;;AAIG;AACI,MAAM,qBAAqB,GAAG,CAAC,OAAwB,EAAE,OAAe,KAAY;AAC1F,IAAA,KAAK,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,QAAA,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,QAAQ,CAAC,EAAE;YACvG,OAAO,CAAC,GAAG,CAAC;;;AAGd,IAAA,OAAO,OAAO;AACf,CAAC;AAED;;;;AAIG;AACI,MAAM,qBAAqB,GAAG,CAAC,OAAwB,EAAE,OAAe,KAAY;AAC1F,IAAA,KAAK,IAAI,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;QACtC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC,EAAE;YAClE,OAAO,CAAC,GAAG,CAAC;;;AAGd,IAAA,OAAO,OAAO;AACf,CAAC;AAED;;;;;AAKG;AACI,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAA6D,KAAI;IAC7G,IAAI,IAAI,EAAE;AACT,QAAA,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;AAC1B,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;;AAErB,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO;;SACtB;QACN,IAAI,IAAI,EAAE;AACT,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;;;AAGvB,CAAC;;MCrGY,iBAAiB,CAAA;IACrB,gBAAgB,GAAG,IAAI,eAAe,CAAmB;AAChE,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,QAAQ,EAAE,YAAY;AACtB,QAAA,eAAe,EAAE,CAAC;AAClB,KAAA,CAAC;;AAEF,IAAA,IAAW,eAAe,GAAA;QACzB,OAAO,IAAI,CAAC,gBAAgB;;;AAG7B,IAAA,IAAW,cAAc,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK;;AAG3B,IAAA,sBAAsB,GAAG,IAAI,eAAe,CAA+B,IAAI,CAAC;;AAExF,IAAA,IAAW,qBAAqB,GAAA;QAC/B,OAAO,IAAI,CAAC,sBAAsB;;;AAGnC,IAAA,IAAW,oBAAoB,GAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,KAAK;;AAGjC,IAAA,gBAAgB,GAAG,IAAI,eAAe,CAA0B,IAAI,CAAC;;AAE7E,IAAA,IAAW,eAAe,GAAA;QACzB,OAAO,IAAI,CAAC,gBAAgB;;;AAG7B,IAAA,IAAW,cAAc,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK;;AAG3B,IAAA,eAAe,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC;;AAElE,IAAA,IAAW,cAAc,GAAA;QACxB,OAAO,IAAI,CAAC,eAAe;;;AAG5B,IAAA,IAAW,aAAa,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK;;AAG1B,IAAA,0BAA0B,GAAG,IAAI,eAAe,CAA0B,IAAI,CAAC;;AAEvF,IAAA,IAAW,yBAAyB,GAAA;QACnC,OAAO,IAAI,CAAC,0BAA0B;;;AAGvC,IAAA,IAAW,wBAAwB,GAAA;AAClC,QAAA,OAAO,IAAI,CAAC,0BAA0B,CAAC,KAAK;;AAGrC,IAAA,uCAAuC,GAAG,IAAI,eAAe,CAA0B,IAAI,CAAC;;AAEpG,IAAA,IAAW,sCAAsC,GAAA;QAChD,OAAO,IAAI,CAAC,uCAAuC;;;AAGpD,IAAA,IAAW,qCAAqC,GAAA;AAC/C,QAAA,OAAO,IAAI,CAAC,uCAAuC,CAAC,KAAK;;AAGlD,IAAA,UAAU,GAAG,IAAI,eAAe,CAAS,CAAC,CAAC;;AAEnD,IAAA,IAAW,SAAS,GAAA;QACnB,OAAO,IAAI,CAAC,UAAU;;IAGf,mBAAmB,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC,qBAAqB,EAAE,CAAC;;AAE9F,IAAA,IAAW,kBAAkB,GAAA;QAC5B,OAAO,IAAI,CAAC,mBAAmB;;;AAGhC,IAAA,IAAW,iBAAiB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK;;AAE9B,IAAA,QAAQ;AAEhB,IAAA,WAAA,GAAA;QACC,IAAI,CAAC,yBAAyB,EAAE;;AAGjC;;AAEG;IACK,yBAAyB,GAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,MAAK;YACzC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC3D,SAAC,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,EAAE;YAC/C,eAAe,EAAE,CAAC,KAAK,CAAC;AACxB,SAAA,CAAC;;AAGH;;;AAGG;IACK,qBAAqB,GAAA;AAC5B,QAAA,OAAO,QAAQ,EAAE,eAAe,EAAE,YAAY,CAAC,KAAK,CAAC,KAAK,KAAK,GAAG,KAAK,GAAG,KAAK;;IAGhF,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE;;wGA5GhB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAjB,iBAAiB,EAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B;;;MCQY,2BAA2B,CAAA;AAanB,IAAA,kBAAA;AAZH,IAAA,aAAa,GAAG,IAAI,eAAe,CAA8B,IAAI,CAAC;AACtE,IAAA,kBAAkB,GAAG,IAAI,eAAe,CAAyB,EAAE,CAAC;AACpE,IAAA,WAAW,GAAG,IAAI,eAAe,CAA8B,IAAI,CAAC;AACpE,IAAA,YAAY,GAAG,IAAI,eAAe,CAA8B,IAAI,CAAC;AACrE,IAAA,aAAa,GAAG,IAAI,eAAe,CAAe,IAAI,CAAC;AACvD,IAAA,WAAW,GAAG,IAAI,eAAe,CAAe,IAAI,CAAC;AACrD,IAAA,YAAY,GAAG,IAAI,eAAe,CAAe,IAAI,CAAC;AACtD,IAAA,eAAe,GAAG,IAAI,OAAO,EAA2B;AACxD,IAAA,eAAe,GAAG,IAAI,OAAO,EAAuB;AACpD,IAAA,KAAK,GAAG,IAAI,OAAO,EAAW;AAC9B,IAAA,MAAM,GAAG,IAAI,OAAO,EAAY;AAEjD,IAAA,WAAA,CAAoB,kBAAqC,EAAA;QAArC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB;AACrC,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;AAC/D,YAAA,QAAQ,KAAK,CAAC,MAAM;AACnB,gBAAA,KAAK,UAAU;AACd,oBAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,CAAC;oBAC9E;AACD,gBAAA,KAAK,QAAQ;AACZ,oBAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC;oBACpC;AACD,gBAAA,KAAK,SAAS;AACb,oBAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC;oBACrC;;AAEH,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,IAAG;YAC3E,IAAI,cAAc,EAAE;;gBAEnB,MAAM,eAAe,GAAG,IAAI,CAAC,2BAA2B,CAAC,KAAK,IAAI,EAAE;gBACpE,MAAM,KAAK,GAAG,eAAe,CAAC,SAAS,CACtC,MAAM,IACL,MAAM,CAAC,WAAW,CAAC,KAAK,KAAK,cAAc,CAAC,WAAW,CAAC,KAAK;oBAC7D,MAAM,CAAC,WAAW,CAAC,GAAG,KAAK,cAAc,CAAC,WAAW,CAAC,GAAG,CAC1D;gBACD,IAAI,KAAK,KAAK,CAAC,CAAC;AAAE,oBAAA,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC;AACtD,gBAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,eAAe,CAAC;;AAExD,SAAC,CAAC;;AAGH,IAAA,IAAW,KAAK,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;;AAGjC,IAAA,IAAW,MAAM,GAAA;QAChB,OAAO,IAAI,CAAC,MAAM;;AAGnB,IAAA,IAAW,wBAAwB,GAAA;AAClC,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC;;AAGzE,IAAA,IAAW,uBAAuB,GAAA;QACjC,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;;AAGlG,IAAA,IAAW,wBAAwB,GAAA;QAClC,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,IAAI,CAC9C,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,EACvD,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,KAAK,aAAa,IAAI,IAAI,CAAC,QAAQ,KAAK,kBAAkB,CAAC,EAC7F,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CACvB;;AAGF,IAAA,IAAW,uBAAuB,GAAA;QACjC,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,IAAI,CAC9C,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,EACvD,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,KAAK,YAAY,CAAC,EACpD,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CACvB;;AAGF,IAAA,IAAW,aAAa,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;;AAEzC,IAAA,IAAW,kBAAkB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;;AAE9C,IAAA,IAAW,WAAW,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;;AAEvC,IAAA,IAAW,YAAY,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;;AAGxC,IAAA,IAAW,aAAa,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;;AAEzC,IAAA,IAAW,WAAW,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;;AAEvC,IAAA,IAAW,YAAY,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;;AAExC,IAAA,IAAW,eAAe,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;;AAGnC,IAAA,kBAAkB,GAAG,IAAI,eAAe,CAA6C,IAAI,CAAC;;AAElG,IAAA,IAAW,iBAAiB,GAAA;QAC3B,OAAO,IAAI,CAAC,kBAAkB;;AAE/B,IAAA,IAAW,gBAAgB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK;;AAG7B,IAAA,kBAAkB,GAAG,IAAI,eAAe,CAAoC,IAAI,CAAC;;AAEzF,IAAA,IAAW,iBAAiB,GAAA;QAC3B,OAAO,IAAI,CAAC,kBAAkB;;AAGvB,IAAA,sBAAsB,GAAG,IAAI,eAAe,CAAoC,IAAI,CAAC;AAC7F,IAAA,IAAW,qBAAqB,GAAA;QAC/B,OAAO,IAAI,CAAC,sBAAsB;;AAG3B,IAAA,2BAA2B,GAAG,IAAI,eAAe,CAAsC,IAAI,CAAC;AACpG,IAAA,IAAW,0BAA0B,GAAA;QACpC,OAAO,IAAI,CAAC,2BAA2B;;AAExC,IAAA,IAAW,yBAAyB,GAAA;AACnC,QAAA,OAAO,IAAI,CAAC,2BAA2B,CAAC,KAAK;;AAG9C;;;AAGG;AACI,IAAA,KAAK,CAAC,IAAkB,EAAA;AAC9B,QAAA,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,MAAM,EAAE;AAC7B,YAAA,IAAI,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AAC3E,YAAA,IAAI,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AACzE,YAAA,IAAI,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;;AAE3E,QAAA,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,MAAM,EAAE;AAC7B,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC;AACjC,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC;;;AAIpC;;;AAGG;AACI,IAAA,gBAAgB,CAAC,KAA8B,EAAA;AACrD,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGjC;;;;AAIG;IACI,gBAAgB,CAAC,KAAmB,EAAE,QAAiB,EAAA;AAC7D,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;;AAEhE;;;;AAIG;AACI,IAAA,oBAAoB,CAC1B,IAAiC,EACjC,cAAuB,KAAK,EAC5B,cAAuB,IAAI,EAAA;;QAG3B,IAAI,WAAW,EAAE;YAChB,IAAI,CAAC,IAAI,EAAE;gBACV,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,IAAG;oBAC7C,UAAU,CAAC,MAAK;AACf,wBAAA,IAAI,KAAK;AAAE,4BAAA,KAAK,CAAC,OAAO,GAAG,KAAK;AACjC,qBAAC,CAAC;AACH,iBAAC,CAAC;AACF,gBAAA,IAAI,WAAW;AAAE,oBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjD;;AAED,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,IAAI,CAAC;YAClF,IAAI,cAAc,EAAE;gBACnB,UAAU,CAAC,MAAK;AACf,oBAAA,cAAc,CAAC,OAAO,GAAG,KAAK;AAC/B,iBAAC,CAAC;AACF,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC;gBAC7E,IAAI,WAAW,EAAE;AAChB,oBAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1B,wBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;AAChC,wBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;;;wBACvB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;;;iBAE7C;gBACN,UAAU,CAAC,MAAK;AACf,oBAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACpB,iBAAC,CAAC;AACF,gBAAA,IAAI,WAAW;AAAE,oBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;;YAExF;;QAGD,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,IAAG;YAC7C,UAAU,CAAC,MAAK;AACf,gBAAA,IAAI,KAAK;AAAE,oBAAA,KAAK,CAAC,OAAO,GAAG,KAAK;AACjC,aAAC,CAAC;AACH,SAAC,CAAC;AAEF,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK;AACrC,QAAA,IAAI,IAAI,KAAK,IAAI,EAAE;YAClB,IAAI,GAAG,IAAI;AACX,YAAA,IAAI,WAAW;AAAE,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;;aAC3C;YACN,IAAI,WAAW,EAAE;AAChB,gBAAA,IAAI,IAAI;oBAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;;AACzC,oBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;;;QAGvC,UAAU,CAAC,MAAK;YACfC,iBAAyB,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACxC,SAAC,CAAC;AACF,QAAA,IAAI,WAAW;AAAE,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG/C;;;;AAIG;AACI,IAAA,kBAAkB,CAAC,IAAiC,EAAA;AAC1D,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK;AACnC,QAAA,IAAI,IAAI,KAAK,IAAI,EAAE;YAClB,IAAI,GAAG,IAAI;;QAEZ,UAAU,CAAC,MAAK;YACfA,iBAAyB,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACxC,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;AAE5B;;;;AAIG;AACI,IAAA,mBAAmB,CAAC,IAAiC,EAAA;AAC3D,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK;AACpC,QAAA,IAAI,IAAI,KAAK,IAAI,EAAE;YAClB,IAAI,GAAG,IAAI;;QAEZ,UAAU,CAAC,MAAK;YACfA,iBAAyB,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACxC,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG7B;;;;AAIG;AACI,IAAA,oBAAoB,CAAC,KAAmB,EAAA;AAC9C,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;;AAE/B;;;;AAIG;AACI,IAAA,kBAAkB,CAAC,KAAmB,EAAA;AAC5C,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;;AAE7B;;;;AAIG;AACI,IAAA,mBAAmB,CAAC,KAAmB,EAAA;AAC7C,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;;AAG9B;;AAEG;IACI,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;;AAG9B;;;;AAIG;AACI,IAAA,IAAI,CAAC,IAAa,EAAA;AACxB,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;;;IAItB,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;AAC7B,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;AAC3B,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;AAC5B,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;AAC7B,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;AAC3B,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;AAC5B,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AACrB,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;AAC/B,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AACrB,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;;wGA1TX,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAA3B,2BAA2B,EAAA,CAAA;;4FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC;;;ACTD;;AAEG;MAOU,oBAAoB,CAAA;AAChC;;;AAGG;IACM,aAAa,GAAW,CAAC;AAElC;;;AAGG;IACM,SAAS,GAAW,CAAC;AAE9B;;;;;AAKG;AACgB,IAAA,IAAI,GAA4B,IAAI,YAAY,EAAa;AAEhF,IAAA,MAAM,GAAW,CAAC,CAAC;AACnB,IAAA,mBAAmB,GAAG,IAAI,CAAC;AAE3B,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;AAER,IAAA,WAAW,CAAC,OAAsB,EAAA;QACjC,IAAI,WAAW,IAAI,OAAO,IAAI,eAAe,IAAI,OAAO,EAAE;YACzD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS;;;AAI3E;;;;AAIG;IACH,QAAQ,GAAA;AACP,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS;QAC/B,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;;AAG9B;;;AAGG;IACH,IAAI,GAAA;AACH,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS;QAC/B,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;;AAG9B;;;AAGG;AACK,IAAA,cAAc,CAAC,QAAgB,EAAA;AACtC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACd,YAAA,QAAQ,EAAE,QAAQ;YAClB,SAAS,EAAE,IAAI,CAAC,SAAS;AACR,SAAA,CAAC;;wGA/DR,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,SAAA,EAAA,IAAA,EAAA,oBAAoB,6LCZjC,2rCAkCA,EAAA,MAAA,EAAA,CAAA,29BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDtBa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,cAGZ,KAAK,EAAA,QAAA,EAAA,2rCAAA,EAAA,MAAA,EAAA,CAAA,29BAAA,CAAA,EAAA;wDAOR,aAAa,EAAA,CAAA;sBAArB;gBAMQ,SAAS,EAAA,CAAA;sBAAjB;gBAQkB,IAAI,EAAA,CAAA;sBAAtB;;;MEvBW,oBAAoB,CAAA;IAEhC,WAAW,GAAA;AACV,QAAA,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,QAAQ,CAAC;;AAG/C,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;wGARI,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,SAAA,EAAA,IAAA,EAAA,oBAAoB,mICRjC,skLAkEA,EAAA,MAAA,EAAA,CAAA,gySAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FD1Da,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,cAGb,KAAK,EAAA,QAAA,EAAA,skLAAA,EAAA,MAAA,EAAA,CAAA,gySAAA,CAAA,EAAA;wDAIjB,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;MEIrB,oCAAoC,CAAA;AAI5B,IAAA,cAAA;AAHpB,IAAA,cAAc;AACd,IAAA,YAAY;AAEZ,IAAA,WAAA,CAAoB,cAAiC,EAAA;QAAjC,IAAc,CAAA,cAAA,GAAd,cAAc;;IAElC,QAAQ,GAAA;QACP,IAAI,IAAI,CAAC,cAAc;AACtB,YAAA,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;AAC/E,gBAAA,IAAI,CAAC,YAAY,GAAG,GAAG;AACxB,aAAC,CAAC;;AAGJ,IAAA,WAAW;wGAbC,oCAAoC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oCAAoC,ECbjD,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,o3CA0BA,EDhBa,MAAA,EAAA,CAAA,42CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAA,CAAA;;4FAGjG,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAPhD,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iCAAiC,EAG/B,UAAA,EAAA,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cACjG,KAAK,EAAA,QAAA,EAAA,o3CAAA,EAAA,MAAA,EAAA,CAAA,42CAAA,CAAA,EAAA;;;MEDL,6BAA6B,CAAA;AAchC,IAAA,QAAA;AACA,IAAA,uBAAA;AACA,IAAA,WAAA;AAfT;;AAEG;AAC4B,IAAA,IAAI;AAEnC;;AAEG;AACM,IAAA,wBAAwB;AAEzB,IAAA,WAAW;AAEnB,IAAA,WAAA,CACS,QAAiB,EACjB,uBAA+C,EAC/C,WAAuB,EAAA;QAFvB,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB;QACvB,IAAW,CAAA,WAAA,GAAX,WAAW;;AAGpB;;AAEG;IACH,QAAQ,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACf;;AAGD,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC;AACzG,YAAA;AACC,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,OAAO,EAAE,CAAC;AACV,aAAA;AACD,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC;;AAG9D;;;AAGG;IAEH,IAAI,GAAA;;AAEH,QAAA,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE;AACxD,YAAA,MAAM,UAAU,GAAuD,IAAI,CAAC,WAAW,CAAC,MAAM,CAC7F,IAAI,eAAe,CAAC,oCAAoC,CAAC,CACzD;AAED,YAAA,QAAQ,IAAI,CAAC,wBAAwB;gBACpC,KAAK,SAAS,CAAC,eAAe;oBAC7B,UAAU,CAAC,QAAQ,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI;oBAC9C;AACD,gBAAA;oBACC;;;;AAKJ;;;AAGG;IAEH,IAAI,GAAA;QACH,IAAI,CAAC,YAAY,EAAE;;AAGpB;;AAEG;IACH,WAAW,GAAA;QACV,IAAI,CAAC,YAAY,EAAE;;AAGpB;;AAEG;IACK,YAAY,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;;;wGAnFf,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA7B,6BAA6B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,sBAAA,EAAA,MAAA,CAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAJzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,UAAU,EAAE,KAAK;AACjB,iBAAA;0IAK+B,IAAI,EAAA,CAAA;sBAAlC,KAAK;uBAAC,CAAsB,oBAAA,CAAA;gBAKpB,wBAAwB,EAAA,CAAA;sBAAhC;gBAoCD,IAAI,EAAA,CAAA;sBADH,YAAY;uBAAC,YAAY;gBAuB1B,IAAI,EAAA,CAAA;sBADH,YAAY;uBAAC,YAAY;;;ACtE3B;MAQa,oBAAoB,CAAA;AAExB,IAAA,OAAA;AACC,IAAA,QAAA;AACA,IAAA,iBAAA;AACA,IAAA,kBAAA;AAJT,IAAA,WAAA,CACQ,OAAgC,EAC/B,QAAmB,EACnB,iBAA8C,EAC9C,kBAAqC,EAAA;QAHtC,IAAO,CAAA,OAAA,GAAP,OAAO;QACN,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB;;;AAKpB,IAAA,KAAK;AAGL,IAAA,MAAM;IAEL,QAAQ,GAAG,KAAK;;AAExB,IAAA,IACW,OAAO,GAAA;QACjB,OAAO,IAAI,CAAC,QAAQ;;IAErB,IAAW,OAAO,CAAC,KAAc,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;QACrB,IAAI,KAAK,EAAE;AACV,YAAA,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;AAC1C,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,KAAK,EAAE,QAAQ;AACf,gBAAA,0BAA0B,EAAE,IAAI;AAChC,aAAA,CAAC;;;AAIJ;;AAEG;AAEI,IAAA,KAAK,CAAC,KAAK,EAAA;QACjB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM;YAAE;AAE1C,QAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE;YACpF,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;;;AAG/G,QAAA,QAAQ,CAAC,YAAY,EAAE,EAAE,eAAe,EAAE;QAE1C,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS,EAAE;AAC5C,YAAA,MAAM,gBAAgB,GAAG,CAAC,IAAI,CAAC,QAAQ;AACvC,YAAA,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,IAAI,CAAC;AACjD,gBAAA,WAAW,EAAE;AACZ,oBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;AACvB,oBAAA,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG;AACnB,iBAAA;AACD,gBAAA,UAAU,EAAE,gBAAgB;AACE,aAAA,CAAC;;aAC1B;;;AAGN,YAAA,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC;AACvC,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,SAAS,EAAE,IAAI;gBACf,MAAM,EAAE,IAAI,CAAC,MAAM;AACnB,gBAAA,WAAW,EAAE,KAAK,IAAI,KAAK,CAAC,QAAQ;AACpC,aAAA,CAAC;;;AAIJ;;;AAGG;IACH,kBAAkB,GAAA;QACjB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS,EAAE;YAC5C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,SAAS,CAAC,SAAS,CAAA,CAAA,EAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAE,CAAA,CAAC;;aACxG;AACN,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAA,KAAA,EAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAA,CAAE,CAAC;;;wGA1EnE,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,2BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,CAAA,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,SAAA,EAAA,IAAA,EAAA,oBAAoB,gPAHtB,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4kBAAA,CAAA,EAAA,CAAA;;4FAGzB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;+BACC,gBAAgB,EAAA,QAAA,EAEhB,2BAA2B,EAAA,UAAA,EACzB,KAAK,EAAA,MAAA,EAAA,CAAA,4kBAAA,CAAA,EAAA;2KAYV,KAAK,EAAA,CAAA;sBADX,KAAK;uBAAC,UAAU;gBAIV,MAAM,EAAA,CAAA;sBADZ;gBAMU,OAAO,EAAA,CAAA;sBADjB,WAAW;uBAAC,oBAAoB;gBAmB1B,KAAK,EAAA,CAAA;sBADX,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;MCjCrB,2BAA2B,CAAA;AAqBnB,IAAA,iBAAA;AAAwD,IAAA,YAAA;AApB5D,IAAA,IAAI;AAgBZ,IAAA,YAAY,GAAG,IAAI,OAAO,EAAE;AAE5B,IAAA,6BAA6B;IAErC,WAAoB,CAAA,iBAA8C,EAAU,YAA+B,EAAA;QAAvF,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QAAuC,IAAY,CAAA,YAAA,GAAZ,YAAY;;AAGhF,IAAA,QAAQ;AACR,IAAA,OAAO;AAEf;;;AAGG;AACH,IAAA,UAAU,CAAC,OAAgB,EAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;AACpC,YAAA,IAAI,aAAa,GAAG,QAAQ,CAAC,gBAAgB,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC;AACxF,YAAA,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;gBAAE;YAChC,MAAM,OAAO,GAAG;AACf,kBAAE,IAAI,CAAC,OAAO,KAAK,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;kBACvD,IAAI,CAAC,OAAO,KAAK,aAAa,CAAC,CAAC,CAAC;YAEpC,IAAI,OAAO,EAAE;gBACZ,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC;AAC5C,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAkB,CAAC,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AACrG,gBAAA,MAAM,iBAAiB,GAAI,UAAU,CAAC,SAAS,CAAiB,EAAE,OAAO,GAAG,IAAI,CAAC;gBACjF,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,UAAU,EAAE,SAAS,CAAC;;iBACjE;gBACN,IAAI,QAAQ,GAAG,IAAI;gBACnB,IAAI,OAAO,EAAE;oBACZ,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpF,wBAAA,IAAI,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAClD,4BAAA,QAAQ,GAAG,CAAC,GAAG,CAAC;4BAChB;;;;qBAGI;AACN,oBAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACpD,wBAAA,IAAI,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAClD,4BAAA,QAAQ,GAAG,CAAC,GAAG,CAAC;4BAChB;;;;gBAIH,IAAI,QAAQ,KAAK,IAAI;AAAE,oBAAA,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW;gBAEvD,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE;AACvC,oBAAA,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,QAAQ;AAChC,oBAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;AAC3B,wBAAA,SAAS,EAAE,QAAQ;AACnB,wBAAA,QAAQ,EAAE,QAAQ;AAClB,qBAAA,CAAC;oBACF,UAAU,CAAC,MAAK;AACf,wBAAA,aAAa,GAAG,QAAQ,CAAC,gBAAgB,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC;wBACpF,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC;AAC5C,wBAAA,MAAM,SAAS,GAAG,OAAO,GAAG,CAAC,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC;AACxD,wBAAA,MAAM,iBAAiB,GAAI,UAAU,CAAC,SAAS,CAAiB,EAAE,OAAO,GAAG,IAAI,CAAC;wBACjF,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,UAAU,EAAE,SAAS,CAAC;AACxE,qBAAC,CAAC;;;;aAGE;AACN,YAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE;gBACvC,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;AAC1C,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC;sBACpB,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAA+B,CAAC,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;sBAC5E,CAAC;gBACJ,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;;iBACvG;AACN,gBAAA,MAAM,IAAI,GAAG,CAAC,OAAO,GAAGC,qBAA6B,GAAGC,qBAA6B,EACpF,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAC5B,IAAI,CAAC,IAAI,CAAC,WAAW,CACrB;gBACD,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE;AACnC,oBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AAClD,wBAAA,MAAM,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI;AAC/D,wBAAA,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AAC7F,qBAAC,CAAC;AACF,oBAAA,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI;;;;;AAMhC,IAAA,wBAAwB,CAAC,iBAAyB,EAAE,UAAqB,EAAE,SAAiB,EAAA;AAC3F,QAAA,MAAM,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,oBAAoB,CAAC,EAAE,aAAa,CAAC,oBAAoB,CAAC;AAC1G,QAAA,IAAI,CAAC,gBAAgB;YAAE;QAEvB,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,qBAAqB,EAAE;AAC1D,QAAA,IAAI,OAAO,GAAG,gBAAgB,CAAC,SAAS;AAExC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,OAAO;AAE9B,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,IAAI,CACzF,GAAG,IAAI,GAAG,CAAC,EAAE,KAAK,iBAAiB,CACnC;AACD,QAAA,MAAM,eAAe,GAAG;AACvB,YAAA,IAAI,EAAE,kBAAkB;YACxB,EAAE,EAAE,kBAAkB,CAAC,EAAE;YACzB,KAAK,EAAE,kBAAkB,CAAC,KAAK;YAC/B,GAAG,EAAE,kBAAkB,CAAC,GAAG;YAC3B,SAAS,EAAE,GAAG,GAAG,IAAI;AACrB,YAAA,mBAAmB,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI;SACpC;QACD,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,eAAe,CAAC;AAEzD,QAAA,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC;AACpC,QAAA,UAAU,CAAC,OAAO,CAAC,CAAC,IAAG;AACtB,YAAA,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC;AAC/B,SAAC,CAAC;AACD,QAAA,IAAI,CAAC,OAAuB,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QACpF,IAAI,CAAC,OAAuB,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;;AAGxD;;;AAGG;AACH,IAAA,sBAAsB,CAAC,gBAAqD,EAAA;QAC3E,MAAM,mBAAmB,GAAG,IAAI,CAAC,wBAAwB,CACxD,IAAI,CAAC,IAAI,CAAC,kBAAqC,EAC/C,gBAAgB,CAAC,KAAK,EACtB,gBAAgB,CAAC,GAAG,CACpB;AACD,QAAA,IAAI,mBAAmB,CAAC,IAAI,KAAK,CAAC,CAAC;YAAE;QAErC,UAAU,CAAC,MAAK;AACf,YAAA,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,mBAAmB,CAAC,IAAI,GAAG,CAAC,EAAE;gBAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;AAC1C,gBAAA,UAAU,EAAE,OAAO,CAAC,SAAS,IAAG;AAC/B,oBAAA,IAAI,SAAS;AAAE,wBAAA,SAAS,CAAC,OAAO,GAAG,KAAK;AACzC,iBAAC,CAAC;AACF,gBAAA,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAC3B,IAAI,IAAI,IAAI,EAAE,KAAK,EAAE,KAAK,KAAK,gBAAgB,CAAC,KAAK,IAAI,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,gBAAgB,CAAC,GAAG,CAClG;AACD,gBAAA,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC;AACvC,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,SAAS,EAAE,KAAK;AAChB,oBAAA,MAAM,EAAE,UAAU;AAClB,oBAAA,WAAW,EAAE,KAAK;AAClB,oBAAA,WAAW,EAAE,KAAK;AAClB,iBAAA,CAAC;;iBACI;gBACN,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,mBAAmB,CAAC,IAAI,GAAG,CAAC;AACpD,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;oBAClD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;AAC1C,oBAAA,UAAU,EAAE,OAAO,CAAC,SAAS,IAAG;AAC/B,wBAAA,IAAI,SAAS;AAAE,4BAAA,SAAS,CAAC,OAAO,GAAG,KAAK;AACzC,qBAAC,CAAC;AACF,oBAAA,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAC3B,IAAI,IAAI,IAAI,EAAE,KAAK,EAAE,KAAK,KAAK,gBAAgB,CAAC,KAAK,IAAI,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,gBAAgB,CAAC,GAAG,CAClG;AACD,oBAAA,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC;AACvC,wBAAA,IAAI,EAAE,IAAI;AACV,wBAAA,SAAS,EAAE,KAAK;AAChB,wBAAA,MAAM,EAAE,UAAU;AAClB,wBAAA,WAAW,EAAE,KAAK;AAClB,wBAAA,WAAW,EAAE,KAAK;AAClB,qBAAA,CAAC;AACH,iBAAC,CAAC;;AAEJ,SAAC,CAAC;;AAGH;;;AAGG;AACH,IAAA,gBAAgB,CAAC,KAAY,EAAA;QAC5B,MAAM,mBAAmB,GAAG,IAAI,CAAC,wBAAwB,CACxD,IAAI,CAAC,IAAI,CAAC,kBAAqC,EAC/C,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,GAAG,CACT;AACD,QAAA,IAAI,mBAAmB,CAAC,IAAI,KAAK,CAAC,CAAC;YAAE;QACrC,UAAU,CAAC,MAAK;AACf,YAAA,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,mBAAmB,CAAC,IAAI,GAAG,CAAC,EAAE;gBAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;AAC1C,gBAAA,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,KAAK,EAAE,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC;AAC1G,gBAAA,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC;AACvC,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,SAAS,EAAE,KAAK;AAChB,oBAAA,MAAM,EAAE,UAAU;AAClB,oBAAA,WAAW,EAAE,KAAK;AAClB,oBAAA,WAAW,EAAE,KAAK;AAClB,iBAAA,CAAC;;iBACI;gBACN,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,mBAAmB,CAAC,IAAI,GAAG,CAAC;AACpD,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;oBAClD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;AAC1C,oBAAA,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,KAAK,EAAE,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC;AAC1G,oBAAA,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC;AACvC,wBAAA,IAAI,EAAE,IAAI;AACV,wBAAA,SAAS,EAAE,KAAK;AAChB,wBAAA,MAAM,EAAE,UAAU;AAClB,wBAAA,WAAW,EAAE,KAAK;AAClB,wBAAA,WAAW,EAAE,KAAK;AAClB,qBAAA,CAAC;AACH,iBAAC,CAAC;;AAEJ,SAAC,CAAC;;AAGH;;;AAGG;AACH,IAAA,sBAAsB,CAAC,KAAY,EAAA;QAClC,MAAM,mBAAmB,GAAG,IAAI,CAAC,wBAAwB,CACxD,IAAI,CAAC,IAAI,CAAC,kBAAqC,EAC/C,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,GAAG,CACT;AACD,QAAA,IAAI,mBAAmB,CAAC,IAAI,KAAK,CAAC,CAAC;YAAE;QACrC,UAAU,CAAC,MAAK;AACf,YAAA,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,mBAAmB,CAAC,IAAI,GAAG,CAAC,EAAE;gBAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;AAC1C,gBAAA,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,KAAK,EAAE,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC;AAC1G,gBAAA,IAAI,IAAI;AAAE,oBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;;iBACxB;AACN,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;oBAClD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;AAC1C,oBAAA,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,KAAK,EAAE,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC;AAC1G,oBAAA,IAAI,IAAI;AAAE,wBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AAC/B,iBAAC,CAAC;;AAEJ,SAAC,CAAC;;AAEH;;;AAGG;AACH,IAAA,oBAAoB,CAAC,OAAgB,EAAA;AACpC,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YACjB,OAAO,OAAO,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK;;aACrF;AACN,YAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC;;;AAIlC,IAAA,wBAAwB,CACvB,kBAAmC,EACnC,KAAa,EACb,GAAW,EAAA;AAEX,QAAA,IAAI,CAAC,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE;AACvG,QAAA,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,kBAAkB,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;AAC5D,YAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACrE,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;AACnD,gBAAA,IAAI,WAAW,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;oBACvE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE;;;;;AAK7C,QAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE;;AAG5C;;;;AAIG;IACH,kBAAkB,GAAA;QACjB,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,iBAAiB;AACxE,QAAA,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;AAE/G,QAAA,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,YAAY;QAE7C;aACE,IAAI,CACJ,cAAc,CAAC,eAAe,CAAC,EAC/B,MAAM,CACL,CAAC,GAAG,QAAQ,CAAC,KACZ,CAAC,QAAQ,CAAC,QAAQ,KAAK,aAAa;YACnC,QAAQ,CAAC,QAAQ,KAAK,SAAS;AAC/B,YAAA,QAAQ,CAAC,QAAQ,KAAK,kBAAkB;AACzC,YAAA,CAAC,QAAQ,CAAC,UAAU,CACrB,EACD,YAAY,CAAC,IAAI,CAAC,EAClB,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC;AAE5B,aAAA,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAEpD;aACE,IAAI,CACJ,oBAAoB,EAAE,EACtB,cAAc,CAAC,eAAe,CAAC,EAC/B,MAAM,CACL,CAAC,GAAG,QAAQ,CAAC,KACZ,CAAC,QAAQ,CAAC,QAAQ,KAAK,aAAa;YACnC,QAAQ,CAAC,QAAQ,KAAK,SAAS;AAC/B,YAAA,QAAQ,CAAC,QAAQ,KAAK,kBAAkB;AACzC,YAAA,CAAC,QAAQ,CAAC,UAAU,CACrB,EACD,YAAY,CAAC,IAAI,CAAC,EAClB,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC;aAE5B,SAAS,CAAC,CAAC,CAAC,mBAAmB,IAAI,KAAI;AACvC,YAAA,IACC,IAAI,CAAC,6BAA6B,KAAK,mBAAmB;iBACzD,IAAI,CAAC,6BAA6B;AAClC,oBAAA,IAAI,CAAC,6BAA6B,CAAC,IAAI,EAAE,KAAK,KAAK,mBAAmB,EAAE,IAAI,EAAE,KAAK,CAAC,EACpF;AACD,gBAAA,IAAI,CAAC,6BAA6B,GAAG,IAAI;gBACzC;;AAED,YAAA,IAAI,CAAC,6BAA6B,GAAG,mBAAmB;AACxD,YAAA,IAAI,CAAC,mBAAmB;gBAAE;AAE1B,YAAA,MAAM,yBAAyB,GAAG,IAAI,CAAC,iBAAiB,CAAC,gBAAgB;YACzE,IACC,CAAC,CAAC,yBAAyB;gBAC3B,mBAAmB,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,yBAAyB,CAAC,KAAK;gBAC1E,mBAAmB,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,yBAAyB,CAAC,GAAG;gBAEtE,UAAU,CAAC,MAAK;oBACf,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE;AAC3C,oBAAA,UAAU,EAAE,OAAO,CAAC,SAAS,IAAG;AAC/B,wBAAA,IACC,SAAS;AACT,4BAAA,SAAS,EAAE,KAAK,EAAE,KAAK,KAAK,yBAAyB,CAAC,KAAK;AAC3D,4BAAA,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,yBAAyB,CAAC,GAAG;AAEvD,4BAAA,SAAS,CAAC,OAAO,GAAG,KAAK;AAC3B,qBAAC,CAAC;AACH,iBAAC,CAAC;AACJ,SAAC,CAAC;QAEH;AACE,aAAA,IAAI,CACJ,oBAAoB,EAAE,EACtB,MAAM,CACL,QAAQ,IACP,IAAI,CAAC,6BAA6B;AAClC,aAAC,QAAQ,CAAC,QAAQ,KAAK,aAAa;gBACnC,QAAQ,CAAC,QAAQ,KAAK,SAAS;AAC/B,gBAAA,QAAQ,CAAC,QAAQ,KAAK,kBAAkB,CAAC;AAC1C,YAAA,CAAC,QAAQ,CAAC,UAAU,CACrB,EACD,YAAY,CAAC,IAAI,CAAC,EAClB,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC;aAE5B,SAAS,CAAC,CAAC,IAAG;YACd,UAAU,CAAC,MAAK;gBACf,MAAM,KAAK,GAAG,IAAI,CAAC,6BAA6B,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK;gBACpE,MAAM,GAAG,GAAG,IAAI,CAAC,6BAA6B,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG;AAChE,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC;gBAC7F,IAAI,CAAC,IAAI,EAAE;oBACV;;AAED,gBAAA,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;aAC7F,EAAE,GAAG,CAAC;AACR,SAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,CAAC;AACrB,aAAA,IAAI,CACJ,YAAY,CAAC,IAAI,CAAC,EAClB,cAAc,CAAC,eAAe,CAAC,EAC/B,MAAM,CACL,CAAC,CAAC,gBAAgB,EAAE,YAAY,CAAC,KAChC,gBAAgB,IAAI,YAAY,CAAC,QAAQ,KAAK,kBAAkB,IAAI,CAAC,YAAY,CAAC,UAAU,CAC7F;aAED,SAAS,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,KAAI;AACpC,YAAA,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC;AAC9C,SAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,CAAC;aACrB,IAAI,CACJ,YAAY,CAAC,IAAI,CAAC,EAClB,cAAc,CAAC,eAAe,CAAC,EAC/B,MAAM,CACL,CAAC,CAAC,gBAAgB,EAAE,YAAY,CAAC,KAChC,gBAAgB;aACf,YAAY,CAAC,QAAQ,KAAK,aAAa,IAAI,YAAY,CAAC,QAAQ,KAAK,SAAS,CAAC;AAChF,YAAA,CAAC,YAAY,CAAC,UAAU,CACzB;aAED,SAAS,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,KAAI;YACpC,IAAI,CAAC,gBAAgB,EAAE;AACtB,gBAAA,IAAI,CAAC,6BAA6B,GAAG,IAAI;gBACzC;;AAED,YAAA,IAAI,gBAAgB,CAAC,UAAU,EAAE;AAChC,gBAAA,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,WAAW,CAAC;;iBAC7C;AACN,gBAAA,IAAI,CAAC,6BAA6B,GAAG,IAAI;AACzC,gBAAA,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,WAAW,CAAC;;AAE3D,SAAC,CAAC;AAEH,QAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YACrE,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE;AAC3C,YAAA,IAAI,CAAC,UAAU;gBAAE;AACjB,YAAA,UAAU,CAAC,OAAO,CAAC,SAAS,IAAG;AAC9B,gBAAA,IAAI,SAAS;AAAE,oBAAA,SAAS,CAAC,OAAO,GAAG,KAAK;AACzC,aAAC,CAAC;AACH,SAAC,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC,KAAU,KAAI;AAC5D,YAAA,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE;AACtC,gBAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,gBAAgB,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC;gBAC1F,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC;gBAC5C,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,IAAK,CAAiB,EAAE,OAAO,GAAG,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;AAC7F,gBAAA,IAAI,CAAC,OAAO,GAAG,cAAc;AAC7B,gBAAA,UAAU,CAAC,OAAO,CAAC,CAAC,IAAG;AACtB,oBAAA,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC;AAC/B,iBAAC,CAAC;AACF,gBAAA,IAAI,CAAC,cAAc;oBAAE;gBAEpB,IAAI,CAAC,OAAuB,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;;AAEzD,SAAC,CAAC;;IAGH,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;;wGAnbjB,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,2BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,sIAuBtB,oBAAoB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAvBzB,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAJvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,UAAU,EAAE,KAAK;AACjB,iBAAA;0HAEgB,IAAI,EAAA,CAAA;sBAAnB;gBAuBO,QAAQ,EAAA,CAAA;sBADf,eAAe;uBAAC,oBAAoB;;;AChChC,SAAU,mBAAmB,CAAC,IAAwB,EAAA;IAC3D,QAAQ,IAAI;QACX,KAAK,kBAAkB,CAAC,KAAK;YAC5B,OAAO,SAAS,CAAA,CAAA,UAAA,CAAY;QAC7B,KAAK,kBAAkB,CAAC,QAAQ;YAC/B,OAAO,SAAS,CAAA,CAAA,QAAA,CAAU;QAC3B,KAAK,kBAAkB,CAAC,UAAU;YACjC,OAAO,SAAS,CAAA,CAAA,iBAAA,CAAmB;QACpC,KAAK,kBAAkB,CAAC,QAAQ;YAC/B,OAAO,SAAS,CAAA,CAAA,yBAAA,CAA2B;QAC5C,KAAK,kBAAkB,CAAC,aAAa;QACrC,KAAK,kBAAkB,CAAC,oBAAoB;YAC3C,OAAO,SAAS,CAAA,CAAA,eAAA,CAAiB;AAClC,QAAA;YACC,OAAO,SAAS,CAAA,CAAA,YAAA,CAAc;;AAEjC;AAEM,SAAU,sBAAsB,CAAC,IAA2B,EAAA;IACjE,QAAQ,IAAI;QACX,KAAK,qBAAqB,CAAC,OAAO;YACjC,OAAO,SAAS,CAAA,CAAA,OAAA,CAAS;QAC1B,KAAK,qBAAqB,CAAC,OAAO;YACjC,OAAO,SAAS,CAAA,CAAA,OAAA,CAAS;QAC1B,KAAK,qBAAqB,CAAC,SAAS;YACnC,OAAO,SAAS,CAAA,CAAA,SAAA,CAAW;QAC5B,KAAK,qBAAqB,CAAC,UAAU;YACpC,OAAO,SAAS,CAAA,CAAA,WAAA,CAAa;QAC9B,KAAK,qBAAqB,CAAC,iBAAiB;YAC3C,OAAO,SAAS,CAAA,CAAA,kBAAA,CAAoB;QACrC,KAAK,qBAAqB,CAAC,uCAAuC;YACjE,OAAO,SAAS,CAAA,CAAA,2CAAA,CAA6C;QAC9D,KAAK,qBAAqB,CAAC,oCAAoC;YAC9D,OAAO,SAAS,CAAA,CAAA,wCAAA,CAA0C;QAC3D,KAAK,qBAAqB,CAAC,iCAAiC;YAC3D,OAAO,SAAS,CAAA,CAAA,qCAAA,CAAuC;AACxD,QAAA;YACC,OAAO,SAAS,CAAA,CAAA,YAAA,CAAc;;AAEjC;AAEM,SAAU,0BAA0B,CAAC,IAAgC,EAAA;IAC1E,QAAQ,IAAI;QACX,KAAK,0BAA0B,CAAC,OAAO;YACtC,OAAO,SAAS,CAAA,CAAA,OAAA,CAAS;QAC1B,KAAK,0BAA0B,CAAC,uBAAuB;YACtD,OAAO,SAAS,CAAA,CAAA,yBAAA,CAA2B;QAC5C,KAAK,0BAA0B,CAAC,QAAQ;YACvC,OAAO,SAAS,CAAA,CAAA,SAAA,CAAW;QAC5B,KAAK,0BAA0B,CAAC,QAAQ;YACvC,OAAO,SAAS,CAAA,CAAA,SAAA,CAAW;QAC5B,KAAK,0BAA0B,CAAC,OAAO;YACtC,OAAO,SAAS,CAAA,CAAA,OAAA,CAAS;QAC1B,KAAK,0BAA0B,CAAC,WAAW;YAC1C,OAAO,SAAS,CAAA,CAAA,WAAA,CAAa;QAC9B,KAAK,0BAA0B,CAAC,OAAO;YACtC,OAAO,SAAS,CAAA,CAAA,OAAA,CAAS;QAC1B,KAAK,0BAA0B,CAAC,YAAY;YAC3C,OAAO,SAAS,CAAA,CAAA,cAAA,CAAgB;QACjC,KAAK,0BAA0B,CAAC,WAAW;YAC1C,OAAO,SAAS,CAAA,CAAA,WAAA,CAAa;QAC9B,KAAK,0BAA0B,CAAC,WAAW;YAC1C,OAAO,SAAS,CAAA,CAAA,YAAA,CAAc;QAC/B,KAAK,0BAA0B,CAAC,aAAa;YAC5C,OAAO,SAAS,CAAA,CAAA,cAAA,CAAgB;QACjC,KAAK,0BAA0B,CAAC,YAAY;YAC3C,OAAO,SAAS,CAAA,CAAA,aAAA,CAAe;QAChC,KAAK,0BAA0B,CAAC,UAAU;YACzC,OAAO,SAAS,CAAA,CAAA,WAAA,CAAa;QAC9B,KAAK,0BAA0B,CAAC,uBAAuB;YACtD,OAAO,SAAS,CAAA,CAAA,wBAAA,CAA0B;QAC3C,KAAK,0BAA0B,CAAC,WAAW;YAC1C,OAAO,SAAS,CAAA,CAAA,YAAA,CAAc;QAC/B,KAAK,0BAA0B,CAAC,SAAS;YACxC,OAAO,SAAS,CAAA,CAAA,SAAA,CAAW;QAC5B,KAAK,0BAA0B,CAAC,QAAQ;YACvC,OAAO,SAAS,CAAA,CAAA,QAAA,CAAU;QAC3B,KAAK,0BAA0B,CAAC,KAAK;YACpC,OAAO,SAAS,CAAA,CAAA,KAAA,CAAO;QACxB,KAAK,0BAA0B,CAAC,UAAU;YACzC,OAAO,SAAS,CAAA,CAAA,UAAA,CAAY;QAC7B,KAAK,0BAA0B,CAAC,cAAc;YAC7C,OAAO,SAAS,CAAA,CAAA,cAAA,CAAgB;QACjC,KAAK,0BAA0B,CAAC,MAAM;YACrC,OAAO,SAAS,CAAA,CAAA,MAAA,CAAQ;QACzB,KAAK,0BAA0B,CAAC,WAAW;YAC1C,OAAO,SAAS,CAAA,CAAA,WAAA,CAAa;QAC9B,KAAK,0BAA0B,CAAC,KAAK;YACpC,OAAO,SAAS,CAAA,CAAA,KAAA,CAAO;QACxB,KAAK,0BAA0B,CAAC,iBAAiB;YAChD,OAAO,SAAS,CAAA,CAAA,kBAAA,CAAoB;QACrC,KAAK,0BAA0B,CAAC,wBAAwB;YACvD,OAAO,SAAS,CAAA,CAAA,0BAAA,CAA4B;QAC7C,KAAK,0BAA0B,CAAC,wBAAwB;YACvD,OAAO,SAAS,CAAA,CAAA,0BAAA,CAA4B;QAC7C,KAAK,0BAA0B,CAAC,sBAAsB;YACrD,OAAO,SAAS,CAAA,CAAA,wBAAA,CAA0B;QAC3C,KAAK,0BAA0B,CAAC,sBAAsB;YACrD,OAAO,SAAS,CAAA,CAAA,wBAAA,CAA0B;QAC3C,KAAK,0BAA0B,CAAC,mBAAmB;YAClD,OAAO,SAAS,CAAA,CAAA,qBAAA,CAAuB;QACxC,KAAK,0BAA0B,CAAC,eAAe;YAC9C,OAAO,SAAS,CAAA,CAAA,gBAAA,CAAkB;QACnC,KAAK,0BAA0B,CAAC,iBAAiB;YAChD,OAAO,SAAS,CAAA,CAAA,mBAAA,CAAqB;QACtC,KAAK,0BAA0B,CAAC,iBAAiB;YAChD,OAAO,SAAS,CAAA,CAAA,kBAAA,CAAoB;QACrC,KAAK,0BAA0B,CAAC,WAAW;YAC1C,OAAO,SAAS,CAAA,CAAA,YAAA,CAAc;QAC/B,KAAK,0BAA0B,CAAC,cAAc;YAC7C,OAAO,SAAS,CAAA,CAAA,eAAA,CAAiB;AAClC,QAAA;YACC,OAAO,SAAS,CAAA,CAAA,YAAA,CAAc;;AAEjC;AAEM,SAAU,gCAAgC,CAAC,IAAgC,EAAA;IAChF,QAAQ,IAAI;QACX,KAAK,0BAA0B,CAAC,OAAO;YACtC,OAAO,SAAS,CAAA,CAAA,8BAAA,CAAgC;QACjD,KAAK,0BAA0B,CAAC,uBAAuB;YACtD,OAAO,SAAS,CAAA,CAAA,4CAAA,CAA8C;QAC/D,KAAK,0BAA0B,CAAC,QAAQ;YACvC,OAAO,SAAS,CAAA,CAAA,2FAAA,CAA6F;QAC9G,KAAK,0BAA0B,CAAC,QAAQ;YACvC,OAAO,SAAS,CAAA,CAAA,8FAAA,CAAgG;QACjH,KAAK,0BAA0B,CAAC,OAAO;YACtC,OAAO,SAAS,CAAA,CAAA,qGAAA,CAAuG;QACxH,KAAK,0BAA0B,CAAC,WAAW;YAC1C,OAAO,SAAS,CAAA,CAAA,sEAAA,CAAwE;QACzF,KAAK,0BAA0B,CAAC,OAAO;YACtC,OAAO,SAAS,CAAA,CAAA,iEAAA,CAAmE;QACpF,KAAK,0BAA0B,CAAC,YAAY;YAC3C,OAAO,SAAS,CAAA,CAAA,+FAAA,CAAiG;QAClH,KAAK,0BAA0B,CAAC,WAAW;YAC1C,OAAO,SAAS,CAAA,CAAA,2GAAA,CAA6G;QAC9H,KAAK,0BAA0B,CAAC,WAAW;YAC1C,OAAO,SAAS,CAAA,CAAA,wHAAA,CAA0H;QAC3I,KAAK,0BAA0B,CAAC,aAAa;YAC5C,OAAO,SAAS,CAAA,CAAA,mGAAA,CAAqG;QACtH,KAAK,0BAA0B,CAAC,YAAY;YAC3C,OAAO,SAAS,CAAA,CAAA,kGAAA,CAAoG;QACrH,KAAK,0BAA0B,CAAC,UAAU;YACzC,OAAO,SAAS,CAAA,CAAA,iHAAA,CAAmH;;QAEpI,KAAK,0BAA0B,CAAC,uBAAuB;YACtD,OAAO,SAAS,CAAA,CAAA,+IAAA,CAAiJ;QAClK,KAAK,0BAA0B,CAAC,WAAW;YAC1C,OAAO,SAAS,CAAA,CAAA,sEAAA,CAAwE;QACzF,KAAK,0BAA0B,CAAC,SAAS;YACxC,OAAO,SAAS,CAAA,CAAA,+HAAA,CAAiI;QAClJ,KAAK,0BAA0B,CAAC,QAAQ;YACvC,OAAO,SAAS,CAAA,CAAA,sBAAA,CAAwB;QACzC,KAAK,0BAA0B,CAAC,KAAK;YACpC,OAAO,SAAS,CAAA,CAAA,qCAAA,CAAuC;QACxD,KAAK,0BAA0B,CAAC,UAAU;YACzC,OAAO,SAAS,CAAA,CAAA,0CAAA,CAA4C;QAC7D,KAAK,0BAA0B,CAAC,cAAc;YAC7C,OAAO,SAAS,CAAA,CAAA,qEAAA,CAAuE;QACxF,KAAK,0BAA0B,CAAC,MAAM;YACrC,OAAO,SAAS,CAAA,CAAA,uDAAA,CAAyD;QAC1E,KAAK,0BAA0B,CAAC,WAAW;YAC1C,OAAO,SAAS,CAAA,CAAA,kFAAA,CAAoF;QACrG,KAAK,0BAA0B,CAAC,KAAK;YACpC,OAAO,SAAS,CAAA,CAAA,6CAAA,CAA+C;QAChE,KAAK,0BAA0B,CAAC,iBAAiB;YAChD,OAAO,SAAS,CAAA,CAAA,kHAAA,CAAoH;QACrI,KAAK,0BAA0B,CAAC,wBAAwB;YACvD,OAAO,SAAS,CAAA,CAAA,oEAAA,CAAsE;QACvF,KAAK,0BAA0B,CAAC,wBAAwB;YACvD,OAAO,SAAS,CAAA,CAAA,iHAAA,CAAmH;QACpI,KAAK,0BAA0B,CAAC,sBAAsB;YACrD,OAAO,SAAS,CAAA,CAAA,oGAAA,CAAsG;QACvH,KAAK,0BAA0B,CAAC,sBAAsB;YACrD,OAAO,SAAS,CAAA,CAAA,kIAAA,CAAoI;QACrJ,KAAK,0BAA0B,CAAC,mBAAmB;YAClD,OAAO,SAAS,CAAA,CAAA,2FAAA,CAA6F;QAC9G,KAAK,0BAA0B,CAAC,eAAe;YAC9C,OAAO,SAAS,CAAA,CAAA,qIAAA,CAAuI;QACxJ,KAAK,0BAA0B,CAAC,iBAAiB;YAChD,OAAO,SAAS,CAAA,CAAA,yCAAA,CAA2C;QAC5D,KAAK,0BAA0B,CAAC,iBAAiB;YAChD,OAAO,SAAS,CAAA,CAAA,+FAAA,CAAiG;QAClH,KAAK,0BAA0B,CAAC,WAAW;YAC1C,OAAO,SAAS,CAAA,CAAA,mEAAA,CAAqE;QACtF,KAAK,0BAA0B,CAAC,cAAc;YAC7C,OAAO,SAAS,CAAA,CAAA,uEAAA,CAAyE;AAC1F,QAAA;YACC,OAAO,SAAS,CAAA,CAAA,sBAAA,CAAwB;;AAE3C;AAEM,SAAU,uBAAuB,CAAC,IAAgC,EAAA;IACvE,QAAQ,IAAI;QACX,KAAK,0BAA0B,CAAC,OAAO;YACtC,OAAO,qBAAqB,CAAC,OAAO;QAErC,KAAK,0BAA0B,CAAC,uBAAuB;QACvD,KAAK,0BAA0B,CAAC,QAAQ;QACxC,KAAK,0BAA0B,CAAC,QAAQ;QACxC,KAAK,0BAA0B,CAAC,OAAO;QACvC,KAAK,0BAA0B,CAAC,WAAW;QAC3C,KAAK,0BAA0B,CAAC,OAAO;QACvC,KAAK,0BAA0B,CAAC,YAAY;QAC5C,KAAK,0BAA0B,CAAC,WAAW;QAC3C,KAAK,0BAA0B,CAAC,cAAc;YAC7C,OAAO,qBAAqB,CAAC,OAAO;QAErC,KAAK,0BAA0B,CAAC,WAAW;QAC3C,KAAK,0BAA0B,CAAC,SAAS;YACxC,OAAO,qBAAqB,CAAC,UAAU;QAExC,KAAK,0BAA0B,CAAC,cAAc;QAC9C,KAAK,0BAA0B,CAAC,MAAM;QACtC,KAAK,0BAA0B,CAAC,WAAW;QAC3C,KAAK,0BAA0B,CAAC,KAAK;QACrC,KAAK,0BAA0B,CAAC,UAAU;QAC1C,KAAK,0BAA0B,CAAC,KAAK;QACrC,KAAK,0BAA0B,CAAC,QAAQ;YACvC,OAAO,qBAAqB,CAAC,SAAS;QAEvC,KAAK,0BAA0B,CAAC,aAAa;QAC7C,KAAK,0BAA0B,CAAC,WAAW;QAC3C,KAAK,0BAA0B,CAAC,iBAAiB;QACjD,KAAK,0BAA0B,CAAC,uBAAuB;QACvD,KAAK,0BAA0B,CAAC,UAAU;QAC1C,KAAK,0BAA0B,CAAC,YAAY;YAC3C,OAAO,qBAAqB,CAAC,iBAAiB;QAE/C,KAAK,0BAA0B,CAAC,wBAAwB;QACxD,KAAK,0BAA0B,CAAC,wBAAwB;YACvD,OAAO,qBAAqB,CAAC,iCAAiC;QAE/D,KAAK,0BAA0B,CAAC,sBAAsB;QACtD,KAAK,0BAA0B,CAAC,sBAAsB;YACrD,OAAO,qBAAqB,CAAC,uCAAuC;QAErE,KAAK,0BAA0B,CAAC,mBAAmB;QACnD,KAAK,0BAA0B,CAAC,eAAe;QAC/C,KAAK,0BAA0B,CAAC,iBAAiB;QACjD,KAAK,0BAA0B,CAAC,iBAAiB;QACjD,KAAK,0BAA0B,CAAC,WAAW;YAC1C,OAAO,qBAAqB,CAAC,oCAAoC;AAClE,QAAA;YACC;;AAEH;AACgB,SAAA,wBAAwB,CACvC,IAAgC,EAChC,oBAAsD,EAAA;IAEtD,QAAQ,IAAI;QACX,KAAK,0BAA0B,CAAC,OAAO;YACtC,OAAO,oBAAoB,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QAEzE,KAAK,0BAA0B,CAAC,uBAAuB;QACvD,KAAK,0BAA0B,CAAC,QAAQ;QACxC,KAAK,0BAA0B,CAAC,QAAQ;QACxC,KAAK,0BAA0B,CAAC,OAAO;QACvC,KAAK,0BAA0B,CAAC,WAAW;QAC3C,KAAK,0BAA0B,CAAC,OAAO;QACvC,KAAK,0BAA0B,CAAC,YAAY;QAC5C,KAAK,0BAA0B,CAAC,WAAW;AAC1C,YAAA,OAAO,oBAAoB,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,UAAU,CACpE,IAAI,GAAG,0BAA0B,CAAC,uBAAuB,CACzD;QAEF,KAAK,0BAA0B,CAAC,WAAW;QAC3C,KAAK,0BAA0B,CAAC,SAAS;AACxC,YAAA,OAAO,oBAAoB,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC,UAAU,CACvE,IAAI,GAAG,0BAA0B,CAAC,WAAW,CAC7C;QAEF,KAAK,0BAA0B,CAAC,cAAc;QAC9C,KAAK,0BAA0B,CAAC,MAAM;QACtC,KAAK,0BAA0B,CAAC,WAAW;QAC3C,KAAK,0BAA0B,CAAC,KAAK;QACrC,KAAK,0BAA0B,CAAC,UAAU;QAC1C,KAAK,0BAA0B,CAAC,KAAK;QACrC,KAAK,0BAA0B,CAAC,QAAQ;AACvC,YAAA,OAAO,oBAAoB,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,UAAU,CACtE,IAAI,GAAG,0BAA0B,CAAC,cAAc,CAChD;QAEF,KAAK,0BAA0B,CAAC,aAAa;QAC7C,KAAK,0BAA0B,CAAC,WAAW;QAC3C,KAAK,0BAA0B,CAAC,iBAAiB;QACjD,KAAK,0BAA0B,CAAC,uBAAuB;QACvD,KAAK,0BAA0B,CAAC,UAAU;QAC1C,KAAK,0BAA0B,CAAC,YAAY;AAC3C,YAAA,OAAO,oBAAoB,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,CAAC,UAAU,CAC9E,IAAI,GAAG,0BAA0B,CAAC,aAAa,CAC/C;QAEF,KAAK,0BAA0B,CAAC,wBAAwB;QACxD,KAAK,0BAA0B,CAAC,wBAAwB;AACvD,YAAA,OAAO,oBAAoB,CAAC,qBAAqB,CAAC,iCAAiC,CAAC,CAAC,UAAU,CAC9F,IAAI,GAAG,0BAA0B,CAAC,wBAAwB,CAC1D;QAEF,KAAK,0BAA0B,CAAC,sBAAsB;QACtD,KAAK,0BAA0B,CAAC,sBAAsB;AACrD,YAAA,OAAO,oBAAoB,CAAC,qBAAqB,CAAC,uCAAuC,CAAC,CAAC,UAAU,CACpG,IAAI,GAAG,0BAA0B,CAAC,sBAAsB,CACxD;QAEF,KAAK,0BAA0B,CAAC,mBAAmB;QACnD,KAAK,0BAA0B,CAAC,eAAe;QAC/C,KAAK,0BAA0B,CAAC,iBAAiB;QACjD,KAAK,0BAA0B,CAAC,iBAAiB;QACjD,KAAK,0BAA0B,CAAC,WAAW;AAC1C,YAAA,OAAO,oBAAoB,CAAC,qBAAqB,CAAC,oCAAoC,CAAC,CAAC,UAAU,CACjG,IAAI,GAAG,0BAA0B,CAAC,mBAAmB,CACrD;QAEF,KAAK,0BAA0B,CAAC,cAAc;YAC7C,OAAO,oBAAoB,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AAEzE,QAAA;AACC,YAAA,OAAO,IAAI;;AAEd;;AClTA;;;;AAIG;AACI,MAAM,uBAAuB,GACnC,CAAC,IAAmB,EAAE,OAAyB,KAC/C,CAAC,EAAE,MAAM,EAAoB,KAAI;IAChC,IAAI,CAAC,MAAM,EAAE;AACZ,QAAA,OAAO,EAAE;;AAEV,IAAA,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK;IACvE,OAAO,MAAM,CAAC,GAAG,CAChB,CAAC,KAAK,EAAE,CAAC,MAAa;QACrB,KAAK;QACL,GAAG,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AAC3B,QAAA,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC;AACrB,KAAA,CAAC,CACF;AACF,CAAC;AAEF;;;;AAIG;AACI,MAAM,kBAAkB,GAAG,CAAC,OAAgB,KAClD,OAAO,CAAC,MAAM,CAAC,CAAC,MAAe,EAAE,IAAW,KAAI;AAC/C,IAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACxB,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AACjB,QAAA,OAAO,MAAM;;IAEd,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;;;;AAKtC,IAAA,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE;QACvD,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AAC1B,YAAA,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;;;;;;AAMrD,SAAA,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QAC1D,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;YAC1B,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI;AAChC,YAAA,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;;;;;;AAMxC,SAAA,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;QAC1D,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AAC1B,YAAA,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE;AACxD,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;AAMd,SAAA,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QACxD,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AAC1B,YAAA,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE;AACxD,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AACjB,YAAA,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;;;;;;AAMtC,SAAA,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QACxD,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;AAC5B,YAAA,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;;aAChD,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACjC,YAAA,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE;AACxD,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;;aACX,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACjC,YAAA,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;;;;;;AAMtC,SAAA,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QAC1D,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;YAC3B,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI;;aAC1B;AACN,YAAA,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;;;SAEpC;AACN,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;;AAElB,IAAA,OAAO,MAAM;AACd,CAAC,EAAE,EAAE,CAAC;AAEP;;;AAGG;AACI,MAAM,SAAS,GAAG,CAAC,OAAgB,KAAe;AACxD,IAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;QACzB,OAAO,CAAC,EAAE,CAAC;;AAEZ,IAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;IAC7E,MAAM,KAAK,GAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,IAAI,eAAe,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG;AACpC,IAAA,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE;AAC/B,QAAA,IAAI,QAAQ,CAAC,KAAK,GAAG,eAAe,EAAE;AACrC,YAAA,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AACtB,YAAA,eAAe,GAAG,QAAQ,CAAC,GAAG;;aACxB;AACN,YAAA,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;YACtC,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,GAAG,CAAC;;;AAG3D,IAAA,OAAO,KAAK;AACb,CAAC;AAED;;;AAGG;AACI,MAAM,UAAU,GAAG,CAAC,OAAgB,KAAa;IACvD,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;AAC1F,CAAC;AAED;;;;AAIG;AACI,MAAM,mBAAmB,GAAG,CAClC,cAAgC,EAChC,OAA2B,EAC3B,OAAiC,KACZ;IACrB,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,cAAc,CAAC,eAAe;IACpE,MAAM,SAAS,GAAG,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,GAAG,EAAE;AAC/G,IAAA,MAAM,YAAY,GAAG,OAAO,EAAE;UAC3B,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,cAAc,EAAE,QAAQ,CAAC;UACjE,EAAE;AACL,IAAA,MAAM,cAAc,GAAG,OAAO,EAAE;UAC7B,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,gBAAgB,EAAE,QAAQ,CAAC;UACnE,EAAE;AACL,IAAA,MAAM,eAAe,GAAG,UAAU,CAAC,CAAC,GAAG,cAAc,EAAE,GAAG,YAAY,EAAE,GAAG,SAAS,CAAC,CAAC;IACtF,MAAM,cAAc,GAAG;AACrB,SAAA,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS;SAClD,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC7D,MAAM,iBAAiB,GAAG;AACxB,SAAA,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,YAAY;SACrD,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC7D,MAAM,mBAAmB,GAAG;AAC1B,SAAA,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,cAAc;SACvD,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAE7D,IAAI,eAAe,GAAG,IAAI,CAAC,GAAG,CAC7B,CAAC,EACD,CAAC,cAAc,GAAG,mBAAmB,GAAG,iBAAiB,KAAK,UAAU,GAAG,aAAa,CAAC,CACzF;AACD,IAAA,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,eAAe;AAE9D,IAAA,MAAM,YAAY,GAAG,eAAe,CAAC,cAAc,CAAC;IAEpD,OAAO;QACN,eAAe;AACf,QAAA,SAAS,EAAE,cAAc;AACzB,QAAA,cAAc,EAAE,mBAAmB;AACnC,QAAA,YAAY,EAAE,iBAAiB;AAC/B,QAAA,YAAY,EAAE,aAAa;AAC3B,QAAA,KAAK,EAAE,UAAU;AACjB,QAAA,OAAO,EAAE,YAAY,EAAE,EAAE,IAAI,CAAC;AAC9B,QAAA,UAAU,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;KACpC;AACF,CAAC;AAEM,MAAM,eAAe,GAAG,CAAC,cAAgC,KAAgC;IAC/F,MAAM,OAAO,GAAG,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,0BAA0B,CAAC;IAC7G,IAAI,OAAO,EAAE;QACZ,MAAM,MAAM,GAAiB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;QAC/D,OAAO,MAAM,CAAC,OAAO;;AAEtB,IAAA,OAAO,IAAI;AACZ,CAAC;AAEM,MAAM,4BAA4B,GAAG,CAC3C,KAA4B,EAC5B,mBAAiD,EACjD,UAAmB,KACyB;AAC5C,IAAA,IAAI,CAAC,KAAK,EAAE,WAAW,IAAI,CAAC,mBAAmB;QAC9C,OAAO;AACN,YAAA,YAAY,EAAE,IAAI;AAClB,YAAA,kBAAkB,EAAE,IAAI;SACxB;AACF,IAAA,MAAM,SAAS,GAA0B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC1E,SAAS,CAAC,WAAW,GAAG;QACvB,GAAG,SAAS,CAAC,WAAW;AACxB,QAAA,uBAAuB,EAAE,cAAc,CACtC,UAAU,EACV,mBAAmB,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAC9C,IAAI,IAAI,uBAAuB,CAAC,IAAI,CAAC,KAAK,qBAAqB,CAAC,OAAO,CACvE,EAAE,MAAM,IAAI,CAAC,CACd;AACD,QAAA,iCAAiC,EAAE,cAAc,CAChD,UAAU,EACV,mBAAmB,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAC9C,IAAI,IAAI,uBAAuB,CAAC,IAAI,CAAC,KAAK,qBAAqB,CAAC,iBAAiB,CACjF,EAAE,MAAM,IAAI,CAAC,CACd;AACD,QAAA,yBAAyB,EAAE,cAAc,CACxC,UAAU,EACV,mBAAmB,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAC9C,IAAI,IAAI,uBAAuB,CAAC,IAAI,CAAC,KAAK,qBAAqB,CAAC,SAAS,CACzE,EAAE,MAAM,IAAI,CAAC,CACd;AACD,QAAA,0BAA0B,EAAE,cAAc,CACzC,UAAU,EACV,mBAAmB,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAC9C,IAAI,IAAI,uBAAuB,CAAC,IAAI,CAAC,KAAK,qBAAqB,CAAC,UAAU,CAC1E,EAAE,MAAM,IAAI,CAAC,CACd;KACD;IAED,OAAO;AACN,QAAA,YAAY,EAAE,CAAC,gCAAgC,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,GAAG;QAClF,kBAAkB,EAAE,mBAAmB,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM;KAC5E;AACF,CAAC;AAEM,MAAM,gCAAgC,GAAG,CAAC,gBAA6C,KAAY;AACzG,IAAA,IAAI,CAAC,gBAAgB;AAAE,QAAA,OAAO,CAAC;AAC/B,IAAA,MAAM,SAAS,GACd,gBAAgB,CAAC,kBAAkB;AACnC,QAAA,gBAAgB,CAAC,oBAAoB;AACrC,QAAA,gBAAgB,CAAC,4BAA4B;QAC7C,gBAAgB,CAAC,qBAAqB;AAEvC,IAAA,IAAI,SAAS,GAAG,CAAC,EAAE;AAClB,QAAA,MAAM,uBAAuB,GAC5B,IAAI,CAAC,KAAK,CACT,CAAC,CAAC,gBAAgB,CAAC,uBAAuB,GAAG,gBAAgB,CAAC,kBAAkB;AAC/E,YAAA,gBAAgB,CAAC,yBAAyB,GAAG,gBAAgB,CAAC,oBAAoB;AAClF,YAAA,gBAAgB,CAAC,iCAAiC,GAAG,gBAAgB,CAAC,4BAA4B;AAClG,YAAA,gBAAgB,CAAC,0BAA0B,GAAG,gBAAgB,CAAC,qBAAqB;AACpF,YAAA,SAAS;AACT,YAAA,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAChB,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACpB,QAAA,OAAO,uBAAuB;;IAE/B,OAAO,CAAC,CAAC;AACV,CAAC;AAEM,MAAM,cAAc,GAAG,CAAC,SAAiB,EAAE,uBAA+B,KAAY;AAC5F,IAAA,IAAI,CAAC,SAAS;AAAE,QAAA,OAAO,CAAC;AACxB,IAAA,MAAM,KAAK,GAAG,CAAC,CAAC,SAAS,GAAG,uBAAuB,IAAI,SAAS,KAAK,CAAC,GAAG,GAAG;AAC5E,IAAA,OAAO,KAAK;AACb,CAAC;;ACtRK,SAAU,cAAc,CAAC,cAA2B,GAAA,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAA;IAC9E,OAAO,CAAI,MAAqB,KAC/B,MAAM,CAAC,IAAI,CACV,SAAS,CAAC,MAAM,IACf,MAAM,CAAC,IAAI,CACV,SAAS,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;AAC1B,QAAA,IAAI,KAAK,EAAE,MAAM,IAAI,KAAK,EAAE,MAAM,GAAG,GAAG,IAAI,KAAK,GAAG,cAAc,CAAC,MAAM,EAAE;AAC1E,YAAA,OAAO,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;;aAC7B;AACN,YAAA,OAAO,UAAU,CAAC,KAAK,CAAC;;AAE1B,KAAC,CAAC,CACF,CACD,CACD;AACH;;AClBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCG;AACU,MAAA,cAAc,GAA8B;IACxD,CAAC,EAAE,SAAS,CAAA,CAA2E,yEAAA,CAAA;IACvF,CAAC,EAAE,SAAS,CAAA,CAA4B,0BAAA,CAAA;IACxC,CAAC,EAAE,SAAS,CAAA,CAA6D,2DAAA,CAAA;IACzE,CAAC,EAAE,SAAS,CAAA,CAAkD,gDAAA,CAAA;IAC9D,CAAC,EAAE,SAAS,CAAA,CAAuC,qCAAA,CAAA;IACnD,CAAC,EAAE,SAAS,CAAA,CAA6G,2GAAA,CAAA;IACzH,CAAC,EAAE,SAAS,CAAA,CAAoC,kCAAA,CAAA;IAChD,CAAC,EAAE,SAAS,CAAA,CAAuC,qCAAA,CAAA;IACnD,CAAC,EAAE,SAAS,CAAA,CAAkD,gDAAA,CAAA;IAC9D,EAAE,EAAE,SAAS,CAAA,CAAmD,iDAAA,CAAA;IAChE,EAAE,EAAE,SAAS,CAAA,CAAyF,uFAAA,CAAA;IACtG,EAAE,EAAE,SAAS,CAAA,CAAwD,sDAAA,CAAA;IACrE,EAAE,EAAE,SAAS,CAAA,CAAgC,8BAAA,CAAA;IAC7C,EAAE,EAAE,SAAS,CAAA,CAA+B,6BAAA,CAAA;IAC5C,EAAE,EAAE,SAAS,CAAA,CAAqF,mFAAA,CAAA;IAClG,EAAE,EAAE,SAAS,CAAA,CAAmD,iDAAA,CAAA;IAChE,EAAE,EAAE,SAAS,CAAA,CAA8C,4CAAA,CAAA;IAC3D,EAAE,EAAE,SAAS,CAAA,CAAoC,kCAAA,CAAA;IACjD,EAAE,EAAE,SAAS,CAAA,CAAgC,8BAAA,CAAA;IAC7C,EAAE,EAAE,SAAS,CAAA,CAAe,aAAA,CAAA;IAC5B,EAAE,EAAE,SAAS,CAAA,CAAqB,mBAAA,CAAA;IAClC,EAAE,EAAE,SAAS,CAAA,CAAuE,qEAAA,CAAA;IACpF,EAAE,EAAE,SAAS,CAAA,CAAqB,mBAAA,CAAA;IAClC,EAAE,EAAE,SAAS,CAAA,CAAiD,+CAAA,CAAA;;;ACzDxD,MAAM,iBAAiB,GAAG;AAChC,IAAA,SAAS,EAAE,WAAW;AACtB,IAAA,YAAY,EAAE,cAAc;AAC5B,IAAA,YAAY,EAAE,cAAc;AAC5B,IAAA,eAAe,EAAE,iBAAiB;CAClC;;MCCY,mBAAmB,CAAA;AACvB,IAAA,wBAAwB,GAAG,IAAI,OAAO,EAA+B;AAC7E;;AAEG;AACH,IAAA,IAAW,uBAAuB,GAAA;QACjC,OAAO,IAAI,CAAC,wBAAwB;;AAGrC,IAAA,WAAA,GAAA;IAEO,eAAe,CAAC,KAAwB,EAAE,UAAkB,EAAA;AAClE,QAAA,MAAM,SAAS,GAAgC;YAC9C,UAAU,EAAE,KAAK,CAAC,MAAM;YACxB,OAAO,EAAE,KAAK,CAAC,OAAO;AACtB,YAAA,QAAQ,EAAE,KAAK,CAAC,GAAG,IAAI,EAAE;AACzB,YAAA,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,YAAY,EAAE,KAAK,CAAC,KAAK;SACzB;;AAGD,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC;;wGAvBjC,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAnB,mBAAmB,EAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;;MCkCY,iBAAiB,CAAA;AAqQpB,IAAA,KAAA;AACA,IAAA,QAAA;AACA,IAAA,gBAAA;AACA,IAAA,YAAA;AAvQF,IAAA,eAAe,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAC5D,IAAA,IAAW,cAAc,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK;;;AAK1B,IAAA,sBAAsB,GAAG,IAAI,eAAe,CAA4C,SAAS,CAAC;AAC1G;;AAEG;AACH,IAAA,IAAW,qBAAqB,GAAA;QAC/B,OAAO,IAAI,CAAC,sBAAsB;;AAEnC;;AAEG;AACH,IAAA,IAAW,oBAAoB,GAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,KAAK;;;;AAOjC,IAAA,oBAAoB,GAAG,IAAI,eAAe,CAAiC,SAAS,CAAC;IACrF,sBAAsB,GAAuB,EAAE;AACvD;;AAEG;AACH,IAAA,IAAW,mBAAmB,GAAA;QAC7B,OAAO,IAAI,CAAC,oBAAoB;;AAEjC;;AAEG;AACH,IAAA,IAAW,kBAAkB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK;;;;AAOhC,IAAA,uBAAuB;AACtB,IAAA,qBAAqB,GAAG,IAAI,eAAe,CAA+B,SAAS,CAAC;AAC5F;;AAEG;AACH,IAAA,IAAW,oBAAoB,GAAA;QAC9B,OAAO,IAAI,CAAC,qBAAqB;;AAElC;;AAEG;AACH,IAAA,IAAW,mBAAmB,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,KAAK;;;;AAOhC,IAAA,gBAAgB,GAAG,IAAI,eAAe,CAA0B,SAAS,CAAC;AAClF;;AAEG;AACH,IAAA,IAAW,eAAe,GAAA;QACzB,OAAO,IAAI,CAAC,gBAAgB;;AAE7B;;AAEG;AACH,IAAA,IAAW,cAAc,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK;;;;AAO3B,IAAA,iBAAiB,GAAG,IAAI,eAAe,CAA+B,SAAS,CAAC;AACxF;;AAEG;AACH,IAAA,IAAW,gBAAgB,GAAA;QAC1B,OAAO,IAAI,CAAC,iBAAiB;;AAE9B;;AAEG;AACH,IAAA,IAAW,eAAe,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK;;;;AAO5B,IAAA,qBAAqB,GAAG,IAAI,eAAe,CAAoC,SAAS,CAAC;AACjG;;AAEG;AACH,IAAA,IAAW,oBAAoB,GAAA;QAC9B,OAAO,IAAI,CAAC,qBAAqB;;AAElC;;AAEG;AACH,IAAA,IAAW,mBAAmB,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,KAAK;;;;AAOhC,IAAA,eAAe,GAAG,IAAI,eAAe,CAAsC,SAAS,CAAC;AAC7F;;AAEG;AACH,IAAA,IAAW,cAAc,GAAA;QACxB,OAAO,IAAI,CAAC,eAAe;;AAE5B;;AAEG;AACH,IAAA,IAAW,aAAa,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK;;;;AAO1B,IAAA,oBAAoB,GAAG,IAAI,eAAe,CAAuB,SAAS,CAAC;AACnF;;AAEG;AACH,IAAA,IAAW,mBAAmB,GAAA;QAC7B,OAAO,IAAI,CAAC,oBAAoB;;AAEjC;;AAEG;AACH,IAAA,IAAW,kBAAkB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK;;;;AAO/B,IAAA,4BAA4B,GAAG,IAAI,eAAe,CAAuB,SAAS,CAAC;AAC3F;;AAEG;AACH,IAAA,IAAW,2BAA2B,GAAA;QACrC,OAAO,IAAI,CAAC,4BAA4B;;AAEzC;;AAEG;AACH,IAAA,IAAW,0BAA0B,GAAA;AACpC,QAAA,OAAO,IAAI,CAAC,4BAA4B,CAAC,KAAK;;;;AAOvC,IAAA,oBAAoB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAClE;;AAEG;AACH,IAAA,IAAW,mBAAmB,GAAA;QAC7B,OAAO,IAAI,CAAC,oBAAoB;;AAEjC;;AAEG;AACH,IAAA,IAAW,kBAAkB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK;;;AAKvC,IAAA,IAAW,UAAU,GAAA;QACpB,IAAI,cAAc,GAAG,CAAC,EACrB,iBAAiB,GAAG,CAAC,EACrB,gBAAgB,GAAG,CAAC;AACrB,QAAA,IAAI,CAAC,kBAAkB,EAAE,OAAO,CAAC,MAAM,IAAG;AACzC,YAAA,IAAI,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,SAAS,GAAG,CAAC;AAAE,gBAAA,cAAc,EAAE;AACpG,YAAA,IAAI,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,YAAY,GAAG,CAAC;AAAE,gBAAA,iBAAiB,EAAE;AAC7G,YAAA,IAAI,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,cAAc,GAAG,CAAC;AAAE,gBAAA,gBAAgB,EAAE;AACjH,SAAC,CAAC;AAEF,QAAA,IAAI,cAAc,GAAG,CAAC,EACrB,gBAAgB,GAAG,CAAC;AACrB,QAAA,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAA8B,KAAI;YACrF,IAAI,MAAM,CAAC,MAAM;AAAE,gBAAA,cAAc,EAAE;;AAC9B,gBAAA,gBAAgB,EAAE;AACxB,SAAC,CAAC;AAEF,QAAA,QACC,CAAC,cAAc,GAAG,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,aAAa,KAAK,KAAK;AAC1E,aAAC,iBAAiB,GAAG,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,gBAAgB,KAAK,KAAK,CAAC;AACjF,aAAC,gBAAgB,GAAG,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,KAAK,KAAK,CAAC;AAC3E,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,UAAU,KAAK,KAAK;AAChD,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,yBAAyB,KAAK,KAAK;aAC9D,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM;gBACjD,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,mBAAmB,KAAK,KAAK,CAAC;aAC1D,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM;AACjD,iBAAC,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,iBAAiB,KAAK,KAAK,IAAI,gBAAgB,GAAG,CAAC;AAChF,qBAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,eAAe,KAAK,KAAK,IAAI,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC;AACjF,aAAC,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,gBAAgB,KAAK,KAAK,CAAC;aACzG,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAC,YAAY,EAAE,MAAM;gBACxD,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,kBAAkB,EAAE,MAAM,CAAC;AAC1D,aAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,IAAI,IAAI,CAAC,oBAAoB,GAAG,GAAG,CAAC;aAC1F,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,GAAG,CAAC,CAAC;aACzG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM;gBACnD,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,GAAG,CAAC,CAAC;AACzD,YAAA,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,eAAe;AAC7C,YAAA,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,SAAS;YACvC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,yBAAyB,IAAI,KAAK;;AAIhE,IAAA,IAAW,oBAAoB,GAAA;AAC9B,QAAA,IAAI,eAAe,GAAG;AACrB,YAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;AAC5D,YAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;AACzD,YAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;AAC5D,YAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;SAChE;QAED,OAAO,eAAe,CAAC,MAAM;;AAG9B,IAAA,IAAW,4BAA4B,GAAA;AACtC,QAAA,IAAI,eAAe,GAAG;YACrB,IAAI,IAAI,CAAC,uBAAuB,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;YACzD,IAAI,IAAI,CAAC,uBAAuB,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;YACtD,IAAI,IAAI,CAAC,uBAAuB,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;YACzD,IAAI,IAAI,CAAC,uBAAuB,EAAE,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;SAC7D;QAED,OAAO,eAAe,CAAC,MAAM;;AAGtB,IAAA,YAAY,GAAG,IAAI,eAAe,CAA4B,EAAE,CAAC;;AAEzE,IAAA,IAAW,WAAW,GAAA;QACrB,OAAO,IAAI,CAAC,YAAY;;AAEzB,IAAA,IAAW,UAAU,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK;;AAG/B,IAAA,WAAA,CACS,KAAiB,EACjB,QAA2B,EAC3B,gBAAqC,EACrC,YAAyB,EAAA;QAHzB,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAY,CAAA,YAAA,GAAZ,YAAY;AAEpB,QAAA,aAAa,CAAC;AACb,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAChD,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACrD,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACrD,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACtD,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAClD;AACC,aAAA,IAAI,CACJ,YAAY,CAAC,IAAI,CAAC,EAClB,MAAM,CACL,CAAC,CAAC,OAAO,EAAE,kBAAkB,IAAI,mBAAmB,CAAC,KACpD,OAAO,KAAK,SAAS,IAAI,kBAAkB,KAAK,SAAS,IAAI,mBAAmB,KAAK,SAAS,CAC/F;AAED,aAAA,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,kBAAkB,IAAI,mBAAmB,EAAE,eAAe,CAAC,KAAI;YACpF,IACC,CAAC,IAAI,CAAC,mBAAmB;gBACzB,IAAI,CAAC,mBAAmB,KAAK,SAAS;gBACtC,CAAC,IAAI,CAAC,kBAAkB;AACxB,gBAAA,CAAC,IAAI,CAAC,kBAAkB,KAAK,SAAS;AACtC,gBAAA,CAAC,OAAO;AACR,gBAAA,CAAC,kBAAkB;AACnB,gBAAA,CAAC,mBAAmB;AACpB,gBAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,KAAK,GAAG;AACrC,iBAAC,IAAI,CAAC,oBAAoB,IAAI,GAAG;AAChC,oBAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,IAAI,IAAI,CAAC,oBAAoB;oBAC3D,IAAI,CAAC,cAAc,CAAC;iBACpB,IAAI,CAAC,wBAAwB,EAAE,IAAI,eAAe,KAAK,SAAS,CAAC;gBAElE;YAED,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,kBAAkB,CAAC;AACvE,YAAA,IAAI,mBAAgD;YACpD,IAAI,eAAe,EAAE;gBACpB,mBAAmB,GAAG,IAAI,CAAC,iBAAiB,CAC3C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC,EACxD,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,mBAAmB,CACxB;;AAGF,YAAA,MAAM,KAAK,GAAqB,IAAI,CAAC,eAAe,CACnD,eAAe,EACf,IAAI,CAAC,mBAAmB,EACxB,mBAAmB,EACnB,eAAe,CACf;AACD,YAAA,MAAM,qBAAqB,GAAG;AAC7B,gBAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;AAC5D,gBAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;AACzD,gBAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;AAC5D,gBAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;AAChE;AACC,iBAAA,MAAM,CACN,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;iBAE5G,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,CAAC;;YAG1B,IACC,CAAC,IAAI,CAAC,cAAc;iBACnB,IAAI,CAAC,cAAc;oBACnB,IAAI,CAAC,oBAAoB,GAAG,GAAG;AAC/B,oBAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,IAAI,IAAI,CAAC,oBAAoB;oBAC3D,CAAC,OAAO,CAAC,iBAAiB,CAAC;gBAE5B,IAAI,CAAC,wBAAwB,EAAE;AAEhC,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;gBAC/B,GAAG,IAAI,CAAC,mBAAmB;AAC3B,gBAAA,OAAO,EAAE;AACR,oBAAA,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO;AACnC,oBAAA,KAAK,EAAE;wBACN,cAAc,EAAE,KAAK,CAAC,SAAS;wBAC/B,iBAAiB,EAAE,KAAK,CAAC,YAAY;wBACrC,mBAAmB,EAAE,KAAK,CAAC,cAAc;AACzC,wBAAA,eAAe,EAAE,IAAI,CAAC,mBAAmB,EAAE,GAAG,KAAK,CAAC,eAAe,IAAI,CAAC,GAAG,IAAI;AAC/E,wBAAA,4BAA4B,EAAE,IAAI,CAAC,wBAAwB,EAAE,GAAG,KAAK,CAAC,4BAA4B,GAAG,IAAI;AACzG,wBAAA,2BAA2B,EAAE,IAAI,CAAC,wBAAwB,EAAE,GAAG,KAAK,CAAC,2BAA2B,GAAG,IAAI;AACvG,qBAAA;AACD,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACR,eAAe,EAAE,IAAI,CAAC,UAAU,IAAI,kBAAkB,EAAE,MAAM,GAAG,CAAC;AAClE,oBAAA,OAAO,EAAE;AACR,wBAAA,MAAM,EAAE,OAAO,EAAE,UAAU,IAAI,IAAI;AACnC,wBAAA,iBAAiB,EAAE,OAAO,EAAE,yBAAyB,IAAI,IAAI;AAC7D,wBAAA,SAAS,EAAE,OAAO,EAAE,iBAAiB,IAAI,IAAI;AAC7C,qBAAA;oBACD,YAAY,EAAE,OAAO,EAAE,YAAY;AACnC,oBAAA,SAAS,EAAE;AACV,wBAAA,aAAa,EAAE,OAAO,EAAE,aAAa,IAAI,IAAI;AAC7C,wBAAA,YAAY,EAAE,OAAO,EAAE,gBAAgB,IAAI,IAAI;AAC/C,wBAAA,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI,IAAI;AACzC,qBAAA;AACD,oBAAA,eAAe,EAAE;AAChB,wBAAA,eAAe,EAAE;AAChB,4BAAA,kBAAkB,EAAE,CAAC,CAAC,OAAO,EAAE,eAAe;AAC9C,4BAAA,kBAAkB,EAAE,OAAO,EAAE,yBAAyB,IAAI,IAAI;4BAC9D,SAAS,EAAE,OAAO,EAAE,eAAe;AACnC,yBAAA;AACD,wBAAA,SAAS,EAAE;AACV,4BAAA,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,SAAS;4BACtC,cAAc,EAAE,OAAO,EAAE,SAAS;AAClC,yBAAA;AACD,qBAAA;AACD,oBAAA,UAAU,EAAE;AACX,wBAAA,KAAK,EAAE,OAAO,EAAE,gBAAgB,IAAI,IAAI;AACxC,wBAAA,gBAAgB,EAAE,OAAO,EAAE,eAAe,IAAI,OAAO,EAAE,iBAAiB;AACxE,wBAAA,WAAW,EAAE,OAAO,EAAE,eAAe,IAAI,IAAI;AAC7C,wBAAA,aAAa,EAAE,OAAO,EAAE,iBAAiB,IAAI,IAAI;AACjD,wBAAA,QAAQ,EAAE,OAAO,EAAE,mBAAmB,IAAI,IAAI;AAC9C,wBAAA,YAAY,EAAE,OAAO,EAAE,kBAAkB,IAAI,EAAE;AAC/C,wBAAA,aAAa,EAAE,OAAO,EAAE,iBAAiB,IAAI,IAAI;AACjD,qBAAA;oBACD,kBAAkB,EAAE,kBAAkB,IAAI,EAAE;oBAC5C,iBAAiB,EAAE,qBAAqB,IAAI,EAAE;AAC9C,oBAAA,eAAe,EAAE;AAChB,wBAAA,gBAAgB,EAAE,OAAO,CAAC,eAAe,CAAC,gBAAgB,IAAI,EAAE;AAChE,wBAAA,mBAAmB,EAAE,mBAAmB;AACxC,qBAAA;AACD,oBAAA,eAAe,EAAE,OAAO,EAAE,eAAe,IAAI,EAAE;AAC/C,iBAAA;AACD,aAAA,CAAC;AACH,SAAC,CAAC;;AAGJ;;;;;;;;AAQG;AACI,IAAA,cAAc,CAAC,eAA8C,EAAA;AACnE,QAAA,IAAI,CAAC,eAAe;YAAE;;AAGtB,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,eAAe,CAAC;AAEjD,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,GAAG,EAAE;AACnC,YAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;;aACxB;AACN,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAe,eAAe,CAAC,QAAQ,CAAC,GAAG,EAAE;gBAClF,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,QAAQ,CAAC;AACtD,aAAA,CAAC;YACF,eAAe,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAC5E,QAAQ,IAAG;gBACV,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW,CAAC,KAAK,EAAE;AAC1C,oBAAA,IAAI,CAAC,4BAA4B,CAAC,QAAQ,EAAE,eAAe,CAAC;oBAC5D;;AAGD,gBAAA,IAAI,QAAQ,EAAE,QAAQ,IAAI,GAAG;AAAE,oBAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;qBACxD;oBACJ,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;oBAC/C,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,IAAI,CACrC,CAAC,IAAG;wBACH,IAAI,CAAC,SAAS,EAAE;qBAChB,EACD,KAAK,IAAG;wBACP,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,KAA0B,EAAE,gBAAgB,CAAC;AACpF,qBAAC,CACD;;AAEH,aAAC,EACD,CAAC,KAAwB,KAAI;;gBAE5B,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,KAAK,EAAE,gBAAgB,CAAC;AAC/D,aAAC,CACD;;;AAGI,IAAA,QAAQ,CAAC,eAA8C,EAAA;;QAE7D,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;AAEjC,QAAA,IAAI,CAAC;AACH,aAAA,GAAG,CAAc,eAAe,CAAC,cAAc,CAAC,GAAG,EAAE;YACrD,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,cAAc,CAAC;SAC5D;aACA,IAAI,CAAC,cAAc,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC;aACzC,SAAS,CACT,iBAAiB,IAAG;AACnB,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC;AAE7C,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU;AAC5E,gBAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC;AAClC,oBAAA,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc;AAC/B,oBAAA,UAAU,EAAE,KAAK;AACjB,iBAAA,CAAC;AACJ,SAAC,EACD,CAAC,KAAwB,KAAI;YAC5B,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,KAAK,EAAE,2BAA2B,CAAC;AAC1E,SAAC,CACD;AAEF,QAAA,IAAI,CAAC;AACH,aAAA,GAAG,CAAmB,eAAe,CAAC,eAAe,CAAC,GAAG,EAAE;YAC3D,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,eAAe,CAAC;SAC7D;aACA,IAAI,CAAC,cAAc,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC;aACzC,SAAS,CACT,kBAAkB,IAAG;AACpB,YAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;AAC7E,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,kBAAkB,CAAC;;AAEnD,YAAA,IAAI,eAAe,CAAC,eAAe,IAAI,eAAe,CAAC,eAAe,CAAC,GAAG,IAAI,IAAI,CAAC,wBAAwB,EAAE;AAC5G,gBAAA,IAAI,CAAC;AACH,qBAAA,GAAG,CAAmB,eAAe,CAAC,eAAe,EAAE,GAAG,EAAE;oBAC5D,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,eAAe,CAAC;iBAC7D;qBACA,IAAI,CAAC,cAAc,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC;qBACzC,SAAS,CACT,yBAAyB,IAAG;AAC3B,oBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,yBAAyB,CAAC;AACtD,oBAAA,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,CAAC;AAChD,iBAAC,EACD,CAAC,KAAwB,KAAI;oBAC5B,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,KAAK,EAAE,4BAA4B,CAAC;AAC3E,iBAAC,CACD;;AACE,gBAAA,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,CAAC;AACrD,SAAC,EACD,CAAC,KAAwB,KAAI;YAC5B,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,KAAK,EAAE,4BAA4B,CAAC;AAC1E,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;AACjC,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;AAC9B,gBAAA,OAAO,EAAE;AACR,oBAAA,KAAK,EAAE,EAAE;AACT,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,KAAK,EAAE;AACN,wBAAA,eAAe,EAAE,CAAC;AAClB,wBAAA,cAAc,EAAE,CAAC;AACjB,wBAAA,iBAAiB,EAAE,CAAC;AACpB,wBAAA,mBAAmB,EAAE,CAAC;AACtB,qBAAA;AACD,iBAAA;AACD,gBAAA,eAAe,EAAE;AAChB,oBAAA,OAAO,EAAE,CAAC;AACV,oBAAA,MAAM,EAAE,EAAE;AACV,oBAAA,UAAU,EAAE,CAAC;AACb,oBAAA,aAAa,EAAE,CAAC;AAChB,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE;AACR,wBAAA,WAAW,EAAE,KAAK;AAClB,wBAAA,mBAAmB,EAAE,KAAK;AAC1B,wBAAA,cAAc,EAAE,KAAK;AACrB,wBAAA,SAAS,EAAE,KAAK;AAChB,wBAAA,eAAe,EAAE,KAAK;AACtB,qBAAA;AACD,iBAAA;gBACD,MAAM,EAAE,WAAW,CAAC,KAAK;AACzB,aAAA,CAAC;AACH,SAAC,CACD;;AAGI,IAAA,MAAM,SAAS,GAAA;QACrB,MAAM,4BAA4B,GAAG,KAAK;QAC1C,IAAI,WAAW,GAAG,EAAE;;QAGpB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AACvC,QAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC;AAClC,YAAA,QAAQ,EAAE,aAAa;AACvB,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc;AAC/B,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG/B,QAAA,IAAI,kBAAkB,GAAG,IAAI,OAAO,EAAE;QACtC,QAAQ,CAAC,IAAI;aACX,IAAI,CACJ,SAAS,CAAC,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC,EAC9C,YAAY,CAAC,IAAI,CAAC,EAClB,SAAS,CAAC,kBAAkB,CAAC;aAE7B,SAAS,CACT,QAAQ,IAAG;YACV,IAAI,4BAA4B,EAAE;AACjC,gBAAA,IAAI,WAAW,GAAG,EAAE,EAAE;AACrB,oBAAA,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC;AAC7C,oBAAA,QAAQ,CAAC,QAAQ,GAAG,WAAW;;qBACzB;oBACN,WAAW,GAAG,GAAG;AACjB,oBAAA,QAAQ,CAAC,QAAQ,GAAG,GAAG;;;AAIzB,YAAA,IAAI,QAAQ,CAAC,QAAQ,IAAI,CAAC,IAAI,QAAQ,CAAC,QAAQ,IAAI,GAAG,EAAE;gBACvD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;;AAGhD,YAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ;iBAC9B,KAAK,CAAC,KAAK,IAAG;gBACd,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,KAA0B,EAAE,oBAAoB,CAAC;AACvF,gBAAA,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC7B,kBAAkB,CAAC,QAAQ,EAAE;AAC9B,aAAC;iBACA,OAAO,CAAC,MAAK;AACb,gBAAA,IAAI,QAAQ,CAAC,QAAQ,KAAK,GAAG,EAAE;AAC9B,oBAAA,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC7B,kBAAkB,CAAC,QAAQ,EAAE;;AAE/B,aAAC,CAAC;AACJ,SAAC,EACD,CAAC,KAAwB,KAAI;;YAE5B,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,KAAK,EAAE,uBAAuB,CAAC;AACrE,YAAA,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC7B,kBAAkB,CAAC,QAAQ,EAAE;AAC9B,SAAC,CACD;;IAGI,wBAAwB,CAAC,YAAqB,KAAK,EAAA;QACzD,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE;AAE1D,QAAA,IAAI,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAC3G,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;YACrC;;AAGD,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;AAEpC,QAAA,IAAI,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,kBAAkB,CAAC;AACzF,QAAA,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;;QAG9F,MAAM,SAAS,GAAG,EAAE;QACpB,MAAM,SAAS,GAAG,EAAE;AACpB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE;AACtD,YAAA,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;;;AAInD,QAAA,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM;AACrC,QAAA,IAAI,iBAAiB,GAAG,CAAC,CAAC;AAE1B,QAAA,IAAI,YAAY,KAAK,CAAC,EAAE;AACvB,YAAA,IAAI,IAAI,CAAC,oBAAoB,KAAK,CAAC,IAAI,SAAS;AAAE,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;AACpF,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGtC,QAAA,IAAI,CAAC,sBAAsB,GAAG,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;;AAE1E,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC;QAC3C;AACE,aAAA,IAAI,CACJ,SAAS,CAAC,GAAG,IAAG;YACf,iBAAiB,EAAE,CAAC;AACpB,YAAA,OAAO,QAAQ,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC;AACjE,SAAC,CAAC,EACF,YAAY,CAAC,IAAI,CAAC;AAElB,aAAA,SAAS,CAAC,CAAC,OAA2B,KAAI;YAC1C,IAAI,OAAO,EAAE;;AAEZ,gBAAA,IAAI,CAAC,sBAAsB,GAAG,CAAC,GAAG,IAAI,CAAC,sBAAsB,EAAE,GAAG,OAAO,CAAuB;;AAGhG,gBAAA,IAAI,iBAAiB,KAAK,YAAY,EAAE;oBACvC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC;AAC3D,oBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;;;AAGxC,SAAC,CAAC;;AAGG,IAAA,MAAM,oBAAoB,CAAC,QAAgB,EAAE,aAAsB,KAAK,EAAA;AAC9E,QAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,KAAK,EAAE,MAAM;YAAE;AAEjD,QAAA,IAAI,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC;AAE9F,QAAA,IAAI;AACH,YAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC;iBAC1B,GAAG,CAAwB,UAAU,EAAE;AACvC,gBAAA,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,sBAAsB,EAAE,KAAK,CAAC,MAAM,CAAC;aACvE;iBACA,IAAI,CAAC,cAAc,EAAE;AACrB,iBAAA,SAAS,EAAE;YAEb,OAAO;AACN,gBAAA,EAAE,EAAE,QAAQ;AACZ,gBAAA,MAAM,EAAE,QAAQ;aACI;;QACpB,OAAO,KAAK,EAAE;;YAEf,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,KAA0B,EAAE,sBAAsB,CAAC;AACzF,YAAA,IAAI,UAAU;AAAE,gBAAA,MAAM,KAAK;;;IAItB,aAAa,CAAC,QAAkC,EAAE,kBAA6B,EAAA;AACrF,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,QAAQ,IAAI,CAAC,kBAAkB;AAAE,YAAA,OAAO,EAAE;AAExG,QAAA,IAAI,eAAe,GAAG;AACrB,YAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;AAC5D,YAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;AACzD,YAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;AAC5D,YAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;SAChE;AAED,QAAA,IAAI,kBAAkB,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,eAAe,EAAE,kBAAkB,CAAC;;AAGnG,QAAA,IAAI,uBAAuB,GAAG,IAAI,CAAC;aACjC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,SAAS;aAC1B,GAAG,CAAC,CAAC,IAAG;YACR,OAAO;AACN,gBAAA,GAAG,CAAC;AACJ,gBAAA,MAAM,EAAE;oBACP,GAAG,CAAC,CAAC,MAAM;AACX,oBAAA,UAAU,EAAE;AACX,wBAAA,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS;AAC1C,wBAAA,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY;AAChD,wBAAA,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,cAAc;AACpD,qBAAA;AACD,iBAAA;aACmB;AACtB,SAAC,CAAC;AACH,QAAA,uBAAuB,CAAC,OAAO,CAAC,CAAC,IAAG;AACnC,YAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,SAAS,IAAI,SAAS;gBAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC;AAC7G,YAAA,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,YAAY,IAAI,SAAS;gBAC/E,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,GAAG,CAAC;AACrC,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,cAAc,IAAI,SAAS;gBAC5E,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,cAAc,GAAG,CAAC;AACxC,SAAC,CAAC;QAEF,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,CAAC,EAAE,IAChD,uBAAuB,CAAC,IAAI,CAC3B,EAAE,IACD,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE;;AAEZ,YAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAC1B,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,cAAc,IAAI,CAAC;iBAC1C,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,IAAI,CAAC,CAAC;iBACzC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,IAAI,CAAC,CAAC;iBACtC,CAAC,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAC,UAAU,IAAI,CAAC;AAC1D,qBAAC,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,EACjE,OAAO,CACP,KAAK,IAAI;;aAEV,QAAQ,CAAC,aAAa;AACtB,gBAAA,QAAQ,CAAC,WAAW;AACpB,gBAAA,QAAQ,CAAC,gBAAgB;AACzB,gBAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAC1B,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,cAAc,IAAI,CAAC;qBAC1C,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,IAAI,CAAC,CAAC;qBACzC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,IAAI,CAAC,CAAC;qBACtC,CAAC,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAC,UAAU,IAAI,CAAC;AAC1D,yBAAC,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,EACjE,OAAO,CACP,KAAK,IAAI,CAAC,CACb,CACD;AAED,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9F,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC;;IAGpC,iBAAiB,CAAC,KAAyB,EAAE,QAAgB,EAAA;AACpE,QAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE;AACtB,QAAA,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,GAAQ,KAAI;AAChC,YAAA,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AACrB,gBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACf,gBAAA,OAAO,IAAI;;AAEZ,YAAA,OAAO,KAAK;AACb,SAAC,CAAC;;IAGI,sBAAsB,CAAC,QAAiC,EAAE,kBAA4B,EAAA;QAC5F,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,QAAQ,IAAI,CAAC,kBAAkB;AAAE,YAAA,OAAO,EAAE;AAE5E,QAAA,IAAI,eAAe,GAAG;AACrB,YAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;AAC5D,YAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;AACzD,YAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;AAC5D,YAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;SAChE;AAED,QAAA,IAAI,kBAAkB,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,eAAe,EAAE,kBAAkB,CAAC;AAEnG,QAAA,OAAO,kBAAkB;;IAGnB,cAAc,GAAA;AACpB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB;QAC/C,IAAI,cAAc,KAAK,SAAS;AAAE,YAAA,OAAO,IAAI;AAC7C,QAAA,IACC,CAAC,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,0BAA0B,CAAC,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,EACjH;AACD,YAAA,OAAO,IAAI;;AAEZ,QAAA,OAAO,KAAK;;IAGN,mBAAmB,GAAA;AACzB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB;QAC/C,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,GAAG;AAAE,YAAA,OAAO,IAAI;AACrD,QAAA,IAAI,CAAC,cAAc;AAAE,YAAA,OAAO,KAAK;QACjC,IAAI,cAAc,EAAE;YACnB,IAAI,cAAc,EAAE,eAAe,EAAE,OAAO,EAAE,mBAAmB,IAAI,IAAI;AACxE,gBAAA,OAAO,cAAc,EAAE,eAAe,EAAE,OAAO,EAAE,mBAAmB;;AAEtE,QAAA,OAAO,IAAI;;IAGL,oBAAoB,GAAA;AAC1B,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB;QAC/C,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,GAAG;AAAE,YAAA,OAAO,IAAI;QACrD,IAAI,cAAc,EAAE;AACnB,YAAA,IAAI,cAAc,EAAE,eAAe,EAAE,OAAO,EAAE,WAAW;AAAE,gBAAA,OAAO,IAAI;AACtE,YAAA,QACC,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM;gBAC7C,cAAc,EAAE,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,0BAA0B,CAAC,CAAC,MAAM;AAC5G,oBAAA,CAAC;;AAGJ,QAAA,OAAO,KAAK;;IAGN,sBAAsB,GAAA;AAC5B,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB;QAC/C,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,GAAG;AAAE,YAAA,OAAO,IAAI;AACrD,QAAA,IAAI,cAAc,EAAE,eAAe,EAAE,OAAO,EAAE,aAAa;AAAE,YAAA,OAAO,IAAI;AACxE,QAAA,OAAO,KAAK;;IAGN,wBAAwB,GAAA;AAC9B,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB;QAC/C,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,GAAG;AAAE,YAAA,OAAO,IAAI;QACrD,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,eAAe;AAAE,YAAA,OAAO,KAAK;AAChF,QAAA,IACC,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM;AAC7C,YAAA,cAAc,EAAE,aAAa,EAAE,MAAM,CAAC,MAAM,CAC3C,KAAK,IACJ,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,mCAAmC,IAAI,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,uBAAuB,CACzG,CAAC,MAAM,IAAI,CAAC;AAEb,YAAA,OAAO,KAAK;QACb,IAAI,cAAc,EAAE,eAAe,EAAE,OAAO,EAAE,eAAe,IAAI,IAAI;AACpE,YAAA,OAAO,cAAc,EAAE,eAAe,EAAE,OAAO,EAAE,eAAe;AACjE,QAAA,OAAO,KAAK;;IAGN,UAAU,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;AAChC,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB;YAC/C,IAAI,cAAc,KAAK,SAAS;AAAE,gBAAA,OAAO,IAAI;YAC7C,MAAM,OAAO,GAAG,cAAc,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CACxD,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,0BAA0B,CACxD;YACD,IAAI,OAAO,EAAE;gBACZ,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAiB;AACjE,gBAAA,OAAO,MAAM,CAAC,OAAO,CAAC,EAAE;;AAEzB,YAAA,OAAO,CAAC;;AAET,QAAA,OAAO,IAAI;;IAGL,uBAAuB,GAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE,EAAE;AACpC,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB;AAC/C,YAAA,IAAI,cAAc,KAAK,SAAS,IAAI,CAAC,cAAc,CAAC,eAAe;AAAE,gBAAA,OAAO,IAAI;AAChF,YAAA,OAAO,cAAc,CAAC,eAAe,CAAC,KAAK,CAAC,YAAY;;AAEzD,QAAA,OAAO,IAAI;;IAGL,WAAW,GAAA;;AAEjB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AACxB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,WAAW,EAAE,IAAI;AAEjB,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,iBAAiB,EAAE,KAAK;AACxB,YAAA,yBAAyB,EAAE,IAAI;AAE/B,YAAA,YAAY,EAAE,EAAE;AAEhB,YAAA,mBAAmB,EAAE,IAAI;AACzB,YAAA,2BAA2B,EAAE,IAAI;AACjC,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,iBAAiB,EAAE,IAAI;AACvB,YAAA,iBAAiB,EAAE,IAAI;AAEvB,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,kBAAkB,EAAE,EAAE;AAEtB,YAAA,SAAS,EAAE,SAAS;AAEpB,YAAA,yBAAyB,EAAE,IAAI;AAC/B,YAAA,eAAe,EAAE,SAAS;AAE1B,YAAA,eAAe,EAAE;gBAChB,gBAAgB,EAAE,IAAI,CAAC,aAAa,EAAE,eAAe,EAAE,gBAAgB,IAAI,EAAE;AAC7E,aAAA;AACD,SAAA,CAAC;;IAGI,sBAAsB,GAAA;;AAE5B,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YACxB,GAAG,IAAI,CAAC,aAAa;AACrB,YAAA,eAAe,EAAE;AAChB,gBAAA,gBAAgB,EAAE,EAAE;AACpB,aAAA;AACD,SAAA,CAAC;;IAGI,MAAM,gBAAgB,CAAC,UAAuB,EAAA;AACpD,QAAA,IACC,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK;YAClC,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG;YACpD,CAAC,IAAI,CAAC,mBAAmB;AACzB,YAAA,CAAC,UAAU;YACX,CAAC,UAAU,CAAC,aAAa;YAEzB;AAED,QAAA,IAAI;AACH,YAAA,IAAI,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,kBAAkB,CAAC;AACrF,YAAA,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,IAAI,UAAU,CAAC,aAAa,EAAE,EAAE,CAAC;AAC7F,YAAA,MAAM,KAAK,GAAGG,mBAA2B,CAAC,IAAI,CAAC,mBAAmB,EAAE,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC;;YAGxG,IAAI,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAC1E,aAAa,EACb,UAAU,CAAC,aAAa,CAAC,EAAE,CAC3B;AACD,YAAA,IAAI,YAAY,GAA2B;AAC1C,gBAAA,QAAQ,EAAE,UAAU,CAAC,aAAa,CAAC,EAAE;;AAErC,gBAAA,UAAU,EAAE,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,UAAU;AAC/D,gBAAA,aAAa,EAAE,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,aAAa;;AAErE,gBAAA,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,CAAC;AAC3C,gBAAA,cAAc,EAAE,KAAK,CAAC,SAAS,IAAI,CAAC;AACpC,gBAAA,iBAAiB,EAAE,KAAK,CAAC,YAAY,IAAI,CAAC;AAC1C,gBAAA,mBAAmB,EAAE,KAAK,CAAC,cAAc,IAAI,CAAC;aAC9C;;YAGD,MAAM,IAAI,CAAC;AACT,iBAAA,KAAK,CAAC,UAAU,EAAE,YAAY,EAAE;AAChC,gBAAA,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,YAAY,CAAC;aAC5E;iBACA,IAAI,CAAC,cAAc,EAAE;AACrB,iBAAA,SAAS,EAAE;;AAGb,YAAA,MAAM,gBAAgB,GAAG,CAAC,OAA6B,KAAI;gBAC1D,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,KAAK,UAAU,CAAC,aAAa,EAAE,EAAE,CAAC;AACrF,gBAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AACjB,oBAAA,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;oBACxB,IAAI,CAAC,IAAI,CAAC,mBAAmB;wBAAE;AAC/B,oBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;wBAC9B,GAAG,IAAI,CAAC,mBAAmB;AAC3B,wBAAA,OAAO,EAAE;AACR,4BAAA,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO;AACnC,4BAAA,KAAK,EAAE;AACN,gCAAA,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,CAAC;AAC3C,gCAAA,cAAc,EAAE,KAAK,CAAC,SAAS,IAAI,CAAC;AACpC,gCAAA,iBAAiB,EAAE,KAAK,CAAC,YAAY,IAAI,CAAC;AAC1C,gCAAA,mBAAmB,EAAE,KAAK,CAAC,cAAc,IAAI,CAAC;AAC9C,6BAAA;AACD,yBAAA;AACD,qBAAA,CAAC;;AAEJ,aAAC;;AAGD,YAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,OAAO,EAAE,QAAQ;gBAAE,gBAAgB,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC5G,YAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,OAAO,EAAE,QAAQ;gBAAE,gBAAgB,CAAC,IAAI,CAAC,mBAAmB,EAAE,OAAO,EAAE,QAAQ,CAAC;AAC9G,YAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,OAAO,EAAE,KAAK;gBAAE,gBAAgB,CAAC,IAAI,CAAC,mBAAmB,EAAE,OAAO,EAAE,KAAK,CAAC;AACxG,YAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,OAAO,EAAE,YAAY;gBAClD,gBAAgB,CAAC,IAAI,CAAC,mBAAmB,EAAE,OAAO,EAAE,YAAY,CAAC;;AAGlE,YAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,KAAK,UAAU,CAAC,aAAa,EAAE,EAAE,CAAC;AACrG,gBAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;oBACjB,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;oBACxC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;;;;QAGvD,OAAO,KAAK,EAAE;YACf,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,KAA0B,EAAE,kBAAkB,CAAC;;;AAIhF,IAAA,iBAAiB,CACvB,WAAwC,EACxC,aAAsC,EACtC,mBAA0D,EAAA;;AAI1D,QAAA,IAAI,oBAA+C;QACnD,MAAM,OAAO,GACZ,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK;AAC1B,YAAA,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK;AAChC,YAAA,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ;AACnC,YAAA,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO;YAClC,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM;QAClC,IAAI,OAAO,EAAE;AACZ,YAAA,MAAM,iBAAiB,GAAG,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,KAAI;AAC/F,gBAAA,MAAM,OAAO,GAAG,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;AACxD,gBAAA,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;AACpD,gBAAA,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;AACtD,gBAAA,IACC,CAAC,aAAa,EAAE,eAAe,EAAE,gBAAgB,IAAI,EAAE,EAAE,QAAQ,CAAC,WAAW,CAAC;oBAC9E,CAAC,mBAAmB,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,KAAK,KAAK,IAAI,EAAE,CAAC,GAAG,KAAK,KAAK,GAAG,MAAM,CAAC,EACtF;AACD,oBAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;;AAEpB,gBAAA,OAAO,OAAO;aACd,EAAE,EAAc,CAAC;;AAGlB,YAAA,oBAAoB,GAAG;gBACtB,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAChG,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAClG,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAC9F,cAAc,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAC7D,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAChD;gBACD,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aACpG;;AAGF,QAAA,MAAM,iBAAiB,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,KAAI;AAC7F,YAAA,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;AAClD,YAAA,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AACpD,YAAA,IACC,CAAC,aAAa,EAAE,eAAe,EAAE,gBAAgB,IAAI,EAAE,EAAE,QAAQ,CAAC,WAAW,CAAC;gBAC9E,CAAC,mBAAmB,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,KAAK,KAAK,IAAI,EAAE,CAAC,GAAG,KAAK,KAAK,GAAG,MAAM,CAAC,EACtF;AACD,gBAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;;AAEpB,YAAA,OAAO,OAAO;SACd,EAAE,EAAc,CAAC;AAClB,QAAA,MAAM,oBAAoB,GAA0B;YACnD,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC9F,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAChG,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC5F,cAAc,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SAC9G;AAED,QAAA,WAAW,CAAC,IAAI,CAAC,KAAK,GAAG,oBAAoB;AAC7C,QAAA,IAAI,OAAO;AAAE,YAAA,WAAW,CAAC,IAAI,CAAC,KAAK,GAAG,oBAAoB;AAE1D,QAAA,OAAO,WAAW;;IAGX,4BAA4B,CAAC,QAAsB,EAAE,eAA8C,EAAA;QAC1G,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;AACjC,QAAA,MAAM,YAAY,GAAG,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,CAAA,CAAA,WAAA,CAAa;QACjF,MAAM;AACL,YAAA,MAAM,EAAE,GAAG;AACX,YAAA,UAAU,EAAE,YAAY;AACxB,YAAA,GAAG,EAAE,eAAe,CAAC,QAAQ,CAAC,GAAG;YACjC,OAAO,EAAE,IAAI,WAAW,EAAE;AAC1B,YAAA,KAAK,EAAE,IAAI,KAAK,CAAC,YAAY,CAAC;AAC9B,YAAA,OAAO,EAAE,YAAY;SACA;;IAGf,MAAM,kBAAkB,CAAC,QAAsB,EAAA;QACtD,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW,CAAC,KAAK,EAAE;YAC1C,IAAI,CAAC,4BAA4B,CAAC,QAAQ,EAAE,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;YAC9E;;AAGD,QAAA,IAAI,QAAQ,CAAC,QAAQ,GAAG,GAAG,IAAI,QAAQ,CAAC,QAAQ,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;AACtF,YAAA,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,wBAAwB,EAAE;AAC5D,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC;AAE1C,YAAA,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK;AAC9B,gBAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC;AAClC,oBAAA,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc;AAC/B,oBAAA,UAAU,EAAE,KAAK;AACjB,iBAAA,CAAC;;AACG,aAAA,IAAI,QAAQ,CAAC,QAAQ,KAAK,GAAG,EAAE;AACrC,YAAA,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,yBAAyB,EAAE;AAC9D,YAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;AAC1E,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,eAAe,CAAC;AAChD,YAAA,IAAI,CAAC,sBAAsB,CAAC,eAAe,CAAC;AAE5C,YAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;AACjC,gBAAA,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,wBAAwB,EAAE;AAC5D,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC;AAE1C,gBAAA,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK;AAC9B,oBAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC;AAClC,wBAAA,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc;AAC/B,wBAAA,UAAU,EAAE,KAAK;AACjB,qBAAA,CAAC;;AAGJ,YAAA,IACC,IAAI,CAAC,oBAAoB,CAAC,eAAe;AACzC,gBAAA,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,GAAG;AAC7C,gBAAA,IAAI,CAAC,wBAAwB,EAAE,EAC9B;AACD,gBAAA,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,yBAAyB,EAAE;AAC9D,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC;;;;AAKvC,IAAA,sBAAsB,CAAC,kBAAqC,EAAA;AACnE,QAAA,IAAI,CAAC,kBAAkB;YAAE;QAEzB,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,IAAG;AACjD,YAAA,MAAM,CAAC,IAAI,GAAG,kBAAkB,CAAC,KAAK;AACvC,SAAC,CAAC;QACF,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,IAAG;AACpD,YAAA,MAAM,CAAC,IAAI,GAAG,kBAAkB,CAAC,QAAQ;AAC1C,SAAC,CAAC;QACF,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,IAAG;AACpD,YAAA,MAAM,CAAC,IAAI,GAAG,kBAAkB,CAAC,QAAQ;AAC1C,SAAC,CAAC;QACF,kBAAkB,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,MAAM,IAAG;AAC1D,YAAA,MAAM,CAAC,IAAI,GAAG,kBAAkB,CAAC,UAAU;AAC5C,SAAC,CAAC;;AAGF,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,IAAI,EAAE,CAAC;;AAGpF,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,eAAe,EAAE,mBAAmB,IAAI,EAAE,CAAC;;AAGvG,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;YACzB,aAAa,EACZ,kBAAkB,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,IAAI;AACvD,kBAAE,kBAAkB,CAAC,OAAO,EAAE,SAAS,EAAE;AACzC,kBAAE,IAAI;YACR,gBAAgB,EACf,kBAAkB,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,IAAI;AACtD,kBAAE,kBAAkB,CAAC,OAAO,EAAE,SAAS,EAAE;AACzC,kBAAE,IAAI;YACR,WAAW,EACV,kBAAkB,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,IAAI;AACrD,kBAAE,kBAAkB,CAAC,OAAO,EAAE,SAAS,EAAE;AACzC,kBAAE,IAAI;YAER,UAAU,EACT,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,SAAS,GAAG,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;YAC9G,iBAAiB,EAChB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,IAAI;AACjD,kBAAE,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE;AACvC,kBAAE,IAAI;YACR,yBAAyB,EACxB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,iBAAiB,IAAI;AACzD,kBAAE,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE;AACvC,kBAAE,IAAI;AAER,YAAA,YAAY,EAAE,kBAAkB,CAAC,OAAO,EAAE,YAAY;YAEtD,mBAAmB,EAClB,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,IAAI;AACnD,kBAAE,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE;AAC1C,kBAAE,IAAI;YACR,2BAA2B,EAC1B,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,IAAI,SAAS;AAChE,gBAAA,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,IAAI;AACxD,kBAAE,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,IAAI,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE;kBAC/F,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE,gBAAgB,IAAI;AAC9D,sBAAE,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE;AAC1C,sBAAE,IAAI;YACR,eAAe,EACd,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,IAAI;AACtD,kBAAE,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE;kBACxC,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE,gBAAgB,IAAI;AAC9D,sBAAE,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE;AAC1C,sBAAE,IAAI;YACR,iBAAiB,EAChB,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,IAAI;AACxD,kBAAE,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE;kBACxC,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE,gBAAgB,IAAI;AAC9D,sBAAE,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE;AAC1C,sBAAE,IAAI;YACR,gBAAgB,EACf,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,IAAI;AAChD,kBAAE,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE;AAC1C,kBAAE,IAAI;AACR,YAAA,kBAAkB,EAAE,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY;YACxE,iBAAiB,EAChB,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,IAAI;AACxD,kBAAE,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE;AAC1C,kBAAE,IAAI;YAER,SAAS,EAAE,kBAAkB,CAAC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE;kBAChE,kBAAkB,CAAC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE;AAC1D,kBAAE,SAAS;YAEZ,yBAAyB,EACxB,kBAAkB,CAAC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,kBAAkB,IAAI;kBACjF,kBAAkB,CAAC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE;AAChE,kBAAE,IAAI;YACR,eAAe,EAAE,kBAAkB,CAAC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,SAAS;AACxF,YAAA,eAAe,EAAE;gBAChB,gBAAgB,EAAE,kBAAkB,CAAC,OAAO,EAAE,eAAe,EAAE,gBAAgB,IAAI,EAAE;AACrF,aAAA;AACD,YAAA,eAAe,EAAE,kBAAkB,CAAC,OAAO,EAAE,eAAe,IAAI,EAAE;AAClE,SAAA,CAAC;AAEF,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,kBAAkB,CAAC;AACvF,QAAA,IAAI,mBAAgD;AACpD,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACzB,YAAA,mBAAmB,GAAG,IAAI,CAAC,iBAAiB,CAC3C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC,EAC7D,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,mBAAmB,CACxB;;AAEF,QAAA,MAAM,KAAK,GAAqB,IAAI,CAAC,eAAe,CACnD,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,IAAI,CAAC,eAAe,CACpB;AAED,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;AAC/B,YAAA,GAAG,kBAAkB;AACrB,YAAA,OAAO,EAAE;gBACR,GAAG,kBAAkB,CAAC,OAAO;AAC7B,gBAAA,KAAK,EAAE;oBACN,cAAc,EAAE,KAAK,CAAC,SAAS;oBAC/B,iBAAiB,EAAE,KAAK,CAAC,YAAY;oBACrC,mBAAmB,EAAE,KAAK,CAAC,cAAc;AACzC,oBAAA,eAAe,EAAE,IAAI,CAAC,mBAAmB,EAAE,GAAG,KAAK,CAAC,eAAe,IAAI,CAAC,GAAG,IAAI;AAC/E,oBAAA,4BAA4B,EAAE,IAAI,CAAC,wBAAwB,EAAE,GAAG,KAAK,CAAC,4BAA4B,GAAG,IAAI;AACzG,oBAAA,2BAA2B,EAAE,IAAI,CAAC,wBAAwB,EAAE,GAAG,KAAK,CAAC,2BAA2B,GAAG,IAAI;AACvG,iBAAA;AACD,aAAA;AACD,YAAA,OAAO,EAAE;AACR,gBAAA,OAAO,EAAE;AACR,oBAAA,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,IAAI,IAAI;AAC9C,oBAAA,iBAAiB,EAAE,IAAI,CAAC,aAAa,EAAE,yBAAyB,IAAI,IAAI;AACxE,oBAAA,SAAS,EAAE,IAAI,CAAC,aAAa,EAAE,iBAAiB,IAAI,IAAI;AACxD,iBAAA;AACD,gBAAA,YAAY,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY;AAC9C,gBAAA,SAAS,EAAE;AACV,oBAAA,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,aAAa,IAAI,IAAI;AACxD,oBAAA,YAAY,EAAE,IAAI,CAAC,aAAa,EAAE,gBAAgB,IAAI,IAAI;AAC1D,oBAAA,WAAW,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,IAAI,IAAI;AACpD,iBAAA;AACD,gBAAA,eAAe,EAAE;AAChB,oBAAA,eAAe,EAAE;AAChB,wBAAA,kBAAkB,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,eAAe;AACzD,wBAAA,kBAAkB,EAAE,IAAI,CAAC,aAAa,EAAE,yBAAyB,IAAI,IAAI;AACzE,wBAAA,SAAS,EAAE,IAAI,CAAC,aAAa,EAAE,eAAe;AAC9C,qBAAA;AACD,oBAAA,SAAS,EAAE;AACV,wBAAA,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS;AACjD,wBAAA,cAAc,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS;AAC7C,qBAAA;AACD,iBAAA;AACD,gBAAA,UAAU,EAAE;AACX,oBAAA,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,gBAAgB,IAAI,IAAI;oBACnD,gBAAgB,EAAE,IAAI,CAAC,aAAa,EAAE,eAAe,IAAI,IAAI,CAAC,aAAa,EAAE,iBAAiB;AAC9F,oBAAA,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,mBAAmB,IAAI,IAAI;AACzD,oBAAA,YAAY,EAAE,IAAI,CAAC,aAAa,EAAE,kBAAkB,IAAI,EAAE;AAC1D,oBAAA,WAAW,EAAE,IAAI,CAAC,aAAa,EAAE,eAAe,IAAI,IAAI;AACxD,oBAAA,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,iBAAiB,IAAI,IAAI;AAC5D,oBAAA,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,iBAAiB,IAAI,IAAI;AAC5D,iBAAA;AACD,gBAAA,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,IAAI,EAAE;AACjD,gBAAA,iBAAiB,EAAE,EAAE;AACrB,gBAAA,eAAe,EAAE,IAAI,CAAC,aAAa,EAAE,eAAe,IAAI,EAAE;AAC1D,aAAA;AACD,SAAA,CAAC;QAEF,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,kBAAkB,EAAE;;AAElD,YAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,cAAc,GAAG,KAAK,GAAG,IAAI,CAAC;;;AAI3D,IAAA,eAAe,CACtB,eAAmC,EACnC,kBAAoC,EACpC,mBAAiD,EACjD,eAAkC,EAAA;AAElC,QAAA,MAAM,OAAO,GACZ,IAAI,CAAC,aAAa,EAAE,aAAa,IAAI,IAAI,CAAC,aAAa,EAAE,gBAAgB,IAAI,IAAI,CAAC,aAAa,EAAE,WAAW;AAE7G,QAAA,MAAM,uBAAuB,GAAG,IAAI,CAAC,4BAA4B;AACjE,QAAA,IAAI,KAAuB;AAC3B,QAAA,IACC,IAAI,CAAC,oBAAoB,IAAI,eAAe,CAAC,MAAM;AACnD,YAAA,CAAC,OAAO;YACR,CAAC,IAAI,CAAC,uBAAuB;YAC7B,uBAAuB,IAAI,IAAI,CAAC,oBAAoB;aACnD,IAAI,CAAC,wBAAwB,EAAE;AAC/B,gBAAA,IAAI,CAAC,eAAe;gBACpB,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,MAAM;oBAClE,mBAAmB,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,CAAC,EAC1D;AACD,YAAA,KAAK,GAAGA,mBAA2B,CAAC,kBAAkB,EAAE,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC;YAE5F,IACC,IAAI,CAAC,wBAAwB,EAAE;AAC/B,gBAAA,IAAI,CAAC,eAAe;gBACpB,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,MAAM;oBAClE,mBAAmB,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EACxD;AACD,gBAAA,MAAM,OAAO,GAAGC,4BAAoC,CACnD,eAAe,EAAE,KAAK,EACtB,mBAAmB,EACnB,kBAAkB,EAAE,eAAe,EAAE,UAAU,CAC/C;AACD,gBAAA,KAAK,CAAC,4BAA4B,GAAG,OAAO,CAAC,kBAAkB;AAC/D,gBAAA,KAAK,CAAC,2BAA2B,GAAG,OAAO,CAAC,YAAY;;iBAClD;AACN,gBAAA,KAAK,CAAC,4BAA4B,GAAG,mBAAmB,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,IAAI,CAAC;AAClG,gBAAA,KAAK,CAAC,2BAA2B;AAChC,oBAAA,CAAC,IAAI,CAAC,uBAAuB,EAAE,eAAe,EAAE,KAAK,EAAE,YAAY,IAAI,CAAC,IAAI,GAAG;;;aAE3E;;;YAGN,MAAM,YAAY,GAAGC,eAAuB,CAAC,kBAAkB,CAAC;AAChE,YAAA,KAAK,GAAG;AACP,gBAAA,eAAe,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,KAAK,EAAE,eAAe,IAAI,CAAC,IAAI,GAAG;gBAC1F,SAAS,EAAE,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc;gBACpE,cAAc,EAAE,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,KAAK,CAAC,mBAAmB;gBAC9E,YAAY,EAAE,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB;AAC1E,gBAAA,YAAY,EAAE,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC,aAAa;AACxE,gBAAA,KAAK,EAAE,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC,UAAU;AAC9D,gBAAA,OAAO,EAAE,YAAY,EAAE,EAAE,IAAI,CAAC;AAC9B,gBAAA,UAAU,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;AACpC,gBAAA,2BAA2B,EAAE,CAAC,IAAI,CAAC,uBAAuB,EAAE,eAAe,EAAE,KAAK,EAAE,YAAY,IAAI,CAAC,IAAI,GAAG;gBAC5G,4BAA4B,EAAE,mBAAmB,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,IAAI,CAAC;aAC3F;;AAEF,QAAA,OAAO,KAAK;;AAGL,IAAA,cAAc,CAAC,eAAiC,EAAA;;QAEvD,OAAO,IAAI,WAAW,CAAC;YACtB,GAAG,eAAe,CAAC,OAAO;AAC1B,SAAA,CAAC;;IAGK,sBAAsB,GAAA;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG;AAAE,YAAA,OAAO,KAAK;QAExG,OAAO,IAAI,CAAC;aACV,GAAG,CAAe,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE;AAClE,YAAA,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,QAAQ,CAAC;SACxE;AACA,aAAA,IAAI,CAAC,cAAc,EAAE,CAAC;;AAGjB,IAAA,MAAM,wBAAwB,GAAA;AACrC,QAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG;AAAE,YAAA,OAAO,SAAS;QAElH,OAAO,MAAM,IAAI,CAAC;aAChB,GAAG,CAAc,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,EAAE;AACvE,YAAA,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,cAAc,CAAC;SAC9E;aACA,IAAI,CAAC,cAAc,EAAE;AACrB,aAAA,SAAS,EAAE;;AAGN,IAAA,MAAM,yBAAyB,GAAA;AACtC,QAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,eAAe,EAAE,GAAG;AAAE,YAAA,OAAO,SAAS;QAEnH,OAAO,MAAM,IAAI,CAAC;aAChB,GAAG,CAAmB,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE;AAC7E,YAAA,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,eAAe,CAAC;SAC/E;aACA,IAAI,CAAC,cAAc,EAAE;AACrB,aAAA,SAAS,EAAE;;AAGN,IAAA,MAAM,yBAAyB,GAAA;AACtC,QAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,eAAe,EAAE,GAAG;AAAE,YAAA,OAAO,SAAS;QAEnH,OAAO,MAAM,IAAI,CAAC;aAChB,GAAG,CAAmB,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE;AAC7E,YAAA,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,eAAe,CAAC;SAC/E;aACA,IAAI,CAAC,cAAc,EAAE;AACrB,aAAA,SAAS,EAAE;;AAGN,IAAA,sBAAsB,CAC7B,QAAiC,EACjC,eAA+F,EAC/F,kBAA4B,EAAA;QAE5B,IAAI,QAAQ,CAAC,iBAAiB,KAAK,SAAS,IAAI,QAAQ,CAAC,iBAAiB,KAAK,IAAI;YAClF,eAAe,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;QAEhG,IAAI,kBAAkB,GAAa;aACjC,MAAM,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;aACvD,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,CAAC;AAE1B,QAAA,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,EAAE;QAEpE,IAAI,QAAQ,CAAC,mBAAmB,KAAK,SAAS,IAAI,QAAQ,CAAC,mBAAmB,KAAK,KAAK;YACvF,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,CAAC,EAAE,IAChD,eAAe,CAAC,IAAI,CACnB,EAAE,IACD,EAAE,CAAC,EAAE,KAAK,EAAE;AACZ,iBAAC,EAAE,CAAC,IAAI,KAAK,kBAAkB,CAAC,QAAQ;oBACvC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,eAAe,CAAC,CAAC,CACnE,CACD;QAEF,IAAI,QAAQ,CAAC,gBAAgB,KAAK,SAAS,IAAI,QAAQ,CAAC,gBAAgB,KAAK,KAAK;YACjF,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,CAAC,EAAE,IAChD,eAAe,CAAC,IAAI,CACnB,EAAE,IACD,EAAE,CAAC,EAAE,KAAK,EAAE;AACZ,iBAAC,EAAE,CAAC,IAAI,KAAK,kBAAkB,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,eAAe,CAAC,CAAC,CAC3G,CACD;AAEF,QAAA,IACC,QAAQ,CAAC,2BAA2B,KAAK,SAAS;YAClD,QAAQ,CAAC,eAAe,KAAK,KAAK;YAClC,QAAQ,CAAC,iBAAiB,KAAK,KAAK;YAEpC,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,CAAC,EAAE,IAChD,eAAe,CAAC,IAAI,CACnB,EAAE,IACD,EAAE,CAAC,EAAE,KAAK,EAAE;AACZ,iBAAC,EAAE,CAAC,IAAI,KAAK,kBAAkB,CAAC,QAAQ;oBACvC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,eAAe,CAAC,CAAC,CACnE,CACD;aACG,IAAI,QAAQ,CAAC,2BAA2B,KAAK,SAAS,IAAI,QAAQ,CAAC,eAAe,KAAK,KAAK;YAChG,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,CAAC,EAAE,IAChD,eAAe,CAAC,IAAI,CACnB,EAAE,IACD,EAAE,CAAC,EAAE,KAAK,EAAE;AACZ,iBAAC,EAAE,CAAC,IAAI,KAAK,kBAAkB,CAAC,QAAQ;oBACvC,CAAC,EAAE,CAAC,MAAM;oBACV,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,eAAe,CAAC,CAAC,CACnE,CACD;aACG,IAAI,QAAQ,CAAC,2BAA2B,KAAK,SAAS,IAAI,QAAQ,CAAC,iBAAiB,KAAK,KAAK;YAClG,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,CAAC,EAAE,IAChD,eAAe,CAAC,IAAI,CACnB,EAAE,IACD,EAAE,CAAC,EAAE,KAAK,EAAE;AACZ,iBAAC,EAAE,CAAC,IAAI,KAAK,kBAAkB,CAAC,QAAQ;oBACvC,CAAC,CAAC,EAAE,CAAC,MAAM;oBACX,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,eAAe,CAAC,CAAC,CACnE,CACD;AAEF,QAAA,IAAI,QAAQ,CAAC,kBAAkB,KAAK,SAAS,IAAI,QAAQ,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;YACxF,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,CAAC,EAAE,IAChD,eAAe,CAAC,IAAI,CACnB,EAAE,IACD,EAAE,CAAC,EAAE,KAAK,EAAE;AACZ,iBAAC,EAAE,CAAC,IAAI,KAAK,kBAAkB,CAAC,UAAU;AACzC,oBAAA,CAAC,QAAQ,CAAC,kBAAkB,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,KAAM,EAA+B,EAAE,YAAY,CAAC;oBAC/F,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,eAAe,CAAC,CAAC,CACnE,CACD;;QAGF,IAAI,QAAQ,CAAC,iBAAiB,KAAK,SAAS,IAAI,QAAQ,CAAC,iBAAiB,KAAK,KAAK;YACnF,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,CAAC,EAAE,IAChD,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,eAAe,CAAC,CAAC,CAC7G;AAEF,QAAA,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS;AACvB,YAAA,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,CAAC,EAAE,IAChD,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,YAAY,KAAK,QAAQ,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,CACxF;AAEF,QAAA,IAAI,CAAC,CAAC,QAAQ,CAAC,eAAe;YAC7B,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,CAAC,EAAE,IAChD,eAAe,CAAC,IAAI,CACnB,EAAE,IACD,EAAE,CAAC,EAAE,KAAK,EAAE;AACZ,gBAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE;oBACzD,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,IAAI,QAAQ,CAAC,eAAe,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CACxF,CACD;QAEF,IAAI,QAAQ,CAAC,yBAAyB,IAAI,SAAS,IAAI,QAAQ,CAAC,yBAAyB,KAAK,KAAK;AAClG,YAAA,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,CAAC,EAAE,IAChD,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,CACtE;QAEF,IAAI,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;YAC5D,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,CAAC,EAAE,IAChD,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CACxG;QAEF,IAAI,QAAQ,CAAC,eAAe,IAAI,QAAQ,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;AAClE,YAAA,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,CAAC,EAAE;;YAEhD,eAAe,CAAC,IAAI,CACnB,EAAE,IACD,EAAE,CAAC,EAAE,KAAK,EAAE;AACZ,iBAAC,EAAE,CAAC,IAAI,KAAK,kBAAkB,CAAC,QAAQ;oBACvC,CAAC,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAChF,CACD;AACF,QAAA,OAAO,kBAAkB;;AAG1B,IAAA,cAAc,CAAC,UAA2B,EAAA;QACzC,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE;;AAGvE,QAAA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAE;QAC3B,MAAM,kBAAkB,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,IAAG;YACrD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;AAC9B,gBAAA,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;AACxB,gBAAA,OAAO,IAAI;;AAEZ,YAAA,OAAO,KAAK;AACb,SAAC,CAAC;QACF,UAAU,GAAG,kBAAkB;;QAG/B,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE;AACrD,QAAA,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM,CACzC,SAAS,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,aAAa,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAAC,CACtG;;AAGD,QAAA,MAAM,UAAU,GAAG,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC;;QAGjE,MAAM,SAAS,GAAG,EAAE;QACpB,MAAM,SAAS,GAAG,EAAE;AACpB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE;AACtD,YAAA,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;;;AAInD,QAAA,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM;AACrC,QAAA,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAE1B,IAAI,YAAY,KAAK,CAAC;AAAE,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;AAElD,QAAA,IAAI,CAAC,sBAAsB,GAAG,EAAE;;AAGhC,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC;QAC3C;AACE,aAAA,IAAI,CACJ,SAAS,CAAC,GAAG,IAAG;YACf,iBAAiB,EAAE,CAAC;YACpB,OAAO,QAAQ,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,oBAAoB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;AACvE,SAAC,CAAC,EACF,YAAY,CAAC,IAAI,CAAC;AAElB,aAAA,SAAS,CAAC,CAAC,OAA2B,KAAI;YAC1C,IAAI,OAAO,EAAE;;AAEZ,gBAAA,IAAI,CAAC,sBAAsB,GAAG,CAAC,GAAG,IAAI,CAAC,sBAAsB,EAAE,GAAG,OAAO,CAAuB;gBAEhG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,kBAAkB,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC;;AAGnG,gBAAA,IAAI,iBAAiB,KAAK,YAAY,EAAE;oBACvC,MAAM,aAAa,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,YAAY,IAAG;AACpE,wBAAA,MAAM,iBAAiB,GAAG,UAAU,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,YAAY,CAAC,EAAE,CAAC;wBACzE,OAAO;AACN,4BAAA,aAAa,EAAE,iBAAiB;AAChC,4BAAA,aAAa,EAAE,YAAY;AAC3B,4BAAA,iBAAiB,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU;AACnD,4BAAA,cAAc,EAAE;gCACf,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,KAAK,IAAI,CAAC;gCAC/C,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC;AACrD,6BAAA;yBACc;AACjB,qBAAC,CAAC;AACF,oBAAA,MAAM,aAAa,GAAG,CAAC,GAAG,eAAe,EAAE,GAAG,aAAa,CAAC,CAAC,IAAI,CAChE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,YAAY,GAAG,CAAC,CAAC,aAAa,CAAC,YAAY,CACrE;AACD,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;;;AAGxC,SAAC,CAAC;;AAGJ,IAAA,WAAW;wGAniDC,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAT,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAjB,iBAAiB,EAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B;;;MCnBY,2BAA2B,CAAA;AAK9B,IAAA,cAAA;AACA,IAAA,cAAA;AACA,IAAA,aAAA;AACA,IAAA,QAAA;;IAN8B,QAAQ,GAAG,IAAI;AAEtD,IAAA,WAAA,CACS,cAAiC,EACjC,cAAiC,EACjC,aAA0C,EAC1C,QAAuC,EAAA;QAHvC,IAAc,CAAA,cAAA,GAAd,cAAc;QACd,IAAc,CAAA,cAAA,GAAd,cAAc;QACd,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAQ,CAAA,QAAA,GAAR,QAAQ;;IAGjB,QAAQ,GAAA;QACP,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,aAAa;AACnD,QAAA,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,cAAc;AAE/C,QAAA,MAAM,oBAAoB,GAAG,KAAK,CAAC,IAAI,CACtC,cAAc,CAAC,eAAe,CAAC,EAC/B,oBAAoB,EAAE,EACtB,MAAM,CACL,CAAC,CAAC,WAAW,EAAE,YAAY,CAAC,KAC3B,CAAC,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,KAAK;AAC9C,aAAC,YAAY,CAAC,QAAQ,KAAK,aAAa;gBACvC,YAAY,CAAC,QAAQ,KAAK,kBAAkB;AAC5C,gBAAA,YAAY,CAAC,QAAQ,KAAK,SAAS,CAAC;YACrC,YAAY,CAAC,UAAU,CACxB,EACD,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,WAAW,CAAC,EACnC,YAAY,CAAC,IAAI,CAAC,CAClB;AACD,QAAA,oBAAoB,CAAC,SAAS,CAAC,WAAW,IAAG;AAC5C,YAAA,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAoB,CAAC;AAClF,SAAC,CAAC;;QAGF;AACE,aAAA,IAAI,CACJ,YAAY,CAAC,IAAI,CAAC,EAClB,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;aAEvB,SAAS,CAAC,CAAC,IAAG;AACd,YAAA,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC,EAAsB,CAAC;AAC3E,SAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC;AACjB,aAAA,IAAI,CACJ,YAAY,CAAC,IAAI,CAAC,EAClB,cAAc,CAAC,eAAe,CAAC,EAC/B,MAAM,CACL,CAAC,CAAC,gBAAgB,EAAE,YAAY,CAAC,KAChC,gBAAgB,IAAI,YAAY,CAAC,QAAQ,KAAK,kBAAkB,IAAI,YAAY,CAAC,UAAU,CAC5F;aAED,SAAS,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,KAAI;AACpC,YAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CACrB,EAAE,IAAI,EAAE,mBAAmB,EAAE,GAAG,EAAE,gBAAgB,CAAC,KAAK,EAA2B,EACnF,GAAG,CACH;AACF,SAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC;aACjB,IAAI,CACJ,YAAY,CAAC,IAAI,CAAC,EAClB,cAAc,CAAC,eAAe,CAAC,EAC/B,MAAM,CAAC,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC,KAAI;AACvC,YAAA,QACC,YAAY,IAAI,YAAY,CAAC,SAAS,KAAK,MAAM,CAAC,0BAA0B,IAAI,YAAY,CAAC,UAAU;AAEzG,SAAC,CAAC;aAEF,SAAS,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,KAAI;YAChC,MAAM,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,CAC9F,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,0BAA0B,CACjD;YACD,IAAI,kBAAkB,EAAE;gBACvB,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,cAAc,CAAiB;AAC9E,gBAAA,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CACpE,CAAC,IAAI,CAAC,KAAK,YAAY,CAAC,WAAW,CAAC,KAAK,CACzC;AACD,gBAAA,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,KAAK,EAA2B,CAAC;;AAE5F,SAAC,CAAC;;AAGJ,IAAA,IAAc,KAAK,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,aAAa;;AAGjD;;;AAGG;AACO,IAAA,YAAY,CAAC,IAAS,EAAA;AAC/B,QAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC;;AAGhD,IAAA,WAAW;wGA/FC,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAZ,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAa,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,2BAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA3B,2BAA2B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAJvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,UAAU,EAAE,KAAK;AACjB,iBAAA;gLAGuC,QAAQ,EAAA,CAAA;sBAA9C,WAAW;uBAAC,eAAe;;;ACH7B;;;AAGG;MAEU,oBAAoB,CAAA;AAuEZ,IAAA,cAAA;AAA2C,IAAA,cAAA;AAtEvD,IAAA,kBAAkB,GAAG,IAAI,eAAe,CAAyB,IAAI,CAAC;;AAE9E,IAAA,IAAW,kBAAkB,GAAA;QAC5B,OAAO,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE;;AAG7C,IAAA,kBAAkB,GAAG,IAAI,eAAe,CAAiB,IAAI,CAAC;;AAEtE,IAAA,IAAW,kBAAkB,GAAA;QAC5B,OAAO,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE;;AAG7C,IAAA,mBAAmB,GAAG,IAAI,eAAe,CAAyB,IAAI,CAAC;;AAE/E,IAAA,IAAW,mBAAmB,GAAA;QAC7B,OAAO,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE;;AAG9C,IAAA,mBAAmB,GAAG,IAAI,eAAe,CAAiB,IAAI,CAAC;;AAEvE,IAAA,IAAW,mBAAmB,GAAA;QAC7B,OAAO,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE;;AAG9C,IAAA,oBAAoB,GAAG,IAAI,eAAe,CAAyB,IAAI,CAAC;;AAEhF,IAAA,IAAW,oBAAoB,GAAA;QAC9B,OAAO,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE;;AAEvD,IAAA,IAAW,mBAAmB,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK;;AAG/B,IAAA,oBAAoB,GAAG,IAAI,eAAe,CAAiB,IAAI,CAAC;;AAExE,IAAA,IAAW,oBAAoB,GAAA;QAC9B,OAAO,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE;;AAEvD,IAAA,IAAW,mBAAmB,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK;;AAG/B,IAAA,kBAAkB,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC;;AAE/D,IAAA,IAAW,iBAAiB,GAAA;QAC3B,OAAO,IAAI,CAAC,kBAAkB;;AAE/B,IAAA,IAAW,gBAAgB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK;;AAG7B,IAAA,eAAe,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAC7D;AACG;AACH,IAAA,IAAW,cAAc,GAAA;QACxB,OAAO,IAAI,CAAC,eAAe;;AAE5B,IAAA,IAAW,aAAa,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK;;AAG1B,IAAA,WAAW,GAAG,IAAI,eAAe,CAAyB,IAAI,CAAC;;AAEvE,IAAA,IAAW,UAAU,GAAA;QACpB,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE;;AAE9C,IAAA,IAAW,SAAS,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK;;IAG9B,WAAoB,CAAA,cAAiC,EAAU,cAAiC,EAAA;QAA5E,IAAc,CAAA,cAAA,GAAd,cAAc;QAA6B,IAAc,CAAA,cAAA,GAAd,cAAc;QAC5E,IAAI,CAAC,4BAA4B,EAAE;QACnC,IAAI,CAAC,2BAA2B,EAAE;QAClC,IAAI,CAAC,wBAAwB,EAAE;QAC/B,IAAI,CAAC,sCAAsC,EAAE;;IAGtC,4BAA4B,GAAA;AACnC,QAAA,aAAa,CAAC;YACb,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAChE,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACpE,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAChE,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC/D,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC/D,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACpE,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACnD,IAAI,CAAC,cAAc,CAAC,2BAA2B,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC5E;AACC,aAAA,IAAI,CACJ,YAAY,CAAC,IAAI,CAAC,EAClB,MAAM,CACL,CAAC,CAAC,UAAU,IAAI,QAAQ,EAAE,aAAa,CAStC,KACA,UAAU,IAAI,SAAS,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,CAAC,QAAQ,KAAK,aAAa,IAAI,aAAa,KAAK,IAAI,CAC7G;aAED,SAAS,CACT,CAAC,CACA,UAAU,EACV,WAAW,EACX,QAAQ,IAER,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,0BAA0B,EAU1B,KAAI;YACJ,IAAI,kBAAkB,GAAG,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI;AACnF,YAAA,IAAI,CAAC,gBAAgB,IAAI,kBAAkB,EAAE;gBAC5C,IAAI,kBAAkB,EAAE,IAAI;AAAE,oBAAA,kBAAkB,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI;gBACpE,IAAI,kBAAkB,EAAE,IAAI;AAAE,oBAAA,kBAAkB,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI;;AAGrE,YAAA,IACC,CAAC,kBAAkB,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,IAAI,GAAG;AACjE,iBAAC,kBAAkB,KAAK,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,EACjE;;AAED,gBAAA,IAAI,QAAQ,CAAC,UAAU,EAAE;AACxB,oBAAA,IAAI,CAAC,4BAA4B,CAAC,WAAW,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,kBAAkB,CAAC;;qBACjF;AACN,oBAAA,IAAI,CAAC,4BAA4B,CAAC,WAAW,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,kBAAkB,CAAC;;;YAIzF,IAAI,CAAC,kBAAkB,IAAI,CAAC,QAAQ,IAAI,CAAC,aAAa,IAAI,CAAC,kBAAkB;gBAAE;YAE/E,IAAI,CAAC,kBAAkB,EAAE,IAAI,EAAE,KAAK,IAAI,QAAQ,CAAC,UAAU,EAAE;AAC5D,gBAAA,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC;AACxC,oBAAA,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc;AACrC,oBAAA,UAAU,EAAE,KAAK;AACjB,iBAAA,CAAC;gBACF;;;AAGD,YAAA,MAAM,kBAAkB,GACvB,IAAI,CAAC,cAAc,CAAC,cAAc;AAClC,gBAAA,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU;AAC/B,iBAAC,CAAC,IAAI,CAAC,cAAc,CAAC,kBAAkB,IAAI,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,MAAM,KAAK,CAAC,CAAC;AAEjG,YAAA,IAAI,QAAQ,CAAC,UAAU,EAAE;gBACxB,IAAI,CAAC,4BAA4B,CAChC,WAAW,EACX,kBAAkB,GAAG,SAAS,GAAG,aAAa,EAC9C,kBAAkB,EAClB,kBAAkB,EAClB,0BAA0B,CAC1B;;iBACK;gBACN,IAAI,CAAC,4BAA4B,CAChC,WAAW,EACX,kBAAkB,GAAG,SAAS,GAAG,aAAa,EAC9C,kBAAkB,EAClB,kBAAkB,EAClB,0BAA0B,CAC1B;;AAEH,SAAC,CACD;;IAGK,2BAA2B,GAAA;AAClC,QAAA,aAAa,CAAC;YACb,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAChE,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAChE,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAChE,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC/D,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC/D,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;SACnD;aACC,IAAI,CACJ,YAAY,CAAC,IAAI,CAAC,EAClB,MAAM,CACL,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,CAAC,KAClD,UAAU,IAAI,SAAS;AACvB,YAAA,WAAW,IAAI,SAAS;AACxB,YAAA,QAAQ,IAAI,IAAI;YAChB,QAAQ,CAAC,QAAQ,KAAK,YAAY;YAClC,aAAa,KAAK,IAAI,CACvB;AAED,aAAA,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,cAAc,EAAE,QAAQ,IAAI,aAAa,EAAE,gBAAgB,CAAC,KAAI;YACxF,IAAI,kBAAkB,GAAG,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI;AACnF,YAAA,IAAI,CAAC,gBAAgB,IAAI,kBAAkB,EAAE;gBAC5C,IAAI,kBAAkB,EAAE,IAAI;AAAE,oBAAA,kBAAkB,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI;gBACpE,IAAI,kBAAkB,EAAE,IAAI;AAAE,oBAAA,kBAAkB,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI;;AAGrE,YAAA,IAAI,kBAAkB,IAAI,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,IAAI,GAAG,EAAE;AACvF,gBAAA,IAAI,kBAAkB,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,IAAI,GAAG,EAAE;AACrE,oBAAA,IAAI,CAAC,uBAAuB,CAC3B,cAAc,EACd;AACC,wBAAA,aAAa,EAAE,IAAI;AACnB,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,gBAAgB,EAAE,IAAI;AACtB,qBAAA,EACD,kBAAkB,EAClB,QAAQ,CACR;;;YAIH,IAAI,CAAC,kBAAkB,IAAI,CAAC,cAAc,IAAI,CAAC,QAAQ,IAAI,CAAC,aAAa;gBAAE;YAE3E,IAAI,CAAC,uBAAuB,CAAC,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,QAAQ,CAAC;AAC1F,SAAC,CAAC;;IAGI,wBAAwB,GAAA;AAC/B,QAAA,aAAa,CAAC;YACb,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAChE,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC/D,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACrE,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC/D,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACnD,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAChD,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAChE;AACC,aAAA,IAAI,CACJ,YAAY,CAAC,IAAI,CAAC,EAClB,MAAM,CACL,CAAC,CAAC,UAAU,EAAE,aAAa,EAAE,mBAAmB,EAAE,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,KAC3E,UAAU,IAAI,IAAI;AAClB,YAAA,UAAU,IAAI,SAAS;AACvB,YAAA,aAAa,IAAI,IAAI;AACrB,YAAA,aAAa,IAAI,SAAS;AAC1B,YAAA,mBAAmB,IAAI,IAAI;YAC3B,aAAa,IAAI,IAAI,CACtB;AAED,aAAA,SAAS,CACT,CAAC,CAAC,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAAE,CAAC,CAQ9F,KAAI;YACJ,IAAI,kBAAkB,GAAG,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI;AACnF,YAAA,IAAI,CAAC,gBAAgB,IAAI,kBAAkB,EAAE;gBAC5C,IAAI,kBAAkB,EAAE,IAAI;AAAE,oBAAA,kBAAkB,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI;gBACpE,IAAI,kBAAkB,EAAE,IAAI;AAAE,oBAAA,kBAAkB,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI;;AAErE,YAAA,IACC,CAAC,kBAAkB,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,IAAI,GAAG;AACjE,iBAAC,kBAAkB,IAAI,aAAa,CAAC,EACpC;AACD,gBAAA,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,CAAC;;YAG5G,IAAI,CAAC,kBAAkB,IAAI,CAAC,aAAa,IAAI,CAAC,eAAe,IAAI,CAAC,aAAa;gBAAE;AAEjF,YAAA,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,CAAC;AAC5G,SAAC,CACD;;IAGK,sCAAsC,GAAA;AAC7C,QAAA,aAAa,CAAC;YACb,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAChE,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC/D,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACjE,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAChE,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC/D,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;SACrE;aACC,IAAI,CACJ,YAAY,CAAC,IAAI,CAAC,EAClB,MAAM,CACL,CAAC,CAAC,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,QAAQ,CAAC,KACtD,UAAU,IAAI,IAAI;AAClB,YAAA,UAAU,IAAI,SAAS;AACvB,YAAA,CAAC,aAAa;AACd,YAAA,eAAe,IAAI,IAAI;AACvB,YAAA,eAAe,IAAI,SAAS;AAC5B,YAAA,QAAQ,CAAC,QAAQ,KAAK,kBAAkB,CACzC;AAED,aAAA,SAAS,CAAC,CAAC,CAAC,UAAU,IAAI,eAAe,EAAE,QAAQ,EAAE,aAAa,EAAE,mBAAmB,CAAC,KAAI;AAC5F,YAAA,IAAI,CAAC,UAAU,IAAI,CAAC,eAAe,IAAI,CAAC,QAAQ;gBAAE;YAElD,MAAM,OAAO,GACZ,CAAC,CAAC,eAAe,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK;gBAC3C,CAAC,CAAC,eAAe,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK;gBACjD,CAAC,CAAC,eAAe,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ;gBACpD,CAAC,CAAC,eAAe,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO;gBACnD,CAAC,CAAC,eAAe,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM;AAEnD,YAAA,IAAI,QAAQ,CAAC,UAAU,IAAI,CAAC,OAAO,EAAE;AACpC,gBAAA,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC;AACxC,oBAAA,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc;AACrC,oBAAA,UAAU,EAAE,KAAK;AACjB,iBAAA,CAAC;gBACF;;AAGD,YAAA,IAAI,OAAO;gBACV,IAAI,CAAC,sCAAsC,CAAC,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,mBAAmB,CAAC;YAC7G,IAAI,CAAC,sCAAsC,CAAC,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,mBAAmB,CAAC;AAC7G,SAAC,CAAC;;AAEJ;;;;;;AAMG;IACK,4BAA4B,CACnC,OAAuC,EACvC,QAA6C,EAC7C,kBAA4B,EAC5B,MAAmB,EACnB,0BAAA,GAAuC,EAAE,EAAA;AAEzC,QAAA,IAAI,QAAQ;YAAE,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AACvF,QAAA,IAAI,OAAO,IAAI,0BAA0B,CAAC,MAAM,GAAG,CAAC;AACnD,YAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,0BAA0B,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAEnF,MAAM,IAAI,GAAGC,iBAAyB,CACrC,OAAO,IAAI,EAAE,EACb,QAAQ,IAAI;AACX,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,gBAAgB,EAAE,IAAI;SACtB,EACD,MAAM,CACN;QACD,IAAI,IAAI,EAAE;AACT,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;;;AAItC;;;;;;AAMG;IACK,4BAA4B,CACnC,OAAuC,EACvC,QAA6C,EAC7C,kBAA4B,EAC5B,MAAmB,EACnB,0BAAA,GAAuC,EAAE,EAAA;AAEzC,QAAA,IAAI,QAAQ;YAAE,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AACvF,QAAA,IAAI,OAAO,IAAI,0BAA0B,CAAC,MAAM,GAAG,CAAC;AACnD,YAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,0BAA0B,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAEnF,MAAM,IAAI,GAAGC,iBAAyB,CACrC,OAAO,IAAI,EAAE,EACb,QAAQ,IAAI;AACX,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,gBAAgB,EAAE,IAAI;SACtB,EACD,MAAM,CACN;QACD,IAAI,IAAI,EAAE;AACT,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;;;AAItC;;;;;;AAMG;AACK,IAAA,uBAAuB,CAC9B,IAAsB,EACtB,QAAiC,EACjC,MAAmB,EACnB,QAA0B,EAAA;;QAG1B,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;;AAEvF,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAACA,iBAAyB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;;AAG/E,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAACD,iBAAyB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;;AAG/E,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAACE,kBAA0B,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;;;aAG3F,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE;;YAE5F,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAACD,iBAAyB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;;AAGrG,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAACC,kBAA0B,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;;AAGzE,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAACC,kBAA0B,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;;;aAGrE;;AAEJ,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAACF,iBAAyB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC/E,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAACD,iBAAyB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;;AAG/E,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAACE,kBAA0B,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzE,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAACC,kBAA0B,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;;;AAI3E;;;;;AAKG;IACK,oBAAoB,CAC3B,MAAmB,EACnB,iBAAgC,EAChC,QAAkC,EAClC,eAAkC,EAClC,aAAA,GAAyB,KAAK,EAAA;AAE9B,QAAA,IAAI,IAAqB;AACzB,QAAA,IAAI,IAAa;;QAGjB,MAAM,aAAa,GAAG,eAAe,EAAE,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,CAAC;QAC5G,IAAI,aAAa,EAAE;YAClB,QAAQ,iBAAiB;gBACxB,KAAK,MAAM,CAAC,0BAA0B;oBACrC,IAAI,GAAGC,4BAAoC,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,CAAC;oBACjF,IAAI,GAAGC,4BAAoC,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,CAAC;;;AAIjF,oBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AACnD,wBAAA,IAAI,aAAa;AAAE,4BAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;6BACzC;AACJ,4BAAA,MAAM,UAAU,GAAGD,4BAAoC,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC;AACpF,4BAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;;;oBAGnC;gBACD,KAAK,MAAM,CAAC,oCAAoC;oBAC/C,IAAI,GAAGE,gCAAwC,CAAC,MAAM,EAAE,aAAa,CAAC;oBACtE;AACD,gBAAA;oBACC,IAAI,GAAG,EAAE;oBACT;;;;;YAKF,IAAI,GAAGL,iBAAyB,CAC/B,EAAE,EACF,QAAQ,IAAI;AACX,gBAAA,aAAa,EAAE,IAAI;AACnB,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,gBAAgB,EAAE,IAAI;aACtB,EACD,MAAM,CACN;AACF,QAAA,IAAI,IAAI;AAAE,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG9C,QAAA,IAAI,CAAC,IAAI;YACR,IAAI,GAAGD,iBAAyB,CAC/B,EAAE,EACF,QAAQ,IAAI;AACX,gBAAA,aAAa,EAAE,IAAI;AACnB,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,gBAAgB,EAAE,IAAI;aACtB,EACD,MAAM,CACN;AAEF,QAAA,IAAI,IAAI;AAAE,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG/C;;;;;AAKG;AACK,IAAA,sCAAsC,CAC7C,MAAmB,EACnB,eAAiC,EACjC,aAAsC,EACtC,mBAA0D,EAAA;QAE1D,MAAM,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAChE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,EACvD,aAAa,EACb,mBAAmB,CACnB;AAED,QAAA,MAAM,IAAI,GAAGO,sBAA8B,CAAC,mBAAmB,EAAE,MAAM,EAAE,MAAM,CAAC;AAChF,QAAA,IAAI,IAAI;AAAE,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG/C;;;;;AAKG;AACK,IAAA,sCAAsC,CAC7C,MAAmB,EACnB,eAAiC,EACjC,aAAsC,EACtC,mBAA0D,EAAA;QAE1D,MAAM,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAChE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,EACvD,aAAa,EACb,mBAAmB,CACnB;AAED,QAAA,MAAM,IAAI,GAAGC,sBAA8B,CAAC,mBAAmB,EAAE,MAAM,EAAE,MAAM,CAAC;AAChF,QAAA,IAAI,IAAI;AAAE,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG/C;;AAEG;IACH,WAAW,GAAA;QACV,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE;QAC7D,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE;QAC7D,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE;QAC/D,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE;QAC/D,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE;QACjE,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE;;wGA5iBtD,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAnB,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAApB,oBAAoB,EAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC;;;MCPY,yBAAyB,CAAA;AAE5B,IAAA,cAAA;AACA,IAAA,aAAA;AACA,IAAA,QAAA;AACA,IAAA,WAAA;AAJT,IAAA,WAAA,CACS,cAAiC,EACjC,aAA0C,EAC1C,QAAuC,EACvC,WAAiC,EAAA;QAHjC,IAAc,CAAA,cAAA,GAAd,cAAc;QACd,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAW,CAAA,WAAA,GAAX,WAAW;;AAGpB,IAAA,IAAc,KAAK,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,aAAa;;AAGjD;;;;;;;AAOG;IACH,QAAQ,GAAA;QACP,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,aAAa;AACnE,QAAA,MAAM,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC,WAAW;QAC/C,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,cAAc;QAEhE;AACE,aAAA,IAAI,CACJ,cAAc,CAAC,eAAe,CAAC,EAC/B,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,QAAQ,CAAC,QAAQ,KAAK,YAAY,IAAI,QAAQ,CAAC,UAAU,CAAC,EACnF,YAAY,CAAC,IAAI,CAAC;AAElB,aAAA,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAI;YACxB,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAoB,CAAC;AACrE,SAAC,CAAC;QAEH;AACE,aAAA,IAAI,CACJ,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,CAAC,SAAS,CAAC,EACrD,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAClB,cAAc,CAAC,eAAe,EAAE,kBAAkB,EAAE,eAAe,CAAC,EACpE,MAAM,CAAC,CAAC,KAAK,OAAO,EAAE,QAAQ,CAAC,KAAK,QAAQ,CAAC,UAAU,IAAI,CAAC,CAAC,OAAO,CAAC,EACrE,YAAY,CAAC,IAAI,CAAC;aAElB,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,KAAI;YACvC,IAAI,IAAI,IAAI,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE;AACvC,gBAAA,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAgC,CAAC;AAC5G,gBAAA,MAAM,CAAC,KAAK,CAAC,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC;AACxE,gBAAA,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC;AACvD,gBAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;;iBAC5B;AACN,gBAAA,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;;AAEjC,SAAC,CAAC;QAEH;AACE,aAAA,IAAI,CACJ,cAAc,CAAC,eAAe,EAAE,kBAAkB,EAAE,eAAe,CAAC,EACpE,MAAM,CAAC,CAAC,KAAK,OAAO,EAAE,QAAQ,CAAC,KAAK,QAAQ,CAAC,UAAU,IAAI,CAAC,CAAC,OAAO,CAAC,EACrE,YAAY,CAAC,IAAI,CAAC;aAElB,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,KAAI;YACxC,IAAI,KAAK,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,EAAE;AAClD,gBAAA,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAgC,CAAC;AACvG,gBAAA,MAAM,CAAC,KAAK,CAAC,GAAG,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC;AACnE,gBAAA,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC;AACvD,gBAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;;iBAC5B;AACN,gBAAA,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;;AAEjC,SAAC,CAAC;;AAGJ;;;AAGG;AACO,IAAA,YAAY,CAAC,IAAS,EAAA;AAC/B,QAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC;;AAGhD;;;AAGG;AACO,IAAA,sBAAsB,CAAC,KAAa,EAAA;QAC7C,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAsB,CAAC;;AAGvE,IAAA,WAAW;wGAxFC,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAL,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAyB,2BAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAzB,yBAAyB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE,KAAK;AACjB,iBAAA;;;MCCY,0BAA0B,CAAA;AAE7B,IAAA,cAAA;AACA,IAAA,aAAA;AACA,IAAA,QAAA;AACA,IAAA,WAAA;AAJT,IAAA,WAAA,CACS,cAAiC,EACjC,aAA0C,EAC1C,QAAuC,EACvC,WAAiC,EAAA;QAHjC,IAAc,CAAA,cAAA,GAAd,cAAc;QACd,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAW,CAAA,WAAA,GAAX,WAAW;;AAGpB,IAAA,IAAc,KAAK,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,aAAa;;AAGjD;;;;;;AAMG;IACH,QAAQ,GAAA;QACP,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,aAAa;AAC3D,QAAA,MAAM,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAAC,WAAW;QAChD,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,cAAc;QAEhE;AACE,aAAA,IAAI,CACJ,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,KAAK,QAAQ,IAAI,EAAE,CAAC,SAAS,CAAC,EACpD,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAClB,cAAc,CAAC,eAAe,EAAE,mBAAmB,EAAE,eAAe,CAAC,EACrE,MAAM,CAAC,CAAC,KAAK,OAAO,EAAE,QAAQ,CAAC,KAAK,QAAQ,CAAC,UAAU,IAAI,CAAC,CAAC,OAAO,CAAC,EACrE,YAAY,CAAC,IAAI,CAAC;aAElB,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,KAAI;YACvC,IAAI,IAAI,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,EAAE;AACjD,gBAAA,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAgC,CAAC;AAC5G,gBAAA,MAAM,CAAC,KAAK,CAAC,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC;AACvE,gBAAA,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC;AACvD,gBAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;;iBAC5B;AACN,gBAAA,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;;AAEjC,SAAC,CAAC;QAEH;aACE,IAAI,CACJ,cAAc,CAAC,eAAe,EAAE,mBAAmB,EAAE,eAAe,CAAC,EACrE,MAAM,CAAC,CAAC,KAAK,OAAO,EAAE,QAAQ,CAAC,KAAK,QAAQ,CAAC,UAAU,IAAI,CAAC,CAAC,OAAO,CAAC,EACrE,MAAM,CACL,CAAC,GAAG,OAAO,IAAI,KACd,OAAO,IAAI,SAAS;AACpB,YAAA,OAAO,IAAI,IAAI;YACf,OAAO,CAAC,MAAM,IAAI,IAAI;YACtB,OAAO,CAAC,MAAM,IAAI,SAAS;AAC3B,YAAA,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAC5B,EACD,YAAY,CAAC,IAAI,CAAC;aAElB,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,KAAI;YACxC,IAAI,KAAK,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,EAAE;AAClD,gBAAA,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAgC,CAAC;AACvG,gBAAA,MAAM,CAAC,KAAK,CAAC,GAAG,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC;AAClE,gBAAA,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC;AACvD,gBAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;;iBAC5B;AACN,gBAAA,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;;AAEjC,SAAC,CAAC;;AAGJ;;;AAGG;AACO,IAAA,YAAY,CAAC,IAAS,EAAA;AAC/B,QAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC;;AAGhD;;;AAGG;AACO,IAAA,sBAAsB,CAAC,KAAa,EAAA;QAC7C,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAsB,CAAC;;AAGvE,IAAA,WAAW;wGArFC,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA1B,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAyB,2BAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA1B,0BAA0B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAJtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,UAAU,EAAE,KAAK;AACjB,iBAAA;;;MCGY,yBAAyB,CAAA;AAU5B,IAAA,aAAA;AACA,IAAA,YAAA;AACA,IAAA,QAAA;AAVD,IAAA,QAAQ;AACR,IAAA,OAAO;AAEP,IAAA,YAAY,GAAG,IAAI,OAAO,EAAE;AAEpB,IAAA,IAAI;AAEpB,IAAA,WAAA,CACS,aAA0C,EAC1C,YAA+B,EAC/B,QAA2B,EAAA;QAF3B,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAQ,CAAA,QAAA,GAAR,QAAQ;;IAGjB,kBAAkB,GAAA;AACjB,QAAA,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,aAAa;AAChF,QAAA,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,QAAQ;QACzC,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,YAAY;AAC9D,QAAA,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;QAC7G;aACE,IAAI,CACJ,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,CAAC,SAAS,CAAC,EACrD,cAAc,CAAC,eAAe,EAAE,eAAe,EAAE,eAAe,CAAC,EACjE,MAAM,CAAC,CAAC,OAAO,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAClD,YAAY,CAAC,IAAI,CAAC,EAClB,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC;AAE5B,aAAA,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,KAAI;YAC1C,IAAI,IAAI,IAAI,MAAM,IAAI,OAAO,EAAE,MAAM,EAAE;AACtC,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC;;AAElE,SAAC,CAAC;QAEH;AACE,aAAA,IAAI,CACJ,cAAc,CAAC,eAAe,CAAC,EAC/B,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,QAAQ,CAAC,QAAQ,KAAK,YAAY,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EACpF,YAAY,CAAC,IAAI,CAAC,EAClB,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC;AAE5B,aAAA,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAEpD;aACE,IAAI,CACJ,cAAc,CAAC,eAAe,EAAE,eAAe,EAAE,eAAe,CAAC,EACjE,MAAM,CAAC,CAAC,OAAO,QAAQ,CAAC,KAAK,QAAQ,CAAC,UAAU,CAAC,EACjD,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;aAE3D,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,KAAI;AACvC,YAAA,IAAI,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE,MAAM;AAAE,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC;AACnG,YAAA,IAAI,CAAC,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE,MAAM;AACtC,gBAAA,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AACzF,SAAC,CAAC;;AAEJ;;;;AAIG;AACH,IAAA,eAAe,CAAC,KAAY,EAAE,MAAmB,EAAE,OAA8B,EAAE,WAAwB,EAAA;QAC1G,MAAM,GAAG,KAAK,CAAC,GAAGC,mBAA2B,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC;AAC5F,QAAA,MAAM,IAAI,GAAGC,kBAA0B,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;QAC/E,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACnC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC;YACnE,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE;gBACxC;;AAED,YAAA,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;;aACjF;AACN,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;gBAClD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC;gBACnE,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE;oBACxC;;AAED,gBAAA,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AACxF,aAAC,CAAC;AACF,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI;;;AAG9B;;;AAGG;AACH,IAAA,UAAU,CAAC,OAAgB,EAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE;YACvC,UAAU,CAAC,MAAK;gBACf,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;AAC1C,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC1F,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AACxG,aAAC,CAAC;;aACI;YACN,UAAU,CAAC,MAAK;gBACf,MAAM,IAAI,GAAG;AACZ,sBAAEtB,qBAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;AACnF,sBAAEC,qBAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;gBACrF,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE;oBACnC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC9F,oBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AAClD,wBAAA,MAAM,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI;AAC/D,wBAAA,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AACvF,qBAAC,CAAC;AACF,oBAAA,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI;;AAE9B,aAAC,CAAC;;;AAIJ;;;AAGG;AACH,IAAA,oBAAoB,CAAC,OAAgB,EAAA;AACpC,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YACjB,OAAO,OAAO,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK;;aACrF;AACN,YAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;;;IAIjC,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;;wGA1HjB,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,2BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAwB,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,oIACpB,oBAAoB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FADzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE,KAAK;AACjB,iBAAA;uJAGQ,QAAQ,EAAA,CAAA;sBADf,eAAe;uBAAC,oBAAoB;gBAMrB,IAAI,EAAA,CAAA;sBAAnB;;;MCRW,0BAA0B,CAAA;AAKlB,IAAA,aAAA;AAAoD,IAAA,YAAA;AAJxD,IAAA,IAAI;AAEZ,IAAA,YAAY,GAAG,IAAI,OAAO,EAAE;IAEpC,WAAoB,CAAA,aAA0C,EAAU,YAA+B,EAAA;QAAnF,IAAa,CAAA,aAAA,GAAb,aAAa;QAAuC,IAAY,CAAA,YAAA,GAAZ,YAAY;;AAG5E,IAAA,QAAQ;AAEhB;;;;;AAKG;AACH,IAAA,eAAe,CAAC,KAAY,EAAE,OAA8B,EAAE,WAAwB,EAAA;QACrF,UAAU,CAAC,MAAK;YACf,MAAM,GAAG,KAAK,CAAC,GAAGF,mBAA2B,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC;AAC3F,YAAA,MAAM,IAAI,GAAGC,kBAA0B,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;YAChF,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACnC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC;gBACnE,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE;oBACxC;;AAED,gBAAA,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;;iBAClF;AACN,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;oBAClD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC;oBACnE,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE;wBACxC;;AAED,oBAAA,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AACzF,iBAAC,CAAC;AACF,gBAAA,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI;;AAE9B,SAAC,CAAC;;AAGH;;;AAGG;IACH,kBAAkB,GAAA;QACjB,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,YAAY;QAC9D,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,aAAa;QAC3D;AACE,aAAA,IAAI,CACJ,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,KAAK,QAAQ,IAAI,EAAE,CAAC,SAAS,CAAC,EACpD,cAAc,CAAC,eAAe,CAAC,EAC/B,YAAY,CAAC,IAAI,CAAC,EAClB,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC;aAE5B,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,KAAI;AAClC,YAAA,IAAI,IAAI,IAAI,OAAO,EAAE,MAAM,EAAE;AAC5B,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC;;AAE1D,SAAC,CAAC;QAEH;aACE,IAAI,CACJ,cAAc,CAAC,eAAe,EAAE,eAAe,CAAC,EAChD,MAAM,CAAC,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,UAAU,CAAC,EAC/C,MAAM,CACL,CAAC,GAAG,OAAO,CAAC,KACX,OAAO,IAAI,IAAI,IAAI,OAAO,IAAI,SAAS,IAAI,OAAO,CAAC,MAAM,IAAI,SAAS,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CACrG;aAED,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,KAAI;AAC/B,YAAA,IAAI,KAAK,IAAI,OAAO,EAAE,MAAM;gBAAE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC;AACjF,YAAA,IAAI,CAAC,KAAK,IAAI,OAAO,EAAE,MAAM;AAC5B,gBAAA,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC1F,SAAC,CAAC;;IAGJ,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;;wGA7EjB,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAxB,2BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,qIAOrB,oBAAoB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAPzB,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAJtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,UAAU,EAAE,KAAK;AACjB,iBAAA;0HAEgB,IAAI,EAAA,CAAA;sBAAnB;gBAOO,QAAQ,EAAA,CAAA;sBADf,eAAe;uBAAC,oBAAoB;;;MCjBzB,aAAa,CAAA;AACzB,IAAA,SAAS,CAAC,KAAa,EAAA;AACtB,QAAA,OAAO,SAAS,CAAC,KAAK,CAAC;;wGAFZ,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAAb,aAAa,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAJzB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACL,oBAAA,IAAI,EAAE,WAAW;AACjB,oBAAA,UAAU,EAAE,KAAK;AACjB,iBAAA;;;MCIY,wBAAwB,CAAA;AAC3B,IAAA,WAAW;IACX,UAAU,GAAY,KAAK;AACpC,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;wGALI,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,mJCTrC,s+CAwCA,EAAA,MAAA,EAAA,CAAA,0jEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA4B,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6NAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,oFAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA4B,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FD/Ba,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,cAGpB,KAAK,EAAA,QAAA,EAAA,s+CAAA,EAAA,MAAA,EAAA,CAAA,0jEAAA,CAAA,EAAA;wDAGR,WAAW,EAAA,CAAA;sBAAnB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;;;MELW,YAAY,CAAA;AACxB,IAAA,SAAS,CAAC,QAAgB,EAAA;AACzB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;;AAG7B,IAAA,cAAc,CAAC,QAAgB,EAAA;;QAEtC,IAAI,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;;QAGtD,eAAe,GAAG,eAAe,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC;;AAGvE,QAAA,eAAe,GAAG,eAAe,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAE3D,QAAA,OAAO,eAAe;;wGAfX,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAAZ,YAAY,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACL,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,UAAU,EAAE,KAAK;AACjB,iBAAA;;;MCwDY,+BAA+B,CAAA;AA4XlC,IAAA,SAAA;AACA,IAAA,IAAA;AACA,IAAA,iBAAA;AACD,IAAA,OAAA;AACC,IAAA,GAAA;AA9XT,IAAA,YAAY;AAGZ,IAAA,WAAW,CAAC,KAAiB,EAAA;QAC5B,IAAI,KAAK,CAAC,QAAQ;AAAE,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;;AACzC,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;;AAGjC;;;AAGG;AAEH,IAAA,cAAc,CAAC,KAAmB,EAAA;AACjC,QAAA,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK;AAC9B,QAAA,IAAI,MAAM,KAAK,IAAI,CAAC,YAAY,EAAE;YACjC;;AAED,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAwB,CAAC;;AAGR,IAAA,aAAa;AAEf,IAAA,WAAW;AAExD;;;;;;;;AAQG;AACM,IAAA,UAAU;AAEnB;;;;;;;;AAQG;IACM,mBAAmB,GAAY,KAAK;AAE7C;;;;;;;;AAQG;AACM,IAAA,YAAY;AAErB;;;;AAIG;AACM,IAAA,QAAQ;AAEjB;;;;;;;;AAQG;AACM,IAAA,kBAAkB;AAE3B;;;;;AAKG;AACM,IAAA,UAAU;AAEnB;;;;;AAKG;AACM,IAAA,UAAU;AAEnB;;AAEG;AACM,IAAA,kBAAkB;AAE3B;;AAEG;AACM,IAAA,kBAAkB;AAE3B;;AAEG;IACM,kBAAkB,GAAG,KAAK;AAEnC;;AAEG;IACM,aAAa,GAAG,KAAK;AAE9B;;AAEG;AACM,IAAA,QAAQ;AAEjB;;AAEG;IACM,gBAAgB,GAA+B,KAAK;AAE7D;;AAEG;AACM,IAAA,gBAAgB;AAEzB;;;;;;;;;;;;;AAaG;IACM,WAAW,GAAW,CAAC;AAEhC;;AAEG;IACM,WAAW,GAAW,CAAC;AAEhC;;;;;;;;;;;;AAYG;IACM,QAAQ,GAAa,aAAa;AAE3C;;;;;;;;;;;;;AAaG;IACM,YAAY,GAAiB,UAAU;AAEhD;;;;;;;;;;;;AAYG;AACM,IAAA,gBAAgB,GAA0B,qBAAqB,CAAC,OAAO;AAEhF;;AAEG;IACM,eAAe,GAAG,IAAI;AAE/B;;AAEG;IACM,gBAAgB,GAAG,KAAK;AAEjC;;AAEG;IACM,cAAc,GAAY,KAAK;AAExC;;AAEG;IACM,gBAAgB,GAAG,KAAK;AAEjC;;AAEG;IACM,qBAAqB,GAAG,IAAI;AAE5B,IAAA,WAAW;AAEpB;;AAEG;AACM,IAAA,OAAO;AAEhB;;AAEG;AACM,IAAA,kBAAkB;AAE3B;;AAEG;AACM,IAAA,gBAAgB;AAEzB;;AAEG;AACM,IAAA,qBAAqB;AAW9B;;AAEG;IACM,yBAAyB,GAAW,qBAAqB;AAElE;;AAEG;IACM,qBAAqB,GAAY,KAAK;AAE/C;;AAEG;IACM,0BAA0B,GAAG,KAAK;AAE3C;;AAEG;IACM,sBAAsB,GAAG,KAAK;AAEvC;;;;;;;;;;;;AAYG;AACO,IAAA,kBAAkB,GAAG,IAAI,YAAY,EAAoB;AAEnE;;AAEG;AACO,IAAA,yBAAyB,GAAG,IAAI,YAAY,EAAiC;AAEvF;;;;;;;;;;;;AAYG;AACO,IAAA,eAAe,GAAG,IAAI,YAAY,EAAoB;AAEhE;;;;;AAKG;AACO,IAAA,gBAAgB,GAAsB,IAAI,YAAY,EAAO;AAEvE;;;;;AAKG;AACO,IAAA,kBAAkB,GAA0B,IAAI,YAAY,EAAW;IAEjF,UAAU,GAAY,KAAK;IAC3B,cAAc,GAAkB,IAAI;IACpC,YAAY,GAAkB,IAAI;AAElC,IAAA,0BAA0B;AAC1B,IAAA,cAAc;AAEd,IAAA,cAAc;AACd,IAAA,YAAY;IAEZ,aAAa,GAAW,CAAC;IACzB,aAAa,GAAuB,SAAS;AAE7C,IAAA,WAAW;IAEX,MAAM,GAAG,MAAM;IACf,eAAe,GAAG,eAAe;AACjC,IAAA,kCAAkC,GAAG,SAAS,CAAA,CAAA,kBAAA,CAAoB;AAClE,IAAA,kCAAkC,GAAG,SAAS,CAAA,CAAA,kBAAA,CAAoB;AAClE,IAAA,uBAAuB,GAAG,SAAS,CAAA,CAAA,OAAA,CAAS;AAC5C,IAAA,wBAAwB,GAAG,SAAS,CAAA,CAAA,QAAA,CAAU;IAE9C,WAAW,GAAW,8BAA8B;AACpD,IAAA,cAAc;AAEd,IAAA,IAAI,KAAK,GAAA;QACR,IAAI,IAAI,CAAC,UAAU;AAAE,YAAA,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa;AACvF,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa;AAEnF,QAAA,OAAO,EAAE;;IAGV,YAAY,CAAgB;AAE5B,IAAA,SAAS,GAAG,SAAS,CAAC;IACtB,qBAAqB,GAAG,qBAAqB;IAC7C,aAAa,GAAG,aAAa;AAE7B,IAAA,gBAAgB;IAEhB,wBAAwB,GAAG,IAAI;AAE/B,IAAA,2BAA2B,GAAG,SAAS,CAAA,CAAA,2BAAA,CAA6B;AACpE,IAAA,iBAAiB,GAAG,SAAS,CAAA,CAAA,iEAAA,CAAmE;AAChG,IAAA,sBAAsB,GAAG,SAAS,CAAA,CAAA,gBAAA,CAAkB;AACpD,IAAA,sBAAsB,GAAG,SAAS,CAAA,CAAA,oBAAA,CAAsB;IAExD,YAAY,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;IAClC,WAAW,GAAG,KAAK;IAEnB,kCAAkC,GAAa,EAAE;AAEjD,IAAA,YAAY;AAEJ,IAAA,OAAO;IAEf,WACS,CAAA,SAAoB,EACpB,IAAuB,EACvB,iBAA8C,EAC/C,OAA0B,EACzB,GAAe,EAAA;QAJf,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAI,CAAA,IAAA,GAAJ,IAAI;QACJ,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QAClB,IAAO,CAAA,OAAA,GAAP,OAAO;QACN,IAAG,CAAA,GAAA,GAAH,GAAG;;IAGZ,QAAQ,GAAA;QACP,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI;AAAE,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ;AAE5F,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;AAC9B,YAAA,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,IAAG;AACnF,gBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,YAAY;AAAE,oBAAA,IAAI,CAAC,gBAAgB,GAAG,OAAO;AACpE,aAAC,CAAC;AACF,YAAA,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;AACxE,gBAAA,IAAI,CAAC,YAAY,GAAG,GAAG;AACxB,aAAC,CAAC;;aACI;YACN,IAAI,CAAC,yBAAyB,EAAE;;QAGjC,IAAI,CAAC,iBAAiB,CAAC;aACrB,IAAI,CACJ,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,YAAY,CAAC,EACnD,YAAY,CAAC,IAAI,CAAC;aAElB,SAAS,CAAC,KAAK,IAAG;AAClB,YAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3C,SAAC,CAAC;;IAGJ,eAAe,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;;AAErB,YAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC;;QAG3F,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE,gBAAgB,CAClD,MAAM,EACN,MAAK;AACJ,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE;gBACrB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa;AACpE,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,gBAAA,IAAI,CAAC,eAAe,GAAG,KAAK;;SAE7B,EACD,KAAK,CACL;AAED,QAAA,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAClG,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC/B,YAAA,QAAQ,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,MAAK;AACjD,gBAAA,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE;gBACvC,IAAI,SAAS,IAAI,SAAS,CAAC,UAAU,GAAG,CAAC,EAAE;oBAC1C,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;oBACrC,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,EAAE;wBAC1G,IAAI,CAAC,sBAAsB,EAAE;;yBACvB,IACN,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,uBAAuB,CAAC;AAC9D,wBAAA,IAAI,CAAC,gBAAgB,KAAK,qBAAqB,CAAC,MAAM,EACrD;AACD,wBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;;;;oBAE5B,IAAI,CAAC,sBAAsB,EAAE;AACrC,aAAC,CAAC;AAEF,YAAA,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,IAAG;gBAC1C,UAAU,CAAC,MAAK;AACf,oBAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;iBAClC,EAAE,GAAG,CAAC;AACR,aAAC,CAAC;;AAGF,YAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,gBAAgB,CAAC,MAAK;;AAE3D,gBAAA,IAAI,CAAC,0BAA0B,EAAE,UAAU,EAAE;;gBAG7C,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE;AACxE,oBAAA,SAAS,EAAE,IAAI;AACf,oBAAA,OAAO,EAAE,IAAI;AACb,oBAAA,aAAa,EAAE,IAAI;AACnB,iBAAA,CAAC;AACH,aAAC,CAAC;YAEF,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE;AACxE,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,aAAa,EAAE,IAAI;AACnB,aAAA,CAAC;;YAGF,IAAI,IAAI,CAAC,qBAAqB;gBAC7B,UAAU,CAAC,MAAK;AACf,oBAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,IAAG;wBACtE,IAAI,WAAW,CAAC,QAAQ;4BAAE;AAC1B,wBAAA,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC;AAC3C,qBAAC,CAAC;iBACF,EAAE,IAAI,CAAC;;;AAIX,IAAA,WAAW,CAAC,OAAsB,EAAA;AACjC,QAAA,IACC,CAAC,CAAC,oBAAoB,IAAI,OAAO,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC,YAAY,IAAI,SAAS;AAC3F,aAAC,uBAAuB,IAAI,OAAO,IAAI,OAAO,CAAC,uBAAuB,CAAC,CAAC,YAAY,IAAI,SAAS,CAAC;aAClG,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAClC;AACD,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK;AAC5B,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,UAAU,IAAI,IAAI,CAAC,YAAY,KAAK,UAAU;gBACjG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;;AAG1F,QAAA,IAAI,cAAc,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,WAAW;AAC7G,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;QAE1B,IAAI,IAAI,CAAC,qBAAqB,IAAI,uBAAuB,IAAI,OAAO,EAAE;;YAErE,IAAI,IAAI,CAAC,qBAAqB;gBAC7B,UAAU,CAAC,MAAK;AACf,oBAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,IAAG;wBACtE,IAAI,WAAW,CAAC,QAAQ;4BAAE;AAC1B,wBAAA,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC;AAC3C,qBAAC,CAAC;iBACF,EAAE,IAAI,CAAC;;QAEV,IACC,YAAY,IAAI,OAAO;AACvB,YAAA,cAAc,IAAI,OAAO;AACzB,YAAA,YAAY,IAAI,OAAO;AACvB,YAAA,oBAAoB,IAAI,OAAO;YAC/B,YAAY,IAAI,OAAO,EACtB;AACD,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,KAAK,UAAU,GAAG,uBAAuB,GAAG,sBAAsB;YAEzG,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,IAAI,CAAC,YAAY,KAAK,UAAU,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE;AAC9F,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;AAC1D,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;gBAC7E,IACC,IAAI,CAAC,qBAAqB;AAC1B,qBAAC,CAAC,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,qBAAqB,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC;oBAExF,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,CAAC;;AAGnF,YAAA,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE;AACzD,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;;YAGrF,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjD,IACC,IAAI,CAAC,kBAAkB;AACvB,oBAAA,OAAO,CAAC,oBAAoB,CAAC,EAAE,aAAa,IAAI,OAAO,CAAC,oBAAoB,CAAC,EAAE,YAAY,EAC1F;AACD,oBAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,oBAAA,IAAI,CAAC,UAAU,GAAG,KAAK;;AAGxB,gBAAA,IAAI,IAAI,CAAC,YAAY,KAAK,UAAU,IAAI,IAAI,CAAC,YAAY,KAAK,QAAQ,EAAE;AACvE,oBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC;AACnG,oBAAA,IAAI,WAAW,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC3C,wBAAA,IAAI,CAAC,WAAW,GAAG,WAAW;AAC9B,wBAAA,IAAI,CAAC,UAAU,GAAG,IAAI;;;AAIxB,gBAAA,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE;oBACpC,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC;AAC3G,oBAAA,IAAI,WAAW,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC3C,wBAAA,IAAI,CAAC,WAAW,GAAG,WAAW;AAC9B,wBAAA,IAAI,CAAC,UAAU,GAAG,IAAI;;;;;AAM1B,QAAA,IACC,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC,YAAY,KAAK,IAAI,CAAC,kBAAkB;YACzG,IAAI,CAAC,aAAa,EAAE,aAAa;AACjC,YAAA,IAAI,CAAC,UAAU;AACf,YAAA,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAC3B;YACD,UAAU,CAAC,MAAK;AACf,gBAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC;AAC1F,gBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACzB,gBAAA,IAAI,CAAC,eAAe,GAAG,IAAI;aAC3B,EAAE,GAAG,CAAC;;AACD,aAAA,IACN,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC,YAAY,KAAK,IAAI,CAAC,kBAAkB;YACzG,IAAI,CAAC,aAAa,EAAE,aAAa;AACjC,YAAA,IAAI,CAAC,UAAU;YACf,OAAO,CAAC,kBAAkB,CAAC;YAC3B,IAAI,CAAC,QAAQ,EACZ;YACD,UAAU,CAAC,MAAK;AACf,gBAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC;AAC1F,gBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACzB,gBAAA,IAAI,CAAC,eAAe,GAAG,IAAI;aAC3B,EAAE,GAAG,CAAC;;QAGR,IAAI,uBAAuB,IAAI,OAAO,IAAI,IAAI,CAAC,qBAAqB,EAAE;YACrE,IAAI,CAAC,qBAAqB,GAAG,kBAAkB,CAAC,IAAI,CAAC,qBAAqB,CAAC;;;IAI7E,YAAY,GAAA;QACX,IAAI,CAAC,IAAI,CAAC,YAAY;AAAE,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AACnD,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,KAAK,MAAM,CAAC,0BAA0B,EAAE;YAChF,IAAI,CAAC,iBAAiB,CAAC,yBAAyB,EAAE,OAAO,CAAC,MAAM,IAAG;AAClE,gBAAA,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,IAAI,CAAC;AACjD,oBAAA,WAAW,EAAE;AACZ,wBAAA,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK;AAC/B,wBAAA,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG;AAC3B,qBAAA;AACD,oBAAA,UAAU,EAAE,KAAK;AACjB,iBAAA,CAAC;AACH,aAAC,CAAC;YACF,IAAI,CAAC,iBAAiB,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1D,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;YACvD,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;;QAGzC,IAAI,IAAI,CAAC,YAAY,KAAK,UAAU,IAAI,IAAI,CAAC,YAAY,KAAK,QAAQ;AACrE,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACzB,gBAAA,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc;AAC9B,gBAAA,UAAU,EAAE,CAAC,IAAI,CAAC,UAAU;gBAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,eAAe,EAAE,IAAI,CAAC,WAAW;AACjC,aAAA,CAAC;;AAEF,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACzB,gBAAA,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc;AAC9B,gBAAA,UAAU,EAAE,CAAC,IAAI,CAAC,UAAU;gBAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,gBAAgB,EAAE,IAAI,CAAC,WAAW;AAClC,aAAA,CAAC;AACH,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;AAC9B,QAAA,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE;AACvC,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;;AAG1B,IAAA,sBAAsB,CAAC,SAAqC,EAAA;AAC3D,QAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS;AAEjC,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;;AAG1B;;;AAGG;IACH,OAAO,CAAC,SAAiB,mBAAmB,EAAA;QAC3C,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE;AACpC,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;YACpB,IAAI,CAAC,WAAW,EAAE;;;AACZ,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,MAAM,EAAE,aAAa,CAAC;AAE5E,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;;AAG1B;;;AAGG;IACH,MAAM,CAAC,SAAiB,mBAAmB,EAAA;QAC1C,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE;AACpC,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;YACnB,IAAI,CAAC,WAAW,EAAE;;;AACZ,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,MAAM,EAAE,aAAa,CAAC;AAE5E,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;;AAG1B,IAAA,iBAAiB,CAAC,KAAgB,EAAA;AACjC,QAAA,IAAI,CAAC,KAAK;YAAE;AAEZ,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,SAAS;QAElC,IAAI,IAAI,CAAC,YAAY,KAAK,UAAU,IAAI,IAAI,CAAC,YAAY,KAAK,QAAQ;AACrE,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACzB,gBAAA,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc;gBAC9B,eAAe,EAAE,IAAI,CAAC,WAAW;AACjC,aAAA,CAAC;;AAEF,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACzB,gBAAA,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc;gBAC9B,gBAAgB,EAAE,IAAI,CAAC,WAAW;AAClC,aAAA,CAAC;;AAGH,QAAA,IAAI,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,qBAAqB;YAC3D,UAAU,CAAC,MAAK;AACf,gBAAA,IAAI,CAAC,kCAAkC,GAAG,EAAE;gBAC5C,IAAI,CAAC,sBAAsB,EAAE;AAC7B,gBAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,IAAG;oBACtE,IAAI,WAAW,CAAC,QAAQ;wBAAE;AAC1B,oBAAA,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC;AAC3C,iBAAC,CAAC;AACH,aAAC,CAAC;;AAGJ;;;AAGG;IACH,sBAAsB,CAAC,OAAgB,IAAI,EAAA;AAC1C,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGlC,cAAc,GAAA;AACb,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGjC,sBAAsB,GAAA;QACrB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;;IAG7C,WAAW,GAAA;QAClB,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,WAAW,CACzD,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAe,EACnD,GAAG,CACH;;AAGF;;;AAGG;AACK,IAAA,aAAa,GAAG,CAAC,KAAiB,KAAU;AACnD,QAAA,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YAClE,KAAK,CAAC,cAAc,EAAE;;AAEtB,YAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,IAAI,CAAC,MAAM,EAAE;AAC9B,iBAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,IAAI,CAAC,OAAO,EAAE;;AAE3C,KAAC;AAED;;;AAGG;IACO,mBAAmB,CAAC,OAAuB,EAAE,YAAqB,EAAA;QAC3E,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,YAAY;AAAE,YAAA,OAAO,IAAI;QAErE,MAAM,IAAI,GAAGC,kBAA0B,CAAC,OAAO,EAAE,YAAY,CAAC;AAC9D,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,IAAI;QAEtB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAqB;AACrE,QAAA,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;AAClC,QAAA,MAAM,WAAW,GAAG,GAAG,CAAC,SAAS;QAEjC,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAsB;AACtE,QAAA,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc;AACpC,QAAA,IAAI,cAAc,GAAG,EAAE,CAAC,SAAS;AAEjC,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAsB;AAChF,YAAA,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC,kBAAkB;YAClD,cAAc;AACb,gBAAA,YAAY,CAAC,SAAS;AACtB,oBAAA,CAAA;;yGAEqG;;AAGvG,QAAA,OAAO,IAAI,GAAG,WAAW,GAAG,cAAc;;AAG3C,IAAA,sBAAsB,CAAC,KAAK,EAAA;QAC3B,IAAI,CAAC,IAAI,CAAC,qBAAqB;YAAE;QACjC,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;;AAGvB,QAAA,MAAM,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,oBAAoB,CAAC,EAAE,aAAa,CAAC,oBAAoB,CAAC;AAC1G,QAAA,IAAI,CAAC,gBAAgB;YAAE;AACvB,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE;AAExE,QAAA,MAAM,OAAO,GAAG,gBAAgB,CAAC,SAAS;AAC1C,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,OAAO;AAC9B,QAAA,MAAM,eAAe,GAAG;AACvB,YAAA,IAAI,EAAE,mBAAmB;AACzB,YAAA,EAAE,EAAE,IAAI,CAAC,wBAAwB,CAAC,EAAE;AACpC,YAAA,KAAK,EAAE,IAAI,CAAC,wBAAwB,CAAC,KAAK;AAC1C,YAAA,GAAG,EAAE,IAAI,CAAC,wBAAwB,CAAC,GAAG;AACtC,YAAA,IAAI,EAAE,IAAI,CAAC,wBAAwB,CAAC,YAAY;YAChD,SAAS,EAAE,GAAG,GAAG,IAAI;AACrB,YAAA,mBAAmB,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI;SACpC;AACD,QAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,eAAe,CAAC;;;IAIrD,qBAAqB,GAAA;AACpB,QAAA,OAAO,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;;;AAI/D,IAAA,kBAAkB,CAAC,KAAK,EAAA;AACvB,QAAA,IAAI,iBAAiB,GAAG,KAAK,CAAC,UAAU,EAAE;QAC1C,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC;QACrE,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,WAAW,CAAC;QACjE,IAAI,KAAK,GAAG,iBAAiB,CAAC,QAAQ,EAAE,CAAC,MAAM;AAE/C,QAAA,IAAI,YAAY,GAAG,KAAK,CAAC,QAAQ,EAAE;AACnC,QAAA,IAAI,CAAC,YAAY;YAAE;AACnB,QAAA,IAAI,GAAG,GAAG,KAAK,GAAG,YAAY,CAAC,MAAM;QAErC,OAAO;AACN,YAAA,EAAE,EAAE,IAAI,CAAC,qBAAqB,EAAE;AAChC,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,GAAG,EAAE,GAAG;AACR,YAAA,IAAI,EAAE,YAAY;YAClB,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,cAAc,EAAE,IAAI,CAAC,gBAAgB;SACrC;;;IAIF,iBAAiB,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE;AAClC,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC;;;AAIpF,YAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,wBAAwB,CAAC;AAC5D,YAAA,MAAM,CAAC,YAAY,EAAE,EAAE,eAAe,EAAE;;;;AAK1C,IAAA,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,KAAK,EAAA;QACnD,IAAI,CAAC,IAAI,CAAC,qBAAqB;YAAE;AACjC,QAAA,IAAI,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE;AAC/B,QAAA,IAAI,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,aAAa;QAC/C,IAAI,cAAc,EAAE,YAAY;AAChC,QAAA,IAAI,WAAW,GAAG,WAAW,CAAC,KAAK;AACnC,QAAA,IAAI,SAAS,GAAG,WAAW,CAAC,GAAG;QAC/B,IAAI,MAAM,GAAG,CAAC;AAEd,QAAA,SAAS,iBAAiB,CAAC,IAAI,EAAE,YAAY,EAAA;YAC5C,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE;gBACrC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,YAAY,EAAE;oBACzC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,EAAE;;AAErD,gBAAA,MAAM,IAAI,IAAI,CAAC,MAAM;;iBACf,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,EAAE;AAC/C,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChD,oBAAA,IAAI,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC;oBAChE,IAAI,MAAM,EAAE;AACX,wBAAA,OAAO,MAAM;;;;AAIhB,YAAA,OAAO,IAAI;;QAGZ,IAAI,aAAa,GAAG,iBAAiB,CAAC,SAAS,EAAE,WAAW,CAAC;AAC7D,QAAA,cAAc,GAAG,aAAa,CAAC,IAAI;AACnC,QAAA,WAAW,GAAG,aAAa,CAAC,MAAM;AAElC,QAAA,MAAM,GAAG,CAAC,CAAC;QACX,IAAI,WAAW,GAAG,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC;AACzD,QAAA,YAAY,GAAG,WAAW,CAAC,IAAI;AAC/B,QAAA,SAAS,GAAG,WAAW,CAAC,MAAM;;AAG9B,QAAA,IAAI,cAAc,IAAI,YAAY,EAAE;AACnC,YAAA,KAAK,CAAC,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC;AAC3C,YAAA,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC;;YAIrC,IAAI,SAAS,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,yBAAyB,EAAE;AACpF,gBAAA,cAAc,EAAE,MAAM;AACtB,gBAAA,iBAAiB,EAAE;oBAClB,SAAS,EAAE,IAAI,CAAC,yBAAyB;AACzC,iBAAA;gBACD,SAAS,EAAE,IAAI;AACf,aAAA,CAAC;YACF,IAAI,MAAM,EAAE;AACX,gBAAA,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC;;iBACtB;AACN,gBAAA,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC;gBAC7B,UAAU,CAAC,MAAK;AACf,oBAAA,IAAI,CAAC,yBAAyB,CAAC,WAAW,CAAC,EAAE,CAAC;AAC/C,iBAAC,CAAC;;;AAIH,YAAA,QAAQ,CAAC,gBAAgB,CAAC,GAAG,GAAG,IAAI,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,OAAO,IAAG;gBACjF,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;oBACrC,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,CAAC;;AAEjD,aAAC,CAAC;;;;AAKJ,IAAA,yBAAyB,CAAC,aAAa,EAAA;AACtC,QAAA,IAAI,IAAI,CAAC,kCAAkC,CAAC,QAAQ,CAAC,aAAa,CAAC;YAAE;AACrE,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,gBAAgB,CACzC,GAAG,GAAG,IAAI,CAAC,yBAAyB,GAAG,YAAY,GAAG,aAAa,GAAG,IAAI,CAC1E;AACD,QAAA,QAAQ,CAAC,OAAO,CAAC,OAAO,IAAG;AAC1B,YAAA,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,IAAG;AACzC,gBAAA,KAAK,CAAC,eAAe,EAAE,CAAC;gBACxB,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;AAC7F,gBAAA,MAAM,mBAAmB,GAAG,cAAc,CAAC,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,EAAE,KAAK,aAAa,CAAC;AAChG,gBAAA,IAAI,CAAC,mBAAmB;oBAAE;;gBAG1B,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC;gBACnD,IAAI,IAAI,EAAE;AACT,oBAAA,MAAM,gBAAgB,GAAG;AACxB,wBAAA,IAAI,EAAE,kBAAkB;AACxB,wBAAA,EAAE,EAAE,IAAI;AACR,wBAAA,KAAK,EAAE,IAAI;AACX,wBAAA,GAAG,EAAE,IAAI;AACT,wBAAA,IAAI,EAAE,IAAI;AACV,wBAAA,SAAS,EAAE,IAAI;qBACf;AACD,oBAAA,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC;AACpC,oBAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,gBAAgB,CAAC;oBACrD;;;AAID,gBAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;AAEjC,gBAAA,MAAM,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,oBAAoB,CAAC,EAAE,aAAa,CAAC,oBAAoB,CAAC;AAC1G,gBAAA,IAAI,CAAC,gBAAgB;oBAAE;AAEvB,gBAAA,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE;AAC5C,gBAAA,IAAI,OAAO,GAAG,gBAAgB,CAAC,SAAS;AAExC,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,OAAO;AAE9B,gBAAA,MAAM,gBAAgB,GAAG;AACxB,oBAAA,IAAI,EAAE,kBAAkB;oBACxB,EAAE,EAAE,mBAAmB,CAAC,EAAE;oBAC1B,KAAK,EAAE,mBAAmB,CAAC,KAAK;oBAChC,GAAG,EAAE,mBAAmB,CAAC,GAAG;oBAC5B,IAAI,EAAE,mBAAmB,CAAC,IAAI;oBAC9B,SAAS,EAAE,GAAG,GAAG,IAAI;AACrB,oBAAA,mBAAmB,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI;iBACpC;AACD,gBAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,gBAAgB,CAAC;AACrD,gBAAA,mBAAmB,CAAC,MAAM,GAAG,IAAI;AAClC,aAAC,CAAC;AACF,YAAA,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,aAAa,CAAC;AAC5D,SAAC,CAAC;;AAGH,IAAA,sBAAsB,CAAC,KAAiB,EAAA;QACvC,IAAI,CAAC,IAAI,CAAC,qBAAqB;YAAE;AACjC,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE;AAEvC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa;QAChD,MAAM,cAAc,GAAG,SAAS,CAAC,aAAa,CAAC,WAAW,EAAE;AAC5D,QAAA,cAAc,CAAC,kBAAkB,CAAC,SAAS,CAAC;QAE5C,IAAI,SAAS,IAAI,SAAS,CAAC,UAAU,GAAG,CAAC,EAAE;YAC1C,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;;YAGrC,IACC,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC,cAAc,EAAE,cAAc,CAAC,GAAG,CAAC;AACrE,gBAAA,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC,UAAU,EAAE,cAAc,CAAC,GAAG,CAAC,EAChE;gBACD,MAAM,QAAQ,GAAG,SAAS,CAAC,aAAa,CAAC,WAAW,EAAE;;AAGtD,gBAAA,IAAI,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC,cAAc,EAAE,cAAc,CAAC,GAAG,CAAC,EAAE;oBAC1E,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,EAAE,cAAc,CAAC,WAAW,CAAC;;qBACtE;oBACN,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,WAAW,CAAC;;;AAI3D,gBAAA,IAAI,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC,UAAU,EAAE,cAAc,CAAC,GAAG,CAAC,EAAE;oBACtE,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,cAAc,CAAC,SAAS,CAAC;;qBAChE;oBACN,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC;;;gBAIrD,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;AACtC,oBAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;oBAClC;;gBAGD,SAAS,CAAC,eAAe,EAAE;AAC3B,gBAAA,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;;;YAI7B,MAAM,aAAa,GAAG,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC;YAC/D,IAAI,aAAa,EAAE;AAClB,gBAAA,MAAM,cAAc,GAAG,QAAQ,CAAC,WAAW,EAAE;AAC7C,gBAAA,cAAc,CAAC,kBAAkB,CAAC,aAAa,CAAC;AAEhD,gBAAA,IAAI,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE;;AAExC,oBAAA,IAAI,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC,cAAc,EAAE,cAAc,CAAC,GAAG,CAAC,EAAE;AAC1E,wBAAA,KAAK,CAAC,YAAY,CAAC,aAAa,CAAC;;AAC3B,yBAAA,IAAI,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC,UAAU,EAAE,cAAc,CAAC,GAAG,CAAC,EAAE;AAC7E,wBAAA,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC;;;oBAInC,SAAS,CAAC,eAAe,EAAE;AAC3B,oBAAA,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;;;;QAI5B,IAAI,SAAS,IAAI,SAAS,CAAC,UAAU,GAAG,CAAC,EAAE;YAC1C,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;AACrC,YAAA,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;gBACrB,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,EAAE;AACxC,oBAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;oBAClC;;;AAID,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,GAAG;AAC5F,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,IAAI;AAC9F,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI;gBAEvB,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,qBAAqB,EAAE;;AAG/E,gBAAA,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,EAAE,GAAG,eAAe,CAAC,KAAK,EAAE;oBACxD,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,eAAe,CAAC,KAAK,GAAG,EAAE;;gBAGpD,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE;AAC/B,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC;;gBAG3B,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC,EAAE;AAC9B,oBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC;;gBAG1B,IAAI,CAAC,uBAAuB,EAAE;;iBACxB;gBACN,IAAI,CAAC,sBAAsB,EAAE;;;aAExB;YACN,IAAI,CAAC,sBAAsB,EAAE;;;IAI/B,sBAAsB,CAAC,SAAS,GAAG,IAAI,EAAA;QACtC,IAAI,CAAC,IAAI,CAAC,qBAAqB;YAAE;AACjC,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,QAAA,MAAM,eAAe,GAAG;AACvB,YAAA,IAAI,EAAE,mBAAmB;AACzB,YAAA,EAAE,EAAE,IAAI;AACR,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,mBAAmB,EAAE,IAAI;SACzB;AACD,QAAA,IAAI,SAAS;AAAE,YAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,eAAe,CAAC;;IAG5D,uBAAuB,GAAA;AAC9B,QAAA,IAAI,cAAc,GAAG,KAAK,CAAC,YAAY,EAAE;AACzC,QAAA,IAAI,cAAc,CAAC,UAAU,GAAG,CAAC,EAAE;YAClC,IAAI,KAAK,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;YACxC,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;;;AAIhE;;AAEG;IACK,yBAAyB,GAAA;AAChC,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,gBAAgB,CAAC,MAAK;AAC/C,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,qBAAqB,EAAE;AACjD,SAAC,CAAC;QAEF,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,EAAE;YACrD,eAAe,EAAE,CAAC,KAAK,CAAC;AACxB,SAAA,CAAC;;AAGH;;;AAGG;IACK,qBAAqB,GAAA;AAC5B,QAAA,OAAO,QAAQ,EAAE,eAAe,EAAE,YAAY,CAAC,KAAK,CAAC,KAAK,KAAK,GAAG,KAAK,GAAG,KAAK;;IAGhF,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,cAAc,EAAE,UAAU,EAAE;AACjC,QAAA,IAAI,CAAC,0BAA0B,EAAE,UAAU,EAAE;;wGAxjClC,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA5B,2BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA/B,+BAA+B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,wBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7D5C,6zsBA0iBA,EDrfa,MAAA,EAAA,CAAA,yknBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAyB,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6NAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,8NAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA8B,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,6BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,0BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,0BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAf,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAgB,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,UAAA,EAAA;YACX,OAAO,CAAC,QAAQ,EAAE;gBACjB,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AACpC,gBAAA,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;aACtE,CAAC;AACF,SAAA,EAAA,CAAA;;4FAGW,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAZ3C,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oCAAoC,EAGlC,UAAA,EAAA;wBACX,OAAO,CAAC,QAAQ,EAAE;4BACjB,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AACpC,4BAAA,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;yBACtE,CAAC;AACF,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,6zsBAAA,EAAA,MAAA,EAAA,CAAA,yknBAAA,CAAA,EAAA;2MAIjB,YAAY,EAAA,CAAA;sBADX,WAAW;uBAAC,iBAAiB;gBAI9B,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;gBAWjC,cAAc,EAAA,CAAA;sBADb,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;gBASK,aAAa,EAAA,CAAA;sBAA3D,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;gBAEA,WAAW,EAAA,CAAA;sBAAvD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,aAAa,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;gBAWlC,UAAU,EAAA,CAAA;sBAAlB;gBAWQ,mBAAmB,EAAA,CAAA;sBAA3B;gBAWQ,YAAY,EAAA,CAAA;sBAApB;gBAOQ,QAAQ,EAAA,CAAA;sBAAhB;gBAWQ,kBAAkB,EAAA,CAAA;sBAA1B;gBAQQ,UAAU,EAAA,CAAA;sBAAlB;gBAQQ,UAAU,EAAA,CAAA;sBAAlB;gBAKQ,kBAAkB,EAAA,CAAA;sBAA1B;gBAKQ,kBAAkB,EAAA,CAAA;sBAA1B;gBAKQ,kBAAkB,EAAA,CAAA;sBAA1B;gBAKQ,aAAa,EAAA,CAAA;sBAArB;gBAKQ,QAAQ,EAAA,CAAA;sBAAhB;gBAKQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAKQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAgBQ,WAAW,EAAA,CAAA;sBAAnB;gBAKQ,WAAW,EAAA,CAAA;sBAAnB;gBAeQ,QAAQ,EAAA,CAAA;sBAAhB;gBAgBQ,YAAY,EAAA,CAAA;sBAApB;gBAeQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAKQ,eAAe,EAAA,CAAA;sBAAvB;gBAKQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAKQ,cAAc,EAAA,CAAA;sBAAtB;gBAKQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAKQ,qBAAqB,EAAA,CAAA;sBAA7B;gBAEQ,WAAW,EAAA,CAAA;sBAAnB;gBAKQ,OAAO,EAAA,CAAA;sBAAf;gBAKQ,kBAAkB,EAAA,CAAA;sBAA1B;gBAKQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAKQ,qBAAqB,EAAA,CAAA;sBAA7B;gBAcQ,yBAAyB,EAAA,CAAA;sBAAjC;gBAKQ,qBAAqB,EAAA,CAAA;sBAA7B;gBAKQ,0BAA0B,EAAA,CAAA;sBAAlC;gBAKQ,sBAAsB,EAAA,CAAA;sBAA9B;gBAeS,kBAAkB,EAAA,CAAA;sBAA3B;gBAKS,yBAAyB,EAAA,CAAA;sBAAlC;gBAeS,eAAe,EAAA,CAAA;sBAAxB;gBAQS,gBAAgB,EAAA,CAAA;sBAAzB;gBAQS,kBAAkB,EAAA,CAAA;sBAA3B;;;MEvXW,wBAAwB,CAAA;AAC5B,IAAA,qBAAqB,GAAG,IAAI,eAAe,CAA4C,SAAS,CAAC;AACzG;;AAEG;AACH,IAAA,IAAW,uBAAuB,GAAA;QACjC,OAAO,IAAI,CAAC,qBAAqB;;AAElC;;AAEG;AACH,IAAA,IAAW,mBAAmB,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,KAAK;;AAGhC,IAAA,qBAAqB,GAAG,IAAI,eAAe,CAAuC,SAAS,CAAC;AACpG;;AAEG;AACH,IAAA,IAAW,oBAAoB,GAAA;QAC9B,OAAO,IAAI,CAAC,qBAAqB;;AAGlC;;AAEG;AACI,IAAA,iCAAiC,CAAC,QAA0B,EAAA;AAClE,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;AAC/B,YAAA,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK;AACnC,YAAA,qBAAqB,EAAE,QAAQ;AACE,SAAA,CAAC;;AAGpC;;AAEG;AACI,IAAA,sCAAsC,CAAC,QAA0B,EAAA;AACvE,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;AAC/B,YAAA,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK;AACnC,YAAA,0BAA0B,EAAE,QAAQ;AACH,SAAA,CAAC;;AAGpC;;AAEG;AACI,IAAA,8BAA8B,CAAC,SAA6C,EAAA;AAClF,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;AAC/B,YAAA,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK;AACnC,YAAA,mBAAmB,EAAE,SAAS;AACG,SAAA,CAAC;;AAGpC;;AAEG;AACI,IAAA,iCAAiC,CAAC,QAA0B,EAAA;AAClE,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;AAC/B,YAAA,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK;AACnC,YAAA,qBAAqB,EAAE,QAAQ;AACE,SAAA,CAAC;;AAGpC;;AAEG;AACI,IAAA,uCAAuC,CAAC,QAA0B,EAAA;AACxE,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;AAC/B,YAAA,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK;AACnC,YAAA,2BAA2B,EAAE,QAAQ;AACJ,SAAA,CAAC;;AAGpC;;AAEG;AACI,IAAA,8CAA8C,CAAC,QAA0B,EAAA;AAC/E,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;AAC/B,YAAA,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK;AACnC,YAAA,kCAAkC,EAAE,QAAQ;AACX,SAAA,CAAC;;AAGpC;;AAEG;AACI,IAAA,8BAA8B,CAAC,QAAkC,EAAA;AACvE,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;AAC/B,YAAA,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK;AACnC,YAAA,2BAA2B,EAAE,QAAQ;AACJ,SAAA,CAAC;;wGA1FxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAxB,wBAAwB,EAAA,CAAA;;4FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC;;;MCcY,+BAA+B,CAAA;AAwBvB,IAAA,qBAAA;IAtBpB,OAAO,GAAG,MAAM;AAGhB,IAAA,YAAY;AAEqC,IAAA,gBAAgB;AAEjE;;AAEG;AACM,IAAA,QAAQ;AAEjB;;AAEG;IACM,eAAe,GAAG,KAAK;IAEvB,WAAW,GAAW,IAAI;AAEnC,IAAA,wBAAwB;AACxB,IAAA,oBAAoB;AAEpB,IAAA,WAAA,CAAoB,qBAA+C,EAAA;QAA/C,IAAqB,CAAA,qBAAA,GAArB,qBAAqB;;IAEzC,QAAQ,GAAA;QACP,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI;AAAE,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ;;IAG7F,eAAe,GAAA;QACd,IAAI,CAAC,+BAA+B,EAAE;QACtC,IAAI,CAAC,sBAAsB,EAAE;;AAG9B;;;AAGG;IACK,+BAA+B,GAAA;;AAEtC,QAAA,IAAI,IAAI,CAAC,qBAAqB,CAAC,mBAAmB,EAAE,qBAAqB;YACxE,UAAU,CAAC,MAAK;AACf,gBAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,qBAAqB,CAAC;AAC1D,sBAAE,qBAAyC;gBAC5C,IAAI,CAAC,sBAAsB,EAAE;AAC9B,aAAC,CAAC;;AAGH,QAAA,IAAI,CAAC,qBAAqB,CAAC,uBAAuB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;YAC5F,IAAI,IAAI,EAAE,qBAAqB,KAAK,SAAS,IAAI,IAAI,CAAC,wBAAwB,IAAI,SAAS;gBAC1F,UAAU,CAAC,MAAK;AACf,oBAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,EAAE,qBAAyC;oBAC/E,IAAI,CAAC,sBAAsB,EAAE;AAC9B,iBAAC,CAAC;AACJ,SAAC,CAAC;;AAGH,IAAA,IAAI,iBAAiB,GAAA;AACpB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE,aAAa;AACzD,QAAA,OAAO,YAAY,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC;;IAG1C,sBAAsB,GAAA;QACrB,UAAU,CAAC,MAAK;YACf,IAAI,IAAI,CAAC,iBAAiB;AAAE,gBAAA,IAAI,CAAC,OAAO,GAAG,MAAM;;AAC5C,gBAAA,IAAI,CAAC,OAAO,GAAG,MAAM;AAC3B,SAAC,CAAC;;AAGH,IAAA,WAAW;wGAtEC,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA/B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,waCpB5C,ymCAuBA,EAAA,MAAA,EAAA,CAAA,0oCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAjB,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDHa,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAN3C,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oCAAoC,cAGlC,KAAK,EAAA,QAAA,EAAA,ymCAAA,EAAA,MAAA,EAAA,CAAA,0oCAAA,CAAA,EAAA;0FAIjB,OAAO,EAAA,CAAA;sBADN,WAAW;uBAAC,eAAe;gBAI5B,YAAY,EAAA,CAAA;sBADX,WAAW;uBAAC,iBAAiB;gBAGmB,gBAAgB,EAAA,CAAA;sBAAhE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,kBAAkB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAKtC,QAAQ,EAAA,CAAA;sBAAhB;gBAKQ,eAAe,EAAA,CAAA;sBAAvB;gBAEQ,WAAW,EAAA,CAAA;sBAAnB;;;MEzBW,kBAAkB,CAAA;AAgBV,IAAA,WAAA;AAAwC,IAAA,eAAA;AAfnD,IAAA,KAAK;IACL,UAAU,GAAY,KAAK;IAEpC,QAAQ,GAAG,wCAAwC;IAEnD,WAAW,GAAa,EAAE;IAC1B,eAAe,GAAY,IAAI;AAE/B,IAAA,IAAI,oBAAoB,GAAA;AACvB,QAAA,QACC,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,MAAM,CAAC,oCAAoC;YACxF,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,MAAM,CAAC,0BAA0B;;IAIvD,WAAoB,CAAA,WAA8B,EAAU,eAA4C,EAAA;QAApF,IAAW,CAAA,WAAA,GAAX,WAAW;QAA6B,IAAe,CAAA,eAAA,GAAf,eAAe;;IAE3E,QAAQ,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACjE,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;YACtB,IAAI,CAAC,iBAAiB,EAAE;;AAEzB,QAAA,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;YACzE,IAAI,CAAC,UAAU,GAAG,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI;AAC3C,SAAC,CAAC;;IAGH,kBAAkB,GAAA;AACjB,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU;QAElC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;AAChF,QAAA,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC;AACrC,YAAA,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc;AAClC,YAAA,UAAU,EAAE,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,UAAU,GAAG,KAAK;AACjF,YAAA,SAAS,EAAE,CAAC,IAAI,CAAC,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI;AACzD,YAAA,eAAe,EAAE,CAAC;AAClB,YAAA,gBAAgB,EAAE,CAAC;AACnB,SAAA,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,UAAU;AAAE,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;AAClD,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,iBAAiB,EAAE;;;IAIlB,iBAAiB,GAAA;QACxB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,0BAA0B;YACxD,UAAU,CAAC,MAAK;AACf,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,aAAC,CAAC;;AAGJ,IAAA,WAAW;wGArDC,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA9B,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAyB,2BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,gICd/B,uiFA8DA,EAAA,MAAA,EAAA,CAAA,gvUAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAoC,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,oFAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FDhDa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,cAGb,KAAK,EAAA,QAAA,EAAA,uiFAAA,EAAA,MAAA,EAAA,CAAA,gvUAAA,CAAA,EAAA;0HAGR,KAAK,EAAA,CAAA;sBAAb;gBACQ,UAAU,EAAA,CAAA;sBAAlB;;;MELW,8BAA8B,CAAA;AAmCtB,IAAA,cAAA;IAjCpB,OAAO,GAAG,MAAM;AAGhB,IAAA,YAAY;AAEkB,IAAA,kBAAkB;AACnB,IAAA,iBAAiB;AAE9C;;AAEG;AACM,IAAA,QAAQ;AAEjB;;AAEG;AACM,IAAA,QAAQ;AAEjB;;AAEG;AACM,IAAA,MAAM;IAEf,UAAU,GAAY,KAAK;AAC3B,IAAA,eAAe;AACf,IAAA,qBAAqB;AACrB,IAAA,gBAAgB;AAEhB,IAAA,cAAc,GAAG,SAAS,CAAA,CAAA,MAAA,CAAQ;AAClC,IAAA,gBAAgB,GAAG,SAAS,CAAA,CAAA,QAAA,CAAU;AAEtC,IAAA,YAAY;AAEZ,IAAA,WAAA,CAAoB,cAAiC,EAAA;QAAjC,IAAc,CAAA,cAAA,GAAd,cAAc;;IAElC,QAAQ,GAAA;QACP,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI;AAAE,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ;AAE5F,QAAA,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;AAC/E,YAAA,IAAI,CAAC,YAAY,GAAG,GAAG;AACxB,SAAC,CAAC;;IAGH,eAAe,GAAA;AACd,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;;IAGvB,eAAe,GAAA;AACd,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;;IAGxB,eAAe,GAAA;QACd,IAAI,CAAC,iBAAiB,EAAE;;IAGjB,iBAAiB,GAAA;QACxB,IAAI,IAAI,CAAC,gBAAgB;YAAE;QAE3B,UAAU,CAAC,MAAK;AACf,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa;AAC7D,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa;AAE3D,YAAA,MAAM,aAAa,GAAG,eAAe,CAAC,YAAY;AAClD,YAAA,MAAM,UAAU,GAAG,cAAc,CAAC,YAAY;YAE9C,IAAI,CAAC,qBAAqB,GAAG,aAAa,GAAG,UAAU,GAAG,EAAE,CAAC;AAC9D,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;;AAG9B,IAAA,WAAW;wGAxEC,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAjD,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA9B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,weCX3C,8/CAsCA,EAAA,MAAA,EAAA,CAAA,g1XAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA8B,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6NAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA6C,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FD3Ba,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAN1C,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mCAAmC,cAGjC,KAAK,EAAA,QAAA,EAAA,8/CAAA,EAAA,MAAA,EAAA,CAAA,g1XAAA,CAAA,EAAA;mFAIjB,OAAO,EAAA,CAAA;sBADN,WAAW;uBAAC,eAAe;gBAI5B,YAAY,EAAA,CAAA;sBADX,WAAW;uBAAC,iBAAiB;gBAGA,kBAAkB,EAAA,CAAA;sBAA/C,SAAS;uBAAC,iBAAiB;gBACC,iBAAiB,EAAA,CAAA;sBAA7C,SAAS;uBAAC,gBAAgB;gBAKlB,QAAQ,EAAA,CAAA;sBAAhB;gBAKQ,QAAQ,EAAA,CAAA;sBAAhB;gBAKQ,MAAM,EAAA,CAAA;sBAAd;;;ME1BW,yBAAyB,CAAA;AAC5B,IAAA,OAAO;AAEhB,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;wGALI,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,kHCRtC,+uJA+CA,EAAA,MAAA,EAAA,CAAA,ilSAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlD,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDvCa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,cAGrB,KAAK,EAAA,QAAA,EAAA,+uJAAA,EAAA,MAAA,EAAA,CAAA,ilSAAA,CAAA,EAAA;wDAGR,OAAO,EAAA,CAAA;sBAAf;;;AELF,IAAY,iBAoCX;AApCD,CAAA,UAAY,iBAAiB,EAAA;;AAE5B,IAAA,iBAAA,CAAA,cAAA,CAAA,GAAA,YAA2B;AAC3B,IAAA,iBAAA,CAAA,YAAA,CAAA,GAAA,UAAuB;AACvB,IAAA,iBAAA,CAAA,oBAAA,CAAA,GAAA,kBAAuC;AACvC,IAAA,iBAAA,CAAA,eAAA,CAAA,GAAA,aAA6B;AAC7B,IAAA,iBAAA,CAAA,iBAAA,CAAA,GAAA,eAAiC;AACjC,IAAA,iBAAA,CAAA,SAAA,CAAA,GAAA,OAAiB;AACjB,IAAA,iBAAA,CAAA,gBAAA,CAAA,GAAA,cAA+B;AAC/B,IAAA,iBAAA,CAAA,iBAAA,CAAA,GAAA,eAAiC;;AAGjC,IAAA,iBAAA,CAAA,eAAA,CAAA,GAAA,aAA6B;AAC7B,IAAA,iBAAA,CAAA,aAAA,CAAA,GAAA,WAAyB;AACzB,IAAA,iBAAA,CAAA,oBAAA,CAAA,GAAA,kBAAuC;AACvC,IAAA,iBAAA,CAAA,0BAAA,CAAA,GAAA,eAA0C;AAC1C,IAAA,iBAAA,CAAA,mBAAA,CAAA,GAAA,iBAAqC;AACrC,IAAA,iBAAA,CAAA,sBAAA,CAAA,GAAA,oBAA2C;AAC3C,IAAA,iBAAA,CAAA,wBAAA,CAAA,GAAA,WAAoC;AACpC,IAAA,iBAAA,CAAA,sBAAA,CAAA,GAAA,oBAA2C;;AAG3C,IAAA,iBAAA,CAAA,cAAA,CAAA,GAAA,YAA2B;AAC3B,IAAA,iBAAA,CAAA,iBAAA,CAAA,GAAA,eAAiC;AACjC,IAAA,iBAAA,CAAA,gBAAA,CAAA,GAAA,cAA+B;AAC/B,IAAA,iBAAA,CAAA,eAAA,CAAA,GAAA,aAA6B;;AAG7B,IAAA,iBAAA,CAAA,kBAAA,CAAA,GAAA,gBAAmC;AACnC,IAAA,iBAAA,CAAA,aAAA,CAAA,GAAA,WAAyB;AACzB,IAAA,iBAAA,CAAA,UAAA,CAAA,GAAA,QAAmB;AACnB,IAAA,iBAAA,CAAA,qBAAA,CAAA,GAAA,mBAAyC;AAEzC,IAAA,iBAAA,CAAA,gBAAA,CAAA,GAAA,cAA+B;AAE/B,IAAA,iBAAA,CAAA,mBAAA,CAAA,GAAA,iBAAqC;AACtC,CAAC,EApCW,iBAAiB,KAAjB,iBAAiB,GAoC5B,EAAA,CAAA,CAAA;AAED,IAAY,oBAOX;AAPD,CAAA,UAAY,oBAAoB,EAAA;AAC/B,IAAA,oBAAA,CAAA,oBAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAe;AACf,IAAA,oBAAA,CAAA,oBAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAU;AACV,IAAA,oBAAA,CAAA,oBAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAc;AACd,IAAA,oBAAA,CAAA,oBAAA,CAAA,wBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,wBAAsB;AACtB,IAAA,oBAAA,CAAA,oBAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAc;AACd,IAAA,oBAAA,CAAA,oBAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAY;AACb,CAAC,EAPW,oBAAoB,KAApB,oBAAoB,GAO/B,EAAA,CAAA,CAAA;;MCzCY,yBAAyB,CAAA;AAgEjB,IAAA,YAAA;AA/DZ,IAAA,iBAAiB;AACjB,IAAA,gBAAgB;IAExB,eAAe,GAAe,EAAE;AAEhC,IAAA,IAAI,qBAAqB,GAAA;QACxB,OAAO,IAAI,CAAC,iBAAiB;;AAG9B,IAAA,IAAI,mBAAmB,GAAA;QACtB,OAAO,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC,iBAAiB,CAAC,YAAY,CAAqB;;AAGvF,IAAA,IAAI,kBAAkB,GAAA;QACrB,OAAO,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC,iBAAiB,CAAC,YAAY,CAAqB;;AAGvF,IAAA,IAAI,uBAAuB,GAAA;QAC1B,OAAO,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC,iBAAiB,CAAC,gBAAgB,CAAqB;;AAG3F,IAAA,IAAI,oBAAoB,GAAA;QACvB,OAAO,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC,iBAAiB,CAAC,aAAa,CAAqB;;AAGxF,IAAA,IAAI,uBAAuB,GAAA;QAC1B,OAAO,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC,iBAAiB,CAAC,cAAc,CAAuB;;AAG3F,IAAA,IAAI,0BAA0B,GAAA;QAC7B,OAAO,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC,iBAAiB,CAAC,iBAAiB,CAAuB;;AAG9F,IAAA,IAAI,qBAAqB,GAAA;QACxB,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,cAAc,CAAqB;;AAG1F,IAAA,IAAI,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY;AAAE,YAAA,OAAO,EAAE;AAErF,QAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAiC;QAEzD,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAG;;YAEtD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE;;AAElC,gBAAA,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE;oBAC5B,EAAE,EAAE,CAAC,CAAC,YAAY;oBAClB,KAAK,EAAE,CAAC,CAAC,KAAK;AACd,oBAAA,YAAY,EAAE,CAAC;AACf,iBAAA,CAAC;;iBACI;;gBAEN,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC;gBACjD,IAAI,YAAY,EAAE;oBACjB,YAAY,CAAC,YAAY,EAAE;;;AAG9B,SAAC,CAAC;QAEF,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;;AAGrC,IAAA,WAAA,CAAoB,YAAgC,EAAA;QAAhC,IAAY,CAAA,YAAA,GAAZ,YAAY;;AAEzB,IAAA,QAAQ,CAAC,eAAiC,EAAA;AAChD,QAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;QAEvC,IAAI,CAAC,QAAQ,EAAE;QAEf,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AAChD,YAAA,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AACnC,gBAAA,QAAQ,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;AACxF,gBAAA,gBAAgB,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;AACxG,gBAAA,WAAW,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;AAC9F,gBAAA,aAAa,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;AAClG,gBAAA,KAAK,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAClF,gBAAA,aAAa,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;gBAClG,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;aACzC,CAAC;AACF,YAAA,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AACpC,gBAAA,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AAClC,oBAAA,gBAAgB,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;AACxG,oBAAA,aAAa,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,CAAC;iBAC3G,CAAC;AACF,gBAAA,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AACxC,oBAAA,kBAAkB,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;AAC5G,oBAAA,SAAS,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,CAAC;AACrG,oBAAA,kBAAkB,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;iBAC5G,CAAC;aACF,CAAC;AACF,YAAA,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AACnC,gBAAA,aAAa,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;AAClG,gBAAA,YAAY,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;AAChG,gBAAA,WAAW,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;aAC9F,CAAC;AACF,YAAA,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AACvC,gBAAA,SAAS,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;AAC1F,gBAAA,MAAM,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AACpF,gBAAA,iBAAiB,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;aAC1G,CAAC;AACF,YAAA,YAAY,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;AAChG,YAAA,eAAe,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;AACtG,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC;;IAGnC,QAAQ,GAAA;AACd,QAAA,MAAM,UAAU,GAAG;YAClB,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;YACjD,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;YACjD,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;YACrD,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;SAC9C;AACD,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;AACzB,QAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE;AACxB,QAAA,UAAU,CAAC,OAAO,CAAC,MAAM,IAAG;AAC3B,YAAA,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAG;AAC1B,gBAAA,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;oBAAE;AACnD,gBAAA,MAAM,MAAM,GAAG,CAAG,EAAA,GAAG,CAAC,IAAI,CAAA,CAAA,EAAI,GAAG,CAAC,WAAW,CAAI,CAAA,EAAA,GAAG,CAAC,KAAK,EAAE;gBAE5D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AACxB,oBAAA,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;AAElB,oBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACzB,wBAAA,QAAQ,EAAE,KAAK;wBACf,IAAI,EAAE,GAAG,CAAC,IAAI;wBACd,WAAW,EAAE,GAAG,CAAC,WAAW;wBAC5B,KAAK,EAAE,GAAG,CAAC,KAAK;AAChB,qBAAA,CAAC;;AAEJ,aAAC,CAAC;AACH,SAAC,CAAC;;QAGF,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY;QAChE,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5C,YAAA,YAAY,CAAC,OAAO,CAAC,QAAQ,IAAG;AAC/B,gBAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,IAAG;AAClC,oBAAA,IAAI,GAAG,CAAC,KAAK,KAAK,QAAQ;AAAE,wBAAA,GAAG,CAAC,QAAQ,GAAG,IAAI;AAChD,iBAAC,CAAC;AACH,aAAC,CAAC;;;IAIJ,SAAS,GAAA;QACR,IAAI,CAAC,QAAQ,EAAE;AACf,QAAA,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,GAAG,IAAG;AACnC,YAAA,GAAG,CAAC,QAAQ,GAAG,KAAK;AACrB,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;AACjC,YAAA,UAAU,EAAE;AACX,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,gBAAgB,EAAE,IAAI;AACtB,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,aAAa,EAAE,IAAI;AACnB,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,YAAY,EAAE,EAAE;AAChB,gBAAA,aAAa,EAAE,IAAI;AACnB,aAAA;AACD,YAAA,WAAW,EAAE;AACZ,gBAAA,SAAS,EAAE;AACV,oBAAA,gBAAgB,EAAE,KAAK;AACvB,oBAAA,aAAa,EAAE,CAAC;AAChB,iBAAA;AACD,gBAAA,eAAe,EAAE;AAChB,oBAAA,kBAAkB,EAAE,KAAK;AACzB,oBAAA,SAAS,EAAE,IAAI;AACf,oBAAA,kBAAkB,EAAE,IAAI;AACxB,iBAAA;AACD,aAAA;AACD,YAAA,UAAU,EAAE;AACX,gBAAA,aAAa,EAAE,IAAI;AACnB,gBAAA,YAAY,EAAE,IAAI;AAClB,gBAAA,WAAW,EAAE,IAAI;AACjB,aAAA;AACD,YAAA,cAAc,EAAE;AACf,gBAAA,SAAS,EAAE,KAAK;AAChB,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,iBAAiB,EAAE,IAAI;AACvB,aAAA;AACD,YAAA,YAAY,EAAE,IAAI,CAAC,eAAe,IAAK,EAAiB;AACxD,YAAA,eAAe,EAAE,EAAE;AACnB,SAAA,CAAC;QAEF,IAAI,CAAC,oBAAoB,EAAE;;AAGrB,IAAA,mBAAmB,CAAC,iBAAoC,EAAA;QAC9D,QAAQ,iBAAiB;;YAExB,KAAK,iBAAiB,CAAC,UAAU;gBAChC,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,IAAI;sBAC3D,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE;sBAC3C,IAAI;YACR,KAAK,iBAAiB,CAAC,kBAAkB;gBACxC,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,IAAI,SAAS;oBAC3E,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,IAAI;sBACxD,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa;AACxD,wBAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE;sBAC3C,IAAI;YACR,KAAK,iBAAiB,CAAC,aAAa;gBACnC,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,IAAI;sBAC9D,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE;sBAC3C,IAAI;YACR,KAAK,iBAAiB,CAAC,eAAe;gBACrC,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,IAAI;sBAChE,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE;sBAC3C,IAAI;YACR,KAAK,iBAAiB,CAAC,OAAO;gBAC7B,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,IAAI;sBACxD,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE;sBAC3C,IAAI;YACR,KAAK,iBAAiB,CAAC,eAAe;gBACrC,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,IAAI;sBAChE,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE;sBAC3C,IAAI;;YAER,KAAK,iBAAiB,CAAC,kBAAkB;AACxC,gBAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,gBAAgB,IAAI;sBACnF,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE;sBAC3D,KAAK;YACT,KAAK,iBAAiB,CAAC,wBAAwB;AAC9C,gBAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,cAAc,IAAI;sBACjF,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE;sBAC3D,CAAC;YACL,KAAK,iBAAiB,CAAC,oBAAoB;AAC1C,gBAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,kBAAkB,IAAI;sBAC3F,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE;sBACjE,KAAK;YACT,KAAK,iBAAiB,CAAC,sBAAsB;AAC5C,gBAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,SAAS,IAAI;sBAClF,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE;sBACjE,IAAI;YACR,KAAK,iBAAiB,CAAC,oBAAoB;AAC1C,gBAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,kBAAkB,IAAI;sBAC3F,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE;sBACjE,IAAI;;YAER,KAAK,iBAAiB,CAAC,eAAe;gBACrC,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,IAAI;sBAC/D,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE;sBAC1C,IAAI;YACR,KAAK,iBAAiB,CAAC,cAAc;gBACpC,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,IAAI;sBAC9D,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE;sBAC1C,IAAI;YACR,KAAK,iBAAiB,CAAC,aAAa;gBACnC,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,IAAI;sBAC7D,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE;sBAC1C,IAAI;;YAER,KAAK,iBAAiB,CAAC,WAAW;gBACjC,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,IAAI;sBACzD,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE;sBACxC,IAAI;YACR,KAAK,iBAAiB,CAAC,QAAQ;gBAC9B,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI;sBACtD,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE;sBACxC,IAAI;YACR,KAAK,iBAAiB,CAAC,mBAAmB;gBACzC,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,iBAAiB,IAAI;sBACjE,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE;sBACxC,IAAI;YACR,KAAK,iBAAiB,CAAC,cAAc;AACpC,gBAAA,OAAO,IAAI,CAAC,eAAe,IAAK,EAAiB;YAClD,KAAK,iBAAiB,CAAC,iBAAiB;gBACvC,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,eAAe,IAAI;AACxD,sBAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;sBAC/B,EAAE;AACN,YAAA;AACC,gBAAA,OAAO,IAAI;;;IAIP,sBAAsB,GAAA;AAC5B,QAAA,OAAO,IAAI;;AAGZ,IAAA,qBAAqB,CAAC,YAAqC,EAAE,KAAA,GAAiB,KAAK,EAAA;AAClF,QAAA,YAAY,CAAC,OAAO,CAAC,IAAI,IAAG;;;AAI3B,YAAA,IAAI,CAAC,qBAAqB,EAAE,UAAU,CACrC,IAAI,CAAC,EAAE,EACP,IAAI,kBAAkB,CACrB;AACC,kBAAE;kBACA,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE;AAC9C,sBAAE;sBACA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,KAAK;AAC1F,0BAAE;AACF,0BAAE,KAAK,CACR,CACD;AACF,SAAC,CAAC;;IAGH,wBAAwB,GAAA;;QAEvB,MAAM,eAAe,GAAa,EAAE;;AAGpC,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;YAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,EAAE,QAAQ,CAAC,GAAG,CAAC;;AAGzD,YAAA,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE;AAC5B,gBAAA,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;;AAE3B,SAAC,CAAC;AAEF,QAAA,OAAO,eAAe;;IAGvB,oBAAoB,GAAA;;AAEnB,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;YAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,EAAE,QAAQ,CAAC,GAAG,CAAC;AACzD,YAAA,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC;AACxB,SAAC,CAAC;;wGApUS,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAzB,yBAAyB,EAAA,CAAA;;4FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC;;;MCCY,kBAAkB,CAAA;AAC9B;;;;;AAKG;IACM,IAAI,GAAG,OAAO;AAEvB;;;;AAIG;IACM,KAAK,GAAG,SAAS;AAE1B,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;wGAlBI,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,iHCR/B,wRAOA,EAAA,MAAA,EAAA,CAAA,+nBAAA,CAAA,EAAA,CAAA;;4FDCa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,cAGV,KAAK,EAAA,QAAA,EAAA,wRAAA,EAAA,MAAA,EAAA,CAAA,+nBAAA,CAAA,EAAA;wDASR,IAAI,EAAA,CAAA;sBAAZ;gBAOQ,KAAK,EAAA,CAAA;sBAAb;;;AEnBF;;AAEG;MAOU,iBAAiB,CAAA;AAC7B;;;AAGG;IACM,QAAQ,GAAY,KAAK;AAElC;;;AAGG;IACM,aAAa,GAAW,EAAE;AAEnC;;;AAGG;IACM,WAAW,GAAY,KAAK;AAErC;;;AAGG;IACM,SAAS,GAAW,EAAE;;AAG/B;;;AAGG;IACM,KAAK,GAAmB,SAAS;AAE1C;;;AAGG;IACM,QAAQ,GAAY,KAAK;AAElC;;;AAGG;IACM,KAAK,GAAW,EAAE;AAE3B;;;AAGG;IACM,MAAM,GAAW,EAAE;;AAG5B;;;AAGG;IACM,IAAI,GAAW,EAAE;AAE1B;;;AAGG;IACM,QAAQ,GAAY,KAAK;AAElC;;;AAGG;IACM,QAAQ,GAAW,MAAM;;AAIlC;;;AAGG;IACM,MAAM,GAAY,KAAK;AAEhC;;;AAGG;IACM,SAAS,GAAY,KAAK;AAEnC;;;AAGG;IACM,IAAI,GAAW,EAAE;AAE1B;;;AAGG;IACM,MAAM,GAAW,QAAQ;AAClC;;;AAGG;IACM,QAAQ,GAAW,CAAC;AAC7B;;;AAGG;AACM,IAAA,OAAO;AAChB;;;AAGG;IACM,gBAAgB,GAAY,KAAK;AAE1C;;;AAGG;IACM,UAAU,GAAW,KAAK;AAEnC;;;AAGG;IACM,QAAQ,GAAW,MAAM;AAElC;;AAEG;AACH,IAAA,IAAI,0BAA0B,GAAA;AAC7B,QAAA,OAAO,GAAG,IAAI,CAAC,KAAK,CAAA,cAAA,EAAiB,IAAI,CAAC,QAAQ,GAAG,WAAW,GAAG,EAAE,EAAE;;AAGxE;;AAEG;AACH,IAAA,IAAI,4BAA4B,GAAA;AAC/B,QAAA,OAAO,GAAG,IAAI,CAAC,KAAK,CAAA,gBAAA,EAAmB,IAAI,CAAC,QAAQ,GAAG,WAAW,GAAG,EAAE,EAAE;;AAG1E;;AAEG;AACH,IAAA,IAAI,wBAAwB,GAAA;AAC3B,QAAA,OAAO,GAAG,IAAI,CAAC,KAAK,CAAA,YAAA,EAAe,IAAI,CAAC,QAAQ,GAAG,WAAW,GAAG,EAAE,EAAE;;AAGtE;;AAEG;AACH,IAAA,IAAI,wBAAwB,GAAA;AAC3B,QAAA,OAAO,GAAG,IAAI,CAAC,KAAK,CAAA,YAAA,EAAe,IAAI,CAAC,QAAQ,GAAG,WAAW,GAAG,EAAE,EAAE;;IAGtE,SAAS,GAAQ,EAAE;IACnB,WAAW,GAAQ,EAAE;AAErB,IAAA,WAAA,GAAA;IAEA,QAAQ,GAAA;;QAEP,IAAI,IAAI,CAAC,IAAI;YACZ,IAAI,CAAC,SAAS,GAAG;gBAChB,WAAW,EAAE,IAAI,CAAC,QAAQ;gBAC1B,KAAK,EAAE,IAAI,CAAC,QAAQ;gBACpB,MAAM,EAAE,IAAI,CAAC,QAAQ;aACrB;;QAGF,IAAI,CAAC,WAAW,GAAG;YAClB,GAAG,IAAI,CAAC,WAAW;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,aAAa,EAAE,IAAI,CAAC,UAAU;YAC9B,WAAW,EAAE,IAAI,CAAC,QAAQ;SAC1B;;QAGD,IAAI,IAAI,CAAC,SAAS;YACjB,IAAI,CAAC,WAAW,GAAG;gBAClB,GAAG,IAAI,CAAC,WAAW;AACnB,gBAAA,YAAY,EAAE,yEAAyE;aACvF;QAEF,IAAI,IAAI,CAAC,OAAO;YACf,IAAI,CAAC,WAAW,GAAG;gBAClB,GAAG,IAAI,CAAC,WAAW;gBACnB,OAAO,EAAE,IAAI,CAAC,OAAO;aACrB;;AAGH,IAAA,WAAW,CAAC,OAAsB,EAAA;AACjC,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;YACxB,IAAI,CAAC,SAAS,GAAG;gBAChB,WAAW,EAAE,IAAI,CAAC,QAAQ;gBAC1B,KAAK,EAAE,IAAI,CAAC,QAAQ;gBACpB,MAAM,EAAE,IAAI,CAAC,QAAQ;aACrB;;QAGF,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;YAChH,IAAI,CAAC,WAAW,GAAG;gBAClB,GAAG,IAAI,CAAC,WAAW;gBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,aAAa,EAAE,IAAI,CAAC,UAAU;gBAC9B,WAAW,EAAE,IAAI,CAAC,QAAQ;gBAC1B,OAAO,EAAE,IAAI,CAAC,OAAO;aACrB;;;wGA5MS,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,6hBCZ9B,ksIAyHA,EAAA,MAAA,EAAA,CAAA,urOAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,gFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA8C,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,8NAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FD7Ga,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,cAGT,KAAK,EAAA,QAAA,EAAA,ksIAAA,EAAA,MAAA,EAAA,CAAA,urOAAA,CAAA,EAAA;wDAOR,QAAQ,EAAA,CAAA;sBAAhB;gBAMQ,aAAa,EAAA,CAAA;sBAArB;gBAMQ,WAAW,EAAA,CAAA;sBAAnB;gBAMQ,SAAS,EAAA,CAAA;sBAAjB;gBAOQ,KAAK,EAAA,CAAA;sBAAb;gBAMQ,QAAQ,EAAA,CAAA;sBAAhB;gBAMQ,KAAK,EAAA,CAAA;sBAAb;gBAMQ,MAAM,EAAA,CAAA;sBAAd;gBAOQ,IAAI,EAAA,CAAA;sBAAZ;gBAMQ,QAAQ,EAAA,CAAA;sBAAhB;gBAMQ,QAAQ,EAAA,CAAA;sBAAhB;gBAQQ,MAAM,EAAA,CAAA;sBAAd;gBAMQ,SAAS,EAAA,CAAA;sBAAjB;gBAMQ,IAAI,EAAA,CAAA;sBAAZ;gBAMQ,MAAM,EAAA,CAAA;sBAAd;gBAKQ,QAAQ,EAAA,CAAA;sBAAhB;gBAKQ,OAAO,EAAA,CAAA;sBAAf;gBAKQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAMQ,UAAU,EAAA,CAAA;sBAAlB;gBAMQ,QAAQ,EAAA,CAAA;sBAAhB;;;MEnHW,6BAA6B,CAAA;AACzC;;AAEG;AACM,IAAA,KAAK;AAEd;;AAEG;AACM,IAAA,WAAW;AAEpB;;AAEG;AACM,IAAA,KAAK;AAEd;;AAEG;IACM,QAAQ,GAAY,KAAK;AAElC,IAAA,KAAK;AAEL,IAAA,IAAI,aAAa,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,CAAC;;AAGxB,IAAA,2BAA2B;AAC3B,IAAA,QAAQ;AAER,IAAA,UAAU,CAAC,MAAe,EAAA;AACzB,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM;;AAGpB,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,2BAA2B,GAAG,EAAE;;AAGtC,IAAA,WAAW,CAAC,KAA2B,EAAA;AACtC,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO;AAC1B,QAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC;;IAG7C,kBAAkB,GAAA;AACjB,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK;AACxB,QAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC;;AAG7C,IAAA,iBAAiB;AACjB,IAAA,aAAa;wGAjDD,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA7B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,EAT9B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA;AACV,YAAA;AACC,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,6BAA6B,CAAC;AAC5D,gBAAA,KAAK,EAAE,IAAI;AACX,aAAA;AACD,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdF,m+BAwBA,EAAA,MAAA,EAAA,CAAA,22EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAnD,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA4B,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA3B,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDPa,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAbzC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,EAG3B,SAAA,EAAA;AACV,wBAAA;AACC,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,mCAAmC,CAAC;AAC5D,4BAAA,KAAK,EAAE,IAAI;AACX,yBAAA;AACD,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,m+BAAA,EAAA,MAAA,EAAA,CAAA,22EAAA,CAAA,EAAA;8BAMR,KAAK,EAAA,CAAA;sBAAb;gBAKQ,WAAW,EAAA,CAAA;sBAAnB;gBAKQ,KAAK,EAAA,CAAA;sBAAb;gBAKQ,QAAQ,EAAA,CAAA;sBAAhB;;MAsCW,iCAAiC,CAAA;wGAAjC,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iCAAiC,2EAHnC,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;4FAGzB,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAL7C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,UAAU,EAAE,KAAK;AACjB,iBAAA;;;MEzDY,+BAA+B,CAAA;AA0CxB,IAAA,aAAA;AAzCnB;;AAEG;AACM,IAAA,eAAe,GAAqB;AAC5C,QAAA,aAAa,EAAE,CAAC;AAChB,QAAA,qBAAqB,EAAE,CAAC;AACxB,QAAA,UAAU,EAAE,CAAC;AACb,QAAA,gBAAgB,EAAE,CAAC;AACnB,QAAA,cAAc,EAAE,CAAC;AACjB,QAAA,kBAAkB,EAAE,CAAC;KACrB;AAED;;AAEG;AACM,IAAA,aAAa;AAEtB;;AAEG;AACM,IAAA,aAAa;IAEtB,iBAAiB,GAAG,iBAAiB;IACrC,aAAa,GAAG,aAAa;AAE7B,IAAA,eAAe,GAAG,SAAS,CAAA,CAAA,eAAA,CAAiB;AAC5C,IAAA,kBAAkB,GAAG,SAAS,CAAA,CAAA,eAAA,CAAiB;AAC/C,IAAA,WAAW,GAAG,SAAS,CAAA,CAAA,UAAA,CAAY;AACnC,IAAA,eAAe,GAAG,SAAS,CAAA,CAAA,eAAA,CAAiB;AAC5C,IAAA,uBAAuB,GAAG,SAAS,CAAA,CAAA,4HAAA,CAA8H;AAEjK,IAAA,YAAY;AAEZ,IAAA,IAAI,gBAAgB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,GAAG,CAAC,iBAAiB,CAAC,cAAc,CAAqB;;AAGzG,IAAA,IAAI,gBAAgB,GAAA;QACnB,OAAO,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;;AAGrD,IAAA,WAAA,CAAmB,aAAwC,EAAA;QAAxC,IAAa,CAAA,aAAA,GAAb,aAAa;;IAEhC,QAAQ,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE;YACrC,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,IAAG;AAC/C,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;AACnC,aAAC,CAAC;;AAGH,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,YAAY;AAClE,YAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;AAC5E,gBAAA,IAAI,CAAC,IAAI;oBAAE;AACX,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;AACtC,aAAC,CAAC;;;AAIJ,IAAA,oBAAoB,CAAC,MAAc,EAAA;AAClC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB;AAC1C,QAAA,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,sBAAsB,EAAE,CAAC,CAAC;;AAGrG,IAAA,WAAW;wGAjEC,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAkD,yBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA/B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,yMChB5C,k+mBAmPA,EAAA,MAAA,EAAA,CAAA,wqWAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAvB,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAoC,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6NAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,6BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iCAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA;;4FDnOa,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAN3C,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,8BAA8B,cAG5B,KAAK,EAAA,QAAA,EAAA,k+mBAAA,EAAA,MAAA,EAAA,CAAA,wqWAAA,CAAA,EAAA;2FAMR,eAAe,EAAA,CAAA;sBAAvB;gBAYQ,aAAa,EAAA,CAAA;sBAArB;gBAKQ,aAAa,EAAA,CAAA;sBAArB;;;ME3BW,8BAA8B,CAAA;AAqBvB,IAAA,aAAA;AApBnB;;AAEG;IACM,cAAc,GAAW,CAAC;AAEnC;;AAEG;IACM,iBAAiB,GAAW,CAAC;AAEtC;;AAEG;IACM,gBAAgB,GAAW,CAAC;IAErC,iBAAiB,GAAG,iBAAiB;AAErC,IAAA,cAAc,GAAG,SAAS,CAAA,CAAA,cAAA,CAAgB;AAC1C,IAAA,aAAa,GAAG,SAAS,CAAA,CAAA,aAAA,CAAe;AACxC,IAAA,WAAW,GAAG,SAAS,CAAA,CAAA,WAAA,CAAa;AACpC,IAAA,WAAA,CAAmB,aAAwC,EAAA;QAAxC,IAAa,CAAA,aAAA,GAAb,aAAa;;AAChC,IAAA,QAAQ;wGAtBI,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,yBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA9B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,oNCV3C,2kCAoCA,EAAA,MAAA,EAAA,CAAA,+SAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAnD,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA4B,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA0B,6BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iCAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA;;4FD1Ba,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAN1C,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6BAA6B,cAG3B,KAAK,EAAA,QAAA,EAAA,2kCAAA,EAAA,MAAA,EAAA,CAAA,+SAAA,CAAA,EAAA;2FAMR,cAAc,EAAA,CAAA;sBAAtB;gBAKQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAKQ,gBAAgB,EAAA,CAAA;sBAAxB;;;MEdW,4BAA4B,CAAA;AAiBrB,IAAA,aAAA;AAhBnB;;AAEG;IACM,WAAW,GAAW,CAAC;AAEhC;;AAEG;IACM,eAAe,GAAW,CAAC;IAEpC,iBAAiB,GAAG,iBAAiB;AAErC,IAAA,aAAa,GAAG,SAAS,CAAA,CAAA,6BAAA,CAA+B;AACxD,IAAA,MAAM,GAAG,SAAS,CAAA,CAAA,MAAA,CAAQ;AAC1B,IAAA,aAAa,GAAG,SAAS,CAAA,CAAA,uBAAA,CAAyB;AAElD,IAAA,WAAA,CAAmB,aAAwC,EAAA;QAAxC,IAAa,CAAA,aAAA,GAAb,aAAa;;AAChC,IAAA,QAAQ;wGAlBI,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAJ,yBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,iKCVzC,ovBAqBA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAnD,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA4B,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA0B,6BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDXa,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBANxC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,cAGxB,KAAK,EAAA,QAAA,EAAA,ovBAAA,EAAA;2FAMR,WAAW,EAAA,CAAA;sBAAnB;gBAKQ,eAAe,EAAA,CAAA;sBAAvB;;;MELW,iCAAiC,CAAA;AA0BzB,IAAA,cAAA;AAzBpB;;AAEG;AACM,IAAA,UAAU;AAEnB,IAAA,gBAAgB;AAChB,IAAA,eAAe;AACf,IAAA,gBAAgB,GAAG,IAAI,kBAAkB,CAAC,EAAE,CAAC;IAC7C,YAAY,GAAY,KAAK;AAE7B,IAAA,IAAI,qBAAqB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAmB;;AAGjD,IAAA,IAAI,YAAY,GAAA;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC;;AAG7E,IAAA,IAAI,WAAW,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK;;AAGnC,IAAA,cAAc,GAAG,SAAS,CAAA,CAAA,MAAA,CAAQ;AAClC,IAAA,gBAAgB,GAAG,SAAS,CAAA,CAAA,QAAA,CAAU;AAEtC,IAAA,WAAA,CAAoB,cAAyC,EAAA;QAAzC,IAAc,CAAA,cAAA,GAAd,cAAc;;IAElC,QAAQ,GAAA;QACP,IAAI,CAAC,qBAAqB,EAAE;QAC5B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,uBAAuB;AAEnE,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAC7D,YAAY,CAAC,IAAI,CAAC,EAClB,SAAS,CAAC,EAAE,CAAC,EACb,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAC3C;;AAGF,IAAA,WAAW,CAAC,OAAsB,EAAA;QACjC,IAAI,OAAO,CAAC,YAAY,CAAC;AACxB,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAC7D,YAAY,CAAC,IAAI,CAAC,EAClB,SAAS,CAAC,EAAE,CAAC,EACb,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAC3C;;IAGH,SAAS,GAAA;QACR,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC3E,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;;AAGjB,IAAA,WAAW,CAAC,KAAa,EAAA;QAChC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;;IAG5F,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;;IAGnC,qBAAqB,GAAA;QACpB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;;AAGtF,IAAA,WAAW;wGAjEC,iCAAiC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,yBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iCAAiC,sJCd9C,6sGAqFA,EAAA,MAAA,EAAA,CAAA,kqYAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAvB,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAoC,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,oFAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAjB,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAwB,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FDvEa,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAN7C,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gCAAgC,cAG9B,KAAK,EAAA,QAAA,EAAA,6sGAAA,EAAA,MAAA,EAAA,CAAA,kqYAAA,CAAA,EAAA;2FAMR,UAAU,EAAA,CAAA;sBAAlB;;;MEPW,yBAAyB,CAAA;AA0BlB,IAAA,aAAA;AAzBnB;;AAEG;AACM,IAAA,YAAY;AAErB;;AAEG;AACM,IAAA,YAAY;AAErB;;AAEG;AACM,IAAA,gBAAgB;AAEzB;;AAEG;AACM,IAAA,uBAAuB;IAEhC,iBAAiB,GAAG,iBAAiB;AAErC,IAAA,iBAAiB,GAAG,SAAS,CAAA,CAAA,yBAAA,CAA2B;AACxD,IAAA,mBAAmB,GAAG,SAAS,CAAA,CAAA,iBAAA,CAAmB;AAElD,IAAA,WAAA,CAAmB,aAAwC,EAAA;QAAxC,IAAa,CAAA,aAAA,GAAb,aAAa;;AAEhC,IAAA,IAAI,IAAI,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,oBAAoB;;AAG/C,IAAA,IAAI,aAAa,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,GAAG,CAAC,iBAAiB,CAAC,WAAW,CAAqB;;AAGtG,IAAA,IAAI,mBAAmB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,GAAG,CAAC,iBAAiB,CAAC,iBAAiB,CAAqB;;AAG5G,IAAA,IAAI,eAAe,GAAA;QAClB,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,sBAAsB,CAAuB;;AAGpG,IAAA,IAAI,kBAAkB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,EAAE,KAAK;;AAGjF,IAAA,IAAI,oBAAoB,GAAA;QACvB,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,iBAAiB,CAAC,wBAAwB,CAAuB;;AAGhG,IAAA,IAAI,cAAc,GAAA;QACjB,OAAO,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC;;AAGjF,IAAA,IAAI,eAAe,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,MAAM,IAAI,CAAC;AAAE,YAAA,OAAO,CAAC;;AAC3C,YAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;;AAG3E,IAAA,IAAI,oBAAoB,GAAA;AACvB,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,EAAE,KAAK,CAAC;AACpG,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AACpF,QAAA,OAAO,SAAS;;IAGjB,QAAQ,GAAA;AACP,QAAA,IACC,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,EAAE,KAAK;AAC9E,YAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,EAAE,KAAK,IAAI,IAAI,EAClF;AACD,YAAA,IAAI,CAAC;AACH,iBAAA,GAAG,CAAC,iBAAiB,CAAC,sBAAsB;AAC7C,kBAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;;;AAIjD,IAAA,YAAY,CAAC,iBAAoC,EAAA;QAChD,OAAO,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,GAAG,CAAC,iBAAiB,CAAqB;;AAG1F,IAAA,eAAe,CAAC,iBAAoC,EAAA;QACnD,QAAQ,iBAAiB;YACxB,KAAK,iBAAiB,CAAC,oBAAoB;AAC1C,gBAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,EAAE,KAAK;YACnF,KAAK,iBAAiB,CAAC,kBAAkB;AACxC,gBAAA,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,EAAE,KAAK;AAC3E,YAAA;AACC,gBAAA,OAAO,KAAK;;;AAIf,IAAA,gBAAgB,CAAC,MAAW,EAAA;AAC3B,QAAA,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;;AAG9E,IAAA,0BAA0B,CAAC,OAAgB,EAAA;AAC1C,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,IAAI,CAAC;;AAC7C,YAAA,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;;AAGxE,IAAA,cAAc,CAAC,KAAU,EAAA;;AAExB,QAAA,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;AAC7E,YAAA,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;;aACvD;AACN,YAAA,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;;;wGA3G7C,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAP,yBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,oPCXtC,y8GAmFA,EAAA,MAAA,EAAA,CAAA,w6IAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAvB,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA6C,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,KAAA,EAAA,OAAA,EAAA,eAAA,EAAA,KAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,6BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDxEa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,cAGrB,KAAK,EAAA,QAAA,EAAA,y8GAAA,EAAA,MAAA,EAAA,CAAA,w6IAAA,CAAA,EAAA;2FAMR,YAAY,EAAA,CAAA;sBAApB;gBAKQ,YAAY,EAAA,CAAA;sBAApB;gBAKQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAKQ,uBAAuB,EAAA,CAAA;sBAA/B;;;MEpBW,uCAAuC,CAAA;AAI1C,IAAA,UAAA;AACwB,IAAA,IAAA;IAJjC,QAAQ,GAAY,KAAK;IAEzB,WACS,CAAA,UAAiE,EACzC,IAAyC,EAAA;QADjE,IAAU,CAAA,UAAA,GAAV,UAAU;QACc,IAAI,CAAA,IAAA,GAAJ,IAAI;;AAGrC,IAAA,QAAQ;IAER,QAAQ,GAAA;AACP,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;;AAGxB,IAAA,MAAM,cAAc,GAAA;AACnB,QAAA,IAAI;;AAEH,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,YAAA,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,IAAI;;AAGnC,YAAA,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACpE,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;;QACtB,OAAO,KAAK,EAAE;;gBACN;AACT,YAAA,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,KAAK;AACpC,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;;;AA1BX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uCAAuC,gDAK1C,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AALZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uCAAuC,iGCVpD,kzBAqBA,EAAA,MAAA,EAAA,CAAA,yvSAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDXa,uCAAuC,EAAA,UAAA,EAAA,CAAA;kBANnD,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sCAAsC,cAGpC,KAAK,EAAA,QAAA,EAAA,kzBAAA,EAAA,MAAA,EAAA,CAAA,yvSAAA,CAAA,EAAA;;0BAOf,MAAM;2BAAC,eAAe;;;AEfzB,IAAY,UAMX;AAND,CAAA,UAAY,UAAU,EAAA;AACrB,IAAA,UAAA,CAAA,UAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAS;AACT,IAAA,UAAA,CAAA,UAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAY;AACZ,IAAA,UAAA,CAAA,UAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAW;AACX,IAAA,UAAA,CAAA,UAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAY;AACZ,IAAA,UAAA,CAAA,UAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAY;AACb,CAAC,EANW,UAAU,KAAV,UAAU,GAMrB,EAAA,CAAA,CAAA;;MCCY,cAAc,CAAA;AACN,IAAA,YAAA;AAApB,IAAA,WAAA,CAAoB,YAAyB,EAAA;QAAzB,IAAY,CAAA,YAAA,GAAZ,YAAY;;AAChC;;;;AAIG;AACH,IAAA,SAAS,CAAC,KAAU,EAAE,UAAmB,EAAE,MAAe,EAAA;AACzD,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC;AACnE,QAAA,IAAI,KAAK,GAAG,CAAC,EAAE;YACd,MAAM,GAAG,MAAM;;AAEhB,QAAA,OAAO,MAAM;;wGAZF,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA7D,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAAd,cAAc,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACL,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,UAAU,EAAE,KAAK;AACjB,iBAAA;;;MCOY,oCAAoC,CAAA;IACvC,UAAU,GAAoC,IAAI;AAClD,IAAA,QAAQ,GAA4B,uBAAuB,CAAC,OAAO;AACnE,IAAA,iBAAiB;AAE1B,IAAA,QAAQ,GAAgC,2BAA2B,CAAC,OAAO;IAC3E,IAAI,GAAW,CAAC;IAChB,GAAG,GAAW,CAAC;IAEf,2BAA2B,GAAG,2BAA2B;IACzD,uBAAuB,GAAG,uBAAuB;AAEjD,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;wGAdI,oCAAoC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oCAAoC,ECbjD,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,+/TA4OA,EDlOa,MAAA,EAAA,CAAA,gySAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA8D,cAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAA,CAAA;;4FAGjG,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAPhD,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iCAAiC,EAG/B,UAAA,EAAA,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cACjG,KAAK,EAAA,QAAA,EAAA,+/TAAA,EAAA,MAAA,EAAA,CAAA,gySAAA,CAAA,EAAA;wDAGR,UAAU,EAAA,CAAA;sBAAlB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,iBAAiB,EAAA,CAAA;sBAAzB;;;MEIW,2BAA2B,CAAA;AAOnB,IAAA,UAAA;AAAgC,IAAA,QAAA;AAA4B,IAAA,GAAA;IANvE,oBAAoB,GAAoC,IAAI;AAC5D,IAAA,4BAA4B,GAAgC,2BAA2B,CAAC,OAAO;AAC/F,IAAA,iBAAiB;IAElB,YAAY,GAA8D,IAAI;AAEtF,IAAA,WAAA,CAAoB,UAAsB,EAAU,QAAkB,EAAU,GAAqB,EAAA;QAAjF,IAAU,CAAA,UAAA,GAAV,UAAU;QAAsB,IAAQ,CAAA,QAAA,GAAR,QAAQ;QAAoB,IAAG,CAAA,GAAA,GAAH,GAAG;;IAInF,YAAY,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,IAAI,KAAK,qBAAqB,CAAC,MAAM,EAAE;YACtF;;QAED,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;;AAEtD,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,oCAAoC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;;AAG/G,YAAA,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE;;AAGnD,YAAA,MAAM,OAAO,GAAI,IAAI,CAAC,YAAY,CAAC,QAAiC,CAAC,SAAS,CAAC,CAAC,CAAgB;AAChG,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;;YAGlC,IAAI,CAAC,8BAA8B,EAAE;;;IAMvC,YAAY,GAAA;QACX,IAAI,CAAC,OAAO,EAAE;;IAGP,8BAA8B,GAAA;QACrC,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE;QAExB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;YACzC,UAAU,EAAE,IAAI,CAAC,oBAAoB;YACrC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,QAAQ,EAAE,IAAI,CAAC,4BAA4B;AAC3C,SAAA,CAAC;AAEF,QAAA,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE;AAE1F,QAAA,QAAQ,IAAI,CAAC,4BAA4B;YACxC,KAAK,2BAA2B,CAAC,KAAK;gBACrC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;AACvE,gBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;gBACnD;YACD,KAAK,2BAA2B,CAAC,KAAK;gBACrC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;AACvE,gBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC;gBACrD;YACD,KAAK,2BAA2B,CAAC,KAAK;AACrC,gBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;gBACnD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC;gBACrE;YACD,KAAK,2BAA2B,CAAC,IAAI;AACpC,gBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gBAClD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC;gBACrE;;;AAIH,IAAA,IAAY,qBAAqB,GAAA;AAChC,QAAA,QACC,IAAI,CAAC,oBAAoB,EAAE,KAAK,KAAK,SAAS;AAC9C,YAAA,IAAI,CAAC,oBAAoB,EAAE,QAAQ,KAAK,SAAS;AACjD,YAAA,IAAI,CAAC,oBAAoB,EAAE,YAAY,KAAK,SAAS;AACrD,YAAA,IAAI,CAAC,oBAAoB,EAAE,eAAe,KAAK,SAAS;AACxD,YAAA,IAAI,CAAC,oBAAoB,EAAE,cAAc,KAAK,SAAS;;IAIzD,WAAW,GAAA;QACV,IAAI,CAAC,OAAO,EAAE;;IAGP,OAAO,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;;AAEtB,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;AAC3B,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;;;wGAtFd,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA3B,2BAA2B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,4BAAA,EAAA,8BAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAJvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,UAAU,EAAE,KAAK;AACjB,iBAAA;qIAES,oBAAoB,EAAA,CAAA;sBAA5B;gBACQ,4BAA4B,EAAA,CAAA;sBAApC;gBACQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAQD,YAAY,EAAA,CAAA;sBAFX,YAAY;uBAAC,YAAY;;sBACzB,YAAY;uBAAC,OAAO;gBAuBrB,YAAY,EAAA,CAAA;sBAFX,YAAY;uBAAC,YAAY;;sBACzB,YAAY;uBAAC,MAAM;;;MCrCR,6BAA6B,CAAA;AACzC;;AAEG;AACM,IAAA,gBAAgB;AAEzB;;AAEG;AACM,IAAA,aAAa;AAEtB;;AAEG;AACM,IAAA,iBAAiB;AAE1B;;AAEG;IACM,aAAa,GAAY,KAAK;AAEvC;;AAEG;AACM,IAAA,4BAA4B,GAAgC,2BAA2B,CAAC,KAAK;IAEtG,yBAAyB,GAAY,KAAK;AAC1C,IAAA,cAAc;AACd,IAAA,iBAAiB;AACjB,IAAA,YAAY;IACZ,UAAU,GAAG,UAAU;AAEvB,IAAA,6BAA6B,GAAG,SAAS,CAAA,CAAA,MAAA,CAAQ;AACjD,IAAA,+BAA+B,GAAG,SAAS,CAAA,CAAA,QAAA,CAAU;AACrD,IAAA,YAAY;AAEZ,IAAA,WAAA,GAAA;AAEA,IAAA,IAAI,gBAAgB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,IAAI,KAAK;;AAGxD,IAAA,IAAI,yBAAyB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,yBAAyB,IAAI,SAAS;;IAErE,QAAQ,GAAA;QACP,IAAI,IAAI,CAAC,iBAAiB;AACzB,YAAA,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;AAClF,gBAAA,IAAI,CAAC,YAAY,GAAG,GAAG;AACxB,aAAC,CAAC;;AAGJ,IAAA,WAAW,CAAC,OAAsB,EAAA;AACjC,QAAA,IAAI,kBAAkB,IAAI,OAAO,EAAE;AAClC,YAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,UAAU,EAAE;gBACtC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,cAAc;gBACrE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,iBAAiB;AAC3E,gBAAA,IAAI,CAAC,YAAY;AAChB,oBAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,iBAAiB,CAAC,SAAS;AAC5D,wBAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,iBAAiB,CAAC,YAAY;wBAC/D,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,iBAAiB,CAAC,cAAc;;;;AAKrE,IAAA,sBAAsB,CAAC,UAAsB,EAAA;QAC5C,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,cAAc,EAAE;AAClD,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ;YACvE,QAAQ,UAAU;AACjB,gBAAA,KAAK,UAAU,CAAC,SAAS,EAAE;AAC1B,oBAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,MAAM;;AAEjD,gBAAA,KAAK,UAAU,CAAC,YAAY,EAAE;AAC7B,oBAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,GAAG,MAAM;;AAEpD,gBAAA,KAAK,UAAU,CAAC,WAAW,EAAE;AAC5B,oBAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,cAAc,GAAG,MAAM;;AAEtD,gBAAA,KAAK,UAAU,CAAC,YAAY,EAAE;AAC7B,oBAAA,OAAO,IAAI,CAAC,YAAY,GAAG,MAAM;;AAElC,gBAAA,KAAK,UAAU,CAAC,YAAY,EAAE;oBAC7B,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK;;gBAEhE,SAAS;AACR,oBAAA,OAAO,CAAC;;;;AAKX,QAAA,OAAO,CAAC;;AAGT,IAAA,WAAW;wGA7FC,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA7B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,mUCf1C,yqPAiLA,EAAA,MAAA,EAAA,CAAA,qrIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA9D,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA4B,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA6C,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAgB,2BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,8BAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,CAAA;;4FDlKa,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBANzC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,cAGzB,KAAK,EAAA,QAAA,EAAA,yqPAAA,EAAA,MAAA,EAAA,CAAA,qrIAAA,CAAA,EAAA;wDAMR,gBAAgB,EAAA,CAAA;sBAAxB;gBAKQ,aAAa,EAAA,CAAA;sBAArB;gBAKQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAKQ,aAAa,EAAA,CAAA;sBAArB;gBAKQ,4BAA4B,EAAA,CAAA;sBAApC;;;MEjCW,kBAAkB,CAAA;AAC9B,IAAA,SAAS,CAAC,GAAW,EAAA;QACpB,IAAI,CAAC,GAAG,EAAE;AACT,YAAA,OAAO,EAAE;;;QAIV,OAAO,GAAG,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC;;wGAPtC,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAAlB,kBAAkB,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACL,oBAAA,IAAI,EAAE,gBAAgB;AACtB,oBAAA,UAAU,EAAE,KAAK;AACjB,iBAAA;;;MCqCY,0BAA0B,CAAA;AAqJlB,IAAA,UAAA;AAA+B,IAAA,SAAA;AApJjB,IAAA,qBAAqB;AAEvD;;AAEG;AACM,IAAA,UAAU;AAEnB;;AAEG;IACM,UAAU,GAAY,KAAK;AAEpC;;AAEG;IACM,YAAY,GAAY,IAAI;AAErC;;AAEG;IACM,WAAW,GAAY,KAAK;AAErC;;AAEG;IACM,gBAAgB,GAAY,KAAK;AAE1C;;AAEG;IACM,QAAQ,GAAY,KAAK;AAElC;;AAEG;AACM,IAAA,aAAa;AAEtB;;AAEG;AACM,IAAA,aAAa;AAEtB;;AAEG;AACM,IAAA,gBAAgB;AAEzB;;AAEG;AACM,IAAA,oBAAoB;AAE7B;;AAEG;AACO,IAAA,iBAAiB,GAAG,IAAI,YAAY,EAAU;AAExD;;AAEG;AACO,IAAA,eAAe,GAAG,IAAI,YAAY,EAAU;AAEtD,IAAA,gBAAgB;AAChB,IAAA,aAAa;IACb,kBAAkB,GAAG,kBAAkB;AACvC,IAAA,2BAA2B;IAE3B,aAAa,GAAY,IAAI;AAC7B,IAAA,UAAU;AACV,IAAA,YAAY;AACZ,IAAA,WAAW;AACX,IAAA,YAAY;IAEZ,iBAAiB,GAAG,iBAAiB;IAGrC,WAAW,GAAA;QACV,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ;YAC7G;AAED,QAAA,IAAI,CAAC,aAAa,EAAE,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;AACvE,QAAA,IAAI,CAAC,aAAa,EAAE,eAAe,CAAC,IAAI,CAAC;AACxC,YAAA,GAAG,IAAI,CAAC,aAAa,EAAE,cAAc;AACrC,YAAA,QAAQ,EAAE,YAAY;AACtB,YAAA,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;AAC3C,YAAA,eAAe,EAAE,CAAC;AAClB,YAAA,gBAAgB,EAAE,CAAC;AACnB,YAAA,SAAS,EAAE,SAAS;AACpB,SAAA,CAAC;QACF,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG9C,IAAA,IAAI,OAAO,GAAA;AACV,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM;;AAGpC,IAAA,IAAI,UAAU,GAAA;AACb,QAAA,IACC,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,MAAM;AACpC,YAAA,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,IAAI,KAAK,kBAAkB,CAAC,QAAQ,CAAC;AAErG,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM;AAE3C,QAAA,OAAO,IAAI;;AAGZ,IAAA,IAAI,UAAU,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACvB,YAAA,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI;gBAC9B,KAAK,kBAAkB,CAAC,QAAQ;AAC/B,oBAAA,OAAO,iBAAiB;gBACzB,KAAK,kBAAkB,CAAC,QAAQ;AAC/B,oBAAA,OAAO,wBAAwB;gBAChC,KAAK,kBAAkB,CAAC,KAAK;AAC5B,oBAAA,OAAO,cAAc;gBACtB,KAAK,kBAAkB,CAAC,UAAU;AACjC,oBAAA,OAAO,0BAA0B;AAClC,gBAAA;AACC,oBAAA,OAAO,EAAE;;;AAGZ,QAAA,OAAO,EAAE;;AAGV,IAAA,IAAI,QAAQ,GAAA;AACX,QAAA,OAAO,CAAC,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,QAAQ,IAAI,KAAK,CAAC;;AAG/E,IAAA,IAAI,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,IAAI,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI;;QAG3G,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,IAAI,CAAC,IAAI,CACjE,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,iBAAiB,CAAC,eAAe,CACrD;QACD,IAAI,gBAAgB,EAAE;AACrB,YAAA,gBAAgB,CAAC,KAAK,GAAG,SAAS,CAAA,iBAAiB;AACnD,YAAA,gBAAgB,CAAC,WAAW,GAAG,SAAS,CAAA,8HAA8H;AACtK,YAAA,OAAO,gBAAgB;;QAGxB,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;;AAG7C,IAAA,IAAI,YAAY,GAAA;QACf,OAAO,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;;IAG7C,WAAoB,CAAA,UAAqB,EAAU,SAAmB,EAAA;QAAlD,IAAU,CAAA,UAAA,GAAV,UAAU;QAAqB,IAAS,CAAA,SAAA,GAAT,SAAS;;IAE5D,QAAQ,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;YAElD,IAAI,CAAC,iBAAiB,EAAE;YAExB,IAAI,CAAC,gBAAgB,GAAG;gBACvB,UAAU,EAAE,IAAI,CAAC,UAAU;AAC3B,gBAAA,WAAW,EAAE,IAAI;aACjB;;;AAIF,QAAA,IAAI,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;AAC5F,YAAA,IAAI,IAAI,EAAE,2BAA2B,KAAK,SAAS;gBAClD,UAAU,CAAC,MAAK;AACf,oBAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI,EAAE,2BAA2B;AACrE,iBAAC,CAAC;AACJ,SAAC,CAAC;QAEF,IAAI,IAAI,CAAC,aAAa;AACrB,YAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;AAC9E,gBAAA,IAAI,CAAC,YAAY,GAAG,GAAG;AACxB,aAAC,CAAC;;AAGJ,IAAA,WAAW,CAAC,OAAsB,EAAA;QACjC,IAAI,YAAY,IAAI,OAAO;AAC1B,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;gBACpB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;gBAClD,IAAI,CAAC,gBAAgB,GAAG;oBACvB,UAAU,EAAE,IAAI,CAAC,UAAU;AAC3B,oBAAA,WAAW,EAAE,IAAI;iBACjB;gBAED,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,KAAK,kBAAkB,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,EAAE;AAC9G,oBAAA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC;AACtD,oBAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI;;;gBAI3B,IAAI,CAAC,iBAAiB,EAAE;;;IAInB,iBAAiB,GAAA;;AAExB,QAAA,IACC,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,YAAY;AAC1C,YAAA,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,oBAAoB;AAClD,YAAA,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,WAAW;AACzC,YAAA,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,cAAc;YAC7C,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,iBAAiB,CAAC,YAAY,CAAC,EAClF;YACD,MAAM,IAAI,GACT,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY;AACxC,gBAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,oBAAoB;AAChD,gBAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW;AACvC,gBAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,cAAc;AAC3C,YAAA,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,CAAC;gBACjC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,oBAAoB,CAAC;gBAC3D,WAAW,EAAE,SAAS,CAAA,CACrB,WAAA,EAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,EAAE,sBAAsB,CAAC,IAAI,eAC9F,CACC,YAAA,EAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,EAAE,sBAAsB,CAAC,IAAI,eAC/F,CACC,sBAAA,EAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,oBAAoB,EAAE,sBAAsB,CAAC;AAClG,oBAAA,eACD,uBACC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,cAAc,EAAE,sBAAsB,CAAC;AAC5F,oBAAA,eACD,CAAG,CAAA,CAAA;gBACH,IAAI,EAAE,iBAAiB,CAAC,YAAY;AACpC,aAAA,CAAC;;AAGH,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE;AAC7D,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI;AAAE,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,EAAE;YAC1D,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,iBAAiB,CAAC,YAAY,CAAC,KAAK,SAAS;AACjG,gBAAA,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,CAAC;oBACjC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY;oBAC7D,WAAW,EAAE,SAAS,CAAA,CAAmB,iBAAA,CAAA;oBACzC,IAAI,EAAE,iBAAiB,CAAC,YAAY;AACpC,iBAAA,CAAC;;;AAIJ,QAAA,IACC,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,MAAM;YACtC,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,IAAI,KAAK,kBAAkB,CAAC,QAAQ,EACnE;AACD,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI;AAAE,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,EAAE;;YAE1D,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,iBAAiB,CAAC,SAAS,CAAC,KAAK,SAAS;AAC9F,gBAAA,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,CAAC;oBACjC,KAAK,EACJ,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,YAAY,KAAK,aAAa,CAAC;0BAChE,SAAS,CAAA,CAAW,SAAA;0BACpB,SAAS,CAAA,CAA0B,wBAAA,CAAA;oBACvC,WAAW,EACV,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,YAAY,KAAK,aAAa,CAAC;0BAChE,SAAS,CAAA,CAAmB,iBAAA;0BAC5B,SAAS,CAAA,CAAuC,qCAAA,CAAA;oBACpD,IAAI,EAAE,iBAAiB,CAAC,SAAS;AACjC,iBAAA,CAAC;;AAGJ,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI;YAC1B,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CACvD,GAAG,IACF,GAAG,CAAC,WAAW,KAAK,WAAW;AAC/B,gBAAA,GAAG,CAAC,WAAW,CAAC,WAAW,EAAE,KAAK,wBAAwB;AAC1D,gBAAA,GAAG,CAAC,WAAW,CAAC,WAAW,EAAE,KAAK,iBAAiB;gBACnD,GAAG,CAAC,WAAW,CAAC,WAAW,EAAE,KAAK,cAAc,CACjD;;AAGF,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI;AAC3B,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;;QAGtG,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,iBAAiB,CAAC,eAAe,CAAC;QAC9G,IAAI,gBAAgB,EAAE;AACrB,YAAA,IAAI,gBAAgB,CAAC,KAAK,IAAI,iBAAiB,EAAE;AAChD,gBAAA,gBAAgB,CAAC,KAAK,GAAG,SAAS,CAAA,iBAAiB;AACnD,gBAAA,gBAAgB,CAAC,WAAW,GAAG,SAAS,CAAA,8HAA8H;;AAEvK,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG;gBACzB,gBAAgB;AAChB,gBAAA,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,iBAAiB,CAAC,eAAe,CAAC;aACxF;;;IAIH,cAAc,GAAA;AACb,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;;IAG3B,aAAa,GAAA;AACZ,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;;IAG1B,UAAU,GAAA;QACT,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;AAChD,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;;IAG9B,UAAU,GAAA;QACT,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;AAClD,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,QAAA,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE;AACtC,QAAA,IAAI,CAAC,qBAAqB,EAAE,SAAS,EAAE;;IAGxC,YAAY,GAAA;AACX,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,uCAAuC,EAAE;YAC7D,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,GAAG,EAAE;YACpC,KAAK,EAAE,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,OAAO;AACnC,YAAA,UAAU,EAAE,sBAAsB;YAClC,SAAS,EAAE,SAAS,CAAA,CAAuB,qBAAA,CAAA;AAC3C,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,IAAI,EAAE;gBACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,aAAa,EAAE,IAAI,CAAC,aAAa;AACjC,gBAAA,cAAc,EAAE,IAAI,CAAC,aAAa,EAAE,oBAAoB,EAAE,YAAY;gBACtE,UAAU,EAAE,IAAI,CAAC,UAAU;AACY,aAAA;AACxC,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE;;IAGvC,aAAa,GAAA;AACZ,QAAA,IAAI,CAAC,aAAa,EAAE,eAAe,CAAC,IAAI,CAAC;AACxC,YAAA,GAAG,IAAI,CAAC,aAAa,EAAE,cAAc;AACrC,YAAA,QAAQ,EAAE,YAAY;AACtB,YAAA,eAAe,EAAE,CAAC;AAClB,YAAA,gBAAgB,EAAE,CAAC;AACnB,YAAA,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE;AAChC,SAAA,CAAC;;IAGH,iBAAiB,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG;YAAE;QAC7B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC;;AAG9C,IAAA,cAAc,CAAC,WAA2B,EAAA;QACzC,WAAW,EAAE,QAAQ,EAAE;;IAGxB,aAAa,GAAA;AACZ,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG;YAAE;AAC7B,QAAA,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,IAAI,CAC1D,MAAK;AACJ,YAAA,IAAI,CAAC,WAAW,GAAG,SAAS,CAAA,aAAa;AACzC,YAAA,UAAU,CAAC,OAAO,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;SAChD,EACD,GAAG,IAAG;AACL,YAAA,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC;AAC3C,YAAA,IAAI,CAAC,WAAW,GAAG,SAAS,CAAA,sBAAsB;AACnD,SAAC,CACD;;IAGF,qBAAqB,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,GAAG;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC;;AAG3E,IAAA,WAAW;wGAvWC,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAhE,IAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,EAC3B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,aAAA,EAAA,eAAA,EAAA,aAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,cAAc,EC3C1B,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,m6+BA4ZA,ED1Xa,MAAA,EAAA,CAAA,8lZAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA6B,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA6C,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6NAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAf,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,oFAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAyB,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,6BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,8BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,UAAA,EAAA;YACX,OAAO,CAAC,QAAQ,EAAE;gBACjB,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AACpC,gBAAA,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;aACtE,CAAC;AACF,SAAA,EAAA,CAAA;;4FAGW,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAZtC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EAGtB,UAAA,EAAA;wBACX,OAAO,CAAC,QAAQ,EAAE;4BACjB,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AACpC,4BAAA,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;yBACtE,CAAC;AACF,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,m6+BAAA,EAAA,MAAA,EAAA,CAAA,8lZAAA,CAAA,EAAA;uGAGiB,qBAAqB,EAAA,CAAA;sBAAtD,SAAS;uBAAC,cAAc;gBAKhB,UAAU,EAAA,CAAA;sBAAlB;gBAKQ,UAAU,EAAA,CAAA;sBAAlB;gBAKQ,YAAY,EAAA,CAAA;sBAApB;gBAKQ,WAAW,EAAA,CAAA;sBAAnB;gBAKQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAKQ,QAAQ,EAAA,CAAA;sBAAhB;gBAKQ,aAAa,EAAA,CAAA;sBAArB;gBAKQ,aAAa,EAAA,CAAA;sBAArB;gBAKQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAKQ,oBAAoB,EAAA,CAAA;sBAA5B;gBAKS,iBAAiB,EAAA,CAAA;sBAA1B;gBAKS,eAAe,EAAA,CAAA;sBAAxB;gBAgBD,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;ME5FrB,8BAA8B,CAAA;AAuEtB,IAAA,SAAA;AAtEpB;;AAEG;IACM,cAAc,GAAkB,EAAE;AAE3C;;AAEG;AACM,IAAA,aAAa;AAEtB;;AAEG;AACM,IAAA,aAAa;AAEtB;;AAEG;AACM,IAAA,gBAAgB;AAEzB;;AAEG;AACO,IAAA,gBAAgB,GAAG,IAAI,YAAY,EAAW;AAExD,IAAA,YAAY;AACZ,IAAA,aAAa,GAAG,IAAI,kBAAkB,CAAC,EAAE,CAAC;IAElC,cAAc,GAAW,CAAC;IAC1B,SAAS,GAAW,EAAE;IACtB,YAAY,GAAW,CAAC;AAE4B,IAAA,gBAAgB;AAE5E,IAAA,IAAI,WAAW,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK;;AAGhC,IAAA,IAAI,oBAAoB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,cAAc,EAAE,MAAM;;AAGnC,IAAA,IAAI,kBAAkB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,MAAM;;AAGjC,IAAA,IAAI,iBAAiB,GAAA;QACpB,IAAI,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,SAAS,EAAE;AAC7C,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC;;aAC/D;YACN,OAAO,IAAI,CAAC,YAAY;;;AAI1B,IAAA,IAAI,WAAW,GAAA;QACd,OAAO,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY;;AAGhE,IAAA,IAAI,eAAe,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC,EAAE;AAChF,YAAA,OAAO,KAAK;;aACN;AACN,YAAA,OAAO,IAAI;;;AAIb,IAAA,IAAI,kBAAkB,GAAA;QACrB,OAAO,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,MAAM,KAAK,CAAC;;AAG3D,IAAA,WAAA,CAAoB,SAAoB,EAAA;QAApB,IAAS,CAAA,SAAA,GAAT,SAAS;;IAE7B,QAAQ,GAAA;QACP,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;YACzF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE,CAAC;AAClD,SAAC,CAAC;;IAGH,eAAe,GAAA;QACd,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,QAAQ;aACrD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC;AAC1C,aAAA,SAAS,CAAC,CAAC,CAAM,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;;AAGvC,IAAA,aAAa,CAAC,CAAM,EAAA;AAC3B,QAAA,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,YAAY;AAC7C,QAAA,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC,YAAY;AAC/C,QAAA,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS;QACzC,MAAM,eAAe,GAAG,GAAG;AAC3B,QAAA,MAAM,eAAe,GAAG,iBAAiB,GAAG,eAAe,GAAG,eAAe;AAC7E,QAAA,IAAI,cAAc,GAAG,eAAe,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,kBAAkB,EAAE;AACnF,YAAA,IAAI,CAAC,YAAY,IAAI,CAAC;YACtB,IAAI,CAAC,QAAQ,CAAC,iBAAiB,GAAG,CAAC,GAAG,eAAe,CAAC;;;AAIhD,IAAA,QAAQ,CAAC,QAAgB,EAAA;AAChC,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,WAAW,EAAE,QAAQ,CAAC;;AAG/E,IAAA,WAAW,CAAC,KAAa,EAAA;QAChC,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAChC,MAAM,IACL,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC;AAC1E,YAAA,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,CACzF;;IAGF,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGjC,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;;IAGhC,sBAAsB,GAAA;;QAErB,IAAI,IAAI,CAAC,kBAAkB;YAC1B,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,IAAI,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;;YAC1G,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;;AAGrD,IAAA,gBAAgB,CAAC,EAAW,EAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,EAAE,CAAC,IAAI,SAAS;;AAG7F,IAAA,iBAAiB,CAAC,QAAgB,EAAA;QACjC,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,IAAI,EAAE;QACrE,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,QAAQ,CAAC,CAAC;;AAG5F,IAAA,iBAAiB,CAAC,QAAgB,EAAA;QACjC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC;AACxE,QAAA,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC/B,QAAA,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;;AAG3E,IAAA,WAAW;wGA3IC,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA9B,8BAA8B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,aAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAiCH,UAAU,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3DlD,w6FAyEA,EAAA,MAAA,EAAA,CAAA,6hiBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAnE,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA4B,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAkB,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAkB,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAjB,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAmC,0BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,eAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,sBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FD/Ca,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAN1C,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,cAG1B,KAAK,EAAA,QAAA,EAAA,w6FAAA,EAAA,MAAA,EAAA,CAAA,6hiBAAA,CAAA,EAAA;8EAMR,cAAc,EAAA,CAAA;sBAAtB;gBAKQ,aAAa,EAAA,CAAA;sBAArB;gBAKQ,aAAa,EAAA,CAAA;sBAArB;gBAKQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAKS,gBAAgB,EAAA,CAAA;sBAAzB;gBAS2D,gBAAgB,EAAA,CAAA;sBAA3E,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,kBAAkB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;;;ME9BvC,6BAA6B,CAAA;AASrB,IAAA,cAAA;AARpB,IAAA,gBAAgB,GAAG,IAAI,kBAAkB,CAAC,EAAE,CAAC;AAC7C,IAAA,mBAAmB;AACnB,IAAA,YAAY;AAEZ,IAAA,IAAI,wBAAwB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAiB;;AAGlD,IAAA,WAAA,CAAoB,cAAyC,EAAA;QAAzC,IAAc,CAAA,cAAA,GAAd,cAAc;;IAElC,QAAQ,GAAA;QACP,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC,0BAA0B;;IAG1E,SAAS,GAAA;AACR,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK;QAC1C,IAAI,CAAC,MAAM,EAAE;;AAEZ,YAAA,IAAI,CAAC,YAAY,GAAG,uBAAuB;YAC3C;;;;QAID,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE;AACrD,YAAA,IAAI,CAAC,YAAY,GAAG,uBAAuB;YAC3C;;;;QAID,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE;AAC9F,YAAA,IAAI,CAAC,YAAY,GAAG,iDAAiD;YACrE;;;AAGD,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE;QACtB,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AAEtF,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;;AAGnC,IAAA,YAAY,CAAC,MAAc,EAAA;AAC1B,QAAA,IAAI,CAAC,MAAM;YAAE;;QAEb,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,CAAS,KAAK,CAAC,KAAK,MAAM,CAAC,CAAC;AAC7G,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE;;AAGvB,IAAA,UAAU,CAAC,GAAW,EAAA;QACrB,MAAM,QAAQ,GAAG,qDAAqD;AACtE,QAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;;AAG1B,IAAA,aAAa,CAAC,MAAc,EAAA;QAC3B,MAAM,WAAW,GAAG,qCAAqC;AACzD,QAAA,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;;AAGhC,IAAA,gBAAgB,CAAC,SAAiB,EAAA;QACjC,MAAM,cAAc,GAAG,uDAAuD;AAC9E,QAAA,OAAO,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;;wGA5D1B,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAhB,yBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA7B,6BAA6B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7B1C,u8EA8DA,EDrDa,MAAA,EAAA,CAAA,24bAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAvB,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAoC,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAjB,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,UAAA,EAAA;AACX,YAAA,OAAO,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1G,OAAO,CAAC,gBAAgB,EAAE;gBACzB,UAAU,CAAC,QAAQ,EAAE;AACpB,oBAAA,OAAO,CACN,cAAc,EACd,SAAS,CAAC;wBACT,KAAK,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;wBACtD,KAAK,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;wBACpD,KAAK,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;wBACtD,KAAK,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;wBACpD,KAAK,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;wBACtD,KAAK,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACpD,qBAAA,CAAC,CACF;iBACD,CAAC;aACF,CAAC;AACF,SAAA,EAAA,CAAA;;4FAGW,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAxBzC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,EAGzB,UAAA,EAAA;AACX,wBAAA,OAAO,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC1G,OAAO,CAAC,gBAAgB,EAAE;4BACzB,UAAU,CAAC,QAAQ,EAAE;AACpB,gCAAA,OAAO,CACN,cAAc,EACd,SAAS,CAAC;oCACT,KAAK,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;oCACtD,KAAK,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;oCACpD,KAAK,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;oCACtD,KAAK,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;oCACpD,KAAK,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;oCACtD,KAAK,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACpD,iCAAA,CAAC,CACF;6BACD,CAAC;yBACF,CAAC;AACF,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,u8EAAA,EAAA,MAAA,EAAA,CAAA,24bAAA,CAAA,EAAA;;;MEgBL,2BAA2B,CAAA;AA6C9B,IAAA,iBAAA;AACA,IAAA,YAAA;AACA,IAAA,UAAA;AACwB,IAAA,IAAA;IA/CjC,UAAU,GAAe,EAAE;IAC3B,kBAAkB,GAAa,EAAE;IACjC,QAAQ,GAAY,KAAK;AACzB,IAAA,cAAc,GAAoB;AACjC,QAAA,YAAY,EAAE,CAAC;AACf,QAAA,aAAa,EAAE,CAAC;AAChB,QAAA,aAAa,EAAE,CAAC;AAChB,QAAA,eAAe,EAAE,CAAC;KAClB;AAED,IAAA,eAAe;IACf,cAAc,GAAkB,EAAE;IAClC,eAAe,GAAkB,EAAE;IACnC,YAAY,GAAW,CAAC;IACxB,YAAY,GAAW,CAAC;IACxB,gBAAgB,GAAa,EAAE;IAC/B,OAAO,GAAY,IAAI;IAEvB,cAAc,GAAW,CAAC;IAC1B,iBAAiB,GAAW,CAAC;IAC7B,gBAAgB,GAAW,CAAC;IAE5B,eAAe,GAAW,CAAC;IAC3B,WAAW,GAAW,CAAC;AAEvB,IAAA,eAAe;AACf,IAAA,sBAAsB;AACtB,IAAA,qBAAqB;IACrB,YAAY,GAAY,KAAK;AAC7B,IAAA,uBAAuB;IAEvB,oBAAoB,GAAG,oBAAoB;AAC3C,IAAA,cAAc;AACd,IAAA,YAAY;AAEZ,IAAA,IAAI,aAAa,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,qBAAqB,EAAE,GAAG,CAAC;;AAG/D,IAAA,IAAI,mBAAmB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,mBAAmB;;AAGlD,IAAA,WAAA,CACS,iBAA4C,EAC5C,YAAyB,EACzB,UAAqD,EAC7B,IAA6B,EAAA;QAHrD,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAU,CAAA,UAAA,GAAV,UAAU;QACc,IAAI,CAAA,IAAA,GAAJ,IAAI;;IAGrC,QAAQ,GAAA;QACP,IAAI,CAAC,cAAc,EAAE;AAErB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;YACxF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,KAAK,qBAAqB,CAAC,MAAM;AAC3D,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;AACpF,YAAA,IAAI,CAAC,YAAY,GAAG,GAAG;AACxB,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;AAChG,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,EAAE;YAC5C,IACC,CAAC,QAAQ,CAAC,mBAAmB;gBAC7B,CAAC,QAAQ,CAAC,gBAAgB;gBAC1B,CAAC,QAAQ,CAAC,eAAe;gBACzB,CAAC,QAAQ,CAAC,iBAAiB;gBAC3B,CAAC,QAAQ,CAAC,2BAA2B;gBACrC,CAAC,QAAQ,CAAC,iBAAiB;AAC3B,gBAAA,QAAQ,CAAC,kBAAkB;gBAC3B,QAAQ,CAAC,kBAAkB,CAAC,MAAM,KAAK,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM;AAC7E,gBAAA,EACC,IAAI,CAAC,eAAe,CAAC,aAAa,KAAK,CAAC;AACxC,oBAAA,IAAI,CAAC,eAAe,CAAC,qBAAqB,KAAK,CAAC;AAChD,oBAAA,IAAI,CAAC,eAAe,CAAC,UAAU,KAAK,CAAC;AACrC,oBAAA,IAAI,CAAC,eAAe,CAAC,kBAAkB,KAAK,CAAC;AAC7C,oBAAA,EAAE,IAAI,CAAC,eAAe,CAAC,UAAU,IAAI,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,CAAC,CAAC,CACjF,EACA;gBACD,UAAU,CAAC,MAAK;AACf,oBAAA,IAAI,IAAI,CAAC,eAAe,CAAC,aAAa,GAAG,CAAC;wBACzC,IAAI,CAAC,iBAAiB,CAAC;AACtB,8BAAE,GAAG,CAAC,iBAAiB,CAAC,YAAY;AACpC,8BAAE,GAAG,CAAC,iBAAiB,CAAC,UAAU;8BAChC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;yBACnC,IAAI,IAAI,CAAC,eAAe,CAAC,qBAAqB,GAAG,CAAC,EAAE;wBACxD,IAAI,CAAC,iBAAiB,CAAC;AACtB,8BAAE,GAAG,CAAC,iBAAiB,CAAC,YAAY;AACpC,8BAAE,GAAG,CAAC,iBAAiB,CAAC,kBAAkB;8BACxC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACvC,wBAAA,IAAI,IAAI,CAAC,eAAe,CAAC,cAAc,GAAG,CAAC;4BAC1C,IAAI,CAAC,iBAAiB,CAAC;AACrB,iCAAA,GAAG,CAAC,iBAAiB,CAAC,aAAa;kCAClC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAExC,wBAAA,IAAI,IAAI,CAAC,eAAe,CAAC,gBAAgB,GAAG,CAAC;4BAC5C,IAAI,CAAC,iBAAiB,CAAC;AACrB,iCAAA,GAAG,CAAC,iBAAiB,CAAC,eAAe;kCACpC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;;AAClC,yBAAA,IAAI,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,CAAC;wBAC7C,IAAI,CAAC,iBAAiB,CAAC;AACtB,8BAAE,GAAG,CAAC,iBAAiB,CAAC,YAAY;AACpC,8BAAE,GAAG,CAAC,iBAAiB,CAAC,OAAO;8BAC7B,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACnC,yBAAA,IAAI,IAAI,CAAC,eAAe,CAAC,UAAU,IAAI,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,CAAC,EAAE;wBACxF,IAAI,CAAC,iBAAiB,CAAC;AACtB,8BAAE,GAAG,CAAC,iBAAiB,CAAC,YAAY;AACpC,8BAAE,GAAG,CAAC,iBAAiB,CAAC,cAAc;AACtC,8BAAE,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;8BACzC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;;yBACjC,IAAI,IAAI,CAAC,eAAe,CAAC,kBAAkB,GAAG,CAAC,EAAE;wBACvD,IAAI,CAAC,iBAAiB,CAAC;AACtB,8BAAE,GAAG,CAAC,iBAAiB,CAAC,YAAY;AACpC,8BAAE,GAAG,CAAC,iBAAiB,CAAC,eAAe;8BACrC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;;AAEzC,iBAAC,CAAC;AAEF,gBAAA,IAAI,CAAC,sBAAsB,GAAG,SAAS,CAAA,uDAAuD;;iBACxF,IACN,CAAC,QAAQ,CAAC,aAAa;gBACvB,CAAC,QAAQ,CAAC,gBAAgB;gBAC1B,CAAC,QAAQ,CAAC,WAAW;gBACrB,EAAE,IAAI,CAAC,gBAAgB,KAAK,CAAC,IAAI,IAAI,CAAC,iBAAiB,KAAK,CAAC,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC,CAAC,EAC1F;gBACD,UAAU,CAAC,MAAK;AACf,oBAAA,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC;wBAC1B,IAAI,CAAC,iBAAiB,CAAC;AACtB,8BAAE,GAAG,CAAC,iBAAiB,CAAC,YAAY;AACpC,8BAAE,GAAG,CAAC,iBAAiB,CAAC,eAAe;8BACrC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACnC,yBAAA,IAAI,IAAI,CAAC,iBAAiB,GAAG,CAAC;wBAClC,IAAI,CAAC,iBAAiB,CAAC;AACtB,8BAAE,GAAG,CAAC,iBAAiB,CAAC,YAAY;AACpC,8BAAE,GAAG,CAAC,iBAAiB,CAAC,cAAc;8BACpC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACnC,yBAAA,IAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC;wBACjC,IAAI,CAAC,iBAAiB,CAAC;AACtB,8BAAE,GAAG,CAAC,iBAAiB,CAAC,YAAY;AACpC,8BAAE,GAAG,CAAC,iBAAiB,CAAC,aAAa;8BACnC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACzC,iBAAC,CAAC;AACF,gBAAA,IAAI,CAAC,qBAAqB,GAAG,SAAS,CAAA,gDAAgD;;;gBAChF,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,sBAAsB,GAAG,IAAI;AACvE,SAAC,CAAC;QAEF,IAAI,CAAC,iBAAiB,CAAC;AACrB,aAAA,GAAG,CAAC,iBAAiB,CAAC,kBAAkB;AACxC,aAAA,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;aACpC,SAAS,CAAC,KAAK,IAAG;;AAElB,YAAA,IACC,KAAK;AACL,gBAAA,CAAC,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,KAAK;AACtF,gBAAA,CAAC,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC,KAAK,EACvF;AACD,gBAAA,IAAI,IAAI,CAAC,eAAe,CAAC,cAAc,GAAG,CAAC;oBAC1C,IAAI,CAAC,iBAAiB,CAAC;AACrB,yBAAA,GAAG,CAAC,iBAAiB,CAAC,aAAa;0BAClC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAExC,gBAAA,IAAI,IAAI,CAAC,eAAe,CAAC,gBAAgB,GAAG,CAAC;oBAC5C,IAAI,CAAC,iBAAiB,CAAC;AACrB,yBAAA,GAAG,CAAC,iBAAiB,CAAC,eAAe;0BACpC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;;;AAIzC,YAAA,IACC,CAAC,KAAK;AACN,iBAAC,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,KAAK;AACrF,oBAAA,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,EACxF;gBACD,IAAI,CAAC,iBAAiB,CAAC;AACrB,qBAAA,GAAG,CAAC,iBAAiB,CAAC,aAAa;sBAClC,QAAQ,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;gBACxC,IAAI,CAAC,iBAAiB,CAAC;AACrB,qBAAA,GAAG,CAAC,iBAAiB,CAAC,eAAe;sBACpC,QAAQ,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;;AAE1C,SAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,CAAC;AACrB,aAAA,GAAG,CAAC,iBAAiB,CAAC,aAAa;AACnC,aAAA,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;aACpC,SAAS,CAAC,KAAK,IAAG;;AAElB,YAAA,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,KAAK;gBACvG,IAAI,CAAC,iBAAiB,CAAC;AACrB,qBAAA,GAAG,CAAC,iBAAiB,CAAC,kBAAkB;sBACvC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YAExC,IAAI,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,cAAc,IAAI,CAAC;gBACpD,IAAI,CAAC,iBAAiB,CAAC;AACrB,qBAAA,GAAG,CAAC,iBAAiB,CAAC,aAAa;sBAClC,QAAQ,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;;AAGzC,YAAA,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC,KAAK;AACrG,gBAAA,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC;AACvG,SAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,CAAC;AACrB,aAAA,GAAG,CAAC,iBAAiB,CAAC,eAAe;AACrC,aAAA,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;aACpC,SAAS,CAAC,KAAK,IAAG;;AAElB,YAAA,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,KAAK;gBACvG,IAAI,CAAC,iBAAiB,CAAC;AACrB,qBAAA,GAAG,CAAC,iBAAiB,CAAC,kBAAkB;sBACvC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YAExC,IAAI,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,gBAAgB,IAAI,CAAC;gBACtD,IAAI,CAAC,iBAAiB,CAAC;AACrB,qBAAA,GAAG,CAAC,iBAAiB,CAAC,eAAe;sBACpC,QAAQ,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;;AAGzC,YAAA,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,KAAK;AACnG,gBAAA,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC;AACvG,SAAC,CAAC;;IAGJ,qBAAqB,GAAA;QACpB,IAAI,kBAAkB,GAAG,CAAC;QAC1B,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE;YAC5D,IAAI,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE;AACrD,gBAAA,kBAAkB,IAAI,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC;;;AAGlE,QAAA,OAAO,kBAAkB;;AAG1B,IAAA,wBAAwB,CAAC,iBAAyB,EAAA;QACjD,QAAQ,iBAAiB;YACxB,KAAK,iBAAiB,CAAC,UAAU;AAChC,gBAAA,OAAO,IAAI,CAAC,eAAe,CAAC,aAAa;YAC1C,KAAK,iBAAiB,CAAC,kBAAkB;AACxC,gBAAA,OAAO,IAAI,CAAC,eAAe,CAAC,qBAAqB;YAClD,KAAK,iBAAiB,CAAC,OAAO;AAC7B,gBAAA,OAAO,IAAI,CAAC,eAAe,CAAC,UAAU;YACvC,KAAK,iBAAiB,CAAC,cAAc;AACpC,gBAAA,OAAO,IAAI,CAAC,2BAA2B,EAAE;AAC1C,YAAA;AACC,gBAAA,OAAO,CAAC;;;IAIX,2BAA2B,GAAA;QAC1B,IAAI,SAAS,GAAG,CAAC;AACjB,QAAA,IAAI,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,cAAc,CAAqB;AACrG,QAAA,KAAK,MAAM,WAAW,IAAI,YAAY,CAAC,QAAQ,EAAE;YAChD,IAAI,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE;gBACzC,SAAS,IAAI,CAAC;;;AAGhB,QAAA,OAAO,SAAS;;IAGjB,4BAA4B,GAAA;AAC3B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,GAAG,CAAC;AAExE,QAAA,MAAM,UAAU,GACf,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,oBAAoB,EAAE,KAAK,EAAE,eAAe,EAAE,UAAU,IAAI,CAAC;AACxF,aAAC,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,oBAAoB,EAAE,KAAK,EAAE,eAAe,EAAE,aAAa,IAAI,CAAC,CAAC;AAE7F,QAAA,IAAI,UAAU,IAAI,CAAC,EAAE;YACpB;;AAGD,QAAA,MAAM,mBAAmB,GAAG,KAAK,IAAG;AACnC,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,EAAE,OAAO,CAAC;YAC3E,OAAO,UAAU,KAAK,IAAI;AAC3B,SAAC;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,IAAG;AACpC,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,iBAAiB;AAEtC,YAAA,IAAI,KAAK,CAAC,SAAS,GAAG,CAAC,IAAI,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;gBAChE,IAAI,CAAC,cAAc,EAAE;;AAGtB,YAAA,IAAI,KAAK,CAAC,YAAY,GAAG,CAAC,IAAI,mBAAmB,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;gBACtE,IAAI,CAAC,iBAAiB,EAAE;;AAGzB,YAAA,IAAI,KAAK,CAAC,cAAc,GAAG,CAAC,IAAI,mBAAmB,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;gBAC1E,IAAI,CAAC,gBAAgB,EAAE;;AAEzB,SAAC,CAAC;;IAGH,uBAAuB,GAAA;QACtB,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,kBAAkB;AACrE,QAAA,IAAI,UAAU,GAAG,IAAI,CAAC,oBAAoB,EAAE;AAC5C,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,IAAI,CAAC,UAAU,CAAC,gBAAgB,IAAI,CAAC,UAAU,CAAC,WAAW;AACvF,YAAA,UAAU,CAAC,aAAa,GAAG,UAAU,CAAC,gBAAgB,GAAG,UAAU,CAAC,WAAW,GAAG,IAAI;AACvF,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,UAAU,EAAE,kBAAkB,IAAI,EAAE,CAAC;AACnG,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAChD,MAAM,IAAI,CAAC,CAAC,kBAAkB,EAAE,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,CAAC,CAC3E;QAED,IAAI,CAAC,cAAc,GAAG;YACrB,GAAG,IAAI,CAAC,cAAc;AACtB,YAAA,aAAa,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM;AAC1C,YAAA,aAAa,EACZ,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,oBAAoB,IAAI,CAAC,IAAI,eAAe,CAAC,MAAM,IAAI;AAC/E,kBAAE;kBACA,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,oBAAoB,IAAI,CAAC;AAClD,oBAAA,eAAe,CAAC,MAAM;AACtB,qBAAC,kBAAkB,EAAE,MAAM,IAAI,CAAC,CAAC;AACrC,YAAA,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,oBAAoB;SAC1D;;IAGF,yBAAyB,GAAA;AACxB,QAAA,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;AAChC,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,IAAG;YACpC,IAAI,MAAM,CAAC,aAAa,EAAE,QAAQ,EAAE,WAAW,EAAE;;AAEhD,gBAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC;;AAEhE,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AACpF,gBAAA,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;;AAEvB,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,GAAG,KAAK,CAAC;QAClC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CACxD,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,QAAQ,EAAE,WAAW,CACtD,CAAC,MAAM;AACR,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC;YACrC,IAAI,CAAC,iBAAiB,CAAC;AACrB,iBAAA,GAAG,CAAC,iBAAiB,CAAC,iBAAiB;AACxC,kBAAE,GAAG,CAAC,iBAAiB,CAAC,oBAAoB;kBAC1C,OAAO,EAAE;;IAGd,oBAAoB,GAAA;AACnB,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC;AACrB,QAAA,MAAM,UAAU,GAAG;YAClB,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC;YACjD,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC;YACjD,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;YAC9C,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,YAAY,IAAI,EAAE,CAAC;SACrD;AACD,QAAA,UAAU,CAAC,OAAO,CAAC,CAAC,IAAG;AACtB,YAAA,IAAI,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY;AAAE,gBAAA,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY;AAC5E,SAAC,CAAC;;IAGH,cAAc,GAAA;AACb,QAAA,aAAa,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACzE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;SACxE;AACC,aAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;aACvB,SAAS,CAAC,CAAC,CAAC,eAAe,EAAE,cAAc,CAAC,KAAI;YAChD,IAAI,eAAe,EAAE;AACpB,gBAAA,IAAI,CAAC,eAAe,GAAG,eAAe;AAEtC,gBAAA,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO;gBACvC,IAAI,CAAC,eAAe,GAAG;AACtB,oBAAA,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM;AACtC,oBAAA,qBAAqB,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM;AAC9C,oBAAA,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM;AAChC,oBAAA,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAQ;AAC3C,oBAAA,cAAc,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM;AAC/D,oBAAA,gBAAgB,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM;AAChE,oBAAA,kBAAkB,EAAE,CAAC;iBACrB;AAED,gBAAA,MAAM,UAAU,GAAG;AAClB,oBAAA,IAAI,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC;AAC5B,oBAAA,IAAI,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC;AAC5B,oBAAA,IAAI,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;AACzB,oBAAA,IAAI,OAAO,EAAE,YAAY,IAAI,EAAE,CAAC;iBAChC;gBAED,IAAI,CAAC,cAAc,CAAC,YAAY,GAAG,UAAU,CAAC,MAAM;gBACpD,IAAI,CAAC,eAAe,CAAC,kBAAkB;AACtC,oBAAA,UAAU,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,eAAe,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC;gBAEtG,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,IAAG;AAC7C,oBAAA,MAAM,YAAY,GAAG,cAAc,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;oBAClE,OAAO;AACN,wBAAA,aAAa,EAAE,MAAM;AACrB,wBAAA,aAAa,EAAE,YAAY;AAC3B,wBAAA,iBAAiB,EAAE;AAClB,4BAAA,SAAS,EAAE,YAAY,GAAG,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,SAAS,GAAG,MAAM,CAAC,cAAc;AAC5F,4BAAA,YAAY,EAAE,YAAY,GAAG,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY;AAChG,4BAAA,cAAc,EAAE;AACf,kCAAE,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC;kCACjC,MAAM,CAAC,gBAAgB;AAC1B,yBAAA;AACD,wBAAA,cAAc,EAAE;AACf,4BAAA,KAAK,EAAE,eAAe,EAAE,eAAe,CAAC,UAAU,IAAI,CAAC;AACvD,4BAAA,QAAQ,EAAE,eAAe,EAAE,eAAe,CAAC,aAAa,IAAI,CAAC;AAC7D,yBAAA;qBACc;AACjB,iBAAC,CAAC;gBAEF,IAAI,CAAC,4BAA4B,EAAE;AAEnC,gBAAA,IAAI,CAAC,WAAW;oBACf,eAAe,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,0BAA0B,CAAC,EAAE,MAAM;AACxG,wBAAA,CAAC;AAEF,gBAAA,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK;AAAE,oBAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,eAAe,CAAC;gBAEjF,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ;gBAEjE,IAAI,CAAC,uBAAuB,EAAE;gBAC9B,IAAI,CAAC,yBAAyB,EAAE;gBAChC,IAAI,CAAC,oBAAoB,EAAE;gBAE3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe;gBAExD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,0BAA0B,CAAC,KAAK;AACjF,gBAAA,IAAI,CAAC,iBAAiB,CAAC,0BAA0B,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;AACzG,oBAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK;AAChC,iBAAC,CAAC;gBAEF,IAAI,IAAI,CAAC,eAAe,CAAC,cAAc,IAAI,CAAC,EAAE;oBAC7C,IAAI,CAAC,iBAAiB,CAAC;AACrB,yBAAA,GAAG,CAAC,iBAAiB,CAAC,aAAa;0BAClC,QAAQ,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACxC,oBAAA,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE;;gBAE3F,IAAI,IAAI,CAAC,eAAe,CAAC,gBAAgB,IAAI,CAAC,EAAE;oBAC/C,IAAI,CAAC,iBAAiB,CAAC;AACrB,yBAAA,GAAG,CAAC,iBAAiB,CAAC,eAAe;0BACpC,QAAQ,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACxC,oBAAA,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE;;AAG7F,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI;;AAE1B,SAAC,CAAC;;IAGJ,aAAa,GAAA;AACZ,QAAA,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE;QAClC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe;;IAGzD,gBAAgB,GAAA;AACf,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;;IAGxB,aAAa,GAAA;AACZ,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAExE,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;;IAGxB,oBAAoB,GAAA;QACnB,OAAO;;AAEN,YAAA,YAAY,EAAE,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE;;AAGpG,YAAA,aAAa,EACZ,IAAI,CAAC,cAAc,KAAK;AACvB,kBAAE;AACF,kBAAE,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,GAAG,CAAC,iBAAiB,CAAC,eAAe,CAAC,EAAE,KAAK;AAC3F,YAAA,gBAAgB,EACf,IAAI,CAAC,iBAAiB,KAAK;AAC1B,kBAAE;AACF,kBAAE,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,GAAG,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE,KAAK;AAC1F,YAAA,WAAW,EACV,IAAI,CAAC,gBAAgB,KAAK;AACzB,kBAAE;AACF,kBAAE,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,GAAG,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE,KAAK;;AAGzF,YAAA,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,GAAG,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,KAAK;AACjG,YAAA,yBAAyB,EAAE,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,GAAG,CAC5E,iBAAiB,CAAC,mBAAmB,CACrC,EAAE,KAAK;AACR,YAAA,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,GAAG,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,KAAK;;AAG3G,YAAA,mBAAmB,EAClB,IAAI,CAAC,eAAe,CAAC,aAAa,KAAK;AACtC,kBAAE;AACF,kBAAE,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,KAAK;AACvF,YAAA,2BAA2B,EAC1B,IAAI,CAAC,eAAe,CAAC,qBAAqB,KAAK;AAC9C,kBAAE;AACF,kBAAE,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE,KAAK;AACtF,oBAAA,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,eAAe,CAAC,EAAE,KAAK;AAC5F,YAAA,eAAe,EACd,IAAI,CAAC,eAAe,CAAC,qBAAqB,KAAK;AAC9C,kBAAE;AACF,kBAAE,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE,KAAK;AAC1F,YAAA,iBAAiB,EAChB,IAAI,CAAC,eAAe,CAAC,qBAAqB,KAAK;AAC9C,kBAAE;AACF,kBAAE,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,eAAe,CAAC,EAAE,KAAK;AAC5F,YAAA,gBAAgB,EACf,IAAI,CAAC,eAAe,CAAC,UAAU,KAAK;AACnC,kBAAE;AACF,kBAAE,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,KAAK;YACpF,kBAAkB,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE;AACrD,kBAAE;AACF,kBAAE,IAAI,CAAC,iBAAiB,CAAC,wBAAwB,EAAE;AACpD,YAAA,iBAAiB,EAChB,IAAI,CAAC,eAAe,CAAC,kBAAkB,KAAK;AAC3C,kBAAE;AACF,kBAAE,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,eAAe,CAAC,EAAE,KAAK;;AAG5F,YAAA,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC;AAChC,iBAAA,GAAG,CAAC,iBAAiB,CAAC,WAAW;AAClC,kBAAE,GAAG,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,EAAE;AAC7C,kBAAE,IAAI,CAAC,iBAAiB,CAAC;AACtB,qBAAA,GAAG,CAAC,iBAAiB,CAAC,WAAW;AAClC,sBAAE,GAAG,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,EAAE;AACrD,kBAAE,SAAS;AACZ,YAAA,yBAAyB,EAAE,IAAI,CAAC,iBAAiB,CAAC;AAChD,iBAAA,GAAG,CAAC,iBAAiB,CAAC,iBAAiB;AACxC,kBAAE,GAAG,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,EAAE,KAAK;AACrD,YAAA,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAAC;AACtC,iBAAA,GAAG,CAAC,iBAAiB,CAAC,iBAAiB;AACxC,kBAAE,GAAG,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,EAAE,KAAK;AAEvD,YAAA,eAAe,EAAE;AAChB,gBAAA,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,eAAe,EAAE,gBAAgB,IAAI,EAAE;AAC/F,aAAA;YACD,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;SACpD;;AAG7B,IAAA,cAAc,CAAC,cAAqC,EAAA;AACnD,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc;;AAGrC,IAAA,WAAW;AA5hBC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,iHAgD9B,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAhDZ,2BAA2B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3CxC,23eAmUA,ED3Sa,MAAA,EAAA,CAAA,q1uBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAtB,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA6C,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6NAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAf,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAwC,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAZ,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAY,+BAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,8BAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,mBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iCAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,yBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,8BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,6BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,CAAA,EAAA,UAAA,EAAA;YACX,OAAO,CAAC,gBAAgB,EAAE;gBACzB,UAAU,CAAC,QAAQ,EAAE;AACpB,oBAAA,OAAO,CACN,cAAc,EACd,SAAS,CAAC;wBACT,KAAK,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;wBACtD,KAAK,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;wBACpD,KAAK,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;wBACtD,KAAK,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;wBACpD,KAAK,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;wBACtD,KAAK,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACpD,qBAAA,CAAC,CACF;iBACD,CAAC;aACF,CAAC;AACF,SAAA,EAAA,CAAA;;4FAGW,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAvBvC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,EAGvB,UAAA,EAAA;wBACX,OAAO,CAAC,gBAAgB,EAAE;4BACzB,UAAU,CAAC,QAAQ,EAAE;AACpB,gCAAA,OAAO,CACN,cAAc,EACd,SAAS,CAAC;oCACT,KAAK,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;oCACtD,KAAK,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;oCACpD,KAAK,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;oCACtD,KAAK,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;oCACpD,KAAK,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;oCACtD,KAAK,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACpD,iCAAA,CAAC,CACF;6BACD,CAAC;yBACF,CAAC;AACF,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,23eAAA,EAAA,MAAA,EAAA,CAAA,q1uBAAA,CAAA,EAAA;;0BAkDf,MAAM;2BAAC,eAAe;;;ME9DZ,uBAAuB,CAAA;AAqC1B,IAAA,UAAA;AACA,IAAA,cAAA;AACA,IAAA,cAAA;AACA,IAAA,iBAAA;AAvCiB,IAAA,WAAW;AAGrC,IAAA,WAAW;IAGX,cAAc,GAAG,QAAQ;AAGzB,IAAA,YAAY;AAEH,IAAA,cAAc;IACd,aAAa,GAAkB,IAAI;IACnC,QAAQ,GAAY,KAAK;IACzB,SAAS,GAAY,KAAK;IAC1B,UAAU,GAAY,KAAK;AAEpC;;AAEG;IACM,eAAe,GAAY,KAAK;AAEzC;;AAEG;IACM,aAAa,GAAY,KAAK;AAE7B,IAAA,QAAQ,GAAG,IAAI,YAAY,EAAU;AACrC,IAAA,cAAc,GAAG,IAAI,YAAY,EAAW;AAEtD,IAAA,QAAQ,GAAG,IAAI,kBAAkB,CAAC,EAAE,CAAC;IACrC,eAAe,GAAY,KAAK;AAChC,IAAA,cAAc;AACd,IAAA,YAAY;AAEZ,IAAA,WAAA,CACS,UAAqB,EACrB,cAAiC,EACjC,cAAiC,EACjC,iBAA8C,EAAA;QAH9C,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAc,CAAA,cAAA,GAAd,cAAc;QACd,IAAc,CAAA,cAAA,GAAd,cAAc;QACd,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;;IAG1B,QAAQ,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;AACrE,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1B,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;AAClF,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAC5B,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;AAC/E,YAAA,IAAI,CAAC,YAAY,GAAG,GAAG;AACxB,SAAC,CAAC;;AAGH,IAAA,WAAW,CAAC,OAAsB,EAAA;QACjC,IAAI,eAAe,IAAI,OAAO;AAAE,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC;QAC7F,IAAI,UAAU,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,KAAK,IAAI;AAAE,YAAA,IAAI,CAAC,YAAY,GAAG,MAAM;;IAGnG,UAAU,GAAA;AACT,QAAA,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,eAAe;AAE5C,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AAC1B,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC1B,YAAA,IAAI,CAAC,cAAc,GAAG,QAAQ;;;AACxB,YAAA,IAAI,CAAC,cAAc,GAAG,OAAO;QAEpC,UAAU,CAAC,MAAK;AACf,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE;gBACrB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC;AACrE,gBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE;AACtC,gBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE;;SAExC,EAAE,GAAG,CAAC;;IAGR,oBAAoB,GAAA;AACnB,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,aAAa;QACxC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;QAC5C,IAAI,IAAI,CAAC,aAAa;AAAE,YAAA,IAAI,CAAC,WAAW,GAAG,iBAAiB;;AACvD,YAAA,IAAI,CAAC,WAAW,GAAG,iBAAiB;;IAG1C,gBAAgB,CAAC,qBAA8B,KAAK,EAAA;AACnD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,2BAA2B,EAAE;YACjD,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,EAAE;YACrC,KAAK,EAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,QAAQ;AACxC,YAAA,UAAU,EAAE,sBAAsB;YAClC,SAAS,EAAE,SAAS,CAAA,CAAuB,qBAAA,CAAA;AAC3C,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,IAAI,EAAE;gBACL,aAAa,EAAE,IAAI,CAAC,cAAc;gBAClC,aAAa,EAAE,IAAI,CAAC,cAAc;gBAClC,gBAAgB,EAAE,IAAI,CAAC,iBAAiB;AACxC,gBAAA,kBAAkB,EAAE,kBAAkB;gBACtC,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACI,aAAA;AAC5B,SAAA,CAAC;;IAGH,aAAa,GAAA;AACZ,QAAA,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE;;IAGxC,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;;AAGlC,IAAA,WAAW;wGA/GC,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA5E,IAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAY,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAiE,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,2BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,0oBC7BpC,stNA6KA,EAAA,MAAA,EAAA,CAAA,ugrBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA5E,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA6C,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAjB,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAwB,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAxB,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAyB,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAqB,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6NAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDhJa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,cAGlB,KAAK,EAAA,QAAA,EAAA,stNAAA,EAAA,MAAA,EAAA,CAAA,ugrBAAA,CAAA,EAAA;iLAGS,WAAW,EAAA,CAAA;sBAApC,SAAS;uBAAC,aAAa;gBAGxB,WAAW,EAAA,CAAA;sBADV,WAAW;uBAAC,eAAe;gBAI5B,cAAc,EAAA,CAAA;sBADb,WAAW;uBAAC,uBAAuB;gBAIpC,YAAY,EAAA,CAAA;sBADX,WAAW;uBAAC,qBAAqB;gBAGzB,cAAc,EAAA,CAAA;sBAAtB;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBAKQ,eAAe,EAAA,CAAA;sBAAvB;gBAKQ,aAAa,EAAA,CAAA;sBAArB;gBAES,QAAQ,EAAA,CAAA;sBAAjB;gBACS,cAAc,EAAA,CAAA;sBAAvB;;;AE1DF,IAAY,wBAOX;AAPD,CAAA,UAAY,wBAAwB,EAAA;AACnC,IAAA,wBAAA,CAAA,wBAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAW;AACX,IAAA,wBAAA,CAAA,wBAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAY;AACZ,IAAA,wBAAA,CAAA,wBAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAW;AACX,IAAA,wBAAA,CAAA,wBAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAY;AACZ,IAAA,wBAAA,CAAA,wBAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAW;AACX,IAAA,wBAAA,CAAA,wBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACL,CAAC,EAPW,wBAAwB,KAAxB,wBAAwB,GAOnC,EAAA,CAAA,CAAA;;MC2BY,sCAAsC,CAAA;AAqD/B,IAAA,aAAA;AAnDnB,IAAA,WAAW;AAEuC,IAAA,gBAAgB;AAElE;;AAEG;AACM,IAAA,QAAQ;AAEjB;;AAEG;AACM,IAAA,YAAY;AAErB;;AAEG;AACM,IAAA,oBAAoB;AAE7B;;AAEG;AACM,IAAA,YAAY;AAErB;;AAEG;IACM,kCAAkC,GAAiC,SAAS;AAErF;;AAEG;AACO,IAAA,cAAc,GAAG,IAAI,YAAY,EAA2D;AAEtG;;AAEG;IACH,gBAAgB,GAAW,CAAC;IAE5B,QAAQ,GAAY,KAAK;IAEzB,eAAe,GAAG,eAAe;IACjC,kBAAkB,GAAG,kBAAkB;IACvC,aAAa,GAAG,aAAa;AAE7B,IAAA,cAAc,GAAG,SAAS,CAAA,CAAA,MAAA,CAAQ;AAClC,IAAA,gBAAgB,GAAG,SAAS,CAAA,CAAA,QAAA,CAAU;AACtC,IAAA,uBAAuB,GAAG,SAAS,CAAA,CAAA,4HAAA,CAA8H;AAEzJ,IAAA,gBAAgB;AAExB,IAAA,WAAA,CAAmB,aAAgC,EAAA;QAAhC,IAAa,CAAA,aAAA,GAAb,aAAa;;AAEhC;;;AAGG;AACH,IAAA,WAAW,CAAC,OAAsB,EAAA;AACjC,QAAA,IAAI,OAAO,CAAC,sBAAsB,CAAC,EAAE;AACpC,YAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC;YACzB,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAG;gBAChD,IAAI,CAAC,gBAAgB,IAAI,CAAC,EAAE,WAAW,IAAI,CAAC;AAC7C,aAAC,CAAC;AACF,YAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,CAAC;AAAE,gBAAA,IAAI,CAAC,WAAW,GAAG,MAAM;;AACrD,gBAAA,IAAI,CAAC,WAAW,GAAG,MAAM;;YAG9B,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;;AAEnF,QAAA,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE;AAC5B,YAAA,IACC,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACrF,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,KAAK,kBAAkB,CAAC,oBAAoB;AAElE,gBAAA,IAAI,CAAC,WAAW,GAAG,MAAM;;AACrB,gBAAA,IAAI,CAAC,WAAW,GAAG,MAAM;;YAG9B,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC;;QAG7E,IAAI,OAAO,CAAC,oCAAoC,CAAC,IAAI,IAAI,CAAC,kCAAkC,EAAE;YAC7F,IAAI,CAAC,mBAAmB,EAAE;;;AAI5B,IAAA,QAAQ;IAER,eAAe,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;YAC1B,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,SAAS,IAAG;AACxD,gBAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;AACjC,oBAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,EAAE;wBAClC,IAAI,IAAI,CAAC,kCAAkC;4BAAE,IAAI,CAAC,mBAAmB,EAAE;;;AAG1E,aAAC,CAAC;YAEF,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE;AAClE,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,OAAO,EAAE,IAAI;AACb,aAAA,CAAC;;;AAIJ;;;;AAIG;AACH,IAAA,0BAA0B,CAAC,IAAgC,EAAA;AAC1D,QAAA,OAAO,0BAA0B,CAAC,IAAI,CAAC;;AAGxC;;;;AAIG;AACH,IAAA,sBAAsB,CAAC,IAA2B,EAAA;AACjD,QAAA,OAAO,sBAAsB,CAAC,IAAI,CAAC;;AAGpC;;;;AAIG;AACH,IAAA,mBAAmB,CAAC,IAAwB,EAAA;AAC3C,QAAA,OAAO,mBAAmB,CAAC,IAAI,CAAC;;AAGjC;;;AAGG;IACH,gBAAgB,CAAC,IAA6D,EAAE,KAAqB,EAAA;AACpG,QAAA,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO;AAAE,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGpE,IAAA,cAAc,CAAC,KAAK,EAAA;QACnB,UAAU,CAAC,MAAK;AACf,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;SACrB,EAAE,GAAG,CAAC;;IAER,eAAe,GAAA;AACd,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;;AAGrB,IAAA,IAAI,wBAAwB,GAAA;AAC3B,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE,aAAa;AACzD,QAAA,OAAO,YAAY,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC;;IAG1C,mBAAmB,GAAA;QAClB,UAAU,CAAC,MAAK;YACf,IAAI,IAAI,CAAC,wBAAwB;AAAE,gBAAA,IAAI,CAAC,WAAW,GAAG,MAAM;;AACvD,gBAAA,IAAI,CAAC,WAAW,GAAG,MAAM;AAC/B,SAAC,CAAC;;wGAhKS,sCAAsC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAArF,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sCAAsC,wiBClCnD,guYAoOA,EAAA,MAAA,EAAA,CAAA,6qgBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA8B,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6NAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,oFAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA6C,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,EAAA,CAAA;;4FDlMa,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBANlD,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,8BAA8B,cAG5B,KAAK,EAAA,QAAA,EAAA,guYAAA,EAAA,MAAA,EAAA,CAAA,6qgBAAA,CAAA,EAAA;mFAIjB,WAAW,EAAA,CAAA;sBADV,WAAW;uBAAC,eAAe;gBAGsB,gBAAgB,EAAA,CAAA;sBAAjE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,kBAAkB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;gBAKvC,QAAQ,EAAA,CAAA;sBAAhB;gBAKQ,YAAY,EAAA,CAAA;sBAApB;gBAKQ,oBAAoB,EAAA,CAAA;sBAA5B;gBAKQ,YAAY,EAAA,CAAA;sBAApB;gBAKQ,kCAAkC,EAAA,CAAA;sBAA1C;gBAKS,cAAc,EAAA,CAAA;sBAAvB;;;MElDW,yCAAyC,CAAA;IACrD,OAAO,GAAW,CAAC;AACnB,IAAA,QAAQ;AACR,IAAA,WAAA,GAAA;IAEA,QAAQ,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,MAAK;YAChC,IAAI,CAAC,OAAO,EAAE;SACd,EAAE,IAAI,CAAC;;IAGT,WAAW,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;;;wGAblB,yCAAyC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAzC,yCAAyC,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClBtD,k8TA0OA,EDnOa,MAAA,EAAA,CAAA,ohEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAjD,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA4B,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA;YACX,OAAO,CAAC,iBAAiB,EAAE;gBAC1B,UAAU,CAAC,QAAQ,EAAE;AACpB,oBAAA,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AACtD,oBAAA,OAAO,CAAC,sCAAsC,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;iBACvG,CAAC;gBACF,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;aACxG,CAAC;AACF,SAAA,EAAA,CAAA;;4FAGW,yCAAyC,EAAA,UAAA,EAAA,CAAA;kBAfrD,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uCAAuC,EAGrC,UAAA,EAAA;wBACX,OAAO,CAAC,iBAAiB,EAAE;4BAC1B,UAAU,CAAC,QAAQ,EAAE;AACpB,gCAAA,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AACtD,gCAAA,OAAO,CAAC,sCAAsC,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;6BACvG,CAAC;4BACF,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;yBACxG,CAAC;AACF,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,k8TAAA,EAAA,MAAA,EAAA,CAAA,ohEAAA,CAAA,EAAA;;;MEwBL,+BAA+B,CAAA;AA+HlC,IAAA,IAAA;AACA,IAAA,WAAA;AACD,IAAA,aAAA;AACA,IAAA,gBAAA;AACA,IAAA,oBAAA;AACA,IAAA,aAAA;IAlIR,WAAW,GAAG,MAAM;AAGpB,IAAA,YAAY;AAEgD,IAAA,gBAAgB;AACtB,IAAA,UAAU;AACC,IAAA,qBAAqB;AAC9B,IAAA,QAAQ;AAEhE;;AAEG;AACM,IAAA,QAAQ;AAEjB;;AAEG;AACM,IAAA,gBAAgB;AAEzB;;AAEG;IACM,UAAU,GAAkB,EAAE;AAEvC;;AAEG;AACM,IAAA,UAAU;AAEnB;;AAEG;AACM,IAAA,cAAc;AAEvB;;AAEG;AACM,IAAA,QAAQ;AAEjB;;AAEG;AACM,IAAA,SAAS;AAElB;;AAEG;AACM,IAAA,aAAa;AAEtB;;AAEG;IACM,qBAAqB,GAAiC,SAAS;AAExE;;AAEG;AACM,IAAA,cAAc;AAEvB;;AAEG;IACM,eAAe,GAAG,KAAK;IAEhC,kBAAkB,GAAY,IAAI;AAElC,IAAA,gBAAgB;IAChB,eAAe,GAAY,KAAK;AAEhC,IAAA,oBAAoB;IACpB,wBAAwB,GAAG,wBAAwB;IACnD,eAAe,GAAG,eAAe;IACjC,aAAa,GAAG,aAAa;AAC7B,IAAA,aAAa;IAEb,0BAA0B,GAAiC,SAAS;IACpE,kCAAkC,GAAiC,SAAS;AAC5E,IAAA,cAAc;IACd,kBAAkB,GAAW,CAAC;AAC9B,IAAA,SAAS;AACT,IAAA,qBAAqB;AAErB,IAAA,UAAU;IACV,iBAAiB,GAAY,KAAK;AAElC,IAAA,kBAAkB;IAElB,wBAAwB,GAAG,wBAAwB;AAEnD,IAAA,oBAAoB;AACpB,IAAA,gBAAgB;AAChB,IAAA,uBAAuB;AAEvB,IAAA,4BAA4B,GAA2B;AACtD,QAAA,UAAU,EAAE,EAAE;AACd,QAAA,YAAY,EAAE,CAAC;AACf,QAAA,eAAe,EAAE,CAAC;QAClB,IAAI,EAAE,kBAAkB,CAAC,oBAAoB;KAC7C;AAEO,IAAA,eAAe;AACvB,IAAA,qBAAqB;AACrB,IAAA,YAAY;AAEZ,IAAA,IAAI,oBAAoB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,MAAM;;AAG/B,IAAA,IAAI,sBAAsB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,MAAM;;AAGrC,IAAA,IAAI,iBAAiB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,cAAc,KAAK,wBAAwB,CAAC,IAAI;;AAG7D,IAAA,IAAI,0BAA0B,GAAA;AAC7B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,IAC3D,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,EAAE,KAAK,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC,CACnF;AACD,QAAA,OAAO,OAAO;;IAGf,WACS,CAAA,IAAuB,EACvB,WAAuB,EACxB,aAAgC,EAChC,gBAA6C,EAC7C,oBAA8C,EAC9C,aAAgC,EAAA;QAL/B,IAAI,CAAA,IAAA,GAAJ,IAAI;QACJ,IAAW,CAAA,WAAA,GAAX,WAAW;QACZ,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAoB,CAAA,oBAAA,GAApB,oBAAoB;QACpB,IAAa,CAAA,aAAA,GAAb,aAAa;;AAGrB,IAAA,WAAW,CAAC,OAAsB,EAAA;AACjC,QAAA,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE,YAAY,EAAE;AACxC,YAAA,IAAI,CAAC,aAAa,GAAG,EAAE;YACvB,UAAU,CAAC,MAAK;AACf,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACrB,oBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAAU;AACvC,oBAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,0BAA0B;oBAC9D,IAAI,CAAC,0BAA0B,EAAE;AACjC,oBAAA,IAAI,IAAI,CAAC,uBAAuB,EAAE,MAAM,KAAK,CAAC;AAAE,wBAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;;gBAEnF,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,kBAAkB;AAC5E,oBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC;AAC9F,aAAC,CAAC;;QAEH,IAAI,OAAO,CAAC,iBAAiB,CAAC,EAAE,YAAY,IAAI,KAAK,EAAE;YACtD,IAAI,CAAC,oBAAoB,EAAE;YAC3B,IAAI,CAAC,oBAAoB,EAAE;YAE3B,UAAU,CAAC,MAAK;AACf,gBAAA,MAAM,SAAS,GAAgB,IAAI,CAAC,qBAAqB,EAAE,aAAa;AACxE,gBAAA,IAAI,SAAS,IAAI,SAAS,EAAE,iBAAiB,GAAG,CAAC;AAAE,oBAAA,IAAI,CAAC,cAAc,GAAG,IAAI;;AACxE,oBAAA,IAAI,CAAC,cAAc,GAAG,KAAK;gBAEhC,IAAI,CAAC,eAAe,EAAE;AACvB,aAAC,CAAC;;QAGH,IAAI,eAAe,IAAI,OAAO,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC,YAAY,EAAE;AACxE,YAAA,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,MAAM,IAAG;gBACvC,MAAM,CAAC,iBAAiB,GAAG;AAC1B,oBAAA,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,aAAa,GAAG,MAAM,CAAC,iBAAiB,EAAE,SAAS,IAAI,CAAC,GAAG,CAAC;AAC1F,oBAAA,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,gBAAgB,GAAG,MAAM,CAAC,iBAAiB,EAAE,YAAY,IAAI,CAAC,GAAG,CAAC;AACnG,oBAAA,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,MAAM,CAAC,iBAAiB,EAAE,cAAc,IAAI,CAAC,GAAG,CAAC;iBAClG;AACF,aAAC,CAAC;;;IAIJ,QAAQ,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;AAC1D,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ;;AAElC,QAAA,IAAI,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,WAAW;AAEhE,QAAA,IAAI,CAAC,oBAAoB,CAAC,uBAAuB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;AAC3F,YAAA,IAAI,IAAI,EAAE,0BAA0B,KAAK,SAAS,IAAI,IAAI,CAAC,0BAA0B,KAAK,SAAS,EAAE;AACpG,gBAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,EAAE,0BAA0B;AAClE,gBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;;AAG1B,YAAA,IACC,IAAI,EAAE,kCAAkC,KAAK,SAAS;AACtD,gBAAA,IAAI,CAAC,kCAAkC,KAAK,SAAS,EACpD;AACD,gBAAA,IAAI,CAAC,kCAAkC,GAAG,IAAI,EAAE,kCAAkC;AAClF,gBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;;AAE3B,SAAC,CAAC;QAEF,IAAI,CAAC,eAAe,GAAG,IAAI,cAAc,CAAC,CAAC,IAAG;AAC7C,YAAA,IAAI,CAAC,QAAQ,EAAE,iBAAiB,EAAE;AACnC,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;AAC9E,YAAA,IAAI,CAAC,YAAY,GAAG,GAAG;AACxB,SAAC,CAAC;;IAGK,oBAAoB,GAAA;QAC3B,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,kBAAkB;AAC5E,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC;AAE7F,QAAA,aAAa,CAAC;YACb,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC9D,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;SACnE;AACC,aAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;aACvB,SAAS,CAAC,CAAC,CAAC,aAAa,EAAE,kBAAkB,CAAC,KAAI;YAClD,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,aAAa,IAAI,CAAC,kBAAkB;gBAAE;YACnE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU;AACtD,YAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,kBAAkB,CAAC;AACvD,SAAC,CAAC;;IAGJ,eAAe,GAAA;QACd,IAAI,CAAC,eAAe,EAAE;AAEtB,QAAA,SAAS,CAAC,MAAM,EAAE,QAAQ;AACxB,aAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;aACvB,SAAS,CAAC,MAAK;YACf,IAAI,CAAC,oBAAoB,EAAE;AAC5B,SAAC,CAAC;QAEH,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;;IAG7D,oBAAoB,GAAA;QACnB,UAAU,CAAC,MAAK;AACf,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe;gBAAE;YAC5C,MAAM,YAAY,GACjB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY;AAE1G,YAAA,IAAI,CAAC,qBAAqB,GAAG,YAAY;AAC1C,SAAC,CAAC;;IAGH,cAAc,GAAA;AACb,QAAA,IAAI,CAAC,WAAW,GAAG,MAAM;;AAG1B,IAAA,QAAQ,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;QAE1B,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,kBAAkB;AAC5E,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC;AAE7F,QAAA,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,EAAE,EAAE;YAC3B;;AAGD,QAAA,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE;QAE3B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CACnD,CAAC,IACA,CAAC,CAAC,aAAa,CAAC,YAAY,EAAE,WAAW,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC;YAC5D,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC;AACrD,YAAA,CAAC,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC;AAClE,aAAC,CAAC,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC5E,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,CAC9B;;IAGF,cAAc,CAAC,KAAa,EAAE,CAAc,EAAA;AAC3C,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,KAAK;AAExB,QAAA,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE;;QAE3B,QAAQ,KAAK;AACZ,YAAA,KAAK,UAAU;gBACd,OAAO,CAAC,CAAC,aAAa,CAAC,IAAI,KAAK,kBAAkB,CAAC,QAAQ;AAC5D,YAAA,KAAK,2BAA2B;AAChC,YAAA,KAAK,iBAAiB;gBACrB,OAAO,CAAC,CAAC,aAAa,CAAC,IAAI,KAAK,kBAAkB,CAAC,QAAQ;AAC5D,YAAA,KAAK,mBAAmB;gBACvB,OAAO,CAAC,CAAC,aAAa,CAAC,IAAI,KAAK,kBAAkB,CAAC,UAAU;AAC9D,YAAA,KAAK,OAAO;gBACX,OAAO,CAAC,CAAC,aAAa,CAAC,IAAI,KAAK,kBAAkB,CAAC,KAAK;AACzD,YAAA;AACC,gBAAA,OAAO,KAAK;;;;AAMf,IAAA,QAAQ,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK;QAC/B,IAAI,KAAK,KAAK,CAAC;AAAE,YAAA,IAAI,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,WAAW;aAC5E,IAAI,KAAK,KAAK,CAAC;AAAE,YAAA,IAAI,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,YAAY;aAClF,IACJ,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,oBAAoB,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,oBAAoB,GAAG,CAAC;aAC9F,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,oBAAoB,IAAI,CAAC,CAAC;AAE/C,YAAA,IAAI,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,WAAW;AAC5D,aAAA,IAAI,KAAK,KAAK,IAAI,CAAC,oBAAoB,GAAG,CAAC;AAAE,YAAA,IAAI,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,YAAY;AAC9G,aAAA,IAAI,KAAK,KAAK,IAAI,CAAC,oBAAoB,GAAG,CAAC;AAAE,YAAA,IAAI,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,WAAW;;;AAInH,IAAA,aAAa,CAAC,KAAc,EAAA;QAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE;QACpB,IAAI,KAAK,IAAI,SAAS;YAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC;;AAGrE,IAAA,aAAa,CAAC,GAA6B,EAAA;QAC1C,QAAQ,GAAG;AACV,YAAA,KAAK,wBAAwB,CAAC,WAAW,EAAE;AAC1C,gBAAA,IAAI,IAAI,CAAC,sBAAsB,GAAG,CAAC,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,sBAAsB,GAAG,CAAC;oBAChG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC;qBAC/C,IAAI,IAAI,CAAC,sBAAsB,GAAG,CAAC,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC;oBACvE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;;AAC3C,oBAAA,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;gBAC1B;;AAED,YAAA,KAAK,wBAAwB,CAAC,YAAY,EAAE;AAC3C,gBAAA,IAAI,IAAI,CAAC,sBAAsB,GAAG,CAAC,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,sBAAsB,GAAG,CAAC;oBAChG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC;qBAC/C,IAAI,IAAI,CAAC,sBAAsB,GAAG,CAAC,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC;oBACvE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;;AAC3C,oBAAA,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;gBAC1B;;AAED,YAAA,KAAK,wBAAwB,CAAC,WAAW,EAAE;AAC1C,gBAAA,IAAI,IAAI,CAAC,sBAAsB,GAAG,CAAC,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,sBAAsB,GAAG,CAAC;oBAChG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC;qBAC/C,IAAI,IAAI,CAAC,sBAAsB,GAAG,CAAC,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC;AACvE,oBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC;;AACvC,oBAAA,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;gBAC1B;;AAED,YAAA,KAAK,wBAAwB,CAAC,YAAY,EAAE;AAC3C,gBAAA,IAAI,IAAI,CAAC,sBAAsB,GAAG,CAAC,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,sBAAsB,GAAG,CAAC;oBAChG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC;qBAC/C,IAAI,IAAI,CAAC,sBAAsB,GAAG,CAAC,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC;oBACvE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;;AAC3C,oBAAA,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;gBAC1B;;AAED,YAAA,KAAK,wBAAwB,CAAC,WAAW,EAAE;AAC1C,gBAAA,IAAI,IAAI,CAAC,sBAAsB,GAAG,CAAC,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,sBAAsB,GAAG,CAAC;oBAChG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC;qBAC/C,IAAI,IAAI,CAAC,sBAAsB,GAAG,CAAC,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC;oBACvE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;;AAC3C,oBAAA,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;gBAC1B;;AAED,YAAA;gBACC;;;IAIK,eAAe,GAAA;QACtB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;YACrC;;AAGD,QAAA,MAAM,oBAAoB,GAAuB,IAAI,CAAC,QAAQ,CAAC,mBAAmB;;QAGlF,IAAI,CAAC,SAAS,GAAG;AACf,aAAA,IAAI,CACJ,GAAG,CAAC,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,GAAG,GAAG,CAAC,EAC3D,QAAQ,EAAE,EACV,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,KAAI;YACjC,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE;YACpD,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,GAAG,GAAG;;AAE5D,YAAA,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,IAAI,YAAY,GAAG,SAAS,GAAG,GAAG,IAAI,gBAAgB;AAC9F,YAAA,OAAO,UAAU;SACjB,CAAC,EACF,oBAAoB,EAAE,EACtB,YAAY,CAAC,IAAI,CAAC;aAElB,SAAS,CAAC,MAAK;YACf,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,oBAAoB,GAAG,CAAC;AACvD,YAAA,IAAI,IAAI,CAAC,oBAAoB,KAAK,CAAC;AAAE,gBAAA,IAAI,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,YAAY;AACtG,YAAA,IAAI,IAAI,CAAC,oBAAoB,KAAK,CAAC;AAAE,gBAAA,IAAI,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,WAAW;AACrG,YAAA,IAAI,IAAI,CAAC,oBAAoB,KAAK,CAAC;AAAE,gBAAA,IAAI,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,YAAY;AACtG,YAAA,IAAI,IAAI,CAAC,oBAAoB,IAAI,CAAC;AAAE,gBAAA,IAAI,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,WAAW;AACrG,SAAC,CAAC;;AAGJ,IAAA,iBAAiB,CAAC,QAAgB,EAAA;QACjC,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,IAAI,EAAE;QACrE,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,QAAQ,CAAC,CAAC;;AAG5F,IAAA,iBAAiB,CAAC,QAAgB,EAAA;QACjC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC;AACxE,QAAA,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC/B,QAAA,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;;IAGnE,cAAc,CAAC,aAAsC,EAAE,kBAA4B,EAAA;AAC1F,QAAA,IAAI,CAAC,kBAAkB,GAAG,kBAAkB;AAE5C,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,aAAa,EAAE,kBAAkB,CAAC;AAE3F,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;aAC3B,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,aAAa,EAAE,EAAE,CAAC;aAC/E,GAAG,CAAC,MAAM,IAAG;YACb,OAAO;AACN,gBAAA,GAAG,MAAM;AACT,gBAAA,iBAAiB,EAAE;AAClB,oBAAA,SAAS,EAAE,aAAa,CAAC,aAAa,GAAG,MAAM,CAAC,iBAAiB,EAAE,SAAS,IAAI,CAAC,GAAG,CAAC;AACrF,oBAAA,YAAY,EAAE,aAAa,CAAC,gBAAgB,GAAG,MAAM,CAAC,iBAAiB,EAAE,YAAY,IAAI,CAAC,GAAG,CAAC;AAC9F,oBAAA,cAAc,EAAE,aAAa,CAAC,WAAW,GAAG,MAAM,CAAC,iBAAiB,EAAE,cAAc,IAAI,CAAC,GAAG,CAAC;AAC7F,iBAAA;aACc;AACjB,SAAC;AACA,aAAA,IAAI,CACJ,CAAC,CAAC,EAAE,CAAC,KACJ,CAAC,CAAC,CAAC,aAAa,CAAC;AAChB,cAAE;AACF,cAAE,CAAC,CAAC,iBAAiB,CAAC,SAAS,GAAG,CAAC,CAAC,iBAAiB,CAAC,YAAY,GAAG,CAAC,CAAC,iBAAiB,CAAC,cAAc;AACxG,aAAC,CAAC,CAAC,aAAa,CAAC;AAChB,kBAAE;kBACA,CAAC,CAAC,iBAAiB,CAAC,SAAS,GAAG,CAAC,CAAC,iBAAiB,CAAC,YAAY,GAAG,CAAC,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAC1G;QAEF,IAAI,CAAC,cAAc,GAAG;YACrB,GAAG,IAAI,CAAC,cAAc;YACtB,aAAa,EAAE,kBAAkB,EAAE,MAAM;YACzC,aAAa,EACZ,IAAI,CAAC,aAAa,CAAC,oBAAoB,GAAG,eAAe,CAAC,MAAM,IAAI;AACnE,kBAAE;AACF,kBAAE,IAAI,CAAC,aAAa,CAAC,oBAAoB,GAAG,eAAe,CAAC,MAAM,GAAG,kBAAkB,EAAE,MAAM;AACjG,YAAA,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,oBAAoB;SACrD;AAED,QAAA,IAAI,CAAC,UAAU,GAAG,eAAe,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,MAAM;AAC1F,QAAA,IAAI,CAAC,aAAa,CAAC,aAAa,IAAI,CAAC,aAAa,CAAC,gBAAgB,IAAI,CAAC,aAAa,CAAC,WAAW;AAChG,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;QAEvB,IAAI,CAAC,0BAA0B,EAAE;AACjC,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,0BAA0B;AAC9D,QAAA,IAAI,IAAI,CAAC,uBAAuB,EAAE,MAAM,KAAK,CAAC;AAAE,YAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;QAElF,UAAU,CAAC,MAAK;YACf,IAAI,CAAC,oBAAoB,EAAE;AAC5B,SAAC,CAAC;;;IAIH,kBAAkB,GAAA;QACjB,IAAI,CAAC,aAAa,CAAC,2BAA2B,CAAC,IAAI,CAAC,SAAS,CAAC;AAC9D,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;;;;;;;;;;AAYnC,IAAA,gBAAgB,CAAC,gBAA4C,EAAA;AAC5D,QAAA,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC;AAC9C,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,0BAA0B;AAC9D,QAAA,IAAI,IAAI,CAAC,uBAAuB,EAAE,MAAM,KAAK,CAAC;AAAE,YAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;QAElF,IAAI,gBAAgB,EAAE;AACrB,YAAA,MAAM,0BAA0B,GAAG,IAAI,CAAC;iBACtC,MAAM,CAAC,MAAM,IAAI,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,EAAE,KAAK,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC;iBACtG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC;AAC9B,YAAA,IAAI,CAAC,aAAa,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC,GAAG,0BAA0B,CAAC,CAAC;AACpF,YAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC;AACvC,gBAAA,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc;AACpC,gBAAA,oBAAoB,EAAE,KAAK;AAC3B,aAAA,CAAC;;aACI;YACN,IAAI,CAAC,aAAa,CAAC,2BAA2B,CAAC,IAAI,CAAC,SAAS,CAAC;;;AAIxD,IAAA,uBAAuB,CAAC,gBAAmD,EAAA;AAClF,QAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;AAExC,QAAA,IAAI,CAAC,gBAAgB;YAAE,IAAI,CAAC,aAAa,CAAC,2BAA2B,CAAC,IAAI,CAAC,EAAE,CAAC;QAE9E,MAAM,8BAA8B,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;cACtE,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,uBAAuB;cACnE,IAAI;AACP,QAAA,IAAI,8BAA8B,KAAK,gBAAgB,EAAE,IAAI;YAAE;AAC/D,QAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC;AACvC,YAAA,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc;AACpC,YAAA,uBAAuB,EAAE,gBAAgB,EAAE,IAAI,GAAG,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC,GAAG,IAAI;AAC1F,SAAA,CAAC;;IAGK,0BAA0B,GAAA;AACjC,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,2BAA2B,EAAE;AAC9D,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,IAAG;;YAEtC,MAAM,gBAAgB,GAAG,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,iBAAiB,CAAC,eAAe,CAAC;YACjH,IAAI,gBAAgB,EAAE;AACrB,gBAAA,IAAI,CAAC,kCAAkC,CACtC,IAAI,CAAC,oBAAoB,EACzB,kBAAkB,CAAC,aAAa,EAChC,SAAS,CAAA,iBAAiB,EAC1B,MAAM,CACN;gBACD,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC;AAC9C,gBAAA,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,eAAe;AAC3C,oBAAA,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,gBAAgB,EAAE,MAAM,IAAI,CAAC,CAAC;;AAGlF,YAAA,QAAQ,MAAM,CAAC,aAAa,CAAC,IAAI;gBAChC,KAAK,kBAAkB,CAAC,QAAQ;AAC/B,oBAAA,IAAI,MAAM,CAAC,aAAa,CAAC,GAAG;AAC3B,wBAAA,IAAI,CAAC,kCAAkC,CACtC,IAAI,CAAC,oBAAoB,EACzB,kBAAkB,CAAC,QAAQ,EAC3B,MAAM,CAAC,aAAa,CAAC,GAAG,EACxB,MAAM,CACN;oBACF,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC;AAC9C,oBAAA,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,eAAe;AAC1F,wBAAA,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,gBAAgB,EAAE,MAAM,IAAI,CAAC,CAAC;oBACjF;gBACD,KAAK,kBAAkB,CAAC,KAAK;AAC5B,oBAAA,IAAI,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM;wBAC1C,IAAI,CAAC,kCAAkC,CACtC,IAAI,CAAC,oBAAoB,EACzB,kBAAkB,CAAC,KAAK,EACxB,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,EACpC,MAAM,CACN;oBACF,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC;AAC9C,oBAAA,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,eAAe;AAC3C,wBAAA,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,gBAAgB,EAAE,MAAM,IAAI,CAAC,CAAC;oBAEjF;gBACD,KAAK,kBAAkB,CAAC,QAAQ;AAC/B,oBAAA,IAAI,MAAM,EAAE,aAAa,EAAE,MAAM;AAChC,wBAAA,IAAI,CAAC,kCAAkC,CACtC,IAAI,CAAC,oBAAoB,EACzB,kBAAkB,CAAC,QAAQ,EAC3B,YAAY,EACZ,MAAM,CACN;yBACG;AACJ,wBAAA,IAAI,CAAC,kCAAkC,CACtC,IAAI,CAAC,oBAAoB,EACzB,kBAAkB,CAAC,QAAQ,EAC3B,cAAc,EACd,MAAM,CACN;;oBAEF,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC;AAC9C,oBAAA,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,eAAe;AAC3C,wBAAA,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,gBAAgB,EAAE,MAAM,IAAI,CAAC,CAAC;oBACjF;gBACD,KAAK,kBAAkB,CAAC,UAAU;AACjC,oBAAA,IAAI,CAAC,kCAAkC,CACtC,IAAI,CAAC,oBAAoB,EACzB,kBAAkB,CAAC,UAAU,EAC7B,MAAM,CAAC,aAAa,CAAC,KAAK,EAC1B,MAAM,CACN;oBACD,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC;AAC9C,oBAAA,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,eAAe;AAC3C,wBAAA,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,gBAAgB,EAAE,MAAM,IAAI,CAAC,CAAC;oBACjF;AACD,gBAAA;oBACC;;AAEH,SAAC,CAAC;;AAEF,QAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC;AAAE,YAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI;;AACjG,YAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK;QAEvC,MAAM,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;cAC5D,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,uBAAuB;cACnE,IAAI;QAEP,IAAI,oBAAoB,IAAI,IAAI,CAAC,gBAAgB,EAAE,IAAI,EAAE;YACxD,IAAI,gBAAgB,GAA+B,IAAI;AACvD,YAAA,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,IAAG;AACrC,gBAAA,MAAM,QAAQ,GAAG,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,oBAAoB,CAAC;AAC3E,gBAAA,IAAI,QAAQ;oBAAE,gBAAgB,GAAG,QAAQ;AAC1C,aAAC,CAAC;AACF,YAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;YACxC,IAAI,gBAAgB,EAAE;AACrB,gBAAA,MAAM,0BAA0B,GAAG,IAAI,CAAC;qBACtC,MAAM,CAAC,MAAM,IAAI,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,EAAE,KAAK,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC;qBACtG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC;AAC9B,gBAAA,IAAI,CAAC,aAAa,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC,GAAG,0BAA0B,CAAC,CAAC;;iBAC9E;gBACN,IAAI,CAAC,aAAa,CAAC,2BAA2B,CAAC,IAAI,CAAC,SAAS,CAAC;;;;IAKzD,2BAA2B,GAAA;QAClC,OAAO;AACN,YAAA;gBACC,IAAI,EAAE,kBAAkB,CAAC,QAAQ;AACjC,gBAAA,UAAU,EAAE,EAAE;AACd,gBAAA,YAAY,EAAE,CAAC;AACf,gBAAA,eAAe,EAAE,CAAC;AAClB,aAAA;AACD,YAAA;gBACC,IAAI,EAAE,kBAAkB,CAAC,KAAK;AAC9B,gBAAA,UAAU,EAAE,EAAE;AACd,gBAAA,YAAY,EAAE,CAAC;AACf,gBAAA,eAAe,EAAE,CAAC;AAClB,aAAA;AACD,YAAA;gBACC,IAAI,EAAE,kBAAkB,CAAC,QAAQ;AACjC,gBAAA,UAAU,EAAE,EAAE;AACd,gBAAA,YAAY,EAAE,CAAC;AACf,gBAAA,eAAe,EAAE,CAAC;AAClB,aAAA;AACD,YAAA;gBACC,IAAI,EAAE,kBAAkB,CAAC,UAAU;AACnC,gBAAA,UAAU,EAAE,EAAE;AACd,gBAAA,YAAY,EAAE,CAAC;AACf,gBAAA,eAAe,EAAE,CAAC;AAClB,aAAA;AACD,YAAA;gBACC,IAAI,EAAE,kBAAkB,CAAC,aAAa;AACtC,gBAAA,UAAU,EAAE,EAAE;AACd,gBAAA,YAAY,EAAE,CAAC;AACf,gBAAA,eAAe,EAAE,CAAC;AAClB,aAAA;SACD;;AAGM,IAAA,kCAAkC,CACzC,oBAA8C,EAC9C,UAA8B,EAC9B,QAAgB,EAChB,UAAuB,EAAA;AAEvB,QAAA,MAAM,KAAK,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC;QACxE,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE;AAElB,QAAA,MAAM,WAAW,GAAG,oBAAoB,CAAC,KAAK,CAAC;AAC/C,QAAA,IAAI,UAAU,KAAK,kBAAkB,CAAC,QAAQ,EAAE;AAC/C,YAAA,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC;AAChC,YAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ;;AAE3B,QAAA,MAAM,aAAa,GAAG,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;AAChF,QAAA,IAAI,aAAa,GAAG,CAAC,CAAC,EAAE;YACvB,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,YAAY,EAAE;;YAEpD,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,OAAO;gBAAE,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,OAAO,GAAG,EAAE;YACtG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,EAAE,KAAK,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;AAC/G,gBAAA,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;;aACzD;AACN,YAAA,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC;AAC3B,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,YAAY,EAAE,CAAC;gBACf,OAAO,EAAE,CAAC,UAAU,CAAC;AACrB,aAAA,CAAC;;;IAIJ,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE;;wGA1pBtB,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAN,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,2BAAA,EAAA,EAAA,EAAA,KAAA,EAAA6D,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA/B,+BAA+B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAOJ,UAAU,EAChB,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAU,yHACC,UAAU,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAC3C,wBAAwB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClDpC,m0eA+WA,EAAA,MAAA,EAAA,CAAA,w8PAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAApF,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA6C,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAjB,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6NAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,8NAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAwB,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,oFAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,gCAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,GAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA6B,uBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,0BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,eAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,sBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sCAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,oCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yCAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,CAAA,EAAA,CAAA;;4FDvUa,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAN3C,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oCAAoC,cAGlC,KAAK,EAAA,QAAA,EAAA,m0eAAA,EAAA,MAAA,EAAA,CAAA,w8PAAA,CAAA,EAAA;oPAIjB,WAAW,EAAA,CAAA;sBADV,WAAW;uBAAC,eAAe;gBAI5B,YAAY,EAAA,CAAA;sBADX,WAAW;uBAAC,iBAAiB;gBAG8B,gBAAgB,EAAA,CAAA;sBAA3E,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,kBAAkB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;gBACG,UAAU,EAAA,CAAA;sBAA/D,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,YAAY,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;gBACoB,qBAAqB,EAAA,CAAA;sBAArF,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,uBAAuB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;gBACA,QAAQ,EAAA,CAAA;sBAA/D,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,wBAAwB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;gBAK7C,QAAQ,EAAA,CAAA;sBAAhB;gBAKQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAKQ,UAAU,EAAA,CAAA;sBAAlB;gBAKQ,UAAU,EAAA,CAAA;sBAAlB;gBAKQ,cAAc,EAAA,CAAA;sBAAtB;gBAKQ,QAAQ,EAAA,CAAA;sBAAhB;gBAKQ,SAAS,EAAA,CAAA;sBAAjB;gBAKQ,aAAa,EAAA,CAAA;sBAArB;gBAKQ,qBAAqB,EAAA,CAAA;sBAA7B;gBAKQ,cAAc,EAAA,CAAA;sBAAtB;gBAKQ,eAAe,EAAA,CAAA;sBAAvB;;;MEjFW,+BAA+B,CAAA;AAsDnC,IAAA,aAAA;AACA,IAAA,aAAA;AACC,IAAA,iBAAA;AACA,IAAA,SAAA;AAxDT;;AAEG;IACM,UAAU,GAAuB,IAAI;AAE9C;;AAEG;IACM,eAAe,GAAG,KAAK;AAEhC;;AAEG;AACO,IAAA,kBAAkB,GAAG,IAAI,YAAY,EAAU;AAEzD,IAAA,gBAAgB;IAChB,kBAAkB,GAAY,KAAK;IACnC,kBAAkB,GAAG,kBAAkB;IACvC,OAAO,GAAY,KAAK;IAExB,aAAa,GAAY,IAAI;AAC7B,IAAA,UAAU;IAEV,eAAe,GAAG,eAAe;AACjC,IAAA,YAAY;IAEZ,iBAAiB,GAAG,iBAAiB;IACrC,2BAA2B,GAAG,2BAA2B;AACzD,IAAA,gBAAgB;AAChB,IAAA,WAAW;AAEX,IAAA,IAAI,UAAU,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE;YACnC,QAAQ,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,IAAI;gBAC1C,KAAK,kBAAkB,CAAC,QAAQ;AAC/B,oBAAA,OAAO,iBAAiB;gBACzB,KAAK,kBAAkB,CAAC,QAAQ;AAC/B,oBAAA,OAAO,wBAAwB;gBAChC,KAAK,kBAAkB,CAAC,KAAK;AAC5B,oBAAA,OAAO,cAAc;gBACtB,KAAK,kBAAkB,CAAC,UAAU;AACjC,oBAAA,OAAO,0BAA0B;AAClC,gBAAA;AACC,oBAAA,OAAO,EAAE;;;AAGZ,QAAA,OAAO,EAAE;;AAGV,IAAA,sBAAsB,GAAG,SAAS,CAAA,CAAA,cAAA,CAAgB;AAClD,IAAA,sBAAsB,GAAG,SAAS,CAAA,CAAA,cAAA,CAAgB;AAElD,IAAA,WAAA,CACQ,aAAgC,EAChC,aAAgC,EAC/B,iBAA8C,EAC9C,SAAmB,EAAA;QAHpB,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAa,CAAA,aAAA,GAAb,aAAa;QACZ,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAS,CAAA,SAAA,GAAT,SAAS;;IAGlB,QAAQ,GAAA;QACP,IAAI,CAAC,iBAAiB,EAAE;AAExB,QAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;AAC9E,YAAA,IAAI,CAAC,YAAY,GAAG,GAAG;AACxB,SAAC,CAAC;;AAGH,IAAA,WAAW,CAAC,OAAsB,EAAA;QACjC,IAAI,YAAY,IAAI,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC,YAAY,EAAE;YAClE,IAAI,CAAC,gBAAgB,GAAG;AACvB,gBAAA,UAAU,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,YAAY;gBAC9C,KAAK,EAAE,SAAS,CAAA,CAAe,aAAA,CAAA;AAC/B,gBAAA,eAAe,EAAE,KAAK;AACtB,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,gBAAgB,EAAE,KAAK;AACvB,gBAAA,yBAAyB,EAAE,SAAS;aACpC;AAED,YAAA,IACC,OAAO,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,aAAa,EAAE,IAAI,KAAK,kBAAkB,CAAC,QAAQ;gBACtF,OAAO,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,aAAa,EAAE,GAAG,EACpD;AACD,gBAAA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC;AACzE,gBAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI;;YAG3B,IAAI,CAAC,iBAAiB,EAAE;;;IAIlB,iBAAiB,GAAA;;QAExB,IACC,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY;AACtD,YAAA,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,oBAAoB;AAC9D,YAAA,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW;YACrD,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc;YACzD,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,iBAAiB,CAAC,YAAY,CAAC,EAC3F;YACD,MAAM,IAAI,GACT,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY;AACnD,gBAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,oBAAoB;AAC3D,gBAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW;gBAClD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,cAAc;YACtD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;gBACvC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,oBAAoB,CAAC;gBAC3D,WAAW,EAAE,SAAS,CAAA,CAAA,WAAA,EACrB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,EAAE,sBAAsB,CAAC;AACpG,oBAAA,eACD,eACC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,EAAE,sBAAsB,CAAC;AACrG,oBAAA,eACD,yBACC,IAAI,CAAC,SAAS,CAAC,SAAS,CACvB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,oBAAoB,EAC3D,sBAAsB,CACtB,IAAI,eACN,uBACC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,cAAc,EAAE,sBAAsB,CAAC;AACvG,oBAAA,eACD,CAAG,CAAA,CAAA;gBACH,IAAI,EAAE,iBAAiB,CAAC,YAAY;AACpC,aAAA,CAAC;;;AAIH,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE;AAC7D,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI;gBAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,GAAG,EAAE;YAChF,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,iBAAiB,CAAC,YAAY,CAAC,KAAK,SAAS;gBAC5G,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,CAAC;oBAC5C,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY;oBAC7D,WAAW,EAAE,SAAS,CAAA,CAAmB,iBAAA,CAAA;oBACzC,IAAI,EAAE,iBAAiB,CAAC,YAAY;AACpC,iBAAA,CAAC;;;AAIJ,QAAA,IACC,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,MAAM;YACtC,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,IAAI,KAAK,kBAAkB,CAAC,QAAQ,EACnE;AACD,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI;gBAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,GAAG,EAAE;;YAEhF,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,iBAAiB,CAAC,SAAS,CAAC,KAAK,SAAS;gBACzG,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,CAAC;oBAC7C,KAAK,EACJ,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,YAAY,KAAK,aAAa,CAAC;0BAChE,SAAS,CAAA,CAAW,SAAA;0BACpB,SAAS,CAAA,CAA0B,wBAAA,CAAA;oBACvC,WAAW,EACV,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,YAAY,KAAK,aAAa,CAAC;0BAChE,SAAS,CAAA,CAAmB,iBAAA;0BAC5B,SAAS,CAAA,CAAuC,qCAAA,CAAA;oBACpD,IAAI,EAAE,iBAAiB,CAAC,SAAS;AACjC,iBAAA,CAAC;;AAGJ,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,IAAI;YACvC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAC7E,GAAG,IACF,GAAG,CAAC,WAAW,KAAK,WAAW;AAC/B,gBAAA,GAAG,CAAC,WAAW,CAAC,WAAW,EAAE,KAAK,wBAAwB;AAC1D,gBAAA,GAAG,CAAC,WAAW,CAAC,WAAW,EAAE,KAAK,iBAAiB;gBACnD,GAAG,CAAC,WAAW,CAAC,WAAW,EAAE,KAAK,cAAc,CACjD;;AAGF,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,IAAI;AACvC,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAC7E,GAAG,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAC3C;;QAGF,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,CAClE,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,iBAAiB,CAAC,eAAe,CACrD;QACD,IAAI,gBAAgB,EAAE;AACrB,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,YAAA,IAAI,gBAAgB,CAAC,KAAK,IAAI,iBAAiB,EAAE;AAChD,gBAAA,gBAAgB,CAAC,KAAK,GAAG,SAAS,CAAA,iBAAiB;AACnD,gBAAA,gBAAgB,CAAC,WAAW,GAAG,SAAS,CAAA,8HAA8H;;AAEvK,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,GAAG;gBACpC,gBAAgB;gBAChB,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,iBAAiB,CAAC,eAAe,CAAC;aACnG;;;AACK,YAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;;IAGrC,SAAS,GAAA;AACR,QAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC;AACvC,YAAA,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc;AACpC,YAAA,QAAQ,EAAE,aAAa;AACvB,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,eAAe,EAAE,CAAC;AAClB,YAAA,gBAAgB,EAAE,CAAC;AACnB,YAAA,SAAS,EAAE,SAAS;AACpB,SAAA,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AAE5C,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;;IAG/B,aAAa,GAAA;AACZ,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO;AAC5B,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,EAAE,CAAC;;IAGhE,cAAc,GAAA;AACb,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;;IAG3B,aAAa,GAAA;AACZ,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;;IAG1B,aAAa,GAAA;AACZ,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG;YAAE;AACzC,QAAA,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC,IAAI,CACtE,MAAK;AACJ,YAAA,IAAI,CAAC,WAAW,GAAG,SAAS,CAAA,aAAa;AACzC,YAAA,UAAU,CAAC,OAAO,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;SAChD,EACD,GAAG,IAAG;AACL,YAAA,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC;AAC3C,YAAA,IAAI,CAAC,WAAW,GAAG,SAAS,CAAA,sBAAsB;AACnD,SAAC,CACD;;IAGF,qBAAqB,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG;AAAE,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC;;AAGnG;;;;AAIG;AACH,IAAA,wBAAwB,CAAC,OAAoB,EAAA;AAC5C,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,KAAK;;AAE1B,QAAA,OAAO,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW;;AAGjD;;;;;AAKG;IACH,qBAAqB,CAAC,GAAe,EAAE,WAAoB,EAAA;AAC1D,QAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE;;QAEhF,IACC,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC,WAAW,CAAC,aAAa,CAAC;AACpE,YAAA,GAAG,CAAC,IAAI,KAAK,iBAAiB,CAAC,YAAY;AAC3C,YAAA,GAAG,CAAC,IAAI,KAAK,iBAAiB,CAAC,SAAS,EACvC;AACD,YAAA,OAAO,GAAG,GAAG,EAAE,WAAW,CAAK,EAAA,EAAA,QAAQ,EAAE;;QAG1C,IAAI,GAAG,CAAC,IAAI,KAAK,iBAAiB,CAAC,eAAe,EAAE;YACnD,OAAO,SAAS,CAAA,CAAA,4HAAA,CAA8H;;QAE/I,OAAO,GAAG,EAAE,WAAW;;AAGxB,IAAA,WAAW;wGA9QC,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA5F,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAa,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,2BAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA/B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,+OCxB5C,4zxBAkUA,EAAA,MAAA,EAAA,CAAA,mlcAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA6C,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAjB,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,oFAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAwB,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,gFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,6BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,8BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FD1Sa,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAN3C,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,8BAA8B,cAG5B,KAAK,EAAA,QAAA,EAAA,4zxBAAA,EAAA,MAAA,EAAA,CAAA,mlcAAA,CAAA,EAAA;8KAMR,UAAU,EAAA,CAAA;sBAAlB;gBAKQ,eAAe,EAAA,CAAA;sBAAvB;gBAKS,kBAAkB,EAAA,CAAA;sBAA3B;;;ME9BW,2BAA2B,CAAA;AAC7B,IAAA,iBAAiB,GAAsB,IAAI,YAAY,EAAO;AAExE,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;IAER,eAAe,GAAA;AACd,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;;wGARtB,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,sICRxC,oYAYA,EAAA,MAAA,EAAA,CAAA,o+SAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAnE,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDJa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,cAGpB,KAAK,EAAA,QAAA,EAAA,oYAAA,EAAA,MAAA,EAAA,CAAA,o+SAAA,CAAA,EAAA;wDAGP,iBAAiB,EAAA,CAAA;sBAA1B;;MAmBW,gCAAgC,CAAA;AAC5C,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;wGAHI,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gCAAgC,EANlC,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;AAET,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;4FAIW,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAR5C,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,EAC5B,QAAA,EAAA;;AAET,CAAA,CAAA,EAAA,UAAA,EAEW,KAAK,EAAA;;MAgBL,sCAAsC,CAAA;AAClD,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;wGAHI,sCAAsC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sCAAsC,EANxC,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;AAET,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;4FAIW,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBARlD,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kCAAkC,EAClC,QAAA,EAAA;;AAET,CAAA,CAAA,EAAA,UAAA,EAEW,KAAK,EAAA;;;ME7BL,mCAAmC,CAAA;AAiD3B,IAAA,cAAA;IA/CpB,WAAW,GAAG,MAAM;AAGpB,IAAA,YAAY;AAEZ;;AAEG;AACM,IAAA,QAAQ;AAEjB;;AAEG;AACM,IAAA,gBAAgB;AAEzB;;AAEG;IACM,UAAU,GAAuB,IAAI;AAE9C;;AAEG;AACM,IAAA,QAAQ;AAEjB;;AAEG;IACM,eAAe,GAAG,KAAK;AAEhC;;AAEG;AACM,IAAA,gBAAgB;AAEzB;;AAEG;AACM,IAAA,2BAA2B,GAAsB;AACzD,QAAA,IAAI,EAAE,KAAK;KACX;AAED;;AAEG;AACM,IAAA,UAAU;AAEnB,IAAA,WAAA,CAAoB,cAAiC,EAAA;QAAjC,IAAc,CAAA,cAAA,GAAd,cAAc;;AAElC,IAAA,QAAQ;AAER,IAAA,WAAW,CAAC,OAAsB,EAAA;AACjC,QAAA,IAAI,OAAO,CAAC,6BAA6B,CAAC,EAAE;;YAE3C,IAAI,CAAC,2BAA2B,EAAE;;;AAIpC,IAAA,eAAe;AAEf,IAAA,mBAAmB,CAAC,QAAgB,EAAA;QACnC,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,QAAQ,CAAC;AACrF,QAAA,IAAI,OAAO;AACV,YAAA,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC;AAC5C,gBAAA,IAAI,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;AAChF,aAAA,CAAC;;YACE,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,kBAAkB,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;;IAGjH,eAAe,GAAA;AACd,QAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,GAAG,IAAI;QAC5C,IAAI,CAAC,2BAA2B,EAAE;;IAG3B,2BAA2B,GAAA;AAClC,QAAA,IAAI;AACH,YAAA,YAAY,CAAC,OAAO,CAAC,6BAA6B,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;;QACpG,OAAO,KAAK,EAAE;AACf,YAAA,OAAO,CAAC,KAAK,CAAC,sDAAsD,EAAE,KAAK,CAAC;;;;AAK9E,IAAA,WAAW;wGArFC,mCAAmC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAsB,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mCAAmC,wfCXhD,yiGA2BA,EAAA,MAAA,EAAA,CAAA,knTAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAqE,+BAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sCAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gCAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,CAAA,EAAA,CAAA;;4FDhBa,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAN/C,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yCAAyC,cAGvC,KAAK,EAAA,QAAA,EAAA,yiGAAA,EAAA,MAAA,EAAA,CAAA,knTAAA,CAAA,EAAA;mFAIjB,WAAW,EAAA,CAAA;sBADV,WAAW;uBAAC,eAAe;gBAI5B,YAAY,EAAA,CAAA;sBADX,WAAW;uBAAC,iBAAiB;gBAMrB,QAAQ,EAAA,CAAA;sBAAhB;gBAKQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAKQ,UAAU,EAAA,CAAA;sBAAlB;gBAKQ,QAAQ,EAAA,CAAA;sBAAhB;gBAKQ,eAAe,EAAA,CAAA;sBAAvB;gBAKQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAKQ,2BAA2B,EAAA,CAAA;sBAAnC;gBAOQ,UAAU,EAAA,CAAA;sBAAlB;;;ME3BW,4BAA4B,CAAA;AA8HhC,IAAA,aAAA;AACA,IAAA,aAAA;AACC,IAAA,qBAAA;AACA,IAAA,GAAA;AACA,IAAA,SAAA;AAjIT;;AAEG;AACM,IAAA,WAAW,GAAgC,eAAe,CAAC,cAAc;AAElF;;AAEG;IACM,UAAU,GAAW,CAAC;AAE/B;;AAEG;IACM,cAAc,GAAW,CAAC;AAEnC;;AAEG;IACM,iBAAiB,GAAW,CAAC;AAEtC;;AAEG;IACM,gBAAgB,GAAW,CAAC;AAErC;;AAEG;IACM,aAAa,GAAW,CAAC;AAElC;;AAEG;IACM,cAAc,GAAW,CAAC;AAEnC;;AAEG;IACM,OAAO,GAAW,CAAC;AAE5B;;AAEG;IACM,oBAAoB,GAAW,CAAC;AAEzC;;AAEG;IACM,0BAA0B,GAAW,CAAC;AAE/C;;AAEG;IACM,gBAAgB,GAAG,KAAK;AAEjC;;AAEG;IACM,SAAS,GAAG,KAAK;AAE1B;;AAEG;IACM,sBAAsB,GAAG,KAAK;AAEvC;;AAEG;IACM,eAAe,GAAG,KAAK;AAEhC;;AAEG;IACM,oBAAoB,GAAY,KAAK;AAE9C;;AAEG;IACM,kBAAkB,GAAW,CAAC;AAEvC;;AAEG;IACM,WAAW,GAAW,IAAI;AAEnC;;AAEG;IACM,yBAAyB,GAAY,IAAI;IAEzC,QAAQ,GAAY,KAAK;AAElC;;AAEG;IACM,2BAA2B,GAAG,KAAK;AAEnC,IAAA,UAAU;IAEnB,WAAW,GAAG,WAAW;IAEzB,eAAe,GAAG,eAAe;IACjC,2BAA2B,GAAG,2BAA2B;IACzD,qBAAqB,GAAmC,SAAS;;AAGjE,IAAA,QAAQ,GAAW,SAAS,CAAA,CAAA,QAAA,CAAU;IAEtC,YAAY,GAAW,CAAC;IACxB,eAAe,GAAW,CAAC;AAE3B,IAAA,8BAA8B,GAAG;QAChC,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;KACpD;AAED,IAAA,uBAAuB,GAAG;AACzB,QAAA,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;KAC9B;IAED,uBAAuB,GAAG,EAAE;IAE5B,gBAAgB,GAAG,EAAE;AACrB,IAAA,YAAY;IAEZ,WACQ,CAAA,aAAgC,EAChC,aAAgC,EAC/B,qBAA+C,EAC/C,GAAsB,EACtB,SAAsC,EAAA;QAJvC,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAa,CAAA,aAAA,GAAb,aAAa;QACZ,IAAqB,CAAA,qBAAA,GAArB,qBAAqB;QACrB,IAAG,CAAA,GAAA,GAAH,GAAG;QACH,IAAS,CAAA,SAAA,GAAT,SAAS;;IAGlB,QAAQ,GAAA;AACP,QAAA,IAAI,CAAC,qBAAqB,CAAC,uBAAuB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;AAC5F,YAAA,IAAI,IAAI,EAAE,mBAAmB,KAAK,SAAS,IAAI,IAAI,CAAC,qBAAqB,IAAI,SAAS,EAAE;AACvF,gBAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,EAAE,mBAAmB,EAAE,GAAG,CAC1D,GAAG,IAAI,GAAG,CAAC,uBAA2C,CACtD;AACD,gBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;AAE1B,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,IAAG;AACzF,YAAA,IAAI,CAAC,WAAW,GAAG,OAAO,GAAG,eAAe,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW;AAC9E,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;AAC9E,YAAA,IAAI,CAAC,YAAY,GAAG,GAAG;AACxB,SAAC,CAAC;;AAGH,IAAA,WAAW,CAAC,OAAsB,EAAA;QACjC,IACC,sBAAsB,IAAI,OAAO;AACjC,YAAA,kBAAkB,IAAI,OAAO;AAC7B,YAAA,WAAW,IAAI,OAAO;AACtB,YAAA,wBAAwB,IAAI,OAAO;AACnC,aAAC,iBAAiB,IAAI,OAAO,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC,YAAY,KAAK,KAAK,CAAC,EAClF;AACD,YAAA,IACC,CAAC,CAAC,IAAI,CAAC,eAAe;AACrB,gBAAA,IAAI,CAAC,oBAAoB;gBACzB,CAAC,IAAI,CAAC,gBAAgB;AACtB,gBAAA,IAAI,CAAC,SAAS;gBACd,IAAI,CAAC,sBAAsB;AAC5B,iBAAC,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,sBAAsB,CAAC,EACjG;AACD,gBAAA,IAAI,CAAC,WAAW,GAAG,eAAe,CAAC,cAAc;gBACjD,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC5C,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;;YAGxG,IACC,CAAC,IAAI,CAAC,eAAe;AACrB,gBAAA,IAAI,CAAC,gBAAgB;gBACrB,CAAC,IAAI,CAAC,SAAS;AACf,gBAAA,EAAE,IAAI,CAAC,WAAW,KAAK,eAAe,CAAC,sBAAsB,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAC7F;AACD,gBAAA,IAAI,CAAC,WAAW,GAAG,eAAe,CAAC,MAAM;gBACzC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,0BAA0B,CAAC;AACzE,gBAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC;AACvC,oBAAA,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc;AACpC,oBAAA,QAAQ,EAAE,aAAa;oBACvB,SAAS,EAAE,MAAM,CAAC,0BAA0B;AAC5C,iBAAA,CAAC;;AAGH,YAAA,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;AACrG,gBAAA,IAAI,CAAC,WAAW,GAAG,eAAe,CAAC,sBAAsB;gBACzD,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AAE5C,gBAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC;AACvC,oBAAA,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc;AACpC,oBAAA,SAAS,EAAE,SAAS;AACpB,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,iBAAA,CAAC;;YAGH,IACC,CAAC,IAAI,CAAC,eAAe;AACrB,gBAAA,IAAI,CAAC,sBAAsB;AAC3B,gBAAA,IAAI,CAAC,WAAW,KAAK,eAAe,CAAC,sBAAsB,EAC1D;AACD,gBAAA,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC;sBACtB,eAAe,CAAC;AAClB,sBAAE,CAAC,IAAI,CAAC;0BACN,eAAe,CAAC;0BAChB,IAAI;AAEP,gBAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC;AACvC,oBAAA,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc;AACpC,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,SAAS,EAAE,CAAC,IAAI,CAAC;AAChB,0BAAE;AACF,0BAAE,CAAC,IAAI,CAAC;8BACN,MAAM,CAAC;AACT,8BAAE,SAAS;AACZ,iBAAA,CAAC;AACF,gBAAA,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CACrC,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,0BAA0B,GAAG,IAAI,CAC1F;;;AAIH,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,aAAa,IAAI,OAAO;YAAE,IAAI,CAAC,wBAAwB,EAAE;AAE9E,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,CAAC;AAClG,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;QAE/G,IACC,IAAI,CAAC,QAAQ;aACZ,SAAS,IAAI,OAAO;AACpB,gBAAA,kBAAkB,IAAI,OAAO;AAC7B,gBAAA,mBAAmB,IAAI,OAAO;AAC9B,gBAAA,gBAAgB,IAAI,OAAO;AAC3B,gBAAA,YAAY,IAAI,OAAO;AACvB,iBAAC,iBAAiB,IAAI,OAAO,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC,YAAY,KAAK,KAAK,CAAC,CAAC,EACpF;YACD,UAAU,CAAC,MAAK;gBACf,IAAI,CAAC,uBAAuB,GAAG;AAC9B,oBAAA;AACC,wBAAA,IAAI,EAAE,WAAW;wBACjB,KAAK,EAAE,IAAI,CAAC,cAAc;AAC1B,qBAAA;AACD,oBAAA;AACC,wBAAA,IAAI,EAAE,eAAe;wBACrB,KAAK,EAAE,IAAI,CAAC,iBAAiB;AAC7B,qBAAA;AACD,oBAAA;AACC,wBAAA,IAAI,EAAE,aAAa;wBACnB,KAAK,EAAE,IAAI,CAAC,gBAAgB;AAC5B,qBAAA;AACD,oBAAA;AACC,wBAAA,IAAI,EAAE,MAAM;wBACZ,KAAK,EACJ,IAAI,CAAC,UAAU;AACf,4BAAA,IAAI,CAAC,aAAa;AAClB,4BAAA,IAAI,CAAC,cAAc;AACnB,4BAAA,IAAI,CAAC,iBAAiB;AACtB,4BAAA,IAAI,CAAC,gBAAgB;AACtB,qBAAA;iBACD;gBAED,IAAI,CAAC,gBAAgB,GAAG;AACvB,oBAAA;AACC,wBAAA,IAAI,EAAE,IAAI;wBACV,KAAK,EAAE,IAAI,CAAC,YAAY;AACxB,qBAAA;AACD,oBAAA;AACC,wBAAA,IAAI,EAAE,OAAO;AACb,wBAAA,KAAK,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY;AAC1C,qBAAA;iBACD;AACF,aAAC,CAAC;;;AAIJ,IAAA,SAAS,CAAC,WAA4B,EAAA;AACrC,QAAA,IACC,WAAW,IAAI,IAAI,CAAC,WAAW;AAC/B,aAAC,WAAW,KAAK,eAAe,CAAC,cAAc,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,oBAAoB,CAAC;AACtG,aAAC,WAAW,KAAK,eAAe,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,oBAAoB,CAAC;AACvF,aAAC,WAAW,KAAK,eAAe,CAAC,sBAAsB;AACtD,gBAAA,IAAI,CAAC,sBAAsB;gBAC3B,IAAI,CAAC,oBAAoB,CAAC;YAC3B,IAAI,CAAC,kBAAkB,IAAI,GAAG;YAE9B;AAED,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW;AAC9B,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;QAEtB,QAAQ,WAAW;YAClB,KAAK,eAAe,CAAC,MAAM;AAC1B,gBAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC;AACvC,oBAAA,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc;AACpC,oBAAA,QAAQ,EAAE,aAAa;oBACvB,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,IAAI,EAAE,KAAK;oBAC5D,SAAS,EAAE,MAAM,CAAC,0BAA0B;AAC5C,oBAAA,eAAe,EAAE,CAAC;AAClB,oBAAA,gBAAgB,EAAE,CAAC;AACnB,oBAAA,mBAAmB,EAAE,SAAS;AAC9B,oBAAA,oBAAoB,EAAE,KAAK;AAC3B,iBAAA,CAAC;gBACF,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,0BAA0B,CAAC;gBACzE,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC;gBACvD,IAAI,CAAC,aAAa,CAAC,sCAAsC,CAAC,IAAI,CAAC,IAAI,CAAC;gBAEpE;YACD,KAAK,eAAe,CAAC,cAAc;AAClC,gBAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC;AACvC,oBAAA,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc;AACpC,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,SAAS,EAAE,SAAS;AACpB,oBAAA,eAAe,EAAE,CAAC;AAClB,oBAAA,gBAAgB,EAAE,CAAC;AACnB,oBAAA,mBAAmB,EAAE,SAAS;oBAC9B,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,IAAI,EAAE,KAAK;AAC5D,iBAAA,CAAC;gBACF,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC5C,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC;gBACvD,IAAI,CAAC,aAAa,CAAC,sCAAsC,CAAC,IAAI,CAAC,IAAI,CAAC;gBACpE;YACD,KAAK,eAAe,CAAC,sBAAsB;AAC1C,gBAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC;AACvC,oBAAA,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc;AACpC,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,SAAS,EAAE,SAAS;AACpB,oBAAA,eAAe,EAAE,CAAC;AAClB,oBAAA,gBAAgB,EAAE,CAAC;AACnB,oBAAA,mBAAmB,EAAE,SAAS;oBAC9B,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,IAAI,EAAE,KAAK;AAC5D,iBAAA,CAAC;gBACF,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC5C,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC;gBACvD,IAAI,CAAC,aAAa,CAAC,sCAAsC,CAAC,IAAI,CAAC,IAAI,CAAC;gBACpE;AACD,YAAA;gBACC;;;IAIK,wBAAwB,GAAA;AAC/B,QAAA,QAAQ,IAAI,CAAC,WAAW;YACvB,KAAK,eAAe,CAAC,MAAM;gBAC1B,IAAI,CAAC,8BAA8B,GAAG;oBACrC,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;iBACpD;gBACD,IAAI,CAAC,uBAAuB,GAAG;AAC9B,oBAAA,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;iBAC9B;gBACD;YACD,KAAK,eAAe,CAAC,cAAc;gBAClC,IAAI,CAAC,8BAA8B,GAAG;oBACrC,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;iBACpD;gBACD,IAAI,CAAC,uBAAuB,GAAG;AAC9B,oBAAA,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;iBAC9B;gBACD;YACD,KAAK,eAAe,CAAC,sBAAsB;gBAC1C,IAAI,CAAC,8BAA8B,GAAG;oBACrC,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;iBACpD;gBACD,IAAI,CAAC,uBAAuB,GAAG;AAC9B,oBAAA,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;iBAC9B;gBACD;AACD,YAAA;gBACC;;;AAIH,IAAA,WAAW;wGAtXC,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAhG,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAa,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAyE,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAP,2BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA5B,4BAA4B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/BzC,2giCAskBA,ED/iBa,MAAA,EAAA,CAAA,omxBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA5E,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA6C,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAjB,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAgE,2BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,8BAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,aAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA9F,EAAA,CAAA,WAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,EAAA,UAAA,EAAA;YACX,OAAO,CAAC,QAAQ,EAAE;gBACjB,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AACpC,gBAAA,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;aACtE,CAAC;AACF,SAAA,EAAA,CAAA;;4FAGW,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAZxC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iCAAiC,EAG/B,UAAA,EAAA;wBACX,OAAO,CAAC,QAAQ,EAAE;4BACjB,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AACpC,4BAAA,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;yBACtE,CAAC;AACF,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,2giCAAA,EAAA,MAAA,EAAA,CAAA,omxBAAA,CAAA,EAAA;2NAMR,WAAW,EAAA,CAAA;sBAAnB;gBAKQ,UAAU,EAAA,CAAA;sBAAlB;gBAKQ,cAAc,EAAA,CAAA;sBAAtB;gBAKQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAKQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAKQ,aAAa,EAAA,CAAA;sBAArB;gBAKQ,cAAc,EAAA,CAAA;sBAAtB;gBAKQ,OAAO,EAAA,CAAA;sBAAf;gBAKQ,oBAAoB,EAAA,CAAA;sBAA5B;gBAKQ,0BAA0B,EAAA,CAAA;sBAAlC;gBAKQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAKQ,SAAS,EAAA,CAAA;sBAAjB;gBAKQ,sBAAsB,EAAA,CAAA;sBAA9B;gBAKQ,eAAe,EAAA,CAAA;sBAAvB;gBAKQ,oBAAoB,EAAA,CAAA;sBAA5B;gBAKQ,kBAAkB,EAAA,CAAA;sBAA1B;gBAKQ,WAAW,EAAA,CAAA;sBAAnB;gBAKQ,yBAAyB,EAAA,CAAA;sBAAjC;gBAEQ,QAAQ,EAAA,CAAA;sBAAhB;gBAKQ,2BAA2B,EAAA,CAAA;sBAAnC;gBAEQ,UAAU,EAAA,CAAA;sBAAlB;;;MExHW,eAAe,CAAA;wGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,EAJZ,YAAA,EAAA,CAAA,kBAAkB,CACvB,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,kBAAkB,CAAA,EAAA,CAAA;AAEhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAHjB,YAAY,CAAA,EAAA,CAAA;;4FAGV,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,YAAY,EAAE,CAAC,kBAAkB,CAAC;oBAClC,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,kBAAkB,CAAC;AAC7B,iBAAA;;;MCMY,cAAc,CAAA;wGAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,EAJX,YAAA,EAAA,CAAA,iBAAiB,CACtB,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,aACjG,iBAAiB,CAAA,EAAA,CAAA;yGAEf,cAAc,EAAA,OAAA,EAAA,CAHhB,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,CAAA,EAAA,CAAA;;4FAG/F,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,YAAY,EAAE,CAAC,iBAAiB,CAAC;AACjC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,CAAC;oBAC5G,OAAO,EAAE,CAAC,iBAAiB,CAAC;AAC5B,iBAAA;;;MCLY,6BAA6B,CAAA;AACzC,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;wGAHI,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA7B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,oFCR1C,6BACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDOa,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBANzC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,cAGvB,KAAK,EAAA,QAAA,EAAA,6BAAA,EAAA;;;MEEL,kCAAkC,CAAA;AAC9C,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;wGAHI,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kCAAkC,0FCR/C,6BACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDOa,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAN9C,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,+BAA+B,cAG7B,KAAK,EAAA,QAAA,EAAA,6BAAA,EAAA;;;MEkBL,wBAAwB,CAAA;AAmB3B,IAAA,mBAAA;AACD,IAAA,aAAA;AACC,IAAA,GAAA;AApBA,IAAA,UAAU,GAA6B,wBAAwB,CAAC,OAAO;AAEhF,IAAA,kBAAkB,GAAoB;AACrC,QAAA,YAAY,EAAE,CAAC;AACf,QAAA,aAAa,EAAE,CAAC;AAChB,QAAA,aAAa,EAAE,CAAC;AAChB,QAAA,eAAe,EAAE,CAAC;KAClB;AACD,IAAA,cAAc;IAEd,wBAAwB,GAAG,wBAAwB;IACnD,qBAAqB,GAAG,qBAAqB;AAC7C,IAAA,YAAY;AAGZ,IAAA,QAAQ;AAER,IAAA,WAAA,CACS,mBAA6C,EAC9C,aAAgC,EAC/B,GAAe,EAAA;QAFf,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;QACpB,IAAa,CAAA,aAAA,GAAb,aAAa;QACZ,IAAG,CAAA,GAAA,GAAH,GAAG;;IAGZ,QAAQ,GAAA;QACP,UAAU,CAAC,MAAK;YACf,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACnE,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,KAAK,EAAE,IAAI,IAAI,qBAAqB,CAAC,OAAO;AAC3G,YAAA,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;AAClF,gBAAA,IAAI,CAAC,IAAI;oBAAE;AACX,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI;AAChC,aAAC,CAAC;AACF,YAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;AAC9E,gBAAA,IAAI,CAAC,YAAY,GAAG,GAAG;AACxB,aAAC,CAAC;AACH,SAAC,CAAC;;AAGH,IAAA,WAAW,CAAC,OAAsB,EAAA;QACjC,IAAI,YAAY,IAAI,OAAO;YAAE,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;;AAGjG,IAAA,eAAe;AAEf,IAAA,IAAI,oBAAoB,GAAA;AACvB,QAAA,IAAI,sBAAsB,GAAG,IAAI,CAAC,UAAU,GAAG,GAAG;AAClD,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;AAGvF,IAAA,IAAI,UAAU,GAAA;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,YAAY,IAAI,IAAI,CAAC,UAAU,KAAK,wBAAwB,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC;;AAG1G,IAAA,WAAW;wGArDC,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA4C,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAA1C,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,uMCxBrC,k4BAoBA,EAAA,MAAA,EAAA,CAAA,2lBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAyB,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAsF,uBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,0BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,eAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,sBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDIa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,cAGjB,KAAK,EAAA,QAAA,EAAA,k4BAAA,EAAA,MAAA,EAAA,CAAA,2lBAAA,CAAA,EAAA;gJAGR,UAAU,EAAA,CAAA;sBAAlB;gBAeD,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;;;ME7B7B,wBAAwB,CAAA;AAkBhB,IAAA,cAAA;AAjB6B,IAAA,gBAAgB;AACd,IAAA,kBAAkB;AACL,IAAA,+BAA+B;AAE/F;;AAEG;AACM,IAAA,QAAQ;AAEjB;;AAEG;AACM,IAAA,KAAK;IAEd,QAAQ,GAAY,KAAK;AACzB,IAAA,iCAAiC;AAEjC,IAAA,WAAA,CAAoB,cAAiC,EAAA;QAAjC,IAAc,CAAA,cAAA,GAAd,cAAc;;IAElC,QAAQ,GAAA;AACP,QAAA,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,IAAG;YAC1F,IAAI,CAAC,QAAQ,GAAG,OAAO,KAAK,IAAI,CAAC,kBAAkB;AACpD,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK;AACf,YAAA,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;AAC7E,gBAAA,IAAI,IAAI,CAAC,mBAAmB,KAAK,IAAI,CAAC,KAAK;oBAAE;gBAC7C,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;gBAC3E,IAAI,CAAC,sCAAsC,EAAE;gBAC7C,IAAI,IAAI,CAAC,iCAAiC;oBACzC,IAAI,CAAC,cAAc,CAAC,sCAAsC,CAAC,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC;;oBACjG,IAAI,CAAC,cAAc,CAAC,sCAAsC,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3E,aAAC,CAAC;;IAGJ,UAAU,GAAA;QACT,IACC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,mBAAmB,KAAK,IAAI,CAAC,KAAK;YACrE,IAAI,CAAC,KAAK,IAAI,SAAS;YACvB,IAAI,CAAC,KAAK,IAAI,IAAI;YAElB;QAED,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;QAC3E,IAAI,CAAC,sCAAsC,EAAE;QAC7C,IAAI,IAAI,CAAC,iCAAiC;YACzC,IAAI,CAAC,cAAc,CAAC,sCAAsC,CAAC,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC;;YACjG,IAAI,CAAC,cAAc,CAAC,sCAAsC,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1E,QAAA,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC;AACxC,YAAA,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc;AACrC,YAAA,mBAAmB,EAAE,IAAI,CAAC,KAAK,IAAI,QAAQ;AAC3C,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,SAAS,EAAE,IAAI;AACf,SAAA,CAAC;QACF,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG9C,sCAAsC,GAAA;;QAErC,MAAM,YAAY,GAAG,IAAI,CAAC,+BAA+B,CAAC,kBAAkB,CAAC,IAAI,CAAC;;QAElF,IAAI,CAAC,iCAAiC,GAAG,YAAY,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;QAC1E,YAAY,CAAC,OAAO,EAAE;;AAGvB,IAAA,WAAW;wGAlEC,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAnG,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,ihBCVrC,krBAsBA,EAAA,MAAA,EAAA,CAAA,wbAAA,CAAA,EAAA,CAAA;;4FDZa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,cAGlB,KAAK,EAAA,QAAA,EAAA,krBAAA,EAAA,MAAA,EAAA,CAAA,wbAAA,CAAA,EAAA;mFAGgC,gBAAgB,EAAA,CAAA;sBAAhE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,kBAAkB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBACI,kBAAkB,EAAA,CAAA;sBAApE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,oBAAoB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBACe,+BAA+B,EAAA,CAAA;sBAA9F,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,iCAAiC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAKrD,QAAQ,EAAA,CAAA;sBAAhB;gBAKQ,KAAK,EAAA,CAAA;sBAAb;;MAgEW,6BAA6B,CAAA;AACzC,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;wGAHI,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA7B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,EAN/B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;AAET,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wbAAA,CAAA,EAAA,CAAA;;4FAIW,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBARzC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,EAC1B,QAAA,EAAA;;AAET,CAAA,CAAA,EAAA,UAAA,EAEW,KAAK,EAAA,MAAA,EAAA,CAAA,wbAAA,CAAA,EAAA;;MAgBL,+BAA+B,CAAA;AAC3C,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;wGAHI,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA/B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,EANjC,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;AAET,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wbAAA,CAAA,EAAA,CAAA;;4FAIW,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAR3C,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,EAC5B,QAAA,EAAA;;AAET,CAAA,CAAA,EAAA,UAAA,EAEW,KAAK,EAAA,MAAA,EAAA,CAAA,wbAAA,CAAA,EAAA;;MAgBL,qCAAqC,CAAA;AACjD,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;wGAHI,qCAAqC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qCAAqC,EANvC,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;AAET,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wbAAA,CAAA,EAAA,CAAA;;4FAIW,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBARjD,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2CAA2C,EAC3C,QAAA,EAAA;;AAET,CAAA,CAAA,EAAA,UAAA,EAEW,KAAK,EAAA,MAAA,EAAA,CAAA,wbAAA,CAAA,EAAA;;;MEtGL,qBAAqB,CAAA;AAgBb,IAAA,sBAAA;AAfuB,IAAA,QAAQ;IAEnD,iBAAiB,GAAuC,EAAE;IAE1D,kBAAkB,GAAA;AACjB,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,IAAG;AAC/B,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;gBAC3B,uBAAuB,EAAE,OAAO,CAAC,gBAAgB;gBACjD,yBAAyB,EAAE,OAAO,CAAC,kBAAkB;AACjB,aAAA,CAAC;AACvC,SAAC,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC;YACpC,IAAI,CAAC,sBAAsB,CAAC,8BAA8B,CAAC,IAAI,CAAC,iBAAiB,CAAC;;AAEpF,IAAA,WAAA,CAAoB,sBAAgD,EAAA;QAAhD,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB;;AAE1C,IAAA,QAAQ;wGAlBI,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA+C,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAArB,qBAAqB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAChB,wBAAwB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZ1C,2DACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDUa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,cAGd,KAAK,EAAA,QAAA,EAAA,2DAAA,EAAA;0FAG0B,QAAQ,EAAA,CAAA;sBAAlD,eAAe;uBAAC,wBAAwB;;;MEa7B,iBAAiB,CAAA;wGAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;yGAAjB,iBAAiB,EAAA,YAAA,EAAA,CAbd,oBAAoB,CAAA,EAAA,OAAA,EAAA,CAElC,YAAY;YACZ,WAAW;YACX,gBAAgB;YAChB,kBAAkB;YAClB,eAAe;YACf,eAAe;YACf,gBAAgB;AAChB,YAAA,aAAa,aAEJ,oBAAoB,CAAA,EAAA,CAAA;AAElB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAX5B,YAAY;YACZ,WAAW;YACX,gBAAgB;YAChB,kBAAkB;YAClB,eAAe;YACf,eAAe;YACf,gBAAgB;YAChB,aAAa,CAAA,EAAA,CAAA;;4FAIF,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAd7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,YAAY,EAAE,CAAC,oBAAoB,CAAC;AACpC,oBAAA,OAAO,EAAE;wBACR,YAAY;wBACZ,WAAW;wBACX,gBAAgB;wBAChB,kBAAkB;wBAClB,eAAe;wBACf,eAAe;wBACf,gBAAgB;wBAChB,aAAa;AACb,qBAAA;oBACD,OAAO,EAAE,CAAC,oBAAoB,CAAC;AAC/B,iBAAA;;;MCdY,iBAAiB,CAAA;wGAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,iBAJd,oBAAoB,CAAA,EAAA,OAAA,EAAA,CACzB,YAAY,EAAE,gBAAgB,aAC9B,oBAAoB,CAAA,EAAA,CAAA;yGAElB,iBAAiB,EAAA,OAAA,EAAA,CAHnB,YAAY,EAAE,gBAAgB,CAAA,EAAA,CAAA;;4FAG5B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,YAAY,EAAE,CAAC,oBAAoB,CAAC;AACpC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,gBAAgB,CAAC;oBACzC,OAAO,EAAE,CAAC,oBAAoB,CAAC;AAC/B,iBAAA;;;MCDY,kBAAkB,CAAA;wGAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,uECR/B,0EAGA,EAAA,MAAA,EAAA,CAAA,2GAAA,CAAA,EAAA,CAAA;;4FDKa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,cAGV,KAAK,EAAA,QAAA,EAAA,0EAAA,EAAA,MAAA,EAAA,CAAA,2GAAA,CAAA,EAAA;;;MEMI,yBAAyB,CAAA;AAQnC,IAAA,aAAA;AACA,IAAA,aAAA;AACA,IAAA,QAAA;AACA,IAAA,QAAA;AACA,IAAA,YAAA;AACA,IAAA,aAAA;AACA,IAAA,YAAA;AACA,IAAA,kBAAA;AACA,IAAA,eAAA;AAfX,IAAA,UAAU;AAEV,IAAA,IAAI,YAAY,GAAA;AACf,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,IAAI,MAAM,CAAC,0BAA0B;;AAGnH,IAAA,WAAA,CACW,aAAgC,EAChC,aAAgC,EAChC,QAA8B,EAC9B,QAAmB,EACnB,YAAyC,EACzC,aAAsC,EACtC,YAAsC,EACtC,kBAAgD,EAChD,eAAoC,EAAA;QARpC,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB;QAClB,IAAe,CAAA,eAAA,GAAf,eAAe;;AAG1B,IAAA,kBAAkB,CAAC,KAAuB,EAAA;AACzC,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU;QAClC,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;;AAG/C,IAAA,kBAAkB,CAAC,gBAAyB,EAAA;QAC3C,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC;;AAEvD;;ACOK,MAAgB,kCAAmC,SAAQ,yBAAyB,CAAA;IACzF,gBAAgB,GAAY,KAAK;AAEjC,IAAA,oBAAoB;AACpB,IAAA,aAAa;AAEb,IAAA,kBAAkB;AAClB,IAAA,aAAa;AACb,IAAA,iBAAiB;IAEjB,mBAAmB,GAAY,KAAK;IACpC,qBAAqB,GAAG,qBAAqB;AAC7C,IAAA,MAAM;AACN,IAAA,gBAAgB;AAChB,IAAA,aAAa;AACb,IAAA,WAAW,GAAoB,eAAe,CAAC,cAAc;AAE7D,IAAA,mBAAmB;AACnB,IAAA,kBAAkB;AAClB,IAAA,oBAAoB;AACpB,IAAA,eAAe;AACf,IAAA,kBAAkB,GAAoB;AACrC,QAAA,YAAY,EAAE,CAAC;AACf,QAAA,aAAa,EAAE,CAAC;AAChB,QAAA,aAAa,EAAE,CAAC;AAChB,QAAA,eAAe,EAAE,CAAC;KAClB;AACD,IAAA,kBAAkB;AAClB,IAAA,sBAAsB;AACtB,IAAA,4BAA4B;AAE5B,IAAA,YAAY;IAEZ,oBAAoB,GAAY,IAAI;IACpC,oBAAoB,GAAY,IAAI;IACpC,wBAAwB,GAAY,IAAI;IACxC,kBAAkB,GAAW,CAAC;IAE9B,gBAAgB,GAAY,KAAK;IACjC,SAAS,GAAY,KAAK;IAC1B,sBAAsB,GAAY,KAAK;IACvC,oBAAoB,GAAY,KAAK;AACrC,IAAA,kBAAkB;IAClB,QAAQ,GAAa,aAAa;IAClC,gBAAgB,GAAY,KAAK;IAEjC,eAAe,GAAG,eAAe;IACjC,wBAAwB,GAAG,wBAAwB;IAEnD,WAAW,GAA4B,IAAI;IAE3C,qBAAqB,GAAiC,SAAS;IAC/D,2BAA2B,GAAiC,SAAS;AACrE,IAAA,eAAe;AACf,IAAA,oBAAoB;IACpB,iBAAiB,GAAY,KAAK;AAClC,IAAA,wBAAwB;IACxB,0BAA0B,GAAY,IAAI;IAC1C,0BAA0B,GAAY,IAAI;AAC1C,IAAA,wBAAwB;AACxB,IAAA,oBAAoB;AACpB,IAAA,qBAAqB;AACrB,IAAA,kCAAkC;AAClC,IAAA,6CAA6C;AAC7C,IAAA,gBAAgB;AAChB,IAAA,cAAc;AACd,IAAA,aAAa,GAAyB,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;IACxF,oBAAoB,GAAY,IAAI;IACpC,qBAAqB,GAAY,KAAK;IACtC,aAAa,GAAY,KAAK;IAC9B,wBAAwB,GAAY,KAAK;AAEzC,IAAA,oBAAoB;AACpB,IAAA,cAAc;;AAGN,IAAA,YAAY,GAAG,IAAI,OAAO,EAAE;AAEpC,IAAA,IAAI,QAAQ,GAAA;QACX,IAAI,CAAC,IAAI,CAAC,gBAAgB;AAAE,YAAA,OAAO,CAAC;AACpC,QAAA,QACC,IAAI,CAAC,gBAAgB,EAAE,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,cAAc,GAAG,IAAI,CAAC,gBAAgB,EAAE,YAAY;;AAIhH,IAAA,IAAI,mBAAmB,GAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,WAAW,IAAI,CAAC,IAAI,CAAC,oBAAoB;AAAE,YAAA,OAAO,EAAE;AAC7F,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAC/D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC,EAC3E,IAAI,CAAC,aAAa,CAAC,aAAa,EAChC,IAAI,CAAC,aAAa,CAAC,mBAAmB,CACtC;AACD,QAAA,OAAO,IAAI,CAAC,0BAA0B,CAAC,mBAAmB,CAAC;;AAG5D,IAAA,eAAe;AACf,IAAA,aAAa;AACb,IAAA,YAAY;AAEZ,IAAA,WAAA,CACC,aAAgC,EAChC,aAAgC,EAChC,QAA8B,EAC9B,QAAmB,EACnB,YAAyC,EACzC,aAAsC,EACtC,YAAsC,EACtC,kBAAgD,EAChD,eAAoC,EAAA;AAEpC,QAAA,KAAK,CACJ,aAAa,EACb,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,eAAe,CACf;;IAGF,qBAAqB,GAAA;;AAEpB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,OAAO,EAAE;AAEjC,QAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;AACtF,YAAA,IAAI,CAAC,IAAI;gBAAE;AACX,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;AACjC,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,eAAe;AAC7C,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;AAC7B,YAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,wBAAwB;AAE7D,YAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,kBAAkB,EAAE;AACzC,gBAAA,IAAI,CAAC,WAAW,GAAG,eAAe,CAAC,sBAAsB;;;AAEzD,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;sBACrB,eAAe,CAAC;AAClB,sBAAE,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC;0BAC1B,eAAe,CAAC;AAClB,0BAAE,eAAe,CAAC,cAAc;YAElC,IAAI,IAAI,CAAC,WAAW,IAAI,eAAe,CAAC,MAAM,EAAE;gBAC/C,IAAI,CAAC,YAAY,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrD,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC9C,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;AAClD,gBAAA,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC;AAC5C,gBAAA,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC;;YAG7C,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,IAAI,KAAK;AAE9D,YAAA,aAAa,CAAC;gBACb,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBACpE,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;aACnE;AACC,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC;iBACjC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAI;gBAClC,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,UAAU,KAAK,KAAK;AAAE,oBAAA,IAAI,CAAC,MAAM,GAAG,EAAE;;AAE3E,oBAAA,IAAI,CAAC,MAAM;AACV,wBAAA,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CACtC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,0BAA0B,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,4BAA4B,CACjG,IAAI,EAAE;AACT,gBAAA,IAAI,CAAC,mBAAmB,GAAG,QAAQ;AACnC,gBAAA,IAAI,CAAC,kBAAkB,GAAG,OAAO;AAEjC,gBAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,KAAK,SAAS,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS;gBAE3G,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAE;gBAC3D,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE;gBACjE,IAAI,CAAC,sBAAsB,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,wBAAwB,EAAE;AAE5E,gBAAA,IAAI,QAAQ,IAAI,IAAI,CAAC,sBAAsB;AAAE,oBAAA,IAAI,CAAC,wBAAwB,GAAG,KAAK;gBAElF,IAAI,CAAC,aAAa,GAAG,QAAQ,EAAE,eAAe,EAAE,UAAU;gBAE1D,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,kBAAkB,EAAE;oBACxD,IAAI,CAAC,kBAAkB,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB;AAC9E,oBAAA,MAAM,UAAU,GAAG;wBAClB,IAAI,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC;wBACrD,IAAI,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC;wBACrD,IAAI,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;wBAClD,IAAI,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,IAAI,EAAE,CAAC;qBACzD;oBAED,IAAI,CAAC,eAAe,GAAG;yBACrB,MAAM,CAAC,MAAM,IAAI,MAAM,IAAI,SAAS;AACpC,yBAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC;yBACpF,GAAG,CAAC,MAAM,IAAG;wBACb,MAAM,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;wBAChF,OAAO;AACN,4BAAA,aAAa,EAAE,MAAM;AACrB,4BAAA,aAAa,EAAE,iBAAiB;AAChC,4BAAA,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU;AACxD,4BAAA,cAAc,EAAE;gCACf,KAAK,EAAE,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAC,UAAU,IAAI,CAAC;gCAChE,QAAQ,EAAE,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAC,aAAa,IAAI,CAAC;AACtE,6BAAA;yBACc;AACjB,qBAAC,CAAC;;AAIH,oBAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,eAAe,EAAE,MAAM,CACvD,MAAM,IAAI,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,eAAe,CAAC,CAChG;;AAGF,gBAAA,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,WAAW,KAAK,eAAe,CAAC,MAAM,EAAE;oBAC5E,MAAM,kBAAkB,GAAG,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,CAC/D,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,0BAA0B,CACjD;oBACD,IAAI,kBAAkB,EAAE;wBACvB,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,cAAc,CAAiB;AAEhF,wBAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK;AAClC,wBAAA,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;AACrC,4BAAA,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,IAAG;gCAC/B,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,SAAS;AAAE,oCAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI;AACrF,6BAAC,CAAC;AACH,yBAAC,CAAC;;yBACI;AACN,wBAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK;;AAEnC,oBAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;AAChC,wBAAA,IAAI,CAAC,UAAU,GAAG,KAAK;;;AAG1B,aAAC,CAAC;AACJ,SAAC,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC;aACjB,IAAI,CAAC,oBAAoB,EAAE;AAC3B,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC;aACjC,SAAS,CAAC,MAAM,IAAG;AACnB,YAAA,IAAI,CAAC,oBAAoB,GAAG,MAAM;AACnC,SAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC;aACjB,IAAI,CAAC,oBAAoB,EAAE;AAC3B,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC;aACjC,SAAS,CAAC,cAAc,IAAG;AAC3B,YAAA,IAAI,CAAC,cAAc,GAAG,cAAc;AACrC,SAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC;aACjB,IAAI,CAAC,oBAAoB,EAAE;AAC3B,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC;aACjC,SAAS,CAAC,WAAW,IAAG;YACxB,IAAI,WAAW,EAAE;gBAChB,MAAM,kBAAkB,GAAG,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,CAClE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,0BAA0B,CACjD;gBACD,IAAI,kBAAkB,EAAE;oBACvB,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,cAAc,CAAiB;oBAE9E,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,UAAU,EAAE,OAAO;;;gBAGjD,MAAM,eAAe,GAAG,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,CAC/D,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,4BAA4B,CACnD;;gBAED,IAAI,eAAe,EAAE;AACpB,oBAAA,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG;wBAChC,KAAK,EAAE,SAAS,CAAA,CAA4C,0CAAA,CAAA;wBAC5D,OAAO,EAAE,SAAS,CAAA,CAA+G,6GAAA,CAAA;qBACjI;;gBAEF,UAAU,CAAC,MAAK;AACf,oBAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK;iBACjC,EAAE,GAAG,CAAC;;AAET,SAAC,CAAC;AAEH,QAAA,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;AACvF,YAAA,IAAI,IAAI;AAAE,gBAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AACrC,YAAA,IAAI,CAAC,0BAA0B,GAAG,CAAC,IAAI;AACxC,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;AACpF,YAAA,IAAI,CAAC,kBAAkB,GAAG,QAAQ;AACnC,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;AAClF,YAAA,IAAI,IAAI;AAAE,gBAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;AACzC,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;YACtF,IAAI,IAAI,EAAE;AACT,gBAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;AAChC,gBAAA,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE;AACvD,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;gBACjE,IACC,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,cAAc,CAAC,WAAW,CAAC,CAAC,MAAM;oBACvG,CAAC;oBACD,IAAI,CAAC,oBAAoB,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,cAAc,CAAC,WAAW,CAAC,CAAC,MAAM;AACtG,wBAAA,CAAC;qBACF,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAC/C;oBACD,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1C,oBAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,oBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;;;AAG/B,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,sCAAsC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,IAAG;AAChH,YAAA,IAAI,CAAC,6CAA6C,GAAG,OAAO;AAC7D,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;AACnF,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC7B,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;AACjG,YAAA,IAAI,CAAC,KAAK;gBAAE;AAEZ,YAAA,IAAI,KAAK,CAAC,MAAM,KAAK,2BAA2B,EAAE;AACjD,gBAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK;gBACjC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,kBAAkB,GAAG,EAAE;AAEjD,gBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;AAC/B,gBAAA,IAAI,CAAC,UAAU,GAAG,KAAK;;AAEzB,SAAC,CAAC;AAEF,QAAA,aAAa,CAAC;YACb,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC/D,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAChE;aACC,IAAI,CACJ,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,EAC5B,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,UAAU,CAAC;aAE5E,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,eAAe,CAAC,KAAI;YAC5C,MAAM,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAC/D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC,EACxD;AACC,gBAAA,eAAe,EAAE;AAChB,oBAAA,gBAAgB,EAAE,EAAE;AACpB,iBAAA;aACD,EACD,EAAE,CACF;AAED,YAAA,IAAI,CAAC,sBAAsB,GAAG,EAAE;YAChC,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,aAAa,CAAC,yBAAyB,EAAE;AAE9E,YAAA,MAAM,kBAAkB,GAAGxB,sBAA8B,CAAC,mBAAmB,EAAE,MAAM,EAAE,UAAU,CAAC;YAClG,IAAI,eAAe,GAAW,CAAC;AAC/B,YAAA,KAAK,IAAI,cAAc,IAAI,kBAAkB,EAAE;AAC9C,gBAAA,KAAK,IAAI,UAAU,IAAI,cAAc,EAAE;oBACtC,IACC,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,eAAe;AACnD,wBAAA,mBAAmB,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAC/C;AACD,wBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;4BAChC,cAAc,EAAE,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC;AAC9E,4BAAA,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,mBAAmB;4BAC1C,SAAS,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;AACvG,4BAAA,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK;AAC7B,4BAAA,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG;AACzB,4BAAA,KAAK,EAAE,eAAe;AACiB,yBAAA,CAAC;AACzC,wBAAA,IAAI,CAAC,aAAa,CAAC,gCAAgC,CAClD,IAAI,CAAC,wBAAwB,EAC7B,UAAU,CAAC,KAAK,CAAC,mBAAmB,CACpC;AACD,wBAAA,eAAe,EAAE;;;;AAKpB,YAAA,IAAI,CAAC,wBAAwB;AAC5B,gBAAA,CAAC,IAAI,CAAC,sBAAsB,EAAE,MAAM,IAAI,CAAC;AACzC,qBAAC,IAAI,CAAC,4BAA4B,EAAE,MAAM,IAAI,CAAC,CAAC;qBAC/C,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,MAAM,IAAI,CAAC,CAAC;AAEtD,YAAA,IAAI,CAAC,4BAA4B,EAAE,OAAO,CAAC,CAAC,IAAG;AAC9C,gBAAA,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CACzC,UAAU,IAAI,UAAU,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,IAAI,UAAU,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CACtE,EAAE,KAAK;AACT,aAAC,CAAC;AAEF,YAAA,IAAI,CAAC,wBAAwB,GAAG,KAAK;AACtC,SAAC,CAAC;AAEH,QAAA,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;AACrF,YAAA,IAAI,CAAC,IAAI;gBAAE;AACX,YAAA,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,EAAE;AAC9B,gBAAA,IAAI,CAAC,MAAM,GAAG,EAAE;gBAChB;;AAED,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,YAAA,IAAI,CAAC,MAAM;AACV,gBAAA,IAAI,CAAC,mBAAmB,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CACtD,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,0BAA0B,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,4BAA4B,CACjG,IAAI,EAAE;AACT,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;AACtF,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,KAAK,IAAI;AACzC,YAAA,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE;AAC/B,gBAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;;YAEjC,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,QAAQ,KAAK,kBAAkB;AACrE,gBAAA,IAAI,EAAE,OAAO,CAAC,KAAK,IAAG;AACrB,oBAAA,IACC,CAAC,KAAK;AACN,wBAAA,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,eAAe;wBACxC,CAAC,IAAI,CAAC,sBAAsB;AAC5B,wBAAA,IAAI,CAAC,sBAAsB,EAAE,MAAM,IAAI,CAAC;wBAExC;oBACD,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;AACzD,oBAAA,IAAI,CAAC,UAAU;wBAAE;AACjB,oBAAA,KAAK,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS;AACtC,oBAAA,KAAK,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc;AACjD,iBAAC,CAAC;AACH,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,IAAI,EAAE;AAChC,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;YACtF,IAAI,IAAI,EAAE;AACT,gBAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK;AACjC,gBAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;gBAC9B,IAAI,WAAW,GAAkB,EAAE;AACnC,gBAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,MAAM,IAAG;oBACxC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS,CAAC;AAC9E,oBAAA,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,wBAAA,WAAW,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;;AAElC,iBAAC,CAAC;gBAEF,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,QAAQ,KAAK,kBAAkB,EAAE;oBACvE,IACC,IAAI,CAAC,eAAe;AACpB,wBAAA,IAAI,CAAC,UAAU;wBACf,EACC,IAAI,CAAC,eAAe,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK;4BAC9C,IAAI,CAAC,eAAe,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK;4BACpD,IAAI,CAAC,eAAe,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ;4BACvD,IAAI,CAAC,eAAe,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO;AACtD,4BAAA,IAAI,CAAC,eAAe,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CACrD,EACA;AACD,wBAAA,IAAI,CAAC,UAAU,GAAG,KAAK;;AAGxB,oBAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAC/D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC,EAC3E,IAAI,CAAC,aAAa,CAAC,aAAa,EAChC,IAAI,CAAC,aAAa,CAAC,mBAAmB,CACtC;oBACD,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,0BAA0B,CAAC,mBAAmB,CAAC;AACxF,oBAAA,IAAI,CAAC,0BAA0B,GAAG,KAAK;AACvC,oBAAA,IAAI,CAAC,wBAAwB;AAC5B,wBAAA,CAAC,IAAI,CAAC,sBAAsB,EAAE,MAAM,IAAI,CAAC;AACzC,6BAAC,IAAI,CAAC,4BAA4B,EAAE,MAAM,IAAI,CAAC,CAAC;6BAC/C,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,MAAM,IAAI,CAAC,CAAC;;AAGtD,oBAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,GAAG,IAAG;AACrC,wBAAA,GAAG,CAAC,OAAO,CAAC,UAAU,IAAG;4BACxB,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,eAAe,EAAE;AACxD,gCAAA,UAAU,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAClE,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,KAAK,CAAC,GAAG,CACzE,EAAE,SAAS;AACZ,gCAAA,UAAU,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,4BAA4B,CAAC,IAAI,CACvE,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,KAAK,CAAC,GAAG,CACzE,EAAE,cAAc;;AAEnB,yBAAC,CAAC;AACH,qBAAC,CAAC;;;AAGL,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;AAChF,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AAC1B,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;AAClF,YAAA,IAAI,IAAI;AAAE,gBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AACtC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CACnB,CAAC,EACD,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC,gBAAgB,EAAE,YAAY,IAAI,CAAC,CAAC,CAAC,CAClG;AACD,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG;AAC5C,SAAC,CAAC;QAEF,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC,YAAY;AAC9E,QAAA,aAAa,CAAC;AACb,YAAA,aAAa,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC1C,YAAA,aAAa,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC1C,YAAA,kBAAkB,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC/C,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC/D,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC/D;aACC,IAAI,CACJ,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,EAC5B,MAAM,CACL,CAAC,CAAC,YAAY,EAAE,YAAY,IAAI,cAAc,EAAE,cAAc,CAAC,KAC9D,CAAC,CAAC,cAAc;AAChB,YAAA,cAAc,EAAE,SAAS,KAAK,MAAM,CAAC,0BAA0B;AAC/D,YAAA,YAAY,EAAE,IAAI,IAAI,SAAS,CAAC,SAAS;AACzC,YAAA,YAAY,EAAE,IAAI,IAAI,SAAS,CAAC,MAAM;AACtC,YAAA,YAAY,EAAE,KAAK,EAAE,IAAI,IAAI,SAAS,CAAC,SAAS;YAChD,YAAY,EAAE,KAAK,EAAE,IAAI,IAAI,SAAS,CAAC,MAAM,CAC9C;AAED,aAAA,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,KAAI;YAC/C,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACtC,gBAAA,MAAM,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;AACnD,gBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,aAAa,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE;AACnE,oBAAA,IAAI,CAAC,qCAAqC,CAAC,eAAe,CAAC;;AACrD,qBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,kBAAkB,EAAE;AAChD,oBAAA,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;AAAE,wBAAA,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,mBAAmB;;AAE7F,wBAAA,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,EAAE,IACxE,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CACtE;oBACF,IAAI,CAAC,iBAAiB,GAAG,eAAe,EAAE,MAAM,GAAG,CAAC;;;iBAE/C;AACN,gBAAA,IAAI,CAAC,YAAY,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI;AACnE,gBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,aAAa,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE;AACnE,oBAAA,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,YAAY,CAAC;;AAC9C,qBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,kBAAkB,EAAE;oBAChD,IAAI,IAAI,CAAC,YAAY;AACpB,wBAAA,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CACrE,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,KAAK,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAC9E;;AACG,wBAAA,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,mBAAmB;oBACjE,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY;;;AAG/C,SAAC,CAAC;AAEH,QAAA,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;AAC7F,YAAA,IAAI,IAAI,EAAE,qBAAqB,KAAK,SAAS,IAAI,IAAI,CAAC,qBAAqB,KAAK,SAAS,EAAE;gBAC1F,UAAU,CAAC,MAAK;AACf,oBAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,EAAE,qBAAqB;AACzD,iBAAC,CAAC;;AAGH,YAAA,IAAI,IAAI,EAAE,2BAA2B,KAAK,SAAS,IAAI,IAAI,CAAC,2BAA2B,KAAK,SAAS,EAAE;gBACtG,UAAU,CAAC,MAAK;AACf,oBAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI,EAAE,2BAA2B;AACrE,iBAAC,CAAC;;AAGH,YAAA,IACC,IAAI,EAAE,kCAAkC,KAAK,SAAS;AACtD,gBAAA,IAAI,CAAC,kCAAkC,KAAK,SAAS,EACpD;gBACD,UAAU,CAAC,MAAK;AACf,oBAAA,IAAI,CAAC,kCAAkC,GAAG,IAAI,EAAE,kCAAkC;AACnF,iBAAC,CAAC;;AAEJ,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;YAC1F,IAAI,IAAI,KAAK,SAAS;gBAAE;AACxB,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;AAC/B,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,IAAG;AAC/E,YAAA,IAAI,CAAC,OAAO;gBAAE;YACd,IAAI,WAAW,GAAkB,EAAE;AACnC,YAAA,OAAO,EAAE,OAAO,CAAC,MAAM,IAAG;gBACzB,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS,CAAC;AAC9E,gBAAA,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,oBAAA,WAAW,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;;AAElC,aAAC,CAAC;YACF,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;AAChD,gBAAA,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,WAAW;;AAE9C,SAAC,CAAC;;AAGH,IAAA,eAAe,CAAC,OAAyB,EAAA;AACxC,QAAA,QAAQ,OAAO,CAAC,IAAI;AACnB,YAAA,KAAK,cAAc;gBAClB,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI;AACrF,gBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,aAAa;AAAE,oBAAA,IAAI,CAAC,4BAA4B,CAAC,aAAa,CAAC;AAChF,qBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,kBAAkB,EAAE;oBAC9C,IAAI,aAAa,EAAE;wBAClB,MAAM,iBAAiB,GAAG,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,GAAG,CAAC;AACxE,wBAAA,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CACrE,EAAE,IAAI,iBAAiB,CAAC,KAAK,KAAK,EAAE,CAAC,KAAK,IAAI,iBAAiB,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAC9E;;;AACK,wBAAA,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,mBAAmB;AACnE,oBAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,aAAa;;gBAEzC;AACD,YAAA,KAAK,oBAAoB;gBACxB,IAAI,eAAe,GAAY,EAAE;AACjC,gBAAA,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAG;oBAC3B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;wBACxE,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAC7C,iBAAC,CAAC;AACF,gBAAA,IACC,CAAC,IAAI,CAAC,QAAQ,KAAK,aAAa,IAAI,IAAI,CAAC,WAAW,KAAK,eAAe,CAAC,MAAM;AAC/E,oBAAA,IAAI,CAAC,QAAQ,KAAK,SAAS,EAC1B;AACD,oBAAA,IAAI,CAAC,uCAAuC,CAAC,eAAe,CAAC;;AACvD,qBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,aAAa,EAAE;AAC3C,oBAAA,IAAI,CAAC,qCAAqC,CAAC,eAAe,CAAC;;AACrD,qBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,kBAAkB,EAAE;AAChD,oBAAA,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;AAAE,wBAAA,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,mBAAmB;;AACzF,wBAAA,IAAI,CAAC,4BAA4B,GAAG,EAAE;AAC3C,oBAAA,eAAe,CAAC,OAAO,CAAC,EAAE,IAAG;AAC5B,wBAAA,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM;AACnE,4BAAA,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AAC7E,qBAAC,CAAC;oBACF,IAAI,CAAC,iBAAiB,GAAG,eAAe,EAAE,MAAM,GAAG,CAAC;;gBAErD;AACD,YAAA,KAAK,cAAc;AAClB,gBAAA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;gBACpB;AACD,YAAA,KAAK,YAAY;AAChB,gBAAA,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC;gBAC/B;AACD,YAAA;AACC,gBAAA,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,OAAO,CAAC;;;AAIlC,IAAA,uCAAuC,CAAC,eAAwB,EAAA;QACvE,MAAM,kBAAkB,GAAkB,EAAE;QAC5C,MAAM,sBAAsB,GAAG,IAAI,CAAC,YAAY,CAAC,yBAAyB,IAAI,EAAE;QAChF,MAAM,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,CAC7F,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,0BAA0B,CACjD;QACD,MAAM,UAAU,GAAiB;cAC7B,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,cAAc;cAC7C,IAAI;;AAGP,QAAA,eAAe,CAAC,OAAO,CAAC,aAAa,IAAG;AACvC,YAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,aAAa,EAAE,GAAG,CAAC;AAC5E,YAAA,IAAI,CAAC,iBAAiB;gBAAE;AAExB,YAAA,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,CAAC;AAE1C,YAAA,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,IAAI,CACpD,EAAE,IACD,EAAE,CAAC,WAAW,CAAC,KAAK,KAAK,iBAAiB,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,GAAG,KAAK,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAC7G;;YAGD,IAAI,CAAC,iBAAiB,EAAE;AACvB,gBAAA,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,aAAa,CAAC;;AAEvD,SAAC,CAAC;;QAGF,MAAM,oBAAoB,GAAG,sBAAsB,CAAC,MAAM,CACzD,EAAE,IACD,CAAC,kBAAkB,CAAC,IAAI,CACvB,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC,WAAW,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,EAAE,CAAC,WAAW,CAAC,GAAG,CACtG,CACF;;AAGD,QAAA,oBAAoB,CAAC,OAAO,CAAC,eAAe,IAAG;AAC9C,YAAA,IAAI,CAAC,UAAU;gBAAE;AAEjB,YAAA,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CACpE,KAAK,IAAI,KAAK,KAAK,eAAe,CAAC,WAAW,CAAC,KAAK,CACpD;AAED,YAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC;YAChF,IAAI,kBAAkB,EAAE;AACvB,gBAAA,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,kBAAkB,CAAC;;AAE5D,SAAC,CAAC;;AAGK,IAAA,4BAA4B,CAAC,aAA2B,EAAA;AAC/D,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;QAC7B,IAAI,aAAa,GAAoB,EAAE;AACvC,QAAA,IAAI,aAAa;AAChB,YAAA,aAAa,GAAG;AACf,gBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,IACzE,aAAa,EAAE,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CACrC,IAAI,EAAE,CAAC;AACR,gBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,IACtE,aAAa,EAAE,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CACrC,IAAI,EAAE,CAAC;AACR,gBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,IACzE,aAAa,EAAE,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CACrC,IAAI,EAAE,CAAC;AACR,gBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,IAAI,IAC7E,aAAa,EAAE,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CACrC,IAAI,EAAE,CAAC;aACR;;AAED,YAAA,aAAa,GAAG;AACf,gBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC;AACpE,gBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;AACjE,gBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC;AACpE,gBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,OAAO,EAAE,YAAY,IAAI,EAAE,CAAC;aACxE;AAEF,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE;YAC9E,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CACvD,IAAI,CAAC,aAAa,CAAC,aAAa,EAChC,IAAI,CAAC,aAAa,CAAC,kBAAkB,CACrC;YACD,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;;QAGtF,IAAI,CAAC,eAAe,GAAG;AACrB,aAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC;aACpF,GAAG,CAAC,MAAM,IAAG;YACb,MAAM,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;YAChF,OAAO;AACN,gBAAA,aAAa,EAAE,MAAM;AACrB,gBAAA,aAAa,EAAE,iBAAiB;AAChC,gBAAA,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU;AACxD,gBAAA,cAAc,EAAE;oBACf,KAAK,EAAE,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAC,UAAU,IAAI,CAAC;oBAChE,QAAQ,EAAE,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAC,aAAa,IAAI,CAAC;AACtE,iBAAA;aACc;AACjB,SAAC,CAAC;AAEH,QAAA,IAAI,aAAa;YAChB,IAAI,CAAC,kBAAkB,GAAG;gBACzB,GAAG,IAAI,CAAC,kBAAkB;AAC1B,gBAAA,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM;aAC5C;;YAED,IAAI,CAAC,kBAAkB,GAAG;gBACzB,GAAG,IAAI,CAAC,kBAAkB;AAC1B,gBAAA,eAAe,EAAE,CAAC;aAClB;;AAGK,IAAA,qCAAqC,CAAC,SAAkB,EAAA;AAC/D,QAAA,IAAI,SAAS,EAAE,MAAM,IAAI,CAAC;AAAE,YAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;;AACpD,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;QAEjC,IAAI,aAAa,GAAoB,EAAE;AACvC,QAAA,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;AACpC,YAAA,aAAa,GAAG;AACf,gBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CACpE,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAChE,IAAI,EAAE,CAAC;AACR,gBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CACjE,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAChE,IAAI,EAAE,CAAC;AACR,gBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CACpE,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAChE,IAAI,EAAE,CAAC;AACR,gBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,CACxE,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAChE,IAAI,EAAE,CAAC;aACR;;AAED,YAAA,aAAa,GAAG;AACf,gBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC;AACpE,gBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;AACjE,gBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC;AACpE,gBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,OAAO,EAAE,YAAY,IAAI,EAAE,CAAC;aACxE;AAEF,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE;YAC9E,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CACvD,IAAI,CAAC,aAAa,CAAC,aAAa,EAChC,IAAI,CAAC,aAAa,CAAC,kBAAkB,CACrC;YACD,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;;QAGtF,IAAI,CAAC,eAAe,GAAG;AACrB,aAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC;aACpF,GAAG,CAAC,MAAM,IAAG;YACb,MAAM,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;YAChF,OAAO;AACN,gBAAA,aAAa,EAAE,MAAM;AACrB,gBAAA,aAAa,EAAE,iBAAiB;AAChC,gBAAA,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU;AACxD,gBAAA,cAAc,EAAE;oBACf,KAAK,EAAE,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAC,UAAU,IAAI,CAAC;oBAChE,QAAQ,EAAE,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAC,aAAa,IAAI,CAAC;AACtE,iBAAA;aACc;AACjB,SAAC,CAAC;AAEH,QAAA,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;YACpC,IAAI,CAAC,kBAAkB,GAAG;gBACzB,GAAG,IAAI,CAAC,kBAAkB;AAC1B,gBAAA,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM;aAC5C;;YAED,IAAI,CAAC,kBAAkB,GAAG;gBACzB,GAAG,IAAI,CAAC,kBAAkB;AAC1B,gBAAA,eAAe,EAAE,CAAC;aAClB;;AAEK,IAAA,0BAA0B,CACjC,mBAAgD,EAAA;AAEhD,QAAA,IACC,IAAI,CAAC,kBAAkB,CAAC,MAAM,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC;YAC3G,CAAC,IAAI,CAAC,kBAAkB;AAExB,YAAA,OAAO,EAAE;QAEV,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC,yBAAyB,EAAE;QAE1E,MAAM,iBAAiB,GAAG,EAAE;QAC5B,IAAI,eAAe,GAAW,CAAC;AAC/B,QAAA,KAAK,IAAI,cAAc,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACnD,YAAA,KAAK,IAAI,UAAU,IAAI,cAAc,EAAE;AACtC,gBAAA,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,eAAe,IAAI,mBAAmB,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE;oBAC5G,iBAAiB,CAAC,IAAI,CAAC;wBACtB,cAAc,EAAE,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC;AAC9E,wBAAA,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,mBAAmB;wBAC1C,SAAS,EAAE,IAAI,CAAC,oBAAoB,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;AAC1G,wBAAA,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK;AAC7B,wBAAA,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG;AACzB,wBAAA,KAAK,EAAE,IAAI,CAAC,sBAAsB,EAAE,IAAI,CACvC,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CACzE,EAAE,KAAK;AAC+B,qBAAA,CAAC;AACzC,oBAAA,IAAI,CAAC,aAAa,CAAC,gCAAgC,CAClD,IAAI,CAAC,oBAAoB,EACzB,UAAU,CAAC,KAAK,CAAC,mBAAmB,CACpC;AACD,oBAAA,eAAe,EAAE;;;;AAIpB,QAAA,OAAO,iBAAiB;;IAGf,kBAAkB,GAAA;AAC3B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;;AAE7B;;MC32BY,uBAAuB,CAAA;AAIf,IAAA,cAAA;AAA2C,IAAA,cAAA;AAHvD,IAAA,WAAW,GAAG,IAAI,eAAe,CAA+B,SAAS,CAAC;AAC3E,IAAA,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IAErE,WAAoB,CAAA,cAAiC,EAAU,cAAiC,EAAA;QAA5E,IAAc,CAAA,cAAA,GAAd,cAAc;QAA6B,IAAc,CAAA,cAAA,GAAd,cAAc;AAC5E,QAAA,MAAM,EACL,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,oBAAoB,GACpB,GAAG,IAAI,CAAC,cAAc;QACvB,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,cAAc;AAEhE,QAAA,aAAa,CAAC;AACb,YAAA,oBAAoB,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACjD,YAAA,eAAe,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC5C,YAAA,eAAe,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC5C;AACC,aAAA,IAAI,CACJ,YAAY,CAAC,IAAI,CAAC,EAClB,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,YAAY,CAAC,KAAK,YAAY,EAAE,QAAQ,KAAK,YAAY,IAAI,CAAC,CAAC,OAAO,CAAC;aAE3F,SAAS,CAAC,CAAC,CAAC,cAAc,EAAE,OAAO,CAAC,KAAI;YACxC,IAAI,cAAc,IAAI,OAAO;AAC5B,gBAAA,IAAI,CAAC,0BAA0B,CAAC,cAAc,EAAE,OAAO,EAAE;AACxD,oBAAA,WAAW,EAAE,IAAI;AACjB,oBAAA,aAAa,EAAE,IAAI;AACnB,oBAAA,gBAAgB,EAAE,IAAI;AACtB,oBAAA,eAAe,EAAE,IAAI;AACrB,oBAAA,kBAAkB,EAAE,IAAI;AACxB,oBAAA,YAAY,EAAE,IAAI;AACS,iBAAA,CAAC;AAC/B,SAAC,CAAC;AAEH,QAAA,aAAa,CAAC;AACb,YAAA,oBAAoB,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACjD,YAAA,mBAAmB,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAChD,YAAA,eAAe,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC5C,YAAA,mBAAmB,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAChD,YAAA,cAAc,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC3C,YAAA,gBAAgB,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC7C,YAAA,oBAAoB,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;SACjD;AACC,aAAA,IAAI,CACJ,YAAY,CAAC,IAAI,CAAC,EAClB,MAAM,CACL,CAAC,KAAK,YAAY,EAAE,kBAAkB,EAAE,aAAa,IAQpD,KACA,CAAC,YAAY,EAAE,QAAQ,KAAK,aAAa;YACxC,YAAY,EAAE,QAAQ,KAAK,SAAS;AACpC,YAAA,YAAY,EAAE,QAAQ,KAAK,kBAAkB;AAC9C,YAAA,kBAAkB,IAAI,SAAS;YAC/B,aAAa,IAAI,SAAS,CAC3B;AAED,aAAA,SAAS,CAAC,CAAC,CAAC,cAAc,MAAM,kBAAkB,EAAE,aAAa,EAAE,eAAe,EAAE,mBAAmB,CAAC,KAAI;AAC5G,YAAA,IAAI,cAAc,IAAI,aAAa,IAAI,kBAAkB,EAAE;AAC1D,gBAAA,MAAM,kBAAkB,GACvB,IAAI,CAAC,cAAc,CAAC,cAAc;AAClC,oBAAA,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU;AAC/B,qBAAC,CAAC,IAAI,CAAC,cAAc,CAAC,kBAAkB,IAAI,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,MAAM,KAAK,CAAC,CAAC;AAEjG,gBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,aAAa,EAAE,kBAAkB,CAAC;AAC5F,gBAAA,IAAI,mBAAgD;gBACpD,IAAI,eAAe,EAAE;oBACpB,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAC1D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC,EACxD,aAAa,EACb,mBAAmB,CACnB;;gBAEF,IAAI,kBAAkB,IAAI,IAAI,CAAC,cAAc,CAAC,oBAAoB,IAAI,eAAe,CAAC,MAAM;oBAAE;AAC9F,gBAAA,IAAI,CAAC,4BAA4B,CAChC,cAAc,EACd,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,eAAe,CACf;;AAEH,SAAC,CAAC;;AAGJ;;;;;AAKG;AACH,IAAA,0BAA0B,CACzB,cAAgC,EAChC,OAAyB,EACzB,OAAgC,EAAA;QAEhC,MAAM,YAAY,GAAGb,eAAuB,CAAC,cAAc,CAAC;AAC5D,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YACrB,SAAS,EAAE,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC;YAC5F,cAAc,EAAE,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,cAAc,GAAG,CAAC;YACpG,YAAY,EAAE,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,GAAG,CAAC;AACrG,YAAA,YAAY,EAAE,cAAc,CAAC,eAAe,CAAC,aAAa;AAC1D,YAAA,KAAK,EAAE,cAAc,CAAC,eAAe,CAAC,UAAU;AAChD,YAAA,OAAO,EAAE,YAAY,EAAE,EAAE,IAAI,CAAC;AAC9B,YAAA,UAAU,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;AACpC,SAAA,CAAC;;AAGH;;;;;;AAMG;IACH,4BAA4B,CAC3B,cAAgC,EAChC,eAAmC,EACnC,OAAgC,EAChC,mBAAiD,EACjD,eAAkC,EAAA;AAElC,QAAA,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,WAAW;AACxF,QAAA,MAAM,iBAAiB,GACtB,IAAI,CAAC,cAAc,CAAC,oBAAoB,KAAK,CAAC,IAAI,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,KAAK,CAAC;AACrG,QAAA,MAAM,uBAAuB,GAAG,IAAI,CAAC,cAAc,CAAC,4BAA4B;AAChF,QAAA,IAAI,KAAuB;QAC3B,IACC,IAAI,CAAC,cAAc,CAAC,oBAAoB,IAAI,eAAe,CAAC,MAAM;AAClE,YAAA,CAAC,OAAO;YACR,iBAAiB;AACjB,YAAA,CAAC,IAAI,CAAC,cAAc,CAAC,uBAAuB;AAC5C,YAAA,uBAAuB,IAAI,IAAI,CAAC,cAAc,CAAC,oBAAoB,EAClE;YACD,KAAK,GAAGF,mBAA2B,CAAC,cAAc,EAAE,eAAe,EAAE,OAAO,CAAC;AAE7E,YAAA,IACC,IAAI,CAAC,cAAc,CAAC,wBAAwB,EAAE;gBAC9C,IAAI,CAAC,cAAc,CAAC,eAAe;AACnC,gBAAA,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,MAAM;oBACjF,mBAAmB,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EACxD;AACD,gBAAA,MAAM,OAAO,GAAGC,4BAAoC,CACnD,eAAe,EAAE,KAAK,EACtB,mBAAmB,EACnB,cAAc,CAAC,eAAe,EAAE,UAAU,CAC1C;AACD,gBAAA,KAAK,CAAC,4BAA4B,GAAG,OAAO,CAAC,kBAAkB;AAC/D,gBAAA,KAAK,CAAC,2BAA2B,GAAG,OAAO,CAAC,YAAY;;iBAClD;AACN,gBAAA,KAAK,CAAC,4BAA4B,GAAG,mBAAmB,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,IAAI,CAAC;AAClG,gBAAA,KAAK,CAAC,2BAA2B;AAChC,oBAAA,CAAC,IAAI,CAAC,cAAc,CAAC,uBAAuB,EAAE,eAAe,EAAE,KAAK,EAAE,YAAY,IAAI,CAAC,IAAI,GAAG;;;aAE1F;;;YAGN,MAAM,YAAY,GAAGC,eAAuB,CAAC,cAAc,CAAC;AAC5D,YAAA,KAAK,GAAG;AACP,gBAAA,eAAe,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,uBAAuB,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,IAAI,CAAC,IAAI,GAAG;AAC1G,gBAAA,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,uBAAuB,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,IAAI,CAAC;AAC3F,gBAAA,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,uBAAuB,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,IAAI,CAAC;AACrG,gBAAA,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,uBAAuB,EAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB,IAAI,CAAC;gBACjG,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,uBAAuB,EAAE,eAAe,EAAE,aAAa,IAAI,CAAC;gBAC9F,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,uBAAuB,EAAE,eAAe,EAAE,UAAU;AAC/E,gBAAA,OAAO,EAAE,YAAY,EAAE,EAAE,IAAI,CAAC;AAC9B,gBAAA,UAAU,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;AACpC,gBAAA,2BAA2B,EAC1B,CAAC,IAAI,CAAC,cAAc,CAAC,uBAAuB,EAAE,eAAe,EAAE,KAAK,EAAE,YAAY,IAAI,CAAC,IAAI,GAAG;gBAC/F,4BAA4B,EAAE,mBAAmB,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,IAAI,CAAC;aAC3F;;AAGF,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;;IAGtB,yBAAyB,GAAA;QAC/B,OAAO;AACN,YAAA;gBACC,IAAI,EAAE,qBAAqB,CAAC,OAAO;AACnC,gBAAA,UAAU,EAAE;AACX,oBAAA;wBACC,IAAI,EAAE,0BAA0B,CAAC,OAAO;AACxC,wBAAA,WAAW,EAAE,CAAC;AACd,qBAAA;AACD,iBAAA;AACD,aAAA;AACD,YAAA;gBACC,IAAI,EAAE,qBAAqB,CAAC,OAAO;AACnC,gBAAA,UAAU,EAAE;AACX,oBAAA;wBACC,IAAI,EAAE,0BAA0B,CAAC,uBAAuB;AACxD,wBAAA,WAAW,EAAE,CAAC;AACd,qBAAA;AACD,oBAAA;wBACC,IAAI,EAAE,0BAA0B,CAAC,QAAQ;AACzC,wBAAA,WAAW,EAAE,CAAC;AACd,qBAAA;AACD,oBAAA;wBACC,IAAI,EAAE,0BAA0B,CAAC,QAAQ;AACzC,wBAAA,WAAW,EAAE,CAAC;AACd,qBAAA;AACD,oBAAA;wBACC,IAAI,EAAE,0BAA0B,CAAC,OAAO;AACxC,wBAAA,WAAW,EAAE,CAAC;AACd,qBAAA;AACD,oBAAA;wBACC,IAAI,EAAE,0BAA0B,CAAC,WAAW;AAC5C,wBAAA,WAAW,EAAE,CAAC;AACd,qBAAA;AACD,oBAAA;wBACC,IAAI,EAAE,0BAA0B,CAAC,OAAO;AACxC,wBAAA,WAAW,EAAE,CAAC;AACd,qBAAA;AACD,oBAAA;wBACC,IAAI,EAAE,0BAA0B,CAAC,YAAY;AAC7C,wBAAA,WAAW,EAAE,CAAC;AACd,qBAAA;AACD,oBAAA;wBACC,IAAI,EAAE,0BAA0B,CAAC,WAAW;AAC5C,wBAAA,WAAW,EAAE,CAAC;AACd,qBAAA;AACD,oBAAA;wBACC,IAAI,EAAE,0BAA0B,CAAC,cAAc;AAC/C,wBAAA,WAAW,EAAE,CAAC;AACd,qBAAA;AACD,iBAAA;AACD,aAAA;AACD,YAAA;gBACC,IAAI,EAAE,qBAAqB,CAAC,UAAU;AACtC,gBAAA,UAAU,EAAE;AACX,oBAAA;wBACC,IAAI,EAAE,0BAA0B,CAAC,WAAW;AAC5C,wBAAA,WAAW,EAAE,CAAC;AACd,qBAAA;AACD,oBAAA;wBACC,IAAI,EAAE,0BAA0B,CAAC,SAAS;AAC1C,wBAAA,WAAW,EAAE,CAAC;AACd,qBAAA;AACD,iBAAA;AACD,aAAA;AACD,YAAA;gBACC,IAAI,EAAE,qBAAqB,CAAC,SAAS;AACrC,gBAAA,UAAU,EAAE;AACX,oBAAA;wBACC,IAAI,EAAE,0BAA0B,CAAC,cAAc;AAC/C,wBAAA,WAAW,EAAE,CAAC;AACd,qBAAA;AACD,oBAAA;wBACC,IAAI,EAAE,0BAA0B,CAAC,MAAM;AACvC,wBAAA,WAAW,EAAE,CAAC;AACd,qBAAA;AACD,oBAAA;wBACC,IAAI,EAAE,0BAA0B,CAAC,WAAW;AAC5C,wBAAA,WAAW,EAAE,CAAC;AACd,qBAAA;AACD,oBAAA;wBACC,IAAI,EAAE,0BAA0B,CAAC,KAAK;AACtC,wBAAA,WAAW,EAAE,CAAC;AACd,qBAAA;AACD,oBAAA;wBACC,IAAI,EAAE,0BAA0B,CAAC,UAAU;AAC3C,wBAAA,WAAW,EAAE,CAAC;AACd,qBAAA;AACD,oBAAA;wBACC,IAAI,EAAE,0BAA0B,CAAC,KAAK;AACtC,wBAAA,WAAW,EAAE,CAAC;AACd,qBAAA;AACD,oBAAA;wBACC,IAAI,EAAE,0BAA0B,CAAC,QAAQ;AACzC,wBAAA,WAAW,EAAE,CAAC;AACd,qBAAA;AACD,iBAAA;AACD,aAAA;AACD,YAAA;gBACC,IAAI,EAAE,qBAAqB,CAAC,iBAAiB;AAC7C,gBAAA,UAAU,EAAE;AACX,oBAAA;wBACC,IAAI,EAAE,0BAA0B,CAAC,aAAa;AAC9C,wBAAA,WAAW,EAAE,CAAC;AACd,qBAAA;AACD,oBAAA;wBACC,IAAI,EAAE,0BAA0B,CAAC,WAAW;AAC5C,wBAAA,WAAW,EAAE,CAAC;AACd,qBAAA;AACD,oBAAA;wBACC,IAAI,EAAE,0BAA0B,CAAC,iBAAiB;AAClD,wBAAA,WAAW,EAAE,CAAC;AACd,qBAAA;AACD,oBAAA;wBACC,IAAI,EAAE,0BAA0B,CAAC,uBAAuB;AACxD,wBAAA,WAAW,EAAE,CAAC;AACd,qBAAA;AACD,oBAAA;wBACC,IAAI,EAAE,0BAA0B,CAAC,UAAU;AAC3C,wBAAA,WAAW,EAAE,CAAC;AACd,qBAAA;AACD,oBAAA;wBACC,IAAI,EAAE,0BAA0B,CAAC,YAAY;AAC7C,wBAAA,WAAW,EAAE,CAAC;AACd,qBAAA;AACD,iBAAA;AACD,aAAA;AACD,YAAA;gBACC,IAAI,EAAE,qBAAqB,CAAC,iCAAiC;AAC7D,gBAAA,UAAU,EAAE;AACX,oBAAA;wBACC,IAAI,EAAE,0BAA0B,CAAC,wBAAwB;AACzD,wBAAA,WAAW,EAAE,CAAC;AACd,qBAAA;AACD,oBAAA;wBACC,IAAI,EAAE,0BAA0B,CAAC,wBAAwB;AACzD,wBAAA,WAAW,EAAE,CAAC;AACd,qBAAA;AACD,iBAAA;AACD,aAAA;AACD,YAAA;gBACC,IAAI,EAAE,qBAAqB,CAAC,uCAAuC;AACnE,gBAAA,UAAU,EAAE;AACX,oBAAA;wBACC,IAAI,EAAE,0BAA0B,CAAC,sBAAsB;AACvD,wBAAA,WAAW,EAAE,CAAC;AACd,qBAAA;AACD,oBAAA;wBACC,IAAI,EAAE,0BAA0B,CAAC,sBAAsB;AACvD,wBAAA,WAAW,EAAE,CAAC;AACd,qBAAA;AACD,iBAAA;AACD,aAAA;AACD,YAAA;gBACC,IAAI,EAAE,qBAAqB,CAAC,oCAAoC;AAChE,gBAAA,UAAU,EAAE;AACX,oBAAA;wBACC,IAAI,EAAE,0BAA0B,CAAC,mBAAmB;AACpD,wBAAA,WAAW,EAAE,CAAC;AACd,qBAAA;AACD,oBAAA;wBACC,IAAI,EAAE,0BAA0B,CAAC,eAAe;AAChD,wBAAA,WAAW,EAAE,CAAC;AACd,qBAAA;AACD,oBAAA;wBACC,IAAI,EAAE,0BAA0B,CAAC,iBAAiB;AAClD,wBAAA,WAAW,EAAE,CAAC;AACd,qBAAA;AACD,oBAAA;wBACC,IAAI,EAAE,0BAA0B,CAAC,iBAAiB;AAClD,wBAAA,WAAW,EAAE,CAAC;AACd,qBAAA;AACD,oBAAA;wBACC,IAAI,EAAE,0BAA0B,CAAC,WAAW;AAC5C,wBAAA,WAAW,EAAE,CAAC;AACd,qBAAA;AACD,iBAAA;AACD,aAAA;SACD;;IAGK,gCAAgC,CACtC,oBAAsD,EACtD,IAAgC,EAAA;QAEhC,QAAQ,IAAI;YACX,KAAK,0BAA0B,CAAC,OAAO;AACtC,gBAAA,oBAAoB,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;gBAC/E;YAED,KAAK,0BAA0B,CAAC,uBAAuB;YACvD,KAAK,0BAA0B,CAAC,QAAQ;YACxC,KAAK,0BAA0B,CAAC,QAAQ;YACxC,KAAK,0BAA0B,CAAC,OAAO;YACvC,KAAK,0BAA0B,CAAC,WAAW;YAC3C,KAAK,0BAA0B,CAAC,OAAO;YACvC,KAAK,0BAA0B,CAAC,YAAY;YAC5C,KAAK,0BAA0B,CAAC,WAAW;AAC1C,gBAAA,oBAAoB,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,UAAU,CAC7D,IAAI,GAAG,0BAA0B,CAAC,uBAAuB,CACzD,CAAC,WAAW,EAAE;gBACf;YAED,KAAK,0BAA0B,CAAC,WAAW;YAC3C,KAAK,0BAA0B,CAAC,SAAS;AACxC,gBAAA,oBAAoB,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,IAAI,GAAG,0BAA0B,CAAC,WAAW;AAC7G,qBAAA,WAAW,EAAE;gBACf;YAED,KAAK,0BAA0B,CAAC,cAAc;YAC9C,KAAK,0BAA0B,CAAC,MAAM;YACtC,KAAK,0BAA0B,CAAC,WAAW;YAC3C,KAAK,0BAA0B,CAAC,KAAK;YACrC,KAAK,0BAA0B,CAAC,UAAU;YAC1C,KAAK,0BAA0B,CAAC,KAAK;YACrC,KAAK,0BAA0B,CAAC,QAAQ;AACvC,gBAAA,oBAAoB,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,UAAU,CAC/D,IAAI,GAAG,0BAA0B,CAAC,cAAc,CAChD,CAAC,WAAW,EAAE;gBACf;YAED,KAAK,0BAA0B,CAAC,aAAa;YAC7C,KAAK,0BAA0B,CAAC,WAAW;YAC3C,KAAK,0BAA0B,CAAC,iBAAiB;YACjD,KAAK,0BAA0B,CAAC,uBAAuB;YACvD,KAAK,0BAA0B,CAAC,UAAU;YAC1C,KAAK,0BAA0B,CAAC,YAAY;AAC3C,gBAAA,oBAAoB,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,CAAC,UAAU,CACvE,IAAI,GAAG,0BAA0B,CAAC,aAAa,CAC/C,CAAC,WAAW,EAAE;gBACf;YAED,KAAK,0BAA0B,CAAC,wBAAwB;YACxD,KAAK,0BAA0B,CAAC,wBAAwB;AACvD,gBAAA,oBAAoB,CAAC,qBAAqB,CAAC,iCAAiC,CAAC,CAAC,UAAU,CACvF,IAAI,GAAG,0BAA0B,CAAC,wBAAwB,CAC1D,CAAC,WAAW,EAAE;gBACf;YAED,KAAK,0BAA0B,CAAC,sBAAsB;YACtD,KAAK,0BAA0B,CAAC,sBAAsB;AACrD,gBAAA,oBAAoB,CAAC,qBAAqB,CAAC,uCAAuC,CAAC,CAAC,UAAU,CAC7F,IAAI,GAAG,0BAA0B,CAAC,sBAAsB,CACxD,CAAC,WAAW,EAAE;gBACf;YAED,KAAK,0BAA0B,CAAC,mBAAmB;YACnD,KAAK,0BAA0B,CAAC,eAAe;YAC/C,KAAK,0BAA0B,CAAC,iBAAiB;YACjD,KAAK,0BAA0B,CAAC,iBAAiB;YACjD,KAAK,0BAA0B,CAAC,WAAW;AAC1C,gBAAA,oBAAoB,CAAC,qBAAqB,CAAC,oCAAoC,CAAC,CAAC,UAAU,CAC1F,IAAI,GAAG,0BAA0B,CAAC,mBAAmB,CACrD,CAAC,WAAW,EAAE;gBACf;YAED,KAAK,0BAA0B,CAAC,cAAc;AAC7C,gBAAA,oBAAoB,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;gBAC/E;AACD,YAAA;gBACC;;;;IAKH,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;;wGAjchB,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAc,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAnB,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAvB,uBAAuB,EAAA,CAAA;;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC;;;MCdY,4BAA4B,CAAA;AAChC,IAAA,cAAc,GAAG,IAAI,OAAO,EAAmB;;AAGvD,IAAA,IAAW,aAAa,GAAA;QACvB,OAAO,IAAI,CAAC,cAAc;;AAG3B;;;;AAIG;AACI,IAAA,cAAc,CAAC,UAA2B,EAAA;AAChD,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC;;AAGrC,IAAA,WAAW;wGAjBC,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAA5B,4BAA4B,EAAA,CAAA;;4FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADxC;;;ACmBD;;AAEG;MACU,qBAAqB,CAAA;AAEjC,IAAA,WAAW,CAAC,CAAC,EAAA;QACZ,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,gBAAgB;YAAE;QAC1E,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;;AAG9D;;AAEG;AACM,IAAA,UAAU;AAEnB;;AAEG;IACM,aAAa,GAAY,KAAK;AAEvC;;AAEG;IACM,eAAe,GAAY,KAAK;AAEzC;;AAEG;AACM,IAAA,aAAa;AAEtB;;AAEG;AACM,IAAA,aAAa;AAEtB;;AAEG;AACM,IAAA,gBAAgB;AAEzB;;AAEG;AACM,IAAA,gBAAgB;AAEzB;;AAEG;IACM,eAAe,GAAY,KAAK;AAEzC;;;;AAIG;AACO,IAAA,cAAc,GAAG,IAAI,YAAY,EAA8B;IAEzE,UAAU,GAAY,KAAK;AAC3B,IAAA,mBAAmB;IACnB,gBAAgB,GAAY,IAAI;AAChC,IAAA,YAAY;AAEZ,IAAA,IAAI,iBAAiB,GAAA;QACpB,OAAO,0BAA0B,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;;AAGzD,IAAA,IAAI,wBAAwB,GAAA;QAC3B,OAAO,gCAAgC,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;;IAG/D,qBAAqB,GAAG,0BAA0B;AAClD,IAAA,qBAAqB;AACrB,IAAA,cAAc;AACd,IAAA,WAAA,GAAA;IAEA,QAAQ,GAAA;QACP,IAAI,IAAI,CAAC,aAAa;AACrB,YAAA,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,mBAAmB,IAAG;AAChG,gBAAA,IAAI,CAAC,mBAAmB;oBAAE;AAC1B,gBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;AAC1G,oBAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,oBAAA,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAA,mBAAmB;;qBACjD;AACN,oBAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,oBAAA,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAA,oBAAoB;;AAE1D,aAAC,CAAC;QAEH,IAAI,IAAI,CAAC,aAAa;AACrB,YAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;AAC9E,gBAAA,IAAI,CAAC,YAAY,GAAG,GAAG;AACxB,aAAC,CAAC;;AAGJ,IAAA,WAAW,CAAC,OAAsB,EAAA;AACjC,QAAA,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,iBAAiB;AAC5C,YAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,wBAAwB;YAE1D,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,0BAA0B,CAAC,KAAK,EAAE;AAC9D,gBAAA,IAAI,CAAC,UAAU,CAAC,cAAc,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;AAChG,gBAAA,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;;;;AAKzF,IAAA,0BAA0B,CAAC,cAAc,EAAA;QACxC,MAAM,KAAK,GAAG,UAAU;AACxB,QAAA,MAAM,mBAAmB,GAAG,UAAU,IAAG;YACxC,IAAI,MAAM,GAAG,GAAG;AAChB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC3C,MAAM,IAAI,8CAA8C;;AAEzD,YAAA,OAAO,MAAM;AACd,SAAC;QACD,OAAO,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,mBAAmB,CAAC;;IAG1D,gBAAgB,GAAA;AACf,QAAA,IACC,CAAC,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,IAAI,CAC5C,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,EAAE,KAAK,CAC5E,EACA;AACD,YAAA,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC;gBAC5C,IAAI,IAAI,CAAC,aAAa,CAAC,mBAAmB,IAAI,EAAE,CAAC;AACjD,gBAAA,IAAI,CAAC,UAAU;AACf,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE;;;IAIxC,aAAa,GAAA;AACZ,QAAA,IACC,CAAC,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,IAAI,CAC5C,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,EAAE,KAAK,CAC5E;AAED,YAAA,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC;gBAC5C,IAAI,IAAI,CAAC,aAAa,CAAC,mBAAmB,IAAI,EAAE,CAAC;AACjD,gBAAA,IAAI,CAAC,UAAU;AACf,aAAA,CAAC;;AAEF,YAAA,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC;AAC5C,gBAAA,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,mBAAmB,IAAI,EAAE,EAAE,MAAM,CACvD,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,EAAE,KAAK,CAC5E;AACD,aAAA,CAAC;;AAGJ,IAAA,0BAA0B,CAAC,KAAqB,EAAA;AAC/C,QAAA,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;aACtD;AACJ,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;gBAC1B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;;;;AAKlD,IAAA,cAAc,CAAC,WAAgB,EAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;YAC1B,WAAW,EAAE,QAAQ,EAAE;;;AAIzB,IAAA,WAAW;wGAlKC,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAArB,qBAAqB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,aAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1BlC,2jJAiHA,EDlGa,MAAA,EAAA,CAAA,qlPAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA4B,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,oFAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA6C,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAjB,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA;YACX,OAAO,CAAC,QAAQ,EAAE;gBACjB,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AACpC,gBAAA,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;aACtE,CAAC;AACF,SAAA,EAAA,CAAA;;4FAMW,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAfjC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAGb,UAAA,EAAA;wBACX,OAAO,CAAC,QAAQ,EAAE;4BACjB,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AACpC,4BAAA,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;yBACtE,CAAC;AACF,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,2jJAAA,EAAA,MAAA,EAAA,CAAA,qlPAAA,CAAA,EAAA;wDAOjB,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;gBASxB,UAAU,EAAA,CAAA;sBAAlB;gBAKQ,aAAa,EAAA,CAAA;sBAArB;gBAKQ,eAAe,EAAA,CAAA;sBAAvB;gBAKQ,aAAa,EAAA,CAAA;sBAArB;gBAKQ,aAAa,EAAA,CAAA;sBAArB;gBAKQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAKQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAKQ,eAAe,EAAA,CAAA;sBAAvB;gBAOS,cAAc,EAAA,CAAA;sBAAvB;;;AE9EF,IAAY,4BAGX;AAHD,CAAA,UAAY,4BAA4B,EAAA;AACvC,IAAA,4BAAA,CAAA,4BAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM;AACN,IAAA,4BAAA,CAAA,4BAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO;AACR,CAAC,EAHW,4BAA4B,KAA5B,4BAA4B,GAGvC,EAAA,CAAA,CAAA;;MCIY,8BAA8B,CAAA;AAOtB,IAAA,YAAA;AANZ,IAAA,sBAAsB;AAE9B,IAAA,IAAI,qBAAqB,GAAA;QACxB,OAAO,IAAI,CAAC,sBAAsB;;AAGnC,IAAA,WAAA,CAAoB,YAAgC,EAAA;QAAhC,IAAY,CAAA,YAAA,GAAZ,YAAY;;IAEzB,QAAQ,CACd,gBAA8C,EAC9C,oBAAsD,EAAA;AAEtD,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,0BAA0B;AACrD,aAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7D,aAAA,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAI;AACpB,YAAA,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC,CAAC;AAEnF,YAAA,MAAM,YAAY,GAAG,wBAAwB,CAAC,MAAM,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC,EAAE,oBAAoB,CAAC;YAC5G,MAAM,UAAU,GAAY,CAAC,YAAY,IAAI,YAAY,CAAC,WAAW,KAAK,CAAC;AAE3E,YAAA,MAAM,OAAO,GAAG,IAAI,kBAAkB,CAAC,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;AAClF,YAAA,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO;AAClB,YAAA,OAAO,GAAG;SACV,EAAE,EAAE,CAAC;QAEP,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC;;IAGzD,QAAQ,GAAA;QACd,MAAM,kBAAkB,GAAiC,EAAE;AAE3D,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;YAC5D,IAAI,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE;;;AAGpD,gBAAA,MAAM,SAAS,GAAG,0BAA0B,CAAC,GAA8C,CAAC;AAC5F,gBAAA,IAAI,SAAS,KAAK,SAAS,EAAE;AAC5B,oBAAA,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC;;;AAGrC,SAAC,CAAC;AACF,QAAA,OAAO,kBAAkB;;IAGnB,WAAW,GAAA;AACjB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ;;QAGrD,MAAM,SAAS,GAAG,EAAE;QACpB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;AACnC,YAAA,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI;AACtB,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,SAAS,CAAC;;wGAtDtC,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAhC,IAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAA9B,8BAA8B,EAAA,CAAA;;4FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAD1C;;;MCaY,gCAAgC,CAAA;AAoBnC,IAAA,qBAAA;AACA,IAAA,UAAA;AACwB,IAAA,IAAA;AArBjC,IAAA,QAAQ;AACR,IAAA,YAAY,GAAiC,4BAA4B,CAAC,MAAM;IAChF,4BAA4B,GAAG,4BAA4B;IAE3D,mBAAmB,GAA0C,EAAE;IAC/D,2BAA2B,GAA0C,EAAE;AACvE,IAAA,oBAAoB;AAEpB,IAAA,qBAAqB;IACrB,wBAAwB,GAAW,CAAC;AACpC,IAAA,cAAc;AACd,IAAA,WAAW;IACX,gBAAgB,GAAW,CAAC;IAC5B,wBAAwB,GAAW,CAAC;AACpC,IAAA,aAAa,GAAG,IAAI,kBAAkB,CAAC,EAAE,CAAC;AAE1C,IAAA,YAAY;AAEZ,IAAA,WAAA,CACS,qBAAqD,EACrD,UAA0D,EAClC,IAAkC,EAAA;QAF1D,IAAqB,CAAA,qBAAA,GAArB,qBAAqB;QACrB,IAAU,CAAA,UAAA,GAAV,UAAU;QACc,IAAI,CAAA,IAAA,GAAJ,IAAI;;IAGrC,QAAQ,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE;AAC7B,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;gBACvF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,KAAK,qBAAqB,CAAC,MAAM;AAC3D,aAAC,CAAC;AAEF,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;AACnF,gBAAA,IAAI,CAAC,YAAY,GAAG,GAAG;AACxB,aAAC,CAAC;;AAGH,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,4BAA4B,CAAC,MAAM;AACjF,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,4BAA4B,CAAC,OAAO;AAC7D,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,6BAA6B,CAAC;QAE7D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC;QACvD,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,IAAI,CAAC,wBAAwB,IAAI,CAAC;QACvE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB;AAE1D,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,mBAAmB;AAC1G,QAAA,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,mBAAmB,IAAG;YACtG,IAAI,CAAC,wBAAwB,GAAG,CAAC,mBAAmB,IAAI,EAAE,EAAE,MAAM;AAClE,YAAA,IAAI,CAAC,WAAW,GAAG,mBAAmB,EAAE,MAAM,KAAK,CAAC,IAAI,CAAC,mBAAmB,IAAI,EAAE,EAAE,MAAM;AAC3F,SAAC,CAAC;AAEF,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,IAAI,EAAE;QACzG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,oBAAoB,CAAC;QAChF,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC,qBAAqB;AAC7E,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,EAAE,QAAQ,CAAC;QAE7F,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;YACzF,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE,CAAC;AACxE,SAAC,CAAC;;IAGH,aAAa,GAAA;AACZ,QAAA,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE;;IAGzC,gBAAgB,GAAA;AACf,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;;IAGxB,aAAa,GAAA;QACZ,MAAM,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE;QAChE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC;AAC3C,YAAA,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa;AACxC,YAAA,eAAe,EAAE;AAChB,gBAAA,gBAAgB,EAAE,kBAAkB;AACpC,aAAA;AACD,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;;IAGxB,kBAAkB,GAAA;AACjB,QAAA,IAAI,CAAC,YAAY,GAAG,4BAA4B,CAAC,OAAO;AACxD,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,6BAA6B,CAAC;;IAG7D,oBAAoB,GAAA;AACnB,QAAA,IAAI,CAAC,YAAY,GAAG,4BAA4B,CAAC,MAAM;AACvD,QAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,6BAA6B,CAAC;AAC/D,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,mBAAmB;;AAG3G,IAAA,4BAA4B,CAAC,GAAW,EAAA;AACvC,QAAA,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE;AAC1D,QAAA,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;;IAGpE,gBAAgB,GAAA;QACf,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;;AACvE,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC;;AAGzE,IAAA,kBAAkB,CAAC,WAAmB,EAAA;AAC7C,QAAA,IAAI,CAAC,WAAW,IAAI,WAAW,KAAK,EAAE;YAAE,OAAO,IAAI,CAAC,mBAAmB;AAEvE,QAAA,WAAW,GAAG,WAAW,CAAC,WAAW,EAAE;QAEvC,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,CACrC,EAAE,IACD,EAAE,CAAC,cAAc,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;YACtD,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;AACjD,YAAA,0BAA0B,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,EAAE,QAAQ,CAAC,WAAW,CAAC;AACzE,YAAA,gCAAgC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,EAAE,QAAQ,CAAC,WAAW,CAAC,CAChF;;AAGF,IAAA,WAAW;AAlHC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gCAAgC,2FAsBnC,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAtBZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gCAAgC,yFCnB7C,6ibAmSA,EAAA,MAAA,EAAA,CAAA,ks3BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA6B,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA6C,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAf,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,oFAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAwB,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAzD,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,gCAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAkG,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAmB,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAvE,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA;;4FDhRa,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAN5C,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,8BAA8B,cAG5B,KAAK,EAAA,QAAA,EAAA,6ibAAA,EAAA,MAAA,EAAA,CAAA,ks3BAAA,CAAA,EAAA;;0BAwBf,MAAM;2BAAC,eAAe;;;MEzBZ,6BAA6B,CAAA;AA+DhC,IAAA,UAAA;AACA,IAAA,cAAA;AACA,IAAA,cAAA;AACA,IAAA,iBAAA;AAjET;;AAEG;AAEH,IAAA,WAAW;AAEX;;AAEG;IACM,0BAA0B,GAAW,CAAC;AAE/C;;AAEG;IACM,iCAAiC,GAAW,CAAC;AAEtD;;AAEG;IACM,kCAAkC,GAAW,CAAC;AAEvD;;AAEG;IACM,kCAAkC,GAAW,CAAC;AAEvD;;AAEG;AACM,IAAA,oBAAoB;AAE7B;;AAEG;IACM,iBAAiB,GAAY,KAAK;AAE3C;;AAEG;IACM,aAAa,GAAY,KAAK;AAEvC;;AAEG;IACM,QAAQ,GAAY,KAAK;AAElC;;AAEG;IACM,iBAAiB,GAAY,KAAK;AAE3C;;AAEG;IACM,eAAe,GAAY,IAAI;AAExC;;AAEG;AACO,IAAA,cAAc,GAAG,IAAI,YAAY,EAAW;AAEtD,IAAA,WAAA,CACS,UAAqB,EACrB,cAAiC,EACjC,cAAiC,EACjC,iBAA8C,EAAA;QAH9C,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAc,CAAA,cAAA,GAAd,cAAc;QACd,IAAc,CAAA,cAAA,GAAd,cAAc;QACd,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;;AAG1B,IAAA,QAAQ;AAER;;;AAGG;AACH,IAAA,gBAAgB,CAAC,YAAA,GAAwB,KAAK,EAAE,KAAqB,EAAA;QACpE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;AACpC,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gCAAgC,EAAE;gBACtD,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,EAAE;gBACrC,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,EAAE;AACrC,gBAAA,KAAK,EAAE,QAAQ;AACf,gBAAA,UAAU,EAAE,2BAA2B;gBACvC,SAAS,EAAE,SAAS,CAAA,CAAmC,iCAAA,CAAA;AACvD,gBAAA,SAAS,EAAE,KAAK;AAChB,gBAAA,IAAI,EAAE;oBACL,aAAa,EAAE,IAAI,CAAC,cAAc;oBAClC,aAAa,EAAE,IAAI,CAAC,cAAc;AAClC,oBAAA,YAAY,EAAE,YAAY,GAAG,4BAA4B,CAAC,OAAO,GAAG,4BAA4B,CAAC,MAAM;oBACvG,gBAAgB,EAAE,IAAI,CAAC,0BAA0B;oBACjD,wBAAwB,EAAE,IAAI,CAAC,kCAAkC;oBACjE,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;AACf,iBAAA;AACjC,aAAA,CAAC;;;AAIJ;;AAEG;IACH,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,cAAc,CAAC,sBAAsB,EAAE;;AAG7C;;AAEG;IACH,aAAa,GAAA;AACZ,QAAA,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE;;AAGxC;;AAEG;IACH,oBAAoB,GAAA;AACnB,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,aAAa;QACxC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;QAC5C,IAAI,IAAI,CAAC,aAAa;AAAE,YAAA,IAAI,CAAC,WAAW,GAAG,iBAAiB;;AACvD,YAAA,IAAI,CAAC,WAAW,GAAG,iBAAiB;;wGArH9B,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA7B,IAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAY,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAiE,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,2BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA7B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,2rBChB1C,4uIAmHA,EAAA,MAAA,EAAA,CAAA,o9dAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA5E,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA6C,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAjB,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6NAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAwB,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDnGa,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBANzC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,cAGtB,KAAK,EAAA,QAAA,EAAA,4uIAAA,EAAA,MAAA,EAAA,CAAA,o9dAAA,CAAA,EAAA;iLAOjB,WAAW,EAAA,CAAA;sBADV,WAAW;uBAAC,eAAe;gBAMnB,0BAA0B,EAAA,CAAA;sBAAlC;gBAKQ,iCAAiC,EAAA,CAAA;sBAAzC;gBAKQ,kCAAkC,EAAA,CAAA;sBAA1C;gBAKQ,kCAAkC,EAAA,CAAA;sBAA1C;gBAKQ,oBAAoB,EAAA,CAAA;sBAA5B;gBAKQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAKQ,aAAa,EAAA,CAAA;sBAArB;gBAKQ,QAAQ,EAAA,CAAA;sBAAhB;gBAKQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAKQ,eAAe,EAAA,CAAA;sBAAvB;gBAKS,cAAc,EAAA,CAAA;sBAAvB;;;MElCW,mCAAmC,CAAA;AAgFvC,IAAA,aAAA;AACA,IAAA,aAAA;AACA,IAAA,gBAAA;AACA,IAAA,gBAAA;AACC,IAAA,WAAA;AAnF+C,IAAA,QAAQ;AAEhE;;AAEG;IACM,0BAA0B,GAAW,CAAC;AAE/C;;AAEG;IACM,wBAAwB,GAAW,CAAC;AAE7C;;AAEG;AACM,IAAA,oBAAoB;AAE7B;;AAEG;AACM,IAAA,wBAAwB;AACjC;;AAEG;AACM,IAAA,4BAA4B;AAErC;;AAEG;AACM,IAAA,sBAAsB;AAE/B;;AAEG;IACM,gBAAgB,GAA2C,SAAS;AAE7E;;AAEG;IACM,iBAAiB,GAAY,KAAK;AAE3C;;AAEG;IACM,QAAQ,GAAY,KAAK;AAElC;;AAEG;IACM,eAAe,GAAY,IAAI;IAExC,qBAAqB,GAAW,CAAC;AACjC,IAAA,qBAAqB;AACrB,IAAA,2BAA2B;AAC3B,IAAA,2BAA2B;AAC3B,IAAA,uBAAuB,GAAW,SAAS,CAAA,CAAA,kCAAA,CAAoC;IAC/E,iCAAiC,GAAW,CAAC;IAC7C,kCAAkC,GAAW,CAAC;AAEtC,IAAA,eAAe;AACvB,IAAA,qBAAqB;AACrB,IAAA,SAAS;IACT,kBAAkB,GAAW,CAAC;AAC9B,IAAA,oBAAoB;IACpB,wBAAwB,GAAG,wBAAwB;IACnD,eAAe,GAAG,eAAe;IACjC,kBAAkB,GAAY,IAAI;AAClC,IAAA,iBAAiB;AACjB,IAAA,YAAY;AAEZ,IAAA,IAAI,oBAAoB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,sBAAsB,EAAE,MAAM;;AAG3C,IAAA,IAAI,kCAAkC,GAAA;AACrC,QAAA,OAAO,IAAI,CAAC,4BAA4B,EAAE,MAAM;;IAGjD,WACQ,CAAA,aAAgC,EAChC,aAAgC,EAChC,gBAAsC,EACtC,gBAA6C,EAC5C,WAAuB,EAAA;QAJxB,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QACf,IAAW,CAAA,WAAA,GAAX,WAAW;;IAGpB,QAAQ,GAAA;QACP,IAAI,CAAC,eAAe,GAAG,IAAI,cAAc,CAAC,CAAC,IAAG;AAC7C,YAAA,IAAI,CAAC,QAAQ,EAAE,iBAAiB,EAAE;AACnC,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,mBAAmB,IAAG;AAChG,YAAA,IAAI,CAAC,mBAAmB;gBAAE;AAC1B,YAAA,IAAI,CAAC,iBAAiB;gBACrB,mBAAmB,EAAE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,GAAG,CAAC;oBAC3E,mBAAmB,EAAE,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,GAAG,CAAC;AAChF,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;AAC9E,YAAA,IAAI,CAAC,YAAY,GAAG,GAAG;AACxB,SAAC,CAAC;;AAGH,IAAA,WAAW,CAAC,OAAsB,EAAA;AACjC,QAAA,IAAI,OAAO,CAAC,8BAA8B,CAAC,IAAI,OAAO,CAAC,wBAAwB,CAAC,IAAI,OAAO,CAAC,mBAAmB,CAAC,EAAE;AACjH,YAAA,IAAI,CAAC,iCAAiC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,mBAAmB,IAAI,EAAE,EAAE,MAAM;YAC9F,IAAI,IAAI,CAAC,iBAAiB;gBACzB,IAAI,CAAC,kCAAkC,GAAG,IAAI,CAAC,4BAA4B,EAAE,MAAM,IAAI,CAAC;;AACpF,gBAAA,IAAI,CAAC,kCAAkC,GAAG,CAAC;AAEhD,YAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBAC1B,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAC1E,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,gBAAgB,CACrC;AACD,gBAAA,IAAI,IAAI,CAAC,2BAA2B,CAAC,MAAM,KAAK,CAAC;AAAE,oBAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS;;;AAItF,QAAA,IACC,OAAO,CAAC,iBAAiB,CAAC,EAAE,YAAY,IAAI,KAAK;YACjD,OAAO,CAAC,8BAA8B,CAAC;AACvC,YAAA,OAAO,CAAC,wBAAwB,CAAC,EAChC;YACD,IAAI,CAAC,oBAAoB,EAAE;YAC3B,UAAU,CAAC,MAAK;gBACf,IAAI,CAAC,eAAe,EAAE;AACvB,aAAC,CAAC;;;IAIJ,eAAe,GAAA;QACd,IAAI,CAAC,eAAe,EAAE;AAEtB,QAAA,SAAS,CAAC,MAAM,EAAE,QAAQ;AACxB,aAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;aACvB,SAAS,CAAC,MAAK;YACf,IAAI,CAAC,oBAAoB,EAAE;AAC5B,SAAC,CAAC;QAEH,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;;AAG7D,IAAA,gBAAgB,CAAC,QAAoC,EAAA;AACpD,QAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ;QAChC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC;QACtE,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,gCAAgC,CAAC,QAAQ,CAAC;AAClF,QAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;AACrG,QAAA,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE;AAEtC,QAAA,MAAM,YAAY,GAAG,uBAAuB,CAAC,QAAQ,CAAC;QACtD,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,EAAE;YACzE,MAAM,qBAAqB,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;AAChH,YAAA,IAAI,qBAAqB;AAAE,gBAAA,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC,WAAW;;AACpF,gBAAA,IAAI,CAAC,qBAAqB,GAAG,CAAC;;;IAIrC,sBAAsB,GAAA;AACrB,QAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS;;AAGlC,IAAA,0BAA0B,CAAC,IAAgC,EAAA;AAC1D,QAAA,OAAO,0BAA0B,CAAC,IAAI,CAAC;;AAGxC,IAAA,gCAAgC,CAAC,IAAgC,EAAA;AAChE,QAAA,OAAO,gCAAgC,CAAC,IAAI,CAAC;;;AAK9C,IAAA,QAAQ,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK;QAC/B,IAAI,KAAK,KAAK,CAAC;AAAE,YAAA,IAAI,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,WAAW;aAC5E,IAAI,KAAK,KAAK,CAAC;AAAE,YAAA,IAAI,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,YAAY;aAClF,IACJ,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,oBAAoB,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,oBAAoB,GAAG,CAAC;aAC9F,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,oBAAoB,IAAI,CAAC,CAAC;AAE/C,YAAA,IAAI,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,WAAW;AAC5D,aAAA,IAAI,KAAK,KAAK,IAAI,CAAC,oBAAoB,GAAG,CAAC;AAAE,YAAA,IAAI,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,YAAY;AAC9G,aAAA,IAAI,KAAK,KAAK,IAAI,CAAC,oBAAoB,GAAG,CAAC;AAAE,YAAA,IAAI,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,WAAW;;;AAInH,IAAA,aAAa,CAAC,KAAc,EAAA;QAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE;QACpB,IAAI,KAAK,IAAI,SAAS;YAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC;;AAGrE,IAAA,aAAa,CAAC,GAA6B,EAAA;QAC1C,QAAQ,GAAG;AACV,YAAA,KAAK,wBAAwB,CAAC,WAAW,EAAE;AAC1C,gBAAA,IACC,IAAI,CAAC,kCAAkC,GAAG,CAAC;AAC3C,oBAAA,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kCAAkC,GAAG,CAAC;oBAEtE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kCAAkC,GAAG,CAAC,CAAC;qBAC3D,IAAI,IAAI,CAAC,kCAAkC,GAAG,CAAC,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC;oBACnF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;;AAC3C,oBAAA,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;gBAC1B;;AAED,YAAA,KAAK,wBAAwB,CAAC,YAAY,EAAE;AAC3C,gBAAA,IACC,IAAI,CAAC,kCAAkC,GAAG,CAAC;AAC3C,oBAAA,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kCAAkC,GAAG,CAAC;oBAEtE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kCAAkC,GAAG,CAAC,CAAC;qBAC3D,IAAI,IAAI,CAAC,kCAAkC,GAAG,CAAC,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC;oBACnF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;;AAC3C,oBAAA,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;gBAC1B;;AAED,YAAA,KAAK,wBAAwB,CAAC,WAAW,EAAE;AAC1C,gBAAA,IACC,IAAI,CAAC,kCAAkC,GAAG,CAAC;AAC3C,oBAAA,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kCAAkC,GAAG,CAAC;oBAEtE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kCAAkC,GAAG,CAAC,CAAC;qBAC3D,IAAI,IAAI,CAAC,kCAAkC,GAAG,CAAC,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC;AACnF,oBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC;;AACvC,oBAAA,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;gBAC1B;;AAED,YAAA,KAAK,wBAAwB,CAAC,YAAY,EAAE;AAC3C,gBAAA,IACC,IAAI,CAAC,kCAAkC,GAAG,CAAC;AAC3C,oBAAA,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kCAAkC,GAAG,CAAC;oBAEtE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kCAAkC,GAAG,CAAC,CAAC;qBAC3D,IAAI,IAAI,CAAC,kCAAkC,GAAG,CAAC,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC;oBACnF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;;AAC3C,oBAAA,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;gBAC1B;;AAED,YAAA,KAAK,wBAAwB,CAAC,WAAW,EAAE;AAC1C,gBAAA,IACC,IAAI,CAAC,kCAAkC,GAAG,CAAC;AAC3C,oBAAA,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kCAAkC,GAAG,CAAC;oBAEtE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kCAAkC,GAAG,CAAC,CAAC;qBAC3D,IAAI,IAAI,CAAC,kCAAkC,GAAG,CAAC,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC;oBACnF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;;AAC3C,oBAAA,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;gBAC1B;;AAED,YAAA;gBACC;;;IAIK,eAAe,GAAA;QACtB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;YACrC;;AAGD,QAAA,MAAM,oBAAoB,GAAuB,IAAI,CAAC,QAAQ,CAAC,mBAAmB;;QAGlF,IAAI,CAAC,SAAS,GAAG;AACf,aAAA,IAAI,CACJ,GAAG,CAAC,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,GAAG,GAAG,CAAC,EAC3D,QAAQ,EAAE,EACV,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,KAAI;YACjC,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE;YACpD,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,GAAG,GAAG;;AAE5D,YAAA,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,IAAI,YAAY,GAAG,SAAS,GAAG,GAAG,IAAI,gBAAgB;AAC9F,YAAA,OAAO,UAAU;SACjB,CAAC,EACF,oBAAoB,EAAE,EACtB,YAAY,CAAC,IAAI,CAAC;aAElB,SAAS,CAAC,MAAK;YACf,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,oBAAoB,GAAG,CAAC;AACvD,YAAA,IAAI,IAAI,CAAC,oBAAoB,KAAK,CAAC;AAAE,gBAAA,IAAI,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,YAAY;AACtG,YAAA,IAAI,IAAI,CAAC,oBAAoB,KAAK,CAAC;AAAE,gBAAA,IAAI,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,WAAW;AACrG,YAAA,IAAI,IAAI,CAAC,oBAAoB,KAAK,CAAC;AAAE,gBAAA,IAAI,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,YAAY;AACtG,YAAA,IAAI,IAAI,CAAC,oBAAoB,IAAI,CAAC;AAAE,gBAAA,IAAI,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,WAAW;AACrG,SAAC,CAAC;;IAGJ,oBAAoB,GAAA;QACnB,UAAU,CAAC,MAAK;AACf,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe;gBAAE;YAC5C,MAAM,YAAY,GACjB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY;AAE1G,YAAA,IAAI,CAAC,qBAAqB,GAAG,YAAY;AAC1C,SAAC,CAAC;;;AAKH,IAAA,WAAW;wGAxSC,mCAAmC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAnC,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAnB,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAqB,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAqD,2BAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mCAAmC,EACpC,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,8BAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,wBAAwB,EC3CpC,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,o6RA6MA,ED3Ka,MAAA,EAAA,CAAA,2qeAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA5E,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA6C,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAjB,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6NAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAwB,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,oFAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,gCAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA2C,yBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAZ,sCAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,oCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAa,6BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,4BAAA,EAAA,mCAAA,EAAA,oCAAA,EAAA,oCAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA;YACX,OAAO,CAAC,QAAQ,EAAE;gBACjB,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AACpC,gBAAA,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;aACtE,CAAC;AACF,SAAA,EAAA,CAAA;;4FAGW,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAZ/C,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wCAAwC,EAGtC,UAAA,EAAA;wBACX,OAAO,CAAC,QAAQ,EAAE;4BACjB,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AACpC,4BAAA,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;yBACtE,CAAC;AACF,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,o6RAAA,EAAA,MAAA,EAAA,CAAA,2qeAAA,CAAA,EAAA;gNAGuC,QAAQ,EAAA,CAAA;sBAA/D,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,wBAAwB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;gBAK7C,0BAA0B,EAAA,CAAA;sBAAlC;gBAKQ,wBAAwB,EAAA,CAAA;sBAAhC;gBAKQ,oBAAoB,EAAA,CAAA;sBAA5B;gBAKQ,wBAAwB,EAAA,CAAA;sBAAhC;gBAIQ,4BAA4B,EAAA,CAAA;sBAApC;gBAKQ,sBAAsB,EAAA,CAAA;sBAA9B;gBAKQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAKQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAKQ,QAAQ,EAAA,CAAA;sBAAhB;gBAKQ,eAAe,EAAA,CAAA;sBAAvB;;;MEtFW,iBAAiB,CAAA;AAC7B,IAAA,SAAS,CAAC,KAAa,EAAA;AACtB,QAAA,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,CAAC,EAAE;AAC1B,YAAA,OAAO,EAAE;;QAGV,MAAM,KAAK,GAAW,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;AAC9C,QAAA,MAAM,OAAO,GAAW,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;QACvD,MAAM,OAAO,GAAW,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;QAE9C,IAAI,SAAS,GAAG,EAAE;AAClB,QAAA,IAAI,KAAK,GAAG,CAAC,EAAE;YACd,SAAS,CAAC,IAAI,CAAC,SAAS,CAAA,CAAG,EAAA,KAAK,QAAQ,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,CAAE,CAAA,CAAC;;AAEhE,QAAA,IAAI,OAAO,GAAG,CAAC,EAAE;YAChB,SAAS,CAAC,IAAI,CAAC,SAAS,CAAA,CAAG,EAAA,OAAO,UAAU,OAAO,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,CAAE,CAAA,CAAC;;QAEtE,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE;;YAE/B,SAAS,CAAC,IAAI,CAAC,SAAS,CAAA,CAAG,EAAA,OAAO,UAAU,OAAO,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,CAAE,CAAA,CAAC;;;QAIxE,IAAI,MAAM,GAAG,EAAE;AACf,QAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;;YAEzB,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAA,CAAA,KAAA,CAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;;aAC7E;AACN,YAAA,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;;AAG5B,QAAA,OAAO,MAAM;;wGA/BF,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAAjB,iBAAiB,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACL,oBAAA,IAAI,EAAE,eAAe;AACrB,oBAAA,UAAU,EAAE,KAAK;AACjB,iBAAA;;;MCKY,2BAA2B,CAAA;IAEvC,OAAO,GAAG,MAAM;AAGhB,IAAA,YAAY;AAGZ,IAAA,SAAS;AAEqB,IAAA,kBAAkB;AACnB,IAAA,iBAAiB;AAE9C;;AAEG;AACM,IAAA,QAAQ;AAEjB;;AAEG;AACM,IAAA,QAAQ;AAER,IAAA,eAAe;AAEf,IAAA,cAAc;IAEd,eAAe,GAAY,KAAK;AAEzC,IAAA,UAAU;AACV,IAAA,oBAAoB;AAEpB,IAAA,IAAI,uBAAuB,GAAA;AAC1B,QAAA,QAAQ,IAAI,CAAC,eAAe,EAAE,gBAAgB;YAC7C,KAAK,iBAAiB,CAAC,WAAW;gBACjC,OAAO,SAAS,CAAA,CAAA,uBAAA,CAAyB;YAC1C,KAAK,iBAAiB,CAAC,WAAW;gBACjC,OAAO,SAAS,CAAA,CAAA,uBAAA,CAAyB;YAC1C,KAAK,iBAAiB,CAAC,aAAa;gBACnC,OAAO,SAAS,CAAA,CAAA,uBAAA,CAAyB;YAC1C,KAAK,iBAAiB,CAAC,iBAAiB;gBACvC,OAAO,SAAS,CAAA,CAAA,2BAAA,CAA6B;YAC9C,KAAK,iBAAiB,CAAC,kBAAkB;gBACxC,OAAO,SAAS,CAAA,CAAA,6BAAA,CAA+B;YAChD,KAAK,iBAAiB,CAAC,cAAc;gBACpC,OAAO,SAAS,CAAA,CAAA,4BAAA,CAA8B;YAC/C,KAAK,iBAAiB,CAAC,eAAe;gBACrC,OAAO,SAAS,CAAA,CAAA,6BAAA,CAA+B;YAChD,KAAK,iBAAiB,CAAC,YAAY;gBAClC,OAAO,SAAS,CAAA,CAAA,yBAAA,CAA2B;AAC5C,YAAA;gBACC,OAAO,SAAS,CAAA,CAAA,yBAAA,CAA2B;;;AAI9C,IAAA,cAAc,GAAG,SAAS,CAAA,CAAA,MAAA,CAAQ;AAClC,IAAA,gBAAgB,GAAG,SAAS,CAAA,CAAA,QAAA,CAAU;AAEtC,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;AAER,IAAA,WAAW,CAAC,OAAsB,EAAA;AACjC,QAAA,IAAI,OAAO,CAAC,iBAAiB,CAAC,EAAE;AAC/B,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,uBAAuB;;AAGzD,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;AACxB,YAAA,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,KAAK,IAAI;AAC5C,gBAAA,IAAI,CAAC,SAAS,GAAG,iFAAiF;;AAC9F,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI;;;IAI5B,eAAe,GAAA;AACd,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;;IAGvB,eAAe,GAAA;AACd,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;;wGA/EZ,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,8mBCVxC,k7FAuEA,EAAA,MAAA,EAAA,CAAA,k2YAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAvG,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA4B,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6NAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA3B,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAsG,iBAAA,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,CAAA;;4FD7Da,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,cAGpB,KAAK,EAAA,QAAA,EAAA,k7FAAA,EAAA,MAAA,EAAA,CAAA,k2YAAA,CAAA,EAAA;wDAIjB,OAAO,EAAA,CAAA;sBADN,WAAW;uBAAC,eAAe;gBAI5B,YAAY,EAAA,CAAA;sBADX,WAAW;uBAAC,iBAAiB;gBAI9B,SAAS,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;gBAGD,kBAAkB,EAAA,CAAA;sBAA/C,SAAS;uBAAC,iBAAiB;gBACC,iBAAiB,EAAA,CAAA;sBAA7C,SAAS;uBAAC,gBAAgB;gBAKlB,QAAQ,EAAA,CAAA;sBAAhB;gBAKQ,QAAQ,EAAA,CAAA;sBAAhB;gBAEQ,eAAe,EAAA,CAAA;sBAAvB;gBAEQ,cAAc,EAAA,CAAA;sBAAtB;gBAEQ,eAAe,EAAA,CAAA;sBAAvB;;;MEzBW,sCAAsC,CAAA;AA0E/B,IAAA,aAAA;AAA0C,IAAA,cAAA;AAzE7D;;AAEG;AACM,IAAA,WAAW,GAAgC,eAAe,CAAC,cAAc;AAElF;;AAEG;AACM,IAAA,QAAQ;AAEjB;;AAEG;IACM,UAAU,GAAW,CAAC;AAE/B;;AAEG;IACM,cAAc,GAAW,CAAC;AAEnC;;AAEG;IACM,iBAAiB,GAAW,CAAC;AAEtC;;AAEG;IACM,gBAAgB,GAAW,CAAC;AAErC;;AAEG;IACM,aAAa,GAAW,CAAC;AAElC;;AAEG;IACM,cAAc,GAAW,CAAC;AAEnC;;AAEG;IACM,OAAO,GAAW,CAAC;AAE5B;;AAEG;IACM,oBAAoB,GAAW,CAAC;AAEzC;;AAEG;IACM,0BAA0B,GAAW,CAAC;AAE/C;;AAEG;IACM,eAAe,GAAY,KAAK;IAEzC,QAAQ,GAAY,KAAK;IACzB,YAAY,GAAW,CAAC;IACxB,eAAe,GAAW,CAAC;AAE3B,IAAA,cAAc,GAAG,SAAS,CAAA,CAAA,MAAA,CAAQ;AAClC,IAAA,gBAAgB,GAAG,SAAS,CAAA,CAAA,QAAA,CAAU;AACtC,IAAA,kBAAkB,GAAG,SAAS,CAAA,CAAA,YAAA,CAAc;AAC5C,IAAA,gBAAgB,GAAG,SAAS,CAAA,CAAA,WAAA,CAAa;IAEzC,uBAAuB,GAAG,uBAAuB;IACjD,eAAe,GAAG,eAAe;AACjC,IAAA,YAAY;IAEZ,WAAmB,CAAA,aAAgC,EAAU,cAAiC,EAAA;QAA3E,IAAa,CAAA,aAAA,GAAb,aAAa;QAA6B,IAAc,CAAA,cAAA,GAAd,cAAc;;AAE3E,IAAA,QAAQ;AAER,IAAA,WAAW,CAAC,CAAgB,EAAA;AAC3B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,CAAC;AAClG,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;AAE/G,QAAA,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;AAC/E,YAAA,IAAI,CAAC,YAAY,GAAG,GAAG;AACxB,SAAC,CAAC;;AAGH,IAAA,cAAc,CAAC,KAAK,EAAA;QACnB,UAAU,CAAC,MAAK;AACf,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;SACrB,EAAE,GAAG,CAAC;;IAER,eAAe,GAAA;AACd,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;;AAGrB,IAAA,WAAW;wGAhGC,sCAAsC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAjF,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAnB,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sCAAsC,8hBCZnD,+hMAgIA,EAAA,MAAA,EAAA,CAAA,60eAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAyB,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA6C,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6NAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAjB,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAyE,oCAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA5E,EAAA,CAAA,WAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,EAAA,CAAA;;4FDpHa,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBANlD,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oCAAoC,cAGlC,KAAK,EAAA,QAAA,EAAA,+hMAAA,EAAA,MAAA,EAAA,CAAA,60eAAA,CAAA,EAAA;gHAMR,WAAW,EAAA,CAAA;sBAAnB;gBAKQ,QAAQ,EAAA,CAAA;sBAAhB;gBAKQ,UAAU,EAAA,CAAA;sBAAlB;gBAKQ,cAAc,EAAA,CAAA;sBAAtB;gBAKQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAKQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAKQ,aAAa,EAAA,CAAA;sBAArB;gBAKQ,cAAc,EAAA,CAAA;sBAAtB;gBAKQ,OAAO,EAAA,CAAA;sBAAf;gBAKQ,oBAAoB,EAAA,CAAA;sBAA5B;gBAKQ,0BAA0B,EAAA,CAAA;sBAAlC;gBAKQ,eAAe,EAAA,CAAA;sBAAvB;;;ME/DW,qBAAqB,CAAA;AACjC;;AAEG;IACM,SAAS,GAAY,KAAK;AAEnC;;AAEG;IACM,kBAAkB,GAAW,CAAC;AAEvC,IAAA,WAAW,GAAW,SAAS,CAAA,CAAA,uGAAA,CAAyG;AAExI,IAAA,QAAQ;wGAbI,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,kKCRlC,y5DAqCA,EAAA,MAAA,EAAA,CAAA,mzFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA7B,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA4B,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,WAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,EAAA,CAAA;;4FD7Ba,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,cAGvB,KAAK,EAAA,QAAA,EAAA,y5DAAA,EAAA,MAAA,EAAA,CAAA,mzFAAA,CAAA,EAAA;8BAMR,SAAS,EAAA,CAAA;sBAAjB;gBAKQ,kBAAkB,EAAA,CAAA;sBAA1B;;;MEPW,gCAAgC,CAAA;IACnC,WAAW,GAAW,EAAE;IACxB,YAAY,GAAY,KAAK;AAEtC,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;wGANI,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gCAAgC,ECV7C,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,qtCAmCA,ED5Ba,MAAA,EAAA,CAAA,2yBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAA,CAAA;;4FAGjG,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAP5C,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6BAA6B,EAG3B,UAAA,EAAA,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cACjG,KAAK,EAAA,QAAA,EAAA,qtCAAA,EAAA,MAAA,EAAA,CAAA,2yBAAA,CAAA,EAAA;wDAGR,WAAW,EAAA,CAAA;sBAAnB;gBACQ,YAAY,EAAA,CAAA;sBAApB;;;MEHW,gCAAgC,CAAA;AAQnC,IAAA,QAAA;AACA,IAAA,uBAAA;AACA,IAAA,WAAA;AATD,IAAA,WAAW;IACV,aAAa,GAAY,KAAK;IAC9B,WAAW,GAAW,EAAE;IACxB,eAAe,GAAW,KAAK;IAC/B,YAAY,GAAY,KAAK;AAEtC,IAAA,WAAA,CACS,QAAiB,EACjB,uBAA+C,EAC/C,WAAuB,EAAA;QAFvB,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB;QACvB,IAAW,CAAA,WAAA,GAAX,WAAW;;IAGpB,QAAQ,GAAA;AACP,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC;AACzG,YAAA;AACC,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,QAAQ,EAAE,QAAQ;gBAClB,OAAO,EAAE,CAAC,CAAC;AACX,aAAA;AACD,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC;;AAG9D;;;AAGG;IAGH,IAAI,GAAA;QACH,IAAI,aAAa,GAAG,KAAK;QACzB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,WAAW,EAAE;AAC3C,YAAA,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW;;;AAGxG,QAAA,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE;AACxD,YAAA,MAAM,UAAU,GAAmD,IAAI,CAAC,WAAW,CAAC,MAAM,CACzF,IAAI,eAAe,CAAC,gCAAgC,CAAC,CACrD;AACD,YAAA,UAAU,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,IAAI,aAAa,GAAG,IAAI,CAAC,WAAW,GAAG,EAAE,IAAI,IAAI,CAAC,WAAW;YACjH,UAAU,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;;;AAItD;;;AAGG;IAGH,IAAI,GAAA;QACH,IAAI,CAAC,YAAY,EAAE;;AAGpB;;AAEG;IACH,WAAW,GAAA;QACV,IAAI,CAAC,YAAY,EAAE;;AAGpB;;AAEG;IACK,YAAY,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;;;wGAtEf,gCAAgC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAhC,gCAAgC,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAhC,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAJ5C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,UAAU,EAAE,KAAK;AACjB,iBAAA;0IAGS,aAAa,EAAA,CAAA;sBAArB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBA4BD,IAAI,EAAA,CAAA;sBAFH,YAAY;uBAAC,YAAY;;sBACzB,YAAY;uBAAC,OAAO;gBAsBrB,IAAI,EAAA,CAAA;sBAFH,YAAY;uBAAC,YAAY;;sBACzB,YAAY;uBAAC,MAAM;;;MClDR,6BAA6B,CAAA;AA2CtB,IAAA,aAAA;AAAyC,IAAA,aAAA;AA1C5D;;AAEG;AACM,IAAA,yBAAyB;AAElC;;AAEG;IACM,yBAAyB,GAAW,CAAC;AAE9C;;AAEG;IACM,mCAAmC,GAAW,CAAC;AAExD;;AAEG;IACM,qCAAqC,GAAW,CAAC;AAE1D;;AAEG;IACM,oCAAoC,GAAW,CAAC;AAEzD;;AAEG;IACM,yBAAyB,GAAW,CAAC;AAE9C;;AAEG;IACM,SAAS,GAAY,IAAI;AAElC;;AAEG;AACO,IAAA,mBAAmB,GAAG,IAAI,YAAY,EAAQ;IAExD,2BAA2B,GAAG,2BAA2B;IAEzD,WAAmB,CAAA,aAAgC,EAAS,aAAgC,EAAA;QAAzE,IAAa,CAAA,aAAA,GAAb,aAAa;QAA4B,IAAa,CAAA,aAAA,GAAb,aAAa;;AAEzE,IAAA,QAAQ;IAER,wBAAwB,GAAA;AACvB,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;;wGAhDpB,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAa,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA7B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,okBCZ1C,68VA8LA,EAAA,MAAA,EAAA,CAAA,6zPAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiB,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,8NAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA8B,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,oFAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAqC,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAZ,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiD,2BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,8BAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA7E,EAAA,CAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA8E,cAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,CAAA;;4FDlLa,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBANzC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,cAGxB,KAAK,EAAA,QAAA,EAAA,68VAAA,EAAA,MAAA,EAAA,CAAA,6zPAAA,CAAA,EAAA;gHAMR,yBAAyB,EAAA,CAAA;sBAAjC;gBAKQ,yBAAyB,EAAA,CAAA;sBAAjC;gBAKQ,mCAAmC,EAAA,CAAA;sBAA3C;gBAKQ,qCAAqC,EAAA,CAAA;sBAA7C;gBAKQ,oCAAoC,EAAA,CAAA;sBAA5C;gBAKQ,yBAAyB,EAAA,CAAA;sBAAjC;gBAKQ,SAAS,EAAA,CAAA;sBAAjB;gBAKS,mBAAmB,EAAA,CAAA;sBAA5B;;;ME1CW,yBAAyB,CAAA;AAuElB,IAAA,aAAA;AAtEnB;;AAEG;IACM,UAAU,GAAW,EAAE;AAEhC;;AAEG;IACM,YAAY,GAAW,EAAE;AAElC;;AAEG;IACM,cAAc,GAAY,KAAK;AAExC;;AAEG;IACM,cAAc,GAAW,EAAE;AAEpC;;AAEG;IACM,aAAa,GAAW,CAAC;AAElC;;AAEG;IACM,aAAa,GAAW,CAAC;AAElC;;AAEG;IACM,WAAW,GAAW,CAAC;AAEhC;;AAEG;IACM,WAAW,GAAW,CAAC;AAEhC;;AAEG;IACM,WAAW,GAAW,CAAC;AAEhC;;AAEG;IACM,iBAAiB,GAAY,KAAK;AAE3C;;AAEG;IACM,YAAY,GAAW,CAAC;AAEjC;;AAEG;IACM,SAAS,GAAY,IAAI;AAElC;;AAEG;IACM,kBAAkB,GAAW,CAAC;AAEvC;;AAEG;AACO,IAAA,mBAAmB,GAAG,IAAI,YAAY,EAAQ;AAExD,IAAA,WAAA,CAAmB,aAAgC,EAAA;QAAhC,IAAa,CAAA,aAAA,GAAb,aAAa;;AAEhC,IAAA,QAAQ;IAER,wBAAwB,GAAA;AACvB,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;;wGA5EpB,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA5G,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,6iBCTtC,w2NAsJA,EAAA,MAAA,EAAA,CAAA,0nOAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA8B,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA6C,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,8NAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA6D,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gCAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA;;4FD7Ia,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,cAGnB,KAAK,EAAA,QAAA,EAAA,w2NAAA,EAAA,MAAA,EAAA,CAAA,0nOAAA,CAAA,EAAA;mFAMR,UAAU,EAAA,CAAA;sBAAlB;gBAKQ,YAAY,EAAA,CAAA;sBAApB;gBAKQ,cAAc,EAAA,CAAA;sBAAtB;gBAKQ,cAAc,EAAA,CAAA;sBAAtB;gBAKQ,aAAa,EAAA,CAAA;sBAArB;gBAKQ,aAAa,EAAA,CAAA;sBAArB;gBAKQ,WAAW,EAAA,CAAA;sBAAnB;gBAKQ,WAAW,EAAA,CAAA;sBAAnB;gBAKQ,WAAW,EAAA,CAAA;sBAAnB;gBAKQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAKQ,YAAY,EAAA,CAAA;sBAApB;gBAKQ,SAAS,EAAA,CAAA;sBAAjB;gBAKQ,kBAAkB,EAAA,CAAA;sBAA1B;gBAKS,mBAAmB,EAAA,CAAA;sBAA5B;;;MExEW,sBAAsB,CAAA;AAClC,IAAA,SAAS,CAAC,KAAa,EAAA;;AAEtB,QAAA,IAAI,KAAK,IAAI,CAAC,EAAE;YACf,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,CAAC;;;AAI3C,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAE/D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC;;AAG7C,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,MAAM;AAExD,QAAA,OAAO,YAAY,GAAG,GAAG,GAAG,YAAY,CAAC,cAAc,EAAE,GAAG,YAAY,CAAC,QAAQ,EAAE;;wGAfxE,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAAtB,sBAAsB,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,oBAAA,EAAA,CAAA;;4FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACL,oBAAA,IAAI,EAAE,oBAAoB;AAC1B,oBAAA,UAAU,EAAE,KAAK;AACjB,iBAAA;;;MCuCY,qCAAqC,CAAA;AAoH9B,IAAA,aAAA;AAA0C,IAAA,cAAA;AAnHZ,IAAA,kCAAkC;AAClC,IAAA,kCAAkC;AAClD,IAAA,MAAM;AACX,IAAA,aAAa;AAEzC;;AAEG;AACM,IAAA,oBAAoB;AAE7B;;AAEG;IACM,aAAa,GAAY,KAAK;AAEvC;;AAEG;IACM,QAAQ,GAAY,KAAK;AAElC;;AAEG;IACM,SAAS,GAAY,KAAK;AAEnC;;AAEG;IACM,gBAAgB,GAAY,KAAK;AAE1C;;AAEG;AACM,IAAA,gBAAgB;AAEzB;;AAEG;AACM,IAAA,gBAAgB;AAEzB;;AAEG;AACM,IAAA,oBAAoB;AAE7B;;AAEG;IACM,kBAAkB,GAAW,CAAC;AAEvC;;AAEG;IACM,kCAAkC,GAAiC,SAAS;AAErF;;AAEG;AACM,IAAA,aAAa;AAEtB;;AAEG;AACO,IAAA,sBAAsB,GAAG,IAAI,YAAY,EAAW;AAE9D;;AAEG;AACO,IAAA,mBAAmB,GAAG,IAAI,YAAY,EAAQ;AAExD;;AAEG;AACO,IAAA,mBAAmB,GAAG,IAAI,YAAY,EAAQ;IAExD,cAAc,GAA0B,EAAE;IAC1C,kBAAkB,GAA0B,EAAE;AAC9C,IAAA,oBAAoB,GAA6B,wBAAwB,CAAC,WAAW;IACrF,wBAAwB,GAAG,wBAAwB;IACnD,aAAa,GAAG,aAAa;IAE7B,WAAW,GAAa,EAAE;IAC1B,SAAS,GAAY,KAAK;IAC1B,cAAc,GAAY,KAAK;AAC/B,IAAA,UAAU;AACV,IAAA,YAAY;AACZ,IAAA,KAAK;IACL,iBAAiB,GAAY,KAAK;AAClC,IAAA,WAAW,GAAY,KAAK,CAAC;IAC7B,aAAa,GAAW,CAAC;IACzB,aAAa,GAAW,CAAC;IACzB,WAAW,GAAW,CAAC;IACvB,WAAW,GAAW,CAAC;IACvB,WAAW,GAAW,CAAC;IACvB,kBAAkB,GAAW,CAAC;AAC9B,IAAA,eAAe;AACf,IAAA,qBAAqB;AACrB,IAAA,iBAAiB;AACjB,IAAA,cAAc;IACd,YAAY,GAAY,KAAK;IAC7B,UAAU,GAAa,EAAE;IACzB,cAAc,GAAY,KAAK;AAC/B,IAAA,oBAAoB;AACpB,IAAA,YAAY;AAEZ,IAAA,yBAAyB;IACzB,yBAAyB,GAAW,CAAC;IACrC,mCAAmC,GAAW,CAAC;IAC/C,qCAAqC,GAAW,CAAC;IACjD,oCAAoC,GAAW,CAAC;IAChD,yBAAyB,GAAW,CAAC;;AAG7B,IAAA,YAAY,GAAG,IAAI,OAAO,EAAE;IAEpC,WAAmB,CAAA,aAAgC,EAAU,cAAiC,EAAA;QAA3E,IAAa,CAAA,aAAA,GAAb,aAAa;QAA6B,IAAc,CAAA,cAAA,GAAd,cAAc;;AAC3E,IAAA,WAAW,CAAC,OAAsB,EAAA;QACjC,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE,YAAY,IAAI,KAAK,EAAE;YAChD;gBACC,IAAI,CAAC,YAAY,EAAE;AACnB,gBAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,wBAAwB,EAAE;oBACnG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/C,oBAAA,IAAI,CAAC,aAAa,GAAG,IAAI;;;;AAK5B,QAAA,IAAI,OAAO,CAAC,sBAAsB,CAAC,EAAE,YAAY,IAAI,OAAO,CAAC,sBAAsB,CAAC,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9G,IAAI,CAAC,mCAAmC,EAAE;;;IAIrC,mBAAmB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE;;IAG1C,sBAAsB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,sBAAsB,EAAE;;IAGpD,QAAQ,GAAA;QACP,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,YAAY,EAAE;QACxC,IAAI,CAAC,gBAAgB,CAAC;AACpB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC;AACjC,aAAA,SAAS,CAAC,CAAC,YAAwC,KAAI;YACvD,IAAI,YAAY,EAAE;AACjB,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CACpD,MAAM,IAAI,MAAM,CAAC,KAAK,IAAI,YAAY,CAAC,WAAW,CAAC,KAAK,IAAI,YAAY,CAAC,WAAW,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,CACtG;gBACD,IAAI,WAAW,KAAK,CAAC,CAAC;oBAAE;AACxB,gBAAA,IAAI,YAAY,CAAC,UAAU,EAAE;AAC5B,oBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AAClB,wBAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;wBAC/B,UAAU,CAAC,MAAK;4BACf,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE;yBAC3C,EAAE,GAAG,CAAC;;yBACD;wBACN,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE;wBAC3C,UAAU,CAAC,MAAK;4BACf,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC;AACrE,gCAAA,QAAQ,EAAE,QAAQ;AAClB,gCAAA,KAAK,EAAE,QAAQ;AACf,6BAAA,CAAC;yBACF,EAAE,GAAG,CAAC;;;qBAEF;oBACN,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE;;;AAG/C,SAAC,CAAC;;AAGH,QAAA,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,IAAG;AAChG,YAAA,IAAI,CAAC,8BAA8B,CAAC,aAAa,CAAC;AACnD,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;AACxF,YAAA,IAAI,CAAC,YAAY,GAAG,GAAG;AACxB,SAAC,CAAC;;IAGH,eAAe,GAAA;AACd,QAAA,IAAI,CAAC,kCAAkC,EAAE,aAAa,EAAE,gBAAgB,CACvE,QAAQ,EACR,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,CAC3C;;IAGF,2BAA2B,GAAA;AAC1B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,kCAAkC,EAAE,aAAa;AACxE,QAAA,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU;QACvC,MAAM,aAAa,GAAG,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW;AAEnE,QAAA,IAAI,UAAU,IAAI,aAAa,GAAG,CAAC,EAAE;AACpC,YAAA,IAAI,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,YAAY;;aAC3D;AACN,YAAA,IAAI,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,WAAW;;;AAIlE,IAAA,0BAA0B,CAAC,MAAgC,EAAA;AAC1D,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,kCAAkC,EAAE,aAAa;AACxE,QAAA,MAAM,QAAQ,GAAG,MAAM,KAAK,wBAAwB,CAAC,WAAW,GAAG,CAAC,GAAG,SAAS,CAAC,WAAW,GAAG,CAAC;QAEhG,SAAS,CAAC,QAAQ,CAAC;AAClB,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,QAAQ,EAAE,QAAQ;AAClB,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,oBAAoB,GAAG,MAAM;;AAGnC,IAAA,aAAa,CAAC,OAAmB,EAAA;AAChC,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,cAAc;AAC1C,QAAA,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE;;IAGtD,uBAAuB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YAChE,IAAI,CAAC,UAAU,EAAE;;AAElB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,kCAAkC,CAAC,aAAa;AACvE,QAAA,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW;AACvC,QAAA,MAAM,cAAc,GAAG,SAAS,CAAC,UAAU;;QAG3C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,SAAS,CAAC;AACpD,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK;QAC/B,IAAI,KAAK,KAAK,CAAC;AAAE,YAAA,IAAI,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,WAAW;aAC5E,IAAI,KAAK,KAAK,CAAC;AAAE,YAAA,IAAI,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,YAAY;aAClF,IACJ,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC;aACxG,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,IAAI,CAAC,CAAC;AAEpD,YAAA,IAAI,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,WAAW;aAC5D,IAAI,KAAK,KAAK,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC;AACpD,YAAA,IAAI,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,YAAY;aAC7D,IAAI,KAAK,KAAK,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC;AACpD,YAAA,IAAI,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,WAAW;;AAGlE,IAAA,0BAA0B,CAAC,GAA6B,EAAA;QACvD,QAAQ,GAAG;AACV,YAAA,KAAK,wBAAwB,CAAC,WAAW,EAAE;AAC1C,gBAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC;oBACtG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC;AAClD,qBAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC;oBAC1E,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;;AAC3C,oBAAA,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;gBAC1B;;AAED,YAAA,KAAK,wBAAwB,CAAC,YAAY,EAAE;AAC3C,gBAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC;oBACtG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC;AAClD,qBAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC;oBAC1E,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;;AAC3C,oBAAA,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;gBAC1B;;AAED,YAAA,KAAK,wBAAwB,CAAC,WAAW,EAAE;AAC1C,gBAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC;oBACtG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC;AAClD,qBAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC;AAC1E,oBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC;;AACvC,oBAAA,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;gBAC1B;;AAED,YAAA,KAAK,wBAAwB,CAAC,YAAY,EAAE;AAC3C,gBAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC;oBACtG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC;AAClD,qBAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC;oBAC1E,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;;AAC3C,oBAAA,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;gBAC1B;;AAED,YAAA,KAAK,wBAAwB,CAAC,WAAW,EAAE;AAC1C,gBAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC;oBACtG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC;AAClD,qBAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC;oBAC1E,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;;AAC3C,oBAAA,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;gBAC1B;;AAED,YAAA;gBACC;;;;AAKH,IAAA,aAAa,CAAC,KAAc,EAAA;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,kCAAkC,CAAC,aAAa,CAAC,WAAW;AACnF,QAAA,MAAM,cAAc,GAAG,KAAK,GAAG,SAAS;AAExC,QAAA,IAAI,CAAC,kCAAkC,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;;AAG7G;;AAEG;IACH,UAAU,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;;AAG5C;;;AAGG;AACH,IAAA,eAAe,CAAC,KAAa,EAAA;QAC5B,IAAI,IAAI,CAAC,oBAAoB;YAAE;AAE/B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAExB,QAAA,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAC5C,YAAA,WAAW,EAAE;gBACZ,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,KAAK;gBAC3C,GAAG,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,GAAG;AAC9B,aAAA;AACV,YAAA,UAAU,EAAE,IAAI;AACc,SAAA,CAAC;;AAGjC;;;;AAIG;AACH,IAAA,oBAAoB,CAAC,KAAa,EAAA;QACjC,IAAI,IAAI,CAAC,oBAAoB;YAAE;AAE/B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AAC1D,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM;AAAE,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AAErD,QAAA,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAC5C,YAAA,WAAW,EAAE;gBACZ,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,KAAK;gBAC3C,GAAG,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,GAAG;AAC9B,aAAA;AACV,YAAA,UAAU,EAAE,KAAK;AACa,SAAA,CAAC;;AAGjC;;;;AAIG;AACH,IAAA,WAAW,CAAC,KAAa,EAAA;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;;AAGvC;;;;AAIG;AACH,IAAA,sBAAsB,CAAC,cAA+B,EAAA;QACrD,QAAQ,cAAc;YACrB,KAAK,eAAe,CAAC,GAAG;AACvB,gBAAA,OAAO,gBAAgB;YACxB,KAAK,eAAe,CAAC,MAAM;AAC1B,gBAAA,OAAO,mBAAmB;YAC3B,KAAK,eAAe,CAAC,IAAI;AACxB,gBAAA,OAAO,iBAAiB;;;AAI3B;;AAEG;IACH,wBAAwB,GAAA;QACvB,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/C,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,QAAA,IAAI,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,WAAW;AAChE,QAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC;AACvC,YAAA,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc;AACpC,YAAA,aAAa,EAAE,IAAI;AACnB,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;;AAGhC;;AAEG;IACH,wBAAwB,GAAA;QACvB,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;AAChD,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAE1B,QAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC;AACvC,YAAA,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc;AACpC,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,uBAAuB,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,SAAS,CAAC,SAAS,CAAA,iBAAiB,CAAC;;AAErF,YAAA,aAAa,EAAE,KAAK;AACpB,SAAA,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AAE5C,QAAA,IAAI,CAAC,cAAc,CAAC,2BAA2B,CAAC,IAAI,CAAC;AACpD,YAAA,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC;AACrE,SAAA,CAAC;;AAGH;;AAEG;IACH,WAAW,GAAA;QACV,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;AAChD,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,QAAA,IAAI,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,WAAW;AAChE,QAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC;AACvC,YAAA,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc;AACpC,YAAA,aAAa,EAAE,KAAK;AACpB,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;;IAGxB,YAAY,GAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACvB,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,OAAO,IAAI,IAAI,CAAC,oBAAoB,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5F,gBAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA,aAAa;gBACnC,IAAI,CAAC,mBAAmB,EAAE;gBAC1B,IAAI,CAAC,sBAAsB,EAAE;;AACvB,iBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AAC/B,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI;;gBAErB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,oBAAoB,EAAE,WAAW;AAC9D,gBAAA,IAAI,IAAI,CAAC,cAAc,EAAE;oBACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,EAAE,WAAW,EAAE,KAAK;oBAC/D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,oBAAoB,EAAE,WAAW,EAAE,OAAO;;;AAGrE,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;;;AAI1B;;AAEG;IACK,kBAAkB,GAAA;AACzB,QAAA,IAAI,CAAC,eAAe,GAAG,SAAS,CAAA,8BAA8B;AAC9D,QAAA,IAAI,CAAC,qBAAqB,GAAG,SAAS,CAAA,6IAA6I;AACnL,QAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAA,mMAAmM;AACrO,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS,CAAA,yFAAyF;;AAGzH;;AAEG;IACK,sBAAsB,GAAA;AAC7B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE;AAC9E,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/D,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACxE,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACxE,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,2BAA2B,CAAC,eAAe,CAAC,GAAG,CAAC;QACxE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,2BAA2B,CAAC,eAAe,CAAC,MAAM,CAAC;QAC3E,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,2BAA2B,CAAC,eAAe,CAAC,IAAI,CAAC;;AAG1E;;;;AAIG;AACK,IAAA,2BAA2B,CAAC,IAAqB,EAAA;AACxD,QAAA,MAAM,KAAK,GACV,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,GAAG;QAC/G,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;;AAGhC;;AAEG;IACK,mBAAmB,GAAA;AAC1B,QAAA,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AACxF,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;YACzF,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,SAAS;AACpG,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,EAAE,UAAU,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC;YACnF,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC;AAEhH,YAAA,IAAI,iBAAiB,EAAE,OAAO,EAAE;AAC/B,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AACxB,oBAAA,OAAO,EAAE,OAAO;AAChB,oBAAA,cAAc,EAAE,iBAAiB,CAAC,KAAK,CAAC,cAAc;AACtD,oBAAA,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACrF,oBAAA,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;oBAC3F,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACnC,oBAAA,UAAU,EAAE,IAAI,IAAI,CAAC,CAAC;AACtB,oBAAA,KAAK,EAAE,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;AAC1E,oBAAA,GAAG,EAAE,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,SAAS;AACrF,iBAAA,CAAC;;AAEJ,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AAC3D,YAAA,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC;AAClC,YAAA,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC;AAAE,gBAAA,OAAO,CAAC;AACjC,YAAA,OAAO,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU;AACnC,SAAC,CAAC;QACF,IAAI,CAAC,kBAAkB,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;;AAGnD;;;AAGG;AACK,IAAA,8BAA8B,CAAC,aAAoB,EAAA;AAC1D,QAAA,IAAI,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,aAAa,EAAE,GAAG,CAAC;AACjF,QAAA,IAAI,CAAC,iBAAiB;YAAE;QAExB,IAAI,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC,yBAAyB,IAAI,EAAE;AAClF,QAAA,IAAI,eAAe,GAAG,sBAAsB,CAAC,IAAI,CAChD,EAAE,IAAI,EAAE,CAAC,WAAW,CAAC,KAAK,KAAK,iBAAiB,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,GAAG,KAAK,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAClH;AAED,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CACpD,MAAM,IAAI,MAAM,CAAC,KAAK,IAAI,iBAAiB,CAAC,KAAK,CAAC,KAAK,IAAI,iBAAiB,CAAC,KAAK,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,CACpG;QACD,IAAI,eAAe,EAAE;YACpB,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,WAAW,CAAC;AAAE,gBAAA,IAAI,CAAC,8BAA8B,CAAC,WAAW,CAAC;AACzF,YAAA,IAAI,CAAC,gBAAgB,CAAC,0BAA0B,CAAC,IAAI,CACpD,sBAAsB,CAAC,MAAM,CAC5B,EAAE,IACD,EAAE,CAAC,WAAW,CAAC,KAAK,KAAK,iBAAiB,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,GAAG,KAAK,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAC7G,CACD;;aACK,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE;;YAE/C,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,0BAA0B,CAAC,KAAK,IAAI,EAAE;YACpF,MAAM,KAAK,GAAG,eAAe,CAAC,SAAS,CACtC,MAAM,IACL,MAAM,CAAC,WAAW,CAAC,KAAK,KAAK,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,KAAK;AACvE,gBAAA,MAAM,CAAC,WAAW,CAAC,GAAG,KAAK,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,GAAG,CACpE;YACD,IAAI,KAAK,KAAK,CAAC,CAAC;gBACf,eAAe,CAAC,IAAI,CAAC;AACpB,oBAAA,WAAW,EAAE;wBACZ,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,KAAK;wBACjD,GAAG,EAAE,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,GAAG;AAC7C,qBAAA;AAC6B,iBAAA,CAAC;YACjC,IAAI,CAAC,gBAAgB,CAAC,0BAA0B,CAAC,IAAI,CAAC,eAAe,CAAC;AAEtE,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AAClB,gBAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;gBAC/B,UAAU,CAAC,MAAK;AACf,oBAAA,IAAI,CAAC,4BAA4B,CAAC,WAAW,CAAC;iBAC9C,EAAE,GAAG,CAAC;;iBACD;AACN,gBAAA,IAAI,CAAC,4BAA4B,CAAC,WAAW,CAAC;gBAC9C,UAAU,CAAC,MAAK;oBACf,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC;AACrE,wBAAA,QAAQ,EAAE,QAAQ;AAClB,wBAAA,KAAK,EAAE,QAAQ;AACf,qBAAA,CAAC;iBACF,EAAE,GAAG,CAAC;;;;AAKV;;;AAGG;AACK,IAAA,4BAA4B,CAAC,KAAa,EAAA;QACjD,IAAI,KAAK,IAAI,CAAC,CAAC;YAAE;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC;QAC1C,IAAI,KAAK,EAAE;;AAEV,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;AAChC,YAAA,KAAK,CAAC,QAAQ,GAAG,IAAI;AACrB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,YAAA,UAAU,CAAC,OAAO,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;;;AAI3D;;;AAGG;AACK,IAAA,8BAA8B,CAAC,KAAa,EAAA;QACnD,IAAI,KAAK,IAAI,CAAC,CAAC;YAAE;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC;QAC1C,IAAI,KAAK,EAAE;;AAEV,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;AAChC,YAAA,KAAK,CAAC,QAAQ,GAAG,KAAK;AACtB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AAC1D,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM;AAAE,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACrD,YAAA,UAAU,CAAC,OAAO,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;;;AAI3D;;;AAGG;IACK,mCAAmC,GAAA;QAC1C,IAAI,CAAC,yBAAyB,GAAGtG,mBAA2B,CAC3D,IAAI,CAAC,cAAc,CAAC,mBAAmB,EACvC,IAAI,CAAC,oBAAoB,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,EACxD;AACC,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,WAAW,EAAE,IAAI;AACjB,SAAA,CACD;QAED,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,CAAC,eAAe;AAC/E,QAAA,IAAI,CAAC,mCAAmC;YACvC,IAAI,CAAC,yBAAyB,CAAC,KAAK,GAAG,IAAI,CAAC,yBAAyB,CAAC,YAAY,IAAI;AACrF,kBAAE;AACF,kBAAE,IAAI,CAAC,yBAAyB,CAAC,SAAS;AACxC,qBAAC,IAAI,CAAC,yBAAyB,CAAC,KAAK,GAAG,IAAI,CAAC,yBAAyB,CAAC,YAAY,CAAC;AACxF,QAAA,IAAI,CAAC,qCAAqC;YACzC,IAAI,CAAC,yBAAyB,CAAC,KAAK,GAAG,IAAI,CAAC,yBAAyB,CAAC,YAAY,IAAI;AACrF,kBAAE;AACF,kBAAE,IAAI,CAAC,yBAAyB,CAAC,YAAY;AAC3C,qBAAC,IAAI,CAAC,yBAAyB,CAAC,KAAK,GAAG,IAAI,CAAC,yBAAyB,CAAC,YAAY,CAAC;AACxF,QAAA,IAAI,CAAC,oCAAoC;YACxC,IAAI,CAAC,yBAAyB,CAAC,KAAK,GAAG,IAAI,CAAC,yBAAyB,CAAC,YAAY,IAAI;AACrF,kBAAE;AACF,kBAAE,IAAI,CAAC,yBAAyB,CAAC,cAAc;AAC7C,qBAAC,IAAI,CAAC,yBAAyB,CAAC,KAAK,GAAG,IAAI,CAAC,yBAAyB,CAAC,YAAY,CAAC;QACxF,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,oBAAoB,EAAE,MAAM,IAAI,CAAC;;IAGxE,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;;wGAznBjB,qCAAqC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAR,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAa,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAArC,qCAAqC,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,kCAAA,EAAA,oCAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,OAAA,EAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,oCAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,oCAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oCAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,oCAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAGnC,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/ChC,u0mCAssBA,EAAA,MAAA,EAAA,CAAA,06vBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiB,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA+C,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAjB,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,oFAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAqC,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAZ,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAoD,gCAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,6BAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,EAAA,2BAAA,EAAA,qCAAA,EAAA,uCAAA,EAAA,sCAAA,EAAA,2BAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,WAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,IAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,CAAA;;4FD1pBa,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBANjD,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2CAA2C,cAGzC,KAAK,EAAA,QAAA,EAAA,u0mCAAA,EAAA,MAAA,EAAA,CAAA,06vBAAA,CAAA,EAAA;gHAGgC,kCAAkC,EAAA,CAAA;sBAAlF,SAAS;uBAAC,oCAAoC;gBACE,kCAAkC,EAAA,CAAA;sBAAlF,SAAS;uBAAC,oCAAoC;gBACd,MAAM,EAAA,CAAA;sBAAtC,YAAY;uBAAC,iBAAiB;gBACH,aAAa,EAAA,CAAA;sBAAxC,SAAS;uBAAC,eAAe;gBAKjB,oBAAoB,EAAA,CAAA;sBAA5B;gBAKQ,aAAa,EAAA,CAAA;sBAArB;gBAKQ,QAAQ,EAAA,CAAA;sBAAhB;gBAKQ,SAAS,EAAA,CAAA;sBAAjB;gBAKQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAKQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAKQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAKQ,oBAAoB,EAAA,CAAA;sBAA5B;gBAKQ,kBAAkB,EAAA,CAAA;sBAA1B;gBAKQ,kCAAkC,EAAA,CAAA;sBAA1C;gBAKQ,aAAa,EAAA,CAAA;sBAArB;gBAKS,sBAAsB,EAAA,CAAA;sBAA/B;gBAKS,mBAAmB,EAAA,CAAA;sBAA5B;gBAKS,mBAAmB,EAAA,CAAA;sBAA5B;;;MEjHW,sBAAsB,CAAA;AAC1B,IAAA,kCAAkC,GAAG,IAAI,eAAe,CAA0C,IAAI,CAAC;;AAE/G,IAAA,IAAW,+BAA+B,GAAA;QACzC,OAAO,IAAI,CAAC,kCAAkC;;AAE/C,IAAA,IAAW,8BAA8B,GAAA;AACxC,QAAA,OAAO,IAAI,CAAC,kCAAkC,CAAC,KAAK;;AAGrD,IAAA,WAAA,GAAA;AAEA,IAAA,WAAW;wGAZC,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAtB,sBAAsB,EAAA,CAAA;;4FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC;;;MCOY,2BAA2B,CAAA;AAsBnB,IAAA,uBAAA;AArBpB;;AAEG;IACM,SAAS,GAAY,KAAK;AAEnC;;AAEG;IACM,QAAQ,GAAY,KAAK;AAElC;;AAEG;IACM,SAAS,GAAY,KAAK;AAEA,IAAA,oBAAoB;IAEvD,MAAM,GAAY,KAAK;AACvB,IAAA,iBAAiB;IACjB,aAAa,GAAiB,EAAE;AAEhC,IAAA,WAAA,CAAoB,uBAA+C,EAAA;QAA/C,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB;;IAE3C,QAAQ,GAAA;AACP,QAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAA,mIAAmI;QACrK,IAAI,CAAC,aAAa,GAAG;AACpB,YAAA;gBACC,KAAK,EAAE,SAAS,CAAA,CAAY,UAAA,CAAA;gBAC5B,WAAW,EAAE,SAAS,CAAA,CAAqC,mCAAA,CAAA;gBAC3D,UAAU,EAAE,SAAS,CAAA,CAAa,WAAA,CAAA;AAClC,gBAAA,IAAI,EAAE,uDAAuD;AAC7D,gBAAA,OAAO,EAAE,IAAI;AACb,aAAA;AACD,YAAA;gBACC,KAAK,EAAE,SAAS,CAAA,CAAkB,gBAAA,CAAA;gBAClC,WAAW,EAAE,SAAS,CAAA,CAA6E,2EAAA,CAAA;AACnG,gBAAA,IAAI,EAAE,+EAA+E;AACrF,aAAA;AACD,YAAA;gBACC,KAAK,EAAE,SAAS,CAAA,CAA+D,6DAAA,CAAA;gBAC/E,WAAW,EAAE,SAAS,CAAA,CAA+H,6HAAA,CAAA;AACrJ,gBAAA,IAAI,EAAE,yDAAyD;AAC/D,aAAA;AACD,YAAA;gBACC,KAAK,EAAE,SAAS,CAAA,CAA2B,yBAAA,CAAA;gBAC3C,WAAW,EAAE,SAAS,CAAA,CAAiF,+EAAA,CAAA;AACvG,gBAAA,IAAI,EAAE,qCAAqC;AAC3C,aAAA;SACD;;IAGF,UAAU,CAAC,KAAK,EAAE,IAAI,EAAA;QACrB,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,uBAAuB,CAAC,+BAA+B,CAAC,IAAI,CAAC;AACjE,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,IAAI,EAAE,IAAI;AACV,SAAA,CAAC;;wGAzDS,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,0SCXxC,0tHA8FA,EAAA,MAAA,EAAA,CAAA,y5HAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAArF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAoC,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAjB,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDnFa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,+BAA+B,cAG7B,KAAK,EAAA,QAAA,EAAA,0tHAAA,EAAA,MAAA,EAAA,CAAA,y5HAAA,CAAA,EAAA;wFAMR,SAAS,EAAA,CAAA;sBAAjB;gBAKQ,QAAQ,EAAA,CAAA;sBAAhB;gBAKQ,SAAS,EAAA,CAAA;sBAAjB;gBAEkC,oBAAoB,EAAA,CAAA;sBAAtD,SAAS;uBAAC,sBAAsB;;;MEXrB,2BAA2B,CAAA;AA2D9B,IAAA,IAAA;AACA,IAAA,cAAA;AACD,IAAA,gBAAA;AACA,IAAA,gBAAA;AACA,IAAA,oBAAA;AACA,IAAA,aAAA;AA/DR;;AAEG;IACM,QAAQ,GAAY,KAAK;AAElC;;AAEG;IACM,SAAS,GAAY,KAAK;AAEnC;;AAEG;IACM,gBAAgB,GAAY,KAAK;AAE1C;;AAEG;IACM,aAAa,GAAY,KAAK;AAEvC;;AAEG;IACM,UAAU,GAAW,CAAC;AAE/B;;AAEG;IACM,OAAO,GAAW,CAAC;AAE5B;;AAEG;IACM,aAAa,GAAW,CAAC;AAElC;;AAEG;AACM,IAAA,oBAAoB;AAE7B;;AAEG;AACM,IAAA,oBAAoB;AAE7B;;AAEG;AACM,IAAA,aAAa;AAEtB;;AAEG;IACH,kBAAkB,GAAW,CAAC;IAE9B,kCAAkC,GAAiC,SAAS;IAE5E,WACS,CAAA,IAAuB,EACvB,cAAiC,EAClC,gBAA6C,EAC7C,gBAAsC,EACtC,oBAA8C,EAC9C,aAAgC,EAAA;QAL/B,IAAI,CAAA,IAAA,GAAJ,IAAI;QACJ,IAAc,CAAA,cAAA,GAAd,cAAc;QACf,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAoB,CAAA,oBAAA,GAApB,oBAAoB;QACpB,IAAa,CAAA,aAAA,GAAb,aAAa;;AAGrB,IAAA,WAAW,CAAC,OAAsB,EAAA;QACjC,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE,YAAY,IAAI,KAAK,EAAE;YAChD,IAAI,CAAC,yBAAyB,EAAE;;;IAIlC,QAAQ,GAAA;QACP,IAAI,CAAC,yBAAyB,EAAE;AAEhC,QAAA,IAAI,CAAC,oBAAoB,CAAC,uBAAuB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;AAC3F,YAAA,IACC,IAAI,EAAE,kCAAkC,KAAK,SAAS;AACtD,gBAAA,IAAI,CAAC,kCAAkC,KAAK,SAAS,EACpD;AACD,gBAAA,IAAI,CAAC,kCAAkC,GAAG,IAAI,EAAE,kCAAkC;AAClF,gBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;;AAE3B,SAAC,CAAC;;IAGI,sBAAsB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,sBAAsB,EAAE;;AAGpD;;AAEG;IACK,yBAAyB,GAAA;AAChC,QAAA,IAAI,CAAC,kBAAkB;AACtB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,KAAK;AACxC,kBAAE;kBACA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,CAAC;qBAC7E,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC;;AAG3C;;AAEG;IACH,iBAAiB,GAAA;AAChB,QAAA,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE;;IAGvC,wBAAwB,GAAA;AACvB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;;IAG1B,wBAAwB,GAAA;AACvB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;;AAG3B,IAAA,WAAW;wGArHC,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAT,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,2BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA0F,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,0bChBxC,6vDAwCA,EAAA,MAAA,EAAA,CAAA,ieAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAArE,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAoE,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qCAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,oCAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,wBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDxBa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gCAAgC,cAG9B,KAAK,EAAA,QAAA,EAAA,6vDAAA,EAAA,MAAA,EAAA,CAAA,ieAAA,CAAA,EAAA;2PAMR,QAAQ,EAAA,CAAA;sBAAhB;gBAKQ,SAAS,EAAA,CAAA;sBAAjB;gBAKQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAKQ,aAAa,EAAA,CAAA;sBAArB;gBAKQ,UAAU,EAAA,CAAA;sBAAlB;gBAKQ,OAAO,EAAA,CAAA;sBAAf;gBAKQ,aAAa,EAAA,CAAA;sBAArB;gBAKQ,oBAAoB,EAAA,CAAA;sBAA5B;gBAKQ,oBAAoB,EAAA,CAAA;sBAA5B;gBAKQ,aAAa,EAAA,CAAA;sBAArB;;;AE/CI,MAAO,qCACZ,SAAQ,kCAAkC,CAAA;IAGjC,WAAW,GAAW,IAAI;IAE1B,mBAAmB,GAAY,KAAK;AAEpC,IAAA,UAAU;IAEV,sBAAsB,GAAY,KAAK;IAEhD,WAAW,GAAG,WAAW;AAEzB,IAAA,WAAA,CACC,aAAgC,EAChC,aAAgC,EAChC,QAA8B,EAC9B,QAAmB,EACnB,YAAyC,EACzC,aAAsC,EACtC,YAAsC,EACtC,kBAAgD,EAChD,eAAoC,EAAA;AAEpC,QAAA,KAAK,CACJ,aAAa,EACb,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,eAAe,CACf;;IAGF,QAAQ,GAAA;QACP,IAAI,CAAC,qBAAqB,EAAE;;IAG7B,WAAW,GAAA;QACV,IAAI,CAAC,kBAAkB,EAAE;;wGA3Cd,qCAAqC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAhG,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAnB,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAqB,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAqD,2BAAA,EAAA,EAAA,EAAA,KAAA,EAAA0C,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,4BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qCAAqC,+RClBlD,4iVA+NA,EAAA,MAAA,EAAA,CAAA,i2IAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA1F,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAwB,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6NAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAmE,+BAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,2BAAA,EAAA,uBAAA,EAAA,4BAAA,EAAA,wBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,2BAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,8BAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,4BAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,wBAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mCAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,CAAA,4BAAA,EAAA,0BAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,8BAAA,EAAA,wBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sCAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,4BAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,SAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FD7Ma,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBANjD,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6CAA6C,cAG3C,KAAK,EAAA,QAAA,EAAA,4iVAAA,EAAA,MAAA,EAAA,CAAA,i2IAAA,CAAA,EAAA;6VAMR,WAAW,EAAA,CAAA;sBAAnB;gBAEQ,mBAAmB,EAAA,CAAA;sBAA3B;gBAEQ,UAAU,EAAA,CAAA;sBAAlB;gBAEQ,sBAAsB,EAAA,CAAA;sBAA9B;;;MEhBW,gCAAgC,CAAA;AA0DnC,IAAA,iBAAA;AACD,IAAA,aAAA;AACC,IAAA,cAAA;AA3DT;;AAEG;IACM,SAAS,GAAY,KAAK;AAEnC;;AAEG;IACM,gBAAgB,GAAY,KAAK;AAE1C;;AAEG;IACM,aAAa,GAAY,KAAK;AAEvC;;AAEG;IACM,UAAU,GAAW,CAAC;AAE/B;;AAEG;IACM,OAAO,GAAW,CAAC;AAE5B;;AAEG;IACM,aAAa,GAAW,CAAC;AAElC;;AAEG;AACM,IAAA,oBAAoB;IAE7B,cAAc,GAA0B,EAAE;IAC1C,kBAAkB,GAA0B,EAAE;IAE9C,cAAc,GAAW,EAAE;IAC3B,aAAa,GAAW,CAAC;IACzB,aAAa,GAAW,CAAC;IACzB,WAAW,GAAW,CAAC;IACvB,WAAW,GAAW,CAAC;IACvB,WAAW,GAAW,CAAC;IACvB,iBAAiB,GAAY,KAAK;IAClC,WAAW,GAAa,EAAE;IAC1B,SAAS,GAAY,KAAK;IAC1B,cAAc,GAAY,KAAK;AAC/B,IAAA,UAAU;AACV,IAAA,YAAY;AACZ,IAAA,KAAK;AACL,IAAA,eAAe;AACf,IAAA,qBAAqB;AACrB,IAAA,iBAAiB;IACjB,YAAY,GAAY,KAAK;AAE7B,IAAA,WAAA,CACS,iBAAuC,EACxC,aAAgC,EAC/B,cAAiC,EAAA;QAFjC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QAClB,IAAa,CAAA,aAAA,GAAb,aAAa;QACZ,IAAc,CAAA,cAAA,GAAd,cAAc;;AAGvB,IAAA,QAAQ;AAER,IAAA,WAAW,CAAC,OAAsB,EAAA;QACjC,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE,YAAY,IAAI,KAAK,EAAE;YAChD,IAAI,CAAC,YAAY,EAAE;;;IAIrB,WAAW,GAAA;QACV,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;AACjD,QAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC;AACvC,YAAA,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc;AACpC,YAAA,aAAa,EAAE,KAAK;AACpB,SAAA,CAAC;;IAGI,mBAAmB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE;;IAG1C,sBAAsB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,sBAAsB,EAAE;;IAG5C,YAAY,GAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACvB,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,OAAO,IAAI,IAAI,CAAC,oBAAoB,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5F,gBAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA,aAAa;gBACnC,IAAI,CAAC,mBAAmB,EAAE;gBAC1B,IAAI,CAAC,sBAAsB,EAAE;;AACvB,iBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AAC/B,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI;;gBAErB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,oBAAoB,EAAE,WAAW;AAC9D,gBAAA,IAAI,IAAI,CAAC,cAAc,EAAE;oBACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,EAAE,WAAW,EAAE,KAAK;oBAC/D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,oBAAoB,EAAE,WAAW,EAAE,OAAO;;;AAGrE,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;;;AAI1B;;AAEG;IACK,kBAAkB,GAAA;AACzB,QAAA,IAAI,CAAC,eAAe,GAAG,SAAS,CAAA,8BAA8B;AAC9D,QAAA,IAAI,CAAC,qBAAqB,GAAG,SAAS,CAAA,6IAA6I;AACnL,QAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAA,mMAAmM;AACrO,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS,CAAA,yFAAyF;;AAGzH;;AAEG;IACK,sBAAsB,GAAA;AAC7B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE;AAC9E,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/D,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACxE,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACxE,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,2BAA2B,CAAC,eAAe,CAAC,GAAG,CAAC;QACxE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,2BAA2B,CAAC,eAAe,CAAC,MAAM,CAAC;QAC3E,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,2BAA2B,CAAC,eAAe,CAAC,IAAI,CAAC;;AAG1E;;;;AAIG;AACK,IAAA,2BAA2B,CAAC,IAAqB,EAAA;AACxD,QAAA,MAAM,KAAK,GACV,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,GAAG;QAC/G,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;;AAGhC;;AAEG;IACK,mBAAmB,GAAA;AAC1B,QAAA,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AACxF,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;YACzF,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,SAAS;AACpG,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,EAAE,UAAU,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC;YACnF,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC;AAEhH,YAAA,IAAI,iBAAiB,EAAE,OAAO,EAAE;AAC/B,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AACxB,oBAAA,OAAO,EAAE,OAAO;AAChB,oBAAA,cAAc,EAAE,iBAAiB,CAAC,KAAK,CAAC,cAAc;AACtD,oBAAA,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACrF,oBAAA,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;oBAC3F,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACnC,oBAAA,UAAU,EAAE,IAAI,IAAI,CAAC,CAAC;AACtB,oBAAA,KAAK,EAAE,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;AAC1E,oBAAA,GAAG,EAAE,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,SAAS;AACrF,iBAAA,CAAC;;AAEJ,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AAC3D,YAAA,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC;AAClC,YAAA,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC;AAAE,gBAAA,OAAO,CAAC;AACjC,YAAA,OAAO,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU;AACnC,SAAC,CAAC;QACF,IAAI,CAAC,kBAAkB,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;;wGA1KvC,gCAAgC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAjI,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAwB,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gCAAgC,mVCZ7C,8iKA2GA,EAAA,MAAA,EAAA,CAAA,wzIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAjB,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA+C,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAjB,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6NAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAqC,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiE,gCAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FD/Fa,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAN5C,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6BAA6B,cAG3B,KAAK,EAAA,QAAA,EAAA,8iKAAA,EAAA,MAAA,EAAA,CAAA,wzIAAA,CAAA,EAAA;gJAMR,SAAS,EAAA,CAAA;sBAAjB;gBAKQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAKQ,aAAa,EAAA,CAAA;sBAArB;gBAKQ,UAAU,EAAA,CAAA;sBAAlB;gBAKQ,OAAO,EAAA,CAAA;sBAAf;gBAKQ,aAAa,EAAA,CAAA;sBAArB;gBAKQ,oBAAoB,EAAA,CAAA;sBAA5B;;;AE3BI,MAAO,oCACZ,SAAQ,kCAAkC,CAAA;IAGjC,WAAW,GAAW,IAAI;IAE1B,mBAAmB,GAAY,KAAK;AAEpC,IAAA,UAAU;IAEV,sBAAsB,GAAY,KAAK;IAEhD,WAAW,GAAG,WAAW;IAEzB,cAAc,GAAY,KAAK;AAE/B,IAAA,WAAA,CACC,aAAgC,EAChC,aAAgC,EAChC,QAA8B,EAC9B,QAAmB,EACnB,YAAyC,EACzC,aAAsC,EACtC,YAAsC,EACtC,kBAAgD,EAChD,eAAoC,EAAA;AAEpC,QAAA,KAAK,CACJ,aAAa,EACb,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,eAAe,CACf;;AAGF,IAAA,aAAa,CAAC,OAAmB,EAAA;AAChC,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,cAAc;AAC1C,QAAA,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE;;IAG/C,mBAAmB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE;;IAGzC,sBAAsB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,sBAAsB,EAAE;;IAGnD,QAAQ,GAAA;QACP,IAAI,CAAC,qBAAqB,EAAE;;IAG7B,WAAW,GAAA;QACV,IAAI,CAAC,kBAAkB,EAAE;;wGA1Dd,oCAAoC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA/G,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAnB,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAqB,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAqD,2BAAA,EAAA,EAAA,EAAA,KAAA,EAAA0C,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,4BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oCAAoC,8RCnBjD,q9XAiQA,EAAA,MAAA,EAAA,CAAA,uoHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA1F,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAwB,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,8NAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAqB,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAwD,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,2BAAA,EAAA,uBAAA,EAAA,4BAAA,EAAA,wBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,2BAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,8BAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,4BAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,wBAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mCAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,CAAA,4BAAA,EAAA,0BAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,8BAAA,EAAA,wBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sCAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,4BAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,SAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gCAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,SAAA,EAAA,eAAA,EAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yCAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,CAAA,EAAA,CAAA;;4FD9Oa,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBANhD,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4CAA4C,cAG1C,KAAK,EAAA,QAAA,EAAA,q9XAAA,EAAA,MAAA,EAAA,CAAA,uoHAAA,CAAA,EAAA;6VAMR,WAAW,EAAA,CAAA;sBAAnB;gBAEQ,mBAAmB,EAAA,CAAA;sBAA3B;gBAEQ,UAAU,EAAA,CAAA;sBAAlB;gBAEQ,sBAAsB,EAAA,CAAA;sBAA9B;;;AEVI,MAAgB,iCAAkC,SAAQ,yBAAyB,CAAA;IACxF,gBAAgB,GAAG,KAAK;AAExB,IAAA,oBAAoB;AACpB,IAAA,mBAAmB;IACnB,gBAAgB,GAAY,KAAK;IACjC,iBAAiB,GAAY,KAAK;AAElC,IAAA,qBAAqB;AACrB,IAAA,oBAAoB;AAEpB,IAAA,mBAAmB;AAEnB,IAAA,iBAAiB;AACjB,IAAA,gBAAgB;AAEhB,IAAA,iBAAiB;AACjB,IAAA,kBAAkB;AAElB,IAAA,iBAAiB;AACjB,IAAA,kBAAkB;AAElB,IAAA,kBAAkB;AAClB,IAAA,iBAAiB;AACjB,IAAA,UAAU;IACV,UAAU,GAAuB,IAAI;IAErC,qBAAqB,GAAG,qBAAqB;IAE7C,sBAAsB,GAAY,KAAK;IACvC,uBAAuB,GAAY,KAAK;IACxC,mBAAmB,GAAY,KAAK;AAEpC,IAAA,YAAY;AACZ,IAAA,yBAAyB;AACzB,IAAA,2BAA2B,GAAsB;AAChD,QAAA,IAAI,EAAE,KAAK;KACX;AAED,IAAA,gBAAgB;AAChB,IAAA,cAAc;;AAGN,IAAA,YAAY,GAAG,IAAI,OAAO,EAAE;AAEpC,IAAA,IAAI,oBAAoB,GAAA;QACvB,OAAO,CAAC,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;;AAGpH,IAAA,IAAI,aAAa,GAAA;QAChB,OAAO,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,eAAe,EAAE,UAAU;;AAG3E,IAAA,WAAA,CACC,aAAgC,EAChC,aAAgC,EAChC,QAA8B,EAC9B,QAAmB,EACnB,YAAyC,EACzC,aAAsC,EACtC,YAAsC,EACtC,kBAAgD,EAChD,eAAoC,EAAA;AAEpC,QAAA,KAAK,CACJ,aAAa,EACb,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,eAAe,CACf;;IAGF,oBAAoB,GAAA;AACnB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,OAAO,EAAE;QAEjC,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;YAC1G,IAAI,IAAI,EAAE;AACT,gBAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;AAChC,gBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;gBACvE,IACC,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,cAAc,CAAC,WAAW,CAAC,CAAC,MAAM;oBACvG,CAAC;oBACD,IAAI,CAAC,oBAAoB,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,cAAc,CAAC,WAAW,CAAC,CAAC,MAAM;AACtG,wBAAA,CAAC;qBACF,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAC/C;oBACD,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1C,oBAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,oBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;;;AAG/B,SAAC,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;YACzG,IAAI,IAAI,EAAE;AACT,gBAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;AAC9B,gBAAA,IAAI,CAAC,yBAAyB;oBAC7B;AACE,yBAAA,IAAI;AACL,0BAAE,MAAM,CACP,KAAK,IACJ,KAAK,EAAE,KAAK,EAAE,IAAI,KAAK,SAAS,CAAC,IAAI;AACrC,wBAAA,KAAK,EAAE,KAAK,EAAE,IAAI,KAAK,SAAS,CAAC,YAAY;AAC7C,wBAAA,KAAK,EAAE,KAAK,EAAE,IAAI,KAAK,SAAS,CAAC,cAAc,CAChD,EAAE,MAAM,GAAG,CAAC;;AAEjB,SAAC,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;YACxG,IAAI,IAAI,EAAE;AACT,gBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;;AAE/B,SAAC,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;AACxG,YAAA,IAAI,IAAI;AAAE,gBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;AACxC,SAAC,CAAC;AAEF,QAAA,aAAa,CAAC;YACb,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACpE,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC/D;AACC,aAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC;aACrD,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,KAAI;AACrC,YAAA,IAAI,CAAC,mBAAmB,GAAG,QAAQ;AACnC,YAAA,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,IAAI,GAAG,IAAI,UAAU,EAAE;AAC5D,gBAAA,IAAI,CAAC,oBAAoB,GAAG,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACtF,gBAAA,IAAI,CAAC,UAAU,GAAG,UAAU;gBAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,EAAE,KAAK,UAAU,CAAC,EAAE,CAAC,IAAI,IAAI;AAEzG,gBAAA,IAAI,CAAC,YAAY;oBAChB,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,IAAI,KAAK,kBAAkB,CAAC,QAAQ;AACpE,wBAAA,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,MAAM;gBAExC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;AACzG,oBAAA,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK;wBAAE;oBACrC,IAAI,IAAI,EAAE;AACT,wBAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;;AAEhC,iBAAC,CAAC;gBACF;;YAGD,IAAI,CAAC,mBAAmB,GAAG,UAAU,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS;AAExE,YAAA,IAAI,UAAU,IAAI,QAAQ,EAAE;AAC3B,gBAAA,IAAI,CAAC,oBAAoB,GAAG,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACtF,gBAAA,IAAI,CAAC,UAAU,GAAG,UAAU;AAC5B,gBAAA,MAAM,UAAU,GAAG;oBAClB,IAAI,QAAQ,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC;oBACrC,IAAI,QAAQ,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC;oBACrC,IAAI,QAAQ,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;oBAClC,IAAI,QAAQ,CAAC,OAAO,EAAE,YAAY,IAAI,EAAE,CAAC;iBACzC;gBACD,IAAI,CAAC,UAAU,GAAG;AACjB,oBAAA,aAAa,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,CAAC;AAC3D,oBAAA,aAAa,EAAE,UAAU;AACzB,oBAAA,iBAAiB,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU;AACjD,oBAAA,cAAc,EAAE;wBACf,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,QAAQ,CAAC,KAAK,IAAI,CAAC;wBAC7D,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC;AACnE,qBAAA;iBACc;AAEhB,gBAAA,IAAI,CAAC,YAAY;oBAChB,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,IAAI,KAAK,kBAAkB,CAAC,QAAQ;AACpE,wBAAA,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,MAAM;;YAGzC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;AACzG,gBAAA,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK;oBAAE;gBACrC,IAAI,IAAI,EAAE;AACT,oBAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;;AAEhC,aAAC,CAAC;AACH,SAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC;aACjB,IAAI,CACJ,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,YAAY,CAAC,EAC9C,YAAY,CAAC,IAAI,CAAC,EAClB,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC;aAE5B,SAAS,CAAC,IAAI,IAAG;AACjB,YAAA,IAAI,CAAC,IAAI;gBAAE;AACX,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;AACjC,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,eAAe;YAC7C,IAAI,IAAI,CAAC,gBAAgB;AAAE,gBAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,gBAAgB;YAC1E,IAAI,CAAC,aAAa,CAAC;AACjB,iBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC;iBACrD,SAAS,CAAC,OAAO,IAAG;AACpB,gBAAA,IAAI,CAAC,OAAO;oBAAE;AACd,gBAAA,MAAM,YAAY,GAAG,OAAO,EAAE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC;AAC1E,gBAAA,IAAI,YAAY;oBAAE,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC;qBAClE;;AAEJ,oBAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC;wBACvC,UAAU,EAAE,IAAI,CAAC,UAAU;AAC3B,wBAAA,QAAQ,EAAE,aAAa;wBACvB,eAAe,EAAE,IAAI,CAAC,eAAe;wBACrC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;AACvC,wBAAA,SAAS,EAAE,SAAS;AACpB,wBAAA,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc;AACpC,qBAAA,CAAC;;AAEJ,aAAC,CAAC;AACJ,SAAC,CAAC;AAEH,QAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;AACzE,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC7B,SAAC,CAAC;QAEF,IAAI,CAAC,uBAAuB,EAAE;;AAG/B,IAAA,qBAAqB,CAAC,OAAyB,EAAA;AAC9C,QAAA,QAAQ,OAAO,CAAC,IAAI;AACnB,YAAA,KAAK,cAAc;gBAClB,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;gBACzG;AACD,YAAA,KAAK,cAAc;AAClB,gBAAA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;gBACpB;AACD,YAAA,KAAK,YAAY;AAChB,gBAAA,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC;gBAC/B;AACD,YAAA;AACC,gBAAA,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,OAAO,CAAC;;;AAI1C,IAAA,sBAAsB,CAAC,OAAyB,EAAA;AAC/C,QAAA,QAAQ,OAAO,CAAC,IAAI;AACnB,YAAA,KAAK,cAAc;gBAClB,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;gBAC3G;AACD,YAAA,KAAK,cAAc;AAClB,gBAAA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;gBACpB;AACD,YAAA,KAAK,YAAY;AAChB,gBAAA,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC;gBAC/B;AACD,YAAA;AACC,gBAAA,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,OAAO,CAAC;;;IAI1C,cAAc,GAAA;QACb,IAAI,CAAC,2BAA2B,GAAG;AAClC,YAAA,IAAI,EAAE,KAAK;SACX;;IAGM,uBAAuB,GAAA;AAC9B,QAAA,IAAI;AACH,YAAA,MAAM,2BAA2B,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAEjG;AACD,YAAA,IAAI,2BAA2B;AAAE,gBAAA,IAAI,CAAC,2BAA2B,GAAG,2BAA2B;;QAC9F,OAAO,KAAK,EAAE;AACf,YAAA,OAAO,CAAC,KAAK,CAAC,yDAAyD,EAAE,KAAK,CAAC;;;IAIvE,kBAAkB,GAAA;AAC3B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;;AAE7B;;AClRK,MAAO,oCACZ,SAAQ,iCAAiC,CAAA;AAGhC,IAAA,UAAU;IACnB,WAAW,GAAG,WAAW;AAEzB,IAAA,WAAA,CACC,aAAgC,EAChC,aAAgC,EAChC,QAA8B,EAC9B,QAAmB,EACnB,YAAyC,EACzC,aAAsC,EACtC,YAAsC,EACtC,kBAAgD,EAChD,eAAoC,EAAA;AAEpC,QAAA,KAAK,CACJ,aAAa,EACb,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,eAAe,CACf;;IAGF,QAAQ,GAAA;QACP,IAAI,CAAC,oBAAoB,EAAE;;IAG5B,WAAW,GAAA;QACV,IAAI,CAAC,kBAAkB,EAAE;;wGApCd,oCAAoC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA3H,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAnB,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAqB,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAqD,2BAAA,EAAA,EAAA,EAAA,KAAA,EAAA0C,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,4BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oCAAoC,oKClBjD,0jFAuDA,EAAA,MAAA,EAAA,CAAA,8zBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA1F,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAkH,+BAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,2BAAA,EAAA,uBAAA,EAAA,4BAAA,EAAA,wBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,2BAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mCAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,6BAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDrCa,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBANhD,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4CAA4C,cAG1C,KAAK,EAAA,QAAA,EAAA,0jFAAA,EAAA,MAAA,EAAA,CAAA,8zBAAA,CAAA,EAAA;6VAMR,UAAU,EAAA,CAAA;sBAAlB;;;AEJI,MAAO,mCACZ,SAAQ,iCAAiC,CAAA;AAGgB,IAAA,uBAAuB;AAEvE,IAAA,UAAU;IACnB,WAAW,GAAG,WAAW;AAEzB,IAAA,gBAAgB,GAAW,EAAE,CAAC;AAC9B,IAAA,mBAAmB,GAAW,EAAE,CAAC;IACzB,QAAQ,GAAG,KAAK;AAExB,IAAA,WAAA,CACC,aAAgC,EAChC,aAAgC,EAChC,QAA8B,EAC9B,QAAmB,EACnB,YAAyC,EACzC,aAAsC,EACtC,YAAsC,EACtC,kBAAgD,EAChD,eAAoC,EAAA;AAEpC,QAAA,KAAK,CACJ,aAAa,EACb,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,eAAe,CACf;;IAGF,QAAQ,GAAA;QACP,IAAI,CAAC,oBAAoB,EAAE;;AAG5B,IAAA,eAAe;AAEf,IAAA,aAAa,CAAC,KAA8B,EAAA;AAC3C,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,QAAA,KAAK,CAAC,cAAc,EAAE,CAAC;;AAKxB,IAAA,WAAW,CAAC,KAA8B,EAAA;AACzC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,OAAO;AACX,YAAA,IAAI,KAAK,YAAY,UAAU,EAAE;AAChC,gBAAA,OAAO,GAAG,KAAK,CAAC,OAAO;;iBACjB;gBACN,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO;;AAGnC,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,GAAG;YAC3F,MAAM,eAAe,GAAG,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,YAAY;AAC/E,YAAA,MAAM,YAAY,GAAG,OAAO,GAAG,YAAY;AAC3C,YAAA,MAAM,eAAe,GAAG,eAAe,GAAG,YAAY;;YAGtD,IAAI,YAAY,GAAG,EAAE,IAAI,eAAe,GAAG,EAAE,EAAE;AAC9C,gBAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,YAAY,GAAG,eAAe,IAAI,GAAG,GAAG,GAAG;AACpE,gBAAA,IAAI,CAAC,mBAAmB,GAAG,CAAC,eAAe,GAAG,eAAe,IAAI,GAAG,GAAG,GAAG;;;;IAQ7E,SAAS,GAAA;AACR,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;;IAGtB,WAAW,GAAA;QACV,IAAI,CAAC,kBAAkB,EAAE;;wGAhFd,mCAAmC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA7H,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAnB,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAqB,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAqD,2BAAA,EAAA,EAAA,EAAA,KAAA,EAAA0C,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,4BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mCAAmC,8fClBhD,u8HA2FA,EAAA,MAAA,EAAA,CAAA,42DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA1F,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAoH,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,2BAAA,EAAA,uBAAA,EAAA,4BAAA,EAAA,wBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,2BAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mCAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,6BAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDzEa,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAN/C,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2CAA2C,cAGzC,KAAK,EAAA,QAAA,EAAA,u8HAAA,EAAA,MAAA,EAAA,CAAA,42DAAA,CAAA,EAAA;6VAMwC,uBAAuB,EAAA,CAAA;sBAA/E,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,yBAAyB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;gBAE9C,UAAU,EAAA,CAAA;sBAAlB;gBA4CD,WAAW,EAAA,CAAA;sBAFV,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC;;sBAC3C,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC;gBA0B5C,SAAS,EAAA,CAAA;sBAHR,YAAY;uBAAC,gBAAgB;;sBAC7B,YAAY;uBAAC,iBAAiB;;sBAC9B,YAAY;uBAAC,oBAAoB;;;AE3E7B,MAAO,kCACZ,SAAQ,kCAAkC,CAAA;IAGjC,WAAW,GAAW,IAAI;IAE1B,mBAAmB,GAAY,KAAK;AAE7C,IAAA,WAAA,CACC,aAAgC,EAChC,aAAgC,EAChC,QAA8B,EAC9B,QAAmB,EACnB,YAAyC,EACzC,aAAsC,EACtC,YAAsC,EACtC,kBAAgD,EAChD,eAAoC,EAAA;AAEpC,QAAA,KAAK,CACJ,aAAa,EACb,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,eAAe,CACf;;IAGF,QAAQ,GAAA;QACP,IAAI,CAAC,qBAAqB,EAAE;;IAG7B,WAAW,GAAA;QACV,IAAI,CAAC,kBAAkB,EAAE;;wGArCd,kCAAkC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAjI,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAnB,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAqB,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAqD,2BAAA,EAAA,EAAA,EAAA,KAAA,EAAA0C,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,4BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kCAAkC,+MCjB/C,m7EAkDA,EAAA,MAAA,EAAA,CAAA,6PAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA8B,+BAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,2BAAA,EAAA,uBAAA,EAAA,4BAAA,EAAA,wBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,2BAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,4BAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,wBAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDjCa,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAN9C,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yCAAyC,cAGvC,KAAK,EAAA,QAAA,EAAA,m7EAAA,EAAA,MAAA,EAAA,CAAA,6PAAA,CAAA,EAAA;6VAMR,WAAW,EAAA,CAAA;sBAAnB;gBAEQ,mBAAmB,EAAA,CAAA;sBAA3B;;;AENI,MAAO,iCAAkC,SAAQ,kCAAkC,CAAA;IAC/E,WAAW,GAAW,IAAI;IAE1B,mBAAmB,GAAY,KAAK;AAE7C,IAAA,WAAA,CACC,aAAgC,EAChC,aAAgC,EAChC,QAA8B,EAC9B,QAAmB,EACnB,YAAyC,EACzC,aAAsC,EACtC,YAAsC,EACtC,kBAAgD,EAChD,eAAoC,EAAA;AAEpC,QAAA,KAAK,CACJ,aAAa,EACb,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,eAAe,CACf;;IAGF,QAAQ,GAAA;QACP,IAAI,CAAC,qBAAqB,EAAE;;IAG7B,WAAW,GAAA;QACV,IAAI,CAAC,kBAAkB,EAAE;;wGAlCd,iCAAiC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAApI,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAnB,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAqB,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAqD,2BAAA,EAAA,EAAA,EAAA,KAAA,EAAA0C,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,4BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iCAAiC,8MCjB9C,00GAqEA,EAAA,MAAA,EAAA,CAAA,mnBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiC,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,+BAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,2BAAA,EAAA,uBAAA,EAAA,4BAAA,EAAA,wBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,2BAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAU,+BAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,4BAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,wBAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDpDa,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAN7C,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wCAAwC,cAGtC,KAAK,EAAA,QAAA,EAAA,00GAAA,EAAA,MAAA,EAAA,CAAA,mnBAAA,CAAA,EAAA;6VAGR,WAAW,EAAA,CAAA;sBAAnB;gBAEQ,mBAAmB,EAAA,CAAA;sBAA3B;;;MEmCW,2BAA2B,CAAA;AAmG9B,IAAA,mBAAA;AACA,IAAA,qBAAA;AACA,IAAA,cAAA;AACA,IAAA,yBAAA;AACA,IAAA,eAAA;AACA,IAAA,cAAA;AACA,IAAA,gBAAA;AACA,IAAA,OAAA;AACA,IAAA,mBAAA;AACA,IAAA,iBAAA;AA3G6C,IAAA,qBAAqB;AAChB,IAAA,0BAA0B;AAC/B,IAAA,qBAAqB;AACf,IAAA,2BAA2B;AAEvF,IAAA,kCAAkC;AAElC;;;;;;AAMG;AACM,IAAA,UAAU,GAAgB,WAAW,CAAC,SAAS;AAExD;;;AAGG;AACM,IAAA,gBAAgB;AAEzB;;AAEG;IACM,oBAAoB,GAAiC,IAAI;AAElE;;AAEG;AACM,IAAA,oBAAoB;AAE7B;;AAEG;IACM,oBAAoB,GAAY,KAAK;AAE9C;;AAEG;AACM,IAAA,uBAAuB;AAEhC;;AAEG;IACM,WAAW,GAAW,IAAI;AAEnC;;AAEG;IACM,mBAAmB,GAAY,KAAK;AAE7C;;AAEG;AACM,IAAA,YAAY,GAAkB,aAAa,CAAC,GAAG;AAExD;;AAEG;IACM,sBAAsB,GAAY,KAAK;AAEhD;;;AAGG;IACM,wBAAwB,GAAY,IAAI;AAEjD;;AAEG;AACO,IAAA,sCAAsC,GAAG,IAAI,YAAY,EAAoC;AAEvG;;AAEG;AACO,IAAA,oBAAoB,GAAG,IAAI,YAAY,EAA+B;AAEhF;;AAEG;AACO,IAAA,sBAAsB,GAAG,IAAI,YAAY,EAAoB;AAEvE;;AAEG;AACO,IAAA,sBAAsB,GAAG,IAAI,YAAY,EAAe;;IAGlE,gBAAgB,GAAG,iBAAiB;IACpC,oBAAoB,GAAG,qBAAqB;IAC5C,WAAW,GAAG,WAAW;AACzB,IAAA,YAAY;;AAGJ,IAAA,YAAY,GAAG,IAAI,OAAO,EAAE;AAEpC,IAAA,WAAA,CACS,mBAAuC,EACvC,qBAA+C,EAC/C,cAAiC,EACjC,yBAAuD,EACvD,eAA+B,EAC/B,cAAiC,EACjC,gBAAqC,EACrC,OAAe,EACf,mBAA2C,EAC3C,iBAAuC,EAAA;QATvC,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;QACnB,IAAqB,CAAA,qBAAA,GAArB,qBAAqB;QACrB,IAAc,CAAA,cAAA,GAAd,cAAc;QACd,IAAyB,CAAA,yBAAA,GAAzB,yBAAyB;QACzB,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAc,CAAA,cAAA,GAAd,cAAc;QACd,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;QACnB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;;IAG1B,QAAQ,GAAA;;AAEP,QAAA,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI;YAAE,IAAI,CAAC,yBAAyB,EAAE;;QAGvE,IAAI,CAAC,IAAI,CAAC,gBAAgB;YAAE,IAAI,CAAC,qBAAqB,EAAE;;QAGxD,IAAI,IAAI,CAAC,oBAAoB;YAAE,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,oBAAoB,CAAC;;QAG5F,IAAI,CAAC,0BAA0B,EAAE;;QAGjC,IAAI,CAAC,gCAAgC,EAAE;;QAGvC,IAAI,CAAC,gBAAgB,CAAC;AACpB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC;AACjC,aAAA,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;AAG3D,QAAA,IAAI,CAAC,mBAAmB,CAAC,+BAA+B,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;YAC5G,IAAI,CAAC,IAAI,EAAE,UAAU;gBAAE;AACvB,YAAA,IAAI,CAAC,sCAAsC,CAAC,IAAI,CAAC,IAAI,CAAC;AACvD,SAAC,CAAC;QAEF,IAAI,CAAC,cAAc,CAAC;AAClB,aAAA,IAAI,CACJ,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,EAC5B,MAAM,CACL,mBAAmB,IAClB,mBAAmB,IAAI,SAAS;YAChC,mBAAmB,CAAC,OAAO,IAAI,SAAS;AACxC,YAAA,mBAAmB,CAAC,OAAO,CAAC,iBAAiB,IAAI,SAAS,CAC3D;aAED,SAAS,CAAC,mBAAmB,IAAG;AAChC,YAAA,IACC,CAAC,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE;AAC1C,gBAAA,CAAC,IAAI,CAAC,cAAc,CAAC,wBAAwB,EAAE;AAC/C,gBAAA,IAAI,CAAC,cAAc,CAAC,oBAAoB,EAAE;AAC1C,gBAAA,IAAI,CAAC,gBAAgB,IAAI,iBAAiB,CAAC,MAAM;gBACjD,CAAC,IAAI,CAAC,oBAAoB;gBAC1B,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,KAAK,IAAI,wBAAwB,CAAC,IAAI;gBACtF,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,KAAK,IAAI,wBAAwB,CAAC,OAAO,EACxF;AACD,gBAAA,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC;AACxC,oBAAA,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc;AACrC,oBAAA,QAAQ,EAAE,aAAa;oBACvB,SAAS,EAAE,MAAM,CAAC,0BAA0B;AAC5C,iBAAA,CAAC;gBACF,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,0BAA0B,CAAC;;AAG3E,YAAA,IAAI,IAAI,CAAC,cAAc,CAAC,kBAAkB;AAAE,gBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,mBAAmB,CAAC;AAClG,SAAC,CAAC;AAEH,QAAA,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,IAAG;AACjG,YAAA,IAAI,CAAC,cAAc;gBAAE;AACrB,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,cAAc,CAAC;AACjD,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,yBAAyB,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;AAChG,YAAA,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC;AACzC,SAAC,CAAC;;IAGH,eAAe,GAAA;;QAEd,IAAI,CAAC,wBAAwB,EAAE;;AAGhC,IAAA,WAAW,CAAC,OAAsB,EAAA;AACjC,QAAA,IAAI,sBAAsB,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,WAAW,EAAE;YACtF,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,oBAAoB,CAAC;;AAG9D,QAAA,IAAI,sBAAsB,IAAI,OAAO,EAAE;AACtC,YAAA,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc;AACvC,gBAAA,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC;AACxC,oBAAA,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc;oBACrC,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;AAC3B,iBAAA,CAAC;;AAGxB,QAAA,IAAI,0BAA0B,IAAI,OAAO,EAAE;AAC1C,YAAA,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc;AACvC,gBAAA,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC;AACxC,oBAAA,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc;oBACrC,wBAAwB,EAAE,IAAI,CAAC,wBAAwB;AACnC,iBAAA,CAAC;;;AAIzB;;AAEG;IACK,wBAAwB,GAAA;;QAE/B,IAAI,IAAI,CAAC,qBAAqB;YAC7B,IAAI,CAAC,qBAAqB,CAAC,iCAAiC,CAAC,IAAI,CAAC,qBAAqB,CAAC;;QAGzF,IAAI,IAAI,CAAC,0BAA0B;YAClC,IAAI,CAAC,qBAAqB,CAAC,sCAAsC,CAAC,IAAI,CAAC,0BAA0B,CAAC;;QAGnG,IAAI,IAAI,CAAC,qBAAqB;YAC7B,IAAI,CAAC,qBAAqB,CAAC,iCAAiC,CAAC,IAAI,CAAC,qBAAqB,CAAC;;QAGzF,IAAI,IAAI,CAAC,2BAA2B;YACnC,IAAI,CAAC,qBAAqB,CAAC,uCAAuC,CAAC,IAAI,CAAC,2BAA2B,CAAC;;QAGrG,IAAI,IAAI,CAAC,kCAAkC;YAC1C,IAAI,CAAC,qBAAqB,CAAC,8CAA8C,CACxE,IAAI,CAAC,kCAAkC,CACvC;;QAGF,IAAI,IAAI,CAAC,uBAAuB;YAC/B,IAAI,CAAC,qBAAqB,CAAC,8BAA8B,CAAC,IAAI,CAAC,uBAAuB,CAAC;;AAGzF;;AAEG;IACK,yBAAyB,GAAA;AAChC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;AACtD,YAAA,WAAW,CAAC,OAAO;AACnB,YAAA,WAAW,CAAC,MAAM;AAClB,YAAA,WAAW,CAAC,GAAG;AACf,YAAA,WAAW,CAAC,KAAK;AACjB,YAAA,WAAW,CAAC,MAAM;AAClB,YAAA,WAAW,CAAC,eAAe;AAC3B,YAAA,WAAW,CAAC,MAAM;AAClB,YAAA,WAAW,CAAC,KAAK;AACjB,YAAA,WAAW,CAAC,MAAM;AAClB,YAAA,WAAW,CAAC,eAAe;AAC3B,YAAA,WAAW,CAAC,gBAAgB;AAC5B,YAAA,WAAW,CAAC,cAAc;AAC1B,SAAA,CAAC;QAEF;AACE,aAAA,IAAI,CACJ,GAAG,CAAC,MAAM,IAAG;AACZ,YAAA,IAAI,MAAM,CAAC,OAAO,EAAE;;AAEnB,gBAAA,IACC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC;AACnC,oBAAA,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC;oBACrC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,EACrC;oBACD,OAAO,qBAAqB,CAAC,OAAO;;;AAGrC,gBAAA,IACC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC;AACtC,oBAAA,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,eAAe,CAAC;oBAC/C,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,EACrC;oBACD,OAAO,qBAAqB,CAAC,MAAM;;;;oBAG/B,OAAO,qBAAqB,CAAC,MAAM;;AAEzC,YAAA,OAAO,IAAI;SACX,CAAC,EAEF,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC;AAE5B,aAAA,SAAS,CAAC,CAAC,MAAoC,KAAI;AACnD,YAAA,IAAI,CAAC,oBAAoB,GAAG,MAAM;AAClC,YAAA,IAAI,MAAM;AACT,gBAAA,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,CAAC;AAC9C,oBAAA,IAAI,EAAE,MAAM;AACZ,iBAAA,CAAC;AACJ,SAAC,CAAC;;AAGJ;;AAEG;IACK,qBAAqB,GAAA;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,WAAW;AACxD,QAAA,IAAI,CAAC,MAAM;YAAE;AAEb,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC;AACnC,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC;AACzC,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC;AACvC,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC;AACzC,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC;AACrC,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC;AACrC,QAAA,MAAM,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACzD,QAAA,MAAM,uBAAuB,GAAG,MAAM,CAAC,yBAAyB,CAAC;AACjE,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC;AAE7C,QAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ,IAAI,aAAa;QACjD,IAAI,QAAQ,KAAK,kBAAkB;AAAE,YAAA,IAAI,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,SAAS;AACxF,QAAA,IAAI,SAAS;;AAEZ,YAAA,IAAI,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,QAAQ;AAEnD,QAAA,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC;AACxC,YAAA,QAAQ,EAAE,QAAQ,KAAK,kBAAkB,GAAG,iBAAiB,CAAC,eAAe,GAAG,IAAI,CAAC,gBAAgB;AACrG,YAAA,UAAU,EACT,CAAC,CAAC,WAAW,IAAI,WAAW,IAAI,MAAM,MAAM,CAAC,SAAS,IAAI,SAAS,KAAK,MAAM,CAAC,0BAA0B,CAAC;AAC3G,YAAA,eAAe,EAAE,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;AACzD,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,gBAAgB,EAAE,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;AAC5D,YAAA,SAAS,EAAE,SAAS;YACpB,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;YAC/C,wBAAwB,EAAE,IAAI,CAAC,wBAAwB;YACvD,YAAY,EAAE,IAAI,CAAC,YAAY;AAC/B,YAAA,mBAAmB,EAAE,mBAAmB;AACxC,YAAA,uBAAuB,EAAE,uBAAuB;YAChD,aAAa,EAAE,aAAa,KAAK,MAAM;AACnB,SAAA,CAAC;AAEtB,QAAA,IAAI,SAAS;YAAE,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;QACjE,IAAI,aAAa,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa;YACpE,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;QAEjD,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;AAC/G,YAAA,IAAI,CAAC,IAAI;gBAAE;AAEX,YAAA,IAAI,aAAa,GAA2B;gBAC3C,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,WAAW,EAAE,IAAI,CAAC,UAAU,GAAG,MAAM,GAAG,MAAM;gBAC9C,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG;gBAC/C,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG;gBACjD,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;gBAC7C,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;gBACrD,aAAa,EAAE,IAAI,CAAC,aAAa,GAAG,MAAM,GAAG,OAAO;aACpD;YAED,IAAI,IAAI,CAAC,QAAQ,IAAI,aAAa,IAAI,IAAI,CAAC,QAAQ,IAAI,kBAAkB;AACxE,gBAAA,IAAI,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,SAAS;AAC/C,iBAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,YAAY;AAAE,gBAAA,IAAI,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,QAAQ;;AACrF,gBAAA,IAAI,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,MAAM;;YAGrD,IAAI,IAAI,CAAC,SAAS;AACjB,gBAAA,aAAa,GAAG;AACf,oBAAA,GAAG,aAAa;oBAChB,SAAS,EAAE,IAAI,CAAC,SAAS;iBACzB;;YAEF,IAAI,IAAI,CAAC,gBAAgB;AACxB,gBAAA,aAAa,GAAG;AACf,oBAAA,GAAG,aAAa;AAChB,oBAAA,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC;iBAC1C;;AAEF,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;gBACzB,UAAU,EAAE,IAAI,CAAC,eAAe;AAChC,gBAAA,WAAW,EAAE,aAAa;AAC1B,gBAAA,mBAAmB,EAAE,OAAO;AAC5B,aAAA,CAAC;AACH,SAAC,CAAC;;IAGK,0BAA0B,GAAA;QACjC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAG;AAC9G,YAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC;AACnC,YAAA,MAAM,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC;AACzC,YAAA,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC;AACvC,YAAA,MAAM,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC;AACzC,YAAA,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC;AACrC,YAAA,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC;AACrC,YAAA,MAAM,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACzD,YAAA,MAAM,uBAAuB,GAAG,MAAM,CAAC,yBAAyB,CAAC;AACjE,YAAA,MAAM,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC;AAE7C,YAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ,IAAI,aAAa;AACjD,YAAA,IAAI,QAAQ,KAAK,kBAAkB,EAAE;AACpC,gBAAA,IAAI,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,SAAS;;YAEpD,IAAI,SAAS,EAAE;AACd,gBAAA,IAAI,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,QAAQ;;;YAInD,IACC,EACC,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,QAAQ;AAC3C,iBAAC,QAAQ,KAAK,kBAAkB,GAAG,iBAAiB,CAAC,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC9F,gBAAA,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,UAAU;AAC7C,qBAAC,CAAC,CAAC,WAAW,IAAI,WAAW,IAAI,MAAM;yBACrC,CAAC,SAAS,IAAI,SAAS,KAAK,MAAM,CAAC,0BAA0B,CAAC,CAAC;gBAClE,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,eAAe,KAAK,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjG,gBAAA,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,SAAS,IAAI,SAAS;gBAC1D,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,gBAAgB,KAAK,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpG,gBAAA,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,SAAS,IAAI,SAAS;gBAC1D,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,oBAAoB,IAAI,IAAI,CAAC,oBAAoB;gBACrF,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,wBAAwB,IAAI,IAAI,CAAC,wBAAwB;gBAC7F,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,YAAY,IAAI,IAAI,CAAC,YAAY;AACrE,gBAAA,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,mBAAmB,IAAI,mBAAmB;AAC9E,gBAAA,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,uBAAuB,IAAI,uBAAuB;gBACtF,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,aAAa,KAAK,aAAa,KAAK,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC,CAC9F;AAED,gBAAA,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC;AACxC,oBAAA,QAAQ,EAAE,QAAQ,KAAK,kBAAkB,GAAG,iBAAiB,CAAC,eAAe,GAAG,IAAI,CAAC,gBAAgB;AACrG,oBAAA,UAAU,EACT,CAAC,CAAC,WAAW,IAAI,WAAW,IAAI,MAAM,MAAM,CAAC,SAAS,IAAI,SAAS,KAAK,MAAM,CAAC,0BAA0B,CAAC;AAC3G,oBAAA,eAAe,EAAE,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;AACzD,oBAAA,SAAS,EAAE,SAAS;AACpB,oBAAA,gBAAgB,EAAE,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;AAC5D,oBAAA,SAAS,EAAE,SAAS;oBACpB,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;oBAC/C,wBAAwB,EAAE,IAAI,CAAC,wBAAwB;oBACvD,YAAY,EAAE,IAAI,CAAC,YAAY;AAC/B,oBAAA,mBAAmB,EAAE,mBAAmB;AACxC,oBAAA,uBAAuB,EAAE,uBAAuB;oBAChD,aAAa,EAAE,aAAa,KAAK,MAAM;AACnB,iBAAA,CAAC;YACvB,IAAI,SAAS,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,IAAI,SAAS;gBAC9D,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;iBAC9C,IAAI,SAAS,KAAK,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,IAAI,IAAI;gBACvE,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9C,YAAA,IAAI,CAAC,mBAAmB,IAAI,mBAAmB,IAAI,MAAM,EAAE;gBAC1D,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC;gBACxD,IAAI,CAAC,cAAc,CAAC,sCAAsC,CAAC,IAAI,CAAC,IAAI,CAAC;;YAEtE,IAAI,aAAa,KAAK,MAAM;gBAAE,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,KAAK,MAAM,CAAC;AACnG,SAAC,CAAC;;IAGK,gCAAgC,GAAA;AACvC,QAAA,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;AACzF,YAAA,IAAI,CAAC,YAAY,GAAG,GAAG;AACxB,SAAC,CAAC;;IAEH,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;;wGAncjB,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA9J,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA+J,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAnI,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAoI,4BAAA,EAAA,EAAA,EAAA,KAAA,EAAA9J,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA+J,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAhK,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAiK,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,EAZ5B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,EAAA,OAAA,EAAA,EAAA,sCAAA,EAAA,wCAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,EAAA,SAAA,EAAA;YACV,mBAAmB;YACnB,iBAAiB;YACjB,iBAAiB;YACjB,wBAAwB;YACxB,oBAAoB;YACpB,2BAA2B;YAC3B,uBAAuB;YACvB,sBAAsB;AACtB,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,4BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,4BAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,6BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,6BAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oCAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,oCAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpDF,g+KA6HA,EAAA,MAAA,EAAA,CAAA,6p+FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA3G,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA2G,qCAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oCAAA,EAAA,QAAA,EAAA,4CAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oCAAA,EAAA,QAAA,EAAA,4CAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mCAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDtEa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAhBvC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAGrB,SAAA,EAAA;wBACV,mBAAmB;wBACnB,iBAAiB;wBACjB,iBAAiB;wBACjB,wBAAwB;wBACxB,oBAAoB;wBACpB,2BAA2B;wBAC3B,uBAAuB;wBACvB,sBAAsB;AACtB,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,g+KAAA,EAAA,MAAA,EAAA,CAAA,6p+FAAA,CAAA,EAAA;sXAGqC,qBAAqB,EAAA,CAAA;sBAA1E,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,uBAAuB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBACO,0BAA0B,EAAA,CAAA;sBAApF,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,4BAA4B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBACH,qBAAqB,EAAA,CAAA;sBAA1E,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,uBAAuB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBACQ,2BAA2B,EAAA,CAAA;sBAAtF,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,6BAA6B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAE1D,kCAAkC,EAAA,CAAA;sBADjC,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,oCAAoC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAUxD,UAAU,EAAA,CAAA;sBAAlB;gBAMQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAKQ,oBAAoB,EAAA,CAAA;sBAA5B;gBAKQ,oBAAoB,EAAA,CAAA;sBAA5B;gBAKQ,oBAAoB,EAAA,CAAA;sBAA5B;gBAKQ,uBAAuB,EAAA,CAAA;sBAA/B;gBAKQ,WAAW,EAAA,CAAA;sBAAnB;gBAKQ,mBAAmB,EAAA,CAAA;sBAA3B;gBAKQ,YAAY,EAAA,CAAA;sBAApB;gBAKQ,sBAAsB,EAAA,CAAA;sBAA9B;gBAMQ,wBAAwB,EAAA,CAAA;sBAAhC;gBAKS,sCAAsC,EAAA,CAAA;sBAA/C;gBAKS,oBAAoB,EAAA,CAAA;sBAA7B;gBAKS,sBAAsB,EAAA,CAAA;sBAA/B;gBAKS,sBAAsB,EAAA,CAAA;sBAA/B;;;MEpIW,oBAAoB,CAAA;wGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EALjB,YAAA,EAAA,CAAA,cAAc,CAGnB,EAAA,OAAA,EAAA,CAAA,YAAY,aAFZ,cAAc,CAAA,EAAA,CAAA;AAIZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EAHrB,SAAA,EAAA,CAAC,WAAW,CAAC,YACd,YAAY,CAAA,EAAA,CAAA;;4FAEV,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,YAAY,EAAE,CAAC,cAAc,CAAC;oBAC9B,OAAO,EAAE,CAAC,cAAc,CAAC;oBACzB,SAAS,EAAE,CAAC,WAAW,CAAC;oBACxB,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,iBAAA;;;MCEY,0BAA0B,CAAA;wGAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;yGAA1B,0BAA0B,EAAA,YAAA,EAAA,CAJvB,oCAAoC,EAAE,2BAA2B,CAAA,EAAA,OAAA,EAAA,CACtE,YAAY,EAAE,oBAAoB,CAAA,EAAA,OAAA,EAAA,CAClC,oCAAoC,EAAE,2BAA2B,CAAA,EAAA,CAAA;yGAE/D,0BAA0B,EAAA,OAAA,EAAA,CAH5B,YAAY,EAAE,oBAAoB,CAAA,EAAA,CAAA;;4FAGhC,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,YAAY,EAAE,CAAC,oCAAoC,EAAE,2BAA2B,CAAC;AACjF,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,oBAAoB,CAAC;AAC7C,oBAAA,OAAO,EAAE,CAAC,oCAAoC,EAAE,2BAA2B,CAAC;AAC5E,iBAAA;;;MCAY,mBAAmB,CAAA;wGAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,EALhB,YAAA,EAAA,CAAA,aAAa,CAGlB,EAAA,OAAA,EAAA,CAAA,YAAY,aAFZ,aAAa,CAAA,EAAA,CAAA;AAIX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,EAHpB,SAAA,EAAA,CAAC,WAAW,CAAC,YACd,YAAY,CAAA,EAAA,CAAA;;4FAEV,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,YAAY,EAAE,CAAC,aAAa,CAAC;oBAC7B,OAAO,EAAE,CAAC,aAAa,CAAC;oBACxB,SAAS,EAAE,CAAC,WAAW,CAAC;oBACxB,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,iBAAA;;;MCCY,uBAAuB,CAAA;wGAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,EALpB,YAAA,EAAA,CAAA,iBAAiB,CAGtB,EAAA,OAAA,EAAA,CAAA,YAAY,aAFZ,iBAAiB,CAAA,EAAA,CAAA;AAIf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,EAHxB,SAAA,EAAA,CAAC,WAAW,CAAC,YACd,YAAY,CAAA,EAAA,CAAA;;4FAEV,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,YAAY,EAAE,CAAC,iBAAiB,CAAC;oBACjC,OAAO,EAAE,CAAC,iBAAiB,CAAC;oBAC5B,SAAS,EAAE,CAAC,WAAW,CAAC;oBACxB,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,iBAAA;;;MCGY,0BAA0B,CAAA;wGAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;yGAA1B,0BAA0B,EAAA,YAAA,EAAA,CAJvB,oCAAoC,EAAE,6BAA6B,CAAA,EAAA,OAAA,EAAA,CACxE,YAAY,EAAE,oBAAoB,CAAA,EAAA,OAAA,EAAA,CAClC,oCAAoC,EAAE,6BAA6B,CAAA,EAAA,CAAA;yGAEjE,0BAA0B,EAAA,OAAA,EAAA,CAH5B,YAAY,EAAE,oBAAoB,CAAA,EAAA,CAAA;;4FAGhC,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,YAAY,EAAE,CAAC,oCAAoC,EAAE,6BAA6B,CAAC;AACnF,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,oBAAoB,CAAC;AAC7C,oBAAA,OAAO,EAAE,CAAC,oCAAoC,EAAE,6BAA6B,CAAC;AAC9E,iBAAA;;;MCHY,wBAAwB,CAAA;AACpC,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;wGAHI,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,8ECRrC,6BACA,EAAA,MAAA,EAAA,CAAA,4BAAA,CAAA,EAAA,CAAA;;4FDOa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,cAGjB,KAAK,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,4BAAA,CAAA,EAAA;;;MEEL,uBAAuB,CAAA;AACnC,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;wGAHI,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,6ECRpC,4bAaA,EAAA,MAAA,EAAA,CAAA,ohBAAA,CAAA,EAAA,CAAA;;4FDLa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,cAGhB,KAAK,EAAA,QAAA,EAAA,4bAAA,EAAA,MAAA,EAAA,CAAA,ohBAAA,CAAA,EAAA;;;MEIL,kBAAkB,CAAA;wGAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EALf,YAAA,EAAA,CAAA,YAAY,CAGjB,EAAA,OAAA,EAAA,CAAA,YAAY,aAFZ,YAAY,CAAA,EAAA,CAAA;AAIV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EAHnB,SAAA,EAAA,CAAC,WAAW,CAAC,YACd,YAAY,CAAA,EAAA,CAAA;;4FAEV,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,YAAY,EAAE,CAAC,YAAY,CAAC;oBAC5B,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,SAAS,EAAE,CAAC,WAAW,CAAC;oBACxB,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,iBAAA;;;MCEY,6BAA6B,CAAA;wGAA7B,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;yGAA7B,6BAA6B,EAAA,YAAA,EAAA,CAH1B,gCAAgC,EAAE,gCAAgC,CAAA,EAAA,OAAA,EAAA,CACvE,YAAY,EAAE,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAF9B,gCAAgC,EAAE,gCAAgC,CAAA,EAAA,CAAA;yGAIhE,6BAA6B,EAAA,OAAA,EAAA,CAF/B,YAAY,EAAE,gBAAgB,CAAA,EAAA,CAAA;;4FAE5B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBALzC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,OAAO,EAAE,CAAC,gCAAgC,EAAE,gCAAgC,CAAC;AAC7E,oBAAA,YAAY,EAAE,CAAC,gCAAgC,EAAE,gCAAgC,CAAC;AAClF,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,gBAAgB,CAAC;AACzC,iBAAA;;;MCAY,sBAAsB,CAAA;wGAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,EALnB,YAAA,EAAA,CAAA,sBAAsB,CAG3B,EAAA,OAAA,EAAA,CAAA,YAAY,aAFZ,sBAAsB,CAAA,EAAA,CAAA;AAIpB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,EAHvB,SAAA,EAAA,CAAC,WAAW,CAAC,YACd,YAAY,CAAA,EAAA,CAAA;;4FAEV,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,YAAY,EAAE,CAAC,sBAAsB,CAAC;oBACtC,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,SAAS,EAAE,CAAC,WAAW,CAAC;oBACxB,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,iBAAA;;;MCCY,wBAAwB,CAAA;wGAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,EALrB,YAAA,EAAA,CAAA,kBAAkB,CAGvB,EAAA,OAAA,EAAA,CAAA,YAAY,aAFZ,kBAAkB,CAAA,EAAA,CAAA;AAIhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,EAHzB,SAAA,EAAA,CAAC,WAAW,CAAC,YACd,YAAY,CAAA,EAAA,CAAA;;4FAEV,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,YAAY,EAAE,CAAC,kBAAkB,CAAC;oBAClC,OAAO,EAAE,CAAC,kBAAkB,CAAC;oBAC7B,SAAS,EAAE,CAAC,WAAW,CAAC;oBACxB,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,iBAAA;;;MCDY,wBAAwB,CAAA;AACpC,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;wGAHI,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,+ECRrC,uUASA,EAAA,MAAA,EAAA,CAAA,6qTAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAxK,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDDa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,cAGlB,KAAK,EAAA,QAAA,EAAA,uUAAA,EAAA,MAAA,EAAA,CAAA,6qTAAA,CAAA,EAAA;;;MEEL,+BAA+B,CAAA;AAC3C,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;wGAHI,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA/B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,uFCR5C,6BACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDOa,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAN3C,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,cAG1B,KAAK,EAAA,QAAA,EAAA,6BAAA,EAAA;;;ME0PL,wBAAwB,CAAA;wGAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,iBAvInC,2BAA2B;YAC3B,kBAAkB;YAClB,qBAAqB;YACrB,wBAAwB;YACxB,+BAA+B;YAC/B,6BAA6B;YAC7B,qCAAqC;YACrC,6BAA6B;YAC7B,wBAAwB;YACxB,kCAAkC;YAClC,uBAAuB;YACvB,0BAA0B;YAC1B,+BAA+B;YAC/B,yBAAyB;YACzB,+BAA+B;YAC/B,oBAAoB;YACpB,2BAA2B;YAC3B,2BAA2B;YAC3B,yBAAyB;YACzB,0BAA0B;YAC1B,yBAAyB;YACzB,0BAA0B;YAC1B,+BAA+B;YAC/B,8BAA8B;YAC9B,kBAAkB;YAClB,wBAAwB;YACxB,mCAAmC;YACnC,+BAA+B;YAC/B,6BAA6B;YAC7B,4BAA4B;YAC5B,mCAAmC;YACnC,qCAAqC;YACrC,oCAAoC;YACpC,oCAAoC;YACpC,mCAAmC;YACnC,kCAAkC;YAClC,iCAAiC;YACjC,2BAA2B;YAC3B,uCAAuC;YACvC,+BAA+B;YAC/B,8BAA8B;YAC9B,4BAA4B;YAC5B,iCAAiC;YACjC,yBAAyB;YACzB,6BAA6B;YAC7B,iCAAiC;YACjC,8BAA8B;YAC9B,qBAAqB;YACrB,2BAA2B;YAC3B,sCAAsC;YACtC,6BAA6B;YAC7B,gCAAgC;YAChC,6BAA6B;YAC7B,2BAA2B;YAC3B,sCAAsC;YACtC,gCAAgC;YAChC,wBAAwB;YACxB,uBAAuB;YACvB,sCAAsC;YACtC,2BAA2B;YAC3B,qBAAqB;YACrB,qCAAqC;YACrC,2BAA2B;YAC3B,wBAAwB;YACxB,6BAA6B;YAC7B,yBAAyB;YACzB,+BAA+B;YAC/B,gCAAgC;AAChC,YAAA,yCAAyC,aAGzC,YAAY;YACZ,aAAa;YACb,uBAAuB;YACvB,WAAW;YACX,kBAAkB;YAClB,mBAAmB;YACnB,gBAAgB;YAChB,wBAAwB;YACxB,cAAc;YACd,aAAa;YACb,cAAc;YACd,eAAe;YACf,eAAe;YACf,eAAe;YACf,cAAc;YACd,gBAAgB;YAChB,iBAAiB;YACjB,iBAAiB;YACjB,kBAAkB;YAClB,oBAAoB;YACpB,mBAAmB;YACnB,kBAAkB;YAClB,sBAAsB;YACtB,uBAAuB;YACvB,0BAA0B;YAC1B,0BAA0B;YAC1B,6BAA6B;YAC7B,oBAAoB;YACpB,gBAAgB;YAChB,eAAe;YACf,iBAAiB;YACjB,oBAAoB;YACpB,eAAe;AACf,YAAA,eAAe,aAGf,2BAA2B;YAC3B,kBAAkB;YAClB,qBAAqB;YACrB,wBAAwB;YACxB,+BAA+B;YAC/B,qCAAqC;YACrC,6BAA6B;YAC7B,6BAA6B;YAC7B,wBAAwB;YACxB,kCAAkC;YAClC,wBAAwB;YACxB,yBAAyB;YACzB,+BAA+B;YAC/B,+BAA+B,CAAA,EAAA,CAAA;AAepB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,EAbzB,SAAA,EAAA;YACV,4BAA4B;YAC5B,yBAAyB;YACzB,8BAA8B;YAC9B,QAAQ;YACR,iBAAiB;YACjB,2BAA2B;YAC3B,oBAAoB;YACpB,iBAAiB;YACjB,mBAAmB;YACnB,sBAAsB;AACtB,SAAA,EAAA,OAAA,EAAA,CA9DA,YAAY;YACZ,aAAa;YACb,uBAAuB;YACvB,WAAW;YACX,kBAAkB;YAClB,mBAAmB;YACnB,gBAAgB;YAChB,wBAAwB;YACxB,cAAc;YACd,aAAa;YACb,cAAc;YACd,eAAe;YACf,eAAe;YACf,eAAe;YACf,cAAc;YACd,gBAAgB;YAChB,iBAAiB;YACjB,iBAAiB;YACjB,kBAAkB;YAClB,oBAAoB;YACpB,mBAAmB;YACnB,kBAAkB;YAClB,sBAAsB;YACtB,uBAAuB;YACvB,0BAA0B;YAC1B,0BAA0B;YAC1B,6BAA6B;YAC7B,oBAAoB;YACpB,gBAAgB;YAChB,eAAe;YACf,iBAAiB;YACjB,oBAAoB;YACpB,eAAe;YACf,eAAe,CAAA,EAAA,CAAA;;4FA+BJ,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAzIpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,YAAY,EAAE;wBACb,2BAA2B;wBAC3B,kBAAkB;wBAClB,qBAAqB;wBACrB,wBAAwB;wBACxB,+BAA+B;wBAC/B,6BAA6B;wBAC7B,qCAAqC;wBACrC,6BAA6B;wBAC7B,wBAAwB;wBACxB,kCAAkC;wBAClC,uBAAuB;wBACvB,0BAA0B;wBAC1B,+BAA+B;wBAC/B,yBAAyB;wBACzB,+BAA+B;wBAC/B,oBAAoB;wBACpB,2BAA2B;wBAC3B,2BAA2B;wBAC3B,yBAAyB;wBACzB,0BAA0B;wBAC1B,yBAAyB;wBACzB,0BAA0B;wBAC1B,+BAA+B;wBAC/B,8BAA8B;wBAC9B,kBAAkB;wBAClB,wBAAwB;wBACxB,mCAAmC;wBACnC,+BAA+B;wBAC/B,6BAA6B;wBAC7B,4BAA4B;wBAC5B,mCAAmC;wBACnC,qCAAqC;wBACrC,oCAAoC;wBACpC,oCAAoC;wBACpC,mCAAmC;wBACnC,kCAAkC;wBAClC,iCAAiC;wBACjC,2BAA2B;wBAC3B,uCAAuC;wBACvC,+BAA+B;wBAC/B,8BAA8B;wBAC9B,4BAA4B;wBAC5B,iCAAiC;wBACjC,yBAAyB;wBACzB,6BAA6B;wBAC7B,iCAAiC;wBACjC,8BAA8B;wBAC9B,qBAAqB;wBACrB,2BAA2B;wBAC3B,sCAAsC;wBACtC,6BAA6B;wBAC7B,gCAAgC;wBAChC,6BAA6B;wBAC7B,2BAA2B;wBAC3B,sCAAsC;wBACtC,gCAAgC;wBAChC,wBAAwB;wBACxB,uBAAuB;wBACvB,sCAAsC;wBACtC,2BAA2B;wBAC3B,qBAAqB;wBACrB,qCAAqC;wBACrC,2BAA2B;wBAC3B,wBAAwB;wBACxB,6BAA6B;wBAC7B,yBAAyB;wBACzB,+BAA+B;wBAC/B,gCAAgC;wBAChC,yCAAyC;AACzC,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACR,YAAY;wBACZ,aAAa;wBACb,uBAAuB;wBACvB,WAAW;wBACX,kBAAkB;wBAClB,mBAAmB;wBACnB,gBAAgB;wBAChB,wBAAwB;wBACxB,cAAc;wBACd,aAAa;wBACb,cAAc;wBACd,eAAe;wBACf,eAAe;wBACf,eAAe;wBACf,cAAc;wBACd,gBAAgB;wBAChB,iBAAiB;wBACjB,iBAAiB;wBACjB,kBAAkB;wBAClB,oBAAoB;wBACpB,mBAAmB;wBACnB,kBAAkB;wBAClB,sBAAsB;wBACtB,uBAAuB;wBACvB,0BAA0B;wBAC1B,0BAA0B;wBAC1B,6BAA6B;wBAC7B,oBAAoB;wBACpB,gBAAgB;wBAChB,eAAe;wBACf,iBAAiB;wBACjB,oBAAoB;wBACpB,eAAe;wBACf,eAAe;AACf,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACR,2BAA2B;wBAC3B,kBAAkB;wBAClB,qBAAqB;wBACrB,wBAAwB;wBACxB,+BAA+B;wBAC/B,qCAAqC;wBACrC,6BAA6B;wBAC7B,6BAA6B;wBAC7B,wBAAwB;wBACxB,kCAAkC;wBAClC,wBAAwB;wBACxB,yBAAyB;wBACzB,+BAA+B;wBAC/B,+BAA+B;AAC/B,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACV,4BAA4B;wBAC5B,yBAAyB;wBACzB,8BAA8B;wBAC9B,QAAQ;wBACR,iBAAiB;wBACjB,2BAA2B;wBAC3B,oBAAoB;wBACpB,iBAAiB;wBACjB,mBAAmB;wBACnB,sBAAsB;AACtB,qBAAA;AACD,iBAAA;;;ACmND;;ACldA;;AAEG;AAEH;;ACJA;;AAEG;;;;"}