@arsedizioni/ars-utils 18.4.67 → 18.4.68
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.
|
@@ -145,11 +145,9 @@ export class ClipperDocumentComponent extends ClipperDocumentManager {
|
|
|
145
145
|
if (elem) {
|
|
146
146
|
const height = this.dialogService.getCurrentDialogScrollableHeight(['clipper-document-fixed'], window.innerHeight);
|
|
147
147
|
console.log(height);
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
elem?.setAttribute('style', 'height:' + (height - 20) + 'px !important;max-height:' + (height - 20) + 'px !important');
|
|
152
|
-
}
|
|
148
|
+
elem.setAttribute('style', 'padding:0;height:' + height + 'px !important;max-height:' + height + 'px !important');
|
|
149
|
+
elem = document.getElementById('clipper-document-iframe');
|
|
150
|
+
elem?.setAttribute('style', 'height:' + (height - 20) + 'px !important;max-height:' + (height - 20) + 'px !important');
|
|
153
151
|
}
|
|
154
152
|
else {
|
|
155
153
|
this.resize();
|
|
@@ -697,4 +695,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
697
695
|
}], opening: [{
|
|
698
696
|
type: Output
|
|
699
697
|
}] } });
|
|
700
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2NsaXBwZXIudWkvdWkvZG9jdW1lbnQvZG9jdW1lbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2NsaXBwZXIudWkvdWkvZG9jdW1lbnQvZG9jdW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBRVosTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBYSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBSUwsZUFBZSxFQUNmLFlBQVksRUFDWiww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QVksRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDOzhHQTd0QlUsd0JBQXdCO2tHQUF4Qix3QkFBd0IsbUlBbkJuQixXQUFXLENBQUMsWUFBWSxFQUFFLHFLQ3hENUMsd21ZQW9QcUIsZzFXRHRMakIsZ0JBQWdCLG8rSEFDaEIsZUFBZSx3VUFDZixnQkFBZ0IsNFRBQ2hCLGFBQWEsbUxBQ2IsYUFBYSxzMUJBQ2IsZ0JBQWdCLDhCQUNoQixvQkFBb0IseU5BQ3BCLGdCQUFnQix3R0FDaEIsZ0JBQWdCLG9kQUNoQixXQUFXLGdEQUNYLDRCQUE0Qjs7MkZBR25CLHdCQUF3QjtrQkFwQnBDLFNBQVM7MkJBQ0YsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLFlBQVksRUFBRSxFQUFFLG1CQUczQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixvQkFBb0I7d0JBQ3BCLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQixXQUFXO3dCQUNYLDRCQUE0QjtxQkFDN0I7OEJBSTJCLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZTtnQkFDaEIsT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyLCBCcmVha3BvaW50cyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFJlbmRlcmVyMixcclxuICBWaWV3Q2hpbGQsXHJcbiAgaW5qZWN0LFxyXG4gIHNpZ25hbFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ0NvbnRlbnQsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IE1hdERpdmlkZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaXZpZGVyJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XHJcbmltcG9ydCB7IE1hdFByb2dyZXNzQmFyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3MtYmFyJztcclxuaW1wb3J0IHsgTWF0RHJhd2VyLCBNYXRTaWRlbmF2TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHtcclxuICBDbGlwcGVyRG9jdW1lbnRBbmNob3JJbmZvLFxyXG4gIENsaXBwZXJEb2N1bWVudEluZm8sXHJcbiAgQ2xpcHBlckRvY3VtZW50UmVsZXZhbnRzLFxyXG4gIENsaXBwZXJNZXNzYWdlcyxcclxuICBDbGlwcGVyTW9kZWwsXHJcbiAgQ2xpcHBlclF1ZXJ5UmVmZXJlbmNlc01vZGUsXHJcbiAgQ2xpcHBlclNlYXJjaFBhcmFtc1xyXG59IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvY2xpcHBlci5jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIFNhZmVVcmxQaXBlLFxyXG4gIFN5c3RlbVV0aWxzLFxyXG4gIFRoZW1lVHlwZVxyXG59IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvY29yZSc7XHJcbmltcG9ydCB7IEZpbGVQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy91aS5hcHBsaWNhdGlvbic7XHJcbmltcG9ydCB7IFN1YmplY3QsIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENsaXBwZXJSZWZlcmVuY2VEaWFsb2dSZXN1bHQsIENsaXBwZXJSZWZlcmVuY2VzQ29tcG9uZW50IH0gZnJvbSAnLi4vcmVmZXJlbmNlcy9yZWZlcmVuY2VzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENsaXBwZXJEb2N1bWVudEluZGV4Q29tcG9uZW50LCBDbGlwcGVyRG9jdW1lbnRJbmRleERpYWxvZ1Jlc3VsdCB9IGZyb20gJy4uL2RvY3VtZW50LWluZGV4L2RvY3VtZW50LWluZGV4LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENsaXBwZXJEb2N1bWVudE1hbmFnZXIgfSBmcm9tICcuLi9kb2N1bWVudC1tYW5hZ2VyL2RvY3VtZW50LW1hbmFnZXInO1xyXG5pbXBvcnQgeyBGbGV4TGF5b3V0TW9kdWxlIH0gZnJvbSAnQG5nYnJhY2tldC9uZ3gtbGF5b3V0JztcclxuaW1wb3J0IHsgQ2xpcHBlckRvY3VtZW50c1V0aWxzIH0gZnJvbSAnLi4vLi4vZG9jdW1lbnRzJztcclxuaW1wb3J0IHsgQ2xpcHBlckRvY3VtZW50TWVudUNvbXBvbmVudCB9IGZyb20gJy4uL2RvY3VtZW50LW1lbnUvZG9jdW1lbnQtbWVudS5jb21wb25lbnQnO1xyXG5cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2xpcHBlckRvY3VtZW50RGlhbG9nRGF0YSB7XHJcbiAgc2VsZWN0aW9uTW9kZTogbnVtYmVyO1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgcXVlcnk/OiBzdHJpbmcgfCBudWxsO1xyXG4gIHRoZW1lPzogVGhlbWVUeXBlIHwgbnVsbDtcclxuXHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIGhvc3Q6IHsgJ0JpbmQnOiBTeXN0ZW1VdGlscy5nZW5lcmF0ZVVVSUQoKSB9LFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kb2N1bWVudC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZG9jdW1lbnQuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIEZsZXhMYXlvdXRNb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIE1hdE1lbnVNb2R1bGUsXHJcbiAgICBNYXREaXZpZGVyTW9kdWxlLFxyXG4gICAgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUsXHJcbiAgICBNYXREaWFsb2dDb250ZW50LFxyXG4gICAgTWF0U2lkZW5hdk1vZHVsZSxcclxuICAgIFNhZmVVcmxQaXBlLFxyXG4gICAgQ2xpcHBlckRvY3VtZW50TWVudUNvbXBvbmVudFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbGlwcGVyRG9jdW1lbnRDb21wb25lbnQgZXh0ZW5kcyBDbGlwcGVyRG9jdW1lbnRNYW5hZ2VyXHJcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQFZpZXdDaGlsZCgncmVsZXZhbnRzUGFuZScpIHJlbGV2YW50c1BhbmUhOiBNYXREcmF3ZXI7XHJcbiAgQE91dHB1dCgpIGNsb3NpbmcgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9wZW5pbmcgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgcHJpdmF0ZSBicmVha3BvaW50T2JzZXJ2ZXIgPSBpbmplY3QoQnJlYWtwb2ludE9ic2VydmVyKTtcclxuICBwcml2YXRlIHJlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XHJcbiAgcHJpdmF0ZSByZW5kZXJlckxpc3RlbmVyMTogYW55O1xyXG4gIHByaXZhdGUgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcbiAgcHJpdmF0ZSBkaWFsb2dSZWYgPSBpbmplY3QoTWF0RGlhbG9nUmVmPENsaXBwZXJEb2N1bWVudENvbXBvbmVudD4pO1xyXG4gIHByb3RlY3RlZCBkaWFsb2dEYXRhOiBDbGlwcGVyRG9jdW1lbnREaWFsb2dEYXRhID0gaW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgPz8geyBtb2RlOiBDbGlwcGVyUXVlcnlSZWZlcmVuY2VzTW9kZS5SZWZlcmVuY2VzSW4gfTtcclxuICBwcm90ZWN0ZWQgdXJsID0gc2lnbmFsPHN0cmluZz4obnVsbCk7XHJcbiAgcHJvdGVjdGVkIHRpdGxlID0gc2lnbmFsPHN0cmluZz4obnVsbCk7XHJcbiAgcHJvdGVjdGVkIGJ1c3kgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHByb3RlY3RlZCBsYXN0UXVlcnk/OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBwcm90ZWN0ZWQgbGFzdERvY3VtZW50PzogQ2xpcHBlckRvY3VtZW50SW5mbyB8IG51bGwgPSB7fTtcclxuICBwcm90ZWN0ZWQgcmVsZXZhbnRzOiBDbGlwcGVyRG9jdW1lbnRSZWxldmFudHMgPSB7XHJcbiAgICBpdGVtczogW10sXHJcbiAgICBoaXRzOiAwLFxyXG4gICAgaGl0OiAwLFxyXG4gICAgbWluaW11bVNjb3JlOiAxMDAsXHJcbiAgfTtcclxuICBwcm90ZWN0ZWQgcmVsZXZhbnRzUGFuZUhhc0JhY2tkcm9wOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJvdGVjdGVkIHJlbGV2YW50c1BhbmVDbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcm90ZWN0ZWQgcmVsZXZhbnRzQnVzeSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgcHJvdGVjdGVkIGhhc1JlbGV2YW50cyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgcHJvdGVjdGVkIHNlbGVjdGlvbk1vZGU/OiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5kaWFsb2dEYXRhKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZSA9IHRoaXMuZGlhbG9nRGF0YS5zZWxlY3Rpb25Nb2RlO1xyXG4gICAgICBpZiAodGhpcy5kaWFsb2dEYXRhLmlkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID1cclxuICAgICAgICAgIHRoaXMuY2xpcHBlclNlcnZpY2Uuc2VydmljZVVyaSArXHJcbiAgICAgICAgICBcIi9kb2N1bWVudHMvcmVuZGVyLz9xdWVyeT1cIiArXHJcbiAgICAgICAgICAodGhpcy5kaWFsb2dEYXRhLnF1ZXJ5ID8/ICcnKSArXHJcbiAgICAgICAgICBcIiZ0aGVtZT1cIiArXHJcbiAgICAgICAgICB0aGlzLmRpYWxvZ0RhdGEudGhlbWUgK1xyXG4gICAgICAgICAgXCImaWQ9XCIgK1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dEYXRhLmlkXHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZUJ5VXJsKHVybCk7XHJcblxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTGlzdGVuIHRvIHdpbmRvdyBtZXNzYWdlc1xyXG4gICAgdGhpcy5yZW5kZXJlckxpc3RlbmVyMSA9IHRoaXMucmVuZGVyZXIubGlzdGVuKFxyXG4gICAgICAnd2luZG93JyxcclxuICAgICAgJ21lc3NhZ2UnLFxyXG4gICAgICAoZTogRXZlbnQpID0+IHtcclxuICAgICAgICBsZXQgZXZlbnQgPSBlIGFzIE1lc3NhZ2VFdmVudDtcclxuICAgICAgICBpZiAoIWV2ZW50KSByZXR1cm47XHJcbiAgICAgICAgaWYgKGV2ZW50LmRhdGEpIHtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShldmVudC5kYXRhKTtcclxuICAgICAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgICAgICBzd2l0Y2ggKGRhdGEudHlwZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnbmF2aWdhdGVkJzpcclxuICAgICAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZWQoXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5pZCxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLnRpdGxlMSxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLnRpdGxlMixcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLm1vZGVsLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEubW9kdWxlLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEubW9kdWxlTmFtZSxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLmRhdGUsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5udW1iZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5hdXRob3IsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5vcmlnaW4sXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5vcmlnaW5EZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLmJhZyxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLnZhbGlkaXR5SW5mbyxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLmV4cGlyaW5nSW5mbyxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLnByaW1hcnlJZCxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLnByaW1hcnlNb2RlbCxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLnNlY29uZGFyeUlkLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuaXNUcmlhbFxyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ25hdmlnYXRlJzpcclxuICAgICAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZShkYXRhLnVybCk7XHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAncmVmZXJlbmNlcyc6XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMub3BlblJlZmVyZW5jZXMoXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5pZCxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLm1vZGUsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5tb2RlbCxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLmFuY2hvcixcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLmFuY2hvclRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEudXBkYXRlXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnaGl0cyc6XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucmVsZXZhbnRzLmhpdHMgPSBkYXRhLnRvdGFsO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVJlbGV2YW50cygpO1xyXG4gICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgICB0aGlzLnJlc2l6ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGNhdGNoIHtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcblxyXG4gICAgLy8gT2JzZXJ2ZSBsYXlvdXQgY2hhbmdlc1xyXG4gICAgdGhpcy5icmVha3BvaW50T2JzZXJ2ZXJcclxuICAgICAgLm9ic2VydmUoW1xyXG4gICAgICAgIEJyZWFrcG9pbnRzLlhTbWFsbCxcclxuICAgICAgICBCcmVha3BvaW50cy5TbWFsbCxcclxuICAgICAgICBCcmVha3BvaW50cy5NZWRpdW0sXHJcbiAgICAgICAgQnJlYWtwb2ludHMuTGFyZ2UsXHJcbiAgICAgICAgQnJlYWtwb2ludHMuWExhcmdlLFxyXG4gICAgICBdKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgICBmb3IgKGNvbnN0IHF1ZXJ5IG9mIE9iamVjdC5rZXlzKHJlc3VsdC5icmVha3BvaW50cykpIHtcclxuICAgICAgICAgIGlmIChyZXN1bHQuYnJlYWtwb2ludHNbcXVlcnldKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlUmVsZXZhbnRzUGFuZVZpc2liaWxpdHkoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIC8vIFJlYWN0IHRvIHdpbmRvdyBzaXplIGNoYW5nZVxyXG4gICAgZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZXNpemUoKTtcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLnJlc2l6ZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlLm5leHQoKTtcclxuICAgIHRoaXMudW5zdWJzY3JpYmUuY29tcGxldGUoKTtcclxuICAgIGlmICh0aGlzLnJlbmRlcmVyTGlzdGVuZXIxKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXJMaXN0ZW5lcjEoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBSZXNpemUgXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZXNpemUoKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgbGV0IGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xpcHBlci1kb2N1bWVudC1zY3JvbGxhYmxlJyk7XHJcbiAgICAgIGlmIChlbGVtKSB7XHJcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gdGhpcy5kaWFsb2dTZXJ2aWNlLmdldEN1cnJlbnREaWFsb2dTY3JvbGxhYmxlSGVpZ2h0KFxyXG4gICAgICAgICAgWydjbGlwcGVyLWRvY3VtZW50LWZpeGVkJ10sXHJcbiAgICAgICAgICB3aW5kb3cuaW5uZXJIZWlnaHRcclxuICAgICAgICApO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGhlaWdodCk7XHJcbiAgICAgICAgaWYgKGhlaWdodCAhPSBlbGVtLmNsaWVudEhlaWdodCkge1xyXG4gICAgICAgICAgZWxlbS5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ3BhZGRpbmc6MDtoZWlnaHQ6JyArIGhlaWdodCArICdweCAhaW1wb3J0YW50O21heC1oZWlnaHQ6JyArIGhlaWdodCArICdweCAhaW1wb3J0YW50Jyk7XHJcbiAgICAgICAgICBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NsaXBwZXItZG9jdW1lbnQtaWZyYW1lJyk7XHJcbiAgICAgICAgICBlbGVtPy5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2hlaWdodDonICsgKGhlaWdodCAtIDIwKSArICdweCAhaW1wb3J0YW50O21heC1oZWlnaHQ6JyArIChoZWlnaHQgLSAyMCkgKyAncHggIWltcG9ydGFudCcpO1xyXG4gICAgICAgIH0gXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yZXNpemUoKTtcclxuICAgICAgfVxyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIC8qKlxyXG4gKiBTaG93IGhpZGUgcmVsZXZhbnRzIHBhbmUgbWFudWFsbHlcclxuICovXHJcbiAgcHJvdGVjdGVkIHRvZ2dsZVJlbGV2YW50c1BhbmUoKSB7XHJcbiAgICB0aGlzLnJlbGV2YW50c1BhbmVDbG9zZWQgPSAhdGhpcy5yZWxldmFudHNQYW5lQ2xvc2VkO1xyXG4gICAgdGhpcy5yZWxldmFudHNQYW5lPy50b2dnbGUoKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIGZpbHRlciBwYW5lIHZpc2liaWxpdHlcclxuICAgKi9cclxuICBwcml2YXRlIGhhbmRsZVJlbGV2YW50c1BhbmVWaXNpYmlsaXR5KCkge1xyXG4gICAgaWYgKHRoaXMucmVsZXZhbnRzUGFuZSkge1xyXG4gICAgICBpZiAodGhpcy5icmVha3BvaW50T2JzZXJ2ZXIuaXNNYXRjaGVkKEJyZWFrcG9pbnRzLlhTbWFsbCkgfHxcclxuICAgICAgICB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlci5pc01hdGNoZWQoQnJlYWtwb2ludHMuU21hbGwpIHx8XHJcbiAgICAgICAgdGhpcy5icmVha3BvaW50T2JzZXJ2ZXIuaXNNYXRjaGVkKEJyZWFrcG9pbnRzLk1lZGl1bSkpIHtcclxuICAgICAgICBpZiAodGhpcy5yZWxldmFudHNQYW5lLm9wZW5lZCkge1xyXG4gICAgICAgICAgdGhpcy5yZWxldmFudHNQYW5lLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVsZXZhbnRzUGFuZS5tb2RlID0gJ292ZXInO1xyXG4gICAgICAgIHRoaXMucmVsZXZhbnRzUGFuZS5kaXNhYmxlQ2xvc2UgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJlbGV2YW50c1BhbmVIYXNCYWNrZHJvcCA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnJlbGV2YW50c1BhbmUub3BlbmVkICYmICF0aGlzLnJlbGV2YW50c1BhbmVDbG9zZWQgJiYgdGhpcy5oYXNSZWxldmFudHMoKSkge1xyXG4gICAgICAgICAgdGhpcy5yZWxldmFudHNQYW5lLm9wZW4oKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMucmVsZXZhbnRzUGFuZS5vcGVuZWQgJiYgdGhpcy5yZWxldmFudHNQYW5lQ2xvc2VkKSB7XHJcbiAgICAgICAgICB0aGlzLnJlbGV2YW50c1BhbmUuY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yZWxldmFudHNQYW5lLm1vZGUgPSAnc2lkZSc7XHJcbiAgICAgICAgdGhpcy5yZWxldmFudHNQYW5lLmRpc2FibGVDbG9zZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5yZWxldmFudHNQYW5lSGFzQmFja2Ryb3AgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xvc2UgZGlhbG9nXHJcbiAgICovXHJcblxyXG4gIHByb3RlY3RlZCBjbG9zZSgpIHtcclxuICAgIGlmICh0aGlzLmNsb3NpbmcpIHtcclxuICAgICAgdGhpcy5jbG9zaW5nLmVtaXQoKTtcclxuICAgIH1cclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBOYXZpZ2F0ZSB0byBhIG5ldyBkb2N1bWVudFxyXG4gICAqIEBwYXJhbSBpZCA6IHRoZSBkb2N1bWVudCBpZFxyXG4gICAqL1xyXG4gIG5hdmlnYXRlKGlkOiBzdHJpbmcpIHtcclxuICAgIGlmICghaWQgfHwgaWQubGVuZ3RoID09IDApXHJcbiAgICAgIHJldHVybjsgLy8gTm90aGluZyB0byBkb1xyXG5cclxuICAgIGlmIChpZC5pbmRleE9mKCc/JykgIT09IC0xKSB7XHJcbiAgICAgIGlmIChpZC5zdGFydHNXaXRoKCcvYXBpJykpXHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZUJ5VXJsKHRoaXMuY2xpcHBlclNlcnZpY2Uuc2VydmljZVVyaSArIGlkLnN1YnN0cmluZyg0KSk7XHJcbiAgICAgIGVsc2UgaWYgKCFpZC5zdGFydHNXaXRoKHRoaXMuY2xpcHBlclNlcnZpY2Uuc2VydmljZVVyaSkpXHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZUJ5VXJsKHRoaXMuY2xpcHBlclNlcnZpY2Uuc2VydmljZVVyaSArIGlkKTtcclxuICAgICAgZWxzZSB0aGlzLm5hdmlnYXRlQnlVcmwoaWQpO1xyXG4gICAgfSBlbHNlXHJcbiAgICAgIHRoaXMubmF2aWdhdGVCeVVybChcclxuICAgICAgICB0aGlzLmNsaXBwZXJTZXJ2aWNlLnNlcnZpY2VVcmkgK1xyXG4gICAgICAgIFwiL2RvY3VtZW50cy9yZW5kZXIvP3F1ZXJ5PSZpZD1cIiArIGlkKTtcclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBOYXZpZ2F0ZSBieSB1cmxcclxuICAgKiBAcGFyYW0gdXJsIDogdGhlIHVybCAgdG8gbmF2aWdhdGUgdG9cclxuICAgKi9cclxuICBuYXZpZ2F0ZUJ5VXJsKHVybDogc3RyaW5nKSB7XHJcbiAgICBpZiAoIXVybCB8fCB1cmwubGVuZ3RoID09PSAwIHx8IHVybCA9PT0gJ2Fib3V0OmJsYW5rJylcclxuICAgICAgcmV0dXJuOyAvLyBOb3RoaW5nIHRvIGRvXHJcbiAgICAvLyBDbGVhbiB1cmwsIHRha2Ugb25seSB0aGUgZmlyc3QgYW5jaG9yXHJcbiAgICBsZXQgcGFydHMgPSB1cmwuc3BsaXQoJyMnKTtcclxuICAgIHVybCA9IHBhcnRzWzBdO1xyXG4gICAgaWYgKHBhcnRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgdXJsICs9ICcjJyArIHBhcnRzWzFdO1xyXG4gICAgfVxyXG4gICAgLy8gSGFuZGxlIGZyZWUgdGV4dCBxdWVyeVxyXG4gICAgbGV0IHF1ZXJ5ID0gJyc7XHJcbiAgICBsZXQgcCA9IHVybC5pbmRleE9mKCdxdWVyeT0nKTtcclxuICAgIGlmIChwICE9PSAtMSkge1xyXG4gICAgICBwICs9IDY7XHJcbiAgICAgIHdoaWxlICh1cmwubGVuZ3RoID4gcCAmJiB1cmxbcF0gIT09ICcmJyAmJiB1cmxbcF0gIT09ICcjJykge1xyXG4gICAgICAgIHF1ZXJ5ICs9IHVybFtwKytdO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChxdWVyeS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgLy8gUmVzZXRcclxuICAgICAgICB0aGlzLnJlbGV2YW50cy5oaXQgPSAwO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAvLyBBc3NpZ24gcXVlcnkgdG8gZW5hYmxlIHNlYXJjaCBmb3IgZnJhZ21lbnRzXHJcbiAgICAgICAgICB0aGlzLmxhc3RRdWVyeSA9IGRlY29kZVVSSUNvbXBvbmVudChlbmNvZGVVUklDb21wb25lbnQocXVlcnkpKTtcclxuICAgICAgICB9IGNhdGNoIHtcclxuICAgICAgICAgIHRoaXMubGFzdFF1ZXJ5ID0gcXVlcnk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBUaGVtZVxyXG4gICAgaWYgKHVybC5pbmRleE9mKCd0aGVtZT0nKSA9PT0gLTEpIHtcclxuICAgICAgcCA9IHVybC5pbmRleE9mKCdpZD0nKTtcclxuICAgICAgaWYgKHAgIT09IC0xKSB7XHJcbiAgICAgICAgdXJsID0gdXJsLnN1YnN0cmluZygwLCBwKSArICd0aGVtZT0nICsgdGhpcy5kaWFsb2dEYXRhLnRoZW1lICsgJyYnICsgdXJsLnN1YnN0cmluZyhwKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxldCBuYXZpZ2F0ZVRvRmlsZSA9IHVybC5pbmRleE9mKCcmZmlsZT10cnVlJykgIT09IC0xO1xyXG4gICAgaWYgKG5hdmlnYXRlVG9GaWxlID09PSB0cnVlKSB7XHJcbiAgICAgIC8vIFByZXZpZXdcclxuICAgICAgdGhpcy5wcmV2aWV3RmlsZSh1cmwpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jbGlwcGVyU2VydmljZS5wcmVSZW5kZXIoKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIC8vIEJlZ2luIGxvYWRpbmcgb25seSBpZiBub3QgZG93bmxvYWRpbmcgYSBmaWxlXHJcbiAgICAgICAgdGhpcy5idXN5LnNldCh1cmwuaW5kZXhPZignZG9jdW1lbnRzL3JlbmRlci9pdGVtJykgPT09IC0xKTtcclxuICAgICAgICAvLyBOYXZpZ2F0ZVxyXG4gICAgICAgIHRoaXMudXJsLnNldCh1cmwpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5hdmlnYXRlZCBjYWxsYmFjayAgIFxyXG4gICAqL1xyXG4gIHB1YmxpYyBuYXZpZ2F0ZWQoXHJcbiAgICBpZDogc3RyaW5nLCAvLyBEb2N1bW5lbnQgaWRcclxuICAgIHRpdGxlMTogc3RyaW5nLCAvLyBUaXRsZSAxXHJcbiAgICB0aXRsZTI6IHN0cmluZywgLy8gVGl0bGUgMlxyXG4gICAgbW9kZWw6IG51bWJlciwgLy8gTW9kZWxcclxuICAgIG1vZHVsZUlkOiBudW1iZXIsIC8vIE1vZHVsZVxyXG4gICAgbW9kdWxlTmFtZTogc3RyaW5nLCAvLyBNb2R1bGUgbmFtZVxyXG4gICAgZGF0ZTogc3RyaW5nLCAvLyBEYXRlXHJcbiAgICBudW1iZXI6IHN0cmluZywgLy8gTnVtYmVyXHJcbiAgICBhdXRob3I6IHN0cmluZywgLy8gQXV0aG9yXHJcbiAgICBvcmlnaW46IHN0cmluZywgLy8gT3JpZ2luXHJcbiAgICBvcmlnaW5EZXNjcmlwdGlvbjogc3RyaW5nLCAvLyBPcmlnaW4gZGVzY3JpcHRpb25cclxuICAgIGJhZzogc3RyaW5nLCAvLyBGbGFnc1xyXG4gICAgdmFsaWRpdHlJbmZvOiBzdHJpbmcsIC8vIEluZm8gYWJvdXQgdmFsaWRpdHlcclxuICAgIGV4cGlyaW5nSW5mbzogc3RyaW5nLCAvLyBJbmZvIGFib3V0IGV4cGlyaW5nIGRhdGVcclxuICAgIHByaW1hcnlJZDogc3RyaW5nLCAvLyBQcmltYXJ5IGRvY3VtZW50IGlkXHJcbiAgICBwcmltYXJ5TW9kZWw6IG51bWJlciwgLy8gUHJpbWFyeSBkb2N1bWVudCBtb2RlbFxyXG4gICAgc2Vjb25kYXJ5SWQ6IHN0cmluZywgLy8gU2Vjb25kYXJ5IGRvY3VtZW50IGlkXHJcbiAgICBpc1RyaWFsOiBib29sZWFuIC8vIFRydWUgaWYgaXMgYSB0cmlhbCByZXF1ZXN0XHJcbiAgKSB7XHJcbiAgICAvLyBDaGVjayBmb3Igc2Vzc2lvbiBleHBpcmluZ1xyXG4gICAgaWYgKHRpdGxlMSA9PT0gJ1Nlc3Npb25lIG5vbiB2YWxpZGEnKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZVxyXG4gICAgICAgIC5lcnJvcih0aXRsZTIsIG51bGwsIHRpdGxlMSwgJ0FjY2VkaSBkaSBudW92bycpXHJcbiAgICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnbG9naW4nXSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTdG9yZSBkYXRhXHJcbiAgICBpZiAoIXRoaXMubGFzdERvY3VtZW50KSB7XHJcbiAgICAgIHRoaXMubGFzdERvY3VtZW50ID0ge307XHJcbiAgICB9XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5pZCA9IGlkO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQuZG9jdW1lbnRJZCA9IGlkO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQudGl0bGUxID0gdGl0bGUxID8gU3lzdGVtVXRpbHMudXJsRGVjb2RlKHRpdGxlMSkgOiBudWxsO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQudGl0bGUyID0gdGl0bGUyID8gU3lzdGVtVXRpbHMudXJsRGVjb2RlKHRpdGxlMikgOiBudWxsO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQubW9kZWwgPSBtb2RlbDtcclxuICAgIHRoaXMubGFzdERvY3VtZW50Lm1vZHVsZSA9IG1vZHVsZUlkO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQubW9kdWxlTmFtZSA9IG1vZHVsZU5hbWU7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5kYXRlID0gbmV3IERhdGUoZGF0ZSk7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5udW1iZXIgPSBudW1iZXI7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5hdXRob3IgPSBhdXRob3I7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5vcmlnaW4gPSBvcmlnaW47XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5vcmlnaW5EZXNjcmlwdGlvbiA9IG9yaWdpbkRlc2NyaXB0aW9uO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQuYmFnID0gYmFnO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQudmFsaWRpdHlJbmZvID0gdmFsaWRpdHlJbmZvO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQucHJpbWFyeUlkID0gcHJpbWFyeUlkO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQucHJpbWFyeU1vZGVsID0gcHJpbWFyeU1vZGVsO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQuaGFzUHJpbWFyeSA9XHJcbiAgICAgIHByaW1hcnlJZCAmJlxyXG4gICAgICAobW9kZWwgPT09IENsaXBwZXJNb2RlbC5BZ2dpb3JuYW1lbnRvTm9ybWF0aXZvIHx8XHJcbiAgICAgICAgbW9kZWwgPT09IENsaXBwZXJNb2RlbC5Ob3JtYXRpdmFWaWdlbnRlKTtcclxuICAgIGlmIChwcmltYXJ5SWQpIHtcclxuICAgICAgdmFyIGRlc2NyaXB0aW9uID0gJyc7XHJcbiAgICAgIHN3aXRjaCAocHJpbWFyeU1vZGVsID8gcHJpbWFyeU1vZGVsIDogbW9kZWwpIHtcclxuICAgICAgICBjYXNlIENsaXBwZXJNb2RlbC5Ob3JtYXRpdmFWaWdlbnRlOlxyXG4gICAgICAgICAgZGVzY3JpcHRpb24gPSAnVGVzdG8gdmlnZW50ZSc7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENsaXBwZXJNb2RlbC5BZ2dpb3JuYW1lbnRvTm9ybWF0aXZvOlxyXG4gICAgICAgICAgZGVzY3JpcHRpb24gPSAnVGVzdG8gc3Rvcmljbyc7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENsaXBwZXJNb2RlbC5TY2FkZW56ZTpcclxuICAgICAgICAgIGRlc2NyaXB0aW9uID0gJ1NjYWRlbnphJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ2xpcHBlck1vZGVsLkNvb3JkaW5hbWVudG86XHJcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9ICdNb2RpZmljYSc7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgZGVzY3JpcHRpb24gPSAnQ29sbGVnYW1lbnRvJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubGFzdERvY3VtZW50LnByaW1hcnlEZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQuc2Vjb25kYXJ5SWQgPSBzZWNvbmRhcnlJZDtcclxuICAgIHRoaXMubGFzdERvY3VtZW50LmlzVHJpYWwgPSBpc1RyaWFsO1xyXG5cclxuICAgIC8vIEhhbmRsZSBleHBpcmluZyBpbmZvXHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5leHBpcmluZ0Rlc2NyaXB0aW9uID0gbnVsbDtcclxuICAgIGlmIChleHBpcmluZ0luZm8pIHtcclxuICAgICAgbGV0IHBhcnRzID0gZXhwaXJpbmdJbmZvLnNwbGl0KCcjJyk7XHJcbiAgICAgIGlmIChwYXJ0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgbGV0IHBhcnRzMiA9IHBhcnRzWzBdLnNwbGl0KCd8Jyk7XHJcbiAgICAgICAgaWYgKHBhcnRzMi5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgdGhpcy5sYXN0RG9jdW1lbnQuZXhwaXJpbmdEYXRlID0gbmV3IERhdGUocGFydHMyWzBdKTtcclxuICAgICAgICBpZiAocGFydHMyLmxlbmd0aCA+IDEpIHRoaXMubGFzdERvY3VtZW50LmV4cGlyaW5nSW5mbyA9IHBhcnRzMlsxXTtcclxuICAgICAgICBpZiAocGFydHMyLmxlbmd0aCA+IDIpXHJcbiAgICAgICAgICB0aGlzLmxhc3REb2N1bWVudC5leHBpcmluZ0luZm8gKz0gJ3wnICsgcGFydHMyWzJdO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChwYXJ0cy5sZW5ndGggPiAxKSB0aGlzLmxhc3REb2N1bWVudC5leHBpcmluZ0Rlc2NyaXB0aW9uID0gcGFydHNbMV07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU2V0IHRpdGxlXHJcbiAgICB0aGlzLnRpdGxlLnNldCh0aGlzLmxhc3REb2N1bWVudC50aXRsZTFcclxuICAgICAgPyB0aGlzLmxhc3REb2N1bWVudC50aXRsZTFcclxuICAgICAgOiB0aGlzLmxhc3REb2N1bWVudC50aXRsZTIpO1xyXG5cclxuICAgIC8vIEdldCBsYXN0IGRvY3VtZW50IHVwZGF0ZVxyXG4gICAgdGhpcy5jbGlwcGVyU2VydmljZS5sYXN0VXBkYXRlKHRoaXMubGFzdERvY3VtZW50LmlkKS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgIGlmIChyLnN1Y2Nlc3MpIHtcclxuICAgICAgICB0aGlzLmxhc3REb2N1bWVudC5sYXN0VXBkYXRlID0gci52YWx1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gTm90aWZ5IG5hdmlnYXRpb24gaGFzIGNvbXBsZXRlZFxyXG4gICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLnNlbmRNZXNzYWdlKENsaXBwZXJNZXNzYWdlcy5ET0NVTUVOVF9OQVZJR0FURUQsIHtcclxuICAgICAgZG9jdW1lbnQ6IFN5c3RlbVV0aWxzLmNsb25lKHRoaXMubGFzdERvY3VtZW50KSxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYnVzeS5zZXQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogZ290byBwcmV2aW91cyBkb2N1bWVudCBpbiBoaXN0b3J5XHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGJhY2soKSB7XHJcbiAgICBsZXQgZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbGlwcGVyLWRvY3VtZW50LWlmcmFtZScpIGFzIGFueTtcclxuICAgIGY/LmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoJ3tcInR5cGVcIjogXCJiYWNrXCJ9JywgJyonKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdvdG8gbmV4dCBkb2N1bWVudCBpbiBoaXN0b3J5XHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGZvcndhcmQoKSB7XHJcbiAgICBsZXQgZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbGlwcGVyLWRvY3VtZW50LWlmcmFtZScpIGFzIGFueTtcclxuICAgIGY/LmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoJ3tcInR5cGVcIjogXCJmb3J3YXJkXCJ9JywgJyonKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogR290byBuZXh0IHJlbGV2YW50IGl0ZW1cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgbmV4dFJlbGV2YW50KCkge1xyXG4gICAgbGV0IGkgPSB0aGlzLnJlbGV2YW50cy5oaXQgKyAxO1xyXG4gICAgaWYgKGkgPD0gdGhpcy5yZWxldmFudHMuaGl0cykge1xyXG4gICAgICBsZXQgZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbGlwcGVyLWRvY3VtZW50LWlmcmFtZScpIGFzIGFueTtcclxuICAgICAgZj8uY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZSgne1widHlwZVwiOiBcInJlbGV2YW50XCIsIFwidmFsdWVcIjogXCJuZXh0XCJ9JywgJyonKTtcclxuICAgICAgdGhpcy5yZWxldmFudHMuaGl0Kys7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHb3RvIHByZXZpb3VzIHJlbGV2YW50IGl0ZW1cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgcHJldmlvdXNSZWxldmFudCgpIHtcclxuICAgIGxldCBpID0gdGhpcy5yZWxldmFudHMuaGl0IC0gMTtcclxuICAgIGlmIChpID4gMCkge1xyXG4gICAgICBsZXQgZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbGlwcGVyLWRvY3VtZW50LWlmcmFtZScpIGFzIGFueTtcclxuICAgICAgZj8uY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZShcclxuICAgICAgICAne1widHlwZVwiOiBcInJlbGV2YW50XCIsIFwidmFsdWVcIjogXCJwcmV2aW91c1wifScsXHJcbiAgICAgICAgJyonXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMucmVsZXZhbnRzLmhpdC0tO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR290byBhIHJlbGV2YW50IGl0ZW1cclxuICAgKiBAcGFyYW0gaXRlbSA6IHRoZSBpdGVtIHRvIGdvIHRvXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGdvdG9SZWxldmFudChpdGVtOiBDbGlwcGVyRG9jdW1lbnRBbmNob3JJbmZvKSB7XHJcbiAgICBpZiAoaXRlbS50eXBlID09PSAyMCkge1xyXG4gICAgICB3aW5kb3cub3BlbihcclxuICAgICAgICB0aGlzLmNsaXBwZXJTZXJ2aWNlLnNlcnZpY2VVcmkgK1xyXG4gICAgICAgIFwiL2RvY3VtZW50cy9yZW5kZXIvaXRlbS8/dGhlbWU9XCIgKyB0aGlzLmRpYWxvZ0RhdGEudGhlbWUgKyBcIiZpZD1cIiArIGl0ZW0uZG9jdW1lbnRJZCxcclxuICAgICAgICAnX2JsYW5rJ1xyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IGYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xpcHBlci1kb2N1bWVudC1pZnJhbWUnKSBhcyBhbnk7XHJcbiAgICAgIGY/LmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoXHJcbiAgICAgICAgJ3tcInR5cGVcIjogXCJyZWxldmFudFwiLCBcInZhbHVlXCI6IFwiJyArIGl0ZW0udXJpICsgJ1wifScsXHJcbiAgICAgICAgJyonXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGUgcmVsZXZhbnQgaXRlbXNcclxuICAgKi9cclxuICBwcml2YXRlIHVwZGF0ZVJlbGV2YW50cygpIHtcclxuICAgIGlmIChcclxuICAgICAgIXRoaXMubGFzdFF1ZXJ5IHx8XHJcbiAgICAgIHRoaXMubGFzdFF1ZXJ5Lmxlbmd0aCA9PT0gMCB8fFxyXG4gICAgICB0aGlzLmxhc3RRdWVyeSA9PT0gJyAnXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5oYW5kbGVSZWxldmFudHNQYW5lVmlzaWJpbGl0eSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IHBhcmFtcyA9IG5ldyBDbGlwcGVyU2VhcmNoUGFyYW1zKCk7XHJcbiAgICAgIHBhcmFtcy5pZCA9IHRoaXMubGFzdERvY3VtZW50LmRvY3VtZW50SWQgPz8gdGhpcy5sYXN0RG9jdW1lbnQuaWQ7XHJcbiAgICAgIHBhcmFtcy50ZXh0ID0gdGhpcy5sYXN0UXVlcnk7XHJcbiAgICAgIHBhcmFtcy5jb3VudCA9IDE7XHJcbiAgICAgIHRoaXMuY2xpcHBlclNlcnZpY2VcclxuICAgICAgICAucXVlcnkocGFyYW1zKVxyXG4gICAgICAgIC5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgICBpZiAoIXIuc3VjY2VzcykgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKHIubWVzc2FnZSk7XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IG1pbmltdW1TY29yZSA9IDA7XHJcbiAgICAgICAgICAgIGlmIChyLnZhbHVlPy5pdGVtcyAmJiByLnZhbHVlPy5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgci52YWx1ZS5pdGVtc1swXS5hbmNob3JzLmZvckVhY2gobiA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgc2NvcmUgPSBuLnNjb3JlO1xyXG4gICAgICAgICAgICAgICAgaWYgKHNjb3JlID4gNykgc2NvcmUgLT0gNztcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNjb3JlID4gNSkgc2NvcmUgLT0gNTtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNjb3JlID4gMykgc2NvcmUgLT0gMztcclxuICAgICAgICAgICAgICAgIGlmIChtaW5pbXVtU2NvcmUgPiBzY29yZSkgbWluaW11bVNjb3JlID0gc2NvcmU7XHJcbiAgICAgICAgICAgICAgICBuLnNjb3JlID0gc2NvcmU7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZWxldmFudHMubWluaW11bVNjb3JlID0gbWluaW11bVNjb3JlO1xyXG4gICAgICAgICAgICAgIHRoaXMucmVsZXZhbnRzLml0ZW1zID0gci52YWx1ZS5pdGVtc1swXS5hbmNob3JzO1xyXG4gICAgICAgICAgICAgIHRoaXMuaGFzUmVsZXZhbnRzLnNldCh0aGlzLnJlbGV2YW50cy5pdGVtcz8ubGVuZ3RoID4gMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVSZWxldmFudHNQYW5lVmlzaWJpbGl0eSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG5cclxuICAvKipcclxuICAgKiBEaXNwbGF5IGRvY3VtZW50IHN0cnVjdHVyZVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBpbmRleChkb2N1bWVudElkOiBzdHJpbmcpIHtcclxuICAgIGxldCBkID0gdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oQ2xpcHBlckRvY3VtZW50SW5kZXhDb21wb25lbnQsIHtcclxuICAgICAgYXJpYUxhYmVsOiAnaW5kaWNlIGRvY3VtZW50bycsXHJcbiAgICAgIGF1dG9Gb2N1czogZmFsc2UsXHJcbiAgICAgIHJlc3RvcmVGb2N1czogZmFsc2UsXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgY2xvc2VPbk5hdmlnYXRpb246IGZhbHNlLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgZG9jdW1lbnRJZDogZG9jdW1lbnRJZCxcclxuICAgICAgICBleGNsdWRlZFR5cGVzOiBudWxsLFxyXG4gICAgICAgIG11bHRpcGxlOiBmYWxzZVxyXG4gICAgICB9LFxyXG4gICAgICBtaW5XaWR0aDogJzM3NXB4JyxcclxuICAgICAgbWF4V2lkdGg6ICc2MDBweCcsXHJcbiAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICB9KTtcclxuICAgIGQuY29tcG9uZW50SW5zdGFuY2UuZG9uZVxyXG4gICAgICAuc3Vic2NyaWJlKChyOiBDbGlwcGVyRG9jdW1lbnRJbmRleERpYWxvZ1Jlc3VsdCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGl0ZW0gPSByLmRhdGEubGVuZ3RoID4gMCA/IHIuZGF0YVswXSA6IG51bGw7XHJcbiAgICAgICAgaWYgKGl0ZW0pIHtcclxuICAgICAgICAgIGlmIChpdGVtLmRvY3VtZW50SWQgPT09IGRvY3VtZW50SWQpIHtcclxuICAgICAgICAgICAgbGV0IGYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xpcHBlci1kb2N1bWVudC1pZnJhbWUnKSBhcyBhbnk7XHJcbiAgICAgICAgICAgIGY/LmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoXHJcbiAgICAgICAgICAgICAgJ3tcInR5cGVcIjogXCJnb3RvXCIsIFwidmFsdWVcIjpcIicgKyBpdGVtLnVyaSArICdcIn0nLFxyXG4gICAgICAgICAgICAgICcqJ1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5vcGVuRG9jdW1lbnQoaXRlbS5kb2N1bWVudElkICsgJyMnICsgaXRlbS51cmksKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGQuY2xvc2UoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICogR2V0IHRoZSBpZCBpbiBhIHF1ZXJ5IHN0cmluZ1xyXG4gKiBAcGFyYW0gdXJsIDogdGhlIHVybCB0byBwcm9jZXNzXHJcbiAqIEBwYXJhbSBuYW1lIDogdGhlIG9wdGlvbmFsIGlkIHBhcmFtZW50ZXIgbmFtZS4gRGVmYXVsdCBpcyAnaWQnXHJcbiAqIEByZXR1cm5zIDogdGhlIGlkIHBhcmFtZVxyXG4gKi9cclxuICBwcml2YXRlIGdldElkKHVybDogc3RyaW5nLCBuYW1lOiBzdHJpbmcgPSAnaWQnKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHN0YXJ0ID0gdXJsLmxhc3RJbmRleE9mKG5hbWUgKyAnPScpICsgMztcclxuICAgIGNvbnN0IGVuZCA9IHVybC5pbmRleE9mKCcmJywgc3RhcnQpO1xyXG4gICAgcmV0dXJuIHVybC5zdWJzdHJpbmcoc3RhcnQsIGVuZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQcmV2aWV3IGEgZmlsZSBpZiBwb3NzaWJsZVxyXG4gICAqIEBwYXJhbSB1cmwgOiB0aGUgdXJsIHRvIHByZXZpZXdcclxuICAgKi9cclxuICBwcml2YXRlIHByZXZpZXdGaWxlKHVybDogc3RyaW5nKSB7XHJcbiAgICBpZiAoIXVybCB8fCB1cmwubGVuZ3RoID09PSAwKVxyXG4gICAgICByZXR1cm47IC8vIE5vdGhpbmcgdG8gZG9cclxuICAgIC8vIEdldCB0aGUgaWRcclxuICAgIGxldCBpZCA9IHRoaXMuZ2V0SWQodXJsKTtcclxuICAgIGlmICghaWQgfHwgaWQubGVuZ3RoID09PSAwKVxyXG4gICAgICByZXR1cm47IC8vIE5vdGhpbmcgdG8gZG9cclxuICAgIC8vIENyZWF0ZSB0aGUgdXJsXHJcbiAgICB0aGlzLmNsaXBwZXJTZXJ2aWNlLm5ld09UUChpZCkuc3Vic2NyaWJlKFxyXG4gICAgICByID0+IHtcclxuICAgICAgICBpZiAoIXIuc3VjY2VzcykgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKHIubWVzc2FnZSk7XHJcbiAgICAgICAgZWxzZSBpZiAoIXIudmFsdWUuY2FuUHJldmlldylcclxuICAgICAgICAgIC8vIERvbmxvYWQgbWFudWFsbHlcclxuICAgICAgICAgIGxvY2F0aW9uLmhyZWYgPSB1cmw7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbihGaWxlUHJldmlld0NvbXBvbmVudCwge1xyXG4gICAgICAgICAgICBwYW5lbENsYXNzOiAncHJldmlldy1wYW5lbCcsXHJcbiAgICAgICAgICAgIGFyaWFMYWJlbDogJ2FudGVwcmltYScsXHJcbiAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXHJcbiAgICAgICAgICAgIHJlc3RvcmVGb2N1czogZmFsc2UsXHJcbiAgICAgICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgIHVybDogdXJsLFxyXG4gICAgICAgICAgICAgIGVtYmVkOiByLnZhbHVlLmNhbkVtYmVkXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG1pbldpZHRoOiAnMzc1cHgnLFxyXG4gICAgICAgICAgICBtYXhXaWR0aDogJzkwMHB4JyxcclxuICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcclxuICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJSdcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgICogU2hvdyBkb2N1bWVudCBjb21tZW50XHJcbiAgICAqL1xyXG4gIHByb3RlY3RlZCBzaG93Q29tbWVudCgpIHtcclxuICAgIGlmICh0aGlzLmxhc3REb2N1bWVudD8uYmFnWzddICE9PSAnVCcpIHJldHVybjtcclxuICAgIHRoaXMuY2xpcHBlclNlcnZpY2VcclxuICAgICAgLmNvbW1lbnQodGhpcy5sYXN0RG9jdW1lbnQ/LmRvY3VtZW50SWQpXHJcbiAgICAgIC5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgaWYgKCFyLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgIGlmIChyLm1lc3NhZ2UgPT09IFwiSWwgdHVvIGFiYm9uYW1lbnRvIG5vbiBjb25zZW50ZSBkaSB2aXN1YWxpenphcmUgaSBjb21tZW50aSBhbGxlIG5vcm1lLlwiKVxyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3IoXCJJbCBzZXJ2aXppbyBkaSA8Yj5jb21tZW50aSBhbGxlIG5vcm1lPC9iPiBub24gw6ggY29tcHJlc28gbmVsIHR1byBhYmJvbmFtZW50bywgcGVyIG1hZ2dpb3JpIGluZm9ybWF6aW9uaSByaXZvbGdlcnNpIGFsbCdhZ2VudGUgY29tbWVyY2lhbGUgZGkgcmlmZXJpbWVudG8gbyBpbnZpYXJlIHVuYSBtYWlsIGEgPGEgaHJlZj0nbWFpbHRvOnNhbGVzQGFyc2VkaXppb25pLml0JyB0YXJnZXQ9J19ibGFuayc+c2FsZXNAYXJzZWRpemlvbmkuaXQ8L2E+LlwiLCBudWxsLCBcIkF0dGVuemlvbmVcIik7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5lcnJvcihyLm1lc3NhZ2UpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoci52YWx1ZSAmJiByLnZhbHVlLmxlbmd0aCA+IDEpXHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5pbmZvKFxyXG4gICAgICAgICAgICAgIHIudmFsdWUucmVwbGFjZSgvXFxuL2csICc8YnI+XFxyXFxuJyksXHJcbiAgICAgICAgICAgICAgXCJDb21tZW50b1wiLFxyXG4gICAgICAgICAgICAgIFwiQ2hpdWRpXCIsXHJcbiAgICAgICAgICAgICAgNzAwKTtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmluZm8oXCJDb21tZW50byBub24gcGnDuSBkaXNwb25pYmlsZSBvIGluIGZhc2UgZGkgcmV2aXNpb25lLlwiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIE9wZW4gYW4gaXRlbVxyXG4gICAqIEBwYXJhbSBkb2N1bWVudElkIDogdGhlIGRvY3VtZW50IGlkXHJcbiAgICogQHBhcmFtIHF1ZXJ5OiB0aGUgY3VycmVudCBxdWVyeSBvciBudWxsXHJcbiAgICogQHBhcmFtIG5ld1dpbmRvdzogdHJ1ZSBpZiB0aGUgZG9jdW1lbnQgbXVzdCBiZSBvcGVuIGludG8gYSBuZXcgd2luZG93XHJcbiAgICovXHJcbiAgb3ZlcnJpZGUgb3Blbihkb2N1bWVudElkOiBzdHJpbmcsIHF1ZXJ5OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbCwgbmV3V2luZG93OiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIGlmICghbmV3V2luZG93KSB7XHJcbiAgICAgIGlmICh0aGlzLm9wZW5pbmcpIHRoaXMub3BlbmluZy5lbWl0KGRvY3VtZW50SWQpO1xyXG4gICAgICBlbHNlIHRoaXMub3BlbkRvY3VtZW50KGRvY3VtZW50SWQsIHF1ZXJ5KTtcclxuICAgIH0gZWxzZSB3aW5kb3cub3BlbignL2RvY3VtZW50by8nICsgZG9jdW1lbnRJZCwgJ19ibGFuaycpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT3BlbiBhIGRvY3VtZW50XHJcbiAgICogQHBhcmFtIGRvY3VtZW50SWQgOiB0aGUgZG9jdW1lbnQgaWRcclxuICAgKiBAcGFyYW0gcXVlcnk6IHRoZSBjdXJyZW50IHF1ZXJ5IG9yIG51bGxcclxuICAgKi9cclxuICBwcml2YXRlIG9wZW5Eb2N1bWVudChkb2N1bWVudElkOiBzdHJpbmcsIHF1ZXJ5OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbCkge1xyXG4gICAgaWYgKCFkb2N1bWVudElkKSByZXR1cm47XHJcbiAgICBDbGlwcGVyRG9jdW1lbnRzVXRpbHMub3BlbkRvY3VtZW50KFxyXG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UsXHJcbiAgICAgIHRoaXMuY2xpcHBlclNlcnZpY2UsXHJcbiAgICAgIGRvY3VtZW50SWQsXHJcbiAgICAgIHF1ZXJ5LFxyXG4gICAgICB0aGlzLmRpYWxvZ0RhdGEuc2VsZWN0aW9uTW9kZSxcclxuICAgICAgdGhpcy5kaWFsb2dEYXRhLnRoZW1lXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQnJvd3NlIGRvY3VtZW50IHJlZmVyZW5jZXNcclxuICAgKiBAcGFyYW0gZG9jdW1lbnRJZCA6IHRoZSBkb2N1bWVudCBpZFxyXG4gICAqIEBwYXJhbSBtb2RlIDogdGhlIG1vZGVcclxuICAgKi9cclxuICBvdmVycmlkZSBvcGVuUmVmZXJlbmNlcyhcclxuICAgIGRvY3VtZW50SWQ6IHN0cmluZyxcclxuICAgIG1vZGU6IENsaXBwZXJRdWVyeVJlZmVyZW5jZXNNb2RlID0gQ2xpcHBlclF1ZXJ5UmVmZXJlbmNlc01vZGUuUmVmZXJlbmNlc0luLFxyXG4gICAgbW9kZWw6IG51bWJlciA9IG51bGwsXHJcbiAgICBhbmNob3I6IHN0cmluZyA9IG51bGwsXHJcbiAgICBhbmNob3JUaXRsZTogc3RyaW5nID0gbnVsbCxcclxuICAgIHVwZGF0ZTogYm9vbGVhbiA9IHRydWVcclxuICApIHtcclxuICAgIGxldCBkID0gdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oQ2xpcHBlclJlZmVyZW5jZXNDb21wb25lbnQsIHtcclxuICAgICAgYXJpYUxhYmVsOiAncmlmZXJpbWVudGkgbGVnYXRpIGFsIGRvY3VtZW50bycsXHJcbiAgICAgIGF1dG9Gb2N1czogZmFsc2UsXHJcbiAgICAgIHJlc3RvcmVGb2N1czogZmFsc2UsXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgY2xvc2VPbk5hdmlnYXRpb246IGZhbHNlLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgZG9jdW1lbnRJZDogZG9jdW1lbnRJZCA/PyB0aGlzLmxhc3REb2N1bWVudD8uZG9jdW1lbnRJZCxcclxuICAgICAgICBtb2RlOiBtb2RlLFxyXG4gICAgICAgIG1vZGVsOiBtb2RlbCxcclxuICAgICAgICBhbmNob3I6IGFuY2hvcixcclxuICAgICAgICBhbmNob3JUaXRsZTogYW5jaG9yVGl0bGUsXHJcbiAgICAgICAgdXBkYXRlOiB1cGRhdGUsXHJcbiAgICAgIH0sXHJcbiAgICAgIG1pbldpZHRoOiAnMzc1cHgnLFxyXG4gICAgICBtYXhXaWR0aDogJzEwMDBweCcsXHJcbiAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICAgIGhlaWdodDogJzEwMCUnLFxyXG4gICAgfSk7XHJcbiAgICBkLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnN1YnNjcmliZSgocjogQ2xpcHBlclJlZmVyZW5jZURpYWxvZ1Jlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyICYmIHIuZG9jdW1lbnRJZCkge1xyXG4gICAgICAgICAgdGhpcy5uYXZpZ2F0ZShyLmRvY3VtZW50SWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEaXNwbGF5IGEgcmVwb3J0XHJcbiAgICogQHBhcmFtIGl0ZW1cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZGlzcGxheVJlcG9ydChpdGVtOiBDbGlwcGVyRG9jdW1lbnRJbmZvKSB7XHJcbiAgICBpZiAoIWl0ZW0pIHJldHVybjtcclxuICAgIGlmIChpdGVtLm1vZGVsICE9IENsaXBwZXJNb2RlbC5Ob3JtYXRpdmFWaWdlbnRlICYmIGl0ZW0ubW9kZWwgIT0gQ2xpcHBlck1vZGVsLlNjYWRlbnplKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5pbmZvKFwiUXVlc3RhIGZ1bnppb25hbGl0w6Agbm9uIMOoIGRpc3BvbmliaWxlIHBlciBxdWVzdG8gdGlwbyBkaSBkb2N1bWVudG8uXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLm9wZW5SZXBvcnQoaXRlbS5pZCwgaXRlbS50aXRsZTEgPyBpdGVtLnRpdGxlMSA6IGl0ZW0udGl0bGUyKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrcyBpZiBkb2N1bWVudHMgY2FuIGJlIHNlbGVjdGVkIGFuZCByZXR1cm5lZCBhcyBtZXNzYWdlXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGNhblNlbGVjdCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbk1vZGUgPiAwICYmIHRoaXMubGFzdERvY3VtZW50ICYmICh0aGlzLmxhc3REb2N1bWVudD8ubW9kZWwgPT09IENsaXBwZXJNb2RlbC5Ob3JtYXRpdmFWaWdlbnRlIHx8IHRoaXMubGFzdERvY3VtZW50Py5tb2RlbCA9PT0gQ2xpcHBlck1vZGVsLkFnZ2lvcm5hbWVudG9Ob3JtYXRpdm8pXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZW5kIGEgbWVzc2FnZSB3aXRoIGN1cnJlbnQgc2VsZWN0aW9uIGFuZCBjbG9zZSBkaWFsb2dcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgc2VsZWN0KCkge1xyXG4gICAgaWYgKHRoaXMubGFzdERvY3VtZW50KSB7XHJcbiAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5zZW5kTWVzc2FnZShDbGlwcGVyTWVzc2FnZXMuRE9DVU1FTlRfU0VMRUNURURfSU5ORVIsIFtcclxuICAgICAgICB0aGlzLmxhc3REb2N1bWVudCxcclxuICAgICAgXSk7XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG4iLCI8ZGl2IGNsYXNzPVwiY2xpcHBlci1kb2N1bWVudC1maXhlZFwiPlxyXG4gIDxkaXYgc3R5bGU9XCJoZWlnaHQ6NnB4XCI+XHJcbiAgICBAaWYgKGJ1c3koKSkge1xyXG4gICAgPG1hdC1wcm9ncmVzcy1iYXIgc3R5bGU9XCJ6LWluZGV4OjExXCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbiAgPGRpdj5cclxuICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjIwcHhcIiBmeExheW91dEFsaWduPVwic3RhcnQgc3RhcnRcIiBmeEZpbGw+XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiKlwiIGNsYXNzPVwidGl0bGUtY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlIGJvbGRcIj57e3RpdGxlKCl9fTwvZGl2PlxyXG4gICAgICAgIEBpZiAobGFzdERvY3VtZW50ICYmIGxhc3REb2N1bWVudD8ubGFzdFVwZGF0ZSkge1xyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJwYWRkaW5nLXRvcDogNXB4O1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIngtc21hbGwgYWNjZW50IGJvbGQgdXBwZXJjYXNlXCI+XHJcbiAgICAgICAgICAgIEFHR0lPUk5BVE8gQTpcclxuICAgICAgICAgICAge3tsYXN0RG9jdW1lbnQ/Lmxhc3RVcGRhdGV9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAobGFzdERvY3VtZW50ICYmIChsYXN0RG9jdW1lbnQ/LmV4cGlyaW5nRGVzY3JpcHRpb24gfHwgbGFzdERvY3VtZW50Py52YWxpZGl0eUluZm8pKSB7XHJcbiAgICAgICAgPGRpdiBzdHlsZT1cInBhZGRpbmctdG9wOiA1cHg7XCI+XHJcbiAgICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8uZXhwaXJpbmdEZXNjcmlwdGlvbikge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIngtc21hbGwgYWNjZW50LWxvdyBib2xkIHVwcGVyY2FzZVwiPlxyXG4gICAgICAgICAgICB7e2xhc3REb2N1bWVudD8uZXhwaXJpbmdEZXNjcmlwdGlvbn19PC9kaXY+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8udmFsaWRpdHlJbmZvKSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwieC1zbWFsbCBlcnJvciBib2xkIHVwcGVyY2FzZVwiPjxiPkF0dGVuemlvbmUhPC9iPlxyXG4gICAgICAgICAgICB7e2xhc3REb2N1bWVudD8udmFsaWRpdHlJbmZvfX08L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICBAaWYgKGNhblNlbGVjdCgpKSB7XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiMTcwcHhcIiBmeEZsZXgubHQtbWQ9XCI1OHB4XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBmeEhpZGUubHQtbWQgZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgY29sb3I9XCJwcmltYXJ5XCIgbWF0LWZsYXQtYnV0dG9uIChjbGljayk9XCJzZWxlY3QoKVwiXHJcbiAgICAgICAgICBjbGFzcz1cImNsaXBwZXItc2VsZWN0aW9uLWJ1dHRvblwiIHN0eWxlPVwibWFyZ2luLXRvcDogOHB4O1wiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzbWFsbCB1cHBlcmNhc2VcIj5Vc2Egc2VsZXppb25lPC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gZnhIaWRlLmd0LXNtIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIGNvbG9yPVwicHJpbWFyeVwiIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwic2VsZWN0KClcIlxyXG4gICAgICAgICAgY2xhc3M9XCJjbGlwcGVyLXNlbGVjdGlvbi1pY29uLWJ1dHRvblwiIG1hdFRvb2x0aXA9XCJVc2Egc2VsZXppb25lXCIgYXJpYS1sYWJlbD1cIidVc2EgbGEgc2VsZXppb25lJ1wiXHJcbiAgICAgICAgICBzdHlsZT1cIm1hcmdpbi10b3A6IDRweDtcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbj5jaGVjazwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiMTY0cHhcIiBmeEZsZXgubHQtbWQ9XCI0OHB4XCIgZnhMYXlvdXRBbGlnbj1cImVuZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctY2xvc2VcIj5cclxuICAgICAgICAgIDxidXR0b24gZnhIaWRlLmx0LW1kIGZ4RmxleEFsaWduPVwic3RhcnRcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXA9XCJJbmRpZXRyb1wiXHJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJJbmRpZXRyb1wiIChjbGljayk9XCJiYWNrKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmFycm93X2JhY2s8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIGZ4SGlkZS5sdC1tZCBmeEZsZXhBbGlnbj1cInN0YXJ0XCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwPVwiQXZhbnRpXCIgYXJpYS1sYWJlbD1cIkF2YW50aVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJmb3J3YXJkKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmFycm93X2ZvcndhcmQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwic3RhcnRcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXA9XCJDaGl1ZGlcIiBhcmlhLWxhYmVsPVwiQ2hpdWRpXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXY+XHJcbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93IHdyYXAgXCIgZnhGaWxsIGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1iZXR3ZWVuIGNlbnRlclwiIHN0eWxlPVwicGFkZGluZzogMTBweCAxMHB4IDEwcHggMTVweDtcIj5cclxuICAgICAgPGRpdiBmeEZsZXgueHM9XCIxMDBcIj5cclxuICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8ubW9kZWwgPT09IDkpIHtcclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIGluZGljZSdcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImluZGV4KGxhc3REb2N1bWVudD8uZG9jdW1lbnRJZClcIj5cclxuICAgICAgICAgIEluZGljZVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8uYmFnICYmIChsYXN0RG9jdW1lbnQ/LmJhZ1sxXSA9PT0nVCcgfHwgbGFzdERvY3VtZW50Py5iYWdbM10gPT09J1QnKSkge1xyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiBtYXRUb29sdGlwPVwiQ29sbGVnYW1lbnRpXCJcclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0NvbGxlZ2FtZW50aSBhbCBkb2N1bWVudG8nXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVMaW5rc1wiPlxyXG4gICAgICAgICAgQ29sbGVnYW1lbnRpXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIDxtYXQtbWVudSAjbWVudUxpbmtzPVwibWF0TWVudVwiPlxyXG4gICAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/LmJhZyAmJiBsYXN0RG9jdW1lbnQ/LmJhZ1sxXSA9PT0nVCcpIHtcclxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEgZG9jdW1lbnRpIHJpY2hpYW1hdGknXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5SZWZlcmVuY2VzKGxhc3REb2N1bWVudD8uZG9jdW1lbnRJZCwgMSlcIj5cclxuICAgICAgICAgICAgRG9jdW1lbnRpIHJpY2hpYW1hdGlcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/LmJhZyAmJiBsYXN0RG9jdW1lbnQ/LmJhZ1szXSA9PT0nVCcpIHtcclxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEgZG9jdW1lbnRpIGNoZSByaWNoaWFtYW5vJ1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuUmVmZXJlbmNlcyhsYXN0RG9jdW1lbnQ/LmRvY3VtZW50SWQsIDIpXCI+XHJcbiAgICAgICAgICAgIERvY3VtZW50aSBjaGUgcmljaGlhbWFub1xyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8uYmFnICYmIGxhc3REb2N1bWVudD8uYmFnWzJdID09PSdUJykge1xyXG4gICAgICAgICAgPGJ1dHRvbiBmeEhpZGUgZnhTaG93Lmx0LW1kIG1hdC1tZW51LWl0ZW0gW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIGp1cmlzJ1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuUmVmZXJlbmNlcyhsYXN0RG9jdW1lbnQ/LmRvY3VtZW50SWQsIDQpXCI+XHJcbiAgICAgICAgICAgIEp1cmlzXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpZiAobGFzdERvY3VtZW50Py5iYWcgJiYgbGFzdERvY3VtZW50Py5iYWdbNF0gPT09J1QnKSB7XHJcbiAgICAgICAgICA8YnV0dG9uIGZ4SGlkZSBmeFNob3cubHQtbWQgbWF0LW1lbnUtaXRlbSBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEgbW9kaWZpY2hlIHN1Yml0ZSdcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib3BlblJlZmVyZW5jZXMobGFzdERvY3VtZW50Py5kb2N1bWVudElkLCAzKVwiPlxyXG4gICAgICAgICAgICBNb2RpZmljaGUgc3ViaXRlXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpZiAobGFzdERvY3VtZW50Py5iYWcgJiYgbGFzdERvY3VtZW50Py5iYWdbNF0gIT09J1QnICYmIGxhc3REb2N1bWVudD8uYmFnWzZdID09PSdUJykge1xyXG4gICAgICAgICAgPGJ1dHRvbiBmeEhpZGUgZnhTaG93Lmx0LW1kIG1hdC1tZW51LWl0ZW0gW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIG1vZGlmaWNoZSBhcHBvcnRhdGUnXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5SZWZlcmVuY2VzKGxhc3REb2N1bWVudD8uZG9jdW1lbnRJZCwgNSlcIj5cclxuICAgICAgICAgICAgTW9kaWZpY2hlIGFwcG9ydGF0ZVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8uaGFzUHJpbWFyeSkge1xyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIGRvY3VtZW50byBwcmltYXJpbydcIiAoY2xpY2spPVwibmF2aWdhdGUobGFzdERvY3VtZW50Py5wcmltYXJ5SWQpXCI+XHJcbiAgICAgICAgICB7e2xhc3REb2N1bWVudD8ucHJpbWFyeURlc2NyaXB0aW9ufX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/LmJhZyAmJiBsYXN0RG9jdW1lbnQ/LmJhZ1syXSA9PT0nVCcpIHtcclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIGZ4SGlkZS5sdC1tZCBtYXQtYnV0dG9uXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEganVyaXMnXCIgKGNsaWNrKT1cIm9wZW5SZWZlcmVuY2VzKGxhc3REb2N1bWVudD8uZG9jdW1lbnRJZCwgNClcIj5cclxuICAgICAgICAgIEp1cmlzXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAobGFzdERvY3VtZW50Py5iYWcgJiYgbGFzdERvY3VtZW50Py5iYWdbNF0gPT09ICdUJykge1xyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgZnhIaWRlLmx0LW1kIG1hdC1idXR0b25cclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01vc3RyYSBtb2RpZmljaGUgc3ViaXRlJ1wiIChjbGljayk9XCJvcGVuUmVmZXJlbmNlcyhsYXN0RG9jdW1lbnQ/LmRvY3VtZW50SWQsIDMpXCI+XHJcbiAgICAgICAgICBNb2RpZmljaGUgc3ViaXRlXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAobGFzdERvY3VtZW50Py5iYWcgJiYgbGFzdERvY3VtZW50Py5iYWdbNF0gIT09ICdUJyAmJiBsYXN0RG9jdW1lbnQ/LmJhZ1s2XSA9PT0gJ1QnKSB7XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiBmeEhpZGUubHQtbWQgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIG1vZGlmaWNoZSBhcHBvcnRhdGUnXCIgKGNsaWNrKT1cIm9wZW5SZWZlcmVuY2VzKGxhc3REb2N1bWVudD8uZG9jdW1lbnRJZCwgNSlcIj5cclxuICAgICAgICAgIE1vZGlmaWNoZSBhcHBvcnRhdGVcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/LnNlY29uZGFyeUlkKSB7XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEgZG9jdW1lbnRvIHNlY29uZGFyaW8nXCIgKGNsaWNrKT1cIm5hdmlnYXRlKGxhc3REb2N1bWVudD8uc2Vjb25kYXJ5SWQpXCI+XHJcbiAgICAgICAgICBUZXN0byBzdG9yaWNvXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAobGFzdERvY3VtZW50Py5iYWcgJiYgbGFzdERvY3VtZW50Py5iYWdbN10gPT09ICdUJykge1xyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEgY29tbWVudG8nXCJcclxuICAgICAgICAgIChjbGljayk9XCJzaG93Q29tbWVudCgpXCI+XHJcbiAgICAgICAgICBDb21tZW50b1xyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgZnhGbGV4LnhzPVwiMTAwXCIgZnhMYXlvdXRBbGlnbj1cImVuZFwiPlxyXG4gICAgICAgIDxkaXYgZnhGbGV4QWxpZ249XCJjZW50ZXJcIj5cclxuICAgICAgICAgIEBpZiAoaGFzUmVsZXZhbnRzKCkgJiYgcmVsZXZhbnRzLmhpdHMpIHtcclxuICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIj5cclxuICAgICAgICAgICAgPGRpdiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIGNsYXNzPVwic21hbGwgaXRlbS1ncmV5ZWRcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OjIwcHg7IG1hcmdpbi1yaWdodDogNXB4XCJcclxuICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiUGFyb2xlIGV2aWRlbnppYXRlXCI+e3tyZWxldmFudHMuaGl0fX1cclxuICAgICAgICAgICAgICBkaSB7e3JlbGV2YW50cy5oaXRzfX08L2Rpdj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gW2F0dHIuYXJpYS1sYWJlbF09XCInVmFpIGFsbGEgcGFyb2xhIHByZWNlZGVudGUnXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwicHJldmlvdXNSZWxldmFudCgpXCIgbWF0VG9vbHRpcD1cIlBhcm9sYSBwcmVjZWRlbnRlXCIgW2Rpc2FibGVkXT1cInJlbGV2YW50cy5oaXQgPD0gMVwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5jaGV2cm9uX2xlZnQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gW2F0dHIuYXJpYS1sYWJlbF09XCInVmFpIGFsbGEgcHJvc3NpbWEgcGFyb2xhJ1wiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm5leHRSZWxldmFudCgpXCIgbWF0VG9vbHRpcD1cIlByb3NzaW1hIHBhcm9sYVwiIFtkaXNhYmxlZF09XCJyZWxldmFudHMuaGl0ID49IHJlbGV2YW50cy5oaXRzXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uPmNoZXZyb25fcmlnaHQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXA9XCJBemlvbmkgc3VsIGRvY3VtZW50b1wiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBemlvbmkgZGEgZXNlZ3VpcmUgc3VsIGRvY3VtZW50bydcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudUFjdGlvbnNcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbj5tb3JlX3ZlcnQ8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxtYXQtbWVudSAjbWVudUFjdGlvbnM9XCJtYXRNZW51XCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0TWVudUNvbnRlbnQgbGV0LWl0ZW09XCJsYXN0RG9jdW1lbnRcIj5cclxuICAgICAgICAgICAgPGNsaXBwZXItZG9jdW1lbnQtbWVudSBbcGFyZW50XT1cInRoaXNcIiBbaXRlbV09XCJsYXN0RG9jdW1lbnRcIiBbY2FuUHJpbnRdPVwidHJ1ZVwiIFtjYW5GaW5kXT1cInRydWVcIiBbaXNSZWFkYWJsZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgW2lzTGF3SW5Gb3JjZV09XCJsYXN0RG9jdW1lbnQ/Lm1vZGVsID09PSA5XCIgc2VsZWN0aW9uU291cmNlPVwibm9uZVwiPlxyXG4gICAgICAgICAgICA8L2NsaXBwZXItZG9jdW1lbnQtbWVudT5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+ICAgICAgICAgXHJcbiAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICBAaWYgKGhhc1JlbGV2YW50cygpICYmIHJlbGV2YW50cy5pdGVtcyAmJiByZWxldmFudHNQYW5lICYmICghcmVsZXZhbnRzUGFuZS5vcGVuZWQgfHwgcmVsZXZhbnRzUGFuZUNsb3NlZCkpIHtcclxuICAgICAgICA8ZGl2IGZ4RmxleEFsaWduPVwiY2VudGVyXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcD1cIlJpbGV2YW56YVwiIGFyaWEtbGFiZWw9XCInUmlsZXZhbnphJ1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVSZWxldmFudHNQYW5lKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPm1lbnVfb3BlbjwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG48bWF0LWRpYWxvZy1jb250ZW50IGlkPVwiY2xpcHBlci1kb2N1bWVudC1zY3JvbGxhYmxlXCI+XHJcbiAgPG1hdC1kcmF3ZXItY29udGFpbmVyIGNsYXNzPVwiZmlsbFwiIFtoYXNCYWNrZHJvcF09XCJbcmVsZXZhbnRzUGFuZUhhc0JhY2tkcm9wXVwiPlxyXG4gICAgPG1hdC1kcmF3ZXIgI3JlbGV2YW50c1BhbmUgcG9zaXRpb249XCJlbmRcIiBjbGFzcz1cImRyYXdlci1zbWFsbCBkcmF3ZXItd2l0aC1sb2FkZXJcIiBvcGVuZWQ9XCJmYWxzZVwiPlxyXG4gICAgICBAaWYgKHJlbGV2YW50c0J1c3koKSkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwib3ZlcmxheVwiPjwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeEZpbGw+XHJcbiAgICAgICAgPGRpdiBmeEZsZXg9XCI2cHhcIj5cclxuICAgICAgICAgIEBpZiAocmVsZXZhbnRzQnVzeSgpKSB7XHJcbiAgICAgICAgICA8bWF0LXByb2dyZXNzLWJhciBzdHlsZT1cInotaW5kZXg6IDExO1wiIG1vZGU9XCJpbmRldGVybWluYXRlXCI+XHJcbiAgICAgICAgICA8L21hdC1wcm9ncmVzcy1iYXI+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBmeEZsZXg9XCI1NnB4XCIgY2xhc3M9XCJ0aXRsZS1jb250YWluZXItd2l0aC1sb2FkZXJcIj5cclxuICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCIgZnhMYXlvdXRHYXA9XCIxMHB4XCIgZnhGaWxsPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5SaWxldmFuemE8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBmeEZsZXg9XCIqXCIgZnhMYXlvdXRBbGlnbj1cImVuZFwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJ0b2dnbGVSZWxldmFudHNQYW5lKClcIlxyXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIk5hc2NvbmRpXCI+PG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGZ4RmxleD1cIipcIiBjbGFzcz1cInJlbGV2YW50cy1jb250YWluZXIgc2Nyb2xsLWF1dG9cIj5cclxuICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeEZpbGw+XHJcbiAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgPHA+UGFydGkgZGVsIGRvY3VtZW50byBwacO5IHNpZ25pZmljYXRpdmUgcGVyIGxhIHJpY2VyY2EgZGkgPHNwYW4gY2xhc3M9J3dvcmQtaGl0Jz57e2xhc3RRdWVyeX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgZnhGbGV4PVwiKlwiPlxyXG4gICAgICAgICAgICAgIDxuYXYgY2xhc3M9XCJyZWxldmFudHMtaXRlbXNcIj5cclxuICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiByZWxldmFudHMuaXRlbXM7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJzbWFsbFwiIChjbGljayk9XCJnb3RvUmVsZXZhbnQoaXRlbSlcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIml0ZW0udGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IHN0YXJ0XCIgZnhMYXlvdXRHYXA9XCIxMHB4XCIgZnhGaWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBmeEZsZXg9XCIqXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbS50aXRsZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZnhMYXlvdXRBbGlnbj1cImVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uc2NvcmUgPiAxLjIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIHN0eWxlPSdmb250LXNpemU6eC1zbWFsbDsgaGVpZ2h0OiAxMHB4OyB3aWR0aDoxMHB4JyBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJNb2x0byByaWxldmFudGVcIj50aHVtYl91cF9hbHQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICA8L25hdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L21hdC1kcmF3ZXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmlsbCBzY3JvbGwtaGlkZGVuXCI+XHJcbiAgICAgIDxpZnJhbWUgaWQ9XCJjbGlwcGVyLWRvY3VtZW50LWlmcmFtZVwiIGNsYXNzPVwiaWZyYW1lXCIgW3NyY109XCJ1cmwoKSB8IHNhZmVVcmxcIj48L2lmcmFtZT5cclxuICAgIDwvZGl2PlxyXG4gIDwvbWF0LWRyYXdlci1jb250YWluZXI+XHJcbjwvbWF0LWRpYWxvZy1jb250ZW50PiJdfQ==
|
|
698
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2NsaXBwZXIudWkvdWkvZG9jdW1lbnQvZG9jdW1lbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2NsaXBwZXIudWkvdWkvZG9jdW1lbnQvZG9jdW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBRVosTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBYSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBSUwsZUFBZSxFQUNmLFlBQVksRUFDWiww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LENBQUM7OEdBM3RCVSx3QkFBd0I7a0dBQXhCLHdCQUF3QixtSUFuQm5CLFdBQVcsQ0FBQyxZQUFZLEVBQUUscUtDeEQ1Qyx3bVlBb1BxQixnMVdEdExqQixnQkFBZ0IsbytIQUNoQixlQUFlLHdVQUNmLGdCQUFnQiw0VEFDaEIsYUFBYSxtTEFDYixhQUFhLHMxQkFDYixnQkFBZ0IsOEJBQ2hCLG9CQUFvQix5TkFDcEIsZ0JBQWdCLHdHQUNoQixnQkFBZ0Isb2RBQ2hCLFdBQVcsZ0RBQ1gsNEJBQTRCOzsyRkFHbkIsd0JBQXdCO2tCQXBCcEMsU0FBUzsyQkFDRixFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsWUFBWSxFQUFFLEVBQUUsbUJBRzNCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLG9CQUFvQjt3QkFDcEIsZ0JBQWdCO3dCQUNoQixnQkFBZ0I7d0JBQ2hCLFdBQVc7d0JBQ1gsNEJBQTRCO3FCQUM3Qjs4QkFJMkIsYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlO2dCQUNoQixPQUFPO3NCQUFoQixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIsIEJyZWFrcG9pbnRzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XHJcbmltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlciwgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgUmVuZGVyZXIyLFxyXG4gIFZpZXdDaGlsZCxcclxuICBpbmplY3QsXHJcbiAgc2lnbmFsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nQ29udGVudCwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgTWF0RGl2aWRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcclxuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXInO1xyXG5pbXBvcnQgeyBNYXREcmF3ZXIsIE1hdFNpZGVuYXZNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2JztcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQge1xyXG4gIENsaXBwZXJEb2N1bWVudEFuY2hvckluZm8sXHJcbiAgQ2xpcHBlckRvY3VtZW50SW5mbyxcclxuICBDbGlwcGVyRG9jdW1lbnRSZWxldmFudHMsXHJcbiAgQ2xpcHBlck1lc3NhZ2VzLFxyXG4gIENsaXBwZXJNb2RlbCxcclxuICBDbGlwcGVyUXVlcnlSZWZlcmVuY2VzTW9kZSxcclxuICBDbGlwcGVyU2VhcmNoUGFyYW1zXHJcbn0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jbGlwcGVyLmNvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgU2FmZVVybFBpcGUsXHJcbiAgU3lzdGVtVXRpbHMsXHJcbiAgVGhlbWVUeXBlXHJcbn0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jb3JlJztcclxuaW1wb3J0IHsgRmlsZVByZXZpZXdDb21wb25lbnQgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL3VpLmFwcGxpY2F0aW9uJztcclxuaW1wb3J0IHsgU3ViamVjdCwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQ2xpcHBlclJlZmVyZW5jZURpYWxvZ1Jlc3VsdCwgQ2xpcHBlclJlZmVyZW5jZXNDb21wb25lbnQgfSBmcm9tICcuLi9yZWZlcmVuY2VzL3JlZmVyZW5jZXMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2xpcHBlckRvY3VtZW50SW5kZXhDb21wb25lbnQsIENsaXBwZXJEb2N1bWVudEluZGV4RGlhbG9nUmVzdWx0IH0gZnJvbSAnLi4vZG9jdW1lbnQtaW5kZXgvZG9jdW1lbnQtaW5kZXguY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2xpcHBlckRvY3VtZW50TWFuYWdlciB9IGZyb20gJy4uL2RvY3VtZW50LW1hbmFnZXIvZG9jdW1lbnQtbWFuYWdlcic7XHJcbmltcG9ydCB7IEZsZXhMYXlvdXRNb2R1bGUgfSBmcm9tICdAbmdicmFja2V0L25neC1sYXlvdXQnO1xyXG5pbXBvcnQgeyBDbGlwcGVyRG9jdW1lbnRzVXRpbHMgfSBmcm9tICcuLi8uLi9kb2N1bWVudHMnO1xyXG5pbXBvcnQgeyBDbGlwcGVyRG9jdW1lbnRNZW51Q29tcG9uZW50IH0gZnJvbSAnLi4vZG9jdW1lbnQtbWVudS9kb2N1bWVudC1tZW51LmNvbXBvbmVudCc7XHJcblxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDbGlwcGVyRG9jdW1lbnREaWFsb2dEYXRhIHtcclxuICBzZWxlY3Rpb25Nb2RlOiBudW1iZXI7XHJcbiAgaWQ6IHN0cmluZztcclxuICBxdWVyeT86IHN0cmluZyB8IG51bGw7XHJcbiAgdGhlbWU/OiBUaGVtZVR5cGUgfCBudWxsO1xyXG5cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgaG9zdDogeyAnQmluZCc6IFN5c3RlbVV0aWxzLmdlbmVyYXRlVVVJRCgpIH0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RvY3VtZW50LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kb2N1bWVudC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgRmxleExheW91dE1vZHVsZSxcclxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcclxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXHJcbiAgICBNYXRJY29uTW9kdWxlLFxyXG4gICAgTWF0TWVudU1vZHVsZSxcclxuICAgIE1hdERpdmlkZXJNb2R1bGUsXHJcbiAgICBNYXRQcm9ncmVzc0Jhck1vZHVsZSxcclxuICAgIE1hdERpYWxvZ0NvbnRlbnQsXHJcbiAgICBNYXRTaWRlbmF2TW9kdWxlLFxyXG4gICAgU2FmZVVybFBpcGUsXHJcbiAgICBDbGlwcGVyRG9jdW1lbnRNZW51Q29tcG9uZW50XHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENsaXBwZXJEb2N1bWVudENvbXBvbmVudCBleHRlbmRzIENsaXBwZXJEb2N1bWVudE1hbmFnZXJcclxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBAVmlld0NoaWxkKCdyZWxldmFudHNQYW5lJykgcmVsZXZhbnRzUGFuZSE6IE1hdERyYXdlcjtcclxuICBAT3V0cHV0KCkgY2xvc2luZyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb3BlbmluZyA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBwcml2YXRlIHVuc3Vic2NyaWJlOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwcml2YXRlIGNoYW5nZURldGVjdG9yID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuICBwcml2YXRlIGJyZWFrcG9pbnRPYnNlcnZlciA9IGluamVjdChCcmVha3BvaW50T2JzZXJ2ZXIpO1xyXG4gIHByaXZhdGUgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcclxuICBwcml2YXRlIHJlbmRlcmVyTGlzdGVuZXIxOiBhbnk7XHJcbiAgcHJpdmF0ZSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcclxuICBwcml2YXRlIGRpYWxvZ1JlZiA9IGluamVjdChNYXREaWFsb2dSZWY8Q2xpcHBlckRvY3VtZW50Q29tcG9uZW50Pik7XHJcbiAgcHJvdGVjdGVkIGRpYWxvZ0RhdGE6IENsaXBwZXJEb2N1bWVudERpYWxvZ0RhdGEgPSBpbmplY3QoTUFUX0RJQUxPR19EQVRBKSA/PyB7IG1vZGU6IENsaXBwZXJRdWVyeVJlZmVyZW5jZXNNb2RlLlJlZmVyZW5jZXNJbiB9O1xyXG4gIHByb3RlY3RlZCB1cmwgPSBzaWduYWw8c3RyaW5nPihudWxsKTtcclxuICBwcm90ZWN0ZWQgdGl0bGUgPSBzaWduYWw8c3RyaW5nPihudWxsKTtcclxuICBwcm90ZWN0ZWQgYnVzeSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgcHJvdGVjdGVkIGxhc3RRdWVyeT86IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIHByb3RlY3RlZCBsYXN0RG9jdW1lbnQ/OiBDbGlwcGVyRG9jdW1lbnRJbmZvIHwgbnVsbCA9IHt9O1xyXG4gIHByb3RlY3RlZCByZWxldmFudHM6IENsaXBwZXJEb2N1bWVudFJlbGV2YW50cyA9IHtcclxuICAgIGl0ZW1zOiBbXSxcclxuICAgIGhpdHM6IDAsXHJcbiAgICBoaXQ6IDAsXHJcbiAgICBtaW5pbXVtU2NvcmU6IDEwMCxcclxuICB9O1xyXG4gIHByb3RlY3RlZCByZWxldmFudHNQYW5lSGFzQmFja2Ryb3A6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcm90ZWN0ZWQgcmVsZXZhbnRzUGFuZUNsb3NlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByb3RlY3RlZCByZWxldmFudHNCdXN5ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICBwcm90ZWN0ZWQgaGFzUmVsZXZhbnRzID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICBwcm90ZWN0ZWQgc2VsZWN0aW9uTW9kZT86IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEpIHtcclxuICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlID0gdGhpcy5kaWFsb2dEYXRhLnNlbGVjdGlvbk1vZGU7XHJcbiAgICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEuaWQpIHtcclxuICAgICAgICBjb25zdCB1cmwgPVxyXG4gICAgICAgICAgdGhpcy5jbGlwcGVyU2VydmljZS5zZXJ2aWNlVXJpICtcclxuICAgICAgICAgIFwiL2RvY3VtZW50cy9yZW5kZXIvP3F1ZXJ5PVwiICtcclxuICAgICAgICAgICh0aGlzLmRpYWxvZ0RhdGEucXVlcnkgPz8gJycpICtcclxuICAgICAgICAgIFwiJnRoZW1lPVwiICtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nRGF0YS50aGVtZSArXHJcbiAgICAgICAgICBcIiZpZD1cIiArXHJcbiAgICAgICAgICB0aGlzLmRpYWxvZ0RhdGEuaWRcclxuICAgICAgICB0aGlzLm5hdmlnYXRlQnlVcmwodXJsKTtcclxuXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBMaXN0ZW4gdG8gd2luZG93IG1lc3NhZ2VzXHJcbiAgICB0aGlzLnJlbmRlcmVyTGlzdGVuZXIxID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oXHJcbiAgICAgICd3aW5kb3cnLFxyXG4gICAgICAnbWVzc2FnZScsXHJcbiAgICAgIChlOiBFdmVudCkgPT4ge1xyXG4gICAgICAgIGxldCBldmVudCA9IGUgYXMgTWVzc2FnZUV2ZW50O1xyXG4gICAgICAgIGlmICghZXZlbnQpIHJldHVybjtcclxuICAgICAgICBpZiAoZXZlbnQuZGF0YSkge1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKGV2ZW50LmRhdGEpO1xyXG4gICAgICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgIHN3aXRjaCAoZGF0YS50eXBlKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlICduYXZpZ2F0ZWQnOlxyXG4gICAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRlZChcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEudGl0bGUxLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEudGl0bGUyLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEubW9kZWwsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5tb2R1bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5tb2R1bGVOYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuZGF0ZSxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLm51bWJlcixcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLmF1dGhvcixcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLm9yaWdpbixcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLm9yaWdpbkRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuYmFnLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEudmFsaWRpdHlJbmZvLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuZXhwaXJpbmdJbmZvLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEucHJpbWFyeUlkLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEucHJpbWFyeU1vZGVsLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuc2Vjb25kYXJ5SWQsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5pc1RyaWFsXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnbmF2aWdhdGUnOlxyXG4gICAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRlKGRhdGEudXJsKTtcclxuICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdyZWZlcmVuY2VzJzpcclxuICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuUmVmZXJlbmNlcyhcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEubW9kZSxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLm1vZGVsLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuYW5jaG9yLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuYW5jaG9yVGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS51cGRhdGVcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdoaXRzJzpcclxuICAgICAgICAgICAgICAgICAgdGhpcy5yZWxldmFudHMuaGl0cyA9IGRhdGEudG90YWw7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlUmVsZXZhbnRzKCk7XHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgICAgIHRoaXMucmVzaXplKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gY2F0Y2gge1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgICAvLyBPYnNlcnZlIGxheW91dCBjaGFuZ2VzXHJcbiAgICB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlclxyXG4gICAgICAub2JzZXJ2ZShbXHJcbiAgICAgICAgQnJlYWtwb2ludHMuWFNtYWxsLFxyXG4gICAgICAgIEJyZWFrcG9pbnRzLlNtYWxsLFxyXG4gICAgICAgIEJyZWFrcG9pbnRzLk1lZGl1bSxcclxuICAgICAgICBCcmVha3BvaW50cy5MYXJnZSxcclxuICAgICAgICBCcmVha3BvaW50cy5YTGFyZ2UsXHJcbiAgICAgIF0pXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgIGZvciAoY29uc3QgcXVlcnkgb2YgT2JqZWN0LmtleXMocmVzdWx0LmJyZWFrcG9pbnRzKSkge1xyXG4gICAgICAgICAgaWYgKHJlc3VsdC5icmVha3BvaW50c1txdWVyeV0pIHtcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVSZWxldmFudHNQYW5lVmlzaWJpbGl0eSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgLy8gUmVhY3QgdG8gd2luZG93IHNpemUgY2hhbmdlXHJcbiAgICBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUpKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLnJlc2l6ZSgpO1xyXG4gICAgICB9KTtcclxuICAgIHRoaXMucmVzaXplKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMudW5zdWJzY3JpYmUubmV4dCgpO1xyXG4gICAgdGhpcy51bnN1YnNjcmliZS5jb21wbGV0ZSgpO1xyXG4gICAgaWYgKHRoaXMucmVuZGVyZXJMaXN0ZW5lcjEpIHtcclxuICAgICAgdGhpcy5yZW5kZXJlckxpc3RlbmVyMSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFJlc2l6ZSBcclxuICAgKi9cclxuICBwcml2YXRlIHJlc2l6ZSgpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBsZXQgZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbGlwcGVyLWRvY3VtZW50LXNjcm9sbGFibGUnKTtcclxuICAgICAgaWYgKGVsZW0pIHtcclxuICAgICAgICBjb25zdCBoZWlnaHQgPSB0aGlzLmRpYWxvZ1NlcnZpY2UuZ2V0Q3VycmVudERpYWxvZ1Njcm9sbGFibGVIZWlnaHQoXHJcbiAgICAgICAgICBbJ2NsaXBwZXItZG9jdW1lbnQtZml4ZWQnXSxcclxuICAgICAgICAgIHdpbmRvdy5pbm5lckhlaWdodFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc29sZS5sb2coaGVpZ2h0KTtcclxuICAgICAgICBlbGVtLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAncGFkZGluZzowO2hlaWdodDonICsgaGVpZ2h0ICsgJ3B4ICFpbXBvcnRhbnQ7bWF4LWhlaWdodDonICsgaGVpZ2h0ICsgJ3B4ICFpbXBvcnRhbnQnKTtcclxuICAgICAgICBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NsaXBwZXItZG9jdW1lbnQtaWZyYW1lJyk7XHJcbiAgICAgICAgZWxlbT8uc2V0QXR0cmlidXRlKCdzdHlsZScsICdoZWlnaHQ6JyArIChoZWlnaHQgLSAyMCkgKyAncHggIWltcG9ydGFudDttYXgtaGVpZ2h0OicgKyAoaGVpZ2h0IC0gMjApICsgJ3B4ICFpbXBvcnRhbnQnKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJlc2l6ZSgpO1xyXG4gICAgICB9XHJcbiAgICB9LCAwKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgLyoqXHJcbiAqIFNob3cgaGlkZSByZWxldmFudHMgcGFuZSBtYW51YWxseVxyXG4gKi9cclxuICBwcm90ZWN0ZWQgdG9nZ2xlUmVsZXZhbnRzUGFuZSgpIHtcclxuICAgIHRoaXMucmVsZXZhbnRzUGFuZUNsb3NlZCA9ICF0aGlzLnJlbGV2YW50c1BhbmVDbG9zZWQ7XHJcbiAgICB0aGlzLnJlbGV2YW50c1BhbmU/LnRvZ2dsZSgpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGUgZmlsdGVyIHBhbmUgdmlzaWJpbGl0eVxyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFuZGxlUmVsZXZhbnRzUGFuZVZpc2liaWxpdHkoKSB7XHJcbiAgICBpZiAodGhpcy5yZWxldmFudHNQYW5lKSB7XHJcbiAgICAgIGlmICh0aGlzLmJyZWFrcG9pbnRPYnNlcnZlci5pc01hdGNoZWQoQnJlYWtwb2ludHMuWFNtYWxsKSB8fFxyXG4gICAgICAgIHRoaXMuYnJlYWtwb2ludE9ic2VydmVyLmlzTWF0Y2hlZChCcmVha3BvaW50cy5TbWFsbCkgfHxcclxuICAgICAgICB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlci5pc01hdGNoZWQoQnJlYWtwb2ludHMuTWVkaXVtKSkge1xyXG4gICAgICAgIGlmICh0aGlzLnJlbGV2YW50c1BhbmUub3BlbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLnJlbGV2YW50c1BhbmUuY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yZWxldmFudHNQYW5lLm1vZGUgPSAnb3Zlcic7XHJcbiAgICAgICAgdGhpcy5yZWxldmFudHNQYW5lLmRpc2FibGVDbG9zZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucmVsZXZhbnRzUGFuZUhhc0JhY2tkcm9wID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoIXRoaXMucmVsZXZhbnRzUGFuZS5vcGVuZWQgJiYgIXRoaXMucmVsZXZhbnRzUGFuZUNsb3NlZCAmJiB0aGlzLmhhc1JlbGV2YW50cygpKSB7XHJcbiAgICAgICAgICB0aGlzLnJlbGV2YW50c1BhbmUub3BlbigpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5yZWxldmFudHNQYW5lLm9wZW5lZCAmJiB0aGlzLnJlbGV2YW50c1BhbmVDbG9zZWQpIHtcclxuICAgICAgICAgIHRoaXMucmVsZXZhbnRzUGFuZS5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJlbGV2YW50c1BhbmUubW9kZSA9ICdzaWRlJztcclxuICAgICAgICB0aGlzLnJlbGV2YW50c1BhbmUuZGlzYWJsZUNsb3NlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnJlbGV2YW50c1BhbmVIYXNCYWNrZHJvcCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbG9zZSBkaWFsb2dcclxuICAgKi9cclxuXHJcbiAgcHJvdGVjdGVkIGNsb3NlKCkge1xyXG4gICAgaWYgKHRoaXMuY2xvc2luZykge1xyXG4gICAgICB0aGlzLmNsb3NpbmcuZW1pdCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5hdmlnYXRlIHRvIGEgbmV3IGRvY3VtZW50XHJcbiAgICogQHBhcmFtIGlkIDogdGhlIGRvY3VtZW50IGlkXHJcbiAgICovXHJcbiAgbmF2aWdhdGUoaWQ6IHN0cmluZykge1xyXG4gICAgaWYgKCFpZCB8fCBpZC5sZW5ndGggPT0gMClcclxuICAgICAgcmV0dXJuOyAvLyBOb3RoaW5nIHRvIGRvXHJcblxyXG4gICAgaWYgKGlkLmluZGV4T2YoJz8nKSAhPT0gLTEpIHtcclxuICAgICAgaWYgKGlkLnN0YXJ0c1dpdGgoJy9hcGknKSlcclxuICAgICAgICB0aGlzLm5hdmlnYXRlQnlVcmwodGhpcy5jbGlwcGVyU2VydmljZS5zZXJ2aWNlVXJpICsgaWQuc3Vic3RyaW5nKDQpKTtcclxuICAgICAgZWxzZSBpZiAoIWlkLnN0YXJ0c1dpdGgodGhpcy5jbGlwcGVyU2VydmljZS5zZXJ2aWNlVXJpKSlcclxuICAgICAgICB0aGlzLm5hdmlnYXRlQnlVcmwodGhpcy5jbGlwcGVyU2VydmljZS5zZXJ2aWNlVXJpICsgaWQpO1xyXG4gICAgICBlbHNlIHRoaXMubmF2aWdhdGVCeVVybChpZCk7XHJcbiAgICB9IGVsc2VcclxuICAgICAgdGhpcy5uYXZpZ2F0ZUJ5VXJsKFxyXG4gICAgICAgIHRoaXMuY2xpcHBlclNlcnZpY2Uuc2VydmljZVVyaSArXHJcbiAgICAgICAgXCIvZG9jdW1lbnRzL3JlbmRlci8/cXVlcnk9JmlkPVwiICsgaWQpO1xyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5hdmlnYXRlIGJ5IHVybFxyXG4gICAqIEBwYXJhbSB1cmwgOiB0aGUgdXJsICB0byBuYXZpZ2F0ZSB0b1xyXG4gICAqL1xyXG4gIG5hdmlnYXRlQnlVcmwodXJsOiBzdHJpbmcpIHtcclxuICAgIGlmICghdXJsIHx8IHVybC5sZW5ndGggPT09IDAgfHwgdXJsID09PSAnYWJvdXQ6YmxhbmsnKVxyXG4gICAgICByZXR1cm47IC8vIE5vdGhpbmcgdG8gZG9cclxuICAgIC8vIENsZWFuIHVybCwgdGFrZSBvbmx5IHRoZSBmaXJzdCBhbmNob3JcclxuICAgIGxldCBwYXJ0cyA9IHVybC5zcGxpdCgnIycpO1xyXG4gICAgdXJsID0gcGFydHNbMF07XHJcbiAgICBpZiAocGFydHMubGVuZ3RoID4gMSkge1xyXG4gICAgICB1cmwgKz0gJyMnICsgcGFydHNbMV07XHJcbiAgICB9XHJcbiAgICAvLyBIYW5kbGUgZnJlZSB0ZXh0IHF1ZXJ5XHJcbiAgICBsZXQgcXVlcnkgPSAnJztcclxuICAgIGxldCBwID0gdXJsLmluZGV4T2YoJ3F1ZXJ5PScpO1xyXG4gICAgaWYgKHAgIT09IC0xKSB7XHJcbiAgICAgIHAgKz0gNjtcclxuICAgICAgd2hpbGUgKHVybC5sZW5ndGggPiBwICYmIHVybFtwXSAhPT0gJyYnICYmIHVybFtwXSAhPT0gJyMnKSB7XHJcbiAgICAgICAgcXVlcnkgKz0gdXJsW3ArK107XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHF1ZXJ5Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAvLyBSZXNldFxyXG4gICAgICAgIHRoaXMucmVsZXZhbnRzLmhpdCA9IDA7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIC8vIEFzc2lnbiBxdWVyeSB0byBlbmFibGUgc2VhcmNoIGZvciBmcmFnbWVudHNcclxuICAgICAgICAgIHRoaXMubGFzdFF1ZXJ5ID0gZGVjb2RlVVJJQ29tcG9uZW50KGVuY29kZVVSSUNvbXBvbmVudChxdWVyeSkpO1xyXG4gICAgICAgIH0gY2F0Y2gge1xyXG4gICAgICAgICAgdGhpcy5sYXN0UXVlcnkgPSBxdWVyeTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIFRoZW1lXHJcbiAgICBpZiAodXJsLmluZGV4T2YoJ3RoZW1lPScpID09PSAtMSkge1xyXG4gICAgICBwID0gdXJsLmluZGV4T2YoJ2lkPScpO1xyXG4gICAgICBpZiAocCAhPT0gLTEpIHtcclxuICAgICAgICB1cmwgPSB1cmwuc3Vic3RyaW5nKDAsIHApICsgJ3RoZW1lPScgKyB0aGlzLmRpYWxvZ0RhdGEudGhlbWUgKyAnJicgKyB1cmwuc3Vic3RyaW5nKHApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IG5hdmlnYXRlVG9GaWxlID0gdXJsLmluZGV4T2YoJyZmaWxlPXRydWUnKSAhPT0gLTE7XHJcbiAgICBpZiAobmF2aWdhdGVUb0ZpbGUgPT09IHRydWUpIHtcclxuICAgICAgLy8gUHJldmlld1xyXG4gICAgICB0aGlzLnByZXZpZXdGaWxlKHVybCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNsaXBwZXJTZXJ2aWNlLnByZVJlbmRlcigpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgLy8gQmVnaW4gbG9hZGluZyBvbmx5IGlmIG5vdCBkb3dubG9hZGluZyBhIGZpbGVcclxuICAgICAgICB0aGlzLmJ1c3kuc2V0KHVybC5pbmRleE9mKCdkb2N1bWVudHMvcmVuZGVyL2l0ZW0nKSA9PT0gLTEpO1xyXG4gICAgICAgIC8vIE5hdmlnYXRlXHJcbiAgICAgICAgdGhpcy51cmwuc2V0KHVybCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTmF2aWdhdGVkIGNhbGxiYWNrICAgXHJcbiAgICovXHJcbiAgcHVibGljIG5hdmlnYXRlZChcclxuICAgIGlkOiBzdHJpbmcsIC8vIERvY3VtbmVudCBpZFxyXG4gICAgdGl0bGUxOiBzdHJpbmcsIC8vIFRpdGxlIDFcclxuICAgIHRpdGxlMjogc3RyaW5nLCAvLyBUaXRsZSAyXHJcbiAgICBtb2RlbDogbnVtYmVyLCAvLyBNb2RlbFxyXG4gICAgbW9kdWxlSWQ6IG51bWJlciwgLy8gTW9kdWxlXHJcbiAgICBtb2R1bGVOYW1lOiBzdHJpbmcsIC8vIE1vZHVsZSBuYW1lXHJcbiAgICBkYXRlOiBzdHJpbmcsIC8vIERhdGVcclxuICAgIG51bWJlcjogc3RyaW5nLCAvLyBOdW1iZXJcclxuICAgIGF1dGhvcjogc3RyaW5nLCAvLyBBdXRob3JcclxuICAgIG9yaWdpbjogc3RyaW5nLCAvLyBPcmlnaW5cclxuICAgIG9yaWdpbkRlc2NyaXB0aW9uOiBzdHJpbmcsIC8vIE9yaWdpbiBkZXNjcmlwdGlvblxyXG4gICAgYmFnOiBzdHJpbmcsIC8vIEZsYWdzXHJcbiAgICB2YWxpZGl0eUluZm86IHN0cmluZywgLy8gSW5mbyBhYm91dCB2YWxpZGl0eVxyXG4gICAgZXhwaXJpbmdJbmZvOiBzdHJpbmcsIC8vIEluZm8gYWJvdXQgZXhwaXJpbmcgZGF0ZVxyXG4gICAgcHJpbWFyeUlkOiBzdHJpbmcsIC8vIFByaW1hcnkgZG9jdW1lbnQgaWRcclxuICAgIHByaW1hcnlNb2RlbDogbnVtYmVyLCAvLyBQcmltYXJ5IGRvY3VtZW50IG1vZGVsXHJcbiAgICBzZWNvbmRhcnlJZDogc3RyaW5nLCAvLyBTZWNvbmRhcnkgZG9jdW1lbnQgaWRcclxuICAgIGlzVHJpYWw6IGJvb2xlYW4gLy8gVHJ1ZSBpZiBpcyBhIHRyaWFsIHJlcXVlc3RcclxuICApIHtcclxuICAgIC8vIENoZWNrIGZvciBzZXNzaW9uIGV4cGlyaW5nXHJcbiAgICBpZiAodGl0bGUxID09PSAnU2Vzc2lvbmUgbm9uIHZhbGlkYScpIHtcclxuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlXHJcbiAgICAgICAgLmVycm9yKHRpdGxlMiwgbnVsbCwgdGl0bGUxLCAnQWNjZWRpIGRpIG51b3ZvJylcclxuICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydsb2dpbiddKTtcclxuICAgICAgICB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFN0b3JlIGRhdGFcclxuICAgIGlmICghdGhpcy5sYXN0RG9jdW1lbnQpIHtcclxuICAgICAgdGhpcy5sYXN0RG9jdW1lbnQgPSB7fTtcclxuICAgIH1cclxuICAgIHRoaXMubGFzdERvY3VtZW50LmlkID0gaWQ7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5kb2N1bWVudElkID0gaWQ7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC50aXRsZTEgPSB0aXRsZTEgPyBTeXN0ZW1VdGlscy51cmxEZWNvZGUodGl0bGUxKSA6IG51bGw7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC50aXRsZTIgPSB0aXRsZTIgPyBTeXN0ZW1VdGlscy51cmxEZWNvZGUodGl0bGUyKSA6IG51bGw7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5tb2RlbCA9IG1vZGVsO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQubW9kdWxlID0gbW9kdWxlSWQ7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5tb2R1bGVOYW1lID0gbW9kdWxlTmFtZTtcclxuICAgIHRoaXMubGFzdERvY3VtZW50LmRhdGUgPSBuZXcgRGF0ZShkYXRlKTtcclxuICAgIHRoaXMubGFzdERvY3VtZW50Lm51bWJlciA9IG51bWJlcjtcclxuICAgIHRoaXMubGFzdERvY3VtZW50LmF1dGhvciA9IGF1dGhvcjtcclxuICAgIHRoaXMubGFzdERvY3VtZW50Lm9yaWdpbiA9IG9yaWdpbjtcclxuICAgIHRoaXMubGFzdERvY3VtZW50Lm9yaWdpbkRlc2NyaXB0aW9uID0gb3JpZ2luRGVzY3JpcHRpb247XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5iYWcgPSBiYWc7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC52YWxpZGl0eUluZm8gPSB2YWxpZGl0eUluZm87XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5wcmltYXJ5SWQgPSBwcmltYXJ5SWQ7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5wcmltYXJ5TW9kZWwgPSBwcmltYXJ5TW9kZWw7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5oYXNQcmltYXJ5ID1cclxuICAgICAgcHJpbWFyeUlkICYmXHJcbiAgICAgIChtb2RlbCA9PT0gQ2xpcHBlck1vZGVsLkFnZ2lvcm5hbWVudG9Ob3JtYXRpdm8gfHxcclxuICAgICAgICBtb2RlbCA9PT0gQ2xpcHBlck1vZGVsLk5vcm1hdGl2YVZpZ2VudGUpO1xyXG4gICAgaWYgKHByaW1hcnlJZCkge1xyXG4gICAgICB2YXIgZGVzY3JpcHRpb24gPSAnJztcclxuICAgICAgc3dpdGNoIChwcmltYXJ5TW9kZWwgPyBwcmltYXJ5TW9kZWwgOiBtb2RlbCkge1xyXG4gICAgICAgIGNhc2UgQ2xpcHBlck1vZGVsLk5vcm1hdGl2YVZpZ2VudGU6XHJcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9ICdUZXN0byB2aWdlbnRlJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ2xpcHBlck1vZGVsLkFnZ2lvcm5hbWVudG9Ob3JtYXRpdm86XHJcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9ICdUZXN0byBzdG9yaWNvJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ2xpcHBlck1vZGVsLlNjYWRlbnplOlxyXG4gICAgICAgICAgZGVzY3JpcHRpb24gPSAnU2NhZGVuemEnO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDbGlwcGVyTW9kZWwuQ29vcmRpbmFtZW50bzpcclxuICAgICAgICAgIGRlc2NyaXB0aW9uID0gJ01vZGlmaWNhJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9ICdDb2xsZWdhbWVudG8nO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5sYXN0RG9jdW1lbnQucHJpbWFyeURlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247XHJcbiAgICB9XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5zZWNvbmRhcnlJZCA9IHNlY29uZGFyeUlkO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQuaXNUcmlhbCA9IGlzVHJpYWw7XHJcblxyXG4gICAgLy8gSGFuZGxlIGV4cGlyaW5nIGluZm9cclxuICAgIHRoaXMubGFzdERvY3VtZW50LmV4cGlyaW5nRGVzY3JpcHRpb24gPSBudWxsO1xyXG4gICAgaWYgKGV4cGlyaW5nSW5mbykge1xyXG4gICAgICBsZXQgcGFydHMgPSBleHBpcmluZ0luZm8uc3BsaXQoJyMnKTtcclxuICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBsZXQgcGFydHMyID0gcGFydHNbMF0uc3BsaXQoJ3wnKTtcclxuICAgICAgICBpZiAocGFydHMyLmxlbmd0aCA+IDApXHJcbiAgICAgICAgICB0aGlzLmxhc3REb2N1bWVudC5leHBpcmluZ0RhdGUgPSBuZXcgRGF0ZShwYXJ0czJbMF0pO1xyXG4gICAgICAgIGlmIChwYXJ0czIubGVuZ3RoID4gMSkgdGhpcy5sYXN0RG9jdW1lbnQuZXhwaXJpbmdJbmZvID0gcGFydHMyWzFdO1xyXG4gICAgICAgIGlmIChwYXJ0czIubGVuZ3RoID4gMilcclxuICAgICAgICAgIHRoaXMubGFzdERvY3VtZW50LmV4cGlyaW5nSW5mbyArPSAnfCcgKyBwYXJ0czJbMl07XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+IDEpIHRoaXMubGFzdERvY3VtZW50LmV4cGlyaW5nRGVzY3JpcHRpb24gPSBwYXJ0c1sxXTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTZXQgdGl0bGVcclxuICAgIHRoaXMudGl0bGUuc2V0KHRoaXMubGFzdERvY3VtZW50LnRpdGxlMVxyXG4gICAgICA/IHRoaXMubGFzdERvY3VtZW50LnRpdGxlMVxyXG4gICAgICA6IHRoaXMubGFzdERvY3VtZW50LnRpdGxlMik7XHJcblxyXG4gICAgLy8gR2V0IGxhc3QgZG9jdW1lbnQgdXBkYXRlXHJcbiAgICB0aGlzLmNsaXBwZXJTZXJ2aWNlLmxhc3RVcGRhdGUodGhpcy5sYXN0RG9jdW1lbnQuaWQpLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgaWYgKHIuc3VjY2Vzcykge1xyXG4gICAgICAgIHRoaXMubGFzdERvY3VtZW50Lmxhc3RVcGRhdGUgPSByLnZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBOb3RpZnkgbmF2aWdhdGlvbiBoYXMgY29tcGxldGVkXHJcbiAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2Uuc2VuZE1lc3NhZ2UoQ2xpcHBlck1lc3NhZ2VzLkRPQ1VNRU5UX05BVklHQVRFRCwge1xyXG4gICAgICBkb2N1bWVudDogU3lzdGVtVXRpbHMuY2xvbmUodGhpcy5sYXN0RG9jdW1lbnQpLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5idXN5LnNldChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBnb3RvIHByZXZpb3VzIGRvY3VtZW50IGluIGhpc3RvcnlcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgYmFjaygpIHtcclxuICAgIGxldCBmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NsaXBwZXItZG9jdW1lbnQtaWZyYW1lJykgYXMgYW55O1xyXG4gICAgZj8uY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZSgne1widHlwZVwiOiBcImJhY2tcIn0nLCAnKicpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR290byBuZXh0IGRvY3VtZW50IGluIGhpc3RvcnlcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZm9yd2FyZCgpIHtcclxuICAgIGxldCBmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NsaXBwZXItZG9jdW1lbnQtaWZyYW1lJykgYXMgYW55O1xyXG4gICAgZj8uY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZSgne1widHlwZVwiOiBcImZvcndhcmRcIn0nLCAnKicpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAvKipcclxuICAgKiBHb3RvIG5leHQgcmVsZXZhbnQgaXRlbVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBuZXh0UmVsZXZhbnQoKSB7XHJcbiAgICBsZXQgaSA9IHRoaXMucmVsZXZhbnRzLmhpdCArIDE7XHJcbiAgICBpZiAoaSA8PSB0aGlzLnJlbGV2YW50cy5oaXRzKSB7XHJcbiAgICAgIGxldCBmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NsaXBwZXItZG9jdW1lbnQtaWZyYW1lJykgYXMgYW55O1xyXG4gICAgICBmPy5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKCd7XCJ0eXBlXCI6IFwicmVsZXZhbnRcIiwgXCJ2YWx1ZVwiOiBcIm5leHRcIn0nLCAnKicpO1xyXG4gICAgICB0aGlzLnJlbGV2YW50cy5oaXQrKztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdvdG8gcHJldmlvdXMgcmVsZXZhbnQgaXRlbVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBwcmV2aW91c1JlbGV2YW50KCkge1xyXG4gICAgbGV0IGkgPSB0aGlzLnJlbGV2YW50cy5oaXQgLSAxO1xyXG4gICAgaWYgKGkgPiAwKSB7XHJcbiAgICAgIGxldCBmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NsaXBwZXItZG9jdW1lbnQtaWZyYW1lJykgYXMgYW55O1xyXG4gICAgICBmPy5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKFxyXG4gICAgICAgICd7XCJ0eXBlXCI6IFwicmVsZXZhbnRcIiwgXCJ2YWx1ZVwiOiBcInByZXZpb3VzXCJ9JyxcclxuICAgICAgICAnKidcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5yZWxldmFudHMuaGl0LS07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHb3RvIGEgcmVsZXZhbnQgaXRlbVxyXG4gICAqIEBwYXJhbSBpdGVtIDogdGhlIGl0ZW0gdG8gZ28gdG9cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZ290b1JlbGV2YW50KGl0ZW06IENsaXBwZXJEb2N1bWVudEFuY2hvckluZm8pIHtcclxuICAgIGlmIChpdGVtLnR5cGUgPT09IDIwKSB7XHJcbiAgICAgIHdpbmRvdy5vcGVuKFxyXG4gICAgICAgIHRoaXMuY2xpcHBlclNlcnZpY2Uuc2VydmljZVVyaSArXHJcbiAgICAgICAgXCIvZG9jdW1lbnRzL3JlbmRlci9pdGVtLz90aGVtZT1cIiArIHRoaXMuZGlhbG9nRGF0YS50aGVtZSArIFwiJmlkPVwiICsgaXRlbS5kb2N1bWVudElkLFxyXG4gICAgICAgICdfYmxhbmsnXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbGlwcGVyLWRvY3VtZW50LWlmcmFtZScpIGFzIGFueTtcclxuICAgICAgZj8uY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZShcclxuICAgICAgICAne1widHlwZVwiOiBcInJlbGV2YW50XCIsIFwidmFsdWVcIjogXCInICsgaXRlbS51cmkgKyAnXCJ9JyxcclxuICAgICAgICAnKidcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSByZWxldmFudCBpdGVtc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgdXBkYXRlUmVsZXZhbnRzKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICAhdGhpcy5sYXN0UXVlcnkgfHxcclxuICAgICAgdGhpcy5sYXN0UXVlcnkubGVuZ3RoID09PSAwIHx8XHJcbiAgICAgIHRoaXMubGFzdFF1ZXJ5ID09PSAnICdcclxuICAgICkge1xyXG4gICAgICB0aGlzLmhhbmRsZVJlbGV2YW50c1BhbmVWaXNpYmlsaXR5KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgcGFyYW1zID0gbmV3IENsaXBwZXJTZWFyY2hQYXJhbXMoKTtcclxuICAgICAgcGFyYW1zLmlkID0gdGhpcy5sYXN0RG9jdW1lbnQuZG9jdW1lbnRJZCA/PyB0aGlzLmxhc3REb2N1bWVudC5pZDtcclxuICAgICAgcGFyYW1zLnRleHQgPSB0aGlzLmxhc3RRdWVyeTtcclxuICAgICAgcGFyYW1zLmNvdW50ID0gMTtcclxuICAgICAgdGhpcy5jbGlwcGVyU2VydmljZVxyXG4gICAgICAgIC5xdWVyeShwYXJhbXMpXHJcbiAgICAgICAgLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgICAgIGlmICghci5zdWNjZXNzKSB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3Ioci5tZXNzYWdlKTtcclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgbWluaW11bVNjb3JlID0gMDtcclxuICAgICAgICAgICAgaWYgKHIudmFsdWU/Lml0ZW1zICYmIHIudmFsdWU/Lml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICByLnZhbHVlLml0ZW1zWzBdLmFuY2hvcnMuZm9yRWFjaChuID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBzY29yZSA9IG4uc2NvcmU7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2NvcmUgPiA3KSBzY29yZSAtPSA3O1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2NvcmUgPiA1KSBzY29yZSAtPSA1O1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2NvcmUgPiAzKSBzY29yZSAtPSAzO1xyXG4gICAgICAgICAgICAgICAgaWYgKG1pbmltdW1TY29yZSA+IHNjb3JlKSBtaW5pbXVtU2NvcmUgPSBzY29yZTtcclxuICAgICAgICAgICAgICAgIG4uc2NvcmUgPSBzY29yZTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB0aGlzLnJlbGV2YW50cy5taW5pbXVtU2NvcmUgPSBtaW5pbXVtU2NvcmU7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZWxldmFudHMuaXRlbXMgPSByLnZhbHVlLml0ZW1zWzBdLmFuY2hvcnM7XHJcbiAgICAgICAgICAgICAgdGhpcy5oYXNSZWxldmFudHMuc2V0KHRoaXMucmVsZXZhbnRzLml0ZW1zPy5sZW5ndGggPiAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZVJlbGV2YW50c1BhbmVWaXNpYmlsaXR5KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIERpc3BsYXkgZG9jdW1lbnQgc3RydWN0dXJlXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGluZGV4KGRvY3VtZW50SWQ6IHN0cmluZykge1xyXG4gICAgbGV0IGQgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbihDbGlwcGVyRG9jdW1lbnRJbmRleENvbXBvbmVudCwge1xyXG4gICAgICBhcmlhTGFiZWw6ICdpbmRpY2UgZG9jdW1lbnRvJyxcclxuICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcclxuICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZSxcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICBjbG9zZU9uTmF2aWdhdGlvbjogZmFsc2UsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBkb2N1bWVudElkOiBkb2N1bWVudElkLFxyXG4gICAgICAgIGV4Y2x1ZGVkVHlwZXM6IG51bGwsXHJcbiAgICAgICAgbXVsdGlwbGU6IGZhbHNlXHJcbiAgICAgIH0sXHJcbiAgICAgIG1pbldpZHRoOiAnMzc1cHgnLFxyXG4gICAgICBtYXhXaWR0aDogJzYwMHB4JyxcclxuICAgICAgd2lkdGg6ICcxMDAlJyxcclxuICAgIH0pO1xyXG4gICAgZC5jb21wb25lbnRJbnN0YW5jZS5kb25lXHJcbiAgICAgIC5zdWJzY3JpYmUoKHI6IENsaXBwZXJEb2N1bWVudEluZGV4RGlhbG9nUmVzdWx0KSA9PiB7XHJcbiAgICAgICAgY29uc3QgaXRlbSA9IHIuZGF0YS5sZW5ndGggPiAwID8gci5kYXRhWzBdIDogbnVsbDtcclxuICAgICAgICBpZiAoaXRlbSkge1xyXG4gICAgICAgICAgaWYgKGl0ZW0uZG9jdW1lbnRJZCA9PT0gZG9jdW1lbnRJZCkge1xyXG4gICAgICAgICAgICBsZXQgZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbGlwcGVyLWRvY3VtZW50LWlmcmFtZScpIGFzIGFueTtcclxuICAgICAgICAgICAgZj8uY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZShcclxuICAgICAgICAgICAgICAne1widHlwZVwiOiBcImdvdG9cIiwgXCJ2YWx1ZVwiOlwiJyArIGl0ZW0udXJpICsgJ1wifScsXHJcbiAgICAgICAgICAgICAgJyonXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm9wZW5Eb2N1bWVudChpdGVtLmRvY3VtZW50SWQgKyAnIycgKyBpdGVtLnVyaSwpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZC5jbG9zZSgpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gKiBHZXQgdGhlIGlkIGluIGEgcXVlcnkgc3RyaW5nXHJcbiAqIEBwYXJhbSB1cmwgOiB0aGUgdXJsIHRvIHByb2Nlc3NcclxuICogQHBhcmFtIG5hbWUgOiB0aGUgb3B0aW9uYWwgaWQgcGFyYW1lbnRlciBuYW1lLiBEZWZhdWx0IGlzICdpZCdcclxuICogQHJldHVybnMgOiB0aGUgaWQgcGFyYW1lXHJcbiAqL1xyXG4gIHByaXZhdGUgZ2V0SWQodXJsOiBzdHJpbmcsIG5hbWU6IHN0cmluZyA9ICdpZCcpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qgc3RhcnQgPSB1cmwubGFzdEluZGV4T2YobmFtZSArICc9JykgKyAzO1xyXG4gICAgY29uc3QgZW5kID0gdXJsLmluZGV4T2YoJyYnLCBzdGFydCk7XHJcbiAgICByZXR1cm4gdXJsLnN1YnN0cmluZyhzdGFydCwgZW5kKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFByZXZpZXcgYSBmaWxlIGlmIHBvc3NpYmxlXHJcbiAgICogQHBhcmFtIHVybCA6IHRoZSB1cmwgdG8gcHJldmlld1xyXG4gICAqL1xyXG4gIHByaXZhdGUgcHJldmlld0ZpbGUodXJsOiBzdHJpbmcpIHtcclxuICAgIGlmICghdXJsIHx8IHVybC5sZW5ndGggPT09IDApXHJcbiAgICAgIHJldHVybjsgLy8gTm90aGluZyB0byBkb1xyXG4gICAgLy8gR2V0IHRoZSBpZFxyXG4gICAgbGV0IGlkID0gdGhpcy5nZXRJZCh1cmwpO1xyXG4gICAgaWYgKCFpZCB8fCBpZC5sZW5ndGggPT09IDApXHJcbiAgICAgIHJldHVybjsgLy8gTm90aGluZyB0byBkb1xyXG4gICAgLy8gQ3JlYXRlIHRoZSB1cmxcclxuICAgIHRoaXMuY2xpcHBlclNlcnZpY2UubmV3T1RQKGlkKS5zdWJzY3JpYmUoXHJcbiAgICAgIHIgPT4ge1xyXG4gICAgICAgIGlmICghci5zdWNjZXNzKSB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3Ioci5tZXNzYWdlKTtcclxuICAgICAgICBlbHNlIGlmICghci52YWx1ZS5jYW5QcmV2aWV3KVxyXG4gICAgICAgICAgLy8gRG9ubG9hZCBtYW51YWxseVxyXG4gICAgICAgICAgbG9jYXRpb24uaHJlZiA9IHVybDtcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKEZpbGVQcmV2aWV3Q29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6ICdwcmV2aWV3LXBhbmVsJyxcclxuICAgICAgICAgICAgYXJpYUxhYmVsOiAnYW50ZXByaW1hJyxcclxuICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcclxuICAgICAgICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZSxcclxuICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgdXJsOiB1cmwsXHJcbiAgICAgICAgICAgICAgZW1iZWQ6IHIudmFsdWUuY2FuRW1iZWRcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgbWluV2lkdGg6ICczNzVweCcsXHJcbiAgICAgICAgICAgIG1heFdpZHRoOiAnOTAwcHgnLFxyXG4gICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxyXG4gICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJ1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAgKiBTaG93IGRvY3VtZW50IGNvbW1lbnRcclxuICAgICovXHJcbiAgcHJvdGVjdGVkIHNob3dDb21tZW50KCkge1xyXG4gICAgaWYgKHRoaXMubGFzdERvY3VtZW50Py5iYWdbN10gIT09ICdUJykgcmV0dXJuO1xyXG4gICAgdGhpcy5jbGlwcGVyU2VydmljZVxyXG4gICAgICAuY29tbWVudCh0aGlzLmxhc3REb2N1bWVudD8uZG9jdW1lbnRJZClcclxuICAgICAgLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgICBpZiAoIXIuc3VjY2Vzcykge1xyXG4gICAgICAgICAgaWYgKHIubWVzc2FnZSA9PT0gXCJJbCB0dW8gYWJib25hbWVudG8gbm9uIGNvbnNlbnRlIGRpIHZpc3VhbGl6emFyZSBpIGNvbW1lbnRpIGFsbGUgbm9ybWUuXCIpXHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5lcnJvcihcIklsIHNlcnZpemlvIGRpIDxiPmNvbW1lbnRpIGFsbGUgbm9ybWU8L2I+IG5vbiDDqCBjb21wcmVzbyBuZWwgdHVvIGFiYm9uYW1lbnRvLCBwZXIgbWFnZ2lvcmkgaW5mb3JtYXppb25pIHJpdm9sZ2Vyc2kgYWxsJ2FnZW50ZSBjb21tZXJjaWFsZSBkaSByaWZlcmltZW50byBvIGludmlhcmUgdW5hIG1haWwgYSA8YSBocmVmPSdtYWlsdG86c2FsZXNAYXJzZWRpemlvbmkuaXQnIHRhcmdldD0nX2JsYW5rJz5zYWxlc0BhcnNlZGl6aW9uaS5pdDwvYT4uXCIsIG51bGwsIFwiQXR0ZW56aW9uZVwiKTtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKHIubWVzc2FnZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChyLnZhbHVlICYmIHIudmFsdWUubGVuZ3RoID4gMSlcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmluZm8oXHJcbiAgICAgICAgICAgICAgci52YWx1ZS5yZXBsYWNlKC9cXG4vZywgJzxicj5cXHJcXG4nKSxcclxuICAgICAgICAgICAgICBcIkNvbW1lbnRvXCIsXHJcbiAgICAgICAgICAgICAgXCJDaGl1ZGlcIixcclxuICAgICAgICAgICAgICA3MDApO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuaW5mbyhcIkNvbW1lbnRvIG5vbiBwacO5IGRpc3BvbmliaWxlIG8gaW4gZmFzZSBkaSByZXZpc2lvbmUuXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogT3BlbiBhbiBpdGVtXHJcbiAgICogQHBhcmFtIGRvY3VtZW50SWQgOiB0aGUgZG9jdW1lbnQgaWRcclxuICAgKiBAcGFyYW0gcXVlcnk6IHRoZSBjdXJyZW50IHF1ZXJ5IG9yIG51bGxcclxuICAgKiBAcGFyYW0gbmV3V2luZG93OiB0cnVlIGlmIHRoZSBkb2N1bWVudCBtdXN0IGJlIG9wZW4gaW50byBhIG5ldyB3aW5kb3dcclxuICAgKi9cclxuICBvdmVycmlkZSBvcGVuKGRvY3VtZW50SWQ6IHN0cmluZywgcXVlcnk6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsLCBuZXdXaW5kb3c6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgaWYgKCFuZXdXaW5kb3cpIHtcclxuICAgICAgaWYgKHRoaXMub3BlbmluZykgdGhpcy5vcGVuaW5nLmVtaXQoZG9jdW1lbnRJZCk7XHJcbiAgICAgIGVsc2UgdGhpcy5vcGVuRG9jdW1lbnQoZG9jdW1lbnRJZCwgcXVlcnkpO1xyXG4gICAgfSBlbHNlIHdpbmRvdy5vcGVuKCcvZG9jdW1lbnRvLycgKyBkb2N1bWVudElkLCAnX2JsYW5rJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPcGVuIGEgZG9jdW1lbnRcclxuICAgKiBAcGFyYW0gZG9jdW1lbnRJZCA6IHRoZSBkb2N1bWVudCBpZFxyXG4gICAqIEBwYXJhbSBxdWVyeTogdGhlIGN1cnJlbnQgcXVlcnkgb3IgbnVsbFxyXG4gICAqL1xyXG4gIHByaXZhdGUgb3BlbkRvY3VtZW50KGRvY3VtZW50SWQ6IHN0cmluZywgcXVlcnk6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsKSB7XHJcbiAgICBpZiAoIWRvY3VtZW50SWQpIHJldHVybjtcclxuICAgIENsaXBwZXJEb2N1bWVudHNVdGlscy5vcGVuRG9jdW1lbnQoXHJcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZSxcclxuICAgICAgdGhpcy5jbGlwcGVyU2VydmljZSxcclxuICAgICAgZG9jdW1lbnRJZCxcclxuICAgICAgcXVlcnksXHJcbiAgICAgIHRoaXMuZGlhbG9nRGF0YS5zZWxlY3Rpb25Nb2RlLFxyXG4gICAgICB0aGlzLmRpYWxvZ0RhdGEudGhlbWVcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCcm93c2UgZG9jdW1lbnQgcmVmZXJlbmNlc1xyXG4gICAqIEBwYXJhbSBkb2N1bWVudElkIDogdGhlIGRvY3VtZW50IGlkXHJcbiAgICogQHBhcmFtIG1vZGUgOiB0aGUgbW9kZVxyXG4gICAqL1xyXG4gIG92ZXJyaWRlIG9wZW5SZWZlcmVuY2VzKFxyXG4gICAgZG9jdW1lbnRJZDogc3RyaW5nLFxyXG4gICAgbW9kZTogQ2xpcHBlclF1ZXJ5UmVmZXJlbmNlc01vZGUgPSBDbGlwcGVyUXVlcnlSZWZlcmVuY2VzTW9kZS5SZWZlcmVuY2VzSW4sXHJcbiAgICBtb2RlbDogbnVtYmVyID0gbnVsbCxcclxuICAgIGFuY2hvcjogc3RyaW5nID0gbnVsbCxcclxuICAgIGFuY2hvclRpdGxlOiBzdHJpbmcgPSBudWxsLFxyXG4gICAgdXBkYXRlOiBib29sZWFuID0gdHJ1ZVxyXG4gICkge1xyXG4gICAgbGV0IGQgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbihDbGlwcGVyUmVmZXJlbmNlc0NvbXBvbmVudCwge1xyXG4gICAgICBhcmlhTGFiZWw6ICdyaWZlcmltZW50aSBsZWdhdGkgYWwgZG9jdW1lbnRvJyxcclxuICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcclxuICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZSxcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICBjbG9zZU9uTmF2aWdhdGlvbjogZmFsc2UsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBkb2N1bWVudElkOiBkb2N1bWVudElkID8/IHRoaXMubGFzdERvY3VtZW50Py5kb2N1bWVudElkLFxyXG4gICAgICAgIG1vZGU6IG1vZGUsXHJcbiAgICAgICAgbW9kZWw6IG1vZGVsLFxyXG4gICAgICAgIGFuY2hvcjogYW5jaG9yLFxyXG4gICAgICAgIGFuY2hvclRpdGxlOiBhbmNob3JUaXRsZSxcclxuICAgICAgICB1cGRhdGU6IHVwZGF0ZSxcclxuICAgICAgfSxcclxuICAgICAgbWluV2lkdGg6ICczNzVweCcsXHJcbiAgICAgIG1heFdpZHRoOiAnMTAwMHB4JyxcclxuICAgICAgd2lkdGg6ICcxMDAlJyxcclxuICAgICAgaGVpZ2h0OiAnMTAwJScsXHJcbiAgICB9KTtcclxuICAgIGQuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAuc3Vic2NyaWJlKChyOiBDbGlwcGVyUmVmZXJlbmNlRGlhbG9nUmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHIgJiYgci5kb2N1bWVudElkKSB7XHJcbiAgICAgICAgICB0aGlzLm5hdmlnYXRlKHIuZG9jdW1lbnRJZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERpc3BsYXkgYSByZXBvcnRcclxuICAgKiBAcGFyYW0gaXRlbVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBkaXNwbGF5UmVwb3J0KGl0ZW06IENsaXBwZXJEb2N1bWVudEluZm8pIHtcclxuICAgIGlmICghaXRlbSkgcmV0dXJuO1xyXG4gICAgaWYgKGl0ZW0ubW9kZWwgIT0gQ2xpcHBlck1vZGVsLk5vcm1hdGl2YVZpZ2VudGUgJiYgaXRlbS5tb2RlbCAhPSBDbGlwcGVyTW9kZWwuU2NhZGVuemUpIHtcclxuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmluZm8oXCJRdWVzdGEgZnVuemlvbmFsaXTDoCBub24gw6ggZGlzcG9uaWJpbGUgcGVyIHF1ZXN0byB0aXBvIGRpIGRvY3VtZW50by5cIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMub3BlblJlcG9ydChpdGVtLmlkLCBpdGVtLnRpdGxlMSA/IGl0ZW0udGl0bGUxIDogaXRlbS50aXRsZTIpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2tzIGlmIGRvY3VtZW50cyBjYW4gYmUgc2VsZWN0ZWQgYW5kIHJldHVybmVkIGFzIG1lc3NhZ2VcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgY2FuU2VsZWN0KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uTW9kZSA+IDAgJiYgdGhpcy5sYXN0RG9jdW1lbnQgJiYgKHRoaXMubGFzdERvY3VtZW50Py5tb2RlbCA9PT0gQ2xpcHBlck1vZGVsLk5vcm1hdGl2YVZpZ2VudGUgfHwgdGhpcy5sYXN0RG9jdW1lbnQ/Lm1vZGVsID09PSBDbGlwcGVyTW9kZWwuQWdnaW9ybmFtZW50b05vcm1hdGl2bylcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbmQgYSBtZXNzYWdlIHdpdGggY3VycmVudCBzZWxlY3Rpb24gYW5kIGNsb3NlIGRpYWxvZ1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBzZWxlY3QoKSB7XHJcbiAgICBpZiAodGhpcy5sYXN0RG9jdW1lbnQpIHtcclxuICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLnNlbmRNZXNzYWdlKENsaXBwZXJNZXNzYWdlcy5ET0NVTUVOVF9TRUxFQ1RFRF9JTk5FUiwgW1xyXG4gICAgICAgIHRoaXMubGFzdERvY3VtZW50LFxyXG4gICAgICBdKTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbiIsIjxkaXYgY2xhc3M9XCJjbGlwcGVyLWRvY3VtZW50LWZpeGVkXCI+XHJcbiAgPGRpdiBzdHlsZT1cImhlaWdodDo2cHhcIj5cclxuICAgIEBpZiAoYnVzeSgpKSB7XHJcbiAgICA8bWF0LXByb2dyZXNzLWJhciBzdHlsZT1cInotaW5kZXg6MTFcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiPjwvbWF0LXByb2dyZXNzLWJhcj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuICA8ZGl2PlxyXG4gICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMjBweFwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBzdGFydFwiIGZ4RmlsbD5cclxuICAgICAgPGRpdiBmeEZsZXg9XCIqXCIgY2xhc3M9XCJ0aXRsZS1jb250YWluZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUgYm9sZFwiPnt7dGl0bGUoKX19PC9kaXY+XHJcbiAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQgJiYgbGFzdERvY3VtZW50Py5sYXN0VXBkYXRlKSB7XHJcbiAgICAgICAgPGRpdiBzdHlsZT1cInBhZGRpbmctdG9wOiA1cHg7XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwieC1zbWFsbCBhY2NlbnQgYm9sZCB1cHBlcmNhc2VcIj5cclxuICAgICAgICAgICAgQUdHSU9STkFUTyBBOlxyXG4gICAgICAgICAgICB7e2xhc3REb2N1bWVudD8ubGFzdFVwZGF0ZX19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQgJiYgKGxhc3REb2N1bWVudD8uZXhwaXJpbmdEZXNjcmlwdGlvbiB8fCBsYXN0RG9jdW1lbnQ/LnZhbGlkaXR5SW5mbykpIHtcclxuICAgICAgICA8ZGl2IHN0eWxlPVwicGFkZGluZy10b3A6IDVweDtcIj5cclxuICAgICAgICAgIEBpZiAobGFzdERvY3VtZW50Py5leHBpcmluZ0Rlc2NyaXB0aW9uKSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwieC1zbWFsbCBhY2NlbnQtbG93IGJvbGQgdXBwZXJjYXNlXCI+XHJcbiAgICAgICAgICAgIHt7bGFzdERvY3VtZW50Py5leHBpcmluZ0Rlc2NyaXB0aW9ufX08L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpZiAobGFzdERvY3VtZW50Py52YWxpZGl0eUluZm8pIHtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ4LXNtYWxsIGVycm9yIGJvbGQgdXBwZXJjYXNlXCI+PGI+QXR0ZW56aW9uZSE8L2I+XHJcbiAgICAgICAgICAgIHt7bGFzdERvY3VtZW50Py52YWxpZGl0eUluZm99fTwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIEBpZiAoY2FuU2VsZWN0KCkpIHtcclxuICAgICAgPGRpdiBmeEZsZXg9XCIxNzBweFwiIGZ4RmxleC5sdC1tZD1cIjU4cHhcIj5cclxuICAgICAgICA8YnV0dG9uIGZ4SGlkZS5sdC1tZCBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBjb2xvcj1cInByaW1hcnlcIiBtYXQtZmxhdC1idXR0b24gKGNsaWNrKT1cInNlbGVjdCgpXCJcclxuICAgICAgICAgIGNsYXNzPVwiY2xpcHBlci1zZWxlY3Rpb24tYnV0dG9uXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiA4cHg7XCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNtYWxsIHVwcGVyY2FzZVwiPlVzYSBzZWxlemlvbmU8L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBmeEhpZGUuZ3Qtc20gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgY29sb3I9XCJwcmltYXJ5XCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJzZWxlY3QoKVwiXHJcbiAgICAgICAgICBjbGFzcz1cImNsaXBwZXItc2VsZWN0aW9uLWljb24tYnV0dG9uXCIgbWF0VG9vbHRpcD1cIlVzYSBzZWxlemlvbmVcIiBhcmlhLWxhYmVsPVwiJ1VzYSBsYSBzZWxlemlvbmUnXCJcclxuICAgICAgICAgIHN0eWxlPVwibWFyZ2luLXRvcDogNHB4O1wiPlxyXG4gICAgICAgICAgPG1hdC1pY29uPmNoZWNrPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgICAgPGRpdiBmeEZsZXg9XCIxNjRweFwiIGZ4RmxleC5sdC1tZD1cIjQ4cHhcIiBmeExheW91dEFsaWduPVwiZW5kXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRpYWxvZy1jbG9zZVwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBmeEhpZGUubHQtbWQgZnhGbGV4QWxpZ249XCJzdGFydFwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcD1cIkluZGlldHJvXCJcclxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkluZGlldHJvXCIgKGNsaWNrKT1cImJhY2soKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+YXJyb3dfYmFjazwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gZnhIaWRlLmx0LW1kIGZ4RmxleEFsaWduPVwic3RhcnRcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXA9XCJBdmFudGlcIiBhcmlhLWxhYmVsPVwiQXZhbnRpXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImZvcndhcmQoKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+YXJyb3dfZm9yd2FyZDwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJzdGFydFwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcD1cIkNoaXVkaVwiIGFyaWEtbGFiZWw9XCJDaGl1ZGlcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xvc2UoKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdj5cclxuICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3cgd3JhcCBcIiBmeEZpbGwgZnhMYXlvdXRBbGlnbj1cInNwYWNlLWJldHdlZW4gY2VudGVyXCIgc3R5bGU9XCJwYWRkaW5nOiAxMHB4IDEwcHggMTBweCAxNXB4O1wiPlxyXG4gICAgICA8ZGl2IGZ4RmxleC54cz1cIjEwMFwiPlxyXG4gICAgICAgIEBpZiAobGFzdERvY3VtZW50Py5tb2RlbCA9PT0gOSkge1xyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEgaW5kaWNlJ1wiXHJcbiAgICAgICAgICAoY2xpY2spPVwiaW5kZXgobGFzdERvY3VtZW50Py5kb2N1bWVudElkKVwiPlxyXG4gICAgICAgICAgSW5kaWNlXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAobGFzdERvY3VtZW50Py5iYWcgJiYgKGxhc3REb2N1bWVudD8uYmFnWzFdID09PSdUJyB8fCBsYXN0RG9jdW1lbnQ/LmJhZ1szXSA9PT0nVCcpKSB7XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIG1hdFRvb2x0aXA9XCJDb2xsZWdhbWVudGlcIlxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQ29sbGVnYW1lbnRpIGFsIGRvY3VtZW50bydcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudUxpbmtzXCI+XHJcbiAgICAgICAgICBDb2xsZWdhbWVudGlcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgPG1hdC1tZW51ICNtZW51TGlua3M9XCJtYXRNZW51XCI+XHJcbiAgICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8uYmFnICYmIGxhc3REb2N1bWVudD8uYmFnWzFdID09PSdUJykge1xyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01vc3RyYSBkb2N1bWVudGkgcmljaGlhbWF0aSdcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib3BlblJlZmVyZW5jZXMobGFzdERvY3VtZW50Py5kb2N1bWVudElkLCAxKVwiPlxyXG4gICAgICAgICAgICBEb2N1bWVudGkgcmljaGlhbWF0aVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8uYmFnICYmIGxhc3REb2N1bWVudD8uYmFnWzNdID09PSdUJykge1xyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01vc3RyYSBkb2N1bWVudGkgY2hlIHJpY2hpYW1hbm8nXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5SZWZlcmVuY2VzKGxhc3REb2N1bWVudD8uZG9jdW1lbnRJZCwgMilcIj5cclxuICAgICAgICAgICAgRG9jdW1lbnRpIGNoZSByaWNoaWFtYW5vXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpZiAobGFzdERvY3VtZW50Py5iYWcgJiYgbGFzdERvY3VtZW50Py5iYWdbMl0gPT09J1QnKSB7XHJcbiAgICAgICAgICA8YnV0dG9uIGZ4SGlkZSBmeFNob3cubHQtbWQgbWF0LW1lbnUtaXRlbSBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEganVyaXMnXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5SZWZlcmVuY2VzKGxhc3REb2N1bWVudD8uZG9jdW1lbnRJZCwgNClcIj5cclxuICAgICAgICAgICAgSnVyaXNcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/LmJhZyAmJiBsYXN0RG9jdW1lbnQ/LmJhZ1s0XSA9PT0nVCcpIHtcclxuICAgICAgICAgIDxidXR0b24gZnhIaWRlIGZ4U2hvdy5sdC1tZCBtYXQtbWVudS1pdGVtIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01vc3RyYSBtb2RpZmljaGUgc3ViaXRlJ1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuUmVmZXJlbmNlcyhsYXN0RG9jdW1lbnQ/LmRvY3VtZW50SWQsIDMpXCI+XHJcbiAgICAgICAgICAgIE1vZGlmaWNoZSBzdWJpdGVcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/LmJhZyAmJiBsYXN0RG9jdW1lbnQ/LmJhZ1s0XSAhPT0nVCcgJiYgbGFzdERvY3VtZW50Py5iYWdbNl0gPT09J1QnKSB7XHJcbiAgICAgICAgICA8YnV0dG9uIGZ4SGlkZSBmeFNob3cubHQtbWQgbWF0LW1lbnUtaXRlbSBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEgbW9kaWZpY2hlIGFwcG9ydGF0ZSdcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib3BlblJlZmVyZW5jZXMobGFzdERvY3VtZW50Py5kb2N1bWVudElkLCA1KVwiPlxyXG4gICAgICAgICAgICBNb2RpZmljaGUgYXBwb3J0YXRlXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICAgIEBpZiAobGFzdERvY3VtZW50Py5oYXNQcmltYXJ5KSB7XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEgZG9jdW1lbnRvIHByaW1hcmlvJ1wiIChjbGljayk9XCJuYXZpZ2F0ZShsYXN0RG9jdW1lbnQ/LnByaW1hcnlJZClcIj5cclxuICAgICAgICAgIHt7bGFzdERvY3VtZW50Py5wcmltYXJ5RGVzY3JpcHRpb259fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8uYmFnICYmIGxhc3REb2N1bWVudD8uYmFnWzJdID09PSdUJykge1xyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgZnhIaWRlLmx0LW1kIG1hdC1idXR0b25cclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01vc3RyYSBqdXJpcydcIiAoY2xpY2spPVwib3BlblJlZmVyZW5jZXMobGFzdERvY3VtZW50Py5kb2N1bWVudElkLCA0KVwiPlxyXG4gICAgICAgICAgSnVyaXNcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/LmJhZyAmJiBsYXN0RG9jdW1lbnQ/LmJhZ1s0XSA9PT0gJ1QnKSB7XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiBmeEhpZGUubHQtbWQgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIG1vZGlmaWNoZSBzdWJpdGUnXCIgKGNsaWNrKT1cIm9wZW5SZWZlcmVuY2VzKGxhc3REb2N1bWVudD8uZG9jdW1lbnRJZCwgMylcIj5cclxuICAgICAgICAgIE1vZGlmaWNoZSBzdWJpdGVcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/LmJhZyAmJiBsYXN0RG9jdW1lbnQ/LmJhZ1s0XSAhPT0gJ1QnICYmIGxhc3REb2N1bWVudD8uYmFnWzZdID09PSAnVCcpIHtcclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIGZ4SGlkZS5sdC1tZCBtYXQtYnV0dG9uXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEgbW9kaWZpY2hlIGFwcG9ydGF0ZSdcIiAoY2xpY2spPVwib3BlblJlZmVyZW5jZXMobGFzdERvY3VtZW50Py5kb2N1bWVudElkLCA1KVwiPlxyXG4gICAgICAgICAgTW9kaWZpY2hlIGFwcG9ydGF0ZVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8uc2Vjb25kYXJ5SWQpIHtcclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b25cclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01vc3RyYSBkb2N1bWVudG8gc2Vjb25kYXJpbydcIiAoY2xpY2spPVwibmF2aWdhdGUobGFzdERvY3VtZW50Py5zZWNvbmRhcnlJZClcIj5cclxuICAgICAgICAgIFRlc3RvIHN0b3JpY29cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/LmJhZyAmJiBsYXN0RG9jdW1lbnQ/LmJhZ1s3XSA9PT0gJ1QnKSB7XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01vc3RyYSBjb21tZW50bydcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInNob3dDb21tZW50KClcIj5cclxuICAgICAgICAgIENvbW1lbnRvXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBmeEZsZXgueHM9XCIxMDBcIiBmeExheW91dEFsaWduPVwiZW5kXCI+XHJcbiAgICAgICAgPGRpdiBmeEZsZXhBbGlnbj1cImNlbnRlclwiPlxyXG4gICAgICAgICAgQGlmIChoYXNSZWxldmFudHMoKSAmJiByZWxldmFudHMuaGl0cykge1xyXG4gICAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMTBweFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGZ4RmxleEFsaWduPVwiY2VudGVyXCIgY2xhc3M9XCJzbWFsbCBpdGVtLWdyZXllZFwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6MjBweDsgbWFyZ2luLXJpZ2h0OiA1cHhcIlxyXG4gICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJQYXJvbGUgZXZpZGVuemlhdGVcIj57e3JlbGV2YW50cy5oaXR9fVxyXG4gICAgICAgICAgICAgIGRpIHt7cmVsZXZhbnRzLmhpdHN9fTwvZGl2PlxyXG4gICAgICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBbYXR0ci5hcmlhLWxhYmVsXT1cIidWYWkgYWxsYSBwYXJvbGEgcHJlY2VkZW50ZSdcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJwcmV2aW91c1JlbGV2YW50KClcIiBtYXRUb29sdGlwPVwiUGFyb2xhIHByZWNlZGVudGVcIiBbZGlzYWJsZWRdPVwicmVsZXZhbnRzLmhpdCA8PSAxXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uPmNoZXZyb25fbGVmdDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBbYXR0ci5hcmlhLWxhYmVsXT1cIidWYWkgYWxsYSBwcm9zc2ltYSBwYXJvbGEnXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwibmV4dFJlbGV2YW50KClcIiBtYXRUb29sdGlwPVwiUHJvc3NpbWEgcGFyb2xhXCIgW2Rpc2FibGVkXT1cInJlbGV2YW50cy5oaXQgPj0gcmVsZXZhbnRzLmhpdHNcIj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24+Y2hldnJvbl9yaWdodDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcD1cIkF6aW9uaSBzdWwgZG9jdW1lbnRvXCJcclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0F6aW9uaSBkYSBlc2VndWlyZSBzdWwgZG9jdW1lbnRvJ1wiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51QWN0aW9uc1wiPlxyXG4gICAgICAgICAgPG1hdC1pY29uPm1vcmVfdmVydDwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPG1hdC1tZW51ICNtZW51QWN0aW9ucz1cIm1hdE1lbnVcIj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRNZW51Q29udGVudCBsZXQtaXRlbT1cImxhc3REb2N1bWVudFwiPlxyXG4gICAgICAgICAgICA8Y2xpcHBlci1kb2N1bWVudC1tZW51IFtwYXJlbnRdPVwidGhpc1wiIFtpdGVtXT1cImxhc3REb2N1bWVudFwiIFtjYW5QcmludF09XCJ0cnVlXCIgW2NhbkZpbmRdPVwidHJ1ZVwiIFtpc1JlYWRhYmxlXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICBbaXNMYXdJbkZvcmNlXT1cImxhc3REb2N1bWVudD8ubW9kZWwgPT09IDlcIiBzZWxlY3Rpb25Tb3VyY2U9XCJub25lXCI+XHJcbiAgICAgICAgICAgIDwvY2xpcHBlci1kb2N1bWVudC1tZW51PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT4gICAgICAgICBcclxuICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICAgIEBpZiAoaGFzUmVsZXZhbnRzKCkgJiYgcmVsZXZhbnRzLml0ZW1zICYmIHJlbGV2YW50c1BhbmUgJiYgKCFyZWxldmFudHNQYW5lLm9wZW5lZCB8fCByZWxldmFudHNQYW5lQ2xvc2VkKSkge1xyXG4gICAgICAgIDxkaXYgZnhGbGV4QWxpZ249XCJjZW50ZXJcIj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwPVwiUmlsZXZhbnphXCIgYXJpYS1sYWJlbD1cIidSaWxldmFuemEnXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVJlbGV2YW50c1BhbmUoKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+bWVudV9vcGVuPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxtYXQtZGlhbG9nLWNvbnRlbnQgaWQ9XCJjbGlwcGVyLWRvY3VtZW50LXNjcm9sbGFibGVcIj5cclxuICA8bWF0LWRyYXdlci1jb250YWluZXIgY2xhc3M9XCJmaWxsXCIgW2hhc0JhY2tkcm9wXT1cIltyZWxldmFudHNQYW5lSGFzQmFja2Ryb3BdXCI+XHJcbiAgICA8bWF0LWRyYXdlciAjcmVsZXZhbnRzUGFuZSBwb3NpdGlvbj1cImVuZFwiIGNsYXNzPVwiZHJhd2VyLXNtYWxsIGRyYXdlci13aXRoLWxvYWRlclwiIG9wZW5lZD1cImZhbHNlXCI+XHJcbiAgICAgIEBpZiAocmVsZXZhbnRzQnVzeSgpKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJvdmVybGF5XCI+PC9kaXY+XHJcbiAgICAgIH1cclxuICAgICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4RmlsbD5cclxuICAgICAgICA8ZGl2IGZ4RmxleD1cIjZweFwiPlxyXG4gICAgICAgICAgQGlmIChyZWxldmFudHNCdXN5KCkpIHtcclxuICAgICAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIHN0eWxlPVwiei1pbmRleDogMTE7XCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj5cclxuICAgICAgICAgIDwvbWF0LXByb2dyZXNzLWJhcj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGZ4RmxleD1cIjU2cHhcIiBjbGFzcz1cInRpdGxlLWNvbnRhaW5lci13aXRoLWxvYWRlclwiPlxyXG4gICAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeEZpbGw+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPlJpbGV2YW56YTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGZ4RmxleD1cIipcIiBmeExheW91dEFsaWduPVwiZW5kXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInRvZ2dsZVJlbGV2YW50c1BhbmUoKVwiXHJcbiAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiTmFzY29uZGlcIj48bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgZnhGbGV4PVwiKlwiIGNsYXNzPVwicmVsZXZhbnRzLWNvbnRhaW5lciBzY3JvbGwtYXV0b1wiPlxyXG4gICAgICAgICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4RmlsbD5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICA8cD5QYXJ0aSBkZWwgZG9jdW1lbnRvIHBpw7kgc2lnbmlmaWNhdGl2ZSBwZXIgbGEgcmljZXJjYSBkaSA8c3BhbiBjbGFzcz0nd29yZC1oaXQnPnt7bGFzdFF1ZXJ5fX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBmeEZsZXg9XCIqXCI+XHJcbiAgICAgICAgICAgICAgPG5hdiBjbGFzcz1cInJlbGV2YW50cy1pdGVtc1wiPlxyXG4gICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIHJlbGV2YW50cy5pdGVtczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInNtYWxsXCIgKGNsaWNrKT1cImdvdG9SZWxldmFudChpdGVtKVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiaXRlbS50aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgc3RhcnRcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeEZpbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZ4RmxleD1cIipcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtLnRpdGxlfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBmeExheW91dEFsaWduPVwiZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5zY29yZSA+IDEuMikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gc3R5bGU9J2ZvbnQtc2l6ZTp4LXNtYWxsOyBoZWlnaHQ6IDEwcHg7IHdpZHRoOjEwcHgnIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIk1vbHRvIHJpbGV2YW50ZVwiPnRodW1iX3VwX2FsdDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgIDwvbmF2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbWF0LWRyYXdlcj5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWxsIHNjcm9sbC1oaWRkZW5cIj5cclxuICAgICAgPGlmcmFtZSBpZD1cImNsaXBwZXItZG9jdW1lbnQtaWZyYW1lXCIgY2xhc3M9XCJpZnJhbWVcIiBbc3JjXT1cInVybCgpIHwgc2FmZVVybFwiPjwvaWZyYW1lPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9tYXQtZHJhd2VyLWNvbnRhaW5lcj5cclxuPC9tYXQtZGlhbG9nLWNvbnRlbnQ+Il19
|
|
@@ -2208,11 +2208,9 @@ class ClipperDocumentComponent extends ClipperDocumentManager {
|
|
|
2208
2208
|
if (elem) {
|
|
2209
2209
|
const height = this.dialogService.getCurrentDialogScrollableHeight(['clipper-document-fixed'], window.innerHeight);
|
|
2210
2210
|
console.log(height);
|
|
2211
|
-
|
|
2212
|
-
|
|
2213
|
-
|
|
2214
|
-
elem?.setAttribute('style', 'height:' + (height - 20) + 'px !important;max-height:' + (height - 20) + 'px !important');
|
|
2215
|
-
}
|
|
2211
|
+
elem.setAttribute('style', 'padding:0;height:' + height + 'px !important;max-height:' + height + 'px !important');
|
|
2212
|
+
elem = document.getElementById('clipper-document-iframe');
|
|
2213
|
+
elem?.setAttribute('style', 'height:' + (height - 20) + 'px !important;max-height:' + (height - 20) + 'px !important');
|
|
2216
2214
|
}
|
|
2217
2215
|
else {
|
|
2218
2216
|
this.resize();
|