@cqa-lib/cqa-ui 1.1.90 → 1.1.91

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.
@@ -71,10 +71,10 @@ export class VisualComparisonComponent {
71
71
  }
72
72
  }
73
73
  VisualComparisonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: VisualComparisonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
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
+ 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"] }] });
75
75
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: VisualComparisonComponent, decorators: [{
76
76
  type: Component,
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
+ 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"] }]
78
78
  }], propDecorators: { screenshots: [{
79
79
  type: Input
80
80
  }], logs: [{
@@ -101,4 +101,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
101
101
  type: ViewChild,
102
102
  args: ['fileInput']
103
103
  }] } });
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
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzdWFsLWNvbXBhcmlzb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9leGVjdXRpb24tc2NyZWVuL3Zpc3VhbC1jb21wYXJpc29uL3Zpc3VhbC1jb21wYXJpc29uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZXhlY3V0aW9uLXNjcmVlbi92aXN1YWwtY29tcGFyaXNvbi92aXN1YWwtY29tcGFyaXNvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBYyxNQUFNLGVBQWUsQ0FBQzs7OztBQW9COUYsTUFBTSxPQUFPLHlCQUF5QjtJQU50QztRQVNXLHFCQUFnQixHQUFhLElBQUksQ0FBQztRQUNsQyx3QkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDekIsNEJBQXVCLEdBQUcsRUFBRSxDQUFDO1FBQzdCLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFHZCx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBNEIsQ0FBQztRQUNuRSxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBQ3pELFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ25DLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUlsRCxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixxQkFBZ0IsR0FBa0IsVUFBVSxDQUFDO0tBZ0U5QztJQTlEQyxJQUFJLHVCQUF1QjtRQUN6QixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQztJQUNyQyxDQUFDO0lBRUQscUJBQXFCO1FBQ25CLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUU7WUFDN0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5Q0FBeUMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2pGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7Z0JBQzVCLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7Z0JBQ3ZDLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU87YUFDckMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBWTtRQUN6QixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBMEIsQ0FBQztRQUMvQyxJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3pDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7Z0JBQ3ZCLElBQUksRUFBRSxJQUFJO2dCQUNWLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7YUFDeEMsQ0FBQyxDQUFDO1lBQ0gsbUJBQW1CO1lBQ25CLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQztJQUVELFNBQVM7UUFDUCxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYTtRQUN2QixRQUFRLEtBQUssRUFBRTtZQUNiLEtBQUssU0FBUztnQkFDWixPQUFPLHFDQUFxQyxDQUFDO1lBQy9DLEtBQUssT0FBTztnQkFDVixPQUFPLHFDQUFxQyxDQUFDO1lBQy9DO2dCQUNFLE9BQU8scUNBQXFDLENBQUM7U0FDaEQ7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLElBQVk7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQXFCLENBQUM7UUFDOUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDMUIsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDOztzSEFoRlUseUJBQXlCOzBHQUF6Qix5QkFBeUIsK2tCQ3BCdEMsNmdtQkF5SVE7MkZEckhLLHlCQUF5QjtrQkFOckMsU0FBUzsrQkFDRSx1QkFBdUIsUUFHM0IsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFOzhCQUdyQixXQUFXO3NCQUFuQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVJLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFFaUIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2NyZWVuc2hvdERhdGEsIExvZ0VudHJ5IH0gZnJvbSAnLi4vZXhlY3V0aW9uLXN0ZXAubW9kZWxzJztcbmltcG9ydCB7IEltYWdlVmlld1R5cGUgfSBmcm9tICcuLi8uLi92aXN1YWwtZGlmZmVyZW5jZS1tb2RhbC92aXN1YWwtZGlmZmVyZW5jZS1tb2RhbC5jb21wb25lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIG1ha2VDdXJyZW50QmFzZWxpbmVFdmVudCB7XG4gIHRlc3RTdGVwUmVzdWx0SWQ6IHN0cmluZztcbiAgY3VycmVudFVybDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIHVwbG9hZEJhc2VsaW5lRXZlbnQge1xuICBmaWxlOiBGaWxlO1xuICB0ZXN0U3RlcFJlc3VsdElkOiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS12aXN1YWwtY29tcGFyaXNvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi92aXN1YWwtY29tcGFyaXNvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW10sXG4gIGhvc3Q6IHsgY2xhc3M6ICdjcWEtdWktcm9vdCcgfVxufSlcbmV4cG9ydCBjbGFzcyBWaXN1YWxDb21wYXJpc29uQ29tcG9uZW50IHtcbiAgQElucHV0KCkgc2NyZWVuc2hvdHM/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+XG4gICAgICA8IS0tIDxidXR0b24gXG4gICAgICAgIChjbGljayk9XCJvbkFuYWx5emUoKVwiXG4gICAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTIgY3FhLXBsLTIgY3FhLXByLTQgY3FhLXB5LVsycHhdIGNxYS1yb3VuZGVkLWxnIGNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS1iZy10cmFuc3BhcmVudCBjcWEtdGV4dC1bIzIxMjEyMl0gY3FhLWJvcmRlciBjcWEtYm9yZGVyLXNvbGlkIGNxYS1ib3JkZXItWyMyMTIxMjJdXCI+XG4gICAgICAgIDxzdmcgd2lkdGg9XCIxMVwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMSAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNNS41MTE1IDBDNS41NzkzMSAwLjAzMDMxNzggNS42MDgyOCAwLjEwNDM1NCA1LjYzNjA0IDAuMTczMTI4QzUuNjQ5OTYgMC4yMTMyIDUuNjYyNzMgMC4yNTM0ODkgNS42NzUxMyAwLjI5NDFDNS42Nzk5OCAwLjMwOTY2MiA1LjY4NDg0IDAuMzI1MjI0IDUuNjg5ODQgMC4zNDEyNThDNS43NTQzIDAuNTUwNjczIDUuODExNzIgMC43NjIzMzEgNS44Njk0NiAwLjk3Mzg0QzUuODgyNTEgMS4wMjE1OSA1Ljg5NTYzIDEuMDY5MzIgNS45MDg3NCAxLjExNzA0QzUuOTc1NTEgMS4zNjAwNSA2LjA0MTc3IDEuNjAzMiA2LjEwNzY3IDEuODQ2NDZDNi4xMTY5MyAxLjg4MDYyIDYuMTI2MTkgMS45MTQ3OSA2LjEzNTQ1IDEuOTQ4OTVDNi4xNjE1NiAyLjA0NTI3IDYuMTg3NjQgMi4xNDE1OSA2LjIxMzU3IDIuMjM3OTZDNi4yNjgzNyAyLjQ0MTU5IDYuMzI0NjcgMi42NDQ2MyA2LjM4NDYzIDIuODQ2NjhDNi4zODk4NiAyLjg2NDM1IDYuMzk1MSAyLjg4MjAzIDYuNDAwNSAyLjkwMDI0QzYuNTU2MjQgMy40MiA2Ljc3NzAxIDMuODg1ODMgNy4xMzg4OCA0LjI4MjYyQzcuMTQ3ODQgNC4yOTI5NCA3LjE1NjggNC4zMDMyNSA3LjE2NjAzIDQuMzEzODhDNy4zMjA1IDQuNDg1ODMgNy41MTg3MyA0LjYyMzYxIDcuNzE2ODcgNC43MzQ4MUM3LjcyNjk2IDQuNzQwNTcgNy43MzcwNSA0Ljc0NjMyIDcuNzQ3NDUgNC43NTIyNUM4LjMzMDUxIDUuMDc5IDkuMDMxNjIgNS4yMjI3MiA5LjY2MzEzIDUuNDE0QzkuOTM5ODQgNS40OTc4NyAxMC4yMTU3IDUuNTg0MzggMTAuNDkwNSA1LjY3NDdDMTAuNTA5OSA1LjY4MTA1IDEwLjUyOTIgNS42ODczOCAxMC41NDg1IDUuNjkzN0MxMC42MDYyIDUuNzEyNiAxMC42NjM5IDUuNzMxODIgMTAuNzIxNSA1Ljc1MTNDMTAuNzM0OSA1Ljc1NTcyIDEwLjc0ODMgNS43NjAxNSAxMC43NjIxIDUuNzY0NzFDMTAuODQxNSA1Ljc5MjA4IDEwLjkxNzQgNS44MjQzOSAxMC45ODI1IDUuODgwMzZDMTEuMDAyMyA1LjkyNTU4IDExLjAwMjMgNS45MjU1OCAxMC45OTY5IDUuOTcwOEMxMC45MzM2IDYuMDM2NDggMTAuODcwNyA2LjA2NzI4IDEwLjc4NzEgNi4wOTczM0MxMC43NzUxIDYuMTAxNzYgMTAuNzYzMiA2LjEwNjIgMTAuNzUwOCA2LjExMDc3QzEwLjYwOTYgNi4xNjI0NCAxMC40NjY1IDYuMjA3NjYgMTAuMzIzMiA2LjI1MjQ3QzEwLjI5MzggNi4yNjE3NCAxMC4yNjQ0IDYuMjcxMDEgMTAuMjM1IDYuMjgwMjhDMTAuMDUzNyA2LjMzNzM1IDkuODcxOTkgNi4zOTMyIDkuNjkwMTQgNi40NDg0MkM5LjQ1MDYxIDYuNTIxMTcgOS4yMTE0MyA2LjU5NTEyIDguOTcyNDkgNi42Njk5MUM4LjkzMzM0IDYuNjgyMTYgOC44OTQxOCA2LjY5NDM3IDguODU1MDEgNi43MDY1NEM4LjY0OTMxIDYuNzcwNDggOC40NDQ2MiA2LjgzNjcxIDguMjQxNjIgNi45MDk0NEM4LjIyNDc4IDYuOTE1NDUgOC4yMDc5NCA2LjkyMTQ3IDguMTkwNTkgNi45Mjc2NkM3LjUxMDY5IDcuMTc0NDMgNi45OTI0NSA3LjYzNDc4IDYuNjY4MDkgOC4zMDc5OUM2LjQ5MzIxIDguNjg2MzQgNi4zOTAwNiA5LjA5NTQ4IDYuMjg0ODMgOS40OTkyOUM2LjI1NjM3IDkuNjA4MjUgNi4yMjYxMSA5LjcxNjYgNi4xOTU1IDkuODI0OTJDNi4xNzE0OSA5LjkxMDE1IDYuMTQ4MDMgOS45OTU1MSA2LjEyNTE1IDEwLjA4MTFDNi4xMjI0MyAxMC4wOTEzIDYuMTE5NyAxMC4xMDE0IDYuMTE2OSAxMC4xMTE5QzYuMTAzNyAxMC4xNjEyIDYuMDkwNTYgMTAuMjEwNiA2LjA3NzUyIDEwLjI1OTlDNi4wNDQxMyAxMC4zODUxIDYuMDA4MTcgMTAuNTA5MiA1Ljk3MTIzIDEwLjYzMzJDNS45MDU2NyAxMC44NTM2IDUuODQ2MDEgMTEuMDc1NyA1Ljc4NjcyIDExLjI5OEM1LjY5NzMyIDExLjYzMjggNS42OTczMiAxMS42MzI4IDUuNjQ2NjIgMTEuNzkzN0M1LjY0MzI2IDExLjgwNDUgNS42Mzk5IDExLjgxNTMgNS42MzY0NCAxMS44MjY0QzUuNjE3OTMgMTEuODgzNyA1LjU5ODkgMTEuOTM2NCA1LjU2Mzg4IDExLjk4NDlDNS41MTA2IDExLjk5NzIgNS41MTA2IDExLjk5NzIgNS40NjI3MyAxMkM1LjQwODAxIDExLjkxNjggNS4zNzE3NyAxMS44MzYxIDUuMzQyNzMgMTEuNzQwMUM1LjMzODUxIDExLjcyNjUgNS4zMzQyOCAxMS43MTI5IDUuMzI5OTMgMTEuNjk4OUM1LjI3NjE0IDExLjUyMzMgNS4yMjgwNyAxMS4zNDU5IDUuMTc5OTkgMTEuMTY4NkM1LjE2ODk4IDExLjEyODEgNS4xNTc5MSAxMS4wODc1IDUuMTQ2ODUgMTEuMDQ3QzUuMDY0NCAxMC43NDQ4IDQuOTgzMzEgMTAuNDQyMyA0LjkwMjM0IDEwLjEzOTdDNC41NjUwOSA4LjY0Mjk5IDQuNTY1MDkgOC42NDI5OSAzLjcxNDMzIDcuNDMyODhDMy43MDA3IDcuNDIxMjggMy42ODcwNiA3LjQwOTY4IDMuNjczMDIgNy4zOTc3M0MzLjExNTYgNi45MzIwMyAyLjM4MTMgNi43NTk1OSAxLjcwODg1IDYuNTU3NTFDMS41NDI1NCA2LjUwNzQ5IDEuMzc2MjggNi40NTcyNCAxLjIxMDA0IDYuNDA2OTdDMS4xOTU1IDYuNDAyNTggMS4xOTU1IDYuNDAyNTggMS4xODA2NyA2LjM5ODA5QzAuOTQwODgxIDYuMzI1NTYgMC43MDExNTcgNi4yNTI4MyAwLjQ2MjI3NCA2LjE3NzExQzAuNDUyMTY4IDYuMTczOTMgMC40NDIwNjMgNi4xNzA3NSAwLjQzMTY1MSA2LjE2NzQ3QzAuMDY0NjU0MyA2LjA1MTc4IDAuMDY0NjU0MyA2LjA1MTc4IDAuMDAwNzkwMjExIDUuOTcwOEMtMC4wMDEwMTU5OSA1LjkzNDA2IC0wLjAwMTAxNTk5IDUuOTM0MDYgMC4wMTUyMzk4IDUuODk1NDNDMC4wODE5OTA5IDUuODI3MiAwLjE0Njc2IDUuNzk3OTcgMC4yMzQ4NjIgNS43NjgyNUMwLjI0NzYxOCA1Ljc2Mzc4IDAuMjYwMzc1IDUuNzU5MzEgMC4yNzM1MTggNS43NTQ3MUMwLjMxMjU4NyA1Ljc0MTEgMC4zNTE3NDEgNS43Mjc3OSAwLjM5MDkyOSA1LjcxNDU1QzAuNDAyMTEyIDUuNzEwNzMgMC40MTMyOTUgNS43MDY5IDAuNDI0ODE3IDUuNzAyOTZDMC41MDM5MDQgNS42NzU5IDAuNTgzMjc1IDUuNjQ5ODYgMC42NjI3NjIgNS42MjQxMkMwLjY4MjI5NCA1LjYxNzc3IDAuNjgyMjk0IDUuNjE3NzcgMC43MDIyMiA1LjYxMTI5QzEuMDQxNjYgNS41MDExNiAxLjM4MzMyIDUuMzk4NjcgMS43MjQ4NyA1LjI5NTk1QzEuOTc5MzkgNS4yMTkzOSAyLjIzMzQ3IDUuMTQxNTcgMi40ODY3NCA1LjA2MDY1QzIuNDk4MzggNS4wNTY5NCAyLjUxMDAxIDUuMDUzMjQgMi41MjIwMSA1LjA0OTQzQzMuMTA4NzIgNC44NjI2MiAzLjY4MjI5IDQuNTk3NTUgNC4wNjExMiA0LjA3MTZDNC4wNjY3OSA0LjA2MzggNC4wNzI0NyA0LjA1NTk5IDQuMDc4MzEgNC4wNDc5NkM0LjUwMDE5IDMuNDY0MiA0LjY2NDcgMi43NTQzIDQuODQ4NSAyLjA2MTYxQzQuOTA4OTYgMS44MzM3OSA0Ljk3MDE1IDEuNjA2MTkgNS4wMzE1NSAxLjM3ODY1QzUuMDQ4NTYgMS4zMTU2NCA1LjA2NTUzIDEuMjUyNjMgNS4wODI0NCAxLjE4OTU5QzUuMTUwMzcgMC45MzYzODUgNS4yMTkzMiAwLjY4MzUyMyA1LjI5MjIyIDAuNDMxODE4QzUuMjk5MDQgMC40MDgyNDggNS4zMDU4MyAwLjM4NDY2NyA1LjMxMjU5IDAuMzYxMDc2QzUuNDE0NjYgMC4wMDUzMTY4MSA1LjQxNDY2IDAuMDA1MzE2ODEgNS41MTE1IDBaXCIgZmlsbD1cIiMxNjE2MTdcIi8+PHBhdGggZD1cIk04Ljg0MzkxIDAuNzQwNDQzQzguOTEwMjQgMC44MTg3NjIgOC45MjM0OSAwLjkxMDgwNiA4Ljk0NDE1IDEuMDEwODFDOS4wMTMwNSAxLjMyNDk5IDkuMDkyNDEgMS42MTM4OCA5LjM2Nzg3IDEuNzk2MzhDOS41Mzc4MiAxLjg5NDQzIDkuNzQwMzcgMS45MzkwNCA5LjkyODY3IDEuOTgxMThDMTAuMDA4MiAxLjk5OTMzIDEwLjA3NTMgMi4wMjM0MSAxMC4xNDM1IDIuMDcxNThDMTAuMTU4OCAyLjA5NzAxIDEwLjE1ODggMi4wOTcwMSAxMC4xNTc5IDIuMTQxMjlDMTAuMTQyMSAyLjE5NTEzIDEwLjEyODIgMi4yMTI1IDEwLjA4NjYgMi4yNDc3NEMxMC4wNDEgMi4yNjM2NCAxMC4wNDEgMi4yNjM2NCA5Ljk4NjMzIDIuMjc2MDFDOS45NjU2NCAyLjI4MDk2IDkuOTQ0OTYgMi4yODU5NyA5LjkyNDMgMi4yOTEwMkM5LjkxMzIyIDIuMjkzNyA5LjkwMjE1IDIuMjk2MzggOS44OTA3NSAyLjI5OTE0QzkuNTU0MDEgMi4zODAzOSA5LjU1NDAxIDIuMzgwMzkgOS4yNjI5NSAyLjU2NDI4QzkuMjUzNDggMi41NzIyMiA5LjI0NDAyIDIuNTgwMTcgOS4yMzQyNyAyLjU4ODM2QzkuMDI2MjUgMi43Nzk3IDguOTgyMjYgMy4wOTggOC45MTk2MyAzLjM2NDY0QzguOTE2MDUgMy4zNzkyOCA4LjkxMjQ2IDMuMzkzOTMgOC45MDg3NiAzLjQwOTAxQzguOTA1NjYgMy40MjE5OCA4LjkwMjU1IDMuNDM0OTQgOC44OTkzNSAzLjQ0ODNDOC44ODU4NCAzLjQ4Nzg4IDguODcxODMgMy41MTM2OSA4Ljg0MzkxIDMuNTQ0MDJDOC43NjYxNCAzLjU1NDMyIDguNzY2MTQgMy41NTQzMiA4LjcyODMxIDMuNTQ0MDJDOC42NjgxNCAzLjQ5NTM3IDguNjU0NjggMy40Mzk5NiA4LjYzODk2IDMuMzY1NUM4LjYzNjMzIDMuMzUzOTcgOC42MzM2OSAzLjM0MjQ0IDguNjMwOTggMy4zMzA1NkM4LjYyMjU5IDMuMjkzNzQgOC42MTQ0NyAzLjI1Njg2IDguNjA2MzkgMy4yMTk5NUM4LjU0MzAyIDIuOTMyNTkgOC40NzE0OCAyLjY1MDY0IDguMjE4NzkgMi40ODIyQzguMDIxMzEgMi4zNjczMiA3Ljc4MTE4IDIuMzEyOTggNy41NjA0NSAyLjI2OTExQzcuNDk5OTYgMi4yNTU5NyA3LjQ2NTMgMi4yMzk0NCA3LjQyNzg1IDIuMTg3NDVDNy40MTk3MiAyLjEzNDcgNy40MTk3MiAyLjEzNDcgNy40Mjc4NSAyLjA4MTk0QzcuNDg1NDEgMi4wMTk3OSA3LjU0NTk3IDIuMDA0NjIgNy42MjM4MiAxLjk4NTg1QzcuNjQ4MzUgMS45Nzk1MiA3LjY3Mjg2IDEuOTczMTQgNy42OTczNyAxLjk2NjcxQzcuNzEwMDMgMS45NjM0MiA3LjcyMjY5IDEuOTYwMTIgNy43MzU3NCAxLjk1NjczQzcuODAwMzIgMS45MzkzOSA3Ljg2NDI1IDEuOTE5OTUgNy45MjgxNyAxLjkwMDEyQzcuOTM5NzggMS44OTY2MSA3Ljk1MTM5IDEuODkzMDkgNy45NjMzNiAxLjg4OTQ3QzguMDkzMjkgMS44NDg5NSA4LjIwNTQxIDEuNzk3MTIgOC4zMDkyNyAxLjcwNTEyQzguMzE4OTYgMS42OTY4IDguMzI4NjQgMS42ODg0OCA4LjMzODYyIDEuNjc5OTJDOC41MDAyNiAxLjUyODE3IDguNTU1MTggMS4zMDAyIDguNjA1MDQgMS4wODc0OEM4LjYwODg0IDEuMDcxMzMgOC42MTI2NCAxLjA1NTE4IDguNjE2NTUgMS4wMzg1NEM4LjYyNDExIDEuMDA2MSA4LjYzMTU0IDAuOTczNjIyIDguNjM4ODIgMC45NDExMUM4LjY0NDAzIDAuOTE4NDg5IDguNjQ0MDMgMC45MTg0ODkgOC42NDkzNSAwLjg5NTQxMkM4LjY1MjM4IDAuODgxODk5IDguNjU1NDIgMC44NjgzODUgOC42NTg1NSAwLjg1NDQ2MkM4LjY3MTg2IDAuODExNDQxIDguNjg5MzUgMC43Nzc2NiA4LjcxMzg2IDAuNzQwNDQzQzguNzYwOTYgMC43MTU4NzggOC43OTQwMSAwLjcyNjk4MyA4Ljg0MzkxIDAuNzQwNDQzWlwiIGZpbGw9XCIjNDE0MTQ2XCIvPjxwYXRoIGQ9XCJNMi4xOTQ0NiA4LjMyOTYyQzIuMjExNjYgOC4zMjk3NSAyLjIxMTY2IDguMzI5NzUgMi4yMjkxOSA4LjMyOTg4QzIuMzUyNTMgOC4zMzM4IDIuNDM1OTcgOC4zNzUwMyAyLjUyNjggOC40NjE1MUMyLjYzMjUgOC41ODA2MSAyLjY4MTMgOC43MTQ5NyAyLjY3ODUyIDguODc1NDlDMi42NjY2NiA5LjAwNTY1IDIuNTkzMDcgOS4xMTkyOSAyLjUwMjgyIDkuMjA3MjdDMi4zOTY1OCA5LjI5NjcyIDIuMjg5NDEgOS4zMjYyOCAyLjE1MzY2IDkuMzIyMTVDMi4wMzkxOSA5LjMwODI1IDEuOTMxNTEgOS4yNTE1MyAxLjg1MDM4IDkuMTY2MThDMS43NDk1IDkuMDIyNTggMS43MiA4Ljg5MDg3IDEuNzM0NzkgOC43MTM5OEMxLjc2NTMzIDguNTc0NzIgMS44NTMzNyA4LjQ2MTY3IDEuOTY1OTggOC4zODIzOEMyLjA0NDIxIDguMzQxMDEgMi4xMDcxMyA4LjMyODg2IDIuMTk0NDYgOC4zMjk2MlpcIiBmaWxsPVwiIzRDNEM1MVwiLz48L3N2Zz5cbiAgICAgICAgQW5hbHl6ZVxuICAgICAgPC9idXR0b24+IC0tPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIFJpZ2h0IFBhbmVsOiBMb2dzIC0tPlxuICA8ZGl2IGNsYXNzPVwiY3FhLWNvbC1zcGFuLTMgY3FhLWJvcmRlciBjcWEtYm9yZGVyLXNvbGlkIGNxYS1ib3JkZXItWyMjRTVFNUU1XSBjcWEtcm91bmRlZC1bMTBweF0gY3FhLXB5LTIgY3FhLXB4LTMgY3FhLWgtZnVsbCBjcWEtbWF4LWgtWzIwMHB4XSBjcWEtb3ZlcmZsb3ctYXV0b1wiXG4gICAgc3R5bGU9XCJzY3JvbGxiYXItd2lkdGg6IHRoaW47XCI+XG4gICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjMEEwQTBBXSBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMiBjcWEtbWItMlwiPlxuICAgICAgPHN2ZyB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0xMC42NjY2IDEyTDE0LjY2NjYgOEwxMC42NjY2IDRcIiBzdHJva2U9XCIjMEEwQTBBXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTUuMzMzMzcgNEwxLjMzMzM3IDhMNS4zMzMzNyAxMlwiIHN0cm9rZT1cIiMwQTBBMEFcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgTG9nc1xuICAgIDwvZGl2PlxuICAgIFxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0yIFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxMXB4XSBjcWEtbGVhZGluZy1bMTAwJV0gY3FhLXRleHQtWyM3MzczNzNdXCI+Q29uc29sZTwvZGl2PlxuICAgICAgXG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBsb2cgb2YgbG9nc1wiIGNsYXNzPVwiY3FhLXB4LTIgY3FhLXB5LVsycHhdIGNxYS1yb3VuZGVkIGNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS1icmVhay13b3Jkc1wiIFtuZ0NsYXNzXT1cImdldExvZ0NsYXNzKGxvZy5sZXZlbClcIj5cbiAgICAgICAge3sgbG9nLm1lc3NhZ2UgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgXG4gICAgICA8ZGl2ICpuZ0lmPVwiIWxvZ3MgfHwgbG9ncy5sZW5ndGggPT09IDBcIiBjbGFzcz1cImNxYS1weC0yIGNxYS1weS1bMnB4XSBjcWEtcm91bmRlZCBjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bIzlDQTNBRl0gY3FhLWJnLVsjZjhmOGY4XSBjcWEtdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgTm8gbG9ncyBhdmFpbGFibGVcbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSA8YSBcbiAgICAgICpuZ0lmPVwic2hvd0Z1bGxMb2dzTGluayAmJiBsb2dzPy5sZW5ndGhcIlxuICAgICAgKGNsaWNrKT1cIm9uVmlld0Z1bGxMb2dzKClcIlxuICAgICAgY2xhc3M9XCJjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS10ZXh0LVsjM0Y0M0VFXSBjcWEtZm9udC1tZWRpdW0gY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1lbmQgY3FhLWdhcC1bMnB4XSBjcWEtY3Vyc29yLXBvaW50ZXIgaG92ZXI6Y3FhLXVuZGVybGluZSBjcWEtbXQtNFwiPlxuICAgICAgVmlldyBmdWxsIGxvZ3MgSXRlcmF0aW9uc1xuICAgICAgPGRpdj48c3ZnIHdpZHRoPVwiOFwiIGhlaWdodD1cIjhcIiB2aWV3Qm94PVwiMCAwIDggOFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMi4wMzgzMyA2Ljc0MzM1TDIuNjI4MzMgNy4zMzMzNUw1Ljk2MTY2IDQuMDAwMDJMMi42MjgzMyAwLjY2NjY4N0wyLjAzODMzIDEuMjU2NjlMNC43ODE2NiA0LjAwMDAyTDIuMDM4MzMgNi43NDMzNVpcIiBmaWxsPVwiIzNGNDNFRVwiLz48L3N2Zz48L2Rpdj5cbiAgICA8L2E+IC0tPlxuICA8L2Rpdj5cblxuICBcbiAgPGNxYS12aXN1YWwtZGlmZmVyZW5jZS1tb2RhbFxuICAgIFtpc09wZW5dPVwiaXNNb2RhbE9wZW5cIlxuICAgIFtiYXNlbGluZVVybF09XCJzY3JlZW5zaG90cz8uYmFzZWxpbmUgfHwgJydcIlxuICAgIFtjdXJyZW50VXJsXT1cInNjcmVlbnNob3RzPy5jdXJyZW50IHx8ICcnXCJcbiAgICBbZGlmZmVyZW5jZVVybF09XCJzY3JlZW5zaG90cz8uZGlmZmVyZW5jZSB8fCAnJ1wiXG4gICAgW2luaXRpYWxWaWV3XT1cImluaXRpYWxNb2RhbFZpZXdcIlxuICAgIChjbG9zZSk9XCJvbkNsb3NlTW9kYWwoKVwiPlxuICA8L2NxYS12aXN1YWwtZGlmZmVyZW5jZS1tb2RhbD5cbjwvZGl2PlxuXG48c3R5bGU+XG4gIEBrZXlmcmFtZXMgc3BpbiB7XG4gICAgZnJvbSB7IHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOyB9XG4gICAgdG8geyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9XG4gIH1cbjwvc3R5bGU+Il19