@james_jayaraj/test-npm 1.2.9 → 1.3.0

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.
@@ -4710,8 +4710,6 @@ export class RxComponent {
4710
4710
  this.commonServices.setlogvalue(false, res.response_message, res.response_message, "RxComponent", "AddFavourites", body);
4711
4711
  this.commonServices.toastopen(res.response_message, 'error', res.error_code);
4712
4712
  this.commonServices.errorResponse(res.error_code, res.response_message);
4713
- this.selectInstructionDropdownList = false;
4714
- this.selectInstructionDropdown = true;
4715
4713
  }
4716
4714
  this.changedetect.detectChanges();
4717
4715
  }
@@ -4978,4 +4976,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
4978
4976
  type: HostListener,
4979
4977
  args: ['click', ['$event']]
4980
4978
  }] } });
4981
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaG9sYS1yeC9zcmMvbGliL3J4L3J4LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2hvbGEtcngvc3JjL2xpYi9yeC9yeC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBYyxZQUFZLEVBQUUsWUFBWSxFQUFVLE1BQU0sRUFBMEIsU0FBUyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUcxSyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNqRixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQztBQUUxSCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxrRkFBa0YsQ0FBQztBQUMzSSxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSw4RUFBOEUsQ0FBQztBQUNySSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7O0FBTzNFLE1BQU0sT0FBTyxXQUFXO0lBdUd0QixZQUNTLFVBQXNCLEVBQ3RCLGNBQThCLEVBQzdCLFVBQXNCLEVBQ3RCLFlBQStCLEVBQ2hDLFFBQWtCLEVBQ2pCLFFBQW1CLEVBQ25CLEtBQWlCLEVBQ2pCLGdCQUFrQztRQVBuQyxlQUFVLEdBQVYs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QUMsY0FBYyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDbkM7WUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsU0FBUyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxTQUFTLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFBO1lBQ3pRLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxVQUFVLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLFVBQVUsSUFBSSxTQUFTLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUE7WUFDblIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxJQUFJLFNBQVMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUE7U0FDelI7UUFDRCxP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QUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2plLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUM3SixVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUks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c0JBQWxFLFNBQVM7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNKLFFBQVE7c0JBQXRELFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDSSxVQUFVO3NCQUExRCxTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFFckMsVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUVQLHVCQUF1QjtzQkFEdEIsU0FBUzt1QkFBQyxzQkFBc0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBdUZWLE9BQU87c0JBQWhELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDZCxVQUFVO3NCQUFuQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ2EsT0FBTztzQkFBM0MsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQW9DbkMsT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBPbkluaXQsIE91dHB1dCwgUmVuZGVyZXIyLCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbW1vblNlcnZpY2VzIH0gZnJvbSAnLi4vc2VydmljZXMvY29tbW9uJztcclxuaW1wb3J0IHsgQnJhbmRJbmNsdWRlQ29tcG9uZW50IH0gZnJvbSAnLi4vYnJhbmQtaW5jbHVkZS9icmFuZC1pbmNsdWRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEF2YWlsYWJsZUZvcm11bGF0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4uL2JyYW5kLWluY2x1ZGUvYXZhaWxhYmxlLWZvcm11bGF0aW9ucy9hdmFpbGFibGUtZm9ybXVsYXRpb25zLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSXNBdXRob3JpdHlDb21wb25lbnQgfSBmcm9tICcuLi9pcy1hdXRob3JpdHkvaXMtYXV0aG9yaXR5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlYWxUaW1lUHJlc2NyaXB0aW9uTW9uaXRvcmluZ0NvbXBvbmVudCB9IGZyb20gJy4uL3JlYWwtdGltZS1wcmVzY3JpcHRpb24tbW9uaXRvcmluZy9yZWFsLXRpbWUtcHJlc2NyaXB0aW9uLW1vbml0b3JpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29uZmlybVBhdGllbnRDb250YWN0RGV0YWlsc0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbmZpcm0tcGF0aWVudC1jb250YWN0LWRldGFpbHMvY29uZmlybS1wYXRpZW50LWNvbnRhY3QtZGV0YWlscy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQYXNzd29yZENvbXBvbmVudCB9IGZyb20gJy4uL3Bhc3N3b3JkL3Bhc3N3b3JkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IGNvbmZpZywgZXJyb3Jjb25maWcgfSBmcm9tICcuLi9lbnZpcm9ubWVudHMvY29uZmlnJztcclxuaW1wb3J0IHsgQ2Vhc2VQb3B1cENvbXBvbmVudCB9IGZyb20gJy4uL2NlYXNlLXBvcHVwL2NlYXNlLXBvcHVwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlaXNzdWVQb3B1cENvbXBvbmVudCB9IGZyb20gJy4uL3JlaXNzdWUtcG9wdXAvcmVpc3N1ZS1wb3B1cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDbG9zZVBvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4vY2xvc2UtcG9wdXAvY2xvc2UtcG9wdXAuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXJ4JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcnguY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3J4LmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSeENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZCgnTWVkaWNpbmVEcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KSB3cmFwcGVyUmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdQcmVzY3JpYmVEcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KSBwcmVzY3JpYmVEcm9wZG93blJlZiE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnRG9zZURyb3Bkb3duJywgeyBzdGF0aWM6IGZhbHNlIH0pIGRvc2VSZWYhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ0ZyZXFEcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KSBmcmVxUmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdzdHBEcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KSBzdHBSZWYhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ0Zvb2REcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KSBmb29kUmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdJbnN0cnVjdGlvbkRyb3Bkb3duJywgeyBzdGF0aWM6IGZhbHNlIH0pIEluc3RydWN0aW9uUmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdSb3V0ZURyb3Bkb3duJywgeyBzdGF0aWM6IGZhbHNlIH0pIHJvdXRlUmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdQdXJwb3NlRHJvcGRvd24nLCB7IHN0YXRpYzogZmFsc2UgfSkgcHVycG9zZVJlZiE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIEBPdXRwdXQoKSBjbG9zZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBzdWJtaXRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAVmlld0NoaWxkKCdzZWxlY3RBY3Rpb25Ecm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHNlbGVjdEFjdGlvbkRyb3Bkb3duUmVmITogRWxlbWVudFJlZjtcclxuICBzZWxlY3RBY3Rpb25CdG5Ecm9wZG93biA9IGZhbHNlO1xyXG4gIGRvc2VEYXRhID0gW107XHJcbiAgZnJlcXVlbmN5RGF0YSA9IFtdO1xyXG4gIHNlbmR0b3BoYXJtYWN5RGF0YTogYW55ID0gW107XHJcbiAgZm9vZERhdGEgPSBbXTtcclxuICBwdXJwb3NlRGF0YSA9IFtdO1xyXG4gIHJvdXRlRGF0YSA9IFtdO1xyXG4gIGNlYXNlRGF0YSA9IFtdO1xyXG4gIGluc3RydWN0aW9uRGF0YTogYW55ID0gW107XHJcbiAgcm91dGVEYXRhRmlsdGVyID0gJyc7XHJcbiAgSW5zdHJ1Y3Rpb25JZCA9ICcnO1xyXG4gIC8vIHRpbWVyOiBhbnk7XHJcbiAgLy93YWl0VGltZSA9IDI1MDA7XHJcbiAgaXNTdGlsbFNlYXJjaGluZyA9IGZhbHNlO1xyXG4gIHBhZ2UgPSAxO1xyXG4gIHNlbGVjdGVkTWVkaWNpbmVEcm9wZG93biA9IGZhbHNlO1xyXG4gIHNlbGVjdFBCVE5Ecm9wZG93biA9IGZhbHNlO1xyXG4gIHNlbGVjdERvc2VEcm9wZG93biA9IGZhbHNlO1xyXG4gIHNlbGVjdEZyZXFEcm9wZG93biA9IGZhbHNlO1xyXG4gIHNlbGVjdHN0cERyb3Bkb3duID0gZmFsc2U7XHJcbiAgc2VsZWN0Rm9vZERyb3Bkb3duID0gZmFsc2U7XHJcbiAgc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93biA9IGZhbHNlO1xyXG4gIHNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0ID0gdHJ1ZTtcclxuICBzZWxlY3RSb3V0ZURyb3Bkb3duID0gZmFsc2U7XHJcbiAgc2VsZWN0UHVycG9zZURyb3Bkb3duID0gZmFsc2U7XHJcbiAgbWVkaVNlYXJjaFZhbHVlID0gJyc7XHJcbiAgdGVtcE1lZGlTZWFyY2hWYWx1ZSA9ICcnO1xyXG4gIEluc3RydWN0aW9uRGVzY3JpcHRpb24gPSAnJztcclxuICBzZWFyY2hNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gIGZhdk1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgc2VhcmNoZWRNZWRpY2luZUxpc3Q6IGFueSA9IFtdO1xyXG4gIHNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbDogYW55ID0gW107XHJcbiAgb25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgcnhPbmx5UEJTID0gZmFsc2U7XHJcbiAgcnhQcml2YXRlID0gZmFsc2U7XHJcbiAgcmVzdHJpY3Rpb25zID0gbnVsbDtcclxuICBpc1Nob3dSZXN0cmljdGlvbnMgPSBmYWxzZTtcclxuICBwcmVzY3JpYmVBU19QQlMgPSB0cnVlO1xyXG4gIHByZXNjcmliZUFTX1JQQlMgPSB0cnVlO1xyXG4gIGJyYW5kTWVkaWNwcm9kdWN0SWQgPSAnJztcclxuICBicmFuZE1lZGljcGJzQ29kZSA9ICcnO1xyXG4gIGJyYW5kTWVkaWNRdHkgPSAnJztcclxuICBicmFuZE1lZGljUmVwID0gJyc7XHJcbiAgc2VsZWN0ZWRCcmFuZEluZGV4ID0gJyc7XHJcbiAgbW9sZWN1bGVOYW1lVGV4dCA9ICcnO1xyXG4gIG1vbGVjdWxlTmFtZVR5cGUgPSAnJztcclxuICBtb2xlY3VsZVN0cmVuZ3RoVGV4dCA9ICcnO1xyXG4gIGlzUnRwbU5leHQgPSBmYWxzZTtcclxuICBzZWxlY3Rpb25idG5Mb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBQb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gIGlzTm9uUGJzRmxhZzogYW55ID0gZmFsc2U7XHJcbiAgYWJvcnRCdG5GbGFnID0gZmFsc2U7XHJcbiAgYWJvcnRkaXNhYmxlID0gZmFsc2U7XHJcbiAgcmVzcG9uc2VEYXRhOiBhbnkgPSB7XHJcbiAgICBpc0Fib3J0OiBmYWxzZSxcclxuICAgIGlzUHJlc2NyaWJlOiBmYWxzZSxcclxuICAgIGFib3J0U3VjY2VzczogZmFsc2UsXHJcbiAgICBwcmVzY3JpYmVTdWNjZXNzOiBmYWxzZSxcclxuICAgIHByZXNjcmliZWRhdGE6IFwiXCIsXHJcbiAgICBhYm9ydE1zZzogXCJcIixcclxuICAgIFByZXNjcmliZU1zZzogXCJcIixcclxuICAgIHByZXNjcmliZUVycm9yOiBmYWxzZSxcclxuICAgIGFib3J0RXJyb3I6IGZhbHNlLFxyXG4gICAgcHJlc2NyaWJlRXJyX2NvZGU6IFwiXCIsXHJcbiAgICBhYm9ydEVycl9jb2RlOiBcIlwiLFxyXG4gICAgYm9keTogXCJcIlxyXG4gIH1cclxuICBwcm9kSGlkZGVuTmFtZSA9IFwiXCI7XHJcbiAgUHJvZHVjdFR5cGUgPSBcIlwiO1xyXG4gIFByb2R1Y3RTZWFyY2hOYW1lID0gXCJcIjtcclxuICBzZWFyY2hNZWRpY2luZXNMZW5ndGg6IGFueSA9IFwiXCI7XHJcbiAgc2VhcmNoTWVkaWNpbmVzUGFnZU51bWJlciA9IDE7XHJcbiAgc2VhcmNoQnluYW1lTGVuZ3RoOiBhbnkgPSBcIlwiO1xyXG4gIHNlYXJjaEJ5bmFtZVBhZ2VOdW1iZXIgPSAxO1xyXG4gIGlzZXByaXNjcmliZXByaW50ID0gZmFsc2U7XHJcbiAgZWRpdEluc3RydWN0aW9uRmxhZyA9IGZhbHNlO1xyXG4gIFByaW1hcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gIHByZXNjcmliZUFTX1JQQlNfVVJBID0gdHJ1ZTtcclxuICB0ZW1wSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbiA9IFwiXCI7XHJcbiAgaXNQcmVzY3JpYmVBc1ByaXZhdGVPbmx5ID0gZmFsc2U7XHJcbiAgdGVtcEF1dGhvcml0eUZvcm1ObyA9IFwiXCI7XHJcbiAgY2xpZW50SWQ6IGFueSA9IFwiXCI7XHJcbiAgc2hvd0Zhdm91cml0ZU1lZCA9IGZhbHNlO1xyXG4gIGlzUmVzZW5kOmJvb2xlYW4gPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKCdyeHdpZGdldHMnLCB7IHN0YXRpYzogdHJ1ZSB9KSBjb250ZW50ITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCd0b29sdGlwZGVtbycpIG15VGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoJ3Rlc3QnLCB7IHN0YXRpYzogdHJ1ZSB9KSB0b29sdGlwITogbnVsbDtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBhcGlTZXJ2aWNlOiBBcGlTZXJ2aWNlLFxyXG4gICAgcHVibGljIGNvbW1vblNlcnZpY2VzOiBDb21tb25TZXJ2aWNlcyxcclxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgY2hhbmdlZGV0ZWN0OiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHB1YmxpYyBkYXRlUGlwZTogRGF0ZVBpcGUsXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSB2aWV3UmVmQ29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICkge1xyXG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXBvcF93aWQnLCBgMTIwMHB4YCk7XHJcbiAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tcG9wdXB3JywgYDEyMDBweGApO1xyXG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWhlYWRlcnBhZGRpbmcnLCBgMHB4YCk7XHJcbiAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tcG9wdXBoJywgYDY1MHB4YCk7XHJcbiAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0taGVhZGVyZm9udHdlaWdodCcsIGA0MDBgKTtcclxuICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdjbGljaycsIChldmVudDogTW91c2VFdmVudCkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkpIHtcclxuICAgICAgICB0aGlzLmhpZGVUb29sVGlwKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaGlkZVRvb2xUaXAoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy50b29sdGlwKSB7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZCh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMudG9vbHRpcCk7XHJcbiAgICAgICAgdGhpcy50b29sdGlwID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJoaWRlVG9vbFRpcFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcclxuICBvbmNsaWNrKGV2ZW50OiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChldmVudC50YXJnZXQuY2xhc3NOYW1lID09IFwicnhfdG9vbHRpcF9pbm5lcl9ib3hcIiB8fCBldmVudC50YXJnZXQuY2xhc3NOYW1lLmluY2x1ZGVzKFwiX19yZWFjdF9jb21wb25lbnRfdG9vbHRpcFwiKSkge1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChldmVudC50YXJnZXQuaWQgPT0gJ3Nob3ctdG9vbHRpcC1pZCcpIHtcclxuICAgICAgICAgIHRoaXMuaGlkZVRvb2xUaXAoKTtcclxuICAgICAgICAgIGlmICh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpKSB7IHRoaXMuY3JlYXRlVG9vbFRpcChldmVudCkgfVxyXG4gICAgICAgIH0gZWxzZSB7IHRoaXMuaGlkZVRvb2xUaXAoKTsgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIm9uY2xpY2tcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY2xpZW50SWQgPSB0aGlzLmNvbW1vblNlcnZpY2VzLmdldENyZWRldGlhbCgpO1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmlwdGlvbikge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY2xlYXJNZWRpY2FsUHJlc2NyaXB0aW9uRGF0YSgpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY2xvc2VFcnJvclJlc3BvbnNlID0gbnVsbDtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmdldEFsbE1pbXNWYWx1ZSgpO1xyXG4gICAgICB0aGlzLmdldEluc3RydWN0aW9uVmFsdWVzKCk7XHJcbiAgICAgIHRoaXMuZ2V0RmF2b3VydGllc0xpc3QoKTtcclxuICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmlwdGlvbikge1xyXG4gICAgICAgIHRoaXMuc2V0RWRpdFZhbHVlcyh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0KVxyXG4gICAgICAgICAgdGhpcy5nZXRSZXN0cmljdGVkTWVkaWNpbmUoKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscyA9IHt9O1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuaWhpTnVtYmVyID0gdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5paGlOdW1iZXIgPT0gbnVsbCB8fCB0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLmloaU51bWJlciA9PSB1bmRlZmluZWQgfHwgdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5paGlOdW1iZXIgPT0gXCJcIiA/IDAgOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLmloaU51bWJlclxyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5ocGlvTnVtYmVyID0gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMuaHBpb051bWJlciA9PSBudWxsIHx8IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLmhwaW9OdW1iZXIgPT0gdW5kZWZpbmVkIHx8IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLmhwaW9OdW1iZXIgPT0gXCJcIiA/IDAgOiB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5ocGlvTnVtYmVyXHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy5ocGlpTnVtYmVyID0gdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLmhwaWlOdW1iZXIgPT0gbnVsbCB8fCB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMuaHBpaU51bWJlciA9PSB1bmRlZmluZWQgfHwgdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLmhwaWlOdW1iZXIgPT0gXCJcIiA/IDAgOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMuaHBpaU51bWJlclxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJuZ09uSW5pdFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFJlc3RyaWN0ZWRNZWRpY2luZSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5hcGlTZXJ2aWNlLkdldChjb25maWcuUEhZU0lDSUFOLkdFVF9SRVNUUklDVEVEX01FRElDSU5FKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlOyB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJnZXRSZXN0cmljdGVkTWVkaWNpbmVcIik7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QgPSB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCA9IHJlcy5yZXNwb25zZTtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHM/LnByb2R1Y3RJZCkpIHtcclxuICAgICAgICAgICAgICB2YXIgaW5kZXggPSB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0LmZpbmRJbmRleCgoeDogeyBwcm9kdWN0SWQ6IGFueTsgfSkgPT4geC5wcm9kdWN0SWQgPT0gTnVtYmVyKHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnByb2R1Y3RJZCkpO1xyXG4gICAgICAgICAgICAgIHZhciBzZWxlY3RlZGRhdGEgPSB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0LnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRkYXRhKSAmJiBzZWxlY3RlZGRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdC51bnNoaWZ0KHNlbGVjdGVkZGF0YVswXSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0UmVzdHJpY3RlZE1lZGljaW5lXCIpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldFJlc3RyaWN0ZWRNZWRpY2luZVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgPSBbXTtcclxuICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldFJlc3RyaWN0ZWRNZWRpY2luZVwiKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0UmVzdHJpY3RlZE1lZGljaW5lXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2UoZGF0YTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5yZW1vdmUoKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeGlkID0gXCJcIjtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWFyY2hBcGlTdG9wRmxhZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY2xlYXJNZWRpY2FsUHJlc2NyaXB0aW9uRGF0YSgpO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHZhciB2YWx1ZSA9IGRhdGEgIT0gbnVsbCA/IGRhdGEgOiB0aGlzLmNvbW1vblNlcnZpY2VzLmNsb3NlRXJyb3JSZXNwb25zZSAhPSBudWxsIHx8IHRoaXMuY29tbW9uU2VydmljZXMuY2xvc2VFcnJvclJlc3BvbnNlICE9IHVuZGVmaW5lZCA/IHRoaXMuY29tbW9uU2VydmljZXMuY2xvc2VFcnJvclJlc3BvbnNlIDogbnVsbDtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5jbG9zZUVycm9yUmVzcG9uc2UgPSBudWxsO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlbW92ZUVyclRvYXN0KCk7XHJcbiAgICAgIGNvbnNvbGUubG9nKHZhbHVlKTtcclxuICAgICAgdGhpcy5jbG9zZUV2ZW50LmVtaXQodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJjbG9zZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNlYXNlUHJlc2NyaWJlTWVkKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuY2hlY2tTdGF0dXNBbmRTY3JpcHR0eXBlKHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnNjcmlwdFR5cGUsIHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cywgMikpIHtcclxuICAgICAgICB0aGlzLmlzUmVzZW5kID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RBY3Rpb25CdG5Ecm9wZG93biA9IGZhbHNlOyB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKENlYXNlUG9wdXBDb21wb25lbnQsIHRoaXMuY29udGVudCwgdGhpcy5jZWFzZURhdGEpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgIT0gbnVsbCAmJiByZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShcIlwiLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgdHJ1ZSwgcmVzLmRhdGEpO1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlKHJlcy5kYXRhKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJjZWFzZVByZXNjcmliZU1lZFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNhbmNlbFByZXNjcmliZU1lZCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLmNoZWNrU3RhdHVzQW5kU2NyaXB0dHlwZSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLCB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMsIDQpKSB7XHJcbiAgICAgICAgdGhpcy5pc1Jlc2VuZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0QWN0aW9uQnRuRHJvcGRvd24gPSBmYWxzZTsgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihDbG9zZVBvcHVwQ29tcG9uZW50LCB0aGlzLmNvbnRlbnQsIDEpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgIT0gbnVsbCAmJiByZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShcIlwiLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgdHJ1ZSwgcmVzLmRhdGEpO1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlKHJlcy5kYXRhKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKHJlcyAhPSBudWxsICYmIHJlcy5pc0Rpc3BlbnNlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRpYWxvZ29wZW4oQ29uZmlybVBhdGllbnRDb250YWN0RGV0YWlsc0NvbXBvbmVudCwgdGhpcy5jb250ZW50LCAyKS5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChkYXRhICE9IG51bGwgJiYgZGF0YS5mbGFnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRpYWxvZ29wZW4oQ2Vhc2VQb3B1cENvbXBvbmVudCwgdGhpcy5jb250ZW50LCB0aGlzLmNlYXNlRGF0YSkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZSAhPSBudWxsICYmIHJlc3BvbnNlLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShcIlwiLCByZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlLCB0cnVlLCByZXNwb25zZS5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKHJlc3BvbnNlLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJjYW5jZWxQcmVzY3JpYmVNZWRcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYW5jZWxEcmFmdCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLmNoZWNrU3RhdHVzQW5kU2NyaXB0dHlwZSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLCB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMsIDQpKSB7XHJcbiAgICAgICAgdGhpcy5pc1Jlc2VuZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0QWN0aW9uQnRuRHJvcGRvd24gPSBmYWxzZTsgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihDbG9zZVBvcHVwQ29tcG9uZW50LCB0aGlzLmNvbnRlbnQsIDIpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgIT0gbnVsbCAmJiByZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShcIlwiLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgdHJ1ZSwgcmVzLmRhdGEpO1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlKHJlcy5kYXRhKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJjYW5jZWxEcmFmdFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlaXNzdWVQcmVzY3JpYmVNZWQoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy5jaGVja1N0YXR1c0FuZFNjcmlwdHR5cGUodGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc2NyaXB0VHlwZSwgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzLCAzKSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0QWN0aW9uQnRuRHJvcGRvd24gPSBmYWxzZTsgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihSZWlzc3VlUG9wdXBDb21wb25lbnQsIHRoaXMuY29udGVudCwge2lzUmVzZW5kOiB0aGlzLmlzUmVzZW5kfSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAhPSBudWxsICYmIHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKFwiXCIsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCB0cnVlLCByZXMuZGF0YSk7XHJcbiAgICAgICAgICAgIHRoaXMuY2xvc2UocmVzLmRhdGEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IFxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJyZWlzc3VlUHJlc2NyaWJlTWVkXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXNlbmRQcmVzY3JpYmVNZWQoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5lbmFibGVTZW5kUGFwZXJTY3JpcHRJbk1haWwgJiYgISB0aGlzLmNoZWNrU3RhdHVzQW5kU2NyaXB0dHlwZSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cywyKSkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmlzU2NyaXB0VG9QaGFybWFjeSA9PSAwKSB7XHJcbiAgICAgICAgICB0aGlzLmlzUmVzZW5kID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0QWN0aW9uQnRuRHJvcGRvd24gPSBmYWxzZTsgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKFJlaXNzdWVQb3B1cENvbXBvbmVudCwgdGhpcy5jb250ZW50LCB7aXNSZXNlbmQ6IHRoaXMuaXNSZXNlbmR9KS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXMgIT0gbnVsbCAmJiByZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKFwiXCIsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCB0cnVlLCByZXMuZGF0YSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jbG9zZShyZXMuZGF0YSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZihyZXMgPT0gbnVsbCl7XHJcbiAgICAgICAgICAgICAgdGhpcy5pc1Jlc2VuZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9IFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0QWN0aW9uQnRuRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0aW9uYnRuTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuaXNSZXNlbmQgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIGNvbnN0IEFkZHJlc3NTZW5kVG9BZGRUeXBlID0gXCJlbWFpbFwiO1xyXG4gICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBoYXJtYWN5RW1haWwudHJpbSgpKSkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl81OS5tZXNzYWdlLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzU5LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNTkuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNTkubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy52YWxpZEJ5RW1haWxObyh0aGlzLmNvbW1vblNlcnZpY2VzLnBoYXJtYWN5RW1haWwudHJpbSgpKSkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82MC5tZXNzYWdlLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzYwLmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjAuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjAubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCBwYXlsb2FkID0ge1xyXG4gICAgICAgICAgICByZXF1ZXN0X3R5cGU6IFwicGFyYW1ldGVyXCIsXHJcbiAgICAgICAgICAgIHJ4SWQ6IHRoaXMuY29tbW9uU2VydmljZXMucnhpZCxcclxuICAgICAgICAgICAgYWRkcmVzc1R5cGU6IEFkZHJlc3NTZW5kVG9BZGRUeXBlLFxyXG4gICAgICAgICAgICBhZGRyZXNzVmFsdWU6IHRoaXMuY29tbW9uU2VydmljZXMucGhhcm1hY3lFbWFpbC50cmltKClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuYXBpU2VydmljZS5HZXQoY29uZmlnLlBIWVNJQ0lBTi5SWF9SRV9JU1NVRSArIHRoaXMuY29tbW9uU2VydmljZXMucnhpZCArIFwiJmFkZHJlc3NUeXBlPVwiICsgQWRkcmVzc1NlbmRUb0FkZFR5cGUgKyBcIiZhZGRyZXNzVmFsdWU9XCIgKyB0aGlzLmNvbW1vblNlcnZpY2VzLnBoYXJtYWN5RW1haWwudHJpbSgpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbmJ0bkxvYWRlciA9IGZhbHNlOyB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwicmVzZW5kXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnJlbW92ZSgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25idG5Mb2FkZXIgPSBmYWxzZTsgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJyZXNlbmRcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbmJ0bkxvYWRlciA9IGZhbHNlOyB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25idG5Mb2FkZXIgPSBmYWxzZTsgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicmVzZW5kXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uYnRuTG9hZGVyID0gZmFsc2U7IHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJyZXNlbmRcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicmVzZW5kUHJlc2NyaWJlTWVkXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpbnRQcmVzY3JpYmVNZWQoKSB7XHJcbiAgICB2YXIgcGF5bG9hZCA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuY2hlY2tTdGF0dXNBbmRTY3JpcHR0eXBlKHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnNjcmlwdFR5cGUsIHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cywgMSkpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdEFjdGlvbkJ0bkRyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25idG5Mb2FkZXIgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICBwYXlsb2FkID0ge1xyXG4gICAgICAgICAgcmVxdWVzdF90eXBlOiBcInBhcmFtZXRlclwiLFxyXG4gICAgICAgICAgcnhJZDogdGhpcy5jb21tb25TZXJ2aWNlcy5yeGlkLFxyXG4gICAgICAgICAgdHlwZTogXCIxXCIsXHJcbiAgICAgICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZFxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmFwaVNlcnZpY2UuR2V0KGNvbmZpZy5QSFlTSUNJQU4uUlhfUFJJTlQgKyB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4aWQgKyBcIiZ0eXBlPTEmY2xpZW50SWQ9XCIgKyB0aGlzLmNsaWVudElkKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzcG9uc2UpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJpbnRQcmVzY3JpYmVNZWRcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGJ5dGVBcnJheSA9IG5ldyBVaW50OEFycmF5KGF0b2IocmVzcG9uc2UuZmlsZSkuc3BsaXQoJycpLm1hcChjaGFyID0+IGNoYXIuY2hhckNvZGVBdCgwKSkpO1xyXG4gICAgICAgICAgICAgICAgICB2YXIgYmJiID0gbmV3IEJsb2IoW2J5dGVBcnJheV0sIHsgdHlwZTogXCJhcHBsaWNhdGlvbi9wZGZcIiB9KTtcclxuICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJiYik7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1dpbmRvdyA9IHdpbmRvdy5vcGVuKHVybCwgJ19ibGFuaycpO1xyXG4gICAgICAgICAgICAgICAgICBpZiAobmV3V2luZG93KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV3V2luZG93LmZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmludFdhcm5pbmdQb3AoKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoXCJcIiwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgdHJ1ZSwgcmVzcG9uc2UuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UocmVzcG9uc2UuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcInByaW50UHJlc2NyaWJlTWVkXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlLCAnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlc3BvbnNlLmVycm9yX2NvZGUsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbmJ0bkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uYnRuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJpbnRQcmVzY3JpYmVNZWRcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnJvciA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uYnRuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJpbnRQcmVzY3JpYmVNZWRcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uYnRuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJpbnRQcmVzY3JpYmVNZWRcIiwgcGF5bG9hZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGVja1N0YXR1c0FuZFNjcmlwdHR5cGUoc2NyaXB0dHlwZTogYW55LCBzdGF0dXM6IGFueSwgZmxhZzogYW55KTogQm9vbGVhbiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzdGF0dXMpICYmIHN0YXR1cy50b0xvd2VyQ2FzZSgpID09ICdwcmVzY3JpYmVkJykge1xyXG4gICAgICAgIGlmIChmbGFnID09IDEpIHtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmxhZyA9PSAyKSB7XHJcbiAgICAgICAgICByZXR1cm4gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzY3JpcHR0eXBlKSAmJiBzY3JpcHR0eXBlLnRvTG93ZXJDYXNlKCkgPT0gJ2UnID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmxhZyA9PSAzKSB7XHJcbiAgICAgICAgICByZXR1cm4gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzY3JpcHR0eXBlKSAmJiBzY3JpcHR0eXBlLnRvTG93ZXJDYXNlKCkgPT0gJ2UnICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5ICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLmVtZXJnZW5jeVN1cHBseSA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICB9IGVsc2UgaWYgKGZsYWcgPT0gNCkge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmbGFnID09IDUpIHtcclxuICAgICAgICAgIHJldHVybiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNjcmlwdHR5cGUpICYmIHNjcmlwdHR5cGUudG9Mb3dlckNhc2UoKSA9PSAnbScgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc3RhdHVzKSAmJiBzdGF0dXMudG9Mb3dlckNhc2UoKSA9PSAnZHJhZnQnICYmIGZsYWcgPT0gNCkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmYWxzZVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJjaGVja1N0YXR1c0FuZFNjcmlwdHR5cGVcIik7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHBhZ2VOdW1iZXJPbmVUb05leHQoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl81MC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl81MC5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNTAuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNTAubWVzc2FnZSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSA9IFN0cmluZyh0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUpLnRyaW0oKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kb3NlU2VhcmNoVmFsdWUgPSBTdHJpbmcodGhpcy5jb21tb25TZXJ2aWNlcy5kb3NlU2VhcmNoVmFsdWUpLnRyaW0oKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5mb29kU2VhcmNoVmFsdWUgPSBTdHJpbmcodGhpcy5jb21tb25TZXJ2aWNlcy5mb29kU2VhcmNoVmFsdWUudHJpbSgpKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWUgPSBTdHJpbmcodGhpcy5jb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWUpLnRyaW0oKTtcclxuICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUpICYmIHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmRvc2VTZWFyY2hWYWx1ZSkgJiYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZvb2RTZWFyY2hWYWx1ZSkpICYmIHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZyZXFTZWFyY2hWYWx1ZSkpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl81NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl81NC5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNTQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNTQubWVzc2FnZSk7XHJcbiAgICAgICAgdGhpcy5jbGVhckluc3RydWN0aW9uKCk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwpIHx8IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwpIDw9IDAgfHwgdGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gXCJuYW5cIikge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzU1Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzU1LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl81NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl81NS5tZXNzYWdlKTtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwgPT0gXCJOYU5cIikge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCA9IFwiMFwiO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJvdXRlU2VhcmNoVmFsdWUgPSBTdHJpbmcodGhpcy5jb21tb25TZXJ2aWNlcy5yb3V0ZVNlYXJjaFZhbHVlKS50cmltKCk7XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yb3V0ZVNlYXJjaFZhbHVlKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzc1Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzc1LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl83NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl83NS5tZXNzYWdlKTtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHREYXRlKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzQ3Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzQ3LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl80Ny5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl80Ny5tZXNzYWdlKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnN0YXJ0RGF0ZSkpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl80OC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl80OC5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNDguY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNDgubWVzc2FnZSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5lbmREYXRlKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzQ5Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzQ5LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl80OS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl80OS5tZXNzYWdlKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5nZXRUcmFkZU5hbWVEaXNwbGF5KCk7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cykgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzLnRvTG93ZXJDYXNlKCkgIT0gJ2RyYWZ0JyAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yZW1vdmVFcnJUb2FzdCgpO1xyXG4gICAgICAgIHRoaXMucGFnZSA9IHRoaXMucGFnZSArIDE7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0KSB7XHJcbiAgICAgICAgdmFyIHNjaGVkdWxlTnVtYmVyID0gdGhpcy5jb21tb25TZXJ2aWNlcy5nZXRTY2hlZHVsZU51bWJlcih0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pO1xyXG4gICAgICAgIGxldCByZXN0ZWN0ZWRTdGF0ZXMgPSBbJ05TVycsICdBQ1QnLCAnV0EnLCAnUUxEJywgJ05UJywgJ1RBUyddO1xyXG4gICAgICAgIGxldCBwYXRpZW50U3RhdGVzID0gdGhpcy5nZXRTdGF0ZUNvZGVGcm9tU3RhdGVOYW1lKHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuc3RhdGUpLnRvVXBwZXJDYXNlKCk7XHJcbiAgICAgICAgaWYgKHNjaGVkdWxlTnVtYmVyLnRvTG93ZXJDYXNlKCkgPT0gXCJzOFwiICYmIHJlc3RlY3RlZFN0YXRlcy5pbmRleE9mKHBhdGllbnRTdGF0ZXMpICE9IC0xICYmIHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCkgPiAwKSB7XHJcbiAgICAgICAgICBpZiAoKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsKSB8fCBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsKSA9PSAwKSkge1xyXG4gICAgICAgICAgICB2YXIgbWVzc2FnZSA9IGVycm9yY29uZmlnLmVycm9yXzU2Lm1lc3NhZ2UucmVwbGFjZShcIiQwXCIsIHBhdGllbnRTdGF0ZXMpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihtZXNzYWdlLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzU2LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNTYuY29kZSwgbWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIHN0YXRlU2NoZWR1bGVOdW1iZXIgPSB0aGlzLmdldFN0YXRlU2NoZWR1bGVOdW1iZXIodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKTtcclxuICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzdGF0ZVNjaGVkdWxlTnVtYmVyKSAhPSBudWxsICYmIHN0YXRlU2NoZWR1bGVOdW1iZXIubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgaWYgKHBhdGllbnRTdGF0ZXMudG9Mb3dlckNhc2UoKSA9PSBcInRhc1wiICYmIHN0YXRlU2NoZWR1bGVOdW1iZXJbMF0uaW5kZXhPZihcIlM0RFwiKSAhPSAtMSAmJiBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwpID4gMCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCA9PSBcIlwiIHx8IHRoaXMuY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwgPT0gbnVsbCB8fCBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsKSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjgubWVzc2FnZSwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82OC5jb2RlKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjguY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjgubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHBhdGllbnRTdGF0ZXMudG9Mb3dlckNhc2UoKSA9PSBcIm5zd1wiICYmIHN0YXRlU2NoZWR1bGVOdW1iZXJbMF0uaW5kZXhPZihcIlM0QlwiKSAhPSAtMSAmJiBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwpID4gMCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCA9PSBcIlwiIHx8IHRoaXMuY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwgPT0gbnVsbCB8fCBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsKSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjkubWVzc2FnZSwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82OS5jb2RlKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjkuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjkubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoKHRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3kgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3lWYWx1ZSkpKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjYubWVzc2FnZSwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82Ni5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjYuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjYubWVzc2FnZSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5zaG93QXV0aG9yaXR5Qm94KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMsIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMsIHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHksIHRoaXMuY29tbW9uU2VydmljZXMudW5saXN0ZWRSQSkpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8gPSBcIlwiO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9ucyA9IFwiXCI7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zSWQgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIHZhciByeERpc3BsYXlOYW1lID0gdGhpcy5nZXRUcmFkZU5hbWUoKTtcclxuICAgICAgLy8gaWYgKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCA9PSB0cnVlIHx8IHRoaXMuY29tbW9uU2VydmljZXMubGVtaSA9PSB0cnVlIHx8IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtLnRvTG93ZXJDYXNlKCkgPT0gJ2dhdXplJykge1xyXG4gICAgICAvLyAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmxlbWkgPT0gdHJ1ZSkge1xyXG4gICAgICAvLyAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lID0gdGhpcy5nZXRFeHRlbXBUVFBOYW1lKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbik7XHJcbiAgICAgIC8vICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVvcERpc3BsYXlOYW1lID0gdGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lO1xyXG4gICAgICAvLyAgIH0gZWxzZSB7XHJcbiAgICAgIC8vICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGlzcGxheU5hbWUgPSByeERpc3BsYXlOYW1lO1xyXG4gICAgICAvLyAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lb3BEaXNwbGF5TmFtZSA9IHJ4RGlzcGxheU5hbWU7XHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyB9IGVsc2Uge1xyXG4gICAgICAvLyAgIHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZSA9IHJ4RGlzcGxheU5hbWUudHJpbSgpICsgJyAnICsgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0udHJpbSgpICsgJyAnICsgKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tb2xlY3VsZVN0cmVuZ3RoID09IG51bGwgPyAnJyA6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tb2xlY3VsZVN0cmVuZ3RoLnRyaW0oKSArIHRoaXMucnhTdHJlbmd0aGNhbGN1bGF0aW9uKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikpO1xyXG4gICAgICAvLyAgIHRoaXMuY29tbW9uU2VydmljZXMuZW9wRGlzcGxheU5hbWUgPSByeERpc3BsYXlOYW1lLnRyaW0oKSArICcgJyArICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubW9sZWN1bGVTdHJlbmd0aCA9PSBudWxsID8gJycgOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubW9sZWN1bGVTdHJlbmd0aC50cmltKCkgKyB0aGlzLnJ4U3RyZW5ndGhjYWxjdWxhdGlvbih0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pKTtcclxuICAgICAgLy8gfVxyXG4gICAgICAvLyB2YXIgcHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlID0gdGhpcy5nZXRUcmFkZU5hbWUoKTtcclxuICAgICAgLy8gaWYgKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCA9PSB0cnVlIHx8IHRoaXMuY29tbW9uU2VydmljZXMubGVtaSA9PSB0cnVlIHx8IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtLnRvTG93ZXJDYXNlKCkgPT0gJ2dhdXplJykge1xyXG4gICAgICAvLyAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmxlbWkgPT0gdHJ1ZSkge1xyXG4gICAgICAvLyAgICAgbGV0IGV4dGVtcFRUUE5hbWUgPSB0aGlzLmdldEV4dGVtcFRUUE5hbWUodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKTtcclxuICAgICAgLy8gICAgIGxldCBQSXRlbVRocmVlID0gZXh0ZW1wVFRQTmFtZS5sYXN0SW5kZXhPZignWycpO1xyXG4gICAgICAvLyAgICAgbGV0IFBJdGVtVGhyZWUxID0gZXh0ZW1wVFRQTmFtZS5zbGljZSgwLCBQSXRlbVRocmVlKTtcclxuICAgICAgLy8gICAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlID0gUEl0ZW1UaHJlZTEudHJpbSgpO1xyXG4gICAgICAvLyAgIH0gZWxzZSB7XHJcbiAgICAgIC8vICAgICBsZXQgUEl0ZW1UaHJlZTIgPSBwcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUubGFzdEluZGV4T2YoJ1snKTtcclxuICAgICAgLy8gICAgIGxldCBQSXRlbVRocmVlMyA9IHByZXNjcmliZWRJdGVtUmVzZXJ2ZWRUaHJlZS5zbGljZSgwLCBQSXRlbVRocmVlMik7XHJcbiAgICAgIC8vICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZWRJdGVtUmVzZXJ2ZWRUaHJlZSA9IFBJdGVtVGhyZWUzLnRyaW0oKTtcclxuICAgICAgLy8gICB9XHJcbiAgICAgIC8vIH0gZWxzZSB7XHJcbiAgICAgIC8vICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUgPSBwcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUudHJpbSgpICsgJyAnICsgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0gKyAnICcgKyAodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1vbGVjdWxlU3RyZW5ndGggPT0gbnVsbCA/ICcnIDogdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1vbGVjdWxlU3RyZW5ndGgudHJpbSgpICsgdGhpcy5yeFN0cmVuZ3RoY2FsY3VsYXRpb25OZXcodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSk7XHJcbiAgICAgIC8vIH1cclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzVHlwZS50b0xvd2VyQ2FzZSgpICE9ICdub24gcGJzJyAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLnRvTG93ZXJDYXNlKCkgIT0gJ3ByaXZhdGUnICYmICgoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5V2l0aFVuaXRGbGFnID8gcGFyc2VGbG9hdCh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHMpICsgMC41IDogMSkgPCBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsKSB8fCBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucmVwZWF0cykgPCBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwpKSkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHkgPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKElzQXV0aG9yaXR5Q29tcG9uZW50LCB0aGlzLmNvbnRlbnQpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEF1dGhvcml0eSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8gPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zID0gXCJcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubW9sZWN1bGUodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFjZ3MsIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tb2xlY3VsZVN0cmVuZ3RoKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPT0gZmFsc2UgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5sbWJjID09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluY2x1ZGVicmFuZHBvcG9wZW4oKTtcclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kb3NlRnJlcVZhbGlkYXRpb24oKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZVdhcmluZ1BvcE9wZW4oc2NoZWR1bGVOdW1iZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChzY2hlZHVsZU51bWJlci50b0xvd2VyQ2FzZSgpID09IFwiczhcIiAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmlzUzhXYXJuaW5nTmV4dCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuUzhXYXJpbmdQb3BPcGVuKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yZW1vdmVFcnJUb2FzdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSB0aGlzLnBhZ2UgKyAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5kb3NlRnJlcVZhbGlkYXRpb24oKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVXYXJpbmdQb3BPcGVuKHNjaGVkdWxlTnVtYmVyKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2NoZWR1bGVOdW1iZXIudG9Mb3dlckNhc2UoKSA9PSBcInM4XCIgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5pc1M4V2FybmluZ05leHQgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5TOFdhcmluZ1BvcE9wZW4oKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4QXV0aG9yaXR5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucmVtb3ZlRXJyVG9hc3QoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9IHRoaXMucGFnZSArIDE7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVdpdGhVbml0RmxhZyA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tYXhRdHlVbml0cyA6IDE7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwgPSB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucmVwZWF0cztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHkgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhFbmREYXRlQ2FsY3VsYXRlcigpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5kb3NlRnJlcVZhbGlkYXRpb24oKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVXYXJpbmdQb3BPcGVuKHNjaGVkdWxlTnVtYmVyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlbW92ZUVyclRvYXN0KCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYWdlID0gdGhpcy5wYWdlICsgMTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPT0gZmFsc2UgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5sbWJjID09IHRydWUpIHtcclxuICAgICAgICAgIHRoaXMuaW5jbHVkZWJyYW5kcG9wb3BlbigpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5kb3NlRnJlcVZhbGlkYXRpb24oKSkge1xyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRlV2FyaW5nUG9wT3BlbihzY2hlZHVsZU51bWJlcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHNjaGVkdWxlTnVtYmVyLnRvTG93ZXJDYXNlKCkgPT0gXCJzOFwiICYmIHRoaXMuY29tbW9uU2VydmljZXMuaXNTOFdhcm5pbmdOZXh0ID09IHRydWUpIHtcclxuICAgICAgICAgICAgICB0aGlzLlM4V2FyaW5nUG9wT3BlbigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucmVtb3ZlRXJyVG9hc3QoKTtcclxuICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSB0aGlzLnBhZ2UgKyAxO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5kb3NlRnJlcVZhbGlkYXRpb24oKSkge1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0ZVdhcmluZ1BvcE9wZW4oXCJcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yZW1vdmVFcnJUb2FzdCgpO1xyXG4gICAgICAgICAgdGhpcy5wYWdlID0gdGhpcy5wYWdlICsgMTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicGFnZU51bWJlck9uZVRvTmV4dFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluY2x1ZGVicmFuZHBvcG9wZW4oKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLm1vbGVjdWxlKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hY2dzLCB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubW9sZWN1bGVTdHJlbmd0aCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihCcmFuZEluY2x1ZGVDb21wb25lbnQsIHRoaXMuY29udGVudCkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRCcmFuZEZvcm11bGF0aW9uID1cclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uO1xyXG4gICAgICAgICAgdmFyIG1vbGVjdWxlZGF0YSA9IHtcclxuICAgICAgICAgICAgbW9sZWN1bGVOYW1lVGV4dDogdGhpcy5tb2xlY3VsZU5hbWVUZXh0LFxyXG4gICAgICAgICAgICBtb2xlY3VsZU5hbWVUeXBlOiB0aGlzLm1vbGVjdWxlTmFtZVR5cGUsXHJcbiAgICAgICAgICAgIG1vbGVjdWxlU3RyZW5ndGhUZXh0OiB0aGlzLm1vbGVjdWxlU3RyZW5ndGhUZXh0LFxyXG4gICAgICAgICAgICBzZWxlY3RlZE1lZGljaW5lTGlzdDogdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRpYWxvZ29wZW4oQXZhaWxhYmxlRm9ybXVsYXRpb25zQ29tcG9uZW50LCB0aGlzLmNvbnRlbnQsIG1vbGVjdWxlZGF0YSkuc3Vic2NyaWJlKCh2YWw6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodmFsLnJlc3BvbnNlZmxhZykge1xyXG4gICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRCcmFuZEZvcm11bGF0aW9uICE9IG51bGwgJiZcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRCcmFuZEZvcm11bGF0aW9uICE9ICcnICYmXHJcbiAgICAgICAgICAgICAgICB2YWwuZmxhZ1xyXG4gICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5Db25maXJtQWx0ZXJCcmFuZChcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEJyYW5kRm9ybXVsYXRpb24gIT0gbnVsbCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRCcmFuZEZvcm11bGF0aW9uICE9ICcnXHJcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkQnJhbmRGb3JtdWxhdGlvblxyXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQnJhbmRJbmRleCAhPSBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLnNlbGVjdGVkQnJhbmRJbmRleFxyXG4gICAgICAgICAgICAgICAgICAgIDogMFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5icmFuZE1lZGljcHJvZHVjdElkID0gJyc7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJyYW5kTWVkaWNwYnNDb2RlID0gJyc7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJyYW5kTWVkaWNRdHkgPSAnJztcclxuICAgICAgICAgICAgICAgIHRoaXMuYnJhbmRNZWRpY1JlcCA9ICcnO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmJyYW5kTWVkaWNwcm9kdWN0SWQgPSAnJztcclxuICAgICAgICAgICAgICB0aGlzLmJyYW5kTWVkaWNwYnNDb2RlID0gJyc7XHJcbiAgICAgICAgICAgICAgdGhpcy5icmFuZE1lZGljUXR5ID0gJyc7XHJcbiAgICAgICAgICAgICAgdGhpcy5icmFuZE1lZGljUmVwID0gJyc7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdmFyIHNjaGVkdWxlTnVtYmVyID0gdGhpcy5jb21tb25TZXJ2aWNlcy5nZXRTY2hlZHVsZU51bWJlcih0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pO1xyXG4gICAgICAgICAgaWYgKHRoaXMuZG9zZUZyZXFWYWxpZGF0aW9uKCkpIHtcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0ZVdhcmluZ1BvcE9wZW4oc2NoZWR1bGVOdW1iZXIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChzY2hlZHVsZU51bWJlci50b0xvd2VyQ2FzZSgpID09IFwiczhcIiAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmlzUzhXYXJuaW5nTmV4dCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5TOFdhcmluZ1BvcE9wZW4oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlbW92ZUVyclRvYXN0KCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYWdlID0gdGhpcy5wYWdlICsgMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImluY2x1ZGVicmFuZHBvcG9wZW5cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkb3NlRnJlcVZhbGlkYXRpb24oKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZG9zZVNlYXJjaFZhbHVlKSB8fCB0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWUpIHx8IHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZvb2RTZWFyY2hWYWx1ZSkgfHwgdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSkgfHwgdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucm91dGVTZWFyY2hWYWx1ZSkpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImRvc2VGcmVxVmFsaWRhdGlvblwiKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIFM4V2FyaW5nUG9wT3BlbigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBkYXRhID0gXCJXYXJuaW5nISBUaGlzIGlzIGFuIFM4IGRydWcuIFlvdSBtaWdodCBuZWVkIHRvIGhhbmQgd3JpdGUgeW91ciBzaWduYXR1cmUsIHF1YW50aXR5IGluIHdvcmRzIGFuZCBmaWd1cmVzIGFuZC9vciBvdGhlciBkZXRhaWxzIGFzIHBlciB0aGUgc3RhdGUgcmVndWxhdGlvbnNcIjtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKFJlYWxUaW1lUHJlc2NyaXB0aW9uTW9uaXRvcmluZ0NvbXBvbmVudCwgdGhpcy5jb250ZW50LCBkYXRhKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNTOFdhcm5pbmdOZXh0ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlbW92ZUVyclRvYXN0KCk7XHJcbiAgICAgICAgICB0aGlzLnBhZ2UgPSB0aGlzLnBhZ2UgKyAxO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIlM4V2FyaW5nUG9wT3BlblwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHZhbGlkYXRlV2FyaW5nUG9wT3BlbihzY2hlZHVsZU51bWJlcjogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgZGF0YSA9IFwiRW5zdXJlIGFsbCBuZWNlc3NhcnkgZmllbGRzIGFyZSBmaWxsZWQgdG8gYXZvaWQgcGhhcm1hY3kgcmVqZWN0aW9uIGR1ZSB0byBpbmNvbXBsZXRlIGluZm9ybWF0aW9uIC0gRG9zZSwgRnJlcXVlbmN5LCBSb3V0ZSBldGMuXCI7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihSZWFsVGltZVByZXNjcmlwdGlvbk1vbml0b3JpbmdDb21wb25lbnQsIHRoaXMuY29udGVudCwgZGF0YSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0ICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2NoZWR1bGVOdW1iZXIpICYmIHNjaGVkdWxlTnVtYmVyLnRvTG93ZXJDYXNlKCkgPT0gXCJzOFwiICYmIHRoaXMuY29tbW9uU2VydmljZXMuaXNTOFdhcm5pbmdOZXh0ID09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5TOFdhcmluZ1BvcE9wZW4oKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlbW92ZUVyclRvYXN0KCk7XHJcbiAgICAgICAgICAgIHRoaXMucGFnZSA9IHRoaXMucGFnZSArIDE7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwidmFsaWRhdGVXYXJpbmdQb3BPcGVuXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQ29uZmlybUFsdGVyQnJhbmQobWVkOiBhbnksIGluZGV4OiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPSB0cnVlO1xyXG4gICAgICB0aGlzLmJyYW5kTWVkaWNwcm9kdWN0SWQgPSAnJztcclxuICAgICAgdGhpcy5icmFuZE1lZGljcGJzQ29kZSA9ICcnO1xyXG4gICAgICB0aGlzLmJyYW5kTWVkaWNRdHkgPSAnJztcclxuICAgICAgdGhpcy5icmFuZE1lZGljUmVwID0gJyc7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY2xlYXJNZWRpY2FsUHJlc2NyaXB0aW9uRGF0YU9uY2hhbmdlb2ZNZWRpY2luZShtZWQpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEVuZERhdGVDYWxjdWxhdGVyKCk7XHJcbiAgICAgIHZhciBNZWQgPSBbXTtcclxuICAgICAgTWVkLnB1c2gobWVkKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IE1lZDtcclxuICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgPSBNZWQ7XHJcbiAgICAgIHRoaXMuc2VsZWN0Rm9ybXVsYXRpb24obWVkLCAwKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiQ29uZmlybUFsdGVyQnJhbmRcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtb2xlY3VsZShhY2dzOiBhbnksIG1vbGVjdWxlU3RyZW5ndGg6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoYWNncykpIHtcclxuICAgICAgICBpZiAoYWNncy5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgaWYgKGFjZ3NbMF0uYWNnTmFtZS5pbmRleE9mKCcrJykgIT0gLTEpIHtcclxuICAgICAgICAgICAgdGhpcy5tb2xlY3VsZU5hbWVUZXh0ID0gYWNnc1swXS5hY2dOYW1lO1xyXG4gICAgICAgICAgICB0aGlzLm1vbGVjdWxlTmFtZVR5cGUgPSAnUzInO1xyXG4gICAgICAgICAgICB0aGlzLm1vbGVjdWxlU3RyZW5ndGhUZXh0ID0gbW9sZWN1bGVTdHJlbmd0aDtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9sZWN1bGVOYW1lVGV4dCA9IGFjZ3NbMF0uYWNnTmFtZTtcclxuICAgICAgICAgICAgdGhpcy5tb2xlY3VsZU5hbWVUeXBlID0gJ1MxJztcclxuICAgICAgICAgICAgdGhpcy5tb2xlY3VsZVN0cmVuZ3RoVGV4dCA9IG1vbGVjdWxlU3RyZW5ndGg7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmICgxIDwgYWNncy5sZW5ndGgpIHtcclxuICAgICAgICAgIHZhciBtb2xlY3VsZXMgPSBbXTtcclxuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWNncy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBtb2xlY3VsZXMucHVzaChhY2dzW2ldLmFjZ05hbWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5tb2xlY3VsZU5hbWVUZXh0ID0gbW9sZWN1bGVzLmpvaW4oJywnKTtcclxuICAgICAgICAgIHRoaXMubW9sZWN1bGVOYW1lVHlwZSA9ICdNJztcclxuICAgICAgICAgIHRoaXMubW9sZWN1bGVTdHJlbmd0aFRleHQgPSBtb2xlY3VsZVN0cmVuZ3RoO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm1vbGVjdWxlTmFtZVRleHQgPSAnJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJtb2xlY3VsZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGJhY2soKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnBhZ2UgPSAxO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImJhY2tcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBNZWRpY2luZURyb3Bkb3duTGlzdCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZURyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgLy8gdGhpcy5zaG93RmF2b3VyaXRlTWVkID0gZmFsc2U7XHJcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJNZWRpY2luZURyb3Bkb3duTGlzdFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByZXNjcmliZURyb3Bkb3duKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zZWxlY3RQQlRORHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLmhhbmRsZUNsaWNrT3V0c2lkZVBCVE4pO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInByZXNjcmliZURyb3Bkb3duXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0QWN0aW9uRHJvcGRvd25vcGVuKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zZWxlY3RBY3Rpb25CdG5Ecm9wZG93biA9IHRydWU7XHJcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlQWN0aW9uQnRuKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZWxlY3RBY3Rpb25Ecm9wZG93blwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRvc2VEcm9wZG93bigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0RG9zZURyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5oYW5kbGVDbGlja091dHNpZGVEb3NlKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJkb3NlRHJvcGRvd25cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmcmVxRHJvcGRvd24oKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlbGVjdEZyZXFEcm9wZG93biA9IHRydWU7XHJcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlRnJlcSk7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZnJlcURyb3Bkb3duXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RwVmFsdWVEcm9wZG93bigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0c3RwRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLmhhbmRsZUNsaWNrT3V0c2lkZXN0cCk7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic3RwVmFsdWVEcm9wZG93blwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZvb2REcm9wZG93bigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0Rm9vZERyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5oYW5kbGVDbGlja091dHNpZGVGb29kKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJmb29kRHJvcGRvd25cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbnN0cnVjdGlvbkRyb3Bkb3duKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5oYW5kbGVDbGlja091dHNpZGVJbnN0cnVjdGlvbik7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiaW5zdHJ1Y3Rpb25Ecm9wZG93blwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJvdXRlRHJvcGRvd24oKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlbGVjdFJvdXRlRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlUHVycG9zZSk7XHJcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlUm91dGUpO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInJvdXRlRHJvcGRvd25cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdXJwb3NlRHJvcGRvd24oKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlbGVjdFB1cnBvc2VEcm9wZG93biA9IHRydWU7XHJcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlUHVycG9zZSk7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHVycG9zZURyb3Bkb3duXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlQ2xpY2tPdXRzaWRlID0gKGV2ZW50OiBhbnkpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLndyYXBwZXJSZWYgIT0gbnVsbCAmJiB0aGlzLndyYXBwZXJSZWYgIT0gdW5kZWZpbmVkICYmIHRoaXMud3JhcHBlclJlZi5uYXRpdmVFbGVtZW50ICYmXHJcbiAgICAgICAgIXRoaXMud3JhcHBlclJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldClcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImhhbmRsZUNsaWNrT3V0c2lkZVwiKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBoYW5kbGVDbGlja091dHNpZGVBY3Rpb25CdG4gPSAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuc2VsZWN0QWN0aW9uRHJvcGRvd25SZWYgIT0gbnVsbCAmJiB0aGlzLnNlbGVjdEFjdGlvbkRyb3Bkb3duUmVmICE9IHVuZGVmaW5lZCAmJiB0aGlzLnNlbGVjdEFjdGlvbkRyb3Bkb3duUmVmLm5hdGl2ZUVsZW1lbnQgJiZcclxuICAgICAgICAhdGhpcy5zZWxlY3RBY3Rpb25Ecm9wZG93blJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldClcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RBY3Rpb25CdG5Ecm9wZG93biA9IGZhbHNlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImhhbmRsZUNsaWNrT3V0c2lkZUFjdGlvbkJ0blwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUNsaWNrT3V0c2lkZVBCVE4gPSAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMucHJlc2NyaWJlRHJvcGRvd25SZWYgIT0gbnVsbCAmJiB0aGlzLnByZXNjcmliZURyb3Bkb3duUmVmICE9IHVuZGVmaW5lZCAmJiB0aGlzLnByZXNjcmliZURyb3Bkb3duUmVmLm5hdGl2ZUVsZW1lbnQgJiZcclxuICAgICAgICAhdGhpcy5wcmVzY3JpYmVEcm9wZG93blJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldClcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RQQlRORHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImhhbmRsZUNsaWNrT3V0c2lkZVBCVE5cIik7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgaGFuZGxlQ2xpY2tPdXRzaWRlRG9zZSA9IChldmVudDogYW55KSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5kb3NlUmVmICE9IG51bGwgJiYgdGhpcy5kb3NlUmVmICE9IHVuZGVmaW5lZCAmJiB0aGlzLmRvc2VSZWYubmF0aXZlRWxlbWVudCAmJlxyXG4gICAgICAgICF0aGlzLmRvc2VSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0RG9zZURyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJoYW5kbGVDbGlja091dHNpZGVEb3NlXCIpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGhhbmRsZUNsaWNrT3V0c2lkZUZyZXEgPSAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuZnJlcVJlZiAhPSBudWxsICYmIHRoaXMuZnJlcVJlZiAhPSB1bmRlZmluZWQgJiYgdGhpcy5mcmVxUmVmLm5hdGl2ZUVsZW1lbnQgJiZcclxuICAgICAgICAhdGhpcy5mcmVxUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdEZyZXFEcm9wZG93biA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiaGFuZGxlQ2xpY2tPdXRzaWRlRnJlcVwiKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBoYW5kbGVDbGlja091dHNpZGVzdHAgPSAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuc3RwUmVmICE9IG51bGwgJiYgdGhpcy5zdHBSZWYgIT0gdW5kZWZpbmVkICYmIHRoaXMuc3RwUmVmLm5hdGl2ZUVsZW1lbnQgJiZcclxuICAgICAgICAhdGhpcy5zdHBSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0c3RwRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImhhbmRsZUNsaWNrT3V0c2lkZXN0cFwiKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBoYW5kbGVDbGlja091dHNpZGVGb29kID0gKGV2ZW50OiBhbnkpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLmZvb2RSZWYgIT0gbnVsbCAmJiB0aGlzLmZvb2RSZWYgIT0gdW5kZWZpbmVkICYmIHRoaXMuZm9vZFJlZi5uYXRpdmVFbGVtZW50ICYmXHJcbiAgICAgICAgIXRoaXMuZm9vZFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldClcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RGb29kRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImhhbmRsZUNsaWNrT3V0c2lkZUZvb2RcIik7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgaGFuZGxlQ2xpY2tPdXRzaWRlSW5zdHJ1Y3Rpb24gPSAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuSW5zdHJ1Y3Rpb25SZWYgIT0gbnVsbCAmJiB0aGlzLkluc3RydWN0aW9uUmVmICE9IHVuZGVmaW5lZCAmJiB0aGlzLkluc3RydWN0aW9uUmVmLm5hdGl2ZUVsZW1lbnQgJiYgIXRoaXMuSW5zdHJ1Y3Rpb25SZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0ICYmICF0aGlzLmVkaXRJbnN0cnVjdGlvbkZsYWcpIHtcclxuICAgICAgICAgIHRoaXMuSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbiA9IFwiXCJcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9udGlsdGxlID0gXCJcIjtcclxuICAgICAgICAgIHRoaXMudGVtcEluc3RydWN0aW9uRGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmVkaXRJbnN0cnVjdGlvbkZsYWcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSBmYWxzZTsgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJoYW5kbGVDbGlja091dHNpZGVJbnN0cnVjdGlvblwiKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBoYW5kbGVDbGlja091dHNpZGVSb3V0ZSA9IChldmVudDogYW55KSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5yb3V0ZVJlZiAhPSBudWxsICYmIHRoaXMucm91dGVSZWYgIT0gdW5kZWZpbmVkICYmIHRoaXMucm91dGVSZWYubmF0aXZlRWxlbWVudCAmJlxyXG4gICAgICAgICF0aGlzLnJvdXRlUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdFJvdXRlRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJvdXRlRGF0YUZpbHRlciA9ICcnO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiaGFuZGxlQ2xpY2tPdXRzaWRlUm91dGVcIik7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgaGFuZGxlQ2xpY2tPdXRzaWRlUHVycG9zZSA9IChldmVudDogYW55KSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5wdXJwb3NlUmVmICE9IG51bGwgJiYgdGhpcy5wdXJwb3NlUmVmICE9IHVuZGVmaW5lZCAmJiB0aGlzLnB1cnBvc2VSZWYubmF0aXZlRWxlbWVudCAmJlxyXG4gICAgICAgICF0aGlzLnB1cnBvc2VSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0UHVycG9zZURyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJoYW5kbGVDbGlja091dHNpZGVQdXJwb3NlXCIpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIC8vIEdlbmVyYWwgU2VhcmNoXHJcbiAgc2VhcmNoSGFuZGxlcihlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY2xlYXJNZWRpY2FsUHJlc2NyaXB0aW9uRGF0YSgpO1xyXG4gICAgICB0aGlzLnNlYXJjaE1lZGljaW5lc0xlbmd0aCA9IDA7XHJcbiAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVzUGFnZU51bWJlciA9IDE7XHJcbiAgICAgIGxldCBnZXRNZWRpY2luZXNWYWx1ZSA9IGUudGFyZ2V0LnZhbHVlLnRyaW0oKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5QcmltYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZhdm91cml0ZU1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICB0aGlzLnNob3dGYXZvdXJpdGVNZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLm1lZGlTZWFyY2hWYWx1ZSA9IGUudGFyZ2V0LnZhbHVlO1xyXG4gICAgICB0aGlzLnRlbXBNZWRpU2VhcmNoVmFsdWUgPSBlLnRhcmdldC52YWx1ZTtcclxuICAgICAgaWYgKGUudGFyZ2V0LnZhbHVlLnRyaW0oKS5sZW5ndGggPCAzKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsID0gW107XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uID0gbnVsbDtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGUudGFyZ2V0LnZhbHVlLmxlbmd0aCA+PSAzKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsID0gW107XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uID0gbnVsbDtcclxuICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgICAvL3RoaXMuaXNTdGlsbFNlYXJjaGluZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIGlmICghdGhpcy5pc1N0aWxsU2VhcmNoaW5nKSB7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaE1lZHMoZ2V0TWVkaWNpbmVzVmFsdWUudHJpbSgpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY2xlYXJUaW1lb3V0KHRoaXMudGltZXIpO1xyXG4gICAgICAgIC8vIHRoaXMudGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAvLyAgIHRoaXMuc2VhcmNoTWVkcyhnZXRNZWRpY2luZXNWYWx1ZSk7XHJcbiAgICAgICAgLy8gfSwgdGhpcy53YWl0VGltZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNlYXJjaEhhbmRsZXJcIik7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgc2VhcmNoTWVkcyhnZXRNZWRpY2luZXNWYWx1ZTogYW55KSB7XHJcbiAgICB2YXIgcGF5bG9hZCA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuaXNTdGlsbFNlYXJjaGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgaWYgKHRoaXMubWVkaVNlYXJjaFZhbHVlLnRyaW0oKS5sZW5ndGggPCAzIHx8IGdldE1lZGljaW5lc1ZhbHVlLnRyaW0oKS5sZW5ndGggPCAzKSB7XHJcbiAgICAgICAgdGhpcy5pc1N0aWxsU2VhcmNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHBheWxvYWQgPSB7XHJcbiAgICAgICAgcmVxdWVzdF90eXBlOiBcInBhcmFtZXRlclwiLFxyXG4gICAgICAgIHByb2R1Y3ROYW1lOiBnZXRNZWRpY2luZXNWYWx1ZVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuUHJvZHVjdFNlYXJjaE5hbWUgPSBnZXRNZWRpY2luZXNWYWx1ZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWFyY2hBcGlTdG9wRmxhZyA9IGZhbHNlO1xyXG4gICAgICB2YXIgcGJzVHlwZSA9IHRoaXMucnhPbmx5UEJTICYmIHRoaXMucnhQcml2YXRlID8gXCJcIiA6IHRoaXMucnhPbmx5UEJTID8gXCJQQlMsUlBCU1wiIDogdGhpcy5yeFByaXZhdGUgPyBcIlByaXZhdGVcIiA6IFwiXCI7XHJcbiAgICAgIGNvbnN0IHNlYXJjaE1ldGhvZCA9IHRoaXMuY29tbW9uU2VydmljZXMuc21hcnRTZWFyY2ggPyBjb25maWcuR0VUX01FRFNfQllfU01BUlRfU0VBUkNIICsgJz9wcm9kdWN0TmFtZT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KGdldE1lZGljaW5lc1ZhbHVlKSArICcmcGFnZT0xJm5vT2ZSZWM9MTAmcGJzVHlwZT0nICsgcGJzVHlwZVxyXG4gICAgICAgIDogY29uZmlnLkdFVF9NRURTX0JZX1NFQVJDSCArICc/cHJvZHVjdE5hbWU9JyArIGVuY29kZVVSSUNvbXBvbmVudChnZXRNZWRpY2luZXNWYWx1ZSkgKyAnJnBhZ2U9MSZub09mUmVjPTEwJ1xyXG4gICAgICB0aGlzLmFwaVNlcnZpY2UuR2V0KHNlYXJjaE1ldGhvZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgdGhpcy5pc1N0aWxsU2VhcmNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IGZhbHNlOyB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJzZWFyY2hNZWRzXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmlzU3RpbGxTZWFyY2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRMaXN0ID0gcmVzLnJlc3BvbnNlLmZpbHRlcigoaXRlbTogYW55KSA9PlxyXG4gICAgICAgICAgICAgIHRoaXMuaXNQYnNUeXBlTWF0Y2goaXRlbS5wYnNUeXBlLCBwYnNUeXBlKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0ID0gZmlsdGVyZWRMaXN0O1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lc0xlbmd0aCA9IGZpbHRlcmVkTGlzdC5sZW5ndGg7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1lZGlTZWFyY2hWYWx1ZS50cmltKCkubGVuZ3RoIDwgMykge1xyXG4gICAgICAgICAgICAgIHRoaXMuaXNTdGlsbFNlYXJjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZ2V0TWVkaWNpbmVzVmFsdWUudHJpbSgpICE9IHRoaXMubWVkaVNlYXJjaFZhbHVlLnRyaW0oKSAmJiB0aGlzLm1lZGlTZWFyY2hWYWx1ZS50cmltKCkubGVuZ3RoID4gMikge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VhcmNoZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbXBsZXRlU2VhcmNoKHRoaXMubWVkaVNlYXJjaFZhbHVlLnRyaW0oKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VhcmNoZWRNZWRpY2luZUxpc3QubGVuZ3RoID4gNyB8fCByZXMucmVzcG9uc2UubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChyZXMucmVzcG9uc2UubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLk1JTVNQcmltYXJ5U2VhcmNoKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNTdGlsbFNlYXJjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwic2VhcmNoTWVkc1wiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICB0aGlzLmlzU3RpbGxTZWFyY2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2VhcmNoZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2VhcmNoTWVkc1wiLCBwYXlsb2FkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLmlzU3RpbGxTZWFyY2hpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNlYXJjaE1lZHNcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuaXNTdGlsbFNlYXJjaGluZyA9IGZhbHNlOyB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNlYXJjaE1lZHNcIiwgcGF5bG9hZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb21wbGV0ZVNlYXJjaChnZXRNZWRpY2luZXNWYWx1ZTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmlzU3RpbGxTZWFyY2hpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zZWFyY2hNZWRzKGdldE1lZGljaW5lc1ZhbHVlKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiY29tcGxldGVTZWFyY2hcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL0dldCBQcm9kdWN0IERldGFpbFxyXG4gIGdldFByb2R1Y3RMaXN0QnlOYW1lKHByb2RIaWRkZW5WYWx1ZTogYW55LCBwcm9kdWN0TmFtZTogYW55LCBzZWFyY2hCYXNlOiBhbnkpIHtcclxuICAgIHZhciBwYXlsb2FkID0ge307XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLk1JTVNTZWNvbmRhcnlhcGkpKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5NSU1TU2Vjb25kYXJ5YXBpLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZWFyY2hCeW5hbWVQYWdlTnVtYmVyID0gMTtcclxuICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5TZWNvbmRhcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMubWVkaVNlYXJjaFZhbHVlID0gdGhpcy5odG1sVG9UZXh0Q29udmVydChwcm9kdWN0TmFtZSk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgPSBbXTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5jbGVhck1lZGljYWxQcmVzY3JpcHRpb25EYXRhT25jaGFuZ2VvZk1lZGljaW5lKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbik7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiA9IG51bGw7XHJcbiAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB2YXIgdHlwZSA9IHNlYXJjaEJhc2UudG9Mb3dlckNhc2UoKSA9PSAnYnJhbmRrZXknID8gJ0JLJyA6IHNlYXJjaEJhc2UudG9Mb3dlckNhc2UoKSA9PSAncHJvZHBhY2trZXknID8gJ1BQSycgOiBzZWFyY2hCYXNlLnRvTG93ZXJDYXNlKCkgPT0gJ3ZpcnR1YWxuYW1lJyA/ICdWTicgOiBzZWFyY2hCYXNlLnRvTG93ZXJDYXNlKCkgPT0gJ3Byb2R1Y3RrZXknID8gJ1BLJyA6IHNlYXJjaEJhc2UudG9Mb3dlckNhc2UoKSA9PSAncHJvZHVjdGtleWFjdGl2ZWluZ3JlZGllbnQnID8gJ1BLQScgOiBzZWFyY2hCYXNlLnRvTG93ZXJDYXNlKCkgPT0gJ2Z1bGxwaScgPyAnRlBJJyA6ICdQTic7XHJcbiAgICAgIHBheWxvYWQgPSB7XHJcbiAgICAgICAgcmVxdWVzdF90eXBlOiBcInBhcmFtZXRlclwiLFxyXG4gICAgICAgIHByb2R1Y3ROYW1lOiBwcm9kSGlkZGVuVmFsdWUsXHJcbiAgICAgICAgdHlwZTogdHlwZSxcclxuICAgICAgICBwcmVzY3JpYmVyVHlwZTogXCJNUFwiXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5wcm9kSGlkZGVuTmFtZSA9IHByb2RIaWRkZW5WYWx1ZTtcclxuICAgICAgdGhpcy5Qcm9kdWN0VHlwZSA9IHR5cGU7XHJcbiAgICAgIHRoaXMuYXBpU2VydmljZS5HZXQoY29uZmlnLkdFVF9NRURTX0JZX05BTUUgKyAnP3Byb2R1Y3ROYW1lPScgKyBlbmNvZGVVUklDb21wb25lbnQocHJvZEhpZGRlblZhbHVlKSArICcmdHlwZT0nICsgdHlwZSArICcmcHJlc2NyaWJlclR5cGU9TVAmcGFnZT0nICsgdGhpcy5zZWFyY2hCeW5hbWVQYWdlTnVtYmVyICsgJyZub09mUmVjPTEwJykuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hCeW5hbWVMZW5ndGggPSAwOyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsID0gW107IHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlOyB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJnZXRQcm9kdWN0TGlzdEJ5TmFtZVwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuc2VhcmNoQXBpU3RvcEZsYWcpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgPSBbXTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gPSBudWxsO1xyXG4gICAgICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5TZWNvbmRhcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaEJ5bmFtZUxlbmd0aCA9IHJlcy5yZXNwb25zZS5sZW5ndGg7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsID0gcmVzLnJlc3BvbnNlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gPSBudWxsO1xyXG4gICAgICAgICAgICAvLyBpZiAodGhpcy5pc05vblBic0ZsYWcpIHtcclxuICAgICAgICAgICAgLy8gICB0aGlzLnJ4T25seU5PTlBCU0ZpbHRlcigpO1xyXG4gICAgICAgICAgICAvLyB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyAgIGlmICh0aGlzLnJ4T25seVBCUyA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIC8vICAgICB0aGlzLnJ4T25seVBCU0ZpbHRlcigpO1xyXG4gICAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgICAgLy8gICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QgPSByZXMucmVzcG9uc2U7XHJcbiAgICAgICAgICAgIC8vICAgfVxyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgIHRoaXMub25DaGVja2JveENoYW5nZSgyKTtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdC5sZW5ndGggPD0gMykge1xyXG4gICAgICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzLnJlc3BvbnNlKSAmJiByZXMucmVzcG9uc2UubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLk1JTVNTZWNvbmRhcnlTZWFyY2goKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hCeW5hbWVMZW5ndGggPSAwO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsID0gW107XHJcbiAgICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJnZXRQcm9kdWN0TGlzdEJ5TmFtZVwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaEJ5bmFtZUxlbmd0aCA9IDA7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRQcm9kdWN0TGlzdEJ5TmFtZVwiLCBwYXlsb2FkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLnNlYXJjaEJ5bmFtZUxlbmd0aCA9IDA7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsID0gW107XHJcbiAgICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRQcm9kdWN0TGlzdEJ5TmFtZVwiLCBwYXlsb2FkKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5zZWFyY2hCeW5hbWVMZW5ndGggPSAwO1xyXG4gICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldFByb2R1Y3RMaXN0QnlOYW1lXCIsIHBheWxvYWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DaGVja2JveENoYW5nZSh2YWx1ZTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy5yeE9ubHlQQlMgJiYgdGhpcy5yeFByaXZhdGUpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwuZmlsdGVyKCh4OiBhbnkpID0+ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoeC5wYnNUeXBlKSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5yeE9ubHlQQlMpIHtcclxuICAgICAgICB0aGlzLnJ4T25seVBCUyA9IHRydWU7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwpKVxyXG4gICAgICAgICAgdGhpcy5yeE9ubHlQQlNGaWx0ZXIoKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLnJ4UHJpdmF0ZSkge1xyXG4gICAgICAgIHRoaXMucnhPbmx5UEJTID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwpKVxyXG4gICAgICAgICAgdGhpcy5yeE9ubHlOT05QQlNGaWx0ZXIoKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLnJ4T25seVBCUyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucnhQcml2YXRlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsLmZpbHRlcigoeDogYW55KSA9PiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHgucGJzVHlwZSkpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgaWYgKHZhbHVlID09PSAxKSB7XHJcbiAgICAgICAgaWYgKHRoaXMudGVtcE1lZGlTZWFyY2hWYWx1ZS5sZW5ndGggPj0gMykge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5jbGVhck1lZGljYWxQcmVzY3JpcHRpb25EYXRhKCk7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lc0xlbmd0aCA9IDA7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lc1BhZ2VOdW1iZXIgPSAxO1xyXG4gICAgICAgICAgbGV0IGdldE1lZGljaW5lc1ZhbHVlID0gdGhpcy50ZW1wTWVkaVNlYXJjaFZhbHVlLnRyaW0oKTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZURyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuUHJpbWFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZmF2b3VyaXRlTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICB0aGlzLnNob3dGYXZvdXJpdGVNZWQgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHRoaXMubWVkaVNlYXJjaFZhbHVlID0gdGhpcy50ZW1wTWVkaVNlYXJjaFZhbHVlO1xyXG4gICAgICAgICAgdGhpcy50ZW1wTWVkaVNlYXJjaFZhbHVlID0gdGhpcy50ZW1wTWVkaVNlYXJjaFZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgPSBbXTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgICAgIC8vdGhpcy5pc1N0aWxsU2VhcmNoaW5nID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIGlmICghdGhpcy5pc1N0aWxsU2VhcmNoaW5nKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkcyhnZXRNZWRpY2luZXNWYWx1ZS50cmltKCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2VhcmNoZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIm9uQ2hlY2tib3hDaGFuZ2VcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByeE9ubHlQQlNGaWx0ZXIoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCkgJiYgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QgPSB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbC5maWx0ZXIoKHg6IGFueSkgPT4gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh4LnBic1R5cGUpICYmIHgucGJzVHlwZSAhPSAnbm9uIFBCUycpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicnhPbmx5UEJTRmlsdGVyXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcnhPbmx5Tk9OUEJTRmlsdGVyKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsICE9ICcnICYmIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsICE9IG51bGwgJiYgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QgPSB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbC5maWx0ZXIoKHg6IGFueSkgPT4gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh4LnBic1R5cGUpICYmIHgucGJzVHlwZS50b0xvd2VyQ2FzZSgpID09ICdub24gcGJzJyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJyeE9ubHlOT05QQlNGaWx0ZXJcIik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldENsYXNzRm9yTWVkKG1lZDogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgaXNTZWxlY3RlZEZvcm11bGF0aW9uO1xyXG4gICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QpIHtcclxuICAgICAgICBpc1NlbGVjdGVkRm9ybXVsYXRpb24gPSB0aGlzLklzU2VsZWN0Rm9ybXVsYXRpb24obWVkKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBpc1NlbGVjdGVkRm9ybXVsYXRpb24gPSB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gIT0gbnVsbCAmJlxyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3RJZCAhPSBudWxsICYmXHJcbiAgICAgICAgICBtZWQucHJvZHVjdElkID09IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0SWQgJiZcclxuICAgICAgICAgIG1lZC5wYnNDb2RlID09IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNDb2RlICYmXHJcbiAgICAgICAgICBtZWQucHJvZHVjdE5hbWUgPT0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lICYmXHJcbiAgICAgICAgICBtZWQucmVwZWF0cyA9PSB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucmVwZWF0cyAmJlxyXG4gICAgICAgICAgbWVkLm1heFF0eVVuaXRzID09IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tYXhRdHlVbml0cztcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIGlzU2VsZWN0ZWRGb3JtdWxhdGlvblxyXG4gICAgICAgID8gJ21kbC1ncmlkIG5ld19yeF9wb3B1cF9ib3ggUlhfaGlnaGxpZ2h0J1xyXG4gICAgICAgIDogJ21kbC1ncmlkIG5ld19yeF9wb3B1cF9ib3gnO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRDbGFzc0Zvck1lZFwiKTtcclxuICAgICAgcmV0dXJuIFwibWRsLWdyaWQgbmV3X3J4X3BvcHVwX2JveFwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Q2xhc3NGb3JGYXZvdXJpdGVNZWQobWVkOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgLy8gdmFyIGlzU2VsZWN0ZWRGb3JtdWxhdGlvbjtcclxuICAgICAgICAvLyBpc1NlbGVjdGVkRm9ybXVsYXRpb24gPSB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gIT0gbnVsbCAmJlxyXG4gICAgICAgIC8vICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3RJZCAhPSBudWxsICYmXHJcbiAgICAgICAgLy8gICBtZWQucHJvZHVjdElkID09IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0SWQgJiZcclxuICAgICAgICAvLyAgIChtZWQucGJzQ29kZSE9bnVsbD9tZWQucGJzQ29kZTpcIlwiKSA9PSAodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic0NvZGUhPW51bGw/dGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic0NvZGU6XCJcIikgJiZcclxuICAgICAgICAvLyAgIG1lZC5wcm9kdWN0TmFtZSA9PSB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUgJiZcclxuICAgICAgICAvLyAgIG1lZC5yZXBlYXRzID09IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5yZXBlYXRzICYmXHJcbiAgICAgICAgLy8gICBtZWQ/LmVuY3J5cHRlZElkID09IHRoaXMuY29tbW9uU2VydmljZXMuZmF2b3VyaXRlRW5jcnlwdGVkSWQgJiZcclxuICAgICAgICAvLyAgIG1lZC5xdWFudGl0eSA9PSAodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5wYnNUeXBlIT11bmRlZmluZWQgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5wYnNUeXBlIT1udWxsICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNUeXBlLnRvTG93ZXJDYXNlKCkgPT0gXCJub24gcGJzXCJcclxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5udW1iZXJPZlBhY2sgKyBcInhcIiArIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi51bml0UGVyUGFjaylcclxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1heFF0eVVuaXRzKS50b1N0cmluZygpO1xyXG5cclxuICAgICAgcmV0dXJuIG1lZD8uZW5jcnlwdGVkSWQgPT0gdGhpcy5jb21tb25TZXJ2aWNlcy5mYXZvdXJpdGVFbmNyeXB0ZWRJZFxyXG4gICAgICAgID8gJ21kbC1ncmlkIG5ld19yeF9wb3B1cF9ib3ggUlhfaGlnaGxpZ2h0J1xyXG4gICAgICAgIDogJ21kbC1ncmlkIG5ld19yeF9wb3B1cF9ib3gnO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRDbGFzc0Zvck1lZFwiKTtcclxuICAgICAgcmV0dXJuIFwibWRsLWdyaWQgbmV3X3J4X3BvcHVwX2JveFwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgSXNTZWxlY3RGb3JtdWxhdGlvbihtZWQ6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG1lZC5nZW5lcmljTmFtZSkgPyBtZWQuZ2VuZXJpY05hbWUgOiBcIlwiKSA9PVxyXG4gICAgICAgICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZ2VuZXJpY05hbWUpID9cclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5nZW5lcmljTmFtZSA6IFwiXCIpICYmXHJcbiAgICAgICAgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkobWVkLnByb2R1Y3RJZCkgPyBtZWQucHJvZHVjdElkIDogXCJcIikgPT1cclxuICAgICAgICAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LnByb2R1Y3RJZCkgP1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3RJZCA6IFwiXCIpICYmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG1lZC5yZXBlYXRzKSA/XHJcbiAgICAgICAgICAgIG1lZC5yZXBlYXRzIDogXCJcIikgPT0gKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5yZXBlYXRzKSA/XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnJlcGVhdHMgOiBcIlwiKSAmJiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShtZWQubWF4UXR5VW5pdHMpID9cclxuICAgICAgICAgICAgICAgIG1lZC5tYXhRdHlVbml0cyA6IFwiXCIpID09ICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ubWF4UXR5VW5pdHMpXHJcbiAgICAgICAgICAgICAgICAgID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1heFF0eVVuaXRzIDogXCJcIikpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiSXNTZWxlY3RGb3JtdWxhdGlvblwiKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Y3VycmVudGlkKG1lZDogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gdGhpcy5tZWRpU2VhcmNoVmFsdWUgIT0gbnVsbCAmJiBtZWQucHJvZERpc3BsYXlWYWx1ZSA9PSB0aGlzLm1lZGlTZWFyY2hWYWx1ZSA/ICdoZWlnaGxpZ2h0JyA6ICcnO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRjdXJyZW50aWRcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0UmVzdHJpY3Rpb25zKHJlc3RyaWN0aW9uczogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgcmVzdHJpY3Rpb25MaXN0ID0gW107XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzdHJpY3Rpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdmFyIGluZCA9IHJlc3RyaWN0aW9uTGlzdC5pbmRleE9mKHJlc3RyaWN0aW9uc1tpXVsncmVzdHJpY3Rpb25UeXBlJ10pO1xyXG4gICAgICAgIGlmIChpbmQgPT0gLTEpIHtcclxuICAgICAgICAgIHJlc3RyaWN0aW9uTGlzdC5wdXNoKHJlc3RyaWN0aW9uc1tpXVsncmVzdHJpY3Rpb25UeXBlJ10pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gcmVzdHJpY3Rpb25MaXN0LnRvU3RyaW5nKCk7XHJcbiAgICAgIC8vICAgIGxldCByZXN0cmljdGlvbnMgPSBbXTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0UmVzdHJpY3Rpb25zXCIpO1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0QWxsTWltc1ZhbHVlKCkge1xyXG4gICAgdmFyIHBheWxvYWQgPSB7fTtcclxuICAgIHRyeSB7XHJcbiAgICAgIHBheWxvYWQgPSB7XHJcbiAgICAgICAgcmVxdWVzdF90eXBlOiBcInBhcmFtZXRlclwiLFxyXG4gICAgICAgIHVzZXJJZDogdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLnVzZXJJZCxcclxuICAgICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuYXBpU2VydmljZS5HZXQoY29uZmlnLlBIWVNJQ0lBTi5HRVRfQUxMTUlNU1ZBTFVFICsgdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLnVzZXJJZCArIFwiJmNsaWVudElkPVwiICsgdGhpcy5jbGllbnRJZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcImdldEFsbE1pbXNWYWx1ZVwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5kb3NlRGF0YSA9IHJlcy5kb3NlICE9IG51bGwgPyByZXMuZG9zZSA6IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmZyZXF1ZW5jeURhdGEgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcy5mcmVxdWVuY3kpID8gcmVzLmZyZXF1ZW5jeSA6IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmZvb2REYXRhID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMuZm9vZCkgPyByZXMuZm9vZCA6IFtdO1xyXG4gICAgICAgICAgICB0aGlzLnB1cnBvc2VEYXRhID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMucHVycG9zZSkgIT0gbnVsbCA/IHJlcy5wdXJwb3NlIDogW107XHJcbiAgICAgICAgICAgIHRoaXMucm91dGVEYXRhID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMucm91dGUpICE9IG51bGwgPyByZXMucm91dGUgOiBbXTtcclxuICAgICAgICAgICAgdGhpcy5jZWFzZURhdGEgPSByZXMuY2Vhc2UgIT0gbnVsbCA/IHJlcy5jZWFzZSA6IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmNlYXNlRGF0YSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzLmNlYXNlKSAhPSBudWxsID8gcmVzLmNlYXNlIDogW107XHJcbiAgICAgICAgICAgIHRoaXMuc2VuZHRvcGhhcm1hY3lEYXRhID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMuc2VuZFRvUGFybWFjeU1hc3RlcikgIT0gbnVsbCA/IHJlcy5zZW5kVG9QYXJtYWN5TWFzdGVyIDogW107XHJcbiAgICAgICAgICAgIHRoaXMudGVtcEF1dGhvcml0eUZvcm1ObyA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzLmF1dGhvcml0eUZvcm0pICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzLmF1dGhvcml0eUZvcm0uYXV0aG9yaXR5Rm9ybU5vKSA/IHJlcy5hdXRob3JpdHlGb3JtLmF1dGhvcml0eUZvcm1ObyA6XCJcIjtcclxuICAgICAgICAgICAgbGV0IHJlZlZhbEF1dGggPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaXB0aW9uID8gdGhpcy5nZXRBZGRBdXRoVmFsdWUoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMuYXV0aG9yaXR5Rm9ybSkgPyAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcy5hdXRob3JpdHlGb3JtLmF1dGhvcml0eUZvcm1ObykgPyByZXMuYXV0aG9yaXR5Rm9ybS5hdXRob3JpdHlGb3JtTm8gOiBbXSA6IFtdKSA6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHM/LnBic0R2YUF1dGhvcml0eU51bWJlcikgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMucGJzRHZhQXV0aG9yaXR5TnVtYmVyICE9IDAgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5wYnNEdmFBdXRob3JpdHlOdW1iZXIgOiBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmF1dGhvcml0eUZvcm1ObyA9IHJlZlZhbEF1dGg7XHJcbiAgICAgICAgICAgIHRoaXMuaXNOb25QYnNGbGFnID0gdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcy5pc05vblBic0ZsYWcpIHx8IHJlcy5pc05vblBic0ZsYWcgPT0gMCA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5pc1ByZXNjcmliZUFzUHJpdmF0ZU9ubHkgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcy5pc1ByZXNjcmliZUFzUHJpdmF0ZU9ubHkpID8gcmVzLmlzUHJlc2NyaWJlQXNQcml2YXRlT25seSA6IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNtYXJ0U2VhcmNoID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMuaXNFbmFibGVTbWFydFNlYXJjaCkgPyByZXMuaXNFbmFibGVTbWFydFNlYXJjaCA6IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0QWxsTWltc1ZhbHVlXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0QWxsTWltc1ZhbHVlXCIsIHBheWxvYWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0QWxsTWltc1ZhbHVlXCIsIHBheWxvYWQpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0QWxsTWltc1ZhbHVlXCIsIHBheWxvYWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcm91dGVGaWx0ZXIoZTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnJvdXRlRGF0YUZpbHRlciA9IGUudGFyZ2V0LnZhbHVlO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJyb3V0ZUZpbHRlclwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZpbHRlclJvdXRlSXRlbXMoYXJyOiBhbnksIHF1ZXJ5OiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHJldHVybiBhcnIuZmlsdGVyKChlOiBhbnkpID0+XHJcbiAgICAgICAgZS5yb3V0ZU5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxdWVyeS50b0xvd2VyQ2FzZSgpKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJmaWx0ZXJSb3V0ZUl0ZW1zXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9HZXQgaW5zdHJ1Y3Rpb24gdmFsdWVcclxuICBnZXRJbnN0cnVjdGlvblZhbHVlcygpIHtcclxuICAgIHZhciBwYXlsb2FkID0ge307XHJcbiAgICB0cnkge1xyXG4gICAgICBwYXlsb2FkID0ge1xyXG4gICAgICAgIHJlcXVlc3RfdHlwZTogXCJwYXJhbWV0ZXJcIixcclxuICAgICAgICB1c2VySWQ6IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy51c2VySWRcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmFwaVNlcnZpY2UuR2V0KGNvbmZpZy5QSFlTSUNJQU4uR0VUX0lOU1RSVUNUSU9OX1ZBTFVFICsgXCI/dXNlcklkPVwiICsgdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLnVzZXJJZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcImdldEluc3RydWN0aW9uVmFsdWVzXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICB2YXIgaW5zdHJ1Y3Rpb24gPSByZXMucmVzcG9uc2U7XHJcbiAgICAgICAgICAgIHRoaXMuaW5zdHJ1Y3Rpb25EYXRhID0gaW5zdHJ1Y3Rpb247XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcImdldEluc3RydWN0aW9uVmFsdWVzXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0SW5zdHJ1Y3Rpb25WYWx1ZXNcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRJbnN0cnVjdGlvblZhbHVlc1wiLCBwYXlsb2FkKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRJbnN0cnVjdGlvblZhbHVlc1wiLCBwYXlsb2FkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vRWRpdCBJbnN0cnVjdGlvbiB2YWx1ZVxyXG4gIGVkaXRJbnN0cnVjdGlvbihpZDogbnVtYmVyLCBkYXRhOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93biA9IHRydWU7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSA9IGRhdGEudGV4dDtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvbnRpbHRsZSA9IGRhdGEudGV4dDtcclxuICAgICAgdGhpcy50ZW1wSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbiA9IGRhdGEuZGVzY3JpcHRpb247XHJcbiAgICAgIHRoaXMuSW5zdHJ1Y3Rpb25JZCA9IGRhdGEuaWQ7XHJcbiAgICAgIHRoaXMuSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbiA9IGRhdGEuZGVzY3JpcHRpb247XHJcbiAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93bkxpc3QgPSBmYWxzZTtcclxuICAgICAgdGhpcy5lZGl0SW5zdHJ1Y3Rpb25GbGFnID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJlZGl0SW5zdHJ1Y3Rpb25cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBsaXN0IHNlbGVjdCBpbiBJbnN0cnVjdGlvblxyXG4gIENoYW5nZUluc3RydWN0aW9uKGRhdGE6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoZGF0YT8udGV4dCkgPyBkYXRhLnRleHQgOiAnJztcclxuICAgICAgdGhpcy5JbnN0cnVjdGlvbkRlc2NyaXB0aW9uID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShkYXRhPy5kZXNjcmlwdGlvbikgPyBkYXRhLmRlc2NyaXB0aW9uIDogXCJcIjtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pbnN0VmFsID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShkYXRhPy52YWx1ZSkgPyBkYXRhLnZhbHVlIDogXCJcIjtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5jb21wbGV4SWQgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGRhdGE/LnZhbHVlKSA/IGRhdGEuaWQgOiBcIlwiO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RW5kRGF0ZUNhbGN1bGF0ZXIoKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJDaGFuZ2VJbnN0cnVjdGlvblwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluc3RydWN0aW9uT25DaGFuZ2UoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLkluc3RydWN0aW9uRGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImluc3RydWN0aW9uT25DaGFuZ2VcIik7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgLy8gY2xlYXIgSW5zdHJ1Y3Rpb24gaW4gSW5zdHJ1Y3Rpb25cclxuICBjbGVhckluc3RydWN0aW9uKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93bkxpc3QgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUgPSAnJztcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvbnRpbHRsZSA9IFwiXCI7XHJcbiAgICAgIHRoaXMudGVtcEluc3RydWN0aW9uRGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICB0aGlzLkluc3RydWN0aW9uRGVzY3JpcHRpb24gPSAnJztcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJjbGVhckluc3RydWN0aW9uXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gc2F2ZSBpbnN0cnVjdGlvbiB2YWx1ZVxyXG4gIHNhdmVJbnN0cnVjdGlvbigpIHtcclxuICAgIHZhciBwYXlsb2FkID0ge307XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KFN0cmluZyh0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9udGlsdGxlKS50cmltKCkpKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNTIubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNTIuY29kZSk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzUyLmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzUyLm1lc3NhZ2UpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KFN0cmluZyh0aGlzLnRlbXBJbnN0cnVjdGlvbkRlc2NyaXB0aW9uKS50cmltKCkpKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNTEubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNTEuY29kZSk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzUxLmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzUxLm1lc3NhZ2UpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB2YXIgYm9keSA9IHtcclxuICAgICAgICB0ZXh0OiB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9udGlsdGxlLnRyaW0oKSxcclxuICAgICAgICB2YWx1ZTogJzEnLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLnRlbXBJbnN0cnVjdGlvbkRlc2NyaXB0aW9uLnRyaW0oKSxcclxuICAgICAgICBzdGF0dXM6ICcwJyxcclxuICAgICAgICB1c2VySWQ6IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy51c2VySWQsXHJcbiAgICAgIH07XHJcbiAgICAgIHBheWxvYWQgPSB7XHJcbiAgICAgICAgYm9keTogYm9keSxcclxuICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgIHJlcXVlc3RfdHlwZTogXCJwYXJhbWV0ZXJcIixcclxuICAgICAgICAgIHVzZXJJZDogdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLnVzZXJJZCxcclxuICAgICAgICAgIGlkOiB0aGlzLkluc3RydWN0aW9uSWRcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuSW5zdHJ1Y3Rpb25JZCAhPSBudWxsICYmIHRoaXMuSW5zdHJ1Y3Rpb25JZCAhPSAnJykge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY29tcGxleElkID0gcGFyc2VJbnQodGhpcy5JbnN0cnVjdGlvbklkKTtcclxuICAgICAgICB0aGlzLmFwaVNlcnZpY2UuUHV0TmV3KGJvZHksIGNvbmZpZy5QSFlTSUNJQU4uVVBEQVRFX0lOU1RSVUNUSU9OX1ZBTFVFICsgdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLnVzZXJJZCArICcmaWQ9JyArIHRoaXMuSW5zdHJ1Y3Rpb25JZCkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93bkxpc3QgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSB0cnVlOyB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcInNhdmVJbnN0cnVjdGlvblwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5JbnN0cnVjdGlvbkRlc2NyaXB0aW9uID0gdGhpcy50ZW1wSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbjtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUgPSB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9udGlsdGxlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93bkxpc3QgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93biA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRJbnN0cnVjdGlvblZhbHVlcygpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcInNhdmVJbnN0cnVjdGlvblwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93bkxpc3QgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93bkxpc3QgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNhdmVJbnN0cnVjdGlvblwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzYXZlSW5zdHJ1Y3Rpb25cIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBwYXlsb2FkID0gYm9keTtcclxuICAgICAgICB0aGlzLmFwaVNlcnZpY2UuUG9zdChib2R5LCBjb25maWcuUEhZU0lDSUFOLkFERF9JTlNUUlVDVElPTl9WQUxVRSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93bkxpc3QgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSB0cnVlOyB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcInNhdmVJbnN0cnVjdGlvblwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5jb21wbGV4SWQgPSAwO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSA9ICcnO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb250aWx0bGUgPSBcIlwiO1xyXG4gICAgICAgICAgICAgIHRoaXMudGVtcEluc3RydWN0aW9uRGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93bkxpc3QgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93biA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRJbnN0cnVjdGlvblZhbHVlcygpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcInNhdmVJbnN0cnVjdGlvblwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93bkxpc3QgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93bkxpc3QgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNhdmVJbnN0cnVjdGlvblwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzYXZlSW5zdHJ1Y3Rpb25cIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzYXZlSW5zdHJ1Y3Rpb25cIiwgcGF5bG9hZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBEZWxldGUgaW5zdHJ1Y3Rpb25cclxuICBkZWxldGVJbnN0cnVjdGlvbihpZDogTnVtYmVyKSB7XHJcbiAgICB2YXIgcGF5bG9hZCA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgcGF5bG9hZCA9IHtcclxuICAgICAgICByZXF1ZXN0X3R5cGU6IFwicGFyYW1ldGVyXCIsXHJcbiAgICAgICAgdXNlcklkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMudXNlcklkLFxyXG4gICAgICAgIGlkOiBpZFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuYXBpU2VydmljZS5QdXROZXcoJycsIGNvbmZpZy5QSFlTSUNJQU4uREVMRVRFX0lOU1RSVUNUSU9OX1ZBTFVFICsgdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLnVzZXJJZCArICcmaWQ9JyArIGlkKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcImRlbGV0ZUluc3RydWN0aW9uXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlID0gJyc7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb250aWx0bGUgPSBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLnRlbXBJbnN0cnVjdGlvbkRlc2NyaXB0aW9uID0gXCJcIjtcclxuICAgICAgICAgICAgdGhpcy5nZXRJbnN0cnVjdGlvblZhbHVlcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJkZWxldGVJbnN0cnVjdGlvblwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImRlbGV0ZUluc3RydWN0aW9uXCIsIHBheWxvYWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZGVsZXRlSW5zdHJ1Y3Rpb25cIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZGVsZXRlSW5zdHJ1Y3Rpb25cIiwgcGF5bG9hZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBhZGQgbmV3IEluc3RydWN0aW9uXHJcbiAgYWRkTmV3SW5zdHJ1Y3Rpb24oKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUgPSAnJztcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvbnRpbHRsZSA9IFwiXCI7XHJcbiAgICAgIHRoaXMudGVtcEluc3RydWN0aW9uRGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICB0aGlzLkluc3RydWN0aW9uRGVzY3JpcHRpb24gPSAnJztcclxuICAgICAgdGhpcy5JbnN0cnVjdGlvbklkID0gJyc7XHJcbiAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93biA9IHRydWU7XHJcbiAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93bkxpc3QgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJhZGROZXdJbnN0cnVjdGlvblwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIHNlbGVjdCByb3V0ZSB2YWx1ZVxyXG4gIHNlbGVjdFJvdXRlc2VhcmNWYWx1ZShyb3V0ZTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlbGVjdFJvdXRlRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yb3V0ZVNlYXJjaFZhbHVlID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyb3V0ZT8ucm91dGVOYW1lKSA/IHJvdXRlLnJvdXRlTmFtZSA6ICcnO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNlbGVjdFJvdXRlc2VhcmNWYWx1ZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIHNlbGVjdCBEb3NlIHZhbHVlXHJcbiAgc2VsZWN0RG9zZVZhbHVlKGRvc2U6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zZWxlY3REb3NlRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kb3NlU2VhcmNoVmFsdWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGRvc2U/LnRleHQpID8gZG9zZS50ZXh0IDogXCJcIjtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kb3NlVmFsdWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGRvc2U/LnZhbHVlKSA/IGRvc2UudmFsdWUgOiBcIlwiO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RW5kRGF0ZUNhbGN1bGF0ZXIoKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZWxlY3REb3NlVmFsdWVcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBzZWxlY3QgRnJlcXVlbmN5IHZhbHVlXHJcbiAgc2VsZWN0RnJlcXVlbmN5VmFsdWUoZnJlcXVlbmN5OiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0RnJlcURyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZnJlcVNlYXJjaFZhbHVlID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShmcmVxdWVuY3k/LnRleHQpID8gZnJlcXVlbmN5LnRleHQgOiBcIlwiO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZyZXFWYWx1ZSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoZnJlcXVlbmN5Py52YWx1ZSkgPyBmcmVxdWVuY3kudmFsdWUgOiBcIlwiO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RW5kRGF0ZUNhbGN1bGF0ZXIoKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZWxlY3RGcmVxdWVuY3lWYWx1ZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIHNlbGVjdCBGb29kIHZhbHVlXHJcbiAgc2VsZWN0Rm9vZFZhbHVlKGZvb2Q6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zZWxlY3RGb29kRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5mb29kU2VhcmNoVmFsdWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGZvb2Q/LnRleHQpID8gZm9vZC50ZXh0IDogXCJcIjtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZWxlY3RGb29kVmFsdWVcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZWxlY3RTdHBWYWx1ZShzdHA6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zZWxlY3RzdHBEcm9wZG93biA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5VmFsdWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHN0cD8ubmFtZSkgPyBzdHAubmFtZSA6ICcnO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNlbGVjdFN0cFZhbHVlXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9zZWxlY3QgUHVycG9zZSB2YWx1ZVxyXG4gIHNlbGVjdFB1cnBvc2VWYWx1ZShwdXJwb3NlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0UHVycG9zZURyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wdXJwb3NlU2VhcmNoVmFsdWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHB1cnBvc2U/Lmxvb2t1cFRleHQpID8gcHVycG9zZS5sb29rdXBUZXh0IDogJyc7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY29tcGxleElkID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShwdXJwb3NlPy5pZCkgPyBwdXJwb3NlLmlkIDogXCJcIjtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZWxlY3RQdXJwb3NlVmFsdWVcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBRdWFudGl0eSBjaGFuZ2VcclxuICBxdWFudGl0eUNoYW5nZSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhFbmREYXRlQ2FsY3VsYXRlcigpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGNvbnZlcnRxdWFudGl0eXZhbCA9IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwsIDEwKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbCA9IGNvbnZlcnRxdWFudGl0eXZhbC50b1N0cmluZygpO1xyXG4gICAgICAvL3RoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwgPSB0aGlzLnJvdW5kRGF0YShwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsKSkudG9TdHJpbmcoKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEF1dGhvcml0eSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInF1YW50aXR5Q2hhbmdlXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tNb2JpbGUoZXZ0OiBhbnkpOiBhbnkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIGNoYXJDb2RlID0gKGV2dC53aGljaCkgPyBldnQud2hpY2ggOiBldnQua2V5Q29kZTtcclxuICAgICAgaWYgKGNoYXJDb2RlID4gMzEgJiYgKGNoYXJDb2RlIDwgNDcgfHwgY2hhckNvZGUgPiA1NykpXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiY2hlY2tNb2JpbGVcIik7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRheXNjaGFuZ2UoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCAhPSBudWxsKSB7XHJcbiAgICAgICAgY29uc3QgY29udmVydGRheXNjaGFuZ2UgPSBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsLCAxMCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCA9IGNvbnZlcnRkYXlzY2hhbmdlLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImRheXNjaGFuZ2VcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXBlYXRzQ2hhbmdlKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEF1dGhvcml0eSA9IGZhbHNlO1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCkpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RW5kRGF0ZUNhbGN1bGF0ZXIoKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBjb252ZXJ0cmVwZWF0c3ZhbCA9IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCwgMTApO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwgPSBjb252ZXJ0cmVwZWF0c3ZhbC50b1N0cmluZygpO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInJlcGVhdHNDaGFuZ2VcIik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vdW5saXN0ZWQgY2hlY2sgYm94XHJcbiAgdW5saXN0ZWRSQSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy51bmxpc3RlZFJBKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy51bmxpc3RlZFJBID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnByZXNjcmliZUFTX1JQQlMgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1JQQlMnO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkEgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnByZXNjcmliZUFTX1JQQlMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMgPSAnUHJpdmF0ZSc7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInVubGlzdGVkUkFcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdQcml2YXRlJztcclxuICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMudW5saXN0ZWRSQSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudW5saXN0ZWRSQSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5DVEdDb1BheW1lbnQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJwcml2YXRlXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgUEJTKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdQQlMnO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIlBCU1wiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIFJQQlMoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1JQQlMnO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkNUR0NvUGF5bWVudCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIlJQQlNcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL3NlbGVjdGVkIG1lZGljaW5lXHJcbiAgc2VsZWN0Rm9ybXVsYXRpb24obWVkOiBhbnksIGluZGV4OiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiA9IG1lZDtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5jbGVhck1lZGljYWxQcmVzY3JpcHRpb25EYXRhT25jaGFuZ2VvZk1lZGljaW5lKG1lZCk7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzUzhXYXJuaW5nTmV4dCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5yZXN0cmljdGlvbnMgPSBtZWQuUmVzdHJpY3Rpb25zICYmIG1lZC5SZXN0cmljdGlvbnMubGVuZ3RoICE9IDAgPyBtZWQuUmVzdHJpY3Rpb25zWzBdIDogbnVsbDtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmxlbWkgPSBtZWQuYWlwICE9IG51bGwgPyBtZWQuYWlwLmxlbWkgOiBmYWxzZTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmxtYmMgPSBtZWQuYWlwICE9IG51bGwgPyBtZWQuYWlwLmxtYmMgOiBmYWxzZTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lID0gbWVkLmFpcCAhPSBudWxsID8gbWVkLmFpcC5sZW1pIDogZmFsc2U7XHJcblxyXG4gICAgICAgIGlmIChtZWQuUmVzdHJpY3Rpb25zICYmIG1lZC5SZXN0cmljdGlvbnMubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgIHZhciByZXN0cmljdGlvbkxpc3RzID0gbWVkLlJlc3RyaWN0aW9ucy5maWx0ZXIoXHJcbiAgICAgICAgICAgIChlOiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgZS5yZXN0cmljdGlvblByZXZpZXcgIT0gbnVsbCAmJlxyXG4gICAgICAgICAgICAgIGUucmVzdHJpY3Rpb25UZXh0ICE9IG51bGwgJiZcclxuICAgICAgICAgICAgICBlLnJlc3RyaWN0aW9uUHJldmlldyAhPSAnJyAmJlxyXG4gICAgICAgICAgICAgIGUucmVzdHJpY3Rpb25UZXh0ICE9ICcnXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgaWYgKHJlc3RyaWN0aW9uTGlzdHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmlzU2hvd1Jlc3RyaWN0aW9ucyA9IHRydWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmlzU2hvd1Jlc3RyaWN0aW9ucyA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmlzU2hvd1Jlc3RyaWN0aW9ucyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuXHJcbiAgICAgIC8vIGlmICh0aGlzLnN0YXRlLnNlbGVjdGVkSW5kZXggIT0gaW5kZXgpIHtcclxuICAgICAgLy8gICB0aGlzLmNsZWFyTWVkaWNhbFByZXNjcmlwdGlvbkRhdGFPbmNoYW5nZW9mTWVkaWNpbmUobWVkKTtcclxuICAgICAgLy8gfVxyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5pc1J0cG1OZXh0ID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5hdXRob3JpdHlGb3JtTm8gPSB0aGlzLmdldEFkZEF1dGhWYWx1ZSh0aGlzLnRlbXBBdXRob3JpdHlGb3JtTm8pO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RW5kRGF0ZUNhbGN1bGF0ZXIoKTtcclxuICAgICAgdGhpcy5lbmFibGVQcmVzY3JpYmVBcyhtZWQpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkQnJhbmRGb3JtdWxhdGlvbiA9IG51bGw7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2VsZWN0Rm9ybXVsYXRpb25cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL3NlbGVjdGVkIEZhdm91cml0ZSBtZWRpY2luZVxyXG4gIHNlbGVjdEZhdm91cml0ZUZvcm11bGF0aW9uKG1lZDogYW55LCBpbmRleDogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gPSBtZWQ7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY2xlYXJNZWRpY2FsUHJlc2NyaXB0aW9uRGF0YU9uY2hhbmdlb2ZNZWRpY2luZShtZWQpO1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0KSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc1M4V2FybmluZ05leHQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmVzdHJpY3Rpb25zID0gbWVkLlJlc3RyaWN0aW9ucyAmJiBtZWQuUmVzdHJpY3Rpb25zLmxlbmd0aCAhPSAwID8gbWVkLlJlc3RyaWN0aW9uc1swXSA6IG51bGw7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5sZW1pID0gbWVkLmFpcCAhPSBudWxsID8gbWVkLmFpcC5sZW1pIDogZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5sbWJjID0gbWVkLmFpcCAhPSBudWxsID8gbWVkLmFpcC5sbWJjIDogZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSA9IG1lZC5haXAgIT0gbnVsbCA/IG1lZC5haXAubGVtaSA6IGZhbHNlO1xyXG5cclxuICAgICAgICBpZiAobWVkLlJlc3RyaWN0aW9ucyAmJiBtZWQuUmVzdHJpY3Rpb25zLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgICB2YXIgcmVzdHJpY3Rpb25MaXN0cyA9IG1lZC5SZXN0cmljdGlvbnMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoZTogYW55KSA9PlxyXG4gICAgICAgICAgICAgIGUucmVzdHJpY3Rpb25QcmV2aWV3ICE9IG51bGwgJiZcclxuICAgICAgICAgICAgICBlLnJlc3RyaWN0aW9uVGV4dCAhPSBudWxsICYmXHJcbiAgICAgICAgICAgICAgZS5yZXN0cmljdGlvblByZXZpZXcgIT0gJycgJiZcclxuICAgICAgICAgICAgICBlLnJlc3RyaWN0aW9uVGV4dCAhPSAnJ1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGlmIChyZXN0cmljdGlvbkxpc3RzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5pc1Nob3dSZXN0cmljdGlvbnMgPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5pc1Nob3dSZXN0cmljdGlvbnMgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5pc1Nob3dSZXN0cmljdGlvbnMgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuaXNSdHBtTmV4dCA9IHRydWU7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuYXV0aG9yaXR5Rm9ybU5vID0gdGhpcy5nZXRBZGRBdXRoVmFsdWUodGhpcy50ZW1wQXV0aG9yaXR5Rm9ybU5vKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEVuZERhdGVDYWxjdWxhdGVyKCk7XHJcbiAgICAgIHRoaXMuZW5hYmxlUHJlc2NyaWJlQXMobWVkKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEJyYW5kRm9ybXVsYXRpb24gPSBudWxsO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNlbGVjdEZhdm91cml0ZUZvcm11bGF0aW9uXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0QnJhbmROYW1lKHNlbGVjdGVkRm9ybXVsYXRpb246IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbikpIHtcclxuICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uLmFtdCkgJiYgc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXQubGVuZ3RoICE9IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cE5hbWUpKSB7XHJcbiAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBOYW1lO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uLmJyYW5kPy5icmFuZE5hbWUpKSB7XHJcbiAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRGb3JtdWxhdGlvbi5icmFuZC5icmFuZE5hbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0QnJhbmROYW1lXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVuYWJsZVByZXNjcmliZUFzKG1lZDogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICAvLyBpZiAobWVkLnBic1R5cGUudG9Mb3dlckNhc2UoKSA9PSBcIm5vbiBwYnNcIiB8fCB0aGlzLmlzUHJlc2NyaWJlQXNQcml2YXRlT25seSkge1xyXG4gICAgICAvLyAgIHRoaXMucHJlc2NyaWJlQVNfUEJTID0gdHJ1ZTtcclxuICAgICAgLy8gICB0aGlzLnByZXNjcmliZUFTX1JQQlMgPSB0cnVlO1xyXG4gICAgICAvLyAgIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMgPSAnUHJpdmF0ZSc7XHJcbiAgICAgIC8vIH0gZWxzZVxyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShtZWQ/LnBic1R5cGUpICYmIG1lZC5wYnNUeXBlLnRvVXBwZXJDYXNlKCkgPT0gXCJQQlMvUlBCU1wiICYmICF0aGlzLmlzUHJlc2NyaWJlQXNQcml2YXRlT25seSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QpIHtcclxuICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzPy5tZWRpY2FyZU51bWJlcikgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzPy5kdmFOdW1iZXIpKSB7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1BCUyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1JQQlMnO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzPy5tZWRpY2FyZU51bWJlcikpIHtcclxuICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19QQlMgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdQQlMnO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHM/LmR2YU51bWJlcikpIHtcclxuICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19QQlMgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMgPSAnUlBCUyc7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1BCUyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMgPSAnUHJpdmF0ZSc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkobWVkPy5wYnNUeXBlKSAmJiBtZWQucGJzVHlwZS50b1VwcGVyQ2FzZSgpID09IFwiUlBCU1wiICYmICF0aGlzLmlzUHJlc2NyaWJlQXNQcml2YXRlT25seSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QpIHtcclxuICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzPy5kdmFOdW1iZXIpKSB7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1JQQlMgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUEJTID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMgPSAnUlBCUyc7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1BCUyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1ByaXZhdGUnO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG1lZD8ucGJzVHlwZSkgJiYgbWVkLnBic1R5cGUudG9VcHBlckNhc2UoKSA9PSBcIlBCU1wiICYmICF0aGlzLmlzUHJlc2NyaWJlQXNQcml2YXRlT25seSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QpIHtcclxuICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzPy5tZWRpY2FyZU51bWJlcikgfHwgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzPy5kdmFOdW1iZXIpKSB7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1BCUyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMgPSAnUEJTJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19QQlMgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMgPSAnUHJpdmF0ZSc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkobWVkPy5wYnNUeXBlKSAmJiAobWVkLnBic1R5cGUudG9VcHBlckNhc2UoKSA9PSBcIkVYVEVNUE9SQU5FT1VTIFBSRVBBUkFUSU9OU1wiIHx8IG1lZC5wYnNUeXBlLnRvVXBwZXJDYXNlKCkgPT0gXCJTRUNUSU9OIDEwMFwiKSAmJiAhdGhpcy5pc1ByZXNjcmliZUFzUHJpdmF0ZU9ubHkgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0KSB7XHJcbiAgICAgICAgaWYgKCghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHM/Lm1lZGljYXJlTnVtYmVyKSB8fCAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHM/LmR2YU51bWJlcikpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkobWVkPy5wYnNDb2RlKSAmJiBtZWQucGJzQ29kZSAhPSBcIlwiKSB7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1BCUyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMgPSAnUEJTJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19QQlMgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMgPSAnUHJpdmF0ZSc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkobWVkPy5wYnNUeXBlKSAmJiBtZWQucGJzVHlwZS50b1VwcGVyQ2FzZSgpID09IFwiUEFMTElBVElWRSBDQVJFXCIgJiYgIXRoaXMuaXNQcmVzY3JpYmVBc1ByaXZhdGVPbmx5ICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLmR2YU51bWJlciAhPSBudWxsICYmIHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuZHZhTnVtYmVyICE9ICcnICYmIG1lZC5wYnNDb2RlICE9IFwiXCIpIHtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUEJTID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1JQQlMgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMgPSAnUlBCUyc7XHJcbiAgICAgICAgfSBlbHNlIGlmICgoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzPy5tZWRpY2FyZU51bWJlcikgfHwgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzPy5kdmFOdW1iZXIpKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG1lZD8ucGJzQ29kZSkgJiYgbWVkLnBic0NvZGUgIT0gXCJcIikge1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19QQlMgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1BCUyc7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUEJTID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1ByaXZhdGUnO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLnByZXNjcmliZUFTX1BCUyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1ByaXZhdGUnO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIGVsc2UgaWYgKG1lZC5wYnNUeXBlLnRvVXBwZXJDYXNlKCkgPT0gXCJTRUNUSU9OIDEwMFwiKSB7XHJcbiAgICAgIC8vICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMubWVkaWNhcmVOdW1iZXIgIT0gXCJcIiAmJlxyXG4gICAgICAvLyAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5tZWRpY2FyZU51bWJlciAhPSBudWxsICYmIG1lZC5wYnNDb2RlICE9IFwiXCIgfHwgdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5kdmFOdW1iZXIgIT0gbnVsbCAmJlxyXG4gICAgICAvLyAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5kdmFOdW1iZXIgIT0gJycgJiYgbWVkLnBic0NvZGUgIT0gXCJcIikge1xyXG4gICAgICAvLyB0aGlzLnByZXNjcmliZUFTX1BCUyA9IGZhbHNlO1xyXG4gICAgICAvLyB0aGlzLnByZXNjcmliZUFTX1JQQlMgPSB0cnVlO1xyXG4gICAgICAvLyB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1BCUyc7XHJcbiAgICAgIC8vICAgfSBlbHNlIHtcclxuICAgICAgLy8gdGhpcy5wcmVzY3JpYmVBU19QQlMgPSB0cnVlO1xyXG4gICAgICAvLyB0aGlzLnByZXNjcmliZUFTX1JQQlMgPSB0cnVlO1xyXG4gICAgICAvLyB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1ByaXZhdGUnO1xyXG4gICAgICAvLyAgICAgdGhpcy5zZXRTdGF0ZSh7IHByZXNjcmliZUFTX1BCUzogdHJ1ZSwgcHJlc2NyaWJlQVNfUlBCUzogdHJ1ZSwgUHJlc2NyaWJlQVM6IFwiUHJpdmF0ZVwiIH0pO1xyXG4gICAgICAvLyAgIH1cclxuICAgICAgLy8gfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJlbmFibGVQcmVzY3JpYmVBc1wiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFRyYWRlTmFtZSgpOiBhbnkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgLy8gdmFyIHNlbGVjdGVkRm9ybXVsYXRpb246YW55ID0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uO1xyXG5cclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCkge1xyXG4gICAgICAgIHZhciB0cmFkZU5hbWUgPSAnJztcclxuICAgICAgICB2YXIgYW10X3RwTmFtZSA9IHRoaXMuZ2V0QnJhbmROYW1lKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbik7XHJcbiAgICAgICAgdmFyIHRCcmFuZE5hbWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGFtdF90cE5hbWUpID8gYW10X3RwTmFtZSA6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5icmFuZD8uYnJhbmROYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5icmFuZC5icmFuZE5hbWUgOiBcIlwiO1xyXG4gICAgICAgIC8vdmFyIGFtdF90cHBOYW1lID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10KSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10Lmxlbmd0aCAhPSAwICYmIHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHMpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBwcy5sZW5ndGggIT0gMCA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBwc1swXS50cHBOYW1lIDogJyc7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmdlbmVyaWNOYW1lKSB8fCAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZG9zYWdlRm9ybSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0udG9Mb3dlckNhc2UoKSA9PSAnZ2F1emUnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUgOiBcIlwiO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPT0gZmFsc2UgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5sZW1pID09IGZhbHNlICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgIHRyYWRlTmFtZSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5nZW5lcmljTmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZ2VuZXJpY05hbWUgOiBcIlwiO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0cmFkZU5hbWU7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSA9PSB0cnVlICYmIHRoaXMuY29tbW9uU2VydmljZXMubGVtaSA9PSBmYWxzZSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICB0cmFkZU5hbWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZ2VuZXJpY05hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmdlbmVyaWNOYW1lICsgJygnICsgdEJyYW5kTmFtZSArICcpJyA6IFwiXCI7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRyYWRlTmFtZTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lID09IGZhbHNlICYmIHRoaXMuY29tbW9uU2VydmljZXMubGVtaSA9PSB0cnVlICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgIHRyYWRlTmFtZSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5nZW5lcmljTmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZ2VuZXJpY05hbWUgOiBcIlwiO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0cmFkZU5hbWU7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSA9PSB0cnVlICYmIHRoaXMuY29tbW9uU2VydmljZXMubGVtaSA9PSB0cnVlICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgIHRyYWRlTmFtZSA9IHRCcmFuZE5hbWU7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRyYWRlTmFtZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBlbHNlIGlmIChJc0V4dGVtcCA9PSB0cnVlICYmIGxlbWkgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAvLyAgIHRyYWRlTmFtZSA9IGFtdF90cHBOYW1lICE9IG51bGwgJiYgYW10X3RwcE5hbWUgIT0gXCJcIiA/IGFtdF90cHBOYW1lIDogdGhpcy5zdGF0ZS5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lLnRyaW0oKTtcclxuICAgICAgICAgICAgLy8gICByZXR1cm4gdHJhZGVOYW1lLnRyaW0oKTtcclxuICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICAvLyBlbHNlIGlmIChJc0V4dGVtcCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIC8vICAgdHJhZGVOYW1lID0gdGhpcy5zdGF0ZS5zZWxlY3RlZEZvcm11bGF0aW9uLmZvcm11bGEgPT0gbnVsbCA/IHRoaXMuc3RhdGUuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZS50cmltKCkgOiB0aGlzLnN0YXRlLnNlbGVjdGVkRm9ybXVsYXRpb24uZm9ybXVsYTtcclxuICAgICAgICAgICAgLy8gICByZXR1cm4gdHJhZGVOYW1lLnRyaW0oKTtcclxuICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgIHRyYWRlTmFtZSA9IHRoaXMuZ2V0RXh0ZW1wVFRQTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0cmFkZU5hbWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gdHJhZGVOYW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRUcmFkZU5hbWVcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0VHJhZGVOYW1lRGlzcGxheSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QpIHtcclxuICAgICAgICB2YXIgYW10X3RwTmFtZSA9IHRoaXMuZ2V0QnJhbmROYW1lKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbik7XHJcbiAgICAgICAgdmFyIHRCcmFuZE5hbWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGFtdF90cE5hbWUpID8gYW10X3RwTmFtZSA6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5icmFuZD8uYnJhbmROYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5icmFuZC5icmFuZE5hbWUgOiBcIlwiO1xyXG4gICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5nZW5lcmljTmFtZSkpIHtcclxuICAgICAgICAgIC8vIGxldCBQSXRlbVRocmVlMiA9IHByZXNjcmliZWRJdGVtUmVzZXJ2ZWRUaHJlZS5sYXN0SW5kZXhPZihcIltcIik7XHJcbiAgICAgICAgICAvLyBsZXQgUEl0ZW1UaHJlZTMgPSBwcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUuc2xpY2UoMCwgUEl0ZW1UaHJlZTIpO1xyXG4gICAgICAgICAgLy8gdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUgPSBQSXRlbVRocmVlMiA+PSAwID8gUEl0ZW1UaHJlZTMudHJpbSgpIDogcHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lID0gdGhpcy5jb21tb25TZXJ2aWNlcy5lb3BEaXNwbGF5TmFtZSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZSA6IFwiXCI7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gdHJ1ZSB8fCB0aGlzLmNvbW1vblNlcnZpY2VzLmxlbWkgPT0gdHJ1ZSB8fCAodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0gIT0gbnVsbCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybS50b0xvd2VyQ2FzZSgpID09IFwiZ2F1emVcIikpIHtcclxuICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybS50b0xvd2VyQ2FzZSgpID09IFwiZ2F1emVcIikge1xyXG4gICAgICAgICAgICAvLyBsZXQgUEl0ZW1UaHJlZTIgPSBwcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUubGFzdEluZGV4T2YoXCJbXCIpO1xyXG4gICAgICAgICAgICAvLyBsZXQgUEl0ZW1UaHJlZTMgPSBwcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUuc2xpY2UoMCwgUEl0ZW1UaHJlZTIpO1xyXG4gICAgICAgICAgICAvLyB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZWRJdGVtUmVzZXJ2ZWRUaHJlZSA9IFBJdGVtVGhyZWUyID49IDAgPyBQSXRlbVRocmVlMy50cmltKCkgOiBwcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWU7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZW9wRGlzcGxheU5hbWUgPSB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGlzcGxheU5hbWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUgOiBcIlwiO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gbGV0IFBJdGVtVGhyZWUgPSBleHRlbXBUVFBOYW1lLmxhc3RJbmRleE9mKFwiW1wiKTtcclxuICAgICAgICAgICAgLy8gbGV0IFBJdGVtVGhyZWUxID0gZXh0ZW1wVFRQTmFtZS5zbGljZSgwLCBQSXRlbVRocmVlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lb3BEaXNwbGF5TmFtZSA9IHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZSA9IHRoaXMuZ2V0RXh0ZW1wVFRQTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pLnRyaW0oKTtcclxuICAgICAgICAgICAgLy8gdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUgPSBQSXRlbVRocmVlID49IDAgPyBQSXRlbVRocmVlMS50cmltKCkgOiBleHRlbXBUVFBOYW1lO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB2YXIgbXBwTmFtZSA9IHRoaXMuZ2V0TVBQTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pO1xyXG4gICAgICAgICAgdmFyIFNhY2hldE9yUHVtcCA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5zdHJTYWNoZXRPclB1bXApID8gXCIgXCIgKyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uc3RyU2FjaGV0T3JQdW1wIDogXCJcIjtcclxuICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG1wcE5hbWUpKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lID09IHRydWUpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVvcERpc3BsYXlOYW1lID0gdGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lID0gKG1wcE5hbWUudHJpbSgpICsgXCJcIiArIFNhY2hldE9yUHVtcCArICcgKCcgKyB0QnJhbmROYW1lICsgJyknKS50cmltKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lb3BEaXNwbGF5TmFtZSA9IHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZSA9IChtcHBOYW1lLnRyaW0oKSArIFwiXCIgKyBTYWNoZXRPclB1bXApLnRyaW0oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdmFyIHN0cmVuZ3RoID0gdGhpcy5yeFN0cmVuZ3RoY2FsY3VsYXRpb24odGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKTtcclxuICAgICAgICAgICAgdmFyIGRpc3BOYW1lID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LkRpc3BOYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5EaXNwTmFtZS50cmltKCkgOiBcIlwiO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lID0gKGRpc3BOYW1lICsgXCIgXCIgKyAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybS50cmltKCkgKyBcIiBcIiA6IFwiXCIpICsgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodEJyYW5kTmFtZSkgPyAnKCcgKyB0QnJhbmROYW1lICsgJykgJyA6IFwiXCIpICsgc3RyZW5ndGgpLnRyaW0oKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVvcERpc3BsYXlOYW1lID0gKGRpc3BOYW1lICsgXCIgXCIgKyAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0QnJhbmROYW1lKSA/ICcoJyArIHRCcmFuZE5hbWUgKyAnKSAnIDogXCJcIikgKyBzdHJlbmd0aCkudHJpbSgpO1xyXG4gICAgICAgICAgICAgIC8vIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlID0gZGlzcE5hbWUgKyBcIiBcIiArICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtLnRyaW0oKSArIFwiIFwiIDogXCJcIikgKyAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0QnJhbmROYW1lKSA/ICcoJyArIHRCcmFuZE5hbWUgKyAnKSAnIDogXCJcIikgKyB0aGlzLnJ4U3RyZW5ndGhjYWxjdWxhdGlvbk5ldyh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkQnJhbmRGb3JtdWxhdGlvbik7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lID0gKGRpc3BOYW1lICsgXCIgXCIgKyAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybS50cmltKCkgOiBcIlwiKSArIFwiIFwiICsgc3RyZW5ndGgpLnRyaW0oKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVvcERpc3BsYXlOYW1lID0gKGRpc3BOYW1lICsgXCIgXCIgKyBzdHJlbmd0aCkudHJpbSgpO1xyXG4gICAgICAgICAgICAgIC8vIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlID0gZGlzcE5hbWUgKyBcIiBcIiArICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtLnRyaW0oKSA6IFwiXCIpICsgXCIgXCIgKyB0aGlzLnJ4U3RyZW5ndGhjYWxjdWxhdGlvbk5ldyh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkQnJhbmRGb3JtdWxhdGlvbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lID0gdGhpcy5jb21tb25TZXJ2aWNlcy5lb3BEaXNwbGF5TmFtZSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5wcm9kdWN0TmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUgOiBcIlwiO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGlzcGxheU5hbWUgPSB0aGlzLmNvbW1vblNlcnZpY2VzLmVvcERpc3BsYXlOYW1lID0gXCJcIjtcclxuICAgICAgLy8gdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUgPSBcIlwiO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0VHJhZGVOYW1lRGlzcGxheVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldE1QUE5hbWUoc2VsZWN0ZWRGb3JtdWxhdGlvbjogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uKSAmJiAodHlwZW9mIHNlbGVjdGVkRm9ybXVsYXRpb24pID09PSAnb2JqZWN0JyAmJiBzZWxlY3RlZEZvcm11bGF0aW9uLmNvbnN0cnVjdG9yID09PSBPYmplY3QgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uPy5hbXQpICYmIHNlbGVjdGVkRm9ybXVsYXRpb24uYW10Lmxlbmd0aCA+IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXT8ubXBwcykgJiYgc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0ubXBwcy5sZW5ndGggPiAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0ubXBwc1swXT8ubXBwTmFtZSkpIHtcclxuICAgICAgICByZXR1cm4gc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0ubXBwc1swXS5tcHBOYW1lO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldE1QUE5hbWVcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0SXRlbUdlbmVyaWNJbnRlbnRpb24obGVtaTogYm9vbGVhbiwgaXNCcmFuZE5hbWU6IGJvb2xlYW4sIGlzRXh0ZW1wOiBib29sZWFuKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAobGVtaSA9PSB0cnVlICYmIGlzQnJhbmROYW1lID09IHRydWUgJiYgaXNFeHRlbXAgIT0gdHJ1ZSkge1xyXG4gICAgICAgIHJldHVybiAnQic7XHJcbiAgICAgIH0gZWxzZSBpZiAobGVtaSA9PSB0cnVlICYmIGlzQnJhbmROYW1lID09IGZhbHNlICYmIGlzRXh0ZW1wICE9IHRydWUpIHtcclxuICAgICAgICByZXR1cm4gJ0cnO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiAnRyc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0SXRlbUdlbmVyaWNJbnRlbnRpb25cIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcnhTdHJlbmd0aGNhbGN1bGF0aW9uKGZvcm11bGF0aW9uOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGZvcm11bGF0aW9uKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGZvcm11bGF0aW9uLml0ZW1TdHJlbmd0aFF1YW50aXR5KSAmJiBmb3JtdWxhdGlvbi5pdGVtU3RyZW5ndGhRdWFudGl0eSAhPSAwKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoZm9ybXVsYXRpb24uaXRlbVN0cmVuZ3RoUXVhbnRpdHludW1iZXJPZlBhY2spICYmIGZvcm11bGF0aW9uLml0ZW1TdHJlbmd0aFF1YW50aXR5bnVtYmVyT2ZQYWNrICE9IDApIHtcclxuICAgICAgICAgIHJldHVybiAoKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoZm9ybXVsYXRpb24uc3RyU2FjaGV0T3JQdW1wKSA/IGZvcm11bGF0aW9uLnN0clNhY2hldE9yUHVtcCA6IFwiXCIpICsgJyBbJyArIGZvcm11bGF0aW9uLml0ZW1TdHJlbmd0aFF1YW50aXR5ICsgJ10nICsgJyB4ICcgKyBmb3JtdWxhdGlvbi5pdGVtU3RyZW5ndGhRdWFudGl0eW51bWJlck9mUGFjaykudHJpbSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gKCghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGZvcm11bGF0aW9uLnN0clNhY2hldE9yUHVtcCkgPyBmb3JtdWxhdGlvbi5zdHJTYWNoZXRPclB1bXAgOiBcIlwiKSArICcgWycgKyBmb3JtdWxhdGlvbi5pdGVtU3RyZW5ndGhRdWFudGl0eSArICddJykudHJpbSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicnhTdHJlbmd0aGNhbGN1bGF0aW9uXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIHJ4U3RyZW5ndGhjYWxjdWxhdGlvbk5ldyhmb3JtdWxhdGlvbjogYW55KSB7XHJcbiAgLy8gICB0cnkge1xyXG4gIC8vICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShmb3JtdWxhdGlvbikgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShmb3JtdWxhdGlvbi5pdGVtU3RyZW5ndGhRdWFudGl0eSkgJiYgZm9ybXVsYXRpb24uaXRlbVN0cmVuZ3RoUXVhbnRpdHkgIT0gMCkge1xyXG4gIC8vICAgICAgIHJldHVybiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGZvcm11bGF0aW9uLnN0clNhY2hldE9yUHVtcCkgPyBmb3JtdWxhdGlvbi5zdHJTYWNoZXRPclB1bXAgOiBcIlwiO1xyXG4gIC8vICAgICB9IGVsc2Uge1xyXG4gIC8vICAgICAgIHJldHVybiAnJztcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfVxyXG4gIC8vICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAvLyAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJyeFN0cmVuZ3RoY2FsY3VsYXRpb25OZXdcIik7XHJcbiAgLy8gICAgIHJldHVybiBcIlwiO1xyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuXHJcbiAgc2hvd0F1dGhvcml0eUJveChSZXN0cmljdGlvbnM6IGFueSwgUHJlc2NyaWJlQVM6IGFueSwgcnhBdXRob3JpdHk6IGFueSwgdW5saXN0ZWRSQTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoUmVzdHJpY3Rpb25zKSAmJiBSZXN0cmljdGlvbnMubGVuZ3RoID4gMCAmJiBSZXN0cmljdGlvbnNbMF0ucmVzdHJpY3Rpb25UeXBlLnRvTG93ZXJDYXNlKCkgIT0gJ3Jlc3RyaWN0ZWQnICYmIFJlc3RyaWN0aW9uc1swXS5yZXN0cmljdGlvblR5cGUudG9Mb3dlckNhc2UoKSAhPSAndW5yZXN0cmljdGVkJyAmJiBQcmVzY3JpYmVBUy50b0xvd2VyQ2FzZSgpID09ICdwYnMnKSB8fCAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShSZXN0cmljdGlvbnMpICYmIFJlc3RyaWN0aW9ucy5sZW5ndGggPiAwICYmIFJlc3RyaWN0aW9uc1swXS5yZXN0cmljdGlvblR5cGUudG9Mb3dlckNhc2UoKSAhPSAncmVzdHJpY3RlZCcgJiYgUmVzdHJpY3Rpb25zWzBdLnJlc3RyaWN0aW9uVHlwZS50b0xvd2VyQ2FzZSgpICE9ICd1bnJlc3RyaWN0ZWQnICYmIFByZXNjcmliZUFTLnRvTG93ZXJDYXNlKCkgPT0gJ3JwYnMnKSB8fCAocnhBdXRob3JpdHkgPT0gdHJ1ZSAmJiBQcmVzY3JpYmVBUy50b0xvd2VyQ2FzZSgpID09ICdwYnMnKSB8fCAocnhBdXRob3JpdHkgPT0gdHJ1ZSAmJiBQcmVzY3JpYmVBUy50b0xvd2VyQ2FzZSgpID09ICdycGJzJykpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBlbHNlIGlmIChQcmVzY3JpYmVBUy50b0xvd2VyQ2FzZSgpID09ICdycGJzJyAmJiB1bmxpc3RlZFJBID09IHRydWUpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2hvd0F1dGhvcml0eUJveFwiKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RGlyZWN0aW9ucygpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGxldCBkaXJlY3Rpb25zID0gJyc7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZG9zZVNlYXJjaFZhbHVlKSkge1xyXG4gICAgICAgIGRpcmVjdGlvbnMgPSB0aGlzLmNvbW1vblNlcnZpY2VzLmRvc2VTZWFyY2hWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZyZXFTZWFyY2hWYWx1ZSkpIHtcclxuICAgICAgICBkaXJlY3Rpb25zID0gZGlyZWN0aW9ucyArICcgJyArIHRoaXMuY29tbW9uU2VydmljZXMuZnJlcVNlYXJjaFZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZm9vZFNlYXJjaFZhbHVlKSkge1xyXG4gICAgICAgIGRpcmVjdGlvbnMgPSBkaXJlY3Rpb25zICsgJyAnICsgdGhpcy5jb21tb25TZXJ2aWNlcy5mb29kU2VhcmNoVmFsdWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5JbnN0cnVjdGlvbkRlc2NyaXB0aW9uKSkge1xyXG4gICAgICAgIGRpcmVjdGlvbnMgPSBkaXJlY3Rpb25zICsgJyAnICsgdGhpcy5JbnN0cnVjdGlvbkRlc2NyaXB0aW9uO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlKSkge1xyXG4gICAgICAgIGRpcmVjdGlvbnMgPSBkaXJlY3Rpb25zICsgJyAnICsgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBkaXJlY3Rpb25zLnRyaW0oKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0RGlyZWN0aW9uc1wiKTtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL3N0YXRlIG5hbWUgZnVsbCBmb3JtXHJcbiAgZ2V0U3RhdGVOYW1lRnJvbVN0YXRlQ29kZShydHBtc3RhdGVOYW1lOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHN3aXRjaCAocnRwbXN0YXRlTmFtZSAmJiBydHBtc3RhdGVOYW1lICE9ICcnID8gcnRwbXN0YXRlTmFtZS50b1VwcGVyQ2FzZSgpIDogJycpIHtcclxuICAgICAgICBjYXNlICdOU1cnOlxyXG4gICAgICAgICAgcmV0dXJuICdOZXcgU291dGggV2FsZXMnO1xyXG4gICAgICAgIGNhc2UgJ1FMRCc6XHJcbiAgICAgICAgICByZXR1cm4gJ1F1ZWVuc2xhbmQnO1xyXG4gICAgICAgIGNhc2UgJ1NBJzpcclxuICAgICAgICAgIHJldHVybiAnU291dGggQXVzdHJhbGlhJztcclxuICAgICAgICBjYXNlICdUQVMnOlxyXG4gICAgICAgICAgcmV0dXJuICdUYXNtYW5pYSc7XHJcbiAgICAgICAgY2FzZSAnVklDJzpcclxuICAgICAgICAgIHJldHVybiAnVmljdG9yaWEnO1xyXG4gICAgICAgIGNhc2UgJ1dBJzpcclxuICAgICAgICAgIHJldHVybiAnV2VzdGVybiBBdXN0cmFsaWEnO1xyXG4gICAgICAgIGNhc2UgJ0FDVCc6XHJcbiAgICAgICAgICByZXR1cm4gJ0F1c3RyYWxpYW4gQ2FwaXRhbCBUZXJyaXRvcnknO1xyXG4gICAgICAgIGNhc2UgJ05UJzpcclxuICAgICAgICAgIHJldHVybiAnTm9ydGhlcm4gVGVycml0b3J5JztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgcmV0dXJuIHJ0cG1zdGF0ZU5hbWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0U3RhdGVOYW1lRnJvbVN0YXRlQ29kZVwiKTtcclxuICAgICAgcmV0dXJuIHJ0cG1zdGF0ZU5hbWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL3N1cGVyc2NyaXB0IGNvZGVcclxuICBzaHJpbmtTdXBlclNjcmlwdENvZGUgPSAoaW5wdXQ6IGFueSkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgbGV0IGR1cHJlc3VsdCA9IGlucHV0O1xyXG4gICAgICBsZXQgYSA9IGlucHV0LnNwbGl0KCc8c3VwPicpO1xyXG5cclxuICAgICAgLy8gc2VhcmNoIGZvciBwYXR0ZXJuIGluIGFcclxuICAgICAgbGV0IGNvdW50ID0gYS5sZW5ndGggLSAxO1xyXG5cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XHJcbiAgICAgICAgLy8gaWYgbWF0Y2ggZm91bmQgaW5jcmVhc2UgY291bnRcclxuICAgICAgICBsZXQgc3RhcnQgPSAnPHN1cD4nO1xyXG4gICAgICAgIGxldCBlbmQgPSAnPC9zdXA+JztcclxuICAgICAgICBsZXQgc3RhcnRJbmRleCA9IGR1cHJlc3VsdC5pbmRleE9mKHN0YXJ0KSArIHN0YXJ0Lmxlbmd0aDtcclxuICAgICAgICBsZXQgZW5kSW5kZXggPSBkdXByZXN1bHQuaW5kZXhPZihlbmQsIHN0YXJ0SW5kZXgpO1xyXG4gICAgICAgIGxldCBleHRyYWN0ZWRWYWx1ZSA9ICcnO1xyXG5cclxuICAgICAgICBpZiAoc3RhcnRJbmRleCAhPSAtMSAmJiBlbmRJbmRleCAhPSAtMSkge1xyXG4gICAgICAgICAgZXh0cmFjdGVkVmFsdWUgPSBkdXByZXN1bHQuc3Vic3RyaW5nKHN0YXJ0SW5kZXgsIGVuZEluZGV4KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHN0cmluZ051bWJlciA9IHRoaXMuY29udmVydFRvU3VwZXJzY3JpcHQoZXh0cmFjdGVkVmFsdWUpO1xyXG5cclxuICAgICAgICBsZXQgcmVzdWx0ID0gJ1RoZSBudW1iZXIgJyArIHN0cmluZ051bWJlciArICcgaXMgc3VwZXJzY3JpcHRlZC4nO1xyXG5cclxuICAgICAgICAvLyBkdXByZXN1bHQgPSBkdXByZXN1bHQucmVwbGFjZSgvPHN1cD4uKjxcXC9zdXA+LywgJzxzdXA+PC9zdXA+Jyk7XHJcbiAgICAgICAgLy8gZHVwcmVzdWx0ID0gZHVwcmVzdWx0LnJlcGxhY2VGaXJzdChcIlxcXFw8c3VwPi4qP1xcXFw8L3N1cD5cIiwgXCI8c3VwPlwiICsgXCJcIiArIFwiPC9zdXA+XCIpO1xyXG4gICAgICAgIGR1cHJlc3VsdCA9IGR1cHJlc3VsdC5yZXBsYWNlKFxyXG4gICAgICAgICAgJzxzdXA+JyArIGV4dHJhY3RlZFZhbHVlICsgJzwvc3VwPicsXHJcbiAgICAgICAgICBzdHJpbmdOdW1iZXJcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIHJldHVybiBkdXByZXN1bHQ7XHJcbiAgICAgIHJldHVybiB0aGlzLnNocmlua1N1YlNjcmlwdENvZGUoZHVwcmVzdWx0KTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2hyaW5rU3VwZXJTY3JpcHRDb2RlXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICAvL3N1YnNjcmlwdCBjb2RlXHJcbiAgc2hyaW5rU3ViU2NyaXB0Q29kZSA9IChpbnB1dDogYW55KSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBsZXQgZHVwcmVzdWx0ID0gaW5wdXQ7XHJcbiAgICAgIGxldCBhID0gaW5wdXQuc3BsaXQoJzxzdWI+Jyk7XHJcblxyXG4gICAgICAvLyBzZWFyY2ggZm9yIHBhdHRlcm4gaW4gYVxyXG4gICAgICBsZXQgY291bnQgPSBhLmxlbmd0aCAtIDE7XHJcblxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcclxuICAgICAgICAvLyBpZiBtYXRjaCBmb3VuZCBpbmNyZWFzZSBjb3VudFxyXG4gICAgICAgIGxldCBzdGFydCA9ICc8c3ViPic7XHJcbiAgICAgICAgbGV0IGVuZCA9ICc8L3N1Yj4nO1xyXG4gICAgICAgIGxldCBzdGFydEluZGV4ID0gZHVwcmVzdWx0LmluZGV4T2Yoc3RhcnQpICsgc3RhcnQubGVuZ3RoO1xyXG4gICAgICAgIGxldCBlbmRJbmRleCA9IGR1cHJlc3VsdC5pbmRleE9mKGVuZCwgc3RhcnRJbmRleCk7XHJcbiAgICAgICAgbGV0IGV4dHJhY3RlZFZhbHVlID0gJyc7XHJcblxyXG4gICAgICAgIGlmIChzdGFydEluZGV4ICE9IC0xICYmIGVuZEluZGV4ICE9IC0xKSB7XHJcbiAgICAgICAgICBleHRyYWN0ZWRWYWx1ZSA9IGR1cHJlc3VsdC5zdWJzdHJpbmcoc3RhcnRJbmRleCwgZW5kSW5kZXgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgc3RyaW5nTnVtYmVyID0gdGhpcy5zdWJzY3JpcHROdW1iZXJzKGV4dHJhY3RlZFZhbHVlKTtcclxuXHJcbiAgICAgICAgbGV0IHJlc3VsdCA9ICdUaGUgbnVtYmVyICcgKyBzdHJpbmdOdW1iZXIgKyAnIGlzIHN1cGVyc2NyaXB0ZWQuJztcclxuICAgICAgICAvLyBkdXByZXN1bHQgPSBkdXByZXN1bHQucmVwbGFjZSgvPHN1cD4uKjxcXC9zdXA+LywgJzxzdXA+PC9zdXA+Jyk7XHJcbiAgICAgICAgLy8gZHVwcmVzdWx0ID0gZHVwcmVzdWx0LnJlcGxhY2VGaXJzdChcIlxcXFw8c3VwPi4qP1xcXFw8L3N1cD5cIiwgXCI8c3VwPlwiICsgXCJcIiArIFwiPC9zdXA+XCIpO1xyXG4gICAgICAgIGR1cHJlc3VsdCA9IGR1cHJlc3VsdC5yZXBsYWNlKFxyXG4gICAgICAgICAgJzxzdWI+JyArIGV4dHJhY3RlZFZhbHVlICsgJzwvc3ViPicsXHJcbiAgICAgICAgICBzdHJpbmdOdW1iZXJcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBkdXByZXN1bHQ7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNocmlua1N1YlNjcmlwdENvZGVcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGNvbnZlcnRUb1N1cGVyc2NyaXB0ID0gKGlucHV0OiBhbnkpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHN1cGVyc2NyaXB0RGlnaXRzOiBhbnkgPSB7XHJcbiAgICAgICAgJzAnOiAnXFx1MjA3MCcsXHJcbiAgICAgICAgJzEnOiAnXFx1MDBCOScsXHJcbiAgICAgICAgJzInOiAnXFx1MDBCMicsXHJcbiAgICAgICAgJzMnOiAnXFx1MDBCMycsXHJcbiAgICAgICAgJzQnOiAnXFx1MjA3NCcsXHJcbiAgICAgICAgJzUnOiAnXFx1MjA3NScsXHJcbiAgICAgICAgJzYnOiAnXFx1MjA3NicsXHJcbiAgICAgICAgJzcnOiAnXFx1MjA3NycsXHJcbiAgICAgICAgJzgnOiAnXFx1MjA3OCcsXHJcbiAgICAgICAgJzknOiAnXFx1MjA3OScsXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBsZXQgb3V0cHV0ID0gJyc7XHJcbiAgICAgIGZvciAobGV0IGNoYXIgb2YgaW5wdXQpIHtcclxuICAgICAgICBpZiAoY2hhciBpbiBzdXBlcnNjcmlwdERpZ2l0cykge1xyXG4gICAgICAgICAgb3V0cHV0ICs9IHN1cGVyc2NyaXB0RGlnaXRzW2NoYXJdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBvdXRwdXQgKz0gY2hhcjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG91dHB1dDtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiY29udmVydFRvU3VwZXJzY3JpcHRcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIHN1YnNjcmlwdE51bWJlcnMoc3RyOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBzdWJzY3JpcHRzOiBhbnkgPSB7XHJcbiAgICAgICAgJzAnOiAnXFx1MjA4MCcsXHJcbiAgICAgICAgJzEnOiAnXFx1MjA4MScsXHJcbiAgICAgICAgJzInOiAnXFx1MjA4MicsXHJcbiAgICAgICAgJzMnOiAnXFx1MjA4MycsXHJcbiAgICAgICAgJzQnOiAnXFx1MjA4NCcsXHJcbiAgICAgICAgJzUnOiAnXFx1MjA4NScsXHJcbiAgICAgICAgJzYnOiAnXFx1MjA4NicsXHJcbiAgICAgICAgJzcnOiAnXFx1MjA4NycsXHJcbiAgICAgICAgJzgnOiAnXFx1MjA4OCcsXHJcbiAgICAgICAgJzknOiAnXFx1MjA4OScsXHJcbiAgICAgIH07XHJcblxyXG4gICAgICB2YXIgcmVzdWx0ID0gJyc7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHN1YnNjcmlwdHNbc3RyW2ldXSkge1xyXG4gICAgICAgICAgcmVzdWx0ICs9IHN1YnNjcmlwdHNbc3RyW2ldXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVzdWx0ICs9IHN0cltpXTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic3Vic2NyaXB0TnVtYmVyc1wiKTtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRBdXRob3JpdHlMYWJlbChzdGF0ZU5hbWU6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIHN0YXRlID0gdGhpcy5nZXRTdGF0ZUNvZGVGcm9tU3RhdGVOYW1lKHN0YXRlTmFtZSk7XHJcbiAgICAgIHN3aXRjaCAoc3RhdGUudG9VcHBlckNhc2UoKSkge1xyXG4gICAgICAgIGNhc2UgJ05TVyc6XHJcbiAgICAgICAgICByZXR1cm4gJ0FwcHJvdmFsIE51bWJlcic7XHJcbiAgICAgICAgY2FzZSAnUUxEJzpcclxuICAgICAgICAgIHJldHVybiAnQXBwcm92YWwgTnVtYmVyJztcclxuICAgICAgICBjYXNlICdTQSc6XHJcbiAgICAgICAgICByZXR1cm4gJ0FwcHJvdmFsIE51bWJlcic7XHJcbiAgICAgICAgY2FzZSAnVEFTJzpcclxuICAgICAgICAgIHJldHVybiAnQXBwcm92YWwgTnVtYmVyJztcclxuICAgICAgICBjYXNlICdWSUMnOlxyXG4gICAgICAgICAgcmV0dXJuICdBcHByb3ZhbCBOdW1iZXInO1xyXG4gICAgICAgIGNhc2UgJ1dBJzpcclxuICAgICAgICAgIHJldHVybiAnQXBwcm92YWwgTnVtYmVyJztcclxuICAgICAgICBjYXNlICdBQ1QnOlxyXG4gICAgICAgICAgcmV0dXJuICdBcHByb3ZhbCBOdW1iZXInO1xyXG4gICAgICAgIGNhc2UgJ05UJzpcclxuICAgICAgICAgIHJldHVybiAnQXBwcm92YWwgTnVtYmVyJztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgcmV0dXJuICdBcHByb3ZhbCBOdW1iZXInO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldEF1dGhvcml0eUxhYmVsXCIpO1xyXG4gICAgICByZXR1cm4gc3RhdGVOYW1lO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0U3RhdGVBdXRob3JpdHlMYWJlbChzdGF0ZU5hbWU6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIHN0YXRlID0gdGhpcy5nZXRTdGF0ZUNvZGVGcm9tU3RhdGVOYW1lKHN0YXRlTmFtZSk7XHJcbiAgICAgIHN3aXRjaCAoc3RhdGUudG9VcHBlckNhc2UoKSkge1xyXG4gICAgICAgIGNhc2UgJ05TVyc6XHJcbiAgICAgICAgICByZXR1cm4gJ0F1dGhvcmlzYXRpb24gbnVtYmVyJztcclxuICAgICAgICBjYXNlICdRTEQnOlxyXG4gICAgICAgICAgcmV0dXJuICdBcHByb3ZhbCBudW1iZXInO1xyXG4gICAgICAgIGNhc2UgJ1NBJzpcclxuICAgICAgICAgIHJldHVybiAnUGVybWl0IG51bWJlcic7XHJcbiAgICAgICAgY2FzZSAnVEFTJzpcclxuICAgICAgICAgIHJldHVybiAnQXV0aG9yaXR5IG51bWJlcic7XHJcbiAgICAgICAgY2FzZSAnVklDJzpcclxuICAgICAgICAgIHJldHVybiAnV2FycmFudCBudW1iZXInO1xyXG4gICAgICAgIGNhc2UgJ1dBJzpcclxuICAgICAgICAgIHJldHVybiAnQXV0aG9yaXR5IG51bWJlcic7XHJcbiAgICAgICAgY2FzZSAnQUNUJzpcclxuICAgICAgICAgIHJldHVybiAnQXBwcm92YWwgbnVtYmVyJztcclxuICAgICAgICBjYXNlICdOVCc6XHJcbiAgICAgICAgICByZXR1cm4gJ0F1dGhvcmlzYXRpb24gbnVtYmVyJztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgcmV0dXJuICdBdXRob3Jpc2F0aW9uIG51bWJlcic7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0U3RhdGVBdXRob3JpdHlMYWJlbFwiKTtcclxuICAgICAgcmV0dXJuIHN0YXRlTmFtZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEV4dGVtcFRUUE5hbWUoc2VsZWN0ZWRGb3JtdWxhdGlvbjogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uKSAhPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXQpICYmIHNlbGVjdGVkRm9ybXVsYXRpb24uYW10Lmxlbmd0aCAhPSAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBwcykgJiYgc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBwcy5sZW5ndGggIT0gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHNbMF0udHBwTmFtZSkpIHtcclxuICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24uaXRlbVN0cmVuZ3RoUXVhbnRpdHludW1iZXJPZlBhY2spICYmIHNlbGVjdGVkRm9ybXVsYXRpb24uaXRlbVN0cmVuZ3RoUXVhbnRpdHludW1iZXJPZlBhY2sgIT0gMCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5sZW1pID09IHRydWUpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBwc1swXS50cHBOYW1lO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBwc1swXS50cHBOYW1lICsgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbi5pdGVtU3RyZW5ndGhRdWFudGl0eSkgPyAnIFsnICsgc2VsZWN0ZWRGb3JtdWxhdGlvbi5pdGVtU3RyZW5ndGhRdWFudGl0eSArICddJyArICcgeCAnIDogXCJcIikgKyBzZWxlY3RlZEZvcm11bGF0aW9uLml0ZW1TdHJlbmd0aFF1YW50aXR5bnVtYmVyT2ZQYWNrKS50cmltKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmxlbWkgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cHBzWzBdLnRwcE5hbWU7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChzZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cHBzWzBdLnRwcE5hbWUgKyAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uLml0ZW1TdHJlbmd0aFF1YW50aXR5KSA/ICcgWycgKyBzZWxlY3RlZEZvcm11bGF0aW9uLml0ZW1TdHJlbmd0aFF1YW50aXR5ICsgJ10nIDogXCJcIikpLnRyaW0oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uPy5wcm9kdWN0TmFtZSkgPyBzZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lLnRyaW0oKSA6IFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldEV4dGVtcFRUUE5hbWVcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcm91bmREYXRhKHZhbHVlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciByb3VuZF9WYWwgPSBNYXRoLnJvdW5kKHZhbHVlKTtcclxuICAgICAgaWYgKHJvdW5kX1ZhbCA8IDApIHtcclxuICAgICAgICByZXR1cm4gMDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB2YXIgcm91bmRfVmFsMSA9IHJvdW5kX1ZhbC50b1N0cmluZygpO1xyXG4gICAgICAgIC8vIHJvdW5kX1ZhbCA9IHBhcnNlSW50KHJvdW5kX1ZhbDEsMTApO1xyXG4gICAgICAgIHJldHVybiByb3VuZF9WYWwxO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInJvdW5kRGF0YVwiKTtcclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlcnhNZWRpY2FyZUNhcmQobWVkaWNhcmVOdW1iZXI6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIG1lZGljYXJlQ2FyZCA9ICcnO1xyXG4gICAgICBtZWRpY2FyZUNhcmQgPSBtZWRpY2FyZU51bWJlci5zbGljZSgwLCAxMCk7XHJcbiAgICAgIHJldHVybiBtZWRpY2FyZUNhcmQ7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImVyeE1lZGljYXJlQ2FyZFwiKTtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlcnhNZWRpY2FyZUlSTihtZWRpY2FyZU51bWJlcjogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgbWVkaWNhcmVDYXJkSVJOID0gJyc7XHJcbiAgICAgIG1lZGljYXJlQ2FyZElSTiA9IG1lZGljYXJlTnVtYmVyLnNsaWNlKC0xKTtcclxuICAgICAgcmV0dXJuIG1lZGljYXJlQ2FyZElSTjtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZXJ4TWVkaWNhcmVJUk5cIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0VW51c3VhbFF0eUZsYWcoc0Zvcm11bGF0aW9uOiBhbnksIHF1YW50aXR5VmFsOiBhbnksIFByZXNjcmliZUFTOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChQcmVzY3JpYmVBUy50b0xvd2VyQ2FzZSgpID09ICdwYnMnIHx8IFByZXNjcmliZUFTLnRvTG93ZXJDYXNlKCkgPT0gJ3JwYnMnKSB7XHJcbiAgICAgICAgaWYgKHNGb3JtdWxhdGlvbi5tYXhRdHlVbml0cyAhPSBxdWFudGl0eVZhbCkge1xyXG4gICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gMTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZXRVbnVzdWFsUXR5RmxhZ1wiKTtcclxuICAgICAgcmV0dXJuIDE7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL3N0YXRlIG5hbWUgZnJvbSBhZGRyZXNzXHJcbiAgZ2V0U3RhdGVDb2RlRnJvbVN0YXRlTmFtZShzdGF0ZU5hbWU6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgc3dpdGNoIChzdGF0ZU5hbWUudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgIGNhc2UgJ25ldyBzb3V0aCB3YWxlcyc6XHJcbiAgICAgICAgICByZXR1cm4gJ05TVyc7XHJcbiAgICAgICAgY2FzZSAncXVlZW5zbGFuZCc6XHJcbiAgICAgICAgICByZXR1cm4gJ1FMRCc7XHJcbiAgICAgICAgY2FzZSAnc291dGggYXVzdHJhbGlhJzpcclxuICAgICAgICAgIHJldHVybiAnU0EnO1xyXG4gICAgICAgIGNhc2UgJ3Rhc21hbmlhJzpcclxuICAgICAgICAgIHJldHVybiAnVEFTJztcclxuICAgICAgICBjYXNlICd2aWN0b3JpYSc6XHJcbiAgICAgICAgICByZXR1cm4gJ1ZJQyc7XHJcbiAgICAgICAgY2FzZSAnd2VzdGVybiBhdXN0cmFsaWEnOlxyXG4gICAgICAgICAgcmV0dXJuICdXQSc7XHJcbiAgICAgICAgY2FzZSAnYXVzdHJhbGlhbiBjYXBpdGFsIHRlcnJpdG9yeSc6XHJcbiAgICAgICAgICByZXR1cm4gJ0FDVCc7XHJcbiAgICAgICAgY2FzZSAnbm9ydGhlcm4gdGVycml0b3J5JzpcclxuICAgICAgICAgIHJldHVybiAnTlQnO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICByZXR1cm4gc3RhdGVOYW1lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldFN0YXRlQ29kZUZyb21TdGF0ZU5hbWVcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0R2VuZGVyKGdlbmRlcjogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgZ2VuZGVyVGV4dCA9ICdOb3QgQXZhaWxhYmxlJztcclxuICAgICAgZ2VuZGVyVGV4dCA9XHJcbiAgICAgICAgZ2VuZGVyLnRvTG93ZXJDYXNlKCkgPT0gJ20nID8gJ01hbGUnIDogZ2VuZGVyLnRvTG93ZXJDYXNlKCkgPT0gJ2YnID8gJ0ZlbWFsZScgOiAnTm90IEF2YWlsYWJsZSc7XHJcbiAgICAgIHJldHVybiBnZW5kZXJUZXh0O1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRHZW5kZXJcIik7XHJcbiAgICAgIHJldHVybiAnTm90IEF2YWlsYWJsZSc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRHZW5kZXJDb2RlKGdlbmRlcjogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgZ2VuZGVyQ29kZSA9ICdOb3QgQXZhaWxhYmxlJztcclxuICAgICAgZ2VuZGVyQ29kZSA9IGdlbmRlci50b0xvd2VyQ2FzZSgpID09ICdtJyA/ICdNJyA6IGdlbmRlci50b0xvd2VyQ2FzZSgpID09ICdmJyA/ICdGJyA6ICdVJztcclxuICAgICAgcmV0dXJuIGdlbmRlckNvZGU7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldEdlbmRlckNvZGVcIik7XHJcbiAgICAgIHJldHVybiAnVSc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwYWQodmFsdWU6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgcmV0dXJuIHZhbHVlIDwgMTAgPyAnMCcgKyB2YWx1ZSA6IHZhbHVlO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJwYWRcIik7XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldE9mZnNldCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBkYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgLy8gdmFyIGRhdGUgPSB0aGlzLnN0YXRlLnN0YXJ0RGF0ZTtcclxuICAgICAgdmFyIHNpZ24gPSBkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCkgPiAwID8gJy0nIDogJysnO1xyXG4gICAgICB2YXIgb2Zmc2V0ID0gTWF0aC5hYnMoZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpKTtcclxuICAgICAgdmFyIGhvdXJzID0gdGhpcy5wYWQoTWF0aC5mbG9vcihvZmZzZXQgLyA2MCkpO1xyXG4gICAgICB2YXIgbWludXRlcyA9IHRoaXMucGFkKG9mZnNldCAlIDYwKTtcclxuICAgICAgcmV0dXJuIGhvdXJzICsgJzonICsgbWludXRlcztcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0T2Zmc2V0XCIpO1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBodG1sVG9Gb3JtYXR0ZWRUZXh0KHJlc3RyaWN0aW9uOiBzdHJpbmcpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHJldHVybiByZXN0cmljdGlvbi5yZXBsYWNlKC88YnIgXFwvPi9nLCAnKicpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJodG1sVG9Gb3JtYXR0ZWRUZXh0XCIpO1xyXG4gICAgICByZXR1cm4gcmVzdHJpY3Rpb247XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBicmFuZFN1YnN0aXR1dGVzTm90QWxsb3coQnJhbmRTdWJzdGl0dXRlc05vdEFsbG93OiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuQnJhbmRTdWJzdGl0dXRlc05vdEFsbG93ID0gQnJhbmRTdWJzdGl0dXRlc05vdEFsbG93O1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvd1wiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIFBSTkNoYW5nZShQUk46IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeFBSTiA9IFBSTjtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJQUk5DaGFuZ2VcIik7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgaXNDaGFuZ2VCcmFuZE5hbWUoaXNCcmFuZE5hbWU6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSA9IGlzQnJhbmROYW1lO1xyXG4gICAgICBpZiAoIWlzQnJhbmROYW1lKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5CcmFuZFN1YnN0aXR1dGVzTm90QWxsb3cgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImlzQ2hhbmdlQnJhbmROYW1lXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VuZFRvUGhhcm1hY3lDaGFuZ2UoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3kpXHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZW5kVG9QaGFybWFjeVZhbHVlID0gXCJcIjtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZW5kVG9QaGFybWFjeUNoYW5nZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluY2x1ZGVSdHBtTW9kYWwoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy5pc1J0cG1OZXh0KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl81MC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl81MC5jb2RlKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl81MC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl81MC5tZXNzYWdlKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMpKSB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pICYmIEFycmF5LmlzQXJyYXkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uWydydHBtU3RhdGVzJ10pICYmICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb25bJ3J0cG1TdGF0ZXMnXSBhcyBhbnlbXSkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBsZXQgaXNSdHBtU3RhdGVzID0gKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvblsncnRwbVN0YXRlcyddIGFzIGFueVtdKS5pbmNsdWRlcyh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnN0YXRlKTtcclxuICAgICAgICAgICAgaWYgKGlzUnRwbVN0YXRlcykge1xyXG4gICAgICAgICAgICAgIHZhciBkYXRhID0gXCJUaGUgc2VsZWN0ZWQgZHJ1ZyBjb21lcyB1bmRlciBSZWFsIFRpbWUgUHJlc2NyaXB0aW9uIE1vbml0b3JpbmcgKFJUUE0pIGluIFwiICsgdGhpcy5nZXRTdGF0ZU5hbWVGcm9tU3RhdGVDb2RlKHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuc3RhdGUpICsgXCIuIFBsZWFzZSByZXZpZXcuXCJcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRpYWxvZ29wZW4oUmVhbFRpbWVQcmVzY3JpcHRpb25Nb25pdG9yaW5nQ29tcG9uZW50LCB0aGlzLmNvbnRlbnQsIGRhdGEpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuaXNSdHBtTmV4dCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByZXNjcmliZURyb3Bkb3duKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVEcm9wZG93bigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnByZXNjcmliZURyb3Bkb3duKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlRHJvcGRvd24oKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5wcmVzY3JpYmVEcm9wZG93bigpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImluY2x1ZGVSdHBtTW9kYWxcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBFcHJlc2NyaXBlU2VuZChmbGFnOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5lUHJlc2NyaXB0aW9uVmFsaWRhdGlvbihmbGFnKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0VHlwZSA9ICdFJztcclxuICAgICAgICB0aGlzLnNlbGVjdFBCVE5Ecm9wZG93biA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuYWJvcnRkaXNhYmxlID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKGZsYWcgPT0gMikge1xyXG4gICAgICAgICAgdGhpcy5pc2VwcmlzY3JpYmVwcmludCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICBpZiAodGhpcy5zaG93QXV0aG9yaXR5Qm94KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMsIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMsIHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHksIHRoaXMuY29tbW9uU2VydmljZXMudW5saXN0ZWRSQSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUy50b0xvd2VyQ2FzZSgpID09PSBcInBic1wiICYmIHRoaXMuZ2V0U3RhdGVDb2RlRnJvbVN0YXRlTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnN0YXRlKS50b1VwcGVyQ2FzZSgpID09IFwiTlNXXCIpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihQYXNzd29yZENvbXBvbmVudCwgdGhpcy5jb250ZW50LCAxKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3kgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuZW1lcmdlbmN5U3VwcGx5ICYmIGZsYWcgIT0gMikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5Db25maXJtUGF0aWVudFBvcHVwKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5BZGRyZXNzU2VuZFRvQWRkVHlwZSA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4bnVtYmVyID0gXCJcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhlbWFpbElkID0gXCJcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNQcmludEF2YWlsYWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByZXNjcmliZU1lZCgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5ICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLmVtZXJnZW5jeVN1cHBseSAmJiBmbGFnICE9IDIpIHtcclxuICAgICAgICAgICAgdGhpcy5Db25maXJtUGF0aWVudFBvcHVwKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5BZGRyZXNzU2VuZFRvQWRkVHlwZSA9IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhudW1iZXIgPSBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4ZW1haWxJZCA9IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNQcmludEF2YWlsYWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdmFyIHNjaGVkdWxlTnVtYmVyID0gIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0ID8gKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wb2lzb25DbGFzc2lmaWNhdGlvbikgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24ucG9pc29uQ2xhc3NlcykgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uLnBvaXNvbkNsYXNzZXMubGVuZ3RoICE9IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24ucG9pc29uQ2xhc3Nlc1swXSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24ucG9pc29uQ2xhc3Nlc1swXS50b0xvd2VyQ2FzZSgpID09ICd1bnNjaGVkdWxlZCcgPyAnJyA6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wb2lzb25DbGFzc2lmaWNhdGlvbi5wb2lzb25DbGFzc2VzWzBdIDogJycpIDogXCJcIjtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCAmJiBzY2hlZHVsZU51bWJlci50b0xvd2VyQ2FzZSgpID09ICdzOCcgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLmlzUGFzc3dvcmRDaGVjaykge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihQYXNzd29yZENvbXBvbmVudCwgdGhpcy5jb250ZW50LCAyKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlQ29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJlc2NyaWJlTWVkKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVNZWQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIkVwcmVzY3JpcGVTZW5kXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgUGFwZXJwcmVzY3JpcGVTZW5kKGZsYWc6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHRUeXBlID0gJ00nO1xyXG4gICAgICB0aGlzLnNlbGVjdFBCVE5Ecm9wZG93biA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmFib3J0ZGlzYWJsZSA9IGZhbHNlO1xyXG4gICAgICBpZiAoZmxhZyA9PSAyKSB7XHJcbiAgICAgICAgdGhpcy5pc2VwcmlzY3JpYmVwcmludCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICBpZiAodGhpcy5zaG93QXV0aG9yaXR5Qm94KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMsIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMsIHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHksIHRoaXMuY29tbW9uU2VydmljZXMudW5saXN0ZWRSQSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUy50b0xvd2VyQ2FzZSgpID09PSBcInBic1wiICYmIHRoaXMuZ2V0U3RhdGVDb2RlRnJvbVN0YXRlTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnN0YXRlKS50b1VwcGVyQ2FzZSgpID09IFwiTlNXXCIpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRpYWxvZ29wZW4oUGFzc3dvcmRDb21wb25lbnQsIHRoaXMuY29udGVudCwgMSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5zZW5kVG9QaGFybWFjeSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5lbWVyZ2VuY3lTdXBwbHkgJiYgZmxhZyAhPSAyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuQ29uZmlybVBhdGllbnRQb3B1cCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuQWRkcmVzc1NlbmRUb0FkZFR5cGUgPSBcIlwiO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhudW1iZXIgPSBcIlwiO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhlbWFpbElkID0gXCJcIjtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzUHJpbnRBdmFpbGFibGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB0aGlzLnByZXNjcmliZU1lZCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5ICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLmVtZXJnZW5jeVN1cHBseSAmJiBmbGFnICE9IDIgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5pc1NjcmlwdFRvUGhhcm1hY3kgPT0gMCkge1xyXG4gICAgICAgICAgdGhpcy5Db25maXJtUGF0aWVudFBvcHVwKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5BZGRyZXNzU2VuZFRvQWRkVHlwZSA9IFwiXCI7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4bnVtYmVyID0gXCJcIjtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhlbWFpbElkID0gXCJcIjtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmlzU2NyaXB0VG9QaGFybWFjeSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNQcmludEF2YWlsYWJsZSA9IHRydWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzUHJpbnRBdmFpbGFibGUgPSBmYWxzZTtcclxuICAgICAgICAgIH0gICAgIFxyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdmFyIHNjaGVkdWxlTnVtYmVyID0gIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0ID8gKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wb2lzb25DbGFzc2lmaWNhdGlvbikgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24ucG9pc29uQ2xhc3NlcykgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uLnBvaXNvbkNsYXNzZXMubGVuZ3RoICE9IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24ucG9pc29uQ2xhc3Nlc1swXSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24ucG9pc29uQ2xhc3Nlc1swXS50b0xvd2VyQ2FzZSgpID09ICd1bnNjaGVkdWxlZCcgPyAnJyA6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wb2lzb25DbGFzc2lmaWNhdGlvbi5wb2lzb25DbGFzc2VzWzBdIDogJycpIDogXCJcIjtcclxuICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QgJiYgc2NoZWR1bGVOdW1iZXIudG9Mb3dlckNhc2UoKSA9PSAnczgnICYmIHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy5pc1Bhc3N3b3JkQ2hlY2spIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKFBhc3N3b3JkQ29tcG9uZW50LCB0aGlzLmNvbnRlbnQsIDIpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlQ29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByZXNjcmliZU1lZCgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnByZXNjcmliZU1lZCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJFcHJlc2NyaXBlU2VuZFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIENvbmZpcm1QYXRpZW50UG9wdXAoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRpYWxvZ29wZW4oQ29uZmlybVBhdGllbnRDb250YWN0RGV0YWlsc0NvbXBvbmVudCwgdGhpcy5jb250ZW50LCAxKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2UgIT0gbnVsbCkge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnNjaGVkdWxlTnVtYmVyLnRvTG93ZXJDYXNlKCkgPT0gJ3M4JyAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMuaXNQYXNzd29yZENoZWNrKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihQYXNzd29yZENvbXBvbmVudCwgdGhpcy5jb250ZW50LCAyKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc1ByaW50QXZhaWxhYmxlID0gcmVzcG9uc2UuaXNQcmludEF2YWlsYWJsZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuQWRkcmVzc1NlbmRUb0FkZFR5cGUgPSByZXNwb25zZS5BZGRyZXNzU2VuZFRvQWRkVHlwZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhudW1iZXIgPSByZXNwb25zZS5yeG51bWJlcjtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhlbWFpbElkID0gcmVzcG9uc2UucnhlbWFpbElkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVNZWQoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc1ByaW50QXZhaWxhYmxlID0gcmVzcG9uc2UuaXNQcmludEF2YWlsYWJsZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5BZGRyZXNzU2VuZFRvQWRkVHlwZSA9IHJlc3BvbnNlLkFkZHJlc3NTZW5kVG9BZGRUeXBlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4bnVtYmVyID0gcmVzcG9uc2UucnhudW1iZXI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhlbWFpbElkID0gcmVzcG9uc2UucnhlbWFpbElkO1xyXG4gICAgICAgICAgICB0aGlzLnByZXNjcmliZU1lZCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdFR5cGUgPSAnJztcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNQcmludEF2YWlsYWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5BZGRyZXNzU2VuZFRvQWRkVHlwZSA9IFwiXCI7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4bnVtYmVyID0gXCJcIjtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhlbWFpbElkID0gXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJDb25maXJtUGF0aWVudFBvcHVwXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJlc2NyaXBlUHJpbnQoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoKHRoaXMuY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmlwdGlvbiA9PT0gdHJ1ZSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzPy5zY3JpcHRUeXBlKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLnRvVXBwZXJDYXNlKCkgPT0gJ00nICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHM/LnN0YXR1cykgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzLnRvTG93ZXJDYXNlKCkgIT0gJ2RyYWZ0JykgfHwgKHRoaXMuY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmlwdGlvbiA9PT0gdHJ1ZSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzPy5zY3JpcHRUeXBlKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLnRvVXBwZXJDYXNlKCkgPT0gJ0UnKSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmFib3J0ZGlzYWJsZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdFR5cGUgPSAnTSc7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNQcmludEF2YWlsYWJsZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuQWRkcmVzc1NlbmRUb0FkZFR5cGUgPSBcIlNNU1wiO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHZhciBzY2hlZHVsZU51bWJlciA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCA/ICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24pICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uLnBvaXNvbkNsYXNzZXMpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wb2lzb25DbGFzc2lmaWNhdGlvbi5wb2lzb25DbGFzc2VzLmxlbmd0aCAhPSAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uLnBvaXNvbkNsYXNzZXNbMF0pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uLnBvaXNvbkNsYXNzZXNbMF0udG9Mb3dlckNhc2UoKSA9PSAndW5zY2hlZHVsZWQnID8gJycgOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24ucG9pc29uQ2xhc3Nlc1swXSA6ICcnKSA6IFwiXCI7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QgJiYgc2NoZWR1bGVOdW1iZXIudG9Mb3dlckNhc2UoKSA9PSAnczgnICYmIHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy5pc1Bhc3N3b3JkQ2hlY2spIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRpYWxvZ29wZW4oUGFzc3dvcmRDb21wb25lbnQsIHRoaXMuY29udGVudCwyKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlQ29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMucHJlc2NyaWJlTWVkKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5wcmVzY3JpYmVNZWQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJwcmVzY3JpcGVQcmludFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluZGljYXRpb25BdXRob3JpdHkobWF4UXR5VW5pdHM6IGFueSwgcXVhbnRpdHlWYWw6IGFueSwgcmVwZWF0czogYW55LCByZXBlYXRzVmFsOiBhbnksIGluZGV4OiBhbnksIHJlc3RyaWN0aW9uOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cykgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzLnRvTG93ZXJDYXNlKCkgPT0gJ3ByZXNjcmliZWQnICYmIHRoaXMuY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24pIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zID0gJyc7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdmFyIHRlbXBEaXZFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIHZhciByZXBsYWNldmFsdWUgPSB0aGlzLmh0bWxUb0Zvcm1hdHRlZFRleHQocmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25UZXh0KTtcclxuICAgICAgdGVtcERpdkVsZW1lbnQuaW5uZXJIVE1MID0gcmVwbGFjZXZhbHVlO1xyXG4gICAgICB2YXIgdmFsdWUgPSB0ZW1wRGl2RWxlbWVudC50ZXh0Q29udGVudCB8fCB0ZW1wRGl2RWxlbWVudC5pbm5lclRleHQgfHwgJyc7XHJcbiAgICAgIGlmICgoIXRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlXaXRoVW5pdEZsYWcgPyBwYXJzZUZsb2F0KG1heFF0eVVuaXRzKSA6IDEpIDwgcGFyc2VJbnQocXVhbnRpdHlWYWwpIHx8IHBhcnNlSW50KHJlcGVhdHMpIDwgcGFyc2VJbnQocmVwZWF0c1ZhbCkpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnMgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnNJZCA9IGluZGV4O1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuYXBwcm92YWxObyA9ICcnO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnMgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnNJZCA9IGluZGV4O1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuYXBwcm92YWxObyA9IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiAhPSBudWxsID8gcmVzdHJpY3Rpb24uc3RyZWFtbGluZWRDb2RlIDogJyc7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImluZGljYXRpb25BdXRob3JpdHlcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRNYXhRdWFudGl0eSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucGJzVHlwZSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic1R5cGUudG9Mb3dlckNhc2UoKSA9PSBcIm5vbiBwYnNcIikge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubnVtYmVyT2ZQYWNrICsgXCJ4XCIgKyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24udW5pdFBlclBhY2s7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0ICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5udW1iZXJPZlBhY2spICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ubnVtYmVyT2ZQYWNrICE9IDApIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubnVtYmVyT2ZQYWNrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/Lm1heFF0eVVuaXRzKSlcclxuICAgICAgICAgIHJldHVybiAodGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVdpdGhVbml0RmxhZyA/IFwiMSB4IFwiIDogXCJcIikgKyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHNcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRNYXhRdWFudGl0eVwiKTtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXREZWZhdWx0UXVhbnRpdHkoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/Lm51bWJlck9mUGFjaykgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5udW1iZXJPZlBhY2sgIT0gMCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubnVtYmVyT2ZQYWNrO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ubWF4UXR5VW5pdHMpKSB7XHJcbiAgICAgICAgcmV0dXJuICh0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5V2l0aFVuaXRGbGFnID8gXCIxIHggXCIgOiBcIlwiKSArIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tYXhRdHlVbml0c1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXREZWZhdWx0UXVhbnRpdHlcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIG9uSW5wdXRDaGFuZ2UobmV3VmFsdWU6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zID0gbmV3VmFsdWU7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwib25JbnB1dENoYW5nZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uSW5wdXRjaGFuZ2VBcHByb3ZhbE5vKG5ld1ZhbHVlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5hcHByb3ZhbE5vID0gbmV3VmFsdWUucmVwbGFjZSgvW15hLXpBLVogMC05XS9nLCBcIlwiKS5yZXBsYWNlKC9cXHMrL2csIFwiXCIpO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIm9uSW5wdXRjaGFuZ2VBcHByb3ZhbE5vXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0QWRkQXV0aFZhbHVlKG51bTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShudW0pKSB7XHJcbiAgICAgICAgY29uc3QgYXJyT2ZEaWdpdHMgPSBBcnJheS5mcm9tKFN0cmluZyhudW0pLCBOdW1iZXIpO1xyXG4gICAgICAgIGxldCB2YWx1ZU9mQXV0aG9yaXR5QXJyID0gdGhpcy5hZGRBdXRoVmFsdWUoYXJyT2ZEaWdpdHMpO1xyXG4gICAgICAgIGxldCBnZXRSZW1haW5kZXJWYWx1ZSA9IHZhbHVlT2ZBdXRob3JpdHlBcnIgJSA5O1xyXG4gICAgICAgIGxldCBhZGRSZW1haW5kZXJWYWx1ZUF0TGFzdCA9ICcnICsgbnVtICsgZ2V0UmVtYWluZGVyVmFsdWUudG9GaXhlZCgpO1xyXG4gICAgICAgIHJldHVybiBhZGRSZW1haW5kZXJWYWx1ZUF0TGFzdDtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRBZGRBdXRoVmFsdWVcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkQXV0aFZhbHVlKGFyck9mRGlnaXRzOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGxldCBhZGRlZFZhbHVlID0gMDtcclxuICAgICAgYXJyT2ZEaWdpdHMubWFwKChudW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGFkZGVkVmFsdWUgPSBudW0gKyBhZGRlZFZhbHVlO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIGFkZGVkVmFsdWU7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImFkZEF1dGhWYWx1ZVwiKTtcclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL3RoZSBiZWxvdyBjb2RlIHdpbGwgaGl0IHRoZSBlUlggYW5kIHJldHVybiB0aGUgdmFsdWUgd2l0aCBiYXJjb2RlXHJcbiAgcHJlc2NyaWJlTWVkKCkge1xyXG4gICAgdmFyIGJvZHkgPSB7fTtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLnNob3dBdXRob3JpdHlCb3godGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucywgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUywgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEF1dGhvcml0eSwgdGhpcy5jb21tb25TZXJ2aWNlcy51bmxpc3RlZFJBKSA9PSB0cnVlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8pKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl81My5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl81My5jb2RlKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl81My5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl81My5tZXNzYWdlKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0VHlwZS50b0xvd2VyQ2FzZSgpID09IFwiZVwiKSB7XHJcbiAgICAgICAgdGhpcy5hYm9ydEJ0bkZsYWcgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2VsZWN0UEJUTkRyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSB0cnVlO1xyXG4gICAgICB2YXIgcGF0aWVudERldGFpbHMgPSB0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzO1xyXG4gICAgICB2YXIgcGh5c2ljaWFuRGV0YWlscyA9IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscztcclxuICAgICAgdmFyIHNlbGVjdGVkRm9ybXVsYXRpb24gPSB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb247XHJcbiAgICAgIHZhciBtZWRpY2FyZUNhcmQgPSAnJztcclxuICAgICAgaWYgKHBhdGllbnREZXRhaWxzLm1lZGljYXJlTnVtYmVyKSB7XHJcbiAgICAgICAgdmFyIG1lZE5vMSA9IHBhdGllbnREZXRhaWxzLm1lZGljYXJlTnVtYmVyLnJlcGxhY2UoLyAvZywgJycpO1xyXG4gICAgICAgIG1lZE5vMSA9IG1lZE5vMS5yZXBsYWNlKC9fL2csICcnKTtcclxuICAgICAgICBtZWRObzEgPSBtZWRObzEucmVwbGFjZSgvLS9nLCAnJyk7XHJcbiAgICAgICAgbWVkaWNhcmVDYXJkID0gbWVkTm8xO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBwYnNNYW51ZmFjdHVyZXJDb2RlU2V0ID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24/LnBic01hbnVmYWN0dXJlckNvZGVzKSAmJiBzZWxlY3RlZEZvcm11bGF0aW9uLnBic01hbnVmYWN0dXJlckNvZGVzLmxlbmd0aCAhPSAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNNYW51ZmFjdHVyZXJDb2Rlc1swXSkgPyBzZWxlY3RlZEZvcm11bGF0aW9uLnBic01hbnVmYWN0dXJlckNvZGVzWzBdIDogJyc7XHJcbiAgICAgIGxldCBjaGVja0F1dGhvcml0eUJveCA9IHRoaXMuc2hvd0F1dGhvcml0eUJveChzZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucywgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUywgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEF1dGhvcml0eSwgdGhpcy5jb21tb25TZXJ2aWNlcy51bmxpc3RlZFJBKTtcclxuICAgICAgYm9keSA9IHtcclxuICAgICAgICBpc1Nob3dBdXRob3JpdHk6IHRoaXMuY29tbW9uU2VydmljZXMuaXNTaG93QXV0aG9yaXR5LFxyXG4gICAgICAgIHBic0xpc3RJbnN0cnVjdGlvbnM6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zKSA/IHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9ucyA6IFwiXCIsXHJcbiAgICAgICAgaXNCcmFuZE5hbWU6IHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUsXHJcbiAgICAgICAgaW5jbHVkZUJyYW5kRmxhZzogdGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSxcclxuICAgICAgICByZXN0cmljdGVkUGJzU2VsZWN0ZWRJbmRleDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnNJZCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnNJZCArIDEgOiAnJyxcclxuICAgICAgICByeElkOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhpZCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4aWQgOiAnJyxcclxuICAgICAgICBtQVBhdGllbnRJZDogdGhpcy5jb21tb25TZXJ2aWNlcy52ZW5kb3JQYXRpZW50SWQsXHJcbiAgICAgICAgbUFQaGFybWFjaXN0SWQ6IHRoaXMuY29tbW9uU2VydmljZXMudmVuZG9yUGh5c2ljaWFuSWQsXHJcbiAgICAgICAgbUFGYWNpbGl0eUlkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnZlbmRvckZhY2lsaXR5SWQsXHJcbiAgICAgICAgcHJpdmFjeVN0YXRlbWVudDogdGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHRUeXBlLnRvTG93ZXJDYXNlKCkgPT0gJ2UnID8gMCA6IDEsXHJcbiAgICAgICAgaHBpSTogcGh5c2ljaWFuRGV0YWlscy5ocGlpTnVtYmVyLFxyXG4gICAgICAgIHByZXNjcmliZXJOdW1iZXI6IHBoeXNpY2lhbkRldGFpbHMucHJlc2NyaWJlck51bWJlcixcclxuICAgICAgICBwcmVzY3JpYmVyQWhwcmFOdW1iZXI6IHBoeXNpY2lhbkRldGFpbHMucHJlc2NyaWJlckFocHJhTnVtYmVyLFxyXG4gICAgICAgIHByZXNjcmliZXJHaXZlbk5hbWVzOiBwaHlzaWNpYW5EZXRhaWxzLmZpcnN0TmFtZSxcclxuICAgICAgICBwcmVzY3JpYmVyRmFtaWx5TmFtZTogcGh5c2ljaWFuRGV0YWlscy5sYXN0TmFtZSxcclxuICAgICAgICBwcmVzY3JpYmVySG9tZU1vYmlsZTogcGh5c2ljaWFuRGV0YWlscy5tb2JpbGVQaG9uZSxcclxuICAgICAgICBwcmVzY3JpYmVySG9tZUVtYWlsOiBwaHlzaWNpYW5EZXRhaWxzLmVtYWlsLFxyXG4gICAgICAgIG9yZ0hwaU86ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMuaHBpb051bWJlcikgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5ocGlvTnVtYmVyIDogJycsXHJcbiAgICAgICAgb3JnTmFtZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdOYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ05hbWUgOiAnJyxcclxuICAgICAgICBvcmdFbWFpbDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdFbWFpbCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdFbWFpbCA6ICcnLFxyXG4gICAgICAgIG9yZ1Bvc3RhbEFkZHJlc3NMaW5lMTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzTGluZTEpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUG9zdGFsQWRkcmVzc0xpbmUxIDogJycsXHJcbiAgICAgICAgb3JnUG9zdGFsQWRkcmVzc0xpbmUyOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NMaW5lMikgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzTGluZTIgOiAnJyxcclxuICAgICAgICBvcmdQb3N0YWxBZGRyZXNzU3VidXJiOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NTdWJ1cmIpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUG9zdGFsQWRkcmVzc1N1YnVyYiA6ICcnLFxyXG4gICAgICAgIG9yZ1Bvc3RhbEFkZHJlc3NQb3N0Q29kZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzUG9zdENvZGUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUG9zdGFsQWRkcmVzc1Bvc3RDb2RlIDogJycsXHJcbiAgICAgICAgb3JnUG9zdGFsQWRkcmVzc1N0YXRlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NTdGF0ZSkgPyB0aGlzLmdldFN0YXRlQ29kZUZyb21TdGF0ZU5hbWUodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUG9zdGFsQWRkcmVzc1N0YXRlKSA6ICcnLFxyXG4gICAgICAgIGloaTogcGF0aWVudERldGFpbHMuaWhpTnVtYmVyLFxyXG4gICAgICAgIG1lZGljYXJlTnVtYmVyOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG1lZGljYXJlQ2FyZCkgPyB0aGlzLmVyeE1lZGljYXJlQ2FyZChtZWRpY2FyZUNhcmQpIDogJycsXHJcbiAgICAgICAgbWVkaWNhcmVJcm46ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkobWVkaWNhcmVDYXJkKSA/IHRoaXMuZXJ4TWVkaWNhcmVJUk4obWVkaWNhcmVDYXJkKSA6ICcnLFxyXG4gICAgICAgIG1lZGljYXJlTnVtYmVyRXhwaXJ5OiBwYXRpZW50RGV0YWlscy5tZWRpY2FyZUV4cGlyeSxcclxuICAgICAgICBkYXRlT2ZCaXJ0aDogdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0ocGF0aWVudERldGFpbHMuZG9iLCAneXl5eS1NTS1kZCcpLFxyXG4gICAgICAgIGZhbWlseU5hbWU6IHBhdGllbnREZXRhaWxzLmxhc3ROYW1lLFxyXG4gICAgICAgIGdpdmVuTmFtZXM6IHBhdGllbnREZXRhaWxzLmZpcnN0TmFtZSxcclxuICAgICAgICBwYXRpZW50VXNlcklkU3RyaW5nOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnBhdGllbnRVc2VySWQsXHJcbiAgICAgICAgdXNlcklkU3RyaW5nOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMudXNlcklkLFxyXG4gICAgICAgIGdlbmRlckNvZGU6IHRoaXMuZ2V0R2VuZGVyQ29kZShwYXRpZW50RGV0YWlscy5nZW5kZXIpLFxyXG4gICAgICAgIGhvbWVNb2JpbGU6IHBhdGllbnREZXRhaWxzLnBob25lLFxyXG4gICAgICAgIGhvbWVFbWFpbDogcGF0aWVudERldGFpbHMuZW1haWwsXHJcbiAgICAgICAgYWRkcmVzc0xpbmUxOiBwYXRpZW50RGV0YWlscy5hZGRyZXNzMSxcclxuICAgICAgICBhZGRyZXNzTGluZTI6IHBhdGllbnREZXRhaWxzLmFkZHJlc3MyLFxyXG4gICAgICAgIGFkZHJlc3NTdWJ1cmI6IHBhdGllbnREZXRhaWxzLmNpdHksXHJcbiAgICAgICAgYWRkcmVzc1Bvc3RDb2RlOiBwYXRpZW50RGV0YWlscy5wb3N0Q29kZSxcclxuICAgICAgICBhZGRyZXNzU3RhdGU6IHRoaXMuZ2V0U3RhdGVDb2RlRnJvbVN0YXRlTmFtZShwYXRpZW50RGV0YWlscy5zdGF0ZSksXHJcbiAgICAgICAgcHJlc2NyaXB0aW9uV3JpdHRlbkRhdGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHREYXRlKSA/IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0RGF0ZSwgJ3l5eXktTU0tZGQnKSA6IFwiXCIsXHJcbiAgICAgICAgZm9ybVRleHQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZG9zYWdlRm9ybSkgPyBzZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0gOiBcIlwiLFxyXG4gICAgICAgIHN0cmVuZ3RoOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24/Lm1vbGVjdWxlU3RyZW5ndGgpID8gc2VsZWN0ZWRGb3JtdWxhdGlvbi5tb2xlY3VsZVN0cmVuZ3RoIDogXCIgXCIsXHJcbiAgICAgICAgZGlyZWN0aW9uczogdGhpcy5nZXREaXJlY3Rpb25zKCksXHJcbiAgICAgICAgYnJhbmRTdWJzdGl0dXRlc05vdEFsbG93ZWQ6IHRoaXMuY29tbW9uU2VydmljZXMuQnJhbmRTdWJzdGl0dXRlc05vdEFsbG93ID09IHRydWUgPyAwIDogMSxcclxuICAgICAgICBtYXhpbXVtTnVtYmVyT2ZSZXBlYXRzOiB0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwsXHJcbiAgICAgICAgbWluaW11bUludGVydmFsQmV0d2VlblJlcGVhdHM6IHRoaXMuY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwgIT0gdW5kZWZpbmVkICYmIHRoaXMuY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwgIT0gbnVsbCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsICE9IFwiXCIgPyBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsKSA6IFwiLTFcIixcclxuICAgICAgICBwYXRpZW50Q3RnRmxhZzogdGhpcy5jb21tb25TZXJ2aWNlcy5DVEdDb1BheW1lbnQgPT0gdHJ1ZSA/IDAgOiAxLFxyXG4gICAgICAgIHBic0l0ZW1Db2RlQ29kZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LnBic0NvZGUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic0NvZGUgOiBcIlwiLFxyXG4gICAgICAgIHBic0l0ZW1Db2RlVGV4dDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LnBic0NvZGVUZXh0KSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNDb2RlVGV4dCA6IFwiXCIsXHJcbiAgICAgICAgcGJzSXRlbU1hbnVmYWN0dXJlcjogdGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSA/IHBic01hbnVmYWN0dXJlckNvZGVTZXQgOiAnJyxcclxuICAgICAgICBzdGF0ZUF1dGhvcml0eU51bWJlcjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLlN0YXRlQXV0aG9yaXR5TnVtYmVyKSA/IHRoaXMuY29tbW9uU2VydmljZXMuU3RhdGVBdXRob3JpdHlOdW1iZXIudHJpbSgpIDogJycsXHJcbiAgICAgICAgcmVhc29uRm9yVGhlcmFwZXV0aWNHb29kOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaXB0aW9uUmVhc29uKSA/IHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaXB0aW9uUmVhc29uLnRyaW0oKSA6ICcnLFxyXG4gICAgICAgIHVudXN1YWxRdHlGbGFnOiB0aGlzLnNldFVudXN1YWxRdHlGbGFnKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiwgdGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbCwgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyksXHJcbiAgICAgICAgcXVhbnRpdHlPZlRoZXJhcGV1dGljR29vZFF1YW50aXR5OiBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsKSxcclxuICAgICAgICBjb21wbGV4SW5zdHJ1Y3Rpb25zOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUudHJpbSgpIDogXCJcIixcclxuICAgICAgICBhbXRNcHBDb2RlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uQU1UTVBQQ29kZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uQU1UTVBQQ29kZSA6IFwiXCIsXHJcbiAgICAgICAgYW10TXBwTmFtZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmFtdCkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdC5sZW5ndGggIT0gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0ubXBwcykgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS5tcHBzLmxlbmd0aCAhPSAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS5tcHBzWzBdLm1wcE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS5tcHBzWzBdLm1wcE5hbWUgOiAnJyxcclxuICAgICAgICBhbXRUcHBDb2RlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uQU1UVFBQQ29kZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uQU1UVFBQQ29kZSA6IFwiXCIsXHJcbiAgICAgICAgYW10VHBwTmFtZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmFtdCkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdC5sZW5ndGggIT0gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBwcykgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cHBzLmxlbmd0aCAhPSAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cHBzWzBdLnRwcE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cHBzWzBdLnRwcE5hbWUgOiAnJyxcclxuICAgICAgICBhbXRUcENvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5BTVRUUENvZGUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLkFNVFRQQ29kZSA6IFwiXCIsXHJcbiAgICAgICAgYW10VHBOYW1lOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uYW10KSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10Lmxlbmd0aCAhPSAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cE5hbWUgOiAnJyxcclxuICAgICAgICBhbXRDb2RlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uYW10KSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXQuYW10Y29kZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10LmFtdGNvZGUgOiAnJyxcclxuICAgICAgICB0aGVyZXBldXRpY0dvb2RJZGVudGlmaWNhdGlvbk1pbXNDb2RlOiAnJyxcclxuICAgICAgICB0aGVyZXBldXRpY0dvb2RJZGVudGlmaWNhdGlvbkxvY2FsQ29kZTogJycsXHJcbiAgICAgICAgLy8gdGhlcmVwZXV0aWNHb29kSWRlbnRpZmljYXRpb25FYW5Db2RlOiBcIlwiLFxyXG4gICAgICAgIHRoZXJlcGV1dGljR29vZElkZW50aWZpY2F0aW9uRWFuVGV4dDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzVHlwZSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic1R5cGUudG9Mb3dlckNhc2UoKSA9PSAnbm9uIHBicycgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lIDogJycsXHJcbiAgICAgICAgcHJlc2NyaWJlck9jY3VwYXRpb25Db2RlOiBwaHlzaWNpYW5EZXRhaWxzLm9jY3VwYXRpb25Db2RlLFxyXG4gICAgICAgIHByZXNjcmliZXJPY2N1cGF0aW9uVGV4dDogcGh5c2ljaWFuRGV0YWlscy5vY2N1cGF0aW9uVGV4dCxcclxuICAgICAgICBwcmVzY3JpYmVyUGVyc29uVGl0bGU6IHBoeXNpY2lhbkRldGFpbHMucHJlZml4LFxyXG4gICAgICAgIHByZXNjcmliZXJRdWFsaWZpY2F0aW9uczogcGh5c2ljaWFuRGV0YWlscy5zdWZmaXgsXHJcbiAgICAgICAgb3JnUGhvbmU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnTW9iaWxlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ01vYmlsZSA6ICcnLFxyXG4gICAgICAgIG9yZ0ZheDogJycsXHJcbiAgICAgICAgbG9jYWxTeXN0ZW1JRDogdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5wYXRpZW50VXNlcklkLFxyXG4gICAgICAgIGFkZHJlc3NTZW5kVG9BZGRUeXBlOiB0aGlzLmNvbW1vblNlcnZpY2VzLkFkZHJlc3NTZW5kVG9BZGRUeXBlLFxyXG4gICAgICAgIGFkZHJlc3NFbWFpbDogdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhlbWFpbElkKSA/IHBhdGllbnREZXRhaWxzLmVtYWlsIDogdGhpcy5jb21tb25TZXJ2aWNlcy5yeGVtYWlsSWQsXHJcbiAgICAgICAgYWRkcmVzc1NtczogdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhudW1iZXIpID8gcGF0aWVudERldGFpbHMucGhvbmUgOiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4bnVtYmVyLFxyXG4gICAgICAgIGdlbmRlclRleHQ6IHRoaXMuZ2V0R2VuZGVyKHBhdGllbnREZXRhaWxzLmdlbmRlciksXHJcbiAgICAgICAgYWRkcmVzc0xpbmUzOiAnJyxcclxuICAgICAgICBwcmVzY3JpcHRpb25Xcml0dGVuVXRjVGltZTogJzAxLTAxLTE5NzAgMDk6MDY6MDknLCAvLyBwcmVzY3JpcHRpb25Xcml0dGVuVXRjVGltZTogbW9tZW50KG5ldyBEYXRlKCkpLmZvcm1hdChcIk1NLURELXl5eXkgaGg6bW06c3NcIiksXHJcbiAgICAgICAgcHJlc2NyaXB0aW9uV3JpdHRlblV0Y09mZnNldDogdGhpcy5nZXRPZmZzZXQoKSxcclxuICAgICAgICBwcmVzY3JpcHRpb25FeHBpcmVzVmFsdWU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5lbmREYXRlKSA/IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuY29tbW9uU2VydmljZXMuZW5kRGF0ZSwgJ01NL2RkL3l5eXknKSA6IFwiXCIsXHJcbiAgICAgICAgYWN0aXZlSW5ncmVkaWVudDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZ2VuZXJpY05hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmdlbmVyaWNOYW1lIDogXCJcIixcclxuICAgICAgICBmb3JtQ29kZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybSA6IFwiXCIsXHJcbiAgICAgICAgZm9ybXVsYTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZm9ybXVsYSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZm9ybXVsYSA6IFwiXCIsXHJcbiAgICAgICAgYWRkaXRpb25hbENvbW1lbnRzOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZG9jdG9yTm90ZXMpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5kb2N0b3JOb3Rlcy50cmltKCkgOiBcIlwiLFxyXG4gICAgICAgIGFzbENvbnNlbnQ6IDEsXHJcbiAgICAgICAgcHJlc2NyaXB0aW9uTm90ZURldGFpbE5vdGU6IHRoaXMuY29tbW9uU2VydmljZXMucHVycG9zZVNlYXJjaFZhbHVlLnRyaW0oKSxcclxuICAgICAgICBkdmFOdW1iZXI6IHBhdGllbnREZXRhaWxzLmR2YU51bWJlcixcclxuICAgICAgICBkdmFUeXBlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuZHZhQ2FyZFR5cGUpICYmIHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuZHZhQ2FyZFR5cGUudG9Mb3dlckNhc2UoKSAhPSAnbm9uZScgPyBwYXRpZW50RGV0YWlscy5kdmFDYXJkVHlwZS5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpIDogJycsXHJcbiAgICAgICAgcGJzQXBwcm92YWxOdW1iZXI6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5hcHByb3ZhbE5vKSA/IHRoaXMuY29tbW9uU2VydmljZXMuYXBwcm92YWxOby50cmltKCkgOiAnJywgLy9pbmZvcm0gdG8gc3RlcGhlblxyXG4gICAgICAgIHJvdXRlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucm91dGVTZWFyY2hWYWx1ZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnJvdXRlU2VhcmNoVmFsdWUudHJpbSgpIDogJycsXHJcbiAgICAgICAgLy9wcm92aWRlck51bWJlcjonJyxcclxuICAgICAgICBwcmVzY3JpYmVyVHlwZTogcGh5c2ljaWFuRGV0YWlscy5wcmVzY3JpYmVyVHlwZSxcclxuICAgICAgICBtZWRpY2luZU5hbWU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5wcm9kdWN0TmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUgOiBcIlwiLFxyXG4gICAgICAgIGJyYW5kTmFtZTogdGhpcy5nZXRCcmFuZE5hbWUodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSxcclxuICAgICAgICBnZW5lcmljTmFtZTogdGhpcy5odG1sVG9UZXh0Q29udmVydCghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uSXNFeHRlbXApICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCA9PSB0cnVlID8gdGhpcy5nZXRFeHRlbXBUVFBOYW1lKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikgOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZ2VuZXJpY05hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmdlbmVyaWNOYW1lIDogdGhpcy5nZXRFeHRlbXBNUFBOYW1lKCkpLFxyXG4gICAgICAgIC8vaXRlbUdlbmVyaWNJbnRlbnRpb246IGdldEl0ZW1HZW5lcmljSW50ZW50aW9uKHRoaXMuc3RhdGUubGVtaSx0aGlzLnN0YXRlLmlzQnJhbmROYW1lLHRoaXMuc3RhdGUuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCA9PSB0cnVlID8gdHJ1ZSA6IGZhbHNlKSxcclxuICAgICAgICBpdGVtR2VuZXJpY0ludGVudGlvbjogdGhpcy5jb21tb25TZXJ2aWNlcy5sZW1pID09IHRydWUgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLklzRXh0ZW1wICE9IHRydWUgPyAnQicgOiAnRycsXHJcbiAgICAgICAgc2NoZWR1bGVOdW1iZXI6IHRoaXMucGF5TG9hZFN0YXRlU2NoZWR1bGVOdW1iZXIodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSAhPSBcIlwiID8gdGhpcy5wYXlMb2FkU3RhdGVTY2hlZHVsZU51bWJlcih0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pIDogdGhpcy5jb21tb25TZXJ2aWNlcy5nZXRTY2hlZHVsZU51bWJlcih0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pLFxyXG4gICAgICAgIGRvY3Rvck5vdGVzOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZG9jdG9yTm90ZXMpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5kb2N0b3JOb3Rlcy50cmltKCkgOiBcIlwiLFxyXG4gICAgICAgIHJlZ3VsYXRpb24yNDogdGhpcy5jb21tb25TZXJ2aWNlcy5yZWd1bGF0aW9uMjQgPT0gZmFsc2UgPyAxIDogMCxcclxuICAgICAgICBpc0V4dGVtcDogdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uICE9IG51bGwgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLklzRXh0ZW1wICE9IG51bGwgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gdHJ1ZSA/IDAgOiAxIDogMSxcclxuICAgICAgICAvLyBleHRlbXBvcmFuZW91c0Rlc2NyaXB0aW9uOiB0aGlzLnN0YXRlLnNlbGVjdGVkRm9ybXVsYXRpb24gIT0gbnVsbCAmJiB0aGlzLnN0YXRlLnNlbGVjdGVkRm9ybXVsYXRpb24uRXh0ZW1wb3JhbmVvdXNEZXNjcmlwdGlvbiAhPSAnJyA/IHRoaXMuc3RhdGUuc2VsZWN0ZWRGb3JtdWxhdGlvbi5FeHRlbXBvcmFuZW91c0Rlc2NyaXB0aW9uIDogJycsXHJcbiAgICAgICAgZXh0ZW1wb3JhbmVvdXNEZXNjcmlwdGlvbjogdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLklzRXh0ZW1wID09IHRydWUgPyB0aGlzLmdldEV4dGVtcFRUUE5hbWUodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSA6ICcnLFxyXG4gICAgICAgIGFubm90YXRpb246ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5hbm5vdGF0aW9uKSA/IHRoaXMuY29tbW9uU2VydmljZXMuYW5ub3RhdGlvbi50cmltKCkgOiBcIlwiLFxyXG4gICAgICAgIHVuVXN1YWxEb3NlRmxhZzogdGhpcy5jb21tb25TZXJ2aWNlcy51blVzdWFsRG9zZUZsYWcgPT0gZmFsc2UgPyAxIDogMCxcclxuICAgICAgICB0cmFkZU5hbWU6IHRoaXMuaHRtbFRvVGV4dENvbnZlcnQodGhpcy5nZXRUcmFkZU5hbWUoKSksXHJcbiAgICAgICAgLy9yZXN0cmljdGlvbnM6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMgIT0gbnVsbCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zICE9ICcnID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnJlc3RyaWN0aW9ucyA6ICcnLFxyXG4gICAgICAgIC8vIHByZXNjcmliZXJQZXJzb25UaXRsZTogcGh5c2ljaWFuRGV0YWlscy5wcmVmaXgsXHJcbiAgICAgICAgbWF4aW11bUludGVydmFsQmV0d2VlblJlcGVhdHM6ICcnLFxyXG4gICAgICAgIGNvbXBsZXhJZDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5jb21wbGV4SWQpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5jb21wbGV4SWQgOiAwLFxyXG4gICAgICAgIHZpc2l0SWQ6IHRoaXMuY29tbW9uU2VydmljZXMudmlzaXRJZCxcclxuICAgICAgICBzY3JpcHRUeXBlOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdFR5cGUsXHJcbiAgICAgICAgZG9zZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmRvc2VTZWFyY2hWYWx1ZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmRvc2VTZWFyY2hWYWx1ZSA6IFwiXCIsXHJcbiAgICAgICAgZnJlcXVlbmN5OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZnJlcVNlYXJjaFZhbHVlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZnJlcVNlYXJjaFZhbHVlIDogXCJcIixcclxuICAgICAgICBmb29kOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZm9vZFNlYXJjaFZhbHVlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZm9vZFNlYXJjaFZhbHVlIDogXCJcIixcclxuICAgICAgICBwcmVzY3JpYmVBczogdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyxcclxuICAgICAgICBwcm46IHRoaXMuY29tbW9uU2VydmljZXMucnhQUk4gPT0gZmFsc2UgPyAxIDogMCxcclxuICAgICAgICBzY3JpcHREYXRlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0RGF0ZSkgPyB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdERhdGUsICd5eXl5LU1NLWRkJykgOiBcIlwiLFxyXG4gICAgICAgIHN0YXJ0RGF0ZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnN0YXJ0RGF0ZSkgPyB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLmNvbW1vblNlcnZpY2VzLnN0YXJ0RGF0ZSwgJ01NL2RkL3l5eXknKSA6IFwiXCIsXHJcbiAgICAgICAgcHVycG9zZTogdGhpcy5jb21tb25TZXJ2aWNlcy5wdXJwb3NlU2VhcmNoVmFsdWUudHJpbSgpLFxyXG4gICAgICAgIHBic05vdGVzOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBic05vdGVzLFxyXG4gICAgICAgIGlzQWN0aXZlOiAwLFxyXG4gICAgICAgIHByb2R1Y3RJZDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LnByb2R1Y3RJZCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdElkIDogXCJcIixcclxuICAgICAgICBhbXRUZXh0OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZm9ybXVsYSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZm9ybXVsYSA6IFwiXCIsXHJcbiAgICAgICAgcXVhbnRpdHlPZlRoZXJhcGV1dGljR29vZERvc2VVbml0Q29kZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmRvc2FnZUZvcm0pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0gOiBcIlwiLFxyXG4gICAgICAgIHF1YW50aXR5T2ZUaGVyYXBldXRpY0dvb2REb3NlVW5pdFRleHQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5kb3NhZ2VGb3JtKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtIDogXCJcIixcclxuICAgICAgICBwcmVzY3JpYmVyUm9sZUNvZGU6ICcnLFxyXG4gICAgICAgIHByZXNjcmliZXJSb2xlVGV4dDogJycsXHJcbiAgICAgICAgb3JnSGljTG9jYXRpb25JZDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdIaWNMb2NhdGlvbklkKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ0hpY0xvY2F0aW9uSWQgOiAnJyxcclxuICAgICAgICBvcmdSb2xlQ29kZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdSb2xlQ29kZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdSb2xlQ29kZSA6ICcnLFxyXG4gICAgICAgIG9yZ1JvbGVUZXh0OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1JvbGVUZXh0KSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1JvbGVUZXh0IDogJycsXHJcbiAgICAgICAgYXV0aG9yaXR5QXBwcm92YWxOdW1iZXI6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5hcHByb3ZhbE5vKSA/IHRoaXMuY29tbW9uU2VydmljZXMuYXBwcm92YWxOby50cmltKCkgOiAnJyxcclxuICAgICAgICBhdXRob3JpdHlBcHByb3ZhbE51bWJlckZsYWc6IHBhcnNlRmxvYXQodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1heFF0eVVuaXRzKSA8IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwpIHx8IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5yZXBlYXRzKSA8IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCkgPyAxIDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zLmxlbmd0aCA+IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnNJZCkgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zW3RoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkXS5zdHJlYW1saW5lZENvZGUpICYmIHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnNbdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zSWRdLnN0cmVhbWxpbmVkQ29kZSkgPT0gcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5hcHByb3ZhbE5vKSA/IDAgOiAxLFxyXG4gICAgICAgIC8vIHBic0F1dGhvcml0eVByZXNjcmlwdGlvbk51bWJlcjp0aGlzLnN0YXRlLmFwcHJvdmFsTm8gPyB0aGlzLnN0YXRlLmFwcHJvdmFsTm8gOiBcIlwiLFxyXG4gICAgICAgIC8vIHN0cmVhbWxpbmVkQXV0aG9yaXR5QXBwcm92YWxOdW1iZXI6IHRoaXMuc3RhdGUuYXBwcm92YWxOb1xyXG4gICAgICAgIC8vICAgPyB0aGlzLnN0YXRlLmFwcHJvdmFsTm9cclxuICAgICAgICAvLyAgIDogXCJcIixcclxuICAgICAgICAvLyBwYnNBdXRob3JpdHlBcHByb3ZhbE51bWJlcjogXCJcIixcclxuICAgICAgICAvL2JhcmNvZGVcclxuICAgICAgICAvL3NjcmlwdE51bWJlcjogXCJcIixcclxuICAgICAgICBkaXNwbGF5TmFtZTogdGhpcy5zaHJpbmtTdXBlclNjcmlwdENvZGUodGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lKSxcclxuICAgICAgICBlb3BEaXNwbGF5TmFtZTogdGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHRUeXBlLnRvTG93ZXJDYXNlKCkgPT0gXCJlXCIgPyB0aGlzLnNocmlua1N1cGVyU2NyaXB0Q29kZSh0aGlzLmNvbW1vblNlcnZpY2VzLmVvcERpc3BsYXlOYW1lKSA6IHRoaXMuc2hyaW5rU3VwZXJTY3JpcHRDb2RlKHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZSksXHJcbiAgICAgICAgaXRlbVN0cmVuZ3RoWG1sOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uSXRlbVN0cmVuZ3RoWG1sKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5JdGVtU3RyZW5ndGhYbWwgOiBcIiBcIixcclxuICAgICAgICAvL2F1dGhvcml0eVZhbHVlXHJcbiAgICAgICAgcGJzRHZhQXV0aG9yaXR5TnVtYmVyOiBjaGVja0F1dGhvcml0eUJveCA/IHRoaXMuY29tbW9uU2VydmljZXMuYXV0aG9yaXR5Rm9ybU5vIDogMCxcclxuICAgICAgICBwcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWU6IHRoaXMuaHRtbFRvVGV4dENvbnZlcnQodGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lKSwvL3RoaXMuc2hyaW5rU3VwZXJTY3JpcHRDb2RlKHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlKSxcclxuICAgICAgICBwcmVzY3JpYmVkSXRlbVJlc2VydmVkRm91cjogdGhpcy5zaG93QXV0aG9yaXR5Qm94KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMsIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMsIHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHksIHRoaXMuY29tbW9uU2VydmljZXMudW5saXN0ZWRSQSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUy50b0xvd2VyQ2FzZSgpID09PSBcInBic1wiICYmIHRoaXMuZ2V0U3RhdGVDb2RlRnJvbVN0YXRlTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnN0YXRlKS50b1VwcGVyQ2FzZSgpID09IFwiTlNXXCIgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHRUeXBlLnRvTG93ZXJDYXNlKCkgPT09IFwiZVwiID8gdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVkSXRlbVJlc2VydmVkRm91ciA6ICcnLFxyXG4gICAgICAgIHVubGlzdGVkSXRlbVJlcGF0QXV0aG9yaXR5OiB0aGlzLmNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkEgPT0gdHJ1ZSA/IHRydWUgOiBmYWxzZSxcclxuICAgICAgICBpc1ByaW50QXZhaWxhYmxlOiB0aGlzLmNvbW1vblNlcnZpY2VzLmlzUHJpbnRBdmFpbGFibGUsXHJcbiAgICAgICAgcHJlc2NyaWJlZEl0ZW1SZXNlcnZlZE9uZTogdGhpcy5jb21tb25TZXJ2aWNlcy5nZXRTY2hlZHVsZU51bWJlcih0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pLnRvTG93ZXJDYXNlKCkgPT0gXCJzOFwiID8gdGhpcy5udW1iZXJUb1dvcmQocGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbCkpIDogJycsXHJcbiAgICAgICAgbXlTTENvbnNlbnQ6IHRoaXMuY29tbW9uU2VydmljZXMubXlTTENvbnNlbnQsXHJcbiAgICAgICAgc2VuZFRvUGhhcm1hY3k6IHRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3ksXHJcbiAgICAgICAgc2VuZFRvUGhhcm1hY3lWYWx1ZTogdGhpcy5jb21tb25TZXJ2aWNlcy5zZW5kVG9QaGFybWFjeVZhbHVlLFxyXG4gICAgICAgIGVtZXJnZW5jeVN1cHBseTogdGhpcy5jb21tb25TZXJ2aWNlcy5lbWVyZ2VuY3lTdXBwbHksXHJcbiAgICAgICAgbW9sZWN1bGVTdHJlbmd0aEdyaWQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5tb2xlY3VsZVN0cmVuZ3RoR3JpZCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubW9sZWN1bGVTdHJlbmd0aEdyaWQgOiAnJyxcclxuICAgICAgICBlbnRpdHlJZDogdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLmVudGl0eUlkLFxyXG4gICAgICAgIGlzUHJlc2NyaWJlQW5kUHJpbnQ6IHRoaXMuaXNlcHJpc2NyaWJlcHJpbnQsXHJcbiAgICAgICAgYW10Q29kZVN5c3RlbTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmFtdENvZGVTeXN0ZW0pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdENvZGVTeXN0ZW0gOiBcIlwiLFxyXG4gICAgICAgIGFtdFZlcnNpb246ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5hbXRWZXJzaW9uKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRWZXJzaW9uIDogXCJcIixcclxuICAgICAgICBxdWFudGl0eVdpdGhVbml0OiB0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5V2l0aFVuaXRGbGFnICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5tYXhRdHlVbml0cykgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHMgOiBcIlwiLFxyXG4gICAgICAgIGNsaWVudElkOiB0aGlzLmNsaWVudElkXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucmVtb3ZlRXJyVG9hc3QoKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmFwaVNlcnZpY2UuUG9zdChib2R5LCBjb25maWcuUEhZU0lDSUFOLlBSRVNDUklCRSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuaXNQcmVzY3JpYmUgPSB0cnVlO1xyXG4gICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMpKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlRXJyX2NvZGUgPSBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlO1xyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5QcmVzY3JpYmVNc2cgPSBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlO1xyXG4gICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJwcmVzY3JpYmVNZWRcIiwgYm9keSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZVN1Y2Nlc3MgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLlByZXNjcmliZU1zZyA9IHJlcy5yZXNwb25zZV9tZXNzYWdlO1xyXG4gICAgICAgICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVkYXRhID0gcmVzO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldEVuZERhdGVBaGVhZCgpO1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmlzUHJpbnRBdmFpbGFibGUgIT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHJlcy5pc0FvcnQpIHtcclxuICAgICAgICAgICAgICB0aGlzLmFib3J0QnRuRmxhZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJlc2NyaWJlTWVkXCIsIGJvZHkpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihSZWFsVGltZVByZXNjcmlwdGlvbk1vbml0b3JpbmdDb21wb25lbnQsIHRoaXMuY29udGVudCwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4aWQgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX21lc3NhZ2UgIT0gbnVsbCAmJiByZXMucmVzcG9uc2VfbWVzc2FnZSAhPSAnJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlRXJyX2NvZGUgPSByZXMuZXJyb3JfY29kZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLlByZXNjcmliZU1zZyA9IHJlcy5yZXNwb25zZV9tZXNzYWdlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJwcmVzY3JpYmVNZWRcIiwgYm9keSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlRXJyX2NvZGUgPSBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuUHJlc2NyaWJlTXNnID0gZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcInByZXNjcmliZU1lZFwiLCBib2R5KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICgodGhpcy5yZXNwb25zZURhdGEuaXNBYm9ydCkgfHwgIXRoaXMuYWJvcnRkaXNhYmxlKVxyXG4gICAgICAgICAgICB0aGlzLnNob3dSZXNwb25zZU1lc3NhZ2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJlc2NyaWJlTWVkXCIsIGJvZHkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmlzUHJlc2NyaWJlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVFcnJvciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuUHJlc2NyaWJlTXNnID0gZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZUVycl9jb2RlID0gZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZVxyXG4gICAgICAgIGlmICh0aGlzLnJlc3BvbnNlRGF0YS5pc0Fib3J0IHx8ICF0aGlzLmFib3J0ZGlzYWJsZSlcclxuICAgICAgICAgIHRoaXMuc2hvd1Jlc3BvbnNlTWVzc2FnZSgpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJwcmVzY3JpYmVNZWRcIiwgYm9keSk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5hYm9ydEJ0bkZsYWcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInByZXNjcmliZU1lZFwiLCBib2R5KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIE1wcmVzY3JpYmVNZWQoaWQ6IG51bWJlcikge1xyXG4gICAgdmFyIGJvZHkgPSB7fTtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChpZCA9PSAxKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZVByZXNjcmlwdGlvblZhbGlkYXRpb24oaWQpKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChpZCA9PSAyKSB7XHJcbiAgICAgICAgaWYgKCh0aGlzLmNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpcHRpb24gPT09IHRydWUgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscz8uc2NyaXB0VHlwZSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc2NyaXB0VHlwZS50b1VwcGVyQ2FzZSgpID09ICdNJyAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzPy5zdGF0dXMpICYmIHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cy50b0xvd2VyQ2FzZSgpICE9ICdkcmFmdCcpIHx8ICh0aGlzLmNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpcHRpb24gPT09IHRydWUgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscz8uc2NyaXB0VHlwZSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc2NyaXB0VHlwZS50b1VwcGVyQ2FzZSgpID09ICdFJykpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IHRydWU7XHJcbiAgICAgIGlmIChpZCA9PSAxKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHRUeXBlID0gXCJFXCI7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5BZGRyZXNzU2VuZFRvQWRkVHlwZSA9IFwiU01TXCI7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHRUeXBlID0gXCJNXCI7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5BZGRyZXNzU2VuZFRvQWRkVHlwZSA9IFwiXCI7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuc2hvd0F1dGhvcml0eUJveCh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zLCB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLCB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4QXV0aG9yaXR5LCB0aGlzLmNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkEpID09IHRydWUpIHtcclxuICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuYXBwcm92YWxObykpIHtcclxuICAgICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzUzLm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzUzLmNvZGUpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzUzLmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzUzLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNlbGVjdFBCVE5Ecm9wZG93biA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gdHJ1ZTtcclxuICAgICAgdmFyIHBhdGllbnREZXRhaWxzID0gdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscztcclxuICAgICAgdmFyIHBoeXNpY2lhbkRldGFpbHMgPSB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHM7XHJcbiAgICAgIHZhciBzZWxlY3RlZEZvcm11bGF0aW9uID0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uO1xyXG4gICAgICB2YXIgbWVkaWNhcmVDYXJkID0gJyc7XHJcbiAgICAgIGlmIChwYXRpZW50RGV0YWlscy5tZWRpY2FyZU51bWJlcikge1xyXG4gICAgICAgIHZhciBtZWRObzEgPSBwYXRpZW50RGV0YWlscy5tZWRpY2FyZU51bWJlci5yZXBsYWNlKC8gL2csICcnKTtcclxuICAgICAgICBtZWRObzEgPSBtZWRObzEucmVwbGFjZSgvXy9nLCAnJyk7XHJcbiAgICAgICAgbWVkTm8xID0gbWVkTm8xLnJlcGxhY2UoLy0vZywgJycpO1xyXG4gICAgICAgIG1lZGljYXJlQ2FyZCA9IG1lZE5vMTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgcGJzTWFudWZhY3R1cmVyQ29kZVNldCA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucGJzTWFudWZhY3R1cmVyQ29kZXMpICYmIHNlbGVjdGVkRm9ybXVsYXRpb24ucGJzTWFudWZhY3R1cmVyQ29kZXMubGVuZ3RoICE9IDAgPyBzZWxlY3RlZEZvcm11bGF0aW9uLnBic01hbnVmYWN0dXJlckNvZGVzWzBdIDogJyc7XHJcblxyXG4gICAgICBsZXQgY2hlY2tBdXRob3JpdHlCb3ggPSB0aGlzLnNob3dBdXRob3JpdHlCb3goXHJcbiAgICAgICAgc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMsXHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyxcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4QXV0aG9yaXR5LFxyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudW5saXN0ZWRSQVxyXG4gICAgICApO1xyXG4gICAgICBib2R5ID0ge1xyXG4gICAgICAgIHJ4SWQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yeGlkKSA/IHRoaXMuY29tbW9uU2VydmljZXMucnhpZCA6ICcnLFxyXG4gICAgICAgIGlzU2hvd0F1dGhvcml0eTogdGhpcy5jb21tb25TZXJ2aWNlcy5pc1Nob3dBdXRob3JpdHksXHJcbiAgICAgICAgcGJzTGlzdEluc3RydWN0aW9uczogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnMpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zIDogXCJcIixcclxuICAgICAgICBpc0JyYW5kTmFtZTogdGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSxcclxuICAgICAgICBpbmNsdWRlQnJhbmRGbGFnOiB0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lLFxyXG4gICAgICAgIHJlc3RyaWN0ZWRQYnNTZWxlY3RlZEluZGV4OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkKSA/IHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkICsgMSA6IFwiXCIsXHJcbiAgICAgICAgbUFQYXRpZW50SWQ6IHRoaXMuY29tbW9uU2VydmljZXMudmVuZG9yUGF0aWVudElkLFxyXG4gICAgICAgIG1BUGhhcm1hY2lzdElkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnZlbmRvclBoeXNpY2lhbklkLFxyXG4gICAgICAgIG1BRmFjaWxpdHlJZDogdGhpcy5jb21tb25TZXJ2aWNlcy52ZW5kb3JGYWNpbGl0eUlkLFxyXG4gICAgICAgIHByaXZhY3lTdGF0ZW1lbnQ6IHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0VHlwZS50b0xvd2VyQ2FzZSgpID09ICdlJyA/IDAgOiAxLFxyXG4gICAgICAgIGhwaUk6IHBoeXNpY2lhbkRldGFpbHMuaHBpaU51bWJlcixcclxuICAgICAgICBwcmVzY3JpYmVyTnVtYmVyOiBwaHlzaWNpYW5EZXRhaWxzLnByZXNjcmliZXJOdW1iZXIsXHJcbiAgICAgICAgcHJlc2NyaWJlckFocHJhTnVtYmVyOiBwaHlzaWNpYW5EZXRhaWxzLnByZXNjcmliZXJBaHByYU51bWJlcixcclxuICAgICAgICBwcmVzY3JpYmVyR2l2ZW5OYW1lczogcGh5c2ljaWFuRGV0YWlscy5maXJzdE5hbWUsXHJcbiAgICAgICAgcHJlc2NyaWJlckZhbWlseU5hbWU6IHBoeXNpY2lhbkRldGFpbHMubGFzdE5hbWUsXHJcbiAgICAgICAgcHJlc2NyaWJlckhvbWVNb2JpbGU6IHBoeXNpY2lhbkRldGFpbHMubW9iaWxlUGhvbmUsXHJcbiAgICAgICAgcHJlc2NyaWJlckhvbWVFbWFpbDogcGh5c2ljaWFuRGV0YWlscy5lbWFpbCxcclxuICAgICAgICBvcmdIcGlPOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLmhwaW9OdW1iZXIpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMuaHBpb051bWJlciA6ICcnLFxyXG4gICAgICAgIG9yZ05hbWU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnTmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdOYW1lIDogJycsXHJcbiAgICAgICAgb3JnRW1haWw6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnRW1haWwpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnRW1haWwgOiAnJyxcclxuICAgICAgICBvcmdQb3N0YWxBZGRyZXNzTGluZTE6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUG9zdGFsQWRkcmVzc0xpbmUxKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NMaW5lMSA6ICcnLFxyXG4gICAgICAgIG9yZ1Bvc3RhbEFkZHJlc3NMaW5lMjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzTGluZTIpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUG9zdGFsQWRkcmVzc0xpbmUyIDogJycsXHJcbiAgICAgICAgb3JnUG9zdGFsQWRkcmVzc1N1YnVyYjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzU3VidXJiKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NTdWJ1cmIgOiAnJyxcclxuICAgICAgICBvcmdQb3N0YWxBZGRyZXNzUG9zdENvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUG9zdGFsQWRkcmVzc1Bvc3RDb2RlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NQb3N0Q29kZSA6ICcnLFxyXG4gICAgICAgIG9yZ1Bvc3RhbEFkZHJlc3NTdGF0ZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzU3RhdGUpID8gdGhpcy5nZXRTdGF0ZUNvZGVGcm9tU3RhdGVOYW1lKHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NTdGF0ZSkgOiAnJyxcclxuICAgICAgICBpaGk6IHBhdGllbnREZXRhaWxzLmloaU51bWJlcixcclxuICAgICAgICBtZWRpY2FyZU51bWJlcjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShtZWRpY2FyZUNhcmQpID8gdGhpcy5lcnhNZWRpY2FyZUNhcmQobWVkaWNhcmVDYXJkKSA6ICcnLFxyXG4gICAgICAgIG1lZGljYXJlSXJuOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG1lZGljYXJlQ2FyZCkgPyB0aGlzLmVyeE1lZGljYXJlSVJOKG1lZGljYXJlQ2FyZCkgOiAnJyxcclxuICAgICAgICBtZWRpY2FyZU51bWJlckV4cGlyeTogcGF0aWVudERldGFpbHMubWVkaWNhcmVFeHBpcnksXHJcbiAgICAgICAgZGF0ZU9mQmlydGg6IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHBhdGllbnREZXRhaWxzLmRvYiwgJ3l5eXktTU0tZGQnKSxcclxuICAgICAgICBmYW1pbHlOYW1lOiBwYXRpZW50RGV0YWlscy5sYXN0TmFtZSxcclxuICAgICAgICBnaXZlbk5hbWVzOiBwYXRpZW50RGV0YWlscy5maXJzdE5hbWUsXHJcbiAgICAgICAgcGF0aWVudFVzZXJJZFN0cmluZzogdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5wYXRpZW50VXNlcklkLFxyXG4gICAgICAgIHVzZXJJZFN0cmluZzogdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLnVzZXJJZCxcclxuICAgICAgICBnZW5kZXJDb2RlOiB0aGlzLmdldEdlbmRlckNvZGUocGF0aWVudERldGFpbHMuZ2VuZGVyKSxcclxuICAgICAgICBob21lTW9iaWxlOiBwYXRpZW50RGV0YWlscy5waG9uZSxcclxuICAgICAgICBob21lRW1haWw6IHBhdGllbnREZXRhaWxzLmVtYWlsLFxyXG4gICAgICAgIGFkZHJlc3NMaW5lMTogcGF0aWVudERldGFpbHMuYWRkcmVzczEsXHJcbiAgICAgICAgYWRkcmVzc0xpbmUyOiBwYXRpZW50RGV0YWlscy5hZGRyZXNzMixcclxuICAgICAgICBhZGRyZXNzU3VidXJiOiBwYXRpZW50RGV0YWlscy5jaXR5LFxyXG4gICAgICAgIGFkZHJlc3NQb3N0Q29kZTogcGF0aWVudERldGFpbHMucG9zdENvZGUsXHJcbiAgICAgICAgYWRkcmVzc1N0YXRlOiB0aGlzLmdldFN0YXRlQ29kZUZyb21TdGF0ZU5hbWUocGF0aWVudERldGFpbHMuc3RhdGUpLFxyXG4gICAgICAgIHByZXNjcmlwdGlvbldyaXR0ZW5EYXRlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0RGF0ZSkgPyB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdERhdGUsICd5eXl5LU1NLWRkJykgOiBcIlwiLFxyXG4gICAgICAgIGZvcm1UZXh0OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24/LmRvc2FnZUZvcm0pID8gc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtIDogXCJcIixcclxuICAgICAgICBzdHJlbmd0aDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uPy5tb2xlY3VsZVN0cmVuZ3RoKSA/IHNlbGVjdGVkRm9ybXVsYXRpb24ubW9sZWN1bGVTdHJlbmd0aCA6IFwiIFwiLFxyXG4gICAgICAgIGRpcmVjdGlvbnM6IHRoaXMuZ2V0RGlyZWN0aW9ucygpLFxyXG4gICAgICAgIGJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvd2VkOiB0aGlzLmNvbW1vblNlcnZpY2VzLkJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvdyA9PSB0cnVlID8gMCA6IDEsXHJcbiAgICAgICAgbWF4aW11bU51bWJlck9mUmVwZWF0czogdGhpcy5jb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsLFxyXG4gICAgICAgIG1pbmltdW1JbnRlcnZhbEJldHdlZW5SZXBlYXRzOiB0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsICE9IHVuZGVmaW5lZCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsICE9IG51bGwgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCAhPSBcIlwiID8gcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCkgOiBcIi0xXCIsXHJcbiAgICAgICAgcGF0aWVudEN0Z0ZsYWc6IHRoaXMuY29tbW9uU2VydmljZXMuQ1RHQ29QYXltZW50ID09IHRydWUgPyAwIDogMSxcclxuICAgICAgICBwYnNJdGVtQ29kZUNvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5wYnNDb2RlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNDb2RlIDogXCJcIixcclxuICAgICAgICBwYnNJdGVtQ29kZVRleHQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5wYnNDb2RlVGV4dCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzQ29kZVRleHQgOiBcIlwiLFxyXG4gICAgICAgIHBic0l0ZW1NYW51ZmFjdHVyZXI6IHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPyBwYnNNYW51ZmFjdHVyZXJDb2RlU2V0IDogJycsXHJcbiAgICAgICAgc3RhdGVBdXRob3JpdHlOdW1iZXI6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5TdGF0ZUF1dGhvcml0eU51bWJlcikgPyB0aGlzLmNvbW1vblNlcnZpY2VzLlN0YXRlQXV0aG9yaXR5TnVtYmVyLnRyaW0oKSA6IFwiXCIsXHJcbiAgICAgICAgcmVhc29uRm9yVGhlcmFwZXV0aWNHb29kOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaXB0aW9uUmVhc29uKSA/IHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaXB0aW9uUmVhc29uLnRyaW0oKSA6IFwiXCIsXHJcbiAgICAgICAgdW51c3VhbFF0eUZsYWc6IHRoaXMuc2V0VW51c3VhbFF0eUZsYWcodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLCB0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsLCB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTKSxcclxuICAgICAgICBxdWFudGl0eU9mVGhlcmFwZXV0aWNHb29kUXVhbnRpdHk6IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwpLFxyXG4gICAgICAgIGNvbXBsZXhJbnN0cnVjdGlvbnM6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZS50cmltKCkgOiBcIlwiLFxyXG4gICAgICAgIGFtdE1wcENvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5BTVRNUFBDb2RlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5BTVRNUFBDb2RlIDogXCJcIixcclxuICAgICAgICBhbXRNcHBOYW1lOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uYW10KSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10Lmxlbmd0aCA+IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLm1wcHMpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0ubXBwcy5sZW5ndGggPiAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS5tcHBzWzBdLm1wcE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS5tcHBzWzBdLm1wcE5hbWUgOiAnJyxcclxuICAgICAgICBhbXRUcHBDb2RlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uQU1UVFBQQ29kZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uQU1UVFBQQ29kZSA6IFwiXCIsXHJcbiAgICAgICAgYW10VHBwTmFtZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmFtdCkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdC5sZW5ndGggPiAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cHBzKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHMubGVuZ3RoID4gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBwc1swXS50cHBOYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBwc1swXS50cHBOYW1lIDogJycsXHJcbiAgICAgICAgYW10VHBDb2RlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uQU1UVFBDb2RlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5BTVRUUENvZGUgOiBcIlwiLFxyXG4gICAgICAgIGFtdFRwTmFtZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmFtdCkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdC5sZW5ndGggPiAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cE5hbWUgOiAnJyxcclxuICAgICAgICBhbXRDb2RlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uYW10KSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXQuYW10Y29kZSA6ICcnLFxyXG4gICAgICAgIHRoZXJlcGV1dGljR29vZElkZW50aWZpY2F0aW9uTWltc0NvZGU6ICcnLFxyXG4gICAgICAgIHRoZXJlcGV1dGljR29vZElkZW50aWZpY2F0aW9uTG9jYWxDb2RlOiAnJyxcclxuICAgICAgICAvLyB0aGVyZXBldXRpY0dvb2RJZGVudGlmaWNhdGlvbkVhbkNvZGU6IFwiXCIsXHJcbiAgICAgICAgdGhlcmVwZXV0aWNHb29kSWRlbnRpZmljYXRpb25FYW5UZXh0OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucGJzVHlwZSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic1R5cGUudG9Mb3dlckNhc2UoKSA9PSAnbm9uIHBicycgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lIDogJycsXHJcbiAgICAgICAgcHJlc2NyaWJlck9jY3VwYXRpb25Db2RlOiBwaHlzaWNpYW5EZXRhaWxzLm9jY3VwYXRpb25Db2RlLFxyXG4gICAgICAgIHByZXNjcmliZXJPY2N1cGF0aW9uVGV4dDogcGh5c2ljaWFuRGV0YWlscy5vY2N1cGF0aW9uVGV4dCxcclxuICAgICAgICBwcmVzY3JpYmVyUGVyc29uVGl0bGU6IHBoeXNpY2lhbkRldGFpbHMucHJlZml4LFxyXG4gICAgICAgIHByZXNjcmliZXJRdWFsaWZpY2F0aW9uczogcGh5c2ljaWFuRGV0YWlscy5zdWZmaXgsXHJcbiAgICAgICAgb3JnUGhvbmU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnTW9iaWxlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ01vYmlsZSA6ICcnLFxyXG4gICAgICAgIG9yZ0ZheDogJycsXHJcbiAgICAgICAgbG9jYWxTeXN0ZW1JRDogdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5wYXRpZW50VXNlcklkLFxyXG4gICAgICAgIGFkZHJlc3NTZW5kVG9BZGRUeXBlOiB0aGlzLmNvbW1vblNlcnZpY2VzLkFkZHJlc3NTZW5kVG9BZGRUeXBlLFxyXG4gICAgICAgIGFkZHJlc3NFbWFpbDogdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhlbWFpbElkKSA/IHBhdGllbnREZXRhaWxzLmVtYWlsIDogdGhpcy5jb21tb25TZXJ2aWNlcy5yeGVtYWlsSWQsXHJcbiAgICAgICAgYWRkcmVzc1NtczogdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhudW1iZXIpID8gcGF0aWVudERldGFpbHMucGhvbmUgOiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4bnVtYmVyLFxyXG4gICAgICAgIGdlbmRlclRleHQ6IHRoaXMuZ2V0R2VuZGVyKHBhdGllbnREZXRhaWxzLmdlbmRlciksXHJcbiAgICAgICAgYWRkcmVzc0xpbmUzOiAnJyxcclxuICAgICAgICBwcmVzY3JpcHRpb25Xcml0dGVuVXRjVGltZTogJzAxLTAxLTE5NzAgMDk6MDY6MDknLCAvLyBwcmVzY3JpcHRpb25Xcml0dGVuVXRjVGltZTogbW9tZW50KG5ldyBEYXRlKCkpLmZvcm1hdChcIk1NLURELXl5eXkgaGg6bW06c3NcIiksXHJcbiAgICAgICAgcHJlc2NyaXB0aW9uV3JpdHRlblV0Y09mZnNldDogdGhpcy5nZXRPZmZzZXQoKSxcclxuICAgICAgICBwcmVzY3JpcHRpb25FeHBpcmVzVmFsdWU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5lbmREYXRlKSA/IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuY29tbW9uU2VydmljZXMuZW5kRGF0ZSwgJ01NL2RkL3l5eXknKSA6IFwiXCIsXHJcbiAgICAgICAgYWN0aXZlSW5ncmVkaWVudDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmdlbmVyaWNOYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5nZW5lcmljTmFtZSA6IFwiXCIsXHJcbiAgICAgICAgZm9ybUNvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5kb3NhZ2VGb3JtKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtIDogXCJcIixcclxuICAgICAgICBmb3JtdWxhOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZm9ybXVsYSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZm9ybXVsYSA6IFwiXCIsXHJcbiAgICAgICAgYWRkaXRpb25hbENvbW1lbnRzOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZG9jdG9yTm90ZXMpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5kb2N0b3JOb3Rlcy50cmltKCkgOiBcIlwiLFxyXG4gICAgICAgIGFzbENvbnNlbnQ6IDEsXHJcbiAgICAgICAgcHJlc2NyaXB0aW9uTm90ZURldGFpbE5vdGU6IHRoaXMuY29tbW9uU2VydmljZXMucHVycG9zZVNlYXJjaFZhbHVlLFxyXG4gICAgICAgIGR2YU51bWJlcjogcGF0aWVudERldGFpbHMuZHZhTnVtYmVyLFxyXG4gICAgICAgIGR2YVR5cGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocGF0aWVudERldGFpbHMuZHZhQ2FyZFR5cGUpICYmIHBhdGllbnREZXRhaWxzLmR2YUNhcmRUeXBlLnRvTG93ZXJDYXNlKCkgIT0gJ25vbmUnID8gcGF0aWVudERldGFpbHMuZHZhQ2FyZFR5cGUuc2xpY2UoMCwgMSkudG9VcHBlckNhc2UoKSA6ICcnLFxyXG4gICAgICAgIHBic0FwcHJvdmFsTnVtYmVyOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuYXBwcm92YWxObykgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8gOiAnJyxcclxuICAgICAgICByb3V0ZTogdGhpcy5jb21tb25TZXJ2aWNlcy5yb3V0ZVNlYXJjaFZhbHVlICE9ICctJyA/IHRoaXMuY29tbW9uU2VydmljZXMucm91dGVTZWFyY2hWYWx1ZSA6ICcnLFxyXG4gICAgICAgIC8vcHJvdmlkZXJOdW1iZXI6JycsXHJcbiAgICAgICAgcHJlc2NyaWJlclR5cGU6IHBoeXNpY2lhbkRldGFpbHMucHJlc2NyaWJlclR5cGUsXHJcbiAgICAgICAgbWVkaWNpbmVOYW1lOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucHJvZHVjdE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lIDogXCJcIixcclxuICAgICAgICBicmFuZE5hbWU6IHRoaXMuZ2V0QnJhbmROYW1lKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiksXHJcbiAgICAgICAgZ2VuZXJpY05hbWU6IHRoaXMuaHRtbFRvVGV4dENvbnZlcnQoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LklzRXh0ZW1wKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gdHJ1ZSA/IHRoaXMuZ2V0RXh0ZW1wVFRQTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pIDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmdlbmVyaWNOYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5nZW5lcmljTmFtZSA6IHRoaXMuZ2V0RXh0ZW1wTVBQTmFtZSgpKSxcclxuICAgICAgICAvL2l0ZW1HZW5lcmljSW50ZW50aW9uOiBnZXRJdGVtR2VuZXJpY0ludGVudGlvbih0aGlzLnN0YXRlLmxlbWksdGhpcy5zdGF0ZS5pc0JyYW5kTmFtZSx0aGlzLnN0YXRlLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gdHJ1ZSA/IHRydWUgOiBmYWxzZSksXHJcbiAgICAgICAgaXRlbUdlbmVyaWNJbnRlbnRpb246IHRoaXMuY29tbW9uU2VydmljZXMubGVtaSA9PSB0cnVlICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCAhPSB0cnVlID8gJ0InIDogJ0cnLFxyXG4gICAgICAgIHNjaGVkdWxlTnVtYmVyOiB0aGlzLnBheUxvYWRTdGF0ZVNjaGVkdWxlTnVtYmVyKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikgIT0gXCJcIiA/IHRoaXMucGF5TG9hZFN0YXRlU2NoZWR1bGVOdW1iZXIodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSA6IHRoaXMuY29tbW9uU2VydmljZXMuZ2V0U2NoZWR1bGVOdW1iZXIodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSxcclxuICAgICAgICBkb2N0b3JOb3RlczogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmRvY3Rvck5vdGVzKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZG9jdG9yTm90ZXMudHJpbSgpIDogXCJcIixcclxuICAgICAgICByZWd1bGF0aW9uMjQ6IHRoaXMuY29tbW9uU2VydmljZXMucmVndWxhdGlvbjI0ID09IGZhbHNlID8gMSA6IDAsXHJcbiAgICAgICAgaXNFeHRlbXA6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiAhPSBudWxsICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCAhPSBudWxsID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLklzRXh0ZW1wID09IHRydWUgPyAwIDogMSA6IDEsXHJcbiAgICAgICAgLy8gZXh0ZW1wb3JhbmVvdXNEZXNjcmlwdGlvbjogdGhpcy5zdGF0ZS5zZWxlY3RlZEZvcm11bGF0aW9uICE9IG51bGwgJiYgdGhpcy5zdGF0ZS5zZWxlY3RlZEZvcm11bGF0aW9uLkV4dGVtcG9yYW5lb3VzRGVzY3JpcHRpb24gIT0gJycgPyB0aGlzLnN0YXRlLnNlbGVjdGVkRm9ybXVsYXRpb24uRXh0ZW1wb3JhbmVvdXNEZXNjcmlwdGlvbiA6ICcnLFxyXG4gICAgICAgIGV4dGVtcG9yYW5lb3VzRGVzY3JpcHRpb246IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCA9PSB0cnVlID8gdGhpcy5nZXRFeHRlbXBUVFBOYW1lKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikgOiAnJyxcclxuICAgICAgICBhbm5vdGF0aW9uOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuYW5ub3RhdGlvbikgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmFubm90YXRpb24udHJpbSgpIDogXCJcIixcclxuICAgICAgICB1blVzdWFsRG9zZUZsYWc6IHRoaXMuY29tbW9uU2VydmljZXMudW5Vc3VhbERvc2VGbGFnID09IGZhbHNlID8gMSA6IDAsXHJcbiAgICAgICAgdHJhZGVOYW1lOiB0aGlzLmh0bWxUb1RleHRDb252ZXJ0KHRoaXMuZ2V0VHJhZGVOYW1lKCkpLFxyXG4gICAgICAgIC8vcmVzdHJpY3Rpb25zOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zICE9IG51bGwgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucyAhPSAnJyA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5yZXN0cmljdGlvbnMgOiAnJyxcclxuICAgICAgICAvLyBwcmVzY3JpYmVyUGVyc29uVGl0bGU6IHBoeXNpY2lhbkRldGFpbHMucHJlZml4LFxyXG4gICAgICAgIG1heGltdW1JbnRlcnZhbEJldHdlZW5SZXBlYXRzOiAnJyxcclxuICAgICAgICBjb21wbGV4SWQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuY29tcGxleElkKSA/IHRoaXMuY29tbW9uU2VydmljZXMuY29tcGxleElkIDogMCxcclxuICAgICAgICB2aXNpdElkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnZpc2l0SWQsXHJcbiAgICAgICAgc2NyaXB0VHlwZTogdGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHRUeXBlLFxyXG4gICAgICAgIGRvc2U6IHRoaXMuY29tbW9uU2VydmljZXMuZG9zZVNlYXJjaFZhbHVlLFxyXG4gICAgICAgIGZyZXF1ZW5jeTogdGhpcy5jb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWUsXHJcbiAgICAgICAgZm9vZDogdGhpcy5jb21tb25TZXJ2aWNlcy5mb29kU2VhcmNoVmFsdWUsXHJcbiAgICAgICAgcHJlc2NyaWJlQXM6IHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMsXHJcbiAgICAgICAgcHJuOiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4UFJOID09IGZhbHNlID8gMSA6IDAsXHJcbiAgICAgICAgc2NyaXB0RGF0ZTogdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHREYXRlLCAneXl5eS1NTS1kZCcpLFxyXG4gICAgICAgIHN0YXJ0RGF0ZTogdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5jb21tb25TZXJ2aWNlcy5zdGFydERhdGUsICdNTS9kZC95eXl5JyksXHJcbiAgICAgICAgcHVycG9zZTogdGhpcy5jb21tb25TZXJ2aWNlcy5wdXJwb3NlU2VhcmNoVmFsdWUudHJpbSgpLFxyXG4gICAgICAgIHBic05vdGVzOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBic05vdGVzLFxyXG4gICAgICAgIGlzQWN0aXZlOiAwLFxyXG4gICAgICAgIHByb2R1Y3RJZDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LnByb2R1Y3RJZCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdElkIDogXCJcIixcclxuICAgICAgICBhbXRUZXh0OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZm9ybXVsYSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZm9ybXVsYSA6IFwiXCIsXHJcbiAgICAgICAgcXVhbnRpdHlPZlRoZXJhcGV1dGljR29vZERvc2VVbml0Q29kZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmRvc2FnZUZvcm0pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0gOiBcIlwiLFxyXG4gICAgICAgIHF1YW50aXR5T2ZUaGVyYXBldXRpY0dvb2REb3NlVW5pdFRleHQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5kb3NhZ2VGb3JtKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtIDogXCJcIixcclxuICAgICAgICBwcmVzY3JpYmVyUm9sZUNvZGU6ICcnLFxyXG4gICAgICAgIHByZXNjcmliZXJSb2xlVGV4dDogJycsXHJcbiAgICAgICAgb3JnSGljTG9jYXRpb25JZDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdIaWNMb2NhdGlvbklkKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ0hpY0xvY2F0aW9uSWQgOiAnJyxcclxuICAgICAgICBvcmdSb2xlQ29kZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdSb2xlQ29kZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdSb2xlQ29kZSA6ICcnLFxyXG4gICAgICAgIG9yZ1JvbGVUZXh0OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1JvbGVUZXh0KSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1JvbGVUZXh0IDogJycsXHJcbiAgICAgICAgYXV0aG9yaXR5QXBwcm92YWxOdW1iZXI6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5hcHByb3ZhbE5vKSA/IHRoaXMuY29tbW9uU2VydmljZXMuYXBwcm92YWxOby50cmltKCkgOiAnJyxcclxuICAgICAgICBhdXRob3JpdHlBcHByb3ZhbE51bWJlckZsYWc6IHBhcnNlRmxvYXQodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1heFF0eVVuaXRzKSA8IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwpIHx8IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5yZXBlYXRzKSA8IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCkgPyAxIDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zLmxlbmd0aCA+IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnNJZCkgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zW3RoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkXS5zdHJlYW1saW5lZENvZGUpICYmIHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnNbdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zSWRdLnN0cmVhbWxpbmVkQ29kZSkgPT0gcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5hcHByb3ZhbE5vKSA/IDAgOiAxLFxyXG4gICAgICAgIHN0YXR1czogXCJEcmFmdFwiLFxyXG4gICAgICAgIC8vIHBic0F1dGhvcml0eVByZXNjcmlwdGlvbk51bWJlcjp0aGlzLnN0YXRlLmFwcHJvdmFsTm8gPyB0aGlzLnN0YXRlLmFwcHJvdmFsTm8gOiBcIlwiLFxyXG4gICAgICAgIC8vIHN0cmVhbWxpbmVkQXV0aG9yaXR5QXBwcm92YWxOdW1iZXI6IHRoaXMuc3RhdGUuYXBwcm92YWxObz8gdGhpcy5zdGF0ZS5hcHByb3ZhbE5vOiBcIlwiLFxyXG4gICAgICAgIC8vIHBic0F1dGhvcml0eUFwcHJvdmFsTnVtYmVyOiBcIlwiLFxyXG4gICAgICAgIC8vYmFyY29kZVxyXG4gICAgICAgIC8vc2NyaXB0TnVtYmVyOiBcIlwiLFxyXG4gICAgICAgIGRpc3BsYXlOYW1lOiB0aGlzLnNocmlua1N1cGVyU2NyaXB0Q29kZSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGlzcGxheU5hbWUpLFxyXG4gICAgICAgIGVvcERpc3BsYXlOYW1lOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdFR5cGUudG9Mb3dlckNhc2UoKSA9PSBcImVcIiA/IHRoaXMuc2hyaW5rU3VwZXJTY3JpcHRDb2RlKHRoaXMuY29tbW9uU2VydmljZXMuZW9wRGlzcGxheU5hbWUpIDogdGhpcy5zaHJpbmtTdXBlclNjcmlwdENvZGUodGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lKSxcclxuICAgICAgICBpdGVtU3RyZW5ndGhYbWw6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5JdGVtU3RyZW5ndGhYbWwpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLkl0ZW1TdHJlbmd0aFhtbCA6IFwiIFwiLFxyXG4gICAgICAgIC8vYXV0aG9yaXR5VmFsdWVcclxuICAgICAgICBwYnNEdmFBdXRob3JpdHlOdW1iZXI6IGNoZWNrQXV0aG9yaXR5Qm94ID8gdGhpcy5jb21tb25TZXJ2aWNlcy5hdXRob3JpdHlGb3JtTm8gOiAwLFxyXG4gICAgICAgIHByZXNjcmliZWRJdGVtUmVzZXJ2ZWRUaHJlZTogdGhpcy5odG1sVG9UZXh0Q29udmVydCh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGlzcGxheU5hbWUpLC8vdGhpcy5zaHJpbmtTdXBlclNjcmlwdENvZGUodGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUpLFxyXG4gICAgICAgIHVubGlzdGVkSXRlbVJlcGF0QXV0aG9yaXR5OiB0aGlzLmNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkEgPT0gdHJ1ZSA/IHRydWUgOiBmYWxzZSxcclxuICAgICAgICBwcmVzY3JpYmVkSXRlbVJlc2VydmVkT25lOiB0aGlzLmNvbW1vblNlcnZpY2VzLmdldFNjaGVkdWxlTnVtYmVyKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikudG9Mb3dlckNhc2UoKSA9PSBcInM4XCIgPyB0aGlzLm51bWJlclRvV29yZChwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsKSkgOiAnJyxcclxuICAgICAgICBteVNMQ29uc2VudDogdGhpcy5jb21tb25TZXJ2aWNlcy5teVNMQ29uc2VudCxcclxuICAgICAgICBzZW5kVG9QaGFybWFjeTogdGhpcy5jb21tb25TZXJ2aWNlcy5zZW5kVG9QaGFybWFjeSxcclxuICAgICAgICBzZW5kVG9QaGFybWFjeVZhbHVlOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5VmFsdWUsXHJcbiAgICAgICAgZW1lcmdlbmN5U3VwcGx5OiB0aGlzLmNvbW1vblNlcnZpY2VzLmVtZXJnZW5jeVN1cHBseSxcclxuICAgICAgICBtb2xlY3VsZVN0cmVuZ3RoR3JpZDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/Lm1vbGVjdWxlU3RyZW5ndGhHcmlkKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tb2xlY3VsZVN0cmVuZ3RoR3JpZCA6ICcnLFxyXG4gICAgICAgIGVudGl0eUlkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMuZW50aXR5SWQsXHJcbiAgICAgICAgaXNQcmVzY3JpYmVBbmRQcmludDogdGhpcy5pc2VwcmlzY3JpYmVwcmludCxcclxuICAgICAgICBhbXRDb2RlU3lzdGVtOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uYW10Q29kZVN5c3RlbSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10Q29kZVN5c3RlbSA6IFwiXCIsXHJcbiAgICAgICAgYW10VmVyc2lvbjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmFtdFZlcnNpb24pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFZlcnNpb24gOiBcIlwiLFxyXG4gICAgICAgIHF1YW50aXR5V2l0aFVuaXQ6IHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlXaXRoVW5pdEZsYWcgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/Lm1heFF0eVVuaXRzKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tYXhRdHlVbml0cyA6IFwiXCIsXHJcbiAgICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWRcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlbW92ZUVyclRvYXN0KCk7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5hcGlTZXJ2aWNlLlBvc3QoYm9keSwgY29uZmlnLlBIWVNJQ0lBTi5NX1BSRVNDUklCRSkuc3Vic2NyaWJlKFxyXG4gICAgICAgIChyZXMpID0+IHtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcIk1wcmVzY3JpYmVNZWRcIiwgYm9keSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKFwiXCIsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCB0cnVlLCByZXMuZGF0YSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jbG9zZShyZXMuZGF0YSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9tZXNzYWdlICE9IG51bGwgJiYgcmVzLnJlc3BvbnNlX21lc3NhZ2UgIT0gJycpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcIk1wcmVzY3JpYmVNZWRcIiwgYm9keSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJNcHJlc2NyaWJlTWVkXCIsIGJvZHkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiTXByZXNjcmliZU1lZFwiLCBib2R5KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIk1wcmVzY3JpYmVNZWRcIiwgYm9keSk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcblxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIk1wcmVzY3JpYmVNZWRcIiwgYm9keSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjcmVhdGVUb29sVGlwKGV2ZW50OiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMudG9vbHRpcCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy50b29sdGlwLCAnX19yZWFjdF9jb21wb25lbnRfdG9vbHRpcCcpO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMudG9vbHRpcCwgJ3R5cGUtZGFyaycpO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMudG9vbHRpcCwgJ3BsYWNlLWxlZnQnKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRvb2x0aXAsICd6LWluZGV4JywgJzk5OTk5OTk5Jyk7XHJcbiAgICAgIGNvbnN0IHZpZXdSZWYgPSB0aGlzLnZpZXdSZWZDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMubXlUZW1wbGF0ZSk7XHJcbiAgICAgIHZpZXdSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICBjb25zdCB0b29sdGlwQ29udGVudCA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodmlld1JlZi5yb290Tm9kZXMpICYmIHZpZXdSZWYucm9vdE5vZGVzLmxlbmd0aCAhPSAwID8gdmlld1JlZi5yb290Tm9kZXNbMF0gOiBcIlwiO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMudG9vbHRpcCwgdG9vbHRpcENvbnRlbnQpO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCwgdGhpcy50b29sdGlwKTtcclxuICAgICAgdmFyIHRvb2w6IGFueSA9IHRoaXMudG9vbHRpcDtcclxuICAgICAgdmFyIGxlZnQgPSBldmVudC54IC0gKHRvb2wuY2xpZW50V2lkdGggKyAxNSk7XHJcbiAgICAgIHZhciBoZWlnaHR2YWx1ZSA9IGV2ZW50LnkgLSAodG9vbC5jbGllbnRIZWlnaHQgLyAyKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRvb2x0aXAsICdsZWZ0JywgbGVmdCArICdweCcpO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudG9vbHRpcCwgJ3RvcCcsIGhlaWdodHZhbHVlICsgJ3B4Jyk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImNyZWF0ZVRvb2xUaXBcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaG93dG9vbHRpcChsZW1pcHJvZHVjdDogYm9vbGVhbiwgYnJhbmR0b29sdGlwOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChsZW1pcHJvZHVjdCkge1xyXG4gICAgICAgIHRoaXMudG9vbHRpcCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnRvb2x0aXAsICdsZW1pLXRvb2x0aXAnKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMudG9vbHRpcCwgJ3R5cGUtZGFyaycpO1xyXG4gICAgICAgIGNvbnN0IHRhcmdldFJlY3QgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgICAgY29uc3Qgdmlld1JlZiA9IHRoaXMudmlld1JlZkNvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcoYnJhbmR0b29sdGlwKTtcclxuICAgICAgICB2aWV3UmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB2YXIgbXlkb206IGFueSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYnJhbmRuYW1ldG9vbHRpcFwiKTtcclxuICAgICAgICB2YXIgcmVjdCA9IG15ZG9tLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgIGNvbnN0IHRvb2x0aXBDb250ZW50ID0gdmlld1JlZi5yb290Tm9kZXNbMF07XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLnRvb2x0aXAsIHRvb2x0aXBDb250ZW50KTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCwgdGhpcy50b29sdGlwKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudG9vbHRpcCwgJ2xlZnQnLCByZWN0LmxlZnQgKyAncHgnKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudG9vbHRpcCwgJ3RvcCcsIHJlY3QudG9wIC0gbXlkb20ub2Zmc2V0SGVpZ2h0IC0gMTAgKyAncHgnKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudG9vbHRpcCwgJ3dpZHRoJywgbXlkb20uY2xpZW50V2lkdGggKyAncHgnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzaG93dG9vbHRpcFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vZWRpdCByeFxyXG4gIHNldEVkaXRWYWx1ZXMocnhMaXN0OiBhbnkpIHtcclxuICAgIHZhciBwYXlsb2FkID0ge307XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgcnhMaXN0LnBic0l0ZW1Db2RlQ29kZSA9IHJ4TGlzdC5wYnNJdGVtQ29kZUNvZGUgIT0gbnVsbCA/IHJ4TGlzdC5wYnNJdGVtQ29kZUNvZGUgOiBcIlwiO1xyXG4gICAgICBwYXlsb2FkID0ge1xyXG4gICAgICAgIHJlcXVlc3RfdHlwZTogXCJwYXJhbWV0ZXJcIixcclxuICAgICAgICBwcm9kdWN0SWQ6IHJ4TGlzdC5wcm9kdWN0SWQsXHJcbiAgICAgICAgcGJzQ29kZTogcnhMaXN0LnBic0l0ZW1Db2RlQ29kZSxcclxuICAgICAgICByeElkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4aWRcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5hcGlTZXJ2aWNlLkdldChjb25maWcuUEhZU0lDSUFOLkdFVF9NRURfREVUX0JZX0lEICsgXCI/cHJvZHVjdElkPVwiICsgcnhMaXN0LnByb2R1Y3RJZCArIFwiJnBic0NvZGU9XCIgKyAodGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QgPyByeExpc3QucGJzSXRlbUNvZGVDb2RlIDogXCJcIikgKyBcIiZyeElkPVwiICsgdGhpcy5jb21tb25TZXJ2aWNlcy5yeGlkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7IHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcInNldEVkaXRWYWx1ZXNcIiwgdGhpcy5yZXNwb25zZURhdGEucGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHZhciBlZGl0UmVzdHJpY3RGbGFnID0gKHRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0ICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocnhMaXN0Py5zdGF0dXMpICYmIHJ4TGlzdC5zdGF0dXMudG9Mb3dlckNhc2UoKSAhPSBcImRyYWZ0XCIpIHx8ICF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICAgICAgaWYgKGVkaXRSZXN0cmljdEZsYWcpIHtcclxuICAgICAgICAgICAgICB2YXIgTWVkID0gW107XHJcbiAgICAgICAgICAgICAgTWVkLnB1c2gocmVzLnJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gTWVkO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsID0gTWVkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0UmVzdHJpY3RlZE1lZGljaW5lKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RGb3JtdWxhdGlvbihyZXMucmVzcG9uc2UsIDApO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5tZWRpU2VhcmNoVmFsdWUgPSBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICAgIHRoaXMucGFnZSA9IDE7XHJcbiAgICAgICAgICAgIHRoaXMucnhPbmx5UEJTID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwgPSByeExpc3QucXVhbnRpdHlPZlRoZXJhcGV1dGljR29vZFF1YW50aXR5O1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwgPSByeExpc3QubWF4aW11bU51bWJlck9mUmVwZWF0cyA/IHJ4TGlzdC5tYXhpbXVtTnVtYmVyT2ZSZXBlYXRzIDogXCIwXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZG9zZVNlYXJjaFZhbHVlID0gcnhMaXN0LmRvc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZnJlcVNlYXJjaFZhbHVlID0gcnhMaXN0LmZyZXF1ZW5jeSA/IHJ4TGlzdC5mcmVxdWVuY3kgOiBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZvb2RTZWFyY2hWYWx1ZSA9IHJ4TGlzdC5mb29kID8gcnhMaXN0LmZvb2QgOiBcIlwiO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyeExpc3QuY29tcGxleEluc3RydWN0aW9ucykgJiYgdGhpcy5pbnN0cnVjdGlvbkRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIHZhciBkYXRhID0gdGhpcy5pbnN0cnVjdGlvbkRhdGEuZmlsdGVyKCgoeDogeyB0ZXh0OiBhbnk7IH0pID0+IHgudGV4dCA9PSByeExpc3QuY29tcGxleEluc3RydWN0aW9ucykpO1xyXG4gICAgICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGRhdGEpICYmIGRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlID0gcnhMaXN0LmNvbXBsZXhJbnN0cnVjdGlvbnM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkluc3RydWN0aW9uRGVzY3JpcHRpb24gPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGRhdGFbMF0uZGVzY3JpcHRpb24pID8gZGF0YVswXS5kZXNjcmlwdGlvbiA6IFwiXCI7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlID0gcnhMaXN0LmNvbXBsZXhJbnN0cnVjdGlvbnM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkluc3RydWN0aW9uRGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5jb21wbGV4SW5zdHJ1Y3Rpb25zKSA/IHJ4TGlzdC5jb21wbGV4SW5zdHJ1Y3Rpb25zIDogXCJcIjtcclxuICAgICAgICAgICAgICB0aGlzLkluc3RydWN0aW9uRGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY29tcGxleElkID0gcnhMaXN0LmNvbXBsZXhJZCA/IHJ4TGlzdC5jb21wbGV4SWQgOiAwO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJvdXRlU2VhcmNoVmFsdWUgPSByeExpc3Qucm91dGUgPyByeExpc3Qucm91dGUgOiBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4UFJOID0gcnhMaXN0LnBybiA9PSAwID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gcnhMaXN0LnByZXNjcmliZUFzO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdERhdGUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5zY3JpcHREYXRlKSA/IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHJ4TGlzdC5zY3JpcHREYXRlLCAneXl5eS1NTS1kZCcpIDogXCJcIjtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zdGFydERhdGUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5zdGFydERhdGUpID8gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0ocnhMaXN0LnN0YXJ0RGF0ZSwgJ3l5eXktTU0tZGQnKSA6IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZW5kRGF0ZSA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHJ4TGlzdC5wcmVzY3JpcHRpb25FeHBpcmVzVmFsdWUsICd5eXl5LU1NLWRkJyk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwgPSByeExpc3QubWluaW11bUludGVydmFsQmV0d2VlblJlcGVhdHMgPT0gLTEgPyAnJyA6IHJ4TGlzdC5taW5pbXVtSW50ZXJ2YWxCZXR3ZWVuUmVwZWF0cztcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wdXJwb3NlU2VhcmNoVmFsdWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5wdXJwb3NlKSA/IHJ4TGlzdC5wdXJwb3NlIDogXCJcIjtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5CcmFuZFN1YnN0aXR1dGVzTm90QWxsb3cgPSByeExpc3QuYnJhbmRTdWJzdGl0dXRlc05vdEFsbG93ZWQgPT0gMCA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5hbm5vdGF0aW9uID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyeExpc3QuYW5ub3RhdGlvbikgPyByeExpc3QuYW5ub3RhdGlvbiA6IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZG9jdG9yTm90ZXMgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5kb2N0b3JOb3RlcykgPyByeExpc3QuZG9jdG9yTm90ZXMgOiBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmlwdGlvblJlYXNvbiA9IHJ4TGlzdC5yZWFzb25Gb3JUaGVyYXBldXRpY0dvb2Q7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9ucyA9IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTm90ZXMgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5wYnNOb3RlcykgPyByeExpc3QucGJzTm90ZXMgOiBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnNBdXQgPSBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8gPSByeExpc3QuYXV0aG9yaXR5QXBwcm92YWxOdW1iZXI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3kgPSByeExpc3Quc2VuZFRvUGhhcm1hY3k7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3lWYWx1ZSA9IHJ4TGlzdC5zZW5kVG9QaGFybWFjeVZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVtZXJnZW5jeVN1cHBseSA9IHJ4TGlzdC5lbWVyZ2VuY3lTdXBwbHk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMubXlTTENvbnNlbnQgPSByeExpc3QubXlTTENvbnNlbnQ7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHkgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yZWd1bGF0aW9uMjQgPSByeExpc3QucmVndWxhdGlvbjI0ID09IDAgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0VHlwZSA9IHJ4TGlzdC5zY3JpcHRUeXBlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkNUR0NvUGF5bWVudCA9IHJ4TGlzdC5wYXRpZW50Q3RnRmxhZyA9PSAwID8gdHJ1ZSA6IGZhbHNlXHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMubGVtaSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzLnJlc3BvbnNlLmFpcCkgPyByZXMucmVzcG9uc2UuYWlwLmxlbWkgOiBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5sbWJjID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMucmVzcG9uc2UuYWlwKSA/IHJlcy5yZXNwb25zZS5haXAubG1iYyA6IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnVuVXN1YWxEb3NlRmxhZyA9IHJ4TGlzdC51blVzdWFsRG9zZUZsYWcgPT0gMCA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5TdGF0ZUF1dGhvcml0eU51bWJlciA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocnhMaXN0LnN0YXRlQXV0aG9yaXR5TnVtYmVyKSA/IHJ4TGlzdC5zdGF0ZUF1dGhvcml0eU51bWJlciA6IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkID0gcnhMaXN0LnJlc3RyaWN0ZWRQYnNTZWxlY3RlZEluZGV4ICE9IDAgPyByeExpc3QucmVzdHJpY3RlZFBic1NlbGVjdGVkSW5kZXggLSAxIDogbnVsbDsgdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyeExpc3QucGJzTGlzdEluc3RydWN0aW9ucykgPyByeExpc3QucGJzTGlzdEluc3RydWN0aW9ucyA6ICcnO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lID0gcnhMaXN0LmlzQnJhbmROYW1lID8gcnhMaXN0LmlzQnJhbmROYW1lIDogZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNTaG93QXV0aG9yaXR5ID0gcnhMaXN0LmlzU2hvd0F1dGhvcml0eSA/IHJ4TGlzdC5pc1Nob3dBdXRob3JpdHkgOiBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5hdXRob3JpdHlGb3JtTm8gPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5wYnNEdmFBdXRob3JpdHlOdW1iZXIpICYmIHJ4TGlzdC5wYnNEdmFBdXRob3JpdHlOdW1iZXIgIT0gMCA/IHJ4TGlzdC5wYnNEdmFBdXRob3JpdHlOdW1iZXIgOiBcIlwiO1xyXG4gICAgICAgICAgICBpZiAocnhMaXN0LmlzU2hvd0F1dGhvcml0eSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHkgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmlwdGlvbiA9IHRydWVcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICBpZiAocnhMaXN0LnN0YXR1cy50b0xvd2VyQ2FzZSgpID09IFwicHJlc2NyaWJlZFwiKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAocnhMaXN0LnN0YXR1cy50b0xvd2VyQ2FzZSgpID09IFwiY2Vhc2VkXCIpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChyeExpc3Quc3RhdHVzLnRvTG93ZXJDYXNlKCkgPT0gXCJjYW5jZWxsZWRcIikge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZWRpdFJlc3RyaWN0RmxhZykge1xyXG4gICAgICAgICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwic2V0RWRpdFZhbHVlc1wiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNldEVkaXRWYWx1ZXNcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNldEVkaXRWYWx1ZXNcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2V0RWRpdFZhbHVlc1wiLCBwYXlsb2FkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvL2VuYWJsZSBlLXByZXNjcmlwdGlvblxyXG4gIGVQcmVzY3JpcHRpb25WYWxpZGF0aW9uKHZhbHVlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpcHRpb24gPT09IHRydWUpIHtcclxuICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscz8uc2NyaXB0VHlwZSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc2NyaXB0VHlwZS50b1VwcGVyQ2FzZSgpID09ICdNJykge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfSBlbHNlIGlmICgoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscz8uc2NyaXB0VHlwZSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc2NyaXB0VHlwZS50b1VwcGVyQ2FzZSgpID09ICdFJyAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzPy5zdGF0dXMpICYmIHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cy50b0xvd2VyQ2FzZSgpID09ICdkcmFmdCcgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLmVQcmVzY3JpcHRpb25BbGxvd2VkID09IDAgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy52ZW5kb3JQYXRpZW50Q29uc2VudCA9PSB0cnVlICYmIHRoaXMuY29tbW9uU2VydmljZXMuY3JlYXRlUGF0aWVudFJlc3BvbnNlLmlzX2hwaW9fdmFsaWQgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5jcmVhdGVQYXRpZW50UmVzcG9uc2UuaXNfaHBpaV92YWxpZCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmNyZWF0ZVBhdGllbnRSZXNwb25zZS5pc19paGlfdmFsaWQpIHx8ICh2YWx1ZSA9PSAxICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHM/LnN0YXR1cykgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzLnRvTG93ZXJDYXNlKCkgPT0gJ2RyYWZ0JykpIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICgodGhpcy5jb21tb25TZXJ2aWNlcy5jcmVhdGVQYXRpZW50UmVzcG9uc2UuaXNfaHBpb192YWxpZCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmNyZWF0ZVBhdGllbnRSZXNwb25zZS5pc19ocGlpX3ZhbGlkICYmIHRoaXMuY29tbW9uU2VydmljZXMuY3JlYXRlUGF0aWVudFJlc3BvbnNlLmlzX2loaV92YWxpZCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMuZVByZXNjcmlwdGlvbkFsbG93ZWQgPT0gMCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnZlbmRvclBhdGllbnRDb25zZW50ID09IHRydWUpIHx8IHZhbHVlID09IDEpIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImVQcmVzY3JpcHRpb25WYWxpZGF0aW9uXCIpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRTdGF0ZVNjaGVkdWxlTnVtYmVyKHNlbGVjdGVkRm9ybXVsYXRpb246IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHNlbGVjdGVkRm9ybXVsYXRpb24gIT0gbnVsbCAmJiBzZWxlY3RlZEZvcm11bGF0aW9uLnN0YXRlU2NoZWR1bGVzICE9IG51bGwgJiYgc2VsZWN0ZWRGb3JtdWxhdGlvbi5zdGF0ZVNjaGVkdWxlcyAhPSBcIlwiKSB7XHJcbiAgICAgICAgdmFyIHN0YXRlU2NoZWR1bGVMaXN0ID0gW107XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxlY3RlZEZvcm11bGF0aW9uLnN0YXRlU2NoZWR1bGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAoc3RhdGVTY2hlZHVsZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBzdGF0ZVNjaGVkdWxlTGlzdC5jb25jYXQoc2VsZWN0ZWRGb3JtdWxhdGlvbi5zdGF0ZVNjaGVkdWxlc1tpXS5zY2hlZHVsZXMpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgc3RhdGVTY2hlZHVsZUxpc3QucHVzaChzZWxlY3RlZEZvcm11bGF0aW9uLnN0YXRlU2NoZWR1bGVzW2ldLnNjaGVkdWxlcyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzdGF0ZVNjaGVkdWxlTGlzdDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gW107XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0U3RhdGVTY2hlZHVsZU51bWJlclwiKTtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXV0aG9yaXR5Tm9WYWxpZGF0aW9uKGV2ZW50OiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBrZXl2YWx1ZSA9IGV2ZW50LmNoYXJDb2RlO1xyXG4gICAgICByZXR1cm4gKChrZXl2YWx1ZSA+IDY0ICYmIGtleXZhbHVlIDwgOTEpIHx8IChrZXl2YWx1ZSA+IDk2ICYmIGtleXZhbHVlIDwgMTIzKSB8fCAoa2V5dmFsdWUgPj0gNDggJiYga2V5dmFsdWUgPD0gNTcpKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiYXV0aG9yaXR5Tm9WYWxpZGF0aW9uXCIpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwYXlMb2FkU3RhdGVTY2hlZHVsZU51bWJlcihTY2hlZHVsZU51bWJlcjogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgc3RhdGVTY2hlZHVsZU51bWJlciA9IHRoaXMuZ2V0U3RhdGVTY2hlZHVsZU51bWJlcihTY2hlZHVsZU51bWJlcik7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHN0YXRlU2NoZWR1bGVOdW1iZXIpKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2V0U3RhdGVDb2RlRnJvbVN0YXRlTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnN0YXRlKS50b1VwcGVyQ2FzZSgpID09IFwiVEFTXCIgJiYgc3RhdGVTY2hlZHVsZU51bWJlci5sZW5ndGggIT0gMCAmJiBzdGF0ZVNjaGVkdWxlTnVtYmVyWzBdLmluZGV4T2YoXCJTNERcIikgIT0gLTEpIHtcclxuICAgICAgICAgIHJldHVybiBcIlM0RFwiO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5nZXRTdGF0ZUNvZGVGcm9tU3RhdGVOYW1lKHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuc3RhdGUpLnRvVXBwZXJDYXNlKCkgPT0gXCJOU1dcIiAmJiBzdGF0ZVNjaGVkdWxlTnVtYmVyLmxlbmd0aCAhPSAwICYmIHN0YXRlU2NoZWR1bGVOdW1iZXJbMF0uaW5kZXhPZihcIlM0QlwiKSAhPSAtMSkge1xyXG4gICAgICAgICAgcmV0dXJuIFwiUzRCXCI7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJwYXlMb2FkU3RhdGVTY2hlZHVsZU51bWJlclwiKTtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcmVzY3JpcGVBYm9ydCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBwYXlsb2FkID0ge1xyXG4gICAgICAgIHJlcXVlc3RfdHlwZTogXCJwYXJhbWV0ZXJcIixcclxuICAgICAgICB1c2VySWQ6IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy51c2VySWQsXHJcbiAgICAgICAgcGF0VXNlcklkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnBhdGllbnRVc2VySWRcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmFib3J0ZGlzYWJsZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5hcGlTZXJ2aWNlLkdldChjb25maWcuUEhZU0lDSUFOLlJYX1BSRVNDUklCRV9BQk9SVCArIFwiP3VzZXJJZD1cIiArIHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy51c2VySWQgKyBcIiZwYXRVc2VySWQ9XCIgKyB0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnBhdGllbnRVc2VySWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuaXNBYm9ydCA9IHRydWU7XHJcbiAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuYWJvcnRFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0RXJyX2NvZGUgPSBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlO1xyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydE1zZyA9IGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJwcmVzY3JpcGVBYm9ydFwiLCB0aGlzLnJlc3BvbnNlRGF0YS5wYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0U3VjY2VzcyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuYWJvcnRNc2cgPSByZXMucmVzcG9uc2VfbWVzc2FnZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgLy8gdGhpcy5jb21tb25TZXJ2aWNlcy5yeGlkID0gXCJcIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydEVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydEVycl9jb2RlID0gcmVzLmVycm9yX2NvZGU7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuYWJvcnRNc2cgPSByZXMucmVzcG9uc2VfbWVzc2FnZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJwcmVzY3JpcGVBYm9ydFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMucmVzcG9uc2VEYXRhLmlzUHJlc2NyaWJlKVxyXG4gICAgICAgICAgICB0aGlzLnNob3dSZXNwb25zZU1lc3NhZ2UoKTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgIHRoaXMuYWJvcnRCdG5GbGFnID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInByZXNjcmlwZUFib3J0XCIsIHBheWxvYWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmlzQWJvcnQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0RXJyb3IgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0TXNnID0gZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0RXJyX2NvZGUgPSBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlXHJcbiAgICAgICAgaWYgKHRoaXMucmVzcG9uc2VEYXRhLmlzUHJlc2NyaWJlKVxyXG4gICAgICAgICAgdGhpcy5zaG93UmVzcG9uc2VNZXNzYWdlKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJwcmVzY3JpcGVBYm9ydFwiLCBwYXlsb2FkKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmFib3J0QnRuRmxhZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJlc2NyaXBlQWJvcnRcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaG93UmVzcG9uc2VNZXNzYWdlKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydFN1Y2Nlc3MgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVkYXRhKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShcIlwiLCB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVkYXRhLnJlc3BvbnNlX21lc3NhZ2UsIHRydWUsIHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZWRhdGEuZGF0YSk7XHJcbiAgICAgICAgdGhpcy5jbG9zZSh0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVkYXRhLmRhdGEpO1xyXG4gICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmlzUHJpbnRBdmFpbGFibGUgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlZGF0YS5maWxlX3VybCkpIHtcclxuICAgICAgICAgICAgdGhpcy5hcGlTZXJ2aWNlLkdldCh0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVkYXRhLmZpbGVfdXJsKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzcG9uc2UpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcInNob3dSZXNwb25zZU1lc3NhZ2VcIiwgdGhpcy5yZXNwb25zZURhdGEucGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJ5dGVBcnJheSA9IG5ldyBVaW50OEFycmF5KGF0b2IocmVzcG9uc2UuZmlsZSkuc3BsaXQoJycpLm1hcChjaGFyID0+IGNoYXIuY2hhckNvZGVBdCgwKSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdmFyIGJiYiA9IG5ldyBCbG9iKFtieXRlQXJyYXldLCB7IHR5cGU6IFwiYXBwbGljYXRpb24vcGRmXCIgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmJiKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1dpbmRvdyA9IHdpbmRvdy5vcGVuKHVybCwgJ19ibGFuaycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKG5ld1dpbmRvdykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdXaW5kb3cuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByaW50V2FybmluZ1BvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJzaG93UmVzcG9uc2VNZXNzYWdlXCIsIHRoaXMucmVzcG9uc2VEYXRhLnBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgdGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlZGF0YS5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZSh0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVkYXRhLmVycm9yX2NvZGUsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2hvd1Jlc3BvbnNlTWVzc2FnZVwiLCB0aGlzLnJlc3BvbnNlRGF0YS5wYXlsb2FkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNob3dSZXNwb25zZU1lc3NhZ2VcIiwgdGhpcy5yZXNwb25zZURhdGEucGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydFN1Y2Nlc3MgJiYgdGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlRXJyb3IpIHtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4odGhpcy5yZXNwb25zZURhdGEuYWJvcnRNc2csICdzdWNjZXNzJyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoKHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZVN1Y2Nlc3MgJiYgIXRoaXMucmVzcG9uc2VEYXRhLmFib3J0RXJyb3IgJiYgIXRoaXMucmVzcG9uc2VEYXRhLmFib3J0U3VjY2VzcykpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3Blbih0aGlzLnJlc3BvbnNlRGF0YS5QcmVzY3JpYmVNc2csICdzdWNjZXNzJyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoKHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZUVycm9yICYmICF0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydEVycm9yICYmICF0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydFN1Y2Nlc3MpKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4odGhpcy5yZXNwb25zZURhdGEuUHJlc2NyaWJlTXNnLCAnZXJyb3InLCB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVFcnJfY29kZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlU3VjY2VzcyAmJiB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydEVycm9yKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4odGhpcy5yZXNwb25zZURhdGEuUHJlc2NyaWJlTXNnLCAnc3VjY2VzcycpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKHRoaXMucmVzcG9uc2VEYXRhLmFib3J0TXNnLCBcImVycm9yXCIsIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0RXJyX2NvZGUpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZUVycm9yICYmIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0RXJyb3IpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3Blbih0aGlzLnJlc3BvbnNlRGF0YS5QcmVzY3JpYmVNc2csICdlcnJvcicsIHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZUVycl9jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3Blbih0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydE1zZywgXCJlcnJvclwiLCB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydEVycl9jb2RlKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVTdWNjZXNzICYmIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0U3VjY2Vzcykge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKHRoaXMucmVzcG9uc2VEYXRhLmFib3J0TXNnLCBcInN1Y2Nlc3NcIik7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5hYm9ydEJ0bkZsYWcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5pc2VwcmlzY3JpYmVwcmludCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnJlc3BvbnNlRGF0YS5pc0Fib3J0ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmlzUHJlc2NyaWJlID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0U3VjY2VzcyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVFcnJvciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVTdWNjZXNzID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0RXJyb3IgPSBmYWxzZTtcclxuICAgICAgdGhpcy5yZXNwb25zZURhdGEuUHJlc2NyaWJlTXNnID0gXCJcIjtcclxuICAgICAgdGhpcy5yZXNwb25zZURhdGEuYWJvcnRNc2cgPSBcIlwiO1xyXG4gICAgICB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVkYXRhID0gXCJcIjtcclxuICAgICAgdGhpcy5yZXNwb25zZURhdGEucGF5bG9hZCA9IFwiXCI7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2hvd1Jlc3BvbnNlTWVzc2FnZVwiLCB0aGlzLnJlc3BvbnNlRGF0YS5wYXlsb2FkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIE1JTVNQcmltYXJ5U2VhcmNoKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIHBheWxvYWQgPSB7fTtcclxuICAgICAgaWYgKCF0aGlzLmlzU3RpbGxTZWFyY2hpbmcgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuc2VhcmNoQXBpU3RvcEZsYWcpIHtcclxuICAgICAgICAvLyBpZiAodGhpcy5zZWFyY2hNZWRpY2luZXNMZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgcGF5bG9hZCA9IHtcclxuICAgICAgICAgICAgcmVxdWVzdF90eXBlOiBcInBhcmFtZXRlclwiLFxyXG4gICAgICAgICAgICBwcm9kdWN0TmFtZTogdGhpcy5Qcm9kdWN0U2VhcmNoTmFtZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuaXNTdGlsbFNlYXJjaGluZykge1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5QcmltYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lc0xlbmd0aCA9IDA7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMubWVkaVNlYXJjaFZhbHVlLnRyaW0oKS5sZW5ndGggPCAzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNTdGlsbFNlYXJjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuUHJpbWFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWFyY2hBcGlTdG9wRmxhZyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuc2VhcmNoZWRNZWRpY2luZUxpc3QubGVuZ3RoIDwgOClcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHRoaXMuUHJpbWFyeVNlYXJjaFNwaW5uZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZXNQYWdlTnVtYmVyICs9IDE7XHJcbiAgICAgICAgICB2YXIgcGJzVHlwZSA9IHRoaXMucnhPbmx5UEJTICYmIHRoaXMucnhQcml2YXRlID8gXCJcIiA6IHRoaXMucnhPbmx5UEJTID8gXCJQQlMsUlBCU1wiIDogdGhpcy5yeFByaXZhdGUgPyBcIlByaXZhdGVcIiA6IFwiXCI7XHJcbiAgICAgICAgICBjb25zdCBzZWFyY2hNZXRob2QgPSB0aGlzLmNvbW1vblNlcnZpY2VzLnNtYXJ0U2VhcmNoID8gY29uZmlnLkdFVF9NRURTX0JZX1NNQVJUX1NFQVJDSCArICc/cHJvZHVjdE5hbWU9JyArIGVuY29kZVVSSUNvbXBvbmVudCh0aGlzLlByb2R1Y3RTZWFyY2hOYW1lKSArICcmcGFnZT0nICsgdGhpcy5zZWFyY2hNZWRpY2luZXNQYWdlTnVtYmVyICsgJyZub09mUmVjPTEwJnBic1R5cGU9JyArIHBic1R5cGVcclxuICAgICAgICAgICAgOiBjb25maWcuR0VUX01FRFNfQllfU0VBUkNIICsgJz9wcm9kdWN0TmFtZT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuUHJvZHVjdFNlYXJjaE5hbWUpICsgJyZwYWdlPScgKyB0aGlzLnNlYXJjaE1lZGljaW5lc1BhZ2VOdW1iZXIgKyAnJm5vT2ZSZWM9MTAnXHJcblxyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5NSU1TUHJpbWFyeWFwaSA9IHRoaXMuYXBpU2VydmljZS5HZXQoc2VhcmNoTWV0aG9kKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuaXNTdGlsbFNlYXJjaGluZykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlByaW1hcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lc0xlbmd0aCA9IDA7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5QcmltYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZXNMZW5ndGggPSAwOyB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwiTUlNU1ByaW1hcnlTZWFyY2hcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZExpc3QgPSByZXMucmVzcG9uc2UuZmlsdGVyKChpdGVtOiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuaXNQYnNUeXBlTWF0Y2goaXRlbS5wYnNUeXBlLCBwYnNUeXBlKVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVzTGVuZ3RoID0gZmlsdGVyZWRMaXN0Lmxlbmd0aDtcclxuICAgICAgICAgICAgICAgIGZpbHRlcmVkTGlzdC5mb3JFYWNoKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgLy8gaWYgKHRoaXMuc2VhcmNoZWRNZWRpY2luZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHRoaXMuc2VhcmNoZWRNZWRpY2luZUxpc3QuZmlsdGVyKCh4OiBhbnkpID0+IHgucHJvZERpc3BsYXlWYWx1ZSA9PSBkYXRhLnByb2REaXNwbGF5VmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5mb3JFYWNoKCh2YWw6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcHJvZHVjdCA9IHZhbC5wcm9kSGlkZGVuVmFsdWUuaW5jbHVkZXMoZGF0YS5wcm9kSGlkZGVuVmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IGRhdGEuc2VhcmNoQmFzZS50b0xvd2VyQ2FzZSgpID09ICdicmFuZGtleScgPyAnQksnIDogZGF0YS5zZWFyY2hCYXNlLnRvTG93ZXJDYXNlKCkgPT0gJ3Byb2RwYWNra2V5JyA/ICdQUEsnIDogZGF0YS5zZWFyY2hCYXNlLnRvTG93ZXJDYXNlKCkgPT0gJ3ZpcnR1YWxuYW1lJyA/ICdWTicgOiBkYXRhLnNlYXJjaEJhc2UudG9Mb3dlckNhc2UoKSA9PSAncHJvZHVjdGtleScgPyAnUEsnIDogZGF0YS5zZWFyY2hCYXNlLnRvTG93ZXJDYXNlKCkgPT0gJ3Byb2R1Y3RrZXlhY3RpdmVpbmdyZWRpZW50JyA/ICdQS0EnIDogZGF0YS5zZWFyY2hCYXNlLnRvTG93ZXJDYXNlKCkgPT0gJ2Z1bGxwaScgPyAnRlBJJyA6ICdQTic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvZHVjdCAmJiB0eXBlICE9ICdQS0EnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLnByb2RIaWRkZW5WYWx1ZSArPSAnLCcgKyBkYXRhLnByb2RIaWRkZW5WYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdC5wdXNoKGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdC5sZW5ndGggPiA3IHx8IHJlcy5yZXNwb25zZS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuUHJpbWFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZS5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdC5sZW5ndGggPCA4ICYmIHRoaXMuaXNTdGlsbFNlYXJjaGluZykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLk1JTVNQcmltYXJ5U2VhcmNoKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuUHJpbWFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVzTGVuZ3RoID0gMDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcInByaW1hcnlNSU1TU2VhcmNoXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5QcmltYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVzTGVuZ3RoID0gMDtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJwcmltYXJ5TUlNU1NlYXJjaFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuUHJpbWFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZXNMZW5ndGggPSAwO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJpbWFyeU1JTVNTZWFyY2hcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5QcmltYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNlYXJjaE1lZGljaW5lc0xlbmd0aCA9IDA7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJwcmltYXJ5TUlNU1NlYXJjaFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIE1JTVNTZWNvbmRhcnlTZWFyY2goKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuaXNTdGlsbFNlYXJjaGluZyAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5zZWFyY2hBcGlTdG9wRmxhZykge1xyXG4gICAgICAgIHZhciBwYXlsb2FkID0ge307XHJcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoQnluYW1lTGVuZ3RoICE9IDAgJiYgdGhpcy5Qcm9kdWN0VHlwZS50b0xvd2VyQ2FzZSgpICE9IFwicGtcIiAmJiB0aGlzLlByb2R1Y3RUeXBlLnRvTG93ZXJDYXNlKCkgIT0gXCJwblwiICYmIHRoaXMuUHJvZHVjdFR5cGUudG9Mb3dlckNhc2UoKSAhPSBcInZuXCIgJiYgdGhpcy5Qcm9kdWN0VHlwZS50b0xvd2VyQ2FzZSgpICE9IFwiZnBpXCIpIHtcclxuICAgICAgICAgIHBheWxvYWQgPSB7XHJcbiAgICAgICAgICAgIHJlcXVlc3RfdHlwZTogXCJwYXJhbWV0ZXJcIixcclxuICAgICAgICAgICAgcHJvZHVjdE5hbWU6IHRoaXMucHJvZEhpZGRlbk5hbWUsXHJcbiAgICAgICAgICAgIHR5cGU6IHRoaXMuUHJvZHVjdFR5cGUsXHJcbiAgICAgICAgICAgIHByZXNjcmliZXJUeXBlOiBcIk1QXCJcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0Lmxlbmd0aCA8PSAzKVxyXG4gICAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaEJ5bmFtZVBhZ2VOdW1iZXIgKz0gMTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuTUlNU1NlY29uZGFyeWFwaSA9IHRoaXMuYXBpU2VydmljZS5HZXQoY29uZmlnLkdFVF9NRURTX0JZX05BTUUgKyAnP3Byb2R1Y3ROYW1lPScgKyBlbmNvZGVVUklDb21wb25lbnQodGhpcy5wcm9kSGlkZGVuTmFtZSkgKyAnJnR5cGU9JyArIHRoaXMuUHJvZHVjdFR5cGUgKyAnJnByZXNjcmliZXJUeXBlPU1QJnBhZ2U9JyArIHRoaXMuc2VhcmNoQnluYW1lUGFnZU51bWJlciArICcmbm9PZlJlYz0xMCcpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoQnluYW1lTGVuZ3RoID0gMDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VhcmNoQXBpU3RvcEZsYWcgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlOyB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwiTUlNU1NlY29uZGFyeVNlYXJjaFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlYXJjaEFwaVN0b3BGbGFnKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5TZWNvbmRhcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaEJ5bmFtZVBhZ2VOdW1iZXIgPSAxO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICByZXMucmVzcG9uc2UuZm9yRWFjaCgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwucHVzaChkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoQnluYW1lTGVuZ3RoID0gcmVzLnJlc3BvbnNlLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgLy8gaWYgKHRoaXMuaXNOb25QYnNGbGFnKSB7XHJcbiAgICAgICAgICAgICAgICAgIC8vICAgdGhpcy5yeE9ubHlOT05QQlNGaWx0ZXIoKTtcclxuICAgICAgICAgICAgICAgICAgLy8gfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgLy8gICBpZiAodGhpcy5yeE9ubHlQQlMgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAvLyAgICAgdGhpcy5yeE9ubHlQQlNGaWx0ZXIoKTtcclxuICAgICAgICAgICAgICAgICAgLy8gICB9XHJcbiAgICAgICAgICAgICAgICAgIC8vICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWw7XHJcbiAgICAgICAgICAgICAgICAgIC8vICAgfVxyXG4gICAgICAgICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMub25DaGVja2JveENoYW5nZSgyKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdC5sZW5ndGggPD0gMykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzLnJlc3BvbnNlKSAmJiByZXMucmVzcG9uc2UubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLk1JTVNTZWNvbmRhcnlTZWFyY2goKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaEJ5bmFtZUxlbmd0aCA9IDA7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlYXJjaEFwaVN0b3BGbGFnID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcIk1JTVNTZWNvbmRhcnlTZWFyY2hcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5TZWNvbmRhcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWFyY2hCeW5hbWVMZW5ndGggPSAwO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIk1JTVNTZWNvbmRhcnlTZWFyY2hcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWFyY2hBcGlTdG9wRmxhZyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiTUlNU1NlY29uZGFyeVNlYXJjaFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiTUlNU1NlY29uZGFyeVNlYXJjaFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaW50V2FybmluZ1BvcCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBkYXRhID0gXCJQbGVhc2UgZW5hYmxlIHBvcHVwIG9uIHRoZSBicm93c2VyIHRvIHZpZXcvcHJpbnQgdGhlIHByZXNjcmlwdGlvbi5cIjtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKFJlYWxUaW1lUHJlc2NyaXB0aW9uTW9uaXRvcmluZ0NvbXBvbmVudCwgdGhpcy5jb250ZW50LCBkYXRhKS5zdWJzY3JpYmUoKHJlcykgPT4geyB9KTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJpbnRXYXJuaW5nUG9wXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbnVtYmVyVG9Xb3JkKG46IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKG4gPCAwKVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgdmFyIHNpbmdsZV9kaWdpdCA9IFsnJywgJ09uZScsICdUd28nLCAnVGhyZWUnLCAnRm91cicsICdGaXZlJywgJ1NpeCcsICdTZXZlbicsICdFaWdodCcsICdOaW5lJ11cclxuICAgICAgdmFyIGRvdWJsZV9kaWdpdCA9IFsnVGVuJywgJ0VsZXZlbicsICdUd2VsdmUnLCAnVGhpcnRlZW4nLCAnRm91cnRlZW4nLCAnRmlmdGVlbicsICdTaXh0ZWVuJywgJ1NldmVudGVlbicsICdFaWdodGVlbicsICdOaW5ldGVlbiddXHJcbiAgICAgIHZhciBiZWxvd19odW5kcmVkID0gWydUd2VudHknLCAnVGhpcnR5JywgJ0ZvcnR5JywgJ0ZpZnR5JywgJ1NpeHR5JywgJ1NldmVudHknLCAnRWlnaHR5JywgJ05pbmV0eSddXHJcbiAgICAgIGlmIChuID09PSAwKSByZXR1cm4gJ1plcm8nO1xyXG4gICAgICBmdW5jdGlvbiB0cmFuc2xhdGUobjogYW55KSB7XHJcbiAgICAgICAgdmFyIHdvcmQ6IGFueSA9ICcnXHJcbiAgICAgICAgaWYgKG4gPCAxMCkge1xyXG4gICAgICAgICAgd29yZCA9IHNpbmdsZV9kaWdpdFtuXSArICcgJ1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChuIDwgMjApIHtcclxuICAgICAgICAgIHdvcmQgPSBkb3VibGVfZGlnaXRbbiAtIDEwXSArICcgJ1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChuIDwgMTAwKSB7XHJcbiAgICAgICAgICB2YXIgcmVtID0gdHJhbnNsYXRlKG4gJSAxMClcclxuICAgICAgICAgIHdvcmQgPSBiZWxvd19odW5kcmVkWyhuIC0gbiAlIDEwKSAvIDEwIC0gMl0gKyAnICcgKyByZW1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAobiA8IDEwMDApIHtcclxuICAgICAgICAgIHdvcmQgPSBzaW5nbGVfZGlnaXRbTWF0aC50cnVuYyhuIC8gMTAwKV0gKyAnIEh1bmRyZWQgJyArIHRyYW5zbGF0ZShuICUgMTAwKVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChuIDwgMTAwMDAwMCkge1xyXG4gICAgICAgICAgd29yZCA9IHRyYW5zbGF0ZShuIC8gMTAwMCkudHJpbSgpICsgJyBUaG91c2FuZCAnICsgdHJhbnNsYXRlKG4gJSAxMDAwKVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChuIDwgMTAwMDAwMDAwMCkge1xyXG4gICAgICAgICAgd29yZCA9IHRyYW5zbGF0ZShuIC8gMTAwMDAwMCkudHJpbSgpICsgJyBNaWxsaW9uICcgKyB0cmFuc2xhdGUobiAlIDEwMDAwMDApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgd29yZCA9IHRyYW5zbGF0ZShuIC8gMTAwMDAwMDAwMCkudHJpbSgpICsgJyBCaWxsaW9uICcgKyB0cmFuc2xhdGUobiAlIDEwMDAwMDAwMDApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB3b3JkXHJcbiAgICAgIH1cclxuICAgICAgdmFyIHJlc3VsdCA9IHRyYW5zbGF0ZShuKVxyXG4gICAgICByZXR1cm4gcmVzdWx0LnRyaW0oKVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJudW1iZXJUb1dvcmRcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RXh0ZW1wTVBQTmFtZSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikgIT0gbnVsbCkge1xyXG4gICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXQpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXQubGVuZ3RoICE9IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdPy5tcHBzKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLm1wcHMubGVuZ3RoID4gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0ubXBwc1swXT8ubXBwTmFtZSkpIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLm1wcHNbMF0ubXBwTmFtZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5wcm9kdWN0TmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUudHJpbSgpIDogXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0RXh0ZW1wTVBQTmFtZVwiKTtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBodG1sVG9UZXh0Q29udmVydCh2YWx1ZTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCB0bXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdESVYnKTtcclxuICAgICAgdG1wLmlubmVySFRNTCA9IHZhbHVlO1xyXG4gICAgICByZXR1cm4gdG1wLnRleHRDb250ZW50IHx8IHRtcC5pbm5lclRleHQgfHwgJyc7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImh0bWxUb1RleHRDb252ZXJ0XCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGF1dGhvcml0eU5vQ2hhbmdlKHZhbHVlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5TdGF0ZUF1dGhvcml0eU51bWJlciA9IHZhbHVlLnJlcGxhY2UoL1teYS16QS1aIDAtOV0vZywgXCJcIikucmVwbGFjZSgvXFxzKy9nLCBcIlwiKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJhdXRob3JpdHlOb0NoYW5nZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFscGhhUmVzdHJpY3Rpb24oZXZlbnQ6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIGtleXZhbHVlID0gZXZlbnQuY2hhckNvZGU7XHJcbiAgICAgIHJldHVybiAoKGtleXZhbHVlID4gNjQgJiYga2V5dmFsdWUgPCA5MSkgfHwgKGtleXZhbHVlID4gOTYgJiYga2V5dmFsdWUgPCAxMjMpIHx8IChrZXl2YWx1ZSA+PSA0OCAmJiBrZXl2YWx1ZSA8PSA1NykgfHwga2V5dmFsdWUgPT0gMzIpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJhbHBoYVJlc3RyaWN0aW9uXCIpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFkZFRvRmF2b3VyaXRlcygpIHtcclxuICAgIGNvbnN0IGlzSW5GYXZvdXJpdGVzID0gdGhpcy5pc0N1cnJlbnRNZWRpY2luZUluRmF2b3VyaXRlcygpO1xyXG4gICAgY29uc3QgaXNBZGRpbmcgPSAhaXNJbkZhdm91cml0ZXM7XHJcbiAgICB2YXIgcGh5c2ljaWFuRGV0YWlscyA9IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscztcclxuICAgIHZhciBib2R5ID0ge1xyXG4gICAgICB1c2VySWRTdHJpbmc6IHBoeXNpY2lhbkRldGFpbHMudXNlcklkLFxyXG4gICAgICBwcm9kdWN0SWQ6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0SWQsXHJcbiAgICAgIHByb2R1Y3ROYW1lOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZSk/dGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lOlwiXCIsXHJcbiAgICAgIHF1YW50aXR5OiB0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsLFxyXG4gICAgICByZXBlYXRzOiB0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwsXHJcbiAgICAgIHJlc3RyaWN0aW9uOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3Q/KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMgIT0gbnVsbCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zICE9IFwiXCJcclxuICAgICAgICAgICAgICAgICAgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzVHlwZSArIFwiIChcIiArIHRoaXMuZ2V0UmVzdHJpY3Rpb25zKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMpICsgXCIpIFwiXHJcbiAgICAgICAgICAgICAgICAgIDogdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic1R5cGUpOlwiXCIsXHJcbiAgICAgIGdlbmVyaWNOYW1lOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5nZW5lcmljTmFtZSk/dGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmdlbmVyaWNOYW1lOlwiXCIsXHJcbiAgICAgIHBic0NvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5wYnNDb2RlKT90aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LnBic0NvZGU6XCJcIixcclxuICAgICAgYWN0aXZlOiBpc0FkZGluZyxcclxuICAgICAgcmVzdHJpY3RlZE1lZGljaW5lOiB0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCxcclxuICAgICAgZG9zZTogdGhpcy5jb21tb25TZXJ2aWNlcy5kb3NlU2VhcmNoVmFsdWUsXHJcbiAgICAgIGZyZXF1ZW5jeTogdGhpcy5jb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWUsXHJcbiAgICAgIGZvb2Q6dGhpcy5jb21tb25TZXJ2aWNlcy5mb29kU2VhcmNoVmFsdWUsXHJcbiAgICAgIGluc3RydWN0aW9uOnRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSxcclxuICAgICAgcm91dGU6dGhpcy5jb21tb25TZXJ2aWNlcy5yb3V0ZVNlYXJjaFZhbHVlLFxyXG4gICAgICAuLi4oIWlzQWRkaW5nICYmIHsgZW5jcnlwdGVkSWQ6IHRoaXMuY29tbW9uU2VydmljZXMuZmF2b3VyaXRlRW5jcnlwdGVkSWQgfSksXHJcbiAgICB9XHJcbiAgICAgICAgdGhpcy5hcGlTZXJ2aWNlLlBvc3QoYm9keSwgY29uZmlnLlBIWVNJQ0lBTi5BRERfRkFWT1VSSVRFX01FRElDSU5FKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJBZGRGYXZvdXJpdGVzXCIsIGJvZHkpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZhdm91cml0ZU1lZGljaW5lTGlzdCA9IHJlcy5mYXZvdXJ0aWVzTGlzdCB8fCBbXTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLm9yaWdpbmFsRmF2b3VyaXRlTWVkaWNpbmVMaXN0ID0gcmVzLmZhdm91cnRpZXNMaXN0IHx8IFtdO1xyXG4gICAgICAgICAgICAgIGlmICghaXNBZGRpbmcpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZmF2b3VyaXRlRW5jcnlwdGVkSWQgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5jbGVhck1lZGljYWxQcmVzY3JpcHRpb25GYXZvdXJpdGVEYXRhKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dGYXZvdXJpdGVNZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFyZXMuZmF2b3VydGllc0xpc3QgfHwgcmVzLmZhdm91cnRpZXNMaXN0Lmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihcclxuICAgICAgICAgICAgICAgICAgICBcIk5vIG1vcmUgZmF2b3VyaXRlcyByZW1haW5pbmcuIFlvdSBjYW4gYWRkIG1lZGljaW5lcyB0byBmYXZvdXJpdGVzIGZyb20gdGhlIHNlYXJjaCByZXN1bHRzLlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiaW5mb1wiXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZmF2b3VyaXRlRW5jcnlwdGVkSWQgPSByZXMuZmF2b3VydGllc0xpc3QgJiYgcmVzLmZhdm91cnRpZXNMaXN0Lmxlbmd0aCA+IDAgPyByZXMuZmF2b3VydGllc0xpc3RbcmVzLmZhdm91cnRpZXNMaXN0Lmxlbmd0aCAtIDFdLmVuY3J5cHRlZElkIDogXCJcIjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwiQWRkRmF2b3VyaXRlc1wiLCBib2R5KTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93bkxpc3QgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJBZGRGYXZvdXJpdGVzXCIsIGJvZHkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiQWRkRmF2b3VyaXRlc1wiLCBib2R5KTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAgZ2V0RmF2b3VydGllc0xpc3QoKSB7XHJcbiAgICB2YXIgcGF5bG9hZCA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgcGF5bG9hZCA9IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy51c2VySWQ7XHJcbiAgICAgIHRoaXMuYXBpU2VydmljZS5HZXQoY29uZmlnLlBIWVNJQ0lBTi5HRVRfRkFWT1VSSVRFX01FRElDSU5FX0xJU1QgKyBcIj91c2VySWRTdHJpbmc9XCIgKyBwYXlsb2FkK1wiJnJlc3RyaWN0ZWRNZWRpY2luZT1cIit0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcImdldEZhdm91cnRpZXNMaXN0XCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZhdm91cml0ZU1lZGljaW5lTGlzdCA9IHJlcy5mYXZvdXJpdGVzTGlzdDtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5vcmlnaW5hbEZhdm91cml0ZU1lZGljaW5lTGlzdCA9IHJlcy5mYXZvdXJpdGVzTGlzdDtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZmF2b3VyaXRlTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMub3JpZ2luYWxGYXZvdXJpdGVNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJnZXRGYXZvdXJ0aWVzTGlzdFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldEZhdm91cnRpZXNMaXN0XCIsIHBheWxvYWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0RmF2b3VydGllc0xpc3RcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRGYXZvdXJ0aWVzTGlzdFwiLCBwYXlsb2FkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNob3dGYXZvdXJ0aWVzKCkge1xyXG4gICAgdGhpcy5jb21tb25TZXJ2aWNlcy5mYXZvdXJpdGVFbmNyeXB0ZWRJZCA9IFwiXCI7XHJcbiAgICB0aGlzLnNob3dGYXZvdXJpdGVNZWQgPSAhdGhpcy5zaG93RmF2b3VyaXRlTWVkO1xyXG4gICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCkge1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLk1JTVNQcmltYXJ5YXBpKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuTUlNU1ByaW1hcnlhcGkudW5zdWJzY3JpYmUoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLk1JTVNTZWNvbmRhcnlhcGkpKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5NSU1TU2Vjb25kYXJ5YXBpLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLnNob3dGYXZvdXJpdGVNZWQpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uID0gbnVsbDtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCA9IFtdO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZhdm91cml0ZU1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZmF2b3VyaXRlTWVkaWNpbmVMaXN0ID0gdGhpcy5jb21tb25TZXJ2aWNlcy5vcmlnaW5hbEZhdm91cml0ZU1lZGljaW5lTGlzdDtcclxuICAgIH1cclxuICAgIHRoaXMuY29tbW9uU2VydmljZXMuY2xlYXJNZWRpY2FsUHJlc2NyaXB0aW9uRGF0YSgpO1xyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5jbGVhck1lZGljYWxQcmVzY3JpcHRpb25GYXZvdXJpdGVEYXRhKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gPSBudWxsO1xyXG4gICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgdGhpcy5QcmltYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZWFyY2hNZWRpY2luZXNMZW5ndGggPSAwO1xyXG4gICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWFyY2hBcGlTdG9wRmxhZyA9IHRydWU7XHJcbiAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgdGhpcy5TZWNvbmRhcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgICBcclxuICAgIHRoaXMuc2VhcmNoZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgIHRoaXMuY29tbW9uU2VydmljZXMubWVkaVNlYXJjaFZhbHVlID0gXCJcIjtcclxuICAgIHRoaXMubWVkaVNlYXJjaFZhbHVlID0gXCJcIjtcclxuICAgIHRoaXMudGVtcE1lZGlTZWFyY2hWYWx1ZSA9IFwiXCI7XHJcbiAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICAvL0Zhdm91cml0ZU1lZGljaW5lIExvYWRpbmdcclxuICBmYXZvdXJpdGVNZWRpY2luZUxvYWRpbmcocnhMaXN0OiBhbnkpIHtcclxuICAgIHZhciBwYXlsb2FkID0ge307XHJcbiAgICB0cnkge1xyXG4gICAgICBpZighdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3Qpe1xyXG4gICAgICByeExpc3QucGJzQ29kZSA9IHJ4TGlzdC5wYnNDb2RlICE9IG51bGwgPyByeExpc3QucGJzQ29kZSA6IFwiXCI7XHJcbiAgICAgIHBheWxvYWQgPSB7XHJcbiAgICAgICAgcmVxdWVzdF90eXBlOiBcInBhcmFtZXRlclwiLFxyXG4gICAgICAgIHByb2R1Y3RJZDogcnhMaXN0LnByb2R1Y3RJZCxcclxuICAgICAgICBwYnNDb2RlOiByeExpc3QucGJzQ29kZSxcclxuICAgICAgICByeElkOiAwXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuZmF2TWVkaWNpbmVMb2FkZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZhdm91cml0ZUVuY3J5cHRlZElkID0gcnhMaXN0LmVuY3J5cHRlZElkO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuYXBpU2VydmljZS5HZXQoY29uZmlnLlBIWVNJQ0lBTi5HRVRfTUVEX0RFVF9CWV9JRCArIFwiP3Byb2R1Y3RJZD1cIiArIHJ4TGlzdC5wcm9kdWN0SWQgKyBcIiZwYnNDb2RlPVwiICsgKHRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0ID8gcnhMaXN0LnBic0NvZGUgOiBcIlwiKSArIFwiJnJ4SWQ9XCIgKyAwKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICB0aGlzLmZhdk1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcInNldEVkaXRWYWx1ZXNcIiwgdGhpcy5yZXNwb25zZURhdGEucGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmF2TWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdmFyIE1lZCA9IFtdO1xyXG4gICAgICAgICAgICBNZWQucHVzaChyZXMucmVzcG9uc2UpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gTWVkO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCA9IE1lZDtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uID0gTWVkO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNsZWFyTWVkaWNhbFByZXNjcmlwdGlvbkRhdGFPbmNoYW5nZW9mTWVkaWNpbmUoTWVkKTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RGb3JtdWxhdGlvbihyZXMucmVzcG9uc2UsIDApO1xyXG4gICAgICAgICAgICB0aGlzLmFzc2lnbkNvbWJpbmF0aW9ucyhyeExpc3QpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5tZWRpU2VhcmNoVmFsdWUgPSBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLm1lZGlTZWFyY2hWYWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMudGVtcE1lZGlTZWFyY2hWYWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5wYWdlID0gMTtcclxuICAgICAgICAgICAgdGhpcy5yeE9ubHlQQlMgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmF2TWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJzZXRFZGl0VmFsdWVzXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgIHRoaXMuZmF2TWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2V0RWRpdFZhbHVlc1wiLCBwYXlsb2FkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLmZhdk1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2V0RWRpdFZhbHVlc1wiLCBwYXlsb2FkKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZmF2TWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB2YXIgc2VsZWN0ZWRkYXRhID0gbnVsbDtcclxuICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyeExpc3Q/LnByb2R1Y3RJZCkpIHtcclxuICAgICAgICAgIHNlbGVjdGVkZGF0YSA9IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QuZmlsdGVyKCh4OiB7IHByb2R1Y3RJZDogYW55OyB9KSA9PiB4LnByb2R1Y3RJZCA9PSBOdW1iZXIocnhMaXN0LnByb2R1Y3RJZCkpO1xyXG4gICAgICAgICAgLy8gc2VsZWN0ZWRkYXRhID0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdC5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiA9IHNlbGVjdGVkZGF0YVswXTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY2xlYXJNZWRpY2FsUHJlc2NyaXB0aW9uRGF0YU9uY2hhbmdlb2ZNZWRpY2luZShzZWxlY3RlZGRhdGFbMF0pO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmlzUnRwbU5leHQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5hdXRob3JpdHlGb3JtTm8gPSB0aGlzLmdldEFkZEF1dGhWYWx1ZSh0aGlzLnRlbXBBdXRob3JpdHlGb3JtTm8pO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEVuZERhdGVDYWxjdWxhdGVyKCk7XHJcbiAgICAgICAgICB0aGlzLmVuYWJsZVByZXNjcmliZUFzKHNlbGVjdGVkZGF0YVswXSk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkQnJhbmRGb3JtdWxhdGlvbiA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmZhdk1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZXRFZGl0VmFsdWVzXCIsIHBheWxvYWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNDdXJyZW50TWVkaWNpbmVJbkZhdm91cml0ZXMoKSB7XHJcbiAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiB8fCAhdGhpcy5jb21tb25TZXJ2aWNlcy5mYXZvdXJpdGVNZWRpY2luZUxpc3QgfHwgdGhpcy5jb21tb25TZXJ2aWNlcy5mYXZvdXJpdGVNZWRpY2luZUxpc3QubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5jb21tb25TZXJ2aWNlcy5mYXZvdXJpdGVNZWRpY2luZUxpc3Quc29tZSgoZmF2TWVkOiB7IHByb2R1Y3RJZDogYW55OyBwYnNDb2RlOiBhbnk7IHByb2R1Y3ROYW1lOiBhbnk7IH0pID0+XHJcbiAgICAgIGZhdk1lZC5wcm9kdWN0SWQudG9TdHJpbmcoKSA9PT0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3RJZC50b1N0cmluZygpICYmXHJcbiAgICAgICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGZhdk1lZC5wYnNDb2RlKSA/IGZhdk1lZC5wYnNDb2RlIDogXCJcIikgPT09ICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucGJzQ29kZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzQ29kZSA6IFwiXCIpICYmXHJcbiAgICAgIGZhdk1lZC5wcm9kdWN0TmFtZSA9PT0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgaXNQYnNUeXBlTWF0Y2goaXRlbVBic1R5cGU6IGFueSwgcGJzVHlwZUZpbHRlcjogYW55KTogYm9vbGVhbiB7XHJcblxyXG4gICAgaWYgKCFwYnNUeXBlRmlsdGVyPy50cmltKCkpIHJldHVybiB0cnVlO1xyXG5cclxuICAgIGNvbnN0IGFsbG93ZWRUeXBlcyA9IHBic1R5cGVGaWx0ZXJcclxuICAgICAgLnNwbGl0KC9bLDtdKy8pXHJcbiAgICAgIC5tYXAoKHg6IGFueSkgPT4geC50cmltKCkudG9Mb3dlckNhc2UoKSlcclxuICAgICAgLmZpbHRlcihCb29sZWFuKTtcclxuXHJcbiAgICBjb25zdCBpc1ByaXZhdGVGaWx0ZXIgPSBhbGxvd2VkVHlwZXMuaW5jbHVkZXMoJ3ByaXZhdGUnKTtcclxuXHJcbiAgICBpZiAoIWl0ZW1QYnNUeXBlPy50cmltKCkpIHtcclxuICAgICAgcmV0dXJuIGlzUHJpdmF0ZUZpbHRlcjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpdGVtVHlwZXMgPSBpdGVtUGJzVHlwZVxyXG4gICAgICAuc3BsaXQoL1ssO10rLylcclxuICAgICAgLm1hcCgoeDogYW55KSA9PiB4LnRyaW0oKS50b0xvd2VyQ2FzZSgpKVxyXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pO1xyXG5cclxuICAgIHJldHVybiBpdGVtVHlwZXMuc29tZSgodHlwZTogYW55KSA9PiBhbGxvd2VkVHlwZXMuaW5jbHVkZXModHlwZSkpO1xyXG4gIH1cclxuXHJcbiAgYXNzaWduQ29tYmluYXRpb25zKG1lZDogYW55KSB7IFxyXG4gICAgdGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbCA9IG1lZC5xdWFudGl0eTtcclxuICAgIHRoaXMuY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCA9IG1lZC5yZXBlYXRzO1xyXG4gICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kb3NlU2VhcmNoVmFsdWUgPSBtZWQuZG9zZTtcclxuICAgIHRoaXMuY29tbW9uU2VydmljZXMuZnJlcVNlYXJjaFZhbHVlID0gbWVkLmZyZXF1ZW5jeTtcclxuICAgIHRoaXMuY29tbW9uU2VydmljZXMuZm9vZFNlYXJjaFZhbHVlID0gbWVkLmZvb2Q7XHJcbiAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUgPSBtZWQuaW5zdHJ1Y3Rpb247XHJcbiAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJvdXRlU2VhcmNoVmFsdWUgPSBtZWQucm91dGU7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuIiwiPG5nLXRlbXBsYXRlICNyeHdpZGdldHM+IDwvbmctdGVtcGxhdGU+XHJcbjxkaXYgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbWltc1wiPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiUmVhY3RNb2RhbF9fT3ZlcmxheSBSZWFjdE1vZGFsX19PdmVybGF5LS1hZnRlci1vcGVuIFJlYWN0X19PdmVybGF5X09wZW5fUG9wdXAgbmV3X3J4X21pbXNfT3ZlcmxheV9PcGVuX1BvcHVwXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiUmVhY3RNb2RhbF9fQ29udGVudCBSZWFjdE1vZGFsX19Db250ZW50LS1hZnRlci1vcGVuIFJlYWN0X19Db250ZW50IG5ld19yeF9taW1zX1JlYWN0X19Db250ZW50XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cCBuZXdfcnhfbWltc19SZWFjdE1vZGFsX3BvcHVwXCI+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIDxhcHAtc3BsYXNoc2NyZWVuICpuZ0lmPVwiUG9wdXBTY3JlZW5Mb2FkZXJcIiBbaGVpZ2h0XT1cIidoZWlnaHQtcngtc3BpbidcIj4gPC9hcHAtc3BsYXNoc2NyZWVuPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBhZ2UtY29udGVudFwiICpuZ0lmPVwiIVBvcHVwU2NyZWVuTG9hZGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZXdfcnhfcG9wdXBfaGVhZGVyX2JveFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtZ3JpZFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IHBhZGRpbmc6IDBweFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0yLWNvbC10YWJsZXQgbWRsLWNlbGwtLTMtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoIHJ4X2lwYWRfaGVhZGVyX2JveF8xXCJcclxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNvbW1vblNlcnZpY2VzLnJ4aWQgIT0gbnVsbCAmJiBjb21tb25TZXJ2aWNlcy5yeGlkICE9Jyc/J21kbC1jZWxsLS0yLWNvbCc6J21kbC1jZWxsLS0zLWNvbCdcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cImFsaWduLXNlbGY6IGNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJuZXdfcnhfcG9wdXBfaGVhZGVyX2JveF90ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3Bhc3NldHMuaG9sYS5oZWFsdGgvcngtd2lkZ2V0cy9yeC1ob2xhLWhlYWx0aC1sb2dvLTEucG5nXCIgYWx0PVwiaG9sYV9oZWFsdGhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogYXV0bztoZWlnaHQ6IDM3cHg7Ym9yZGVyLXJhZGl1czogNXB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9wYXNzZXRzLmhvbGEuaGVhbHRoL3J4LXdpZGdldHMvcngtaGVhZGVyLWxvZ28ucG5nXCIgYWx0PVwiXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICB7e2NvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpcHRpb24gPT09IHRydWUgPyAnRWRpdCBTY3JpcHQnIDogJ05ldyBTY3JpcHQnfX1cclxuICAgICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS00LWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfZGVza3RvcF90aXRsZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwiYWxpZ24tc2VsZjogY2VudGVyO1wiPlxyXG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9oZWFkZXJfYm94X3RleHRcIiBzdHlsZT1cImp1c3RpZnktY29udGVudDogY2VudGVyO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDYwMDtcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuZmlyc3ROYW1lICtcclxuICAgICAgICAgICAgICAgICAgICAgIFwiIFwiICtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLmxhc3ROYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj4vPHNwYW4gc3R5bGU9XCJ3aWR0aDogMTAwcHg7XCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKFxyXG4gICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuZG9iLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJkZC1NTS15eXl5XCJcclxuICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCAgbWRsLWNlbGwtLTUtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X3BvcHVwX2hlYWRlcl9ib3hfY29sIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoIHJ4X2lwYWRfaGVhZGVyX2JveF8yIG5ld19tb2JpbGVfcnhfdG9wX2JvdHRvbV8wXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmVcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY29tbW9uU2VydmljZXMucnhpZCAhPSBudWxsICYmIGNvbW1vblNlcnZpY2VzLnJ4aWQgIT0nJz8nbWRsLWNlbGwtLTYtY29sJzonbWRsLWNlbGwtLTUtY29sJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmV3X3J4X3BvcHVwX2J0bnNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjbG9zZShudWxsKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1idXR0b24gbWRsLWpzLWJ1dHRvbiBtZGwtYnV0dG9uLS1yYWlzZWQgbWRsLWJ1dHRvbi0tY29sb3JlZCBiYWNrQnV0dG9uIG5ld19tb2JpbGVfcnhfYnRuXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgfHwgc2VsZWN0aW9uYnRuTG9hZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICBDbG9zZVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7cG9zaXRpb246IHJlbGF0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29tbW9uU2VydmljZXMucnhpZCAhPSBudWxsICYmIGNvbW1vblNlcnZpY2VzLnJ4aWQgIT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1idXR0b24gbWRsLWpzLWJ1dHRvbiBtZGwtYnV0dG9uLS1yYWlzZWQgbWRsLWJ1dHRvbi0tY29sb3JlZCBuZXh0QnV0dG9uIHNlbGVjdC1hY3Rpb24tYnRuIG5ld19tb2JpbGVfcnhfYnRuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7d2lkdGg6IDE0MHB4O2Rpc3BsYXk6IGZsZXg7ZmxleC1kaXJlY3Rpb246IHJvdzthbGlnbi1pdGVtczogY2VudGVyO2p1c3RpZnktY29udGVudDogY2VudGVyO3BhZGRpbmc6IDEwcHggIWltcG9ydGFudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgfHwgc2VsZWN0aW9uYnRuTG9hZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEFjdGlvbkRyb3Bkb3dub3BlbigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3Rpb25idG5Mb2FkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInJ4X2xvYWRlcl9idXR0b24gbS12NFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAyMHB4O2hlaWdodDogMjBweDttYXJnaW46IDBweCAhaW1wb3J0YW50O21hcmdpbi1yaWdodDogMHB4ICFpbXBvcnRhbnQ7bWFyZ2luLWxlZnQ6IDBweCAhaW1wb3J0YW50O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2VsZWN0aW9uYnRuTG9hZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IEFjdGlvbiA8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGRycC1pY29uXCI+ZXhwYW5kX21vcmU8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICNzZWxlY3RBY3Rpb25Ecm9wZG93biBjbGFzcz1cIm5ld19yeF9QcmVzY3JpYmVfYnRuX2Ryb3Bkb3duX2xpc3RfYm94IHNlbGVjdC1hY3Rpb24tdWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdEFjdGlvbkJ0bkRyb3Bkb3duID09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieyBNX2xpc3RfYm94X3Nob3c6IHNlbGVjdEFjdGlvbkJ0bkRyb3Bkb3duID09PSB0cnVlIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibmV3X3J4X1ByZXNjcmliZV9idG5fZHJvcGRvd25fbGlzdF91bFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMudG9Mb3dlckNhc2UoKSA9PSAnZHJhZnQnP2NhbmNlbERyYWZ0KCk6Y2FuY2VsUHJlc2NyaWJlTWVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNoZWNrU3RhdHVzQW5kU2NyaXB0dHlwZSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cyw0KT8nJzonZWRpdC1kaXNhYmxlLWRhdGEnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW5jZWw8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAoY2xpY2spPVwicHJpbnRQcmVzY3JpYmVNZWQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY2hlY2tTdGF0dXNBbmRTY3JpcHR0eXBlKHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnNjcmlwdFR5cGUsdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzLDEpPycnOidlZGl0LWRpc2FibGUtZGF0YSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW50PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKGNsaWNrKT1cInJlaXNzdWVQcmVzY3JpYmVNZWQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY2hlY2tTdGF0dXNBbmRTY3JpcHR0eXBlKHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnNjcmlwdFR5cGUsdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzLDMpPycnOidlZGl0LWRpc2FibGUtZGF0YSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlLUlzc3VlPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKGNsaWNrKT1cImNlYXNlUHJlc2NyaWJlTWVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNoZWNrU3RhdHVzQW5kU2NyaXB0dHlwZSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cywyKT8nJzonZWRpdC1kaXNhYmxlLWRhdGEnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDZWFzZTwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIChjbGljayk9XCJyZXNlbmRQcmVzY3JpYmVNZWQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY29tbW9uU2VydmljZXMuZW5hYmxlU2VuZFBhcGVyU2NyaXB0SW5NYWlsICYmIGNoZWNrU3RhdHVzQW5kU2NyaXB0dHlwZSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cyw1KSA/Jyc6J2VkaXQtZGlzYWJsZS1kYXRhJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzZW5kPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJwYWdlICE9IDFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtYnV0dG9uIG1kbC1qcy1idXR0b24gbWRsLWJ1dHRvbi0tcmFpc2VkIG1kbC1idXR0b24tLWNvbG9yZWQgYmFja0J1dHRvbiBuZXdfbW9iaWxlX3J4X2J0blwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYmFjaygpXCIgW2Rpc2FibGVkXT1cInRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyIHx8IHNlbGVjdGlvbmJ0bkxvYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgQmFja1xyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJwYWdlID09IDFcIiAoY2xpY2spPVwicGFnZU51bWJlck9uZVRvTmV4dCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWJ1dHRvbiBtZGwtanMtYnV0dG9uIG1kbC1idXR0b24tLXJhaXNlZCBtZGwtYnV0dG9uLS1jb2xvcmVkIG5leHRCdXR0b24gbmV3X21vYmlsZV9yeF9idG5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciB8fCBzZWxlY3Rpb25idG5Mb2FkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIE5leHRcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWRsLWJ1dHRvbiBtZGwtanMtYnV0dG9uIG1kbC1idXR0b24tLXJhaXNlZCBtZGwtYnV0dG9uLS1jb2xvcmVkIG5ld19tb2JpbGVfcnhfYnRuXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJhYm9ydGRpc2FibGU/J25leHRCdXR0b24nOidhYm9ydGJ1dHRvbidcIiAqbmdJZj1cImFib3J0QnRuRmxhZ1wiIFtkaXNhYmxlZF09XCJhYm9ydGRpc2FibGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInByZXNjcmlwZUFib3J0KClcIj48c3BhbiAqbmdJZj1cImFib3J0ZGlzYWJsZVwiIGNsYXNzPVwicnhfbG9hZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicnhfbG9hZGVyX2J1dHRvbiBtLXY0IHJ4X2J0bl9zcGluXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiAqbmdJZj1cIiFhYm9ydGRpc2FibGVcIj5BYm9ydDwvc3Bhbj48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrXCIgKm5nSWY9XCJwYWdlID09IDJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtYnV0dG9uIG1kbC1qcy1idXR0b24gbWRsLWJ1dHRvbi0tcmFpc2VkIG1kbC1idXR0b24tLWNvbG9yZWQgbmV4dEJ1dHRvbiBuZXdfbW9iaWxlX3J4X2J0blwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO3dpZHRoOiAxMzVweDtkaXNwbGF5OiBmbGV4O2ZsZXgtZGlyZWN0aW9uOiByb3c7YWxpZ24taXRlbXM6IGNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgfHwgc2VsZWN0aW9uYnRuTG9hZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImluY2x1ZGVSdHBtTW9kYWwoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicnhfbG9hZGVyX2J1dHRvbiBtLXY0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDIwcHg7aGVpZ2h0OiAyMHB4O21hcmdpbjogMHB4ICFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OiAwcHggIWltcG9ydGFudDttYXJnaW4tbGVmdDogMHB4ICFpbXBvcnRhbnQ7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFByZXNjcmliZSA8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGRycC1pY29uXCI+ZXhwYW5kX21vcmU8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICNQcmVzY3JpYmVEcm9wZG93biBjbGFzcz1cIm5ld19yeF9QcmVzY3JpYmVfYnRuX2Ryb3Bkb3duX2xpc3RfYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RQQlRORHJvcGRvd24gPT0gdHJ1ZVwiIFtjbGFzc109XCJ7IE1fbGlzdF9ib3hfc2hvdzogc2VsZWN0UEJUTkRyb3Bkb3duID09PSB0cnVlIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibmV3X3J4X1ByZXNjcmliZV9idG5fZHJvcGRvd25fbGlzdF91bFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImNvbW1vblNlcnZpY2VzLmVuYWJsZUVTY3JpcHRcIiBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGVQcmVzY3JpcHRpb25WYWxpZGF0aW9uKDEpfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiTXByZXNjcmliZU1lZCgxKVwiPkUtUHJlc2NyaWJlIChEcmFmdCk8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGVQcmVzY3JpcHRpb25WYWxpZGF0aW9uKDIpfVwiIChjbGljayk9XCJFcHJlc2NyaXBlU2VuZCgxKVwiICpuZ0lmPVwiIXRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3kgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuZW1lcmdlbmN5U3VwcGx5ICYmIGNvbW1vblNlcnZpY2VzLmVuYWJsZVNlbmRFU2NyaXB0SW5NYWlsXCI+RS1QcmVzY3JpYmUgYW5kIFNlbmQ8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImNvbW1vblNlcnZpY2VzLmVuYWJsZUVTY3JpcHRcIiBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGVQcmVzY3JpcHRpb25WYWxpZGF0aW9uKDIpfVwiIChjbGljayk9XCJFcHJlc2NyaXBlU2VuZCgyKVwiPkUtUHJlc2NyaWJlIGFuZCBQcmludDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiY29tbW9uU2VydmljZXMuZW5hYmxlUGFwZXJTY3JpcHRcIiBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IChjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaXB0aW9uID09PSB0cnVlICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLnRvVXBwZXJDYXNlKCk9PSAnTScmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMudG9Mb3dlckNhc2UoKSAhPSAnZHJhZnQnKXx8IChjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaXB0aW9uID09PSB0cnVlICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLnRvVXBwZXJDYXNlKCk9PSAnRScpfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiTXByZXNjcmliZU1lZCgyKVwiPlByZXNjcmliZSAoRHJhZnQpPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5lbmFibGVTZW5kUGFwZXJTY3JpcHRJbk1haWxcIiBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IChjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaXB0aW9uID09PSB0cnVlICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLnRvVXBwZXJDYXNlKCk9PSAnTScmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMudG9Mb3dlckNhc2UoKSAhPSAnZHJhZnQnKXx8IChjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaXB0aW9uID09PSB0cnVlICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLnRvVXBwZXJDYXNlKCk9PSAnRScpfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiUGFwZXJwcmVzY3JpcGVTZW5kKDEpXCI+IFByZXNjcmliZSBhbmQgU2VuZDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiY29tbW9uU2VydmljZXMuZW5hYmxlUGFwZXJTY3JpcHRcIiBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IChjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaXB0aW9uID09PSB0cnVlICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLnRvVXBwZXJDYXNlKCkgPT0gJ00nJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzLnRvTG93ZXJDYXNlKCkgIT0gJ2RyYWZ0JykgfHwgKGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpcHRpb24gPT09IHRydWUgJiYgY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnNjcmlwdFR5cGUudG9VcHBlckNhc2UoKT09ICdFJyl9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwcmVzY3JpcGVQcmludCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVzY3JpYmUgYW5kIFByaW50PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tOC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aCByeF9pcGFkX2hlYWRlcl9ib3hfMyBuZXdfcnhfbW9iaWxlX3RpdGxlXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJhbGlnbi1zZWxmOiBjZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfaGVhZGVyX2JveF90ZXh0IG5ld19tb2JpbGVfcnhfcG9wdXBfaGVhZGVyX3RleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA2MDBcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuZmlyc3ROYW1lICtcclxuICAgICAgICAgICAgICAgICAgICAgIFwiIFwiICtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLmxhc3ROYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj4vPHNwYW4+e3tcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKFxyXG4gICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuZG9iLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJkZC1NTS15eXl5XCJcclxuICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwYWdlID09IDFcIiBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfMVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtZ3JpZFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IHBhZGRpbmc6IDBweFwiICpuZ0lmPVwiIWNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS01LWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICNNZWRpY2luZURyb3Bkb3duIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cIm1lZGljaW5lIHNlYXJjaFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIE1lZGljaW5lc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCIgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiXzFfaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cInt7IG1lZGlTZWFyY2hWYWx1ZSB9fVwiIChpbnB1dCk9XCJzZWFyY2hIYW5kbGVyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiTWVkaWNpbmVEcm9wZG93bkxpc3QoKVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zIG1kLTI0IG5ld19yeF9wb3B1cF90YWJfMV9pbnB1dF9zZWFyY2hcIj5zZWFyY2g8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxtYXQtaWNvbiBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfMV9pbnB1dF9zZWFyY2hcIj48L21hdC1pY29uPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl8xX2xpc3RfYm94XCIgW2NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgTV9saXN0X2JveF9zaG93OiBzZWxlY3RlZE1lZGljaW5lRHJvcGRvd24gPT09IHRydWVcclxuICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZWFyY2hNZWRpY2luZUxvYWRlclwiIGNsYXNzPVwibG9hZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXNlYXJjaE1lZGljaW5lTG9hZGVyXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAxMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiXzFfbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgbWVkaWNpbmVMaXN0IG9mIHNlYXJjaGVkTWVkaWNpbmVMaXN0XCIgW2NsYXNzXT1cImdldGN1cnJlbnRpZChtZWRpY2luZUxpc3QpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UHJvZHVjdExpc3RCeU5hbWUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWNpbmVMaXN0Wydwcm9kSGlkZGVuVmFsdWUnXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBtZWRpY2luZUxpc3RbJ3Byb2REaXNwbGF5VmFsdWUnXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBtZWRpY2luZUxpc3RbJ3NlYXJjaEJhc2UnXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIiBbaW5uZXJIVE1MXT1cIm1lZGljaW5lTGlzdFsncHJvZERpc3BsYXlWYWx1ZSddXCI+PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJzZWFyY2hlZE1lZGljaW5lTGlzdC5sZW5ndGggPT0gMFwiPk5vIERhdGE8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiUHJpbWFyeVNlYXJjaFNwaW5uZXJcIiBjbGFzcz1cImxvYWRlciBtbC1sb2FkLTQ1XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTItY29sIG1kbC1jZWxsLS0yLWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoIG5ld19tb2JpbGVfcnhfdG9wX2JvdHRvbV8wXCJcclxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZGlzYWJsZWRSeENvbnRlbnQnOnRoaXMuaXNOb25QYnNGbGFnfHwoY29tbW9uU2VydmljZXMucnhEZXRhaWxzIT1udWxsICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscyE9JycgJiYgY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cyE9bnVsbCAmJiBjb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzIT0nJyAmJiBjb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzLnRvTG93ZXJDYXNlKCkhPSdkcmFmdCcpfVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnhfbmV3X3BvcHVwX2NoZWNrYm94IG5ld19tb2JpbGVfcnhfdG9wX2JvdHRvbV8wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibWRsLWNoZWNrYm94IG1kbC1qcy1jaGVja2JveCBtZGwtanMtcmlwcGxlLWVmZmVjdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJjaGVja2JveFwiIGlkPVwiY2hlY2tib3gxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2hlY2tib3hfX2lucHV0IHJ4X25ld19ncm91cF9jaGVja2JveFwiIFsobmdNb2RlbCldPVwicnhPbmx5UEJTXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkNoZWNrYm94Q2hhbmdlKDEpXCIgdmFsdWU9XCJQQlMvUlBCU1wiIFtkaXNhYmxlZF09XCJ0aGlzLmlzTm9uUGJzRmxhZ1wiIC8+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2hlY2tib3hfX2xhYmVsXCIgc3R5bGU9XCJmb250LXdlaWdodDogNDAwOyBmb250LXNpemU6IDE2cHhcIj5QQlMvUlBCUzwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJ4X25ld19wb3B1cF9jaGVja2JveCBuZXdfbW9iaWxlX3J4X3RvcF9ib3R0b21fMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIm1kbC1jaGVja2JveCBtZGwtanMtY2hlY2tib3ggbWRsLWpzLXJpcHBsZS1lZmZlY3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwiY2hlY2tib3hcIiBpZD1cImNoZWNrYm94MlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNoZWNrYm94X19pbnB1dCByeF9uZXdfZ3JvdXBfY2hlY2tib3hcIiBbKG5nTW9kZWwpXT1cInJ4UHJpdmF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25DaGVja2JveENoYW5nZSgxKVwiIHZhbHVlPVwiUHJpdmF0ZVwiIC8+PHNwYW4gY2xhc3M9XCJtZGwtY2hlY2tib3hfX2xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXdlaWdodDogNDAwOyBmb250LXNpemU6IDE2cHhcIj5Qcml2YXRlPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMi1jb2wgbWRsLWNlbGwtLTItY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGggbmV3X21vYmlsZV9yeF90b3BfYm90dG9tXzBcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydkaXNhYmxlZFJ4Q29udGVudCc6dGhpcy5pc05vblBic0ZsYWd8fChjb21tb25TZXJ2aWNlcy5yeERldGFpbHMhPW51bGwgJiYgY29tbW9uU2VydmljZXMucnhEZXRhaWxzIT0nJyAmJiBjb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzIT1udWxsICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMhPScnICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMudG9Mb3dlckNhc2UoKSE9J2RyYWZ0Jyl9XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyeF9uZXdfcG9wdXBfY2hlY2tib3ggbmV3X21vYmlsZV9yeF90b3BfYm90dG9tXzBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtZGwtY2hlY2tib3ggbWRsLWpzLWNoZWNrYm94IG1kbC1qcy1yaXBwbGUtZWZmZWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJjaGVja2JveDJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jaGVja2JveF9faW5wdXQgcnhfbmV3X2dyb3VwX2NoZWNrYm94XCIgWyhuZ01vZGVsKV09XCJyeFByaXZhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uQ2hlY2tib3hDaGFuZ2UoKVwiIHZhbHVlPVwiUHJpdmF0ZVwiIC8+PHNwYW4gY2xhc3M9XCJtZGwtY2hlY2tib3hfX2xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXdlaWdodDogNDAwOyBmb250LXNpemU6IDE2cHhcIj5Qcml2YXRlPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS01LWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS02LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aCBuZXdfbW9iaWxlX3J4X3RvcF9ib3R0b21fMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwidGV4dC1hbGlnbjogcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vcGFzc2V0cy5ob2xhLmhlYWx0aC9yeC13aWRnZXRzL3J4LW1pbXMucG5nXCIgYWx0PVwiTUlNUyBsb2dvXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDgwcHg7IGhlaWdodDogYXV0b1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2xcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiA4cHg7XCIgKm5nSWY9XCIhY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmF2b3VyaXRlcy10b2dnbGUtbGlua1wiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHNob3dGYXZvdXJ0aWVzKClcIj5cclxuICAgICAgICAgICAgICAgICAge3sgc2hvd0Zhdm91cml0ZU1lZCA/ICdIaWRlIGZhdm91cml0ZXMnIDogJ1Nob3cgZmF2b3VyaXRlcycgfX1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWdyaWRcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBwYWRkaW5nOiAwcHhcIj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tNy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJsZV9ib3hcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfdGl0bGVcIiBzdHlsZT1cInBhZGRpbmc6IDVweCAxMHB4OyBtYXJnaW46IDBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgQXZhaWxhYmxlIEZvcm11bGF0aW9uczpcclxuICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFzaG93RmF2b3VyaXRlTWVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwib25jbGlja01lZGljaW5lTG9hZGVyXCIgY2xhc3M9XCJsb2FkZXIgbS12NFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFvbmNsaWNrTWVkaWNpbmVMb2FkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID09IG51bGwgfHxcclxuICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdC5sZW5ndGggPT0gMFxyXG4gICAgICAgICAgICAgICAgICBcIiBjbGFzcz1cIm5vRGF0YVByZXNjcmliZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPk5vIERhdGE8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmV3X3J4X3BvcHVwX2JveF9jb250YWluZXJcIiAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgbWVkIG9mIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0O1xyXG4gICAgICAgICAgICAgICAgICAgIGluZGV4IGFzIGlcclxuICAgICAgICAgICAgICAgICAgXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtZ3JpZCBuZXdfcnhfcG9wdXBfYm94XCIgW2NsYXNzXT1cImdldENsYXNzRm9yTWVkKG1lZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEZvcm11bGF0aW9uKG1lZCwgaSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sIG1kbC1jZWxsLS04LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2JveF9oZWFkZXJcIiBbaW5uZXJIVE1MXT1cIm1lZC5wcm9kdWN0TmFtZVwiPjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfYm94X3RleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48Yj5RdWFudGl0eTo8L2I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e21lZC5wYnNUeXBlIT11bmRlZmluZWQgJiYgbWVkLnBic1R5cGUhPW51bGwgJiYgbWVkLnBic1R5cGUudG9Mb3dlckNhc2UoKSA9PSBcIm5vbiBwYnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBtZWQubnVtYmVyT2ZQYWNrICsgXCJ4XCIgKyBtZWQudW5pdFBlclBhY2tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbWVkLm1heFF0eVVuaXRzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj48c3Bhbj48Yj5ScHRzOjwvYj4ge3sgbWVkLnJlcGVhdHMgfX08L3NwYW4+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdFwiPjxiPlJlc3RyaWN0aW9uOjwvYj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bWVkLlJlc3RyaWN0aW9ucyE9dW5kZWZpbmVkICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZWQuUmVzdHJpY3Rpb25zICE9IG51bGwgJiYgbWVkLlJlc3RyaWN0aW9ucyAhPSBcIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG1lZC5wYnNUeXBlICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiIChcIiArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRSZXN0cmljdGlvbnMobWVkLlJlc3RyaWN0aW9ucykgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIpIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IChtZWQucGJzVHlwZSE9dW5kZWZpbmVkJiZtZWQucGJzVHlwZSE9bnVsbD9tZWQucGJzVHlwZTpcIlwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0gPC9zcGFuPjxzcGFuPjxiPkdlbmVyaWMgTmFtZTogPC9iPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJtZWQuZ2VuZXJpY05hbWVcIj48L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJTZWNvbmRhcnlTZWFyY2hTcGlubmVyXCIgY2xhc3M9XCJsb2FkZXIgbWwtbG9hZC00NVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dGYXZvdXJpdGVNZWRcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwib25jbGlja01lZGljaW5lTG9hZGVyXCIgY2xhc3M9XCJsb2FkZXIgbS12NFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFvbmNsaWNrTWVkaWNpbmVMb2FkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLmZhdm91cml0ZU1lZGljaW5lTGlzdCA9PSBudWxsIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuZmF2b3VyaXRlTWVkaWNpbmVMaXN0Lmxlbmd0aCA9PSAwXHJcbiAgICAgICAgICAgICAgICAgIFwiIGNsYXNzPVwibm9EYXRhUHJlc2NyaWJlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+Tm8gRmF2b3VyaXRlczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZXdfcnhfcG9wdXBfYm94X2NvbnRhaW5lclwiICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBtZWQgb2YgY29tbW9uU2VydmljZXMuZmF2b3VyaXRlTWVkaWNpbmVMaXN0O1xyXG4gICAgICAgICAgICAgICAgICAgIGluZGV4IGFzIGlcclxuICAgICAgICAgICAgICAgICAgXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtZ3JpZCBuZXdfcnhfcG9wdXBfYm94XCIgW2NsYXNzXT1cImdldENsYXNzRm9yRmF2b3VyaXRlTWVkKG1lZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImZhdm91cml0ZU1lZGljaW5lTG9hZGluZyhtZWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbCBtZGwtY2VsbC0tOC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9ib3hfaGVhZGVyXCIgW2lubmVySFRNTF09XCJtZWQucHJvZHVjdE5hbWVcIj48L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2JveF90ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGI+UXVhbnRpdHk6PC9iPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3ttZWQucXVhbnRpdHl9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3Bhbj48Yj5ScHRzOjwvYj4ge3sgbWVkLnJlcGVhdHMgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0XCI+PGI+UmVzdHJpY3Rpb246PC9iPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3ttZWQucmVzdHJpY3Rpb259fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3Bhbj48Yj5HZW5lcmljIE5hbWU6IDwvYj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwibWVkLmdlbmVyaWNOYW1lXCI+PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lclwiIGNsYXNzPVwibG9hZGVyIG1sLWxvYWQtNDVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZhdk1lZGljaW5lTG9hZGVyXCIgY2xhc3M9XCJsb2FkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZmF2TWVkaWNpbmVMb2FkZXJcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS01LWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWdyaWQgbmV3X3J4X3BvcHVwX3RhYl8xX2dyaWQgbmV3X3J4X3BvcHVwX3RhYl8xX2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uICE9IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTYtY29sIG1kbC1jZWxsLS04LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfdGl0bGVcIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDVweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiAhPSBudWxsJiZjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lIT11bmRlZmluZWQgJiYgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZSE9bnVsbD8gY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZTogJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTYtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmljIE5hbWU6PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gIT0gbnVsbCYmY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5nZW5lcmljTmFtZSE9dW5kZWZpbmVkICYmIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZ2VuZXJpY05hbWUhPW51bGw/IGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZ2VuZXJpY05hbWUgOiAnJ1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIiAqbmdJZj1cImNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEJyYW5kIE5hbWU6PHNwYW4gW2lubmVySFRNTF09XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGdldEJyYW5kTmFtZShjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKVxyXG4gICAgICAgICAgICAgICAgICAgIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTY2hlZHVsZTo8c3Bhbj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gIT0gbnVsbCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24gIT1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQgJiYgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wb2lzb25DbGFzc2lmaWNhdGlvbiE9bnVsbCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAucG9pc29uQ2xhc3NlcyE9dW5kZWZpbmVkICYmIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAucG9pc29uQ2xhc3NlcyE9bnVsbCAmJiBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLnBvaXNvbkNsYXNzZXMubGVuZ3RoPjBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAucG9pc29uQ2xhc3Nlc1swXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJObyBTY2hlZHVsZWQgSW5mb3JtYXRpb24gQXZhaWxhYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFBCUyBMaXN0aW5nOjxzcGFuPnt7Y29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNUeXBlIT11bmRlZmluZWQgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic1R5cGUhPW51bGw/IGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzVHlwZSA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJycgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzQ29kZSE9dW5kZWZpbmVkICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNDb2RlIT1udWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcIiAoXCIgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzQ29kZSArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luOjBweCA7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgTWF4IFF1YW50aXR5ID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2dldE1heFF1YW50aXR5KCl9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBSZXBlYXRzID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24hPW51bGw/IGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucmVwZWF0c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDpcIlwifX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIiAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gIT0gbnVsbCAmJiBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByZWduYW5jeUNhdGVnb3J5IT11bmRlZmluZWQgJiYgXHJcbiAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcmVnbmFuY3lDYXRlZ29yeSAhPSBudWxsICYmIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJlZ25hbmN5Q2F0ZWdvcnlcclxuICAgICAgICAgICAgICAgICAgICAuY2F0ZWdvcnlDb2RlIT11bmRlZmluZWQgJiYgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcmVnbmFuY3lDYXRlZ29yeVxyXG4gICAgICAgICAgICAgICAgICAgIC5jYXRlZ29yeUNvZGUhPW51bGxcclxuICAgICAgICAgICAgICAgICAgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFByZWduYW5jeSBDYXRlZ29yeTo8c3Bhbj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJlZ25hbmN5Q2F0ZWdvcnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAuY2F0ZWdvcnlDb2RlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJlZ25hbmN5Q2F0ZWdvcnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmFkZGl0aW9uYWxOb3RlICE9dW5kZWZpbmVkICYmIFxyXG4gICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcmVnbmFuY3lDYXRlZ29yeVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuYWRkaXRpb25hbE5vdGUgIT0gbnVsbCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcmVnbmFuY3lDYXRlZ29yeVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuYWRkaXRpb25hbE5vdGUgIT0gJydcclxuICAgICAgICAgICAgICAgICAgICBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsTm90ZTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW0gb2YgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5wcmVnbmFuY3lDYXRlZ29yeS5hZGRpdGlvbmFsTm90ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgXCIgW2lubmVySFRNTF09XCJpdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2xcIiAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmlzU2hvd1Jlc3RyaWN0aW9ucyA9PSB0cnVlICYmIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zIT11bmRlZmluZWQgJiYgXHJcbiAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zICE9IG51bGwgJiZcclxuICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMgIT0gJydcclxuICAgICAgICAgICAgICAgIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5SZXN0cmljdGlvbnM6PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG9sIHN0eWxlPVwibWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMTVweFwiICpuZ0lmPVwiY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMhPXVuZGVmaW5lZCAmJiBcclxuICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucyAhPSBudWxsICYmXHJcbiAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMgIT0gJydcclxuICAgICAgICAgICAgICAgICAgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5ld19yeF9wb3BfYXV0X2ludFwiICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3RyaWN0aW9uIG9mIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgLlJlc3RyaWN0aW9uc1xyXG4gICAgICAgICAgICAgICAgICAgIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbjogMHB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICBcIiAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvbi5yZXN0cmljdGlvblByZXZpZXcgIT0gbnVsbCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvbi5yZXN0cmljdGlvblByZXZpZXcgIT0gJycgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25UZXh0ICE9IG51bGwgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25UZXh0ICE9ICcnXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicnhfcmVzdHJpY3Rpb25UZXh0XCIgKm5nSWY9XCJyZXN0cmljdGlvbi5yZXN0cmljdGlvblRleHQubGVuZ3RoIDwgNjBcIj48Yj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uVHlwZSB9fTwvYj4gLVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5odG1sVG9Gb3JtYXR0ZWRUZXh0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvbi5yZXN0cmljdGlvblByZXZpZXdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIj48L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyeF9yZXN0cmljdGlvblRleHRcIiAqbmdJZj1cInJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uVGV4dC5sZW5ndGggPiA2MFwiPjxiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25UeXBlIH19PC9iPiAtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmh0bWxUb0Zvcm1hdHRlZFRleHQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uUHJldmlld1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKS5zdWJzdHJpbmcoMCwgNjApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCI+PC9zcGFuPi4uLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjsgY29sb3I6ICNmZjk5NzhcIiBpZD1cInNob3ctdG9vbHRpcC1pZFwiPlNob3dcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vcmU8L2E+PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdG9vbHRpcGRlbW8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicnhfdG9vbHRpcF9pbm5lcl9ib3hcIiBbaW5uZXJIVE1MXT1cInJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uVGV4dFwiPjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9vbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl8zX3NtYWxsX2JveFwiIFtzdHlsZS5kaXNwbGF5XT1cImlzQ3VycmVudE1lZGljaW5lSW5GYXZvdXJpdGVzKCkgPyAnaW5saW5lLWZsZXgnIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiaXNDdXJyZW50TWVkaWNpbmVJbkZhdm91cml0ZXMoKSA/ICdtYXgtY29udGVudCcgOiBudWxsXCIgKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uICE9IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrO21hcmdpbi1yaWdodDogMTBweDtcIiBjbGFzcz1cIm5ld19yeF9wb3B1cF9oZWFkZXJfYm94X2NvbFwiICpuZ0lmPVwiIWNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiAhPSBudWxsXCIgKGNsaWNrKT1cImFkZFRvRmF2b3VyaXRlcygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1idXR0b24gbWRsLWpzLWJ1dHRvbiBtZGwtYnV0dG9uLS1yYWlzZWQgbWRsLWJ1dHRvbi0tY29sb3JlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MubmV4dEJ1dHRvbl09XCIhaXNDdXJyZW50TWVkaWNpbmVJbkZhdm91cml0ZXMoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Mucm1mYXZidXR0b25dPVwiaXNDdXJyZW50TWVkaWNpbmVJbkZhdm91cml0ZXMoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImlzQ3VycmVudE1lZGljaW5lSW5GYXZvdXJpdGVzKCk7IGVsc2UgYWRkVGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFJlbW92ZSBmcm9tIGZhdm91cml0ZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2FkZFRleHQ+KyBBZGQgdG8gZmF2b3VyaXRlczwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrOyBtYXJnaW4tcmlnaHQ6IDEwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+UXVhbnRpdHk6IDwvc3Bhbj48aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCIgbmFtZT1cInF0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiXCIgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiX2lucHV0XCIgc3RlcD1cIjFcIiBbbWluXT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsXCIgKGtleXByZXNzKT1cImNoZWNrTW9iaWxlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwicXVhbnRpdHlDaGFuZ2UoKVwiIChwYXN0ZSk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvblwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGlubGluZS1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5SZXBlYXRzOiA8L3NwYW4+PGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlIHx8IGNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwicnB0c1wiIHBsYWNlaG9sZGVyPVwiXCIgW21pbl09XCIwXCIgKGlucHV0KT1cInJlcGVhdHNDaGFuZ2UoKVwiIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl9pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbFwiIChwYXN0ZSk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJjaGVja01vYmlsZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uIHx8IGNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtZ3JpZFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IHBhZGRpbmc6IDBweFwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwieyBkaXNhYmxlZFJ4Q29udGVudDogY29tbW9uU2VydmljZXMuaXNGZXRjaGluZ31cIj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sIG1kbC1jZWxsLS04LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIERvc2U6XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnhfbmV3X3BvcHVwX2NoZWNrYm94XCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibWRsLWNoZWNrYm94IG1kbC1qcy1jaGVja2JveCBtZGwtanMtcmlwcGxlLWVmZmVjdFwiPjxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlXCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY2hlY2tib3gxXCIgY2xhc3M9XCJtZGwtY2hlY2tib3hfX2lucHV0IHJ4X25ld19ncm91cF9jaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLnVuVXN1YWxEb3NlRmxhZ1wiIC8+PHNwYW4gY2xhc3M9XCJtZGwtY2hlY2tib3hfX2xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDQwMDtmb250LXNpemU6IDE2cHg7bWFyZ2luLXRvcDogLTdweDtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZGlzYWJsZWQtc3R5bGUnOiBjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID09IHRydWUgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCI+VW51c3VhbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9zZTwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2lucHV0IG5ld19yeF9wb3B1cF90YWJfaW5wdXRcIiB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvblwiIGlkPVwic2VsZWN0ZWRkb3NlXCIgcGxhY2Vob2xkZXI9XCJTZWxlY3QgRG9zZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5kb3NlU2VhcmNoVmFsdWVcIiAoY2xpY2spPVwiZG9zZURyb3Bkb3duKClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICNEb3NlRHJvcGRvd24gY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiX2Ryb3Bkb3duX2xpc3RfYm94XCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieyBNX2xpc3RfYm94X3Nob3c6IHNlbGVjdERvc2VEcm9wZG93biA9PT0gdHJ1ZSB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl8xX2xpc3QgcnhfZHJvcGRvd25cIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxpIChjbGljayk9XCJzZWxlY3REb3NlVmFsdWUobnVsbClcIiBjbGFzcz1cInAtMTJcIj4gPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZG9zZSBvZiBkb3NlRGF0YVwiIChjbGljayk9XCJzZWxlY3REb3NlVmFsdWUoZG9zZSlcIiBbY2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdobGlnaHQ6IGRvc2VbJ3RleHQnXSA9PSBjb21tb25TZXJ2aWNlcy5kb3NlU2VhcmNoVmFsdWVcclxuICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBkb3NlW1widGV4dFwiXSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+RnJlcXVlbmN5OjwvcD5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIGNsYXNzPVwibWRsLXRleHRmaWVsZF9faW5wdXQgbmV3X3J4X3BvcHVwX3RhYl9pbnB1dFwiIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCIgaWQ9XCJzZWxlY3RlZEZyZXF1ZW5jeTpcIlxyXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IEZyZXF1ZW5jeVwiIHJlYWRPbmx5IFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuZnJlcVNlYXJjaFZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZnJlcURyb3Bkb3duKClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICNGcmVxRHJvcGRvd24gY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiX2Ryb3Bkb3duX2xpc3RfYm94XCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieyBNX2xpc3RfYm94X3Nob3c6IHNlbGVjdEZyZXFEcm9wZG93biA9PT0gdHJ1ZSB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl8xX2xpc3QgcnhfZHJvcGRvd25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsaSAoY2xpY2spPVwic2VsZWN0RnJlcXVlbmN5VmFsdWUobnVsbClcIiBjbGFzcz1cInAtMTJcIj4gPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZnJlcXVlbmN5IG9mIGZyZXF1ZW5jeURhdGFcIiAoY2xpY2spPVwic2VsZWN0RnJlcXVlbmN5VmFsdWUoZnJlcXVlbmN5KVwiIFtjbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2hsaWdodDpcclxuICAgICAgICAgICAgICAgICAgICAgIGZyZXF1ZW5jeVsndGV4dCddID09IGNvbW1vblNlcnZpY2VzLmZyZXFTZWFyY2hWYWx1ZVxyXG4gICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZyZXF1ZW5jeVtcInRleHRcIl0gfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPkZvb2Q6PC9wPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19pbnB1dCBuZXdfcnhfcG9wdXBfdGFiX2lucHV0XCIgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIiBpZD1cInNlbGVjdGVkRnJlcXVlbmN5OlwiXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgRm9vZFwiIHJlYWRPbmx5IFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuZm9vZFNlYXJjaFZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZm9vZERyb3Bkb3duKClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICNGb29kRHJvcGRvd24gY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiX2Ryb3Bkb3duX2xpc3RfYm94XCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieyBNX2xpc3RfYm94X3Nob3c6IHNlbGVjdEZvb2REcm9wZG93biA9PT0gdHJ1ZSB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl8xX2xpc3QgcnhfZHJvcGRvd25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsaSAoY2xpY2spPVwic2VsZWN0Rm9vZFZhbHVlKG51bGwpXCIgY2xhc3M9XCJwLTEyXCI+IDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGZvb2Qgb2YgZm9vZERhdGFcIiAoY2xpY2spPVwic2VsZWN0Rm9vZFZhbHVlKGZvb2QpXCIgW2NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaGxpZ2h0OiBmb29kWyd0ZXh0J10gPT0gY29tbW9uU2VydmljZXMuZm9vZFNlYXJjaFZhbHVlXHJcbiAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZm9vZFtcInRleHRcIl0gfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPkluc3RydWN0aW9uOjwvcD5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIGNsYXNzPVwibWRsLXRleHRmaWVsZF9faW5wdXQgbmV3X3J4X3BvcHVwX3RhYl9pbnB1dFwiIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCIgaWQ9XCJJbnN0cnVjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgSW5zdHJ1Y3Rpb25cIiBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJpbnN0cnVjdGlvbkRyb3Bkb3duKClcIiAoY2hhbmdlKT1cImluc3RydWN0aW9uT25DaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cImFscGhhUmVzdHJpY3Rpb24oJGV2ZW50KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgI0luc3RydWN0aW9uRHJvcGRvd24gY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiX2Ryb3Bkb3duX2xpc3RfYm94XCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwie01fbGlzdF9ib3hfc2hvdzogc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93biA9PT0gdHJ1ZX1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiXzFfbGlzdCByeF9kcm9wZG93blwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93bkxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIChjbGljayk9XCJDaGFuZ2VJbnN0cnVjdGlvbihudWxsKVwiIGNsYXNzPVwicC0xMlwiPiA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiaXRlbS5pZCA9PSBjb21tb25TZXJ2aWNlcy5jb21wbGV4SWQgJiYgaXRlbS50ZXh0ID09IGNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUgPyAnaGVpZ2hsaWdodCcgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaW5zdHJ1Y3Rpb25EYXRhOyBpbmRleCBhcyBpXCIgKGNsaWNrKT1cIkNoYW5nZUluc3RydWN0aW9uKGl0ZW0pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS50ZXh0IH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpdGVtLnVzZXJpZCAhPT0gMFwiIGNsYXNzPVwic3Bhbl9pY29uXCIgc3R5bGU9XCJmbG9hdDogcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIiBzdHlsZT1cInBhZGRpbmc6IDVweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlZGl0SW5zdHJ1Y3Rpb24oaXRlbS5pZCwgaXRlbSlcIj5jcmVhdGU8L2k+PGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEwcHg7IHBhZGRpbmc6IDVweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVJbnN0cnVjdGlvbihpdGVtLmlkKVwiPmNsZWFyPC9pPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiUlhfQUREX2Ryb3Bkb3duX2J0blwiIChjbGljayk9XCJhZGROZXdJbnN0cnVjdGlvbigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKyBBZGQgQ29tcGxleCBJbnN0cnVjdGlvbnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0ID09IGZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21wbGV4X2luc3RydWN0aW9uX2JveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCIgc3R5bGU9XCJmb250LXNpemU6IDEycHg7IG1hcmdpbjogMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcGxleCBJbnN0cnVjdGlvbjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImluc3RydWN0aW9uX2ZpZWxkX2NsciBtZGwtdGV4dGZpZWxkX19pbnB1dCBuZXdfcnhfcG9wdXBfdGFiX2lucHV0IFwiIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiSW5zdHJ1Y3Rpb25cIiBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9udGlsdGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgQ29tcGxleCBJbnN0cnVjdGlvblwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIiBzdHlsZT1cImZvbnQtc2l6ZTogMTJweDsgbWFyZ2luOiAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wbGV4IEluc3RydWN0aW9uIERlc2NyaXB0aW9uOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgYXV0b2NvbXBsZXRlPVwib2ZmXCIgbmFtZT1cIlwiIGlkPVwiXCIgcm93cz1cIjJcIiBtYXhMZW5ndGg9XCI1MDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ0ZW1wSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvblwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgQ29tcGxleCBJbnN0cnVjdGlvbiBEZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImluc3RydWN0aW9uX2ZpZWxkX2NsciB3LTEwMCBuZXdfcnhfcG9wdXBfdGFiX3RleHRhcmVhXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiUlhfQUREX2Ryb3Bkb3duX2J0bl8xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjbGVhckluc3RydWN0aW9uKClcIiBjbGFzcz1cInJ4LWluc3RydWN0aW9uLWJ0blwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwic2F2ZUluc3RydWN0aW9uKClcIiBjbGFzcz1cInJ4LWluc3RydWN0aW9uLWJ0blwiPlNhdmU8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+Um91dGU6PC9wPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19pbnB1dCBuZXdfcnhfcG9wdXBfdGFiX2lucHV0XCIgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIiBpZD1cInNlbGVjdGVkUm91dGU6XCJcclxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBSb3V0ZVwiIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMucm91dGVTZWFyY2hWYWx1ZVwiIG1heGxlbmd0aD1cIjUwXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicm91dGVEcm9wZG93bigpXCIgKGtleXByZXNzKT1cImFscGhhUmVzdHJpY3Rpb24oJGV2ZW50KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgI1JvdXRlRHJvcGRvd24gY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiX2Ryb3Bkb3duX2xpc3RfYm94XCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieyBNX2xpc3RfYm94X3Nob3c6IHNlbGVjdFJvdXRlRHJvcGRvd24gPT09IHRydWUgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJwYWRkaW5nOiAxMHB4OyBwb3NpdGlvbjogcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2lucHV0IG5ld19yeF9yb3V0ZV9faW5wdXRcIiB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCIgW3ZhbHVlXT1cInJvdXRlRGF0YUZpbHRlciA/IHJvdXRlRGF0YUZpbHRlciA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGtleXVwKT1cInJvdXRlRmlsdGVyKCRldmVudClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBtZC0yNCBuZXdfcnhfcG9wdXBfdGFiXzFfaW5wdXRfc2VhcmNoIHJ4LXNlYXJjaC1pY29uXCI+c2VhcmNoPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bCAqbmdJZj1cImZpbHRlclJvdXRlSXRlbXMocm91dGVEYXRhLCByb3V0ZURhdGFGaWx0ZXIpLmxlbmd0aCAhPSAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl8xX2xpc3QgcnhfZHJvcGRvd24gcnhfZHJvcGRvd25fcm91dGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcm91dGUgb2YgZmlsdGVyUm91dGVJdGVtcyhyb3V0ZURhdGEsIHJvdXRlRGF0YUZpbHRlcilcclxuICAgICAgICAgICAgICAgICAgXCIgKGNsaWNrKT1cInNlbGVjdFJvdXRlc2VhcmNWYWx1ZShyb3V0ZSlcIiBbY2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdobGlnaHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICByb3V0ZVsncm91dGVOYW1lJ10gPT0gY29tbW9uU2VydmljZXMucm91dGVTZWFyY2hWYWx1ZVxyXG4gICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJvdXRlW1wicm91dGVOYW1lXCJdIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsICpuZ0lmPVwiZmlsdGVyUm91dGVJdGVtcyhyb3V0ZURhdGEsIHJvdXRlRGF0YUZpbHRlcikubGVuZ3RoID09IDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiXzFfbGlzdCByeF9kcm9wZG93biByeF9kcm9wZG93bl9yb3V0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxpPm5vIGRhdGE8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5Qcm8gUmUgTmF0YSBQcmVzY3JpcHRpb246PC9wPiAtLT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJ4X25ld19wb3B1cF9jaGVja2JveCBtLXQtMzZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtZGwtY2hlY2tib3ggbWRsLWpzLWNoZWNrYm94IG1kbC1qcy1yaXBwbGUtZWZmZWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJjaGVja2JveDFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jaGVja2JveF9faW5wdXQgcnhfbmV3X2dyb3VwX2NoZWNrYm94XCIgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5yeFBSTlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIlBSTkNoYW5nZShjb21tb25TZXJ2aWNlcy5yeFBSTilcIiAvPjxzcGFuIGNsYXNzPVwibWRsLWNoZWNrYm94X19sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDQwMDsgZm9udC1zaXplOiAxNnB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZGlzYWJsZWQtc3R5bGUnOiBjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID09IHRydWUgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCI+UHJvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlIE5hdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgUHJlc2NyaXB0aW9uPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+UHJlc2NyaWJlIEFzOjwvcD5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJ4X25ld19wb3B1cF9jaGVja2JveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyeF9uZXdfcmFkaW9ib3hfYnV0dG9uIHJ4X3JhZGlvX292ZXJhbGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInJ4X3JhZGlvX2xhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwicmFkaW9cIiBjbGFzcz1cIm1kbC1yYWRpb19fYnV0dG9uIGN1c3RvbS1yYWRpby1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJQcmVzY3JpYmVBc1wiIFt2YWx1ZV09XCInUHJpdmF0ZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJjb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUy50b0xvd2VyQ2FzZSgpID09PSAncHJpdmF0ZSdcIiAoY2xpY2spPVwicHJpdmF0ZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTXCIgLz48c3BhbiBjbGFzcz1cIm1kbC1yYWRpb19fbGFiZWwgcmFkaW9fdHh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydkaXNhYmxlZC1zdHlsZSc6IGNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPT0gdHJ1ZSB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIj5Qcml2YXRlPC9zcGFuPjwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwicnhfcmFkaW9fbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJyYWRpb1wiIGNoZWNrZWQ9XCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLXJhZGlvX19idXR0b24gZC1pbmxpbmUgcmFkaW8gY3VzdG9tLXJhZGlvLWJ1dHRvblwiIG5hbWU9XCJQcmVzY3JpYmVBc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIidQQlMnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicHJlc2NyaWJlQVNfUEJTIHx8IGNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLnRvTG93ZXJDYXNlKCkgPT09ICdwYnMnXCIgKGNsaWNrKT1cIlBCUygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTXCIgLz48c3BhbiBjbGFzcz1cIm1kbC1yYWRpb19fbGFiZWwgcmFkaW9fdHh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieyAnZGlzYWJsZWQtc3R5bGUnOiBwcmVzY3JpYmVBU19QQlMgPT0gdHJ1ZXx8IGNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCI+UEJTPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInJ4X3JhZGlvX2xhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwicmFkaW9cIiBjaGVja2VkPVwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1yYWRpb19fYnV0dG9uIGQtaW5saW5lIHJhZGlvIGN1c3RvbS1yYWRpby1idXR0b25cIiBuYW1lPVwiUHJlc2NyaWJlQXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCInUlBCUydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwcmVzY3JpYmVBU19SUEJTIHx8IGNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLnRvTG93ZXJDYXNlKCkgPT09ICdycGJzJ1wiIChjbGljayk9XCJSUEJTKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVNcIiAvPjxzcGFuIGNsYXNzPVwibWRsLXJhZGlvX19sYWJlbCByYWRpb190eHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7ICdkaXNhYmxlZC1zdHlsZSc6IHByZXNjcmliZUFTX1JQQlMgPT0gdHJ1ZXx8IGNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCI+UlBCUzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnhfbmV3X3BvcHVwX2NoZWNrYm94XCIgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gIT0gbnVsbCAmJiBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic1R5cGUhPXVuZGVmaW5lZCAmJiBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic1R5cGUhPW51bGwgJiZcclxuICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzVHlwZS50b0xvd2VyQ2FzZSgpID09PSAnbm9uIHBicycgJiZcclxuICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLmR2YU51bWJlciAhPSBudWxsICYmXHJcbiAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5kdmFOdW1iZXIgIT0gJycgJiYgaXNOb25QYnNGbGFnID09IGZhbHNlICYmICFpc1ByZXNjcmliZUFzUHJpdmF0ZU9ubHlcclxuICAgICAgICAgICAgICBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtZGwtY2hlY2tib3ggbWRsLWpzLWNoZWNrYm94IG1kbC1qcy1yaXBwbGUtZWZmZWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJjaGVja2JveFwiIGNsYXNzPVwiY2hlY2tfYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiY29tbW9uU2VydmljZXMudW5saXN0ZWRSQVwiIChjbGljayk9XCJ1bmxpc3RlZFJBKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZGwtY2hlY2tib3hfX2xhYmVsIGNoZWNrX2JveF9sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2Rpc2FibGVkLXN0eWxlJzogY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9PSB0cnVlIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBVbmxpc3RlZCBSQVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCJcclxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIntcclxuICAgICAgICAgICAgICBNX0NUR19ib3hfaGlkZTogIShcclxuICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzICYmXHJcbiAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5wYXRpZW50Q3RnRmxhZyA9PSAwICYmXHJcbiAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5wYXRpZW50Q3RnQ29QYXltZW50ID09IDAgJiZcclxuICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLnRvTG93ZXJDYXNlKCkgPT0gJ3BicydcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgPCEtLSA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPkNURy9QQlMgQ28gUGF5bWVudDo8L3A+IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnhfbmV3X3BvcHVwX2NoZWNrYm94IG0tdC0zNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIm1kbC1jaGVja2JveCBtZGwtanMtY2hlY2tib3ggbWRsLWpzLXJpcHBsZS1lZmZlY3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwiY2hlY2tib3hcIiBpZD1cImNoZWNrYm94MlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNoZWNrYm94X19pbnB1dCByeF9uZXdfZ3JvdXBfY2hlY2tib3hcIiBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLkNUR0NvUGF5bWVudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImNvbW1vblNlcnZpY2VzLkNUR0NvUGF5bWVudCA9PSB0cnVlXCIgLz48c3BhbiBjbGFzcz1cIm1kbC1jaGVja2JveF9fbGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtd2VpZ2h0OiA0MDA7IGZvbnQtc2l6ZTogMTZweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2Rpc2FibGVkLXN0eWxlJzogY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9PSB0cnVlIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiPkNURy9QQlNcclxuICAgICAgICAgICAgICAgICAgICAgICAgQ28gUGF5bWVudDwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtZ3JpZFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IHBhZGRpbmc6IDBweFwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwieyBkaXNhYmxlZFJ4Q29udGVudDogY29tbW9uU2VydmljZXMuaXNGZXRjaGluZ31cIj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5TY3JpcHQgRGF0ZTo8L3A+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2lucHV0IG5ld19yeF9wb3B1cF90YWJfaW5wdXRcIiB0eXBlPVwiZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiUnhTY3JpcHREYXRlXCIgcGxhY2Vob2xkZXI9XCIgLi4vLi4vLi4uLlwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuc2NyaXB0RGF0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5TdGFydCBEYXRlOjwvcD5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIGNsYXNzPVwibWRsLXRleHRmaWVsZF9faW5wdXQgbmV3X3J4X3BvcHVwX3RhYl9pbnB1dFwiIHR5cGU9XCJkYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiIGlkPVwiUnhTdGFydERhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiIC4uLy4uLy4uLi5cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLnN0YXJ0RGF0ZVwiIChuZ01vZGVsQ2hhbmdlKT1cImNvbW1vblNlcnZpY2VzLnJ4RW5kRGF0ZUNhbGN1bGF0ZXIoKVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5FbmQgRGF0ZTo8L3A+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2lucHV0IG5ld19yeF9wb3B1cF90YWJfaW5wdXRcIiB0eXBlPVwiZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIiBpZD1cIlJ4RW5kRGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCIuLi8uLi8uLi4uXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5lbmREYXRlXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPkRheXMgQmV0d2VlbiBSZXBlYXRzOjwvcD5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIChwYXN0ZSk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgRGF5cyBCZXR3ZWVuIFJlcGVhdHNcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV8fGNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdH1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLXRleHRmaWVsZF9faW5wdXQgbmV3X3J4X3BvcHVwX3RhYl9pbnB1dFwiIHR5cGU9XCJudW1iZXJcIiBpZD1cIkRheWJldHdlZW5yZXBlYXRzXCIgW21pbl09XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbnx8Y29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0XCJcclxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsXCIgKGtleXByZXNzKT1cImNoZWNrTW9iaWxlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJkYXlzY2hhbmdlKClcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlB1cnBvc2U6PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2lucHV0IG5ld19yeF9wb3B1cF90YWJfaW5wdXRcIiB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIiBpZD1cInNlbGVjdGVkUHVycG9zZTpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgUHVycG9zZVwiIHJlYWRPbmx5IFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMucHVycG9zZVNlYXJjaFZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwdXJwb3NlRHJvcGRvd24oKVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAjUHVycG9zZURyb3Bkb3duIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl9kcm9wZG93bl9saXN0X2JveCBuZXdfcnhfcG9wdXBfdGFiX3B1cnBvc2VfYm94IGgtMTYwcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieyBNX2xpc3RfYm94X3Nob3c6IHNlbGVjdFB1cnBvc2VEcm9wZG93biA9PT0gdHJ1ZSB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiXzFfbGlzdCByeF9kcm9wZG93blwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgKGNsaWNrKT1cInNlbGVjdFB1cnBvc2VWYWx1ZShudWxsKVwiIGNsYXNzPVwicC0xMlwiPjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgcHVycG9zZSBvZiBwdXJwb3NlRGF0YVwiIChjbGljayk9XCJzZWxlY3RQdXJwb3NlVmFsdWUocHVycG9zZSlcIiBbY2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgaGVpZ2hsaWdodDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHVycG9zZVsnbG9va3VwVGV4dCddID09XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnB1cnBvc2VTZWFyY2hWYWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBwdXJwb3NlW1wibG9va3VwVGV4dFwiXSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieyBNX0NUR19ib3hfaGlkZTogY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgIT0gdHJ1ZSB9XCI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5TdWJzdGl0dXRpb246PC9wPiAtLT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJ4X25ld19wb3B1cF9jaGVja2JveCBtLXQtMzZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtZGwtY2hlY2tib3ggbWRsLWpzLWNoZWNrYm94IG1kbC1qcy1yaXBwbGUtZWZmZWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJjaGVja2JveDFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWUgfHwgY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPT0gZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jaGVja2JveF9faW5wdXQgcnhfbmV3X2dyb3VwX2NoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5CcmFuZFN1YnN0aXR1dGVzTm90QWxsb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInRoaXMuYnJhbmRTdWJzdGl0dXRlc05vdEFsbG93KGNvbW1vblNlcnZpY2VzLkJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvdylcIiBbY2hlY2tlZF09XCJcclxuICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5CcmFuZFN1YnN0aXR1dGVzTm90QWxsb3dcclxuICAgICAgICAgICAgICAgICAgICAgID8gY29tbW9uU2VydmljZXMuQnJhbmRTdWJzdGl0dXRlc05vdEFsbG93XHJcbiAgICAgICAgICAgICAgICAgICAgICA6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgIFwiIC8+PHNwYW4gY2xhc3M9XCJtZGwtY2hlY2tib3hfX2xhYmVsXCIgc3R5bGU9XCJmb250LXdlaWdodDogNDAwOyBmb250LXNpemU6IDE2cHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydkaXNhYmxlZC1zdHlsZSc6IGNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPT0gdHJ1ZSB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIj5CcmFuZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTdWJzdGl0dXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgTm90IFBlcm1pdHRlZDwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7IE1fQ1RHX2JveF9oaWRlX2JyYW5kOiBjb21tb25TZXJ2aWNlcy5sZW1pID09IHRydWUgfVwiIGlkPVwiYnJhbmRuYW1ldG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cImhpZGVUb29sVGlwKClcIiAobW91c2VlbnRlcik9XCJzaG93dG9vbHRpcChjb21tb25TZXJ2aWNlcy5sZW1pLGJyYW5kdG9vbHRpcClcIj5cclxuICAgICAgICAgICAgICAgICAgPCEtLSA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPkJyYW5kIE5hbWU6PC9wPiAtLT5cclxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNicmFuZHRvb2x0aXA+PHNwYW4gY2xhc3M9XCJpbmNsdWRlX2JyYW5kX3Rvb2x0aXBcIj5UaGUgc2VsZWN0ZWQgcHJvZHVjdCBpcyBMRU1JXHJcbiAgICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVkLiBUaGVyZWZvcmUgaXQgbWF5IGJlXHJcbiAgICAgICAgICAgICAgICAgICAgICBwcmVzY3JpYmVkIGJ5IHRoZSBicmFuZCBuYW1lIG9ubHkuPC9zcGFuPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyeF9uZXdfcG9wdXBfY2hlY2tib3ggbS10LTM2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibWRsLWNoZWNrYm94IG1kbC1qcy1jaGVja2JveCBtZGwtanMtcmlwcGxlLWVmZmVjdFwiIFtjbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgIE1fQ1RHX2JveF9oaWRlX2JyYW5kX25hbWU6IGNvbW1vblNlcnZpY2VzLmxlbWkgPT0gdHJ1ZSB8fCBjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID09IHRydWUgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWVcclxuICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwiY2hlY2tib3hcIiBpZD1cImNoZWNrYm94MlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNoZWNrYm94X19pbnB1dCByeF9uZXdfZ3JvdXBfY2hlY2tib3hcIiBbY2hlY2tlZF09XCJjb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInRoaXMuaXNDaGFuZ2VCcmFuZE5hbWUoY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUpXCIgLz48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jaGVja2JveF9fbGFiZWxcIiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA0MDA7IGZvbnQtc2l6ZTogMTZweFwiPkluY2x1ZGUgQnJhbmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgTmFtZTwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+UmVndWxhdGlvbiAyNDo8L3A+IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnhfbmV3X3BvcHVwX2NoZWNrYm94IG0tdC0zNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIm1kbC1jaGVja2JveCBtZGwtanMtY2hlY2tib3ggbWRsLWpzLXJpcHBsZS1lZmZlY3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwiY2hlY2tib3hcIiBpZD1cImNoZWNrYm94MlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNoZWNrYm94X19pbnB1dCByeF9uZXdfZ3JvdXBfY2hlY2tib3hcIiBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLnJlZ3VsYXRpb24yNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImNvbW1vblNlcnZpY2VzLnJlZ3VsYXRpb24yNFwiIC8+PHNwYW4gY2xhc3M9XCJtZGwtY2hlY2tib3hfX2xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXdlaWdodDogNDAwOyBmb250LXNpemU6IDE2cHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydkaXNhYmxlZC1zdHlsZSc6IGNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPT0gdHJ1ZSB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIj5SZWd1bGF0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDI0PC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1ncmlkXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTsgcGFkZGluZzogMHB4XCJcclxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7IGRpc2FibGVkUnhDb250ZW50OiBjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nfVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+RE8gTk9UIHNlbmQgdG8gTXlTTDo8L3A+IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnhfbmV3X3BvcHVwX2NoZWNrYm94IG0tdC0zNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIm1kbC1jaGVja2JveCBtZGwtanMtY2hlY2tib3ggbWRsLWpzLXJpcHBsZS1lZmZlY3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwiY2hlY2tib3hcIiBpZD1cImNoZWNrYm94MlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNoZWNrYm94X19pbnB1dCByeF9uZXdfZ3JvdXBfY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLm15U0xDb25zZW50XCIgLz48c3BhbiBjbGFzcz1cIm1kbC1jaGVja2JveF9fbGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtd2VpZ2h0OiA0MDA7IGZvbnQtc2l6ZTogMTZweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2Rpc2FibGVkLXN0eWxlJzogY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9PSB0cnVlIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiPkRPXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE5PVCBzZW5kIHRvIE15U0w8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gUGhhcm1hY3k6IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJ4X25ld19wb3B1cF9jaGVja2JveFwiIHN0eWxlPVwibWFyZ2luLXRvcDogMHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIm1kbC1jaGVja2JveCBtZGwtanMtY2hlY2tib3ggbWRsLWpzLXJpcHBsZS1lZmZlY3RcIj48aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZVwiIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jaGVja2JveF9faW5wdXQgcnhfbmV3X2dyb3VwX2NoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3lcIiAoY2hhbmdlKT1cInNlbmRUb1BoYXJtYWN5Q2hhbmdlKClcIiAvPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jaGVja2JveF9fbGFiZWxcIiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA0MDA7Zm9udC1zaXplOiAxNnB4O21hcmdpbi10b3A6IC03cHg7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2Rpc2FibGVkLXN0eWxlJzogY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9PSB0cnVlIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiPlNlbmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIFBoYXJtYWN5PC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIGNsYXNzPVwibWRsLXRleHRmaWVsZF9faW5wdXQgbmV3X3J4X3BvcHVwX3RhYl9pbnB1dFwiIHR5cGU9XCJ0ZXh0XCIgcmVhZG9ubHlcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCIgaWQ9XCJzZWxlY3RlZGRvc2VcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5zZW5kVG9QaGFybWFjeVZhbHVlXCIgKGNsaWNrKT1cInN0cFZhbHVlRHJvcGRvd24oKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsgTV9DVEdfYm94X2hpZGU6IGNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5ICE9IHRydWUgfVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgI3N0cERyb3Bkb3duIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl9kcm9wZG93bl9saXN0X2JveCBuZXdfcnhfcG9wdXBfdGFiX3N0cF9ib3ggaC05M3BcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7IE1fbGlzdF9ib3hfc2hvdzogc2VsZWN0c3RwRHJvcGRvd24gPT09IHRydWUgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfMV9saXN0IHJ4X2Ryb3Bkb3duXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsaSAoY2xpY2spPVwic2VsZWN0U3RwVmFsdWUobnVsbClcIiBjbGFzcz1cInAtMTJcIj48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBzZW5kdG9waGFybWFjeSBvZiBzZW5kdG9waGFybWFjeURhdGFcIiAoY2xpY2spPVwic2VsZWN0U3RwVmFsdWUoc2VuZHRvcGhhcm1hY3kpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHNlbmR0b3BoYXJtYWN5Lm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgPCEtLSA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPkVtZXJnZW5jeSBTdXBwbHk6PC9wPiAtLT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJ4X25ld19wb3B1cF9jaGVja2JveCBtLXQtMzZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtZGwtY2hlY2tib3ggbWRsLWpzLWNoZWNrYm94IG1kbC1qcy1yaXBwbGUtZWZmZWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJjaGVja2JveDJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jaGVja2JveF9faW5wdXQgcnhfbmV3X2dyb3VwX2NoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5lbWVyZ2VuY3lTdXBwbHlcIiAvPjxzcGFuIGNsYXNzPVwibWRsLWNoZWNrYm94X19sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDQwMDsgZm9udC1zaXplOiAxNnB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZGlzYWJsZWQtc3R5bGUnOiBjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID09IHRydWUgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCI+RW1lcmdlbmN5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFN1cHBseTwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInBhZ2UgPT0gMlwiIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl8yXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1ncmlkXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTsgcGFkZGluZzogMHB4OyBvcGFjaXR5OiAxXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTYtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDogMTAwJTsgcGFkZGluZzogMHB4XCIgY2xhc3M9XCJtZGwtZ3JpZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sIG1kbC1jZWxsLS04LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWdyaWQgbmV3X3J4X3BvcHVwX3RhYl8xX2dyaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlJYPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiIFtpbm5lckhUTUxdPVwiY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZVwiPjwvYj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcFwiIHN0eWxlPVwibWFyZ2luOiAwcHhcIj5RdWFudGl0eTogPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjb2xvcjogcmdiKDQ1LCA0NSwgNDUpOyBmb250LXdlaWdodDogNjAwXCI+e3sgY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4gUmVwZWF0czogPHNwYW4gc3R5bGU9XCJjb2xvcjogcmdiKDQ1LCA0NSwgNDUpOyBmb250LXdlaWdodDogNjAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwgfX08L3NwYW4+IERlZmF1bHQgUXVhbnRpdHk6e3tnZXREZWZhdWx0UXVhbnRpdHkoKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0IFJlcGVhdHM6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24hPW51bGwmJmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucmVwZWF0cyE9bnVsbD9jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnJlcGVhdHM6XCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5kb3NlU2VhcmNoVmFsdWUgIT0gJycgfHxjb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWUgIT0gJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgY29tbW9uU2VydmljZXMuZG9zZVNlYXJjaFZhbHVlIH19IDwvc3Bhbj48c3Bhbj57eyBjb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwICpuZ0lmPVwiY29tbW9uU2VydmljZXMuZm9vZFNlYXJjaFZhbHVlICE9ICcnXCIgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29tbW9uU2VydmljZXMuZm9vZFNlYXJjaFZhbHVlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7SW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbiAhPVwiXCIgJiYgSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbiE9bnVsbD9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3RydWN0aW9uRGVzY3JpcHRpb246Y29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSE9XCJcIiAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSE9bnVsbD9jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlOlwiXCJ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCAqbmdJZj1cImNvbW1vblNlcnZpY2VzLnJvdXRlU2VhcmNoVmFsdWUgIT0gJydcIiBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb21tb25TZXJ2aWNlcy5yb3V0ZVNlYXJjaFZhbHVlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFAuUi5OIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiY29tbW9uU2VydmljZXMucnhQUk5cIiBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGljb24tZG9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiY29sb3I6ICMwMDc3YjZcIj5jaGVjazwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWNvbW1vblNlcnZpY2VzLnJ4UFJOXCI+LTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcFwiPkRheXMgQmV0d2VlbiBSZXBlYXRzOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShjb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbClcIj57e2NvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwpXCI+LTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVW51c3VhbCBEb3NlOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJjb21tb25TZXJ2aWNlcy51blVzdWFsRG9zZUZsYWdcIiBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGljb24tZG9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiY29sb3I6ICMwMDc3YjZcIj5jaGVjazwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWNvbW1vblNlcnZpY2VzLnVuVXN1YWxEb3NlRmxhZ1wiPi08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3BcIj5TY3JpcHQgRGF0ZTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7dGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHREYXRlfGRhdGU6J2RkLU1NLXl5eXknfX08L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wXCI+U3RhcnQgRGF0ZTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7dGhpcy5jb21tb25TZXJ2aWNlcy5zdGFydERhdGV8ZGF0ZTonZGQtTU0teXl5eSd9fTwvc3Bhbj4sIEVuZCBEYXRlOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3t0aGlzLmNvbW1vblNlcnZpY2VzLmVuZERhdGV8ZGF0ZTonZGQtTU0teXl5eSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wXCI+UHJlc2NyaWJlIEFzOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShjb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUylcIj57e2NvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMpXCI+LTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcFwiPlB1cnBvc2U6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFjb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGNvbW1vblNlcnZpY2VzLnB1cnBvc2VTZWFyY2hWYWx1ZSlcIj57e2NvbW1vblNlcnZpY2VzLnB1cnBvc2VTZWFyY2hWYWx1ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGNvbW1vblNlcnZpY2VzLnB1cnBvc2VTZWFyY2hWYWx1ZSlcIj4tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmNsdWRlIEJyYW5kIE5hbWU6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lXCIgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBpY29uLWRvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImNvbG9yOiAjMDA3N2I2XCI+Y2hlY2s8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFjb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZVwiPi08L3NwYW4+LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQnJhbmQgU3Vic3RpdHV0aW9uIE5vdCBQZXJtaXR0ZWQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImNvbW1vblNlcnZpY2VzLkJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvd1wiIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgaWNvbi1kb25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjb2xvcjogIzAwNzdiNlwiPmNoZWNrPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhY29tbW9uU2VydmljZXMuQnJhbmRTdWJzdGl0dXRlc05vdEFsbG93XCI+LTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVndWxhdGlvbiAyNDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiY29tbW9uU2VydmljZXMucmVndWxhdGlvbjI0XCIgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBpY29uLWRvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImNvbG9yOiAjMDA3N2I2XCI+Y2hlY2s8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFjb21tb25TZXJ2aWNlcy5yZWd1bGF0aW9uMjRcIj4tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDVEcvUEJTIENvIFBheW1lbnQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImNvbW1vblNlcnZpY2VzLkNUR0NvUGF5bWVudFwiIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgaWNvbi1kb25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjb2xvcjogIzAwNzdiNlwiPmNoZWNrPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhY29tbW9uU2VydmljZXMuQ1RHQ29QYXltZW50XCI+LTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRE8gTk9UIHNlbmQgdG8gTXlTTDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiY29tbW9uU2VydmljZXMubXlTTENvbnNlbnRcIiBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGljb24tZG9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiY29sb3I6ICMwMDc3YjZcIj5jaGVjazwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWNvbW1vblNlcnZpY2VzLm15U0xDb25zZW50XCI+LTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VuZCB0byBQaGFybWFjeTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3lcIiBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGljb24tZG9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiY29sb3I6ICMwMDc3YjZcIj5jaGVjazwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5XCI+LTwvc3Bhbj4sIFNlbmQgdG8gUGhhcm1hY3kgVmFsdWU6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFjb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5VmFsdWUpP2NvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5VmFsdWU6Jy0nfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1lcmdlbmN5IFN1cHBseTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiY29tbW9uU2VydmljZXMuZW1lcmdlbmN5U3VwcGx5XCIgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBpY29uLWRvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImNvbG9yOiAjMDA3N2I2XCI+Y2hlY2s8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFjb21tb25TZXJ2aWNlcy5lbWVyZ2VuY3lTdXBwbHlcIj4tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtZ3JpZFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IHBhZGRpbmc6IDBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sIG1kbC1jZWxsLS04LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPk5vdGUgVG8gUGhhcm1hY3k6PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGF1dG9jb21wbGV0ZT1cIm9mZlwiIG5hbWU9XCJcIiBpZD1cIlwiIHJvd3M9XCIzXCIgbWF4bGVuZ3RoPVwiNTBcIiBwbGFjZWhvbGRlcj1cIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ0aGlzLmNvbW1vblNlcnZpY2VzLmRvY3Rvck5vdGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LTEwMCBuZXdfcnhfcG9wdXBfdGFiX3RleHRhcmVhIHJ4LW0tdy01MzVwXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2wgbWRsLWNlbGwtLTgtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+QW5ub3RhdGlvbjo8L3A+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGF1dG9jb21wbGV0ZT1cIm9mZlwiIG5hbWU9XCJcIiBpZD1cIlwiIHJvd3M9XCIzXCIgbWF4bGVuZ3RoPVwiNTAwXCIgcGxhY2Vob2xkZXI9XCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidGhpcy5jb21tb25TZXJ2aWNlcy5hbm5vdGF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LTEwMCBuZXdfcnhfcG9wdXBfdGFiX3RleHRhcmVhIHJ4LW0tdy01MzVwXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2wgbWRsLWNlbGwtLTgtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+UmVhc29uIEZvciBQcmVzY3JpcHRpb246PC9wPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBhdXRvY29tcGxldGU9XCJvZmZcIiBuYW1lPVwiXCIgaWQ9XCJcIiByb3dzPVwiM1wiIG1heGxlbmd0aD1cIjUwXCIgcGxhY2Vob2xkZXI9XCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpcHRpb25SZWFzb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctMTAwIG5ld19yeF9wb3B1cF90YWJfdGV4dGFyZWEgcngtbS13LTUzNXBcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTYtY29sIG1kbC1jZWxsLS04LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiIHN0eWxlPVwidGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7dGhpcy5nZXRTdGF0ZUF1dGhvcml0eUxhYmVsKGNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnN0YXRlKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9XCJtYXJnaW46IDBweDttYXJnaW4tdG9wOiAtOHB4O21hcmdpbi1ib3R0b206IDEwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RhdGUtdHh0LWNvbG9yIG5ld19yeF9wb3B1cF9sYWJlbF9wXCI+KFJlbGV2YW50IHRvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuc3RhdGUgfX0pPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIG5hbWU9XCJhcHByb3ZhbFwiIHBsYWNlaG9sZGVyPVwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIiBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLlN0YXRlQXV0aG9yaXR5TnVtYmVyXCIgbWF4bGVuZ3RoPVwiMjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwiYXV0aG9yaXR5Tm9WYWxpZGF0aW9uKCRldmVudClcIiAobmdNb2RlbENoYW5nZSk9XCJhdXRob3JpdHlOb0NoYW5nZSgkZXZlbnQpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tNi1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwie1xyXG4gICAgICAgICAgICAnbmV3X3J4X25vX2F1dGhvcml0eSc6IXNob3dBdXRob3JpdHlCb3goXHJcbiAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiE9bnVsbD8gY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnM6JycsY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMsY29tbW9uU2VydmljZXMucnhBdXRob3JpdHksY29tbW9uU2VydmljZXMudW5saXN0ZWRSQSlcclxuICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICBzaG93QXV0aG9yaXR5Qm94KFxyXG4gICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uIT1udWxsPyAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnM6JycsXHJcbiAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLFxyXG4gICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5yeEF1dGhvcml0eSxcclxuICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMudW5saXN0ZWRSQVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJwYWRkaW5nOiAwcHhcIiBjbGFzcz1cIm1kbC1ncmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTgtY29sIG1kbC1jZWxsLS02LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX05ld1wiPkhPVExJTkU6IDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9zcGFuXCI+e3tjb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9PVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1JQQlMnPycxODAwNTUyNTgwJzonMTgwMDg4ODMzMyd9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tNC1jb2wgbWRsLWNlbGwtLTItY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cInRleHQtYWxpZ246IHJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3Bhc3NldHMuaG9sYS5oZWFsdGgvcngtd2lkZ2V0cy9yeC1taW1zLnBuZ1wiIGFsdD1cIk1JTVMgbG9nb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiA4MHB4OyBoZWlnaHQ6IGF1dG9cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtZ3JpZFwiIHN0eWxlPVwicGFkZGluZzogMHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTYtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlc2NyaWJlciBOYW1lOjxzcGFuPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5maXJzdE5hbWUgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIgXCIgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMubGFzdE5hbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tNi1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVzY3JpYmVyIE51bWJlcjo8c3Bhbj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy5wcmVzY3JpYmVyTnVtYmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTYtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aWVudCBNZWRpY2FyZSBOdW1iZXI6PHNwYW4+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLm1lZGljYXJlTnVtYmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLm1lZGljYXJlTnVtYmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tNi1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBBdXRob3JpdHkgRm9ybSBObzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuYXV0aG9yaXR5Rm9ybU5vXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGNvbW1vblNlcnZpY2VzLmF1dGhvcml0eUZvcm1Ob1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1ncmlkXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTsgcGFkZGluZzogMHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbCBtZGwtY2VsbC0tOC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPkF1dGhvcml0eSBJdGVtOjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhdXRob3JpdHlfaXRlbV90ZXh0XCIgW2lubmVySFRNTF09XCJjb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lXCI+PC9wPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcCBuZXdfcnhfcG9wdXBfdGFiX3NtYWxsQm94ZXNcIiBzdHlsZT1cIm1hcmdpbjogMHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgUXVhbnRpdHk6PHNwYW4gc3R5bGU9XCJjb2xvcjogcmdiKDQ1LCA0NSwgNDUpOyBmb250LXdlaWdodDogNjAwXCI+IHt7IGNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj4gUmVwZWF0czo8c3BhbiBzdHlsZT1cImNvbG9yOiByZ2IoNDUsIDQ1LCA0NSk7IGZvbnQtd2VpZ2h0OiA2MDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwgfX08L3NwYW4+IERlZmF1bHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBRdWFudGl0eTp7e2NvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24hPW51bGwmJmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHMhPW51bGw/KGNvbW1vblNlcnZpY2VzLnF1YW50aXR5V2l0aFVuaXRGbGFnP1wiMVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHggXCI6XCJcIikrY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tYXhRdHlVbml0czpcIlwifX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgUmVwZWF0czp7e2NvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24hPW51bGwmJmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucmVwZWF0cyE9bnVsbD9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnJlcGVhdHM6XCJcIn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWdyaWRcIiBzdHlsZT1cInBhZGRpbmc6IDBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2wgbWRsLWNlbGwtLTgtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBQQlMgTGlzdGVkIEluZGljYXRpb24gQXV0aG9yaXR5OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBuZXdfcnhfcG9wdXBfdGFiX3RleHRhcmVhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm1pbi1oZWlnaHQ6IDcwcHg7IG1heC1oZWlnaHQ6IDE1MHB4OyBvdmVyZmxvdzogYXV0b1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT1cIm1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDE1cHg7bGlzdC1zdHlsZTogbm9uZTtwYWRkaW5nOiAwcHg7XCIgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1Nob3dSZXN0cmljdGlvbnMgPT0gdHJ1ZSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucyAhPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMgIT0gJydcclxuICAgICAgICAgICAgICAgICAgICAgIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIHN0eWxlPVwiZm9udC1zaXplOiAxMnB4O3BhZGRpbmc6IDBweCAxMHB4O21hcmdpbi1ib3R0b206IDEwcHg7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuZXdfcnhfcG9wX2F1dF9pbnQgY3Vyc29yXCIgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3RyaWN0aW9uIG9mIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgLlJlc3RyaWN0aW9ucztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCBhcyBpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiIFtjbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3J4X3BvcF9hdXRfaW5zX3NlbGVjdDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnNJZCA9PSBpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbjogMHB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCIgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uUHJldmlldyAhPSBudWxsICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvbi5yZXN0cmljdGlvblByZXZpZXcgIT0gJycgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uVGV4dCAhPSBudWxsICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvbi5yZXN0cmljdGlvblRleHQgIT0gJydcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluZGljYXRpb25BdXRob3JpdHkoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uIT1udWxsPyBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1heFF0eVVuaXRzOicnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uIT1udWxsPyBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnJlcGVhdHM6JycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyeF9yZXN0cmljdGlvblRleHRcIiBzdHlsZT1cImZvbnQtc2l6ZTogMTJweDtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uVGV4dC5sZW5ndGggPCA4MFwiPjxiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25UeXBlIH19PC9iPiAtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbFRvRm9ybWF0dGVkVGV4dChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uUHJldmlld1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI+PC9zcGFuPjwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyeF9yZXN0cmljdGlvblRleHRcIiBzdHlsZT1cImZvbnQtc2l6ZTogMTJweDtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJyZXN0cmljdGlvbi5yZXN0cmljdGlvblRleHQubGVuZ3RoID4gODBcIj48YiAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2F0aW9uQXV0aG9yaXR5KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uIT1udWxsP2NvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHM6JycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uIT1udWxsP2NvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucmVwZWF0czonJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvbi5yZXN0cmljdGlvblR5cGUgfX08L2I+IC1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGljYXRpb25BdXRob3JpdHkoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24hPW51bGw/Y29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tYXhRdHlVbml0czonJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24hPW51bGw/Y29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5yZXBlYXRzOicnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiIFtpbm5lckhUTUxdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbFRvRm9ybWF0dGVkVGV4dChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uUHJldmlld1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkuc3Vic3RyaW5nKDAsIDgwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIj48L3NwYW4+Li4uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyOyBjb2xvcjogI2ZmOTk3OFwiIGlkPVwic2hvdy10b29sdGlwLWlkXCI+U2hvd1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb3JlPC9hPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3Rvb2x0aXBkZW1vPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJyeF90b29sdGlwX2lubmVyX2JveFwiIFtpbm5lckhUTUxdPVwicmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25UZXh0XCI+PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sIG1kbC1jZWxsLS04LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwYWRkaW5nOiAwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbCBtZGwtY2VsbC0tOC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+UEJTIE5vdGVzOjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgYXV0b2NvbXBsZXRlPVwib2ZmXCIgbmFtZT1cIlwiIGlkPVwiXCIgcm93cz1cIjJcIiBtYXhsZW5ndGg9XCI1MDBcIiBwbGFjZWhvbGRlcj1cIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctMTAwIG5ld19yeF9wb3B1cF90YWJfdGV4dGFyZWFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMucGJzTm90ZXNcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sIG1kbC1jZWxsLS04LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGljYXRpb24gRm9yIFRoaXMgQXV0aG9yaXR5OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgYXV0b2NvbXBsZXRlPVwib2ZmXCIgbmFtZT1cIlwiIGlkPVwiXCIgcm93cz1cIjJcIiBwbGFjZWhvbGRlcj1cIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnNcIiAobmdNb2RlbENoYW5nZSk9XCJvbklucHV0Q2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LTEwMCBuZXdfcnhfcG9wdXBfdGFiX3RleHRhcmVhIHJ4LW0tdy0xMDBcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2wgbWRsLWNlbGwtLTgtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEF1dGhvcml0eUxhYmVsKGNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnN0YXRlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImFwcHJvdmFsXCIgcGxhY2Vob2xkZXI9XCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIiBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5hcHByb3ZhbE5vXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25JbnB1dGNoYW5nZUFwcHJvdmFsTm8oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwiYXV0aG9yaXR5Tm9WYWxpZGF0aW9uKCRldmVudClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgIXNob3dBdXRob3JpdHlCb3goXHJcbiAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24hPW51bGw/IGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zOicnLFxyXG4gICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyxcclxuICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucnhBdXRob3JpdHksXHJcbiAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkFcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICBcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ0ZXh0LWFsaWduOiByaWdodFwiICpuZ0lmPVwiIWNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3Bhc3NldHMuaG9sYS5oZWFsdGgvcngtd2lkZ2V0cy9yeC1taW1zLnBuZ1wiIGFsdD1cIk1JTVMgbG9nb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDgwcHg7IGhlaWdodDogYXV0b1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIk5vX0F1dGhvcml0eV9ib3hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwPk5vIEF1dGhvcml0eSBSZXF1aXJlZDwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyeF9mb290ZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJ4X2Zvb3Rlcl9icmFuZFwiPlxyXG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwibWwtMTBcIj48c3Bhbj5Ib2xhIENvbnN1bHQgfCAxLjAgPHNwYW4gKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5zYW5kYm94XCI+fCA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyeF9zdGFnaW5nXCI+VGhpcyBpcyBhIHNhbmRib3ggZW52aXJvbm1lbnQ8L3NwYW4+PC9zcGFuPjwvc3Bhbj48L3A+XHJcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtdC0xNXBcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicnhfcG9wdXBfZm9vdGVyX3RleHRcIj7CqSAyMDI2IEhvbGEgSGVhbHRoLCBhIGJyYW5kIG9mIFBhY2thcGlsbCBQdHkgTHRkIHwgdlxyXG4gICAgICAgICAgICAgICAgICAxLjEuMyB8XHJcbiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJodHRwczovL2hvbGEuaGVhbHRoL2NvbnN1bHQtdGVybXNcIiB0YXJnZXQ9XCJfYmxhbmtcIj5UZXJtczwvYT4gfFxyXG4gICAgICAgICAgICAgICAgICA8YSBocmVmPVwiaHR0cHM6Ly9ob2xhLmhlYWx0aC9jb25zdWx0LXByaXZhY3ktcG9saWN5XCIgdGFyZ2V0PVwiX2JsYW5rXCI+UHJpdmFjeSBQb2xpY3k8L2E+IHxcclxuICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cIm1haWx0bzpzdXBwb3J0QGhvbGEuaGVhbHRoXCIgdGFyZ2V0PVwiX2JsYW5rXCI+SGVscDwvYT48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj4iXX0=
4979
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaG9sYS1yeC9zcmMvbGliL3J4L3J4LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2hvbGEtcngvc3JjL2xpYi9yeC9yeC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBYyxZQUFZLEVBQUUsWUFBWSxFQUFVLE1BQU0sRUFBMEIsU0FBUyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUcxSyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNqRixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQztBQUUxSCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxrRkFBa0YsQ0FBQztBQUMzSSxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSw4RUFBOEUsQ0FBQztBQUNySSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7O0FBTzNFLE1BQU0sT0FBTyxXQUFXO0lBdUd0QixZQUNTLFVBQXNCLEVBQ3RCLGNBQThCLEVBQzdCLFVBQXNCLEVBQ3RCLFlBQStCLEVBQ2hDLFFBQWtCLEVBQ2pCLFFBQW1CLEVBQ25CLEtBQWlCLEVBQ2pCLGdCQUFrQztRQVBuQyxlQUFVLEdBQVYs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QUMsY0FBYyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDbkM7WUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsU0FBUyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxTQUFTLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFBO1lBQ3pRLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxVQUFVLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLFVBQVUsSUFBSSxTQUFTLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUE7WUFDblIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxJQUFJLFNBQVMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUE7U0FDelI7UUFDRCxP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QUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2plLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUM3SixVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUks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dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDSSxVQUFVO3NCQUExRCxTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFFckMsVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUVQLHVCQUF1QjtzQkFEdEIsU0FBUzt1QkFBQyxzQkFBc0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBdUZWLE9BQU87c0JBQWhELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDZCxVQUFVO3NCQUFuQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ2EsT0FBTztzQkFBM0MsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQW9DbkMsT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBPbkluaXQsIE91dHB1dCwgUmVuZGVyZXIyLCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbW1vblNlcnZpY2VzIH0gZnJvbSAnLi4vc2VydmljZXMvY29tbW9uJztcclxuaW1wb3J0IHsgQnJhbmRJbmNsdWRlQ29tcG9uZW50IH0gZnJvbSAnLi4vYnJhbmQtaW5jbHVkZS9icmFuZC1pbmNsdWRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEF2YWlsYWJsZUZvcm11bGF0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4uL2JyYW5kLWluY2x1ZGUvYXZhaWxhYmxlLWZvcm11bGF0aW9ucy9hdmFpbGFibGUtZm9ybXVsYXRpb25zLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSXNBdXRob3JpdHlDb21wb25lbnQgfSBmcm9tICcuLi9pcy1hdXRob3JpdHkvaXMtYXV0aG9yaXR5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlYWxUaW1lUHJlc2NyaXB0aW9uTW9uaXRvcmluZ0NvbXBvbmVudCB9IGZyb20gJy4uL3JlYWwtdGltZS1wcmVzY3JpcHRpb24tbW9uaXRvcmluZy9yZWFsLXRpbWUtcHJlc2NyaXB0aW9uLW1vbml0b3JpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29uZmlybVBhdGllbnRDb250YWN0RGV0YWlsc0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbmZpcm0tcGF0aWVudC1jb250YWN0LWRldGFpbHMvY29uZmlybS1wYXRpZW50LWNvbnRhY3QtZGV0YWlscy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQYXNzd29yZENvbXBvbmVudCB9IGZyb20gJy4uL3Bhc3N3b3JkL3Bhc3N3b3JkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IGNvbmZpZywgZXJyb3Jjb25maWcgfSBmcm9tICcuLi9lbnZpcm9ubWVudHMvY29uZmlnJztcclxuaW1wb3J0IHsgQ2Vhc2VQb3B1cENvbXBvbmVudCB9IGZyb20gJy4uL2NlYXNlLXBvcHVwL2NlYXNlLXBvcHVwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlaXNzdWVQb3B1cENvbXBvbmVudCB9IGZyb20gJy4uL3JlaXNzdWUtcG9wdXAvcmVpc3N1ZS1wb3B1cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDbG9zZVBvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4vY2xvc2UtcG9wdXAvY2xvc2UtcG9wdXAuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXJ4JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcnguY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3J4LmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSeENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZCgnTWVkaWNpbmVEcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KSB3cmFwcGVyUmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdQcmVzY3JpYmVEcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KSBwcmVzY3JpYmVEcm9wZG93blJlZiE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnRG9zZURyb3Bkb3duJywgeyBzdGF0aWM6IGZhbHNlIH0pIGRvc2VSZWYhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ0ZyZXFEcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KSBmcmVxUmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdzdHBEcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KSBzdHBSZWYhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ0Zvb2REcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KSBmb29kUmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdJbnN0cnVjdGlvbkRyb3Bkb3duJywgeyBzdGF0aWM6IGZhbHNlIH0pIEluc3RydWN0aW9uUmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdSb3V0ZURyb3Bkb3duJywgeyBzdGF0aWM6IGZhbHNlIH0pIHJvdXRlUmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdQdXJwb3NlRHJvcGRvd24nLCB7IHN0YXRpYzogZmFsc2UgfSkgcHVycG9zZVJlZiE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIEBPdXRwdXQoKSBjbG9zZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBzdWJtaXRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAVmlld0NoaWxkKCdzZWxlY3RBY3Rpb25Ecm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHNlbGVjdEFjdGlvbkRyb3Bkb3duUmVmITogRWxlbWVudFJlZjtcclxuICBzZWxlY3RBY3Rpb25CdG5Ecm9wZG93biA9IGZhbHNlO1xyXG4gIGRvc2VEYXRhID0gW107XHJcbiAgZnJlcXVlbmN5RGF0YSA9IFtdO1xyXG4gIHNlbmR0b3BoYXJtYWN5RGF0YTogYW55ID0gW107XHJcbiAgZm9vZERhdGEgPSBbXTtcclxuICBwdXJwb3NlRGF0YSA9IFtdO1xyXG4gIHJvdXRlRGF0YSA9IFtdO1xyXG4gIGNlYXNlRGF0YSA9IFtdO1xyXG4gIGluc3RydWN0aW9uRGF0YTogYW55ID0gW107XHJcbiAgcm91dGVEYXRhRmlsdGVyID0gJyc7XHJcbiAgSW5zdHJ1Y3Rpb25JZCA9ICcnO1xyXG4gIC8vIHRpbWVyOiBhbnk7XHJcbiAgLy93YWl0VGltZSA9IDI1MDA7XHJcbiAgaXNTdGlsbFNlYXJjaGluZyA9IGZhbHNlO1xyXG4gIHBhZ2UgPSAxO1xyXG4gIHNlbGVjdGVkTWVkaWNpbmVEcm9wZG93biA9IGZhbHNlO1xyXG4gIHNlbGVjdFBCVE5Ecm9wZG93biA9IGZhbHNlO1xyXG4gIHNlbGVjdERvc2VEcm9wZG93biA9IGZhbHNlO1xyXG4gIHNlbGVjdEZyZXFEcm9wZG93biA9IGZhbHNlO1xyXG4gIHNlbGVjdHN0cERyb3Bkb3duID0gZmFsc2U7XHJcbiAgc2VsZWN0Rm9vZERyb3Bkb3duID0gZmFsc2U7XHJcbiAgc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93biA9IGZhbHNlO1xyXG4gIHNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0ID0gdHJ1ZTtcclxuICBzZWxlY3RSb3V0ZURyb3Bkb3duID0gZmFsc2U7XHJcbiAgc2VsZWN0UHVycG9zZURyb3Bkb3duID0gZmFsc2U7XHJcbiAgbWVkaVNlYXJjaFZhbHVlID0gJyc7XHJcbiAgdGVtcE1lZGlTZWFyY2hWYWx1ZSA9ICcnO1xyXG4gIEluc3RydWN0aW9uRGVzY3JpcHRpb24gPSAnJztcclxuICBzZWFyY2hNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gIGZhdk1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgc2VhcmNoZWRNZWRpY2luZUxpc3Q6IGFueSA9IFtdO1xyXG4gIHNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbDogYW55ID0gW107XHJcbiAgb25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgcnhPbmx5UEJTID0gZmFsc2U7XHJcbiAgcnhQcml2YXRlID0gZmFsc2U7XHJcbiAgcmVzdHJpY3Rpb25zID0gbnVsbDtcclxuICBpc1Nob3dSZXN0cmljdGlvbnMgPSBmYWxzZTtcclxuICBwcmVzY3JpYmVBU19QQlMgPSB0cnVlO1xyXG4gIHByZXNjcmliZUFTX1JQQlMgPSB0cnVlO1xyXG4gIGJyYW5kTWVkaWNwcm9kdWN0SWQgPSAnJztcclxuICBicmFuZE1lZGljcGJzQ29kZSA9ICcnO1xyXG4gIGJyYW5kTWVkaWNRdHkgPSAnJztcclxuICBicmFuZE1lZGljUmVwID0gJyc7XHJcbiAgc2VsZWN0ZWRCcmFuZEluZGV4ID0gJyc7XHJcbiAgbW9sZWN1bGVOYW1lVGV4dCA9ICcnO1xyXG4gIG1vbGVjdWxlTmFtZVR5cGUgPSAnJztcclxuICBtb2xlY3VsZVN0cmVuZ3RoVGV4dCA9ICcnO1xyXG4gIGlzUnRwbU5leHQgPSBmYWxzZTtcclxuICBzZWxlY3Rpb25idG5Mb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBQb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gIGlzTm9uUGJzRmxhZzogYW55ID0gZmFsc2U7XHJcbiAgYWJvcnRCdG5GbGFnID0gZmFsc2U7XHJcbiAgYWJvcnRkaXNhYmxlID0gZmFsc2U7XHJcbiAgcmVzcG9uc2VEYXRhOiBhbnkgPSB7XHJcbiAgICBpc0Fib3J0OiBmYWxzZSxcclxuICAgIGlzUHJlc2NyaWJlOiBmYWxzZSxcclxuICAgIGFib3J0U3VjY2VzczogZmFsc2UsXHJcbiAgICBwcmVzY3JpYmVTdWNjZXNzOiBmYWxzZSxcclxuICAgIHByZXNjcmliZWRhdGE6IFwiXCIsXHJcbiAgICBhYm9ydE1zZzogXCJcIixcclxuICAgIFByZXNjcmliZU1zZzogXCJcIixcclxuICAgIHByZXNjcmliZUVycm9yOiBmYWxzZSxcclxuICAgIGFib3J0RXJyb3I6IGZhbHNlLFxyXG4gICAgcHJlc2NyaWJlRXJyX2NvZGU6IFwiXCIsXHJcbiAgICBhYm9ydEVycl9jb2RlOiBcIlwiLFxyXG4gICAgYm9keTogXCJcIlxyXG4gIH1cclxuICBwcm9kSGlkZGVuTmFtZSA9IFwiXCI7XHJcbiAgUHJvZHVjdFR5cGUgPSBcIlwiO1xyXG4gIFByb2R1Y3RTZWFyY2hOYW1lID0gXCJcIjtcclxuICBzZWFyY2hNZWRpY2luZXNMZW5ndGg6IGFueSA9IFwiXCI7XHJcbiAgc2VhcmNoTWVkaWNpbmVzUGFnZU51bWJlciA9IDE7XHJcbiAgc2VhcmNoQnluYW1lTGVuZ3RoOiBhbnkgPSBcIlwiO1xyXG4gIHNlYXJjaEJ5bmFtZVBhZ2VOdW1iZXIgPSAxO1xyXG4gIGlzZXByaXNjcmliZXByaW50ID0gZmFsc2U7XHJcbiAgZWRpdEluc3RydWN0aW9uRmxhZyA9IGZhbHNlO1xyXG4gIFByaW1hcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gIHByZXNjcmliZUFTX1JQQlNfVVJBID0gdHJ1ZTtcclxuICB0ZW1wSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbiA9IFwiXCI7XHJcbiAgaXNQcmVzY3JpYmVBc1ByaXZhdGVPbmx5ID0gZmFsc2U7XHJcbiAgdGVtcEF1dGhvcml0eUZvcm1ObyA9IFwiXCI7XHJcbiAgY2xpZW50SWQ6IGFueSA9IFwiXCI7XHJcbiAgc2hvd0Zhdm91cml0ZU1lZCA9IGZhbHNlO1xyXG4gIGlzUmVzZW5kOmJvb2xlYW4gPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKCdyeHdpZGdldHMnLCB7IHN0YXRpYzogdHJ1ZSB9KSBjb250ZW50ITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCd0b29sdGlwZGVtbycpIG15VGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoJ3Rlc3QnLCB7IHN0YXRpYzogdHJ1ZSB9KSB0b29sdGlwITogbnVsbDtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBhcGlTZXJ2aWNlOiBBcGlTZXJ2aWNlLFxyXG4gICAgcHVibGljIGNvbW1vblNlcnZpY2VzOiBDb21tb25TZXJ2aWNlcyxcclxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgY2hhbmdlZGV0ZWN0OiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHB1YmxpYyBkYXRlUGlwZTogRGF0ZVBpcGUsXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSB2aWV3UmVmQ29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICkge1xyXG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXBvcF93aWQnLCBgMTIwMHB4YCk7XHJcbiAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tcG9wdXB3JywgYDEyMDBweGApO1xyXG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWhlYWRlcnBhZGRpbmcnLCBgMHB4YCk7XHJcbiAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tcG9wdXBoJywgYDY1MHB4YCk7XHJcbiAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0taGVhZGVyZm9udHdlaWdodCcsIGA0MDBgKTtcclxuICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdjbGljaycsIChldmVudDogTW91c2VFdmVudCkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkpIHtcclxuICAgICAgICB0aGlzLmhpZGVUb29sVGlwKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaGlkZVRvb2xUaXAoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy50b29sdGlwKSB7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZCh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMudG9vbHRpcCk7XHJcbiAgICAgICAgdGhpcy50b29sdGlwID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJoaWRlVG9vbFRpcFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcclxuICBvbmNsaWNrKGV2ZW50OiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChldmVudC50YXJnZXQuY2xhc3NOYW1lID09IFwicnhfdG9vbHRpcF9pbm5lcl9ib3hcIiB8fCBldmVudC50YXJnZXQuY2xhc3NOYW1lLmluY2x1ZGVzKFwiX19yZWFjdF9jb21wb25lbnRfdG9vbHRpcFwiKSkge1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChldmVudC50YXJnZXQuaWQgPT0gJ3Nob3ctdG9vbHRpcC1pZCcpIHtcclxuICAgICAgICAgIHRoaXMuaGlkZVRvb2xUaXAoKTtcclxuICAgICAgICAgIGlmICh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpKSB7IHRoaXMuY3JlYXRlVG9vbFRpcChldmVudCkgfVxyXG4gICAgICAgIH0gZWxzZSB7IHRoaXMuaGlkZVRvb2xUaXAoKTsgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIm9uY2xpY2tcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY2xpZW50SWQgPSB0aGlzLmNvbW1vblNlcnZpY2VzLmdldENyZWRldGlhbCgpO1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmlwdGlvbikge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY2xlYXJNZWRpY2FsUHJlc2NyaXB0aW9uRGF0YSgpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY2xvc2VFcnJvclJlc3BvbnNlID0gbnVsbDtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmdldEFsbE1pbXNWYWx1ZSgpO1xyXG4gICAgICB0aGlzLmdldEluc3RydWN0aW9uVmFsdWVzKCk7XHJcbiAgICAgIHRoaXMuZ2V0RmF2b3VydGllc0xpc3QoKTtcclxuICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmlwdGlvbikge1xyXG4gICAgICAgIHRoaXMuc2V0RWRpdFZhbHVlcyh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0KVxyXG4gICAgICAgICAgdGhpcy5nZXRSZXN0cmljdGVkTWVkaWNpbmUoKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscyA9IHt9O1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuaWhpTnVtYmVyID0gdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5paGlOdW1iZXIgPT0gbnVsbCB8fCB0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLmloaU51bWJlciA9PSB1bmRlZmluZWQgfHwgdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5paGlOdW1iZXIgPT0gXCJcIiA/IDAgOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLmloaU51bWJlclxyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5ocGlvTnVtYmVyID0gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMuaHBpb051bWJlciA9PSBudWxsIHx8IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLmhwaW9OdW1iZXIgPT0gdW5kZWZpbmVkIHx8IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLmhwaW9OdW1iZXIgPT0gXCJcIiA/IDAgOiB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5ocGlvTnVtYmVyXHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy5ocGlpTnVtYmVyID0gdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLmhwaWlOdW1iZXIgPT0gbnVsbCB8fCB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMuaHBpaU51bWJlciA9PSB1bmRlZmluZWQgfHwgdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLmhwaWlOdW1iZXIgPT0gXCJcIiA/IDAgOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMuaHBpaU51bWJlclxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJuZ09uSW5pdFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFJlc3RyaWN0ZWRNZWRpY2luZSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5hcGlTZXJ2aWNlLkdldChjb25maWcuUEhZU0lDSUFOLkdFVF9SRVNUUklDVEVEX01FRElDSU5FKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlOyB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJnZXRSZXN0cmljdGVkTWVkaWNpbmVcIik7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QgPSB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCA9IHJlcy5yZXNwb25zZTtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHM/LnByb2R1Y3RJZCkpIHtcclxuICAgICAgICAgICAgICB2YXIgaW5kZXggPSB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0LmZpbmRJbmRleCgoeDogeyBwcm9kdWN0SWQ6IGFueTsgfSkgPT4geC5wcm9kdWN0SWQgPT0gTnVtYmVyKHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnByb2R1Y3RJZCkpO1xyXG4gICAgICAgICAgICAgIHZhciBzZWxlY3RlZGRhdGEgPSB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0LnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRkYXRhKSAmJiBzZWxlY3RlZGRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdC51bnNoaWZ0KHNlbGVjdGVkZGF0YVswXSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0UmVzdHJpY3RlZE1lZGljaW5lXCIpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldFJlc3RyaWN0ZWRNZWRpY2luZVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgPSBbXTtcclxuICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldFJlc3RyaWN0ZWRNZWRpY2luZVwiKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0UmVzdHJpY3RlZE1lZGljaW5lXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2UoZGF0YTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5yZW1vdmUoKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeGlkID0gXCJcIjtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWFyY2hBcGlTdG9wRmxhZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY2xlYXJNZWRpY2FsUHJlc2NyaXB0aW9uRGF0YSgpO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHZhciB2YWx1ZSA9IGRhdGEgIT0gbnVsbCA/IGRhdGEgOiB0aGlzLmNvbW1vblNlcnZpY2VzLmNsb3NlRXJyb3JSZXNwb25zZSAhPSBudWxsIHx8IHRoaXMuY29tbW9uU2VydmljZXMuY2xvc2VFcnJvclJlc3BvbnNlICE9IHVuZGVmaW5lZCA/IHRoaXMuY29tbW9uU2VydmljZXMuY2xvc2VFcnJvclJlc3BvbnNlIDogbnVsbDtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5jbG9zZUVycm9yUmVzcG9uc2UgPSBudWxsO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlbW92ZUVyclRvYXN0KCk7XHJcbiAgICAgIGNvbnNvbGUubG9nKHZhbHVlKTtcclxuICAgICAgdGhpcy5jbG9zZUV2ZW50LmVtaXQodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJjbG9zZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNlYXNlUHJlc2NyaWJlTWVkKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuY2hlY2tTdGF0dXNBbmRTY3JpcHR0eXBlKHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnNjcmlwdFR5cGUsIHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cywgMikpIHtcclxuICAgICAgICB0aGlzLmlzUmVzZW5kID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RBY3Rpb25CdG5Ecm9wZG93biA9IGZhbHNlOyB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKENlYXNlUG9wdXBDb21wb25lbnQsIHRoaXMuY29udGVudCwgdGhpcy5jZWFzZURhdGEpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgIT0gbnVsbCAmJiByZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShcIlwiLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgdHJ1ZSwgcmVzLmRhdGEpO1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlKHJlcy5kYXRhKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJjZWFzZVByZXNjcmliZU1lZFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNhbmNlbFByZXNjcmliZU1lZCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLmNoZWNrU3RhdHVzQW5kU2NyaXB0dHlwZSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLCB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMsIDQpKSB7XHJcbiAgICAgICAgdGhpcy5pc1Jlc2VuZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0QWN0aW9uQnRuRHJvcGRvd24gPSBmYWxzZTsgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihDbG9zZVBvcHVwQ29tcG9uZW50LCB0aGlzLmNvbnRlbnQsIDEpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgIT0gbnVsbCAmJiByZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShcIlwiLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgdHJ1ZSwgcmVzLmRhdGEpO1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlKHJlcy5kYXRhKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKHJlcyAhPSBudWxsICYmIHJlcy5pc0Rpc3BlbnNlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRpYWxvZ29wZW4oQ29uZmlybVBhdGllbnRDb250YWN0RGV0YWlsc0NvbXBvbmVudCwgdGhpcy5jb250ZW50LCAyKS5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChkYXRhICE9IG51bGwgJiYgZGF0YS5mbGFnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRpYWxvZ29wZW4oQ2Vhc2VQb3B1cENvbXBvbmVudCwgdGhpcy5jb250ZW50LCB0aGlzLmNlYXNlRGF0YSkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZSAhPSBudWxsICYmIHJlc3BvbnNlLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShcIlwiLCByZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlLCB0cnVlLCByZXNwb25zZS5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKHJlc3BvbnNlLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJjYW5jZWxQcmVzY3JpYmVNZWRcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYW5jZWxEcmFmdCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLmNoZWNrU3RhdHVzQW5kU2NyaXB0dHlwZSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLCB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMsIDQpKSB7XHJcbiAgICAgICAgdGhpcy5pc1Jlc2VuZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0QWN0aW9uQnRuRHJvcGRvd24gPSBmYWxzZTsgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihDbG9zZVBvcHVwQ29tcG9uZW50LCB0aGlzLmNvbnRlbnQsIDIpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgIT0gbnVsbCAmJiByZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShcIlwiLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgdHJ1ZSwgcmVzLmRhdGEpO1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlKHJlcy5kYXRhKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJjYW5jZWxEcmFmdFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlaXNzdWVQcmVzY3JpYmVNZWQoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy5jaGVja1N0YXR1c0FuZFNjcmlwdHR5cGUodGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc2NyaXB0VHlwZSwgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzLCAzKSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0QWN0aW9uQnRuRHJvcGRvd24gPSBmYWxzZTsgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihSZWlzc3VlUG9wdXBDb21wb25lbnQsIHRoaXMuY29udGVudCwge2lzUmVzZW5kOiB0aGlzLmlzUmVzZW5kfSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAhPSBudWxsICYmIHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKFwiXCIsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCB0cnVlLCByZXMuZGF0YSk7XHJcbiAgICAgICAgICAgIHRoaXMuY2xvc2UocmVzLmRhdGEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IFxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJyZWlzc3VlUHJlc2NyaWJlTWVkXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXNlbmRQcmVzY3JpYmVNZWQoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5lbmFibGVTZW5kUGFwZXJTY3JpcHRJbk1haWwgJiYgISB0aGlzLmNoZWNrU3RhdHVzQW5kU2NyaXB0dHlwZSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cywyKSkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmlzU2NyaXB0VG9QaGFybWFjeSA9PSAwKSB7XHJcbiAgICAgICAgICB0aGlzLmlzUmVzZW5kID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0QWN0aW9uQnRuRHJvcGRvd24gPSBmYWxzZTsgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKFJlaXNzdWVQb3B1cENvbXBvbmVudCwgdGhpcy5jb250ZW50LCB7aXNSZXNlbmQ6IHRoaXMuaXNSZXNlbmR9KS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXMgIT0gbnVsbCAmJiByZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKFwiXCIsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCB0cnVlLCByZXMuZGF0YSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jbG9zZShyZXMuZGF0YSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZihyZXMgPT0gbnVsbCl7XHJcbiAgICAgICAgICAgICAgdGhpcy5pc1Jlc2VuZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9IFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0QWN0aW9uQnRuRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0aW9uYnRuTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuaXNSZXNlbmQgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIGNvbnN0IEFkZHJlc3NTZW5kVG9BZGRUeXBlID0gXCJlbWFpbFwiO1xyXG4gICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBoYXJtYWN5RW1haWwudHJpbSgpKSkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl81OS5tZXNzYWdlLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzU5LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNTkuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNTkubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy52YWxpZEJ5RW1haWxObyh0aGlzLmNvbW1vblNlcnZpY2VzLnBoYXJtYWN5RW1haWwudHJpbSgpKSkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82MC5tZXNzYWdlLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzYwLmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjAuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjAubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCBwYXlsb2FkID0ge1xyXG4gICAgICAgICAgICByZXF1ZXN0X3R5cGU6IFwicGFyYW1ldGVyXCIsXHJcbiAgICAgICAgICAgIHJ4SWQ6IHRoaXMuY29tbW9uU2VydmljZXMucnhpZCxcclxuICAgICAgICAgICAgYWRkcmVzc1R5cGU6IEFkZHJlc3NTZW5kVG9BZGRUeXBlLFxyXG4gICAgICAgICAgICBhZGRyZXNzVmFsdWU6IHRoaXMuY29tbW9uU2VydmljZXMucGhhcm1hY3lFbWFpbC50cmltKClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuYXBpU2VydmljZS5HZXQoY29uZmlnLlBIWVNJQ0lBTi5SWF9SRV9JU1NVRSArIHRoaXMuY29tbW9uU2VydmljZXMucnhpZCArIFwiJmFkZHJlc3NUeXBlPVwiICsgQWRkcmVzc1NlbmRUb0FkZFR5cGUgKyBcIiZhZGRyZXNzVmFsdWU9XCIgKyB0aGlzLmNvbW1vblNlcnZpY2VzLnBoYXJtYWN5RW1haWwudHJpbSgpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbmJ0bkxvYWRlciA9IGZhbHNlOyB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwicmVzZW5kXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnJlbW92ZSgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25idG5Mb2FkZXIgPSBmYWxzZTsgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJyZXNlbmRcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbmJ0bkxvYWRlciA9IGZhbHNlOyB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25idG5Mb2FkZXIgPSBmYWxzZTsgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicmVzZW5kXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uYnRuTG9hZGVyID0gZmFsc2U7IHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJyZXNlbmRcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicmVzZW5kUHJlc2NyaWJlTWVkXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpbnRQcmVzY3JpYmVNZWQoKSB7XHJcbiAgICB2YXIgcGF5bG9hZCA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuY2hlY2tTdGF0dXNBbmRTY3JpcHR0eXBlKHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnNjcmlwdFR5cGUsIHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cywgMSkpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdEFjdGlvbkJ0bkRyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25idG5Mb2FkZXIgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICBwYXlsb2FkID0ge1xyXG4gICAgICAgICAgcmVxdWVzdF90eXBlOiBcInBhcmFtZXRlclwiLFxyXG4gICAgICAgICAgcnhJZDogdGhpcy5jb21tb25TZXJ2aWNlcy5yeGlkLFxyXG4gICAgICAgICAgdHlwZTogXCIxXCIsXHJcbiAgICAgICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZFxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmFwaVNlcnZpY2UuR2V0KGNvbmZpZy5QSFlTSUNJQU4uUlhfUFJJTlQgKyB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4aWQgKyBcIiZ0eXBlPTEmY2xpZW50SWQ9XCIgKyB0aGlzLmNsaWVudElkKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzcG9uc2UpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJpbnRQcmVzY3JpYmVNZWRcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGJ5dGVBcnJheSA9IG5ldyBVaW50OEFycmF5KGF0b2IocmVzcG9uc2UuZmlsZSkuc3BsaXQoJycpLm1hcChjaGFyID0+IGNoYXIuY2hhckNvZGVBdCgwKSkpO1xyXG4gICAgICAgICAgICAgICAgICB2YXIgYmJiID0gbmV3IEJsb2IoW2J5dGVBcnJheV0sIHsgdHlwZTogXCJhcHBsaWNhdGlvbi9wZGZcIiB9KTtcclxuICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJiYik7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1dpbmRvdyA9IHdpbmRvdy5vcGVuKHVybCwgJ19ibGFuaycpO1xyXG4gICAgICAgICAgICAgICAgICBpZiAobmV3V2luZG93KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV3V2luZG93LmZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmludFdhcm5pbmdQb3AoKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoXCJcIiwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgdHJ1ZSwgcmVzcG9uc2UuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UocmVzcG9uc2UuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcInByaW50UHJlc2NyaWJlTWVkXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlLCAnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlc3BvbnNlLmVycm9yX2NvZGUsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbmJ0bkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uYnRuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJpbnRQcmVzY3JpYmVNZWRcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnJvciA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uYnRuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJpbnRQcmVzY3JpYmVNZWRcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uYnRuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJpbnRQcmVzY3JpYmVNZWRcIiwgcGF5bG9hZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGVja1N0YXR1c0FuZFNjcmlwdHR5cGUoc2NyaXB0dHlwZTogYW55LCBzdGF0dXM6IGFueSwgZmxhZzogYW55KTogQm9vbGVhbiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzdGF0dXMpICYmIHN0YXR1cy50b0xvd2VyQ2FzZSgpID09ICdwcmVzY3JpYmVkJykge1xyXG4gICAgICAgIGlmIChmbGFnID09IDEpIHtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmxhZyA9PSAyKSB7XHJcbiAgICAgICAgICByZXR1cm4gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzY3JpcHR0eXBlKSAmJiBzY3JpcHR0eXBlLnRvTG93ZXJDYXNlKCkgPT0gJ2UnID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmxhZyA9PSAzKSB7XHJcbiAgICAgICAgICByZXR1cm4gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzY3JpcHR0eXBlKSAmJiBzY3JpcHR0eXBlLnRvTG93ZXJDYXNlKCkgPT0gJ2UnICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5ICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLmVtZXJnZW5jeVN1cHBseSA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICB9IGVsc2UgaWYgKGZsYWcgPT0gNCkge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmbGFnID09IDUpIHtcclxuICAgICAgICAgIHJldHVybiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNjcmlwdHR5cGUpICYmIHNjcmlwdHR5cGUudG9Mb3dlckNhc2UoKSA9PSAnbScgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc3RhdHVzKSAmJiBzdGF0dXMudG9Mb3dlckNhc2UoKSA9PSAnZHJhZnQnICYmIGZsYWcgPT0gNCkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmYWxzZVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJjaGVja1N0YXR1c0FuZFNjcmlwdHR5cGVcIik7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHBhZ2VOdW1iZXJPbmVUb05leHQoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl81MC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl81MC5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNTAuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNTAubWVzc2FnZSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSA9IFN0cmluZyh0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUpLnRyaW0oKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kb3NlU2VhcmNoVmFsdWUgPSBTdHJpbmcodGhpcy5jb21tb25TZXJ2aWNlcy5kb3NlU2VhcmNoVmFsdWUpLnRyaW0oKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5mb29kU2VhcmNoVmFsdWUgPSBTdHJpbmcodGhpcy5jb21tb25TZXJ2aWNlcy5mb29kU2VhcmNoVmFsdWUudHJpbSgpKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWUgPSBTdHJpbmcodGhpcy5jb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWUpLnRyaW0oKTtcclxuICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUpICYmIHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmRvc2VTZWFyY2hWYWx1ZSkgJiYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZvb2RTZWFyY2hWYWx1ZSkpICYmIHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZyZXFTZWFyY2hWYWx1ZSkpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl81NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl81NC5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNTQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNTQubWVzc2FnZSk7XHJcbiAgICAgICAgdGhpcy5jbGVhckluc3RydWN0aW9uKCk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwpIHx8IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwpIDw9IDAgfHwgdGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gXCJuYW5cIikge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzU1Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzU1LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl81NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl81NS5tZXNzYWdlKTtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwgPT0gXCJOYU5cIikge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCA9IFwiMFwiO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJvdXRlU2VhcmNoVmFsdWUgPSBTdHJpbmcodGhpcy5jb21tb25TZXJ2aWNlcy5yb3V0ZVNlYXJjaFZhbHVlKS50cmltKCk7XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yb3V0ZVNlYXJjaFZhbHVlKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzc1Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzc1LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl83NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl83NS5tZXNzYWdlKTtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHREYXRlKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzQ3Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzQ3LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl80Ny5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl80Ny5tZXNzYWdlKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnN0YXJ0RGF0ZSkpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl80OC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl80OC5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNDguY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNDgubWVzc2FnZSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5lbmREYXRlKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzQ5Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzQ5LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl80OS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl80OS5tZXNzYWdlKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5nZXRUcmFkZU5hbWVEaXNwbGF5KCk7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cykgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzLnRvTG93ZXJDYXNlKCkgIT0gJ2RyYWZ0JyAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yZW1vdmVFcnJUb2FzdCgpO1xyXG4gICAgICAgIHRoaXMucGFnZSA9IHRoaXMucGFnZSArIDE7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0KSB7XHJcbiAgICAgICAgdmFyIHNjaGVkdWxlTnVtYmVyID0gdGhpcy5jb21tb25TZXJ2aWNlcy5nZXRTY2hlZHVsZU51bWJlcih0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pO1xyXG4gICAgICAgIGxldCByZXN0ZWN0ZWRTdGF0ZXMgPSBbJ05TVycsICdBQ1QnLCAnV0EnLCAnUUxEJywgJ05UJywgJ1RBUyddO1xyXG4gICAgICAgIGxldCBwYXRpZW50U3RhdGVzID0gdGhpcy5nZXRTdGF0ZUNvZGVGcm9tU3RhdGVOYW1lKHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuc3RhdGUpLnRvVXBwZXJDYXNlKCk7XHJcbiAgICAgICAgaWYgKHNjaGVkdWxlTnVtYmVyLnRvTG93ZXJDYXNlKCkgPT0gXCJzOFwiICYmIHJlc3RlY3RlZFN0YXRlcy5pbmRleE9mKHBhdGllbnRTdGF0ZXMpICE9IC0xICYmIHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCkgPiAwKSB7XHJcbiAgICAgICAgICBpZiAoKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsKSB8fCBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsKSA9PSAwKSkge1xyXG4gICAgICAgICAgICB2YXIgbWVzc2FnZSA9IGVycm9yY29uZmlnLmVycm9yXzU2Lm1lc3NhZ2UucmVwbGFjZShcIiQwXCIsIHBhdGllbnRTdGF0ZXMpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihtZXNzYWdlLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzU2LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNTYuY29kZSwgbWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIHN0YXRlU2NoZWR1bGVOdW1iZXIgPSB0aGlzLmdldFN0YXRlU2NoZWR1bGVOdW1iZXIodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKTtcclxuICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzdGF0ZVNjaGVkdWxlTnVtYmVyKSAhPSBudWxsICYmIHN0YXRlU2NoZWR1bGVOdW1iZXIubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgaWYgKHBhdGllbnRTdGF0ZXMudG9Mb3dlckNhc2UoKSA9PSBcInRhc1wiICYmIHN0YXRlU2NoZWR1bGVOdW1iZXJbMF0uaW5kZXhPZihcIlM0RFwiKSAhPSAtMSAmJiBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwpID4gMCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCA9PSBcIlwiIHx8IHRoaXMuY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwgPT0gbnVsbCB8fCBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsKSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjgubWVzc2FnZSwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82OC5jb2RlKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjguY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjgubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHBhdGllbnRTdGF0ZXMudG9Mb3dlckNhc2UoKSA9PSBcIm5zd1wiICYmIHN0YXRlU2NoZWR1bGVOdW1iZXJbMF0uaW5kZXhPZihcIlM0QlwiKSAhPSAtMSAmJiBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwpID4gMCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCA9PSBcIlwiIHx8IHRoaXMuY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwgPT0gbnVsbCB8fCBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsKSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjkubWVzc2FnZSwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82OS5jb2RlKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjkuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjkubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoKHRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3kgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3lWYWx1ZSkpKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjYubWVzc2FnZSwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82Ni5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjYuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjYubWVzc2FnZSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5zaG93QXV0aG9yaXR5Qm94KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMsIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMsIHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHksIHRoaXMuY29tbW9uU2VydmljZXMudW5saXN0ZWRSQSkpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8gPSBcIlwiO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9ucyA9IFwiXCI7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zSWQgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIHZhciByeERpc3BsYXlOYW1lID0gdGhpcy5nZXRUcmFkZU5hbWUoKTtcclxuICAgICAgLy8gaWYgKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCA9PSB0cnVlIHx8IHRoaXMuY29tbW9uU2VydmljZXMubGVtaSA9PSB0cnVlIHx8IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtLnRvTG93ZXJDYXNlKCkgPT0gJ2dhdXplJykge1xyXG4gICAgICAvLyAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmxlbWkgPT0gdHJ1ZSkge1xyXG4gICAgICAvLyAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lID0gdGhpcy5nZXRFeHRlbXBUVFBOYW1lKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbik7XHJcbiAgICAgIC8vICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVvcERpc3BsYXlOYW1lID0gdGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lO1xyXG4gICAgICAvLyAgIH0gZWxzZSB7XHJcbiAgICAgIC8vICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGlzcGxheU5hbWUgPSByeERpc3BsYXlOYW1lO1xyXG4gICAgICAvLyAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lb3BEaXNwbGF5TmFtZSA9IHJ4RGlzcGxheU5hbWU7XHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyB9IGVsc2Uge1xyXG4gICAgICAvLyAgIHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZSA9IHJ4RGlzcGxheU5hbWUudHJpbSgpICsgJyAnICsgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0udHJpbSgpICsgJyAnICsgKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tb2xlY3VsZVN0cmVuZ3RoID09IG51bGwgPyAnJyA6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tb2xlY3VsZVN0cmVuZ3RoLnRyaW0oKSArIHRoaXMucnhTdHJlbmd0aGNhbGN1bGF0aW9uKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikpO1xyXG4gICAgICAvLyAgIHRoaXMuY29tbW9uU2VydmljZXMuZW9wRGlzcGxheU5hbWUgPSByeERpc3BsYXlOYW1lLnRyaW0oKSArICcgJyArICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubW9sZWN1bGVTdHJlbmd0aCA9PSBudWxsID8gJycgOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubW9sZWN1bGVTdHJlbmd0aC50cmltKCkgKyB0aGlzLnJ4U3RyZW5ndGhjYWxjdWxhdGlvbih0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pKTtcclxuICAgICAgLy8gfVxyXG4gICAgICAvLyB2YXIgcHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlID0gdGhpcy5nZXRUcmFkZU5hbWUoKTtcclxuICAgICAgLy8gaWYgKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCA9PSB0cnVlIHx8IHRoaXMuY29tbW9uU2VydmljZXMubGVtaSA9PSB0cnVlIHx8IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtLnRvTG93ZXJDYXNlKCkgPT0gJ2dhdXplJykge1xyXG4gICAgICAvLyAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmxlbWkgPT0gdHJ1ZSkge1xyXG4gICAgICAvLyAgICAgbGV0IGV4dGVtcFRUUE5hbWUgPSB0aGlzLmdldEV4dGVtcFRUUE5hbWUodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKTtcclxuICAgICAgLy8gICAgIGxldCBQSXRlbVRocmVlID0gZXh0ZW1wVFRQTmFtZS5sYXN0SW5kZXhPZignWycpO1xyXG4gICAgICAvLyAgICAgbGV0IFBJdGVtVGhyZWUxID0gZXh0ZW1wVFRQTmFtZS5zbGljZSgwLCBQSXRlbVRocmVlKTtcclxuICAgICAgLy8gICAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlID0gUEl0ZW1UaHJlZTEudHJpbSgpO1xyXG4gICAgICAvLyAgIH0gZWxzZSB7XHJcbiAgICAgIC8vICAgICBsZXQgUEl0ZW1UaHJlZTIgPSBwcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUubGFzdEluZGV4T2YoJ1snKTtcclxuICAgICAgLy8gICAgIGxldCBQSXRlbVRocmVlMyA9IHByZXNjcmliZWRJdGVtUmVzZXJ2ZWRUaHJlZS5zbGljZSgwLCBQSXRlbVRocmVlMik7XHJcbiAgICAgIC8vICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZWRJdGVtUmVzZXJ2ZWRUaHJlZSA9IFBJdGVtVGhyZWUzLnRyaW0oKTtcclxuICAgICAgLy8gICB9XHJcbiAgICAgIC8vIH0gZWxzZSB7XHJcbiAgICAgIC8vICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUgPSBwcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUudHJpbSgpICsgJyAnICsgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0gKyAnICcgKyAodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1vbGVjdWxlU3RyZW5ndGggPT0gbnVsbCA/ICcnIDogdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1vbGVjdWxlU3RyZW5ndGgudHJpbSgpICsgdGhpcy5yeFN0cmVuZ3RoY2FsY3VsYXRpb25OZXcodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSk7XHJcbiAgICAgIC8vIH1cclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzVHlwZS50b0xvd2VyQ2FzZSgpICE9ICdub24gcGJzJyAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLnRvTG93ZXJDYXNlKCkgIT0gJ3ByaXZhdGUnICYmICgoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5V2l0aFVuaXRGbGFnID8gcGFyc2VGbG9hdCh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHMpICsgMC41IDogMSkgPCBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsKSB8fCBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucmVwZWF0cykgPCBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwpKSkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHkgPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKElzQXV0aG9yaXR5Q29tcG9uZW50LCB0aGlzLmNvbnRlbnQpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEF1dGhvcml0eSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8gPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zID0gXCJcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubW9sZWN1bGUodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFjZ3MsIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tb2xlY3VsZVN0cmVuZ3RoKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPT0gZmFsc2UgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5sbWJjID09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluY2x1ZGVicmFuZHBvcG9wZW4oKTtcclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kb3NlRnJlcVZhbGlkYXRpb24oKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZVdhcmluZ1BvcE9wZW4oc2NoZWR1bGVOdW1iZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChzY2hlZHVsZU51bWJlci50b0xvd2VyQ2FzZSgpID09IFwiczhcIiAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmlzUzhXYXJuaW5nTmV4dCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuUzhXYXJpbmdQb3BPcGVuKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yZW1vdmVFcnJUb2FzdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSB0aGlzLnBhZ2UgKyAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5kb3NlRnJlcVZhbGlkYXRpb24oKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVXYXJpbmdQb3BPcGVuKHNjaGVkdWxlTnVtYmVyKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2NoZWR1bGVOdW1iZXIudG9Mb3dlckNhc2UoKSA9PSBcInM4XCIgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5pc1M4V2FybmluZ05leHQgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5TOFdhcmluZ1BvcE9wZW4oKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4QXV0aG9yaXR5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucmVtb3ZlRXJyVG9hc3QoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9IHRoaXMucGFnZSArIDE7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVdpdGhVbml0RmxhZyA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tYXhRdHlVbml0cyA6IDE7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwgPSB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucmVwZWF0cztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHkgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhFbmREYXRlQ2FsY3VsYXRlcigpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5kb3NlRnJlcVZhbGlkYXRpb24oKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVXYXJpbmdQb3BPcGVuKHNjaGVkdWxlTnVtYmVyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlbW92ZUVyclRvYXN0KCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYWdlID0gdGhpcy5wYWdlICsgMTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPT0gZmFsc2UgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5sbWJjID09IHRydWUpIHtcclxuICAgICAgICAgIHRoaXMuaW5jbHVkZWJyYW5kcG9wb3BlbigpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5kb3NlRnJlcVZhbGlkYXRpb24oKSkge1xyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRlV2FyaW5nUG9wT3BlbihzY2hlZHVsZU51bWJlcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHNjaGVkdWxlTnVtYmVyLnRvTG93ZXJDYXNlKCkgPT0gXCJzOFwiICYmIHRoaXMuY29tbW9uU2VydmljZXMuaXNTOFdhcm5pbmdOZXh0ID09IHRydWUpIHtcclxuICAgICAgICAgICAgICB0aGlzLlM4V2FyaW5nUG9wT3BlbigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucmVtb3ZlRXJyVG9hc3QoKTtcclxuICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSB0aGlzLnBhZ2UgKyAxO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5kb3NlRnJlcVZhbGlkYXRpb24oKSkge1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0ZVdhcmluZ1BvcE9wZW4oXCJcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yZW1vdmVFcnJUb2FzdCgpO1xyXG4gICAgICAgICAgdGhpcy5wYWdlID0gdGhpcy5wYWdlICsgMTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicGFnZU51bWJlck9uZVRvTmV4dFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluY2x1ZGVicmFuZHBvcG9wZW4oKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLm1vbGVjdWxlKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hY2dzLCB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubW9sZWN1bGVTdHJlbmd0aCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihCcmFuZEluY2x1ZGVDb21wb25lbnQsIHRoaXMuY29udGVudCkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRCcmFuZEZvcm11bGF0aW9uID1cclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uO1xyXG4gICAgICAgICAgdmFyIG1vbGVjdWxlZGF0YSA9IHtcclxuICAgICAgICAgICAgbW9sZWN1bGVOYW1lVGV4dDogdGhpcy5tb2xlY3VsZU5hbWVUZXh0LFxyXG4gICAgICAgICAgICBtb2xlY3VsZU5hbWVUeXBlOiB0aGlzLm1vbGVjdWxlTmFtZVR5cGUsXHJcbiAgICAgICAgICAgIG1vbGVjdWxlU3RyZW5ndGhUZXh0OiB0aGlzLm1vbGVjdWxlU3RyZW5ndGhUZXh0LFxyXG4gICAgICAgICAgICBzZWxlY3RlZE1lZGljaW5lTGlzdDogdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRpYWxvZ29wZW4oQXZhaWxhYmxlRm9ybXVsYXRpb25zQ29tcG9uZW50LCB0aGlzLmNvbnRlbnQsIG1vbGVjdWxlZGF0YSkuc3Vic2NyaWJlKCh2YWw6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodmFsLnJlc3BvbnNlZmxhZykge1xyXG4gICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRCcmFuZEZvcm11bGF0aW9uICE9IG51bGwgJiZcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRCcmFuZEZvcm11bGF0aW9uICE9ICcnICYmXHJcbiAgICAgICAgICAgICAgICB2YWwuZmxhZ1xyXG4gICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5Db25maXJtQWx0ZXJCcmFuZChcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEJyYW5kRm9ybXVsYXRpb24gIT0gbnVsbCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRCcmFuZEZvcm11bGF0aW9uICE9ICcnXHJcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkQnJhbmRGb3JtdWxhdGlvblxyXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQnJhbmRJbmRleCAhPSBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLnNlbGVjdGVkQnJhbmRJbmRleFxyXG4gICAgICAgICAgICAgICAgICAgIDogMFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5icmFuZE1lZGljcHJvZHVjdElkID0gJyc7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJyYW5kTWVkaWNwYnNDb2RlID0gJyc7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJyYW5kTWVkaWNRdHkgPSAnJztcclxuICAgICAgICAgICAgICAgIHRoaXMuYnJhbmRNZWRpY1JlcCA9ICcnO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmJyYW5kTWVkaWNwcm9kdWN0SWQgPSAnJztcclxuICAgICAgICAgICAgICB0aGlzLmJyYW5kTWVkaWNwYnNDb2RlID0gJyc7XHJcbiAgICAgICAgICAgICAgdGhpcy5icmFuZE1lZGljUXR5ID0gJyc7XHJcbiAgICAgICAgICAgICAgdGhpcy5icmFuZE1lZGljUmVwID0gJyc7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdmFyIHNjaGVkdWxlTnVtYmVyID0gdGhpcy5jb21tb25TZXJ2aWNlcy5nZXRTY2hlZHVsZU51bWJlcih0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pO1xyXG4gICAgICAgICAgaWYgKHRoaXMuZG9zZUZyZXFWYWxpZGF0aW9uKCkpIHtcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0ZVdhcmluZ1BvcE9wZW4oc2NoZWR1bGVOdW1iZXIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChzY2hlZHVsZU51bWJlci50b0xvd2VyQ2FzZSgpID09IFwiczhcIiAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmlzUzhXYXJuaW5nTmV4dCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5TOFdhcmluZ1BvcE9wZW4oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlbW92ZUVyclRvYXN0KCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYWdlID0gdGhpcy5wYWdlICsgMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImluY2x1ZGVicmFuZHBvcG9wZW5cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkb3NlRnJlcVZhbGlkYXRpb24oKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZG9zZVNlYXJjaFZhbHVlKSB8fCB0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWUpIHx8IHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZvb2RTZWFyY2hWYWx1ZSkgfHwgdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSkgfHwgdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucm91dGVTZWFyY2hWYWx1ZSkpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImRvc2VGcmVxVmFsaWRhdGlvblwiKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIFM4V2FyaW5nUG9wT3BlbigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBkYXRhID0gXCJXYXJuaW5nISBUaGlzIGlzIGFuIFM4IGRydWcuIFlvdSBtaWdodCBuZWVkIHRvIGhhbmQgd3JpdGUgeW91ciBzaWduYXR1cmUsIHF1YW50aXR5IGluIHdvcmRzIGFuZCBmaWd1cmVzIGFuZC9vciBvdGhlciBkZXRhaWxzIGFzIHBlciB0aGUgc3RhdGUgcmVndWxhdGlvbnNcIjtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKFJlYWxUaW1lUHJlc2NyaXB0aW9uTW9uaXRvcmluZ0NvbXBvbmVudCwgdGhpcy5jb250ZW50LCBkYXRhKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNTOFdhcm5pbmdOZXh0ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlbW92ZUVyclRvYXN0KCk7XHJcbiAgICAgICAgICB0aGlzLnBhZ2UgPSB0aGlzLnBhZ2UgKyAxO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIlM4V2FyaW5nUG9wT3BlblwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHZhbGlkYXRlV2FyaW5nUG9wT3BlbihzY2hlZHVsZU51bWJlcjogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgZGF0YSA9IFwiRW5zdXJlIGFsbCBuZWNlc3NhcnkgZmllbGRzIGFyZSBmaWxsZWQgdG8gYXZvaWQgcGhhcm1hY3kgcmVqZWN0aW9uIGR1ZSB0byBpbmNvbXBsZXRlIGluZm9ybWF0aW9uIC0gRG9zZSwgRnJlcXVlbmN5LCBSb3V0ZSBldGMuXCI7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihSZWFsVGltZVByZXNjcmlwdGlvbk1vbml0b3JpbmdDb21wb25lbnQsIHRoaXMuY29udGVudCwgZGF0YSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0ICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2NoZWR1bGVOdW1iZXIpICYmIHNjaGVkdWxlTnVtYmVyLnRvTG93ZXJDYXNlKCkgPT0gXCJzOFwiICYmIHRoaXMuY29tbW9uU2VydmljZXMuaXNTOFdhcm5pbmdOZXh0ID09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5TOFdhcmluZ1BvcE9wZW4oKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlbW92ZUVyclRvYXN0KCk7XHJcbiAgICAgICAgICAgIHRoaXMucGFnZSA9IHRoaXMucGFnZSArIDE7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwidmFsaWRhdGVXYXJpbmdQb3BPcGVuXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQ29uZmlybUFsdGVyQnJhbmQobWVkOiBhbnksIGluZGV4OiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPSB0cnVlO1xyXG4gICAgICB0aGlzLmJyYW5kTWVkaWNwcm9kdWN0SWQgPSAnJztcclxuICAgICAgdGhpcy5icmFuZE1lZGljcGJzQ29kZSA9ICcnO1xyXG4gICAgICB0aGlzLmJyYW5kTWVkaWNRdHkgPSAnJztcclxuICAgICAgdGhpcy5icmFuZE1lZGljUmVwID0gJyc7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY2xlYXJNZWRpY2FsUHJlc2NyaXB0aW9uRGF0YU9uY2hhbmdlb2ZNZWRpY2luZShtZWQpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEVuZERhdGVDYWxjdWxhdGVyKCk7XHJcbiAgICAgIHZhciBNZWQgPSBbXTtcclxuICAgICAgTWVkLnB1c2gobWVkKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IE1lZDtcclxuICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgPSBNZWQ7XHJcbiAgICAgIHRoaXMuc2VsZWN0Rm9ybXVsYXRpb24obWVkLCAwKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiQ29uZmlybUFsdGVyQnJhbmRcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtb2xlY3VsZShhY2dzOiBhbnksIG1vbGVjdWxlU3RyZW5ndGg6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoYWNncykpIHtcclxuICAgICAgICBpZiAoYWNncy5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgaWYgKGFjZ3NbMF0uYWNnTmFtZS5pbmRleE9mKCcrJykgIT0gLTEpIHtcclxuICAgICAgICAgICAgdGhpcy5tb2xlY3VsZU5hbWVUZXh0ID0gYWNnc1swXS5hY2dOYW1lO1xyXG4gICAgICAgICAgICB0aGlzLm1vbGVjdWxlTmFtZVR5cGUgPSAnUzInO1xyXG4gICAgICAgICAgICB0aGlzLm1vbGVjdWxlU3RyZW5ndGhUZXh0ID0gbW9sZWN1bGVTdHJlbmd0aDtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9sZWN1bGVOYW1lVGV4dCA9IGFjZ3NbMF0uYWNnTmFtZTtcclxuICAgICAgICAgICAgdGhpcy5tb2xlY3VsZU5hbWVUeXBlID0gJ1MxJztcclxuICAgICAgICAgICAgdGhpcy5tb2xlY3VsZVN0cmVuZ3RoVGV4dCA9IG1vbGVjdWxlU3RyZW5ndGg7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmICgxIDwgYWNncy5sZW5ndGgpIHtcclxuICAgICAgICAgIHZhciBtb2xlY3VsZXMgPSBbXTtcclxuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWNncy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBtb2xlY3VsZXMucHVzaChhY2dzW2ldLmFjZ05hbWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5tb2xlY3VsZU5hbWVUZXh0ID0gbW9sZWN1bGVzLmpvaW4oJywnKTtcclxuICAgICAgICAgIHRoaXMubW9sZWN1bGVOYW1lVHlwZSA9ICdNJztcclxuICAgICAgICAgIHRoaXMubW9sZWN1bGVTdHJlbmd0aFRleHQgPSBtb2xlY3VsZVN0cmVuZ3RoO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm1vbGVjdWxlTmFtZVRleHQgPSAnJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJtb2xlY3VsZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGJhY2soKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnBhZ2UgPSAxO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImJhY2tcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBNZWRpY2luZURyb3Bkb3duTGlzdCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZURyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgLy8gdGhpcy5zaG93RmF2b3VyaXRlTWVkID0gZmFsc2U7XHJcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJNZWRpY2luZURyb3Bkb3duTGlzdFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByZXNjcmliZURyb3Bkb3duKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zZWxlY3RQQlRORHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLmhhbmRsZUNsaWNrT3V0c2lkZVBCVE4pO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInByZXNjcmliZURyb3Bkb3duXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0QWN0aW9uRHJvcGRvd25vcGVuKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zZWxlY3RBY3Rpb25CdG5Ecm9wZG93biA9IHRydWU7XHJcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlQWN0aW9uQnRuKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZWxlY3RBY3Rpb25Ecm9wZG93blwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRvc2VEcm9wZG93bigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0RG9zZURyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5oYW5kbGVDbGlja091dHNpZGVEb3NlKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJkb3NlRHJvcGRvd25cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmcmVxRHJvcGRvd24oKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlbGVjdEZyZXFEcm9wZG93biA9IHRydWU7XHJcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlRnJlcSk7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZnJlcURyb3Bkb3duXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RwVmFsdWVEcm9wZG93bigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0c3RwRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLmhhbmRsZUNsaWNrT3V0c2lkZXN0cCk7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic3RwVmFsdWVEcm9wZG93blwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZvb2REcm9wZG93bigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0Rm9vZERyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5oYW5kbGVDbGlja091dHNpZGVGb29kKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJmb29kRHJvcGRvd25cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbnN0cnVjdGlvbkRyb3Bkb3duKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5oYW5kbGVDbGlja091dHNpZGVJbnN0cnVjdGlvbik7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiaW5zdHJ1Y3Rpb25Ecm9wZG93blwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJvdXRlRHJvcGRvd24oKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlbGVjdFJvdXRlRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlUHVycG9zZSk7XHJcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlUm91dGUpO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInJvdXRlRHJvcGRvd25cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdXJwb3NlRHJvcGRvd24oKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlbGVjdFB1cnBvc2VEcm9wZG93biA9IHRydWU7XHJcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlUHVycG9zZSk7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHVycG9zZURyb3Bkb3duXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlQ2xpY2tPdXRzaWRlID0gKGV2ZW50OiBhbnkpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLndyYXBwZXJSZWYgIT0gbnVsbCAmJiB0aGlzLndyYXBwZXJSZWYgIT0gdW5kZWZpbmVkICYmIHRoaXMud3JhcHBlclJlZi5uYXRpdmVFbGVtZW50ICYmXHJcbiAgICAgICAgIXRoaXMud3JhcHBlclJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldClcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImhhbmRsZUNsaWNrT3V0c2lkZVwiKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBoYW5kbGVDbGlja091dHNpZGVBY3Rpb25CdG4gPSAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuc2VsZWN0QWN0aW9uRHJvcGRvd25SZWYgIT0gbnVsbCAmJiB0aGlzLnNlbGVjdEFjdGlvbkRyb3Bkb3duUmVmICE9IHVuZGVmaW5lZCAmJiB0aGlzLnNlbGVjdEFjdGlvbkRyb3Bkb3duUmVmLm5hdGl2ZUVsZW1lbnQgJiZcclxuICAgICAgICAhdGhpcy5zZWxlY3RBY3Rpb25Ecm9wZG93blJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldClcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RBY3Rpb25CdG5Ecm9wZG93biA9IGZhbHNlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImhhbmRsZUNsaWNrT3V0c2lkZUFjdGlvbkJ0blwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUNsaWNrT3V0c2lkZVBCVE4gPSAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMucHJlc2NyaWJlRHJvcGRvd25SZWYgIT0gbnVsbCAmJiB0aGlzLnByZXNjcmliZURyb3Bkb3duUmVmICE9IHVuZGVmaW5lZCAmJiB0aGlzLnByZXNjcmliZURyb3Bkb3duUmVmLm5hdGl2ZUVsZW1lbnQgJiZcclxuICAgICAgICAhdGhpcy5wcmVzY3JpYmVEcm9wZG93blJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldClcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RQQlRORHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImhhbmRsZUNsaWNrT3V0c2lkZVBCVE5cIik7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgaGFuZGxlQ2xpY2tPdXRzaWRlRG9zZSA9IChldmVudDogYW55KSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5kb3NlUmVmICE9IG51bGwgJiYgdGhpcy5kb3NlUmVmICE9IHVuZGVmaW5lZCAmJiB0aGlzLmRvc2VSZWYubmF0aXZlRWxlbWVudCAmJlxyXG4gICAgICAgICF0aGlzLmRvc2VSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0RG9zZURyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJoYW5kbGVDbGlja091dHNpZGVEb3NlXCIpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGhhbmRsZUNsaWNrT3V0c2lkZUZyZXEgPSAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuZnJlcVJlZiAhPSBudWxsICYmIHRoaXMuZnJlcVJlZiAhPSB1bmRlZmluZWQgJiYgdGhpcy5mcmVxUmVmLm5hdGl2ZUVsZW1lbnQgJiZcclxuICAgICAgICAhdGhpcy5mcmVxUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdEZyZXFEcm9wZG93biA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiaGFuZGxlQ2xpY2tPdXRzaWRlRnJlcVwiKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBoYW5kbGVDbGlja091dHNpZGVzdHAgPSAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuc3RwUmVmICE9IG51bGwgJiYgdGhpcy5zdHBSZWYgIT0gdW5kZWZpbmVkICYmIHRoaXMuc3RwUmVmLm5hdGl2ZUVsZW1lbnQgJiZcclxuICAgICAgICAhdGhpcy5zdHBSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0c3RwRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImhhbmRsZUNsaWNrT3V0c2lkZXN0cFwiKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBoYW5kbGVDbGlja091dHNpZGVGb29kID0gKGV2ZW50OiBhbnkpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLmZvb2RSZWYgIT0gbnVsbCAmJiB0aGlzLmZvb2RSZWYgIT0gdW5kZWZpbmVkICYmIHRoaXMuZm9vZFJlZi5uYXRpdmVFbGVtZW50ICYmXHJcbiAgICAgICAgIXRoaXMuZm9vZFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldClcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RGb29kRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImhhbmRsZUNsaWNrT3V0c2lkZUZvb2RcIik7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgaGFuZGxlQ2xpY2tPdXRzaWRlSW5zdHJ1Y3Rpb24gPSAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuSW5zdHJ1Y3Rpb25SZWYgIT0gbnVsbCAmJiB0aGlzLkluc3RydWN0aW9uUmVmICE9IHVuZGVmaW5lZCAmJiB0aGlzLkluc3RydWN0aW9uUmVmLm5hdGl2ZUVsZW1lbnQgJiYgIXRoaXMuSW5zdHJ1Y3Rpb25SZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0ICYmICF0aGlzLmVkaXRJbnN0cnVjdGlvbkZsYWcpIHtcclxuICAgICAgICAgIHRoaXMuSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbiA9IFwiXCJcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9udGlsdGxlID0gXCJcIjtcclxuICAgICAgICAgIHRoaXMudGVtcEluc3RydWN0aW9uRGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmVkaXRJbnN0cnVjdGlvbkZsYWcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSBmYWxzZTsgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJoYW5kbGVDbGlja091dHNpZGVJbnN0cnVjdGlvblwiKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBoYW5kbGVDbGlja091dHNpZGVSb3V0ZSA9IChldmVudDogYW55KSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5yb3V0ZVJlZiAhPSBudWxsICYmIHRoaXMucm91dGVSZWYgIT0gdW5kZWZpbmVkICYmIHRoaXMucm91dGVSZWYubmF0aXZlRWxlbWVudCAmJlxyXG4gICAgICAgICF0aGlzLnJvdXRlUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdFJvdXRlRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJvdXRlRGF0YUZpbHRlciA9ICcnO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiaGFuZGxlQ2xpY2tPdXRzaWRlUm91dGVcIik7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgaGFuZGxlQ2xpY2tPdXRzaWRlUHVycG9zZSA9IChldmVudDogYW55KSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5wdXJwb3NlUmVmICE9IG51bGwgJiYgdGhpcy5wdXJwb3NlUmVmICE9IHVuZGVmaW5lZCAmJiB0aGlzLnB1cnBvc2VSZWYubmF0aXZlRWxlbWVudCAmJlxyXG4gICAgICAgICF0aGlzLnB1cnBvc2VSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0UHVycG9zZURyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJoYW5kbGVDbGlja091dHNpZGVQdXJwb3NlXCIpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIC8vIEdlbmVyYWwgU2VhcmNoXHJcbiAgc2VhcmNoSGFuZGxlcihlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY2xlYXJNZWRpY2FsUHJlc2NyaXB0aW9uRGF0YSgpO1xyXG4gICAgICB0aGlzLnNlYXJjaE1lZGljaW5lc0xlbmd0aCA9IDA7XHJcbiAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVzUGFnZU51bWJlciA9IDE7XHJcbiAgICAgIGxldCBnZXRNZWRpY2luZXNWYWx1ZSA9IGUudGFyZ2V0LnZhbHVlLnRyaW0oKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5QcmltYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZhdm91cml0ZU1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICB0aGlzLnNob3dGYXZvdXJpdGVNZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLm1lZGlTZWFyY2hWYWx1ZSA9IGUudGFyZ2V0LnZhbHVlO1xyXG4gICAgICB0aGlzLnRlbXBNZWRpU2VhcmNoVmFsdWUgPSBlLnRhcmdldC52YWx1ZTtcclxuICAgICAgaWYgKGUudGFyZ2V0LnZhbHVlLnRyaW0oKS5sZW5ndGggPCAzKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsID0gW107XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uID0gbnVsbDtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGUudGFyZ2V0LnZhbHVlLmxlbmd0aCA+PSAzKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsID0gW107XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uID0gbnVsbDtcclxuICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgICAvL3RoaXMuaXNTdGlsbFNlYXJjaGluZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIGlmICghdGhpcy5pc1N0aWxsU2VhcmNoaW5nKSB7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaE1lZHMoZ2V0TWVkaWNpbmVzVmFsdWUudHJpbSgpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY2xlYXJUaW1lb3V0KHRoaXMudGltZXIpO1xyXG4gICAgICAgIC8vIHRoaXMudGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAvLyAgIHRoaXMuc2VhcmNoTWVkcyhnZXRNZWRpY2luZXNWYWx1ZSk7XHJcbiAgICAgICAgLy8gfSwgdGhpcy53YWl0VGltZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNlYXJjaEhhbmRsZXJcIik7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgc2VhcmNoTWVkcyhnZXRNZWRpY2luZXNWYWx1ZTogYW55KSB7XHJcbiAgICB2YXIgcGF5bG9hZCA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuaXNTdGlsbFNlYXJjaGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgaWYgKHRoaXMubWVkaVNlYXJjaFZhbHVlLnRyaW0oKS5sZW5ndGggPCAzIHx8IGdldE1lZGljaW5lc1ZhbHVlLnRyaW0oKS5sZW5ndGggPCAzKSB7XHJcbiAgICAgICAgdGhpcy5pc1N0aWxsU2VhcmNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHBheWxvYWQgPSB7XHJcbiAgICAgICAgcmVxdWVzdF90eXBlOiBcInBhcmFtZXRlclwiLFxyXG4gICAgICAgIHByb2R1Y3ROYW1lOiBnZXRNZWRpY2luZXNWYWx1ZVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuUHJvZHVjdFNlYXJjaE5hbWUgPSBnZXRNZWRpY2luZXNWYWx1ZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWFyY2hBcGlTdG9wRmxhZyA9IGZhbHNlO1xyXG4gICAgICB2YXIgcGJzVHlwZSA9IHRoaXMucnhPbmx5UEJTICYmIHRoaXMucnhQcml2YXRlID8gXCJcIiA6IHRoaXMucnhPbmx5UEJTID8gXCJQQlMsUlBCU1wiIDogdGhpcy5yeFByaXZhdGUgPyBcIlByaXZhdGVcIiA6IFwiXCI7XHJcbiAgICAgIGNvbnN0IHNlYXJjaE1ldGhvZCA9IHRoaXMuY29tbW9uU2VydmljZXMuc21hcnRTZWFyY2ggPyBjb25maWcuR0VUX01FRFNfQllfU01BUlRfU0VBUkNIICsgJz9wcm9kdWN0TmFtZT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KGdldE1lZGljaW5lc1ZhbHVlKSArICcmcGFnZT0xJm5vT2ZSZWM9MTAmcGJzVHlwZT0nICsgcGJzVHlwZVxyXG4gICAgICAgIDogY29uZmlnLkdFVF9NRURTX0JZX1NFQVJDSCArICc/cHJvZHVjdE5hbWU9JyArIGVuY29kZVVSSUNvbXBvbmVudChnZXRNZWRpY2luZXNWYWx1ZSkgKyAnJnBhZ2U9MSZub09mUmVjPTEwJ1xyXG4gICAgICB0aGlzLmFwaVNlcnZpY2UuR2V0KHNlYXJjaE1ldGhvZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgdGhpcy5pc1N0aWxsU2VhcmNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IGZhbHNlOyB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJzZWFyY2hNZWRzXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmlzU3RpbGxTZWFyY2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRMaXN0ID0gcmVzLnJlc3BvbnNlLmZpbHRlcigoaXRlbTogYW55KSA9PlxyXG4gICAgICAgICAgICAgIHRoaXMuaXNQYnNUeXBlTWF0Y2goaXRlbS5wYnNUeXBlLCBwYnNUeXBlKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0ID0gZmlsdGVyZWRMaXN0O1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lc0xlbmd0aCA9IGZpbHRlcmVkTGlzdC5sZW5ndGg7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1lZGlTZWFyY2hWYWx1ZS50cmltKCkubGVuZ3RoIDwgMykge1xyXG4gICAgICAgICAgICAgIHRoaXMuaXNTdGlsbFNlYXJjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZ2V0TWVkaWNpbmVzVmFsdWUudHJpbSgpICE9IHRoaXMubWVkaVNlYXJjaFZhbHVlLnRyaW0oKSAmJiB0aGlzLm1lZGlTZWFyY2hWYWx1ZS50cmltKCkubGVuZ3RoID4gMikge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VhcmNoZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbXBsZXRlU2VhcmNoKHRoaXMubWVkaVNlYXJjaFZhbHVlLnRyaW0oKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VhcmNoZWRNZWRpY2luZUxpc3QubGVuZ3RoID4gNyB8fCByZXMucmVzcG9uc2UubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChyZXMucmVzcG9uc2UubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLk1JTVNQcmltYXJ5U2VhcmNoKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNTdGlsbFNlYXJjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwic2VhcmNoTWVkc1wiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICB0aGlzLmlzU3RpbGxTZWFyY2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2VhcmNoZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2VhcmNoTWVkc1wiLCBwYXlsb2FkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLmlzU3RpbGxTZWFyY2hpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNlYXJjaE1lZHNcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuaXNTdGlsbFNlYXJjaGluZyA9IGZhbHNlOyB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNlYXJjaE1lZHNcIiwgcGF5bG9hZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb21wbGV0ZVNlYXJjaChnZXRNZWRpY2luZXNWYWx1ZTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmlzU3RpbGxTZWFyY2hpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zZWFyY2hNZWRzKGdldE1lZGljaW5lc1ZhbHVlKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiY29tcGxldGVTZWFyY2hcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL0dldCBQcm9kdWN0IERldGFpbFxyXG4gIGdldFByb2R1Y3RMaXN0QnlOYW1lKHByb2RIaWRkZW5WYWx1ZTogYW55LCBwcm9kdWN0TmFtZTogYW55LCBzZWFyY2hCYXNlOiBhbnkpIHtcclxuICAgIHZhciBwYXlsb2FkID0ge307XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLk1JTVNTZWNvbmRhcnlhcGkpKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5NSU1TU2Vjb25kYXJ5YXBpLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZWFyY2hCeW5hbWVQYWdlTnVtYmVyID0gMTtcclxuICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5TZWNvbmRhcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMubWVkaVNlYXJjaFZhbHVlID0gdGhpcy5odG1sVG9UZXh0Q29udmVydChwcm9kdWN0TmFtZSk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgPSBbXTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5jbGVhck1lZGljYWxQcmVzY3JpcHRpb25EYXRhT25jaGFuZ2VvZk1lZGljaW5lKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbik7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiA9IG51bGw7XHJcbiAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB2YXIgdHlwZSA9IHNlYXJjaEJhc2UudG9Mb3dlckNhc2UoKSA9PSAnYnJhbmRrZXknID8gJ0JLJyA6IHNlYXJjaEJhc2UudG9Mb3dlckNhc2UoKSA9PSAncHJvZHBhY2trZXknID8gJ1BQSycgOiBzZWFyY2hCYXNlLnRvTG93ZXJDYXNlKCkgPT0gJ3ZpcnR1YWxuYW1lJyA/ICdWTicgOiBzZWFyY2hCYXNlLnRvTG93ZXJDYXNlKCkgPT0gJ3Byb2R1Y3RrZXknID8gJ1BLJyA6IHNlYXJjaEJhc2UudG9Mb3dlckNhc2UoKSA9PSAncHJvZHVjdGtleWFjdGl2ZWluZ3JlZGllbnQnID8gJ1BLQScgOiBzZWFyY2hCYXNlLnRvTG93ZXJDYXNlKCkgPT0gJ2Z1bGxwaScgPyAnRlBJJyA6ICdQTic7XHJcbiAgICAgIHBheWxvYWQgPSB7XHJcbiAgICAgICAgcmVxdWVzdF90eXBlOiBcInBhcmFtZXRlclwiLFxyXG4gICAgICAgIHByb2R1Y3ROYW1lOiBwcm9kSGlkZGVuVmFsdWUsXHJcbiAgICAgICAgdHlwZTogdHlwZSxcclxuICAgICAgICBwcmVzY3JpYmVyVHlwZTogXCJNUFwiXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5wcm9kSGlkZGVuTmFtZSA9IHByb2RIaWRkZW5WYWx1ZTtcclxuICAgICAgdGhpcy5Qcm9kdWN0VHlwZSA9IHR5cGU7XHJcbiAgICAgIHRoaXMuYXBpU2VydmljZS5HZXQoY29uZmlnLkdFVF9NRURTX0JZX05BTUUgKyAnP3Byb2R1Y3ROYW1lPScgKyBlbmNvZGVVUklDb21wb25lbnQocHJvZEhpZGRlblZhbHVlKSArICcmdHlwZT0nICsgdHlwZSArICcmcHJlc2NyaWJlclR5cGU9TVAmcGFnZT0nICsgdGhpcy5zZWFyY2hCeW5hbWVQYWdlTnVtYmVyICsgJyZub09mUmVjPTEwJykuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hCeW5hbWVMZW5ndGggPSAwOyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsID0gW107IHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlOyB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJnZXRQcm9kdWN0TGlzdEJ5TmFtZVwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuc2VhcmNoQXBpU3RvcEZsYWcpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgPSBbXTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gPSBudWxsO1xyXG4gICAgICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5TZWNvbmRhcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaEJ5bmFtZUxlbmd0aCA9IHJlcy5yZXNwb25zZS5sZW5ndGg7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsID0gcmVzLnJlc3BvbnNlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gPSBudWxsO1xyXG4gICAgICAgICAgICAvLyBpZiAodGhpcy5pc05vblBic0ZsYWcpIHtcclxuICAgICAgICAgICAgLy8gICB0aGlzLnJ4T25seU5PTlBCU0ZpbHRlcigpO1xyXG4gICAgICAgICAgICAvLyB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyAgIGlmICh0aGlzLnJ4T25seVBCUyA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIC8vICAgICB0aGlzLnJ4T25seVBCU0ZpbHRlcigpO1xyXG4gICAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgICAgLy8gICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QgPSByZXMucmVzcG9uc2U7XHJcbiAgICAgICAgICAgIC8vICAgfVxyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgIHRoaXMub25DaGVja2JveENoYW5nZSgyKTtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdC5sZW5ndGggPD0gMykge1xyXG4gICAgICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzLnJlc3BvbnNlKSAmJiByZXMucmVzcG9uc2UubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLk1JTVNTZWNvbmRhcnlTZWFyY2goKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hCeW5hbWVMZW5ndGggPSAwO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsID0gW107XHJcbiAgICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJnZXRQcm9kdWN0TGlzdEJ5TmFtZVwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaEJ5bmFtZUxlbmd0aCA9IDA7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRQcm9kdWN0TGlzdEJ5TmFtZVwiLCBwYXlsb2FkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLnNlYXJjaEJ5bmFtZUxlbmd0aCA9IDA7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsID0gW107XHJcbiAgICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRQcm9kdWN0TGlzdEJ5TmFtZVwiLCBwYXlsb2FkKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5zZWFyY2hCeW5hbWVMZW5ndGggPSAwO1xyXG4gICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldFByb2R1Y3RMaXN0QnlOYW1lXCIsIHBheWxvYWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DaGVja2JveENoYW5nZSh2YWx1ZTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy5yeE9ubHlQQlMgJiYgdGhpcy5yeFByaXZhdGUpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwuZmlsdGVyKCh4OiBhbnkpID0+ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoeC5wYnNUeXBlKSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5yeE9ubHlQQlMpIHtcclxuICAgICAgICB0aGlzLnJ4T25seVBCUyA9IHRydWU7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwpKVxyXG4gICAgICAgICAgdGhpcy5yeE9ubHlQQlNGaWx0ZXIoKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLnJ4UHJpdmF0ZSkge1xyXG4gICAgICAgIHRoaXMucnhPbmx5UEJTID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwpKVxyXG4gICAgICAgICAgdGhpcy5yeE9ubHlOT05QQlNGaWx0ZXIoKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLnJ4T25seVBCUyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucnhQcml2YXRlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsLmZpbHRlcigoeDogYW55KSA9PiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHgucGJzVHlwZSkpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgaWYgKHZhbHVlID09PSAxKSB7XHJcbiAgICAgICAgaWYgKHRoaXMudGVtcE1lZGlTZWFyY2hWYWx1ZS5sZW5ndGggPj0gMykge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5jbGVhck1lZGljYWxQcmVzY3JpcHRpb25EYXRhKCk7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lc0xlbmd0aCA9IDA7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lc1BhZ2VOdW1iZXIgPSAxO1xyXG4gICAgICAgICAgbGV0IGdldE1lZGljaW5lc1ZhbHVlID0gdGhpcy50ZW1wTWVkaVNlYXJjaFZhbHVlLnRyaW0oKTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZURyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuUHJpbWFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZmF2b3VyaXRlTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICB0aGlzLnNob3dGYXZvdXJpdGVNZWQgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHRoaXMubWVkaVNlYXJjaFZhbHVlID0gdGhpcy50ZW1wTWVkaVNlYXJjaFZhbHVlO1xyXG4gICAgICAgICAgdGhpcy50ZW1wTWVkaVNlYXJjaFZhbHVlID0gdGhpcy50ZW1wTWVkaVNlYXJjaFZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgPSBbXTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgICAgIC8vdGhpcy5pc1N0aWxsU2VhcmNoaW5nID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIGlmICghdGhpcy5pc1N0aWxsU2VhcmNoaW5nKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkcyhnZXRNZWRpY2luZXNWYWx1ZS50cmltKCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2VhcmNoZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIm9uQ2hlY2tib3hDaGFuZ2VcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByeE9ubHlQQlNGaWx0ZXIoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCkgJiYgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QgPSB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbC5maWx0ZXIoKHg6IGFueSkgPT4gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh4LnBic1R5cGUpICYmIHgucGJzVHlwZSAhPSAnbm9uIFBCUycpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicnhPbmx5UEJTRmlsdGVyXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcnhPbmx5Tk9OUEJTRmlsdGVyKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsICE9ICcnICYmIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsICE9IG51bGwgJiYgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QgPSB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbC5maWx0ZXIoKHg6IGFueSkgPT4gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh4LnBic1R5cGUpICYmIHgucGJzVHlwZS50b0xvd2VyQ2FzZSgpID09ICdub24gcGJzJyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJyeE9ubHlOT05QQlNGaWx0ZXJcIik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldENsYXNzRm9yTWVkKG1lZDogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgaXNTZWxlY3RlZEZvcm11bGF0aW9uO1xyXG4gICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QpIHtcclxuICAgICAgICBpc1NlbGVjdGVkRm9ybXVsYXRpb24gPSB0aGlzLklzU2VsZWN0Rm9ybXVsYXRpb24obWVkKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBpc1NlbGVjdGVkRm9ybXVsYXRpb24gPSB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gIT0gbnVsbCAmJlxyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3RJZCAhPSBudWxsICYmXHJcbiAgICAgICAgICBtZWQucHJvZHVjdElkID09IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0SWQgJiZcclxuICAgICAgICAgIG1lZC5wYnNDb2RlID09IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNDb2RlICYmXHJcbiAgICAgICAgICBtZWQucHJvZHVjdE5hbWUgPT0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lICYmXHJcbiAgICAgICAgICBtZWQucmVwZWF0cyA9PSB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucmVwZWF0cyAmJlxyXG4gICAgICAgICAgbWVkLm1heFF0eVVuaXRzID09IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tYXhRdHlVbml0cztcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIGlzU2VsZWN0ZWRGb3JtdWxhdGlvblxyXG4gICAgICAgID8gJ21kbC1ncmlkIG5ld19yeF9wb3B1cF9ib3ggUlhfaGlnaGxpZ2h0J1xyXG4gICAgICAgIDogJ21kbC1ncmlkIG5ld19yeF9wb3B1cF9ib3gnO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRDbGFzc0Zvck1lZFwiKTtcclxuICAgICAgcmV0dXJuIFwibWRsLWdyaWQgbmV3X3J4X3BvcHVwX2JveFwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Q2xhc3NGb3JGYXZvdXJpdGVNZWQobWVkOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgLy8gdmFyIGlzU2VsZWN0ZWRGb3JtdWxhdGlvbjtcclxuICAgICAgICAvLyBpc1NlbGVjdGVkRm9ybXVsYXRpb24gPSB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gIT0gbnVsbCAmJlxyXG4gICAgICAgIC8vICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3RJZCAhPSBudWxsICYmXHJcbiAgICAgICAgLy8gICBtZWQucHJvZHVjdElkID09IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0SWQgJiZcclxuICAgICAgICAvLyAgIChtZWQucGJzQ29kZSE9bnVsbD9tZWQucGJzQ29kZTpcIlwiKSA9PSAodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic0NvZGUhPW51bGw/dGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic0NvZGU6XCJcIikgJiZcclxuICAgICAgICAvLyAgIG1lZC5wcm9kdWN0TmFtZSA9PSB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUgJiZcclxuICAgICAgICAvLyAgIG1lZC5yZXBlYXRzID09IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5yZXBlYXRzICYmXHJcbiAgICAgICAgLy8gICBtZWQ/LmVuY3J5cHRlZElkID09IHRoaXMuY29tbW9uU2VydmljZXMuZmF2b3VyaXRlRW5jcnlwdGVkSWQgJiZcclxuICAgICAgICAvLyAgIG1lZC5xdWFudGl0eSA9PSAodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5wYnNUeXBlIT11bmRlZmluZWQgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5wYnNUeXBlIT1udWxsICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNUeXBlLnRvTG93ZXJDYXNlKCkgPT0gXCJub24gcGJzXCJcclxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5udW1iZXJPZlBhY2sgKyBcInhcIiArIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi51bml0UGVyUGFjaylcclxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1heFF0eVVuaXRzKS50b1N0cmluZygpO1xyXG5cclxuICAgICAgcmV0dXJuIG1lZD8uZW5jcnlwdGVkSWQgPT0gdGhpcy5jb21tb25TZXJ2aWNlcy5mYXZvdXJpdGVFbmNyeXB0ZWRJZFxyXG4gICAgICAgID8gJ21kbC1ncmlkIG5ld19yeF9wb3B1cF9ib3ggUlhfaGlnaGxpZ2h0J1xyXG4gICAgICAgIDogJ21kbC1ncmlkIG5ld19yeF9wb3B1cF9ib3gnO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRDbGFzc0Zvck1lZFwiKTtcclxuICAgICAgcmV0dXJuIFwibWRsLWdyaWQgbmV3X3J4X3BvcHVwX2JveFwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgSXNTZWxlY3RGb3JtdWxhdGlvbihtZWQ6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG1lZC5nZW5lcmljTmFtZSkgPyBtZWQuZ2VuZXJpY05hbWUgOiBcIlwiKSA9PVxyXG4gICAgICAgICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZ2VuZXJpY05hbWUpID9cclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5nZW5lcmljTmFtZSA6IFwiXCIpICYmXHJcbiAgICAgICAgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkobWVkLnByb2R1Y3RJZCkgPyBtZWQucHJvZHVjdElkIDogXCJcIikgPT1cclxuICAgICAgICAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LnByb2R1Y3RJZCkgP1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3RJZCA6IFwiXCIpICYmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG1lZC5yZXBlYXRzKSA/XHJcbiAgICAgICAgICAgIG1lZC5yZXBlYXRzIDogXCJcIikgPT0gKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5yZXBlYXRzKSA/XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnJlcGVhdHMgOiBcIlwiKSAmJiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShtZWQubWF4UXR5VW5pdHMpID9cclxuICAgICAgICAgICAgICAgIG1lZC5tYXhRdHlVbml0cyA6IFwiXCIpID09ICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ubWF4UXR5VW5pdHMpXHJcbiAgICAgICAgICAgICAgICAgID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1heFF0eVVuaXRzIDogXCJcIikpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiSXNTZWxlY3RGb3JtdWxhdGlvblwiKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Y3VycmVudGlkKG1lZDogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gdGhpcy5tZWRpU2VhcmNoVmFsdWUgIT0gbnVsbCAmJiBtZWQucHJvZERpc3BsYXlWYWx1ZSA9PSB0aGlzLm1lZGlTZWFyY2hWYWx1ZSA/ICdoZWlnaGxpZ2h0JyA6ICcnO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRjdXJyZW50aWRcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0UmVzdHJpY3Rpb25zKHJlc3RyaWN0aW9uczogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgcmVzdHJpY3Rpb25MaXN0ID0gW107XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzdHJpY3Rpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdmFyIGluZCA9IHJlc3RyaWN0aW9uTGlzdC5pbmRleE9mKHJlc3RyaWN0aW9uc1tpXVsncmVzdHJpY3Rpb25UeXBlJ10pO1xyXG4gICAgICAgIGlmIChpbmQgPT0gLTEpIHtcclxuICAgICAgICAgIHJlc3RyaWN0aW9uTGlzdC5wdXNoKHJlc3RyaWN0aW9uc1tpXVsncmVzdHJpY3Rpb25UeXBlJ10pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gcmVzdHJpY3Rpb25MaXN0LnRvU3RyaW5nKCk7XHJcbiAgICAgIC8vICAgIGxldCByZXN0cmljdGlvbnMgPSBbXTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0UmVzdHJpY3Rpb25zXCIpO1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0QWxsTWltc1ZhbHVlKCkge1xyXG4gICAgdmFyIHBheWxvYWQgPSB7fTtcclxuICAgIHRyeSB7XHJcbiAgICAgIHBheWxvYWQgPSB7XHJcbiAgICAgICAgcmVxdWVzdF90eXBlOiBcInBhcmFtZXRlclwiLFxyXG4gICAgICAgIHVzZXJJZDogdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLnVzZXJJZCxcclxuICAgICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuYXBpU2VydmljZS5HZXQoY29uZmlnLlBIWVNJQ0lBTi5HRVRfQUxMTUlNU1ZBTFVFICsgdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLnVzZXJJZCArIFwiJmNsaWVudElkPVwiICsgdGhpcy5jbGllbnRJZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcImdldEFsbE1pbXNWYWx1ZVwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5kb3NlRGF0YSA9IHJlcy5kb3NlICE9IG51bGwgPyByZXMuZG9zZSA6IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmZyZXF1ZW5jeURhdGEgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcy5mcmVxdWVuY3kpID8gcmVzLmZyZXF1ZW5jeSA6IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmZvb2REYXRhID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMuZm9vZCkgPyByZXMuZm9vZCA6IFtdO1xyXG4gICAgICAgICAgICB0aGlzLnB1cnBvc2VEYXRhID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMucHVycG9zZSkgIT0gbnVsbCA/IHJlcy5wdXJwb3NlIDogW107XHJcbiAgICAgICAgICAgIHRoaXMucm91dGVEYXRhID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMucm91dGUpICE9IG51bGwgPyByZXMucm91dGUgOiBbXTtcclxuICAgICAgICAgICAgdGhpcy5jZWFzZURhdGEgPSByZXMuY2Vhc2UgIT0gbnVsbCA/IHJlcy5jZWFzZSA6IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmNlYXNlRGF0YSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzLmNlYXNlKSAhPSBudWxsID8gcmVzLmNlYXNlIDogW107XHJcbiAgICAgICAgICAgIHRoaXMuc2VuZHRvcGhhcm1hY3lEYXRhID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMuc2VuZFRvUGFybWFjeU1hc3RlcikgIT0gbnVsbCA/IHJlcy5zZW5kVG9QYXJtYWN5TWFzdGVyIDogW107XHJcbiAgICAgICAgICAgIHRoaXMudGVtcEF1dGhvcml0eUZvcm1ObyA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzLmF1dGhvcml0eUZvcm0pICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzLmF1dGhvcml0eUZvcm0uYXV0aG9yaXR5Rm9ybU5vKSA/IHJlcy5hdXRob3JpdHlGb3JtLmF1dGhvcml0eUZvcm1ObyA6XCJcIjtcclxuICAgICAgICAgICAgbGV0IHJlZlZhbEF1dGggPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaXB0aW9uID8gdGhpcy5nZXRBZGRBdXRoVmFsdWUoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMuYXV0aG9yaXR5Rm9ybSkgPyAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcy5hdXRob3JpdHlGb3JtLmF1dGhvcml0eUZvcm1ObykgPyByZXMuYXV0aG9yaXR5Rm9ybS5hdXRob3JpdHlGb3JtTm8gOiBbXSA6IFtdKSA6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHM/LnBic0R2YUF1dGhvcml0eU51bWJlcikgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMucGJzRHZhQXV0aG9yaXR5TnVtYmVyICE9IDAgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5wYnNEdmFBdXRob3JpdHlOdW1iZXIgOiBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmF1dGhvcml0eUZvcm1ObyA9IHJlZlZhbEF1dGg7XHJcbiAgICAgICAgICAgIHRoaXMuaXNOb25QYnNGbGFnID0gdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcy5pc05vblBic0ZsYWcpIHx8IHJlcy5pc05vblBic0ZsYWcgPT0gMCA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5pc1ByZXNjcmliZUFzUHJpdmF0ZU9ubHkgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcy5pc1ByZXNjcmliZUFzUHJpdmF0ZU9ubHkpID8gcmVzLmlzUHJlc2NyaWJlQXNQcml2YXRlT25seSA6IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNtYXJ0U2VhcmNoID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMuaXNFbmFibGVTbWFydFNlYXJjaCkgPyByZXMuaXNFbmFibGVTbWFydFNlYXJjaCA6IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0QWxsTWltc1ZhbHVlXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0QWxsTWltc1ZhbHVlXCIsIHBheWxvYWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0QWxsTWltc1ZhbHVlXCIsIHBheWxvYWQpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0QWxsTWltc1ZhbHVlXCIsIHBheWxvYWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcm91dGVGaWx0ZXIoZTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnJvdXRlRGF0YUZpbHRlciA9IGUudGFyZ2V0LnZhbHVlO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJyb3V0ZUZpbHRlclwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZpbHRlclJvdXRlSXRlbXMoYXJyOiBhbnksIHF1ZXJ5OiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHJldHVybiBhcnIuZmlsdGVyKChlOiBhbnkpID0+XHJcbiAgICAgICAgZS5yb3V0ZU5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxdWVyeS50b0xvd2VyQ2FzZSgpKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJmaWx0ZXJSb3V0ZUl0ZW1zXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9HZXQgaW5zdHJ1Y3Rpb24gdmFsdWVcclxuICBnZXRJbnN0cnVjdGlvblZhbHVlcygpIHtcclxuICAgIHZhciBwYXlsb2FkID0ge307XHJcbiAgICB0cnkge1xyXG4gICAgICBwYXlsb2FkID0ge1xyXG4gICAgICAgIHJlcXVlc3RfdHlwZTogXCJwYXJhbWV0ZXJcIixcclxuICAgICAgICB1c2VySWQ6IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy51c2VySWRcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmFwaVNlcnZpY2UuR2V0KGNvbmZpZy5QSFlTSUNJQU4uR0VUX0lOU1RSVUNUSU9OX1ZBTFVFICsgXCI/dXNlcklkPVwiICsgdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLnVzZXJJZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcImdldEluc3RydWN0aW9uVmFsdWVzXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICB2YXIgaW5zdHJ1Y3Rpb24gPSByZXMucmVzcG9uc2U7XHJcbiAgICAgICAgICAgIHRoaXMuaW5zdHJ1Y3Rpb25EYXRhID0gaW5zdHJ1Y3Rpb247XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcImdldEluc3RydWN0aW9uVmFsdWVzXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0SW5zdHJ1Y3Rpb25WYWx1ZXNcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRJbnN0cnVjdGlvblZhbHVlc1wiLCBwYXlsb2FkKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRJbnN0cnVjdGlvblZhbHVlc1wiLCBwYXlsb2FkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vRWRpdCBJbnN0cnVjdGlvbiB2YWx1ZVxyXG4gIGVkaXRJbnN0cnVjdGlvbihpZDogbnVtYmVyLCBkYXRhOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93biA9IHRydWU7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSA9IGRhdGEudGV4dDtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvbnRpbHRsZSA9IGRhdGEudGV4dDtcclxuICAgICAgdGhpcy50ZW1wSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbiA9IGRhdGEuZGVzY3JpcHRpb247XHJcbiAgICAgIHRoaXMuSW5zdHJ1Y3Rpb25JZCA9IGRhdGEuaWQ7XHJcbiAgICAgIHRoaXMuSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbiA9IGRhdGEuZGVzY3JpcHRpb247XHJcbiAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93bkxpc3QgPSBmYWxzZTtcclxuICAgICAgdGhpcy5lZGl0SW5zdHJ1Y3Rpb25GbGFnID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJlZGl0SW5zdHJ1Y3Rpb25cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBsaXN0IHNlbGVjdCBpbiBJbnN0cnVjdGlvblxyXG4gIENoYW5nZUluc3RydWN0aW9uKGRhdGE6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoZGF0YT8udGV4dCkgPyBkYXRhLnRleHQgOiAnJztcclxuICAgICAgdGhpcy5JbnN0cnVjdGlvbkRlc2NyaXB0aW9uID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShkYXRhPy5kZXNjcmlwdGlvbikgPyBkYXRhLmRlc2NyaXB0aW9uIDogXCJcIjtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pbnN0VmFsID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShkYXRhPy52YWx1ZSkgPyBkYXRhLnZhbHVlIDogXCJcIjtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5jb21wbGV4SWQgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGRhdGE/LnZhbHVlKSA/IGRhdGEuaWQgOiBcIlwiO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RW5kRGF0ZUNhbGN1bGF0ZXIoKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJDaGFuZ2VJbnN0cnVjdGlvblwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluc3RydWN0aW9uT25DaGFuZ2UoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLkluc3RydWN0aW9uRGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImluc3RydWN0aW9uT25DaGFuZ2VcIik7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgLy8gY2xlYXIgSW5zdHJ1Y3Rpb24gaW4gSW5zdHJ1Y3Rpb25cclxuICBjbGVhckluc3RydWN0aW9uKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93bkxpc3QgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUgPSAnJztcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvbnRpbHRsZSA9IFwiXCI7XHJcbiAgICAgIHRoaXMudGVtcEluc3RydWN0aW9uRGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICB0aGlzLkluc3RydWN0aW9uRGVzY3JpcHRpb24gPSAnJztcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJjbGVhckluc3RydWN0aW9uXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gc2F2ZSBpbnN0cnVjdGlvbiB2YWx1ZVxyXG4gIHNhdmVJbnN0cnVjdGlvbigpIHtcclxuICAgIHZhciBwYXlsb2FkID0ge307XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KFN0cmluZyh0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9udGlsdGxlKS50cmltKCkpKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNTIubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNTIuY29kZSk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzUyLmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzUyLm1lc3NhZ2UpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KFN0cmluZyh0aGlzLnRlbXBJbnN0cnVjdGlvbkRlc2NyaXB0aW9uKS50cmltKCkpKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNTEubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNTEuY29kZSk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzUxLmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzUxLm1lc3NhZ2UpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB2YXIgYm9keSA9IHtcclxuICAgICAgICB0ZXh0OiB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9udGlsdGxlLnRyaW0oKSxcclxuICAgICAgICB2YWx1ZTogJzEnLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLnRlbXBJbnN0cnVjdGlvbkRlc2NyaXB0aW9uLnRyaW0oKSxcclxuICAgICAgICBzdGF0dXM6ICcwJyxcclxuICAgICAgICB1c2VySWQ6IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy51c2VySWQsXHJcbiAgICAgIH07XHJcbiAgICAgIHBheWxvYWQgPSB7XHJcbiAgICAgICAgYm9keTogYm9keSxcclxuICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgIHJlcXVlc3RfdHlwZTogXCJwYXJhbWV0ZXJcIixcclxuICAgICAgICAgIHVzZXJJZDogdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLnVzZXJJZCxcclxuICAgICAgICAgIGlkOiB0aGlzLkluc3RydWN0aW9uSWRcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuSW5zdHJ1Y3Rpb25JZCAhPSBudWxsICYmIHRoaXMuSW5zdHJ1Y3Rpb25JZCAhPSAnJykge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY29tcGxleElkID0gcGFyc2VJbnQodGhpcy5JbnN0cnVjdGlvbklkKTtcclxuICAgICAgICB0aGlzLmFwaVNlcnZpY2UuUHV0TmV3KGJvZHksIGNvbmZpZy5QSFlTSUNJQU4uVVBEQVRFX0lOU1RSVUNUSU9OX1ZBTFVFICsgdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLnVzZXJJZCArICcmaWQ9JyArIHRoaXMuSW5zdHJ1Y3Rpb25JZCkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93bkxpc3QgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSB0cnVlOyB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcInNhdmVJbnN0cnVjdGlvblwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5JbnN0cnVjdGlvbkRlc2NyaXB0aW9uID0gdGhpcy50ZW1wSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbjtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUgPSB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9udGlsdGxlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93bkxpc3QgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93biA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRJbnN0cnVjdGlvblZhbHVlcygpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcInNhdmVJbnN0cnVjdGlvblwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93bkxpc3QgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93bkxpc3QgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNhdmVJbnN0cnVjdGlvblwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzYXZlSW5zdHJ1Y3Rpb25cIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBwYXlsb2FkID0gYm9keTtcclxuICAgICAgICB0aGlzLmFwaVNlcnZpY2UuUG9zdChib2R5LCBjb25maWcuUEhZU0lDSUFOLkFERF9JTlNUUlVDVElPTl9WQUxVRSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93bkxpc3QgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSB0cnVlOyB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcInNhdmVJbnN0cnVjdGlvblwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5jb21wbGV4SWQgPSAwO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSA9ICcnO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb250aWx0bGUgPSBcIlwiO1xyXG4gICAgICAgICAgICAgIHRoaXMudGVtcEluc3RydWN0aW9uRGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93bkxpc3QgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93biA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRJbnN0cnVjdGlvblZhbHVlcygpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcInNhdmVJbnN0cnVjdGlvblwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93bkxpc3QgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93bkxpc3QgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNhdmVJbnN0cnVjdGlvblwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzYXZlSW5zdHJ1Y3Rpb25cIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzYXZlSW5zdHJ1Y3Rpb25cIiwgcGF5bG9hZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBEZWxldGUgaW5zdHJ1Y3Rpb25cclxuICBkZWxldGVJbnN0cnVjdGlvbihpZDogTnVtYmVyKSB7XHJcbiAgICB2YXIgcGF5bG9hZCA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgcGF5bG9hZCA9IHtcclxuICAgICAgICByZXF1ZXN0X3R5cGU6IFwicGFyYW1ldGVyXCIsXHJcbiAgICAgICAgdXNlcklkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMudXNlcklkLFxyXG4gICAgICAgIGlkOiBpZFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuYXBpU2VydmljZS5QdXROZXcoJycsIGNvbmZpZy5QSFlTSUNJQU4uREVMRVRFX0lOU1RSVUNUSU9OX1ZBTFVFICsgdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLnVzZXJJZCArICcmaWQ9JyArIGlkKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcImRlbGV0ZUluc3RydWN0aW9uXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlID0gJyc7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb250aWx0bGUgPSBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLnRlbXBJbnN0cnVjdGlvbkRlc2NyaXB0aW9uID0gXCJcIjtcclxuICAgICAgICAgICAgdGhpcy5nZXRJbnN0cnVjdGlvblZhbHVlcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJkZWxldGVJbnN0cnVjdGlvblwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImRlbGV0ZUluc3RydWN0aW9uXCIsIHBheWxvYWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZGVsZXRlSW5zdHJ1Y3Rpb25cIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZGVsZXRlSW5zdHJ1Y3Rpb25cIiwgcGF5bG9hZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBhZGQgbmV3IEluc3RydWN0aW9uXHJcbiAgYWRkTmV3SW5zdHJ1Y3Rpb24oKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUgPSAnJztcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvbnRpbHRsZSA9IFwiXCI7XHJcbiAgICAgIHRoaXMudGVtcEluc3RydWN0aW9uRGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICB0aGlzLkluc3RydWN0aW9uRGVzY3JpcHRpb24gPSAnJztcclxuICAgICAgdGhpcy5JbnN0cnVjdGlvbklkID0gJyc7XHJcbiAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93biA9IHRydWU7XHJcbiAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93bkxpc3QgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJhZGROZXdJbnN0cnVjdGlvblwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIHNlbGVjdCByb3V0ZSB2YWx1ZVxyXG4gIHNlbGVjdFJvdXRlc2VhcmNWYWx1ZShyb3V0ZTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlbGVjdFJvdXRlRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yb3V0ZVNlYXJjaFZhbHVlID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyb3V0ZT8ucm91dGVOYW1lKSA/IHJvdXRlLnJvdXRlTmFtZSA6ICcnO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNlbGVjdFJvdXRlc2VhcmNWYWx1ZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIHNlbGVjdCBEb3NlIHZhbHVlXHJcbiAgc2VsZWN0RG9zZVZhbHVlKGRvc2U6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zZWxlY3REb3NlRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kb3NlU2VhcmNoVmFsdWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGRvc2U/LnRleHQpID8gZG9zZS50ZXh0IDogXCJcIjtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kb3NlVmFsdWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGRvc2U/LnZhbHVlKSA/IGRvc2UudmFsdWUgOiBcIlwiO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RW5kRGF0ZUNhbGN1bGF0ZXIoKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZWxlY3REb3NlVmFsdWVcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBzZWxlY3QgRnJlcXVlbmN5IHZhbHVlXHJcbiAgc2VsZWN0RnJlcXVlbmN5VmFsdWUoZnJlcXVlbmN5OiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0RnJlcURyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZnJlcVNlYXJjaFZhbHVlID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShmcmVxdWVuY3k/LnRleHQpID8gZnJlcXVlbmN5LnRleHQgOiBcIlwiO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZyZXFWYWx1ZSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoZnJlcXVlbmN5Py52YWx1ZSkgPyBmcmVxdWVuY3kudmFsdWUgOiBcIlwiO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RW5kRGF0ZUNhbGN1bGF0ZXIoKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZWxlY3RGcmVxdWVuY3lWYWx1ZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIHNlbGVjdCBGb29kIHZhbHVlXHJcbiAgc2VsZWN0Rm9vZFZhbHVlKGZvb2Q6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zZWxlY3RGb29kRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5mb29kU2VhcmNoVmFsdWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGZvb2Q/LnRleHQpID8gZm9vZC50ZXh0IDogXCJcIjtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZWxlY3RGb29kVmFsdWVcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZWxlY3RTdHBWYWx1ZShzdHA6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zZWxlY3RzdHBEcm9wZG93biA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5VmFsdWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHN0cD8ubmFtZSkgPyBzdHAubmFtZSA6ICcnO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNlbGVjdFN0cFZhbHVlXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9zZWxlY3QgUHVycG9zZSB2YWx1ZVxyXG4gIHNlbGVjdFB1cnBvc2VWYWx1ZShwdXJwb3NlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0UHVycG9zZURyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wdXJwb3NlU2VhcmNoVmFsdWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHB1cnBvc2U/Lmxvb2t1cFRleHQpID8gcHVycG9zZS5sb29rdXBUZXh0IDogJyc7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY29tcGxleElkID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShwdXJwb3NlPy5pZCkgPyBwdXJwb3NlLmlkIDogXCJcIjtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZWxlY3RQdXJwb3NlVmFsdWVcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBRdWFudGl0eSBjaGFuZ2VcclxuICBxdWFudGl0eUNoYW5nZSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhFbmREYXRlQ2FsY3VsYXRlcigpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGNvbnZlcnRxdWFudGl0eXZhbCA9IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwsIDEwKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbCA9IGNvbnZlcnRxdWFudGl0eXZhbC50b1N0cmluZygpO1xyXG4gICAgICAvL3RoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwgPSB0aGlzLnJvdW5kRGF0YShwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsKSkudG9TdHJpbmcoKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEF1dGhvcml0eSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInF1YW50aXR5Q2hhbmdlXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tNb2JpbGUoZXZ0OiBhbnkpOiBhbnkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIGNoYXJDb2RlID0gKGV2dC53aGljaCkgPyBldnQud2hpY2ggOiBldnQua2V5Q29kZTtcclxuICAgICAgaWYgKGNoYXJDb2RlID4gMzEgJiYgKGNoYXJDb2RlIDwgNDcgfHwgY2hhckNvZGUgPiA1NykpXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiY2hlY2tNb2JpbGVcIik7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRheXNjaGFuZ2UoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCAhPSBudWxsKSB7XHJcbiAgICAgICAgY29uc3QgY29udmVydGRheXNjaGFuZ2UgPSBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsLCAxMCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCA9IGNvbnZlcnRkYXlzY2hhbmdlLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImRheXNjaGFuZ2VcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXBlYXRzQ2hhbmdlKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEF1dGhvcml0eSA9IGZhbHNlO1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCkpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RW5kRGF0ZUNhbGN1bGF0ZXIoKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBjb252ZXJ0cmVwZWF0c3ZhbCA9IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCwgMTApO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwgPSBjb252ZXJ0cmVwZWF0c3ZhbC50b1N0cmluZygpO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInJlcGVhdHNDaGFuZ2VcIik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vdW5saXN0ZWQgY2hlY2sgYm94XHJcbiAgdW5saXN0ZWRSQSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy51bmxpc3RlZFJBKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy51bmxpc3RlZFJBID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnByZXNjcmliZUFTX1JQQlMgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1JQQlMnO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkEgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnByZXNjcmliZUFTX1JQQlMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMgPSAnUHJpdmF0ZSc7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInVubGlzdGVkUkFcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdQcml2YXRlJztcclxuICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMudW5saXN0ZWRSQSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudW5saXN0ZWRSQSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5DVEdDb1BheW1lbnQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJwcml2YXRlXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgUEJTKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdQQlMnO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIlBCU1wiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIFJQQlMoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1JQQlMnO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkNUR0NvUGF5bWVudCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIlJQQlNcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL3NlbGVjdGVkIG1lZGljaW5lXHJcbiAgc2VsZWN0Rm9ybXVsYXRpb24obWVkOiBhbnksIGluZGV4OiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiA9IG1lZDtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5jbGVhck1lZGljYWxQcmVzY3JpcHRpb25EYXRhT25jaGFuZ2VvZk1lZGljaW5lKG1lZCk7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzUzhXYXJuaW5nTmV4dCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5yZXN0cmljdGlvbnMgPSBtZWQuUmVzdHJpY3Rpb25zICYmIG1lZC5SZXN0cmljdGlvbnMubGVuZ3RoICE9IDAgPyBtZWQuUmVzdHJpY3Rpb25zWzBdIDogbnVsbDtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmxlbWkgPSBtZWQuYWlwICE9IG51bGwgPyBtZWQuYWlwLmxlbWkgOiBmYWxzZTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmxtYmMgPSBtZWQuYWlwICE9IG51bGwgPyBtZWQuYWlwLmxtYmMgOiBmYWxzZTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lID0gbWVkLmFpcCAhPSBudWxsID8gbWVkLmFpcC5sZW1pIDogZmFsc2U7XHJcblxyXG4gICAgICAgIGlmIChtZWQuUmVzdHJpY3Rpb25zICYmIG1lZC5SZXN0cmljdGlvbnMubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgIHZhciByZXN0cmljdGlvbkxpc3RzID0gbWVkLlJlc3RyaWN0aW9ucy5maWx0ZXIoXHJcbiAgICAgICAgICAgIChlOiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgZS5yZXN0cmljdGlvblByZXZpZXcgIT0gbnVsbCAmJlxyXG4gICAgICAgICAgICAgIGUucmVzdHJpY3Rpb25UZXh0ICE9IG51bGwgJiZcclxuICAgICAgICAgICAgICBlLnJlc3RyaWN0aW9uUHJldmlldyAhPSAnJyAmJlxyXG4gICAgICAgICAgICAgIGUucmVzdHJpY3Rpb25UZXh0ICE9ICcnXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgaWYgKHJlc3RyaWN0aW9uTGlzdHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmlzU2hvd1Jlc3RyaWN0aW9ucyA9IHRydWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmlzU2hvd1Jlc3RyaWN0aW9ucyA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmlzU2hvd1Jlc3RyaWN0aW9ucyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuXHJcbiAgICAgIC8vIGlmICh0aGlzLnN0YXRlLnNlbGVjdGVkSW5kZXggIT0gaW5kZXgpIHtcclxuICAgICAgLy8gICB0aGlzLmNsZWFyTWVkaWNhbFByZXNjcmlwdGlvbkRhdGFPbmNoYW5nZW9mTWVkaWNpbmUobWVkKTtcclxuICAgICAgLy8gfVxyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5pc1J0cG1OZXh0ID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5hdXRob3JpdHlGb3JtTm8gPSB0aGlzLmdldEFkZEF1dGhWYWx1ZSh0aGlzLnRlbXBBdXRob3JpdHlGb3JtTm8pO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RW5kRGF0ZUNhbGN1bGF0ZXIoKTtcclxuICAgICAgdGhpcy5lbmFibGVQcmVzY3JpYmVBcyhtZWQpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkQnJhbmRGb3JtdWxhdGlvbiA9IG51bGw7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2VsZWN0Rm9ybXVsYXRpb25cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL3NlbGVjdGVkIEZhdm91cml0ZSBtZWRpY2luZVxyXG4gIHNlbGVjdEZhdm91cml0ZUZvcm11bGF0aW9uKG1lZDogYW55LCBpbmRleDogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gPSBtZWQ7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY2xlYXJNZWRpY2FsUHJlc2NyaXB0aW9uRGF0YU9uY2hhbmdlb2ZNZWRpY2luZShtZWQpO1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0KSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc1M4V2FybmluZ05leHQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmVzdHJpY3Rpb25zID0gbWVkLlJlc3RyaWN0aW9ucyAmJiBtZWQuUmVzdHJpY3Rpb25zLmxlbmd0aCAhPSAwID8gbWVkLlJlc3RyaWN0aW9uc1swXSA6IG51bGw7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5sZW1pID0gbWVkLmFpcCAhPSBudWxsID8gbWVkLmFpcC5sZW1pIDogZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5sbWJjID0gbWVkLmFpcCAhPSBudWxsID8gbWVkLmFpcC5sbWJjIDogZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSA9IG1lZC5haXAgIT0gbnVsbCA/IG1lZC5haXAubGVtaSA6IGZhbHNlO1xyXG5cclxuICAgICAgICBpZiAobWVkLlJlc3RyaWN0aW9ucyAmJiBtZWQuUmVzdHJpY3Rpb25zLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgICB2YXIgcmVzdHJpY3Rpb25MaXN0cyA9IG1lZC5SZXN0cmljdGlvbnMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoZTogYW55KSA9PlxyXG4gICAgICAgICAgICAgIGUucmVzdHJpY3Rpb25QcmV2aWV3ICE9IG51bGwgJiZcclxuICAgICAgICAgICAgICBlLnJlc3RyaWN0aW9uVGV4dCAhPSBudWxsICYmXHJcbiAgICAgICAgICAgICAgZS5yZXN0cmljdGlvblByZXZpZXcgIT0gJycgJiZcclxuICAgICAgICAgICAgICBlLnJlc3RyaWN0aW9uVGV4dCAhPSAnJ1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGlmIChyZXN0cmljdGlvbkxpc3RzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5pc1Nob3dSZXN0cmljdGlvbnMgPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5pc1Nob3dSZXN0cmljdGlvbnMgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5pc1Nob3dSZXN0cmljdGlvbnMgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuaXNSdHBtTmV4dCA9IHRydWU7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuYXV0aG9yaXR5Rm9ybU5vID0gdGhpcy5nZXRBZGRBdXRoVmFsdWUodGhpcy50ZW1wQXV0aG9yaXR5Rm9ybU5vKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEVuZERhdGVDYWxjdWxhdGVyKCk7XHJcbiAgICAgIHRoaXMuZW5hYmxlUHJlc2NyaWJlQXMobWVkKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEJyYW5kRm9ybXVsYXRpb24gPSBudWxsO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNlbGVjdEZhdm91cml0ZUZvcm11bGF0aW9uXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0QnJhbmROYW1lKHNlbGVjdGVkRm9ybXVsYXRpb246IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbikpIHtcclxuICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uLmFtdCkgJiYgc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXQubGVuZ3RoICE9IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cE5hbWUpKSB7XHJcbiAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBOYW1lO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uLmJyYW5kPy5icmFuZE5hbWUpKSB7XHJcbiAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRGb3JtdWxhdGlvbi5icmFuZC5icmFuZE5hbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0QnJhbmROYW1lXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVuYWJsZVByZXNjcmliZUFzKG1lZDogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICAvLyBpZiAobWVkLnBic1R5cGUudG9Mb3dlckNhc2UoKSA9PSBcIm5vbiBwYnNcIiB8fCB0aGlzLmlzUHJlc2NyaWJlQXNQcml2YXRlT25seSkge1xyXG4gICAgICAvLyAgIHRoaXMucHJlc2NyaWJlQVNfUEJTID0gdHJ1ZTtcclxuICAgICAgLy8gICB0aGlzLnByZXNjcmliZUFTX1JQQlMgPSB0cnVlO1xyXG4gICAgICAvLyAgIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMgPSAnUHJpdmF0ZSc7XHJcbiAgICAgIC8vIH0gZWxzZVxyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShtZWQ/LnBic1R5cGUpICYmIG1lZC5wYnNUeXBlLnRvVXBwZXJDYXNlKCkgPT0gXCJQQlMvUlBCU1wiICYmICF0aGlzLmlzUHJlc2NyaWJlQXNQcml2YXRlT25seSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QpIHtcclxuICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzPy5tZWRpY2FyZU51bWJlcikgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzPy5kdmFOdW1iZXIpKSB7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1BCUyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1JQQlMnO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzPy5tZWRpY2FyZU51bWJlcikpIHtcclxuICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19QQlMgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdQQlMnO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHM/LmR2YU51bWJlcikpIHtcclxuICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19QQlMgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMgPSAnUlBCUyc7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1BCUyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMgPSAnUHJpdmF0ZSc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkobWVkPy5wYnNUeXBlKSAmJiBtZWQucGJzVHlwZS50b1VwcGVyQ2FzZSgpID09IFwiUlBCU1wiICYmICF0aGlzLmlzUHJlc2NyaWJlQXNQcml2YXRlT25seSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QpIHtcclxuICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzPy5kdmFOdW1iZXIpKSB7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1JQQlMgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUEJTID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMgPSAnUlBCUyc7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1BCUyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1ByaXZhdGUnO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG1lZD8ucGJzVHlwZSkgJiYgbWVkLnBic1R5cGUudG9VcHBlckNhc2UoKSA9PSBcIlBCU1wiICYmICF0aGlzLmlzUHJlc2NyaWJlQXNQcml2YXRlT25seSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QpIHtcclxuICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzPy5tZWRpY2FyZU51bWJlcikgfHwgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzPy5kdmFOdW1iZXIpKSB7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1BCUyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMgPSAnUEJTJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19QQlMgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMgPSAnUHJpdmF0ZSc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkobWVkPy5wYnNUeXBlKSAmJiAobWVkLnBic1R5cGUudG9VcHBlckNhc2UoKSA9PSBcIkVYVEVNUE9SQU5FT1VTIFBSRVBBUkFUSU9OU1wiIHx8IG1lZC5wYnNUeXBlLnRvVXBwZXJDYXNlKCkgPT0gXCJTRUNUSU9OIDEwMFwiKSAmJiAhdGhpcy5pc1ByZXNjcmliZUFzUHJpdmF0ZU9ubHkgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0KSB7XHJcbiAgICAgICAgaWYgKCghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHM/Lm1lZGljYXJlTnVtYmVyKSB8fCAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHM/LmR2YU51bWJlcikpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkobWVkPy5wYnNDb2RlKSAmJiBtZWQucGJzQ29kZSAhPSBcIlwiKSB7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1BCUyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMgPSAnUEJTJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19QQlMgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMgPSAnUHJpdmF0ZSc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkobWVkPy5wYnNUeXBlKSAmJiBtZWQucGJzVHlwZS50b1VwcGVyQ2FzZSgpID09IFwiUEFMTElBVElWRSBDQVJFXCIgJiYgIXRoaXMuaXNQcmVzY3JpYmVBc1ByaXZhdGVPbmx5ICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLmR2YU51bWJlciAhPSBudWxsICYmIHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuZHZhTnVtYmVyICE9ICcnICYmIG1lZC5wYnNDb2RlICE9IFwiXCIpIHtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUEJTID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1JQQlMgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMgPSAnUlBCUyc7XHJcbiAgICAgICAgfSBlbHNlIGlmICgoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzPy5tZWRpY2FyZU51bWJlcikgfHwgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzPy5kdmFOdW1iZXIpKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG1lZD8ucGJzQ29kZSkgJiYgbWVkLnBic0NvZGUgIT0gXCJcIikge1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19QQlMgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1BCUyc7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUEJTID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1ByaXZhdGUnO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLnByZXNjcmliZUFTX1BCUyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1ByaXZhdGUnO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIGVsc2UgaWYgKG1lZC5wYnNUeXBlLnRvVXBwZXJDYXNlKCkgPT0gXCJTRUNUSU9OIDEwMFwiKSB7XHJcbiAgICAgIC8vICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMubWVkaWNhcmVOdW1iZXIgIT0gXCJcIiAmJlxyXG4gICAgICAvLyAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5tZWRpY2FyZU51bWJlciAhPSBudWxsICYmIG1lZC5wYnNDb2RlICE9IFwiXCIgfHwgdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5kdmFOdW1iZXIgIT0gbnVsbCAmJlxyXG4gICAgICAvLyAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5kdmFOdW1iZXIgIT0gJycgJiYgbWVkLnBic0NvZGUgIT0gXCJcIikge1xyXG4gICAgICAvLyB0aGlzLnByZXNjcmliZUFTX1BCUyA9IGZhbHNlO1xyXG4gICAgICAvLyB0aGlzLnByZXNjcmliZUFTX1JQQlMgPSB0cnVlO1xyXG4gICAgICAvLyB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1BCUyc7XHJcbiAgICAgIC8vICAgfSBlbHNlIHtcclxuICAgICAgLy8gdGhpcy5wcmVzY3JpYmVBU19QQlMgPSB0cnVlO1xyXG4gICAgICAvLyB0aGlzLnByZXNjcmliZUFTX1JQQlMgPSB0cnVlO1xyXG4gICAgICAvLyB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1ByaXZhdGUnO1xyXG4gICAgICAvLyAgICAgdGhpcy5zZXRTdGF0ZSh7IHByZXNjcmliZUFTX1BCUzogdHJ1ZSwgcHJlc2NyaWJlQVNfUlBCUzogdHJ1ZSwgUHJlc2NyaWJlQVM6IFwiUHJpdmF0ZVwiIH0pO1xyXG4gICAgICAvLyAgIH1cclxuICAgICAgLy8gfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJlbmFibGVQcmVzY3JpYmVBc1wiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFRyYWRlTmFtZSgpOiBhbnkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgLy8gdmFyIHNlbGVjdGVkRm9ybXVsYXRpb246YW55ID0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uO1xyXG5cclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCkge1xyXG4gICAgICAgIHZhciB0cmFkZU5hbWUgPSAnJztcclxuICAgICAgICB2YXIgYW10X3RwTmFtZSA9IHRoaXMuZ2V0QnJhbmROYW1lKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbik7XHJcbiAgICAgICAgdmFyIHRCcmFuZE5hbWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGFtdF90cE5hbWUpID8gYW10X3RwTmFtZSA6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5icmFuZD8uYnJhbmROYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5icmFuZC5icmFuZE5hbWUgOiBcIlwiO1xyXG4gICAgICAgIC8vdmFyIGFtdF90cHBOYW1lID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10KSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10Lmxlbmd0aCAhPSAwICYmIHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHMpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBwcy5sZW5ndGggIT0gMCA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBwc1swXS50cHBOYW1lIDogJyc7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmdlbmVyaWNOYW1lKSB8fCAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZG9zYWdlRm9ybSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0udG9Mb3dlckNhc2UoKSA9PSAnZ2F1emUnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUgOiBcIlwiO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPT0gZmFsc2UgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5sZW1pID09IGZhbHNlICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgIHRyYWRlTmFtZSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5nZW5lcmljTmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZ2VuZXJpY05hbWUgOiBcIlwiO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0cmFkZU5hbWU7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSA9PSB0cnVlICYmIHRoaXMuY29tbW9uU2VydmljZXMubGVtaSA9PSBmYWxzZSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICB0cmFkZU5hbWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZ2VuZXJpY05hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmdlbmVyaWNOYW1lICsgJygnICsgdEJyYW5kTmFtZSArICcpJyA6IFwiXCI7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRyYWRlTmFtZTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lID09IGZhbHNlICYmIHRoaXMuY29tbW9uU2VydmljZXMubGVtaSA9PSB0cnVlICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgIHRyYWRlTmFtZSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5nZW5lcmljTmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZ2VuZXJpY05hbWUgOiBcIlwiO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0cmFkZU5hbWU7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSA9PSB0cnVlICYmIHRoaXMuY29tbW9uU2VydmljZXMubGVtaSA9PSB0cnVlICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgIHRyYWRlTmFtZSA9IHRCcmFuZE5hbWU7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRyYWRlTmFtZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBlbHNlIGlmIChJc0V4dGVtcCA9PSB0cnVlICYmIGxlbWkgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAvLyAgIHRyYWRlTmFtZSA9IGFtdF90cHBOYW1lICE9IG51bGwgJiYgYW10X3RwcE5hbWUgIT0gXCJcIiA/IGFtdF90cHBOYW1lIDogdGhpcy5zdGF0ZS5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lLnRyaW0oKTtcclxuICAgICAgICAgICAgLy8gICByZXR1cm4gdHJhZGVOYW1lLnRyaW0oKTtcclxuICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICAvLyBlbHNlIGlmIChJc0V4dGVtcCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIC8vICAgdHJhZGVOYW1lID0gdGhpcy5zdGF0ZS5zZWxlY3RlZEZvcm11bGF0aW9uLmZvcm11bGEgPT0gbnVsbCA/IHRoaXMuc3RhdGUuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZS50cmltKCkgOiB0aGlzLnN0YXRlLnNlbGVjdGVkRm9ybXVsYXRpb24uZm9ybXVsYTtcclxuICAgICAgICAgICAgLy8gICByZXR1cm4gdHJhZGVOYW1lLnRyaW0oKTtcclxuICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgIHRyYWRlTmFtZSA9IHRoaXMuZ2V0RXh0ZW1wVFRQTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0cmFkZU5hbWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gdHJhZGVOYW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRUcmFkZU5hbWVcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0VHJhZGVOYW1lRGlzcGxheSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QpIHtcclxuICAgICAgICB2YXIgYW10X3RwTmFtZSA9IHRoaXMuZ2V0QnJhbmROYW1lKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbik7XHJcbiAgICAgICAgdmFyIHRCcmFuZE5hbWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGFtdF90cE5hbWUpID8gYW10X3RwTmFtZSA6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5icmFuZD8uYnJhbmROYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5icmFuZC5icmFuZE5hbWUgOiBcIlwiO1xyXG4gICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5nZW5lcmljTmFtZSkpIHtcclxuICAgICAgICAgIC8vIGxldCBQSXRlbVRocmVlMiA9IHByZXNjcmliZWRJdGVtUmVzZXJ2ZWRUaHJlZS5sYXN0SW5kZXhPZihcIltcIik7XHJcbiAgICAgICAgICAvLyBsZXQgUEl0ZW1UaHJlZTMgPSBwcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUuc2xpY2UoMCwgUEl0ZW1UaHJlZTIpO1xyXG4gICAgICAgICAgLy8gdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUgPSBQSXRlbVRocmVlMiA+PSAwID8gUEl0ZW1UaHJlZTMudHJpbSgpIDogcHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lID0gdGhpcy5jb21tb25TZXJ2aWNlcy5lb3BEaXNwbGF5TmFtZSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZSA6IFwiXCI7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gdHJ1ZSB8fCB0aGlzLmNvbW1vblNlcnZpY2VzLmxlbWkgPT0gdHJ1ZSB8fCAodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0gIT0gbnVsbCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybS50b0xvd2VyQ2FzZSgpID09IFwiZ2F1emVcIikpIHtcclxuICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybS50b0xvd2VyQ2FzZSgpID09IFwiZ2F1emVcIikge1xyXG4gICAgICAgICAgICAvLyBsZXQgUEl0ZW1UaHJlZTIgPSBwcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUubGFzdEluZGV4T2YoXCJbXCIpO1xyXG4gICAgICAgICAgICAvLyBsZXQgUEl0ZW1UaHJlZTMgPSBwcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUuc2xpY2UoMCwgUEl0ZW1UaHJlZTIpO1xyXG4gICAgICAgICAgICAvLyB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZWRJdGVtUmVzZXJ2ZWRUaHJlZSA9IFBJdGVtVGhyZWUyID49IDAgPyBQSXRlbVRocmVlMy50cmltKCkgOiBwcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWU7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZW9wRGlzcGxheU5hbWUgPSB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGlzcGxheU5hbWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUgOiBcIlwiO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gbGV0IFBJdGVtVGhyZWUgPSBleHRlbXBUVFBOYW1lLmxhc3RJbmRleE9mKFwiW1wiKTtcclxuICAgICAgICAgICAgLy8gbGV0IFBJdGVtVGhyZWUxID0gZXh0ZW1wVFRQTmFtZS5zbGljZSgwLCBQSXRlbVRocmVlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lb3BEaXNwbGF5TmFtZSA9IHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZSA9IHRoaXMuZ2V0RXh0ZW1wVFRQTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pLnRyaW0oKTtcclxuICAgICAgICAgICAgLy8gdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUgPSBQSXRlbVRocmVlID49IDAgPyBQSXRlbVRocmVlMS50cmltKCkgOiBleHRlbXBUVFBOYW1lO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB2YXIgbXBwTmFtZSA9IHRoaXMuZ2V0TVBQTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pO1xyXG4gICAgICAgICAgdmFyIFNhY2hldE9yUHVtcCA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5zdHJTYWNoZXRPclB1bXApID8gXCIgXCIgKyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uc3RyU2FjaGV0T3JQdW1wIDogXCJcIjtcclxuICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG1wcE5hbWUpKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lID09IHRydWUpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVvcERpc3BsYXlOYW1lID0gdGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lID0gKG1wcE5hbWUudHJpbSgpICsgXCJcIiArIFNhY2hldE9yUHVtcCArICcgKCcgKyB0QnJhbmROYW1lICsgJyknKS50cmltKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lb3BEaXNwbGF5TmFtZSA9IHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZSA9IChtcHBOYW1lLnRyaW0oKSArIFwiXCIgKyBTYWNoZXRPclB1bXApLnRyaW0oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdmFyIHN0cmVuZ3RoID0gdGhpcy5yeFN0cmVuZ3RoY2FsY3VsYXRpb24odGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKTtcclxuICAgICAgICAgICAgdmFyIGRpc3BOYW1lID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LkRpc3BOYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5EaXNwTmFtZS50cmltKCkgOiBcIlwiO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lID0gKGRpc3BOYW1lICsgXCIgXCIgKyAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybS50cmltKCkgKyBcIiBcIiA6IFwiXCIpICsgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodEJyYW5kTmFtZSkgPyAnKCcgKyB0QnJhbmROYW1lICsgJykgJyA6IFwiXCIpICsgc3RyZW5ndGgpLnRyaW0oKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVvcERpc3BsYXlOYW1lID0gKGRpc3BOYW1lICsgXCIgXCIgKyAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0QnJhbmROYW1lKSA/ICcoJyArIHRCcmFuZE5hbWUgKyAnKSAnIDogXCJcIikgKyBzdHJlbmd0aCkudHJpbSgpO1xyXG4gICAgICAgICAgICAgIC8vIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlID0gZGlzcE5hbWUgKyBcIiBcIiArICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtLnRyaW0oKSArIFwiIFwiIDogXCJcIikgKyAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0QnJhbmROYW1lKSA/ICcoJyArIHRCcmFuZE5hbWUgKyAnKSAnIDogXCJcIikgKyB0aGlzLnJ4U3RyZW5ndGhjYWxjdWxhdGlvbk5ldyh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkQnJhbmRGb3JtdWxhdGlvbik7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lID0gKGRpc3BOYW1lICsgXCIgXCIgKyAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybS50cmltKCkgOiBcIlwiKSArIFwiIFwiICsgc3RyZW5ndGgpLnRyaW0oKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVvcERpc3BsYXlOYW1lID0gKGRpc3BOYW1lICsgXCIgXCIgKyBzdHJlbmd0aCkudHJpbSgpO1xyXG4gICAgICAgICAgICAgIC8vIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlID0gZGlzcE5hbWUgKyBcIiBcIiArICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtLnRyaW0oKSA6IFwiXCIpICsgXCIgXCIgKyB0aGlzLnJ4U3RyZW5ndGhjYWxjdWxhdGlvbk5ldyh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkQnJhbmRGb3JtdWxhdGlvbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lID0gdGhpcy5jb21tb25TZXJ2aWNlcy5lb3BEaXNwbGF5TmFtZSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5wcm9kdWN0TmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUgOiBcIlwiO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGlzcGxheU5hbWUgPSB0aGlzLmNvbW1vblNlcnZpY2VzLmVvcERpc3BsYXlOYW1lID0gXCJcIjtcclxuICAgICAgLy8gdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUgPSBcIlwiO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0VHJhZGVOYW1lRGlzcGxheVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldE1QUE5hbWUoc2VsZWN0ZWRGb3JtdWxhdGlvbjogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uKSAmJiAodHlwZW9mIHNlbGVjdGVkRm9ybXVsYXRpb24pID09PSAnb2JqZWN0JyAmJiBzZWxlY3RlZEZvcm11bGF0aW9uLmNvbnN0cnVjdG9yID09PSBPYmplY3QgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uPy5hbXQpICYmIHNlbGVjdGVkRm9ybXVsYXRpb24uYW10Lmxlbmd0aCA+IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXT8ubXBwcykgJiYgc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0ubXBwcy5sZW5ndGggPiAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0ubXBwc1swXT8ubXBwTmFtZSkpIHtcclxuICAgICAgICByZXR1cm4gc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0ubXBwc1swXS5tcHBOYW1lO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldE1QUE5hbWVcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0SXRlbUdlbmVyaWNJbnRlbnRpb24obGVtaTogYm9vbGVhbiwgaXNCcmFuZE5hbWU6IGJvb2xlYW4sIGlzRXh0ZW1wOiBib29sZWFuKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAobGVtaSA9PSB0cnVlICYmIGlzQnJhbmROYW1lID09IHRydWUgJiYgaXNFeHRlbXAgIT0gdHJ1ZSkge1xyXG4gICAgICAgIHJldHVybiAnQic7XHJcbiAgICAgIH0gZWxzZSBpZiAobGVtaSA9PSB0cnVlICYmIGlzQnJhbmROYW1lID09IGZhbHNlICYmIGlzRXh0ZW1wICE9IHRydWUpIHtcclxuICAgICAgICByZXR1cm4gJ0cnO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiAnRyc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0SXRlbUdlbmVyaWNJbnRlbnRpb25cIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcnhTdHJlbmd0aGNhbGN1bGF0aW9uKGZvcm11bGF0aW9uOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGZvcm11bGF0aW9uKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGZvcm11bGF0aW9uLml0ZW1TdHJlbmd0aFF1YW50aXR5KSAmJiBmb3JtdWxhdGlvbi5pdGVtU3RyZW5ndGhRdWFudGl0eSAhPSAwKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoZm9ybXVsYXRpb24uaXRlbVN0cmVuZ3RoUXVhbnRpdHludW1iZXJPZlBhY2spICYmIGZvcm11bGF0aW9uLml0ZW1TdHJlbmd0aFF1YW50aXR5bnVtYmVyT2ZQYWNrICE9IDApIHtcclxuICAgICAgICAgIHJldHVybiAoKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoZm9ybXVsYXRpb24uc3RyU2FjaGV0T3JQdW1wKSA/IGZvcm11bGF0aW9uLnN0clNhY2hldE9yUHVtcCA6IFwiXCIpICsgJyBbJyArIGZvcm11bGF0aW9uLml0ZW1TdHJlbmd0aFF1YW50aXR5ICsgJ10nICsgJyB4ICcgKyBmb3JtdWxhdGlvbi5pdGVtU3RyZW5ndGhRdWFudGl0eW51bWJlck9mUGFjaykudHJpbSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gKCghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGZvcm11bGF0aW9uLnN0clNhY2hldE9yUHVtcCkgPyBmb3JtdWxhdGlvbi5zdHJTYWNoZXRPclB1bXAgOiBcIlwiKSArICcgWycgKyBmb3JtdWxhdGlvbi5pdGVtU3RyZW5ndGhRdWFudGl0eSArICddJykudHJpbSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicnhTdHJlbmd0aGNhbGN1bGF0aW9uXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIHJ4U3RyZW5ndGhjYWxjdWxhdGlvbk5ldyhmb3JtdWxhdGlvbjogYW55KSB7XHJcbiAgLy8gICB0cnkge1xyXG4gIC8vICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShmb3JtdWxhdGlvbikgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShmb3JtdWxhdGlvbi5pdGVtU3RyZW5ndGhRdWFudGl0eSkgJiYgZm9ybXVsYXRpb24uaXRlbVN0cmVuZ3RoUXVhbnRpdHkgIT0gMCkge1xyXG4gIC8vICAgICAgIHJldHVybiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGZvcm11bGF0aW9uLnN0clNhY2hldE9yUHVtcCkgPyBmb3JtdWxhdGlvbi5zdHJTYWNoZXRPclB1bXAgOiBcIlwiO1xyXG4gIC8vICAgICB9IGVsc2Uge1xyXG4gIC8vICAgICAgIHJldHVybiAnJztcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfVxyXG4gIC8vICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAvLyAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJyeFN0cmVuZ3RoY2FsY3VsYXRpb25OZXdcIik7XHJcbiAgLy8gICAgIHJldHVybiBcIlwiO1xyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuXHJcbiAgc2hvd0F1dGhvcml0eUJveChSZXN0cmljdGlvbnM6IGFueSwgUHJlc2NyaWJlQVM6IGFueSwgcnhBdXRob3JpdHk6IGFueSwgdW5saXN0ZWRSQTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoUmVzdHJpY3Rpb25zKSAmJiBSZXN0cmljdGlvbnMubGVuZ3RoID4gMCAmJiBSZXN0cmljdGlvbnNbMF0ucmVzdHJpY3Rpb25UeXBlLnRvTG93ZXJDYXNlKCkgIT0gJ3Jlc3RyaWN0ZWQnICYmIFJlc3RyaWN0aW9uc1swXS5yZXN0cmljdGlvblR5cGUudG9Mb3dlckNhc2UoKSAhPSAndW5yZXN0cmljdGVkJyAmJiBQcmVzY3JpYmVBUy50b0xvd2VyQ2FzZSgpID09ICdwYnMnKSB8fCAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShSZXN0cmljdGlvbnMpICYmIFJlc3RyaWN0aW9ucy5sZW5ndGggPiAwICYmIFJlc3RyaWN0aW9uc1swXS5yZXN0cmljdGlvblR5cGUudG9Mb3dlckNhc2UoKSAhPSAncmVzdHJpY3RlZCcgJiYgUmVzdHJpY3Rpb25zWzBdLnJlc3RyaWN0aW9uVHlwZS50b0xvd2VyQ2FzZSgpICE9ICd1bnJlc3RyaWN0ZWQnICYmIFByZXNjcmliZUFTLnRvTG93ZXJDYXNlKCkgPT0gJ3JwYnMnKSB8fCAocnhBdXRob3JpdHkgPT0gdHJ1ZSAmJiBQcmVzY3JpYmVBUy50b0xvd2VyQ2FzZSgpID09ICdwYnMnKSB8fCAocnhBdXRob3JpdHkgPT0gdHJ1ZSAmJiBQcmVzY3JpYmVBUy50b0xvd2VyQ2FzZSgpID09ICdycGJzJykpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBlbHNlIGlmIChQcmVzY3JpYmVBUy50b0xvd2VyQ2FzZSgpID09ICdycGJzJyAmJiB1bmxpc3RlZFJBID09IHRydWUpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2hvd0F1dGhvcml0eUJveFwiKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RGlyZWN0aW9ucygpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGxldCBkaXJlY3Rpb25zID0gJyc7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZG9zZVNlYXJjaFZhbHVlKSkge1xyXG4gICAgICAgIGRpcmVjdGlvbnMgPSB0aGlzLmNvbW1vblNlcnZpY2VzLmRvc2VTZWFyY2hWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZyZXFTZWFyY2hWYWx1ZSkpIHtcclxuICAgICAgICBkaXJlY3Rpb25zID0gZGlyZWN0aW9ucyArICcgJyArIHRoaXMuY29tbW9uU2VydmljZXMuZnJlcVNlYXJjaFZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZm9vZFNlYXJjaFZhbHVlKSkge1xyXG4gICAgICAgIGRpcmVjdGlvbnMgPSBkaXJlY3Rpb25zICsgJyAnICsgdGhpcy5jb21tb25TZXJ2aWNlcy5mb29kU2VhcmNoVmFsdWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5JbnN0cnVjdGlvbkRlc2NyaXB0aW9uKSkge1xyXG4gICAgICAgIGRpcmVjdGlvbnMgPSBkaXJlY3Rpb25zICsgJyAnICsgdGhpcy5JbnN0cnVjdGlvbkRlc2NyaXB0aW9uO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlKSkge1xyXG4gICAgICAgIGRpcmVjdGlvbnMgPSBkaXJlY3Rpb25zICsgJyAnICsgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBkaXJlY3Rpb25zLnRyaW0oKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0RGlyZWN0aW9uc1wiKTtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL3N0YXRlIG5hbWUgZnVsbCBmb3JtXHJcbiAgZ2V0U3RhdGVOYW1lRnJvbVN0YXRlQ29kZShydHBtc3RhdGVOYW1lOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHN3aXRjaCAocnRwbXN0YXRlTmFtZSAmJiBydHBtc3RhdGVOYW1lICE9ICcnID8gcnRwbXN0YXRlTmFtZS50b1VwcGVyQ2FzZSgpIDogJycpIHtcclxuICAgICAgICBjYXNlICdOU1cnOlxyXG4gICAgICAgICAgcmV0dXJuICdOZXcgU291dGggV2FsZXMnO1xyXG4gICAgICAgIGNhc2UgJ1FMRCc6XHJcbiAgICAgICAgICByZXR1cm4gJ1F1ZWVuc2xhbmQnO1xyXG4gICAgICAgIGNhc2UgJ1NBJzpcclxuICAgICAgICAgIHJldHVybiAnU291dGggQXVzdHJhbGlhJztcclxuICAgICAgICBjYXNlICdUQVMnOlxyXG4gICAgICAgICAgcmV0dXJuICdUYXNtYW5pYSc7XHJcbiAgICAgICAgY2FzZSAnVklDJzpcclxuICAgICAgICAgIHJldHVybiAnVmljdG9yaWEnO1xyXG4gICAgICAgIGNhc2UgJ1dBJzpcclxuICAgICAgICAgIHJldHVybiAnV2VzdGVybiBBdXN0cmFsaWEnO1xyXG4gICAgICAgIGNhc2UgJ0FDVCc6XHJcbiAgICAgICAgICByZXR1cm4gJ0F1c3RyYWxpYW4gQ2FwaXRhbCBUZXJyaXRvcnknO1xyXG4gICAgICAgIGNhc2UgJ05UJzpcclxuICAgICAgICAgIHJldHVybiAnTm9ydGhlcm4gVGVycml0b3J5JztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgcmV0dXJuIHJ0cG1zdGF0ZU5hbWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0U3RhdGVOYW1lRnJvbVN0YXRlQ29kZVwiKTtcclxuICAgICAgcmV0dXJuIHJ0cG1zdGF0ZU5hbWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL3N1cGVyc2NyaXB0IGNvZGVcclxuICBzaHJpbmtTdXBlclNjcmlwdENvZGUgPSAoaW5wdXQ6IGFueSkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgbGV0IGR1cHJlc3VsdCA9IGlucHV0O1xyXG4gICAgICBsZXQgYSA9IGlucHV0LnNwbGl0KCc8c3VwPicpO1xyXG5cclxuICAgICAgLy8gc2VhcmNoIGZvciBwYXR0ZXJuIGluIGFcclxuICAgICAgbGV0IGNvdW50ID0gYS5sZW5ndGggLSAxO1xyXG5cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XHJcbiAgICAgICAgLy8gaWYgbWF0Y2ggZm91bmQgaW5jcmVhc2UgY291bnRcclxuICAgICAgICBsZXQgc3RhcnQgPSAnPHN1cD4nO1xyXG4gICAgICAgIGxldCBlbmQgPSAnPC9zdXA+JztcclxuICAgICAgICBsZXQgc3RhcnRJbmRleCA9IGR1cHJlc3VsdC5pbmRleE9mKHN0YXJ0KSArIHN0YXJ0Lmxlbmd0aDtcclxuICAgICAgICBsZXQgZW5kSW5kZXggPSBkdXByZXN1bHQuaW5kZXhPZihlbmQsIHN0YXJ0SW5kZXgpO1xyXG4gICAgICAgIGxldCBleHRyYWN0ZWRWYWx1ZSA9ICcnO1xyXG5cclxuICAgICAgICBpZiAoc3RhcnRJbmRleCAhPSAtMSAmJiBlbmRJbmRleCAhPSAtMSkge1xyXG4gICAgICAgICAgZXh0cmFjdGVkVmFsdWUgPSBkdXByZXN1bHQuc3Vic3RyaW5nKHN0YXJ0SW5kZXgsIGVuZEluZGV4KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHN0cmluZ051bWJlciA9IHRoaXMuY29udmVydFRvU3VwZXJzY3JpcHQoZXh0cmFjdGVkVmFsdWUpO1xyXG5cclxuICAgICAgICBsZXQgcmVzdWx0ID0gJ1RoZSBudW1iZXIgJyArIHN0cmluZ051bWJlciArICcgaXMgc3VwZXJzY3JpcHRlZC4nO1xyXG5cclxuICAgICAgICAvLyBkdXByZXN1bHQgPSBkdXByZXN1bHQucmVwbGFjZSgvPHN1cD4uKjxcXC9zdXA+LywgJzxzdXA+PC9zdXA+Jyk7XHJcbiAgICAgICAgLy8gZHVwcmVzdWx0ID0gZHVwcmVzdWx0LnJlcGxhY2VGaXJzdChcIlxcXFw8c3VwPi4qP1xcXFw8L3N1cD5cIiwgXCI8c3VwPlwiICsgXCJcIiArIFwiPC9zdXA+XCIpO1xyXG4gICAgICAgIGR1cHJlc3VsdCA9IGR1cHJlc3VsdC5yZXBsYWNlKFxyXG4gICAgICAgICAgJzxzdXA+JyArIGV4dHJhY3RlZFZhbHVlICsgJzwvc3VwPicsXHJcbiAgICAgICAgICBzdHJpbmdOdW1iZXJcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIHJldHVybiBkdXByZXN1bHQ7XHJcbiAgICAgIHJldHVybiB0aGlzLnNocmlua1N1YlNjcmlwdENvZGUoZHVwcmVzdWx0KTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2hyaW5rU3VwZXJTY3JpcHRDb2RlXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICAvL3N1YnNjcmlwdCBjb2RlXHJcbiAgc2hyaW5rU3ViU2NyaXB0Q29kZSA9IChpbnB1dDogYW55KSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBsZXQgZHVwcmVzdWx0ID0gaW5wdXQ7XHJcbiAgICAgIGxldCBhID0gaW5wdXQuc3BsaXQoJzxzdWI+Jyk7XHJcblxyXG4gICAgICAvLyBzZWFyY2ggZm9yIHBhdHRlcm4gaW4gYVxyXG4gICAgICBsZXQgY291bnQgPSBhLmxlbmd0aCAtIDE7XHJcblxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcclxuICAgICAgICAvLyBpZiBtYXRjaCBmb3VuZCBpbmNyZWFzZSBjb3VudFxyXG4gICAgICAgIGxldCBzdGFydCA9ICc8c3ViPic7XHJcbiAgICAgICAgbGV0IGVuZCA9ICc8L3N1Yj4nO1xyXG4gICAgICAgIGxldCBzdGFydEluZGV4ID0gZHVwcmVzdWx0LmluZGV4T2Yoc3RhcnQpICsgc3RhcnQubGVuZ3RoO1xyXG4gICAgICAgIGxldCBlbmRJbmRleCA9IGR1cHJlc3VsdC5pbmRleE9mKGVuZCwgc3RhcnRJbmRleCk7XHJcbiAgICAgICAgbGV0IGV4dHJhY3RlZFZhbHVlID0gJyc7XHJcblxyXG4gICAgICAgIGlmIChzdGFydEluZGV4ICE9IC0xICYmIGVuZEluZGV4ICE9IC0xKSB7XHJcbiAgICAgICAgICBleHRyYWN0ZWRWYWx1ZSA9IGR1cHJlc3VsdC5zdWJzdHJpbmcoc3RhcnRJbmRleCwgZW5kSW5kZXgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgc3RyaW5nTnVtYmVyID0gdGhpcy5zdWJzY3JpcHROdW1iZXJzKGV4dHJhY3RlZFZhbHVlKTtcclxuXHJcbiAgICAgICAgbGV0IHJlc3VsdCA9ICdUaGUgbnVtYmVyICcgKyBzdHJpbmdOdW1iZXIgKyAnIGlzIHN1cGVyc2NyaXB0ZWQuJztcclxuICAgICAgICAvLyBkdXByZXN1bHQgPSBkdXByZXN1bHQucmVwbGFjZSgvPHN1cD4uKjxcXC9zdXA+LywgJzxzdXA+PC9zdXA+Jyk7XHJcbiAgICAgICAgLy8gZHVwcmVzdWx0ID0gZHVwcmVzdWx0LnJlcGxhY2VGaXJzdChcIlxcXFw8c3VwPi4qP1xcXFw8L3N1cD5cIiwgXCI8c3VwPlwiICsgXCJcIiArIFwiPC9zdXA+XCIpO1xyXG4gICAgICAgIGR1cHJlc3VsdCA9IGR1cHJlc3VsdC5yZXBsYWNlKFxyXG4gICAgICAgICAgJzxzdWI+JyArIGV4dHJhY3RlZFZhbHVlICsgJzwvc3ViPicsXHJcbiAgICAgICAgICBzdHJpbmdOdW1iZXJcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBkdXByZXN1bHQ7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNocmlua1N1YlNjcmlwdENvZGVcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGNvbnZlcnRUb1N1cGVyc2NyaXB0ID0gKGlucHV0OiBhbnkpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHN1cGVyc2NyaXB0RGlnaXRzOiBhbnkgPSB7XHJcbiAgICAgICAgJzAnOiAnXFx1MjA3MCcsXHJcbiAgICAgICAgJzEnOiAnXFx1MDBCOScsXHJcbiAgICAgICAgJzInOiAnXFx1MDBCMicsXHJcbiAgICAgICAgJzMnOiAnXFx1MDBCMycsXHJcbiAgICAgICAgJzQnOiAnXFx1MjA3NCcsXHJcbiAgICAgICAgJzUnOiAnXFx1MjA3NScsXHJcbiAgICAgICAgJzYnOiAnXFx1MjA3NicsXHJcbiAgICAgICAgJzcnOiAnXFx1MjA3NycsXHJcbiAgICAgICAgJzgnOiAnXFx1MjA3OCcsXHJcbiAgICAgICAgJzknOiAnXFx1MjA3OScsXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBsZXQgb3V0cHV0ID0gJyc7XHJcbiAgICAgIGZvciAobGV0IGNoYXIgb2YgaW5wdXQpIHtcclxuICAgICAgICBpZiAoY2hhciBpbiBzdXBlcnNjcmlwdERpZ2l0cykge1xyXG4gICAgICAgICAgb3V0cHV0ICs9IHN1cGVyc2NyaXB0RGlnaXRzW2NoYXJdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBvdXRwdXQgKz0gY2hhcjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG91dHB1dDtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiY29udmVydFRvU3VwZXJzY3JpcHRcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIHN1YnNjcmlwdE51bWJlcnMoc3RyOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBzdWJzY3JpcHRzOiBhbnkgPSB7XHJcbiAgICAgICAgJzAnOiAnXFx1MjA4MCcsXHJcbiAgICAgICAgJzEnOiAnXFx1MjA4MScsXHJcbiAgICAgICAgJzInOiAnXFx1MjA4MicsXHJcbiAgICAgICAgJzMnOiAnXFx1MjA4MycsXHJcbiAgICAgICAgJzQnOiAnXFx1MjA4NCcsXHJcbiAgICAgICAgJzUnOiAnXFx1MjA4NScsXHJcbiAgICAgICAgJzYnOiAnXFx1MjA4NicsXHJcbiAgICAgICAgJzcnOiAnXFx1MjA4NycsXHJcbiAgICAgICAgJzgnOiAnXFx1MjA4OCcsXHJcbiAgICAgICAgJzknOiAnXFx1MjA4OScsXHJcbiAgICAgIH07XHJcblxyXG4gICAgICB2YXIgcmVzdWx0ID0gJyc7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHN1YnNjcmlwdHNbc3RyW2ldXSkge1xyXG4gICAgICAgICAgcmVzdWx0ICs9IHN1YnNjcmlwdHNbc3RyW2ldXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVzdWx0ICs9IHN0cltpXTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic3Vic2NyaXB0TnVtYmVyc1wiKTtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRBdXRob3JpdHlMYWJlbChzdGF0ZU5hbWU6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIHN0YXRlID0gdGhpcy5nZXRTdGF0ZUNvZGVGcm9tU3RhdGVOYW1lKHN0YXRlTmFtZSk7XHJcbiAgICAgIHN3aXRjaCAoc3RhdGUudG9VcHBlckNhc2UoKSkge1xyXG4gICAgICAgIGNhc2UgJ05TVyc6XHJcbiAgICAgICAgICByZXR1cm4gJ0FwcHJvdmFsIE51bWJlcic7XHJcbiAgICAgICAgY2FzZSAnUUxEJzpcclxuICAgICAgICAgIHJldHVybiAnQXBwcm92YWwgTnVtYmVyJztcclxuICAgICAgICBjYXNlICdTQSc6XHJcbiAgICAgICAgICByZXR1cm4gJ0FwcHJvdmFsIE51bWJlcic7XHJcbiAgICAgICAgY2FzZSAnVEFTJzpcclxuICAgICAgICAgIHJldHVybiAnQXBwcm92YWwgTnVtYmVyJztcclxuICAgICAgICBjYXNlICdWSUMnOlxyXG4gICAgICAgICAgcmV0dXJuICdBcHByb3ZhbCBOdW1iZXInO1xyXG4gICAgICAgIGNhc2UgJ1dBJzpcclxuICAgICAgICAgIHJldHVybiAnQXBwcm92YWwgTnVtYmVyJztcclxuICAgICAgICBjYXNlICdBQ1QnOlxyXG4gICAgICAgICAgcmV0dXJuICdBcHByb3ZhbCBOdW1iZXInO1xyXG4gICAgICAgIGNhc2UgJ05UJzpcclxuICAgICAgICAgIHJldHVybiAnQXBwcm92YWwgTnVtYmVyJztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgcmV0dXJuICdBcHByb3ZhbCBOdW1iZXInO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldEF1dGhvcml0eUxhYmVsXCIpO1xyXG4gICAgICByZXR1cm4gc3RhdGVOYW1lO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0U3RhdGVBdXRob3JpdHlMYWJlbChzdGF0ZU5hbWU6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIHN0YXRlID0gdGhpcy5nZXRTdGF0ZUNvZGVGcm9tU3RhdGVOYW1lKHN0YXRlTmFtZSk7XHJcbiAgICAgIHN3aXRjaCAoc3RhdGUudG9VcHBlckNhc2UoKSkge1xyXG4gICAgICAgIGNhc2UgJ05TVyc6XHJcbiAgICAgICAgICByZXR1cm4gJ0F1dGhvcmlzYXRpb24gbnVtYmVyJztcclxuICAgICAgICBjYXNlICdRTEQnOlxyXG4gICAgICAgICAgcmV0dXJuICdBcHByb3ZhbCBudW1iZXInO1xyXG4gICAgICAgIGNhc2UgJ1NBJzpcclxuICAgICAgICAgIHJldHVybiAnUGVybWl0IG51bWJlcic7XHJcbiAgICAgICAgY2FzZSAnVEFTJzpcclxuICAgICAgICAgIHJldHVybiAnQXV0aG9yaXR5IG51bWJlcic7XHJcbiAgICAgICAgY2FzZSAnVklDJzpcclxuICAgICAgICAgIHJldHVybiAnV2FycmFudCBudW1iZXInO1xyXG4gICAgICAgIGNhc2UgJ1dBJzpcclxuICAgICAgICAgIHJldHVybiAnQXV0aG9yaXR5IG51bWJlcic7XHJcbiAgICAgICAgY2FzZSAnQUNUJzpcclxuICAgICAgICAgIHJldHVybiAnQXBwcm92YWwgbnVtYmVyJztcclxuICAgICAgICBjYXNlICdOVCc6XHJcbiAgICAgICAgICByZXR1cm4gJ0F1dGhvcmlzYXRpb24gbnVtYmVyJztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgcmV0dXJuICdBdXRob3Jpc2F0aW9uIG51bWJlcic7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0U3RhdGVBdXRob3JpdHlMYWJlbFwiKTtcclxuICAgICAgcmV0dXJuIHN0YXRlTmFtZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEV4dGVtcFRUUE5hbWUoc2VsZWN0ZWRGb3JtdWxhdGlvbjogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uKSAhPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXQpICYmIHNlbGVjdGVkRm9ybXVsYXRpb24uYW10Lmxlbmd0aCAhPSAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBwcykgJiYgc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBwcy5sZW5ndGggIT0gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHNbMF0udHBwTmFtZSkpIHtcclxuICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24uaXRlbVN0cmVuZ3RoUXVhbnRpdHludW1iZXJPZlBhY2spICYmIHNlbGVjdGVkRm9ybXVsYXRpb24uaXRlbVN0cmVuZ3RoUXVhbnRpdHludW1iZXJPZlBhY2sgIT0gMCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5sZW1pID09IHRydWUpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBwc1swXS50cHBOYW1lO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBwc1swXS50cHBOYW1lICsgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbi5pdGVtU3RyZW5ndGhRdWFudGl0eSkgPyAnIFsnICsgc2VsZWN0ZWRGb3JtdWxhdGlvbi5pdGVtU3RyZW5ndGhRdWFudGl0eSArICddJyArICcgeCAnIDogXCJcIikgKyBzZWxlY3RlZEZvcm11bGF0aW9uLml0ZW1TdHJlbmd0aFF1YW50aXR5bnVtYmVyT2ZQYWNrKS50cmltKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmxlbWkgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cHBzWzBdLnRwcE5hbWU7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChzZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cHBzWzBdLnRwcE5hbWUgKyAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uLml0ZW1TdHJlbmd0aFF1YW50aXR5KSA/ICcgWycgKyBzZWxlY3RlZEZvcm11bGF0aW9uLml0ZW1TdHJlbmd0aFF1YW50aXR5ICsgJ10nIDogXCJcIikpLnRyaW0oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uPy5wcm9kdWN0TmFtZSkgPyBzZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lLnRyaW0oKSA6IFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldEV4dGVtcFRUUE5hbWVcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcm91bmREYXRhKHZhbHVlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciByb3VuZF9WYWwgPSBNYXRoLnJvdW5kKHZhbHVlKTtcclxuICAgICAgaWYgKHJvdW5kX1ZhbCA8IDApIHtcclxuICAgICAgICByZXR1cm4gMDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB2YXIgcm91bmRfVmFsMSA9IHJvdW5kX1ZhbC50b1N0cmluZygpO1xyXG4gICAgICAgIC8vIHJvdW5kX1ZhbCA9IHBhcnNlSW50KHJvdW5kX1ZhbDEsMTApO1xyXG4gICAgICAgIHJldHVybiByb3VuZF9WYWwxO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInJvdW5kRGF0YVwiKTtcclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlcnhNZWRpY2FyZUNhcmQobWVkaWNhcmVOdW1iZXI6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIG1lZGljYXJlQ2FyZCA9ICcnO1xyXG4gICAgICBtZWRpY2FyZUNhcmQgPSBtZWRpY2FyZU51bWJlci5zbGljZSgwLCAxMCk7XHJcbiAgICAgIHJldHVybiBtZWRpY2FyZUNhcmQ7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImVyeE1lZGljYXJlQ2FyZFwiKTtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlcnhNZWRpY2FyZUlSTihtZWRpY2FyZU51bWJlcjogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgbWVkaWNhcmVDYXJkSVJOID0gJyc7XHJcbiAgICAgIG1lZGljYXJlQ2FyZElSTiA9IG1lZGljYXJlTnVtYmVyLnNsaWNlKC0xKTtcclxuICAgICAgcmV0dXJuIG1lZGljYXJlQ2FyZElSTjtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZXJ4TWVkaWNhcmVJUk5cIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0VW51c3VhbFF0eUZsYWcoc0Zvcm11bGF0aW9uOiBhbnksIHF1YW50aXR5VmFsOiBhbnksIFByZXNjcmliZUFTOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChQcmVzY3JpYmVBUy50b0xvd2VyQ2FzZSgpID09ICdwYnMnIHx8IFByZXNjcmliZUFTLnRvTG93ZXJDYXNlKCkgPT0gJ3JwYnMnKSB7XHJcbiAgICAgICAgaWYgKHNGb3JtdWxhdGlvbi5tYXhRdHlVbml0cyAhPSBxdWFudGl0eVZhbCkge1xyXG4gICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gMTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZXRVbnVzdWFsUXR5RmxhZ1wiKTtcclxuICAgICAgcmV0dXJuIDE7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL3N0YXRlIG5hbWUgZnJvbSBhZGRyZXNzXHJcbiAgZ2V0U3RhdGVDb2RlRnJvbVN0YXRlTmFtZShzdGF0ZU5hbWU6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgc3dpdGNoIChzdGF0ZU5hbWUudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgIGNhc2UgJ25ldyBzb3V0aCB3YWxlcyc6XHJcbiAgICAgICAgICByZXR1cm4gJ05TVyc7XHJcbiAgICAgICAgY2FzZSAncXVlZW5zbGFuZCc6XHJcbiAgICAgICAgICByZXR1cm4gJ1FMRCc7XHJcbiAgICAgICAgY2FzZSAnc291dGggYXVzdHJhbGlhJzpcclxuICAgICAgICAgIHJldHVybiAnU0EnO1xyXG4gICAgICAgIGNhc2UgJ3Rhc21hbmlhJzpcclxuICAgICAgICAgIHJldHVybiAnVEFTJztcclxuICAgICAgICBjYXNlICd2aWN0b3JpYSc6XHJcbiAgICAgICAgICByZXR1cm4gJ1ZJQyc7XHJcbiAgICAgICAgY2FzZSAnd2VzdGVybiBhdXN0cmFsaWEnOlxyXG4gICAgICAgICAgcmV0dXJuICdXQSc7XHJcbiAgICAgICAgY2FzZSAnYXVzdHJhbGlhbiBjYXBpdGFsIHRlcnJpdG9yeSc6XHJcbiAgICAgICAgICByZXR1cm4gJ0FDVCc7XHJcbiAgICAgICAgY2FzZSAnbm9ydGhlcm4gdGVycml0b3J5JzpcclxuICAgICAgICAgIHJldHVybiAnTlQnO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICByZXR1cm4gc3RhdGVOYW1lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldFN0YXRlQ29kZUZyb21TdGF0ZU5hbWVcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0R2VuZGVyKGdlbmRlcjogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgZ2VuZGVyVGV4dCA9ICdOb3QgQXZhaWxhYmxlJztcclxuICAgICAgZ2VuZGVyVGV4dCA9XHJcbiAgICAgICAgZ2VuZGVyLnRvTG93ZXJDYXNlKCkgPT0gJ20nID8gJ01hbGUnIDogZ2VuZGVyLnRvTG93ZXJDYXNlKCkgPT0gJ2YnID8gJ0ZlbWFsZScgOiAnTm90IEF2YWlsYWJsZSc7XHJcbiAgICAgIHJldHVybiBnZW5kZXJUZXh0O1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRHZW5kZXJcIik7XHJcbiAgICAgIHJldHVybiAnTm90IEF2YWlsYWJsZSc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRHZW5kZXJDb2RlKGdlbmRlcjogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgZ2VuZGVyQ29kZSA9ICdOb3QgQXZhaWxhYmxlJztcclxuICAgICAgZ2VuZGVyQ29kZSA9IGdlbmRlci50b0xvd2VyQ2FzZSgpID09ICdtJyA/ICdNJyA6IGdlbmRlci50b0xvd2VyQ2FzZSgpID09ICdmJyA/ICdGJyA6ICdVJztcclxuICAgICAgcmV0dXJuIGdlbmRlckNvZGU7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldEdlbmRlckNvZGVcIik7XHJcbiAgICAgIHJldHVybiAnVSc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwYWQodmFsdWU6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgcmV0dXJuIHZhbHVlIDwgMTAgPyAnMCcgKyB2YWx1ZSA6IHZhbHVlO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJwYWRcIik7XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldE9mZnNldCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBkYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgLy8gdmFyIGRhdGUgPSB0aGlzLnN0YXRlLnN0YXJ0RGF0ZTtcclxuICAgICAgdmFyIHNpZ24gPSBkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCkgPiAwID8gJy0nIDogJysnO1xyXG4gICAgICB2YXIgb2Zmc2V0ID0gTWF0aC5hYnMoZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpKTtcclxuICAgICAgdmFyIGhvdXJzID0gdGhpcy5wYWQoTWF0aC5mbG9vcihvZmZzZXQgLyA2MCkpO1xyXG4gICAgICB2YXIgbWludXRlcyA9IHRoaXMucGFkKG9mZnNldCAlIDYwKTtcclxuICAgICAgcmV0dXJuIGhvdXJzICsgJzonICsgbWludXRlcztcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0T2Zmc2V0XCIpO1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBodG1sVG9Gb3JtYXR0ZWRUZXh0KHJlc3RyaWN0aW9uOiBzdHJpbmcpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHJldHVybiByZXN0cmljdGlvbi5yZXBsYWNlKC88YnIgXFwvPi9nLCAnKicpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJodG1sVG9Gb3JtYXR0ZWRUZXh0XCIpO1xyXG4gICAgICByZXR1cm4gcmVzdHJpY3Rpb247XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBicmFuZFN1YnN0aXR1dGVzTm90QWxsb3coQnJhbmRTdWJzdGl0dXRlc05vdEFsbG93OiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuQnJhbmRTdWJzdGl0dXRlc05vdEFsbG93ID0gQnJhbmRTdWJzdGl0dXRlc05vdEFsbG93O1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvd1wiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIFBSTkNoYW5nZShQUk46IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeFBSTiA9IFBSTjtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJQUk5DaGFuZ2VcIik7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgaXNDaGFuZ2VCcmFuZE5hbWUoaXNCcmFuZE5hbWU6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSA9IGlzQnJhbmROYW1lO1xyXG4gICAgICBpZiAoIWlzQnJhbmROYW1lKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5CcmFuZFN1YnN0aXR1dGVzTm90QWxsb3cgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImlzQ2hhbmdlQnJhbmROYW1lXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VuZFRvUGhhcm1hY3lDaGFuZ2UoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3kpXHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZW5kVG9QaGFybWFjeVZhbHVlID0gXCJcIjtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZW5kVG9QaGFybWFjeUNoYW5nZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluY2x1ZGVSdHBtTW9kYWwoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy5pc1J0cG1OZXh0KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl81MC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl81MC5jb2RlKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl81MC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl81MC5tZXNzYWdlKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMpKSB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pICYmIEFycmF5LmlzQXJyYXkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uWydydHBtU3RhdGVzJ10pICYmICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb25bJ3J0cG1TdGF0ZXMnXSBhcyBhbnlbXSkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBsZXQgaXNSdHBtU3RhdGVzID0gKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvblsncnRwbVN0YXRlcyddIGFzIGFueVtdKS5pbmNsdWRlcyh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnN0YXRlKTtcclxuICAgICAgICAgICAgaWYgKGlzUnRwbVN0YXRlcykge1xyXG4gICAgICAgICAgICAgIHZhciBkYXRhID0gXCJUaGUgc2VsZWN0ZWQgZHJ1ZyBjb21lcyB1bmRlciBSZWFsIFRpbWUgUHJlc2NyaXB0aW9uIE1vbml0b3JpbmcgKFJUUE0pIGluIFwiICsgdGhpcy5nZXRTdGF0ZU5hbWVGcm9tU3RhdGVDb2RlKHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuc3RhdGUpICsgXCIuIFBsZWFzZSByZXZpZXcuXCJcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRpYWxvZ29wZW4oUmVhbFRpbWVQcmVzY3JpcHRpb25Nb25pdG9yaW5nQ29tcG9uZW50LCB0aGlzLmNvbnRlbnQsIGRhdGEpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuaXNSdHBtTmV4dCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByZXNjcmliZURyb3Bkb3duKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVEcm9wZG93bigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnByZXNjcmliZURyb3Bkb3duKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlRHJvcGRvd24oKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5wcmVzY3JpYmVEcm9wZG93bigpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImluY2x1ZGVSdHBtTW9kYWxcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBFcHJlc2NyaXBlU2VuZChmbGFnOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5lUHJlc2NyaXB0aW9uVmFsaWRhdGlvbihmbGFnKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0VHlwZSA9ICdFJztcclxuICAgICAgICB0aGlzLnNlbGVjdFBCVE5Ecm9wZG93biA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuYWJvcnRkaXNhYmxlID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKGZsYWcgPT0gMikge1xyXG4gICAgICAgICAgdGhpcy5pc2VwcmlzY3JpYmVwcmludCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICBpZiAodGhpcy5zaG93QXV0aG9yaXR5Qm94KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMsIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMsIHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHksIHRoaXMuY29tbW9uU2VydmljZXMudW5saXN0ZWRSQSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUy50b0xvd2VyQ2FzZSgpID09PSBcInBic1wiICYmIHRoaXMuZ2V0U3RhdGVDb2RlRnJvbVN0YXRlTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnN0YXRlKS50b1VwcGVyQ2FzZSgpID09IFwiTlNXXCIpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihQYXNzd29yZENvbXBvbmVudCwgdGhpcy5jb250ZW50LCAxKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3kgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuZW1lcmdlbmN5U3VwcGx5ICYmIGZsYWcgIT0gMikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5Db25maXJtUGF0aWVudFBvcHVwKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5BZGRyZXNzU2VuZFRvQWRkVHlwZSA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4bnVtYmVyID0gXCJcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhlbWFpbElkID0gXCJcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNQcmludEF2YWlsYWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByZXNjcmliZU1lZCgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5ICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLmVtZXJnZW5jeVN1cHBseSAmJiBmbGFnICE9IDIpIHtcclxuICAgICAgICAgICAgdGhpcy5Db25maXJtUGF0aWVudFBvcHVwKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5BZGRyZXNzU2VuZFRvQWRkVHlwZSA9IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhudW1iZXIgPSBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4ZW1haWxJZCA9IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNQcmludEF2YWlsYWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdmFyIHNjaGVkdWxlTnVtYmVyID0gIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0ID8gKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wb2lzb25DbGFzc2lmaWNhdGlvbikgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24ucG9pc29uQ2xhc3NlcykgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uLnBvaXNvbkNsYXNzZXMubGVuZ3RoICE9IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24ucG9pc29uQ2xhc3Nlc1swXSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24ucG9pc29uQ2xhc3Nlc1swXS50b0xvd2VyQ2FzZSgpID09ICd1bnNjaGVkdWxlZCcgPyAnJyA6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wb2lzb25DbGFzc2lmaWNhdGlvbi5wb2lzb25DbGFzc2VzWzBdIDogJycpIDogXCJcIjtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCAmJiBzY2hlZHVsZU51bWJlci50b0xvd2VyQ2FzZSgpID09ICdzOCcgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLmlzUGFzc3dvcmRDaGVjaykge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihQYXNzd29yZENvbXBvbmVudCwgdGhpcy5jb250ZW50LCAyKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlQ29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJlc2NyaWJlTWVkKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVNZWQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIkVwcmVzY3JpcGVTZW5kXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgUGFwZXJwcmVzY3JpcGVTZW5kKGZsYWc6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHRUeXBlID0gJ00nO1xyXG4gICAgICB0aGlzLnNlbGVjdFBCVE5Ecm9wZG93biA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmFib3J0ZGlzYWJsZSA9IGZhbHNlO1xyXG4gICAgICBpZiAoZmxhZyA9PSAyKSB7XHJcbiAgICAgICAgdGhpcy5pc2VwcmlzY3JpYmVwcmludCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICBpZiAodGhpcy5zaG93QXV0aG9yaXR5Qm94KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMsIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMsIHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHksIHRoaXMuY29tbW9uU2VydmljZXMudW5saXN0ZWRSQSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUy50b0xvd2VyQ2FzZSgpID09PSBcInBic1wiICYmIHRoaXMuZ2V0U3RhdGVDb2RlRnJvbVN0YXRlTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnN0YXRlKS50b1VwcGVyQ2FzZSgpID09IFwiTlNXXCIpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRpYWxvZ29wZW4oUGFzc3dvcmRDb21wb25lbnQsIHRoaXMuY29udGVudCwgMSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5zZW5kVG9QaGFybWFjeSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5lbWVyZ2VuY3lTdXBwbHkgJiYgZmxhZyAhPSAyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuQ29uZmlybVBhdGllbnRQb3B1cCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuQWRkcmVzc1NlbmRUb0FkZFR5cGUgPSBcIlwiO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhudW1iZXIgPSBcIlwiO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhlbWFpbElkID0gXCJcIjtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzUHJpbnRBdmFpbGFibGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB0aGlzLnByZXNjcmliZU1lZCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5ICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLmVtZXJnZW5jeVN1cHBseSAmJiBmbGFnICE9IDIgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5pc1NjcmlwdFRvUGhhcm1hY3kgPT0gMCkge1xyXG4gICAgICAgICAgdGhpcy5Db25maXJtUGF0aWVudFBvcHVwKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5BZGRyZXNzU2VuZFRvQWRkVHlwZSA9IFwiXCI7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4bnVtYmVyID0gXCJcIjtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhlbWFpbElkID0gXCJcIjtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmlzU2NyaXB0VG9QaGFybWFjeSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNQcmludEF2YWlsYWJsZSA9IHRydWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzUHJpbnRBdmFpbGFibGUgPSBmYWxzZTtcclxuICAgICAgICAgIH0gICAgIFxyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdmFyIHNjaGVkdWxlTnVtYmVyID0gIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0ID8gKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wb2lzb25DbGFzc2lmaWNhdGlvbikgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24ucG9pc29uQ2xhc3NlcykgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uLnBvaXNvbkNsYXNzZXMubGVuZ3RoICE9IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24ucG9pc29uQ2xhc3Nlc1swXSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24ucG9pc29uQ2xhc3Nlc1swXS50b0xvd2VyQ2FzZSgpID09ICd1bnNjaGVkdWxlZCcgPyAnJyA6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wb2lzb25DbGFzc2lmaWNhdGlvbi5wb2lzb25DbGFzc2VzWzBdIDogJycpIDogXCJcIjtcclxuICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QgJiYgc2NoZWR1bGVOdW1iZXIudG9Mb3dlckNhc2UoKSA9PSAnczgnICYmIHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy5pc1Bhc3N3b3JkQ2hlY2spIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKFBhc3N3b3JkQ29tcG9uZW50LCB0aGlzLmNvbnRlbnQsIDIpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlQ29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByZXNjcmliZU1lZCgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnByZXNjcmliZU1lZCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJFcHJlc2NyaXBlU2VuZFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIENvbmZpcm1QYXRpZW50UG9wdXAoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRpYWxvZ29wZW4oQ29uZmlybVBhdGllbnRDb250YWN0RGV0YWlsc0NvbXBvbmVudCwgdGhpcy5jb250ZW50LCAxKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2UgIT0gbnVsbCkge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnNjaGVkdWxlTnVtYmVyLnRvTG93ZXJDYXNlKCkgPT0gJ3M4JyAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMuaXNQYXNzd29yZENoZWNrKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihQYXNzd29yZENvbXBvbmVudCwgdGhpcy5jb250ZW50LCAyKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc1ByaW50QXZhaWxhYmxlID0gcmVzcG9uc2UuaXNQcmludEF2YWlsYWJsZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuQWRkcmVzc1NlbmRUb0FkZFR5cGUgPSByZXNwb25zZS5BZGRyZXNzU2VuZFRvQWRkVHlwZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhudW1iZXIgPSByZXNwb25zZS5yeG51bWJlcjtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhlbWFpbElkID0gcmVzcG9uc2UucnhlbWFpbElkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVNZWQoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc1ByaW50QXZhaWxhYmxlID0gcmVzcG9uc2UuaXNQcmludEF2YWlsYWJsZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5BZGRyZXNzU2VuZFRvQWRkVHlwZSA9IHJlc3BvbnNlLkFkZHJlc3NTZW5kVG9BZGRUeXBlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4bnVtYmVyID0gcmVzcG9uc2UucnhudW1iZXI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhlbWFpbElkID0gcmVzcG9uc2UucnhlbWFpbElkO1xyXG4gICAgICAgICAgICB0aGlzLnByZXNjcmliZU1lZCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdFR5cGUgPSAnJztcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNQcmludEF2YWlsYWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5BZGRyZXNzU2VuZFRvQWRkVHlwZSA9IFwiXCI7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4bnVtYmVyID0gXCJcIjtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhlbWFpbElkID0gXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJDb25maXJtUGF0aWVudFBvcHVwXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJlc2NyaXBlUHJpbnQoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoKHRoaXMuY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmlwdGlvbiA9PT0gdHJ1ZSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzPy5zY3JpcHRUeXBlKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLnRvVXBwZXJDYXNlKCkgPT0gJ00nICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHM/LnN0YXR1cykgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzLnRvTG93ZXJDYXNlKCkgIT0gJ2RyYWZ0JykgfHwgKHRoaXMuY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmlwdGlvbiA9PT0gdHJ1ZSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzPy5zY3JpcHRUeXBlKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLnRvVXBwZXJDYXNlKCkgPT0gJ0UnKSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmFib3J0ZGlzYWJsZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdFR5cGUgPSAnTSc7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNQcmludEF2YWlsYWJsZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuQWRkcmVzc1NlbmRUb0FkZFR5cGUgPSBcIlNNU1wiO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHZhciBzY2hlZHVsZU51bWJlciA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCA/ICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24pICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uLnBvaXNvbkNsYXNzZXMpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wb2lzb25DbGFzc2lmaWNhdGlvbi5wb2lzb25DbGFzc2VzLmxlbmd0aCAhPSAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uLnBvaXNvbkNsYXNzZXNbMF0pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uLnBvaXNvbkNsYXNzZXNbMF0udG9Mb3dlckNhc2UoKSA9PSAndW5zY2hlZHVsZWQnID8gJycgOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24ucG9pc29uQ2xhc3Nlc1swXSA6ICcnKSA6IFwiXCI7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QgJiYgc2NoZWR1bGVOdW1iZXIudG9Mb3dlckNhc2UoKSA9PSAnczgnICYmIHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy5pc1Bhc3N3b3JkQ2hlY2spIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRpYWxvZ29wZW4oUGFzc3dvcmRDb21wb25lbnQsIHRoaXMuY29udGVudCwyKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlQ29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMucHJlc2NyaWJlTWVkKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5wcmVzY3JpYmVNZWQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJwcmVzY3JpcGVQcmludFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluZGljYXRpb25BdXRob3JpdHkobWF4UXR5VW5pdHM6IGFueSwgcXVhbnRpdHlWYWw6IGFueSwgcmVwZWF0czogYW55LCByZXBlYXRzVmFsOiBhbnksIGluZGV4OiBhbnksIHJlc3RyaWN0aW9uOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cykgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzLnRvTG93ZXJDYXNlKCkgPT0gJ3ByZXNjcmliZWQnICYmIHRoaXMuY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24pIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zID0gJyc7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdmFyIHRlbXBEaXZFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIHZhciByZXBsYWNldmFsdWUgPSB0aGlzLmh0bWxUb0Zvcm1hdHRlZFRleHQocmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25UZXh0KTtcclxuICAgICAgdGVtcERpdkVsZW1lbnQuaW5uZXJIVE1MID0gcmVwbGFjZXZhbHVlO1xyXG4gICAgICB2YXIgdmFsdWUgPSB0ZW1wRGl2RWxlbWVudC50ZXh0Q29udGVudCB8fCB0ZW1wRGl2RWxlbWVudC5pbm5lclRleHQgfHwgJyc7XHJcbiAgICAgIGlmICgoIXRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlXaXRoVW5pdEZsYWcgPyBwYXJzZUZsb2F0KG1heFF0eVVuaXRzKSA6IDEpIDwgcGFyc2VJbnQocXVhbnRpdHlWYWwpIHx8IHBhcnNlSW50KHJlcGVhdHMpIDwgcGFyc2VJbnQocmVwZWF0c1ZhbCkpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnMgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnNJZCA9IGluZGV4O1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuYXBwcm92YWxObyA9ICcnO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnMgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnNJZCA9IGluZGV4O1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuYXBwcm92YWxObyA9IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiAhPSBudWxsID8gcmVzdHJpY3Rpb24uc3RyZWFtbGluZWRDb2RlIDogJyc7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImluZGljYXRpb25BdXRob3JpdHlcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRNYXhRdWFudGl0eSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucGJzVHlwZSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic1R5cGUudG9Mb3dlckNhc2UoKSA9PSBcIm5vbiBwYnNcIikge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubnVtYmVyT2ZQYWNrICsgXCJ4XCIgKyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24udW5pdFBlclBhY2s7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0ICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5udW1iZXJPZlBhY2spICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ubnVtYmVyT2ZQYWNrICE9IDApIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubnVtYmVyT2ZQYWNrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/Lm1heFF0eVVuaXRzKSlcclxuICAgICAgICAgIHJldHVybiAodGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVdpdGhVbml0RmxhZyA/IFwiMSB4IFwiIDogXCJcIikgKyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHNcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRNYXhRdWFudGl0eVwiKTtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXREZWZhdWx0UXVhbnRpdHkoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/Lm51bWJlck9mUGFjaykgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5udW1iZXJPZlBhY2sgIT0gMCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubnVtYmVyT2ZQYWNrO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ubWF4UXR5VW5pdHMpKSB7XHJcbiAgICAgICAgcmV0dXJuICh0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5V2l0aFVuaXRGbGFnID8gXCIxIHggXCIgOiBcIlwiKSArIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tYXhRdHlVbml0c1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXREZWZhdWx0UXVhbnRpdHlcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIG9uSW5wdXRDaGFuZ2UobmV3VmFsdWU6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zID0gbmV3VmFsdWU7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwib25JbnB1dENoYW5nZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uSW5wdXRjaGFuZ2VBcHByb3ZhbE5vKG5ld1ZhbHVlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5hcHByb3ZhbE5vID0gbmV3VmFsdWUucmVwbGFjZSgvW15hLXpBLVogMC05XS9nLCBcIlwiKS5yZXBsYWNlKC9cXHMrL2csIFwiXCIpO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIm9uSW5wdXRjaGFuZ2VBcHByb3ZhbE5vXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0QWRkQXV0aFZhbHVlKG51bTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShudW0pKSB7XHJcbiAgICAgICAgY29uc3QgYXJyT2ZEaWdpdHMgPSBBcnJheS5mcm9tKFN0cmluZyhudW0pLCBOdW1iZXIpO1xyXG4gICAgICAgIGxldCB2YWx1ZU9mQXV0aG9yaXR5QXJyID0gdGhpcy5hZGRBdXRoVmFsdWUoYXJyT2ZEaWdpdHMpO1xyXG4gICAgICAgIGxldCBnZXRSZW1haW5kZXJWYWx1ZSA9IHZhbHVlT2ZBdXRob3JpdHlBcnIgJSA5O1xyXG4gICAgICAgIGxldCBhZGRSZW1haW5kZXJWYWx1ZUF0TGFzdCA9ICcnICsgbnVtICsgZ2V0UmVtYWluZGVyVmFsdWUudG9GaXhlZCgpO1xyXG4gICAgICAgIHJldHVybiBhZGRSZW1haW5kZXJWYWx1ZUF0TGFzdDtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRBZGRBdXRoVmFsdWVcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkQXV0aFZhbHVlKGFyck9mRGlnaXRzOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGxldCBhZGRlZFZhbHVlID0gMDtcclxuICAgICAgYXJyT2ZEaWdpdHMubWFwKChudW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGFkZGVkVmFsdWUgPSBudW0gKyBhZGRlZFZhbHVlO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIGFkZGVkVmFsdWU7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImFkZEF1dGhWYWx1ZVwiKTtcclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL3RoZSBiZWxvdyBjb2RlIHdpbGwgaGl0IHRoZSBlUlggYW5kIHJldHVybiB0aGUgdmFsdWUgd2l0aCBiYXJjb2RlXHJcbiAgcHJlc2NyaWJlTWVkKCkge1xyXG4gICAgdmFyIGJvZHkgPSB7fTtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLnNob3dBdXRob3JpdHlCb3godGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucywgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUywgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEF1dGhvcml0eSwgdGhpcy5jb21tb25TZXJ2aWNlcy51bmxpc3RlZFJBKSA9PSB0cnVlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8pKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl81My5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl81My5jb2RlKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl81My5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl81My5tZXNzYWdlKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0VHlwZS50b0xvd2VyQ2FzZSgpID09IFwiZVwiKSB7XHJcbiAgICAgICAgdGhpcy5hYm9ydEJ0bkZsYWcgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2VsZWN0UEJUTkRyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSB0cnVlO1xyXG4gICAgICB2YXIgcGF0aWVudERldGFpbHMgPSB0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzO1xyXG4gICAgICB2YXIgcGh5c2ljaWFuRGV0YWlscyA9IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscztcclxuICAgICAgdmFyIHNlbGVjdGVkRm9ybXVsYXRpb24gPSB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb247XHJcbiAgICAgIHZhciBtZWRpY2FyZUNhcmQgPSAnJztcclxuICAgICAgaWYgKHBhdGllbnREZXRhaWxzLm1lZGljYXJlTnVtYmVyKSB7XHJcbiAgICAgICAgdmFyIG1lZE5vMSA9IHBhdGllbnREZXRhaWxzLm1lZGljYXJlTnVtYmVyLnJlcGxhY2UoLyAvZywgJycpO1xyXG4gICAgICAgIG1lZE5vMSA9IG1lZE5vMS5yZXBsYWNlKC9fL2csICcnKTtcclxuICAgICAgICBtZWRObzEgPSBtZWRObzEucmVwbGFjZSgvLS9nLCAnJyk7XHJcbiAgICAgICAgbWVkaWNhcmVDYXJkID0gbWVkTm8xO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBwYnNNYW51ZmFjdHVyZXJDb2RlU2V0ID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24/LnBic01hbnVmYWN0dXJlckNvZGVzKSAmJiBzZWxlY3RlZEZvcm11bGF0aW9uLnBic01hbnVmYWN0dXJlckNvZGVzLmxlbmd0aCAhPSAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNNYW51ZmFjdHVyZXJDb2Rlc1swXSkgPyBzZWxlY3RlZEZvcm11bGF0aW9uLnBic01hbnVmYWN0dXJlckNvZGVzWzBdIDogJyc7XHJcbiAgICAgIGxldCBjaGVja0F1dGhvcml0eUJveCA9IHRoaXMuc2hvd0F1dGhvcml0eUJveChzZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucywgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUywgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEF1dGhvcml0eSwgdGhpcy5jb21tb25TZXJ2aWNlcy51bmxpc3RlZFJBKTtcclxuICAgICAgYm9keSA9IHtcclxuICAgICAgICBpc1Nob3dBdXRob3JpdHk6IHRoaXMuY29tbW9uU2VydmljZXMuaXNTaG93QXV0aG9yaXR5LFxyXG4gICAgICAgIHBic0xpc3RJbnN0cnVjdGlvbnM6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zKSA/IHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9ucyA6IFwiXCIsXHJcbiAgICAgICAgaXNCcmFuZE5hbWU6IHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUsXHJcbiAgICAgICAgaW5jbHVkZUJyYW5kRmxhZzogdGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSxcclxuICAgICAgICByZXN0cmljdGVkUGJzU2VsZWN0ZWRJbmRleDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnNJZCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnNJZCArIDEgOiAnJyxcclxuICAgICAgICByeElkOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhpZCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4aWQgOiAnJyxcclxuICAgICAgICBtQVBhdGllbnRJZDogdGhpcy5jb21tb25TZXJ2aWNlcy52ZW5kb3JQYXRpZW50SWQsXHJcbiAgICAgICAgbUFQaGFybWFjaXN0SWQ6IHRoaXMuY29tbW9uU2VydmljZXMudmVuZG9yUGh5c2ljaWFuSWQsXHJcbiAgICAgICAgbUFGYWNpbGl0eUlkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnZlbmRvckZhY2lsaXR5SWQsXHJcbiAgICAgICAgcHJpdmFjeVN0YXRlbWVudDogdGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHRUeXBlLnRvTG93ZXJDYXNlKCkgPT0gJ2UnID8gMCA6IDEsXHJcbiAgICAgICAgaHBpSTogcGh5c2ljaWFuRGV0YWlscy5ocGlpTnVtYmVyLFxyXG4gICAgICAgIHByZXNjcmliZXJOdW1iZXI6IHBoeXNpY2lhbkRldGFpbHMucHJlc2NyaWJlck51bWJlcixcclxuICAgICAgICBwcmVzY3JpYmVyQWhwcmFOdW1iZXI6IHBoeXNpY2lhbkRldGFpbHMucHJlc2NyaWJlckFocHJhTnVtYmVyLFxyXG4gICAgICAgIHByZXNjcmliZXJHaXZlbk5hbWVzOiBwaHlzaWNpYW5EZXRhaWxzLmZpcnN0TmFtZSxcclxuICAgICAgICBwcmVzY3JpYmVyRmFtaWx5TmFtZTogcGh5c2ljaWFuRGV0YWlscy5sYXN0TmFtZSxcclxuICAgICAgICBwcmVzY3JpYmVySG9tZU1vYmlsZTogcGh5c2ljaWFuRGV0YWlscy5tb2JpbGVQaG9uZSxcclxuICAgICAgICBwcmVzY3JpYmVySG9tZUVtYWlsOiBwaHlzaWNpYW5EZXRhaWxzLmVtYWlsLFxyXG4gICAgICAgIG9yZ0hwaU86ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMuaHBpb051bWJlcikgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5ocGlvTnVtYmVyIDogJycsXHJcbiAgICAgICAgb3JnTmFtZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdOYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ05hbWUgOiAnJyxcclxuICAgICAgICBvcmdFbWFpbDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdFbWFpbCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdFbWFpbCA6ICcnLFxyXG4gICAgICAgIG9yZ1Bvc3RhbEFkZHJlc3NMaW5lMTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzTGluZTEpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUG9zdGFsQWRkcmVzc0xpbmUxIDogJycsXHJcbiAgICAgICAgb3JnUG9zdGFsQWRkcmVzc0xpbmUyOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NMaW5lMikgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzTGluZTIgOiAnJyxcclxuICAgICAgICBvcmdQb3N0YWxBZGRyZXNzU3VidXJiOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NTdWJ1cmIpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUG9zdGFsQWRkcmVzc1N1YnVyYiA6ICcnLFxyXG4gICAgICAgIG9yZ1Bvc3RhbEFkZHJlc3NQb3N0Q29kZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzUG9zdENvZGUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUG9zdGFsQWRkcmVzc1Bvc3RDb2RlIDogJycsXHJcbiAgICAgICAgb3JnUG9zdGFsQWRkcmVzc1N0YXRlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NTdGF0ZSkgPyB0aGlzLmdldFN0YXRlQ29kZUZyb21TdGF0ZU5hbWUodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUG9zdGFsQWRkcmVzc1N0YXRlKSA6ICcnLFxyXG4gICAgICAgIGloaTogcGF0aWVudERldGFpbHMuaWhpTnVtYmVyLFxyXG4gICAgICAgIG1lZGljYXJlTnVtYmVyOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG1lZGljYXJlQ2FyZCkgPyB0aGlzLmVyeE1lZGljYXJlQ2FyZChtZWRpY2FyZUNhcmQpIDogJycsXHJcbiAgICAgICAgbWVkaWNhcmVJcm46ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkobWVkaWNhcmVDYXJkKSA/IHRoaXMuZXJ4TWVkaWNhcmVJUk4obWVkaWNhcmVDYXJkKSA6ICcnLFxyXG4gICAgICAgIG1lZGljYXJlTnVtYmVyRXhwaXJ5OiBwYXRpZW50RGV0YWlscy5tZWRpY2FyZUV4cGlyeSxcclxuICAgICAgICBkYXRlT2ZCaXJ0aDogdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0ocGF0aWVudERldGFpbHMuZG9iLCAneXl5eS1NTS1kZCcpLFxyXG4gICAgICAgIGZhbWlseU5hbWU6IHBhdGllbnREZXRhaWxzLmxhc3ROYW1lLFxyXG4gICAgICAgIGdpdmVuTmFtZXM6IHBhdGllbnREZXRhaWxzLmZpcnN0TmFtZSxcclxuICAgICAgICBwYXRpZW50VXNlcklkU3RyaW5nOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnBhdGllbnRVc2VySWQsXHJcbiAgICAgICAgdXNlcklkU3RyaW5nOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMudXNlcklkLFxyXG4gICAgICAgIGdlbmRlckNvZGU6IHRoaXMuZ2V0R2VuZGVyQ29kZShwYXRpZW50RGV0YWlscy5nZW5kZXIpLFxyXG4gICAgICAgIGhvbWVNb2JpbGU6IHBhdGllbnREZXRhaWxzLnBob25lLFxyXG4gICAgICAgIGhvbWVFbWFpbDogcGF0aWVudERldGFpbHMuZW1haWwsXHJcbiAgICAgICAgYWRkcmVzc0xpbmUxOiBwYXRpZW50RGV0YWlscy5hZGRyZXNzMSxcclxuICAgICAgICBhZGRyZXNzTGluZTI6IHBhdGllbnREZXRhaWxzLmFkZHJlc3MyLFxyXG4gICAgICAgIGFkZHJlc3NTdWJ1cmI6IHBhdGllbnREZXRhaWxzLmNpdHksXHJcbiAgICAgICAgYWRkcmVzc1Bvc3RDb2RlOiBwYXRpZW50RGV0YWlscy5wb3N0Q29kZSxcclxuICAgICAgICBhZGRyZXNzU3RhdGU6IHRoaXMuZ2V0U3RhdGVDb2RlRnJvbVN0YXRlTmFtZShwYXRpZW50RGV0YWlscy5zdGF0ZSksXHJcbiAgICAgICAgcHJlc2NyaXB0aW9uV3JpdHRlbkRhdGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHREYXRlKSA/IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0RGF0ZSwgJ3l5eXktTU0tZGQnKSA6IFwiXCIsXHJcbiAgICAgICAgZm9ybVRleHQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZG9zYWdlRm9ybSkgPyBzZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0gOiBcIlwiLFxyXG4gICAgICAgIHN0cmVuZ3RoOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24/Lm1vbGVjdWxlU3RyZW5ndGgpID8gc2VsZWN0ZWRGb3JtdWxhdGlvbi5tb2xlY3VsZVN0cmVuZ3RoIDogXCIgXCIsXHJcbiAgICAgICAgZGlyZWN0aW9uczogdGhpcy5nZXREaXJlY3Rpb25zKCksXHJcbiAgICAgICAgYnJhbmRTdWJzdGl0dXRlc05vdEFsbG93ZWQ6IHRoaXMuY29tbW9uU2VydmljZXMuQnJhbmRTdWJzdGl0dXRlc05vdEFsbG93ID09IHRydWUgPyAwIDogMSxcclxuICAgICAgICBtYXhpbXVtTnVtYmVyT2ZSZXBlYXRzOiB0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwsXHJcbiAgICAgICAgbWluaW11bUludGVydmFsQmV0d2VlblJlcGVhdHM6IHRoaXMuY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwgIT0gdW5kZWZpbmVkICYmIHRoaXMuY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwgIT0gbnVsbCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsICE9IFwiXCIgPyBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsKSA6IFwiLTFcIixcclxuICAgICAgICBwYXRpZW50Q3RnRmxhZzogdGhpcy5jb21tb25TZXJ2aWNlcy5DVEdDb1BheW1lbnQgPT0gdHJ1ZSA/IDAgOiAxLFxyXG4gICAgICAgIHBic0l0ZW1Db2RlQ29kZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LnBic0NvZGUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic0NvZGUgOiBcIlwiLFxyXG4gICAgICAgIHBic0l0ZW1Db2RlVGV4dDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LnBic0NvZGVUZXh0KSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNDb2RlVGV4dCA6IFwiXCIsXHJcbiAgICAgICAgcGJzSXRlbU1hbnVmYWN0dXJlcjogdGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSA/IHBic01hbnVmYWN0dXJlckNvZGVTZXQgOiAnJyxcclxuICAgICAgICBzdGF0ZUF1dGhvcml0eU51bWJlcjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLlN0YXRlQXV0aG9yaXR5TnVtYmVyKSA/IHRoaXMuY29tbW9uU2VydmljZXMuU3RhdGVBdXRob3JpdHlOdW1iZXIudHJpbSgpIDogJycsXHJcbiAgICAgICAgcmVhc29uRm9yVGhlcmFwZXV0aWNHb29kOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaXB0aW9uUmVhc29uKSA/IHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaXB0aW9uUmVhc29uLnRyaW0oKSA6ICcnLFxyXG4gICAgICAgIHVudXN1YWxRdHlGbGFnOiB0aGlzLnNldFVudXN1YWxRdHlGbGFnKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiwgdGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbCwgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyksXHJcbiAgICAgICAgcXVhbnRpdHlPZlRoZXJhcGV1dGljR29vZFF1YW50aXR5OiBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsKSxcclxuICAgICAgICBjb21wbGV4SW5zdHJ1Y3Rpb25zOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUudHJpbSgpIDogXCJcIixcclxuICAgICAgICBhbXRNcHBDb2RlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uQU1UTVBQQ29kZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uQU1UTVBQQ29kZSA6IFwiXCIsXHJcbiAgICAgICAgYW10TXBwTmFtZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmFtdCkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdC5sZW5ndGggIT0gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0ubXBwcykgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS5tcHBzLmxlbmd0aCAhPSAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS5tcHBzWzBdLm1wcE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS5tcHBzWzBdLm1wcE5hbWUgOiAnJyxcclxuICAgICAgICBhbXRUcHBDb2RlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uQU1UVFBQQ29kZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uQU1UVFBQQ29kZSA6IFwiXCIsXHJcbiAgICAgICAgYW10VHBwTmFtZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmFtdCkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdC5sZW5ndGggIT0gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBwcykgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cHBzLmxlbmd0aCAhPSAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cHBzWzBdLnRwcE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cHBzWzBdLnRwcE5hbWUgOiAnJyxcclxuICAgICAgICBhbXRUcENvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5BTVRUUENvZGUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLkFNVFRQQ29kZSA6IFwiXCIsXHJcbiAgICAgICAgYW10VHBOYW1lOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uYW10KSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10Lmxlbmd0aCAhPSAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cE5hbWUgOiAnJyxcclxuICAgICAgICBhbXRDb2RlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uYW10KSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXQuYW10Y29kZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10LmFtdGNvZGUgOiAnJyxcclxuICAgICAgICB0aGVyZXBldXRpY0dvb2RJZGVudGlmaWNhdGlvbk1pbXNDb2RlOiAnJyxcclxuICAgICAgICB0aGVyZXBldXRpY0dvb2RJZGVudGlmaWNhdGlvbkxvY2FsQ29kZTogJycsXHJcbiAgICAgICAgLy8gdGhlcmVwZXV0aWNHb29kSWRlbnRpZmljYXRpb25FYW5Db2RlOiBcIlwiLFxyXG4gICAgICAgIHRoZXJlcGV1dGljR29vZElkZW50aWZpY2F0aW9uRWFuVGV4dDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzVHlwZSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic1R5cGUudG9Mb3dlckNhc2UoKSA9PSAnbm9uIHBicycgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lIDogJycsXHJcbiAgICAgICAgcHJlc2NyaWJlck9jY3VwYXRpb25Db2RlOiBwaHlzaWNpYW5EZXRhaWxzLm9jY3VwYXRpb25Db2RlLFxyXG4gICAgICAgIHByZXNjcmliZXJPY2N1cGF0aW9uVGV4dDogcGh5c2ljaWFuRGV0YWlscy5vY2N1cGF0aW9uVGV4dCxcclxuICAgICAgICBwcmVzY3JpYmVyUGVyc29uVGl0bGU6IHBoeXNpY2lhbkRldGFpbHMucHJlZml4LFxyXG4gICAgICAgIHByZXNjcmliZXJRdWFsaWZpY2F0aW9uczogcGh5c2ljaWFuRGV0YWlscy5zdWZmaXgsXHJcbiAgICAgICAgb3JnUGhvbmU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnTW9iaWxlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ01vYmlsZSA6ICcnLFxyXG4gICAgICAgIG9yZ0ZheDogJycsXHJcbiAgICAgICAgbG9jYWxTeXN0ZW1JRDogdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5wYXRpZW50VXNlcklkLFxyXG4gICAgICAgIGFkZHJlc3NTZW5kVG9BZGRUeXBlOiB0aGlzLmNvbW1vblNlcnZpY2VzLkFkZHJlc3NTZW5kVG9BZGRUeXBlLFxyXG4gICAgICAgIGFkZHJlc3NFbWFpbDogdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhlbWFpbElkKSA/IHBhdGllbnREZXRhaWxzLmVtYWlsIDogdGhpcy5jb21tb25TZXJ2aWNlcy5yeGVtYWlsSWQsXHJcbiAgICAgICAgYWRkcmVzc1NtczogdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhudW1iZXIpID8gcGF0aWVudERldGFpbHMucGhvbmUgOiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4bnVtYmVyLFxyXG4gICAgICAgIGdlbmRlclRleHQ6IHRoaXMuZ2V0R2VuZGVyKHBhdGllbnREZXRhaWxzLmdlbmRlciksXHJcbiAgICAgICAgYWRkcmVzc0xpbmUzOiAnJyxcclxuICAgICAgICBwcmVzY3JpcHRpb25Xcml0dGVuVXRjVGltZTogJzAxLTAxLTE5NzAgMDk6MDY6MDknLCAvLyBwcmVzY3JpcHRpb25Xcml0dGVuVXRjVGltZTogbW9tZW50KG5ldyBEYXRlKCkpLmZvcm1hdChcIk1NLURELXl5eXkgaGg6bW06c3NcIiksXHJcbiAgICAgICAgcHJlc2NyaXB0aW9uV3JpdHRlblV0Y09mZnNldDogdGhpcy5nZXRPZmZzZXQoKSxcclxuICAgICAgICBwcmVzY3JpcHRpb25FeHBpcmVzVmFsdWU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5lbmREYXRlKSA/IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuY29tbW9uU2VydmljZXMuZW5kRGF0ZSwgJ01NL2RkL3l5eXknKSA6IFwiXCIsXHJcbiAgICAgICAgYWN0aXZlSW5ncmVkaWVudDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZ2VuZXJpY05hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmdlbmVyaWNOYW1lIDogXCJcIixcclxuICAgICAgICBmb3JtQ29kZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybSA6IFwiXCIsXHJcbiAgICAgICAgZm9ybXVsYTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZm9ybXVsYSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZm9ybXVsYSA6IFwiXCIsXHJcbiAgICAgICAgYWRkaXRpb25hbENvbW1lbnRzOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZG9jdG9yTm90ZXMpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5kb2N0b3JOb3Rlcy50cmltKCkgOiBcIlwiLFxyXG4gICAgICAgIGFzbENvbnNlbnQ6IDEsXHJcbiAgICAgICAgcHJlc2NyaXB0aW9uTm90ZURldGFpbE5vdGU6IHRoaXMuY29tbW9uU2VydmljZXMucHVycG9zZVNlYXJjaFZhbHVlLnRyaW0oKSxcclxuICAgICAgICBkdmFOdW1iZXI6IHBhdGllbnREZXRhaWxzLmR2YU51bWJlcixcclxuICAgICAgICBkdmFUeXBlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuZHZhQ2FyZFR5cGUpICYmIHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuZHZhQ2FyZFR5cGUudG9Mb3dlckNhc2UoKSAhPSAnbm9uZScgPyBwYXRpZW50RGV0YWlscy5kdmFDYXJkVHlwZS5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpIDogJycsXHJcbiAgICAgICAgcGJzQXBwcm92YWxOdW1iZXI6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5hcHByb3ZhbE5vKSA/IHRoaXMuY29tbW9uU2VydmljZXMuYXBwcm92YWxOby50cmltKCkgOiAnJywgLy9pbmZvcm0gdG8gc3RlcGhlblxyXG4gICAgICAgIHJvdXRlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucm91dGVTZWFyY2hWYWx1ZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnJvdXRlU2VhcmNoVmFsdWUudHJpbSgpIDogJycsXHJcbiAgICAgICAgLy9wcm92aWRlck51bWJlcjonJyxcclxuICAgICAgICBwcmVzY3JpYmVyVHlwZTogcGh5c2ljaWFuRGV0YWlscy5wcmVzY3JpYmVyVHlwZSxcclxuICAgICAgICBtZWRpY2luZU5hbWU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5wcm9kdWN0TmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUgOiBcIlwiLFxyXG4gICAgICAgIGJyYW5kTmFtZTogdGhpcy5nZXRCcmFuZE5hbWUodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSxcclxuICAgICAgICBnZW5lcmljTmFtZTogdGhpcy5odG1sVG9UZXh0Q29udmVydCghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uSXNFeHRlbXApICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCA9PSB0cnVlID8gdGhpcy5nZXRFeHRlbXBUVFBOYW1lKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikgOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZ2VuZXJpY05hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmdlbmVyaWNOYW1lIDogdGhpcy5nZXRFeHRlbXBNUFBOYW1lKCkpLFxyXG4gICAgICAgIC8vaXRlbUdlbmVyaWNJbnRlbnRpb246IGdldEl0ZW1HZW5lcmljSW50ZW50aW9uKHRoaXMuc3RhdGUubGVtaSx0aGlzLnN0YXRlLmlzQnJhbmROYW1lLHRoaXMuc3RhdGUuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCA9PSB0cnVlID8gdHJ1ZSA6IGZhbHNlKSxcclxuICAgICAgICBpdGVtR2VuZXJpY0ludGVudGlvbjogdGhpcy5jb21tb25TZXJ2aWNlcy5sZW1pID09IHRydWUgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLklzRXh0ZW1wICE9IHRydWUgPyAnQicgOiAnRycsXHJcbiAgICAgICAgc2NoZWR1bGVOdW1iZXI6IHRoaXMucGF5TG9hZFN0YXRlU2NoZWR1bGVOdW1iZXIodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSAhPSBcIlwiID8gdGhpcy5wYXlMb2FkU3RhdGVTY2hlZHVsZU51bWJlcih0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pIDogdGhpcy5jb21tb25TZXJ2aWNlcy5nZXRTY2hlZHVsZU51bWJlcih0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pLFxyXG4gICAgICAgIGRvY3Rvck5vdGVzOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZG9jdG9yTm90ZXMpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5kb2N0b3JOb3Rlcy50cmltKCkgOiBcIlwiLFxyXG4gICAgICAgIHJlZ3VsYXRpb24yNDogdGhpcy5jb21tb25TZXJ2aWNlcy5yZWd1bGF0aW9uMjQgPT0gZmFsc2UgPyAxIDogMCxcclxuICAgICAgICBpc0V4dGVtcDogdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uICE9IG51bGwgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLklzRXh0ZW1wICE9IG51bGwgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gdHJ1ZSA/IDAgOiAxIDogMSxcclxuICAgICAgICAvLyBleHRlbXBvcmFuZW91c0Rlc2NyaXB0aW9uOiB0aGlzLnN0YXRlLnNlbGVjdGVkRm9ybXVsYXRpb24gIT0gbnVsbCAmJiB0aGlzLnN0YXRlLnNlbGVjdGVkRm9ybXVsYXRpb24uRXh0ZW1wb3JhbmVvdXNEZXNjcmlwdGlvbiAhPSAnJyA/IHRoaXMuc3RhdGUuc2VsZWN0ZWRGb3JtdWxhdGlvbi5FeHRlbXBvcmFuZW91c0Rlc2NyaXB0aW9uIDogJycsXHJcbiAgICAgICAgZXh0ZW1wb3JhbmVvdXNEZXNjcmlwdGlvbjogdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLklzRXh0ZW1wID09IHRydWUgPyB0aGlzLmdldEV4dGVtcFRUUE5hbWUodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSA6ICcnLFxyXG4gICAgICAgIGFubm90YXRpb246ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5hbm5vdGF0aW9uKSA/IHRoaXMuY29tbW9uU2VydmljZXMuYW5ub3RhdGlvbi50cmltKCkgOiBcIlwiLFxyXG4gICAgICAgIHVuVXN1YWxEb3NlRmxhZzogdGhpcy5jb21tb25TZXJ2aWNlcy51blVzdWFsRG9zZUZsYWcgPT0gZmFsc2UgPyAxIDogMCxcclxuICAgICAgICB0cmFkZU5hbWU6IHRoaXMuaHRtbFRvVGV4dENvbnZlcnQodGhpcy5nZXRUcmFkZU5hbWUoKSksXHJcbiAgICAgICAgLy9yZXN0cmljdGlvbnM6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMgIT0gbnVsbCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zICE9ICcnID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnJlc3RyaWN0aW9ucyA6ICcnLFxyXG4gICAgICAgIC8vIHByZXNjcmliZXJQZXJzb25UaXRsZTogcGh5c2ljaWFuRGV0YWlscy5wcmVmaXgsXHJcbiAgICAgICAgbWF4aW11bUludGVydmFsQmV0d2VlblJlcGVhdHM6ICcnLFxyXG4gICAgICAgIGNvbXBsZXhJZDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5jb21wbGV4SWQpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5jb21wbGV4SWQgOiAwLFxyXG4gICAgICAgIHZpc2l0SWQ6IHRoaXMuY29tbW9uU2VydmljZXMudmlzaXRJZCxcclxuICAgICAgICBzY3JpcHRUeXBlOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdFR5cGUsXHJcbiAgICAgICAgZG9zZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmRvc2VTZWFyY2hWYWx1ZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmRvc2VTZWFyY2hWYWx1ZSA6IFwiXCIsXHJcbiAgICAgICAgZnJlcXVlbmN5OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZnJlcVNlYXJjaFZhbHVlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZnJlcVNlYXJjaFZhbHVlIDogXCJcIixcclxuICAgICAgICBmb29kOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZm9vZFNlYXJjaFZhbHVlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZm9vZFNlYXJjaFZhbHVlIDogXCJcIixcclxuICAgICAgICBwcmVzY3JpYmVBczogdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyxcclxuICAgICAgICBwcm46IHRoaXMuY29tbW9uU2VydmljZXMucnhQUk4gPT0gZmFsc2UgPyAxIDogMCxcclxuICAgICAgICBzY3JpcHREYXRlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0RGF0ZSkgPyB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdERhdGUsICd5eXl5LU1NLWRkJykgOiBcIlwiLFxyXG4gICAgICAgIHN0YXJ0RGF0ZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnN0YXJ0RGF0ZSkgPyB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLmNvbW1vblNlcnZpY2VzLnN0YXJ0RGF0ZSwgJ01NL2RkL3l5eXknKSA6IFwiXCIsXHJcbiAgICAgICAgcHVycG9zZTogdGhpcy5jb21tb25TZXJ2aWNlcy5wdXJwb3NlU2VhcmNoVmFsdWUudHJpbSgpLFxyXG4gICAgICAgIHBic05vdGVzOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBic05vdGVzLFxyXG4gICAgICAgIGlzQWN0aXZlOiAwLFxyXG4gICAgICAgIHByb2R1Y3RJZDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LnByb2R1Y3RJZCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdElkIDogXCJcIixcclxuICAgICAgICBhbXRUZXh0OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZm9ybXVsYSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZm9ybXVsYSA6IFwiXCIsXHJcbiAgICAgICAgcXVhbnRpdHlPZlRoZXJhcGV1dGljR29vZERvc2VVbml0Q29kZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmRvc2FnZUZvcm0pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0gOiBcIlwiLFxyXG4gICAgICAgIHF1YW50aXR5T2ZUaGVyYXBldXRpY0dvb2REb3NlVW5pdFRleHQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5kb3NhZ2VGb3JtKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtIDogXCJcIixcclxuICAgICAgICBwcmVzY3JpYmVyUm9sZUNvZGU6ICcnLFxyXG4gICAgICAgIHByZXNjcmliZXJSb2xlVGV4dDogJycsXHJcbiAgICAgICAgb3JnSGljTG9jYXRpb25JZDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdIaWNMb2NhdGlvbklkKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ0hpY0xvY2F0aW9uSWQgOiAnJyxcclxuICAgICAgICBvcmdSb2xlQ29kZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdSb2xlQ29kZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdSb2xlQ29kZSA6ICcnLFxyXG4gICAgICAgIG9yZ1JvbGVUZXh0OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1JvbGVUZXh0KSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1JvbGVUZXh0IDogJycsXHJcbiAgICAgICAgYXV0aG9yaXR5QXBwcm92YWxOdW1iZXI6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5hcHByb3ZhbE5vKSA/IHRoaXMuY29tbW9uU2VydmljZXMuYXBwcm92YWxOby50cmltKCkgOiAnJyxcclxuICAgICAgICBhdXRob3JpdHlBcHByb3ZhbE51bWJlckZsYWc6IHBhcnNlRmxvYXQodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1heFF0eVVuaXRzKSA8IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwpIHx8IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5yZXBlYXRzKSA8IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCkgPyAxIDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zLmxlbmd0aCA+IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnNJZCkgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zW3RoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkXS5zdHJlYW1saW5lZENvZGUpICYmIHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnNbdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zSWRdLnN0cmVhbWxpbmVkQ29kZSkgPT0gcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5hcHByb3ZhbE5vKSA/IDAgOiAxLFxyXG4gICAgICAgIC8vIHBic0F1dGhvcml0eVByZXNjcmlwdGlvbk51bWJlcjp0aGlzLnN0YXRlLmFwcHJvdmFsTm8gPyB0aGlzLnN0YXRlLmFwcHJvdmFsTm8gOiBcIlwiLFxyXG4gICAgICAgIC8vIHN0cmVhbWxpbmVkQXV0aG9yaXR5QXBwcm92YWxOdW1iZXI6IHRoaXMuc3RhdGUuYXBwcm92YWxOb1xyXG4gICAgICAgIC8vICAgPyB0aGlzLnN0YXRlLmFwcHJvdmFsTm9cclxuICAgICAgICAvLyAgIDogXCJcIixcclxuICAgICAgICAvLyBwYnNBdXRob3JpdHlBcHByb3ZhbE51bWJlcjogXCJcIixcclxuICAgICAgICAvL2JhcmNvZGVcclxuICAgICAgICAvL3NjcmlwdE51bWJlcjogXCJcIixcclxuICAgICAgICBkaXNwbGF5TmFtZTogdGhpcy5zaHJpbmtTdXBlclNjcmlwdENvZGUodGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lKSxcclxuICAgICAgICBlb3BEaXNwbGF5TmFtZTogdGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHRUeXBlLnRvTG93ZXJDYXNlKCkgPT0gXCJlXCIgPyB0aGlzLnNocmlua1N1cGVyU2NyaXB0Q29kZSh0aGlzLmNvbW1vblNlcnZpY2VzLmVvcERpc3BsYXlOYW1lKSA6IHRoaXMuc2hyaW5rU3VwZXJTY3JpcHRDb2RlKHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZSksXHJcbiAgICAgICAgaXRlbVN0cmVuZ3RoWG1sOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uSXRlbVN0cmVuZ3RoWG1sKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5JdGVtU3RyZW5ndGhYbWwgOiBcIiBcIixcclxuICAgICAgICAvL2F1dGhvcml0eVZhbHVlXHJcbiAgICAgICAgcGJzRHZhQXV0aG9yaXR5TnVtYmVyOiBjaGVja0F1dGhvcml0eUJveCA/IHRoaXMuY29tbW9uU2VydmljZXMuYXV0aG9yaXR5Rm9ybU5vIDogMCxcclxuICAgICAgICBwcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWU6IHRoaXMuaHRtbFRvVGV4dENvbnZlcnQodGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lKSwvL3RoaXMuc2hyaW5rU3VwZXJTY3JpcHRDb2RlKHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlKSxcclxuICAgICAgICBwcmVzY3JpYmVkSXRlbVJlc2VydmVkRm91cjogdGhpcy5zaG93QXV0aG9yaXR5Qm94KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMsIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMsIHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHksIHRoaXMuY29tbW9uU2VydmljZXMudW5saXN0ZWRSQSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUy50b0xvd2VyQ2FzZSgpID09PSBcInBic1wiICYmIHRoaXMuZ2V0U3RhdGVDb2RlRnJvbVN0YXRlTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnN0YXRlKS50b1VwcGVyQ2FzZSgpID09IFwiTlNXXCIgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHRUeXBlLnRvTG93ZXJDYXNlKCkgPT09IFwiZVwiID8gdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVkSXRlbVJlc2VydmVkRm91ciA6ICcnLFxyXG4gICAgICAgIHVubGlzdGVkSXRlbVJlcGF0QXV0aG9yaXR5OiB0aGlzLmNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkEgPT0gdHJ1ZSA/IHRydWUgOiBmYWxzZSxcclxuICAgICAgICBpc1ByaW50QXZhaWxhYmxlOiB0aGlzLmNvbW1vblNlcnZpY2VzLmlzUHJpbnRBdmFpbGFibGUsXHJcbiAgICAgICAgcHJlc2NyaWJlZEl0ZW1SZXNlcnZlZE9uZTogdGhpcy5jb21tb25TZXJ2aWNlcy5nZXRTY2hlZHVsZU51bWJlcih0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pLnRvTG93ZXJDYXNlKCkgPT0gXCJzOFwiID8gdGhpcy5udW1iZXJUb1dvcmQocGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbCkpIDogJycsXHJcbiAgICAgICAgbXlTTENvbnNlbnQ6IHRoaXMuY29tbW9uU2VydmljZXMubXlTTENvbnNlbnQsXHJcbiAgICAgICAgc2VuZFRvUGhhcm1hY3k6IHRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3ksXHJcbiAgICAgICAgc2VuZFRvUGhhcm1hY3lWYWx1ZTogdGhpcy5jb21tb25TZXJ2aWNlcy5zZW5kVG9QaGFybWFjeVZhbHVlLFxyXG4gICAgICAgIGVtZXJnZW5jeVN1cHBseTogdGhpcy5jb21tb25TZXJ2aWNlcy5lbWVyZ2VuY3lTdXBwbHksXHJcbiAgICAgICAgbW9sZWN1bGVTdHJlbmd0aEdyaWQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5tb2xlY3VsZVN0cmVuZ3RoR3JpZCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubW9sZWN1bGVTdHJlbmd0aEdyaWQgOiAnJyxcclxuICAgICAgICBlbnRpdHlJZDogdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLmVudGl0eUlkLFxyXG4gICAgICAgIGlzUHJlc2NyaWJlQW5kUHJpbnQ6IHRoaXMuaXNlcHJpc2NyaWJlcHJpbnQsXHJcbiAgICAgICAgYW10Q29kZVN5c3RlbTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmFtdENvZGVTeXN0ZW0pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdENvZGVTeXN0ZW0gOiBcIlwiLFxyXG4gICAgICAgIGFtdFZlcnNpb246ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5hbXRWZXJzaW9uKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRWZXJzaW9uIDogXCJcIixcclxuICAgICAgICBxdWFudGl0eVdpdGhVbml0OiB0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5V2l0aFVuaXRGbGFnICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5tYXhRdHlVbml0cykgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHMgOiBcIlwiLFxyXG4gICAgICAgIGNsaWVudElkOiB0aGlzLmNsaWVudElkXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucmVtb3ZlRXJyVG9hc3QoKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmFwaVNlcnZpY2UuUG9zdChib2R5LCBjb25maWcuUEhZU0lDSUFOLlBSRVNDUklCRSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuaXNQcmVzY3JpYmUgPSB0cnVlO1xyXG4gICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMpKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlRXJyX2NvZGUgPSBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlO1xyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5QcmVzY3JpYmVNc2cgPSBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlO1xyXG4gICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJwcmVzY3JpYmVNZWRcIiwgYm9keSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZVN1Y2Nlc3MgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLlByZXNjcmliZU1zZyA9IHJlcy5yZXNwb25zZV9tZXNzYWdlO1xyXG4gICAgICAgICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVkYXRhID0gcmVzO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldEVuZERhdGVBaGVhZCgpO1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmlzUHJpbnRBdmFpbGFibGUgIT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHJlcy5pc0FvcnQpIHtcclxuICAgICAgICAgICAgICB0aGlzLmFib3J0QnRuRmxhZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJlc2NyaWJlTWVkXCIsIGJvZHkpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihSZWFsVGltZVByZXNjcmlwdGlvbk1vbml0b3JpbmdDb21wb25lbnQsIHRoaXMuY29udGVudCwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4aWQgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX21lc3NhZ2UgIT0gbnVsbCAmJiByZXMucmVzcG9uc2VfbWVzc2FnZSAhPSAnJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlRXJyX2NvZGUgPSByZXMuZXJyb3JfY29kZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLlByZXNjcmliZU1zZyA9IHJlcy5yZXNwb25zZV9tZXNzYWdlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJwcmVzY3JpYmVNZWRcIiwgYm9keSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlRXJyX2NvZGUgPSBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuUHJlc2NyaWJlTXNnID0gZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcInByZXNjcmliZU1lZFwiLCBib2R5KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICgodGhpcy5yZXNwb25zZURhdGEuaXNBYm9ydCkgfHwgIXRoaXMuYWJvcnRkaXNhYmxlKVxyXG4gICAgICAgICAgICB0aGlzLnNob3dSZXNwb25zZU1lc3NhZ2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJlc2NyaWJlTWVkXCIsIGJvZHkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmlzUHJlc2NyaWJlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVFcnJvciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuUHJlc2NyaWJlTXNnID0gZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZUVycl9jb2RlID0gZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZVxyXG4gICAgICAgIGlmICh0aGlzLnJlc3BvbnNlRGF0YS5pc0Fib3J0IHx8ICF0aGlzLmFib3J0ZGlzYWJsZSlcclxuICAgICAgICAgIHRoaXMuc2hvd1Jlc3BvbnNlTWVzc2FnZSgpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJwcmVzY3JpYmVNZWRcIiwgYm9keSk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5hYm9ydEJ0bkZsYWcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInByZXNjcmliZU1lZFwiLCBib2R5KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIE1wcmVzY3JpYmVNZWQoaWQ6IG51bWJlcikge1xyXG4gICAgdmFyIGJvZHkgPSB7fTtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChpZCA9PSAxKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZVByZXNjcmlwdGlvblZhbGlkYXRpb24oaWQpKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChpZCA9PSAyKSB7XHJcbiAgICAgICAgaWYgKCh0aGlzLmNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpcHRpb24gPT09IHRydWUgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscz8uc2NyaXB0VHlwZSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc2NyaXB0VHlwZS50b1VwcGVyQ2FzZSgpID09ICdNJyAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzPy5zdGF0dXMpICYmIHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cy50b0xvd2VyQ2FzZSgpICE9ICdkcmFmdCcpIHx8ICh0aGlzLmNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpcHRpb24gPT09IHRydWUgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscz8uc2NyaXB0VHlwZSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc2NyaXB0VHlwZS50b1VwcGVyQ2FzZSgpID09ICdFJykpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IHRydWU7XHJcbiAgICAgIGlmIChpZCA9PSAxKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHRUeXBlID0gXCJFXCI7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5BZGRyZXNzU2VuZFRvQWRkVHlwZSA9IFwiU01TXCI7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHRUeXBlID0gXCJNXCI7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5BZGRyZXNzU2VuZFRvQWRkVHlwZSA9IFwiXCI7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuc2hvd0F1dGhvcml0eUJveCh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zLCB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLCB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4QXV0aG9yaXR5LCB0aGlzLmNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkEpID09IHRydWUpIHtcclxuICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuYXBwcm92YWxObykpIHtcclxuICAgICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzUzLm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzUzLmNvZGUpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzUzLmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzUzLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNlbGVjdFBCVE5Ecm9wZG93biA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gdHJ1ZTtcclxuICAgICAgdmFyIHBhdGllbnREZXRhaWxzID0gdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscztcclxuICAgICAgdmFyIHBoeXNpY2lhbkRldGFpbHMgPSB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHM7XHJcbiAgICAgIHZhciBzZWxlY3RlZEZvcm11bGF0aW9uID0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uO1xyXG4gICAgICB2YXIgbWVkaWNhcmVDYXJkID0gJyc7XHJcbiAgICAgIGlmIChwYXRpZW50RGV0YWlscy5tZWRpY2FyZU51bWJlcikge1xyXG4gICAgICAgIHZhciBtZWRObzEgPSBwYXRpZW50RGV0YWlscy5tZWRpY2FyZU51bWJlci5yZXBsYWNlKC8gL2csICcnKTtcclxuICAgICAgICBtZWRObzEgPSBtZWRObzEucmVwbGFjZSgvXy9nLCAnJyk7XHJcbiAgICAgICAgbWVkTm8xID0gbWVkTm8xLnJlcGxhY2UoLy0vZywgJycpO1xyXG4gICAgICAgIG1lZGljYXJlQ2FyZCA9IG1lZE5vMTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgcGJzTWFudWZhY3R1cmVyQ29kZVNldCA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucGJzTWFudWZhY3R1cmVyQ29kZXMpICYmIHNlbGVjdGVkRm9ybXVsYXRpb24ucGJzTWFudWZhY3R1cmVyQ29kZXMubGVuZ3RoICE9IDAgPyBzZWxlY3RlZEZvcm11bGF0aW9uLnBic01hbnVmYWN0dXJlckNvZGVzWzBdIDogJyc7XHJcblxyXG4gICAgICBsZXQgY2hlY2tBdXRob3JpdHlCb3ggPSB0aGlzLnNob3dBdXRob3JpdHlCb3goXHJcbiAgICAgICAgc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMsXHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyxcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4QXV0aG9yaXR5LFxyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudW5saXN0ZWRSQVxyXG4gICAgICApO1xyXG4gICAgICBib2R5ID0ge1xyXG4gICAgICAgIHJ4SWQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yeGlkKSA/IHRoaXMuY29tbW9uU2VydmljZXMucnhpZCA6ICcnLFxyXG4gICAgICAgIGlzU2hvd0F1dGhvcml0eTogdGhpcy5jb21tb25TZXJ2aWNlcy5pc1Nob3dBdXRob3JpdHksXHJcbiAgICAgICAgcGJzTGlzdEluc3RydWN0aW9uczogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnMpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zIDogXCJcIixcclxuICAgICAgICBpc0JyYW5kTmFtZTogdGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSxcclxuICAgICAgICBpbmNsdWRlQnJhbmRGbGFnOiB0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lLFxyXG4gICAgICAgIHJlc3RyaWN0ZWRQYnNTZWxlY3RlZEluZGV4OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkKSA/IHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkICsgMSA6IFwiXCIsXHJcbiAgICAgICAgbUFQYXRpZW50SWQ6IHRoaXMuY29tbW9uU2VydmljZXMudmVuZG9yUGF0aWVudElkLFxyXG4gICAgICAgIG1BUGhhcm1hY2lzdElkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnZlbmRvclBoeXNpY2lhbklkLFxyXG4gICAgICAgIG1BRmFjaWxpdHlJZDogdGhpcy5jb21tb25TZXJ2aWNlcy52ZW5kb3JGYWNpbGl0eUlkLFxyXG4gICAgICAgIHByaXZhY3lTdGF0ZW1lbnQ6IHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0VHlwZS50b0xvd2VyQ2FzZSgpID09ICdlJyA/IDAgOiAxLFxyXG4gICAgICAgIGhwaUk6IHBoeXNpY2lhbkRldGFpbHMuaHBpaU51bWJlcixcclxuICAgICAgICBwcmVzY3JpYmVyTnVtYmVyOiBwaHlzaWNpYW5EZXRhaWxzLnByZXNjcmliZXJOdW1iZXIsXHJcbiAgICAgICAgcHJlc2NyaWJlckFocHJhTnVtYmVyOiBwaHlzaWNpYW5EZXRhaWxzLnByZXNjcmliZXJBaHByYU51bWJlcixcclxuICAgICAgICBwcmVzY3JpYmVyR2l2ZW5OYW1lczogcGh5c2ljaWFuRGV0YWlscy5maXJzdE5hbWUsXHJcbiAgICAgICAgcHJlc2NyaWJlckZhbWlseU5hbWU6IHBoeXNpY2lhbkRldGFpbHMubGFzdE5hbWUsXHJcbiAgICAgICAgcHJlc2NyaWJlckhvbWVNb2JpbGU6IHBoeXNpY2lhbkRldGFpbHMubW9iaWxlUGhvbmUsXHJcbiAgICAgICAgcHJlc2NyaWJlckhvbWVFbWFpbDogcGh5c2ljaWFuRGV0YWlscy5lbWFpbCxcclxuICAgICAgICBvcmdIcGlPOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLmhwaW9OdW1iZXIpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMuaHBpb051bWJlciA6ICcnLFxyXG4gICAgICAgIG9yZ05hbWU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnTmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdOYW1lIDogJycsXHJcbiAgICAgICAgb3JnRW1haWw6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnRW1haWwpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnRW1haWwgOiAnJyxcclxuICAgICAgICBvcmdQb3N0YWxBZGRyZXNzTGluZTE6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUG9zdGFsQWRkcmVzc0xpbmUxKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NMaW5lMSA6ICcnLFxyXG4gICAgICAgIG9yZ1Bvc3RhbEFkZHJlc3NMaW5lMjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzTGluZTIpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUG9zdGFsQWRkcmVzc0xpbmUyIDogJycsXHJcbiAgICAgICAgb3JnUG9zdGFsQWRkcmVzc1N1YnVyYjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzU3VidXJiKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NTdWJ1cmIgOiAnJyxcclxuICAgICAgICBvcmdQb3N0YWxBZGRyZXNzUG9zdENvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUG9zdGFsQWRkcmVzc1Bvc3RDb2RlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NQb3N0Q29kZSA6ICcnLFxyXG4gICAgICAgIG9yZ1Bvc3RhbEFkZHJlc3NTdGF0ZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzU3RhdGUpID8gdGhpcy5nZXRTdGF0ZUNvZGVGcm9tU3RhdGVOYW1lKHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NTdGF0ZSkgOiAnJyxcclxuICAgICAgICBpaGk6IHBhdGllbnREZXRhaWxzLmloaU51bWJlcixcclxuICAgICAgICBtZWRpY2FyZU51bWJlcjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShtZWRpY2FyZUNhcmQpID8gdGhpcy5lcnhNZWRpY2FyZUNhcmQobWVkaWNhcmVDYXJkKSA6ICcnLFxyXG4gICAgICAgIG1lZGljYXJlSXJuOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG1lZGljYXJlQ2FyZCkgPyB0aGlzLmVyeE1lZGljYXJlSVJOKG1lZGljYXJlQ2FyZCkgOiAnJyxcclxuICAgICAgICBtZWRpY2FyZU51bWJlckV4cGlyeTogcGF0aWVudERldGFpbHMubWVkaWNhcmVFeHBpcnksXHJcbiAgICAgICAgZGF0ZU9mQmlydGg6IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHBhdGllbnREZXRhaWxzLmRvYiwgJ3l5eXktTU0tZGQnKSxcclxuICAgICAgICBmYW1pbHlOYW1lOiBwYXRpZW50RGV0YWlscy5sYXN0TmFtZSxcclxuICAgICAgICBnaXZlbk5hbWVzOiBwYXRpZW50RGV0YWlscy5maXJzdE5hbWUsXHJcbiAgICAgICAgcGF0aWVudFVzZXJJZFN0cmluZzogdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5wYXRpZW50VXNlcklkLFxyXG4gICAgICAgIHVzZXJJZFN0cmluZzogdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLnVzZXJJZCxcclxuICAgICAgICBnZW5kZXJDb2RlOiB0aGlzLmdldEdlbmRlckNvZGUocGF0aWVudERldGFpbHMuZ2VuZGVyKSxcclxuICAgICAgICBob21lTW9iaWxlOiBwYXRpZW50RGV0YWlscy5waG9uZSxcclxuICAgICAgICBob21lRW1haWw6IHBhdGllbnREZXRhaWxzLmVtYWlsLFxyXG4gICAgICAgIGFkZHJlc3NMaW5lMTogcGF0aWVudERldGFpbHMuYWRkcmVzczEsXHJcbiAgICAgICAgYWRkcmVzc0xpbmUyOiBwYXRpZW50RGV0YWlscy5hZGRyZXNzMixcclxuICAgICAgICBhZGRyZXNzU3VidXJiOiBwYXRpZW50RGV0YWlscy5jaXR5LFxyXG4gICAgICAgIGFkZHJlc3NQb3N0Q29kZTogcGF0aWVudERldGFpbHMucG9zdENvZGUsXHJcbiAgICAgICAgYWRkcmVzc1N0YXRlOiB0aGlzLmdldFN0YXRlQ29kZUZyb21TdGF0ZU5hbWUocGF0aWVudERldGFpbHMuc3RhdGUpLFxyXG4gICAgICAgIHByZXNjcmlwdGlvbldyaXR0ZW5EYXRlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0RGF0ZSkgPyB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdERhdGUsICd5eXl5LU1NLWRkJykgOiBcIlwiLFxyXG4gICAgICAgIGZvcm1UZXh0OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24/LmRvc2FnZUZvcm0pID8gc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtIDogXCJcIixcclxuICAgICAgICBzdHJlbmd0aDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uPy5tb2xlY3VsZVN0cmVuZ3RoKSA/IHNlbGVjdGVkRm9ybXVsYXRpb24ubW9sZWN1bGVTdHJlbmd0aCA6IFwiIFwiLFxyXG4gICAgICAgIGRpcmVjdGlvbnM6IHRoaXMuZ2V0RGlyZWN0aW9ucygpLFxyXG4gICAgICAgIGJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvd2VkOiB0aGlzLmNvbW1vblNlcnZpY2VzLkJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvdyA9PSB0cnVlID8gMCA6IDEsXHJcbiAgICAgICAgbWF4aW11bU51bWJlck9mUmVwZWF0czogdGhpcy5jb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsLFxyXG4gICAgICAgIG1pbmltdW1JbnRlcnZhbEJldHdlZW5SZXBlYXRzOiB0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsICE9IHVuZGVmaW5lZCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsICE9IG51bGwgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCAhPSBcIlwiID8gcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCkgOiBcIi0xXCIsXHJcbiAgICAgICAgcGF0aWVudEN0Z0ZsYWc6IHRoaXMuY29tbW9uU2VydmljZXMuQ1RHQ29QYXltZW50ID09IHRydWUgPyAwIDogMSxcclxuICAgICAgICBwYnNJdGVtQ29kZUNvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5wYnNDb2RlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNDb2RlIDogXCJcIixcclxuICAgICAgICBwYnNJdGVtQ29kZVRleHQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5wYnNDb2RlVGV4dCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzQ29kZVRleHQgOiBcIlwiLFxyXG4gICAgICAgIHBic0l0ZW1NYW51ZmFjdHVyZXI6IHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPyBwYnNNYW51ZmFjdHVyZXJDb2RlU2V0IDogJycsXHJcbiAgICAgICAgc3RhdGVBdXRob3JpdHlOdW1iZXI6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5TdGF0ZUF1dGhvcml0eU51bWJlcikgPyB0aGlzLmNvbW1vblNlcnZpY2VzLlN0YXRlQXV0aG9yaXR5TnVtYmVyLnRyaW0oKSA6IFwiXCIsXHJcbiAgICAgICAgcmVhc29uRm9yVGhlcmFwZXV0aWNHb29kOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaXB0aW9uUmVhc29uKSA/IHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaXB0aW9uUmVhc29uLnRyaW0oKSA6IFwiXCIsXHJcbiAgICAgICAgdW51c3VhbFF0eUZsYWc6IHRoaXMuc2V0VW51c3VhbFF0eUZsYWcodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLCB0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsLCB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTKSxcclxuICAgICAgICBxdWFudGl0eU9mVGhlcmFwZXV0aWNHb29kUXVhbnRpdHk6IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwpLFxyXG4gICAgICAgIGNvbXBsZXhJbnN0cnVjdGlvbnM6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZS50cmltKCkgOiBcIlwiLFxyXG4gICAgICAgIGFtdE1wcENvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5BTVRNUFBDb2RlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5BTVRNUFBDb2RlIDogXCJcIixcclxuICAgICAgICBhbXRNcHBOYW1lOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uYW10KSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10Lmxlbmd0aCA+IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLm1wcHMpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0ubXBwcy5sZW5ndGggPiAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS5tcHBzWzBdLm1wcE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS5tcHBzWzBdLm1wcE5hbWUgOiAnJyxcclxuICAgICAgICBhbXRUcHBDb2RlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uQU1UVFBQQ29kZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uQU1UVFBQQ29kZSA6IFwiXCIsXHJcbiAgICAgICAgYW10VHBwTmFtZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmFtdCkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdC5sZW5ndGggPiAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cHBzKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHMubGVuZ3RoID4gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBwc1swXS50cHBOYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBwc1swXS50cHBOYW1lIDogJycsXHJcbiAgICAgICAgYW10VHBDb2RlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uQU1UVFBDb2RlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5BTVRUUENvZGUgOiBcIlwiLFxyXG4gICAgICAgIGFtdFRwTmFtZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmFtdCkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdC5sZW5ndGggPiAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cE5hbWUgOiAnJyxcclxuICAgICAgICBhbXRDb2RlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uYW10KSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXQuYW10Y29kZSA6ICcnLFxyXG4gICAgICAgIHRoZXJlcGV1dGljR29vZElkZW50aWZpY2F0aW9uTWltc0NvZGU6ICcnLFxyXG4gICAgICAgIHRoZXJlcGV1dGljR29vZElkZW50aWZpY2F0aW9uTG9jYWxDb2RlOiAnJyxcclxuICAgICAgICAvLyB0aGVyZXBldXRpY0dvb2RJZGVudGlmaWNhdGlvbkVhbkNvZGU6IFwiXCIsXHJcbiAgICAgICAgdGhlcmVwZXV0aWNHb29kSWRlbnRpZmljYXRpb25FYW5UZXh0OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucGJzVHlwZSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic1R5cGUudG9Mb3dlckNhc2UoKSA9PSAnbm9uIHBicycgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lIDogJycsXHJcbiAgICAgICAgcHJlc2NyaWJlck9jY3VwYXRpb25Db2RlOiBwaHlzaWNpYW5EZXRhaWxzLm9jY3VwYXRpb25Db2RlLFxyXG4gICAgICAgIHByZXNjcmliZXJPY2N1cGF0aW9uVGV4dDogcGh5c2ljaWFuRGV0YWlscy5vY2N1cGF0aW9uVGV4dCxcclxuICAgICAgICBwcmVzY3JpYmVyUGVyc29uVGl0bGU6IHBoeXNpY2lhbkRldGFpbHMucHJlZml4LFxyXG4gICAgICAgIHByZXNjcmliZXJRdWFsaWZpY2F0aW9uczogcGh5c2ljaWFuRGV0YWlscy5zdWZmaXgsXHJcbiAgICAgICAgb3JnUGhvbmU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnTW9iaWxlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ01vYmlsZSA6ICcnLFxyXG4gICAgICAgIG9yZ0ZheDogJycsXHJcbiAgICAgICAgbG9jYWxTeXN0ZW1JRDogdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5wYXRpZW50VXNlcklkLFxyXG4gICAgICAgIGFkZHJlc3NTZW5kVG9BZGRUeXBlOiB0aGlzLmNvbW1vblNlcnZpY2VzLkFkZHJlc3NTZW5kVG9BZGRUeXBlLFxyXG4gICAgICAgIGFkZHJlc3NFbWFpbDogdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhlbWFpbElkKSA/IHBhdGllbnREZXRhaWxzLmVtYWlsIDogdGhpcy5jb21tb25TZXJ2aWNlcy5yeGVtYWlsSWQsXHJcbiAgICAgICAgYWRkcmVzc1NtczogdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhudW1iZXIpID8gcGF0aWVudERldGFpbHMucGhvbmUgOiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4bnVtYmVyLFxyXG4gICAgICAgIGdlbmRlclRleHQ6IHRoaXMuZ2V0R2VuZGVyKHBhdGllbnREZXRhaWxzLmdlbmRlciksXHJcbiAgICAgICAgYWRkcmVzc0xpbmUzOiAnJyxcclxuICAgICAgICBwcmVzY3JpcHRpb25Xcml0dGVuVXRjVGltZTogJzAxLTAxLTE5NzAgMDk6MDY6MDknLCAvLyBwcmVzY3JpcHRpb25Xcml0dGVuVXRjVGltZTogbW9tZW50KG5ldyBEYXRlKCkpLmZvcm1hdChcIk1NLURELXl5eXkgaGg6bW06c3NcIiksXHJcbiAgICAgICAgcHJlc2NyaXB0aW9uV3JpdHRlblV0Y09mZnNldDogdGhpcy5nZXRPZmZzZXQoKSxcclxuICAgICAgICBwcmVzY3JpcHRpb25FeHBpcmVzVmFsdWU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5lbmREYXRlKSA/IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuY29tbW9uU2VydmljZXMuZW5kRGF0ZSwgJ01NL2RkL3l5eXknKSA6IFwiXCIsXHJcbiAgICAgICAgYWN0aXZlSW5ncmVkaWVudDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmdlbmVyaWNOYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5nZW5lcmljTmFtZSA6IFwiXCIsXHJcbiAgICAgICAgZm9ybUNvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5kb3NhZ2VGb3JtKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtIDogXCJcIixcclxuICAgICAgICBmb3JtdWxhOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZm9ybXVsYSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZm9ybXVsYSA6IFwiXCIsXHJcbiAgICAgICAgYWRkaXRpb25hbENvbW1lbnRzOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZG9jdG9yTm90ZXMpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5kb2N0b3JOb3Rlcy50cmltKCkgOiBcIlwiLFxyXG4gICAgICAgIGFzbENvbnNlbnQ6IDEsXHJcbiAgICAgICAgcHJlc2NyaXB0aW9uTm90ZURldGFpbE5vdGU6IHRoaXMuY29tbW9uU2VydmljZXMucHVycG9zZVNlYXJjaFZhbHVlLFxyXG4gICAgICAgIGR2YU51bWJlcjogcGF0aWVudERldGFpbHMuZHZhTnVtYmVyLFxyXG4gICAgICAgIGR2YVR5cGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocGF0aWVudERldGFpbHMuZHZhQ2FyZFR5cGUpICYmIHBhdGllbnREZXRhaWxzLmR2YUNhcmRUeXBlLnRvTG93ZXJDYXNlKCkgIT0gJ25vbmUnID8gcGF0aWVudERldGFpbHMuZHZhQ2FyZFR5cGUuc2xpY2UoMCwgMSkudG9VcHBlckNhc2UoKSA6ICcnLFxyXG4gICAgICAgIHBic0FwcHJvdmFsTnVtYmVyOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuYXBwcm92YWxObykgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8gOiAnJyxcclxuICAgICAgICByb3V0ZTogdGhpcy5jb21tb25TZXJ2aWNlcy5yb3V0ZVNlYXJjaFZhbHVlICE9ICctJyA/IHRoaXMuY29tbW9uU2VydmljZXMucm91dGVTZWFyY2hWYWx1ZSA6ICcnLFxyXG4gICAgICAgIC8vcHJvdmlkZXJOdW1iZXI6JycsXHJcbiAgICAgICAgcHJlc2NyaWJlclR5cGU6IHBoeXNpY2lhbkRldGFpbHMucHJlc2NyaWJlclR5cGUsXHJcbiAgICAgICAgbWVkaWNpbmVOYW1lOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucHJvZHVjdE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lIDogXCJcIixcclxuICAgICAgICBicmFuZE5hbWU6IHRoaXMuZ2V0QnJhbmROYW1lKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiksXHJcbiAgICAgICAgZ2VuZXJpY05hbWU6IHRoaXMuaHRtbFRvVGV4dENvbnZlcnQoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LklzRXh0ZW1wKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gdHJ1ZSA/IHRoaXMuZ2V0RXh0ZW1wVFRQTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pIDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmdlbmVyaWNOYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5nZW5lcmljTmFtZSA6IHRoaXMuZ2V0RXh0ZW1wTVBQTmFtZSgpKSxcclxuICAgICAgICAvL2l0ZW1HZW5lcmljSW50ZW50aW9uOiBnZXRJdGVtR2VuZXJpY0ludGVudGlvbih0aGlzLnN0YXRlLmxlbWksdGhpcy5zdGF0ZS5pc0JyYW5kTmFtZSx0aGlzLnN0YXRlLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gdHJ1ZSA/IHRydWUgOiBmYWxzZSksXHJcbiAgICAgICAgaXRlbUdlbmVyaWNJbnRlbnRpb246IHRoaXMuY29tbW9uU2VydmljZXMubGVtaSA9PSB0cnVlICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCAhPSB0cnVlID8gJ0InIDogJ0cnLFxyXG4gICAgICAgIHNjaGVkdWxlTnVtYmVyOiB0aGlzLnBheUxvYWRTdGF0ZVNjaGVkdWxlTnVtYmVyKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikgIT0gXCJcIiA/IHRoaXMucGF5TG9hZFN0YXRlU2NoZWR1bGVOdW1iZXIodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSA6IHRoaXMuY29tbW9uU2VydmljZXMuZ2V0U2NoZWR1bGVOdW1iZXIodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSxcclxuICAgICAgICBkb2N0b3JOb3RlczogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmRvY3Rvck5vdGVzKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZG9jdG9yTm90ZXMudHJpbSgpIDogXCJcIixcclxuICAgICAgICByZWd1bGF0aW9uMjQ6IHRoaXMuY29tbW9uU2VydmljZXMucmVndWxhdGlvbjI0ID09IGZhbHNlID8gMSA6IDAsXHJcbiAgICAgICAgaXNFeHRlbXA6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiAhPSBudWxsICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCAhPSBudWxsID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLklzRXh0ZW1wID09IHRydWUgPyAwIDogMSA6IDEsXHJcbiAgICAgICAgLy8gZXh0ZW1wb3JhbmVvdXNEZXNjcmlwdGlvbjogdGhpcy5zdGF0ZS5zZWxlY3RlZEZvcm11bGF0aW9uICE9IG51bGwgJiYgdGhpcy5zdGF0ZS5zZWxlY3RlZEZvcm11bGF0aW9uLkV4dGVtcG9yYW5lb3VzRGVzY3JpcHRpb24gIT0gJycgPyB0aGlzLnN0YXRlLnNlbGVjdGVkRm9ybXVsYXRpb24uRXh0ZW1wb3JhbmVvdXNEZXNjcmlwdGlvbiA6ICcnLFxyXG4gICAgICAgIGV4dGVtcG9yYW5lb3VzRGVzY3JpcHRpb246IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCA9PSB0cnVlID8gdGhpcy5nZXRFeHRlbXBUVFBOYW1lKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikgOiAnJyxcclxuICAgICAgICBhbm5vdGF0aW9uOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuYW5ub3RhdGlvbikgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmFubm90YXRpb24udHJpbSgpIDogXCJcIixcclxuICAgICAgICB1blVzdWFsRG9zZUZsYWc6IHRoaXMuY29tbW9uU2VydmljZXMudW5Vc3VhbERvc2VGbGFnID09IGZhbHNlID8gMSA6IDAsXHJcbiAgICAgICAgdHJhZGVOYW1lOiB0aGlzLmh0bWxUb1RleHRDb252ZXJ0KHRoaXMuZ2V0VHJhZGVOYW1lKCkpLFxyXG4gICAgICAgIC8vcmVzdHJpY3Rpb25zOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zICE9IG51bGwgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucyAhPSAnJyA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5yZXN0cmljdGlvbnMgOiAnJyxcclxuICAgICAgICAvLyBwcmVzY3JpYmVyUGVyc29uVGl0bGU6IHBoeXNpY2lhbkRldGFpbHMucHJlZml4LFxyXG4gICAgICAgIG1heGltdW1JbnRlcnZhbEJldHdlZW5SZXBlYXRzOiAnJyxcclxuICAgICAgICBjb21wbGV4SWQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuY29tcGxleElkKSA/IHRoaXMuY29tbW9uU2VydmljZXMuY29tcGxleElkIDogMCxcclxuICAgICAgICB2aXNpdElkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnZpc2l0SWQsXHJcbiAgICAgICAgc2NyaXB0VHlwZTogdGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHRUeXBlLFxyXG4gICAgICAgIGRvc2U6IHRoaXMuY29tbW9uU2VydmljZXMuZG9zZVNlYXJjaFZhbHVlLFxyXG4gICAgICAgIGZyZXF1ZW5jeTogdGhpcy5jb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWUsXHJcbiAgICAgICAgZm9vZDogdGhpcy5jb21tb25TZXJ2aWNlcy5mb29kU2VhcmNoVmFsdWUsXHJcbiAgICAgICAgcHJlc2NyaWJlQXM6IHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMsXHJcbiAgICAgICAgcHJuOiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4UFJOID09IGZhbHNlID8gMSA6IDAsXHJcbiAgICAgICAgc2NyaXB0RGF0ZTogdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHREYXRlLCAneXl5eS1NTS1kZCcpLFxyXG4gICAgICAgIHN0YXJ0RGF0ZTogdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5jb21tb25TZXJ2aWNlcy5zdGFydERhdGUsICdNTS9kZC95eXl5JyksXHJcbiAgICAgICAgcHVycG9zZTogdGhpcy5jb21tb25TZXJ2aWNlcy5wdXJwb3NlU2VhcmNoVmFsdWUudHJpbSgpLFxyXG4gICAgICAgIHBic05vdGVzOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBic05vdGVzLFxyXG4gICAgICAgIGlzQWN0aXZlOiAwLFxyXG4gICAgICAgIHByb2R1Y3RJZDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LnByb2R1Y3RJZCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdElkIDogXCJcIixcclxuICAgICAgICBhbXRUZXh0OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZm9ybXVsYSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZm9ybXVsYSA6IFwiXCIsXHJcbiAgICAgICAgcXVhbnRpdHlPZlRoZXJhcGV1dGljR29vZERvc2VVbml0Q29kZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmRvc2FnZUZvcm0pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0gOiBcIlwiLFxyXG4gICAgICAgIHF1YW50aXR5T2ZUaGVyYXBldXRpY0dvb2REb3NlVW5pdFRleHQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5kb3NhZ2VGb3JtKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtIDogXCJcIixcclxuICAgICAgICBwcmVzY3JpYmVyUm9sZUNvZGU6ICcnLFxyXG4gICAgICAgIHByZXNjcmliZXJSb2xlVGV4dDogJycsXHJcbiAgICAgICAgb3JnSGljTG9jYXRpb25JZDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdIaWNMb2NhdGlvbklkKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ0hpY0xvY2F0aW9uSWQgOiAnJyxcclxuICAgICAgICBvcmdSb2xlQ29kZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdSb2xlQ29kZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdSb2xlQ29kZSA6ICcnLFxyXG4gICAgICAgIG9yZ1JvbGVUZXh0OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1JvbGVUZXh0KSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1JvbGVUZXh0IDogJycsXHJcbiAgICAgICAgYXV0aG9yaXR5QXBwcm92YWxOdW1iZXI6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5hcHByb3ZhbE5vKSA/IHRoaXMuY29tbW9uU2VydmljZXMuYXBwcm92YWxOby50cmltKCkgOiAnJyxcclxuICAgICAgICBhdXRob3JpdHlBcHByb3ZhbE51bWJlckZsYWc6IHBhcnNlRmxvYXQodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1heFF0eVVuaXRzKSA8IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwpIHx8IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5yZXBlYXRzKSA8IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCkgPyAxIDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zLmxlbmd0aCA+IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnNJZCkgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zW3RoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkXS5zdHJlYW1saW5lZENvZGUpICYmIHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnNbdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zSWRdLnN0cmVhbWxpbmVkQ29kZSkgPT0gcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5hcHByb3ZhbE5vKSA/IDAgOiAxLFxyXG4gICAgICAgIHN0YXR1czogXCJEcmFmdFwiLFxyXG4gICAgICAgIC8vIHBic0F1dGhvcml0eVByZXNjcmlwdGlvbk51bWJlcjp0aGlzLnN0YXRlLmFwcHJvdmFsTm8gPyB0aGlzLnN0YXRlLmFwcHJvdmFsTm8gOiBcIlwiLFxyXG4gICAgICAgIC8vIHN0cmVhbWxpbmVkQXV0aG9yaXR5QXBwcm92YWxOdW1iZXI6IHRoaXMuc3RhdGUuYXBwcm92YWxObz8gdGhpcy5zdGF0ZS5hcHByb3ZhbE5vOiBcIlwiLFxyXG4gICAgICAgIC8vIHBic0F1dGhvcml0eUFwcHJvdmFsTnVtYmVyOiBcIlwiLFxyXG4gICAgICAgIC8vYmFyY29kZVxyXG4gICAgICAgIC8vc2NyaXB0TnVtYmVyOiBcIlwiLFxyXG4gICAgICAgIGRpc3BsYXlOYW1lOiB0aGlzLnNocmlua1N1cGVyU2NyaXB0Q29kZSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGlzcGxheU5hbWUpLFxyXG4gICAgICAgIGVvcERpc3BsYXlOYW1lOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdFR5cGUudG9Mb3dlckNhc2UoKSA9PSBcImVcIiA/IHRoaXMuc2hyaW5rU3VwZXJTY3JpcHRDb2RlKHRoaXMuY29tbW9uU2VydmljZXMuZW9wRGlzcGxheU5hbWUpIDogdGhpcy5zaHJpbmtTdXBlclNjcmlwdENvZGUodGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lKSxcclxuICAgICAgICBpdGVtU3RyZW5ndGhYbWw6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5JdGVtU3RyZW5ndGhYbWwpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLkl0ZW1TdHJlbmd0aFhtbCA6IFwiIFwiLFxyXG4gICAgICAgIC8vYXV0aG9yaXR5VmFsdWVcclxuICAgICAgICBwYnNEdmFBdXRob3JpdHlOdW1iZXI6IGNoZWNrQXV0aG9yaXR5Qm94ID8gdGhpcy5jb21tb25TZXJ2aWNlcy5hdXRob3JpdHlGb3JtTm8gOiAwLFxyXG4gICAgICAgIHByZXNjcmliZWRJdGVtUmVzZXJ2ZWRUaHJlZTogdGhpcy5odG1sVG9UZXh0Q29udmVydCh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGlzcGxheU5hbWUpLC8vdGhpcy5zaHJpbmtTdXBlclNjcmlwdENvZGUodGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUpLFxyXG4gICAgICAgIHVubGlzdGVkSXRlbVJlcGF0QXV0aG9yaXR5OiB0aGlzLmNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkEgPT0gdHJ1ZSA/IHRydWUgOiBmYWxzZSxcclxuICAgICAgICBwcmVzY3JpYmVkSXRlbVJlc2VydmVkT25lOiB0aGlzLmNvbW1vblNlcnZpY2VzLmdldFNjaGVkdWxlTnVtYmVyKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikudG9Mb3dlckNhc2UoKSA9PSBcInM4XCIgPyB0aGlzLm51bWJlclRvV29yZChwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsKSkgOiAnJyxcclxuICAgICAgICBteVNMQ29uc2VudDogdGhpcy5jb21tb25TZXJ2aWNlcy5teVNMQ29uc2VudCxcclxuICAgICAgICBzZW5kVG9QaGFybWFjeTogdGhpcy5jb21tb25TZXJ2aWNlcy5zZW5kVG9QaGFybWFjeSxcclxuICAgICAgICBzZW5kVG9QaGFybWFjeVZhbHVlOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5VmFsdWUsXHJcbiAgICAgICAgZW1lcmdlbmN5U3VwcGx5OiB0aGlzLmNvbW1vblNlcnZpY2VzLmVtZXJnZW5jeVN1cHBseSxcclxuICAgICAgICBtb2xlY3VsZVN0cmVuZ3RoR3JpZDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/Lm1vbGVjdWxlU3RyZW5ndGhHcmlkKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tb2xlY3VsZVN0cmVuZ3RoR3JpZCA6ICcnLFxyXG4gICAgICAgIGVudGl0eUlkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMuZW50aXR5SWQsXHJcbiAgICAgICAgaXNQcmVzY3JpYmVBbmRQcmludDogdGhpcy5pc2VwcmlzY3JpYmVwcmludCxcclxuICAgICAgICBhbXRDb2RlU3lzdGVtOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uYW10Q29kZVN5c3RlbSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10Q29kZVN5c3RlbSA6IFwiXCIsXHJcbiAgICAgICAgYW10VmVyc2lvbjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmFtdFZlcnNpb24pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFZlcnNpb24gOiBcIlwiLFxyXG4gICAgICAgIHF1YW50aXR5V2l0aFVuaXQ6IHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlXaXRoVW5pdEZsYWcgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/Lm1heFF0eVVuaXRzKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tYXhRdHlVbml0cyA6IFwiXCIsXHJcbiAgICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWRcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlbW92ZUVyclRvYXN0KCk7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5hcGlTZXJ2aWNlLlBvc3QoYm9keSwgY29uZmlnLlBIWVNJQ0lBTi5NX1BSRVNDUklCRSkuc3Vic2NyaWJlKFxyXG4gICAgICAgIChyZXMpID0+IHtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcIk1wcmVzY3JpYmVNZWRcIiwgYm9keSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKFwiXCIsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCB0cnVlLCByZXMuZGF0YSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jbG9zZShyZXMuZGF0YSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9tZXNzYWdlICE9IG51bGwgJiYgcmVzLnJlc3BvbnNlX21lc3NhZ2UgIT0gJycpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcIk1wcmVzY3JpYmVNZWRcIiwgYm9keSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJNcHJlc2NyaWJlTWVkXCIsIGJvZHkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiTXByZXNjcmliZU1lZFwiLCBib2R5KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIk1wcmVzY3JpYmVNZWRcIiwgYm9keSk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcblxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIk1wcmVzY3JpYmVNZWRcIiwgYm9keSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjcmVhdGVUb29sVGlwKGV2ZW50OiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMudG9vbHRpcCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy50b29sdGlwLCAnX19yZWFjdF9jb21wb25lbnRfdG9vbHRpcCcpO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMudG9vbHRpcCwgJ3R5cGUtZGFyaycpO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMudG9vbHRpcCwgJ3BsYWNlLWxlZnQnKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRvb2x0aXAsICd6LWluZGV4JywgJzk5OTk5OTk5Jyk7XHJcbiAgICAgIGNvbnN0IHZpZXdSZWYgPSB0aGlzLnZpZXdSZWZDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMubXlUZW1wbGF0ZSk7XHJcbiAgICAgIHZpZXdSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICBjb25zdCB0b29sdGlwQ29udGVudCA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodmlld1JlZi5yb290Tm9kZXMpICYmIHZpZXdSZWYucm9vdE5vZGVzLmxlbmd0aCAhPSAwID8gdmlld1JlZi5yb290Tm9kZXNbMF0gOiBcIlwiO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMudG9vbHRpcCwgdG9vbHRpcENvbnRlbnQpO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCwgdGhpcy50b29sdGlwKTtcclxuICAgICAgdmFyIHRvb2w6IGFueSA9IHRoaXMudG9vbHRpcDtcclxuICAgICAgdmFyIGxlZnQgPSBldmVudC54IC0gKHRvb2wuY2xpZW50V2lkdGggKyAxNSk7XHJcbiAgICAgIHZhciBoZWlnaHR2YWx1ZSA9IGV2ZW50LnkgLSAodG9vbC5jbGllbnRIZWlnaHQgLyAyKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRvb2x0aXAsICdsZWZ0JywgbGVmdCArICdweCcpO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudG9vbHRpcCwgJ3RvcCcsIGhlaWdodHZhbHVlICsgJ3B4Jyk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImNyZWF0ZVRvb2xUaXBcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaG93dG9vbHRpcChsZW1pcHJvZHVjdDogYm9vbGVhbiwgYnJhbmR0b29sdGlwOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChsZW1pcHJvZHVjdCkge1xyXG4gICAgICAgIHRoaXMudG9vbHRpcCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnRvb2x0aXAsICdsZW1pLXRvb2x0aXAnKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMudG9vbHRpcCwgJ3R5cGUtZGFyaycpO1xyXG4gICAgICAgIGNvbnN0IHRhcmdldFJlY3QgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgICAgY29uc3Qgdmlld1JlZiA9IHRoaXMudmlld1JlZkNvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcoYnJhbmR0b29sdGlwKTtcclxuICAgICAgICB2aWV3UmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB2YXIgbXlkb206IGFueSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYnJhbmRuYW1ldG9vbHRpcFwiKTtcclxuICAgICAgICB2YXIgcmVjdCA9IG15ZG9tLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgIGNvbnN0IHRvb2x0aXBDb250ZW50ID0gdmlld1JlZi5yb290Tm9kZXNbMF07XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLnRvb2x0aXAsIHRvb2x0aXBDb250ZW50KTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCwgdGhpcy50b29sdGlwKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudG9vbHRpcCwgJ2xlZnQnLCByZWN0LmxlZnQgKyAncHgnKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudG9vbHRpcCwgJ3RvcCcsIHJlY3QudG9wIC0gbXlkb20ub2Zmc2V0SGVpZ2h0IC0gMTAgKyAncHgnKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudG9vbHRpcCwgJ3dpZHRoJywgbXlkb20uY2xpZW50V2lkdGggKyAncHgnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzaG93dG9vbHRpcFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vZWRpdCByeFxyXG4gIHNldEVkaXRWYWx1ZXMocnhMaXN0OiBhbnkpIHtcclxuICAgIHZhciBwYXlsb2FkID0ge307XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgcnhMaXN0LnBic0l0ZW1Db2RlQ29kZSA9IHJ4TGlzdC5wYnNJdGVtQ29kZUNvZGUgIT0gbnVsbCA/IHJ4TGlzdC5wYnNJdGVtQ29kZUNvZGUgOiBcIlwiO1xyXG4gICAgICBwYXlsb2FkID0ge1xyXG4gICAgICAgIHJlcXVlc3RfdHlwZTogXCJwYXJhbWV0ZXJcIixcclxuICAgICAgICBwcm9kdWN0SWQ6IHJ4TGlzdC5wcm9kdWN0SWQsXHJcbiAgICAgICAgcGJzQ29kZTogcnhMaXN0LnBic0l0ZW1Db2RlQ29kZSxcclxuICAgICAgICByeElkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4aWRcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5hcGlTZXJ2aWNlLkdldChjb25maWcuUEhZU0lDSUFOLkdFVF9NRURfREVUX0JZX0lEICsgXCI/cHJvZHVjdElkPVwiICsgcnhMaXN0LnByb2R1Y3RJZCArIFwiJnBic0NvZGU9XCIgKyAodGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QgPyByeExpc3QucGJzSXRlbUNvZGVDb2RlIDogXCJcIikgKyBcIiZyeElkPVwiICsgdGhpcy5jb21tb25TZXJ2aWNlcy5yeGlkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7IHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcInNldEVkaXRWYWx1ZXNcIiwgdGhpcy5yZXNwb25zZURhdGEucGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHZhciBlZGl0UmVzdHJpY3RGbGFnID0gKHRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0ICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocnhMaXN0Py5zdGF0dXMpICYmIHJ4TGlzdC5zdGF0dXMudG9Mb3dlckNhc2UoKSAhPSBcImRyYWZ0XCIpIHx8ICF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICAgICAgaWYgKGVkaXRSZXN0cmljdEZsYWcpIHtcclxuICAgICAgICAgICAgICB2YXIgTWVkID0gW107XHJcbiAgICAgICAgICAgICAgTWVkLnB1c2gocmVzLnJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gTWVkO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsID0gTWVkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0UmVzdHJpY3RlZE1lZGljaW5lKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RGb3JtdWxhdGlvbihyZXMucmVzcG9uc2UsIDApO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5tZWRpU2VhcmNoVmFsdWUgPSBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICAgIHRoaXMucGFnZSA9IDE7XHJcbiAgICAgICAgICAgIHRoaXMucnhPbmx5UEJTID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwgPSByeExpc3QucXVhbnRpdHlPZlRoZXJhcGV1dGljR29vZFF1YW50aXR5O1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwgPSByeExpc3QubWF4aW11bU51bWJlck9mUmVwZWF0cyA/IHJ4TGlzdC5tYXhpbXVtTnVtYmVyT2ZSZXBlYXRzIDogXCIwXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZG9zZVNlYXJjaFZhbHVlID0gcnhMaXN0LmRvc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZnJlcVNlYXJjaFZhbHVlID0gcnhMaXN0LmZyZXF1ZW5jeSA/IHJ4TGlzdC5mcmVxdWVuY3kgOiBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZvb2RTZWFyY2hWYWx1ZSA9IHJ4TGlzdC5mb29kID8gcnhMaXN0LmZvb2QgOiBcIlwiO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyeExpc3QuY29tcGxleEluc3RydWN0aW9ucykgJiYgdGhpcy5pbnN0cnVjdGlvbkRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIHZhciBkYXRhID0gdGhpcy5pbnN0cnVjdGlvbkRhdGEuZmlsdGVyKCgoeDogeyB0ZXh0OiBhbnk7IH0pID0+IHgudGV4dCA9PSByeExpc3QuY29tcGxleEluc3RydWN0aW9ucykpO1xyXG4gICAgICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGRhdGEpICYmIGRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlID0gcnhMaXN0LmNvbXBsZXhJbnN0cnVjdGlvbnM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkluc3RydWN0aW9uRGVzY3JpcHRpb24gPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGRhdGFbMF0uZGVzY3JpcHRpb24pID8gZGF0YVswXS5kZXNjcmlwdGlvbiA6IFwiXCI7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlID0gcnhMaXN0LmNvbXBsZXhJbnN0cnVjdGlvbnM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkluc3RydWN0aW9uRGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5jb21wbGV4SW5zdHJ1Y3Rpb25zKSA/IHJ4TGlzdC5jb21wbGV4SW5zdHJ1Y3Rpb25zIDogXCJcIjtcclxuICAgICAgICAgICAgICB0aGlzLkluc3RydWN0aW9uRGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY29tcGxleElkID0gcnhMaXN0LmNvbXBsZXhJZCA/IHJ4TGlzdC5jb21wbGV4SWQgOiAwO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJvdXRlU2VhcmNoVmFsdWUgPSByeExpc3Qucm91dGUgPyByeExpc3Qucm91dGUgOiBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4UFJOID0gcnhMaXN0LnBybiA9PSAwID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gcnhMaXN0LnByZXNjcmliZUFzO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdERhdGUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5zY3JpcHREYXRlKSA/IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHJ4TGlzdC5zY3JpcHREYXRlLCAneXl5eS1NTS1kZCcpIDogXCJcIjtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zdGFydERhdGUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5zdGFydERhdGUpID8gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0ocnhMaXN0LnN0YXJ0RGF0ZSwgJ3l5eXktTU0tZGQnKSA6IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZW5kRGF0ZSA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHJ4TGlzdC5wcmVzY3JpcHRpb25FeHBpcmVzVmFsdWUsICd5eXl5LU1NLWRkJyk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwgPSByeExpc3QubWluaW11bUludGVydmFsQmV0d2VlblJlcGVhdHMgPT0gLTEgPyAnJyA6IHJ4TGlzdC5taW5pbXVtSW50ZXJ2YWxCZXR3ZWVuUmVwZWF0cztcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wdXJwb3NlU2VhcmNoVmFsdWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5wdXJwb3NlKSA/IHJ4TGlzdC5wdXJwb3NlIDogXCJcIjtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5CcmFuZFN1YnN0aXR1dGVzTm90QWxsb3cgPSByeExpc3QuYnJhbmRTdWJzdGl0dXRlc05vdEFsbG93ZWQgPT0gMCA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5hbm5vdGF0aW9uID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyeExpc3QuYW5ub3RhdGlvbikgPyByeExpc3QuYW5ub3RhdGlvbiA6IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZG9jdG9yTm90ZXMgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5kb2N0b3JOb3RlcykgPyByeExpc3QuZG9jdG9yTm90ZXMgOiBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmlwdGlvblJlYXNvbiA9IHJ4TGlzdC5yZWFzb25Gb3JUaGVyYXBldXRpY0dvb2Q7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9ucyA9IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTm90ZXMgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5wYnNOb3RlcykgPyByeExpc3QucGJzTm90ZXMgOiBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnNBdXQgPSBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8gPSByeExpc3QuYXV0aG9yaXR5QXBwcm92YWxOdW1iZXI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3kgPSByeExpc3Quc2VuZFRvUGhhcm1hY3k7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3lWYWx1ZSA9IHJ4TGlzdC5zZW5kVG9QaGFybWFjeVZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVtZXJnZW5jeVN1cHBseSA9IHJ4TGlzdC5lbWVyZ2VuY3lTdXBwbHk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMubXlTTENvbnNlbnQgPSByeExpc3QubXlTTENvbnNlbnQ7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHkgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yZWd1bGF0aW9uMjQgPSByeExpc3QucmVndWxhdGlvbjI0ID09IDAgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0VHlwZSA9IHJ4TGlzdC5zY3JpcHRUeXBlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkNUR0NvUGF5bWVudCA9IHJ4TGlzdC5wYXRpZW50Q3RnRmxhZyA9PSAwID8gdHJ1ZSA6IGZhbHNlXHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMubGVtaSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzLnJlc3BvbnNlLmFpcCkgPyByZXMucmVzcG9uc2UuYWlwLmxlbWkgOiBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5sbWJjID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMucmVzcG9uc2UuYWlwKSA/IHJlcy5yZXNwb25zZS5haXAubG1iYyA6IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnVuVXN1YWxEb3NlRmxhZyA9IHJ4TGlzdC51blVzdWFsRG9zZUZsYWcgPT0gMCA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5TdGF0ZUF1dGhvcml0eU51bWJlciA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocnhMaXN0LnN0YXRlQXV0aG9yaXR5TnVtYmVyKSA/IHJ4TGlzdC5zdGF0ZUF1dGhvcml0eU51bWJlciA6IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkID0gcnhMaXN0LnJlc3RyaWN0ZWRQYnNTZWxlY3RlZEluZGV4ICE9IDAgPyByeExpc3QucmVzdHJpY3RlZFBic1NlbGVjdGVkSW5kZXggLSAxIDogbnVsbDsgdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyeExpc3QucGJzTGlzdEluc3RydWN0aW9ucykgPyByeExpc3QucGJzTGlzdEluc3RydWN0aW9ucyA6ICcnO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lID0gcnhMaXN0LmlzQnJhbmROYW1lID8gcnhMaXN0LmlzQnJhbmROYW1lIDogZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNTaG93QXV0aG9yaXR5ID0gcnhMaXN0LmlzU2hvd0F1dGhvcml0eSA/IHJ4TGlzdC5pc1Nob3dBdXRob3JpdHkgOiBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5hdXRob3JpdHlGb3JtTm8gPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5wYnNEdmFBdXRob3JpdHlOdW1iZXIpICYmIHJ4TGlzdC5wYnNEdmFBdXRob3JpdHlOdW1iZXIgIT0gMCA/IHJ4TGlzdC5wYnNEdmFBdXRob3JpdHlOdW1iZXIgOiBcIlwiO1xyXG4gICAgICAgICAgICBpZiAocnhMaXN0LmlzU2hvd0F1dGhvcml0eSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHkgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmlwdGlvbiA9IHRydWVcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICBpZiAocnhMaXN0LnN0YXR1cy50b0xvd2VyQ2FzZSgpID09IFwicHJlc2NyaWJlZFwiKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAocnhMaXN0LnN0YXR1cy50b0xvd2VyQ2FzZSgpID09IFwiY2Vhc2VkXCIpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChyeExpc3Quc3RhdHVzLnRvTG93ZXJDYXNlKCkgPT0gXCJjYW5jZWxsZWRcIikge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZWRpdFJlc3RyaWN0RmxhZykge1xyXG4gICAgICAgICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwic2V0RWRpdFZhbHVlc1wiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNldEVkaXRWYWx1ZXNcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNldEVkaXRWYWx1ZXNcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2V0RWRpdFZhbHVlc1wiLCBwYXlsb2FkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvL2VuYWJsZSBlLXByZXNjcmlwdGlvblxyXG4gIGVQcmVzY3JpcHRpb25WYWxpZGF0aW9uKHZhbHVlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpcHRpb24gPT09IHRydWUpIHtcclxuICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscz8uc2NyaXB0VHlwZSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc2NyaXB0VHlwZS50b1VwcGVyQ2FzZSgpID09ICdNJykge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfSBlbHNlIGlmICgoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscz8uc2NyaXB0VHlwZSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc2NyaXB0VHlwZS50b1VwcGVyQ2FzZSgpID09ICdFJyAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzPy5zdGF0dXMpICYmIHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cy50b0xvd2VyQ2FzZSgpID09ICdkcmFmdCcgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLmVQcmVzY3JpcHRpb25BbGxvd2VkID09IDAgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy52ZW5kb3JQYXRpZW50Q29uc2VudCA9PSB0cnVlICYmIHRoaXMuY29tbW9uU2VydmljZXMuY3JlYXRlUGF0aWVudFJlc3BvbnNlLmlzX2hwaW9fdmFsaWQgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5jcmVhdGVQYXRpZW50UmVzcG9uc2UuaXNfaHBpaV92YWxpZCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmNyZWF0ZVBhdGllbnRSZXNwb25zZS5pc19paGlfdmFsaWQpIHx8ICh2YWx1ZSA9PSAxICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHM/LnN0YXR1cykgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzLnRvTG93ZXJDYXNlKCkgPT0gJ2RyYWZ0JykpIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICgodGhpcy5jb21tb25TZXJ2aWNlcy5jcmVhdGVQYXRpZW50UmVzcG9uc2UuaXNfaHBpb192YWxpZCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmNyZWF0ZVBhdGllbnRSZXNwb25zZS5pc19ocGlpX3ZhbGlkICYmIHRoaXMuY29tbW9uU2VydmljZXMuY3JlYXRlUGF0aWVudFJlc3BvbnNlLmlzX2loaV92YWxpZCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMuZVByZXNjcmlwdGlvbkFsbG93ZWQgPT0gMCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnZlbmRvclBhdGllbnRDb25zZW50ID09IHRydWUpIHx8IHZhbHVlID09IDEpIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImVQcmVzY3JpcHRpb25WYWxpZGF0aW9uXCIpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRTdGF0ZVNjaGVkdWxlTnVtYmVyKHNlbGVjdGVkRm9ybXVsYXRpb246IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHNlbGVjdGVkRm9ybXVsYXRpb24gIT0gbnVsbCAmJiBzZWxlY3RlZEZvcm11bGF0aW9uLnN0YXRlU2NoZWR1bGVzICE9IG51bGwgJiYgc2VsZWN0ZWRGb3JtdWxhdGlvbi5zdGF0ZVNjaGVkdWxlcyAhPSBcIlwiKSB7XHJcbiAgICAgICAgdmFyIHN0YXRlU2NoZWR1bGVMaXN0ID0gW107XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxlY3RlZEZvcm11bGF0aW9uLnN0YXRlU2NoZWR1bGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAoc3RhdGVTY2hlZHVsZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBzdGF0ZVNjaGVkdWxlTGlzdC5jb25jYXQoc2VsZWN0ZWRGb3JtdWxhdGlvbi5zdGF0ZVNjaGVkdWxlc1tpXS5zY2hlZHVsZXMpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgc3RhdGVTY2hlZHVsZUxpc3QucHVzaChzZWxlY3RlZEZvcm11bGF0aW9uLnN0YXRlU2NoZWR1bGVzW2ldLnNjaGVkdWxlcyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzdGF0ZVNjaGVkdWxlTGlzdDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gW107XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0U3RhdGVTY2hlZHVsZU51bWJlclwiKTtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXV0aG9yaXR5Tm9WYWxpZGF0aW9uKGV2ZW50OiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBrZXl2YWx1ZSA9IGV2ZW50LmNoYXJDb2RlO1xyXG4gICAgICByZXR1cm4gKChrZXl2YWx1ZSA+IDY0ICYmIGtleXZhbHVlIDwgOTEpIHx8IChrZXl2YWx1ZSA+IDk2ICYmIGtleXZhbHVlIDwgMTIzKSB8fCAoa2V5dmFsdWUgPj0gNDggJiYga2V5dmFsdWUgPD0gNTcpKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiYXV0aG9yaXR5Tm9WYWxpZGF0aW9uXCIpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwYXlMb2FkU3RhdGVTY2hlZHVsZU51bWJlcihTY2hlZHVsZU51bWJlcjogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgc3RhdGVTY2hlZHVsZU51bWJlciA9IHRoaXMuZ2V0U3RhdGVTY2hlZHVsZU51bWJlcihTY2hlZHVsZU51bWJlcik7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHN0YXRlU2NoZWR1bGVOdW1iZXIpKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2V0U3RhdGVDb2RlRnJvbVN0YXRlTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnN0YXRlKS50b1VwcGVyQ2FzZSgpID09IFwiVEFTXCIgJiYgc3RhdGVTY2hlZHVsZU51bWJlci5sZW5ndGggIT0gMCAmJiBzdGF0ZVNjaGVkdWxlTnVtYmVyWzBdLmluZGV4T2YoXCJTNERcIikgIT0gLTEpIHtcclxuICAgICAgICAgIHJldHVybiBcIlM0RFwiO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5nZXRTdGF0ZUNvZGVGcm9tU3RhdGVOYW1lKHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuc3RhdGUpLnRvVXBwZXJDYXNlKCkgPT0gXCJOU1dcIiAmJiBzdGF0ZVNjaGVkdWxlTnVtYmVyLmxlbmd0aCAhPSAwICYmIHN0YXRlU2NoZWR1bGVOdW1iZXJbMF0uaW5kZXhPZihcIlM0QlwiKSAhPSAtMSkge1xyXG4gICAgICAgICAgcmV0dXJuIFwiUzRCXCI7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJwYXlMb2FkU3RhdGVTY2hlZHVsZU51bWJlclwiKTtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcmVzY3JpcGVBYm9ydCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBwYXlsb2FkID0ge1xyXG4gICAgICAgIHJlcXVlc3RfdHlwZTogXCJwYXJhbWV0ZXJcIixcclxuICAgICAgICB1c2VySWQ6IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy51c2VySWQsXHJcbiAgICAgICAgcGF0VXNlcklkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnBhdGllbnRVc2VySWRcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmFib3J0ZGlzYWJsZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5hcGlTZXJ2aWNlLkdldChjb25maWcuUEhZU0lDSUFOLlJYX1BSRVNDUklCRV9BQk9SVCArIFwiP3VzZXJJZD1cIiArIHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy51c2VySWQgKyBcIiZwYXRVc2VySWQ9XCIgKyB0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnBhdGllbnRVc2VySWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuaXNBYm9ydCA9IHRydWU7XHJcbiAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuYWJvcnRFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0RXJyX2NvZGUgPSBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlO1xyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydE1zZyA9IGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJwcmVzY3JpcGVBYm9ydFwiLCB0aGlzLnJlc3BvbnNlRGF0YS5wYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0U3VjY2VzcyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuYWJvcnRNc2cgPSByZXMucmVzcG9uc2VfbWVzc2FnZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgLy8gdGhpcy5jb21tb25TZXJ2aWNlcy5yeGlkID0gXCJcIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydEVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydEVycl9jb2RlID0gcmVzLmVycm9yX2NvZGU7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuYWJvcnRNc2cgPSByZXMucmVzcG9uc2VfbWVzc2FnZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJwcmVzY3JpcGVBYm9ydFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMucmVzcG9uc2VEYXRhLmlzUHJlc2NyaWJlKVxyXG4gICAgICAgICAgICB0aGlzLnNob3dSZXNwb25zZU1lc3NhZ2UoKTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgIHRoaXMuYWJvcnRCdG5GbGFnID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInByZXNjcmlwZUFib3J0XCIsIHBheWxvYWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmlzQWJvcnQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0RXJyb3IgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0TXNnID0gZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0RXJyX2NvZGUgPSBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlXHJcbiAgICAgICAgaWYgKHRoaXMucmVzcG9uc2VEYXRhLmlzUHJlc2NyaWJlKVxyXG4gICAgICAgICAgdGhpcy5zaG93UmVzcG9uc2VNZXNzYWdlKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJwcmVzY3JpcGVBYm9ydFwiLCBwYXlsb2FkKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmFib3J0QnRuRmxhZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJlc2NyaXBlQWJvcnRcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaG93UmVzcG9uc2VNZXNzYWdlKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydFN1Y2Nlc3MgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVkYXRhKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShcIlwiLCB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVkYXRhLnJlc3BvbnNlX21lc3NhZ2UsIHRydWUsIHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZWRhdGEuZGF0YSk7XHJcbiAgICAgICAgdGhpcy5jbG9zZSh0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVkYXRhLmRhdGEpO1xyXG4gICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmlzUHJpbnRBdmFpbGFibGUgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlZGF0YS5maWxlX3VybCkpIHtcclxuICAgICAgICAgICAgdGhpcy5hcGlTZXJ2aWNlLkdldCh0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVkYXRhLmZpbGVfdXJsKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzcG9uc2UpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcInNob3dSZXNwb25zZU1lc3NhZ2VcIiwgdGhpcy5yZXNwb25zZURhdGEucGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJ5dGVBcnJheSA9IG5ldyBVaW50OEFycmF5KGF0b2IocmVzcG9uc2UuZmlsZSkuc3BsaXQoJycpLm1hcChjaGFyID0+IGNoYXIuY2hhckNvZGVBdCgwKSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdmFyIGJiYiA9IG5ldyBCbG9iKFtieXRlQXJyYXldLCB7IHR5cGU6IFwiYXBwbGljYXRpb24vcGRmXCIgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmJiKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1dpbmRvdyA9IHdpbmRvdy5vcGVuKHVybCwgJ19ibGFuaycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKG5ld1dpbmRvdykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdXaW5kb3cuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByaW50V2FybmluZ1BvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJzaG93UmVzcG9uc2VNZXNzYWdlXCIsIHRoaXMucmVzcG9uc2VEYXRhLnBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgdGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlZGF0YS5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZSh0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVkYXRhLmVycm9yX2NvZGUsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2hvd1Jlc3BvbnNlTWVzc2FnZVwiLCB0aGlzLnJlc3BvbnNlRGF0YS5wYXlsb2FkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNob3dSZXNwb25zZU1lc3NhZ2VcIiwgdGhpcy5yZXNwb25zZURhdGEucGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydFN1Y2Nlc3MgJiYgdGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlRXJyb3IpIHtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4odGhpcy5yZXNwb25zZURhdGEuYWJvcnRNc2csICdzdWNjZXNzJyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoKHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZVN1Y2Nlc3MgJiYgIXRoaXMucmVzcG9uc2VEYXRhLmFib3J0RXJyb3IgJiYgIXRoaXMucmVzcG9uc2VEYXRhLmFib3J0U3VjY2VzcykpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3Blbih0aGlzLnJlc3BvbnNlRGF0YS5QcmVzY3JpYmVNc2csICdzdWNjZXNzJyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoKHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZUVycm9yICYmICF0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydEVycm9yICYmICF0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydFN1Y2Nlc3MpKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4odGhpcy5yZXNwb25zZURhdGEuUHJlc2NyaWJlTXNnLCAnZXJyb3InLCB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVFcnJfY29kZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlU3VjY2VzcyAmJiB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydEVycm9yKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4odGhpcy5yZXNwb25zZURhdGEuUHJlc2NyaWJlTXNnLCAnc3VjY2VzcycpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKHRoaXMucmVzcG9uc2VEYXRhLmFib3J0TXNnLCBcImVycm9yXCIsIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0RXJyX2NvZGUpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZUVycm9yICYmIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0RXJyb3IpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3Blbih0aGlzLnJlc3BvbnNlRGF0YS5QcmVzY3JpYmVNc2csICdlcnJvcicsIHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZUVycl9jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3Blbih0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydE1zZywgXCJlcnJvclwiLCB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydEVycl9jb2RlKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVTdWNjZXNzICYmIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0U3VjY2Vzcykge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKHRoaXMucmVzcG9uc2VEYXRhLmFib3J0TXNnLCBcInN1Y2Nlc3NcIik7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5hYm9ydEJ0bkZsYWcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5pc2VwcmlzY3JpYmVwcmludCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnJlc3BvbnNlRGF0YS5pc0Fib3J0ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmlzUHJlc2NyaWJlID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0U3VjY2VzcyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVFcnJvciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVTdWNjZXNzID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0RXJyb3IgPSBmYWxzZTtcclxuICAgICAgdGhpcy5yZXNwb25zZURhdGEuUHJlc2NyaWJlTXNnID0gXCJcIjtcclxuICAgICAgdGhpcy5yZXNwb25zZURhdGEuYWJvcnRNc2cgPSBcIlwiO1xyXG4gICAgICB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVkYXRhID0gXCJcIjtcclxuICAgICAgdGhpcy5yZXNwb25zZURhdGEucGF5bG9hZCA9IFwiXCI7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2hvd1Jlc3BvbnNlTWVzc2FnZVwiLCB0aGlzLnJlc3BvbnNlRGF0YS5wYXlsb2FkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIE1JTVNQcmltYXJ5U2VhcmNoKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIHBheWxvYWQgPSB7fTtcclxuICAgICAgaWYgKCF0aGlzLmlzU3RpbGxTZWFyY2hpbmcgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuc2VhcmNoQXBpU3RvcEZsYWcpIHtcclxuICAgICAgICAvLyBpZiAodGhpcy5zZWFyY2hNZWRpY2luZXNMZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgcGF5bG9hZCA9IHtcclxuICAgICAgICAgICAgcmVxdWVzdF90eXBlOiBcInBhcmFtZXRlclwiLFxyXG4gICAgICAgICAgICBwcm9kdWN0TmFtZTogdGhpcy5Qcm9kdWN0U2VhcmNoTmFtZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuaXNTdGlsbFNlYXJjaGluZykge1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5QcmltYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lc0xlbmd0aCA9IDA7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMubWVkaVNlYXJjaFZhbHVlLnRyaW0oKS5sZW5ndGggPCAzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNTdGlsbFNlYXJjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuUHJpbWFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWFyY2hBcGlTdG9wRmxhZyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuc2VhcmNoZWRNZWRpY2luZUxpc3QubGVuZ3RoIDwgOClcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHRoaXMuUHJpbWFyeVNlYXJjaFNwaW5uZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZXNQYWdlTnVtYmVyICs9IDE7XHJcbiAgICAgICAgICB2YXIgcGJzVHlwZSA9IHRoaXMucnhPbmx5UEJTICYmIHRoaXMucnhQcml2YXRlID8gXCJcIiA6IHRoaXMucnhPbmx5UEJTID8gXCJQQlMsUlBCU1wiIDogdGhpcy5yeFByaXZhdGUgPyBcIlByaXZhdGVcIiA6IFwiXCI7XHJcbiAgICAgICAgICBjb25zdCBzZWFyY2hNZXRob2QgPSB0aGlzLmNvbW1vblNlcnZpY2VzLnNtYXJ0U2VhcmNoID8gY29uZmlnLkdFVF9NRURTX0JZX1NNQVJUX1NFQVJDSCArICc/cHJvZHVjdE5hbWU9JyArIGVuY29kZVVSSUNvbXBvbmVudCh0aGlzLlByb2R1Y3RTZWFyY2hOYW1lKSArICcmcGFnZT0nICsgdGhpcy5zZWFyY2hNZWRpY2luZXNQYWdlTnVtYmVyICsgJyZub09mUmVjPTEwJnBic1R5cGU9JyArIHBic1R5cGVcclxuICAgICAgICAgICAgOiBjb25maWcuR0VUX01FRFNfQllfU0VBUkNIICsgJz9wcm9kdWN0TmFtZT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuUHJvZHVjdFNlYXJjaE5hbWUpICsgJyZwYWdlPScgKyB0aGlzLnNlYXJjaE1lZGljaW5lc1BhZ2VOdW1iZXIgKyAnJm5vT2ZSZWM9MTAnXHJcblxyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5NSU1TUHJpbWFyeWFwaSA9IHRoaXMuYXBpU2VydmljZS5HZXQoc2VhcmNoTWV0aG9kKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuaXNTdGlsbFNlYXJjaGluZykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlByaW1hcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lc0xlbmd0aCA9IDA7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5QcmltYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZXNMZW5ndGggPSAwOyB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwiTUlNU1ByaW1hcnlTZWFyY2hcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZExpc3QgPSByZXMucmVzcG9uc2UuZmlsdGVyKChpdGVtOiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuaXNQYnNUeXBlTWF0Y2goaXRlbS5wYnNUeXBlLCBwYnNUeXBlKVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVzTGVuZ3RoID0gZmlsdGVyZWRMaXN0Lmxlbmd0aDtcclxuICAgICAgICAgICAgICAgIGZpbHRlcmVkTGlzdC5mb3JFYWNoKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgLy8gaWYgKHRoaXMuc2VhcmNoZWRNZWRpY2luZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHRoaXMuc2VhcmNoZWRNZWRpY2luZUxpc3QuZmlsdGVyKCh4OiBhbnkpID0+IHgucHJvZERpc3BsYXlWYWx1ZSA9PSBkYXRhLnByb2REaXNwbGF5VmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5mb3JFYWNoKCh2YWw6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcHJvZHVjdCA9IHZhbC5wcm9kSGlkZGVuVmFsdWUuaW5jbHVkZXMoZGF0YS5wcm9kSGlkZGVuVmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IGRhdGEuc2VhcmNoQmFzZS50b0xvd2VyQ2FzZSgpID09ICdicmFuZGtleScgPyAnQksnIDogZGF0YS5zZWFyY2hCYXNlLnRvTG93ZXJDYXNlKCkgPT0gJ3Byb2RwYWNra2V5JyA/ICdQUEsnIDogZGF0YS5zZWFyY2hCYXNlLnRvTG93ZXJDYXNlKCkgPT0gJ3ZpcnR1YWxuYW1lJyA/ICdWTicgOiBkYXRhLnNlYXJjaEJhc2UudG9Mb3dlckNhc2UoKSA9PSAncHJvZHVjdGtleScgPyAnUEsnIDogZGF0YS5zZWFyY2hCYXNlLnRvTG93ZXJDYXNlKCkgPT0gJ3Byb2R1Y3RrZXlhY3RpdmVpbmdyZWRpZW50JyA/ICdQS0EnIDogZGF0YS5zZWFyY2hCYXNlLnRvTG93ZXJDYXNlKCkgPT0gJ2Z1bGxwaScgPyAnRlBJJyA6ICdQTic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvZHVjdCAmJiB0eXBlICE9ICdQS0EnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLnByb2RIaWRkZW5WYWx1ZSArPSAnLCcgKyBkYXRhLnByb2RIaWRkZW5WYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdC5wdXNoKGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdC5sZW5ndGggPiA3IHx8IHJlcy5yZXNwb25zZS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuUHJpbWFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZS5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdC5sZW5ndGggPCA4ICYmIHRoaXMuaXNTdGlsbFNlYXJjaGluZykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLk1JTVNQcmltYXJ5U2VhcmNoKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuUHJpbWFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVzTGVuZ3RoID0gMDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcInByaW1hcnlNSU1TU2VhcmNoXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5QcmltYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVzTGVuZ3RoID0gMDtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJwcmltYXJ5TUlNU1NlYXJjaFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuUHJpbWFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZXNMZW5ndGggPSAwO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJpbWFyeU1JTVNTZWFyY2hcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5QcmltYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNlYXJjaE1lZGljaW5lc0xlbmd0aCA9IDA7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJwcmltYXJ5TUlNU1NlYXJjaFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIE1JTVNTZWNvbmRhcnlTZWFyY2goKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuaXNTdGlsbFNlYXJjaGluZyAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5zZWFyY2hBcGlTdG9wRmxhZykge1xyXG4gICAgICAgIHZhciBwYXlsb2FkID0ge307XHJcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoQnluYW1lTGVuZ3RoICE9IDAgJiYgdGhpcy5Qcm9kdWN0VHlwZS50b0xvd2VyQ2FzZSgpICE9IFwicGtcIiAmJiB0aGlzLlByb2R1Y3RUeXBlLnRvTG93ZXJDYXNlKCkgIT0gXCJwblwiICYmIHRoaXMuUHJvZHVjdFR5cGUudG9Mb3dlckNhc2UoKSAhPSBcInZuXCIgJiYgdGhpcy5Qcm9kdWN0VHlwZS50b0xvd2VyQ2FzZSgpICE9IFwiZnBpXCIpIHtcclxuICAgICAgICAgIHBheWxvYWQgPSB7XHJcbiAgICAgICAgICAgIHJlcXVlc3RfdHlwZTogXCJwYXJhbWV0ZXJcIixcclxuICAgICAgICAgICAgcHJvZHVjdE5hbWU6IHRoaXMucHJvZEhpZGRlbk5hbWUsXHJcbiAgICAgICAgICAgIHR5cGU6IHRoaXMuUHJvZHVjdFR5cGUsXHJcbiAgICAgICAgICAgIHByZXNjcmliZXJUeXBlOiBcIk1QXCJcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0Lmxlbmd0aCA8PSAzKVxyXG4gICAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaEJ5bmFtZVBhZ2VOdW1iZXIgKz0gMTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuTUlNU1NlY29uZGFyeWFwaSA9IHRoaXMuYXBpU2VydmljZS5HZXQoY29uZmlnLkdFVF9NRURTX0JZX05BTUUgKyAnP3Byb2R1Y3ROYW1lPScgKyBlbmNvZGVVUklDb21wb25lbnQodGhpcy5wcm9kSGlkZGVuTmFtZSkgKyAnJnR5cGU9JyArIHRoaXMuUHJvZHVjdFR5cGUgKyAnJnByZXNjcmliZXJUeXBlPU1QJnBhZ2U9JyArIHRoaXMuc2VhcmNoQnluYW1lUGFnZU51bWJlciArICcmbm9PZlJlYz0xMCcpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoQnluYW1lTGVuZ3RoID0gMDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VhcmNoQXBpU3RvcEZsYWcgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlOyB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwiTUlNU1NlY29uZGFyeVNlYXJjaFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlYXJjaEFwaVN0b3BGbGFnKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5TZWNvbmRhcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaEJ5bmFtZVBhZ2VOdW1iZXIgPSAxO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICByZXMucmVzcG9uc2UuZm9yRWFjaCgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwucHVzaChkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoQnluYW1lTGVuZ3RoID0gcmVzLnJlc3BvbnNlLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgLy8gaWYgKHRoaXMuaXNOb25QYnNGbGFnKSB7XHJcbiAgICAgICAgICAgICAgICAgIC8vICAgdGhpcy5yeE9ubHlOT05QQlNGaWx0ZXIoKTtcclxuICAgICAgICAgICAgICAgICAgLy8gfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgLy8gICBpZiAodGhpcy5yeE9ubHlQQlMgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAvLyAgICAgdGhpcy5yeE9ubHlQQlNGaWx0ZXIoKTtcclxuICAgICAgICAgICAgICAgICAgLy8gICB9XHJcbiAgICAgICAgICAgICAgICAgIC8vICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWw7XHJcbiAgICAgICAgICAgICAgICAgIC8vICAgfVxyXG4gICAgICAgICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMub25DaGVja2JveENoYW5nZSgyKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdC5sZW5ndGggPD0gMykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzLnJlc3BvbnNlKSAmJiByZXMucmVzcG9uc2UubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLk1JTVNTZWNvbmRhcnlTZWFyY2goKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaEJ5bmFtZUxlbmd0aCA9IDA7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlYXJjaEFwaVN0b3BGbGFnID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcIk1JTVNTZWNvbmRhcnlTZWFyY2hcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5TZWNvbmRhcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWFyY2hCeW5hbWVMZW5ndGggPSAwO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIk1JTVNTZWNvbmRhcnlTZWFyY2hcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWFyY2hBcGlTdG9wRmxhZyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiTUlNU1NlY29uZGFyeVNlYXJjaFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiTUlNU1NlY29uZGFyeVNlYXJjaFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaW50V2FybmluZ1BvcCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBkYXRhID0gXCJQbGVhc2UgZW5hYmxlIHBvcHVwIG9uIHRoZSBicm93c2VyIHRvIHZpZXcvcHJpbnQgdGhlIHByZXNjcmlwdGlvbi5cIjtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKFJlYWxUaW1lUHJlc2NyaXB0aW9uTW9uaXRvcmluZ0NvbXBvbmVudCwgdGhpcy5jb250ZW50LCBkYXRhKS5zdWJzY3JpYmUoKHJlcykgPT4geyB9KTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJpbnRXYXJuaW5nUG9wXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbnVtYmVyVG9Xb3JkKG46IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKG4gPCAwKVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgdmFyIHNpbmdsZV9kaWdpdCA9IFsnJywgJ09uZScsICdUd28nLCAnVGhyZWUnLCAnRm91cicsICdGaXZlJywgJ1NpeCcsICdTZXZlbicsICdFaWdodCcsICdOaW5lJ11cclxuICAgICAgdmFyIGRvdWJsZV9kaWdpdCA9IFsnVGVuJywgJ0VsZXZlbicsICdUd2VsdmUnLCAnVGhpcnRlZW4nLCAnRm91cnRlZW4nLCAnRmlmdGVlbicsICdTaXh0ZWVuJywgJ1NldmVudGVlbicsICdFaWdodGVlbicsICdOaW5ldGVlbiddXHJcbiAgICAgIHZhciBiZWxvd19odW5kcmVkID0gWydUd2VudHknLCAnVGhpcnR5JywgJ0ZvcnR5JywgJ0ZpZnR5JywgJ1NpeHR5JywgJ1NldmVudHknLCAnRWlnaHR5JywgJ05pbmV0eSddXHJcbiAgICAgIGlmIChuID09PSAwKSByZXR1cm4gJ1plcm8nO1xyXG4gICAgICBmdW5jdGlvbiB0cmFuc2xhdGUobjogYW55KSB7XHJcbiAgICAgICAgdmFyIHdvcmQ6IGFueSA9ICcnXHJcbiAgICAgICAgaWYgKG4gPCAxMCkge1xyXG4gICAgICAgICAgd29yZCA9IHNpbmdsZV9kaWdpdFtuXSArICcgJ1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChuIDwgMjApIHtcclxuICAgICAgICAgIHdvcmQgPSBkb3VibGVfZGlnaXRbbiAtIDEwXSArICcgJ1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChuIDwgMTAwKSB7XHJcbiAgICAgICAgICB2YXIgcmVtID0gdHJhbnNsYXRlKG4gJSAxMClcclxuICAgICAgICAgIHdvcmQgPSBiZWxvd19odW5kcmVkWyhuIC0gbiAlIDEwKSAvIDEwIC0gMl0gKyAnICcgKyByZW1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAobiA8IDEwMDApIHtcclxuICAgICAgICAgIHdvcmQgPSBzaW5nbGVfZGlnaXRbTWF0aC50cnVuYyhuIC8gMTAwKV0gKyAnIEh1bmRyZWQgJyArIHRyYW5zbGF0ZShuICUgMTAwKVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChuIDwgMTAwMDAwMCkge1xyXG4gICAgICAgICAgd29yZCA9IHRyYW5zbGF0ZShuIC8gMTAwMCkudHJpbSgpICsgJyBUaG91c2FuZCAnICsgdHJhbnNsYXRlKG4gJSAxMDAwKVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChuIDwgMTAwMDAwMDAwMCkge1xyXG4gICAgICAgICAgd29yZCA9IHRyYW5zbGF0ZShuIC8gMTAwMDAwMCkudHJpbSgpICsgJyBNaWxsaW9uICcgKyB0cmFuc2xhdGUobiAlIDEwMDAwMDApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgd29yZCA9IHRyYW5zbGF0ZShuIC8gMTAwMDAwMDAwMCkudHJpbSgpICsgJyBCaWxsaW9uICcgKyB0cmFuc2xhdGUobiAlIDEwMDAwMDAwMDApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB3b3JkXHJcbiAgICAgIH1cclxuICAgICAgdmFyIHJlc3VsdCA9IHRyYW5zbGF0ZShuKVxyXG4gICAgICByZXR1cm4gcmVzdWx0LnRyaW0oKVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJudW1iZXJUb1dvcmRcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RXh0ZW1wTVBQTmFtZSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikgIT0gbnVsbCkge1xyXG4gICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXQpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXQubGVuZ3RoICE9IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdPy5tcHBzKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLm1wcHMubGVuZ3RoID4gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0ubXBwc1swXT8ubXBwTmFtZSkpIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLm1wcHNbMF0ubXBwTmFtZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5wcm9kdWN0TmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUudHJpbSgpIDogXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0RXh0ZW1wTVBQTmFtZVwiKTtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBodG1sVG9UZXh0Q29udmVydCh2YWx1ZTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCB0bXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdESVYnKTtcclxuICAgICAgdG1wLmlubmVySFRNTCA9IHZhbHVlO1xyXG4gICAgICByZXR1cm4gdG1wLnRleHRDb250ZW50IHx8IHRtcC5pbm5lclRleHQgfHwgJyc7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImh0bWxUb1RleHRDb252ZXJ0XCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGF1dGhvcml0eU5vQ2hhbmdlKHZhbHVlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5TdGF0ZUF1dGhvcml0eU51bWJlciA9IHZhbHVlLnJlcGxhY2UoL1teYS16QS1aIDAtOV0vZywgXCJcIikucmVwbGFjZSgvXFxzKy9nLCBcIlwiKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJhdXRob3JpdHlOb0NoYW5nZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFscGhhUmVzdHJpY3Rpb24oZXZlbnQ6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIGtleXZhbHVlID0gZXZlbnQuY2hhckNvZGU7XHJcbiAgICAgIHJldHVybiAoKGtleXZhbHVlID4gNjQgJiYga2V5dmFsdWUgPCA5MSkgfHwgKGtleXZhbHVlID4gOTYgJiYga2V5dmFsdWUgPCAxMjMpIHx8IChrZXl2YWx1ZSA+PSA0OCAmJiBrZXl2YWx1ZSA8PSA1NykgfHwga2V5dmFsdWUgPT0gMzIpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJhbHBoYVJlc3RyaWN0aW9uXCIpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFkZFRvRmF2b3VyaXRlcygpIHtcclxuICAgIGNvbnN0IGlzSW5GYXZvdXJpdGVzID0gdGhpcy5pc0N1cnJlbnRNZWRpY2luZUluRmF2b3VyaXRlcygpO1xyXG4gICAgY29uc3QgaXNBZGRpbmcgPSAhaXNJbkZhdm91cml0ZXM7XHJcbiAgICB2YXIgcGh5c2ljaWFuRGV0YWlscyA9IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscztcclxuICAgIHZhciBib2R5ID0ge1xyXG4gICAgICB1c2VySWRTdHJpbmc6IHBoeXNpY2lhbkRldGFpbHMudXNlcklkLFxyXG4gICAgICBwcm9kdWN0SWQ6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0SWQsXHJcbiAgICAgIHByb2R1Y3ROYW1lOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZSk/dGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lOlwiXCIsXHJcbiAgICAgIHF1YW50aXR5OiB0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsLFxyXG4gICAgICByZXBlYXRzOiB0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwsXHJcbiAgICAgIHJlc3RyaWN0aW9uOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3Q/KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMgIT0gbnVsbCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zICE9IFwiXCJcclxuICAgICAgICAgICAgICAgICAgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzVHlwZSArIFwiIChcIiArIHRoaXMuZ2V0UmVzdHJpY3Rpb25zKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMpICsgXCIpIFwiXHJcbiAgICAgICAgICAgICAgICAgIDogdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic1R5cGUpOlwiXCIsXHJcbiAgICAgIGdlbmVyaWNOYW1lOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5nZW5lcmljTmFtZSk/dGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmdlbmVyaWNOYW1lOlwiXCIsXHJcbiAgICAgIHBic0NvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5wYnNDb2RlKT90aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LnBic0NvZGU6XCJcIixcclxuICAgICAgYWN0aXZlOiBpc0FkZGluZyxcclxuICAgICAgcmVzdHJpY3RlZE1lZGljaW5lOiB0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCxcclxuICAgICAgZG9zZTogdGhpcy5jb21tb25TZXJ2aWNlcy5kb3NlU2VhcmNoVmFsdWUsXHJcbiAgICAgIGZyZXF1ZW5jeTogdGhpcy5jb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWUsXHJcbiAgICAgIGZvb2Q6dGhpcy5jb21tb25TZXJ2aWNlcy5mb29kU2VhcmNoVmFsdWUsXHJcbiAgICAgIGluc3RydWN0aW9uOnRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSxcclxuICAgICAgcm91dGU6dGhpcy5jb21tb25TZXJ2aWNlcy5yb3V0ZVNlYXJjaFZhbHVlLFxyXG4gICAgICAuLi4oIWlzQWRkaW5nICYmIHsgZW5jcnlwdGVkSWQ6IHRoaXMuY29tbW9uU2VydmljZXMuZmF2b3VyaXRlRW5jcnlwdGVkSWQgfSksXHJcbiAgICB9XHJcbiAgICAgICAgdGhpcy5hcGlTZXJ2aWNlLlBvc3QoYm9keSwgY29uZmlnLlBIWVNJQ0lBTi5BRERfRkFWT1VSSVRFX01FRElDSU5FKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJBZGRGYXZvdXJpdGVzXCIsIGJvZHkpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZhdm91cml0ZU1lZGljaW5lTGlzdCA9IHJlcy5mYXZvdXJ0aWVzTGlzdCB8fCBbXTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLm9yaWdpbmFsRmF2b3VyaXRlTWVkaWNpbmVMaXN0ID0gcmVzLmZhdm91cnRpZXNMaXN0IHx8IFtdO1xyXG4gICAgICAgICAgICAgIGlmICghaXNBZGRpbmcpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZmF2b3VyaXRlRW5jcnlwdGVkSWQgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5jbGVhck1lZGljYWxQcmVzY3JpcHRpb25GYXZvdXJpdGVEYXRhKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dGYXZvdXJpdGVNZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFyZXMuZmF2b3VydGllc0xpc3QgfHwgcmVzLmZhdm91cnRpZXNMaXN0Lmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihcclxuICAgICAgICAgICAgICAgICAgICBcIk5vIG1vcmUgZmF2b3VyaXRlcyByZW1haW5pbmcuIFlvdSBjYW4gYWRkIG1lZGljaW5lcyB0byBmYXZvdXJpdGVzIGZyb20gdGhlIHNlYXJjaCByZXN1bHRzLlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiaW5mb1wiXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZmF2b3VyaXRlRW5jcnlwdGVkSWQgPSByZXMuZmF2b3VydGllc0xpc3QgJiYgcmVzLmZhdm91cnRpZXNMaXN0Lmxlbmd0aCA+IDAgPyByZXMuZmF2b3VydGllc0xpc3RbcmVzLmZhdm91cnRpZXNMaXN0Lmxlbmd0aCAtIDFdLmVuY3J5cHRlZElkIDogXCJcIjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwiQWRkRmF2b3VyaXRlc1wiLCBib2R5KTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJBZGRGYXZvdXJpdGVzXCIsIGJvZHkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiQWRkRmF2b3VyaXRlc1wiLCBib2R5KTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAgZ2V0RmF2b3VydGllc0xpc3QoKSB7XHJcbiAgICB2YXIgcGF5bG9hZCA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgcGF5bG9hZCA9IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy51c2VySWQ7XHJcbiAgICAgIHRoaXMuYXBpU2VydmljZS5HZXQoY29uZmlnLlBIWVNJQ0lBTi5HRVRfRkFWT1VSSVRFX01FRElDSU5FX0xJU1QgKyBcIj91c2VySWRTdHJpbmc9XCIgKyBwYXlsb2FkK1wiJnJlc3RyaWN0ZWRNZWRpY2luZT1cIit0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcImdldEZhdm91cnRpZXNMaXN0XCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZhdm91cml0ZU1lZGljaW5lTGlzdCA9IHJlcy5mYXZvdXJpdGVzTGlzdDtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5vcmlnaW5hbEZhdm91cml0ZU1lZGljaW5lTGlzdCA9IHJlcy5mYXZvdXJpdGVzTGlzdDtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZmF2b3VyaXRlTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMub3JpZ2luYWxGYXZvdXJpdGVNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJnZXRGYXZvdXJ0aWVzTGlzdFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldEZhdm91cnRpZXNMaXN0XCIsIHBheWxvYWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0RmF2b3VydGllc0xpc3RcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRGYXZvdXJ0aWVzTGlzdFwiLCBwYXlsb2FkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNob3dGYXZvdXJ0aWVzKCkge1xyXG4gICAgdGhpcy5jb21tb25TZXJ2aWNlcy5mYXZvdXJpdGVFbmNyeXB0ZWRJZCA9IFwiXCI7XHJcbiAgICB0aGlzLnNob3dGYXZvdXJpdGVNZWQgPSAhdGhpcy5zaG93RmF2b3VyaXRlTWVkO1xyXG4gICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCkge1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLk1JTVNQcmltYXJ5YXBpKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuTUlNU1ByaW1hcnlhcGkudW5zdWJzY3JpYmUoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLk1JTVNTZWNvbmRhcnlhcGkpKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5NSU1TU2Vjb25kYXJ5YXBpLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLnNob3dGYXZvdXJpdGVNZWQpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uID0gbnVsbDtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCA9IFtdO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZhdm91cml0ZU1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZmF2b3VyaXRlTWVkaWNpbmVMaXN0ID0gdGhpcy5jb21tb25TZXJ2aWNlcy5vcmlnaW5hbEZhdm91cml0ZU1lZGljaW5lTGlzdDtcclxuICAgIH1cclxuICAgIHRoaXMuY29tbW9uU2VydmljZXMuY2xlYXJNZWRpY2FsUHJlc2NyaXB0aW9uRGF0YSgpO1xyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5jbGVhck1lZGljYWxQcmVzY3JpcHRpb25GYXZvdXJpdGVEYXRhKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gPSBudWxsO1xyXG4gICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgdGhpcy5QcmltYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZWFyY2hNZWRpY2luZXNMZW5ndGggPSAwO1xyXG4gICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWFyY2hBcGlTdG9wRmxhZyA9IHRydWU7XHJcbiAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgdGhpcy5TZWNvbmRhcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgICBcclxuICAgIHRoaXMuc2VhcmNoZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgIHRoaXMuY29tbW9uU2VydmljZXMubWVkaVNlYXJjaFZhbHVlID0gXCJcIjtcclxuICAgIHRoaXMubWVkaVNlYXJjaFZhbHVlID0gXCJcIjtcclxuICAgIHRoaXMudGVtcE1lZGlTZWFyY2hWYWx1ZSA9IFwiXCI7XHJcbiAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICAvL0Zhdm91cml0ZU1lZGljaW5lIExvYWRpbmdcclxuICBmYXZvdXJpdGVNZWRpY2luZUxvYWRpbmcocnhMaXN0OiBhbnkpIHtcclxuICAgIHZhciBwYXlsb2FkID0ge307XHJcbiAgICB0cnkge1xyXG4gICAgICBpZighdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3Qpe1xyXG4gICAgICByeExpc3QucGJzQ29kZSA9IHJ4TGlzdC5wYnNDb2RlICE9IG51bGwgPyByeExpc3QucGJzQ29kZSA6IFwiXCI7XHJcbiAgICAgIHBheWxvYWQgPSB7XHJcbiAgICAgICAgcmVxdWVzdF90eXBlOiBcInBhcmFtZXRlclwiLFxyXG4gICAgICAgIHByb2R1Y3RJZDogcnhMaXN0LnByb2R1Y3RJZCxcclxuICAgICAgICBwYnNDb2RlOiByeExpc3QucGJzQ29kZSxcclxuICAgICAgICByeElkOiAwXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuZmF2TWVkaWNpbmVMb2FkZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZhdm91cml0ZUVuY3J5cHRlZElkID0gcnhMaXN0LmVuY3J5cHRlZElkO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuYXBpU2VydmljZS5HZXQoY29uZmlnLlBIWVNJQ0lBTi5HRVRfTUVEX0RFVF9CWV9JRCArIFwiP3Byb2R1Y3RJZD1cIiArIHJ4TGlzdC5wcm9kdWN0SWQgKyBcIiZwYnNDb2RlPVwiICsgKHRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0ID8gcnhMaXN0LnBic0NvZGUgOiBcIlwiKSArIFwiJnJ4SWQ9XCIgKyAwKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICB0aGlzLmZhdk1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcInNldEVkaXRWYWx1ZXNcIiwgdGhpcy5yZXNwb25zZURhdGEucGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmF2TWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdmFyIE1lZCA9IFtdO1xyXG4gICAgICAgICAgICBNZWQucHVzaChyZXMucmVzcG9uc2UpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gTWVkO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCA9IE1lZDtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uID0gTWVkO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNsZWFyTWVkaWNhbFByZXNjcmlwdGlvbkRhdGFPbmNoYW5nZW9mTWVkaWNpbmUoTWVkKTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RGb3JtdWxhdGlvbihyZXMucmVzcG9uc2UsIDApO1xyXG4gICAgICAgICAgICB0aGlzLmFzc2lnbkNvbWJpbmF0aW9ucyhyeExpc3QpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5tZWRpU2VhcmNoVmFsdWUgPSBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLm1lZGlTZWFyY2hWYWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMudGVtcE1lZGlTZWFyY2hWYWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5wYWdlID0gMTtcclxuICAgICAgICAgICAgdGhpcy5yeE9ubHlQQlMgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmF2TWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJzZXRFZGl0VmFsdWVzXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgIHRoaXMuZmF2TWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2V0RWRpdFZhbHVlc1wiLCBwYXlsb2FkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLmZhdk1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2V0RWRpdFZhbHVlc1wiLCBwYXlsb2FkKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZmF2TWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB2YXIgc2VsZWN0ZWRkYXRhID0gbnVsbDtcclxuICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyeExpc3Q/LnByb2R1Y3RJZCkpIHtcclxuICAgICAgICAgIHNlbGVjdGVkZGF0YSA9IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QuZmlsdGVyKCh4OiB7IHByb2R1Y3RJZDogYW55OyB9KSA9PiB4LnByb2R1Y3RJZCA9PSBOdW1iZXIocnhMaXN0LnByb2R1Y3RJZCkpO1xyXG4gICAgICAgICAgLy8gc2VsZWN0ZWRkYXRhID0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdC5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiA9IHNlbGVjdGVkZGF0YVswXTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY2xlYXJNZWRpY2FsUHJlc2NyaXB0aW9uRGF0YU9uY2hhbmdlb2ZNZWRpY2luZShzZWxlY3RlZGRhdGFbMF0pO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmlzUnRwbU5leHQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5hdXRob3JpdHlGb3JtTm8gPSB0aGlzLmdldEFkZEF1dGhWYWx1ZSh0aGlzLnRlbXBBdXRob3JpdHlGb3JtTm8pO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEVuZERhdGVDYWxjdWxhdGVyKCk7XHJcbiAgICAgICAgICB0aGlzLmVuYWJsZVByZXNjcmliZUFzKHNlbGVjdGVkZGF0YVswXSk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkQnJhbmRGb3JtdWxhdGlvbiA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmZhdk1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZXRFZGl0VmFsdWVzXCIsIHBheWxvYWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNDdXJyZW50TWVkaWNpbmVJbkZhdm91cml0ZXMoKSB7XHJcbiAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiB8fCAhdGhpcy5jb21tb25TZXJ2aWNlcy5mYXZvdXJpdGVNZWRpY2luZUxpc3QgfHwgdGhpcy5jb21tb25TZXJ2aWNlcy5mYXZvdXJpdGVNZWRpY2luZUxpc3QubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5jb21tb25TZXJ2aWNlcy5mYXZvdXJpdGVNZWRpY2luZUxpc3Quc29tZSgoZmF2TWVkOiB7IHByb2R1Y3RJZDogYW55OyBwYnNDb2RlOiBhbnk7IHByb2R1Y3ROYW1lOiBhbnk7IH0pID0+XHJcbiAgICAgIGZhdk1lZC5wcm9kdWN0SWQudG9TdHJpbmcoKSA9PT0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3RJZC50b1N0cmluZygpICYmXHJcbiAgICAgICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGZhdk1lZC5wYnNDb2RlKSA/IGZhdk1lZC5wYnNDb2RlIDogXCJcIikgPT09ICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucGJzQ29kZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzQ29kZSA6IFwiXCIpICYmXHJcbiAgICAgIGZhdk1lZC5wcm9kdWN0TmFtZSA9PT0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgaXNQYnNUeXBlTWF0Y2goaXRlbVBic1R5cGU6IGFueSwgcGJzVHlwZUZpbHRlcjogYW55KTogYm9vbGVhbiB7XHJcblxyXG4gICAgaWYgKCFwYnNUeXBlRmlsdGVyPy50cmltKCkpIHJldHVybiB0cnVlO1xyXG5cclxuICAgIGNvbnN0IGFsbG93ZWRUeXBlcyA9IHBic1R5cGVGaWx0ZXJcclxuICAgICAgLnNwbGl0KC9bLDtdKy8pXHJcbiAgICAgIC5tYXAoKHg6IGFueSkgPT4geC50cmltKCkudG9Mb3dlckNhc2UoKSlcclxuICAgICAgLmZpbHRlcihCb29sZWFuKTtcclxuXHJcbiAgICBjb25zdCBpc1ByaXZhdGVGaWx0ZXIgPSBhbGxvd2VkVHlwZXMuaW5jbHVkZXMoJ3ByaXZhdGUnKTtcclxuXHJcbiAgICBpZiAoIWl0ZW1QYnNUeXBlPy50cmltKCkpIHtcclxuICAgICAgcmV0dXJuIGlzUHJpdmF0ZUZpbHRlcjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpdGVtVHlwZXMgPSBpdGVtUGJzVHlwZVxyXG4gICAgICAuc3BsaXQoL1ssO10rLylcclxuICAgICAgLm1hcCgoeDogYW55KSA9PiB4LnRyaW0oKS50b0xvd2VyQ2FzZSgpKVxyXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pO1xyXG5cclxuICAgIHJldHVybiBpdGVtVHlwZXMuc29tZSgodHlwZTogYW55KSA9PiBhbGxvd2VkVHlwZXMuaW5jbHVkZXModHlwZSkpO1xyXG4gIH1cclxuXHJcbiAgYXNzaWduQ29tYmluYXRpb25zKG1lZDogYW55KSB7IFxyXG4gICAgdGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbCA9IG1lZC5xdWFudGl0eTtcclxuICAgIHRoaXMuY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCA9IG1lZC5yZXBlYXRzO1xyXG4gICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kb3NlU2VhcmNoVmFsdWUgPSBtZWQuZG9zZTtcclxuICAgIHRoaXMuY29tbW9uU2VydmljZXMuZnJlcVNlYXJjaFZhbHVlID0gbWVkLmZyZXF1ZW5jeTtcclxuICAgIHRoaXMuY29tbW9uU2VydmljZXMuZm9vZFNlYXJjaFZhbHVlID0gbWVkLmZvb2Q7XHJcbiAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUgPSBtZWQuaW5zdHJ1Y3Rpb247XHJcbiAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJvdXRlU2VhcmNoVmFsdWUgPSBtZWQucm91dGU7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuIiwiPG5nLXRlbXBsYXRlICNyeHdpZGdldHM+IDwvbmctdGVtcGxhdGU+XHJcbjxkaXYgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbWltc1wiPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiUmVhY3RNb2RhbF9fT3ZlcmxheSBSZWFjdE1vZGFsX19PdmVybGF5LS1hZnRlci1vcGVuIFJlYWN0X19PdmVybGF5X09wZW5fUG9wdXAgbmV3X3J4X21pbXNfT3ZlcmxheV9PcGVuX1BvcHVwXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiUmVhY3RNb2RhbF9fQ29udGVudCBSZWFjdE1vZGFsX19Db250ZW50LS1hZnRlci1vcGVuIFJlYWN0X19Db250ZW50IG5ld19yeF9taW1zX1JlYWN0X19Db250ZW50XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cCBuZXdfcnhfbWltc19SZWFjdE1vZGFsX3BvcHVwXCI+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIDxhcHAtc3BsYXNoc2NyZWVuICpuZ0lmPVwiUG9wdXBTY3JlZW5Mb2FkZXJcIiBbaGVpZ2h0XT1cIidoZWlnaHQtcngtc3BpbidcIj4gPC9hcHAtc3BsYXNoc2NyZWVuPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBhZ2UtY29udGVudFwiICpuZ0lmPVwiIVBvcHVwU2NyZWVuTG9hZGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZXdfcnhfcG9wdXBfaGVhZGVyX2JveFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtZ3JpZFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IHBhZGRpbmc6IDBweFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0yLWNvbC10YWJsZXQgbWRsLWNlbGwtLTMtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoIHJ4X2lwYWRfaGVhZGVyX2JveF8xXCJcclxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNvbW1vblNlcnZpY2VzLnJ4aWQgIT0gbnVsbCAmJiBjb21tb25TZXJ2aWNlcy5yeGlkICE9Jyc/J21kbC1jZWxsLS0yLWNvbCc6J21kbC1jZWxsLS0zLWNvbCdcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cImFsaWduLXNlbGY6IGNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJuZXdfcnhfcG9wdXBfaGVhZGVyX2JveF90ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3Bhc3NldHMuaG9sYS5oZWFsdGgvcngtd2lkZ2V0cy9yeC1ob2xhLWhlYWx0aC1sb2dvLTEucG5nXCIgYWx0PVwiaG9sYV9oZWFsdGhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogYXV0bztoZWlnaHQ6IDM3cHg7Ym9yZGVyLXJhZGl1czogNXB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9wYXNzZXRzLmhvbGEuaGVhbHRoL3J4LXdpZGdldHMvcngtaGVhZGVyLWxvZ28ucG5nXCIgYWx0PVwiXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICB7e2NvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpcHRpb24gPT09IHRydWUgPyAnRWRpdCBTY3JpcHQnIDogJ05ldyBTY3JpcHQnfX1cclxuICAgICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS00LWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfZGVza3RvcF90aXRsZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwiYWxpZ24tc2VsZjogY2VudGVyO1wiPlxyXG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9oZWFkZXJfYm94X3RleHRcIiBzdHlsZT1cImp1c3RpZnktY29udGVudDogY2VudGVyO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDYwMDtcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuZmlyc3ROYW1lICtcclxuICAgICAgICAgICAgICAgICAgICAgIFwiIFwiICtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLmxhc3ROYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj4vPHNwYW4gc3R5bGU9XCJ3aWR0aDogMTAwcHg7XCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKFxyXG4gICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuZG9iLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJkZC1NTS15eXl5XCJcclxuICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCAgbWRsLWNlbGwtLTUtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X3BvcHVwX2hlYWRlcl9ib3hfY29sIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoIHJ4X2lwYWRfaGVhZGVyX2JveF8yIG5ld19tb2JpbGVfcnhfdG9wX2JvdHRvbV8wXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmVcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY29tbW9uU2VydmljZXMucnhpZCAhPSBudWxsICYmIGNvbW1vblNlcnZpY2VzLnJ4aWQgIT0nJz8nbWRsLWNlbGwtLTYtY29sJzonbWRsLWNlbGwtLTUtY29sJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmV3X3J4X3BvcHVwX2J0bnNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjbG9zZShudWxsKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1idXR0b24gbWRsLWpzLWJ1dHRvbiBtZGwtYnV0dG9uLS1yYWlzZWQgbWRsLWJ1dHRvbi0tY29sb3JlZCBiYWNrQnV0dG9uIG5ld19tb2JpbGVfcnhfYnRuXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgfHwgc2VsZWN0aW9uYnRuTG9hZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICBDbG9zZVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7cG9zaXRpb246IHJlbGF0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29tbW9uU2VydmljZXMucnhpZCAhPSBudWxsICYmIGNvbW1vblNlcnZpY2VzLnJ4aWQgIT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1idXR0b24gbWRsLWpzLWJ1dHRvbiBtZGwtYnV0dG9uLS1yYWlzZWQgbWRsLWJ1dHRvbi0tY29sb3JlZCBuZXh0QnV0dG9uIHNlbGVjdC1hY3Rpb24tYnRuIG5ld19tb2JpbGVfcnhfYnRuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7d2lkdGg6IDE0MHB4O2Rpc3BsYXk6IGZsZXg7ZmxleC1kaXJlY3Rpb246IHJvdzthbGlnbi1pdGVtczogY2VudGVyO2p1c3RpZnktY29udGVudDogY2VudGVyO3BhZGRpbmc6IDEwcHggIWltcG9ydGFudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgfHwgc2VsZWN0aW9uYnRuTG9hZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEFjdGlvbkRyb3Bkb3dub3BlbigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3Rpb25idG5Mb2FkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInJ4X2xvYWRlcl9idXR0b24gbS12NFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAyMHB4O2hlaWdodDogMjBweDttYXJnaW46IDBweCAhaW1wb3J0YW50O21hcmdpbi1yaWdodDogMHB4ICFpbXBvcnRhbnQ7bWFyZ2luLWxlZnQ6IDBweCAhaW1wb3J0YW50O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2VsZWN0aW9uYnRuTG9hZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IEFjdGlvbiA8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGRycC1pY29uXCI+ZXhwYW5kX21vcmU8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICNzZWxlY3RBY3Rpb25Ecm9wZG93biBjbGFzcz1cIm5ld19yeF9QcmVzY3JpYmVfYnRuX2Ryb3Bkb3duX2xpc3RfYm94IHNlbGVjdC1hY3Rpb24tdWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdEFjdGlvbkJ0bkRyb3Bkb3duID09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieyBNX2xpc3RfYm94X3Nob3c6IHNlbGVjdEFjdGlvbkJ0bkRyb3Bkb3duID09PSB0cnVlIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibmV3X3J4X1ByZXNjcmliZV9idG5fZHJvcGRvd25fbGlzdF91bFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMudG9Mb3dlckNhc2UoKSA9PSAnZHJhZnQnP2NhbmNlbERyYWZ0KCk6Y2FuY2VsUHJlc2NyaWJlTWVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNoZWNrU3RhdHVzQW5kU2NyaXB0dHlwZSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cyw0KT8nJzonZWRpdC1kaXNhYmxlLWRhdGEnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW5jZWw8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAoY2xpY2spPVwicHJpbnRQcmVzY3JpYmVNZWQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY2hlY2tTdGF0dXNBbmRTY3JpcHR0eXBlKHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnNjcmlwdFR5cGUsdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzLDEpPycnOidlZGl0LWRpc2FibGUtZGF0YSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW50PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKGNsaWNrKT1cInJlaXNzdWVQcmVzY3JpYmVNZWQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY2hlY2tTdGF0dXNBbmRTY3JpcHR0eXBlKHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnNjcmlwdFR5cGUsdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzLDMpPycnOidlZGl0LWRpc2FibGUtZGF0YSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlLUlzc3VlPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKGNsaWNrKT1cImNlYXNlUHJlc2NyaWJlTWVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNoZWNrU3RhdHVzQW5kU2NyaXB0dHlwZSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cywyKT8nJzonZWRpdC1kaXNhYmxlLWRhdGEnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDZWFzZTwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIChjbGljayk9XCJyZXNlbmRQcmVzY3JpYmVNZWQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY29tbW9uU2VydmljZXMuZW5hYmxlU2VuZFBhcGVyU2NyaXB0SW5NYWlsICYmIGNoZWNrU3RhdHVzQW5kU2NyaXB0dHlwZSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cyw1KSA/Jyc6J2VkaXQtZGlzYWJsZS1kYXRhJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzZW5kPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJwYWdlICE9IDFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtYnV0dG9uIG1kbC1qcy1idXR0b24gbWRsLWJ1dHRvbi0tcmFpc2VkIG1kbC1idXR0b24tLWNvbG9yZWQgYmFja0J1dHRvbiBuZXdfbW9iaWxlX3J4X2J0blwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYmFjaygpXCIgW2Rpc2FibGVkXT1cInRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyIHx8IHNlbGVjdGlvbmJ0bkxvYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgQmFja1xyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJwYWdlID09IDFcIiAoY2xpY2spPVwicGFnZU51bWJlck9uZVRvTmV4dCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWJ1dHRvbiBtZGwtanMtYnV0dG9uIG1kbC1idXR0b24tLXJhaXNlZCBtZGwtYnV0dG9uLS1jb2xvcmVkIG5leHRCdXR0b24gbmV3X21vYmlsZV9yeF9idG5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciB8fCBzZWxlY3Rpb25idG5Mb2FkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIE5leHRcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWRsLWJ1dHRvbiBtZGwtanMtYnV0dG9uIG1kbC1idXR0b24tLXJhaXNlZCBtZGwtYnV0dG9uLS1jb2xvcmVkIG5ld19tb2JpbGVfcnhfYnRuXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJhYm9ydGRpc2FibGU/J25leHRCdXR0b24nOidhYm9ydGJ1dHRvbidcIiAqbmdJZj1cImFib3J0QnRuRmxhZ1wiIFtkaXNhYmxlZF09XCJhYm9ydGRpc2FibGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInByZXNjcmlwZUFib3J0KClcIj48c3BhbiAqbmdJZj1cImFib3J0ZGlzYWJsZVwiIGNsYXNzPVwicnhfbG9hZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicnhfbG9hZGVyX2J1dHRvbiBtLXY0IHJ4X2J0bl9zcGluXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiAqbmdJZj1cIiFhYm9ydGRpc2FibGVcIj5BYm9ydDwvc3Bhbj48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrXCIgKm5nSWY9XCJwYWdlID09IDJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtYnV0dG9uIG1kbC1qcy1idXR0b24gbWRsLWJ1dHRvbi0tcmFpc2VkIG1kbC1idXR0b24tLWNvbG9yZWQgbmV4dEJ1dHRvbiBuZXdfbW9iaWxlX3J4X2J0blwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO3dpZHRoOiAxMzVweDtkaXNwbGF5OiBmbGV4O2ZsZXgtZGlyZWN0aW9uOiByb3c7YWxpZ24taXRlbXM6IGNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgfHwgc2VsZWN0aW9uYnRuTG9hZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImluY2x1ZGVSdHBtTW9kYWwoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicnhfbG9hZGVyX2J1dHRvbiBtLXY0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDIwcHg7aGVpZ2h0OiAyMHB4O21hcmdpbjogMHB4ICFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OiAwcHggIWltcG9ydGFudDttYXJnaW4tbGVmdDogMHB4ICFpbXBvcnRhbnQ7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFByZXNjcmliZSA8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGRycC1pY29uXCI+ZXhwYW5kX21vcmU8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICNQcmVzY3JpYmVEcm9wZG93biBjbGFzcz1cIm5ld19yeF9QcmVzY3JpYmVfYnRuX2Ryb3Bkb3duX2xpc3RfYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RQQlRORHJvcGRvd24gPT0gdHJ1ZVwiIFtjbGFzc109XCJ7IE1fbGlzdF9ib3hfc2hvdzogc2VsZWN0UEJUTkRyb3Bkb3duID09PSB0cnVlIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibmV3X3J4X1ByZXNjcmliZV9idG5fZHJvcGRvd25fbGlzdF91bFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImNvbW1vblNlcnZpY2VzLmVuYWJsZUVTY3JpcHRcIiBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGVQcmVzY3JpcHRpb25WYWxpZGF0aW9uKDEpfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiTXByZXNjcmliZU1lZCgxKVwiPkUtUHJlc2NyaWJlIChEcmFmdCk8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGVQcmVzY3JpcHRpb25WYWxpZGF0aW9uKDIpfVwiIChjbGljayk9XCJFcHJlc2NyaXBlU2VuZCgxKVwiICpuZ0lmPVwiIXRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3kgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuZW1lcmdlbmN5U3VwcGx5ICYmIGNvbW1vblNlcnZpY2VzLmVuYWJsZVNlbmRFU2NyaXB0SW5NYWlsXCI+RS1QcmVzY3JpYmUgYW5kIFNlbmQ8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImNvbW1vblNlcnZpY2VzLmVuYWJsZUVTY3JpcHRcIiBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGVQcmVzY3JpcHRpb25WYWxpZGF0aW9uKDIpfVwiIChjbGljayk9XCJFcHJlc2NyaXBlU2VuZCgyKVwiPkUtUHJlc2NyaWJlIGFuZCBQcmludDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiY29tbW9uU2VydmljZXMuZW5hYmxlUGFwZXJTY3JpcHRcIiBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IChjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaXB0aW9uID09PSB0cnVlICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLnRvVXBwZXJDYXNlKCk9PSAnTScmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMudG9Mb3dlckNhc2UoKSAhPSAnZHJhZnQnKXx8IChjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaXB0aW9uID09PSB0cnVlICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLnRvVXBwZXJDYXNlKCk9PSAnRScpfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiTXByZXNjcmliZU1lZCgyKVwiPlByZXNjcmliZSAoRHJhZnQpPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5lbmFibGVTZW5kUGFwZXJTY3JpcHRJbk1haWxcIiBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IChjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaXB0aW9uID09PSB0cnVlICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLnRvVXBwZXJDYXNlKCk9PSAnTScmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMudG9Mb3dlckNhc2UoKSAhPSAnZHJhZnQnKXx8IChjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaXB0aW9uID09PSB0cnVlICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLnRvVXBwZXJDYXNlKCk9PSAnRScpfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiUGFwZXJwcmVzY3JpcGVTZW5kKDEpXCI+IFByZXNjcmliZSBhbmQgU2VuZDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiY29tbW9uU2VydmljZXMuZW5hYmxlUGFwZXJTY3JpcHRcIiBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IChjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaXB0aW9uID09PSB0cnVlICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLnRvVXBwZXJDYXNlKCkgPT0gJ00nJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzLnRvTG93ZXJDYXNlKCkgIT0gJ2RyYWZ0JykgfHwgKGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpcHRpb24gPT09IHRydWUgJiYgY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnNjcmlwdFR5cGUudG9VcHBlckNhc2UoKT09ICdFJyl9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwcmVzY3JpcGVQcmludCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVzY3JpYmUgYW5kIFByaW50PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tOC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aCByeF9pcGFkX2hlYWRlcl9ib3hfMyBuZXdfcnhfbW9iaWxlX3RpdGxlXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJhbGlnbi1zZWxmOiBjZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfaGVhZGVyX2JveF90ZXh0IG5ld19tb2JpbGVfcnhfcG9wdXBfaGVhZGVyX3RleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA2MDBcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuZmlyc3ROYW1lICtcclxuICAgICAgICAgICAgICAgICAgICAgIFwiIFwiICtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLmxhc3ROYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj4vPHNwYW4+e3tcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKFxyXG4gICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuZG9iLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJkZC1NTS15eXl5XCJcclxuICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwYWdlID09IDFcIiBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfMVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtZ3JpZFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IHBhZGRpbmc6IDBweFwiICpuZ0lmPVwiIWNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS01LWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICNNZWRpY2luZURyb3Bkb3duIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cIm1lZGljaW5lIHNlYXJjaFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIE1lZGljaW5lc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCIgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiXzFfaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cInt7IG1lZGlTZWFyY2hWYWx1ZSB9fVwiIChpbnB1dCk9XCJzZWFyY2hIYW5kbGVyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiTWVkaWNpbmVEcm9wZG93bkxpc3QoKVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zIG1kLTI0IG5ld19yeF9wb3B1cF90YWJfMV9pbnB1dF9zZWFyY2hcIj5zZWFyY2g8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxtYXQtaWNvbiBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfMV9pbnB1dF9zZWFyY2hcIj48L21hdC1pY29uPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl8xX2xpc3RfYm94XCIgW2NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgTV9saXN0X2JveF9zaG93OiBzZWxlY3RlZE1lZGljaW5lRHJvcGRvd24gPT09IHRydWVcclxuICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZWFyY2hNZWRpY2luZUxvYWRlclwiIGNsYXNzPVwibG9hZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXNlYXJjaE1lZGljaW5lTG9hZGVyXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAxMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiXzFfbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgbWVkaWNpbmVMaXN0IG9mIHNlYXJjaGVkTWVkaWNpbmVMaXN0XCIgW2NsYXNzXT1cImdldGN1cnJlbnRpZChtZWRpY2luZUxpc3QpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UHJvZHVjdExpc3RCeU5hbWUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWNpbmVMaXN0Wydwcm9kSGlkZGVuVmFsdWUnXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBtZWRpY2luZUxpc3RbJ3Byb2REaXNwbGF5VmFsdWUnXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBtZWRpY2luZUxpc3RbJ3NlYXJjaEJhc2UnXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIiBbaW5uZXJIVE1MXT1cIm1lZGljaW5lTGlzdFsncHJvZERpc3BsYXlWYWx1ZSddXCI+PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJzZWFyY2hlZE1lZGljaW5lTGlzdC5sZW5ndGggPT0gMFwiPk5vIERhdGE8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiUHJpbWFyeVNlYXJjaFNwaW5uZXJcIiBjbGFzcz1cImxvYWRlciBtbC1sb2FkLTQ1XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTItY29sIG1kbC1jZWxsLS0yLWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoIG5ld19tb2JpbGVfcnhfdG9wX2JvdHRvbV8wXCJcclxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZGlzYWJsZWRSeENvbnRlbnQnOnRoaXMuaXNOb25QYnNGbGFnfHwoY29tbW9uU2VydmljZXMucnhEZXRhaWxzIT1udWxsICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscyE9JycgJiYgY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cyE9bnVsbCAmJiBjb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzIT0nJyAmJiBjb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzLnRvTG93ZXJDYXNlKCkhPSdkcmFmdCcpfVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnhfbmV3X3BvcHVwX2NoZWNrYm94IG5ld19tb2JpbGVfcnhfdG9wX2JvdHRvbV8wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibWRsLWNoZWNrYm94IG1kbC1qcy1jaGVja2JveCBtZGwtanMtcmlwcGxlLWVmZmVjdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJjaGVja2JveFwiIGlkPVwiY2hlY2tib3gxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2hlY2tib3hfX2lucHV0IHJ4X25ld19ncm91cF9jaGVja2JveFwiIFsobmdNb2RlbCldPVwicnhPbmx5UEJTXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkNoZWNrYm94Q2hhbmdlKDEpXCIgdmFsdWU9XCJQQlMvUlBCU1wiIFtkaXNhYmxlZF09XCJ0aGlzLmlzTm9uUGJzRmxhZ1wiIC8+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2hlY2tib3hfX2xhYmVsXCIgc3R5bGU9XCJmb250LXdlaWdodDogNDAwOyBmb250LXNpemU6IDE2cHhcIj5QQlMvUlBCUzwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJ4X25ld19wb3B1cF9jaGVja2JveCBuZXdfbW9iaWxlX3J4X3RvcF9ib3R0b21fMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIm1kbC1jaGVja2JveCBtZGwtanMtY2hlY2tib3ggbWRsLWpzLXJpcHBsZS1lZmZlY3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwiY2hlY2tib3hcIiBpZD1cImNoZWNrYm94MlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNoZWNrYm94X19pbnB1dCByeF9uZXdfZ3JvdXBfY2hlY2tib3hcIiBbKG5nTW9kZWwpXT1cInJ4UHJpdmF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25DaGVja2JveENoYW5nZSgxKVwiIHZhbHVlPVwiUHJpdmF0ZVwiIC8+PHNwYW4gY2xhc3M9XCJtZGwtY2hlY2tib3hfX2xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXdlaWdodDogNDAwOyBmb250LXNpemU6IDE2cHhcIj5Qcml2YXRlPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMi1jb2wgbWRsLWNlbGwtLTItY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGggbmV3X21vYmlsZV9yeF90b3BfYm90dG9tXzBcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydkaXNhYmxlZFJ4Q29udGVudCc6dGhpcy5pc05vblBic0ZsYWd8fChjb21tb25TZXJ2aWNlcy5yeERldGFpbHMhPW51bGwgJiYgY29tbW9uU2VydmljZXMucnhEZXRhaWxzIT0nJyAmJiBjb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzIT1udWxsICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMhPScnICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMudG9Mb3dlckNhc2UoKSE9J2RyYWZ0Jyl9XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyeF9uZXdfcG9wdXBfY2hlY2tib3ggbmV3X21vYmlsZV9yeF90b3BfYm90dG9tXzBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtZGwtY2hlY2tib3ggbWRsLWpzLWNoZWNrYm94IG1kbC1qcy1yaXBwbGUtZWZmZWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJjaGVja2JveDJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jaGVja2JveF9faW5wdXQgcnhfbmV3X2dyb3VwX2NoZWNrYm94XCIgWyhuZ01vZGVsKV09XCJyeFByaXZhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uQ2hlY2tib3hDaGFuZ2UoKVwiIHZhbHVlPVwiUHJpdmF0ZVwiIC8+PHNwYW4gY2xhc3M9XCJtZGwtY2hlY2tib3hfX2xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXdlaWdodDogNDAwOyBmb250LXNpemU6IDE2cHhcIj5Qcml2YXRlPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS01LWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS02LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aCBuZXdfbW9iaWxlX3J4X3RvcF9ib3R0b21fMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwidGV4dC1hbGlnbjogcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vcGFzc2V0cy5ob2xhLmhlYWx0aC9yeC13aWRnZXRzL3J4LW1pbXMucG5nXCIgYWx0PVwiTUlNUyBsb2dvXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDgwcHg7IGhlaWdodDogYXV0b1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2xcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiA4cHg7XCIgKm5nSWY9XCIhY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmF2b3VyaXRlcy10b2dnbGUtbGlua1wiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHNob3dGYXZvdXJ0aWVzKClcIj5cclxuICAgICAgICAgICAgICAgICAge3sgc2hvd0Zhdm91cml0ZU1lZCA/ICdIaWRlIGZhdm91cml0ZXMnIDogJ1Nob3cgZmF2b3VyaXRlcycgfX1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWdyaWRcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBwYWRkaW5nOiAwcHhcIj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tNy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJsZV9ib3hcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfdGl0bGVcIiBzdHlsZT1cInBhZGRpbmc6IDVweCAxMHB4OyBtYXJnaW46IDBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgQXZhaWxhYmxlIEZvcm11bGF0aW9uczpcclxuICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFzaG93RmF2b3VyaXRlTWVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwib25jbGlja01lZGljaW5lTG9hZGVyXCIgY2xhc3M9XCJsb2FkZXIgbS12NFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFvbmNsaWNrTWVkaWNpbmVMb2FkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID09IG51bGwgfHxcclxuICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdC5sZW5ndGggPT0gMFxyXG4gICAgICAgICAgICAgICAgICBcIiBjbGFzcz1cIm5vRGF0YVByZXNjcmliZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPk5vIERhdGE8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmV3X3J4X3BvcHVwX2JveF9jb250YWluZXJcIiAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgbWVkIG9mIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0O1xyXG4gICAgICAgICAgICAgICAgICAgIGluZGV4IGFzIGlcclxuICAgICAgICAgICAgICAgICAgXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtZ3JpZCBuZXdfcnhfcG9wdXBfYm94XCIgW2NsYXNzXT1cImdldENsYXNzRm9yTWVkKG1lZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEZvcm11bGF0aW9uKG1lZCwgaSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sIG1kbC1jZWxsLS04LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2JveF9oZWFkZXJcIiBbaW5uZXJIVE1MXT1cIm1lZC5wcm9kdWN0TmFtZVwiPjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfYm94X3RleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48Yj5RdWFudGl0eTo8L2I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e21lZC5wYnNUeXBlIT11bmRlZmluZWQgJiYgbWVkLnBic1R5cGUhPW51bGwgJiYgbWVkLnBic1R5cGUudG9Mb3dlckNhc2UoKSA9PSBcIm5vbiBwYnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBtZWQubnVtYmVyT2ZQYWNrICsgXCJ4XCIgKyBtZWQudW5pdFBlclBhY2tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbWVkLm1heFF0eVVuaXRzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj48c3Bhbj48Yj5ScHRzOjwvYj4ge3sgbWVkLnJlcGVhdHMgfX08L3NwYW4+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdFwiPjxiPlJlc3RyaWN0aW9uOjwvYj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bWVkLlJlc3RyaWN0aW9ucyE9dW5kZWZpbmVkICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZWQuUmVzdHJpY3Rpb25zICE9IG51bGwgJiYgbWVkLlJlc3RyaWN0aW9ucyAhPSBcIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG1lZC5wYnNUeXBlICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiIChcIiArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRSZXN0cmljdGlvbnMobWVkLlJlc3RyaWN0aW9ucykgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIpIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IChtZWQucGJzVHlwZSE9dW5kZWZpbmVkJiZtZWQucGJzVHlwZSE9bnVsbD9tZWQucGJzVHlwZTpcIlwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0gPC9zcGFuPjxzcGFuPjxiPkdlbmVyaWMgTmFtZTogPC9iPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJtZWQuZ2VuZXJpY05hbWVcIj48L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJTZWNvbmRhcnlTZWFyY2hTcGlubmVyXCIgY2xhc3M9XCJsb2FkZXIgbWwtbG9hZC00NVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dGYXZvdXJpdGVNZWRcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwib25jbGlja01lZGljaW5lTG9hZGVyXCIgY2xhc3M9XCJsb2FkZXIgbS12NFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFvbmNsaWNrTWVkaWNpbmVMb2FkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLmZhdm91cml0ZU1lZGljaW5lTGlzdCA9PSBudWxsIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuZmF2b3VyaXRlTWVkaWNpbmVMaXN0Lmxlbmd0aCA9PSAwXHJcbiAgICAgICAgICAgICAgICAgIFwiIGNsYXNzPVwibm9EYXRhUHJlc2NyaWJlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+Tm8gRmF2b3VyaXRlczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZXdfcnhfcG9wdXBfYm94X2NvbnRhaW5lclwiICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBtZWQgb2YgY29tbW9uU2VydmljZXMuZmF2b3VyaXRlTWVkaWNpbmVMaXN0O1xyXG4gICAgICAgICAgICAgICAgICAgIGluZGV4IGFzIGlcclxuICAgICAgICAgICAgICAgICAgXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtZ3JpZCBuZXdfcnhfcG9wdXBfYm94XCIgW2NsYXNzXT1cImdldENsYXNzRm9yRmF2b3VyaXRlTWVkKG1lZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImZhdm91cml0ZU1lZGljaW5lTG9hZGluZyhtZWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbCBtZGwtY2VsbC0tOC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9ib3hfaGVhZGVyXCIgW2lubmVySFRNTF09XCJtZWQucHJvZHVjdE5hbWVcIj48L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2JveF90ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGI+UXVhbnRpdHk6PC9iPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3ttZWQucXVhbnRpdHl9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3Bhbj48Yj5ScHRzOjwvYj4ge3sgbWVkLnJlcGVhdHMgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0XCI+PGI+UmVzdHJpY3Rpb246PC9iPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3ttZWQucmVzdHJpY3Rpb259fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3Bhbj48Yj5HZW5lcmljIE5hbWU6IDwvYj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwibWVkLmdlbmVyaWNOYW1lXCI+PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lclwiIGNsYXNzPVwibG9hZGVyIG1sLWxvYWQtNDVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZhdk1lZGljaW5lTG9hZGVyXCIgY2xhc3M9XCJsb2FkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZmF2TWVkaWNpbmVMb2FkZXJcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS01LWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWdyaWQgbmV3X3J4X3BvcHVwX3RhYl8xX2dyaWQgbmV3X3J4X3BvcHVwX3RhYl8xX2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uICE9IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTYtY29sIG1kbC1jZWxsLS04LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfdGl0bGVcIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDVweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiAhPSBudWxsJiZjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lIT11bmRlZmluZWQgJiYgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZSE9bnVsbD8gY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZTogJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTYtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmljIE5hbWU6PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gIT0gbnVsbCYmY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5nZW5lcmljTmFtZSE9dW5kZWZpbmVkICYmIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZ2VuZXJpY05hbWUhPW51bGw/IGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZ2VuZXJpY05hbWUgOiAnJ1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIiAqbmdJZj1cImNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEJyYW5kIE5hbWU6PHNwYW4gW2lubmVySFRNTF09XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGdldEJyYW5kTmFtZShjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKVxyXG4gICAgICAgICAgICAgICAgICAgIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTY2hlZHVsZTo8c3Bhbj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gIT0gbnVsbCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24gIT1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQgJiYgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wb2lzb25DbGFzc2lmaWNhdGlvbiE9bnVsbCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAucG9pc29uQ2xhc3NlcyE9dW5kZWZpbmVkICYmIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAucG9pc29uQ2xhc3NlcyE9bnVsbCAmJiBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLnBvaXNvbkNsYXNzZXMubGVuZ3RoPjBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAucG9pc29uQ2xhc3Nlc1swXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJObyBTY2hlZHVsZWQgSW5mb3JtYXRpb24gQXZhaWxhYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFBCUyBMaXN0aW5nOjxzcGFuPnt7Y29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNUeXBlIT11bmRlZmluZWQgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic1R5cGUhPW51bGw/IGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzVHlwZSA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJycgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzQ29kZSE9dW5kZWZpbmVkICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNDb2RlIT1udWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcIiAoXCIgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzQ29kZSArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luOjBweCA7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgTWF4IFF1YW50aXR5ID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2dldE1heFF1YW50aXR5KCl9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBSZXBlYXRzID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24hPW51bGw/IGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucmVwZWF0c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDpcIlwifX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIiAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gIT0gbnVsbCAmJiBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByZWduYW5jeUNhdGVnb3J5IT11bmRlZmluZWQgJiYgXHJcbiAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcmVnbmFuY3lDYXRlZ29yeSAhPSBudWxsICYmIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJlZ25hbmN5Q2F0ZWdvcnlcclxuICAgICAgICAgICAgICAgICAgICAuY2F0ZWdvcnlDb2RlIT11bmRlZmluZWQgJiYgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcmVnbmFuY3lDYXRlZ29yeVxyXG4gICAgICAgICAgICAgICAgICAgIC5jYXRlZ29yeUNvZGUhPW51bGxcclxuICAgICAgICAgICAgICAgICAgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFByZWduYW5jeSBDYXRlZ29yeTo8c3Bhbj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJlZ25hbmN5Q2F0ZWdvcnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAuY2F0ZWdvcnlDb2RlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJlZ25hbmN5Q2F0ZWdvcnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmFkZGl0aW9uYWxOb3RlICE9dW5kZWZpbmVkICYmIFxyXG4gICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcmVnbmFuY3lDYXRlZ29yeVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuYWRkaXRpb25hbE5vdGUgIT0gbnVsbCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcmVnbmFuY3lDYXRlZ29yeVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuYWRkaXRpb25hbE5vdGUgIT0gJydcclxuICAgICAgICAgICAgICAgICAgICBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsTm90ZTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW0gb2YgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5wcmVnbmFuY3lDYXRlZ29yeS5hZGRpdGlvbmFsTm90ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgXCIgW2lubmVySFRNTF09XCJpdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2xcIiAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmlzU2hvd1Jlc3RyaWN0aW9ucyA9PSB0cnVlICYmIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zIT11bmRlZmluZWQgJiYgXHJcbiAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zICE9IG51bGwgJiZcclxuICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMgIT0gJydcclxuICAgICAgICAgICAgICAgIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5SZXN0cmljdGlvbnM6PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG9sIHN0eWxlPVwibWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMTVweFwiICpuZ0lmPVwiY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMhPXVuZGVmaW5lZCAmJiBcclxuICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucyAhPSBudWxsICYmXHJcbiAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMgIT0gJydcclxuICAgICAgICAgICAgICAgICAgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5ld19yeF9wb3BfYXV0X2ludFwiICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3RyaWN0aW9uIG9mIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgLlJlc3RyaWN0aW9uc1xyXG4gICAgICAgICAgICAgICAgICAgIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbjogMHB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICBcIiAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvbi5yZXN0cmljdGlvblByZXZpZXcgIT0gbnVsbCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvbi5yZXN0cmljdGlvblByZXZpZXcgIT0gJycgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25UZXh0ICE9IG51bGwgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25UZXh0ICE9ICcnXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicnhfcmVzdHJpY3Rpb25UZXh0XCIgKm5nSWY9XCJyZXN0cmljdGlvbi5yZXN0cmljdGlvblRleHQubGVuZ3RoIDwgNjBcIj48Yj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uVHlwZSB9fTwvYj4gLVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5odG1sVG9Gb3JtYXR0ZWRUZXh0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvbi5yZXN0cmljdGlvblByZXZpZXdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIj48L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyeF9yZXN0cmljdGlvblRleHRcIiAqbmdJZj1cInJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uVGV4dC5sZW5ndGggPiA2MFwiPjxiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25UeXBlIH19PC9iPiAtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmh0bWxUb0Zvcm1hdHRlZFRleHQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uUHJldmlld1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKS5zdWJzdHJpbmcoMCwgNjApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCI+PC9zcGFuPi4uLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjsgY29sb3I6ICNmZjk5NzhcIiBpZD1cInNob3ctdG9vbHRpcC1pZFwiPlNob3dcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vcmU8L2E+PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdG9vbHRpcGRlbW8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicnhfdG9vbHRpcF9pbm5lcl9ib3hcIiBbaW5uZXJIVE1MXT1cInJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uVGV4dFwiPjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9vbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl8zX3NtYWxsX2JveFwiIFtzdHlsZS5kaXNwbGF5XT1cImlzQ3VycmVudE1lZGljaW5lSW5GYXZvdXJpdGVzKCkgPyAnaW5saW5lLWZsZXgnIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiaXNDdXJyZW50TWVkaWNpbmVJbkZhdm91cml0ZXMoKSA/ICdtYXgtY29udGVudCcgOiBudWxsXCIgKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uICE9IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrO21hcmdpbi1yaWdodDogMTBweDtcIiBjbGFzcz1cIm5ld19yeF9wb3B1cF9oZWFkZXJfYm94X2NvbFwiICpuZ0lmPVwiIWNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiAhPSBudWxsXCIgKGNsaWNrKT1cImFkZFRvRmF2b3VyaXRlcygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1idXR0b24gbWRsLWpzLWJ1dHRvbiBtZGwtYnV0dG9uLS1yYWlzZWQgbWRsLWJ1dHRvbi0tY29sb3JlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MubmV4dEJ1dHRvbl09XCIhaXNDdXJyZW50TWVkaWNpbmVJbkZhdm91cml0ZXMoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Mucm1mYXZidXR0b25dPVwiaXNDdXJyZW50TWVkaWNpbmVJbkZhdm91cml0ZXMoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImlzQ3VycmVudE1lZGljaW5lSW5GYXZvdXJpdGVzKCk7IGVsc2UgYWRkVGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFJlbW92ZSBmcm9tIGZhdm91cml0ZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2FkZFRleHQ+KyBBZGQgdG8gZmF2b3VyaXRlczwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrOyBtYXJnaW4tcmlnaHQ6IDEwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+UXVhbnRpdHk6IDwvc3Bhbj48aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCIgbmFtZT1cInF0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiXCIgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiX2lucHV0XCIgc3RlcD1cIjFcIiBbbWluXT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsXCIgKGtleXByZXNzKT1cImNoZWNrTW9iaWxlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwicXVhbnRpdHlDaGFuZ2UoKVwiIChwYXN0ZSk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvblwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGlubGluZS1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5SZXBlYXRzOiA8L3NwYW4+PGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlIHx8IGNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwicnB0c1wiIHBsYWNlaG9sZGVyPVwiXCIgW21pbl09XCIwXCIgKGlucHV0KT1cInJlcGVhdHNDaGFuZ2UoKVwiIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl9pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbFwiIChwYXN0ZSk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJjaGVja01vYmlsZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uIHx8IGNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtZ3JpZFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IHBhZGRpbmc6IDBweFwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwieyBkaXNhYmxlZFJ4Q29udGVudDogY29tbW9uU2VydmljZXMuaXNGZXRjaGluZ31cIj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sIG1kbC1jZWxsLS04LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIERvc2U6XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnhfbmV3X3BvcHVwX2NoZWNrYm94XCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibWRsLWNoZWNrYm94IG1kbC1qcy1jaGVja2JveCBtZGwtanMtcmlwcGxlLWVmZmVjdFwiPjxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlXCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY2hlY2tib3gxXCIgY2xhc3M9XCJtZGwtY2hlY2tib3hfX2lucHV0IHJ4X25ld19ncm91cF9jaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLnVuVXN1YWxEb3NlRmxhZ1wiIC8+PHNwYW4gY2xhc3M9XCJtZGwtY2hlY2tib3hfX2xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDQwMDtmb250LXNpemU6IDE2cHg7bWFyZ2luLXRvcDogLTdweDtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZGlzYWJsZWQtc3R5bGUnOiBjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID09IHRydWUgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCI+VW51c3VhbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9zZTwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2lucHV0IG5ld19yeF9wb3B1cF90YWJfaW5wdXRcIiB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvblwiIGlkPVwic2VsZWN0ZWRkb3NlXCIgcGxhY2Vob2xkZXI9XCJTZWxlY3QgRG9zZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5kb3NlU2VhcmNoVmFsdWVcIiAoY2xpY2spPVwiZG9zZURyb3Bkb3duKClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICNEb3NlRHJvcGRvd24gY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiX2Ryb3Bkb3duX2xpc3RfYm94XCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieyBNX2xpc3RfYm94X3Nob3c6IHNlbGVjdERvc2VEcm9wZG93biA9PT0gdHJ1ZSB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl8xX2xpc3QgcnhfZHJvcGRvd25cIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxpIChjbGljayk9XCJzZWxlY3REb3NlVmFsdWUobnVsbClcIiBjbGFzcz1cInAtMTJcIj4gPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZG9zZSBvZiBkb3NlRGF0YVwiIChjbGljayk9XCJzZWxlY3REb3NlVmFsdWUoZG9zZSlcIiBbY2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdobGlnaHQ6IGRvc2VbJ3RleHQnXSA9PSBjb21tb25TZXJ2aWNlcy5kb3NlU2VhcmNoVmFsdWVcclxuICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBkb3NlW1widGV4dFwiXSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+RnJlcXVlbmN5OjwvcD5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIGNsYXNzPVwibWRsLXRleHRmaWVsZF9faW5wdXQgbmV3X3J4X3BvcHVwX3RhYl9pbnB1dFwiIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCIgaWQ9XCJzZWxlY3RlZEZyZXF1ZW5jeTpcIlxyXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IEZyZXF1ZW5jeVwiIHJlYWRPbmx5IFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuZnJlcVNlYXJjaFZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZnJlcURyb3Bkb3duKClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICNGcmVxRHJvcGRvd24gY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiX2Ryb3Bkb3duX2xpc3RfYm94XCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieyBNX2xpc3RfYm94X3Nob3c6IHNlbGVjdEZyZXFEcm9wZG93biA9PT0gdHJ1ZSB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl8xX2xpc3QgcnhfZHJvcGRvd25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsaSAoY2xpY2spPVwic2VsZWN0RnJlcXVlbmN5VmFsdWUobnVsbClcIiBjbGFzcz1cInAtMTJcIj4gPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZnJlcXVlbmN5IG9mIGZyZXF1ZW5jeURhdGFcIiAoY2xpY2spPVwic2VsZWN0RnJlcXVlbmN5VmFsdWUoZnJlcXVlbmN5KVwiIFtjbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2hsaWdodDpcclxuICAgICAgICAgICAgICAgICAgICAgIGZyZXF1ZW5jeVsndGV4dCddID09IGNvbW1vblNlcnZpY2VzLmZyZXFTZWFyY2hWYWx1ZVxyXG4gICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZyZXF1ZW5jeVtcInRleHRcIl0gfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPkZvb2Q6PC9wPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19pbnB1dCBuZXdfcnhfcG9wdXBfdGFiX2lucHV0XCIgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIiBpZD1cInNlbGVjdGVkRnJlcXVlbmN5OlwiXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgRm9vZFwiIHJlYWRPbmx5IFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuZm9vZFNlYXJjaFZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZm9vZERyb3Bkb3duKClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICNGb29kRHJvcGRvd24gY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiX2Ryb3Bkb3duX2xpc3RfYm94XCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieyBNX2xpc3RfYm94X3Nob3c6IHNlbGVjdEZvb2REcm9wZG93biA9PT0gdHJ1ZSB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl8xX2xpc3QgcnhfZHJvcGRvd25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsaSAoY2xpY2spPVwic2VsZWN0Rm9vZFZhbHVlKG51bGwpXCIgY2xhc3M9XCJwLTEyXCI+IDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGZvb2Qgb2YgZm9vZERhdGFcIiAoY2xpY2spPVwic2VsZWN0Rm9vZFZhbHVlKGZvb2QpXCIgW2NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaGxpZ2h0OiBmb29kWyd0ZXh0J10gPT0gY29tbW9uU2VydmljZXMuZm9vZFNlYXJjaFZhbHVlXHJcbiAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZm9vZFtcInRleHRcIl0gfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPkluc3RydWN0aW9uOjwvcD5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIGNsYXNzPVwibWRsLXRleHRmaWVsZF9faW5wdXQgbmV3X3J4X3BvcHVwX3RhYl9pbnB1dFwiIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCIgaWQ9XCJJbnN0cnVjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgSW5zdHJ1Y3Rpb25cIiBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJpbnN0cnVjdGlvbkRyb3Bkb3duKClcIiAoY2hhbmdlKT1cImluc3RydWN0aW9uT25DaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cImFscGhhUmVzdHJpY3Rpb24oJGV2ZW50KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgI0luc3RydWN0aW9uRHJvcGRvd24gY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiX2Ryb3Bkb3duX2xpc3RfYm94XCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwie01fbGlzdF9ib3hfc2hvdzogc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93biA9PT0gdHJ1ZX1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiXzFfbGlzdCByeF9kcm9wZG93blwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93bkxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIChjbGljayk9XCJDaGFuZ2VJbnN0cnVjdGlvbihudWxsKVwiIGNsYXNzPVwicC0xMlwiPiA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiaXRlbS5pZCA9PSBjb21tb25TZXJ2aWNlcy5jb21wbGV4SWQgJiYgaXRlbS50ZXh0ID09IGNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUgPyAnaGVpZ2hsaWdodCcgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaW5zdHJ1Y3Rpb25EYXRhOyBpbmRleCBhcyBpXCIgKGNsaWNrKT1cIkNoYW5nZUluc3RydWN0aW9uKGl0ZW0pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS50ZXh0IH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpdGVtLnVzZXJpZCAhPT0gMFwiIGNsYXNzPVwic3Bhbl9pY29uXCIgc3R5bGU9XCJmbG9hdDogcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIiBzdHlsZT1cInBhZGRpbmc6IDVweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlZGl0SW5zdHJ1Y3Rpb24oaXRlbS5pZCwgaXRlbSlcIj5jcmVhdGU8L2k+PGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEwcHg7IHBhZGRpbmc6IDVweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVJbnN0cnVjdGlvbihpdGVtLmlkKVwiPmNsZWFyPC9pPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiUlhfQUREX2Ryb3Bkb3duX2J0blwiIChjbGljayk9XCJhZGROZXdJbnN0cnVjdGlvbigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKyBBZGQgQ29tcGxleCBJbnN0cnVjdGlvbnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0ID09IGZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21wbGV4X2luc3RydWN0aW9uX2JveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCIgc3R5bGU9XCJmb250LXNpemU6IDEycHg7IG1hcmdpbjogMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcGxleCBJbnN0cnVjdGlvbjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImluc3RydWN0aW9uX2ZpZWxkX2NsciBtZGwtdGV4dGZpZWxkX19pbnB1dCBuZXdfcnhfcG9wdXBfdGFiX2lucHV0IFwiIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiSW5zdHJ1Y3Rpb25cIiBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9udGlsdGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgQ29tcGxleCBJbnN0cnVjdGlvblwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIiBzdHlsZT1cImZvbnQtc2l6ZTogMTJweDsgbWFyZ2luOiAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wbGV4IEluc3RydWN0aW9uIERlc2NyaXB0aW9uOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgYXV0b2NvbXBsZXRlPVwib2ZmXCIgbmFtZT1cIlwiIGlkPVwiXCIgcm93cz1cIjJcIiBtYXhMZW5ndGg9XCI1MDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ0ZW1wSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvblwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgQ29tcGxleCBJbnN0cnVjdGlvbiBEZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImluc3RydWN0aW9uX2ZpZWxkX2NsciB3LTEwMCBuZXdfcnhfcG9wdXBfdGFiX3RleHRhcmVhXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiUlhfQUREX2Ryb3Bkb3duX2J0bl8xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjbGVhckluc3RydWN0aW9uKClcIiBjbGFzcz1cInJ4LWluc3RydWN0aW9uLWJ0blwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwic2F2ZUluc3RydWN0aW9uKClcIiBjbGFzcz1cInJ4LWluc3RydWN0aW9uLWJ0blwiPlNhdmU8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+Um91dGU6PC9wPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19pbnB1dCBuZXdfcnhfcG9wdXBfdGFiX2lucHV0XCIgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIiBpZD1cInNlbGVjdGVkUm91dGU6XCJcclxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBSb3V0ZVwiIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMucm91dGVTZWFyY2hWYWx1ZVwiIG1heGxlbmd0aD1cIjUwXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicm91dGVEcm9wZG93bigpXCIgKGtleXByZXNzKT1cImFscGhhUmVzdHJpY3Rpb24oJGV2ZW50KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgI1JvdXRlRHJvcGRvd24gY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiX2Ryb3Bkb3duX2xpc3RfYm94XCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieyBNX2xpc3RfYm94X3Nob3c6IHNlbGVjdFJvdXRlRHJvcGRvd24gPT09IHRydWUgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJwYWRkaW5nOiAxMHB4OyBwb3NpdGlvbjogcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2lucHV0IG5ld19yeF9yb3V0ZV9faW5wdXRcIiB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCIgW3ZhbHVlXT1cInJvdXRlRGF0YUZpbHRlciA/IHJvdXRlRGF0YUZpbHRlciA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGtleXVwKT1cInJvdXRlRmlsdGVyKCRldmVudClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBtZC0yNCBuZXdfcnhfcG9wdXBfdGFiXzFfaW5wdXRfc2VhcmNoIHJ4LXNlYXJjaC1pY29uXCI+c2VhcmNoPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bCAqbmdJZj1cImZpbHRlclJvdXRlSXRlbXMocm91dGVEYXRhLCByb3V0ZURhdGFGaWx0ZXIpLmxlbmd0aCAhPSAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl8xX2xpc3QgcnhfZHJvcGRvd24gcnhfZHJvcGRvd25fcm91dGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcm91dGUgb2YgZmlsdGVyUm91dGVJdGVtcyhyb3V0ZURhdGEsIHJvdXRlRGF0YUZpbHRlcilcclxuICAgICAgICAgICAgICAgICAgXCIgKGNsaWNrKT1cInNlbGVjdFJvdXRlc2VhcmNWYWx1ZShyb3V0ZSlcIiBbY2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdobGlnaHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICByb3V0ZVsncm91dGVOYW1lJ10gPT0gY29tbW9uU2VydmljZXMucm91dGVTZWFyY2hWYWx1ZVxyXG4gICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJvdXRlW1wicm91dGVOYW1lXCJdIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsICpuZ0lmPVwiZmlsdGVyUm91dGVJdGVtcyhyb3V0ZURhdGEsIHJvdXRlRGF0YUZpbHRlcikubGVuZ3RoID09IDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiXzFfbGlzdCByeF9kcm9wZG93biByeF9kcm9wZG93bl9yb3V0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxpPm5vIGRhdGE8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5Qcm8gUmUgTmF0YSBQcmVzY3JpcHRpb246PC9wPiAtLT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJ4X25ld19wb3B1cF9jaGVja2JveCBtLXQtMzZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtZGwtY2hlY2tib3ggbWRsLWpzLWNoZWNrYm94IG1kbC1qcy1yaXBwbGUtZWZmZWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJjaGVja2JveDFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jaGVja2JveF9faW5wdXQgcnhfbmV3X2dyb3VwX2NoZWNrYm94XCIgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5yeFBSTlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIlBSTkNoYW5nZShjb21tb25TZXJ2aWNlcy5yeFBSTilcIiAvPjxzcGFuIGNsYXNzPVwibWRsLWNoZWNrYm94X19sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDQwMDsgZm9udC1zaXplOiAxNnB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZGlzYWJsZWQtc3R5bGUnOiBjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID09IHRydWUgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCI+UHJvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlIE5hdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgUHJlc2NyaXB0aW9uPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+UHJlc2NyaWJlIEFzOjwvcD5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJ4X25ld19wb3B1cF9jaGVja2JveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyeF9uZXdfcmFkaW9ib3hfYnV0dG9uIHJ4X3JhZGlvX292ZXJhbGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInJ4X3JhZGlvX2xhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwicmFkaW9cIiBjbGFzcz1cIm1kbC1yYWRpb19fYnV0dG9uIGN1c3RvbS1yYWRpby1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJQcmVzY3JpYmVBc1wiIFt2YWx1ZV09XCInUHJpdmF0ZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJjb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUy50b0xvd2VyQ2FzZSgpID09PSAncHJpdmF0ZSdcIiAoY2xpY2spPVwicHJpdmF0ZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTXCIgLz48c3BhbiBjbGFzcz1cIm1kbC1yYWRpb19fbGFiZWwgcmFkaW9fdHh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydkaXNhYmxlZC1zdHlsZSc6IGNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPT0gdHJ1ZSB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIj5Qcml2YXRlPC9zcGFuPjwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwicnhfcmFkaW9fbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJyYWRpb1wiIGNoZWNrZWQ9XCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLXJhZGlvX19idXR0b24gZC1pbmxpbmUgcmFkaW8gY3VzdG9tLXJhZGlvLWJ1dHRvblwiIG5hbWU9XCJQcmVzY3JpYmVBc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIidQQlMnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicHJlc2NyaWJlQVNfUEJTIHx8IGNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLnRvTG93ZXJDYXNlKCkgPT09ICdwYnMnXCIgKGNsaWNrKT1cIlBCUygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTXCIgLz48c3BhbiBjbGFzcz1cIm1kbC1yYWRpb19fbGFiZWwgcmFkaW9fdHh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieyAnZGlzYWJsZWQtc3R5bGUnOiBwcmVzY3JpYmVBU19QQlMgPT0gdHJ1ZXx8IGNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCI+UEJTPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInJ4X3JhZGlvX2xhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwicmFkaW9cIiBjaGVja2VkPVwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1yYWRpb19fYnV0dG9uIGQtaW5saW5lIHJhZGlvIGN1c3RvbS1yYWRpby1idXR0b25cIiBuYW1lPVwiUHJlc2NyaWJlQXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCInUlBCUydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwcmVzY3JpYmVBU19SUEJTIHx8IGNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLnRvTG93ZXJDYXNlKCkgPT09ICdycGJzJ1wiIChjbGljayk9XCJSUEJTKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVNcIiAvPjxzcGFuIGNsYXNzPVwibWRsLXJhZGlvX19sYWJlbCByYWRpb190eHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7ICdkaXNhYmxlZC1zdHlsZSc6IHByZXNjcmliZUFTX1JQQlMgPT0gdHJ1ZXx8IGNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCI+UlBCUzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnhfbmV3X3BvcHVwX2NoZWNrYm94XCIgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gIT0gbnVsbCAmJiBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic1R5cGUhPXVuZGVmaW5lZCAmJiBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic1R5cGUhPW51bGwgJiZcclxuICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzVHlwZS50b0xvd2VyQ2FzZSgpID09PSAnbm9uIHBicycgJiZcclxuICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLmR2YU51bWJlciAhPSBudWxsICYmXHJcbiAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5kdmFOdW1iZXIgIT0gJycgJiYgaXNOb25QYnNGbGFnID09IGZhbHNlICYmICFpc1ByZXNjcmliZUFzUHJpdmF0ZU9ubHlcclxuICAgICAgICAgICAgICBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtZGwtY2hlY2tib3ggbWRsLWpzLWNoZWNrYm94IG1kbC1qcy1yaXBwbGUtZWZmZWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJjaGVja2JveFwiIGNsYXNzPVwiY2hlY2tfYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiY29tbW9uU2VydmljZXMudW5saXN0ZWRSQVwiIChjbGljayk9XCJ1bmxpc3RlZFJBKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZGwtY2hlY2tib3hfX2xhYmVsIGNoZWNrX2JveF9sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2Rpc2FibGVkLXN0eWxlJzogY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9PSB0cnVlIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBVbmxpc3RlZCBSQVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCJcclxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIntcclxuICAgICAgICAgICAgICBNX0NUR19ib3hfaGlkZTogIShcclxuICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzICYmXHJcbiAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5wYXRpZW50Q3RnRmxhZyA9PSAwICYmXHJcbiAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5wYXRpZW50Q3RnQ29QYXltZW50ID09IDAgJiZcclxuICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLnRvTG93ZXJDYXNlKCkgPT0gJ3BicydcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgPCEtLSA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPkNURy9QQlMgQ28gUGF5bWVudDo8L3A+IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnhfbmV3X3BvcHVwX2NoZWNrYm94IG0tdC0zNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIm1kbC1jaGVja2JveCBtZGwtanMtY2hlY2tib3ggbWRsLWpzLXJpcHBsZS1lZmZlY3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwiY2hlY2tib3hcIiBpZD1cImNoZWNrYm94MlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNoZWNrYm94X19pbnB1dCByeF9uZXdfZ3JvdXBfY2hlY2tib3hcIiBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLkNUR0NvUGF5bWVudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImNvbW1vblNlcnZpY2VzLkNUR0NvUGF5bWVudCA9PSB0cnVlXCIgLz48c3BhbiBjbGFzcz1cIm1kbC1jaGVja2JveF9fbGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtd2VpZ2h0OiA0MDA7IGZvbnQtc2l6ZTogMTZweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2Rpc2FibGVkLXN0eWxlJzogY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9PSB0cnVlIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiPkNURy9QQlNcclxuICAgICAgICAgICAgICAgICAgICAgICAgQ28gUGF5bWVudDwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtZ3JpZFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IHBhZGRpbmc6IDBweFwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwieyBkaXNhYmxlZFJ4Q29udGVudDogY29tbW9uU2VydmljZXMuaXNGZXRjaGluZ31cIj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5TY3JpcHQgRGF0ZTo8L3A+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2lucHV0IG5ld19yeF9wb3B1cF90YWJfaW5wdXRcIiB0eXBlPVwiZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiUnhTY3JpcHREYXRlXCIgcGxhY2Vob2xkZXI9XCIgLi4vLi4vLi4uLlwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuc2NyaXB0RGF0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5TdGFydCBEYXRlOjwvcD5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIGNsYXNzPVwibWRsLXRleHRmaWVsZF9faW5wdXQgbmV3X3J4X3BvcHVwX3RhYl9pbnB1dFwiIHR5cGU9XCJkYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiIGlkPVwiUnhTdGFydERhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiIC4uLy4uLy4uLi5cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLnN0YXJ0RGF0ZVwiIChuZ01vZGVsQ2hhbmdlKT1cImNvbW1vblNlcnZpY2VzLnJ4RW5kRGF0ZUNhbGN1bGF0ZXIoKVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5FbmQgRGF0ZTo8L3A+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2lucHV0IG5ld19yeF9wb3B1cF90YWJfaW5wdXRcIiB0eXBlPVwiZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIiBpZD1cIlJ4RW5kRGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCIuLi8uLi8uLi4uXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5lbmREYXRlXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPkRheXMgQmV0d2VlbiBSZXBlYXRzOjwvcD5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIChwYXN0ZSk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgRGF5cyBCZXR3ZWVuIFJlcGVhdHNcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV8fGNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdH1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLXRleHRmaWVsZF9faW5wdXQgbmV3X3J4X3BvcHVwX3RhYl9pbnB1dFwiIHR5cGU9XCJudW1iZXJcIiBpZD1cIkRheWJldHdlZW5yZXBlYXRzXCIgW21pbl09XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbnx8Y29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0XCJcclxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsXCIgKGtleXByZXNzKT1cImNoZWNrTW9iaWxlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJkYXlzY2hhbmdlKClcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlB1cnBvc2U6PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2lucHV0IG5ld19yeF9wb3B1cF90YWJfaW5wdXRcIiB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIiBpZD1cInNlbGVjdGVkUHVycG9zZTpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgUHVycG9zZVwiIHJlYWRPbmx5IFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMucHVycG9zZVNlYXJjaFZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwdXJwb3NlRHJvcGRvd24oKVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAjUHVycG9zZURyb3Bkb3duIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl9kcm9wZG93bl9saXN0X2JveCBuZXdfcnhfcG9wdXBfdGFiX3B1cnBvc2VfYm94IGgtMTYwcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieyBNX2xpc3RfYm94X3Nob3c6IHNlbGVjdFB1cnBvc2VEcm9wZG93biA9PT0gdHJ1ZSB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiXzFfbGlzdCByeF9kcm9wZG93blwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgKGNsaWNrKT1cInNlbGVjdFB1cnBvc2VWYWx1ZShudWxsKVwiIGNsYXNzPVwicC0xMlwiPjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgcHVycG9zZSBvZiBwdXJwb3NlRGF0YVwiIChjbGljayk9XCJzZWxlY3RQdXJwb3NlVmFsdWUocHVycG9zZSlcIiBbY2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgaGVpZ2hsaWdodDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHVycG9zZVsnbG9va3VwVGV4dCddID09XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnB1cnBvc2VTZWFyY2hWYWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBwdXJwb3NlW1wibG9va3VwVGV4dFwiXSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieyBNX0NUR19ib3hfaGlkZTogY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgIT0gdHJ1ZSB9XCI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5TdWJzdGl0dXRpb246PC9wPiAtLT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJ4X25ld19wb3B1cF9jaGVja2JveCBtLXQtMzZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtZGwtY2hlY2tib3ggbWRsLWpzLWNoZWNrYm94IG1kbC1qcy1yaXBwbGUtZWZmZWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJjaGVja2JveDFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWUgfHwgY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPT0gZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jaGVja2JveF9faW5wdXQgcnhfbmV3X2dyb3VwX2NoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5CcmFuZFN1YnN0aXR1dGVzTm90QWxsb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInRoaXMuYnJhbmRTdWJzdGl0dXRlc05vdEFsbG93KGNvbW1vblNlcnZpY2VzLkJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvdylcIiBbY2hlY2tlZF09XCJcclxuICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5CcmFuZFN1YnN0aXR1dGVzTm90QWxsb3dcclxuICAgICAgICAgICAgICAgICAgICAgID8gY29tbW9uU2VydmljZXMuQnJhbmRTdWJzdGl0dXRlc05vdEFsbG93XHJcbiAgICAgICAgICAgICAgICAgICAgICA6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgIFwiIC8+PHNwYW4gY2xhc3M9XCJtZGwtY2hlY2tib3hfX2xhYmVsXCIgc3R5bGU9XCJmb250LXdlaWdodDogNDAwOyBmb250LXNpemU6IDE2cHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydkaXNhYmxlZC1zdHlsZSc6IGNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPT0gdHJ1ZSB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIj5CcmFuZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTdWJzdGl0dXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgTm90IFBlcm1pdHRlZDwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7IE1fQ1RHX2JveF9oaWRlX2JyYW5kOiBjb21tb25TZXJ2aWNlcy5sZW1pID09IHRydWUgfVwiIGlkPVwiYnJhbmRuYW1ldG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cImhpZGVUb29sVGlwKClcIiAobW91c2VlbnRlcik9XCJzaG93dG9vbHRpcChjb21tb25TZXJ2aWNlcy5sZW1pLGJyYW5kdG9vbHRpcClcIj5cclxuICAgICAgICAgICAgICAgICAgPCEtLSA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPkJyYW5kIE5hbWU6PC9wPiAtLT5cclxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNicmFuZHRvb2x0aXA+PHNwYW4gY2xhc3M9XCJpbmNsdWRlX2JyYW5kX3Rvb2x0aXBcIj5UaGUgc2VsZWN0ZWQgcHJvZHVjdCBpcyBMRU1JXHJcbiAgICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVkLiBUaGVyZWZvcmUgaXQgbWF5IGJlXHJcbiAgICAgICAgICAgICAgICAgICAgICBwcmVzY3JpYmVkIGJ5IHRoZSBicmFuZCBuYW1lIG9ubHkuPC9zcGFuPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyeF9uZXdfcG9wdXBfY2hlY2tib3ggbS10LTM2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibWRsLWNoZWNrYm94IG1kbC1qcy1jaGVja2JveCBtZGwtanMtcmlwcGxlLWVmZmVjdFwiIFtjbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgIE1fQ1RHX2JveF9oaWRlX2JyYW5kX25hbWU6IGNvbW1vblNlcnZpY2VzLmxlbWkgPT0gdHJ1ZSB8fCBjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID09IHRydWUgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWVcclxuICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwiY2hlY2tib3hcIiBpZD1cImNoZWNrYm94MlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNoZWNrYm94X19pbnB1dCByeF9uZXdfZ3JvdXBfY2hlY2tib3hcIiBbY2hlY2tlZF09XCJjb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInRoaXMuaXNDaGFuZ2VCcmFuZE5hbWUoY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUpXCIgLz48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jaGVja2JveF9fbGFiZWxcIiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA0MDA7IGZvbnQtc2l6ZTogMTZweFwiPkluY2x1ZGUgQnJhbmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgTmFtZTwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+UmVndWxhdGlvbiAyNDo8L3A+IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnhfbmV3X3BvcHVwX2NoZWNrYm94IG0tdC0zNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIm1kbC1jaGVja2JveCBtZGwtanMtY2hlY2tib3ggbWRsLWpzLXJpcHBsZS1lZmZlY3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwiY2hlY2tib3hcIiBpZD1cImNoZWNrYm94MlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNoZWNrYm94X19pbnB1dCByeF9uZXdfZ3JvdXBfY2hlY2tib3hcIiBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLnJlZ3VsYXRpb24yNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImNvbW1vblNlcnZpY2VzLnJlZ3VsYXRpb24yNFwiIC8+PHNwYW4gY2xhc3M9XCJtZGwtY2hlY2tib3hfX2xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXdlaWdodDogNDAwOyBmb250LXNpemU6IDE2cHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydkaXNhYmxlZC1zdHlsZSc6IGNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPT0gdHJ1ZSB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIj5SZWd1bGF0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDI0PC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1ncmlkXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTsgcGFkZGluZzogMHB4XCJcclxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7IGRpc2FibGVkUnhDb250ZW50OiBjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nfVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+RE8gTk9UIHNlbmQgdG8gTXlTTDo8L3A+IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnhfbmV3X3BvcHVwX2NoZWNrYm94IG0tdC0zNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIm1kbC1jaGVja2JveCBtZGwtanMtY2hlY2tib3ggbWRsLWpzLXJpcHBsZS1lZmZlY3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwiY2hlY2tib3hcIiBpZD1cImNoZWNrYm94MlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNoZWNrYm94X19pbnB1dCByeF9uZXdfZ3JvdXBfY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLm15U0xDb25zZW50XCIgLz48c3BhbiBjbGFzcz1cIm1kbC1jaGVja2JveF9fbGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtd2VpZ2h0OiA0MDA7IGZvbnQtc2l6ZTogMTZweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2Rpc2FibGVkLXN0eWxlJzogY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9PSB0cnVlIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiPkRPXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE5PVCBzZW5kIHRvIE15U0w8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gUGhhcm1hY3k6IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJ4X25ld19wb3B1cF9jaGVja2JveFwiIHN0eWxlPVwibWFyZ2luLXRvcDogMHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIm1kbC1jaGVja2JveCBtZGwtanMtY2hlY2tib3ggbWRsLWpzLXJpcHBsZS1lZmZlY3RcIj48aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZVwiIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jaGVja2JveF9faW5wdXQgcnhfbmV3X2dyb3VwX2NoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3lcIiAoY2hhbmdlKT1cInNlbmRUb1BoYXJtYWN5Q2hhbmdlKClcIiAvPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jaGVja2JveF9fbGFiZWxcIiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA0MDA7Zm9udC1zaXplOiAxNnB4O21hcmdpbi10b3A6IC03cHg7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2Rpc2FibGVkLXN0eWxlJzogY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9PSB0cnVlIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiPlNlbmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIFBoYXJtYWN5PC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIGNsYXNzPVwibWRsLXRleHRmaWVsZF9faW5wdXQgbmV3X3J4X3BvcHVwX3RhYl9pbnB1dFwiIHR5cGU9XCJ0ZXh0XCIgcmVhZG9ubHlcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCIgaWQ9XCJzZWxlY3RlZGRvc2VcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5zZW5kVG9QaGFybWFjeVZhbHVlXCIgKGNsaWNrKT1cInN0cFZhbHVlRHJvcGRvd24oKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsgTV9DVEdfYm94X2hpZGU6IGNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5ICE9IHRydWUgfVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgI3N0cERyb3Bkb3duIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl9kcm9wZG93bl9saXN0X2JveCBuZXdfcnhfcG9wdXBfdGFiX3N0cF9ib3ggaC05M3BcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7IE1fbGlzdF9ib3hfc2hvdzogc2VsZWN0c3RwRHJvcGRvd24gPT09IHRydWUgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfMV9saXN0IHJ4X2Ryb3Bkb3duXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsaSAoY2xpY2spPVwic2VsZWN0U3RwVmFsdWUobnVsbClcIiBjbGFzcz1cInAtMTJcIj48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBzZW5kdG9waGFybWFjeSBvZiBzZW5kdG9waGFybWFjeURhdGFcIiAoY2xpY2spPVwic2VsZWN0U3RwVmFsdWUoc2VuZHRvcGhhcm1hY3kpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHNlbmR0b3BoYXJtYWN5Lm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgPCEtLSA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPkVtZXJnZW5jeSBTdXBwbHk6PC9wPiAtLT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJ4X25ld19wb3B1cF9jaGVja2JveCBtLXQtMzZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtZGwtY2hlY2tib3ggbWRsLWpzLWNoZWNrYm94IG1kbC1qcy1yaXBwbGUtZWZmZWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJjaGVja2JveDJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jaGVja2JveF9faW5wdXQgcnhfbmV3X2dyb3VwX2NoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5lbWVyZ2VuY3lTdXBwbHlcIiAvPjxzcGFuIGNsYXNzPVwibWRsLWNoZWNrYm94X19sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDQwMDsgZm9udC1zaXplOiAxNnB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZGlzYWJsZWQtc3R5bGUnOiBjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID09IHRydWUgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCI+RW1lcmdlbmN5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFN1cHBseTwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInBhZ2UgPT0gMlwiIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl8yXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1ncmlkXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTsgcGFkZGluZzogMHB4OyBvcGFjaXR5OiAxXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTYtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDogMTAwJTsgcGFkZGluZzogMHB4XCIgY2xhc3M9XCJtZGwtZ3JpZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sIG1kbC1jZWxsLS04LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWdyaWQgbmV3X3J4X3BvcHVwX3RhYl8xX2dyaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlJYPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiIFtpbm5lckhUTUxdPVwiY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZVwiPjwvYj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcFwiIHN0eWxlPVwibWFyZ2luOiAwcHhcIj5RdWFudGl0eTogPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjb2xvcjogcmdiKDQ1LCA0NSwgNDUpOyBmb250LXdlaWdodDogNjAwXCI+e3sgY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4gUmVwZWF0czogPHNwYW4gc3R5bGU9XCJjb2xvcjogcmdiKDQ1LCA0NSwgNDUpOyBmb250LXdlaWdodDogNjAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwgfX08L3NwYW4+IERlZmF1bHQgUXVhbnRpdHk6e3tnZXREZWZhdWx0UXVhbnRpdHkoKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0IFJlcGVhdHM6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24hPW51bGwmJmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucmVwZWF0cyE9bnVsbD9jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnJlcGVhdHM6XCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5kb3NlU2VhcmNoVmFsdWUgIT0gJycgfHxjb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWUgIT0gJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgY29tbW9uU2VydmljZXMuZG9zZVNlYXJjaFZhbHVlIH19IDwvc3Bhbj48c3Bhbj57eyBjb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwICpuZ0lmPVwiY29tbW9uU2VydmljZXMuZm9vZFNlYXJjaFZhbHVlICE9ICcnXCIgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29tbW9uU2VydmljZXMuZm9vZFNlYXJjaFZhbHVlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7SW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbiAhPVwiXCIgJiYgSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbiE9bnVsbD9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3RydWN0aW9uRGVzY3JpcHRpb246Y29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSE9XCJcIiAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSE9bnVsbD9jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlOlwiXCJ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCAqbmdJZj1cImNvbW1vblNlcnZpY2VzLnJvdXRlU2VhcmNoVmFsdWUgIT0gJydcIiBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb21tb25TZXJ2aWNlcy5yb3V0ZVNlYXJjaFZhbHVlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFAuUi5OIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiY29tbW9uU2VydmljZXMucnhQUk5cIiBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGljb24tZG9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiY29sb3I6ICMwMDc3YjZcIj5jaGVjazwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWNvbW1vblNlcnZpY2VzLnJ4UFJOXCI+LTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcFwiPkRheXMgQmV0d2VlbiBSZXBlYXRzOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShjb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbClcIj57e2NvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwpXCI+LTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVW51c3VhbCBEb3NlOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJjb21tb25TZXJ2aWNlcy51blVzdWFsRG9zZUZsYWdcIiBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGljb24tZG9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiY29sb3I6ICMwMDc3YjZcIj5jaGVjazwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWNvbW1vblNlcnZpY2VzLnVuVXN1YWxEb3NlRmxhZ1wiPi08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3BcIj5TY3JpcHQgRGF0ZTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7dGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHREYXRlfGRhdGU6J2RkLU1NLXl5eXknfX08L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wXCI+U3RhcnQgRGF0ZTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7dGhpcy5jb21tb25TZXJ2aWNlcy5zdGFydERhdGV8ZGF0ZTonZGQtTU0teXl5eSd9fTwvc3Bhbj4sIEVuZCBEYXRlOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3t0aGlzLmNvbW1vblNlcnZpY2VzLmVuZERhdGV8ZGF0ZTonZGQtTU0teXl5eSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wXCI+UHJlc2NyaWJlIEFzOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShjb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUylcIj57e2NvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMpXCI+LTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcFwiPlB1cnBvc2U6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFjb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGNvbW1vblNlcnZpY2VzLnB1cnBvc2VTZWFyY2hWYWx1ZSlcIj57e2NvbW1vblNlcnZpY2VzLnB1cnBvc2VTZWFyY2hWYWx1ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGNvbW1vblNlcnZpY2VzLnB1cnBvc2VTZWFyY2hWYWx1ZSlcIj4tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmNsdWRlIEJyYW5kIE5hbWU6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lXCIgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBpY29uLWRvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImNvbG9yOiAjMDA3N2I2XCI+Y2hlY2s8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFjb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZVwiPi08L3NwYW4+LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQnJhbmQgU3Vic3RpdHV0aW9uIE5vdCBQZXJtaXR0ZWQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImNvbW1vblNlcnZpY2VzLkJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvd1wiIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgaWNvbi1kb25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjb2xvcjogIzAwNzdiNlwiPmNoZWNrPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhY29tbW9uU2VydmljZXMuQnJhbmRTdWJzdGl0dXRlc05vdEFsbG93XCI+LTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVndWxhdGlvbiAyNDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiY29tbW9uU2VydmljZXMucmVndWxhdGlvbjI0XCIgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBpY29uLWRvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImNvbG9yOiAjMDA3N2I2XCI+Y2hlY2s8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFjb21tb25TZXJ2aWNlcy5yZWd1bGF0aW9uMjRcIj4tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDVEcvUEJTIENvIFBheW1lbnQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImNvbW1vblNlcnZpY2VzLkNUR0NvUGF5bWVudFwiIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgaWNvbi1kb25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjb2xvcjogIzAwNzdiNlwiPmNoZWNrPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhY29tbW9uU2VydmljZXMuQ1RHQ29QYXltZW50XCI+LTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRE8gTk9UIHNlbmQgdG8gTXlTTDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiY29tbW9uU2VydmljZXMubXlTTENvbnNlbnRcIiBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGljb24tZG9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiY29sb3I6ICMwMDc3YjZcIj5jaGVjazwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWNvbW1vblNlcnZpY2VzLm15U0xDb25zZW50XCI+LTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VuZCB0byBQaGFybWFjeTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3lcIiBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGljb24tZG9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiY29sb3I6ICMwMDc3YjZcIj5jaGVjazwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5XCI+LTwvc3Bhbj4sIFNlbmQgdG8gUGhhcm1hY3kgVmFsdWU6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFjb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5VmFsdWUpP2NvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5VmFsdWU6Jy0nfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1lcmdlbmN5IFN1cHBseTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiY29tbW9uU2VydmljZXMuZW1lcmdlbmN5U3VwcGx5XCIgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBpY29uLWRvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImNvbG9yOiAjMDA3N2I2XCI+Y2hlY2s8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFjb21tb25TZXJ2aWNlcy5lbWVyZ2VuY3lTdXBwbHlcIj4tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtZ3JpZFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IHBhZGRpbmc6IDBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sIG1kbC1jZWxsLS04LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPk5vdGUgVG8gUGhhcm1hY3k6PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGF1dG9jb21wbGV0ZT1cIm9mZlwiIG5hbWU9XCJcIiBpZD1cIlwiIHJvd3M9XCIzXCIgbWF4bGVuZ3RoPVwiNTBcIiBwbGFjZWhvbGRlcj1cIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ0aGlzLmNvbW1vblNlcnZpY2VzLmRvY3Rvck5vdGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LTEwMCBuZXdfcnhfcG9wdXBfdGFiX3RleHRhcmVhIHJ4LW0tdy01MzVwXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2wgbWRsLWNlbGwtLTgtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+QW5ub3RhdGlvbjo8L3A+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGF1dG9jb21wbGV0ZT1cIm9mZlwiIG5hbWU9XCJcIiBpZD1cIlwiIHJvd3M9XCIzXCIgbWF4bGVuZ3RoPVwiNTAwXCIgcGxhY2Vob2xkZXI9XCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidGhpcy5jb21tb25TZXJ2aWNlcy5hbm5vdGF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LTEwMCBuZXdfcnhfcG9wdXBfdGFiX3RleHRhcmVhIHJ4LW0tdy01MzVwXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2wgbWRsLWNlbGwtLTgtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+UmVhc29uIEZvciBQcmVzY3JpcHRpb246PC9wPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBhdXRvY29tcGxldGU9XCJvZmZcIiBuYW1lPVwiXCIgaWQ9XCJcIiByb3dzPVwiM1wiIG1heGxlbmd0aD1cIjUwXCIgcGxhY2Vob2xkZXI9XCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpcHRpb25SZWFzb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctMTAwIG5ld19yeF9wb3B1cF90YWJfdGV4dGFyZWEgcngtbS13LTUzNXBcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTYtY29sIG1kbC1jZWxsLS04LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiIHN0eWxlPVwidGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7dGhpcy5nZXRTdGF0ZUF1dGhvcml0eUxhYmVsKGNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnN0YXRlKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9XCJtYXJnaW46IDBweDttYXJnaW4tdG9wOiAtOHB4O21hcmdpbi1ib3R0b206IDEwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RhdGUtdHh0LWNvbG9yIG5ld19yeF9wb3B1cF9sYWJlbF9wXCI+KFJlbGV2YW50IHRvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuc3RhdGUgfX0pPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIG5hbWU9XCJhcHByb3ZhbFwiIHBsYWNlaG9sZGVyPVwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIiBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLlN0YXRlQXV0aG9yaXR5TnVtYmVyXCIgbWF4bGVuZ3RoPVwiMjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwiYXV0aG9yaXR5Tm9WYWxpZGF0aW9uKCRldmVudClcIiAobmdNb2RlbENoYW5nZSk9XCJhdXRob3JpdHlOb0NoYW5nZSgkZXZlbnQpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tNi1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwie1xyXG4gICAgICAgICAgICAnbmV3X3J4X25vX2F1dGhvcml0eSc6IXNob3dBdXRob3JpdHlCb3goXHJcbiAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiE9bnVsbD8gY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnM6JycsY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMsY29tbW9uU2VydmljZXMucnhBdXRob3JpdHksY29tbW9uU2VydmljZXMudW5saXN0ZWRSQSlcclxuICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICBzaG93QXV0aG9yaXR5Qm94KFxyXG4gICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uIT1udWxsPyAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnM6JycsXHJcbiAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLFxyXG4gICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5yeEF1dGhvcml0eSxcclxuICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMudW5saXN0ZWRSQVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJwYWRkaW5nOiAwcHhcIiBjbGFzcz1cIm1kbC1ncmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTgtY29sIG1kbC1jZWxsLS02LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX05ld1wiPkhPVExJTkU6IDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9zcGFuXCI+e3tjb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9PVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1JQQlMnPycxODAwNTUyNTgwJzonMTgwMDg4ODMzMyd9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tNC1jb2wgbWRsLWNlbGwtLTItY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cInRleHQtYWxpZ246IHJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3Bhc3NldHMuaG9sYS5oZWFsdGgvcngtd2lkZ2V0cy9yeC1taW1zLnBuZ1wiIGFsdD1cIk1JTVMgbG9nb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiA4MHB4OyBoZWlnaHQ6IGF1dG9cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtZ3JpZFwiIHN0eWxlPVwicGFkZGluZzogMHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTYtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlc2NyaWJlciBOYW1lOjxzcGFuPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5maXJzdE5hbWUgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIgXCIgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMubGFzdE5hbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tNi1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVzY3JpYmVyIE51bWJlcjo8c3Bhbj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy5wcmVzY3JpYmVyTnVtYmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTYtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aWVudCBNZWRpY2FyZSBOdW1iZXI6PHNwYW4+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLm1lZGljYXJlTnVtYmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLm1lZGljYXJlTnVtYmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tNi1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBBdXRob3JpdHkgRm9ybSBObzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuYXV0aG9yaXR5Rm9ybU5vXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGNvbW1vblNlcnZpY2VzLmF1dGhvcml0eUZvcm1Ob1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1ncmlkXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTsgcGFkZGluZzogMHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbCBtZGwtY2VsbC0tOC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPkF1dGhvcml0eSBJdGVtOjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhdXRob3JpdHlfaXRlbV90ZXh0XCIgW2lubmVySFRNTF09XCJjb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lXCI+PC9wPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcCBuZXdfcnhfcG9wdXBfdGFiX3NtYWxsQm94ZXNcIiBzdHlsZT1cIm1hcmdpbjogMHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgUXVhbnRpdHk6PHNwYW4gc3R5bGU9XCJjb2xvcjogcmdiKDQ1LCA0NSwgNDUpOyBmb250LXdlaWdodDogNjAwXCI+IHt7IGNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj4gUmVwZWF0czo8c3BhbiBzdHlsZT1cImNvbG9yOiByZ2IoNDUsIDQ1LCA0NSk7IGZvbnQtd2VpZ2h0OiA2MDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwgfX08L3NwYW4+IERlZmF1bHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBRdWFudGl0eTp7e2NvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24hPW51bGwmJmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHMhPW51bGw/KGNvbW1vblNlcnZpY2VzLnF1YW50aXR5V2l0aFVuaXRGbGFnP1wiMVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHggXCI6XCJcIikrY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tYXhRdHlVbml0czpcIlwifX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgUmVwZWF0czp7e2NvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24hPW51bGwmJmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucmVwZWF0cyE9bnVsbD9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnJlcGVhdHM6XCJcIn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWdyaWRcIiBzdHlsZT1cInBhZGRpbmc6IDBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2wgbWRsLWNlbGwtLTgtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBQQlMgTGlzdGVkIEluZGljYXRpb24gQXV0aG9yaXR5OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBuZXdfcnhfcG9wdXBfdGFiX3RleHRhcmVhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm1pbi1oZWlnaHQ6IDcwcHg7IG1heC1oZWlnaHQ6IDE1MHB4OyBvdmVyZmxvdzogYXV0b1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT1cIm1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDE1cHg7bGlzdC1zdHlsZTogbm9uZTtwYWRkaW5nOiAwcHg7XCIgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1Nob3dSZXN0cmljdGlvbnMgPT0gdHJ1ZSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucyAhPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMgIT0gJydcclxuICAgICAgICAgICAgICAgICAgICAgIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIHN0eWxlPVwiZm9udC1zaXplOiAxMnB4O3BhZGRpbmc6IDBweCAxMHB4O21hcmdpbi1ib3R0b206IDEwcHg7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuZXdfcnhfcG9wX2F1dF9pbnQgY3Vyc29yXCIgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3RyaWN0aW9uIG9mIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgLlJlc3RyaWN0aW9ucztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCBhcyBpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiIFtjbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3J4X3BvcF9hdXRfaW5zX3NlbGVjdDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnNJZCA9PSBpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbjogMHB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCIgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uUHJldmlldyAhPSBudWxsICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvbi5yZXN0cmljdGlvblByZXZpZXcgIT0gJycgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uVGV4dCAhPSBudWxsICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvbi5yZXN0cmljdGlvblRleHQgIT0gJydcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluZGljYXRpb25BdXRob3JpdHkoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uIT1udWxsPyBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1heFF0eVVuaXRzOicnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uIT1udWxsPyBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnJlcGVhdHM6JycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyeF9yZXN0cmljdGlvblRleHRcIiBzdHlsZT1cImZvbnQtc2l6ZTogMTJweDtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uVGV4dC5sZW5ndGggPCA4MFwiPjxiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25UeXBlIH19PC9iPiAtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbFRvRm9ybWF0dGVkVGV4dChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uUHJldmlld1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI+PC9zcGFuPjwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyeF9yZXN0cmljdGlvblRleHRcIiBzdHlsZT1cImZvbnQtc2l6ZTogMTJweDtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJyZXN0cmljdGlvbi5yZXN0cmljdGlvblRleHQubGVuZ3RoID4gODBcIj48YiAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2F0aW9uQXV0aG9yaXR5KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uIT1udWxsP2NvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHM6JycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uIT1udWxsP2NvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucmVwZWF0czonJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvbi5yZXN0cmljdGlvblR5cGUgfX08L2I+IC1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGljYXRpb25BdXRob3JpdHkoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24hPW51bGw/Y29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tYXhRdHlVbml0czonJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24hPW51bGw/Y29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5yZXBlYXRzOicnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiIFtpbm5lckhUTUxdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbFRvRm9ybWF0dGVkVGV4dChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uUHJldmlld1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkuc3Vic3RyaW5nKDAsIDgwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIj48L3NwYW4+Li4uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyOyBjb2xvcjogI2ZmOTk3OFwiIGlkPVwic2hvdy10b29sdGlwLWlkXCI+U2hvd1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb3JlPC9hPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3Rvb2x0aXBkZW1vPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJyeF90b29sdGlwX2lubmVyX2JveFwiIFtpbm5lckhUTUxdPVwicmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25UZXh0XCI+PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sIG1kbC1jZWxsLS04LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwYWRkaW5nOiAwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbCBtZGwtY2VsbC0tOC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+UEJTIE5vdGVzOjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgYXV0b2NvbXBsZXRlPVwib2ZmXCIgbmFtZT1cIlwiIGlkPVwiXCIgcm93cz1cIjJcIiBtYXhsZW5ndGg9XCI1MDBcIiBwbGFjZWhvbGRlcj1cIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctMTAwIG5ld19yeF9wb3B1cF90YWJfdGV4dGFyZWFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMucGJzTm90ZXNcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sIG1kbC1jZWxsLS04LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGljYXRpb24gRm9yIFRoaXMgQXV0aG9yaXR5OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgYXV0b2NvbXBsZXRlPVwib2ZmXCIgbmFtZT1cIlwiIGlkPVwiXCIgcm93cz1cIjJcIiBwbGFjZWhvbGRlcj1cIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnNcIiAobmdNb2RlbENoYW5nZSk9XCJvbklucHV0Q2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LTEwMCBuZXdfcnhfcG9wdXBfdGFiX3RleHRhcmVhIHJ4LW0tdy0xMDBcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2wgbWRsLWNlbGwtLTgtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEF1dGhvcml0eUxhYmVsKGNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnN0YXRlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImFwcHJvdmFsXCIgcGxhY2Vob2xkZXI9XCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIiBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5hcHByb3ZhbE5vXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25JbnB1dGNoYW5nZUFwcHJvdmFsTm8oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwiYXV0aG9yaXR5Tm9WYWxpZGF0aW9uKCRldmVudClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgIXNob3dBdXRob3JpdHlCb3goXHJcbiAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24hPW51bGw/IGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zOicnLFxyXG4gICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyxcclxuICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucnhBdXRob3JpdHksXHJcbiAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkFcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICBcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ0ZXh0LWFsaWduOiByaWdodFwiICpuZ0lmPVwiIWNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3Bhc3NldHMuaG9sYS5oZWFsdGgvcngtd2lkZ2V0cy9yeC1taW1zLnBuZ1wiIGFsdD1cIk1JTVMgbG9nb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDgwcHg7IGhlaWdodDogYXV0b1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIk5vX0F1dGhvcml0eV9ib3hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwPk5vIEF1dGhvcml0eSBSZXF1aXJlZDwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyeF9mb290ZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJ4X2Zvb3Rlcl9icmFuZFwiPlxyXG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwibWwtMTBcIj48c3Bhbj5Ib2xhIENvbnN1bHQgfCAxLjAgPHNwYW4gKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5zYW5kYm94XCI+fCA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyeF9zdGFnaW5nXCI+VGhpcyBpcyBhIHNhbmRib3ggZW52aXJvbm1lbnQ8L3NwYW4+PC9zcGFuPjwvc3Bhbj48L3A+XHJcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtdC0xNXBcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicnhfcG9wdXBfZm9vdGVyX3RleHRcIj7CqSAyMDI2IEhvbGEgSGVhbHRoLCBhIGJyYW5kIG9mIFBhY2thcGlsbCBQdHkgTHRkIHwgdlxyXG4gICAgICAgICAgICAgICAgICAxLjEuMyB8XHJcbiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJodHRwczovL2hvbGEuaGVhbHRoL2NvbnN1bHQtdGVybXNcIiB0YXJnZXQ9XCJfYmxhbmtcIj5UZXJtczwvYT4gfFxyXG4gICAgICAgICAgICAgICAgICA8YSBocmVmPVwiaHR0cHM6Ly9ob2xhLmhlYWx0aC9jb25zdWx0LXByaXZhY3ktcG9saWN5XCIgdGFyZ2V0PVwiX2JsYW5rXCI+UHJpdmFjeSBQb2xpY3k8L2E+IHxcclxuICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cIm1haWx0bzpzdXBwb3J0QGhvbGEuaGVhbHRoXCIgdGFyZ2V0PVwiX2JsYW5rXCI+SGVscDwvYT48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj4iXX0=