@cqa-lib/cqa-ui 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/esm2020/lib/badge/badge.component.mjs +3 -3
  2. package/esm2020/lib/dashboards/coverage-module-card/coverage-module-card.component.mjs +5 -4
  3. package/esm2020/lib/dashboards/failed-test-cases-card/failed-test-cases-card.component.mjs +6 -7
  4. package/esm2020/lib/dashboards/insight-card/insight-card.component.mjs +10 -10
  5. package/fesm2015/cqa-lib-cqa-ui.mjs +15 -15
  6. package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
  7. package/fesm2020/cqa-lib-cqa-ui.mjs +15 -15
  8. package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
  9. package/package.json +1 -1
  10. package/src/assets/fonts/SFUIText-Bold/SF-UI-Text-Bold.eot +0 -0
  11. package/src/assets/fonts/SFUIText-Bold/SF-UI-Text-Bold.otf +0 -0
  12. package/src/assets/fonts/SFUIText-Bold/SF-UI-Text-Bold.svg +14730 -0
  13. package/src/assets/fonts/SFUIText-Bold/SF-UI-Text-Bold.ttf +0 -0
  14. package/src/assets/fonts/SFUIText-Bold/SF-UI-Text-Bold.woff +0 -0
  15. package/src/assets/fonts/SFUIText-Bold/SF-UI-Text-Bold.woff2 +0 -0
  16. package/src/assets/fonts/SFUIText-Light/SF-UI-Text-Light.eot +0 -0
  17. package/src/assets/fonts/SFUIText-Light/SF-UI-Text-Light.otf +0 -0
  18. package/src/assets/fonts/SFUIText-Light/SF-UI-Text-Light.svg +21333 -0
  19. package/src/assets/fonts/SFUIText-Light/SF-UI-Text-Light.ttf +0 -0
  20. package/src/assets/fonts/SFUIText-Light/SF-UI-Text-Light.woff +0 -0
  21. package/src/assets/fonts/SFUIText-Light/SF-UI-Text-Light.woff2 +0 -0
  22. package/src/assets/fonts/SFUIText-Medium/SF-UI-Text-Medium.eot +0 -0
  23. package/src/assets/fonts/SFUIText-Medium/SF-UI-Text-Medium.otf +0 -0
  24. package/src/assets/fonts/SFUIText-Medium/SF-UI-Text-Medium.svg +14584 -0
  25. package/src/assets/fonts/SFUIText-Medium/SF-UI-Text-Medium.ttf +0 -0
  26. package/src/assets/fonts/SFUIText-Medium/SF-UI-Text-Medium.woff +0 -0
  27. package/src/assets/fonts/SFUIText-Medium/SF-UI-Text-Medium.woff2 +0 -0
  28. package/src/assets/fonts/SFUIText-Regular/SF-UI-Text-Regular.eot +0 -0
  29. package/src/assets/fonts/SFUIText-Regular/SF-UI-Text-Regular.otf +0 -0
  30. package/src/assets/fonts/SFUIText-Regular/SF-UI-Text-Regular.svg +17870 -0
  31. package/src/assets/fonts/SFUIText-Regular/SF-UI-Text-Regular.ttf +0 -0
  32. package/src/assets/fonts/SFUIText-Regular/SF-UI-Text-Regular.woff +0 -0
  33. package/src/assets/fonts/SFUIText-Regular/SF-UI-Text-Regular.woff2 +0 -0
  34. package/src/assets/fonts/SFUIText-Semibold/SF-UI-Text-Semibold.eot +0 -0
  35. package/src/assets/fonts/SFUIText-Semibold/SF-UI-Text-Semibold.otf +0 -0
  36. package/src/assets/fonts/SFUIText-Semibold/SF-UI-Text-Semibold.svg +14732 -0
  37. package/src/assets/fonts/SFUIText-Semibold/SF-UI-Text-Semibold.ttf +0 -0
  38. package/src/assets/fonts/SFUIText-Semibold/SF-UI-Text-Semibold.woff +0 -0
  39. package/src/assets/fonts/SFUIText-Semibold/SF-UI-Text-Semibold.woff2 +0 -0
  40. package/styles.css +1 -1
@@ -1,8 +1,8 @@
1
1
  import { Component, Input, Output, EventEmitter } from '@angular/core';
2
2
  import { getMetadataValueStyle as getMetadataColorStyle } from '../../utils/metadata-colors.util';
3
3
  import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/material/icon";
5
- import * as i2 from "../../badge/badge.component";
4
+ import * as i1 from "../../badge/badge.component";
5
+ import * as i2 from "@angular/material/icon";
6
6
  import * as i3 from "../../button/button.component";
7
7
  import * as i4 from "@angular/common";
