@cqa-lib/cqa-ui 1.1.82 → 1.1.84
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.
- package/esm2020/lib/execution-screen/ai-agent-step/ai-agent-step.component.mjs +8 -3
- package/esm2020/lib/execution-screen/api-step/api-step.component.mjs +8 -3
- package/esm2020/lib/execution-screen/basic-step/basic-step.component.mjs +8 -3
- package/esm2020/lib/execution-screen/condition-step/condition-step.component.mjs +8 -3
- package/esm2020/lib/execution-screen/failed-step/failed-step.component.mjs +1 -1
- package/esm2020/lib/execution-screen/loop-step/loop-step.component.mjs +8 -3
- package/esm2020/lib/execution-screen/self-heal-analysis/self-heal-analysis.component.mjs +9 -3
- package/esm2020/lib/execution-screen/step-group/step-group.component.mjs +5 -3
- package/esm2020/lib/execution-screen/step-renderer/step-renderer.component.mjs +6 -2
- package/esm2020/lib/execution-screen/updated-failed-step/updated-failed-step.component.mjs +6 -3
- package/esm2020/lib/execution-screen/visual-comparison/visual-comparison.component.mjs +6 -3
- package/esm2020/lib/segment-control/segment-control.component.mjs +3 -3
- package/fesm2015/cqa-lib-cqa-ui.mjs +65 -22
- package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
- package/fesm2020/cqa-lib-cqa-ui.mjs +65 -22
- package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
- package/lib/execution-screen/ai-agent-step/ai-agent-step.component.d.ts +6 -1
- package/lib/execution-screen/api-step/api-step.component.d.ts +6 -1
- package/lib/execution-screen/basic-step/basic-step.component.d.ts +6 -1
- package/lib/execution-screen/condition-step/condition-step.component.d.ts +6 -1
- package/lib/execution-screen/loop-step/loop-step.component.d.ts +6 -1
- package/lib/execution-screen/self-heal-analysis/self-heal-analysis.component.d.ts +3 -1
- package/lib/execution-screen/step-group/step-group.component.d.ts +2 -1
- package/lib/execution-screen/step-renderer/step-renderer.component.d.ts +2 -1
- package/lib/execution-screen/updated-failed-step/updated-failed-step.component.d.ts +2 -1
- package/lib/execution-screen/visual-comparison/visual-comparison.component.d.ts +2 -1
- package/package.json +1 -1
- package/styles.css +1 -1
|
@@ -6,6 +6,7 @@ export class VisualComparisonComponent {
|
|
|
6
6
|
constructor() {
|
|
7
7
|
this.showFullLogsLink = true;
|
|
8
8
|
this.isUploadingBaseline = {};
|
|
9
|
+
this.isMakingCurrentBaseline = {};
|
|
9
10
|
this.isLive = false;
|
|
10
11
|
this.makeCurrentBaseline = new EventEmitter();
|
|
11
12
|
this.uploadBaseline = new EventEmitter();
|
|
@@ -70,10 +71,10 @@ export class VisualComparisonComponent {
|
|
|
70
71
|
}
|
|
71
72
|
}
|
|
72
73
|
VisualComparisonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: VisualComparisonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
73
|
-
VisualComparisonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: VisualComparisonComponent, selector: "cqa-visual-comparison", inputs: { screenshots: "screenshots", logs: "logs", showFullLogsLink: "showFullLogsLink", isUploadingBaseline: "isUploadingBaseline", isLive: "isLive", testStepResultId: "testStepResultId" }, outputs: { makeCurrentBaseline: "makeCurrentBaseline", uploadBaseline: "uploadBaseline", analyze: "analyze", viewFullLogs: "viewFullLogs" }, host: { classAttribute: "cqa-ui-root" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], ngImport: i0, template: "<div class=\"cqa-grid cqa-grid-cols-12 cqa-gap-x-4 cqa-w-full cqa-max-h-[200px] cqa-h-full cqa-overflow-hidden\">\n <!-- Left Panel: Screenshots & Visual Comparison -->\n <div class=\"cqa-col-span-9 cqa-border cqa-border-solid cqa-border-[##E5E5E5] cqa-rounded-[10px] cqa-pt-2 cqa-px-3 cqa-pb-1 cqa-h-full cqa-max-h-[200px] cqa-overflow-auto\"\n style=\"scrollbar-width: thin;\">\n <div class=\"cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-text-[#0A0A0A] cqa-flex cqa-items-center cqa-gap-2 cqa-mb-2\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12.6667 2H3.33333C2.59695 2 2 2.59695 2 3.33333V12.6667C2 13.403 2.59695 14 3.33333 14H12.6667C13.403 14 14 13.403 14 12.6667V3.33333C14 2.59695 13.403 2 12.6667 2Z\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M6.00033 7.33268C6.73671 7.33268 7.33366 6.73573 7.33366 5.99935C7.33366 5.26297 6.73671 4.66602 6.00033 4.66602C5.26395 4.66602 4.66699 5.26297 4.66699 5.99935C4.66699 6.73573 5.26395 7.33268 6.00033 7.33268Z\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M14 10.0004L11.9427 7.94312C11.6926 7.69315 11.3536 7.55273 11 7.55273C10.6464 7.55273 10.3074 7.69315 10.0573 7.94312L4 14.0004\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n Screenshots & Visual Comparison\n </div>\n \n <!-- Screenshot Comparison Grid -->\n <div class=\"cqa-grid cqa-grid-cols-3 cqa-gap-3 cqa-mb-2\">\n <!-- Baseline -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div class=\"cqa-text-[11px] cqa-leading-[100%] cqa-text-[#737373]\">Baseline</div>\n <div class=\"cqa-bg-[#F5F5F5] cqa-rounded-[10px] cqa-border cqa-border-solid cqa-border-[#E5E5E5] cqa-flex cqa-items-center cqa-justify-center cqa-h-[112px] cqa-cursor-pointer\" (click)=\"onImageClick('baseline')\">\n <div *ngIf=\"!screenshots?.baseline\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M25.3333 4H6.66667C5.19391 4 4 5.19391 4 6.66667V25.3333C4 26.8061 5.19391 28 6.66667 28H25.3333C26.8061 28 28 26.8061 28 25.3333V6.66667C28 5.19391 26.8061 4 25.3333 4Z\" stroke=\"#737373\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M11.9997 14.6673C13.4724 14.6673 14.6663 13.4734 14.6663 12.0007C14.6663 10.5279 13.4724 9.33398 11.9997 9.33398C10.5269 9.33398 9.33301 10.5279 9.33301 12.0007C9.33301 13.4734 10.5269 14.6673 11.9997 14.6673Z\" stroke=\"#737373\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M28 20.0009L23.8853 15.8862C23.3853 15.3863 22.7071 15.1055 22 15.1055C21.2929 15.1055 20.6147 15.3863 20.1147 15.8862L8 28.0009\" stroke=\"#737373\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </div>\n <img *ngIf=\"screenshots?.baseline\" [src]=\"screenshots.baseline\" alt=\"Baseline\" class=\"cqa-w-full cqa-h-full cqa-object-cover cqa-rounded-lg\" />\n </div>\n </div>\n\n <!-- Current -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div class=\"cqa-text-[11px] cqa-leading-[100%] cqa-text-[#737373]\">Current</div>\n <div class=\"cqa-bg-[#FEF2F3] cqa-rounded-[10px] cqa-border cqa-border-solid cqa-border-[#F9C2C5] cqa-flex cqa-items-center cqa-justify-center cqa-h-[112px] cqa-cursor-pointer\" (click)=\"onImageClick('current')\">\n <div *ngIf=\"!screenshots?.current\" class=\"cqa-flex cqa-flex-col cqa-items-center cqa-gap-2 cqa-text-[#EF4444]\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M25.3333 4H6.66667C5.19391 4 4 5.19391 4 6.66667V25.3333C4 26.8061 5.19391 28 6.66667 28H25.3333C26.8061 28 28 26.8061 28 25.3333V6.66667C28 5.19391 26.8061 4 25.3333 4Z\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M11.9997 14.6673C13.4724 14.6673 14.6663 13.4734 14.6663 12.0007C14.6663 10.5279 13.4724 9.33398 11.9997 9.33398C10.5269 9.33398 9.33301 10.5279 9.33301 12.0007C9.33301 13.4734 10.5269 14.6673 11.9997 14.6673Z\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M28 20.0009L23.8853 15.8862C23.3853 15.3863 22.7071 15.1055 22 15.1055C21.2929 15.1055 20.6147 15.3863 20.1147 15.8862L8 28.0009\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </div>\n <img *ngIf=\"screenshots?.current\" [src]=\"screenshots.current\" alt=\"Current\" class=\"cqa-w-full cqa-h-full cqa-object-cover cqa-rounded-lg\" />\n </div>\n </div>\n\n <!-- Difference -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div class=\"cqa-text-[11px] cqa-leading-[100%] cqa-text-[#737373]\">Difference</div>\n <div class=\"cqa-bg-[#FEF2F3] cqa-rounded-[10px] cqa-border cqa-border-solid cqa-border-[#F9C2C5] cqa-flex cqa-items-center cqa-justify-center cqa-h-[112px] cqa-cursor-pointer\" (click)=\"onImageClick('difference')\">\n <div *ngIf=\"!screenshots?.difference\" class=\"cqa-flex cqa-flex-col cqa-items-center cqa-gap-2 cqa-text-[#EF4444]\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M25.3333 4H6.66667C5.19391 4 4 5.19391 4 6.66667V25.3333C4 26.8061 5.19391 28 6.66667 28H25.3333C26.8061 28 28 26.8061 28 25.3333V6.66667C28 5.19391 26.8061 4 25.3333 4Z\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M11.9997 14.6673C13.4724 14.6673 14.6663 13.4734 14.6663 12.0007C14.6663 10.5279 13.4724 9.33398 11.9997 9.33398C10.5269 9.33398 9.33301 10.5279 9.33301 12.0007C9.33301 13.4734 10.5269 14.6673 11.9997 14.6673Z\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M28 20.0009L23.8853 15.8862C23.3853 15.3863 22.7071 15.1055 22 15.1055C21.2929 15.1055 20.6147 15.3863 20.1147 15.8862L8 28.0009\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </div>\n <img *ngIf=\"screenshots?.difference\" [src]=\"screenshots.difference\" alt=\"Difference\" class=\"cqa-w-full cqa-h-full cqa-object-cover cqa-rounded-lg\" />\n </div>\n </div>\n </div>\n\n <!-- Action Buttons -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-end cqa-gap-2 cqa-flex-wrap\">\n <button \n (click)=\"onMakeCurrentBaseline()\"\n [disabled]=\"!isCurrentImageAvailable\"\n [class.cqa-opacity-50]=\"!isCurrentImageAvailable\"\n [class.cqa-cursor-not-allowed]=\"!isCurrentImageAvailable\"\n class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-pl-2 cqa-pr-4 cqa-py-[2px] cqa-rounded-lg cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-bg-transparent cqa-text-[#212122] cqa-border cqa-border-solid cqa-border-[#212122] disabled:cqa-cursor-not-allowed\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M4.39754 7.93752L2.31254 5.85252L1.60254 6.55752L4.39754 9.35252L10.3975 3.35252L9.69254 2.64752L4.39754 7.93752Z\" fill=\"black\"/></svg>\n Make current baseline\n </button>\n <button \n (click)=\"onUploadBaseline()\"\n [disabled]=\"isUploadingBaseline?.[testStepResultId] === true\"\n [class.cqa-opacity-50]=\"isUploadingBaseline?.[testStepResultId] === true\"\n [class.cqa-cursor-not-allowed]=\"isUploadingBaseline?.[testStepResultId] === true\"\n class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-pl-2 cqa-pr-4 cqa-py-[2px] cqa-rounded-lg cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-bg-transparent cqa-text-[#212122] cqa-border cqa-border-solid cqa-border-[#212122] disabled:cqa-cursor-not-allowed\">\n <svg *ngIf=\"!isUploadingBaseline?.[testStepResultId]\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 7.5V9H3V7.5H2V9C2 9.55 2.45 10 3 10H9C9.55 10 10 9.55 10 9V7.5H9ZM3.5 4.5L4.205 5.205L5.5 3.915V8H6.5V3.915L7.795 5.205L8.5 4.5L6 2L3.5 4.5Z\" fill=\"black\"/></svg>\n <svg *ngIf=\"isUploadingBaseline?.[testStepResultId] === true\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" style=\"animation: spin 1s linear infinite;\">\n <circle cx=\"6\" cy=\"6\" r=\"5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-dasharray=\"8 4\" opacity=\"0.3\"/>\n <circle cx=\"6\" cy=\"6\" r=\"5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-dasharray=\"8 4\" stroke-dashoffset=\"2\"/>\n </svg>\n <span>{{ isUploadingBaseline?.[testStepResultId] === true ? 'Uploading...' : 'Upload baseline' }}</span>\n </button>\n <!-- Hidden file input -->\n <input \n #fileInput\n type=\"file\" \n accept=\"image/*\"\n (change)=\"onFileSelected($event)\"\n style=\"display: none;\" \n />\n <button \n (click)=\"onAnalyze()\"\n class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-pl-2 cqa-pr-4 cqa-py-[2px] cqa-rounded-lg cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-bg-transparent cqa-text-[#212122] cqa-border cqa-border-solid cqa-border-[#212122]\">\n <svg width=\"11\" height=\"12\" viewBox=\"0 0 11 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M5.5115 0C5.57931 0.0303178 5.60828 0.104354 5.63604 0.173128C5.64996 0.2132 5.66273 0.253489 5.67513 0.2941C5.67998 0.309662 5.68484 0.325224 5.68984 0.341258C5.7543 0.550673 5.81172 0.762331 5.86946 0.97384C5.88251 1.02159 5.89563 1.06932 5.90874 1.11704C5.97551 1.36005 6.04177 1.6032 6.10767 1.84646C6.11693 1.88062 6.12619 1.91479 6.13545 1.94895C6.16156 2.04527 6.18764 2.14159 6.21357 2.23796C6.26837 2.44159 6.32467 2.64463 6.38463 2.84668C6.38986 2.86435 6.3951 2.88203 6.4005 2.90024C6.55624 3.42 6.77701 3.88583 7.13888 4.28262C7.14784 4.29294 7.1568 4.30325 7.16603 4.31388C7.3205 4.48583 7.51873 4.62361 7.71687 4.73481C7.72696 4.74057 7.73705 4.74632 7.74745 4.75225C8.33051 5.079 9.03162 5.22272 9.66313 5.414C9.93984 5.49787 10.2157 5.58438 10.4905 5.6747C10.5099 5.68105 10.5292 5.68738 10.5485 5.6937C10.6062 5.7126 10.6639 5.73182 10.7215 5.7513C10.7349 5.75572 10.7483 5.76015 10.7621 5.76471C10.8415 5.79208 10.9174 5.82439 10.9825 5.88036C11.0023 5.92558 11.0023 5.92558 10.9969 5.9708C10.9336 6.03648 10.8707 6.06728 10.7871 6.09733C10.7751 6.10176 10.7632 6.1062 10.7508 6.11077C10.6096 6.16244 10.4665 6.20766 10.3232 6.25247C10.2938 6.26174 10.2644 6.27101 10.235 6.28028C10.0537 6.33735 9.87199 6.3932 9.69014 6.44842C9.45061 6.52117 9.21143 6.59512 8.97249 6.66991C8.93334 6.68216 8.89418 6.69437 8.85501 6.70654C8.64931 6.77048 8.44462 6.83671 8.24162 6.90944C8.22478 6.91545 8.20794 6.92147 8.19059 6.92766C7.51069 7.17443 6.99245 7.63478 6.66809 8.30799C6.49321 8.68634 6.39006 9.09548 6.28483 9.49929C6.25637 9.60825 6.22611 9.7166 6.1955 9.82492C6.17149 9.91015 6.14803 9.99551 6.12515 10.0811C6.12243 10.0913 6.1197 10.1014 6.1169 10.1119C6.1037 10.1612 6.09056 10.2106 6.07752 10.2599C6.04413 10.3851 6.00817 10.5092 5.97123 10.6332C5.90567 10.8536 5.84601 11.0757 5.78672 11.298C5.69732 11.6328 5.69732 11.6328 5.64662 11.7937C5.64326 11.8045 5.6399 11.8153 5.63644 11.8264C5.61793 11.8837 5.5989 11.9364 5.56388 11.9849C5.5106 11.9972 5.5106 11.9972 5.46273 12C5.40801 11.9168 5.37177 11.8361 5.34273 11.7401C5.33851 11.7265 5.33428 11.7129 5.32993 11.6989C5.27614 11.5233 5.22807 11.3459 5.17999 11.1686C5.16898 11.1281 5.15791 11.0875 5.14685 11.047C5.0644 10.7448 4.98331 10.4423 4.90234 10.1397C4.56509 8.64299 4.56509 8.64299 3.71433 7.43288C3.7007 7.42128 3.68706 7.40968 3.67302 7.39773C3.1156 6.93203 2.3813 6.75959 1.70885 6.55751C1.54254 6.50749 1.37628 6.45724 1.21004 6.40697C1.1955 6.40258 1.1955 6.40258 1.18067 6.39809C0.940881 6.32556 0.701157 6.25283 0.462274 6.17711C0.452168 6.17393 0.442063 6.17075 0.431651 6.16747C0.0646543 6.05178 0.0646543 6.05178 0.000790211 5.9708C-0.00101599 5.93406 -0.00101599 5.93406 0.0152398 5.89543C0.0819909 5.8272 0.14676 5.79797 0.234862 5.76825C0.247618 5.76378 0.260375 5.75931 0.273518 5.75471C0.312587 5.7411 0.351741 5.72779 0.390929 5.71455C0.402112 5.71073 0.413295 5.7069 0.424817 5.70296C0.503904 5.6759 0.583275 5.64986 0.662762 5.62412C0.682294 5.61777 0.682294 5.61777 0.70222 5.61129C1.04166 5.50116 1.38332 5.39867 1.72487 5.29595C1.97939 5.21939 2.23347 5.14157 2.48674 5.06065C2.49838 5.05694 2.51001 5.05324 2.52201 5.04943C3.10872 4.86262 3.68229 4.59755 4.06112 4.0716C4.06679 4.0638 4.07247 4.05599 4.07831 4.04796C4.50019 3.4642 4.6647 2.7543 4.8485 2.06161C4.90896 1.83379 4.97015 1.60619 5.03155 1.37865C5.04856 1.31564 5.06553 1.25263 5.08244 1.18959C5.15037 0.936385 5.21932 0.683523 5.29222 0.431818C5.29904 0.408248 5.30583 0.384667 5.31259 0.361076C5.41466 0.00531681 5.41466 0.00531681 5.5115 0Z\" fill=\"#161617\"/><path d=\"M8.84391 0.740443C8.91024 0.818762 8.92349 0.910806 8.94415 1.01081C9.01305 1.32499 9.09241 1.61388 9.36787 1.79638C9.53782 1.89443 9.74037 1.93904 9.92867 1.98118C10.0082 1.99933 10.0753 2.02341 10.1435 2.07158C10.1588 2.09701 10.1588 2.09701 10.1579 2.14129C10.1421 2.19513 10.1282 2.2125 10.0866 2.24774C10.041 2.26364 10.041 2.26364 9.98633 2.27601C9.96564 2.28096 9.94496 2.28597 9.9243 2.29102C9.91322 2.2937 9.90215 2.29638 9.89075 2.29914C9.55401 2.38039 9.55401 2.38039 9.26295 2.56428C9.25348 2.57222 9.24402 2.58017 9.23427 2.58836C9.02625 2.7797 8.98226 3.098 8.91963 3.36464C8.91605 3.37928 8.91246 3.39393 8.90876 3.40901C8.90566 3.42198 8.90255 3.43494 8.89935 3.4483C8.88584 3.48788 8.87183 3.51369 8.84391 3.54402C8.76614 3.55432 8.76614 3.55432 8.72831 3.54402C8.66814 3.49537 8.65468 3.43996 8.63896 3.3655C8.63633 3.35397 8.63369 3.34244 8.63098 3.33056C8.62259 3.29374 8.61447 3.25686 8.60639 3.21995C8.54302 2.93259 8.47148 2.65064 8.21879 2.4822C8.02131 2.36732 7.78118 2.31298 7.56045 2.26911C7.49996 2.25597 7.4653 2.23944 7.42785 2.18745C7.41972 2.1347 7.41972 2.1347 7.42785 2.08194C7.48541 2.01979 7.54597 2.00462 7.62382 1.98585C7.64835 1.97952 7.67286 1.97314 7.69737 1.96671C7.71003 1.96342 7.72269 1.96012 7.73574 1.95673C7.80032 1.93939 7.86425 1.91995 7.92817 1.90012C7.93978 1.89661 7.95139 1.89309 7.96336 1.88947C8.09329 1.84895 8.20541 1.79712 8.30927 1.70512C8.31896 1.6968 8.32864 1.68848 8.33862 1.67992C8.50026 1.52817 8.55518 1.3002 8.60504 1.08748C8.60884 1.07133 8.61264 1.05518 8.61655 1.03854C8.62411 1.0061 8.63154 0.973622 8.63882 0.94111C8.64403 0.918489 8.64403 0.918489 8.64935 0.895412C8.65238 0.881899 8.65542 0.868385 8.65855 0.854462C8.67186 0.811441 8.68935 0.77766 8.71386 0.740443C8.76096 0.715878 8.79401 0.726983 8.84391 0.740443Z\" fill=\"#414146\"/><path d=\"M2.19446 8.32962C2.21166 8.32975 2.21166 8.32975 2.22919 8.32988C2.35253 8.3338 2.43597 8.37503 2.5268 8.46151C2.6325 8.58061 2.6813 8.71497 2.67852 8.87549C2.66666 9.00565 2.59307 9.11929 2.50282 9.20727C2.39658 9.29672 2.28941 9.32628 2.15366 9.32215C2.03919 9.30825 1.93151 9.25153 1.85038 9.16618C1.7495 9.02258 1.72 8.89087 1.73479 8.71398C1.76533 8.57472 1.85337 8.46167 1.96598 8.38238C2.04421 8.34101 2.10713 8.32886 2.19446 8.32962Z\" fill=\"#4C4C51\"/></svg>\n Analyze\n </button>\n </div>\n </div>\n\n <!-- Right Panel: Logs -->\n <div class=\"cqa-col-span-3 cqa-border cqa-border-solid cqa-border-[##E5E5E5] cqa-rounded-[10px] cqa-py-2 cqa-px-3 cqa-h-full cqa-max-h-[200px] cqa-overflow-auto\"\n style=\"scrollbar-width: thin;\">\n <div class=\"cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-text-[#0A0A0A] cqa-flex cqa-items-center cqa-gap-2 cqa-mb-2\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10.6666 12L14.6666 8L10.6666 4\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M5.33337 4L1.33337 8L5.33337 12\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n Logs\n </div>\n \n <div class=\"cqa-flex cqa-flex-col cqa-gap-2 \">\n <div class=\"cqa-text-[11px] cqa-leading-[100%] cqa-text-[#737373]\">Console</div>\n \n <div *ngFor=\"let log of logs\" class=\"cqa-px-2 cqa-py-[2px] cqa-rounded cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-break-words\" [ngClass]=\"getLogClass(log.level)\">\n {{ log.message }}\n </div>\n \n <div *ngIf=\"!logs || logs.length === 0\" class=\"cqa-px-2 cqa-py-[2px] cqa-rounded cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-text-[#9CA3AF] cqa-bg-[#f8f8f8] cqa-text-center\">\n No logs available\n </div>\n </div>\n\n <!-- <a \n *ngIf=\"showFullLogsLink && logs?.length\"\n (click)=\"onViewFullLogs()\"\n class=\"cqa-text-[10px] cqa-leading-[15px] cqa-text-[#3F43EE] cqa-font-medium cqa-flex cqa-items-center cqa-justify-end cqa-gap-[2px] cqa-cursor-pointer hover:cqa-underline cqa-mt-4\">\n View full logs Iterations\n <div><svg width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.03833 6.74335L2.62833 7.33335L5.96166 4.00002L2.62833 0.666687L2.03833 1.25669L4.78166 4.00002L2.03833 6.74335Z\" fill=\"#3F43EE\"/></svg></div>\n </a> -->\n </div>\n\n \n <cqa-visual-difference-modal\n [isOpen]=\"isModalOpen\"\n [baselineUrl]=\"screenshots?.baseline || ''\"\n [currentUrl]=\"screenshots?.current || ''\"\n [differenceUrl]=\"screenshots?.difference || ''\"\n [initialView]=\"initialModalView\"\n (close)=\"onCloseModal()\">\n </cqa-visual-difference-modal>\n</div>\n\n<style>\n @keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n</style>", styles: ["\n @keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n"], components: [{ type: i1.VisualDifferenceModalComponent, selector: "cqa-visual-difference-modal", inputs: ["baselineUrl", "currentUrl", "differenceUrl", "title", "subtitle", "isOpen", "initialView"], outputs: ["close"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
74
|
+
VisualComparisonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: VisualComparisonComponent, selector: "cqa-visual-comparison", inputs: { screenshots: "screenshots", logs: "logs", showFullLogsLink: "showFullLogsLink", isUploadingBaseline: "isUploadingBaseline", isMakingCurrentBaseline: "isMakingCurrentBaseline", isLive: "isLive", testStepResultId: "testStepResultId" }, outputs: { makeCurrentBaseline: "makeCurrentBaseline", uploadBaseline: "uploadBaseline", analyze: "analyze", viewFullLogs: "viewFullLogs" }, host: { classAttribute: "cqa-ui-root" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], ngImport: i0, template: "<div class=\"cqa-grid cqa-grid-cols-12 cqa-gap-x-4 cqa-w-full cqa-max-h-[200px] cqa-h-full cqa-overflow-hidden\">\n <!-- Left Panel: Screenshots & Visual Comparison -->\n <div class=\"cqa-col-span-9 cqa-border cqa-border-solid cqa-border-[##E5E5E5] cqa-rounded-[10px] cqa-pt-2 cqa-px-3 cqa-pb-1 cqa-h-full cqa-max-h-[200px] cqa-overflow-auto\"\n style=\"scrollbar-width: thin;\">\n <div class=\"cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-text-[#0A0A0A] cqa-flex cqa-items-center cqa-gap-2 cqa-mb-2\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12.6667 2H3.33333C2.59695 2 2 2.59695 2 3.33333V12.6667C2 13.403 2.59695 14 3.33333 14H12.6667C13.403 14 14 13.403 14 12.6667V3.33333C14 2.59695 13.403 2 12.6667 2Z\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M6.00033 7.33268C6.73671 7.33268 7.33366 6.73573 7.33366 5.99935C7.33366 5.26297 6.73671 4.66602 6.00033 4.66602C5.26395 4.66602 4.66699 5.26297 4.66699 5.99935C4.66699 6.73573 5.26395 7.33268 6.00033 7.33268Z\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M14 10.0004L11.9427 7.94312C11.6926 7.69315 11.3536 7.55273 11 7.55273C10.6464 7.55273 10.3074 7.69315 10.0573 7.94312L4 14.0004\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n Screenshots & Visual Comparison\n </div>\n \n <!-- Screenshot Comparison Grid -->\n <div class=\"cqa-grid cqa-grid-cols-3 cqa-gap-3 cqa-mb-2\">\n <!-- Baseline -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div class=\"cqa-text-[11px] cqa-leading-[100%] cqa-text-[#737373]\">Baseline</div>\n <div class=\"cqa-bg-[#F5F5F5] cqa-rounded-[10px] cqa-border cqa-border-solid cqa-border-[#E5E5E5] cqa-flex cqa-items-center cqa-justify-center cqa-h-[112px] cqa-cursor-pointer\" (click)=\"onImageClick('baseline')\">\n <div *ngIf=\"!screenshots?.baseline\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M25.3333 4H6.66667C5.19391 4 4 5.19391 4 6.66667V25.3333C4 26.8061 5.19391 28 6.66667 28H25.3333C26.8061 28 28 26.8061 28 25.3333V6.66667C28 5.19391 26.8061 4 25.3333 4Z\" stroke=\"#737373\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M11.9997 14.6673C13.4724 14.6673 14.6663 13.4734 14.6663 12.0007C14.6663 10.5279 13.4724 9.33398 11.9997 9.33398C10.5269 9.33398 9.33301 10.5279 9.33301 12.0007C9.33301 13.4734 10.5269 14.6673 11.9997 14.6673Z\" stroke=\"#737373\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M28 20.0009L23.8853 15.8862C23.3853 15.3863 22.7071 15.1055 22 15.1055C21.2929 15.1055 20.6147 15.3863 20.1147 15.8862L8 28.0009\" stroke=\"#737373\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </div>\n <img *ngIf=\"screenshots?.baseline\" [src]=\"screenshots.baseline\" alt=\"Baseline\" class=\"cqa-w-full cqa-h-full cqa-object-cover cqa-rounded-lg\" />\n </div>\n </div>\n\n <!-- Current -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div class=\"cqa-text-[11px] cqa-leading-[100%] cqa-text-[#737373]\">Current</div>\n <div class=\"cqa-bg-[#FEF2F3] cqa-rounded-[10px] cqa-border cqa-border-solid cqa-border-[#F9C2C5] cqa-flex cqa-items-center cqa-justify-center cqa-h-[112px] cqa-cursor-pointer\" (click)=\"onImageClick('current')\">\n <div *ngIf=\"!screenshots?.current\" class=\"cqa-flex cqa-flex-col cqa-items-center cqa-gap-2 cqa-text-[#EF4444]\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M25.3333 4H6.66667C5.19391 4 4 5.19391 4 6.66667V25.3333C4 26.8061 5.19391 28 6.66667 28H25.3333C26.8061 28 28 26.8061 28 25.3333V6.66667C28 5.19391 26.8061 4 25.3333 4Z\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M11.9997 14.6673C13.4724 14.6673 14.6663 13.4734 14.6663 12.0007C14.6663 10.5279 13.4724 9.33398 11.9997 9.33398C10.5269 9.33398 9.33301 10.5279 9.33301 12.0007C9.33301 13.4734 10.5269 14.6673 11.9997 14.6673Z\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M28 20.0009L23.8853 15.8862C23.3853 15.3863 22.7071 15.1055 22 15.1055C21.2929 15.1055 20.6147 15.3863 20.1147 15.8862L8 28.0009\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </div>\n <img *ngIf=\"screenshots?.current\" [src]=\"screenshots.current\" alt=\"Current\" class=\"cqa-w-full cqa-h-full cqa-object-cover cqa-rounded-lg\" />\n </div>\n </div>\n\n <!-- Difference -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div class=\"cqa-text-[11px] cqa-leading-[100%] cqa-text-[#737373]\">Difference</div>\n <div class=\"cqa-bg-[#FEF2F3] cqa-rounded-[10px] cqa-border cqa-border-solid cqa-border-[#F9C2C5] cqa-flex cqa-items-center cqa-justify-center cqa-h-[112px] cqa-cursor-pointer\" (click)=\"onImageClick('difference')\">\n <div *ngIf=\"!screenshots?.difference\" class=\"cqa-flex cqa-flex-col cqa-items-center cqa-gap-2 cqa-text-[#EF4444]\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M25.3333 4H6.66667C5.19391 4 4 5.19391 4 6.66667V25.3333C4 26.8061 5.19391 28 6.66667 28H25.3333C26.8061 28 28 26.8061 28 25.3333V6.66667C28 5.19391 26.8061 4 25.3333 4Z\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M11.9997 14.6673C13.4724 14.6673 14.6663 13.4734 14.6663 12.0007C14.6663 10.5279 13.4724 9.33398 11.9997 9.33398C10.5269 9.33398 9.33301 10.5279 9.33301 12.0007C9.33301 13.4734 10.5269 14.6673 11.9997 14.6673Z\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M28 20.0009L23.8853 15.8862C23.3853 15.3863 22.7071 15.1055 22 15.1055C21.2929 15.1055 20.6147 15.3863 20.1147 15.8862L8 28.0009\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </div>\n <img *ngIf=\"screenshots?.difference\" [src]=\"screenshots.difference\" alt=\"Difference\" class=\"cqa-w-full cqa-h-full cqa-object-cover cqa-rounded-lg\" />\n </div>\n </div>\n </div>\n\n <!-- Action Buttons -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-end cqa-gap-2 cqa-flex-wrap\">\n <button \n (click)=\"onMakeCurrentBaseline()\"\n [disabled]=\"!isCurrentImageAvailable || isMakingCurrentBaseline?.[testStepResultId] === true\"\n [class.cqa-opacity-50]=\"!isCurrentImageAvailable || isMakingCurrentBaseline?.[testStepResultId] === true\"\n [class.cqa-cursor-not-allowed]=\"!isCurrentImageAvailable || isMakingCurrentBaseline?.[testStepResultId] === true\"\n class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-pl-2 cqa-pr-4 cqa-py-[2px] cqa-rounded-lg cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-bg-transparent cqa-text-[#212122] cqa-border cqa-border-solid cqa-border-[#212122] disabled:cqa-cursor-not-allowed\">\n <svg *ngIf=\"!isMakingCurrentBaseline?.[testStepResultId]\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M4.39754 7.93752L2.31254 5.85252L1.60254 6.55752L4.39754 9.35252L10.3975 3.35252L9.69254 2.64752L4.39754 7.93752Z\" fill=\"black\"/></svg>\n <svg *ngIf=\"isMakingCurrentBaseline?.[testStepResultId] === true\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"6\" cy=\"6\" r=\"5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-dasharray=\"8 4\" opacity=\"0.3\"/>\n <circle cx=\"6\" cy=\"6\" r=\"5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-dasharray=\"8 4\" stroke-dashoffset=\"2\">\n <animateTransform attributeName=\"transform\" type=\"rotate\" values=\"0 6 6;360 6 6\" dur=\"1s\" repeatCount=\"indefinite\"/>\n </circle>\n </svg>\n <span>{{ isMakingCurrentBaseline?.[testStepResultId] === true ? 'Loading...' : 'Make current baseline' }}</span>\n </button>\n <button \n (click)=\"onUploadBaseline()\"\n [disabled]=\"isUploadingBaseline?.[testStepResultId] === true\"\n [class.cqa-opacity-50]=\"isUploadingBaseline?.[testStepResultId] === true\"\n [class.cqa-cursor-not-allowed]=\"isUploadingBaseline?.[testStepResultId] === true\"\n class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-pl-2 cqa-pr-4 cqa-py-[2px] cqa-rounded-lg cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-bg-transparent cqa-text-[#212122] cqa-border cqa-border-solid cqa-border-[#212122] disabled:cqa-cursor-not-allowed\">\n <svg *ngIf=\"!isUploadingBaseline?.[testStepResultId]\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 7.5V9H3V7.5H2V9C2 9.55 2.45 10 3 10H9C9.55 10 10 9.55 10 9V7.5H9ZM3.5 4.5L4.205 5.205L5.5 3.915V8H6.5V3.915L7.795 5.205L8.5 4.5L6 2L3.5 4.5Z\" fill=\"black\"/></svg>\n <svg *ngIf=\"isUploadingBaseline?.[testStepResultId] === true\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" style=\"animation: spin 1s linear infinite;\">\n <circle cx=\"6\" cy=\"6\" r=\"5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-dasharray=\"8 4\" opacity=\"0.3\"/>\n <circle cx=\"6\" cy=\"6\" r=\"5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-dasharray=\"8 4\" stroke-dashoffset=\"2\"/>\n </svg>\n <span>{{ isUploadingBaseline?.[testStepResultId] === true ? 'Uploading...' : 'Upload baseline' }}</span>\n </button>\n <!-- Hidden file input -->\n <input \n #fileInput\n type=\"file\" \n accept=\"image/*\"\n (change)=\"onFileSelected($event)\"\n style=\"display: none;\" \n />\n <button \n (click)=\"onAnalyze()\"\n class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-pl-2 cqa-pr-4 cqa-py-[2px] cqa-rounded-lg cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-bg-transparent cqa-text-[#212122] cqa-border cqa-border-solid cqa-border-[#212122]\">\n <svg width=\"11\" height=\"12\" viewBox=\"0 0 11 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M5.5115 0C5.57931 0.0303178 5.60828 0.104354 5.63604 0.173128C5.64996 0.2132 5.66273 0.253489 5.67513 0.2941C5.67998 0.309662 5.68484 0.325224 5.68984 0.341258C5.7543 0.550673 5.81172 0.762331 5.86946 0.97384C5.88251 1.02159 5.89563 1.06932 5.90874 1.11704C5.97551 1.36005 6.04177 1.6032 6.10767 1.84646C6.11693 1.88062 6.12619 1.91479 6.13545 1.94895C6.16156 2.04527 6.18764 2.14159 6.21357 2.23796C6.26837 2.44159 6.32467 2.64463 6.38463 2.84668C6.38986 2.86435 6.3951 2.88203 6.4005 2.90024C6.55624 3.42 6.77701 3.88583 7.13888 4.28262C7.14784 4.29294 7.1568 4.30325 7.16603 4.31388C7.3205 4.48583 7.51873 4.62361 7.71687 4.73481C7.72696 4.74057 7.73705 4.74632 7.74745 4.75225C8.33051 5.079 9.03162 5.22272 9.66313 5.414C9.93984 5.49787 10.2157 5.58438 10.4905 5.6747C10.5099 5.68105 10.5292 5.68738 10.5485 5.6937C10.6062 5.7126 10.6639 5.73182 10.7215 5.7513C10.7349 5.75572 10.7483 5.76015 10.7621 5.76471C10.8415 5.79208 10.9174 5.82439 10.9825 5.88036C11.0023 5.92558 11.0023 5.92558 10.9969 5.9708C10.9336 6.03648 10.8707 6.06728 10.7871 6.09733C10.7751 6.10176 10.7632 6.1062 10.7508 6.11077C10.6096 6.16244 10.4665 6.20766 10.3232 6.25247C10.2938 6.26174 10.2644 6.27101 10.235 6.28028C10.0537 6.33735 9.87199 6.3932 9.69014 6.44842C9.45061 6.52117 9.21143 6.59512 8.97249 6.66991C8.93334 6.68216 8.89418 6.69437 8.85501 6.70654C8.64931 6.77048 8.44462 6.83671 8.24162 6.90944C8.22478 6.91545 8.20794 6.92147 8.19059 6.92766C7.51069 7.17443 6.99245 7.63478 6.66809 8.30799C6.49321 8.68634 6.39006 9.09548 6.28483 9.49929C6.25637 9.60825 6.22611 9.7166 6.1955 9.82492C6.17149 9.91015 6.14803 9.99551 6.12515 10.0811C6.12243 10.0913 6.1197 10.1014 6.1169 10.1119C6.1037 10.1612 6.09056 10.2106 6.07752 10.2599C6.04413 10.3851 6.00817 10.5092 5.97123 10.6332C5.90567 10.8536 5.84601 11.0757 5.78672 11.298C5.69732 11.6328 5.69732 11.6328 5.64662 11.7937C5.64326 11.8045 5.6399 11.8153 5.63644 11.8264C5.61793 11.8837 5.5989 11.9364 5.56388 11.9849C5.5106 11.9972 5.5106 11.9972 5.46273 12C5.40801 11.9168 5.37177 11.8361 5.34273 11.7401C5.33851 11.7265 5.33428 11.7129 5.32993 11.6989C5.27614 11.5233 5.22807 11.3459 5.17999 11.1686C5.16898 11.1281 5.15791 11.0875 5.14685 11.047C5.0644 10.7448 4.98331 10.4423 4.90234 10.1397C4.56509 8.64299 4.56509 8.64299 3.71433 7.43288C3.7007 7.42128 3.68706 7.40968 3.67302 7.39773C3.1156 6.93203 2.3813 6.75959 1.70885 6.55751C1.54254 6.50749 1.37628 6.45724 1.21004 6.40697C1.1955 6.40258 1.1955 6.40258 1.18067 6.39809C0.940881 6.32556 0.701157 6.25283 0.462274 6.17711C0.452168 6.17393 0.442063 6.17075 0.431651 6.16747C0.0646543 6.05178 0.0646543 6.05178 0.000790211 5.9708C-0.00101599 5.93406 -0.00101599 5.93406 0.0152398 5.89543C0.0819909 5.8272 0.14676 5.79797 0.234862 5.76825C0.247618 5.76378 0.260375 5.75931 0.273518 5.75471C0.312587 5.7411 0.351741 5.72779 0.390929 5.71455C0.402112 5.71073 0.413295 5.7069 0.424817 5.70296C0.503904 5.6759 0.583275 5.64986 0.662762 5.62412C0.682294 5.61777 0.682294 5.61777 0.70222 5.61129C1.04166 5.50116 1.38332 5.39867 1.72487 5.29595C1.97939 5.21939 2.23347 5.14157 2.48674 5.06065C2.49838 5.05694 2.51001 5.05324 2.52201 5.04943C3.10872 4.86262 3.68229 4.59755 4.06112 4.0716C4.06679 4.0638 4.07247 4.05599 4.07831 4.04796C4.50019 3.4642 4.6647 2.7543 4.8485 2.06161C4.90896 1.83379 4.97015 1.60619 5.03155 1.37865C5.04856 1.31564 5.06553 1.25263 5.08244 1.18959C5.15037 0.936385 5.21932 0.683523 5.29222 0.431818C5.29904 0.408248 5.30583 0.384667 5.31259 0.361076C5.41466 0.00531681 5.41466 0.00531681 5.5115 0Z\" fill=\"#161617\"/><path d=\"M8.84391 0.740443C8.91024 0.818762 8.92349 0.910806 8.94415 1.01081C9.01305 1.32499 9.09241 1.61388 9.36787 1.79638C9.53782 1.89443 9.74037 1.93904 9.92867 1.98118C10.0082 1.99933 10.0753 2.02341 10.1435 2.07158C10.1588 2.09701 10.1588 2.09701 10.1579 2.14129C10.1421 2.19513 10.1282 2.2125 10.0866 2.24774C10.041 2.26364 10.041 2.26364 9.98633 2.27601C9.96564 2.28096 9.94496 2.28597 9.9243 2.29102C9.91322 2.2937 9.90215 2.29638 9.89075 2.29914C9.55401 2.38039 9.55401 2.38039 9.26295 2.56428C9.25348 2.57222 9.24402 2.58017 9.23427 2.58836C9.02625 2.7797 8.98226 3.098 8.91963 3.36464C8.91605 3.37928 8.91246 3.39393 8.90876 3.40901C8.90566 3.42198 8.90255 3.43494 8.89935 3.4483C8.88584 3.48788 8.87183 3.51369 8.84391 3.54402C8.76614 3.55432 8.76614 3.55432 8.72831 3.54402C8.66814 3.49537 8.65468 3.43996 8.63896 3.3655C8.63633 3.35397 8.63369 3.34244 8.63098 3.33056C8.62259 3.29374 8.61447 3.25686 8.60639 3.21995C8.54302 2.93259 8.47148 2.65064 8.21879 2.4822C8.02131 2.36732 7.78118 2.31298 7.56045 2.26911C7.49996 2.25597 7.4653 2.23944 7.42785 2.18745C7.41972 2.1347 7.41972 2.1347 7.42785 2.08194C7.48541 2.01979 7.54597 2.00462 7.62382 1.98585C7.64835 1.97952 7.67286 1.97314 7.69737 1.96671C7.71003 1.96342 7.72269 1.96012 7.73574 1.95673C7.80032 1.93939 7.86425 1.91995 7.92817 1.90012C7.93978 1.89661 7.95139 1.89309 7.96336 1.88947C8.09329 1.84895 8.20541 1.79712 8.30927 1.70512C8.31896 1.6968 8.32864 1.68848 8.33862 1.67992C8.50026 1.52817 8.55518 1.3002 8.60504 1.08748C8.60884 1.07133 8.61264 1.05518 8.61655 1.03854C8.62411 1.0061 8.63154 0.973622 8.63882 0.94111C8.64403 0.918489 8.64403 0.918489 8.64935 0.895412C8.65238 0.881899 8.65542 0.868385 8.65855 0.854462C8.67186 0.811441 8.68935 0.77766 8.71386 0.740443C8.76096 0.715878 8.79401 0.726983 8.84391 0.740443Z\" fill=\"#414146\"/><path d=\"M2.19446 8.32962C2.21166 8.32975 2.21166 8.32975 2.22919 8.32988C2.35253 8.3338 2.43597 8.37503 2.5268 8.46151C2.6325 8.58061 2.6813 8.71497 2.67852 8.87549C2.66666 9.00565 2.59307 9.11929 2.50282 9.20727C2.39658 9.29672 2.28941 9.32628 2.15366 9.32215C2.03919 9.30825 1.93151 9.25153 1.85038 9.16618C1.7495 9.02258 1.72 8.89087 1.73479 8.71398C1.76533 8.57472 1.85337 8.46167 1.96598 8.38238C2.04421 8.34101 2.10713 8.32886 2.19446 8.32962Z\" fill=\"#4C4C51\"/></svg>\n Analyze\n </button>\n </div>\n </div>\n\n <!-- Right Panel: Logs -->\n <div class=\"cqa-col-span-3 cqa-border cqa-border-solid cqa-border-[##E5E5E5] cqa-rounded-[10px] cqa-py-2 cqa-px-3 cqa-h-full cqa-max-h-[200px] cqa-overflow-auto\"\n style=\"scrollbar-width: thin;\">\n <div class=\"cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-text-[#0A0A0A] cqa-flex cqa-items-center cqa-gap-2 cqa-mb-2\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10.6666 12L14.6666 8L10.6666 4\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M5.33337 4L1.33337 8L5.33337 12\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n Logs\n </div>\n \n <div class=\"cqa-flex cqa-flex-col cqa-gap-2 \">\n <div class=\"cqa-text-[11px] cqa-leading-[100%] cqa-text-[#737373]\">Console</div>\n \n <div *ngFor=\"let log of logs\" class=\"cqa-px-2 cqa-py-[2px] cqa-rounded cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-break-words\" [ngClass]=\"getLogClass(log.level)\">\n {{ log.message }}\n </div>\n \n <div *ngIf=\"!logs || logs.length === 0\" class=\"cqa-px-2 cqa-py-[2px] cqa-rounded cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-text-[#9CA3AF] cqa-bg-[#f8f8f8] cqa-text-center\">\n No logs available\n </div>\n </div>\n\n <!-- <a \n *ngIf=\"showFullLogsLink && logs?.length\"\n (click)=\"onViewFullLogs()\"\n class=\"cqa-text-[10px] cqa-leading-[15px] cqa-text-[#3F43EE] cqa-font-medium cqa-flex cqa-items-center cqa-justify-end cqa-gap-[2px] cqa-cursor-pointer hover:cqa-underline cqa-mt-4\">\n View full logs Iterations\n <div><svg width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.03833 6.74335L2.62833 7.33335L5.96166 4.00002L2.62833 0.666687L2.03833 1.25669L4.78166 4.00002L2.03833 6.74335Z\" fill=\"#3F43EE\"/></svg></div>\n </a> -->\n </div>\n\n \n <cqa-visual-difference-modal\n [isOpen]=\"isModalOpen\"\n [baselineUrl]=\"screenshots?.baseline || ''\"\n [currentUrl]=\"screenshots?.current || ''\"\n [differenceUrl]=\"screenshots?.difference || ''\"\n [initialView]=\"initialModalView\"\n (close)=\"onCloseModal()\">\n </cqa-visual-difference-modal>\n</div>\n\n<style>\n @keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n</style>", styles: ["\n @keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n"], components: [{ type: i1.VisualDifferenceModalComponent, selector: "cqa-visual-difference-modal", inputs: ["baselineUrl", "currentUrl", "differenceUrl", "title", "subtitle", "isOpen", "initialView"], outputs: ["close"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
74
75
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: VisualComparisonComponent, decorators: [{
|
|
75
76
|
type: Component,
|
|
76
|
-
args: [{ selector: 'cqa-visual-comparison', host: { class: 'cqa-ui-root' }, template: "<div class=\"cqa-grid cqa-grid-cols-12 cqa-gap-x-4 cqa-w-full cqa-max-h-[200px] cqa-h-full cqa-overflow-hidden\">\n <!-- Left Panel: Screenshots & Visual Comparison -->\n <div class=\"cqa-col-span-9 cqa-border cqa-border-solid cqa-border-[##E5E5E5] cqa-rounded-[10px] cqa-pt-2 cqa-px-3 cqa-pb-1 cqa-h-full cqa-max-h-[200px] cqa-overflow-auto\"\n style=\"scrollbar-width: thin;\">\n <div class=\"cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-text-[#0A0A0A] cqa-flex cqa-items-center cqa-gap-2 cqa-mb-2\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12.6667 2H3.33333C2.59695 2 2 2.59695 2 3.33333V12.6667C2 13.403 2.59695 14 3.33333 14H12.6667C13.403 14 14 13.403 14 12.6667V3.33333C14 2.59695 13.403 2 12.6667 2Z\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M6.00033 7.33268C6.73671 7.33268 7.33366 6.73573 7.33366 5.99935C7.33366 5.26297 6.73671 4.66602 6.00033 4.66602C5.26395 4.66602 4.66699 5.26297 4.66699 5.99935C4.66699 6.73573 5.26395 7.33268 6.00033 7.33268Z\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M14 10.0004L11.9427 7.94312C11.6926 7.69315 11.3536 7.55273 11 7.55273C10.6464 7.55273 10.3074 7.69315 10.0573 7.94312L4 14.0004\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n Screenshots & Visual Comparison\n </div>\n \n <!-- Screenshot Comparison Grid -->\n <div class=\"cqa-grid cqa-grid-cols-3 cqa-gap-3 cqa-mb-2\">\n <!-- Baseline -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div class=\"cqa-text-[11px] cqa-leading-[100%] cqa-text-[#737373]\">Baseline</div>\n <div class=\"cqa-bg-[#F5F5F5] cqa-rounded-[10px] cqa-border cqa-border-solid cqa-border-[#E5E5E5] cqa-flex cqa-items-center cqa-justify-center cqa-h-[112px] cqa-cursor-pointer\" (click)=\"onImageClick('baseline')\">\n <div *ngIf=\"!screenshots?.baseline\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M25.3333 4H6.66667C5.19391 4 4 5.19391 4 6.66667V25.3333C4 26.8061 5.19391 28 6.66667 28H25.3333C26.8061 28 28 26.8061 28 25.3333V6.66667C28 5.19391 26.8061 4 25.3333 4Z\" stroke=\"#737373\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M11.9997 14.6673C13.4724 14.6673 14.6663 13.4734 14.6663 12.0007C14.6663 10.5279 13.4724 9.33398 11.9997 9.33398C10.5269 9.33398 9.33301 10.5279 9.33301 12.0007C9.33301 13.4734 10.5269 14.6673 11.9997 14.6673Z\" stroke=\"#737373\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M28 20.0009L23.8853 15.8862C23.3853 15.3863 22.7071 15.1055 22 15.1055C21.2929 15.1055 20.6147 15.3863 20.1147 15.8862L8 28.0009\" stroke=\"#737373\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </div>\n <img *ngIf=\"screenshots?.baseline\" [src]=\"screenshots.baseline\" alt=\"Baseline\" class=\"cqa-w-full cqa-h-full cqa-object-cover cqa-rounded-lg\" />\n </div>\n </div>\n\n <!-- Current -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div class=\"cqa-text-[11px] cqa-leading-[100%] cqa-text-[#737373]\">Current</div>\n <div class=\"cqa-bg-[#FEF2F3] cqa-rounded-[10px] cqa-border cqa-border-solid cqa-border-[#F9C2C5] cqa-flex cqa-items-center cqa-justify-center cqa-h-[112px] cqa-cursor-pointer\" (click)=\"onImageClick('current')\">\n <div *ngIf=\"!screenshots?.current\" class=\"cqa-flex cqa-flex-col cqa-items-center cqa-gap-2 cqa-text-[#EF4444]\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M25.3333 4H6.66667C5.19391 4 4 5.19391 4 6.66667V25.3333C4 26.8061 5.19391 28 6.66667 28H25.3333C26.8061 28 28 26.8061 28 25.3333V6.66667C28 5.19391 26.8061 4 25.3333 4Z\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M11.9997 14.6673C13.4724 14.6673 14.6663 13.4734 14.6663 12.0007C14.6663 10.5279 13.4724 9.33398 11.9997 9.33398C10.5269 9.33398 9.33301 10.5279 9.33301 12.0007C9.33301 13.4734 10.5269 14.6673 11.9997 14.6673Z\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M28 20.0009L23.8853 15.8862C23.3853 15.3863 22.7071 15.1055 22 15.1055C21.2929 15.1055 20.6147 15.3863 20.1147 15.8862L8 28.0009\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </div>\n <img *ngIf=\"screenshots?.current\" [src]=\"screenshots.current\" alt=\"Current\" class=\"cqa-w-full cqa-h-full cqa-object-cover cqa-rounded-lg\" />\n </div>\n </div>\n\n <!-- Difference -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div class=\"cqa-text-[11px] cqa-leading-[100%] cqa-text-[#737373]\">Difference</div>\n <div class=\"cqa-bg-[#FEF2F3] cqa-rounded-[10px] cqa-border cqa-border-solid cqa-border-[#F9C2C5] cqa-flex cqa-items-center cqa-justify-center cqa-h-[112px] cqa-cursor-pointer\" (click)=\"onImageClick('difference')\">\n <div *ngIf=\"!screenshots?.difference\" class=\"cqa-flex cqa-flex-col cqa-items-center cqa-gap-2 cqa-text-[#EF4444]\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M25.3333 4H6.66667C5.19391 4 4 5.19391 4 6.66667V25.3333C4 26.8061 5.19391 28 6.66667 28H25.3333C26.8061 28 28 26.8061 28 25.3333V6.66667C28 5.19391 26.8061 4 25.3333 4Z\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M11.9997 14.6673C13.4724 14.6673 14.6663 13.4734 14.6663 12.0007C14.6663 10.5279 13.4724 9.33398 11.9997 9.33398C10.5269 9.33398 9.33301 10.5279 9.33301 12.0007C9.33301 13.4734 10.5269 14.6673 11.9997 14.6673Z\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M28 20.0009L23.8853 15.8862C23.3853 15.3863 22.7071 15.1055 22 15.1055C21.2929 15.1055 20.6147 15.3863 20.1147 15.8862L8 28.0009\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </div>\n <img *ngIf=\"screenshots?.difference\" [src]=\"screenshots.difference\" alt=\"Difference\" class=\"cqa-w-full cqa-h-full cqa-object-cover cqa-rounded-lg\" />\n </div>\n </div>\n </div>\n\n <!-- Action Buttons -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-end cqa-gap-2 cqa-flex-wrap\">\n <button \n (click)=\"onMakeCurrentBaseline()\"\n [disabled]=\"!isCurrentImageAvailable\"\n [class.cqa-opacity-50]=\"!isCurrentImageAvailable\"\n [class.cqa-cursor-not-allowed]=\"!isCurrentImageAvailable\"\n class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-pl-2 cqa-pr-4 cqa-py-[2px] cqa-rounded-lg cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-bg-transparent cqa-text-[#212122] cqa-border cqa-border-solid cqa-border-[#212122] disabled:cqa-cursor-not-allowed\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M4.39754 7.93752L2.31254 5.85252L1.60254 6.55752L4.39754 9.35252L10.3975 3.35252L9.69254 2.64752L4.39754 7.93752Z\" fill=\"black\"/></svg>\n Make current baseline\n </button>\n <button \n (click)=\"onUploadBaseline()\"\n [disabled]=\"isUploadingBaseline?.[testStepResultId] === true\"\n [class.cqa-opacity-50]=\"isUploadingBaseline?.[testStepResultId] === true\"\n [class.cqa-cursor-not-allowed]=\"isUploadingBaseline?.[testStepResultId] === true\"\n class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-pl-2 cqa-pr-4 cqa-py-[2px] cqa-rounded-lg cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-bg-transparent cqa-text-[#212122] cqa-border cqa-border-solid cqa-border-[#212122] disabled:cqa-cursor-not-allowed\">\n <svg *ngIf=\"!isUploadingBaseline?.[testStepResultId]\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 7.5V9H3V7.5H2V9C2 9.55 2.45 10 3 10H9C9.55 10 10 9.55 10 9V7.5H9ZM3.5 4.5L4.205 5.205L5.5 3.915V8H6.5V3.915L7.795 5.205L8.5 4.5L6 2L3.5 4.5Z\" fill=\"black\"/></svg>\n <svg *ngIf=\"isUploadingBaseline?.[testStepResultId] === true\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" style=\"animation: spin 1s linear infinite;\">\n <circle cx=\"6\" cy=\"6\" r=\"5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-dasharray=\"8 4\" opacity=\"0.3\"/>\n <circle cx=\"6\" cy=\"6\" r=\"5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-dasharray=\"8 4\" stroke-dashoffset=\"2\"/>\n </svg>\n <span>{{ isUploadingBaseline?.[testStepResultId] === true ? 'Uploading...' : 'Upload baseline' }}</span>\n </button>\n <!-- Hidden file input -->\n <input \n #fileInput\n type=\"file\" \n accept=\"image/*\"\n (change)=\"onFileSelected($event)\"\n style=\"display: none;\" \n />\n <button \n (click)=\"onAnalyze()\"\n class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-pl-2 cqa-pr-4 cqa-py-[2px] cqa-rounded-lg cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-bg-transparent cqa-text-[#212122] cqa-border cqa-border-solid cqa-border-[#212122]\">\n <svg width=\"11\" height=\"12\" viewBox=\"0 0 11 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M5.5115 0C5.57931 0.0303178 5.60828 0.104354 5.63604 0.173128C5.64996 0.2132 5.66273 0.253489 5.67513 0.2941C5.67998 0.309662 5.68484 0.325224 5.68984 0.341258C5.7543 0.550673 5.81172 0.762331 5.86946 0.97384C5.88251 1.02159 5.89563 1.06932 5.90874 1.11704C5.97551 1.36005 6.04177 1.6032 6.10767 1.84646C6.11693 1.88062 6.12619 1.91479 6.13545 1.94895C6.16156 2.04527 6.18764 2.14159 6.21357 2.23796C6.26837 2.44159 6.32467 2.64463 6.38463 2.84668C6.38986 2.86435 6.3951 2.88203 6.4005 2.90024C6.55624 3.42 6.77701 3.88583 7.13888 4.28262C7.14784 4.29294 7.1568 4.30325 7.16603 4.31388C7.3205 4.48583 7.51873 4.62361 7.71687 4.73481C7.72696 4.74057 7.73705 4.74632 7.74745 4.75225C8.33051 5.079 9.03162 5.22272 9.66313 5.414C9.93984 5.49787 10.2157 5.58438 10.4905 5.6747C10.5099 5.68105 10.5292 5.68738 10.5485 5.6937C10.6062 5.7126 10.6639 5.73182 10.7215 5.7513C10.7349 5.75572 10.7483 5.76015 10.7621 5.76471C10.8415 5.79208 10.9174 5.82439 10.9825 5.88036C11.0023 5.92558 11.0023 5.92558 10.9969 5.9708C10.9336 6.03648 10.8707 6.06728 10.7871 6.09733C10.7751 6.10176 10.7632 6.1062 10.7508 6.11077C10.6096 6.16244 10.4665 6.20766 10.3232 6.25247C10.2938 6.26174 10.2644 6.27101 10.235 6.28028C10.0537 6.33735 9.87199 6.3932 9.69014 6.44842C9.45061 6.52117 9.21143 6.59512 8.97249 6.66991C8.93334 6.68216 8.89418 6.69437 8.85501 6.70654C8.64931 6.77048 8.44462 6.83671 8.24162 6.90944C8.22478 6.91545 8.20794 6.92147 8.19059 6.92766C7.51069 7.17443 6.99245 7.63478 6.66809 8.30799C6.49321 8.68634 6.39006 9.09548 6.28483 9.49929C6.25637 9.60825 6.22611 9.7166 6.1955 9.82492C6.17149 9.91015 6.14803 9.99551 6.12515 10.0811C6.12243 10.0913 6.1197 10.1014 6.1169 10.1119C6.1037 10.1612 6.09056 10.2106 6.07752 10.2599C6.04413 10.3851 6.00817 10.5092 5.97123 10.6332C5.90567 10.8536 5.84601 11.0757 5.78672 11.298C5.69732 11.6328 5.69732 11.6328 5.64662 11.7937C5.64326 11.8045 5.6399 11.8153 5.63644 11.8264C5.61793 11.8837 5.5989 11.9364 5.56388 11.9849C5.5106 11.9972 5.5106 11.9972 5.46273 12C5.40801 11.9168 5.37177 11.8361 5.34273 11.7401C5.33851 11.7265 5.33428 11.7129 5.32993 11.6989C5.27614 11.5233 5.22807 11.3459 5.17999 11.1686C5.16898 11.1281 5.15791 11.0875 5.14685 11.047C5.0644 10.7448 4.98331 10.4423 4.90234 10.1397C4.56509 8.64299 4.56509 8.64299 3.71433 7.43288C3.7007 7.42128 3.68706 7.40968 3.67302 7.39773C3.1156 6.93203 2.3813 6.75959 1.70885 6.55751C1.54254 6.50749 1.37628 6.45724 1.21004 6.40697C1.1955 6.40258 1.1955 6.40258 1.18067 6.39809C0.940881 6.32556 0.701157 6.25283 0.462274 6.17711C0.452168 6.17393 0.442063 6.17075 0.431651 6.16747C0.0646543 6.05178 0.0646543 6.05178 0.000790211 5.9708C-0.00101599 5.93406 -0.00101599 5.93406 0.0152398 5.89543C0.0819909 5.8272 0.14676 5.79797 0.234862 5.76825C0.247618 5.76378 0.260375 5.75931 0.273518 5.75471C0.312587 5.7411 0.351741 5.72779 0.390929 5.71455C0.402112 5.71073 0.413295 5.7069 0.424817 5.70296C0.503904 5.6759 0.583275 5.64986 0.662762 5.62412C0.682294 5.61777 0.682294 5.61777 0.70222 5.61129C1.04166 5.50116 1.38332 5.39867 1.72487 5.29595C1.97939 5.21939 2.23347 5.14157 2.48674 5.06065C2.49838 5.05694 2.51001 5.05324 2.52201 5.04943C3.10872 4.86262 3.68229 4.59755 4.06112 4.0716C4.06679 4.0638 4.07247 4.05599 4.07831 4.04796C4.50019 3.4642 4.6647 2.7543 4.8485 2.06161C4.90896 1.83379 4.97015 1.60619 5.03155 1.37865C5.04856 1.31564 5.06553 1.25263 5.08244 1.18959C5.15037 0.936385 5.21932 0.683523 5.29222 0.431818C5.29904 0.408248 5.30583 0.384667 5.31259 0.361076C5.41466 0.00531681 5.41466 0.00531681 5.5115 0Z\" fill=\"#161617\"/><path d=\"M8.84391 0.740443C8.91024 0.818762 8.92349 0.910806 8.94415 1.01081C9.01305 1.32499 9.09241 1.61388 9.36787 1.79638C9.53782 1.89443 9.74037 1.93904 9.92867 1.98118C10.0082 1.99933 10.0753 2.02341 10.1435 2.07158C10.1588 2.09701 10.1588 2.09701 10.1579 2.14129C10.1421 2.19513 10.1282 2.2125 10.0866 2.24774C10.041 2.26364 10.041 2.26364 9.98633 2.27601C9.96564 2.28096 9.94496 2.28597 9.9243 2.29102C9.91322 2.2937 9.90215 2.29638 9.89075 2.29914C9.55401 2.38039 9.55401 2.38039 9.26295 2.56428C9.25348 2.57222 9.24402 2.58017 9.23427 2.58836C9.02625 2.7797 8.98226 3.098 8.91963 3.36464C8.91605 3.37928 8.91246 3.39393 8.90876 3.40901C8.90566 3.42198 8.90255 3.43494 8.89935 3.4483C8.88584 3.48788 8.87183 3.51369 8.84391 3.54402C8.76614 3.55432 8.76614 3.55432 8.72831 3.54402C8.66814 3.49537 8.65468 3.43996 8.63896 3.3655C8.63633 3.35397 8.63369 3.34244 8.63098 3.33056C8.62259 3.29374 8.61447 3.25686 8.60639 3.21995C8.54302 2.93259 8.47148 2.65064 8.21879 2.4822C8.02131 2.36732 7.78118 2.31298 7.56045 2.26911C7.49996 2.25597 7.4653 2.23944 7.42785 2.18745C7.41972 2.1347 7.41972 2.1347 7.42785 2.08194C7.48541 2.01979 7.54597 2.00462 7.62382 1.98585C7.64835 1.97952 7.67286 1.97314 7.69737 1.96671C7.71003 1.96342 7.72269 1.96012 7.73574 1.95673C7.80032 1.93939 7.86425 1.91995 7.92817 1.90012C7.93978 1.89661 7.95139 1.89309 7.96336 1.88947C8.09329 1.84895 8.20541 1.79712 8.30927 1.70512C8.31896 1.6968 8.32864 1.68848 8.33862 1.67992C8.50026 1.52817 8.55518 1.3002 8.60504 1.08748C8.60884 1.07133 8.61264 1.05518 8.61655 1.03854C8.62411 1.0061 8.63154 0.973622 8.63882 0.94111C8.64403 0.918489 8.64403 0.918489 8.64935 0.895412C8.65238 0.881899 8.65542 0.868385 8.65855 0.854462C8.67186 0.811441 8.68935 0.77766 8.71386 0.740443C8.76096 0.715878 8.79401 0.726983 8.84391 0.740443Z\" fill=\"#414146\"/><path d=\"M2.19446 8.32962C2.21166 8.32975 2.21166 8.32975 2.22919 8.32988C2.35253 8.3338 2.43597 8.37503 2.5268 8.46151C2.6325 8.58061 2.6813 8.71497 2.67852 8.87549C2.66666 9.00565 2.59307 9.11929 2.50282 9.20727C2.39658 9.29672 2.28941 9.32628 2.15366 9.32215C2.03919 9.30825 1.93151 9.25153 1.85038 9.16618C1.7495 9.02258 1.72 8.89087 1.73479 8.71398C1.76533 8.57472 1.85337 8.46167 1.96598 8.38238C2.04421 8.34101 2.10713 8.32886 2.19446 8.32962Z\" fill=\"#4C4C51\"/></svg>\n Analyze\n </button>\n </div>\n </div>\n\n <!-- Right Panel: Logs -->\n <div class=\"cqa-col-span-3 cqa-border cqa-border-solid cqa-border-[##E5E5E5] cqa-rounded-[10px] cqa-py-2 cqa-px-3 cqa-h-full cqa-max-h-[200px] cqa-overflow-auto\"\n style=\"scrollbar-width: thin;\">\n <div class=\"cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-text-[#0A0A0A] cqa-flex cqa-items-center cqa-gap-2 cqa-mb-2\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10.6666 12L14.6666 8L10.6666 4\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M5.33337 4L1.33337 8L5.33337 12\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n Logs\n </div>\n \n <div class=\"cqa-flex cqa-flex-col cqa-gap-2 \">\n <div class=\"cqa-text-[11px] cqa-leading-[100%] cqa-text-[#737373]\">Console</div>\n \n <div *ngFor=\"let log of logs\" class=\"cqa-px-2 cqa-py-[2px] cqa-rounded cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-break-words\" [ngClass]=\"getLogClass(log.level)\">\n {{ log.message }}\n </div>\n \n <div *ngIf=\"!logs || logs.length === 0\" class=\"cqa-px-2 cqa-py-[2px] cqa-rounded cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-text-[#9CA3AF] cqa-bg-[#f8f8f8] cqa-text-center\">\n No logs available\n </div>\n </div>\n\n <!-- <a \n *ngIf=\"showFullLogsLink && logs?.length\"\n (click)=\"onViewFullLogs()\"\n class=\"cqa-text-[10px] cqa-leading-[15px] cqa-text-[#3F43EE] cqa-font-medium cqa-flex cqa-items-center cqa-justify-end cqa-gap-[2px] cqa-cursor-pointer hover:cqa-underline cqa-mt-4\">\n View full logs Iterations\n <div><svg width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.03833 6.74335L2.62833 7.33335L5.96166 4.00002L2.62833 0.666687L2.03833 1.25669L4.78166 4.00002L2.03833 6.74335Z\" fill=\"#3F43EE\"/></svg></div>\n </a> -->\n </div>\n\n \n <cqa-visual-difference-modal\n [isOpen]=\"isModalOpen\"\n [baselineUrl]=\"screenshots?.baseline || ''\"\n [currentUrl]=\"screenshots?.current || ''\"\n [differenceUrl]=\"screenshots?.difference || ''\"\n [initialView]=\"initialModalView\"\n (close)=\"onCloseModal()\">\n </cqa-visual-difference-modal>\n</div>\n\n<style>\n @keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n</style>", styles: ["\n @keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n"] }]
|
|
77
|
+
args: [{ selector: 'cqa-visual-comparison', host: { class: 'cqa-ui-root' }, template: "<div class=\"cqa-grid cqa-grid-cols-12 cqa-gap-x-4 cqa-w-full cqa-max-h-[200px] cqa-h-full cqa-overflow-hidden\">\n <!-- Left Panel: Screenshots & Visual Comparison -->\n <div class=\"cqa-col-span-9 cqa-border cqa-border-solid cqa-border-[##E5E5E5] cqa-rounded-[10px] cqa-pt-2 cqa-px-3 cqa-pb-1 cqa-h-full cqa-max-h-[200px] cqa-overflow-auto\"\n style=\"scrollbar-width: thin;\">\n <div class=\"cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-text-[#0A0A0A] cqa-flex cqa-items-center cqa-gap-2 cqa-mb-2\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12.6667 2H3.33333C2.59695 2 2 2.59695 2 3.33333V12.6667C2 13.403 2.59695 14 3.33333 14H12.6667C13.403 14 14 13.403 14 12.6667V3.33333C14 2.59695 13.403 2 12.6667 2Z\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M6.00033 7.33268C6.73671 7.33268 7.33366 6.73573 7.33366 5.99935C7.33366 5.26297 6.73671 4.66602 6.00033 4.66602C5.26395 4.66602 4.66699 5.26297 4.66699 5.99935C4.66699 6.73573 5.26395 7.33268 6.00033 7.33268Z\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M14 10.0004L11.9427 7.94312C11.6926 7.69315 11.3536 7.55273 11 7.55273C10.6464 7.55273 10.3074 7.69315 10.0573 7.94312L4 14.0004\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n Screenshots & Visual Comparison\n </div>\n \n <!-- Screenshot Comparison Grid -->\n <div class=\"cqa-grid cqa-grid-cols-3 cqa-gap-3 cqa-mb-2\">\n <!-- Baseline -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div class=\"cqa-text-[11px] cqa-leading-[100%] cqa-text-[#737373]\">Baseline</div>\n <div class=\"cqa-bg-[#F5F5F5] cqa-rounded-[10px] cqa-border cqa-border-solid cqa-border-[#E5E5E5] cqa-flex cqa-items-center cqa-justify-center cqa-h-[112px] cqa-cursor-pointer\" (click)=\"onImageClick('baseline')\">\n <div *ngIf=\"!screenshots?.baseline\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M25.3333 4H6.66667C5.19391 4 4 5.19391 4 6.66667V25.3333C4 26.8061 5.19391 28 6.66667 28H25.3333C26.8061 28 28 26.8061 28 25.3333V6.66667C28 5.19391 26.8061 4 25.3333 4Z\" stroke=\"#737373\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M11.9997 14.6673C13.4724 14.6673 14.6663 13.4734 14.6663 12.0007C14.6663 10.5279 13.4724 9.33398 11.9997 9.33398C10.5269 9.33398 9.33301 10.5279 9.33301 12.0007C9.33301 13.4734 10.5269 14.6673 11.9997 14.6673Z\" stroke=\"#737373\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M28 20.0009L23.8853 15.8862C23.3853 15.3863 22.7071 15.1055 22 15.1055C21.2929 15.1055 20.6147 15.3863 20.1147 15.8862L8 28.0009\" stroke=\"#737373\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </div>\n <img *ngIf=\"screenshots?.baseline\" [src]=\"screenshots.baseline\" alt=\"Baseline\" class=\"cqa-w-full cqa-h-full cqa-object-cover cqa-rounded-lg\" />\n </div>\n </div>\n\n <!-- Current -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div class=\"cqa-text-[11px] cqa-leading-[100%] cqa-text-[#737373]\">Current</div>\n <div class=\"cqa-bg-[#FEF2F3] cqa-rounded-[10px] cqa-border cqa-border-solid cqa-border-[#F9C2C5] cqa-flex cqa-items-center cqa-justify-center cqa-h-[112px] cqa-cursor-pointer\" (click)=\"onImageClick('current')\">\n <div *ngIf=\"!screenshots?.current\" class=\"cqa-flex cqa-flex-col cqa-items-center cqa-gap-2 cqa-text-[#EF4444]\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M25.3333 4H6.66667C5.19391 4 4 5.19391 4 6.66667V25.3333C4 26.8061 5.19391 28 6.66667 28H25.3333C26.8061 28 28 26.8061 28 25.3333V6.66667C28 5.19391 26.8061 4 25.3333 4Z\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M11.9997 14.6673C13.4724 14.6673 14.6663 13.4734 14.6663 12.0007C14.6663 10.5279 13.4724 9.33398 11.9997 9.33398C10.5269 9.33398 9.33301 10.5279 9.33301 12.0007C9.33301 13.4734 10.5269 14.6673 11.9997 14.6673Z\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M28 20.0009L23.8853 15.8862C23.3853 15.3863 22.7071 15.1055 22 15.1055C21.2929 15.1055 20.6147 15.3863 20.1147 15.8862L8 28.0009\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </div>\n <img *ngIf=\"screenshots?.current\" [src]=\"screenshots.current\" alt=\"Current\" class=\"cqa-w-full cqa-h-full cqa-object-cover cqa-rounded-lg\" />\n </div>\n </div>\n\n <!-- Difference -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div class=\"cqa-text-[11px] cqa-leading-[100%] cqa-text-[#737373]\">Difference</div>\n <div class=\"cqa-bg-[#FEF2F3] cqa-rounded-[10px] cqa-border cqa-border-solid cqa-border-[#F9C2C5] cqa-flex cqa-items-center cqa-justify-center cqa-h-[112px] cqa-cursor-pointer\" (click)=\"onImageClick('difference')\">\n <div *ngIf=\"!screenshots?.difference\" class=\"cqa-flex cqa-flex-col cqa-items-center cqa-gap-2 cqa-text-[#EF4444]\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M25.3333 4H6.66667C5.19391 4 4 5.19391 4 6.66667V25.3333C4 26.8061 5.19391 28 6.66667 28H25.3333C26.8061 28 28 26.8061 28 25.3333V6.66667C28 5.19391 26.8061 4 25.3333 4Z\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M11.9997 14.6673C13.4724 14.6673 14.6663 13.4734 14.6663 12.0007C14.6663 10.5279 13.4724 9.33398 11.9997 9.33398C10.5269 9.33398 9.33301 10.5279 9.33301 12.0007C9.33301 13.4734 10.5269 14.6673 11.9997 14.6673Z\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M28 20.0009L23.8853 15.8862C23.3853 15.3863 22.7071 15.1055 22 15.1055C21.2929 15.1055 20.6147 15.3863 20.1147 15.8862L8 28.0009\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </div>\n <img *ngIf=\"screenshots?.difference\" [src]=\"screenshots.difference\" alt=\"Difference\" class=\"cqa-w-full cqa-h-full cqa-object-cover cqa-rounded-lg\" />\n </div>\n </div>\n </div>\n\n <!-- Action Buttons -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-end cqa-gap-2 cqa-flex-wrap\">\n <button \n (click)=\"onMakeCurrentBaseline()\"\n [disabled]=\"!isCurrentImageAvailable || isMakingCurrentBaseline?.[testStepResultId] === true\"\n [class.cqa-opacity-50]=\"!isCurrentImageAvailable || isMakingCurrentBaseline?.[testStepResultId] === true\"\n [class.cqa-cursor-not-allowed]=\"!isCurrentImageAvailable || isMakingCurrentBaseline?.[testStepResultId] === true\"\n class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-pl-2 cqa-pr-4 cqa-py-[2px] cqa-rounded-lg cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-bg-transparent cqa-text-[#212122] cqa-border cqa-border-solid cqa-border-[#212122] disabled:cqa-cursor-not-allowed\">\n <svg *ngIf=\"!isMakingCurrentBaseline?.[testStepResultId]\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M4.39754 7.93752L2.31254 5.85252L1.60254 6.55752L4.39754 9.35252L10.3975 3.35252L9.69254 2.64752L4.39754 7.93752Z\" fill=\"black\"/></svg>\n <svg *ngIf=\"isMakingCurrentBaseline?.[testStepResultId] === true\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"6\" cy=\"6\" r=\"5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-dasharray=\"8 4\" opacity=\"0.3\"/>\n <circle cx=\"6\" cy=\"6\" r=\"5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-dasharray=\"8 4\" stroke-dashoffset=\"2\">\n <animateTransform attributeName=\"transform\" type=\"rotate\" values=\"0 6 6;360 6 6\" dur=\"1s\" repeatCount=\"indefinite\"/>\n </circle>\n </svg>\n <span>{{ isMakingCurrentBaseline?.[testStepResultId] === true ? 'Loading...' : 'Make current baseline' }}</span>\n </button>\n <button \n (click)=\"onUploadBaseline()\"\n [disabled]=\"isUploadingBaseline?.[testStepResultId] === true\"\n [class.cqa-opacity-50]=\"isUploadingBaseline?.[testStepResultId] === true\"\n [class.cqa-cursor-not-allowed]=\"isUploadingBaseline?.[testStepResultId] === true\"\n class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-pl-2 cqa-pr-4 cqa-py-[2px] cqa-rounded-lg cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-bg-transparent cqa-text-[#212122] cqa-border cqa-border-solid cqa-border-[#212122] disabled:cqa-cursor-not-allowed\">\n <svg *ngIf=\"!isUploadingBaseline?.[testStepResultId]\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 7.5V9H3V7.5H2V9C2 9.55 2.45 10 3 10H9C9.55 10 10 9.55 10 9V7.5H9ZM3.5 4.5L4.205 5.205L5.5 3.915V8H6.5V3.915L7.795 5.205L8.5 4.5L6 2L3.5 4.5Z\" fill=\"black\"/></svg>\n <svg *ngIf=\"isUploadingBaseline?.[testStepResultId] === true\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" style=\"animation: spin 1s linear infinite;\">\n <circle cx=\"6\" cy=\"6\" r=\"5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-dasharray=\"8 4\" opacity=\"0.3\"/>\n <circle cx=\"6\" cy=\"6\" r=\"5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-dasharray=\"8 4\" stroke-dashoffset=\"2\"/>\n </svg>\n <span>{{ isUploadingBaseline?.[testStepResultId] === true ? 'Uploading...' : 'Upload baseline' }}</span>\n </button>\n <!-- Hidden file input -->\n <input \n #fileInput\n type=\"file\" \n accept=\"image/*\"\n (change)=\"onFileSelected($event)\"\n style=\"display: none;\" \n />\n <button \n (click)=\"onAnalyze()\"\n class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-pl-2 cqa-pr-4 cqa-py-[2px] cqa-rounded-lg cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-bg-transparent cqa-text-[#212122] cqa-border cqa-border-solid cqa-border-[#212122]\">\n <svg width=\"11\" height=\"12\" viewBox=\"0 0 11 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M5.5115 0C5.57931 0.0303178 5.60828 0.104354 5.63604 0.173128C5.64996 0.2132 5.66273 0.253489 5.67513 0.2941C5.67998 0.309662 5.68484 0.325224 5.68984 0.341258C5.7543 0.550673 5.81172 0.762331 5.86946 0.97384C5.88251 1.02159 5.89563 1.06932 5.90874 1.11704C5.97551 1.36005 6.04177 1.6032 6.10767 1.84646C6.11693 1.88062 6.12619 1.91479 6.13545 1.94895C6.16156 2.04527 6.18764 2.14159 6.21357 2.23796C6.26837 2.44159 6.32467 2.64463 6.38463 2.84668C6.38986 2.86435 6.3951 2.88203 6.4005 2.90024C6.55624 3.42 6.77701 3.88583 7.13888 4.28262C7.14784 4.29294 7.1568 4.30325 7.16603 4.31388C7.3205 4.48583 7.51873 4.62361 7.71687 4.73481C7.72696 4.74057 7.73705 4.74632 7.74745 4.75225C8.33051 5.079 9.03162 5.22272 9.66313 5.414C9.93984 5.49787 10.2157 5.58438 10.4905 5.6747C10.5099 5.68105 10.5292 5.68738 10.5485 5.6937C10.6062 5.7126 10.6639 5.73182 10.7215 5.7513C10.7349 5.75572 10.7483 5.76015 10.7621 5.76471C10.8415 5.79208 10.9174 5.82439 10.9825 5.88036C11.0023 5.92558 11.0023 5.92558 10.9969 5.9708C10.9336 6.03648 10.8707 6.06728 10.7871 6.09733C10.7751 6.10176 10.7632 6.1062 10.7508 6.11077C10.6096 6.16244 10.4665 6.20766 10.3232 6.25247C10.2938 6.26174 10.2644 6.27101 10.235 6.28028C10.0537 6.33735 9.87199 6.3932 9.69014 6.44842C9.45061 6.52117 9.21143 6.59512 8.97249 6.66991C8.93334 6.68216 8.89418 6.69437 8.85501 6.70654C8.64931 6.77048 8.44462 6.83671 8.24162 6.90944C8.22478 6.91545 8.20794 6.92147 8.19059 6.92766C7.51069 7.17443 6.99245 7.63478 6.66809 8.30799C6.49321 8.68634 6.39006 9.09548 6.28483 9.49929C6.25637 9.60825 6.22611 9.7166 6.1955 9.82492C6.17149 9.91015 6.14803 9.99551 6.12515 10.0811C6.12243 10.0913 6.1197 10.1014 6.1169 10.1119C6.1037 10.1612 6.09056 10.2106 6.07752 10.2599C6.04413 10.3851 6.00817 10.5092 5.97123 10.6332C5.90567 10.8536 5.84601 11.0757 5.78672 11.298C5.69732 11.6328 5.69732 11.6328 5.64662 11.7937C5.64326 11.8045 5.6399 11.8153 5.63644 11.8264C5.61793 11.8837 5.5989 11.9364 5.56388 11.9849C5.5106 11.9972 5.5106 11.9972 5.46273 12C5.40801 11.9168 5.37177 11.8361 5.34273 11.7401C5.33851 11.7265 5.33428 11.7129 5.32993 11.6989C5.27614 11.5233 5.22807 11.3459 5.17999 11.1686C5.16898 11.1281 5.15791 11.0875 5.14685 11.047C5.0644 10.7448 4.98331 10.4423 4.90234 10.1397C4.56509 8.64299 4.56509 8.64299 3.71433 7.43288C3.7007 7.42128 3.68706 7.40968 3.67302 7.39773C3.1156 6.93203 2.3813 6.75959 1.70885 6.55751C1.54254 6.50749 1.37628 6.45724 1.21004 6.40697C1.1955 6.40258 1.1955 6.40258 1.18067 6.39809C0.940881 6.32556 0.701157 6.25283 0.462274 6.17711C0.452168 6.17393 0.442063 6.17075 0.431651 6.16747C0.0646543 6.05178 0.0646543 6.05178 0.000790211 5.9708C-0.00101599 5.93406 -0.00101599 5.93406 0.0152398 5.89543C0.0819909 5.8272 0.14676 5.79797 0.234862 5.76825C0.247618 5.76378 0.260375 5.75931 0.273518 5.75471C0.312587 5.7411 0.351741 5.72779 0.390929 5.71455C0.402112 5.71073 0.413295 5.7069 0.424817 5.70296C0.503904 5.6759 0.583275 5.64986 0.662762 5.62412C0.682294 5.61777 0.682294 5.61777 0.70222 5.61129C1.04166 5.50116 1.38332 5.39867 1.72487 5.29595C1.97939 5.21939 2.23347 5.14157 2.48674 5.06065C2.49838 5.05694 2.51001 5.05324 2.52201 5.04943C3.10872 4.86262 3.68229 4.59755 4.06112 4.0716C4.06679 4.0638 4.07247 4.05599 4.07831 4.04796C4.50019 3.4642 4.6647 2.7543 4.8485 2.06161C4.90896 1.83379 4.97015 1.60619 5.03155 1.37865C5.04856 1.31564 5.06553 1.25263 5.08244 1.18959C5.15037 0.936385 5.21932 0.683523 5.29222 0.431818C5.29904 0.408248 5.30583 0.384667 5.31259 0.361076C5.41466 0.00531681 5.41466 0.00531681 5.5115 0Z\" fill=\"#161617\"/><path d=\"M8.84391 0.740443C8.91024 0.818762 8.92349 0.910806 8.94415 1.01081C9.01305 1.32499 9.09241 1.61388 9.36787 1.79638C9.53782 1.89443 9.74037 1.93904 9.92867 1.98118C10.0082 1.99933 10.0753 2.02341 10.1435 2.07158C10.1588 2.09701 10.1588 2.09701 10.1579 2.14129C10.1421 2.19513 10.1282 2.2125 10.0866 2.24774C10.041 2.26364 10.041 2.26364 9.98633 2.27601C9.96564 2.28096 9.94496 2.28597 9.9243 2.29102C9.91322 2.2937 9.90215 2.29638 9.89075 2.29914C9.55401 2.38039 9.55401 2.38039 9.26295 2.56428C9.25348 2.57222 9.24402 2.58017 9.23427 2.58836C9.02625 2.7797 8.98226 3.098 8.91963 3.36464C8.91605 3.37928 8.91246 3.39393 8.90876 3.40901C8.90566 3.42198 8.90255 3.43494 8.89935 3.4483C8.88584 3.48788 8.87183 3.51369 8.84391 3.54402C8.76614 3.55432 8.76614 3.55432 8.72831 3.54402C8.66814 3.49537 8.65468 3.43996 8.63896 3.3655C8.63633 3.35397 8.63369 3.34244 8.63098 3.33056C8.62259 3.29374 8.61447 3.25686 8.60639 3.21995C8.54302 2.93259 8.47148 2.65064 8.21879 2.4822C8.02131 2.36732 7.78118 2.31298 7.56045 2.26911C7.49996 2.25597 7.4653 2.23944 7.42785 2.18745C7.41972 2.1347 7.41972 2.1347 7.42785 2.08194C7.48541 2.01979 7.54597 2.00462 7.62382 1.98585C7.64835 1.97952 7.67286 1.97314 7.69737 1.96671C7.71003 1.96342 7.72269 1.96012 7.73574 1.95673C7.80032 1.93939 7.86425 1.91995 7.92817 1.90012C7.93978 1.89661 7.95139 1.89309 7.96336 1.88947C8.09329 1.84895 8.20541 1.79712 8.30927 1.70512C8.31896 1.6968 8.32864 1.68848 8.33862 1.67992C8.50026 1.52817 8.55518 1.3002 8.60504 1.08748C8.60884 1.07133 8.61264 1.05518 8.61655 1.03854C8.62411 1.0061 8.63154 0.973622 8.63882 0.94111C8.64403 0.918489 8.64403 0.918489 8.64935 0.895412C8.65238 0.881899 8.65542 0.868385 8.65855 0.854462C8.67186 0.811441 8.68935 0.77766 8.71386 0.740443C8.76096 0.715878 8.79401 0.726983 8.84391 0.740443Z\" fill=\"#414146\"/><path d=\"M2.19446 8.32962C2.21166 8.32975 2.21166 8.32975 2.22919 8.32988C2.35253 8.3338 2.43597 8.37503 2.5268 8.46151C2.6325 8.58061 2.6813 8.71497 2.67852 8.87549C2.66666 9.00565 2.59307 9.11929 2.50282 9.20727C2.39658 9.29672 2.28941 9.32628 2.15366 9.32215C2.03919 9.30825 1.93151 9.25153 1.85038 9.16618C1.7495 9.02258 1.72 8.89087 1.73479 8.71398C1.76533 8.57472 1.85337 8.46167 1.96598 8.38238C2.04421 8.34101 2.10713 8.32886 2.19446 8.32962Z\" fill=\"#4C4C51\"/></svg>\n Analyze\n </button>\n </div>\n </div>\n\n <!-- Right Panel: Logs -->\n <div class=\"cqa-col-span-3 cqa-border cqa-border-solid cqa-border-[##E5E5E5] cqa-rounded-[10px] cqa-py-2 cqa-px-3 cqa-h-full cqa-max-h-[200px] cqa-overflow-auto\"\n style=\"scrollbar-width: thin;\">\n <div class=\"cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-text-[#0A0A0A] cqa-flex cqa-items-center cqa-gap-2 cqa-mb-2\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10.6666 12L14.6666 8L10.6666 4\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M5.33337 4L1.33337 8L5.33337 12\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n Logs\n </div>\n \n <div class=\"cqa-flex cqa-flex-col cqa-gap-2 \">\n <div class=\"cqa-text-[11px] cqa-leading-[100%] cqa-text-[#737373]\">Console</div>\n \n <div *ngFor=\"let log of logs\" class=\"cqa-px-2 cqa-py-[2px] cqa-rounded cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-break-words\" [ngClass]=\"getLogClass(log.level)\">\n {{ log.message }}\n </div>\n \n <div *ngIf=\"!logs || logs.length === 0\" class=\"cqa-px-2 cqa-py-[2px] cqa-rounded cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-text-[#9CA3AF] cqa-bg-[#f8f8f8] cqa-text-center\">\n No logs available\n </div>\n </div>\n\n <!-- <a \n *ngIf=\"showFullLogsLink && logs?.length\"\n (click)=\"onViewFullLogs()\"\n class=\"cqa-text-[10px] cqa-leading-[15px] cqa-text-[#3F43EE] cqa-font-medium cqa-flex cqa-items-center cqa-justify-end cqa-gap-[2px] cqa-cursor-pointer hover:cqa-underline cqa-mt-4\">\n View full logs Iterations\n <div><svg width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.03833 6.74335L2.62833 7.33335L5.96166 4.00002L2.62833 0.666687L2.03833 1.25669L4.78166 4.00002L2.03833 6.74335Z\" fill=\"#3F43EE\"/></svg></div>\n </a> -->\n </div>\n\n \n <cqa-visual-difference-modal\n [isOpen]=\"isModalOpen\"\n [baselineUrl]=\"screenshots?.baseline || ''\"\n [currentUrl]=\"screenshots?.current || ''\"\n [differenceUrl]=\"screenshots?.difference || ''\"\n [initialView]=\"initialModalView\"\n (close)=\"onCloseModal()\">\n </cqa-visual-difference-modal>\n</div>\n\n<style>\n @keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n</style>", styles: ["\n @keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n"] }]
|
|
77
78
|
}], propDecorators: { screenshots: [{
|
|
78
79
|
type: Input
|
|
79
80
|
}], logs: [{
|
|
@@ -82,6 +83,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
82
83
|
type: Input
|
|
83
84
|
}], isUploadingBaseline: [{
|
|
84
85
|
type: Input
|
|
86
|
+
}], isMakingCurrentBaseline: [{
|
|
87
|
+
type: Input
|
|
85
88
|
}], isLive: [{
|
|
86
89
|
type: Input
|
|
87
90
|
}], testStepResultId: [{
|
|
@@ -98,4 +101,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
98
101
|
type: ViewChild,
|
|
99
102
|
args: ['fileInput']
|
|
100
103
|
}] } });
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzdWFsLWNvbXBhcmlzb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9leGVjdXRpb24tc2NyZWVuL3Zpc3VhbC1jb21wYXJpc29uL3Zpc3VhbC1jb21wYXJpc29uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZXhlY3V0aW9uLXNjcmVlbi92aXN1YWwtY29tcGFyaXNvbi92aXN1YWwtY29tcGFyaXNvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBYyxNQUFNLGVBQWUsQ0FBQzs7OztBQW9COUYsTUFBTSxPQUFPLHlCQUF5QjtJQU50QztRQVNXLHFCQUFnQixHQUFhLElBQUksQ0FBQztRQUNsQyx3QkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDekIsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUdkLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUE0QixDQUFDO1FBQ25FLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFDekQsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDbkMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBSWxELGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLHFCQUFnQixHQUFrQixVQUFVLENBQUM7S0FnRTlDO0lBOURDLElBQUksdUJBQXVCO1FBQ3pCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRTtZQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLHlDQUF5QyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDakYsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQztnQkFDNUIsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtnQkFDdkMsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTzthQUNyQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFZO1FBQ3pCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUEwQixDQUFDO1FBQy9DLElBQUksS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDekMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QixPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztnQkFDdkIsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjthQUN4QyxDQUFDLENBQUM7WUFDSCxtQkFBbUI7WUFDbkIsS0FBSyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7U0FDbEI7SUFDSCxDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFhO1FBQ3ZCLFFBQVEsS0FBSyxFQUFFO1lBQ2IsS0FBSyxTQUFTO2dCQUNaLE9BQU8scUNBQXFDLENBQUM7WUFDL0MsS0FBSyxPQUFPO2dCQUNWLE9BQU8scUNBQXFDLENBQUM7WUFDL0M7Z0JBQ0UsT0FBTyxxQ0FBcUMsQ0FBQztTQUNoRDtJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsSUFBWTtRQUN2QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBcUIsQ0FBQztRQUM5QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUM7O3NIQS9FVSx5QkFBeUI7MEdBQXpCLHlCQUF5QiwyaEJDcEJ0QyxvaWtCQW1JUTsyRkQvR0sseUJBQXlCO2tCQU5yQyxTQUFTOytCQUNFLHVCQUF1QixRQUczQixFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7OEJBR3JCLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFSSxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBRWlCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNjcmVlbnNob3REYXRhLCBMb2dFbnRyeSB9IGZyb20gJy4uL2V4ZWN1dGlvbi1zdGVwLm1vZGVscyc7XG5pbXBvcnQgeyBJbWFnZVZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vdmlzdWFsLWRpZmZlcmVuY2UtbW9kYWwvdmlzdWFsLWRpZmZlcmVuY2UtbW9kYWwuY29tcG9uZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBtYWtlQ3VycmVudEJhc2VsaW5lRXZlbnQge1xuICB0ZXN0U3RlcFJlc3VsdElkOiBzdHJpbmc7XG4gIGN1cnJlbnRVcmw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSB1cGxvYWRCYXNlbGluZUV2ZW50IHtcbiAgZmlsZTogRmlsZTtcbiAgdGVzdFN0ZXBSZXN1bHRJZDogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtdmlzdWFsLWNvbXBhcmlzb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vdmlzdWFsLWNvbXBhcmlzb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtdLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QnIH1cbn0pXG5leHBvcnQgY2xhc3MgVmlzdWFsQ29tcGFyaXNvbkNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHNjcmVlbnNob3RzPzogU2NyZWVuc2hvdERhdGE7XG4gIEBJbnB1dCgpIGxvZ3M/OiBMb2dFbnRyeVtdO1xuICBASW5wdXQoKSBzaG93RnVsbExvZ3NMaW5rPzogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGlzVXBsb2FkaW5nQmFzZWxpbmUgPSB7fTtcbiAgQElucHV0KCkgaXNMaXZlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHRlc3RTdGVwUmVzdWx0SWQhOiBzdHJpbmc7XG4gIFxuICBAT3V0cHV0KCkgbWFrZUN1cnJlbnRCYXNlbGluZSA9IG5ldyBFdmVudEVtaXR0ZXI8bWFrZUN1cnJlbnRCYXNlbGluZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgdXBsb2FkQmFzZWxpbmUgPSBuZXcgRXZlbnRFbWl0dGVyPHVwbG9hZEJhc2VsaW5lRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBhbmFseXplID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgdmlld0Z1bGxMb2dzID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBcbiAgQFZpZXdDaGlsZCgnZmlsZUlucHV0JykgZmlsZUlucHV0ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgXG4gIGlzTW9kYWxPcGVuID0gZmFsc2U7XG4gIGluaXRpYWxNb2RhbFZpZXc6IEltYWdlVmlld1R5cGUgPSAnYmFzZWxpbmUnO1xuXG4gIGdldCBpc0N1cnJlbnRJbWFnZUF2YWlsYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnNjcmVlbnNob3RzPy5jdXJyZW50O1xuICB9XG5cbiAgb25NYWtlQ3VycmVudEJhc2VsaW5lKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNjcmVlbnNob3RzPy5jdXJyZW50KSB7XG4gICAgICBjb25zb2xlLmxvZygnTWFrZSBjdXJyZW50IGJhc2VsaW5lIGNsaWNrZWQgd2l0aCBVUkw6JywgdGhpcy5zY3JlZW5zaG90cy5jdXJyZW50KTtcbiAgICAgIHRoaXMubWFrZUN1cnJlbnRCYXNlbGluZS5lbWl0KHtcbiAgICAgICAgdGVzdFN0ZXBSZXN1bHRJZDogdGhpcy50ZXN0U3RlcFJlc3VsdElkLFxuICAgICAgICBjdXJyZW50VXJsOiB0aGlzLnNjcmVlbnNob3RzLmN1cnJlbnRcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG9uVXBsb2FkQmFzZWxpbmUoKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ1VwbG9hZCBiYXNlbGluZSBjbGlja2VkJyk7XG4gICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICB9XG5cbiAgb25GaWxlU2VsZWN0ZWQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBpZiAoaW5wdXQuZmlsZXMgJiYgaW5wdXQuZmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlsZSA9IGlucHV0LmZpbGVzWzBdO1xuICAgICAgY29uc29sZS5sb2coJ0ZpbGUgc2VsZWN0ZWQ6JywgZmlsZS5uYW1lKTtcbiAgICAgIHRoaXMudXBsb2FkQmFzZWxpbmUuZW1pdCh7XG4gICAgICAgIGZpbGU6IGZpbGUsXG4gICAgICAgIHRlc3RTdGVwUmVzdWx0SWQ6IHRoaXMudGVzdFN0ZXBSZXN1bHRJZFxuICAgICAgfSk7XG4gICAgICAvLyBSZXNldCBmaWxlIGlucHV0XG4gICAgICBpbnB1dC52YWx1ZSA9ICcnO1xuICAgIH1cbiAgfVxuXG4gIG9uQW5hbHl6ZSgpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZygnQW5hbHl6ZSBjbGlja2VkJyk7XG4gICAgdGhpcy5hbmFseXplLmVtaXQoKTtcbiAgfVxuXG4gIG9uVmlld0Z1bGxMb2dzKCk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdWaWV3IGZ1bGwgbG9ncyBjbGlja2VkJyk7XG4gICAgdGhpcy52aWV3RnVsbExvZ3MuZW1pdCgpO1xuICB9XG5cbiAgZ2V0TG9nQ2xhc3MobGV2ZWw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgc3dpdGNoIChsZXZlbCkge1xuICAgICAgY2FzZSAnd2FybmluZyc6XG4gICAgICAgIHJldHVybiAnY3FhLXRleHQtWyNCQjREMDBdIGNxYS1iZy1bI0ZGRkJFQl0nO1xuICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICByZXR1cm4gJ2NxYS10ZXh0LVsjRTcwMDBCXSBjcWEtYmctWyNGREU1RTddJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnY3FhLXRleHQtWyM5Q0EzQUZdIGNxYS1iZy1bI2Y4ZjhmOF0nO1xuICAgIH1cbiAgfVxuXG4gIG9uSW1hZ2VDbGljayh0eXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRpYWxNb2RhbFZpZXcgPSB0eXBlIGFzIEltYWdlVmlld1R5cGU7XG4gICAgdGhpcy5pc01vZGFsT3BlbiA9IHRydWU7XG4gIH1cblxuICBvbkNsb3NlTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5pc01vZGFsT3BlbiA9IGZhbHNlO1xuICB9XG59XG5cbiIsIjxkaXYgY2xhc3M9XCJjcWEtZ3JpZCBjcWEtZ3JpZC1jb2xzLTEyIGNxYS1nYXAteC00IGNxYS13LWZ1bGwgY3FhLW1heC1oLVsyMDBweF0gY3FhLWgtZnVsbCBjcWEtb3ZlcmZsb3ctaGlkZGVuXCI+XG4gIDwhLS0gTGVmdCBQYW5lbDogU2NyZWVuc2hvdHMgJiBWaXN1YWwgQ29tcGFyaXNvbiAtLT5cbiAgPGRpdiBjbGFzcz1cImNxYS1jb2wtc3Bhbi05IGNxYS1ib3JkZXIgY3FhLWJvcmRlci1zb2xpZCBjcWEtYm9yZGVyLVsjI0U1RTVFNV0gY3FhLXJvdW5kZWQtWzEwcHhdIGNxYS1wdC0yIGNxYS1weC0zIGNxYS1wYi0xIGNxYS1oLWZ1bGwgY3FhLW1heC1oLVsyMDBweF0gY3FhLW92ZXJmbG93LWF1dG9cIlxuICAgIHN0eWxlPVwic2Nyb2xsYmFyLXdpZHRoOiB0aGluO1wiPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bIzBBMEEwQV0gY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTIgY3FhLW1iLTJcIj5cbiAgICAgIDxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMTIuNjY2NyAySDMuMzMzMzNDMi41OTY5NSAyIDIgMi41OTY5NSAyIDMuMzMzMzNWMTIuNjY2N0MyIDEzLjQwMyAyLjU5Njk1IDE0IDMuMzMzMzMgMTRIMTIuNjY2N0MxMy40MDMgMTQgMTQgMTMuNDAzIDE0IDEyLjY2NjdWMy4zMzMzM0MxNCAyLjU5Njk1IDEzLjQwMyAyIDEyLjY2NjcgMlpcIiBzdHJva2U9XCIjMEEwQTBBXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTYuMDAwMzMgNy4zMzI2OEM2LjczNjcxIDcuMzMyNjggNy4zMzM2NiA2LjczNTczIDcuMzMzNjYgNS45OTkzNUM3LjMzMzY2IDUuMjYyOTcgNi43MzY3MSA0LjY2NjAyIDYuMDAwMzMgNC42NjYwMkM1LjI2Mzk1IDQuNjY2MDIgNC42NjY5OSA1LjI2Mjk3IDQuNjY2OTkgNS45OTkzNUM0LjY2Njk5IDYuNzM1NzMgNS4yNjM5NSA3LjMzMjY4IDYuMDAwMzMgNy4zMzI2OFpcIiBzdHJva2U9XCIjMEEwQTBBXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTE0IDEwLjAwMDRMMTEuOTQyNyA3Ljk0MzEyQzExLjY5MjYgNy42OTMxNSAxMS4zNTM2IDcuNTUyNzMgMTEgNy41NTI3M0MxMC42NDY0IDcuNTUyNzMgMTAuMzA3NCA3LjY5MzE1IDEwLjA1NzMgNy45NDMxMkw0IDE0LjAwMDRcIiBzdHJva2U9XCIjMEEwQTBBXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICAgIFNjcmVlbnNob3RzICYgVmlzdWFsIENvbXBhcmlzb25cbiAgICA8L2Rpdj5cbiAgICBcbiAgICA8IS0tIFNjcmVlbnNob3QgQ29tcGFyaXNvbiBHcmlkIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZ3JpZCBjcWEtZ3JpZC1jb2xzLTMgY3FhLWdhcC0zIGNxYS1tYi0yXCI+XG4gICAgICA8IS0tIEJhc2VsaW5lIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxMXB4XSBjcWEtbGVhZGluZy1bMTAwJV0gY3FhLXRleHQtWyM3MzczNzNdXCI+QmFzZWxpbmU8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1iZy1bI0Y1RjVGNV0gY3FhLXJvdW5kZWQtWzEwcHhdIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1zb2xpZCBjcWEtYm9yZGVyLVsjRTVFNUU1XSBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtaC1bMTEycHhdIGNxYS1jdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvbkltYWdlQ2xpY2soJ2Jhc2VsaW5lJylcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXNjcmVlbnNob3RzPy5iYXNlbGluZVwiPlxuICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIiB2aWV3Qm94PVwiMCAwIDMyIDMyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0yNS4zMzMzIDRINi42NjY2N0M1LjE5MzkxIDQgNCA1LjE5MzkxIDQgNi42NjY2N1YyNS4zMzMzQzQgMjYuODA2MSA1LjE5MzkxIDI4IDYuNjY2NjcgMjhIMjUuMzMzM0MyNi44MDYxIDI4IDI4IDI2LjgwNjEgMjggMjUuMzMzM1Y2LjY2NjY3QzI4IDUuMTkzOTEgMjYuODA2MSA0IDI1LjMzMzMgNFpcIiBzdHJva2U9XCIjNzM3MzczXCIgc3Ryb2tlLW9wYWNpdHk9XCIwLjVcIiBzdHJva2Utd2lkdGg9XCIyLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNMTEuOTk5NyAxNC42NjczQzEzLjQ3MjQgMTQuNjY3MyAxNC42NjYzIDEzLjQ3MzQgMTQuNjY2MyAxMi4wMDA3QzE0LjY2NjMgMTAuNTI3OSAxMy40NzI0IDkuMzMzOTggMTEuOTk5NyA5LjMzMzk4QzEwLjUyNjkgOS4zMzM5OCA5LjMzMzAxIDEwLjUyNzkgOS4zMzMwMSAxMi4wMDA3QzkuMzMzMDEgMTMuNDczNCAxMC41MjY5IDE0LjY2NzMgMTEuOTk5NyAxNC42NjczWlwiIHN0cm9rZT1cIiM3MzczNzNcIiBzdHJva2Utb3BhY2l0eT1cIjAuNVwiIHN0cm9rZS13aWR0aD1cIjIuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk0yOCAyMC4wMDA5TDIzLjg4NTMgMTUuODg2MkMyMy4zODUzIDE1LjM4NjMgMjIuNzA3MSAxNS4xMDU1IDIyIDE1LjEwNTVDMjEuMjkyOSAxNS4xMDU1IDIwLjYxNDcgMTUuMzg2MyAyMC4xMTQ3IDE1Ljg4NjJMOCAyOC4wMDA5XCIgc3Ryb2tlPVwiIzczNzM3M1wiIHN0cm9rZS1vcGFjaXR5PVwiMC41XCIgc3Ryb2tlLXdpZHRoPVwiMi42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8aW1nICpuZ0lmPVwic2NyZWVuc2hvdHM/LmJhc2VsaW5lXCIgW3NyY109XCJzY3JlZW5zaG90cy5iYXNlbGluZVwiIGFsdD1cIkJhc2VsaW5lXCIgY2xhc3M9XCJjcWEtdy1mdWxsIGNxYS1oLWZ1bGwgY3FhLW9iamVjdC1jb3ZlciBjcWEtcm91bmRlZC1sZ1wiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gQ3VycmVudCAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0yXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1bMTFweF0gY3FhLWxlYWRpbmctWzEwMCVdIGNxYS10ZXh0LVsjNzM3MzczXVwiPkN1cnJlbnQ8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1iZy1bI0ZFRjJGM10gY3FhLXJvdW5kZWQtWzEwcHhdIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1zb2xpZCBjcWEtYm9yZGVyLVsjRjlDMkM1XSBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtaC1bMTEycHhdIGNxYS1jdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvbkltYWdlQ2xpY2soJ2N1cnJlbnQnKVwiPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCIhc2NyZWVuc2hvdHM/LmN1cnJlbnRcIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMiBjcWEtdGV4dC1bI0VGNDQ0NF1cIj5cbiAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgdmlld0JveD1cIjAgMCAzMiAzMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMjUuMzMzMyA0SDYuNjY2NjdDNS4xOTM5MSA0IDQgNS4xOTM5MSA0IDYuNjY2NjdWMjUuMzMzM0M0IDI2LjgwNjEgNS4xOTM5MSAyOCA2LjY2NjY3IDI4SDI1LjMzMzNDMjYuODA2MSAyOCAyOCAyNi44MDYxIDI4IDI1LjMzMzNWNi42NjY2N0MyOCA1LjE5MzkxIDI2LjgwNjEgNCAyNS4zMzMzIDRaXCIgc3Ryb2tlPVwiI0U3MDAwQlwiIHN0cm9rZS1vcGFjaXR5PVwiMC41XCIgc3Ryb2tlLXdpZHRoPVwiMi42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTExLjk5OTcgMTQuNjY3M0MxMy40NzI0IDE0LjY2NzMgMTQuNjY2MyAxMy40NzM0IDE0LjY2NjMgMTIuMDAwN0MxNC42NjYzIDEwLjUyNzkgMTMuNDcyNCA5LjMzMzk4IDExLjk5OTcgOS4zMzM5OEMxMC41MjY5IDkuMzMzOTggOS4zMzMwMSAxMC41Mjc5IDkuMzMzMDEgMTIuMDAwN0M5LjMzMzAxIDEzLjQ3MzQgMTAuNTI2OSAxNC42NjczIDExLjk5OTcgMTQuNjY3M1pcIiBzdHJva2U9XCIjRTcwMDBCXCIgc3Ryb2tlLW9wYWNpdHk9XCIwLjVcIiBzdHJva2Utd2lkdGg9XCIyLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNMjggMjAuMDAwOUwyMy44ODUzIDE1Ljg4NjJDMjMuMzg1MyAxNS4zODYzIDIyLjcwNzEgMTUuMTA1NSAyMiAxNS4xMDU1QzIxLjI5MjkgMTUuMTA1NSAyMC42MTQ3IDE1LjM4NjMgMjAuMTE0NyAxNS44ODYyTDggMjguMDAwOVwiIHN0cm9rZT1cIiNFNzAwMEJcIiBzdHJva2Utb3BhY2l0eT1cIjAuNVwiIHN0cm9rZS13aWR0aD1cIjIuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGltZyAqbmdJZj1cInNjcmVlbnNob3RzPy5jdXJyZW50XCIgW3NyY109XCJzY3JlZW5zaG90cy5jdXJyZW50XCIgYWx0PVwiQ3VycmVudFwiIGNsYXNzPVwiY3FhLXctZnVsbCBjcWEtaC1mdWxsIGNxYS1vYmplY3QtY292ZXIgY3FhLXJvdW5kZWQtbGdcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIERpZmZlcmVuY2UgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMlwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzExcHhdIGNxYS1sZWFkaW5nLVsxMDAlXSBjcWEtdGV4dC1bIzczNzM3M11cIj5EaWZmZXJlbmNlPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtYmctWyNGRUYyRjNdIGNxYS1yb3VuZGVkLVsxMHB4XSBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1bI0Y5QzJDNV0gY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLWgtWzExMnB4XSBjcWEtY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25JbWFnZUNsaWNrKCdkaWZmZXJlbmNlJylcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXNjcmVlbnNob3RzPy5kaWZmZXJlbmNlXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTIgY3FhLXRleHQtWyNFRjQ0NDRdXCI+XG4gICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHZpZXdCb3g9XCIwIDAgMzIgMzJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTI1LjMzMzMgNEg2LjY2NjY3QzUuMTkzOTEgNCA0IDUuMTkzOTEgNCA2LjY2NjY3VjI1LjMzMzNDNCAyNi44MDYxIDUuMTkzOTEgMjggNi42NjY2NyAyOEgyNS4zMzMzQzI2LjgwNjEgMjggMjggMjYuODA2MSAyOCAyNS4zMzMzVjYuNjY2NjdDMjggNS4xOTM5MSAyNi44MDYxIDQgMjUuMzMzMyA0WlwiIHN0cm9rZT1cIiNFNzAwMEJcIiBzdHJva2Utb3BhY2l0eT1cIjAuNVwiIHN0cm9rZS13aWR0aD1cIjIuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk0xMS45OTk3IDE0LjY2NzNDMTMuNDcyNCAxNC42NjczIDE0LjY2NjMgMTMuNDczNCAxNC42NjYzIDEyLjAwMDdDMTQuNjY2MyAxMC41Mjc5IDEzLjQ3MjQgOS4zMzM5OCAxMS45OTk3IDkuMzMzOThDMTAuNTI2OSA5LjMzMzk4IDkuMzMzMDEgMTAuNTI3OSA5LjMzMzAxIDEyLjAwMDdDOS4zMzMwMSAxMy40NzM0IDEwLjUyNjkgMTQuNjY3MyAxMS45OTk3IDE0LjY2NzNaXCIgc3Ryb2tlPVwiI0U3MDAwQlwiIHN0cm9rZS1vcGFjaXR5PVwiMC41XCIgc3Ryb2tlLXdpZHRoPVwiMi42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTI4IDIwLjAwMDlMMjMuODg1MyAxNS44ODYyQzIzLjM4NTMgMTUuMzg2MyAyMi43MDcxIDE1LjEwNTUgMjIgMTUuMTA1NUMyMS4yOTI5IDE1LjEwNTUgMjAuNjE0NyAxNS4zODYzIDIwLjExNDcgMTUuODg2Mkw4IDI4LjAwMDlcIiBzdHJva2U9XCIjRTcwMDBCXCIgc3Ryb2tlLW9wYWNpdHk9XCIwLjVcIiBzdHJva2Utd2lkdGg9XCIyLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxpbWcgKm5nSWY9XCJzY3JlZW5zaG90cz8uZGlmZmVyZW5jZVwiIFtzcmNdPVwic2NyZWVuc2hvdHMuZGlmZmVyZW5jZVwiIGFsdD1cIkRpZmZlcmVuY2VcIiBjbGFzcz1cImNxYS13LWZ1bGwgY3FhLWgtZnVsbCBjcWEtb2JqZWN0LWNvdmVyIGNxYS1yb3VuZGVkLWxnXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gQWN0aW9uIEJ1dHRvbnMgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktZW5kIGNxYS1nYXAtMiBjcWEtZmxleC13cmFwXCI+XG4gICAgICA8YnV0dG9uIFxuICAgICAgICAoY2xpY2spPVwib25NYWtlQ3VycmVudEJhc2VsaW5lKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIWlzQ3VycmVudEltYWdlQXZhaWxhYmxlXCJcbiAgICAgICAgW2NsYXNzLmNxYS1vcGFjaXR5LTUwXT1cIiFpc0N1cnJlbnRJbWFnZUF2YWlsYWJsZVwiXG4gICAgICAgIFtjbGFzcy5jcWEtY3Vyc29yLW5vdC1hbGxvd2VkXT1cIiFpc0N1cnJlbnRJbWFnZUF2YWlsYWJsZVwiXG4gICAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTIgY3FhLXBsLTIgY3FhLXByLTQgY3FhLXB5LVsycHhdIGNxYS1yb3VuZGVkLWxnIGNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS1iZy10cmFuc3BhcmVudCBjcWEtdGV4dC1bIzIxMjEyMl0gY3FhLWJvcmRlciBjcWEtYm9yZGVyLXNvbGlkIGNxYS1ib3JkZXItWyMyMTIxMjJdIGRpc2FibGVkOmNxYS1jdXJzb3Itbm90LWFsbG93ZWRcIj5cbiAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk00LjM5NzU0IDcuOTM3NTJMMi4zMTI1NCA1Ljg1MjUyTDEuNjAyNTQgNi41NTc1Mkw0LjM5NzU0IDkuMzUyNTJMMTAuMzk3NSAzLjM1MjUyTDkuNjkyNTQgMi42NDc1Mkw0LjM5NzU0IDcuOTM3NTJaXCIgZmlsbD1cImJsYWNrXCIvPjwvc3ZnPlxuICAgICAgICBNYWtlIGN1cnJlbnQgYmFzZWxpbmVcbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBcbiAgICAgICAgKGNsaWNrKT1cIm9uVXBsb2FkQmFzZWxpbmUoKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc1VwbG9hZGluZ0Jhc2VsaW5lPy5bdGVzdFN0ZXBSZXN1bHRJZF0gPT09IHRydWVcIlxuICAgICAgICBbY2xhc3MuY3FhLW9wYWNpdHktNTBdPVwiaXNVcGxvYWRpbmdCYXNlbGluZT8uW3Rlc3RTdGVwUmVzdWx0SWRdID09PSB0cnVlXCJcbiAgICAgICAgW2NsYXNzLmNxYS1jdXJzb3Itbm90LWFsbG93ZWRdPVwiaXNVcGxvYWRpbmdCYXNlbGluZT8uW3Rlc3RTdGVwUmVzdWx0SWRdID09PSB0cnVlXCJcbiAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMiBjcWEtcGwtMiBjcWEtcHItNCBjcWEtcHktWzJweF0gY3FhLXJvdW5kZWQtbGcgY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLWJnLXRyYW5zcGFyZW50IGNxYS10ZXh0LVsjMjEyMTIyXSBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1bIzIxMjEyMl0gZGlzYWJsZWQ6Y3FhLWN1cnNvci1ub3QtYWxsb3dlZFwiPlxuICAgICAgICA8c3ZnICpuZ0lmPVwiIWlzVXBsb2FkaW5nQmFzZWxpbmU/Llt0ZXN0U3RlcFJlc3VsdElkXVwiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTkgNy41VjlIM1Y3LjVIMlY5QzIgOS41NSAyLjQ1IDEwIDMgMTBIOUM5LjU1IDEwIDEwIDkuNTUgMTAgOVY3LjVIOVpNMy41IDQuNUw0LjIwNSA1LjIwNUw1LjUgMy45MTVWOEg2LjVWMy45MTVMNy43OTUgNS4yMDVMOC41IDQuNUw2IDJMMy41IDQuNVpcIiBmaWxsPVwiYmxhY2tcIi8+PC9zdmc+XG4gICAgICAgIDxzdmcgKm5nSWY9XCJpc1VwbG9hZGluZ0Jhc2VsaW5lPy5bdGVzdFN0ZXBSZXN1bHRJZF0gPT09IHRydWVcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgc3R5bGU9XCJhbmltYXRpb246IHNwaW4gMXMgbGluZWFyIGluZmluaXRlO1wiPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCI2XCIgY3k9XCI2XCIgcj1cIjVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWRhc2hhcnJheT1cIjggNFwiIG9wYWNpdHk9XCIwLjNcIi8+XG4gICAgICAgICAgPGNpcmNsZSBjeD1cIjZcIiBjeT1cIjZcIiByPVwiNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtZGFzaGFycmF5PVwiOCA0XCIgc3Ryb2tlLWRhc2hvZmZzZXQ9XCIyXCIvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgICAgPHNwYW4+e3sgaXNVcGxvYWRpbmdCYXNlbGluZT8uW3Rlc3RTdGVwUmVzdWx0SWRdID09PSB0cnVlID8gJ1VwbG9hZGluZy4uLicgOiAnVXBsb2FkIGJhc2VsaW5lJyB9fTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPCEtLSBIaWRkZW4gZmlsZSBpbnB1dCAtLT5cbiAgICAgIDxpbnB1dCBcbiAgICAgICAgI2ZpbGVJbnB1dFxuICAgICAgICB0eXBlPVwiZmlsZVwiIFxuICAgICAgICBhY2NlcHQ9XCJpbWFnZS8qXCJcbiAgICAgICAgKGNoYW5nZSk9XCJvbkZpbGVTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIFxuICAgICAgLz5cbiAgICAgIDxidXR0b24gXG4gICAgICAgIChjbGljayk9XCJvbkFuYWx5emUoKVwiXG4gICAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTIgY3FhLXBsLTIgY3FhLXByLTQgY3FhLXB5LVsycHhdIGNxYS1yb3VuZGVkLWxnIGNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS1iZy10cmFuc3BhcmVudCBjcWEtdGV4dC1bIzIxMjEyMl0gY3FhLWJvcmRlciBjcWEtYm9yZGVyLXNvbGlkIGNxYS1ib3JkZXItWyMyMTIxMjJdXCI+XG4gICAgICAgIDxzdmcgd2lkdGg9XCIxMVwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMSAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNNS41MTE1IDBDNS41NzkzMSAwLjAzMDMxNzggNS42MDgyOCAwLjEwNDM1NCA1LjYzNjA0IDAuMTczMTI4QzUuNjQ5OTYgMC4yMTMyIDUuNjYyNzMgMC4yNTM0ODkgNS42NzUxMyAwLjI5NDFDNS42Nzk5OCAwLjMwOTY2MiA1LjY4NDg0IDAuMzI1MjI0IDUuNjg5ODQgMC4zNDEyNThDNS43NTQzIDAuNTUwNjczIDUuODExNzIgMC43NjIzMzEgNS44Njk0NiAwLjk3Mzg0QzUuODgyNTEgMS4wMjE1OSA1Ljg5NTYzIDEuMDY5MzIgNS45MDg3NCAxLjExNzA0QzUuOTc1NTEgMS4zNjAwNSA2LjA0MTc3IDEuNjAzMiA2LjEwNzY3IDEuODQ2NDZDNi4xMTY5MyAxLjg4MDYyIDYuMTI2MTkgMS45MTQ3OSA2LjEzNTQ1IDEuOTQ4OTVDNi4xNjE1NiAyLjA0NTI3IDYuMTg3NjQgMi4xNDE1OSA2LjIxMzU3IDIuMjM3OTZDNi4yNjgzNyAyLjQ0MTU5IDYuMzI0NjcgMi42NDQ2MyA2LjM4NDYzIDIuODQ2NjhDNi4zODk4NiAyLjg2NDM1IDYuMzk1MSAyLjg4MjAzIDYuNDAwNSAyLjkwMDI0QzYuNTU2MjQgMy40MiA2Ljc3NzAxIDMuODg1ODMgNy4xMzg4OCA0LjI4MjYyQzcuMTQ3ODQgNC4yOTI5NCA3LjE1NjggNC4zMDMyNSA3LjE2NjAzIDQuMzEzODhDNy4zMjA1IDQuNDg1ODMgNy41MTg3MyA0LjYyMzYxIDcuNzE2ODcgNC43MzQ4MUM3LjcyNjk2IDQuNzQwNTcgNy43MzcwNSA0Ljc0NjMyIDcuNzQ3NDUgNC43NTIyNUM4LjMzMDUxIDUuMDc5IDkuMDMxNjIgNS4yMjI3MiA5LjY2MzEzIDUuNDE0QzkuOTM5ODQgNS40OTc4NyAxMC4yMTU3IDUuNTg0MzggMTAuNDkwNSA1LjY3NDdDMTAuNTA5OSA1LjY4MTA1IDEwLjUyOTIgNS42ODczOCAxMC41NDg1IDUuNjkzN0MxMC42MDYyIDUuNzEyNiAxMC42NjM5IDUuNzMxODIgMTAuNzIxNSA1Ljc1MTNDMTAuNzM0OSA1Ljc1NTcyIDEwLjc0ODMgNS43NjAxNSAxMC43NjIxIDUuNzY0NzFDMTAuODQxNSA1Ljc5MjA4IDEwLjkxNzQgNS44MjQzOSAxMC45ODI1IDUuODgwMzZDMTEuMDAyMyA1LjkyNTU4IDExLjAwMjMgNS45MjU1OCAxMC45OTY5IDUuOTcwOEMxMC45MzM2IDYuMDM2NDggMTAuODcwNyA2LjA2NzI4IDEwLjc4NzEgNi4wOTczM0MxMC43NzUxIDYuMTAxNzYgMTAuNzYzMiA2LjEwNjIgMTAuNzUwOCA2LjExMDc3QzEwLjYwOTYgNi4xNjI0NCAxMC40NjY1IDYuMjA3NjYgMTAuMzIzMiA2LjI1MjQ3QzEwLjI5MzggNi4yNjE3NCAxMC4yNjQ0IDYuMjcxMDEgMTAuMjM1IDYuMjgwMjhDMTAuMDUzNyA2LjMzNzM1IDkuODcxOTkgNi4zOTMyIDkuNjkwMTQgNi40NDg0MkM5LjQ1MDYxIDYuNTIxMTcgOS4yMTE0MyA2LjU5NTEyIDguOTcyNDkgNi42Njk5MUM4LjkzMzM0IDYuNjgyMTYgOC44OTQxOCA2LjY5NDM3IDguODU1MDEgNi43MDY1NEM4LjY0OTMxIDYuNzcwNDggOC40NDQ2MiA2LjgzNjcxIDguMjQxNjIgNi45MDk0NEM4LjIyNDc4IDYuOTE1NDUgOC4yMDc5NCA2LjkyMTQ3IDguMTkwNTkgNi45Mjc2NkM3LjUxMDY5IDcuMTc0NDMgNi45OTI0NSA3LjYzNDc4IDYuNjY4MDkgOC4zMDc5OUM2LjQ5MzIxIDguNjg2MzQgNi4zOTAwNiA5LjA5NTQ4IDYuMjg0ODMgOS40OTkyOUM2LjI1NjM3IDkuNjA4MjUgNi4yMjYxMSA5LjcxNjYgNi4xOTU1IDkuODI0OTJDNi4xNzE0OSA5LjkxMDE1IDYuMTQ4MDMgOS45OTU1MSA2LjEyNTE1IDEwLjA4MTFDNi4xMjI0MyAxMC4wOTEzIDYuMTE5NyAxMC4xMDE0IDYuMTE2OSAxMC4xMTE5QzYuMTAzNyAxMC4xNjEyIDYuMDkwNTYgMTAuMjEwNiA2LjA3NzUyIDEwLjI1OTlDNi4wNDQxMyAxMC4zODUxIDYuMDA4MTcgMTAuNTA5MiA1Ljk3MTIzIDEwLjYzMzJDNS45MDU2NyAxMC44NTM2IDUuODQ2MDEgMTEuMDc1NyA1Ljc4NjcyIDExLjI5OEM1LjY5NzMyIDExLjYzMjggNS42OTczMiAxMS42MzI4IDUuNjQ2NjIgMTEuNzkzN0M1LjY0MzI2IDExLjgwNDUgNS42Mzk5IDExLjgxNTMgNS42MzY0NCAxMS44MjY0QzUuNjE3OTMgMTEuODgzNyA1LjU5ODkgMTEuOTM2NCA1LjU2Mzg4IDExLjk4NDlDNS41MTA2IDExLjk5NzIgNS41MTA2IDExLjk5NzIgNS40NjI3MyAxMkM1LjQwODAxIDExLjkxNjggNS4zNzE3NyAxMS44MzYxIDUuMzQyNzMgMTEuNzQwMUM1LjMzODUxIDExLjcyNjUgNS4zMzQyOCAxMS43MTI5IDUuMzI5OTMgMTEuNjk4OUM1LjI3NjE0IDExLjUyMzMgNS4yMjgwNyAxMS4zNDU5IDUuMTc5OTkgMTEuMTY4NkM1LjE2ODk4IDExLjEyODEgNS4xNTc5MSAxMS4wODc1IDUuMTQ2ODUgMTEuMDQ3QzUuMDY0NCAxMC43NDQ4IDQuOTgzMzEgMTAuNDQyMyA0LjkwMjM0IDEwLjEzOTdDNC41NjUwOSA4LjY0Mjk5IDQuNTY1MDkgOC42NDI5OSAzLjcxNDMzIDcuNDMyODhDMy43MDA3IDcuNDIxMjggMy42ODcwNiA3LjQwOTY4IDMuNjczMDIgNy4zOTc3M0MzLjExNTYgNi45MzIwMyAyLjM4MTMgNi43NTk1OSAxLjcwODg1IDYuNTU3NTFDMS41NDI1NCA2LjUwNzQ5IDEuMzc2MjggNi40NTcyNCAxLjIxMDA0IDYuNDA2OTdDMS4xOTU1IDYuNDAyNTggMS4xOTU1IDYuNDAyNTggMS4xODA2NyA2LjM5ODA5QzAuOTQwODgxIDYuMzI1NTYgMC43MDExNTcgNi4yNTI4MyAwLjQ2MjI3NCA2LjE3NzExQzAuNDUyMTY4IDYuMTczOTMgMC40NDIwNjMgNi4xNzA3NSAwLjQzMTY1MSA2LjE2NzQ3QzAuMDY0NjU0MyA2LjA1MTc4IDAuMDY0NjU0MyA2LjA1MTc4IDAuMDAwNzkwMjExIDUuOTcwOEMtMC4wMDEwMTU5OSA1LjkzNDA2IC0wLjAwMTAxNTk5IDUuOTM0MDYgMC4wMTUyMzk4IDUuODk1NDNDMC4wODE5OTA5IDUuODI3MiAwLjE0Njc2IDUuNzk3OTcgMC4yMzQ4NjIgNS43NjgyNUMwLjI0NzYxOCA1Ljc2Mzc4IDAuMjYwMzc1IDUuNzU5MzEgMC4yNzM1MTggNS43NTQ3MUMwLjMxMjU4NyA1Ljc0MTEgMC4zNTE3NDEgNS43Mjc3OSAwLjM5MDkyOSA1LjcxNDU1QzAuNDAyMTEyIDUuNzEwNzMgMC40MTMyOTUgNS43MDY5IDAuNDI0ODE3IDUuNzAyOTZDMC41MDM5MDQgNS42NzU5IDAuNTgzMjc1IDUuNjQ5ODYgMC42NjI3NjIgNS42MjQxMkMwLjY4MjI5NCA1LjYxNzc3IDAuNjgyMjk0IDUuNjE3NzcgMC43MDIyMiA1LjYxMTI5QzEuMDQxNjYgNS41MDExNiAxLjM4MzMyIDUuMzk4NjcgMS43MjQ4NyA1LjI5NTk1QzEuOTc5MzkgNS4yMTkzOSAyLjIzMzQ3IDUuMTQxNTcgMi40ODY3NCA1LjA2MDY1QzIuNDk4MzggNS4wNTY5NCAyLjUxMDAxIDUuMDUzMjQgMi41MjIwMSA1LjA0OTQzQzMuMTA4NzIgNC44NjI2MiAzLjY4MjI5IDQuNTk3NTUgNC4wNjExMiA0LjA3MTZDNC4wNjY3OSA0LjA2MzggNC4wNzI0NyA0LjA1NTk5IDQuMDc4MzEgNC4wNDc5NkM0LjUwMDE5IDMuNDY0MiA0LjY2NDcgMi43NTQzIDQuODQ4NSAyLjA2MTYxQzQuOTA4OTYgMS44MzM3OSA0Ljk3MDE1IDEuNjA2MTkgNS4wMzE1NSAxLjM3ODY1QzUuMDQ4NTYgMS4zMTU2NCA1LjA2NTUzIDEuMjUyNjMgNS4wODI0NCAxLjE4OTU5QzUuMTUwMzcgMC45MzYzODUgNS4yMTkzMiAwLjY4MzUyMyA1LjI5MjIyIDAuNDMxODE4QzUuMjk5MDQgMC40MDgyNDggNS4zMDU4MyAwLjM4NDY2NyA1LjMxMjU5IDAuMzYxMDc2QzUuNDE0NjYgMC4wMDUzMTY4MSA1LjQxNDY2IDAuMDA1MzE2ODEgNS41MTE1IDBaXCIgZmlsbD1cIiMxNjE2MTdcIi8+PHBhdGggZD1cIk04Ljg0MzkxIDAuNzQwNDQzQzguOTEwMjQgMC44MTg3NjIgOC45MjM0OSAwLjkxMDgwNiA4Ljk0NDE1IDEuMDEwODFDOS4wMTMwNSAxLjMyNDk5IDkuMDkyNDEgMS42MTM4OCA5LjM2Nzg3IDEuNzk2MzhDOS41Mzc4MiAxLjg5NDQzIDkuNzQwMzcgMS45MzkwNCA5LjkyODY3IDEuOTgxMThDMTAuMDA4MiAxLjk5OTMzIDEwLjA3NTMgMi4wMjM0MSAxMC4xNDM1IDIuMDcxNThDMTAuMTU4OCAyLjA5NzAxIDEwLjE1ODggMi4wOTcwMSAxMC4xNTc5IDIuMTQxMjlDMTAuMTQyMSAyLjE5NTEzIDEwLjEyODIgMi4yMTI1IDEwLjA4NjYgMi4yNDc3NEMxMC4wNDEgMi4yNjM2NCAxMC4wNDEgMi4yNjM2NCA5Ljk4NjMzIDIuMjc2MDFDOS45NjU2NCAyLjI4MDk2IDkuOTQ0OTYgMi4yODU5NyA5LjkyNDMgMi4yOTEwMkM5LjkxMzIyIDIuMjkzNyA5LjkwMjE1IDIuMjk2MzggOS44OTA3NSAyLjI5OTE0QzkuNTU0MDEgMi4zODAzOSA5LjU1NDAxIDIuMzgwMzkgOS4yNjI5NSAyLjU2NDI4QzkuMjUzNDggMi41NzIyMiA5LjI0NDAyIDIuNTgwMTcgOS4yMzQyNyAyLjU4ODM2QzkuMDI2MjUgMi43Nzk3IDguOTgyMjYgMy4wOTggOC45MTk2MyAzLjM2NDY0QzguOTE2MDUgMy4zNzkyOCA4LjkxMjQ2IDMuMzkzOTMgOC45MDg3NiAzLjQwOTAxQzguOTA1NjYgMy40MjE5OCA4LjkwMjU1IDMuNDM0OTQgOC44OTkzNSAzLjQ0ODNDOC44ODU4NCAzLjQ4Nzg4IDguODcxODMgMy41MTM2OSA4Ljg0MzkxIDMuNTQ0MDJDOC43NjYxNCAzLjU1NDMyIDguNzY2MTQgMy41NTQzMiA4LjcyODMxIDMuNTQ0MDJDOC42NjgxNCAzLjQ5NTM3IDguNjU0NjggMy40Mzk5NiA4LjYzODk2IDMuMzY1NUM4LjYzNjMzIDMuMzUzOTcgOC42MzM2OSAzLjM0MjQ0IDguNjMwOTggMy4zMzA1NkM4LjYyMjU5IDMuMjkzNzQgOC42MTQ0NyAzLjI1Njg2IDguNjA2MzkgMy4yMTk5NUM4LjU0MzAyIDIuOTMyNTkgOC40NzE0OCAyLjY1MDY0IDguMjE4NzkgMi40ODIyQzguMDIxMzEgMi4zNjczMiA3Ljc4MTE4IDIuMzEyOTggNy41NjA0NSAyLjI2OTExQzcuNDk5OTYgMi4yNTU5NyA3LjQ2NTMgMi4yMzk0NCA3LjQyNzg1IDIuMTg3NDVDNy40MTk3MiAyLjEzNDcgNy40MTk3MiAyLjEzNDcgNy40Mjc4NSAyLjA4MTk0QzcuNDg1NDEgMi4wMTk3OSA3LjU0NTk3IDIuMDA0NjIgNy42MjM4MiAxLjk4NTg1QzcuNjQ4MzUgMS45Nzk1MiA3LjY3Mjg2IDEuOTczMTQgNy42OTczNyAxLjk2NjcxQzcuNzEwMDMgMS45NjM0MiA3LjcyMjY5IDEuOTYwMTIgNy43MzU3NCAxLjk1NjczQzcuODAwMzIgMS45MzkzOSA3Ljg2NDI1IDEuOTE5OTUgNy45MjgxNyAxLjkwMDEyQzcuOTM5NzggMS44OTY2MSA3Ljk1MTM5IDEuODkzMDkgNy45NjMzNiAxLjg4OTQ3QzguMDkzMjkgMS44NDg5NSA4LjIwNTQxIDEuNzk3MTIgOC4zMDkyNyAxLjcwNTEyQzguMzE4OTYgMS42OTY4IDguMzI4NjQgMS42ODg0OCA4LjMzODYyIDEuNjc5OTJDOC41MDAyNiAxLjUyODE3IDguNTU1MTggMS4zMDAyIDguNjA1MDQgMS4wODc0OEM4LjYwODg0IDEuMDcxMzMgOC42MTI2NCAxLjA1NTE4IDguNjE2NTUgMS4wMzg1NEM4LjYyNDExIDEuMDA2MSA4LjYzMTU0IDAuOTczNjIyIDguNjM4ODIgMC45NDExMUM4LjY0NDAzIDAuOTE4NDg5IDguNjQ0MDMgMC45MTg0ODkgOC42NDkzNSAwLjg5NTQxMkM4LjY1MjM4IDAuODgxODk5IDguNjU1NDIgMC44NjgzODUgOC42NTg1NSAwLjg1NDQ2MkM4LjY3MTg2IDAuODExNDQxIDguNjg5MzUgMC43Nzc2NiA4LjcxMzg2IDAuNzQwNDQzQzguNzYwOTYgMC43MTU4NzggOC43OTQwMSAwLjcyNjk4MyA4Ljg0MzkxIDAuNzQwNDQzWlwiIGZpbGw9XCIjNDE0MTQ2XCIvPjxwYXRoIGQ9XCJNMi4xOTQ0NiA4LjMyOTYyQzIuMjExNjYgOC4zMjk3NSAyLjIxMTY2IDguMzI5NzUgMi4yMjkxOSA4LjMyOTg4QzIuMzUyNTMgOC4zMzM4IDIuNDM1OTcgOC4zNzUwMyAyLjUyNjggOC40NjE1MUMyLjYzMjUgOC41ODA2MSAyLjY4MTMgOC43MTQ5NyAyLjY3ODUyIDguODc1NDlDMi42NjY2NiA5LjAwNTY1IDIuNTkzMDcgOS4xMTkyOSAyLjUwMjgyIDkuMjA3MjdDMi4zOTY1OCA5LjI5NjcyIDIuMjg5NDEgOS4zMjYyOCAyLjE1MzY2IDkuMzIyMTVDMi4wMzkxOSA5LjMwODI1IDEuOTMxNTEgOS4yNTE1MyAxLjg1MDM4IDkuMTY2MThDMS43NDk1IDkuMDIyNTggMS43MiA4Ljg5MDg3IDEuNzM0NzkgOC43MTM5OEMxLjc2NTMzIDguNTc0NzIgMS44NTMzNyA4LjQ2MTY3IDEuOTY1OTggOC4zODIzOEMyLjA0NDIxIDguMzQxMDEgMi4xMDcxMyA4LjMyODg2IDIuMTk0NDYgOC4zMjk2MlpcIiBmaWxsPVwiIzRDNEM1MVwiLz48L3N2Zz5cbiAgICAgICAgQW5hbHl6ZVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gUmlnaHQgUGFuZWw6IExvZ3MgLS0+XG4gIDxkaXYgY2xhc3M9XCJjcWEtY29sLXNwYW4tMyBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1bIyNFNUU1RTVdIGNxYS1yb3VuZGVkLVsxMHB4XSBjcWEtcHktMiBjcWEtcHgtMyBjcWEtaC1mdWxsIGNxYS1tYXgtaC1bMjAwcHhdIGNxYS1vdmVyZmxvdy1hdXRvXCJcbiAgICBzdHlsZT1cInNjcm9sbGJhci13aWR0aDogdGhpbjtcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyMwQTBBMEFdIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yIGNxYS1tYi0yXCI+XG4gICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTEwLjY2NjYgMTJMMTQuNjY2NiA4TDEwLjY2NjYgNFwiIHN0cm9rZT1cIiMwQTBBMEFcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNS4zMzMzNyA0TDEuMzMzMzcgOEw1LjMzMzM3IDEyXCIgc3Ryb2tlPVwiIzBBMEEwQVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+XG4gICAgICBMb2dzXG4gICAgPC9kaXY+XG4gICAgXG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTIgXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzExcHhdIGNxYS1sZWFkaW5nLVsxMDAlXSBjcWEtdGV4dC1bIzczNzM3M11cIj5Db25zb2xlPC9kaXY+XG4gICAgICBcbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGxvZyBvZiBsb2dzXCIgY2xhc3M9XCJjcWEtcHgtMiBjcWEtcHktWzJweF0gY3FhLXJvdW5kZWQgY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLWJyZWFrLXdvcmRzXCIgW25nQ2xhc3NdPVwiZ2V0TG9nQ2xhc3MobG9nLmxldmVsKVwiPlxuICAgICAgICB7eyBsb2cubWVzc2FnZSB9fVxuICAgICAgPC9kaXY+XG4gICAgICBcbiAgICAgIDxkaXYgKm5nSWY9XCIhbG9ncyB8fCBsb2dzLmxlbmd0aCA9PT0gMFwiIGNsYXNzPVwiY3FhLXB4LTIgY3FhLXB5LVsycHhdIGNxYS1yb3VuZGVkIGNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjOUNBM0FGXSBjcWEtYmctWyNmOGY4ZjhdIGNxYS10ZXh0LWNlbnRlclwiPlxuICAgICAgICBObyBsb2dzIGF2YWlsYWJsZVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIDxhIFxuICAgICAgKm5nSWY9XCJzaG93RnVsbExvZ3NMaW5rICYmIGxvZ3M/Lmxlbmd0aFwiXG4gICAgICAoY2xpY2spPVwib25WaWV3RnVsbExvZ3MoKVwiXG4gICAgICBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLXRleHQtWyMzRjQzRUVdIGNxYS1mb250LW1lZGl1bSBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWVuZCBjcWEtZ2FwLVsycHhdIGNxYS1jdXJzb3ItcG9pbnRlciBob3ZlcjpjcWEtdW5kZXJsaW5lIGNxYS1tdC00XCI+XG4gICAgICBWaWV3IGZ1bGwgbG9ncyBJdGVyYXRpb25zXG4gICAgICA8ZGl2Pjxzdmcgd2lkdGg9XCI4XCIgaGVpZ2h0PVwiOFwiIHZpZXdCb3g9XCIwIDAgOCA4XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0yLjAzODMzIDYuNzQzMzVMMi42MjgzMyA3LjMzMzM1TDUuOTYxNjYgNC4wMDAwMkwyLjYyODMzIDAuNjY2Njg3TDIuMDM4MzMgMS4yNTY2OUw0Ljc4MTY2IDQuMDAwMDJMMi4wMzgzMyA2Ljc0MzM1WlwiIGZpbGw9XCIjM0Y0M0VFXCIvPjwvc3ZnPjwvZGl2PlxuICAgIDwvYT4gLS0+XG4gIDwvZGl2PlxuXG4gIFxuICA8Y3FhLXZpc3VhbC1kaWZmZXJlbmNlLW1vZGFsXG4gICAgW2lzT3Blbl09XCJpc01vZGFsT3BlblwiXG4gICAgW2Jhc2VsaW5lVXJsXT1cInNjcmVlbnNob3RzPy5iYXNlbGluZSB8fCAnJ1wiXG4gICAgW2N1cnJlbnRVcmxdPVwic2NyZWVuc2hvdHM/LmN1cnJlbnQgfHwgJydcIlxuICAgIFtkaWZmZXJlbmNlVXJsXT1cInNjcmVlbnNob3RzPy5kaWZmZXJlbmNlIHx8ICcnXCJcbiAgICBbaW5pdGlhbFZpZXddPVwiaW5pdGlhbE1vZGFsVmlld1wiXG4gICAgKGNsb3NlKT1cIm9uQ2xvc2VNb2RhbCgpXCI+XG4gIDwvY3FhLXZpc3VhbC1kaWZmZXJlbmNlLW1vZGFsPlxuPC9kaXY+XG5cbjxzdHlsZT5cbiAgQGtleWZyYW1lcyBzcGluIHtcbiAgICBmcm9tIHsgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IH1cbiAgICB0byB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH1cbiAgfVxuPC9zdHlsZT4iXX0=
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzdWFsLWNvbXBhcmlzb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9leGVjdXRpb24tc2NyZWVuL3Zpc3VhbC1jb21wYXJpc29uL3Zpc3VhbC1jb21wYXJpc29uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZXhlY3V0aW9uLXNjcmVlbi92aXN1YWwtY29tcGFyaXNvbi92aXN1YWwtY29tcGFyaXNvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBYyxNQUFNLGVBQWUsQ0FBQzs7OztBQW9COUYsTUFBTSxPQUFPLHlCQUF5QjtJQU50QztRQVNXLHFCQUFnQixHQUFhLElBQUksQ0FBQztRQUNsQyx3QkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDekIsNEJBQXVCLEdBQUcsRUFBRSxDQUFDO1FBQzdCLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFHZCx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBNEIsQ0FBQztRQUNuRSxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBQ3pELFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ25DLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUlsRCxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixxQkFBZ0IsR0FBa0IsVUFBVSxDQUFDO0tBZ0U5QztJQTlEQyxJQUFJLHVCQUF1QjtRQUN6QixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQztJQUNyQyxDQUFDO0lBRUQscUJBQXFCO1FBQ25CLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUU7WUFDN0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5Q0FBeUMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2pGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7Z0JBQzVCLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7Z0JBQ3ZDLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU87YUFDckMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBWTtRQUN6QixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBMEIsQ0FBQztRQUMvQyxJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3pDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7Z0JBQ3ZCLElBQUksRUFBRSxJQUFJO2dCQUNWLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7YUFDeEMsQ0FBQyxDQUFDO1lBQ0gsbUJBQW1CO1lBQ25CLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQztJQUVELFNBQVM7UUFDUCxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYTtRQUN2QixRQUFRLEtBQUssRUFBRTtZQUNiLEtBQUssU0FBUztnQkFDWixPQUFPLHFDQUFxQyxDQUFDO1lBQy9DLEtBQUssT0FBTztnQkFDVixPQUFPLHFDQUFxQyxDQUFDO1lBQy9DO2dCQUNFLE9BQU8scUNBQXFDLENBQUM7U0FDaEQ7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLElBQVk7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQXFCLENBQUM7UUFDOUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDMUIsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDOztzSEFoRlUseUJBQXlCOzBHQUF6Qix5QkFBeUIsK2tCQ3BCdEMsb2dtQkF5SVE7MkZEckhLLHlCQUF5QjtrQkFOckMsU0FBUzsrQkFDRSx1QkFBdUIsUUFHM0IsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFOzhCQUdyQixXQUFXO3NCQUFuQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVJLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFFaUIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2NyZWVuc2hvdERhdGEsIExvZ0VudHJ5IH0gZnJvbSAnLi4vZXhlY3V0aW9uLXN0ZXAubW9kZWxzJztcbmltcG9ydCB7IEltYWdlVmlld1R5cGUgfSBmcm9tICcuLi8uLi92aXN1YWwtZGlmZmVyZW5jZS1tb2RhbC92aXN1YWwtZGlmZmVyZW5jZS1tb2RhbC5jb21wb25lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIG1ha2VDdXJyZW50QmFzZWxpbmVFdmVudCB7XG4gIHRlc3RTdGVwUmVzdWx0SWQ6IHN0cmluZztcbiAgY3VycmVudFVybDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIHVwbG9hZEJhc2VsaW5lRXZlbnQge1xuICBmaWxlOiBGaWxlO1xuICB0ZXN0U3RlcFJlc3VsdElkOiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS12aXN1YWwtY29tcGFyaXNvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi92aXN1YWwtY29tcGFyaXNvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW10sXG4gIGhvc3Q6IHsgY2xhc3M6ICdjcWEtdWktcm9vdCcgfVxufSlcbmV4cG9ydCBjbGFzcyBWaXN1YWxDb21wYXJpc29uQ29tcG9uZW50IHtcbiAgQElucHV0KCkgc2NyZWVuc2hvdHM/OiBTY3JlZW5zaG90RGF0YTtcbiAgQElucHV0KCkgbG9ncz86IExvZ0VudHJ5W107XG4gIEBJbnB1dCgpIHNob3dGdWxsTG9nc0xpbms/OiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgaXNVcGxvYWRpbmdCYXNlbGluZSA9IHt9O1xuICBASW5wdXQoKSBpc01ha2luZ0N1cnJlbnRCYXNlbGluZSA9IHt9O1xuICBASW5wdXQoKSBpc0xpdmUgPSBmYWxzZTtcbiAgQElucHV0KCkgdGVzdFN0ZXBSZXN1bHRJZCE6IHN0cmluZztcbiAgXG4gIEBPdXRwdXQoKSBtYWtlQ3VycmVudEJhc2VsaW5lID0gbmV3IEV2ZW50RW1pdHRlcjxtYWtlQ3VycmVudEJhc2VsaW5lRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSB1cGxvYWRCYXNlbGluZSA9IG5ldyBFdmVudEVtaXR0ZXI8dXBsb2FkQmFzZWxpbmVFdmVudD4oKTtcbiAgQE91dHB1dCgpIGFuYWx5emUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSB2aWV3RnVsbExvZ3MgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIFxuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnKSBmaWxlSW5wdXQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuICBcbiAgaXNNb2RhbE9wZW4gPSBmYWxzZTtcbiAgaW5pdGlhbE1vZGFsVmlldzogSW1hZ2VWaWV3VHlwZSA9ICdiYXNlbGluZSc7XG5cbiAgZ2V0IGlzQ3VycmVudEltYWdlQXZhaWxhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuc2NyZWVuc2hvdHM/LmN1cnJlbnQ7XG4gIH1cblxuICBvbk1ha2VDdXJyZW50QmFzZWxpbmUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2NyZWVuc2hvdHM/LmN1cnJlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdNYWtlIGN1cnJlbnQgYmFzZWxpbmUgY2xpY2tlZCB3aXRoIFVSTDonLCB0aGlzLnNjcmVlbnNob3RzLmN1cnJlbnQpO1xuICAgICAgdGhpcy5tYWtlQ3VycmVudEJhc2VsaW5lLmVtaXQoe1xuICAgICAgICB0ZXN0U3RlcFJlc3VsdElkOiB0aGlzLnRlc3RTdGVwUmVzdWx0SWQsXG4gICAgICAgIGN1cnJlbnRVcmw6IHRoaXMuc2NyZWVuc2hvdHMuY3VycmVudFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgb25VcGxvYWRCYXNlbGluZSgpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZygnVXBsb2FkIGJhc2VsaW5lIGNsaWNrZWQnKTtcbiAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gIH1cblxuICBvbkZpbGVTZWxlY3RlZChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGlmIChpbnB1dC5maWxlcyAmJiBpbnB1dC5maWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWxlID0gaW5wdXQuZmlsZXNbMF07XG4gICAgICBjb25zb2xlLmxvZygnRmlsZSBzZWxlY3RlZDonLCBmaWxlLm5hbWUpO1xuICAgICAgdGhpcy51cGxvYWRCYXNlbGluZS5lbWl0KHtcbiAgICAgICAgZmlsZTogZmlsZSxcbiAgICAgICAgdGVzdFN0ZXBSZXN1bHRJZDogdGhpcy50ZXN0U3RlcFJlc3VsdElkXG4gICAgICB9KTtcbiAgICAgIC8vIFJlc2V0IGZpbGUgaW5wdXRcbiAgICAgIGlucHV0LnZhbHVlID0gJyc7XG4gICAgfVxuICB9XG5cbiAgb25BbmFseXplKCk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdBbmFseXplIGNsaWNrZWQnKTtcbiAgICB0aGlzLmFuYWx5emUuZW1pdCgpO1xuICB9XG5cbiAgb25WaWV3RnVsbExvZ3MoKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ1ZpZXcgZnVsbCBsb2dzIGNsaWNrZWQnKTtcbiAgICB0aGlzLnZpZXdGdWxsTG9ncy5lbWl0KCk7XG4gIH1cblxuICBnZXRMb2dDbGFzcyhsZXZlbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKGxldmVsKSB7XG4gICAgICBjYXNlICd3YXJuaW5nJzpcbiAgICAgICAgcmV0dXJuICdjcWEtdGV4dC1bI0JCNEQwMF0gY3FhLWJnLVsjRkZGQkVCXSc7XG4gICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgIHJldHVybiAnY3FhLXRleHQtWyNFNzAwMEJdIGNxYS1iZy1bI0ZERTVFN10nO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdjcWEtdGV4dC1bIzlDQTNBRl0gY3FhLWJnLVsjZjhmOGY4XSc7XG4gICAgfVxuICB9XG5cbiAgb25JbWFnZUNsaWNrKHR5cGU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaW5pdGlhbE1vZGFsVmlldyA9IHR5cGUgYXMgSW1hZ2VWaWV3VHlwZTtcbiAgICB0aGlzLmlzTW9kYWxPcGVuID0gdHJ1ZTtcbiAgfVxuXG4gIG9uQ2xvc2VNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzTW9kYWxPcGVuID0gZmFsc2U7XG4gIH1cbn1cblxuIiwiPGRpdiBjbGFzcz1cImNxYS1ncmlkIGNxYS1ncmlkLWNvbHMtMTIgY3FhLWdhcC14LTQgY3FhLXctZnVsbCBjcWEtbWF4LWgtWzIwMHB4XSBjcWEtaC1mdWxsIGNxYS1vdmVyZmxvdy1oaWRkZW5cIj5cbiAgPCEtLSBMZWZ0IFBhbmVsOiBTY3JlZW5zaG90cyAmIFZpc3VhbCBDb21wYXJpc29uIC0tPlxuICA8ZGl2IGNsYXNzPVwiY3FhLWNvbC1zcGFuLTkgY3FhLWJvcmRlciBjcWEtYm9yZGVyLXNvbGlkIGNxYS1ib3JkZXItWyMjRTVFNUU1XSBjcWEtcm91bmRlZC1bMTBweF0gY3FhLXB0LTIgY3FhLXB4LTMgY3FhLXBiLTEgY3FhLWgtZnVsbCBjcWEtbWF4LWgtWzIwMHB4XSBjcWEtb3ZlcmZsb3ctYXV0b1wiXG4gICAgc3R5bGU9XCJzY3JvbGxiYXItd2lkdGg6IHRoaW47XCI+XG4gICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjMEEwQTBBXSBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMiBjcWEtbWItMlwiPlxuICAgICAgPHN2ZyB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0xMi42NjY3IDJIMy4zMzMzM0MyLjU5Njk1IDIgMiAyLjU5Njk1IDIgMy4zMzMzM1YxMi42NjY3QzIgMTMuNDAzIDIuNTk2OTUgMTQgMy4zMzMzMyAxNEgxMi42NjY3QzEzLjQwMyAxNCAxNCAxMy40MDMgMTQgMTIuNjY2N1YzLjMzMzMzQzE0IDIuNTk2OTUgMTMuNDAzIDIgMTIuNjY2NyAyWlwiIHN0cm9rZT1cIiMwQTBBMEFcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNi4wMDAzMyA3LjMzMjY4QzYuNzM2NzEgNy4zMzI2OCA3LjMzMzY2IDYuNzM1NzMgNy4zMzM2NiA1Ljk5OTM1QzcuMzMzNjYgNS4yNjI5NyA2LjczNjcxIDQuNjY2MDIgNi4wMDAzMyA0LjY2NjAyQzUuMjYzOTUgNC42NjYwMiA0LjY2Njk5IDUuMjYyOTcgNC42NjY5OSA1Ljk5OTM1QzQuNjY2OTkgNi43MzU3MyA1LjI2Mzk1IDcuMzMyNjggNi4wMDAzMyA3LjMzMjY4WlwiIHN0cm9rZT1cIiMwQTBBMEFcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNMTQgMTAuMDAwNEwxMS45NDI3IDcuOTQzMTJDMTEuNjkyNiA3LjY5MzE1IDExLjM1MzYgNy41NTI3MyAxMSA3LjU1MjczQzEwLjY0NjQgNy41NTI3MyAxMC4zMDc0IDcuNjkzMTUgMTAuMDU3MyA3Ljk0MzEyTDQgMTQuMDAwNFwiIHN0cm9rZT1cIiMwQTBBMEFcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgU2NyZWVuc2hvdHMgJiBWaXN1YWwgQ29tcGFyaXNvblxuICAgIDwvZGl2PlxuICAgIFxuICAgIDwhLS0gU2NyZWVuc2hvdCBDb21wYXJpc29uIEdyaWQgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1ncmlkIGNxYS1ncmlkLWNvbHMtMyBjcWEtZ2FwLTMgY3FhLW1iLTJcIj5cbiAgICAgIDwhLS0gQmFzZWxpbmUgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMlwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzExcHhdIGNxYS1sZWFkaW5nLVsxMDAlXSBjcWEtdGV4dC1bIzczNzM3M11cIj5CYXNlbGluZTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWJnLVsjRjVGNUY1XSBjcWEtcm91bmRlZC1bMTBweF0gY3FhLWJvcmRlciBjcWEtYm9yZGVyLXNvbGlkIGNxYS1ib3JkZXItWyNFNUU1RTVdIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS1oLVsxMTJweF0gY3FhLWN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uSW1hZ2VDbGljaygnYmFzZWxpbmUnKVwiPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCIhc2NyZWVuc2hvdHM/LmJhc2VsaW5lXCI+XG4gICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHZpZXdCb3g9XCIwIDAgMzIgMzJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTI1LjMzMzMgNEg2LjY2NjY3QzUuMTkzOTEgNCA0IDUuMTkzOTEgNCA2LjY2NjY3VjI1LjMzMzNDNCAyNi44MDYxIDUuMTkzOTEgMjggNi42NjY2NyAyOEgyNS4zMzMzQzI2LjgwNjEgMjggMjggMjYuODA2MSAyOCAyNS4zMzMzVjYuNjY2NjdDMjggNS4xOTM5MSAyNi44MDYxIDQgMjUuMzMzMyA0WlwiIHN0cm9rZT1cIiM3MzczNzNcIiBzdHJva2Utb3BhY2l0eT1cIjAuNVwiIHN0cm9rZS13aWR0aD1cIjIuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk0xMS45OTk3IDE0LjY2NzNDMTMuNDcyNCAxNC42NjczIDE0LjY2NjMgMTMuNDczNCAxNC42NjYzIDEyLjAwMDdDMTQuNjY2MyAxMC41Mjc5IDEzLjQ3MjQgOS4zMzM5OCAxMS45OTk3IDkuMzMzOThDMTAuNTI2OSA5LjMzMzk4IDkuMzMzMDEgMTAuNTI3OSA5LjMzMzAxIDEyLjAwMDdDOS4zMzMwMSAxMy40NzM0IDEwLjUyNjkgMTQuNjY3MyAxMS45OTk3IDE0LjY2NzNaXCIgc3Ryb2tlPVwiIzczNzM3M1wiIHN0cm9rZS1vcGFjaXR5PVwiMC41XCIgc3Ryb2tlLXdpZHRoPVwiMi42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTI4IDIwLjAwMDlMMjMuODg1MyAxNS44ODYyQzIzLjM4NTMgMTUuMzg2MyAyMi43MDcxIDE1LjEwNTUgMjIgMTUuMTA1NUMyMS4yOTI5IDE1LjEwNTUgMjAuNjE0NyAxNS4zODYzIDIwLjExNDcgMTUuODg2Mkw4IDI4LjAwMDlcIiBzdHJva2U9XCIjNzM3MzczXCIgc3Ryb2tlLW9wYWNpdHk9XCIwLjVcIiBzdHJva2Utd2lkdGg9XCIyLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxpbWcgKm5nSWY9XCJzY3JlZW5zaG90cz8uYmFzZWxpbmVcIiBbc3JjXT1cInNjcmVlbnNob3RzLmJhc2VsaW5lXCIgYWx0PVwiQmFzZWxpbmVcIiBjbGFzcz1cImNxYS13LWZ1bGwgY3FhLWgtZnVsbCBjcWEtb2JqZWN0LWNvdmVyIGNxYS1yb3VuZGVkLWxnXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBDdXJyZW50IC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxMXB4XSBjcWEtbGVhZGluZy1bMTAwJV0gY3FhLXRleHQtWyM3MzczNzNdXCI+Q3VycmVudDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWJnLVsjRkVGMkYzXSBjcWEtcm91bmRlZC1bMTBweF0gY3FhLWJvcmRlciBjcWEtYm9yZGVyLXNvbGlkIGNxYS1ib3JkZXItWyNGOUMyQzVdIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS1oLVsxMTJweF0gY3FhLWN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uSW1hZ2VDbGljaygnY3VycmVudCcpXCI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFzY3JlZW5zaG90cz8uY3VycmVudFwiIGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yIGNxYS10ZXh0LVsjRUY0NDQ0XVwiPlxuICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIiB2aWV3Qm94PVwiMCAwIDMyIDMyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0yNS4zMzMzIDRINi42NjY2N0M1LjE5MzkxIDQgNCA1LjE5MzkxIDQgNi42NjY2N1YyNS4zMzMzQzQgMjYuODA2MSA1LjE5MzkxIDI4IDYuNjY2NjcgMjhIMjUuMzMzM0MyNi44MDYxIDI4IDI4IDI2LjgwNjEgMjggMjUuMzMzM1Y2LjY2NjY3QzI4IDUuMTkzOTEgMjYuODA2MSA0IDI1LjMzMzMgNFpcIiBzdHJva2U9XCIjRTcwMDBCXCIgc3Ryb2tlLW9wYWNpdHk9XCIwLjVcIiBzdHJva2Utd2lkdGg9XCIyLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNMTEuOTk5NyAxNC42NjczQzEzLjQ3MjQgMTQuNjY3MyAxNC42NjYzIDEzLjQ3MzQgMTQuNjY2MyAxMi4wMDA3QzE0LjY2NjMgMTAuNTI3OSAxMy40NzI0IDkuMzMzOTggMTEuOTk5NyA5LjMzMzk4QzEwLjUyNjkgOS4zMzM5OCA5LjMzMzAxIDEwLjUyNzkgOS4zMzMwMSAxMi4wMDA3QzkuMzMzMDEgMTMuNDczNCAxMC41MjY5IDE0LjY2NzMgMTEuOTk5NyAxNC42NjczWlwiIHN0cm9rZT1cIiNFNzAwMEJcIiBzdHJva2Utb3BhY2l0eT1cIjAuNVwiIHN0cm9rZS13aWR0aD1cIjIuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk0yOCAyMC4wMDA5TDIzLjg4NTMgMTUuODg2MkMyMy4zODUzIDE1LjM4NjMgMjIuNzA3MSAxNS4xMDU1IDIyIDE1LjEwNTVDMjEuMjkyOSAxNS4xMDU1IDIwLjYxNDcgMTUuMzg2MyAyMC4xMTQ3IDE1Ljg4NjJMOCAyOC4wMDA5XCIgc3Ryb2tlPVwiI0U3MDAwQlwiIHN0cm9rZS1vcGFjaXR5PVwiMC41XCIgc3Ryb2tlLXdpZHRoPVwiMi42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8aW1nICpuZ0lmPVwic2NyZWVuc2hvdHM/LmN1cnJlbnRcIiBbc3JjXT1cInNjcmVlbnNob3RzLmN1cnJlbnRcIiBhbHQ9XCJDdXJyZW50XCIgY2xhc3M9XCJjcWEtdy1mdWxsIGNxYS1oLWZ1bGwgY3FhLW9iamVjdC1jb3ZlciBjcWEtcm91bmRlZC1sZ1wiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gRGlmZmVyZW5jZSAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0yXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1bMTFweF0gY3FhLWxlYWRpbmctWzEwMCVdIGNxYS10ZXh0LVsjNzM3MzczXVwiPkRpZmZlcmVuY2U8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1iZy1bI0ZFRjJGM10gY3FhLXJvdW5kZWQtWzEwcHhdIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1zb2xpZCBjcWEtYm9yZGVyLVsjRjlDMkM1XSBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtaC1bMTEycHhdIGNxYS1jdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvbkltYWdlQ2xpY2soJ2RpZmZlcmVuY2UnKVwiPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCIhc2NyZWVuc2hvdHM/LmRpZmZlcmVuY2VcIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMiBjcWEtdGV4dC1bI0VGNDQ0NF1cIj5cbiAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgdmlld0JveD1cIjAgMCAzMiAzMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMjUuMzMzMyA0SDYuNjY2NjdDNS4xOTM5MSA0IDQgNS4xOTM5MSA0IDYuNjY2NjdWMjUuMzMzM0M0IDI2LjgwNjEgNS4xOTM5MSAyOCA2LjY2NjY3IDI4SDI1LjMzMzNDMjYuODA2MSAyOCAyOCAyNi44MDYxIDI4IDI1LjMzMzNWNi42NjY2N0MyOCA1LjE5MzkxIDI2LjgwNjEgNCAyNS4zMzMzIDRaXCIgc3Ryb2tlPVwiI0U3MDAwQlwiIHN0cm9rZS1vcGFjaXR5PVwiMC41XCIgc3Ryb2tlLXdpZHRoPVwiMi42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTExLjk5OTcgMTQuNjY3M0MxMy40NzI0IDE0LjY2NzMgMTQuNjY2MyAxMy40NzM0IDE0LjY2NjMgMTIuMDAwN0MxNC42NjYzIDEwLjUyNzkgMTMuNDcyNCA5LjMzMzk4IDExLjk5OTcgOS4zMzM5OEMxMC41MjY5IDkuMzMzOTggOS4zMzMwMSAxMC41Mjc5IDkuMzMzMDEgMTIuMDAwN0M5LjMzMzAxIDEzLjQ3MzQgMTAuNTI2OSAxNC42NjczIDExLjk5OTcgMTQuNjY3M1pcIiBzdHJva2U9XCIjRTcwMDBCXCIgc3Ryb2tlLW9wYWNpdHk9XCIwLjVcIiBzdHJva2Utd2lkdGg9XCIyLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNMjggMjAuMDAwOUwyMy44ODUzIDE1Ljg4NjJDMjMuMzg1MyAxNS4zODYzIDIyLjcwNzEgMTUuMTA1NSAyMiAxNS4xMDU1QzIxLjI5MjkgMTUuMTA1NSAyMC42MTQ3IDE1LjM4NjMgMjAuMTE0NyAxNS44ODYyTDggMjguMDAwOVwiIHN0cm9rZT1cIiNFNzAwMEJcIiBzdHJva2Utb3BhY2l0eT1cIjAuNVwiIHN0cm9rZS13aWR0aD1cIjIuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGltZyAqbmdJZj1cInNjcmVlbnNob3RzPy5kaWZmZXJlbmNlXCIgW3NyY109XCJzY3JlZW5zaG90cy5kaWZmZXJlbmNlXCIgYWx0PVwiRGlmZmVyZW5jZVwiIGNsYXNzPVwiY3FhLXctZnVsbCBjcWEtaC1mdWxsIGNxYS1vYmplY3QtY292ZXIgY3FhLXJvdW5kZWQtbGdcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBBY3Rpb24gQnV0dG9ucyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1lbmQgY3FhLWdhcC0yIGNxYS1mbGV4LXdyYXBcIj5cbiAgICAgIDxidXR0b24gXG4gICAgICAgIChjbGljayk9XCJvbk1ha2VDdXJyZW50QmFzZWxpbmUoKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCIhaXNDdXJyZW50SW1hZ2VBdmFpbGFibGUgfHwgaXNNYWtpbmdDdXJyZW50QmFzZWxpbmU/Llt0ZXN0U3RlcFJlc3VsdElkXSA9PT0gdHJ1ZVwiXG4gICAgICAgIFtjbGFzcy5jcWEtb3BhY2l0eS01MF09XCIhaXNDdXJyZW50SW1hZ2VBdmFpbGFibGUgfHwgaXNNYWtpbmdDdXJyZW50QmFzZWxpbmU/Llt0ZXN0U3RlcFJlc3VsdElkXSA9PT0gdHJ1ZVwiXG4gICAgICAgIFtjbGFzcy5jcWEtY3Vyc29yLW5vdC1hbGxvd2VkXT1cIiFpc0N1cnJlbnRJbWFnZUF2YWlsYWJsZSB8fCBpc01ha2luZ0N1cnJlbnRCYXNlbGluZT8uW3Rlc3RTdGVwUmVzdWx0SWRdID09PSB0cnVlXCJcbiAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMiBjcWEtcGwtMiBjcWEtcHItNCBjcWEtcHktWzJweF0gY3FhLXJvdW5kZWQtbGcgY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLWJnLXRyYW5zcGFyZW50IGNxYS10ZXh0LVsjMjEyMTIyXSBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1bIzIxMjEyMl0gZGlzYWJsZWQ6Y3FhLWN1cnNvci1ub3QtYWxsb3dlZFwiPlxuICAgICAgICA8c3ZnICpuZ0lmPVwiIWlzTWFraW5nQ3VycmVudEJhc2VsaW5lPy5bdGVzdFN0ZXBSZXN1bHRJZF1cIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk00LjM5NzU0IDcuOTM3NTJMMi4zMTI1NCA1Ljg1MjUyTDEuNjAyNTQgNi41NTc1Mkw0LjM5NzU0IDkuMzUyNTJMMTAuMzk3NSAzLjM1MjUyTDkuNjkyNTQgMi42NDc1Mkw0LjM5NzU0IDcuOTM3NTJaXCIgZmlsbD1cImJsYWNrXCIvPjwvc3ZnPlxuICAgICAgICA8c3ZnICpuZ0lmPVwiaXNNYWtpbmdDdXJyZW50QmFzZWxpbmU/Llt0ZXN0U3RlcFJlc3VsdElkXSA9PT0gdHJ1ZVwiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICA8Y2lyY2xlIGN4PVwiNlwiIGN5PVwiNlwiIHI9XCI1XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1kYXNoYXJyYXk9XCI4IDRcIiBvcGFjaXR5PVwiMC4zXCIvPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCI2XCIgY3k9XCI2XCIgcj1cIjVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWRhc2hhcnJheT1cIjggNFwiIHN0cm9rZS1kYXNob2Zmc2V0PVwiMlwiPlxuICAgICAgICAgICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT1cInRyYW5zZm9ybVwiIHR5cGU9XCJyb3RhdGVcIiB2YWx1ZXM9XCIwIDYgNjszNjAgNiA2XCIgZHVyPVwiMXNcIiByZXBlYXRDb3VudD1cImluZGVmaW5pdGVcIi8+XG4gICAgICAgICAgPC9jaXJjbGU+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgICA8c3Bhbj57eyBpc01ha2luZ0N1cnJlbnRCYXNlbGluZT8uW3Rlc3RTdGVwUmVzdWx0SWRdID09PSB0cnVlID8gJ0xvYWRpbmcuLi4nIDogJ01ha2UgY3VycmVudCBiYXNlbGluZScgfX08L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gXG4gICAgICAgIChjbGljayk9XCJvblVwbG9hZEJhc2VsaW5lKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiaXNVcGxvYWRpbmdCYXNlbGluZT8uW3Rlc3RTdGVwUmVzdWx0SWRdID09PSB0cnVlXCJcbiAgICAgICAgW2NsYXNzLmNxYS1vcGFjaXR5LTUwXT1cImlzVXBsb2FkaW5nQmFzZWxpbmU/Llt0ZXN0U3RlcFJlc3VsdElkXSA9PT0gdHJ1ZVwiXG4gICAgICAgIFtjbGFzcy5jcWEtY3Vyc29yLW5vdC1hbGxvd2VkXT1cImlzVXBsb2FkaW5nQmFzZWxpbmU/Llt0ZXN0U3RlcFJlc3VsdElkXSA9PT0gdHJ1ZVwiXG4gICAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTIgY3FhLXBsLTIgY3FhLXByLTQgY3FhLXB5LVsycHhdIGNxYS1yb3VuZGVkLWxnIGNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS1iZy10cmFuc3BhcmVudCBjcWEtdGV4dC1bIzIxMjEyMl0gY3FhLWJvcmRlciBjcWEtYm9yZGVyLXNvbGlkIGNxYS1ib3JkZXItWyMyMTIxMjJdIGRpc2FibGVkOmNxYS1jdXJzb3Itbm90LWFsbG93ZWRcIj5cbiAgICAgICAgPHN2ZyAqbmdJZj1cIiFpc1VwbG9hZGluZ0Jhc2VsaW5lPy5bdGVzdFN0ZXBSZXN1bHRJZF1cIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk05IDcuNVY5SDNWNy41SDJWOUMyIDkuNTUgMi40NSAxMCAzIDEwSDlDOS41NSAxMCAxMCA5LjU1IDEwIDlWNy41SDlaTTMuNSA0LjVMNC4yMDUgNS4yMDVMNS41IDMuOTE1VjhINi41VjMuOTE1TDcuNzk1IDUuMjA1TDguNSA0LjVMNiAyTDMuNSA0LjVaXCIgZmlsbD1cImJsYWNrXCIvPjwvc3ZnPlxuICAgICAgICA8c3ZnICpuZ0lmPVwiaXNVcGxvYWRpbmdCYXNlbGluZT8uW3Rlc3RTdGVwUmVzdWx0SWRdID09PSB0cnVlXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHN0eWxlPVwiYW5pbWF0aW9uOiBzcGluIDFzIGxpbmVhciBpbmZpbml0ZTtcIj5cbiAgICAgICAgICA8Y2lyY2xlIGN4PVwiNlwiIGN5PVwiNlwiIHI9XCI1XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1kYXNoYXJyYXk9XCI4IDRcIiBvcGFjaXR5PVwiMC4zXCIvPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCI2XCIgY3k9XCI2XCIgcj1cIjVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWRhc2hhcnJheT1cIjggNFwiIHN0cm9rZS1kYXNob2Zmc2V0PVwiMlwiLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICAgIDxzcGFuPnt7IGlzVXBsb2FkaW5nQmFzZWxpbmU/Llt0ZXN0U3RlcFJlc3VsdElkXSA9PT0gdHJ1ZSA/ICdVcGxvYWRpbmcuLi4nIDogJ1VwbG9hZCBiYXNlbGluZScgfX08L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDwhLS0gSGlkZGVuIGZpbGUgaW5wdXQgLS0+XG4gICAgICA8aW5wdXQgXG4gICAgICAgICNmaWxlSW5wdXRcbiAgICAgICAgdHlwZT1cImZpbGVcIiBcbiAgICAgICAgYWNjZXB0PVwiaW1hZ2UvKlwiXG4gICAgICAgIChjaGFuZ2UpPVwib25GaWxlU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiBcbiAgICAgIC8+XG4gICAgICA8YnV0dG9uIFxuICAgICAgICAoY2xpY2spPVwib25BbmFseXplKClcIlxuICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yIGNxYS1wbC0yIGNxYS1wci00IGNxYS1weS1bMnB4XSBjcWEtcm91bmRlZC1sZyBjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtYmctdHJhbnNwYXJlbnQgY3FhLXRleHQtWyMyMTIxMjJdIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1zb2xpZCBjcWEtYm9yZGVyLVsjMjEyMTIyXVwiPlxuICAgICAgICA8c3ZnIHdpZHRoPVwiMTFcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTEgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTUuNTExNSAwQzUuNTc5MzEgMC4wMzAzMTc4IDUuNjA4MjggMC4xMDQzNTQgNS42MzYwNCAwLjE3MzEyOEM1LjY0OTk2IDAuMjEzMiA1LjY2MjczIDAuMjUzNDg5IDUuNjc1MTMgMC4yOTQxQzUuNjc5OTggMC4zMDk2NjIgNS42ODQ4NCAwLjMyNTIyNCA1LjY4OTg0IDAuMzQxMjU4QzUuNzU0MyAwLjU1MDY3MyA1LjgxMTcyIDAuNzYyMzMxIDUuODY5NDYgMC45NzM4NEM1Ljg4MjUxIDEuMDIxNTkgNS44OTU2MyAxLjA2OTMyIDUuOTA4NzQgMS4xMTcwNEM1Ljk3NTUxIDEuMzYwMDUgNi4wNDE3NyAxLjYwMzIgNi4xMDc2NyAxLjg0NjQ2QzYuMTE2OTMgMS44ODA2MiA2LjEyNjE5IDEuOTE0NzkgNi4xMzU0NSAxLjk0ODk1QzYuMTYxNTYgMi4wNDUyNyA2LjE4NzY0IDIuMTQxNTkgNi4yMTM1NyAyLjIzNzk2QzYuMjY4MzcgMi40NDE1OSA2LjMyNDY3IDIuNjQ0NjMgNi4zODQ2MyAyLjg0NjY4QzYuMzg5ODYgMi44NjQzNSA2LjM5NTEgMi44ODIwMyA2LjQwMDUgMi45MDAyNEM2LjU1NjI0IDMuNDIgNi43NzcwMSAzLjg4NTgzIDcuMTM4ODggNC4yODI2MkM3LjE0Nzg0IDQuMjkyOTQgNy4xNTY4IDQuMzAzMjUgNy4xNjYwMyA0LjMxMzg4QzcuMzIwNSA0LjQ4NTgzIDcuNTE4NzMgNC42MjM2MSA3LjcxNjg3IDQuNzM0ODFDNy43MjY5NiA0Ljc0MDU3IDcuNzM3MDUgNC43NDYzMiA3Ljc0NzQ1IDQuNzUyMjVDOC4zMzA1MSA1LjA3OSA5LjAzMTYyIDUuMjIyNzIgOS42NjMxMyA1LjQxNEM5LjkzOTg0IDUuNDk3ODcgMTAuMjE1NyA1LjU4NDM4IDEwLjQ5MDUgNS42NzQ3QzEwLjUwOTkgNS42ODEwNSAxMC41MjkyIDUuNjg3MzggMTAuNTQ4NSA1LjY5MzdDMTAuNjA2MiA1LjcxMjYgMTAuNjYzOSA1LjczMTgyIDEwLjcyMTUgNS43NTEzQzEwLjczNDkgNS43NTU3MiAxMC43NDgzIDUuNzYwMTUgMTAuNzYyMSA1Ljc2NDcxQzEwLjg0MTUgNS43OTIwOCAxMC45MTc0IDUuODI0MzkgMTAuOTgyNSA1Ljg4MDM2QzExLjAwMjMgNS45MjU1OCAxMS4wMDIzIDUuOTI1NTggMTAuOTk2OSA1Ljk3MDhDMTAuOTMzNiA2LjAzNjQ4IDEwLjg3MDcgNi4wNjcyOCAxMC43ODcxIDYuMDk3MzNDMTAuNzc1MSA2LjEwMTc2IDEwLjc2MzIgNi4xMDYyIDEwLjc1MDggNi4xMTA3N0MxMC42MDk2IDYuMTYyNDQgMTAuNDY2NSA2LjIwNzY2IDEwLjMyMzIgNi4yNTI0N0MxMC4yOTM4IDYuMjYxNzQgMTAuMjY0NCA2LjI3MTAxIDEwLjIzNSA2LjI4MDI4QzEwLjA1MzcgNi4zMzczNSA5Ljg3MTk5IDYuMzkzMiA5LjY5MDE0IDYuNDQ4NDJDOS40NTA2MSA2LjUyMTE3IDkuMjExNDMgNi41OTUxMiA4Ljk3MjQ5IDYuNjY5OTFDOC45MzMzNCA2LjY4MjE2IDguODk0MTggNi42OTQzNyA4Ljg1NTAxIDYuNzA2NTRDOC42NDkzMSA2Ljc3MDQ4IDguNDQ0NjIgNi44MzY3MSA4LjI0MTYyIDYuOTA5NDRDOC4yMjQ3OCA2LjkxNTQ1IDguMjA3OTQgNi45MjE0NyA4LjE5MDU5IDYuOTI3NjZDNy41MTA2OSA3LjE3NDQzIDYuOTkyNDUgNy42MzQ3OCA2LjY2ODA5IDguMzA3OTlDNi40OTMyMSA4LjY4NjM0IDYuMzkwMDYgOS4wOTU0OCA2LjI4NDgzIDkuNDk5MjlDNi4yNTYzNyA5LjYwODI1IDYuMjI2MTEgOS43MTY2IDYuMTk1NSA5LjgyNDkyQzYuMTcxNDkgOS45MTAxNSA2LjE0ODAzIDkuOTk1NTEgNi4xMjUxNSAxMC4wODExQzYuMTIyNDMgMTAuMDkxMyA2LjExOTcgMTAuMTAxNCA2LjExNjkgMTAuMTExOUM2LjEwMzcgMTAuMTYxMiA2LjA5MDU2IDEwLjIxMDYgNi4wNzc1MiAxMC4yNTk5QzYuMDQ0MTMgMTAuMzg1MSA2LjAwODE3IDEwLjUwOTIgNS45NzEyMyAxMC42MzMyQzUuOTA1NjcgMTAuODUzNiA1Ljg0NjAxIDExLjA3NTcgNS43ODY3MiAxMS4yOThDNS42OTczMiAxMS42MzI4IDUuNjk3MzIgMTEuNjMyOCA1LjY0NjYyIDExLjc5MzdDNS42NDMyNiAxMS44MDQ1IDUuNjM5OSAxMS44MTUzIDUuNjM2NDQgMTEuODI2NEM1LjYxNzkzIDExLjg4MzcgNS41OTg5IDExLjkzNjQgNS41NjM4OCAxMS45ODQ5QzUuNTEwNiAxMS45OTcyIDUuNTEwNiAxMS45OTcyIDUuNDYyNzMgMTJDNS40MDgwMSAxMS45MTY4IDUuMzcxNzcgMTEuODM2MSA1LjM0MjczIDExLjc0MDFDNS4zMzg1MSAxMS43MjY1IDUuMzM0MjggMTEuNzEyOSA1LjMyOTkzIDExLjY5ODlDNS4yNzYxNCAxMS41MjMzIDUuMjI4MDcgMTEuMzQ1OSA1LjE3OTk5IDExLjE2ODZDNS4xNjg5OCAxMS4xMjgxIDUuMTU3OTEgMTEuMDg3NSA1LjE0Njg1IDExLjA0N0M1LjA2NDQgMTAuNzQ0OCA0Ljk4MzMxIDEwLjQ0MjMgNC45MDIzNCAxMC4xMzk3QzQuNTY1MDkgOC42NDI5OSA0LjU2NTA5IDguNjQyOTkgMy43MTQzMyA3LjQzMjg4QzMuNzAwNyA3LjQyMTI4IDMuNjg3MDYgNy40MDk2OCAzLjY3MzAyIDcuMzk3NzNDMy4xMTU2IDYuOTMyMDMgMi4zODEzIDYuNzU5NTkgMS43MDg4NSA2LjU1NzUxQzEuNTQyNTQgNi41MDc0OSAxLjM3NjI4IDYuNDU3MjQgMS4yMTAwNCA2LjQwNjk3QzEuMTk1NSA2LjQwMjU4IDEuMTk1NSA2LjQwMjU4IDEuMTgwNjcgNi4zOTgwOUMwLjk0MDg4MSA2LjMyNTU2IDAuNzAxMTU3IDYuMjUyODMgMC40NjIyNzQgNi4xNzcxMUMwLjQ1MjE2OCA2LjE3MzkzIDAuNDQyMDYzIDYuMTcwNzUgMC40MzE2NTEgNi4xNjc0N0MwLjA2NDY1NDMgNi4wNTE3OCAwLjA2NDY1NDMgNi4wNTE3OCAwLjAwMDc5MDIxMSA1Ljk3MDhDLTAuMDAxMDE1OTkgNS45MzQwNiAtMC4wMDEwMTU5OSA1LjkzNDA2IDAuMDE1MjM5OCA1Ljg5NTQzQzAuMDgxOTkwOSA1LjgyNzIgMC4xNDY3NiA1Ljc5Nzk3IDAuMjM0ODYyIDUuNzY4MjVDMC4yNDc2MTggNS43NjM3OCAwLjI2MDM3NSA1Ljc1OTMxIDAuMjczNTE4IDUuNzU0NzFDMC4zMTI1ODcgNS43NDExIDAuMzUxNzQxIDUuNzI3NzkgMC4zOTA5MjkgNS43MTQ1NUMwLjQwMjExMiA1LjcxMDczIDAuNDEzMjk1IDUuNzA2OSAwLjQyNDgxNyA1LjcwMjk2QzAuNTAzOTA0IDUuNjc1OSAwLjU4MzI3NSA1LjY0OTg2IDAuNjYyNzYyIDUuNjI0MTJDMC42ODIyOTQgNS42MTc3NyAwLjY4MjI5NCA1LjYxNzc3IDAuNzAyMjIgNS42MTEyOUMxLjA0MTY2IDUuNTAxMTYgMS4zODMzMiA1LjM5ODY3IDEuNzI0ODcgNS4yOTU5NUMxLjk3OTM5IDUuMjE5MzkgMi4yMzM0NyA1LjE0MTU3IDIuNDg2NzQgNS4wNjA2NUMyLjQ5ODM4IDUuMDU2OTQgMi41MTAwMSA1LjA1MzI0IDIuNTIyMDEgNS4wNDk0M0MzLjEwODcyIDQuODYyNjIgMy42ODIyOSA0LjU5NzU1IDQuMDYxMTIgNC4wNzE2QzQuMDY2NzkgNC4wNjM4IDQuMDcyNDcgNC4wNTU5OSA0LjA3ODMxIDQuMDQ3OTZDNC41MDAxOSAzLjQ2NDIgNC42NjQ3IDIuNzU0MyA0Ljg0ODUgMi4wNjE2MUM0LjkwODk2IDEuODMzNzkgNC45NzAxNSAxLjYwNjE5IDUuMDMxNTUgMS4zNzg2NUM1LjA0ODU2IDEuMzE1NjQgNS4wNjU1MyAxLjI1MjYzIDUuMDgyNDQgMS4xODk1OUM1LjE1MDM3IDAuOTM2Mzg1IDUuMjE5MzIgMC42ODM1MjMgNS4yOTIyMiAwLjQzMTgxOEM1LjI5OTA0IDAuNDA4MjQ4IDUuMzA1ODMgMC4zODQ2NjcgNS4zMTI1OSAwLjM2MTA3NkM1LjQxNDY2IDAuMDA1MzE2ODEgNS40MTQ2NiAwLjAwNTMxNjgxIDUuNTExNSAwWlwiIGZpbGw9XCIjMTYxNjE3XCIvPjxwYXRoIGQ9XCJNOC44NDM5MSAwLjc0MDQ0M0M4LjkxMDI0IDAuODE4NzYyIDguOTIzNDkgMC45MTA4MDYgOC45NDQxNSAxLjAxMDgxQzkuMDEzMDUgMS4zMjQ5OSA5LjA5MjQxIDEuNjEzODggOS4zNjc4NyAxLjc5NjM4QzkuNTM3ODIgMS44OTQ0MyA5Ljc0MDM3IDEuOTM5MDQgOS45Mjg2NyAxLjk4MTE4QzEwLjAwODIgMS45OTkzMyAxMC4wNzUzIDIuMDIzNDEgMTAuMTQzNSAyLjA3MTU4QzEwLjE1ODggMi4wOTcwMSAxMC4xNTg4IDIuMDk3MDEgMTAuMTU3OSAyLjE0MTI5QzEwLjE0MjEgMi4xOTUxMyAxMC4xMjgyIDIuMjEyNSAxMC4wODY2IDIuMjQ3NzRDMTAuMDQxIDIuMjYzNjQgMTAuMDQxIDIuMjYzNjQgOS45ODYzMyAyLjI3NjAxQzkuOTY1NjQgMi4yODA5NiA5Ljk0NDk2IDIuMjg1OTcgOS45MjQzIDIuMjkxMDJDOS45MTMyMiAyLjI5MzcgOS45MDIxNSAyLjI5NjM4IDkuODkwNzUgMi4yOTkxNEM5LjU1NDAxIDIuMzgwMzkgOS41NTQwMSAyLjM4MDM5IDkuMjYyOTUgMi41NjQyOEM5LjI1MzQ4IDIuNTcyMjIgOS4yNDQwMiAyLjU4MDE3IDkuMjM0MjcgMi41ODgzNkM5LjAyNjI1IDIuNzc5NyA4Ljk4MjI2IDMuMDk4IDguOTE5NjMgMy4zNjQ2NEM4LjkxNjA1IDMuMzc5MjggOC45MTI0NiAzLjM5MzkzIDguOTA4NzYgMy40MDkwMUM4LjkwNTY2IDMuNDIxOTggOC45MDI1NSAzLjQzNDk0IDguODk5MzUgMy40NDgzQzguODg1ODQgMy40ODc4OCA4Ljg3MTgzIDMuNTEzNjkgOC44NDM5MSAzLjU0NDAyQzguNzY2MTQgMy41NTQzMiA4Ljc2NjE0IDMuNTU0MzIgOC43MjgzMSAzLjU0NDAyQzguNjY4MTQgMy40OTUzNyA4LjY1NDY4IDMuNDM5OTYgOC42Mzg5NiAzLjM2NTVDOC42MzYzMyAzLjM1Mzk3IDguNjMzNjkgMy4zNDI0NCA4LjYzMDk4IDMuMzMwNTZDOC42MjI1OSAzLjI5Mzc0IDguNjE0NDcgMy4yNTY4NiA4LjYwNjM5IDMuMjE5OTVDOC41NDMwMiAyLjkzMjU5IDguNDcxNDggMi42NTA2NCA4LjIxODc5IDIuNDgyMkM4LjAyMTMxIDIuMzY3MzIgNy43ODExOCAyLjMxMjk4IDcuNTYwNDUgMi4yNjkxMUM3LjQ5OTk2IDIuMjU1OTcgNy40NjUzIDIuMjM5NDQgNy40Mjc4NSAyLjE4NzQ1QzcuNDE5NzIgMi4xMzQ3IDcuNDE5NzIgMi4xMzQ3IDcuNDI3ODUgMi4wODE5NEM3LjQ4NTQxIDIuMDE5NzkgNy41NDU5NyAyLjAwNDYyIDcuNjIzODIgMS45ODU4NUM3LjY0ODM1IDEuOTc5NTIgNy42NzI4NiAxLjk3MzE0IDcuNjk3MzcgMS45NjY3MUM3LjcxMDAzIDEuOTYzNDIgNy43MjI2OSAxLjk2MDEyIDcuNzM1NzQgMS45NTY3M0M3LjgwMDMyIDEuOTM5MzkgNy44NjQyNSAxLjkxOTk1IDcuOTI4MTcgMS45MDAxMkM3LjkzOTc4IDEuODk2NjEgNy45NTEzOSAxLjg5MzA5IDcuOTYzMzYgMS44ODk0N0M4LjA5MzI5IDEuODQ4OTUgOC4yMDU0MSAxLjc5NzEyIDguMzA5MjcgMS43MDUxMkM4LjMxODk2IDEuNjk2OCA4LjMyODY0IDEuNjg4NDggOC4zMzg2MiAxLjY3OTkyQzguNTAwMjYgMS41MjgxNyA4LjU1NTE4IDEuMzAwMiA4LjYwNTA0IDEuMDg3NDhDOC42MDg4NCAxLjA3MTMzIDguNjEyNjQgMS4wNTUxOCA4LjYxNjU1IDEuMDM4NTRDOC42MjQxMSAxLjAwNjEgOC42MzE1NCAwLjk3MzYyMiA4LjYzODgyIDAuOTQxMTFDOC42NDQwMyAwLjkxODQ4OSA4LjY0NDAzIDAuOTE4NDg5IDguNjQ5MzUgMC44OTU0MTJDOC42NTIzOCAwLjg4MTg5OSA4LjY1NTQyIDAuODY4Mzg1IDguNjU4NTUgMC44NTQ0NjJDOC42NzE4NiAwLjgxMTQ0MSA4LjY4OTM1IDAuNzc3NjYgOC43MTM4NiAwLjc0MDQ0M0M4Ljc2MDk2IDAuNzE1ODc4IDguNzk0MDEgMC43MjY5ODMgOC44NDM5MSAwLjc0MDQ0M1pcIiBmaWxsPVwiIzQxNDE0NlwiLz48cGF0aCBkPVwiTTIuMTk0NDYgOC4zMjk2MkMyLjIxMTY2IDguMzI5NzUgMi4yMTE2NiA4LjMyOTc1IDIuMjI5MTkgOC4zMjk4OEMyLjM1MjUzIDguMzMzOCAyLjQzNTk3IDguMzc1MDMgMi41MjY4IDguNDYxNTFDMi42MzI1IDguNTgwNjEgMi42ODEzIDguNzE0OTcgMi42Nzg1MiA4Ljg3NTQ5QzIuNjY2NjYgOS4wMDU2NSAyLjU5MzA3IDkuMTE5MjkgMi41MDI4MiA5LjIwNzI3QzIuMzk2NTggOS4yOTY3MiAyLjI4OTQxIDkuMzI2MjggMi4xNTM2NiA5LjMyMjE1QzIuMDM5MTkgOS4zMDgyNSAxLjkzMTUxIDkuMjUxNTMgMS44NTAzOCA5LjE2NjE4QzEuNzQ5NSA5LjAyMjU4IDEuNzIgOC44OTA4NyAxLjczNDc5IDguNzEzOThDMS43NjUzMyA4LjU3NDcyIDEuODUzMzcgOC40NjE2NyAxLjk2NTk4IDguMzgyMzhDMi4wNDQyMSA4LjM0MTAxIDIuMTA3MTMgOC4zMjg4NiAyLjE5NDQ2IDguMzI5NjJaXCIgZmlsbD1cIiM0QzRDNTFcIi8+PC9zdmc+XG4gICAgICAgIEFuYWx5emVcbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIFJpZ2h0IFBhbmVsOiBMb2dzIC0tPlxuICA8ZGl2IGNsYXNzPVwiY3FhLWNvbC1zcGFuLTMgY3FhLWJvcmRlciBjcWEtYm9yZGVyLXNvbGlkIGNxYS1ib3JkZXItWyMjRTVFNUU1XSBjcWEtcm91bmRlZC1bMTBweF0gY3FhLXB5LTIgY3FhLXB4LTMgY3FhLWgtZnVsbCBjcWEtbWF4LWgtWzIwMHB4XSBjcWEtb3ZlcmZsb3ctYXV0b1wiXG4gICAgc3R5bGU9XCJzY3JvbGxiYXItd2lkdGg6IHRoaW47XCI+XG4gICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjMEEwQTBBXSBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMiBjcWEtbWItMlwiPlxuICAgICAgPHN2ZyB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0xMC42NjY2IDEyTDE0LjY2NjYgOEwxMC42NjY2IDRcIiBzdHJva2U9XCIjMEEwQTBBXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTUuMzMzMzcgNEwxLjMzMzM3IDhMNS4zMzMzNyAxMlwiIHN0cm9rZT1cIiMwQTBBMEFcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgTG9nc1xuICAgIDwvZGl2PlxuICAgIFxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0yIFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxMXB4XSBjcWEtbGVhZGluZy1bMTAwJV0gY3FhLXRleHQtWyM3MzczNzNdXCI+Q29uc29sZTwvZGl2PlxuICAgICAgXG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBsb2cgb2YgbG9nc1wiIGNsYXNzPVwiY3FhLXB4LTIgY3FhLXB5LVsycHhdIGNxYS1yb3VuZGVkIGNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS1icmVhay13b3Jkc1wiIFtuZ0NsYXNzXT1cImdldExvZ0NsYXNzKGxvZy5sZXZlbClcIj5cbiAgICAgICAge3sgbG9nLm1lc3NhZ2UgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgXG4gICAgICA8ZGl2ICpuZ0lmPVwiIWxvZ3MgfHwgbG9ncy5sZW5ndGggPT09IDBcIiBjbGFzcz1cImNxYS1weC0yIGNxYS1weS1bMnB4XSBjcWEtcm91bmRlZCBjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bIzlDQTNBRl0gY3FhLWJnLVsjZjhmOGY4XSBjcWEtdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgTm8gbG9ncyBhdmFpbGFibGVcbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSA8YSBcbiAgICAgICpuZ0lmPVwic2hvd0Z1bGxMb2dzTGluayAmJiBsb2dzPy5sZW5ndGhcIlxuICAgICAgKGNsaWNrKT1cIm9uVmlld0Z1bGxMb2dzKClcIlxuICAgICAgY2xhc3M9XCJjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS10ZXh0LVsjM0Y0M0VFXSBjcWEtZm9udC1tZWRpdW0gY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1lbmQgY3FhLWdhcC1bMnB4XSBjcWEtY3Vyc29yLXBvaW50ZXIgaG92ZXI6Y3FhLXVuZGVybGluZSBjcWEtbXQtNFwiPlxuICAgICAgVmlldyBmdWxsIGxvZ3MgSXRlcmF0aW9uc1xuICAgICAgPGRpdj48c3ZnIHdpZHRoPVwiOFwiIGhlaWdodD1cIjhcIiB2aWV3Qm94PVwiMCAwIDggOFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMi4wMzgzMyA2Ljc0MzM1TDIuNjI4MzMgNy4zMzMzNUw1Ljk2MTY2IDQuMDAwMDJMMi42MjgzMyAwLjY2NjY4N0wyLjAzODMzIDEuMjU2NjlMNC43ODE2NiA0LjAwMDAyTDIuMDM4MzMgNi43NDMzNVpcIiBmaWxsPVwiIzNGNDNFRVwiLz48L3N2Zz48L2Rpdj5cbiAgICA8L2E+IC0tPlxuICA8L2Rpdj5cblxuICBcbiAgPGNxYS12aXN1YWwtZGlmZmVyZW5jZS1tb2RhbFxuICAgIFtpc09wZW5dPVwiaXNNb2RhbE9wZW5cIlxuICAgIFtiYXNlbGluZVVybF09XCJzY3JlZW5zaG90cz8uYmFzZWxpbmUgfHwgJydcIlxuICAgIFtjdXJyZW50VXJsXT1cInNjcmVlbnNob3RzPy5jdXJyZW50IHx8ICcnXCJcbiAgICBbZGlmZmVyZW5jZVVybF09XCJzY3JlZW5zaG90cz8uZGlmZmVyZW5jZSB8fCAnJ1wiXG4gICAgW2luaXRpYWxWaWV3XT1cImluaXRpYWxNb2RhbFZpZXdcIlxuICAgIChjbG9zZSk9XCJvbkNsb3NlTW9kYWwoKVwiPlxuICA8L2NxYS12aXN1YWwtZGlmZmVyZW5jZS1tb2RhbD5cbjwvZGl2PlxuXG48c3R5bGU+XG4gIEBrZXlmcmFtZXMgc3BpbiB7XG4gICAgZnJvbSB7IHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOyB9XG4gICAgdG8geyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9XG4gIH1cbjwvc3R5bGU+Il19
|
|
@@ -209,10 +209,10 @@ export class SegmentControlComponent {
|
|
|
209
209
|
}
|
|
210
210
|
}
|
|
211
211
|
SegmentControlComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SegmentControlComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
212
|
-
SegmentControlComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: SegmentControlComponent, selector: "cqa-segment-control", inputs: { segments: "segments", value: "value", disabled: "disabled" }, outputs: { valueChange: "valueChange" }, host: { classAttribute: "cqa-ui-root" }, viewQueries: [{ propertyName: "segmentContainer", first: true, predicate: ["segmentContainer"], descendants: true }, { propertyName: "segmentButtons", predicate: ["segmentButton"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"cqa-ui-root\" style=\"display: inline-block;\">\n <div\n #segmentContainer\n class=\"cqa-relative cqa-inline-flex cqa-flex-row cqa-items-start cqa-p-[3.5px] cqa-h-[31.5px] cqa-bg-surface-light cqa-rounded-[8px]\"\n role=\"tablist\"\n [attr.aria-disabled]=\"disabled || null\"\n >\n <div\n class=\"cqa-absolute cqa-rounded-[8px] cqa-transition-all cqa-duration-200 cqa-ease-in-out cqa-pointer-events-none\"\n [class.cqa-opacity-0]=\"!isIndicatorVisible\" [ngStyle]=\"indicatorStyle\" aria-hidden=\"true\"></div>\n\n <button *ngFor=\"let segment of segments; index as index; trackBy: trackByValue\" #segmentButton type=\"button\"\n role=\"tab\"\n class=\"cqa-relative cqa-z-
|
|
212
|
+
SegmentControlComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: SegmentControlComponent, selector: "cqa-segment-control", inputs: { segments: "segments", value: "value", disabled: "disabled" }, outputs: { valueChange: "valueChange" }, host: { classAttribute: "cqa-ui-root" }, viewQueries: [{ propertyName: "segmentContainer", first: true, predicate: ["segmentContainer"], descendants: true }, { propertyName: "segmentButtons", predicate: ["segmentButton"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"cqa-ui-root\" style=\"display: inline-block;\">\n <div\n #segmentContainer\n class=\"cqa-relative cqa-inline-flex cqa-flex-row cqa-items-start cqa-p-[3.5px] cqa-h-[31.5px] cqa-bg-surface-light cqa-rounded-[8px]\"\n role=\"tablist\"\n [attr.aria-disabled]=\"disabled || null\"\n >\n <div\n class=\"cqa-absolute cqa-rounded-[8px] cqa-transition-all cqa-duration-200 cqa-ease-in-out cqa-pointer-events-none\"\n [class.cqa-opacity-0]=\"!isIndicatorVisible\" [ngStyle]=\"indicatorStyle\" aria-hidden=\"true\"></div>\n\n <button *ngFor=\"let segment of segments; index as index; trackBy: trackByValue\" #segmentButton type=\"button\"\n role=\"tab\"\n class=\"cqa-relative cqa-z-0 cqa-flex cqa-flex-col cqa-justify-center cqa-items-center cqa-px-[14px] cqa-py-[3.5px] cqa-h-[25px] cqa-rounded-[8px] cqa-transition-all cqa-duration-200 cqa-ease-in-out cqa-whitespace-nowrap cqa-text-center focus:cqa-outline-none focus-visible:cqa-outline-none focus-visible:cqa-ring-0 focus-visible:cqa-ring-offset-0 cqa-flex-none\"\n [ngClass]=\"{\n 'cqa-text-white cqa-font-medium': isSelected(segment),\n 'cqa-text-muted': !isSelected(segment) && !(disabled || segment.disabled),\n 'cqa-cursor-not-allowed': disabled || segment.disabled,\n 'cqa-text-disabled': (disabled || segment.disabled) && !isSelected(segment),\n 'cqa-hover:cqa-text-black': !isSelected(segment) && !disabled && !segment.disabled\n }\" [disabled]=\"disabled || segment.disabled\" [attr.aria-selected]=\"isSelected(segment)\"\n [attr.tabindex]=\"!disabled && !segment.disabled ? (isSelected(segment) ? 0 : -1) : -1\"\n (click)=\"select(segment, index)\" (keydown)=\"onKeyDown($event, index)\">\n <span\n class=\"cqa-flex cqa-gap-1 cqa-items-center cqa-justify-center cqa-h-[18px] cqa-font-['Inter'] cqa-font-normal cqa-text-[12px] cqa-leading-[12px] cqa-text-center cqa-align-middle\">\n \n <mat-icon *ngIf=\"segment?.icon\" class=\"!cqa-w-[12px] !cqa-h-[12px] !cqa-text-[12px]\" >\n {{ segment?.icon }}\n </mat-icon>\n\n {{ segment.label }}\n </span>\n </button>\n</div>", components: [{ type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
213
213
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SegmentControlComponent, decorators: [{
|
|
214
214
|
type: Component,
|
|
215
|
-
args: [{ selector: 'cqa-segment-control', host: { class: 'cqa-ui-root' }, template: "<div class=\"cqa-ui-root\" style=\"display: inline-block;\">\n <div\n #segmentContainer\n class=\"cqa-relative cqa-inline-flex cqa-flex-row cqa-items-start cqa-p-[3.5px] cqa-h-[31.5px] cqa-bg-surface-light cqa-rounded-[8px]\"\n role=\"tablist\"\n [attr.aria-disabled]=\"disabled || null\"\n >\n <div\n class=\"cqa-absolute cqa-rounded-[8px] cqa-transition-all cqa-duration-200 cqa-ease-in-out cqa-pointer-events-none\"\n [class.cqa-opacity-0]=\"!isIndicatorVisible\" [ngStyle]=\"indicatorStyle\" aria-hidden=\"true\"></div>\n\n <button *ngFor=\"let segment of segments; index as index; trackBy: trackByValue\" #segmentButton type=\"button\"\n role=\"tab\"\n class=\"cqa-relative cqa-z-
|
|
215
|
+
args: [{ selector: 'cqa-segment-control', host: { class: 'cqa-ui-root' }, template: "<div class=\"cqa-ui-root\" style=\"display: inline-block;\">\n <div\n #segmentContainer\n class=\"cqa-relative cqa-inline-flex cqa-flex-row cqa-items-start cqa-p-[3.5px] cqa-h-[31.5px] cqa-bg-surface-light cqa-rounded-[8px]\"\n role=\"tablist\"\n [attr.aria-disabled]=\"disabled || null\"\n >\n <div\n class=\"cqa-absolute cqa-rounded-[8px] cqa-transition-all cqa-duration-200 cqa-ease-in-out cqa-pointer-events-none\"\n [class.cqa-opacity-0]=\"!isIndicatorVisible\" [ngStyle]=\"indicatorStyle\" aria-hidden=\"true\"></div>\n\n <button *ngFor=\"let segment of segments; index as index; trackBy: trackByValue\" #segmentButton type=\"button\"\n role=\"tab\"\n class=\"cqa-relative cqa-z-0 cqa-flex cqa-flex-col cqa-justify-center cqa-items-center cqa-px-[14px] cqa-py-[3.5px] cqa-h-[25px] cqa-rounded-[8px] cqa-transition-all cqa-duration-200 cqa-ease-in-out cqa-whitespace-nowrap cqa-text-center focus:cqa-outline-none focus-visible:cqa-outline-none focus-visible:cqa-ring-0 focus-visible:cqa-ring-offset-0 cqa-flex-none\"\n [ngClass]=\"{\n 'cqa-text-white cqa-font-medium': isSelected(segment),\n 'cqa-text-muted': !isSelected(segment) && !(disabled || segment.disabled),\n 'cqa-cursor-not-allowed': disabled || segment.disabled,\n 'cqa-text-disabled': (disabled || segment.disabled) && !isSelected(segment),\n 'cqa-hover:cqa-text-black': !isSelected(segment) && !disabled && !segment.disabled\n }\" [disabled]=\"disabled || segment.disabled\" [attr.aria-selected]=\"isSelected(segment)\"\n [attr.tabindex]=\"!disabled && !segment.disabled ? (isSelected(segment) ? 0 : -1) : -1\"\n (click)=\"select(segment, index)\" (keydown)=\"onKeyDown($event, index)\">\n <span\n class=\"cqa-flex cqa-gap-1 cqa-items-center cqa-justify-center cqa-h-[18px] cqa-font-['Inter'] cqa-font-normal cqa-text-[12px] cqa-leading-[12px] cqa-text-center cqa-align-middle\">\n \n <mat-icon *ngIf=\"segment?.icon\" class=\"!cqa-w-[12px] !cqa-h-[12px] !cqa-text-[12px]\" >\n {{ segment?.icon }}\n </mat-icon>\n\n {{ segment.label }}\n </span>\n </button>\n</div>", styles: [] }]
|
|
216
216
|
}], propDecorators: { segments: [{
|
|
217
217
|
type: Input
|
|
218
218
|
}], value: [{
|
|
@@ -228,4 +228,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
228
228
|
type: ViewChild,
|
|
229
229
|
args: ['segmentContainer']
|
|
230
230
|
}] } });
|
|
231
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudC1jb250cm9sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VnbWVudC1jb250cm9sL3NlZ21lbnQtY29udHJvbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlZ21lbnQtY29udHJvbC9zZWdtZW50LWNvbnRyb2wuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFHTixTQUFTLEVBQ1QsWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDOzs7O0FBZ0J2QixNQUFNLE9BQU8sdUJBQXVCO0lBTnBDO1FBUVcsYUFBUSxHQUFvQjtZQUNuQyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRTtZQUM1QyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRTtTQUM3QyxDQUFDO1FBT08sYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVoQixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFLbkQsbUJBQWMsR0FBMkIsRUFBRSxDQUFDO1FBQzVDLHFCQUFnQixHQUFHLEtBQUssQ0FBQztLQWlPMUI7SUE5TkMsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMzQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztTQUM1QjtJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztRQUM1RixJQUFJLENBQUMsbUJBQW1CLEVB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QVM7K0JBQ0UscUJBQXFCLFFBR3pCLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRTs4QkFJckIsUUFBUTtzQkFBaEIsS0FBSztnQkFTRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUV3QixjQUFjO3NCQUE1QyxZQUFZO3VCQUFDLGVBQWU7Z0JBQ0UsZ0JBQWdCO3NCQUE5QyxTQUFTO3VCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxudHlwZSBTZWdtZW50T3B0aW9uID0ge1xuICBsYWJlbDogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGljb24/OiBzdHJpbmc7XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtc2VnbWVudC1jb250cm9sJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlZ21lbnQtY29udHJvbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW10sXG4gIGhvc3Q6IHsgY2xhc3M6ICdjcWEtdWktcm9vdCcgfVxufSlcbmV4cG9ydCBjbGFzcyBTZWdtZW50Q29udHJvbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoKSBzZWdtZW50czogU2VnbWVudE9wdGlvbltdID0gW1xuICAgIHsgbGFiZWw6ICdUYWIgR3JvdXAnLCB2YWx1ZTogJ3RhYi1ncm91cC0xJyB9LFxuICAgIHsgbGFiZWw6ICdUYWIgR3JvdXAnLCB2YWx1ZTogJ3RhYi1ncm91cC0yJyB9LFxuICBdO1xuXG4gIC8qKlxuICAgKiBUaGUgY3VycmVudGx5IHNlbGVjdGVkIHNlZ21lbnQgdmFsdWUuXG4gICAqIElmIG5vdCBwcm92aWRlZCwgZGVmYXVsdHMgdG8gdGhlIGZpcnN0IGVuYWJsZWQgc2VnbWVudC5cbiAgICovXG4gIEBJbnB1dCgpIHZhbHVlPzogc3RyaW5nO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIEBWaWV3Q2hpbGRyZW4oJ3NlZ21lbnRCdXR0b24nKSBzZWdtZW50QnV0dG9ucyE6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50Pj47XG4gIEBWaWV3Q2hpbGQoJ3NlZ21lbnRDb250YWluZXInKSBzZWdtZW50Q29udGFpbmVyPzogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgaW5kaWNhdG9yU3R5bGU6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgaW5kaWNhdG9yVmlzaWJsZSA9IGZhbHNlO1xuICBwcml2YXRlIGJ1dHRvbkNoYW5nZXNTdWI/OiBTdWJzY3JpcHRpb247XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydzZWdtZW50cyddIHx8IGNoYW5nZXNbJ3ZhbHVlJ10pIHtcbiAgICAgIHRoaXMuZW5zdXJlU2VsZWN0ZWRWYWx1ZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmJ1dHRvbkNoYW5nZXNTdWIgPSB0aGlzLnNlZ21lbnRCdXR0b25zLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlSW5kaWNhdG9yKCkpO1xuICAgIHRoaXMuZW5zdXJlU2VsZWN0ZWRWYWx1ZSgpO1xuICAgIHRoaXMudXBkYXRlSW5kaWNhdG9yKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmJ1dHRvbkNoYW5nZXNTdWI/LnVuc3Vic2NyaWJlPy4oKTtcbiAgfVxuXG4gIHRyYWNrQnlWYWx1ZShfaW5kZXg6IG51bWJlciwgb3B0aW9uOiBTZWdtZW50T3B0aW9uKTogc3RyaW5nIHtcbiAgICByZXR1cm4gb3B0aW9uLnZhbHVlO1xuICB9XG5cbiAgaXNTZWxlY3RlZChvcHRpb246IFNlZ21lbnRPcHRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gb3B0aW9uLnZhbHVlID09PSB0aGlzLnZhbHVlO1xuICB9XG5cbiAgc2VsZWN0KG9wdGlvbjogU2VnbWVudE9wdGlvbiwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IG9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG5leHRWYWx1ZSA9IG9wdGlvbi52YWx1ZTtcbiAgICBpZiAobmV4dFZhbHVlICE9PSB0aGlzLnZhbHVlKSB7XG4gICAgICB0aGlzLnZhbHVlID0gbmV4dFZhbHVlO1xuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KG5leHRWYWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5mb2N1c0J1dHRvbihpbmRleCk7XG4gICAgdGhpcy51cGRhdGVJbmRpY2F0b3IoKTtcbiAgfVxuXG4gIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCwgY3VycmVudEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcbiAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMubW92ZVNlbGVjdGlvbigxLCBjdXJyZW50SW5kZXgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5tb3ZlU2VsZWN0aW9uKC0xLCBjdXJyZW50SW5kZXgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0hvbWUnOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLnNlbGVjdEZpcnN0RW5hYmxlZCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0VuZCc6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuc2VsZWN0TGFzdEVuYWJsZWQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICcgJzpcbiAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5zZWxlY3QodGhpcy5zZWdtZW50c1tjdXJyZW50SW5kZXhdLCBjdXJyZW50SW5kZXgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbW92ZVNlbGVjdGlvbihzdGVwOiAxIHwgLTEsIHN0YXJ0SW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IGVuYWJsZWRJbmRleGVzID0gdGhpcy5nZXRFbmFibGVkSW5kZXhlcygpO1xuICAgIGlmIChlbmFibGVkSW5kZXhlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50RW5hYmxlZEluZGV4ID0gZW5hYmxlZEluZGV4ZXMuaW5kZXhPZihzdGFydEluZGV4KTtcbiAgICBjb25zdCBmYWxsYmFja0luZGV4ID0gdGhpcy5nZXRTZWxlY3RlZEluZGV4KGVuYWJsZWRJbmRleGVzKTtcbiAgICBjb25zdCBiYXNlSW5kZXggPSBjdXJyZW50RW5hYmxlZEluZGV4ID49IDAgPyBjdXJyZW50RW5hYmxlZEluZGV4IDogZmFsbGJhY2tJbmRleDtcbiAgICBjb25zdCBuZXh0UG9zaXRpb24gPSAoYmFzZUluZGV4ICsgc3RlcCArIGVuYWJsZWRJbmRleGVzLmxlbmd0aCkgJSBlbmFibGVkSW5kZXhlcy5sZW5ndGg7XG4gICAgY29uc3QgdGFyZ2V0SW5kZXggPSBlbmFibGVkSW5kZXhlc1tuZXh0UG9zaXRpb25dO1xuXG4gICAgdGhpcy5zZWxlY3QodGhpcy5zZWdtZW50c1t0YXJnZXRJbmRleF0sIHRhcmdldEluZGV4KTtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0Rmlyc3RFbmFibGVkKCk6IHZvaWQge1xuICAgIGNvbnN0IGVuYWJsZWRJbmRleGVzID0gdGhpcy5nZXRFbmFibGVkSW5kZXhlcygpO1xuICAgIGlmIChlbmFibGVkSW5kZXhlcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBpbmRleCA9IGVuYWJsZWRJbmRleGVzWzBdO1xuICAgICAgdGhpcy5zZWxlY3QodGhpcy5zZWdtZW50c1tpbmRleF0sIGluZGV4KTtcbiAgICAgIHRoaXMudXBkYXRlSW5kaWNhdG9yKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RMYXN0RW5hYmxlZCgpOiB2b2lkIHtcbiAgICBjb25zdCBlbmFibGVkSW5kZXhlcyA9IHRoaXMuZ2V0RW5hYmxlZEluZGV4ZXMoKTtcbiAgICBpZiAoZW5hYmxlZEluZGV4ZXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgaW5kZXggPSBlbmFibGVkSW5kZXhlc1tlbmFibGVkSW5kZXhlcy5sZW5ndGggLSAxXTtcbiAgICAgIHRoaXMuc2VsZWN0KHRoaXMuc2VnbWVudHNbaW5kZXhdLCBpbmRleCk7XG4gICAgICB0aGlzLnVwZGF0ZUluZGljYXRvcigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0RW5hYmxlZEluZGV4ZXMoKTogbnVtYmVyW10ge1xuICAgIHJldHVybiB0aGlzLnNlZ21lbnRzXG4gICAgICAubWFwKChvcHRpb24sIGluZGV4KSA9PiAoeyBvcHRpb24sIGluZGV4IH0pKVxuICAgICAgLmZpbHRlcigoeyBvcHRpb24gfSkgPT4gIW9wdGlvbi5kaXNhYmxlZClcbiAgICAgIC5tYXAoKHsgaW5kZXggfSkgPT4gaW5kZXgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTZWxlY3RlZEluZGV4KGVuYWJsZWRJbmRleGVzOiBudW1iZXJbXSk6IG51bWJlciB7XG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuc2VnbWVudHMuZmluZEluZGV4KChvcHRpb24pID0+IG9wdGlvbi52YWx1ZSA9PT0gdGhpcy52YWx1ZSAmJiAhb3B0aW9uLmRpc2FibGVkKTtcbiAgICBpZiAoY3VycmVudCA+PSAwKSB7XG4gICAgICByZXR1cm4gZW5hYmxlZEluZGV4ZXMuaW5kZXhPZihjdXJyZW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbnN1cmVzIGEgdmFsaWQgdmFsdWUgaXMgc2VsZWN0ZWQuXG4gICAqIElmIG5vIHZhbHVlIGlzIHByb3ZpZGVkIG9yIHRoZSB2YWx1ZSBpcyBpbnZhbGlkLCBkZWZhdWx0cyB0byB0aGUgZmlyc3QgZW5hYmxlZCBzZWdtZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBlbnN1cmVTZWxlY3RlZFZhbHVlKCk6IHZvaWQge1xuICAgIGNvbnN0IGVuYWJsZWQgPSB0aGlzLnNlZ21lbnRzLmZpbHRlcigob3B0aW9uKSA9PiAhb3B0aW9uLmRpc2FibGVkKTtcbiAgICBpZiAoZW5hYmxlZC5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gSWYgbm8gdmFsdWUgaXMgc2V0LCBvciB2YWx1ZSBkb2Vzbid0IGV4aXN0IGluIHNlZ21lbnRzLCBkZWZhdWx0IHRvIGZpcnN0IGVuYWJsZWQgc2VnbWVudFxuICAgIGlmICghdGhpcy52YWx1ZSB8fCAhdGhpcy5zZWdtZW50cy5zb21lKChvcHRpb24pID0+IG9wdGlvbi52YWx1ZSA9PT0gdGhpcy52YWx1ZSkpIHtcbiAgICAgIGNvbnN0IGZpcnN0RW5hYmxlZFZhbHVlID0gZW5hYmxlZFswXS52YWx1ZTtcbiAgICAgIC8vIE9ubHkgZW1pdCBpZiB2YWx1ZSBhY3R1YWxseSBjaGFuZ2VkXG4gICAgICBpZiAodGhpcy52YWx1ZSAhPT0gZmlyc3RFbmFibGVkVmFsdWUpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IGZpcnN0RW5hYmxlZFZhbHVlO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgICB9XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VnbWVudHMuZmluZEluZGV4KChvcHRpb24pID0+IG9wdGlvbi52YWx1ZSA9PT0gZmlyc3RFbmFibGVkVmFsdWUpO1xuICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgdGhpcy5mb2N1c0J1dHRvbihpbmRleCk7XG4gICAgICAgIHRoaXMudXBkYXRlSW5kaWNhdG9yKGluZGV4KTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgc2VsZWN0ZWQgdmFsdWUgaXMgZGlzYWJsZWQsIHN3aXRjaCB0byBmaXJzdCBlbmFibGVkIHNlZ21lbnRcbiAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuc2VnbWVudHMuZmluZCgob3B0aW9uKSA9PiBvcHRpb24udmFsdWUgPT09IHRoaXMudmFsdWUpO1xuICAgIGlmIChzZWxlY3RlZD8uZGlzYWJsZWQpIHtcbiAgICAgIGNvbnN0IGZpcnN0RW5hYmxlZFZhbHVlID0gZW5hYmxlZFswXS52YWx1ZTtcbiAgICAgIC8vIE9ubHkgZW1pdCBpZiB2YWx1ZSBhY3R1YWxseSBjaGFuZ2VkXG4gICAgICBpZiAodGhpcy52YWx1ZSAhPT0gZmlyc3RFbmFibGVkVmFsdWUpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IGZpcnN0RW5hYmxlZFZhbHVlO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgICB9XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VnbWVudHMuZmluZEluZGV4KChvcHRpb24pID0+IG9wdGlvbi52YWx1ZSA9PT0gZmlyc3RFbmFibGVkVmFsdWUpO1xuICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgdGhpcy5mb2N1c0J1dHRvbihpbmRleCk7XG4gICAgICAgIHRoaXMudXBkYXRlSW5kaWNhdG9yKGluZGV4KTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgdGhpcy51cGRhdGVJbmRpY2F0b3IoKTtcbiAgfVxuXG4gIHByaXZhdGUgZm9jdXNCdXR0b24oaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgIGNvbnN0IGJ1dHRvbiA9IHRoaXMuc2VnbWVudEJ1dHRvbnM/LmdldChpbmRleCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICBidXR0b24/LmZvY3VzKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUluZGljYXRvcihwcmVmZXJyZWRJbmRleD86IG51bWJlcik6IHZvaWQge1xuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuc2VnbWVudENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudDtcbiAgICAgIGNvbnN0IGJ1dHRvbnMgPSB0aGlzLnNlZ21lbnRCdXR0b25zPy50b0FycmF5KCkgPz8gW107XG4gICAgICBpZiAoIWNvbnRhaW5lciB8fCBidXR0b25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLmluZGljYXRvclZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pbmRpY2F0b3JTdHlsZSA9IHt9O1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGluZGV4ID0gcHJlZmVycmVkSW5kZXggPz8gYnV0dG9ucy5maW5kSW5kZXgoKGJ1dHRvbiwgaWR4KSA9PiB0aGlzLnNlZ21lbnRzW2lkeF0/LnZhbHVlID09PSB0aGlzLnZhbHVlKTtcbiAgICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgICAgdGhpcy5pbmRpY2F0b3JWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaW5kaWNhdG9yU3R5bGUgPSB7fTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBidXR0b25FbCA9IGJ1dHRvbnNbaW5kZXhdPy5uYXRpdmVFbGVtZW50O1xuICAgICAgaWYgKCFidXR0b25FbCkge1xuICAgICAgICB0aGlzLmluZGljYXRvclZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pbmRpY2F0b3JTdHlsZSA9IHt9O1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBidXR0b25SZWN0ID0gYnV0dG9uRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBvZmZzZXRMZWZ0ID0gYnV0dG9uRWwub2Zmc2V0TGVmdDtcbiAgICAgIGNvbnN0IG9mZnNldFRvcCA9IGJ1dHRvbkVsLm9mZnNldFRvcDtcbiAgICAgIGNvbnN0IHdpZHRoID0gYnV0dG9uRWwub2Zmc2V0V2lkdGg7XG4gICAgICBjb25zdCBoZWlnaHQgPSBidXR0b25FbC5vZmZzZXRIZWlnaHQ7XG5cbiAgICAgIGNvbnN0IGlzRGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkIHx8IHRoaXMuc2VnbWVudHNbaW5kZXhdPy5kaXNhYmxlZDtcbiAgICAgIHRoaXMuaW5kaWNhdG9yU3R5bGUgPSB7XG4gICAgICAgIHdpZHRoOiBgJHt3aWR0aH1weGAsXG4gICAgICAgIGhlaWdodDogYCR7aGVpZ2h0fXB4YCxcbiAgICAgICAgbGVmdDogYCR7b2Zmc2V0TGVmdH1weGAsXG4gICAgICAgIHRvcDogYCR7b2Zmc2V0VG9wfXB4YCxcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBpc0Rpc2FibGVkID8gJyM5QkEwRjQnIDogJyMzRjQzRUUnLFxuICAgICAgfTtcbiAgICAgIHRoaXMuaW5kaWNhdG9yVmlzaWJsZSA9IHRydWU7XG4gICAgfSk7XG4gIH1cblxuICBnZXQgaXNJbmRpY2F0b3JWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmluZGljYXRvclZpc2libGU7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjcWEtdWktcm9vdFwiIHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrO1wiPlxuICA8ZGl2XG4gICAgI3NlZ21lbnRDb250YWluZXJcbiAgICBjbGFzcz1cImNxYS1yZWxhdGl2ZSBjcWEtaW5saW5lLWZsZXggY3FhLWZsZXgtcm93IGNxYS1pdGVtcy1zdGFydCBjcWEtcC1bMy41cHhdIGNxYS1oLVszMS41cHhdIGNxYS1iZy1zdXJmYWNlLWxpZ2h0IGNxYS1yb3VuZGVkLVs4cHhdXCJcbiAgICByb2xlPVwidGFibGlzdFwiXG4gICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBudWxsXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiY3FhLWFic29sdXRlIGNxYS1yb3VuZGVkLVs4cHhdIGNxYS10cmFuc2l0aW9uLWFsbCBjcWEtZHVyYXRpb24tMjAwIGNxYS1lYXNlLWluLW91dCBjcWEtcG9pbnRlci1ldmVudHMtbm9uZVwiXG4gICAgICBbY2xhc3MuY3FhLW9wYWNpdHktMF09XCIhaXNJbmRpY2F0b3JWaXNpYmxlXCIgW25nU3R5bGVdPVwiaW5kaWNhdG9yU3R5bGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2Rpdj5cblxuICAgIDxidXR0b24gKm5nRm9yPVwibGV0IHNlZ21lbnQgb2Ygc2VnbWVudHM7IGluZGV4IGFzIGluZGV4OyB0cmFja0J5OiB0cmFja0J5VmFsdWVcIiAjc2VnbWVudEJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIHJvbGU9XCJ0YWJcIlxuICAgICAgY2xhc3M9XCJjcWEtcmVsYXRpdmUgY3FhLXotMTAgY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtaXRlbXMtY2VudGVyIGNxYS1weC1bMTRweF0gY3FhLXB5LVszLjVweF0gY3FhLWgtWzI1cHhdIGNxYS1yb3VuZGVkLVs4cHhdIGNxYS10cmFuc2l0aW9uLWFsbCBjcWEtZHVyYXRpb24tMjAwIGNxYS1lYXNlLWluLW91dCBjcWEtd2hpdGVzcGFjZS1ub3dyYXAgY3FhLXRleHQtY2VudGVyIGZvY3VzOmNxYS1vdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpjcWEtb3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6Y3FhLXJpbmctMCBmb2N1cy12aXNpYmxlOmNxYS1yaW5nLW9mZnNldC0wIGNxYS1mbGV4LW5vbmVcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnY3FhLXRleHQtd2hpdGUgY3FhLWZvbnQtbWVkaXVtJzogaXNTZWxlY3RlZChzZWdtZW50KSxcbiAgICAgICAgJ2NxYS10ZXh0LW11dGVkJzogIWlzU2VsZWN0ZWQoc2VnbWVudCkgJiYgIShkaXNhYmxlZCB8fCBzZWdtZW50LmRpc2FibGVkKSxcbiAgICAgICAgJ2NxYS1jdXJzb3Itbm90LWFsbG93ZWQnOiBkaXNhYmxlZCB8fCBzZWdtZW50LmRpc2FibGVkLFxuICAgICAgICAnY3FhLXRleHQtZGlzYWJsZWQnOiAoZGlzYWJsZWQgfHwgc2VnbWVudC5kaXNhYmxlZCkgJiYgIWlzU2VsZWN0ZWQoc2VnbWVudCksXG4gICAgICAgICdjcWEtaG92ZXI6Y3FhLXRleHQtYmxhY2snOiAhaXNTZWxlY3RlZChzZWdtZW50KSAmJiAhZGlzYWJsZWQgJiYgIXNlZ21lbnQuZGlzYWJsZWRcbiAgICAgIH1cIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgc2VnbWVudC5kaXNhYmxlZFwiIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiaXNTZWxlY3RlZChzZWdtZW50KVwiXG4gICAgICBbYXR0ci50YWJpbmRleF09XCIhZGlzYWJsZWQgJiYgIXNlZ21lbnQuZGlzYWJsZWQgPyAoaXNTZWxlY3RlZChzZWdtZW50KSA/IDAgOiAtMSkgOiAtMVwiXG4gICAgICAoY2xpY2spPVwic2VsZWN0KHNlZ21lbnQsIGluZGV4KVwiIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQsIGluZGV4KVwiPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtZ2FwLTEgY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLWgtWzE4cHhdIGNxYS1mb250LVsnSW50ZXInXSBjcWEtZm9udC1ub3JtYWwgY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLVsxMnB4XSBjcWEtdGV4dC1jZW50ZXIgY3FhLWFsaWduLW1pZGRsZVwiPlxuICAgICAgICBcbiAgICAgIDxtYXQtaWNvbiAqbmdJZj1cInNlZ21lbnQ/Lmljb25cIiBjbGFzcz1cIiFjcWEtdy1bMTJweF0gIWNxYS1oLVsxMnB4XSAhY3FhLXRleHQtWzEycHhdXCIgPlxuICAgICAgICB7eyBzZWdtZW50Py5pY29uIH19XG4gICAgICA8L21hdC1pY29uPlxuXG4gICAgICB7eyBzZWdtZW50LmxhYmVsIH19XG4gICAgPC9zcGFuPlxuICA8L2J1dHRvbj5cbjwvZGl2PiJdfQ==
|
|
231
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudC1jb250cm9sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VnbWVudC1jb250cm9sL3NlZ21lbnQtY29udHJvbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlZ21lbnQtY29udHJvbC9zZWdtZW50LWNvbnRyb2wuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFHTixTQUFTLEVBQ1QsWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDOzs7O0FBZ0J2QixNQUFNLE9BQU8sdUJBQXVCO0lBTnBDO1FBUVcsYUFBUSxHQUFvQjtZQUNuQyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRTtZQUM1QyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRTtTQUM3QyxDQUFDO1FBT08sYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVoQixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFLbkQsbUJBQWMsR0FBMkIsRUFBRSxDQUFDO1FBQzVDLHFCQUFnQixHQUFHLEtBQUssQ0FBQztLQWlPMUI7SUE5TkMsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMzQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztTQUM1QjtJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztRQUM1RixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQWMsRUFBRSxNQUFxQjtRQUNoRCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUFxQjtRQUM5QixPQUFPLE1BQU0sQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNyQyxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQXFCLEVBQUUsS0FBYTtRQUN6QyxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRTtZQUNwQyxPQUFPO1NBQ1I7UUFFRCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQy9CLElBQUksU0FBUyxLQUFLLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7WUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDbEM7UUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQW9CLEVBQUUsWUFBb0I7UUFDbEQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLE9BQU87U0FDUjtRQUVELFFBQVEsS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUNqQixLQUFLLFlBQVksQ0FBQztZQUNsQixLQUFLLFdBQVc7Z0JBQ2QsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztnQkFDcEMsTUFBTTtZQUNSLEtBQUssV0FBVyxDQUFDO1lBQ2pCLEtBQUssU0FBUztnQkFDWixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7Z0JBQ3JDLE1BQU07WUFDUixLQUFLLE1BQU07Z0JBQ1QsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFDMUIsTUFBTTtZQUNSLEtBQUssS0FBSztnQkFDUixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUN6QixNQUFNO1lBQ1IsS0FBSyxHQUFHLENBQUM7WUFDVCxLQUFLLE9BQU87Z0JBQ1YsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7Z0JBQ3ZELE1BQU07WUFDUjtnQkFDRSxNQUFNO1NBQ1Q7SUFDSCxDQUFDO0lBRU8sYUFBYSxDQUFDLElBQVksRUFBRSxVQUFrQjtRQUNwRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNoRCxJQUFJLGNBQWMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQy9CLE9BQU87U0FDUjtRQUVELE1BQU0sbUJBQW1CLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMvRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDNUQsTUFBTSxTQUFTLEdBQUcsbUJBQW1CLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDO1FBQ2pGLE1BQU0sWUFBWSxHQUFHLENBQUMsU0FBUyxHQUFHLElBQUksR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQztRQUN4RixNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFakQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFTyxrQkFBa0I7UUFDeEIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDaEQsSUFBSSxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUM3QixNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN4QjtJQUNILENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDaEQsSUFBSSxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUM3QixNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQztJQUVPLGlCQUFpQjtRQUN2QixPQUFPLElBQUksQ0FBQyxRQUFRO2FBQ2pCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQzthQUMzQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7YUFDeEMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVPLGdCQUFnQixDQUFDLGNBQXdCO1FBQy9DLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckcsSUFBSSxPQUFPLElBQUksQ0FBQyxFQUFFO1lBQ2hCLE9BQU8sY0FBYyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN4QztRQUVELE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVEOzs7T0FHRztJQUNLLG1CQUFtQjtRQUN6QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkUsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN4QixJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztZQUN2QixPQUFPO1NBQ1I7UUFFRCwyRkFBMkY7UUFDM0YsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDL0UsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQzNDLHNDQUFzQztZQUN0QyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssaUJBQWlCLEVBQUU7Z0JBQ3BDLElBQUksQ0FBQyxLQUFLLEdBQUcsaUJBQWlCLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNuQztZQUNELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxLQUFLLGlCQUFpQixDQUFDLENBQUM7WUFDdEYsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFO2dCQUNkLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDN0I7WUFDRCxPQUFPO1NBQ1I7UUFFRCxxRUFBcUU7UUFDckUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdFLElBQUksUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN0QixNQUFNLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDM0Msc0NBQXNDO1lBQ3RDLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxpQkFBaUIsRUFBRTtnQkFDcEMsSUFBSSxDQUFDLEtBQUssR0FBRyxpQkFBaUIsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ25DO1lBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEtBQUssaUJBQWlCLENBQUMsQ0FBQztZQUN0RixJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUM3QjtZQUNELE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU8sV0FBVyxDQUFDLEtBQWE7UUFDL0IsY0FBYyxDQUFDLEdBQUcsRUFBRTtZQUNsQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxhQUFhLENBQUM7WUFDOUQsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGVBQWUsQ0FBQyxjQUF1QjtRQUM3QyxjQUFjLENBQUMsR0FBRyxFQUFFO1lBQ2xCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxhQUFhLENBQUM7WUFDdkQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDckQsSUFBSSxDQUFDLFNBQVMsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDdEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztnQkFDOUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7Z0JBQ3pCLE9BQU87YUFDUjtZQUVELE1BQU0sS0FBSyxHQUFHLGNBQWMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdHLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUNoQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO2dCQUM5QixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztnQkFDekIsT0FBTzthQUNSO1lBRUQsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLGFBQWEsQ0FBQztZQUMvQyxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNiLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO2dCQUN6QixPQUFPO2FBQ1I7WUFFRCxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUN4RCxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUNwRCxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDO1lBQ3ZDLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7WUFDckMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQztZQUNuQyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDO1lBRXJDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxRQUFRLENBQUM7WUFDbkUsSUFBSSxDQUFDLGNBQWMsR0FBRztnQkFDcEIsS0FBSyxFQUFFLEdBQUcsS0FBSyxJQUFJO2dCQUNuQixNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUk7Z0JBQ3JCLElBQUksRUFBRSxHQUFHLFVBQVUsSUFBSTtnQkFDdkIsR0FBRyxFQUFFLEdBQUcsU0FBUyxJQUFJO2dCQUNyQixlQUFlLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVM7YUFDcEQsQ0FBQztZQUNGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQzs7b0hBcFBVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLHFiQzdCcEMsZ29FQWlDTTsyRkRKTyx1QkFBdUI7a0JBTm5DLFNBQVM7K0JBQ0UscUJBQXFCLFFBR3pCLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRTs4QkFJckIsUUFBUTtzQkFBaEIsS0FBSztnQkFTRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUV3QixjQUFjO3NCQUE1QyxZQUFZO3VCQUFDLGVBQWU7Z0JBQ0UsZ0JBQWdCO3NCQUE5QyxTQUFTO3VCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxudHlwZSBTZWdtZW50T3B0aW9uID0ge1xuICBsYWJlbDogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGljb24/OiBzdHJpbmc7XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtc2VnbWVudC1jb250cm9sJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlZ21lbnQtY29udHJvbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW10sXG4gIGhvc3Q6IHsgY2xhc3M6ICdjcWEtdWktcm9vdCcgfVxufSlcbmV4cG9ydCBjbGFzcyBTZWdtZW50Q29udHJvbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoKSBzZWdtZW50czogU2VnbWVudE9wdGlvbltdID0gW1xuICAgIHsgbGFiZWw6ICdUYWIgR3JvdXAnLCB2YWx1ZTogJ3RhYi1ncm91cC0xJyB9LFxuICAgIHsgbGFiZWw6ICdUYWIgR3JvdXAnLCB2YWx1ZTogJ3RhYi1ncm91cC0yJyB9LFxuICBdO1xuXG4gIC8qKlxuICAgKiBUaGUgY3VycmVudGx5IHNlbGVjdGVkIHNlZ21lbnQgdmFsdWUuXG4gICAqIElmIG5vdCBwcm92aWRlZCwgZGVmYXVsdHMgdG8gdGhlIGZpcnN0IGVuYWJsZWQgc2VnbWVudC5cbiAgICovXG4gIEBJbnB1dCgpIHZhbHVlPzogc3RyaW5nO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIEBWaWV3Q2hpbGRyZW4oJ3NlZ21lbnRCdXR0b24nKSBzZWdtZW50QnV0dG9ucyE6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50Pj47XG4gIEBWaWV3Q2hpbGQoJ3NlZ21lbnRDb250YWluZXInKSBzZWdtZW50Q29udGFpbmVyPzogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgaW5kaWNhdG9yU3R5bGU6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgaW5kaWNhdG9yVmlzaWJsZSA9IGZhbHNlO1xuICBwcml2YXRlIGJ1dHRvbkNoYW5nZXNTdWI/OiBTdWJzY3JpcHRpb247XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydzZWdtZW50cyddIHx8IGNoYW5nZXNbJ3ZhbHVlJ10pIHtcbiAgICAgIHRoaXMuZW5zdXJlU2VsZWN0ZWRWYWx1ZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmJ1dHRvbkNoYW5nZXNTdWIgPSB0aGlzLnNlZ21lbnRCdXR0b25zLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlSW5kaWNhdG9yKCkpO1xuICAgIHRoaXMuZW5zdXJlU2VsZWN0ZWRWYWx1ZSgpO1xuICAgIHRoaXMudXBkYXRlSW5kaWNhdG9yKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmJ1dHRvbkNoYW5nZXNTdWI/LnVuc3Vic2NyaWJlPy4oKTtcbiAgfVxuXG4gIHRyYWNrQnlWYWx1ZShfaW5kZXg6IG51bWJlciwgb3B0aW9uOiBTZWdtZW50T3B0aW9uKTogc3RyaW5nIHtcbiAgICByZXR1cm4gb3B0aW9uLnZhbHVlO1xuICB9XG5cbiAgaXNTZWxlY3RlZChvcHRpb246IFNlZ21lbnRPcHRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gb3B0aW9uLnZhbHVlID09PSB0aGlzLnZhbHVlO1xuICB9XG5cbiAgc2VsZWN0KG9wdGlvbjogU2VnbWVudE9wdGlvbiwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IG9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG5leHRWYWx1ZSA9IG9wdGlvbi52YWx1ZTtcbiAgICBpZiAobmV4dFZhbHVlICE9PSB0aGlzLnZhbHVlKSB7XG4gICAgICB0aGlzLnZhbHVlID0gbmV4dFZhbHVlO1xuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KG5leHRWYWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5mb2N1c0J1dHRvbihpbmRleCk7XG4gICAgdGhpcy51cGRhdGVJbmRpY2F0b3IoKTtcbiAgfVxuXG4gIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCwgY3VycmVudEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcbiAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMubW92ZVNlbGVjdGlvbigxLCBjdXJyZW50SW5kZXgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5tb3ZlU2VsZWN0aW9uKC0xLCBjdXJyZW50SW5kZXgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0hvbWUnOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLnNlbGVjdEZpcnN0RW5hYmxlZCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0VuZCc6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuc2VsZWN0TGFzdEVuYWJsZWQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICcgJzpcbiAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5zZWxlY3QodGhpcy5zZWdtZW50c1tjdXJyZW50SW5kZXhdLCBjdXJyZW50SW5kZXgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbW92ZVNlbGVjdGlvbihzdGVwOiAxIHwgLTEsIHN0YXJ0SW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IGVuYWJsZWRJbmRleGVzID0gdGhpcy5nZXRFbmFibGVkSW5kZXhlcygpO1xuICAgIGlmIChlbmFibGVkSW5kZXhlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50RW5hYmxlZEluZGV4ID0gZW5hYmxlZEluZGV4ZXMuaW5kZXhPZihzdGFydEluZGV4KTtcbiAgICBjb25zdCBmYWxsYmFja0luZGV4ID0gdGhpcy5nZXRTZWxlY3RlZEluZGV4KGVuYWJsZWRJbmRleGVzKTtcbiAgICBjb25zdCBiYXNlSW5kZXggPSBjdXJyZW50RW5hYmxlZEluZGV4ID49IDAgPyBjdXJyZW50RW5hYmxlZEluZGV4IDogZmFsbGJhY2tJbmRleDtcbiAgICBjb25zdCBuZXh0UG9zaXRpb24gPSAoYmFzZUluZGV4ICsgc3RlcCArIGVuYWJsZWRJbmRleGVzLmxlbmd0aCkgJSBlbmFibGVkSW5kZXhlcy5sZW5ndGg7XG4gICAgY29uc3QgdGFyZ2V0SW5kZXggPSBlbmFibGVkSW5kZXhlc1tuZXh0UG9zaXRpb25dO1xuXG4gICAgdGhpcy5zZWxlY3QodGhpcy5zZWdtZW50c1t0YXJnZXRJbmRleF0sIHRhcmdldEluZGV4KTtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0Rmlyc3RFbmFibGVkKCk6IHZvaWQge1xuICAgIGNvbnN0IGVuYWJsZWRJbmRleGVzID0gdGhpcy5nZXRFbmFibGVkSW5kZXhlcygpO1xuICAgIGlmIChlbmFibGVkSW5kZXhlcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBpbmRleCA9IGVuYWJsZWRJbmRleGVzWzBdO1xuICAgICAgdGhpcy5zZWxlY3QodGhpcy5zZWdtZW50c1tpbmRleF0sIGluZGV4KTtcbiAgICAgIHRoaXMudXBkYXRlSW5kaWNhdG9yKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RMYXN0RW5hYmxlZCgpOiB2b2lkIHtcbiAgICBjb25zdCBlbmFibGVkSW5kZXhlcyA9IHRoaXMuZ2V0RW5hYmxlZEluZGV4ZXMoKTtcbiAgICBpZiAoZW5hYmxlZEluZGV4ZXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgaW5kZXggPSBlbmFibGVkSW5kZXhlc1tlbmFibGVkSW5kZXhlcy5sZW5ndGggLSAxXTtcbiAgICAgIHRoaXMuc2VsZWN0KHRoaXMuc2VnbWVudHNbaW5kZXhdLCBpbmRleCk7XG4gICAgICB0aGlzLnVwZGF0ZUluZGljYXRvcigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0RW5hYmxlZEluZGV4ZXMoKTogbnVtYmVyW10ge1xuICAgIHJldHVybiB0aGlzLnNlZ21lbnRzXG4gICAgICAubWFwKChvcHRpb24sIGluZGV4KSA9PiAoeyBvcHRpb24sIGluZGV4IH0pKVxuICAgICAgLmZpbHRlcigoeyBvcHRpb24gfSkgPT4gIW9wdGlvbi5kaXNhYmxlZClcbiAgICAgIC5tYXAoKHsgaW5kZXggfSkgPT4gaW5kZXgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTZWxlY3RlZEluZGV4KGVuYWJsZWRJbmRleGVzOiBudW1iZXJbXSk6IG51bWJlciB7XG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuc2VnbWVudHMuZmluZEluZGV4KChvcHRpb24pID0+IG9wdGlvbi52YWx1ZSA9PT0gdGhpcy52YWx1ZSAmJiAhb3B0aW9uLmRpc2FibGVkKTtcbiAgICBpZiAoY3VycmVudCA+PSAwKSB7XG4gICAgICByZXR1cm4gZW5hYmxlZEluZGV4ZXMuaW5kZXhPZihjdXJyZW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbnN1cmVzIGEgdmFsaWQgdmFsdWUgaXMgc2VsZWN0ZWQuXG4gICAqIElmIG5vIHZhbHVlIGlzIHByb3ZpZGVkIG9yIHRoZSB2YWx1ZSBpcyBpbnZhbGlkLCBkZWZhdWx0cyB0byB0aGUgZmlyc3QgZW5hYmxlZCBzZWdtZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBlbnN1cmVTZWxlY3RlZFZhbHVlKCk6IHZvaWQge1xuICAgIGNvbnN0IGVuYWJsZWQgPSB0aGlzLnNlZ21lbnRzLmZpbHRlcigob3B0aW9uKSA9PiAhb3B0aW9uLmRpc2FibGVkKTtcbiAgICBpZiAoZW5hYmxlZC5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gSWYgbm8gdmFsdWUgaXMgc2V0LCBvciB2YWx1ZSBkb2Vzbid0IGV4aXN0IGluIHNlZ21lbnRzLCBkZWZhdWx0IHRvIGZpcnN0IGVuYWJsZWQgc2VnbWVudFxuICAgIGlmICghdGhpcy52YWx1ZSB8fCAhdGhpcy5zZWdtZW50cy5zb21lKChvcHRpb24pID0+IG9wdGlvbi52YWx1ZSA9PT0gdGhpcy52YWx1ZSkpIHtcbiAgICAgIGNvbnN0IGZpcnN0RW5hYmxlZFZhbHVlID0gZW5hYmxlZFswXS52YWx1ZTtcbiAgICAgIC8vIE9ubHkgZW1pdCBpZiB2YWx1ZSBhY3R1YWxseSBjaGFuZ2VkXG4gICAgICBpZiAodGhpcy52YWx1ZSAhPT0gZmlyc3RFbmFibGVkVmFsdWUpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IGZpcnN0RW5hYmxlZFZhbHVlO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgICB9XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VnbWVudHMuZmluZEluZGV4KChvcHRpb24pID0+IG9wdGlvbi52YWx1ZSA9PT0gZmlyc3RFbmFibGVkVmFsdWUpO1xuICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgdGhpcy5mb2N1c0J1dHRvbihpbmRleCk7XG4gICAgICAgIHRoaXMudXBkYXRlSW5kaWNhdG9yKGluZGV4KTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgc2VsZWN0ZWQgdmFsdWUgaXMgZGlzYWJsZWQsIHN3aXRjaCB0byBmaXJzdCBlbmFibGVkIHNlZ21lbnRcbiAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuc2VnbWVudHMuZmluZCgob3B0aW9uKSA9PiBvcHRpb24udmFsdWUgPT09IHRoaXMudmFsdWUpO1xuICAgIGlmIChzZWxlY3RlZD8uZGlzYWJsZWQpIHtcbiAgICAgIGNvbnN0IGZpcnN0RW5hYmxlZFZhbHVlID0gZW5hYmxlZFswXS52YWx1ZTtcbiAgICAgIC8vIE9ubHkgZW1pdCBpZiB2YWx1ZSBhY3R1YWxseSBjaGFuZ2VkXG4gICAgICBpZiAodGhpcy52YWx1ZSAhPT0gZmlyc3RFbmFibGVkVmFsdWUpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IGZpcnN0RW5hYmxlZFZhbHVlO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgICB9XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VnbWVudHMuZmluZEluZGV4KChvcHRpb24pID0+IG9wdGlvbi52YWx1ZSA9PT0gZmlyc3RFbmFibGVkVmFsdWUpO1xuICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgdGhpcy5mb2N1c0J1dHRvbihpbmRleCk7XG4gICAgICAgIHRoaXMudXBkYXRlSW5kaWNhdG9yKGluZGV4KTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgdGhpcy51cGRhdGVJbmRpY2F0b3IoKTtcbiAgfVxuXG4gIHByaXZhdGUgZm9jdXNCdXR0b24oaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgIGNvbnN0IGJ1dHRvbiA9IHRoaXMuc2VnbWVudEJ1dHRvbnM/LmdldChpbmRleCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICBidXR0b24/LmZvY3VzKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUluZGljYXRvcihwcmVmZXJyZWRJbmRleD86IG51bWJlcik6IHZvaWQge1xuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuc2VnbWVudENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudDtcbiAgICAgIGNvbnN0IGJ1dHRvbnMgPSB0aGlzLnNlZ21lbnRCdXR0b25zPy50b0FycmF5KCkgPz8gW107XG4gICAgICBpZiAoIWNvbnRhaW5lciB8fCBidXR0b25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLmluZGljYXRvclZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pbmRpY2F0b3JTdHlsZSA9IHt9O1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGluZGV4ID0gcHJlZmVycmVkSW5kZXggPz8gYnV0dG9ucy5maW5kSW5kZXgoKGJ1dHRvbiwgaWR4KSA9PiB0aGlzLnNlZ21lbnRzW2lkeF0/LnZhbHVlID09PSB0aGlzLnZhbHVlKTtcbiAgICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgICAgdGhpcy5pbmRpY2F0b3JWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaW5kaWNhdG9yU3R5bGUgPSB7fTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBidXR0b25FbCA9IGJ1dHRvbnNbaW5kZXhdPy5uYXRpdmVFbGVtZW50O1xuICAgICAgaWYgKCFidXR0b25FbCkge1xuICAgICAgICB0aGlzLmluZGljYXRvclZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pbmRpY2F0b3JTdHlsZSA9IHt9O1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBidXR0b25SZWN0ID0gYnV0dG9uRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBvZmZzZXRMZWZ0ID0gYnV0dG9uRWwub2Zmc2V0TGVmdDtcbiAgICAgIGNvbnN0IG9mZnNldFRvcCA9IGJ1dHRvbkVsLm9mZnNldFRvcDtcbiAgICAgIGNvbnN0IHdpZHRoID0gYnV0dG9uRWwub2Zmc2V0V2lkdGg7XG4gICAgICBjb25zdCBoZWlnaHQgPSBidXR0b25FbC5vZmZzZXRIZWlnaHQ7XG5cbiAgICAgIGNvbnN0IGlzRGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkIHx8IHRoaXMuc2VnbWVudHNbaW5kZXhdPy5kaXNhYmxlZDtcbiAgICAgIHRoaXMuaW5kaWNhdG9yU3R5bGUgPSB7XG4gICAgICAgIHdpZHRoOiBgJHt3aWR0aH1weGAsXG4gICAgICAgIGhlaWdodDogYCR7aGVpZ2h0fXB4YCxcbiAgICAgICAgbGVmdDogYCR7b2Zmc2V0TGVmdH1weGAsXG4gICAgICAgIHRvcDogYCR7b2Zmc2V0VG9wfXB4YCxcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBpc0Rpc2FibGVkID8gJyM5QkEwRjQnIDogJyMzRjQzRUUnLFxuICAgICAgfTtcbiAgICAgIHRoaXMuaW5kaWNhdG9yVmlzaWJsZSA9IHRydWU7XG4gICAgfSk7XG4gIH1cblxuICBnZXQgaXNJbmRpY2F0b3JWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmluZGljYXRvclZpc2libGU7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjcWEtdWktcm9vdFwiIHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrO1wiPlxuICA8ZGl2XG4gICAgI3NlZ21lbnRDb250YWluZXJcbiAgICBjbGFzcz1cImNxYS1yZWxhdGl2ZSBjcWEtaW5saW5lLWZsZXggY3FhLWZsZXgtcm93IGNxYS1pdGVtcy1zdGFydCBjcWEtcC1bMy41cHhdIGNxYS1oLVszMS41cHhdIGNxYS1iZy1zdXJmYWNlLWxpZ2h0IGNxYS1yb3VuZGVkLVs4cHhdXCJcbiAgICByb2xlPVwidGFibGlzdFwiXG4gICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBudWxsXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiY3FhLWFic29sdXRlIGNxYS1yb3VuZGVkLVs4cHhdIGNxYS10cmFuc2l0aW9uLWFsbCBjcWEtZHVyYXRpb24tMjAwIGNxYS1lYXNlLWluLW91dCBjcWEtcG9pbnRlci1ldmVudHMtbm9uZVwiXG4gICAgICBbY2xhc3MuY3FhLW9wYWNpdHktMF09XCIhaXNJbmRpY2F0b3JWaXNpYmxlXCIgW25nU3R5bGVdPVwiaW5kaWNhdG9yU3R5bGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2Rpdj5cblxuICAgIDxidXR0b24gKm5nRm9yPVwibGV0IHNlZ21lbnQgb2Ygc2VnbWVudHM7IGluZGV4IGFzIGluZGV4OyB0cmFja0J5OiB0cmFja0J5VmFsdWVcIiAjc2VnbWVudEJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIHJvbGU9XCJ0YWJcIlxuICAgICAgY2xhc3M9XCJjcWEtcmVsYXRpdmUgY3FhLXotMCBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWp1c3RpZnktY2VudGVyIGNxYS1pdGVtcy1jZW50ZXIgY3FhLXB4LVsxNHB4XSBjcWEtcHktWzMuNXB4XSBjcWEtaC1bMjVweF0gY3FhLXJvdW5kZWQtWzhweF0gY3FhLXRyYW5zaXRpb24tYWxsIGNxYS1kdXJhdGlvbi0yMDAgY3FhLWVhc2UtaW4tb3V0IGNxYS13aGl0ZXNwYWNlLW5vd3JhcCBjcWEtdGV4dC1jZW50ZXIgZm9jdXM6Y3FhLW91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOmNxYS1vdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpjcWEtcmluZy0wIGZvY3VzLXZpc2libGU6Y3FhLXJpbmctb2Zmc2V0LTAgY3FhLWZsZXgtbm9uZVwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdjcWEtdGV4dC13aGl0ZSBjcWEtZm9udC1tZWRpdW0nOiBpc1NlbGVjdGVkKHNlZ21lbnQpLFxuICAgICAgICAnY3FhLXRleHQtbXV0ZWQnOiAhaXNTZWxlY3RlZChzZWdtZW50KSAmJiAhKGRpc2FibGVkIHx8IHNlZ21lbnQuZGlzYWJsZWQpLFxuICAgICAgICAnY3FhLWN1cnNvci1ub3QtYWxsb3dlZCc6IGRpc2FibGVkIHx8IHNlZ21lbnQuZGlzYWJsZWQsXG4gICAgICAgICdjcWEtdGV4dC1kaXNhYmxlZCc6IChkaXNhYmxlZCB8fCBzZWdtZW50LmRpc2FibGVkKSAmJiAhaXNTZWxlY3RlZChzZWdtZW50KSxcbiAgICAgICAgJ2NxYS1ob3ZlcjpjcWEtdGV4dC1ibGFjayc6ICFpc1NlbGVjdGVkKHNlZ21lbnQpICYmICFkaXNhYmxlZCAmJiAhc2VnbWVudC5kaXNhYmxlZFxuICAgICAgfVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBzZWdtZW50LmRpc2FibGVkXCIgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJpc1NlbGVjdGVkKHNlZ21lbnQpXCJcbiAgICAgIFthdHRyLnRhYmluZGV4XT1cIiFkaXNhYmxlZCAmJiAhc2VnbWVudC5kaXNhYmxlZCA/IChpc1NlbGVjdGVkKHNlZ21lbnQpID8gMCA6IC0xKSA6IC0xXCJcbiAgICAgIChjbGljayk9XCJzZWxlY3Qoc2VnbWVudCwgaW5kZXgpXCIgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudCwgaW5kZXgpXCI+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1nYXAtMSBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtaC1bMThweF0gY3FhLWZvbnQtWydJbnRlciddIGNxYS1mb250LW5vcm1hbCBjcWEtdGV4dC1bMTJweF0gY3FhLWxlYWRpbmctWzEycHhdIGNxYS10ZXh0LWNlbnRlciBjcWEtYWxpZ24tbWlkZGxlXCI+XG4gICAgICAgIFxuICAgICAgPG1hdC1pY29uICpuZ0lmPVwic2VnbWVudD8uaWNvblwiIGNsYXNzPVwiIWNxYS13LVsxMnB4XSAhY3FhLWgtWzEycHhdICFjcWEtdGV4dC1bMTJweF1cIiA+XG4gICAgICAgIHt7IHNlZ21lbnQ/Lmljb24gfX1cbiAgICAgIDwvbWF0LWljb24+XG5cbiAgICAgIHt7IHNlZ21lbnQubGFiZWwgfX1cbiAgICA8L3NwYW4+XG4gIDwvYnV0dG9uPlxuPC9kaXY+Il19
|