@rangertechnologies/ngnxt 2.1.124 → 2.1.126
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/esm2022/environments/version.mjs +5 -5
- package/esm2022/lib/components/custom-calendar/custom-calendar.component.mjs +2 -2
- package/esm2022/lib/components/custom-dropdown/custom-dropdown.component.mjs +8 -6
- package/esm2022/lib/components/custom-table/custom-table.component.mjs +4 -2
- package/esm2022/lib/components/datatable/datatable.component.mjs +13 -12
- package/esm2022/lib/components/search-box/search-box.component.mjs +1 -1
- package/esm2022/lib/pages/booklet/booklet.component.mjs +52 -29
- package/esm2022/lib/pages/builder/element/element.component.mjs +58 -21
- package/esm2022/lib/pages/builder/form/form.component.mjs +2 -2
- package/esm2022/lib/pages/builder/menu/menu.component.mjs +2 -2
- package/esm2022/lib/pages/builder/properties/properties.component.mjs +329 -163
- package/esm2022/lib/pages/questionbook/questionbook.component.mjs +30 -10
- package/esm2022/lib/pages/questionnaire/questionnaire.component.mjs +1 -1
- package/esm2022/lib/services/form-builder.service.mjs +39 -5
- package/esm2022/lib/services/storage.service.mjs +2 -2
- package/fesm2022/rangertechnologies-ngnxt.mjs +529 -247
- package/fesm2022/rangertechnologies-ngnxt.mjs.map +1 -1
- package/lib/components/custom-dropdown/custom-dropdown.component.d.ts +2 -3
- package/lib/components/datatable/datatable.component.d.ts +3 -2
- package/lib/pages/booklet/booklet.component.d.ts +7 -2
- package/lib/pages/builder/element/element.component.d.ts +5 -2
- package/lib/pages/builder/properties/properties.component.d.ts +304 -188
- package/lib/pages/questionbook/questionbook.component.d.ts +2 -1
- package/lib/services/form-builder.service.d.ts +9 -19
- package/package.json +1 -1
- package/rangertechnologies-ngnxt-2.1.126.tgz +0 -0
- package/src/lib/style.css +13 -5
- package/rangertechnologies-ngnxt-2.1.124.tgz +0 -0
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
/* tslint:disable */
|
|
3
3
|
export const VERSION = {
|
|
4
4
|
"dirty": true,
|
|
5
|
-
"raw": "
|
|
6
|
-
"hash": "
|
|
5
|
+
"raw": "05a52cb-dirty",
|
|
6
|
+
"hash": "05a52cb",
|
|
7
7
|
"distance": null,
|
|
8
8
|
"tag": null,
|
|
9
9
|
"semver": null,
|
|
10
|
-
"suffix": "
|
|
10
|
+
"suffix": "05a52cb-dirty",
|
|
11
11
|
"semverString": null,
|
|
12
|
-
"version": "2.1.
|
|
12
|
+
"version": "2.1.126"
|
|
13
13
|
};
|
|
14
14
|
/* tslint:enable */
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2Vudmlyb25tZW50cy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJFQUEyRTtBQUMzRSxvQkFBb0I7QUFDcEIsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHO0lBQ25CLE9BQU8sRUFBRSxJQUFJO0lBQ2IsS0FBSyxFQUFFLGVBQWU7SUFDdEIsTUFBTSxFQUFFLFNBQVM7SUFDakIsVUFBVSxFQUFFLElBQUk7SUFDaEIsS0FBSyxFQUFFLElBQUk7SUFDWCxRQUFRLEVBQUUsSUFBSTtJQUNkLFFBQVEsRUFBRSxlQUFlO0lBQ3pCLGNBQWMsRUFBRSxJQUFJO0lBQ3BCLFNBQVMsRUFBRSxTQUFTO0NBQ3ZCLENBQUM7QUFDRixtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJTVBPUlRBTlQ6IFRISVMgRklMRSBJUyBBVVRPIEdFTkVSQVRFRCEgRE8gTk9UIE1BTlVBTExZIEVESVQgT1IgQ0hFQ0tJTiFcbi8qIHRzbGludDpkaXNhYmxlICovXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IHtcbiAgICBcImRpcnR5XCI6IHRydWUsXG4gICAgXCJyYXdcIjogXCIwNWE1MmNiLWRpcnR5XCIsXG4gICAgXCJoYXNoXCI6IFwiMDVhNTJjYlwiLFxuICAgIFwiZGlzdGFuY2VcIjogbnVsbCxcbiAgICBcInRhZ1wiOiBudWxsLFxuICAgIFwic2VtdmVyXCI6IG51bGwsXG4gICAgXCJzdWZmaXhcIjogXCIwNWE1MmNiLWRpcnR5XCIsXG4gICAgXCJzZW12ZXJTdHJpbmdcIjogbnVsbCxcbiAgICBcInZlcnNpb25cIjogXCIyLjEuMTI2XCJcbn07XG4vKiB0c2xpbnQ6ZW5hYmxlICovXG4iXX0=
|
|
@@ -63,7 +63,7 @@ export class CustomCalendarComponent {
|
|
|
63
63
|
processQuestion() {
|
|
64
64
|
// SKS20MAR25 check if question fieldsmeta is string
|
|
65
65
|
this.entries = typeof this.question['fieldsMeta'] === 'object' ? this.question['fieldsMeta'] || [{}] : JSON.parse(this.question['fieldsMeta']);
|
|
66
|
-
this.qbRefrenceBook = JSON.parse(this.question['qbReferenceQuestions']);
|
|
66
|
+
this.qbRefrenceBook = typeof this.question['qbReferenceQuestions'] === 'object' ? this.question['qbReferenceQuestions'] : JSON.parse(this.question['qbReferenceQuestions']);
|
|
67
67
|
let title = this.qbRefrenceBook?.questionbook?.title;
|
|
68
68
|
this.modalTitle = title;
|
|
69
69
|
this.referenceQuestions = [];
|
|
@@ -365,4 +365,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
365
365
|
}], nxtId: [{
|
|
366
366
|
type: Input
|
|
367
367
|
}] } });
|
|
368
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWNhbGVuZGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9jb21wb25lbnRzL2N1c3RvbS1jYWxlbmRhci9jdXN0b20tY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvY3VzdG9tLWNhbGVuZGFyL2N1c3RvbS1jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUE0QixNQUFNLGVBQWUsQ0FBQzs7OztBQW1CckgsTUFBTSxPQUFPLHVCQUF1QjtJQWdDYjtJQS9CWCxhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUNsRCw4QkFBOEI7SUFDcEIsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDdkMsU0FBUyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDcEMsVUFBVSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDdEMsU0FBUyxHQUFVLEVBQUUsQ0FBQztJQUN0QixRQUFRLENBQVU7SUFDbEIsS0FBSyxDQUFTO0lBQ3ZCLDJGQUEyRjtJQUMzRixPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ2Isa0JBQWtCLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLGNBQWMsQ0FBSztJQUNuQixnQkFBZ0IsR0FBRyxFQUFFLENBQUM7SUFDdEIsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNkLFdBQVcsR0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQy9CLFlBQVksR0FBa0IsRUFBRSxDQUFDO0lBQ2pDLFVBQVUsR0FBYSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsUUFBUSxF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QiwwREFBMEQ7SUFDMUQsNEVBQTRFO0lBQzVFLHdCQUF3QjtJQUN4QixpREFBaUQ7SUFDakQsNkNBQTZDO0lBQzdDLGVBQWU7SUFDZiwwREFBMEQ7SUFDMUQsMENBQTBDO0lBQzFDLFFBQVE7SUFDUiwwQ0FBMEM7SUFDMUMsTUFBTTtJQUVQLDhCQUE4QjtJQUM3QixVQUFVO1FBQ1IsT0FBTyxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxZQUFZLENBQUMsVUFBZTtRQUMxQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELGdCQUFnQixDQUFDLFlBQW1CO1FBQ2xDLElBQUksV0FBVyxHQUFHLFlBQVksRUFBRSxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7d0dBM1dZLHVCQUF1Qjs0RkFBdkIsdUJBQXVCLGtRQ25CcEMsODJJQXFGdUI7OzRGRGxFVix1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0UscUJBQXFCO2tGQUtyQixhQUFhO3NCQUF0QixNQUFNO2dCQUVHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNFLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFF1ZXN0aW9uIH0gZnJvbSAnLi4vLi4vd3JhcHBlcic7XG4vL2ltcG9ydCB7IFF1ZXN0aW9uYm9va0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BhZ2VzL3F1ZXN0aW9uYm9vay9xdWVzdGlvbmJvb2suY29tcG9uZW50Jztcbi8vaW1wb3J0IHsgQ29tcG9uZW50aG9zdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvY29tcG9uZW50aG9zdC9jb21wb25lbnRob3N0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDaGFuZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2hhbmdlLnNlcnZpY2UnO1xuaW50ZXJmYWNlIENhbGVuZGFyRGF5IHtcbiAgZGF0ZTogRGF0ZTtcbiAgZXZlbnRzOiBhbnlbXTtcbiAgaXNDdXJyZW50TW9udGg6IGJvb2xlYW47XG4gIGlzUGFzdDogYm9vbGVhbjtcbiAgaXNUb2RheTogYm9vbGVhbjtcbiAgaXNGdXR1cmU6IGJvb2xlYW47XG4gIGlzU2VsZWN0ZWQ/OiBib29sZWFuO1xufVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWN1c3RvbS1jYWxlbmRhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jdXN0b20tY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jdXN0b20tY2FsZW5kYXIuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBDdXN0b21DYWxlbmRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBPdXRwdXQoKSBldmVudFNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIC8vIFZEIDA2U2VwMjQgY2FsZW5kYXIgY2hhbmdlc1xuICBAT3V0cHV0KCkgZGF0ZVNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBvcGVuTW9kYWwgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGNsb3NlTW9kYWwgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQElucHV0KCkgYWxsRXZlbnRzOiBhbnlbXSA9IFtdOyBcbiAgQElucHV0KCkgcXVlc3Rpb246IFF1ZXN0aW9uXG4gIEBJbnB1dCgpIG54dElkOiBzdHJpbmc7XG4gIC8vQFZpZXdDaGlsZChDb21wb25lbnRob3N0RGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KSBkeW5hbWljSG9zdDogQ29tcG9uZW50aG9zdERpcmVjdGl2ZTtcbiAgZW50cmllcyA9IFtdO1xuICByZWZlcmVuY2VRdWVzdGlvbnMgPSBbXTtcbiAgcWJSZWZyZW5jZUJvb2s6YW55O1xuICBjYWxlbmRhclF1ZXN0aW9uID0gW107XG4gIGNhbGVuZGFyID0ge307XG4gIGN1cnJlbnREYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgY2FsZW5kYXJEYXlzOiBDYWxlbmRhckRheVtdID0gW107XG4gIGRheXNPZldlZWs6IHN0cmluZ1tdID0gWydTdW5kYXknLCAnTW9uZGF5JywgJ1R1ZXNkYXknLCAnV2VkbmVzZGF5JywgJ1RodXJzZGF5JywgJ0ZyaWRheScsICdTYXR1cmRheSddO1xuICBuZXdFdmVudFRpdGxlOiBzdHJpbmcgPSAnJztcbiAgbmV3RXZlbnRUaW1lOiBzdHJpbmcgPSAnJztcbiAgbmV3RGVzY3JpcHRpb246IHN0cmluZyA9ICcnO1xuICBuZXdMaW5rOiBzdHJpbmcgPSAnJztcbiAgc2VsZWN0ZWREYXk6IENhbGVuZGFyRGF5IHwgbnVsbCA9IG51bGw7XG4gIGlzTW9kYWxPcGVuID0gZmFsc2U7XG4gIG1vZGFsVGl0bGUgPSAnQ3VzdG9tIE1vZGFsJztcbiAgbW9kYWxTaXplID0gJ2xhcmdlJztcbiAgc2F2ZUJ1dHRvblZhbHVlID0gJ1NhdmUnO1xuICBtb2RhbEZvb3RlciA9IHRydWU7XG4gIGVkaXRpbmdFdmVudElkOiBudW1iZXI7XG4gIGVkaXRpbmdFbnRyeUdyb3VwOiBhbnk7XG4gIHNob3dBcHBvaW5tZW50U2VjdGlvbjogYm9vbGVhbiA9IHRydWU7XG4gIHN1YnNjcmlwdGlvbjogYW55O1xuICBjb25zdHJ1Y3RvciggcHJpdmF0ZSBjaGFuZ2VTZXJ2aWNlOiBDaGFuZ2VTZXJ2aWNlKSB7IH1cbiAgbmdPbkluaXQoKSB7XG4gICAgIGlmKHRoaXMucXVlc3Rpb24/LmlucHV0KXtcbiAgICAgIHRoaXMuYWxsRXZlbnRzID0gdGhpcy5xdWVzdGlvbi5pbnB1dDtcbiAgICAgfVxuICAgIHRoaXMucHJvY2Vzc1F1ZXN0aW9uKCk7XG4gICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLmNoYW5nZVNlcnZpY2UuY3VzdG9tQ2hhbmdlJC5zdWJzY3JpYmUoXG4gICAgICAoY2hhbmdlVmFsdWUpID0+IHtcbiAgICAgICAgICBpZihjaGFuZ2VWYWx1ZSA9PSAnY2FsZW5kYXItbW9kYWwtc2F2ZScpIHtcbiAgICAgICAgICAgIHRoaXMub25TYXZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmKGNoYW5nZVZhbHVlID09ICdkYXRhQmluZCcpIHtcbiAgICAgICAgICAgIGlmKHRoaXMucXVlc3Rpb24/LmlucHV0KXtcbiAgICAgICAgICAgICAgdGhpcy5hbGxFdmVudHMgPSB0aGlzLnF1ZXN0aW9uLmlucHV0O1xuICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc1F1ZXN0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIoKTtcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgIC8vIHRoaXMuZGF0ZVNlbGVjdGVkLmVtaXQodGhpcy5jYWxlbmRhcik7XG4gICAgLy90aGlzLmV2ZW50U2VsZWN0ZWQuZW1pdCh0aGlzLmFsbEV2ZW50cyk7XG4gIH1cbiAgLy8gUlMgMDlERUMyNCBDaGFuZ2VkIGtleXNcbiAgcHJvY2Vzc1F1ZXN0aW9uKCl7XG4gICAgLy8gU0tTMjBNQVIyNSBjaGVjayBpZiBxdWVzdGlvbiBmaWVsZHNtZXRhIGlzIHN0cmluZ1xuICAgIHRoaXMuZW50cmllcyA9ICB0eXBlb2YgdGhpcy5xdWVzdGlvblsnZmllbGRzTWV0YSddID09PSAnb2JqZWN0JyAgPyAgdGhpcy5xdWVzdGlvblsnZmllbGRzTWV0YSddIHx8IFt7fV0gOiBKU09OLnBhcnNlKCB0aGlzLnF1ZXN0aW9uWydmaWVsZHNNZXRhJ10pIDtcbiAgICB0aGlzLnFiUmVmcmVuY2VCb29rID0gSlNPTi5wYXJzZSh0aGlzLnF1ZXN0aW9uWydxYlJlZmVyZW5jZVF1ZXN0aW9ucyddKTtcbiAgICBsZXQgdGl0bGUgPSB0aGlzLnFiUmVmcmVuY2VCb29rPy5xdWVzdGlvbmJvb2s/LnRpdGxlO1xuICAgIHRoaXMubW9kYWxUaXRsZSA9IHRpdGxlO1xuICAgIHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zID0gW107XG4gICAgaWYodGhpcy5lbnRyaWVzLmxlbmd0aCA+IDApe1xuICAgICAgIHRoaXMuZW50cmllcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICBpZihlbGVtZW50LnF1ZXN0aW9uUmVmZXJlbmNlKXtcbiAgICAgICAgICAgICBsZXQgcVJlZmVyZW5jZSA9IEpTT04ucGFyc2UoZWxlbWVudC5xdWVzdGlvblJlZmVyZW5jZSk7XG4gICAgICAgICAgICAgdGhpcy5yZWZlcmVuY2VRdWVzdGlvbnMucHVzaChxUmVmZXJlbmNlPy5xdWVzdGlvbik7XG4gICAgICAgICAgIH1cbiAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc29sZS5sb2coJ2VudHJpZXMtLT4nKTtcbiAgICBjb25zb2xlLmxvZygncXVlc3Rpb24tLT4nKTtcbiAgICBjb25zb2xlLmxvZyh0aGlzLmVudHJpZXMpO1xuICAgIGNvbnNvbGUubG9nKHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zKTtcbiAgfVxuICAgLy8gc3VuZGF5IGNvbW1lbnRcbiAgLy8gb3BlblF1ZXN0aW9uQm9va01vZGFsKCkge1xuICAvLyAgIGNvbnN0IHZpZXdDb250YWluZXJSZWYgPSB0aGlzLmR5bmFtaWNIb3N0LnZpZXdDb250YWluZXJSZWY7XG4gIC8vICAgdmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuICAvLyAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KFF1ZXN0aW9uYm9va0NvbXBvbmVudCk7XG4gIC8vICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnFiSXRlbSA9IHRoaXMucWJSZWZyZW5jZUJvb2s7XG4gIC8vICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnF1ZXN0aW9ucyA9IHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zO1xuICAvLyAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5oYW5kbGVRdWVzdGlvbi5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IHRoaXMuaGFuZGxlUXVlc3Rpb25FdmVudChldmVudCkpO1xuICAvLyB9XG5cbiAgZ2VuZXJhdGVDYWxlbmRhcigpIHtcbiAgICBjb25zdCB5ZWFyID0gdGhpcy5jdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIGNvbnN0IG1vbnRoID0gdGhpcy5jdXJyZW50RGF0ZS5nZXRNb250aCgpO1xuXG4gICAgY29uc3Qgc3RhcnRPZk1vbnRoID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEpO1xuICAgIGNvbnN0IGVuZE9mTW9udGggPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCArIDEsIDApO1xuXG4gICAgY29uc3Qgc3RhcnREYXlPZldlZWsgPSBzdGFydE9mTW9udGguZ2V0RGF5KCk7XG4gICAgY29uc3QgZW5kRGF5T2ZXZWVrID0gZW5kT2ZNb250aC5nZXREYXkoKTtcblxuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKHN0YXJ0T2ZNb250aCk7XG4gICAgc3RhcnREYXRlLnNldERhdGUoc3RhcnREYXRlLmdldERhdGUoKSAtIHN0YXJ0RGF5T2ZXZWVrKTtcblxuICAgIGNvbnN0IGVuZERhdGUgPSBuZXcgRGF0ZShlbmRPZk1vbnRoKTtcbiAgICBlbmREYXRlLnNldERhdGUoZW5kRGF0ZS5nZXREYXRlKCkgKyAoNiAtIGVuZERheU9mV2VlaykpO1xuXG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZShuZXcgRGF0ZSgpLnNldEhvdXJzKDAsIDAsIDAsIDApKTtcbiAgICBcbiAgICAgdGhpcy5jYWxlbmRhckRheXMgPSBbXTtcbiAgICAgIGZvciAobGV0IGQgPSBuZXcgRGF0ZShzdGFydERhdGUpOyBkIDw9IGVuZERhdGU7IGQuc2V0RGF0ZShkLmdldERhdGUoKSArIDEpKSB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShkKTtcbiAgICAgICAgdGhpcy5jYWxlbmRhckRheXMucHVzaCh7XG4gICAgICAgICAgZGF0ZTogZGF0ZSxcbiAgICAgICAgICBldmVudHM6IFtdLFxuICAgICAgICAgIGlzQ3VycmVudE1vbnRoOiBkLmdldE1vbnRoKCkgPT09IG1vbnRoLFxuICAgICAgICAgIGlzUGFzdDogZGF0ZSA8IHRvZGF5LFxuICAgICAgICAgIGlzVG9kYXk6IGRhdGUuZ2V0VGltZSgpID09PSB0b2RheS5nZXRUaW1lKCksXG4gICAgICAgICAgaXNGdXR1cmU6IGRhdGUgPiB0b2RheSxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAvLyBQb3B1bGF0ZSBjYWxlbmRhciB3aXRoIGV2ZW50cyBmcm9tIGFsbEV2ZW50cyBhcnJheVxuICAgIHRoaXMuY2FsZW5kYXJEYXlzLmZvckVhY2goZGF5ID0+IHtcbiAgICAgIGRheS5ldmVudHMgPSB0aGlzLmFsbEV2ZW50cz8uZmlsdGVyKGV2ZW50ID0+IGV2ZW50Py5kYXRlPy50b0RhdGVTdHJpbmcoKSA9PT0gZGF5LmRhdGUudG9EYXRlU3RyaW5nKCkpO1xuICAgIH0pO1xuICAgICAvLyBWRCAwNlNlcDI0IGNhbGVuZGFyIGNoYW5nZXNcbiAgICBsZXQgY2FsID0ge31cbiAgICBjYWxbJ3llYXInXSA9IHllYXI7XG4gICAgY2FsWydtb250aCddID0gbW9udGggKyAxO1xuICAgIHRoaXMuY2FsZW5kYXIgPSBjYWw7XG4gIH1cblxuICBzZWxlY3REYXkoZGF5OiBDYWxlbmRhckRheSkge1xuICAgIGNvbnNvbGUubG9nKGRheSk7XG4gICAgIC8vIFZEIDA2U2VwMjQgY2FsZW5kYXIgY2hhbmdlc1xuICAgIHRoaXMuc2hvd0FwcG9pbm1lbnRTZWN0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNlbGVjdGVkRGF5ID0gZGF5O1xuICAgLy8gdGhpcy5ldmVudFNlbGVjdGVkLmVtaXQoZGF5Py5ldmVudHMpO1xuICAgIGNvbnN0IHByZXZpb3VzbHlTZWxlY3RlZERheSA9IHRoaXMuY2FsZW5kYXJEYXlzLmZpbmQoZCA9PiBkLmlzU2VsZWN0ZWQpO1xuICAgIGlmIChwcmV2aW91c2x5U2VsZWN0ZWREYXkpIHtcbiAgICAgIHByZXZpb3VzbHlTZWxlY3RlZERheS5pc1NlbGVjdGVkID0gZmFsc2U7XG4gICAgfVxuICAgIC8vIFNlbGVjdCB0aGUgY2xpY2tlZCBkYXlcbiAgICBkYXkuaXNTZWxlY3RlZCA9IHRydWU7XG4gICAvLyBWRCAwOVNlcDI0LSBzZXR1cCB0aGUgcXVlcnkgcGFyYW0gZGF0YSBmb3IgYXBpIGNhbGxcbiAgICBsZXQgcmVmZXJlbmNlRGF0YSA9IFtdO1xuICAgIHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zLmZvckVhY2gocXVlcyA9PiB7XG4gICAgICAvLyBWRCAwOS0wOS0yNCBnZXQgdGhlIHNlbGVjdGVkIGRhdGVcbiAgICAgIC8vIG5lZWQgdG8gYWRkIGluIHRoZSBkb2N1bWVudFxuICAgICAgLy8gUlMgMDlERUMyNCBDaGFuZ2VkIGtleXNcbiAgICAgICBpZihxdWVzLnJlZmVyZW5jZUZpZWxkID09ICdzZWxlY3RlZERhdGUnKXtcbiAgICAgICAgICBxdWVzLmlucHV0ID0gZGF5LmRhdGUudG9JU09TdHJpbmcoKTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhxdWVzLmlucHV0KTtcbiAgICAgICB9XG4gICAgICAgLy8gVkQgMDktMDktMjQgZ2V0IHRoZSBxdWVyeSByZWZyZW5jZSAgZmllbGQgZGF0YSB0byBwYXNzIHRoZSBxdWVyeVBhcmFtICBmb3IgYXBpXG4gICAgICBxdWVzWydzdWJUZXh0J10gPSB0eXBlb2YgcXVlcz8uc3ViVGV4dCA9PT0gJ29iamVjdCcgPyBxdWVzPy5zdWJUZXh0IDogSlNPTi5wYXJzZShxdWVzWydzdWJUZXh0J10gfHwge30pO1xuICAgICAgIGlmKHF1ZXMuc3ViVGV4dCl7XG4gICAgICAgIGxldCBzdWJUZXh0ID0gcXVlcy5zdWJUZXh0O1xuICAgICAgICBpZiAoc3ViVGV4dC5xdWVyeUZpZWxkICYmIHN1YlRleHQucXVlcnlWYWx1ZVJlZmVyZW5jZSkge1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRRdWVzID0gcXVlcztcbiAgICAgICAgICAgIGxldCBxdWVyeVJlZmVyZW5jZXMgPSBzdWJUZXh0LnF1ZXJ5VmFsdWVSZWZlcmVuY2Uuc3BsaXQoJywnKTsgICBcbiAgICAgICAgICAgIHF1ZXJ5UmVmZXJlbmNlcy5mb3JFYWNoKHJlZkZpZWxkID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgcmVmUXVlcyA9IHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zLmZpbmQocSA9PiBxLnJlZmVyZW5jZUZpZWxkID09PSByZWZGaWVsZCk7XG4gICAgICAgICAgICAgICAgaWYgKHJlZlF1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlRGF0YS5wdXNoKHJlZlF1ZXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gQWRkIHRoZSByZWZlcmVuY2VEYXRhIGFycmF5IHRvIHRoZSBjdXJyZW50IHF1ZXN0aW9uXG4gICAgICAgICAgICBjdXJyZW50UXVlcy5yZWZlcmVuY2VRdWVyeURhdGEgPSByZWZlcmVuY2VEYXRhO1xuICAgICAgICB9XG4gICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBwcmV2aW91c01vbnRoKCkge1xuICAgIHRoaXMuc2hvd0FwcG9pbm1lbnRTZWN0aW9uID0gZmFsc2U7XG4gICAgdGhpcy5jdXJyZW50RGF0ZS5zZXRNb250aCh0aGlzLmN1cnJlbnREYXRlLmdldE1vbnRoKCkgLSAxKTtcbiAgICB0aGlzLmN1cnJlbnREYXRlID0gbmV3IERhdGUodGhpcy5jdXJyZW50RGF0ZSk7IC8vIEVuc3VyZSB0aGUgZGF0ZSBvYmplY3QgaXMgdXBkYXRlZFxuICAgIHRoaXMuZ2VuZXJhdGVDYWxlbmRhcigpO1xuICAgIHRoaXMuZGF0ZVNlbGVjdGVkLmVtaXQodGhpcy5jYWxlbmRhcik7XG4gICAgdGhpcy5ldmVudFNlbGVjdGVkLmVtaXQodGhpcy5hbGxFdmVudHMpO1xuICB9XG5cbiAgbmV4dE1vbnRoKCkge1xuICAgICAvLyBWRCAwNlNlcDI0IGNhbGVuZGFyIGNoYW5nZXNcbiAgICB0aGlzLnNob3dBcHBvaW5tZW50U2VjdGlvbiA9IGZhbHNlO1xuICAgIHRoaXMuY3VycmVudERhdGUuc2V0TW9udGgodGhpcy5jdXJyZW50RGF0ZS5nZXRNb250aCgpICsgMSk7XG4gICAgdGhpcy5jdXJyZW50RGF0ZSA9IG5ldyBEYXRlKHRoaXMuY3VycmVudERhdGUpOyAvLyBFbnN1cmUgdGhlIGRhdGUgb2JqZWN0IGlzIHVwZGF0ZWRcbiAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIoKTtcbiAgICB0aGlzLmRhdGVTZWxlY3RlZC5lbWl0KHRoaXMuY2FsZW5kYXIpO1xuICAgIHRoaXMuZXZlbnRTZWxlY3RlZC5lbWl0KHRoaXMuYWxsRXZlbnRzKTtcbiAgfVxuXG4gIGFkZEFwcG9pbnRtZW50KCkge1xuICAgIHRoaXMuaXNNb2RhbE9wZW4gPSB0cnVlO1xuICAgICB0aGlzLmNhbGVuZGFyUXVlc3Rpb24gPSB0aGlzLnJlZmVyZW5jZVF1ZXN0aW9ucy5tYXAocSA9PiAoeyAuLi5xLCBpbnB1dDogJycgfSkpO1xuICAgIHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zLmZvckVhY2gocXVlcyA9PiB7XG4gICAgICAvLyBjbGVhciB0aGUgaW5wdXRcbiAgICAgIGlmKHF1ZXMucmVmZXJlbmNlRmllbGQgIT0gJ3NlbGVjdGVkRGF0ZScpe1xuICAgICAgICBpZihxdWVzLnR5cGUgPT0gJ0Ryb3Bkb3duJyl7XG4gICAgICAgICAgZGVsZXRlIHF1ZXMuaW5wdXQ7XG4gICAgICAgICAgZGVsZXRlIHF1ZXMuc2VsZWN0ZWRWYWx1ZTtcbiAgICAgICAgICAgLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzXG4gICAgICAgIH1lbHNlIHtcbiAgICAgICAgICBkZWxldGUgcXVlcy5pbnB1dDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnNvbGUubG9nKHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zKTtcbiAgICB0aGlzLmVkaXRpbmdFdmVudElkID0gbnVsbDtcbiAgICB0aGlzLmNhbGVuZGFyUXVlc3Rpb24gPSB0aGlzLnJlZmVyZW5jZVF1ZXN0aW9ucztcbiAgICB0aGlzLm9wZW5Cb29rTW9kZWwoKTtcbiAgICAvLyBzdW5kYXkgY29tbWVudFxuICAgIC8vdGhpcy5vcGVuUXVlc3Rpb25Cb29rTW9kYWwoKTtcbiAgfVxuXG4gIG9wZW5Cb29rTW9kZWwoKXtcbiAgICB0aGlzLm9wZW5Nb2RhbC5lbWl0KHtcbiAgICAgIHFiUmVmcmVuY2VCb29rOiB0aGlzLnFiUmVmcmVuY2VCb29rLFxuICAgICAgcmVmZXJlbmNlUXVlc3Rpb25zOiB0aGlzLnJlZmVyZW5jZVF1ZXN0aW9ucyxcbiAgICAgIG1vZGFsVGl0bGUgOiB0aGlzLm1vZGFsVGl0bGUsXG4gICAgICBtb2RhbFNpemUgOiB0aGlzLm1vZGFsU2l6ZSxcbiAgICAgIHNhdmVCdXR0b25WYWx1ZSA6IHRoaXMuc2F2ZUJ1dHRvblZhbHVlLFxuICAgICAgbW9kYWxGb290ZXIgOiB0aGlzLm1vZGFsRm9vdGVyLFxuXG4gICAgfSk7XG4gIH1cblxuICBjbG9zZUNhbGVuZGFyTW9kYWwoKSB7XG4gICAgdGhpcy5pc01vZGFsT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuY2xvc2VNb2RhbC5lbWl0KHRydWUpO1xuICB9XG4gLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzXG5cbmVkaXRFdmVudChldmVudDogYW55LCBlbnRyeUdyb3VwOiBhbnkpIHtcbiAgdGhpcy5pc01vZGFsT3BlbiA9IHRydWU7XG4gIHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zID0gT2JqZWN0LnZhbHVlcyhlbnRyeUdyb3VwKTtcbiAgdGhpcy5jYWxlbmRhclF1ZXN0aW9uID0gWy4uLnRoaXMucmVmZXJlbmNlUXVlc3Rpb25zXTsgLy8gTWFrZSBhIGNvcHkgb2YgdGhlIGN1cnJlbnQgZW50cmllcyB0byBlZGl0XG4gIHRoaXMuZWRpdGluZ0V2ZW50SWQgPSBldmVudC5pZDtcbiAgdGhpcy5lZGl0aW5nRW50cnlHcm91cCA9IGVudHJ5R3JvdXA7IC8vIFN0b3JlIHRoZSBlbnRyeSBncm91cCBiZWluZyBlZGl0ZWRcbiAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7IC8vIFJlZ2VuZXJhdGUgdGhlIGNhbGVuZGFyIHRvIHJlZmxlY3QgY2hhbmdlc1xuICB0aGlzLm9wZW5Cb29rTW9kZWwoKTtcbiAgLy8gc3VkYXkgY29tbWVudFxuIC8vIHRoaXMub3BlblF1ZXN0aW9uQm9va01vZGFsKCk7XG5cbn1cblxuZGVsZXRlRXZlbnQoIGV2ZW50SWQ6IG51bWJlciwgZW50cnlHcm91cDogYW55KSB7XG4gIGxldCBldmVudCA9IHRoaXMuYWxsRXZlbnRzPy5maW5kKGUgPT4gZT8uaWQgPT09IGV2ZW50SWQpO1xuICBpZiAoZXZlbnQpIHtcbiAgICAgIC8vIEZpbmQgdGhlIGluZGV4IG9mIHRoZSBlbnRyeUdyb3VwIHRvIGRlbGV0ZVxuICAgICAgY29uc3QgZW50cnlJbmRleCA9IGV2ZW50LmVudHJpZXMuaW5kZXhPZihlbnRyeUdyb3VwKTtcbiAgICAgIGlmIChlbnRyeUluZGV4ID4gLTEpIHtcbiAgICAgICAgICBldmVudC5lbnRyaWVzLnNwbGljZShlbnRyeUluZGV4LCAxKTsgLy8gUmVtb3ZlIHRoZSBzcGVjaWZpYyBlbnRyeVxuICAgICAgfVxuXG4gICAgICAvLyBJZiB0aGUgZXZlbnQgaGFzIG5vIG1vcmUgZW50cmllcywgcmVtb3ZlIHRoZSBldmVudCBlbnRpcmVseVxuICAgICAgaWYgKGV2ZW50LmVudHJpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgY29uc3QgZXZlbnRJbmRleCA9IHRoaXMuYWxsRXZlbnRzPy5pbmRleE9mKGV2ZW50KTtcbiAgICAgICAgICBpZiAoZXZlbnRJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgIHRoaXMuYWxsRXZlbnRzPy5zcGxpY2UoZXZlbnRJbmRleCwgMSk7IC8vIFJlbW92ZSB0aGUgZW50aXJlIGV2ZW50XG4gICAgICAgICAgfVxuICAgICAgfVxuICB9XG4gIGxldCBldmVudERhdGEgPSB7fTtcbiAgIGV2ZW50RGF0YVsnYWN0aW9uJ10gPSBcImRlbGV0ZVwiO1xuICAgZXZlbnREYXRhWydkYXRhJ10gPSBldmVudDtcbiAgdGhpcy5ldmVudFNlbGVjdGVkLmVtaXQoZXZlbnREYXRhKTtcbiAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7IC8vIFJlZ2VuZXJhdGUgdGhlIGNhbGVuZGFyIHRvIHJlZmxlY3QgdGhlIGNoYW5nZXNcbn1cblxuIC8vIFZEIDA2U2VwMjQgY2FsZW5kYXIgY2hhbmdlc1xuICBhZGRFdmVudChkYXk6IENhbGVuZGFyRGF5LCBlbnRyeVF1ZXMpIHtcbiAgICAvLyBUcmFuc2Zvcm0gbmV3IGVudHJpZXMgaW50byB0aGUgZGVzaXJlZCBmb3JtYXRcbiAgICBjb25zdCBuZXdFbnRyaWVzID0gZW50cnlRdWVzLnJlZHVjZSgoYWNjLCBxKSA9PiB7XG4gICAgICAgIGFjY1txLmlkXSA9IHsgLi4ucSB9O1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9KTtcblxuICAgIC8vIEZpbmQgYW4gZXhpc3RpbmcgZXZlbnQgZm9yIHRoZSBnaXZlbiBkYXRlXG4gICAgY29uc3QgZXhpc3RpbmdFdmVudCA9IGRheS5ldmVudHM/LmZpbmQoZXZlbnQgPT4gZXZlbnQuZGF0ZSA9PT0gZGF5LmRhdGUpO1xuXG4gICAgaWYgKGV4aXN0aW5nRXZlbnQpIHtcbiAgICAgICAgLy8gTWVyZ2UgbmV3IGVudHJpZXMgaW50byB0aGUgZXhpc3RpbmcgZXZlbnQncyBlbnRyaWVzIGFycmF5XG4gICAgICAgIC8vIENoZWNrIGlmIHRoZSBlbnRyaWVzIGFycmF5IGFscmVhZHkgY29udGFpbnMgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgaWRcbiAgICAgICAgY29uc3QgZXhpc3RpbmdFbnRyaWVzID0gZXhpc3RpbmdFdmVudC5lbnRyaWVzLm1hcChlbnRyeSA9PiAoeyAuLi5lbnRyeSB9KSk7XG4gICAgICAgIC8vIEFwcGVuZCBuZXcgZW50cmllcyB0byB0aGUgZXhpc3RpbmcgZW50cmllc1xuICAgICAgICBleGlzdGluZ0VudHJpZXMucHVzaChuZXdFbnRyaWVzKTtcbiAgICAgICAgZXhpc3RpbmdFdmVudC5lbnRyaWVzID0gZXhpc3RpbmdFbnRyaWVzO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBldmVudCBpZiBpdCBkb2Vzbid0IGV4aXN0IGZvciB0aGUgZ2l2ZW4gZGF0ZVxuICAgICAgICBjb25zdCBuZXdFdmVudCA9IHtcbiAgICAgICAgICAgIGlkOiB0aGlzLmdlbmVyYXRlSWQoKSxcbiAgICAgICAgICAgIGRhdGU6IGRheS5kYXRlLFxuICAgICAgICAgICAgZW50cmllczogW25ld0VudHJpZXNdIC8vIFdyYXAgdGhlIG5ldyBlbnRyaWVzIGluIGFuIGFycmF5XG4gICAgICAgIH07XG4gICAgICAgIGRheS5ldmVudHMgPSBkYXk/LmV2ZW50cyB8fCBbXVxuICAgICAgICBkYXkuZXZlbnRzLnB1c2gobmV3RXZlbnQpO1xuICAgICAgICB0aGlzLmFsbEV2ZW50cz8ucHVzaChuZXdFdmVudCk7XG4gICAgICAgIC8vdGhpcy5ldmVudFNlbGVjdGVkLmVtaXQodGhpcy5hbGxFdmVudHMpO1xuICAgICAgICBsZXQgZXZlbnREYXRhID0ge307XG4gICAgICAgIGV2ZW50RGF0YVsnYWN0aW9uJ10gPSBcImFkZFwiO1xuICAgICAgICBldmVudERhdGFbJ2RhdGEnXSA9IG5ld0V2ZW50O1xuICAgICAgICB0aGlzLmV2ZW50U2VsZWN0ZWQuZW1pdChldmVudERhdGEpO1xuICAgIH1cbiAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIoKTtcbiAgICBjb25zb2xlLmxvZygnYWxsRXZlbnRzJywgdGhpcy5hbGxFdmVudHMpO1xufVxuIC8vIFZEIDA2U2VwMjQgY2FsZW5kYXIgY2hhbmdlc1xuIG9uU2F2ZSgpIHtcbiAgICBpZiAodGhpcy5lZGl0aW5nRXZlbnRJZCAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBldmVudCA9IHRoaXMuYWxsRXZlbnRzPy5maW5kKGUgPT4gZT8uaWQgPT09IHRoaXMuZWRpdGluZ0V2ZW50SWQpO1xuICAgICAgICBpZiAoZXZlbnQgJiYgdGhpcy5lZGl0aW5nRW50cnlHcm91cCkge1xuICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBzcGVjaWZpYyBlbnRyeSBncm91cCB3aXRoaW4gdGhlIGV2ZW50XG4gICAgICAgICAgICBjb25zdCBlbnRyeUluZGV4ID0gZXZlbnQuZW50cmllcy5maW5kSW5kZXgoZW50cnlHcm91cCA9PiBlbnRyeUdyb3VwID09PSB0aGlzLmVkaXRpbmdFbnRyeUdyb3VwKTtcbiAgICAgICAgICAgIGlmIChlbnRyeUluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICBldmVudC5lbnRyaWVzW2VudHJ5SW5kZXhdID0gdGhpcy5jYWxlbmRhclF1ZXN0aW9uLnJlZHVjZSgoYWNjLCBxKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGFjY1txLmlkXSA9IHsgLi4ucSB9O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgICAgIH0sIHt9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAvLyB0aGlzLmV2ZW50U2VsZWN0ZWQuZW1pdCh0aGlzLmFsbEV2ZW50cyk7XG4gICAgICBsZXQgZXZlbnREYXRhID0ge307XG4gICAgICBldmVudERhdGFbJ2FjdGlvbiddID0gXCJlZGl0XCI7XG4gICAgICBldmVudERhdGFbJ2RhdGEnXSA9IGV2ZW50O1xuICAgICAgdGhpcy5ldmVudFNlbGVjdGVkLmVtaXQoZXZlbnREYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZERheSkge1xuICAgICAgICAgICAgdGhpcy5hZGRFdmVudCh0aGlzLnNlbGVjdGVkRGF5LCB0aGlzLmNhbGVuZGFyUXVlc3Rpb24pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRoaXMuY2xvc2VDYWxlbmRhck1vZGFsKCk7XG4gICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7XG59XG5cbiAgLy8gb25DYW5jZWwoKSB7XG4gIC8vICAgY29uc29sZS5sb2coJ0NhbmNlbCBidXR0b24gY2xpY2tlZCcpO1xuICAvLyAgIHRoaXMuY2xvc2VDYWxlbmRhck1vZGFsKCk7XG4gIC8vIH1cbiAgLy90aGlzIGZ1bnRpb24gbmVlZCB0byBiZSB1c2VkXG4gIC8vIGhhbmRsZVF1ZXN0aW9uRXZlbnQocXVlcyl7XG4gIC8vICAgICAvLyBVcGRhdGUgdGhlIHF1ZXN0aW9ucyBhcnJheSB3aXRoIHRoZSBuZXcgcXVlc3Rpb25cbiAgLy8gICAgIGNvbnN0IGluZGV4ID0gdGhpcy5jYWxlbmRhclF1ZXN0aW9uLmZpbmRJbmRleChxID0+IHEuaWQgPT09IHF1ZXMuaWQpO1xuICAvLyAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgLy8gICAgICAgLy8gSWYgcXVlc3Rpb24gYWxyZWFkeSBleGlzdHMsIHVwZGF0ZSBpdFxuICAvLyAgICAgICB0aGlzLmNhbGVuZGFyUXVlc3Rpb25baW5kZXhdID0gcXVlcztcbiAgLy8gICAgIH0gZWxzZSB7XG4gIC8vICAgICAgIC8vIElmIHF1ZXN0aW9uIGRvZXNuJ3QgZXhpc3QsIGFkZCBpdCB0byB0aGUgYXJyYXlcbiAgLy8gICAgICAgdGhpcy5jYWxlbmRhclF1ZXN0aW9uLnB1c2gocXVlcyk7XG4gIC8vICAgICB9XG4gIC8vICAgICBjb25zb2xlLmxvZyh0aGlzLmNhbGVuZGFyUXVlc3Rpb24pO1xuICAvLyAgIH1cblxuIC8vIFZEIDA2U2VwMjQgY2FsZW5kYXIgY2hhbmdlc1xuICBnZW5lcmF0ZUlkKCkge1xuICAgIHJldHVybiAnXycgKyBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiwgOSk7XG4gIH1cblxuICBnZXRFbnRyeUtleXMoZW50cnlHcm91cDogYW55KTogc3RyaW5nW10ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhlbnRyeUdyb3VwKTtcbn1cblxucmVtb3ZlQ2hhcmFjdGVycyhxdWVzdGlvblRleHQ6c3RyaW5nKXtcbiAgbGV0IHVwZGF0ZWRUZXh0ID0gcXVlc3Rpb25UZXh0Py5yZXBsYWNlKC88W14+XSo+L2csICcnKTtcbiAgcmV0dXJuIHVwZGF0ZWRUZXh0O1xufVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwiYWxpZ24tY2FsZW5kYXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItaGVhZGVyXCI+XG4gICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwicHJldmlvdXNNb250aCgpXCI+PDwgUHJldmlvdXMgPj48L2J1dHRvbj5cbiAgICAgICAgICA8aDM+e3sgY3VycmVudERhdGUgfCBkYXRlOiAnTU1NTSB5eXl5JyB9fTwvaDM+XG4gICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwibmV4dE1vbnRoKClcIj48PCBOZXh0ID4+PC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1ncmlkXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRheS1vZi13ZWVrXCIgKm5nRm9yPVwibGV0IGRheSBvZiBkYXlzT2ZXZWVrXCI+e3sgZGF5IH19PC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNhbGVuZGFyLWRheVwiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXkgb2YgY2FsZW5kYXJEYXlzXCJcbiAgICAgICAgICAgICAgW2NsYXNzLm5vdC1jdXJyZW50LW1vbnRoXT1cIiFkYXkuaXNDdXJyZW50TW9udGhcIlxuICAgICAgICAgICAgICBbY2xhc3MucGFzdF09XCJkYXkuaXNQYXN0XCJcbiAgICAgICAgICAgICAgW2NsYXNzLnRvZGF5XT1cImRheS5pc1RvZGF5XCJcbiAgICAgICAgICAgICAgW2NsYXNzLmZ1dHVyZV09XCJkYXkuaXNGdXR1cmVcIlxuICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiZGF5LmlzU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0RGF5KGRheSlcIlxuICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXktbnVtYmVyXCI+e3sgZGF5LmRhdGUuZ2V0RGF0ZSgpIH19XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkYXk/LmV2ZW50cz8ubGVuZ3RoID4gMFwiIGNsYXNzPVwiZW50cnktaW5kaWNhdG9yXCIgW2NsYXNzLnNlbGVjdF09XCJkYXk/LmlzU2VsZWN0ZWRcIj48L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8IS0tIDxkaXYgKm5nRm9yPVwibGV0IGV2ZW50IG9mIGRheS5ldmVudHNcIiA+XG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBlbnRyeUdyb3VwIG9mIGV2ZW50LmVudHJpZXNcIiBjbGFzcz1cImV2ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQga2V5IG9mIGdldEVudHJ5S2V5cyhlbnRyeUdyb3VwKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZW50cnlHcm91cFtrZXldLnR5cGUgPT0gJ1RpbWUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBlbnRyeUdyb3VwW2tleV0uaW5wdXQ/LnZhbHVlIHwgZGF0ZTogJ3Nob3J0VGltZScgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJlbnRyeUdyb3VwW2tleV0udHlwZSAhPSAnVGltZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGVudHJ5R3JvdXBba2V5XS5pbnB1dCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImFwcG9pbmFwcG9pbnRtZW50XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXBwb2ludG1lbnRzLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxoND5BZGQgQXBwb2ludG1lbnQ8L2g0PlxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJzZWxlY3RlZERheVwiIChjbGljayk9XCJhZGRBcHBvaW50bWVudCgpXCI+QWRkPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDwhLS1WRCAwNlNlcDI0IGNhbGVuZGFyIHVwZGF0ZXMtLT4gXG4gICAgICA8IS0tIFJTIDA5REVDMjQgQ2hhbmdlZCBrZXlzLS0+IFxuICAgICAgPGRpdiAqbmdJZj1cInNob3dBcHBvaW5tZW50U2VjdGlvbiAmJiBzZWxlY3RlZERheT8uZXZlbnRzPy5sZW5ndGggPiAwXCIgY2xhc3M9XCJhcHBvaW50bWVudHMtY29udGFpbmVyXCI+XG4gICAgICAgICAgPGg0PkFwcG9pbnRtZW50czwvaDQ+XG4gICAgICAgICAgPGRpdiAgKm5nRm9yPVwibGV0IGV2ZW50IG9mIHNlbGVjdGVkRGF5Py5ldmVudHNcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50XCIgKm5nRm9yPVwibGV0IGVudHJ5R3JvdXAgb2YgZXZlbnQuZW50cmllc1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtaW5mb1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGtleSBvZiBnZXRFbnRyeUtleXMoZW50cnlHcm91cClcIiBjbGFzcz1cImVudHJ5LXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImVudHJ5R3JvdXBba2V5XS5xdWVzdGlvblRleHRcIiBjbGFzcz1cImVudHJ5LXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3JlbW92ZUNoYXJhY3RlcnMoZW50cnlHcm91cFtrZXldLnF1ZXN0aW9uVGV4dCl9fTpcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVudHJ5LXZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBWRCAwOVNlcDI0LSBkYXRlIHR5cGUgYW5kIGxpbmsgdHlwZSB1cGRhdGVzICAgIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZW50cnlHcm91cFtrZXldLnR5cGUgIT0gJ1RpbWUnICYmIGVudHJ5R3JvdXBba2V5XS50eXBlICE9ICdMaW5rJyYmIGVudHJ5R3JvdXBba2V5XS50eXBlICE9ICdEYXRlJ1wiPnt7IGVudHJ5R3JvdXBba2V5XS5pbnB1dCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImVudHJ5R3JvdXBba2V5XS50eXBlID09ICdUaW1lJ1wiPnt7IGVudHJ5R3JvdXBba2V5XS5pbnB1dCB8IGRhdGU6ICdzaG9ydFRpbWUnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZW50cnlHcm91cFtrZXldLnR5cGUgPT0gJ0RhdGUnXCI+e3sgZW50cnlHcm91cFtrZXldLmlucHV0IHwgZGF0ZTogJ21lZGl1bURhdGUnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZW50cnlHcm91cFtrZXldLnR5cGUgPT0gJ0xpbmsnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIFtocmVmXT1cIicvLycrIGVudHJ5R3JvdXBba2V5XS5pbnB1dFwiIHRhcmdldD1cIl9ibGFua1wiPnt7cmVtb3ZlQ2hhcmFjdGVycyhlbnRyeUdyb3VwW2tleV0ucXVlc3Rpb25UZXh0KX19PC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZWRpdEV2ZW50KGV2ZW50LGVudHJ5R3JvdXApXCI+RWRpdDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZGVsZXRlRXZlbnQoZXZlbnQuaWQsZW50cnlHcm91cClcIj5EZWxldGU8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gPGFwcC1jdXN0b20tbW9kZWxcbiAgW21vZGFsVGl0bGVdPVwibW9kYWxUaXRsZVwiXG4gIFtpc01vZGFsT3Blbl09XCJpc01vZGFsT3BlblwiXG4gIFttb2RhbFNpemVdPVwibW9kYWxTaXplXCJcbiAgW3NhdmVCdXR0b25WYWx1ZV09XCJzYXZlQnV0dG9uVmFsdWVcIlxuICBbbW9kYWxGb290ZXJdPVwibW9kYWxGb290ZXJcIlxuICAoc2F2ZUJ1dHRvbkVtaXQpPVwib25TYXZlKClcIlxuICAoY2FuY2VsQnV0dG9uRW1pdCk9XCJvbkNhbmNlbCgpXCJcbj5cbjxsaWItcXVlc3Rpb25ib29rIFtxYkl0ZW1dPVwicWJSZWZyZW5jZUJvb2tcIiBbcXVlc3Rpb25zXT1cInJlZmVyZW5jZVF1ZXN0aW9uc1wiIChoYW5kbGVRdWVzdGlvbik9XCJoYW5kbGVRdWVzdGlvbkV2ZW50KCRldmVudClcIj48L2xpYi1xdWVzdGlvbmJvb2s+XG48bmctdGVtcGxhdGUgZHluYW1pY0NvbXBvbmVudEhvc3QgPjwvbmctdGVtcGxhdGU+XG48L2FwcC1jdXN0b20tbW9kZWw+IC0tPiJdfQ==
|
|
368
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWNhbGVuZGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9jb21wb25lbnRzL2N1c3RvbS1jYWxlbmRhci9jdXN0b20tY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvY3VzdG9tLWNhbGVuZGFyL2N1c3RvbS1jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUE0QixNQUFNLGVBQWUsQ0FBQzs7OztBQW1CckgsTUFBTSxPQUFPLHVCQUF1QjtJQWdDYjtJQS9CWCxhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUNsRCw4QkFBOEI7SUFDcEIsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDdkMsU0FBUyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDcEMsVUFBVSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDdEMsU0FBUyxHQUFVLEVBQUUsQ0FBQztJQUN0QixRQUFRLENBQVU7SUFDbEIsS0FBSyxDQUFTO0lBQ3ZCLDJGQUEyRjtJQUMzRixPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ2Isa0JBQWtCLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLGNBQWMsQ0FBSztJQUNuQixnQkFBZ0IsR0FBRyxFQUFFLENBQUM7SUFDdEIsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNkLFdBQVcsR0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQy9CLFlBQVksR0FBa0IsRUFBRSxDQUFDO0lBQ2pDLFVBQVUsR0FBYSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsUUFBUSxF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LENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUMsZUFBZTtJQUNmLDBDQUEwQztJQUMxQywrQkFBK0I7SUFDL0IsSUFBSTtJQUNKLDhCQUE4QjtJQUM5Qiw2QkFBNkI7SUFDN0IsMERBQTBEO0lBQzFELDRFQUE0RTtJQUM1RSx3QkFBd0I7SUFDeEIsaURBQWlEO0lBQ2pELDZDQUE2QztJQUM3QyxlQUFlO0lBQ2YsMERBQTBEO0lBQzFELDBDQUEwQztJQUMxQyxRQUFRO0lBQ1IsMENBQTBDO0lBQzFDLE1BQU07SUFFUCw4QkFBOEI7SUFDN0IsVUFBVTtRQUNSLE9BQU8sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsWUFBWSxDQUFDLFVBQWU7UUFDMUIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxZQUFtQjtRQUNsQyxJQUFJLFdBQVcsR0FBRyxZQUFZLEVBQUUsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN4RCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO3dHQTNXWSx1QkFBdUI7NEZBQXZCLHVCQUF1QixrUUNuQnBDLDgySUFxRnVCOzs0RkRsRVYsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLHFCQUFxQjtrRkFLckIsYUFBYTtzQkFBdEIsTUFBTTtnQkFFRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRSxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBRdWVzdGlvbiB9IGZyb20gJy4uLy4uL3dyYXBwZXInO1xuLy9pbXBvcnQgeyBRdWVzdGlvbmJvb2tDb21wb25lbnQgfSBmcm9tICcuLi8uLi9wYWdlcy9xdWVzdGlvbmJvb2svcXVlc3Rpb25ib29rLmNvbXBvbmVudCc7XG4vL2ltcG9ydCB7IENvbXBvbmVudGhvc3REaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2NvbXBvbmVudGhvc3QvY29tcG9uZW50aG9zdC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ2hhbmdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NoYW5nZS5zZXJ2aWNlJztcbmludGVyZmFjZSBDYWxlbmRhckRheSB7XG4gIGRhdGU6IERhdGU7XG4gIGV2ZW50czogYW55W107XG4gIGlzQ3VycmVudE1vbnRoOiBib29sZWFuO1xuICBpc1Bhc3Q6IGJvb2xlYW47XG4gIGlzVG9kYXk6IGJvb2xlYW47XG4gIGlzRnV0dXJlOiBib29sZWFuO1xuICBpc1NlbGVjdGVkPzogYm9vbGVhbjtcbn1cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jdXN0b20tY2FsZW5kYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY3VzdG9tLWNhbGVuZGFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3VzdG9tLWNhbGVuZGFyLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ3VzdG9tQ2FsZW5kYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBAT3V0cHV0KCkgZXZlbnRTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAvLyBWRCAwNlNlcDI0IGNhbGVuZGFyIGNoYW5nZXNcbiAgQE91dHB1dCgpIGRhdGVTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgb3Blbk1vZGFsID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBjbG9zZU1vZGFsID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBJbnB1dCgpIGFsbEV2ZW50czogYW55W10gPSBbXTsgXG4gIEBJbnB1dCgpIHF1ZXN0aW9uOiBRdWVzdGlvblxuICBASW5wdXQoKSBueHRJZDogc3RyaW5nO1xuICAvL0BWaWV3Q2hpbGQoQ29tcG9uZW50aG9zdERpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSkgZHluYW1pY0hvc3Q6IENvbXBvbmVudGhvc3REaXJlY3RpdmU7XG4gIGVudHJpZXMgPSBbXTtcbiAgcmVmZXJlbmNlUXVlc3Rpb25zID0gW107XG4gIHFiUmVmcmVuY2VCb29rOmFueTtcbiAgY2FsZW5kYXJRdWVzdGlvbiA9IFtdO1xuICBjYWxlbmRhciA9IHt9O1xuICBjdXJyZW50RGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCk7XG4gIGNhbGVuZGFyRGF5czogQ2FsZW5kYXJEYXlbXSA9IFtdO1xuICBkYXlzT2ZXZWVrOiBzdHJpbmdbXSA9IFsnU3VuZGF5JywgJ01vbmRheScsICdUdWVzZGF5JywgJ1dlZG5lc2RheScsICdUaHVyc2RheScsICdGcmlkYXknLCAnU2F0dXJkYXknXTtcbiAgbmV3RXZlbnRUaXRsZTogc3RyaW5nID0gJyc7XG4gIG5ld0V2ZW50VGltZTogc3RyaW5nID0gJyc7XG4gIG5ld0Rlc2NyaXB0aW9uOiBzdHJpbmcgPSAnJztcbiAgbmV3TGluazogc3RyaW5nID0gJyc7XG4gIHNlbGVjdGVkRGF5OiBDYWxlbmRhckRheSB8IG51bGwgPSBudWxsO1xuICBpc01vZGFsT3BlbiA9IGZhbHNlO1xuICBtb2RhbFRpdGxlID0gJ0N1c3RvbSBNb2RhbCc7XG4gIG1vZGFsU2l6ZSA9ICdsYXJnZSc7XG4gIHNhdmVCdXR0b25WYWx1ZSA9ICdTYXZlJztcbiAgbW9kYWxGb290ZXIgPSB0cnVlO1xuICBlZGl0aW5nRXZlbnRJZDogbnVtYmVyO1xuICBlZGl0aW5nRW50cnlHcm91cDogYW55O1xuICBzaG93QXBwb2lubWVudFNlY3Rpb246IGJvb2xlYW4gPSB0cnVlO1xuICBzdWJzY3JpcHRpb246IGFueTtcbiAgY29uc3RydWN0b3IoIHByaXZhdGUgY2hhbmdlU2VydmljZTogQ2hhbmdlU2VydmljZSkgeyB9XG4gIG5nT25Jbml0KCkge1xuICAgICBpZih0aGlzLnF1ZXN0aW9uPy5pbnB1dCl7XG4gICAgICB0aGlzLmFsbEV2ZW50cyA9IHRoaXMucXVlc3Rpb24uaW5wdXQ7XG4gICAgIH1cbiAgICB0aGlzLnByb2Nlc3NRdWVzdGlvbigpO1xuICAgIHRoaXMuZ2VuZXJhdGVDYWxlbmRhcigpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5jaGFuZ2VTZXJ2aWNlLmN1c3RvbUNoYW5nZSQuc3Vic2NyaWJlKFxuICAgICAgKGNoYW5nZVZhbHVlKSA9PiB7XG4gICAgICAgICAgaWYoY2hhbmdlVmFsdWUgPT0gJ2NhbGVuZGFyLW1vZGFsLXNhdmUnKSB7XG4gICAgICAgICAgICB0aGlzLm9uU2F2ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZihjaGFuZ2VWYWx1ZSA9PSAnZGF0YUJpbmQnKSB7XG4gICAgICAgICAgICBpZih0aGlzLnF1ZXN0aW9uPy5pbnB1dCl7XG4gICAgICAgICAgICAgIHRoaXMuYWxsRXZlbnRzID0gdGhpcy5xdWVzdGlvbi5pbnB1dDtcbiAgICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NRdWVzdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gICAvLyB0aGlzLmRhdGVTZWxlY3RlZC5lbWl0KHRoaXMuY2FsZW5kYXIpO1xuICAgIC8vdGhpcy5ldmVudFNlbGVjdGVkLmVtaXQodGhpcy5hbGxFdmVudHMpO1xuICB9XG4gIC8vIFJTIDA5REVDMjQgQ2hhbmdlZCBrZXlzXG4gIHByb2Nlc3NRdWVzdGlvbigpe1xuICAgIC8vIFNLUzIwTUFSMjUgY2hlY2sgaWYgcXVlc3Rpb24gZmllbGRzbWV0YSBpcyBzdHJpbmdcbiAgICB0aGlzLmVudHJpZXMgPSAgdHlwZW9mIHRoaXMucXVlc3Rpb25bJ2ZpZWxkc01ldGEnXSA9PT0gJ29iamVjdCcgID8gIHRoaXMucXVlc3Rpb25bJ2ZpZWxkc01ldGEnXSB8fCBbe31dIDogSlNPTi5wYXJzZSggdGhpcy5xdWVzdGlvblsnZmllbGRzTWV0YSddKSA7XG4gICAgdGhpcy5xYlJlZnJlbmNlQm9vayA9IHR5cGVvZiB0aGlzLnF1ZXN0aW9uWydxYlJlZmVyZW5jZVF1ZXN0aW9ucyddID09PSAnb2JqZWN0JyAgPyAgdGhpcy5xdWVzdGlvblsncWJSZWZlcmVuY2VRdWVzdGlvbnMnXSA6IEpTT04ucGFyc2UoIHRoaXMucXVlc3Rpb25bJ3FiUmVmZXJlbmNlUXVlc3Rpb25zJ10pIDtcbiAgICBsZXQgdGl0bGUgPSB0aGlzLnFiUmVmcmVuY2VCb29rPy5xdWVzdGlvbmJvb2s/LnRpdGxlO1xuICAgIHRoaXMubW9kYWxUaXRsZSA9IHRpdGxlO1xuICAgIHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zID0gW107XG4gICAgaWYodGhpcy5lbnRyaWVzLmxlbmd0aCA+IDApe1xuICAgICAgIHRoaXMuZW50cmllcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICBpZihlbGVtZW50LnF1ZXN0aW9uUmVmZXJlbmNlKXtcbiAgICAgICAgICAgICBsZXQgcVJlZmVyZW5jZSA9IEpTT04ucGFyc2UoZWxlbWVudC5xdWVzdGlvblJlZmVyZW5jZSk7XG4gICAgICAgICAgICAgdGhpcy5yZWZlcmVuY2VRdWVzdGlvbnMucHVzaChxUmVmZXJlbmNlPy5xdWVzdGlvbik7XG4gICAgICAgICAgIH1cbiAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc29sZS5sb2coJ2VudHJpZXMtLT4nKTtcbiAgICBjb25zb2xlLmxvZygncXVlc3Rpb24tLT4nKTtcbiAgICBjb25zb2xlLmxvZyh0aGlzLmVudHJpZXMpO1xuICAgIGNvbnNvbGUubG9nKHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zKTtcbiAgfVxuICAgLy8gc3VuZGF5IGNvbW1lbnRcbiAgLy8gb3BlblF1ZXN0aW9uQm9va01vZGFsKCkge1xuICAvLyAgIGNvbnN0IHZpZXdDb250YWluZXJSZWYgPSB0aGlzLmR5bmFtaWNIb3N0LnZpZXdDb250YWluZXJSZWY7XG4gIC8vICAgdmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuICAvLyAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KFF1ZXN0aW9uYm9va0NvbXBvbmVudCk7XG4gIC8vICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnFiSXRlbSA9IHRoaXMucWJSZWZyZW5jZUJvb2s7XG4gIC8vICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnF1ZXN0aW9ucyA9IHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zO1xuICAvLyAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5oYW5kbGVRdWVzdGlvbi5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IHRoaXMuaGFuZGxlUXVlc3Rpb25FdmVudChldmVudCkpO1xuICAvLyB9XG5cbiAgZ2VuZXJhdGVDYWxlbmRhcigpIHtcbiAgICBjb25zdCB5ZWFyID0gdGhpcy5jdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIGNvbnN0IG1vbnRoID0gdGhpcy5jdXJyZW50RGF0ZS5nZXRNb250aCgpO1xuXG4gICAgY29uc3Qgc3RhcnRPZk1vbnRoID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEpO1xuICAgIGNvbnN0IGVuZE9mTW9udGggPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCArIDEsIDApO1xuXG4gICAgY29uc3Qgc3RhcnREYXlPZldlZWsgPSBzdGFydE9mTW9udGguZ2V0RGF5KCk7XG4gICAgY29uc3QgZW5kRGF5T2ZXZWVrID0gZW5kT2ZNb250aC5nZXREYXkoKTtcblxuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKHN0YXJ0T2ZNb250aCk7XG4gICAgc3RhcnREYXRlLnNldERhdGUoc3RhcnREYXRlLmdldERhdGUoKSAtIHN0YXJ0RGF5T2ZXZWVrKTtcblxuICAgIGNvbnN0IGVuZERhdGUgPSBuZXcgRGF0ZShlbmRPZk1vbnRoKTtcbiAgICBlbmREYXRlLnNldERhdGUoZW5kRGF0ZS5nZXREYXRlKCkgKyAoNiAtIGVuZERheU9mV2VlaykpO1xuXG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZShuZXcgRGF0ZSgpLnNldEhvdXJzKDAsIDAsIDAsIDApKTtcbiAgICBcbiAgICAgdGhpcy5jYWxlbmRhckRheXMgPSBbXTtcbiAgICAgIGZvciAobGV0IGQgPSBuZXcgRGF0ZShzdGFydERhdGUpOyBkIDw9IGVuZERhdGU7IGQuc2V0RGF0ZShkLmdldERhdGUoKSArIDEpKSB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShkKTtcbiAgICAgICAgdGhpcy5jYWxlbmRhckRheXMucHVzaCh7XG4gICAgICAgICAgZGF0ZTogZGF0ZSxcbiAgICAgICAgICBldmVudHM6IFtdLFxuICAgICAgICAgIGlzQ3VycmVudE1vbnRoOiBkLmdldE1vbnRoKCkgPT09IG1vbnRoLFxuICAgICAgICAgIGlzUGFzdDogZGF0ZSA8IHRvZGF5LFxuICAgICAgICAgIGlzVG9kYXk6IGRhdGUuZ2V0VGltZSgpID09PSB0b2RheS5nZXRUaW1lKCksXG4gICAgICAgICAgaXNGdXR1cmU6IGRhdGUgPiB0b2RheSxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAvLyBQb3B1bGF0ZSBjYWxlbmRhciB3aXRoIGV2ZW50cyBmcm9tIGFsbEV2ZW50cyBhcnJheVxuICAgIHRoaXMuY2FsZW5kYXJEYXlzLmZvckVhY2goZGF5ID0+IHtcbiAgICAgIGRheS5ldmVudHMgPSB0aGlzLmFsbEV2ZW50cz8uZmlsdGVyKGV2ZW50ID0+IGV2ZW50Py5kYXRlPy50b0RhdGVTdHJpbmcoKSA9PT0gZGF5LmRhdGUudG9EYXRlU3RyaW5nKCkpO1xuICAgIH0pO1xuICAgICAvLyBWRCAwNlNlcDI0IGNhbGVuZGFyIGNoYW5nZXNcbiAgICBsZXQgY2FsID0ge31cbiAgICBjYWxbJ3llYXInXSA9IHllYXI7XG4gICAgY2FsWydtb250aCddID0gbW9udGggKyAxO1xuICAgIHRoaXMuY2FsZW5kYXIgPSBjYWw7XG4gIH1cblxuICBzZWxlY3REYXkoZGF5OiBDYWxlbmRhckRheSkge1xuICAgIGNvbnNvbGUubG9nKGRheSk7XG4gICAgIC8vIFZEIDA2U2VwMjQgY2FsZW5kYXIgY2hhbmdlc1xuICAgIHRoaXMuc2hvd0FwcG9pbm1lbnRTZWN0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNlbGVjdGVkRGF5ID0gZGF5O1xuICAgLy8gdGhpcy5ldmVudFNlbGVjdGVkLmVtaXQoZGF5Py5ldmVudHMpO1xuICAgIGNvbnN0IHByZXZpb3VzbHlTZWxlY3RlZERheSA9IHRoaXMuY2FsZW5kYXJEYXlzLmZpbmQoZCA9PiBkLmlzU2VsZWN0ZWQpO1xuICAgIGlmIChwcmV2aW91c2x5U2VsZWN0ZWREYXkpIHtcbiAgICAgIHByZXZpb3VzbHlTZWxlY3RlZERheS5pc1NlbGVjdGVkID0gZmFsc2U7XG4gICAgfVxuICAgIC8vIFNlbGVjdCB0aGUgY2xpY2tlZCBkYXlcbiAgICBkYXkuaXNTZWxlY3RlZCA9IHRydWU7XG4gICAvLyBWRCAwOVNlcDI0LSBzZXR1cCB0aGUgcXVlcnkgcGFyYW0gZGF0YSBmb3IgYXBpIGNhbGxcbiAgICBsZXQgcmVmZXJlbmNlRGF0YSA9IFtdO1xuICAgIHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zLmZvckVhY2gocXVlcyA9PiB7XG4gICAgICAvLyBWRCAwOS0wOS0yNCBnZXQgdGhlIHNlbGVjdGVkIGRhdGVcbiAgICAgIC8vIG5lZWQgdG8gYWRkIGluIHRoZSBkb2N1bWVudFxuICAgICAgLy8gUlMgMDlERUMyNCBDaGFuZ2VkIGtleXNcbiAgICAgICBpZihxdWVzLnJlZmVyZW5jZUZpZWxkID09ICdzZWxlY3RlZERhdGUnKXtcbiAgICAgICAgICBxdWVzLmlucHV0ID0gZGF5LmRhdGUudG9JU09TdHJpbmcoKTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhxdWVzLmlucHV0KTtcbiAgICAgICB9XG4gICAgICAgLy8gVkQgMDktMDktMjQgZ2V0IHRoZSBxdWVyeSByZWZyZW5jZSAgZmllbGQgZGF0YSB0byBwYXNzIHRoZSBxdWVyeVBhcmFtICBmb3IgYXBpXG4gICAgICBxdWVzWydzdWJUZXh0J10gPSB0eXBlb2YgcXVlcz8uc3ViVGV4dCA9PT0gJ29iamVjdCcgPyBxdWVzPy5zdWJUZXh0IDogSlNPTi5wYXJzZShxdWVzWydzdWJUZXh0J10gfHwge30pO1xuICAgICAgIGlmKHF1ZXMuc3ViVGV4dCl7XG4gICAgICAgIGxldCBzdWJUZXh0ID0gcXVlcy5zdWJUZXh0O1xuICAgICAgICBpZiAoc3ViVGV4dC5xdWVyeUZpZWxkICYmIHN1YlRleHQucXVlcnlWYWx1ZVJlZmVyZW5jZSkge1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRRdWVzID0gcXVlcztcbiAgICAgICAgICAgIGxldCBxdWVyeVJlZmVyZW5jZXMgPSBzdWJUZXh0LnF1ZXJ5VmFsdWVSZWZlcmVuY2Uuc3BsaXQoJywnKTsgICBcbiAgICAgICAgICAgIHF1ZXJ5UmVmZXJlbmNlcy5mb3JFYWNoKHJlZkZpZWxkID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgcmVmUXVlcyA9IHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zLmZpbmQocSA9PiBxLnJlZmVyZW5jZUZpZWxkID09PSByZWZGaWVsZCk7XG4gICAgICAgICAgICAgICAgaWYgKHJlZlF1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlRGF0YS5wdXNoKHJlZlF1ZXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gQWRkIHRoZSByZWZlcmVuY2VEYXRhIGFycmF5IHRvIHRoZSBjdXJyZW50IHF1ZXN0aW9uXG4gICAgICAgICAgICBjdXJyZW50UXVlcy5yZWZlcmVuY2VRdWVyeURhdGEgPSByZWZlcmVuY2VEYXRhO1xuICAgICAgICB9XG4gICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBwcmV2aW91c01vbnRoKCkge1xuICAgIHRoaXMuc2hvd0FwcG9pbm1lbnRTZWN0aW9uID0gZmFsc2U7XG4gICAgdGhpcy5jdXJyZW50RGF0ZS5zZXRNb250aCh0aGlzLmN1cnJlbnREYXRlLmdldE1vbnRoKCkgLSAxKTtcbiAgICB0aGlzLmN1cnJlbnREYXRlID0gbmV3IERhdGUodGhpcy5jdXJyZW50RGF0ZSk7IC8vIEVuc3VyZSB0aGUgZGF0ZSBvYmplY3QgaXMgdXBkYXRlZFxuICAgIHRoaXMuZ2VuZXJhdGVDYWxlbmRhcigpO1xuICAgIHRoaXMuZGF0ZVNlbGVjdGVkLmVtaXQodGhpcy5jYWxlbmRhcik7XG4gICAgdGhpcy5ldmVudFNlbGVjdGVkLmVtaXQodGhpcy5hbGxFdmVudHMpO1xuICB9XG5cbiAgbmV4dE1vbnRoKCkge1xuICAgICAvLyBWRCAwNlNlcDI0IGNhbGVuZGFyIGNoYW5nZXNcbiAgICB0aGlzLnNob3dBcHBvaW5tZW50U2VjdGlvbiA9IGZhbHNlO1xuICAgIHRoaXMuY3VycmVudERhdGUuc2V0TW9udGgodGhpcy5jdXJyZW50RGF0ZS5nZXRNb250aCgpICsgMSk7XG4gICAgdGhpcy5jdXJyZW50RGF0ZSA9IG5ldyBEYXRlKHRoaXMuY3VycmVudERhdGUpOyAvLyBFbnN1cmUgdGhlIGRhdGUgb2JqZWN0IGlzIHVwZGF0ZWRcbiAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIoKTtcbiAgICB0aGlzLmRhdGVTZWxlY3RlZC5lbWl0KHRoaXMuY2FsZW5kYXIpO1xuICAgIHRoaXMuZXZlbnRTZWxlY3RlZC5lbWl0KHRoaXMuYWxsRXZlbnRzKTtcbiAgfVxuXG4gIGFkZEFwcG9pbnRtZW50KCkge1xuICAgIHRoaXMuaXNNb2RhbE9wZW4gPSB0cnVlO1xuICAgICB0aGlzLmNhbGVuZGFyUXVlc3Rpb24gPSB0aGlzLnJlZmVyZW5jZVF1ZXN0aW9ucy5tYXAocSA9PiAoeyAuLi5xLCBpbnB1dDogJycgfSkpO1xuICAgIHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zLmZvckVhY2gocXVlcyA9PiB7XG4gICAgICAvLyBjbGVhciB0aGUgaW5wdXRcbiAgICAgIGlmKHF1ZXMucmVmZXJlbmNlRmllbGQgIT0gJ3NlbGVjdGVkRGF0ZScpe1xuICAgICAgICBpZihxdWVzLnR5cGUgPT0gJ0Ryb3Bkb3duJyl7XG4gICAgICAgICAgZGVsZXRlIHF1ZXMuaW5wdXQ7XG4gICAgICAgICAgZGVsZXRlIHF1ZXMuc2VsZWN0ZWRWYWx1ZTtcbiAgICAgICAgICAgLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzXG4gICAgICAgIH1lbHNlIHtcbiAgICAgICAgICBkZWxldGUgcXVlcy5pbnB1dDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnNvbGUubG9nKHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zKTtcbiAgICB0aGlzLmVkaXRpbmdFdmVudElkID0gbnVsbDtcbiAgICB0aGlzLmNhbGVuZGFyUXVlc3Rpb24gPSB0aGlzLnJlZmVyZW5jZVF1ZXN0aW9ucztcbiAgICB0aGlzLm9wZW5Cb29rTW9kZWwoKTtcbiAgICAvLyBzdW5kYXkgY29tbWVudFxuICAgIC8vdGhpcy5vcGVuUXVlc3Rpb25Cb29rTW9kYWwoKTtcbiAgfVxuXG4gIG9wZW5Cb29rTW9kZWwoKXtcbiAgICB0aGlzLm9wZW5Nb2RhbC5lbWl0KHtcbiAgICAgIHFiUmVmcmVuY2VCb29rOiB0aGlzLnFiUmVmcmVuY2VCb29rLFxuICAgICAgcmVmZXJlbmNlUXVlc3Rpb25zOiB0aGlzLnJlZmVyZW5jZVF1ZXN0aW9ucyxcbiAgICAgIG1vZGFsVGl0bGUgOiB0aGlzLm1vZGFsVGl0bGUsXG4gICAgICBtb2RhbFNpemUgOiB0aGlzLm1vZGFsU2l6ZSxcbiAgICAgIHNhdmVCdXR0b25WYWx1ZSA6IHRoaXMuc2F2ZUJ1dHRvblZhbHVlLFxuICAgICAgbW9kYWxGb290ZXIgOiB0aGlzLm1vZGFsRm9vdGVyLFxuXG4gICAgfSk7XG4gIH1cblxuICBjbG9zZUNhbGVuZGFyTW9kYWwoKSB7XG4gICAgdGhpcy5pc01vZGFsT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuY2xvc2VNb2RhbC5lbWl0KHRydWUpO1xuICB9XG4gLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzXG5cbmVkaXRFdmVudChldmVudDogYW55LCBlbnRyeUdyb3VwOiBhbnkpIHtcbiAgdGhpcy5pc01vZGFsT3BlbiA9IHRydWU7XG4gIHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zID0gT2JqZWN0LnZhbHVlcyhlbnRyeUdyb3VwKTtcbiAgdGhpcy5jYWxlbmRhclF1ZXN0aW9uID0gWy4uLnRoaXMucmVmZXJlbmNlUXVlc3Rpb25zXTsgLy8gTWFrZSBhIGNvcHkgb2YgdGhlIGN1cnJlbnQgZW50cmllcyB0byBlZGl0XG4gIHRoaXMuZWRpdGluZ0V2ZW50SWQgPSBldmVudC5pZDtcbiAgdGhpcy5lZGl0aW5nRW50cnlHcm91cCA9IGVudHJ5R3JvdXA7IC8vIFN0b3JlIHRoZSBlbnRyeSBncm91cCBiZWluZyBlZGl0ZWRcbiAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7IC8vIFJlZ2VuZXJhdGUgdGhlIGNhbGVuZGFyIHRvIHJlZmxlY3QgY2hhbmdlc1xuICB0aGlzLm9wZW5Cb29rTW9kZWwoKTtcbiAgLy8gc3VkYXkgY29tbWVudFxuIC8vIHRoaXMub3BlblF1ZXN0aW9uQm9va01vZGFsKCk7XG5cbn1cblxuZGVsZXRlRXZlbnQoIGV2ZW50SWQ6IG51bWJlciwgZW50cnlHcm91cDogYW55KSB7XG4gIGxldCBldmVudCA9IHRoaXMuYWxsRXZlbnRzPy5maW5kKGUgPT4gZT8uaWQgPT09IGV2ZW50SWQpO1xuICBpZiAoZXZlbnQpIHtcbiAgICAgIC8vIEZpbmQgdGhlIGluZGV4IG9mIHRoZSBlbnRyeUdyb3VwIHRvIGRlbGV0ZVxuICAgICAgY29uc3QgZW50cnlJbmRleCA9IGV2ZW50LmVudHJpZXMuaW5kZXhPZihlbnRyeUdyb3VwKTtcbiAgICAgIGlmIChlbnRyeUluZGV4ID4gLTEpIHtcbiAgICAgICAgICBldmVudC5lbnRyaWVzLnNwbGljZShlbnRyeUluZGV4LCAxKTsgLy8gUmVtb3ZlIHRoZSBzcGVjaWZpYyBlbnRyeVxuICAgICAgfVxuXG4gICAgICAvLyBJZiB0aGUgZXZlbnQgaGFzIG5vIG1vcmUgZW50cmllcywgcmVtb3ZlIHRoZSBldmVudCBlbnRpcmVseVxuICAgICAgaWYgKGV2ZW50LmVudHJpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgY29uc3QgZXZlbnRJbmRleCA9IHRoaXMuYWxsRXZlbnRzPy5pbmRleE9mKGV2ZW50KTtcbiAgICAgICAgICBpZiAoZXZlbnRJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgIHRoaXMuYWxsRXZlbnRzPy5zcGxpY2UoZXZlbnRJbmRleCwgMSk7IC8vIFJlbW92ZSB0aGUgZW50aXJlIGV2ZW50XG4gICAgICAgICAgfVxuICAgICAgfVxuICB9XG4gIGxldCBldmVudERhdGEgPSB7fTtcbiAgIGV2ZW50RGF0YVsnYWN0aW9uJ10gPSBcImRlbGV0ZVwiO1xuICAgZXZlbnREYXRhWydkYXRhJ10gPSBldmVudDtcbiAgdGhpcy5ldmVudFNlbGVjdGVkLmVtaXQoZXZlbnREYXRhKTtcbiAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7IC8vIFJlZ2VuZXJhdGUgdGhlIGNhbGVuZGFyIHRvIHJlZmxlY3QgdGhlIGNoYW5nZXNcbn1cblxuIC8vIFZEIDA2U2VwMjQgY2FsZW5kYXIgY2hhbmdlc1xuICBhZGRFdmVudChkYXk6IENhbGVuZGFyRGF5LCBlbnRyeVF1ZXMpIHtcbiAgICAvLyBUcmFuc2Zvcm0gbmV3IGVudHJpZXMgaW50byB0aGUgZGVzaXJlZCBmb3JtYXRcbiAgICBjb25zdCBuZXdFbnRyaWVzID0gZW50cnlRdWVzLnJlZHVjZSgoYWNjLCBxKSA9PiB7XG4gICAgICAgIGFjY1txLmlkXSA9IHsgLi4ucSB9O1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9KTtcblxuICAgIC8vIEZpbmQgYW4gZXhpc3RpbmcgZXZlbnQgZm9yIHRoZSBnaXZlbiBkYXRlXG4gICAgY29uc3QgZXhpc3RpbmdFdmVudCA9IGRheS5ldmVudHM/LmZpbmQoZXZlbnQgPT4gZXZlbnQuZGF0ZSA9PT0gZGF5LmRhdGUpO1xuXG4gICAgaWYgKGV4aXN0aW5nRXZlbnQpIHtcbiAgICAgICAgLy8gTWVyZ2UgbmV3IGVudHJpZXMgaW50byB0aGUgZXhpc3RpbmcgZXZlbnQncyBlbnRyaWVzIGFycmF5XG4gICAgICAgIC8vIENoZWNrIGlmIHRoZSBlbnRyaWVzIGFycmF5IGFscmVhZHkgY29udGFpbnMgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgaWRcbiAgICAgICAgY29uc3QgZXhpc3RpbmdFbnRyaWVzID0gZXhpc3RpbmdFdmVudC5lbnRyaWVzLm1hcChlbnRyeSA9PiAoeyAuLi5lbnRyeSB9KSk7XG4gICAgICAgIC8vIEFwcGVuZCBuZXcgZW50cmllcyB0byB0aGUgZXhpc3RpbmcgZW50cmllc1xuICAgICAgICBleGlzdGluZ0VudHJpZXMucHVzaChuZXdFbnRyaWVzKTtcbiAgICAgICAgZXhpc3RpbmdFdmVudC5lbnRyaWVzID0gZXhpc3RpbmdFbnRyaWVzO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBldmVudCBpZiBpdCBkb2Vzbid0IGV4aXN0IGZvciB0aGUgZ2l2ZW4gZGF0ZVxuICAgICAgICBjb25zdCBuZXdFdmVudCA9IHtcbiAgICAgICAgICAgIGlkOiB0aGlzLmdlbmVyYXRlSWQoKSxcbiAgICAgICAgICAgIGRhdGU6IGRheS5kYXRlLFxuICAgICAgICAgICAgZW50cmllczogW25ld0VudHJpZXNdIC8vIFdyYXAgdGhlIG5ldyBlbnRyaWVzIGluIGFuIGFycmF5XG4gICAgICAgIH07XG4gICAgICAgIGRheS5ldmVudHMgPSBkYXk/LmV2ZW50cyB8fCBbXVxuICAgICAgICBkYXkuZXZlbnRzLnB1c2gobmV3RXZlbnQpO1xuICAgICAgICB0aGlzLmFsbEV2ZW50cz8ucHVzaChuZXdFdmVudCk7XG4gICAgICAgIC8vdGhpcy5ldmVudFNlbGVjdGVkLmVtaXQodGhpcy5hbGxFdmVudHMpO1xuICAgICAgICBsZXQgZXZlbnREYXRhID0ge307XG4gICAgICAgIGV2ZW50RGF0YVsnYWN0aW9uJ10gPSBcImFkZFwiO1xuICAgICAgICBldmVudERhdGFbJ2RhdGEnXSA9IG5ld0V2ZW50O1xuICAgICAgICB0aGlzLmV2ZW50U2VsZWN0ZWQuZW1pdChldmVudERhdGEpO1xuICAgIH1cbiAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIoKTtcbiAgICBjb25zb2xlLmxvZygnYWxsRXZlbnRzJywgdGhpcy5hbGxFdmVudHMpO1xufVxuIC8vIFZEIDA2U2VwMjQgY2FsZW5kYXIgY2hhbmdlc1xuIG9uU2F2ZSgpIHtcbiAgICBpZiAodGhpcy5lZGl0aW5nRXZlbnRJZCAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBldmVudCA9IHRoaXMuYWxsRXZlbnRzPy5maW5kKGUgPT4gZT8uaWQgPT09IHRoaXMuZWRpdGluZ0V2ZW50SWQpO1xuICAgICAgICBpZiAoZXZlbnQgJiYgdGhpcy5lZGl0aW5nRW50cnlHcm91cCkge1xuICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBzcGVjaWZpYyBlbnRyeSBncm91cCB3aXRoaW4gdGhlIGV2ZW50XG4gICAgICAgICAgICBjb25zdCBlbnRyeUluZGV4ID0gZXZlbnQuZW50cmllcy5maW5kSW5kZXgoZW50cnlHcm91cCA9PiBlbnRyeUdyb3VwID09PSB0aGlzLmVkaXRpbmdFbnRyeUdyb3VwKTtcbiAgICAgICAgICAgIGlmIChlbnRyeUluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICBldmVudC5lbnRyaWVzW2VudHJ5SW5kZXhdID0gdGhpcy5jYWxlbmRhclF1ZXN0aW9uLnJlZHVjZSgoYWNjLCBxKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGFjY1txLmlkXSA9IHsgLi4ucSB9O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgICAgIH0sIHt9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAvLyB0aGlzLmV2ZW50U2VsZWN0ZWQuZW1pdCh0aGlzLmFsbEV2ZW50cyk7XG4gICAgICBsZXQgZXZlbnREYXRhID0ge307XG4gICAgICBldmVudERhdGFbJ2FjdGlvbiddID0gXCJlZGl0XCI7XG4gICAgICBldmVudERhdGFbJ2RhdGEnXSA9IGV2ZW50O1xuICAgICAgdGhpcy5ldmVudFNlbGVjdGVkLmVtaXQoZXZlbnREYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZERheSkge1xuICAgICAgICAgICAgdGhpcy5hZGRFdmVudCh0aGlzLnNlbGVjdGVkRGF5LCB0aGlzLmNhbGVuZGFyUXVlc3Rpb24pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRoaXMuY2xvc2VDYWxlbmRhck1vZGFsKCk7XG4gICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7XG59XG5cbiAgLy8gb25DYW5jZWwoKSB7XG4gIC8vICAgY29uc29sZS5sb2coJ0NhbmNlbCBidXR0b24gY2xpY2tlZCcpO1xuICAvLyAgIHRoaXMuY2xvc2VDYWxlbmRhck1vZGFsKCk7XG4gIC8vIH1cbiAgLy90aGlzIGZ1bnRpb24gbmVlZCB0byBiZSB1c2VkXG4gIC8vIGhhbmRsZVF1ZXN0aW9uRXZlbnQocXVlcyl7XG4gIC8vICAgICAvLyBVcGRhdGUgdGhlIHF1ZXN0aW9ucyBhcnJheSB3aXRoIHRoZSBuZXcgcXVlc3Rpb25cbiAgLy8gICAgIGNvbnN0IGluZGV4ID0gdGhpcy5jYWxlbmRhclF1ZXN0aW9uLmZpbmRJbmRleChxID0+IHEuaWQgPT09IHF1ZXMuaWQpO1xuICAvLyAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgLy8gICAgICAgLy8gSWYgcXVlc3Rpb24gYWxyZWFkeSBleGlzdHMsIHVwZGF0ZSBpdFxuICAvLyAgICAgICB0aGlzLmNhbGVuZGFyUXVlc3Rpb25baW5kZXhdID0gcXVlcztcbiAgLy8gICAgIH0gZWxzZSB7XG4gIC8vICAgICAgIC8vIElmIHF1ZXN0aW9uIGRvZXNuJ3QgZXhpc3QsIGFkZCBpdCB0byB0aGUgYXJyYXlcbiAgLy8gICAgICAgdGhpcy5jYWxlbmRhclF1ZXN0aW9uLnB1c2gocXVlcyk7XG4gIC8vICAgICB9XG4gIC8vICAgICBjb25zb2xlLmxvZyh0aGlzLmNhbGVuZGFyUXVlc3Rpb24pO1xuICAvLyAgIH1cblxuIC8vIFZEIDA2U2VwMjQgY2FsZW5kYXIgY2hhbmdlc1xuICBnZW5lcmF0ZUlkKCkge1xuICAgIHJldHVybiAnXycgKyBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiwgOSk7XG4gIH1cblxuICBnZXRFbnRyeUtleXMoZW50cnlHcm91cDogYW55KTogc3RyaW5nW10ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhlbnRyeUdyb3VwKTtcbn1cblxucmVtb3ZlQ2hhcmFjdGVycyhxdWVzdGlvblRleHQ6c3RyaW5nKXtcbiAgbGV0IHVwZGF0ZWRUZXh0ID0gcXVlc3Rpb25UZXh0Py5yZXBsYWNlKC88W14+XSo+L2csICcnKTtcbiAgcmV0dXJuIHVwZGF0ZWRUZXh0O1xufVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwiYWxpZ24tY2FsZW5kYXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItaGVhZGVyXCI+XG4gICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwicHJldmlvdXNNb250aCgpXCI+PDwgUHJldmlvdXMgPj48L2J1dHRvbj5cbiAgICAgICAgICA8aDM+e3sgY3VycmVudERhdGUgfCBkYXRlOiAnTU1NTSB5eXl5JyB9fTwvaDM+XG4gICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwibmV4dE1vbnRoKClcIj48PCBOZXh0ID4+PC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1ncmlkXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRheS1vZi13ZWVrXCIgKm5nRm9yPVwibGV0IGRheSBvZiBkYXlzT2ZXZWVrXCI+e3sgZGF5IH19PC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNhbGVuZGFyLWRheVwiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXkgb2YgY2FsZW5kYXJEYXlzXCJcbiAgICAgICAgICAgICAgW2NsYXNzLm5vdC1jdXJyZW50LW1vbnRoXT1cIiFkYXkuaXNDdXJyZW50TW9udGhcIlxuICAgICAgICAgICAgICBbY2xhc3MucGFzdF09XCJkYXkuaXNQYXN0XCJcbiAgICAgICAgICAgICAgW2NsYXNzLnRvZGF5XT1cImRheS5pc1RvZGF5XCJcbiAgICAgICAgICAgICAgW2NsYXNzLmZ1dHVyZV09XCJkYXkuaXNGdXR1cmVcIlxuICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiZGF5LmlzU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0RGF5KGRheSlcIlxuICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXktbnVtYmVyXCI+e3sgZGF5LmRhdGUuZ2V0RGF0ZSgpIH19XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkYXk/LmV2ZW50cz8ubGVuZ3RoID4gMFwiIGNsYXNzPVwiZW50cnktaW5kaWNhdG9yXCIgW2NsYXNzLnNlbGVjdF09XCJkYXk/LmlzU2VsZWN0ZWRcIj48L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8IS0tIDxkaXYgKm5nRm9yPVwibGV0IGV2ZW50IG9mIGRheS5ldmVudHNcIiA+XG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBlbnRyeUdyb3VwIG9mIGV2ZW50LmVudHJpZXNcIiBjbGFzcz1cImV2ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQga2V5IG9mIGdldEVudHJ5S2V5cyhlbnRyeUdyb3VwKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZW50cnlHcm91cFtrZXldLnR5cGUgPT0gJ1RpbWUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBlbnRyeUdyb3VwW2tleV0uaW5wdXQ/LnZhbHVlIHwgZGF0ZTogJ3Nob3J0VGltZScgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJlbnRyeUdyb3VwW2tleV0udHlwZSAhPSAnVGltZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGVudHJ5R3JvdXBba2V5XS5pbnB1dCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImFwcG9pbmFwcG9pbnRtZW50XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXBwb2ludG1lbnRzLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxoND5BZGQgQXBwb2ludG1lbnQ8L2g0PlxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJzZWxlY3RlZERheVwiIChjbGljayk9XCJhZGRBcHBvaW50bWVudCgpXCI+QWRkPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDwhLS1WRCAwNlNlcDI0IGNhbGVuZGFyIHVwZGF0ZXMtLT4gXG4gICAgICA8IS0tIFJTIDA5REVDMjQgQ2hhbmdlZCBrZXlzLS0+IFxuICAgICAgPGRpdiAqbmdJZj1cInNob3dBcHBvaW5tZW50U2VjdGlvbiAmJiBzZWxlY3RlZERheT8uZXZlbnRzPy5sZW5ndGggPiAwXCIgY2xhc3M9XCJhcHBvaW50bWVudHMtY29udGFpbmVyXCI+XG4gICAgICAgICAgPGg0PkFwcG9pbnRtZW50czwvaDQ+XG4gICAgICAgICAgPGRpdiAgKm5nRm9yPVwibGV0IGV2ZW50IG9mIHNlbGVjdGVkRGF5Py5ldmVudHNcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50XCIgKm5nRm9yPVwibGV0IGVudHJ5R3JvdXAgb2YgZXZlbnQuZW50cmllc1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtaW5mb1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGtleSBvZiBnZXRFbnRyeUtleXMoZW50cnlHcm91cClcIiBjbGFzcz1cImVudHJ5LXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImVudHJ5R3JvdXBba2V5XS5xdWVzdGlvblRleHRcIiBjbGFzcz1cImVudHJ5LXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3JlbW92ZUNoYXJhY3RlcnMoZW50cnlHcm91cFtrZXldLnF1ZXN0aW9uVGV4dCl9fTpcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVudHJ5LXZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBWRCAwOVNlcDI0LSBkYXRlIHR5cGUgYW5kIGxpbmsgdHlwZSB1cGRhdGVzICAgIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZW50cnlHcm91cFtrZXldLnR5cGUgIT0gJ1RpbWUnICYmIGVudHJ5R3JvdXBba2V5XS50eXBlICE9ICdMaW5rJyYmIGVudHJ5R3JvdXBba2V5XS50eXBlICE9ICdEYXRlJ1wiPnt7IGVudHJ5R3JvdXBba2V5XS5pbnB1dCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImVudHJ5R3JvdXBba2V5XS50eXBlID09ICdUaW1lJ1wiPnt7IGVudHJ5R3JvdXBba2V5XS5pbnB1dCB8IGRhdGU6ICdzaG9ydFRpbWUnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZW50cnlHcm91cFtrZXldLnR5cGUgPT0gJ0RhdGUnXCI+e3sgZW50cnlHcm91cFtrZXldLmlucHV0IHwgZGF0ZTogJ21lZGl1bURhdGUnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZW50cnlHcm91cFtrZXldLnR5cGUgPT0gJ0xpbmsnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIFtocmVmXT1cIicvLycrIGVudHJ5R3JvdXBba2V5XS5pbnB1dFwiIHRhcmdldD1cIl9ibGFua1wiPnt7cmVtb3ZlQ2hhcmFjdGVycyhlbnRyeUdyb3VwW2tleV0ucXVlc3Rpb25UZXh0KX19PC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZWRpdEV2ZW50KGV2ZW50LGVudHJ5R3JvdXApXCI+RWRpdDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZGVsZXRlRXZlbnQoZXZlbnQuaWQsZW50cnlHcm91cClcIj5EZWxldGU8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gPGFwcC1jdXN0b20tbW9kZWxcbiAgW21vZGFsVGl0bGVdPVwibW9kYWxUaXRsZVwiXG4gIFtpc01vZGFsT3Blbl09XCJpc01vZGFsT3BlblwiXG4gIFttb2RhbFNpemVdPVwibW9kYWxTaXplXCJcbiAgW3NhdmVCdXR0b25WYWx1ZV09XCJzYXZlQnV0dG9uVmFsdWVcIlxuICBbbW9kYWxGb290ZXJdPVwibW9kYWxGb290ZXJcIlxuICAoc2F2ZUJ1dHRvbkVtaXQpPVwib25TYXZlKClcIlxuICAoY2FuY2VsQnV0dG9uRW1pdCk9XCJvbkNhbmNlbCgpXCJcbj5cbjxsaWItcXVlc3Rpb25ib29rIFtxYkl0ZW1dPVwicWJSZWZyZW5jZUJvb2tcIiBbcXVlc3Rpb25zXT1cInJlZmVyZW5jZVF1ZXN0aW9uc1wiIChoYW5kbGVRdWVzdGlvbik9XCJoYW5kbGVRdWVzdGlvbkV2ZW50KCRldmVudClcIj48L2xpYi1xdWVzdGlvbmJvb2s+XG48bmctdGVtcGxhdGUgZHluYW1pY0NvbXBvbmVudEhvc3QgPjwvbmctdGVtcGxhdGU+XG48L2FwcC1jdXN0b20tbW9kZWw+IC0tPiJdfQ==
|
|
@@ -11,7 +11,7 @@ export class CustomDropdownComponent {
|
|
|
11
11
|
changeService;
|
|
12
12
|
dataService;
|
|
13
13
|
i18nService;
|
|
14
|
-
options;
|
|
14
|
+
options = [];
|
|
15
15
|
placeholder;
|
|
16
16
|
apiMeta;
|
|
17
17
|
selectedValue;
|
|
@@ -38,8 +38,9 @@ export class CustomDropdownComponent {
|
|
|
38
38
|
labelField;
|
|
39
39
|
valueField;
|
|
40
40
|
subscription;
|
|
41
|
-
apiObj;
|
|
41
|
+
//public apiObj:APIMeta;
|
|
42
42
|
uniqueKey;
|
|
43
|
+
apiObj = {};
|
|
43
44
|
ngOnInit() {
|
|
44
45
|
}
|
|
45
46
|
getOptions() {
|
|
@@ -51,7 +52,8 @@ export class CustomDropdownComponent {
|
|
|
51
52
|
this.placeholder = this.placeholder ? this.placeholder : '---Select option---';
|
|
52
53
|
if (this.apiMeta) {
|
|
53
54
|
try {
|
|
54
|
-
|
|
55
|
+
// MSM-27MAR25 Ensure ques.subText is always an object by parsing it if it's a string
|
|
56
|
+
this.apiObj = typeof this.apiMeta === 'object' ? this.apiMeta : JSON.parse(this.apiMeta);
|
|
55
57
|
// Check if apiObj and apiObj.field are defined
|
|
56
58
|
if (this.apiObj && this.apiObj.field) {
|
|
57
59
|
this.labelField = this.apiObj.field;
|
|
@@ -182,11 +184,11 @@ export class CustomDropdownComponent {
|
|
|
182
184
|
}
|
|
183
185
|
}
|
|
184
186
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CustomDropdownComponent, deps: [{ token: i1.ChangeService }, { token: i2.DataService }, { token: i3.I18nService }], target: i0.ɵɵFactoryTarget.Component });
|
|
185
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CustomDropdownComponent, selector: "app-custom-dropdown", inputs: { options: "options", placeholder: "placeholder", apiMeta: "apiMeta", selectedValue: "selectedValue", progressBar: "progressBar", id: "id", readOnly: "readOnly", errorMessage: "errorMessage", error: "error", fromShengel: "fromShengel", question: "question", referenceField: "referenceField", token: "token" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<!-- HA 18-JAN-24 Commenting these lines as we don't have to use shengel here -->\n<!-- <select\n [ngClass]=\"{\n 'dt-line dpDown down myt-dropbox myt-border-r myt-font1': progressBar,\n 'custom-select': !progressBar\n }\" class=\"custom-select mr-sm-2 dd-height\" \n [id]=\"id\" \n [(ngModel)]=\"selectedValue\"\n (change)=\"selectChange($event.target.value);\" \n [style.borderColor]=\"error ? 'red' : '#858585'\"\n [style.color]=\"error ? 'red' : ''\">\n <option *ngFor=\"let option of options\" [value]=\"this.apiMeta !== undefined ? option.title : option.value\" class=\"option\">{{ this.apiMeta !== undefined ? option.title : option.value }}</option>\n <option *ngIf=\"errorMessage\" value=\"\" disabled hidden>{{ errorMessage }}</option>\n</select> -->\n<!-- // VD 12Jun24 - readonly change-->\n<!-- VD 01Aug24 - validation change-->\n<!-- VD 07Aug24 - isDependentField change-->\n<!-- VD 25Oct24 - changes-->\n<!-- RS 09DEC24 Changed keys--> \n<ng-select\n [class]=\"invalidFieldIds.includes(id) || error ? 'shengel-custom-select invalid' : 'shengel-custom-select'\"\n [(ngModel)]=\"selectedValue\" \n [placeholder]=\"placeholder\"\n [disabled]=\"readOnly\"\n (click)=\"getOptions()\"\n (change)=\"selectChange($event)\"\n [id]=\"id\">\n <ng-option \n *ngFor=\"let option of options\" \n [value]=\"apiObj && !apiObj.isDependentField ? option : option?.value\">\n {{ apiObj && !apiObj.isDependentField && option ? option[labelField] : option?.value }}\n </ng-option> \n</ng-select>\n<span *ngIf=\"error || invalidFieldIds.includes(id)\" class=\"error-msg\">{{errorMessage}}</span>\n", styles: [".ng-select{width:100%}.invalid{border:1px solid red!important}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.NgSelectComponent, selector: "ng-select", inputs: ["ariaLabelDropdown", "bindLabel", "bindValue", "ariaLabel", "markFirst", "placeholder", "fixedPlaceholder", "notFoundText", "typeToSearchText", "preventToggleOnRightClick", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "ngClass", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick", "keyDownFn"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "component", type: i6.NgOptionComponent, selector: "ng-option", inputs: ["value", "disabled"] }] });
|
|
187
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CustomDropdownComponent, selector: "app-custom-dropdown", inputs: { options: "options", placeholder: "placeholder", apiMeta: "apiMeta", selectedValue: "selectedValue", progressBar: "progressBar", id: "id", readOnly: "readOnly", errorMessage: "errorMessage", error: "error", fromShengel: "fromShengel", question: "question", referenceField: "referenceField", token: "token" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<!-- HA 18-JAN-24 Commenting these lines as we don't have to use shengel here -->\n<!-- <select\n [ngClass]=\"{\n 'dt-line dpDown down myt-dropbox myt-border-r myt-font1': progressBar,\n 'custom-select': !progressBar\n }\" class=\"custom-select mr-sm-2 dd-height\" \n [id]=\"id\" \n [(ngModel)]=\"selectedValue\"\n (change)=\"selectChange($event.target.value);\" \n [style.borderColor]=\"error ? 'red' : '#858585'\"\n [style.color]=\"error ? 'red' : ''\">\n <option *ngFor=\"let option of options\" [value]=\"this.apiMeta !== undefined ? option.title : option.value\" class=\"option\">{{ this.apiMeta !== undefined ? option.title : option.value }}</option>\n <option *ngIf=\"errorMessage\" value=\"\" disabled hidden>{{ errorMessage }}</option>\n</select> -->\n<!-- // VD 12Jun24 - readonly change-->\n<!-- VD 01Aug24 - validation change-->\n<!-- VD 07Aug24 - isDependentField change-->\n<!-- VD 25Oct24 - changes-->\n<!-- RS 09DEC24 Changed keys--> \n <!-- AP 28MAR25 LabelField Checking -->\n<ng-select\n [class]=\"invalidFieldIds.includes(id) || error ? 'shengel-custom-select invalid' : 'shengel-custom-select'\"\n [(ngModel)]=\"selectedValue\" \n [placeholder]=\"placeholder\"\n [disabled]=\"readOnly\"\n (click)=\"getOptions()\"\n (change)=\"selectChange($event)\"\n [id]=\"id\">\n <ng-option \n *ngFor=\"let option of options\" \n [value]=\"apiObj && !apiObj.isDependentField ? option : option?.value\">\n {{ apiObj && !apiObj.isDependentField && option[labelField] ? option[labelField] : option?.value }}\n </ng-option> \n</ng-select>\n<span *ngIf=\"error || invalidFieldIds.includes(id)\" class=\"error-msg\">{{errorMessage}}</span>\n", styles: [".ng-select{width:100%}.invalid{border:1px solid red!important}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.NgSelectComponent, selector: "ng-select", inputs: ["ariaLabelDropdown", "bindLabel", "bindValue", "ariaLabel", "markFirst", "placeholder", "fixedPlaceholder", "notFoundText", "typeToSearchText", "preventToggleOnRightClick", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "ngClass", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick", "keyDownFn"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "component", type: i6.NgOptionComponent, selector: "ng-option", inputs: ["value", "disabled"] }] });
|
|
186
188
|
}
|
|
187
189
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CustomDropdownComponent, decorators: [{
|
|
188
190
|
type: Component,
|
|
189
|
-
args: [{ selector: 'app-custom-dropdown', template: "<!-- HA 18-JAN-24 Commenting these lines as we don't have to use shengel here -->\n<!-- <select\n [ngClass]=\"{\n 'dt-line dpDown down myt-dropbox myt-border-r myt-font1': progressBar,\n 'custom-select': !progressBar\n }\" class=\"custom-select mr-sm-2 dd-height\" \n [id]=\"id\" \n [(ngModel)]=\"selectedValue\"\n (change)=\"selectChange($event.target.value);\" \n [style.borderColor]=\"error ? 'red' : '#858585'\"\n [style.color]=\"error ? 'red' : ''\">\n <option *ngFor=\"let option of options\" [value]=\"this.apiMeta !== undefined ? option.title : option.value\" class=\"option\">{{ this.apiMeta !== undefined ? option.title : option.value }}</option>\n <option *ngIf=\"errorMessage\" value=\"\" disabled hidden>{{ errorMessage }}</option>\n</select> -->\n<!-- // VD 12Jun24 - readonly change-->\n<!-- VD 01Aug24 - validation change-->\n<!-- VD 07Aug24 - isDependentField change-->\n<!-- VD 25Oct24 - changes-->\n<!-- RS 09DEC24 Changed keys--> \n<ng-select\n [class]=\"invalidFieldIds.includes(id) || error ? 'shengel-custom-select invalid' : 'shengel-custom-select'\"\n [(ngModel)]=\"selectedValue\" \n [placeholder]=\"placeholder\"\n [disabled]=\"readOnly\"\n (click)=\"getOptions()\"\n (change)=\"selectChange($event)\"\n [id]=\"id\">\n <ng-option \n *ngFor=\"let option of options\" \n [value]=\"apiObj && !apiObj.isDependentField ? option : option?.value\">\n {{ apiObj && !apiObj.isDependentField && option ? option[labelField] : option?.value }}\n </ng-option> \n</ng-select>\n<span *ngIf=\"error || invalidFieldIds.includes(id)\" class=\"error-msg\">{{errorMessage}}</span>\n", styles: [".ng-select{width:100%}.invalid{border:1px solid red!important}\n"] }]
|
|
191
|
+
args: [{ selector: 'app-custom-dropdown', template: "<!-- HA 18-JAN-24 Commenting these lines as we don't have to use shengel here -->\n<!-- <select\n [ngClass]=\"{\n 'dt-line dpDown down myt-dropbox myt-border-r myt-font1': progressBar,\n 'custom-select': !progressBar\n }\" class=\"custom-select mr-sm-2 dd-height\" \n [id]=\"id\" \n [(ngModel)]=\"selectedValue\"\n (change)=\"selectChange($event.target.value);\" \n [style.borderColor]=\"error ? 'red' : '#858585'\"\n [style.color]=\"error ? 'red' : ''\">\n <option *ngFor=\"let option of options\" [value]=\"this.apiMeta !== undefined ? option.title : option.value\" class=\"option\">{{ this.apiMeta !== undefined ? option.title : option.value }}</option>\n <option *ngIf=\"errorMessage\" value=\"\" disabled hidden>{{ errorMessage }}</option>\n</select> -->\n<!-- // VD 12Jun24 - readonly change-->\n<!-- VD 01Aug24 - validation change-->\n<!-- VD 07Aug24 - isDependentField change-->\n<!-- VD 25Oct24 - changes-->\n<!-- RS 09DEC24 Changed keys--> \n <!-- AP 28MAR25 LabelField Checking -->\n<ng-select\n [class]=\"invalidFieldIds.includes(id) || error ? 'shengel-custom-select invalid' : 'shengel-custom-select'\"\n [(ngModel)]=\"selectedValue\" \n [placeholder]=\"placeholder\"\n [disabled]=\"readOnly\"\n (click)=\"getOptions()\"\n (change)=\"selectChange($event)\"\n [id]=\"id\">\n <ng-option \n *ngFor=\"let option of options\" \n [value]=\"apiObj && !apiObj.isDependentField ? option : option?.value\">\n {{ apiObj && !apiObj.isDependentField && option[labelField] ? option[labelField] : option?.value }}\n </ng-option> \n</ng-select>\n<span *ngIf=\"error || invalidFieldIds.includes(id)\" class=\"error-msg\">{{errorMessage}}</span>\n", styles: [".ng-select{width:100%}.invalid{border:1px solid red!important}\n"] }]
|
|
190
192
|
}], ctorParameters: () => [{ type: i1.ChangeService }, { type: i2.DataService }, { type: i3.I18nService }], propDecorators: { options: [{
|
|
191
193
|
type: Input
|
|
192
194
|
}], placeholder: [{
|
|
@@ -216,4 +218,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
216
218
|
}], valueChange: [{
|
|
217
219
|
type: Output
|
|
218
220
|
}] } });
|
|
219
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9jb21wb25lbnRzL2N1c3RvbS1kcm9wZG93bi9jdXN0b20tZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvY3VzdG9tLWRyb3Bkb3duL2N1c3RvbS1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFTLEtBQUssRUFBQyxNQUFNLEVBQUMsWUFBWSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBR3RGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7QUFZMUQsTUFBTSxPQUFPLHVCQUF1QjtJQWlCeEI7SUFDQTtJQUNEO0lBbEJBLE9BQU8sQ0FBVztJQUNsQixXQUFXLENBQVM7SUFDcEIsT0FBTyxDQUFTO0lBQ2hCLGFBQWEsQ0FBUztJQUN0QixXQUFXLENBQVU7SUFDckIsRUFBRSxDQUFRO0lBQ1YsUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLCtCQUErQjtJQUNqRCxZQUFZLENBQVM7SUFDckIsS0FBSyxDQUFLO0lBQ1YsV0FBVyxHQUFZLEtBQUssQ0FBQztJQUM3QixRQUFRLENBQUs7SUFDYixjQUFjLENBQVE7SUFDdEIsS0FBSyxDQUFRLENBQUksc0NBQXNDO0lBQ3RELFdBQVcsR0FBZ0MsSUFBSSxZQUFZLEVBQWlCLENBQUM7SUFDdkYsZUFBZSxHQUFZLEVBQUUsQ0FBQztJQUM5QixZQUNVLGFBQTRCLEVBQzVCLFdBQXdCLEVBQ3pCLFdBQXdCO1FBRnZCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3pCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBRS9CLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBQyxFQUFFO1lBQ25ELHdDQUF3QztZQUN4QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFTSxVQUFVLENBQVM7SUFDbkIsVUFBVSxDQUFTO0lBQzFCLFlBQVksQ0FBZTtJQUNwQixNQUFNLENBQVM7SUFDZixTQUFTLENBQVE7SUFFeEIsUUFBUTtJQUVSLENBQUM7SUFDRCxVQUFVO1FBQ1IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMxQixpRUFBaUU7UUFDakUsNkJBQTZCO1FBQzdCLHNDQUFzQztRQUN0Qyx1QkFBdUI7UUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQztRQUMvRSxJQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDdkMsK0NBQStDO2dCQUMvQyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDckMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztvQkFDcEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztvQkFDdkMsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQzNELElBQUksYUFBYSxFQUFFLENBQUM7d0JBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDM0MsQ0FBQzt5QkFBSyxDQUFDO3dCQUNMLElBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFDLENBQUM7NEJBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO3dCQUNwQixDQUFDO3dCQUVELGdJQUFnSTt3QkFDaEksSUFBSSxZQUFZLENBQUU7d0JBQ2xCLElBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQzs0QkFDeEIsSUFBRyxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7Z0NBQzdELHlDQUF5QztnQ0FDekMsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7Z0NBQ2pFLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFJLHNFQUFzRTtnQ0FDOUgsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUksZ0ZBQWdGO2dDQUN4SSxJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUM7Z0NBQ3JCLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUF5Qyx5QkFBeUI7Z0NBQ2pGLG1GQUFtRjtnQ0FDbkYsZUFBZSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtvQ0FDbEMsdUVBQXVFO29DQUN2RSwwQkFBMEI7b0NBQzFCLElBQUksZUFBZSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLGNBQWMsS0FBSyxTQUFTLENBQUMsQ0FBQztvQ0FDaEgsbUZBQW1GO29DQUNqRixJQUFJLFNBQVMsSUFBSSxlQUFlLEVBQUUsQ0FBQyxDQUFHLHlEQUF5RDt3Q0FDN0YsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFJLCtCQUErQjtvQ0FDekcsQ0FBQzt5Q0FBTSxDQUFDLENBQUksMkdBQTJHO3dDQUNySCxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7b0NBQ3BFLENBQUM7b0NBRUQsTUFBTSxFQUFFLENBQUM7Z0NBQ1gsQ0FBQyxDQUFDLENBQUM7Z0NBQ0gsWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLEdBQUcsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dDQUNsRSxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDOzRCQUM1QixDQUFDO2lDQUFNLENBQUM7Z0NBQ0osNENBQTRDO2dDQUM5QyxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7NEJBQ3RDLENBQUM7NEJBRUQsdURBQXVEOzRCQUN2RCxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtnQ0FDcEUsbUZBQW1GO2dDQUNuRiw4REFBOEQ7Z0NBQzlELElBQUksU0FBUyxDQUFDO2dDQUNkLElBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUMsQ0FBQztvQ0FDdkIsK0NBQStDO29DQUMvQyx3Q0FBd0M7b0NBQ3hDLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztvQ0FDeEUsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO29DQUNqQixpREFBaUQ7b0NBQ2pELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7d0NBQzNDLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3Q0FDeEIsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQ0FDckIsQ0FBQztvQ0FDRCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztnQ0FDekIsQ0FBQztxQ0FBSSxDQUFDLENBQUUsMERBQTBEO29DQUNoRSxTQUFTLEdBQUcsV0FBVyxDQUFDO29DQUN4QixJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztnQ0FDM0IsQ0FBQztnQ0FDRCxzREFBc0Q7Z0NBQ3RELElBQUcsSUFBSSxDQUFDLFNBQVMsRUFBQyxDQUFDO29DQUNqQixZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztnQ0FDckUsQ0FBQztnQ0FDRCwrREFBK0Q7NEJBQ2pFLENBQUMsQ0FBQyxDQUFBO3dCQUNKLENBQUM7d0JBRUQsc0RBQXNEO3dCQUN0RCwyREFBMkQ7d0JBQzNELElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7d0JBQzVDLElBQUcsUUFBUSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFDLENBQUM7NEJBQzdELDRCQUE0Qjs0QkFDNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FDL0QsQ0FBQyxXQUFXLEVBQUUsRUFBRTtnQ0FDZCxJQUFHLFdBQVcsSUFBSSxTQUFTLEVBQUUsQ0FBQztvQ0FDNUIscURBQXFEO29DQUNyRCxJQUFHLFdBQVcsQ0FBQyxRQUFRLElBQUksU0FBUyxJQUFJLFdBQVcsQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO3dDQUNuRyxzRUFBc0U7d0NBQ3RFLGtCQUFrQjt3Q0FDbEIsdUNBQXVDO3dDQUNyQyxJQUFJLFNBQVMsQ0FBQzt3Q0FDZCxJQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFDLENBQUM7NENBQ3ZCLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7NENBQ2pGLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQzs0Q0FDakIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnREFDM0MsSUFBSSxJQUFJLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dEQUN4QixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDOzRDQUNyQixDQUFDOzRDQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO3dDQUN6QixDQUFDOzZDQUFJLENBQUM7NENBQ0osU0FBUyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUM7NENBQ2pDLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO3dDQUMzQixDQUFDO3dDQUNILHNEQUFzRDt3Q0FDdEQsSUFBRyxJQUFJLENBQUMsU0FBUyxFQUFDLENBQUM7NENBQ2pCLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO3dDQUNyRSxDQUFDO29DQUNELENBQUM7b0NBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dDQUNqRSxDQUFDOzRCQUNMLENBQUMsQ0FDRixDQUFDO3dCQUNGLENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNqRCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFDRCx3Q0FBd0M7SUFFdEMsWUFBWSxDQUFDLEtBQVM7UUFDcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkQsc0JBQXNCO1FBQ3RCLElBQUksTUFBTSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUMsQ0FBQyxvQ0FBb0M7UUFDdEUsTUFBTSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNyQyxNQUFNLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDNUMsTUFBTSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN6RCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5Qix5REFBeUQ7UUFDekQsSUFBRyxLQUFLLEVBQUMsQ0FBQztZQUNSLElBQUksQ0FBQyxlQUFlLEdBQUUsRUFBRSxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO3dHQS9LVSx1QkFBdUI7NEZBQXZCLHVCQUF1QixrYUNmcEMsNGxEQWtDQTs7NEZEbkJhLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxxQkFBcUI7c0lBS3RCLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csRUFBRTtzQkFBVixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCxJbnB1dCxPdXRwdXQsRXZlbnRFbWl0dGVyLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBUElNZXRhIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9hcGltZXRhJztcbmltcG9ydCB7IENoYW5nZVdyYXBwZXIgfSBmcm9tICcuLi8uLi9tb2RlbC9jaGFuZ2VXcmFwcGVyJztcbmltcG9ydCB7IENoYW5nZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jaGFuZ2Uuc2VydmljZSc7XG4vLyBIQSAxOURFQzIzIGltcG9ydGVkIHRyYW5zbGF0aW9uIHNlcnZpY2VcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaTE4bi5zZXJ2aWNlJztcbi8vIFZEIDIzSkFOMjQgdXNlZCBzZXJ2aWNlIGZpbGUgZm9yIGNhbGxvdXRcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGF0YS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWN1c3RvbS1kcm9wZG93bicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jdXN0b20tZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jdXN0b20tZHJvcGRvd24uY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIEN1c3RvbURyb3Bkb3duQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgb3B0aW9uczogc3RyaW5nW107XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGFwaU1ldGE6IHN0cmluZztcbiAgQElucHV0KCkgc2VsZWN0ZWRWYWx1ZTogc3RyaW5nO1xuICBASW5wdXQoKSBwcm9ncmVzc0JhcjogYm9vbGVhbjtcbiAgQElucHV0KCkgaWQ6c3RyaW5nO1xuICBASW5wdXQoKSByZWFkT25seSA9IGZhbHNlOyAvLyBWRCAxMkp1bjI0IC0gcmVhZG9ubHkgY2hhbmdlXG4gIEBJbnB1dCgpIGVycm9yTWVzc2FnZTogc3RyaW5nO1xuICBASW5wdXQoKSBlcnJvcjphbnk7XG4gIEBJbnB1dCgpIGZyb21TaGVuZ2VsOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHF1ZXN0aW9uOmFueTtcbiAgQElucHV0KCkgcmVmZXJlbmNlRmllbGQ6c3RyaW5nO1xuICBASW5wdXQoKSB0b2tlbjpzdHJpbmc7ICAgIC8vIFZEIDE5SkFOMjQgLSBnZXR0aW5nIHRva2VuIGFzIGlucHV0XG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPENoYW5nZVdyYXBwZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxDaGFuZ2VXcmFwcGVyPigpO1xuICBpbnZhbGlkRmllbGRJZHM6c3RyaW5nW10gPSBbXTtcbiAgY29uc3RydWN0b3IoIFxuICAgIHByaXZhdGUgY2hhbmdlU2VydmljZTogQ2hhbmdlU2VydmljZSwgXG4gICAgcHJpdmF0ZSBkYXRhU2VydmljZTogRGF0YVNlcnZpY2UsXG4gICAgcHVibGljIGkxOG5TZXJ2aWNlOiBJMThuU2VydmljZSxcbiAgICAgICAgKSB7IFxuICAgIHRoaXMuY2hhbmdlU2VydmljZS5zdWJtaXRWYWxpZGF0ZSQuc3Vic2NyaWJlKChkYXRhKT0+e1xuICAgICAgLy8gdG8gZ2V0IHRoZSBlcnJvciBtZXNzYWdlJ3MgZmllbGQgaWQnc1xuICAgICAgdGhpcy5pbnZhbGlkRmllbGRJZHMucHVzaChkYXRhKTtcbiAgICB9KVxuICB9XG5cbiAgcHVibGljIGxhYmVsRmllbGQ6IHN0cmluZztcbiAgcHVibGljIHZhbHVlRmllbGQ6IHN0cmluZztcbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBhcGlPYmo6QVBJTWV0YTtcbiAgcHVibGljIHVuaXF1ZUtleTpzdHJpbmc7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgXG4gIH1cbiAgZ2V0T3B0aW9ucygpe1xuICAgIGNvbnNvbGUubG9nKCd0ZXN0IGNsaWNrJyk7XG4gICAgLy8gY29uc29sZS5sb2coJ2luc2lkZSBvbmluaXQgb2YgY3VzdG9tLWRyb3Bkb3duIG9mICcgKyB0aGlzLmlkKTtcbiAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmFwaU1ldGEpO1xuICAgIC8vVkQgMDdBdWcyNCAtIGlzRGVwZW5kZW50RmllbGQgY2hhbmdlXG4gICAgLy8gVkQgMjVPY3QyNCAtIGNoYW5nZXNcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5wbGFjZWhvbGRlciA/IHRoaXMucGxhY2Vob2xkZXIgOiAnLS0tU2VsZWN0IG9wdGlvbi0tLSc7XG4gICAgaWYodGhpcy5hcGlNZXRhKSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuYXBpT2JqID0gSlNPTi5wYXJzZSh0aGlzLmFwaU1ldGEpO1xuICAgICAgLy8gQ2hlY2sgaWYgYXBpT2JqIGFuZCBhcGlPYmouZmllbGQgYXJlIGRlZmluZWRcbiAgICAgIGlmICh0aGlzLmFwaU9iaiAmJiB0aGlzLmFwaU9iai5maWVsZCkge1xuICAgICAgICB0aGlzLmxhYmVsRmllbGQgPSB0aGlzLmFwaU9iai5maWVsZDtcbiAgICAgICAgdGhpcy51bmlxdWVLZXkgPSB0aGlzLmFwaU9iai51bmlxdWVLZXk7XG4gICAgICAgIGNvbnN0IGNhY2hlZE9wdGlvbnMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnVuaXF1ZUtleSk7XG4gICAgICAgIGlmIChjYWNoZWRPcHRpb25zKSB7XG4gICAgICAgICAgdGhpcy5vcHRpb25zID0gSlNPTi5wYXJzZShjYWNoZWRPcHRpb25zKTtcbiAgICAgICAgfWVsc2Uge1xuICAgICAgICAgIGlmKCF0aGlzLmFwaU9iai5pc0RlcGVuZGVudEZpZWxkKXtcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IFtdO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFZEIDA5U2VwMjQtIHNldHVwIHRoZSBxdWVyeSBwYXJhbSBmb3IgYXBpIGNhbGwgLy8gTVIgMDhKQU4yNCBEZXBlbmRlbnRGaWVsZCBBUEkgRml4IG1vdmVkIGJlbG93IGxvZ2ljIGZyb20gYWJvdmUgaWYgY29uZGl0aW9uXG4gICAgICAgICAgbGV0IGZ1bGxFbmRQb2ludCA7XG4gICAgICAgICAgaWYodGhpcy5hcGlPYmouZW5kcG9pbnQpIHtcbiAgICAgICAgICAgIGlmKHRoaXMuYXBpT2JqLnF1ZXJ5VmFsdWVSZWZlcmVuY2UgJiYgdGhpcy5hcGlPYmoucXVlcnlGaWVsZCkge1xuICAgICAgICAgICAgICAvLyBwcm9jZXNzIHRoZSBlbmQgcG9pbnQgd2l0aCBxdWVyeSBwYXJhbVxuICAgICAgICAgICAgICBsZXQgcXVlcnlSZWZlcmVuY2VzID0gdGhpcy5hcGlPYmoucXVlcnlWYWx1ZVJlZmVyZW5jZS5zcGxpdCgnLCcpO1xuICAgICAgICAgICAgICBsZXQgcXVlcnlGaWVsZHMgPSB0aGlzLmFwaU9iai5xdWVyeUZpZWxkLnNwbGl0KCcsJyk7ICAgIC8vIE1SIDA4SkFOMjQgc2ltaWxhciB0byBhYm92ZSB2YWx1ZXJlZmVyZW5jZSBnZXQgbGlzdCBvZiBRVUVSWSBGaWVsZHNcbiAgICAgICAgICAgICAgbGV0IHF1ZXJ5VmFsdWVzID0gdGhpcy5hcGlPYmoucXVlcnlWYWx1ZS5zcGxpdCgnLCcpOyAgICAvLyBNUiAwOEpBTjI0IHNpbWlsYXIgdG8gYWJvdmUgdmFsdWVyZWZlcmVuY2UgZ2V0IGxpc3Qgb2YgUVVFUlkgVmFsdWVzIChEZWZhdWx0KVxuICAgICAgICAgICAgICBsZXQgcXVlcnlQYXJhbXMgPSBbXTtcbiAgICAgICAgICAgICAgbGV0IHFJbmRleCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNUiAwOEpBTjI0IFF1ZXJ5IEluZGV4XG4gICAgICAgICAgICAgIC8vIEl0ZXJhdGUgb3ZlciBxdWVyeVJlZmVyZW5jZXMgYW5kIGZpbmQgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBpbiByZWZlcmVuY2VEYXRhXG4gICAgICAgICAgICAgIHF1ZXJ5UmVmZXJlbmNlcy5mb3JFYWNoKHJlZmVyZW5jZSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gRmluZCB0aGUgZWxlbWVudCBpbiByZWZlcmVuY2VEYXRhIHRoYXQgbWF0Y2hlcyB0aGUgY3VycmVudCByZWZlcmVuY2VcbiAgICAgICAgICAgICAgICAvLyBSUyAwOURFQzI0IENoYW5nZWQga2V5c1xuICAgICAgICAgICAgICAgIGxldCBtYXRjaGluZ0VsZW1lbnQgPSB0aGlzLnF1ZXN0aW9uPy5yZWZlcmVuY2VRdWVyeURhdGEuZmluZChlbGVtZW50ID0+IGVsZW1lbnQucmVmZXJlbmNlRmllbGQgPT09IHJlZmVyZW5jZSk7XG4gICAgICAgICAgICAgIC8vIElmIGEgbWF0Y2hpbmcgZWxlbWVudCBpcyBmb3VuZCwgZ2V0IGl0cyBpbnB1dCB2YWx1ZSBhbmQgY3JlYXRlIGEgcXVlcnkgcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgaWYgKHJlZmVyZW5jZSAmJiBtYXRjaGluZ0VsZW1lbnQpIHsgICAvLyBNUiAwOEpBTjI0IGlmIHJlZmVyZW5jZSBleGlzdCAmIG1hdGNoaW5nIGVsZW1lbnQgZm91bmRcbiAgICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zLnB1c2goYCR7cXVlcnlGaWVsZHNbcUluZGV4XX09JHttYXRjaGluZ0VsZW1lbnQuaW5wdXR9YCk7ICAgIC8vIE1SIDA4SkFOMjQgcmVtb3ZlZCByZWZlcmVuY2VcbiAgICAgICAgICAgICAgICB9IGVsc2UgeyAgICAvLyBNUiAwOEpBTjI0IGluY2x1ZGVkIG9wdGlvbiBmb3IgbXVsdGlwbGUgcXVlcnkgcGFyYW1zIGFuZCBkZWZhdWx0IHZhbHVlIGluIGNhc2Ugb2YgcmVmZXJlbmNlIGlzIG5vdCBmb3VuZFxuICAgICAgICAgICAgICAgICAgcXVlcnlQYXJhbXMucHVzaChgJHtxdWVyeUZpZWxkc1txSW5kZXhdfT0ke3F1ZXJ5VmFsdWVzW3FJbmRleF19YCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcUluZGV4Kys7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBmdWxsRW5kUG9pbnQgPSB0aGlzLmFwaU9iai5lbmRwb2ludCArICc/JyArIHF1ZXJ5UGFyYW1zLmpvaW4oJyYnKTtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coZnVsbEVuZFBvaW50KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gaWYgbm8gcXVlcnkgcGFyYW0gZ2V0IHRoZSBhY3R1YWwgZW5kUG9pbnRcbiAgICAgICAgICAgICAgZnVsbEVuZFBvaW50ID0gdGhpcy5hcGlPYmouZW5kcG9pbnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFZEIDE5SkFOMjQgLSBhZGRlZCBvbmUgbW9yZSBwYXJhbSBmb3IgYXV0aGVudGljYXRpb25cbiAgICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuYXBpUmVzcG9uc2UoZnVsbEVuZFBvaW50KT8uc3Vic2NyaWJlKChhcGlSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAvLyBIQSAxOC1KQU4tMjQgQXNzaWduZWQgYXBpcmVzcG9uc2UgZGlyZWN0bHkgaWYgd2UgaGF2ZSB0aGUgcmVzcG9uc2UgaW4gYXJyYXkgYWxzb1xuICAgICAgICAgICAgICAvLyBWRCAxOUpBTjI0IC0gaWYgcmVzcG9uc2UgaGFzIGtleSB3aXRoIHZhbHVlKHdoaWNoIGlzIGFycmF5KVxuICAgICAgICAgICAgICBsZXQgcmVzcG9uc2VzO1xuICAgICAgICAgICAgICBpZih0aGlzLmFwaU9iai52YXJpYWJsZSl7XG4gICAgICAgICAgICAgICAgLy8gVkQgMjFNYXkyNCAtIGhhbmRsaW5nIG11bHRpcGxlIGNoaWxkIG9iamVjdHNcbiAgICAgICAgICAgICAgICAvLyBWRCAyMk1heTI0IC0gdXNlZCBjb21tb24gc2VydmljZSBmaWxlXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VzID0gdGhpcy5kYXRhU2VydmljZS5nZXRWYWx1ZShhcGlSZXNwb25zZSx0aGlzLmFwaU9iai52YXJpYWJsZSk7XG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdHMgPSBbXTtcbiAgICAgICAgICAgICAgICAvLyBIQSAxOUpBTjI0IFRvIGF2b2lkIHVuZGVmaW5lZCBlcnJvciBpbiBjb25zb2xlXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNwb25zZXM/Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICB2YXIgcmVzcCA9IHJlc3BvbnNlc1tpXTtcbiAgICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaChyZXNwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gcmVzdWx0cztcbiAgICAgICAgICAgICAgfWVsc2V7ICAvLyBWRCAxOUpBTjI0IC0gaWYgcmVzcG9uc2UgaGFzIHZhbHVlKHdoaWNoIGlzIGFycmF5KSBvbmx5XG4gICAgICAgICAgICAgICAgcmVzcG9uc2VzID0gYXBpUmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gcmVzcG9uc2VzO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vIFZEIDI1T2N0MjQgLSBTdG9yZSBmZXRjaGVkIG9wdGlvbnMgaW4gbG9jYWwgc3RvcmFnZVxuICAgICAgICAgICAgICBpZih0aGlzLnVuaXF1ZUtleSl7XG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy51bmlxdWVLZXksIEpTT04uc3RyaW5naWZ5KHRoaXMub3B0aW9ucykpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vIFJlZmVyZW5jZSBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9Abmctc2VsZWN0L25nLXNlbGVjdFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBWRCBOT1YyMyAtIGhhbmRsZSB0aGUgZGVwZW5kZW50IHVwZGF0ZSBmb3IgZHJvcGRvd25cbiAgICAgICAgICAvLyBWRCAwOVNlcDI0LSBwdXNoIHRoZSBkZXBlbmRlbnQgZmllbGQgdmFsdWVzIGZvciBkcm9wZG93blxuICAgICAgICAgIGxldCBzb3VyY2VJZCA9IHRoaXMuYXBpT2JqLnNvdXJjZVF1ZXN0aW9uSWQ7XG4gICAgICAgICAgaWYoc291cmNlSWQgJiYgdGhpcy5hcGlPYmoudmFyaWFibGUgfHwgdGhpcy5hcGlPYmoudmFsdWVGaWVsZCl7XG4gICAgICAgICAgICAvLyBTdWJzY3JpYmUgZm9yIHRoZSBjaGFuZ2VzXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuY2hhbmdlU2VydmljZS5jaGFuZ2VBbm5vdW5jZWQkLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgKGNoYW5nZVZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYoY2hhbmdlVmFsdWUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnaW5zaWRlIHN1YnNjcmlwdGlvbiBmb3IgdGhlIGNoYW5nZScpO1xuICAgICAgICAgICAgICAgICAgaWYoY2hhbmdlVmFsdWUudmFsdWVPYmogIT0gdW5kZWZpbmVkICYmIGNoYW5nZVZhbHVlLmZyb21RdWVzdGlvbklkID09IHRoaXMuYXBpT2JqLnNvdXJjZVF1ZXN0aW9uSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IGNoYW5nZVZhbHVlLnZhbHVlT2JqW3RoaXMuYXBpT2JqLnZhbHVlRmllbGRdO1xuICAgICAgICAgICAgICAgICAgICAvLyAgbGV0IHZhbHVlID17fTtcbiAgICAgICAgICAgICAgICAgICAgLy8gIHZhbHVlWyduYW1lJ10gPSB0aGlzLnNlbGVjdGVkVmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlcztcbiAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmFwaU9iai52YXJpYWJsZSl7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZXMgPSB0aGlzLmRhdGFTZXJ2aWNlLmdldFZhbHVlKGNoYW5nZVZhbHVlLnZhbHVlT2JqLHRoaXMuYXBpT2JqLnZhcmlhYmxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHRzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc3BvbnNlcz8ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3AgPSByZXNwb25zZXNbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaChyZXNwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHJlc3VsdHM7XG4gICAgICAgICAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZXMgPSBjaGFuZ2VWYWx1ZS52YWx1ZU9iajtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHJlc3BvbnNlcztcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIFZEIDI1T2N0MjQgLSBTdG9yZSBmZXRjaGVkIG9wdGlvbnMgaW4gbG9jYWwgc3RvcmFnZVxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLnVuaXF1ZUtleSl7XG4gICAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy51bmlxdWVLZXksIEpTT04uc3RyaW5naWZ5KHRoaXMub3B0aW9ucykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlU2VydmljZS5jb25maXJtQ2hhbmdlKHRoaXMuYXBpT2JqLnNvdXJjZVF1ZXN0aW9uSWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwYXJzaW5nIGFwaU1ldGE6JywgZXJyb3IpO1xuICAgIH1cbiAgfSBcbn1cbi8vIFZEIDIyTWF5MjQgLSB1c2VkIGNvbW1vbiBzZXJ2aWNlIGZpbGVcblxuICBzZWxlY3RDaGFuZ2UoZXZlbnQ6YW55KSB7XG4gICAgY29uc29sZS5sb2coJ2luc2lkZSBzZWxlY3RDaGFuZ2UgZnJvbSAnICsgdGhpcy5pZCk7XG4gICAgLy8gY29uc29sZS5sb2coZXZlbnQpO1xuICAgIGxldCBjaGFuZ2UgPSBuZXcgQ2hhbmdlV3JhcHBlcigpOyAvLyBDaGFuZ2VXcmFwcGVyID0gSlNPTi5wYXJzZSgne30nKTtcbiAgICBjaGFuZ2UuZnJvbVF1ZXN0aW9uSWQgPSB0aGlzLmlkO1xuICAgIGNoYW5nZS52YWx1ZU9iaiA9IGV2ZW50ID8gZXZlbnQgOiAnJztcbiAgICBjaGFuZ2UucmVmZXJlbmNlRmllbGQgPSB0aGlzLnJlZmVyZW5jZUZpZWxkO1xuICAgIGNoYW5nZS5zZWxlY3RlZE9iaiA9IGV2ZW50ID8gZXZlbnRbdGhpcy5sYWJlbEZpZWxkXSA6ICcnO1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChjaGFuZ2UpO1xuICAgIC8vIG9uY2UgZ290IHZhbHVlIGluIGRyb3Bkb3duIHJlbW92ZSB0aGUgZXJyb3IgdmFsaWRhdGlvblxuICAgIGlmKGV2ZW50KXtcbiAgICAgIHRoaXMuaW52YWxpZEZpZWxkSWRzID1bXTtcbiAgICB9XG4gIH1cbn1cbiIsIjwhLS0gSEEgMTgtSkFOLTI0IENvbW1lbnRpbmcgdGhlc2UgbGluZXMgYXMgd2UgZG9uJ3QgaGF2ZSB0byB1c2Ugc2hlbmdlbCBoZXJlIC0tPlxuPCEtLSA8c2VsZWN0XG4gIFtuZ0NsYXNzXT1cIntcbiAgICAnZHQtbGluZSBkcERvd24gZG93biBteXQtZHJvcGJveCBteXQtYm9yZGVyLXIgbXl0LWZvbnQxJzogcHJvZ3Jlc3NCYXIsXG4gICAgJ2N1c3RvbS1zZWxlY3QnOiAhcHJvZ3Jlc3NCYXJcbiAgfVwiIGNsYXNzPVwiY3VzdG9tLXNlbGVjdCBtci1zbS0yIGRkLWhlaWdodFwiIFxuICBbaWRdPVwiaWRcIiBcbiAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFZhbHVlXCJcbiAgKGNoYW5nZSk9XCJzZWxlY3RDaGFuZ2UoJGV2ZW50LnRhcmdldC52YWx1ZSk7XCIgXG4gIFtzdHlsZS5ib3JkZXJDb2xvcl09XCJlcnJvciA/ICdyZWQnIDogJyM4NTg1ODUnXCJcbiAgW3N0eWxlLmNvbG9yXT1cImVycm9yID8gJ3JlZCcgOiAnJ1wiPlxuICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zXCIgW3ZhbHVlXT1cInRoaXMuYXBpTWV0YSAhPT0gdW5kZWZpbmVkID8gb3B0aW9uLnRpdGxlIDogb3B0aW9uLnZhbHVlXCIgY2xhc3M9XCJvcHRpb25cIj57eyB0aGlzLmFwaU1ldGEgIT09IHVuZGVmaW5lZCA/IG9wdGlvbi50aXRsZSA6IG9wdGlvbi52YWx1ZSB9fTwvb3B0aW9uPlxuICAgIDxvcHRpb24gKm5nSWY9XCJlcnJvck1lc3NhZ2VcIiB2YWx1ZT1cIlwiIGRpc2FibGVkIGhpZGRlbj57eyBlcnJvck1lc3NhZ2UgfX08L29wdGlvbj5cbjwvc2VsZWN0PiAtLT5cbjwhLS0gLy8gVkQgMTJKdW4yNCAtIHJlYWRvbmx5IGNoYW5nZS0tPlxuPCEtLSBWRCAwMUF1ZzI0IC0gdmFsaWRhdGlvbiBjaGFuZ2UtLT5cbjwhLS0gVkQgMDdBdWcyNCAtIGlzRGVwZW5kZW50RmllbGQgY2hhbmdlLS0+XG48IS0tIFZEIDI1T2N0MjQgLSBjaGFuZ2VzLS0+XG48IS0tIFJTIDA5REVDMjQgQ2hhbmdlZCBrZXlzLS0+IFxuPG5nLXNlbGVjdFxuICBbY2xhc3NdPVwiaW52YWxpZEZpZWxkSWRzLmluY2x1ZGVzKGlkKSB8fCBlcnJvciA/ICdzaGVuZ2VsLWN1c3RvbS1zZWxlY3QgaW52YWxpZCcgOiAnc2hlbmdlbC1jdXN0b20tc2VsZWN0J1wiXG4gIFsobmdNb2RlbCldPVwic2VsZWN0ZWRWYWx1ZVwiIFxuICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICBbZGlzYWJsZWRdPVwicmVhZE9ubHlcIlxuICAoY2xpY2spPVwiZ2V0T3B0aW9ucygpXCJcbiAgKGNoYW5nZSk9XCJzZWxlY3RDaGFuZ2UoJGV2ZW50KVwiXG4gIFtpZF09XCJpZFwiPlxuICA8bmctb3B0aW9uIFxuICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uc1wiIFxuICAgIFt2YWx1ZV09XCJhcGlPYmogJiYgIWFwaU9iai5pc0RlcGVuZGVudEZpZWxkID8gb3B0aW9uIDogb3B0aW9uPy52YWx1ZVwiPlxuICAgIHt7IGFwaU9iaiAmJiAhYXBpT2JqLmlzRGVwZW5kZW50RmllbGQgJiYgb3B0aW9uID8gb3B0aW9uW2xhYmVsRmllbGRdIDogb3B0aW9uPy52YWx1ZSB9fVxuICA8L25nLW9wdGlvbj4gXG48L25nLXNlbGVjdD5cbjxzcGFuICpuZ0lmPVwiZXJyb3IgfHwgaW52YWxpZEZpZWxkSWRzLmluY2x1ZGVzKGlkKVwiIGNsYXNzPVwiZXJyb3ItbXNnXCI+e3tlcnJvck1lc3NhZ2V9fTwvc3Bhbj5cbiJdfQ==
|
|
221
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9jb21wb25lbnRzL2N1c3RvbS1kcm9wZG93bi9jdXN0b20tZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvY3VzdG9tLWRyb3Bkb3duL2N1c3RvbS1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFTLEtBQUssRUFBQyxNQUFNLEVBQUMsWUFBWSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBR3RGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7QUFZMUQsTUFBTSxPQUFPLHVCQUF1QjtJQWlCeEI7SUFDQTtJQUNEO0lBbEJBLE9BQU8sR0FBVSxFQUFFLENBQUM7SUFDcEIsV0FBVyxDQUFTO0lBQ3BCLE9BQU8sQ0FBUztJQUNoQixhQUFhLENBQVM7SUFDdEIsV0FBVyxDQUFVO0lBQ3JCLEVBQUUsQ0FBUTtJQUNWLFFBQVEsR0FBYSxLQUFLLENBQUMsQ0FBQywrQkFBK0I7SUFDM0QsWUFBWSxDQUFTO0lBQ3JCLEtBQUssQ0FBSztJQUNWLFdBQVcsR0FBWSxLQUFLLENBQUM7SUFDN0IsUUFBUSxDQUFLO0lBQ2IsY0FBYyxDQUFRO0lBQ3RCLEtBQUssQ0FBUSxDQUFJLHNDQUFzQztJQUN0RCxXQUFXLEdBQWdDLElBQUksWUFBWSxFQUFpQixDQUFDO0lBQ3ZGLGVBQWUsR0FBWSxFQUFFLENBQUM7SUFDOUIsWUFDVSxhQUE0QixFQUM1QixXQUF3QixFQUN6QixXQUF3QjtRQUZ2QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN6QixnQkFBVyxHQUFY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a3BEQW1DQTs7NEZEcEJhLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxxQkFBcUI7c0lBS3RCLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csRUFBRTtzQkFBVixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCxJbnB1dCxPdXRwdXQsRXZlbnRFbWl0dGVyLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBUElNZXRhIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9hcGltZXRhJztcbmltcG9ydCB7IENoYW5nZVdyYXBwZXIgfSBmcm9tICcuLi8uLi9tb2RlbC9jaGFuZ2VXcmFwcGVyJztcbmltcG9ydCB7IENoYW5nZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jaGFuZ2Uuc2VydmljZSc7XG4vLyBIQSAxOURFQzIzIGltcG9ydGVkIHRyYW5zbGF0aW9uIHNlcnZpY2VcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaTE4bi5zZXJ2aWNlJztcbi8vIFZEIDIzSkFOMjQgdXNlZCBzZXJ2aWNlIGZpbGUgZm9yIGNhbGxvdXRcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGF0YS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWN1c3RvbS1kcm9wZG93bicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jdXN0b20tZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jdXN0b20tZHJvcGRvd24uY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIEN1c3RvbURyb3Bkb3duQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgb3B0aW9uczogYW55W10gPSBbXTsgXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGFwaU1ldGE6IHN0cmluZztcbiAgQElucHV0KCkgc2VsZWN0ZWRWYWx1ZTogc3RyaW5nO1xuICBASW5wdXQoKSBwcm9ncmVzc0JhcjogYm9vbGVhbjtcbiAgQElucHV0KCkgaWQ6c3RyaW5nO1xuICBASW5wdXQoKSByZWFkT25seSA6IGJvb2xlYW4gPSBmYWxzZTsgLy8gVkQgMTJKdW4yNCAtIHJlYWRvbmx5IGNoYW5nZVxuICBASW5wdXQoKSBlcnJvck1lc3NhZ2U6IHN0cmluZztcbiAgQElucHV0KCkgZXJyb3I6YW55O1xuICBASW5wdXQoKSBmcm9tU2hlbmdlbDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBxdWVzdGlvbjphbnk7XG4gIEBJbnB1dCgpIHJlZmVyZW5jZUZpZWxkOnN0cmluZztcbiAgQElucHV0KCkgdG9rZW46c3RyaW5nOyAgICAvLyBWRCAxOUpBTjI0IC0gZ2V0dGluZyB0b2tlbiBhcyBpbnB1dFxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDaGFuZ2VXcmFwcGVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8Q2hhbmdlV3JhcHBlcj4oKTtcbiAgaW52YWxpZEZpZWxkSWRzOnN0cmluZ1tdID0gW107XG4gIGNvbnN0cnVjdG9yKCBcbiAgICBwcml2YXRlIGNoYW5nZVNlcnZpY2U6IENoYW5nZVNlcnZpY2UsIFxuICAgIHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLFxuICAgIHB1YmxpYyBpMThuU2VydmljZTogSTE4blNlcnZpY2UsXG4gICAgICAgICkgeyBcbiAgICB0aGlzLmNoYW5nZVNlcnZpY2Uuc3VibWl0VmFsaWRhdGUkLnN1YnNjcmliZSgoZGF0YSk9PntcbiAgICAgIC8vIHRvIGdldCB0aGUgZXJyb3IgbWVzc2FnZSdzIGZpZWxkIGlkJ3NcbiAgICAgIHRoaXMuaW52YWxpZEZpZWxkSWRzLnB1c2goZGF0YSk7XG4gICAgfSlcbiAgfVxuXG4gIHB1YmxpYyBsYWJlbEZpZWxkOiBzdHJpbmc7XG4gIHB1YmxpYyB2YWx1ZUZpZWxkOiBzdHJpbmc7XG4gIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAvL3B1YmxpYyBhcGlPYmo6QVBJTWV0YTtcbiAgcHVibGljIHVuaXF1ZUtleTpzdHJpbmc7XG4gIGFwaU9iajogYW55ID0ge307XG5cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBcbiAgfVxuICBnZXRPcHRpb25zKCl7XG4gICAgY29uc29sZS5sb2coJ3Rlc3QgY2xpY2snKTtcbiAgICAvLyBjb25zb2xlLmxvZygnaW5zaWRlIG9uaW5pdCBvZiBjdXN0b20tZHJvcGRvd24gb2YgJyArIHRoaXMuaWQpO1xuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuYXBpTWV0YSk7XG4gICAgLy9WRCAwN0F1ZzI0IC0gaXNEZXBlbmRlbnRGaWVsZCBjaGFuZ2VcbiAgICAvLyBWRCAyNU9jdDI0IC0gY2hhbmdlc1xuICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLnBsYWNlaG9sZGVyID8gdGhpcy5wbGFjZWhvbGRlciA6ICctLS1TZWxlY3Qgb3B0aW9uLS0tJztcbiAgICBpZih0aGlzLmFwaU1ldGEpIHtcbiAgICB0cnkge1xuICAgICAgLy8gTVNNLTI3TUFSMjUgRW5zdXJlIHF1ZXMuc3ViVGV4dCBpcyBhbHdheXMgYW4gb2JqZWN0IGJ5IHBhcnNpbmcgaXQgaWYgaXQncyBhIHN0cmluZ1xuICAgICAgdGhpcy5hcGlPYmogPSB0eXBlb2YgdGhpcy5hcGlNZXRhID09PSAnb2JqZWN0JyA/IHRoaXMuYXBpTWV0YSA6IEpTT04ucGFyc2UodGhpcy5hcGlNZXRhKTtcblxuICAgICAgLy8gQ2hlY2sgaWYgYXBpT2JqIGFuZCBhcGlPYmouZmllbGQgYXJlIGRlZmluZWRcbiAgICAgIGlmICh0aGlzLmFwaU9iaiAmJiB0aGlzLmFwaU9iai5maWVsZCkge1xuICAgICAgICB0aGlzLmxhYmVsRmllbGQgPSB0aGlzLmFwaU9iai5maWVsZDtcbiAgICAgICAgdGhpcy51bmlxdWVLZXkgPSB0aGlzLmFwaU9iai51bmlxdWVLZXk7XG4gICAgICAgIGNvbnN0IGNhY2hlZE9wdGlvbnMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnVuaXF1ZUtleSk7XG4gICAgICAgIGlmIChjYWNoZWRPcHRpb25zKSB7XG4gICAgICAgICAgdGhpcy5vcHRpb25zID0gSlNPTi5wYXJzZShjYWNoZWRPcHRpb25zKTtcbiAgICAgICAgfWVsc2Uge1xuICAgICAgICAgIGlmKCF0aGlzLmFwaU9iai5pc0RlcGVuZGVudEZpZWxkKXtcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IFtdO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFZEIDA5U2VwMjQtIHNldHVwIHRoZSBxdWVyeSBwYXJhbSBmb3IgYXBpIGNhbGwgLy8gTVIgMDhKQU4yNCBEZXBlbmRlbnRGaWVsZCBBUEkgRml4IG1vdmVkIGJlbG93IGxvZ2ljIGZyb20gYWJvdmUgaWYgY29uZGl0aW9uXG4gICAgICAgICAgbGV0IGZ1bGxFbmRQb2ludCA7XG4gICAgICAgICAgaWYodGhpcy5hcGlPYmouZW5kcG9pbnQpIHtcbiAgICAgICAgICAgIGlmKHRoaXMuYXBpT2JqLnF1ZXJ5VmFsdWVSZWZlcmVuY2UgJiYgdGhpcy5hcGlPYmoucXVlcnlGaWVsZCkge1xuICAgICAgICAgICAgICAvLyBwcm9jZXNzIHRoZSBlbmQgcG9pbnQgd2l0aCBxdWVyeSBwYXJhbVxuICAgICAgICAgICAgICBsZXQgcXVlcnlSZWZlcmVuY2VzID0gdGhpcy5hcGlPYmoucXVlcnlWYWx1ZVJlZmVyZW5jZS5zcGxpdCgnLCcpO1xuICAgICAgICAgICAgICBsZXQgcXVlcnlGaWVsZHMgPSB0aGlzLmFwaU9iai5xdWVyeUZpZWxkLnNwbGl0KCcsJyk7ICAgIC8vIE1SIDA4SkFOMjQgc2ltaWxhciB0byBhYm92ZSB2YWx1ZXJlZmVyZW5jZSBnZXQgbGlzdCBvZiBRVUVSWSBGaWVsZHNcbiAgICAgICAgICAgICAgbGV0IHF1ZXJ5VmFsdWVzID0gdGhpcy5hcGlPYmoucXVlcnlWYWx1ZS5zcGxpdCgnLCcpOyAgICAvLyBNUiAwOEpBTjI0IHNpbWlsYXIgdG8gYWJvdmUgdmFsdWVyZWZlcmVuY2UgZ2V0IGxpc3Qgb2YgUVVFUlkgVmFsdWVzIChEZWZhdWx0KVxuICAgICAgICAgICAgICBsZXQgcXVlcnlQYXJhbXMgPSBbXTtcbiAgICAgICAgICAgICAgbGV0IHFJbmRleCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNUiAwOEpBTjI0IFF1ZXJ5IEluZGV4XG4gICAgICAgICAgICAgIC8vIEl0ZXJhdGUgb3ZlciBxdWVyeVJlZmVyZW5jZXMgYW5kIGZpbmQgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBpbiByZWZlcmVuY2VEYXRhXG4gICAgICAgICAgICAgIHF1ZXJ5UmVmZXJlbmNlcy5mb3JFYWNoKHJlZmVyZW5jZSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gRmluZCB0aGUgZWxlbWVudCBpbiByZWZlcmVuY2VEYXRhIHRoYXQgbWF0Y2hlcyB0aGUgY3VycmVudCByZWZlcmVuY2VcbiAgICAgICAgICAgICAgICAvLyBSUyAwOURFQzI0IENoYW5nZWQga2V5c1xuICAgICAgICAgICAgICAgIGxldCBtYXRjaGluZ0VsZW1lbnQgPSB0aGlzLnF1ZXN0aW9uPy5yZWZlcmVuY2VRdWVyeURhdGEuZmluZChlbGVtZW50ID0+IGVsZW1lbnQucmVmZXJlbmNlRmllbGQgPT09IHJlZmVyZW5jZSk7XG4gICAgICAgICAgICAgIC8vIElmIGEgbWF0Y2hpbmcgZWxlbWVudCBpcyBmb3VuZCwgZ2V0IGl0cyBpbnB1dCB2YWx1ZSBhbmQgY3JlYXRlIGEgcXVlcnkgcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgaWYgKHJlZmVyZW5jZSAmJiBtYXRjaGluZ0VsZW1lbnQpIHsgICAvLyBNUiAwOEpBTjI0IGlmIHJlZmVyZW5jZSBleGlzdCAmIG1hdGNoaW5nIGVsZW1lbnQgZm91bmRcbiAgICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zLnB1c2goYCR7cXVlcnlGaWVsZHNbcUluZGV4XX09JHttYXRjaGluZ0VsZW1lbnQuaW5wdXR9YCk7ICAgIC8vIE1SIDA4SkFOMjQgcmVtb3ZlZCByZWZlcmVuY2VcbiAgICAgICAgICAgICAgICB9IGVsc2UgeyAgICAvLyBNUiAwOEpBTjI0IGluY2x1ZGVkIG9wdGlvbiBmb3IgbXVsdGlwbGUgcXVlcnkgcGFyYW1zIGFuZCBkZWZhdWx0IHZhbHVlIGluIGNhc2Ugb2YgcmVmZXJlbmNlIGlzIG5vdCBmb3VuZFxuICAgICAgICAgICAgICAgICAgcXVlcnlQYXJhbXMucHVzaChgJHtxdWVyeUZpZWxkc1txSW5kZXhdfT0ke3F1ZXJ5VmFsdWVzW3FJbmRleF19YCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcUluZGV4Kys7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBmdWxsRW5kUG9pbnQgPSB0aGlzLmFwaU9iai5lbmRwb2ludCArICc/JyArIHF1ZXJ5UGFyYW1zLmpvaW4oJyYnKTtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coZnVsbEVuZFBvaW50KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gaWYgbm8gcXVlcnkgcGFyYW0gZ2V0IHRoZSBhY3R1YWwgZW5kUG9pbnRcbiAgICAgICAgICAgICAgZnVsbEVuZFBvaW50ID0gdGhpcy5hcGlPYmouZW5kcG9pbnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFZEIDE5SkFOMjQgLSBhZGRlZCBvbmUgbW9yZSBwYXJhbSBmb3IgYXV0aGVudGljYXRpb25cbiAgICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuYXBpUmVzcG9uc2UoZnVsbEVuZFBvaW50KT8uc3Vic2NyaWJlKChhcGlSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAvLyBIQSAxOC1KQU4tMjQgQXNzaWduZWQgYXBpcmVzcG9uc2UgZGlyZWN0bHkgaWYgd2UgaGF2ZSB0aGUgcmVzcG9uc2UgaW4gYXJyYXkgYWxzb1xuICAgICAgICAgICAgICAvLyBWRCAxOUpBTjI0IC0gaWYgcmVzcG9uc2UgaGFzIGtleSB3aXRoIHZhbHVlKHdoaWNoIGlzIGFycmF5KVxuICAgICAgICAgICAgICBsZXQgcmVzcG9uc2VzO1xuICAgICAgICAgICAgICBpZih0aGlzLmFwaU9iai52YXJpYWJsZSl7XG4gICAgICAgICAgICAgICAgLy8gVkQgMjFNYXkyNCAtIGhhbmRsaW5nIG11bHRpcGxlIGNoaWxkIG9iamVjdHNcbiAgICAgICAgICAgICAgICAvLyBWRCAyMk1heTI0IC0gdXNlZCBjb21tb24gc2VydmljZSBmaWxlXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VzID0gdGhpcy5kYXRhU2VydmljZS5nZXRWYWx1ZShhcGlSZXNwb25zZSx0aGlzLmFwaU9iai52YXJpYWJsZSk7XG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdHMgPSBbXTtcbiAgICAgICAgICAgICAgICAvLyBIQSAxOUpBTjI0IFRvIGF2b2lkIHVuZGVmaW5lZCBlcnJvciBpbiBjb25zb2xlXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNwb25zZXM/Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICB2YXIgcmVzcCA9IHJlc3BvbnNlc1tpXTtcbiAgICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaChyZXNwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gcmVzdWx0cztcbiAgICAgICAgICAgICAgfWVsc2V7ICAvLyBWRCAxOUpBTjI0IC0gaWYgcmVzcG9uc2UgaGFzIHZhbHVlKHdoaWNoIGlzIGFycmF5KSBvbmx5XG4gICAgICAgICAgICAgICAgcmVzcG9uc2VzID0gYXBpUmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gcmVzcG9uc2VzO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vIFZEIDI1T2N0MjQgLSBTdG9yZSBmZXRjaGVkIG9wdGlvbnMgaW4gbG9jYWwgc3RvcmFnZVxuICAgICAgICAgICAgICBpZih0aGlzLnVuaXF1ZUtleSl7XG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy51bmlxdWVLZXksIEpTT04uc3RyaW5naWZ5KHRoaXMub3B0aW9ucykpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vIFJlZmVyZW5jZSBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9Abmctc2VsZWN0L25nLXNlbGVjdFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBWRCBOT1YyMyAtIGhhbmRsZSB0aGUgZGVwZW5kZW50IHVwZGF0ZSBmb3IgZHJvcGRvd25cbiAgICAgICAgICAvLyBWRCAwOVNlcDI0LSBwdXNoIHRoZSBkZXBlbmRlbnQgZmllbGQgdmFsdWVzIGZvciBkcm9wZG93blxuICAgICAgICAgIGxldCBzb3VyY2VJZCA9IHRoaXMuYXBpT2JqLnNvdXJjZVF1ZXN0aW9uSWQ7XG4gICAgICAgICAgaWYoc291cmNlSWQgJiYgdGhpcy5hcGlPYmoudmFyaWFibGUgfHwgdGhpcy5hcGlPYmoudmFsdWVGaWVsZCl7XG4gICAgICAgICAgICAvLyBTdWJzY3JpYmUgZm9yIHRoZSBjaGFuZ2VzXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuY2hhbmdlU2VydmljZS5jaGFuZ2VBbm5vdW5jZWQkLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgKGNoYW5nZVZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYoY2hhbmdlVmFsdWUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnaW5zaWRlIHN1YnNjcmlwdGlvbiBmb3IgdGhlIGNoYW5nZScpO1xuICAgICAgICAgICAgICAgICAgaWYoY2hhbmdlVmFsdWUudmFsdWVPYmogIT0gdW5kZWZpbmVkICYmIGNoYW5nZVZhbHVlLmZyb21RdWVzdGlvbklkID09IHRoaXMuYXBpT2JqLnNvdXJjZVF1ZXN0aW9uSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IGNoYW5nZVZhbHVlLnZhbHVlT2JqW3RoaXMuYXBpT2JqLnZhbHVlRmllbGRdO1xuICAgICAgICAgICAgICAgICAgICAvLyAgbGV0IHZhbHVlID17fTtcbiAgICAgICAgICAgICAgICAgICAgLy8gIHZhbHVlWyduYW1lJ10gPSB0aGlzLnNlbGVjdGVkVmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlcztcbiAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmFwaU9iai52YXJpYWJsZSl7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZXMgPSB0aGlzLmRhdGFTZXJ2aWNlLmdldFZhbHVlKGNoYW5nZVZhbHVlLnZhbHVlT2JqLHRoaXMuYXBpT2JqLnZhcmlhYmxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHRzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc3BvbnNlcz8ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3AgPSByZXNwb25zZXNbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaChyZXNwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHJlc3VsdHM7XG4gICAgICAgICAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZXMgPSBjaGFuZ2VWYWx1ZS52YWx1ZU9iajtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHJlc3BvbnNlcztcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIFZEIDI1T2N0MjQgLSBTdG9yZSBmZXRjaGVkIG9wdGlvbnMgaW4gbG9jYWwgc3RvcmFnZVxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLnVuaXF1ZUtleSl7XG4gICAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy51bmlxdWVLZXksIEpTT04uc3RyaW5naWZ5KHRoaXMub3B0aW9ucykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlU2VydmljZS5jb25maXJtQ2hhbmdlKHRoaXMuYXBpT2JqLnNvdXJjZVF1ZXN0aW9uSWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwYXJzaW5nIGFwaU1ldGE6JywgZXJyb3IpO1xuICAgIH1cbiAgfSBcbn1cbi8vIFZEIDIyTWF5MjQgLSB1c2VkIGNvbW1vbiBzZXJ2aWNlIGZpbGVcblxuICBzZWxlY3RDaGFuZ2UoZXZlbnQ6YW55KSB7XG4gICAgY29uc29sZS5sb2coJ2luc2lkZSBzZWxlY3RDaGFuZ2UgZnJvbSAnICsgdGhpcy5pZCk7XG4gICAgLy8gY29uc29sZS5sb2coZXZlbnQpO1xuICAgIGxldCBjaGFuZ2UgPSBuZXcgQ2hhbmdlV3JhcHBlcigpOyAvLyBDaGFuZ2VXcmFwcGVyID0gSlNPTi5wYXJzZSgne30nKTtcbiAgICBjaGFuZ2UuZnJvbVF1ZXN0aW9uSWQgPSB0aGlzLmlkO1xuICAgIGNoYW5nZS52YWx1ZU9iaiA9IGV2ZW50ID8gZXZlbnQgOiAnJztcbiAgICBjaGFuZ2UucmVmZXJlbmNlRmllbGQgPSB0aGlzLnJlZmVyZW5jZUZpZWxkO1xuICAgIGNoYW5nZS5zZWxlY3RlZE9iaiA9IGV2ZW50ID8gZXZlbnRbdGhpcy5sYWJlbEZpZWxkXSA6ICcnO1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChjaGFuZ2UpO1xuICAgIC8vIG9uY2UgZ290IHZhbHVlIGluIGRyb3Bkb3duIHJlbW92ZSB0aGUgZXJyb3IgdmFsaWRhdGlvblxuICAgIGlmKGV2ZW50KXtcbiAgICAgIHRoaXMuaW52YWxpZEZpZWxkSWRzID1bXTtcbiAgICB9XG4gIH1cbn1cbiIsIjwhLS0gSEEgMTgtSkFOLTI0IENvbW1lbnRpbmcgdGhlc2UgbGluZXMgYXMgd2UgZG9uJ3QgaGF2ZSB0byB1c2Ugc2hlbmdlbCBoZXJlIC0tPlxuPCEtLSA8c2VsZWN0XG4gIFtuZ0NsYXNzXT1cIntcbiAgICAnZHQtbGluZSBkcERvd24gZG93biBteXQtZHJvcGJveCBteXQtYm9yZGVyLXIgbXl0LWZvbnQxJzogcHJvZ3Jlc3NCYXIsXG4gICAgJ2N1c3RvbS1zZWxlY3QnOiAhcHJvZ3Jlc3NCYXJcbiAgfVwiIGNsYXNzPVwiY3VzdG9tLXNlbGVjdCBtci1zbS0yIGRkLWhlaWdodFwiIFxuICBbaWRdPVwiaWRcIiBcbiAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFZhbHVlXCJcbiAgKGNoYW5nZSk9XCJzZWxlY3RDaGFuZ2UoJGV2ZW50LnRhcmdldC52YWx1ZSk7XCIgXG4gIFtzdHlsZS5ib3JkZXJDb2xvcl09XCJlcnJvciA/ICdyZWQnIDogJyM4NTg1ODUnXCJcbiAgW3N0eWxlLmNvbG9yXT1cImVycm9yID8gJ3JlZCcgOiAnJ1wiPlxuICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zXCIgW3ZhbHVlXT1cInRoaXMuYXBpTWV0YSAhPT0gdW5kZWZpbmVkID8gb3B0aW9uLnRpdGxlIDogb3B0aW9uLnZhbHVlXCIgY2xhc3M9XCJvcHRpb25cIj57eyB0aGlzLmFwaU1ldGEgIT09IHVuZGVmaW5lZCA/IG9wdGlvbi50aXRsZSA6IG9wdGlvbi52YWx1ZSB9fTwvb3B0aW9uPlxuICAgIDxvcHRpb24gKm5nSWY9XCJlcnJvck1lc3NhZ2VcIiB2YWx1ZT1cIlwiIGRpc2FibGVkIGhpZGRlbj57eyBlcnJvck1lc3NhZ2UgfX08L29wdGlvbj5cbjwvc2VsZWN0PiAtLT5cbjwhLS0gLy8gVkQgMTJKdW4yNCAtIHJlYWRvbmx5IGNoYW5nZS0tPlxuPCEtLSBWRCAwMUF1ZzI0IC0gdmFsaWRhdGlvbiBjaGFuZ2UtLT5cbjwhLS0gVkQgMDdBdWcyNCAtIGlzRGVwZW5kZW50RmllbGQgY2hhbmdlLS0+XG48IS0tIFZEIDI1T2N0MjQgLSBjaGFuZ2VzLS0+XG48IS0tIFJTIDA5REVDMjQgQ2hhbmdlZCBrZXlzLS0+IFxuIDwhLS0gQVAgMjhNQVIyNSBMYWJlbEZpZWxkIENoZWNraW5nIC0tPlxuPG5nLXNlbGVjdFxuICBbY2xhc3NdPVwiaW52YWxpZEZpZWxkSWRzLmluY2x1ZGVzKGlkKSB8fCBlcnJvciA/ICdzaGVuZ2VsLWN1c3RvbS1zZWxlY3QgaW52YWxpZCcgOiAnc2hlbmdlbC1jdXN0b20tc2VsZWN0J1wiXG4gIFsobmdNb2RlbCldPVwic2VsZWN0ZWRWYWx1ZVwiIFxuICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICBbZGlzYWJsZWRdPVwicmVhZE9ubHlcIlxuICAoY2xpY2spPVwiZ2V0T3B0aW9ucygpXCJcbiAgKGNoYW5nZSk9XCJzZWxlY3RDaGFuZ2UoJGV2ZW50KVwiXG4gIFtpZF09XCJpZFwiPlxuICA8bmctb3B0aW9uIFxuICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uc1wiIFxuICAgIFt2YWx1ZV09XCJhcGlPYmogJiYgIWFwaU9iai5pc0RlcGVuZGVudEZpZWxkID8gb3B0aW9uIDogb3B0aW9uPy52YWx1ZVwiPlxuICAgIHt7IGFwaU9iaiAmJiAhYXBpT2JqLmlzRGVwZW5kZW50RmllbGQgJiYgb3B0aW9uW2xhYmVsRmllbGRdID8gb3B0aW9uW2xhYmVsRmllbGRdIDogb3B0aW9uPy52YWx1ZSB9fVxuICA8L25nLW9wdGlvbj4gXG48L25nLXNlbGVjdD5cbjxzcGFuICpuZ0lmPVwiZXJyb3IgfHwgaW52YWxpZEZpZWxkSWRzLmluY2x1ZGVzKGlkKVwiIGNsYXNzPVwiZXJyb3ItbXNnXCI+e3tlcnJvck1lc3NhZ2V9fTwvc3Bhbj5cbiJdfQ==
|
|
@@ -77,7 +77,9 @@ export class CustomTableComponent {
|
|
|
77
77
|
}
|
|
78
78
|
if (this.apiMeta !== undefined) {
|
|
79
79
|
this.options = [];
|
|
80
|
-
let apiObj = JSON.parse(this.apiMeta);
|
|
80
|
+
// let apiObj: APIMeta = JSON.parse(this.apiMeta);
|
|
81
|
+
// MSM-27MAR25 Ensure ques.subText is always an object by parsing it if it's a string
|
|
82
|
+
let apiObj = typeof this.apiMeta === 'object' ? this.apiMeta : JSON.parse(this.apiMeta);
|
|
81
83
|
if (apiObj && apiObj.endpoint) {
|
|
82
84
|
this.dataService.apiResponse(apiObj.endpoint)?.subscribe((apiResponse) => {
|
|
83
85
|
let responses;
|
|
@@ -247,4 +249,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
247
249
|
}], valueChange: [{
|
|
248
250
|
type: Output
|
|
249
251
|
}] } });
|
|
250
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9jb21wb25lbnRzL2N1c3RvbS10YWJsZS9jdXN0b20tdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvY3VzdG9tLXRhYmxlL2N1c3RvbS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7OztBQWlCL0UsTUFBTSxPQUFPLG9CQUFvQjtJQWlDWDtJQUFxQztJQUFrQztJQWhDbEYsUUFBUSxDQUFVO0lBQ2xCLE9BQU8sQ0FBUztJQUNmLFdBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUNuRSxXQUFXLEdBQUcsRUFBRSxDQUFDO0lBQ2pCLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDZixZQUFZLEdBQUcsRUFBRSxDQUFDLENBQUMsaUNBQWlDO0lBQ3BELGNBQWM7SUFDZCxvSkFBb0o7SUFDcEosVUFBVSxHQUFZLElBQUksQ0FBQztJQUMzQixjQUFjLEdBQVksSUFBSSxDQUFDO0lBQy9CLFdBQVcsR0FBWSxJQUFJLENBQUM7SUFDNUIsVUFBVSxHQUFZLElBQUksQ0FBQztJQUMzQixZQUFZLEdBQVcsQ0FBQyxDQUFDO0lBQ3pCLGFBQWEsQ0FBUztJQUN0QixTQUFTLENBQVMsQ0FBQyxvQ0FBb0M7SUFDdkQsT0FBTyxDQUFNO0lBQ2IsV0FBVyxDQUFNO0lBQ2pCLFNBQVMsQ0FBUztJQUNsQixNQUFNLENBQVM7SUFDZixTQUFTLEdBQVksS0FBSyxDQUFDO0lBQ3BCLE9BQU8sQ0FBVztJQUN6QixVQUFVLEdBQVksSUFBSSxDQUFDO0lBQzNC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LENBQUMsU0FBUyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUdELGtCQUFrQixDQUFDLGdCQUF1QjtRQUN4QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzFDLENBQUM7d0dBek9VLG9CQUFvQjs0RkFBcEIsb0JBQW9CLHVKQ2pCakMsaTZPQWtLQTs7NEZEakphLG9CQUFvQjtrQkFOaEMsU0FBUzsrQkFDRSxrQkFBa0I7c0lBTW5CLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4vLyBIQSAxOURFQzIzIGltcG9ydGVkIHRyYW5zbGF0aW9uIHNlcnZpY2VcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaTE4bi5zZXJ2aWNlJztcbmltcG9ydCB7IFF1ZXN0aW9uIH0gZnJvbSAnLi4vLi4vd3JhcHBlcic7XG5pbXBvcnQgeyBEYXRhU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBBUElNZXRhIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9hcGltZXRhJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2hhbmdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NoYW5nZS5zZXJ2aWNlJztcblxuZGVjbGFyZSB2YXIgJDogYW55O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtY3VzdG9tLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2N1c3RvbS10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2N1c3RvbS10YWJsZS5jb21wb25lbnQuY3NzJ11cbn0pXG5cbmV4cG9ydCBjbGFzcyBDdXN0b21UYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHF1ZXN0aW9uOiBRdWVzdGlvblxuICBASW5wdXQoKSBhcGlNZXRhOiBzdHJpbmc7XG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgdGFibGVIZWFkZXIgPSBbXTtcbiAgdGFibGVEYXRhID0gW107XG4gIGZpbHRlcmVkRGF0YSA9IFtdOyAvLyBOZXcgcHJvcGVydHkgZm9yIGZpbHRlcmVkIGRhdGFcbiAgLy9SUyAwM0ZFQjIwMjVcbiAgLy8gRGVmYXVsdCBVSSBjb25maWd1cmF0aW9ucyB0byBjb250cm9sIHJvdyBhZGRpdGlvbiwgcGFnaW5hdGlvbiwgYWN0aW9ucyBjb2x1bW4gdmlzaWJpbGl0eSwgc2VhcmNoIGZ1bmN0aW9uYWxpdHksIGFuZCB0aGUgbnVtYmVyIG9mIGl0ZW1zIHBlciBwYWdlLlxuICBzaG93QWRkUm93OiBib29sZWFuID0gdHJ1ZTtcbiAgc2hvd1BhZ2luYXRpb246IGJvb2xlYW4gPSB0cnVlO1xuICBzaG93QWN0aW9uczogYm9vbGVhbiA9IHRydWU7XG4gIHNob3dTZWFyY2g6IGJvb2xlYW4gPSB0cnVlO1xuICBpdGVtc1BlclBhZ2U6IG51bWJlciA9IDU7XG4gIGFkZFJvd0NvbFNwYW46IG51bWJlcjtcbiAgdGFibGVTaXplOiBudW1iZXI7IC8vIEhBIDI4REVDMjMgdGFibGUgc2l6ZSBkZWNsYXJhdGlvblxuICBvYmpOYW1lOiBhbnk7XG4gIGZpbHRlckxvZ2ljOiBhbnk7XG4gIGZpZWxkTWV0YTogc3RyaW5nO1xuICBmaXJTdHI6IHN0cmluZztcbiAgc2VhcmNoQm94OiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBvcHRpb25zOiBzdHJpbmdbXTtcbiAgaXNEaXNhYmxlZDogYm9vbGVhbiA9IHRydWU7XG4gIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG5cbiAgLy9SUyAwM0ZFQjIwMjVcbiAgLy8gTmV3IHByb3BlcnRpZXMgZm9yIHNlYXJjaCBhbmQgcGFnaW5hdGlvblxuICBzZWFyY2hUZXJtOiBzdHJpbmcgPSAnJztcbiAgY3VycmVudFBhZ2U6IG51bWJlciA9IDE7XG4gIHRvdGFsSXRlbXM6IG51bWJlciA9IDA7XG4gIHBhZ2VzOiBudW1iZXJbXSA9IFtdO1xuICBNYXRoID0gTWF0aDtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VTZXJ2aWNlOiBDaGFuZ2VTZXJ2aWNlLCBwdWJsaWMgaTE4blNlcnZpY2U6IEkxOG5TZXJ2aWNlLCBwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSkgeyB9XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIFNLUzIwTUFSMjUgY2hlY2sgaWYgcXVlc3Rpb24gZmllbGRzbWV0YSBpcyBzdHJpbmdcbiAgICAgIGNvbnN0IHBhcnNlZE1ldGEgPSAgdHlwZW9mIHRoaXMucXVlc3Rpb25bJ2ZpZWxkc01ldGEnXSA9PT0gJ29iamVjdCcgID8gIHRoaXMucXVlc3Rpb25bJ2ZpZWxkc01ldGEnXSB8fCBbe31dIDogSlNPTi5wYXJzZSggdGhpcy5xdWVzdGlvblsnZmllbGRzTWV0YSddKSA7XG4gICAgICBpZiAoIXBhcnNlZE1ldGEgfHwgIUFycmF5LmlzQXJyYXkocGFyc2VkTWV0YSkgfHwgcGFyc2VkTWV0YS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdObyB2YWxpZCBtZXRhZGF0YSBwcm92aWRlZCcpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vUlMgMDNGRUIyMDI1XG4gICAgICAvLyBFeHRyYWN0cyB0YWJsZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIGR5bmFtaWNhbGx5IGZyb20gbWV0YWRhdGEgYW5kIGFwcGxpZXMgdGhlbSwgZW5zdXJpbmcgZmxleGliaWxpdHkgaW4gVUkgY3VzdG9taXphdGlvblxuICAgICAgaWYgKHBhcnNlZE1ldGFbMF0/LnRhYmxlQ29uZmlnKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHBhcnNlZE1ldGFbMF0udGFibGVDb25maWc7XG4gICAgICAgIHRoaXMuc2hvd0FkZFJvdyA9IGNvbmZpZy5zaG93QWRkUm93ICE9PSBmYWxzZTtcbiAgICAgICAgdGhpcy5zaG93UGFnaW5hdGlvbiA9IGNvbmZpZy5zaG93UGFnaW5hdGlvbiAhPT0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd0FjdGlvbnMgPSBjb25maWcuc2hvd0FjdGlvbnMgIT09IGZhbHNlO1xuICAgICAgICB0aGlzLnNob3dTZWFyY2ggPSBjb25maWcuc2hvd1NlYXJjaCAhPT0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXRlbXNQZXJQYWdlID0gY29uZmlnLml0ZW1zUGVyUGFnZSB8fCA1O1xuXG4gICAgICAgIC8vIFJlbW92ZSB0aGUgY29uZmlnIG9iamVjdCBmcm9tIGhlYWRlcnNcbiAgICAgICAgdGhpcy50YWJsZUhlYWRlciA9IHBhcnNlZE1ldGEuc2xpY2UoMSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBJZiBubyBjb25maWcgb2JqZWN0IGZvdW5kLCB1c2UgYWxsIG9iamVjdHMgYXMgaGVhZGVyc1xuICAgICAgICB0aGlzLnRhYmxlSGVhZGVyID0gcGFyc2VkTWV0YTtcbiAgICAgIH1cblxuICAgICAgdGhpcy50YWJsZVNpemUgPSAxMCAvIHRoaXMudGFibGVIZWFkZXIubGVuZ3RoO1xuICAgICAgLy8gMTJKVU4yNCAtIGRlZmF1bHQgdGFibGUgdmFsdWVcbiAgICAgIGlmICh0aGlzLnF1ZXN0aW9uPy5pbnB1dCkge1xuICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMucXVlc3Rpb24/LmlucHV0O1xuICAgICAgICB0aGlzLmZpbHRlcmVkRGF0YSA9IFsuLi50aGlzLnRhYmxlRGF0YV07XG4gICAgICAgIHRoaXMudXBkYXRlUGFnaW5hdGlvbigpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuYXBpTWV0YSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IFtdO1xuICAgICAgICBsZXQgYXBpT2JqOiBBUElNZXRhID0gSlNPTi5wYXJzZSh0aGlzLmFwaU1ldGEpO1xuICAgICAgICBpZiAoYXBpT2JqICYmIGFwaU9iai5lbmRwb2ludCkge1xuICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuYXBpUmVzcG9uc2UoYXBpT2JqLmVuZHBvaW50KT8uc3Vic2NyaWJlKChhcGlSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgbGV0IHJlc3BvbnNlcztcbiAgICAgICAgICAgIGlmIChhcGlPYmoudmFyaWFibGUpIHtcbiAgICAgICAgICAgICAgLy8gVkQgMjJNYXkyNCAtIGhhbmRsaW5nIG11bHRpcGxlIGNoaWxkIG9iamVjdHNcbiAgICAgICAgICAgICAgcmVzcG9uc2VzID0gdGhpcy5kYXRhU2VydmljZS5nZXRWYWx1ZShhcGlSZXNwb25zZSwgYXBpT2JqLnZhcmlhYmxlKTtcbiAgICAgICAgICAgICAgbGV0IHJlc3VsdHMgPSBbXTtcbiAgICAgICAgICAgICAgLy8gSEEgMTlKQU4yNCBUbyBhdm9pZCB1bmRlZmluZWQgZXJyb3IgaW4gY29uc29sZVxuICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc3BvbnNlcz8ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcCA9IHJlc3BvbnNlc1tpXTtcbiAgICAgICAgICAgICAgICByZXN1bHRzLnB1c2gocmVzcCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gcmVzdWx0cztcbiAgICAgICAgICAgIH0gZWxzZSB7ICAvLyBWRCAxOUpBTjI0IC0gaWYgcmVzcG9uc2UgaGFzIHZhbHVlKHdoaWNoIGlzIGFycmF5KSBvbmx5XG4gICAgICAgICAgICAgIHJlc3BvbnNlcyA9IGFwaVJlc3BvbnNlO1xuICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMgPSByZXNwb25zZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLm9wdGlvbnMubWFwKChvYmo6IGFueSkgPT4gKHsgLi4ub2JqLCBlZGl0OiBmYWxzZSB9KSk7XG4gICAgICAgICAgICAvLyBSZWZlcmVuY2UgaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvQG5nLXNlbGVjdC9uZy1zZWxlY3RcbiAgICAgICAgICAgIHRoaXMudGFibGVEYXRhID0gdGhpcy5vcHRpb25zO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ3RhYmxlRGF0YScsIHRoaXMudGFibGVEYXRhKTtcblxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVkQgTk9WMjMgLSBoYW5kbGUgdGhlIGRlcGVuZGVudCB1cGRhdGUgZm9yIGRyb3Bkb3duXG4gICAgICAgIGxldCBzb3VyY2VJZCA9IGFwaU9iaj8uc291cmNlUXVlc3Rpb25JZDtcbiAgICAgICAgbGV0IGZpZWxkID0gYXBpT2JqPy5maWVsZDsgICAgICAgIC8vIFZEIDEzTUFZMjQgLSBkeW5hbWljIGZpZWxkIGNoYW5nZXNcbiAgICAgICAgaWYgKHNvdXJjZUlkKSB7XG4gICAgICAgICAgLy8gLy8gVkQgMTBNYXkyNCBTdWJzY3JpYmUgZm9yIHRoZSBjaGFuZ2VzXG4gICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLmNoYW5nZVNlcnZpY2UuY2hhbmdlQW5ub3VuY2VkJC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAoY2hhbmdlVmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGNoYW5nZVZhbHVlICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGlmIChjaGFuZ2VWYWx1ZS52YWx1ZU9iaiAhPSB1bmRlZmluZWQgJiYgY2hhbmdlVmFsdWUuZnJvbVF1ZXN0aW9uSWQgPT0gYXBpT2JqLnNvdXJjZVF1ZXN0aW9uSWQpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdjaGFuZ2VzIGhhcHBlbicpO1xuICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gdGhpcy5vcHRpb25zLm1hcCgob2JqOiBhbnkpID0+ICh7IC4uLm9iaiwgZWRpdDogZmFsc2UgfSkpO1xuICAgICAgICAgICAgICAgICAgbGV0IGl0ZW0gPSBjaGFuZ2VWYWx1ZS52YWx1ZU9iajtcbiAgICAgICAgICAgICAgICAgIGxldCB2YWxpZEl0ZW0gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgLy8gVkQgMTNNQVkyNCAtIGJpbmQgZHluYW1pYyBmaWVsZFxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudGFibGVEYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZURhdGEuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAvLyBWRCAyNkp1bjI0IC0gdG8gaGFuZGxlIG11bHRpcGxlIG9iamVjdHNcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvYmpFbGVtZW50VmFsdWUgPSB0aGlzLmRhdGFTZXJ2aWNlLmdldFZhbHVlKGVsZW1lbnQsIGZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvYmpJdGVtVmFsdWUgPSB0aGlzLmRhdGFTZXJ2aWNlLmdldFZhbHVlKGl0ZW0sIGZpZWxkKVxuICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmpFbGVtZW50VmFsdWUgPT0gb2JqSXRlbVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZEl0ZW0gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgLy9SUyAxNEZFQjIwMjVcbiAgICAgICAgICAgICAgICAgIC8vVXBkYXRlIFBhZ2luYXRpb24gYmVmb3JlIGVtaXRcbiAgICAgICAgICAgICAgICAgIGlmICh2YWxpZEl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudGFibGVEYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IFsuLi50aGlzLnRhYmxlRGF0YSwgaXRlbV07XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZURhdGEucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgZmlsdGVyZWREYXRhIGFuZCBwYWdpbmF0aW9uXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyZWREYXRhID0gWy4uLnRoaXMudGFibGVEYXRhXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVQYWdpbmF0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW1pdFRhYmxlRGF0YVZhbHVlKHRoaXMudGFibGVEYXRhKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VTZXJ2aWNlLmNvbmZpcm1DaGFuZ2UoYXBpT2JqPy5zb3VyY2VRdWVzdGlvbklkKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMudXBkYXRlUGFnaW5hdGlvbigpO1xuICB9XG4gIC8vUlMgMDNGRUIyMDI1XG4gIC8vIOKGkiBGaWx0ZXJzIHRhYmxlIGRhdGEgYmFzZWQgb24gdXNlciBpbnB1dCBhbmQgdXBkYXRlcyBwYWdpbmF0aW9uIGFjY29yZGluZ2x5LlxuICBzZWFyY2goKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlYXJjaFRlcm0udHJpbSgpKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkRGF0YSA9IFsuLi50aGlzLnRhYmxlRGF0YV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHNlYXJjaFRlcm1Mb3dlciA9IHRoaXMuc2VhcmNoVGVybS50b0xvd2VyQ2FzZSgpO1xuICAgICAgdGhpcy5maWx0ZXJlZERhdGEgPSB0aGlzLnRhYmxlRGF0YS5maWx0ZXIoaXRlbSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhYmxlSGVhZGVyLnNvbWUoaGVhZGVyID0+IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZGF0YVNlcnZpY2UuZ2V0VmFsdWUoaXRlbSwgaGVhZGVyLmFwaU5hbWUpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZSAmJiB2YWx1ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybUxvd2VyKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XG4gICAgdGhpcy51cGRhdGVQYWdpbmF0aW9uKCk7XG4gIH1cbiAgLy9SUyAwM0ZFQjIwMjVcbiAgLy8gQ2FsY3VsYXRlcyB0b3RhbCBwYWdlcywgdXBkYXRlcyB0aGUgcGFnZSBsaXN0LCBhbmQgZW5zdXJlcyB0aGUgY3VycmVudCBwYWdlIGlzIHdpdGhpbiB2YWxpZCBib3VuZHMuXG4gIHVwZGF0ZVBhZ2luYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy50b3RhbEl0ZW1zID0gdGhpcy5maWx0ZXJlZERhdGEubGVuZ3RoO1xuICAgIGNvbnN0IHRvdGFsUGFnZXMgPSBNYXRoLmNlaWwodGhpcy50b3RhbEl0ZW1zIC8gdGhpcy5pdGVtc1BlclBhZ2UpO1xuICAgIHRoaXMucGFnZXMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiB0b3RhbFBhZ2VzIH0sIChfLCBpKSA9PiBpICsgMSk7XG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2UgPiB0b3RhbFBhZ2VzKSB7XG4gICAgICB0aGlzLmN1cnJlbnRQYWdlID0gdG90YWxQYWdlcyB8fCAxO1xuICAgIH1cbiAgfVxuICAvL1JTIDAzRkVCMjAyNVxuICAvL1JldHVybnMgYSBwYWdpbmF0ZWQgc3Vic2V0IG9mIGZpbHRlcmVkRGF0YSBiYXNlZCBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBpdGVtcyBwZXIgcGFnZVxuICBnZXQgcGFnaW5hdGVkRGF0YSgpOiBhbnlbXSB7XG4gICAgY29uc3Qgc3RhcnRJbmRleCA9ICh0aGlzLmN1cnJlbnRQYWdlIC0gMSkgKiB0aGlzLml0ZW1zUGVyUGFnZTtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZERhdGEuc2xpY2Uoc3RhcnRJbmRleCwgc3RhcnRJbmRleCArIHRoaXMuaXRlbXNQZXJQYWdlKTtcbiAgfVxuICAvL1JTIDAzRkVCMjAyNVxuICAvL1VwZGF0ZXMgY3VycmVudFBhZ2Ugd2hlbiB0aGUgdXNlciBzZWxlY3RzIGEgZGlmZmVyZW50IHBhZ2VcbiAgc2V0UGFnZShwYWdlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAocGFnZSA+PSAxICYmIHBhZ2UgPD0gdGhpcy5wYWdlcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSBwYWdlO1xuICAgIH1cbiAgfVxuXG4gIGFkZFJvdygpOiB2b2lkIHtcbiAgICBsZXQgbmV3SXRlbSA9IHt9O1xuICAgIHRoaXMudGFibGVIZWFkZXIuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGlmIChpdGVtLmFwaU5hbWUpIHtcbiAgICAgICAgbmV3SXRlbVtpdGVtLmFwaU5hbWVdID0gXCJcIjtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnRhYmxlRGF0YS5wdXNoKG5ld0l0ZW0pO1xuICAgIHRoaXMuZmlsdGVyZWREYXRhID0gWy4uLnRoaXMudGFibGVEYXRhXTtcbiAgICB0aGlzLnVwZGF0ZVBhZ2luYXRpb24oKTtcblxuICAgIHRoaXMuZW1pdFRhYmxlRGF0YVZhbHVlKHRoaXMudGFibGVEYXRhKTtcbiAgfVxuXG4gIHVwZGF0ZVJhZGlvKGl0ZW06IGFueSwgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGl0ZW0udmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmVtaXRUYWJsZURhdGFWYWx1ZSh0aGlzLnRhYmxlRGF0YSk7XG4gIH1cbiAgLy8gTW9kaWZpZWQgdXBkYXRlIG1ldGhvZHMgdG8gdHJhY2sgY2hhbmdlc1xuICB1cGRhdGVMYWJlbChyb3dJbmRleDogbnVtYmVyLCBsYWJlbDogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy50YWJsZURhdGFbcm93SW5kZXhdW2xhYmVsXSA9IHZhbHVlO1xuICAgIHRoaXMuZW1pdFRhYmxlRGF0YVZhbHVlKHRoaXMudGFibGVEYXRhKTtcbiAgfVxuICAvL1JTIDAzRkVCMjAyNVxuICBkZWxldGVSb3cocm93SW5kZXg6IG51bWJlcikge1xuICAgIC8vIHRoaXMudGFibGVEYXRhLnNwbGljZShyb3dJbmRleCwgMSk7XG4gICAgY29uc3QgYWN0dWFsSW5kZXggPSAodGhpcy5jdXJyZW50UGFnZSAtIDEpICogdGhpcy5pdGVtc1BlclBhZ2UgKyByb3dJbmRleDtcbiAgICB0aGlzLnRhYmxlRGF0YS5zcGxpY2UoYWN0dWFsSW5kZXgsIDEpO1xuICAgIHRoaXMuZmlsdGVyZWREYXRhID0gWy4uLnRoaXMudGFibGVEYXRhXTtcbiAgICB0aGlzLnVwZGF0ZVBhZ2luYXRpb24oKTtcblxuICAgIHRoaXMuZW1pdFRhYmxlRGF0YVZhbHVlKHRoaXMudGFibGVEYXRhKTtcbiAgfVxuXG4gIGVkaXRSb3cocm93SW5kZXg6IG51bWJlcikge1xuICAgIHZhciBhID0gMDtcbiAgICB0aGlzLnRhYmxlRGF0YS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgaWYgKGEgPT09IHJvd0luZGV4KSB7XG4gICAgICAgIGVsZW1lbnQuZWRpdCA9IHRydWU7XG4gICAgICB9XG4gICAgICBhKys7XG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGVOdW1iZXIoaXRlbTogYW55LCBsYWJlbDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgaXRlbS52YWx1ZVtsYWJlbF0gPSB2YWx1ZTtcbiAgICB0aGlzLmVtaXRUYWJsZURhdGFWYWx1ZSh0aGlzLnRhYmxlRGF0YSk7XG4gIH1cblxuXG4gIGVtaXRUYWJsZURhdGFWYWx1ZSh1cGRhdGVkVGFibGVEYXRhOiBhbnlbXSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh1cGRhdGVkVGFibGVEYXRhKTtcbiAgfVxufSIsIjwhLS0gUlMgMDNGRUIyMDI1IC0tPlxuPCEtLSBTZWFyY2ggQmFyIC0tPlxuPCEtLSBTZWFyY2gsIFJldmVydCAmIFNhdmUgaW4gU2FtZSBMaW5lIC0tPlxuPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gbWItM1wiPlxuICA8IS0tIFNlYXJjaCBCYXIgLS0+XG4gIDxkaXYgY2xhc3M9XCJzZWFyY2gtY29udGFpbmVyIG1lLWF1dG9cIj5cbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cbiAgICAgIDxpbnB1dCBcbiAgICAgICAgdHlwZT1cInRleHRcIiBcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgc2VhcmNoLWlucHV0XCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXJtXCJcbiAgICAgICAgKGlucHV0KT1cInNlYXJjaCgpXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIlxuICAgICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1pY29uXCI+XG4gICAgPCEtLSBSUyAwM0ZFQjIwMjUgLS0+XG4gICAgPCEtLSBTZWFyY2ggaWNvbiBmb3IgdXNlciBpbnB1dCAtLT5cbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCIxMVwiIGN5PVwiMTFcIiByPVwiOFwiPjwvY2lyY2xlPlxuICAgICAgICAgIDxsaW5lIHgxPVwiMjFcIiB5MT1cIjIxXCIgeDI9XCIxNi42NVwiIHkyPVwiMTYuNjVcIj48L2xpbmU+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG48IS0tIFRhYmxlIENvbnRhaW5lciAtLT5cbjxkaXYgY2xhc3M9XCJ0YWJsZS1jb250YWluZXJcIj5cbiAgPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtc3RyaXBlZCB0YWJsZS1ib3JkZXJlZFwiPlxuICAgIDx0aGVhZD5cbiAgICAgICAgPCEtLSBIQSAyOERFQzIzIGNoYW5nZWQgdGFibGUgaGVhZGVyIHZhbHVlcyBhbmQgY2hhbmdlZCB0YWJsZSBzaXplIGxvZ2ljIHRvIGV2ZW5seSB2aXNpYmxlIC0tPlxuICAgIDwhLS0gPHRoPjxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiAoY2hhbmdlKT1cInNlbGVjdEFsbCgkZXZlbnQudGFyZ2V0LmNoZWNrZWQpXCI+PC90aD4gLS0+XG4gICAgICA8dHI+XG4gICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgaGVhZGVyIG9mIHRhYmxlSGVhZGVyXCIgW3N0eWxlLndpZHRoXT1cImhlYWRlci53aWR0aCB8fCAnYXV0bydcIj5cbiAgICAgICAgICB7eyBoZWFkZXIubGFiZWwgfX1cbiAgICAgICAgPC90aD5cbiAgICAgICAgPCEtLSBBY3Rpb25zIGNvbHVtbiAob25seSBpZiBzaG93QWN0aW9ucyBpcyB0cnVlKSAtLT48IS0tIFJTIDAzRkVCMjAyNSAtLT5cbiAgICAgICAgPHRoICpuZ0lmPVwic2hvd0FjdGlvbnNcIiBzdHlsZT1cIndpZHRoOiAxNDBweFwiIGNsYXNzPVwiYWN0aW9ucy1jb2x1bW5zXCI+QWN0aW9uczwvdGg+XG4gICAgICA8L3RyPlxuICAgIDwvdGhlYWQ+XG4gICAgPHRib2R5PlxuICAgICAgPHRyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHBhZ2luYXRlZERhdGE7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgPHRkICpuZ0Zvcj1cImxldCBoZWFkZXIgb2YgdGFibGVIZWFkZXJcIj5cbiAgICAgICAgICA8IS0tIEltYWdlIHdpdGggdGV4dCBpbnB1dCAtLT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyLmZsZFR5cGUgPT09ICdpbWFnZXRleHQnXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiaXRlbS5pbWFnZVNyY1wiIFthbHRdPVwiaXRlbS5hbHRUZXh0XCIgc3R5bGU9XCJ3aWR0aDogMzVweDsgaGVpZ2h0OiAzMnB4OyBtYXJnaW4tcmlnaHQ6IDVweDtcIj5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtW2hlYWRlci5maWVsZE5hbWVdXCIgXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlTGFiZWwoaSwgaGVhZGVyLmZpZWxkTmFtZSwgaXRlbVtoZWFkZXIuZmllbGROYW1lXSlcIiBcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNoZS1saW5lLWlucHV0IHRhYmxlLWlucHV0XCI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDwhLS0gSW1hZ2Ugb25seSAtLT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyLmZsZFR5cGUgPT09ICdpbWFnZSdcIj5cbiAgICAgICAgICAgIDxpbWcgW3NyY109XCJpdGVtW2hlYWRlci5maWVsZE5hbWVdXCIgW2FsdF09XCJpdGVtLmFsdFRleHRcIiBzdHlsZT1cIndpZHRoOiAzNXB4OyBoZWlnaHQ6IDMycHg7XCI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwhLS1WRCAyM0F1ZzI0IGhhbmRsZSByZWFkT25seSAgLS0+XG4gICAgICAgICAgPCEtLSBUZXh0IGlucHV0IC0tPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXIuZmxkVHlwZSA9PT0gJ1RleHQnXCI+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBcbiAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImhlYWRlci5yZWFkT25seVwiIFxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWl0ZW0uZWRpdFwiIFxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2VkaXRJbnB1dCc6IGl0ZW0uZWRpdCAmJiAhaGVhZGVyLnJlYWRPbmx5fVwiXG4gICAgICAgICAgICAgIFtuZ01vZGVsXT1cIicnIHwgZ2V0VmFsdWU6IGl0ZW0gOiBoZWFkZXIuYXBpTmFtZVwiIFxuICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVMYWJlbChpLCBoZWFkZXIuYXBpTmFtZSwkZXZlbnQpXCIgXG4gICAgICAgICAgICAgIGNsYXNzPVwic2hlLWxpbmUtaW5wdXQgdGFibGUtaW5wdXRcIj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPCEtLVZEIDIzQXVnMjQgaGFuZGxlIE51bWJlciBUeXBlIC0tPlxuICAgICAgICA8IS0tIE51bWJlciBpbnB1dCAtLT5cbiAgICAgICAgPCEtLSBWRCAyNkp1bjI0IC0gcGlwZSBjaGFuZ2UgdG8gaGFuZGxlIG11bHRpcGxlIG9iamVjdHMtLT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyLmZsZFR5cGUgPT09ICdOdW1iZXInXCI+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIFxuICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiaGVhZGVyLnJlYWRPbmx5XCIgXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXRlbS5lZGl0XCIgXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZWRpdElucHV0JzogaXRlbS5lZGl0ICYmICFoZWFkZXIucmVhZE9ubHl9XCJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwiJycgfCBnZXRWYWx1ZTogaXRlbSA6IGhlYWRlci5hcGlOYW1lXCIgXG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZUxhYmVsKGksIGhlYWRlci5hcGlOYW1lLCRldmVudClcIiBcbiAgICAgICAgICAgICAgY2xhc3M9XCJzaGUtbGluZS1pbnB1dCB0YWJsZS1pbnB1dFwiPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPCEtLSBSYWRpbyBpbnB1dCAtLT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyLmZsZFR5cGUgPT09ICdyYWRpbydcIj5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFkaW9cIiBcbiAgICAgICAgICAgICAgW25hbWVdPVwiaXRlbS5uYW1lXCIgXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cIml0ZW0udmFsdWUgPT0gaGVhZGVyLmZpZWxkTmFtZVwiICBcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZVJhZGlvKGl0ZW0sIGhlYWRlci5maWVsZE5hbWUpXCI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIDwhLS0gQWN0aW9ucyBjb2x1bW4gLS0+PCEtLSBSUyAwM0ZFQjIwMjUgLS0+XG4gICAgICAgIDx0ZCAqbmdJZj1cInNob3dBY3Rpb25zXCIgY2xhc3M9XCJhY3Rpb25zLWNvbHVtblwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWFyb3VuZFwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGluayBwLTBcIiAoY2xpY2spPVwiZWRpdFJvdyhpKVwiPlxuICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDNBOUY0XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPlxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTIgMjBoOVwiIC8+XG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNi41IDMuNWEyLjEyMSAyLjEyMSAwIDAgMSAzIDNMNyAxOWwtNCAxIDEtNFpcIiAvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJtMTUgNSAzIDNcIiAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWRpdFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHAtMFwiIChjbGljayk9XCJkZWxldGVSb3coaSlcIj5cbiAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiI0Y0NDMzNlwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTMgNmgxOFwiIC8+XG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk04IDZWNGEyIDIgMCAwIDEgMi0yaDRhMiAyIDAgMCAxIDIgMnYyXCIgLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwibTEwIDExIDEgNlwiIC8+XG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIm0xNCAxMS0xIDZcIiAvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNCA2bDEgMTRhMiAyIDAgMCAwIDIgMmgxMGEyIDIgMCAwIDAgMi0ybDEtMTRcIiAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVsZXRlXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgPC90Ym9keT5cbiAgPC90YWJsZT5cbjwvZGl2PlxuXG48IS0tIFBhZ2luYXRpb24gLS0+PCEtLSBSUyAwM0ZFQjIwMjUgLS0+XG48ZGl2ICpuZ0lmPVwic2hvd1BhZ2luYXRpb25cIiBjbGFzcz1cInBhZ2luYXRpb24tY29udGFpbmVyXCI+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaXRlbXMtcGVyLXBhZ2VcIj5cbiAgICAgIDxzcGFuPkl0ZW1zIHBlciBwYWdlOjwvc3Bhbj5cbiAgICAgIDxzZWxlY3QgWyhuZ01vZGVsKV09XCJpdGVtc1BlclBhZ2VcIiAoY2hhbmdlKT1cInVwZGF0ZVBhZ2luYXRpb24oKVwiIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3Qtc21cIj5cbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjVcIj41PC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCIxMFwiPjEwPC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCIyMFwiPjIwPC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCI1MFwiPjUwPC9vcHRpb24+XG4gICAgICA8L3NlbGVjdD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicGFnZS1pbmZvIG1zLTMgbWUtM1wiPlxuICAgICAge3soKGN1cnJlbnRQYWdlIC0gMSkgKiBpdGVtc1BlclBhZ2UgKyAxKX19IC0ge3tNYXRoLm1pbihjdXJyZW50UGFnZSAqIGl0ZW1zUGVyUGFnZSwgdG90YWxJdGVtcyl9fSBvZiB7e3RvdGFsSXRlbXN9fVxuICAgIDwvZGl2PlxuICAgIDxuYXYgYXJpYS1sYWJlbD1cIlRhYmxlIHBhZ2luYXRpb25cIj5cbiAgICAgIDwhLS0gRmlyc3QgcGFnZSAtLT48IS0tIFJTIDAzRkVCMjAyNSAtLT5cbiAgICAgIDx1bCBjbGFzcz1cInBhZ2luYXRpb24gbWItMFwiPlxuICAgICAgICA8bGkgY2xhc3M9XCJwYWdlLWl0ZW1cIiBbY2xhc3MuZGlzYWJsZWRdPVwiY3VycmVudFBhZ2UgPT09IDFcIj5cbiAgICAgICAgICA8YSBjbGFzcz1cInBhZ2UtbGlua1wiIChjbGljayk9XCJzZXRQYWdlKDEpXCI+wqs8L2E+XG4gICAgICAgIDwvbGk+XG4gICAgICAgIDxsaSBjbGFzcz1cInBhZ2UtaXRlbVwiIFtjbGFzcy5kaXNhYmxlZF09XCJjdXJyZW50UGFnZSA9PT0gMVwiPlxuICAgICAgICAgIDxhIGNsYXNzPVwicGFnZS1saW5rXCIgKGNsaWNrKT1cInNldFBhZ2UoY3VycmVudFBhZ2UgLSAxKVwiPuKAuTwvYT5cbiAgICAgICAgPC9saT5cbiAgICAgICAgPCEtLSBEeW5hbWljIHBhZ2luYXRpb24gLS0+PCEtLSBSUyAwM0ZFQjIwMjUgLS0+XG4gICAgICAgIDxsaSBjbGFzcz1cInBhZ2UtaXRlbVwiICpuZ0Zvcj1cImxldCBwYWdlIG9mIHBhZ2VzXCIgW2NsYXNzLmFjdGl2ZV09XCJwYWdlID09PSBjdXJyZW50UGFnZVwiPlxuICAgICAgICAgIDxhIGNsYXNzPVwicGFnZS1saW5rXCIgKGNsaWNrKT1cInNldFBhZ2UocGFnZSlcIj57e3BhZ2V9fTwvYT5cbiAgICAgICAgPC9saT5cbiAgICAgICAgPGxpIGNsYXNzPVwicGFnZS1pdGVtXCIgW2NsYXNzLmRpc2FibGVkXT1cImN1cnJlbnRQYWdlID09PSBwYWdlcy5sZW5ndGhcIj5cbiAgICAgICAgICA8YSBjbGFzcz1cInBhZ2UtbGlua1wiIChjbGljayk9XCJzZXRQYWdlKGN1cnJlbnRQYWdlICsgMSlcIj7igLo8L2E+XG4gICAgICAgIDwvbGk+XG4gICAgICAgIDwhLS0gTGFzdCBwYWdlIC0tPlxuICAgICAgICA8bGkgY2xhc3M9XCJwYWdlLWl0ZW1cIiBbY2xhc3MuZGlzYWJsZWRdPVwiY3VycmVudFBhZ2UgPT09IHBhZ2VzLmxlbmd0aFwiPlxuICAgICAgICAgIDxhIGNsYXNzPVwicGFnZS1saW5rXCIgKGNsaWNrKT1cInNldFBhZ2UocGFnZXMubGVuZ3RoKVwiPsK7PC9hPlxuICAgICAgICA8L2xpPlxuICAgICAgPC91bD5cbiAgICA8L25hdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjwhLS0gUlMgMDNGRUIyMDI1IC0tPlxuPCEtLSBBZGQgUm93IEJ1dHRvbiAtLT5cbjxkaXYgKm5nSWY9XCJzaG93QWRkUm93XCIgIChjbGljayk9XCJhZGRSb3coKVwiIGNsYXNzPVwiYWRkUm93Q2xhc3NcIj5cbiAgPGRpdiBjbGFzcz1cImNpcmNsZS1idXR0b25cIj4rPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
252
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9jb21wb25lbnRzL2N1c3RvbS10YWJsZS9jdXN0b20tdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvY3VzdG9tLXRhYmxlL2N1c3RvbS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7OztBQWlCL0UsTUFBTSxPQUFPLG9CQUFvQjtJQWlDWDtJQUFxQztJQUFrQztJQWhDbEYsUUFBUSxDQUFVO0lBQ2xCLE9BQU8sQ0FBUztJQUNmLFdBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUNuRSxXQUFXLEdBQUcsRUFBRSxDQUFDO0lBQ2pCLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDZixZQUFZLEdBQUcsRUFBRSxDQUFDLENBQUMsaUNBQWlDO0lBQ3BELGNBQWM7SUFDZCxvSkFBb0o7SUFDcEosVUFBVSxHQUFZLElBQUksQ0FBQztJQUMzQixjQUFjLEdBQVksSUFBSSxDQUFDO0lBQy9CLFdBQVcsR0FBWSxJQUFJLENBQUM7SUFDNUIsVUFBVSxHQUFZLElBQUksQ0FBQztJQUMzQixZQUFZLEdBQVcsQ0FBQyxDQUFDO0lBQ3pCLGFBQWEsQ0FBUztJQUN0QixTQUFTLENBQVMsQ0FBQyxvQ0FBb0M7SUFDdkQsT0FBTyxDQUFNO0lBQ2IsV0FBVyxDQUFNO0lBQ2pCLFNBQVMsQ0FBUztJQUNsQixNQUFNLENBQVM7SUFDZixTQUFTLEdBQVksS0FBSyxDQUFDO0lBQ3BCLE9BQU8sQ0FBVztJQUN6QixVQUFVLEdBQVksSUFBSSxDQUFDO0lBQzNC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QUUsS0FBYSxFQUFFLEtBQWE7UUFDbEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBR0Qsa0JBQWtCLENBQUMsZ0JBQXVCO1FBQ3hDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDMUMsQ0FBQzt3R0E1T1Usb0JBQW9COzRGQUFwQixvQkFBb0IsdUpDakJqQyxpNk9Ba0tBOzs0RkRqSmEsb0JBQW9CO2tCQU5oQyxTQUFTOytCQUNFLGtCQUFrQjtzSUFNbkIsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbi8vIEhBIDE5REVDMjMgaW1wb3J0ZWQgdHJhbnNsYXRpb24gc2VydmljZVxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi9pMThuLnNlcnZpY2UnO1xuaW1wb3J0IHsgUXVlc3Rpb24gfSBmcm9tICcuLi8uLi93cmFwcGVyJztcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IEFQSU1ldGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2FwaW1ldGEnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDaGFuZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2hhbmdlLnNlcnZpY2UnO1xuXG5kZWNsYXJlIHZhciAkOiBhbnk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jdXN0b20tdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vY3VzdG9tLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3VzdG9tLXRhYmxlLmNvbXBvbmVudC5jc3MnXVxufSlcblxuZXhwb3J0IGNsYXNzIEN1c3RvbVRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgcXVlc3Rpb246IFF1ZXN0aW9uXG4gIEBJbnB1dCgpIGFwaU1ldGE6IHN0cmluZztcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICB0YWJsZUhlYWRlciA9IFtdO1xuICB0YWJsZURhdGEgPSBbXTtcbiAgZmlsdGVyZWREYXRhID0gW107IC8vIE5ldyBwcm9wZXJ0eSBmb3IgZmlsdGVyZWQgZGF0YVxuICAvL1JTIDAzRkVCMjAyNVxuICAvLyBEZWZhdWx0IFVJIGNvbmZpZ3VyYXRpb25zIHRvIGNvbnRyb2wgcm93IGFkZGl0aW9uLCBwYWdpbmF0aW9uLCBhY3Rpb25zIGNvbHVtbiB2aXNpYmlsaXR5LCBzZWFyY2ggZnVuY3Rpb25hbGl0eSwgYW5kIHRoZSBudW1iZXIgb2YgaXRlbXMgcGVyIHBhZ2UuXG4gIHNob3dBZGRSb3c6IGJvb2xlYW4gPSB0cnVlO1xuICBzaG93UGFnaW5hdGlvbjogYm9vbGVhbiA9IHRydWU7XG4gIHNob3dBY3Rpb25zOiBib29sZWFuID0gdHJ1ZTtcbiAgc2hvd1NlYXJjaDogYm9vbGVhbiA9IHRydWU7XG4gIGl0ZW1zUGVyUGFnZTogbnVtYmVyID0gNTtcbiAgYWRkUm93Q29sU3BhbjogbnVtYmVyO1xuICB0YWJsZVNpemU6IG51bWJlcjsgLy8gSEEgMjhERUMyMyB0YWJsZSBzaXplIGRlY2xhcmF0aW9uXG4gIG9iak5hbWU6IGFueTtcbiAgZmlsdGVyTG9naWM6IGFueTtcbiAgZmllbGRNZXRhOiBzdHJpbmc7XG4gIGZpclN0cjogc3RyaW5nO1xuICBzZWFyY2hCb3g6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIG9wdGlvbnM6IHN0cmluZ1tdO1xuICBpc0Rpc2FibGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cblxuICAvL1JTIDAzRkVCMjAyNVxuICAvLyBOZXcgcHJvcGVydGllcyBmb3Igc2VhcmNoIGFuZCBwYWdpbmF0aW9uXG4gIHNlYXJjaFRlcm06IHN0cmluZyA9ICcnO1xuICBjdXJyZW50UGFnZTogbnVtYmVyID0gMTtcbiAgdG90YWxJdGVtczogbnVtYmVyID0gMDtcbiAgcGFnZXM6IG51bWJlcltdID0gW107XG4gIE1hdGggPSBNYXRoO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNoYW5nZVNlcnZpY2U6IENoYW5nZVNlcnZpY2UsIHB1YmxpYyBpMThuU2VydmljZTogSTE4blNlcnZpY2UsIHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlKSB7IH1cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gU0tTMjBNQVIyNSBjaGVjayBpZiBxdWVzdGlvbiBmaWVsZHNtZXRhIGlzIHN0cmluZ1xuICAgICAgY29uc3QgcGFyc2VkTWV0YSA9ICB0eXBlb2YgdGhpcy5xdWVzdGlvblsnZmllbGRzTWV0YSddID09PSAnb2JqZWN0JyAgPyAgdGhpcy5xdWVzdGlvblsnZmllbGRzTWV0YSddIHx8IFt7fV0gOiBKU09OLnBhcnNlKCB0aGlzLnF1ZXN0aW9uWydmaWVsZHNNZXRhJ10pIDtcbiAgICAgIGlmICghcGFyc2VkTWV0YSB8fCAhQXJyYXkuaXNBcnJheShwYXJzZWRNZXRhKSB8fCBwYXJzZWRNZXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ05vIHZhbGlkIG1ldGFkYXRhIHByb3ZpZGVkJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy9SUyAwM0ZFQjIwMjVcbiAgICAgIC8vIEV4dHJhY3RzIHRhYmxlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgZHluYW1pY2FsbHkgZnJvbSBtZXRhZGF0YSBhbmQgYXBwbGllcyB0aGVtLCBlbnN1cmluZyBmbGV4aWJpbGl0eSBpbiBVSSBjdXN0b21pemF0aW9uXG4gICAgICBpZiAocGFyc2VkTWV0YVswXT8udGFibGVDb25maWcpIHtcbiAgICAgICAgY29uc3QgY29uZmlnID0gcGFyc2VkTWV0YVswXS50YWJsZUNvbmZpZztcbiAgICAgICAgdGhpcy5zaG93QWRkUm93ID0gY29uZmlnLnNob3dBZGRSb3cgIT09IGZhbHNlO1xuICAgICAgICB0aGlzLnNob3dQYWdpbmF0aW9uID0gY29uZmlnLnNob3dQYWdpbmF0aW9uICE9PSBmYWxzZTtcbiAgICAgICAgdGhpcy5zaG93QWN0aW9ucyA9IGNvbmZpZy5zaG93QWN0aW9ucyAhPT0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd1NlYXJjaCA9IGNvbmZpZy5zaG93U2VhcmNoICE9PSBmYWxzZTtcbiAgICAgICAgdGhpcy5pdGVtc1BlclBhZ2UgPSBjb25maWcuaXRlbXNQZXJQYWdlIHx8IDU7XG5cbiAgICAgICAgLy8gUmVtb3ZlIHRoZSBjb25maWcgb2JqZWN0IGZyb20gaGVhZGVyc1xuICAgICAgICB0aGlzLnRhYmxlSGVhZGVyID0gcGFyc2VkTWV0YS5zbGljZSgxKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIElmIG5vIGNvbmZpZyBvYmplY3QgZm91bmQsIHVzZSBhbGwgb2JqZWN0cyBhcyBoZWFkZXJzXG4gICAgICAgIHRoaXMudGFibGVIZWFkZXIgPSBwYXJzZWRNZXRhO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnRhYmxlU2l6ZSA9IDEwIC8gdGhpcy50YWJsZUhlYWRlci5sZW5ndGg7XG4gICAgICAvLyAxMkpVTjI0IC0gZGVmYXVsdCB0YWJsZSB2YWx1ZVxuICAgICAgaWYgKHRoaXMucXVlc3Rpb24/LmlucHV0KSB7XG4gICAgICAgIHRoaXMudGFibGVEYXRhID0gdGhpcy5xdWVzdGlvbj8uaW5wdXQ7XG4gICAgICAgIHRoaXMuZmlsdGVyZWREYXRhID0gWy4uLnRoaXMudGFibGVEYXRhXTtcbiAgICAgICAgdGhpcy51cGRhdGVQYWdpbmF0aW9uKCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5hcGlNZXRhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gW107XG4gICAgICAgIC8vIGxldCBhcGlPYmo6IEFQSU1ldGEgPSBKU09OLnBhcnNlKHRoaXMuYXBpTWV0YSk7XG4gICAgICAgICAgICAvLyBNU00tMjdNQVIyNSBFbnN1cmUgcXVlcy5zdWJUZXh0IGlzIGFsd2F5cyBhbiBvYmplY3QgYnkgcGFyc2luZyBpdCBpZiBpdCdzIGEgc3RyaW5nXG4gICAgICAgIGxldCBhcGlPYmo6IEFQSU1ldGEgPSB0eXBlb2YgdGhpcy5hcGlNZXRhID09PSAnb2JqZWN0JyA/IHRoaXMuYXBpTWV0YSA6IEpTT04ucGFyc2UodGhpcy5hcGlNZXRhKTtcblxuICAgICAgICBpZiAoYXBpT2JqICYmIGFwaU9iai5lbmRwb2ludCkge1xuICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuYXBpUmVzcG9uc2UoYXBpT2JqLmVuZHBvaW50KT8uc3Vic2NyaWJlKChhcGlSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgbGV0IHJlc3BvbnNlcztcbiAgICAgICAgICAgIGlmIChhcGlPYmoudmFyaWFibGUpIHtcbiAgICAgICAgICAgICAgLy8gVkQgMjJNYXkyNCAtIGhhbmRsaW5nIG11bHRpcGxlIGNoaWxkIG9iamVjdHNcbiAgICAgICAgICAgICAgcmVzcG9uc2VzID0gdGhpcy5kYXRhU2VydmljZS5nZXRWYWx1ZShhcGlSZXNwb25zZSwgYXBpT2JqLnZhcmlhYmxlKTtcbiAgICAgICAgICAgICAgbGV0IHJlc3VsdHMgPSBbXTtcbiAgICAgICAgICAgICAgLy8gSEEgMTlKQU4yNCBUbyBhdm9pZCB1bmRlZmluZWQgZXJyb3IgaW4gY29uc29sZVxuICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc3BvbnNlcz8ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcCA9IHJlc3BvbnNlc1tpXTtcbiAgICAgICAgICAgICAgICByZXN1bHRzLnB1c2gocmVzcCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gcmVzdWx0cztcbiAgICAgICAgICAgIH0gZWxzZSB7ICAvLyBWRCAxOUpBTjI0IC0gaWYgcmVzcG9uc2UgaGFzIHZhbHVlKHdoaWNoIGlzIGFycmF5KSBvbmx5XG4gICAgICAgICAgICAgIHJlc3BvbnNlcyA9IGFwaVJlc3BvbnNlO1xuICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMgPSByZXNwb25zZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLm9wdGlvbnMubWFwKChvYmo6IGFueSkgPT4gKHsgLi4ub2JqLCBlZGl0OiBmYWxzZSB9KSk7XG4gICAgICAgICAgICAvLyBSZWZlcmVuY2UgaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvQG5nLXNlbGVjdC9uZy1zZWxlY3RcbiAgICAgICAgICAgIHRoaXMudGFibGVEYXRhID0gdGhpcy5vcHRpb25zO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ3RhYmxlRGF0YScsIHRoaXMudGFibGVEYXRhKTtcblxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVkQgTk9WMjMgLSBoYW5kbGUgdGhlIGRlcGVuZGVudCB1cGRhdGUgZm9yIGRyb3Bkb3duXG4gICAgICAgIGxldCBzb3VyY2VJZCA9IGFwaU9iaj8uc291cmNlUXVlc3Rpb25JZDtcbiAgICAgICAgbGV0IGZpZWxkID0gYXBpT2JqPy5maWVsZDsgICAgICAgIC8vIFZEIDEzTUFZMjQgLSBkeW5hbWljIGZpZWxkIGNoYW5nZXNcbiAgICAgICAgaWYgKHNvdXJjZUlkKSB7XG4gICAgICAgICAgLy8gLy8gVkQgMTBNYXkyNCBTdWJzY3JpYmUgZm9yIHRoZSBjaGFuZ2VzXG4gICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLmNoYW5nZVNlcnZpY2UuY2hhbmdlQW5ub3VuY2VkJC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAoY2hhbmdlVmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGNoYW5nZVZhbHVlICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGlmIChjaGFuZ2VWYWx1ZS52YWx1ZU9iaiAhPSB1bmRlZmluZWQgJiYgY2hhbmdlVmFsdWUuZnJvbVF1ZXN0aW9uSWQgPT0gYXBpT2JqLnNvdXJjZVF1ZXN0aW9uSWQpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdjaGFuZ2VzIGhhcHBlbicpO1xuICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gdGhpcy5vcHRpb25zLm1hcCgob2JqOiBhbnkpID0+ICh7IC4uLm9iaiwgZWRpdDogZmFsc2UgfSkpO1xuICAgICAgICAgICAgICAgICAgbGV0IGl0ZW0gPSBjaGFuZ2VWYWx1ZS52YWx1ZU9iajtcbiAgICAgICAgICAgICAgICAgIGxldCB2YWxpZEl0ZW0gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgLy8gVkQgMTNNQVkyNCAtIGJpbmQgZHluYW1pYyBmaWVsZFxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudGFibGVEYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZURhdGEuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAvLyBWRCAyNkp1bjI0IC0gdG8gaGFuZGxlIG11bHRpcGxlIG9iamVjdHNcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvYmpFbGVtZW50VmFsdWUgPSB0aGlzLmRhdGFTZXJ2aWNlLmdldFZhbHVlKGVsZW1lbnQsIGZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvYmpJdGVtVmFsdWUgPSB0aGlzLmRhdGFTZXJ2aWNlLmdldFZhbHVlKGl0ZW0sIGZpZWxkKVxuICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmpFbGVtZW50VmFsdWUgPT0gb2JqSXRlbVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZEl0ZW0gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgLy9SUyAxNEZFQjIwMjVcbiAgICAgICAgICAgICAgICAgIC8vVXBkYXRlIFBhZ2luYXRpb24gYmVmb3JlIGVtaXRcbiAgICAgICAgICAgICAgICAgIGlmICh2YWxpZEl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudGFibGVEYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IFsuLi50aGlzLnRhYmxlRGF0YSwgaXRlbV07XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZURhdGEucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgZmlsdGVyZWREYXRhIGFuZCBwYWdpbmF0aW9uXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyZWREYXRhID0gWy4uLnRoaXMudGFibGVEYXRhXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVQYWdpbmF0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW1pdFRhYmxlRGF0YVZhbHVlKHRoaXMudGFibGVEYXRhKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VTZXJ2aWNlLmNvbmZpcm1DaGFuZ2UoYXBpT2JqPy5zb3VyY2VRdWVzdGlvbklkKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMudXBkYXRlUGFnaW5hdGlvbigpO1xuICB9XG4gIC8vUlMgMDNGRUIyMDI1XG4gIC8vIOKGkiBGaWx0ZXJzIHRhYmxlIGRhdGEgYmFzZWQgb24gdXNlciBpbnB1dCBhbmQgdXBkYXRlcyBwYWdpbmF0aW9uIGFjY29yZGluZ2x5LlxuICBzZWFyY2goKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlYXJjaFRlcm0udHJpbSgpKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkRGF0YSA9IFsuLi50aGlzLnRhYmxlRGF0YV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHNlYXJjaFRlcm1Mb3dlciA9IHRoaXMuc2VhcmNoVGVybS50b0xvd2VyQ2FzZSgpO1xuICAgICAgdGhpcy5maWx0ZXJlZERhdGEgPSB0aGlzLnRhYmxlRGF0YS5maWx0ZXIoaXRlbSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhYmxlSGVhZGVyLnNvbWUoaGVhZGVyID0+IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZGF0YVNlcnZpY2UuZ2V0VmFsdWUoaXRlbSwgaGVhZGVyLmFwaU5hbWUpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZSAmJiB2YWx1ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybUxvd2VyKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XG4gICAgdGhpcy51cGRhdGVQYWdpbmF0aW9uKCk7XG4gIH1cbiAgLy9SUyAwM0ZFQjIwMjVcbiAgLy8gQ2FsY3VsYXRlcyB0b3RhbCBwYWdlcywgdXBkYXRlcyB0aGUgcGFnZSBsaXN0LCBhbmQgZW5zdXJlcyB0aGUgY3VycmVudCBwYWdlIGlzIHdpdGhpbiB2YWxpZCBib3VuZHMuXG4gIHVwZGF0ZVBhZ2luYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy50b3RhbEl0ZW1zID0gdGhpcy5maWx0ZXJlZERhdGEubGVuZ3RoO1xuICAgIGNvbnN0IHRvdGFsUGFnZXMgPSBNYXRoLmNlaWwodGhpcy50b3RhbEl0ZW1zIC8gdGhpcy5pdGVtc1BlclBhZ2UpO1xuICAgIHRoaXMucGFnZXMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiB0b3RhbFBhZ2VzIH0sIChfLCBpKSA9PiBpICsgMSk7XG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2UgPiB0b3RhbFBhZ2VzKSB7XG4gICAgICB0aGlzLmN1cnJlbnRQYWdlID0gdG90YWxQYWdlcyB8fCAxO1xuICAgIH1cbiAgfVxuICAvL1JTIDAzRkVCMjAyNVxuICAvL1JldHVybnMgYSBwYWdpbmF0ZWQgc3Vic2V0IG9mIGZpbHRlcmVkRGF0YSBiYXNlZCBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBpdGVtcyBwZXIgcGFnZVxuICBnZXQgcGFnaW5hdGVkRGF0YSgpOiBhbnlbXSB7XG4gICAgY29uc3Qgc3RhcnRJbmRleCA9ICh0aGlzLmN1cnJlbnRQYWdlIC0gMSkgKiB0aGlzLml0ZW1zUGVyUGFnZTtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZERhdGEuc2xpY2Uoc3RhcnRJbmRleCwgc3RhcnRJbmRleCArIHRoaXMuaXRlbXNQZXJQYWdlKTtcbiAgfVxuICAvL1JTIDAzRkVCMjAyNVxuICAvL1VwZGF0ZXMgY3VycmVudFBhZ2Ugd2hlbiB0aGUgdXNlciBzZWxlY3RzIGEgZGlmZmVyZW50IHBhZ2VcbiAgc2V0UGFnZShwYWdlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAocGFnZSA+PSAxICYmIHBhZ2UgPD0gdGhpcy5wYWdlcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSBwYWdlO1xuICAgIH1cbiAgfVxuXG4gIGFkZFJvdygpOiB2b2lkIHtcbiAgICBsZXQgbmV3SXRlbSA9IHt9O1xuICAgIHRoaXMudGFibGVIZWFkZXIuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGlmIChpdGVtLmFwaU5hbWUpIHtcbiAgICAgICAgbmV3SXRlbVtpdGVtLmFwaU5hbWVdID0gXCJcIjtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnRhYmxlRGF0YS5wdXNoKG5ld0l0ZW0pO1xuICAgIHRoaXMuZmlsdGVyZWREYXRhID0gWy4uLnRoaXMudGFibGVEYXRhXTtcbiAgICB0aGlzLnVwZGF0ZVBhZ2luYXRpb24oKTtcblxuICAgIHRoaXMuZW1pdFRhYmxlRGF0YVZhbHVlKHRoaXMudGFibGVEYXRhKTtcbiAgfVxuXG4gIHVwZGF0ZVJhZGlvKGl0ZW06IGFueSwgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGl0ZW0udmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmVtaXRUYWJsZURhdGFWYWx1ZSh0aGlzLnRhYmxlRGF0YSk7XG4gIH1cbiAgLy8gTW9kaWZpZWQgdXBkYXRlIG1ldGhvZHMgdG8gdHJhY2sgY2hhbmdlc1xuICB1cGRhdGVMYWJlbChyb3dJbmRleDogbnVtYmVyLCBsYWJlbDogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy50YWJsZURhdGFbcm93SW5kZXhdW2xhYmVsXSA9IHZhbHVlO1xuICAgIHRoaXMuZW1pdFRhYmxlRGF0YVZhbHVlKHRoaXMudGFibGVEYXRhKTtcbiAgfVxuICAvL1JTIDAzRkVCMjAyNVxuICBkZWxldGVSb3cocm93SW5kZXg6IG51bWJlcikge1xuICAgIC8vIHRoaXMudGFibGVEYXRhLnNwbGljZShyb3dJbmRleCwgMSk7XG4gICAgY29uc3QgYWN0dWFsSW5kZXggPSAodGhpcy5jdXJyZW50UGFnZSAtIDEpICogdGhpcy5pdGVtc1BlclBhZ2UgKyByb3dJbmRleDtcbiAgICB0aGlzLnRhYmxlRGF0YS5zcGxpY2UoYWN0dWFsSW5kZXgsIDEpO1xuICAgIHRoaXMuZmlsdGVyZWREYXRhID0gWy4uLnRoaXMudGFibGVEYXRhXTtcbiAgICB0aGlzLnVwZGF0ZVBhZ2luYXRpb24oKTtcblxuICAgIHRoaXMuZW1pdFRhYmxlRGF0YVZhbHVlKHRoaXMudGFibGVEYXRhKTtcbiAgfVxuXG4gIGVkaXRSb3cocm93SW5kZXg6IG51bWJlcikge1xuICAgIHZhciBhID0gMDtcbiAgICB0aGlzLnRhYmxlRGF0YS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgaWYgKGEgPT09IHJvd0luZGV4KSB7XG4gICAgICAgIGVsZW1lbnQuZWRpdCA9IHRydWU7XG4gICAgICB9XG4gICAgICBhKys7XG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGVOdW1iZXIoaXRlbTogYW55LCBsYWJlbDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgaXRlbS52YWx1ZVtsYWJlbF0gPSB2YWx1ZTtcbiAgICB0aGlzLmVtaXRUYWJsZURhdGFWYWx1ZSh0aGlzLnRhYmxlRGF0YSk7XG4gIH1cblxuXG4gIGVtaXRUYWJsZURhdGFWYWx1ZSh1cGRhdGVkVGFibGVEYXRhOiBhbnlbXSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh1cGRhdGVkVGFibGVEYXRhKTtcbiAgfVxufSIsIjwhLS0gUlMgMDNGRUIyMDI1IC0tPlxuPCEtLSBTZWFyY2ggQmFyIC0tPlxuPCEtLSBTZWFyY2gsIFJldmVydCAmIFNhdmUgaW4gU2FtZSBMaW5lIC0tPlxuPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gbWItM1wiPlxuICA8IS0tIFNlYXJjaCBCYXIgLS0+XG4gIDxkaXYgY2xhc3M9XCJzZWFyY2gtY29udGFpbmVyIG1lLWF1dG9cIj5cbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cbiAgICAgIDxpbnB1dCBcbiAgICAgICAgdHlwZT1cInRleHRcIiBcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgc2VhcmNoLWlucHV0XCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXJtXCJcbiAgICAgICAgKGlucHV0KT1cInNlYXJjaCgpXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIlxuICAgICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1pY29uXCI+XG4gICAgPCEtLSBSUyAwM0ZFQjIwMjUgLS0+XG4gICAgPCEtLSBTZWFyY2ggaWNvbiBmb3IgdXNlciBpbnB1dCAtLT5cbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCIxMVwiIGN5PVwiMTFcIiByPVwiOFwiPjwvY2lyY2xlPlxuICAgICAgICAgIDxsaW5lIHgxPVwiMjFcIiB5MT1cIjIxXCIgeDI9XCIxNi42NVwiIHkyPVwiMTYuNjVcIj48L2xpbmU+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG48IS0tIFRhYmxlIENvbnRhaW5lciAtLT5cbjxkaXYgY2xhc3M9XCJ0YWJsZS1jb250YWluZXJcIj5cbiAgPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtc3RyaXBlZCB0YWJsZS1ib3JkZXJlZFwiPlxuICAgIDx0aGVhZD5cbiAgICAgICAgPCEtLSBIQSAyOERFQzIzIGNoYW5nZWQgdGFibGUgaGVhZGVyIHZhbHVlcyBhbmQgY2hhbmdlZCB0YWJsZSBzaXplIGxvZ2ljIHRvIGV2ZW5seSB2aXNpYmxlIC0tPlxuICAgIDwhLS0gPHRoPjxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiAoY2hhbmdlKT1cInNlbGVjdEFsbCgkZXZlbnQudGFyZ2V0LmNoZWNrZWQpXCI+PC90aD4gLS0+XG4gICAgICA8dHI+XG4gICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgaGVhZGVyIG9mIHRhYmxlSGVhZGVyXCIgW3N0eWxlLndpZHRoXT1cImhlYWRlci53aWR0aCB8fCAnYXV0bydcIj5cbiAgICAgICAgICB7eyBoZWFkZXIubGFiZWwgfX1cbiAgICAgICAgPC90aD5cbiAgICAgICAgPCEtLSBBY3Rpb25zIGNvbHVtbiAob25seSBpZiBzaG93QWN0aW9ucyBpcyB0cnVlKSAtLT48IS0tIFJTIDAzRkVCMjAyNSAtLT5cbiAgICAgICAgPHRoICpuZ0lmPVwic2hvd0FjdGlvbnNcIiBzdHlsZT1cIndpZHRoOiAxNDBweFwiIGNsYXNzPVwiYWN0aW9ucy1jb2x1bW5zXCI+QWN0aW9uczwvdGg+XG4gICAgICA8L3RyPlxuICAgIDwvdGhlYWQ+XG4gICAgPHRib2R5PlxuICAgICAgPHRyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHBhZ2luYXRlZERhdGE7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgPHRkICpuZ0Zvcj1cImxldCBoZWFkZXIgb2YgdGFibGVIZWFkZXJcIj5cbiAgICAgICAgICA8IS0tIEltYWdlIHdpdGggdGV4dCBpbnB1dCAtLT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyLmZsZFR5cGUgPT09ICdpbWFnZXRleHQnXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiaXRlbS5pbWFnZVNyY1wiIFthbHRdPVwiaXRlbS5hbHRUZXh0XCIgc3R5bGU9XCJ3aWR0aDogMzVweDsgaGVpZ2h0OiAzMnB4OyBtYXJnaW4tcmlnaHQ6IDVweDtcIj5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtW2hlYWRlci5maWVsZE5hbWVdXCIgXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlTGFiZWwoaSwgaGVhZGVyLmZpZWxkTmFtZSwgaXRlbVtoZWFkZXIuZmllbGROYW1lXSlcIiBcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNoZS1saW5lLWlucHV0IHRhYmxlLWlucHV0XCI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDwhLS0gSW1hZ2Ugb25seSAtLT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyLmZsZFR5cGUgPT09ICdpbWFnZSdcIj5cbiAgICAgICAgICAgIDxpbWcgW3NyY109XCJpdGVtW2hlYWRlci5maWVsZE5hbWVdXCIgW2FsdF09XCJpdGVtLmFsdFRleHRcIiBzdHlsZT1cIndpZHRoOiAzNXB4OyBoZWlnaHQ6IDMycHg7XCI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwhLS1WRCAyM0F1ZzI0IGhhbmRsZSByZWFkT25seSAgLS0+XG4gICAgICAgICAgPCEtLSBUZXh0IGlucHV0IC0tPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXIuZmxkVHlwZSA9PT0gJ1RleHQnXCI+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBcbiAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImhlYWRlci5yZWFkT25seVwiIFxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWl0ZW0uZWRpdFwiIFxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2VkaXRJbnB1dCc6IGl0ZW0uZWRpdCAmJiAhaGVhZGVyLnJlYWRPbmx5fVwiXG4gICAgICAgICAgICAgIFtuZ01vZGVsXT1cIicnIHwgZ2V0VmFsdWU6IGl0ZW0gOiBoZWFkZXIuYXBpTmFtZVwiIFxuICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVMYWJlbChpLCBoZWFkZXIuYXBpTmFtZSwkZXZlbnQpXCIgXG4gICAgICAgICAgICAgIGNsYXNzPVwic2hlLWxpbmUtaW5wdXQgdGFibGUtaW5wdXRcIj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPCEtLVZEIDIzQXVnMjQgaGFuZGxlIE51bWJlciBUeXBlIC0tPlxuICAgICAgICA8IS0tIE51bWJlciBpbnB1dCAtLT5cbiAgICAgICAgPCEtLSBWRCAyNkp1bjI0IC0gcGlwZSBjaGFuZ2UgdG8gaGFuZGxlIG11bHRpcGxlIG9iamVjdHMtLT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyLmZsZFR5cGUgPT09ICdOdW1iZXInXCI+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIFxuICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiaGVhZGVyLnJlYWRPbmx5XCIgXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXRlbS5lZGl0XCIgXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZWRpdElucHV0JzogaXRlbS5lZGl0ICYmICFoZWFkZXIucmVhZE9ubHl9XCJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwiJycgfCBnZXRWYWx1ZTogaXRlbSA6IGhlYWRlci5hcGlOYW1lXCIgXG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZUxhYmVsKGksIGhlYWRlci5hcGlOYW1lLCRldmVudClcIiBcbiAgICAgICAgICAgICAgY2xhc3M9XCJzaGUtbGluZS1pbnB1dCB0YWJsZS1pbnB1dFwiPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPCEtLSBSYWRpbyBpbnB1dCAtLT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyLmZsZFR5cGUgPT09ICdyYWRpbydcIj5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFkaW9cIiBcbiAgICAgICAgICAgICAgW25hbWVdPVwiaXRlbS5uYW1lXCIgXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cIml0ZW0udmFsdWUgPT0gaGVhZGVyLmZpZWxkTmFtZVwiICBcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZVJhZGlvKGl0ZW0sIGhlYWRlci5maWVsZE5hbWUpXCI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIDwhLS0gQWN0aW9ucyBjb2x1bW4gLS0+PCEtLSBSUyAwM0ZFQjIwMjUgLS0+XG4gICAgICAgIDx0ZCAqbmdJZj1cInNob3dBY3Rpb25zXCIgY2xhc3M9XCJhY3Rpb25zLWNvbHVtblwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWFyb3VuZFwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGluayBwLTBcIiAoY2xpY2spPVwiZWRpdFJvdyhpKVwiPlxuICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDNBOUY0XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPlxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTIgMjBoOVwiIC8+XG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNi41IDMuNWEyLjEyMSAyLjEyMSAwIDAgMSAzIDNMNyAxOWwtNCAxIDEtNFpcIiAvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJtMTUgNSAzIDNcIiAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWRpdFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHAtMFwiIChjbGljayk9XCJkZWxldGVSb3coaSlcIj5cbiAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiI0Y0NDMzNlwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTMgNmgxOFwiIC8+XG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk04IDZWNGEyIDIgMCAwIDEgMi0yaDRhMiAyIDAgMCAxIDIgMnYyXCIgLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwibTEwIDExIDEgNlwiIC8+XG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIm0xNCAxMS0xIDZcIiAvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNCA2bDEgMTRhMiAyIDAgMCAwIDIgMmgxMGEyIDIgMCAwIDAgMi0ybDEtMTRcIiAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVsZXRlXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgPC90Ym9keT5cbiAgPC90YWJsZT5cbjwvZGl2PlxuXG48IS0tIFBhZ2luYXRpb24gLS0+PCEtLSBSUyAwM0ZFQjIwMjUgLS0+XG48ZGl2ICpuZ0lmPVwic2hvd1BhZ2luYXRpb25cIiBjbGFzcz1cInBhZ2luYXRpb24tY29udGFpbmVyXCI+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaXRlbXMtcGVyLXBhZ2VcIj5cbiAgICAgIDxzcGFuPkl0ZW1zIHBlciBwYWdlOjwvc3Bhbj5cbiAgICAgIDxzZWxlY3QgWyhuZ01vZGVsKV09XCJpdGVtc1BlclBhZ2VcIiAoY2hhbmdlKT1cInVwZGF0ZVBhZ2luYXRpb24oKVwiIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3Qtc21cIj5cbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjVcIj41PC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCIxMFwiPjEwPC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCIyMFwiPjIwPC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCI1MFwiPjUwPC9vcHRpb24+XG4gICAgICA8L3NlbGVjdD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicGFnZS1pbmZvIG1zLTMgbWUtM1wiPlxuICAgICAge3soKGN1cnJlbnRQYWdlIC0gMSkgKiBpdGVtc1BlclBhZ2UgKyAxKX19IC0ge3tNYXRoLm1pbihjdXJyZW50UGFnZSAqIGl0ZW1zUGVyUGFnZSwgdG90YWxJdGVtcyl9fSBvZiB7e3RvdGFsSXRlbXN9fVxuICAgIDwvZGl2PlxuICAgIDxuYXYgYXJpYS1sYWJlbD1cIlRhYmxlIHBhZ2luYXRpb25cIj5cbiAgICAgIDwhLS0gRmlyc3QgcGFnZSAtLT48IS0tIFJTIDAzRkVCMjAyNSAtLT5cbiAgICAgIDx1bCBjbGFzcz1cInBhZ2luYXRpb24gbWItMFwiPlxuICAgICAgICA8bGkgY2xhc3M9XCJwYWdlLWl0ZW1cIiBbY2xhc3MuZGlzYWJsZWRdPVwiY3VycmVudFBhZ2UgPT09IDFcIj5cbiAgICAgICAgICA8YSBjbGFzcz1cInBhZ2UtbGlua1wiIChjbGljayk9XCJzZXRQYWdlKDEpXCI+wqs8L2E+XG4gICAgICAgIDwvbGk+XG4gICAgICAgIDxsaSBjbGFzcz1cInBhZ2UtaXRlbVwiIFtjbGFzcy5kaXNhYmxlZF09XCJjdXJyZW50UGFnZSA9PT0gMVwiPlxuICAgICAgICAgIDxhIGNsYXNzPVwicGFnZS1saW5rXCIgKGNsaWNrKT1cInNldFBhZ2UoY3VycmVudFBhZ2UgLSAxKVwiPuKAuTwvYT5cbiAgICAgICAgPC9saT5cbiAgICAgICAgPCEtLSBEeW5hbWljIHBhZ2luYXRpb24gLS0+PCEtLSBSUyAwM0ZFQjIwMjUgLS0+XG4gICAgICAgIDxsaSBjbGFzcz1cInBhZ2UtaXRlbVwiICpuZ0Zvcj1cImxldCBwYWdlIG9mIHBhZ2VzXCIgW2NsYXNzLmFjdGl2ZV09XCJwYWdlID09PSBjdXJyZW50UGFnZVwiPlxuICAgICAgICAgIDxhIGNsYXNzPVwicGFnZS1saW5rXCIgKGNsaWNrKT1cInNldFBhZ2UocGFnZSlcIj57e3BhZ2V9fTwvYT5cbiAgICAgICAgPC9saT5cbiAgICAgICAgPGxpIGNsYXNzPVwicGFnZS1pdGVtXCIgW2NsYXNzLmRpc2FibGVkXT1cImN1cnJlbnRQYWdlID09PSBwYWdlcy5sZW5ndGhcIj5cbiAgICAgICAgICA8YSBjbGFzcz1cInBhZ2UtbGlua1wiIChjbGljayk9XCJzZXRQYWdlKGN1cnJlbnRQYWdlICsgMSlcIj7igLo8L2E+XG4gICAgICAgIDwvbGk+XG4gICAgICAgIDwhLS0gTGFzdCBwYWdlIC0tPlxuICAgICAgICA8bGkgY2xhc3M9XCJwYWdlLWl0ZW1cIiBbY2xhc3MuZGlzYWJsZWRdPVwiY3VycmVudFBhZ2UgPT09IHBhZ2VzLmxlbmd0aFwiPlxuICAgICAgICAgIDxhIGNsYXNzPVwicGFnZS1saW5rXCIgKGNsaWNrKT1cInNldFBhZ2UocGFnZXMubGVuZ3RoKVwiPsK7PC9hPlxuICAgICAgICA8L2xpPlxuICAgICAgPC91bD5cbiAgICA8L25hdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjwhLS0gUlMgMDNGRUIyMDI1IC0tPlxuPCEtLSBBZGQgUm93IEJ1dHRvbiAtLT5cbjxkaXYgKm5nSWY9XCJzaG93QWRkUm93XCIgIChjbGljayk9XCJhZGRSb3coKVwiIGNsYXNzPVwiYWRkUm93Q2xhc3NcIj5cbiAgPGRpdiBjbGFzcz1cImNpcmNsZS1idXR0b25cIj4rPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|