@cqa-lib/cqa-ui 1.1.557-delta.12 → 1.1.557-delta.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/test-case-details/api-step/api-step.component.mjs +14 -4
- package/esm2020/lib/test-case-details/test-case-step.models.mjs +1 -1
- package/fesm2015/cqa-lib-cqa-ui.mjs +13 -3
- package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
- package/fesm2020/cqa-lib-cqa-ui.mjs +13 -3
- package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
- package/lib/test-case-details/api-step/api-step.component.d.ts +4 -1
- package/lib/test-case-details/test-case-step.models.d.ts +4 -0
- package/package.json +1 -1
|
@@ -8,6 +8,9 @@ export class TestCaseApiStepComponent {
|
|
|
8
8
|
constructor(overlayContainer) {
|
|
9
9
|
this.overlayContainer = overlayContainer;
|
|
10
10
|
this.method = 'GET';
|
|
11
|
+
/** When 'graphql', the step row renders a "GraphQL" label instead of the HTTP
|
|
12
|
+
* method. Falls back to 'rest' for any non-graphql value or when omitted. */
|
|
13
|
+
this.apiType = 'rest';
|
|
11
14
|
this.endpoint = '';
|
|
12
15
|
this.selected = false;
|
|
13
16
|
this.disabled = false;
|
|
@@ -39,6 +42,7 @@ export class TestCaseApiStepComponent {
|
|
|
39
42
|
if (this.config) {
|
|
40
43
|
this.stepNumber = this.config.stepNumber;
|
|
41
44
|
this.method = this.config.method;
|
|
45
|
+
this.apiType = this.config.apiType === 'graphql' ? 'graphql' : 'rest';
|
|
42
46
|
this.endpoint = this.config.endpoint;
|
|
43
47
|
this.description = this.config.description;
|
|
44
48
|
this.baseUrl = this.config.baseUrl;
|
|
@@ -51,7 +55,11 @@ export class TestCaseApiStepComponent {
|
|
|
51
55
|
}
|
|
52
56
|
}
|
|
53
57
|
getDisplayText() {
|
|
54
|
-
|
|
58
|
+
// GraphQL steps are POST-only internally; surface a "GraphQL" tag in the
|
|
59
|
+
// collapsed row instead of the HTTP verb so the user isn't confused by
|
|
60
|
+
// "GET" appearing on a step they configured as GraphQL.
|
|
61
|
+
const label = this.apiType === 'graphql' ? 'GraphQL' : this.method;
|
|
62
|
+
return [label, this.endpoint].join(' ');
|
|
55
63
|
}
|
|
56
64
|
onToggleExpanded() {
|
|
57
65
|
this.expanded = !this.expanded;
|
|
@@ -120,10 +128,10 @@ export class TestCaseApiStepComponent {
|
|
|
120
128
|
onSelectionChange(checked) { this.selected = checked; this.selectionChange.emit(checked); }
|
|
121
129
|
}
|
|
122
130
|
TestCaseApiStepComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TestCaseApiStepComponent, deps: [{ token: i1.OverlayContainer }], target: i0.ɵɵFactoryTarget.Component });
|
|
123
|
-
TestCaseApiStepComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: TestCaseApiStepComponent, selector: "cqa-test-case-api-step", inputs: { config: "config", stepNumber: "stepNumber", method: "method", endpoint: "endpoint", description: "description", baseUrl: "baseUrl", headersCount: "headersCount", hasBody: "hasBody", saveTo: "saveTo", selected: "selected", disabled: "disabled", isNested: "isNested", isInsideLoop: "isInsideLoop", isInsideStepGroup: "isInsideStepGroup", nestingLevel: "nestingLevel", expanded: "expanded", isReorder: "isReorder", editable: "editable", isDuplicating: "isDuplicating", environmentOptions: "environmentOptions", httpMethodOptions: "httpMethodOptions", headerNameOptions: "headerNameOptions" }, outputs: { edit: "edit", editInDepth: "editInDepth", link: "link", duplicate: "duplicate", delete: "delete", moreOptions: "moreOptions", viewDetails: "viewDetails", selectionChange: "selectionChange", toggleExpanded: "toggleExpanded", stepUpdate: "stepUpdate" }, host: { classAttribute: "cqa-ui-root" }, viewQueries: [{ propertyName: "editModalBackdropRef", first: true, predicate: ["editModalBackdrop"], descendants: true }], ngImport: i0, template: "<div class=\"cqa-flex cqa-flex-col\" style=\"border-top: 1px solid #E5E7EB; border-bottom: 1px solid #E5E7EB;\">\n <div\n [class]=\"'step-row cqa-flex cqa-items-center cqa-gap-3 cqa-py-2 cqa-pr-4' + (config?.shouldSkip ? ' cqa-step-skipped' : '')\"\n [style.opacity]=\"config?.shouldSkip ? '0.6' : null\"\n [style.padding-left.px]=\"getRowPaddingLeftPx()\"\n [style.border-top]=\"isInsideStepGroup ? '1px solid #BEDBFF' : null\">\n <div *ngIf=\"!isInsideStepGroup\" class=\"cqa-inline-flex cqa-items-center\">\n <!-- Drag Handle Icon (when isReorder is true and not inside step group - steps inside step groups cannot be reordered) -->\n <div *ngIf=\"isReorder && !isInsideStepGroup\" class=\"cqa-mr-2 cqa-cursor-move cqa-text-[#6B7280] hover:cqa-text-[#111827]\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"3\" cy=\"3\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"8\" cy=\"3\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"13\" cy=\"3\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"3\" cy=\"8\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"8\" cy=\"8\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"13\" cy=\"8\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"3\" cy=\"13\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"8\" cy=\"13\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"13\" cy=\"13\" r=\"1.5\" fill=\"currentColor\"/>\n </svg>\n </div>\n <!-- Checkbox (when isReorder is false and not inside step group - hide for steps inside step groups) -->\n <label *ngIf=\"editable && !isReorder && !isInsideStepGroup\" class=\"cqa-flex cqa-items-center cqa-cursor-pointer cqa-relative cqa-mr-2\">\n <input type=\"checkbox\" [ngModel]=\"selected\" [disabled]=\"disabled\" (ngModelChange)=\"onSelectionChange($event)\"\n class=\"cqa-h-4 cqa-w-4 cqa-cursor-pointer cqa-transition-all cqa-appearance-none cqa-rounded shadow hover:cqa-shadow-md cqa-border cqa-border-solid cqa-border-slate-300 cqa-flex-shrink-0\"\n [class.cqa-bg-[#3F43EE]]=\"selected\" [class.cqa-border-[#3F43EE]]=\"selected\" id=\"check\" />\n <span\n class=\"cqa-absolute cqa-text-white cqa-top-1/2 cqa-left-1/2 cqa--translate-x-1/2 cqa--translate-y-1/2 cqa-pointer-events-none cqa-flex cqa-items-center cqa-justify-center\"\n [class.cqa-opacity-0]=\"!selected\" [class.cqa-opacity-100]=\"selected\">\n <svg width=\"12\" height=\"13\" viewBox=\"0 0 12 13\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10 3.125L4.5 8.625L2 6.125\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </label>\n </div>\n <div *ngIf=\"isInsideStepGroup\" class=\"cqa-flex cqa-flex-shrink-0 cqa-items-center cqa-pl-0 cqa-pr-1 cqa-text-[#9CA3AF]\" aria-hidden=\"true\" title=\"Step is inside a group\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M11.9998 5.66667H11.3332V4.33333C11.3332 2.49333 9.83984 1 7.99984 1C6.15984 1 4.6665 2.49333 4.6665 4.33333V5.66667H3.99984C3.2665 5.66667 2.6665 6.26667 2.6665 7V13.6667C2.6665 14.4 3.2665 15 3.99984 15H11.9998C12.7332 15 13.3332 14.4 13.3332 13.6667V7C13.3332 6.26667 12.7332 5.66667 11.9998 5.66667ZM5.99984 4.33333C5.99984 3.22667 6.89317 2.33333 7.99984 2.33333C9.1065 2.33333 9.99984 3.22667 9.99984 4.33333V5.66667H5.99984V4.33333ZM11.9998 13.6667H3.99984V7H11.9998V13.6667ZM7.99984 11.6667C8.73317 11.6667 9.33317 11.0667 9.33317 10.3333C9.33317 9.6 8.73317 9 7.99984 9C7.2665 9 6.6665 9.6 6.6665 10.3333C6.6665 11.0667 7.2665 11.6667 7.99984 11.6667Z\" fill=\"currentColor\"/>\n </svg>\n </div>\n <span class=\"cqa-text-[#6B7280] cqa-text-[14px] cqa-leading-[18px] cqa-min-w-[32px]\">{{ stepNumber }}</span>\n <span title=\"API\"\n class=\"cqa-w-8 cqa-h-8 cqa-rounded-lg cqa-flex cqa-items-center cqa-justify-center cqa-flex-shrink-0 cqa-bg-[#D1FAE5] cqa-text-[#059669]\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M4.08333 7H9.91667M9.91667 7L7.58333 4.66667M9.91667 7L7.58333 9.33333\" stroke=\"currentColor\"\n stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path\n d=\"M7 12.8333C10.2217 12.8333 12.8333 10.2217 12.8333 7C12.8333 3.77834 10.2217 1.16667 7 1.16667C3.77834 1.16667 1.16667 3.77834 1.16667 7C1.16667 10.2217 3.77834 12.8333 7 12.8333Z\"\n stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <div class=\"cqa-flex-grow cqa-flex cqa-flex-col cqa-gap-1\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <span class=\"cqa-text-[#111827] cqa-text-[14px] cqa-leading-[18px]\">{{ getDisplayText() }}</span>\n </div>\n <!-- Expanded details: light yellow box with summary, method, URL, headers, body, save to -->\n <div *ngIf=\"expanded\"\n [class]=\"'cqa-py-1 cqa-px-3 cqa-rounded-lg cqa-border cqa-border-solid cqa-bg-[#FEFCE8] cqa-border-[#FFF085]' + (isInsideLoop ? ' cqa-ml-10' : '')\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1\">\n <div *ngIf=\"description && description.trim() !== ''\" class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <span class=\"cqa-text-[#6B7280] cqa-text-[10px] cqa-leading-[15px] cqa-font-medium\">Summary:</span>\n <span class=\"cqa-text-[#111827] cqa-text-[12px] cqa-leading-[15px]\">{{ description }}</span>\n </div>\n <div\n class=\"cqa-text-[#6B7280] cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-flex cqa-flex-wrap cqa-items-center cqa-gap-8\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-3\">\n <span class=\"cqa-text-[#733E0A] cqa-text-[12px] cqa-leading-[15px] cqa-font-normal\">{{method }}</span>\n <span>{{ baseUrl || 'https://api.example.com' }}</span>\n </div>\n <span class=\"cqa-text-[#111827]\">{{ endpoint }}</span>\n <div class=\"cqa-flex cqa-items-center cqa-gap-3\">\n <span>Headers: {{ headersCount ?? 0 }}</span>\n <span>Body: {{ hasBody ? 'Yes' : 'No' }}</span>\n <span>Save to: {{ saveTo || '\u2014' }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-self-center\">\n <span *ngIf=\"config?.shouldSkip\" class=\"cqa-border cqa-border-solid cqa-border-[#E5E5E5] cqa-rounded-lg cqa-py-0.5 cqa-px-2 cqa-text-[#0A0A0A] cqa-text-[12px] cqa-leading-[15px] cqa-flex-shrink-0\">Skipped</span>\n <div *ngIf=\"editable && !isInsideStepGroup && !isReorder\" class=\"step-actions cqa-flex cqa-items-center cqa-gap-1.5 cqa-pr-2\">\n <button type=\"button\" (click)=\"onEdit(); $event.stopPropagation()\" title=\"Edit\"\n class=\"cqa-p-0 cqa-text-[#99A1Af] hover:cqa-text-[#1447E6]\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 11.6666H12.25\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path\n d=\"M9.55208 2.1128C9.7843 1.88058 10.0993 1.75012 10.4277 1.75012C10.7561 1.75012 11.071 1.88058 11.3033 2.1128C11.5355 2.34502 11.6659 2.65998 11.6659 2.98838C11.6659 3.31679 11.5355 3.63175 11.3033 3.86397L4.29742 10.8704C4.15864 11.0092 3.9871 11.1107 3.79867 11.1656L2.12333 11.6544C2.07314 11.669 2.01993 11.6699 1.96928 11.6569C1.91863 11.6439 1.8724 11.6176 1.83543 11.5806C1.79846 11.5437 1.7721 11.4974 1.75913 11.4468C1.74615 11.3961 1.74703 11.3429 1.76167 11.2927L2.2505 9.61738C2.30546 9.42916 2.40698 9.25783 2.54567 9.11922L9.55208 2.1128Z\"\n stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </button>\n <button type=\"button\" (click)=\"onSkipToggle(); $event.stopPropagation()\" [attr.title]=\"config?.shouldSkip ? 'Unskip step' : 'Skip step'\" [style.color]=\"config?.shouldSkip ? '#1447E6' : null\" class=\"cqa-p-0 cqa-text-[#99A1Af] hover:cqa-text-[#1447E6]\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8.25 8.75C9.2165 8.75 10 7.9665 10 7C10 6.0335 9.2165 5.25 8.25 5.25C7.2835 5.25 6.5 6.0335 6.5 7C6.5 7.9665 7.2835 8.75 8.25 8.75Z\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8.75033 2.91663H5.25033C2.99516 2.91663 1.16699 4.7448 1.16699 6.99996C1.16699 9.25512 2.99516 11.0833 5.25033 11.0833H8.75033C11.0055 11.0833 12.8337 9.25512 12.8337 6.99996C12.8337 4.7448 11.0055 2.91663 8.75033 2.91663Z\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </button>\n <!-- <button type=\"button\" (click)=\"onLink(); $event.stopPropagation()\" title=\"Link\"\n class=\"cqa-p-0 cqa-text-[#99A1Af] hover:cqa-text-[#1447E6]\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.00065 9.91671H3.66732C2.78326 9.91671 1.93542 9.60942 1.3103 9.06244C0.685174 8.51545 0.333984 7.77359 0.333984 7.00004C0.333984 6.22649 0.685174 5.48463 1.3103 4.93765C1.93542 4.39066 2.78326 4.08337 3.66732 4.08337H5.00065\"\n stroke=\"currentColor\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path\n d=\"M9 4.08337H10.3333C11.2174 4.08337 12.0652 4.39066 12.6904 4.93765C13.3155 5.48463 13.6667 6.22649 13.6667 7.00004C13.6667 7.77359 13.3155 8.51545 12.6904 9.06244C12.0652 9.60942 11.2174 9.91671 10.3333 9.91671H9\"\n stroke=\"currentColor\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path d=\"M4.33398 7H9.66732\" stroke=\"currentColor\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </button> -->\n <button\n type=\"button\"\n (click)=\"onDuplicate(); $event.stopPropagation()\"\n [disabled]=\"isDuplicating\"\n [attr.title]=\"isDuplicating ? 'Duplicating...' : 'Duplicate'\"\n class=\"cqa-p-0 cqa-text-[#99A1Af] hover:cqa-text-[#1447E6] disabled:cqa-opacity-60 disabled:cqa-cursor-not-allowed\"\n >\n <svg *ngIf=\"!isDuplicating\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M11.666 4.66663H5.83268C5.18835 4.66663 4.66602 5.18896 4.66602 5.83329V11.6666C4.66602 12.311 5.18835 12.8333 5.83268 12.8333H11.666C12.3103 12.8333 12.8327 12.311 12.8327 11.6666V5.83329C12.8327 5.18896 12.3103 4.66663 11.666 4.66663Z\"\n stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path\n d=\"M2.33268 9.33329C1.69102 9.33329 1.16602 8.80829 1.16602 8.16663V2.33329C1.16602 1.69163 1.69102 1.16663 2.33268 1.16663H8.16602C8.80768 1.16663 9.33268 1.69163 9.33268 2.33329\"\n stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n <svg *ngIf=\"isDuplicating\" width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-label=\"Duplicating\">\n <circle cx=\"8\" cy=\"8\" r=\"6\" stroke=\"currentColor\" stroke-opacity=\"0.2\" stroke-width=\"2\"></circle>\n <path d=\"M14 8A6 6 0 0 0 8 2\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\">\n <animateTransform attributeName=\"transform\" type=\"rotate\" from=\"0 8 8\" to=\"360 8 8\" dur=\"0.8s\" repeatCount=\"indefinite\"/>\n </path>\n </svg>\n </button>\n <button type=\"button\" (click)=\"onDelete(); $event.stopPropagation()\" title=\"Delete\"\n class=\"cqa-p-0 cqa-text-[#ff6467] hover:cqa-text-[#C63535]\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M1.75 3.5H12.25\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path\n d=\"M11.0827 3.5V11.6667C11.0827 12.25 10.4993 12.8333 9.91602 12.8333H4.08268C3.49935 12.8333 2.91602 12.25 2.91602 11.6667V3.5\"\n stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path\n d=\"M4.66602 3.49996V2.33329C4.66602 1.74996 5.24935 1.16663 5.83268 1.16663H8.16602C8.74935 1.16663 9.33268 1.74996 9.33268 2.33329V3.49996\"\n stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path d=\"M5.83398 6.41663V9.91663\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path d=\"M8.16602 6.41663V9.91663\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </button>\n </div>\n <!-- View Details Link (show only if description is not empty) - after action buttons, before date -->\n <a *ngIf=\"description && description.trim() !== ''\" #viewDetailsTrigger href=\"#\" (click)=\"onViewDetails($event)\"\n class=\"cqa-text-[#3F43EE] cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-flex cqa-items-center cqa-gap-1 cqa-no-underline\">\n {{ expanded ? 'Hide Details' : 'View Details' }}\n <svg width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2.03809 6.74329L2.62809 7.33329L5.96142 3.99996L2.62809 0.666626L2.03809 1.25663L4.78142 3.99996L2.03809 6.74329Z\" fill=\"#3F43EE\"/>\n </svg>\n </a>\n <!-- Created Date (from API) - last so aligned across all steps, format: 25 Feb 2026 -->\n <span *ngIf=\"config.createdDate\" class=\"step-date cqa-text-[#6B7280] cqa-text-[12px] cqa-leading-[15px] cqa-ml-auto cqa-flex-shrink-0\">\n {{ config.createdDate | date:'d MMM yyyy' }}\n </span>\n </div>\n </div>\n</div>", styles: [".step-actions{opacity:0;transition:opacity .15s ease}.step-row:hover .step-actions{opacity:1}.step-row{vertical-align:middle;letter-spacing:normal}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "date": i2.DatePipe } });
|
|
131
|
+
TestCaseApiStepComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: TestCaseApiStepComponent, selector: "cqa-test-case-api-step", inputs: { config: "config", stepNumber: "stepNumber", method: "method", apiType: "apiType", endpoint: "endpoint", description: "description", baseUrl: "baseUrl", headersCount: "headersCount", hasBody: "hasBody", saveTo: "saveTo", selected: "selected", disabled: "disabled", isNested: "isNested", isInsideLoop: "isInsideLoop", isInsideStepGroup: "isInsideStepGroup", nestingLevel: "nestingLevel", expanded: "expanded", isReorder: "isReorder", editable: "editable", isDuplicating: "isDuplicating", environmentOptions: "environmentOptions", httpMethodOptions: "httpMethodOptions", headerNameOptions: "headerNameOptions" }, outputs: { edit: "edit", editInDepth: "editInDepth", link: "link", duplicate: "duplicate", delete: "delete", moreOptions: "moreOptions", viewDetails: "viewDetails", selectionChange: "selectionChange", toggleExpanded: "toggleExpanded", stepUpdate: "stepUpdate" }, host: { classAttribute: "cqa-ui-root" }, viewQueries: [{ propertyName: "editModalBackdropRef", first: true, predicate: ["editModalBackdrop"], descendants: true }], ngImport: i0, template: "<div class=\"cqa-flex cqa-flex-col\" style=\"border-top: 1px solid #E5E7EB; border-bottom: 1px solid #E5E7EB;\">\n <div\n [class]=\"'step-row cqa-flex cqa-items-center cqa-gap-3 cqa-py-2 cqa-pr-4' + (config?.shouldSkip ? ' cqa-step-skipped' : '')\"\n [style.opacity]=\"config?.shouldSkip ? '0.6' : null\"\n [style.padding-left.px]=\"getRowPaddingLeftPx()\"\n [style.border-top]=\"isInsideStepGroup ? '1px solid #BEDBFF' : null\">\n <div *ngIf=\"!isInsideStepGroup\" class=\"cqa-inline-flex cqa-items-center\">\n <!-- Drag Handle Icon (when isReorder is true and not inside step group - steps inside step groups cannot be reordered) -->\n <div *ngIf=\"isReorder && !isInsideStepGroup\" class=\"cqa-mr-2 cqa-cursor-move cqa-text-[#6B7280] hover:cqa-text-[#111827]\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"3\" cy=\"3\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"8\" cy=\"3\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"13\" cy=\"3\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"3\" cy=\"8\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"8\" cy=\"8\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"13\" cy=\"8\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"3\" cy=\"13\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"8\" cy=\"13\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"13\" cy=\"13\" r=\"1.5\" fill=\"currentColor\"/>\n </svg>\n </div>\n <!-- Checkbox (when isReorder is false and not inside step group - hide for steps inside step groups) -->\n <label *ngIf=\"editable && !isReorder && !isInsideStepGroup\" class=\"cqa-flex cqa-items-center cqa-cursor-pointer cqa-relative cqa-mr-2\">\n <input type=\"checkbox\" [ngModel]=\"selected\" [disabled]=\"disabled\" (ngModelChange)=\"onSelectionChange($event)\"\n class=\"cqa-h-4 cqa-w-4 cqa-cursor-pointer cqa-transition-all cqa-appearance-none cqa-rounded shadow hover:cqa-shadow-md cqa-border cqa-border-solid cqa-border-slate-300 cqa-flex-shrink-0\"\n [class.cqa-bg-[#3F43EE]]=\"selected\" [class.cqa-border-[#3F43EE]]=\"selected\" id=\"check\" />\n <span\n class=\"cqa-absolute cqa-text-white cqa-top-1/2 cqa-left-1/2 cqa--translate-x-1/2 cqa--translate-y-1/2 cqa-pointer-events-none cqa-flex cqa-items-center cqa-justify-center\"\n [class.cqa-opacity-0]=\"!selected\" [class.cqa-opacity-100]=\"selected\">\n <svg width=\"12\" height=\"13\" viewBox=\"0 0 12 13\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10 3.125L4.5 8.625L2 6.125\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </label>\n </div>\n <div *ngIf=\"isInsideStepGroup\" class=\"cqa-flex cqa-flex-shrink-0 cqa-items-center cqa-pl-0 cqa-pr-1 cqa-text-[#9CA3AF]\" aria-hidden=\"true\" title=\"Step is inside a group\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M11.9998 5.66667H11.3332V4.33333C11.3332 2.49333 9.83984 1 7.99984 1C6.15984 1 4.6665 2.49333 4.6665 4.33333V5.66667H3.99984C3.2665 5.66667 2.6665 6.26667 2.6665 7V13.6667C2.6665 14.4 3.2665 15 3.99984 15H11.9998C12.7332 15 13.3332 14.4 13.3332 13.6667V7C13.3332 6.26667 12.7332 5.66667 11.9998 5.66667ZM5.99984 4.33333C5.99984 3.22667 6.89317 2.33333 7.99984 2.33333C9.1065 2.33333 9.99984 3.22667 9.99984 4.33333V5.66667H5.99984V4.33333ZM11.9998 13.6667H3.99984V7H11.9998V13.6667ZM7.99984 11.6667C8.73317 11.6667 9.33317 11.0667 9.33317 10.3333C9.33317 9.6 8.73317 9 7.99984 9C7.2665 9 6.6665 9.6 6.6665 10.3333C6.6665 11.0667 7.2665 11.6667 7.99984 11.6667Z\" fill=\"currentColor\"/>\n </svg>\n </div>\n <span class=\"cqa-text-[#6B7280] cqa-text-[14px] cqa-leading-[18px] cqa-min-w-[32px]\">{{ stepNumber }}</span>\n <span title=\"API\"\n class=\"cqa-w-8 cqa-h-8 cqa-rounded-lg cqa-flex cqa-items-center cqa-justify-center cqa-flex-shrink-0 cqa-bg-[#D1FAE5] cqa-text-[#059669]\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M4.08333 7H9.91667M9.91667 7L7.58333 4.66667M9.91667 7L7.58333 9.33333\" stroke=\"currentColor\"\n stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path\n d=\"M7 12.8333C10.2217 12.8333 12.8333 10.2217 12.8333 7C12.8333 3.77834 10.2217 1.16667 7 1.16667C3.77834 1.16667 1.16667 3.77834 1.16667 7C1.16667 10.2217 3.77834 12.8333 7 12.8333Z\"\n stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <div class=\"cqa-flex-grow cqa-flex cqa-flex-col cqa-gap-1\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <span class=\"cqa-text-[#111827] cqa-text-[14px] cqa-leading-[18px]\">{{ getDisplayText() }}</span>\n </div>\n <!-- Expanded details: light yellow box with summary, method, URL, headers, body, save to -->\n <div *ngIf=\"expanded\"\n [class]=\"'cqa-py-1 cqa-px-3 cqa-rounded-lg cqa-border cqa-border-solid cqa-bg-[#FEFCE8] cqa-border-[#FFF085]' + (isInsideLoop ? ' cqa-ml-10' : '')\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1\">\n <div *ngIf=\"description && description.trim() !== ''\" class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <span class=\"cqa-text-[#6B7280] cqa-text-[10px] cqa-leading-[15px] cqa-font-medium\">Summary:</span>\n <span class=\"cqa-text-[#111827] cqa-text-[12px] cqa-leading-[15px]\">{{ description }}</span>\n </div>\n <div\n class=\"cqa-text-[#6B7280] cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-flex cqa-flex-wrap cqa-items-center cqa-gap-8\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-3\">\n <span class=\"cqa-text-[#733E0A] cqa-text-[12px] cqa-leading-[15px] cqa-font-normal\">{{ apiType === 'graphql' ? 'GraphQL' : method }}</span>\n <span>{{ baseUrl || 'https://api.example.com' }}</span>\n </div>\n <span class=\"cqa-text-[#111827]\">{{ endpoint }}</span>\n <div class=\"cqa-flex cqa-items-center cqa-gap-3\">\n <span>Headers: {{ headersCount ?? 0 }}</span>\n <span>Body: {{ hasBody ? 'Yes' : 'No' }}</span>\n <span>Save to: {{ saveTo || '\u2014' }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-self-center\">\n <span *ngIf=\"config?.shouldSkip\" class=\"cqa-border cqa-border-solid cqa-border-[#E5E5E5] cqa-rounded-lg cqa-py-0.5 cqa-px-2 cqa-text-[#0A0A0A] cqa-text-[12px] cqa-leading-[15px] cqa-flex-shrink-0\">Skipped</span>\n <div *ngIf=\"editable && !isInsideStepGroup && !isReorder\" class=\"step-actions cqa-flex cqa-items-center cqa-gap-1.5 cqa-pr-2\">\n <button type=\"button\" (click)=\"onEdit(); $event.stopPropagation()\" title=\"Edit\"\n class=\"cqa-p-0 cqa-text-[#99A1Af] hover:cqa-text-[#1447E6]\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 11.6666H12.25\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path\n d=\"M9.55208 2.1128C9.7843 1.88058 10.0993 1.75012 10.4277 1.75012C10.7561 1.75012 11.071 1.88058 11.3033 2.1128C11.5355 2.34502 11.6659 2.65998 11.6659 2.98838C11.6659 3.31679 11.5355 3.63175 11.3033 3.86397L4.29742 10.8704C4.15864 11.0092 3.9871 11.1107 3.79867 11.1656L2.12333 11.6544C2.07314 11.669 2.01993 11.6699 1.96928 11.6569C1.91863 11.6439 1.8724 11.6176 1.83543 11.5806C1.79846 11.5437 1.7721 11.4974 1.75913 11.4468C1.74615 11.3961 1.74703 11.3429 1.76167 11.2927L2.2505 9.61738C2.30546 9.42916 2.40698 9.25783 2.54567 9.11922L9.55208 2.1128Z\"\n stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </button>\n <button type=\"button\" (click)=\"onSkipToggle(); $event.stopPropagation()\" [attr.title]=\"config?.shouldSkip ? 'Unskip step' : 'Skip step'\" [style.color]=\"config?.shouldSkip ? '#1447E6' : null\" class=\"cqa-p-0 cqa-text-[#99A1Af] hover:cqa-text-[#1447E6]\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8.25 8.75C9.2165 8.75 10 7.9665 10 7C10 6.0335 9.2165 5.25 8.25 5.25C7.2835 5.25 6.5 6.0335 6.5 7C6.5 7.9665 7.2835 8.75 8.25 8.75Z\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8.75033 2.91663H5.25033C2.99516 2.91663 1.16699 4.7448 1.16699 6.99996C1.16699 9.25512 2.99516 11.0833 5.25033 11.0833H8.75033C11.0055 11.0833 12.8337 9.25512 12.8337 6.99996C12.8337 4.7448 11.0055 2.91663 8.75033 2.91663Z\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </button>\n <!-- <button type=\"button\" (click)=\"onLink(); $event.stopPropagation()\" title=\"Link\"\n class=\"cqa-p-0 cqa-text-[#99A1Af] hover:cqa-text-[#1447E6]\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.00065 9.91671H3.66732C2.78326 9.91671 1.93542 9.60942 1.3103 9.06244C0.685174 8.51545 0.333984 7.77359 0.333984 7.00004C0.333984 6.22649 0.685174 5.48463 1.3103 4.93765C1.93542 4.39066 2.78326 4.08337 3.66732 4.08337H5.00065\"\n stroke=\"currentColor\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path\n d=\"M9 4.08337H10.3333C11.2174 4.08337 12.0652 4.39066 12.6904 4.93765C13.3155 5.48463 13.6667 6.22649 13.6667 7.00004C13.6667 7.77359 13.3155 8.51545 12.6904 9.06244C12.0652 9.60942 11.2174 9.91671 10.3333 9.91671H9\"\n stroke=\"currentColor\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path d=\"M4.33398 7H9.66732\" stroke=\"currentColor\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </button> -->\n <button\n type=\"button\"\n (click)=\"onDuplicate(); $event.stopPropagation()\"\n [disabled]=\"isDuplicating\"\n [attr.title]=\"isDuplicating ? 'Duplicating...' : 'Duplicate'\"\n class=\"cqa-p-0 cqa-text-[#99A1Af] hover:cqa-text-[#1447E6] disabled:cqa-opacity-60 disabled:cqa-cursor-not-allowed\"\n >\n <svg *ngIf=\"!isDuplicating\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M11.666 4.66663H5.83268C5.18835 4.66663 4.66602 5.18896 4.66602 5.83329V11.6666C4.66602 12.311 5.18835 12.8333 5.83268 12.8333H11.666C12.3103 12.8333 12.8327 12.311 12.8327 11.6666V5.83329C12.8327 5.18896 12.3103 4.66663 11.666 4.66663Z\"\n stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path\n d=\"M2.33268 9.33329C1.69102 9.33329 1.16602 8.80829 1.16602 8.16663V2.33329C1.16602 1.69163 1.69102 1.16663 2.33268 1.16663H8.16602C8.80768 1.16663 9.33268 1.69163 9.33268 2.33329\"\n stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n <svg *ngIf=\"isDuplicating\" width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-label=\"Duplicating\">\n <circle cx=\"8\" cy=\"8\" r=\"6\" stroke=\"currentColor\" stroke-opacity=\"0.2\" stroke-width=\"2\"></circle>\n <path d=\"M14 8A6 6 0 0 0 8 2\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\">\n <animateTransform attributeName=\"transform\" type=\"rotate\" from=\"0 8 8\" to=\"360 8 8\" dur=\"0.8s\" repeatCount=\"indefinite\"/>\n </path>\n </svg>\n </button>\n <button type=\"button\" (click)=\"onDelete(); $event.stopPropagation()\" title=\"Delete\"\n class=\"cqa-p-0 cqa-text-[#ff6467] hover:cqa-text-[#C63535]\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M1.75 3.5H12.25\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path\n d=\"M11.0827 3.5V11.6667C11.0827 12.25 10.4993 12.8333 9.91602 12.8333H4.08268C3.49935 12.8333 2.91602 12.25 2.91602 11.6667V3.5\"\n stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path\n d=\"M4.66602 3.49996V2.33329C4.66602 1.74996 5.24935 1.16663 5.83268 1.16663H8.16602C8.74935 1.16663 9.33268 1.74996 9.33268 2.33329V3.49996\"\n stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path d=\"M5.83398 6.41663V9.91663\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path d=\"M8.16602 6.41663V9.91663\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </button>\n </div>\n <!-- View Details Link (show only if description is not empty) - after action buttons, before date -->\n <a *ngIf=\"description && description.trim() !== ''\" #viewDetailsTrigger href=\"#\" (click)=\"onViewDetails($event)\"\n class=\"cqa-text-[#3F43EE] cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-flex cqa-items-center cqa-gap-1 cqa-no-underline\">\n {{ expanded ? 'Hide Details' : 'View Details' }}\n <svg width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2.03809 6.74329L2.62809 7.33329L5.96142 3.99996L2.62809 0.666626L2.03809 1.25663L4.78142 3.99996L2.03809 6.74329Z\" fill=\"#3F43EE\"/>\n </svg>\n </a>\n <!-- Created Date (from API) - last so aligned across all steps, format: 25 Feb 2026 -->\n <span *ngIf=\"config.createdDate\" class=\"step-date cqa-text-[#6B7280] cqa-text-[12px] cqa-leading-[15px] cqa-ml-auto cqa-flex-shrink-0\">\n {{ config.createdDate | date:'d MMM yyyy' }}\n </span>\n </div>\n </div>\n</div>", styles: [".step-actions{opacity:0;transition:opacity .15s ease}.step-row:hover .step-actions{opacity:1}.step-row{vertical-align:middle;letter-spacing:normal}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "date": i2.DatePipe } });
|
|
124
132
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TestCaseApiStepComponent, decorators: [{
|
|
125
133
|
type: Component,
|
|
126
|
-
args: [{ selector: 'cqa-test-case-api-step', host: { class: 'cqa-ui-root' }, styles: [STEP_ROW_ACTIONS_STYLES], template: "<div class=\"cqa-flex cqa-flex-col\" style=\"border-top: 1px solid #E5E7EB; border-bottom: 1px solid #E5E7EB;\">\n <div\n [class]=\"'step-row cqa-flex cqa-items-center cqa-gap-3 cqa-py-2 cqa-pr-4' + (config?.shouldSkip ? ' cqa-step-skipped' : '')\"\n [style.opacity]=\"config?.shouldSkip ? '0.6' : null\"\n [style.padding-left.px]=\"getRowPaddingLeftPx()\"\n [style.border-top]=\"isInsideStepGroup ? '1px solid #BEDBFF' : null\">\n <div *ngIf=\"!isInsideStepGroup\" class=\"cqa-inline-flex cqa-items-center\">\n <!-- Drag Handle Icon (when isReorder is true and not inside step group - steps inside step groups cannot be reordered) -->\n <div *ngIf=\"isReorder && !isInsideStepGroup\" class=\"cqa-mr-2 cqa-cursor-move cqa-text-[#6B7280] hover:cqa-text-[#111827]\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"3\" cy=\"3\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"8\" cy=\"3\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"13\" cy=\"3\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"3\" cy=\"8\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"8\" cy=\"8\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"13\" cy=\"8\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"3\" cy=\"13\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"8\" cy=\"13\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"13\" cy=\"13\" r=\"1.5\" fill=\"currentColor\"/>\n </svg>\n </div>\n <!-- Checkbox (when isReorder is false and not inside step group - hide for steps inside step groups) -->\n <label *ngIf=\"editable && !isReorder && !isInsideStepGroup\" class=\"cqa-flex cqa-items-center cqa-cursor-pointer cqa-relative cqa-mr-2\">\n <input type=\"checkbox\" [ngModel]=\"selected\" [disabled]=\"disabled\" (ngModelChange)=\"onSelectionChange($event)\"\n class=\"cqa-h-4 cqa-w-4 cqa-cursor-pointer cqa-transition-all cqa-appearance-none cqa-rounded shadow hover:cqa-shadow-md cqa-border cqa-border-solid cqa-border-slate-300 cqa-flex-shrink-0\"\n [class.cqa-bg-[#3F43EE]]=\"selected\" [class.cqa-border-[#3F43EE]]=\"selected\" id=\"check\" />\n <span\n class=\"cqa-absolute cqa-text-white cqa-top-1/2 cqa-left-1/2 cqa--translate-x-1/2 cqa--translate-y-1/2 cqa-pointer-events-none cqa-flex cqa-items-center cqa-justify-center\"\n [class.cqa-opacity-0]=\"!selected\" [class.cqa-opacity-100]=\"selected\">\n <svg width=\"12\" height=\"13\" viewBox=\"0 0 12 13\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10 3.125L4.5 8.625L2 6.125\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </label>\n </div>\n <div *ngIf=\"isInsideStepGroup\" class=\"cqa-flex cqa-flex-shrink-0 cqa-items-center cqa-pl-0 cqa-pr-1 cqa-text-[#9CA3AF]\" aria-hidden=\"true\" title=\"Step is inside a group\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M11.9998 5.66667H11.3332V4.33333C11.3332 2.49333 9.83984 1 7.99984 1C6.15984 1 4.6665 2.49333 4.6665 4.33333V5.66667H3.99984C3.2665 5.66667 2.6665 6.26667 2.6665 7V13.6667C2.6665 14.4 3.2665 15 3.99984 15H11.9998C12.7332 15 13.3332 14.4 13.3332 13.6667V7C13.3332 6.26667 12.7332 5.66667 11.9998 5.66667ZM5.99984 4.33333C5.99984 3.22667 6.89317 2.33333 7.99984 2.33333C9.1065 2.33333 9.99984 3.22667 9.99984 4.33333V5.66667H5.99984V4.33333ZM11.9998 13.6667H3.99984V7H11.9998V13.6667ZM7.99984 11.6667C8.73317 11.6667 9.33317 11.0667 9.33317 10.3333C9.33317 9.6 8.73317 9 7.99984 9C7.2665 9 6.6665 9.6 6.6665 10.3333C6.6665 11.0667 7.2665 11.6667 7.99984 11.6667Z\" fill=\"currentColor\"/>\n </svg>\n </div>\n <span class=\"cqa-text-[#6B7280] cqa-text-[14px] cqa-leading-[18px] cqa-min-w-[32px]\">{{ stepNumber }}</span>\n <span title=\"API\"\n class=\"cqa-w-8 cqa-h-8 cqa-rounded-lg cqa-flex cqa-items-center cqa-justify-center cqa-flex-shrink-0 cqa-bg-[#D1FAE5] cqa-text-[#059669]\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M4.08333 7H9.91667M9.91667 7L7.58333 4.66667M9.91667 7L7.58333 9.33333\" stroke=\"currentColor\"\n stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path\n d=\"M7 12.8333C10.2217 12.8333 12.8333 10.2217 12.8333 7C12.8333 3.77834 10.2217 1.16667 7 1.16667C3.77834 1.16667 1.16667 3.77834 1.16667 7C1.16667 10.2217 3.77834 12.8333 7 12.8333Z\"\n stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <div class=\"cqa-flex-grow cqa-flex cqa-flex-col cqa-gap-1\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <span class=\"cqa-text-[#111827] cqa-text-[14px] cqa-leading-[18px]\">{{ getDisplayText() }}</span>\n </div>\n <!-- Expanded details: light yellow box with summary, method, URL, headers, body, save to -->\n <div *ngIf=\"expanded\"\n [class]=\"'cqa-py-1 cqa-px-3 cqa-rounded-lg cqa-border cqa-border-solid cqa-bg-[#FEFCE8] cqa-border-[#FFF085]' + (isInsideLoop ? ' cqa-ml-10' : '')\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1\">\n <div *ngIf=\"description && description.trim() !== ''\" class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <span class=\"cqa-text-[#6B7280] cqa-text-[10px] cqa-leading-[15px] cqa-font-medium\">Summary:</span>\n <span class=\"cqa-text-[#111827] cqa-text-[12px] cqa-leading-[15px]\">{{ description }}</span>\n </div>\n <div\n class=\"cqa-text-[#6B7280] cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-flex cqa-flex-wrap cqa-items-center cqa-gap-8\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-3\">\n <span class=\"cqa-text-[#733E0A] cqa-text-[12px] cqa-leading-[15px] cqa-font-normal\">{{method }}</span>\n <span>{{ baseUrl || 'https://api.example.com' }}</span>\n </div>\n <span class=\"cqa-text-[#111827]\">{{ endpoint }}</span>\n <div class=\"cqa-flex cqa-items-center cqa-gap-3\">\n <span>Headers: {{ headersCount ?? 0 }}</span>\n <span>Body: {{ hasBody ? 'Yes' : 'No' }}</span>\n <span>Save to: {{ saveTo || '\u2014' }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-self-center\">\n <span *ngIf=\"config?.shouldSkip\" class=\"cqa-border cqa-border-solid cqa-border-[#E5E5E5] cqa-rounded-lg cqa-py-0.5 cqa-px-2 cqa-text-[#0A0A0A] cqa-text-[12px] cqa-leading-[15px] cqa-flex-shrink-0\">Skipped</span>\n <div *ngIf=\"editable && !isInsideStepGroup && !isReorder\" class=\"step-actions cqa-flex cqa-items-center cqa-gap-1.5 cqa-pr-2\">\n <button type=\"button\" (click)=\"onEdit(); $event.stopPropagation()\" title=\"Edit\"\n class=\"cqa-p-0 cqa-text-[#99A1Af] hover:cqa-text-[#1447E6]\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 11.6666H12.25\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path\n d=\"M9.55208 2.1128C9.7843 1.88058 10.0993 1.75012 10.4277 1.75012C10.7561 1.75012 11.071 1.88058 11.3033 2.1128C11.5355 2.34502 11.6659 2.65998 11.6659 2.98838C11.6659 3.31679 11.5355 3.63175 11.3033 3.86397L4.29742 10.8704C4.15864 11.0092 3.9871 11.1107 3.79867 11.1656L2.12333 11.6544C2.07314 11.669 2.01993 11.6699 1.96928 11.6569C1.91863 11.6439 1.8724 11.6176 1.83543 11.5806C1.79846 11.5437 1.7721 11.4974 1.75913 11.4468C1.74615 11.3961 1.74703 11.3429 1.76167 11.2927L2.2505 9.61738C2.30546 9.42916 2.40698 9.25783 2.54567 9.11922L9.55208 2.1128Z\"\n stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </button>\n <button type=\"button\" (click)=\"onSkipToggle(); $event.stopPropagation()\" [attr.title]=\"config?.shouldSkip ? 'Unskip step' : 'Skip step'\" [style.color]=\"config?.shouldSkip ? '#1447E6' : null\" class=\"cqa-p-0 cqa-text-[#99A1Af] hover:cqa-text-[#1447E6]\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8.25 8.75C9.2165 8.75 10 7.9665 10 7C10 6.0335 9.2165 5.25 8.25 5.25C7.2835 5.25 6.5 6.0335 6.5 7C6.5 7.9665 7.2835 8.75 8.25 8.75Z\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8.75033 2.91663H5.25033C2.99516 2.91663 1.16699 4.7448 1.16699 6.99996C1.16699 9.25512 2.99516 11.0833 5.25033 11.0833H8.75033C11.0055 11.0833 12.8337 9.25512 12.8337 6.99996C12.8337 4.7448 11.0055 2.91663 8.75033 2.91663Z\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </button>\n <!-- <button type=\"button\" (click)=\"onLink(); $event.stopPropagation()\" title=\"Link\"\n class=\"cqa-p-0 cqa-text-[#99A1Af] hover:cqa-text-[#1447E6]\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.00065 9.91671H3.66732C2.78326 9.91671 1.93542 9.60942 1.3103 9.06244C0.685174 8.51545 0.333984 7.77359 0.333984 7.00004C0.333984 6.22649 0.685174 5.48463 1.3103 4.93765C1.93542 4.39066 2.78326 4.08337 3.66732 4.08337H5.00065\"\n stroke=\"currentColor\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path\n d=\"M9 4.08337H10.3333C11.2174 4.08337 12.0652 4.39066 12.6904 4.93765C13.3155 5.48463 13.6667 6.22649 13.6667 7.00004C13.6667 7.77359 13.3155 8.51545 12.6904 9.06244C12.0652 9.60942 11.2174 9.91671 10.3333 9.91671H9\"\n stroke=\"currentColor\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path d=\"M4.33398 7H9.66732\" stroke=\"currentColor\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </button> -->\n <button\n type=\"button\"\n (click)=\"onDuplicate(); $event.stopPropagation()\"\n [disabled]=\"isDuplicating\"\n [attr.title]=\"isDuplicating ? 'Duplicating...' : 'Duplicate'\"\n class=\"cqa-p-0 cqa-text-[#99A1Af] hover:cqa-text-[#1447E6] disabled:cqa-opacity-60 disabled:cqa-cursor-not-allowed\"\n >\n <svg *ngIf=\"!isDuplicating\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M11.666 4.66663H5.83268C5.18835 4.66663 4.66602 5.18896 4.66602 5.83329V11.6666C4.66602 12.311 5.18835 12.8333 5.83268 12.8333H11.666C12.3103 12.8333 12.8327 12.311 12.8327 11.6666V5.83329C12.8327 5.18896 12.3103 4.66663 11.666 4.66663Z\"\n stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path\n d=\"M2.33268 9.33329C1.69102 9.33329 1.16602 8.80829 1.16602 8.16663V2.33329C1.16602 1.69163 1.69102 1.16663 2.33268 1.16663H8.16602C8.80768 1.16663 9.33268 1.69163 9.33268 2.33329\"\n stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n <svg *ngIf=\"isDuplicating\" width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-label=\"Duplicating\">\n <circle cx=\"8\" cy=\"8\" r=\"6\" stroke=\"currentColor\" stroke-opacity=\"0.2\" stroke-width=\"2\"></circle>\n <path d=\"M14 8A6 6 0 0 0 8 2\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\">\n <animateTransform attributeName=\"transform\" type=\"rotate\" from=\"0 8 8\" to=\"360 8 8\" dur=\"0.8s\" repeatCount=\"indefinite\"/>\n </path>\n </svg>\n </button>\n <button type=\"button\" (click)=\"onDelete(); $event.stopPropagation()\" title=\"Delete\"\n class=\"cqa-p-0 cqa-text-[#ff6467] hover:cqa-text-[#C63535]\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M1.75 3.5H12.25\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path\n d=\"M11.0827 3.5V11.6667C11.0827 12.25 10.4993 12.8333 9.91602 12.8333H4.08268C3.49935 12.8333 2.91602 12.25 2.91602 11.6667V3.5\"\n stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path\n d=\"M4.66602 3.49996V2.33329C4.66602 1.74996 5.24935 1.16663 5.83268 1.16663H8.16602C8.74935 1.16663 9.33268 1.74996 9.33268 2.33329V3.49996\"\n stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path d=\"M5.83398 6.41663V9.91663\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path d=\"M8.16602 6.41663V9.91663\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </button>\n </div>\n <!-- View Details Link (show only if description is not empty) - after action buttons, before date -->\n <a *ngIf=\"description && description.trim() !== ''\" #viewDetailsTrigger href=\"#\" (click)=\"onViewDetails($event)\"\n class=\"cqa-text-[#3F43EE] cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-flex cqa-items-center cqa-gap-1 cqa-no-underline\">\n {{ expanded ? 'Hide Details' : 'View Details' }}\n <svg width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2.03809 6.74329L2.62809 7.33329L5.96142 3.99996L2.62809 0.666626L2.03809 1.25663L4.78142 3.99996L2.03809 6.74329Z\" fill=\"#3F43EE\"/>\n </svg>\n </a>\n <!-- Created Date (from API) - last so aligned across all steps, format: 25 Feb 2026 -->\n <span *ngIf=\"config.createdDate\" class=\"step-date cqa-text-[#6B7280] cqa-text-[12px] cqa-leading-[15px] cqa-ml-auto cqa-flex-shrink-0\">\n {{ config.createdDate | date:'d MMM yyyy' }}\n </span>\n </div>\n </div>\n</div>" }]
|
|
134
|
+
args: [{ selector: 'cqa-test-case-api-step', host: { class: 'cqa-ui-root' }, styles: [STEP_ROW_ACTIONS_STYLES], template: "<div class=\"cqa-flex cqa-flex-col\" style=\"border-top: 1px solid #E5E7EB; border-bottom: 1px solid #E5E7EB;\">\n <div\n [class]=\"'step-row cqa-flex cqa-items-center cqa-gap-3 cqa-py-2 cqa-pr-4' + (config?.shouldSkip ? ' cqa-step-skipped' : '')\"\n [style.opacity]=\"config?.shouldSkip ? '0.6' : null\"\n [style.padding-left.px]=\"getRowPaddingLeftPx()\"\n [style.border-top]=\"isInsideStepGroup ? '1px solid #BEDBFF' : null\">\n <div *ngIf=\"!isInsideStepGroup\" class=\"cqa-inline-flex cqa-items-center\">\n <!-- Drag Handle Icon (when isReorder is true and not inside step group - steps inside step groups cannot be reordered) -->\n <div *ngIf=\"isReorder && !isInsideStepGroup\" class=\"cqa-mr-2 cqa-cursor-move cqa-text-[#6B7280] hover:cqa-text-[#111827]\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"3\" cy=\"3\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"8\" cy=\"3\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"13\" cy=\"3\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"3\" cy=\"8\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"8\" cy=\"8\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"13\" cy=\"8\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"3\" cy=\"13\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"8\" cy=\"13\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"13\" cy=\"13\" r=\"1.5\" fill=\"currentColor\"/>\n </svg>\n </div>\n <!-- Checkbox (when isReorder is false and not inside step group - hide for steps inside step groups) -->\n <label *ngIf=\"editable && !isReorder && !isInsideStepGroup\" class=\"cqa-flex cqa-items-center cqa-cursor-pointer cqa-relative cqa-mr-2\">\n <input type=\"checkbox\" [ngModel]=\"selected\" [disabled]=\"disabled\" (ngModelChange)=\"onSelectionChange($event)\"\n class=\"cqa-h-4 cqa-w-4 cqa-cursor-pointer cqa-transition-all cqa-appearance-none cqa-rounded shadow hover:cqa-shadow-md cqa-border cqa-border-solid cqa-border-slate-300 cqa-flex-shrink-0\"\n [class.cqa-bg-[#3F43EE]]=\"selected\" [class.cqa-border-[#3F43EE]]=\"selected\" id=\"check\" />\n <span\n class=\"cqa-absolute cqa-text-white cqa-top-1/2 cqa-left-1/2 cqa--translate-x-1/2 cqa--translate-y-1/2 cqa-pointer-events-none cqa-flex cqa-items-center cqa-justify-center\"\n [class.cqa-opacity-0]=\"!selected\" [class.cqa-opacity-100]=\"selected\">\n <svg width=\"12\" height=\"13\" viewBox=\"0 0 12 13\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10 3.125L4.5 8.625L2 6.125\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </label>\n </div>\n <div *ngIf=\"isInsideStepGroup\" class=\"cqa-flex cqa-flex-shrink-0 cqa-items-center cqa-pl-0 cqa-pr-1 cqa-text-[#9CA3AF]\" aria-hidden=\"true\" title=\"Step is inside a group\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M11.9998 5.66667H11.3332V4.33333C11.3332 2.49333 9.83984 1 7.99984 1C6.15984 1 4.6665 2.49333 4.6665 4.33333V5.66667H3.99984C3.2665 5.66667 2.6665 6.26667 2.6665 7V13.6667C2.6665 14.4 3.2665 15 3.99984 15H11.9998C12.7332 15 13.3332 14.4 13.3332 13.6667V7C13.3332 6.26667 12.7332 5.66667 11.9998 5.66667ZM5.99984 4.33333C5.99984 3.22667 6.89317 2.33333 7.99984 2.33333C9.1065 2.33333 9.99984 3.22667 9.99984 4.33333V5.66667H5.99984V4.33333ZM11.9998 13.6667H3.99984V7H11.9998V13.6667ZM7.99984 11.6667C8.73317 11.6667 9.33317 11.0667 9.33317 10.3333C9.33317 9.6 8.73317 9 7.99984 9C7.2665 9 6.6665 9.6 6.6665 10.3333C6.6665 11.0667 7.2665 11.6667 7.99984 11.6667Z\" fill=\"currentColor\"/>\n </svg>\n </div>\n <span class=\"cqa-text-[#6B7280] cqa-text-[14px] cqa-leading-[18px] cqa-min-w-[32px]\">{{ stepNumber }}</span>\n <span title=\"API\"\n class=\"cqa-w-8 cqa-h-8 cqa-rounded-lg cqa-flex cqa-items-center cqa-justify-center cqa-flex-shrink-0 cqa-bg-[#D1FAE5] cqa-text-[#059669]\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M4.08333 7H9.91667M9.91667 7L7.58333 4.66667M9.91667 7L7.58333 9.33333\" stroke=\"currentColor\"\n stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path\n d=\"M7 12.8333C10.2217 12.8333 12.8333 10.2217 12.8333 7C12.8333 3.77834 10.2217 1.16667 7 1.16667C3.77834 1.16667 1.16667 3.77834 1.16667 7C1.16667 10.2217 3.77834 12.8333 7 12.8333Z\"\n stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <div class=\"cqa-flex-grow cqa-flex cqa-flex-col cqa-gap-1\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <span class=\"cqa-text-[#111827] cqa-text-[14px] cqa-leading-[18px]\">{{ getDisplayText() }}</span>\n </div>\n <!-- Expanded details: light yellow box with summary, method, URL, headers, body, save to -->\n <div *ngIf=\"expanded\"\n [class]=\"'cqa-py-1 cqa-px-3 cqa-rounded-lg cqa-border cqa-border-solid cqa-bg-[#FEFCE8] cqa-border-[#FFF085]' + (isInsideLoop ? ' cqa-ml-10' : '')\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1\">\n <div *ngIf=\"description && description.trim() !== ''\" class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <span class=\"cqa-text-[#6B7280] cqa-text-[10px] cqa-leading-[15px] cqa-font-medium\">Summary:</span>\n <span class=\"cqa-text-[#111827] cqa-text-[12px] cqa-leading-[15px]\">{{ description }}</span>\n </div>\n <div\n class=\"cqa-text-[#6B7280] cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-flex cqa-flex-wrap cqa-items-center cqa-gap-8\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-3\">\n <span class=\"cqa-text-[#733E0A] cqa-text-[12px] cqa-leading-[15px] cqa-font-normal\">{{ apiType === 'graphql' ? 'GraphQL' : method }}</span>\n <span>{{ baseUrl || 'https://api.example.com' }}</span>\n </div>\n <span class=\"cqa-text-[#111827]\">{{ endpoint }}</span>\n <div class=\"cqa-flex cqa-items-center cqa-gap-3\">\n <span>Headers: {{ headersCount ?? 0 }}</span>\n <span>Body: {{ hasBody ? 'Yes' : 'No' }}</span>\n <span>Save to: {{ saveTo || '\u2014' }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-self-center\">\n <span *ngIf=\"config?.shouldSkip\" class=\"cqa-border cqa-border-solid cqa-border-[#E5E5E5] cqa-rounded-lg cqa-py-0.5 cqa-px-2 cqa-text-[#0A0A0A] cqa-text-[12px] cqa-leading-[15px] cqa-flex-shrink-0\">Skipped</span>\n <div *ngIf=\"editable && !isInsideStepGroup && !isReorder\" class=\"step-actions cqa-flex cqa-items-center cqa-gap-1.5 cqa-pr-2\">\n <button type=\"button\" (click)=\"onEdit(); $event.stopPropagation()\" title=\"Edit\"\n class=\"cqa-p-0 cqa-text-[#99A1Af] hover:cqa-text-[#1447E6]\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 11.6666H12.25\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path\n d=\"M9.55208 2.1128C9.7843 1.88058 10.0993 1.75012 10.4277 1.75012C10.7561 1.75012 11.071 1.88058 11.3033 2.1128C11.5355 2.34502 11.6659 2.65998 11.6659 2.98838C11.6659 3.31679 11.5355 3.63175 11.3033 3.86397L4.29742 10.8704C4.15864 11.0092 3.9871 11.1107 3.79867 11.1656L2.12333 11.6544C2.07314 11.669 2.01993 11.6699 1.96928 11.6569C1.91863 11.6439 1.8724 11.6176 1.83543 11.5806C1.79846 11.5437 1.7721 11.4974 1.75913 11.4468C1.74615 11.3961 1.74703 11.3429 1.76167 11.2927L2.2505 9.61738C2.30546 9.42916 2.40698 9.25783 2.54567 9.11922L9.55208 2.1128Z\"\n stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </button>\n <button type=\"button\" (click)=\"onSkipToggle(); $event.stopPropagation()\" [attr.title]=\"config?.shouldSkip ? 'Unskip step' : 'Skip step'\" [style.color]=\"config?.shouldSkip ? '#1447E6' : null\" class=\"cqa-p-0 cqa-text-[#99A1Af] hover:cqa-text-[#1447E6]\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8.25 8.75C9.2165 8.75 10 7.9665 10 7C10 6.0335 9.2165 5.25 8.25 5.25C7.2835 5.25 6.5 6.0335 6.5 7C6.5 7.9665 7.2835 8.75 8.25 8.75Z\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8.75033 2.91663H5.25033C2.99516 2.91663 1.16699 4.7448 1.16699 6.99996C1.16699 9.25512 2.99516 11.0833 5.25033 11.0833H8.75033C11.0055 11.0833 12.8337 9.25512 12.8337 6.99996C12.8337 4.7448 11.0055 2.91663 8.75033 2.91663Z\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </button>\n <!-- <button type=\"button\" (click)=\"onLink(); $event.stopPropagation()\" title=\"Link\"\n class=\"cqa-p-0 cqa-text-[#99A1Af] hover:cqa-text-[#1447E6]\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.00065 9.91671H3.66732C2.78326 9.91671 1.93542 9.60942 1.3103 9.06244C0.685174 8.51545 0.333984 7.77359 0.333984 7.00004C0.333984 6.22649 0.685174 5.48463 1.3103 4.93765C1.93542 4.39066 2.78326 4.08337 3.66732 4.08337H5.00065\"\n stroke=\"currentColor\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path\n d=\"M9 4.08337H10.3333C11.2174 4.08337 12.0652 4.39066 12.6904 4.93765C13.3155 5.48463 13.6667 6.22649 13.6667 7.00004C13.6667 7.77359 13.3155 8.51545 12.6904 9.06244C12.0652 9.60942 11.2174 9.91671 10.3333 9.91671H9\"\n stroke=\"currentColor\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path d=\"M4.33398 7H9.66732\" stroke=\"currentColor\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </button> -->\n <button\n type=\"button\"\n (click)=\"onDuplicate(); $event.stopPropagation()\"\n [disabled]=\"isDuplicating\"\n [attr.title]=\"isDuplicating ? 'Duplicating...' : 'Duplicate'\"\n class=\"cqa-p-0 cqa-text-[#99A1Af] hover:cqa-text-[#1447E6] disabled:cqa-opacity-60 disabled:cqa-cursor-not-allowed\"\n >\n <svg *ngIf=\"!isDuplicating\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M11.666 4.66663H5.83268C5.18835 4.66663 4.66602 5.18896 4.66602 5.83329V11.6666C4.66602 12.311 5.18835 12.8333 5.83268 12.8333H11.666C12.3103 12.8333 12.8327 12.311 12.8327 11.6666V5.83329C12.8327 5.18896 12.3103 4.66663 11.666 4.66663Z\"\n stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path\n d=\"M2.33268 9.33329C1.69102 9.33329 1.16602 8.80829 1.16602 8.16663V2.33329C1.16602 1.69163 1.69102 1.16663 2.33268 1.16663H8.16602C8.80768 1.16663 9.33268 1.69163 9.33268 2.33329\"\n stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n <svg *ngIf=\"isDuplicating\" width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-label=\"Duplicating\">\n <circle cx=\"8\" cy=\"8\" r=\"6\" stroke=\"currentColor\" stroke-opacity=\"0.2\" stroke-width=\"2\"></circle>\n <path d=\"M14 8A6 6 0 0 0 8 2\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\">\n <animateTransform attributeName=\"transform\" type=\"rotate\" from=\"0 8 8\" to=\"360 8 8\" dur=\"0.8s\" repeatCount=\"indefinite\"/>\n </path>\n </svg>\n </button>\n <button type=\"button\" (click)=\"onDelete(); $event.stopPropagation()\" title=\"Delete\"\n class=\"cqa-p-0 cqa-text-[#ff6467] hover:cqa-text-[#C63535]\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M1.75 3.5H12.25\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path\n d=\"M11.0827 3.5V11.6667C11.0827 12.25 10.4993 12.8333 9.91602 12.8333H4.08268C3.49935 12.8333 2.91602 12.25 2.91602 11.6667V3.5\"\n stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path\n d=\"M4.66602 3.49996V2.33329C4.66602 1.74996 5.24935 1.16663 5.83268 1.16663H8.16602C8.74935 1.16663 9.33268 1.74996 9.33268 2.33329V3.49996\"\n stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path d=\"M5.83398 6.41663V9.91663\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path d=\"M8.16602 6.41663V9.91663\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </button>\n </div>\n <!-- View Details Link (show only if description is not empty) - after action buttons, before date -->\n <a *ngIf=\"description && description.trim() !== ''\" #viewDetailsTrigger href=\"#\" (click)=\"onViewDetails($event)\"\n class=\"cqa-text-[#3F43EE] cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-flex cqa-items-center cqa-gap-1 cqa-no-underline\">\n {{ expanded ? 'Hide Details' : 'View Details' }}\n <svg width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2.03809 6.74329L2.62809 7.33329L5.96142 3.99996L2.62809 0.666626L2.03809 1.25663L4.78142 3.99996L2.03809 6.74329Z\" fill=\"#3F43EE\"/>\n </svg>\n </a>\n <!-- Created Date (from API) - last so aligned across all steps, format: 25 Feb 2026 -->\n <span *ngIf=\"config.createdDate\" class=\"step-date cqa-text-[#6B7280] cqa-text-[12px] cqa-leading-[15px] cqa-ml-auto cqa-flex-shrink-0\">\n {{ config.createdDate | date:'d MMM yyyy' }}\n </span>\n </div>\n </div>\n</div>" }]
|
|
127
135
|
}], ctorParameters: function () { return [{ type: i1.OverlayContainer }]; }, propDecorators: { editModalBackdropRef: [{
|
|
128
136
|
type: ViewChild,
|
|
129
137
|
args: ['editModalBackdrop']
|
|
@@ -133,6 +141,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
133
141
|
type: Input
|
|
134
142
|
}], method: [{
|
|
135
143
|
type: Input
|
|
144
|
+
}], apiType: [{
|
|
145
|
+
type: Input
|
|
136
146
|
}], endpoint: [{
|
|
137
147
|
type: Input
|
|
138
148
|
}], description: [{
|
|
@@ -192,4 +202,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
192
202
|
}], stepUpdate: [{
|
|
193
203
|
type: Output
|
|
194
204
|
}] } });
|
|
195
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXN0ZXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90ZXN0LWNhc2UtZGV0YWlscy9hcGktc3RlcC9hcGktc3RlcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Rlc3QtY2FzZS1kZXRhaWxzL2FwaS1zdGVwL2FwaS1zdGVwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3RHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7OztBQVVyRSxNQUFNLE9BQU8sd0JBQXdCO0lBd0VuQyxZQUNtQixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQXBFNUMsV0FBTSxHQUFnRCxLQUFLLENBQUM7UUFDNUQsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQU10QixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5QixzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFDbkMsaUJBQVksR0FBVyxDQUFDLENBQUM7UUFDekIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFDekIsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFROUIsU0FBSSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDaEMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBK0MsQ0FBQztRQUM5RSxTQUFJLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNoQyxjQUFTLEdBQUcs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QW5CLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUcsa0JBQWtCO3NCQUExQixLQUFLO2dCQUVHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFFRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUksSUFBSTtzQkFBYixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csSUFBSTtzQkFBYixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT3ZlcmxheUNvbnRhaW5lciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IEFwaVN0ZXBDb25maWcsIFRlc3RDYXNlU3RlcENvbmZpZyB9IGZyb20gJy4uL3Rlc3QtY2FzZS1zdGVwLm1vZGVscyc7XG5pbXBvcnQgeyBTVEVQX1JPV19BQ1RJT05TX1NUWUxFUyB9IGZyb20gJy4uL3N0ZXAtcm93LWFjdGlvbnMuc3R5bGVzJztcbmltcG9ydCB7IEVudmlyb25tZW50T3B0aW9uSW5wdXQgfSBmcm9tICcuLi9hcGktZWRpdC1zdGVwL2FwaS1lZGl0LXN0ZXAuY29tcG9uZW50JztcbmltcG9ydCB7IFZpZXdEZXRhaWxzUGF5bG9hZCB9IGZyb20gJy4uL3N0ZXAtZGV0YWlscy1tb2RhbC9zdGVwLWRldGFpbHMtbW9kYWwtZGF0YSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS10ZXN0LWNhc2UtYXBpLXN0ZXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vYXBpLXN0ZXAuY29tcG9uZW50Lmh0bWwnLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QnIH0sXG4gIHN0eWxlczogW1NURVBfUk9XX0FDVElPTlNfU1RZTEVTXSxcbn0pXG5leHBvcnQgY2xhc3MgVGVzdENhc2VBcGlTdGVwQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQFZpZXdDaGlsZCgnZWRpdE1vZGFsQmFja2Ryb3AnKSBlZGl0TW9kYWxCYWNrZHJvcFJlZj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIEBJbnB1dCgpIGNvbmZpZyE6IEFwaVN0ZXBDb25maWc7XG4gIEBJbnB1dCgpIHN0ZXBOdW1iZXIhOiBudW1iZXIgfCBzdHJpbmc7XG4gIEBJbnB1dCgpIG1ldGhvZDogJ0dFVCcgfCAnUE9TVCcgfCAnUFVUJyB8ICdERUxFVEUnIHwgJ1BBVENIJyA9ICdHRVQnO1xuICBASW5wdXQoKSBlbmRwb2ludDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBASW5wdXQoKSBiYXNlVXJsPzogc3RyaW5nO1xuICBASW5wdXQoKSBoZWFkZXJzQ291bnQ/OiBudW1iZXI7XG4gIEBJbnB1dCgpIGhhc0JvZHk/OiBib29sZWFuO1xuICBASW5wdXQoKSBzYXZlVG8/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlzTmVzdGVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlzSW5zaWRlTG9vcDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBpc0luc2lkZVN0ZXBHcm91cDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBuZXN0aW5nTGV2ZWw6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIGV4cGFuZGVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlzUmVvcmRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBlZGl0YWJsZTogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGlzRHVwbGljYXRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLyoqIEVudmlyb25tZW50IG9wdGlvbnMgZm9yIHRoZSBBUEkgZWRpdCBzdGVwIGRyb3Bkb3duOiBzdHJpbmdzIG9yIHsgaWQsIG5hbWUsIHZhbHVlLCBsYWJlbCB9LiBQYXNzZWQgdG8gY3FhLWFwaS1lZGl0LXN0ZXAuICovXG4gIEBJbnB1dCgpIGVudmlyb25tZW50T3B0aW9ucz86IEVudmlyb25tZW50T3B0aW9uSW5wdXRbXTtcbiAgLyoqIEhUVFAgbWV0aG9kIG9wdGlvbnMgZm9yIHRoZSBBUEkgZWRpdCBzdGVwIGRyb3Bkb3duOiBzdHJpbmdzIG9yIHsgaWQsIG5hbWUsIHZhbHVlLCBsYWJlbCB9LiBQYXNzZWQgdG8gY3FhLWFwaS1lZGl0LXN0ZXAuICovXG4gIEBJbnB1dCgpIGh0dHBNZXRob2RPcHRpb25zPzogRW52aXJvbm1lbnRPcHRpb25JbnB1dFtdO1xuICAvKiogSGVhZGVyIG5hbWUgb3B0aW9ucyBmb3IgdGhlIEFQSSBlZGl0IHN0ZXAgKGUuZy4gZm9yIGhlYWRlciBkcm9wZG93bik6IHN0cmluZ3Mgb3IgeyBpZCwgbmFtZSwgdmFsdWUsIGxhYmVsIH0uIFBhc3NlZCB0byBjcWEtYXBpLWVkaXQtc3RlcC4gKi9cbiAgQElucHV0KCkgaGVhZGVyTmFtZU9wdGlvbnM/OiBFbnZpcm9ubWVudE9wdGlvbklucHV0W107XG5cbiAgQE91dHB1dCgpIGVkaXQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBlZGl0SW5EZXB0aCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBzdGVwOiBUZXN0Q2FzZVN0ZXBDb25maWc7IGluZGV4OiBudW1iZXIgfT4oKTtcbiAgQE91dHB1dCgpIGxpbmsgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBkdXBsaWNhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBkZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBtb3JlT3B0aW9ucyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHZpZXdEZXRhaWxzID0gbmV3IEV2ZW50RW1pdHRlcjxWaWV3RGV0YWlsc1BheWxvYWQ+KCk7XG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSB0b2dnbGVFeHBhbmRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8e2NvbmZpZzogQXBpU3RlcENvbmZpZywgZXhwYW5kZWQ6IGJvb2xlYW59PigpO1xuICBAT3V0cHV0KCkgc3RlcFVwZGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8VGVzdENhc2VTdGVwQ29uZmlnPigpO1xuXG4gIGdldFJvd1BhZGRpbmdMZWZ0UHgoKTogbnVtYmVyIHtcbiAgICBjb25zdCBsZXZlbCA9IE51bWJlcih0aGlzLm5lc3RpbmdMZXZlbCkgfHwgMDtcbiAgICByZXR1cm4gMTYgKyAobGV2ZWwgKiAyNCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb25maWcpIHtcbiAgICAgIHRoaXMuc3RlcE51bWJlciA9IHRoaXMuY29uZmlnLnN0ZXBOdW1iZXI7XG4gICAgICB0aGlzLm1ldGhvZCA9IHRoaXMuY29uZmlnLm1ldGhvZDtcbiAgICAgIHRoaXMuZW5kcG9pbnQgPSB0aGlzLmNvbmZpZy5lbmRwb2ludDtcbiAgICAgIHRoaXMuZGVzY3JpcHRpb24gPSB0aGlzLmNvbmZpZy5kZXNjcmlwdGlvbjtcbiAgICAgIHRoaXMuYmFzZVVybCA9IHRoaXMuY29uZmlnLmJhc2VVcmw7XG4gICAgICB0aGlzLmhlYWRlcnNDb3VudCA9IHRoaXMuY29uZmlnLmhlYWRlcnNDb3VudDtcbiAgICAgIHRoaXMuaGFzQm9keSA9IHRoaXMuY29uZmlnLmhhc0JvZHk7XG4gICAgICB0aGlzLnNhdmVUbyA9IHRoaXMuY29uZmlnLnNhdmVUbztcbiAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0aGlzLmNvbmZpZy5zZWxlY3RlZCB8fCBmYWxzZTtcbiAgICAgIHRoaXMuZGlzYWJsZWQgPSB0aGlzLmNvbmZpZy5kaXNhYmxlZCB8fCBmYWxzZTtcbiAgICAgIHRoaXMuZXhwYW5kZWQgPSB0aGlzLmNvbmZpZy5leHBhbmRlZCB8fCBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBnZXREaXNwbGF5VGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBbdGhpcy5tZXRob2QsIHRoaXMuZW5kcG9pbnRdLmpvaW4oJyAnKTtcbiAgfVxuXG4gIG9uVG9nZ2xlRXhwYW5kZWQoKTogdm9pZCB7XG4gICAgdGhpcy5leHBhbmRlZCA9ICF0aGlzLmV4cGFuZGVkO1xuICAgIHRoaXMudG9nZ2xlRXhwYW5kZWQuZW1pdCh7Y29uZmlnOnRoaXMuY29uZmlnLCBleHBhbmRlZDp0aGlzLmV4cGFuZGVkfSk7XG4gIH1cblxuICBlZGl0TW9kYWxPcGVuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBvdmVybGF5Q29udGFpbmVyOiBPdmVybGF5Q29udGFpbmVyXG4gICkge31cblxuICBvblNraXBUb2dnbGUoKTogdm9pZCB7XG4gICAgLy8gVG9nZ2xlOiBpZiBjdXJyZW50bHkgdHJ1ZSDihpIgcGFzcyBmYWxzZSAodW5za2lwKTsgaWYgY3VycmVudGx5IGZhbHNlL3VuZGVmaW5lZCDihpIgcGFzcyB0cnVlIChza2lwKVxuICAgIGNvbnN0IGN1cnJlbnRseVNraXBwZWQgPSAhISh0aGlzLmNvbmZpZz8uc2hvdWxkU2tpcCk7XG4gICAgY29uc3Qgc2hvdWxkU2tpcE5leHQgPSAhY3VycmVudGx5U2tpcHBlZDtcbiAgICB0aGlzLnN0ZXBVcGRhdGUuZW1pdCh7IC4uLnRoaXMuY29uZmlnLCBzaG91bGRTa2lwOiBzaG91bGRTa2lwTmV4dCB9IGFzIFRlc3RDYXNlU3RlcENvbmZpZyk7XG4gIH1cblxuICBvbkVkaXQoKTogdm9pZCB7XG4gICAgLy8gQVBJIHN0ZXBzIHVzZSB0aGVpciBvd24gZWRpdCBtb2RhbCAoZG9uJ3Qgb3BlbiBlZGl0LWluLWRlcHRoIG1vZGFsKVxuICAgIHRoaXMuZWRpdE1vZGFsT3BlbiA9IHRydWU7XG4gICAgdGhpcy5lZGl0LmVtaXQoKTtcbiAgICAvLyBXYWl0IGZvciBtb2RhbCB0byByZW5kZXIsIHRoZW4gYXR0YWNoIG92ZXJsYXkgY29udGFpbmVyIHNvIHNlbGVjdCBwYW5lbHMgb3BlbiBiZWxvdyB0cmlnZ2VyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gdGhpcy5hdHRhY2hPdmVybGF5VG9Nb2RhbEJhY2tkcm9wKCkpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgY2xvc2VFZGl0TW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5kZXRhY2hPdmVybGF5RnJvbU1vZGFsQmFja2Ryb3AoKTtcbiAgICB0aGlzLmVkaXRNb2RhbE9wZW4gPSBmYWxzZTtcbiAgfVxuXG4gIC8qKiBBdHRhY2ggb3ZlcmxheSBjb250YWluZXIgdG8gbW9kYWwgYmFja2Ryb3Agc28gc2VsZWN0IHBhbmVscyBwb3NpdGlvbiBiZWxvdyB0cmlnZ2VyIChzYW1lIHN0YWNraW5nIGNvbnRleHQpLiAqL1xuICBwcml2YXRlIGF0dGFjaE92ZXJsYXlUb01vZGFsQmFja2Ryb3AoKTogdm9pZCB7XG4gICAgY29uc3QgYmFja2Ryb3AgPSB0aGlzLmVkaXRNb2RhbEJhY2tkcm9wUmVmPy5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMub3ZlcmxheUNvbnRhaW5lci5nZXRDb250YWluZXJFbGVtZW50KCk7XG4gICAgaWYgKGJhY2tkcm9wICYmIGNvbnRhaW5lci5wYXJlbnRFbGVtZW50ICE9PSBiYWNrZHJvcCkge1xuICAgICAgYmFja2Ryb3AuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTtcbiAgICAgIGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdjcWEtYXBpLXN0ZXAtZWRpdC1tb2RhbC1vdmVybGF5LWhvc3QnKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRldGFjaE92ZXJsYXlGcm9tTW9kYWxCYWNrZHJvcCgpOiB2b2lkIHtcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLm92ZXJsYXlDb250YWluZXIuZ2V0Q29udGFpbmVyRWxlbWVudCgpO1xuICAgIGNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCdjcWEtYXBpLXN0ZXAtZWRpdC1tb2RhbC1vdmVybGF5LWhvc3QnKTtcbiAgICBpZiAoY29udGFpbmVyLnBhcmVudEVsZW1lbnQgIT09IGRvY3VtZW50LmJvZHkpIHtcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTtcbiAgICB9XG4gIH1cbiAgb25MaW5rKCk6IHZvaWQgeyB0aGlzLmxpbmsuZW1pdCgpOyB9XG4gIG9uRHVwbGljYXRlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRHVwbGljYXRpbmcpIHJldHVybjtcbiAgICB0aGlzLmR1cGxpY2F0ZS5lbWl0KCk7XG4gIH1cbiAgb25EZWxldGUoKTogdm9pZCB7IHRoaXMuZGVsZXRlLmVtaXQoKTsgfVxuICBvbk1vcmVPcHRpb25zKCk6IHZvaWQgeyB0aGlzLm1vcmVPcHRpb25zLmVtaXQoKTsgfVxuICBvblZpZXdEZXRhaWxzKGV2ZW50PzogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgICBcbiAgICBpZiAoIXRoaXMuZGVzY3JpcHRpb24gfHwgdGhpcy5kZXNjcmlwdGlvbi50cmltKCkgPT09ICcnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICB0aGlzLm9uVG9nZ2xlRXhwYW5kZWQoKTtcbiAgICAgIHRoaXMudmlld0RldGFpbHMuZW1pdCh7XG4gICAgICAgIGV2ZW50LFxuICAgICAgICB0aXRsZTogJ0FQSSBTdGVwIERldGFpbHMnLFxuICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbixcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICBvblNlbGVjdGlvbkNoYW5nZShjaGVja2VkOiBib29sZWFuKTogdm9pZCB7IHRoaXMuc2VsZWN0ZWQgPSBjaGVja2VkOyB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KGNoZWNrZWQpOyB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sXCIgc3R5bGU9XCJib3JkZXItdG9wOiAxcHggc29saWQgI0U1RTdFQjsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNFNUU3RUI7XCI+XG4gIDxkaXZcbiAgICBbY2xhc3NdPVwiJ3N0ZXAtcm93IGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0zIGNxYS1weS0yIGNxYS1wci00JyArIChjb25maWc/LnNob3VsZFNraXAgPyAnIGNxYS1zdGVwLXNraXBwZWQnIDogJycpXCJcbiAgICBbc3R5bGUub3BhY2l0eV09XCJjb25maWc/LnNob3VsZFNraXAgPyAnMC42JyA6IG51bGxcIlxuICAgIFtzdHlsZS5wYWRkaW5nLWxlZnQucHhdPVwiZ2V0Um93UGFkZGluZ0xlZnRQeCgpXCJcbiAgICBbc3R5bGUuYm9yZGVyLXRvcF09XCJpc0luc2lkZVN0ZXBHcm91cCA/ICcxcHggc29saWQgI0JFREJGRicgOiBudWxsXCI+XG4gICAgPGRpdiAqbmdJZj1cIiFpc0luc2lkZVN0ZXBHcm91cFwiIGNsYXNzPVwiY3FhLWlubGluZS1mbGV4IGNxYS1pdGVtcy1jZW50ZXJcIj5cbiAgICAgIDwhLS0gRHJhZyBIYW5kbGUgSWNvbiAod2hlbiBpc1Jlb3JkZXIgaXMgdHJ1ZSBhbmQgbm90IGluc2lkZSBzdGVwIGdyb3VwIC0gc3RlcHMgaW5zaWRlIHN0ZXAgZ3JvdXBzIGNhbm5vdCBiZSByZW9yZGVyZWQpIC0tPlxuICAgICAgPGRpdiAqbmdJZj1cImlzUmVvcmRlciAmJiAhaXNJbnNpZGVTdGVwR3JvdXBcIiBjbGFzcz1cImNxYS1tci0yIGNxYS1jdXJzb3ItbW92ZSBjcWEtdGV4dC1bIzZCNzI4MF0gaG92ZXI6Y3FhLXRleHQtWyMxMTE4MjddXCI+XG4gICAgICAgIDxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCIzXCIgY3k9XCIzXCIgcj1cIjEuNVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIi8+XG4gICAgICAgICAgPGNpcmNsZSBjeD1cIjhcIiBjeT1cIjNcIiByPVwiMS41XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiLz5cbiAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTNcIiBjeT1cIjNcIiByPVwiMS41XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiLz5cbiAgICAgICAgICA8Y2lyY2xlIGN4PVwiM1wiIGN5PVwiOFwiIHI9XCIxLjVcIiBmaWxsPVwiY3VycmVudENvbG9yXCIvPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCI4XCIgY3k9XCI4XCIgcj1cIjEuNVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIi8+XG4gICAgICAgICAgPGNpcmNsZSBjeD1cIjEzXCIgY3k9XCI4XCIgcj1cIjEuNVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIi8+XG4gICAgICAgICAgPGNpcmNsZSBjeD1cIjNcIiBjeT1cIjEzXCIgcj1cIjEuNVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIi8+XG4gICAgICAgICAgPGNpcmNsZSBjeD1cIjhcIiBjeT1cIjEzXCIgcj1cIjEuNVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIi8+XG4gICAgICAgICAgPGNpcmNsZSBjeD1cIjEzXCIgY3k9XCIxM1wiIHI9XCIxLjVcIiBmaWxsPVwiY3VycmVudENvbG9yXCIvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSBDaGVja2JveCAod2hlbiBpc1Jlb3JkZXIgaXMgZmFsc2UgYW5kIG5vdCBpbnNpZGUgc3RlcCBncm91cCAtIGhpZGUgZm9yIHN0ZXBzIGluc2lkZSBzdGVwIGdyb3VwcykgLS0+XG4gICAgICA8bGFiZWwgKm5nSWY9XCJlZGl0YWJsZSAmJiAhaXNSZW9yZGVyICYmICFpc0luc2lkZVN0ZXBHcm91cFwiIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtY3Vyc29yLXBvaW50ZXIgY3FhLXJlbGF0aXZlIGNxYS1tci0yXCI+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbbmdNb2RlbF09XCJzZWxlY3RlZFwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIGNsYXNzPVwiY3FhLWgtNCBjcWEtdy00IGNxYS1jdXJzb3ItcG9pbnRlciBjcWEtdHJhbnNpdGlvbi1hbGwgY3FhLWFwcGVhcmFuY2Utbm9uZSBjcWEtcm91bmRlZCBzaGFkb3cgaG92ZXI6Y3FhLXNoYWRvdy1tZCBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1zbGF0ZS0zMDAgY3FhLWZsZXgtc2hyaW5rLTBcIlxuICAgICAgICAgIFtjbGFzcy5jcWEtYmctWyMzRjQzRUVdXT1cInNlbGVjdGVkXCIgW2NsYXNzLmNxYS1ib3JkZXItWyMzRjQzRUVdXT1cInNlbGVjdGVkXCIgaWQ9XCJjaGVja1wiIC8+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJjcWEtYWJzb2x1dGUgY3FhLXRleHQtd2hpdGUgY3FhLXRvcC0xLzIgY3FhLWxlZnQtMS8yIGNxYS0tdHJhbnNsYXRlLXgtMS8yIGNxYS0tdHJhbnNsYXRlLXktMS8yIGNxYS1wb2ludGVyLWV2ZW50cy1ub25lIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyXCJcbiAgICAgICAgICBbY2xhc3MuY3FhLW9wYWNpdHktMF09XCIhc2VsZWN0ZWRcIiBbY2xhc3MuY3FhLW9wYWNpdHktMTAwXT1cInNlbGVjdGVkXCI+XG4gICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTNcIiB2aWV3Qm94PVwiMCAwIDEyIDEzXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTEwIDMuMTI1TDQuNSA4LjYyNUwyIDYuMTI1XCIgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgIDwvc3ZnPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJpc0luc2lkZVN0ZXBHcm91cFwiIGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtc2hyaW5rLTAgY3FhLWl0ZW1zLWNlbnRlciBjcWEtcGwtMCBjcWEtcHItMSBjcWEtdGV4dC1bIzlDQTNBRl1cIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlN0ZXAgaXMgaW5zaWRlIGEgZ3JvdXBcIj5cbiAgICAgIDxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICA8cGF0aCBkPVwiTTExLjk5OTggNS42NjY2N0gxMS4zMzMyVjQuMzMzMzNDMTEuMzMzMiAyLjQ5MzMzIDkuODM5ODQgMSA3Ljk5OTg0IDFDNi4xNTk4NCAxIDQuNjY2NSAyLjQ5MzMzIDQuNjY2NSA0LjMzMzMzVjUuNjY2NjdIMy45OTk4NEMzLjI2NjUgNS42NjY2NyAyLjY2NjUgNi4yNjY2NyAyLjY2NjUgN1YxMy42NjY3QzIuNjY2NSAxNC40IDMuMjY2NSAxNSAzLjk5OTg0IDE1SDExLjk5OThDMTIuNzMzMiAxNSAxMy4zMzMyIDE0LjQgMTMuMzMzMiAxMy42NjY3VjdDMTMuMzMzMiA2LjI2NjY3IDEyLjczMzIgNS42NjY2NyAxMS45OTk4IDUuNjY2NjdaTTUuOTk5ODQgNC4zMzMzM0M1Ljk5OTg0IDMuMjI2NjcgNi44OTMxNyAyLjMzMzMzIDcuOTk5ODQgMi4zMzMzM0M5LjEwNjUgMi4zMzMzMyA5Ljk5OTg0IDMuMjI2NjcgOS45OTk4NCA0LjMzMzMzVjUuNjY2NjdINS45OTk4NFY0LjMzMzMzWk0xMS45OTk4IDEzLjY2NjdIMy45OTk4NFY3SDExLjk5OThWMTMuNjY2N1pNNy45OTk4NCAxMS42NjY3QzguNzMzMTcgMTEuNjY2NyA5LjMzMzE3IDExLjA2NjcgOS4zMzMxNyAxMC4zMzMzQzkuMzMzMTcgOS42IDguNzMzMTcgOSA3Ljk5OTg0IDlDNy4yNjY1IDkgNi42NjY1IDkuNiA2LjY2NjUgMTAuMzMzM0M2LjY2NjUgMTEuMDY2NyA3LjI2NjUgMTEuNjY2NyA3Ljk5OTg0IDExLjY2NjdaXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWyM2QjcyODBdIGNxYS10ZXh0LVsxNHB4XSBjcWEtbGVhZGluZy1bMThweF0gY3FhLW1pbi13LVszMnB4XVwiPnt7IHN0ZXBOdW1iZXIgfX08L3NwYW4+XG4gICAgPHNwYW4gdGl0bGU9XCJBUElcIlxuICAgICAgY2xhc3M9XCJjcWEtdy04IGNxYS1oLTggY3FhLXJvdW5kZWQtbGcgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLWZsZXgtc2hyaW5rLTAgY3FhLWJnLVsjRDFGQUU1XSBjcWEtdGV4dC1bIzA1OTY2OV1cIj5cbiAgICAgIDxzdmcgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICA8cGF0aCBkPVwiTTQuMDgzMzMgN0g5LjkxNjY3TTkuOTE2NjcgN0w3LjU4MzMzIDQuNjY2NjdNOS45MTY2NyA3TDcuNTgzMzMgOS4zMzMzM1wiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4xNjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZD1cIk03IDEyLjgzMzNDMTAuMjIxNyAxMi44MzMzIDEyLjgzMzMgMTAuMjIxNyAxMi44MzMzIDdDMTIuODMzMyAzLjc3ODM0IDEwLjIyMTcgMS4xNjY2NyA3IDEuMTY2NjdDMy43NzgzNCAxLjE2NjY3IDEuMTY2NjcgMy43NzgzNCAxLjE2NjY3IDdDMS4xNjY2NyAxMC4yMjE3IDMuNzc4MzQgMTIuODMzMyA3IDEyLjgzMzNaXCJcbiAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjE2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvc3Bhbj5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXgtZ3JvdyBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0xXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTJcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bIzExMTgyN10gY3FhLXRleHQtWzE0cHhdIGNxYS1sZWFkaW5nLVsxOHB4XVwiPnt7IGdldERpc3BsYXlUZXh0KCkgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDwhLS0gRXhwYW5kZWQgZGV0YWlsczogbGlnaHQgeWVsbG93IGJveCB3aXRoIHN1bW1hcnksIG1ldGhvZCwgVVJMLCBoZWFkZXJzLCBib2R5LCBzYXZlIHRvIC0tPlxuICAgICAgPGRpdiAqbmdJZj1cImV4cGFuZGVkXCJcbiAgICAgICAgW2NsYXNzXT1cIidjcWEtcHktMSBjcWEtcHgtMyBjcWEtcm91bmRlZC1sZyBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJnLVsjRkVGQ0U4XSBjcWEtYm9yZGVyLVsjRkZGMDg1XScgKyAoaXNJbnNpZGVMb29wID8gJyBjcWEtbWwtMTAnIDogJycpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0xXCI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImRlc2NyaXB0aW9uICYmIGRlc2NyaXB0aW9uLnRyaW0oKSAhPT0gJydcIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsjNkI3MjgwXSBjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1mb250LW1lZGl1bVwiPlN1bW1hcnk6PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bIzExMTgyN10gY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLVsxNXB4XVwiPnt7IGRlc2NyaXB0aW9uIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiY3FhLXRleHQtWyM2QjcyODBdIGNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS1mbGV4IGNxYS1mbGV4LXdyYXAgY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLThcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtM1wiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsjNzMzRTBBXSBjcWEtdGV4dC1bMTJweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1mb250LW5vcm1hbFwiPnt7bWV0aG9kIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3Bhbj57eyBiYXNlVXJsIHx8ICdodHRwczovL2FwaS5leGFtcGxlLmNvbScgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWyMxMTE4MjddXCI+e3sgZW5kcG9pbnQgfX08L3NwYW4+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTNcIj5cbiAgICAgICAgICAgICAgPHNwYW4+SGVhZGVyczoge3sgaGVhZGVyc0NvdW50ID8/IDAgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuPkJvZHk6IHt7IGhhc0JvZHkgPyAnWWVzJyA6ICdObycgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuPlNhdmUgdG86IHt7IHNhdmVUbyB8fCAn4oCUJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMiBjcWEtc2VsZi1jZW50ZXJcIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiY29uZmlnPy5zaG91bGRTa2lwXCIgY2xhc3M9XCJjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1bI0U1RTVFNV0gY3FhLXJvdW5kZWQtbGcgY3FhLXB5LTAuNSBjcWEtcHgtMiBjcWEtdGV4dC1bIzBBMEEwQV0gY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtZmxleC1zaHJpbmstMFwiPlNraXBwZWQ8L3NwYW4+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZWRpdGFibGUgJiYgIWlzSW5zaWRlU3RlcEdyb3VwICYmICFpc1Jlb3JkZXJcIiBjbGFzcz1cInN0ZXAtYWN0aW9ucyBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMS41IGNxYS1wci0yXCI+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25FZGl0KCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIHRpdGxlPVwiRWRpdFwiXG4gICAgICAgIGNsYXNzPVwiY3FhLXAtMCBjcWEtdGV4dC1bIzk5QTFBZl0gaG92ZXI6Y3FhLXRleHQtWyMxNDQ3RTZdXCI+XG4gICAgICAgIDxzdmcgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNNyAxMS42NjY2SDEyLjI1XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS4xNjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBkPVwiTTkuNTUyMDggMi4xMTI4QzkuNzg0MyAxLjg4MDU4IDEwLjA5OTMgMS43NTAxMiAxMC40Mjc3IDEuNzUwMTJDMTAuNzU2MSAxLjc1MDEyIDExLjA3MSAxLjg4MDU4IDExLjMwMzMgMi4xMTI4QzExLjUzNTUgMi4zNDUwMiAxMS42NjU5IDIuNjU5OTggMTEuNjY1OSAyLjk4ODM4QzExLjY2NTkgMy4zMTY3OSAxMS41MzU1IDMuNjMxNzUgMTEuMzAzMyAzLjg2Mzk3TDQuMjk3NDIgMTAuODcwNEM0LjE1ODY0IDExLjAwOTIgMy45ODcxIDExLjExMDcgMy43OTg2NyAxMS4xNjU2TDIuMTIzMzMgMTEuNjU0NEMyLjA3MzE0IDExLjY2OSAyLjAxOTkzIDExLjY2OTkgMS45NjkyOCAxMS42NTY5QzEuOTE4NjMgMTEuNjQzOSAxLjg3MjQgMTEuNjE3NiAxLjgzNTQzIDExLjU4MDZDMS43OTg0NiAxMS41NDM3IDEuNzcyMSAxMS40OTc0IDEuNzU5MTMgMTEuNDQ2OEMxLjc0NjE1IDExLjM5NjEgMS43NDcwMyAxMS4zNDI5IDEuNzYxNjcgMTEuMjkyN0wyLjI1MDUgOS42MTczOEMyLjMwNTQ2IDkuNDI5MTYgMi40MDY5OCA5LjI1NzgzIDIuNTQ1NjcgOS4xMTkyMkw5LjU1MjA4IDIuMTEyOFpcIlxuICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS4xNjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25Ta2lwVG9nZ2xlKCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIFthdHRyLnRpdGxlXT1cImNvbmZpZz8uc2hvdWxkU2tpcCA/ICdVbnNraXAgc3RlcCcgOiAnU2tpcCBzdGVwJ1wiIFtzdHlsZS5jb2xvcl09XCJjb25maWc/LnNob3VsZFNraXAgPyAnIzE0NDdFNicgOiBudWxsXCIgY2xhc3M9XCJjcWEtcC0wIGNxYS10ZXh0LVsjOTlBMUFmXSBob3ZlcjpjcWEtdGV4dC1bIzE0NDdFNl1cIj5cbiAgICAgICAgPHN2ZyB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgPHBhdGggZD1cIk04LjI1IDguNzVDOS4yMTY1IDguNzUgMTAgNy45NjY1IDEwIDdDMTAgNi4wMzM1IDkuMjE2NSA1LjI1IDguMjUgNS4yNUM3LjI4MzUgNS4yNSA2LjUgNi4wMzM1IDYuNSA3QzYuNSA3Ljk2NjUgNy4yODM1IDguNzUgOC4yNSA4Ljc1WlwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuMTY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgPHBhdGggZD1cIk04Ljc1MDMzIDIuOTE2NjNINS4yNTAzM0MyLjk5NTE2IDIuOTE2NjMgMS4xNjY5OSA0Ljc0NDggMS4xNjY5OSA2Ljk5OTk2QzEuMTY2OTkgOS4yNTUxMiAyLjk5NTE2IDExLjA4MzMgNS4yNTAzMyAxMS4wODMzSDguNzUwMzNDMTEuMDA1NSAxMS4wODMzIDEyLjgzMzcgOS4yNTUxMiAxMi44MzM3IDYuOTk5OTZDMTIuODMzNyA0Ljc0NDggMTEuMDA1NSAyLjkxNjYzIDguNzUwMzMgMi45MTY2M1pcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjE2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPCEtLSA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25MaW5rKCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIHRpdGxlPVwiTGlua1wiXG4gICAgICAgIGNsYXNzPVwiY3FhLXAtMCBjcWEtdGV4dC1bIzk5QTFBZl0gaG92ZXI6Y3FhLXRleHQtWyMxNDQ3RTZdXCI+XG4gICAgICAgIDxzdmcgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBkPVwiTTUuMDAwNjUgOS45MTY3MUgzLjY2NzMyQzIuNzgzMjYgOS45MTY3MSAxLjkzNTQyIDkuNjA5NDIgMS4zMTAzIDkuMDYyNDRDMC42ODUxNzQgOC41MTU0NSAwLjMzMzk4NCA3Ljc3MzU5IDAuMzMzOTg0IDcuMDAwMDRDMC4zMzM5ODQgNi4yMjY0OSAwLjY4NTE3NCA1LjQ4NDYzIDEuMzEwMyA0LjkzNzY1QzEuOTM1NDIgNC4zOTA2NiAyLjc4MzI2IDQuMDgzMzcgMy42NjczMiA0LjA4MzM3SDUuMDAwNjVcIlxuICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGQ9XCJNOSA0LjA4MzM3SDEwLjMzMzNDMTEuMjE3NCA0LjA4MzM3IDEyLjA2NTIgNC4zOTA2NiAxMi42OTA0IDQuOTM3NjVDMTMuMzE1NSA1LjQ4NDYzIDEzLjY2NjcgNi4yMjY0OSAxMy42NjY3IDcuMDAwMDRDMTMuNjY2NyA3Ljc3MzU5IDEzLjMxNTUgOC41MTU0NSAxMi42OTA0IDkuMDYyNDRDMTIuMDY1MiA5LjYwOTQyIDExLjIxNzQgOS45MTY3MSAxMC4zMzMzIDkuOTE2NzFIOVwiXG4gICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICA8cGF0aCBkPVwiTTQuMzMzOTggN0g5LjY2NzMyXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvYnV0dG9uPiAtLT5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJvbkR1cGxpY2F0ZSgpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiaXNEdXBsaWNhdGluZ1wiXG4gICAgICAgIFthdHRyLnRpdGxlXT1cImlzRHVwbGljYXRpbmcgPyAnRHVwbGljYXRpbmcuLi4nIDogJ0R1cGxpY2F0ZSdcIlxuICAgICAgICBjbGFzcz1cImNxYS1wLTAgY3FhLXRleHQtWyM5OUExQWZdIGhvdmVyOmNxYS10ZXh0LVsjMTQ0N0U2XSBkaXNhYmxlZDpjcWEtb3BhY2l0eS02MCBkaXNhYmxlZDpjcWEtY3Vyc29yLW5vdC1hbGxvd2VkXCJcbiAgICAgID5cbiAgICAgICAgPHN2ZyAqbmdJZj1cIiFpc0R1cGxpY2F0aW5nXCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBkPVwiTTExLjY2NiA0LjY2NjYzSDUuODMyNjhDNS4xODgzNSA0LjY2NjYzIDQuNjY2MDIgNS4xODg5NiA0LjY2NjAyIDUuODMzMjlWMTEuNjY2NkM0LjY2NjAyIDEyLjMxMSA1LjE4ODM1IDEyLjgzMzMgNS44MzI2OCAxMi44MzMzSDExLjY2NkMxMi4zMTAzIDEyLjgzMzMgMTIuODMyNyAxMi4zMTEgMTIuODMyNyAxMS42NjY2VjUuODMzMjlDMTIuODMyNyA1LjE4ODk2IDEyLjMxMDMgNC42NjY2MyAxMS42NjYgNC42NjY2M1pcIlxuICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS4xNjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGQ9XCJNMi4zMzI2OCA5LjMzMzI5QzEuNjkxMDIgOS4zMzMyOSAxLjE2NjAyIDguODA4MjkgMS4xNjYwMiA4LjE2NjYzVjIuMzMzMjlDMS4xNjYwMiAxLjY5MTYzIDEuNjkxMDIgMS4xNjY2MyAyLjMzMjY4IDEuMTY2NjNIOC4xNjYwMkM4LjgwNzY4IDEuMTY2NjMgOS4zMzI2OCAxLjY5MTYzIDkuMzMyNjggMi4zMzMyOVwiXG4gICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjE2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICAgIDxzdmcgKm5nSWY9XCJpc0R1cGxpY2F0aW5nXCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGFyaWEtbGFiZWw9XCJEdXBsaWNhdGluZ1wiPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCI4XCIgY3k9XCI4XCIgcj1cIjZcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utb3BhY2l0eT1cIjAuMlwiIHN0cm9rZS13aWR0aD1cIjJcIj48L2NpcmNsZT5cbiAgICAgICAgICA8cGF0aCBkPVwiTTE0IDhBNiA2IDAgMCAwIDggMlwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCI+XG4gICAgICAgICAgICA8YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPVwidHJhbnNmb3JtXCIgdHlwZT1cInJvdGF0ZVwiIGZyb209XCIwIDggOFwiIHRvPVwiMzYwIDggOFwiIGR1cj1cIjAuOHNcIiByZXBlYXRDb3VudD1cImluZGVmaW5pdGVcIi8+XG4gICAgICAgICAgPC9wYXRoPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uRGVsZXRlKCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIHRpdGxlPVwiRGVsZXRlXCJcbiAgICAgICAgY2xhc3M9XCJjcWEtcC0wIGNxYS10ZXh0LVsjZmY2NDY3XSBob3ZlcjpjcWEtdGV4dC1bI0M2MzUzNV1cIj5cbiAgICAgICAgPHN2ZyB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgPHBhdGggZD1cIk0xLjc1IDMuNUgxMi4yNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuMTY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgZD1cIk0xMS4wODI3IDMuNVYxMS42NjY3QzExLjA4MjcgMTIuMjUgMTAuNDk5MyAxMi44MzMzIDkuOTE2MDIgMTIuODMzM0g0LjA4MjY4QzMuNDk5MzUgMTIuODMzMyAyLjkxNjAyIDEyLjI1IDIuOTE2MDIgMTEuNjY2N1YzLjVcIlxuICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS4xNjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGQ9XCJNNC42NjYwMiAzLjQ5OTk2VjIuMzMzMjlDNC42NjYwMiAxLjc0OTk2IDUuMjQ5MzUgMS4xNjY2MyA1LjgzMjY4IDEuMTY2NjNIOC4xNjYwMkM4Ljc0OTM1IDEuMTY2NjMgOS4zMzI2OCAxLjc0OTk2IDkuMzMyNjggMi4zMzMyOVYzLjQ5OTk2XCJcbiAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuMTY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNNS44MzM5OCA2LjQxNjYzVjkuOTE2NjNcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjE2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgPHBhdGggZD1cIk04LjE2NjAyIDYuNDE2NjNWOS45MTY2M1wiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuMTY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSBWaWV3IERldGFpbHMgTGluayAoc2hvdyBvbmx5IGlmIGRlc2NyaXB0aW9uIGlzIG5vdCBlbXB0eSkgLSBhZnRlciBhY3Rpb24gYnV0dG9ucywgYmVmb3JlIGRhdGUgLS0+XG4gICAgICA8YSAqbmdJZj1cImRlc2NyaXB0aW9uICYmIGRlc2NyaXB0aW9uLnRyaW0oKSAhPT0gJydcIiAjdmlld0RldGFpbHNUcmlnZ2VyIGhyZWY9XCIjXCIgKGNsaWNrKT1cIm9uVmlld0RldGFpbHMoJGV2ZW50KVwiXG4gICAgICAgIGNsYXNzPVwiY3FhLXRleHQtWyMzRjQzRUVdIGNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0xIGNxYS1uby11bmRlcmxpbmVcIj5cbiAgICAgICAge3sgZXhwYW5kZWQgPyAnSGlkZSBEZXRhaWxzJyA6ICdWaWV3IERldGFpbHMnIH19XG4gICAgICAgIDxzdmcgd2lkdGg9XCI4XCIgaGVpZ2h0PVwiOFwiIHZpZXdCb3g9XCIwIDAgOCA4XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgPHBhdGggZD1cIk0yLjAzODA5IDYuNzQzMjlMMi42MjgwOSA3LjMzMzI5TDUuOTYxNDIgMy45OTk5NkwyLjYyODA5IDAuNjY2NjI2TDIuMDM4MDkgMS4yNTY2M0w0Ljc4MTQyIDMuOTk5OTZMMi4wMzgwOSA2Ljc0MzI5WlwiIGZpbGw9XCIjM0Y0M0VFXCIvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvYT5cbiAgICAgIDwhLS0gQ3JlYXRlZCBEYXRlIChmcm9tIEFQSSkgLSBsYXN0IHNvIGFsaWduZWQgYWNyb3NzIGFsbCBzdGVwcywgZm9ybWF0OiAyNSBGZWIgMjAyNiAtLT5cbiAgICAgIDxzcGFuICpuZ0lmPVwiY29uZmlnLmNyZWF0ZWREYXRlXCIgY2xhc3M9XCJzdGVwLWRhdGUgY3FhLXRleHQtWyM2QjcyODBdIGNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLW1sLWF1dG8gY3FhLWZsZXgtc2hyaW5rLTBcIj5cbiAgICAgICAge3sgY29uZmlnLmNyZWF0ZWREYXRlIHwgZGF0ZTonZCBNTU0geXl5eScgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
|
|
205
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXN0ZXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90ZXN0LWNhc2UtZGV0YWlscy9hcGktc3RlcC9hcGktc3RlcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Rlc3QtY2FzZS1kZXRhaWxzL2FwaS1zdGVwL2FwaS1zdGVwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3RHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7OztBQVVyRSxNQUFNLE9BQU8sd0JBQXdCO0lBZ0ZuQyxZQUNtQixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQTVFNUMsV0FBTSxHQUFnRCxLQUFLLENBQUM7UUFDckU7c0ZBQzhFO1FBQ3JFLFlBQU8sR0FBdUIsTUFBTSxDQUFDO1FBQ3JDLGFBQVEsR0FBVyxFQUFFLENBQUM7UUFNdEIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFDOUIsc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBQ25DLGlCQUFZLEdBQVcsQ0FBQyxDQUFDO1FBQ3pCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixhQUFRLEdBQVksSUFBSSxDQUFDO1FBQ3pCLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBUTlCLFNBQUksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ2hDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQStDLENBQUM7UUFDOUUsU0FBSSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDaEMsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDckMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDbEMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3ZDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFDckQsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQzlDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQThDLENBQUM7UUFDaEYsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFzQixDQUFDO1FBcUM5RCxrQkFBYSxHQUFHLEtBQUssQ0FBQztJQUluQixDQUFDO0lBdkNKLG1CQUFtQjtRQUNqQixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QyxPQUFPLEVBQUUsR0FBRyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7WUFDekMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUNqQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDdEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztZQUNyQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO1lBQzNDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7WUFDbkMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztZQUM3QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO1lBQ25DLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUM7WUFDOUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUM7WUFDOUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUM7U0FDL0M7SUFDSCxDQUFDO0lBRUQsY0FBYztRQUNaLHlFQUF5RTtRQUN6RSx1RUFBdUU7UUFDdkUsd0RBQXdEO1FBQ3hELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDbkUsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUMvQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFDLE1BQU0sRUFBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBQyxJQUFJLENBQUMsUUFBUSxFQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBUUQsWUFBWTtRQUNWLG1HQUFtRztRQUNuRyxNQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDckQsTUFBTSxjQUFjLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQztRQUN6QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUF3QixDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUVELE1BQU07UUFDSixzRUFBc0U7UUFDdEUsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqQiw4RkFBOEY7UUFDOUYsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLHFCQUFxQixDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDLENBQUM7UUFDbkUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsOEJBQThCLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUM3QixDQUFDO0lBRUQsa0hBQWtIO0lBQzFHLDRCQUE0QjtRQUNsQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsYUFBYSxDQUFDO1FBQzFELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzlELElBQUksUUFBUSxJQUFJLFNBQVMsQ0FBQyxhQUFhLEtBQUssUUFBUSxFQUFFO1lBQ3BELFFBQVEsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDaEMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsc0NBQXNDLENBQUMsQ0FBQztTQUNqRTtJQUNILENBQUM7SUFFTyw4QkFBOEI7UUFDcEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDOUQsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsc0NBQXNDLENBQUMsQ0FBQztRQUNuRSxJQUFJLFNBQVMsQ0FBQyxhQUFhLEtBQUssUUFBUSxDQUFDLElBQUksRUFBRTtZQUM3QyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUN0QztJQUNILENBQUM7SUFDRCxNQUFNLEtBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEMsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLGFBQWE7WUFBRSxPQUFPO1FBQy9CLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUNELFFBQVEsS0FBVyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4QyxhQUFhLEtBQVcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEQsYUFBYSxDQUFDLEtBQWtCO1FBQzlCLElBQUksS0FBSyxFQUFFO1lBQ1QsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN6QjtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3ZELE9BQU87U0FDUjtRQUVELElBQUksS0FBSyxFQUFFO1lBQ1QsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7Z0JBQ3BCLEtBQUs7Z0JBQ0wsS0FBSyxFQUFFLGtCQUFrQjtnQkFDekIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO2FBQzlCLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUNELGlCQUFpQixDQUFDLE9BQWdCLElBQVUsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7O3FIQXJKL0Ysd0JBQXdCO3lHQUF4Qix3QkFBd0IscWxDQ2JyQyw4OWNBcUtNOzJGRHhKTyx3QkFBd0I7a0JBTnBDLFNBQVM7K0JBQ0Usd0JBQXdCLFFBRTVCLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxVQUN0QixDQUFDLHVCQUF1QixDQUFDO3VHQUdELG9CQUFvQjtzQkFBbkQsU0FBUzt1QkFBQyxtQkFBbUI7Z0JBRXJCLE1BQU07c0JBQWQsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFHRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVJLElBQUk7c0JBQWIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLElBQUk7c0JBQWIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE92ZXJsYXlDb250YWluZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBBcGlTdGVwQ29uZmlnLCBUZXN0Q2FzZVN0ZXBDb25maWcgfSBmcm9tICcuLi90ZXN0LWNhc2Utc3RlcC5tb2RlbHMnO1xuaW1wb3J0IHsgU1RFUF9ST1dfQUNUSU9OU19TVFlMRVMgfSBmcm9tICcuLi9zdGVwLXJvdy1hY3Rpb25zLnN0eWxlcyc7XG5pbXBvcnQgeyBFbnZpcm9ubWVudE9wdGlvbklucHV0IH0gZnJvbSAnLi4vYXBpLWVkaXQtc3RlcC9hcGktZWRpdC1zdGVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWaWV3RGV0YWlsc1BheWxvYWQgfSBmcm9tICcuLi9zdGVwLWRldGFpbHMtbW9kYWwvc3RlcC1kZXRhaWxzLW1vZGFsLWRhdGEnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtdGVzdC1jYXNlLWFwaS1zdGVwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FwaS1zdGVwLmNvbXBvbmVudC5odG1sJyxcbiAgaG9zdDogeyBjbGFzczogJ2NxYS11aS1yb290JyB9LFxuICBzdHlsZXM6IFtTVEVQX1JPV19BQ1RJT05TX1NUWUxFU10sXG59KVxuZXhwb3J0IGNsYXNzIFRlc3RDYXNlQXBpU3RlcENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ2VkaXRNb2RhbEJhY2tkcm9wJykgZWRpdE1vZGFsQmFja2Ryb3BSZWY/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICBASW5wdXQoKSBjb25maWchOiBBcGlTdGVwQ29uZmlnO1xuICBASW5wdXQoKSBzdGVwTnVtYmVyITogbnVtYmVyIHwgc3RyaW5nO1xuICBASW5wdXQoKSBtZXRob2Q6ICdHRVQnIHwgJ1BPU1QnIHwgJ1BVVCcgfCAnREVMRVRFJyB8ICdQQVRDSCcgPSAnR0VUJztcbiAgLyoqIFdoZW4gJ2dyYXBocWwnLCB0aGUgc3RlcCByb3cgcmVuZGVycyBhIFwiR3JhcGhRTFwiIGxhYmVsIGluc3RlYWQgb2YgdGhlIEhUVFBcbiAgICogIG1ldGhvZC4gRmFsbHMgYmFjayB0byAncmVzdCcgZm9yIGFueSBub24tZ3JhcGhxbCB2YWx1ZSBvciB3aGVuIG9taXR0ZWQuICovXG4gIEBJbnB1dCgpIGFwaVR5cGU6ICdyZXN0JyB8ICdncmFwaHFsJyA9ICdyZXN0JztcbiAgQElucHV0KCkgZW5kcG9pbnQ6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgQElucHV0KCkgYmFzZVVybD86IHN0cmluZztcbiAgQElucHV0KCkgaGVhZGVyc0NvdW50PzogbnVtYmVyO1xuICBASW5wdXQoKSBoYXNCb2R5PzogYm9vbGVhbjtcbiAgQElucHV0KCkgc2F2ZVRvPzogc3RyaW5nO1xuICBASW5wdXQoKSBzZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBpc05lc3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBpc0luc2lkZUxvb3A6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgaXNJbnNpZGVTdGVwR3JvdXA6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbmVzdGluZ0xldmVsOiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBleHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBpc1Jlb3JkZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZWRpdGFibGU6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBpc0R1cGxpY2F0aW5nOiBib29sZWFuID0gZmFsc2U7XG4gIC8qKiBFbnZpcm9ubWVudCBvcHRpb25zIGZvciB0aGUgQVBJIGVkaXQgc3RlcCBkcm9wZG93bjogc3RyaW5ncyBvciB7IGlkLCBuYW1lLCB2YWx1ZSwgbGFiZWwgfS4gUGFzc2VkIHRvIGNxYS1hcGktZWRpdC1zdGVwLiAqL1xuICBASW5wdXQoKSBlbnZpcm9ubWVudE9wdGlvbnM/OiBFbnZpcm9ubWVudE9wdGlvbklucHV0W107XG4gIC8qKiBIVFRQIG1ldGhvZCBvcHRpb25zIGZvciB0aGUgQVBJIGVkaXQgc3RlcCBkcm9wZG93bjogc3RyaW5ncyBvciB7IGlkLCBuYW1lLCB2YWx1ZSwgbGFiZWwgfS4gUGFzc2VkIHRvIGNxYS1hcGktZWRpdC1zdGVwLiAqL1xuICBASW5wdXQoKSBodHRwTWV0aG9kT3B0aW9ucz86IEVudmlyb25tZW50T3B0aW9uSW5wdXRbXTtcbiAgLyoqIEhlYWRlciBuYW1lIG9wdGlvbnMgZm9yIHRoZSBBUEkgZWRpdCBzdGVwIChlLmcuIGZvciBoZWFkZXIgZHJvcGRvd24pOiBzdHJpbmdzIG9yIHsgaWQsIG5hbWUsIHZhbHVlLCBsYWJlbCB9LiBQYXNzZWQgdG8gY3FhLWFwaS1lZGl0LXN0ZXAuICovXG4gIEBJbnB1dCgpIGhlYWRlck5hbWVPcHRpb25zPzogRW52aXJvbm1lbnRPcHRpb25JbnB1dFtdO1xuXG4gIEBPdXRwdXQoKSBlZGl0ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgZWRpdEluRGVwdGggPSBuZXcgRXZlbnRFbWl0dGVyPHsgc3RlcDogVGVzdENhc2VTdGVwQ29uZmlnOyBpbmRleDogbnVtYmVyIH0+KCk7XG4gIEBPdXRwdXQoKSBsaW5rID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgZHVwbGljYXRlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgZGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgbW9yZU9wdGlvbnMgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSB2aWV3RGV0YWlscyA9IG5ldyBFdmVudEVtaXR0ZXI8Vmlld0RldGFpbHNQYXlsb2FkPigpO1xuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgdG9nZ2xlRXhwYW5kZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHtjb25maWc6IEFwaVN0ZXBDb25maWcsIGV4cGFuZGVkOiBib29sZWFufT4oKTtcbiAgQE91dHB1dCgpIHN0ZXBVcGRhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPFRlc3RDYXNlU3RlcENvbmZpZz4oKTtcblxuICBnZXRSb3dQYWRkaW5nTGVmdFB4KCk6IG51bWJlciB7XG4gICAgY29uc3QgbGV2ZWwgPSBOdW1iZXIodGhpcy5uZXN0aW5nTGV2ZWwpIHx8IDA7XG4gICAgcmV0dXJuIDE2ICsgKGxldmVsICogMjQpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29uZmlnKSB7XG4gICAgICB0aGlzLnN0ZXBOdW1iZXIgPSB0aGlzLmNvbmZpZy5zdGVwTnVtYmVyO1xuICAgICAgdGhpcy5tZXRob2QgPSB0aGlzLmNvbmZpZy5tZXRob2Q7XG4gICAgICB0aGlzLmFwaVR5cGUgPSB0aGlzLmNvbmZpZy5hcGlUeXBlID09PSAnZ3JhcGhxbCcgPyAnZ3JhcGhxbCcgOiAncmVzdCc7XG4gICAgICB0aGlzLmVuZHBvaW50ID0gdGhpcy5jb25maWcuZW5kcG9pbnQ7XG4gICAgICB0aGlzLmRlc2NyaXB0aW9uID0gdGhpcy5jb25maWcuZGVzY3JpcHRpb247XG4gICAgICB0aGlzLmJhc2VVcmwgPSB0aGlzLmNvbmZpZy5iYXNlVXJsO1xuICAgICAgdGhpcy5oZWFkZXJzQ291bnQgPSB0aGlzLmNvbmZpZy5oZWFkZXJzQ291bnQ7XG4gICAgICB0aGlzLmhhc0JvZHkgPSB0aGlzLmNvbmZpZy5oYXNCb2R5O1xuICAgICAgdGhpcy5zYXZlVG8gPSB0aGlzLmNvbmZpZy5zYXZlVG87XG4gICAgICB0aGlzLnNlbGVjdGVkID0gdGhpcy5jb25maWcuc2VsZWN0ZWQgfHwgZmFsc2U7XG4gICAgICB0aGlzLmRpc2FibGVkID0gdGhpcy5jb25maWcuZGlzYWJsZWQgfHwgZmFsc2U7XG4gICAgICB0aGlzLmV4cGFuZGVkID0gdGhpcy5jb25maWcuZXhwYW5kZWQgfHwgZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZ2V0RGlzcGxheVRleHQoKTogc3RyaW5nIHtcbiAgICAvLyBHcmFwaFFMIHN0ZXBzIGFyZSBQT1NULW9ubHkgaW50ZXJuYWxseTsgc3VyZmFjZSBhIFwiR3JhcGhRTFwiIHRhZyBpbiB0aGVcbiAgICAvLyBjb2xsYXBzZWQgcm93IGluc3RlYWQgb2YgdGhlIEhUVFAgdmVyYiBzbyB0aGUgdXNlciBpc24ndCBjb25mdXNlZCBieVxuICAgIC8vIFwiR0VUXCIgYXBwZWFyaW5nIG9uIGEgc3RlcCB0aGV5IGNvbmZpZ3VyZWQgYXMgR3JhcGhRTC5cbiAgICBjb25zdCBsYWJlbCA9IHRoaXMuYXBpVHlwZSA9PT0gJ2dyYXBocWwnID8gJ0dyYXBoUUwnIDogdGhpcy5tZXRob2Q7XG4gICAgcmV0dXJuIFtsYWJlbCwgdGhpcy5lbmRwb2ludF0uam9pbignICcpO1xuICB9XG5cbiAgb25Ub2dnbGVFeHBhbmRlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmV4cGFuZGVkID0gIXRoaXMuZXhwYW5kZWQ7XG4gICAgdGhpcy50b2dnbGVFeHBhbmRlZC5lbWl0KHtjb25maWc6dGhpcy5jb25maWcsIGV4cGFuZGVkOnRoaXMuZXhwYW5kZWR9KTtcbiAgfVxuXG4gIGVkaXRNb2RhbE9wZW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IG92ZXJsYXlDb250YWluZXI6IE92ZXJsYXlDb250YWluZXJcbiAgKSB7fVxuXG4gIG9uU2tpcFRvZ2dsZSgpOiB2b2lkIHtcbiAgICAvLyBUb2dnbGU6IGlmIGN1cnJlbnRseSB0cnVlIOKGkiBwYXNzIGZhbHNlICh1bnNraXApOyBpZiBjdXJyZW50bHkgZmFsc2UvdW5kZWZpbmVkIOKGkiBwYXNzIHRydWUgKHNraXApXG4gICAgY29uc3QgY3VycmVudGx5U2tpcHBlZCA9ICEhKHRoaXMuY29uZmlnPy5zaG91bGRTa2lwKTtcbiAgICBjb25zdCBzaG91bGRTa2lwTmV4dCA9ICFjdXJyZW50bHlTa2lwcGVkO1xuICAgIHRoaXMuc3RlcFVwZGF0ZS5lbWl0KHsgLi4udGhpcy5jb25maWcsIHNob3VsZFNraXA6IHNob3VsZFNraXBOZXh0IH0gYXMgVGVzdENhc2VTdGVwQ29uZmlnKTtcbiAgfVxuXG4gIG9uRWRpdCgpOiB2b2lkIHtcbiAgICAvLyBBUEkgc3RlcHMgdXNlIHRoZWlyIG93biBlZGl0IG1vZGFsIChkb24ndCBvcGVuIGVkaXQtaW4tZGVwdGggbW9kYWwpXG4gICAgdGhpcy5lZGl0TW9kYWxPcGVuID0gdHJ1ZTtcbiAgICB0aGlzLmVkaXQuZW1pdCgpO1xuICAgIC8vIFdhaXQgZm9yIG1vZGFsIHRvIHJlbmRlciwgdGhlbiBhdHRhY2ggb3ZlcmxheSBjb250YWluZXIgc28gc2VsZWN0IHBhbmVscyBvcGVuIGJlbG93IHRyaWdnZXJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB0aGlzLmF0dGFjaE92ZXJsYXlUb01vZGFsQmFja2Ryb3AoKSk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBjbG9zZUVkaXRNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmRldGFjaE92ZXJsYXlGcm9tTW9kYWxCYWNrZHJvcCgpO1xuICAgIHRoaXMuZWRpdE1vZGFsT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgLyoqIEF0dGFjaCBvdmVybGF5IGNvbnRhaW5lciB0byBtb2RhbCBiYWNrZHJvcCBzbyBzZWxlY3QgcGFuZWxzIHBvc2l0aW9uIGJlbG93IHRyaWdnZXIgKHNhbWUgc3RhY2tpbmcgY29udGV4dCkuICovXG4gIHByaXZhdGUgYXR0YWNoT3ZlcmxheVRvTW9kYWxCYWNrZHJvcCgpOiB2b2lkIHtcbiAgICBjb25zdCBiYWNrZHJvcCA9IHRoaXMuZWRpdE1vZGFsQmFja2Ryb3BSZWY/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5vdmVybGF5Q29udGFpbmVyLmdldENvbnRhaW5lckVsZW1lbnQoKTtcbiAgICBpZiAoYmFja2Ryb3AgJiYgY29udGFpbmVyLnBhcmVudEVsZW1lbnQgIT09IGJhY2tkcm9wKSB7XG4gICAgICBiYWNrZHJvcC5hcHBlbmRDaGlsZChjb250YWluZXIpO1xuICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoJ2NxYS1hcGktc3RlcC1lZGl0LW1vZGFsLW92ZXJsYXktaG9zdCcpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGV0YWNoT3ZlcmxheUZyb21Nb2RhbEJhY2tkcm9wKCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMub3ZlcmxheUNvbnRhaW5lci5nZXRDb250YWluZXJFbGVtZW50KCk7XG4gICAgY29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoJ2NxYS1hcGktc3RlcC1lZGl0LW1vZGFsLW92ZXJsYXktaG9zdCcpO1xuICAgIGlmIChjb250YWluZXIucGFyZW50RWxlbWVudCAhPT0gZG9jdW1lbnQuYm9keSkge1xuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb250YWluZXIpO1xuICAgIH1cbiAgfVxuICBvbkxpbmsoKTogdm9pZCB7IHRoaXMubGluay5lbWl0KCk7IH1cbiAgb25EdXBsaWNhdGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNEdXBsaWNhdGluZykgcmV0dXJuO1xuICAgIHRoaXMuZHVwbGljYXRlLmVtaXQoKTtcbiAgfVxuICBvbkRlbGV0ZSgpOiB2b2lkIHsgdGhpcy5kZWxldGUuZW1pdCgpOyB9XG4gIG9uTW9yZU9wdGlvbnMoKTogdm9pZCB7IHRoaXMubW9yZU9wdGlvbnMuZW1pdCgpOyB9XG4gIG9uVmlld0RldGFpbHMoZXZlbnQ/OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICAgIFxuICAgIGlmICghdGhpcy5kZXNjcmlwdGlvbiB8fCB0aGlzLmRlc2NyaXB0aW9uLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIHRoaXMub25Ub2dnbGVFeHBhbmRlZCgpO1xuICAgICAgdGhpcy52aWV3RGV0YWlscy5lbWl0KHtcbiAgICAgICAgZXZlbnQsXG4gICAgICAgIHRpdGxlOiAnQVBJIFN0ZXAgRGV0YWlscycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIG9uU2VsZWN0aW9uQ2hhbmdlKGNoZWNrZWQ6IGJvb2xlYW4pOiB2b2lkIHsgdGhpcy5zZWxlY3RlZCA9IGNoZWNrZWQ7IHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoY2hlY2tlZCk7IH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2xcIiBzdHlsZT1cImJvcmRlci10b3A6IDFweCBzb2xpZCAjRTVFN0VCOyBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0U1RTdFQjtcIj5cbiAgPGRpdlxuICAgIFtjbGFzc109XCInc3RlcC1yb3cgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTMgY3FhLXB5LTIgY3FhLXByLTQnICsgKGNvbmZpZz8uc2hvdWxkU2tpcCA/ICcgY3FhLXN0ZXAtc2tpcHBlZCcgOiAnJylcIlxuICAgIFtzdHlsZS5vcGFjaXR5XT1cImNvbmZpZz8uc2hvdWxkU2tpcCA/ICcwLjYnIDogbnVsbFwiXG4gICAgW3N0eWxlLnBhZGRpbmctbGVmdC5weF09XCJnZXRSb3dQYWRkaW5nTGVmdFB4KClcIlxuICAgIFtzdHlsZS5ib3JkZXItdG9wXT1cImlzSW5zaWRlU3RlcEdyb3VwID8gJzFweCBzb2xpZCAjQkVEQkZGJyA6IG51bGxcIj5cbiAgICA8ZGl2ICpuZ0lmPVwiIWlzSW5zaWRlU3RlcEdyb3VwXCIgY2xhc3M9XCJjcWEtaW5saW5lLWZsZXggY3FhLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPCEtLSBEcmFnIEhhbmRsZSBJY29uICh3aGVuIGlzUmVvcmRlciBpcyB0cnVlIGFuZCBub3QgaW5zaWRlIHN0ZXAgZ3JvdXAgLSBzdGVwcyBpbnNpZGUgc3RlcCBncm91cHMgY2Fubm90IGJlIHJlb3JkZXJlZCkgLS0+XG4gICAgICA8ZGl2ICpuZ0lmPVwiaXNSZW9yZGVyICYmICFpc0luc2lkZVN0ZXBHcm91cFwiIGNsYXNzPVwiY3FhLW1yLTIgY3FhLWN1cnNvci1tb3ZlIGNxYS10ZXh0LVsjNkI3MjgwXSBob3ZlcjpjcWEtdGV4dC1bIzExMTgyN11cIj5cbiAgICAgICAgPHN2ZyB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgPGNpcmNsZSBjeD1cIjNcIiBjeT1cIjNcIiByPVwiMS41XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiLz5cbiAgICAgICAgICA8Y2lyY2xlIGN4PVwiOFwiIGN5PVwiM1wiIHI9XCIxLjVcIiBmaWxsPVwiY3VycmVudENvbG9yXCIvPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCIxM1wiIGN5PVwiM1wiIHI9XCIxLjVcIiBmaWxsPVwiY3VycmVudENvbG9yXCIvPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCIzXCIgY3k9XCI4XCIgcj1cIjEuNVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIi8+XG4gICAgICAgICAgPGNpcmNsZSBjeD1cIjhcIiBjeT1cIjhcIiByPVwiMS41XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiLz5cbiAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTNcIiBjeT1cIjhcIiByPVwiMS41XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiLz5cbiAgICAgICAgICA8Y2lyY2xlIGN4PVwiM1wiIGN5PVwiMTNcIiByPVwiMS41XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiLz5cbiAgICAgICAgICA8Y2lyY2xlIGN4PVwiOFwiIGN5PVwiMTNcIiByPVwiMS41XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiLz5cbiAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTNcIiBjeT1cIjEzXCIgcj1cIjEuNVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIi8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIENoZWNrYm94ICh3aGVuIGlzUmVvcmRlciBpcyBmYWxzZSBhbmQgbm90IGluc2lkZSBzdGVwIGdyb3VwIC0gaGlkZSBmb3Igc3RlcHMgaW5zaWRlIHN0ZXAgZ3JvdXBzKSAtLT5cbiAgICAgIDxsYWJlbCAqbmdJZj1cImVkaXRhYmxlICYmICFpc1Jlb3JkZXIgJiYgIWlzSW5zaWRlU3RlcEdyb3VwXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1jdXJzb3ItcG9pbnRlciBjcWEtcmVsYXRpdmUgY3FhLW1yLTJcIj5cbiAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFtuZ01vZGVsXT1cInNlbGVjdGVkXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgY2xhc3M9XCJjcWEtaC00IGNxYS13LTQgY3FhLWN1cnNvci1wb2ludGVyIGNxYS10cmFuc2l0aW9uLWFsbCBjcWEtYXBwZWFyYW5jZS1ub25lIGNxYS1yb3VuZGVkIHNoYWRvdyBob3ZlcjpjcWEtc2hhZG93LW1kIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1zb2xpZCBjcWEtYm9yZGVyLXNsYXRlLTMwMCBjcWEtZmxleC1zaHJpbmstMFwiXG4gICAgICAgICAgW2NsYXNzLmNxYS1iZy1bIzNGNDNFRV1dPVwic2VsZWN0ZWRcIiBbY2xhc3MuY3FhLWJvcmRlci1bIzNGNDNFRV1dPVwic2VsZWN0ZWRcIiBpZD1cImNoZWNrXCIgLz5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cImNxYS1hYnNvbHV0ZSBjcWEtdGV4dC13aGl0ZSBjcWEtdG9wLTEvMiBjcWEtbGVmdC0xLzIgY3FhLS10cmFuc2xhdGUteC0xLzIgY3FhLS10cmFuc2xhdGUteS0xLzIgY3FhLXBvaW50ZXItZXZlbnRzLW5vbmUgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXJcIlxuICAgICAgICAgIFtjbGFzcy5jcWEtb3BhY2l0eS0wXT1cIiFzZWxlY3RlZFwiIFtjbGFzcy5jcWEtb3BhY2l0eS0xMDBdPVwic2VsZWN0ZWRcIj5cbiAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxM1wiIHZpZXdCb3g9XCIwIDAgMTIgMTNcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAgMy4xMjVMNC41IDguNjI1TDIgNi4xMjVcIiBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImlzSW5zaWRlU3RlcEdyb3VwXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1zaHJpbmstMCBjcWEtaXRlbXMtY2VudGVyIGNxYS1wbC0wIGNxYS1wci0xIGNxYS10ZXh0LVsjOUNBM0FGXVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiU3RlcCBpcyBpbnNpZGUgYSBncm91cFwiPlxuICAgICAgPHN2ZyB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgIDxwYXRoIGQ9XCJNMTEuOTk5OCA1LjY2NjY3SDExLjMzMzJWNC4zMzMzM0MxMS4zMzMyIDIuNDkzMzMgOS44Mzk4NCAxIDcuOTk5ODQgMUM2LjE1OTg0IDEgNC42NjY1IDIuNDkzMzMgNC42NjY1IDQuMzMzMzNWNS42NjY2N0gzLjk5OTg0QzMuMjY2NSA1LjY2NjY3IDIuNjY2NSA2LjI2NjY3IDIuNjY2NSA3VjEzLjY2NjdDMi42NjY1IDE0LjQgMy4yNjY1IDE1IDMuOTk5ODQgMTVIMTEuOTk5OEMxMi43MzMyIDE1IDEzLjMzMzIgMTQuNCAxMy4zMzMyIDEzLjY2NjdWN0MxMy4zMzMyIDYuMjY2NjcgMTIuNzMzMiA1LjY2NjY3IDExLjk5OTggNS42NjY2N1pNNS45OTk4NCA0LjMzMzMzQzUuOTk5ODQgMy4yMjY2NyA2Ljg5MzE3IDIuMzMzMzMgNy45OTk4NCAyLjMzMzMzQzkuMTA2NSAyLjMzMzMzIDkuOTk5ODQgMy4yMjY2NyA5Ljk5OTg0IDQuMzMzMzNWNS42NjY2N0g1Ljk5OTg0VjQuMzMzMzNaTTExLjk5OTggMTMuNjY2N0gzLjk5OTg0VjdIMTEuOTk5OFYxMy42NjY3Wk03Ljk5OTg0IDExLjY2NjdDOC43MzMxNyAxMS42NjY3IDkuMzMzMTcgMTEuMDY2NyA5LjMzMzE3IDEwLjMzMzNDOS4zMzMxNyA5LjYgOC43MzMxNyA5IDcuOTk5ODQgOUM3LjI2NjUgOSA2LjY2NjUgOS42IDYuNjY2NSAxMC4zMzMzQzYuNjY2NSAxMS4wNjY3IDcuMjY2NSAxMS42NjY3IDcuOTk5ODQgMTEuNjY2N1pcIiBmaWxsPVwiY3VycmVudENvbG9yXCIvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bIzZCNzI4MF0gY3FhLXRleHQtWzE0cHhdIGNxYS1sZWFkaW5nLVsxOHB4XSBjcWEtbWluLXctWzMycHhdXCI+e3sgc3RlcE51bWJlciB9fTwvc3Bhbj5cbiAgICA8c3BhbiB0aXRsZT1cIkFQSVwiXG4gICAgICBjbGFzcz1cImNxYS13LTggY3FhLWgtOCBjcWEtcm91bmRlZC1sZyBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtZmxleC1zaHJpbmstMCBjcWEtYmctWyNEMUZBRTVdIGNxYS10ZXh0LVsjMDU5NjY5XVwiPlxuICAgICAgPHN2ZyB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgIDxwYXRoIGQ9XCJNNC4wODMzMyA3SDkuOTE2NjdNOS45MTY2NyA3TDcuNTgzMzMgNC42NjY2N005LjkxNjY3IDdMNy41ODMzMyA5LjMzMzMzXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjE2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBkPVwiTTcgMTIuODMzM0MxMC4yMjE3IDEyLjgzMzMgMTIuODMzMyAxMC4yMjE3IDEyLjgzMzMgN0MxMi44MzMzIDMuNzc4MzQgMTAuMjIxNyAxLjE2NjY3IDcgMS4xNjY2N0MzLjc3ODM0IDEuMTY2NjcgMS4xNjY2NyAzLjc3ODM0IDEuMTY2NjcgN0MxLjE2NjY3IDEwLjIyMTcgMy43NzgzNCAxMi44MzMzIDcgMTIuODMzM1pcIlxuICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuMTY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9zcGFuPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleC1ncm93IGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTFcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMlwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsjMTExODI3XSBjcWEtdGV4dC1bMTRweF0gY3FhLWxlYWRpbmctWzE4cHhdXCI+e3sgZ2V0RGlzcGxheVRleHQoKSB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSBFeHBhbmRlZCBkZXRhaWxzOiBsaWdodCB5ZWxsb3cgYm94IHdpdGggc3VtbWFyeSwgbWV0aG9kLCBVUkwsIGhlYWRlcnMsIGJvZHksIHNhdmUgdG8gLS0+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZXhwYW5kZWRcIlxuICAgICAgICBbY2xhc3NdPVwiJ2NxYS1weS0xIGNxYS1weC0zIGNxYS1yb3VuZGVkLWxnIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1zb2xpZCBjcWEtYmctWyNGRUZDRThdIGNxYS1ib3JkZXItWyNGRkYwODVdJyArIChpc0luc2lkZUxvb3AgPyAnIGNxYS1tbC0xMCcgOiAnJylcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTFcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGVzY3JpcHRpb24gJiYgZGVzY3JpcHRpb24udHJpbSgpICE9PSAnJ1wiIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWyM2QjcyODBdIGNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtXCI+U3VtbWFyeTo8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsjMTExODI3XSBjcWEtdGV4dC1bMTJweF0gY3FhLWxlYWRpbmctWzE1cHhdXCI+e3sgZGVzY3JpcHRpb24gfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJjcWEtdGV4dC1bIzZCNzI4MF0gY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLWZsZXggY3FhLWZsZXgtd3JhcCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtOFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0zXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWyM3MzNFMEFdIGNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbm9ybWFsXCI+e3sgYXBpVHlwZSA9PT0gJ2dyYXBocWwnID8gJ0dyYXBoUUwnIDogbWV0aG9kIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3Bhbj57eyBiYXNlVXJsIHx8ICdodHRwczovL2FwaS5leGFtcGxlLmNvbScgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWyMxMTE4MjddXCI+e3sgZW5kcG9pbnQgfX08L3NwYW4+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTNcIj5cbiAgICAgICAgICAgICAgPHNwYW4+SGVhZGVyczoge3sgaGVhZGVyc0NvdW50ID8/IDAgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuPkJvZHk6IHt7IGhhc0JvZHkgPyAnWWVzJyA6ICdObycgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuPlNhdmUgdG86IHt7IHNhdmVUbyB8fCAn4oCUJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMiBjcWEtc2VsZi1jZW50ZXJcIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiY29uZmlnPy5zaG91bGRTa2lwXCIgY2xhc3M9XCJjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1bI0U1RTVFNV0gY3FhLXJvdW5kZWQtbGcgY3FhLXB5LTAuNSBjcWEtcHgtMiBjcWEtdGV4dC1bIzBBMEEwQV0gY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtZmxleC1zaHJpbmstMFwiPlNraXBwZWQ8L3NwYW4+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZWRpdGFibGUgJiYgIWlzSW5zaWRlU3RlcEdyb3VwICYmICFpc1Jlb3JkZXJcIiBjbGFzcz1cInN0ZXAtYWN0aW9ucyBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMS41IGNxYS1wci0yXCI+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25FZGl0KCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIHRpdGxlPVwiRWRpdFwiXG4gICAgICAgIGNsYXNzPVwiY3FhLXAtMCBjcWEtdGV4dC1bIzk5QTFBZl0gaG92ZXI6Y3FhLXRleHQtWyMxNDQ3RTZdXCI+XG4gICAgICAgIDxzdmcgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNNyAxMS42NjY2SDEyLjI1XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS4xNjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBkPVwiTTkuNTUyMDggMi4xMTI4QzkuNzg0MyAxLjg4MDU4IDEwLjA5OTMgMS43NTAxMiAxMC40Mjc3IDEuNzUwMTJDMTAuNzU2MSAxLjc1MDEyIDExLjA3MSAxLjg4MDU4IDExLjMwMzMgMi4xMTI4QzExLjUzNTUgMi4zNDUwMiAxMS42NjU5IDIuNjU5OTggMTEuNjY1OSAyLjk4ODM4QzExLjY2NTkgMy4zMTY3OSAxMS41MzU1IDMuNjMxNzUgMTEuMzAzMyAzLjg2Mzk3TDQuMjk3NDIgMTAuODcwNEM0LjE1ODY0IDExLjAwOTIgMy45ODcxIDExLjExMDcgMy43OTg2NyAxMS4xNjU2TDIuMTIzMzMgMTEuNjU0NEMyLjA3MzE0IDExLjY2OSAyLjAxOTkzIDExLjY2OTkgMS45NjkyOCAxMS42NTY5QzEuOTE4NjMgMTEuNjQzOSAxLjg3MjQgMTEuNjE3NiAxLjgzNTQzIDExLjU4MDZDMS43OTg0NiAxMS41NDM3IDEuNzcyMSAxMS40OTc0IDEuNzU5MTMgMTEuNDQ2OEMxLjc0NjE1IDExLjM5NjEgMS43NDcwMyAxMS4zNDI5IDEuNzYxNjcgMTEuMjkyN0wyLjI1MDUgOS42MTczOEMyLjMwNTQ2IDkuNDI5MTYgMi40MDY5OCA5LjI1NzgzIDIuNTQ1NjcgOS4xMTkyMkw5LjU1MjA4IDIuMTEyOFpcIlxuICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS4xNjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25Ta2lwVG9nZ2xlKCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIFthdHRyLnRpdGxlXT1cImNvbmZpZz8uc2hvdWxkU2tpcCA/ICdVbnNraXAgc3RlcCcgOiAnU2tpcCBzdGVwJ1wiIFtzdHlsZS5jb2xvcl09XCJjb25maWc/LnNob3VsZFNraXAgPyAnIzE0NDdFNicgOiBudWxsXCIgY2xhc3M9XCJjcWEtcC0wIGNxYS10ZXh0LVsjOTlBMUFmXSBob3ZlcjpjcWEtdGV4dC1bIzE0NDdFNl1cIj5cbiAgICAgICAgPHN2ZyB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgPHBhdGggZD1cIk04LjI1IDguNzVDOS4yMTY1IDguNzUgMTAgNy45NjY1IDEwIDdDMTAgNi4wMzM1IDkuMjE2NSA1LjI1IDguMjUgNS4yNUM3LjI4MzUgNS4yNSA2LjUgNi4wMzM1IDYuNSA3QzYuNSA3Ljk2NjUgNy4yODM1IDguNzUgOC4yNSA4Ljc1WlwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuMTY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgPHBhdGggZD1cIk04Ljc1MDMzIDIuOTE2NjNINS4yNTAzM0MyLjk5NTE2IDIuOTE2NjMgMS4xNjY5OSA0Ljc0NDggMS4xNjY5OSA2Ljk5OTk2QzEuMTY2OTkgOS4yNTUxMiAyLjk5NTE2IDExLjA4MzMgNS4yNTAzMyAxMS4wODMzSDguNzUwMzNDMTEuMDA1NSAxMS4wODMzIDEyLjgzMzcgOS4yNTUxMiAxMi44MzM3IDYuOTk5OTZDMTIuODMzNyA0Ljc0NDggMTEuMDA1NSAyLjkxNjYzIDguNzUwMzMgMi45MTY2M1pcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjE2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPCEtLSA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25MaW5rKCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIHRpdGxlPVwiTGlua1wiXG4gICAgICAgIGNsYXNzPVwiY3FhLXAtMCBjcWEtdGV4dC1bIzk5QTFBZl0gaG92ZXI6Y3FhLXRleHQtWyMxNDQ3RTZdXCI+XG4gICAgICAgIDxzdmcgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBkPVwiTTUuMDAwNjUgOS45MTY3MUgzLjY2NzMyQzIuNzgzMjYgOS45MTY3MSAxLjkzNTQyIDkuNjA5NDIgMS4zMTAzIDkuMDYyNDRDMC42ODUxNzQgOC41MTU0NSAwLjMzMzk4NCA3Ljc3MzU5IDAuMzMzOTg0IDcuMDAwMDRDMC4zMzM5ODQgNi4yMjY0OSAwLjY4NTE3NCA1LjQ4NDYzIDEuMzEwMyA0LjkzNzY1QzEuOTM1NDIgNC4zOTA2NiAyLjc4MzI2IDQuMDgzMzcgMy42NjczMiA0LjA4MzM3SDUuMDAwNjVcIlxuICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGQ9XCJNOSA0LjA4MzM3SDEwLjMzMzNDMTEuMjE3NCA0LjA4MzM3IDEyLjA2NTIgNC4zOTA2NiAxMi42OTA0IDQuOTM3NjVDMTMuMzE1NSA1LjQ4NDYzIDEzLjY2NjcgNi4yMjY0OSAxMy42NjY3IDcuMDAwMDRDMTMuNjY2NyA3Ljc3MzU5IDEzLjMxNTUgOC41MTU0NSAxMi42OTA0IDkuMDYyNDRDMTIuMDY1MiA5LjYwOTQyIDExLjIxNzQgOS45MTY3MSAxMC4zMzMzIDkuOTE2NzFIOVwiXG4gICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICA8cGF0aCBkPVwiTTQuMzMzOTggN0g5LjY2NzMyXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvYnV0dG9uPiAtLT5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJvbkR1cGxpY2F0ZSgpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiaXNEdXBsaWNhdGluZ1wiXG4gICAgICAgIFthdHRyLnRpdGxlXT1cImlzRHVwbGljYXRpbmcgPyAnRHVwbGljYXRpbmcuLi4nIDogJ0R1cGxpY2F0ZSdcIlxuICAgICAgICBjbGFzcz1cImNxYS1wLTAgY3FhLXRleHQtWyM5OUExQWZdIGhvdmVyOmNxYS10ZXh0LVsjMTQ0N0U2XSBkaXNhYmxlZDpjcWEtb3BhY2l0eS02MCBkaXNhYmxlZDpjcWEtY3Vyc29yLW5vdC1hbGxvd2VkXCJcbiAgICAgID5cbiAgICAgICAgPHN2ZyAqbmdJZj1cIiFpc0R1cGxpY2F0aW5nXCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBkPVwiTTExLjY2NiA0LjY2NjYzSDUuODMyNjhDNS4xODgzNSA0LjY2NjYzIDQuNjY2MDIgNS4xODg5NiA0LjY2NjAyIDUuODMzMjlWMTEuNjY2NkM0LjY2NjAyIDEyLjMxMSA1LjE4ODM1IDEyLjgzMzMgNS44MzI2OCAxMi44MzMzSDExLjY2NkMxMi4zMTAzIDEyLjgzMzMgMTIuODMyNyAxMi4zMTEgMTIuODMyNyAxMS42NjY2VjUuODMzMjlDMTIuODMyNyA1LjE4ODk2IDEyLjMxMDMgNC42NjY2MyAxMS42NjYgNC42NjY2M1pcIlxuICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS4xNjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGQ9XCJNMi4zMzI2OCA5LjMzMzI5QzEuNjkxMDIgOS4zMzMyOSAxLjE2NjAyIDguODA4MjkgMS4xNjYwMiA4LjE2NjYzVjIuMzMzMjlDMS4xNjYwMiAxLjY5MTYzIDEuNjkxMDIgMS4xNjY2MyAyLjMzMjY4IDEuMTY2NjNIOC4xNjYwMkM4LjgwNzY4IDEuMTY2NjMgOS4zMzI2OCAxLjY5MTYzIDkuMzMyNjggMi4zMzMyOVwiXG4gICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjE2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICAgIDxzdmcgKm5nSWY9XCJpc0R1cGxpY2F0aW5nXCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGFyaWEtbGFiZWw9XCJEdXBsaWNhdGluZ1wiPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCI4XCIgY3k9XCI4XCIgcj1cIjZcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utb3BhY2l0eT1cIjAuMlwiIHN0cm9rZS13aWR0aD1cIjJcIj48L2NpcmNsZT5cbiAgICAgICAgICA8cGF0aCBkPVwiTTE0IDhBNiA2IDAgMCAwIDggMlwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCI+XG4gICAgICAgICAgICA8YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPVwidHJhbnNmb3JtXCIgdHlwZT1cInJvdGF0ZVwiIGZyb209XCIwIDggOFwiIHRvPVwiMzYwIDggOFwiIGR1cj1cIjAuOHNcIiByZXBlYXRDb3VudD1cImluZGVmaW5pdGVcIi8+XG4gICAgICAgICAgPC9wYXRoPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uRGVsZXRlKCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIHRpdGxlPVwiRGVsZXRlXCJcbiAgICAgICAgY2xhc3M9XCJjcWEtcC0wIGNxYS10ZXh0LVsjZmY2NDY3XSBob3ZlcjpjcWEtdGV4dC1bI0M2MzUzNV1cIj5cbiAgICAgICAgPHN2ZyB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgPHBhdGggZD1cIk0xLjc1IDMuNUgxMi4yNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuMTY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgZD1cIk0xMS4wODI3IDMuNVYxMS42NjY3QzExLjA4MjcgMTIuMjUgMTAuNDk5MyAxMi44MzMzIDkuOTE2MDIgMTIuODMzM0g0LjA4MjY4QzMuNDk5MzUgMTIuODMzMyAyLjkxNjAyIDEyLjI1IDIuOTE2MDIgMTEuNjY2N1YzLjVcIlxuICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS4xNjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGQ9XCJNNC42NjYwMiAzLjQ5OTk2VjIuMzMzMjlDNC42NjYwMiAxLjc0OTk2IDUuMjQ5MzUgMS4xNjY2MyA1LjgzMjY4IDEuMTY2NjNIOC4xNjYwMkM4Ljc0OTM1IDEuMTY2NjMgOS4zMzI2OCAxLjc0OTk2IDkuMzMyNjggMi4zMzMyOVYzLjQ5OTk2XCJcbiAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuMTY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNNS44MzM5OCA2LjQxNjYzVjkuOTE2NjNcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjE2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgPHBhdGggZD1cIk04LjE2NjAyIDYuNDE2NjNWOS45MTY2M1wiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuMTY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSBWaWV3IERldGFpbHMgTGluayAoc2hvdyBvbmx5IGlmIGRlc2NyaXB0aW9uIGlzIG5vdCBlbXB0eSkgLSBhZnRlciBhY3Rpb24gYnV0dG9ucywgYmVmb3JlIGRhdGUgLS0+XG4gICAgICA8YSAqbmdJZj1cImRlc2NyaXB0aW9uICYmIGRlc2NyaXB0aW9uLnRyaW0oKSAhPT0gJydcIiAjdmlld0RldGFpbHNUcmlnZ2VyIGhyZWY9XCIjXCIgKGNsaWNrKT1cIm9uVmlld0RldGFpbHMoJGV2ZW50KVwiXG4gICAgICAgIGNsYXNzPVwiY3FhLXRleHQtWyMzRjQzRUVdIGNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0xIGNxYS1uby11bmRlcmxpbmVcIj5cbiAgICAgICAge3sgZXhwYW5kZWQgPyAnSGlkZSBEZXRhaWxzJyA6ICdWaWV3IERldGFpbHMnIH19XG4gICAgICAgIDxzdmcgd2lkdGg9XCI4XCIgaGVpZ2h0PVwiOFwiIHZpZXdCb3g9XCIwIDAgOCA4XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgPHBhdGggZD1cIk0yLjAzODA5IDYuNzQzMjlMMi42MjgwOSA3LjMzMzI5TDUuOTYxNDIgMy45OTk5NkwyLjYyODA5IDAuNjY2NjI2TDIuMDM4MDkgMS4yNTY2M0w0Ljc4MTQyIDMuOTk5OTZMMi4wMzgwOSA2Ljc0MzI5WlwiIGZpbGw9XCIjM0Y0M0VFXCIvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvYT5cbiAgICAgIDwhLS0gQ3JlYXRlZCBEYXRlIChmcm9tIEFQSSkgLSBsYXN0IHNvIGFsaWduZWQgYWNyb3NzIGFsbCBzdGVwcywgZm9ybWF0OiAyNSBGZWIgMjAyNiAtLT5cbiAgICAgIDxzcGFuICpuZ0lmPVwiY29uZmlnLmNyZWF0ZWREYXRlXCIgY2xhc3M9XCJzdGVwLWRhdGUgY3FhLXRleHQtWyM2QjcyODBdIGNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLW1sLWF1dG8gY3FhLWZsZXgtc2hyaW5rLTBcIj5cbiAgICAgICAge3sgY29uZmlnLmNyZWF0ZWREYXRlIHwgZGF0ZTonZCBNTU0geXl5eScgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
|
|
@@ -64,4 +64,4 @@ export function isRestoreSessionStepConfig(step) {
|
|
|
64
64
|
export function isCustomCodeStepConfig(step) {
|
|
65
65
|
return step != null && 'stepType' in step && step.stepType === StepTypes.CUSTOM_CODE;
|
|
66
66
|
}
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1jYXNlLXN0ZXAubW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90ZXN0LWNhc2UtZGV0YWlscy90ZXN0LWNhc2Utc3RlcC5tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFLSCxNQUFNLENBQU4sSUFBWSxTQWtCWDtBQWxCRCxXQUFZLFNBQVM7SUFDbkIsOEJBQWlCLENBQUE7SUFDakIsd0JBQVcsQ0FBQTtJQUNYLGtDQUFxQixDQUFBO0lBQ3JCLGtDQUFxQixDQUFBO0lBQ3JCLG9DQUF1QixDQUFBO0lBQ3ZCLDhCQUFpQixDQUFBO0lBQ2pCLHNDQUF5QixDQUFBO0lBQ3pCLHNDQUF5QixDQUFBO0lBQ3pCLGdEQUFtQyxDQUFBO0lBQ25DLHdDQUEyQixDQUFBO0lBQzNCLGtDQUFxQixDQUFBO0lBQ3JCLHNDQUF5QixDQUFBO0lBQ3pCLHNDQUF5QixDQUFBO0lBQ3pCLDRDQUErQixDQUFBO0lBQy9CLDBDQUE2QixDQUFBO0lBQzdCLHNDQUF3QixDQUFBO0lBQ3hCLDhCQUFpQixDQUFBO0FBQ25CLENBQUMsRUFsQlcsU0FBUyxLQUFULFNBQVMsUUFrQnBCO0FBb01ELGlGQUFpRjtBQUNqRixNQUFNLFVBQVUsa0JBQWtCLENBQUMsSUFBd0I7SUFDekQsT0FBTyxJQUFJLElBQUksSUFBSSxJQUFJLFdBQVcsSUFBSSxJQUFJLElBQUksWUFBWSxJQUFJLElBQUksQ0FBQztBQUNyRSxDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUFDLElBQXdCO0lBQ3ZELE9BQU8sSUFBSSxJQUFJLElBQUksSUFBSSxVQUFVLElBQUksSUFBSSxDQUFDO0FBQzVDLENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCLENBQUMsSUFBd0I7SUFDNUQsT0FBTyxJQUFJLElBQUksSUFBSSxJQUFJLFdBQVcsSUFBSSxJQUFJLElBQUksVUFBVSxJQUFJLElBQUksQ0FBQztBQUNuRSxDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUFDLElBQXdCO0lBQ3hELE9BQU8sSUFBSSxJQUFJLElBQUksSUFBSSxXQUFXLElBQUksSUFBSSxDQUFDO0FBQzdDLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLElBQXdCO0lBQ3RELE9BQU8sSUFBSSxJQUFJLElBQUksSUFBSSxVQUFVLElBQUksSUFBSSxJQUFLLElBQXNCLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxHQUFHLENBQUM7QUFDbEcsQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxJQUF3QjtJQUMzRCxPQUFPLElBQUksSUFBSSxJQUFJLElBQUksVUFBVSxJQUFJLElBQUksSUFBSyxJQUEyQixDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUMsUUFBUSxDQUFDO0FBQzVHLENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsSUFBd0I7SUFDMUQsT0FBTyxJQUFJLElBQUksSUFBSSxJQUFJLFVBQVUsSUFBSSxJQUFJLElBQUssSUFBMEIsQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLFFBQVEsQ0FBQztBQUMzRyxDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLElBQXdCO0lBQzNELE9BQU8sSUFBSSxJQUFJLElBQUksSUFBSSxVQUFVLElBQUksSUFBSSxJQUFLLElBQTJCLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxTQUFTLENBQUM7QUFDN0csQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxJQUF3QjtJQUN6RCxPQUFPLElBQUksSUFBSSxJQUFJLElBQUksVUFBVSxJQUFJLElBQUksSUFBSyxJQUF5QixDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUMsTUFBTSxDQUFDO0FBQ3hHLENBQUM7QUFFRCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsSUFBd0I7SUFDN0QsT0FBTyxJQUFJLElBQUksSUFBSSxJQUFJLFVBQVUsSUFBSSxJQUFJLElBQUssSUFBNkIsQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLFVBQVUsQ0FBQztBQUNoSCxDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLElBQXdCO0lBQ3pELE9BQU8sSUFBSSxJQUFJLElBQUksSUFBSSxVQUFVLElBQUksSUFBSSxJQUFLLElBQXlCLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxNQUFNLENBQUM7QUFDeEcsQ0FBQztBQUVELE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxJQUF3QjtJQUM1RCxPQUFPLElBQUksSUFBSSxJQUFJLElBQUksVUFBVSxJQUFJLElBQUksSUFBSyxJQUE0QixDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUMsVUFBVSxDQUFDO0FBQy9HLENBQUM7QUFFRCxNQUFNLFVBQVUsMEJBQTBCLENBQUMsSUFBd0I7SUFDakUsT0FBTyxJQUFJLElBQUksSUFBSSxJQUFJLFVBQVUsSUFBSSxJQUFJLElBQUssSUFBaUMsQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLGVBQWUsQ0FBQztBQUN6SCxDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUFDLElBQXdCO0lBQzdELE9BQU8sSUFBSSxJQUFJLElBQUksSUFBSSxVQUFVLElBQUksSUFBSSxJQUFLLElBQTZCLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxXQUFXLENBQUM7QUFDakgsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTW9kZWxzIGFuZCBpbnRlcmZhY2VzIGZvciB0ZXN0IGNhc2UgZGV0YWlscyBzdGVwIGNvbXBvbmVudHNcbiAqL1xuXG5leHBvcnQgdHlwZSBUZXN0Q2FzZUV2ZW50VHlwZSA9ICduYXZpZ2F0ZScgfCAnY3VzdG9tJyB8ICdhaS1hZ2VudCcgfCAndHlwZScgfCAnY2xpY2snIHwgJ2RvdWJsZUNsaWNrJyB8ICdwcmVzc0VudGVyJyB8ICdlbnRlcicgfCAndmVyaWZ5JyB8ICd3YWl0JztcblxuXG5leHBvcnQgZW51bSBTdGVwVHlwZXMge1xuICBOT1JNQUwgPSAnTk9STUFMJyxcbiAgQVBJID0gJ0FQSScsXG4gIERBVEFCQVNFID0gJ0RBVEFCQVNFJyxcbiAgQUlfQUdFTlQgPSAnQUlfQUdFTlQnLFxuICBBSV9WRVJJRlkgPSAnQUlfVkVSSUZZJyxcbiAgVVBMT0FEID0gJ1VQTE9BRCcsXG4gIFNDUkVFTlNIT1QgPSAnU0NSRUVOU0hPVCcsXG4gIFZFUklGWV9VUkwgPSAnVkVSSUZZX1VSTCcsXG4gIFJFU1RPUkVfU0VTU0lPTiA9ICdSRVNUT1JFX1NFU1NJT04nLFxuICBDVVNUT01fQ09ERSA9ICdDVVNUT01fQ09ERScsXG4gIEZPUl9MT09QID0gJ0ZPUl9MT09QJyxcbiAgV0hJTEVfTE9PUCA9ICdXSElMRV9MT09QJyxcbiAgQlJFQUtfTE9PUCA9ICdCUkVBS19MT09QJyxcbiAgQ09OVElOVUVfTE9PUCA9ICdDT05USU5VRV9MT09QJyxcbiAgQ09ORElUSU9OX0lGID0gJ0NPTkRJVElPTl9JRicsXG4gIFNURVBfR1JPVVA9ICdTVEVQX0dST1VQJyxcbiAgU0NST0xMID0gJ1NDUk9MTCdcbn1cblxuLy8gZXhwb3J0IHR5cGUgU3RlcFR5cGUgPSBTdGVwVHlwZXMuTk9STUFMIHwgU3RlcFR5cGVzLkFQSSB8IFN0ZXBUeXBlcy5EQVRBQkFTRSB8IFN0ZXBUeXBlcy5BSV9BR0VOVCB8IFN0ZXBUeXBlcy5VUExPQUQgfCBTdGVwVHlwZXMuU0NSRUVOU0hPVCB8IFN0ZXBUeXBlcy5DVVNUT01fQ09ERSB8IFN0ZXBUeXBlcy5GT1JfTE9PUCB8IFN0ZXBUeXBlcy5XSElMRV9MT09QIHwgU3RlcFR5cGVzLkJSRUFLX0xPT1AgfCBTdGVwVHlwZXMuQ09OVElOVUVfTE9PUDtcblxuZXhwb3J0IGludGVyZmFjZSBFdmVudFR5cGVDb25maWcge1xuICB0eXBlOiBUZXN0Q2FzZUV2ZW50VHlwZTtcbiAgbGFiZWw6IHN0cmluZztcbiAgaWNvbj86IHN0cmluZztcbiAgY29sb3I6IHN0cmluZztcbiAgYmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RlcFBhcmFtZXRlciB7XG4gIG5hbWU6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbiAgZGlzcGxheVZhbHVlPzogc3RyaW5nOyAvLyBGb3IgZGlzcGxheSBwdXJwb3NlcyAoZS5nLiwgd2l0aCBxdW90ZXMpXG59XG5cbi8qKiBCYXNlIGludGVyZmFjZSBjb250YWluaW5nIGNvbW1vbiBwcm9wZXJ0aWVzIGZvciBhbGwgc3RlcCBjb25maWd1cmF0aW9ucyAqL1xuZXhwb3J0IGludGVyZmFjZSBCYXNlU3RlcENvbmZpZyB7XG4gIGlkOiBzdHJpbmc7XG4gIGFjdGlvbj86IHN0cmluZztcbiAgc3RlcE51bWJlcjogbnVtYmVyIHwgc3RyaW5nO1xuICBzdGVwVHlwZTogU3RlcFR5cGVzO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgc2VsZWN0ZWQ/OiBib29sZWFuO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGV4cGFuZGVkPzogYm9vbGVhbjtcbiAgZXZlbnQ/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgLyoqIENyZWF0aW9uIHRpbWVzdGFtcCBmcm9tIEFQSSAobWlsbGlzZWNvbmRzIHNpbmNlIGVwb2NoKSAqL1xuICBjcmVhdGVkRGF0ZT86IG51bWJlcjtcbiAgLyoqIFdoZW4gdHJ1ZSwgdGhpcyBzdGVwIGlzIG1hcmtlZCB0byBiZSBza2lwcGVkIGR1cmluZyBleGVjdXRpb24gKi9cbiAgc2hvdWxkU2tpcD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm9ybWFsU3RlcENvbmZpZyBleHRlbmRzIEJhc2VTdGVwQ29uZmlnIHtcbiAgc3RlcFR5cGU6IFN0ZXBUeXBlcy5OT1JNQUw7XG4gIGV2ZW50VHlwZTogVGVzdENhc2VFdmVudFR5cGU7XG4gIHBhcmFtZXRlcnM6IFN0ZXBQYXJhbWV0ZXJbXTtcbiAgZWxlbWVudERhdGE/OiB7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgc2VsZWN0b3I/OiBzdHJpbmc7XG4gICAgcHdMb2NhdG9yPzogc3RyaW5nW107XG4gICAgbGFiZWxzPzogc3RyaW5nW107XG4gIH07XG59XG5cbi8qKiBBUEkgU3RlcCBDb25maWd1cmF0aW9uICovXG5leHBvcnQgaW50ZXJmYWNlIEFwaVN0ZXBDb25maWcgZXh0ZW5kcyBCYXNlU3RlcENvbmZpZyB7XG4gIHN0ZXBUeXBlOiBTdGVwVHlwZXMuQVBJO1xuICBtZXRob2Q6ICdHRVQnIHwgJ1BPU1QnIHwgJ1BVVCcgfCAnREVMRVRFJyB8ICdQQVRDSCc7XG4gIGVuZHBvaW50OiBzdHJpbmc7XG4gIGJhc2VVcmw/OiBzdHJpbmc7XG4gIHJlcXVlc3RCb2R5Pzogc3RyaW5nO1xuICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgaGVhZGVyc0NvdW50PzogbnVtYmVyO1xuICBoYXNCb2R5PzogYm9vbGVhbjtcbiAgc2F2ZVRvPzogc3RyaW5nO1xuICBleHBlY3RlZFN0YXR1cz86IG51bWJlcjtcbn1cblxuLyoqIERhdGFiYXNlIFN0ZXAgQ29uZmlndXJhdGlvbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRhYmFzZVN0ZXBDb25maWcgZXh0ZW5kcyBCYXNlU3RlcENvbmZpZyB7XG4gIHN0ZXBUeXBlOiBTdGVwVHlwZXMuREFUQUJBU0U7XG4gIHF1ZXJ5OiBzdHJpbmc7XG4gIGRhdGFiYXNlVHlwZT86ICdteXNxbCcgfCAncG9zdGdyZXNxbCcgfCAnbW9uZ29kYicgfCAnbXNzcWwnIHwgJ29yYWNsZSc7XG4gIGNvbm5lY3Rpb25OYW1lPzogc3RyaW5nO1xuICBzYXZlVG8/OiBzdHJpbmc7XG59XG5cbi8qKiBBSSBBZ2VudCBTdGVwIENvbmZpZ3VyYXRpb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWlBZ2VudFN0ZXBDb25maWcgZXh0ZW5kcyBCYXNlU3RlcENvbmZpZyB7XG4gIHN0ZXBUeXBlOiBTdGVwVHlwZXMuQUlfQUdFTlQ7XG4gIGluc3RydWN0aW9uczogc3RyaW5nO1xufVxuXG4vKiogQUkgVmVyaWZ5IFN0ZXAgQ29uZmlndXJhdGlvbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBaVZlcmlmeVN0ZXBDb25maWcgZXh0ZW5kcyBCYXNlU3RlcENvbmZpZyB7XG4gIHN0ZXBUeXBlOiBTdGVwVHlwZXMuQUlfVkVSSUZZO1xuICBpbnN0cnVjdGlvbnM6IHN0cmluZztcbn1cblxuLyoqIFVwbG9hZCBTdGVwIENvbmZpZ3VyYXRpb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXBsb2FkU3RlcENvbmZpZyBleHRlbmRzIEJhc2VTdGVwQ29uZmlnIHtcbiAgc3RlcFR5cGU6IFN0ZXBUeXBlcy5VUExPQUQ7XG4gIHNlbGVjdG9yOiBzdHJpbmc7XG4gIGZpbGVOYW1lOiBzdHJpbmc7XG4gIHNvdXJjZTogJ0RhdGEgTGlicmFyeScgfCAnTG9jYWwnIHwgJ1VSTCc7XG4gIHNvdXJjZVBhdGg6IHN0cmluZztcbn1cblxuLyoqIFNjcmVlbnNob3QgU3RlcCBDb25maWd1cmF0aW9uICovXG5leHBvcnQgaW50ZXJmYWNlIFNjcmVlbnNob3RTdGVwQ29uZmlnIGV4dGVuZHMgQmFzZVN0ZXBDb25maWcge1xuICBzdGVwVHlwZTogU3RlcFR5cGVzLlNDUkVFTlNIT1Q7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGZ1bGxQYWdlPzogYm9vbGVhbjtcbiAgc2VsZWN0b3I/OiBzdHJpbmc7XG59XG5cbi8qKiBTY3JvbGwgU3RlcCBDb25maWd1cmF0aW9uICovXG5leHBvcnQgaW50ZXJmYWNlIFNjcm9sbFN0ZXBDb25maWcgZXh0ZW5kcyBCYXNlU3RlcENvbmZpZyB7XG4gIHN0ZXBUeXBlOiBTdGVwVHlwZXMuU0NST0xMO1xuICBzZWxlY3Rvcjogc3RyaW5nO1xuICBkaXJlY3Rpb24/OiAndG9wJyB8ICdib3R0b20nIHwgJ3VwJyB8ICdkb3duJyB8ICdsZWZ0JyB8ICdyaWdodCc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG4vKiogVmVyaWZ5IFVSTCBTdGVwIENvbmZpZ3VyYXRpb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmVyaWZ5VXJsU3RlcENvbmZpZyBleHRlbmRzIEJhc2VTdGVwQ29uZmlnIHtcbiAgc3RlcFR5cGU6IFN0ZXBUeXBlcy5WRVJJRllfVVJMO1xuICBhY3Rpb24/OiBzdHJpbmc7IC8vIGUuZy4sIFwiVmVyaWZ5IHRoYXQgdGhlIFVSTCBvZiBjdXJyZW50IHBhZ2UgaXNcIlxuICB1cmw/OiBzdHJpbmc7IC8vIFRoZSBVUkwgdG8gdmVyaWZ5XG59XG5cbi8qKiBSZXN0b3JlIFNlc3Npb24gU3RlcCBDb25maWd1cmF0aW9uICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc3RvcmVTZXNzaW9uU3RlcENvbmZpZyBleHRlbmRzIEJhc2VTdGVwQ29uZmlnIHtcbiAgc3RlcFR5cGU6IFN0ZXBUeXBlcy5SRVNUT1JFX1NFU1NJT047XG4gIGFjdGlvbj86IHN0cmluZzsgLy8gQWN0aW9uIHRleHQvSFRNTCBmb3IgdGhlIHJlc3RvcmUgc2Vzc2lvbiBzdGVwXG59XG5cbi8qKiBDdXN0b20gQ29kZSBTdGVwIENvbmZpZ3VyYXRpb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tQ29kZVN0ZXBDb25maWcgZXh0ZW5kcyBCYXNlU3RlcENvbmZpZyB7XG4gIHN0ZXBUeXBlOiBTdGVwVHlwZXMuQ1VTVE9NX0NPREU7XG4gIGxhbmd1YWdlOiAnamF2YXNjcmlwdCcgfCAncHl0aG9uJyB8ICd0eXBlc2NyaXB0JztcbiAgY29kZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvb3BTdGVwQ29uZmlnIGV4dGVuZHMgQmFzZVN0ZXBDb25maWcge1xuICBsb29wVHlwZTogJ2ZvcicgfCAnd2hpbGUnO1xuICBzdGVwVHlwZTogU3RlcFR5cGVzLkZPUl9MT09QIHwgU3RlcFR5cGVzLldISUxFX0xPT1A7XG4gIGNvbmRpdGlvbj86IHN0cmluZzsgLy8gRm9yIHdoaWxlIGxvb3A6IFwiV2hpbGUgZWxlbWVudCBcXFwiLm5vdGlmaWNhdGlvbi1iYWRnZVxcXCIgZXhpc3RzIChtYXggNSBpdGVyYXRpb25zKVwiXG4gIG1heEl0ZXJhdGlvbnM/OiBudW1iZXI7IC8vIEZvciB3aGlsZSBsb29wXG4gIHRlc3REYXRhUHJvZmlsZT86IHN0cmluZzsgLy8gRm9yIGZvciBsb29wXG4gIHN0YXJ0U3RlcD86IG51bWJlcjtcbiAgZW5kU3RlcD86IG51bWJlcjtcbiAgLyoqIEZPUiBsb29wOiBBUEkgdmFsdWVzIGZvciBkaXNwbGF5IChTdGFydC9FbmQgbGFiZWxzIGFuZCBUZXN0IERhdGEgcHJvZmlsZSBpZCkgKi9cbiAgZm9yTG9vcFN0YXJ0SW5kZXg/OiBudW1iZXI7XG4gIGZvckxvb3BFbmRJbmRleD86IG51bWJlcjtcbiAgZm9yTG9vcFRlc3REYXRhSWQ/OiBudW1iZXI7XG4gIC8qKiBGT1IgbG9vcDogb3B0aW9uYWwgSFRNTCBzdHJpbmcgZm9yIGRpc3BsYXkgKGUuZy4gd2l0aCB0ZXN0X2RhdGEgYmFkZ2VzKS4gV2hlbiBzZXQsIHVzZWQgaW5zdGVhZCBvZiBidWlsZGluZyBmcm9tIHZhbHVlcy4gKi9cbiAgZm9yTG9vcERpc3BsYXlIdG1sPzogc3RyaW5nO1xuICBuZXN0ZWRTdGVwczogVGVzdENhc2VTdGVwQ29uZmlnW107XG4gIGNoaWxkSWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZGl0aW9uQnJhbmNoIHtcbiAgaWQ/OiBudW1iZXI7IC8vIEJyYW5jaCBzdGVwIGlkIChJRi9FTFNFIElGL0VMU0Ugcm93KSBmb3IgQVBJIHBhcmVudElkIHdoZW4gYWRkaW5nIHN0ZXBzXG4gIHR5cGU6ICdpZicgfCAnZWxzZScgfCAnZWxzZS1pZic7XG4gIHN0ZXBUeXBlOiBTdGVwVHlwZXMuQ09ORElUSU9OX0lGO1xuICBsYWJlbDogc3RyaW5nOyAvLyBlLmcuLCBcIklGIFRSVUVcIiwgXCJFTFNFXCJcbiAgYWN0aW9uPzogc3RyaW5nOyAvLyBBY3Rpb24gdGV4dC9IVE1MIGZvciB0aGUgYnJhbmNoIChlLmcuLCBcIkNoZWNrIHRoZSB0ZXh0ICdLaXNoYW4nIGlzIHByZXNlbnQgb24gdGhlIGN1cnJlbnQgcGFnZVwiKVxuICAvKiogRXZlbnQga2V5LXZhbHVlIHBhaXJzIGZvciBkaXNwbGF5IGJhZGdlcyAoZS5nLiBzZWxlY3RvciwgZWxlbWVudCkgLSBzYW1lIGFzIGNvbmZpZy5ldmVudCAqL1xuICBldmVudD86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAvKiogQ3JlYXRpb24gdGltZXN0YW1wIGZyb20gQVBJIChtaWxsaXNlY29uZHMgc2luY2UgZXBvY2gpIC0gZm9yIGJyYW5jaCBoZWFkZXIgZGF0ZSBkaXNwbGF5ICovXG4gIGNyZWF0ZWREYXRlPzogbnVtYmVyO1xuICBuZXN0ZWRTdGVwczogVGVzdENhc2VTdGVwQ29uZmlnW107XG4gIC8qKlxuICAgKiBUaGUgbmV4dCBicmFuY2ggaW4gdGhlIGNvbmRpdGlvbiBjaGFpbiAoRUxTRSBJRiBvciBFTFNFIHdob3NlIHBhcmVudElkIHBvaW50cyB0byB0aGlzIGJyYW5jaCxcbiAgICogcmF0aGVyIHRoYW4gdG8gdGhlIHJvb3QgSUYgc3RlcCkuIFVzZWQgZm9yIGNoYWluZWQgY29uZGl0aW9ucyB3aGVyZSBFTFNFIElGIC8gRUxTRSBzdGVwc1xuICAgKiBhcmUgbmVzdGVkIHVuZGVyIGEgcHJldmlvdXMgRUxTRSBJRiBpbnN0ZWFkIG9mIGRpcmVjdGx5IHVuZGVyIHRoZSByb290IElGLlxuICAgKi9cbiAgbmV4dEJyYW5jaD86IENvbmRpdGlvbkJyYW5jaDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb25kaXRpb25TdGVwQ29uZmlnIGV4dGVuZHMgQmFzZVN0ZXBDb25maWcge1xuICBjb25kaXRpb246IHN0cmluZzsgLy8gZS5nLiwgXCJJZiBlbGVtZW50IGAuc3VjY2Vzcy1tZXNzYWdlYCBpcyB2aXNpYmxlXCJcbiAgYnJhbmNoZXM6IENvbmRpdGlvbkJyYW5jaFtdO1xuICBuZXN0ZWRTdGVwczogVGVzdENhc2VTdGVwQ29uZmlnW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RlcEdyb3VwQ29uZmlnIGV4dGVuZHMgQmFzZVN0ZXBDb25maWcge1xuICBzdGVwR3JvdXBJZDogbnVtYmVyO1xuICBncm91cE5hbWU6IHN0cmluZzsgLy8gZS5nLiwgXCJDaGVja291dCBGbG93XCJcbiAgcmV1c2FibGU/OiBib29sZWFuOyAvLyBXaGV0aGVyIHRoZSBncm91cCBpcyByZXVzYWJsZVxuICBzdGVwVHlwZTogU3RlcFR5cGVzLlNURVBfR1JPVVBcbiAgbmVzdGVkU3RlcHM6IFRlc3RDYXNlU3RlcENvbmZpZ1tdO1xuICBsb2FkaW5nPzogYm9vbGVhbjsgLy8gTG9hZGluZyBzdGF0ZSB3aGVuIGZldGNoaW5nIG5lc3RlZCBzdGVwc1xufVxuXG4vLyBVbmlvbiB0eXBlIGZvciBhbGwgdGVzdCBjYXNlIHN0ZXAgY29uZmlndXJhdGlvbnMgKHN1cHBvcnRzIHJlY3Vyc2l2ZSBuZXN0aW5nKVxuZXhwb3J0IHR5cGUgVGVzdENhc2VTdGVwQ29uZmlnID1cbiAgfCBOb3JtYWxTdGVwQ29uZmlnXG4gIHwgTG9vcFN0ZXBDb25maWdcbiAgfCBDb25kaXRpb25TdGVwQ29uZmlnXG4gIHwgU3RlcEdyb3VwQ29uZmlnXG4gIHwgQXBpU3RlcENvbmZpZ1xuICB8IERhdGFiYXNlU3RlcENvbmZpZ1xuICB8IEFpQWdlbnRTdGVwQ29uZmlnXG4gIHwgQWlWZXJpZnlTdGVwQ29uZmlnXG4gIHwgVXBsb2FkU3RlcENvbmZpZ1xuICB8IFNjcmVlbnNob3RTdGVwQ29uZmlnXG4gIHwgU2Nyb2xsU3RlcENvbmZpZ1xuICB8IFZlcmlmeVVybFN0ZXBDb25maWdcbiAgfCBSZXN0b3JlU2Vzc2lvblN0ZXBDb25maWdcbiAgfCBDdXN0b21Db2RlU3RlcENvbmZpZztcblxuLyoqIFR5cGUgZ3VhcmRzIGZvciBkaXNwYXRjaGluZyBzdGVwIHR5cGUgKGUuZy4gaW4gdGVzdC1jYXNlLWRldGFpbHMtcmVuZGVyZXIpICovXG5leHBvcnQgZnVuY3Rpb24gaXNOb3JtYWxTdGVwQ29uZmlnKHN0ZXA6IFRlc3RDYXNlU3RlcENvbmZpZyk6IHN0ZXAgaXMgTm9ybWFsU3RlcENvbmZpZyB7XG4gIHJldHVybiBzdGVwICE9IG51bGwgJiYgJ2V2ZW50VHlwZScgaW4gc3RlcCAmJiAncGFyYW1ldGVycycgaW4gc3RlcDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTG9vcFN0ZXBDb25maWcoc3RlcDogVGVzdENhc2VTdGVwQ29uZmlnKTogc3RlcCBpcyBMb29wU3RlcENvbmZpZyB7XG4gIHJldHVybiBzdGVwICE9IG51bGwgJiYgJ2xvb3BUeXBlJyBpbiBzdGVwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDb25kaXRpb25TdGVwQ29uZmlnKHN0ZXA6IFRlc3RDYXNlU3RlcENvbmZpZyk6IHN0ZXAgaXMgQ29uZGl0aW9uU3RlcENvbmZpZyB7XG4gIHJldHVybiBzdGVwICE9IG51bGwgJiYgJ2NvbmRpdGlvbicgaW4gc3RlcCAmJiAnYnJhbmNoZXMnIGluIHN0ZXA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N0ZXBHcm91cENvbmZpZyhzdGVwOiBUZXN0Q2FzZVN0ZXBDb25maWcpOiBzdGVwIGlzIFN0ZXBHcm91cENvbmZpZyB7XG4gIHJldHVybiBzdGVwICE9IG51bGwgJiYgJ2dyb3VwTmFtZScgaW4gc3RlcDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQXBpU3RlcENvbmZpZyhzdGVwOiBUZXN0Q2FzZVN0ZXBDb25maWcpOiBzdGVwIGlzIEFwaVN0ZXBDb25maWcge1xuICByZXR1cm4gc3RlcCAhPSBudWxsICYmICdzdGVwVHlwZScgaW4gc3RlcCAmJiAoc3RlcCBhcyBBcGlTdGVwQ29uZmlnKS5zdGVwVHlwZSA9PT0gU3RlcFR5cGVzLkFQSTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGF0YWJhc2VTdGVwQ29uZmlnKHN0ZXA6IFRlc3RDYXNlU3RlcENvbmZpZyk6IHN0ZXAgaXMgRGF0YWJhc2VTdGVwQ29uZmlnIHtcbiAgcmV0dXJuIHN0ZXAgIT0gbnVsbCAmJiAnc3RlcFR5cGUnIGluIHN0ZXAgJiYgKHN0ZXAgYXMgRGF0YWJhc2VTdGVwQ29uZmlnKS5zdGVwVHlwZSA9PT0gU3RlcFR5cGVzLkRBVEFCQVNFO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNBaUFnZW50U3RlcENvbmZpZyhzdGVwOiBUZXN0Q2FzZVN0ZXBDb25maWcpOiBzdGVwIGlzIEFpQWdlbnRTdGVwQ29uZmlnIHtcbiAgcmV0dXJuIHN0ZXAgIT0gbnVsbCAmJiAnc3RlcFR5cGUnIGluIHN0ZXAgJiYgKHN0ZXAgYXMgQWlBZ2VudFN0ZXBDb25maWcpLnN0ZXBUeXBlID09PSBTdGVwVHlwZXMuQUlfQUdFTlQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0FpVmVyaWZ5U3RlcENvbmZpZyhzdGVwOiBUZXN0Q2FzZVN0ZXBDb25maWcpOiBzdGVwIGlzIEFpVmVyaWZ5U3RlcENvbmZpZyB7XG4gIHJldHVybiBzdGVwICE9IG51bGwgJiYgJ3N0ZXBUeXBlJyBpbiBzdGVwICYmIChzdGVwIGFzIEFpVmVyaWZ5U3RlcENvbmZpZykuc3RlcFR5cGUgPT09IFN0ZXBUeXBlcy5BSV9WRVJJRlk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1VwbG9hZFN0ZXBDb25maWcoc3RlcDogVGVzdENhc2VTdGVwQ29uZmlnKTogc3RlcCBpcyBVcGxvYWRTdGVwQ29uZmlnIHtcbiAgcmV0dXJuIHN0ZXAgIT0gbnVsbCAmJiAnc3RlcFR5cGUnIGluIHN0ZXAgJiYgKHN0ZXAgYXMgVXBsb2FkU3RlcENvbmZpZykuc3RlcFR5cGUgPT09IFN0ZXBUeXBlcy5VUExPQUQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1NjcmVlbnNob3RTdGVwQ29uZmlnKHN0ZXA6IFRlc3RDYXNlU3RlcENvbmZpZyk6IHN0ZXAgaXMgU2NyZWVuc2hvdFN0ZXBDb25maWcge1xuICByZXR1cm4gc3RlcCAhPSBudWxsICYmICdzdGVwVHlwZScgaW4gc3RlcCAmJiAoc3RlcCBhcyBTY3JlZW5zaG90U3RlcENvbmZpZykuc3RlcFR5cGUgPT09IFN0ZXBUeXBlcy5TQ1JFRU5TSE9UO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTY3JvbGxTdGVwQ29uZmlnKHN0ZXA6IFRlc3RDYXNlU3RlcENvbmZpZyk6IHN0ZXAgaXMgU2Nyb2xsU3RlcENvbmZpZyB7XG4gIHJldHVybiBzdGVwICE9IG51bGwgJiYgJ3N0ZXBUeXBlJyBpbiBzdGVwICYmIChzdGVwIGFzIFNjcm9sbFN0ZXBDb25maWcpLnN0ZXBUeXBlID09PSBTdGVwVHlwZXMuU0NST0xMO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNWZXJpZnlVcmxTdGVwQ29uZmlnKHN0ZXA6IFRlc3RDYXNlU3RlcENvbmZpZyk6IHN0ZXAgaXMgVmVyaWZ5VXJsU3RlcENvbmZpZyB7XG4gIHJldHVybiBzdGVwICE9IG51bGwgJiYgJ3N0ZXBUeXBlJyBpbiBzdGVwICYmIChzdGVwIGFzIFZlcmlmeVVybFN0ZXBDb25maWcpLnN0ZXBUeXBlID09PSBTdGVwVHlwZXMuVkVSSUZZX1VSTDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUmVzdG9yZVNlc3Npb25TdGVwQ29uZmlnKHN0ZXA6IFRlc3RDYXNlU3RlcENvbmZpZyk6IHN0ZXAgaXMgUmVzdG9yZVNlc3Npb25TdGVwQ29uZmlnIHtcbiAgcmV0dXJuIHN0ZXAgIT0gbnVsbCAmJiAnc3RlcFR5cGUnIGluIHN0ZXAgJiYgKHN0ZXAgYXMgUmVzdG9yZVNlc3Npb25TdGVwQ29uZmlnKS5zdGVwVHlwZSA9PT0gU3RlcFR5cGVzLlJFU1RPUkVfU0VTU0lPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ3VzdG9tQ29kZVN0ZXBDb25maWcoc3RlcDogVGVzdENhc2VTdGVwQ29uZmlnKTogc3RlcCBpcyBDdXN0b21Db2RlU3RlcENvbmZpZyB7XG4gIHJldHVybiBzdGVwICE9IG51bGwgJiYgJ3N0ZXBUeXBlJyBpbiBzdGVwICYmIChzdGVwIGFzIEN1c3RvbUNvZGVTdGVwQ29uZmlnKS5zdGVwVHlwZSA9PT0gU3RlcFR5cGVzLkNVU1RPTV9DT0RFO1xufVxuIl19
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1jYXNlLXN0ZXAubW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90ZXN0LWNhc2UtZGV0YWlscy90ZXN0LWNhc2Utc3RlcC5tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFLSCxNQUFNLENBQU4sSUFBWSxTQWtCWDtBQWxCRCxXQUFZLFNBQVM7SUFDbkIsOEJBQWlCLENBQUE7SUFDakIsd0JBQVcsQ0FBQTtJQUNYLGtDQUFxQixDQUFBO0lBQ3JCLGtDQUFxQixDQUFBO0lBQ3JCLG9DQUF1QixDQUFBO0lBQ3ZCLDhCQUFpQixDQUFBO0lBQ2pCLHNDQUF5QixDQUFBO0lBQ3pCLHNDQUF5QixDQUFBO0lBQ3pCLGdEQUFtQyxDQUFBO0lBQ25DLHdDQUEyQixDQUFBO0lBQzNCLGtDQUFxQixDQUFBO0lBQ3JCLHNDQUF5QixDQUFBO0lBQ3pCLHNDQUF5QixDQUFBO0lBQ3pCLDRDQUErQixDQUFBO0lBQy9CLDBDQUE2QixDQUFBO0lBQzdCLHNDQUF3QixDQUFBO0lBQ3hCLDhCQUFpQixDQUFBO0FBQ25CLENBQUMsRUFsQlcsU0FBUyxLQUFULFNBQVMsUUFrQnBCO0FBd01ELGlGQUFpRjtBQUNqRixNQUFNLFVBQVUsa0JBQWtCLENBQUMsSUFBd0I7SUFDekQsT0FBTyxJQUFJLElBQUksSUFBSSxJQUFJLFdBQVcsSUFBSSxJQUFJLElBQUksWUFBWSxJQUFJLElBQUksQ0FBQztBQUNyRSxDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUFDLElBQXdCO0lBQ3ZELE9BQU8sSUFBSSxJQUFJLElBQUksSUFBSSxVQUFVLElBQUksSUFBSSxDQUFDO0FBQzVDLENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCLENBQUMsSUFBd0I7SUFDNUQsT0FBTyxJQUFJLElBQUksSUFBSSxJQUFJLFdBQVcsSUFBSSxJQUFJLElBQUksVUFBVSxJQUFJLElBQUksQ0FBQztBQUNuRSxDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUFDLElBQXdCO0lBQ3hELE9BQU8sSUFBSSxJQUFJLElBQUksSUFBSSxXQUFXLElBQUksSUFBSSxDQUFDO0FBQzdDLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLElBQXdCO0lBQ3RELE9BQU8sSUFBSSxJQUFJLElBQUksSUFBSSxVQUFVLElBQUksSUFBSSxJQUFLLElBQXNCLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxHQUFHLENBQUM7QUFDbEcsQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxJQUF3QjtJQUMzRCxPQUFPLElBQUksSUFBSSxJQUFJLElBQUksVUFBVSxJQUFJLElBQUksSUFBSyxJQUEyQixDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUMsUUFBUSxDQUFDO0FBQzVHLENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsSUFBd0I7SUFDMUQsT0FBTyxJQUFJLElBQUksSUFBSSxJQUFJLFVBQVUsSUFBSSxJQUFJLElBQUssSUFBMEIsQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLFFBQVEsQ0FBQztBQUMzRyxDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLElBQXdCO0lBQzNELE9BQU8sSUFBSSxJQUFJLElBQUksSUFBSSxVQUFVLElBQUksSUFBSSxJQUFLLElBQTJCLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxTQUFTLENBQUM7QUFDN0csQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxJQUF3QjtJQUN6RCxPQUFPLElBQUksSUFBSSxJQUFJLElBQUksVUFBVSxJQUFJLElBQUksSUFBSyxJQUF5QixDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUMsTUFBTSxDQUFDO0FBQ3hHLENBQUM7QUFFRCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsSUFBd0I7SUFDN0QsT0FBTyxJQUFJLElBQUksSUFBSSxJQUFJLFVBQVUsSUFBSSxJQUFJLElBQUssSUFBNkIsQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLFVBQVUsQ0FBQztBQUNoSCxDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLElBQXdCO0lBQ3pELE9BQU8sSUFBSSxJQUFJLElBQUksSUFBSSxVQUFVLElBQUksSUFBSSxJQUFLLElBQXlCLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxNQUFNLENBQUM7QUFDeEcsQ0FBQztBQUVELE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxJQUF3QjtJQUM1RCxPQUFPLElBQUksSUFBSSxJQUFJLElBQUksVUFBVSxJQUFJLElBQUksSUFBSyxJQUE0QixDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUMsVUFBVSxDQUFDO0FBQy9HLENBQUM7QUFFRCxNQUFNLFVBQVUsMEJBQTBCLENBQUMsSUFBd0I7SUFDakUsT0FBTyxJQUFJLElBQUksSUFBSSxJQUFJLFVBQVUsSUFBSSxJQUFJLElBQUssSUFBaUMsQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLGVBQWUsQ0FBQztBQUN6SCxDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUFDLElBQXdCO0lBQzdELE9BQU8sSUFBSSxJQUFJLElBQUksSUFBSSxVQUFVLElBQUksSUFBSSxJQUFLLElBQTZCLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxXQUFXLENBQUM7QUFDakgsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTW9kZWxzIGFuZCBpbnRlcmZhY2VzIGZvciB0ZXN0IGNhc2UgZGV0YWlscyBzdGVwIGNvbXBvbmVudHNcbiAqL1xuXG5leHBvcnQgdHlwZSBUZXN0Q2FzZUV2ZW50VHlwZSA9ICduYXZpZ2F0ZScgfCAnY3VzdG9tJyB8ICdhaS1hZ2VudCcgfCAndHlwZScgfCAnY2xpY2snIHwgJ2RvdWJsZUNsaWNrJyB8ICdwcmVzc0VudGVyJyB8ICdlbnRlcicgfCAndmVyaWZ5JyB8ICd3YWl0JztcblxuXG5leHBvcnQgZW51bSBTdGVwVHlwZXMge1xuICBOT1JNQUwgPSAnTk9STUFMJyxcbiAgQVBJID0gJ0FQSScsXG4gIERBVEFCQVNFID0gJ0RBVEFCQVNFJyxcbiAgQUlfQUdFTlQgPSAnQUlfQUdFTlQnLFxuICBBSV9WRVJJRlkgPSAnQUlfVkVSSUZZJyxcbiAgVVBMT0FEID0gJ1VQTE9BRCcsXG4gIFNDUkVFTlNIT1QgPSAnU0NSRUVOU0hPVCcsXG4gIFZFUklGWV9VUkwgPSAnVkVSSUZZX1VSTCcsXG4gIFJFU1RPUkVfU0VTU0lPTiA9ICdSRVNUT1JFX1NFU1NJT04nLFxuICBDVVNUT01fQ09ERSA9ICdDVVNUT01fQ09ERScsXG4gIEZPUl9MT09QID0gJ0ZPUl9MT09QJyxcbiAgV0hJTEVfTE9PUCA9ICdXSElMRV9MT09QJyxcbiAgQlJFQUtfTE9PUCA9ICdCUkVBS19MT09QJyxcbiAgQ09OVElOVUVfTE9PUCA9ICdDT05USU5VRV9MT09QJyxcbiAgQ09ORElUSU9OX0lGID0gJ0NPTkRJVElPTl9JRicsXG4gIFNURVBfR1JPVVA9ICdTVEVQX0dST1VQJyxcbiAgU0NST0xMID0gJ1NDUk9MTCdcbn1cblxuLy8gZXhwb3J0IHR5cGUgU3RlcFR5cGUgPSBTdGVwVHlwZXMuTk9STUFMIHwgU3RlcFR5cGVzLkFQSSB8IFN0ZXBUeXBlcy5EQVRBQkFTRSB8IFN0ZXBUeXBlcy5BSV9BR0VOVCB8IFN0ZXBUeXBlcy5VUExPQUQgfCBTdGVwVHlwZXMuU0NSRUVOU0hPVCB8IFN0ZXBUeXBlcy5DVVNUT01fQ09ERSB8IFN0ZXBUeXBlcy5GT1JfTE9PUCB8IFN0ZXBUeXBlcy5XSElMRV9MT09QIHwgU3RlcFR5cGVzLkJSRUFLX0xPT1AgfCBTdGVwVHlwZXMuQ09OVElOVUVfTE9PUDtcblxuZXhwb3J0IGludGVyZmFjZSBFdmVudFR5cGVDb25maWcge1xuICB0eXBlOiBUZXN0Q2FzZUV2ZW50VHlwZTtcbiAgbGFiZWw6IHN0cmluZztcbiAgaWNvbj86IHN0cmluZztcbiAgY29sb3I6IHN0cmluZztcbiAgYmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RlcFBhcmFtZXRlciB7XG4gIG5hbWU6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbiAgZGlzcGxheVZhbHVlPzogc3RyaW5nOyAvLyBGb3IgZGlzcGxheSBwdXJwb3NlcyAoZS5nLiwgd2l0aCBxdW90ZXMpXG59XG5cbi8qKiBCYXNlIGludGVyZmFjZSBjb250YWluaW5nIGNvbW1vbiBwcm9wZXJ0aWVzIGZvciBhbGwgc3RlcCBjb25maWd1cmF0aW9ucyAqL1xuZXhwb3J0IGludGVyZmFjZSBCYXNlU3RlcENvbmZpZyB7XG4gIGlkOiBzdHJpbmc7XG4gIGFjdGlvbj86IHN0cmluZztcbiAgc3RlcE51bWJlcjogbnVtYmVyIHwgc3RyaW5nO1xuICBzdGVwVHlwZTogU3RlcFR5cGVzO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgc2VsZWN0ZWQ/OiBib29sZWFuO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGV4cGFuZGVkPzogYm9vbGVhbjtcbiAgZXZlbnQ/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgLyoqIENyZWF0aW9uIHRpbWVzdGFtcCBmcm9tIEFQSSAobWlsbGlzZWNvbmRzIHNpbmNlIGVwb2NoKSAqL1xuICBjcmVhdGVkRGF0ZT86IG51bWJlcjtcbiAgLyoqIFdoZW4gdHJ1ZSwgdGhpcyBzdGVwIGlzIG1hcmtlZCB0byBiZSBza2lwcGVkIGR1cmluZyBleGVjdXRpb24gKi9cbiAgc2hvdWxkU2tpcD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm9ybWFsU3RlcENvbmZpZyBleHRlbmRzIEJhc2VTdGVwQ29uZmlnIHtcbiAgc3RlcFR5cGU6IFN0ZXBUeXBlcy5OT1JNQUw7XG4gIGV2ZW50VHlwZTogVGVzdENhc2VFdmVudFR5cGU7XG4gIHBhcmFtZXRlcnM6IFN0ZXBQYXJhbWV0ZXJbXTtcbiAgZWxlbWVudERhdGE/OiB7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgc2VsZWN0b3I/OiBzdHJpbmc7XG4gICAgcHdMb2NhdG9yPzogc3RyaW5nW107XG4gICAgbGFiZWxzPzogc3RyaW5nW107XG4gIH07XG59XG5cbi8qKiBBUEkgU3RlcCBDb25maWd1cmF0aW9uICovXG5leHBvcnQgaW50ZXJmYWNlIEFwaVN0ZXBDb25maWcgZXh0ZW5kcyBCYXNlU3RlcENvbmZpZyB7XG4gIHN0ZXBUeXBlOiBTdGVwVHlwZXMuQVBJO1xuICBtZXRob2Q6ICdHRVQnIHwgJ1BPU1QnIHwgJ1BVVCcgfCAnREVMRVRFJyB8ICdQQVRDSCc7XG4gIGVuZHBvaW50OiBzdHJpbmc7XG4gIGJhc2VVcmw/OiBzdHJpbmc7XG4gIHJlcXVlc3RCb2R5Pzogc3RyaW5nO1xuICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgaGVhZGVyc0NvdW50PzogbnVtYmVyO1xuICBoYXNCb2R5PzogYm9vbGVhbjtcbiAgc2F2ZVRvPzogc3RyaW5nO1xuICBleHBlY3RlZFN0YXR1cz86IG51bWJlcjtcbiAgLyoqIE9wdGlvbmFsIEFQSSBwcm90b2NvbCBtYXJrZXIuIERlZmF1bHRzIHRvICdyZXN0JyB3aGVuIG9taXR0ZWQuIFVzZWQgYnkgdGhlXG4gICAqICBzdGVwIHJvdyB0byBoaWRlIHRoZSBIVFRQIG1ldGhvZCBmb3IgR3JhcGhRTCBzdGVwcyAobWV0aG9kIGlzIGFsd2F5cyBQT1NUXG4gICAqICBpbnRlcm5hbGx5IGFuZCBpc24ndCB1c2VyLWNvbmZpZ3VyYWJsZSBpbiBHcmFwaFFMIG1vZGUpLiAqL1xuICBhcGlUeXBlPzogJ3Jlc3QnIHwgJ2dyYXBocWwnO1xufVxuXG4vKiogRGF0YWJhc2UgU3RlcCBDb25maWd1cmF0aW9uICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlU3RlcENvbmZpZyBleHRlbmRzIEJhc2VTdGVwQ29uZmlnIHtcbiAgc3RlcFR5cGU6IFN0ZXBUeXBlcy5EQVRBQkFTRTtcbiAgcXVlcnk6IHN0cmluZztcbiAgZGF0YWJhc2VUeXBlPzogJ215c3FsJyB8ICdwb3N0Z3Jlc3FsJyB8ICdtb25nb2RiJyB8ICdtc3NxbCcgfCAnb3JhY2xlJztcbiAgY29ubmVjdGlvbk5hbWU/OiBzdHJpbmc7XG4gIHNhdmVUbz86IHN0cmluZztcbn1cblxuLyoqIEFJIEFnZW50IFN0ZXAgQ29uZmlndXJhdGlvbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBaUFnZW50U3RlcENvbmZpZyBleHRlbmRzIEJhc2VTdGVwQ29uZmlnIHtcbiAgc3RlcFR5cGU6IFN0ZXBUeXBlcy5BSV9BR0VOVDtcbiAgaW5zdHJ1Y3Rpb25zOiBzdHJpbmc7XG59XG5cbi8qKiBBSSBWZXJpZnkgU3RlcCBDb25maWd1cmF0aW9uICovXG5leHBvcnQgaW50ZXJmYWNlIEFpVmVyaWZ5U3RlcENvbmZpZyBleHRlbmRzIEJhc2VTdGVwQ29uZmlnIHtcbiAgc3RlcFR5cGU6IFN0ZXBUeXBlcy5BSV9WRVJJRlk7XG4gIGluc3RydWN0aW9uczogc3RyaW5nO1xufVxuXG4vKiogVXBsb2FkIFN0ZXAgQ29uZmlndXJhdGlvbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVcGxvYWRTdGVwQ29uZmlnIGV4dGVuZHMgQmFzZVN0ZXBDb25maWcge1xuICBzdGVwVHlwZTogU3RlcFR5cGVzLlVQTE9BRDtcbiAgc2VsZWN0b3I6IHN0cmluZztcbiAgZmlsZU5hbWU6IHN0cmluZztcbiAgc291cmNlOiAnRGF0YSBMaWJyYXJ5JyB8ICdMb2NhbCcgfCAnVVJMJztcbiAgc291cmNlUGF0aDogc3RyaW5nO1xufVxuXG4vKiogU2NyZWVuc2hvdCBTdGVwIENvbmZpZ3VyYXRpb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NyZWVuc2hvdFN0ZXBDb25maWcgZXh0ZW5kcyBCYXNlU3RlcENvbmZpZyB7XG4gIHN0ZXBUeXBlOiBTdGVwVHlwZXMuU0NSRUVOU0hPVDtcbiAgbmFtZT86IHN0cmluZztcbiAgZnVsbFBhZ2U/OiBib29sZWFuO1xuICBzZWxlY3Rvcj86IHN0cmluZztcbn1cblxuLyoqIFNjcm9sbCBTdGVwIENvbmZpZ3VyYXRpb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2Nyb2xsU3RlcENvbmZpZyBleHRlbmRzIEJhc2VTdGVwQ29uZmlnIHtcbiAgc3RlcFR5cGU6IFN0ZXBUeXBlcy5TQ1JPTEw7XG4gIHNlbGVjdG9yOiBzdHJpbmc7XG4gIGRpcmVjdGlvbj86ICd0b3AnIHwgJ2JvdHRvbScgfCAndXAnIHwgJ2Rvd24nIHwgJ2xlZnQnIHwgJ3JpZ2h0JztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbi8qKiBWZXJpZnkgVVJMIFN0ZXAgQ29uZmlndXJhdGlvbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWZXJpZnlVcmxTdGVwQ29uZmlnIGV4dGVuZHMgQmFzZVN0ZXBDb25maWcge1xuICBzdGVwVHlwZTogU3RlcFR5cGVzLlZFUklGWV9VUkw7XG4gIGFjdGlvbj86IHN0cmluZzsgLy8gZS5nLiwgXCJWZXJpZnkgdGhhdCB0aGUgVVJMIG9mIGN1cnJlbnQgcGFnZSBpc1wiXG4gIHVybD86IHN0cmluZzsgLy8gVGhlIFVSTCB0byB2ZXJpZnlcbn1cblxuLyoqIFJlc3RvcmUgU2Vzc2lvbiBTdGVwIENvbmZpZ3VyYXRpb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzdG9yZVNlc3Npb25TdGVwQ29uZmlnIGV4dGVuZHMgQmFzZVN0ZXBDb25maWcge1xuICBzdGVwVHlwZTogU3RlcFR5cGVzLlJFU1RPUkVfU0VTU0lPTjtcbiAgYWN0aW9uPzogc3RyaW5nOyAvLyBBY3Rpb24gdGV4dC9IVE1MIGZvciB0aGUgcmVzdG9yZSBzZXNzaW9uIHN0ZXBcbn1cblxuLyoqIEN1c3RvbSBDb2RlIFN0ZXAgQ29uZmlndXJhdGlvbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDdXN0b21Db2RlU3RlcENvbmZpZyBleHRlbmRzIEJhc2VTdGVwQ29uZmlnIHtcbiAgc3RlcFR5cGU6IFN0ZXBUeXBlcy5DVVNUT01fQ09ERTtcbiAgbGFuZ3VhZ2U6ICdqYXZhc2NyaXB0JyB8ICdweXRob24nIHwgJ3R5cGVzY3JpcHQnO1xuICBjb2RlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9vcFN0ZXBDb25maWcgZXh0ZW5kcyBCYXNlU3RlcENvbmZpZyB7XG4gIGxvb3BUeXBlOiAnZm9yJyB8ICd3aGlsZSc7XG4gIHN0ZXBUeXBlOiBTdGVwVHlwZXMuRk9SX0xPT1AgfCBTdGVwVHlwZXMuV0hJTEVfTE9PUDtcbiAgY29uZGl0aW9uPzogc3RyaW5nOyAvLyBGb3Igd2hpbGUgbG9vcDogXCJXaGlsZSBlbGVtZW50IFxcXCIubm90aWZpY2F0aW9uLWJhZGdlXFxcIiBleGlzdHMgKG1heCA1IGl0ZXJhdGlvbnMpXCJcbiAgbWF4SXRlcmF0aW9ucz86IG51bWJlcjsgLy8gRm9yIHdoaWxlIGxvb3BcbiAgdGVzdERhdGFQcm9maWxlPzogc3RyaW5nOyAvLyBGb3IgZm9yIGxvb3BcbiAgc3RhcnRTdGVwPzogbnVtYmVyO1xuICBlbmRTdGVwPzogbnVtYmVyO1xuICAvKiogRk9SIGxvb3A6IEFQSSB2YWx1ZXMgZm9yIGRpc3BsYXkgKFN0YXJ0L0VuZCBsYWJlbHMgYW5kIFRlc3QgRGF0YSBwcm9maWxlIGlkKSAqL1xuICBmb3JMb29wU3RhcnRJbmRleD86IG51bWJlcjtcbiAgZm9yTG9vcEVuZEluZGV4PzogbnVtYmVyO1xuICBmb3JMb29wVGVzdERhdGFJZD86IG51bWJlcjtcbiAgLyoqIEZPUiBsb29wOiBvcHRpb25hbCBIVE1MIHN0cmluZyBmb3IgZGlzcGxheSAoZS5nLiB3aXRoIHRlc3RfZGF0YSBiYWRnZXMpLiBXaGVuIHNldCwgdXNlZCBpbnN0ZWFkIG9mIGJ1aWxkaW5nIGZyb20gdmFsdWVzLiAqL1xuICBmb3JMb29wRGlzcGxheUh0bWw/OiBzdHJpbmc7XG4gIG5lc3RlZFN0ZXBzOiBUZXN0Q2FzZVN0ZXBDb25maWdbXTtcbiAgY2hpbGRJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb25kaXRpb25CcmFuY2gge1xuICBpZD86IG51bWJlcjsgLy8gQnJhbmNoIHN0ZXAgaWQgKElGL0VMU0UgSUYvRUxTRSByb3cpIGZvciBBUEkgcGFyZW50SWQgd2hlbiBhZGRpbmcgc3RlcHNcbiAgdHlwZTogJ2lmJyB8ICdlbHNlJyB8ICdlbHNlLWlmJztcbiAgc3RlcFR5cGU6IFN0ZXBUeXBlcy5DT05ESVRJT05fSUY7XG4gIGxhYmVsOiBzdHJpbmc7IC8vIGUuZy4sIFwiSUYgVFJVRVwiLCBcIkVMU0VcIlxuICBhY3Rpb24/OiBzdHJpbmc7IC8vIEFjdGlvbiB0ZXh0L0hUTUwgZm9yIHRoZSBicmFuY2ggKGUuZy4sIFwiQ2hlY2sgdGhlIHRleHQgJ0tpc2hhbicgaXMgcHJlc2VudCBvbiB0aGUgY3VycmVudCBwYWdlXCIpXG4gIC8qKiBFdmVudCBrZXktdmFsdWUgcGFpcnMgZm9yIGRpc3BsYXkgYmFkZ2VzIChlLmcuIHNlbGVjdG9yLCBlbGVtZW50KSAtIHNhbWUgYXMgY29uZmlnLmV2ZW50ICovXG4gIGV2ZW50PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIC8qKiBDcmVhdGlvbiB0aW1lc3RhbXAgZnJvbSBBUEkgKG1pbGxpc2Vjb25kcyBzaW5jZSBlcG9jaCkgLSBmb3IgYnJhbmNoIGhlYWRlciBkYXRlIGRpc3BsYXkgKi9cbiAgY3JlYXRlZERhdGU/OiBudW1iZXI7XG4gIG5lc3RlZFN0ZXBzOiBUZXN0Q2FzZVN0ZXBDb25maWdbXTtcbiAgLyoqXG4gICAqIFRoZSBuZXh0IGJyYW5jaCBpbiB0aGUgY29uZGl0aW9uIGNoYWluIChFTFNFIElGIG9yIEVMU0Ugd2hvc2UgcGFyZW50SWQgcG9pbnRzIHRvIHRoaXMgYnJhbmNoLFxuICAgKiByYXRoZXIgdGhhbiB0byB0aGUgcm9vdCBJRiBzdGVwKS4gVXNlZCBmb3IgY2hhaW5lZCBjb25kaXRpb25zIHdoZXJlIEVMU0UgSUYgLyBFTFNFIHN0ZXBzXG4gICAqIGFyZSBuZXN0ZWQgdW5kZXIgYSBwcmV2aW91cyBFTFNFIElGIGluc3RlYWQgb2YgZGlyZWN0bHkgdW5kZXIgdGhlIHJvb3QgSUYuXG4gICAqL1xuICBuZXh0QnJhbmNoPzogQ29uZGl0aW9uQnJhbmNoO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbmRpdGlvblN0ZXBDb25maWcgZXh0ZW5kcyBCYXNlU3RlcENvbmZpZyB7XG4gIGNvbmRpdGlvbjogc3RyaW5nOyAvLyBlLmcuLCBcIklmIGVsZW1lbnQgYC5zdWNjZXNzLW1lc3NhZ2VgIGlzIHZpc2libGVcIlxuICBicmFuY2hlczogQ29uZGl0aW9uQnJhbmNoW107XG4gIG5lc3RlZFN0ZXBzOiBUZXN0Q2FzZVN0ZXBDb25maWdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGVwR3JvdXBDb25maWcgZXh0ZW5kcyBCYXNlU3RlcENvbmZpZyB7XG4gIHN0ZXBHcm91cElkOiBudW1iZXI7XG4gIGdyb3VwTmFtZTogc3RyaW5nOyAvLyBlLmcuLCBcIkNoZWNrb3V0IEZsb3dcIlxuICByZXVzYWJsZT86IGJvb2xlYW47IC8vIFdoZXRoZXIgdGhlIGdyb3VwIGlzIHJldXNhYmxlXG4gIHN0ZXBUeXBlOiBTdGVwVHlwZXMuU1RFUF9HUk9VUFxuICBuZXN0ZWRTdGVwczogVGVzdENhc2VTdGVwQ29uZmlnW107XG4gIGxvYWRpbmc/OiBib29sZWFuOyAvLyBMb2FkaW5nIHN0YXRlIHdoZW4gZmV0Y2hpbmcgbmVzdGVkIHN0ZXBzXG59XG5cbi8vIFVuaW9uIHR5cGUgZm9yIGFsbCB0ZXN0IGNhc2Ugc3RlcCBjb25maWd1cmF0aW9ucyAoc3VwcG9ydHMgcmVjdXJzaXZlIG5lc3RpbmcpXG5leHBvcnQgdHlwZSBUZXN0Q2FzZVN0ZXBDb25maWcgPVxuICB8IE5vcm1hbFN0ZXBDb25maWdcbiAgfCBMb29wU3RlcENvbmZpZ1xuICB8IENvbmRpdGlvblN0ZXBDb25maWdcbiAgfCBTdGVwR3JvdXBDb25maWdcbiAgfCBBcGlTdGVwQ29uZmlnXG4gIHwgRGF0YWJhc2VTdGVwQ29uZmlnXG4gIHwgQWlBZ2VudFN0ZXBDb25maWdcbiAgfCBBaVZlcmlmeVN0ZXBDb25maWdcbiAgfCBVcGxvYWRTdGVwQ29uZmlnXG4gIHwgU2NyZWVuc2hvdFN0ZXBDb25maWdcbiAgfCBTY3JvbGxTdGVwQ29uZmlnXG4gIHwgVmVyaWZ5VXJsU3RlcENvbmZpZ1xuICB8IFJlc3RvcmVTZXNzaW9uU3RlcENvbmZpZ1xuICB8IEN1c3RvbUNvZGVTdGVwQ29uZmlnO1xuXG4vKiogVHlwZSBndWFyZHMgZm9yIGRpc3BhdGNoaW5nIHN0ZXAgdHlwZSAoZS5nLiBpbiB0ZXN0LWNhc2UtZGV0YWlscy1yZW5kZXJlcikgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc05vcm1hbFN0ZXBDb25maWcoc3RlcDogVGVzdENhc2VTdGVwQ29uZmlnKTogc3RlcCBpcyBOb3JtYWxTdGVwQ29uZmlnIHtcbiAgcmV0dXJuIHN0ZXAgIT0gbnVsbCAmJiAnZXZlbnRUeXBlJyBpbiBzdGVwICYmICdwYXJhbWV0ZXJzJyBpbiBzdGVwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNMb29wU3RlcENvbmZpZyhzdGVwOiBUZXN0Q2FzZVN0ZXBDb25maWcpOiBzdGVwIGlzIExvb3BTdGVwQ29uZmlnIHtcbiAgcmV0dXJuIHN0ZXAgIT0gbnVsbCAmJiAnbG9vcFR5cGUnIGluIHN0ZXA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbmRpdGlvblN0ZXBDb25maWcoc3RlcDogVGVzdENhc2VTdGVwQ29uZmlnKTogc3RlcCBpcyBDb25kaXRpb25TdGVwQ29uZmlnIHtcbiAgcmV0dXJuIHN0ZXAgIT0gbnVsbCAmJiAnY29uZGl0aW9uJyBpbiBzdGVwICYmICdicmFuY2hlcycgaW4gc3RlcDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU3RlcEdyb3VwQ29uZmlnKHN0ZXA6IFRlc3RDYXNlU3RlcENvbmZpZyk6IHN0ZXAgaXMgU3RlcEdyb3VwQ29uZmlnIHtcbiAgcmV0dXJuIHN0ZXAgIT0gbnVsbCAmJiAnZ3JvdXBOYW1lJyBpbiBzdGVwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNBcGlTdGVwQ29uZmlnKHN0ZXA6IFRlc3RDYXNlU3RlcENvbmZpZyk6IHN0ZXAgaXMgQXBpU3RlcENvbmZpZyB7XG4gIHJldHVybiBzdGVwICE9IG51bGwgJiYgJ3N0ZXBUeXBlJyBpbiBzdGVwICYmIChzdGVwIGFzIEFwaVN0ZXBDb25maWcpLnN0ZXBUeXBlID09PSBTdGVwVHlwZXMuQVBJO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEYXRhYmFzZVN0ZXBDb25maWcoc3RlcDogVGVzdENhc2VTdGVwQ29uZmlnKTogc3RlcCBpcyBEYXRhYmFzZVN0ZXBDb25maWcge1xuICByZXR1cm4gc3RlcCAhPSBudWxsICYmICdzdGVwVHlwZScgaW4gc3RlcCAmJiAoc3RlcCBhcyBEYXRhYmFzZVN0ZXBDb25maWcpLnN0ZXBUeXBlID09PSBTdGVwVHlwZXMuREFUQUJBU0U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0FpQWdlbnRTdGVwQ29uZmlnKHN0ZXA6IFRlc3RDYXNlU3RlcENvbmZpZyk6IHN0ZXAgaXMgQWlBZ2VudFN0ZXBDb25maWcge1xuICByZXR1cm4gc3RlcCAhPSBudWxsICYmICdzdGVwVHlwZScgaW4gc3RlcCAmJiAoc3RlcCBhcyBBaUFnZW50U3RlcENvbmZpZykuc3RlcFR5cGUgPT09IFN0ZXBUeXBlcy5BSV9BR0VOVDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQWlWZXJpZnlTdGVwQ29uZmlnKHN0ZXA6IFRlc3RDYXNlU3RlcENvbmZpZyk6IHN0ZXAgaXMgQWlWZXJpZnlTdGVwQ29uZmlnIHtcbiAgcmV0dXJuIHN0ZXAgIT0gbnVsbCAmJiAnc3RlcFR5cGUnIGluIHN0ZXAgJiYgKHN0ZXAgYXMgQWlWZXJpZnlTdGVwQ29uZmlnKS5zdGVwVHlwZSA9PT0gU3RlcFR5cGVzLkFJX1ZFUklGWTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVXBsb2FkU3RlcENvbmZpZyhzdGVwOiBUZXN0Q2FzZVN0ZXBDb25maWcpOiBzdGVwIGlzIFVwbG9hZFN0ZXBDb25maWcge1xuICByZXR1cm4gc3RlcCAhPSBudWxsICYmICdzdGVwVHlwZScgaW4gc3RlcCAmJiAoc3RlcCBhcyBVcGxvYWRTdGVwQ29uZmlnKS5zdGVwVHlwZSA9PT0gU3RlcFR5cGVzLlVQTE9BRDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU2NyZWVuc2hvdFN0ZXBDb25maWcoc3RlcDogVGVzdENhc2VTdGVwQ29uZmlnKTogc3RlcCBpcyBTY3JlZW5zaG90U3RlcENvbmZpZyB7XG4gIHJldHVybiBzdGVwICE9IG51bGwgJiYgJ3N0ZXBUeXBlJyBpbiBzdGVwICYmIChzdGVwIGFzIFNjcmVlbnNob3RTdGVwQ29uZmlnKS5zdGVwVHlwZSA9PT0gU3RlcFR5cGVzLlNDUkVFTlNIT1Q7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1Njcm9sbFN0ZXBDb25maWcoc3RlcDogVGVzdENhc2VTdGVwQ29uZmlnKTogc3RlcCBpcyBTY3JvbGxTdGVwQ29uZmlnIHtcbiAgcmV0dXJuIHN0ZXAgIT0gbnVsbCAmJiAnc3RlcFR5cGUnIGluIHN0ZXAgJiYgKHN0ZXAgYXMgU2Nyb2xsU3RlcENvbmZpZykuc3RlcFR5cGUgPT09IFN0ZXBUeXBlcy5TQ1JPTEw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZlcmlmeVVybFN0ZXBDb25maWcoc3RlcDogVGVzdENhc2VTdGVwQ29uZmlnKTogc3RlcCBpcyBWZXJpZnlVcmxTdGVwQ29uZmlnIHtcbiAgcmV0dXJuIHN0ZXAgIT0gbnVsbCAmJiAnc3RlcFR5cGUnIGluIHN0ZXAgJiYgKHN0ZXAgYXMgVmVyaWZ5VXJsU3RlcENvbmZpZykuc3RlcFR5cGUgPT09IFN0ZXBUeXBlcy5WRVJJRllfVVJMO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNSZXN0b3JlU2Vzc2lvblN0ZXBDb25maWcoc3RlcDogVGVzdENhc2VTdGVwQ29uZmlnKTogc3RlcCBpcyBSZXN0b3JlU2Vzc2lvblN0ZXBDb25maWcge1xuICByZXR1cm4gc3RlcCAhPSBudWxsICYmICdzdGVwVHlwZScgaW4gc3RlcCAmJiAoc3RlcCBhcyBSZXN0b3JlU2Vzc2lvblN0ZXBDb25maWcpLnN0ZXBUeXBlID09PSBTdGVwVHlwZXMuUkVTVE9SRV9TRVNTSU9OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDdXN0b21Db2RlU3RlcENvbmZpZyhzdGVwOiBUZXN0Q2FzZVN0ZXBDb25maWcpOiBzdGVwIGlzIEN1c3RvbUNvZGVTdGVwQ29uZmlnIHtcbiAgcmV0dXJuIHN0ZXAgIT0gbnVsbCAmJiAnc3RlcFR5cGUnIGluIHN0ZXAgJiYgKHN0ZXAgYXMgQ3VzdG9tQ29kZVN0ZXBDb25maWcpLnN0ZXBUeXBlID09PSBTdGVwVHlwZXMuQ1VTVE9NX0NPREU7XG59XG4iXX0=
|