@colijnit/homedecorator 256.1.0 → 256.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/core/model/homedecorator-settings.d.ts +1 -0
- package/app/homedecorator.module.d.ts +2 -1
- package/app/plugins/help/help-dialog/help-dialog.component.scss +10 -1
- package/app/plugins/model-uploader/model-previewer/model-preview.component.d.ts +5 -11
- package/app/plugins/product-catalog/product-catalog/product-catalog.component.d.ts +1 -0
- package/app/plugins/render/service/new-render.service.d.ts +0 -2
- package/app/plugins/render/service/render.service.d.ts +1 -2
- package/assets/hdri/std_env_v2_A.hdr +0 -0
- package/assets/hdri/std_env_v2_B.hdr +0 -0
- package/assets/hdri/std_env_v2_C.hdr +0 -0
- package/assets/hdri/std_env_v2_D.hdr +0 -0
- package/assets/hdri/std_env_v2_E.hdr +46 -0
- package/bundles/colijnit-homedecorator.umd.js +106 -253
- package/bundles/colijnit-homedecorator.umd.js.map +1 -1
- package/esm2015/app/core/model/homedecorator-settings.js +1 -1
- package/esm2015/app/core/service/homedecorator-settings.service.js +4 -1
- package/esm2015/app/homedecorator.module.js +8 -4
- package/esm2015/app/plugins/core3d/service/lights.service.js +6 -5
- package/esm2015/app/plugins/core3d/service/scene.service.js +20 -20
- package/esm2015/app/plugins/help/help-dialog/help-dialog.component.js +1 -1
- package/esm2015/app/plugins/model-uploader/model-previewer/model-preview.component.js +50 -75
- package/esm2015/app/plugins/product-catalog/product-catalog/product-catalog.component.js +23 -15
- package/esm2015/app/plugins/render/render-controls/render-controls.component.js +3 -3
- package/esm2015/app/plugins/render/service/new-render.service.js +1 -1
- package/esm2015/app/plugins/render/service/render.service.js +88 -77
- package/esm2015/app/plugins/room-planner/components/floorplanner/service/floorplan.service.js +2 -2
- package/esm2015/app/plugins/room-planner/components/floorplanner/service/room.service.js +2 -2
- package/esm2015/app/plugins/room-planner/components/texture-picker/texture-picker.component.js +1 -1
- package/esm2015/app/plugins/toolbar/toolbar/toolbar.component.js +7 -7
- package/esm2015/app/shared/category-library/category-library.component.js +1 -1
- package/fesm2015/colijnit-homedecorator.js +206 -202
- package/fesm2015/colijnit-homedecorator.js.map +1 -1
- package/homedecorator-globals.scss +3 -0
- package/package.json +1 -1
|
@@ -384,9 +384,9 @@ ToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versi
|
|
|
384
384
|
</ng-container>
|
|
385
385
|
<div class="hd-toolbar-spacer"></div>
|
|
386
386
|
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
387
|
+
<!-- <ng-container>-->
|
|
388
|
+
<!-- <rp-pdf-export></rp-pdf-export>-->
|
|
389
|
+
<!-- </ng-container>-->
|
|
390
390
|
|
|
391
391
|
<mat-nav-list class="toolbar__nav" role="list">
|
|
392
392
|
<div matTooltip="{{'NEW_ROOM' | localize}}">
|
|
@@ -540,9 +540,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
540
540
|
</ng-container>
|
|
541
541
|
<div class="hd-toolbar-spacer"></div>
|
|
542
542
|
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
543
|
+
<!-- <ng-container>-->
|
|
544
|
+
<!-- <rp-pdf-export></rp-pdf-export>-->
|
|
545
|
+
<!-- </ng-container>-->
|
|
546
546
|
|
|
547
547
|
<mat-nav-list class="toolbar__nav" role="list">
|
|
548
548
|
<div matTooltip="{{'NEW_ROOM' | localize}}">
|
|
@@ -664,4 +664,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
664
664
|
type: HostListener,
|
|
665
665
|
args: ['document:keydown', ['$event']]
|
|
666
666
|
}] } });
|
|
667
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2xpZW50L2FwcC9wbHVnaW5zL3Rvb2xiYXIvdG9vbGJhci90b29sYmFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxZQUFZLEVBQWtDLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNoSCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFHbkQsT0FBTyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUUvRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDakUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFrQnRELE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLHdEQUF3RCxDQUFDO0FBRW5HLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBQ2xHLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBRXpFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBRXBGLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDhEQUE4RCxDQUFDO0FBQ25HLE9BQU8sRUFBQyxvQkFBb0IsRUFBa0IsTUFBTSxxREFB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LENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFDLGtCQUFrQixFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsd0JBQXdCLEVBQUMsQ0FBQyxDQUFDOzRCQUM3RixLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFDLGtCQUFrQixFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUMsQ0FBQyxDQUFDOzRCQUN0RixVQUFVLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO3lCQUN2RCxDQUFDO3dCQUNGLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRTs0QkFDekIsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUMsQ0FBQyxDQUFDOzRCQUNuRCxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFDLFNBQVMsRUFBRSxtQkFBbUIsRUFBQyxDQUFDLENBQUM7NEJBQ3RELFVBQVUsQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUM7eUJBQzFELENBQUM7cUJBQ0gsQ0FBQTtxRUFDZ0Q7aUJBQ2xEO2dwQkF5QjJDLFdBQVc7c0JBQXBELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFHakMsYUFBYTtzQkFEbkIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIE9uRGVzdHJveSwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtUZW1wbGF0ZVBvcnRhbH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XHJcbmltcG9ydCB7TWF0RGlhbG9nfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQge01hdERyYXdlcn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XHJcbmltcG9ydCB7YW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge2Vudmlyb25tZW50fSBmcm9tICcuLi8uLi8uLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQnO1xyXG5pbXBvcnQge01lc3NhZ2VUeXBlfSBmcm9tICcuLi8uLi8uLi9jb3JlL2VudW0vbWVzc2FnZS10eXBlLmVudW0nO1xyXG5pbXBvcnQge1RvYXN0VHlwZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbC90b2FzdC10eXBlJztcclxuaW1wb3J0IHtJY29uRW51bX0gZnJvbSAnLi4vLi4vLi4vY29yZS9lbnVtL2ljb24uZW51bSc7XHJcbmltcG9ydCB7VG9hc3R9IGZyb20gJy4uLy4uLy4uL2NvcmUvbW9kZWwvdG9hc3QnO1xyXG5pbXBvcnQge0FwcFN0YXRlU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL2FwcC1zdGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtQcmVzZXRzU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL3ByZXNldHMuc2VydmljZSc7XHJcbmltcG9ydCB7TWVzc2FnZUJ1c1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZS9tZXNzYWdlLWJ1cy5zZXJ2aWNlJztcclxuaW1wb3J0IHtIb21lZGVjb3JhdG9yU2V0dGluZ3NTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2UvaG9tZWRlY29yYXRvci1zZXR0aW5ncy5zZXJ2aWNlJztcclxuaW1wb3J0IHtMb2NhbFN0b3JhZ2VTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL2xvY2FsLXN0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7U2NyZWVuU2l6ZUFuYWx5c2lzU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3NjcmVlbi1zaXplLWFuYWx5c2lzL3NjcmVlbi1zaXplLWFuYWx5c2lzLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RvYXN0U2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL3RvYXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQge0hvbWVkZWNvcmF0b3JBcHBTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2UvaG9tZWRlY29yYXRvci1hcHAuc2VydmljZSc7XHJcbmltcG9ydCB7UGVybWFuZW50U3RvcmVTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2UvcGVybWFuZW50LXN0b3JlLnNlcnZpY2UnO1xyXG5pbXBvcnQge1V0aWxzU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL3V0aWxzLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RocmVlZHNlbGVjdG9yU2VydmljZX0gZnJvbSAnLi4vLi4vdGhyZWVkc2VsZWN0b3IvdGhyZWVkc2VsZWN0b3Ivc2VydmljZS90aHJlZWRzZWxlY3Rvci5zZXJ2aWNlJztcclxuaW1wb3J0IHtJdGVtU2VydmljZX0gZnJvbSAnLi4vLi4vY29yZTNkL3NlcnZpY2UvaXRlbS5zZXJ2aWNlJztcclxuaW1wb3J0IHtGbG9vcnBsYW5TZXJ2aWNlfSBmcm9tICcuLi8uLi9yb29tLXBsYW5uZXIvY29tcG9uZW50cy9mbG9vcnBsYW5uZXIvc2VydmljZS9mbG9vcnBsYW4uc2VydmljZSc7XHJcbmltcG9ydCB7Rmxvb3JTZXJ2aWNlfSBmcm9tICcuLi8uLi9jb3JlM2Qvc2VydmljZS9mbG9vci5zZXJ2aWNlJztcclxuaW1wb3J0IHtBbmltYXRpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi90aHJlZWRzZWxlY3Rvci90aHJlZWRzZWxlY3Rvci9zZXJ2aWNlL2FuaW1hdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtEZXZlbG9wbWVudFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2RldmVsb3BtZW50L3NlcnZpY2UvZGV2ZWxvcG1lbnQuc2VydmljZSc7XHJcbmltcG9ydCB7TGFuZGluZ1NjcmVlbk1vZGFsQ29tcG9uZW50fSBmcm9tICcuLi9sYW5kaW5nLXNjcmVlbi1tb2RhbC9sYW5kaW5nLXNjcmVlbi1tb2RhbC5jb21wb25lbnQnO1xyXG5pbXBvcnQge0l0ZW19IGZyb20gJy4uLy4uL2NvcmUzZC9pdGVtcy9pdGVtJztcclxuaW1wb3J0IHtSZWdpc3RlckRpYWxvZ0NvbXBvbmVudH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3JlZ2lzdGVyLWRpYWxvZy9yZWdpc3Rlci1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHtPcGVuRGlhbG9nQ29tcG9uZW50fSBmcm9tICcuLi9vcGVuLWRpYWxvZy9vcGVuLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQge1NhdmVEaWFsb2dDb21wb25lbnR9IGZyb20gJy4uL3NhdmUtZGlhbG9nL3NhdmUtZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7VG9vbGJhckljb259IGZyb20gJy4uLy4uLy4uL2NvcmUvaW50ZXJmYWNlL3Rvb2xiYXItaWNvbi5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge0RyYXdEaWFsb2dDb21wb25lbnR9IGZyb20gJy4uL2RyYXctZGlhbG9nL2RyYXctZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7UGRmQ3JvcERpYWxvZ0NvbXBvbmVudH0gZnJvbSAnLi4vcGRmLWNyb3AtZGlhbG9nL3BkZi1jcm9wLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQge05ld1JlbmRlclNlcnZpY2V9IGZyb20gJy4uLy4uL3JlbmRlci9zZXJ2aWNlL25ldy1yZW5kZXIuc2VydmljZSc7XHJcbmltcG9ydCB7TW9kZWxQcmV2aWV3Q29tcG9uZW50fSBmcm9tICcuLi8uLi9tb2RlbC11cGxvYWRlci9tb2RlbC1wcmV2aWV3ZXIvbW9kZWwtcHJldmlldy5jb21wb25lbnQnO1xyXG5pbXBvcnQge0Vycm9yRGlhbG9nQ29tcG9uZW50LCBFcnJvckRpYWxvZ0RhdGF9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9lcnJvci1kaWFsb2cvZXJyb3ItZGlhbG9nLmNvbXBvbmVudCc7XHJcblxyXG5pbnRlcmZhY2UgQ2xvc2luZ09wdGlvbnMge1xyXG4gIGtlZXBUZW1wbGF0ZVJlZj86IGJvb2xlYW47XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncnAtdG9vbGJhcicsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDwhLS1cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXllciBsYXllciYjNDU7JiM0NTt0b29sYmFyXCI+XHJcbiAgICAtLT5cclxuICAgIDxtYXQtdG9vbGJhciBjbGFzcz1cInRvb2xiYXJcIiBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgICAgPGJ1dHRvbiAqbmdJZj1cInBob25lU2l6ZVNjcmVlblwiIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cIm1lbnUtaWNvblwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCI+XHJcbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaG9tZWRlY29yYXRvci1tYXRlcmlhbC1pY29uc1wiPm1lbnU8L21hdC1pY29uPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPG1hdC1tZW51ICNtZW51PlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGljb24gb2YgdG9vbGJhckljb25zVG9wXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyIFtjZGtQb3J0YWxPdXRsZXRdPVwiaWNvbi5wb3J0YWxcIj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L21hdC1tZW51PlxyXG5cclxuICAgICAgPGltZyBzcmM9XCJhc3NldHMvaW1hZ2VzL2xvZ28uc3ZnXCIgY2xhc3M9XCJ0b29sYmFyLWxvZ29cIi8+XHJcbiAgICAgIDxpbWcgKm5nSWY9XCJzZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3Muc2Vjb25kYXJ5TG9nb1wiIFtzcmNdPVwic2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLnNlY29uZGFyeUxvZ29cIlxyXG4gICAgICAgICAgIGNsYXNzPVwidG9vbGJhci1sb2dvIHNlY29uZGFyeS1sb2dvXCIvPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLm9wdGlvbnMuZGV2ZWxvcG1lbnRcIj5cclxuICAgICAgICA8bWF0LWNhcmQgY2xhc3M9XCJ3aXAtY2FyZFwiPlxyXG4gICAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIHt7ICdXT1JLX0lOX1BST0dSRVNTJyB8IGxvY2FsaXplIH19XHJcbiAgICAgICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgPC9tYXQtY2FyZD5cclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwibG9hZFJvb20oKVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaG9tZWRlY29yYXRvci1tYXRlcmlhbC1pY29uc1wiPndlZWtlbmQ8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJsb2FkUmVzaXphYmxlUm9vbSgpXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJob21lZGVjb3JhdG9yLW1hdGVyaWFsLWljb25zXCI+Y2FtZXJhLWNvbnRyb2w8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNldHRpbmdzU2VydmljZS5zZXR0aW5ncy5vcHRpb25zLnNob3dSb29tRG93bmxvYWRCdXR0b25cIj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiZG93bmxvYWRSb29tKClcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImhvbWVkZWNvcmF0b3ItbWF0ZXJpYWwtaWNvbnNcIiBtYXRUb29sdGlwPVwie3snRE9XTkxPQURfUk9PTV9BU19HTEInIHwgbG9jYWxpemV9fVwiPmNsb3VkX2Rvd25sb2FkPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJoZC10b29sYmFyLXNwYWNlclwiPjwvZGl2PlxyXG5cclxuICAgICAgPCEtLSAgICAgIDxuZy1jb250YWluZXI+LS0+XHJcbiAgICAgIDwhLS0gICAgICAgIDxycC1wZGYtZXhwb3J0PjwvcnAtcGRmLWV4cG9ydD4tLT5cclxuICAgICAgPCEtLSAgICAgIDwvbmctY29udGFpbmVyPi0tPlxyXG5cclxuICAgICAgPG1hdC1uYXYtbGlzdCBjbGFzcz1cInRvb2xiYXJfX25hdlwiIHJvbGU9XCJsaXN0XCI+XHJcbiAgICAgICAgPGRpdiBtYXRUb29sdGlwPVwie3snTkVXX1JPT00nIHwgbG9jYWxpemV9fVwiPlxyXG4gICAgICAgICAgPG1hdC1saXN0LWl0ZW0gcm9sZT1cImxpc3RpdGVtXCIgKGNsaWNrKT1cIm5ld1Jvb20oKVwiPnt7ICdORVcnIHwgbG9jYWxpemUgfX08L21hdC1saXN0LWl0ZW0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBtYXRUb29sdGlwPVwie3snT1BFTl9FWElTVElOR19QTEFOJyB8IGxvY2FsaXplfX1cIj5cclxuICAgICAgICAgIDxtYXQtbGlzdC1pdGVtIHJvbGU9XCJsaXN0aXRlbVwiIChjbGljayk9XCJvcGVuT3BlbkRpYWxvZygpXCI+e3sgJ09QRU4nIHwgbG9jYWxpemUgfX08L21hdC1saXN0LWl0ZW0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInN0b3JhZ2VTZXJ2aWNlLmVycm9yV2hlblNhdmluZ1wiIGNsYXNzPVwic3RvcmFnZS1lcnJvclwiXHJcbiAgICAgICAgICAgICBbY2xhc3MuYmxpbmtlcl09XCJzaG93QmxpbmtFcnJvclwiIG1hdFRvb2x0aXA9XCJ7eydFUlJPUl9TQVZJTkdfTE9DQUxTVE9SQUdFJyB8IGxvY2FsaXplfX1cIlxyXG4gICAgICAgICAgICAgKG1vdXNlbW92ZSk9XCJzaG93QmxpbmtFcnJvciA9IGZhbHNlXCJcclxuICAgICAgICA+PHNwYW4+ITwvc3Bhbj48L2Rpdj5cclxuICAgICAgICA8ZGl2IFtjbGFzcy5ibGlua2VyXT1cIiFzaG93U2F2ZU5vdGlmaWNhdGlvblwiIG1hdFRvb2x0aXA9XCJ7eydTQVZFX1RIRV9QTEFOJyB8IGxvY2FsaXplfX1cIj5cclxuICAgICAgICAgIDxtYXQtbGlzdC1pdGVtXHJcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eydTQVZFX1RPT0xUSVAnIHwgbG9jYWxpemV9fVwiXHJcbiAgICAgICAgICAgIFttYXRUb29sdGlwRGlzYWJsZWRdPVwidG9vbHRpcERpc2FibGVkXCJcclxuICAgICAgICAgICAgbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcC1yZWRcIlxyXG4gICAgICAgICAgICByb2xlPVwibGlzdGl0ZW1cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib3BlblNhdmVEaWFsb2coKSAmJiBzdG9wVGltZXIoKVwiXHJcbiAgICAgICAgICA+e3sgJ1NBVkUnIHwgbG9jYWxpemUgfX1cclxuICAgICAgICAgIDwvbWF0LWxpc3QtaXRlbT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImJhZGdlXCJcclxuICAgICAgICAgIG1hdEJhZGdlPVwiIVwiXHJcbiAgICAgICAgICBtYXRCYWRnZUNvbG9yPVwid2FyblwiXHJcbiAgICAgICAgICBtYXRCYWRnZVBvc2l0aW9uPVwiYmVsb3cgYmVmb3JlXCJcclxuICAgICAgICAgIG1hdEJhZGdlT3ZlcmxhcD1cInRydWVcIlxyXG4gICAgICAgICAgbWF0QmFkZ2VTaXplPVwibWVkaXVtXCJcclxuICAgICAgICAgIFttYXRCYWRnZUhpZGRlbl09XCJiYWRnZURpc2FibGVkXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbWF0LW5hdi1saXN0PlxyXG4gICAgICA8ZGl2IG1hdFRvb2x0aXA9XCJ7eydTQVZFX0lNQUdFJyB8IGxvY2FsaXplfX1cIj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwib25UYWtlU2NyZWVuc2hvdENsaWNrKClcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImhvbWVkZWNvcmF0b3ItbWF0ZXJpYWwtaWNvbnNcIj5waG90b19jYW1lcmE8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBtYXRUb29sdGlwPVwie3snVU5ETycgfCBsb2NhbGl6ZX19XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm1lc3NhZ2VTZXJ2aWNlLmVtaXQobWVzc2FnZVR5cGUuVW5kbylcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInByZXNldHNTZXJ2aWNlLmlzTG9hZGluZyB8fCAhYXBwU3RhdGUuY2FuVW5kbygpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJob21lZGVjb3JhdG9yLW1hdGVyaWFsLWljb25zXCI+dW5kbzwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IG1hdFRvb2x0aXA9XCJ7eydSRURPJyB8IGxvY2FsaXplfX1cIj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwibWVzc2FnZVNlcnZpY2UuZW1pdChtZXNzYWdlVHlwZS5SZWRvKVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicHJlc2V0c1NlcnZpY2UuaXNMb2FkaW5nIHx8ICFhcHBTdGF0ZS5jYW5SZWRvKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImhvbWVkZWNvcmF0b3ItbWF0ZXJpYWwtaWNvbnNcIj5yZWRvPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uICpuZ0lmPVwiIWZ1bGxzY3JlZW5cIiAoY2xpY2spPVwicmVxdWVzdEZ1bGxzY3JlZW4oKVwiIG1hdFRvb2x0aXA9XCJ7eydSRVFVRVNUX0ZVTExTQ1JFRU4nIHwgbG9jYWxpemV9fVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImhvbWVkZWNvcmF0b3ItbWF0ZXJpYWwtaWNvbnNcIj5mdWxsc2NyZWVuPC9tYXQtaWNvbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uICpuZ0lmPVwiZnVsbHNjcmVlblwiIChjbGljayk9XCJleGl0RnVsbHNjcmVlbigpXCIgbWF0VG9vbHRpcD1cInt7J0VYSVRfRlVMTFNDUkVFTicgfCBsb2NhbGl6ZX19XCI+XHJcbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaG9tZWRlY29yYXRvci1tYXRlcmlhbC1pY29uc1wiPmZ1bGxzY3JlZW5fZXhpdDwvbWF0LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9tYXQtdG9vbGJhcj5cclxuXHJcbiAgICA8bGltaXRlZC1tb2RlLW1lc3NhZ2VcclxuICAgICAgKm5nSWY9XCJwaG9uZVNpemVTY3JlZW4gJiYgc2hvd0xpbWl0ZWRNb2RlTWVzc2FnZVwiXHJcbiAgICAgIChjbG9zZUNsaWNrZWQpPVwib25DbG9zZUxpbWl0ZWRNb2RlTWVzc2FnZUNsaWNrKClcIj5cclxuICAgIDwvbGltaXRlZC1tb2RlLW1lc3NhZ2U+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInRvYXN0LXdyYXBwZXJcIlxyXG4gICAgICAgICBbY2xhc3Muc3VjY2Vzc109XCJ0b2FzdC50eXBlID09ICB0b2FzdFR5cGUuU3VjY2Vzc1wiXHJcbiAgICAgICAgIFtjbGFzcy53YXJuaW5nXT1cInRvYXN0LnR5cGUgPT0gIHRvYXN0VHlwZS5XYXJuaW5nXCJcclxuICAgICAgICAgW2NsYXNzLmVycm9yXT1cInRvYXN0LnR5cGUgPT0gIHRvYXN0VHlwZS5FcnJvclwiXHJcbiAgICAgICAgICpuZ0lmPVwidG9hc3RcIlxyXG4gICAgICAgICBAc2hvd1RvYXN0XHJcbiAgICAgICAgIFt0ZXh0Q29udGVudF09XCJ0b2FzdC5tZXNzYWdlXCI+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8bWF0LXRvb2xiYXItcm93IGNsYXNzPVwidG9vbGJhci1yb3dcIj5cclxuICAgICAgPG1hdC10b29sYmFyIGNsYXNzPVwidG9vbGJhciB0b29sYmFyLS1zZWNvbmRhcnlcIiAqbmdJZj1cIiFwaG9uZVNpemVTY3JlZW5cIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpY29uIG9mIHRvb2xiYXJJY29uc1RvcFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbY2RrUG9ydGFsT3V0bGV0XT1cImljb24ucG9ydGFsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJoZC10b29sYmFyLXNwYWNlclwiPjwvc3Bhbj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpY29uIG9mIHRvb2xiYXJJY29uc0JvdHRvbVwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbY2RrUG9ydGFsT3V0bGV0XT1cImljb24ucG9ydGFsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbWF0LXRvb2xiYXI+XHJcblxyXG4gICAgICA8bWF0LWRyYXdlci1jb250YWluZXIgY2xhc3M9XCJkcmF3ZXItY29udGFpbmVyXCI+XHJcbiAgICAgICAgPG1hdC1kcmF3ZXIgY2xhc3M9XCJkcmF3ZXJcIiBtb2RlPVwib3ZlclwiIHBvc2l0aW9uPVwibGVmdFwiICNsZWZ0U2lkZWJhcj5cclxuICAgICAgICAgIDxtYXQtZHJhd2VyLWNvbnRlbnQgY2xhc3M9XCJkcmF3ZXJfX2JvZHlcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyYXdlcl9fYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJjbGlja0Nsb3NlTGVmdFNpZGViYXIoKVwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImhvbWVkZWNvcmF0b3ItbWF0ZXJpYWwtaWNvbnNcIj5jbGVhcjwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtjZGtQb3J0YWxPdXRsZXRdPVwibGVmdFBvcnRhbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9tYXQtZHJhd2VyLWNvbnRlbnQ+XHJcbiAgICAgICAgPC9tYXQtZHJhd2VyPlxyXG4gICAgICA8L21hdC1kcmF3ZXItY29udGFpbmVyPlxyXG4gICAgPC9tYXQtdG9vbGJhci1yb3c+XHJcbiAgICA8IS0tXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgIC0tPlxyXG4gIGAsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdG9vbGJhci5jb21wb25lbnQuc2NzcyddLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ3Nob3dUb2FzdCcsIFtcclxuICAgICAgc3RhdGUoJ3ZvaWQnLCBzdHlsZSh7J3RyYW5zZm9ybS1vcmlnaW4nOiAndG9wIGNlbnRlcicsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZSgtNTAlLCAtMTAwJSknfSkpLFxyXG4gICAgICBzdGF0ZSgnKicsIHN0eWxlKHsndHJhbnNmb3JtLW9yaWdpbic6ICd0b3AgY2VudGVyJywgdHJhbnNmb3JtOiAndHJhbnNsYXRlKC01MCUsIDApJ30pKSxcclxuICAgICAgdHJhbnNpdGlvbigndm9pZCA8PT4gKicsIGFuaW1hdGUoJzIwMG1zIGVhc2UtaW4tb3V0JykpXHJcbiAgICBdKSxcclxuICAgIHRyaWdnZXIoJ3Nob3dMZWZ0VG9vbGJhcicsIFtcclxuICAgICAgc3RhdGUoJ3Nob3cnLCBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwJSknfSkpLFxyXG4gICAgICBzdGF0ZSgnaGlkZScsIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKC0xMDAlKSd9KSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ3Nob3cgPD0+IGhpZGUnLCBhbmltYXRlKCcyMDBtcyBlYXNlLWluLW91dCcpKVxyXG4gICAgXSlcclxuICBdLyosXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gqL1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVG9vbGJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgcHVibGljIHJlYWRvbmx5IHRvYXN0VHlwZTogdHlwZW9mIFRvYXN0VHlwZSA9IFRvYXN0VHlwZTtcclxuICBwdWJsaWMgcmVhZG9ubHkgbWVzc2FnZVR5cGU6IHR5cGVvZiBNZXNzYWdlVHlwZSA9IE1lc3NhZ2VUeXBlO1xyXG4gIHB1YmxpYyByZWFkb25seSBpY29uczogdHlwZW9mIEljb25FbnVtID0gSWNvbkVudW07XHJcblxyXG4gIGxlZnRQb3J0YWw6IFRlbXBsYXRlUG9ydGFsPGFueT47XHJcbiAgbGFzdFRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIHJpZ2h0UG9ydGFsOiBUZW1wbGF0ZVBvcnRhbDxhbnk+O1xyXG4gIHRvb2xiYXJJY29uc1RvcDogVG9vbGJhckljb25bXSA9IFtdO1xyXG4gIHRvb2xiYXJJY29uc0JvdHRvbTogVG9vbGJhckljb25bXSA9IFtdO1xyXG5cclxuICBwdWJsaWMgc2hvd0JsaW5rRXJyb3I6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBzaG93U2F2ZU5vdGlmaWNhdGlvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHVibGljIHRvYXN0OiBUb2FzdDtcclxuICBwdWJsaWMgcGhvbmVTaXplU2NyZWVuOiBib29sZWFuO1xyXG4gIHB1YmxpYyBzaG93TGltaXRlZE1vZGVNZXNzYWdlID0gdHJ1ZTtcclxuICBwdWJsaWMgdGltZUxlZnQ6IG51bWJlciA9IDkwMDtcclxuICBwdWJsaWMgaW50ZXJ2YWw7XHJcbiAgcHVibGljIHRvb2x0aXBEaXNhYmxlZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHVibGljIGJhZGdlRGlzYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBwcml2YXRlIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBAVmlld0NoaWxkKCdsZWZ0U2lkZWJhcicsIHtzdGF0aWM6IHRydWV9KSBsZWZ0U2lkZWJhcjogTWF0RHJhd2VyO1xyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcclxuICBwdWJsaWMgaGFuZGxlS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKGV2ZW50LmN0cmxLZXkgJiYgZXZlbnQuc2hpZnRLZXkgJiYgZXZlbnQua2V5ID09PSAnUycpIHtcclxuICAgICAgdGhpcy5fc2hvd1NhdmVEaWFsb2coZmFsc2UsIGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZnVsbHNjcmVlbigpOiBib29sZWFuIHtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHJldHVybiBkb2N1bWVudC5mdWxsc2NyZWVuRWxlbWVudCB8fCAvLyBhbHRlcm5hdGl2ZSBzdGFuZGFyZCBtZXRob2RcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICBkb2N1bWVudC5tb3pGdWxsU2NyZWVuRWxlbWVudCB8fCBkb2N1bWVudC53ZWJraXRGdWxsc2NyZWVuRWxlbWVudCB8fCBkb2N1bWVudC5tc0Z1bGxzY3JlZW5FbGVtZW50OyAvLyBjdXJyZW50IHdvcmtpbmcgbWV0aG9kc1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgYXBwU3RhdGU6IEFwcFN0YXRlU2VydmljZSxcclxuICAgIHB1YmxpYyBwcmVzZXRzU2VydmljZTogUHJlc2V0c1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VCdXNTZXJ2aWNlLFxyXG4gICAgcHVibGljIHNldHRpbmdzU2VydmljZTogSG9tZWRlY29yYXRvclNldHRpbmdzU2VydmljZSxcclxuICAgIHB1YmxpYyBzdG9yYWdlU2VydmljZTogTG9jYWxTdG9yYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NjcmVlblNpemVTZXJ2aWNlOiBTY3JlZW5TaXplQW5hbHlzaXNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIF90b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgX2FwcFNlcnZpY2U6IEhvbWVkZWNvcmF0b3JBcHBTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcGVybWFuZW50U3RvcmVTZXJ2aWNlOiBQZXJtYW5lbnRTdG9yZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF91dGlsc1NlcnZpY2U6IFV0aWxzU2VydmljZSxcclxuICAgIHByaXZhdGUgX3RocmVlZFNlcnZpY2U6IFRocmVlZHNlbGVjdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgX2l0ZW1TZXJ2aWNlOiBJdGVtU2VydmljZSxcclxuICAgIHByaXZhdGUgX2Zsb29yUGxhblNlcnZpY2U6IEZsb29ycGxhblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9mbG9vclNlcnZpY2U6IEZsb29yU2VydmljZSxcclxuICAgIHByaXZhdGUgX2FuaW1hdGlvblNlcnZpY2U6IEFuaW1hdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9kZXZlbG9wbWVudFNlcnZpY2U6IERldmVsb3BtZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgX25ld1JlbmRlclNlcnZpY2U6IE5ld1JlbmRlclNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuX3N1YnMucHVzaChcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuU2V0TGVmdFNpZGViYXIsICh0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PikgPT4gdGhpcy5fc2V0TGVmdFNpZGViYXIodGVtcGxhdGVSZWYpKSxcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuSGlkZUxlZnRTaWRlYmFyLCAoKSA9PiB0aGlzLl9jbG9zZUxlZnRTaWRlYmFyKHtrZWVwVGVtcGxhdGVSZWY6IHRydWV9KSksXHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2Uuc3Vic2NyaWJlKE1lc3NhZ2VUeXBlLlJlZ2lzdGVyVG9vbGJhckljb24sIChpY29uOiBUb29sYmFySWNvbikgPT4gdGhpcy5fcmVnaXN0ZXJUb29sYmFySWNvbihpY29uKSksXHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2Uuc3Vic2NyaWJlKE1lc3NhZ2VUeXBlLlZpZXdNb2RlQ2hhbmdlZCwgKCkgPT4gdGhpcy5fY2xvc2VMZWZ0U2lkZWJhcigpKSxcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuTmV3Um9vbSwgKCkgPT4gdGhpcy5uZXdSb29tKCkpLFxyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnN1YnNjcmliZShNZXNzYWdlVHlwZS5TaG93T3BlbkRpYWxvZywgKCkgPT4gdGhpcy5vcGVuT3BlbkRpYWxvZygpKSxcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuRmluaXNoZWRJT25lRnVybml0dXJlQnVpbGQsICgpID0+IHRoaXMuX2hpZGVUb2FzdCgpKSxcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuVW5kZWZpbmVkRXJyb3JPY2N1cmVkLCAoKSA9PiB0aGlzLl9oaWRlVG9hc3QoKSksXHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2Uuc3Vic2NyaWJlKE1lc3NhZ2VUeXBlLlJlbmRlclNlcnZpY2VUcnlUb0Nvbm5lY3QsICgpID0+IHRoaXMuX2hpZGVUb2FzdCgpKSxcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuUmVuZGVyU2VydmljZUNvbm5lY3RlZCwgKCkgPT4gdGhpcy5faGlkZVRvYXN0KCkpLFxyXG4gICAgICB0aGlzLl90b2FzdFNlcnZpY2Uuc2hvd1RvYXN0U3ViLnN1YnNjcmliZSgodG9hc3Q6IFRvYXN0KSA9PiB0aGlzLl9zaG93VG9hc3QodG9hc3QpKSxcclxuICAgICAgdGhpcy5fc2NyZWVuU2l6ZVNlcnZpY2Uuc2NyZWVuU2l6ZUNoYW5nZWQuc3Vic2NyaWJlKGluZm8gPT4gdGhpcy5waG9uZVNpemVTY3JlZW4gPSBpbmZvLmlzUGhvbmVTaXplKSxcclxuICAgICAgLy8gdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuU3RhcnRXaXRoRGlhZ3JhbSwgKCkgPT4gdGhpcy5vcGVuVXBsb2FkRGlhZ3JhbSgpKSxcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuU3RhcnREcmF3aW5nRGlhZ3JhbSwgKGZpbGUpID0+IHRoaXMub3BlbkRyYXdEaWFncmFtKGZpbGUpKSxcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuU3RhcnRDcm9wcGluZ1BERiwgKGZpbGUpID0+IHRoaXMub3BlbkNyb3BwaW5nRGlhZ3JhbShmaWxlKSksXHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2Uuc3Vic2NyaWJlKE1lc3NhZ2VUeXBlLlVzZXJNb2RlbFVwbG9hZGVkLCAoZmlsZSkgPT4gdGhpcy5vcGVuTW9kZWxQcmV2aWV3KGZpbGUpKSxcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuUmVuZGVyRXJyb3IsIChkYXRhKSA9PiB0aGlzLnNob3dSZW5kZXJFcnJvcihkYXRhKSksXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N1YnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XHJcbiAgICB0aGlzLmxhc3RUZW1wbGF0ZVJlZiA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnRpbWVMZWZ0ID4gMCkge1xyXG4gICAgICAgIHRoaXMudGltZUxlZnQtLTtcclxuICAgICAgICB0aGlzLnNhdmVOb3RpZmljYXRpb24oKTtcclxuICAgICAgfVxyXG4gICAgfSwgMTAwMCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xpY2tDbG9zZUxlZnRTaWRlYmFyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY2xvc2VMZWZ0U2lkZWJhcigpO1xyXG4gICAgdGhpcy5tZXNzYWdlU2VydmljZS5lbWl0KE1lc3NhZ2VUeXBlLkxlZnRTaWRlYmFyQ2xvc2VDbGlja2VkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZXdSb29tKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY2xvc2VMZWZ0U2lkZWJhcigpO1xyXG4gICAgdGhpcy5fYXBwU2VydmljZS51c2VyUmVnaXN0ZXJlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5fZGlhbG9nLm9wZW4oTGFuZGluZ1NjcmVlbk1vZGFsQ29tcG9uZW50LCB7XHJcbiAgICAgIHdpZHRoOiAnODYwcHgnXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhbmltYXRlTW9kZWwoZWxlbWVudDogSXRlbSk6IHZvaWQge1xyXG4gICAgdGhpcy5fYW5pbWF0aW9uU2VydmljZS5wbGF5QW5pbWF0aW9uKGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIG9wZW5TYXZlRGlhbG9nKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKCF0aGlzLl9wZXJtYW5lbnRTdG9yZVNlcnZpY2UuY29kZSkge1xyXG4gICAgICB0aGlzLl9zaG93U2F2ZURpYWxvZyhmYWxzZSwgdHJ1ZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuX2FwcFNlcnZpY2UudXNlclJlZ2lzdGVyZWQgJiYgdGhpcy5fcGVybWFuZW50U3RvcmVTZXJ2aWNlLmNvZGUgJiYgZW52aXJvbm1lbnQucHJvZHVjdGlvbiAmJiB0aGlzLnNldHRpbmdzU2VydmljZS5zZXR0aW5ncy5vcHRpb25zLnNob3dGb3JtRGlhbG9nKSB7XHJcbiAgICAgIGNvbnN0IHJlZ0RpYWxvZyA9IHRoaXMuX2RpYWxvZy5vcGVuKFJlZ2lzdGVyRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgICAgd2lkdGg6ICc0MDBweCcsXHJcbiAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlXHJcbiAgICAgIH0pO1xyXG4gICAgICByZWdEaWFsb2cuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoYXN5bmMgKHJlZ2lzdGVyZWQ6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICBpZiAocmVnaXN0ZXJlZCkge1xyXG4gICAgICAgICAgdGhpcy5fYXBwU2VydmljZS51c2VyUmVnaXN0ZXJlZCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLl9zaG93U2F2ZURpYWxvZyhmYWxzZSwgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLl9wZXJtYW5lbnRTdG9yZVNlcnZpY2UuY29kZS8qICYmICFlbnZpcm9ubWVudC5wcm9kdWN0aW9uKi8pIHtcclxuICAgICAgdGhpcy5fc2hvd1NhdmVEaWFsb2coKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcGVuT3BlbkRpYWxvZygpOiB2b2lkIHtcclxuICAgIHRoaXMuX2RpYWxvZy5vcGVuKE9wZW5EaWFsb2dDb21wb25lbnQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGxvYWRSb29tKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3Qgb2JqID0gYXdhaXQgdGhpcy5fdXRpbHNTZXJ2aWNlLmxvYWRHbGJSb29tKCdodHRwczovL2NkbjEuY29saWpuLWl0Lm5sL2NvbnRlbnQ0My9hc3NldHMvU3RhdGlvbjdfS2F0dGVuYnVyZ18yMTA0MTQuZ2xiJyk7XHJcbiAgICAvLyBjb25zdCBvYmogPSBhd2FpdCB0aGlzLl91dGlsc1NlcnZpY2UubG9hZEdsYlJvb20oJ2h0dHBzOi8vY2RuMS5jb2xpam4taXQubmwvY29udGVudDQzL2Fzc2V0cy9TdGF0aW9uN19LYXR0ZW5idXJnX21heF8yMTA2MTZfMV9HTFRGL1N0YXRpb243X0thdHRlbmJ1cmdfbWF4XzIxMDYxNl8xLmdsdGYnKTtcclxuICAgIG9iai5jaGlsZHJlbi5mb3JFYWNoKGMgPT4gYy52aXNpYmxlID0gdHJ1ZSk7XHJcbiAgICAvLyBjb25zdCBib3VuZGluZ0JveCA9IG5ldyBCb3gzKCkuc2V0RnJvbU9iamVjdChvYmopO1xyXG4gICAgLy8gLy8gY3JlYXRlIGZsb29yXHJcbiAgICAvLyBjb25zdCBoYWxmV2lkdGg6IG51bWJlciA9IChib3VuZGluZ0JveC5tYXgueCAtIGJvdW5kaW5nQm94Lm1pbi54KSAvIDI7XHJcbiAgICAvLyBjb25zdCBoYWxmRGVwdGg6IG51bWJlciA9IChib3VuZGluZ0JveC5tYXgueiAtIGJvdW5kaW5nQm94Lm1pbi56KSAvIDI7XHJcbiAgICAvLyBjb25zdCBjb3JuZXJzID0gW1xyXG4gICAgLy8gICB0aGlzLl9mbG9vclBsYW5TZXJ2aWNlLm5ld0Nvcm5lcigtaGFsZldpZHRoLCBoYWxmRGVwdGgpLFxyXG4gICAgLy8gICB0aGlzLl9mbG9vclBsYW5TZXJ2aWNlLm5ld0Nvcm5lcigtaGFsZldpZHRoLCAtaGFsZkRlcHRoKSxcclxuICAgIC8vICAgdGhpcy5fZmxvb3JQbGFuU2VydmljZS5uZXdDb3JuZXIoaGFsZldpZHRoLCAtaGFsZkRlcHRoKSxcclxuICAgIC8vICAgdGhpcy5fZmxvb3JQbGFuU2VydmljZS5uZXdDb3JuZXIoaGFsZldpZHRoLCBoYWxmRGVwdGgpLFxyXG4gICAgLy8gXTtcclxuICAgIC8vIHRoaXMuX2Zsb29yU2VydmljZS5nZW5lcmF0ZUZsb29yUGxhbmUoJ3RyYW5zcGFyZW50JywgdW5kZWZpbmVkLCBjb3JuZXJzKTtcclxuICAgIHRoaXMuX2l0ZW1TZXJ2aWNlLmFkZEl0ZW0ob2JqKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBsb2FkUmVzaXphYmxlUm9vbSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IG9iaiA9IGF3YWl0IHRoaXMuX2RldmVsb3BtZW50U2VydmljZS5jcmVhdGVSZXNpemFibGVSb29tKCk7XHJcbiAgICB0aGlzLl9pdGVtU2VydmljZS5hZGRJdGVtKG9iaik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZG93bmxvYWRSb29tKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fdXRpbHNTZXJ2aWNlLnNhdmVSb29tQXNHbGIoKTtcclxuICB9XHJcblxyXG4gIC8vIHB1YmxpYyBhcGlSb29tUmVuZGVyKCk6IHZvaWQge1xyXG4gIC8vICAgdGhpcy5tZXNzYWdlU2VydmljZS5lbWl0KE1lc3NhZ2VUeXBlLlNob3dMb2FkaW5nSW5kaWNhdG9yLCB7dGl0bGU6ICdSZW5kZXJpbmcuLi4nfSk7XHJcbiAgLy8gICB0aGlzLl91dGlsc1NlcnZpY2UucHJlcFJvb21Gb3JSZW5kZXIoKTtcclxuICAvLyB9XHJcblxyXG4gIHB1YmxpYyBvblVuZG9DbGljaygpIHtcclxuICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZW1pdChNZXNzYWdlVHlwZS5VbmRvKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblJlZG9DbGljaygpIHtcclxuICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZW1pdChNZXNzYWdlVHlwZS5SZWRvKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNsb3NlTGltaXRlZE1vZGVNZXNzYWdlQ2xpY2soKSB7XHJcbiAgICB0aGlzLnNob3dMaW1pdGVkTW9kZU1lc3NhZ2UgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblRha2VTY3JlZW5zaG90Q2xpY2soKSB7XHJcbiAgICBpZiAoIXRoaXMuc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLm9wdGlvbnMuc2hvd0Zvcm1EaWFsb2cpIHtcclxuICAgICAgY29uc3QgcmVnRGlhbG9nID0gdGhpcy5fZGlhbG9nLm9wZW4oUmVnaXN0ZXJEaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgICBtaW5XaWR0aDogJzQwMHB4JyxcclxuICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgICAgfSk7XHJcbiAgICAgIHJlZ0RpYWxvZy5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShhc3luYyAocmVnaXN0ZXJlZDogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgIGlmIChyZWdpc3RlcmVkKSB7XHJcbiAgICAgICAgICB0aGlzLl9hcHBTZXJ2aWNlLnVzZXJSZWdpc3RlcmVkID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZW1pdChNZXNzYWdlVHlwZS5UYWtlU2NyZWVuc2hvdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZW1pdChNZXNzYWdlVHlwZS5UYWtlU2NyZWVuc2hvdCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVxdWVzdEZ1bGxzY3JlZW4oKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZnVsbHNjcmVlbikge1xyXG4gICAgICBpZiAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnJlcXVlc3RGdWxsc2NyZWVuKSB7XHJcbiAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnJlcXVlc3RGdWxsc2NyZWVuKCk7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICB9IGVsc2UgaWYgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5tc1JlcXVlc3RGdWxsc2NyZWVuKSB7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5tc1JlcXVlc3RGdWxsc2NyZWVuKCk7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICB9IGVsc2UgaWYgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5tb3pSZXF1ZXN0RnVsbFNjcmVlbikge1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQubW96UmVxdWVzdEZ1bGxTY3JlZW4oKTtcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKSB7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbihFbGVtZW50LkFMTE9XX0tFWUJPQVJEX0lOUFVUKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGV4aXRGdWxsc2NyZWVuKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZnVsbHNjcmVlbikge1xyXG4gICAgICBpZiAoZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4pIHtcclxuICAgICAgICBkb2N1bWVudC5leGl0RnVsbHNjcmVlbigpO1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgfSBlbHNlIGlmIChkb2N1bWVudC5tc0V4aXRGdWxsc2NyZWVuKSB7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIGRvY3VtZW50Lm1zRXhpdEZ1bGxzY3JlZW4oKTtcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQubW96Q2FuY2VsRnVsbFNjcmVlbikge1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICBkb2N1bWVudC5tb3pDYW5jZWxGdWxsU2NyZWVuKCk7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICB9IGVsc2UgaWYgKGRvY3VtZW50LndlYmtpdEV4aXRGdWxsc2NyZWVuKSB7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIGRvY3VtZW50LndlYmtpdEV4aXRGdWxsc2NyZWVuKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzYXZlTm90aWZpY2F0aW9uKCkge1xyXG4gICAgaWYgKHRoaXMudGltZUxlZnQgPT09IDApIHtcclxuICAgICAgdGhpcy5zaG93U2F2ZU5vdGlmaWNhdGlvbiA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnRvb2x0aXBEaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmJhZGdlRGlzYWJsZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdG9wVGltZXIoKSB7XHJcbiAgICB0aGlzLnRpbWVMZWZ0ID0gOTAwO1xyXG4gICAgdGhpcy5zaG93U2F2ZU5vdGlmaWNhdGlvbiA9IHRydWU7XHJcbiAgICB0aGlzLnRvb2x0aXBEaXNhYmxlZCA9IHRydWU7XHJcbiAgICB0aGlzLmJhZGdlRGlzYWJsZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9wZW5EcmF3RGlhZ3JhbShmaWxlOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuX2RpYWxvZy5jbG9zZUFsbCgpO1xyXG4gICAgdGhpcy5fZGlhbG9nLm9wZW4oRHJhd0RpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICBkYXRhOiB7ZmlsZTogZmlsZX1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9wZW5Dcm9wcGluZ0RpYWdyYW0oZmlsZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLl9kaWFsb2cuY2xvc2VBbGwoKTtcclxuICAgIHRoaXMuX2RpYWxvZy5vcGVuKFBkZkNyb3BEaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgZGF0YToge2ZpbGU6IGZpbGV9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcGVuTW9kZWxQcmV2aWV3KGZpbGU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGlhbG9nLm9wZW4oTW9kZWxQcmV2aWV3Q29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IHtmaWxlOiBmaWxlfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2hvd1JlbmRlckVycm9yKGRhdGE6IEVycm9yRGlhbG9nRGF0YSk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGlhbG9nLm9wZW4oRXJyb3JEaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgZGF0YTogZGF0YVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVtaXQoTWVzc2FnZVR5cGUuSGlkZUxvYWRpbmdJbmRpY2F0b3IpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRlc3RSZW5kZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9uZXdSZW5kZXJTZXJ2aWNlLmZvcmNlUmVuZGVySW1hZ2UoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Nob3dTYXZlRGlhbG9nKGxvY2FsU2F2ZTogYm9vbGVhbiA9IGZhbHNlLCBzYXZlT25PcGVuRGlhbG9nOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcclxuICAgIHRoaXMuX2RpYWxvZy5vcGVuKFNhdmVEaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6ICc1MDBweCcsXHJcbiAgICAgIGRhdGE6IHtvcGVuRG93bmxvYWREaWFsb2c6IGxvY2FsU2F2ZSwgc2F2ZU9uT3BlbkRpYWxvZzogc2F2ZU9uT3BlbkRpYWxvZ31cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaGlkZVRvYXN0KCk6IHZvaWQge1xyXG4gICAgdGhpcy50b2FzdCA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Nob3dUb2FzdCh0b2FzdDogVG9hc3QpOiB2b2lkIHtcclxuICAgIHRoaXMudG9hc3QgPSB0b2FzdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldExlZnRTaWRlYmFyKHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5sYXN0VGVtcGxhdGVSZWYgPT09IHRlbXBsYXRlUmVmICYmIHRoaXMubGVmdFBvcnRhbCAmJiB0aGlzLmxlZnRQb3J0YWwuaXNBdHRhY2hlZCkge1xyXG4gICAgICB0aGlzLmxlZnRQb3J0YWwuZGV0YWNoKCk7XHJcbiAgICAgIHRoaXMubGVmdFNpZGViYXIuY2xvc2UoKTtcclxuICAgICAgdGhpcy5sYXN0VGVtcGxhdGVSZWYgPSBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5sZWZ0UG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRlbXBsYXRlUmVmLCB1bmRlZmluZWQsIHt9KTtcclxuICAgICAgdGhpcy5sZWZ0U2lkZWJhci5vcGVuKCk7XHJcbiAgICAgIHRoaXMubGFzdFRlbXBsYXRlUmVmID0gdGVtcGxhdGVSZWY7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9yZWdpc3RlclRvb2xiYXJJY29uKGljb246IFRvb2xiYXJJY29uKTogdm9pZCB7XHJcbiAgICBpY29uLnBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbChpY29uLnRlbXBsYXRlLCB1bmRlZmluZWQsIHt9KTtcclxuICAgIGljb24ucHJpb3JpdHkgPSBpY29uLnByaW9yaXR5IHx8IDA7XHJcbiAgICBsZXQgdG9vbGJhckljb25zO1xyXG4gICAgaWYgKGljb24ucG9zaXRpb24gPT09ICdib3R0b20nKSB7XHJcbiAgICAgIHRvb2xiYXJJY29ucyA9IHRoaXMudG9vbGJhckljb25zQm90dG9tO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdG9vbGJhckljb25zID0gdGhpcy50b29sYmFySWNvbnNUb3A7XHJcbiAgICB9XHJcbiAgICB0b29sYmFySWNvbnMucHVzaChpY29uKTtcclxuICAgIHRvb2xiYXJJY29ucy5zb3J0KChhLCBiKSA9PiBhLnByaW9yaXR5IC0gYi5wcmlvcml0eSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jbG9zZUxlZnRTaWRlYmFyKG9wdGlvbnM6IENsb3NpbmdPcHRpb25zID0ge30pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmxlZnRQb3J0YWwgJiYgdGhpcy5sZWZ0UG9ydGFsLmlzQXR0YWNoZWQpIHtcclxuICAgICAgdGhpcy5sZWZ0UG9ydGFsLmRldGFjaCgpO1xyXG4gICAgICB0aGlzLmxlZnRQb3J0YWwgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKCFvcHRpb25zLmtlZXBUZW1wbGF0ZVJlZikge1xyXG4gICAgICB0aGlzLmxhc3RUZW1wbGF0ZVJlZiA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5sZWZ0U2lkZWJhcikge1xyXG4gICAgICB0aGlzLmxlZnRTaWRlYmFyLmNsb3NlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
667
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2xpZW50L2FwcC9wbHVnaW5zL3Rvb2xiYXIvdG9vbGJhci90b29sYmFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxZQUFZLEVBQWtDLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNoSCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFHbkQsT0FBTyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUUvRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDakUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFrQnRELE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLHdEQUF3RCxDQUFDO0FBRW5HLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBQ2xHLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBRXpFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBRXBGLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDhEQUE4RCxDQUFDO0FBQ25HLE9BQU8sRUFBQyxvQkFBb0IsRUFBa0IsTUFBTSxxREFB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LENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFDLGtCQUFrQixFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsd0JBQXdCLEVBQUMsQ0FBQyxDQUFDOzRCQUM3RixLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFDLGtCQUFrQixFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUMsQ0FBQyxDQUFDOzRCQUN0RixVQUFVLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO3lCQUN2RCxDQUFDO3dCQUNGLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRTs0QkFDekIsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUMsQ0FBQyxDQUFDOzRCQUNuRCxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFDLFNBQVMsRUFBRSxtQkFBbUIsRUFBQyxDQUFDLENBQUM7NEJBQ3RELFVBQVUsQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUM7eUJBQzFELENBQUM7cUJBQ0gsQ0FBQTtxRUFDZ0Q7aUJBQ2xEO2dwQkF5QjJDLFdBQVc7c0JBQXBELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFHakMsYUFBYTtzQkFEbkIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIE9uRGVzdHJveSwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtUZW1wbGF0ZVBvcnRhbH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XHJcbmltcG9ydCB7TWF0RGlhbG9nfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQge01hdERyYXdlcn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XHJcbmltcG9ydCB7YW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge2Vudmlyb25tZW50fSBmcm9tICcuLi8uLi8uLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQnO1xyXG5pbXBvcnQge01lc3NhZ2VUeXBlfSBmcm9tICcuLi8uLi8uLi9jb3JlL2VudW0vbWVzc2FnZS10eXBlLmVudW0nO1xyXG5pbXBvcnQge1RvYXN0VHlwZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbC90b2FzdC10eXBlJztcclxuaW1wb3J0IHtJY29uRW51bX0gZnJvbSAnLi4vLi4vLi4vY29yZS9lbnVtL2ljb24uZW51bSc7XHJcbmltcG9ydCB7VG9hc3R9IGZyb20gJy4uLy4uLy4uL2NvcmUvbW9kZWwvdG9hc3QnO1xyXG5pbXBvcnQge0FwcFN0YXRlU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL2FwcC1zdGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtQcmVzZXRzU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL3ByZXNldHMuc2VydmljZSc7XHJcbmltcG9ydCB7TWVzc2FnZUJ1c1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZS9tZXNzYWdlLWJ1cy5zZXJ2aWNlJztcclxuaW1wb3J0IHtIb21lZGVjb3JhdG9yU2V0dGluZ3NTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2UvaG9tZWRlY29yYXRvci1zZXR0aW5ncy5zZXJ2aWNlJztcclxuaW1wb3J0IHtMb2NhbFN0b3JhZ2VTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL2xvY2FsLXN0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7U2NyZWVuU2l6ZUFuYWx5c2lzU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3NjcmVlbi1zaXplLWFuYWx5c2lzL3NjcmVlbi1zaXplLWFuYWx5c2lzLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RvYXN0U2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL3RvYXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQge0hvbWVkZWNvcmF0b3JBcHBTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2UvaG9tZWRlY29yYXRvci1hcHAuc2VydmljZSc7XHJcbmltcG9ydCB7UGVybWFuZW50U3RvcmVTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2UvcGVybWFuZW50LXN0b3JlLnNlcnZpY2UnO1xyXG5pbXBvcnQge1V0aWxzU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL3V0aWxzLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RocmVlZHNlbGVjdG9yU2VydmljZX0gZnJvbSAnLi4vLi4vdGhyZWVkc2VsZWN0b3IvdGhyZWVkc2VsZWN0b3Ivc2VydmljZS90aHJlZWRzZWxlY3Rvci5zZXJ2aWNlJztcclxuaW1wb3J0IHtJdGVtU2VydmljZX0gZnJvbSAnLi4vLi4vY29yZTNkL3NlcnZpY2UvaXRlbS5zZXJ2aWNlJztcclxuaW1wb3J0IHtGbG9vcnBsYW5TZXJ2aWNlfSBmcm9tICcuLi8uLi9yb29tLXBsYW5uZXIvY29tcG9uZW50cy9mbG9vcnBsYW5uZXIvc2VydmljZS9mbG9vcnBsYW4uc2VydmljZSc7XHJcbmltcG9ydCB7Rmxvb3JTZXJ2aWNlfSBmcm9tICcuLi8uLi9jb3JlM2Qvc2VydmljZS9mbG9vci5zZXJ2aWNlJztcclxuaW1wb3J0IHtBbmltYXRpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi90aHJlZWRzZWxlY3Rvci90aHJlZWRzZWxlY3Rvci9zZXJ2aWNlL2FuaW1hdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtEZXZlbG9wbWVudFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2RldmVsb3BtZW50L3NlcnZpY2UvZGV2ZWxvcG1lbnQuc2VydmljZSc7XHJcbmltcG9ydCB7TGFuZGluZ1NjcmVlbk1vZGFsQ29tcG9uZW50fSBmcm9tICcuLi9sYW5kaW5nLXNjcmVlbi1tb2RhbC9sYW5kaW5nLXNjcmVlbi1tb2RhbC5jb21wb25lbnQnO1xyXG5pbXBvcnQge0l0ZW19IGZyb20gJy4uLy4uL2NvcmUzZC9pdGVtcy9pdGVtJztcclxuaW1wb3J0IHtSZWdpc3RlckRpYWxvZ0NvbXBvbmVudH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3JlZ2lzdGVyLWRpYWxvZy9yZWdpc3Rlci1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHtPcGVuRGlhbG9nQ29tcG9uZW50fSBmcm9tICcuLi9vcGVuLWRpYWxvZy9vcGVuLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQge1NhdmVEaWFsb2dDb21wb25lbnR9IGZyb20gJy4uL3NhdmUtZGlhbG9nL3NhdmUtZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7VG9vbGJhckljb259IGZyb20gJy4uLy4uLy4uL2NvcmUvaW50ZXJmYWNlL3Rvb2xiYXItaWNvbi5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge0RyYXdEaWFsb2dDb21wb25lbnR9IGZyb20gJy4uL2RyYXctZGlhbG9nL2RyYXctZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7UGRmQ3JvcERpYWxvZ0NvbXBvbmVudH0gZnJvbSAnLi4vcGRmLWNyb3AtZGlhbG9nL3BkZi1jcm9wLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQge05ld1JlbmRlclNlcnZpY2V9IGZyb20gJy4uLy4uL3JlbmRlci9zZXJ2aWNlL25ldy1yZW5kZXIuc2VydmljZSc7XHJcbmltcG9ydCB7TW9kZWxQcmV2aWV3Q29tcG9uZW50fSBmcm9tICcuLi8uLi9tb2RlbC11cGxvYWRlci9tb2RlbC1wcmV2aWV3ZXIvbW9kZWwtcHJldmlldy5jb21wb25lbnQnO1xyXG5pbXBvcnQge0Vycm9yRGlhbG9nQ29tcG9uZW50LCBFcnJvckRpYWxvZ0RhdGF9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9lcnJvci1kaWFsb2cvZXJyb3ItZGlhbG9nLmNvbXBvbmVudCc7XHJcblxyXG5pbnRlcmZhY2UgQ2xvc2luZ09wdGlvbnMge1xyXG4gIGtlZXBUZW1wbGF0ZVJlZj86IGJvb2xlYW47XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncnAtdG9vbGJhcicsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDwhLS1cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXllciBsYXllciYjNDU7JiM0NTt0b29sYmFyXCI+XHJcbiAgICAtLT5cclxuICAgIDxtYXQtdG9vbGJhciBjbGFzcz1cInRvb2xiYXJcIiBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgICAgPGJ1dHRvbiAqbmdJZj1cInBob25lU2l6ZVNjcmVlblwiIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cIm1lbnUtaWNvblwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCI+XHJcbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaG9tZWRlY29yYXRvci1tYXRlcmlhbC1pY29uc1wiPm1lbnU8L21hdC1pY29uPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPG1hdC1tZW51ICNtZW51PlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGljb24gb2YgdG9vbGJhckljb25zVG9wXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyIFtjZGtQb3J0YWxPdXRsZXRdPVwiaWNvbi5wb3J0YWxcIj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L21hdC1tZW51PlxyXG5cclxuICAgICAgPGltZyBzcmM9XCJhc3NldHMvaW1hZ2VzL2xvZ28uc3ZnXCIgY2xhc3M9XCJ0b29sYmFyLWxvZ29cIi8+XHJcbiAgICAgIDxpbWcgKm5nSWY9XCJzZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3Muc2Vjb25kYXJ5TG9nb1wiIFtzcmNdPVwic2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLnNlY29uZGFyeUxvZ29cIlxyXG4gICAgICAgICAgIGNsYXNzPVwidG9vbGJhci1sb2dvIHNlY29uZGFyeS1sb2dvXCIvPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLm9wdGlvbnMuZGV2ZWxvcG1lbnRcIj5cclxuICAgICAgICA8bWF0LWNhcmQgY2xhc3M9XCJ3aXAtY2FyZFwiPlxyXG4gICAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIHt7ICdXT1JLX0lOX1BST0dSRVNTJyB8IGxvY2FsaXplIH19XHJcbiAgICAgICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgPC9tYXQtY2FyZD5cclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwibG9hZFJvb20oKVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaG9tZWRlY29yYXRvci1tYXRlcmlhbC1pY29uc1wiPndlZWtlbmQ8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJsb2FkUmVzaXphYmxlUm9vbSgpXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJob21lZGVjb3JhdG9yLW1hdGVyaWFsLWljb25zXCI+Y2FtZXJhLWNvbnRyb2w8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNldHRpbmdzU2VydmljZS5zZXR0aW5ncy5vcHRpb25zLnNob3dSb29tRG93bmxvYWRCdXR0b25cIj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiZG93bmxvYWRSb29tKClcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImhvbWVkZWNvcmF0b3ItbWF0ZXJpYWwtaWNvbnNcIiBtYXRUb29sdGlwPVwie3snRE9XTkxPQURfUk9PTV9BU19HTEInIHwgbG9jYWxpemV9fVwiPmNsb3VkX2Rvd25sb2FkPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJoZC10b29sYmFyLXNwYWNlclwiPjwvZGl2PlxyXG5cclxuPCEtLSAgICAgICAgICAgIDxuZy1jb250YWluZXI+LS0+XHJcbjwhLS0gICAgICAgICAgICAgIDxycC1wZGYtZXhwb3J0PjwvcnAtcGRmLWV4cG9ydD4tLT5cclxuPCEtLSAgICAgICAgICAgIDwvbmctY29udGFpbmVyPi0tPlxyXG5cclxuICAgICAgPG1hdC1uYXYtbGlzdCBjbGFzcz1cInRvb2xiYXJfX25hdlwiIHJvbGU9XCJsaXN0XCI+XHJcbiAgICAgICAgPGRpdiBtYXRUb29sdGlwPVwie3snTkVXX1JPT00nIHwgbG9jYWxpemV9fVwiPlxyXG4gICAgICAgICAgPG1hdC1saXN0LWl0ZW0gcm9sZT1cImxpc3RpdGVtXCIgKGNsaWNrKT1cIm5ld1Jvb20oKVwiPnt7ICdORVcnIHwgbG9jYWxpemUgfX08L21hdC1saXN0LWl0ZW0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBtYXRUb29sdGlwPVwie3snT1BFTl9FWElTVElOR19QTEFOJyB8IGxvY2FsaXplfX1cIj5cclxuICAgICAgICAgIDxtYXQtbGlzdC1pdGVtIHJvbGU9XCJsaXN0aXRlbVwiIChjbGljayk9XCJvcGVuT3BlbkRpYWxvZygpXCI+e3sgJ09QRU4nIHwgbG9jYWxpemUgfX08L21hdC1saXN0LWl0ZW0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInN0b3JhZ2VTZXJ2aWNlLmVycm9yV2hlblNhdmluZ1wiIGNsYXNzPVwic3RvcmFnZS1lcnJvclwiXHJcbiAgICAgICAgICAgICBbY2xhc3MuYmxpbmtlcl09XCJzaG93QmxpbmtFcnJvclwiIG1hdFRvb2x0aXA9XCJ7eydFUlJPUl9TQVZJTkdfTE9DQUxTVE9SQUdFJyB8IGxvY2FsaXplfX1cIlxyXG4gICAgICAgICAgICAgKG1vdXNlbW92ZSk9XCJzaG93QmxpbmtFcnJvciA9IGZhbHNlXCJcclxuICAgICAgICA+PHNwYW4+ITwvc3Bhbj48L2Rpdj5cclxuICAgICAgICA8ZGl2IFtjbGFzcy5ibGlua2VyXT1cIiFzaG93U2F2ZU5vdGlmaWNhdGlvblwiIG1hdFRvb2x0aXA9XCJ7eydTQVZFX1RIRV9QTEFOJyB8IGxvY2FsaXplfX1cIj5cclxuICAgICAgICAgIDxtYXQtbGlzdC1pdGVtXHJcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eydTQVZFX1RPT0xUSVAnIHwgbG9jYWxpemV9fVwiXHJcbiAgICAgICAgICAgIFttYXRUb29sdGlwRGlzYWJsZWRdPVwidG9vbHRpcERpc2FibGVkXCJcclxuICAgICAgICAgICAgbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcC1yZWRcIlxyXG4gICAgICAgICAgICByb2xlPVwibGlzdGl0ZW1cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib3BlblNhdmVEaWFsb2coKSAmJiBzdG9wVGltZXIoKVwiXHJcbiAgICAgICAgICA+e3sgJ1NBVkUnIHwgbG9jYWxpemUgfX1cclxuICAgICAgICAgIDwvbWF0LWxpc3QtaXRlbT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImJhZGdlXCJcclxuICAgICAgICAgIG1hdEJhZGdlPVwiIVwiXHJcbiAgICAgICAgICBtYXRCYWRnZUNvbG9yPVwid2FyblwiXHJcbiAgICAgICAgICBtYXRCYWRnZVBvc2l0aW9uPVwiYmVsb3cgYmVmb3JlXCJcclxuICAgICAgICAgIG1hdEJhZGdlT3ZlcmxhcD1cInRydWVcIlxyXG4gICAgICAgICAgbWF0QmFkZ2VTaXplPVwibWVkaXVtXCJcclxuICAgICAgICAgIFttYXRCYWRnZUhpZGRlbl09XCJiYWRnZURpc2FibGVkXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbWF0LW5hdi1saXN0PlxyXG4gICAgICA8ZGl2IG1hdFRvb2x0aXA9XCJ7eydTQVZFX0lNQUdFJyB8IGxvY2FsaXplfX1cIj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwib25UYWtlU2NyZWVuc2hvdENsaWNrKClcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImhvbWVkZWNvcmF0b3ItbWF0ZXJpYWwtaWNvbnNcIj5waG90b19jYW1lcmE8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBtYXRUb29sdGlwPVwie3snVU5ETycgfCBsb2NhbGl6ZX19XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm1lc3NhZ2VTZXJ2aWNlLmVtaXQobWVzc2FnZVR5cGUuVW5kbylcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInByZXNldHNTZXJ2aWNlLmlzTG9hZGluZyB8fCAhYXBwU3RhdGUuY2FuVW5kbygpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJob21lZGVjb3JhdG9yLW1hdGVyaWFsLWljb25zXCI+dW5kbzwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IG1hdFRvb2x0aXA9XCJ7eydSRURPJyB8IGxvY2FsaXplfX1cIj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwibWVzc2FnZVNlcnZpY2UuZW1pdChtZXNzYWdlVHlwZS5SZWRvKVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicHJlc2V0c1NlcnZpY2UuaXNMb2FkaW5nIHx8ICFhcHBTdGF0ZS5jYW5SZWRvKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImhvbWVkZWNvcmF0b3ItbWF0ZXJpYWwtaWNvbnNcIj5yZWRvPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uICpuZ0lmPVwiIWZ1bGxzY3JlZW5cIiAoY2xpY2spPVwicmVxdWVzdEZ1bGxzY3JlZW4oKVwiIG1hdFRvb2x0aXA9XCJ7eydSRVFVRVNUX0ZVTExTQ1JFRU4nIHwgbG9jYWxpemV9fVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImhvbWVkZWNvcmF0b3ItbWF0ZXJpYWwtaWNvbnNcIj5mdWxsc2NyZWVuPC9tYXQtaWNvbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uICpuZ0lmPVwiZnVsbHNjcmVlblwiIChjbGljayk9XCJleGl0RnVsbHNjcmVlbigpXCIgbWF0VG9vbHRpcD1cInt7J0VYSVRfRlVMTFNDUkVFTicgfCBsb2NhbGl6ZX19XCI+XHJcbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaG9tZWRlY29yYXRvci1tYXRlcmlhbC1pY29uc1wiPmZ1bGxzY3JlZW5fZXhpdDwvbWF0LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9tYXQtdG9vbGJhcj5cclxuXHJcbiAgICA8bGltaXRlZC1tb2RlLW1lc3NhZ2VcclxuICAgICAgKm5nSWY9XCJwaG9uZVNpemVTY3JlZW4gJiYgc2hvd0xpbWl0ZWRNb2RlTWVzc2FnZVwiXHJcbiAgICAgIChjbG9zZUNsaWNrZWQpPVwib25DbG9zZUxpbWl0ZWRNb2RlTWVzc2FnZUNsaWNrKClcIj5cclxuICAgIDwvbGltaXRlZC1tb2RlLW1lc3NhZ2U+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInRvYXN0LXdyYXBwZXJcIlxyXG4gICAgICAgICBbY2xhc3Muc3VjY2Vzc109XCJ0b2FzdC50eXBlID09ICB0b2FzdFR5cGUuU3VjY2Vzc1wiXHJcbiAgICAgICAgIFtjbGFzcy53YXJuaW5nXT1cInRvYXN0LnR5cGUgPT0gIHRvYXN0VHlwZS5XYXJuaW5nXCJcclxuICAgICAgICAgW2NsYXNzLmVycm9yXT1cInRvYXN0LnR5cGUgPT0gIHRvYXN0VHlwZS5FcnJvclwiXHJcbiAgICAgICAgICpuZ0lmPVwidG9hc3RcIlxyXG4gICAgICAgICBAc2hvd1RvYXN0XHJcbiAgICAgICAgIFt0ZXh0Q29udGVudF09XCJ0b2FzdC5tZXNzYWdlXCI+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8bWF0LXRvb2xiYXItcm93IGNsYXNzPVwidG9vbGJhci1yb3dcIj5cclxuICAgICAgPG1hdC10b29sYmFyIGNsYXNzPVwidG9vbGJhciB0b29sYmFyLS1zZWNvbmRhcnlcIiAqbmdJZj1cIiFwaG9uZVNpemVTY3JlZW5cIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpY29uIG9mIHRvb2xiYXJJY29uc1RvcFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbY2RrUG9ydGFsT3V0bGV0XT1cImljb24ucG9ydGFsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJoZC10b29sYmFyLXNwYWNlclwiPjwvc3Bhbj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpY29uIG9mIHRvb2xiYXJJY29uc0JvdHRvbVwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbY2RrUG9ydGFsT3V0bGV0XT1cImljb24ucG9ydGFsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbWF0LXRvb2xiYXI+XHJcblxyXG4gICAgICA8bWF0LWRyYXdlci1jb250YWluZXIgY2xhc3M9XCJkcmF3ZXItY29udGFpbmVyXCI+XHJcbiAgICAgICAgPG1hdC1kcmF3ZXIgY2xhc3M9XCJkcmF3ZXJcIiBtb2RlPVwib3ZlclwiIHBvc2l0aW9uPVwibGVmdFwiICNsZWZ0U2lkZWJhcj5cclxuICAgICAgICAgIDxtYXQtZHJhd2VyLWNvbnRlbnQgY2xhc3M9XCJkcmF3ZXJfX2JvZHlcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyYXdlcl9fYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJjbGlja0Nsb3NlTGVmdFNpZGViYXIoKVwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImhvbWVkZWNvcmF0b3ItbWF0ZXJpYWwtaWNvbnNcIj5jbGVhcjwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtjZGtQb3J0YWxPdXRsZXRdPVwibGVmdFBvcnRhbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9tYXQtZHJhd2VyLWNvbnRlbnQ+XHJcbiAgICAgICAgPC9tYXQtZHJhd2VyPlxyXG4gICAgICA8L21hdC1kcmF3ZXItY29udGFpbmVyPlxyXG4gICAgPC9tYXQtdG9vbGJhci1yb3c+XHJcbiAgICA8IS0tXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgIC0tPlxyXG4gIGAsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdG9vbGJhci5jb21wb25lbnQuc2NzcyddLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ3Nob3dUb2FzdCcsIFtcclxuICAgICAgc3RhdGUoJ3ZvaWQnLCBzdHlsZSh7J3RyYW5zZm9ybS1vcmlnaW4nOiAndG9wIGNlbnRlcicsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZSgtNTAlLCAtMTAwJSknfSkpLFxyXG4gICAgICBzdGF0ZSgnKicsIHN0eWxlKHsndHJhbnNmb3JtLW9yaWdpbic6ICd0b3AgY2VudGVyJywgdHJhbnNmb3JtOiAndHJhbnNsYXRlKC01MCUsIDApJ30pKSxcclxuICAgICAgdHJhbnNpdGlvbigndm9pZCA8PT4gKicsIGFuaW1hdGUoJzIwMG1zIGVhc2UtaW4tb3V0JykpXHJcbiAgICBdKSxcclxuICAgIHRyaWdnZXIoJ3Nob3dMZWZ0VG9vbGJhcicsIFtcclxuICAgICAgc3RhdGUoJ3Nob3cnLCBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwJSknfSkpLFxyXG4gICAgICBzdGF0ZSgnaGlkZScsIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKC0xMDAlKSd9KSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ3Nob3cgPD0+IGhpZGUnLCBhbmltYXRlKCcyMDBtcyBlYXNlLWluLW91dCcpKVxyXG4gICAgXSlcclxuICBdLyosXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gqL1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVG9vbGJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgcHVibGljIHJlYWRvbmx5IHRvYXN0VHlwZTogdHlwZW9mIFRvYXN0VHlwZSA9IFRvYXN0VHlwZTtcclxuICBwdWJsaWMgcmVhZG9ubHkgbWVzc2FnZVR5cGU6IHR5cGVvZiBNZXNzYWdlVHlwZSA9IE1lc3NhZ2VUeXBlO1xyXG4gIHB1YmxpYyByZWFkb25seSBpY29uczogdHlwZW9mIEljb25FbnVtID0gSWNvbkVudW07XHJcblxyXG4gIGxlZnRQb3J0YWw6IFRlbXBsYXRlUG9ydGFsPGFueT47XHJcbiAgbGFzdFRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIHJpZ2h0UG9ydGFsOiBUZW1wbGF0ZVBvcnRhbDxhbnk+O1xyXG4gIHRvb2xiYXJJY29uc1RvcDogVG9vbGJhckljb25bXSA9IFtdO1xyXG4gIHRvb2xiYXJJY29uc0JvdHRvbTogVG9vbGJhckljb25bXSA9IFtdO1xyXG5cclxuICBwdWJsaWMgc2hvd0JsaW5rRXJyb3I6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBzaG93U2F2ZU5vdGlmaWNhdGlvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHVibGljIHRvYXN0OiBUb2FzdDtcclxuICBwdWJsaWMgcGhvbmVTaXplU2NyZWVuOiBib29sZWFuO1xyXG4gIHB1YmxpYyBzaG93TGltaXRlZE1vZGVNZXNzYWdlID0gdHJ1ZTtcclxuICBwdWJsaWMgdGltZUxlZnQ6IG51bWJlciA9IDkwMDtcclxuICBwdWJsaWMgaW50ZXJ2YWw7XHJcbiAgcHVibGljIHRvb2x0aXBEaXNhYmxlZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHVibGljIGJhZGdlRGlzYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBwcml2YXRlIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBAVmlld0NoaWxkKCdsZWZ0U2lkZWJhcicsIHtzdGF0aWM6IHRydWV9KSBsZWZ0U2lkZWJhcjogTWF0RHJhd2VyO1xyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcclxuICBwdWJsaWMgaGFuZGxlS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKGV2ZW50LmN0cmxLZXkgJiYgZXZlbnQuc2hpZnRLZXkgJiYgZXZlbnQua2V5ID09PSAnUycpIHtcclxuICAgICAgdGhpcy5fc2hvd1NhdmVEaWFsb2coZmFsc2UsIGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZnVsbHNjcmVlbigpOiBib29sZWFuIHtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHJldHVybiBkb2N1bWVudC5mdWxsc2NyZWVuRWxlbWVudCB8fCAvLyBhbHRlcm5hdGl2ZSBzdGFuZGFyZCBtZXRob2RcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICBkb2N1bWVudC5tb3pGdWxsU2NyZWVuRWxlbWVudCB8fCBkb2N1bWVudC53ZWJraXRGdWxsc2NyZWVuRWxlbWVudCB8fCBkb2N1bWVudC5tc0Z1bGxzY3JlZW5FbGVtZW50OyAvLyBjdXJyZW50IHdvcmtpbmcgbWV0aG9kc1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgYXBwU3RhdGU6IEFwcFN0YXRlU2VydmljZSxcclxuICAgIHB1YmxpYyBwcmVzZXRzU2VydmljZTogUHJlc2V0c1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VCdXNTZXJ2aWNlLFxyXG4gICAgcHVibGljIHNldHRpbmdzU2VydmljZTogSG9tZWRlY29yYXRvclNldHRpbmdzU2VydmljZSxcclxuICAgIHB1YmxpYyBzdG9yYWdlU2VydmljZTogTG9jYWxTdG9yYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NjcmVlblNpemVTZXJ2aWNlOiBTY3JlZW5TaXplQW5hbHlzaXNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIF90b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgX2FwcFNlcnZpY2U6IEhvbWVkZWNvcmF0b3JBcHBTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcGVybWFuZW50U3RvcmVTZXJ2aWNlOiBQZXJtYW5lbnRTdG9yZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF91dGlsc1NlcnZpY2U6IFV0aWxzU2VydmljZSxcclxuICAgIHByaXZhdGUgX3RocmVlZFNlcnZpY2U6IFRocmVlZHNlbGVjdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgX2l0ZW1TZXJ2aWNlOiBJdGVtU2VydmljZSxcclxuICAgIHByaXZhdGUgX2Zsb29yUGxhblNlcnZpY2U6IEZsb29ycGxhblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9mbG9vclNlcnZpY2U6IEZsb29yU2VydmljZSxcclxuICAgIHByaXZhdGUgX2FuaW1hdGlvblNlcnZpY2U6IEFuaW1hdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9kZXZlbG9wbWVudFNlcnZpY2U6IERldmVsb3BtZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgX25ld1JlbmRlclNlcnZpY2U6IE5ld1JlbmRlclNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuX3N1YnMucHVzaChcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuU2V0TGVmdFNpZGViYXIsICh0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PikgPT4gdGhpcy5fc2V0TGVmdFNpZGViYXIodGVtcGxhdGVSZWYpKSxcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuSGlkZUxlZnRTaWRlYmFyLCAoKSA9PiB0aGlzLl9jbG9zZUxlZnRTaWRlYmFyKHtrZWVwVGVtcGxhdGVSZWY6IHRydWV9KSksXHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2Uuc3Vic2NyaWJlKE1lc3NhZ2VUeXBlLlJlZ2lzdGVyVG9vbGJhckljb24sIChpY29uOiBUb29sYmFySWNvbikgPT4gdGhpcy5fcmVnaXN0ZXJUb29sYmFySWNvbihpY29uKSksXHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2Uuc3Vic2NyaWJlKE1lc3NhZ2VUeXBlLlZpZXdNb2RlQ2hhbmdlZCwgKCkgPT4gdGhpcy5fY2xvc2VMZWZ0U2lkZWJhcigpKSxcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuTmV3Um9vbSwgKCkgPT4gdGhpcy5uZXdSb29tKCkpLFxyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnN1YnNjcmliZShNZXNzYWdlVHlwZS5TaG93T3BlbkRpYWxvZywgKCkgPT4gdGhpcy5vcGVuT3BlbkRpYWxvZygpKSxcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuRmluaXNoZWRJT25lRnVybml0dXJlQnVpbGQsICgpID0+IHRoaXMuX2hpZGVUb2FzdCgpKSxcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuVW5kZWZpbmVkRXJyb3JPY2N1cmVkLCAoKSA9PiB0aGlzLl9oaWRlVG9hc3QoKSksXHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2Uuc3Vic2NyaWJlKE1lc3NhZ2VUeXBlLlJlbmRlclNlcnZpY2VUcnlUb0Nvbm5lY3QsICgpID0+IHRoaXMuX2hpZGVUb2FzdCgpKSxcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuUmVuZGVyU2VydmljZUNvbm5lY3RlZCwgKCkgPT4gdGhpcy5faGlkZVRvYXN0KCkpLFxyXG4gICAgICB0aGlzLl90b2FzdFNlcnZpY2Uuc2hvd1RvYXN0U3ViLnN1YnNjcmliZSgodG9hc3Q6IFRvYXN0KSA9PiB0aGlzLl9zaG93VG9hc3QodG9hc3QpKSxcclxuICAgICAgdGhpcy5fc2NyZWVuU2l6ZVNlcnZpY2Uuc2NyZWVuU2l6ZUNoYW5nZWQuc3Vic2NyaWJlKGluZm8gPT4gdGhpcy5waG9uZVNpemVTY3JlZW4gPSBpbmZvLmlzUGhvbmVTaXplKSxcclxuICAgICAgLy8gdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuU3RhcnRXaXRoRGlhZ3JhbSwgKCkgPT4gdGhpcy5vcGVuVXBsb2FkRGlhZ3JhbSgpKSxcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuU3RhcnREcmF3aW5nRGlhZ3JhbSwgKGZpbGUpID0+IHRoaXMub3BlbkRyYXdEaWFncmFtKGZpbGUpKSxcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuU3RhcnRDcm9wcGluZ1BERiwgKGZpbGUpID0+IHRoaXMub3BlbkNyb3BwaW5nRGlhZ3JhbShmaWxlKSksXHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2Uuc3Vic2NyaWJlKE1lc3NhZ2VUeXBlLlVzZXJNb2RlbFVwbG9hZGVkLCAoZmlsZSkgPT4gdGhpcy5vcGVuTW9kZWxQcmV2aWV3KGZpbGUpKSxcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuUmVuZGVyRXJyb3IsIChkYXRhKSA9PiB0aGlzLnNob3dSZW5kZXJFcnJvcihkYXRhKSksXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N1YnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XHJcbiAgICB0aGlzLmxhc3RUZW1wbGF0ZVJlZiA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnRpbWVMZWZ0ID4gMCkge1xyXG4gICAgICAgIHRoaXMudGltZUxlZnQtLTtcclxuICAgICAgICB0aGlzLnNhdmVOb3RpZmljYXRpb24oKTtcclxuICAgICAgfVxyXG4gICAgfSwgMTAwMCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xpY2tDbG9zZUxlZnRTaWRlYmFyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY2xvc2VMZWZ0U2lkZWJhcigpO1xyXG4gICAgdGhpcy5tZXNzYWdlU2VydmljZS5lbWl0KE1lc3NhZ2VUeXBlLkxlZnRTaWRlYmFyQ2xvc2VDbGlja2VkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZXdSb29tKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY2xvc2VMZWZ0U2lkZWJhcigpO1xyXG4gICAgdGhpcy5fYXBwU2VydmljZS51c2VyUmVnaXN0ZXJlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5fZGlhbG9nLm9wZW4oTGFuZGluZ1NjcmVlbk1vZGFsQ29tcG9uZW50LCB7XHJcbiAgICAgIHdpZHRoOiAnODYwcHgnXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhbmltYXRlTW9kZWwoZWxlbWVudDogSXRlbSk6IHZvaWQge1xyXG4gICAgdGhpcy5fYW5pbWF0aW9uU2VydmljZS5wbGF5QW5pbWF0aW9uKGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIG9wZW5TYXZlRGlhbG9nKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKCF0aGlzLl9wZXJtYW5lbnRTdG9yZVNlcnZpY2UuY29kZSkge1xyXG4gICAgICB0aGlzLl9zaG93U2F2ZURpYWxvZyhmYWxzZSwgdHJ1ZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuX2FwcFNlcnZpY2UudXNlclJlZ2lzdGVyZWQgJiYgdGhpcy5fcGVybWFuZW50U3RvcmVTZXJ2aWNlLmNvZGUgJiYgZW52aXJvbm1lbnQucHJvZHVjdGlvbiAmJiB0aGlzLnNldHRpbmdzU2VydmljZS5zZXR0aW5ncy5vcHRpb25zLnNob3dGb3JtRGlhbG9nKSB7XHJcbiAgICAgIGNvbnN0IHJlZ0RpYWxvZyA9IHRoaXMuX2RpYWxvZy5vcGVuKFJlZ2lzdGVyRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgICAgd2lkdGg6ICc0MDBweCcsXHJcbiAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlXHJcbiAgICAgIH0pO1xyXG4gICAgICByZWdEaWFsb2cuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoYXN5bmMgKHJlZ2lzdGVyZWQ6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICBpZiAocmVnaXN0ZXJlZCkge1xyXG4gICAgICAgICAgdGhpcy5fYXBwU2VydmljZS51c2VyUmVnaXN0ZXJlZCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLl9zaG93U2F2ZURpYWxvZyhmYWxzZSwgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLl9wZXJtYW5lbnRTdG9yZVNlcnZpY2UuY29kZS8qICYmICFlbnZpcm9ubWVudC5wcm9kdWN0aW9uKi8pIHtcclxuICAgICAgdGhpcy5fc2hvd1NhdmVEaWFsb2coKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcGVuT3BlbkRpYWxvZygpOiB2b2lkIHtcclxuICAgIHRoaXMuX2RpYWxvZy5vcGVuKE9wZW5EaWFsb2dDb21wb25lbnQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGxvYWRSb29tKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3Qgb2JqID0gYXdhaXQgdGhpcy5fdXRpbHNTZXJ2aWNlLmxvYWRHbGJSb29tKCdodHRwczovL2NkbjEuY29saWpuLWl0Lm5sL2NvbnRlbnQ0My9hc3NldHMvU3RhdGlvbjdfS2F0dGVuYnVyZ18yMTA0MTQuZ2xiJyk7XHJcbiAgICAvLyBjb25zdCBvYmogPSBhd2FpdCB0aGlzLl91dGlsc1NlcnZpY2UubG9hZEdsYlJvb20oJ2h0dHBzOi8vY2RuMS5jb2xpam4taXQubmwvY29udGVudDQzL2Fzc2V0cy9TdGF0aW9uN19LYXR0ZW5idXJnX21heF8yMTA2MTZfMV9HTFRGL1N0YXRpb243X0thdHRlbmJ1cmdfbWF4XzIxMDYxNl8xLmdsdGYnKTtcclxuICAgIG9iai5jaGlsZHJlbi5mb3JFYWNoKGMgPT4gYy52aXNpYmxlID0gdHJ1ZSk7XHJcbiAgICAvLyBjb25zdCBib3VuZGluZ0JveCA9IG5ldyBCb3gzKCkuc2V0RnJvbU9iamVjdChvYmopO1xyXG4gICAgLy8gLy8gY3JlYXRlIGZsb29yXHJcbiAgICAvLyBjb25zdCBoYWxmV2lkdGg6IG51bWJlciA9IChib3VuZGluZ0JveC5tYXgueCAtIGJvdW5kaW5nQm94Lm1pbi54KSAvIDI7XHJcbiAgICAvLyBjb25zdCBoYWxmRGVwdGg6IG51bWJlciA9IChib3VuZGluZ0JveC5tYXgueiAtIGJvdW5kaW5nQm94Lm1pbi56KSAvIDI7XHJcbiAgICAvLyBjb25zdCBjb3JuZXJzID0gW1xyXG4gICAgLy8gICB0aGlzLl9mbG9vclBsYW5TZXJ2aWNlLm5ld0Nvcm5lcigtaGFsZldpZHRoLCBoYWxmRGVwdGgpLFxyXG4gICAgLy8gICB0aGlzLl9mbG9vclBsYW5TZXJ2aWNlLm5ld0Nvcm5lcigtaGFsZldpZHRoLCAtaGFsZkRlcHRoKSxcclxuICAgIC8vICAgdGhpcy5fZmxvb3JQbGFuU2VydmljZS5uZXdDb3JuZXIoaGFsZldpZHRoLCAtaGFsZkRlcHRoKSxcclxuICAgIC8vICAgdGhpcy5fZmxvb3JQbGFuU2VydmljZS5uZXdDb3JuZXIoaGFsZldpZHRoLCBoYWxmRGVwdGgpLFxyXG4gICAgLy8gXTtcclxuICAgIC8vIHRoaXMuX2Zsb29yU2VydmljZS5nZW5lcmF0ZUZsb29yUGxhbmUoJ3RyYW5zcGFyZW50JywgdW5kZWZpbmVkLCBjb3JuZXJzKTtcclxuICAgIHRoaXMuX2l0ZW1TZXJ2aWNlLmFkZEl0ZW0ob2JqKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBsb2FkUmVzaXphYmxlUm9vbSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IG9iaiA9IGF3YWl0IHRoaXMuX2RldmVsb3BtZW50U2VydmljZS5jcmVhdGVSZXNpemFibGVSb29tKCk7XHJcbiAgICB0aGlzLl9pdGVtU2VydmljZS5hZGRJdGVtKG9iaik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZG93bmxvYWRSb29tKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fdXRpbHNTZXJ2aWNlLnNhdmVSb29tQXNHbGIoKTtcclxuICB9XHJcblxyXG4gIC8vIHB1YmxpYyBhcGlSb29tUmVuZGVyKCk6IHZvaWQge1xyXG4gIC8vICAgdGhpcy5tZXNzYWdlU2VydmljZS5lbWl0KE1lc3NhZ2VUeXBlLlNob3dMb2FkaW5nSW5kaWNhdG9yLCB7dGl0bGU6ICdSZW5kZXJpbmcuLi4nfSk7XHJcbiAgLy8gICB0aGlzLl91dGlsc1NlcnZpY2UucHJlcFJvb21Gb3JSZW5kZXIoKTtcclxuICAvLyB9XHJcblxyXG4gIHB1YmxpYyBvblVuZG9DbGljaygpIHtcclxuICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZW1pdChNZXNzYWdlVHlwZS5VbmRvKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblJlZG9DbGljaygpIHtcclxuICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZW1pdChNZXNzYWdlVHlwZS5SZWRvKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNsb3NlTGltaXRlZE1vZGVNZXNzYWdlQ2xpY2soKSB7XHJcbiAgICB0aGlzLnNob3dMaW1pdGVkTW9kZU1lc3NhZ2UgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblRha2VTY3JlZW5zaG90Q2xpY2soKSB7XHJcbiAgICBpZiAoIXRoaXMuc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLm9wdGlvbnMuc2hvd0Zvcm1EaWFsb2cpIHtcclxuICAgICAgY29uc3QgcmVnRGlhbG9nID0gdGhpcy5fZGlhbG9nLm9wZW4oUmVnaXN0ZXJEaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgICBtaW5XaWR0aDogJzQwMHB4JyxcclxuICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgICAgfSk7XHJcbiAgICAgIHJlZ0RpYWxvZy5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShhc3luYyAocmVnaXN0ZXJlZDogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgIGlmIChyZWdpc3RlcmVkKSB7XHJcbiAgICAgICAgICB0aGlzLl9hcHBTZXJ2aWNlLnVzZXJSZWdpc3RlcmVkID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZW1pdChNZXNzYWdlVHlwZS5UYWtlU2NyZWVuc2hvdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZW1pdChNZXNzYWdlVHlwZS5UYWtlU2NyZWVuc2hvdCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVxdWVzdEZ1bGxzY3JlZW4oKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZnVsbHNjcmVlbikge1xyXG4gICAgICBpZiAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnJlcXVlc3RGdWxsc2NyZWVuKSB7XHJcbiAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnJlcXVlc3RGdWxsc2NyZWVuKCk7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICB9IGVsc2UgaWYgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5tc1JlcXVlc3RGdWxsc2NyZWVuKSB7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5tc1JlcXVlc3RGdWxsc2NyZWVuKCk7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICB9IGVsc2UgaWYgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5tb3pSZXF1ZXN0RnVsbFNjcmVlbikge1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQubW96UmVxdWVzdEZ1bGxTY3JlZW4oKTtcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKSB7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbihFbGVtZW50LkFMTE9XX0tFWUJPQVJEX0lOUFVUKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGV4aXRGdWxsc2NyZWVuKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZnVsbHNjcmVlbikge1xyXG4gICAgICBpZiAoZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4pIHtcclxuICAgICAgICBkb2N1bWVudC5leGl0RnVsbHNjcmVlbigpO1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgfSBlbHNlIGlmIChkb2N1bWVudC5tc0V4aXRGdWxsc2NyZWVuKSB7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIGRvY3VtZW50Lm1zRXhpdEZ1bGxzY3JlZW4oKTtcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQubW96Q2FuY2VsRnVsbFNjcmVlbikge1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICBkb2N1bWVudC5tb3pDYW5jZWxGdWxsU2NyZWVuKCk7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICB9IGVsc2UgaWYgKGRvY3VtZW50LndlYmtpdEV4aXRGdWxsc2NyZWVuKSB7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIGRvY3VtZW50LndlYmtpdEV4aXRGdWxsc2NyZWVuKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzYXZlTm90aWZpY2F0aW9uKCkge1xyXG4gICAgaWYgKHRoaXMudGltZUxlZnQgPT09IDApIHtcclxuICAgICAgdGhpcy5zaG93U2F2ZU5vdGlmaWNhdGlvbiA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnRvb2x0aXBEaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmJhZGdlRGlzYWJsZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdG9wVGltZXIoKSB7XHJcbiAgICB0aGlzLnRpbWVMZWZ0ID0gOTAwO1xyXG4gICAgdGhpcy5zaG93U2F2ZU5vdGlmaWNhdGlvbiA9IHRydWU7XHJcbiAgICB0aGlzLnRvb2x0aXBEaXNhYmxlZCA9IHRydWU7XHJcbiAgICB0aGlzLmJhZGdlRGlzYWJsZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9wZW5EcmF3RGlhZ3JhbShmaWxlOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuX2RpYWxvZy5jbG9zZUFsbCgpO1xyXG4gICAgdGhpcy5fZGlhbG9nLm9wZW4oRHJhd0RpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICBkYXRhOiB7ZmlsZTogZmlsZX1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9wZW5Dcm9wcGluZ0RpYWdyYW0oZmlsZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLl9kaWFsb2cuY2xvc2VBbGwoKTtcclxuICAgIHRoaXMuX2RpYWxvZy5vcGVuKFBkZkNyb3BEaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgZGF0YToge2ZpbGU6IGZpbGV9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcGVuTW9kZWxQcmV2aWV3KGZpbGU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGlhbG9nLm9wZW4oTW9kZWxQcmV2aWV3Q29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IHtmaWxlOiBmaWxlfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2hvd1JlbmRlckVycm9yKGRhdGE6IEVycm9yRGlhbG9nRGF0YSk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGlhbG9nLm9wZW4oRXJyb3JEaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgZGF0YTogZGF0YVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVtaXQoTWVzc2FnZVR5cGUuSGlkZUxvYWRpbmdJbmRpY2F0b3IpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRlc3RSZW5kZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9uZXdSZW5kZXJTZXJ2aWNlLmZvcmNlUmVuZGVySW1hZ2UoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Nob3dTYXZlRGlhbG9nKGxvY2FsU2F2ZTogYm9vbGVhbiA9IGZhbHNlLCBzYXZlT25PcGVuRGlhbG9nOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcclxuICAgIHRoaXMuX2RpYWxvZy5vcGVuKFNhdmVEaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6ICc1MDBweCcsXHJcbiAgICAgIGRhdGE6IHtvcGVuRG93bmxvYWREaWFsb2c6IGxvY2FsU2F2ZSwgc2F2ZU9uT3BlbkRpYWxvZzogc2F2ZU9uT3BlbkRpYWxvZ31cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaGlkZVRvYXN0KCk6IHZvaWQge1xyXG4gICAgdGhpcy50b2FzdCA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Nob3dUb2FzdCh0b2FzdDogVG9hc3QpOiB2b2lkIHtcclxuICAgIHRoaXMudG9hc3QgPSB0b2FzdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldExlZnRTaWRlYmFyKHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5sYXN0VGVtcGxhdGVSZWYgPT09IHRlbXBsYXRlUmVmICYmIHRoaXMubGVmdFBvcnRhbCAmJiB0aGlzLmxlZnRQb3J0YWwuaXNBdHRhY2hlZCkge1xyXG4gICAgICB0aGlzLmxlZnRQb3J0YWwuZGV0YWNoKCk7XHJcbiAgICAgIHRoaXMubGVmdFNpZGViYXIuY2xvc2UoKTtcclxuICAgICAgdGhpcy5sYXN0VGVtcGxhdGVSZWYgPSBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5sZWZ0UG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRlbXBsYXRlUmVmLCB1bmRlZmluZWQsIHt9KTtcclxuICAgICAgdGhpcy5sZWZ0U2lkZWJhci5vcGVuKCk7XHJcbiAgICAgIHRoaXMubGFzdFRlbXBsYXRlUmVmID0gdGVtcGxhdGVSZWY7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9yZWdpc3RlclRvb2xiYXJJY29uKGljb246IFRvb2xiYXJJY29uKTogdm9pZCB7XHJcbiAgICBpY29uLnBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbChpY29uLnRlbXBsYXRlLCB1bmRlZmluZWQsIHt9KTtcclxuICAgIGljb24ucHJpb3JpdHkgPSBpY29uLnByaW9yaXR5IHx8IDA7XHJcbiAgICBsZXQgdG9vbGJhckljb25zO1xyXG4gICAgaWYgKGljb24ucG9zaXRpb24gPT09ICdib3R0b20nKSB7XHJcbiAgICAgIHRvb2xiYXJJY29ucyA9IHRoaXMudG9vbGJhckljb25zQm90dG9tO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdG9vbGJhckljb25zID0gdGhpcy50b29sYmFySWNvbnNUb3A7XHJcbiAgICB9XHJcbiAgICB0b29sYmFySWNvbnMucHVzaChpY29uKTtcclxuICAgIHRvb2xiYXJJY29ucy5zb3J0KChhLCBiKSA9PiBhLnByaW9yaXR5IC0gYi5wcmlvcml0eSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jbG9zZUxlZnRTaWRlYmFyKG9wdGlvbnM6IENsb3NpbmdPcHRpb25zID0ge30pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmxlZnRQb3J0YWwgJiYgdGhpcy5sZWZ0UG9ydGFsLmlzQXR0YWNoZWQpIHtcclxuICAgICAgdGhpcy5sZWZ0UG9ydGFsLmRldGFjaCgpO1xyXG4gICAgICB0aGlzLmxlZnRQb3J0YWwgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKCFvcHRpb25zLmtlZXBUZW1wbGF0ZVJlZikge1xyXG4gICAgICB0aGlzLmxhc3RUZW1wbGF0ZVJlZiA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5sZWZ0U2lkZWJhcikge1xyXG4gICAgICB0aGlzLmxlZnRTaWRlYmFyLmNsb3NlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|