ngx-histaff-alpha 0.3.2 → 0.3.3
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/lib/app/libraries/core-button-group-vns/core-button-vns/core-button-vns.component.mjs +2 -2
- package/esm2022/lib/app/libraries/core-table/core-table.component.mjs +2 -2
- package/fesm2022/ngx-histaff-alpha.mjs +2 -2
- package/fesm2022/ngx-histaff-alpha.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -18,7 +18,7 @@ export class CoreButtonVnsComponent {
|
|
|
18
18
|
this.subscriptions = [];
|
|
19
19
|
}
|
|
20
20
|
ngOnChanges(changes) {
|
|
21
|
-
if (!changes['height']
|
|
21
|
+
if (!changes['height']?.currentValue) {
|
|
22
22
|
//fallback
|
|
23
23
|
this.height = 30;
|
|
24
24
|
}
|
|
@@ -61,4 +61,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
61
61
|
}], buttonClick: [{
|
|
62
62
|
type: Output
|
|
63
63
|
}] } });
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1idXR0b24tdm5zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLWJ1dHRvbi1ncm91cC12bnMvY29yZS1idXR0b24tdm5zL2NvcmUtYnV0dG9uLXZucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLXZucy9jb3JlLWJ1dHRvbi12bnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU1wSCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7QUFhbkUsTUFBTSxPQUFPLHNCQUFzQjtJQWFqQyxZQUNVLEdBQXlCLEVBQ3pCLHNCQUE4QyxFQUM5QyxZQUEwQjtRQUYxQixRQUFHLEdBQUgsR0FBRyxDQUFzQjtRQUN6QiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzlDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBVjNCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzVCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFHM0Qsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO0lBTy9CLENBQUM7SUFFTCxXQUFXLENBQUMsT0FBc0I7UUFFaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxZQUFZLEVBQUU7WUFDcEMsVUFBVTtZQUNWLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1NBQ2xCO0lBRUgsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FDN0MsQ0FBQTtRQUNELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGNBQWMsS0FBSyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDM0csSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUNuQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUNyRixDQUFBO1NBQ0Y7YUFBTTtZQUNMLElBQUksU0FBUyxFQUFFLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsNkNBQTZDLEVBQUUsMEJBQTBCLENBQUMsQ0FBQzthQUNuRztTQUNGO0lBRUgsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQzs4R0EvQ1Usc0JBQXNCO2tHQUF0QixzQkFBc0IseVFDdEJuQyxvc0JBUU0sMkNET0YsWUFBWSxpVEFDWixhQUFhLGtEQUNiLGdCQUFnQjs7MkZBS1Asc0JBQXNCO2tCQVhsQyxTQUFTOytCQUNFLGlCQUFpQixjQUNmLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsZ0JBQWdCO3FCQUNqQjt5SkFNUSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSUNvcmVCdXR0b25WTlMgfSBmcm9tICcuLi9jb3JlLWJ1dHRvbi1ncm91cC12bnMvSUNvcmVCdXR0b25WTlMnO1xyXG5pbXBvcnQgeyBDb3JlQnV0dG9uR3JvdXBTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS1idXR0b24tZ3JvdXAtc2VydmljZSc7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uLy4uL2FsZXJ0L2FsZXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL211bHRpLWxhbmd1YWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9hbGVydE9wdGlvbnMnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vLi4vYXBwLXBpcGVzL3RyYW5zbGF0ZS5waXBlJztcclxuaW1wb3J0IHsgVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb3JlLWJ1dHRvbi12bnMnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgVHJhbnNsYXRlUGlwZSxcclxuICAgIFRvb2x0aXBEaXJlY3RpdmUsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29yZS1idXR0b24tdm5zLmNvbXBvbmVudC5odG1sJyxcclxuICAvL3N0eWxlVXJsczogWycuL2NvcmUtYnV0dG9uLXZucy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlQnV0dG9uVm5zQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG5cclxuICBASW5wdXQoKSBoZWlnaHQhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgZGF0YSE6IElDb3JlQnV0dG9uVk5TO1xyXG4gIEBJbnB1dCgpIGluc3RhbmNlTnVtYmVyITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBzaG93Q2FwdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBPdXRwdXQoKSBidXR0b25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8SUNvcmVCdXR0b25WTlM+KCk7XHJcblxyXG4gIGxhbmchOiBzdHJpbmdcclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gIGhpZGRlbiE6IGJvb2xlYW47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb3JlQnV0dG9uR3JvdXBTZXJ2aWNlOiBDb3JlQnV0dG9uR3JvdXBTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuXHJcbiAgICBpZiAoIWNoYW5nZXNbJ2hlaWdodCddPy5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgLy9mYWxsYmFja1xyXG4gICAgICB0aGlzLmhlaWdodCA9IDMwO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMubWxzLmxhbmckLnN1YnNjcmliZSh4ID0+IHRoaXMubGFuZyA9IHgpXHJcbiAgICApXHJcbiAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLmNvcmVCdXR0b25Hcm91cFNlcnZpY2UuaW5zdGFuY2VzLmZpbHRlcih4ID0+IHguaW5zdGFuY2VOdW1iZXIgPT09IHRoaXMuaW5zdGFuY2VOdW1iZXIpO1xyXG4gICAgaWYgKCEhZmlsdGVyLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICBmaWx0ZXJbMF0ubXVzdEJlSGlkZGVuJC5zdWJzY3JpYmUobWJoID0+IHRoaXMuaGlkZGVuID0gbWJoLmluY2x1ZGVzKHRoaXMuZGF0YS5jb2RlKSlcclxuICAgICAgKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uud2FybihcIktow7RuZyB0w6xtIHRo4bqleSBpbnN0YW5jZSBudW1iZXIgY+G7p2EgbmjDs20gbsO6dFwiLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBvbkJ1dHRvbkNsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5idXR0b25DbGljay5lbWl0KHRoaXMuZGF0YSk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiBoZWlnaHQgKyAncHgnIH1cIiBbY2xhc3MuYWxwaGEtaGVhZGVyLWJ0bl09XCIhIWRhdGEuaXNIZWFkZXJcIlxyXG4gICAgW2NsYXNzLmFscGhhLW5vbi1oZWFkZXItYnRuXT1cIiFkYXRhLmlzSGVhZGVyXCIgY2xhc3M9XCJjb3JlLWJ1dHRvbi12bnMtY29udGFpbmVyIGQtZmxleCBkLWZsZXgtY2VudGVyXCJcclxuICAgIFthcHBUb29sdGlwXT1cImRhdGEuY2FwdGlvbiB8IHRyYW5zbGF0ZTogbGFuZ1wiIChjbGljayk9XCIhaGlkZGVuID8gb25CdXR0b25DbGljaygpIDogbnVsbFwiPlxyXG4gICAgPGRpdiBbbmdDbGFzc109XCJkYXRhLnN0eWxlQ2xhc3NcIiBbY2xhc3MuZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbY2xhc3MudGVtcG9yYXJ5LXVuYXZhaWxhYmxlXT1cIiEhaGlkZGVuXCI+XHJcbiAgICAgICAgPGkgc3JjPVwiXCIgW2NsYXNzXT1cImRhdGEuaWNvbkNsYXNzXCIgW2NsYXNzLnRlbXBvcmFyeS11bmF2YWlsYWJsZV09XCIhIWhpZGRlblwiPjwvaT5cclxuICAgICAgICA8c3BhbiBbY2xhc3MudGVtcG9yYXJ5LXVuYXZhaWxhYmxlXT1cIiEhaGlkZGVuXCIgY2xhc3M9XCJidXR0b24tY2FwdGlvblwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd0NhcHRpb25cIj57eyBkYXRhLmNhcHRpb24gfCB0cmFuc2xhdGU6IGxhbmcgfX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
|
|
@@ -219,7 +219,7 @@ export class CoreTableComponent extends CoreFormControlBaseComponent {
|
|
|
219
219
|
this.loading = changes['loading'].currentValue;
|
|
220
220
|
}
|
|
221
221
|
if (changes['columns']) {
|
|
222
|
-
this.visibleColumns = this.columns
|
|
222
|
+
this.visibleColumns = this.columns?.filter((c) => !!!c.hidden) || [];
|
|
223
223
|
}
|
|
224
224
|
if (changes['columnSearchDefaultOpen']) {
|
|
225
225
|
this.searchActive = !!changes['columnSearchDefaultOpen'].currentValue;
|
|
@@ -470,4 +470,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
470
470
|
type: ViewChild,
|
|
471
471
|
args: ['firstHeaderRow']
|
|
472
472
|
}] } });
|
|
473
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS10YWJsZS9jb3JlLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLXRhYmxlL2NvcmUtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQStDLFNBQVMsRUFBaUIsTUFBTSxFQUFFLFlBQVksRUFBZSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEwsT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBMENoRSxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFjLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQVMxRyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUxRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0VBQW9FLENBQUM7QUFDOUcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNkVBQTZFLENBQUM7QUFDMUgsT0FB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LGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNO2dCQXNDaUIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNGLEtBQUs7c0JBQXhCLFNBQVM7dUJBQUMsT0FBTztnQkFDVyxjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIFZpZXdDaGlsZCwgU2ltcGxlQ2hhbmdlcywgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFRlbXBsYXRlUmVmLCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuZXhwb3J0IGVudW0gRUNvcmVUYWJsZVRvb2xDb2RlIHtcclxuICBlZGl0ID0gJ2VkaXQnLFxyXG4gIGRlbGV0ZSA9ICdkZWxldGUnLFxyXG4gIGNvbXBsZXRlID0gJ2NvbXBsZXRlJyxcclxuICBuYXZpZ2F0ZSA9ICduYXZpZ2F0ZScsXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEVDb3JlVGFibGVUb29sQ2xhc3Mge1xyXG4gIGVkaXQgPSAnZWRpdC1pY29uJyxcclxuICBkZWxldGUgPSAnZGVsZXRlLWljb24nLFxyXG4gIHJlcGVhdCA9ICdyZXBlYXQtaWNvbicsXHJcbiAgbmF2aWdhdGUgPSAnbmF2aWdhdGUtaWNvbidcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQ29yZVRhYmxlVG9vbEl0ZW0ge1xyXG4gIGNvZGU6IEVDb3JlVGFibGVUb29sQ29kZTtcclxuICBjbGFzczogRUNvcmVUYWJsZVRvb2xDbGFzcztcclxuICBjYXB0aW9uPzogRW51bVRyYW5zbGF0ZUtleSB8IHN0cmluZzsgLy8gTGF0ZXIgd2Ugd2lsbCByZW1vdmUgXCJ8IHN0cmluZ1wiXHJcblxyXG4gIC8qIGNhbGxiYWNrcyB0byBjYWxjdWxhdGUgZGlzYWJsZWQgYW5kIGhpZGVuIGJhc2VkIG9uIHJvdyovXHJcbiAgZGlzYWJsZWRGbj86IChyb3c6IGFueSkgPT4gYm9vbGVhbjtcclxuICBoaWRkZW5Gbj86IChyb3c6IGFueSkgPT4gYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQ29yZVRhYmxlVG9vbENsaWNrRXZlbnRFbWl0dGVyRGF0YSB7XHJcbiAgY29kZTogRUNvcmVUYWJsZVRvb2xDb2RlO1xyXG4gIGlkOiBzdHJpbmcgfCBudW1iZXI7XHJcbn1cclxuXHJcbi8qXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNvcmVUYWJsZVJvd0RvdWJsZUNsaWNrRXZlbnRFbWl0dGVyRGF0YSB7XHJcbiAgaWQ6IHN0cmluZyB8IG51bWJlcjtcclxufVxyXG4qL1xyXG5cclxuaW50ZXJmYWNlIElEb3VibGVUb3VjaGVuZERhdGEge1xyXG4gIHByZXZpb3VzOiBudW1iZXI7XHJcbiAgY3VycmVudDogbnVtYmVyO1xyXG59XHJcblxyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIEJlaGF2aW9yU3ViamVjdCwgZmlsdGVyLCBkZWJvdW5jZVRpbWUsIE9ic2VydmFibGUsIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb3JlUGFnZUxpc3RTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS1wYWdlLWxpc3QvY29yZS1wYWdlLWxpc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IENvcmVGb3JtQ29udHJvbEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlLWZvcm0tY29udHJvbC1iYXNlL2NvcmUtZm9ybS1jb250cm9sLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSUNvcmVCdXR0b25WTlMgfSBmcm9tICcuLi9jb3JlLWJ1dHRvbi1ncm91cC12bnMvY29yZS1idXR0b24tZ3JvdXAtdm5zL0lDb3JlQnV0dG9uVk5TJztcclxuaW1wb3J0IHsgRW51bUNvcmVCdXR0b25WTlNDb2RlIH0gZnJvbSAnLi4vY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9FbnVtQ29yZUJ1dHRvblZOU0NvZGUnO1xyXG5pbXBvcnQgeyBFbnVtVHJhbnNsYXRlS2V5IH0gZnJvbSBcImFscGhhLWdsb2JhbC1jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgSVNlYXJjaEl0ZW0gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lRdWVyeUxpc3RSZXF1ZXN0JztcclxuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xheW91dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTXVsdGlMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tdWx0aS1sYW5ndWFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vYWxlcnQvYWxlcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvYWxlcnRPcHRpb25zJztcclxuaW1wb3J0IHsgSUNvcmVUYWJsZUNvbHVtbkl0ZW0gfSBmcm9tICcuL0lDb3JlVGFibGVDb2x1bW5JdGVtJztcclxuaW1wb3J0IHsgRW51bVNvcnREaXJlY3Rpb24gfSBmcm9tICcuLi8uLi9lbnVtL0VudW1Tb3J0RGlyZWN0aW9uJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29yZUJ1dHRvbkdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi4vY29yZS1idXR0b24tZ3JvdXAvY29yZS1idXR0b24tZ3JvdXAvY29yZS1idXR0b24tZ3JvdXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGhyZWVkb3RzQ29tcG9uZW50IH0gZnJvbSAnLi4vdGhyZWVkb3RzL3RocmVlZG90cy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnLi4vdG9vbHRpcC90b29sdGlwLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvcmVMb2FkaW5nU3VyZmFjZUNvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUtbG9hZGluZy1zdXJmYWNlL2NvcmUtbG9hZGluZy1zdXJmYWNlL2NvcmUtbG9hZGluZy1zdXJmYWNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvcmVCdXR0b25Hcm91cFZuc0NvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9jb3JlLWJ1dHRvbi1ncm91cC12bnMvY29yZS1idXR0b24tZ3JvdXAtdm5zLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhYmxlQ2VsbFBpcGUgfSBmcm9tICcuLi9waXBlcy90YWJsZS1jZWxsLnBpcGUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vYXBwLXBpcGVzL3RyYW5zbGF0ZS5waXBlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY29yZS10YWJsZScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIENvcmVCdXR0b25Hcm91cENvbXBvbmVudCxcclxuICAgIFRocmVlZG90c0NvbXBvbmVudCxcclxuICAgIFRvb2x0aXBEaXJlY3RpdmUsXHJcbiAgICBUYWJsZUNlbGxQaXBlLFxyXG4gICAgVHJhbnNsYXRlUGlwZSxcclxuICAgIENvcmVMb2FkaW5nU3VyZmFjZUNvbXBvbmVudCxcclxuICAgIENvcmVCdXR0b25Hcm91cFZuc0NvbXBvbmVudCxcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3JlLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb3JlLXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgICAgdXNlRXhpc3Rpbmc6IENvcmVUYWJsZUNvbXBvbmVudFxyXG4gICAgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIENvcmVUYWJsZUNvbXBvbmVudCBleHRlbmRzIENvcmVGb3JtQ29udHJvbEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuXHJcbiAgLypcclxuICBUaGlzIGNvbXBvbmVudCBkaXNwbGF5cyBpbnB1dCBkYXRhIHdpdGhvdXQgcGFnaW5hdGlvbi5cclxuICBGb3IgcGFnaW5hdGluZyBwbGVhc2Ugb3JnYW5pemUgZnJvbSBwYXJlbnRzXHJcbiAgKi9cclxuXHJcbiAgQElucHV0KCkgaWQhOiBzdHJpbmc7IC8vIGZvciBodG1sIGlkIGlkZW50aWZ5aW5nXHJcbiAgQElucHV0KCkgd2lkdGghOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaGVpZ2h0ITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHNob3dDaGVja2JveCE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgY2hlY2tib3hTaXplITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIG91dGVyQnV0dG9ucyE6IElDb3JlQnV0dG9uVk5TW107XHJcbiAgQElucHV0KCkgc2hvd1Rvb2xzITogYm9vbGVhbjtcclxuICBASW5wdXQoKSB0b29scyE6IElDb3JlVGFibGVUb29sSXRlbVtdO1xyXG4gIEBJbnB1dCgpIGNoZWNraW5nUmVzZXRGbGFnITogYm9vbGVhbjtcclxuXHJcbiAgLyogY2hhbmdlIHRoZXNlIDIgcHJvcHMgdG8gd3JhcCBoZWFkZXIgdGV4dHMgKi9cclxuICBASW5wdXQoKSBoZWFkZXJXcmFwITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBoZWFkZXJGaXJzdFJvd0hlaWdodCE6IG51bWJlcjtcclxuICAvKiogKi9cclxuICBcclxuICBASW5wdXQoKSBoZWFkZXJTZWNvbmRSb3dIZWlnaHQhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgd3JhcCE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgYWxsb3dDZWxsU2Nyb2xsWSE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgbG9hZGluZyE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgcm93SGVpZ2h0ITogc3RyaW5nOyAvLyBWRVJZIElNUE9SVEFOVCBQUk9QRVJUWVxyXG4gIEBJbnB1dCgpIGZyb3plbiE6IG51bWJlcjtcclxuICBASW5wdXQoKSBmb290ZXIhOiBhbnk7XHJcbiAgQElucHV0KCkgY29sdW1ucyE6IElDb3JlVGFibGVDb2x1bW5JdGVtW107IC8vIHJlcXVpcmVkXHJcbiAgQElucHV0KCkgZGF0YSE6IGFueVtdOyAvLyByZXF1aXJlZFxyXG4gIEBJbnB1dCgpIHNlbGVjdGVkSWRzITogc3RyaW5nW10gfCBudW1iZXJbXTtcclxuICBASW5wdXQoKSBjb3JlUGFnZUxpc3RJbnN0YW5jZU51bWJlciE6IG51bWJlcjtcclxuICBASW5wdXQoKSBkaXNhYmxlSGlnaGxpZ2h0T25DbGljayE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgZnJlZU1vZGUhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHNlYXJjaFN3aXRjaERpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaW5saW5lVG9vbEl0ZW1zITogRW51bUNvcmVCdXR0b25WTlNDb2RlW107XHJcbiAgQElucHV0KCkgY29sdW1uU2VhcmNoRGVmYXVsdE9wZW4hOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGxhenlMb2FkaW5nITogYm9vbGVhbjtcclxuXHJcbiAgQElucHV0KCkgbm9QYWRkaW5nQ2VsbCE6IGJvb2xlYW47XHJcblxyXG4gIEBPdXRwdXQoKSBvblNlYXJjaGluZyA9IG5ldyBFdmVudEVtaXR0ZXI8SVNlYXJjaEl0ZW1bXT4oKTtcclxuICBAT3V0cHV0KCkgb25Ub29sQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPElDb3JlVGFibGVUb29sQ2xpY2tFdmVudEVtaXR0ZXJEYXRhPigpO1xyXG4gIEBPdXRwdXQoKSBvblJvd0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvblJvd0RvdWJsZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvblNlbGVjdGVkSWRzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXSB8IG51bWJlcltdPigpO1xyXG4gIEBPdXRwdXQoKSBvblNlbGVjdGVkRGF0YUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XHJcbiAgQE91dHB1dCgpIG9uQ29sdW1uQ2FwdGlvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxJQ29yZVRhYmxlQ29sdW1uSXRlbT4oKTtcclxuXHJcbiAgY2hlY2tib3hDb2x1bW5XaWR0aDogbnVtYmVyID0gMzA7IC8vICgtLWNoZWNrYm94LXNpemUpKiAyIFBsZWFzZSBkbyBub3QgY2hhbmdlIHRoaXNcclxuXHJcbiAgc2VhcmNoQWN0aXZlITogYm9vbGVhbjtcclxuICB2aXNpYmxlQ29sdW1ucyE6IElDb3JlVGFibGVDb2x1bW5JdGVtW107XHJcbiAgZnJvemVuTGVmdHM6IG51bWJlcltdID0gW107XHJcbiAgY2hlY2tpbmdNb2RlbDogYm9vbGVhbltdID0gW107XHJcbiAgaGVhZGVyQ2hlY2tib3hTdGF0ZSE6IGJvb2xlYW47XHJcbiAgY2hlY2tpbmdTdGF0ZSE6IG51bWJlcjsgLy8gMD1ub25lOyAxPWFsbDsgMj1taXhlZFxyXG4gIHRib2R5aGVpZ2h0ITogbnVtYmVyO1xyXG4gIHZpc2libGVSb3dDb3VudCE6IG51bWJlcjtcclxuXHJcbiAgcm93VG91Y2hlbmRTdHJlYW0kOiBCZWhhdmlvclN1YmplY3Q8SURvdWJsZVRvdWNoZW5kRGF0YT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElEb3VibGVUb3VjaGVuZERhdGE+KHsgcHJldmlvdXM6IC0yLCBjdXJyZW50OiAtMSB9KTtcclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBzZWFyY2hPYmplY3QhOiBJU2VhcmNoSXRlbVtdO1xyXG5cclxuICBsYW5nITogc3RyaW5nO1xyXG5cclxuICBhY3RpdmVSb3chOiBhbnk7IC8vIG51bWJlciB8IHN0cmluZ1xyXG5cclxuICBtb3VzZURvd24gPSBmYWxzZTtcclxuICBzdGFydFg6IGFueTtcclxuICBlbmRYOiBhbnk7XHJcblxyXG4gIHNjcm9sbFN0cmVhbSQhOiBPYnNlcnZhYmxlPGFueT47XHJcblxyXG4gIC8qIEZPUiBMQVpZIFVJIExPQURJTkcgKi9cclxuICByZW5kZXJBaHJlYWQ6IG51bWJlciA9IDA7XHJcbiAgaGlkZGVuVG9wSGVpZ2h0OiBudW1iZXIgPSAwO1xyXG4gIGhpZGRlbkJvdHRvbUhlaWdodDogbnVtYmVyID0gMDtcclxuICBzY3JvbGxUb3A6IG51bWJlciA9IDA7XHJcbiAgb2Zmc2V0WTogbnVtYmVyID0gMDtcclxuICB2aXNpYmxlRGF0YSE6IGFueVtdO1xyXG4gIHN0YXJ0Tm9kZTogbnVtYmVyID0gMDtcclxuICAvKioqKioqKioqKioqKioqKioqKioqKiovXHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NvcmVUYWJsZScpIGNvcmVUYWJsZSE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgndGFibGUnKSB0YWJsZSE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnZmlyc3RIZWFkZXJSb3cnKSBmaXJzdEhlYWRlclJvdyE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBsYXlvdXRTZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb3JlUGFnZUxpc3RTZXJ2aWNlOiBDb3JlUGFnZUxpc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgY2FsY3VsYXRlU2Nyb2xsKCk6IHZvaWQge1xyXG5cclxuICAgIHRyeSB7XHJcblxyXG4gICAgICBpZiAoISEhdGhpcy5jb3JlVGFibGUpIHJldHVybjtcclxuICAgICAgaWYgKCEhIXRoaXMubGF6eUxvYWRpbmcpIHJldHVybjtcclxuXHJcbiAgICAgIGNvbnN0IGhlaWdodCA9IE51bWJlcihnZXRDb21wdXRlZFN0eWxlKHRoaXMuY29yZVRhYmxlLm5hdGl2ZUVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoJy0taGVpZ2h0JykucmVwbGFjZSgncHgnLCAnJykpO1xyXG4gICAgICBjb25zdCByb3dIZWlnaHQgPSBOdW1iZXIoZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmNvcmVUYWJsZS5uYXRpdmVFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCctLXJvdy1oZWlnaHQnKS5zcGxpdCgncHgnKVswXSk7XHJcblxyXG4gICAgICBpZiAoISEhcm93SGVpZ2h0KSB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZCBub3QgZ2V0IC0tcm93LWhlaWdodCBwcm9wZXJ0eVwiKTtcclxuXHJcbiAgICAgIGxldCBzdGFydE5vZGUgPSBNYXRoLmZsb29yKHRoaXMuc2Nyb2xsVG9wIC8gcm93SGVpZ2h0KSAtIHRoaXMucmVuZGVyQWhyZWFkO1xyXG4gICAgICBzdGFydE5vZGUgPSBNYXRoLm1heCgwLCBzdGFydE5vZGUpO1xyXG4gICAgICB0aGlzLnN0YXJ0Tm9kZSA9IHN0YXJ0Tm9kZSB8fCAwO1xyXG4gICAgICBsZXQgdmlzaWJsZU5vZGVDb3VudCA9IE1hdGguY2VpbChoZWlnaHQgLyByb3dIZWlnaHQpICsgMiAqIHRoaXMucmVuZGVyQWhyZWFkO1xyXG4gICAgICB2aXNpYmxlTm9kZUNvdW50ID0gTWF0aC5taW4odGhpcy5kYXRhLmxlbmd0aCAtIHN0YXJ0Tm9kZSwgdmlzaWJsZU5vZGVDb3VudCk7XHJcbiAgICAgIHRoaXMub2Zmc2V0WSA9IHN0YXJ0Tm9kZSAqIHJvd0hlaWdodDtcclxuICAgICAgY29uc3QgbmV3VmlzaWJsZURhdGE6IGFueVtdID0gW107XHJcblxyXG4gICAgICB0aGlzLmhpZGRlblRvcEhlaWdodCA9IHN0YXJ0Tm9kZSAqIHJvd0hlaWdodDtcclxuICAgICAgdGhpcy5oaWRkZW5Cb3R0b21IZWlnaHQgPSAodGhpcy5kYXRhLmxlbmd0aCAtIHN0YXJ0Tm9kZSAtIHZpc2libGVOb2RlQ291bnQpICogcm93SGVpZ2h0O1xyXG4gICAgICBmb3IgKGxldCBpID0gc3RhcnROb2RlOyBpIDwgc3RhcnROb2RlICsgdmlzaWJsZU5vZGVDb3VudDsgaSsrKSB7XHJcbiAgICAgICAgbmV3VmlzaWJsZURhdGEucHVzaCh0aGlzLmRhdGFbaV0pXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMudmlzaWJsZURhdGEgPSBuZXdWaXNpYmxlRGF0YTtcclxuXHJcbiAgICAgIC8qIE9QRU4gQ09NTUVOVFMgVE8gU0VFIENPTlRST0wgVkFMVUVTICovXHJcbiAgICAgIGNvbnNvbGUubG9nKFwic3RhcnROb2RlXCIsIHN0YXJ0Tm9kZSlcclxuICAgICAgLypcclxuICAgICAgY29uc29sZS5sb2coXCJ0aGlzLm9mZnNldFlcIiwgdGhpcy5vZmZzZXRZKVxyXG4gICAgICBjb25zb2xlLmxvZyhcInRoaXMuaGlkZGVuVG9wSGVpZ2h0XCIsIHRoaXMuaGlkZGVuVG9wSGVpZ2h0KVxyXG4gICAgICBjb25zb2xlLmxvZyhcInRoaXMuaGlkZGVuQm90dG9tSGVpZ2h0XCIsIHRoaXMuaGlkZGVuQm90dG9tSGVpZ2h0KVxyXG4gICAgICBjb25zb2xlLmxvZyhcInRoaXMudmlzaWJsZURhdGEubGVuZ3RoXCIsIHRoaXMudmlzaWJsZURhdGEubGVuZ3RoKVxyXG4gICAgICBjb25zdCBjb250cm9sVmFsdWUgPSAodGhpcy5oaWRkZW5Ub3BIZWlnaHQgKyB0aGlzLmhpZGRlbkJvdHRvbUhlaWdodCArIHRoaXMudmlzaWJsZURhdGEubGVuZ3RoICogcm93SGVpZ2h0KSAvIHJvd0hlaWdodFxyXG4gICAgICBjb25zb2xlLmxvZyhcImNvbnRyb2xWYWx1ZVwiLCBjb250cm9sVmFsdWUpIC8vIE11c3QgZXF1ZWFsIHBhZ2VTaXplXHJcbiAgICAgICovXHJcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XHJcbiAgICAgIGlmIChpc0Rldk1vZGUoKSAmJiB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5pZCA9PT0gJzhjMjQ2ODNkLTdkNTItNGY1YS04MDkwLTMxYzc3N2U4ODY5ZCcpIHtcclxuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihlcnJvci5tZXNzYWdlLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMudmlzaWJsZURhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZGF0YSkpO1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXJ0RHJhZ2dpbmcoZTogYW55LCBjb2w6IElDb3JlVGFibGVDb2x1bW5JdGVtLCBmbGFnOiBhbnkpIHtcclxuICAgIGlmIChlLmJ1dHRvbnMgPT09IDEpIHtcclxuICAgICAgdGhpcy5zdGFydFggPSBlLnBhZ2VYO1xyXG4gICAgICBpZiAoISEhdGhpcy5tb3VzZURvd24pIHtcclxuXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5tb3VzZURvd24gPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RvcERyYWdnaW5nKGU6IGFueSwgY29sOiBJQ29yZVRhYmxlQ29sdW1uSXRlbSwgZmxhZzogYW55KSB7XHJcbiAgICBpZiAoISF0aGlzLm1vdXNlRG93bikge1xyXG4gICAgICB0aGlzLmVuZFggPSBlLnBhZ2VYO1xyXG4gICAgICBsZXQgb2Zmc2V0ID0gdGhpcy5lbmRYIC0gdGhpcy5zdGFydFg7XHJcbiAgICAgIGNvbC53aWR0aCEgKz0gb2Zmc2V0O1xyXG4gICAgICB0aGlzLm1vdXNlRG93biA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmVuZFggPSAwO1xyXG4gICAgICB0aGlzLnN0YXJ0WCA9IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtb3ZlRXZlbnQoZTogYW55LCBjb2w6IElDb3JlVGFibGVDb2x1bW5JdGVtKSB7XHJcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBpZiAoIXRoaXMubW91c2VEb3duKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHggPSBlLnBhZ2VYO1xyXG4gICAgY29uc29sZS5sb2coXCJtb3ZlRXZlbnRcIiwgZS5wYWdlWClcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICAgIGlmICh0aGlzLnNob3dDaGVja2JveCkge1xyXG4gICAgICBpZiAoIXRoaXMuY2hlY2tib3hTaXplKSB7XHJcbiAgICAgICAgdGhpcy5jaGVja2JveFNpemUgPSAxNTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmhlYWRlckZpcnN0Um93SGVpZ2h0ID09PSB1bmRlZmluZWQpIHRoaXMuaGVhZGVyRmlyc3RSb3dIZWlnaHQgPSA0MDtcclxuICAgIGlmICh0aGlzLmhlYWRlclNlY29uZFJvd0hlaWdodCA9PT0gdW5kZWZpbmVkKSB0aGlzLmhlYWRlclNlY29uZFJvd0hlaWdodCA9IDQwO1xyXG5cclxuXHJcbiAgICAvKiBWYWxpZGF0ZSBjb2x1bW5zIGlucHV0IHRvIG1ha2Ugc3VyZSBvbmUgb2YgZmllbGRzIGlzICdpZCcgKi9cclxuICAgIGlmICghISF0aGlzLmNvbHVtbnMpIHtcclxuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IodGhpcy5pZCArIFwiOiBDb2x1bW5zIGFyZSBub3QgZGVmaW5lZC5cIiwgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuY29sdW1ucy5maWx0ZXIoKGM6IElDb3JlVGFibGVDb2x1bW5JdGVtKSA9PiBjLmZpZWxkID09PSAnaWQnKS5sZW5ndGggPT09IDAgJiYgaXNEZXZNb2RlKCkgJiYgdGhpcy5jb2x1bW5zLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcih0aGlzLmlkICsgXCI6IFRoZSBjb2x1bW5zIG11c3QgaGF2ZSBvbmUgd2l0aCAnZmllbGQnIHByb3BlcnR5ID09PSAnaWQnXCIsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zKVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudmlzaWJsZUNvbHVtbnMgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKChjOiBJQ29yZVRhYmxlQ29sdW1uSXRlbSkgPT4gISEhYy5oaWRkZW4pXHJcbiAgICBpZiAoISEhdGhpcy52aXNpYmxlQ29sdW1ucy5sZW5ndGggJiYgaXNEZXZNb2RlKCkgJiYgdGhpcy5jb2x1bW5zLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcih0aGlzLmlkICsgXCI6IE5vIHZpc2libGUgY29sdW1uIGRlZmluZWQuXCIsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zKVxyXG4gICAgfVxyXG5cclxuICAgIC8vIGFkZCBkZWZhdWx0IHNvcnQgZGlyZWN0aW9uIHRvIHZpc2libGVDb2x1bW5zXHJcbiAgICB0aGlzLnZpc2libGVDb2x1bW5zLm1hcChjID0+IGMuc29ydERpcmVjdGlvbiA9IEVudW1Tb3J0RGlyZWN0aW9uLk5PTkUpXHJcblxyXG4gICAgLyogU1RBUlQ6IEluaXRpYWxpemluZyBzZWFyY2hPYmplY3QgKi9cclxuICAgIGNvbnN0IG5ld1NlYXJjaE9iamVjdDogSVNlYXJjaEl0ZW1bXSA9IFtdO1xyXG4gICAgdGhpcy52aXNpYmxlQ29sdW1ucy5tYXAoYyA9PiB7XHJcbiAgICAgIG5ld1NlYXJjaE9iamVjdC5wdXNoKHtcclxuICAgICAgICBmaWVsZDogYy5maWVsZCxcclxuICAgICAgICBzZWFyY2hGb3I6ICcnXHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gICAgdGhpcy5zZWFyY2hPYmplY3QgPSBuZXdTZWFyY2hPYmplY3Q7XHJcbiAgICAvKiBFTkQ6IEluaXRpYWxpemluZyBzZWFyY2hPYmplY3QgKi9cclxuXHJcbiAgICBjb25zdCBmcm96ZW5Db2x1bW5zID0gdGhpcy52aXNpYmxlQ29sdW1ucy5maWx0ZXIoKF8sIGluZGV4KSA9PiBpbmRleCA8IHRoaXMuZnJvemVuKTtcclxuXHJcbiAgICBsZXQgbGVmdCA9IHRoaXMuY2hlY2tib3hTaXplISAqIDIgfHwgMDsgLy8gdGhlIGZpcnN0IHNpemUgaXMgZm9yIGNoZWNrYm94XHJcbiAgICBmcm96ZW5Db2x1bW5zLm1hcChjID0+IHtcclxuICAgICAgaWYgKCEhIWMud2lkdGgpIGNvbnNvbGUuZXJyb3IodGhpcy5pZCArIFwiOiBFYWNoIGZyb3plbiBjb2x1bW4gbXVzdCBoYXZlIGl0cyBudW1iZXIgcHJvcGVydHkgJ3dpZHRoJy5cIik7XHJcbiAgICAgIHRoaXMuZnJvemVuTGVmdHMucHVzaChsZWZ0KTtcclxuICAgICAgbGVmdCA9IGxlZnQgKyBjLndpZHRoIVxyXG4gICAgfSlcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5yb3dUb3VjaGVuZFN0cmVhbSQucGlwZShcclxuICAgICAgICBmaWx0ZXIoKHg6IGFueSkgPT4geC5jdXJyZW50ID09PSB4LnByZXZpb3VzKSxcclxuICAgICAgICBkZWJvdW5jZVRpbWUoMjAwKSxcclxuICAgICAgKS5zdWJzY3JpYmUoKHk6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMub25Sb3dEb3VibGVDbGljay5lbWl0KHtcclxuICAgICAgICAgIGlkOiB0aGlzLmRhdGFbeS5jdXJyZW50XS5pZFxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICApXHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMubWxzLmxhbmckLnN1YnNjcmliZSh4ID0+IHRoaXMubGFuZyA9IHgpXHJcbiAgICApXHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG5cclxuICAgIGlmIChjaGFuZ2VzWydjaGVja2luZ1Jlc2V0RmxhZyddKSB7XHJcbiAgICAgIGlmICghIXRoaXMuZGF0YSkge1xyXG4gICAgICAgIHRoaXMudG9nZ2xlQ2hlY2tBbGwoZmFsc2UpXHJcbiAgICAgICAgdGhpcy5oZWFkZXJDaGVja2JveFN0YXRlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2hhbmdlc1snZGF0YSddKSB7XHJcbiAgICAgIGNvbnN0IG5ld0NoZWNraW5nTW9kZWw6IGJvb2xlYW5bXSA9IFtdO1xyXG4gICAgICBjaGFuZ2VzWydkYXRhJ10uY3VycmVudFZhbHVlPy5tYXAoKF86IGFueSkgPT4ge1xyXG4gICAgICAgIG5ld0NoZWNraW5nTW9kZWwucHVzaChmYWxzZSlcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuY2hlY2tpbmdNb2RlbCA9IG5ld0NoZWNraW5nTW9kZWw7XHJcblxyXG4gICAgICBpZiAoISF0aGlzLmxhenlMb2FkaW5nKSB7XHJcbiAgICAgICAgaWYgKCEhdGhpcy5jb3JlVGFibGUpIHtcclxuICAgICAgICAgIHRoaXMuY2FsY3VsYXRlU2Nyb2xsKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudmlzaWJsZURhdGEgPSBjaGFuZ2VzWydkYXRhJ10uY3VycmVudFZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNoYW5nZXNbJ2NoZWNrZWRJZHMnXSkge1xyXG4gICAgICBjb25zdCBuZXdDaGVja2luZ01vZGVsOiBib29sZWFuW10gPSBbXTtcclxuICAgICAgY2hhbmdlc1snY2hlY2tlZElkcyddLmN1cnJlbnRWYWx1ZT8ubWFwKChjaGVja2VkSWQ6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGF0YS5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgIGlmIChpdGVtWydpZCddID09PSBjaGVja2VkSWQpIHtcclxuICAgICAgICAgICAgbmV3Q2hlY2tpbmdNb2RlbC5wdXNoKHRydWUpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbmV3Q2hlY2tpbmdNb2RlbC5wdXNoKGZhbHNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmNoZWNraW5nTW9kZWwgPSBuZXdDaGVja2luZ01vZGVsO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ2xvYWRpbmcnXSkge1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBjaGFuZ2VzWydsb2FkaW5nJ10uY3VycmVudFZhbHVlO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ2NvbHVtbnMnXSkge1xyXG4gICAgICB0aGlzLnZpc2libGVDb2x1bW5zID0gdGhpcy5jb2x1bW5zLmZpbHRlcigoYzogSUNvcmVUYWJsZUNvbHVtbkl0ZW0pID0+ICEhIWMuaGlkZGVuKVxyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ2NvbHVtblNlYXJjaERlZmF1bHRPcGVuJ10pIHtcclxuICAgICAgdGhpcy5zZWFyY2hBY3RpdmUgPSAhIWNoYW5nZXNbJ2NvbHVtblNlYXJjaERlZmF1bHRPcGVuJ10uY3VycmVudFZhbHVlXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc2V0SGVhZGVyRmlyc3RSb3dIZWlnaHQoKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgZmlyc3RIZWFkZXJSb3dIZWlnaHQgPSB0aGlzLmZpcnN0SGVhZGVyUm93Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xyXG4gICAgICB0aGlzLmNvcmVUYWJsZS5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWhlYWRlci0xc3Qtcm93LWhlaWdodCcsXHJcbiAgICAgIGZpcnN0SGVhZGVyUm93SGVpZ2h0ICsgJ3B4J1xyXG4gICAgICApO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICBpZiAodGhpcy5jb3JlUGFnZUxpc3RJbnN0YW5jZU51bWJlcikge1xyXG4gICAgICBjb25zdCBjYWxsZXJGaWx0ZXIgPSB0aGlzLmNvcmVQYWdlTGlzdFNlcnZpY2UuaW5zdGFuY2VzLmZpbHRlcih4ID0+IHguaW5zdGFuY2VOdW1iZXIgPT09IHRoaXMuY29yZVBhZ2VMaXN0SW5zdGFuY2VOdW1iZXIpO1xyXG4gICAgICBpZiAoISFjYWxsZXJGaWx0ZXIubGVuZ3RoKSB7XHJcbiAgICAgICAgY29uc3QgY2FsbGVyID0gY2FsbGVyRmlsdGVyWzBdO1xyXG4gICAgICAgIGNhbGxlci5jb3JlVGFibGVSZWYgPSB0aGlzLmNvcmVUYWJsZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCEhIXRoaXMuZnJlZU1vZGUpIHtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICAgIHRoaXMuY29yZVBhZ2VMaXN0U2VydmljZS5pbnN0YW5jZXMuZmlsdGVyKHggPT4geC5pbnN0YW5jZU51bWJlciA9PT0gdGhpcy5jb3JlUGFnZUxpc3RJbnN0YW5jZU51bWJlcilbMF0uaWQkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5hY3RpdmVSb3cgPSB4O1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMuY29yZVBhZ2VMaXN0U2VydmljZS5pbnN0YW5jZXMuZmlsdGVyKHggPT4geC5pbnN0YW5jZU51bWJlciA9PT0gdGhpcy5jb3JlUGFnZUxpc3RJbnN0YW5jZU51bWJlcilbMF0udGJvZHlIZWlnaHQkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgIGlmICghIXgpIHtcclxuICAgICAgICAgICAgdGhpcy50Ym9keWhlaWdodCA9IHg7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG5cclxuICAgICAgY29uc3QgcmVjdCA9IHRoaXMuY29yZVRhYmxlLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgIHRoaXMuY29yZVRhYmxlLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tdGFibGUtd2lkdGgnLCByZWN0LndpZHRoICsgJ3B4JylcclxuXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zY3JvbGxTdHJlYW0kID0gZnJvbUV2ZW50KHRoaXMudGFibGUubmF0aXZlRWxlbWVudCwgJ3Njcm9sbCcpO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cclxuICAgICAgaWYgKCEhdGhpcy53aWR0aCkgdGhpcy5jb3JlVGFibGUubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS13aWR0aCcsIHRoaXMud2lkdGggKyAncHgnKTtcclxuICAgICAgaWYgKCEhdGhpcy5yb3dIZWlnaHQpIHRoaXMuY29yZVRhYmxlLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tcm93LWhlaWdodCcsIHRoaXMucm93SGVpZ2h0ICsgJ3B4Jyk7XHJcbiAgICAgIGlmICghIXRoaXMuaGVpZ2h0KSB0aGlzLmNvcmVUYWJsZS5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWhlaWdodCcsIHRoaXMuaGVpZ2h0ICsgJ3B4Jyk7XHJcblxyXG4gICAgICAvLyBDaOG7iSBzdWJzY3JpZGUgc2F1IGtoaSBjw6FjIGzhu4duaCB0csOqbiDEkcOjIMSRxrDhu6NjIHRo4buxYyBoaeG7h25cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5zY3JvbGxTdHJlYW0kXHJcbiAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgZGVib3VuY2VUaW1lKDUwKVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9wID0gZXZlbnQuc3JjRWxlbWVudC5zY3JvbGxUb3A7XHJcbiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlU2Nyb2xsKCk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICApXHJcblxyXG4gICAgfSwgMClcclxuXHJcbiAgICB0aGlzLnJlc2V0SGVhZGVyRmlyc3RSb3dIZWlnaHQoKTtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5tbHMubGFuZyQuc3Vic2NyaWJlKF8gPT4ge1xyXG4gICAgICAgIHRoaXMucmVzZXRIZWFkZXJGaXJzdFJvd0hlaWdodCgpO1xyXG4gICAgICB9KVxyXG4gICAgKVxyXG5cclxuICB9XHJcblxyXG4gIG9uVG9vbENsaWNrTG9jYWwocm93SW5kZXg6IG51bWJlciwgdG9vbEluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub29sQ2xpY2suZW1pdCh7XHJcbiAgICAgIGNvZGU6IHRoaXMudG9vbHNbdG9vbEluZGV4XS5jb2RlLFxyXG4gICAgICBpZDogdGhpcy5kYXRhW3Jvd0luZGV4XS5pZFxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHRvZ2dsZUNoZWNrQWxsKGFyZ3M6IGJvb2xlYW4pIHtcclxuICAgIGNvbnN0IG5ld0NoZWNraW5nTW9kZWw6IGJvb2xlYW5bXSA9IFtdO1xyXG4gICAgY29uc3QgbmV3U2VsZWN0ZWRJZHM6IGFueVtdID0gW107XHJcbiAgICBjb25zdCBuZXdTZWxlY3RlZERhdGE6IGFueVtdID0gW107XHJcblxyXG4gICAgdGhpcy5kYXRhLm1hcChpdGVtID0+IHtcclxuICAgICAgbmV3Q2hlY2tpbmdNb2RlbC5wdXNoKGFyZ3MpO1xyXG4gICAgICBpZiAoYXJncykge1xyXG4gICAgICAgIG5ld1NlbGVjdGVkSWRzLnB1c2goaXRlbS5pZCk7XHJcbiAgICAgICAgbmV3U2VsZWN0ZWREYXRhLnB1c2goaXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuY2hlY2tpbmdNb2RlbCA9IG5ld0NoZWNraW5nTW9kZWw7XHJcbiAgICB0aGlzLmNoZWNraW5nU3RhdGUgPSBhcmdzID8gMSA6IDA7XHJcbiAgICB0aGlzLm9uU2VsZWN0ZWRJZHNDaGFuZ2UuZW1pdChuZXdTZWxlY3RlZElkcyk7XHJcbiAgICB0aGlzLm9uU2VsZWN0ZWREYXRhQ2hhbmdlLmVtaXQobmV3U2VsZWN0ZWREYXRhKTtcclxuICB9XHJcblxyXG4gIG9uQ2hlY2tpbmdOZ01vZGVsQ2hhbmdlKCkge1xyXG4gICAgY29uc3QgbmV3U2VsZWN0ZWRJZHM6IG51bWJlcltdID0gW107XHJcbiAgICBjb25zdCBuZXdTZWxlY3RlZERhdGE6IGFueVtdID0gW107XHJcbiAgICB0aGlzLmRhdGEuZmlsdGVyKChfOiBhbnksIGluZGV4OiBudW1iZXIpID0+ICEhdGhpcy5jaGVja2luZ01vZGVsW2luZGV4XSkubWFwKGl0ZW0gPT4ge1xyXG4gICAgICBuZXdTZWxlY3RlZElkcy5wdXNoKGl0ZW0uaWQpXHJcbiAgICAgIG5ld1NlbGVjdGVkRGF0YS5wdXNoKGl0ZW0pXHJcbiAgICB9KVxyXG4gICAgdGhpcy5vblNlbGVjdGVkSWRzQ2hhbmdlLmVtaXQobmV3U2VsZWN0ZWRJZHMpO1xyXG4gICAgdGhpcy5vblNlbGVjdGVkRGF0YUNoYW5nZS5lbWl0KG5ld1NlbGVjdGVkRGF0YSk7XHJcblxyXG4gICAgaWYgKG5ld1NlbGVjdGVkSWRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLmNoZWNraW5nU3RhdGUgPSAwOyAvLyBub25lXHJcbiAgICB9IGVsc2UgaWYgKG5ld1NlbGVjdGVkSWRzLmxlbmd0aCA9PT0gdGhpcy5jaGVja2luZ01vZGVsLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmNoZWNraW5nU3RhdGUgPSAxOyAvLyBhbGxcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2hlY2tpbmdTdGF0ZSA9IDI7IC8vIG1peGVkXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgb25Eb3VibGVDbGlja0xvY2FsKHJvd0luZGV4OiBudW1iZXIpIHtcclxuICAgIHRoaXMub25Sb3dEb3VibGVDbGljay5lbWl0KHRoaXMuZGF0YVtyb3dJbmRleF0pXHJcbiAgfVxyXG5cclxuICBvbkNsaWNrTG9jYWwocm93OiBhbnksIGV2ZW50OiBhbnkpIHtcclxuXHJcbiAgICBjb25zb2xlLmxvZyhcIm9uQ2xpY2tMb2NhbCByb3dcIiwgcm93LCBcImV2ZW50XCIsIGV2ZW50KVxyXG5cclxuICAgIGlmIChldmVudC5kZXRhaWwgPT09IDEpIHtcclxuICAgICAgdGhpcy5hY3RpdmVSb3cgPSByb3cuaWQ7XHJcbiAgICAgIHRoaXMub25Sb3dDbGljay5lbWl0KHJvdyk7XHJcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmRldGFpbCA9PT0gMikge1xyXG4gICAgICB0aGlzLm9uUm93RG91YmxlQ2xpY2suZW1pdChyb3cpXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgb25Sb3dUb3VjaGVuZChyb3dJbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnJvd1RvdWNoZW5kU3RyZWFtJC5uZXh0KHtcclxuICAgICAgcHJldmlvdXM6IHRoaXMucm93VG91Y2hlbmRTdHJlYW0kLnZhbHVlLmN1cnJlbnQsXHJcbiAgICAgIGN1cnJlbnQ6IHJvd0luZGV4XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uU2VhcmNoKGU6IHN0cmluZywgc2VhcmNoQ29sdW1uSW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5zZWFyY2hPYmplY3QuZmlsdGVyKChfLCBpKSA9PiBpID09PSBzZWFyY2hDb2x1bW5JbmRleClbMF0uc2VhcmNoRm9yID0gZTtcclxuICAgIHRoaXMub25TZWFyY2hpbmcuZW1pdCh0aGlzLnNlYXJjaE9iamVjdCk7XHJcbiAgfVxyXG5cclxuICBvbkNvbHVtbkNhcHRpb25DbGlja0xvY2FsKGNvbHVtbjogSUNvcmVUYWJsZUNvbHVtbkl0ZW0pIHtcclxuXHJcbiAgICBpZiAoISFjb2x1bW4udGVtcGxhdGVSZWYpIHJldHVybjsgLy8gbm8gYWN0aW9uIGZvciB0ZW1wbGF0ZVJlZiB0eXBlXHJcblxyXG4gICAgdGhpcy5vbkNvbHVtbkNhcHRpb25DbGljay5lbWl0KGNvbHVtbik7XHJcblxyXG4gICAgLy8gdXBkYXRlIHNvcnQgZGljcmVjdGlvbiBwcm9wZXJ0eSBvZiB0aGlzIGNvbHVtblxyXG4gICAgLy8gYW5kIGNsZWFyIHVwIHRoZSBwcm9wZXJ0eSBmb3IgdGhlIG90aGVyIHZpc2libGVDb2x1bW5zXHJcbiAgICB0aGlzLnZpc2libGVDb2x1bW5zLm1hcCh2YyA9PiB7XHJcbiAgICAgIGlmICh2Yy5maWVsZCA9PT0gY29sdW1uLmZpZWxkKSB7XHJcbiAgICAgICAgdmMuc29ydERpcmVjdGlvbiA9IHZjLnNvcnREaXJlY3Rpb24gPT09IEVudW1Tb3J0RGlyZWN0aW9uLk5PTkUgPyBFbnVtU29ydERpcmVjdGlvbi5BU0MgOiB2Yy5zb3J0RGlyZWN0aW9uID09PSBFbnVtU29ydERpcmVjdGlvbi5BU0MgPyBFbnVtU29ydERpcmVjdGlvbi5ERVNDIDogRW51bVNvcnREaXJlY3Rpb24uTk9ORTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB2Yy5zb3J0RGlyZWN0aW9uID0gRW51bVNvcnREaXJlY3Rpb24uTk9ORVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQWxsb3dTZWFyY2goKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlYXJjaEFjdGl2ZSA9ICEhIXRoaXMuc2VhcmNoQWN0aXZlXHJcbiAgfVxyXG5cclxuICBvbklubGluZVRvb2xDbGljayhlOiBJQ29yZUJ1dHRvblZOUywgcm93OiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKFwib25JbmxpbmVUb29sQ2xpY2tcIiwgZSwgcm93KVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMubWFwKHggPT4geD8udW5zdWJzY3JpYmUoKSk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2ICNjb3JlVGFibGUgY2xhc3M9XCJjb3JlLXRhYmxlLWNvbnRhaW5lclwiIFtjbGFzcy5oaWRlLXNlYXJjaF09XCIhISFzZWFyY2hBY3RpdmVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtdG9nZ2xlciBkLWZsZXgtY2VudGVyIHBvaW50ZXJcIiAoY2xpY2spPVwidG9nZ2xlQWxsb3dTZWFyY2goKVwiICpuZ0lmPVwiISEhc2VhcmNoU3dpdGNoRGlzYWJsZWRcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZlYXRoZXItc2VhcmNoXCI+PC9pPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBcclxuICAgICAgICBD4bqnbiB0cnV54buBbiBjaMOtbmggeMOhYyBoZWlnaHQgY+G7p2EgQ29yZVRhYmxlXHJcbiAgICAgICAgVHV5IG5oacOqbiBjaGnhu4F1IGNhbyBj4bunYSBDb3JlVGFibGUgY+G6p24gxJHGsOG7o2MgdMOtbmggZOG7sWEgdsOgbyBjaGnhu4F1IGNhbyBj4bunYSBjw6FjIHBo4bqnbiB04butIERPTSBs4bqnbiBsxrDhu6N0IHThu6sgbOG7m3Agbmdvw6BpIHbDoG8gbOG7m3AgdHJvbmdcclxuICAgICAgICBBbmggZW0gY2jGsGEgdMOtbmgga2hpIHRyaeG7g24ga2hhaSBjb2RlLCBuw6puIMSRYW5nIGPhuqduIGPDsyBjb24gc+G7kSBkZWZhdWx0IGzDoCA0MDBweFxyXG4gICAgLS0+XHJcbiAgICA8dGFibGUgW2NsYXNzLndyYXBdPVwiISF3cmFwXCIgI3RhYmxlIFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiAoaGVpZ2h0IHx8IDQwMCkgKyAncHgnIH1cIj5cclxuICAgICAgICA8Y29sZ3JvdXA+XHJcbiAgICAgICAgICAgIDxjb2wgKm5nSWY9XCJzaG93Q2hlY2tib3hcIj5cclxuICAgICAgICAgICAgPGNvbCAqbmdGb3I9XCJsZXQgY29sIG9mIHZpc2libGVDb2x1bW5zOyBsZXQgY29sX2luZGV4ID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgPGNvbCAqbmdJZj1cInNob3dUb29sc1wiPlxyXG4gICAgICAgIDwvY29sZ3JvdXA+XHJcbiAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICA8dHIgI2ZpcnN0SGVhZGVyUm93IGRhdGEtcm93PVwiMVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgIGhlaWdodDogaGVhZGVyRmlyc3RSb3dIZWlnaHQgKyAncHgnXHJcbiAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImNoZWNrLWNvbC1oZWFkZXIgY2hlY2stY2VsbCBmcm96ZW4tY29sXCIgKm5nSWY9XCJzaG93Q2hlY2tib3hcIiBcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImxlZnQ6IDBweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIucm93c3Bhbl09XCJzZWFyY2hBY3RpdmUgPyAyIDogMVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnIzY2NjY2NicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnd2hpdGUnXHJcbiAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gcGxlYXNlIGRvIG5vdCBjaGFuZ2UgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBjaGVja2JveFNpemUgKiAyICsgJ3B4J1xyXG4gICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY2hlY2t3cmFwXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBzZWFyY2hBY3RpdmUgPyBoZWFkZXJGaXJzdFJvd0hlaWdodCArIGhlYWRlclNlY29uZFJvd0hlaWdodCArICdweCcgOiBoZWFkZXJGaXJzdFJvd0hlaWdodCArICdweCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFtpZF09XCInY2hlY2stY29sLWhlYWRlcicgKyBpZFwiIFsobmdNb2RlbCldPVwiaGVhZGVyQ2hlY2tib3hTdGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidG9nZ2xlQ2hlY2tBbGwoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVja21hcmtcIiBbY2xhc3MubWl4ZWRdPVwiY2hlY2tpbmdTdGF0ZT09PTJcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAoaGVhZGVyRmlyc3RSb3dIZWlnaHQvMiAtIGNoZWNrYm94U2l6ZS8yKSArICdweCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBjb2wgb2YgdmlzaWJsZUNvbHVtbnM7IGxldCBjb2xfaW5kZXggPSBpbmRleFwiIFtjbGFzcy5mcm96ZW4tY29sXT1cImNvbF9pbmRleCA8IGZyb3plblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cImNvbF9pbmRleCA8IGZyb3plbiA/ICdsZWZ0OiAnICsgZnJvemVuTGVmdHNbY29sX2luZGV4XSArICdweCcgOiAnJ1wiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnIzY2NjY2NicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnd2hpdGUnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAhIW5vUGFkZGluZ0NlbGwgPyAnMHB4IDBweCcgOiAnMHB4IDEycHgnXHJcbiAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gLTFweCBmb3IgYm9yZGVyQm90dG9tIG9mIGhlYWRlciBmaXJzdCByb3cgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbi1jYXB0aW9uXCIgW2NsYXNzLmFzY2VuZGluZ109XCJjb2wuc29ydERpcmVjdGlvbj09PS0xXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRlc2NlbmRpbmddPVwiY29sLnNvcnREaXJlY3Rpb249PT0xXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNvbHVtbkNhcHRpb25DbGlja0xvY2FsKGNvbClcIiBbYXBwVG9vbHRpcF09XCJjb2wuY2FwdGlvbiB8IHRyYW5zbGF0ZSA6IGxhbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogY29sLndpZHRoICsgJ3B4JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogKGhlYWRlckZpcnN0Um93SGVpZ2h0IC0gMSkgKyAncHgnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGl0ZVNwYWNlOiAhIWhlYWRlcldyYXAgPyAnaW5pdGlhbCcgOiAnaW5oZXJpdCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sLmNhcHRpb24gfCB0cmFuc2xhdGUgOiBsYW5nIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc2l6ZXJcIiAobW91c2Vkb3duKT1cInN0YXJ0RHJhZ2dpbmcoJGV2ZW50LCBjb2wsIGZhbHNlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZXVwKT1cInN0b3BEcmFnZ2luZygkZXZlbnQsIGNvbCwgZmFsc2UpXCIgKG1vdXNlbW92ZSk9XCJtb3ZlRXZlbnQoJGV2ZW50LCBjb2wpXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY2hlY2stY29sLWhlYWRlciBjaGVjay1jZWxsXCIgKm5nSWY9XCJzaG93VG9vbHMgJiYgdmlzaWJsZUNvbHVtbnM/Lmxlbmd0aFwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjNjY2NjY2JyxcclxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3doaXRlJ1xyXG4gICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDogMTAwcHg7XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8dHIgKm5nSWY9XCJzZWFyY2hBY3RpdmVcIiBkYXRhLXJvdz1cIjJcIiBbY2xhc3MuaGlkZW5dPVwiISEhc2VhcmNoQWN0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGNvbCBvZiB2aXNpYmxlQ29sdW1uczsgbGV0IGNvbF9pbmRleCA9IGluZGV4XCIgW2NsYXNzLmZyb3plbi1jb2xdPVwiY29sX2luZGV4IDwgZnJvemVuXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwiY29sX2luZGV4IDwgZnJvemVuID8gJ2xlZnQ6ICcgKyBmcm96ZW5MZWZ0c1tjb2xfaW5kZXhdICsgJ3B4JyA6ICcnXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjNjY2NjY2JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICd3aGl0ZSdcclxuICAgICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbc3R5bGVdPVwiJ3dpZHRoOiAnICsgY29sLndpZHRoICsgJ3B4OydcIiAqbmdJZj1cIiEhIWNvbC5oaWRlU2VhcmNoQm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHNlYXJjaFwiIFsobmdNb2RlbCldPVwic2VhcmNoT2JqZWN0W2NvbF9pbmRleF0uc2VhcmNoRm9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uU2VhcmNoKCRldmVudCwgY29sX2luZGV4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgIDx0aCBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnIzY2NjY2NicsXHJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICd3aGl0ZSdcclxuICAgICAgICAgICAgICAgIH1cIj48L3RoPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvdGhlYWQ+XHJcblxyXG4gICAgICAgIDx0Ym9keSBbY2xhc3MubG9hZGluZ109XCJsb2FkaW5nXCI+XHJcbiAgICAgICAgICAgIDxjb3JlLWxvYWRpbmctc3VyZmFjZSBbbG9hZGluZ109XCJsb2FkaW5nXCIgW2hlaWdodF09XCJ0Ym9keWhlaWdodCB8fCA1MDBcIj48L2NvcmUtbG9hZGluZy1zdXJmYWNlPlxyXG5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPHRyIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBoaWRkZW5Ub3BIZWlnaHQgKyAncHgnXHJcbiAgICAgICAgICAgICAgICAgICAgfVwiICpuZ0lmPVwiISFsYXp5TG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGhpZGRlblRvcEhlaWdodCArICdweCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gb2xkIGFwcHJvYWNoOiBsZXQgcm93IG9mIGRhdGEgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCByb3cgb2YgdmlzaWJsZURhdGE7IGxldCByb3dfaW5kZXg9aW5kZXhcIiAoY2xpY2spPVwib25DbGlja0xvY2FsKHJvdywgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICh0b3VjaGVuZCk9XCJvblJvd1RvdWNoZW5kKHJvd19pbmRleCtzdGFydE5vZGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJyb3cuaWQgPT09IGFjdGl2ZVJvdyAmJiAhISFkaXNhYmxlSGlnaGxpZ2h0T25DbGlja1wiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwicm93LWl0ZW0tdG9vbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pdGVtLXRvb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaXRlbS10b29sLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29yZS1idXR0b24tZ3JvdXAtdm5zIFtzaG93bkl0ZW1zXT1cImlubGluZVRvb2xJdGVtc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidXR0b25DbGljayk9XCJvbklubGluZVRvb2xDbGljaygkZXZlbnQsIHJvdylcIj48L2NvcmUtYnV0dG9uLWdyb3VwLXZucz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJzaG93Q2hlY2tib3hcIiBjbGFzcz1cImNoZWNrLWNlbGwgZnJvemVuLWNvbFwiIHN0eWxlPVwibGVmdDogMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY2hlY2t3cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGNsYXNzPVwiY2hlY2stcm93XCIgW2lkXT1cIidjaGVjay1yb3cnICsgKHJvd19pbmRleCArIHN0YXJ0Tm9kZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNoZWNraW5nTW9kZWxbcm93X2luZGV4K3N0YXJ0Tm9kZV1cIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoZWNraW5nTmdNb2RlbENoYW5nZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVja21hcmtcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGNvbCBvZiB2aXNpYmxlQ29sdW1uczsgbGV0IGNvbF9pbmRleCA9IGluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mcm96ZW4tY29sXT1cImNvbF9pbmRleCA8IGZyb3plblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogY29sX2luZGV4IDwgZnJvemVuID8gZnJvemVuTGVmdHNbY29sX2luZGV4XSArICdweCcgOiAnMHB4JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAhIW5vUGFkZGluZ0NlbGwgPyAnMHB4IDBweCcgOiAnMnB4IDBweCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIElOIE1PU1QgQ0FTRVMgV0UgTkVFRCBUTyBSRU5ERVIgVEhFIENFTEwgV0lUSCBQUklNSVRJVkUgVFlQRSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzLnNjcm9sbC15XT1cImFsbG93Q2VsbFNjcm9sbFlcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAhIWNvbC53aWR0aCA/IGNvbC53aWR0aCArICdweCcgOiAndW5zZXQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0QWxpZ246ICEhY29sLmFsaWduID8gY29sLmFsaWduLnRvTG93ZXJDYXNlKCkgOiAndW5zZXQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lSGVpZ2h0OiByb3dIZWlnaHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICEhbm9QYWRkaW5nQ2VsbCA/ICcwcHggMHB4JyA6ICcwcHggMTJweCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCIgKm5nSWY9XCIhISFjb2w/LnRlbXBsYXRlUmVmXCIgW2FwcFRvb2x0aXBdPVwicm93W2NvbC5maWVsZF0gfCB0YWJsZUNlbGw6IGNvbC5waXBlIDogbGFuZ1wiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93W2NvbC5maWVsZF0gfCB0YWJsZUNlbGw6IGNvbC5waXBlIDogbGFuZyB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBCVVQgU09NRSBUSU1FIFdFIE5FRUQgVE8gUkVOREVSIFRIRSBDRUxMIFdJVEggVEVNUExBVEUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiISFjb2w/LnRlbXBsYXRlUmVmXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICEhY29sLndpZHRoID8gY29sLndpZHRoICsgJ3B4JyA6ICd1bnNldCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0QWxpZ246ICEhY29sLmFsaWduID8gY29sLmFsaWduLnRvTG93ZXJDYXNlKCkgOiAndW5zZXQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogISFub1BhZGRpbmdDZWxsID8gJzBweCAwcHgnIDogJzBweCAxMnB4J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEhIWNvbD8udGVtcGxhdGVSZWZBbGxvd0VkaXRPblJvd0FjdGl2ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2w/LnRlbXBsYXRlUmVmITsgY29udGV4dDogeyBjb250ZXh0OiByb3cgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhIWNvbD8udGVtcGxhdGVSZWZBbGxvd0VkaXRPblJvd0FjdGl2ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2w/LnRlbXBsYXRlUmVmITsgY29udGV4dDogeyBjb250ZXh0OiByb3csIGFsbG93RWRpdDogcm93LmlkID09PSBhY3RpdmVSb3cgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cInNob3dUb29sc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvb2xzLWdyb3VwIGQtZmxleC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCB0b29sIG9mIHRvb2xzOyBsZXQgdG9vbF9pbmRleCA9IGluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIid0b29scy1pY29uICcgKyB0b29sLmNsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cInRvb2wuZGlzYWJsZWRGbiA/IHRvb2wuZGlzYWJsZWRGbiEocm93KSA6IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmhpZGRlbl09XCJ0b29sLmhpZGRlbkZuID8gdG9vbC5oaWRkZW5GbiEocm93KSA6IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uVG9vbENsaWNrTG9jYWwocm93X2luZGV4K3N0YXJ0Tm9kZSwgdG9vbF9pbmRleClcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDx0ciBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogaGlkZGVuQm90dG9tSGVpZ2h0ICsgJ3B4J1xyXG4gICAgICAgICAgICAgICAgICAgIH1cIiAqbmdJZj1cIiEhbGF6eUxvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBoaWRkZW5Cb3R0b21IZWlnaHQgKyAncHgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgPHRmb290ICpuZ0lmPVwiISFmb290ZXJcIj5cclxuICAgICAgICAgICAgRm9vdGVyXHJcbiAgICAgICAgPC90Zm9vdD5cclxuICAgIDwvdGFibGU+XHJcbjwvZGl2PiJdfQ==
|
|
473
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS10YWJsZS9jb3JlLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLXRhYmxlL2NvcmUtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQStDLFNBQVMsRUFBaUIsTUFBTSxFQUFFLFlBQVksRUFBZSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEwsT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBMENoRSxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFjLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQVMxRyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUxRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0VBQW9FLENBQUM7QUFDOUcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNkVBQTZFLENBQUM7QUFDMUgsT0FB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S0FBSztnQkFFRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFzQ2lCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDRixLQUFLO3NCQUF4QixTQUFTO3VCQUFDLE9BQU87Z0JBQ1csY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBWaWV3Q2hpbGQsIFNpbXBsZUNoYW5nZXMsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBUZW1wbGF0ZVJlZiwgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmV4cG9ydCBlbnVtIEVDb3JlVGFibGVUb29sQ29kZSB7XHJcbiAgZWRpdCA9ICdlZGl0JyxcclxuICBkZWxldGUgPSAnZGVsZXRlJyxcclxuICBjb21wbGV0ZSA9ICdjb21wbGV0ZScsXHJcbiAgbmF2aWdhdGUgPSAnbmF2aWdhdGUnLFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBFQ29yZVRhYmxlVG9vbENsYXNzIHtcclxuICBlZGl0ID0gJ2VkaXQtaWNvbicsXHJcbiAgZGVsZXRlID0gJ2RlbGV0ZS1pY29uJyxcclxuICByZXBlYXQgPSAncmVwZWF0LWljb24nLFxyXG4gIG5hdmlnYXRlID0gJ25hdmlnYXRlLWljb24nXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNvcmVUYWJsZVRvb2xJdGVtIHtcclxuICBjb2RlOiBFQ29yZVRhYmxlVG9vbENvZGU7XHJcbiAgY2xhc3M6IEVDb3JlVGFibGVUb29sQ2xhc3M7XHJcbiAgY2FwdGlvbj86IEVudW1UcmFuc2xhdGVLZXkgfCBzdHJpbmc7IC8vIExhdGVyIHdlIHdpbGwgcmVtb3ZlIFwifCBzdHJpbmdcIlxyXG5cclxuICAvKiBjYWxsYmFja3MgdG8gY2FsY3VsYXRlIGRpc2FibGVkIGFuZCBoaWRlbiBiYXNlZCBvbiByb3cqL1xyXG4gIGRpc2FibGVkRm4/OiAocm93OiBhbnkpID0+IGJvb2xlYW47XHJcbiAgaGlkZGVuRm4/OiAocm93OiBhbnkpID0+IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNvcmVUYWJsZVRvb2xDbGlja0V2ZW50RW1pdHRlckRhdGEge1xyXG4gIGNvZGU6IEVDb3JlVGFibGVUb29sQ29kZTtcclxuICBpZDogc3RyaW5nIHwgbnVtYmVyO1xyXG59XHJcblxyXG4vKlxyXG5leHBvcnQgaW50ZXJmYWNlIElDb3JlVGFibGVSb3dEb3VibGVDbGlja0V2ZW50RW1pdHRlckRhdGEge1xyXG4gIGlkOiBzdHJpbmcgfCBudW1iZXI7XHJcbn1cclxuKi9cclxuXHJcbmludGVyZmFjZSBJRG91YmxlVG91Y2hlbmREYXRhIHtcclxuICBwcmV2aW91czogbnVtYmVyO1xyXG4gIGN1cnJlbnQ6IG51bWJlcjtcclxufVxyXG5cclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBCZWhhdmlvclN1YmplY3QsIGZpbHRlciwgZGVib3VuY2VUaW1lLCBPYnNlcnZhYmxlLCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29yZVBhZ2VMaXN0U2VydmljZSB9IGZyb20gJy4uL2NvcmUtcGFnZS1saXN0L2NvcmUtcGFnZS1saXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb3JlRm9ybUNvbnRyb2xCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29yZS1mb3JtLWNvbnRyb2wtYmFzZS9jb3JlLWZvcm0tY29udHJvbC1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IElDb3JlQnV0dG9uVk5TIH0gZnJvbSAnLi4vY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9JQ29yZUJ1dHRvblZOUyc7XHJcbmltcG9ydCB7IEVudW1Db3JlQnV0dG9uVk5TQ29kZSB9IGZyb20gJy4uL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9jb3JlLWJ1dHRvbi1ncm91cC12bnMvRW51bUNvcmVCdXR0b25WTlNDb2RlJztcclxuaW1wb3J0IHsgRW51bVRyYW5zbGF0ZUtleSB9IGZyb20gXCJhbHBoYS1nbG9iYWwtY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IElTZWFyY2hJdGVtIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUXVlcnlMaXN0UmVxdWVzdCc7XHJcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sYXlvdXQuc2VydmljZSc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uL2FsZXJ0L2FsZXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2FsZXJ0T3B0aW9ucyc7XHJcbmltcG9ydCB7IElDb3JlVGFibGVDb2x1bW5JdGVtIH0gZnJvbSAnLi9JQ29yZVRhYmxlQ29sdW1uSXRlbSc7XHJcbmltcG9ydCB7IEVudW1Tb3J0RGlyZWN0aW9uIH0gZnJvbSAnLi4vLi4vZW51bS9FbnVtU29ydERpcmVjdGlvbic7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvcmVCdXR0b25Hcm91cENvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUtYnV0dG9uLWdyb3VwL2NvcmUtYnV0dG9uLWdyb3VwL2NvcmUtYnV0dG9uLWdyb3VwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRocmVlZG90c0NvbXBvbmVudCB9IGZyb20gJy4uL3RocmVlZG90cy90aHJlZWRvdHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4uL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb3JlTG9hZGluZ1N1cmZhY2VDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlLWxvYWRpbmctc3VyZmFjZS9jb3JlLWxvYWRpbmctc3VyZmFjZS9jb3JlLWxvYWRpbmctc3VyZmFjZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlQnV0dG9uR3JvdXBWbnNDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlLWJ1dHRvbi1ncm91cC12bnMvY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUYWJsZUNlbGxQaXBlIH0gZnJvbSAnLi4vcGlwZXMvdGFibGUtY2VsbC5waXBlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL2FwcC1waXBlcy90cmFuc2xhdGUucGlwZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvcmUtdGFibGUnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBDb3JlQnV0dG9uR3JvdXBDb21wb25lbnQsXHJcbiAgICBUaHJlZWRvdHNDb21wb25lbnQsXHJcbiAgICBUb29sdGlwRGlyZWN0aXZlLFxyXG4gICAgVGFibGVDZWxsUGlwZSxcclxuICAgIFRyYW5zbGF0ZVBpcGUsXHJcbiAgICBDb3JlTG9hZGluZ1N1cmZhY2VDb21wb25lbnQsXHJcbiAgICBDb3JlQnV0dG9uR3JvdXBWbnNDb21wb25lbnQsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29yZS10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29yZS10YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBDb3JlVGFibGVDb21wb25lbnRcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlVGFibGVDb21wb25lbnQgZXh0ZW5kcyBDb3JlRm9ybUNvbnRyb2xCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcblxyXG4gIC8qXHJcbiAgVGhpcyBjb21wb25lbnQgZGlzcGxheXMgaW5wdXQgZGF0YSB3aXRob3V0IHBhZ2luYXRpb24uXHJcbiAgRm9yIHBhZ2luYXRpbmcgcGxlYXNlIG9yZ2FuaXplIGZyb20gcGFyZW50c1xyXG4gICovXHJcblxyXG4gIEBJbnB1dCgpIGlkITogc3RyaW5nOyAvLyBmb3IgaHRtbCBpZCBpZGVudGlmeWluZ1xyXG4gIEBJbnB1dCgpIHdpZHRoITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGhlaWdodCE6IG51bWJlcjtcclxuICBASW5wdXQoKSBzaG93Q2hlY2tib3ghOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGNoZWNrYm94U2l6ZSE6IG51bWJlcjtcclxuICBASW5wdXQoKSBvdXRlckJ1dHRvbnMhOiBJQ29yZUJ1dHRvblZOU1tdO1xyXG4gIEBJbnB1dCgpIHNob3dUb29scyE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgdG9vbHMhOiBJQ29yZVRhYmxlVG9vbEl0ZW1bXTtcclxuICBASW5wdXQoKSBjaGVja2luZ1Jlc2V0RmxhZyE6IGJvb2xlYW47XHJcblxyXG4gIC8qIGNoYW5nZSB0aGVzZSAyIHByb3BzIHRvIHdyYXAgaGVhZGVyIHRleHRzICovXHJcbiAgQElucHV0KCkgaGVhZGVyV3JhcCE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaGVhZGVyRmlyc3RSb3dIZWlnaHQhOiBudW1iZXI7XHJcbiAgLyoqICovXHJcbiAgXHJcbiAgQElucHV0KCkgaGVhZGVyU2Vjb25kUm93SGVpZ2h0ITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHdyYXAhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGFsbG93Q2VsbFNjcm9sbFkhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGxvYWRpbmchOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHJvd0hlaWdodCE6IHN0cmluZzsgLy8gVkVSWSBJTVBPUlRBTlQgUFJPUEVSVFlcclxuICBASW5wdXQoKSBmcm96ZW4hOiBudW1iZXI7XHJcbiAgQElucHV0KCkgZm9vdGVyITogYW55O1xyXG4gIEBJbnB1dCgpIGNvbHVtbnMhOiBJQ29yZVRhYmxlQ29sdW1uSXRlbVtdOyAvLyByZXF1aXJlZFxyXG4gIEBJbnB1dCgpIGRhdGEhOiBhbnlbXTsgLy8gcmVxdWlyZWRcclxuICBASW5wdXQoKSBzZWxlY3RlZElkcyE6IHN0cmluZ1tdIHwgbnVtYmVyW107XHJcbiAgQElucHV0KCkgY29yZVBhZ2VMaXN0SW5zdGFuY2VOdW1iZXIhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgZGlzYWJsZUhpZ2hsaWdodE9uQ2xpY2shOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGZyZWVNb2RlITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBzZWFyY2hTd2l0Y2hEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGlubGluZVRvb2xJdGVtcyE6IEVudW1Db3JlQnV0dG9uVk5TQ29kZVtdO1xyXG4gIEBJbnB1dCgpIGNvbHVtblNlYXJjaERlZmF1bHRPcGVuITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBsYXp5TG9hZGluZyE6IGJvb2xlYW47XHJcblxyXG4gIEBJbnB1dCgpIG5vUGFkZGluZ0NlbGwhOiBib29sZWFuO1xyXG5cclxuICBAT3V0cHV0KCkgb25TZWFyY2hpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPElTZWFyY2hJdGVtW10+KCk7XHJcbiAgQE91dHB1dCgpIG9uVG9vbENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxJQ29yZVRhYmxlVG9vbENsaWNrRXZlbnRFbWl0dGVyRGF0YT4oKTtcclxuICBAT3V0cHV0KCkgb25Sb3dDbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25Sb3dEb3VibGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25TZWxlY3RlZElkc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nW10gfCBudW1iZXJbXT4oKTtcclxuICBAT3V0cHV0KCkgb25TZWxlY3RlZERhdGFDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xyXG4gIEBPdXRwdXQoKSBvbkNvbHVtbkNhcHRpb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8SUNvcmVUYWJsZUNvbHVtbkl0ZW0+KCk7XHJcblxyXG4gIGNoZWNrYm94Q29sdW1uV2lkdGg6IG51bWJlciA9IDMwOyAvLyAoLS1jaGVja2JveC1zaXplKSogMiBQbGVhc2UgZG8gbm90IGNoYW5nZSB0aGlzXHJcblxyXG4gIHNlYXJjaEFjdGl2ZSE6IGJvb2xlYW47XHJcbiAgdmlzaWJsZUNvbHVtbnMhOiBJQ29yZVRhYmxlQ29sdW1uSXRlbVtdO1xyXG4gIGZyb3plbkxlZnRzOiBudW1iZXJbXSA9IFtdO1xyXG4gIGNoZWNraW5nTW9kZWw6IGJvb2xlYW5bXSA9IFtdO1xyXG4gIGhlYWRlckNoZWNrYm94U3RhdGUhOiBib29sZWFuO1xyXG4gIGNoZWNraW5nU3RhdGUhOiBudW1iZXI7IC8vIDA9bm9uZTsgMT1hbGw7IDI9bWl4ZWRcclxuICB0Ym9keWhlaWdodCE6IG51bWJlcjtcclxuICB2aXNpYmxlUm93Q291bnQhOiBudW1iZXI7XHJcblxyXG4gIHJvd1RvdWNoZW5kU3RyZWFtJDogQmVoYXZpb3JTdWJqZWN0PElEb3VibGVUb3VjaGVuZERhdGE+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJRG91YmxlVG91Y2hlbmREYXRhPih7IHByZXZpb3VzOiAtMiwgY3VycmVudDogLTEgfSk7XHJcbiAgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgc2VhcmNoT2JqZWN0ITogSVNlYXJjaEl0ZW1bXTtcclxuXHJcbiAgbGFuZyE6IHN0cmluZztcclxuXHJcbiAgYWN0aXZlUm93ITogYW55OyAvLyBudW1iZXIgfCBzdHJpbmdcclxuXHJcbiAgbW91c2VEb3duID0gZmFsc2U7XHJcbiAgc3RhcnRYOiBhbnk7XHJcbiAgZW5kWDogYW55O1xyXG5cclxuICBzY3JvbGxTdHJlYW0kITogT2JzZXJ2YWJsZTxhbnk+O1xyXG5cclxuICAvKiBGT1IgTEFaWSBVSSBMT0FESU5HICovXHJcbiAgcmVuZGVyQWhyZWFkOiBudW1iZXIgPSAwO1xyXG4gIGhpZGRlblRvcEhlaWdodDogbnVtYmVyID0gMDtcclxuICBoaWRkZW5Cb3R0b21IZWlnaHQ6IG51bWJlciA9IDA7XHJcbiAgc2Nyb2xsVG9wOiBudW1iZXIgPSAwO1xyXG4gIG9mZnNldFk6IG51bWJlciA9IDA7XHJcbiAgdmlzaWJsZURhdGEhOiBhbnlbXTtcclxuICBzdGFydE5vZGU6IG51bWJlciA9IDA7XHJcbiAgLyoqKioqKioqKioqKioqKioqKioqKioqL1xyXG5cclxuICBAVmlld0NoaWxkKCdjb3JlVGFibGUnKSBjb3JlVGFibGUhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ3RhYmxlJykgdGFibGUhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2ZpcnN0SGVhZGVyUm93JykgZmlyc3RIZWFkZXJSb3chOiBFbGVtZW50UmVmO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZSxcclxuICAgIHByaXZhdGUgY29yZVBhZ2VMaXN0U2VydmljZTogQ29yZVBhZ2VMaXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgbWxzOiBNdWx0aUxhbmd1YWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIGNhbGN1bGF0ZVNjcm9sbCgpOiB2b2lkIHtcclxuXHJcbiAgICB0cnkge1xyXG5cclxuICAgICAgaWYgKCEhIXRoaXMuY29yZVRhYmxlKSByZXR1cm47XHJcbiAgICAgIGlmICghISF0aGlzLmxhenlMb2FkaW5nKSByZXR1cm47XHJcblxyXG4gICAgICBjb25zdCBoZWlnaHQgPSBOdW1iZXIoZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmNvcmVUYWJsZS5uYXRpdmVFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCctLWhlaWdodCcpLnJlcGxhY2UoJ3B4JywgJycpKTtcclxuICAgICAgY29uc3Qgcm93SGVpZ2h0ID0gTnVtYmVyKGdldENvbXB1dGVkU3R5bGUodGhpcy5jb3JlVGFibGUubmF0aXZlRWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZSgnLS1yb3ctaGVpZ2h0Jykuc3BsaXQoJ3B4JylbMF0pO1xyXG5cclxuICAgICAgaWYgKCEhIXJvd0hlaWdodCkgdGhyb3cgbmV3IEVycm9yKFwiQ291bGQgbm90IGdldCAtLXJvdy1oZWlnaHQgcHJvcGVydHlcIik7XHJcblxyXG4gICAgICBsZXQgc3RhcnROb2RlID0gTWF0aC5mbG9vcih0aGlzLnNjcm9sbFRvcCAvIHJvd0hlaWdodCkgLSB0aGlzLnJlbmRlckFocmVhZDtcclxuICAgICAgc3RhcnROb2RlID0gTWF0aC5tYXgoMCwgc3RhcnROb2RlKTtcclxuICAgICAgdGhpcy5zdGFydE5vZGUgPSBzdGFydE5vZGUgfHwgMDtcclxuICAgICAgbGV0IHZpc2libGVOb2RlQ291bnQgPSBNYXRoLmNlaWwoaGVpZ2h0IC8gcm93SGVpZ2h0KSArIDIgKiB0aGlzLnJlbmRlckFocmVhZDtcclxuICAgICAgdmlzaWJsZU5vZGVDb3VudCA9IE1hdGgubWluKHRoaXMuZGF0YS5sZW5ndGggLSBzdGFydE5vZGUsIHZpc2libGVOb2RlQ291bnQpO1xyXG4gICAgICB0aGlzLm9mZnNldFkgPSBzdGFydE5vZGUgKiByb3dIZWlnaHQ7XHJcbiAgICAgIGNvbnN0IG5ld1Zpc2libGVEYXRhOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgICAgdGhpcy5oaWRkZW5Ub3BIZWlnaHQgPSBzdGFydE5vZGUgKiByb3dIZWlnaHQ7XHJcbiAgICAgIHRoaXMuaGlkZGVuQm90dG9tSGVpZ2h0ID0gKHRoaXMuZGF0YS5sZW5ndGggLSBzdGFydE5vZGUgLSB2aXNpYmxlTm9kZUNvdW50KSAqIHJvd0hlaWdodDtcclxuICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0Tm9kZTsgaSA8IHN0YXJ0Tm9kZSArIHZpc2libGVOb2RlQ291bnQ7IGkrKykge1xyXG4gICAgICAgIG5ld1Zpc2libGVEYXRhLnB1c2godGhpcy5kYXRhW2ldKVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnZpc2libGVEYXRhID0gbmV3VmlzaWJsZURhdGE7XHJcblxyXG4gICAgICAvKiBPUEVOIENPTU1FTlRTIFRPIFNFRSBDT05UUk9MIFZBTFVFUyAqL1xyXG4gICAgICBjb25zb2xlLmxvZyhcInN0YXJ0Tm9kZVwiLCBzdGFydE5vZGUpXHJcbiAgICAgIC8qXHJcbiAgICAgIGNvbnNvbGUubG9nKFwidGhpcy5vZmZzZXRZXCIsIHRoaXMub2Zmc2V0WSlcclxuICAgICAgY29uc29sZS5sb2coXCJ0aGlzLmhpZGRlblRvcEhlaWdodFwiLCB0aGlzLmhpZGRlblRvcEhlaWdodClcclxuICAgICAgY29uc29sZS5sb2coXCJ0aGlzLmhpZGRlbkJvdHRvbUhlaWdodFwiLCB0aGlzLmhpZGRlbkJvdHRvbUhlaWdodClcclxuICAgICAgY29uc29sZS5sb2coXCJ0aGlzLnZpc2libGVEYXRhLmxlbmd0aFwiLCB0aGlzLnZpc2libGVEYXRhLmxlbmd0aClcclxuICAgICAgY29uc3QgY29udHJvbFZhbHVlID0gKHRoaXMuaGlkZGVuVG9wSGVpZ2h0ICsgdGhpcy5oaWRkZW5Cb3R0b21IZWlnaHQgKyB0aGlzLnZpc2libGVEYXRhLmxlbmd0aCAqIHJvd0hlaWdodCkgLyByb3dIZWlnaHRcclxuICAgICAgY29uc29sZS5sb2coXCJjb250cm9sVmFsdWVcIiwgY29udHJvbFZhbHVlKSAvLyBNdXN0IGVxdWVhbCBwYWdlU2l6ZVxyXG4gICAgICAqL1xyXG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xyXG4gICAgICBpZiAoaXNEZXZNb2RlKCkgJiYgdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8uaWQgPT09ICc4YzI0NjgzZC03ZDUyLTRmNWEtODA5MC0zMWM3NzdlODg2OWQnKSB7XHJcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoZXJyb3IubWVzc2FnZSwgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnZpc2libGVEYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmRhdGEpKTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGFydERyYWdnaW5nKGU6IGFueSwgY29sOiBJQ29yZVRhYmxlQ29sdW1uSXRlbSwgZmxhZzogYW55KSB7XHJcbiAgICBpZiAoZS5idXR0b25zID09PSAxKSB7XHJcbiAgICAgIHRoaXMuc3RhcnRYID0gZS5wYWdlWDtcclxuICAgICAgaWYgKCEhIXRoaXMubW91c2VEb3duKSB7XHJcblxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubW91c2VEb3duID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0b3BEcmFnZ2luZyhlOiBhbnksIGNvbDogSUNvcmVUYWJsZUNvbHVtbkl0ZW0sIGZsYWc6IGFueSkge1xyXG4gICAgaWYgKCEhdGhpcy5tb3VzZURvd24pIHtcclxuICAgICAgdGhpcy5lbmRYID0gZS5wYWdlWDtcclxuICAgICAgbGV0IG9mZnNldCA9IHRoaXMuZW5kWCAtIHRoaXMuc3RhcnRYO1xyXG4gICAgICBjb2wud2lkdGghICs9IG9mZnNldDtcclxuICAgICAgdGhpcy5tb3VzZURvd24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5lbmRYID0gMDtcclxuICAgICAgdGhpcy5zdGFydFggPSAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbW92ZUV2ZW50KGU6IGFueSwgY29sOiBJQ29yZVRhYmxlQ29sdW1uSXRlbSkge1xyXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgaWYgKCF0aGlzLm1vdXNlRG93bikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB4ID0gZS5wYWdlWDtcclxuICAgIGNvbnNvbGUubG9nKFwibW92ZUV2ZW50XCIsIGUucGFnZVgpXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICBpZiAodGhpcy5zaG93Q2hlY2tib3gpIHtcclxuICAgICAgaWYgKCF0aGlzLmNoZWNrYm94U2l6ZSkge1xyXG4gICAgICAgIHRoaXMuY2hlY2tib3hTaXplID0gMTU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5oZWFkZXJGaXJzdFJvd0hlaWdodCA9PT0gdW5kZWZpbmVkKSB0aGlzLmhlYWRlckZpcnN0Um93SGVpZ2h0ID0gNDA7XHJcbiAgICBpZiAodGhpcy5oZWFkZXJTZWNvbmRSb3dIZWlnaHQgPT09IHVuZGVmaW5lZCkgdGhpcy5oZWFkZXJTZWNvbmRSb3dIZWlnaHQgPSA0MDtcclxuXHJcblxyXG4gICAgLyogVmFsaWRhdGUgY29sdW1ucyBpbnB1dCB0byBtYWtlIHN1cmUgb25lIG9mIGZpZWxkcyBpcyAnaWQnICovXHJcbiAgICBpZiAoISEhdGhpcy5jb2x1bW5zKSB7XHJcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKHRoaXMuaWQgKyBcIjogQ29sdW1ucyBhcmUgbm90IGRlZmluZWQuXCIsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zKVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmNvbHVtbnMuZmlsdGVyKChjOiBJQ29yZVRhYmxlQ29sdW1uSXRlbSkgPT4gYy5maWVsZCA9PT0gJ2lkJykubGVuZ3RoID09PSAwICYmIGlzRGV2TW9kZSgpICYmIHRoaXMuY29sdW1ucy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IodGhpcy5pZCArIFwiOiBUaGUgY29sdW1ucyBtdXN0IGhhdmUgb25lIHdpdGggJ2ZpZWxkJyBwcm9wZXJ0eSA9PT0gJ2lkJ1wiLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnZpc2libGVDb2x1bW5zID0gdGhpcy5jb2x1bW5zLmZpbHRlcigoYzogSUNvcmVUYWJsZUNvbHVtbkl0ZW0pID0+ICEhIWMuaGlkZGVuKVxyXG4gICAgaWYgKCEhIXRoaXMudmlzaWJsZUNvbHVtbnMubGVuZ3RoICYmIGlzRGV2TW9kZSgpICYmIHRoaXMuY29sdW1ucy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IodGhpcy5pZCArIFwiOiBObyB2aXNpYmxlIGNvbHVtbiBkZWZpbmVkLlwiLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgIH1cclxuXHJcbiAgICAvLyBhZGQgZGVmYXVsdCBzb3J0IGRpcmVjdGlvbiB0byB2aXNpYmxlQ29sdW1uc1xyXG4gICAgdGhpcy52aXNpYmxlQ29sdW1ucy5tYXAoYyA9PiBjLnNvcnREaXJlY3Rpb24gPSBFbnVtU29ydERpcmVjdGlvbi5OT05FKVxyXG5cclxuICAgIC8qIFNUQVJUOiBJbml0aWFsaXppbmcgc2VhcmNoT2JqZWN0ICovXHJcbiAgICBjb25zdCBuZXdTZWFyY2hPYmplY3Q6IElTZWFyY2hJdGVtW10gPSBbXTtcclxuICAgIHRoaXMudmlzaWJsZUNvbHVtbnMubWFwKGMgPT4ge1xyXG4gICAgICBuZXdTZWFyY2hPYmplY3QucHVzaCh7XHJcbiAgICAgICAgZmllbGQ6IGMuZmllbGQsXHJcbiAgICAgICAgc2VhcmNoRm9yOiAnJ1xyXG4gICAgICB9KVxyXG4gICAgfSlcclxuICAgIHRoaXMuc2VhcmNoT2JqZWN0ID0gbmV3U2VhcmNoT2JqZWN0O1xyXG4gICAgLyogRU5EOiBJbml0aWFsaXppbmcgc2VhcmNoT2JqZWN0ICovXHJcblxyXG4gICAgY29uc3QgZnJvemVuQ29sdW1ucyA9IHRoaXMudmlzaWJsZUNvbHVtbnMuZmlsdGVyKChfLCBpbmRleCkgPT4gaW5kZXggPCB0aGlzLmZyb3plbik7XHJcblxyXG4gICAgbGV0IGxlZnQgPSB0aGlzLmNoZWNrYm94U2l6ZSEgKiAyIHx8IDA7IC8vIHRoZSBmaXJzdCBzaXplIGlzIGZvciBjaGVja2JveFxyXG4gICAgZnJvemVuQ29sdW1ucy5tYXAoYyA9PiB7XHJcbiAgICAgIGlmICghISFjLndpZHRoKSBjb25zb2xlLmVycm9yKHRoaXMuaWQgKyBcIjogRWFjaCBmcm96ZW4gY29sdW1uIG11c3QgaGF2ZSBpdHMgbnVtYmVyIHByb3BlcnR5ICd3aWR0aCcuXCIpO1xyXG4gICAgICB0aGlzLmZyb3plbkxlZnRzLnB1c2gobGVmdCk7XHJcbiAgICAgIGxlZnQgPSBsZWZ0ICsgYy53aWR0aCFcclxuICAgIH0pXHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMucm93VG91Y2hlbmRTdHJlYW0kLnBpcGUoXHJcbiAgICAgICAgZmlsdGVyKCh4OiBhbnkpID0+IHguY3VycmVudCA9PT0geC5wcmV2aW91cyksXHJcbiAgICAgICAgZGVib3VuY2VUaW1lKDIwMCksXHJcbiAgICAgICkuc3Vic2NyaWJlKCh5OiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLm9uUm93RG91YmxlQ2xpY2suZW1pdCh7XHJcbiAgICAgICAgICBpZDogdGhpcy5kYXRhW3kuY3VycmVudF0uaWRcclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLm1scy5sYW5nJC5zdWJzY3JpYmUoeCA9PiB0aGlzLmxhbmcgPSB4KVxyXG4gICAgKVxyXG5cclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuXHJcbiAgICBpZiAoY2hhbmdlc1snY2hlY2tpbmdSZXNldEZsYWcnXSkge1xyXG4gICAgICBpZiAoISF0aGlzLmRhdGEpIHtcclxuICAgICAgICB0aGlzLnRvZ2dsZUNoZWNrQWxsKGZhbHNlKVxyXG4gICAgICAgIHRoaXMuaGVhZGVyQ2hlY2tib3hTdGF0ZSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNoYW5nZXNbJ2RhdGEnXSkge1xyXG4gICAgICBjb25zdCBuZXdDaGVja2luZ01vZGVsOiBib29sZWFuW10gPSBbXTtcclxuICAgICAgY2hhbmdlc1snZGF0YSddLmN1cnJlbnRWYWx1ZT8ubWFwKChfOiBhbnkpID0+IHtcclxuICAgICAgICBuZXdDaGVja2luZ01vZGVsLnB1c2goZmFsc2UpXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmNoZWNraW5nTW9kZWwgPSBuZXdDaGVja2luZ01vZGVsO1xyXG5cclxuICAgICAgaWYgKCEhdGhpcy5sYXp5TG9hZGluZykge1xyXG4gICAgICAgIGlmICghIXRoaXMuY29yZVRhYmxlKSB7XHJcbiAgICAgICAgICB0aGlzLmNhbGN1bGF0ZVNjcm9sbCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnZpc2libGVEYXRhID0gY2hhbmdlc1snZGF0YSddLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzWydjaGVja2VkSWRzJ10pIHtcclxuICAgICAgY29uc3QgbmV3Q2hlY2tpbmdNb2RlbDogYm9vbGVhbltdID0gW107XHJcbiAgICAgIGNoYW5nZXNbJ2NoZWNrZWRJZHMnXS5jdXJyZW50VmFsdWU/Lm1hcCgoY2hlY2tlZElkOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGEubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBpZiAoaXRlbVsnaWQnXSA9PT0gY2hlY2tlZElkKSB7XHJcbiAgICAgICAgICAgIG5ld0NoZWNraW5nTW9kZWwucHVzaCh0cnVlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG5ld0NoZWNraW5nTW9kZWwucHVzaChmYWxzZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5jaGVja2luZ01vZGVsID0gbmV3Q2hlY2tpbmdNb2RlbDtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydsb2FkaW5nJ10pIHtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gY2hhbmdlc1snbG9hZGluZyddLmN1cnJlbnRWYWx1ZTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydjb2x1bW5zJ10pIHtcclxuICAgICAgdGhpcy52aXNpYmxlQ29sdW1ucyA9IHRoaXMuY29sdW1ucz8uZmlsdGVyKChjOiBJQ29yZVRhYmxlQ29sdW1uSXRlbSkgPT4gISEhYy5oaWRkZW4pIHx8IFtdXHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snY29sdW1uU2VhcmNoRGVmYXVsdE9wZW4nXSkge1xyXG4gICAgICB0aGlzLnNlYXJjaEFjdGl2ZSA9ICEhY2hhbmdlc1snY29sdW1uU2VhcmNoRGVmYXVsdE9wZW4nXS5jdXJyZW50VmFsdWVcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzZXRIZWFkZXJGaXJzdFJvd0hlaWdodCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBmaXJzdEhlYWRlclJvd0hlaWdodCA9IHRoaXMuZmlyc3RIZWFkZXJSb3cubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XHJcbiAgICAgIHRoaXMuY29yZVRhYmxlLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0taGVhZGVyLTFzdC1yb3ctaGVpZ2h0JyxcclxuICAgICAgZmlyc3RIZWFkZXJSb3dIZWlnaHQgKyAncHgnXHJcbiAgICAgICk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG5cclxuICAgIGlmICh0aGlzLmNvcmVQYWdlTGlzdEluc3RhbmNlTnVtYmVyKSB7XHJcbiAgICAgIGNvbnN0IGNhbGxlckZpbHRlciA9IHRoaXMuY29yZVBhZ2VMaXN0U2VydmljZS5pbnN0YW5jZXMuZmlsdGVyKHggPT4geC5pbnN0YW5jZU51bWJlciA9PT0gdGhpcy5jb3JlUGFnZUxpc3RJbnN0YW5jZU51bWJlcik7XHJcbiAgICAgIGlmICghIWNhbGxlckZpbHRlci5sZW5ndGgpIHtcclxuICAgICAgICBjb25zdCBjYWxsZXIgPSBjYWxsZXJGaWx0ZXJbMF07XHJcbiAgICAgICAgY2FsbGVyLmNvcmVUYWJsZVJlZiA9IHRoaXMuY29yZVRhYmxlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoISEhdGhpcy5mcmVlTW9kZSkge1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgICAgdGhpcy5jb3JlUGFnZUxpc3RTZXJ2aWNlLmluc3RhbmNlcy5maWx0ZXIoeCA9PiB4Lmluc3RhbmNlTnVtYmVyID09PSB0aGlzLmNvcmVQYWdlTGlzdEluc3RhbmNlTnVtYmVyKVswXS5pZCQuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZVJvdyA9IHg7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIClcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5jb3JlUGFnZUxpc3RTZXJ2aWNlLmluc3RhbmNlcy5maWx0ZXIoeCA9PiB4Lmluc3RhbmNlTnVtYmVyID09PSB0aGlzLmNvcmVQYWdlTGlzdEluc3RhbmNlTnVtYmVyKVswXS50Ym9keUhlaWdodCQuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgaWYgKCEheCkge1xyXG4gICAgICAgICAgICB0aGlzLnRib2R5aGVpZ2h0ID0geDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICApXHJcblxyXG4gICAgICBjb25zdCByZWN0ID0gdGhpcy5jb3JlVGFibGUubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgdGhpcy5jb3JlVGFibGUubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS10YWJsZS13aWR0aCcsIHJlY3Qud2lkdGggKyAncHgnKVxyXG5cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNjcm9sbFN0cmVhbSQgPSBmcm9tRXZlbnQodGhpcy50YWJsZS5uYXRpdmVFbGVtZW50LCAnc2Nyb2xsJyk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcblxyXG4gICAgICBpZiAoISF0aGlzLndpZHRoKSB0aGlzLmNvcmVUYWJsZS5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXdpZHRoJywgdGhpcy53aWR0aCArICdweCcpO1xyXG4gICAgICBpZiAoISF0aGlzLnJvd0hlaWdodCkgdGhpcy5jb3JlVGFibGUubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1yb3ctaGVpZ2h0JywgdGhpcy5yb3dIZWlnaHQgKyAncHgnKTtcclxuICAgICAgaWYgKCEhdGhpcy5oZWlnaHQpIHRoaXMuY29yZVRhYmxlLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0taGVpZ2h0JywgdGhpcy5oZWlnaHQgKyAncHgnKTtcclxuXHJcbiAgICAgIC8vIENo4buJIHN1YnNjcmlkZSBzYXUga2hpIGPDoWMgbOG7h25oIHRyw6puIMSRw6MgxJHGsOG7o2MgdGjhu7FjIGhp4buHblxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLnNjcm9sbFN0cmVhbSRcclxuICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWUoNTApXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zY3JvbGxUb3AgPSBldmVudC5zcmNFbGVtZW50LnNjcm9sbFRvcDtcclxuICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVTY3JvbGwoKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgIClcclxuXHJcbiAgICB9LCAwKVxyXG5cclxuICAgIHRoaXMucmVzZXRIZWFkZXJGaXJzdFJvd0hlaWdodCgpO1xyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLm1scy5sYW5nJC5zdWJzY3JpYmUoXyA9PiB7XHJcbiAgICAgICAgdGhpcy5yZXNldEhlYWRlckZpcnN0Um93SGVpZ2h0KCk7XHJcbiAgICAgIH0pXHJcbiAgICApXHJcblxyXG4gIH1cclxuXHJcbiAgb25Ub29sQ2xpY2tMb2NhbChyb3dJbmRleDogbnVtYmVyLCB0b29sSW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvb2xDbGljay5lbWl0KHtcclxuICAgICAgY29kZTogdGhpcy50b29sc1t0b29sSW5kZXhdLmNvZGUsXHJcbiAgICAgIGlkOiB0aGlzLmRhdGFbcm93SW5kZXhdLmlkXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQ2hlY2tBbGwoYXJnczogYm9vbGVhbikge1xyXG4gICAgY29uc3QgbmV3Q2hlY2tpbmdNb2RlbDogYm9vbGVhbltdID0gW107XHJcbiAgICBjb25zdCBuZXdTZWxlY3RlZElkczogYW55W10gPSBbXTtcclxuICAgIGNvbnN0IG5ld1NlbGVjdGVkRGF0YTogYW55W10gPSBbXTtcclxuXHJcbiAgICB0aGlzLmRhdGEubWFwKGl0ZW0gPT4ge1xyXG4gICAgICBuZXdDaGVja2luZ01vZGVsLnB1c2goYXJncyk7XHJcbiAgICAgIGlmIChhcmdzKSB7XHJcbiAgICAgICAgbmV3U2VsZWN0ZWRJZHMucHVzaChpdGVtLmlkKTtcclxuICAgICAgICBuZXdTZWxlY3RlZERhdGEucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5jaGVja2luZ01vZGVsID0gbmV3Q2hlY2tpbmdNb2RlbDtcclxuICAgIHRoaXMuY2hlY2tpbmdTdGF0ZSA9IGFyZ3MgPyAxIDogMDtcclxuICAgIHRoaXMub25TZWxlY3RlZElkc0NoYW5nZS5lbWl0KG5ld1NlbGVjdGVkSWRzKTtcclxuICAgIHRoaXMub25TZWxlY3RlZERhdGFDaGFuZ2UuZW1pdChuZXdTZWxlY3RlZERhdGEpO1xyXG4gIH1cclxuXHJcbiAgb25DaGVja2luZ05nTW9kZWxDaGFuZ2UoKSB7XHJcbiAgICBjb25zdCBuZXdTZWxlY3RlZElkczogbnVtYmVyW10gPSBbXTtcclxuICAgIGNvbnN0IG5ld1NlbGVjdGVkRGF0YTogYW55W10gPSBbXTtcclxuICAgIHRoaXMuZGF0YS5maWx0ZXIoKF86IGFueSwgaW5kZXg6IG51bWJlcikgPT4gISF0aGlzLmNoZWNraW5nTW9kZWxbaW5kZXhdKS5tYXAoaXRlbSA9PiB7XHJcbiAgICAgIG5ld1NlbGVjdGVkSWRzLnB1c2goaXRlbS5pZClcclxuICAgICAgbmV3U2VsZWN0ZWREYXRhLnB1c2goaXRlbSlcclxuICAgIH0pXHJcbiAgICB0aGlzLm9uU2VsZWN0ZWRJZHNDaGFuZ2UuZW1pdChuZXdTZWxlY3RlZElkcyk7XHJcbiAgICB0aGlzLm9uU2VsZWN0ZWREYXRhQ2hhbmdlLmVtaXQobmV3U2VsZWN0ZWREYXRhKTtcclxuXHJcbiAgICBpZiAobmV3U2VsZWN0ZWRJZHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMuY2hlY2tpbmdTdGF0ZSA9IDA7IC8vIG5vbmVcclxuICAgIH0gZWxzZSBpZiAobmV3U2VsZWN0ZWRJZHMubGVuZ3RoID09PSB0aGlzLmNoZWNraW5nTW9kZWwubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuY2hlY2tpbmdTdGF0ZSA9IDE7IC8vIGFsbFxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jaGVja2luZ1N0YXRlID0gMjsgLy8gbWl4ZWRcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBvbkRvdWJsZUNsaWNrTG9jYWwocm93SW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5vblJvd0RvdWJsZUNsaWNrLmVtaXQodGhpcy5kYXRhW3Jvd0luZGV4XSlcclxuICB9XHJcblxyXG4gIG9uQ2xpY2tMb2NhbChyb3c6IGFueSwgZXZlbnQ6IGFueSkge1xyXG5cclxuICAgIGNvbnNvbGUubG9nKFwib25DbGlja0xvY2FsIHJvd1wiLCByb3csIFwiZXZlbnRcIiwgZXZlbnQpXHJcblxyXG4gICAgaWYgKGV2ZW50LmRldGFpbCA9PT0gMSkge1xyXG4gICAgICB0aGlzLmFjdGl2ZVJvdyA9IHJvdy5pZDtcclxuICAgICAgdGhpcy5vblJvd0NsaWNrLmVtaXQocm93KTtcclxuICAgIH0gZWxzZSBpZiAoZXZlbnQuZGV0YWlsID09PSAyKSB7XHJcbiAgICAgIHRoaXMub25Sb3dEb3VibGVDbGljay5lbWl0KHJvdylcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBvblJvd1RvdWNoZW5kKHJvd0luZGV4OiBudW1iZXIpIHtcclxuICAgIHRoaXMucm93VG91Y2hlbmRTdHJlYW0kLm5leHQoe1xyXG4gICAgICBwcmV2aW91czogdGhpcy5yb3dUb3VjaGVuZFN0cmVhbSQudmFsdWUuY3VycmVudCxcclxuICAgICAgY3VycmVudDogcm93SW5kZXhcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25TZWFyY2goZTogc3RyaW5nLCBzZWFyY2hDb2x1bW5JbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlYXJjaE9iamVjdC5maWx0ZXIoKF8sIGkpID0+IGkgPT09IHNlYXJjaENvbHVtbkluZGV4KVswXS5zZWFyY2hGb3IgPSBlO1xyXG4gICAgdGhpcy5vblNlYXJjaGluZy5lbWl0KHRoaXMuc2VhcmNoT2JqZWN0KTtcclxuICB9XHJcblxyXG4gIG9uQ29sdW1uQ2FwdGlvbkNsaWNrTG9jYWwoY29sdW1uOiBJQ29yZVRhYmxlQ29sdW1uSXRlbSkge1xyXG5cclxuICAgIGlmICghIWNvbHVtbi50ZW1wbGF0ZVJlZikgcmV0dXJuOyAvLyBubyBhY3Rpb24gZm9yIHRlbXBsYXRlUmVmIHR5cGVcclxuXHJcbiAgICB0aGlzLm9uQ29sdW1uQ2FwdGlvbkNsaWNrLmVtaXQoY29sdW1uKTtcclxuXHJcbiAgICAvLyB1cGRhdGUgc29ydCBkaWNyZWN0aW9uIHByb3BlcnR5IG9mIHRoaXMgY29sdW1uXHJcbiAgICAvLyBhbmQgY2xlYXIgdXAgdGhlIHByb3BlcnR5IGZvciB0aGUgb3RoZXIgdmlzaWJsZUNvbHVtbnNcclxuICAgIHRoaXMudmlzaWJsZUNvbHVtbnMubWFwKHZjID0+IHtcclxuICAgICAgaWYgKHZjLmZpZWxkID09PSBjb2x1bW4uZmllbGQpIHtcclxuICAgICAgICB2Yy5zb3J0RGlyZWN0aW9uID0gdmMuc29ydERpcmVjdGlvbiA9PT0gRW51bVNvcnREaXJlY3Rpb24uTk9ORSA/IEVudW1Tb3J0RGlyZWN0aW9uLkFTQyA6IHZjLnNvcnREaXJlY3Rpb24gPT09IEVudW1Tb3J0RGlyZWN0aW9uLkFTQyA/IEVudW1Tb3J0RGlyZWN0aW9uLkRFU0MgOiBFbnVtU29ydERpcmVjdGlvbi5OT05FO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZjLnNvcnREaXJlY3Rpb24gPSBFbnVtU29ydERpcmVjdGlvbi5OT05FXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICB0b2dnbGVBbGxvd1NlYXJjaCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VhcmNoQWN0aXZlID0gISEhdGhpcy5zZWFyY2hBY3RpdmVcclxuICB9XHJcblxyXG4gIG9uSW5saW5lVG9vbENsaWNrKGU6IElDb3JlQnV0dG9uVk5TLCByb3c6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coXCJvbklubGluZVRvb2xDbGlja1wiLCBlLCByb3cpXHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5tYXAoeCA9PiB4Py51bnN1YnNjcmliZSgpKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgI2NvcmVUYWJsZSBjbGFzcz1cImNvcmUtdGFibGUtY29udGFpbmVyXCIgW2NsYXNzLmhpZGUtc2VhcmNoXT1cIiEhIXNlYXJjaEFjdGl2ZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInNlYXJjaC10b2dnbGVyIGQtZmxleC1jZW50ZXIgcG9pbnRlclwiIChjbGljayk9XCJ0b2dnbGVBbGxvd1NlYXJjaCgpXCIgKm5nSWY9XCIhISFzZWFyY2hTd2l0Y2hEaXNhYmxlZFwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmVhdGhlci1zZWFyY2hcIj48L2k+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIFxyXG4gICAgICAgIEPhuqduIHRydXnhu4FuIGNow61uaCB4w6FjIGhlaWdodCBj4bunYSBDb3JlVGFibGVcclxuICAgICAgICBUdXkgbmhpw6puIGNoaeG7gXUgY2FvIGPhu6dhIENvcmVUYWJsZSBj4bqnbiDEkcaw4bujYyB0w61uaCBk4buxYSB2w6BvIGNoaeG7gXUgY2FvIGPhu6dhIGPDoWMgcGjhuqduIHThu60gRE9NIGzhuqduIGzGsOG7o3QgdOG7qyBs4bubcCBuZ2/DoGkgdsOgbyBs4bubcCB0cm9uZ1xyXG4gICAgICAgIEFuaCBlbSBjaMawYSB0w61uaCBraGkgdHJp4buDbiBraGFpIGNvZGUsIG7Dqm4gxJFhbmcgY+G6p24gY8OzIGNvbiBz4buRIGRlZmF1bHQgbMOgIDQwMHB4XHJcbiAgICAtLT5cclxuICAgIDx0YWJsZSBbY2xhc3Mud3JhcF09XCIhIXdyYXBcIiAjdGFibGUgW25nU3R5bGVdPVwieyBoZWlnaHQ6IChoZWlnaHQgfHwgNDAwKSArICdweCcgfVwiPlxyXG4gICAgICAgIDxjb2xncm91cD5cclxuICAgICAgICAgICAgPGNvbCAqbmdJZj1cInNob3dDaGVja2JveFwiPlxyXG4gICAgICAgICAgICA8Y29sICpuZ0Zvcj1cImxldCBjb2wgb2YgdmlzaWJsZUNvbHVtbnM7IGxldCBjb2xfaW5kZXggPSBpbmRleFwiPlxyXG4gICAgICAgICAgICA8Y29sICpuZ0lmPVwic2hvd1Rvb2xzXCI+XHJcbiAgICAgICAgPC9jb2xncm91cD5cclxuICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgIDx0ciAjZmlyc3RIZWFkZXJSb3cgZGF0YS1yb3c9XCIxXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBoZWFkZXJGaXJzdFJvd0hlaWdodCArICdweCdcclxuICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY2hlY2stY29sLWhlYWRlciBjaGVjay1jZWxsIGZyb3plbi1jb2xcIiAqbmdJZj1cInNob3dDaGVja2JveFwiIFxyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwibGVmdDogMHB4XCJcclxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5yb3dzcGFuXT1cInNlYXJjaEFjdGl2ZSA/IDIgOiAxXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjNjY2NjY2JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICd3aGl0ZSdcclxuICAgICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBwbGVhc2UgZG8gbm90IGNoYW5nZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGNoZWNrYm94U2l6ZSAqIDIgKyAncHgnXHJcbiAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjaGVja3dyYXBcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHNlYXJjaEFjdGl2ZSA/IGhlYWRlckZpcnN0Um93SGVpZ2h0ICsgaGVhZGVyU2Vjb25kUm93SGVpZ2h0ICsgJ3B4JyA6IGhlYWRlckZpcnN0Um93SGVpZ2h0ICsgJ3B4J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2lkXT1cIidjaGVjay1jb2wtaGVhZGVyJyArIGlkXCIgWyhuZ01vZGVsKV09XCJoZWFkZXJDaGVja2JveFN0YXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ0b2dnbGVDaGVja0FsbCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZWNrbWFya1wiIFtjbGFzcy5taXhlZF09XCJjaGVja2luZ1N0YXRlPT09MlwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IChoZWFkZXJGaXJzdFJvd0hlaWdodC8yIC0gY2hlY2tib3hTaXplLzIpICsgJ3B4J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGNvbCBvZiB2aXNpYmxlQ29sdW1uczsgbGV0IGNvbF9pbmRleCA9IGluZGV4XCIgW2NsYXNzLmZyb3plbi1jb2xdPVwiY29sX2luZGV4IDwgZnJvemVuXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwiY29sX2luZGV4IDwgZnJvemVuID8gJ2xlZnQ6ICcgKyBmcm96ZW5MZWZ0c1tjb2xfaW5kZXhdICsgJ3B4JyA6ICcnXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjNjY2NjY2JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICd3aGl0ZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICEhbm9QYWRkaW5nQ2VsbCA/ICcwcHggMHB4JyA6ICcwcHggMTJweCdcclxuICAgICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSAtMXB4IGZvciBib3JkZXJCb3R0b20gb2YgaGVhZGVyIGZpcnN0IHJvdyAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLWNhcHRpb25cIiBbY2xhc3MuYXNjZW5kaW5nXT1cImNvbC5zb3J0RGlyZWN0aW9uPT09LTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGVzY2VuZGluZ109XCJjb2wuc29ydERpcmVjdGlvbj09PTFcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ29sdW1uQ2FwdGlvbkNsaWNrTG9jYWwoY29sKVwiIFthcHBUb29sdGlwXT1cImNvbC5jYXB0aW9uIHwgdHJhbnNsYXRlIDogbGFuZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBjb2wud2lkdGggKyAncHgnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAoaGVhZGVyRmlyc3RSb3dIZWlnaHQgLSAxKSArICdweCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaXRlU3BhY2U6ICEhaGVhZGVyV3JhcCA/ICdpbml0aWFsJyA6ICdpbmhlcml0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcidcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2wuY2FwdGlvbiB8IHRyYW5zbGF0ZSA6IGxhbmcgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzaXplclwiIChtb3VzZWRvd24pPVwic3RhcnREcmFnZ2luZygkZXZlbnQsIGNvbCwgZmFsc2UpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNldXApPVwic3RvcERyYWdnaW5nKCRldmVudCwgY29sLCBmYWxzZSlcIiAobW91c2Vtb3ZlKT1cIm1vdmVFdmVudCgkZXZlbnQsIGNvbClcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjaGVjay1jb2wtaGVhZGVyIGNoZWNrLWNlbGxcIiAqbmdJZj1cInNob3dUb29scyAmJiB2aXNpYmxlQ29sdW1ucz8ubGVuZ3RoXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJyM2NjY2NjYnLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnd2hpdGUnXHJcbiAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOiAxMDBweDtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDx0ciAqbmdJZj1cInNlYXJjaEFjdGl2ZVwiIGRhdGEtcm93PVwiMlwiIFtjbGFzcy5oaWRlbl09XCIhISFzZWFyY2hBY3RpdmVcIj5cclxuICAgICAgICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgY29sIG9mIHZpc2libGVDb2x1bW5zOyBsZXQgY29sX2luZGV4ID0gaW5kZXhcIiBbY2xhc3MuZnJvemVuLWNvbF09XCJjb2xfaW5kZXggPCBmcm96ZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJjb2xfaW5kZXggPCBmcm96ZW4gPyAnbGVmdDogJyArIGZyb3plbkxlZnRzW2NvbF9pbmRleF0gKyAncHgnIDogJydcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJyM2NjY2NjYnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3doaXRlJ1xyXG4gICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtzdHlsZV09XCInd2lkdGg6ICcgKyBjb2wud2lkdGggKyAncHg7J1wiICpuZ0lmPVwiISEhY29sLmhpZGVTZWFyY2hCb3hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgc2VhcmNoXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hPYmplY3RbY29sX2luZGV4XS5zZWFyY2hGb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWFyY2goJGV2ZW50LCBjb2xfaW5kZXgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRoIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjNjY2NjY2JyxcclxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3doaXRlJ1xyXG4gICAgICAgICAgICAgICAgfVwiPjwvdGg+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC90aGVhZD5cclxuXHJcbiAgICAgICAgPHRib2R5IFtjbGFzcy5sb2FkaW5nXT1cImxvYWRpbmdcIj5cclxuICAgICAgICAgICAgPGNvcmUtbG9hZGluZy1zdXJmYWNlIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbaGVpZ2h0XT1cInRib2R5aGVpZ2h0IHx8IDUwMFwiPjwvY29yZS1sb2FkaW5nLXN1cmZhY2U+XHJcblxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8dHIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGhpZGRlblRvcEhlaWdodCArICdweCdcclxuICAgICAgICAgICAgICAgICAgICB9XCIgKm5nSWY9XCIhIWxhenlMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogaGlkZGVuVG9wSGVpZ2h0ICsgJ3B4J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBvbGQgYXBwcm9hY2g6IGxldCByb3cgb2YgZGF0YSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHJvdyBvZiB2aXNpYmxlRGF0YTsgbGV0IHJvd19pbmRleD1pbmRleFwiIChjbGljayk9XCJvbkNsaWNrTG9jYWwocm93LCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHRvdWNoZW5kKT1cIm9uUm93VG91Y2hlbmQocm93X2luZGV4K3N0YXJ0Tm9kZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInJvdy5pZCA9PT0gYWN0aXZlUm93ICYmICEhIWRpc2FibGVIaWdobGlnaHRPbkNsaWNrXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJyb3ctaXRlbS10b29sc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWl0ZW0tdG9vbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pdGVtLXRvb2wtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjb3JlLWJ1dHRvbi1ncm91cC12bnMgW3Nob3duSXRlbXNdPVwiaW5saW5lVG9vbEl0ZW1zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ1dHRvbkNsaWNrKT1cIm9uSW5saW5lVG9vbENsaWNrKCRldmVudCwgcm93KVwiPjwvY29yZS1idXR0b24tZ3JvdXAtdm5zPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cInNob3dDaGVja2JveFwiIGNsYXNzPVwiY2hlY2stY2VsbCBmcm96ZW4tY29sXCIgc3R5bGU9XCJsZWZ0OiAwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjaGVja3dyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJjaGVjay1yb3dcIiBbaWRdPVwiJ2NoZWNrLXJvdycgKyAocm93X2luZGV4ICsgc3RhcnROb2RlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY2hlY2tpbmdNb2RlbFtyb3dfaW5kZXgrc3RhcnROb2RlXVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hlY2tpbmdOZ01vZGVsQ2hhbmdlKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZWNrbWFya1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgY29sIG9mIHZpc2libGVDb2x1bW5zOyBsZXQgY29sX2luZGV4ID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZyb3plbi1jb2xdPVwiY29sX2luZGV4IDwgZnJvemVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiBjb2xfaW5kZXggPCBmcm96ZW4gPyBmcm96ZW5MZWZ0c1tjb2xfaW5kZXhdICsgJ3B4JyA6ICcwcHgnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICEhbm9QYWRkaW5nQ2VsbCA/ICcwcHggMHB4JyA6ICcycHggMHB4J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gSU4gTU9TVCBDQVNFUyBXRSBORUVEIFRPIFJFTkRFUiBUSEUgQ0VMTCBXSVRIIFBSSU1JVElWRSBUWVBFIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbY2xhc3Muc2Nyb2xsLXldPVwiYWxsb3dDZWxsU2Nyb2xsWVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICEhY29sLndpZHRoID8gY29sLndpZHRoICsgJ3B4JyA6ICd1bnNldCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogISFjb2wuYWxpZ24gPyBjb2wuYWxpZ24udG9Mb3dlckNhc2UoKSA6ICd1bnNldCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVIZWlnaHQ6IHJvd0hlaWdodCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogISFub1BhZGRpbmdDZWxsID8gJzBweCAwcHgnIDogJzBweCAxMnB4J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIiAqbmdJZj1cIiEhIWNvbD8udGVtcGxhdGVSZWZcIiBbYXBwVG9vbHRpcF09XCJyb3dbY29sLmZpZWxkXSB8IHRhYmxlQ2VsbDogY29sLnBpcGUgOiBsYW5nXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dbY29sLmZpZWxkXSB8IHRhYmxlQ2VsbDogY29sLnBpcGUgOiBsYW5nIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEJVVCBTT01FIFRJTUUgV0UgTkVFRCBUTyBSRU5ERVIgVEhFIENFTEwgV0lUSCBURU1QTEFURSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhIWNvbD8udGVtcGxhdGVSZWZcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogISFjb2wud2lkdGggPyBjb2wud2lkdGggKyAncHgnIDogJ3Vuc2V0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogISFjb2wuYWxpZ24gPyBjb2wuYWxpZ24udG9Mb3dlckNhc2UoKSA6ICd1bnNldCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAhIW5vUGFkZGluZ0NlbGwgPyAnMHB4IDBweCcgOiAnMHB4IDEycHgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiISEhY29sPy50ZW1wbGF0ZVJlZkFsbG93RWRpdE9uUm93QWN0aXZlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbD8udGVtcGxhdGVSZWYhOyBjb250ZXh0OiB7IGNvbnRleHQ6IHJvdyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEhY29sPy50ZW1wbGF0ZVJlZkFsbG93RWRpdE9uUm93QWN0aXZlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbD8udGVtcGxhdGVSZWYhOyBjb250ZXh0OiB7IGNvbnRleHQ6IHJvdywgYWxsb3dFZGl0OiByb3cuaWQgPT09IGFjdGl2ZVJvdyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwic2hvd1Rvb2xzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9vbHMtZ3JvdXAgZC1mbGV4LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHRvb2wgb2YgdG9vbHM7IGxldCB0b29sX2luZGV4ID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiJ3Rvb2xzLWljb24gJyArIHRvb2wuY2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwidG9vbC5kaXNhYmxlZEZuID8gdG9vbC5kaXNhYmxlZEZuIShyb3cpIDogZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaGlkZGVuXT1cInRvb2wuaGlkZGVuRm4gPyB0b29sLmhpZGRlbkZuIShyb3cpIDogZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Ub29sQ2xpY2tMb2NhbChyb3dfaW5kZXgrc3RhcnROb2RlLCB0b29sX2luZGV4KVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPHRyIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBoaWRkZW5Cb3R0b21IZWlnaHQgKyAncHgnXHJcbiAgICAgICAgICAgICAgICAgICAgfVwiICpuZ0lmPVwiISFsYXp5TG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGhpZGRlbkJvdHRvbUhlaWdodCArICdweCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcblxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPC90Ym9keT5cclxuICAgICAgICA8dGZvb3QgKm5nSWY9XCIhIWZvb3RlclwiPlxyXG4gICAgICAgICAgICBGb290ZXJcclxuICAgICAgICA8L3Rmb290PlxyXG4gICAgPC90YWJsZT5cclxuPC9kaXY+Il19
|
|
@@ -4115,7 +4115,7 @@ class CoreButtonVnsComponent {
|
|
|
4115
4115
|
this.subscriptions = [];
|
|
4116
4116
|
}
|
|
4117
4117
|
ngOnChanges(changes) {
|
|
4118
|
-
if (!changes['height']
|
|
4118
|
+
if (!changes['height']?.currentValue) {
|
|
4119
4119
|
//fallback
|
|
4120
4120
|
this.height = 30;
|
|
4121
4121
|
}
|
|
@@ -4770,7 +4770,7 @@ class CoreTableComponent extends CoreFormControlBaseComponent {
|
|
|
4770
4770
|
this.loading = changes['loading'].currentValue;
|
|
4771
4771
|
}
|
|
4772
4772
|
if (changes['columns']) {
|
|
4773
|
-
this.visibleColumns = this.columns
|
|
4773
|
+
this.visibleColumns = this.columns?.filter((c) => !!!c.hidden) || [];
|
|
4774
4774
|
}
|
|
4775
4775
|
if (changes['columnSearchDefaultOpen']) {
|
|
4776
4776
|
this.searchActive = !!changes['columnSearchDefaultOpen'].currentValue;
|