8
8
  export class InsightCardComponent {
@@ -141,12 +141,12 @@ export class InsightCardComponent {
141
141
  return getMetadataColorStyle(key, value);
142
142
  }
143
143
  getSectionTitleClasses(section) {
144
- const baseClasses = ['cqa-text-sm', 'cqa-font-bold'];
144
+ const baseClasses = ['cqa-text-sm', 'cqa-leading-[17px]', 'cqa-font-semibold'];
145
145
  switch (section.variant) {
146
146
  case 'warning':
147
- return [...baseClasses, 'cqa-text-yellow-800'].join(' ');
147
+ return [...baseClasses, 'cqa-text-[#78350F]'].join(' ');
148
148
  case 'error':
149
- return [...baseClasses, 'cqa-text-red-600'].join(' ');
149
+ return [...baseClasses, 'cqa-text-[#881337]'].join(' ');
150
150
  default:
151
151
  return [...baseClasses, 'cqa-text-ink'].join(' ');
152
152
  }
@@ -154,19 +154,19 @@ export class InsightCardComponent {
154
154
  getSectionIconColor(section) {
155
155
  switch (section.variant) {
156
156
  case 'warning':
157
- return 'cqa-text-yellow-800';
157
+ return 'cqa-text-[#78350F]';
158
158
  case 'error':
159
- return 'cqa-text-red-600';
159
+ return 'cqa-text-[#881337]';
160
160
  default:
161
161
  return 'cqa-text-gray-400';
162
162
  }
163
163
  }
164
164
  }
165
165
  InsightCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: InsightCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
166
- InsightCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: InsightCardComponent, selector: "cqa-insight-card", inputs: { title: "title", description: "description", badges: "badges", metadata: "metadata", prerequisiteSection: "prerequisiteSection", testDataSection: "testDataSection", metadataExpanded: "metadataExpanded", isPrerequisiteMissing: "isPrerequisiteMissing", isTestDataMissing: "isTestDataMissing" }, outputs: { metadataToggle: "metadataToggle", sectionToggle: "sectionToggle", sectionActionClick: "sectionActionClick", onApplySuggestionClick: "onApplySuggestionClick", onAttachPrerequisitesClick: "onAttachPrerequisitesClick", onImportTestDataClick: "onImportTestDataClick" }, ngImport: i0, template: "<div id=\"cqa-ui-root\" style=\"background-color: white; border-radius: 0.5rem; border: 1px solid #E5E7EB; box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-4 cqa-px-[21px] cqa-py-3 cqa-border cqa-border-gray-200 cqa-rounded-2xl\">\n <!-- Section 1: Badges -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\" *ngIf=\"visibleBadges.length > 0\">\n <mat-icon *ngIf=\"isPrerequisiteMissing || isTestDataMissing\"\n class=\"cqa-text-yellow-500 cqa-w-6 cqa-h-6\">warning</mat-icon>\n <div class=\"cqa-flex cqa-flex-wrap cqa-gap-2\">\n <cqa-badge \n *ngFor=\"let badge of visibleBadges\" \n [label]=\"badge.label\"\n [icon]=\"badge.icon\"\n [variant]=\"badge.variant || 'default'\"\n ></cqa-badge>\n </div>\n </div>\n\n <!-- Section 2: Title & Description -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3\">\n <h2 class=\"cqa-font-medium cqa-text-lg cqa-text-title\">\n {{ title }}\n </h2>\n <p class=\"cqa-text-base cqa-font-normal cqa-text-description\">\n {{ description }}\n </p>\n </div>\n\n <!-- Section 3: Metadata Section (always visible) -->\n <div *ngIf=\"metadata\" class=\"cqa-flex cqa-flex-col cqa-gap-4\">\n <div class=\"cqa-bg-surface-default cqa-rounded-xl cqa-border cqa-border-border-light cqa-px-4 cqa-py-3 cqa-border-t-2 cqa-border-t-primary-surface\">\n <div class=\"cqa-flex cqa-flex-wrap cqa-items-center cqa-gap-3\">\n <ng-container *ngFor=\"let item of metadata | keyvalue; let last = last\">\n <div class=\"cqa-flex cqa-items-baseline cqa-gap-2\">\n <span class=\"cqa-text-xs cqa-font-normal cqa-tracking-normal cqa-font-inter cqa-text-metadata-key\">\n {{ item.key }}:\n </span>\n <span \n [ngClass]=\"getMetadataValueClasses(item.key, item.value)\" \n [ngStyle]=\"getMetadataValueStyle(item.key, item.value)\"\n class=\"cqa-font-normal cqa-leading-[18px] cqa-tracking-normal cqa-font-inter cqa-text-sm\">\n {{ getMetadataValue(item.value) }}\n </span>\n </div>\n <div *ngIf=\"!last\" class=\"cqa-h-4 cqa-w-px cqa-bg-gray-200\"></div>\n </ng-container>\n </div>\n </div>\n\n <!-- Section 4: Metadata toggle -->\n <button *ngIf=\"metadata && (isPrerequisiteMissing || isTestDataMissing)\" type=\"button\"\n class=\"cqa-text-sm cqa-text-primary-hover cqa-font-medium cqa-inline-flex cqa-items-center cqa-gap-1 cqa-cursor-pointer cqa-bg-transparent cqa-border-0 cqa-p-0 cqa-hover:cqa-text-primary cqa-transition-colors\"\n (click)=\"toggleMetadata()\">\n <span>{{ metadataExpanded ? 'Hide details' : 'Show details' }}</span>\n <mat-icon class=\"cqa-w-4 cqa-h-4 cqa-text-[16px] cqa-leading-[16px]\">\n {{ metadataExpanded ? 'expand_less' : 'expand_more' }}\n </mat-icon>\n </button>\n\n <!-- Section 5: Sections (toggle visibility) -->\n <div *ngIf=\"metadataExpanded && visibleSections?.length\" class=\"cqa-flex cqa-flex-col cqa-gap-4\">\n <div\n *ngFor=\"let section of visibleSections\"\n class=\"cqa-border cqa-border-gray-200 cqa-rounded-md cqa-bg-white cqa-overflow-hidden\"\n [ngClass]=\"getSectionBorderClass(section)\"\n >\n <div class=\"cqa-p-4 cqa-flex cqa-flex-col cqa-gap-3\">\n <!-- Section Title with Inline Collapse Button -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <h3 [ngClass]=\"getSectionTitleClasses(section)\" class=\"cqa-m-0\">\n {{ section.title }}\n </h3>\n <button\n type=\"button\"\n class=\"cqa-ml-auto cqa-inline-flex cqa-items-center cqa-justify-center cqa-cursor-pointer cqa-bg-transparent cqa-border-0 cqa-p-1 cqa-rounded-full cqa-hover:cqa-bg-gray-100 cqa-transition-colors\"\n (click)=\"toggleSection(section)\"\n [attr.aria-label]=\"section.expanded !== false ? 'Collapse section' : 'Expand section'\"\n >\n <mat-icon [ngClass]=\"getSectionIconColor(section)\" class=\"cqa-w-4 cqa-h-4 cqa-text-[16px] cqa-leading-[16px]\">\n {{ section.expanded !== false ? 'expand_less' : 'expand_more' }}\n </mat-icon>\n </button>\n </div>\n\n <!-- Collapsible Content: Reason and Action Button -->\n <div *ngIf=\"section.expanded !== false\" class=\"cqa-flex cqa-flex-col cqa-gap-3\">\n <!-- Reason -->\n <p class=\"cqa-text-sm cqa-font-normal cqa-leading-4 cqa-text-neutral-600\">\n <strong>Reason:</strong> {{ section.reason }}\n </p>\n \n <!-- Action Button -->\n <div>\n <cqa-button\n variant=\"outlined\"\n (clicked)=\"onSectionAction(section.id)\"\n >\n {{ section.actionButtonLabel }}\n </cqa-button>\n </div>\n </div>\n </div>\n </div>\n </div>\n \n <cqa-button\n variant=\"filled\"\n [icon]=\"isApplying ? 'hourglass_empty' : 'auto_awesome'\"\n iconPosition=\"start\"\n (clicked)=\"onMainAction()\"\n [fullWidth]=\"true\"\n [disabled]=\"isApplying\"\n [iconColor]=\"isApplying ? '#EAB308' : undefined\"\n >\n {{ isApplying ? 'Applying suggestion' : 'Apply suggestion' }}\n </cqa-button>\n </div>\n</div>\n \n", components: [{ type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i2.BadgeComponent, selector: "cqa-badge", inputs: ["label", "icon", "variant", "backgroundColor", "textColor", "iconBackgroundColor", "iconColor"] }, { type: i3.ButtonComponent, selector: "cqa-button", inputs: ["variant", "disabled", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass"], outputs: ["clicked"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], pipes: { "keyvalue": i4.KeyValuePipe } });
166
+ InsightCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: InsightCardComponent, selector: "cqa-insight-card", inputs: { title: "title", description: "description", badges: "badges", metadata: "metadata", prerequisiteSection: "prerequisiteSection", testDataSection: "testDataSection", metadataExpanded: "metadataExpanded", isPrerequisiteMissing: "isPrerequisiteMissing", isTestDataMissing: "isTestDataMissing" }, outputs: { metadataToggle: "metadataToggle", sectionToggle: "sectionToggle", sectionActionClick: "sectionActionClick", onApplySuggestionClick: "onApplySuggestionClick", onAttachPrerequisitesClick: "onAttachPrerequisitesClick", onImportTestDataClick: "onImportTestDataClick" }, ngImport: i0, template: "<div id=\"cqa-ui-root\">\n <div class=\"cqa-font-inter cqa-flex cqa-flex-col cqa-gap-4 cqa-px-[21px] cqa-py-3 cqa-border cqa-border-[#ECECEC] cqa-rounded-xl cqa-shadow-card\">\n <!-- Section 1: Badges -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-3 cqapy-[1.5]\" *ngIf=\"visibleBadges.length > 0\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14.4866 12.0005L9.15329 2.66714C9.037 2.46194 8.86836 2.29127 8.66457 2.17252C8.46078 2.05378 8.22915 1.99121 7.99329 1.99121C7.75743 1.99121 7.52579 2.05378 7.322 2.17252C7.11822 2.29127 6.94958 2.46194 6.83329 2.66714L1.49995 12.0005C1.38241 12.204 1.32077 12.4351 1.32129 12.6701C1.32181 12.9052 1.38447 13.136 1.50292 13.339C1.62136 13.5421 1.79138 13.7102 1.99575 13.8264C2.20011 13.9425 2.43156 14.0026 2.66662 14.0005H13.3333C13.5672 14.0002 13.797 13.9385 13.9995 13.8213C14.202 13.7042 14.3701 13.5359 14.487 13.3332C14.6038 13.1306 14.6653 12.9007 14.6653 12.6668C14.6652 12.4329 14.6036 12.2031 14.4866 12.0005Z\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M8 6V8.66667\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M8 11.333H8.00667\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n <div class=\"cqa-flex cqa-flex-wrap cqa-gap-2\">\n <cqa-badge \n *ngFor=\"let badge of visibleBadges\" \n [label]=\"badge.label\"\n [icon]=\"badge.icon\"\n [variant]=\"badge.variant || 'default'\"\n ></cqa-badge>\n </div>\n </div>\n\n <!-- Section 2: Title & Description -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3\">\n <h2 class=\"cqa-font-medium cqa-text-lg cqa-leading-[22px] cqa-text-title\">\n {{ title }}\n </h2>\n <p class=\"cqa-text-base cqa-font-normal cqa-text-description\">\n {{ description }}\n </p>\n </div>\n\n <!-- Section 3: Metadata Section (always visible) -->\n <div *ngIf=\"metadata\" class=\"cqa-flex cqa-flex-col cqa-gap-4\">\n <div class=\"cqa-bg-surface-default cqa-rounded-[10px] cqa-px-4 cqa-py-3 cqa-border-t cqa-border-t-primary-surface\">\n <div class=\"cqa-flex cqa-flex-wrap cqa-items-center cqa-gap-[25px]\">\n <ng-container *ngFor=\"let item of metadata | keyvalue; let last = last\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-[6px]\">\n <span class=\"cqa-text-xs cqa-font-normal cqa-font-inter cqa-text-metadata-key\">\n {{ item.key }}:\n </span>\n <span \n [ngClass]=\"getMetadataValueClasses(item.key, item.value)\" \n [ngStyle]=\"getMetadataValueStyle(item.key, item.value)\"\n class=\"cqa-font-normal cqa-leading-[18px] cqa-font-inter cqa-text-sm cqa-text-title\">\n {{ getMetadataValue(item.value) }}\n </span>\n </div>\n <div *ngIf=\"!last\" class=\"cqa-h-4 cqa-w-px cqa-bg-gray-200\"></div>\n </ng-container>\n </div>\n </div>\n\n <!-- Section 4: Metadata toggle -->\n <button *ngIf=\"metadata && (isPrerequisiteMissing || isTestDataMissing)\" type=\"button\"\n class=\"cqa-text-sm cqa-text-primary cqa-inline-flex cqa-font-inter cqa-items-center cqa-gap-[6px]\"\n (click)=\"toggleMetadata()\">\n <span>{{ metadataExpanded ? 'Hide details' : 'Show details' }}</span>\n <mat-icon class=\"cqa-w-[14px] cqa-h-[14px] cqa-text-[14px] cqa-leading-[14px]\">\n {{ metadataExpanded ? 'expand_less' : 'expand_more' }}\n </mat-icon>\n </button>\n\n <!-- Section 5: Sections (toggle visibility) -->\n <div *ngIf=\"metadataExpanded && visibleSections?.length\" class=\"cqa-flex cqa-flex-col cqa-gap-4\">\n <div\n *ngFor=\"let section of visibleSections\"\n class=\"cqa-border-l-4 cqa-border-[#FBBF24] cqa-rounded-[10px] cqa-overflow-hidden\"\n [ngClass]=\"getSectionBorderClass(section)\"\n >\n <div class=\"cqa-p-[10px] cqa-pl-[20px] cqa-flex cqa-flex-col cqa-gap-3\">\n <!-- Section Title with Inline Collapse Button -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <h3 [ngClass]=\"getSectionTitleClasses(section)\" class=\"\">\n {{ section.title }}\n </h3>\n <button\n type=\"button\"\n class=\"cqa-ml-auto cqa-inline-flex\"\n (click)=\"toggleSection(section)\"\n [attr.aria-label]=\"section.expanded !== false ? 'Collapse section' : 'Expand section'\"\n >\n <mat-icon [ngClass]=\"getSectionIconColor(section)\" class=\"cqa-w-4 cqa-h-4 cqa-text-[16px] cqa-leading-[16px]\">\n {{ section.expanded !== false ? 'expand_less' : 'expand_more' }}\n </mat-icon>\n </button>\n </div>\n\n <!-- Collapsible Content: Reason and Action Button -->\n <div *ngIf=\"section.expanded !== false\" class=\"cqa-flex cqa-flex-col cqa-gap-[10px]\">\n <!-- Reason -->\n <p class=\"cqa-text-sm cqa-font-normal cqa-leading-[18px] cqa-text-neutral-600\">\n Reason: {{ section.reason }}\n </p>\n \n <!-- Action Button -->\n <div>\n <cqa-button\n variant=\"outlined\"\n (clicked)=\"onSectionAction(section.id)\"\n [customClass]=\"'cqa-py-[9px] cqa-text-[14px] cqa-leading-[17px] cqa-border-slate cqa-text-slate'\"\n >\n {{ section.actionButtonLabel }}\n </cqa-button>\n </div>\n </div>\n </div>\n </div>\n </div>\n \n <cqa-button\n variant=\"filled\"\n (clicked)=\"onMainAction()\"\n [disabled]=\"isApplying\"\n [customClass]=\"'!cqa-w-full !cqa-text-[14px] !cqa-leading-[20px] !cqa-font-semibold'\"\n >\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9.01882 0C9.12979 0.0454767 9.17718 0.15653 9.22261 0.259691C9.24539 0.319799 9.26628 0.380234 9.28657 0.44115C9.29452 0.464493 9.30246 0.487836 9.31065 0.511886C9.41613 0.826009 9.51008 1.1435 9.60457 1.46076C9.62593 1.53238 9.64739 1.60397 9.66885 1.67557C9.7781 2.04007 9.88654 2.4048 9.99438 2.76969C10.0095 2.82093 10.0247 2.87218 10.0398 2.92342C10.0826 3.0679 10.1252 3.21239 10.1677 3.35694C10.2573 3.66239 10.3495 3.96695 10.4476 4.27002C10.4561 4.29653 10.4647 4.32305 10.4735 4.35036C10.7284 5.12999 11.0896 5.82875 11.6818 6.42393C11.6965 6.4394 11.7111 6.45488 11.7262 6.47083C11.979 6.72875 12.3034 6.93541 12.6276 7.10221C12.6441 7.11085 12.6606 7.11948 12.6776 7.12838C13.6317 7.61851 14.779 7.83407 15.8124 8.12101C16.2652 8.24681 16.7166 8.37658 17.1663 8.51206C17.1979 8.52157 17.2296 8.53107 17.2612 8.54055C17.3557 8.5689 17.45 8.59774 17.5442 8.62694C17.5662 8.63358 17.5882 8.64023 17.6108 8.64707C17.7406 8.68812 17.8648 8.73658 17.9713 8.82054C18.0038 8.88837 18.0038 8.88837 17.995 8.95619C17.8913 9.05472 17.7884 9.10092 17.6516 9.14599C17.632 9.15264 17.6124 9.1593 17.5923 9.16615C17.3612 9.24366 17.127 9.31149 16.8925 9.37871C16.8444 9.39261 16.7963 9.40651 16.7482 9.42042C16.4514 9.50603 16.1542 9.5898 15.8566 9.67263C15.4646 9.78175 15.0733 9.89268 14.6823 10.0049C14.6182 10.0232 14.5541 10.0416 14.49 10.0598C14.1534 10.1557 13.8185 10.2551 13.4863 10.3642C13.4587 10.3732 13.4312 10.3822 13.4028 10.3915C12.2902 10.7616 11.4422 11.4522 10.9114 12.462C10.6253 13.0295 10.4565 13.6432 10.2843 14.2489C10.2377 14.4124 10.1882 14.5749 10.1381 14.7374C10.0988 14.8652 10.0604 14.9933 10.023 15.1216C10.0185 15.1369 10.0141 15.1522 10.0095 15.1679C9.98788 15.2419 9.96638 15.3159 9.94503 15.3899C9.89039 15.5776 9.83156 15.7637 9.77111 15.9498C9.66383 16.2804 9.5662 16.6135 9.46917 16.947C9.32288 17.4491 9.32288 17.4491 9.23993 17.6905C9.23443 17.7067 9.22893 17.7229 9.22326 17.7396C9.19298 17.8256 9.16183 17.9047 9.10453 17.9774C9.01734 17.9958 9.01734 17.9958 8.93901 18C8.84946 17.8752 8.79016 17.7542 8.74265 17.6102C8.73574 17.5897 8.72882 17.5693 8.7217 17.5483C8.63368 17.285 8.55502 17.0189 8.47634 16.7529C8.45832 16.6921 8.44022 16.6313 8.42211 16.5705C8.2872 16.1173 8.15451 15.6635 8.02202 15.2096C7.47014 12.9645 7.47014 12.9645 6.078 11.1493C6.05569 11.1319 6.03338 11.1145 6.01039 11.0966C5.09826 10.398 3.89667 10.1394 2.7963 9.83627C2.52415 9.76124 2.2521 9.68587 1.98006 9.61046C1.95628 9.60386 1.95628 9.60386 1.93201 9.59714C1.53962 9.48834 1.14735 9.37925 0.756448 9.26566C0.739911 9.26089 0.723375 9.25612 0.706338 9.25121C0.105798 9.07767 0.105798 9.07767 0.00129307 8.95619C-0.00166252 8.90108 -0.00166252 8.90108 0.0249378 8.84315C0.134167 8.7408 0.240153 8.69696 0.38432 8.65238C0.405194 8.64567 0.426068 8.63897 0.447574 8.63206C0.511506 8.61164 0.575577 8.59169 0.639702 8.57183C0.658001 8.56609 0.676301 8.56035 0.695155 8.55443C0.82457 8.51385 0.95445 8.47479 1.08452 8.43618C1.11648 8.42665 1.11648 8.42665 1.14909 8.41693C1.70454 8.25174 2.26361 8.09801 2.82252 7.94392C3.23899 7.82909 3.65476 7.71236 4.06921 7.59097C4.08825 7.58542 4.1073 7.57987 4.12692 7.57415C5.087 7.29393 6.02557 6.89632 6.64547 6.1074C6.65475 6.09569 6.66403 6.08399 6.6736 6.07194C7.36395 5.1963 7.63315 4.13145 7.93391 3.09241C8.03285 2.75069 8.13298 2.40929 8.23345 2.06798C8.26127 1.97347 8.28906 1.87894 8.31673 1.78439C8.42788 1.40458 8.5407 1.02528 8.66 0.647727C8.67116 0.612372 8.68227 0.577001 8.69333 0.541614C8.86035 0.00797522 8.86035 0.00797522 9.01882 0Z\" fill=\"#FBFCFF\"/><path d=\"M14.4719 1.11069C14.5805 1.22817 14.6022 1.36624 14.636 1.51625C14.7487 1.98751 14.8786 2.42084 15.3293 2.6946C15.6074 2.84167 15.9389 2.90859 16.247 2.9718C16.3771 2.99902 16.4869 3.03515 16.5985 3.1074C16.6236 3.14555 16.6236 3.14555 16.6221 3.21197C16.5963 3.29273 16.5736 3.31878 16.5054 3.37165C16.4308 3.39549 16.4308 3.39549 16.3413 3.41404C16.3075 3.42147 16.2736 3.42898 16.2398 3.43656C16.2217 3.44058 16.2036 3.4446 16.1849 3.44874C15.6339 3.57062 15.6339 3.57062 15.1576 3.84645C15.1421 3.85837 15.1267 3.87029 15.1107 3.88257C14.7703 4.16959 14.6983 4.64703 14.5958 5.04699C14.59 5.06896 14.5841 5.09092 14.578 5.11355C14.573 5.133 14.5679 5.15244 14.5627 5.17248C14.5405 5.23185 14.5176 5.27057 14.4719 5.31607C14.3447 5.33152 14.3447 5.33152 14.2828 5.31607C14.1843 5.24309 14.1623 5.15997 14.1366 5.04828C14.1322 5.03099 14.1279 5.01369 14.1235 4.99587C14.1098 4.94064 14.0965 4.88531 14.0833 4.82996C13.9796 4.39891 13.8625 3.976 13.449 3.72333C13.1258 3.55101 12.7329 3.46951 12.3717 3.4037C12.2727 3.38399 12.216 3.3592 12.1547 3.28121C12.1414 3.20208 12.1414 3.20208 12.1547 3.12294C12.2489 3.02971 12.348 3.00696 12.4754 2.97881C12.5156 2.9693 12.5557 2.95973 12.5958 2.9501C12.6165 2.94516 12.6372 2.94022 12.6586 2.93512C12.7642 2.90911 12.8689 2.87995 12.9734 2.85021C12.9924 2.84494 13.0114 2.83967 13.031 2.83424C13.2436 2.77346 13.4271 2.69571 13.5971 2.5577C13.6129 2.54523 13.6288 2.53276 13.6451 2.5199C13.9096 2.29228 13.9995 1.95032 14.081 1.63124C14.0873 1.60702 14.0935 1.5828 14.0999 1.55784C14.1123 1.50918 14.1244 1.46046 14.1363 1.4117C14.1449 1.37776 14.1449 1.37776 14.1535 1.34315C14.1585 1.32288 14.1635 1.30261 14.1686 1.28172C14.1904 1.21719 14.219 1.16652 14.2591 1.11069C14.3362 1.07385 14.3903 1.0905 14.4719 1.11069Z\" fill=\"#FBFCFF\"/><path d=\"M3.59089 12.4942C3.61902 12.4944 3.61902 12.4944 3.64772 12.4946C3.84954 12.5004 3.98609 12.5623 4.13472 12.692C4.30767 12.8707 4.38753 13.0722 4.38299 13.313C4.36357 13.5082 4.24316 13.6787 4.09547 13.8107C3.92163 13.9448 3.74626 13.9892 3.52411 13.983C3.33681 13.9621 3.1606 13.877 3.02785 13.749C2.86276 13.5336 2.8145 13.3361 2.83869 13.0707C2.88867 12.8618 3.03274 12.6923 3.21701 12.5733C3.34502 12.5113 3.44798 12.493 3.59089 12.4942Z\" fill=\"#FBFCFF\"/></svg>\n {{ isApplying ? 'Applying suggestion' : 'Apply suggestion' }}\n </cqa-button>\n </div>\n</div>\n \n", components: [{ type: i1.BadgeComponent, selector: "cqa-badge", inputs: ["label", "icon", "variant", "backgroundColor", "textColor", "iconBackgroundColor", "iconColor"] }, { type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i3.ButtonComponent, selector: "cqa-button", inputs: ["variant", "disabled", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass"], outputs: ["clicked"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], pipes: { "keyvalue": i4.KeyValuePipe } });
167
167
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: InsightCardComponent, decorators: [{
168
168
  type: Component,
169
- args: [{ selector: 'cqa-insight-card', template: "<div id=\"cqa-ui-root\" style=\"background-color: white; border-radius: 0.5rem; border: 1px solid #E5E7EB; box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-4 cqa-px-[21px] cqa-py-3 cqa-border cqa-border-gray-200 cqa-rounded-2xl\">\n <!-- Section 1: Badges -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\" *ngIf=\"visibleBadges.length > 0\">\n <mat-icon *ngIf=\"isPrerequisiteMissing || isTestDataMissing\"\n class=\"cqa-text-yellow-500 cqa-w-6 cqa-h-6\">warning</mat-icon>\n <div class=\"cqa-flex cqa-flex-wrap cqa-gap-2\">\n <cqa-badge \n *ngFor=\"let badge of visibleBadges\" \n [label]=\"badge.label\"\n [icon]=\"badge.icon\"\n [variant]=\"badge.variant || 'default'\"\n ></cqa-badge>\n </div>\n </div>\n\n <!-- Section 2: Title & Description -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3\">\n <h2 class=\"cqa-font-medium cqa-text-lg cqa-text-title\">\n {{ title }}\n </h2>\n <p class=\"cqa-text-base cqa-font-normal cqa-text-description\">\n {{ description }}\n </p>\n </div>\n\n <!-- Section 3: Metadata Section (always visible) -->\n <div *ngIf=\"metadata\" class=\"cqa-flex cqa-flex-col cqa-gap-4\">\n <div class=\"cqa-bg-surface-default cqa-rounded-xl cqa-border cqa-border-border-light cqa-px-4 cqa-py-3 cqa-border-t-2 cqa-border-t-primary-surface\">\n <div class=\"cqa-flex cqa-flex-wrap cqa-items-center cqa-gap-3\">\n <ng-container *ngFor=\"let item of metadata | keyvalue; let last = last\">\n <div class=\"cqa-flex cqa-items-baseline cqa-gap-2\">\n <span class=\"cqa-text-xs cqa-font-normal cqa-tracking-normal cqa-font-inter cqa-text-metadata-key\">\n {{ item.key }}:\n </span>\n <span \n [ngClass]=\"getMetadataValueClasses(item.key, item.value)\" \n [ngStyle]=\"getMetadataValueStyle(item.key, item.value)\"\n class=\"cqa-font-normal cqa-leading-[18px] cqa-tracking-normal cqa-font-inter cqa-text-sm\">\n {{ getMetadataValue(item.value) }}\n </span>\n </div>\n <div *ngIf=\"!last\" class=\"cqa-h-4 cqa-w-px cqa-bg-gray-200\"></div>\n </ng-container>\n </div>\n </div>\n\n <!-- Section 4: Metadata toggle -->\n <button *ngIf=\"metadata && (isPrerequisiteMissing || isTestDataMissing)\" type=\"button\"\n class=\"cqa-text-sm cqa-text-primary-hover cqa-font-medium cqa-inline-flex cqa-items-center cqa-gap-1 cqa-cursor-pointer cqa-bg-transparent cqa-border-0 cqa-p-0 cqa-hover:cqa-text-primary cqa-transition-colors\"\n (click)=\"toggleMetadata()\">\n <span>{{ metadataExpanded ? 'Hide details' : 'Show details' }}</span>\n <mat-icon class=\"cqa-w-4 cqa-h-4 cqa-text-[16px] cqa-leading-[16px]\">\n {{ metadataExpanded ? 'expand_less' : 'expand_more' }}\n </mat-icon>\n </button>\n\n <!-- Section 5: Sections (toggle visibility) -->\n <div *ngIf=\"metadataExpanded && visibleSections?.length\" class=\"cqa-flex cqa-flex-col cqa-gap-4\">\n <div\n *ngFor=\"let section of visibleSections\"\n class=\"cqa-border cqa-border-gray-200 cqa-rounded-md cqa-bg-white cqa-overflow-hidden\"\n [ngClass]=\"getSectionBorderClass(section)\"\n >\n <div class=\"cqa-p-4 cqa-flex cqa-flex-col cqa-gap-3\">\n <!-- Section Title with Inline Collapse Button -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <h3 [ngClass]=\"getSectionTitleClasses(section)\" class=\"cqa-m-0\">\n {{ section.title }}\n </h3>\n <button\n type=\"button\"\n class=\"cqa-ml-auto cqa-inline-flex cqa-items-center cqa-justify-center cqa-cursor-pointer cqa-bg-transparent cqa-border-0 cqa-p-1 cqa-rounded-full cqa-hover:cqa-bg-gray-100 cqa-transition-colors\"\n (click)=\"toggleSection(section)\"\n [attr.aria-label]=\"section.expanded !== false ? 'Collapse section' : 'Expand section'\"\n >\n <mat-icon [ngClass]=\"getSectionIconColor(section)\" class=\"cqa-w-4 cqa-h-4 cqa-text-[16px] cqa-leading-[16px]\">\n {{ section.expanded !== false ? 'expand_less' : 'expand_more' }}\n </mat-icon>\n </button>\n </div>\n\n <!-- Collapsible Content: Reason and Action Button -->\n <div *ngIf=\"section.expanded !== false\" class=\"cqa-flex cqa-flex-col cqa-gap-3\">\n <!-- Reason -->\n <p class=\"cqa-text-sm cqa-font-normal cqa-leading-4 cqa-text-neutral-600\">\n <strong>Reason:</strong> {{ section.reason }}\n </p>\n \n <!-- Action Button -->\n <div>\n <cqa-button\n variant=\"outlined\"\n (clicked)=\"onSectionAction(section.id)\"\n >\n {{ section.actionButtonLabel }}\n </cqa-button>\n </div>\n </div>\n </div>\n </div>\n </div>\n \n <cqa-button\n variant=\"filled\"\n [icon]=\"isApplying ? 'hourglass_empty' : 'auto_awesome'\"\n iconPosition=\"start\"\n (clicked)=\"onMainAction()\"\n [fullWidth]=\"true\"\n [disabled]=\"isApplying\"\n [iconColor]=\"isApplying ? '#EAB308' : undefined\"\n >\n {{ isApplying ? 'Applying suggestion' : 'Apply suggestion' }}\n </cqa-button>\n </div>\n</div>\n \n", styles: [] }]
169
+ args: [{ selector: 'cqa-insight-card', template: "<div id=\"cqa-ui-root\">\n <div class=\"cqa-font-inter cqa-flex cqa-flex-col cqa-gap-4 cqa-px-[21px] cqa-py-3 cqa-border cqa-border-[#ECECEC] cqa-rounded-xl cqa-shadow-card\">\n <!-- Section 1: Badges -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-3 cqapy-[1.5]\" *ngIf=\"visibleBadges.length > 0\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14.4866 12.0005L9.15329 2.66714C9.037 2.46194 8.86836 2.29127 8.66457 2.17252C8.46078 2.05378 8.22915 1.99121 7.99329 1.99121C7.75743 1.99121 7.52579 2.05378 7.322 2.17252C7.11822 2.29127 6.94958 2.46194 6.83329 2.66714L1.49995 12.0005C1.38241 12.204 1.32077 12.4351 1.32129 12.6701C1.32181 12.9052 1.38447 13.136 1.50292 13.339C1.62136 13.5421 1.79138 13.7102 1.99575 13.8264C2.20011 13.9425 2.43156 14.0026 2.66662 14.0005H13.3333C13.5672 14.0002 13.797 13.9385 13.9995 13.8213C14.202 13.7042 14.3701 13.5359 14.487 13.3332C14.6038 13.1306 14.6653 12.9007 14.6653 12.6668C14.6652 12.4329 14.6036 12.2031 14.4866 12.0005Z\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M8 6V8.66667\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M8 11.333H8.00667\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n <div class=\"cqa-flex cqa-flex-wrap cqa-gap-2\">\n <cqa-badge \n *ngFor=\"let badge of visibleBadges\" \n [label]=\"badge.label\"\n [icon]=\"badge.icon\"\n [variant]=\"badge.variant || 'default'\"\n ></cqa-badge>\n </div>\n </div>\n\n <!-- Section 2: Title & Description -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3\">\n <h2 class=\"cqa-font-medium cqa-text-lg cqa-leading-[22px] cqa-text-title\">\n {{ title }}\n </h2>\n <p class=\"cqa-text-base cqa-font-normal cqa-text-description\">\n {{ description }}\n </p>\n </div>\n\n <!-- Section 3: Metadata Section (always visible) -->\n <div *ngIf=\"metadata\" class=\"cqa-flex cqa-flex-col cqa-gap-4\">\n <div class=\"cqa-bg-surface-default cqa-rounded-[10px] cqa-px-4 cqa-py-3 cqa-border-t cqa-border-t-primary-surface\">\n <div class=\"cqa-flex cqa-flex-wrap cqa-items-center cqa-gap-[25px]\">\n <ng-container *ngFor=\"let item of metadata | keyvalue; let last = last\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-[6px]\">\n <span class=\"cqa-text-xs cqa-font-normal cqa-font-inter cqa-text-metadata-key\">\n {{ item.key }}:\n </span>\n <span \n [ngClass]=\"getMetadataValueClasses(item.key, item.value)\" \n [ngStyle]=\"getMetadataValueStyle(item.key, item.value)\"\n class=\"cqa-font-normal cqa-leading-[18px] cqa-font-inter cqa-text-sm cqa-text-title\">\n {{ getMetadataValue(item.value) }}\n </span>\n </div>\n <div *ngIf=\"!last\" class=\"cqa-h-4 cqa-w-px cqa-bg-gray-200\"></div>\n </ng-container>\n </div>\n </div>\n\n <!-- Section 4: Metadata toggle -->\n <button *ngIf=\"metadata && (isPrerequisiteMissing || isTestDataMissing)\" type=\"button\"\n class=\"cqa-text-sm cqa-text-primary cqa-inline-flex cqa-font-inter cqa-items-center cqa-gap-[6px]\"\n (click)=\"toggleMetadata()\">\n <span>{{ metadataExpanded ? 'Hide details' : 'Show details' }}</span>\n <mat-icon class=\"cqa-w-[14px] cqa-h-[14px] cqa-text-[14px] cqa-leading-[14px]\">\n {{ metadataExpanded ? 'expand_less' : 'expand_more' }}\n </mat-icon>\n </button>\n\n <!-- Section 5: Sections (toggle visibility) -->\n <div *ngIf=\"metadataExpanded && visibleSections?.length\" class=\"cqa-flex cqa-flex-col cqa-gap-4\">\n <div\n *ngFor=\"let section of visibleSections\"\n class=\"cqa-border-l-4 cqa-border-[#FBBF24] cqa-rounded-[10px] cqa-overflow-hidden\"\n [ngClass]=\"getSectionBorderClass(section)\"\n >\n <div class=\"cqa-p-[10px] cqa-pl-[20px] cqa-flex cqa-flex-col cqa-gap-3\">\n <!-- Section Title with Inline Collapse Button -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <h3 [ngClass]=\"getSectionTitleClasses(section)\" class=\"\">\n {{ section.title }}\n </h3>\n <button\n type=\"button\"\n class=\"cqa-ml-auto cqa-inline-flex\"\n (click)=\"toggleSection(section)\"\n [attr.aria-label]=\"section.expanded !== false ? 'Collapse section' : 'Expand section'\"\n >\n <mat-icon [ngClass]=\"getSectionIconColor(section)\" class=\"cqa-w-4 cqa-h-4 cqa-text-[16px] cqa-leading-[16px]\">\n {{ section.expanded !== false ? 'expand_less' : 'expand_more' }}\n </mat-icon>\n </button>\n </div>\n\n <!-- Collapsible Content: Reason and Action Button -->\n <div *ngIf=\"section.expanded !== false\" class=\"cqa-flex cqa-flex-col cqa-gap-[10px]\">\n <!-- Reason -->\n <p class=\"cqa-text-sm cqa-font-normal cqa-leading-[18px] cqa-text-neutral-600\">\n Reason: {{ section.reason }}\n </p>\n \n <!-- Action Button -->\n <div>\n <cqa-button\n variant=\"outlined\"\n (clicked)=\"onSectionAction(section.id)\"\n [customClass]=\"'cqa-py-[9px] cqa-text-[14px] cqa-leading-[17px] cqa-border-slate cqa-text-slate'\"\n >\n {{ section.actionButtonLabel }}\n </cqa-button>\n </div>\n </div>\n </div>\n </div>\n </div>\n \n <cqa-button\n variant=\"filled\"\n (clicked)=\"onMainAction()\"\n [disabled]=\"isApplying\"\n [customClass]=\"'!cqa-w-full !cqa-text-[14px] !cqa-leading-[20px] !cqa-font-semibold'\"\n >\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9.01882 0C9.12979 0.0454767 9.17718 0.15653 9.22261 0.259691C9.24539 0.319799 9.26628 0.380234 9.28657 0.44115C9.29452 0.464493 9.30246 0.487836 9.31065 0.511886C9.41613 0.826009 9.51008 1.1435 9.60457 1.46076C9.62593 1.53238 9.64739 1.60397 9.66885 1.67557C9.7781 2.04007 9.88654 2.4048 9.99438 2.76969C10.0095 2.82093 10.0247 2.87218 10.0398 2.92342C10.0826 3.0679 10.1252 3.21239 10.1677 3.35694C10.2573 3.66239 10.3495 3.96695 10.4476 4.27002C10.4561 4.29653 10.4647 4.32305 10.4735 4.35036C10.7284 5.12999 11.0896 5.82875 11.6818 6.42393C11.6965 6.4394 11.7111 6.45488 11.7262 6.47083C11.979 6.72875 12.3034 6.93541 12.6276 7.10221C12.6441 7.11085 12.6606 7.11948 12.6776 7.12838C13.6317 7.61851 14.779 7.83407 15.8124 8.12101C16.2652 8.24681 16.7166 8.37658 17.1663 8.51206C17.1979 8.52157 17.2296 8.53107 17.2612 8.54055C17.3557 8.5689 17.45 8.59774 17.5442 8.62694C17.5662 8.63358 17.5882 8.64023 17.6108 8.64707C17.7406 8.68812 17.8648 8.73658 17.9713 8.82054C18.0038 8.88837 18.0038 8.88837 17.995 8.95619C17.8913 9.05472 17.7884 9.10092 17.6516 9.14599C17.632 9.15264 17.6124 9.1593 17.5923 9.16615C17.3612 9.24366 17.127 9.31149 16.8925 9.37871C16.8444 9.39261 16.7963 9.40651 16.7482 9.42042C16.4514 9.50603 16.1542 9.5898 15.8566 9.67263C15.4646 9.78175 15.0733 9.89268 14.6823 10.0049C14.6182 10.0232 14.5541 10.0416 14.49 10.0598C14.1534 10.1557 13.8185 10.2551 13.4863 10.3642C13.4587 10.3732 13.4312 10.3822 13.4028 10.3915C12.2902 10.7616 11.4422 11.4522 10.9114 12.462C10.6253 13.0295 10.4565 13.6432 10.2843 14.2489C10.2377 14.4124 10.1882 14.5749 10.1381 14.7374C10.0988 14.8652 10.0604 14.9933 10.023 15.1216C10.0185 15.1369 10.0141 15.1522 10.0095 15.1679C9.98788 15.2419 9.96638 15.3159 9.94503 15.3899C9.89039 15.5776 9.83156 15.7637 9.77111 15.9498C9.66383 16.2804 9.5662 16.6135 9.46917 16.947C9.32288 17.4491 9.32288 17.4491 9.23993 17.6905C9.23443 17.7067 9.22893 17.7229 9.22326 17.7396C9.19298 17.8256 9.16183 17.9047 9.10453 17.9774C9.01734 17.9958 9.01734 17.9958 8.93901 18C8.84946 17.8752 8.79016 17.7542 8.74265 17.6102C8.73574 17.5897 8.72882 17.5693 8.7217 17.5483C8.63368 17.285 8.55502 17.0189 8.47634 16.7529C8.45832 16.6921 8.44022 16.6313 8.42211 16.5705C8.2872 16.1173 8.15451 15.6635 8.02202 15.2096C7.47014 12.9645 7.47014 12.9645 6.078 11.1493C6.05569 11.1319 6.03338 11.1145 6.01039 11.0966C5.09826 10.398 3.89667 10.1394 2.7963 9.83627C2.52415 9.76124 2.2521 9.68587 1.98006 9.61046C1.95628 9.60386 1.95628 9.60386 1.93201 9.59714C1.53962 9.48834 1.14735 9.37925 0.756448 9.26566C0.739911 9.26089 0.723375 9.25612 0.706338 9.25121C0.105798 9.07767 0.105798 9.07767 0.00129307 8.95619C-0.00166252 8.90108 -0.00166252 8.90108 0.0249378 8.84315C0.134167 8.7408 0.240153 8.69696 0.38432 8.65238C0.405194 8.64567 0.426068 8.63897 0.447574 8.63206C0.511506 8.61164 0.575577 8.59169 0.639702 8.57183C0.658001 8.56609 0.676301 8.56035 0.695155 8.55443C0.82457 8.51385 0.95445 8.47479 1.08452 8.43618C1.11648 8.42665 1.11648 8.42665 1.14909 8.41693C1.70454 8.25174 2.26361 8.09801 2.82252 7.94392C3.23899 7.82909 3.65476 7.71236 4.06921 7.59097C4.08825 7.58542 4.1073 7.57987 4.12692 7.57415C5.087 7.29393 6.02557 6.89632 6.64547 6.1074C6.65475 6.09569 6.66403 6.08399 6.6736 6.07194C7.36395 5.1963 7.63315 4.13145 7.93391 3.09241C8.03285 2.75069 8.13298 2.40929 8.23345 2.06798C8.26127 1.97347 8.28906 1.87894 8.31673 1.78439C8.42788 1.40458 8.5407 1.02528 8.66 0.647727C8.67116 0.612372 8.68227 0.577001 8.69333 0.541614C8.86035 0.00797522 8.86035 0.00797522 9.01882 0Z\" fill=\"#FBFCFF\"/><path d=\"M14.4719 1.11069C14.5805 1.22817 14.6022 1.36624 14.636 1.51625C14.7487 1.98751 14.8786 2.42084 15.3293 2.6946C15.6074 2.84167 15.9389 2.90859 16.247 2.9718C16.3771 2.99902 16.4869 3.03515 16.5985 3.1074C16.6236 3.14555 16.6236 3.14555 16.6221 3.21197C16.5963 3.29273 16.5736 3.31878 16.5054 3.37165C16.4308 3.39549 16.4308 3.39549 16.3413 3.41404C16.3075 3.42147 16.2736 3.42898 16.2398 3.43656C16.2217 3.44058 16.2036 3.4446 16.1849 3.44874C15.6339 3.57062 15.6339 3.57062 15.1576 3.84645C15.1421 3.85837 15.1267 3.87029 15.1107 3.88257C14.7703 4.16959 14.6983 4.64703 14.5958 5.04699C14.59 5.06896 14.5841 5.09092 14.578 5.11355C14.573 5.133 14.5679 5.15244 14.5627 5.17248C14.5405 5.23185 14.5176 5.27057 14.4719 5.31607C14.3447 5.33152 14.3447 5.33152 14.2828 5.31607C14.1843 5.24309 14.1623 5.15997 14.1366 5.04828C14.1322 5.03099 14.1279 5.01369 14.1235 4.99587C14.1098 4.94064 14.0965 4.88531 14.0833 4.82996C13.9796 4.39891 13.8625 3.976 13.449 3.72333C13.1258 3.55101 12.7329 3.46951 12.3717 3.4037C12.2727 3.38399 12.216 3.3592 12.1547 3.28121C12.1414 3.20208 12.1414 3.20208 12.1547 3.12294C12.2489 3.02971 12.348 3.00696 12.4754 2.97881C12.5156 2.9693 12.5557 2.95973 12.5958 2.9501C12.6165 2.94516 12.6372 2.94022 12.6586 2.93512C12.7642 2.90911 12.8689 2.87995 12.9734 2.85021C12.9924 2.84494 13.0114 2.83967 13.031 2.83424C13.2436 2.77346 13.4271 2.69571 13.5971 2.5577C13.6129 2.54523 13.6288 2.53276 13.6451 2.5199C13.9096 2.29228 13.9995 1.95032 14.081 1.63124C14.0873 1.60702 14.0935 1.5828 14.0999 1.55784C14.1123 1.50918 14.1244 1.46046 14.1363 1.4117C14.1449 1.37776 14.1449 1.37776 14.1535 1.34315C14.1585 1.32288 14.1635 1.30261 14.1686 1.28172C14.1904 1.21719 14.219 1.16652 14.2591 1.11069C14.3362 1.07385 14.3903 1.0905 14.4719 1.11069Z\" fill=\"#FBFCFF\"/><path d=\"M3.59089 12.4942C3.61902 12.4944 3.61902 12.4944 3.64772 12.4946C3.84954 12.5004 3.98609 12.5623 4.13472 12.692C4.30767 12.8707 4.38753 13.0722 4.38299 13.313C4.36357 13.5082 4.24316 13.6787 4.09547 13.8107C3.92163 13.9448 3.74626 13.9892 3.52411 13.983C3.33681 13.9621 3.1606 13.877 3.02785 13.749C2.86276 13.5336 2.8145 13.3361 2.83869 13.0707C2.88867 12.8618 3.03274 12.6923 3.21701 12.5733C3.34502 12.5113 3.44798 12.493 3.59089 12.4942Z\" fill=\"#FBFCFF\"/></svg>\n {{ isApplying ? 'Applying suggestion' : 'Apply suggestion' }}\n </cqa-button>\n </div>\n</div>\n \n", styles: [] }]
170
170
  }], propDecorators: { title: [{
171
171
  type: Input
172
172
  }], description: [{
@@ -198,4 +198,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
198
198
  }], onImportTestDataClick: [{
199
199
  type: Output
200
200
  }] } });
201
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zaWdodC1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy9pbnNpZ2h0LWNhcmQvaW5zaWdodC1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy9pbnNpZ2h0LWNhcmQvaW5zaWdodC1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLHFCQUFxQixJQUFJLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7OztBQXdCbEcsTUFBTSxPQUFPLG9CQUFvQjtJQUxqQztRQU1XLFVBQUssR0FBVyxFQUFFLENBQUM7UUFDbkIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDMUIsWUFBTyxHQUFtQixFQUFFLENBQUM7UUFXNUIscUJBQWdCLEdBQVksSUFBSSxDQUFDO1FBQ2pDLDBCQUFxQixHQUFZLEtBQUssQ0FBQztRQUN2QyxzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFFNUMsb0NBQW9DO1FBQzVCLHlCQUFvQixHQUF5QixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRS9ELGdDQUFnQztRQUNoQyxlQUFVLEdBQVksS0FBSyxDQUFDO1FBRWxCLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUM3QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFxQyxDQUFDO1FBQ3RFLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDaEQsMkJBQXNCLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNsRCwrQkFBMEIsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3RELDBCQUFxQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7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Q0gsQ0FBQzs7aUhBdkxVLG9CQUFvQjtxR0FBcEIsb0JBQW9CLDJuQkN6QmpDLDAxS0FxSEE7MkZENUZhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxrQkFBa0I7OEJBS25CLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUdGLE1BQU07c0JBRFQsS0FBSztnQkFPRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQVFJLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csc0JBQXNCO3NCQUEvQixNQUFNO2dCQUNHLDBCQUEwQjtzQkFBbkMsTUFBTTtnQkFDRyxxQkFBcUI7c0JBQTlCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZ2V0TWV0YWRhdGFWYWx1ZVN0eWxlIGFzIGdldE1ldGFkYXRhQ29sb3JTdHlsZSB9IGZyb20gJy4uLy4uL3V0aWxzL21ldGFkYXRhLWNvbG9ycy51dGlsJztcbmltcG9ydCB7IEJhZGdlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYmFkZ2UvYmFkZ2UuY29tcG9uZW50JztcblxuLy8gVXNlIEJhZGdlQ29tcG9uZW50IGlucHV0cyBkaXJlY3RseSBpbnN0ZWFkIG9mIGEgc2VwYXJhdGUgaW50ZXJmYWNlXG5leHBvcnQgdHlwZSBJbnNpZ2h0QmFkZ2UgPSBQaWNrPEJhZGdlQ29tcG9uZW50LCAnbGFiZWwnIHwgJ2ljb24nIHwgJ3ZhcmlhbnQnPjtcblxuZXhwb3J0IGludGVyZmFjZSBJbnNpZ2h0TWV0YWRhdGEge1xuICBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmc7IGhpZ2hsaWdodD86IGJvb2xlYW4gfTtcbn1cblxuaW50ZXJmYWNlIEludGVybmFsSW5zaWdodFNlY3Rpb24ge1xuICBpZDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICB2YXJpYW50OiAnd2FybmluZycgfCAnZXJyb3InIHwgJ2RlZmF1bHQnO1xuICByZWFzb246IHN0cmluZztcbiAgYWN0aW9uQnV0dG9uTGFiZWw6IHN0cmluZztcbiAgZXhwYW5kZWQ/OiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtaW5zaWdodC1jYXJkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2luc2lnaHQtY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW11cbn0pXG5leHBvcnQgY2xhc3MgSW5zaWdodENhcmRDb21wb25lbnQge1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGRlc2NyaXB0aW9uOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfYmFkZ2VzOiBJbnNpZ2h0QmFkZ2VbXSA9IFtdO1xuICBASW5wdXQoKVxuICBzZXQgYmFkZ2VzKHZhbHVlOiBJbnNpZ2h0QmFkZ2VbXSkge1xuICAgIHRoaXMuX2JhZGdlcyA9IHZhbHVlO1xuICB9XG4gIGdldCBiYWRnZXMoKTogSW5zaWdodEJhZGdlW10ge1xuICAgIHJldHVybiB0aGlzLl9iYWRnZXM7XG4gIH1cbiAgQElucHV0KCkgbWV0YWRhdGE/OiBJbnNpZ2h0TWV0YWRhdGE7XG4gIEBJbnB1dCgpIHByZXJlcXVpc2l0ZVNlY3Rpb24/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRlc3REYXRhU2VjdGlvbj86IHN0cmluZztcbiAgQElucHV0KCkgbWV0YWRhdGFFeHBhbmRlZDogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGlzUHJlcmVxdWlzaXRlTWlzc2luZzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBpc1Rlc3REYXRhTWlzc2luZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIFRyYWNrIGV4cGFuZGVkIHN0YXRlIGZvciBzZWN0aW9uc1xuICBwcml2YXRlIHNlY3Rpb25FeHBhbmRlZFN0YXRlOiBNYXA8c3RyaW5nLCBib29sZWFuPiA9IG5ldyBNYXAoKTtcbiAgXG4gIC8vIExvYWRpbmcgc3RhdGUgZm9yIG1haW4gYWN0aW9uXG4gIGlzQXBwbHlpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgbWV0YWRhdGFUb2dnbGUgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBzZWN0aW9uVG9nZ2xlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGlkOiBzdHJpbmc7IGV4cGFuZGVkOiBib29sZWFuIH0+KCk7XG4gIEBPdXRwdXQoKSBzZWN0aW9uQWN0aW9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIG9uQXBwbHlTdWdnZXN0aW9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBvbkF0dGFjaFByZXJlcXVpc2l0ZXNDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIG9uSW1wb3J0VGVzdERhdGFDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICB0b2dnbGVNZXRhZGF0YSgpOiB2b2lkIHtcbiAgICB0aGlzLm1ldGFkYXRhRXhwYW5kZWQgPSAhdGhpcy5tZXRhZGF0YUV4cGFuZGVkO1xuICAgIHRoaXMubWV0YWRhdGFUb2dnbGUuZW1pdCh0aGlzLm1ldGFkYXRhRXhwYW5kZWQpO1xuICB9XG5cbiAgdG9nZ2xlU2VjdGlvbihzZWN0aW9uOiBJbnRlcm5hbEluc2lnaHRTZWN0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFN0YXRlID0gdGhpcy5zZWN0aW9uRXhwYW5kZWRTdGF0ZS5nZXQoc2VjdGlvbi5pZCkgPz8gKHNlY3Rpb24uZXhwYW5kZWQgPz8gdHJ1ZSk7XG4gICAgY29uc3QgbmV3U3RhdGUgPSAhY3VycmVudFN0YXRlO1xuICAgIHRoaXMuc2VjdGlvbkV4cGFuZGVkU3RhdGUuc2V0KHNlY3Rpb24uaWQsIG5ld1N0YXRlKTtcbiAgICBcbiAgICB0aGlzLnNlY3Rpb25Ub2dnbGUuZW1pdCh7IGlkOiBzZWN0aW9uLmlkLCBleHBhbmRlZDogbmV3U3RhdGUgfSk7XG4gIH1cblxuICBvblNlY3Rpb25BY3Rpb24oc2VjdGlvbklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNlY3Rpb25BY3Rpb25DbGljay5lbWl0KHNlY3Rpb25JZCk7XG4gICAgXG4gICAgLy8gRW1pdCBzcGVjaWZpYyBldmVudHMgZm9yIGtub3duIGFjdGlvbnNcbiAgICBpZiAoc2VjdGlvbklkID09PSAncHJlcmVxdWlzaXRlJykge1xuICAgICAgdGhpcy5vbkF0dGFjaFByZXJlcXVpc2l0ZXNDbGljay5lbWl0KCk7XG4gICAgfSBlbHNlIGlmIChzZWN0aW9uSWQgPT09ICd0ZXN0LWRhdGEnKSB7XG4gICAgICB0aGlzLm9uSW1wb3J0VGVzdERhdGFDbGljay5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHZpc2libGVCYWRnZXMoKTogSW5zaWdodEJhZGdlW10ge1xuICAgIGNvbnN0IHZpc2libGU6IEluc2lnaHRCYWRnZVtdID0gW107XG4gICAgaWYgKHRoaXMuaXNQcmVyZXF1aXNpdGVNaXNzaW5nKSB7XG4gICAgICB2aXNpYmxlLnB1c2goeyBsYWJlbDogJ1ByZXJlcXVpc2l0ZSBNaXNzaW5nJywgdmFyaWFudDogJ3dhcm5pbmcnIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc1Rlc3REYXRhTWlzc2luZykge1xuICAgICAgdmlzaWJsZS5wdXNoKHsgbGFiZWw6ICdUZXN0IERhdGEgTWlzc2luZycsIHZhcmlhbnQ6ICdlcnJvcicgfSk7XG4gICAgfVxuICAgIC8vIEFsc28gaW5jbHVkZSBhbnkgY3VzdG9tIGJhZGdlc1xuICAgIGlmICh0aGlzLmJhZGdlcykge1xuICAgICAgdmlzaWJsZS5wdXNoKC4uLnRoaXMuYmFkZ2VzKTtcbiAgICB9XG4gICAgcmV0dXJuIHZpc2libGU7XG4gIH1cblxuICBnZXQgdmlzaWJsZVNlY3Rpb25zKCk6IEludGVybmFsSW5zaWdodFNlY3Rpb25bXSB7XG4gICAgY29uc3QgdmlzaWJsZTogSW50ZXJuYWxJbnNpZ2h0U2VjdGlvbltdID0gW107XG4gICAgXG4gICAgaWYgKHRoaXMuaXNQcmVyZXF1aXNpdGVNaXNzaW5nICYmIHRoaXMucHJlcmVxdWlzaXRlU2VjdGlvbikge1xuICAgICAgLy8gVXNlIHN0b3JlZCBzdGF0ZSBpZiBhdmFpbGFibGUsIG90aGVyd2lzZSBkZWZhdWx0IHRvIHRydWVcbiAgICAgIGNvbnN0IGV4cGFuZGVkID0gdGhpcy5zZWN0aW9uRXhwYW5kZWRTdGF0ZS5oYXMoJ3ByZXJlcXVpc2l0ZScpIFxuICAgICAgICA/IHRoaXMuc2VjdGlvbkV4cGFuZGVkU3RhdGUuZ2V0KCdwcmVyZXF1aXNpdGUnKSFcbiAgICAgICAgOiB0cnVlO1xuICAgICAgXG4gICAgICB2aXNpYmxlLnB1c2goe1xuICAgICAgICBpZDogJ3ByZXJlcXVpc2l0ZScsXG4gICAgICAgIHRpdGxlOiAnUHJlcmVxdWlzaXRlIE1pc3NpbmcnLFxuICAgICAgICB2YXJpYW50OiAnd2FybmluZycsXG4gICAgICAgIHJlYXNvbjogdGhpcy5wcmVyZXF1aXNpdGVTZWN0aW9uLFxuICAgICAgICBhY3Rpb25CdXR0b25MYWJlbDogJ0F0dGFjaCBQcmVyZXF1aXNpdGVzJyxcbiAgICAgICAgZXhwYW5kZWQ6IGV4cGFuZGVkLFxuICAgICAgfSk7XG4gICAgfVxuICAgIFxuICAgIGlmICh0aGlzLmlzVGVzdERhdGFNaXNzaW5nICYmIHRoaXMudGVzdERhdGFTZWN0aW9uKSB7XG4gICAgICAvLyBVc2Ugc3RvcmVkIHN0YXRlIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIGRlZmF1bHQgdG8gdHJ1ZVxuICAgICAgY29uc3QgZXhwYW5kZWQgPSB0aGlzLnNlY3Rpb25FeHBhbmRlZFN0YXRlLmhhcygndGVzdC1kYXRhJylcbiAgICAgICAgPyB0aGlzLnNlY3Rpb25FeHBhbmRlZFN0YXRlLmdldCgndGVzdC1kYXRhJykhXG4gICAgICAgIDogdHJ1ZTtcbiAgICAgIFxuICAgICAgdmlzaWJsZS5wdXNoKHtcbiAgICAgICAgaWQ6ICd0ZXN0LWRhdGEnLFxuICAgICAgICB0aXRsZTogJ1Rlc3QgRGF0YSBNaXNzaW5nJyxcbiAgICAgICAgdmFyaWFudDogJ2Vycm9yJyxcbiAgICAgICAgcmVhc29uOiB0aGlzLnRlc3REYXRhU2VjdGlvbixcbiAgICAgICAgYWN0aW9uQnV0dG9uTGFiZWw6ICdJbXBvcnQgVGVzdCBEYXRhJyxcbiAgICAgICAgZXhwYW5kZWQ6IGV4cGFuZGVkLFxuICAgICAgfSk7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiB2aXNpYmxlO1xuICB9XG5cbiAgYXN5bmMgb25NYWluQWN0aW9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmlzQXBwbHlpbmcpIHtcbiAgICAgIHJldHVybjsgLy8gUHJldmVudCBtdWx0aXBsZSBjbGlja3NcbiAgICB9XG4gICAgXG4gICAgdGhpcy5pc0FwcGx5aW5nID0gdHJ1ZTtcbiAgICBcbiAgICB0cnkge1xuICAgICAgdGhpcy5vbkFwcGx5U3VnZ2VzdGlvbkNsaWNrLmVtaXQoKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgLy8gUmVzZXQgbG9hZGluZyBzdGF0ZSBhZnRlciBhY3Rpb24gY29tcGxldGVzXG4gICAgICAvLyBJZiB5b3UgbmVlZCB0byBrZWVwIHRoZSBsb2FkaW5nIHN0YXRlIGxvbmdlciwgY2FsbCByZXNldEFwcGx5aW5nU3RhdGUoKSBtYW51YWxseVxuICAgICAgLy8gYWZ0ZXIgeW91ciBhc3luYyBvcGVyYXRpb24gY29tcGxldGVzXG4gICAgICB0aGlzLmlzQXBwbHlpbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvLyBNZXRob2QgdG8gcmVzZXQgbG9hZGluZyBzdGF0ZSAoY2FuIGJlIGNhbGxlZCBleHRlcm5hbGx5IGlmIG5lZWRlZClcbiAgcmVzZXRBcHBseWluZ1N0YXRlKCk6IHZvaWQge1xuICAgIHRoaXMuaXNBcHBseWluZyA9IGZhbHNlO1xuICB9XG5cbiAgLy8gUmVtb3ZlZCBnZXRCYWRnZUNsYXNzZXMgLSBub3cgdXNpbmcgQmFkZ2VDb21wb25lbnRcblxuICBnZXRTZWN0aW9uQm9yZGVyQ2xhc3Moc2VjdGlvbjogSW50ZXJuYWxJbnNpZ2h0U2VjdGlvbik6IHN0cmluZyB7XG4gICAgc3dpdGNoIChzZWN0aW9uLnZhcmlhbnQpIHtcbiAgICAgIGNhc2UgJ3dhcm5pbmcnOlxuICAgICAgICByZXR1cm4gJ2NxYS1ib3JkZXItbC00IGNxYS1ib3JkZXItbC15ZWxsb3ctNTAwJztcbiAgICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgICAgcmV0dXJuICdjcWEtYm9yZGVyLWwtNCBjcWEtYm9yZGVyLWwtcmVkLTUwMCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2NxYS1ib3JkZXItbC00IGNxYS1ib3JkZXItbC1ncmF5LTUwMCc7XG4gICAgfVxuICB9XG5cbiAgZ2V0TWV0YWRhdGFWYWx1ZUNsYXNzZXMoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmc7IGhpZ2hsaWdodD86IGJvb2xlYW4gfSk6IHN0cmluZyB7XG4gICAgLy8gQmFzZSBjbGFzc2VzIGZvciBhbGwgdmFsdWVzIChmb250LXNpemU6IDE0cHgsIGxpbmUtaGVpZ2h0OiAxOHB4LCBmb250LXdlaWdodDogNDAwKVxuICAgIHJldHVybiAnY3FhLWZvbnQtbm9ybWFsIGNxYS1sZWFkaW5nLVsxOHB4XSBjcWEtdHJhY2tpbmctbm9ybWFsJztcbiAgfVxuXG4gIGdldE1ldGFkYXRhVmFsdWUodmFsdWU6IHN0cmluZyB8IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZzsgaGlnaGxpZ2h0PzogYm9vbGVhbiB9KTogc3RyaW5nIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWUudmFsdWU7XG4gIH1cblxuICBnZXRNZXRhZGF0YVZhbHVlU3R5bGUoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmc7IGhpZ2hsaWdodD86IGJvb2xlYW4gfSk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIC8vIFVzZSB0aGUgc2hhcmVkIHV0aWxpdHkgZnVuY3Rpb24gZm9yIGNvbnNpc3RlbnQgY29sb3JzXG4gICAgcmV0dXJuIGdldE1ldGFkYXRhQ29sb3JTdHlsZShrZXksIHZhbHVlKTtcbiAgfVxuXG4gIGdldFNlY3Rpb25UaXRsZUNsYXNzZXMoc2VjdGlvbjogSW50ZXJuYWxJbnNpZ2h0U2VjdGlvbik6IHN0cmluZyB7XG4gICAgY29uc3QgYmFzZUNsYXNzZXMgPSBbJ2NxYS10ZXh0LXNtJywgJ2NxYS1mb250LWJvbGQnXTtcbiAgICBcbiAgICBzd2l0Y2ggKHNlY3Rpb24udmFyaWFudCkge1xuICAgICAgY2FzZSAnd2FybmluZyc6XG4gICAgICAgIHJldHVybiBbLi4uYmFzZUNsYXNzZXMsICdjcWEtdGV4dC15ZWxsb3ctODAwJ10uam9pbignICcpO1xuICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICByZXR1cm4gWy4uLmJhc2VDbGFzc2VzLCAnY3FhLXRleHQtcmVkLTYwMCddLmpvaW4oJyAnKTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIFsuLi5iYXNlQ2xhc3NlcywgJ2NxYS10ZXh0LWluayddLmpvaW4oJyAnKTtcbiAgICB9XG4gIH1cblxuICBnZXRTZWN0aW9uSWNvbkNvbG9yKHNlY3Rpb246IEludGVybmFsSW5zaWdodFNlY3Rpb24pOiBzdHJpbmcge1xuICAgIHN3aXRjaCAoc2VjdGlvbi52YXJpYW50KSB7XG4gICAgICBjYXNlICd3YXJuaW5nJzpcbiAgICAgICAgcmV0dXJuICdjcWEtdGV4dC15ZWxsb3ctODAwJztcbiAgICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgICAgcmV0dXJuICdjcWEtdGV4dC1yZWQtNjAwJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnY3FhLXRleHQtZ3JheS00MDAnO1xuICAgIH1cbiAgfVxufVxuXG5cbiIsIjxkaXYgaWQ9XCJjcWEtdWktcm9vdFwiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7IGJvcmRlci1yYWRpdXM6IDAuNXJlbTsgYm9yZGVyOiAxcHggc29saWQgI0U1RTdFQjsgYm94LXNoYWRvdzogMCAxcHggMnB4IDAgcmdiKDAgMCAwIC8gMC4wNSk7XCI+XG4gIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC00IGNxYS1weC1bMjFweF0gY3FhLXB5LTMgY3FhLWJvcmRlciBjcWEtYm9yZGVyLWdyYXktMjAwIGNxYS1yb3VuZGVkLTJ4bFwiPlxuICAgIDwhLS0gU2VjdGlvbiAxOiBCYWRnZXMgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yXCIgKm5nSWY9XCJ2aXNpYmxlQmFkZ2VzLmxlbmd0aCA+IDBcIj5cbiAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImlzUHJlcmVxdWlzaXRlTWlzc2luZyB8fCBpc1Rlc3REYXRhTWlzc2luZ1wiXG4gICAgICAgIGNsYXNzPVwiY3FhLXRleHQteWVsbG93LTUwMCBjcWEtdy02IGNxYS1oLTZcIj53YXJuaW5nPC9tYXQtaWNvbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC13cmFwIGNxYS1nYXAtMlwiPlxuICAgICAgICA8Y3FhLWJhZGdlIFxuICAgICAgICAgICpuZ0Zvcj1cImxldCBiYWRnZSBvZiB2aXNpYmxlQmFkZ2VzXCIgXG4gICAgICAgICAgW2xhYmVsXT1cImJhZGdlLmxhYmVsXCJcbiAgICAgICAgICBbaWNvbl09XCJiYWRnZS5pY29uXCJcbiAgICAgICAgICBbdmFyaWFudF09XCJiYWRnZS52YXJpYW50IHx8ICdkZWZhdWx0J1wiXG4gICAgICAgID48L2NxYS1iYWRnZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBTZWN0aW9uIDI6IFRpdGxlICYgRGVzY3JpcHRpb24gLS0+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTNcIj5cbiAgICAgIDxoMiBjbGFzcz1cImNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1sZyBjcWEtdGV4dC10aXRsZVwiPlxuICAgICAgICB7eyB0aXRsZSB9fVxuICAgICAgPC9oMj5cbiAgICAgIDxwIGNsYXNzPVwiY3FhLXRleHQtYmFzZSBjcWEtZm9udC1ub3JtYWwgY3FhLXRleHQtZGVzY3JpcHRpb25cIj5cbiAgICAgICAge3sgZGVzY3JpcHRpb24gfX1cbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cblxuICA8IS0tIFNlY3Rpb24gMzogTWV0YWRhdGEgU2VjdGlvbiAoYWx3YXlzIHZpc2libGUpIC0tPlxuICA8ZGl2ICpuZ0lmPVwibWV0YWRhdGFcIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWJnLXN1cmZhY2UtZGVmYXVsdCBjcWEtcm91bmRlZC14bCBjcWEtYm9yZGVyIGNxYS1ib3JkZXItYm9yZGVyLWxpZ2h0IGNxYS1weC00IGNxYS1weS0zIGNxYS1ib3JkZXItdC0yIGNxYS1ib3JkZXItdC1wcmltYXJ5LXN1cmZhY2VcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC13cmFwIGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0zXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbWV0YWRhdGEgfCBrZXl2YWx1ZTsgbGV0IGxhc3QgPSBsYXN0XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1iYXNlbGluZSBjcWEtZ2FwLTJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQteHMgY3FhLWZvbnQtbm9ybWFsIGNxYS10cmFja2luZy1ub3JtYWwgY3FhLWZvbnQtaW50ZXIgY3FhLXRleHQtbWV0YWRhdGEta2V5XCI+XG4gICAgICAgICAgICAgIHt7IGl0ZW0ua2V5IH19OlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldE1ldGFkYXRhVmFsdWVDbGFzc2VzKGl0ZW0ua2V5LCBpdGVtLnZhbHVlKVwiIFxuICAgICAgICAgICAgICBbbmdTdHlsZV09XCJnZXRNZXRhZGF0YVZhbHVlU3R5bGUoaXRlbS5rZXksIGl0ZW0udmFsdWUpXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjcWEtZm9udC1ub3JtYWwgY3FhLWxlYWRpbmctWzE4cHhdIGNxYS10cmFja2luZy1ub3JtYWwgY3FhLWZvbnQtaW50ZXIgY3FhLXRleHQtc21cIj5cbiAgICAgICAgICAgICAge3sgZ2V0TWV0YWRhdGFWYWx1ZShpdGVtLnZhbHVlKSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCIhbGFzdFwiIGNsYXNzPVwiY3FhLWgtNCBjcWEtdy1weCBjcWEtYmctZ3JheS0yMDBcIj48L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gU2VjdGlvbiA0OiBNZXRhZGF0YSB0b2dnbGUgLS0+XG4gICAgPGJ1dHRvbiAqbmdJZj1cIm1ldGFkYXRhICYmIChpc1ByZXJlcXVpc2l0ZU1pc3NpbmcgfHwgaXNUZXN0RGF0YU1pc3NpbmcpXCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImNxYS10ZXh0LXNtIGNxYS10ZXh0LXByaW1hcnktaG92ZXIgY3FhLWZvbnQtbWVkaXVtIGNxYS1pbmxpbmUtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMSBjcWEtY3Vyc29yLXBvaW50ZXIgY3FhLWJnLXRyYW5zcGFyZW50IGNxYS1ib3JkZXItMCBjcWEtcC0wIGNxYS1ob3ZlcjpjcWEtdGV4dC1wcmltYXJ5IGNxYS10cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAoY2xpY2spPVwidG9nZ2xlTWV0YWRhdGEoKVwiPlxuICAgICAgPHNwYW4+e3sgbWV0YWRhdGFFeHBhbmRlZCA/ICdIaWRlIGRldGFpbHMnIDogJ1Nob3cgZGV0YWlscycgfX08L3NwYW4+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJjcWEtdy00IGNxYS1oLTQgY3FhLXRleHQtWzE2cHhdIGNxYS1sZWFkaW5nLVsxNnB4XVwiPlxuICAgICAgICB7eyBtZXRhZGF0YUV4cGFuZGVkID8gJ2V4cGFuZF9sZXNzJyA6ICdleHBhbmRfbW9yZScgfX1cbiAgICAgIDwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgPCEtLSBTZWN0aW9uIDU6IFNlY3Rpb25zICh0b2dnbGUgdmlzaWJpbGl0eSkgLS0+XG4gIDxkaXYgKm5nSWY9XCJtZXRhZGF0YUV4cGFuZGVkICYmIHZpc2libGVTZWN0aW9ucz8ubGVuZ3RoXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC00XCI+XG4gICAgPGRpdlxuICAgICAgKm5nRm9yPVwibGV0IHNlY3Rpb24gb2YgdmlzaWJsZVNlY3Rpb25zXCJcbiAgICAgIGNsYXNzPVwiY3FhLWJvcmRlciBjcWEtYm9yZGVyLWdyYXktMjAwIGNxYS1yb3VuZGVkLW1kIGNxYS1iZy13aGl0ZSBjcWEtb3ZlcmZsb3ctaGlkZGVuXCJcbiAgICAgIFtuZ0NsYXNzXT1cImdldFNlY3Rpb25Cb3JkZXJDbGFzcyhzZWN0aW9uKVwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1wLTQgY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtM1wiPlxuICAgICAgICA8IS0tIFNlY3Rpb24gVGl0bGUgd2l0aCBJbmxpbmUgQ29sbGFwc2UgQnV0dG9uIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTJcIj5cbiAgICAgICAgICA8aDMgW25nQ2xhc3NdPVwiZ2V0U2VjdGlvblRpdGxlQ2xhc3NlcyhzZWN0aW9uKVwiIGNsYXNzPVwiY3FhLW0tMFwiPlxuICAgICAgICAgICAge3sgc2VjdGlvbi50aXRsZSB9fVxuICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cImNxYS1tbC1hdXRvIGNxYS1pbmxpbmUtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtY3Vyc29yLXBvaW50ZXIgY3FhLWJnLXRyYW5zcGFyZW50IGNxYS1ib3JkZXItMCBjcWEtcC0xIGNxYS1yb3VuZGVkLWZ1bGwgY3FhLWhvdmVyOmNxYS1iZy1ncmF5LTEwMCBjcWEtdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNlY3Rpb24oc2VjdGlvbilcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJzZWN0aW9uLmV4cGFuZGVkICE9PSBmYWxzZSA/ICdDb2xsYXBzZSBzZWN0aW9uJyA6ICdFeHBhbmQgc2VjdGlvbidcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBbbmdDbGFzc109XCJnZXRTZWN0aW9uSWNvbkNvbG9yKHNlY3Rpb24pXCIgY2xhc3M9XCJjcWEtdy00IGNxYS1oLTQgY3FhLXRleHQtWzE2cHhdIGNxYS1sZWFkaW5nLVsxNnB4XVwiPlxuICAgICAgICAgICAgICB7eyBzZWN0aW9uLmV4cGFuZGVkICE9PSBmYWxzZSA/ICdleHBhbmRfbGVzcycgOiAnZXhwYW5kX21vcmUnIH19XG4gICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIENvbGxhcHNpYmxlIENvbnRlbnQ6IFJlYXNvbiBhbmQgQWN0aW9uIEJ1dHRvbiAtLT5cbiAgICAgICAgPGRpdiAqbmdJZj1cInNlY3Rpb24uZXhwYW5kZWQgIT09IGZhbHNlXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0zXCI+XG4gICAgICAgICAgPCEtLSBSZWFzb24gLS0+XG4gICAgICAgICAgPHAgY2xhc3M9XCJjcWEtdGV4dC1zbSBjcWEtZm9udC1ub3JtYWwgY3FhLWxlYWRpbmctNCBjcWEtdGV4dC1uZXV0cmFsLTYwMFwiPlxuICAgICAgICAgICAgPHN0cm9uZz5SZWFzb246PC9zdHJvbmc+IHt7IHNlY3Rpb24ucmVhc29uIH19XG4gICAgICAgICAgPC9wPlxuICAgICAgICAgIFxuICAgICAgICAgIDwhLS0gQWN0aW9uIEJ1dHRvbiAtLT5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGNxYS1idXR0b25cbiAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICAgICAgKGNsaWNrZWQpPVwib25TZWN0aW9uQWN0aW9uKHNlY3Rpb24uaWQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgc2VjdGlvbi5hY3Rpb25CdXR0b25MYWJlbCB9fVxuICAgICAgICAgICAgPC9jcWEtYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgXG4gIDxjcWEtYnV0dG9uXG4gICAgICB2YXJpYW50PVwiZmlsbGVkXCJcbiAgICAgIFtpY29uXT1cImlzQXBwbHlpbmcgPyAnaG91cmdsYXNzX2VtcHR5JyA6ICdhdXRvX2F3ZXNvbWUnXCJcbiAgICAgIGljb25Qb3NpdGlvbj1cInN0YXJ0XCJcbiAgICAgIChjbGlja2VkKT1cIm9uTWFpbkFjdGlvbigpXCJcbiAgICAgIFtmdWxsV2lkdGhdPVwidHJ1ZVwiXG4gICAgICBbZGlzYWJsZWRdPVwiaXNBcHBseWluZ1wiXG4gICAgICBbaWNvbkNvbG9yXT1cImlzQXBwbHlpbmcgPyAnI0VBQjMwOCcgOiB1bmRlZmluZWRcIlxuICAgID5cbiAgICAgIHt7IGlzQXBwbHlpbmcgPyAnQXBwbHlpbmcgc3VnZ2VzdGlvbicgOiAnQXBwbHkgc3VnZ2VzdGlvbicgfX1cbiAgICA8L2NxYS1idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4gXG4iXX0=
201
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zaWdodC1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy9pbnNpZ2h0LWNhcmQvaW5zaWdodC1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy9pbnNpZ2h0LWNhcmQvaW5zaWdodC1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLHFCQUFxQixJQUFJLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7OztBQXdCbEcsTUFBTSxPQUFPLG9CQUFvQjtJQUxqQztRQU1XLFVBQUssR0FBVyxFQUFFLENBQUM7UUFDbkIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDMUIsWUFBTyxHQUFtQixFQUFFLENBQUM7UUFXNUIscUJBQWdCLEdBQVksSUFBSSxDQUFDO1FBQ2pDLDBCQUFxQixHQUFZLEtBQUssQ0FBQztRQUN2QyxzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFFNUMsb0NBQW9DO1FBQzVCLHlCQUFvQixHQUF5QixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRS9ELGdDQUFnQztRQUNoQyxlQUFVLEdBQVksS0FBSyxDQUFDO1FBRWxCLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUM3QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFxQyxDQUFDO1FBQ3RFLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDaEQsMkJBQXNCLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNsRCwrQkFBMEIsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3RELDBCQUFxQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7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LENBQUM7U0FDOUI7SUFDSCxDQUFDOztpSEF2TFUsb0JBQW9CO3FHQUFwQixvQkFBb0IsMm5CQ3pCakMsaXVYQW1IQTsyRkQxRmEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGtCQUFrQjs4QkFLbkIsS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR0YsTUFBTTtzQkFEVCxLQUFLO2dCQU9HLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBUUksY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBQ0csMEJBQTBCO3NCQUFuQyxNQUFNO2dCQUNHLHFCQUFxQjtzQkFBOUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXRNZXRhZGF0YVZhbHVlU3R5bGUgYXMgZ2V0TWV0YWRhdGFDb2xvclN0eWxlIH0gZnJvbSAnLi4vLi4vdXRpbHMvbWV0YWRhdGEtY29sb3JzLnV0aWwnO1xuaW1wb3J0IHsgQmFkZ2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9iYWRnZS9iYWRnZS5jb21wb25lbnQnO1xuXG4vLyBVc2UgQmFkZ2VDb21wb25lbnQgaW5wdXRzIGRpcmVjdGx5IGluc3RlYWQgb2YgYSBzZXBhcmF0ZSBpbnRlcmZhY2VcbmV4cG9ydCB0eXBlIEluc2lnaHRCYWRnZSA9IFBpY2s8QmFkZ2VDb21wb25lbnQsICdsYWJlbCcgfCAnaWNvbicgfCAndmFyaWFudCc+O1xuXG5leHBvcnQgaW50ZXJmYWNlIEluc2lnaHRNZXRhZGF0YSB7XG4gIFtrZXk6IHN0cmluZ106IHN0cmluZyB8IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZzsgaGlnaGxpZ2h0PzogYm9vbGVhbiB9O1xufVxuXG5pbnRlcmZhY2UgSW50ZXJuYWxJbnNpZ2h0U2VjdGlvbiB7XG4gIGlkOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHZhcmlhbnQ6ICd3YXJuaW5nJyB8ICdlcnJvcicgfCAnZGVmYXVsdCc7XG4gIHJlYXNvbjogc3RyaW5nO1xuICBhY3Rpb25CdXR0b25MYWJlbDogc3RyaW5nO1xuICBleHBhbmRlZD86IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS1pbnNpZ2h0LWNhcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW5zaWdodC1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBJbnNpZ2h0Q2FyZENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgZGVzY3JpcHRpb246IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIF9iYWRnZXM6IEluc2lnaHRCYWRnZVtdID0gW107XG4gIEBJbnB1dCgpXG4gIHNldCBiYWRnZXModmFsdWU6IEluc2lnaHRCYWRnZVtdKSB7XG4gICAgdGhpcy5fYmFkZ2VzID0gdmFsdWU7XG4gIH1cbiAgZ2V0IGJhZGdlcygpOiBJbnNpZ2h0QmFkZ2VbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2JhZGdlcztcbiAgfVxuICBASW5wdXQoKSBtZXRhZGF0YT86IEluc2lnaHRNZXRhZGF0YTtcbiAgQElucHV0KCkgcHJlcmVxdWlzaXRlU2VjdGlvbj86IHN0cmluZztcbiAgQElucHV0KCkgdGVzdERhdGFTZWN0aW9uPzogc3RyaW5nO1xuICBASW5wdXQoKSBtZXRhZGF0YUV4cGFuZGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgaXNQcmVyZXF1aXNpdGVNaXNzaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlzVGVzdERhdGFNaXNzaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gVHJhY2sgZXhwYW5kZWQgc3RhdGUgZm9yIHNlY3Rpb25zXG4gIHByaXZhdGUgc2VjdGlvbkV4cGFuZGVkU3RhdGU6IE1hcDxzdHJpbmcsIGJvb2xlYW4+ID0gbmV3IE1hcCgpO1xuICBcbiAgLy8gTG9hZGluZyBzdGF0ZSBmb3IgbWFpbiBhY3Rpb25cbiAgaXNBcHBseWluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBtZXRhZGF0YVRvZ2dsZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIHNlY3Rpb25Ub2dnbGUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgaWQ6IHN0cmluZzsgZXhwYW5kZWQ6IGJvb2xlYW4gfT4oKTtcbiAgQE91dHB1dCgpIHNlY3Rpb25BY3Rpb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgb25BcHBseVN1Z2dlc3Rpb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIG9uQXR0YWNoUHJlcmVxdWlzaXRlc0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgb25JbXBvcnRUZXN0RGF0YUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHRvZ2dsZU1ldGFkYXRhKCk6IHZvaWQge1xuICAgIHRoaXMubWV0YWRhdGFFeHBhbmRlZCA9ICF0aGlzLm1ldGFkYXRhRXhwYW5kZWQ7XG4gICAgdGhpcy5tZXRhZGF0YVRvZ2dsZS5lbWl0KHRoaXMubWV0YWRhdGFFeHBhbmRlZCk7XG4gIH1cblxuICB0b2dnbGVTZWN0aW9uKHNlY3Rpb246IEludGVybmFsSW5zaWdodFNlY3Rpb24pOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50U3RhdGUgPSB0aGlzLnNlY3Rpb25FeHBhbmRlZFN0YXRlLmdldChzZWN0aW9uLmlkKSA/PyAoc2VjdGlvbi5leHBhbmRlZCA/PyB0cnVlKTtcbiAgICBjb25zdCBuZXdTdGF0ZSA9ICFjdXJyZW50U3RhdGU7XG4gICAgdGhpcy5zZWN0aW9uRXhwYW5kZWRTdGF0ZS5zZXQoc2VjdGlvbi5pZCwgbmV3U3RhdGUpO1xuICAgIFxuICAgIHRoaXMuc2VjdGlvblRvZ2dsZS5lbWl0KHsgaWQ6IHNlY3Rpb24uaWQsIGV4cGFuZGVkOiBuZXdTdGF0ZSB9KTtcbiAgfVxuXG4gIG9uU2VjdGlvbkFjdGlvbihzZWN0aW9uSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2VjdGlvbkFjdGlvbkNsaWNrLmVtaXQoc2VjdGlvbklkKTtcbiAgICBcbiAgICAvLyBFbWl0IHNwZWNpZmljIGV2ZW50cyBmb3Iga25vd24gYWN0aW9uc1xuICAgIGlmIChzZWN0aW9uSWQgPT09ICdwcmVyZXF1aXNpdGUnKSB7XG4gICAgICB0aGlzLm9uQXR0YWNoUHJlcmVxdWlzaXRlc0NsaWNrLmVtaXQoKTtcbiAgICB9IGVsc2UgaWYgKHNlY3Rpb25JZCA9PT0gJ3Rlc3QtZGF0YScpIHtcbiAgICAgIHRoaXMub25JbXBvcnRUZXN0RGF0YUNsaWNrLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgdmlzaWJsZUJhZGdlcygpOiBJbnNpZ2h0QmFkZ2VbXSB7XG4gICAgY29uc3QgdmlzaWJsZTogSW5zaWdodEJhZGdlW10gPSBbXTtcbiAgICBpZiAodGhpcy5pc1ByZXJlcXVpc2l0ZU1pc3NpbmcpIHtcbiAgICAgIHZpc2libGUucHVzaCh7IGxhYmVsOiAnUHJlcmVxdWlzaXRlIE1pc3NpbmcnLCB2YXJpYW50OiAnd2FybmluZycgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmlzVGVzdERhdGFNaXNzaW5nKSB7XG4gICAgICB2aXNpYmxlLnB1c2goeyBsYWJlbDogJ1Rlc3QgRGF0YSBNaXNzaW5nJywgdmFyaWFudDogJ2Vycm9yJyB9KTtcbiAgICB9XG4gICAgLy8gQWxzbyBpbmNsdWRlIGFueSBjdXN0b20gYmFkZ2VzXG4gICAgaWYgKHRoaXMuYmFkZ2VzKSB7XG4gICAgICB2aXNpYmxlLnB1c2goLi4udGhpcy5iYWRnZXMpO1xuICAgIH1cbiAgICByZXR1cm4gdmlzaWJsZTtcbiAgfVxuXG4gIGdldCB2aXNpYmxlU2VjdGlvbnMoKTogSW50ZXJuYWxJbnNpZ2h0U2VjdGlvbltdIHtcbiAgICBjb25zdCB2aXNpYmxlOiBJbnRlcm5hbEluc2lnaHRTZWN0aW9uW10gPSBbXTtcbiAgICBcbiAgICBpZiAodGhpcy5pc1ByZXJlcXVpc2l0ZU1pc3NpbmcgJiYgdGhpcy5wcmVyZXF1aXNpdGVTZWN0aW9uKSB7XG4gICAgICAvLyBVc2Ugc3RvcmVkIHN0YXRlIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIGRlZmF1bHQgdG8gdHJ1ZVxuICAgICAgY29uc3QgZXhwYW5kZWQgPSB0aGlzLnNlY3Rpb25FeHBhbmRlZFN0YXRlLmhhcygncHJlcmVxdWlzaXRlJykgXG4gICAgICAgID8gdGhpcy5zZWN0aW9uRXhwYW5kZWRTdGF0ZS5nZXQoJ3ByZXJlcXVpc2l0ZScpIVxuICAgICAgICA6IHRydWU7XG4gICAgICBcbiAgICAgIHZpc2libGUucHVzaCh7XG4gICAgICAgIGlkOiAncHJlcmVxdWlzaXRlJyxcbiAgICAgICAgdGl0bGU6ICdQcmVyZXF1aXNpdGUgTWlzc2luZycsXG4gICAgICAgIHZhcmlhbnQ6ICd3YXJuaW5nJyxcbiAgICAgICAgcmVhc29uOiB0aGlzLnByZXJlcXVpc2l0ZVNlY3Rpb24sXG4gICAgICAgIGFjdGlvbkJ1dHRvbkxhYmVsOiAnQXR0YWNoIFByZXJlcXVpc2l0ZXMnLFxuICAgICAgICBleHBhbmRlZDogZXhwYW5kZWQsXG4gICAgICB9KTtcbiAgICB9XG4gICAgXG4gICAgaWYgKHRoaXMuaXNUZXN0RGF0YU1pc3NpbmcgJiYgdGhpcy50ZXN0RGF0YVNlY3Rpb24pIHtcbiAgICAgIC8vIFVzZSBzdG9yZWQgc3RhdGUgaWYgYXZhaWxhYmxlLCBvdGhlcndpc2UgZGVmYXVsdCB0byB0cnVlXG4gICAgICBjb25zdCBleHBhbmRlZCA9IHRoaXMuc2VjdGlvbkV4cGFuZGVkU3RhdGUuaGFzKCd0ZXN0LWRhdGEnKVxuICAgICAgICA/IHRoaXMuc2VjdGlvbkV4cGFuZGVkU3RhdGUuZ2V0KCd0ZXN0LWRhdGEnKSFcbiAgICAgICAgOiB0cnVlO1xuICAgICAgXG4gICAgICB2aXNpYmxlLnB1c2goe1xuICAgICAgICBpZDogJ3Rlc3QtZGF0YScsXG4gICAgICAgIHRpdGxlOiAnVGVzdCBEYXRhIE1pc3NpbmcnLFxuICAgICAgICB2YXJpYW50OiAnZXJyb3InLFxuICAgICAgICByZWFzb246IHRoaXMudGVzdERhdGFTZWN0aW9uLFxuICAgICAgICBhY3Rpb25CdXR0b25MYWJlbDogJ0ltcG9ydCBUZXN0IERhdGEnLFxuICAgICAgICBleHBhbmRlZDogZXhwYW5kZWQsXG4gICAgICB9KTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIHZpc2libGU7XG4gIH1cblxuICBhc3luYyBvbk1haW5BY3Rpb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuaXNBcHBseWluZykge1xuICAgICAgcmV0dXJuOyAvLyBQcmV2ZW50IG11bHRpcGxlIGNsaWNrc1xuICAgIH1cbiAgICBcbiAgICB0aGlzLmlzQXBwbHlpbmcgPSB0cnVlO1xuICAgIFxuICAgIHRyeSB7XG4gICAgICB0aGlzLm9uQXBwbHlTdWdnZXN0aW9uQ2xpY2suZW1pdCgpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAvLyBSZXNldCBsb2FkaW5nIHN0YXRlIGFmdGVyIGFjdGlvbiBjb21wbGV0ZXNcbiAgICAgIC8vIElmIHlvdSBuZWVkIHRvIGtlZXAgdGhlIGxvYWRpbmcgc3RhdGUgbG9uZ2VyLCBjYWxsIHJlc2V0QXBwbHlpbmdTdGF0ZSgpIG1hbnVhbGx5XG4gICAgICAvLyBhZnRlciB5b3VyIGFzeW5jIG9wZXJhdGlvbiBjb21wbGV0ZXNcbiAgICAgIHRoaXMuaXNBcHBseWluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8vIE1ldGhvZCB0byByZXNldCBsb2FkaW5nIHN0YXRlIChjYW4gYmUgY2FsbGVkIGV4dGVybmFsbHkgaWYgbmVlZGVkKVxuICByZXNldEFwcGx5aW5nU3RhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5pc0FwcGx5aW5nID0gZmFsc2U7XG4gIH1cblxuICAvLyBSZW1vdmVkIGdldEJhZGdlQ2xhc3NlcyAtIG5vdyB1c2luZyBCYWRnZUNvbXBvbmVudFxuXG4gIGdldFNlY3Rpb25Cb3JkZXJDbGFzcyhzZWN0aW9uOiBJbnRlcm5hbEluc2lnaHRTZWN0aW9uKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHNlY3Rpb24udmFyaWFudCkge1xuICAgICAgY2FzZSAnd2FybmluZyc6XG4gICAgICAgIHJldHVybiAnY3FhLWJvcmRlci1sLTQgY3FhLWJvcmRlci1sLXllbGxvdy01MDAnO1xuICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICByZXR1cm4gJ2NxYS1ib3JkZXItbC00IGNxYS1ib3JkZXItbC1yZWQtNTAwJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnY3FhLWJvcmRlci1sLTQgY3FhLWJvcmRlci1sLWdyYXktNTAwJztcbiAgICB9XG4gIH1cblxuICBnZXRNZXRhZGF0YVZhbHVlQ2xhc3NlcyhrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZzsgaGlnaGxpZ2h0PzogYm9vbGVhbiB9KTogc3RyaW5nIHtcbiAgICAvLyBCYXNlIGNsYXNzZXMgZm9yIGFsbCB2YWx1ZXMgKGZvbnQtc2l6ZTogMTRweCwgbGluZS1oZWlnaHQ6IDE4cHgsIGZvbnQtd2VpZ2h0OiA0MDApXG4gICAgcmV0dXJuICdjcWEtZm9udC1ub3JtYWwgY3FhLWxlYWRpbmctWzE4cHhdIGNxYS10cmFja2luZy1ub3JtYWwnO1xuICB9XG5cbiAgZ2V0TWV0YWRhdGFWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nOyBoaWdobGlnaHQ/OiBib29sZWFuIH0pOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZS52YWx1ZTtcbiAgfVxuXG4gIGdldE1ldGFkYXRhVmFsdWVTdHlsZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZzsgaGlnaGxpZ2h0PzogYm9vbGVhbiB9KTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgLy8gVXNlIHRoZSBzaGFyZWQgdXRpbGl0eSBmdW5jdGlvbiBmb3IgY29uc2lzdGVudCBjb2xvcnNcbiAgICByZXR1cm4gZ2V0TWV0YWRhdGFDb2xvclN0eWxlKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgZ2V0U2VjdGlvblRpdGxlQ2xhc3NlcyhzZWN0aW9uOiBJbnRlcm5hbEluc2lnaHRTZWN0aW9uKTogc3RyaW5nIHtcbiAgICBjb25zdCBiYXNlQ2xhc3NlcyA9IFsnY3FhLXRleHQtc20nLCAnY3FhLWxlYWRpbmctWzE3cHhdJywgJ2NxYS1mb250LXNlbWlib2xkJ107XG4gICAgXG4gICAgc3dpdGNoIChzZWN0aW9uLnZhcmlhbnQpIHtcbiAgICAgIGNhc2UgJ3dhcm5pbmcnOlxuICAgICAgICByZXR1cm4gWy4uLmJhc2VDbGFzc2VzLCAnY3FhLXRleHQtWyM3ODM1MEZdJ10uam9pbignICcpO1xuICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICByZXR1cm4gWy4uLmJhc2VDbGFzc2VzLCAnY3FhLXRleHQtWyM4ODEzMzddJ10uam9pbignICcpO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gWy4uLmJhc2VDbGFzc2VzLCAnY3FhLXRleHQtaW5rJ10uam9pbignICcpO1xuICAgIH1cbiAgfVxuXG4gIGdldFNlY3Rpb25JY29uQ29sb3Ioc2VjdGlvbjogSW50ZXJuYWxJbnNpZ2h0U2VjdGlvbik6IHN0cmluZyB7XG4gICAgc3dpdGNoIChzZWN0aW9uLnZhcmlhbnQpIHtcbiAgICAgIGNhc2UgJ3dhcm5pbmcnOlxuICAgICAgICByZXR1cm4gJ2NxYS10ZXh0LVsjNzgzNTBGXSc7XG4gICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgIHJldHVybiAnY3FhLXRleHQtWyM4ODEzMzddJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnY3FhLXRleHQtZ3JheS00MDAnO1xuICAgIH1cbiAgfVxufVxuXG5cbiIsIjxkaXYgaWQ9XCJjcWEtdWktcm9vdFwiPlxuICA8ZGl2IGNsYXNzPVwiY3FhLWZvbnQtaW50ZXIgY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtNCBjcWEtcHgtWzIxcHhdIGNxYS1weS0zIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1bI0VDRUNFQ10gY3FhLXJvdW5kZWQteGwgY3FhLXNoYWRvdy1jYXJkXCI+XG4gICAgPCEtLSBTZWN0aW9uIDE6IEJhZGdlcyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTMgY3FhcHktWzEuNV1cIiAqbmdJZj1cInZpc2libGVCYWRnZXMubGVuZ3RoID4gMFwiPlxuICAgICAgPHN2ZyB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0xNC40ODY2IDEyLjAwMDVMOS4xNTMyOSAyLjY2NzE0QzkuMDM3IDIuNDYxOTQgOC44NjgzNiAyLjI5MTI3IDguNjY0NTcgMi4xNzI1MkM4LjQ2MDc4IDIuMDUzNzggOC4yMjkxNSAxLjk5MTIxIDcuOTkzMjkgMS45OTEyMUM3Ljc1NzQzIDEuOTkxMjEgNy41MjU3OSAyLjA1Mzc4IDcuMzIyIDIuMTcyNTJDNy4xMTgyMiAyLjI5MTI3IDYuOTQ5NTggMi40NjE5NCA2LjgzMzI5IDIuNjY3MTRMMS40OTk5NSAxMi4wMDA1QzEuMzgyNDEgMTIuMjA0IDEuMzIwNzcgMTIuNDM1MSAxLjMyMTI5IDEyLjY3MDFDMS4zMjE4MSAxMi45MDUyIDEuMzg0NDcgMTMuMTM2IDEuNTAyOTIgMTMuMzM5QzEuNjIxMzYgMTMuNTQyMSAxLjc5MTM4IDEzLjcxMDIgMS45OTU3NSAxMy44MjY0QzIuMjAwMTEgMTMuOTQyNSAyLjQzMTU2IDE0LjAwMjYgMi42NjY2MiAxNC4wMDA1SDEzLjMzMzNDMTMuNTY3MiAxNC4wMDAyIDEzLjc5NyAxMy45Mzg1IDEzLjk5OTUgMTMuODIxM0MxNC4yMDIgMTMuNzA0MiAxNC4zNzAxIDEzLjUzNTkgMTQuNDg3IDEzLjMzMzJDMTQuNjAzOCAxMy4xMzA2IDE0LjY2NTMgMTIuOTAwNyAxNC42NjUzIDEyLjY2NjhDMTQuNjY1MiAxMi40MzI5IDE0LjYwMzYgMTIuMjAzMSAxNC40ODY2IDEyLjAwMDVaXCIgc3Ryb2tlPVwiI0UyQUMyMFwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk04IDZWOC42NjY2N1wiIHN0cm9rZT1cIiNFMkFDMjBcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNOCAxMS4zMzNIOC4wMDY2N1wiIHN0cm9rZT1cIiNFMkFDMjBcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LXdyYXAgY3FhLWdhcC0yXCI+XG4gICAgICAgIDxjcWEtYmFkZ2UgXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGJhZGdlIG9mIHZpc2libGVCYWRnZXNcIiBcbiAgICAgICAgICBbbGFiZWxdPVwiYmFkZ2UubGFiZWxcIlxuICAgICAgICAgIFtpY29uXT1cImJhZGdlLmljb25cIlxuICAgICAgICAgIFt2YXJpYW50XT1cImJhZGdlLnZhcmlhbnQgfHwgJ2RlZmF1bHQnXCJcbiAgICAgICAgPjwvY3FhLWJhZGdlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFNlY3Rpb24gMjogVGl0bGUgJiBEZXNjcmlwdGlvbiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtM1wiPlxuICAgICAgPGgyIGNsYXNzPVwiY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LWxnIGNxYS1sZWFkaW5nLVsyMnB4XSBjcWEtdGV4dC10aXRsZVwiPlxuICAgICAgICB7eyB0aXRsZSB9fVxuICAgICAgPC9oMj5cbiAgICAgIDxwIGNsYXNzPVwiY3FhLXRleHQtYmFzZSBjcWEtZm9udC1ub3JtYWwgY3FhLXRleHQtZGVzY3JpcHRpb25cIj5cbiAgICAgICAge3sgZGVzY3JpcHRpb24gfX1cbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cblxuICA8IS0tIFNlY3Rpb24gMzogTWV0YWRhdGEgU2VjdGlvbiAoYWx3YXlzIHZpc2libGUpIC0tPlxuICA8ZGl2ICpuZ0lmPVwibWV0YWRhdGFcIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWJnLXN1cmZhY2UtZGVmYXVsdCBjcWEtcm91bmRlZC1bMTBweF0gY3FhLXB4LTQgY3FhLXB5LTMgY3FhLWJvcmRlci10IGNxYS1ib3JkZXItdC1wcmltYXJ5LXN1cmZhY2VcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC13cmFwIGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC1bMjVweF1cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBtZXRhZGF0YSB8IGtleXZhbHVlOyBsZXQgbGFzdCA9IGxhc3RcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLVs2cHhdXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LXhzIGNxYS1mb250LW5vcm1hbCBjcWEtZm9udC1pbnRlciBjcWEtdGV4dC1tZXRhZGF0YS1rZXlcIj5cbiAgICAgICAgICAgICAge3sgaXRlbS5rZXkgfX06XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TWV0YWRhdGFWYWx1ZUNsYXNzZXMoaXRlbS5rZXksIGl0ZW0udmFsdWUpXCIgXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cImdldE1ldGFkYXRhVmFsdWVTdHlsZShpdGVtLmtleSwgaXRlbS52YWx1ZSlcIlxuICAgICAgICAgICAgICBjbGFzcz1cImNxYS1mb250LW5vcm1hbCBjcWEtbGVhZGluZy1bMThweF0gY3FhLWZvbnQtaW50ZXIgY3FhLXRleHQtc20gY3FhLXRleHQtdGl0bGVcIj5cbiAgICAgICAgICAgICAge3sgZ2V0TWV0YWRhdGFWYWx1ZShpdGVtLnZhbHVlKSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCIhbGFzdFwiIGNsYXNzPVwiY3FhLWgtNCBjcWEtdy1weCBjcWEtYmctZ3JheS0yMDBcIj48L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gU2VjdGlvbiA0OiBNZXRhZGF0YSB0b2dnbGUgLS0+XG4gICAgPGJ1dHRvbiAqbmdJZj1cIm1ldGFkYXRhICYmIChpc1ByZXJlcXVpc2l0ZU1pc3NpbmcgfHwgaXNUZXN0RGF0YU1pc3NpbmcpXCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImNxYS10ZXh0LXNtIGNxYS10ZXh0LXByaW1hcnkgY3FhLWlubGluZS1mbGV4IGNxYS1mb250LWludGVyIGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC1bNnB4XVwiXG4gICAgICAoY2xpY2spPVwidG9nZ2xlTWV0YWRhdGEoKVwiPlxuICAgICAgPHNwYW4+e3sgbWV0YWRhdGFFeHBhbmRlZCA/ICdIaWRlIGRldGFpbHMnIDogJ1Nob3cgZGV0YWlscycgfX08L3NwYW4+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJjcWEtdy1bMTRweF0gY3FhLWgtWzE0cHhdIGNxYS10ZXh0LVsxNHB4XSBjcWEtbGVhZGluZy1bMTRweF1cIj5cbiAgICAgICAge3sgbWV0YWRhdGFFeHBhbmRlZCA/ICdleHBhbmRfbGVzcycgOiAnZXhwYW5kX21vcmUnIH19XG4gICAgICA8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuXG4gIDwhLS0gU2VjdGlvbiA1OiBTZWN0aW9ucyAodG9nZ2xlIHZpc2liaWxpdHkpIC0tPlxuICA8ZGl2ICpuZ0lmPVwibWV0YWRhdGFFeHBhbmRlZCAmJiB2aXNpYmxlU2VjdGlvbnM/Lmxlbmd0aFwiIGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtNFwiPlxuICAgIDxkaXZcbiAgICAgICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIHZpc2libGVTZWN0aW9uc1wiXG4gICAgICBjbGFzcz1cImNxYS1ib3JkZXItbC00IGNxYS1ib3JkZXItWyNGQkJGMjRdIGNxYS1yb3VuZGVkLVsxMHB4XSBjcWEtb3ZlcmZsb3ctaGlkZGVuXCJcbiAgICAgIFtuZ0NsYXNzXT1cImdldFNlY3Rpb25Cb3JkZXJDbGFzcyhzZWN0aW9uKVwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1wLVsxMHB4XSBjcWEtcGwtWzIwcHhdIGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTNcIj5cbiAgICAgICAgPCEtLSBTZWN0aW9uIFRpdGxlIHdpdGggSW5saW5lIENvbGxhcHNlIEJ1dHRvbiAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yXCI+XG4gICAgICAgICAgPGgzIFtuZ0NsYXNzXT1cImdldFNlY3Rpb25UaXRsZUNsYXNzZXMoc2VjdGlvbilcIiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAge3sgc2VjdGlvbi50aXRsZSB9fVxuICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cImNxYS1tbC1hdXRvIGNxYS1pbmxpbmUtZmxleFwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2VjdGlvbihzZWN0aW9uKVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInNlY3Rpb24uZXhwYW5kZWQgIT09IGZhbHNlID8gJ0NvbGxhcHNlIHNlY3Rpb24nIDogJ0V4cGFuZCBzZWN0aW9uJ1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG1hdC1pY29uIFtuZ0NsYXNzXT1cImdldFNlY3Rpb25JY29uQ29sb3Ioc2VjdGlvbilcIiBjbGFzcz1cImNxYS13LTQgY3FhLWgtNCBjcWEtdGV4dC1bMTZweF0gY3FhLWxlYWRpbmctWzE2cHhdXCI+XG4gICAgICAgICAgICAgIHt7IHNlY3Rpb24uZXhwYW5kZWQgIT09IGZhbHNlID8gJ2V4cGFuZF9sZXNzJyA6ICdleHBhbmRfbW9yZScgfX1cbiAgICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gQ29sbGFwc2libGUgQ29udGVudDogUmVhc29uIGFuZCBBY3Rpb24gQnV0dG9uIC0tPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2VjdGlvbi5leHBhbmRlZCAhPT0gZmFsc2VcIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLVsxMHB4XVwiPlxuICAgICAgICAgIDwhLS0gUmVhc29uIC0tPlxuICAgICAgICAgIDxwIGNsYXNzPVwiY3FhLXRleHQtc20gY3FhLWZvbnQtbm9ybWFsIGNxYS1sZWFkaW5nLVsxOHB4XSBjcWEtdGV4dC1uZXV0cmFsLTYwMFwiPlxuICAgICAgICAgICAgUmVhc29uOiB7eyBzZWN0aW9uLnJlYXNvbiB9fVxuICAgICAgICAgIDwvcD5cbiAgICAgICAgICBcbiAgICAgICAgICA8IS0tIEFjdGlvbiBCdXR0b24gLS0+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxjcWEtYnV0dG9uXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgICAgIChjbGlja2VkKT1cIm9uU2VjdGlvbkFjdGlvbihzZWN0aW9uLmlkKVwiXG4gICAgICAgICAgICAgIFtjdXN0b21DbGFzc109XCInY3FhLXB5LVs5cHhdIGNxYS10ZXh0LVsxNHB4XSBjcWEtbGVhZGluZy1bMTdweF0gY3FhLWJvcmRlci1zbGF0ZSBjcWEtdGV4dC1zbGF0ZSdcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBzZWN0aW9uLmFjdGlvbkJ1dHRvbkxhYmVsIH19XG4gICAgICAgICAgICA8L2NxYS1idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICBcbiAgPGNxYS1idXR0b25cbiAgICAgIHZhcmlhbnQ9XCJmaWxsZWRcIlxuICAgICAgKGNsaWNrZWQpPVwib25NYWluQWN0aW9uKClcIlxuICAgICAgW2Rpc2FibGVkXT1cImlzQXBwbHlpbmdcIlxuICAgICAgW2N1c3RvbUNsYXNzXT1cIichY3FhLXctZnVsbCAhY3FhLXRleHQtWzE0cHhdICFjcWEtbGVhZGluZy1bMjBweF0gIWNxYS1mb250LXNlbWlib2xkJ1wiXG4gICAgPlxuICAgICAgPHN2ZyB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk05LjAxODgyIDBDOS4xMjk3OSAwLjA0NTQ3NjcgOS4xNzcxOCAwLjE1NjUzIDkuMjIyNjEgMC4yNTk2OTFDOS4yNDUzOSAwLjMxOTc5OSA5LjI2NjI4IDAuMzgwMjM0IDkuMjg2NTcgMC40NDExNUM5LjI5NDUyIDAuNDY0NDkzIDkuMzAyNDYgMC40ODc4MzYgOS4zMTA2NSAwLjUxMTg4NkM5LjQxNjEzIDAuODI2MDA5IDkuNTEwMDggMS4xNDM1IDkuNjA0NTcgMS40NjA3NkM5LjYyNTkzIDEuNTMyMzggOS42NDczOSAxLjYwMzk3IDkuNjY4ODUgMS42NzU1N0M5Ljc3ODEgMi4wNDAwNyA5Ljg4NjU0IDIuNDA0OCA5Ljk5NDM4IDIuNzY5NjlDMTAuMDA5NSAyLjgyMDkzIDEwLjAyNDcgMi44NzIxOCAxMC4wMzk4IDIuOTIzNDJDMTAuMDgyNiAzLjA2NzkgMTAuMTI1MiAzLjIxMjM5IDEwLjE2NzcgMy4zNTY5NEMxMC4yNTczIDMuNjYyMzkgMTAuMzQ5NSAzLjk2Njk1IDEwLjQ0NzYgNC4yNzAwMkMxMC40NTYxIDQuMjk2NTMgMTAuNDY0NyA0LjMyMzA1IDEwLjQ3MzUgNC4zNTAzNkMxMC43Mjg0IDUuMTI5OTkgMTEuMDg5NiA1LjgyODc1IDExLjY4MTggNi40MjM5M0MxMS42OTY1IDYuNDM5NCAxMS43MTExIDYuNDU0ODggMTEuNzI2MiA2LjQ3MDgzQzExLjk3OSA2LjcyODc1IDEyLjMwMzQgNi45MzU0MSAxMi42Mjc2IDcuMTAyMjFDMTIuNjQ0MSA3LjExMDg1IDEyLjY2MDYgNy4xMTk0OCAxMi42Nzc2IDcuMTI4MzhDMTMuNjMxNyA3LjYxODUxIDE0Ljc3OSA3LjgzNDA3IDE1LjgxMjQgOC4xMjEwMUMxNi4yNjUyIDguMjQ2ODEgMTYuNzE2NiA4LjM3NjU4IDE3LjE2NjMgOC41MTIwNkMxNy4xOTc5IDguNTIxNTcgMTcuMjI5NiA4LjUzMTA3IDE3LjI2MTIgOC41NDA1NUMxNy4zNTU3IDguNTY4OSAxNy40NSA4LjU5Nzc0IDE3LjU0NDIgOC42MjY5NEMxNy41NjYyIDguNjMzNTggMTcuNTg4MiA4LjY0MDIzIDE3LjYxMDggOC42NDcwN0MxNy43NDA2IDguNjg4MTIgMTcuODY0OCA4LjczNjU4IDE3Ljk3MTMgOC44MjA1NEMxOC4wMDM4IDguODg4MzcgMTguMDAzOCA4Ljg4ODM3IDE3Ljk5NSA4Ljk1NjE5QzE3Ljg5MTMgOS4wNTQ3MiAxNy43ODg0IDkuMTAwOTIgMTcuNjUxNiA5LjE0NTk5QzE3LjYzMiA5LjE1MjY0IDE3LjYxMjQgOS4xNTkzIDE3LjU5MjMgOS4xNjYxNUMxNy4zNjEyIDkuMjQzNjYgMTcuMTI3IDkuMzExNDkgMTYuODkyNSA5LjM3ODcxQzE2Ljg0NDQgOS4zOTI2MSAxNi43OTYzIDkuNDA2NTEgMTYuNzQ4MiA5LjQyMDQyQzE2LjQ1MTQgOS41MDYwMyAxNi4xNTQyIDkuNTg5OCAxNS44NTY2IDkuNjcyNjNDMTUuNDY0NiA5Ljc4MTc1IDE1LjA3MzMgOS44OTI2OCAxNC42ODIzIDEwLjAwNDlDMTQuNjE4MiAxMC4wMjMyIDE0LjU1NDEgMTAuMDQxNiAxNC40OSAxMC4wNTk4QzE0LjE1MzQgMTAuMTU1NyAxMy44MTg1IDEwLjI1NTEgMTMuNDg2MyAxMC4zNjQyQzEzLjQ1ODcgMTAuMzczMiAxMy40MzEyIDEwLjM4MjIgMTMuNDAyOCAxMC4zOTE1QzEyLjI5MDIgMTAuNzYxNiAxMS40NDIyIDExLjQ1MjIgMTAuOTExNCAxMi40NjJDMTAuNjI1MyAxMy4wMjk1IDEwLjQ1NjUgMTMuNjQzMiAxMC4yODQzIDE0LjI0ODlDMTAuMjM3NyAxNC40MTI0IDEwLjE4ODIgMTQuNTc0OSAxMC4xMzgxIDE0LjczNzRDMTAuMDk4OCAxNC44NjUyIDEwLjA2MDQgMTQuOTkzMyAxMC4wMjMgMTUuMTIxNkMxMC4wMTg1IDE1LjEzNjkgMTAuMDE0MSAxNS4xNTIyIDEwLjAwOTUgMTUuMTY3OUM5Ljk4Nzg4IDE1LjI0MTkgOS45NjYzOCAxNS4zMTU5IDkuOTQ1MDMgMTUuMzg5OUM5Ljg5MDM5IDE1LjU3NzYgOS44MzE1NiAxNS43NjM3IDkuNzcxMTEgMTUuOTQ5OEM5LjY2MzgzIDE2LjI4MDQgOS41NjYyIDE2LjYxMzUgOS40NjkxNyAxNi45NDdDOS4zMjI4OCAxNy40NDkxIDkuMzIyODggMTcuNDQ5MSA5LjIzOTkzIDE3LjY5MDVDOS4yMzQ0MyAxNy43MDY3IDkuMjI4OTMgMTcuNzIyOSA5LjIyMzI2IDE3LjczOTZDOS4xOTI5OCAxNy44MjU2IDkuMTYxODMgMTcuOTA0NyA5LjEwNDUzIDE3Ljk3NzRDOS4wMTczNCAxNy45OTU4IDkuMDE3MzQgMTcuOTk1OCA4LjkzOTAxIDE4QzguODQ5NDYgMTcuODc1MiA4Ljc5MDE2IDE3Ljc1NDIgOC43NDI2NSAxNy42MTAyQzguNzM1NzQgMTcuNTg5NyA4LjcyODgyIDE3LjU2OTMgOC43MjE3IDE3LjU0ODNDOC42MzM2OCAxNy4yODUgOC41NTUwMiAxNy4wMTg5IDguNDc2MzQgMTYuNzUyOUM4LjQ1ODMyIDE2LjY5MjEgOC40NDAyMiAxNi42MzEzIDguNDIyMTEgMTYuNTcwNUM4LjI4NzIgMTYuMTE3MyA4LjE1NDUxIDE1LjY2MzUgOC4wMjIwMiAxNS4yMDk2QzcuNDcwMTQgMTIuOTY0NSA3LjQ3MDE0IDEyLjk2NDUgNi4wNzggMTEuMTQ5M0M2LjA1NTY5IDExLjEzMTkgNi4wMzMzOCAxMS4xMTQ1IDYuMDEwMzkgMTEuMDk2NkM1LjA5ODI2IDEwLjM5OCAzLjg5NjY3IDEwLjEzOTQgMi43OTYzIDkuODM2MjdDMi41MjQxNSA5Ljc2MTI0IDIuMjUyMSA5LjY4NTg3IDEuOTgwMDYgOS42MTA0NkMxLjk1NjI4IDkuNjAzODYgMS45NTYyOCA5LjYwMzg2IDEuOTMyMDEgOS41OTcxNEMxLjUzOTYyIDkuNDg4MzQgMS4xNDczNSA5LjM3OTI1IDAuNzU2NDQ4IDkuMjY1NjZDMC43Mzk5MTEgOS4yNjA4OSAwLjcyMzM3NSA5LjI1NjEyIDAuNzA2MzM4IDkuMjUxMjFDMC4xMDU3OTggOS4wNzc2NyAwLjEwNTc5OCA5LjA3NzY3IDAuMDAxMjkzMDcgOC45NTYxOUMtMC4wMDE2NjI1MiA4LjkwMTA4IC0wLjAwMTY2MjUyIDguOTAxMDggMC4wMjQ5Mzc4IDguODQzMTVDMC4xMzQxNjcgOC43NDA4IDAuMjQwMTUzIDguNjk2OTYgMC4zODQzMiA4LjY1MjM4QzAuNDA1MTk0IDguNjQ1NjcgMC40MjYwNjggOC42Mzg5NyAwLjQ0NzU3NCA4LjYzMjA2QzAuNTExNTA2IDguNjExNjQgMC41NzU1NzcgOC41OTE2OSAwLjYzOTcwMiA4LjU3MTgzQzAuNjU4MDAxIDguNTY2MDkgMC42NzYzMDEgOC41NjAzNSAwLjY5NTE1NSA4LjU1NDQzQzAuODI0NTcgOC41MTM4NSAwLjk1NDQ1IDguNDc0NzkgMS4wODQ1MiA4LjQzNjE4QzEuMTE2NDggOC40MjY2NSAxLjExNjQ4IDguNDI2NjUgMS4xNDkwOSA4LjQxNjkzQzEuNzA0NTQgOC4yNTE3NCAyLjI2MzYxIDguMDk4MDEgMi44MjI1MiA3Ljk0MzkyQzMuMjM4OTkgNy44MjkwOSAzLjY1NDc2IDcuNzEyMzYgNC4wNjkyMSA3LjU5MDk3QzQuMDg4MjUgNy41ODU0MiA0LjEwNzMgNy41Nzk4NyA0LjEyNjkyIDcuNTc0MTVDNS4wODcgNy4yOTM5MyA2LjAyNTU3IDYuODk2MzIgNi42NDU0NyA2LjEwNzRDNi42NTQ3NSA2LjA5NTY5IDYuNjY0MDMgNi4wODM5OSA2LjY3MzYgNi4wNzE5NEM3LjM2Mzk1IDUuMTk2MyA3LjYzMzE1IDQuMTMxNDUgNy45MzM5MSAzLjA5MjQxQzguMDMyODUgMi43NTA2OSA4LjEzMjk4IDIuNDA5MjkgOC4yMzM0NSAyLjA2Nzk4QzguMjYxMjcgMS45NzM0NyA4LjI4OTA2IDEuODc4OTQgOC4zMTY3MyAxLjc4NDM5QzguNDI3ODggMS40MDQ1OCA4LjU0MDcgMS4wMjUyOCA4LjY2IDAuNjQ3NzI3QzguNjcxMTYgMC42MTIzNzIgOC42ODIyNyAwLjU3NzAwMSA4LjY5MzMzIDAuNTQxNjE0QzguODYwMzUgMC4wMDc5NzUyMiA4Ljg2MDM1IDAuMDA3OTc1MjIgOS4wMTg4MiAwWlwiIGZpbGw9XCIjRkJGQ0ZGXCIvPjxwYXRoIGQ9XCJNMTQuNDcxOSAxLjExMDY5QzE0LjU4MDUgMS4yMjgxNyAxNC42MDIyIDEuMzY2MjQgMTQuNjM2IDEuNTE2MjVDMTQuNzQ4NyAxLjk4NzUxIDE0Ljg3ODYgMi40MjA4NCAxNS4zMjkzIDIuNjk0NkMxNS42MDc0IDIuODQxNjcgMTUuOTM4OSAyLjkwODU5IDE2LjI0NyAyLjk3MThDMTYuMzc3MSAyLjk5OTAyIDE2LjQ4NjkgMy4wMzUxNSAxNi41OTg1IDMuMTA3NEMxNi42MjM2IDMuMTQ1NTUgMTYuNjIzNiAzLjE0NTU1IDE2LjYyMjEgMy4yMTE5N0MxNi41OTYzIDMuMjkyNzMgMTYuNTczNiAzLjMxODc4IDE2LjUwNTQgMy4zNzE2NUMxNi40MzA4IDMuMzk1NDkgMTYuNDMwOCAzLjM5NTQ5IDE2LjM0MTMgMy40MTQwNEMxNi4zMDc1IDMuNDIxNDcgMTYuMjczNiAzLjQyODk4IDE2LjIzOTggMy40MzY1NkMxNi4yMjE3IDMuNDQwNTggMTYuMjAzNiAzLjQ0NDYgMTYuMTg0OSAzLjQ0ODc0QzE1LjYzMzkgMy41NzA2MiAxNS42MzM5IDMuNTcwNjIgMTUuMTU3NiAzLjg0NjQ1QzE1LjE0MjEgMy44NTgzNyAxNS4xMjY3IDMuODcwMjkgMTUuMTEwNyAzLjg4MjU3QzE0Ljc3MDMgNC4xNjk1OSAxNC42OTgzIDQuNjQ3MDMgMTQuNTk1OCA1LjA0Njk5QzE0LjU5IDUuMDY4OTYgMTQuNTg0MSA1LjA5MDkyIDE0LjU3OCA1LjExMzU1QzE0LjU3MyA1LjEzMyAxNC41Njc5IDUuMTUyNDQgMTQuNTYyNyA1LjE3MjQ4QzE0LjU0MDUgNS4yMzE4NSAxNC41MTc2IDUuMjcwNTcgMTQuNDcxOSA1LjMxNjA3QzE0LjM0NDcgNS4zMzE1MiAxNC4zNDQ3IDUuMzMxNTIgMTQuMjgyOCA1LjMxNjA3QzE0LjE4NDMgNS4yNDMwOSAxNC4xNjIzIDUuMTU5OTcgMTQuMTM2NiA1LjA0ODI4QzE0LjEzMjIgNS4wMzA5OSAxNC4xMjc5IDUuMDEzNjkgMTQuMTIzNSA0Ljk5NTg3QzE0LjEwOTggNC45NDA2NCAxNC4wOTY1IDQuODg1MzEgMTQuMDgzMyA0LjgyOTk2QzEzLjk3OTYgNC4zOTg5MSAxMy44NjI1IDMuOTc2IDEzLjQ0OSAzLjcyMzMzQzEzLjEyNTggMy41NTEwMSAxMi43MzI5IDMuNDY5NTEgMTIuMzcxNyAzLjQwMzdDMTIuMjcyNyAzLjM4Mzk5IDEyLjIxNiAzLjM1OTIgMTIuMTU0NyAzLjI4MTIxQzEyLjE0MTQgMy4yMDIwOCAxMi4xNDE0IDMuMjAyMDggMTIuMTU0NyAzLjEyMjk0QzEyLjI0ODkgMy4wMjk3MSAxMi4zNDggMy4wMDY5NiAxMi40NzU0IDIuOTc4ODFDMTIuNTE1NiAyLjk2OTMgMTIuNTU1NyAyLjk1OTczIDEyLjU5NTggMi45NTAxQzEyLjYxNjUgMi45NDUxNiAxMi42MzcyIDIuOTQwMjIgMTIuNjU4NiAyLjkzNTEyQzEyLjc2NDIgMi45MDkxMSAxMi44Njg5IDIuODc5OTUgMTIuOTczNCAyLjg1MDIxQzEyLjk5MjQgMi44NDQ5NCAxMy4wMTE0IDIuODM5NjcgMTMuMDMxIDIuODM0MjRDMTMuMjQzNiAyLjc3MzQ2IDEzLjQyNzEgMi42OTU3MSAxMy41OTcxIDIuNTU3N0MxMy42MTI5IDIuNTQ1MjMgMTMuNjI4OCAyLjUzMjc2IDEzLjY0NTEgMi41MTk5QzEzLjkwOTYgMi4yOTIyOCAxMy45OTk1IDEuOTUwMzIgMTQuMDgxIDEuNjMxMjRDMTQuMDg3MyAxLjYwNzAyIDE0LjA5MzUgMS41ODI4IDE0LjA5OTkgMS41NTc4NEMxNC4xMTIzIDEuNTA5MTggMTQuMTI0NCAxLjQ2MDQ2IDE0LjEzNjMgMS40MTE3QzE0LjE0NDkgMS4zNzc3NiAxNC4xNDQ5IDEuMzc3NzYgMTQuMTUzNSAxLjM0MzE1QzE0LjE1ODUgMS4zMjI4OCAxNC4xNjM1IDEuMzAyNjEgMTQuMTY4NiAxLjI4MTcyQzE0LjE5MDQgMS4yMTcxOSAxNC4yMTkgMS4xNjY1MiAxNC4yNTkxIDEuMTEwNjlDMTQuMzM2MiAxLjA3Mzg1IDE0LjM5MDMgMS4wOTA1IDE0LjQ3MTkgMS4xMTA2OVpcIiBmaWxsPVwiI0ZCRkNGRlwiLz48cGF0aCBkPVwiTTMuNTkwODkgMTIuNDk0MkMzLjYxOTAyIDEyLjQ5NDQgMy42MTkwMiAxMi40OTQ0IDMuNjQ3NzIgMTIuNDk0NkMzLjg0OTU0IDEyLjUwMDQgMy45ODYwOSAxMi41NjIzIDQuMTM0NzIgMTIuNjkyQzQuMzA3NjcgMTIuODcwNyA0LjM4NzUzIDEzLjA3MjIgNC4zODI5OSAxMy4zMTNDNC4zNjM1NyAxMy41MDgyIDQuMjQzMTYgMTMuNjc4NyA0LjA5NTQ3IDEzLjgxMDdDMy45MjE2MyAxMy45NDQ4IDMuNzQ2MjYgMTMuOTg5MiAzLjUyNDExIDEzLjk4M0MzLjMzNjgxIDEzLjk2MjEgMy4xNjA2IDEzLjg3NyAzLjAyNzg1IDEzLjc0OUMyLjg2Mjc2IDEzLjUzMzYgMi44MTQ1IDEzLjMzNjEgMi44Mzg2OSAxMy4wNzA3QzIuODg4NjcgMTIuODYxOCAzLjAzMjc0IDEyLjY5MjMgMy4yMTcwMSAxMi41NzMzQzMuMzQ1MDIgMTIuNTExMyAzLjQ0Nzk4IDEyLjQ5MyAzLjU5MDg5IDEyLjQ5NDJaXCIgZmlsbD1cIiNGQkZDRkZcIi8+PC9zdmc+XG4gICAgICB7eyBpc0FwcGx5aW5nID8gJ0FwcGx5aW5nIHN1Z2dlc3Rpb24nIDogJ0FwcGx5IHN1Z2dlc3Rpb24nIH19XG4gICAgPC9jcWEtYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIFxuIl19