@cqa-lib/cqa-ui 1.1.510 → 1.1.512
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/compare-runs/compare-runs.component.mjs +8 -4
- package/esm2020/lib/compare-runs/test-case-link-cell.component.mjs +3 -3
- package/esm2020/lib/test-case-details/api-mocking-card/api-mocking-card.component.mjs +3 -3
- package/esm2020/lib/test-case-details/test-case-details-edit/test-case-details-edit.component.mjs +7 -3
- package/esm2020/lib/test-case-details/test-case-details.component.mjs +3 -3
- package/fesm2015/cqa-lib-cqa-ui.mjs +20 -11
- package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
- package/fesm2020/cqa-lib-cqa-ui.mjs +19 -11
- package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
- package/lib/compare-runs/compare-runs.component.d.ts +2 -0
- package/lib/test-case-details/test-case-details-edit/test-case-details-edit.component.d.ts +3 -1
- package/package.json +1 -1
|
@@ -18,7 +18,7 @@ TestCaseLinkCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
|
|
|
18
18
|
<div class="cqa-flex cqa-flex-col cqa-gap-0.5">
|
|
19
19
|
<button
|
|
20
20
|
type="button"
|
|
21
|
-
class="cqa-text-xs cqa-font-medium cqa-text-[#155DFC] cqa-text-left cqa-bg-transparent cqa-border-0 cqa-p-0 cqa-cursor-pointer
|
|
21
|
+
class="cqa-text-xs cqa-font-medium cqa-text-[#155DFC] cqa-text-left cqa-bg-transparent cqa-border-0 cqa-p-0 cqa-cursor-pointer"
|
|
22
22
|
(click)="onClick()"
|
|
23
23
|
>
|
|
24
24
|
TC-{{ testCaseDisplayId }}
|
|
@@ -34,7 +34,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
34
34
|
<div class="cqa-flex cqa-flex-col cqa-gap-0.5">
|
|
35
35
|
<button
|
|
36
36
|
type="button"
|
|
37
|
-
class="cqa-text-xs cqa-font-medium cqa-text-[#155DFC] cqa-text-left cqa-bg-transparent cqa-border-0 cqa-p-0 cqa-cursor-pointer
|
|
37
|
+
class="cqa-text-xs cqa-font-medium cqa-text-[#155DFC] cqa-text-left cqa-bg-transparent cqa-border-0 cqa-p-0 cqa-cursor-pointer"
|
|
38
38
|
(click)="onClick()"
|
|
39
39
|
>
|
|
40
40
|
TC-{{ testCaseDisplayId }}
|
|
@@ -53,4 +53,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
53
53
|
}], clicked: [{
|
|
54
54
|
type: Output
|
|
55
55
|
}] } });
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1jYXNlLWxpbmstY2VsbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBhcmUtcnVucy90ZXN0LWNhc2UtbGluay1jZWxsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQWtCaEcsTUFBTSxPQUFPLHlCQUF5QjtJQWhCdEM7UUFpQlcsc0JBQWlCLEdBQW9CLEdBQUcsQ0FBQztRQUV6QyxpQkFBWSxHQUFXLEVBQUUsQ0FBQztRQUN6QixZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztLQVFoRDtJQU5DLE9BQU87UUFDTCxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQzVELE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyQyxDQUFDOztzSEFYVSx5QkFBeUI7MEdBQXpCLHlCQUF5Qiw0TUFkMUI7Ozs7Ozs7Ozs7O0dBV1Q7MkZBR1UseUJBQXlCO2tCQWhCckMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7O0dBV1Q7b0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEOzhCQUVVLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0ksT0FBTztzQkFBaEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtdGVzdC1jYXNlLWxpbmstY2VsbCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTAuNVwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJjcWEtdGV4dC14cyBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyMxNTVERkNdIGNxYS10ZXh0LWxlZnQgY3FhLWJnLXRyYW5zcGFyZW50IGNxYS1ib3JkZXItMCBjcWEtcC0wIGNxYS1jdXJzb3ItcG9pbnRlclwiXG4gICAgICAgIChjbGljayk9XCJvbkNsaWNrKClcIlxuICAgICAgPlxuICAgICAgICBUQy17eyB0ZXN0Q2FzZURpc3BsYXlJZCB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LXhzIGNxYS10ZXh0LVsjMEIwQjBCXVwiPnt7IHRlc3RDYXNlTmFtZSB8fCAn4oCUJyB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVGVzdENhc2VMaW5rQ2VsbENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHRlc3RDYXNlRGlzcGxheUlkOiBzdHJpbmcgfCBudW1iZXIgPSAn4oCUJztcbiAgQElucHV0KCkgdGVzdENhc2VJZD86IG51bWJlcjtcbiAgQElucHV0KCkgdGVzdENhc2VOYW1lOiBzdHJpbmcgPSAnJztcbiAgQE91dHB1dCgpIGNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICBvbkNsaWNrKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRlc3RDYXNlSWQgPT0gbnVsbCB8fCBOdW1iZXIuaXNOYU4odGhpcy50ZXN0Q2FzZUlkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNsaWNrZWQuZW1pdCh0aGlzLnRlc3RDYXNlSWQpO1xuICB9XG59XG4iXX0=
|
|
@@ -99,10 +99,10 @@ export class ApiMockingCardComponent {
|
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
101
|
ApiMockingCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ApiMockingCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
102
|
-
ApiMockingCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ApiMockingCardComponent, selector: "cqa-api-mocking-card", inputs: { title: "title", statusLabel: "statusLabel", captureLabel: "captureLabel", captureHint: "captureHint", renewLabel: "renewLabel", renewHint: "renewHint", restoreMock: "restoreMock", storeMock: "storeMock", mockedApisCount: "mockedApisCount", totalApisCount: "totalApisCount", progressPercent: "progressPercent", summaryText: "summaryText", percentText: "percentText", configureButtonLabel: "configureButtonLabel", editing: "editing", showProgress: "showProgress", noDataHint: "noDataHint" }, outputs: { configure: "configure", restoreMockChange: "restoreMockChange", storeMockChange: "storeMockChange" }, host: { classAttribute: "cqa-ui-root" }, ngImport: i0, template: "<div class=\"cqa-amc-card\">\n <div class=\"cqa-amc-header\">\n <span class=\"cqa-amc-title\">{{ title }}</span>\n <span class=\"cqa-amc-status\" *ngIf=\"!showProgress &&statusLabel\">{{ statusLabel }}</span>\n </div>\n\n <!-- Read-only rows -->\n <ng-container *ngIf=\"!editing\">\n <div class=\"cqa-amc-row\">\n <span class=\"cqa-amc-label\">{{ captureLabel }}</span>\n <span class=\"cqa-amc-value\">{{ captureValueText }}</span>\n </div>\n <div class=\"cqa-amc-row\">\n <span class=\"cqa-amc-label\">{{ renewLabel }}</span>\n <span class=\"cqa-amc-value\">{{ renewValueText }}</span>\n </div>\n </ng-container>\n\n <!-- Edit rows: toggles with hint text -->\n <ng-container *ngIf=\"editing\">\n <div class=\"cqa-amc-edit-block\">\n <div class=\"cqa-amc-row cqa-amc-row--edit\">\n <cqa-custom-toggle\n [checked]=\"captureEnabled\"\n [ariaLabel]=\"captureLabel\"\n (checkedChange)=\"onCaptureToggle($event)\">\n </cqa-custom-toggle>\n <span class=\"cqa-amc-label\">{{ captureLabel }}</span>\n </div>\n <p *ngIf=\"captureHint\" class=\"cqa-amc-edit-hint\">{{ captureHint }}</p>\n </div>\n <div class=\"cqa-amc-edit-block\">\n <div class=\"cqa-amc-row cqa-amc-row--edit\">\n <cqa-custom-toggle\n [checked]=\"renewEnabled\"\n [ariaLabel]=\"renewLabel\"\n (checkedChange)=\"onRenewToggle($event)\">\n </cqa-custom-toggle>\n <span class=\"cqa-amc-label\">{{ renewLabel }}</span>\n </div>\n <p *ngIf=\"renewHint\" class=\"cqa-amc-edit-hint\">{{ renewHint }}</p>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"showProgress && !editing\">\n <p class=\"cqa-amc-summary\">{{ computedSummaryText }}</p>\n <div class=\"cqa-amc-progress-track\">\n <div class=\"cqa-amc-progress-fill\" [style.width]=\"progressWidth\"></div>\n </div>\n <p class=\"cqa-amc-percent\">{{ computedPercentText }}</p>\n </ng-container>\n\n <!-- Hint: no mock data yet \u2014 nudge the user to run the test first -->\n <p *ngIf=\"!showProgress && !editing\" class=\"cqa-amc-no-data-hint\">{{ noDataHint }}</p>\n\n
|
|
102
|
+
ApiMockingCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ApiMockingCardComponent, selector: "cqa-api-mocking-card", inputs: { title: "title", statusLabel: "statusLabel", captureLabel: "captureLabel", captureHint: "captureHint", renewLabel: "renewLabel", renewHint: "renewHint", restoreMock: "restoreMock", storeMock: "storeMock", mockedApisCount: "mockedApisCount", totalApisCount: "totalApisCount", progressPercent: "progressPercent", summaryText: "summaryText", percentText: "percentText", configureButtonLabel: "configureButtonLabel", editing: "editing", showProgress: "showProgress", noDataHint: "noDataHint" }, outputs: { configure: "configure", restoreMockChange: "restoreMockChange", storeMockChange: "storeMockChange" }, host: { classAttribute: "cqa-ui-root" }, ngImport: i0, template: "<div class=\"cqa-amc-card\">\n <div class=\"cqa-amc-header\">\n <span class=\"cqa-amc-title\">{{ title }}</span>\n <span class=\"cqa-amc-status\" *ngIf=\"!showProgress &&statusLabel\">{{ statusLabel }}</span>\n </div>\n\n <!-- Read-only rows -->\n <ng-container *ngIf=\"!editing\">\n <div class=\"cqa-amc-row\">\n <span class=\"cqa-amc-label\">{{ captureLabel }}</span>\n <span class=\"cqa-amc-value\">{{ captureValueText }}</span>\n </div>\n <div class=\"cqa-amc-row\">\n <span class=\"cqa-amc-label\">{{ renewLabel }}</span>\n <span class=\"cqa-amc-value\">{{ renewValueText }}</span>\n </div>\n </ng-container>\n\n <!-- Edit rows: toggles with hint text -->\n <ng-container *ngIf=\"editing\">\n <div class=\"cqa-amc-edit-block\">\n <div class=\"cqa-amc-row cqa-amc-row--edit\">\n <cqa-custom-toggle\n [checked]=\"captureEnabled\"\n [ariaLabel]=\"captureLabel\"\n (checkedChange)=\"onCaptureToggle($event)\">\n </cqa-custom-toggle>\n <span class=\"cqa-amc-label\">{{ captureLabel }}</span>\n </div>\n <p *ngIf=\"captureHint\" class=\"cqa-amc-edit-hint\">{{ captureHint }}</p>\n </div>\n <div class=\"cqa-amc-edit-block\">\n <div class=\"cqa-amc-row cqa-amc-row--edit\">\n <cqa-custom-toggle\n [checked]=\"renewEnabled\"\n [ariaLabel]=\"renewLabel\"\n (checkedChange)=\"onRenewToggle($event)\">\n </cqa-custom-toggle>\n <span class=\"cqa-amc-label\">{{ renewLabel }}</span>\n </div>\n <p *ngIf=\"renewHint\" class=\"cqa-amc-edit-hint\">{{ renewHint }}</p>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"showProgress && !editing\">\n <p class=\"cqa-amc-summary\">{{ computedSummaryText }}</p>\n <div class=\"cqa-amc-progress-track\">\n <div class=\"cqa-amc-progress-fill\" [style.width]=\"progressWidth\"></div>\n </div>\n <p class=\"cqa-amc-percent\">{{ computedPercentText }}</p>\n </ng-container>\n\n <!-- Hint: no mock data yet \u2014 nudge the user to run the test first -->\n <p *ngIf=\"!showProgress && !editing\" class=\"cqa-amc-no-data-hint\">{{ noDataHint }}</p>\n\n <!-- Configure is only meaningful when \"Use mock API responses\" is ON \u2014 without it, there's\n no active mock mode to configure. The button stays disabled when restoreMock is OFF\n (independent of the renew/store toggle), per the spec. -->\n <button\n [disabled]=\"!showProgress || !restoreMock\"\n type=\"button\"\n class=\"cqa-amc-configure-btn\"\n (click)=\"onConfigureClick()\">\n {{ configureButtonLabel }}\n </button>\n</div>\n", components: [{ type: i1.CustomToggleComponent, selector: "cqa-custom-toggle", inputs: ["checked", "disabled", "ariaLabel"], outputs: ["checkedChange", "change"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
103
103
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ApiMockingCardComponent, decorators: [{
|
|
104
104
|
type: Component,
|
|
105
|
-
args: [{ selector: 'cqa-api-mocking-card', host: { class: 'cqa-ui-root' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"cqa-amc-card\">\n <div class=\"cqa-amc-header\">\n <span class=\"cqa-amc-title\">{{ title }}</span>\n <span class=\"cqa-amc-status\" *ngIf=\"!showProgress &&statusLabel\">{{ statusLabel }}</span>\n </div>\n\n <!-- Read-only rows -->\n <ng-container *ngIf=\"!editing\">\n <div class=\"cqa-amc-row\">\n <span class=\"cqa-amc-label\">{{ captureLabel }}</span>\n <span class=\"cqa-amc-value\">{{ captureValueText }}</span>\n </div>\n <div class=\"cqa-amc-row\">\n <span class=\"cqa-amc-label\">{{ renewLabel }}</span>\n <span class=\"cqa-amc-value\">{{ renewValueText }}</span>\n </div>\n </ng-container>\n\n <!-- Edit rows: toggles with hint text -->\n <ng-container *ngIf=\"editing\">\n <div class=\"cqa-amc-edit-block\">\n <div class=\"cqa-amc-row cqa-amc-row--edit\">\n <cqa-custom-toggle\n [checked]=\"captureEnabled\"\n [ariaLabel]=\"captureLabel\"\n (checkedChange)=\"onCaptureToggle($event)\">\n </cqa-custom-toggle>\n <span class=\"cqa-amc-label\">{{ captureLabel }}</span>\n </div>\n <p *ngIf=\"captureHint\" class=\"cqa-amc-edit-hint\">{{ captureHint }}</p>\n </div>\n <div class=\"cqa-amc-edit-block\">\n <div class=\"cqa-amc-row cqa-amc-row--edit\">\n <cqa-custom-toggle\n [checked]=\"renewEnabled\"\n [ariaLabel]=\"renewLabel\"\n (checkedChange)=\"onRenewToggle($event)\">\n </cqa-custom-toggle>\n <span class=\"cqa-amc-label\">{{ renewLabel }}</span>\n </div>\n <p *ngIf=\"renewHint\" class=\"cqa-amc-edit-hint\">{{ renewHint }}</p>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"showProgress && !editing\">\n <p class=\"cqa-amc-summary\">{{ computedSummaryText }}</p>\n <div class=\"cqa-amc-progress-track\">\n <div class=\"cqa-amc-progress-fill\" [style.width]=\"progressWidth\"></div>\n </div>\n <p class=\"cqa-amc-percent\">{{ computedPercentText }}</p>\n </ng-container>\n\n <!-- Hint: no mock data yet \u2014 nudge the user to run the test first -->\n <p *ngIf=\"!showProgress && !editing\" class=\"cqa-amc-no-data-hint\">{{ noDataHint }}</p>\n\n
|
|
105
|
+
args: [{ selector: 'cqa-api-mocking-card', host: { class: 'cqa-ui-root' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"cqa-amc-card\">\n <div class=\"cqa-amc-header\">\n <span class=\"cqa-amc-title\">{{ title }}</span>\n <span class=\"cqa-amc-status\" *ngIf=\"!showProgress &&statusLabel\">{{ statusLabel }}</span>\n </div>\n\n <!-- Read-only rows -->\n <ng-container *ngIf=\"!editing\">\n <div class=\"cqa-amc-row\">\n <span class=\"cqa-amc-label\">{{ captureLabel }}</span>\n <span class=\"cqa-amc-value\">{{ captureValueText }}</span>\n </div>\n <div class=\"cqa-amc-row\">\n <span class=\"cqa-amc-label\">{{ renewLabel }}</span>\n <span class=\"cqa-amc-value\">{{ renewValueText }}</span>\n </div>\n </ng-container>\n\n <!-- Edit rows: toggles with hint text -->\n <ng-container *ngIf=\"editing\">\n <div class=\"cqa-amc-edit-block\">\n <div class=\"cqa-amc-row cqa-amc-row--edit\">\n <cqa-custom-toggle\n [checked]=\"captureEnabled\"\n [ariaLabel]=\"captureLabel\"\n (checkedChange)=\"onCaptureToggle($event)\">\n </cqa-custom-toggle>\n <span class=\"cqa-amc-label\">{{ captureLabel }}</span>\n </div>\n <p *ngIf=\"captureHint\" class=\"cqa-amc-edit-hint\">{{ captureHint }}</p>\n </div>\n <div class=\"cqa-amc-edit-block\">\n <div class=\"cqa-amc-row cqa-amc-row--edit\">\n <cqa-custom-toggle\n [checked]=\"renewEnabled\"\n [ariaLabel]=\"renewLabel\"\n (checkedChange)=\"onRenewToggle($event)\">\n </cqa-custom-toggle>\n <span class=\"cqa-amc-label\">{{ renewLabel }}</span>\n </div>\n <p *ngIf=\"renewHint\" class=\"cqa-amc-edit-hint\">{{ renewHint }}</p>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"showProgress && !editing\">\n <p class=\"cqa-amc-summary\">{{ computedSummaryText }}</p>\n <div class=\"cqa-amc-progress-track\">\n <div class=\"cqa-amc-progress-fill\" [style.width]=\"progressWidth\"></div>\n </div>\n <p class=\"cqa-amc-percent\">{{ computedPercentText }}</p>\n </ng-container>\n\n <!-- Hint: no mock data yet \u2014 nudge the user to run the test first -->\n <p *ngIf=\"!showProgress && !editing\" class=\"cqa-amc-no-data-hint\">{{ noDataHint }}</p>\n\n <!-- Configure is only meaningful when \"Use mock API responses\" is ON \u2014 without it, there's\n no active mock mode to configure. The button stays disabled when restoreMock is OFF\n (independent of the renew/store toggle), per the spec. -->\n <button\n [disabled]=\"!showProgress || !restoreMock\"\n type=\"button\"\n class=\"cqa-amc-configure-btn\"\n (click)=\"onConfigureClick()\">\n {{ configureButtonLabel }}\n </button>\n</div>\n", styles: [] }]
|
|
106
106
|
}], propDecorators: { title: [{
|
|
107
107
|
type: Input
|
|
108
108
|
}], statusLabel: [{
|
|
@@ -144,4 +144,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
144
144
|
}], storeMockChange: [{
|
|
145
145
|
type: Output
|
|
146
146
|
}] } });
|
|
147
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLW1vY2tpbmctY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Rlc3QtY2FzZS1kZXRhaWxzL2FwaS1tb2NraW5nLWNhcmQvYXBpLW1vY2tpbmctY2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Rlc3QtY2FzZS1kZXRhaWxzL2FwaS1tb2NraW5nLWNhcmQvYXBpLW1vY2tpbmctY2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBWWhHOzs7Ozs7Ozs7OztHQVdHO0FBVUgsTUFBTSxPQUFPLHVCQUF1QjtJQVRwQztRQVVXLFVBQUssR0FBVyxhQUFhLENBQUM7UUFDOUIsZ0JBQVcsR0FBVyxnQkFBZ0IsQ0FBQztRQUV2QyxpQkFBWSxHQUFXLHdCQUF3QixDQUFDO1FBQ2hELGdCQUFXLEdBQVcscUVBQXFFLENBQUM7UUFDNUYsZUFBVSxHQUFXLCtCQUErQixDQUFDO1FBQ3JELGNBQVMsR0FBVyw4REFBOEQsQ0FBQztRQUU1Rix5RkFBeUY7UUFDaEYsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDdEMsa0dBQWtHO1FBQ3pGLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFFM0Isb0JBQWUsR0FBVyxDQUFDLENBQUM7UUFDNUIsbUJBQWMsR0FBVyxDQUFDLENBQUM7UUFDM0Isb0JBQWUsR0FBVyxDQUFDLENBQUM7UUFLNUIseUJBQW9CLEdBQVcscUJBQXFCLENBQUM7UUFDckQsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUVsQzs7OztXQUlHO1FBQ00saUJBQVksR0FBWSxLQUFLLENBQUM7UUFFdkMsMkZBQTJGO1FBQ2xGLGVBQVUsR0FBVyxvREFBb0QsQ0FBQztRQUV6RSxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUMvQyxxRUFBcUU7UUFDM0Qsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUMxRCwwRUFBMEU7UUFDaEUsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0tBd0R6RDtJQXREQyxzRUFBc0U7SUFDdEUsSUFBSSxjQUFjLEtBQWMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUMxRCxJQUFJLFlBQVksS0FBYyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3RELElBQUksZ0JBQWdCLEtBQWEsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDMUUsSUFBSSxjQUFjLEtBQWEsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFFdEUsSUFBSSxtQkFBbUI7UUFDckIsSUFBSSxJQUFJLENBQUMsV0FBVztZQUFFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUM5QyxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsT0FBTyxJQUFJLENBQUMsY0FBYyxtQkFBbUIsQ0FBQztJQUM5RSxDQUFDO0lBRUQsSUFBSSxtQkFBbUI7UUFDckIsSUFBSSxJQUFJLENBQUMsV0FBVztZQUFFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUM5QyxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsb0NBQW9DLENBQUM7SUFDckUsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RSxPQUFPLEdBQUcsT0FBTyxHQUFHLENBQUM7SUFDdkIsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILGVBQWUsQ0FBQyxLQUFjO1FBQzVCLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxTQUFTO1lBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxhQUFhLENBQUMsS0FBYztRQUMxQixJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsV0FBVztZQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRU8sY0FBYyxDQUFDLElBQWE7UUFDbEMsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLElBQUk7WUFBRSxPQUFPO1FBQ3RDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVPLFlBQVksQ0FBQyxJQUFhO1FBQ2hDLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJO1lBQUUsT0FBTztRQUNwQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDOztvSEE3RlUsdUJBQXVCO3dHQUF2Qix1QkFBdUIsMHNCQ2pDcEMsczJFQWdFQTsyRkQvQmEsdUJBQXVCO2tCQVRuQyxTQUFTOytCQUNFLHNCQUFzQixRQUsxQixFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsbUJBQ2IsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBT0csWUFBWTtzQkFBcEIsS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVJLFNBQVM7c0JBQWxCLE1BQU07Z0JBRUcsaUJBQWlCO3NCQUExQixNQUFNO2dCQUVHLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBMZWdhY3kgdG9nZ2xlLWNoYW5nZSBwYXlsb2FkIGtlcHQgZm9yIGJhY2stY29tcGF0IHdpdGggY29uc3VtZXJzIHRoYXQgaGF2ZW4ndCBtaWdyYXRlZFxuICogdG8gYHJlc3RvcmVNb2NrQ2hhbmdlYCB5ZXQuIGBrZXlgIGlkZW50aWZpZXMgd2hpY2ggcm93IHdhcyB0b2dnbGVkOyBgdmFsdWVgIGlzIHRoZSBuZXdcbiAqIGNoZWNrZWQgc3RhdGUgb2YgdGhhdCByb3cuIE5ldyBjb2RlIHNob3VsZCBsaXN0ZW4gdG8gYHJlc3RvcmVNb2NrQ2hhbmdlYCBpbnN0ZWFkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwaU1vY2tpbmdDYXJkVG9nZ2xlQ2hhbmdlIHtcbiAga2V5OiAnY2FwdHVyZUFwaVJlc3BvbnNlcycgfCAncmVuZXdBcGlSZXNwb25zZXMnO1xuICB2YWx1ZTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBEdWFsLW1vZGUgY2FyZCBzdW1tYXJpc2luZyB0aGUgQVBJIG1vY2tpbmcgY29uZmlndXJhdGlvbiBvZiBhIHRlc3QgY2FzZS5cbiAqXG4gKiBUaGUgY2FyZCBzdXJmYWNlcyBUV08gaW5kZXBlbmRlbnQgZmxhZ3Mg4oCUIGByZXN0b3JlTW9ja2AgKHRoZSBcIlVzZSBtb2NrIEFQSSByZXNwb25zZXNcIiByb3cpXG4gKiBhbmQgYHN0b3JlTW9ja2AgKHRoZSBcIlJlbmV3IGFuZCBzdG9yZSBBUEkgcmVzcG9uc2VzXCIgcm93KS4gQm90aCBjYW4gYmUgb2ZmIHNpbXVsdGFuZW91c2x5XG4gKiAobm8gbW9ja2luZyBvbiB0aGUgbmV4dCBydW4pOyB0dXJuaW5nIGVpdGhlciBvbmUgb24gZm9yY2VzIHRoZSBvdGhlciBvZmYgKHRoZXkncmUgbXV0dWFsbHlcbiAqIGV4Y2x1c2l2ZSBpbiB0aGUgb24tc3RhdGUpLiBCb3RoIGNhbiBuZXZlciBiZSBvbiBhdCB0aGUgc2FtZSB0aW1lLlxuICpcbiAqIEluIHJlYWQtb25seSBtb2RlIGVhY2ggcm93IHNob3dzIE9uL09mZiBkZXJpdmVkIGZyb20gaXRzIG93biBmbGFnLiBJbiBlZGl0IG1vZGUgZWFjaCByb3dcbiAqIHJlbmRlcnMgYSB0b2dnbGU7IHRoZSBjYXJkIGVtaXRzIGByZXN0b3JlTW9ja0NoYW5nZWAgYW5kIGBzdG9yZU1vY2tDaGFuZ2VgIHdoZW5ldmVyIGEgdmFsdWVcbiAqIGFjdHVhbGx5IGNoYW5nZXMgc28gdGhlIHBhcmVudCBjYW4gcGVyc2lzdCB0aGVtLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtYXBpLW1vY2tpbmctY2FyZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hcGktbW9ja2luZy1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgLy8gU3R5bGVzIGxpdmUgaW4gc3JjL2xpYi9zdHlsZXMvdGFpbHdpbmQuY3NzICh0aGUgbGliIHNoaXBzIGEgc2luZ2xlIGNvbXBpbGVkIHN0eWxlc2hlZXQpO1xuICAvLyBwZXItY29tcG9uZW50IC5zY3NzIGZpbGVzIGFyZSBub3Qgc3VwcG9ydGVkIGluIHRoZSBuZy1wYWNrYWdyIGJ1aWxkIGZvciB0aGlzIGxpYi5cbiAgc3R5bGVVcmxzOiBbXSxcbiAgaG9zdDogeyBjbGFzczogJ2NxYS11aS1yb290JyB9LFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQXBpTW9ja2luZ0NhcmRDb21wb25lbnQge1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gJ0FQSSBNb2NraW5nJztcbiAgQElucHV0KCkgc3RhdHVzTGFiZWw6IHN0cmluZyA9ICdOb3QgY29uZmlndXJlZCc7XG5cbiAgQElucHV0KCkgY2FwdHVyZUxhYmVsOiBzdHJpbmcgPSAnVXNlIG1vY2sgQVBJIHJlc3BvbnNlcyc7XG4gIEBJbnB1dCgpIGNhcHR1cmVIaW50OiBzdHJpbmcgPSAnVXNlcyBzdG9yZWQgcmVzcG9uc2VzIG9uIG5leHQgcnVuLiBUdXJuIG9uIGFmdGVyIGNhcHR1cmUgY29tcGxldGVzLic7XG4gIEBJbnB1dCgpIHJlbmV3TGFiZWw6IHN0cmluZyA9ICdSZW5ldyBhbmQgc3RvcmUgQVBJIHJlc3BvbnNlcyc7XG4gIEBJbnB1dCgpIHJlbmV3SGludDogc3RyaW5nID0gJ1JlLWNhcHR1cmVzIGZyZXNoIHJlc3BvbnNlcyBvbiBuZXh0IHJ1bi4gVHVybnMgb2ZmIFVzZSBtb2NrLic7XG5cbiAgLyoqIFwiVXNlIG1vY2sgQVBJIHJlc3BvbnNlc1wiIHJvdyBzdGF0ZS4gTXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggYHN0b3JlTW9ja2Agd2hlbiB0cnVlLiAqL1xuICBASW5wdXQoKSByZXN0b3JlTW9jazogYm9vbGVhbiA9IGZhbHNlO1xuICAvKiogXCJSZW5ldyBhbmQgc3RvcmUgQVBJIHJlc3BvbnNlc1wiIHJvdyBzdGF0ZS4gTXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggYHJlc3RvcmVNb2NrYCB3aGVuIHRydWUuICovXG4gIEBJbnB1dCgpIHN0b3JlTW9jazogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIG1vY2tlZEFwaXNDb3VudDogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgdG90YWxBcGlzQ291bnQ6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIHByb2dyZXNzUGVyY2VudDogbnVtYmVyID0gMDtcblxuICBASW5wdXQoKSBzdW1tYXJ5VGV4dD86IHN0cmluZztcbiAgQElucHV0KCkgcGVyY2VudFRleHQ/OiBzdHJpbmc7XG5cbiAgQElucHV0KCkgY29uZmlndXJlQnV0dG9uTGFiZWw6IHN0cmluZyA9ICdDb25maWd1cmUgTW9jayBBUElzJztcbiAgQElucHV0KCkgZWRpdGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyB3aGV0aGVyIHRoZSBcIk1vY2tlZCBYIG9mIFkgLyBwcm9ncmVzcyBiYXIgLyBwZXJjZW50XCIgYmxvY2sgaXMgc2hvd24uXG4gICAqIEhpZGRlbiB3aGVuIHRoZSB0ZXN0IGNhc2UgaGFzIG5vIGNhcHR1cmVkIG1vY2sgc3VtbWFyeSB5ZXQgKGFuZCBhbHdheXMgaGlkZGVuIGluXG4gICAqIGVkaXQgbW9kZSByZWdhcmRsZXNzIG9mIHRoaXMgZmxhZykuXG4gICAqL1xuICBASW5wdXQoKSBzaG93UHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogSGludCBzaG93biBpbiByZWFkLW9ubHkgbW9kZSB3aGVuIG5vIG1vY2sgZGF0YSBleGlzdHMgeWV0IChgc2hvd1Byb2dyZXNzYCBpcyBmYWxzZSkuICovXG4gIEBJbnB1dCgpIG5vRGF0YUhpbnQ6IHN0cmluZyA9ICdSdW4gdGhpcyB0ZXN0IG9uY2UgdG8gY2FwdHVyZSBBUEkgcmVzcG9uc2VzIGZpcnN0Lic7XG5cbiAgQE91dHB1dCgpIGNvbmZpZ3VyZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgLyoqIEVtaXR0ZWQgd2hlbmV2ZXIgYHJlc3RvcmVNb2NrYCBjaGFuZ2VzIChVc2UtbW9jayByb3cgdG9nZ2xlZCkuICovXG4gIEBPdXRwdXQoKSByZXN0b3JlTW9ja0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgLyoqIEVtaXR0ZWQgd2hlbmV2ZXIgYHN0b3JlTW9ja2AgY2hhbmdlcyAoUmVuZXctYW5kLXN0b3JlIHJvdyB0b2dnbGVkKS4gKi9cbiAgQE91dHB1dCgpIHN0b3JlTW9ja0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAvLyBQZXItcm93IGRlcml2ZWQgZGlzcGxheSBzdGF0ZSDigJQgZWFjaCByb3cgcmVmbGVjdHMgaXRzIG93biBmbGFnIG5vdy5cbiAgZ2V0IGNhcHR1cmVFbmFibGVkKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5yZXN0b3JlTW9jazsgfVxuICBnZXQgcmVuZXdFbmFibGVkKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5zdG9yZU1vY2s7IH1cbiAgZ2V0IGNhcHR1cmVWYWx1ZVRleHQoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMucmVzdG9yZU1vY2sgPyAnT24nIDogJ09mZic7IH1cbiAgZ2V0IHJlbmV3VmFsdWVUZXh0KCk6IHN0cmluZyB7IHJldHVybiB0aGlzLnN0b3JlTW9jayA/ICdPbicgOiAnT2ZmJzsgfVxuXG4gIGdldCBjb21wdXRlZFN1bW1hcnlUZXh0KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuc3VtbWFyeVRleHQpIHJldHVybiB0aGlzLnN1bW1hcnlUZXh0O1xuICAgIHJldHVybiBgJHt0aGlzLm1vY2tlZEFwaXNDb3VudH0gb2YgJHt0aGlzLnRvdGFsQXBpc0NvdW50fSBBUElzIHNldCB0byBtb2NrYDtcbiAgfVxuXG4gIGdldCBjb21wdXRlZFBlcmNlbnRUZXh0KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucGVyY2VudFRleHQpIHJldHVybiB0aGlzLnBlcmNlbnRUZXh0O1xuICAgIHJldHVybiBgJHt0aGlzLnByb2dyZXNzUGVyY2VudH0lIG9mIGNhbGxzIHdpbGwgdXNlIG1vY2sgcmVzcG9uc2VzYDtcbiAgfVxuXG4gIGdldCBwcm9ncmVzc1dpZHRoKCk6IHN0cmluZyB7XG4gICAgY29uc3QgY2xhbXBlZCA9IE1hdGgubWF4KDAsIE1hdGgubWluKDEwMCwgTnVtYmVyKHRoaXMucHJvZ3Jlc3NQZXJjZW50KSB8fCAwKSk7XG4gICAgcmV0dXJuIGAke2NsYW1wZWR9JWA7XG4gIH1cblxuICBvbkNvbmZpZ3VyZUNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlndXJlLmVtaXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBcIlVzZSBtb2NrIEFQSSByZXNwb25zZXNcIiB0b2dnbGUuIFR1cm5pbmcgaXQgb24gZm9yY2VzIGBzdG9yZU1vY2tgIG9mZiAobXV0dWFsIGV4Y2x1c2l2aXR5KTtcbiAgICogdHVybmluZyBpdCBvZmYgbGVhdmVzIHRoZSBvdGhlciByb3cgYWxvbmUuXG4gICAqL1xuICBvbkNhcHR1cmVUb2dnbGUodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAodmFsdWUgJiYgdGhpcy5zdG9yZU1vY2spIHRoaXMuc2V0U3RvcmVNb2NrKGZhbHNlKTtcbiAgICB0aGlzLnNldFJlc3RvcmVNb2NrKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBcIlJlbmV3IGFuZCBzdG9yZSBBUEkgcmVzcG9uc2VzXCIgdG9nZ2xlLiBUdXJuaW5nIGl0IG9uIGZvcmNlcyBgcmVzdG9yZU1vY2tgIG9mZjsgdHVybmluZ1xuICAgKiBpdCBvZmYgbGVhdmVzIHRoZSBvdGhlciByb3cgYWxvbmUuXG4gICAqL1xuICBvblJlbmV3VG9nZ2xlKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHZhbHVlICYmIHRoaXMucmVzdG9yZU1vY2spIHRoaXMuc2V0UmVzdG9yZU1vY2soZmFsc2UpO1xuICAgIHRoaXMuc2V0U3RvcmVNb2NrKHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0UmVzdG9yZU1vY2sobmV4dDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlc3RvcmVNb2NrID09PSBuZXh0KSByZXR1cm47XG4gICAgdGhpcy5yZXN0b3JlTW9jayA9IG5leHQ7XG4gICAgdGhpcy5yZXN0b3JlTW9ja0NoYW5nZS5lbWl0KG5leHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRTdG9yZU1vY2sobmV4dDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0b3JlTW9jayA9PT0gbmV4dCkgcmV0dXJuO1xuICAgIHRoaXMuc3RvcmVNb2NrID0gbmV4dDtcbiAgICB0aGlzLnN0b3JlTW9ja0NoYW5nZS5lbWl0KG5leHQpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY3FhLWFtYy1jYXJkXCI+XG4gIDxkaXYgY2xhc3M9XCJjcWEtYW1jLWhlYWRlclwiPlxuICAgIDxzcGFuIGNsYXNzPVwiY3FhLWFtYy10aXRsZVwiPnt7IHRpdGxlIH19PC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPVwiY3FhLWFtYy1zdGF0dXNcIiAqbmdJZj1cIiFzaG93UHJvZ3Jlc3MgJiZzdGF0dXNMYWJlbFwiPnt7IHN0YXR1c0xhYmVsIH19PC9zcGFuPlxuICA8L2Rpdj5cblxuICA8IS0tIFJlYWQtb25seSByb3dzIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWVkaXRpbmdcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWFtYy1yb3dcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLWFtYy1sYWJlbFwiPnt7IGNhcHR1cmVMYWJlbCB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLWFtYy12YWx1ZVwiPnt7IGNhcHR1cmVWYWx1ZVRleHQgfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1hbWMtcm93XCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImNxYS1hbWMtbGFiZWxcIj57eyByZW5ld0xhYmVsIH19PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtYW1jLXZhbHVlXCI+e3sgcmVuZXdWYWx1ZVRleHQgfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gRWRpdCByb3dzOiB0b2dnbGVzIHdpdGggaGludCB0ZXh0IC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZWRpdGluZ1wiPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtYW1jLWVkaXQtYmxvY2tcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtYW1jLXJvdyBjcWEtYW1jLXJvdy0tZWRpdFwiPlxuICAgICAgICA8Y3FhLWN1c3RvbS10b2dnbGVcbiAgICAgICAgICBbY2hlY2tlZF09XCJjYXB0dXJlRW5hYmxlZFwiXG4gICAgICAgICAgW2FyaWFMYWJlbF09XCJjYXB0dXJlTGFiZWxcIlxuICAgICAgICAgIChjaGVja2VkQ2hhbmdlKT1cIm9uQ2FwdHVyZVRvZ2dsZSgkZXZlbnQpXCI+XG4gICAgICAgIDwvY3FhLWN1c3RvbS10b2dnbGU+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLWFtYy1sYWJlbFwiPnt7IGNhcHR1cmVMYWJlbCB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHAgKm5nSWY9XCJjYXB0dXJlSGludFwiIGNsYXNzPVwiY3FhLWFtYy1lZGl0LWhpbnRcIj57eyBjYXB0dXJlSGludCB9fTwvcD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWFtYy1lZGl0LWJsb2NrXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWFtYy1yb3cgY3FhLWFtYy1yb3ctLWVkaXRcIj5cbiAgICAgICAgPGNxYS1jdXN0b20tdG9nZ2xlXG4gICAgICAgICAgW2NoZWNrZWRdPVwicmVuZXdFbmFibGVkXCJcbiAgICAgICAgICBbYXJpYUxhYmVsXT1cInJlbmV3TGFiZWxcIlxuICAgICAgICAgIChjaGVja2VkQ2hhbmdlKT1cIm9uUmVuZXdUb2dnbGUoJGV2ZW50KVwiPlxuICAgICAgICA8L2NxYS1jdXN0b20tdG9nZ2xlPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1hbWMtbGFiZWxcIj57eyByZW5ld0xhYmVsIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8cCAqbmdJZj1cInJlbmV3SGludFwiIGNsYXNzPVwiY3FhLWFtYy1lZGl0LWhpbnRcIj57eyByZW5ld0hpbnQgfX08L3A+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93UHJvZ3Jlc3MgJiYgIWVkaXRpbmdcIj5cbiAgICA8cCBjbGFzcz1cImNxYS1hbWMtc3VtbWFyeVwiPnt7IGNvbXB1dGVkU3VtbWFyeVRleHQgfX08L3A+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1hbWMtcHJvZ3Jlc3MtdHJhY2tcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtYW1jLXByb2dyZXNzLWZpbGxcIiBbc3R5bGUud2lkdGhdPVwicHJvZ3Jlc3NXaWR0aFwiPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxwIGNsYXNzPVwiY3FhLWFtYy1wZXJjZW50XCI+e3sgY29tcHV0ZWRQZXJjZW50VGV4dCB9fTwvcD5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBIaW50OiBubyBtb2NrIGRhdGEgeWV0IOKAlCBudWRnZSB0aGUgdXNlciB0byBydW4gdGhlIHRlc3QgZmlyc3QgLS0+XG4gIDxwICpuZ0lmPVwiIXNob3dQcm9ncmVzcyAmJiAhZWRpdGluZ1wiIGNsYXNzPVwiY3FhLWFtYy1uby1kYXRhLWhpbnRcIj57eyBub0RhdGFIaW50IH19PC9wPlxuXG4gIDxidXR0b25cbiAgICAqbmdJZj1cIiFlZGl0aW5nXCJcbiAgICBbZGlzYWJsZWRdPVwiIXNob3dQcm9ncmVzc1wiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgY2xhc3M9XCJjcWEtYW1jLWNvbmZpZ3VyZS1idG5cIlxuICAgIChjbGljayk9XCJvbkNvbmZpZ3VyZUNsaWNrKClcIj5cbiAgICB7eyBjb25maWd1cmVCdXR0b25MYWJlbCB9fVxuICA8L2J1dHRvbj5cbjwvZGl2PlxuIl19
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLW1vY2tpbmctY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Rlc3QtY2FzZS1kZXRhaWxzL2FwaS1tb2NraW5nLWNhcmQvYXBpLW1vY2tpbmctY2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Rlc3QtY2FzZS1kZXRhaWxzL2FwaS1tb2NraW5nLWNhcmQvYXBpLW1vY2tpbmctY2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBWWhHOzs7Ozs7Ozs7OztHQVdHO0FBVUgsTUFBTSxPQUFPLHVCQUF1QjtJQVRwQztRQVVXLFVBQUssR0FBVyxhQUFhLENBQUM7UUFDOUIsZ0JBQVcsR0FBVyxnQkFBZ0IsQ0FBQztRQUV2QyxpQkFBWSxHQUFXLHdCQUF3QixDQUFDO1FBQ2hELGdCQUFXLEdBQVcscUVBQXFFLENBQUM7UUFDNUYsZUFBVSxHQUFXLCtCQUErQixDQUFDO1FBQ3JELGNBQVMsR0FBVyw4REFBOEQsQ0FBQztRQUU1Rix5RkFBeUY7UUFDaEYsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDdEMsa0dBQWtHO1FBQ3pGLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFFM0Isb0JBQWUsR0FBVyxDQUFDLENBQUM7UUFDNUIsbUJBQWMsR0FBVyxDQUFDLENBQUM7UUFDM0Isb0JBQWUsR0FBVyxDQUFDLENBQUM7UUFLNUIseUJBQW9CLEdBQVcscUJBQXFCLENBQUM7UUFDckQsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUVsQzs7OztXQUlHO1FBQ00saUJBQVksR0FBWSxLQUFLLENBQUM7UUFFdkMsMkZBQTJGO1FBQ2xGLGVBQVUsR0FBVyxvREFBb0QsQ0FBQztRQUV6RSxjQUFT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LFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBT0csWUFBWTtzQkFBcEIsS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVJLFNBQVM7c0JBQWxCLE1BQU07Z0JBRUcsaUJBQWlCO3NCQUExQixNQUFNO2dCQUVHLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBMZWdhY3kgdG9nZ2xlLWNoYW5nZSBwYXlsb2FkIGtlcHQgZm9yIGJhY2stY29tcGF0IHdpdGggY29uc3VtZXJzIHRoYXQgaGF2ZW4ndCBtaWdyYXRlZFxuICogdG8gYHJlc3RvcmVNb2NrQ2hhbmdlYCB5ZXQuIGBrZXlgIGlkZW50aWZpZXMgd2hpY2ggcm93IHdhcyB0b2dnbGVkOyBgdmFsdWVgIGlzIHRoZSBuZXdcbiAqIGNoZWNrZWQgc3RhdGUgb2YgdGhhdCByb3cuIE5ldyBjb2RlIHNob3VsZCBsaXN0ZW4gdG8gYHJlc3RvcmVNb2NrQ2hhbmdlYCBpbnN0ZWFkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwaU1vY2tpbmdDYXJkVG9nZ2xlQ2hhbmdlIHtcbiAga2V5OiAnY2FwdHVyZUFwaVJlc3BvbnNlcycgfCAncmVuZXdBcGlSZXNwb25zZXMnO1xuICB2YWx1ZTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBEdWFsLW1vZGUgY2FyZCBzdW1tYXJpc2luZyB0aGUgQVBJIG1vY2tpbmcgY29uZmlndXJhdGlvbiBvZiBhIHRlc3QgY2FzZS5cbiAqXG4gKiBUaGUgY2FyZCBzdXJmYWNlcyBUV08gaW5kZXBlbmRlbnQgZmxhZ3Mg4oCUIGByZXN0b3JlTW9ja2AgKHRoZSBcIlVzZSBtb2NrIEFQSSByZXNwb25zZXNcIiByb3cpXG4gKiBhbmQgYHN0b3JlTW9ja2AgKHRoZSBcIlJlbmV3IGFuZCBzdG9yZSBBUEkgcmVzcG9uc2VzXCIgcm93KS4gQm90aCBjYW4gYmUgb2ZmIHNpbXVsdGFuZW91c2x5XG4gKiAobm8gbW9ja2luZyBvbiB0aGUgbmV4dCBydW4pOyB0dXJuaW5nIGVpdGhlciBvbmUgb24gZm9yY2VzIHRoZSBvdGhlciBvZmYgKHRoZXkncmUgbXV0dWFsbHlcbiAqIGV4Y2x1c2l2ZSBpbiB0aGUgb24tc3RhdGUpLiBCb3RoIGNhbiBuZXZlciBiZSBvbiBhdCB0aGUgc2FtZSB0aW1lLlxuICpcbiAqIEluIHJlYWQtb25seSBtb2RlIGVhY2ggcm93IHNob3dzIE9uL09mZiBkZXJpdmVkIGZyb20gaXRzIG93biBmbGFnLiBJbiBlZGl0IG1vZGUgZWFjaCByb3dcbiAqIHJlbmRlcnMgYSB0b2dnbGU7IHRoZSBjYXJkIGVtaXRzIGByZXN0b3JlTW9ja0NoYW5nZWAgYW5kIGBzdG9yZU1vY2tDaGFuZ2VgIHdoZW5ldmVyIGEgdmFsdWVcbiAqIGFjdHVhbGx5IGNoYW5nZXMgc28gdGhlIHBhcmVudCBjYW4gcGVyc2lzdCB0aGVtLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtYXBpLW1vY2tpbmctY2FyZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hcGktbW9ja2luZy1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgLy8gU3R5bGVzIGxpdmUgaW4gc3JjL2xpYi9zdHlsZXMvdGFpbHdpbmQuY3NzICh0aGUgbGliIHNoaXBzIGEgc2luZ2xlIGNvbXBpbGVkIHN0eWxlc2hlZXQpO1xuICAvLyBwZXItY29tcG9uZW50IC5zY3NzIGZpbGVzIGFyZSBub3Qgc3VwcG9ydGVkIGluIHRoZSBuZy1wYWNrYWdyIGJ1aWxkIGZvciB0aGlzIGxpYi5cbiAgc3R5bGVVcmxzOiBbXSxcbiAgaG9zdDogeyBjbGFzczogJ2NxYS11aS1yb290JyB9LFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQXBpTW9ja2luZ0NhcmRDb21wb25lbnQge1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gJ0FQSSBNb2NraW5nJztcbiAgQElucHV0KCkgc3RhdHVzTGFiZWw6IHN0cmluZyA9ICdOb3QgY29uZmlndXJlZCc7XG5cbiAgQElucHV0KCkgY2FwdHVyZUxhYmVsOiBzdHJpbmcgPSAnVXNlIG1vY2sgQVBJIHJlc3BvbnNlcyc7XG4gIEBJbnB1dCgpIGNhcHR1cmVIaW50OiBzdHJpbmcgPSAnVXNlcyBzdG9yZWQgcmVzcG9uc2VzIG9uIG5leHQgcnVuLiBUdXJuIG9uIGFmdGVyIGNhcHR1cmUgY29tcGxldGVzLic7XG4gIEBJbnB1dCgpIHJlbmV3TGFiZWw6IHN0cmluZyA9ICdSZW5ldyBhbmQgc3RvcmUgQVBJIHJlc3BvbnNlcyc7XG4gIEBJbnB1dCgpIHJlbmV3SGludDogc3RyaW5nID0gJ1JlLWNhcHR1cmVzIGZyZXNoIHJlc3BvbnNlcyBvbiBuZXh0IHJ1bi4gVHVybnMgb2ZmIFVzZSBtb2NrLic7XG5cbiAgLyoqIFwiVXNlIG1vY2sgQVBJIHJlc3BvbnNlc1wiIHJvdyBzdGF0ZS4gTXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggYHN0b3JlTW9ja2Agd2hlbiB0cnVlLiAqL1xuICBASW5wdXQoKSByZXN0b3JlTW9jazogYm9vbGVhbiA9IGZhbHNlO1xuICAvKiogXCJSZW5ldyBhbmQgc3RvcmUgQVBJIHJlc3BvbnNlc1wiIHJvdyBzdGF0ZS4gTXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggYHJlc3RvcmVNb2NrYCB3aGVuIHRydWUuICovXG4gIEBJbnB1dCgpIHN0b3JlTW9jazogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIG1vY2tlZEFwaXNDb3VudDogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgdG90YWxBcGlzQ291bnQ6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIHByb2dyZXNzUGVyY2VudDogbnVtYmVyID0gMDtcblxuICBASW5wdXQoKSBzdW1tYXJ5VGV4dD86IHN0cmluZztcbiAgQElucHV0KCkgcGVyY2VudFRleHQ/OiBzdHJpbmc7XG5cbiAgQElucHV0KCkgY29uZmlndXJlQnV0dG9uTGFiZWw6IHN0cmluZyA9ICdDb25maWd1cmUgTW9jayBBUElzJztcbiAgQElucHV0KCkgZWRpdGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyB3aGV0aGVyIHRoZSBcIk1vY2tlZCBYIG9mIFkgLyBwcm9ncmVzcyBiYXIgLyBwZXJjZW50XCIgYmxvY2sgaXMgc2hvd24uXG4gICAqIEhpZGRlbiB3aGVuIHRoZSB0ZXN0IGNhc2UgaGFzIG5vIGNhcHR1cmVkIG1vY2sgc3VtbWFyeSB5ZXQgKGFuZCBhbHdheXMgaGlkZGVuIGluXG4gICAqIGVkaXQgbW9kZSByZWdhcmRsZXNzIG9mIHRoaXMgZmxhZykuXG4gICAqL1xuICBASW5wdXQoKSBzaG93UHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogSGludCBzaG93biBpbiByZWFkLW9ubHkgbW9kZSB3aGVuIG5vIG1vY2sgZGF0YSBleGlzdHMgeWV0IChgc2hvd1Byb2dyZXNzYCBpcyBmYWxzZSkuICovXG4gIEBJbnB1dCgpIG5vRGF0YUhpbnQ6IHN0cmluZyA9ICdSdW4gdGhpcyB0ZXN0IG9uY2UgdG8gY2FwdHVyZSBBUEkgcmVzcG9uc2VzIGZpcnN0Lic7XG5cbiAgQE91dHB1dCgpIGNvbmZpZ3VyZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgLyoqIEVtaXR0ZWQgd2hlbmV2ZXIgYHJlc3RvcmVNb2NrYCBjaGFuZ2VzIChVc2UtbW9jayByb3cgdG9nZ2xlZCkuICovXG4gIEBPdXRwdXQoKSByZXN0b3JlTW9ja0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgLyoqIEVtaXR0ZWQgd2hlbmV2ZXIgYHN0b3JlTW9ja2AgY2hhbmdlcyAoUmVuZXctYW5kLXN0b3JlIHJvdyB0b2dnbGVkKS4gKi9cbiAgQE91dHB1dCgpIHN0b3JlTW9ja0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAvLyBQZXItcm93IGRlcml2ZWQgZGlzcGxheSBzdGF0ZSDigJQgZWFjaCByb3cgcmVmbGVjdHMgaXRzIG93biBmbGFnIG5vdy5cbiAgZ2V0IGNhcHR1cmVFbmFibGVkKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5yZXN0b3JlTW9jazsgfVxuICBnZXQgcmVuZXdFbmFibGVkKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5zdG9yZU1vY2s7IH1cbiAgZ2V0IGNhcHR1cmVWYWx1ZVRleHQoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMucmVzdG9yZU1vY2sgPyAnT24nIDogJ09mZic7IH1cbiAgZ2V0IHJlbmV3VmFsdWVUZXh0KCk6IHN0cmluZyB7IHJldHVybiB0aGlzLnN0b3JlTW9jayA/ICdPbicgOiAnT2ZmJzsgfVxuXG4gIGdldCBjb21wdXRlZFN1bW1hcnlUZXh0KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuc3VtbWFyeVRleHQpIHJldHVybiB0aGlzLnN1bW1hcnlUZXh0O1xuICAgIHJldHVybiBgJHt0aGlzLm1vY2tlZEFwaXNDb3VudH0gb2YgJHt0aGlzLnRvdGFsQXBpc0NvdW50fSBBUElzIHNldCB0byBtb2NrYDtcbiAgfVxuXG4gIGdldCBjb21wdXRlZFBlcmNlbnRUZXh0KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucGVyY2VudFRleHQpIHJldHVybiB0aGlzLnBlcmNlbnRUZXh0O1xuICAgIHJldHVybiBgJHt0aGlzLnByb2dyZXNzUGVyY2VudH0lIG9mIGNhbGxzIHdpbGwgdXNlIG1vY2sgcmVzcG9uc2VzYDtcbiAgfVxuXG4gIGdldCBwcm9ncmVzc1dpZHRoKCk6IHN0cmluZyB7XG4gICAgY29uc3QgY2xhbXBlZCA9IE1hdGgubWF4KDAsIE1hdGgubWluKDEwMCwgTnVtYmVyKHRoaXMucHJvZ3Jlc3NQZXJjZW50KSB8fCAwKSk7XG4gICAgcmV0dXJuIGAke2NsYW1wZWR9JWA7XG4gIH1cblxuICBvbkNvbmZpZ3VyZUNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlndXJlLmVtaXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBcIlVzZSBtb2NrIEFQSSByZXNwb25zZXNcIiB0b2dnbGUuIFR1cm5pbmcgaXQgb24gZm9yY2VzIGBzdG9yZU1vY2tgIG9mZiAobXV0dWFsIGV4Y2x1c2l2aXR5KTtcbiAgICogdHVybmluZyBpdCBvZmYgbGVhdmVzIHRoZSBvdGhlciByb3cgYWxvbmUuXG4gICAqL1xuICBvbkNhcHR1cmVUb2dnbGUodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAodmFsdWUgJiYgdGhpcy5zdG9yZU1vY2spIHRoaXMuc2V0U3RvcmVNb2NrKGZhbHNlKTtcbiAgICB0aGlzLnNldFJlc3RvcmVNb2NrKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBcIlJlbmV3IGFuZCBzdG9yZSBBUEkgcmVzcG9uc2VzXCIgdG9nZ2xlLiBUdXJuaW5nIGl0IG9uIGZvcmNlcyBgcmVzdG9yZU1vY2tgIG9mZjsgdHVybmluZ1xuICAgKiBpdCBvZmYgbGVhdmVzIHRoZSBvdGhlciByb3cgYWxvbmUuXG4gICAqL1xuICBvblJlbmV3VG9nZ2xlKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHZhbHVlICYmIHRoaXMucmVzdG9yZU1vY2spIHRoaXMuc2V0UmVzdG9yZU1vY2soZmFsc2UpO1xuICAgIHRoaXMuc2V0U3RvcmVNb2NrKHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0UmVzdG9yZU1vY2sobmV4dDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlc3RvcmVNb2NrID09PSBuZXh0KSByZXR1cm47XG4gICAgdGhpcy5yZXN0b3JlTW9jayA9IG5leHQ7XG4gICAgdGhpcy5yZXN0b3JlTW9ja0NoYW5nZS5lbWl0KG5leHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRTdG9yZU1vY2sobmV4dDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0b3JlTW9jayA9PT0gbmV4dCkgcmV0dXJuO1xuICAgIHRoaXMuc3RvcmVNb2NrID0gbmV4dDtcbiAgICB0aGlzLnN0b3JlTW9ja0NoYW5nZS5lbWl0KG5leHQpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY3FhLWFtYy1jYXJkXCI+XG4gIDxkaXYgY2xhc3M9XCJjcWEtYW1jLWhlYWRlclwiPlxuICAgIDxzcGFuIGNsYXNzPVwiY3FhLWFtYy10aXRsZVwiPnt7IHRpdGxlIH19PC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPVwiY3FhLWFtYy1zdGF0dXNcIiAqbmdJZj1cIiFzaG93UHJvZ3Jlc3MgJiZzdGF0dXNMYWJlbFwiPnt7IHN0YXR1c0xhYmVsIH19PC9zcGFuPlxuICA8L2Rpdj5cblxuICA8IS0tIFJlYWQtb25seSByb3dzIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWVkaXRpbmdcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWFtYy1yb3dcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLWFtYy1sYWJlbFwiPnt7IGNhcHR1cmVMYWJlbCB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLWFtYy12YWx1ZVwiPnt7IGNhcHR1cmVWYWx1ZVRleHQgfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1hbWMtcm93XCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImNxYS1hbWMtbGFiZWxcIj57eyByZW5ld0xhYmVsIH19PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtYW1jLXZhbHVlXCI+e3sgcmVuZXdWYWx1ZVRleHQgfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gRWRpdCByb3dzOiB0b2dnbGVzIHdpdGggaGludCB0ZXh0IC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZWRpdGluZ1wiPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtYW1jLWVkaXQtYmxvY2tcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtYW1jLXJvdyBjcWEtYW1jLXJvdy0tZWRpdFwiPlxuICAgICAgICA8Y3FhLWN1c3RvbS10b2dnbGVcbiAgICAgICAgICBbY2hlY2tlZF09XCJjYXB0dXJlRW5hYmxlZFwiXG4gICAgICAgICAgW2FyaWFMYWJlbF09XCJjYXB0dXJlTGFiZWxcIlxuICAgICAgICAgIChjaGVja2VkQ2hhbmdlKT1cIm9uQ2FwdHVyZVRvZ2dsZSgkZXZlbnQpXCI+XG4gICAgICAgIDwvY3FhLWN1c3RvbS10b2dnbGU+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLWFtYy1sYWJlbFwiPnt7IGNhcHR1cmVMYWJlbCB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHAgKm5nSWY9XCJjYXB0dXJlSGludFwiIGNsYXNzPVwiY3FhLWFtYy1lZGl0LWhpbnRcIj57eyBjYXB0dXJlSGludCB9fTwvcD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWFtYy1lZGl0LWJsb2NrXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWFtYy1yb3cgY3FhLWFtYy1yb3ctLWVkaXRcIj5cbiAgICAgICAgPGNxYS1jdXN0b20tdG9nZ2xlXG4gICAgICAgICAgW2NoZWNrZWRdPVwicmVuZXdFbmFibGVkXCJcbiAgICAgICAgICBbYXJpYUxhYmVsXT1cInJlbmV3TGFiZWxcIlxuICAgICAgICAgIChjaGVja2VkQ2hhbmdlKT1cIm9uUmVuZXdUb2dnbGUoJGV2ZW50KVwiPlxuICAgICAgICA8L2NxYS1jdXN0b20tdG9nZ2xlPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1hbWMtbGFiZWxcIj57eyByZW5ld0xhYmVsIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8cCAqbmdJZj1cInJlbmV3SGludFwiIGNsYXNzPVwiY3FhLWFtYy1lZGl0LWhpbnRcIj57eyByZW5ld0hpbnQgfX08L3A+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93UHJvZ3Jlc3MgJiYgIWVkaXRpbmdcIj5cbiAgICA8cCBjbGFzcz1cImNxYS1hbWMtc3VtbWFyeVwiPnt7IGNvbXB1dGVkU3VtbWFyeVRleHQgfX08L3A+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1hbWMtcHJvZ3Jlc3MtdHJhY2tcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtYW1jLXByb2dyZXNzLWZpbGxcIiBbc3R5bGUud2lkdGhdPVwicHJvZ3Jlc3NXaWR0aFwiPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxwIGNsYXNzPVwiY3FhLWFtYy1wZXJjZW50XCI+e3sgY29tcHV0ZWRQZXJjZW50VGV4dCB9fTwvcD5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBIaW50OiBubyBtb2NrIGRhdGEgeWV0IOKAlCBudWRnZSB0aGUgdXNlciB0byBydW4gdGhlIHRlc3QgZmlyc3QgLS0+XG4gIDxwICpuZ0lmPVwiIXNob3dQcm9ncmVzcyAmJiAhZWRpdGluZ1wiIGNsYXNzPVwiY3FhLWFtYy1uby1kYXRhLWhpbnRcIj57eyBub0RhdGFIaW50IH19PC9wPlxuXG4gIDwhLS0gQ29uZmlndXJlIGlzIG9ubHkgbWVhbmluZ2Z1bCB3aGVuIFwiVXNlIG1vY2sgQVBJIHJlc3BvbnNlc1wiIGlzIE9OIOKAlCB3aXRob3V0IGl0LCB0aGVyZSdzXG4gICAgICAgbm8gYWN0aXZlIG1vY2sgbW9kZSB0byBjb25maWd1cmUuIFRoZSBidXR0b24gc3RheXMgZGlzYWJsZWQgd2hlbiByZXN0b3JlTW9jayBpcyBPRkZcbiAgICAgICAoaW5kZXBlbmRlbnQgb2YgdGhlIHJlbmV3L3N0b3JlIHRvZ2dsZSksIHBlciB0aGUgc3BlYy4gLS0+XG4gIDxidXR0b25cbiAgICBbZGlzYWJsZWRdPVwiIXNob3dQcm9ncmVzcyB8fCAhcmVzdG9yZU1vY2tcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIGNsYXNzPVwiY3FhLWFtYy1jb25maWd1cmUtYnRuXCJcbiAgICAoY2xpY2spPVwib25Db25maWd1cmVDbGljaygpXCI+XG4gICAge3sgY29uZmlndXJlQnV0dG9uTGFiZWwgfX1cbiAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
|