@cqa-lib/cqa-ui 1.1.489 → 1.1.491

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.
@@ -50,6 +50,9 @@ export class ExecutionResultModalComponent {
50
50
  get shouldShowFailedSteps() {
51
51
  return this.status === 'failed' && this.failedSteps && this.failedSteps.length > 0;
52
52
  }
53
+ get shouldShowJoinedInProgressMessage() {
54
+ return !!this.joinedInProgressMessage;
55
+ }
53
56
  get shouldShowSkippedSteps() {
54
57
  return !!this.skippedSteps && this.skippedSteps.length > 0;
55
58
  }
@@ -71,10 +74,10 @@ export class ExecutionResultModalComponent {
71
74
  }
72
75
  }
73
76
  ExecutionResultModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ExecutionResultModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
74
- ExecutionResultModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ExecutionResultModalComponent, selector: "cqa-execution-result-modal", inputs: { isOpen: "isOpen", status: "status", title: "title", totalSteps: "totalSteps", completedSteps: "completedSteps", totalTime: "totalTime", appTime: "appTime", toolTime: "toolTime", lastCompletedStep: "lastCompletedStep", buttons: "buttons", failedSteps: "failedSteps", skippedSteps: "skippedSteps", showSessionChangesButton: "showSessionChangesButton" }, outputs: { buttonClick: "buttonClick", closeModal: "closeModal", sessionChangesClick: "sessionChangesClick" }, ngImport: i0, template: "<div \n *ngIf=\"isOpen\"\n class=\"modal-backdrop cqa-fixed cqa-inset-0 cqa-bg-black cqa-bg-opacity-50 cqa-z-[9999] cqa-flex cqa-items-center cqa-justify-center cqa-p-4\"\n (click)=\"onBackdropClick($event)\">\n <div \n class=\"cqa-rounded-lg cqa-bg-white cqa-shadow-xl cqa-w-full cqa-max-w-[500px] cqa-overflow-hidden cqa-p-6 cqa-flex cqa-flex-col cqa-gap-2 cqa-max-h-[85vh] cqa-overflow-y-auto\"\n style=\"box-shadow: 0px 8px 8px -4px #10182808;\"\n (click)=\"$event.stopPropagation()\">\n \n <div class=\"cqa-flex cqa-flex-col cqa-items-center\">\n <div *ngIf=\"status === 'passed'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"93\" height=\"93\" viewBox=\"0 0 93 93\" fill=\"none\">\n <rect x=\"4\" y=\"4\" width=\"85\" height=\"85\" rx=\"42.5\" fill=\"#AEE9D4\"/>\n <rect x=\"4\" y=\"4\" width=\"85\" height=\"85\" rx=\"42.5\" stroke=\"#CFF2E5\" stroke-width=\"8\"/>\n <path d=\"M75.25 43.8549V46.4999C75.2465 52.6996 73.2389 58.732 69.5268 63.6976C65.8147 68.6632 60.5969 72.2957 54.6517 74.0536C48.7064 75.8114 42.3521 75.6003 36.5366 73.4518C30.7211 71.3033 25.7559 67.3324 22.3815 62.1314C19.0071 56.9305 17.4044 50.778 17.8123 44.5918C18.2202 38.4055 20.617 32.5168 24.6451 27.8039C28.6731 23.0911 34.1168 19.8066 40.164 18.4403C46.2113 17.074 52.5383 17.6991 58.2013 20.2224M75.25 23.4999L46.5 52.2786L37.875 43.6536\" stroke=\"#0DBD7D\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n \n <div *ngIf=\"status === 'failed'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"93\" height=\"93\" viewBox=\"0 0 93 93\" fill=\"none\">\n <rect x=\"4\" y=\"4\" width=\"85\" height=\"85\" rx=\"42.5\" fill=\"#F9BFBF\"/>\n <rect x=\"4\" y=\"4\" width=\"85\" height=\"85\" rx=\"42.5\" stroke=\"#FCD9D9\" stroke-width=\"8\"/>\n <path d=\"M55.125 37.875L37.875 55.125M37.875 37.875L55.125 55.125M75.25 46.5C75.25 62.3782 62.3782 75.25 46.5 75.25C30.6218 75.25 17.75 62.3782 17.75 46.5C17.75 30.6218 30.6218 17.75 46.5 17.75C62.3782 17.75 75.25 30.6218 75.25 46.5Z\" stroke=\"#EE3F3F\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n \n <div *ngIf=\"status === 'aborted'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"93\" height=\"93\" viewBox=\"0 0 93 93\" fill=\"none\">\n <rect x=\"4\" y=\"4\" width=\"85\" height=\"85\" rx=\"42.5\" fill=\"#FEECBD\"/>\n <rect x=\"4\" y=\"4\" width=\"85\" height=\"85\" rx=\"42.5\" stroke=\"#FFF9E9\" stroke-width=\"8\"/>\n <path d=\"M46.5 17.75C30.63 17.75 17.75 30.63 17.75 46.5C17.75 62.37 30.63 75.25 46.5 75.25C62.37 75.25 75.25 62.37 75.25 46.5C75.25 30.63 62.37 17.75 46.5 17.75ZM46.5 69.5C33.7925 69.5 23.5 59.2075 23.5 46.5C23.5 33.7925 33.7925 23.5 46.5 23.5C59.2075 23.5 69.5 33.7925 69.5 46.5C69.5 59.2075 59.2075 69.5 46.5 69.5ZM58 58H35V35H58V58Z\" fill=\"#FBBF24\"/>\n </svg>\n </div>\n \n <h2 class=\"cqa-text-[22px] cqa-font-semibold cqa-text-[#0B0B0C] cqa-mt-[20px] cqa-leading-[28px]\">\n {{ title }}\n </h2>\n </div>\n \n <div class=\"cqa-rounded-lg cqa-border cqa-p-[17px] cqa-my-2\"\n [ngClass]=\"stepsBackgroundClass\" style=\"border: 1px solid;\" [style.border-color]=\"stepsBorderClass\">\n <div class=\"cqa-grid sm:cqa-flex sm:cqa-justify-between sm:cqa-items-center cqa-grid-cols-2 sm:cqa-grid-cols-4 cqa-gap-4 sm:cqa-gap-2\">\n <div class=\"cqa-flex cqa-flex-col\" *ngIf=\"totalSteps\">\n <span class=\"cqa-text-xs cqa-text-[#4A5565] cqa-mb-1\">Total Steps</span>\n <span class=\"cqa-text-[18px] cqa-font-medium cqa-text-[#101828]\">\n {{ completedSteps }} / {{ totalSteps }}\n </span>\n </div>\n \n <div class=\"cqa-flex cqa-flex-col\" *ngIf=\"totalTime\">\n <span class=\"cqa-text-xs cqa-text-[#4A5565] cqa-mb-1\">Total Time</span>\n <span class=\"cqa-text-[18px] cqa-font-medium cqa-text-[#101828]\">\n {{ totalTime }}\n </span>\n </div>\n \n <div class=\"cqa-flex cqa-flex-col\" *ngIf=\"appTime\">\n <span class=\"cqa-text-xs cqa-text-[#4A5565] cqa-mb-1\">App Time</span>\n <span class=\"cqa-text-[18px] cqa-font-medium cqa-text-[#101828]\">\n {{ appTime }}\n </span>\n </div>\n \n <!--\n Tool Time is hidden until BE provides real values (CON-909).\n Tracking ticket: https://linear.app/contextqa/issue/CON-909\n <div class=\"cqa-flex cqa-flex-col\" *ngIf=\"toolTime\">\n <span class=\"cqa-text-xs cqa-text-[#4A5565] cqa-mb-1\">Tool Time</span>\n <span class=\"cqa-text-[18px] cqa-font-medium cqa-text-[#101828]\">\n {{ toolTime }}\n </span>\n </div>\n -->\n </div>\n </div>\n\n <div *ngIf=\"shouldShowLastCompletedStep\" class=\"cqa-my-2 cqa-p-[17px] cqa-rounded-[10px] cqa-max-h-[200px] cqa-min-h-[80px] cqa-overflow-y-auto\" style=\"border: 1px solid #E5E7EB; scrollbar-width: thin; background-color: #F9FAFB;\">\n <div class=\"cqa-text-[12px] cqa-text-[#364153] cqa-mb-1 cqa-leading-[18px]\">\n Last completed step:\n </div>\n <div class=\"cqa-text-[12px] cqa-font-semibold cqa-text-[#101828] cqa-leading-[18px]\" style=\"word-break: break-word;\">\n <span [innerHTML]=\"lastCompletedStep\"></span>\n </div>\n </div>\n\n <div *ngIf=\"shouldShowSkippedSteps\"\n class=\"cqa-rounded-lg cqa-p-[17px] cqa-my-2 cqa-max-h-[200px] cqa-min-h-[80px] cqa-overflow-y-auto\"\n style=\"border: 1px solid #E5E7EB; scrollbar-width: thin; background-color: #F9FAFB;\">\n <div class=\"cqa-text-[12px] cqa-text-[#364153] cqa-mb-2 cqa-leading-[18px]\">\n {{ skippedSteps.length }} step{{ skippedSteps.length === 1 ? '' : 's' }} skipped during execution (as configured) :\n </div>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1\">\n <div *ngFor=\"let skipped of skippedSteps\"\n class=\"cqa-text-[12px] cqa-font-semibold cqa-text-[#101828] cqa-leading-[18px]\"\n style=\"word-break: break-word;\">\n Step {{ skipped.stepNumber }}<span *ngIf=\"skipped.label\">: {{ skipped.label }}</span>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"shouldShowFailedSteps\" class=\"cqa-my-2 cqa-max-h-[300px] cqa-min-h-[100px] cqa-overflow-y-auto\" style=\"scrollbar-width: thin;\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3\">\n <div \n *ngFor=\"let failedStep of failedSteps\" \n class=\"cqa-rounded-lg cqa-p-[17px] cqa-bg-[#FEF2F2]\"\n style=\"border: 1px solid #FECACA;\">\n <div *ngIf=\"failedStep?.failedStep\" class=\"cqa-text-sm cqa-font-semibold cqa-text-[#111827] cqa-mb-2 cqa-leading-[18px]\">\n Failed at Step {{ failedStep.failedStep }}<span *ngIf=\"failedStep.stepTitle\">: {{ failedStep.stepTitle }}</span>\n </div>\n <div *ngIf=\"failedStep.error\" class=\"cqa-text-[12px] cqa-text-[#B91C1C] cqa-mb-1 cqa-whitespace-normal cqa-break-anywhere\" style=\"word-break: break-word;\">\n <span class=\"cqa-font-bold\">Error:</span> {{ failedStep.error }}\n </div>\n <div *ngIf=\"failedStep.actual\" class=\"cqa-text-[12px] cqa-text-[#B91C1C] cqa-mb-1 cqa-whitespace-normal cqa-break-anywhere\" style=\"word-break: break-word;\">\n <span class=\"cqa-font-bold\">Actual:</span> {{ failedStep.actual }}\n </div>\n <div *ngIf=\"failedStep.expected\" class=\"cqa-text-[12px] cqa-text-[#B91C1C] cqa-mb-2 cqa-whitespace-normal cqa-break-anywhere\" style=\"word-break: break-word;\">\n <span class=\"cqa-font-bold\">Expected:</span> {{ failedStep.expected }}\n </div>\n <div *ngIf=\"failedStep.suggestions\" class=\"cqa-text-[12px] cqa-text-[#B91C1C] cqa-mb-1 cqa-whitespace-normal cqa-break-anywhere\" style=\"word-break: break-word;\">\n <span class=\"cqa-font-bold\">Suggestions:</span> {{ failedStep.suggestions }}\n </div>\n <div *ngIf=\"failedStep.timestamp\" class=\"cqa-flex cqa-items-center cqa-gap-1 cqa-text-[12px] cqa-text-[#636363]\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\n <path d=\"M6 1V6L9 7.5\" stroke=\"#636363\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <circle cx=\"6\" cy=\"6\" r=\"5\" stroke=\"#636363\" stroke-width=\"1.5\"/>\n </svg>\n <span>View screenshot at {{ failedStep.timestamp }}</span>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"cqa-flex cqa-flex-col cqa-gap-[20px]\">\n <ng-container *ngFor=\"let button of buttons; let last = last\">\n <cqa-button\n *ngIf=\"showSessionChangesButton && last\"\n variant=\"outlined\"\n text=\"Review Session Changes\"\n btnSize=\"lg\"\n [fullWidth]=\"true\"\n (clicked)=\"onSessionChangesClick()\">\n </cqa-button>\n <cqa-button\n [variant]=\"button.variant\"\n [text]=\"button.label\"\n [icon]=\"button.icon\"\n [btnSize]=\"button.btnSize || 'lg'\"\n [fullWidth]=\"button.fullWidth !== undefined ? button.fullWidth : true\"\n (clicked)=\"onButtonClick(button)\">\n </cqa-button>\n </ng-container>\n </div>\n </div>\n </div>\n\n", components: [{ type: i1.ButtonComponent, selector: "cqa-button", inputs: ["variant", "btnSize", "disabled", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass", "inlineStyles", "tooltip", "tooltipPosition"], outputs: ["clicked"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
77
+ ExecutionResultModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ExecutionResultModalComponent, selector: "cqa-execution-result-modal", inputs: { isOpen: "isOpen", status: "status", title: "title", totalSteps: "totalSteps", completedSteps: "completedSteps", totalTime: "totalTime", appTime: "appTime", toolTime: "toolTime", lastCompletedStep: "lastCompletedStep", buttons: "buttons", failedSteps: "failedSteps", skippedSteps: "skippedSteps", showSessionChangesButton: "showSessionChangesButton", joinedInProgressMessage: "joinedInProgressMessage" }, outputs: { buttonClick: "buttonClick", closeModal: "closeModal", sessionChangesClick: "sessionChangesClick" }, ngImport: i0, template: "<div \n *ngIf=\"isOpen\"\n class=\"modal-backdrop cqa-fixed cqa-inset-0 cqa-bg-black cqa-bg-opacity-50 cqa-z-[9999] cqa-flex cqa-items-center cqa-justify-center cqa-p-4\"\n (click)=\"onBackdropClick($event)\">\n <div \n class=\"cqa-rounded-lg cqa-bg-white cqa-shadow-xl cqa-w-full cqa-max-w-[500px] cqa-overflow-hidden cqa-p-6 cqa-flex cqa-flex-col cqa-gap-2 cqa-max-h-[85vh] cqa-overflow-y-auto\"\n style=\"box-shadow: 0px 8px 8px -4px #10182808;\"\n (click)=\"$event.stopPropagation()\">\n \n <div class=\"cqa-flex cqa-flex-col cqa-items-center\">\n <div *ngIf=\"status === 'passed'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"93\" height=\"93\" viewBox=\"0 0 93 93\" fill=\"none\">\n <rect x=\"4\" y=\"4\" width=\"85\" height=\"85\" rx=\"42.5\" fill=\"#AEE9D4\"/>\n <rect x=\"4\" y=\"4\" width=\"85\" height=\"85\" rx=\"42.5\" stroke=\"#CFF2E5\" stroke-width=\"8\"/>\n <path d=\"M75.25 43.8549V46.4999C75.2465 52.6996 73.2389 58.732 69.5268 63.6976C65.8147 68.6632 60.5969 72.2957 54.6517 74.0536C48.7064 75.8114 42.3521 75.6003 36.5366 73.4518C30.7211 71.3033 25.7559 67.3324 22.3815 62.1314C19.0071 56.9305 17.4044 50.778 17.8123 44.5918C18.2202 38.4055 20.617 32.5168 24.6451 27.8039C28.6731 23.0911 34.1168 19.8066 40.164 18.4403C46.2113 17.074 52.5383 17.6991 58.2013 20.2224M75.25 23.4999L46.5 52.2786L37.875 43.6536\" stroke=\"#0DBD7D\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n \n <div *ngIf=\"status === 'failed'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"93\" height=\"93\" viewBox=\"0 0 93 93\" fill=\"none\">\n <rect x=\"4\" y=\"4\" width=\"85\" height=\"85\" rx=\"42.5\" fill=\"#F9BFBF\"/>\n <rect x=\"4\" y=\"4\" width=\"85\" height=\"85\" rx=\"42.5\" stroke=\"#FCD9D9\" stroke-width=\"8\"/>\n <path d=\"M55.125 37.875L37.875 55.125M37.875 37.875L55.125 55.125M75.25 46.5C75.25 62.3782 62.3782 75.25 46.5 75.25C30.6218 75.25 17.75 62.3782 17.75 46.5C17.75 30.6218 30.6218 17.75 46.5 17.75C62.3782 17.75 75.25 30.6218 75.25 46.5Z\" stroke=\"#EE3F3F\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n \n <div *ngIf=\"status === 'aborted'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"93\" height=\"93\" viewBox=\"0 0 93 93\" fill=\"none\">\n <rect x=\"4\" y=\"4\" width=\"85\" height=\"85\" rx=\"42.5\" fill=\"#FEECBD\"/>\n <rect x=\"4\" y=\"4\" width=\"85\" height=\"85\" rx=\"42.5\" stroke=\"#FFF9E9\" stroke-width=\"8\"/>\n <path d=\"M46.5 17.75C30.63 17.75 17.75 30.63 17.75 46.5C17.75 62.37 30.63 75.25 46.5 75.25C62.37 75.25 75.25 62.37 75.25 46.5C75.25 30.63 62.37 17.75 46.5 17.75ZM46.5 69.5C33.7925 69.5 23.5 59.2075 23.5 46.5C23.5 33.7925 33.7925 23.5 46.5 23.5C59.2075 23.5 69.5 33.7925 69.5 46.5C69.5 59.2075 59.2075 69.5 46.5 69.5ZM58 58H35V35H58V58Z\" fill=\"#FBBF24\"/>\n </svg>\n </div>\n \n <h2 class=\"cqa-text-[22px] cqa-font-semibold cqa-text-[#0B0B0C] cqa-mt-[20px] cqa-leading-[28px]\">\n {{ title }}\n </h2>\n </div>\n \n <div class=\"cqa-rounded-lg cqa-border cqa-p-[17px] cqa-my-2\"\n [ngClass]=\"stepsBackgroundClass\" style=\"border: 1px solid;\" [style.border-color]=\"stepsBorderClass\">\n <div class=\"cqa-grid sm:cqa-flex sm:cqa-justify-between sm:cqa-items-center cqa-grid-cols-2 sm:cqa-grid-cols-4 cqa-gap-4 sm:cqa-gap-2\">\n <div class=\"cqa-flex cqa-flex-col\" *ngIf=\"totalSteps\">\n <span class=\"cqa-text-xs cqa-text-[#4A5565] cqa-mb-1\">Total Steps</span>\n <span class=\"cqa-text-[18px] cqa-font-medium cqa-text-[#101828]\">\n {{ completedSteps }} / {{ totalSteps }}\n </span>\n </div>\n \n <div class=\"cqa-flex cqa-flex-col\" *ngIf=\"totalTime && !shouldShowJoinedInProgressMessage\">\n <span class=\"cqa-text-xs cqa-text-[#4A5565] cqa-mb-1\">Total Time</span>\n <span class=\"cqa-text-[18px] cqa-font-medium cqa-text-[#101828]\">\n {{ totalTime }}\n </span>\n </div>\n\n <div class=\"cqa-flex cqa-flex-col\" *ngIf=\"appTime && !shouldShowJoinedInProgressMessage\">\n <span class=\"cqa-text-xs cqa-text-[#4A5565] cqa-mb-1\">App Time</span>\n <span class=\"cqa-text-[18px] cqa-font-medium cqa-text-[#101828]\">\n {{ appTime }}\n </span>\n </div>\n \n <!--\n Tool Time is hidden until BE provides real values (CON-909).\n Tracking ticket: https://linear.app/contextqa/issue/CON-909\n <div class=\"cqa-flex cqa-flex-col\" *ngIf=\"toolTime\">\n <span class=\"cqa-text-xs cqa-text-[#4A5565] cqa-mb-1\">Tool Time</span>\n <span class=\"cqa-text-[18px] cqa-font-medium cqa-text-[#101828]\">\n {{ toolTime }}\n </span>\n </div>\n -->\n </div>\n </div>\n\n <div *ngIf=\"shouldShowJoinedInProgressMessage\"\n class=\"cqa-rounded-[10px] cqa-p-[17px] cqa-my-2 cqa-text-[12px] cqa-text-[#364153] cqa-leading-[18px]\"\n style=\"border: 1px solid #C7D2FE; background-color: #EEF2FF;\">\n <div class=\"cqa-flex cqa-items-start cqa-gap-2\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" style=\"flex-shrink: 0; margin-top: 1px;\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"#6366F1\" stroke-width=\"2\"/>\n <path d=\"M12 8h.01M11 12h1v4h1\" stroke=\"#6366F1\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <span>{{ joinedInProgressMessage }}</span>\n </div>\n </div>\n\n <div *ngIf=\"shouldShowLastCompletedStep\" class=\"cqa-my-2 cqa-p-[17px] cqa-rounded-[10px] cqa-max-h-[200px] cqa-min-h-[80px] cqa-overflow-y-auto\" style=\"border: 1px solid #E5E7EB; scrollbar-width: thin; background-color: #F9FAFB;\">\n <div class=\"cqa-text-[12px] cqa-text-[#364153] cqa-mb-1 cqa-leading-[18px]\">\n Last completed step:\n </div>\n <div class=\"cqa-text-[12px] cqa-font-semibold cqa-text-[#101828] cqa-leading-[18px]\" style=\"word-break: break-word;\">\n <span [innerHTML]=\"lastCompletedStep\"></span>\n </div>\n </div>\n\n <div *ngIf=\"shouldShowSkippedSteps\"\n class=\"cqa-rounded-lg cqa-p-[17px] cqa-my-2 cqa-max-h-[200px] cqa-min-h-[80px] cqa-overflow-y-auto\"\n style=\"border: 1px solid #E5E7EB; scrollbar-width: thin; background-color: #F9FAFB;\">\n <div class=\"cqa-text-[12px] cqa-text-[#364153] cqa-mb-2 cqa-leading-[18px]\">\n {{ skippedSteps.length }} step{{ skippedSteps.length === 1 ? '' : 's' }} skipped during execution (as configured) :\n </div>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1\">\n <div *ngFor=\"let skipped of skippedSteps\"\n class=\"cqa-text-[12px] cqa-font-semibold cqa-text-[#101828] cqa-leading-[18px]\"\n style=\"word-break: break-word;\">\n Step {{ skipped.stepNumber }}<span *ngIf=\"skipped.label\">: {{ skipped.label }}</span>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"shouldShowFailedSteps\" class=\"cqa-my-2 cqa-max-h-[300px] cqa-min-h-[100px] cqa-overflow-y-auto\" style=\"scrollbar-width: thin;\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3\">\n <div \n *ngFor=\"let failedStep of failedSteps\" \n class=\"cqa-rounded-lg cqa-p-[17px] cqa-bg-[#FEF2F2]\"\n style=\"border: 1px solid #FECACA;\">\n <div *ngIf=\"failedStep?.failedStep\" class=\"cqa-text-sm cqa-font-semibold cqa-text-[#111827] cqa-mb-2 cqa-leading-[18px]\">\n Failed at Step {{ failedStep.failedStep }}<span *ngIf=\"failedStep.stepTitle\">: {{ failedStep.stepTitle }}</span>\n </div>\n <div *ngIf=\"failedStep.error\" class=\"cqa-text-[12px] cqa-text-[#B91C1C] cqa-mb-1 cqa-whitespace-normal cqa-break-anywhere\" style=\"word-break: break-word;\">\n <span class=\"cqa-font-bold\">Error:</span> {{ failedStep.error }}\n </div>\n <div *ngIf=\"failedStep.actual\" class=\"cqa-text-[12px] cqa-text-[#B91C1C] cqa-mb-1 cqa-whitespace-normal cqa-break-anywhere\" style=\"word-break: break-word;\">\n <span class=\"cqa-font-bold\">Actual:</span> {{ failedStep.actual }}\n </div>\n <div *ngIf=\"failedStep.expected\" class=\"cqa-text-[12px] cqa-text-[#B91C1C] cqa-mb-2 cqa-whitespace-normal cqa-break-anywhere\" style=\"word-break: break-word;\">\n <span class=\"cqa-font-bold\">Expected:</span> {{ failedStep.expected }}\n </div>\n <div *ngIf=\"failedStep.suggestions\" class=\"cqa-text-[12px] cqa-text-[#B91C1C] cqa-mb-1 cqa-whitespace-normal cqa-break-anywhere\" style=\"word-break: break-word;\">\n <span class=\"cqa-font-bold\">Suggestions:</span> {{ failedStep.suggestions }}\n </div>\n <div *ngIf=\"failedStep.timestamp\" class=\"cqa-flex cqa-items-center cqa-gap-1 cqa-text-[12px] cqa-text-[#636363]\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\n <path d=\"M6 1V6L9 7.5\" stroke=\"#636363\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <circle cx=\"6\" cy=\"6\" r=\"5\" stroke=\"#636363\" stroke-width=\"1.5\"/>\n </svg>\n <span>View screenshot at {{ failedStep.timestamp }}</span>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"cqa-flex cqa-flex-col cqa-gap-[20px]\">\n <ng-container *ngFor=\"let button of buttons; let last = last\">\n <cqa-button\n *ngIf=\"showSessionChangesButton && last\"\n variant=\"outlined\"\n text=\"Review Session Changes\"\n btnSize=\"lg\"\n [fullWidth]=\"true\"\n (clicked)=\"onSessionChangesClick()\">\n </cqa-button>\n <cqa-button\n [variant]=\"button.variant\"\n [text]=\"button.label\"\n [icon]=\"button.icon\"\n [btnSize]=\"button.btnSize || 'lg'\"\n [fullWidth]=\"button.fullWidth !== undefined ? button.fullWidth : true\"\n (clicked)=\"onButtonClick(button)\">\n </cqa-button>\n </ng-container>\n </div>\n </div>\n </div>\n\n", components: [{ type: i1.ButtonComponent, selector: "cqa-button", inputs: ["variant", "btnSize", "disabled", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass", "inlineStyles", "tooltip", "tooltipPosition"], outputs: ["clicked"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
75
78
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ExecutionResultModalComponent, decorators: [{
76
79
  type: Component,
77
- args: [{ selector: 'cqa-execution-result-modal', template: "<div \n *ngIf=\"isOpen\"\n class=\"modal-backdrop cqa-fixed cqa-inset-0 cqa-bg-black cqa-bg-opacity-50 cqa-z-[9999] cqa-flex cqa-items-center cqa-justify-center cqa-p-4\"\n (click)=\"onBackdropClick($event)\">\n <div \n class=\"cqa-rounded-lg cqa-bg-white cqa-shadow-xl cqa-w-full cqa-max-w-[500px] cqa-overflow-hidden cqa-p-6 cqa-flex cqa-flex-col cqa-gap-2 cqa-max-h-[85vh] cqa-overflow-y-auto\"\n style=\"box-shadow: 0px 8px 8px -4px #10182808;\"\n (click)=\"$event.stopPropagation()\">\n \n <div class=\"cqa-flex cqa-flex-col cqa-items-center\">\n <div *ngIf=\"status === 'passed'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"93\" height=\"93\" viewBox=\"0 0 93 93\" fill=\"none\">\n <rect x=\"4\" y=\"4\" width=\"85\" height=\"85\" rx=\"42.5\" fill=\"#AEE9D4\"/>\n <rect x=\"4\" y=\"4\" width=\"85\" height=\"85\" rx=\"42.5\" stroke=\"#CFF2E5\" stroke-width=\"8\"/>\n <path d=\"M75.25 43.8549V46.4999C75.2465 52.6996 73.2389 58.732 69.5268 63.6976C65.8147 68.6632 60.5969 72.2957 54.6517 74.0536C48.7064 75.8114 42.3521 75.6003 36.5366 73.4518C30.7211 71.3033 25.7559 67.3324 22.3815 62.1314C19.0071 56.9305 17.4044 50.778 17.8123 44.5918C18.2202 38.4055 20.617 32.5168 24.6451 27.8039C28.6731 23.0911 34.1168 19.8066 40.164 18.4403C46.2113 17.074 52.5383 17.6991 58.2013 20.2224M75.25 23.4999L46.5 52.2786L37.875 43.6536\" stroke=\"#0DBD7D\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n \n <div *ngIf=\"status === 'failed'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"93\" height=\"93\" viewBox=\"0 0 93 93\" fill=\"none\">\n <rect x=\"4\" y=\"4\" width=\"85\" height=\"85\" rx=\"42.5\" fill=\"#F9BFBF\"/>\n <rect x=\"4\" y=\"4\" width=\"85\" height=\"85\" rx=\"42.5\" stroke=\"#FCD9D9\" stroke-width=\"8\"/>\n <path d=\"M55.125 37.875L37.875 55.125M37.875 37.875L55.125 55.125M75.25 46.5C75.25 62.3782 62.3782 75.25 46.5 75.25C30.6218 75.25 17.75 62.3782 17.75 46.5C17.75 30.6218 30.6218 17.75 46.5 17.75C62.3782 17.75 75.25 30.6218 75.25 46.5Z\" stroke=\"#EE3F3F\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n \n <div *ngIf=\"status === 'aborted'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"93\" height=\"93\" viewBox=\"0 0 93 93\" fill=\"none\">\n <rect x=\"4\" y=\"4\" width=\"85\" height=\"85\" rx=\"42.5\" fill=\"#FEECBD\"/>\n <rect x=\"4\" y=\"4\" width=\"85\" height=\"85\" rx=\"42.5\" stroke=\"#FFF9E9\" stroke-width=\"8\"/>\n <path d=\"M46.5 17.75C30.63 17.75 17.75 30.63 17.75 46.5C17.75 62.37 30.63 75.25 46.5 75.25C62.37 75.25 75.25 62.37 75.25 46.5C75.25 30.63 62.37 17.75 46.5 17.75ZM46.5 69.5C33.7925 69.5 23.5 59.2075 23.5 46.5C23.5 33.7925 33.7925 23.5 46.5 23.5C59.2075 23.5 69.5 33.7925 69.5 46.5C69.5 59.2075 59.2075 69.5 46.5 69.5ZM58 58H35V35H58V58Z\" fill=\"#FBBF24\"/>\n </svg>\n </div>\n \n <h2 class=\"cqa-text-[22px] cqa-font-semibold cqa-text-[#0B0B0C] cqa-mt-[20px] cqa-leading-[28px]\">\n {{ title }}\n </h2>\n </div>\n \n <div class=\"cqa-rounded-lg cqa-border cqa-p-[17px] cqa-my-2\"\n [ngClass]=\"stepsBackgroundClass\" style=\"border: 1px solid;\" [style.border-color]=\"stepsBorderClass\">\n <div class=\"cqa-grid sm:cqa-flex sm:cqa-justify-between sm:cqa-items-center cqa-grid-cols-2 sm:cqa-grid-cols-4 cqa-gap-4 sm:cqa-gap-2\">\n <div class=\"cqa-flex cqa-flex-col\" *ngIf=\"totalSteps\">\n <span class=\"cqa-text-xs cqa-text-[#4A5565] cqa-mb-1\">Total Steps</span>\n <span class=\"cqa-text-[18px] cqa-font-medium cqa-text-[#101828]\">\n {{ completedSteps }} / {{ totalSteps }}\n </span>\n </div>\n \n <div class=\"cqa-flex cqa-flex-col\" *ngIf=\"totalTime\">\n <span class=\"cqa-text-xs cqa-text-[#4A5565] cqa-mb-1\">Total Time</span>\n <span class=\"cqa-text-[18px] cqa-font-medium cqa-text-[#101828]\">\n {{ totalTime }}\n </span>\n </div>\n \n <div class=\"cqa-flex cqa-flex-col\" *ngIf=\"appTime\">\n <span class=\"cqa-text-xs cqa-text-[#4A5565] cqa-mb-1\">App Time</span>\n <span class=\"cqa-text-[18px] cqa-font-medium cqa-text-[#101828]\">\n {{ appTime }}\n </span>\n </div>\n \n <!--\n Tool Time is hidden until BE provides real values (CON-909).\n Tracking ticket: https://linear.app/contextqa/issue/CON-909\n <div class=\"cqa-flex cqa-flex-col\" *ngIf=\"toolTime\">\n <span class=\"cqa-text-xs cqa-text-[#4A5565] cqa-mb-1\">Tool Time</span>\n <span class=\"cqa-text-[18px] cqa-font-medium cqa-text-[#101828]\">\n {{ toolTime }}\n </span>\n </div>\n -->\n </div>\n </div>\n\n <div *ngIf=\"shouldShowLastCompletedStep\" class=\"cqa-my-2 cqa-p-[17px] cqa-rounded-[10px] cqa-max-h-[200px] cqa-min-h-[80px] cqa-overflow-y-auto\" style=\"border: 1px solid #E5E7EB; scrollbar-width: thin; background-color: #F9FAFB;\">\n <div class=\"cqa-text-[12px] cqa-text-[#364153] cqa-mb-1 cqa-leading-[18px]\">\n Last completed step:\n </div>\n <div class=\"cqa-text-[12px] cqa-font-semibold cqa-text-[#101828] cqa-leading-[18px]\" style=\"word-break: break-word;\">\n <span [innerHTML]=\"lastCompletedStep\"></span>\n </div>\n </div>\n\n <div *ngIf=\"shouldShowSkippedSteps\"\n class=\"cqa-rounded-lg cqa-p-[17px] cqa-my-2 cqa-max-h-[200px] cqa-min-h-[80px] cqa-overflow-y-auto\"\n style=\"border: 1px solid #E5E7EB; scrollbar-width: thin; background-color: #F9FAFB;\">\n <div class=\"cqa-text-[12px] cqa-text-[#364153] cqa-mb-2 cqa-leading-[18px]\">\n {{ skippedSteps.length }} step{{ skippedSteps.length === 1 ? '' : 's' }} skipped during execution (as configured) :\n </div>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1\">\n <div *ngFor=\"let skipped of skippedSteps\"\n class=\"cqa-text-[12px] cqa-font-semibold cqa-text-[#101828] cqa-leading-[18px]\"\n style=\"word-break: break-word;\">\n Step {{ skipped.stepNumber }}<span *ngIf=\"skipped.label\">: {{ skipped.label }}</span>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"shouldShowFailedSteps\" class=\"cqa-my-2 cqa-max-h-[300px] cqa-min-h-[100px] cqa-overflow-y-auto\" style=\"scrollbar-width: thin;\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3\">\n <div \n *ngFor=\"let failedStep of failedSteps\" \n class=\"cqa-rounded-lg cqa-p-[17px] cqa-bg-[#FEF2F2]\"\n style=\"border: 1px solid #FECACA;\">\n <div *ngIf=\"failedStep?.failedStep\" class=\"cqa-text-sm cqa-font-semibold cqa-text-[#111827] cqa-mb-2 cqa-leading-[18px]\">\n Failed at Step {{ failedStep.failedStep }}<span *ngIf=\"failedStep.stepTitle\">: {{ failedStep.stepTitle }}</span>\n </div>\n <div *ngIf=\"failedStep.error\" class=\"cqa-text-[12px] cqa-text-[#B91C1C] cqa-mb-1 cqa-whitespace-normal cqa-break-anywhere\" style=\"word-break: break-word;\">\n <span class=\"cqa-font-bold\">Error:</span> {{ failedStep.error }}\n </div>\n <div *ngIf=\"failedStep.actual\" class=\"cqa-text-[12px] cqa-text-[#B91C1C] cqa-mb-1 cqa-whitespace-normal cqa-break-anywhere\" style=\"word-break: break-word;\">\n <span class=\"cqa-font-bold\">Actual:</span> {{ failedStep.actual }}\n </div>\n <div *ngIf=\"failedStep.expected\" class=\"cqa-text-[12px] cqa-text-[#B91C1C] cqa-mb-2 cqa-whitespace-normal cqa-break-anywhere\" style=\"word-break: break-word;\">\n <span class=\"cqa-font-bold\">Expected:</span> {{ failedStep.expected }}\n </div>\n <div *ngIf=\"failedStep.suggestions\" class=\"cqa-text-[12px] cqa-text-[#B91C1C] cqa-mb-1 cqa-whitespace-normal cqa-break-anywhere\" style=\"word-break: break-word;\">\n <span class=\"cqa-font-bold\">Suggestions:</span> {{ failedStep.suggestions }}\n </div>\n <div *ngIf=\"failedStep.timestamp\" class=\"cqa-flex cqa-items-center cqa-gap-1 cqa-text-[12px] cqa-text-[#636363]\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\n <path d=\"M6 1V6L9 7.5\" stroke=\"#636363\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <circle cx=\"6\" cy=\"6\" r=\"5\" stroke=\"#636363\" stroke-width=\"1.5\"/>\n </svg>\n <span>View screenshot at {{ failedStep.timestamp }}</span>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"cqa-flex cqa-flex-col cqa-gap-[20px]\">\n <ng-container *ngFor=\"let button of buttons; let last = last\">\n <cqa-button\n *ngIf=\"showSessionChangesButton && last\"\n variant=\"outlined\"\n text=\"Review Session Changes\"\n btnSize=\"lg\"\n [fullWidth]=\"true\"\n (clicked)=\"onSessionChangesClick()\">\n </cqa-button>\n <cqa-button\n [variant]=\"button.variant\"\n [text]=\"button.label\"\n [icon]=\"button.icon\"\n [btnSize]=\"button.btnSize || 'lg'\"\n [fullWidth]=\"button.fullWidth !== undefined ? button.fullWidth : true\"\n (clicked)=\"onButtonClick(button)\">\n </cqa-button>\n </ng-container>\n </div>\n </div>\n </div>\n\n", styles: [] }]
80
+ args: [{ selector: 'cqa-execution-result-modal', template: "<div \n *ngIf=\"isOpen\"\n class=\"modal-backdrop cqa-fixed cqa-inset-0 cqa-bg-black cqa-bg-opacity-50 cqa-z-[9999] cqa-flex cqa-items-center cqa-justify-center cqa-p-4\"\n (click)=\"onBackdropClick($event)\">\n <div \n class=\"cqa-rounded-lg cqa-bg-white cqa-shadow-xl cqa-w-full cqa-max-w-[500px] cqa-overflow-hidden cqa-p-6 cqa-flex cqa-flex-col cqa-gap-2 cqa-max-h-[85vh] cqa-overflow-y-auto\"\n style=\"box-shadow: 0px 8px 8px -4px #10182808;\"\n (click)=\"$event.stopPropagation()\">\n \n <div class=\"cqa-flex cqa-flex-col cqa-items-center\">\n <div *ngIf=\"status === 'passed'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"93\" height=\"93\" viewBox=\"0 0 93 93\" fill=\"none\">\n <rect x=\"4\" y=\"4\" width=\"85\" height=\"85\" rx=\"42.5\" fill=\"#AEE9D4\"/>\n <rect x=\"4\" y=\"4\" width=\"85\" height=\"85\" rx=\"42.5\" stroke=\"#CFF2E5\" stroke-width=\"8\"/>\n <path d=\"M75.25 43.8549V46.4999C75.2465 52.6996 73.2389 58.732 69.5268 63.6976C65.8147 68.6632 60.5969 72.2957 54.6517 74.0536C48.7064 75.8114 42.3521 75.6003 36.5366 73.4518C30.7211 71.3033 25.7559 67.3324 22.3815 62.1314C19.0071 56.9305 17.4044 50.778 17.8123 44.5918C18.2202 38.4055 20.617 32.5168 24.6451 27.8039C28.6731 23.0911 34.1168 19.8066 40.164 18.4403C46.2113 17.074 52.5383 17.6991 58.2013 20.2224M75.25 23.4999L46.5 52.2786L37.875 43.6536\" stroke=\"#0DBD7D\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n \n <div *ngIf=\"status === 'failed'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"93\" height=\"93\" viewBox=\"0 0 93 93\" fill=\"none\">\n <rect x=\"4\" y=\"4\" width=\"85\" height=\"85\" rx=\"42.5\" fill=\"#F9BFBF\"/>\n <rect x=\"4\" y=\"4\" width=\"85\" height=\"85\" rx=\"42.5\" stroke=\"#FCD9D9\" stroke-width=\"8\"/>\n <path d=\"M55.125 37.875L37.875 55.125M37.875 37.875L55.125 55.125M75.25 46.5C75.25 62.3782 62.3782 75.25 46.5 75.25C30.6218 75.25 17.75 62.3782 17.75 46.5C17.75 30.6218 30.6218 17.75 46.5 17.75C62.3782 17.75 75.25 30.6218 75.25 46.5Z\" stroke=\"#EE3F3F\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n \n <div *ngIf=\"status === 'aborted'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"93\" height=\"93\" viewBox=\"0 0 93 93\" fill=\"none\">\n <rect x=\"4\" y=\"4\" width=\"85\" height=\"85\" rx=\"42.5\" fill=\"#FEECBD\"/>\n <rect x=\"4\" y=\"4\" width=\"85\" height=\"85\" rx=\"42.5\" stroke=\"#FFF9E9\" stroke-width=\"8\"/>\n <path d=\"M46.5 17.75C30.63 17.75 17.75 30.63 17.75 46.5C17.75 62.37 30.63 75.25 46.5 75.25C62.37 75.25 75.25 62.37 75.25 46.5C75.25 30.63 62.37 17.75 46.5 17.75ZM46.5 69.5C33.7925 69.5 23.5 59.2075 23.5 46.5C23.5 33.7925 33.7925 23.5 46.5 23.5C59.2075 23.5 69.5 33.7925 69.5 46.5C69.5 59.2075 59.2075 69.5 46.5 69.5ZM58 58H35V35H58V58Z\" fill=\"#FBBF24\"/>\n </svg>\n </div>\n \n <h2 class=\"cqa-text-[22px] cqa-font-semibold cqa-text-[#0B0B0C] cqa-mt-[20px] cqa-leading-[28px]\">\n {{ title }}\n </h2>\n </div>\n \n <div class=\"cqa-rounded-lg cqa-border cqa-p-[17px] cqa-my-2\"\n [ngClass]=\"stepsBackgroundClass\" style=\"border: 1px solid;\" [style.border-color]=\"stepsBorderClass\">\n <div class=\"cqa-grid sm:cqa-flex sm:cqa-justify-between sm:cqa-items-center cqa-grid-cols-2 sm:cqa-grid-cols-4 cqa-gap-4 sm:cqa-gap-2\">\n <div class=\"cqa-flex cqa-flex-col\" *ngIf=\"totalSteps\">\n <span class=\"cqa-text-xs cqa-text-[#4A5565] cqa-mb-1\">Total Steps</span>\n <span class=\"cqa-text-[18px] cqa-font-medium cqa-text-[#101828]\">\n {{ completedSteps }} / {{ totalSteps }}\n </span>\n </div>\n \n <div class=\"cqa-flex cqa-flex-col\" *ngIf=\"totalTime && !shouldShowJoinedInProgressMessage\">\n <span class=\"cqa-text-xs cqa-text-[#4A5565] cqa-mb-1\">Total Time</span>\n <span class=\"cqa-text-[18px] cqa-font-medium cqa-text-[#101828]\">\n {{ totalTime }}\n </span>\n </div>\n\n <div class=\"cqa-flex cqa-flex-col\" *ngIf=\"appTime && !shouldShowJoinedInProgressMessage\">\n <span class=\"cqa-text-xs cqa-text-[#4A5565] cqa-mb-1\">App Time</span>\n <span class=\"cqa-text-[18px] cqa-font-medium cqa-text-[#101828]\">\n {{ appTime }}\n </span>\n </div>\n \n <!--\n Tool Time is hidden until BE provides real values (CON-909).\n Tracking ticket: https://linear.app/contextqa/issue/CON-909\n <div class=\"cqa-flex cqa-flex-col\" *ngIf=\"toolTime\">\n <span class=\"cqa-text-xs cqa-text-[#4A5565] cqa-mb-1\">Tool Time</span>\n <span class=\"cqa-text-[18px] cqa-font-medium cqa-text-[#101828]\">\n {{ toolTime }}\n </span>\n </div>\n -->\n </div>\n </div>\n\n <div *ngIf=\"shouldShowJoinedInProgressMessage\"\n class=\"cqa-rounded-[10px] cqa-p-[17px] cqa-my-2 cqa-text-[12px] cqa-text-[#364153] cqa-leading-[18px]\"\n style=\"border: 1px solid #C7D2FE; background-color: #EEF2FF;\">\n <div class=\"cqa-flex cqa-items-start cqa-gap-2\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" style=\"flex-shrink: 0; margin-top: 1px;\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"#6366F1\" stroke-width=\"2\"/>\n <path d=\"M12 8h.01M11 12h1v4h1\" stroke=\"#6366F1\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <span>{{ joinedInProgressMessage }}</span>\n </div>\n </div>\n\n <div *ngIf=\"shouldShowLastCompletedStep\" class=\"cqa-my-2 cqa-p-[17px] cqa-rounded-[10px] cqa-max-h-[200px] cqa-min-h-[80px] cqa-overflow-y-auto\" style=\"border: 1px solid #E5E7EB; scrollbar-width: thin; background-color: #F9FAFB;\">\n <div class=\"cqa-text-[12px] cqa-text-[#364153] cqa-mb-1 cqa-leading-[18px]\">\n Last completed step:\n </div>\n <div class=\"cqa-text-[12px] cqa-font-semibold cqa-text-[#101828] cqa-leading-[18px]\" style=\"word-break: break-word;\">\n <span [innerHTML]=\"lastCompletedStep\"></span>\n </div>\n </div>\n\n <div *ngIf=\"shouldShowSkippedSteps\"\n class=\"cqa-rounded-lg cqa-p-[17px] cqa-my-2 cqa-max-h-[200px] cqa-min-h-[80px] cqa-overflow-y-auto\"\n style=\"border: 1px solid #E5E7EB; scrollbar-width: thin; background-color: #F9FAFB;\">\n <div class=\"cqa-text-[12px] cqa-text-[#364153] cqa-mb-2 cqa-leading-[18px]\">\n {{ skippedSteps.length }} step{{ skippedSteps.length === 1 ? '' : 's' }} skipped during execution (as configured) :\n </div>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1\">\n <div *ngFor=\"let skipped of skippedSteps\"\n class=\"cqa-text-[12px] cqa-font-semibold cqa-text-[#101828] cqa-leading-[18px]\"\n style=\"word-break: break-word;\">\n Step {{ skipped.stepNumber }}<span *ngIf=\"skipped.label\">: {{ skipped.label }}</span>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"shouldShowFailedSteps\" class=\"cqa-my-2 cqa-max-h-[300px] cqa-min-h-[100px] cqa-overflow-y-auto\" style=\"scrollbar-width: thin;\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3\">\n <div \n *ngFor=\"let failedStep of failedSteps\" \n class=\"cqa-rounded-lg cqa-p-[17px] cqa-bg-[#FEF2F2]\"\n style=\"border: 1px solid #FECACA;\">\n <div *ngIf=\"failedStep?.failedStep\" class=\"cqa-text-sm cqa-font-semibold cqa-text-[#111827] cqa-mb-2 cqa-leading-[18px]\">\n Failed at Step {{ failedStep.failedStep }}<span *ngIf=\"failedStep.stepTitle\">: {{ failedStep.stepTitle }}</span>\n </div>\n <div *ngIf=\"failedStep.error\" class=\"cqa-text-[12px] cqa-text-[#B91C1C] cqa-mb-1 cqa-whitespace-normal cqa-break-anywhere\" style=\"word-break: break-word;\">\n <span class=\"cqa-font-bold\">Error:</span> {{ failedStep.error }}\n </div>\n <div *ngIf=\"failedStep.actual\" class=\"cqa-text-[12px] cqa-text-[#B91C1C] cqa-mb-1 cqa-whitespace-normal cqa-break-anywhere\" style=\"word-break: break-word;\">\n <span class=\"cqa-font-bold\">Actual:</span> {{ failedStep.actual }}\n </div>\n <div *ngIf=\"failedStep.expected\" class=\"cqa-text-[12px] cqa-text-[#B91C1C] cqa-mb-2 cqa-whitespace-normal cqa-break-anywhere\" style=\"word-break: break-word;\">\n <span class=\"cqa-font-bold\">Expected:</span> {{ failedStep.expected }}\n </div>\n <div *ngIf=\"failedStep.suggestions\" class=\"cqa-text-[12px] cqa-text-[#B91C1C] cqa-mb-1 cqa-whitespace-normal cqa-break-anywhere\" style=\"word-break: break-word;\">\n <span class=\"cqa-font-bold\">Suggestions:</span> {{ failedStep.suggestions }}\n </div>\n <div *ngIf=\"failedStep.timestamp\" class=\"cqa-flex cqa-items-center cqa-gap-1 cqa-text-[12px] cqa-text-[#636363]\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\n <path d=\"M6 1V6L9 7.5\" stroke=\"#636363\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <circle cx=\"6\" cy=\"6\" r=\"5\" stroke=\"#636363\" stroke-width=\"1.5\"/>\n </svg>\n <span>View screenshot at {{ failedStep.timestamp }}</span>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"cqa-flex cqa-flex-col cqa-gap-[20px]\">\n <ng-container *ngFor=\"let button of buttons; let last = last\">\n <cqa-button\n *ngIf=\"showSessionChangesButton && last\"\n variant=\"outlined\"\n text=\"Review Session Changes\"\n btnSize=\"lg\"\n [fullWidth]=\"true\"\n (clicked)=\"onSessionChangesClick()\">\n </cqa-button>\n <cqa-button\n [variant]=\"button.variant\"\n [text]=\"button.label\"\n [icon]=\"button.icon\"\n [btnSize]=\"button.btnSize || 'lg'\"\n [fullWidth]=\"button.fullWidth !== undefined ? button.fullWidth : true\"\n (clicked)=\"onButtonClick(button)\">\n </cqa-button>\n </ng-container>\n </div>\n </div>\n </div>\n\n", styles: [] }]
78
81
  }], propDecorators: { isOpen: [{
79
82
  type: Input
80
83
  }], status: [{
@@ -101,6 +104,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
101
104
  type: Input
102
105
  }], showSessionChangesButton: [{
103
106
  type: Input
107
+ }], joinedInProgressMessage: [{
108
+ type: Input
104
109
  }], buttonClick: [{
105
110
  type: Output
106
111
  }], closeModal: [{
@@ -108,4 +113,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
108
113
  }], sessionChangesClick: [{
109
114
  type: Output
110
115
  }] } });
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uLXJlc3VsdC1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2V4ZWN1dGlvbi1yZXN1bHQtbW9kYWwvZXhlY3V0aW9uLXJlc3VsdC1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2V4ZWN1dGlvbi1yZXN1bHQtbW9kYWwvZXhlY3V0aW9uLXJlc3VsdC1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBa0N2RSxNQUFNLE9BQU8sNkJBQTZCO0lBTDFDO1FBTVcsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUN4QixXQUFNLEdBQW9CLFFBQVEsQ0FBQztRQUNuQyxVQUFLLEdBQVcsRUFBRSxDQUFDO1FBQ25CLGVBQVUsR0FBVyxDQUFDLENBQUM7UUFDdkIsbUJBQWMsR0FBVyxDQUFDLENBQUM7UUFDM0IsY0FBUyxHQUFXLEVBQUUsQ0FBQztRQUN2QixZQUFPLEdBQVcsRUFBRSxDQUFDO1FBQ3JCLGFBQVEsR0FBVyxFQUFFLENBQUM7UUFFdEIsWUFBTyxHQUE0QixFQUFFLENBQUM7UUFDdEMsZ0JBQVcsR0FBaUIsRUFBRSxDQUFDO1FBQy9CLGlCQUFZLEdBQWtCLEVBQUUsQ0FBQztRQUNqQyw2QkFBd0IsR0FBWSxLQUFLLENBQUM7UUFFekMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3pDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3RDLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7S0E0RHpEO0lBMURBLElBQUksb0JBQW9CO1FBQ3RCLFFBQVEsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNuQixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxvQkFBb0IsQ0FBQztZQUM5QixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxvQkFBb0IsQ0FBQztZQUM5QixLQUFLLFNBQVM7Z0JBQ1osT0FBTyxvQkFBb0IsQ0FBQztZQUM5QjtnQkFDRSxPQUFPLGlCQUFpQixDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2xCLFFBQVEsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNuQixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxTQUFTLENBQUM7WUFDbkIsS0FBSyxRQUFRO2dCQUNYLE9BQU8sU0FBUyxDQUFDO1lBQ25CLEtBQUssU0FBUztnQkFDWixPQUFPLFNBQVMsQ0FBQztZQUNuQjtnQkFDRSxPQUFPLFNBQVMsQ0FBQztTQUNwQjtJQUNILENBQUM7SUFFRCxJQUFJLDJCQUEyQjtRQUM3QixPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDL0QsQ0FBQztJQUVELElBQUkscUJBQXFCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVELElBQUksc0JBQXNCO1FBQ3hCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxlQUFlLENBQUMsS0FBaUI7UUFDL0IsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQXFCLENBQUM7UUFDM0MsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQTRCLENBQUM7UUFFekQsSUFBSSxNQUFNLEtBQUssYUFBYSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEVBQUU7WUFDM0UsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ2hCO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUE2QjtRQUN6QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2xDLENBQUM7OzBIQTVFVSw2QkFBNkI7OEdBQTdCLDZCQUE2QiwyaEJDbEMxQyw0cVRBMkpBOzJGRHpIYSw2QkFBNkI7a0JBTHpDLFNBQVM7K0JBQ0UsNEJBQTRCOzhCQUs3QixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCdXR0b25WYXJpYW50IH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuXG5leHBvcnQgdHlwZSBFeGVjdXRpb25TdGF0dXMgPSAncGFzc2VkJyB8ICdmYWlsZWQnIHwgJ2Fib3J0ZWQnIHwgJ2Vycm9yJztcblxuZXhwb3J0IGludGVyZmFjZSBFeGVjdXRpb25SZXN1bHRCdXR0b24ge1xuICBsYWJlbDogc3RyaW5nO1xuICB2YXJpYW50OiBCdXR0b25WYXJpYW50O1xuICBpY29uPzogc3RyaW5nO1xuICBhY3Rpb246IHN0cmluZztcbiAgYnRuU2l6ZT86ICdzbScgfCAnbWQnIHwgJ2xnJztcbiAgZnVsbFdpZHRoPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGYWlsZWRTdGVwIHtcbiAgZmFpbGVkU3RlcDogbnVtYmVyO1xuICBzdGVwVGl0bGU/OiBzdHJpbmc7XG4gIGVycm9yPzogc3RyaW5nO1xuICB0aW1lc3RhbXA/OiBzdHJpbmc7XG4gIHN1Z2dlc3Rpb25zPzogc3RyaW5nO1xuICBhY3R1YWw/OiBzdHJpbmc7XG4gIGV4cGVjdGVkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNraXBwZWRTdGVwIHtcbiAgc3RlcE51bWJlcjogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtZXhlY3V0aW9uLXJlc3VsdC1tb2RhbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9leGVjdXRpb24tcmVzdWx0LW1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBFeGVjdXRpb25SZXN1bHRNb2RhbENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGlzT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzdGF0dXM6IEV4ZWN1dGlvblN0YXR1cyA9ICdwYXNzZWQnO1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHRvdGFsU3RlcHM6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIGNvbXBsZXRlZFN0ZXBzOiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSB0b3RhbFRpbWU6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBhcHBUaW1lOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgdG9vbFRpbWU6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBsYXN0Q29tcGxldGVkU3RlcD86IHN0cmluZztcbiAgQElucHV0KCkgYnV0dG9uczogRXhlY3V0aW9uUmVzdWx0QnV0dG9uW10gPSBbXTtcbiAgQElucHV0KCkgZmFpbGVkU3RlcHM6IEZhaWxlZFN0ZXBbXSA9IFtdO1xuICBASW5wdXQoKSBza2lwcGVkU3RlcHM6IFNraXBwZWRTdGVwW10gPSBbXTtcbiAgQElucHV0KCkgc2hvd1Nlc3Npb25DaGFuZ2VzQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIGJ1dHRvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBjbG9zZU1vZGFsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgc2Vzc2lvbkNoYW5nZXNDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBnZXQgc3RlcHNCYWNrZ3JvdW5kQ2xhc3MoKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHRoaXMuc3RhdHVzKSB7XG4gICAgICBjYXNlICdwYXNzZWQnOlxuICAgICAgICByZXR1cm4gJ2NxYS1iZy1bIzBEQkQ3RDFBXSc7XG4gICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICByZXR1cm4gJ2NxYS1iZy1bI0VFM0YzRjFBXSc7XG4gICAgICBjYXNlICdhYm9ydGVkJzpcbiAgICAgICAgcmV0dXJuICdjcWEtYmctWyNGQkJGMjQxQV0nO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdjcWEtYmctZ3JheS0xMDAnO1xuICAgIH1cbiAgfVxuXG4gIGdldCBzdGVwc0JvcmRlckNsYXNzKCk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0aGlzLnN0YXR1cykge1xuICAgICAgY2FzZSAncGFzc2VkJzpcbiAgICAgICAgcmV0dXJuICcjQkJGN0QwJztcbiAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgIHJldHVybiAnI0ZFQ0FDQSc7XG4gICAgICBjYXNlICdhYm9ydGVkJzpcbiAgICAgICAgcmV0dXJuICcjRkRFNjhBJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnI0U1RTdFQic7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHNob3VsZFNob3dMYXN0Q29tcGxldGVkU3RlcCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0dXMgPT09ICdhYm9ydGVkJyAmJiAhIXRoaXMubGFzdENvbXBsZXRlZFN0ZXA7XG4gIH1cblxuICBnZXQgc2hvdWxkU2hvd0ZhaWxlZFN0ZXBzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0YXR1cyA9PT0gJ2ZhaWxlZCcgJiYgdGhpcy5mYWlsZWRTdGVwcyAmJiB0aGlzLmZhaWxlZFN0ZXBzLmxlbmd0aCA+IDA7XG4gIH1cblxuICBnZXQgc2hvdWxkU2hvd1NraXBwZWRTdGVwcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnNraXBwZWRTdGVwcyAmJiB0aGlzLnNraXBwZWRTdGVwcy5sZW5ndGggPiAwO1xuICB9XG5cbiAgb25CYWNrZHJvcENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IGN1cnJlbnRUYXJnZXQgPSBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIFxuICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQgfHwgdGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygnbW9kYWwtYmFja2Ryb3AnKSkge1xuICAgICAgdGhpcy5vbkNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgb25CdXR0b25DbGljayhidXR0b246IEV4ZWN1dGlvblJlc3VsdEJ1dHRvbik6IHZvaWQge1xuICAgIHRoaXMuYnV0dG9uQ2xpY2suZW1pdChidXR0b24uYWN0aW9uKTtcbiAgfVxuXG4gIG9uQ2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZU1vZGFsLmVtaXQoKTtcbiAgfVxuXG4gIG9uU2Vzc2lvbkNoYW5nZXNDbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLnNlc3Npb25DaGFuZ2VzQ2xpY2suZW1pdCgpO1xuICB9XG4gfVxuIFxuIiwiPGRpdiBcbiAgKm5nSWY9XCJpc09wZW5cIlxuICBjbGFzcz1cIm1vZGFsLWJhY2tkcm9wIGNxYS1maXhlZCBjcWEtaW5zZXQtMCBjcWEtYmctYmxhY2sgY3FhLWJnLW9wYWNpdHktNTAgY3FhLXotWzk5OTldIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS1wLTRcIlxuICAoY2xpY2spPVwib25CYWNrZHJvcENsaWNrKCRldmVudClcIj5cbiAgPGRpdiBcbiAgICBjbGFzcz1cImNxYS1yb3VuZGVkLWxnIGNxYS1iZy13aGl0ZSBjcWEtc2hhZG93LXhsIGNxYS13LWZ1bGwgY3FhLW1heC13LVs1MDBweF0gY3FhLW92ZXJmbG93LWhpZGRlbiBjcWEtcC02IGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTIgY3FhLW1heC1oLVs4NXZoXSBjcWEtb3ZlcmZsb3cteS1hdXRvXCJcbiAgICBzdHlsZT1cImJveC1zaGFkb3c6IDBweCA4cHggOHB4IC00cHggIzEwMTgyODA4O1wiXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgXG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3RhdHVzID09PSAncGFzc2VkJ1wiPlxuICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI5M1wiIGhlaWdodD1cIjkzXCIgdmlld0JveD1cIjAgMCA5MyA5M1wiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgIDxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjg1XCIgaGVpZ2h0PVwiODVcIiByeD1cIjQyLjVcIiBmaWxsPVwiI0FFRTlENFwiLz5cbiAgICAgICAgICAgICAgPHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiODVcIiBoZWlnaHQ9XCI4NVwiIHJ4PVwiNDIuNVwiIHN0cm9rZT1cIiNDRkYyRTVcIiBzdHJva2Utd2lkdGg9XCI4XCIvPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTc1LjI1IDQzLjg1NDlWNDYuNDk5OUM3NS4yNDY1IDUyLjY5OTYgNzMuMjM4OSA1OC43MzIgNjkuNTI2OCA2My42OTc2QzY1LjgxNDcgNjguNjYzMiA2MC41OTY5IDcyLjI5NTcgNTQuNjUxNyA3NC4wNTM2QzQ4LjcwNjQgNzUuODExNCA0Mi4zNTIxIDc1LjYwMDMgMzYuNTM2NiA3My40NTE4QzMwLjcyMTEgNzEuMzAzMyAyNS43NTU5IDY3LjMzMjQgMjIuMzgxNSA2Mi4xMzE0QzE5LjAwNzEgNTYuOTMwNSAxNy40MDQ0IDUwLjc3OCAxNy44MTIzIDQ0LjU5MThDMTguMjIwMiAzOC40MDU1IDIwLjYxNyAzMi41MTY4IDI0LjY0NTEgMjcuODAzOUMyOC42NzMxIDIzLjA5MTEgMzQuMTE2OCAxOS44MDY2IDQwLjE2NCAxOC40NDAzQzQ2LjIxMTMgMTcuMDc0IDUyLjUzODMgMTcuNjk5MSA1OC4yMDEzIDIwLjIyMjRNNzUuMjUgMjMuNDk5OUw0Ni41IDUyLjI3ODZMMzcuODc1IDQzLjY1MzZcIiBzdHJva2U9XCIjMERCRDdEXCIgc3Ryb2tlLXdpZHRoPVwiNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIDwvZGl2PlxuICBcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3RhdHVzID09PSAnZmFpbGVkJ1wiPlxuICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI5M1wiIGhlaWdodD1cIjkzXCIgdmlld0JveD1cIjAgMCA5MyA5M1wiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgIDxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjg1XCIgaGVpZ2h0PVwiODVcIiByeD1cIjQyLjVcIiBmaWxsPVwiI0Y5QkZCRlwiLz5cbiAgICAgICAgICAgICAgPHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiODVcIiBoZWlnaHQ9XCI4NVwiIHJ4PVwiNDIuNVwiIHN0cm9rZT1cIiNGQ0Q5RDlcIiBzdHJva2Utd2lkdGg9XCI4XCIvPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTU1LjEyNSAzNy44NzVMMzcuODc1IDU1LjEyNU0zNy44NzUgMzcuODc1TDU1LjEyNSA1NS4xMjVNNzUuMjUgNDYuNUM3NS4yNSA2Mi4zNzgyIDYyLjM3ODIgNzUuMjUgNDYuNSA3NS4yNUMzMC42MjE4IDc1LjI1IDE3Ljc1IDYyLjM3ODIgMTcuNzUgNDYuNUMxNy43NSAzMC42MjE4IDMwLjYyMTggMTcuNzUgNDYuNSAxNy43NUM2Mi4zNzgyIDE3Ljc1IDc1LjI1IDMwLjYyMTggNzUuMjUgNDYuNVpcIiBzdHJva2U9XCIjRUUzRjNGXCIgc3Ryb2tlLXdpZHRoPVwiNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPC9kaXY+XG4gIFxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdGF0dXMgPT09ICdhYm9ydGVkJ1wiPlxuICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI5M1wiIGhlaWdodD1cIjkzXCIgdmlld0JveD1cIjAgMCA5MyA5M1wiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgIDxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjg1XCIgaGVpZ2h0PVwiODVcIiByeD1cIjQyLjVcIiBmaWxsPVwiI0ZFRUNCRFwiLz5cbiAgICAgICAgICAgICAgPHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiODVcIiBoZWlnaHQ9XCI4NVwiIHJ4PVwiNDIuNVwiIHN0cm9rZT1cIiNGRkY5RTlcIiBzdHJva2Utd2lkdGg9XCI4XCIvPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTQ2LjUgMTcuNzVDMzAuNjMgMTcuNzUgMTcuNzUgMzAuNjMgMTcuNzUgNDYuNUMxNy43NSA2Mi4zNyAzMC42MyA3NS4yNSA0Ni41IDc1LjI1QzYyLjM3IDc1LjI1IDc1LjI1IDYyLjM3IDc1LjI1IDQ2LjVDNzUuMjUgMzAuNjMgNjIuMzcgMTcuNzUgNDYuNSAxNy43NVpNNDYuNSA2OS41QzMzLjc5MjUgNjkuNSAyMy41IDU5LjIwNzUgMjMuNSA0Ni41QzIzLjUgMzMuNzkyNSAzMy43OTI1IDIzLjUgNDYuNSAyMy41QzU5LjIwNzUgMjMuNSA2OS41IDMzLjc5MjUgNjkuNSA0Ni41QzY5LjUgNTkuMjA3NSA1OS4yMDc1IDY5LjUgNDYuNSA2OS41Wk01OCA1OEgzNVYzNUg1OFY1OFpcIiBmaWxsPVwiI0ZCQkYyNFwiLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPC9kaXY+XG4gIFxuICAgICAgICA8aDIgY2xhc3M9XCJjcWEtdGV4dC1bMjJweF0gY3FhLWZvbnQtc2VtaWJvbGQgY3FhLXRleHQtWyMwQjBCMENdIGNxYS1tdC1bMjBweF0gY3FhLWxlYWRpbmctWzI4cHhdXCI+XG4gICAgICAgICAge3sgdGl0bGUgfX1cbiAgICAgICAgPC9oMj5cbiAgICAgIDwvZGl2PlxuICBcbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtcm91bmRlZC1sZyBjcWEtYm9yZGVyIGNxYS1wLVsxN3B4XSBjcWEtbXktMlwiXG4gICAgICAgICAgIFtuZ0NsYXNzXT1cInN0ZXBzQmFja2dyb3VuZENsYXNzXCIgc3R5bGU9XCJib3JkZXI6IDFweCBzb2xpZDtcIiBbc3R5bGUuYm9yZGVyLWNvbG9yXT1cInN0ZXBzQm9yZGVyQ2xhc3NcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1ncmlkIHNtOmNxYS1mbGV4IHNtOmNxYS1qdXN0aWZ5LWJldHdlZW4gc206Y3FhLWl0ZW1zLWNlbnRlciBjcWEtZ3JpZC1jb2xzLTIgc206Y3FhLWdyaWQtY29scy00IGNxYS1nYXAtNCBzbTpjcWEtZ2FwLTJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sXCIgKm5nSWY9XCJ0b3RhbFN0ZXBzXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LXhzIGNxYS10ZXh0LVsjNEE1NTY1XSBjcWEtbWItMVwiPlRvdGFsIFN0ZXBzPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bMThweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjMTAxODI4XVwiPlxuICAgICAgICAgICAgICB7eyBjb21wbGV0ZWRTdGVwcyB9fSAvIHt7IHRvdGFsU3RlcHMgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbFwiICpuZ0lmPVwidG90YWxUaW1lXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LXhzIGNxYS10ZXh0LVsjNEE1NTY1XSBjcWEtbWItMVwiPlRvdGFsIFRpbWU8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxOHB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyMxMDE4MjhdXCI+XG4gICAgICAgICAgICAgIHt7IHRvdGFsVGltZSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICBcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sXCIgKm5nSWY9XCJhcHBUaW1lXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LXhzIGNxYS10ZXh0LVsjNEE1NTY1XSBjcWEtbWItMVwiPkFwcCBUaW1lPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bMThweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjMTAxODI4XVwiPlxuICAgICAgICAgICAgICB7eyBhcHBUaW1lIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gIFxuICAgICAgICAgIDwhLS1cbiAgICAgICAgICAgIFRvb2wgVGltZSBpcyBoaWRkZW4gdW50aWwgQkUgcHJvdmlkZXMgcmVhbCB2YWx1ZXMgKENPTi05MDkpLlxuICAgICAgICAgICAgVHJhY2tpbmcgdGlja2V0OiBodHRwczovL2xpbmVhci5hcHAvY29udGV4dHFhL2lzc3VlL0NPTi05MDlcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sXCIgKm5nSWY9XCJ0b29sVGltZVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC14cyBjcWEtdGV4dC1bIzRBNTU2NV0gY3FhLW1iLTFcIj5Ub29sIFRpbWU8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxOHB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyMxMDE4MjhdXCI+XG4gICAgICAgICAgICAgIHt7IHRvb2xUaW1lIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgLS0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCJzaG91bGRTaG93TGFzdENvbXBsZXRlZFN0ZXBcIiBjbGFzcz1cImNxYS1teS0yIGNxYS1wLVsxN3B4XSBjcWEtcm91bmRlZC1bMTBweF0gY3FhLW1heC1oLVsyMDBweF0gY3FhLW1pbi1oLVs4MHB4XSBjcWEtb3ZlcmZsb3cteS1hdXRvXCIgc3R5bGU9XCJib3JkZXI6IDFweCBzb2xpZCAjRTVFN0VCOyBzY3JvbGxiYXItd2lkdGg6IHRoaW47IGJhY2tncm91bmQtY29sb3I6ICNGOUZBRkI7XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLXRleHQtWyMzNjQxNTNdIGNxYS1tYi0xIGNxYS1sZWFkaW5nLVsxOHB4XVwiPlxuICAgICAgICAgIExhc3QgY29tcGxldGVkIHN0ZXA6XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS1mb250LXNlbWlib2xkIGNxYS10ZXh0LVsjMTAxODI4XSBjcWEtbGVhZGluZy1bMThweF1cIiBzdHlsZT1cIndvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XCI+XG4gICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJsYXN0Q29tcGxldGVkU3RlcFwiPjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiAqbmdJZj1cInNob3VsZFNob3dTa2lwcGVkU3RlcHNcIlxuICAgICAgY2xhc3M9XCJjcWEtcm91bmRlZC1sZyBjcWEtcC1bMTdweF0gY3FhLW15LTIgY3FhLW1heC1oLVsyMDBweF0gY3FhLW1pbi1oLVs4MHB4XSBjcWEtb3ZlcmZsb3cteS1hdXRvXCJcbiAgICAgIHN0eWxlPVwiYm9yZGVyOiAxcHggc29saWQgI0U1RTdFQjsgc2Nyb2xsYmFyLXdpZHRoOiB0aGluOyBiYWNrZ3JvdW5kLWNvbG9yOiAjRjlGQUZCO1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS10ZXh0LVsjMzY0MTUzXSBjcWEtbWItMiBjcWEtbGVhZGluZy1bMThweF1cIj5cbiAgICAgICAgICB7eyBza2lwcGVkU3RlcHMubGVuZ3RoIH19IHN0ZXB7eyBza2lwcGVkU3RlcHMubGVuZ3RoID09PSAxID8gJycgOiAncycgfX0gc2tpcHBlZCBkdXJpbmcgZXhlY3V0aW9uIChhcyBjb25maWd1cmVkKSA6XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMVwiPlxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHNraXBwZWQgb2Ygc2tpcHBlZFN0ZXBzXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtZm9udC1zZW1pYm9sZCBjcWEtdGV4dC1bIzEwMTgyOF0gY3FhLWxlYWRpbmctWzE4cHhdXCJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIndvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XCI+XG4gICAgICAgICAgICBTdGVwIHt7IHNraXBwZWQuc3RlcE51bWJlciB9fTxzcGFuICpuZ0lmPVwic2tpcHBlZC5sYWJlbFwiPjoge3sgc2tpcHBlZC5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiAqbmdJZj1cInNob3VsZFNob3dGYWlsZWRTdGVwc1wiIGNsYXNzPVwiY3FhLW15LTIgY3FhLW1heC1oLVszMDBweF0gY3FhLW1pbi1oLVsxMDBweF0gY3FhLW92ZXJmbG93LXktYXV0b1wiIHN0eWxlPVwic2Nyb2xsYmFyLXdpZHRoOiB0aGluO1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtM1wiPlxuICAgICAgICAgIDxkaXYgXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgZmFpbGVkU3RlcCBvZiBmYWlsZWRTdGVwc1wiIFxuICAgICAgICAgICAgY2xhc3M9XCJjcWEtcm91bmRlZC1sZyBjcWEtcC1bMTdweF0gY3FhLWJnLVsjRkVGMkYyXVwiXG4gICAgICAgICAgICBzdHlsZT1cImJvcmRlcjogMXB4IHNvbGlkICNGRUNBQ0E7XCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZmFpbGVkU3RlcD8uZmFpbGVkU3RlcFwiIGNsYXNzPVwiY3FhLXRleHQtc20gY3FhLWZvbnQtc2VtaWJvbGQgY3FhLXRleHQtWyMxMTE4MjddIGNxYS1tYi0yIGNxYS1sZWFkaW5nLVsxOHB4XVwiPlxuICAgICAgICAgICAgICBGYWlsZWQgYXQgU3RlcCB7eyBmYWlsZWRTdGVwLmZhaWxlZFN0ZXAgfX08c3BhbiAqbmdJZj1cImZhaWxlZFN0ZXAuc3RlcFRpdGxlXCI+OiB7eyBmYWlsZWRTdGVwLnN0ZXBUaXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZhaWxlZFN0ZXAuZXJyb3JcIiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtdGV4dC1bI0I5MUMxQ10gY3FhLW1iLTEgY3FhLXdoaXRlc3BhY2Utbm9ybWFsIGNxYS1icmVhay1hbnl3aGVyZVwiIHN0eWxlPVwid29yZC1icmVhazogYnJlYWstd29yZDtcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtZm9udC1ib2xkXCI+RXJyb3I6PC9zcGFuPiB7eyBmYWlsZWRTdGVwLmVycm9yIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmYWlsZWRTdGVwLmFjdHVhbFwiIGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS10ZXh0LVsjQjkxQzFDXSBjcWEtbWItMSBjcWEtd2hpdGVzcGFjZS1ub3JtYWwgY3FhLWJyZWFrLWFueXdoZXJlXCIgc3R5bGU9XCJ3b3JkLWJyZWFrOiBicmVhay13b3JkO1wiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1mb250LWJvbGRcIj5BY3R1YWw6PC9zcGFuPiB7eyBmYWlsZWRTdGVwLmFjdHVhbCB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZmFpbGVkU3RlcC5leHBlY3RlZFwiIGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS10ZXh0LVsjQjkxQzFDXSBjcWEtbWItMiBjcWEtd2hpdGVzcGFjZS1ub3JtYWwgY3FhLWJyZWFrLWFueXdoZXJlXCIgc3R5bGU9XCJ3b3JkLWJyZWFrOiBicmVhay13b3JkO1wiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1mb250LWJvbGRcIj5FeHBlY3RlZDo8L3NwYW4+IHt7IGZhaWxlZFN0ZXAuZXhwZWN0ZWQgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZhaWxlZFN0ZXAuc3VnZ2VzdGlvbnNcIiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtdGV4dC1bI0I5MUMxQ10gY3FhLW1iLTEgY3FhLXdoaXRlc3BhY2Utbm9ybWFsIGNxYS1icmVhay1hbnl3aGVyZVwiIHN0eWxlPVwid29yZC1icmVhazogYnJlYWstd29yZDtcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtZm9udC1ib2xkXCI+U3VnZ2VzdGlvbnM6PC9zcGFuPiB7eyBmYWlsZWRTdGVwLnN1Z2dlc3Rpb25zIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmYWlsZWRTdGVwLnRpbWVzdGFtcFwiIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTEgY3FhLXRleHQtWzEycHhdIGNxYS10ZXh0LVsjNjM2MzYzXVwiPlxuICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYgMVY2TDkgNy41XCIgc3Ryb2tlPVwiIzYzNjM2M1wiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiNlwiIGN5PVwiNlwiIHI9XCI1XCIgc3Ryb2tlPVwiIzYzNjM2M1wiIHN0cm9rZS13aWR0aD1cIjEuNVwiLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgIDxzcGFuPlZpZXcgc2NyZWVuc2hvdCBhdCB7eyBmYWlsZWRTdGVwLnRpbWVzdGFtcCB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICBcbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC1bMjBweF1cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIGJ1dHRvbnM7IGxldCBsYXN0ID0gbGFzdFwiPlxuICAgICAgICAgIDxjcWEtYnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cInNob3dTZXNzaW9uQ2hhbmdlc0J1dHRvbiAmJiBsYXN0XCJcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgICB0ZXh0PVwiUmV2aWV3IFNlc3Npb24gQ2hhbmdlc1wiXG4gICAgICAgICAgICBidG5TaXplPVwibGdcIlxuICAgICAgICAgICAgW2Z1bGxXaWR0aF09XCJ0cnVlXCJcbiAgICAgICAgICAgIChjbGlja2VkKT1cIm9uU2Vzc2lvbkNoYW5nZXNDbGljaygpXCI+XG4gICAgICAgICAgPC9jcWEtYnV0dG9uPlxuICAgICAgICAgIDxjcWEtYnV0dG9uXG4gICAgICAgICAgICBbdmFyaWFudF09XCJidXR0b24udmFyaWFudFwiXG4gICAgICAgICAgICBbdGV4dF09XCJidXR0b24ubGFiZWxcIlxuICAgICAgICAgICAgW2ljb25dPVwiYnV0dG9uLmljb25cIlxuICAgICAgICAgICAgW2J0blNpemVdPVwiYnV0dG9uLmJ0blNpemUgfHwgJ2xnJ1wiXG4gICAgICAgICAgICBbZnVsbFdpZHRoXT1cImJ1dHRvbi5mdWxsV2lkdGggIT09IHVuZGVmaW5lZCA/IGJ1dHRvbi5mdWxsV2lkdGggOiB0cnVlXCJcbiAgICAgICAgICAgIChjbGlja2VkKT1cIm9uQnV0dG9uQ2xpY2soYnV0dG9uKVwiPlxuICAgICAgICAgIDwvY3FhLWJ1dHRvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiJdfQ==
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uLXJlc3VsdC1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2V4ZWN1dGlvbi1yZXN1bHQtbW9kYWwvZXhlY3V0aW9uLXJlc3VsdC1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2V4ZWN1dGlvbi1yZXN1bHQtbW9kYWwvZXhlY3V0aW9uLXJlc3VsdC1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBa0N2RSxNQUFNLE9BQU8sNkJBQTZCO0lBTDFDO1FBTVcsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUN4QixXQUFNLEdBQW9CLFFBQVEsQ0FBQztRQUNuQyxVQUFLLEdBQVcsRUFBRSxDQUFDO1FBQ25CLGVBQVUsR0FBVyxDQUFDLENBQUM7UUFDdkIsbUJBQWMsR0FBVyxDQUFDLENBQUM7UUFDM0IsY0FBUyxHQUFXLEVBQUUsQ0FBQztRQUN2QixZQUFPLEdBQVcsRUFBRSxDQUFDO1FBQ3JCLGFBQVEsR0FBVyxFQUFFLENBQUM7UUFFdEIsWUFBTyxHQUE0QixFQUFFLENBQUM7UUFDdEMsZ0JBQVcsR0FBaUIsRUFBRSxDQUFDO1FBQy9CLGlCQUFZLEdBQWtCLEVBQUUsQ0FBQztRQUNqQyw2QkFBd0IsR0FBWSxLQUFLLENBQUM7UUFHekMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3pDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3RDLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7S0FnRXpEO0lBOURBLElBQUksb0JBQW9CO1FBQ3RCLFFBQVEsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNuQixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxvQkFBb0IsQ0FBQztZQUM5QixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxvQkFBb0IsQ0FBQztZQUM5QixLQUFLLFNBQVM7Z0JBQ1osT0FBTyxvQkFBb0IsQ0FBQztZQUM5QjtnQkFDRSxPQUFPLGlCQUFpQixDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2xCLFFBQVEsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNuQixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxTQUFTLENBQUM7WUFDbkIsS0FBSyxRQUFRO2dCQUNYLE9BQU8sU0FBUyxDQUFDO1lBQ25CLEtBQUssU0FBUztnQkFDWixPQUFPLFNBQVMsQ0FBQztZQUNuQjtnQkFDRSxPQUFPLFNBQVMsQ0FBQztTQUNwQjtJQUNILENBQUM7SUFFRCxJQUFJLDJCQUEyQjtRQUM3QixPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDL0QsQ0FBQztJQUVELElBQUkscUJBQXFCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVELElBQUksaUNBQWlDO1FBQ25DLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSSxzQkFBc0I7UUFDeEIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFpQjtRQUMvQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBcUIsQ0FBQztRQUMzQyxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsYUFBNEIsQ0FBQztRQUV6RCxJQUFJLE1BQU0sS0FBSyxhQUFhLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtZQUMzRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDaEI7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQTZCO1FBQ3pDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEMsQ0FBQzs7MEhBakZVLDZCQUE2Qjs4R0FBN0IsNkJBQTZCLCtrQkNsQzFDLHdoVkF1S0E7MkZEcklhLDZCQUE2QjtrQkFMekMsU0FBUzsrQkFDRSw0QkFBNEI7OEJBSzdCLE1BQU07c0JBQWQsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFDRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCdXR0b25WYXJpYW50IH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuXG5leHBvcnQgdHlwZSBFeGVjdXRpb25TdGF0dXMgPSAncGFzc2VkJyB8ICdmYWlsZWQnIHwgJ2Fib3J0ZWQnIHwgJ2Vycm9yJztcblxuZXhwb3J0IGludGVyZmFjZSBFeGVjdXRpb25SZXN1bHRCdXR0b24ge1xuICBsYWJlbDogc3RyaW5nO1xuICB2YXJpYW50OiBCdXR0b25WYXJpYW50O1xuICBpY29uPzogc3RyaW5nO1xuICBhY3Rpb246IHN0cmluZztcbiAgYnRuU2l6ZT86ICdzbScgfCAnbWQnIHwgJ2xnJztcbiAgZnVsbFdpZHRoPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGYWlsZWRTdGVwIHtcbiAgZmFpbGVkU3RlcDogbnVtYmVyO1xuICBzdGVwVGl0bGU/OiBzdHJpbmc7XG4gIGVycm9yPzogc3RyaW5nO1xuICB0aW1lc3RhbXA/OiBzdHJpbmc7XG4gIHN1Z2dlc3Rpb25zPzogc3RyaW5nO1xuICBhY3R1YWw/OiBzdHJpbmc7XG4gIGV4cGVjdGVkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNraXBwZWRTdGVwIHtcbiAgc3RlcE51bWJlcjogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtZXhlY3V0aW9uLXJlc3VsdC1tb2RhbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9leGVjdXRpb24tcmVzdWx0LW1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBFeGVjdXRpb25SZXN1bHRNb2RhbENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGlzT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzdGF0dXM6IEV4ZWN1dGlvblN0YXR1cyA9ICdwYXNzZWQnO1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHRvdGFsU3RlcHM6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIGNvbXBsZXRlZFN0ZXBzOiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSB0b3RhbFRpbWU6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBhcHBUaW1lOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgdG9vbFRpbWU6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBsYXN0Q29tcGxldGVkU3RlcD86IHN0cmluZztcbiAgQElucHV0KCkgYnV0dG9uczogRXhlY3V0aW9uUmVzdWx0QnV0dG9uW10gPSBbXTtcbiAgQElucHV0KCkgZmFpbGVkU3RlcHM6IEZhaWxlZFN0ZXBbXSA9IFtdO1xuICBASW5wdXQoKSBza2lwcGVkU3RlcHM6IFNraXBwZWRTdGVwW10gPSBbXTtcbiAgQElucHV0KCkgc2hvd1Nlc3Npb25DaGFuZ2VzQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGpvaW5lZEluUHJvZ3Jlc3NNZXNzYWdlPzogc3RyaW5nO1xuXG4gIEBPdXRwdXQoKSBidXR0b25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgY2xvc2VNb2RhbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHNlc3Npb25DaGFuZ2VzQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgZ2V0IHN0ZXBzQmFja2dyb3VuZENsYXNzKCk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0aGlzLnN0YXR1cykge1xuICAgICAgY2FzZSAncGFzc2VkJzpcbiAgICAgICAgcmV0dXJuICdjcWEtYmctWyMwREJEN0QxQV0nO1xuICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgcmV0dXJuICdjcWEtYmctWyNFRTNGM0YxQV0nO1xuICAgICAgY2FzZSAnYWJvcnRlZCc6XG4gICAgICAgIHJldHVybiAnY3FhLWJnLVsjRkJCRjI0MUFdJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnY3FhLWJnLWdyYXktMTAwJztcbiAgICB9XG4gIH1cblxuICBnZXQgc3RlcHNCb3JkZXJDbGFzcygpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodGhpcy5zdGF0dXMpIHtcbiAgICAgIGNhc2UgJ3Bhc3NlZCc6XG4gICAgICAgIHJldHVybiAnI0JCRjdEMCc7XG4gICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICByZXR1cm4gJyNGRUNBQ0EnO1xuICAgICAgY2FzZSAnYWJvcnRlZCc6XG4gICAgICAgIHJldHVybiAnI0ZERTY4QSc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJyNFNUU3RUInO1xuICAgIH1cbiAgfVxuXG4gIGdldCBzaG91bGRTaG93TGFzdENvbXBsZXRlZFN0ZXAoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdHVzID09PSAnYWJvcnRlZCcgJiYgISF0aGlzLmxhc3RDb21wbGV0ZWRTdGVwO1xuICB9XG5cbiAgZ2V0IHNob3VsZFNob3dGYWlsZWRTdGVwcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0dXMgPT09ICdmYWlsZWQnICYmIHRoaXMuZmFpbGVkU3RlcHMgJiYgdGhpcy5mYWlsZWRTdGVwcy5sZW5ndGggPiAwO1xuICB9XG5cbiAgZ2V0IHNob3VsZFNob3dKb2luZWRJblByb2dyZXNzTWVzc2FnZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmpvaW5lZEluUHJvZ3Jlc3NNZXNzYWdlO1xuICB9XG5cbiAgZ2V0IHNob3VsZFNob3dTa2lwcGVkU3RlcHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5za2lwcGVkU3RlcHMgJiYgdGhpcy5za2lwcGVkU3RlcHMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIG9uQmFja2Ryb3BDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBjb25zdCBjdXJyZW50VGFyZ2V0ID0gZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBcbiAgICBpZiAodGFyZ2V0ID09PSBjdXJyZW50VGFyZ2V0IHx8IHRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ21vZGFsLWJhY2tkcm9wJykpIHtcbiAgICAgIHRoaXMub25DbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uQnV0dG9uQ2xpY2soYnV0dG9uOiBFeGVjdXRpb25SZXN1bHRCdXR0b24pOiB2b2lkIHtcbiAgICB0aGlzLmJ1dHRvbkNsaWNrLmVtaXQoYnV0dG9uLmFjdGlvbik7XG4gIH1cblxuICBvbkNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VNb2RhbC5lbWl0KCk7XG4gIH1cblxuICBvblNlc3Npb25DaGFuZ2VzQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5zZXNzaW9uQ2hhbmdlc0NsaWNrLmVtaXQoKTtcbiAgfVxuIH1cbiBcbiIsIjxkaXYgXG4gICpuZ0lmPVwiaXNPcGVuXCJcbiAgY2xhc3M9XCJtb2RhbC1iYWNrZHJvcCBjcWEtZml4ZWQgY3FhLWluc2V0LTAgY3FhLWJnLWJsYWNrIGNxYS1iZy1vcGFjaXR5LTUwIGNxYS16LVs5OTk5XSBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtcC00XCJcbiAgKGNsaWNrKT1cIm9uQmFja2Ryb3BDbGljaygkZXZlbnQpXCI+XG4gIDxkaXYgXG4gICAgY2xhc3M9XCJjcWEtcm91bmRlZC1sZyBjcWEtYmctd2hpdGUgY3FhLXNoYWRvdy14bCBjcWEtdy1mdWxsIGNxYS1tYXgtdy1bNTAwcHhdIGNxYS1vdmVyZmxvdy1oaWRkZW4gY3FhLXAtNiBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0yIGNxYS1tYXgtaC1bODV2aF0gY3FhLW92ZXJmbG93LXktYXV0b1wiXG4gICAgc3R5bGU9XCJib3gtc2hhZG93OiAwcHggOHB4IDhweCAtNHB4ICMxMDE4MjgwODtcIlxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgIFxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInN0YXR1cyA9PT0gJ3Bhc3NlZCdcIj5cbiAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiOTNcIiBoZWlnaHQ9XCI5M1wiIHZpZXdCb3g9XCIwIDAgOTMgOTNcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICA8cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI4NVwiIGhlaWdodD1cIjg1XCIgcng9XCI0Mi41XCIgZmlsbD1cIiNBRUU5RDRcIi8+XG4gICAgICAgICAgICAgIDxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjg1XCIgaGVpZ2h0PVwiODVcIiByeD1cIjQyLjVcIiBzdHJva2U9XCIjQ0ZGMkU1XCIgc3Ryb2tlLXdpZHRoPVwiOFwiLz5cbiAgICAgICAgICAgICAgPHBhdGggZD1cIk03NS4yNSA0My44NTQ5VjQ2LjQ5OTlDNzUuMjQ2NSA1Mi42OTk2IDczLjIzODkgNTguNzMyIDY5LjUyNjggNjMuNjk3NkM2NS44MTQ3IDY4LjY2MzIgNjAuNTk2OSA3Mi4yOTU3IDU0LjY1MTcgNzQuMDUzNkM0OC43MDY0IDc1LjgxMTQgNDIuMzUyMSA3NS42MDAzIDM2LjUzNjYgNzMuNDUxOEMzMC43MjExIDcxLjMwMzMgMjUuNzU1OSA2Ny4zMzI0IDIyLjM4MTUgNjIuMTMxNEMxOS4wMDcxIDU2LjkzMDUgMTcuNDA0NCA1MC43NzggMTcuODEyMyA0NC41OTE4QzE4LjIyMDIgMzguNDA1NSAyMC42MTcgMzIuNTE2OCAyNC42NDUxIDI3LjgwMzlDMjguNjczMSAyMy4wOTExIDM0LjExNjggMTkuODA2NiA0MC4xNjQgMTguNDQwM0M0Ni4yMTEzIDE3LjA3NCA1Mi41MzgzIDE3LjY5OTEgNTguMjAxMyAyMC4yMjI0TTc1LjI1IDIzLjQ5OTlMNDYuNSA1Mi4yNzg2TDM3Ljg3NSA0My42NTM2XCIgc3Ryb2tlPVwiIzBEQkQ3RFwiIHN0cm9rZS13aWR0aD1cIjRcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8L2Rpdj5cbiAgXG4gICAgICAgICAgPGRpdiAqbmdJZj1cInN0YXR1cyA9PT0gJ2ZhaWxlZCdcIj5cbiAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiOTNcIiBoZWlnaHQ9XCI5M1wiIHZpZXdCb3g9XCIwIDAgOTMgOTNcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICA8cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI4NVwiIGhlaWdodD1cIjg1XCIgcng9XCI0Mi41XCIgZmlsbD1cIiNGOUJGQkZcIi8+XG4gICAgICAgICAgICAgIDxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjg1XCIgaGVpZ2h0PVwiODVcIiByeD1cIjQyLjVcIiBzdHJva2U9XCIjRkNEOUQ5XCIgc3Ryb2tlLXdpZHRoPVwiOFwiLz5cbiAgICAgICAgICAgICAgPHBhdGggZD1cIk01NS4xMjUgMzcuODc1TDM3Ljg3NSA1NS4xMjVNMzcuODc1IDM3Ljg3NUw1NS4xMjUgNTUuMTI1TTc1LjI1IDQ2LjVDNzUuMjUgNjIuMzc4MiA2Mi4zNzgyIDc1LjI1IDQ2LjUgNzUuMjVDMzAuNjIxOCA3NS4yNSAxNy43NSA2Mi4zNzgyIDE3Ljc1IDQ2LjVDMTcuNzUgMzAuNjIxOCAzMC42MjE4IDE3Ljc1IDQ2LjUgMTcuNzVDNjIuMzc4MiAxNy43NSA3NS4yNSAzMC42MjE4IDc1LjI1IDQ2LjVaXCIgc3Ryb2tlPVwiI0VFM0YzRlwiIHN0cm9rZS13aWR0aD1cIjRcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIDwvZGl2PlxuICBcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3RhdHVzID09PSAnYWJvcnRlZCdcIj5cbiAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiOTNcIiBoZWlnaHQ9XCI5M1wiIHZpZXdCb3g9XCIwIDAgOTMgOTNcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICA8cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI4NVwiIGhlaWdodD1cIjg1XCIgcng9XCI0Mi41XCIgZmlsbD1cIiNGRUVDQkRcIi8+XG4gICAgICAgICAgICAgIDxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjg1XCIgaGVpZ2h0PVwiODVcIiByeD1cIjQyLjVcIiBzdHJva2U9XCIjRkZGOUU5XCIgc3Ryb2tlLXdpZHRoPVwiOFwiLz5cbiAgICAgICAgICAgICAgPHBhdGggZD1cIk00Ni41IDE3Ljc1QzMwLjYzIDE3Ljc1IDE3Ljc1IDMwLjYzIDE3Ljc1IDQ2LjVDMTcuNzUgNjIuMzcgMzAuNjMgNzUuMjUgNDYuNSA3NS4yNUM2Mi4zNyA3NS4yNSA3NS4yNSA2Mi4zNyA3NS4yNSA0Ni41Qzc1LjI1IDMwLjYzIDYyLjM3IDE3Ljc1IDQ2LjUgMTcuNzVaTTQ2LjUgNjkuNUMzMy43OTI1IDY5LjUgMjMuNSA1OS4yMDc1IDIzLjUgNDYuNUMyMy41IDMzLjc5MjUgMzMuNzkyNSAyMy41IDQ2LjUgMjMuNUM1OS4yMDc1IDIzLjUgNjkuNSAzMy43OTI1IDY5LjUgNDYuNUM2OS41IDU5LjIwNzUgNTkuMjA3NSA2OS41IDQ2LjUgNjkuNVpNNTggNThIMzVWMzVINThWNThaXCIgZmlsbD1cIiNGQkJGMjRcIi8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIDwvZGl2PlxuICBcbiAgICAgICAgPGgyIGNsYXNzPVwiY3FhLXRleHQtWzIycHhdIGNxYS1mb250LXNlbWlib2xkIGNxYS10ZXh0LVsjMEIwQjBDXSBjcWEtbXQtWzIwcHhdIGNxYS1sZWFkaW5nLVsyOHB4XVwiPlxuICAgICAgICAgIHt7IHRpdGxlIH19XG4gICAgICAgIDwvaDI+XG4gICAgICA8L2Rpdj5cbiAgXG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLXJvdW5kZWQtbGcgY3FhLWJvcmRlciBjcWEtcC1bMTdweF0gY3FhLW15LTJcIlxuICAgICAgICAgICBbbmdDbGFzc109XCJzdGVwc0JhY2tncm91bmRDbGFzc1wiIHN0eWxlPVwiYm9yZGVyOiAxcHggc29saWQ7XCIgW3N0eWxlLmJvcmRlci1jb2xvcl09XCJzdGVwc0JvcmRlckNsYXNzXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZ3JpZCBzbTpjcWEtZmxleCBzbTpjcWEtanVzdGlmeS1iZXR3ZWVuIHNtOmNxYS1pdGVtcy1jZW50ZXIgY3FhLWdyaWQtY29scy0yIHNtOmNxYS1ncmlkLWNvbHMtNCBjcWEtZ2FwLTQgc206Y3FhLWdhcC0yXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbFwiICpuZ0lmPVwidG90YWxTdGVwc1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC14cyBjcWEtdGV4dC1bIzRBNTU2NV0gY3FhLW1iLTFcIj5Ub3RhbCBTdGVwczwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWzE4cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bIzEwMTgyOF1cIj5cbiAgICAgICAgICAgICAge3sgY29tcGxldGVkU3RlcHMgfX0gLyB7eyB0b3RhbFN0ZXBzIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gIFxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2xcIiAqbmdJZj1cInRvdGFsVGltZSAmJiAhc2hvdWxkU2hvd0pvaW5lZEluUHJvZ3Jlc3NNZXNzYWdlXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LXhzIGNxYS10ZXh0LVsjNEE1NTY1XSBjcWEtbWItMVwiPlRvdGFsIFRpbWU8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxOHB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyMxMDE4MjhdXCI+XG4gICAgICAgICAgICAgIHt7IHRvdGFsVGltZSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbFwiICpuZ0lmPVwiYXBwVGltZSAmJiAhc2hvdWxkU2hvd0pvaW5lZEluUHJvZ3Jlc3NNZXNzYWdlXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LXhzIGNxYS10ZXh0LVsjNEE1NTY1XSBjcWEtbWItMVwiPkFwcCBUaW1lPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bMThweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjMTAxODI4XVwiPlxuICAgICAgICAgICAgICB7eyBhcHBUaW1lIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gIFxuICAgICAgICAgIDwhLS1cbiAgICAgICAgICAgIFRvb2wgVGltZSBpcyBoaWRkZW4gdW50aWwgQkUgcHJvdmlkZXMgcmVhbCB2YWx1ZXMgKENPTi05MDkpLlxuICAgICAgICAgICAgVHJhY2tpbmcgdGlja2V0OiBodHRwczovL2xpbmVhci5hcHAvY29udGV4dHFhL2lzc3VlL0NPTi05MDlcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sXCIgKm5nSWY9XCJ0b29sVGltZVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC14cyBjcWEtdGV4dC1bIzRBNTU2NV0gY3FhLW1iLTFcIj5Ub29sIFRpbWU8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxOHB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyMxMDE4MjhdXCI+XG4gICAgICAgICAgICAgIHt7IHRvb2xUaW1lIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgLS0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCJzaG91bGRTaG93Sm9pbmVkSW5Qcm9ncmVzc01lc3NhZ2VcIlxuICAgICAgICAgICBjbGFzcz1cImNxYS1yb3VuZGVkLVsxMHB4XSBjcWEtcC1bMTdweF0gY3FhLW15LTIgY3FhLXRleHQtWzEycHhdIGNxYS10ZXh0LVsjMzY0MTUzXSBjcWEtbGVhZGluZy1bMThweF1cIlxuICAgICAgICAgICBzdHlsZT1cImJvcmRlcjogMXB4IHNvbGlkICNDN0QyRkU7IGJhY2tncm91bmQtY29sb3I6ICNFRUYyRkY7XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtc3RhcnQgY3FhLWdhcC0yXCI+XG4gICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3R5bGU9XCJmbGV4LXNocmluazogMDsgbWFyZ2luLXRvcDogMXB4O1wiPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiIHN0cm9rZT1cIiM2MzY2RjFcIiBzdHJva2Utd2lkdGg9XCIyXCIvPlxuICAgICAgICAgICAgPHBhdGggZD1cIk0xMiA4aC4wMU0xMSAxMmgxdjRoMVwiIHN0cm9rZT1cIiM2MzY2RjFcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIDxzcGFuPnt7IGpvaW5lZEluUHJvZ3Jlc3NNZXNzYWdlIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwic2hvdWxkU2hvd0xhc3RDb21wbGV0ZWRTdGVwXCIgY2xhc3M9XCJjcWEtbXktMiBjcWEtcC1bMTdweF0gY3FhLXJvdW5kZWQtWzEwcHhdIGNxYS1tYXgtaC1bMjAwcHhdIGNxYS1taW4taC1bODBweF0gY3FhLW92ZXJmbG93LXktYXV0b1wiIHN0eWxlPVwiYm9yZGVyOiAxcHggc29saWQgI0U1RTdFQjsgc2Nyb2xsYmFyLXdpZHRoOiB0aGluOyBiYWNrZ3JvdW5kLWNvbG9yOiAjRjlGQUZCO1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS10ZXh0LVsjMzY0MTUzXSBjcWEtbWItMSBjcWEtbGVhZGluZy1bMThweF1cIj5cbiAgICAgICAgICBMYXN0IGNvbXBsZXRlZCBzdGVwOlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtZm9udC1zZW1pYm9sZCBjcWEtdGV4dC1bIzEwMTgyOF0gY3FhLWxlYWRpbmctWzE4cHhdXCIgc3R5bGU9XCJ3b3JkLWJyZWFrOiBicmVhay13b3JkO1wiPlxuICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwibGFzdENvbXBsZXRlZFN0ZXBcIj48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCJzaG91bGRTaG93U2tpcHBlZFN0ZXBzXCJcbiAgICAgIGNsYXNzPVwiY3FhLXJvdW5kZWQtbGcgY3FhLXAtWzE3cHhdIGNxYS1teS0yIGNxYS1tYXgtaC1bMjAwcHhdIGNxYS1taW4taC1bODBweF0gY3FhLW92ZXJmbG93LXktYXV0b1wiXG4gICAgICBzdHlsZT1cImJvcmRlcjogMXB4IHNvbGlkICNFNUU3RUI7IHNjcm9sbGJhci13aWR0aDogdGhpbjsgYmFja2dyb3VuZC1jb2xvcjogI0Y5RkFGQjtcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtdGV4dC1bIzM2NDE1M10gY3FhLW1iLTIgY3FhLWxlYWRpbmctWzE4cHhdXCI+XG4gICAgICAgICAge3sgc2tpcHBlZFN0ZXBzLmxlbmd0aCB9fSBzdGVwe3sgc2tpcHBlZFN0ZXBzLmxlbmd0aCA9PT0gMSA/ICcnIDogJ3MnIH19IHNraXBwZWQgZHVyaW5nIGV4ZWN1dGlvbiAoYXMgY29uZmlndXJlZCkgOlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTFcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBza2lwcGVkIG9mIHNraXBwZWRTdGVwc1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLWZvbnQtc2VtaWJvbGQgY3FhLXRleHQtWyMxMDE4MjhdIGNxYS1sZWFkaW5nLVsxOHB4XVwiXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJ3b3JkLWJyZWFrOiBicmVhay13b3JkO1wiPlxuICAgICAgICAgICAgU3RlcCB7eyBza2lwcGVkLnN0ZXBOdW1iZXIgfX08c3BhbiAqbmdJZj1cInNraXBwZWQubGFiZWxcIj46IHt7IHNraXBwZWQubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCJzaG91bGRTaG93RmFpbGVkU3RlcHNcIiBjbGFzcz1cImNxYS1teS0yIGNxYS1tYXgtaC1bMzAwcHhdIGNxYS1taW4taC1bMTAwcHhdIGNxYS1vdmVyZmxvdy15LWF1dG9cIiBzdHlsZT1cInNjcm9sbGJhci13aWR0aDogdGhpbjtcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTNcIj5cbiAgICAgICAgICA8ZGl2IFxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGZhaWxlZFN0ZXAgb2YgZmFpbGVkU3RlcHNcIiBcbiAgICAgICAgICAgIGNsYXNzPVwiY3FhLXJvdW5kZWQtbGcgY3FhLXAtWzE3cHhdIGNxYS1iZy1bI0ZFRjJGMl1cIlxuICAgICAgICAgICAgc3R5bGU9XCJib3JkZXI6IDFweCBzb2xpZCAjRkVDQUNBO1wiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZhaWxlZFN0ZXA/LmZhaWxlZFN0ZXBcIiBjbGFzcz1cImNxYS10ZXh0LXNtIGNxYS1mb250LXNlbWlib2xkIGNxYS10ZXh0LVsjMTExODI3XSBjcWEtbWItMiBjcWEtbGVhZGluZy1bMThweF1cIj5cbiAgICAgICAgICAgICAgRmFpbGVkIGF0IFN0ZXAge3sgZmFpbGVkU3RlcC5mYWlsZWRTdGVwIH19PHNwYW4gKm5nSWY9XCJmYWlsZWRTdGVwLnN0ZXBUaXRsZVwiPjoge3sgZmFpbGVkU3RlcC5zdGVwVGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmYWlsZWRTdGVwLmVycm9yXCIgY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLXRleHQtWyNCOTFDMUNdIGNxYS1tYi0xIGNxYS13aGl0ZXNwYWNlLW5vcm1hbCBjcWEtYnJlYWstYW55d2hlcmVcIiBzdHlsZT1cIndvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLWZvbnQtYm9sZFwiPkVycm9yOjwvc3Bhbj4ge3sgZmFpbGVkU3RlcC5lcnJvciB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZmFpbGVkU3RlcC5hY3R1YWxcIiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtdGV4dC1bI0I5MUMxQ10gY3FhLW1iLTEgY3FhLXdoaXRlc3BhY2Utbm9ybWFsIGNxYS1icmVhay1hbnl3aGVyZVwiIHN0eWxlPVwid29yZC1icmVhazogYnJlYWstd29yZDtcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtZm9udC1ib2xkXCI+QWN0dWFsOjwvc3Bhbj4ge3sgZmFpbGVkU3RlcC5hY3R1YWwgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZhaWxlZFN0ZXAuZXhwZWN0ZWRcIiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtdGV4dC1bI0I5MUMxQ10gY3FhLW1iLTIgY3FhLXdoaXRlc3BhY2Utbm9ybWFsIGNxYS1icmVhay1hbnl3aGVyZVwiIHN0eWxlPVwid29yZC1icmVhazogYnJlYWstd29yZDtcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtZm9udC1ib2xkXCI+RXhwZWN0ZWQ6PC9zcGFuPiB7eyBmYWlsZWRTdGVwLmV4cGVjdGVkIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmYWlsZWRTdGVwLnN1Z2dlc3Rpb25zXCIgY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLXRleHQtWyNCOTFDMUNdIGNxYS1tYi0xIGNxYS13aGl0ZXNwYWNlLW5vcm1hbCBjcWEtYnJlYWstYW55d2hlcmVcIiBzdHlsZT1cIndvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLWZvbnQtYm9sZFwiPlN1Z2dlc3Rpb25zOjwvc3Bhbj4ge3sgZmFpbGVkU3RlcC5zdWdnZXN0aW9ucyB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZmFpbGVkU3RlcC50aW1lc3RhbXBcIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0xIGNxYS10ZXh0LVsxMnB4XSBjcWEtdGV4dC1bIzYzNjM2M11cIj5cbiAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk02IDFWNkw5IDcuNVwiIHN0cm9rZT1cIiM2MzYzNjNcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjZcIiBjeT1cIjZcIiByPVwiNVwiIHN0cm9rZT1cIiM2MzYzNjNcIiBzdHJva2Utd2lkdGg9XCIxLjVcIi8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICA8c3Bhbj5WaWV3IHNjcmVlbnNob3QgYXQge3sgZmFpbGVkU3RlcC50aW1lc3RhbXAgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgXG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtWzIwcHhdXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBidXR0b25zOyBsZXQgbGFzdCA9IGxhc3RcIj5cbiAgICAgICAgICA8Y3FhLWJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJzaG93U2Vzc2lvbkNoYW5nZXNCdXR0b24gJiYgbGFzdFwiXG4gICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgICAgdGV4dD1cIlJldmlldyBTZXNzaW9uIENoYW5nZXNcIlxuICAgICAgICAgICAgYnRuU2l6ZT1cImxnXCJcbiAgICAgICAgICAgIFtmdWxsV2lkdGhdPVwidHJ1ZVwiXG4gICAgICAgICAgICAoY2xpY2tlZCk9XCJvblNlc3Npb25DaGFuZ2VzQ2xpY2soKVwiPlxuICAgICAgICAgIDwvY3FhLWJ1dHRvbj5cbiAgICAgICAgICA8Y3FhLWJ1dHRvblxuICAgICAgICAgICAgW3ZhcmlhbnRdPVwiYnV0dG9uLnZhcmlhbnRcIlxuICAgICAgICAgICAgW3RleHRdPVwiYnV0dG9uLmxhYmVsXCJcbiAgICAgICAgICAgIFtpY29uXT1cImJ1dHRvbi5pY29uXCJcbiAgICAgICAgICAgIFtidG5TaXplXT1cImJ1dHRvbi5idG5TaXplIHx8ICdsZydcIlxuICAgICAgICAgICAgW2Z1bGxXaWR0aF09XCJidXR0b24uZnVsbFdpZHRoICE9PSB1bmRlZmluZWQgPyBidXR0b24uZnVsbFdpZHRoIDogdHJ1ZVwiXG4gICAgICAgICAgICAoY2xpY2tlZCk9XCJvbkJ1dHRvbkNsaWNrKGJ1dHRvbilcIj5cbiAgICAgICAgICA8L2NxYS1idXR0b24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4iXX0=