@ieeesa-npm/events-and-meetings 0.7.2 → 0.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/create-modify-event/create-modify-event.component.mjs +9 -4
- package/esm2022/lib/components/create-modify-meeting/create-modify-meeting.component.mjs +9 -4
- package/fesm2022/ieeesa-npm-events-and-meetings.mjs +16 -6
- package/fesm2022/ieeesa-npm-events-and-meetings.mjs.map +1 -1
- package/lib/components/create-modify-event/create-modify-event.component.d.ts +1 -1
- package/lib/components/create-modify-meeting/create-modify-meeting.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -169,7 +169,12 @@ export class CreateOrModifyEventComponent {
|
|
|
169
169
|
};
|
|
170
170
|
this.eventsAndMeetingsService?.canCloseAddMeetingModal$?.next(false);
|
|
171
171
|
this.initializeColumnSchema();
|
|
172
|
-
this.
|
|
172
|
+
if (this.isViewOnly) {
|
|
173
|
+
this.getGroups(false);
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
this.getGroups();
|
|
177
|
+
}
|
|
173
178
|
this.getEventTypes();
|
|
174
179
|
this.selectedEventId = this.eventsAndMeetingsService.getSelectedEventId();
|
|
175
180
|
this.supportMessage = this.screenTexts?.supportMessage;
|
|
@@ -594,9 +599,9 @@ export class CreateOrModifyEventComponent {
|
|
|
594
599
|
* Loads groups using eventsAndMeetingsService
|
|
595
600
|
* @memberof CreateOrModifyEventComponent
|
|
596
601
|
*/
|
|
597
|
-
getGroups() {
|
|
602
|
+
getGroups(isRelatedGroup = true) {
|
|
598
603
|
this.eventsAndMeetingsService
|
|
599
|
-
.getGroups()
|
|
604
|
+
.getGroups(isRelatedGroup)
|
|
600
605
|
.pipe(takeUntil(this.destroy$))
|
|
601
606
|
.subscribe({
|
|
602
607
|
next: (res) => {
|
|
@@ -1277,4 +1282,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
1277
1282
|
}], createModifyEventClick: [{
|
|
1278
1283
|
type: Output
|
|
1279
1284
|
}] } });
|
|
1280
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW1vZGlmeS1ldmVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldmVudHMtYW5kLW1lZXRpbmdzL3NyYy9saWIvY29tcG9uZW50cy9jcmVhdGUtbW9kaWZ5LWV2ZW50L2NyZWF0ZS1tb2RpZnktZXZlbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXZlbnRzLWFuZC1tZWV0aW5ncy9zcmMvbGliL2NvbXBvbmVudHMvY3JlYXRlLW1vZGlmeS1ldmVudC9jcmVhdGUtbW9kaWZ5LWV2ZW50LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZELE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUtaLGVBQWUsRUFDZixlQUFlLEVBQ2YsMEJBQTBCLEVBRzFCLHdCQUF3QixFQUd4QixVQUFVLEVBQ1Ysb0JBQW9CLEVBR3BCLGtCQUFrQixHQUNuQixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sS0FBSyxXQUFXLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFcEYsT0FBTyxFQUFjLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEQsT0FBTyxFQUNMLFNBQVMsR0FJVixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RCxPQUFPLEVBQUUs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QUFvQjtnQkFDckIsVUFBVTtzQkFBbkIsTUFBTTtnQkE4Q0UsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUksc0JBQXNCO3NCQUEvQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge1xyXG4gIEFsaWduVHlwZSxcclxuICBDYWxlbmRhclR5cGUsXHJcbiAgQ2hlY2tib3hPcHRpb24sXHJcbiAgRm9ybUdyaWQsXHJcbiAgUGFnaW5hdG9yQ29uZmlnLFxyXG4gIFNlbGVjdE9wdGlvbixcclxuICBGb3JtQ29udHJvbFR5cGUsXHJcbiAgVGFibGVDb2x1bW5UeXBlLFxyXG4gIE1vZGFsQ29uZmlybWF0aW9uQ29tcG9uZW50LFxyXG4gIE1lbnUsXHJcbiAgQ29uZmlybWF0aW9uTW9kYWxEYXRhLFxyXG4gIFRhYmxlQ29sdW1uU29ydERpcmVjdGlvbixcclxuICBUYWJsZUNvbHVtblNjaGVtYSxcclxuICBMZWdlbmQsXHJcbiAgU2VhcmNoVHlwZSxcclxuICBEeW5hbWljRm9ybUNvbXBvbmVudCxcclxuICBGb3JtTW9kZWwsXHJcbiAgU2VsZWN0T3BlbmVkU3RhdGUsXHJcbiAgRGF0YVRhYmxlQ29tcG9uZW50LFxyXG59IGZyb20gJ0BpZWVlc2EtbnBtL3ByZXNlbnRhdGlvbic7XHJcbmltcG9ydCAqIGFzIHNjcmVlblRleHRzIGZyb20gJy4uLy4uL2Fzc2V0cy9jb25zdGFudHMuanNvbic7XHJcbmltcG9ydCB7IEV2ZW50c0FuZE1lZXRpbmdzVmFsaWRhdGlvblBhdHRlcm5zIH0gZnJvbSAnLi4vLi4vYXNzZXRzL2Zvcm0tdmFsaWRhdGlvbnMnO1xyXG5pbXBvcnQgeyBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ldmVudHMtYW5kLW1lZXRpbmdzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtcclxuICBBbGVydFR5cGUsXHJcbiAgQWxlcnRzU2VydmljZSxcclxuICBDb3VudHJ5QW5kVGltZXpvbmVTZXJ2aWNlLFxyXG4gIERlYWN0aXZhdGVDb21wb25lbnQsXHJcbn0gZnJvbSAnQGllZWVzYS1ucG0vdXRpbGl0eSc7XHJcbmltcG9ydCB7IEZvcm1TdGF0dXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvZm9ybS1zdGF0dXMubW9kZWwnO1xyXG5pbXBvcnQgeyBEYXRlRm9ybWF0cyB9IGZyb20gJy4uLy4uL2Fzc2V0cy9kYXRlLWZvcm1hdHMnO1xyXG5pbXBvcnQge1xyXG4gIEdldEdyb3VwUmVzcG9uc2UsXHJcbiAgR3JvdXBJbmZvLFxyXG4gIEV2ZW50c0FuZE1lZXRpbmdSb3V0ZUNvbmZpZyxcclxuICBGb3JtVXRpbGl0eVNlcnZpY2UsXHJcbn0gZnJvbSAnQGllZWVzYS1ucG0vc2hhcmVkJztcclxuaW1wb3J0IHsgQ3JlYXRlT3JFZGl0RXZlbnRQYXlsb2FkIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NyZWF0ZS1ldmVudC5tb2RlbCc7XHJcbmltcG9ydCB7IEF0dGVuZGVlVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9hdHRlbmRlZS10eXBlLm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBHZXRNZWV0aW5nc0J5RXZlbnRJZFBheWxvYWQsXHJcbiAgTWVldGluZyxcclxuICBNZWV0aW5nRGV0YWlscyxcclxufSBmcm9tICcuLi8uLi9tb2RlbHMvbWVldGluZ3MtdW5kZXItZXZlbnRzLm1vZGVsJztcclxuaW1wb3J0IHsgRXZlbnRBbmRNZWV0aW5nRnVuY3Rpb25UeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2V2ZW50LW1lZXRpbmctZnVuY3Rpb24tdHlwZXMubW9kZWwnO1xyXG5pbXBvcnQgeyBFdmVudERldGFpbHNDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3ZpZXctZXZlbnQubW9kZWwnO1xyXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IG1vbWVudF8gZnJvbSAnbW9tZW50JztcclxuaW1wb3J0IHsgUGFnZUV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgUGVybWlzc2lvblR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvcGVybWlzc2lvbi10eXBlLm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBNZWV0aW5nQWN0aW9uLFxyXG4gIE1lZXRpbmdWaWV3LFxyXG59IGZyb20gJy4uLy4uL21vZGVscy9ldmVudC1vci1tZWV0aW5nLW1lbnUtYWN0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgUm91dGVyLCBSb3V0ZXJMaW5rLCBVcmxUcmVlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgRk9STV9DT05UUk9MUyB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLWNvbnRyb2xzLm1vZGVsJztcclxuaW1wb3J0IHsgU29ydCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xyXG5pbXBvcnQgeyBVc2VyUGVybWlzc2lvbiB9IGZyb20gJy4uLy4uL21vZGVscy9tZWV0aW5nLXBlcm1pc3Npb25zLm1vZGVsJztcclxuaW1wb3J0IHsgVmlld0V2ZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vdmlldy1ldmVudC92aWV3LWV2ZW50LmNvbXBvbmVudCc7XHJcbmNvbnN0IG1vbWVudCA9IG1vbWVudF87XHJcbmNvbnN0IENPTFVNTl9ERUYgPSB7XHJcbiAgbWVldGluZ1RpdGxlOiAnbWVldGluZ1RpdGxlJyxcclxuICBtZWV0aW5nU3REYXRlOiAnbWVldGluZ1N0RGF0ZScsXHJcbiAgZW5kRGF0ZUFuZFRpbWU6ICdlbmQtZGF0ZS10aW1lJyxcclxuICB0aW1lWm9uZTogJ3RpbWUtem9uZScsXHJcbiAgZ3JvdXA6ICdyZWxhdGVkLWdyb3VwJyxcclxuICBsb2NhdGlvbjogJ2xvY2F0aW9uJyxcclxufTtcclxuXHJcbi8qKlxyXG4gKiBJbXBsZW1lbnRhdGlvbiBvZiBldmVudCBjcmVhdGlvbiBvciBtb2RpZmljYXRpb24uXHJcbiAqIEBleHBvcnRcclxuICogQGNsYXNzIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICogQGltcGxlbWVudHMge09uSW5pdH1cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWVlZXNhLWNyZWF0ZS1tb2RpZnktZXZlbnQnLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIER5bmFtaWNGb3JtQ29tcG9uZW50LFxyXG4gICAgRGF0YVRhYmxlQ29tcG9uZW50LFxyXG4gICAgUm91dGVyTGluayxcclxuICAgIFZpZXdFdmVudENvbXBvbmVudCxcclxuICBdLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NyZWF0ZS1tb2RpZnktZXZlbnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NyZWF0ZS1tb2RpZnktZXZlbnQuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3JlYXRlT3JNb2RpZnlFdmVudENvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgRGVhY3RpdmF0ZUNvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3lcclxue1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgZGlhbG9nUmVmOiBhbnk7XHJcbiAgZGVzdHJveSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgY29uc3RhbnRzOiBhbnkgPSBzY3JlZW5UZXh0cztcclxuICBjaGFyc0xpbWl0ID0gdGhpcy5jb25zdGFudHM/LmNoYXJhY3RlckxpbWl0cztcclxuICBzY3JlZW5UZXh0cyA9IHRoaXMuY29uc3RhbnRzPy5jcmVhdGVPck1vZGlmeUV2ZW50O1xyXG4gIGFkZE1lZXRpbmcgPSB0aGlzLnNjcmVlblRleHRzPy5hZGRNZWV0aW5nO1xyXG4gIGNvbHVtbkhlYWRpbmcgPSB0aGlzLnNjcmVlblRleHRzPy5jb2x1bW5TY2hlbWE/LmhlYWRpbmc7XHJcbiAgbGVmdEJ1dHRvbkxhYmVsID0gdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmxlZnRCdXR0b25MYWJlbDtcclxuICByaWdodEJ1dHRvbkxhYmVsID0gdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LnJpZ2h0QnV0dG9uTGFiZWw7XHJcbiAgbWVldGluZ0RldGFpbHNUaXRsZSA9IHRoaXMuYWRkTWVldGluZz8uZmlyc3RMYWJlbDtcclxuICBhZGRNZWV0aW5nc0xpbmsgPSB0aGlzLmFkZE1lZXRpbmc/LmFkZE1lZXRpbmdzTGluaztcclxuICBpc1N1Ym1pdEJ1dHRvbkRpc2FibGVkID0gdHJ1ZTtcclxuICBjb2xXaWR0aDogRm9ybUdyaWQgPSB7IHhzOiAxMiwgeGw6IDEyLCBzbTogMTIsIG1kOiAxMiwgbGc6IDEyIH07XHJcbiAgbWVldGluZ3M6IE1lZXRpbmdbXSA9IFtdO1xyXG4gIGNyZWF0ZU9yVXBkYXRlRXZlbnRzRm9ybUdyb3VwITogRm9ybU1vZGVsO1xyXG4gIGFjdGlvbkJ1dHRvbkFsaWduID0gQWxpZ25UeXBlLkxFRlQ7XHJcbiAgZXZlbnRUeXBlczogU2VsZWN0T3B0aW9uW10gPSBbXTtcclxuICBzZWxlY3RlZEF0dGVuZGVlVHlwZXM6IHN0cmluZ1tdID0gW107XHJcbiAgaXNDcmVhdGVPclVwZGF0ZUV2ZW50Rm9ybUludmFsaWQgPSBmYWxzZTtcclxuICBjcmVhdGVPclVwZGF0ZUV2ZW50Rm9ybUdyb3VwUmVmITogRm9ybUdyb3VwW107XHJcbiAgYXR0ZW5kZWVzVHlwZXM6IENoZWNrYm94T3B0aW9uW10gPSB0aGlzLmNvbnN0YW50cz8uYXR0ZW5kZWVzVHlwZTtcclxuICBAVmlld0NoaWxkKER5bmFtaWNGb3JtQ29tcG9uZW50KSBkeW5hbWljRm9ybUNvbXBvbmVudCE6IER5bmFtaWNGb3JtQ29tcG9uZW50O1xyXG4gIEBPdXRwdXQoKSBmb3JtQ2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIGdyb3VwczogU2VsZWN0T3B0aW9uW10gPSBbXTtcclxuICBjb3VudHJpZXMhOiBTZWxlY3RPcHRpb25bXTtcclxuICBzZWxlY3RlZEV2ZW50SWQhOiBzdHJpbmc7XHJcbiAgZXZlbnRBbmRNZWV0aW5nRnVuY3Rpb25UeXBlID0gRXZlbnRBbmRNZWV0aW5nRnVuY3Rpb25UeXBlO1xyXG4gIHNlbGVjdGVkRXZlbnREYXRhITogRXZlbnREZXRhaWxzQ29uZmlndXJhdGlvbjtcclxuICB0aW1lem9uZXMhOiBTZWxlY3RPcHRpb25bXTtcclxuICBjb2x1bW5TY2hlbWEhOiBUYWJsZUNvbHVtblNjaGVtYVtdO1xyXG4gIHBhZ2luYXRvckNvbmZpZzogUGFnaW5hdG9yQ29uZmlnID0ge1xyXG4gICAgcmVjb3Jkc1BlclBhZ2U6IHRoaXMuc2NyZWVuVGV4dHM/LnBhZ2VTaXplT3B0aW9ucz8uWzFdLFxyXG4gICAgcGFnZVNpemVPcHRpb25zOiB0aGlzLnNjcmVlblRleHRzPy5wYWdlU2l6ZU9wdGlvbnMsXHJcbiAgICB0b3RhbFJlY29yZHM6IDAsXHJcbiAgfTtcclxuICBkZWZhdWx0VGltZVpvbmVzITogU2VsZWN0T3B0aW9uW107XHJcbiAgZGVmYXVsdENvdW50cmllcyE6IFNlbGVjdE9wdGlvbltdO1xyXG4gIGRlZmF1bHRHcm91cHM6IFNlbGVjdE9wdGlvbltdID0gW107XHJcbiAgbWVldGluZ0FjdGlvbnMgPSB7XHJcbiAgICBpc0FkZE5lZWRlZDogdHJ1ZSxcclxuICAgIGlzRGVsZXRlTmVlZGVkOiB0cnVlLFxyXG4gICAgaXNTZWFyY2hOZWVkZWQ6IHRydWUsXHJcbiAgICBpc0ZpbHRlck5lZWRlZDogZmFsc2UsXHJcbiAgICBpc0VkaXROZWVkZWQ6IGZhbHNlLFxyXG4gICAgaXNQYWdpbmF0aW9uTmVlZGVkOiB0cnVlLFxyXG4gIH07XHJcbiAgaXNFdmVudENyZWF0ZWQgPSBmYWxzZTtcclxuICBzZWxlY3RlZE1lZXRpbmdJZHM6IHN0cmluZ1tdID0gW107XHJcbiAgc2VydmVyQ3VycmVudERhdGUhOiBzdHJpbmc7XHJcbiAgaXNBZGRNZWV0aW5nRGlzYWJsZWQgPSBmYWxzZTtcclxuICB0cmltbWVkU2VhcmNoVGVybSA9ICcnO1xyXG4gIHNlYXJjaFJlc3VsdE1lc3NhZ2UhOiBzdHJpbmc7XHJcbiAgaXNTZWFyY2hBY3RpdmUgPSBmYWxzZTtcclxuICBzZWFyY2hUeXBlOiBTZWFyY2hUeXBlID0gU2VhcmNoVHlwZS5PTl9DTElDSztcclxuICBzdXBwb3J0TWVzc2FnZSE6IHN0cmluZztcclxuICBkZWZhdWx0U29ydGVkQ29sdW1uID0gJ21lZXRpbmdTdERhdGUnO1xyXG4gIGRlZmF1bHRDb2x1bW5Tb3J0RGlyZWN0aW9uID0gZmFsc2U7XHJcbiAgYWRkTWVldGluZ0J1dHRvbiA9IHRoaXMuc2NyZWVuVGV4dHM/LmJ1dHRvbnM/LlswXTtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIHNlbGVjdGVkTWVldGluZzogYW55O1xyXG4gIGlzQWRkTWVldGluZ0FsbG93ZWQgPSBmYWxzZTtcclxuICBjb25maXJtYXRpb25Nb2RhbFRleHRzID1cclxuICAgIHRoaXMuY29uc3RhbnRzPy5jcmVhdGVNb2RpZnlFdmVudE9yTWVldGluZ1xyXG4gICAgICA/LnVuc2F2ZWRGb3JtQ2hhbmdlc0NvbmZpcm1hdGlvbkRpYWxvZ09wdGlvbnM7XHJcbiAgY29uZmlybWF0aW9uTW9kYWxDb25maWchOiBDb25maXJtYXRpb25Nb2RhbERhdGE7XHJcbiAgbWVldGluZ0xlZ2VuZHM6IExlZ2VuZFtdID0gdGhpcy5jb25zdGFudHM/LmV2ZW50T3JNZWV0aW5nTGVnZW5kcztcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIHByZXZpb3VzRm9ybVZhbHVlczogYW55O1xyXG4gIEBJbnB1dCgpIGlzVmlld09ubHkhOiBzdHJpbmcgfCBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGV2ZW50SWQhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcm91dGVQYXRocyE6IEV2ZW50c0FuZE1lZXRpbmdSb3V0ZUNvbmZpZztcclxuICBASW5wdXQoKSBhcGlCYXNlVVJMITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHVzZXJQZXJtaXNzaW9ucyE6IFVzZXJQZXJtaXNzaW9uW107XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBAT3V0cHV0KCkgY3JlYXRlTW9kaWZ5RXZlbnRDbGljazogRXZlbnRFbWl0dGVyPGFueT4gPVxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgIG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlOiBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHB1YmxpYyBhbGVydFNlcnZpY2U6IEFsZXJ0c1NlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgY291bnRyeUFuZFRpbWV6b25lU2VydmljZTogQ291bnRyeUFuZFRpbWV6b25lU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHVibGljIHJvdXRlcjogUm91dGVyLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGZvcm1VdGlsaXR5U2VydmljZTogRm9ybVV0aWxpdHlTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmNvdW50cmllcyA9IHRoaXMuZGVmYXVsdENvdW50cmllcyA9XHJcbiAgICAgIHRoaXMuY291bnRyeUFuZFRpbWV6b25lU2VydmljZS5nZXRBbGxDb3VudHJpZXMoKTtcclxuICAgIHRoaXMudGltZXpvbmVzID0gdGhpcy5kZWZhdWx0VGltZVpvbmVzID1cclxuICAgICAgdGhpcy5jb3VudHJ5QW5kVGltZXpvbmVTZXJ2aWNlLmdldFVUQ1RpbWV6b25lT3B0aW9ucygpO1xyXG4gICAgdGhpcy5hdHRlbmRlZXNUeXBlcy5tYXAoKGF0dGVuZGVlKSA9PiB7XHJcbiAgICAgIGF0dGVuZGVlLmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgYXR0ZW5kZWUuZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBUcmlnZ2VycyBjb25maXJtYXRpb24gbW9kYWwgd2hpbGUgbGVhdmluZyB1bnNhdmVkIGZvcm0uXHJcbiAgICogQHJldHVybiB7KGJvb2xlYW5cclxuICAgKiAgICAgfCBVcmxUcmVlXHJcbiAgICogICAgIHwgT2JzZXJ2YWJsZTxib29sZWFuIHwgVXJsVHJlZT5cclxuICAgKiAgICAgfCBQcm9taXNlPGJvb2xlYW4gfCBVcmxUcmVlPil9XHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBjYW5EZWFjdGl2YXRlKCk6XHJcbiAgICB8IFVybFRyZWVcclxuICAgIHwgT2JzZXJ2YWJsZTxib29sZWFuIHwgVXJsVHJlZT5cclxuICAgIHwgUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT5cclxuICAgIHwgYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2U/LmdldEV2ZW50T3JNZWV0aW5nRm9ybUNoYW5nZVN0YXR1cygpKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2U/Lm9wZW5Db25maXJtYXRpb25Nb2RhbChcclxuICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbk1vZGFsQ29uZmlnXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybiB0aGlzLmRpYWxvZ1JlZj8uYWZ0ZXJDbG9zZWQoKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplcyBjb2x1bW4gc2NoZW1hLCBncm91cHMsIG1lZXRpbmdzIGNyZWF0ZWQgdW5kZXIgZXZlbnRzLCBldmVudCB0eXBlcyBhbmQgY3JlYXRlcyBmb3JtIGdyb3VwLlxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVPck1vZGlmeUV2ZW50Q29tcG9uZW50XHJcbiAgICovXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzVmlld09ubHkgPSB0aGlzLmlzVmlld09ubHkgPT09ICd0cnVlJztcclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlPy5zZXRBcHBDb25maWcoXHJcbiAgICAgIHRoaXMuYXBpQmFzZVVSTCxcclxuICAgICAgdGhpcy51c2VyUGVybWlzc2lvbnNcclxuICAgICk7XHJcbiAgICBpZiAodGhpcy5ldmVudElkKSB7XHJcbiAgICAgIGNvbnN0IGNoZWNrRXZlbnQgPSB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5nZXRFdmVudEV4aXN0ZW5jZShcclxuICAgICAgICB0aGlzLmV2ZW50SWRcclxuICAgICAgKTtcclxuICAgICAgY2hlY2tFdmVudFxyXG4gICAgICAgIC50aGVuKChleGlzdHM6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICAgIGlmICghZXhpc3RzKSB7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLnJvdXRlUGF0aHMuZXZlbnRzQW5kTWVldGluZ3NdKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBleGlzdHM7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICBpZiAoZXJyb3I/LnN0YXR1cyA9PT0gNDA0KSB7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLnJvdXRlUGF0aHMuZXZlbnRzQW5kTWVldGluZ3NdKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnNldFN0YW5kYWxvbmVNZWV0aW5nU3RhdHVzKCF0aGlzLmV2ZW50SWQpO1xyXG4gICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2Uuc2V0U2VsZWN0ZWRFdmVudElkKHRoaXMuZXZlbnRJZCA/PyAnJyk7XHJcbiAgICB0aGlzLm1lZXRpbmdBY3Rpb25zLmlzRGVsZXRlTmVlZGVkID1cclxuICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UudmFsaWRhdGVBY2Nlc3MoXHJcbiAgICAgICAgUGVybWlzc2lvblR5cGUuREVMRVRFX01FRVRJTkdcclxuICAgICAgKSAmJiAhdGhpcy5pc1ZpZXdPbmx5O1xyXG4gICAgdGhpcy5jb25maXJtYXRpb25Nb2RhbENvbmZpZyA9IHtcclxuICAgICAgbGVmdEJ1dHRvbkxhYmVsOiB0aGlzLmNvbmZpcm1hdGlvbk1vZGFsVGV4dHM/LmxlZnRCdXR0b25MYWJlbCxcclxuICAgICAgcmlnaHRCdXR0b25MYWJlbDogdGhpcy5jb25maXJtYXRpb25Nb2RhbFRleHRzPy5yaWdodEJ1dHRvbkxhYmVsLFxyXG4gICAgICBwcm9tcHRNZXNzYWdlOiB0aGlzLmNvbmZpcm1hdGlvbk1vZGFsVGV4dHM/LnByb21wdE1lc3NhZ2UsXHJcbiAgICAgIGFjdGlvbkJ1dHRvbkFsaWduOiBBbGlnblR5cGUuTUlERExFLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlPy5jYW5DbG9zZUFkZE1lZXRpbmdNb2RhbCQ/Lm5leHQoZmFsc2UpO1xyXG4gICAgdGhpcy5pbml0aWFsaXplQ29sdW1uU2NoZW1hKCk7XHJcbiAgICB0aGlzLmdldEdyb3VwcygpO1xyXG4gICAgdGhpcy5nZXRFdmVudFR5cGVzKCk7XHJcbiAgICB0aGlzLnNlbGVjdGVkRXZlbnRJZCA9IHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmdldFNlbGVjdGVkRXZlbnRJZCgpO1xyXG4gICAgdGhpcy5zdXBwb3J0TWVzc2FnZSA9IHRoaXMuc2NyZWVuVGV4dHM/LnN1cHBvcnRNZXNzYWdlO1xyXG4gICAgdGhpcy5jcmVhdGVzRXZlbnRGb3JtR3JvdXAoKTtcclxuICAgIGlmICh0aGlzLmV2ZW50SWQpIHtcclxuICAgICAgdGhpcy5nZXRNZWV0aW5nc0J5RXZlbnRJZCh7XHJcbiAgICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgICAgZXZlbnRJZDogdGhpcy5ldmVudElkLFxyXG4gICAgICAgICAgc29ydENvbHVtbjogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/Lm1lZXRpbmdTdERhdGUsXHJcbiAgICAgICAgICBhc2NlbmRpbmdPcmRlcjogZmFsc2UsXHJcbiAgICAgICAgICBwYWdlOiAxLFxyXG4gICAgICAgICAgc2l6ZTogdGhpcy5wYWdpbmF0b3JDb25maWc/LnJlY29yZHNQZXJQYWdlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnZpZXdFdmVudERldGFpbHModGhpcy5ldmVudElkKTtcclxuICAgIH1cclxuICAgIHRoaXMuaXNBZGRNZWV0aW5nQWxsb3dlZCA9IHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlPy52YWxpZGF0ZUFjY2VzcyhcclxuICAgICAgUGVybWlzc2lvblR5cGUuQ1JFQVRFX01FRVRJTkdcclxuICAgICk7XHJcbiAgICB0aGlzLm1lZXRpbmdBY3Rpb25zLmlzQWRkTmVlZGVkID1cclxuICAgICAgdGhpcy5pc0FkZE1lZXRpbmdBbGxvd2VkICYmICF0aGlzLmlzVmlld09ubHk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemVzIHRhYmxlIGNvbHVtbiBzY2hlbWEgdG8gZGlzcGxheSB0aGUgbWVldGluZyBhbmQgaXQgZGV0YWlscyBpbiB0YWJ1bGFyIHZpZXcuXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBpbml0aWFsaXplQ29sdW1uU2NoZW1hKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb2x1bW5TY2hlbWEgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogMSxcclxuICAgICAgICBjb2x1bW5EZWY6IFRhYmxlQ29sdW1uVHlwZS5TRUxFQ1QsXHJcbiAgICAgICAgaGVhZGluZzogJycsXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLlNFTEVDVCxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PiBgJHtlbGVtZW50LnNlbGVjdH1gLFxyXG4gICAgICAgIGlzU3RpY2t5Q29sdW1uOiB0cnVlLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IDIsXHJcbiAgICAgICAgY29sdW1uRGVmOiBDT0xVTU5fREVGPy5tZWV0aW5nVGl0bGUsXHJcbiAgICAgICAgaGVhZGluZzogdGhpcy5jb2x1bW5IZWFkaW5nPy5uYW1lLFxyXG4gICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5MSU5LLFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgY2VsbERhdGE6IChlbGVtZW50OiBhbnkpID0+IGAke2VsZW1lbnQubWVldGluZ1RpdGxlfWAsXHJcbiAgICAgICAgaXNTdGlja3lDb2x1bW46IHRydWUsXHJcbiAgICAgICAgaXNTb3J0YWJsZUNvbHVtbjogdHJ1ZSxcclxuICAgICAgICBpc0NvbnRlbnRVbmRlckxpbms6IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogMyxcclxuICAgICAgICBjb2x1bW5EZWY6IENPTFVNTl9ERUY/Lm1lZXRpbmdTdERhdGUsXHJcbiAgICAgICAgaGVhZGluZzogdGhpcy5jb2x1bW5IZWFkaW5nPy5zdGFydERhdGVBbmRUaW1lLFxyXG4gICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5URVhULFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgY2VsbERhdGE6IChlbGVtZW50OiBhbnkpID0+XHJcbiAgICAgICAgICBgJHttb21lbnQoZWxlbWVudC5tZWV0aW5nU3REYXRlKS5mb3JtYXQoXHJcbiAgICAgICAgICAgIERhdGVGb3JtYXRzLmRpc3BsYXlGb3JtYXRcclxuICAgICAgICAgICl9PGJyPiR7bW9tZW50KGVsZW1lbnQubWVldGluZ1N0RGF0ZSkuZm9ybWF0KFxyXG4gICAgICAgICAgICBEYXRlRm9ybWF0cy50aW1lRm9ybWF0XHJcbiAgICAgICAgICApfWAsXHJcbiAgICAgICAgaXNIVE1MQ2VsbERhdGE6IHRydWUsXHJcbiAgICAgICAgaXNTb3J0YWJsZUNvbHVtbjogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiA0LFxyXG4gICAgICAgIGNvbHVtbkRlZjogQ09MVU1OX0RFRj8uZW5kRGF0ZUFuZFRpbWUsXHJcbiAgICAgICAgaGVhZGluZzogdGhpcy5jb2x1bW5IZWFkaW5nPy5lbmREYXRlQW5kVGltZSxcclxuICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuVEVYVCxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PlxyXG4gICAgICAgICAgYCR7bW9tZW50KGVsZW1lbnQubWVldGluZ0VkRGF0ZSkuZm9ybWF0KFxyXG4gICAgICAgICAgICBEYXRlRm9ybWF0cy5kaXNwbGF5Rm9ybWF0XHJcbiAgICAgICAgICApfTxicj4ke21vbWVudChlbGVtZW50Lm1lZXRpbmdFZERhdGUpLmZvcm1hdChcclxuICAgICAgICAgICAgRGF0ZUZvcm1hdHMudGltZUZvcm1hdFxyXG4gICAgICAgICAgKX1gLFxyXG4gICAgICAgIGlzSFRNTENlbGxEYXRhOiB0cnVlLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IDUsXHJcbiAgICAgICAgY29sdW1uRGVmOiBDT0xVTU5fREVGPy5ncm91cCxcclxuICAgICAgICBoZWFkaW5nOiB0aGlzLmNvbHVtbkhlYWRpbmc/Lmdyb3VwLFxyXG4gICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5URVhULFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgY2VsbERhdGE6IChlbGVtZW50OiBhbnkpID0+IGAke2VsZW1lbnQuZ3JvdXBOYW1lfWAsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogNixcclxuICAgICAgICBjb2x1bW5EZWY6IENPTFVNTl9ERUY/LmxvY2F0aW9uLFxyXG4gICAgICAgIGhlYWRpbmc6IHRoaXMuY29sdW1uSGVhZGluZz8ubG9jYXRpb24sXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLlRFWFQsXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT4gYCR7ZWxlbWVudC5tZWV0aW5nTG9jYXRpb259YCxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiA3LFxyXG4gICAgICAgIGNvbHVtbkRlZjogVGFibGVDb2x1bW5UeXBlLkFDVElPTlMsXHJcbiAgICAgICAgaGVhZGluZzogdGhpcy5jb2x1bW5IZWFkaW5nPy5hY3Rpb24sXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLkFDVElPTlMsXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT4gYCR7ZWxlbWVudC5hY3Rpb259YCxcclxuICAgICAgICBpc1N0aWNreUVuZENvbHVtbjogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgIF07XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgdGhlIGZvcm0gZ3JvdXBcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlT3JNb2RpZnlFdmVudENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGNyZWF0ZXNFdmVudEZvcm1Hcm91cCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY3JlYXRlT3JVcGRhdGVFdmVudHNGb3JtR3JvdXAgPSB7XHJcbiAgICAgIGZvcm1Hcm91cDogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxlZ2VuZDogdGhpcy5zY3JlZW5UZXh0cz8ubGVnZW5kPy5iYXNpY0RldGFpbHMsXHJcbiAgICAgICAgICBjb250cm9sczogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLlNFTEVDVCxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LnJlbGF0ZWRHcm91cCArICcqJyxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ3JlbGF0ZWRHcm91cCcsXHJcbiAgICAgICAgICAgICAgZHJvcGRvd25PcHRpb25zOiB0aGlzLmdyb3VwcyxcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMuc2NyZWVuVGV4dHM/LnBsYWNlaG9sZGVyPy5yZWxhdGVkR3JvdXAsXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWRFcnJvck1lc3NhZ2U6IHRoaXMuc2NyZWVuVGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5hcmlhTGFiZWw/LnJlbGF0ZWRHcm91cCxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8ucmVsYXRlZEdyb3VwLFxyXG4gICAgICAgICAgICAgIGlzU2VhcmNoOiB0cnVlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLlRFWFRfQVJFQSxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmV2ZW50TmFtZSArICcqJyxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ2V2ZW50TmFtZScsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbjogW1xyXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucGF0dGVybihcclxuICAgICAgICAgICAgICAgICAgRXZlbnRzQW5kTWVldGluZ3NWYWxpZGF0aW9uUGF0dGVybnMubWVldGluZ09yRXZlbnROYW1lXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgodGhpcy5jaGFyc0xpbWl0LmxpbWl0VG8xNTApLFxyXG4gICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgbWF4Q2hhckNvdW50OiB0aGlzLmNoYXJzTGltaXQubGltaXRUbzE1MCxcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy5zY3JlZW5UZXh0cz8ucGxhY2Vob2xkZXI/LmV2ZW50TmFtZSxcclxuICAgICAgICAgICAgICByZXF1aXJlZEVycm9yTWVzc2FnZTogdGhpcy5zY3JlZW5UZXh0cz8ubWVzc2FnZT8uZXJyb3I/LnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgIHBhdHRlcm5FcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcmVlblRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucGF0dGVybj8uZXZlbnROYW1lLFxyXG4gICAgICAgICAgICAgIG1heEVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5saW1pdD8uZXZlbnROYW1lTWF4Q2hhcnMsXHJcbiAgICAgICAgICAgICAgaXNSZWFkb25seTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgYXJpYU11bHRpbGluZTogdHJ1ZSxcclxuICAgICAgICAgICAgICBpc1Jlc2l6ZTogdHJ1ZSxcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5hcmlhTGFiZWw/LmV2ZW50TmFtZSxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8uZXZlbnROYW1lLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLlNFTEVDVCxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmV2ZW50VHlwZSArICcqJyxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ2V2ZW50VHlwZScsXHJcbiAgICAgICAgICAgICAgZHJvcGRvd25PcHRpb25zOiB0aGlzLmV2ZW50VHlwZXMsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbjogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnNjcmVlblRleHRzPy5wbGFjZWhvbGRlcj8uZXZlbnRUeXBlLFxyXG4gICAgICAgICAgICAgIHN1cHBvcnRNZXNzYWdlOiB0aGlzLnNjcmVlblRleHRzPy5zdXBwb3J0VGV4dD8uZXZlbnRUeXBlLFxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkRXJyb3JNZXNzYWdlOiB0aGlzLnNjcmVlblRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5ldmVudFR5cGUsXHJcbiAgICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LmV2ZW50VHlwZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBsZWdlbmQ6IHRoaXMuc2NyZWVuVGV4dHM/LmxlZ2VuZD8uZGF0ZUFuZFRpbWUsXHJcbiAgICAgICAgICBjb250cm9sczogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLkRBVEUsXHJcbiAgICAgICAgICAgICAgZGF0ZVBpY2tlcjoge1xyXG4gICAgICAgICAgICAgICAgY2FsZW5kYXJUeXBlOiBDYWxlbmRhclR5cGUuU0lOR0xFX0RBVEVfU0VMRUNUSU9OLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5zdGFydERhdGUgKyAnKicsXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlckxhYmVsOiB0aGlzLnNjcmVlblRleHRzPy5wbGFjZWhvbGRlcj8uZGF0ZSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGNvbnRyb2xOYW1lOiAnc3RhcnREYXRlJyxcclxuICAgICAgICAgICAgICBpc0xhYmVsQWxpZ25lZExlZnQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb246IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgICByZXF1aXJlZEVycm9yTWVzc2FnZTogdGhpcy5zY3JlZW5UZXh0cz8ubWVzc2FnZT8uZXJyb3I/LnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmFyaWFMYWJlbD8uc3RhcnREYXRlLFxyXG4gICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkPy5zdGFydERhdGUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGUuREFURSxcclxuICAgICAgICAgICAgICBkYXRlUGlja2VyOiB7XHJcbiAgICAgICAgICAgICAgICBjYWxlbmRhclR5cGU6IENhbGVuZGFyVHlwZS5TSU5HTEVfREFURV9TRUxFQ1RJT04sXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmVuZERhdGUgKyAnKicsXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlckxhYmVsOiB0aGlzLnNjcmVlblRleHRzPy5wbGFjZWhvbGRlcj8uZGF0ZSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGNvbnRyb2xOYW1lOiAnZW5kRGF0ZScsXHJcbiAgICAgICAgICAgICAgaXNMYWJlbEFsaWduZWRMZWZ0OiBmYWxzZSxcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgICAgbWluRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8ubWVzc2FnZT8uZXJyb3I/LmludmFsaWREYXRUaW1lRXJyb3JNZXNzYWdlLFxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkRXJyb3JNZXNzYWdlOiB0aGlzLnNjcmVlblRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5lbmREYXRlLFxyXG4gICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkPy5lbmREYXRlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLlNFTEVDVCxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LnRpbWVab25lICsgJyonLFxyXG4gICAgICAgICAgICAgIGNvbnRyb2xOYW1lOiAndGltZVpvbmUnLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb246IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy5zY3JlZW5UZXh0cz8ucGxhY2Vob2xkZXI/LnRpbWVab25lLFxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkRXJyb3JNZXNzYWdlOiB0aGlzLnNjcmVlblRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy50aW1lWm9uZSxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8udGltZVpvbmUsXHJcbiAgICAgICAgICAgICAgZHJvcGRvd25PcHRpb25zOiB0aGlzLnRpbWV6b25lcyxcclxuICAgICAgICAgICAgICBpc1NlYXJjaDogdHJ1ZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBsZWdlbmQ6IHRoaXMuc2NyZWVuVGV4dHM/LmxlZ2VuZD8ubG9jYXRpb24sXHJcbiAgICAgICAgICBjb250cm9sczogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLlRFWFRfQVJFQSxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmFkZHJlc3MsXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdhZGRyZXNzJyxcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBbXHJcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oRXZlbnRzQW5kTWVldGluZ3NWYWxpZGF0aW9uUGF0dGVybnMuYWRkcmVzcyksXHJcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCh0aGlzLmNoYXJzTGltaXQ/LmxpbWl0VG8xNTApLFxyXG4gICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMuc2NyZWVuVGV4dHM/LnBsYWNlaG9sZGVyPy5hZGRyZXNzLFxyXG4gICAgICAgICAgICAgIG1heENoYXJDb3VudDogdGhpcy5jaGFyc0xpbWl0Py5saW1pdFRvMTUwLFxyXG4gICAgICAgICAgICAgIG1heEVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5saW1pdD8uYWRkcmVzc01heENoYXJzLFxyXG4gICAgICAgICAgICAgIGlzUmVhZG9ubHk6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIGFyaWFNdWx0aWxpbmU6IHRydWUsXHJcbiAgICAgICAgICAgICAgaXNSZXNpemU6IHRydWUsXHJcbiAgICAgICAgICAgICAgcGF0dGVybkVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5wYXR0ZXJuPy5hZGRyZXNzLFxyXG4gICAgICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmFyaWFMYWJlbD8uYWRkcmVzcyxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8uYWRkcmVzcyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZS5TRUxFQ1QsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5jb3VudHJ5LFxyXG4gICAgICAgICAgICAgIGNvbnRyb2xOYW1lOiAnY291bnRyeScsXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMuc2NyZWVuVGV4dHM/LnBsYWNlaG9sZGVyPy5jb3VudHJ5LFxyXG4gICAgICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmFyaWFMYWJlbD8uY291bnRyeSxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8uY291bnRyeSxcclxuICAgICAgICAgICAgICBkcm9wZG93bk9wdGlvbnM6IHRoaXMuY291bnRyaWVzLFxyXG4gICAgICAgICAgICAgIGlzU2VhcmNoOiB0cnVlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgXSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxlZ2VuZDogdGhpcy5zY3JlZW5UZXh0cz8ubGVnZW5kPy5hdHRlbmRlZXMsXHJcbiAgICAgICAgICBjb250cm9sczogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLkNIRUNLQk9YLFxyXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYXR0ZW5kZWVzVHlwZSArICcqJyxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ2F0dGVuZGVlc1R5cGUnLFxyXG4gICAgICAgICAgICAgIG1pblNlbGVjdGlvblJlcXVpcmVkOiAxLFxyXG4gICAgICAgICAgICAgIGNoZWNrYm94T3B0aW9uczogdGhpcy5hdHRlbmRlZXNUeXBlcyxcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5hcmlhTGFiZWw/LmF0dGVuZGVlc1R5cGUsXHJcbiAgICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LmF0dGVuZGVlc1R5cGUsXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWRFcnJvck1lc3NhZ2U6IHRoaXMuc2NyZWVuVGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGVnZW5kOiB0aGlzLnNjcmVlblRleHRzPy5sZWdlbmQ/LmFjY2VzcyxcclxuICAgICAgICAgIGNvbnRyb2xzOiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGUuSU5QVVQsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5ldmVudFBhc3N3b3JkLFxyXG4gICAgICAgICAgICAgIGNvbnRyb2xOYW1lOiAnZXZlbnRQYXNzd29yZCcsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbjogW1xyXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKFxyXG4gICAgICAgICAgICAgICAgICBFdmVudHNBbmRNZWV0aW5nc1ZhbGlkYXRpb25QYXR0ZXJucy5ldmVudFBhc3N3b3JkXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgodGhpcy5jaGFyc0xpbWl0LmxpbWl0VG8yMCksXHJcbiAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICBtYXhDaGFyQ291bnQ6IHRoaXMuY2hhcnNMaW1pdC5saW1pdFRvMjAsXHJcbiAgICAgICAgICAgICAgbWF4RXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8ubWVzc2FnZT8uZXJyb3I/LmxpbWl0Py5ldmVudFBhc3N3b3JkTWF4Q2hhcnMsXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMuc2NyZWVuVGV4dHM/LnBsYWNlaG9sZGVyPy5ldmVudFBhc3N3b3JkLFxyXG4gICAgICAgICAgICAgIHBhdHRlcm5FcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcmVlblRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucGF0dGVybj8uZXZlbnRQYXNzd29yZCxcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5hcmlhTGFiZWw/LmV2ZW50UGFzc3dvcmQsXHJcbiAgICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LmV2ZW50UGFzc3dvcmQsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGUuVEVYVF9BUkVBLFxyXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uaXBBZGRyZXNzUmFuZ2UsXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdpcEFkZHJlc3NSYW5nZScsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbjogW1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuaXBBZGRyZXNzUmFuZ2VWYWxpZGF0b3IoXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/LmxpbWl0Py5ub09mSXBBZGRyZXNzUmFuZ2VTZXRzXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMuc2NyZWVuVGV4dHM/LnBsYWNlaG9sZGVyPy5pcEFkZHJlc3NSYW5nZSxcclxuICAgICAgICAgICAgICBhcmlhTXVsdGlsaW5lOiB0cnVlLFxyXG4gICAgICAgICAgICAgIGlzUmVzaXplOiB0cnVlLFxyXG4gICAgICAgICAgICAgIHN1cHBvcnRNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8uc3VwcG9ydFRleHQ/LmlwQWRkcmVzc1JhbmdlRm9ybWF0VGV4dCxcclxuICAgICAgICAgICAgICBwYXR0ZXJuRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8ubWVzc2FnZT8uZXJyb3I/LnBhdHRlcm4/LmlwQWRkcmVzc1JhbmdlLFxyXG4gICAgICAgICAgICAgIG1heEVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5saW1pdD8ubm9PZklwQWRkcmVzc1JhbmdlU2V0cyxcclxuICAgICAgICAgICAgICBtYXhSYW5nZUxpbWl0OiB0aGlzLnNjcmVlblRleHRzPy5saW1pdD8ubm9PZklwQWRkcmVzc1JhbmdlU2V0cyxcclxuICAgICAgICAgICAgICByZW1haW5pbmdDaGFyc0xlZnRNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8uaXBBZGRyZXNzUmFuZ2VSZW1haW5pbmcsXHJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5pcEFkZHJlc3NSYW5nZSxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8uaXBBZGRyZXNzUmFuZ2UsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGVnZW5kOiB0aGlzLnNjcmVlblRleHRzPy5sZWdlbmQ/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgY29udHJvbHM6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZS5URVhUX0FSRUEsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ2Rlc2NyaXB0aW9uJyxcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBbVmFsaWRhdG9ycy5tYXhMZW5ndGgodGhpcy5jaGFyc0xpbWl0LmxpbWl0VG8yMDAwKV0sXHJcbiAgICAgICAgICAgICAgbWF4Q2hhckNvdW50OiB0aGlzLmNoYXJzTGltaXQubGltaXRUbzIwMDAsXHJcbiAgICAgICAgICAgICAgbWF4RXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8ubWVzc2FnZT8uZXJyb3I/LmxpbWl0Py5kZXNjcmlwdGlvbk1heENoYXJzLFxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnNjcmVlblRleHRzPy5wbGFjZWhvbGRlcj8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgYXJpYU11bHRpbGluZTogdHJ1ZSxcclxuICAgICAgICAgICAgICBpc1Jlc2l6ZTogdHJ1ZSxcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5hcmlhTGFiZWw/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkPy5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZS5DSEVDS0JPWCxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ2NyZWRpdHNBcHBsaWNhYmxlJyxcclxuICAgICAgICAgICAgICBjaGVja2JveE9wdGlvbnM6IHRoaXMuc2NyZWVuVGV4dHM/LmNyZWRpdHNBcHBsaWNhYmxlLFxyXG4gICAgICAgICAgICAgIHN1cHBvcnRNZXNzYWdlOiB0aGlzLnNjcmVlblRleHRzPy5zdXBwb3J0VGV4dD8uY3JlZGl0c0FwcGxpY2FibGUsXHJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5jcmVkaXRzQXBwbGljYWJsZSxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8uY3JlZGl0c0FwcGxpY2FibGUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF0sXHJcbiAgICB9O1xyXG4gIH1cclxuICAvKipcclxuICAgKiBOYXZpZ2F0ZSB0byBldmVudHMgYW5kIG1lZXRpbmdzIGxpc3Qgc2NyZWVuLlxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVPck1vZGlmeUV2ZW50Q29tcG9uZW50XHJcbiAgICovXHJcbiAgb25Gb3JtQ2FuY2VsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtQ2FuY2VsLmVtaXQoKTtcclxuICAgIHRoaXMuY29uZmlybWF0aW9uTW9kYWxDb25maWcucHJvbXB0TWVzc2FnZSA9XHJcbiAgICAgIHRoaXMuY29uZmlybWF0aW9uTW9kYWxUZXh0cz8ucHJvbXB0TWVzc2FnZU9uQ2FuY2VsO1xyXG4gICAgaWYgKHRoaXMucm91dGVQYXRocz8uZXZlbnRzQW5kTWVldGluZ3MpIHtcclxuICAgICAgdGhpcy5yb3V0ZXI/Lm5hdmlnYXRlKFt0aGlzLnJvdXRlUGF0aHMuZXZlbnRzQW5kTWVldGluZ3NdKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY3JlYXRlTW9kaWZ5RXZlbnRDbGljay5lbWl0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIExvYWRzIGV2ZW50IHR5cGVzIHVzaW5nIGV2ZW50c0FuZE1lZXRpbmdzU2VydmljZVxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVPck1vZGlmeUV2ZW50Q29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0RXZlbnRUeXBlcygpOiB2b2lkIHtcclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICAgIC5nZXRFdmVudFR5cGVzKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJlc3BvbnNlPy5ib2R5Py5mb3JFYWNoKChldmVudFR5cGUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5ldmVudFR5cGVzPy5wdXNoKHtcclxuICAgICAgICAgICAgICBpZDogZXZlbnRUeXBlPy5jb25maWdGaWVsZElkLFxyXG4gICAgICAgICAgICAgIG5hbWU6IGV2ZW50VHlwZT8uY29uZmlnRmllbGRWYWx1ZT8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS51cGRhdGVGb3JtQ29udHJvbE9wdGlvbnMoXHJcbiAgICAgICAgICAgICdldmVudFR5cGUnLFxyXG4gICAgICAgICAgICAnZHJvcGRvd25PcHRpb25zJyxcclxuICAgICAgICAgICAgdGhpcy5ldmVudFR5cGVzLFxyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNGb3JtQ29tcG9uZW50XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5jcmVhdGVPclVwZGF0ZUV2ZW50Rm9ybUdyb3VwUmVmPy5bMF1cclxuICAgICAgICAgICAgLmdldCgnZXZlbnRUeXBlJylcclxuICAgICAgICAgICAgPy5zZXRWYWx1ZShcclxuICAgICAgICAgICAgICB0aGlzLmV2ZW50VHlwZXM/LmZpbmQoXHJcbiAgICAgICAgICAgICAgICAoZXZlbnRUeXBlKSA9PlxyXG4gICAgICAgICAgICAgICAgICBldmVudFR5cGUuaWQgPT09IHRoaXMuc2VsZWN0ZWRFdmVudERhdGE/LmV2ZW50VHlwZVxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBtZWV0aW5ncyBjcmVhdGVkIGZvciB0aGUgc2VsZWN0ZWQgZXZlbnQgZnJvbSBzZXJ2ZXIuXHJcbiAgICogQHBhcmFtIHtHZXRNZWV0aW5nc0J5RXZlbnRJZFBheWxvYWR9IHBheWxvYWRcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlT3JNb2RpZnlFdmVudENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldE1lZXRpbmdzQnlFdmVudElkKHBheWxvYWQ6IEdldE1lZXRpbmdzQnlFdmVudElkUGF5bG9hZCk6IHZvaWQge1xyXG4gICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgICAgLmdldE1lZXRpbmdzQnlFdmVudElkKHBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm1lZXRpbmdzID0gW107XHJcbiAgICAgICAgICB0aGlzLnBhZ2luYXRvckNvbmZpZy50b3RhbFJlY29yZHMgPVxyXG4gICAgICAgICAgICByZXNwb25zZT8uYm9keT8udG90YWxSZWNvcmRzID8/IHRoaXMubWVldGluZ3M/Lmxlbmd0aDtcclxuICAgICAgICAgIHRoaXMucGFnaW5hdG9yQ29uZmlnID0geyAuLi50aGlzLnBhZ2luYXRvckNvbmZpZyB9O1xyXG4gICAgICAgICAgdGhpcy5tZWV0aW5ncyA9IHJlc3BvbnNlPy5ib2R5Py5tZWV0aW5ncztcclxuICAgICAgICAgIHRoaXMubWVldGluZ3M/Lm1hcCgobWVldGluZykgPT4gKG1lZXRpbmcuY2FuRGVsZXRlID0gdHJ1ZSkpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuaXNTZWFyY2hBY3RpdmUpXHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoUmVzdWx0TWVzc2FnZSA9IGAke3RoaXMuc2NyZWVuVGV4dHM/LnNlYXJjaFJlc3VsdE1zZ1BhcnQxfSAke3RoaXMucGFnaW5hdG9yQ29uZmlnPy50b3RhbFJlY29yZHN9XHJcbiAgICAgICAgICAke3RoaXMuc2NyZWVuVGV4dHM/LnNlYXJjaFJlc3VsdE1zZ1BhcnQyfSBcIjxzdHJvbmc+JHt0aGlzLnRyaW1tZWRTZWFyY2hUZXJtfTwvc3Ryb25nPlwiYDtcclxuICAgICAgICAgIHRoaXMubWVldGluZ3MgPVxyXG4gICAgICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5tYXBNZWV0aW5nc0luZm9Ub0RhdGFUYWJsZShcclxuICAgICAgICAgICAgICByZXNwb25zZT8uYm9keT8ubWVldGluZ3NcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMubWVldGluZ3MgPSB0aGlzLmdldE1lbnVBY3Rpb25zVG9NZWV0aW5ncyh0aGlzLm1lZXRpbmdzKTtcclxuICAgICAgICAgIHRoaXMubWVldGluZ3MgPSBbLi4udGhpcy5tZWV0aW5nc107XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2U/LmJvZHk/Lm1lZXRpbmdzPy5sZW5ndGggPiAwIHx8IHRoaXMuaXNTZWFyY2hBY3RpdmUpXHJcbiAgICAgICAgICAgIHRoaXMubWVldGluZ0RldGFpbHNUaXRsZSA9XHJcbiAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8uYWRkTWVldGluZz8uZmlyc3RMYWJlbCArXHJcbiAgICAgICAgICAgICAgJ1wiJyArXHJcbiAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8uYWRkTWVldGluZz8uc2Vjb25kTGFiZWwgK1xyXG4gICAgICAgICAgICAgICdcIicgK1xyXG4gICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/LmFkZE1lZXRpbmc/Lmxhc3RMYWJlbDtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5tZWV0aW5nRGV0YWlsc1RpdGxlID0gdGhpcy5pc0FkZE1lZXRpbmdBbGxvd2VkXHJcbiAgICAgICAgICAgICAgPyB0aGlzLmFkZE1lZXRpbmc/LmZpcnN0TGFiZWxcclxuICAgICAgICAgICAgICA6IHRoaXMuYWRkTWVldGluZz8uZmlyc3RMYWJlbFdpdGhvdXRBZGRCdG47XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5oYW5kbGVFcnJvcnMoZXJyb3IsIGZhbHNlKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQWRkcyBtZW51IGFjdGlvbnMgYmFzZWQgb24gdXNlciBwZXJtaXNzaW9uIGZvciBldmVyeSBtZWV0aW5nIGFuZCByZXR1cm5zIHRoZSBtZWV0aW5ncyBsaXN0LlxyXG4gICAqIEBwYXJhbSB7TWVldGluZ1tdfSBtZWV0aW5nc1xyXG4gICAqIEByZXR1cm4ge01lZXRpbmdbXX1cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlT3JNb2RpZnlFdmVudENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldE1lbnVBY3Rpb25zVG9NZWV0aW5ncyhtZWV0aW5nczogTWVldGluZ1tdKTogTWVldGluZ1tdIHtcclxuICAgIG1lZXRpbmdzPy5mb3JFYWNoKChtZWV0aW5nKSA9PiB7XHJcbiAgICAgIG1lZXRpbmcubWVudUFjdGlvbiA9IHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmdldE1lZXRpbmdNZW51QWN0aW9uKFxyXG4gICAgICAgIHRoaXMuY29uc3RhbnRzLnZpZXdFdmVudHNBbmRNZWV0aW5ncy5tZWV0aW5nQWN0aW9ucyxcclxuICAgICAgICBtZWV0aW5nLmlzTWVtYmVyT2ZHcm91cFxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbWVldGluZ3M7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEVuYWJsZXMgYW5kIGRpc2FibGVzIGZvcm0gc3VibWl0IGJ1dHRvbiB3aGVuIGNyZWF0ZSBvciB1cGRhdGUgZXZlbnRzIGZvcm0gY2hhbmdlLlxyXG4gICAqIEBwYXJhbSB7Rm9ybUdyb3VwW119IGZvcm1Hcm91cHNcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlT3JNb2RpZnlFdmVudENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uRm9ybUNoYW5nZShmb3JtR3JvdXBzOiBGb3JtR3JvdXBbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5jaGVja0ZvckZvcm1WYWx1ZUNoYW5nZXMoZm9ybUdyb3Vwcyk7XHJcbiAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5zZXRFdmVudE9yTWVldGluZ0Zvcm1DaGFuZ2VTdGF0dXMoXHJcbiAgICAgIGZvcm1Hcm91cHMuc29tZSgoZm9ybUdyb3VwKSA9PiBmb3JtR3JvdXA/LmRpcnR5KVxyXG4gICAgKTtcclxuICAgIHRoaXMuaXNTdWJtaXRCdXR0b25EaXNhYmxlZCA9IGZvcm1Hcm91cHMuc29tZShcclxuICAgICAgKGZvcm1Hcm91cCkgPT4gZm9ybUdyb3VwPy5zdGF0dXMgPT09IEZvcm1TdGF0dXMuSU5WQUxJRFxyXG4gICAgKTtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5jcmVhdGVPclVwZGF0ZUV2ZW50c0Zvcm1Hcm91cC5mb3JtR3JvdXA/LlsxXT8uY29udHJvbHM/LlsxXVxyXG4gICAgICAgID8uZGF0ZVBpY2tlclxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuY3JlYXRlT3JVcGRhdGVFdmVudHNGb3JtR3JvdXAuZm9ybUdyb3VwWzFdLmNvbnRyb2xzWzFdLmRhdGVQaWNrZXIubWluRGF0ZSA9XHJcbiAgICAgICAgZm9ybUdyb3Vwcz8uWzFdPy5nZXQoJ3N0YXJ0RGF0ZScpPy52YWx1ZTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogTG9hZHMgZ3JvdXBzIHVzaW5nIGV2ZW50c0FuZE1lZXRpbmdzU2VydmljZVxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVPck1vZGlmeUV2ZW50Q29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0R3JvdXBzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgICAgLmdldEdyb3VwcygpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogR2V0R3JvdXBSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmVzPy5ib2R5Py5mb3JFYWNoKChncm91cDogR3JvdXBJbmZvKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBzPy5wdXNoKHtcclxuICAgICAgICAgICAgICBpZDogZ3JvdXA/Lmdyb3VwSWQsXHJcbiAgICAgICAgICAgICAgbmFtZTogZ3JvdXA/Lmdyb3VwQWNyb255bSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuZGVmYXVsdEdyb3VwcyA9IHRoaXMuZ3JvdXBzO1xyXG4gICAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UudXBkYXRlRm9ybUNvbnRyb2xPcHRpb25zKFxyXG4gICAgICAgICAgICAncmVsYXRlZEdyb3VwJyxcclxuICAgICAgICAgICAgJ2Ryb3Bkb3duT3B0aW9ucycsXHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnNvcnRPcHRpb25zKHRoaXMuZ3JvdXBzKSxcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljRm9ybUNvbXBvbmVudFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMuY3JlYXRlT3JVcGRhdGVFdmVudEZvcm1Hcm91cFJlZj8uWzBdXHJcbiAgICAgICAgICAgIC5nZXQoJ3JlbGF0ZWRHcm91cCcpXHJcbiAgICAgICAgICAgID8uc2V0VmFsdWUoXHJcbiAgICAgICAgICAgICAgdGhpcy5ncm91cHM/LmZpbmQoXHJcbiAgICAgICAgICAgICAgICAoZ3JvdXApID0+IGdyb3VwLmlkID09PSB0aGlzLnNlbGVjdGVkRXZlbnREYXRhPy5ncm91cElkXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgY2xpZW50IHNpZGUgdmFsaWRhdGlvbiBhbmQgY2FsbHMgY3JlYXRlIGV2ZW50IG1ldGhvZHMuXHJcbiAgICogQHBhcmFtIHtGb3JtR3JvdXBbXX0gZm9ybSAtQXJyYXkgb2YgZm9ybUdyb3VwXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU1vZGlmeUV2ZW50Q29tcG9uZW50XHJcbiAgICovXHJcbiAgb25Gb3JtU3VibWl0KGZvcm1Hcm91cHM6IEZvcm1Hcm91cFtdKTogdm9pZCB7XHJcbiAgICBpZiAoXHJcbiAgICAgIGZvcm1Hcm91cHMuZXZlcnkoXHJcbiAgICAgICAgKGZvcm1Hcm91cDogRm9ybUdyb3VwKSA9PiBmb3JtR3JvdXAuc3RhdHVzID09PSBGb3JtU3RhdHVzLlZBTElEXHJcbiAgICAgIClcclxuICAgICkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuYWN0aW9uVHlwZSA9PT1cclxuICAgICAgICBFdmVudEFuZE1lZXRpbmdGdW5jdGlvblR5cGUuQ1JFQVRFXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuY3JlYXRlRXZlbnQoZm9ybUdyb3Vwcyk7XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuYWN0aW9uVHlwZSA9PT1cclxuICAgICAgICBFdmVudEFuZE1lZXRpbmdGdW5jdGlvblR5cGUuRURJVFxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmVkaXRFdmVudChmb3JtR3JvdXBzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGFrZXMgZXZlbnQgYmFzaWMgZGV0YWlscywgZGF0ZSBhbmQgdGltZSwgbG9jYXRpb24gZGV0YWlscywgYXR0ZW5kZWUgZGV0YWlscywgYWNjZXNzIGRldGFpbHMgZm9ybSBncm91cCBkYXRhIGFuZCBjb21iaW5pbmcgc3RhcnQgZGF0ZSBhbmQgZW5kIGRhdGUgYW5kIGNvbnZlcnRpbmcgdG8gVVRDIGZvcm1hdCBhbmQgcGFzc2luZyBhbGwgdGhlIGZvcm0gZGF0YSBpbiB0aGUgcGF5bG9hZCBvYmplY3QgdG8gY3JlYXRlIGV2ZW50IEFQSSB0byB0aGUgc2VydmVyLlxyXG4gICAqIEBwYXJhbSB7Rm9ybUdyb3VwW119IGZvcm1Hcm91cHNcclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBjcmVhdGVFdmVudChmb3JtR3JvdXBzOiBGb3JtR3JvdXBbXSk6IHZvaWQge1xyXG4gICAgY29uc3QgZXZlbnRCYXNpY0RldGFpbHMgPSBmb3JtR3JvdXBzPy5bMF0/LmdldFJhd1ZhbHVlKCk7XHJcbiAgICBjb25zdCBldmVudERhdGVBbmRUaW1lRGV0YWlscyA9IGZvcm1Hcm91cHM/LlsxXT8uZ2V0UmF3VmFsdWUoKTtcclxuICAgIGNvbnN0IGV2ZW50TG9jYXRpb25EZXRhaWxzID0gZm9ybUdyb3Vwcz8uWzJdPy5nZXRSYXdWYWx1ZSgpO1xyXG4gICAgY29uc3QgZXZlbnRBdHRlbmRlZURldGFpbHMgPSBmb3JtR3JvdXBzPy5bM10/LmdldFJhd1ZhbHVlKCk7XHJcbiAgICBjb25zdCBldmVudEFjY2Vzc0RldGFpbHMgPSBmb3JtR3JvdXBzPy5bNF0/LmdldFJhd1ZhbHVlKCk7XHJcbiAgICBjb25zdCBzdGFydERhdGUgPSB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5jb252ZXJ0RGF0ZVRpbWVUb1VUQyhcclxuICAgICAgZXZlbnREYXRlQW5kVGltZURldGFpbHM/LnN0YXJ0RGF0ZS5mb3JtYXQoXHJcbiAgICAgICAgRGF0ZUZvcm1hdHMucmVxdWVzdFBheWxvYWRGb3JtYXRcclxuICAgICAgKVxyXG4gICAgKTtcclxuICAgIGNvbnN0IGVuZERhdGUgPSB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5jb252ZXJ0RGF0ZVRpbWVUb1VUQyhcclxuICAgICAgZXZlbnREYXRlQW5kVGltZURldGFpbHM/LmVuZERhdGUuZm9ybWF0KERhdGVGb3JtYXRzPy5yZXF1ZXN0UGF5bG9hZEZvcm1hdClcclxuICAgICk7XHJcbiAgICBjb25zdCBjcmVhdGVFdmVudFBheWxvYWQ6IENyZWF0ZU9yRWRpdEV2ZW50UGF5bG9hZCA9IHtcclxuICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgIGV2ZW50TmFtZTogZXZlbnRCYXNpY0RldGFpbHM/LmV2ZW50TmFtZSxcclxuICAgICAgICBldmVudFR5cGU6IGV2ZW50QmFzaWNEZXRhaWxzPy5ldmVudFR5cGU/LmlkLFxyXG4gICAgICAgIGV2ZW50SWQ6IHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmdldFNlbGVjdGVkRXZlbnRJZCgpID8/IG51bGwsXHJcbiAgICAgICAgZ3JvdXBJZDogZXZlbnRCYXNpY0RldGFpbHM/LnJlbGF0ZWRHcm91cD8uaWQsXHJcbiAgICAgICAgc3RhcnREYXRlOiBzdGFydERhdGUsXHJcbiAgICAgICAgZW5kRGF0ZTogZW5kRGF0ZSxcclxuICAgICAgICB0aW1lWm9uZTogZXZlbnREYXRlQW5kVGltZURldGFpbHM/LnRpbWVab25lPy5uYW1lLFxyXG4gICAgICAgIGNvdW50cnk6IGV2ZW50TG9jYXRpb25EZXRhaWxzPy5jb3VudHJ5Py5pZCxcclxuICAgICAgICBldmVudFBhc3N3b3JkOiBldmVudEFjY2Vzc0RldGFpbHM/LmV2ZW50UGFzc3dvcmQsXHJcbiAgICAgICAgb3BlbkZvckFsbDogZXZlbnRBdHRlbmRlZURldGFpbHM/LmF0dGVuZGVlc1R5cGU/LlswXSxcclxuICAgICAgICByZWdpc3RlcmVkUGFydGljaXBhbnRzOiBldmVudEF0dGVuZGVlRGV0YWlscz8uYXR0ZW5kZWVzVHlwZT8uWzJdLFxyXG4gICAgICAgIGdyb3VwUGFydGljaXBhbnRzOiBldmVudEF0dGVuZGVlRGV0YWlscz8uYXR0ZW5kZWVzVHlwZT8uWzFdLFxyXG4gICAgICAgIGlwYWRkcmVzczogZXZlbnRBY2Nlc3NEZXRhaWxzPy5pcEFkZHJlc3NSYW5nZSA/PyAnJyxcclxuICAgICAgICBsb2NhdGlvbjogZXZlbnRMb2NhdGlvbkRldGFpbHM/LmFkZHJlc3MsXHJcbiAgICAgICAgZXZlbnRUaXRsZTogZXZlbnRCYXNpY0RldGFpbHM/LmV2ZW50TmFtZSxcclxuICAgICAgICBldmVudERlc2M6IGZvcm1Hcm91cHM/Lls1XT8uZ2V0UmF3VmFsdWUoKT8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgdmlydHVhbE1lZXRpbmdVcmw6IGV2ZW50TG9jYXRpb25EZXRhaWxzPy52aXJ0dWFsTWVldGluZ1VybCA/PyAnJyxcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZVxyXG4gICAgICAuY3JlYXRlRXZlbnQoY3JlYXRlRXZlbnRQYXlsb2FkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICAgIGlmIChyZXM/LnN0YXR1cykge1xyXG4gICAgICAgICAgICB0aGlzLmlzRXZlbnRDcmVhdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jYW5EaXNhYmxlQWRkTWVldGluZyhmYWxzZSk7XHJcbiAgICAgICAgICAgIGlmIChyZXM/LmJvZHkpXHJcbiAgICAgICAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2U/LnNldFNlbGVjdGVkRXZlbnRJZChcclxuICAgICAgICAgICAgICAgIE9iamVjdChyZXM/LmJvZHkpPy5pZFxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlPy5zZXRTZWxlY3RlZEV2ZW50RGF0YSh7XHJcbiAgICAgICAgICAgICAgc3RhcnREYXRlOiBzdGFydERhdGUsXHJcbiAgICAgICAgICAgICAgZW5kRGF0ZTogZW5kRGF0ZSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Rm9ybUdyb3VwVmFsdWVzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnNldEV2ZW50T3JNZWV0aW5nRm9ybUNoYW5nZVN0YXR1cyhcclxuICAgICAgICAgICAgICBmYWxzZVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dBbGVydE1lc3NhZ2UoXHJcbiAgICAgICAgICAgICAgQWxlcnRUeXBlPy5TVUNDRVNTLFxyXG4gICAgICAgICAgICAgIGNyZWF0ZUV2ZW50UGF5bG9hZC5wYXlsb2FkLmV2ZW50VGl0bGUgK1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8ubWVzc2FnZT8uc3VjY2Vzcz8uc3VibWlzc2lvblxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgYWxlcnRzIGZvciBzdWNjZXNzLCBlcnJvciBhbmQgd2FybmluZy5cclxuICAgKiBAcGFyYW0geyhzdHJpbmcgfCBzdHJpbmdbXSl9IG1lc3NhZ2UgLXN1Y2Nlc3Mgb3IgZXJyb3Igb3Igd2FybmluZyBtZXNzYWdlLlxyXG4gICAqIEBwYXJhbSB7QWxlcnRUeXBlfSBhbGVydFR5cGVcclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBzaG93QWxlcnRNZXNzYWdlKGFsZXJ0VHlwZTogQWxlcnRUeXBlLCBtZXNzYWdlOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5hbGVydFNlcnZpY2U/LnNob3dNZXNzYWdlKHtcclxuICAgICAgc3RhdHVzOiAnY3VzdG9tJyxcclxuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcclxuICAgICAgYWxlcnRUeXBlOiBhbGVydFR5cGUsXHJcbiAgICAgIGlzQ2xvc2VOZWVkZWQ6IGZhbHNlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgYXR0ZW5kZWUgdHlwZSBzZWxlY3Rpb24gaW4gZXZlbnQgZm9ybS5cclxuICAgKiBAcGFyYW0ge0NoZWNrYm94T3B0aW9ufSBhdHRlbmRlZVxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVNb2RpZnlFdmVudENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uQXR0ZW5kZWVUeXBlU2VsZWN0aW9uKFxyXG4gICAgYXR0ZW5kZWVUeXBlOiBDaGVja2JveE9wdGlvbixcclxuICAgIGlzQ2hlY2tib3hDaGFuZ2VkID0gZmFsc2VcclxuICApOiB2b2lkIHtcclxuICAgIGlmICghYXR0ZW5kZWVUeXBlPy5uYW1lPy5pbmNsdWRlcygnRW5hYmxlJykpIHtcclxuICAgICAgaWYgKGF0dGVuZGVlVHlwZT8uaWQgPT09IEF0dGVuZGVlVHlwZS5PUEVOX0ZPUl9BTEwpIHtcclxuICAgICAgICB0aGlzLmF0dGVuZGVlc1R5cGVzPy5mb3JFYWNoKChvcHRpb24pID0+IHtcclxuICAgICAgICAgIGlmIChhdHRlbmRlZVR5cGU/LmNoZWNrZWQgJiYgb3B0aW9uPy5pZCAhPT0gYXR0ZW5kZWVUeXBlLmlkKVxyXG4gICAgICAgICAgICBvcHRpb24uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgZWxzZSBpZiAoIWF0dGVuZGVlVHlwZT8uY2hlY2tlZCAmJiBvcHRpb24/LmlkICE9PSBhdHRlbmRlZVR5cGUuaWQpXHJcbiAgICAgICAgICAgIG9wdGlvbi5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnVwZGF0ZUZvcm1Db250cm9sT3B0aW9ucyhcclxuICAgICAgICAgICdhdHRlbmRlZXNUeXBlJyxcclxuICAgICAgICAgICdjaGVja2JveE9wdGlvbnMnLFxyXG4gICAgICAgICAgdGhpcy5hdHRlbmRlZXNUeXBlcyxcclxuICAgICAgICAgIHRoaXMuZHluYW1pY0Zvcm1Db21wb25lbnRcclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIGF0dGVuZGVlVHlwZT8uaWQgPT09IEF0dGVuZGVlVHlwZS5HUk9VUF9NRU1CRVJTIHx8XHJcbiAgICAgICAgYXR0ZW5kZWVUeXBlPy5pZCA9PT0gQXR0ZW5kZWVUeXBlLlJFR0lTVEVSRURfUEFSVElDSVBBTlRTXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuYXR0ZW5kZWVzVHlwZXNcclxuICAgICAgICAgID8uZmlsdGVyKChvcHRpb24pID0+IG9wdGlvbj8uaWQgPT09IEF0dGVuZGVlVHlwZS5PUEVOX0ZPUl9BTEwpXHJcbiAgICAgICAgICAubWFwKChmaWx0ZXJlZE9wdGlvbikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoYXR0ZW5kZWVUeXBlPy5jaGVja2VkKSByZXR1cm4gKGZpbHRlcmVkT3B0aW9uLmRpc2FibGVkID0gdHJ1ZSk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuY2FuRW5hYmxlT3BlbkZvckFsbENoZWNrYm94KCkpXHJcbiAgICAgICAgICAgICAgcmV0dXJuIChmaWx0ZXJlZE9wdGlvbi5kaXNhYmxlZCA9IGZhbHNlKTtcclxuICAgICAgICAgICAgcmV0dXJuIGZpbHRlcmVkT3B0aW9uO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UudXBkYXRlRm9ybUNvbnRyb2xPcHRpb25zKFxyXG4gICAgICAgICAgJ2F0dGVuZGVlc1R5cGUnLFxyXG4gICAgICAgICAgJ2NoZWNrYm94T3B0aW9ucycsXHJcbiAgICAgICAgICB0aGlzLmF0dGVuZGVlc1R5cGVzLFxyXG4gICAgICAgICAgdGhpcy5keW5hbWljRm9ybUNvbXBvbmVudFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGF0dGVuZGVlVHlwZT8uY2hlY2tlZCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRBdHRlbmRlZVR5cGVzPy5wdXNoKGF0dGVuZGVlVHlwZS5pZCBhcyBzdHJpbmcpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRBdHRlbmRlZVR5cGVzID0gdGhpcy5zZWxlY3RlZEF0dGVuZGVlVHlwZXMuZmlsdGVyKFxyXG4gICAgICAgICAgKHZhbHVlKSA9PiB2YWx1ZSAhPT0gYXR0ZW5kZWVUeXBlLmlkXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5pc1N1Ym1pdEJ1dHRvbkRpc2FibGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzQ3JlYXRlT3JVcGRhdGVFdmVudEZvcm1JbnZhbGlkID1cclxuICAgICAgdGhpcy5jcmVhdGVPclVwZGF0ZUV2ZW50Rm9ybUdyb3VwUmVmPy5zb21lKFxyXG4gICAgICAgIChmb3JtR3JvdXA6IEZvcm1Hcm91cCkgPT4gZm9ybUdyb3VwLnN0YXR1cyA9PT0gRm9ybVN0YXR1cy5JTlZBTElEXHJcbiAgICAgICk7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRBdHRlbmRlZVR5cGVzLmxlbmd0aCA9PT0gMCB8fFxyXG4gICAgICB0aGlzLmlzQ3JlYXRlT3JVcGRhdGVFdmVudEZvcm1JbnZhbGlkXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5pc1N1Ym1pdEJ1dHRvbkRpc2FibGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnNldEV2ZW50T3JNZWV0aW5nRm9ybUNoYW5nZVN0YXR1cyhcclxuICAgICAgdGhpcy5jcmVhdGVPclVwZGF0ZUV2ZW50Rm9ybUdyb3VwUmVmPy5zb21lKFxyXG4gICAgICAgIChmb3JtR3JvdXApID0+IGZvcm1Hcm91cD8uZGlydHlcclxuICAgICAgKVxyXG4gICAgKTtcclxuICAgIHRoaXMuY2FuRGlzYWJsZUFkZE1lZXRpbmcoaXNDaGVja2JveENoYW5nZWQpO1xyXG4gICAgdGhpcy5jaGVja0ZvckZvcm1WYWx1ZUNoYW5nZXModGhpcy5jcmVhdGVPclVwZGF0ZUV2ZW50Rm9ybUdyb3VwUmVmKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogR2V0IGV2ZW50IGZvcm0gZ3JvdXAgcmVmZXJlbmNlLlxyXG4gICAqIEBwYXJhbSB7Rm9ybUdyb3VwW119IGZvcm1cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRDcmVhdGVPclVwZGF0ZUV2ZW50Rm9ybUdyb3VwUmVmKGZvcm06IEZvcm1Hcm91cFtdKSB7XHJcbiAgICB0aGlzLmNyZWF0ZU9yVXBkYXRlRXZlbnRGb3JtR3JvdXBSZWYgPSBmb3JtO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBGaWx0ZXIgdGhlIGRyb3Bkb3duIG9wdGlvbnMgYW5kIHNob3cgb3B0aW9ucyByZWxhdGVkIHRvIHRoYXQgc2VhcmNoIHN0cmluZ1xyXG4gICAqIEBwYXJhbSB7eyBzZWFyY2hFdmVudDogRXZlbnQ7IGNvbnRyb2xOYW1lOiBzdHJpbmcgfX0gZGF0YVxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVNb2RpZnlNZWV0aW5nQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZm9ybVNlbGVjdFNlYXJjaChkYXRhOiB7IHNlYXJjaEV2ZW50OiBFdmVudDsgY29udHJvbE5hbWU6IHN0cmluZyB9KSB7XHJcbiAgICBzd2l0Y2ggKGRhdGEuY29udHJvbE5hbWUpIHtcclxuICAgICAgY2FzZSAndGltZVpvbmUnOlxyXG4gICAgICAgIHRoaXMudGltZXpvbmVzID0gdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuZmlsdGVyT3B0aW9ucyhcclxuICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICB0aGlzLmRlZmF1bHRUaW1lWm9uZXMsXHJcbiAgICAgICAgICB0aGlzLnRpbWV6b25lc1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UudXBkYXRlRm9ybUNvbnRyb2xPcHRpb25zKFxyXG4gICAgICAgICAgJ3RpbWVab25lJyxcclxuICAgICAgICAgICdkcm9wZG93bk9wdGlvbnMnLFxyXG4gICAgICAgICAgdGhpcy50aW1lem9uZXMsXHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNGb3JtQ29tcG9uZW50XHJcbiAgICAgICAgKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY291bnRyeSc6XHJcbiAgICAgICAgdGhpcy5jb3VudHJpZXMgPSB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5maWx0ZXJPcHRpb25zKFxyXG4gICAgICAgICAgZGF0YSxcclxuICAgICAgICAgIHRoaXMuZGVmYXVsdENvdW50cmllcyxcclxuICAgICAgICAgIHRoaXMuY291bnRyaWVzXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS51cGRhdGVGb3JtQ29udHJvbE9wdGlvbnMoXHJcbiAgICAgICAgICAnY291bnRyeScsXHJcbiAgICAgICAgICAnZHJvcGRvd25PcHRpb25zJyxcclxuICAgICAgICAgIHRoaXMuY291bnRyaWVzLFxyXG4gICAgICAgICAgdGhpcy5keW5hbWljRm9ybUNvbXBvbmVudFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3JlbGF0ZWRHcm91cCc6XHJcbiAgICAgICAgdGhpcy5ncm91cHMgPSB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5maWx0ZXJPcHRpb25zKFxyXG4gICAgICAgICAgZGF0YSxcclxuICAgICAgICAgIHRoaXMuZGVmYXVsdEdyb3VwcyxcclxuICAgICAgICAgIHRoaXMuZ3JvdXBzXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS51cGRhdGVGb3JtQ29udHJvbE9wdGlvbnMoXHJcbiAgICAgICAgICAncmVsYXRlZEdyb3VwJyxcclxuICAgICAgICAgICdkcm9wZG93bk9wdGlvbnMnLFxyXG4gICAgICAgICAgdGhpcy5ncm91cHMsXHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNGb3JtQ29tcG9uZW50XHJcbiAgICAgICAgKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogQ2hlY2tpbmcgZm9yIHVuY2hlY2tlZCBjaGVja2JveCBjb3VudCBleGNlcHQgT1BFTl9GT1JfQUxMXHJcbiAgICogQHJldHVybiB7Kn0gIHtib29sZWFufVxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVNb2RpZnlNZWV0aW5nQ29tcG9uZW50XHJcbiAgICovXHJcbiAgY2FuRW5hYmxlT3BlbkZvckFsbENoZWNrYm94KCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHVuY2hlY2tlZENvdW50ID0gMDtcclxuICAgIHRoaXMuYXR0ZW5kZWVzVHlwZXM/LmZvckVhY2goKGF0dGVuZGVlVHlwZSkgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgYXR0ZW5kZWVUeXBlPy5pZCAhPT0gQXR0ZW5kZWVUeXBlLk9QRU5fRk9SX0FMTCAmJlxyXG4gICAgICAgICFhdHRlbmRlZVR5cGU/LmNoZWNrZWRcclxuICAgICAgKVxyXG4gICAgICAgIHVuY2hlY2tlZENvdW50Kys7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB1bmNoZWNrZWRDb3VudCA9PT0gdGhpcy5hdHRlbmRlZXNUeXBlcz8ubGVuZ3RoIC0gMTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgbWVldGluZ3MgYnkgZXZlbnQgaWQgb24gY2hhbmdlIG9mIHRhYmxlIHBhZ2luYXRpb24uXHJcbiAgICogQHBhcmFtIHt7XHJcbiAgICogICAgIHBhZ2VPZmZzZXQ6IG51bWJlcjtcclxuICAgKiAgICAgcGFnZUxpbWl0OiBudW1iZXI7XHJcbiAgICogICB9fSBwYWdlRXZlbnRcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlT3JNb2RpZnlFdmVudENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uTWVldGluZ3NUYWJsZVBhZ2VDaGFuZ2UocGFnZUV2ZW50OiBQYWdlRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuZ2V0TWVldGluZ3NCeUV2ZW50SWQoe1xyXG4gICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgZXZlbnRJZDogdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuZ2V0U2VsZWN0ZWRFdmVudElkKCksXHJcbiAgICAgICAgc29ydENvbHVtbjogdGhpcy5kZWZhdWx0U29ydGVkQ29sdW1uLFxyXG4gICAgICAgIGFzY2VuZGluZ09yZGVyOiB0aGlzLmRlZmF1bHRDb2x1bW5Tb3J0RGlyZWN0aW9uLFxyXG4gICAgICAgIHBhZ2U6IHBhZ2VFdmVudC5wYWdlSW5kZXggKyAxLFxyXG4gICAgICAgIHNpemU6IHBhZ2VFdmVudC5wYWdlU2l6ZSxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmlldyBldmVudCBkZXRhaWxzIGFuZCBjYWxscyBnZXQgZXZlbnQgZGV0YWlscyBBUEkgYW5kIGVtaXRzIHZpZXcgZXZlbnQgQVBJIHJlc3BvbnNlLlxyXG4gICAqIEBwYXJhbSB7ZXZlbnRJRH1cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuXHJcbiAgdmlld0V2ZW50RGV0YWlscyhldmVudElEOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICAgIC5nZXRFdmVudERldGFpbHMoZXZlbnRJRClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzPy5zdGF0dXMpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEV2ZW50RGF0YSA9IHJlcz8uYm9keTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEV2ZW50RGF0YS5ncm91cE5hbWUgPSB0aGlzLmdyb3Vwcz8uZmlsdGVyKFxyXG4gICAgICAgICAgICAgIChvcHRpb24pID0+IG9wdGlvbj8uaWQgPT09IHRoaXMuc2VsZWN0ZWRFdmVudERhdGE/Lmdyb3VwSWRcclxuICAgICAgICAgICAgKT8uWzBdPy5uYW1lO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRXZlbnREYXRhLmV2ZW50VHlwZU5hbWUgPSB0aGlzLmV2ZW50VHlwZXM/LmZpbHRlcihcclxuICAgICAgICAgICAgICAob3B0aW9uKSA9PiBvcHRpb24/LmlkID09PSB0aGlzLnNlbGVjdGVkRXZlbnREYXRhPy5ldmVudFR5cGVcclxuICAgICAgICAgICAgKT8uWzBdPy5uYW1lO1xyXG4gICAgICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZT8uc2V0U2VsZWN0ZWRFdmVudERhdGEoXHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEV2ZW50RGF0YVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkRm9ybUdyb3VwVmFsdWVzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuaGFuZGxlRXJyb3JzKGVycm9yLCBmYWxzZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSBlZGl0IGV2ZW50IGRldGFpbHMgb24gZ2V0IHZpZXcgZXZlbnQgZGV0YWlscyBBUEkgY2FsbC5cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBzZXRTZWxlY3RlZEZvcm1Hcm91cFZhbHVlcygpOiB2b2lkIHtcclxuICAgIHRoaXMuY3JlYXRlT3JVcGRhdGVFdmVudEZvcm1Hcm91cFJlZj8uWzBdXHJcbiAgICAgIC5nZXQoJ3JlbGF0ZWRHcm91cCcpXHJcbiAgICAgID8uc2V0VmFsdWUoXHJcbiAgICAgICAgdGhpcy5ncm91cHM/LmZpbHRlcihcclxuICAgICAgICAgIChvcHRpb24pID0+IG9wdGlvbj8uaWQgPT09IHRoaXMuc2VsZWN0ZWRFdmVudERhdGE/Lmdyb3VwSWRcclxuICAgICAgICApPy5bMF1cclxuICAgICAgKTtcclxuICAgIHRoaXMuY3JlYXRlT3JVcGRhdGVFdmVudEZvcm1Hcm91cFJlZj8uWzBdXHJcbiAgICAgIC5nZXQoJ2V2ZW50TmFtZScpXHJcbiAgICAgID8uc2V0VmFsdWUodGhpcy5zZWxlY3RlZEV2ZW50RGF0YT8uZXZlbnROYW1lKTtcclxuICAgIHRoaXMuY3JlYXRlT3JVcGRhdGVFdmVudEZvcm1Hcm91cFJlZj8uWzBdXHJcbiAgICAgIC5nZXQoJ2V2ZW50VHlwZScpXHJcbiAgICAgID8uc2V0VmFsdWUoXHJcbiAgICAgICAgdGhpcy5ldmVudFR5cGVzPy5maWx0ZXIoXHJcbiAgICAgICAgICAob3B0aW9uKSA9PiBvcHRpb24/LmlkID09PSB0aGlzLnNlbGVjdGVkRXZlbnREYXRhPy5ldmVudFR5cGVcclxuICAgICAgICApPy5bMF1cclxuICAgICAgKTtcclxuICAgIHRoaXMuY3JlYXRlT3JVcGRhdGVFdmVudEZvcm1Hcm91cFJlZj8uWzFdXHJcbiAgICAgIC5nZXQoJ3N0YXJ0RGF0ZScpXHJcbiAgICAgID8uc2V0VmFsdWUobW9tZW50KHRoaXMuc2VsZWN0ZWRFdmVudERhdGE/LnN0YXJ0RGF0ZSkpO1xyXG4gICAgdGhpcy5jcmVhdGVPclVwZGF0ZUV2ZW50Rm9ybUdyb3VwUmVmPy5bMV1cclxuICAgICAgLmdldCgnZW5kRGF0ZScpXHJcbiAgICAgID8uc2V0VmFsdWUobW9tZW50KHRoaXMuc2VsZWN0ZWRFdmVudERhdGE/LmVuZERhdGUpKTtcclxuICAgIHRoaXMuY3JlYXRlT3JVcGRhdGVFdmVudEZvcm1Hcm91cFJlZj8uWzFdXHJcbiAgICAgIC5nZXQoJ3RpbWVab25lJylcclxuICAgICAgPy5zZXRWYWx1ZShcclxuICAgICAgICB0aGlzLnRpbWV6b25lcz8uZmlsdGVyKFxyXG4gICAgICAgICAgKG9wdGlvbikgPT4gb3B0aW9uPy5uYW1lID09PSB0aGlzLnNlbGVjdGVkRXZlbnREYXRhPy50aW1lWm9uZVxyXG4gICAgICAgIClbMF1cclxuICAgICAgKTtcclxuICAgIHRoaXMuY3JlYXRlT3JVcGRhdGVFdmVudEZvcm1Hcm91cFJlZj8uWzJdXHJcbiAgICAgIC5nZXQoJ2FkZHJlc3MnKVxyXG4gICAgICA/LnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRFdmVudERhdGE/LmxvY2F0aW9uKTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRXZlbnREYXRhLm9wZW5Gb3JBbGwpIHtcclxuICAgICAgdGhpcy5hdHRlbmRlZXNUeXBlc1swXS5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5vbkF0dGVuZGVlVHlwZVNlbGVjdGlvbih0aGlzLmF0dGVuZGVlc1R5cGVzWzBdKTtcclxuICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFdmVudERhdGEuZ3JvdXBQYXJ0aWNpcGFudHMgJiZcclxuICAgICAgdGhpcy5zZWxlY3RlZEV2ZW50RGF0YS5yZWdpc3RlcmVkUGFydGljaXBhbnRzXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5hdHRlbmRlZXNUeXBlc1sxXS5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5vbkF0dGVuZGVlVHlwZVNlbGVjdGlvbih0aGlzLmF0dGVuZGVlc1R5cGVzWzFdKTtcclxuICAgICAgdGhpcy5hdHRlbmRlZXNUeXBlc1syXS5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5vbkF0dGVuZGVlVHlwZVNlbGVjdGlvbih0aGlzLmF0dGVuZGVlc1R5cGVzWzJdKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZEV2ZW50RGF0YS5ncm91cFBhcnRpY2lwYW50cykge1xyXG4gICAgICB0aGlzLmF0dGVuZGVlc1R5cGVzWzFdLmNoZWNrZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLm9uQXR0ZW5kZWVUeXBlU2VsZWN0aW9uKHRoaXMuYXR0ZW5kZWVzVHlwZXNbMV0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hdHRlbmRlZXNUeXBlc1syXS5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5vbkF0dGVuZGVlVHlwZVNlbGVjdGlvbih0aGlzLmF0dGVuZGVlc1R5cGVzWzJdKTtcclxuICAgIH1cclxuICAgIHRoaXMuY3JlYXRlT3JVcGRhdGVFdmVudEZvcm1Hcm91cFJlZj8uWzNdXHJcbiAgICAgIC5nZXQoJ2F0dGVuZGVlc1R5cGUnKVxyXG4gICAgICA/LnNldFZhbHVlKHRoaXMuYXR0ZW5kZWVzVHlwZXMubWFwKChvcHRpb24pID0+IG9wdGlvbi5jaGVja2VkKSk7XHJcbiAgICB0aGlzLmNyZWF0ZU9yVXBkYXRlRXZlbnRGb3JtR3JvdXBSZWY/LlsyXVxyXG4gICAgICAuZ2V0KCdjb3VudHJ5JylcclxuICAgICAgPy5zZXRWYWx1ZShcclxuICAgICAgICB0aGlzLmNvdW50cmllcz8uZmlsdGVyKFxyXG4gICAgICAgICAgKG9wdGlvbikgPT4gb3B0aW9uPy5pZCA9PT0gdGhpcy5zZWxlY3RlZEV2ZW50RGF0YT8uY291bnRyeVxyXG4gICAgICAgIClbMF1cclxuICAgICAgKTtcclxuICAgIHRoaXMuY3JlYXRlT3JVcGRhdGVFdmVudEZvcm1Hcm91cFJlZj8uWzRdXHJcbiAgICAgIC5nZXQoJ2V2ZW50UGFzc3dvcmQnKVxyXG4gICAgICA/LnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRFdmVudERhdGE/LmV2ZW50UGFzc3dvcmQpO1xyXG4gICAgdGhpcy5jcmVhdGVPclVwZGF0ZUV2ZW50Rm9ybUdyb3VwUmVmPy5bNF1cclxuICAgICAgLmdldCgnaXBBZGRyZXNzUmFuZ2UnKVxyXG4gICAgICA/LnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRFdmVudERhdGE/LmlwYWRkcmVzcyk7XHJcbiAgICB0aGlzLmNyZWF0ZU9yVXBkYXRlRXZlbnRGb3JtR3JvdXBSZWY/Lls1XVxyXG4gICAgICAuZ2V0KCdkZXNjcmlwdGlvbicpXHJcbiAgICAgID8uc2V0VmFsdWUodGhpcy5zZWxlY3RlZEV2ZW50RGF0YT8uZXZlbnREZXNjKTtcclxuICAgIHRoaXMuaXNTdWJtaXRCdXR0b25EaXNhYmxlZCA9IHRydWU7XHJcbiAgICB0aGlzLmdldEZvcm1Hcm91cFZhbHVlcygpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBDb25zdHJ1Y3RzIGVkaXQgZXZlbnQgcGF5bG9hZCBhbmQgY2FsbHMgZWRpdCBldmVudCBBUEkgYW5kIGVtaXRzIGVkaXQgZXZlbnQgQVBJIHJlc3BvbnNlLlxyXG4gICAqIEBwYXJhbSB7Kn0gZm9ybURhdGFcclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBlZGl0RXZlbnQoZm9ybUdyb3VwczogRm9ybUdyb3VwW10pOiB2b2lkIHtcclxuICAgIGNvbnN0IGV2ZW50QmFzaWNEZXRhaWxzID0gZm9ybUdyb3Vwcz8uWzBdPy5nZXRSYXdWYWx1ZSgpO1xyXG4gICAgY29uc3QgZXZlbnREYXRlQW5kVGltZURldGFpbHMgPSBmb3JtR3JvdXBzPy5bMV0/LmdldFJhd1ZhbHVlKCk7XHJcbiAgICBjb25zdCBldmVudExvY2F0aW9uRGV0YWlscyA9IGZvcm1Hcm91cHM/LlsyXT8uZ2V0UmF3VmFsdWUoKTtcclxuICAgIGNvbnN0IGV2ZW50QXR0ZW5kZWVEZXRhaWxzID0gZm9ybUdyb3Vwcz8uWzNdPy5nZXRSYXdWYWx1ZSgpO1xyXG4gICAgY29uc3QgZXZlbnRBY2Nlc3NEZXRhaWxzID0gZm9ybUdyb3Vwcz8uWzRdPy5nZXRSYXdWYWx1ZSgpO1xyXG4gICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuY29udmVydERhdGVUaW1lVG9VVEMoXHJcbiAgICAgIGV2ZW50RGF0ZUFuZFRpbWVEZXRhaWxzPy5zdGFydERhdGUuZm9ybWF0KFxyXG4gICAgICAgIERhdGVGb3JtYXRzLnJlcXVlc3RQYXlsb2FkRm9ybWF0XHJcbiAgICAgIClcclxuICAgICk7XHJcbiAgICBjb25zdCBlbmREYXRlID0gdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuY29udmVydERhdGVUaW1lVG9VVEMoXHJcbiAgICAgIGV2ZW50RGF0ZUFuZFRpbWVEZXRhaWxzPy5lbmREYXRlLmZvcm1hdChEYXRlRm9ybWF0cz8ucmVxdWVzdFBheWxvYWRGb3JtYXQpXHJcbiAgICApO1xyXG4gICAgY29uc3QgZWRpdEV2ZW50UGF5bG9hZDogQ3JlYXRlT3JFZGl0RXZlbnRQYXlsb2FkID0ge1xyXG4gICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgZXZlbnROYW1lOiBldmVudEJhc2ljRGV0YWlscz8uZXZlbnROYW1lLFxyXG4gICAgICAgIGV2ZW50SWQ6IHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmdldFNlbGVjdGVkRXZlbnRJZCgpID8/IG51bGwsXHJcbiAgICAgICAgZXZlbnRUeXBlOiBldmVudEJhc2ljRGV0YWlscz8uZXZlbnRUeXBlPy5pZCxcclxuICAgICAgICBncm91cElkOiBldmVudEJhc2ljRGV0YWlscz8ucmVsYXRlZEdyb3VwPy5pZCxcclxuICAgICAgICBzdGFydERhdGU6IHN0YXJ0RGF0ZSxcclxuICAgICAgICBlbmREYXRlOiBlbmREYXRlLFxyXG4gICAgICAgIHRpbWVab25lOiBldmVudERhdGVBbmRUaW1lRGV0YWlscz8udGltZVpvbmU/Lm5hbWUsXHJcbiAgICAgICAgY291bnRyeTogZXZlbnRMb2NhdGlvbkRldGFpbHM/LmNvdW50cnk/LmlkLFxyXG4gICAgICAgIGV2ZW50UGFzc3dvcmQ6IGV2ZW50QWNjZXNzRGV0YWlscz8uZXZlbnRQYXNzd29yZCxcclxuICAgICAgICBvcGVuRm9yQWxsOiBldmVudEF0dGVuZGVlRGV0YWlscz8uYXR0ZW5kZWVzVHlwZT8uWzBdLFxyXG4gICAgICAgIHJlZ2lzdGVyZWRQYXJ0aWNpcGFudHM6IGV2ZW50QXR0ZW5kZWVEZXRhaWxzPy5hdHRlbmRlZXNUeXBlPy5bMl0sXHJcbiAgICAgICAgZ3JvdXBQYXJ0aWNpcGFudHM6IGV2ZW50QXR0ZW5kZWVEZXRhaWxzPy5hdHRlbmRlZXNUeXBlPy5bMV0sXHJcbiAgICAgICAgaXBhZGRyZXNzOiBldmVudEFjY2Vzc0RldGFpbHM/LmlwQWRkcmVzc1JhbmdlID8/ICcnLFxyXG4gICAgICAgIGxvY2F0aW9uOiBldmVudExvY2F0aW9uRGV0YWlscz8uYWRkcmVzcyxcclxuICAgICAgICBldmVudFRpdGxlOiBldmVudEJhc2ljRGV0YWlscz8uZXZlbnROYW1lLFxyXG4gICAgICAgIGV2ZW50RGVzYzogZm9ybUdyb3Vwcz8uWzVdPy5nZXRSYXdWYWx1ZSgpPy5kZXNjcmlwdGlvbixcclxuICAgICAgICB2aXJ0dWFsTWVldGluZ1VybDogZXZlbnRMb2NhdGlvbkRldGFpbHM/LnZpcnR1YWxNZWV0aW5nVXJsID8/ICcnLFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICAgIC5lZGl0RXZlbnQoZWRpdEV2ZW50UGF5bG9hZClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzPy5zdGF0dXMpIHtcclxuICAgICAgICAgICAgdGhpcy5jYW5EaXNhYmxlQWRkTWVldGluZyhmYWxzZSk7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Rm9ybUdyb3VwVmFsdWVzKCk7XHJcbiAgICAgICAgICAgIGlmIChyZXM/LmJvZHkpXHJcbiAgICAgICAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2U/LnNldFNlbGVjdGVkRXZlbnRJZChcclxuICAgICAgICAgICAgICAgIE9iamVjdChyZXM/LmJvZHkpPy5pZFxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlPy5zZXRTZWxlY3RlZEV2ZW50RGF0YSh7XHJcbiAgICAgICAgICAgICAgc3RhcnREYXRlOiBzdGFydERhdGUsXHJcbiAgICAgICAgICAgICAgZW5kRGF0ZTogZW5kRGF0ZSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnNldEV2ZW50T3JNZWV0aW5nRm9ybUNoYW5nZVN0YXR1cyhcclxuICAgICAgICAgICAgICBmYWxzZVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dBbGVydE1lc3NhZ2UoXHJcbiAgICAgICAgICAgICAgQWxlcnRUeXBlPy5TVUNDRVNTLFxyXG4gICAgICAgICAgICAgIGVkaXRFdmVudFBheWxvYWQucGF5bG9hZC5ldmVudFRpdGxlICtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/Lm1lc3NhZ2U/LnN1Y2Nlc3M/LnVwZGF0aW9uXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuaGFuZGxlRXJyb3JzKGVycm9yKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgc2VsZWN0ZWQgdGFibGUgcm93IGRhdGEuXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGdldFNlbGVjdGVkUm93RGF0YShyb3c6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZE1lZXRpbmcgPSByb3c7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgdGhlIGNsaWNrZWQgbWVldGluZyBhY3Rpb25cclxuICAgKiBAcGFyYW0ge01lbnV9IG1lbnVcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlT3JNb2RpZnlFdmVudENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGhhbmRsZU1lZXRpbmdBY3Rpb25zKG1lbnU6IE1lbnUpOiB2b2lkIHtcclxuICAgIGlmIChtZW51Py5pZCA9PT0gTWVldGluZ0FjdGlvbi5ERUxFVEVfTUVFVElORykge1xyXG4gICAgICB0aGlzLm9wZW5EZWxldGVNZWV0aW5nc0NvbmZpcm1hdGlvbk1vZGFsKHRoaXMuc2VsZWN0ZWRNZWV0aW5nKTtcclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICBtZW51Py5pZCA9PT0gTWVldGluZ0FjdGlvbi5WSUVXX01FRVRJTkcgfHxcclxuICAgICAgbWVudT8uaWQgPT09IE1lZXRpbmdBY3Rpb24uVklFV19BR0VOREEgfHxcclxuICAgICAgbWVudT8uaWQgPT09IE1lZXRpbmdBY3Rpb24uQ1JFQVRFX0FHRU5EQSB8fFxyXG4gICAgICBtZW51Py5pZCA9PT0gTWVldGluZ0FjdGlvbi5WSUVXX0VESVRfTUVFVElORyB8fFxyXG4gICAgICBtZW51Py5pZCA9PT0gTWVldGluZ0FjdGlvbi5WSUVXX0VESVRfQUdFTkRBXHJcbiAgICApIHtcclxuICAgICAgY29uc3QgbWVldGluZ1ZpZXcgPVxyXG4gICAgICAgIG1lbnU/LmlkID09PSBNZWV0aW5nQWN0aW9uLlZJRVdfRURJVF9NRUVUSU5HIHx8XHJcbiAgICAgICAgbWVudT8uaWQgPT09IE1lZXRpbmdBY3Rpb24uVklFV19NRUVUSU5HXHJcbiAgICAgICAgICA/IE1lZXRpbmdWaWV3Lk1FRVRJTkdfREVUQUlMU1xyXG4gICAgICAgICAgOiBNZWV0aW5nVmlldy5BR0VOREE7XHJcbiAgICAgIGlmICh0aGlzLnJvdXRlUGF0aHM/LmVkaXRNZWV0aW5nKSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMucm91dGVQYXRocy5lZGl0TWVldGluZ10sIHtcclxuICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7XHJcbiAgICAgICAgICAgIGV2ZW50SWQ6IHRoaXMuZXZlbnRJZCxcclxuICAgICAgICAgICAgbWVldGluZ0lkOiB0aGlzLnNlbGVjdGVkTWVldGluZz8ubWVldGluZ0lkLFxyXG4gICAgICAgICAgICBtZWV0aW5nVmlldzogbWVldGluZ1ZpZXcsXHJcbiAgICAgICAgICAgIGlzVmlld09ubHk6XHJcbiAgICAgICAgICAgICAgbWVudT8uaWQgPT09IE1lZXRpbmdBY3Rpb24uVklFV19NRUVUSU5HIHx8XHJcbiAgICAgICAgICAgICAgbWVudT8uaWQgPT09IE1lZXRpbmdBY3Rpb24uVklFV19BR0VOREEsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY3JlYXRlTW9kaWZ5RXZlbnRDbGljay5lbWl0KHtcclxuICAgICAgICAgIGV2ZW50SWQ6IHRoaXMuZXZlbnRJZCxcclxuICAgICAgICAgIG1lZXRpbmdJZDogdGhpcy5zZWxlY3RlZE1lZXRpbmc/Lm1lZXRpbmdJZCxcclxuICAgICAgICAgIG1lZXRpbmdWaWV3OiBtZWV0aW5nVmlldyxcclxuICAgICAgICAgIGlzVmlld09ubHk6XHJcbiAgICAgICAgICAgIG1lbnU/LmlkID09PSBNZWV0aW5nQWN0aW9uLlZJRVdfTUVFVElORyB8fFxyXG4gICAgICAgICAgICBtZW51Py5pZCA9PT0gTWVldGluZ0FjdGlvbi5WSUVXX0FHRU5EQSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBzZWxlY3RlZCBtZWV0aW5nIGRldGFpbHMgYW5kIG9wZW5zIHRoZSBtb2RhbCB0byBlZGl0IHRoZSBzZWxlY3RlZCBtZWV0aW5nIHdoaWxlIGNsaWNraW5nIGVkaXQgbWVldGluZyBtZW51LlxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVPck1vZGlmeUV2ZW50Q29tcG9uZW50XHJcbiAgICovXHJcbiAgbmF2aWdhdGVUb0VkaXRNZWV0aW5nUGFnZShzZWxlY3RlZE1lZXRpbmc6IE1lZXRpbmdEZXRhaWxzKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkTWVldGluZyA9IHNlbGVjdGVkTWVldGluZztcclxuICAgIGlmICh0aGlzLnJvdXRlUGF0aHM/LmVkaXRNZWV0aW5nKSB7XHJcbiAgICAgIHRoaXMucm91dGVyPy5uYXZpZ2F0ZShbdGhpcy5yb3V0ZVBhdGhzLmVkaXRNZWV0aW5nXSwge1xyXG4gICAgICAgIHF1ZXJ5UGFyYW1zOiB7XHJcbiAgICAgICAgICBldmVudElkOiB0aGlzLmV2ZW50SWQsXHJcbiAgICAgICAgICBtZWV0aW5nSWQ6IHNlbGVjdGVkTWVldGluZz8ubWVldGluZ0lkLFxyXG4gICAgICAgICAgaXNWaWV3T25seTogIXNlbGVjdGVkTWVldGluZz8uaXNNZW1iZXJPZkdyb3VwLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jcmVhdGVNb2RpZnlFdmVudENsaWNrLmVtaXQoe1xyXG4gICAgICAgIGV2ZW50SWQ6IHRoaXMuZXZlbnRJZCxcclxuICAgICAgICBtZWV0aW5nSWQ6IHNlbGVjdGVkTWVldGluZz8ubWVldGluZ0lkLFxyXG4gICAgICAgIGlzVmlld09ubHk6ICFzZWxlY3RlZE1lZXRpbmc/LmlzTWVtYmVyT2ZHcm91cCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIE9wZW5zIHRoZSBjb25maXJtYXRpb24gbW9kYWwgdG8gZ2V0IHVzZXIgY29uZmlybWF0aW9uIHRvIGRlbGV0ZSB0aGUgbWVldGluZ3MgZnJvbSB0aGUgc2VsZWN0ZWQgZXZlbnQuXHJcbiAgICogQHBhcmFtIHsqfSBzZWxlY3RlZE1lZXRpbmdzXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIG9wZW5EZWxldGVNZWV0aW5nc0NvbmZpcm1hdGlvbk1vZGFsKHNlbGVjdGVkTWVldGluZ3M6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZE1lZXRpbmdJZHMgPSBbXTtcclxuICAgIGlmIChzZWxlY3RlZE1lZXRpbmdzPy5tZWV0aW5nSWQpXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRNZWV0aW5nSWRzPy5wdXNoKHNlbGVjdGVkTWVldGluZ3M/Lm1lZXRpbmdJZCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHNlbGVjdGVkTWVldGluZ3M/LmZvckVhY2goKG1lZXRpbmc6IE1lZXRpbmcpID0+IHtcclxuICAgICAgICBpZiAobWVldGluZz8ubWVldGluZ0lkKVxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZXRpbmdJZHM/LnB1c2gobWVldGluZy5tZWV0aW5nSWQpO1xyXG4gICAgICB9KTtcclxuICAgIGNvbnN0IGNvbmZpcm1hdGlvbkluZm8gPSB0aGlzLnNjcmVlblRleHRzPy5kZWxldGVNZWV0aW5ncz8uY29uZmlybWF0aW9uSW5mbztcclxuICAgIGNvbnN0IGRlbGV0ZVVzZXJHcm91cE1vZGFsT3B0aW9ucyA9IHtcclxuICAgICAgbGVmdEJ1dHRvbkxhYmVsOiBjb25maXJtYXRpb25JbmZvPy5sZWZ0QnV0dG9uTGFiZWwsXHJcbiAgICAgIHJpZ2h0QnV0dG9uTGFiZWw6IGNvbmZpcm1hdGlvbkluZm8/LnJpZ2h0QnV0dG9uTGFiZWwsXHJcbiAgICAgIHByb21wdE1lc3NhZ2U6IGNvbmZpcm1hdGlvbkluZm8/LnByb21wdE1lc3NhZ2UsXHJcbiAgICAgIGFjdGlvbkJ1dHRvbkFsaWduOiBBbGlnblR5cGU/Lk1JRERMRSxcclxuICAgIH07XHJcbiAgICB0aGlzLmRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oTW9kYWxDb25maXJtYXRpb25Db21wb25lbnQsIHtcclxuICAgICAgZGF0YTogZGVsZXRlVXNlckdyb3VwTW9kYWxPcHRpb25zLFxyXG4gICAgICBhdXRvRm9jdXM6ICdkaWFsb2cnLFxyXG4gICAgICBhcmlhTGFiZWw6IHRoaXMuY29uc3RhbnRzPy5hcmlhTGFiZWw/LmFsZXJ0LFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZlxyXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHRoaXMuZGVsZXRlRXZlbnRNZWV0aW5ncygpO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2VuZHMgQVBJIFJlcXVlc3QgdG8gZGVsZXRlIHRoZSBzZWxlY3RlZCBtZWV0aW5ncyB3aXRoaW4gZXZlbnQgYW5kIGhhbmRsZXMgdGhlIHN1Y2Nlc3MgYW5kIGVycm9yIHJlc3BvbnNlIG9mIHRoZSBodHRwIHJlcXVlc3QuXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBkZWxldGVFdmVudE1lZXRpbmdzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgICAgLmRlbGV0ZUV2ZW50c09yTWVldGluZ3Moe1xyXG4gICAgICAgIHBheWxvYWQ6IHRoaXMuc2VsZWN0ZWRNZWV0aW5nSWRzLFxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZ2V0TWVldGluZ3NCeUV2ZW50SWQoe1xyXG4gICAgICAgICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgICAgICAgZXZlbnRJZDogdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuZ2V0U2VsZWN0ZWRFdmVudElkKCksXHJcbiAgICAgICAgICAgICAgc29ydENvbHVtbjogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/Lm1lZXRpbmdUaXRsZSxcclxuICAgICAgICAgICAgICBhc2NlbmRpbmdPcmRlcjogdHJ1ZSxcclxuICAgICAgICAgICAgICBwYWdlOiAxLFxyXG4gICAgICAgICAgICAgIHNpemU6IHRoaXMucGFnaW5hdG9yQ29uZmlnPy5yZWNvcmRzUGVyUGFnZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2U/LnNob3dNZXNzYWdlKHtcclxuICAgICAgICAgICAgc3RhdHVzOiAnY3VzdG9tJyxcclxuICAgICAgICAgICAgbWVzc2FnZTpcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVldGluZ0lkcy5sZW5ndGggK1xyXG4gICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/LmRlbGV0ZU1lZXRpbmdzPy5tZXNzYWdlPy5zdWNjZXNzPy5kZWxldGlvbixcclxuICAgICAgICAgICAgYWxlcnRUeXBlOiBBbGVydFR5cGUuU1VDQ0VTUyxcclxuICAgICAgICAgICAgaXNDbG9zZU5lZWRlZDogdHJ1ZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuaGFuZGxlRXJyb3JzKGVycm9yKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2hvd3MgdGhlIHNlYXJjaCBmaWVsZCBvbiBjbGljayBvZiBzZWFyY2ggaWNvbiBpbiBjYXNlIG9mIG1vYmlsZSB2aWV3XHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBvbk1lZXRpbmdTZWFyY2goKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzU2VhcmNoQWN0aXZlID0gdHJ1ZTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyBpc1NlYXJjaEFjdGl2ZSB0byB0cnVlIGFuZCBsb2FkcyB0aGUgbWVldGluZ3MgLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZWFyY2hUZXJtXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBvbk1lZXRpbmdzU2VhcmNoQ2xpY2soc2VhcmNoVGVybTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoc2VhcmNoVGVybSkge1xyXG4gICAgICB0aGlzLnRyaW1tZWRTZWFyY2hUZXJtID0gc2VhcmNoVGVybS50cmltKCk7XHJcbiAgICAgIHRoaXMuaXNTZWFyY2hBY3RpdmUgPSB0cnVlO1xyXG4gICAgICBpZiAoIXRoaXMudHJpbW1lZFNlYXJjaFRlcm0pIHJldHVybjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoUmVzdWx0TWVzc2FnZSA9ICcnO1xyXG4gICAgICB0aGlzLnRyaW1tZWRTZWFyY2hUZXJtID0gJyc7XHJcbiAgICAgIHRoaXMuaXNTZWFyY2hBY3RpdmUgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0TWVldGluZ3NCeUV2ZW50SWQoe1xyXG4gICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgZXZlbnRJZDogdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuZ2V0U2VsZWN0ZWRFdmVudElkKCksXHJcbiAgICAgICAgc29ydENvbHVtbjogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/Lm1lZXRpbmdUaXRsZSxcclxuICAgICAgICBhc2NlbmRpbmdPcmRlcjogZmFsc2UsXHJcbiAgICAgICAgcGFnZTogMSxcclxuICAgICAgICBzaXplOiB0aGlzLnBhZ2luYXRvckNvbmZpZz8ucmVjb3Jkc1BlclBhZ2UsXHJcbiAgICAgICAgc2VhcmNoVGVybTogc2VhcmNoVGVybSA/IHRoaXMudHJpbW1lZFNlYXJjaFRlcm0gOiBudWxsLFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8qXHJcbiAgICogR2V0cyB0aGUgbWVldGluZ3MgYmFzZWQgb24gdGhlIGNvbHVtbiBuYW1lIGFuZCBzb3J0IGRpcmVjdGlvbi5cclxuICAgKiBAcGFyYW0ge1NvcnR9IHNvcnRcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlT3JNb2RpZnlFdmVudENvbXBvbmVudFxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gIG9uU29ydE1lZXRpbmcoc29ydDogU29ydCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZWZhdWx0U29ydGVkQ29sdW1uID0gc29ydC5hY3RpdmU7XHJcbiAgICB0aGlzLmRlZmF1bHRDb2x1bW5Tb3J0RGlyZWN0aW9uID1cclxuICAgICAgc29ydC5kaXJlY3Rpb24gPT09IFRhYmxlQ29sdW1uU29ydERpcmVjdGlvbi5BU0NFTkRJTkc7XHJcbiAgICB0aGlzLmdldE1lZXRpbmdzQnlFdmVudElkKHtcclxuICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgIGV2ZW50SWQ6IHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmdldFNlbGVjdGVkRXZlbnRJZCgpLFxyXG4gICAgICAgIHNvcnRDb2x1bW46IHRoaXMuZGVmYXVsdFNvcnRlZENvbHVtbixcclxuICAgICAgICBhc2NlbmRpbmdPcmRlcjogdGhpcy5kZWZhdWx0Q29sdW1uU29ydERpcmVjdGlvbixcclxuICAgICAgICBwYWdlOiAxLFxyXG4gICAgICAgIHNpemU6IHRoaXMucGFnaW5hdG9yQ29uZmlnPy5yZWNvcmRzUGVyUGFnZSxcclxuICAgICAgICBzZWFyY2hUZXJtOiB0aGlzLnRyaW1tZWRTZWFyY2hUZXJtID8/IG51bGwsXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLypcclxuICAgKiBEaXNhYmxlcyBhZGQgbWVldGluZyBsaW5rL2ljb24gd2hlbiB0aGUgY3VycmVudCBmb3JtIHZhbHVlIGNoYW5nZXMuXHJcbiAgICogQHBhcmFtIHtGb3JtR3JvdXBbXX0gZm9ybUdyb3Vwc1xyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVPck1vZGlmeUV2ZW50Q29tcG9uZW50XHJcbiAgICovXHJcbiAgY2hlY2tGb3JGb3JtVmFsdWVDaGFuZ2VzKGZvcm1Hcm91cHM6IEZvcm1Hcm91cFtdKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5wcmV2aW91c0Zvcm1WYWx1ZXMpIHtcclxuICAgICAgdGhpcy5jYW5EaXNhYmxlQWRkTWVldGluZyhcclxuICAgICAgICB0aGlzLmZvcm1VdGlsaXR5U2VydmljZS5nZXRGb3JtVmFsdWVDaGFuZ2VTdGF0dXMoXHJcbiAgICAgICAgICB0aGlzLnByZXZpb3VzRm9ybVZhbHVlcyxcclxuICAgICAgICAgIGZvcm1Hcm91cHNcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFN0b3JlcyBmb3JtIGdyb3VwIHZhbHVlcy5cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlT3JNb2RpZnlFdmVudENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldEZvcm1Hcm91cFZhbHVlcygpOiB2b2lkIHtcclxuICAgIHRoaXMucHJldmlvdXNGb3JtVmFsdWVzID0gdGhpcy5jcmVhdGVPclVwZGF0ZUV2ZW50Rm9ybUdyb3VwUmVmPy5tYXAoXHJcbiAgICAgIChmb3JtZ3JvdXApID0+IHtcclxuICAgICAgICByZXR1cm4gZm9ybWdyb3VwLnZhbHVlO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBOZ09uRGVzdHJveSBwZXJmb3JtcyBuZWNlc3NhcnkgY2xlYW51cCB0YXNrcywgc3VjaCBhcyB1bnN1YnNjcmliaW5nIGZyb20gc3Vic2NyaXB0aW9uIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBiZWluZyBkZXN0cm95ZWQuXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogUmVzZXQgdGhlIGRyb3Bkb3duIG9wdGlvbnMgdG8gZGVmYXVsdCB3aGVuIHRoZSBkcm9wZG93biBpcyBjbG9zZWQgYW5kIHRoZSBkcm9wZG93biBvcHRpb25zIGFyZSBpcyBlbXB0eS5cclxuICAgKiBAcGFyYW0ge1NlbGVjdE9wZW5lZFN0YXRlfSBldmVudFxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVNb2RpZnlNZWV0aW5nQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25Ecm9wZG93bk9wZW5lZENoYW5nZShldmVudDogU2VsZWN0T3BlbmVkU3RhdGUpOiB2b2lkIHtcclxuICAgIHN3aXRjaCAoZXZlbnQuY29udHJvbE5hbWUpIHtcclxuICAgICAgY2FzZSBGT1JNX0NPTlRST0xTLlRJTUVfWk9ORTpcclxuICAgICAgICB0aGlzLnRpbWV6b25lcyA9XHJcbiAgICAgICAgICAhZXZlbnQub3BlbmVkICYmIHRoaXMudGltZXpvbmVzLmxlbmd0aCA9PT0gMFxyXG4gICAgICAgICAgICA/IHRoaXMuZGVmYXVsdFRpbWVab25lc1xyXG4gICAgICAgICAgICA6IHRoaXMudGltZXpvbmVzO1xyXG4gICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnVwZGF0ZUZvcm1Db250cm9sT3B0aW9ucyhcclxuICAgICAgICAgIEZPUk1fQ09OVFJPTFMuVElNRV9aT05FLFxyXG4gICAgICAgICAgJ2Ryb3Bkb3duT3B0aW9ucycsXHJcbiAgICAgICAgICB0aGlzLnRpbWV6b25lcyxcclxuICAgICAgICAgIHRoaXMuZHluYW1pY0Zvcm1Db21wb25lbnRcclxuICAgICAgICApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEZPUk1fQ09OVFJPTFMuQ09VTlRSWTpcclxuICAgICAgICB0aGlzLmNvdW50cmllcyA9XHJcbiAgICAgICAgICAhZXZlbnQub3BlbmVkICYmIHRoaXMuY291bnRyaWVzLmxlbmd0aCA9PT0gMFxyXG4gICAgICAgICAgICA/IHRoaXMuZGVmYXVsdENvdW50cmllc1xyXG4gICAgICAgICAgICA6IHRoaXMuY291bnRyaWVzO1xyXG4gICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnVwZGF0ZUZvcm1Db250cm9sT3B0aW9ucyhcclxuICAgICAgICAgIEZPUk1fQ09OVFJPTFMuQ09VTlRSWSxcclxuICAgICAgICAgICdkcm9wZG93bk9wdGlvbnMnLFxyXG4gICAgICAgICAgdGhpcy5jb3VudHJpZXMsXHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNGb3JtQ29tcG9uZW50XHJcbiAgICAgICAgKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBGT1JNX0NPTlRST0xTLlJFTEFURURfR1JPVVA6XHJcbiAgICAgICAgdGhpcy5ncm91cHMgPVxyXG4gICAgICAgICAgIWV2ZW50Lm9wZW5lZCAmJiB0aGlzLmdyb3Vwcy5sZW5ndGggPT09IDBcclxuICAgICAgICAgICAgPyB0aGlzLmRlZmF1bHRHcm91cHNcclxuICAgICAgICAgICAgOiB0aGlzLmdyb3VwcztcclxuICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS51cGRhdGVGb3JtQ29udHJvbE9wdGlvbnMoXHJcbiAgICAgICAgICBGT1JNX0NPTlRST0xTLlJFTEFURURfR1JPVVAsXHJcbiAgICAgICAgICAnZHJvcGRvd25PcHRpb25zJyxcclxuICAgICAgICAgIHRoaXMuZ3JvdXBzLFxyXG4gICAgICAgICAgdGhpcy5keW5hbWljRm9ybUNvbXBvbmVudFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIE5hdmlnYXRlIHRvIGFkZCBtZWV0aW5nIHJvdXRlLlxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVPck1vZGlmeUV2ZW50Q29tcG9uZW50XHJcbiAgICovXHJcbiAgbmF2aWdhdGVUb0FkZE1lZXRpbmcoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5yb3V0ZVBhdGhzPy5jcmVhdGVNZWV0aW5nKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLnJvdXRlUGF0aHMuY3JlYXRlTWVldGluZ10sIHtcclxuICAgICAgICBxdWVyeVBhcmFtczogeyBldmVudElkOiB0aGlzLmV2ZW50SWQgfSxcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNyZWF0ZU1vZGlmeUV2ZW50Q2xpY2suZW1pdCh7IGV2ZW50SWQ6IHRoaXMuZXZlbnRJZCB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogRW5hYmxlcyBvciBkaXNhYmxlcyBhZGQgbWVldGluZyBidXR0b24vbGluayBiYXNlZCBvbiBjYW5EaXNhYmxlIHZhbHVlXHJcbiAgICogQHBhcmFtIHtib29sZWFufSBjYW5EaXNhYmxlXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBjYW5EaXNhYmxlQWRkTWVldGluZyhjYW5EaXNhYmxlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzQWRkTWVldGluZ0Rpc2FibGVkID0gY2FuRGlzYWJsZTtcclxuICAgIGlmICh0aGlzLmFkZE1lZXRpbmdCdXR0b24pIHtcclxuICAgICAgdGhpcy5hZGRNZWV0aW5nQnV0dG9uLmRpc2FibGVkID0gY2FuRGlzYWJsZTtcclxuICAgICAgdGhpcy5hZGRNZWV0aW5nQnV0dG9uID0geyAuLi50aGlzLmFkZE1lZXRpbmdCdXR0b24gfTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwiaWVlZXNhLWNyZWF0ZS11cGRhdGUtZXZlbnQtZm9ybS1jb250YWluZXJcIlxyXG4gIFtuZ0NsYXNzXT1cInNlbGVjdGVkRXZlbnRJZCA/ICdpZWVlc2EtZXZlbnQnIDogJydcIlxyXG4+XHJcbiAgPHAgKm5nSWY9XCJzZWxlY3RlZEV2ZW50SWRcIiBjbGFzcz1cImllZWVzYS10aXRsZS1sZy0yNCBwYi0zIG0tMFwiPlxyXG4gICAge3sgc2NyZWVuVGV4dHM/LmxhYmVsPy5ldmVudERldGFpbHMgfX1cclxuICA8L3A+XHJcbiAgPGllZWVzYS12aWV3LWV2ZW50XHJcbiAgICAqbmdJZj1cImlzVmlld09ubHkgJiYgc2VsZWN0ZWRFdmVudERhdGFcIlxyXG4gID48L2llZWVzYS12aWV3LWV2ZW50PlxyXG4gIDxpZWVlc2EtZHluYW1pYy1mb3JtXHJcbiAgICAqbmdJZj1cImNyZWF0ZU9yVXBkYXRlRXZlbnRzRm9ybUdyb3VwICYmICFpc1ZpZXdPbmx5XCJcclxuICAgIGNsYXNzPVwiaWVlZXNhLWNyZWF0ZS11cGRhdGUtZXZlbnQtZm9ybVwiXHJcbiAgICBbbGVmdEJ1dHRvbkxhYmVsXT1cImxlZnRCdXR0b25MYWJlbFwiXHJcbiAgICBbcmlnaHRCdXR0b25MYWJlbF09XCJyaWdodEJ1dHRvbkxhYmVsXCJcclxuICAgIFtpc0xlZ2VuZFZpc2libGVdPVwidHJ1ZVwiXHJcbiAgICBbaXNTdWJtaXRCdXR0b25EaXNhYmxlZF09XCJpc1N1Ym1pdEJ1dHRvbkRpc2FibGVkXCJcclxuICAgIFtjb2xXaWR0aF09XCJjb2xXaWR0aFwiXHJcbiAgICBbYWN0aW9uQnV0dG9uQWxpZ25dPVwiYWN0aW9uQnV0dG9uQWxpZ25cIlxyXG4gICAgW2Zvcm1Hcm91cHNdPVwiY3JlYXRlT3JVcGRhdGVFdmVudHNGb3JtR3JvdXBcIlxyXG4gICAgW2lzTGVmdEJ1dHRvbk5lZWRlZF09XCJ0cnVlXCJcclxuICAgIChmb3JtQ2hlY2tib3hTZWxlY3Rpb24pPVwib25BdHRlbmRlZVR5cGVTZWxlY3Rpb24oJGV2ZW50LCB0cnVlKVwiXHJcbiAgICAoZm9ybUxlZnRCdXR0b25DbGlja2VkKT1cIm9uRm9ybUNhbmNlbCgpXCJcclxuICAgIChmb3JtR3JvdXBzUmVmZXJlbmNlKT1cImdldENyZWF0ZU9yVXBkYXRlRXZlbnRGb3JtR3JvdXBSZWYoJGV2ZW50KVwiXHJcbiAgICAoZm9ybVN1Ym1pdCk9XCJvbkZvcm1TdWJtaXQoJGV2ZW50KVwiXHJcbiAgICAoZm9ybUNoYW5nZSk9XCJvbkZvcm1DaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAoZm9ybVNlbGVjdFNlYXJjaCk9XCJmb3JtU2VsZWN0U2VhcmNoKCRldmVudClcIlxyXG4gICAgKGRyb3Bkb3duT3BlbmVkQ2hhbmdlKT1cIm9uRHJvcGRvd25PcGVuZWRDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgPjwvaWVlZXNhLWR5bmFtaWMtZm9ybT5cclxuXHJcbiAgPHAgY2xhc3M9XCJpZWVlc2EtdGl0bGUtbGctMjQgbWItMCBtdC0zXCI+XHJcbiAgICB7eyBzY3JlZW5UZXh0cz8ubGFiZWw/Lm1lZXRpbmdEZXRhaWxzIH19XHJcbiAgPC9wPlxyXG4gIDxwIGNsYXNzPVwiaWVlZXNhLWJvZHktbWQtMTQgaWVlZXNhLWFkZC1tZWV0aW5ncy10aXRsZVwiICpuZ0lmPVwiIWlzVmlld09ubHlcIj5cclxuICAgIHt7IG1lZXRpbmdEZXRhaWxzVGl0bGUgfX1cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNTZWFyY2hBY3RpdmUgJiYgIWlzVmlld09ubHlcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtZWV0aW5ncz8ubGVuZ3RoICYmIGlzQWRkTWVldGluZ0FsbG93ZWRcIlxyXG4gICAgICAgID5cIjwvbmctY29udGFpbmVyXHJcbiAgICAgID5cclxuICAgICAgPGFcclxuICAgICAgICAqbmdJZj1cIm1lZXRpbmdzPy5sZW5ndGggPT09IDAgJiYgaXNBZGRNZWV0aW5nQWxsb3dlZFwiXHJcbiAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlVG9BZGRNZWV0aW5nKClcIlxyXG4gICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2llZWVzYS1hZGQtbWVldGluZy1saW5rJzogaXNBZGRNZWV0aW5nRGlzYWJsZWQgfVwiXHJcbiAgICAgICAgPnt7IGFkZE1lZXRpbmdzTGluayB9fTwvYVxyXG4gICAgICA+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbWVldGluZ3M/Lmxlbmd0aCAmJiBpc0FkZE1lZXRpbmdBbGxvd2VkXCJcclxuICAgICAgICA+XCI8L25nLWNvbnRhaW5lclxyXG4gICAgICA+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L3A+XHJcbiAgPGllZWVzYS1kYXRhLXRhYmxlXHJcbiAgICAqbmdJZj1cIlxyXG4gICAgICAocGFnaW5hdG9yQ29uZmlnPy50b3RhbFJlY29yZHMgJiYgbWVldGluZ3M/Lmxlbmd0aCkgfHwgaXNTZWFyY2hBY3RpdmVcclxuICAgIFwiXHJcbiAgICBjbGFzcz1cImllZWVzYS1tZWV0aW5nc1wiXHJcbiAgICBbbmdDbGFzc109XCJpc1ZpZXdPbmx5ID8gJ2llZWVzYS12aWV3LW1lZXRpbmdzJyA6ICcnXCJcclxuICAgIFt0YWJsZURhdGFJbmZvXT1cIm1lZXRpbmdzXCJcclxuICAgIFtjb2x1bW5TY2hlbWFJbmZvXT1cImNvbHVtblNjaGVtYVwiXHJcbiAgICBbc2VhcmNoUGxhY2VIb2xkZXJUZXh0XT1cInNjcmVlblRleHRzPy5zZWFyY2hNZWV0aW5nXCJcclxuICAgIFtzZWFyY2hUeXBlXT1cInNlYXJjaFR5cGVcIlxyXG4gICAgKHNlYXJjaGVkVmFsdWUpPVwib25NZWV0aW5nc1NlYXJjaENsaWNrKCRldmVudClcIlxyXG4gICAgW3RhYmxlQWN0aW9uc109XCJtZWV0aW5nQWN0aW9uc1wiXHJcbiAgICBbYWRkQnV0dG9uXT1cImFkZE1lZXRpbmdCdXR0b25cIlxyXG4gICAgW3BhZ2luYXRvckNvbmZpZ109XCJwYWdpbmF0b3JDb25maWdcIlxyXG4gICAgW2xlZ2VuZHNdPVwibWVldGluZ0xlZ2VuZHNcIlxyXG4gICAgKG1lbnVBY3Rpb25DbGljayk9XCJnZXRTZWxlY3RlZFJvd0RhdGEoJGV2ZW50KVwiXHJcbiAgICAoc2VsZWN0QWN0aW9uTWVudSk9XCJoYW5kbGVNZWV0aW5nQWN0aW9ucygkZXZlbnQpXCJcclxuICAgIChwYWdpbmF0aW9uQ2hhbmdlKT1cIm9uTWVldGluZ3NUYWJsZVBhZ2VDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAoc29ydENoYW5nZSk9XCJvblNvcnRNZWV0aW5nKCRldmVudClcIlxyXG4gICAgKHNlbGVjdGVkUm93c1RvRGVsZXRlKT1cIm9wZW5EZWxldGVNZWV0aW5nc0NvbmZpcm1hdGlvbk1vZGFsKCRldmVudClcIlxyXG4gICAgW3NlYXJjaFN1cHBvcnRNZXNzYWdlXT1cInN1cHBvcnRNZXNzYWdlXCJcclxuICAgIFtzZWFyY2hSZXN1bHRNZXNzYWdlXT1cInNlYXJjaFJlc3VsdE1lc3NhZ2VcIlxyXG4gICAgW2NhbkRpc2FibGVDaGVja2JveF09XCJ0cnVlXCJcclxuICAgIChyb3dMaW5rKT1cIm5hdmlnYXRlVG9FZGl0TWVldGluZ1BhZ2UoJGV2ZW50KVwiXHJcbiAgICAoYWRkUm93KT1cIm5hdmlnYXRlVG9BZGRNZWV0aW5nKClcIlxyXG4gID5cclxuICA8L2llZWVzYS1kYXRhLXRhYmxlPlxyXG48L2Rpdj5cclxuIl19
|
|
1285
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW1vZGlmeS1ldmVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldmVudHMtYW5kLW1lZXRpbmdzL3NyYy9saWIvY29tcG9uZW50cy9jcmVhdGUtbW9kaWZ5LWV2ZW50L2NyZWF0ZS1tb2RpZnktZXZlbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXZlbnRzLWFuZC1tZWV0aW5ncy9zcmMvbGliL2NvbXBvbmVudHMvY3JlYXRlLW1vZGlmeS1ldmVudC9jcmVhdGUtbW9kaWZ5LWV2ZW50LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZELE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUtaLGVBQWUsRUFDZixlQUFlLEVBQ2YsMEJBQTBCLEVBRzFCLHdCQUF3QixFQUd4QixVQUFVLEVBQ1Ysb0JBQW9CLEVBR3BCLGtCQUFrQixHQUNuQixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sS0FBSyxXQUFXLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFcEYsT0FBTyxFQUFjLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEQsT0FBTyxFQUNMLFNBQVMsR0FJVixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RCxPQUFPLEVBQUUs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QkFBb0I7d0JBQ3BCLGtCQUFrQjt3QkFDbEIsVUFBVTt3QkFDVixrQkFBa0I7cUJBQ25CLGNBQ1csSUFBSSxpQkFHRCxpQkFBaUIsQ0FBQyxJQUFJO2lRQTRCSixvQkFBb0I7c0JBQXBELFNBQVM7dUJBQUMsb0JBQW9CO2dCQUNyQixVQUFVO3NCQUFuQixNQUFNO2dCQThDRSxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFFSSxzQkFBc0I7c0JBQS9CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7XHJcbiAgQWxpZ25UeXBlLFxyXG4gIENhbGVuZGFyVHlwZSxcclxuICBDaGVja2JveE9wdGlvbixcclxuICBGb3JtR3JpZCxcclxuICBQYWdpbmF0b3JDb25maWcsXHJcbiAgU2VsZWN0T3B0aW9uLFxyXG4gIEZvcm1Db250cm9sVHlwZSxcclxuICBUYWJsZUNvbHVtblR5cGUsXHJcbiAgTW9kYWxDb25maXJtYXRpb25Db21wb25lbnQsXHJcbiAgTWVudSxcclxuICBDb25maXJtYXRpb25Nb2RhbERhdGEsXHJcbiAgVGFibGVDb2x1bW5Tb3J0RGlyZWN0aW9uLFxyXG4gIFRhYmxlQ29sdW1uU2NoZW1hLFxyXG4gIExlZ2VuZCxcclxuICBTZWFyY2hUeXBlLFxyXG4gIER5bmFtaWNGb3JtQ29tcG9uZW50LFxyXG4gIEZvcm1Nb2RlbCxcclxuICBTZWxlY3RPcGVuZWRTdGF0ZSxcclxuICBEYXRhVGFibGVDb21wb25lbnQsXHJcbn0gZnJvbSAnQGllZWVzYS1ucG0vcHJlc2VudGF0aW9uJztcclxuaW1wb3J0ICogYXMgc2NyZWVuVGV4dHMgZnJvbSAnLi4vLi4vYXNzZXRzL2NvbnN0YW50cy5qc29uJztcclxuaW1wb3J0IHsgRXZlbnRzQW5kTWVldGluZ3NWYWxpZGF0aW9uUGF0dGVybnMgfSBmcm9tICcuLi8uLi9hc3NldHMvZm9ybS12YWxpZGF0aW9ucyc7XHJcbmltcG9ydCB7IEV2ZW50c0FuZE1lZXRpbmdzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2V2ZW50cy1hbmQtbWVldGluZ3Muc2VydmljZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1xyXG4gIEFsZXJ0VHlwZSxcclxuICBBbGVydHNTZXJ2aWNlLFxyXG4gIENvdW50cnlBbmRUaW1lem9uZVNlcnZpY2UsXHJcbiAgRGVhY3RpdmF0ZUNvbXBvbmVudCxcclxufSBmcm9tICdAaWVlZXNhLW5wbS91dGlsaXR5JztcclxuaW1wb3J0IHsgRm9ybVN0YXR1cyB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLXN0YXR1cy5tb2RlbCc7XHJcbmltcG9ydCB7IERhdGVGb3JtYXRzIH0gZnJvbSAnLi4vLi4vYXNzZXRzL2RhdGUtZm9ybWF0cyc7XHJcbmltcG9ydCB7XHJcbiAgR2V0R3JvdXBSZXNwb25zZSxcclxuICBHcm91cEluZm8sXHJcbiAgRXZlbnRzQW5kTWVldGluZ1JvdXRlQ29uZmlnLFxyXG4gIEZvcm1VdGlsaXR5U2VydmljZSxcclxufSBmcm9tICdAaWVlZXNhLW5wbS9zaGFyZWQnO1xyXG5pbXBvcnQgeyBDcmVhdGVPckVkaXRFdmVudFBheWxvYWQgfSBmcm9tICcuLi8uLi9tb2RlbHMvY3JlYXRlLWV2ZW50Lm1vZGVsJztcclxuaW1wb3J0IHsgQXR0ZW5kZWVUeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2F0dGVuZGVlLXR5cGUubW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIEdldE1lZXRpbmdzQnlFdmVudElkUGF5bG9hZCxcclxuICBNZWV0aW5nLFxyXG4gIE1lZXRpbmdEZXRhaWxzLFxyXG59IGZyb20gJy4uLy4uL21vZGVscy9tZWV0aW5ncy11bmRlci1ldmVudHMubW9kZWwnO1xyXG5pbXBvcnQgeyBFdmVudEFuZE1lZXRpbmdGdW5jdGlvblR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvZXZlbnQtbWVldGluZy1mdW5jdGlvbi10eXBlcy5tb2RlbCc7XHJcbmltcG9ydCB7IEV2ZW50RGV0YWlsc0NvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvdmlldy1ldmVudC5tb2RlbCc7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgbW9tZW50XyBmcm9tICdtb21lbnQnO1xyXG5pbXBvcnQgeyBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBQZXJtaXNzaW9uVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9wZXJtaXNzaW9uLXR5cGUubW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIE1lZXRpbmdBY3Rpb24sXHJcbiAgTWVldGluZ1ZpZXcsXHJcbn0gZnJvbSAnLi4vLi4vbW9kZWxzL2V2ZW50LW9yLW1lZXRpbmctbWVudS1hY3Rpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBSb3V0ZXIsIFJvdXRlckxpbmssIFVybFRyZWUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBGT1JNX0NPTlRST0xTIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Zvcm0tY29udHJvbHMubW9kZWwnO1xyXG5pbXBvcnQgeyBTb3J0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XHJcbmltcG9ydCB7IFVzZXJQZXJtaXNzaW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL21lZXRpbmctcGVybWlzc2lvbnMubW9kZWwnO1xyXG5pbXBvcnQgeyBWaWV3RXZlbnRDb21wb25lbnQgfSBmcm9tICcuLi92aWV3LWV2ZW50L3ZpZXctZXZlbnQuY29tcG9uZW50JztcclxuY29uc3QgbW9tZW50ID0gbW9tZW50XztcclxuY29uc3QgQ09MVU1OX0RFRiA9IHtcclxuICBtZWV0aW5nVGl0bGU6ICdtZWV0aW5nVGl0bGUnLFxyXG4gIG1lZXRpbmdTdERhdGU6ICdtZWV0aW5nU3REYXRlJyxcclxuICBlbmREYXRlQW5kVGltZTogJ2VuZC1kYXRlLXRpbWUnLFxyXG4gIHRpbWVab25lOiAndGltZS16b25lJyxcclxuICBncm91cDogJ3JlbGF0ZWQtZ3JvdXAnLFxyXG4gIGxvY2F0aW9uOiAnbG9jYXRpb24nLFxyXG59O1xyXG5cclxuLyoqXHJcbiAqIEltcGxlbWVudGF0aW9uIG9mIGV2ZW50IGNyZWF0aW9uIG9yIG1vZGlmaWNhdGlvbi5cclxuICogQGV4cG9ydFxyXG4gKiBAY2xhc3MgQ3JlYXRlT3JNb2RpZnlFdmVudENvbXBvbmVudFxyXG4gKiBAaW1wbGVtZW50cyB7T25Jbml0fVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZWVlc2EtY3JlYXRlLW1vZGlmeS1ldmVudCcsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRHluYW1pY0Zvcm1Db21wb25lbnQsXHJcbiAgICBEYXRhVGFibGVDb21wb25lbnQsXHJcbiAgICBSb3V0ZXJMaW5rLFxyXG4gICAgVmlld0V2ZW50Q29tcG9uZW50LFxyXG4gIF0sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY3JlYXRlLW1vZGlmeS1ldmVudC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY3JlYXRlLW1vZGlmeS1ldmVudC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDcmVhdGVPck1vZGlmeUV2ZW50Q29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBEZWFjdGl2YXRlQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveVxyXG57XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBkaWFsb2dSZWY6IGFueTtcclxuICBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBjb25zdGFudHM6IGFueSA9IHNjcmVlblRleHRzO1xyXG4gIGNoYXJzTGltaXQgPSB0aGlzLmNvbnN0YW50cz8uY2hhcmFjdGVyTGltaXRzO1xyXG4gIHNjcmVlblRleHRzID0gdGhpcy5jb25zdGFudHM/LmNyZWF0ZU9yTW9kaWZ5RXZlbnQ7XHJcbiAgYWRkTWVldGluZyA9IHRoaXMuc2NyZWVuVGV4dHM/LmFkZE1lZXRpbmc7XHJcbiAgY29sdW1uSGVhZGluZyA9IHRoaXMuc2NyZWVuVGV4dHM/LmNvbHVtblNjaGVtYT8uaGVhZGluZztcclxuICBsZWZ0QnV0dG9uTGFiZWwgPSB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8ubGVmdEJ1dHRvbkxhYmVsO1xyXG4gIHJpZ2h0QnV0dG9uTGFiZWwgPSB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8ucmlnaHRCdXR0b25MYWJlbDtcclxuICBtZWV0aW5nRGV0YWlsc1RpdGxlID0gdGhpcy5hZGRNZWV0aW5nPy5maXJzdExhYmVsO1xyXG4gIGFkZE1lZXRpbmdzTGluayA9IHRoaXMuYWRkTWVldGluZz8uYWRkTWVldGluZ3NMaW5rO1xyXG4gIGlzU3VibWl0QnV0dG9uRGlzYWJsZWQgPSB0cnVlO1xyXG4gIGNvbFdpZHRoOiBGb3JtR3JpZCA9IHsgeHM6IDEyLCB4bDogMTIsIHNtOiAxMiwgbWQ6IDEyLCBsZzogMTIgfTtcclxuICBtZWV0aW5nczogTWVldGluZ1tdID0gW107XHJcbiAgY3JlYXRlT3JVcGRhdGVFdmVudHNGb3JtR3JvdXAhOiBGb3JtTW9kZWw7XHJcbiAgYWN0aW9uQnV0dG9uQWxpZ24gPSBBbGlnblR5cGUuTEVGVDtcclxuICBldmVudFR5cGVzOiBTZWxlY3RPcHRpb25bXSA9IFtdO1xyXG4gIHNlbGVjdGVkQXR0ZW5kZWVUeXBlczogc3RyaW5nW10gPSBbXTtcclxuICBpc0NyZWF0ZU9yVXBkYXRlRXZlbnRGb3JtSW52YWxpZCA9IGZhbHNlO1xyXG4gIGNyZWF0ZU9yVXBkYXRlRXZlbnRGb3JtR3JvdXBSZWYhOiBGb3JtR3JvdXBbXTtcclxuICBhdHRlbmRlZXNUeXBlczogQ2hlY2tib3hPcHRpb25bXSA9IHRoaXMuY29uc3RhbnRzPy5hdHRlbmRlZXNUeXBlO1xyXG4gIEBWaWV3Q2hpbGQoRHluYW1pY0Zvcm1Db21wb25lbnQpIGR5bmFtaWNGb3JtQ29tcG9uZW50ITogRHluYW1pY0Zvcm1Db21wb25lbnQ7XHJcbiAgQE91dHB1dCgpIGZvcm1DYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgZ3JvdXBzOiBTZWxlY3RPcHRpb25bXSA9IFtdO1xyXG4gIGNvdW50cmllcyE6IFNlbGVjdE9wdGlvbltdO1xyXG4gIHNlbGVjdGVkRXZlbnRJZCE6IHN0cmluZztcclxuICBldmVudEFuZE1lZXRpbmdGdW5jdGlvblR5cGUgPSBFdmVudEFuZE1lZXRpbmdGdW5jdGlvblR5cGU7XHJcbiAgc2VsZWN0ZWRFdmVudERhdGEhOiBFdmVudERldGFpbHNDb25maWd1cmF0aW9uO1xyXG4gIHRpbWV6b25lcyE6IFNlbGVjdE9wdGlvbltdO1xyXG4gIGNvbHVtblNjaGVtYSE6IFRhYmxlQ29sdW1uU2NoZW1hW107XHJcbiAgcGFnaW5hdG9yQ29uZmlnOiBQYWdpbmF0b3JDb25maWcgPSB7XHJcbiAgICByZWNvcmRzUGVyUGFnZTogdGhpcy5zY3JlZW5UZXh0cz8ucGFnZVNpemVPcHRpb25zPy5bMV0sXHJcbiAgICBwYWdlU2l6ZU9wdGlvbnM6IHRoaXMuc2NyZWVuVGV4dHM/LnBhZ2VTaXplT3B0aW9ucyxcclxuICAgIHRvdGFsUmVjb3JkczogMCxcclxuICB9O1xyXG4gIGRlZmF1bHRUaW1lWm9uZXMhOiBTZWxlY3RPcHRpb25bXTtcclxuICBkZWZhdWx0Q291bnRyaWVzITogU2VsZWN0T3B0aW9uW107XHJcbiAgZGVmYXVsdEdyb3VwczogU2VsZWN0T3B0aW9uW10gPSBbXTtcclxuICBtZWV0aW5nQWN0aW9ucyA9IHtcclxuICAgIGlzQWRkTmVlZGVkOiB0cnVlLFxyXG4gICAgaXNEZWxldGVOZWVkZWQ6IHRydWUsXHJcbiAgICBpc1NlYXJjaE5lZWRlZDogdHJ1ZSxcclxuICAgIGlzRmlsdGVyTmVlZGVkOiBmYWxzZSxcclxuICAgIGlzRWRpdE5lZWRlZDogZmFsc2UsXHJcbiAgICBpc1BhZ2luYXRpb25OZWVkZWQ6IHRydWUsXHJcbiAgfTtcclxuICBpc0V2ZW50Q3JlYXRlZCA9IGZhbHNlO1xyXG4gIHNlbGVjdGVkTWVldGluZ0lkczogc3RyaW5nW10gPSBbXTtcclxuICBzZXJ2ZXJDdXJyZW50RGF0ZSE6IHN0cmluZztcclxuICBpc0FkZE1lZXRpbmdEaXNhYmxlZCA9IGZhbHNlO1xyXG4gIHRyaW1tZWRTZWFyY2hUZXJtID0gJyc7XHJcbiAgc2VhcmNoUmVzdWx0TWVzc2FnZSE6IHN0cmluZztcclxuICBpc1NlYXJjaEFjdGl2ZSA9IGZhbHNlO1xyXG4gIHNlYXJjaFR5cGU6IFNlYXJjaFR5cGUgPSBTZWFyY2hUeXBlLk9OX0NMSUNLO1xyXG4gIHN1cHBvcnRNZXNzYWdlITogc3RyaW5nO1xyXG4gIGRlZmF1bHRTb3J0ZWRDb2x1bW4gPSAnbWVldGluZ1N0RGF0ZSc7XHJcbiAgZGVmYXVsdENvbHVtblNvcnREaXJlY3Rpb24gPSBmYWxzZTtcclxuICBhZGRNZWV0aW5nQnV0dG9uID0gdGhpcy5zY3JlZW5UZXh0cz8uYnV0dG9ucz8uWzBdO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgc2VsZWN0ZWRNZWV0aW5nOiBhbnk7XHJcbiAgaXNBZGRNZWV0aW5nQWxsb3dlZCA9IGZhbHNlO1xyXG4gIGNvbmZpcm1hdGlvbk1vZGFsVGV4dHMgPVxyXG4gICAgdGhpcy5jb25zdGFudHM/LmNyZWF0ZU1vZGlmeUV2ZW50T3JNZWV0aW5nXHJcbiAgICAgID8udW5zYXZlZEZvcm1DaGFuZ2VzQ29uZmlybWF0aW9uRGlhbG9nT3B0aW9ucztcclxuICBjb25maXJtYXRpb25Nb2RhbENvbmZpZyE6IENvbmZpcm1hdGlvbk1vZGFsRGF0YTtcclxuICBtZWV0aW5nTGVnZW5kczogTGVnZW5kW10gPSB0aGlzLmNvbnN0YW50cz8uZXZlbnRPck1lZXRpbmdMZWdlbmRzO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgcHJldmlvdXNGb3JtVmFsdWVzOiBhbnk7XHJcbiAgQElucHV0KCkgaXNWaWV3T25seSE6IHN0cmluZyB8IGJvb2xlYW47XHJcbiAgQElucHV0KCkgZXZlbnRJZCE6IHN0cmluZztcclxuICBASW5wdXQoKSByb3V0ZVBhdGhzITogRXZlbnRzQW5kTWVldGluZ1JvdXRlQ29uZmlnO1xyXG4gIEBJbnB1dCgpIGFwaUJhc2VVUkwhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdXNlclBlcm1pc3Npb25zITogVXNlclBlcm1pc3Npb25bXTtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIEBPdXRwdXQoKSBjcmVhdGVNb2RpZnlFdmVudENsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9XHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBldmVudHNBbmRNZWV0aW5nc1NlcnZpY2U6IEV2ZW50c0FuZE1lZXRpbmdzU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHVibGljIGFsZXJ0U2VydmljZTogQWxlcnRzU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBjb3VudHJ5QW5kVGltZXpvbmVTZXJ2aWNlOiBDb3VudHJ5QW5kVGltZXpvbmVTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgZm9ybVV0aWxpdHlTZXJ2aWNlOiBGb3JtVXRpbGl0eVNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuY291bnRyaWVzID0gdGhpcy5kZWZhdWx0Q291bnRyaWVzID1cclxuICAgICAgdGhpcy5jb3VudHJ5QW5kVGltZXpvbmVTZXJ2aWNlLmdldEFsbENvdW50cmllcygpO1xyXG4gICAgdGhpcy50aW1lem9uZXMgPSB0aGlzLmRlZmF1bHRUaW1lWm9uZXMgPVxyXG4gICAgICB0aGlzLmNvdW50cnlBbmRUaW1lem9uZVNlcnZpY2UuZ2V0VVRDVGltZXpvbmVPcHRpb25zKCk7XHJcbiAgICB0aGlzLmF0dGVuZGVlc1R5cGVzLm1hcCgoYXR0ZW5kZWUpID0+IHtcclxuICAgICAgYXR0ZW5kZWUuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICBhdHRlbmRlZS5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFRyaWdnZXJzIGNvbmZpcm1hdGlvbiBtb2RhbCB3aGlsZSBsZWF2aW5nIHVuc2F2ZWQgZm9ybS5cclxuICAgKiBAcmV0dXJuIHsoYm9vbGVhblxyXG4gICAqICAgICB8IFVybFRyZWVcclxuICAgKiAgICAgfCBPYnNlcnZhYmxlPGJvb2xlYW4gfCBVcmxUcmVlPlxyXG4gICAqICAgICB8IFByb21pc2U8Ym9vbGVhbiB8IFVybFRyZWU+KX1cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlT3JNb2RpZnlFdmVudENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGNhbkRlYWN0aXZhdGUoKTpcclxuICAgIHwgVXJsVHJlZVxyXG4gICAgfCBPYnNlcnZhYmxlPGJvb2xlYW4gfCBVcmxUcmVlPlxyXG4gICAgfCBQcm9taXNlPGJvb2xlYW4gfCBVcmxUcmVlPlxyXG4gICAgfCBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZT8uZ2V0RXZlbnRPck1lZXRpbmdGb3JtQ2hhbmdlU3RhdHVzKCkpIHtcclxuICAgICAgdGhpcy5kaWFsb2dSZWYgPSB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZT8ub3BlbkNvbmZpcm1hdGlvbk1vZGFsKFxyXG4gICAgICAgIHRoaXMuY29uZmlybWF0aW9uTW9kYWxDb25maWdcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuIHRoaXMuZGlhbG9nUmVmPy5hZnRlckNsb3NlZCgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemVzIGNvbHVtbiBzY2hlbWEsIGdyb3VwcywgbWVldGluZ3MgY3JlYXRlZCB1bmRlciBldmVudHMsIGV2ZW50IHR5cGVzIGFuZCBjcmVhdGVzIGZvcm0gZ3JvdXAuXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNWaWV3T25seSA9IHRoaXMuaXNWaWV3T25seSA9PT0gJ3RydWUnO1xyXG4gICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2U/LnNldEFwcENvbmZpZyhcclxuICAgICAgdGhpcy5hcGlCYXNlVVJMLFxyXG4gICAgICB0aGlzLnVzZXJQZXJtaXNzaW9uc1xyXG4gICAgKTtcclxuICAgIGlmICh0aGlzLmV2ZW50SWQpIHtcclxuICAgICAgY29uc3QgY2hlY2tFdmVudCA9IHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmdldEV2ZW50RXhpc3RlbmNlKFxyXG4gICAgICAgIHRoaXMuZXZlbnRJZFxyXG4gICAgICApO1xyXG4gICAgICBjaGVja0V2ZW50XHJcbiAgICAgICAgLnRoZW4oKGV4aXN0czogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgICAgaWYgKCFleGlzdHMpIHtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMucm91dGVQYXRocy5ldmVudHNBbmRNZWV0aW5nc10pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIGV4aXN0cztcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcclxuICAgICAgICAgIGlmIChlcnJvcj8uc3RhdHVzID09PSA0MDQpIHtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMucm91dGVQYXRocy5ldmVudHNBbmRNZWV0aW5nc10pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2Uuc2V0U3RhbmRhbG9uZU1lZXRpbmdTdGF0dXMoIXRoaXMuZXZlbnRJZCk7XHJcbiAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5zZXRTZWxlY3RlZEV2ZW50SWQodGhpcy5ldmVudElkID8/ICcnKTtcclxuICAgIHRoaXMubWVldGluZ0FjdGlvbnMuaXNEZWxldGVOZWVkZWQgPVxyXG4gICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS52YWxpZGF0ZUFjY2VzcyhcclxuICAgICAgICBQZXJtaXNzaW9uVHlwZS5ERUxFVEVfTUVFVElOR1xyXG4gICAgICApICYmICF0aGlzLmlzVmlld09ubHk7XHJcbiAgICB0aGlzLmNvbmZpcm1hdGlvbk1vZGFsQ29uZmlnID0ge1xyXG4gICAgICBsZWZ0QnV0dG9uTGFiZWw6IHRoaXMuY29uZmlybWF0aW9uTW9kYWxUZXh0cz8ubGVmdEJ1dHRvbkxhYmVsLFxyXG4gICAgICByaWdodEJ1dHRvbkxhYmVsOiB0aGlzLmNvbmZpcm1hdGlvbk1vZGFsVGV4dHM/LnJpZ2h0QnV0dG9uTGFiZWwsXHJcbiAgICAgIHByb21wdE1lc3NhZ2U6IHRoaXMuY29uZmlybWF0aW9uTW9kYWxUZXh0cz8ucHJvbXB0TWVzc2FnZSxcclxuICAgICAgYWN0aW9uQnV0dG9uQWxpZ246IEFsaWduVHlwZS5NSURETEUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2U/LmNhbkNsb3NlQWRkTWVldGluZ01vZGFsJD8ubmV4dChmYWxzZSk7XHJcbiAgICB0aGlzLmluaXRpYWxpemVDb2x1bW5TY2hlbWEoKTtcclxuICAgIGlmICh0aGlzLmlzVmlld09ubHkpIHtcclxuICAgICAgdGhpcy5nZXRHcm91cHMoZmFsc2UpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5nZXRHcm91cHMoKTtcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0RXZlbnRUeXBlcygpO1xyXG4gICAgdGhpcy5zZWxlY3RlZEV2ZW50SWQgPSB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5nZXRTZWxlY3RlZEV2ZW50SWQoKTtcclxuICAgIHRoaXMuc3VwcG9ydE1lc3NhZ2UgPSB0aGlzLnNjcmVlblRleHRzPy5zdXBwb3J0TWVzc2FnZTtcclxuICAgIHRoaXMuY3JlYXRlc0V2ZW50Rm9ybUdyb3VwKCk7XHJcbiAgICBpZiAodGhpcy5ldmVudElkKSB7XHJcbiAgICAgIHRoaXMuZ2V0TWVldGluZ3NCeUV2ZW50SWQoe1xyXG4gICAgICAgIHBheWxvYWQ6IHtcclxuICAgICAgICAgIGV2ZW50SWQ6IHRoaXMuZXZlbnRJZCxcclxuICAgICAgICAgIHNvcnRDb2x1bW46IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5tZWV0aW5nU3REYXRlLFxyXG4gICAgICAgICAgYXNjZW5kaW5nT3JkZXI6IGZhbHNlLFxyXG4gICAgICAgICAgcGFnZTogMSxcclxuICAgICAgICAgIHNpemU6IHRoaXMucGFnaW5hdG9yQ29uZmlnPy5yZWNvcmRzUGVyUGFnZSxcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy52aWV3RXZlbnREZXRhaWxzKHRoaXMuZXZlbnRJZCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmlzQWRkTWVldGluZ0FsbG93ZWQgPSB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZT8udmFsaWRhdGVBY2Nlc3MoXHJcbiAgICAgIFBlcm1pc3Npb25UeXBlLkNSRUFURV9NRUVUSU5HXHJcbiAgICApO1xyXG4gICAgdGhpcy5tZWV0aW5nQWN0aW9ucy5pc0FkZE5lZWRlZCA9XHJcbiAgICAgIHRoaXMuaXNBZGRNZWV0aW5nQWxsb3dlZCAmJiAhdGhpcy5pc1ZpZXdPbmx5O1xyXG4gIH1cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplcyB0YWJsZSBjb2x1bW4gc2NoZW1hIHRvIGRpc3BsYXkgdGhlIG1lZXRpbmcgYW5kIGl0IGRldGFpbHMgaW4gdGFidWxhciB2aWV3LlxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVPck1vZGlmeUV2ZW50Q29tcG9uZW50XHJcbiAgICovXHJcbiAgaW5pdGlhbGl6ZUNvbHVtblNjaGVtYSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY29sdW1uU2NoZW1hID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IDEsXHJcbiAgICAgICAgY29sdW1uRGVmOiBUYWJsZUNvbHVtblR5cGUuU0VMRUNULFxyXG4gICAgICAgIGhlYWRpbmc6ICcnLFxyXG4gICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5TRUxFQ1QsXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT4gYCR7ZWxlbWVudC5zZWxlY3R9YCxcclxuICAgICAgICBpc1N0aWNreUNvbHVtbjogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiAyLFxyXG4gICAgICAgIGNvbHVtbkRlZjogQ09MVU1OX0RFRj8ubWVldGluZ1RpdGxlLFxyXG4gICAgICAgIGhlYWRpbmc6IHRoaXMuY29sdW1uSGVhZGluZz8ubmFtZSxcclxuICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuTElOSyxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PiBgJHtlbGVtZW50Lm1lZXRpbmdUaXRsZX1gLFxyXG4gICAgICAgIGlzU3RpY2t5Q29sdW1uOiB0cnVlLFxyXG4gICAgICAgIGlzU29ydGFibGVDb2x1bW46IHRydWUsXHJcbiAgICAgICAgaXNDb250ZW50VW5kZXJMaW5rOiB0cnVlLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IDMsXHJcbiAgICAgICAgY29sdW1uRGVmOiBDT0xVTU5fREVGPy5tZWV0aW5nU3REYXRlLFxyXG4gICAgICAgIGhlYWRpbmc6IHRoaXMuY29sdW1uSGVhZGluZz8uc3RhcnREYXRlQW5kVGltZSxcclxuICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuVEVYVCxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PlxyXG4gICAgICAgICAgYCR7bW9tZW50KGVsZW1lbnQubWVldGluZ1N0RGF0ZSkuZm9ybWF0KFxyXG4gICAgICAgICAgICBEYXRlRm9ybWF0cy5kaXNwbGF5Rm9ybWF0XHJcbiAgICAgICAgICApfTxicj4ke21vbWVudChlbGVtZW50Lm1lZXRpbmdTdERhdGUpLmZvcm1hdChcclxuICAgICAgICAgICAgRGF0ZUZvcm1hdHMudGltZUZvcm1hdFxyXG4gICAgICAgICAgKX1gLFxyXG4gICAgICAgIGlzSFRNTENlbGxEYXRhOiB0cnVlLFxyXG4gICAgICAgIGlzU29ydGFibGVDb2x1bW46IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogNCxcclxuICAgICAgICBjb2x1bW5EZWY6IENPTFVNTl9ERUY/LmVuZERhdGVBbmRUaW1lLFxyXG4gICAgICAgIGhlYWRpbmc6IHRoaXMuY29sdW1uSGVhZGluZz8uZW5kRGF0ZUFuZFRpbWUsXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLlRFWFQsXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT5cclxuICAgICAgICAgIGAke21vbWVudChlbGVtZW50Lm1lZXRpbmdFZERhdGUpLmZvcm1hdChcclxuICAgICAgICAgICAgRGF0ZUZvcm1hdHMuZGlzcGxheUZvcm1hdFxyXG4gICAgICAgICAgKX08YnI+JHttb21lbnQoZWxlbWVudC5tZWV0aW5nRWREYXRlKS5mb3JtYXQoXHJcbiAgICAgICAgICAgIERhdGVGb3JtYXRzLnRpbWVGb3JtYXRcclxuICAgICAgICAgICl9YCxcclxuICAgICAgICBpc0hUTUxDZWxsRGF0YTogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiA1LFxyXG4gICAgICAgIGNvbHVtbkRlZjogQ09MVU1OX0RFRj8uZ3JvdXAsXHJcbiAgICAgICAgaGVhZGluZzogdGhpcy5jb2x1bW5IZWFkaW5nPy5ncm91cCxcclxuICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuVEVYVCxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PiBgJHtlbGVtZW50Lmdyb3VwTmFtZX1gLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IDYsXHJcbiAgICAgICAgY29sdW1uRGVmOiBDT0xVTU5fREVGPy5sb2NhdGlvbixcclxuICAgICAgICBoZWFkaW5nOiB0aGlzLmNvbHVtbkhlYWRpbmc/LmxvY2F0aW9uLFxyXG4gICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5URVhULFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgY2VsbERhdGE6IChlbGVtZW50OiBhbnkpID0+IGAke2VsZW1lbnQubWVldGluZ0xvY2F0aW9ufWAsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogNyxcclxuICAgICAgICBjb2x1bW5EZWY6IFRhYmxlQ29sdW1uVHlwZS5BQ1RJT05TLFxyXG4gICAgICAgIGhlYWRpbmc6IHRoaXMuY29sdW1uSGVhZGluZz8uYWN0aW9uLFxyXG4gICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5BQ1RJT05TLFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgY2VsbERhdGE6IChlbGVtZW50OiBhbnkpID0+IGAke2VsZW1lbnQuYWN0aW9ufWAsXHJcbiAgICAgICAgaXNTdGlja3lFbmRDb2x1bW46IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICBdO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBDcmVhdGVzIHRoZSBmb3JtIGdyb3VwXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBjcmVhdGVzRXZlbnRGb3JtR3JvdXAoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNyZWF0ZU9yVXBkYXRlRXZlbnRzRm9ybUdyb3VwID0ge1xyXG4gICAgICBmb3JtR3JvdXA6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBsZWdlbmQ6IHRoaXMuc2NyZWVuVGV4dHM/LmxlZ2VuZD8uYmFzaWNEZXRhaWxzLFxyXG4gICAgICAgICAgY29udHJvbHM6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZS5TRUxFQ1QsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5yZWxhdGVkR3JvdXAgKyAnKicsXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdyZWxhdGVkR3JvdXAnLFxyXG4gICAgICAgICAgICAgIGRyb3Bkb3duT3B0aW9uczogdGhpcy5ncm91cHMsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbjogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnNjcmVlblRleHRzPy5wbGFjZWhvbGRlcj8ucmVsYXRlZEdyb3VwLFxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkRXJyb3JNZXNzYWdlOiB0aGlzLnNjcmVlblRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5yZWxhdGVkR3JvdXAsXHJcbiAgICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LnJlbGF0ZWRHcm91cCxcclxuICAgICAgICAgICAgICBpc1NlYXJjaDogdHJ1ZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZS5URVhUX0FSRUEsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5ldmVudE5hbWUgKyAnKicsXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdldmVudE5hbWUnLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb246IFtcclxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oXHJcbiAgICAgICAgICAgICAgICAgIEV2ZW50c0FuZE1lZXRpbmdzVmFsaWRhdGlvblBhdHRlcm5zLm1lZXRpbmdPckV2ZW50TmFtZVxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKHRoaXMuY2hhcnNMaW1pdC5saW1pdFRvMTUwKSxcclxuICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgIG1heENoYXJDb3VudDogdGhpcy5jaGFyc0xpbWl0LmxpbWl0VG8xNTAsXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMuc2NyZWVuVGV4dHM/LnBsYWNlaG9sZGVyPy5ldmVudE5hbWUsXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWRFcnJvck1lc3NhZ2U6IHRoaXMuc2NyZWVuVGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICBwYXR0ZXJuRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8ubWVzc2FnZT8uZXJyb3I/LnBhdHRlcm4/LmV2ZW50TmFtZSxcclxuICAgICAgICAgICAgICBtYXhFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcmVlblRleHRzPy5tZXNzYWdlPy5lcnJvcj8ubGltaXQ/LmV2ZW50TmFtZU1heENoYXJzLFxyXG4gICAgICAgICAgICAgIGlzUmVhZG9ubHk6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIGFyaWFNdWx0aWxpbmU6IHRydWUsXHJcbiAgICAgICAgICAgICAgaXNSZXNpemU6IHRydWUsXHJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5ldmVudE5hbWUsXHJcbiAgICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LmV2ZW50TmFtZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZS5TRUxFQ1QsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5ldmVudFR5cGUgKyAnKicsXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdldmVudFR5cGUnLFxyXG4gICAgICAgICAgICAgIGRyb3Bkb3duT3B0aW9uczogdGhpcy5ldmVudFR5cGVzLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb246IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy5zY3JlZW5UZXh0cz8ucGxhY2Vob2xkZXI/LmV2ZW50VHlwZSxcclxuICAgICAgICAgICAgICBzdXBwb3J0TWVzc2FnZTogdGhpcy5zY3JlZW5UZXh0cz8uc3VwcG9ydFRleHQ/LmV2ZW50VHlwZSxcclxuICAgICAgICAgICAgICByZXF1aXJlZEVycm9yTWVzc2FnZTogdGhpcy5zY3JlZW5UZXh0cz8ubWVzc2FnZT8uZXJyb3I/LnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmFyaWFMYWJlbD8uZXZlbnRUeXBlLFxyXG4gICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkPy5ldmVudFR5cGUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGVnZW5kOiB0aGlzLnNjcmVlblRleHRzPy5sZWdlbmQ/LmRhdGVBbmRUaW1lLFxyXG4gICAgICAgICAgY29udHJvbHM6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZS5EQVRFLFxyXG4gICAgICAgICAgICAgIGRhdGVQaWNrZXI6IHtcclxuICAgICAgICAgICAgICAgIGNhbGVuZGFyVHlwZTogQ2FsZW5kYXJUeXBlLlNJTkdMRV9EQVRFX1NFTEVDVElPTixcclxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uc3RhcnREYXRlICsgJyonLFxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXJMYWJlbDogdGhpcy5zY3JlZW5UZXh0cz8ucGxhY2Vob2xkZXI/LmRhdGUsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ3N0YXJ0RGF0ZScsXHJcbiAgICAgICAgICAgICAgaXNMYWJlbEFsaWduZWRMZWZ0OiBmYWxzZSxcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWRFcnJvck1lc3NhZ2U6IHRoaXMuc2NyZWVuVGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5hcmlhTGFiZWw/LnN0YXJ0RGF0ZSxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8uc3RhcnREYXRlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLkRBVEUsXHJcbiAgICAgICAgICAgICAgZGF0ZVBpY2tlcjoge1xyXG4gICAgICAgICAgICAgICAgY2FsZW5kYXJUeXBlOiBDYWxlbmRhclR5cGUuU0lOR0xFX0RBVEVfU0VMRUNUSU9OLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5lbmREYXRlICsgJyonLFxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXJMYWJlbDogdGhpcy5zY3JlZW5UZXh0cz8ucGxhY2Vob2xkZXI/LmRhdGUsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ2VuZERhdGUnLFxyXG4gICAgICAgICAgICAgIGlzTGFiZWxBbGlnbmVkTGVmdDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbjogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgICAgIG1pbkVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5pbnZhbGlkRGF0VGltZUVycm9yTWVzc2FnZSxcclxuICAgICAgICAgICAgICByZXF1aXJlZEVycm9yTWVzc2FnZTogdGhpcy5zY3JlZW5UZXh0cz8ubWVzc2FnZT8uZXJyb3I/LnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmFyaWFMYWJlbD8uZW5kRGF0ZSxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8uZW5kRGF0ZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZS5TRUxFQ1QsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy50aW1lWm9uZSArICcqJyxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ3RpbWVab25lJyxcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMuc2NyZWVuVGV4dHM/LnBsYWNlaG9sZGVyPy50aW1lWm9uZSxcclxuICAgICAgICAgICAgICByZXF1aXJlZEVycm9yTWVzc2FnZTogdGhpcy5zY3JlZW5UZXh0cz8ubWVzc2FnZT8uZXJyb3I/LnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmFyaWFMYWJlbD8udGltZVpvbmUsXHJcbiAgICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LnRpbWVab25lLFxyXG4gICAgICAgICAgICAgIGRyb3Bkb3duT3B0aW9uczogdGhpcy50aW1lem9uZXMsXHJcbiAgICAgICAgICAgICAgaXNTZWFyY2g6IHRydWUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGVnZW5kOiB0aGlzLnNjcmVlblRleHRzPy5sZWdlbmQ/LmxvY2F0aW9uLFxyXG4gICAgICAgICAgY29udHJvbHM6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZS5URVhUX0FSRUEsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5hZGRyZXNzLFxyXG4gICAgICAgICAgICAgIGNvbnRyb2xOYW1lOiAnYWRkcmVzcycsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbjogW1xyXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKEV2ZW50c0FuZE1lZXRpbmdzVmFsaWRhdGlvblBhdHRlcm5zLmFkZHJlc3MpLFxyXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgodGhpcy5jaGFyc0xpbWl0Py5saW1pdFRvMTUwKSxcclxuICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnNjcmVlblRleHRzPy5wbGFjZWhvbGRlcj8uYWRkcmVzcyxcclxuICAgICAgICAgICAgICBtYXhDaGFyQ291bnQ6IHRoaXMuY2hhcnNMaW1pdD8ubGltaXRUbzE1MCxcclxuICAgICAgICAgICAgICBtYXhFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcmVlblRleHRzPy5tZXNzYWdlPy5lcnJvcj8ubGltaXQ/LmFkZHJlc3NNYXhDaGFycyxcclxuICAgICAgICAgICAgICBpc1JlYWRvbmx5OiBmYWxzZSxcclxuICAgICAgICAgICAgICBhcmlhTXVsdGlsaW5lOiB0cnVlLFxyXG4gICAgICAgICAgICAgIGlzUmVzaXplOiB0cnVlLFxyXG4gICAgICAgICAgICAgIHBhdHRlcm5FcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcmVlblRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucGF0dGVybj8uYWRkcmVzcyxcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5hcmlhTGFiZWw/LmFkZHJlc3MsXHJcbiAgICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LmFkZHJlc3MsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGUuU0VMRUNULFxyXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uY291bnRyeSxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ2NvdW50cnknLFxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnNjcmVlblRleHRzPy5wbGFjZWhvbGRlcj8uY291bnRyeSxcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5hcmlhTGFiZWw/LmNvdW50cnksXHJcbiAgICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LmNvdW50cnksXHJcbiAgICAgICAgICAgICAgZHJvcGRvd25PcHRpb25zOiB0aGlzLmNvdW50cmllcyxcclxuICAgICAgICAgICAgICBpc1NlYXJjaDogdHJ1ZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBsZWdlbmQ6IHRoaXMuc2NyZWVuVGV4dHM/LmxlZ2VuZD8uYXR0ZW5kZWVzLFxyXG4gICAgICAgICAgY29udHJvbHM6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZS5DSEVDS0JPWCxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmF0dGVuZGVlc1R5cGUgKyAnKicsXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdhdHRlbmRlZXNUeXBlJyxcclxuICAgICAgICAgICAgICBtaW5TZWxlY3Rpb25SZXF1aXJlZDogMSxcclxuICAgICAgICAgICAgICBjaGVja2JveE9wdGlvbnM6IHRoaXMuYXR0ZW5kZWVzVHlwZXMsXHJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5hdHRlbmRlZXNUeXBlLFxyXG4gICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkPy5hdHRlbmRlZXNUeXBlLFxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkRXJyb3JNZXNzYWdlOiB0aGlzLnNjcmVlblRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbjogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgXSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxlZ2VuZDogdGhpcy5zY3JlZW5UZXh0cz8ubGVnZW5kPy5hY2Nlc3MsXHJcbiAgICAgICAgICBjb250cm9sczogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLklOUFVULFxyXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uZXZlbnRQYXNzd29yZCxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ2V2ZW50UGFzc3dvcmQnLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb246IFtcclxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucGF0dGVybihcclxuICAgICAgICAgICAgICAgICAgRXZlbnRzQW5kTWVldGluZ3NWYWxpZGF0aW9uUGF0dGVybnMuZXZlbnRQYXNzd29yZFxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKHRoaXMuY2hhcnNMaW1pdC5saW1pdFRvMjApLFxyXG4gICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgbWF4Q2hhckNvdW50OiB0aGlzLmNoYXJzTGltaXQubGltaXRUbzIwLFxyXG4gICAgICAgICAgICAgIG1heEVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5saW1pdD8uZXZlbnRQYXNzd29yZE1heENoYXJzLFxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnNjcmVlblRleHRzPy5wbGFjZWhvbGRlcj8uZXZlbnRQYXNzd29yZCxcclxuICAgICAgICAgICAgICBwYXR0ZXJuRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8ubWVzc2FnZT8uZXJyb3I/LnBhdHRlcm4/LmV2ZW50UGFzc3dvcmQsXHJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5ldmVudFBhc3N3b3JkLFxyXG4gICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkPy5ldmVudFBhc3N3b3JkLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLlRFWFRfQVJFQSxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmlwQWRkcmVzc1JhbmdlLFxyXG4gICAgICAgICAgICAgIGNvbnRyb2xOYW1lOiAnaXBBZGRyZXNzUmFuZ2UnLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb246IFtcclxuICAgICAgICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmlwQWRkcmVzc1JhbmdlVmFsaWRhdG9yKFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNjcmVlblRleHRzPy5saW1pdD8ubm9PZklwQWRkcmVzc1JhbmdlU2V0c1xyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnNjcmVlblRleHRzPy5wbGFjZWhvbGRlcj8uaXBBZGRyZXNzUmFuZ2UsXHJcbiAgICAgICAgICAgICAgYXJpYU11bHRpbGluZTogdHJ1ZSxcclxuICAgICAgICAgICAgICBpc1Jlc2l6ZTogdHJ1ZSxcclxuICAgICAgICAgICAgICBzdXBwb3J0TWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/LnN1cHBvcnRUZXh0Py5pcEFkZHJlc3NSYW5nZUZvcm1hdFRleHQsXHJcbiAgICAgICAgICAgICAgcGF0dGVybkVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5wYXR0ZXJuPy5pcEFkZHJlc3NSYW5nZSxcclxuICAgICAgICAgICAgICBtYXhFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcmVlblRleHRzPy5tZXNzYWdlPy5lcnJvcj8ubGltaXQ/Lm5vT2ZJcEFkZHJlc3NSYW5nZVNldHMsXHJcbiAgICAgICAgICAgICAgbWF4UmFuZ2VMaW1pdDogdGhpcy5zY3JlZW5UZXh0cz8ubGltaXQ/Lm5vT2ZJcEFkZHJlc3NSYW5nZVNldHMsXHJcbiAgICAgICAgICAgICAgcmVtYWluaW5nQ2hhcnNMZWZ0TWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/LmlwQWRkcmVzc1JhbmdlUmVtYWluaW5nLFxyXG4gICAgICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmFyaWFMYWJlbD8uaXBBZGRyZXNzUmFuZ2UsXHJcbiAgICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LmlwQWRkcmVzc1JhbmdlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgXSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxlZ2VuZDogdGhpcy5zY3JlZW5UZXh0cz8ubGVnZW5kPy5kZXNjcmlwdGlvbixcclxuICAgICAgICAgIGNvbnRyb2xzOiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGUuVEVYVF9BUkVBLFxyXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdkZXNjcmlwdGlvbicsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbjogW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKHRoaXMuY2hhcnNMaW1pdC5saW1pdFRvMjAwMCldLFxyXG4gICAgICAgICAgICAgIG1heENoYXJDb3VudDogdGhpcy5jaGFyc0xpbWl0LmxpbWl0VG8yMDAwLFxyXG4gICAgICAgICAgICAgIG1heEVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5saW1pdD8uZGVzY3JpcHRpb25NYXhDaGFycyxcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy5zY3JlZW5UZXh0cz8ucGxhY2Vob2xkZXI/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgIGFyaWFNdWx0aWxpbmU6IHRydWUsXHJcbiAgICAgICAgICAgICAgaXNSZXNpemU6IHRydWUsXHJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGUuQ0hFQ0tCT1gsXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdjcmVkaXRzQXBwbGljYWJsZScsXHJcbiAgICAgICAgICAgICAgY2hlY2tib3hPcHRpb25zOiB0aGlzLnNjcmVlblRleHRzPy5jcmVkaXRzQXBwbGljYWJsZSxcclxuICAgICAgICAgICAgICBzdXBwb3J0TWVzc2FnZTogdGhpcy5zY3JlZW5UZXh0cz8uc3VwcG9ydFRleHQ/LmNyZWRpdHNBcHBsaWNhYmxlLFxyXG4gICAgICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmFyaWFMYWJlbD8uY3JlZGl0c0FwcGxpY2FibGUsXHJcbiAgICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LmNyZWRpdHNBcHBsaWNhYmxlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgXSxcclxuICAgICAgICB9LFxyXG4gICAgICBdLFxyXG4gICAgfTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogTmF2aWdhdGUgdG8gZXZlbnRzIGFuZCBtZWV0aW5ncyBsaXN0IHNjcmVlbi5cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlT3JNb2RpZnlFdmVudENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uRm9ybUNhbmNlbCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybUNhbmNlbC5lbWl0KCk7XHJcbiAgICB0aGlzLmNvbmZpcm1hdGlvbk1vZGFsQ29uZmlnLnByb21wdE1lc3NhZ2UgPVxyXG4gICAgICB0aGlzLmNvbmZpcm1hdGlvbk1vZGFsVGV4dHM/LnByb21wdE1lc3NhZ2VPbkNhbmNlbDtcclxuICAgIGlmICh0aGlzLnJvdXRlUGF0aHM/LmV2ZW50c0FuZE1lZXRpbmdzKSB7XHJcbiAgICAgIHRoaXMucm91dGVyPy5uYXZpZ2F0ZShbdGhpcy5yb3V0ZVBhdGhzLmV2ZW50c0FuZE1lZXRpbmdzXSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNyZWF0ZU1vZGlmeUV2ZW50Q2xpY2suZW1pdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBMb2FkcyBldmVudCB0eXBlcyB1c2luZyBldmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlT3JNb2RpZnlFdmVudENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldEV2ZW50VHlwZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZVxyXG4gICAgICAuZ2V0RXZlbnRUeXBlcygpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXNwb25zZT8uYm9keT8uZm9yRWFjaCgoZXZlbnRUeXBlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnRUeXBlcz8ucHVzaCh7XHJcbiAgICAgICAgICAgICAgaWQ6IGV2ZW50VHlwZT8uY29uZmlnRmllbGRJZCxcclxuICAgICAgICAgICAgICBuYW1lOiBldmVudFR5cGU/LmNvbmZpZ0ZpZWxkVmFsdWU/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UudXBkYXRlRm9ybUNvbnRyb2xPcHRpb25zKFxyXG4gICAgICAgICAgICAnZXZlbnRUeXBlJyxcclxuICAgICAgICAgICAgJ2Ryb3Bkb3duT3B0aW9ucycsXHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnRUeXBlcyxcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljRm9ybUNvbXBvbmVudFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMuY3JlYXRlT3JVcGRhdGVFdmVudEZvcm1Hcm91cFJlZj8uWzBdXHJcbiAgICAgICAgICAgIC5nZXQoJ2V2ZW50VHlwZScpXHJcbiAgICAgICAgICAgID8uc2V0VmFsdWUoXHJcbiAgICAgICAgICAgICAgdGhpcy5ldmVudFR5cGVzPy5maW5kKFxyXG4gICAgICAgICAgICAgICAgKGV2ZW50VHlwZSkgPT5cclxuICAgICAgICAgICAgICAgICAgZXZlbnRUeXBlLmlkID09PSB0aGlzLnNlbGVjdGVkRXZlbnREYXRhPy5ldmVudFR5cGVcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuaGFuZGxlRXJyb3JzKGVycm9yKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgbWVldGluZ3MgY3JlYXRlZCBmb3IgdGhlIHNlbGVjdGVkIGV2ZW50IGZyb20gc2VydmVyLlxyXG4gICAqIEBwYXJhbSB7R2V0TWVldGluZ3NCeUV2ZW50SWRQYXlsb2FkfSBwYXlsb2FkXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRNZWV0aW5nc0J5RXZlbnRJZChwYXlsb2FkOiBHZXRNZWV0aW5nc0J5RXZlbnRJZFBheWxvYWQpOiB2b2lkIHtcclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICAgIC5nZXRNZWV0aW5nc0J5RXZlbnRJZChwYXlsb2FkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5tZWV0aW5ncyA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5wYWdpbmF0b3JDb25maWcudG90YWxSZWNvcmRzID1cclxuICAgICAgICAgICAgcmVzcG9uc2U/LmJvZHk/LnRvdGFsUmVjb3JkcyA/PyB0aGlzLm1lZXRpbmdzPy5sZW5ndGg7XHJcbiAgICAgICAgICB0aGlzLnBhZ2luYXRvckNvbmZpZyA9IHsgLi4udGhpcy5wYWdpbmF0b3JDb25maWcgfTtcclxuICAgICAgICAgIHRoaXMubWVldGluZ3MgPSByZXNwb25zZT8uYm9keT8ubWVldGluZ3M7XHJcbiAgICAgICAgICB0aGlzLm1lZXRpbmdzPy5tYXAoKG1lZXRpbmcpID0+IChtZWV0aW5nLmNhbkRlbGV0ZSA9IHRydWUpKTtcclxuICAgICAgICAgIGlmICh0aGlzLmlzU2VhcmNoQWN0aXZlKVxyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaFJlc3VsdE1lc3NhZ2UgPSBgJHt0aGlzLnNjcmVlblRleHRzPy5zZWFyY2hSZXN1bHRNc2dQYXJ0MX0gJHt0aGlzLnBhZ2luYXRvckNvbmZpZz8udG90YWxSZWNvcmRzfVxyXG4gICAgICAgICAgJHt0aGlzLnNjcmVlblRleHRzPy5zZWFyY2hSZXN1bHRNc2dQYXJ0Mn0gXCI8c3Ryb25nPiR7dGhpcy50cmltbWVkU2VhcmNoVGVybX08L3N0cm9uZz5cImA7XHJcbiAgICAgICAgICB0aGlzLm1lZXRpbmdzID1cclxuICAgICAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UubWFwTWVldGluZ3NJbmZvVG9EYXRhVGFibGUoXHJcbiAgICAgICAgICAgICAgcmVzcG9uc2U/LmJvZHk/Lm1lZXRpbmdzXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLm1lZXRpbmdzID0gdGhpcy5nZXRNZW51QWN0aW9uc1RvTWVldGluZ3ModGhpcy5tZWV0aW5ncyk7XHJcbiAgICAgICAgICB0aGlzLm1lZXRpbmdzID0gWy4uLnRoaXMubWVldGluZ3NdO1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlPy5ib2R5Py5tZWV0aW5ncz8ubGVuZ3RoID4gMCB8fCB0aGlzLmlzU2VhcmNoQWN0aXZlKVxyXG4gICAgICAgICAgICB0aGlzLm1lZXRpbmdEZXRhaWxzVGl0bGUgPVxyXG4gICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/LmFkZE1lZXRpbmc/LmZpcnN0TGFiZWwgK1xyXG4gICAgICAgICAgICAgICdcIicgK1xyXG4gICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/LmFkZE1lZXRpbmc/LnNlY29uZExhYmVsICtcclxuICAgICAgICAgICAgICAnXCInICtcclxuICAgICAgICAgICAgICB0aGlzLnNjcmVlblRleHRzPy5hZGRNZWV0aW5nPy5sYXN0TGFiZWw7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHRoaXMubWVldGluZ0RldGFpbHNUaXRsZSA9IHRoaXMuaXNBZGRNZWV0aW5nQWxsb3dlZFxyXG4gICAgICAgICAgICAgID8gdGhpcy5hZGRNZWV0aW5nPy5maXJzdExhYmVsXHJcbiAgICAgICAgICAgICAgOiB0aGlzLmFkZE1lZXRpbmc/LmZpcnN0TGFiZWxXaXRob3V0QWRkQnRuO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuaGFuZGxlRXJyb3JzKGVycm9yLCBmYWxzZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEFkZHMgbWVudSBhY3Rpb25zIGJhc2VkIG9uIHVzZXIgcGVybWlzc2lvbiBmb3IgZXZlcnkgbWVldGluZyBhbmQgcmV0dXJucyB0aGUgbWVldGluZ3MgbGlzdC5cclxuICAgKiBAcGFyYW0ge01lZXRpbmdbXX0gbWVldGluZ3NcclxuICAgKiBAcmV0dXJuIHtNZWV0aW5nW119XHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRNZW51QWN0aW9uc1RvTWVldGluZ3MobWVldGluZ3M6IE1lZXRpbmdbXSk6IE1lZXRpbmdbXSB7XHJcbiAgICBtZWV0aW5ncz8uZm9yRWFjaCgobWVldGluZykgPT4ge1xyXG4gICAgICBtZWV0aW5nLm1lbnVBY3Rpb24gPSB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5nZXRNZWV0aW5nTWVudUFjdGlvbihcclxuICAgICAgICB0aGlzLmNvbnN0YW50cy52aWV3RXZlbnRzQW5kTWVldGluZ3MubWVldGluZ0FjdGlvbnMsXHJcbiAgICAgICAgbWVldGluZy5pc01lbWJlck9mR3JvdXBcclxuICAgICAgKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIG1lZXRpbmdzO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBFbmFibGVzIGFuZCBkaXNhYmxlcyBmb3JtIHN1Ym1pdCBidXR0b24gd2hlbiBjcmVhdGUgb3IgdXBkYXRlIGV2ZW50cyBmb3JtIGNoYW5nZS5cclxuICAgKiBAcGFyYW0ge0Zvcm1Hcm91cFtdfSBmb3JtR3JvdXBzXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBvbkZvcm1DaGFuZ2UoZm9ybUdyb3VwczogRm9ybUdyb3VwW10pOiB2b2lkIHtcclxuICAgIHRoaXMuY2hlY2tGb3JGb3JtVmFsdWVDaGFuZ2VzKGZvcm1Hcm91cHMpO1xyXG4gICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2Uuc2V0RXZlbnRPck1lZXRpbmdGb3JtQ2hhbmdlU3RhdHVzKFxyXG4gICAgICBmb3JtR3JvdXBzLnNvbWUoKGZvcm1Hcm91cCkgPT4gZm9ybUdyb3VwPy5kaXJ0eSlcclxuICAgICk7XHJcbiAgICB0aGlzLmlzU3VibWl0QnV0dG9uRGlzYWJsZWQgPSBmb3JtR3JvdXBzLnNvbWUoXHJcbiAgICAgIChmb3JtR3JvdXApID0+IGZvcm1Hcm91cD8uc3RhdHVzID09PSBGb3JtU3RhdHVzLklOVkFMSURcclxuICAgICk7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuY3JlYXRlT3JVcGRhdGVFdmVudHNGb3JtR3JvdXAuZm9ybUdyb3VwPy5bMV0/LmNvbnRyb2xzPy5bMV1cclxuICAgICAgICA/LmRhdGVQaWNrZXJcclxuICAgICkge1xyXG4gICAgICB0aGlzLmNyZWF0ZU9yVXBkYXRlRXZlbnRzRm9ybUdyb3VwLmZvcm1Hcm91cFsxXS5jb250cm9sc1sxXS5kYXRlUGlja2VyLm1pbkRhdGUgPVxyXG4gICAgICAgIGZvcm1Hcm91cHM/LlsxXT8uZ2V0KCdzdGFydERhdGUnKT8udmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIExvYWRzIGdyb3VwcyB1c2luZyBldmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlT3JNb2RpZnlFdmVudENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldEdyb3Vwcyhpc1JlbGF0ZWRHcm91cCA9IHRydWUpOiB2b2lkIHtcclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICAgIC5nZXRHcm91cHMoaXNSZWxhdGVkR3JvdXApXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogR2V0R3JvdXBSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmVzPy5ib2R5Py5mb3JFYWNoKChncm91cDogR3JvdXBJbmZvKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBzPy5wdXNoKHtcclxuICAgICAgICAgICAgICBpZDogZ3JvdXA/Lmdyb3VwSWQsXHJcbiAgICAgICAgICAgICAgbmFtZTogZ3JvdXA/Lmdyb3VwQWNyb255bSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuZGVmYXVsdEdyb3VwcyA9IHRoaXMuZ3JvdXBzO1xyXG4gICAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UudXBkYXRlRm9ybUNvbnRyb2xPcHRpb25zKFxyXG4gICAgICAgICAgICAncmVsYXRlZEdyb3VwJyxcclxuICAgICAgICAgICAgJ2Ryb3Bkb3duT3B0aW9ucycsXHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnNvcnRPcHRpb25zKHRoaXMuZ3JvdXBzKSxcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljRm9ybUNvbXBvbmVudFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMuY3JlYXRlT3JVcGRhdGVFdmVudEZvcm1Hcm91cFJlZj8uWzBdXHJcbiAgICAgICAgICAgIC5nZXQoJ3JlbGF0ZWRHcm91cCcpXHJcbiAgICAgICAgICAgID8uc2V0VmFsdWUoXHJcbiAgICAgICAgICAgICAgdGhpcy5ncm91cHM/LmZpbmQoXHJcbiAgICAgICAgICAgICAgICAoZ3JvdXApID0+IGdyb3VwLmlkID09PSB0aGlzLnNlbGVjdGVkRXZlbnREYXRhPy5ncm91cElkXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgY2xpZW50IHNpZGUgdmFsaWRhdGlvbiBhbmQgY2FsbHMgY3JlYXRlIGV2ZW50IG1ldGhvZHMuXHJcbiAgICogQHBhcmFtIHtGb3JtR3JvdXBbXX0gZm9ybSAtQXJyYXkgb2YgZm9ybUdyb3VwXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU1vZGlmeUV2ZW50Q29tcG9uZW50XHJcbiAgICovXHJcbiAgb25Gb3JtU3VibWl0KGZvcm1Hcm91cHM6IEZvcm1Hcm91cFtdKTogdm9pZCB7XHJcbiAgICBpZiAoXHJcbiAgICAgIGZvcm1Hcm91cHMuZXZlcnkoXHJcbiAgICAgICAgKGZvcm1Hcm91cDogRm9ybUdyb3VwKSA9PiBmb3JtR3JvdXAuc3RhdHVzID09PSBGb3JtU3RhdHVzLlZBTElEXHJcbiAgICAgIClcclxuICAgICkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuYWN0aW9uVHlwZSA9PT1cclxuICAgICAgICBFdmVudEFuZE1lZXRpbmdGdW5jdGlvblR5cGUuQ1JFQVRFXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuY3JlYXRlRXZlbnQoZm9ybUdyb3Vwcyk7XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuYWN0aW9uVHlwZSA9PT1cclxuICAgICAgICBFdmVudEFuZE1lZXRpbmdGdW5jdGlvblR5cGUuRURJVFxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmVkaXRFdmVudChmb3JtR3JvdXBzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGFrZXMgZXZlbnQgYmFzaWMgZGV0YWlscywgZGF0ZSBhbmQgdGltZSwgbG9jYXRpb24gZGV0YWlscywgYXR0ZW5kZWUgZGV0YWlscywgYWNjZXNzIGRldGFpbHMgZm9ybSBncm91cCBkYXRhIGFuZCBjb21iaW5pbmcgc3RhcnQgZGF0ZSBhbmQgZW5kIGRhdGUgYW5kIGNvbnZlcnRpbmcgdG8gVVRDIGZvcm1hdCBhbmQgcGFzc2luZyBhbGwgdGhlIGZvcm0gZGF0YSBpbiB0aGUgcGF5bG9hZCBvYmplY3QgdG8gY3JlYXRlIGV2ZW50IEFQSSB0byB0aGUgc2VydmVyLlxyXG4gICAqIEBwYXJhbSB7Rm9ybUdyb3VwW119IGZvcm1Hcm91cHNcclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBjcmVhdGVFdmVudChmb3JtR3JvdXBzOiBGb3JtR3JvdXBbXSk6IHZvaWQge1xyXG4gICAgY29uc3QgZXZlbnRCYXNpY0RldGFpbHMgPSBmb3JtR3JvdXBzPy5bMF0/LmdldFJhd1ZhbHVlKCk7XHJcbiAgICBjb25zdCBldmVudERhdGVBbmRUaW1lRGV0YWlscyA9IGZvcm1Hcm91cHM/LlsxXT8uZ2V0UmF3VmFsdWUoKTtcclxuICAgIGNvbnN0IGV2ZW50TG9jYXRpb25EZXRhaWxzID0gZm9ybUdyb3Vwcz8uWzJdPy5nZXRSYXdWYWx1ZSgpO1xyXG4gICAgY29uc3QgZXZlbnRBdHRlbmRlZURldGFpbHMgPSBmb3JtR3JvdXBzPy5bM10/LmdldFJhd1ZhbHVlKCk7XHJcbiAgICBjb25zdCBldmVudEFjY2Vzc0RldGFpbHMgPSBmb3JtR3JvdXBzPy5bNF0/LmdldFJhd1ZhbHVlKCk7XHJcbiAgICBjb25zdCBzdGFydERhdGUgPSB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5jb252ZXJ0RGF0ZVRpbWVUb1VUQyhcclxuICAgICAgZXZlbnREYXRlQW5kVGltZURldGFpbHM/LnN0YXJ0RGF0ZS5mb3JtYXQoXHJcbiAgICAgICAgRGF0ZUZvcm1hdHMucmVxdWVzdFBheWxvYWRGb3JtYXRcclxuICAgICAgKVxyXG4gICAgKTtcclxuICAgIGNvbnN0IGVuZERhdGUgPSB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5jb252ZXJ0RGF0ZVRpbWVUb1VUQyhcclxuICAgICAgZXZlbnREYXRlQW5kVGltZURldGFpbHM/LmVuZERhdGUuZm9ybWF0KERhdGVGb3JtYXRzPy5yZXF1ZXN0UGF5bG9hZEZvcm1hdClcclxuICAgICk7XHJcbiAgICBjb25zdCBjcmVhdGVFdmVudFBheWxvYWQ6IENyZWF0ZU9yRWRpdEV2ZW50UGF5bG9hZCA9IHtcclxuICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgIGV2ZW50TmFtZTogZXZlbnRCYXNpY0RldGFpbHM/LmV2ZW50TmFtZSxcclxuICAgICAgICBldmVudFR5cGU6IGV2ZW50QmFzaWNEZXRhaWxzPy5ldmVudFR5cGU/LmlkLFxyXG4gICAgICAgIGV2ZW50SWQ6IHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmdldFNlbGVjdGVkRXZlbnRJZCgpID8/IG51bGwsXHJcbiAgICAgICAgZ3JvdXBJZDogZXZlbnRCYXNpY0RldGFpbHM/LnJlbGF0ZWRHcm91cD8uaWQsXHJcbiAgICAgICAgc3RhcnREYXRlOiBzdGFydERhdGUsXHJcbiAgICAgICAgZW5kRGF0ZTogZW5kRGF0ZSxcclxuICAgICAgICB0aW1lWm9uZTogZXZlbnREYXRlQW5kVGltZURldGFpbHM/LnRpbWVab25lPy5uYW1lLFxyXG4gICAgICAgIGNvdW50cnk6IGV2ZW50TG9jYXRpb25EZXRhaWxzPy5jb3VudHJ5Py5pZCxcclxuICAgICAgICBldmVudFBhc3N3b3JkOiBldmVudEFjY2Vzc0RldGFpbHM/LmV2ZW50UGFzc3dvcmQsXHJcbiAgICAgICAgb3BlbkZvckFsbDogZXZlbnRBdHRlbmRlZURldGFpbHM/LmF0dGVuZGVlc1R5cGU/LlswXSxcclxuICAgICAgICByZWdpc3RlcmVkUGFydGljaXBhbnRzOiBldmVudEF0dGVuZGVlRGV0YWlscz8uYXR0ZW5kZWVzVHlwZT8uWzJdLFxyXG4gICAgICAgIGdyb3VwUGFydGljaXBhbnRzOiBldmVudEF0dGVuZGVlRGV0YWlscz8uYXR0ZW5kZWVzVHlwZT8uWzFdLFxyXG4gICAgICAgIGlwYWRkcmVzczogZXZlbnRBY2Nlc3NEZXRhaWxzPy5pcEFkZHJlc3NSYW5nZSA/PyAnJyxcclxuICAgICAgICBsb2NhdGlvbjogZXZlbnRMb2NhdGlvbkRldGFpbHM/LmFkZHJlc3MsXHJcbiAgICAgICAgZXZlbnRUaXRsZTogZXZlbnRCYXNpY0RldGFpbHM/LmV2ZW50TmFtZSxcclxuICAgICAgICBldmVudERlc2M6IGZvcm1Hcm91cHM/Lls1XT8uZ2V0UmF3VmFsdWUoKT8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgdmlydHVhbE1lZXRpbmdVcmw6IGV2ZW50TG9jYXRpb25EZXRhaWxzPy52aXJ0dWFsTWVldGluZ1VybCA/PyAnJyxcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZVxyXG4gICAgICAuY3JlYXRlRXZlbnQoY3JlYXRlRXZlbnRQYXlsb2FkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICAgIGlmIChyZXM/LnN0YXR1cykge1xyXG4gICAgICAgICAgICB0aGlzLmlzRXZlbnRDcmVhdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jYW5EaXNhYmxlQWRkTWVldGluZyhmYWxzZSk7XHJcbiAgICAgICAgICAgIGlmIChyZXM/LmJvZHkpXHJcbiAgICAgICAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2U/LnNldFNlbGVjdGVkRXZlbnRJZChcclxuICAgICAgICAgICAgICAgIE9iamVjdChyZXM/LmJvZHkpPy5pZFxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlPy5zZXRTZWxlY3RlZEV2ZW50RGF0YSh7XHJcbiAgICAgICAgICAgICAgc3RhcnREYXRlOiBzdGFydERhdGUsXHJcbiAgICAgICAgICAgICAgZW5kRGF0ZTogZW5kRGF0ZSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Rm9ybUdyb3VwVmFsdWVzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnNldEV2ZW50T3JNZWV0aW5nRm9ybUNoYW5nZVN0YXR1cyhcclxuICAgICAgICAgICAgICBmYWxzZVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dBbGVydE1lc3NhZ2UoXHJcbiAgICAgICAgICAgICAgQWxlcnRUeXBlPy5TVUNDRVNTLFxyXG4gICAgICAgICAgICAgIGNyZWF0ZUV2ZW50UGF5bG9hZC5wYXlsb2FkLmV2ZW50VGl0bGUgK1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8ubWVzc2FnZT8uc3VjY2Vzcz8uc3VibWlzc2lvblxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgYWxlcnRzIGZvciBzdWNjZXNzLCBlcnJvciBhbmQgd2FybmluZy5cclxuICAgKiBAcGFyYW0geyhzdHJpbmcgfCBzdHJpbmdbXSl9IG1lc3NhZ2UgLXN1Y2Nlc3Mgb3IgZXJyb3Igb3Igd2FybmluZyBtZXNzYWdlLlxyXG4gICAqIEBwYXJhbSB7QWxlcnRUeXBlfSBhbGVydFR5cGVcclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBzaG93QWxlcnRNZXNzYWdlKGFsZXJ0VHlwZTogQWxlcnRUeXBlLCBtZXNzYWdlOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5hbGVydFNlcnZpY2U/LnNob3dNZXNzYWdlKHtcclxuICAgICAgc3RhdHVzOiAnY3VzdG9tJyxcclxuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcclxuICAgICAgYWxlcnRUeXBlOiBhbGVydFR5cGUsXHJcbiAgICAgIGlzQ2xvc2VOZWVkZWQ6IGZhbHNlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgYXR0ZW5kZWUgdHlwZSBzZWxlY3Rpb24gaW4gZXZlbnQgZm9ybS5cclxuICAgKiBAcGFyYW0ge0NoZWNrYm94T3B0aW9ufSBhdHRlbmRlZVxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVNb2RpZnlFdmVudENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uQXR0ZW5kZWVUeXBlU2VsZWN0aW9uKFxyXG4gICAgYXR0ZW5kZWVUeXBlOiBDaGVja2JveE9wdGlvbixcclxuICAgIGlzQ2hlY2tib3hDaGFuZ2VkID0gZmFsc2VcclxuICApOiB2b2lkIHtcclxuICAgIGlmICghYXR0ZW5kZWVUeXBlPy5uYW1lPy5pbmNsdWRlcygnRW5hYmxlJykpIHtcclxuICAgICAgaWYgKGF0dGVuZGVlVHlwZT8uaWQgPT09IEF0dGVuZGVlVHlwZS5PUEVOX0ZPUl9BTEwpIHtcclxuICAgICAgICB0aGlzLmF0dGVuZGVlc1R5cGVzPy5mb3JFYWNoKChvcHRpb24pID0+IHtcclxuICAgICAgICAgIGlmIChhdHRlbmRlZVR5cGU/LmNoZWNrZWQgJiYgb3B0aW9uPy5pZCAhPT0gYXR0ZW5kZWVUeXBlLmlkKVxyXG4gICAgICAgICAgICBvcHRpb24uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgZWxzZSBpZiAoIWF0dGVuZGVlVHlwZT8uY2hlY2tlZCAmJiBvcHRpb24/LmlkICE9PSBhdHRlbmRlZVR5cGUuaWQpXHJcbiAgICAgICAgICAgIG9wdGlvbi5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnVwZGF0ZUZvcm1Db250cm9sT3B0aW9ucyhcclxuICAgICAgICAgICdhdHRlbmRlZXNUeXBlJyxcclxuICAgICAgICAgICdjaGVja2JveE9wdGlvbnMnLFxyXG4gICAgICAgICAgdGhpcy5hdHRlbmRlZXNUeXBlcyxcclxuICAgICAgICAgIHRoaXMuZHluYW1pY0Zvcm1Db21wb25lbnRcclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIGF0dGVuZGVlVHlwZT8uaWQgPT09IEF0dGVuZGVlVHlwZS5HUk9VUF9NRU1CRVJTIHx8XHJcbiAgICAgICAgYXR0ZW5kZWVUeXBlPy5pZCA9PT0gQXR0ZW5kZWVUeXBlLlJFR0lTVEVSRURfUEFSVElDSVBBTlRTXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuYXR0ZW5kZWVzVHlwZXNcclxuICAgICAgICAgID8uZmlsdGVyKChvcHRpb24pID0+IG9wdGlvbj8uaWQgPT09IEF0dGVuZGVlVHlwZS5PUEVOX0ZPUl9BTEwpXHJcbiAgICAgICAgICAubWFwKChmaWx0ZXJlZE9wdGlvbikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoYXR0ZW5kZWVUeXBlPy5jaGVja2VkKSByZXR1cm4gKGZpbHRlcmVkT3B0aW9uLmRpc2FibGVkID0gdHJ1ZSk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuY2FuRW5hYmxlT3BlbkZvckFsbENoZWNrYm94KCkpXHJcbiAgICAgICAgICAgICAgcmV0dXJuIChmaWx0ZXJlZE9wdGlvbi5kaXNhYmxlZCA9IGZhbHNlKTtcclxuICAgICAgICAgICAgcmV0dXJuIGZpbHRlcmVkT3B0aW9uO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UudXBkYXRlRm9ybUNvbnRyb2xPcHRpb25zKFxyXG4gICAgICAgICAgJ2F0dGVuZGVlc1R5cGUnLFxyXG4gICAgICAgICAgJ2NoZWNrYm94T3B0aW9ucycsXHJcbiAgICAgICAgICB0aGlzLmF0dGVuZGVlc1R5cGVzLFxyXG4gICAgICAgICAgdGhpcy5keW5hbWljRm9ybUNvbXBvbmVudFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGF0dGVuZGVlVHlwZT8uY2hlY2tlZCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRBdHRlbmRlZVR5cGVzPy5wdXNoKGF0dGVuZGVlVHlwZS5pZCBhcyBzdHJpbmcpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRBdHRlbmRlZVR5cGVzID0gdGhpcy5zZWxlY3RlZEF0dGVuZGVlVHlwZXMuZmlsdGVyKFxyXG4gICAgICAgICAgKHZhbHVlKSA9PiB2YWx1ZSAhPT0gYXR0ZW5kZWVUeXBlLmlkXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5pc1N1Ym1pdEJ1dHRvbkRpc2FibGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzQ3JlYXRlT3JVcGRhdGVFdmVudEZvcm1JbnZhbGlkID1cclxuICAgICAgdGhpcy5jcmVhdGVPclVwZGF0ZUV2ZW50Rm9ybUdyb3VwUmVmPy5zb21lKFxyXG4gICAgICAgIChmb3JtR3JvdXA6IEZvcm1Hcm91cCkgPT4gZm9ybUdyb3VwLnN0YXR1cyA9PT0gRm9ybVN0YXR1cy5JTlZBTElEXHJcbiAgICAgICk7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRBdHRlbmRlZVR5cGVzLmxlbmd0aCA9PT0gMCB8fFxyXG4gICAgICB0aGlzLmlzQ3JlYXRlT3JVcGRhdGVFdmVudEZvcm1JbnZhbGlkXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5pc1N1Ym1pdEJ1dHRvbkRpc2FibGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnNldEV2ZW50T3JNZWV0aW5nRm9ybUNoYW5nZVN0YXR1cyhcclxuICAgICAgdGhpcy5jcmVhdGVPclVwZGF0ZUV2ZW50Rm9ybUdyb3VwUmVmPy5zb21lKFxyXG4gICAgICAgIChmb3JtR3JvdXApID0+IGZvcm1Hcm91cD8uZGlydHlcclxuICAgICAgKVxyXG4gICAgKTtcclxuICAgIHRoaXMuY2FuRGlzYWJsZUFkZE1lZXRpbmcoaXNDaGVja2JveENoYW5nZWQpO1xyXG4gICAgdGhpcy5jaGVja0ZvckZvcm1WYWx1ZUNoYW5nZXModGhpcy5jcmVhdGVPclVwZGF0ZUV2ZW50Rm9ybUdyb3VwUmVmKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogR2V0IGV2ZW50IGZvcm0gZ3JvdXAgcmVmZXJlbmNlLlxyXG4gICAqIEBwYXJhbSB7Rm9ybUdyb3VwW119IGZvcm1cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRDcmVhdGVPclVwZGF0ZUV2ZW50Rm9ybUdyb3VwUmVmKGZvcm06IEZvcm1Hcm91cFtdKSB7XHJcbiAgICB0aGlzLmNyZWF0ZU9yVXBkYXRlRXZlbnRGb3JtR3JvdXBSZWYgPSBmb3JtO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBGaWx0ZXIgdGhlIGRyb3Bkb3duIG9wdGlvbnMgYW5kIHNob3cgb3B0aW9ucyByZWxhdGVkIHRvIHRoYXQgc2VhcmNoIHN0cmluZ1xyXG4gICAqIEBwYXJhbSB7eyBzZWFyY2hFdmVudDogRXZlbnQ7IGNvbnRyb2xOYW1lOiBzdHJpbmcgfX0gZGF0YVxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVNb2RpZnlNZWV0aW5nQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZm9ybVNlbGVjdFNlYXJjaChkYXRhOiB7IHNlYXJjaEV2ZW50OiBFdmVudDsgY29udHJvbE5hbWU6IHN0cmluZyB9KSB7XHJcbiAgICBzd2l0Y2ggKGRhdGEuY29udHJvbE5hbWUpIHtcclxuICAgICAgY2FzZSAndGltZVpvbmUnOlxyXG4gICAgICAgIHRoaXMudGltZXpvbmVzID0gdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuZmlsdGVyT3B0aW9ucyhcclxuICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICB0aGlzLmRlZmF1bHRUaW1lWm9uZXMsXHJcbiAgICAgICAgICB0aGlzLnRpbWV6b25lc1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UudXBkYXRlRm9ybUNvbnRyb2xPcHRpb25zKFxyXG4gICAgICAgICAgJ3RpbWVab25lJyxcclxuICAgICAgICAgICdkcm9wZG93bk9wdGlvbnMnLFxyXG4gICAgICAgICAgdGhpcy50aW1lem9uZXMsXHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNGb3JtQ29tcG9uZW50XHJcbiAgICAgICAgKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY291bnRyeSc6XHJcbiAgICAgICAgdGhpcy5jb3VudHJpZXMgPSB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5maWx0ZXJPcHRpb25zKFxyXG4gICAgICAgICAgZGF0YSxcclxuICAgICAgICAgIHRoaXMuZGVmYXVsdENvdW50cmllcyxcclxuICAgICAgICAgIHRoaXMuY291bnRyaWVzXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS51cGRhdGVGb3JtQ29udHJvbE9wdGlvbnMoXHJcbiAgICAgICAgICAnY291bnRyeScsXHJcbiAgICAgICAgICAnZHJvcGRvd25PcHRpb25zJyxcclxuICAgICAgICAgIHRoaXMuY291bnRyaWVzLFxyXG4gICAgICAgICAgdGhpcy5keW5hbWljRm9ybUNvbXBvbmVudFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3JlbGF0ZWRHcm91cCc6XHJcbiAgICAgICAgdGhpcy5ncm91cHMgPSB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5maWx0ZXJPcHRpb25zKFxyXG4gICAgICAgICAgZGF0YSxcclxuICAgICAgICAgIHRoaXMuZGVmYXVsdEdyb3VwcyxcclxuICAgICAgICAgIHRoaXMuZ3JvdXBzXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS51cGRhdGVGb3JtQ29udHJvbE9wdGlvbnMoXHJcbiAgICAgICAgICAncmVsYXRlZEdyb3VwJyxcclxuICAgICAgICAgICdkcm9wZG93bk9wdGlvbnMnLFxyXG4gICAgICAgICAgdGhpcy5ncm91cHMsXHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNGb3JtQ29tcG9uZW50XHJcbiAgICAgICAgKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogQ2hlY2tpbmcgZm9yIHVuY2hlY2tlZCBjaGVja2JveCBjb3VudCBleGNlcHQgT1BFTl9GT1JfQUxMXHJcbiAgICogQHJldHVybiB7Kn0gIHtib29sZWFufVxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVNb2RpZnlNZWV0aW5nQ29tcG9uZW50XHJcbiAgICovXHJcbiAgY2FuRW5hYmxlT3BlbkZvckFsbENoZWNrYm94KCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHVuY2hlY2tlZENvdW50ID0gMDtcclxuICAgIHRoaXMuYXR0ZW5kZWVzVHlwZXM/LmZvckVhY2goKGF0dGVuZGVlVHlwZSkgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgYXR0ZW5kZWVUeXBlPy5pZCAhPT0gQXR0ZW5kZWVUeXBlLk9QRU5fRk9SX0FMTCAmJlxyXG4gICAgICAgICFhdHRlbmRlZVR5cGU/LmNoZWNrZWRcclxuICAgICAgKVxyXG4gICAgICAgIHVuY2hlY2tlZENvdW50Kys7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB1bmNoZWNrZWRDb3VudCA9PT0gdGhpcy5hdHRlbmRlZXNUeXBlcz8ubGVuZ3RoIC0gMTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgbWVldGluZ3MgYnkgZXZlbnQgaWQgb24gY2hhbmdlIG9mIHRhYmxlIHBhZ2luYXRpb24uXHJcbiAgICogQHBhcmFtIHt7XHJcbiAgICogICAgIHBhZ2VPZmZzZXQ6IG51bWJlcjtcclxuICAgKiAgICAgcGFnZUxpbWl0OiBudW1iZXI7XHJcbiAgICogICB9fSBwYWdlRXZlbnRcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlT3JNb2RpZnlFdmVudENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uTWVldGluZ3NUYWJsZVBhZ2VDaGFuZ2UocGFnZUV2ZW50OiBQYWdlRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuZ2V0TWVldGluZ3NCeUV2ZW50SWQoe1xyXG4gICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgZXZlbnRJZDogdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuZ2V0U2VsZWN0ZWRFdmVudElkKCksXHJcbiAgICAgICAgc29ydENvbHVtbjogdGhpcy5kZWZhdWx0U29ydGVkQ29sdW1uLFxyXG4gICAgICAgIGFzY2VuZGluZ09yZGVyOiB0aGlzLmRlZmF1bHRDb2x1bW5Tb3J0RGlyZWN0aW9uLFxyXG4gICAgICAgIHBhZ2U6IHBhZ2VFdmVudC5wYWdlSW5kZXggKyAxLFxyXG4gICAgICAgIHNpemU6IHBhZ2VFdmVudC5wYWdlU2l6ZSxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmlldyBldmVudCBkZXRhaWxzIGFuZCBjYWxscyBnZXQgZXZlbnQgZGV0YWlscyBBUEkgYW5kIGVtaXRzIHZpZXcgZXZlbnQgQVBJIHJlc3BvbnNlLlxyXG4gICAqIEBwYXJhbSB7ZXZlbnRJRH1cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuXHJcbiAgdmlld0V2ZW50RGV0YWlscyhldmVudElEOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICAgIC5nZXRFdmVudERldGFpbHMoZXZlbnRJRClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzPy5zdGF0dXMpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEV2ZW50RGF0YSA9IHJlcz8uYm9keTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEV2ZW50RGF0YS5ncm91cE5hbWUgPSB0aGlzLmdyb3Vwcz8uZmlsdGVyKFxyXG4gICAgICAgICAgICAgIChvcHRpb24pID0+IG9wdGlvbj8uaWQgPT09IHRoaXMuc2VsZWN0ZWRFdmVudERhdGE/Lmdyb3VwSWRcclxuICAgICAgICAgICAgKT8uWzBdPy5uYW1lO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRXZlbnREYXRhLmV2ZW50VHlwZU5hbWUgPSB0aGlzLmV2ZW50VHlwZXM/LmZpbHRlcihcclxuICAgICAgICAgICAgICAob3B0aW9uKSA9PiBvcHRpb24/LmlkID09PSB0aGlzLnNlbGVjdGVkRXZlbnREYXRhPy5ldmVudFR5cGVcclxuICAgICAgICAgICAgKT8uWzBdPy5uYW1lO1xyXG4gICAgICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZT8uc2V0U2VsZWN0ZWRFdmVudERhdGEoXHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEV2ZW50RGF0YVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkRm9ybUdyb3VwVmFsdWVzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuaGFuZGxlRXJyb3JzKGVycm9yLCBmYWxzZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSBlZGl0IGV2ZW50IGRldGFpbHMgb24gZ2V0IHZpZXcgZXZlbnQgZGV0YWlscyBBUEkgY2FsbC5cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBzZXRTZWxlY3RlZEZvcm1Hcm91cFZhbHVlcygpOiB2b2lkIHtcclxuICAgIHRoaXMuY3JlYXRlT3JVcGRhdGVFdmVudEZvcm1Hcm91cFJlZj8uWzBdXHJcbiAgICAgIC5nZXQoJ3JlbGF0ZWRHcm91cCcpXHJcbiAgICAgID8uc2V0VmFsdWUoXHJcbiAgICAgICAgdGhpcy5ncm91cHM/LmZpbHRlcihcclxuICAgICAgICAgIChvcHRpb24pID0+IG9wdGlvbj8uaWQgPT09IHRoaXMuc2VsZWN0ZWRFdmVudERhdGE/Lmdyb3VwSWRcclxuICAgICAgICApPy5bMF1cclxuICAgICAgKTtcclxuICAgIHRoaXMuY3JlYXRlT3JVcGRhdGVFdmVudEZvcm1Hcm91cFJlZj8uWzBdXHJcbiAgICAgIC5nZXQoJ2V2ZW50TmFtZScpXHJcbiAgICAgID8uc2V0VmFsdWUodGhpcy5zZWxlY3RlZEV2ZW50RGF0YT8uZXZlbnROYW1lKTtcclxuICAgIHRoaXMuY3JlYXRlT3JVcGRhdGVFdmVudEZvcm1Hcm91cFJlZj8uWzBdXHJcbiAgICAgIC5nZXQoJ2V2ZW50VHlwZScpXHJcbiAgICAgID8uc2V0VmFsdWUoXHJcbiAgICAgICAgdGhpcy5ldmVudFR5cGVzPy5maWx0ZXIoXHJcbiAgICAgICAgICAob3B0aW9uKSA9PiBvcHRpb24/LmlkID09PSB0aGlzLnNlbGVjdGVkRXZlbnREYXRhPy5ldmVudFR5cGVcclxuICAgICAgICApPy5bMF1cclxuICAgICAgKTtcclxuICAgIHRoaXMuY3JlYXRlT3JVcGRhdGVFdmVudEZvcm1Hcm91cFJlZj8uWzFdXHJcbiAgICAgIC5nZXQoJ3N0YXJ0RGF0ZScpXHJcbiAgICAgID8uc2V0VmFsdWUobW9tZW50KHRoaXMuc2VsZWN0ZWRFdmVudERhdGE/LnN0YXJ0RGF0ZSkpO1xyXG4gICAgdGhpcy5jcmVhdGVPclVwZGF0ZUV2ZW50Rm9ybUdyb3VwUmVmPy5bMV1cclxuICAgICAgLmdldCgnZW5kRGF0ZScpXHJcbiAgICAgID8uc2V0VmFsdWUobW9tZW50KHRoaXMuc2VsZWN0ZWRFdmVudERhdGE/LmVuZERhdGUpKTtcclxuICAgIHRoaXMuY3JlYXRlT3JVcGRhdGVFdmVudEZvcm1Hcm91cFJlZj8uWzFdXHJcbiAgICAgIC5nZXQoJ3RpbWVab25lJylcclxuICAgICAgPy5zZXRWYWx1ZShcclxuICAgICAgICB0aGlzLnRpbWV6b25lcz8uZmlsdGVyKFxyXG4gICAgICAgICAgKG9wdGlvbikgPT4gb3B0aW9uPy5uYW1lID09PSB0aGlzLnNlbGVjdGVkRXZlbnREYXRhPy50aW1lWm9uZVxyXG4gICAgICAgIClbMF1cclxuICAgICAgKTtcclxuICAgIHRoaXMuY3JlYXRlT3JVcGRhdGVFdmVudEZvcm1Hcm91cFJlZj8uWzJdXHJcbiAgICAgIC5nZXQoJ2FkZHJlc3MnKVxyXG4gICAgICA/LnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRFdmVudERhdGE/LmxvY2F0aW9uKTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRXZlbnREYXRhLm9wZW5Gb3JBbGwpIHtcclxuICAgICAgdGhpcy5hdHRlbmRlZXNUeXBlc1swXS5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5vbkF0dGVuZGVlVHlwZVNlbGVjdGlvbih0aGlzLmF0dGVuZGVlc1R5cGVzWzBdKTtcclxuICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFdmVudERhdGEuZ3JvdXBQYXJ0aWNpcGFudHMgJiZcclxuICAgICAgdGhpcy5zZWxlY3RlZEV2ZW50RGF0YS5yZWdpc3RlcmVkUGFydGljaXBhbnRzXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5hdHRlbmRlZXNUeXBlc1sxXS5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5vbkF0dGVuZGVlVHlwZVNlbGVjdGlvbih0aGlzLmF0dGVuZGVlc1R5cGVzWzFdKTtcclxuICAgICAgdGhpcy5hdHRlbmRlZXNUeXBlc1syXS5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5vbkF0dGVuZGVlVHlwZVNlbGVjdGlvbih0aGlzLmF0dGVuZGVlc1R5cGVzWzJdKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZEV2ZW50RGF0YS5ncm91cFBhcnRpY2lwYW50cykge1xyXG4gICAgICB0aGlzLmF0dGVuZGVlc1R5cGVzWzFdLmNoZWNrZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLm9uQXR0ZW5kZWVUeXBlU2VsZWN0aW9uKHRoaXMuYXR0ZW5kZWVzVHlwZXNbMV0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hdHRlbmRlZXNUeXBlc1syXS5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5vbkF0dGVuZGVlVHlwZVNlbGVjdGlvbih0aGlzLmF0dGVuZGVlc1R5cGVzWzJdKTtcclxuICAgIH1cclxuICAgIHRoaXMuY3JlYXRlT3JVcGRhdGVFdmVudEZvcm1Hcm91cFJlZj8uWzNdXHJcbiAgICAgIC5nZXQoJ2F0dGVuZGVlc1R5cGUnKVxyXG4gICAgICA/LnNldFZhbHVlKHRoaXMuYXR0ZW5kZWVzVHlwZXMubWFwKChvcHRpb24pID0+IG9wdGlvbi5jaGVja2VkKSk7XHJcbiAgICB0aGlzLmNyZWF0ZU9yVXBkYXRlRXZlbnRGb3JtR3JvdXBSZWY/LlsyXVxyXG4gICAgICAuZ2V0KCdjb3VudHJ5JylcclxuICAgICAgPy5zZXRWYWx1ZShcclxuICAgICAgICB0aGlzLmNvdW50cmllcz8uZmlsdGVyKFxyXG4gICAgICAgICAgKG9wdGlvbikgPT4gb3B0aW9uPy5pZCA9PT0gdGhpcy5zZWxlY3RlZEV2ZW50RGF0YT8uY291bnRyeVxyXG4gICAgICAgIClbMF1cclxuICAgICAgKTtcclxuICAgIHRoaXMuY3JlYXRlT3JVcGRhdGVFdmVudEZvcm1Hcm91cFJlZj8uWzRdXHJcbiAgICAgIC5nZXQoJ2V2ZW50UGFzc3dvcmQnKVxyXG4gICAgICA/LnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRFdmVudERhdGE/LmV2ZW50UGFzc3dvcmQpO1xyXG4gICAgdGhpcy5jcmVhdGVPclVwZGF0ZUV2ZW50Rm9ybUdyb3VwUmVmPy5bNF1cclxuICAgICAgLmdldCgnaXBBZGRyZXNzUmFuZ2UnKVxyXG4gICAgICA/LnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRFdmVudERhdGE/LmlwYWRkcmVzcyk7XHJcbiAgICB0aGlzLmNyZWF0ZU9yVXBkYXRlRXZlbnRGb3JtR3JvdXBSZWY/Lls1XVxyXG4gICAgICAuZ2V0KCdkZXNjcmlwdGlvbicpXHJcbiAgICAgID8uc2V0VmFsdWUodGhpcy5zZWxlY3RlZEV2ZW50RGF0YT8uZXZlbnREZXNjKTtcclxuICAgIHRoaXMuaXNTdWJtaXRCdXR0b25EaXNhYmxlZCA9IHRydWU7XHJcbiAgICB0aGlzLmdldEZvcm1Hcm91cFZhbHVlcygpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBDb25zdHJ1Y3RzIGVkaXQgZXZlbnQgcGF5bG9hZCBhbmQgY2FsbHMgZWRpdCBldmVudCBBUEkgYW5kIGVtaXRzIGVkaXQgZXZlbnQgQVBJIHJlc3BvbnNlLlxyXG4gICAqIEBwYXJhbSB7Kn0gZm9ybURhdGFcclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBlZGl0RXZlbnQoZm9ybUdyb3VwczogRm9ybUdyb3VwW10pOiB2b2lkIHtcclxuICAgIGNvbnN0IGV2ZW50QmFzaWNEZXRhaWxzID0gZm9ybUdyb3Vwcz8uWzBdPy5nZXRSYXdWYWx1ZSgpO1xyXG4gICAgY29uc3QgZXZlbnREYXRlQW5kVGltZURldGFpbHMgPSBmb3JtR3JvdXBzPy5bMV0/LmdldFJhd1ZhbHVlKCk7XHJcbiAgICBjb25zdCBldmVudExvY2F0aW9uRGV0YWlscyA9IGZvcm1Hcm91cHM/LlsyXT8uZ2V0UmF3VmFsdWUoKTtcclxuICAgIGNvbnN0IGV2ZW50QXR0ZW5kZWVEZXRhaWxzID0gZm9ybUdyb3Vwcz8uWzNdPy5nZXRSYXdWYWx1ZSgpO1xyXG4gICAgY29uc3QgZXZlbnRBY2Nlc3NEZXRhaWxzID0gZm9ybUdyb3Vwcz8uWzRdPy5nZXRSYXdWYWx1ZSgpO1xyXG4gICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuY29udmVydERhdGVUaW1lVG9VVEMoXHJcbiAgICAgIGV2ZW50RGF0ZUFuZFRpbWVEZXRhaWxzPy5zdGFydERhdGUuZm9ybWF0KFxyXG4gICAgICAgIERhdGVGb3JtYXRzLnJlcXVlc3RQYXlsb2FkRm9ybWF0XHJcbiAgICAgIClcclxuICAgICk7XHJcbiAgICBjb25zdCBlbmREYXRlID0gdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuY29udmVydERhdGVUaW1lVG9VVEMoXHJcbiAgICAgIGV2ZW50RGF0ZUFuZFRpbWVEZXRhaWxzPy5lbmREYXRlLmZvcm1hdChEYXRlRm9ybWF0cz8ucmVxdWVzdFBheWxvYWRGb3JtYXQpXHJcbiAgICApO1xyXG4gICAgY29uc3QgZWRpdEV2ZW50UGF5bG9hZDogQ3JlYXRlT3JFZGl0RXZlbnRQYXlsb2FkID0ge1xyXG4gICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgZXZlbnROYW1lOiBldmVudEJhc2ljRGV0YWlscz8uZXZlbnROYW1lLFxyXG4gICAgICAgIGV2ZW50SWQ6IHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmdldFNlbGVjdGVkRXZlbnRJZCgpID8/IG51bGwsXHJcbiAgICAgICAgZXZlbnRUeXBlOiBldmVudEJhc2ljRGV0YWlscz8uZXZlbnRUeXBlPy5pZCxcclxuICAgICAgICBncm91cElkOiBldmVudEJhc2ljRGV0YWlscz8ucmVsYXRlZEdyb3VwPy5pZCxcclxuICAgICAgICBzdGFydERhdGU6IHN0YXJ0RGF0ZSxcclxuICAgICAgICBlbmREYXRlOiBlbmREYXRlLFxyXG4gICAgICAgIHRpbWVab25lOiBldmVudERhdGVBbmRUaW1lRGV0YWlscz8udGltZVpvbmU/Lm5hbWUsXHJcbiAgICAgICAgY291bnRyeTogZXZlbnRMb2NhdGlvbkRldGFpbHM/LmNvdW50cnk/LmlkLFxyXG4gICAgICAgIGV2ZW50UGFzc3dvcmQ6IGV2ZW50QWNjZXNzRGV0YWlscz8uZXZlbnRQYXNzd29yZCxcclxuICAgICAgICBvcGVuRm9yQWxsOiBldmVudEF0dGVuZGVlRGV0YWlscz8uYXR0ZW5kZWVzVHlwZT8uWzBdLFxyXG4gICAgICAgIHJlZ2lzdGVyZWRQYXJ0aWNpcGFudHM6IGV2ZW50QXR0ZW5kZWVEZXRhaWxzPy5hdHRlbmRlZXNUeXBlPy5bMl0sXHJcbiAgICAgICAgZ3JvdXBQYXJ0aWNpcGFudHM6IGV2ZW50QXR0ZW5kZWVEZXRhaWxzPy5hdHRlbmRlZXNUeXBlPy5bMV0sXHJcbiAgICAgICAgaXBhZGRyZXNzOiBldmVudEFjY2Vzc0RldGFpbHM/LmlwQWRkcmVzc1JhbmdlID8/ICcnLFxyXG4gICAgICAgIGxvY2F0aW9uOiBldmVudExvY2F0aW9uRGV0YWlscz8uYWRkcmVzcyxcclxuICAgICAgICBldmVudFRpdGxlOiBldmVudEJhc2ljRGV0YWlscz8uZXZlbnROYW1lLFxyXG4gICAgICAgIGV2ZW50RGVzYzogZm9ybUdyb3Vwcz8uWzVdPy5nZXRSYXdWYWx1ZSgpPy5kZXNjcmlwdGlvbixcclxuICAgICAgICB2aXJ0dWFsTWVldGluZ1VybDogZXZlbnRMb2NhdGlvbkRldGFpbHM/LnZpcnR1YWxNZWV0aW5nVXJsID8/ICcnLFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICAgIC5lZGl0RXZlbnQoZWRpdEV2ZW50UGF5bG9hZClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzPy5zdGF0dXMpIHtcclxuICAgICAgICAgICAgdGhpcy5jYW5EaXNhYmxlQWRkTWVldGluZyhmYWxzZSk7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Rm9ybUdyb3VwVmFsdWVzKCk7XHJcbiAgICAgICAgICAgIGlmIChyZXM/LmJvZHkpXHJcbiAgICAgICAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2U/LnNldFNlbGVjdGVkRXZlbnRJZChcclxuICAgICAgICAgICAgICAgIE9iamVjdChyZXM/LmJvZHkpPy5pZFxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlPy5zZXRTZWxlY3RlZEV2ZW50RGF0YSh7XHJcbiAgICAgICAgICAgICAgc3RhcnREYXRlOiBzdGFydERhdGUsXHJcbiAgICAgICAgICAgICAgZW5kRGF0ZTogZW5kRGF0ZSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnNldEV2ZW50T3JNZWV0aW5nRm9ybUNoYW5nZVN0YXR1cyhcclxuICAgICAgICAgICAgICBmYWxzZVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dBbGVydE1lc3NhZ2UoXHJcbiAgICAgICAgICAgICAgQWxlcnRUeXBlPy5TVUNDRVNTLFxyXG4gICAgICAgICAgICAgIGVkaXRFdmVudFBheWxvYWQucGF5bG9hZC5ldmVudFRpdGxlICtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/Lm1lc3NhZ2U/LnN1Y2Nlc3M/LnVwZGF0aW9uXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuaGFuZGxlRXJyb3JzKGVycm9yKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgc2VsZWN0ZWQgdGFibGUgcm93IGRhdGEuXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGdldFNlbGVjdGVkUm93RGF0YShyb3c6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZE1lZXRpbmcgPSByb3c7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgdGhlIGNsaWNrZWQgbWVldGluZyBhY3Rpb25cclxuICAgKiBAcGFyYW0ge01lbnV9IG1lbnVcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlT3JNb2RpZnlFdmVudENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGhhbmRsZU1lZXRpbmdBY3Rpb25zKG1lbnU6IE1lbnUpOiB2b2lkIHtcclxuICAgIGlmIChtZW51Py5pZCA9PT0gTWVldGluZ0FjdGlvbi5ERUxFVEVfTUVFVElORykge1xyXG4gICAgICB0aGlzLm9wZW5EZWxldGVNZWV0aW5nc0NvbmZpcm1hdGlvbk1vZGFsKHRoaXMuc2VsZWN0ZWRNZWV0aW5nKTtcclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICBtZW51Py5pZCA9PT0gTWVldGluZ0FjdGlvbi5WSUVXX01FRVRJTkcgfHxcclxuICAgICAgbWVudT8uaWQgPT09IE1lZXRpbmdBY3Rpb24uVklFV19BR0VOREEgfHxcclxuICAgICAgbWVudT8uaWQgPT09IE1lZXRpbmdBY3Rpb24uQ1JFQVRFX0FHRU5EQSB8fFxyXG4gICAgICBtZW51Py5pZCA9PT0gTWVldGluZ0FjdGlvbi5WSUVXX0VESVRfTUVFVElORyB8fFxyXG4gICAgICBtZW51Py5pZCA9PT0gTWVldGluZ0FjdGlvbi5WSUVXX0VESVRfQUdFTkRBXHJcbiAgICApIHtcclxuICAgICAgY29uc3QgbWVldGluZ1ZpZXcgPVxyXG4gICAgICAgIG1lbnU/LmlkID09PSBNZWV0aW5nQWN0aW9uLlZJRVdfRURJVF9NRUVUSU5HIHx8XHJcbiAgICAgICAgbWVudT8uaWQgPT09IE1lZXRpbmdBY3Rpb24uVklFV19NRUVUSU5HXHJcbiAgICAgICAgICA/IE1lZXRpbmdWaWV3Lk1FRVRJTkdfREVUQUlMU1xyXG4gICAgICAgICAgOiBNZWV0aW5nVmlldy5BR0VOREE7XHJcbiAgICAgIGlmICh0aGlzLnJvdXRlUGF0aHM/LmVkaXRNZWV0aW5nKSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMucm91dGVQYXRocy5lZGl0TWVldGluZ10sIHtcclxuICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7XHJcbiAgICAgICAgICAgIGV2ZW50SWQ6IHRoaXMuZXZlbnRJZCxcclxuICAgICAgICAgICAgbWVldGluZ0lkOiB0aGlzLnNlbGVjdGVkTWVldGluZz8ubWVldGluZ0lkLFxyXG4gICAgICAgICAgICBtZWV0aW5nVmlldzogbWVldGluZ1ZpZXcsXHJcbiAgICAgICAgICAgIGlzVmlld09ubHk6XHJcbiAgICAgICAgICAgICAgbWVudT8uaWQgPT09IE1lZXRpbmdBY3Rpb24uVklFV19NRUVUSU5HIHx8XHJcbiAgICAgICAgICAgICAgbWVudT8uaWQgPT09IE1lZXRpbmdBY3Rpb24uVklFV19BR0VOREEsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY3JlYXRlTW9kaWZ5RXZlbnRDbGljay5lbWl0KHtcclxuICAgICAgICAgIGV2ZW50SWQ6IHRoaXMuZXZlbnRJZCxcclxuICAgICAgICAgIG1lZXRpbmdJZDogdGhpcy5zZWxlY3RlZE1lZXRpbmc/Lm1lZXRpbmdJZCxcclxuICAgICAgICAgIG1lZXRpbmdWaWV3OiBtZWV0aW5nVmlldyxcclxuICAgICAgICAgIGlzVmlld09ubHk6XHJcbiAgICAgICAgICAgIG1lbnU/LmlkID09PSBNZWV0aW5nQWN0aW9uLlZJRVdfTUVFVElORyB8fFxyXG4gICAgICAgICAgICBtZW51Py5pZCA9PT0gTWVldGluZ0FjdGlvbi5WSUVXX0FHRU5EQSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBzZWxlY3RlZCBtZWV0aW5nIGRldGFpbHMgYW5kIG9wZW5zIHRoZSBtb2RhbCB0byBlZGl0IHRoZSBzZWxlY3RlZCBtZWV0aW5nIHdoaWxlIGNsaWNraW5nIGVkaXQgbWVldGluZyBtZW51LlxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVPck1vZGlmeUV2ZW50Q29tcG9uZW50XHJcbiAgICovXHJcbiAgbmF2aWdhdGVUb0VkaXRNZWV0aW5nUGFnZShzZWxlY3RlZE1lZXRpbmc6IE1lZXRpbmdEZXRhaWxzKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkTWVldGluZyA9IHNlbGVjdGVkTWVldGluZztcclxuICAgIGlmICh0aGlzLnJvdXRlUGF0aHM/LmVkaXRNZWV0aW5nKSB7XHJcbiAgICAgIHRoaXMucm91dGVyPy5uYXZpZ2F0ZShbdGhpcy5yb3V0ZVBhdGhzLmVkaXRNZWV0aW5nXSwge1xyXG4gICAgICAgIHF1ZXJ5UGFyYW1zOiB7XHJcbiAgICAgICAgICBldmVudElkOiB0aGlzLmV2ZW50SWQsXHJcbiAgICAgICAgICBtZWV0aW5nSWQ6IHNlbGVjdGVkTWVldGluZz8ubWVldGluZ0lkLFxyXG4gICAgICAgICAgaXNWaWV3T25seTogIXNlbGVjdGVkTWVldGluZz8uaXNNZW1iZXJPZkdyb3VwLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jcmVhdGVNb2RpZnlFdmVudENsaWNrLmVtaXQoe1xyXG4gICAgICAgIGV2ZW50SWQ6IHRoaXMuZXZlbnRJZCxcclxuICAgICAgICBtZWV0aW5nSWQ6IHNlbGVjdGVkTWVldGluZz8ubWVldGluZ0lkLFxyXG4gICAgICAgIGlzVmlld09ubHk6ICFzZWxlY3RlZE1lZXRpbmc/LmlzTWVtYmVyT2ZHcm91cCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIE9wZW5zIHRoZSBjb25maXJtYXRpb24gbW9kYWwgdG8gZ2V0IHVzZXIgY29uZmlybWF0aW9uIHRvIGRlbGV0ZSB0aGUgbWVldGluZ3MgZnJvbSB0aGUgc2VsZWN0ZWQgZXZlbnQuXHJcbiAgICogQHBhcmFtIHsqfSBzZWxlY3RlZE1lZXRpbmdzXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIG9wZW5EZWxldGVNZWV0aW5nc0NvbmZpcm1hdGlvbk1vZGFsKHNlbGVjdGVkTWVldGluZ3M6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZE1lZXRpbmdJZHMgPSBbXTtcclxuICAgIGlmIChzZWxlY3RlZE1lZXRpbmdzPy5tZWV0aW5nSWQpXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRNZWV0aW5nSWRzPy5wdXNoKHNlbGVjdGVkTWVldGluZ3M/Lm1lZXRpbmdJZCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHNlbGVjdGVkTWVldGluZ3M/LmZvckVhY2goKG1lZXRpbmc6IE1lZXRpbmcpID0+IHtcclxuICAgICAgICBpZiAobWVldGluZz8ubWVldGluZ0lkKVxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZXRpbmdJZHM/LnB1c2gobWVldGluZy5tZWV0aW5nSWQpO1xyXG4gICAgICB9KTtcclxuICAgIGNvbnN0IGNvbmZpcm1hdGlvbkluZm8gPSB0aGlzLnNjcmVlblRleHRzPy5kZWxldGVNZWV0aW5ncz8uY29uZmlybWF0aW9uSW5mbztcclxuICAgIGNvbnN0IGRlbGV0ZVVzZXJHcm91cE1vZGFsT3B0aW9ucyA9IHtcclxuICAgICAgbGVmdEJ1dHRvbkxhYmVsOiBjb25maXJtYXRpb25JbmZvPy5sZWZ0QnV0dG9uTGFiZWwsXHJcbiAgICAgIHJpZ2h0QnV0dG9uTGFiZWw6IGNvbmZpcm1hdGlvbkluZm8/LnJpZ2h0QnV0dG9uTGFiZWwsXHJcbiAgICAgIHByb21wdE1lc3NhZ2U6IGNvbmZpcm1hdGlvbkluZm8/LnByb21wdE1lc3NhZ2UsXHJcbiAgICAgIGFjdGlvbkJ1dHRvbkFsaWduOiBBbGlnblR5cGU/Lk1JRERMRSxcclxuICAgIH07XHJcbiAgICB0aGlzLmRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oTW9kYWxDb25maXJtYXRpb25Db21wb25lbnQsIHtcclxuICAgICAgZGF0YTogZGVsZXRlVXNlckdyb3VwTW9kYWxPcHRpb25zLFxyXG4gICAgICBhdXRvRm9jdXM6ICdkaWFsb2cnLFxyXG4gICAgICBhcmlhTGFiZWw6IHRoaXMuY29uc3RhbnRzPy5hcmlhTGFiZWw/LmFsZXJ0LFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZlxyXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHRoaXMuZGVsZXRlRXZlbnRNZWV0aW5ncygpO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2VuZHMgQVBJIFJlcXVlc3QgdG8gZGVsZXRlIHRoZSBzZWxlY3RlZCBtZWV0aW5ncyB3aXRoaW4gZXZlbnQgYW5kIGhhbmRsZXMgdGhlIHN1Y2Nlc3MgYW5kIGVycm9yIHJlc3BvbnNlIG9mIHRoZSBodHRwIHJlcXVlc3QuXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBkZWxldGVFdmVudE1lZXRpbmdzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgICAgLmRlbGV0ZUV2ZW50c09yTWVldGluZ3Moe1xyXG4gICAgICAgIHBheWxvYWQ6IHRoaXMuc2VsZWN0ZWRNZWV0aW5nSWRzLFxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZ2V0TWVldGluZ3NCeUV2ZW50SWQoe1xyXG4gICAgICAgICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgICAgICAgZXZlbnRJZDogdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuZ2V0U2VsZWN0ZWRFdmVudElkKCksXHJcbiAgICAgICAgICAgICAgc29ydENvbHVtbjogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/Lm1lZXRpbmdUaXRsZSxcclxuICAgICAgICAgICAgICBhc2NlbmRpbmdPcmRlcjogdHJ1ZSxcclxuICAgICAgICAgICAgICBwYWdlOiAxLFxyXG4gICAgICAgICAgICAgIHNpemU6IHRoaXMucGFnaW5hdG9yQ29uZmlnPy5yZWNvcmRzUGVyUGFnZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2U/LnNob3dNZXNzYWdlKHtcclxuICAgICAgICAgICAgc3RhdHVzOiAnY3VzdG9tJyxcclxuICAgICAgICAgICAgbWVzc2FnZTpcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVldGluZ0lkcy5sZW5ndGggK1xyXG4gICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/LmRlbGV0ZU1lZXRpbmdzPy5tZXNzYWdlPy5zdWNjZXNzPy5kZWxldGlvbixcclxuICAgICAgICAgICAgYWxlcnRUeXBlOiBBbGVydFR5cGUuU1VDQ0VTUyxcclxuICAgICAgICAgICAgaXNDbG9zZU5lZWRlZDogdHJ1ZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuaGFuZGxlRXJyb3JzKGVycm9yKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2hvd3MgdGhlIHNlYXJjaCBmaWVsZCBvbiBjbGljayBvZiBzZWFyY2ggaWNvbiBpbiBjYXNlIG9mIG1vYmlsZSB2aWV3XHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBvbk1lZXRpbmdTZWFyY2goKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzU2VhcmNoQWN0aXZlID0gdHJ1ZTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyBpc1NlYXJjaEFjdGl2ZSB0byB0cnVlIGFuZCBsb2FkcyB0aGUgbWVldGluZ3MgLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZWFyY2hUZXJtXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBvbk1lZXRpbmdzU2VhcmNoQ2xpY2soc2VhcmNoVGVybTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoc2VhcmNoVGVybSkge1xyXG4gICAgICB0aGlzLnRyaW1tZWRTZWFyY2hUZXJtID0gc2VhcmNoVGVybS50cmltKCk7XHJcbiAgICAgIHRoaXMuaXNTZWFyY2hBY3RpdmUgPSB0cnVlO1xyXG4gICAgICBpZiAoIXRoaXMudHJpbW1lZFNlYXJjaFRlcm0pIHJldHVybjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoUmVzdWx0TWVzc2FnZSA9ICcnO1xyXG4gICAgICB0aGlzLnRyaW1tZWRTZWFyY2hUZXJtID0gJyc7XHJcbiAgICAgIHRoaXMuaXNTZWFyY2hBY3RpdmUgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0TWVldGluZ3NCeUV2ZW50SWQoe1xyXG4gICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgZXZlbnRJZDogdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuZ2V0U2VsZWN0ZWRFdmVudElkKCksXHJcbiAgICAgICAgc29ydENvbHVtbjogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/Lm1lZXRpbmdUaXRsZSxcclxuICAgICAgICBhc2NlbmRpbmdPcmRlcjogZmFsc2UsXHJcbiAgICAgICAgcGFnZTogMSxcclxuICAgICAgICBzaXplOiB0aGlzLnBhZ2luYXRvckNvbmZpZz8ucmVjb3Jkc1BlclBhZ2UsXHJcbiAgICAgICAgc2VhcmNoVGVybTogc2VhcmNoVGVybSA/IHRoaXMudHJpbW1lZFNlYXJjaFRlcm0gOiBudWxsLFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8qXHJcbiAgICogR2V0cyB0aGUgbWVldGluZ3MgYmFzZWQgb24gdGhlIGNvbHVtbiBuYW1lIGFuZCBzb3J0IGRpcmVjdGlvbi5cclxuICAgKiBAcGFyYW0ge1NvcnR9IHNvcnRcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlT3JNb2RpZnlFdmVudENvbXBvbmVudFxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gIG9uU29ydE1lZXRpbmcoc29ydDogU29ydCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZWZhdWx0U29ydGVkQ29sdW1uID0gc29ydC5hY3RpdmU7XHJcbiAgICB0aGlzLmRlZmF1bHRDb2x1bW5Tb3J0RGlyZWN0aW9uID1cclxuICAgICAgc29ydC5kaXJlY3Rpb24gPT09IFRhYmxlQ29sdW1uU29ydERpcmVjdGlvbi5BU0NFTkRJTkc7XHJcbiAgICB0aGlzLmdldE1lZXRpbmdzQnlFdmVudElkKHtcclxuICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgIGV2ZW50SWQ6IHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmdldFNlbGVjdGVkRXZlbnRJZCgpLFxyXG4gICAgICAgIHNvcnRDb2x1bW46IHRoaXMuZGVmYXVsdFNvcnRlZENvbHVtbixcclxuICAgICAgICBhc2NlbmRpbmdPcmRlcjogdGhpcy5kZWZhdWx0Q29sdW1uU29ydERpcmVjdGlvbixcclxuICAgICAgICBwYWdlOiAxLFxyXG4gICAgICAgIHNpemU6IHRoaXMucGFnaW5hdG9yQ29uZmlnPy5yZWNvcmRzUGVyUGFnZSxcclxuICAgICAgICBzZWFyY2hUZXJtOiB0aGlzLnRyaW1tZWRTZWFyY2hUZXJtID8/IG51bGwsXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLypcclxuICAgKiBEaXNhYmxlcyBhZGQgbWVldGluZyBsaW5rL2ljb24gd2hlbiB0aGUgY3VycmVudCBmb3JtIHZhbHVlIGNoYW5nZXMuXHJcbiAgICogQHBhcmFtIHtGb3JtR3JvdXBbXX0gZm9ybUdyb3Vwc1xyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVPck1vZGlmeUV2ZW50Q29tcG9uZW50XHJcbiAgICovXHJcbiAgY2hlY2tGb3JGb3JtVmFsdWVDaGFuZ2VzKGZvcm1Hcm91cHM6IEZvcm1Hcm91cFtdKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5wcmV2aW91c0Zvcm1WYWx1ZXMpIHtcclxuICAgICAgdGhpcy5jYW5EaXNhYmxlQWRkTWVldGluZyhcclxuICAgICAgICB0aGlzLmZvcm1VdGlsaXR5U2VydmljZS5nZXRGb3JtVmFsdWVDaGFuZ2VTdGF0dXMoXHJcbiAgICAgICAgICB0aGlzLnByZXZpb3VzRm9ybVZhbHVlcyxcclxuICAgICAgICAgIGZvcm1Hcm91cHNcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFN0b3JlcyBmb3JtIGdyb3VwIHZhbHVlcy5cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlT3JNb2RpZnlFdmVudENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldEZvcm1Hcm91cFZhbHVlcygpOiB2b2lkIHtcclxuICAgIHRoaXMucHJldmlvdXNGb3JtVmFsdWVzID0gdGhpcy5jcmVhdGVPclVwZGF0ZUV2ZW50Rm9ybUdyb3VwUmVmPy5tYXAoXHJcbiAgICAgIChmb3JtZ3JvdXApID0+IHtcclxuICAgICAgICByZXR1cm4gZm9ybWdyb3VwLnZhbHVlO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBOZ09uRGVzdHJveSBwZXJmb3JtcyBuZWNlc3NhcnkgY2xlYW51cCB0YXNrcywgc3VjaCBhcyB1bnN1YnNjcmliaW5nIGZyb20gc3Vic2NyaXB0aW9uIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBiZWluZyBkZXN0cm95ZWQuXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogUmVzZXQgdGhlIGRyb3Bkb3duIG9wdGlvbnMgdG8gZGVmYXVsdCB3aGVuIHRoZSBkcm9wZG93biBpcyBjbG9zZWQgYW5kIHRoZSBkcm9wZG93biBvcHRpb25zIGFyZSBpcyBlbXB0eS5cclxuICAgKiBAcGFyYW0ge1NlbGVjdE9wZW5lZFN0YXRlfSBldmVudFxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVNb2RpZnlNZWV0aW5nQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25Ecm9wZG93bk9wZW5lZENoYW5nZShldmVudDogU2VsZWN0T3BlbmVkU3RhdGUpOiB2b2lkIHtcclxuICAgIHN3aXRjaCAoZXZlbnQuY29udHJvbE5hbWUpIHtcclxuICAgICAgY2FzZSBGT1JNX0NPTlRST0xTLlRJTUVfWk9ORTpcclxuICAgICAgICB0aGlzLnRpbWV6b25lcyA9XHJcbiAgICAgICAgICAhZXZlbnQub3BlbmVkICYmIHRoaXMudGltZXpvbmVzLmxlbmd0aCA9PT0gMFxyXG4gICAgICAgICAgICA/IHRoaXMuZGVmYXVsdFRpbWVab25lc1xyXG4gICAgICAgICAgICA6IHRoaXMudGltZXpvbmVzO1xyXG4gICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnVwZGF0ZUZvcm1Db250cm9sT3B0aW9ucyhcclxuICAgICAgICAgIEZPUk1fQ09OVFJPTFMuVElNRV9aT05FLFxyXG4gICAgICAgICAgJ2Ryb3Bkb3duT3B0aW9ucycsXHJcbiAgICAgICAgICB0aGlzLnRpbWV6b25lcyxcclxuICAgICAgICAgIHRoaXMuZHluYW1pY0Zvcm1Db21wb25lbnRcclxuICAgICAgICApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEZPUk1fQ09OVFJPTFMuQ09VTlRSWTpcclxuICAgICAgICB0aGlzLmNvdW50cmllcyA9XHJcbiAgICAgICAgICAhZXZlbnQub3BlbmVkICYmIHRoaXMuY291bnRyaWVzLmxlbmd0aCA9PT0gMFxyXG4gICAgICAgICAgICA/IHRoaXMuZGVmYXVsdENvdW50cmllc1xyXG4gICAgICAgICAgICA6IHRoaXMuY291bnRyaWVzO1xyXG4gICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnVwZGF0ZUZvcm1Db250cm9sT3B0aW9ucyhcclxuICAgICAgICAgIEZPUk1fQ09OVFJPTFMuQ09VTlRSWSxcclxuICAgICAgICAgICdkcm9wZG93bk9wdGlvbnMnLFxyXG4gICAgICAgICAgdGhpcy5jb3VudHJpZXMsXHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNGb3JtQ29tcG9uZW50XHJcbiAgICAgICAgKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBGT1JNX0NPTlRST0xTLlJFTEFURURfR1JPVVA6XHJcbiAgICAgICAgdGhpcy5ncm91cHMgPVxyXG4gICAgICAgICAgIWV2ZW50Lm9wZW5lZCAmJiB0aGlzLmdyb3Vwcy5sZW5ndGggPT09IDBcclxuICAgICAgICAgICAgPyB0aGlzLmRlZmF1bHRHcm91cHNcclxuICAgICAgICAgICAgOiB0aGlzLmdyb3VwcztcclxuICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS51cGRhdGVGb3JtQ29udHJvbE9wdGlvbnMoXHJcbiAgICAgICAgICBGT1JNX0NPTlRST0xTLlJFTEFURURfR1JPVVAsXHJcbiAgICAgICAgICAnZHJvcGRvd25PcHRpb25zJyxcclxuICAgICAgICAgIHRoaXMuZ3JvdXBzLFxyXG4gICAgICAgICAgdGhpcy5keW5hbWljRm9ybUNvbXBvbmVudFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIE5hdmlnYXRlIHRvIGFkZCBtZWV0aW5nIHJvdXRlLlxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVPck1vZGlmeUV2ZW50Q29tcG9uZW50XHJcbiAgICovXHJcbiAgbmF2aWdhdGVUb0FkZE1lZXRpbmcoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5yb3V0ZVBhdGhzPy5jcmVhdGVNZWV0aW5nKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLnJvdXRlUGF0aHMuY3JlYXRlTWVldGluZ10sIHtcclxuICAgICAgICBxdWVyeVBhcmFtczogeyBldmVudElkOiB0aGlzLmV2ZW50SWQgfSxcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNyZWF0ZU1vZGlmeUV2ZW50Q2xpY2suZW1pdCh7IGV2ZW50SWQ6IHRoaXMuZXZlbnRJZCB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogRW5hYmxlcyBvciBkaXNhYmxlcyBhZGQgbWVldGluZyBidXR0b24vbGluayBiYXNlZCBvbiBjYW5EaXNhYmxlIHZhbHVlXHJcbiAgICogQHBhcmFtIHtib29sZWFufSBjYW5EaXNhYmxlXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBjYW5EaXNhYmxlQWRkTWVldGluZyhjYW5EaXNhYmxlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzQWRkTWVldGluZ0Rpc2FibGVkID0gY2FuRGlzYWJsZTtcclxuICAgIGlmICh0aGlzLmFkZE1lZXRpbmdCdXR0b24pIHtcclxuICAgICAgdGhpcy5hZGRNZWV0aW5nQnV0dG9uLmRpc2FibGVkID0gY2FuRGlzYWJsZTtcclxuICAgICAgdGhpcy5hZGRNZWV0aW5nQnV0dG9uID0geyAuLi50aGlzLmFkZE1lZXRpbmdCdXR0b24gfTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwiaWVlZXNhLWNyZWF0ZS11cGRhdGUtZXZlbnQtZm9ybS1jb250YWluZXJcIlxyXG4gIFtuZ0NsYXNzXT1cInNlbGVjdGVkRXZlbnRJZCA/ICdpZWVlc2EtZXZlbnQnIDogJydcIlxyXG4+XHJcbiAgPHAgKm5nSWY9XCJzZWxlY3RlZEV2ZW50SWRcIiBjbGFzcz1cImllZWVzYS10aXRsZS1sZy0yNCBwYi0zIG0tMFwiPlxyXG4gICAge3sgc2NyZWVuVGV4dHM/LmxhYmVsPy5ldmVudERldGFpbHMgfX1cclxuICA8L3A+XHJcbiAgPGllZWVzYS12aWV3LWV2ZW50XHJcbiAgICAqbmdJZj1cImlzVmlld09ubHkgJiYgc2VsZWN0ZWRFdmVudERhdGFcIlxyXG4gID48L2llZWVzYS12aWV3LWV2ZW50PlxyXG4gIDxpZWVlc2EtZHluYW1pYy1mb3JtXHJcbiAgICAqbmdJZj1cImNyZWF0ZU9yVXBkYXRlRXZlbnRzRm9ybUdyb3VwICYmICFpc1ZpZXdPbmx5XCJcclxuICAgIGNsYXNzPVwiaWVlZXNhLWNyZWF0ZS11cGRhdGUtZXZlbnQtZm9ybVwiXHJcbiAgICBbbGVmdEJ1dHRvbkxhYmVsXT1cImxlZnRCdXR0b25MYWJlbFwiXHJcbiAgICBbcmlnaHRCdXR0b25MYWJlbF09XCJyaWdodEJ1dHRvbkxhYmVsXCJcclxuICAgIFtpc0xlZ2VuZFZpc2libGVdPVwidHJ1ZVwiXHJcbiAgICBbaXNTdWJtaXRCdXR0b25EaXNhYmxlZF09XCJpc1N1Ym1pdEJ1dHRvbkRpc2FibGVkXCJcclxuICAgIFtjb2xXaWR0aF09XCJjb2xXaWR0aFwiXHJcbiAgICBbYWN0aW9uQnV0dG9uQWxpZ25dPVwiYWN0aW9uQnV0dG9uQWxpZ25cIlxyXG4gICAgW2Zvcm1Hcm91cHNdPVwiY3JlYXRlT3JVcGRhdGVFdmVudHNGb3JtR3JvdXBcIlxyXG4gICAgW2lzTGVmdEJ1dHRvbk5lZWRlZF09XCJ0cnVlXCJcclxuICAgIChmb3JtQ2hlY2tib3hTZWxlY3Rpb24pPVwib25BdHRlbmRlZVR5cGVTZWxlY3Rpb24oJGV2ZW50LCB0cnVlKVwiXHJcbiAgICAoZm9ybUxlZnRCdXR0b25DbGlja2VkKT1cIm9uRm9ybUNhbmNlbCgpXCJcclxuICAgIChmb3JtR3JvdXBzUmVmZXJlbmNlKT1cImdldENyZWF0ZU9yVXBkYXRlRXZlbnRGb3JtR3JvdXBSZWYoJGV2ZW50KVwiXHJcbiAgICAoZm9ybVN1Ym1pdCk9XCJvbkZvcm1TdWJtaXQoJGV2ZW50KVwiXHJcbiAgICAoZm9ybUNoYW5nZSk9XCJvbkZvcm1DaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAoZm9ybVNlbGVjdFNlYXJjaCk9XCJmb3JtU2VsZWN0U2VhcmNoKCRldmVudClcIlxyXG4gICAgKGRyb3Bkb3duT3BlbmVkQ2hhbmdlKT1cIm9uRHJvcGRvd25PcGVuZWRDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgPjwvaWVlZXNhLWR5bmFtaWMtZm9ybT5cclxuXHJcbiAgPHAgY2xhc3M9XCJpZWVlc2EtdGl0bGUtbGctMjQgbWItMCBtdC0zXCI+XHJcbiAgICB7eyBzY3JlZW5UZXh0cz8ubGFiZWw/Lm1lZXRpbmdEZXRhaWxzIH19XHJcbiAgPC9wPlxyXG4gIDxwIGNsYXNzPVwiaWVlZXNhLWJvZHktbWQtMTQgaWVlZXNhLWFkZC1tZWV0aW5ncy10aXRsZVwiICpuZ0lmPVwiIWlzVmlld09ubHlcIj5cclxuICAgIHt7IG1lZXRpbmdEZXRhaWxzVGl0bGUgfX1cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNTZWFyY2hBY3RpdmUgJiYgIWlzVmlld09ubHlcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtZWV0aW5ncz8ubGVuZ3RoICYmIGlzQWRkTWVldGluZ0FsbG93ZWRcIlxyXG4gICAgICAgID5cIjwvbmctY29udGFpbmVyXHJcbiAgICAgID5cclxuICAgICAgPGFcclxuICAgICAgICAqbmdJZj1cIm1lZXRpbmdzPy5sZW5ndGggPT09IDAgJiYgaXNBZGRNZWV0aW5nQWxsb3dlZFwiXHJcbiAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlVG9BZGRNZWV0aW5nKClcIlxyXG4gICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2llZWVzYS1hZGQtbWVldGluZy1saW5rJzogaXNBZGRNZWV0aW5nRGlzYWJsZWQgfVwiXHJcbiAgICAgICAgPnt7IGFkZE1lZXRpbmdzTGluayB9fTwvYVxyXG4gICAgICA+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbWVldGluZ3M/Lmxlbmd0aCAmJiBpc0FkZE1lZXRpbmdBbGxvd2VkXCJcclxuICAgICAgICA+XCI8L25nLWNvbnRhaW5lclxyXG4gICAgICA+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L3A+XHJcbiAgPGllZWVzYS1kYXRhLXRhYmxlXHJcbiAgICAqbmdJZj1cIlxyXG4gICAgICAocGFnaW5hdG9yQ29uZmlnPy50b3RhbFJlY29yZHMgJiYgbWVldGluZ3M/Lmxlbmd0aCkgfHwgaXNTZWFyY2hBY3RpdmVcclxuICAgIFwiXHJcbiAgICBjbGFzcz1cImllZWVzYS1tZWV0aW5nc1wiXHJcbiAgICBbbmdDbGFzc109XCJpc1ZpZXdPbmx5ID8gJ2llZWVzYS12aWV3LW1lZXRpbmdzJyA6ICcnXCJcclxuICAgIFt0YWJsZURhdGFJbmZvXT1cIm1lZXRpbmdzXCJcclxuICAgIFtjb2x1bW5TY2hlbWFJbmZvXT1cImNvbHVtblNjaGVtYVwiXHJcbiAgICBbc2VhcmNoUGxhY2VIb2xkZXJUZXh0XT1cInNjcmVlblRleHRzPy5zZWFyY2hNZWV0aW5nXCJcclxuICAgIFtzZWFyY2hUeXBlXT1cInNlYXJjaFR5cGVcIlxyXG4gICAgKHNlYXJjaGVkVmFsdWUpPVwib25NZWV0aW5nc1NlYXJjaENsaWNrKCRldmVudClcIlxyXG4gICAgW3RhYmxlQWN0aW9uc109XCJtZWV0aW5nQWN0aW9uc1wiXHJcbiAgICBbYWRkQnV0dG9uXT1cImFkZE1lZXRpbmdCdXR0b25cIlxyXG4gICAgW3BhZ2luYXRvckNvbmZpZ109XCJwYWdpbmF0b3JDb25maWdcIlxyXG4gICAgW2xlZ2VuZHNdPVwibWVldGluZ0xlZ2VuZHNcIlxyXG4gICAgKG1lbnVBY3Rpb25DbGljayk9XCJnZXRTZWxlY3RlZFJvd0RhdGEoJGV2ZW50KVwiXHJcbiAgICAoc2VsZWN0QWN0aW9uTWVudSk9XCJoYW5kbGVNZWV0aW5nQWN0aW9ucygkZXZlbnQpXCJcclxuICAgIChwYWdpbmF0aW9uQ2hhbmdlKT1cIm9uTWVldGluZ3NUYWJsZVBhZ2VDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAoc29ydENoYW5nZSk9XCJvblNvcnRNZWV0aW5nKCRldmVudClcIlxyXG4gICAgKHNlbGVjdGVkUm93c1RvRGVsZXRlKT1cIm9wZW5EZWxldGVNZWV0aW5nc0NvbmZpcm1hdGlvbk1vZGFsKCRldmVudClcIlxyXG4gICAgW3NlYXJjaFN1cHBvcnRNZXNzYWdlXT1cInN1cHBvcnRNZXNzYWdlXCJcclxuICAgIFtzZWFyY2hSZXN1bHRNZXNzYWdlXT1cInNlYXJjaFJlc3VsdE1lc3NhZ2VcIlxyXG4gICAgW2NhbkRpc2FibGVDaGVja2JveF09XCJ0cnVlXCJcclxuICAgIChyb3dMaW5rKT1cIm5hdmlnYXRlVG9FZGl0TWVldGluZ1BhZ2UoJGV2ZW50KVwiXHJcbiAgICAoYWRkUm93KT1cIm5hdmlnYXRlVG9BZGRNZWV0aW5nKClcIlxyXG4gID5cclxuICA8L2llZWVzYS1kYXRhLXRhYmxlPlxyXG48L2Rpdj5cclxuIl19
|