@provoly/dashboard 0.18.8 → 0.18.10

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.
Files changed (45) hide show
  1. package/dataset/components/dataset-card/dataset-card.component.d.ts +2 -2
  2. package/dataset/i18n/en.translations.d.ts +1 -0
  3. package/dataset/i18n/fr.translations.d.ts +1 -0
  4. package/esm2022/dataset/components/dataset-card/dataset-card.component.mjs +7 -7
  5. package/esm2022/dataset/components/dataset.component.mjs +3 -3
  6. package/esm2022/dataset/i18n/en.translations.mjs +2 -1
  7. package/esm2022/dataset/i18n/fr.translations.mjs +2 -1
  8. package/esm2022/lib/core/store/search/search.effects.mjs +2 -3
  9. package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widget-factory.service.mjs +8 -1
  10. package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widgets-definition.model.mjs +1 -1
  11. package/esm2022/lib/dashboard/store/dashboard.actions.mjs +3 -2
  12. package/esm2022/lib/dashboard/store/dashboard.effects.mjs +17 -17
  13. package/esm2022/presentation/components/presentation.component.mjs +2 -1
  14. package/esm2022/presentation/components/title-presentation/title-presentation.component.mjs +3 -3
  15. package/esm2022/restitution/components/restitution-catalog/restitution-catalog.component.mjs +3 -1
  16. package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +11 -3
  17. package/esm2022/widgets/widget-table/component/widget-table.component.mjs +4 -7
  18. package/fesm2022/provoly-dashboard-dataset.mjs +6 -4
  19. package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
  20. package/fesm2022/provoly-dashboard-presentation.mjs +3 -2
  21. package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
  22. package/fesm2022/provoly-dashboard-restitution.mjs +2 -0
  23. package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
  24. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +10 -2
  25. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
  26. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +3 -6
  27. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -1
  28. package/fesm2022/provoly-dashboard.mjs +26 -17
  29. package/fesm2022/provoly-dashboard.mjs.map +1 -1
  30. package/lib/core/store/search/search.effects.d.ts +0 -3
  31. package/lib/dashboard/components/widgets/widget-instanciator/widget-factory.service.d.ts +1 -0
  32. package/lib/dashboard/components/widgets/widget-instanciator/widgets-definition.model.d.ts +2 -2
  33. package/lib/dashboard/store/dashboard.actions.d.ts +5 -0
  34. package/lib/dashboard/store/dashboard.effects.d.ts +7 -5
  35. package/package.json +36 -36
  36. package/schematics/migration.json +5 -0
  37. package/schematics/ng-add/index.js +1 -1
  38. package/schematics/ng-add/index.js.map +1 -1
  39. package/schematics/ng-add/index.spec.js +1 -1
  40. package/schematics/ng-add/index.spec.js.map +1 -1
  41. package/schematics/ng-update/version-0-18/index.d.ts +2 -0
  42. package/schematics/ng-update/version-0-18/index.js +15 -0
  43. package/schematics/ng-update/version-0-18/index.js.map +1 -0
  44. package/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.d.ts +9 -1
  45. package/widgets/widget-table/component/widget-table.component.d.ts +0 -1
@@ -169,7 +169,7 @@ export class WidgetAggregatedChartComponent extends DataWidgetComponent {
169
169
  this.aggregatedValues$ = combineLatest([
170
170
  this.datasourceIds$,
171
171
  this.options$,
172
- combineLatest([fromEvent(window, 'datasourceRefresh'), this.datasourceIds$]).pipe(filter(([event, datasources]) => datasources.includes(event.detail)), startWith(undefined))
172
+ combineLatest([fromEvent(window, 'datasourceRefresh'), this.datasourceIds$]).pipe(filter(([event, datasources]) => datasources.includes(event.detail.replace(/$aggregate!/, ''))), startWith(undefined))
173
173
  ]).pipe(debounceTime(100), tap(([datasources]) => this.store.dispatch(SearchActions.setSearchLoading({ datasources, start: true }))), switchMap(([datasources, options]) => this.aggregationService
174
174
  .aggregate(datasources, options)
175
175
  .pipe(tap(() => this.store.dispatch(SearchActions.setSearchLoading({ datasources, start: false }))))), withLatestFrom(this.options$), map(([aggregate, options]) => {
@@ -244,7 +244,8 @@ export class WidgetAggregatedChartComponent extends DataWidgetComponent {
244
244
  // Force a false value here so that vega understands properly
245
245
  zero: !!options.abscissa.keep0
246
246
  //type: WidgetChartComponent.isTimeUnitUTC(variables[0]) ? 'utc' : undefined
247
- }
247
+ },
248
+ ...this.getSort(options.abscissa.attribute, options.graph?.sort, options.ordinate.attribute)
248
249
  }
249
250
  : undefined,
250
251
  y: !isCircular
@@ -401,6 +402,13 @@ export class WidgetAggregatedChartComponent extends DataWidgetComponent {
401
402
  return {};
402
403
  }
403
404
  }
405
+ getSort(abscissa, sort, ordinate) {
406
+ return sort
407
+ ? {
408
+ sort: { field: sort.attribute === abscissa ? 'key' : 'value', order: sort.direction + 'ending' }
409
+ }
410
+ : {};
411
+ }
404
412
  emitManifest() {
405
413
  this.manifestModified.emit({
406
414
  widgetIndex: this.widgetIndex,
@@ -813,4 +821,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
813
821
  type: ViewChild,
814
822
  args: ['vega']
815
823
  }] } });
816
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWFnZ3JlZ2F0ZWQtY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvd2lkZ2V0cy93aWRnZXQtYWdncmVnYXRlZC1jaGFydC9jb21wb25lbnQvd2lkZ2V0LWFnZ3JlZ2F0ZWQtY2hhcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvd2lkZ2V0cy93aWRnZXQtYWdncmVnYXRlZC1jaGFydC9jb21wb25lbnQvd2lkZ2V0LWFnZ3JlZ2F0ZWQtY2hhcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWMsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWhGLE9BQU8sRUFJTCxjQUFjLEVBRWQsbUJBQW1CLEVBRW5CLGNBQWMsRUFDZCxTQUFTLEVBQ1QsU0FBUyxFQUlULGVBQWUsRUFDZixTQUFTLEVBR1QsYUFBYSxFQUViLFFBQVEsRUFDUixvQkFBb0IsRUFDckIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixZQUFZLEVBQ1osTUFBTSxFQUNOLFNBQVMsRUFDVCxHQUFHLEVBRUgsS0FBSyxFQUNMLFNBQVMsRUFDVCxPQUFPLEVBQ1AsU0FBUyxFQUNULEdBQUcsRUFDSCxjQUFjLEVBQ2YsTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN6QyxPQUFPLEVBQUUsU0FBUyxFQUFnQixNQUFNLFdBQVcsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7QUFPeEQsTUFBTSxPQUFPLDhCQUErQixTQUFRLG1CQUFtQjtJQXdDckUsWUFD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LENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDeEYsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsdUJBQXVCLENBQUMsTUFBVztRQUNqQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFO1lBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO2dCQUNyQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSztnQkFDMUIsaUJBQWlCLEVBQUUsTUFBTTthQUMxQixDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxlQUFlLENBQUMsTUFBVztRQUN6QixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFO1lBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO2dCQUNyQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSztnQkFDMUIsU0FBUyxFQUFFLE1BQU07YUFDbEIsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDOzhHQWgrQlUsOEJBQThCO2tHQUE5Qiw4QkFBOEIsd0xDbEQzQyx3K2VBOFdBOzsyRkQ1VGEsOEJBQThCO2tCQUoxQyxTQUFTOytCQUNFLDZCQUE2QjtxTkFJcEIsSUFBSTtzQkFBdEIsU0FBUzt1QkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgQXR0cmlidXRlLFxuICBDaGFydEFnZ3JlZ2F0ZWRXaWRnZXRPcHRpb25zLFxuICBDbGFzcyxcbiAgQ2xhc3NTZWxlY3RvcnMsXG4gIERhdGFzZXQsXG4gIERhdGFXaWRnZXRDb21wb25lbnQsXG4gIEZpZWxkLFxuICBGaWVsZFNlbGVjdG9ycyxcbiAgRmllbGRUeXBlLFxuICBHcmFwaFR5cGUsXG4gIE1vbm9DbGFzc1NlYXJjaFBheWxvYWQsXG4gIE11bHRpQ2xhc3NTZWFyY2hQYXlsb2FkLFxuICBOYW1lZFF1ZXJ5LFxuICBOYW1lZFF1ZXJ5VHlwZXMsXG4gIE9wZXJhdGlvbixcbiAgUHJ5QWdncmVnYXRpb25TZXJ2aWNlLFxuICBQcnlJMThuU2VydmljZSxcbiAgU2VhcmNoQWN0aW9ucyxcbiAgVmFsdWVUeXBlLFxuICBWZWdhVHlwZSxcbiAgV0lER0VUX0hFQURFUl9IRUlHSFRcbn0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgZGVib3VuY2VUaW1lLFxuICBmaWx0ZXIsXG4gIGZyb21FdmVudCxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBzaGFyZSxcbiAgc3RhcnRXaXRoLFxuICBTdWJqZWN0LFxuICBzd2l0Y2hNYXAsXG4gIHRhcCxcbiAgd2l0aExhdGVzdEZyb21cbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBWaWV3IH0gZnJvbSAndmVnYSc7XG5pbXBvcnQgZW1iZWQsIHsgdmVnYSB9IGZyb20gJ3ZlZ2EtZW1iZWQnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwLCBUb3BMZXZlbFNwZWMgfSBmcm9tICd2ZWdhLWxpdGUnO1xuaW1wb3J0IHsgaW5pdENvbmZpZyB9IGZyb20gJ3ZlZ2EtbGl0ZS9idWlsZC9zcmMvY29uZmlnJztcbmltcG9ydCB7IFByeVNjaGVtZVNlcnZpY2UgfSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQvY29tcG9uZW50cy9zY2hlbWUtcGlja2VyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LXdpZGdldC1hZ2dyZWdhdGVkLWNoYXJ0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dpZGdldC1hZ2dyZWdhdGVkLWNoYXJ0LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBXaWRnZXRBZ2dyZWdhdGVkQ2hhcnRDb21wb25lbnQgZXh0ZW5kcyBEYXRhV2lkZ2V0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ3ZlZ2EnKSB2ZWdhITogRWxlbWVudFJlZjtcbiAgb3B0aW9ucyQ6IE9ic2VydmFibGU8Q2hhcnRBZ2dyZWdhdGVkV2lkZ2V0T3B0aW9ucz47XG4gIG9wdGlvbnNDb3B5JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q2hhcnRBZ2dyZWdhdGVkV2lkZ2V0T3B0aW9ucyB8IG51bGw+KG51bGwpO1xuICB2aWV3PzogVmlldztcbiAgdHJpZ2dlciQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICB2ZWdhTGl0ZVNwZWMkOiBPYnNlcnZhYmxlPFRvcExldmVsU3BlYz47XG4gIGZpZWxkcyQ6IE9ic2VydmFibGU8RmllbGRbXT47XG4gIGNsYXNzZXMkOiBPYnNlcnZhYmxlPENsYXNzW10+O1xuICBhdHRyaWJ1dGVUeXBlcyQ6IE9ic2VydmFibGU8e1xuICAgIG9yZGluYXRlOiB7IHZlZ2FUeXBlOiBWZWdhVHlwZTsgZmllbGRUeXBlOiBhbnk7IG5hbWU6IHN0cmluZyB9O1xuICAgIGFic2Npc3NhOiB7IHZlZ2FUeXBlOiBWZWdhVHlwZTsgZmllbGRUeXBlOiBhbnk7IG5hbWU6IHN0cmluZyB9O1xuICAgIGdyb3VwQnk6IHsgdmVnYVR5cGU/OiBWZWdhVHlwZTsgZmllbGRUeXBlPzogYW55OyBuYW1lOiBzdHJpbmcgfTtcbiAgfT47XG4gIGFnZ3JlZ2F0ZWRWYWx1ZXMkOiBPYnNlcnZhYmxlPHsgZGF0YTogYW55OyBvcGVyYXRpb246IGFueSB9PjtcbiAgV0lER0VUX0hFQURFUl9IRUlHSFQgPSBXSURHRVRfSEVBREVSX0hFSUdIVDtcbiAgR3JhcGhUeXBlID0gR3JhcGhUeXBlO1xuICBPcGVyYXRpb24gPSBPcGVyYXRpb247XG4gIGlzQ2hhcnRWYWxpZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHR5cGVPcHRpb25zOiB7IGlkOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfVtdID0gW107XG4gIG9wZXJhdGlvbnMkOiBPYnNlcnZhYmxlPHsgaWQ6IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9W10+O1xuICBhYnNjaXNzYUF0dHJpYnV0ZXMkOiBPYnNlcnZhYmxlPEF0dHJpYnV0ZVtdPjtcbiAgY2xhc3NlczogQ2xhc3NbXSA9IFtdO1xuICBmaWVsZHM6IEZpZWxkW10gPSBbXTtcbiAgb3JkaW5hdGVBdHRyaWJ1dGVzJDogT2JzZXJ2YWJsZTxBdHRyaWJ1dGVbXT47XG4gIHRyaWdnZXJPcmRpbmF0ZUF0dHJpYnV0ZXMkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgY29weUFic2Npc3NhRmllbGQ/OiBGaWVsZDtcbiAgY29weU9yZGluYXRlRmllbGQ/OiBGaWVsZDtcbiAgbm9EYXRhJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgc29ydEFjdGl2ZT8gPSAnbmFtZSc7XG4gIHNvcnREaXJlY3Rpb24/ID0gJ2FzYyc7XG4gIHNvcnRBdHRyaWJ1dGVzJDogT2JzZXJ2YWJsZTx7IGlkPzogc3RyaW5nOyBsYWJlbD86IHN0cmluZyB9W10+O1xuICBzb3J0RGlyZWN0aW9ucyA9IFtcbiAgICB7IHZhbHVlOiAnYXNjJywgbGFiZWw6ICcnIH0sXG4gICAgeyB2YWx1ZTogJ2Rlc2MnLCBsYWJlbDogJycgfVxuICBdO1xuICBub0FnZ3JlZ2F0aW9uRGF0YSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGFsbG93ZWRDbGFzc2VzJDogT2JzZXJ2YWJsZTxDbGFzc1tdPjtcbiAgY29sb3JzID0gdmVnYS5zY2hlbWUoJ1Byb3ZvbHknKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzdG9yZTogU3RvcmU8YW55PixcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFByeUkxOG5TZXJ2aWNlLFxuICAgIGVsOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgYWdncmVnYXRpb25TZXJ2aWNlOiBQcnlBZ2dyZWdhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzY2hlbWVTZXJ2aWNlOiBQcnlTY2hlbWVTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKHN0b3JlLCBlbCk7XG4gICAgdGhpcy50eXBlT3B0aW9ucyA9IE9iamVjdC52YWx1ZXMoR3JhcGhUeXBlKVxuICAgICAgLm1hcCgodikgPT4gKHtcbiAgICAgICAgaWQ6IHYsXG4gICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQHByeS53aWRnZXQuY2hhcnQuZ3JhcGhUeXBlLicgKyB2KVxuICAgICAgfSkpXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS5sYWJlbC5sb2NhbGVDb21wYXJlKGIubGFiZWwpKTtcblxuICAgIHRoaXMub3B0aW9ucyQgPSB0aGlzLm1hbmlmZXN0JC5waXBlKFxuICAgICAgbWFwKFxuICAgICAgICAobWFuaWZlc3QpID0+XG4gICAgICAgICAgbWVyZ2VEZWVwKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBncmFwaDogeyB0eXBlOiBHcmFwaFR5cGUuQkFSLCB0b29sdGlwOiB0cnVlLCBsZWdlbmQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgIGFic2Npc3NhOiB7IGtlZXAwOiB0cnVlIH0sXG4gICAgICAgICAgICAgIG9yZGluYXRlOiB7IGtlZXAwOiB0cnVlIH1cbiAgICAgICAgICAgIH0gYXMgQ2hhcnRBZ2dyZWdhdGVkV2lkZ2V0T3B0aW9ucyxcbiAgICAgICAgICAgIChtYW5pZmVzdC5vcHRpb25zID8/IHt9KSBhcyBDaGFydEFnZ3JlZ2F0ZWRXaWRnZXRPcHRpb25zXG4gICAgICAgICAgKSBhcyBDaGFydEFnZ3JlZ2F0ZWRXaWRnZXRPcHRpb25zXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLm9wdGlvbnMkLnBpcGUoZmlsdGVyKChvcHQpID0+ICEhb3B0KSkuc3Vic2NyaWJlKChvcHRpb25zKSA9PiB7XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob3B0aW9ucykpKTtcbiAgICB9KTtcbiAgICB0aGlzLmZpZWxkcyQgPSB0aGlzLnN0b3JlLnNlbGVjdChGaWVsZFNlbGVjdG9ycy5maWVsZHMpO1xuICAgIHRoaXMuY2xhc3NlcyQgPSB0aGlzLnN0b3JlLnNlbGVjdChDbGFzc1NlbGVjdG9ycy5jbGFzc2VzKTtcblxuICAgIHRoaXMub3BlcmF0aW9ucyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLnJlc3VsdFNldCQsIHRoaXMuY2xhc3NlcyQsIHRoaXMuZmllbGRzJF0pLnBpcGUoXG4gICAgICBtYXAoKFtycywgY2xhc3NlcywgZmllbGRzXSkgPT5cbiAgICAgICAgY2xhc3Nlc1xuICAgICAgICAgIC5maWx0ZXIoKGNsYXp6KSA9PiBPYmplY3Qua2V5cyhycy5pdGVtcykuaW5jbHVkZXMoY2xhenouaWQpKVxuICAgICAgICAgIC5tYXAoKGNsYXp6KSA9PiBjbGF6ei5hdHRyaWJ1dGVzKVxuICAgICAgICAgIC5tYXAoKGF0dHJzKSA9PlxuICAgICAgICAgICAgYXR0cnMuZmlsdGVyKChhdHRyKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gZmllbGRzLmZpbmQoKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpZWxkLmlkID09PSBhdHRyLmZpZWxkO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgcmV0dXJuICEhZmllbGQgJiYgW0ZpZWxkVHlwZS5JTlRFR0VSLCBGaWVsZFR5cGUuREVDSU1BTCwgRmllbGRUeXBlLkxPTkddLmluY2x1ZGVzKGZpZWxkLnR5cGUpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgICAgLnJlZHVjZSgoYSwgYikgPT4gWy4uLmEsIC4uLmJdLCBbXSlcbiAgICAgICAgICAuZmlsdGVyKChhdHRyKSA9PiAhIWF0dHIpXG4gICAgICApLFxuICAgICAgbWFwKChhdHRyaWJ1dGVzKSA9PlxuICAgICAgICAoYXR0cmlidXRlcy5sZW5ndGggPiAwXG4gICAgICAgICAgPyBPYmplY3QudmFsdWVzKE9wZXJhdGlvbikuZmlsdGVyKChvcGVyYXRpb24pID0+IG9wZXJhdGlvbiAhPT0gT3BlcmF0aW9uLkVYVEVOVClcbiAgICAgICAgICA6IFtPcGVyYXRpb24uQ09VTlQsIE9wZXJhdGlvbi5ESVNUSU5DVCwgT3BlcmF0aW9uLk5PTkVdXG4gICAgICAgIClcbiAgICAgICAgICAubWFwKCh2KSA9PiAoe1xuICAgICAgICAgICAgaWQ6IHYsXG4gICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0Bwcnkud2lkZ2V0LmNoYXJ0Lm9wZXJhdGlvbi4nICsgdilcbiAgICAgICAgICB9KSlcbiAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5sYWJlbC5sb2NhbGVDb21wYXJlKGIubGFiZWwpKVxuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuZmllbGRzJC5zdWJzY3JpYmUoKGZpZWxkcykgPT4gKHRoaXMuZmllbGRzID0gZmllbGRzKSkpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQodGhpcy5jbGFzc2VzJC5zdWJzY3JpYmUoKGNsYXNzZXMpID0+ICh0aGlzLmNsYXNzZXMgPSBjbGFzc2VzKSkpO1xuXG4gICAgdGhpcy5hbGxvd2VkQ2xhc3NlcyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmNsYXNzZXMkLCB0aGlzLnVzZWREYXRhc291cmNlcyRdKS5waXBlKFxuICAgICAgbWFwKChbY2xhc3NlcywgZGF0YXNvdXJjZXNdKSA9PiB7XG4gICAgICAgIGNvbnN0IGhhc0Z1bGxUZXh0ID0gZGF0YXNvdXJjZXNcbiAgICAgICAgICAubWFwKChkcykgPT4gZHMuc291cmNlVHlwZSA9PT0gJ25hbWVkUXVlcnknICYmIGRzLnJlcXVlc3QudHlwZSA9PT0gTmFtZWRRdWVyeVR5cGVzLk1VTFRJX0NMQVNTKVxuICAgICAgICAgIC5yZWR1Y2UoKHAsIGMpID0+IHAgfHwgYywgZmFsc2UpO1xuXG4gICAgICAgIGNvbnN0IG11bHRpQ2xhc3NEYXRhc291cmNlc0NsYXNzZXMgPSBkYXRhc291cmNlc1xuICAgICAgICAgIC5maWx0ZXIoKGRzKSA9PiBkcy5zb3VyY2VUeXBlID09PSAnbmFtZWRRdWVyeScgJiYgZHMucmVxdWVzdC50eXBlID09PSBOYW1lZFF1ZXJ5VHlwZXMuTVVMVElfQ0xBU1MpXG4gICAgICAgICAgLm1hcCgobXVsdGlEcykgPT4gKG11bHRpRHMgYXMgTmFtZWRRdWVyeSkucmVxdWVzdCBhcyBNdWx0aUNsYXNzU2VhcmNoUGF5bG9hZClcbiAgICAgICAgICAubWFwKChwYXlsb2FkKSA9PiBwYXlsb2FkLm9DbGFzc2VzKTtcblxuICAgICAgICBjb25zdCBoYXNNdWx0aU5vQ2xhc3MgPSBtdWx0aUNsYXNzRGF0YXNvdXJjZXNDbGFzc2VzLmluY2x1ZGVzKHVuZGVmaW5lZCk7XG5cbiAgICAgICAgY29uc3QgbXVsdGlDbGFzc2VzID0gKFxuICAgICAgICAgIG11bHRpQ2xhc3NEYXRhc291cmNlc0NsYXNzZXMuZmlsdGVyKChjbGFzc2VzKSA9PiAhIWNsYXNzZXMpIGFzIHVua25vd24gYXMgc3RyaW5nW11cbiAgICAgICAgKS5yZWR1Y2UoKHAsIGMpID0+IFsuLi5wLCAuLi5jXSwgW10gYXMgc3RyaW5nW10pO1xuXG4gICAgICAgIGNvbnN0IHNpbmdsZUNsYXNzZXMgPSBkYXRhc291cmNlc1xuICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAoZHMpID0+XG4gICAgICAgICAgICAgIChkcy5zb3VyY2VUeXBlID09PSAnbmFtZWRRdWVyeScgJiYgZHMucmVxdWVzdC50eXBlID09PSBOYW1lZFF1ZXJ5VHlwZXMuTU9OT19DTEFTUykgfHxcbiAgICAgICAgICAgICAgZHMuc291cmNlVHlwZSA9PT0gJ2RhdGFzZXQnXG4gICAgICAgICAgKVxuICAgICAgICAgIC5tYXAoXG4gICAgICAgICAgICAoc2luZ2xlRHMpID0+XG4gICAgICAgICAgICAgIChzaW5nbGVEcyBhcyBEYXRhc2V0KS5vQ2xhc3MgPz8gKChzaW5nbGVEcyBhcyBOYW1lZFF1ZXJ5KS5yZXF1ZXN0IGFzIE1vbm9DbGFzc1NlYXJjaFBheWxvYWQpLm9DbGFzc1xuICAgICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIGNsYXNzZXMuZmlsdGVyKFxuICAgICAgICAgIChjbGF6eikgPT5cbiAgICAgICAgICAgIGhhc0Z1bGxUZXh0IHx8IGhhc011bHRpTm9DbGFzcyB8fCBtdWx0aUNsYXNzZXMuaW5jbHVkZXMoY2xhenouaWQpIHx8IHNpbmdsZUNsYXNzZXMuaW5jbHVkZXMoY2xhenouaWQpXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmFic2Npc3NhQXR0cmlidXRlcyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmZpZWxkcyQsIHRoaXMuYWxsb3dlZENsYXNzZXMkLCB0aGlzLm9wdGlvbnNDb3B5JF0pLnBpcGUoXG4gICAgICBtYXAoKFtmaWVsZHMsIGFsbG93ZWRDbGFzc2VzLCBvcHRpb25Db3B5XSkgPT5cbiAgICAgICAgYWxsb3dlZENsYXNzZXNcbiAgICAgICAgICAubWFwKChjbGF6eikgPT4gY2xhenouYXR0cmlidXRlcylcbiAgICAgICAgICAubWFwKChhdHRycykgPT5cbiAgICAgICAgICAgIGF0dHJzLmZpbHRlcigoYXR0cikgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IGZpZWxkcy5maW5kKChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBmaWVsZC5pZCA9PT0gYXR0ci5maWVsZDtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgISFmaWVsZCAmJlxuICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgIT09IEZpZWxkVHlwZS5SQVcgJiZcbiAgICAgICAgICAgICAgICBmaWVsZC50eXBlICE9PSBGaWVsZFR5cGUuU1RSSU5HICYmXG4gICAgICAgICAgICAgICAgKG9wdGlvbkNvcHk/LmdyYXBoLnR5cGUgIT09IEdyYXBoVHlwZS5ISVNUT0dSQU0gfHwgZmllbGQudHlwZSAhPT0gRmllbGRUeXBlLktFWVdPUkQpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgICAucmVkdWNlKChhLCBiKSA9PiBbLi4uYSwgLi4uYl0sIFtdKVxuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLm9yZGluYXRlQXR0cmlidXRlcyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuZmllbGRzJCxcbiAgICAgIHRoaXMuYWxsb3dlZENsYXNzZXMkLFxuICAgICAgdGhpcy50cmlnZ2VyT3JkaW5hdGVBdHRyaWJ1dGVzJFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFtmaWVsZHMsIGFsbG93ZWRDbGFzc2VzXSkgPT5cbiAgICAgICAgYWxsb3dlZENsYXNzZXNcbiAgICAgICAgICAubWFwKChjbGF6eikgPT4gY2xhenouYXR0cmlidXRlcylcbiAgICAgICAgICAubWFwKChhdHRycykgPT5cbiAgICAgICAgICAgIGF0dHJzLmZpbHRlcigoYXR0cikgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IGZpZWxkcy5maW5kKChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBmaWVsZC5pZCA9PT0gYXR0ci5maWVsZDtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSAmJlxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIE9wZXJhdGlvbi5NQVgsXG4gICAgICAgICAgICAgICAgICBPcGVyYXRpb24uTUlOLFxuICAgICAgICAgICAgICAgICAgT3BlcmF0aW9uLlNVTSxcbiAgICAgICAgICAgICAgICAgIE9wZXJhdGlvbi5RMSxcbiAgICAgICAgICAgICAgICAgIE9wZXJhdGlvbi5RMyxcbiAgICAgICAgICAgICAgICAgIE9wZXJhdGlvbi5BVkVSQUdFLFxuICAgICAgICAgICAgICAgICAgT3BlcmF0aW9uLk1FRElBTixcbiAgICAgICAgICAgICAgICAgIE9wZXJhdGlvbi5OT05FXG4gICAgICAgICAgICAgICAgXS5pbmNsdWRlcyh0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZS5vcmRpbmF0ZS5vcGVyYXRpb24pXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAhIWZpZWxkICYmXG4gICAgICAgICAgICAgICAgICBbRmllbGRUeXBlLklOVEVHRVIsIEZpZWxkVHlwZS5JTlNUQU5ULCBGaWVsZFR5cGUuTE9ORywgRmllbGRUeXBlLkRFQ0lNQUxdLmluY2x1ZGVzKGZpZWxkLnR5cGUpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gISFmaWVsZCAmJiBmaWVsZC50eXBlICE9PSBGaWVsZFR5cGUuUkFXICYmIGZpZWxkLnR5cGUgIT09IEZpZWxkVHlwZS5TVFJJTkc7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgICAucmVkdWNlKChhLCBiKSA9PiBbLi4uYSwgLi4uYl0sIFtdKVxuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLmlzQ2hhcnRWYWxpZCQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLm9wdGlvbnMkLCB0aGlzLmFic2Npc3NhQXR0cmlidXRlcyQsIHRoaXMub3JkaW5hdGVBdHRyaWJ1dGVzJF0pLnBpcGUoXG4gICAgICBtYXAoKFtvcHRpb25zLCBhYnNjaXNzYUF0dHJzLCBvcmRpbmF0ZUF0dHJzXSkgPT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICEhb3B0aW9ucy5hYnNjaXNzYS5hdHRyaWJ1dGUgJiZcbiAgICAgICAgICBhYnNjaXNzYUF0dHJzLm1hcCgoYXR0cikgPT4gYXR0ci5pZCkuaW5jbHVkZXMob3B0aW9ucy5hYnNjaXNzYS5hdHRyaWJ1dGUpICYmXG4gICAgICAgICAgKG9wdGlvbnMub3JkaW5hdGUuYXR0cmlidXRlXG4gICAgICAgICAgICA/IG9yZGluYXRlQXR0cnMubWFwKChhdHRyKSA9PiBhdHRyLmlkKS5pbmNsdWRlcyhvcHRpb25zLm9yZGluYXRlLmF0dHJpYnV0ZSlcbiAgICAgICAgICAgIDogdHJ1ZSlcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuYXR0cmlidXRlVHlwZXMkID0gY29tYmluZUxhdGVzdChbdGhpcy5vcHRpb25zQ29weSQsIHRoaXMuZmllbGRzJCwgdGhpcy5jbGFzc2VzJF0pLnBpcGUoXG4gICAgICBmaWx0ZXIoKFtvcHRpb25zLCBmaWVsZHMsIGNsYXNzZXNdKSA9PiAhIW9wdGlvbnMgJiYgISFvcHRpb25zLmFic2Npc3NhICYmICEhb3B0aW9ucy5vcmRpbmF0ZSksXG4gICAgICBtYXAoKFtvcHRpb25zLCBmaWVsZHMsIGNsYXNzZXNdKSA9PiB7XG4gICAgICAgIGNvbnN0IGFic2Npc3NhID0gY2xhc3Nlc1xuICAgICAgICAgIC5tYXAoKGNsYXp6KSA9PiBjbGF6ei5hdHRyaWJ1dGVzLmZpbmQoKGF0dHIpID0+IGF0dHIuaWQgPT09IG9wdGlvbnMhLmFic2Npc3NhLmF0dHJpYnV0ZSkpXG4gICAgICAgICAgLmZpbmQoKGF0dHIpID0+ICEhYXR0cik7XG4gICAgICAgIGNvbnN0IG9yZGluYXRlID0gY2xhc3Nlc1xuICAgICAgICAgIC5tYXAoKGNsYXp6KSA9PiBjbGF6ei5hdHRyaWJ1dGVzLmZpbmQoKGF0dHIpID0+IGF0dHIuaWQgPT09IG9wdGlvbnMhLm9yZGluYXRlLmF0dHJpYnV0ZSkpXG4gICAgICAgICAgLmZpbmQoKGF0dHIpID0+ICEhYXR0cik7XG4gICAgICAgIGNvbnN0IGdyb3VwQnkgPSBjbGFzc2VzXG4gICAgICAgICAgLm1hcCgoY2xhenopID0+IGNsYXp6LmF0dHJpYnV0ZXMuZmluZCgoYXR0cikgPT4gYXR0ci5pZCA9PT0gb3B0aW9ucz8uZ3JvdXBCeT8uYXR0cmlidXRlKSlcbiAgICAgICAgICAuZmluZCgoYXR0cikgPT4gISFhdHRyKTtcbiAgICAgICAgY29uc3QgYWJzY2lzc2FGaWVsZFR5cGUgPSBmaWVsZHMuZmluZCgoZmllbGQpID0+IGZpZWxkLmlkID09PSBhYnNjaXNzYT8uZmllbGQpPy50eXBlID8/IEZpZWxkVHlwZS5TVFJJTkc7XG4gICAgICAgIGNvbnN0IG9yZGluYXRlRmllbGRUeXBlID0gZmllbGRzLmZpbmQoKGZpZWxkKSA9PiBmaWVsZC5pZCA9PT0gb3JkaW5hdGU/LmZpZWxkKT8udHlwZSA/PyBGaWVsZFR5cGUuU1RSSU5HO1xuICAgICAgICBjb25zdCBncm91cEJ5RmllbGRUeXBlID0gZmllbGRzLmZpbmQoKGZpZWxkKSA9PiBmaWVsZC5pZCA9PT0gZ3JvdXBCeT8uZmllbGQpPy50eXBlID8/IEZpZWxkVHlwZS5TVFJJTkc7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYWJzY2lzc2E6IHtcbiAgICAgICAgICAgIGZpZWxkVHlwZTogYWJzY2lzc2FGaWVsZFR5cGUsXG4gICAgICAgICAgICB2ZWdhVHlwZTogdGhpcy50cmFuc2xhdGVUb1ZlZ2FUeXBlKGFic2Npc3NhRmllbGRUeXBlLCBhYnNjaXNzYT8ubmFtZSA/PyAnJyksXG4gICAgICAgICAgICBuYW1lOiBhYnNjaXNzYT8ubmFtZSA/PyAnJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgb3JkaW5hdGU6IHtcbiAgICAgICAgICAgIGZpZWxkVHlwZTogb3JkaW5hdGVGaWVsZFR5cGUsXG4gICAgICAgICAgICB2ZWdhVHlwZTpcbiAgICAgICAgICAgICAgb3B0aW9ucyEub3JkaW5hdGUub3BlcmF0aW9uID09PSBPcGVyYXRpb24uQ09VTlQgfHwgb3B0aW9ucyEub3JkaW5hdGUub3BlcmF0aW9uID09PSBPcGVyYXRpb24uRElTVElOQ1RcbiAgICAgICAgICAgICAgICA/IFZlZ2FUeXBlLlFVQU5USVRBVElWRVxuICAgICAgICAgICAgICAgIDogdGhpcy50cmFuc2xhdGVUb1ZlZ2FUeXBlKG9yZGluYXRlRmllbGRUeXBlLCBvcmRpbmF0ZT8ubmFtZSA/PyAnJyksXG4gICAgICAgICAgICBuYW1lOiBvcmRpbmF0ZT8ubmFtZSA/PyAnJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZ3JvdXBCeToge1xuICAgICAgICAgICAgZmllbGRUeXBlOiBncm91cEJ5RmllbGRUeXBlLFxuICAgICAgICAgICAgdmVnYVR5cGU6IHRoaXMudHJhbnNsYXRlVG9WZWdhVHlwZShncm91cEJ5RmllbGRUeXBlLCBncm91cEJ5Py5uYW1lKSxcbiAgICAgICAgICAgIG5hbWU6IGdyb3VwQnk/Lm5hbWUgPz8gJydcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmFnZ3JlZ2F0ZWRWYWx1ZXMkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmRhdGFzb3VyY2VJZHMkLFxuICAgICAgdGhpcy5vcHRpb25zJCxcbiAgICAgIGNvbWJpbmVMYXRlc3QoW2Zyb21FdmVudCh3aW5kb3csICdkYXRhc291cmNlUmVmcmVzaCcpLCB0aGlzLmRhdGFzb3VyY2VJZHMkXSkucGlwZShcbiAgICAgICAgZmlsdGVyKChbZXZlbnQsIGRhdGFzb3VyY2VzXSkgPT4gZGF0YXNvdXJjZXMuaW5jbHVkZXMoKGV2ZW50IGFzIEN1c3RvbUV2ZW50KS5kZXRhaWwpKSxcbiAgICAgICAgc3RhcnRXaXRoKHVuZGVmaW5lZClcbiAgICAgIClcbiAgICBdKS5waXBlKFxuICAgICAgZGVib3VuY2VUaW1lKDEwMCksXG4gICAgICB0YXAoKFtkYXRhc291cmNlc10pID0+IHRoaXMuc3RvcmUuZGlzcGF0Y2goU2VhcmNoQWN0aW9ucy5zZXRTZWFyY2hMb2FkaW5nKHsgZGF0YXNvdXJjZXMsIHN0YXJ0OiB0cnVlIH0pKSksXG4gICAgICBzd2l0Y2hNYXAoKFtkYXRhc291cmNlcywgb3B0aW9uc10pID0+XG4gICAgICAgIHRoaXMuYWdncmVnYXRpb25TZXJ2aWNlXG4gICAgICAgICAgLmFnZ3JlZ2F0ZShkYXRhc291cmNlcywgb3B0aW9ucylcbiAgICAgICAgICAucGlwZSh0YXAoKCkgPT4gdGhpcy5zdG9yZS5kaXNwYXRjaChTZWFyY2hBY3Rpb25zLnNldFNlYXJjaExvYWRpbmcoeyBkYXRhc291cmNlcywgc3RhcnQ6IGZhbHNlIH0pKSkpXG4gICAgICApLFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5vcHRpb25zJCksXG4gICAgICBtYXAoKFthZ2dyZWdhdGUsIG9wdGlvbnNdKSA9PiB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgaWYgKGFnZ3JlZ2F0ZS52YWx1ZXMubGVuZ3RoID4gMCAmJiAhYWdncmVnYXRlLnZhbHVlc1swXS5ncm91cEJ5KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG9wZXJhdGlvbjogYWdncmVnYXRlLm9wZXJhdGlvbixcbiAgICAgICAgICAgIGRhdGE6IGFnZ3JlZ2F0ZS52YWx1ZXMubWFwKCh2YWx1ZSkgPT4gKHsgLi4udmFsdWUsIHNlcmllczogb3B0aW9ucy5vcmRpbmF0ZS5sYWJlbCB9KSlcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZsYXR0ZW5lZCA9IChcbiAgICAgICAgICBhZ2dyZWdhdGUudmFsdWVzIGFzIHtcbiAgICAgICAgICAgIGtleTogVmFsdWVUeXBlO1xuICAgICAgICAgICAgZ3JvdXBCeToge1xuICAgICAgICAgICAgICBrZXk6IFZhbHVlVHlwZTtcbiAgICAgICAgICAgICAgdmFsdWU6IFZhbHVlVHlwZTtcbiAgICAgICAgICAgIH1bXTtcbiAgICAgICAgICB9W11cbiAgICAgICAgKVxuICAgICAgICAgIC5tYXAoKHZhbHVlKSA9PlxuICAgICAgICAgICAgdmFsdWUuZ3JvdXBCeS5tYXAoKGdyb3VwQnkpID0+ICh7XG4gICAgICAgICAgICAgIGtleTogdmFsdWUua2V5LFxuICAgICAgICAgICAgICBzZXJpZXM6IGdyb3VwQnkua2V5LFxuICAgICAgICAgICAgICB2YWx1ZTogZ3JvdXBCeS52YWx1ZVxuICAgICAgICAgICAgfSkpXG4gICAgICAgICAgKVxuICAgICAgICAgIC5yZWR1Y2UoKGEsIGIpID0+IFsuLi5hLCAuLi5iXSwgW10pO1xuICAgICAgICByZXR1cm4geyBvcGVyYXRpb246IGFnZ3JlZ2F0ZS5vcGVyYXRpb24sIGRhdGE6IGZsYXR0ZW5lZCB9O1xuICAgICAgfSksXG4gICAgICBzdGFydFdpdGgoeyBvcGVyYXRpb246IE9wZXJhdGlvbi5OT05FLCBkYXRhOiBbXSB9KSxcbiAgICAgIHNoYXJlKClcbiAgICApO1xuXG4gICAgdGhpcy5ub0RhdGEkID0gdGhpcy5kYXRhc291cmNlSWRzJC5waXBlKG1hcCgoaWRzKSA9PiBpZHMubGVuZ3RoID09PSAwKSk7XG4gICAgdGhpcy5ub0FnZ3JlZ2F0aW9uRGF0YSQgPSB0aGlzLmFnZ3JlZ2F0ZWRWYWx1ZXMkLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YS5sZW5ndGggPT09IDApKTtcblxuICAgIHRoaXMudmVnYUxpdGVTcGVjJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5vcHRpb25zJCxcbiAgICAgIHRoaXMuYXR0cmlidXRlVHlwZXMkLFxuICAgICAgdGhpcy5hZ2dyZWdhdGVkVmFsdWVzJCxcbiAgICAgIHRoaXMud2lkZ2V0U2l6ZSQucGlwZShkZWJvdW5jZVRpbWUoMTAwKSksXG4gICAgICB0aGlzLmRpc3BsYXlIZWFkZXIkXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW29wdGlvbnMsIHR5cGVzLCB2YWx1ZXMsIHNpemUsIGRpc3BsYXldKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzQ2lyY3VsYXIgPSBbR3JhcGhUeXBlLkNJUkNVTEFSLCBHcmFwaFR5cGUuRE9OVVRdLmluY2x1ZGVzKG9wdGlvbnMuZ3JhcGgudHlwZSk7XG4gICAgICAgIGNvbnN0IHN0YWNrZWQgPSBvcHRpb25zLmdyYXBoLnR5cGUuc3RhcnRzV2l0aCgnYmFyJykgPyAhb3B0aW9ucy5ncmFwaC5zdGFja2VkIDogb3B0aW9ucy5ncmFwaC5zdGFja2VkO1xuICAgICAgICBjb25zdCBsZWdlbmRUaXRsZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgIG9wdGlvbnMuZ3JvdXBCeSA/IHR5cGVzLmdyb3VwQnkubmFtZSA/PyAnJyA6ICdAcHJ5LndpZGdldC5jaGFydC5sZWdlbmRMYWJlbCdcbiAgICAgICAgKTtcblxuICAgICAgICAoW29wdGlvbnMuZ3JvdXBCeT8uY29sb3IsIG9wdGlvbnMuY2lyY2xlQ29sb3JTY2hlbWVdLmZpbHRlcigoc2NoZW1lKSA9PiAhIXNjaGVtZSkgYXMgc3RyaW5nW10pLmZvckVhY2goXG4gICAgICAgICAgKHNjaGVtZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zY2hlbWVTZXJ2aWNlLmFzc2VydFNjaGVtZShzY2hlbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIG1lcmdlRGVlcChcbiAgICAgICAgICB7XG4gICAgICAgICAgICAkc2NoZW1hOiAnaHR0cHM6Ly92ZWdhLmdpdGh1Yi5pby9zY2hlbWEvdmVnYS1saXRlL3Y1Lmpzb24nLFxuICAgICAgICAgICAgdGl0bGU6IHRoaXMuZ2V0VGl0bGUob3B0aW9ucyksXG4gICAgICAgICAgICB3aWR0aDogJ2NvbnRhaW5lcicsXG4gICAgICAgICAgICBoZWlnaHQ6IChzaXplLmhlaWdodCA/PyAxMDApIC0gKGRpc3BsYXkgPyBXSURHRVRfSEVBREVSX0hFSUdIVCA6IDApLFxuICAgICAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgICAgICBhdXRvc2l6ZTogeyB0eXBlOiAnZml0JywgY29udGFpbnM6ICdwYWRkaW5nJyB9LFxuICAgICAgICAgICAgZGF0YTogeyB2YWx1ZXM6IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodmFsdWVzLmRhdGEpKSB9LFxuICAgICAgICAgICAgbGF5ZXI6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG1hcms6IHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6IG9wdGlvbnMuZ3JhcGgudHlwZS5zcGxpdCgnLScpWzBdIGFzICdhcmMnIHwgJ2xpbmUnIHwgJ3BvaW50JyB8ICdiYXInIHwgJ2FyZWEnLFxuICAgICAgICAgICAgICAgICAgcG9pbnQ6IG9wdGlvbnMuZ3JhcGgudHlwZS5pbmRleE9mKCdwb2ludCcpID49IDAsXG4gICAgICAgICAgICAgICAgICBsaW5lOiBvcHRpb25zLmdyYXBoLnR5cGUuaW5kZXhPZignbGluZScpID49IDAsXG4gICAgICAgICAgICAgICAgICBpbm5lclJhZGl1czogb3B0aW9ucy5ncmFwaC5kb251dFNpemUgPz8gMzBcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVuY29kaW5nOiB7XG4gICAgICAgICAgICAgICAgICB4OiAhaXNDaXJjdWxhclxuICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAna2V5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBvcHRpb25zLmFic2Npc3NhLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogdHlwZXMuYWJzY2lzc2EudmVnYVR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lVW5pdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXMuYWJzY2lzc2EudmVnYVR5cGUgPT09IFZlZ2FUeXBlLlRFTVBPUkFMICYmIG9wdGlvbnMuYWJzY2lzc2EubGltaXQ/LmlzVGltZUxpbWl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBvcHRpb25zLmFic2Npc3NhLmxpbWl0LmludGVydmFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBiaW46IG9wdGlvbnMuZ3JhcGgudHlwZS5pbmRleE9mKCdoaXN0b2dyYW0nKSA+PSAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXhpczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAvL2Zvcm1hdDogdHlwZXMuYWJzY2lzc2EudmVnYVR5cGUgPT09IFZlZ2FUeXBlLlRFTVBPUkFMID8gJyVZLSVCLSVkVCVIOiVNOiVTJyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC4uLldpZGdldEFnZ3JlZ2F0ZWRDaGFydENvbXBvbmVudC5taW5UaWNrKHR5cGVzLmFic2Npc3NhLmZpZWxkVHlwZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsRXhwcjogYGhlaWdodCA8IDMwMCA/ICR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXMuYWJzY2lzc2EudmVnYVR5cGUgPT09IFZlZ2FUeXBlLlRFTVBPUkFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwidGltZUZvcm1hdChkYXR1bS52YWx1ZSwgJyVZLSVCLSVkVCVIOiVNOiVTJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAndHJ1bmNhdGUoZGF0dW0udmFsdWUsIDEwKSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSA6ICR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXMuYWJzY2lzc2EudmVnYVR5cGUgPT09IFZlZ2FUeXBlLlRFTVBPUkFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwidGltZUZvcm1hdChkYXR1bS52YWx1ZSwgJyVZLSVCLSVkVCVIOiVNOiVTJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnZGF0dW0udmFsdWUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1gXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRm9yY2UgYSBmYWxzZSB2YWx1ZSBoZXJlIHNvIHRoYXQgdmVnYSB1bmRlcnN0YW5kcyBwcm9wZXJseVxuICAgICAgICAgICAgICAgICAgICAgICAgICB6ZXJvOiAhIW9wdGlvbnMuYWJzY2lzc2Eua2VlcDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy90eXBlOiBXaWRnZXRDaGFydENvbXBvbmVudC5pc1RpbWVVbml0VVRDKHZhcmlhYmxlc1swXSkgPyAndXRjJyA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICB5OiAhaXNDaXJjdWxhclxuICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAndmFsdWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG9wdGlvbnMub3JkaW5hdGUubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiB0eXBlcy5vcmRpbmF0ZS52ZWdhVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGF4aXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uV2lkZ2V0QWdncmVnYXRlZENoYXJ0Q29tcG9uZW50Lm1pblRpY2sodHlwZXMub3JkaW5hdGUuZmllbGRUeXBlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5zZXRUaWNrQ291bnQodmFsdWVzLmRhdGEpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgemVybzogdHlwZXMub3JkaW5hdGUudmVnYVR5cGUgPT09IFZlZ2FUeXBlLlFVQU5USVRBVElWRSA/ICEhb3B0aW9ucy5vcmRpbmF0ZS5rZWVwMCA6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHN0YWNrZWQgPyB7IHN0YWNrOiB0cnVlIH0gOiB7fSlcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgdGhldGE6IGlzQ2lyY3VsYXIgPyB7IGZpZWxkOiAndmFsdWUnLCB0eXBlOiB0eXBlcy5vcmRpbmF0ZS52ZWdhVHlwZSB9IDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgY29sb3I6IHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGxlZ2VuZFRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBmaWVsZDogIWlzQ2lyY3VsYXIgPyAoIW9wdGlvbnMuZ3JvdXBCeSA/IHVuZGVmaW5lZCA6ICdzZXJpZXMnKSA6ICdrZXknLFxuICAgICAgICAgICAgICAgICAgICBsZWdlbmQ6IG9wdGlvbnMuZ3JhcGgubGVnZW5kLFxuICAgICAgICAgICAgICAgICAgICBzY2FsZTogIWlzQ2lyY3VsYXJcbiAgICAgICAgICAgICAgICAgICAgICA/IG9wdGlvbnMuZ3JvdXBCeVxuICAgICAgICAgICAgICAgICAgICAgICAgPyB7IHNjaGVtZTogb3B0aW9ucy5ncm91cEJ5Py5jb2xvciA/PyB0aGlzLnNjaGVtZVNlcnZpY2UuZ2V0RGVmYXVsdFNjaGVtZSgpIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgOiB7IHNjaGVtZTogb3B0aW9ucy5jaXJjbGVDb2xvclNjaGVtZSA/PyB0aGlzLnNjaGVtZVNlcnZpY2UuZ2V0RGVmYXVsdFNjaGVtZSgpIH0sXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOlxuICAgICAgICAgICAgICAgICAgICAgICFpc0NpcmN1bGFyICYmICFvcHRpb25zLmdyb3VwQnlcbiAgICAgICAgICAgICAgICAgICAgICAgID8gb3B0aW9ucy5iYXNlQ29sb3IgPz8gdGhpcy5zY2hlbWVTZXJ2aWNlLmdldFNjaGVtZUNvbG9ycyh0aGlzLnNjaGVtZVNlcnZpY2UuZ2V0RGVmYXVsdFNjaGVtZSgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB4T2Zmc2V0OiBzdGFja2VkICYmIG9wdGlvbnMuZ3JvdXBCeSA/IHsgZmllbGQ6ICdzZXJpZXMnIH0gOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICB0b29sdGlwOiBvcHRpb25zLmdyYXBoLnRvb2x0aXBcbiAgICAgICAgICAgICAgICAgICAgPyBvcHRpb25zLmdyb3VwQnlcbiAgICAgICAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAna2V5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiB0eXBlcy5hYnNjaXNzYS52ZWdhVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogb3B0aW9ucy5hYnNjaXNzYS5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4odHlwZXMuYWJzY2lzc2EudmVnYVR5cGUgPT09ICd0ZW1wb3JhbCcgPyB7IGZvcm1hdDogJyVZLSVCLSVkVCVIOiVNOiVTJyB9IDoge30pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsgZmllbGQ6ICd2YWx1ZScsIHR5cGU6IHR5cGVzLm9yZGluYXRlLnZlZ2FUeXBlLCB0aXRsZTogb3B0aW9ucy5vcmRpbmF0ZS5sYWJlbCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdzZXJpZXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBsZWdlbmRUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnbm9taW5hbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdrZXknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHR5cGVzLmFic2Npc3NhLnZlZ2FUeXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBvcHRpb25zLmFic2Npc3NhLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLih0eXBlcy5hYnNjaXNzYS52ZWdhVHlwZSA9PT0gJ3RlbXBvcmFsJyA/IHsgZm9ybWF0OiAnJVktJUItJWRUJUg6JU06JVMnIH0gOiB7fSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeyBmaWVsZDogJ3ZhbHVlJywgdHlwZTogdHlwZXMub3JkaW5hdGUudmVnYVR5cGUsIHRpdGxlOiBvcHRpb25zLm9yZGluYXRlLmxhYmVsIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBjb25maWc6IHRoaXMuZ2V0Q2hhcnRDb25maWcoKVxuICAgICAgICAgIH0gYXMgYW55LFxuICAgICAgICAgIG9wdGlvbnMuYWRkaXRpb25hbFNwZWNcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc29ydEF0dHJpYnV0ZXMkID0gdGhpcy5vcHRpb25zQ29weSQucGlwZShcbiAgICAgIG1hcCgob3B0aW9ucykgPT4ge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIHsgaWQ6IG9wdGlvbnM/LmFic2Npc3NhLmF0dHJpYnV0ZSwgbGFiZWw6IG9wdGlvbnM/LmFic2Npc3NhLmxhYmVsIH0sXG4gICAgICAgICAgeyBpZDogb3B0aW9ucz8ub3JkaW5hdGUuYXR0cmlidXRlLCBsYWJlbDogb3B0aW9ucz8ub3JkaW5hdGUubGFiZWwgfVxuICAgICAgICBdLmZpbHRlcigoYXR0cmlidXRlKSA9PiAhIWF0dHJpYnV0ZS5pZCk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5zb3J0QXR0cmlidXRlcyQuc3Vic2NyaWJlKChhdHRyaWJ1dGVzKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uZ3JhcGguc29ydCAmJlxuICAgICAgICAgICFhdHRyaWJ1dGVzLm1hcCgoYXR0cmlidXRlKSA9PiBhdHRyaWJ1dGUuaWQpLmluY2x1ZGVzKHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlPy5ncmFwaC5zb3J0Py5hdHRyaWJ1dGUpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoe1xuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUhLFxuICAgICAgICAgICAgZ3JhcGg6IHtcbiAgICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/LmdyYXBoISxcbiAgICAgICAgICAgICAgc29ydDoge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlPy5ncmFwaC5zb3J0LFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZTogYXR0cmlidXRlc1swXS5pZCA/PyAnJ1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLm9wdGlvbnNDb3B5JCwgdGhpcy5hdHRyaWJ1dGVUeXBlcyQsIHRoaXMuY2xhc3NlcyRdKS5zdWJzY3JpYmUoXG4gICAgICAgIChbb3B0aW9ucywgYXR0clR5cGVzLCBjbGFzc2VzXSkgPT4ge1xuICAgICAgICAgIHRoaXMuc29ydERpcmVjdGlvbnMgPSB0aGlzLnNvcnREaXJlY3Rpb25zXG4gICAgICAgICAgICAubWFwKChzb3J0KSA9PiB7XG4gICAgICAgICAgICAgIGxldCBhdHRyaWJ1dGUgPSBjbGFzc2VzXG4gICAgICAgICAgICAgICAgLm1hcCgoY2xhenopID0+IGNsYXp6LmF0dHJpYnV0ZXMuZmluZCgoYXR0cikgPT4gYXR0ci5pZCA9PT0gb3B0aW9ucz8uZ3JhcGguc29ydD8uYXR0cmlidXRlKSlcbiAgICAgICAgICAgICAgICAuZmluZCgoYXR0cikgPT4gISFhdHRyKTtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogc29ydC52YWx1ZSxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICBgQHByeS53aWRnZXQuY2hhcnQuc29ydC4ke3NvcnQudmFsdWV9LiR7XG4gICAgICAgICAgICAgICAgICAgIGF0dHJUeXBlcy5hYnNjaXNzYS5uYW1lID09PSBhdHRyaWJ1dGU/Lm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICA/IGF0dHJUeXBlcy5hYnNjaXNzYS52ZWdhVHlwZVxuICAgICAgICAgICAgICAgICAgICAgIDogYXR0clR5cGVzLm9yZGluYXRlLnZlZ2FUeXBlXG4gICAgICAgICAgICAgICAgICB9YFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5sYWJlbC5sb2NhbGVDb21wYXJlKGIubGFiZWwpKTtcbiAgICAgICAgfVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMudmVnYUxpdGVTcGVjJCwgdGhpcy50cmlnZ2VyJF0pLnN1YnNjcmliZSgoW3NwZWMsIF9dKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnZlZ2EpIHtcbiAgICAgICAgICB0aGlzLnZpZXc/LmZpbmFsaXplKCk7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoc3BlYykpO1xuICAgICAgICAgIGVtYmVkKHRoaXMudmVnYS5uYXRpdmVFbGVtZW50LCBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHNwZWMpKSwge1xuICAgICAgICAgICAgYWN0aW9uczogZmFsc2UsXG4gICAgICAgICAgICByZW5kZXJlcjogJ2NhbnZhcycsXG4gICAgICAgICAgICBmb3JtYXRMb2NhbGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50T2JqZWN0KCdAcHJ5LndpZGdldC5jaGFydC5udW1iZXJMb2NhbGUnKSBhcyBhbnksXG4gICAgICAgICAgICB0aW1lRm9ybWF0TG9jYWxlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudE9iamVjdCgnQHByeS53aWRnZXQuY2hhcnQudGltZUZvcm1hdExvY2FsZScpIGFzIGFueSxcbiAgICAgICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICAgICAgdGhlbWU6ICdjdXN0b20nXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgICAgIC50aGVuKChyZXN1bHQpID0+ICh0aGlzLnZpZXcgPSByZXN1bHQudmlldykpXG4gICAgICAgICAgICAuY2F0Y2goKGVycikgPT4gY29uc29sZS5lcnJvcignQ2Fubm90IGRpc3BsYXkgY2hhcnQnLCBlcnIpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudHJpZ2dlciQubmV4dCgpLCAxMDApO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy50cmlnZ2VyJC5uZXh0KCk7XG4gIH1cblxuICB0cmFuc2xhdGVUb1ZlZ2FUeXBlKHR5cGU/OiBGaWVsZFR5cGUsIG5hbWU/OiBzdHJpbmcpOiBWZWdhVHlwZSB7XG4gICAgbGV0IGlkUmVnZXggPSBuZXcgUmVnRXhwKC9faWR8aWRffF9JRHxJRF98X0lkfElkXy8sICdnJyk7XG4gICAgaWYgKGlkUmVnZXgudGVzdChuYW1lID8/ICctLS0tLS0tJykpIHtcbiAgICAgIHJldHVybiBWZWdhVHlwZS5PUkRJTkFMO1xuICAgIH1cblxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBGaWVsZFR5cGUuREVDSU1BTDpcbiAgICAgIGNhc2UgRmllbGRUeXBlLklOVEVHRVI6XG4gICAgICBjYXNlIEZpZWxkVHlwZS5MT05HOlxuICAgICAgICByZXR1cm4gVmVnYVR5cGUuUVVBTlRJVEFUSVZFO1xuICAgICAgY2FzZSBGaWVsZFR5cGUuSU5TVEFOVDpcbiAgICAgICAgcmV0dXJuIFZlZ2FUeXBlLlRFTVBPUkFMO1xuICAgICAgY2FzZSBGaWVsZFR5cGUuS0VZV09SRDpcbiAgICAgIGNhc2UgRmllbGRUeXBlLlNUUklORzpcbiAgICAgICAgcmV0dXJuIFZlZ2FUeXBlLk5PTUlOQUw7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gVmVnYVR5cGUuTk9NSU5BTDtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgbWluVGljayh0eXBlOiBGaWVsZFR5cGUpOiB7IHRpY2tNaW5TdGVwOiBudW1iZXIgfSB8IHt9IHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgRmllbGRUeXBlLklOVEVHRVI6XG4gICAgICBjYXNlIEZpZWxkVHlwZS5MT05HOlxuICAgICAgICByZXR1cm4geyB0aWNrTWluU3RlcDogMSB9O1xuICAgICAgY2FzZSBGaWVsZFR5cGUuREVDSU1BTDpcbiAgICAgIGNhc2UgRmllbGRUeXBlLklOU1RBTlQ6XG4gICAgICBjYXNlIEZpZWxkVHlwZS5LRVlXT1JEOlxuICAgICAgY2FzZSBGaWVsZFR5cGUuU1RSSU5HOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfVxuXG4gIGVtaXRNYW5pZmVzdCgpIHtcbiAgICB0aGlzLm1hbmlmZXN0TW9kaWZpZWQuZW1pdCh7XG4gICAgICB3aWRnZXRJbmRleDogdGhpcy53aWRnZXRJbmRleCxcbiAgICAgIG1hbmlmZXN0OiB7XG4gICAgICAgIC4uLnRoaXMubWFuaWZlc3QsXG4gICAgICAgIG9wdGlvbnM6IHsgLi4udGhpcy5vcHRpb25zQ29weSQuZ2V0VmFsdWUoKSB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvcGVuU2V0dGluZ3MoKSB7XG4gICAgKHRoaXMub3BlbiQgYXMgU3ViamVjdDx2b2lkPikubmV4dCh1bmRlZmluZWQpO1xuICB9XG5cbiAgb3BlbkRhdGEoKSB7XG4gICAgKHRoaXMub3BlbkRhdGEkIGFzIFN1YmplY3Q8dm9pZD4pLm5leHQodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGl0bGUob3B0aW9uczogQ2hhcnRBZ2dyZWdhdGVkV2lkZ2V0T3B0aW9ucykge1xuICAgIHJldHVybiBvcHRpb25zLmdyYXBoPy50aXRsZSA/PyB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXRDaGFydENvbmZpZygpIHtcbiAgICByZXR1cm4gaW5pdENvbmZpZyh7XG4gICAgICBzdHlsZToge1xuICAgICAgICAnZ3VpZGUtbGFiZWwnOiB7XG4gICAgICAgICAgLy8gYXhpcyB0aWNrIHRpdGxlc1xuICAgICAgICAgIGZvbnQ6ICdVYnVudHUsIHNhbnMtc2VyaWYnLFxuICAgICAgICAgIGZvbnRTaXplOiAxMixcbiAgICAgICAgICBmb250V2VpZ2h0OiA2MDAsXG4gICAgICAgICAgZmlsbDogJyMyNjMzNDAnXG4gICAgICAgIH0sXG4gICAgICAgICdndWlkZS10aXRsZSc6IHtcbiAgICAgICAgICAvLyBheGlzIHRpdGxlXG4gICAgICAgICAgZm9udDogJ1VidW50dSwgc2Fucy1zZXJpZicsXG4gICAgICAgICAgZm9udFNpemU6IDEyLFxuICAgICAgICAgIGZvbnRXZWlnaHQ6IDYwMCxcbiAgICAgICAgICBmaWxsOiAnIzI2MzM0MCdcbiAgICAgICAgfSxcbiAgICAgICAgJ2dyb3VwLXRpdGxlJzoge1xuICAgICAgICAgIC8vIGNoYXJ0IHRpdGxlXG4gICAgICAgICAgZm9udDogJ1VidW50dSwgc2Fucy1zZXJpZicsXG4gICAgICAgICAgZm9udFNpemU6IDEyLFxuICAgICAgICAgIGZvbnRXZWlnaHQ6IDYwMCxcbiAgICAgICAgICBmaWxsOiAnIzI2MzM0MCdcbiAgICAgICAgfSxcbiAgICAgICAgJ2dyb3VwLXN1YnRpdGxlJzoge1xuICAgICAgICAgIC8vIG5vdCBzdXJlXG4gICAgICAgICAgZm9udDogJ1VidW50dSwgc2Fucy1zZXJpZicsXG4gICAgICAgICAgZm9udFNpemU6IDEyLFxuICAgICAgICAgIGZvbnRXZWlnaHQ6IDYwMCxcbiAgICAgICAgICBmaWxsOiAnIzI2MzM0MCdcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgY2hhbmdlQ2hhcnRUaXRsZSgkZXZlbnQ6IHN0cmluZykge1xuICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSkge1xuICAgICAgdGhpcy5vcHRpb25zQ29weSQubmV4dCh7XG4gICAgICAgIC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLFxuICAgICAgICBncmFwaDogeyAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uZ3JhcGgsIHRpdGxlOiAkZXZlbnQgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlVHlwZSgkZXZlbnQ6IEdyYXBoVHlwZSkge1xuICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSkge1xuICAgICAgdGhpcy5vcHRpb25zQ29weSQubmV4dCh7XG4gICAgICAgIC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLFxuICAgICAgICBncmFwaDogeyAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uZ3JhcGgsIHR5cGU6ICRldmVudCB9XG4gICAgICB9KTtcbiAgICAgIGlmIChbR3JhcGhUeXBlLkNJUkNVTEFSLCBHcmFwaFR5cGUuRE9OVVRdLmluY2x1ZGVzKCRldmVudCkpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zQ29weSQubmV4dCh7XG4gICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgICAgZ3JvdXBCeTogdW5kZWZpbmVkLFxuICAgICAgICAgIGNpcmNsZUNvbG9yU2NoZW1lOiB0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uY2lyY2xlQ29sb3JTY2hlbWUgPz8gJ1Byb3ZvbHknXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKFtHcmFwaFR5cGUuSElTVE9HUkFNXS5pbmNsdWRlcygkZXZlbnQpKSB7XG4gICAgICAgIHRoaXMubGltaXRFbGVtZW50cyh0cnVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjaGFuZ2VEb251dFNpemUoJGV2ZW50OiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zQ29weSQudmFsdWUpIHtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoe1xuICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgZ3JhcGg6IHsgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/LmdyYXBoLCBkb251dFNpemU6ICRldmVudCB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VPcGVyYXRpb24oJGV2ZW50OiBPcGVyYXRpb24pIHtcbiAgICBpZiAodGhpcy5vcHRpb25zQ29weSQudmFsdWUpIHtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoe1xuICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgb3JkaW5hdGU6IHsgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/Lm9yZGluYXRlLCBvcGVyYXRpb246ICRldmVudCB9XG4gICAgICB9KTtcbiAgICAgIGlmICgkZXZlbnQgPT09IE9wZXJhdGlvbi5DT1VOVCB8fCAkZXZlbnQgPT09IE9wZXJhdGlvbi5ESVNUSU5DVCkge1xuICAgICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgICBvcmRpbmF0ZToge1xuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/Lm9yZGluYXRlLFxuICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdAcHJ5LndpZGdldC5jaGFydC5vcGVyYXRpb24uJyArICRldmVudCksXG4gICAgICAgICAgICBhdHRyaWJ1dGU6IHVuZGVmaW5lZFxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudHJpZ2dlck9yZGluYXRlQXR0cmlidXRlcyQubmV4dCgpLCAxMCk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlQWJzY2lzc2EoJGV2ZW50OiBzdHJpbmcpIHtcbiAgICBpZiAoJGV2ZW50ICYmIHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlKSB7XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgIGFic2Npc3NhOiB7IC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlPy5hYnNjaXNzYSwgYXR0cmlidXRlOiAkZXZlbnQgfVxuICAgICAgfSk7XG4gICAgICBjb25zdCBhdHRyID0gdGhpcy5jbGFzc2VzXG4gICAgICAgIC5tYXAoKGNsYXp6KSA9PiBjbGF6ei5hdHRyaWJ1dGVzKVxuICAgICAgICAucmVkdWNlKChhLCBiKSA9PiBbLi4uYSwgLi4uYl0sIFtdKVxuICAgICAgICAuZmluZCgoYXR0cikgPT4gYXR0ci5pZCA9PT0gJGV2ZW50KTtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoe1xuICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgYWJzY2lzc2E6IHsgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/LmFic2Npc3NhLCBsYWJlbDogYXR0cj8ubmFtZSA/PyAnYXR0ci1ub3QtZm91bmQnIH1cbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmNvcHlBYnNjaXNzYUZpZWxkID0gdGhpcy5maWVsZHMuZmluZCgoZmllbGQpID0+IGF0dHI/LmZpZWxkID09PSBmaWVsZC5pZCk7XG5cbiAgICAgIHRoaXMubGltaXRFbGVtZW50cyghIXRoaXMub3B0aW9uc0NvcHkkLnZhbHVlPy5hYnNjaXNzYS5saW1pdCk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlQWJzY2lzc2FMYWJlbCgkZXZlbnQ6IHN0cmluZykge1xuICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSkge1xuICAgICAgdGhpcy5vcHRpb25zQ29weSQubmV4dCh7XG4gICAgICAgIC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLFxuICAgICAgICBhYnNjaXNzYTogeyAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uYWJzY2lzc2EsIGxhYmVsOiAkZXZlbnQgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlT3JkaW5hdGUoJGV2ZW50OiBhbnkpIHtcbiAgICBpZiAoJGV2ZW50ICYmIHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlKSB7XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgIG9yZGluYXRlOiB7IC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlPy5vcmRpbmF0ZSwgYXR0cmlidXRlOiAkZXZlbnQgfVxuICAgICAgfSk7XG4gICAgICBjb25zdCBhdHRyID0gdGhpcy5jbGFzc2VzXG4gICAgICAgIC5tYXAoKGNsYXp6KSA9PiBjbGF6ei5hdHRyaWJ1dGVzKVxuICAgICAgICAucmVkdWNlKChhLCBiKSA9PiBbLi4uYSwgLi4uYl0sIFtdKVxuICAgICAgICAuZmluZCgoYXR0cikgPT4gYXR0ci5pZCA9PT0gJGV2ZW50KTtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoe1xuICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgb3JkaW5hdGU6IHsgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/Lm9yZGluYXRlLCBsYWJlbDogYXR0cj8ubmFtZSA/PyAnYXR0ci1ub3QtZm91bmQnIH1cbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmNvcHlPcmRpbmF0ZUZpZWxkID0gdGhpcy5maWVsZHMuZmluZCgoZmllbGQpID0+IGF0dHI/LmZpZWxkID09PSBmaWVsZC5pZCk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlT3JkaW5hdGVMYWJlbCgkZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSkge1xuICAgICAgdGhpcy5vcHRpb25zQ29weSQubmV4dCh7XG4gICAgICAgIC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLFxuICAgICAgICBvcmRpbmF0ZTogeyAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8ub3JkaW5hdGUsIGxhYmVsOiAkZXZlbnQgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlS2VlcDBBYnNjaXNzYSgkZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSkge1xuICAgICAgdGhpcy5vcHRpb25zQ29weSQubmV4dCh7XG4gICAgICAgIC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLFxuICAgICAgICBhYnNjaXNzYTogeyAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uYWJzY2lzc2EsIGtlZXAwOiAkZXZlbnQgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlS2VlcDBPcmRpbmF0ZSgkZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSkge1xuICAgICAgdGhpcy5vcHRpb25zQ29weSQubmV4dCh7XG4gICAgICAgIC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLFxuICAgICAgICBvcmRpbmF0ZTogeyAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8ub3JkaW5hdGUsIGtlZXAwOiAkZXZlbnQgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbGltaXRFbGVtZW50cygkZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSkge1xuICAgICAgaWYgKCRldmVudCkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5jb3B5QWJzY2lzc2FGaWVsZD8udHlwZSAhPT0gRmllbGRUeXBlLklOU1RBTlQgJiZcbiAgICAgICAgICB0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uYWJzY2lzc2E/LmxpbWl0ICYmXG4gICAgICAgICAgJ2F0JyBpbiB0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uYWJzY2lzc2E/LmxpbWl0XG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoe1xuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgICAgICBhYnNjaXNzYToge1xuICAgICAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uYWJzY2lzc2EsXG4gICAgICAgICAgICAgIGxpbWl0OiB7XG4gICAgICAgICAgICAgICAgYXQ6IHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlPy5hYnNjaXNzYT8ubGltaXQ/LmF0ID8/IDMsXG4gICAgICAgICAgICAgICAgb3RoZXJzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBvcmRlcjogJ2FzYycsXG4gICAgICAgICAgICAgICAgaXNUaW1lTGltaXQ6IGZhbHNlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLFxuICAgICAgICAgICAgYWJzY2lzc2E6IHsgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/LmFic2Npc3NhLCBsaW1pdDogeyBpbnRlcnZhbDogJ3NlY29uZCcsIGlzVGltZUxpbWl0OiB0cnVlIH0gfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgICBhYnNjaXNzYTogeyAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uYWJzY2lzc2EsIGxpbWl0OiB1bmRlZmluZWQgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjaGFuZ2VMaW1pdCgkZXZlbnQ6IGFueSkge1xuICAgIGlmIChcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlICYmXG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZS5hYnNjaXNzYS5saW1pdCAmJlxuICAgICAgIXRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLmFic2Npc3NhLmxpbWl0LmlzVGltZUxpbWl0XG4gICAgKSB7XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgIGFic2Npc3NhOiB7XG4gICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/LmFic2Npc3NhLFxuICAgICAgICAgIGxpbWl0OiB7XG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uYWJzY2lzc2EubGltaXQsXG4gICAgICAgICAgICBhdDogJGV2ZW50XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VMaW1pdE90aGVycygkZXZlbnQ6IGFueSkge1xuICAgIGlmIChcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlICYmXG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZS5hYnNjaXNzYS5saW1pdCAmJlxuICAgICAgIXRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLmFic2Npc3NhLmxpbWl0LmlzVGltZUxpbWl0XG4gICAgKSB7XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgIGFic2Npc3NhOiB7XG4gICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/LmFic2Npc3NhLFxuICAgICAgICAgIGxpbWl0OiB7XG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uYWJzY2lzc2EubGltaXQsXG4gICAgICAgICAgICBvdGhlcnM6ICRldmVudFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlTGltaXRPcmRlcigkZXZlbnQ6IGFueSkge1xuICAgIGlmIChcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlICYmXG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZS5hYnNjaXNzYS5saW1pdCAmJlxuICAgICAgIXRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLmFic2Npc3NhLmxpbWl0LmlzVGltZUxpbWl0XG4gICAgKSB7XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgIGFic2Npc3NhOiB7XG4gICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/LmFic2Npc3NhLFxuICAgICAgICAgIGxpbWl0OiB7XG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uYWJzY2lzc2EubGltaXQsXG4gICAgICAgICAgICBvcmRlcjogJGV2ZW50ID8gJ2FzYycgOiAnZGVzYydcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNoYW5nZVRpbWVMaW1pdCgkZXZlbnQ6IGFueSkge1xuICAgIGlmIChcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlICYmXG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZS5hYnNjaXNzYS5saW1pdCAmJlxuICAgICAgdGhpcy5vcHRpb25zQ29weSQudmFsdWUuYWJzY2lzc2EubGltaXQuaXNUaW1lTGltaXRcbiAgICApIHtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoe1xuICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgYWJzY2lzc2E6IHtcbiAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZS5hYnNjaXNzYSxcbiAgICAgICAgICBsaW1pdDoge1xuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUuYWJzY2lzc2EubGltaXQsXG4gICAgICAgICAgICBpbnRlcnZhbDogJGV2ZW50XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVMZWdlbmQoJGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zQ29weSQudmFsdWUpIHtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoe1xuICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgZ3JhcGg6IHsgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUuZ3JhcGgsIGxlZ2VuZDogJGV2ZW50IH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZVRvb2x0aXAoJGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zQ29weSQudmFsdWUpIHtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoe1xuICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgZ3JhcGg6IHsgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/LmdyYXBoLCB0b29sdGlwOiAkZXZlbnQgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlR3JvdXBCeSgkZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSkge1xuICAgICAgaWYgKCRldmVudCkge1xuICAgICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgICBncm91cEJ5OiB7XG4gICAgICAgICAgICBhdHRyaWJ1dGU6IHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlPy5ncm91cEJ5Py5hdHRyaWJ1dGUgPz8gJycsXG4gICAgICAgICAgICBjb2xvcjogdGhpcy5zY2hlbWVTZXJ2aWNlLmdldERlZmF1bHRTY2hlbWUoKVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgICBncm91cEJ5OiB1bmRlZmluZWRcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlR3JvdXBCeSgkZXZlbnQ6IGFueSkge1xuICAgIGlmICh0eXBlb2YgJGV2ZW50ID09PSAnc3RyaW5nJyAmJiB0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSAmJiB0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZS5ncm91cEJ5KSB7XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgIGdyb3VwQnk6IHtcbiAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uZ3JvdXBCeSxcbiAgICAgICAgICBhdHRyaWJ1dGU6ICRldmVudFxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VDb2xvclNjaGVtZSgkZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSAmJiB0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZS5ncm91cEJ5KSB7XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgIGdyb3VwQnk6IHtcbiAgICAgICAgICBhdHRyaWJ1dGU6IHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLmdyb3VwQnk/LmF0dHJpYnV0ZSxcbiAgICAgICAgICBjb2xvcjogJGV2ZW50XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHNldFRpY2tDb3VudChkYXRhOiBhbnkpIHtcbiAgICByZXR1cm4gTWF0aC5tYXgoLi4uZGF0YS5tYXAoKHZhbDogYW55KSA9PiB2YWwudmFsdWUpKSA8IDNcbiAgICAgID8geyB0aWNrQ291bnQ6IE1hdGgubWF4KC4uLmRhdGEubWFwKCh2YWw6IGFueSkgPT4gdmFsLnZhbHVlKSkgfVxuICAgICAgOiB7fTtcbiAgfVxuXG4gIHRvZ2dsZVN0YWNrZWQoJGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zQ29weSQudmFsdWUpIHtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoe1xuICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgZ3JhcGg6IHtcbiAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uZ3JhcGgsXG4gICAgICAgICAgc3RhY2tlZDogJGV2ZW50XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZVNvcnQoJGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zQ29weSQudmFsdWUpIHtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoe1xuICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgZ3JhcGg6IHtcbiAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZS5ncmFwaCxcbiAgICAgICAgICBzb3J0OiAkZXZlbnRcbiAgICAgICAgICAgID8gdGhpcy5vcHRpb25zQ29weSQudmFsdWUuZ3JhcGguc29ydCA/PyB7XG4gICAgICAgICAgICAgICAgYXR0cmlidXRlOiB0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZS5hYnNjaXNzYS5hdHRyaWJ1dGUsXG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uOiAnYXNjJ1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VTb3J0QXR0cmlidXRlKCRldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlKSB7XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgIGdyYXBoOiB7XG4gICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUuZ3JhcGgsXG4gICAgICAgICAgc29ydDogeyAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZS5ncmFwaC5zb3J0ISwgYXR0cmlidXRlOiAkZXZlbnQgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VTb3J0RGlyZWN0aW9uKCRldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlKSB7XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgIGdyYXBoOiB7XG4gICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/LmdyYXBoLFxuICAgICAgICAgIHNvcnQ6IHsgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/LmdyYXBoLnNvcnQhLCBkaXJlY3Rpb246ICRldmVudCB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlIHRvSW1hZ2UoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgcmVzb2x2ZSh0aGlzLnZlZ2EubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdjYW52YXMnKVswXS50b0RhdGFVUkwoJ2ltYWdlL3BuZycpKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNoYW5nZUNpcmNsZUNvbG9yU2NoZW1lKCRldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlKSB7XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgIGNpcmNsZUNvbG9yU2NoZW1lOiAkZXZlbnRcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNoYW5nZUJhc2VDb2xvcigkZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSkge1xuICAgICAgdGhpcy5vcHRpb25zQ29weSQubmV4dCh7XG4gICAgICAgIC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLFxuICAgICAgICBiYXNlQ29sb3I6ICRldmVudFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iLCI8cHJ5LXdpZGdldC1hZ2dyZWdhdGVkLWNoYXJ0LWNzcz48L3ByeS13aWRnZXQtYWdncmVnYXRlZC1jaGFydC1jc3M+XG48ZGl2IGNsYXNzPVwiby13aWRnZXQgby13aWRnZXQtLWNoYXJ0XCIgKm5nSWY9XCJvcHRpb25zQ29weSQgfCBhc3luYyBhcyBvcHRpb25zQ29weVwiPlxuICA8cHJ5LXdpZGdldC1oZWFkZXJcbiAgICBbZGF0YXNvdXJjZUlkc109XCIoZGF0YXNvdXJjZUlkcyQgfCBhc3luYykgPz8gW11cIlxuICAgICpuZ0lmPVwiZGlzcGxheUhlYWRlciQgfCBhc3luY1wiXG4gICAgW3dpZGdldEluZGV4XT1cIndpZGdldEluZGV4XCJcbiAgICBbbWFuaWZlc3RdPVwibWFuaWZlc3RcIlxuICAgIChtYW5pZmVzdE1vZGlmaWVkKT1cIm1hbmlmZXN0TW9kaWZpZWQuZW1pdCgkZXZlbnQpXCJcbiAgICAjaGVhZGVyXG4gICAgW2hlYWRlck9wdGlvbnNdPVwiKGRpc3BsYXlIZWFkZXIkIHwgYXN5bmMpID8/IHt9XCJcbiAgICBbZGlzcGxheUNvdW50XT1cImZhbHNlXCJcbiAgICBbb3BlbkRhdGEkXT1cIm9wZW5EYXRhJFwiXG4gID5cbiAgICA8cHJ5LXNldHRpbmdzXG4gICAgICAoc2F2ZVRyaWdnZXJlZCk9XCJlbWl0TWFuaWZlc3QoKVwiXG4gICAgICAoY2hhbmdlVGl0bGUpPVwiY2hhbmdlV2lkZ2V0VGl0bGUoJGV2ZW50KVwiXG4gICAgICBbaGVhZGVyUHJlc2VudF09XCJkaXNwbGF5SGVhZGVyJCB8IGFzeW5jXCJcbiAgICAgIFt3aWRnZXRJbmRleF09XCJ3aWRnZXRJbmRleFwiXG4gICAgICBbb3BlbiRdPVwib3BlbiRcIlxuICAgICAgW2hlYWRlcl09XCJoZWFkZXJcIlxuICAgICAgY2xhc3M9XCJvLXNldHRpbmdzXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1zZXR0aW5nc19fcG9wdXBfX2NvbnRlbnRfX2ZpZWxkcyAtY29uZGVuc2VkXCI+XG4gICAgICAgIDxwcnktZWRpdC1pbnB1dFxuICAgICAgICAgIGxhYmVsPVwiQHByeS53aWRnZXQuY2hhcnQudGl0bGVcIlxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZUNoYXJ0VGl0bGUoJGV2ZW50KVwiXG4gICAgICAgICAgW25nTW9kZWxdPVwib3B0aW9uc0NvcHkuZ3JhcGgudGl0bGVcIlxuICAgICAgICA+PC9wcnktZWRpdC1pbnB1dD5cblxuICAgICAgICA8ZGl2ICpuZ0lmPVwib3B0aW9uc0NvcHlcIiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJjaGFydF90eXBlXCI+e3sgJ0Bwcnkud2lkZ2V0LmNoYXJ0LnR5cGUnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZVR5cGUoJGV2ZW50KVwiXG4gICAgICAgICAgICBbaXRlbXNBc09wdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtpdGVtc109XCJ0eXBlT3B0aW9uc1wiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJvcHRpb25zQ29weS5ncmFwaC50eXBlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYS1wcnktc2VsZWN0XCJcbiAgICAgICAgICAgIGJpbmRMYWJlbD1cImxhYmVsXCJcbiAgICAgICAgICAgIGJpbmRWYWx1ZT1cImlkXCJcbiAgICAgICAgICAgIGlkPVwiY2hhcnRfdHlwZVwiXG4gICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9wdGlvbnNDb3B5LmdyYXBoLnR5cGUgPT09IEdyYXBoVHlwZS5ET05VVFwiPlxuICAgICAgICAgIDxwcnktcmFuZ2VcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cIm9wdGlvbnNDb3B5LmdyYXBoLmRvbnV0U2l6ZVwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VEb251dFNpemUoJGV2ZW50KVwiXG4gICAgICAgICAgICBsYWJlbFRyYW5zbGF0ZT1cIkBwcnkud2lkZ2V0LmNoYXJ0LmRvbnV0U2l6ZVwiXG4gICAgICAgICAgICBtaW49XCIxXCJcbiAgICAgICAgICAgIG1heD1cIjUwMFwiXG4gICAgICAgICAgPjwvcHJ5LXJhbmdlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgPHByeS1jaGVja2JveCAobmdNb2RlbENoYW5nZSk9XCJ0b2dnbGVMZWdlbmQoJGV2ZW50KVwiIFtuZ01vZGVsXT1cIiEhb3B0aW9uc0NvcHkuZ3JhcGgubGVnZW5kXCI+XG4gICAgICAgICAgICB7eyAnQHByeS53aWRnZXQuY2hhcnQubGVnZW5kJyB8IGkxOG4gfX1cbiAgICAgICAgICA8L3ByeS1jaGVja2JveD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEhb3B0aW9uc0NvcHkuZ3JhcGgudHlwZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiby1zZXR0aW5nc19fcG9wdXBfX2NvbnRlbnRfX2ZpZWxkcyAtY29uZGVuc2VkXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cImFic2Npc3NhXCI+e3sgJ0Bwcnkud2lkZ2V0LmNoYXJ0LmFic2Npc3NhJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlQWJzY2lzc2EoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtpdGVtc0FzT3B0aW9uXT1cInRydWVcIlxuICAgICAgICAgICAgICBbaXRlbXNdPVwiYWJzY2lzc2FBdHRyaWJ1dGVzJCB8IGFzeW5jIHwgcHJ5U29ydERhdGEgOiBzb3J0QWN0aXZlIDogc29ydERpcmVjdGlvblwiXG4gICAgICAgICAgICAgIFtuZ01vZGVsXT1cIm9wdGlvbnNDb3B5LmFic2Npc3NhLmF0dHJpYnV0ZVwiXG4gICAgICAgICAgICAgIGJpbmRMYWJlbD1cIm5hbWVcIlxuICAgICAgICAgICAgICBiaW5kVmFsdWU9XCJpZFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYS1wcnktc2VsZWN0XCJcbiAgICAgICAgICAgICAgaWQ9XCJhYnNjaXNzYVwiXG4gICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPHByeS1lZGl0LWlucHV0XG4gICAgICAgICAgICBsYWJlbD1cIkBwcnkud2lkZ2V0LmNoYXJ0LmRhdGFMYWJlbFwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VBYnNjaXNzYUxhYmVsKCRldmVudClcIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwib3B0aW9uc0NvcHkuYWJzY2lzc2EubGFiZWxcIlxuICAgICAgICAgID48L3ByeS1lZGl0LWlucHV0PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgWydxdWFudGl0YXRpdmUnLCAndGVtcG9yYWwnXS5pbmNsdWRlcyh0cmFuc2xhdGVUb1ZlZ2FUeXBlKGNvcHlBYnNjaXNzYUZpZWxkPy50eXBlKSkgJiZcbiAgICAgICAgICAgICAgb3B0aW9uc0NvcHkuZ3JhcGgudHlwZSAhPT0gR3JhcGhUeXBlLkRPTlVUICYmXG4gICAgICAgICAgICAgIG9wdGlvbnNDb3B5LmdyYXBoLnR5cGUgIT09IEdyYXBoVHlwZS5DSVJDVUxBUlxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8cHJ5LWNoZWNrYm94IChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZUtlZXAwQWJzY2lzc2EoJGV2ZW50KVwiIFtuZ01vZGVsXT1cIm9wdGlvbnNDb3B5LmFic2Npc3NhLmtlZXAwXCJcbiAgICAgICAgICAgICAgPnt7ICdAcHJ5LndpZGdldC5jaGFydC5vcmlnaW4nIHwgaTE4biB9fVxuICAgICAgICAgICAgPC9wcnktY2hlY2tib3g+XG5cbiAgICAgICAgICAgIDxwcnktY2hlY2tib3hcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwibGltaXRFbGVtZW50cygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwiISFvcHRpb25zQ29weS5hYnNjaXNzYS5saW1pdFwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJvcHRpb25zQ29weS5ncmFwaC50eXBlID09PSBHcmFwaFR5cGUuSElTVE9HUkFNXCJcbiAgICAgICAgICAgICAgPnt7ICdAcHJ5LndpZGdldC5jaGFydC5saW1pdCcgfCBpMThuIH19XG4gICAgICAgICAgICA8L3ByeS1jaGVja2JveD5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEhb3B0aW9uc0NvcHkuYWJzY2lzc2EubGltaXRcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9wdGlvbnNDb3B5LmFic2Npc3NhLmxpbWl0LmlzVGltZUxpbWl0ID09PSBmYWxzZVwiPlxuICAgICAgICAgICAgICAgIDxwcnktcmFuZ2VcbiAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cIm9wdGlvbnNDb3B5LmFic2Npc3NhLmxpbWl0LmF0XCJcbiAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZUxpbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgbGFiZWxUcmFuc2xhdGU9XCJAcHJ5LndpZGdldC5jaGFydC5saW1pdFwiXG4gICAgICAgICAgICAgICAgICBtaW49XCIxXCJcbiAgICAgICAgICAgICAgICAgIG1heD1cIjEwXCJcbiAgICAgICAgICAgICAgICA+PC9wcnktcmFuZ2U+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib3B0aW9uc0NvcHkuZ3JhcGgudHlwZSAhPT0gR3JhcGhUeXBlLkhJU1RPR1JBTVwiPlxuICAgICAgICAgICAgICAgICAgPHByeS1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VMaW1pdE90aGVycygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwib3B0aW9uc0NvcHkuYWJzY2lzc2EubGltaXQub3RoZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgPnt7ICdAcHJ5LndpZGdldC5jaGFydC5vdGhlcnMnIHwgaTE4biB9fVxuICAgICAgICAgICAgICAgICAgPC9wcnktY2hlY2tib3g+XG5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJkYXRlX2xpbWl0XCI+e3sgJ0Bwcnkud2lkZ2V0LmNoYXJ0Lm9yZGVyJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlTGltaXRPcmRlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW2l0ZW1zQXNPcHRpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJbeyBpZDogJ2FzYycgfSwgeyBpZDogJ2Rlc2MnIH1dXCJcbiAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwib3B0aW9uc0NvcHkuYWJzY2lzc2EubGltaXQub3JkZXJcIlxuICAgICAgICAgICAgICAgICAgICBbYmFzZVRyYW5zbGF0ZV09XCInQHByeS53aWRnZXQuY2hhcnQuJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbFRyYW5zbGF0ZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgYmluZExhYmVsPVwiaWRcIlxuICAgICAgICAgICAgICAgICAgICBiaW5kVmFsdWU9XCJpZFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1wcnktc2VsZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJvdGhlcl9saW1pdFwiXG4gICAgICAgICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiISFvcHRpb25zQ29weS5hYnNjaXNzYS5saW1pdC5pc1RpbWVMaW1pdFwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJkYXRlX2xpbWl0XCI+e3sgJ0Bwcnkud2lkZ2V0LmNoYXJ0LnRpbWVJbnRlcnZhbCcgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlVGltZUxpbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgW2l0ZW1zQXNPcHRpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiW1xuICAgICAgICAgICAgICAgICAgICB7IGlkOiAnc2Vjb25kJyB9LFxuICAgICAgICAgICAgICAgICAgICB7IGlkOiAnbWludXRlJyB9LFxuICAgICAgICAgICAgICAgICAgICB7IGlkOiAnaG91cicgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBpZDogJ2RheScgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBpZDogJ3dlZWsnIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgaWQ6ICdtb250aCcgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBpZDogJ3F1YXJ0ZXInIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgaWQ6ICd5ZWFyJyB9XG4gICAgICAgICAgICAgICAgICBdXCJcbiAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cIm9wdGlvbnNDb3B5LmFic2Npc3NhLmxpbWl0LmludGVydmFsXCJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbFRyYW5zbGF0ZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIGJhc2VUcmFuc2xhdGU9XCJAcHJ5LndpZGdldC5jaGFydC50aW1lLlwiXG4gICAgICAgICAgICAgICAgICBiaW5kTGFiZWw9XCJpZFwiXG4gICAgICAgICAgICAgICAgICBiaW5kVmFsdWU9XCJpZFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImEtcHJ5LXNlbGVjdFwiXG4gICAgICAgICAgICAgICAgICBpZD1cImRhdGVfbGltaXRcIlxuICAgICAgICAgICAgICAgID48L3ByeS1zZWxlY3Q+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJvLXNldHRpbmdzX19wb3B1cF9fY29udGVudF9fZmllbGRzIC1jb25kZW5zZWRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwib3BlcmF0aW9uc1wiPnt7ICdAcHJ5LndpZGdldC5jaGFydC5vcGVyYXRpb24udGl0bGUnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VPcGVyYXRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtpdGVtc0FzT3B0aW9uXT1cInRydWVcIlxuICAgICAgICAgICAgICBbaXRlbXNdPVwib3BlcmF0aW9ucyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgIFtuZ01vZGVsXT1cIm9wdGlvbnNDb3B5Lm9yZGluYXRlLm9wZXJhdGlvblwiXG4gICAgICAgICAgICAgIGJpbmRMYWJlbD1cImxhYmVsXCJcbiAgICAgICAgICAgICAgYmluZFZhbHVlPVwiaWRcIlxuICAgICAgICAgICAgICBjbGFzcz1cImEtcHJ5LXNlbGVjdFwiXG4gICAgICAgICAgICAgIGlkPVwib3BlcmF0aW9uc1wiXG4gICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9wdGlvbnNDb3B5Lm9yZGluYXRlLm9wZXJhdGlvbiAhPT0gT3BlcmF0aW9uLkNPVU5UXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJvcmRpbmF0ZVwiPnt7ICdAcHJ5LndpZGdldC5jaGFydC5vcmRpbmF0ZScgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VPcmRpbmF0ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbaXRlbXNBc09wdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbaXRlbXNdPVwib3JkaW5hdGVBdHRyaWJ1dGVzJCB8IGFzeW5jIHwgcHJ5U29ydERhdGEgOiBzb3J0QWN0aXZlIDogc29ydERpcmVjdGlvblwiXG4gICAgICAgICAgICAgICAgW25nTW9kZWxdPVwib3B0aW9uc0NvcHkub3JkaW5hdGUuYXR0cmlidXRlXCJcbiAgICAgICAgICAgICAgICBiaW5kTGFiZWw9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICBiaW5kVmFsdWU9XCJpZFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhLXByeS1zZWxlY3RcIlxuICAgICAgICAgICAgICAgIGlkPVwib3JkaW5hdGVcIlxuICAgICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8cHJ5LWVkaXQtaW5wdXRcbiAgICAgICAgICAgIGxhYmVsPVwiQHByeS53aWRnZXQuY2hhcnQuZGF0YUxhYmVsXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZU9yZGluYXRlTGFiZWwoJGV2ZW50KVwiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJvcHRpb25zQ29weS5vcmRpbmF0ZS5sYWJlbFwiXG4gICAgICAgICAgPjwvcHJ5LWVkaXQtaW5wdXQ+XG5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwidHJhbnNsYXRlVG9WZWdhVHlwZShjb3B5T3JkaW5hdGVGaWVsZD8udHlwZSkgPT09ICdxdWFudGl0YXRpdmUnXCIgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICAgIDxwcnktY2hlY2tib3ggKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlS2VlcDBPcmRpbmF0ZSgkZXZlbnQpXCIgW25nTW9kZWxdPVwib3B0aW9uc0NvcHkub3JkaW5hdGUua2VlcDBcIlxuICAgICAgICAgICAgICA+e3sgJ0Bwcnkud2lkZ2V0LmNoYXJ0Lm9yaWdpbicgfCBpMThuIH19XG4gICAgICAgICAgICA8L3ByeS1jaGVja2JveD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwib3B0aW9uc0NvcHkuZ3JhcGgudHlwZSAhPT0gR3JhcGhUeXBlLkRPTlVUICYmIG9wdGlvbnNDb3B5LmdyYXBoLnR5cGUgIT09IEdyYXBoVHlwZS5DSVJDVUxBUlwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1zZXR0aW5nc19fcG9wdXBfX2NvbnRlbnRfX2ZpZWxkcyAtY29uZGVuc2VkXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgICAgIDxwcnktY2hlY2tib3ggKG5nTW9kZWxDaGFuZ2UpPVwidG9nZ2xlR3JvdXBCeSgkZXZlbnQpXCIgW25nTW9kZWxdPVwiISFvcHRpb25zQ29weS5ncm91cEJ5XCJcbiAgICAgICAgICAgICAgICA+e3sgJ0Bwcnkud2lkZ2V0LmNoYXJ0Lmdyb3VwQnknIHwgaTE4biB9fVxuICAgICAgICAgICAgICA8L3ByeS1jaGVja2JveD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiISFvcHRpb25zQ29weS5ncm91cEJ5XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwiY2hhcnRfc2VyaWVzQXR0clwiPnt7ICdAcHJ5LndpZGdldC5jaGFydC5ncm91cEF0dHInIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZUdyb3VwQnkoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJvcHRpb25zQ29weS5ncm91cEJ5LmF0dHJpYnV0ZVwiXG4gICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiYWJzY2lzc2FBdHRyaWJ1dGVzJCB8IGFzeW5jIHwgcHJ5U29ydERhdGEgOiBzb3J0QWN0aXZlIDogc29ydERpcmVjdGlvblwiXG4gICAgICAgICAgICAgICAgICBiaW5kTGFiZWw9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICAgIGJpbmRWYWx1ZT1cImlkXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1wcnktc2VsZWN0XCJcbiAgICAgICAgICAgICAgICAgIGlkPVwiY2hhcnRfc2VyaWVzQXR0clwiXG4gICAgICAgICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgICAgICAgIDxwcnktc2NoZW1lLXBpY2tlclxuICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlQ29sb3JTY2hlbWUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJvcHRpb25zQ29weS5ncm91cEJ5LmNvbG9yXCJcbiAgICAgICAgICAgICAgICA+PC9wcnktc2NoZW1lLXBpY2tlcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgICAgICAgIDxwcnktY2hlY2tib3ggW25nTW9kZWxdPVwib3B0aW9uc0NvcHkuZ3JhcGguc3RhY2tlZFwiIChuZ01vZGVsQ2hhbmdlKT1cInRvZ2dsZVN0YWNrZWQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAge3sgJ0Bwcnkud2lkZ2V0LmNoYXJ0LnN0YWNrZWQnIHwgaTE4biB9fVxuICAgICAgICAgICAgICAgIDwvcHJ5LWNoZWNrYm94PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLXNldHRpbmdzX19wb3B1cF9fY29udGVudF9fZmllbGRzIC1jb25kZW5zZWRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICAgICAgPHByeS1jaGVja2JveCAobmdNb2RlbENoYW5nZSk9XCJ0b2dnbGVTb3J0KCRldmVudClcIiBbbmdNb2RlbF09XCIhIW9wdGlvbnNDb3B5LmdyYXBoLnNvcnRcIlxuICAgICAgICAgICAgICAgID57eyAnQHByeS53aWRnZXQuY2hhcnQuc29ydC50aXRsZScgfCBpMThuIH19XG4gICAgICAgICAgICAgIDwvcHJ5LWNoZWNrYm94PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiISFvcHRpb25zQ29weS5ncmFwaC5zb3J0XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwiY2hhcnRfc2VyaWVzQXR0clwiPkF0dHJpYnV0ZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZVNvcnRBdHRyaWJ1dGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJvcHRpb25zQ29weS5ncmFwaC5zb3J0LmF0dHJpYnV0ZVwiXG4gICAgICAgICAgICAgICAgICBbaXRlbXNdPVwic29ydEF0dHJpYnV0ZXMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgYmluZFZhbHVlPVwiaWRcIlxuICAgICAgICAgICAgICAgICAgYmluZExhYmVsPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLXByeS1zZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJjaGFydF9zb3J0QXR0clwiXG4gICAgICAgICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwiY2hhcnRfc2VyaWVzQXR0clwiPlNvcnQ8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VTb3J0RGlyZWN0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwib3B0aW9uc0NvcHkuZ3JhcGguc29ydC5kaXJlY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cInNvcnREaXJlY3Rpb25zXCJcbiAgICAgICAgICAgICAgICAgIGJpbmRWYWx1ZT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIGJpbmRMYWJlbD1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1wcnktc2VsZWN0XCJcbiAgICAgICAgICAgICAgICAgIGlkPVwiY2hhcnRfc29ydERpcmVjdGlvblwiXG4gICAgICAgICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwib3B0aW9uc0NvcHkuZ3JhcGgudHlwZSA9PT0gR3JhcGhUeXBlLkRPTlVUIHx8IG9wdGlvbnNDb3B5LmdyYXBoLnR5cGUgPT09IEdyYXBoVHlwZS5DSVJDVUxBUlwiXG4gICAgICAgID5cbiAgICAgICAgICA8cHJ5LXNjaGVtZS1waWNrZXJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZUNpcmNsZUNvbG9yU2NoZW1lKCRldmVudClcIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwib3B0aW9uc0NvcHkuY2lyY2xlQ29sb3JTY2hlbWVcIlxuICAgICAgICAgID48L3ByeS1zY2hlbWUtcGlja2VyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIG9wdGlvbnNDb3B5LmdyYXBoLnR5cGUgIT09IEdyYXBoVHlwZS5ET05VVCAmJlxuICAgICAgICAgICAgb3B0aW9uc0NvcHkuZ3JhcGgudHlwZSAhPT0gR3JhcGhUeXBlLkNJUkNVTEFSICYmXG4gICAgICAgICAgICAhb3B0aW9uc0NvcHkuZ3JvdXBCeVxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwiY2hhcnRfYmFzZUNvbG9yXCI+e3sgJ0Bwcnkud2lkZ2V0LmNoYXJ0LmNvbG9yJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgICAgPHByeS1jb2xvci1waWNrZXJcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlQmFzZUNvbG9yKCRldmVudClcIlxuICAgICAgICAgICAgICBbbmdNb2RlbF09XCJvcHRpb25zQ29weS5iYXNlQ29sb3JcIlxuICAgICAgICAgICAgICBpZD1cImNoYXJ0X2Jhc2VDb2xvclwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYS1wcnktc2VsZWN0XCJcbiAgICAgICAgICAgID48L3ByeS1jb2xvci1waWNrZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3RlbXBsYXRlT3B0aW9uIGxldC1pdGVtPVwiaXRlbVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWxpZ25lZC1vcHRpb25cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYS1jaGlwcyAtbWRcIiBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJpdGVtXCI+e3sgaXRlbSB9fTwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9wcnktc2V0dGluZ3M+XG4gIDwvcHJ5LXdpZGdldC1oZWFkZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihpc0NoYXJ0VmFsaWQkIHwgYXN5bmMpICYmICEobm9EYXRhJCB8IGFzeW5jKSAmJiAhKG5vQWdncmVnYXRpb25EYXRhJCB8IGFzeW5jKVwiPlxuICAgIDxkaXYgI3ZlZ2E+PC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJub0RhdGEkIHwgYXN5bmNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiby13aWRnZXRfX2Nob29zZS1wYXJhbWV0ZXJzXCI+XG4gICAgICA8aW1nXG4gICAgICAgIGNsYXNzPVwibm8tcmVzdWx0X19zZWFyY2hcIlxuICAgICAgICBzcmM9XCIuLi8uLi8uLi9hc3NldHMvc3Zncy9wcnlfcmVjaGVyY2hlX3Bhc19kZV9yZXN1bHRhdC5zdmdcIlxuICAgICAgICBhbHQ9XCJ7eyAnQHByeS53aWRnZXQuY2hhcnQubm9EYXRhJyB8IGkxOG4gfX1cIlxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgLz5cbiAgICAgIDxzcGFuIGNsYXNzPVwibm8tcmVzdWx0X190ZXh0XCI+e3sgJ0Bwcnkud2lkZ2V0LmNoYXJ0Lm5vRGF0YScgfCBpMThuIH19PC9zcGFuPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9wZW5EYXRhKClcIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5XCI+XG4gICAgICAgIDxwcnktaWNvbiBbaGVpZ2h0XT1cIjIwXCIgW3dpZHRoXT1cIjIwXCIgaWNvblN2Zz1cImNvbnRyb2xcIj48L3ByeS1pY29uPlxuICAgICAgICA8c3Bhbj57eyAnQHByeS53aWRnZXQudG9vbHRpcC5yZWFkU2VhcmNoJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEobm9EYXRhJCB8IGFzeW5jKSAmJiAobm9BZ2dyZWdhdGlvbkRhdGEkIHwgYXN5bmMpXCI+XG4gICAgPGRpdiBjbGFzcz1cIm8td2lkZ2V0X19jaG9vc2UtcGFyYW1ldGVyc1wiPlxuICAgICAgPGltZ1xuICAgICAgICBjbGFzcz1cIm5vLXJlc3VsdF9fc2VhcmNoXCJcbiAgICAgICAgc3JjPVwiLi4vLi4vLi4vYXNzZXRzL3N2Z3MvcHJ5X3JlY2hlcmNoZV9wYXNfZGVfcmVzdWx0YXQuc3ZnXCJcbiAgICAgICAgYWx0PVwie3sgJ0Bwcnkud2lkZ2V0LmNoYXJ0LmFnZ05vUmVzdWx0JyB8IGkxOG4gfX1cIlxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgLz5cbiAgICAgIDxzcGFuIGNsYXNzPVwibm8tcmVzdWx0X190ZXh0XCI+e3sgJ0Bwcnkud2lkZ2V0LmNoYXJ0LmFnZ05vUmVzdWx0JyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib3BlblNldHRpbmdzKClcIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5XCI+XG4gICAgICAgIDxwcnktaWNvbiBbaGVpZ2h0XT1cIjIwXCIgW3dpZHRoXT1cIjIwXCIgaWNvblN2Zz1cImNvbnRyb2xcIj48L3ByeS1pY29uPlxuICAgICAgICA8c3Bhbj57eyAnQHByeS53aWRnZXQuc2V0dGluZ3MudGl0bGUnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIShub0RhdGEkIHwgYXN5bmMpICYmICEobm9BZ2dyZWdhdGlvbkRhdGEkIHwgYXN5bmMpICYmICEoaXNDaGFydFZhbGlkJCB8IGFzeW5jKVwiPlxuICAgIDxkaXYgY2xhc3M9XCJvLXdpZGdldF9fY2hvb3NlLXBhcmFtZXRlcnNcIj5cbiAgICAgIDxpbWdcbiAgICAgICAgY2xhc3M9XCJuby1yZXN1bHRfX3NlYXJjaFwiXG4gICAgICAgIHNyYz1cIi4uLy4uLy4uL2Fzc2V0cy9zdmdzL3ByeV9yZWNoZXJjaGVfcGFzX2RlX3Jlc3VsdGF0LnN2Z1wiXG4gICAgICAgIGFsdD1cInt7ICdAcHJ5LndpZGdldC5jaGFydC5jaG9vc2VQYXJhbWV0ZXJzJyB8IGkxOG4gfX1cIlxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgLz5cbiAgICAgIDxzcGFuIGNsYXNzPVwibm8tcmVzdWx0X190ZXh0XCI+e3sgJ0Bwcnkud2lkZ2V0LmNoYXJ0LmNob29zZVBhcmFtZXRlcnMnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvcGVuU2V0dGluZ3MoKVwiIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIj5cbiAgICAgICAgPHByeS1pY29uIFtoZWlnaHRdPVwiMjBcIiBbd2lkdGhdPVwiMjBcIiBpY29uU3ZnPVwiY29udHJvbFwiPjwvcHJ5LWljb24+XG4gICAgICAgIDxzcGFuPnt7ICdAcHJ5LndpZGdldC5zZXR0aW5ncy50aXRsZScgfCBpMThuIH19PC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=
824
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWFnZ3JlZ2F0ZWQtY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvd2lkZ2V0cy93aWRnZXQtYWdncmVnYXRlZC1jaGFydC9jb21wb25lbnQvd2lkZ2V0LWFnZ3JlZ2F0ZWQtY2hhcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvd2lkZ2V0cy93aWRnZXQtYWdncmVnYXRlZC1jaGFydC9jb21wb25lbnQvd2lkZ2V0LWFnZ3JlZ2F0ZWQtY2hhcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWMsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWhGLE9BQU8sRUFJTCxjQUFjLEVBRWQsbUJBQW1CLEVBRW5CLGNBQWMsRUFDZCxTQUFTLEVBQ1QsU0FBUyxFQUlULGVBQWUsRUFDZixTQUFTLEVBR1QsYUFBYSxFQUdiLFFBQVEsRUFDUixvQkFBb0IsRUFDckIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixZQUFZLEVBQ1osTUFBTSxFQUNOLFNBQVMsRUFDVCxHQUFHLEVBRUgsS0FBSyxFQUNMLFNBQVMsRUFDVCxPQUFPLEVBQ1AsU0FBUyxFQUNULEdBQUcsRUFDSCxjQUFjLEVBQ2YsTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN6QyxPQUFPLEVBQUUsU0FBUyxFQUFnQixNQUFNLFdBQVcsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7QUFPeEQsTUFBTSxPQUFPLDhCQUErQixTQUFRLG1CQUFtQjtJQXdDckUsWUFDRSxLQUFpQixFQUNULGdCQUFnQyxFQUN4QyxFQUFjLEVBQ04sa0JBQXlDLEVBQ3pDLGFBQStCO1FBRXZDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFMVCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWdCO1FBRWhDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBdUI7UUFDekMsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBMUN6QyxpQkFBWSxHQUFHLElBQUksZUFBZSxDQUFzQyxJQUFJLENBQUMsQ0FBQztRQUU5RSxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQVUvQix5QkFBb0IsR0FBRyxvQkFBb0IsQ0FBQztRQUM1QyxjQUFTLEdBQUcsU0FBUyxDQUFDO1FBQ3RCLGNBQVMsR0FBRyxTQUFTLENBQUM7UUFFdEIsZ0JBQVcsR0FBb0MsRUFBRSxDQUFDO1FBR2xELFlBQU8sR0FBWSxFQUFFLENBQUM7UUFDdEIsV0FBTSxHQUFZLEVBQUUsQ0FBQztRQUVyQiwrQkFBMEIsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBSWpELGVBQVUsR0FBSSxNQUFNLENBQUM7UUFDckIsa0JBQWEsR0FBSSxLQUFLLENBQUM7UUFFdkIsbUJBQWMsR0FBRztZQUNmLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQzNCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1NBQzdCLENBQUM7UUFHRixXQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQVU5QixJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO2FBQ3hDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNYLEVBQUUsRUFBRSxDQUFDO1lBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsOEJBQThCLEdBQUcsQ0FBQyxDQUFDO1NBQ3pFLENBQUMsQ0FBQzthQUNGLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRWxELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQ2pDLEdBQUcsQ0FDRCxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQ1gsU0FBUyxDQUNQO1lBQ0UsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBQzVELFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7WUFDekIsUUFBUSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtTQUNNLEVBQ2pDLENBQUMsUUFBUSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQWlDLENBQ3pCLENBQ3BDLENBQ0YsQ0FBQztRQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDL0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTFELElBQUksQ0FBQyxXQUFXLEdBQUcsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDbkYsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FDNUIsT0FBTzthQUNKLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUMzRCxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7YUFDaEMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDYixLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDcEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNsQyxPQUFPLEtBQUssQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQztZQUNqQyxDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoRyxDQUFDLENBQUMsQ0FDSDthQUNBLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7YUFDbEMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQzVCLEVBQ0QsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FDakIsQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDcEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLE1BQU0sQ0FBQztZQUNoRixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUN4RDthQUNFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNYLEVBQUUsRUFBRSxDQUFDO1lBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsOEJBQThCLEdBQUcsQ0FBQyxDQUFDO1NBQ3pFLENBQUMsQ0FBQzthQUNGLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUNsRCxDQUNGLENBQUM7UUFFRixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV2RixJQUFJLENBQUMsZUFBZSxHQUFHLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQy9FLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUU7WUFDN0IsTUFBTSxXQUFXLEdBQUcsV0FBVztpQkFDNUIsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxLQUFLLFlBQVksSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsV0FBVyxDQUFDO2lCQUM5RixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRW5DLE1BQU0sNEJBQTRCLEdBQUcsV0FBVztpQkFDN0MsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxLQUFLLFlBQVksSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsV0FBVyxDQUFDO2lCQUNqRyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFFLE9BQXNCLENBQUMsT0FBa0MsQ0FBQztpQkFDNUUsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFdEMsTUFBTSxlQUFlLEdBQUcsNEJBQTRCLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRXpFLE1BQU0sWUFBWSxHQUNoQiw0QkFBNEIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQzNELENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQWMsQ0FBQyxDQUFDO1lBRWpELE1BQU0sYUFBYSxHQUFHLFdBQVc7aUJBQzlCLE1BQU0sQ0FDTCxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQ0wsQ0FBQyxFQUFFLENBQUMsVUFBVSxLQUFLLFlBQVksSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsVUFBVSxDQUFDO2dCQUNsRixFQUFFLENBQUMsVUFBVSxLQUFLLFNBQVMsQ0FDOUI7aUJBQ0EsR0FBRyxDQUNGLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FDVixRQUFvQixDQUFDLE1BQU0sSUFBTSxRQUF1QixDQUFDLE9BQWtDLENBQUMsTUFBTSxDQUN0RyxDQUFDO1lBRUosT0FBTyxPQUFPLENBQUMsTUFBTSxDQUNuQixDQUFDLEtBQUssRUFBRSxFQUFFLENBQ1IsV0FBVyxJQUFJLGVBQWUsSUFBSSxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FDeEcsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7UUFFRixJQUFJLENBQUMsbUJBQW1CLEdBQUcsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDcEcsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsY0FBYyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FDM0MsY0FBYzthQUNYLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQzthQUNoQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNiLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNwQixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2xDLE9BQU8sS0FBSyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxDQUNMLENBQUMsQ0FBQyxLQUFLO2dCQUNQLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLEdBQUc7Z0JBQzVCLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLE1BQU07Z0JBQy9CLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FDckYsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNIO2FBQ0EsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUN0QyxDQUNGLENBQUM7UUFFRixJQUFJLENBQUMsbUJBQW1CLEdBQUcsYUFBYSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxPQUFPO1lBQ1osSUFBSSxDQUFDLGVBQWU7WUFDcEIsSUFBSSxDQUFDLDBCQUEwQjtTQUNoQyxDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxFQUFFLEVBQUUsQ0FDL0IsY0FBYzthQUNYLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQzthQUNoQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNiLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNwQixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2xDLE9BQU8sS0FBSyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFDRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7Z0JBQ3ZCO29CQUNFLFNBQVMsQ0FBQyxHQUFHO29CQUNiLFNBQVMsQ0FBQyxHQUFHO29CQUNiLFNBQVMsQ0FBQyxHQUFHO29CQUNiLFNBQVMsQ0FBQyxFQUFFO29CQUNaLFNBQVMsQ0FBQyxFQUFFO29CQUNaLFNBQVMsQ0FBQyxPQUFPO29CQUNqQixTQUFTLENBQUMsTUFBTTtvQkFDaEIsU0FBUyxDQUFDLElBQUk7aUJBQ2YsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUN0RDtnQkFDQSxPQUFPLENBQ0wsQ0FBQyxDQUFDLEtBQUs7b0JBQ1AsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FDL0YsQ0FBQzthQUNIO1lBQ0QsT0FBTyxDQUFDLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDcEYsQ0FBQyxDQUFDLENBQ0g7YUFDQSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQ3RDLENBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLENBQUMsRUFBRSxFQUFFO1lBQzlDLE9BQU8sQ0FDTCxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTO2dCQUM1QixhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO2dCQUN6RSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUztvQkFDekIsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7b0JBQzNFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FDVixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUVGLElBQUksQ0FBQyxlQUFlLEdBQUcsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDekYsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQzdGLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFO1lBQ2pDLE1BQU0sUUFBUSxHQUFHLE9BQU87aUJBQ3JCLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssT0FBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDeEYsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUIsTUFBTSxRQUFRLEdBQUcsT0FBTztpQkFDckIsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxPQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUN4RixJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMxQixNQUFNLE9BQU8sR0FBRyxPQUFPO2lCQUNwQixHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7aUJBQ3hGLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFCLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsSUFBSSxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUM7WUFDekcsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxJQUFJLElBQUksU0FBUyxDQUFDLE1BQU0sQ0FBQztZQUN6RyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssT0FBTyxFQUFFLEtBQUssQ0FBQyxFQUFFLElBQUksSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDO1lBQ3ZHLE9BQU87Z0JBQ0wsUUFBUSxFQUFFO29CQUNSLFNBQVMsRUFBRSxpQkFBaUI7b0JBQzVCLFFBQVEsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQzNFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxJQUFJLEVBQUU7aUJBQzNCO2dCQUNELFFBQVEsRUFBRTtvQkFDUixTQUFTLEVBQUUsaUJBQWlCO29CQUM1QixRQUFRLEVBQ04sT0FBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLEtBQUssSUFBSSxPQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsUUFBUTt3QkFDbkcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxZQUFZO3dCQUN2QixDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO29CQUN2RSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksSUFBSSxFQUFFO2lCQUMzQjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsU0FBUyxFQUFFLGdCQUFnQjtvQkFDM0IsUUFBUSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDO29CQUNuRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksSUFBSSxFQUFFO2lCQUMxQjthQUNGLENBQUM7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO1FBRUYsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGFBQWEsQ0FBQztZQUNyQyxJQUFJLENBQUMsY0FBYztZQUNuQixJQUFJLENBQUMsUUFBUTtZQUNiLGFBQWEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsbUJBQW1CLENBQUMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQy9FLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FDOUIsV0FBVyxDQUFDLFFBQVEsQ0FBRSxLQUFxQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQy9FLEVBQ0QsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUNyQjtTQUNGLENBQUMsQ0FBQyxJQUFJLENBQ0wsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUNqQixHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUN6RyxTQUFTLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLENBQ25DLElBQUksQ0FBQyxrQkFBa0I7YUFDcEIsU0FBUyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUM7YUFDL0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3ZHLEVBQ0QsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFDN0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRTtZQUMzQixhQUFhO1lBQ2IsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRTtnQkFDL0QsT0FBTztvQkFDTCxTQUFTLEVBQUUsU0FBUyxDQUFDLFNBQVM7b0JBQzlCLElBQUksRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7aUJBQ3RGLENBQUM7YUFDSDtZQUNELE1BQU0sU0FBUyxHQUNiLFNBQVMsQ0FBQyxNQU9YO2lCQUNFLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ2IsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQzlCLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRztnQkFDZCxNQUFNLEVBQUUsT0FBTyxDQUFDLEdBQUc7Z0JBQ25CLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSzthQUNyQixDQUFDLENBQUMsQ0FDSjtpQkFDQSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQztRQUM3RCxDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFDbEQsS0FBSyxFQUFFLENBQ1IsQ0FBQztRQUVGLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTVGLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxRQUFRO1lBQ2IsSUFBSSxDQUFDLGVBQWU7WUFDcEIsSUFBSSxDQUFDLGlCQUFpQjtZQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDeEMsSUFBSSxDQUFDLGNBQWM7U0FDcEIsQ0FBQyxDQUFDLElBQUksQ0FDTCxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFO1lBQzlDLE1BQU0sVUFBVSxHQUFHLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEYsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUN0RyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUMvQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLCtCQUErQixDQUM3RSxDQUFDO1lBRUQsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQWMsQ0FBQyxPQUFPLENBQ3BHLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDMUMsQ0FBQyxDQUNGLENBQUM7WUFDRixPQUFPLFNBQVMsQ0FDZDtnQkFDRSxPQUFPLEVBQUUsaURBQWlEO2dCQUMxRCxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7Z0JBQzdCLEtBQUssRUFBRSxXQUFXO2dCQUNsQixNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNuRSxPQUFPLEVBQUUsRUFBRTtnQkFDWCxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUU7Z0JBQzlDLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pELEtBQUssRUFBRTtvQkFDTDt3QkFDRSxJQUFJLEVBQUU7NEJBQ0osSUFBSSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQThDOzRCQUNuRixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7NEJBQy9DLElBQUksRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQzs0QkFDN0MsV0FBVyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLEVBQUU7eUJBQzNDO3dCQUNELFFBQVEsRUFBRTs0QkFDUixDQUFDLEVBQUUsQ0FBQyxVQUFVO2dDQUNaLENBQUMsQ0FBQztvQ0FDRSxLQUFLLEVBQUUsS0FBSztvQ0FDWixLQUFLLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLO29DQUM3QixJQUFJLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRO29DQUM3QixRQUFRLEVBQ04sS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxXQUFXO3dDQUNsRixDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUTt3Q0FDakMsQ0FBQyxDQUFDLFNBQVM7b0NBQ2YsR0FBRyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO29DQUNqRCxJQUFJLEVBQUU7d0NBQ0osMEZBQTBGO3dDQUMxRixJQUFJLEVBQUUsS0FBSzt3Q0FDWCxHQUFHLDhCQUE4QixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQzt3Q0FDbkUsU0FBUyxFQUFFLGtCQUNULEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxRQUFROzRDQUMzQyxDQUFDLENBQUMsOENBQThDOzRDQUNoRCxDQUFDLENBQUMsMkJBQ04sTUFDRSxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUMsUUFBUTs0Q0FDM0MsQ0FBQyxDQUFDLDhDQUE4Qzs0Q0FDaEQsQ0FBQyxDQUFDLGFBQ04sRUFBRTtxQ0FDSDtvQ0FDRCxLQUFLLEVBQUU7d0NBQ0wsNkRBQTZEO3dDQUM3RCxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSzt3Q0FDOUIsNEVBQTRFO3FDQUM3RTtvQ0FDRCxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7aUNBQzdGO2dDQUNILENBQUMsQ0FBQyxTQUFTOzRCQUNiLENBQUMsRUFBRSxDQUFDLFVBQVU7Z0NBQ1osQ0FBQyxDQUFDO29DQUNFLEtBQUssRUFBRSxPQUFPO29DQUNkLEtBQUssRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUs7b0NBQzdCLElBQUksRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVE7b0NBQzdCLElBQUksRUFBRTt3Q0FDSixHQUFHLDhCQUE4QixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQzt3Q0FDbkUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7cUNBQ2xDO29DQUNELEtBQUssRUFBRTt3Q0FDTCxJQUFJLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLO3FDQUMzRjtvQ0FDRCxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2lDQUNwQztnQ0FDSCxDQUFDLENBQUMsU0FBUzs0QkFDYixLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7NEJBQ2pGLEtBQUssRUFBRTtnQ0FDTCxLQUFLLEVBQUUsV0FBVztnQ0FDbEIsS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSztnQ0FDdEUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTTtnQ0FDNUIsS0FBSyxFQUFFLENBQUMsVUFBVTtvQ0FDaEIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPO3dDQUNmLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLEVBQUU7d0NBQzdFLENBQUMsQ0FBQyxTQUFTO29DQUNiLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFO2dDQUNsRixLQUFLLEVBQ0gsQ0FBQyxVQUFVLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTztvQ0FDN0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO29DQUNoRyxDQUFDLENBQUMsU0FBUzs2QkFDaEI7NEJBQ0QsT0FBTyxFQUFFLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUzs0QkFDckUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTztnQ0FDNUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPO29DQUNmLENBQUMsQ0FBQzt3Q0FDRTs0Q0FDRSxLQUFLLEVBQUUsS0FBSzs0Q0FDWixJQUFJLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFROzRDQUM3QixLQUFLLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLOzRDQUM3QixHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7eUNBQ25GO3dDQUNELEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFO3dDQUNoRjs0Q0FDRSxLQUFLLEVBQUUsUUFBUTs0Q0FDZixLQUFLLEVBQUUsV0FBVzs0Q0FDbEIsSUFBSSxFQUFFLFNBQVM7eUNBQ2hCO3FDQUNGO29DQUNILENBQUMsQ0FBQzt3Q0FDRTs0Q0FDRSxLQUFLLEVBQUUsS0FBSzs0Q0FDWixJQUFJLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFROzRDQUM3QixLQUFLLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLOzRDQUM3QixHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7eUNBQ25GO3dDQUNELEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFO3FDQUNqRjtnQ0FDTCxDQUFDLENBQUMsU0FBUzt5QkFDZDtxQkFDRjtpQkFDRjtnQkFDRCxNQUFNLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRTthQUN2QixFQUNSLE9BQU8sQ0FBQyxjQUFjLENBQ3ZCLENBQUM7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO1FBRUYsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDM0MsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDZCxPQUFPO2dCQUNMLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRTtnQkFDbkUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsS0FBSyxFQUFFO2FBQ3BFLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUNILENBQUM7UUFFRixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDcEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUM1QyxJQUNFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJO2dCQUNuQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsRUFDckc7Z0JBQ0EsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7b0JBQ3JCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFNO29CQUMzQixLQUFLLEVBQUU7d0JBQ0wsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxLQUFNO3dCQUNsQyxJQUFJLEVBQUU7NEJBQ0osR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSTs0QkFDdEMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRTt5QkFDbEM7cUJBQ0Y7aUJBQ0YsQ0FBQyxDQUFDO2FBQ0o7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBRUYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQ3BCLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQy9FLENBQUMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUU7WUFDaEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYztpQkFDdEMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ1osSUFBSSxTQUFTLEdBQUcsT0FBTztxQkFDcEIsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztxQkFDM0YsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzFCLE9BQU87b0JBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO29CQUNqQixLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FDbEMsMEJBQTBCLElBQUksQ0FBQyxLQUFLLElBQ2xDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxJQUFJO3dCQUN6QyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRO3dCQUM3QixDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUN6QixFQUFFLENBQ0g7aUJBQ0YsQ0FBQztZQUNKLENBQUMsQ0FBQztpQkFDRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwRCxDQUFDLENBQ0YsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDcEIsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3pFLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDYixJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDO2dCQUN0QixxQ0FBcUM7Z0JBQ3JDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtvQkFDL0QsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsUUFBUSxFQUFFLFFBQVE7b0JBQ2xCLFlBQVksRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLGdDQUFnQyxDQUFRO29CQUMxRixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLG9DQUFvQyxDQUFRO29CQUNsRyxPQUFPLEVBQUU7d0JBQ1AsS0FBSyxFQUFFLFFBQVE7cUJBQ2hCO2lCQUNGLENBQUM7cUJBQ0MsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUMzQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUMvRDtpQkFBTTtnQkFDTCxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQzthQUM3QztRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7UUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxJQUFnQixFQUFFLElBQWE7UUFDakQsSUFBSSxPQUFPLEdBQUcsSUFBSSxNQUFNLENBQUMseUJBQXlCLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDekQsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxTQUFTLENBQUMsRUFBRTtZQUNuQyxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUM7U0FDekI7UUFFRCxRQUFRLElBQUksRUFBRTtZQUNaLEtBQUssU0FBUyxDQUFDLE9BQU8sQ0FBQztZQUN2QixLQUFLLFNBQVMsQ0FBQyxPQUFPLENBQUM7WUFDdkIsS0FBSyxTQUFTLENBQUMsSUFBSTtnQkFDakIsT0FBTyxRQUFRLENBQUMsWUFBWSxDQUFDO1lBQy9CLEtBQUssU0FBUyxDQUFDLE9BQU87Z0JBQ3BCLE9BQU8sUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUMzQixLQUFLLFNBQVMsQ0FBQyxPQUFPLENBQUM7WUFDdkIsS0FBSyxTQUFTLENBQUMsTUFBTTtnQkFDbkIsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQzFCO2dCQUNFLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQztTQUMzQjtJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsT0FBTyxDQUFDLElBQWU7UUFDNUIsUUFBUSxJQUFJLEVBQUU7WUFDWixLQUFLLFNBQVMsQ0FBQyxPQUFPLENBQUM7WUFDdkIsS0FBSyxTQUFTLENBQUMsSUFBSTtnQkFDakIsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUM1QixLQUFLLFNBQVMsQ0FBQyxPQUFPLENBQUM7WUFDdkIsS0FBSyxTQUFTLENBQUMsT0FBTyxDQUFDO1lBQ3ZCLEtBQUssU0FBUyxDQUFDLE9BQU8sQ0FBQztZQUN2QixLQUFLLFNBQVMsQ0FBQyxNQUFNLENBQUM7WUFDdEI7Z0JBQ0UsT0FBTyxFQUFFLENBQUM7U0FDYjtJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsUUFBZ0IsRUFBRSxJQUFXLEVBQUUsUUFBaUI7UUFDdEQsT0FBTyxJQUFJO1lBQ1QsQ0FBQyxDQUFDO2dCQUNFLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxFQUFFO2FBQ2pHO1lBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNULENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQztZQUN6QixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsUUFBUSxFQUFFO2dCQUNSLEdBQUcsSUFBSSxDQUFDLFFBQVE7Z0JBQ2hCLE9BQU8sRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsRUFBRTthQUM3QztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZO1FBQ1QsSUFBSSxDQUFDLEtBQXVCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxRQUFRO1FBQ0wsSUFBSSxDQUFDLFNBQTJCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFTyxRQUFRLENBQUMsT0FBcUM7UUFDcEQsT0FBTyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssSUFBSSxTQUFTLENBQUM7SUFDM0MsQ0FBQztJQUVELGNBQWM7UUFDWixPQUFPLFVBQVUsQ0FBQztZQUNoQixLQUFLLEVBQUU7Z0JBQ0wsYUFBYSxFQUFFO29CQUNiLG1CQUFtQjtvQkFDbkIsSUFBSSxFQUFFLG9CQUFvQjtvQkFDMUIsUUFBUSxFQUFFLEVBQUU7b0JBQ1osVUFBVSxFQUFFLEdBQUc7b0JBQ2YsSUFBSSxFQUFFLFNBQVM7aUJBQ2hCO2dCQUNELGFBQWEsRUFBRTtvQkFDYixhQUFhO29CQUNiLElBQUksRUFBRSxvQkFBb0I7b0JBQzFCLFFBQVEsRUFBRSxFQUFFO29CQUNaLFVBQVUsRUFBRSxHQUFHO29CQUNmLElBQUksRUFBRSxTQUFTO2lCQUNoQjtnQkFDRCxhQUFhLEVBQUU7b0JBQ2IsY0FBYztvQkFDZCxJQUFJLEVBQUUsb0JBQW9CO29CQUMxQixRQUFRLEVBQUUsRUFBRTtvQkFDWixVQUFVLEVBQUUsR0FBRztvQkFDZixJQUFJLEVBQUUsU0FBUztpQkFDaEI7Z0JBQ0QsZ0JBQWdCLEVBQUU7b0JBQ2hCLFdBQVc7b0JBQ1gsSUFBSSxFQUFFLG9CQUFvQjtvQkFDMUIsUUFBUSxFQUFFLEVBQUU7b0JBQ1osVUFBVSxFQUFFLEdBQUc7b0JBQ2YsSUFBSSxFQUFFLFNBQVM7aUJBQ2hCO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsTUFBYztRQUM3QixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFO1lBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO2dCQUNyQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSztnQkFDMUIsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTthQUM1RCxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsTUFBaUI7UUFDMUIsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRTtZQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztnQkFDckIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7Z0JBQzFCLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7YUFDM0QsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDMUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7b0JBQ3JCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO29CQUMxQixPQUFPLEVBQUUsU0FBUztvQkFDbEIsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLElBQUksU0FBUztpQkFDM0UsQ0FBQyxDQUFDO2FBQ0o7WUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDMUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUMxQjtTQUNGO0lBQ0gsQ0FBQztJQUVELGVBQWUsQ0FBQyxNQUFjO1FBQzVCLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7Z0JBQ3JCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO2dCQUMxQixLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFO2FBQ2hFLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELGVBQWUsQ0FBQyxNQUFpQjtRQUMvQixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFO1lBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO2dCQUNyQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSztnQkFDMUIsUUFBUSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRTthQUN0RSxDQUFDLENBQUM7WUFDSCxJQUFJLE1BQU0sS0FBSyxTQUFTLENBQUMsS0FBSyxJQUFJLE1BQU0sS0FBSyxTQUFTLENBQUMsUUFBUSxFQUFFO2dCQUMvRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztvQkFDckIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7b0JBQzFCLFFBQVEsRUFBRTt3QkFDUixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFFBQVE7d0JBQ3BDLEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLDhCQUE4QixHQUFHLE1BQU0sQ0FBQzt3QkFDN0UsU0FBUyxFQUFFLFNBQVM7cUJBQ3JCO2lCQUNGLENBQUMsQ0FBQzthQUNKO1lBQ0QsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUM5RDtJQUNILENBQUM7SUFFRCxjQUFjLENBQUMsTUFBYztRQUMzQixJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRTtZQUNyQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztnQkFDckIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7Z0JBQzFCLFFBQVEsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUU7YUFDdEUsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU87aUJBQ3RCLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztpQkFDaEMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztpQkFDbEMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO2dCQUNyQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSztnQkFDMUIsUUFBUSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksZ0JBQWdCLEVBQUU7YUFDMUYsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUUvRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDL0Q7SUFDSCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsTUFBYztRQUNoQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFO1lBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO2dCQUNyQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSztnQkFDMUIsUUFBUSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTthQUNsRSxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxjQUFjLENBQUMsTUFBVztRQUN4QixJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRTtZQUNyQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztnQkFDckIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7Z0JBQzFCLFFBQVEsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUU7YUFDdEUsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU87aUJBQ3RCLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztpQkFDaEMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztpQkFDbEMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO2dCQUNyQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSztnQkFDMUIsUUFBUSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksZ0JBQWdCLEVBQUU7YUFDMUYsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNoRjtJQUNILENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxNQUFXO1FBQzdCLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7Z0JBQ3JCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO2dCQUMxQixRQUFRLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO2FBQ2xFLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLE1BQVc7UUFDN0IsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRTtZQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztnQkFDckIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7Z0JBQzFCLFFBQVEsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7YUFDbEUsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsTUFBVztRQUM3QixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFO1lBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO2dCQUNyQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSztnQkFDMUIsUUFBUSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTthQUNsRSxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxhQUFhLENBQUMsTUFBVztRQUN2QixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFO1lBQzNCLElBQUksTUFBTSxFQUFFO2dCQUNWLElBQ0UsSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksS0FBSyxTQUFTLENBQUMsT0FBTztvQkFDbEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUs7b0JBQ3hDLElBQUksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUNoRDtvQkFDQSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQzt3QkFDckIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7d0JBQzFCLFFBQVEsRUFBRTs0QkFDUixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFFBQVE7NEJBQ3BDLEtBQUssRUFBRTtnQ0FDTCxFQUFFLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksQ0FBQztnQ0FDckQsTUFBTSxFQUFFLEtBQUs7Z0NBQ2IsS0FBSyxFQUFFLEtBQUs7Z0NBQ1osV0FBVyxFQUFFLEtBQUs7NkJBQ25CO3lCQUNGO3FCQUNGLENBQUMsQ0FBQztpQkFDSjtxQkFBTTtvQkFDTCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQzt3QkFDckIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7d0JBQzFCLFFBQVEsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxFQUFFO3FCQUNyRyxDQUFDLENBQUM7aUJBQ0o7YUFDRjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztvQkFDckIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7b0JBQzFCLFFBQVEsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7aUJBQ3JFLENBQUMsQ0FBQzthQUNKO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQVc7UUFDckIsSUFDRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7WUFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUs7WUFDdEMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFDbkQ7WUFDQSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztnQkFDckIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7Z0JBQzFCLFFBQVEsRUFBRTtvQkFDUixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFFBQVE7b0JBQ3BDLEtBQUssRUFBRTt3QkFDTCxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLO3dCQUMxQyxFQUFFLEVBQUUsTUFBTTtxQkFDWDtpQkFDRjthQUNGLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELGlCQUFpQixDQUFDLE1BQVc7UUFDM0IsSUFDRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7WUFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUs7WUFDdEMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFDbkQ7WUFDQSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztnQkFDckIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7Z0JBQzFCLFFBQVEsRUFBRTtvQkFDUixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFFBQVE7b0JBQ3BDLEtBQUssRUFBRTt3QkFDTCxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLO3dCQUMxQyxNQUFNLEVBQUUsTUFBTTtxQkFDZjtpQkFDRjthQUNGLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLE1BQVc7UUFDMUIsSUFDRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7WUFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUs7WUFDdEMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFDbkQ7WUFDQSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztnQkFDckIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7Z0JBQzFCLFFBQVEsRUFBRTtvQkFDUixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFFBQVE7b0JBQ3BDLEtBQUssRUFBRTt3QkFDTCxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLO3dCQUMxQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU07cUJBQy9CO2lCQUNGO2FBQ0YsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLE1BQVc7UUFDekIsSUFDRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7WUFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUs7WUFDdEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQ2xEO1lBQ0EsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7Z0JBQ3JCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO2dCQUMxQixRQUFRLEVBQUU7b0JBQ1IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxRQUFRO29CQUNuQyxLQUFLLEVBQUU7d0JBQ0wsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSzt3QkFDekMsUUFBUSxFQUFFLE1BQU07cUJBQ2pCO2lCQUNGO2FBQ0YsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQVc7UUFDdEIsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRTtZQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztnQkFDckIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7Z0JBQzFCLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUU7YUFDNUQsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQVc7UUFDdkIsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRTtZQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztnQkFDckIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7Z0JBQzFCLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7YUFDOUQsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQVc7UUFDdkIsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRTtZQUMzQixJQUFJLE1BQU0sRUFBRTtnQkFDVixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztvQkFDckIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7b0JBQzFCLE9BQU8sRUFBRTt3QkFDUCxTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLFNBQVMsSUFBSSxFQUFFO3dCQUM1RCxLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRTtxQkFDN0M7aUJBQ0YsQ0FBQyxDQUFDO2FBQ0o7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7b0JBQ3JCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO29CQUMxQixPQUFPLEVBQUUsU0FBUztpQkFDbkIsQ0FBQyxDQUFDO2FBQ0o7U0FDRjtJQUNILENBQUM7SUFFRCxhQUFhLENBQUMsTUFBVztRQUN2QixJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFDNUYsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7Z0JBQ3JCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO2dCQUMxQixPQUFPLEVBQUU7b0JBQ1AsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxPQUFPO29CQUNuQyxTQUFTLEVBQUUsTUFBTTtpQkFDbEI7YUFDRixDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxNQUFXO1FBQzNCLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFO1lBQzlELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO2dCQUNyQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSztnQkFDMUIsT0FBTyxFQUFFO29CQUNQLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsU0FBUztvQkFDckQsS0FBSyxFQUFFLE1BQU07aUJBQ2Q7YUFDRixDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsSUFBUztRQUNwQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQ3ZELENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDL0QsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNULENBQUM7SUFFRCxhQUFhLENBQUMsTUFBVztRQUN2QixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFO1lBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO2dCQUNyQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSztnQkFDMUIsS0FBSyxFQUFFO29CQUNMLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsS0FBSztvQkFDakMsT0FBTyxFQUFFLE1BQU07aUJBQ2hCO2FBQ0YsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsVUFBVSxDQUFDLE1BQVc7UUFDcEIsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRTtZQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztnQkFDckIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7Z0JBQzFCLEtBQUssRUFBRTtvQkFDTCxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEtBQUs7b0JBQ2hDLElBQUksRUFBRSxNQUFNO3dCQUNWLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJOzRCQUNwQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVM7NEJBQ3JELFNBQVMsRUFBRSxLQUFLO3lCQUNqQjt3QkFDSCxDQUFDLENBQUMsU0FBUztpQkFDZDthQUNGLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLE1BQVc7UUFDN0IsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRTtZQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztnQkFDckIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7Z0JBQzFCLEtBQUssRUFBRTtvQkFDTCxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEtBQUs7b0JBQ2hDLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFO2lCQUNwRTthQUNGLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLE1BQVc7UUFDN0IsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRTtZQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztnQkFDckIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7Z0JBQzFCLEtBQUssRUFBRTtvQkFDTCxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEtBQUs7b0JBQ2pDLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFO2lCQUNyRTthQUNGLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVRLE9BQU87UUFDZCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUN4RixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxNQUFXO1FBQ2pDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7Z0JBQ3JCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO2dCQUMxQixpQkFBaUIsRUFBRSxNQUFNO2FBQzFCLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELGVBQWUsQ0FBQyxNQUFXO1FBQ3pCLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7Z0JBQ3JCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO2dCQUMxQixTQUFTLEVBQUUsTUFBTTthQUNsQixDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7OEdBMytCVSw4QkFBOEI7a0dBQTlCLDhCQUE4Qix3TENuRDNDLHcrZUE4V0E7OzJGRDNUYSw4QkFBOEI7a0JBSjFDLFNBQVM7K0JBQ0UsNkJBQTZCO3FOQUlwQixJQUFJO3NCQUF0QixTQUFTO3VCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQge1xuICBBdHRyaWJ1dGUsXG4gIENoYXJ0QWdncmVnYXRlZFdpZGdldE9wdGlvbnMsXG4gIENsYXNzLFxuICBDbGFzc1NlbGVjdG9ycyxcbiAgRGF0YXNldCxcbiAgRGF0YVdpZGdldENvbXBvbmVudCxcbiAgRmllbGQsXG4gIEZpZWxkU2VsZWN0b3JzLFxuICBGaWVsZFR5cGUsXG4gIEdyYXBoVHlwZSxcbiAgTW9ub0NsYXNzU2VhcmNoUGF5bG9hZCxcbiAgTXVsdGlDbGFzc1NlYXJjaFBheWxvYWQsXG4gIE5hbWVkUXVlcnksXG4gIE5hbWVkUXVlcnlUeXBlcyxcbiAgT3BlcmF0aW9uLFxuICBQcnlBZ2dyZWdhdGlvblNlcnZpY2UsXG4gIFByeUkxOG5TZXJ2aWNlLFxuICBTZWFyY2hBY3Rpb25zLFxuICBTb3J0LFxuICBWYWx1ZVR5cGUsXG4gIFZlZ2FUeXBlLFxuICBXSURHRVRfSEVBREVSX0hFSUdIVFxufSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBkZWJvdW5jZVRpbWUsXG4gIGZpbHRlcixcbiAgZnJvbUV2ZW50LFxuICBtYXAsXG4gIE9ic2VydmFibGUsXG4gIHNoYXJlLFxuICBzdGFydFdpdGgsXG4gIFN1YmplY3QsXG4gIHN3aXRjaE1hcCxcbiAgdGFwLFxuICB3aXRoTGF0ZXN0RnJvbVxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFZpZXcgfSBmcm9tICd2ZWdhJztcbmltcG9ydCBlbWJlZCwgeyB2ZWdhIH0gZnJvbSAndmVnYS1lbWJlZCc7XG5pbXBvcnQgeyBtZXJnZURlZXAsIFRvcExldmVsU3BlYyB9IGZyb20gJ3ZlZ2EtbGl0ZSc7XG5pbXBvcnQgeyBpbml0Q29uZmlnIH0gZnJvbSAndmVnYS1saXRlL2J1aWxkL3NyYy9jb25maWcnO1xuaW1wb3J0IHsgUHJ5U2NoZW1lU2VydmljZSB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZC9jb21wb25lbnRzL3NjaGVtZS1waWNrZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktd2lkZ2V0LWFnZ3JlZ2F0ZWQtY2hhcnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vd2lkZ2V0LWFnZ3JlZ2F0ZWQtY2hhcnQuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFdpZGdldEFnZ3JlZ2F0ZWRDaGFydENvbXBvbmVudCBleHRlbmRzIERhdGFXaWRnZXRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZCgndmVnYScpIHZlZ2EhOiBFbGVtZW50UmVmO1xuICBvcHRpb25zJDogT2JzZXJ2YWJsZTxDaGFydEFnZ3JlZ2F0ZWRXaWRnZXRPcHRpb25zPjtcbiAgb3B0aW9uc0NvcHkkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDaGFydEFnZ3JlZ2F0ZWRXaWRnZXRPcHRpb25zIHwgbnVsbD4obnVsbCk7XG4gIHZpZXc/OiBWaWV3O1xuICB0cmlnZ2VyJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHZlZ2FMaXRlU3BlYyQ6IE9ic2VydmFibGU8VG9wTGV2ZWxTcGVjPjtcbiAgZmllbGRzJDogT2JzZXJ2YWJsZTxGaWVsZFtdPjtcbiAgY2xhc3NlcyQ6IE9ic2VydmFibGU8Q2xhc3NbXT47XG4gIGF0dHJpYnV0ZVR5cGVzJDogT2JzZXJ2YWJsZTx7XG4gICAgb3JkaW5hdGU6IHsgdmVnYVR5cGU6IFZlZ2FUeXBlOyBmaWVsZFR5cGU6IGFueTsgbmFtZTogc3RyaW5nIH07XG4gICAgYWJzY2lzc2E6IHsgdmVnYVR5cGU6IFZlZ2FUeXBlOyBmaWVsZFR5cGU6IGFueTsgbmFtZTogc3RyaW5nIH07XG4gICAgZ3JvdXBCeTogeyB2ZWdhVHlwZT86IFZlZ2FUeXBlOyBmaWVsZFR5cGU/OiBhbnk7IG5hbWU6IHN0cmluZyB9O1xuICB9PjtcbiAgYWdncmVnYXRlZFZhbHVlcyQ6IE9ic2VydmFibGU8eyBkYXRhOiBhbnk7IG9wZXJhdGlvbjogYW55IH0+O1xuICBXSURHRVRfSEVBREVSX0hFSUdIVCA9IFdJREdFVF9IRUFERVJfSEVJR0hUO1xuICBHcmFwaFR5cGUgPSBHcmFwaFR5cGU7XG4gIE9wZXJhdGlvbiA9IE9wZXJhdGlvbjtcbiAgaXNDaGFydFZhbGlkJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgdHlwZU9wdGlvbnM6IHsgaWQ6IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9W10gPSBbXTtcbiAgb3BlcmF0aW9ucyQ6IE9ic2VydmFibGU8eyBpZDogc3RyaW5nOyBsYWJlbDogc3RyaW5nIH1bXT47XG4gIGFic2Npc3NhQXR0cmlidXRlcyQ6IE9ic2VydmFibGU8QXR0cmlidXRlW10+O1xuICBjbGFzc2VzOiBDbGFzc1tdID0gW107XG4gIGZpZWxkczogRmllbGRbXSA9IFtdO1xuICBvcmRpbmF0ZUF0dHJpYnV0ZXMkOiBPYnNlcnZhYmxlPEF0dHJpYnV0ZVtdPjtcbiAgdHJpZ2dlck9yZGluYXRlQXR0cmlidXRlcyQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBjb3B5QWJzY2lzc2FGaWVsZD86IEZpZWxkO1xuICBjb3B5T3JkaW5hdGVGaWVsZD86IEZpZWxkO1xuICBub0RhdGEkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBzb3J0QWN0aXZlPyA9ICduYW1lJztcbiAgc29ydERpcmVjdGlvbj8gPSAnYXNjJztcbiAgc29ydEF0dHJpYnV0ZXMkOiBPYnNlcnZhYmxlPHsgaWQ/OiBzdHJpbmc7IGxhYmVsPzogc3RyaW5nIH1bXT47XG4gIHNvcnREaXJlY3Rpb25zID0gW1xuICAgIHsgdmFsdWU6ICdhc2MnLCBsYWJlbDogJycgfSxcbiAgICB7IHZhbHVlOiAnZGVzYycsIGxhYmVsOiAnJyB9XG4gIF07XG4gIG5vQWdncmVnYXRpb25EYXRhJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgYWxsb3dlZENsYXNzZXMkOiBPYnNlcnZhYmxlPENsYXNzW10+O1xuICBjb2xvcnMgPSB2ZWdhLnNjaGVtZSgnUHJvdm9seScpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHN0b3JlOiBTdG9yZTxhbnk+LFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogUHJ5STE4blNlcnZpY2UsXG4gICAgZWw6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBhZ2dyZWdhdGlvblNlcnZpY2U6IFByeUFnZ3JlZ2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHNjaGVtZVNlcnZpY2U6IFByeVNjaGVtZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoc3RvcmUsIGVsKTtcbiAgICB0aGlzLnR5cGVPcHRpb25zID0gT2JqZWN0LnZhbHVlcyhHcmFwaFR5cGUpXG4gICAgICAubWFwKCh2KSA9PiAoe1xuICAgICAgICBpZDogdixcbiAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdAcHJ5LndpZGdldC5jaGFydC5ncmFwaFR5cGUuJyArIHYpXG4gICAgICB9KSlcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmxhYmVsLmxvY2FsZUNvbXBhcmUoYi5sYWJlbCkpO1xuXG4gICAgdGhpcy5vcHRpb25zJCA9IHRoaXMubWFuaWZlc3QkLnBpcGUoXG4gICAgICBtYXAoXG4gICAgICAgIChtYW5pZmVzdCkgPT5cbiAgICAgICAgICBtZXJnZURlZXAoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGdyYXBoOiB7IHR5cGU6IEdyYXBoVHlwZS5CQVIsIHRvb2x0aXA6IHRydWUsIGxlZ2VuZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgYWJzY2lzc2E6IHsga2VlcDA6IHRydWUgfSxcbiAgICAgICAgICAgICAgb3JkaW5hdGU6IHsga2VlcDA6IHRydWUgfVxuICAgICAgICAgICAgfSBhcyBDaGFydEFnZ3JlZ2F0ZWRXaWRnZXRPcHRpb25zLFxuICAgICAgICAgICAgKG1hbmlmZXN0Lm9wdGlvbnMgPz8ge30pIGFzIENoYXJ0QWdncmVnYXRlZFdpZGdldE9wdGlvbnNcbiAgICAgICAgICApIGFzIENoYXJ0QWdncmVnYXRlZFdpZGdldE9wdGlvbnNcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMub3B0aW9ucyQucGlwZShmaWx0ZXIoKG9wdCkgPT4gISFvcHQpKS5zdWJzY3JpYmUoKG9wdGlvbnMpID0+IHtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvcHRpb25zKSkpO1xuICAgIH0pO1xuICAgIHRoaXMuZmllbGRzJCA9IHRoaXMuc3RvcmUuc2VsZWN0KEZpZWxkU2VsZWN0b3JzLmZpZWxkcyk7XG4gICAgdGhpcy5jbGFzc2VzJCA9IHRoaXMuc3RvcmUuc2VsZWN0KENsYXNzU2VsZWN0b3JzLmNsYXNzZXMpO1xuXG4gICAgdGhpcy5vcGVyYXRpb25zJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMucmVzdWx0U2V0JCwgdGhpcy5jbGFzc2VzJCwgdGhpcy5maWVsZHMkXSkucGlwZShcbiAgICAgIG1hcCgoW3JzLCBjbGFzc2VzLCBmaWVsZHNdKSA9PlxuICAgICAgICBjbGFzc2VzXG4gICAgICAgICAgLmZpbHRlcigoY2xhenopID0+IE9iamVjdC5rZXlzKHJzLml0ZW1zKS5pbmNsdWRlcyhjbGF6ei5pZCkpXG4gICAgICAgICAgLm1hcCgoY2xhenopID0+IGNsYXp6LmF0dHJpYnV0ZXMpXG4gICAgICAgICAgLm1hcCgoYXR0cnMpID0+XG4gICAgICAgICAgICBhdHRycy5maWx0ZXIoKGF0dHIpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZmllbGQgPSBmaWVsZHMuZmluZCgoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmllbGQuaWQgPT09IGF0dHIuZmllbGQ7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICByZXR1cm4gISFmaWVsZCAmJiBbRmllbGRUeXBlLklOVEVHRVIsIEZpZWxkVHlwZS5ERUNJTUFMLCBGaWVsZFR5cGUuTE9OR10uaW5jbHVkZXMoZmllbGQudHlwZSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgICAucmVkdWNlKChhLCBiKSA9PiBbLi4uYSwgLi4uYl0sIFtdKVxuICAgICAgICAgIC5maWx0ZXIoKGF0dHIpID0+ICEhYXR0cilcbiAgICAgICksXG4gICAgICBtYXAoKGF0dHJpYnV0ZXMpID0+XG4gICAgICAgIChhdHRyaWJ1dGVzLmxlbmd0aCA+IDBcbiAgICAgICAgICA/IE9iamVjdC52YWx1ZXMoT3BlcmF0aW9uKS5maWx0ZXIoKG9wZXJhdGlvbikgPT4gb3BlcmF0aW9uICE9PSBPcGVyYXRpb24uRVhURU5UKVxuICAgICAgICAgIDogW09wZXJhdGlvbi5DT1VOVCwgT3BlcmF0aW9uLkRJU1RJTkNULCBPcGVyYXRpb24uTk9ORV1cbiAgICAgICAgKVxuICAgICAgICAgIC5tYXAoKHYpID0+ICh7XG4gICAgICAgICAgICBpZDogdixcbiAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQHByeS53aWRnZXQuY2hhcnQub3BlcmF0aW9uLicgKyB2KVxuICAgICAgICAgIH0pKVxuICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmxhYmVsLmxvY2FsZUNvbXBhcmUoYi5sYWJlbCkpXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQodGhpcy5maWVsZHMkLnN1YnNjcmliZSgoZmllbGRzKSA9PiAodGhpcy5maWVsZHMgPSBmaWVsZHMpKSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLmNsYXNzZXMkLnN1YnNjcmliZSgoY2xhc3NlcykgPT4gKHRoaXMuY2xhc3NlcyA9IGNsYXNzZXMpKSk7XG5cbiAgICB0aGlzLmFsbG93ZWRDbGFzc2VzJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuY2xhc3NlcyQsIHRoaXMudXNlZERhdGFzb3VyY2VzJF0pLnBpcGUoXG4gICAgICBtYXAoKFtjbGFzc2VzLCBkYXRhc291cmNlc10pID0+IHtcbiAgICAgICAgY29uc3QgaGFzRnVsbFRleHQgPSBkYXRhc291cmNlc1xuICAgICAgICAgIC5tYXAoKGRzKSA9PiBkcy5zb3VyY2VUeXBlID09PSAnbmFtZWRRdWVyeScgJiYgZHMucmVxdWVzdC50eXBlID09PSBOYW1lZFF1ZXJ5VHlwZXMuTVVMVElfQ0xBU1MpXG4gICAgICAgICAgLnJlZHVjZSgocCwgYykgPT4gcCB8fCBjLCBmYWxzZSk7XG5cbiAgICAgICAgY29uc3QgbXVsdGlDbGFzc0RhdGFzb3VyY2VzQ2xhc3NlcyA9IGRhdGFzb3VyY2VzXG4gICAgICAgICAgLmZpbHRlcigoZHMpID0+IGRzLnNvdXJjZVR5cGUgPT09ICduYW1lZFF1ZXJ5JyAmJiBkcy5yZXF1ZXN0LnR5cGUgPT09IE5hbWVkUXVlcnlUeXBlcy5NVUxUSV9DTEFTUylcbiAgICAgICAgICAubWFwKChtdWx0aURzKSA9PiAobXVsdGlEcyBhcyBOYW1lZFF1ZXJ5KS5yZXF1ZXN0IGFzIE11bHRpQ2xhc3NTZWFyY2hQYXlsb2FkKVxuICAgICAgICAgIC5tYXAoKHBheWxvYWQpID0+IHBheWxvYWQub0NsYXNzZXMpO1xuXG4gICAgICAgIGNvbnN0IGhhc011bHRpTm9DbGFzcyA9IG11bHRpQ2xhc3NEYXRhc291cmNlc0NsYXNzZXMuaW5jbHVkZXModW5kZWZpbmVkKTtcblxuICAgICAgICBjb25zdCBtdWx0aUNsYXNzZXMgPSAoXG4gICAgICAgICAgbXVsdGlDbGFzc0RhdGFzb3VyY2VzQ2xhc3Nlcy5maWx0ZXIoKGNsYXNzZXMpID0+ICEhY2xhc3NlcykgYXMgdW5rbm93biBhcyBzdHJpbmdbXVxuICAgICAgICApLnJlZHVjZSgocCwgYykgPT4gWy4uLnAsIC4uLmNdLCBbXSBhcyBzdHJpbmdbXSk7XG5cbiAgICAgICAgY29uc3Qgc2luZ2xlQ2xhc3NlcyA9IGRhdGFzb3VyY2VzXG4gICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgIChkcykgPT5cbiAgICAgICAgICAgICAgKGRzLnNvdXJjZVR5cGUgPT09ICduYW1lZFF1ZXJ5JyAmJiBkcy5yZXF1ZXN0LnR5cGUgPT09IE5hbWVkUXVlcnlUeXBlcy5NT05PX0NMQVNTKSB8fFxuICAgICAgICAgICAgICBkcy5zb3VyY2VUeXBlID09PSAnZGF0YXNldCdcbiAgICAgICAgICApXG4gICAgICAgICAgLm1hcChcbiAgICAgICAgICAgIChzaW5nbGVEcykgPT5cbiAgICAgICAgICAgICAgKHNpbmdsZURzIGFzIERhdGFzZXQpLm9DbGFzcyA/PyAoKHNpbmdsZURzIGFzIE5hbWVkUXVlcnkpLnJlcXVlc3QgYXMgTW9ub0NsYXNzU2VhcmNoUGF5bG9hZCkub0NsYXNzXG4gICAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gY2xhc3Nlcy5maWx0ZXIoXG4gICAgICAgICAgKGNsYXp6KSA9PlxuICAgICAgICAgICAgaGFzRnVsbFRleHQgfHwgaGFzTXVsdGlOb0NsYXNzIHx8IG11bHRpQ2xhc3Nlcy5pbmNsdWRlcyhjbGF6ei5pZCkgfHwgc2luZ2xlQ2xhc3Nlcy5pbmNsdWRlcyhjbGF6ei5pZClcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuYWJzY2lzc2FBdHRyaWJ1dGVzJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuZmllbGRzJCwgdGhpcy5hbGxvd2VkQ2xhc3NlcyQsIHRoaXMub3B0aW9uc0NvcHkkXSkucGlwZShcbiAgICAgIG1hcCgoW2ZpZWxkcywgYWxsb3dlZENsYXNzZXMsIG9wdGlvbkNvcHldKSA9PlxuICAgICAgICBhbGxvd2VkQ2xhc3Nlc1xuICAgICAgICAgIC5tYXAoKGNsYXp6KSA9PiBjbGF6ei5hdHRyaWJ1dGVzKVxuICAgICAgICAgIC5tYXAoKGF0dHJzKSA9PlxuICAgICAgICAgICAgYXR0cnMuZmlsdGVyKChhdHRyKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gZmllbGRzLmZpbmQoKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpZWxkLmlkID09PSBhdHRyLmZpZWxkO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAhIWZpZWxkICYmXG4gICAgICAgICAgICAgICAgZmllbGQudHlwZSAhPT0gRmllbGRUeXBlLlJBVyAmJlxuICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgIT09IEZpZWxkVHlwZS5TVFJJTkcgJiZcbiAgICAgICAgICAgICAgICAob3B0aW9uQ29weT8uZ3JhcGgudHlwZSAhPT0gR3JhcGhUeXBlLkhJU1RPR1JBTSB8fCBmaWVsZC50eXBlICE9PSBGaWVsZFR5cGUuS0VZV09SRClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICAgIC5yZWR1Y2UoKGEsIGIpID0+IFsuLi5hLCAuLi5iXSwgW10pXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMub3JkaW5hdGVBdHRyaWJ1dGVzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5maWVsZHMkLFxuICAgICAgdGhpcy5hbGxvd2VkQ2xhc3NlcyQsXG4gICAgICB0aGlzLnRyaWdnZXJPcmRpbmF0ZUF0dHJpYnV0ZXMkXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW2ZpZWxkcywgYWxsb3dlZENsYXNzZXNdKSA9PlxuICAgICAgICBhbGxvd2VkQ2xhc3Nlc1xuICAgICAgICAgIC5tYXAoKGNsYXp6KSA9PiBjbGF6ei5hdHRyaWJ1dGVzKVxuICAgICAgICAgIC5tYXAoKGF0dHJzKSA9PlxuICAgICAgICAgICAgYXR0cnMuZmlsdGVyKChhdHRyKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gZmllbGRzLmZpbmQoKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpZWxkLmlkID09PSBhdHRyLmZpZWxkO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlICYmXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgT3BlcmF0aW9uLk1BWCxcbiAgICAgICAgICAgICAgICAgIE9wZXJhdGlvbi5NSU4sXG4gICAgICAgICAgICAgICAgICBPcGVyYXRpb24uU1VNLFxuICAgICAgICAgICAgICAgICAgT3BlcmF0aW9uLlExLFxuICAgICAgICAgICAgICAgICAgT3BlcmF0aW9uLlEzLFxuICAgICAgICAgICAgICAgICAgT3BlcmF0aW9uLkFWRVJBR0UsXG4gICAgICAgICAgICAgICAgICBPcGVyYXRpb24uTUVESUFOLFxuICAgICAgICAgICAgICAgICAgT3BlcmF0aW9uLk5PTkVcbiAgICAgICAgICAgICAgICBdLmluY2x1ZGVzKHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLm9yZGluYXRlLm9wZXJhdGlvbilcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICEhZmllbGQgJiZcbiAgICAgICAgICAgICAgICAgIFtGaWVsZFR5cGUuSU5URUdFUiwgRmllbGRUeXBlLklOU1RBTlQsIEZpZWxkVHlwZS5MT05HLCBGaWVsZFR5cGUuREVDSU1BTF0uaW5jbHVkZXMoZmllbGQudHlwZSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiAhIWZpZWxkICYmIGZpZWxkLnR5cGUgIT09IEZpZWxkVHlwZS5SQVcgJiYgZmllbGQudHlwZSAhPT0gRmllbGRUeXBlLlNUUklORztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICAgIC5yZWR1Y2UoKGEsIGIpID0+IFsuLi5hLCAuLi5iXSwgW10pXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMuaXNDaGFydFZhbGlkJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMub3B0aW9ucyQsIHRoaXMuYWJzY2lzc2FBdHRyaWJ1dGVzJCwgdGhpcy5vcmRpbmF0ZUF0dHJpYnV0ZXMkXSkucGlwZShcbiAgICAgIG1hcCgoW29wdGlvbnMsIGFic2Npc3NhQXR0cnMsIG9yZGluYXRlQXR0cnNdKSA9PiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgISFvcHRpb25zLmFic2Npc3NhLmF0dHJpYnV0ZSAmJlxuICAgICAgICAgIGFic2Npc3NhQXR0cnMubWFwKChhdHRyKSA9PiBhdHRyLmlkKS5pbmNsdWRlcyhvcHRpb25zLmFic2Npc3NhLmF0dHJpYnV0ZSkgJiZcbiAgICAgICAgICAob3B0aW9ucy5vcmRpbmF0ZS5hdHRyaWJ1dGVcbiAgICAgICAgICAgID8gb3JkaW5hdGVBdHRycy5tYXAoKGF0dHIpID0+IGF0dHIuaWQpLmluY2x1ZGVzKG9wdGlvbnMub3JkaW5hdGUuYXR0cmlidXRlKVxuICAgICAgICAgICAgOiB0cnVlKVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5hdHRyaWJ1dGVUeXBlcyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLm9wdGlvbnNDb3B5JCwgdGhpcy5maWVsZHMkLCB0aGlzLmNsYXNzZXMkXSkucGlwZShcbiAgICAgIGZpbHRlcigoW29wdGlvbnMsIGZpZWxkcywgY2xhc3Nlc10pID0+ICEhb3B0aW9ucyAmJiAhIW9wdGlvbnMuYWJzY2lzc2EgJiYgISFvcHRpb25zLm9yZGluYXRlKSxcbiAgICAgIG1hcCgoW29wdGlvbnMsIGZpZWxkcywgY2xhc3Nlc10pID0+IHtcbiAgICAgICAgY29uc3QgYWJzY2lzc2EgPSBjbGFzc2VzXG4gICAgICAgICAgLm1hcCgoY2xhenopID0+IGNsYXp6LmF0dHJpYnV0ZXMuZmluZCgoYXR0cikgPT4gYXR0ci5pZCA9PT0gb3B0aW9ucyEuYWJzY2lzc2EuYXR0cmlidXRlKSlcbiAgICAgICAgICAuZmluZCgoYXR0cikgPT4gISFhdHRyKTtcbiAgICAgICAgY29uc3Qgb3JkaW5hdGUgPSBjbGFzc2VzXG4gICAgICAgICAgLm1hcCgoY2xhenopID0+IGNsYXp6LmF0dHJpYnV0ZXMuZmluZCgoYXR0cikgPT4gYXR0ci5pZCA9PT0gb3B0aW9ucyEub3JkaW5hdGUuYXR0cmlidXRlKSlcbiAgICAgICAgICAuZmluZCgoYXR0cikgPT4gISFhdHRyKTtcbiAgICAgICAgY29uc3QgZ3JvdXBCeSA9IGNsYXNzZXNcbiAgICAgICAgICAubWFwKChjbGF6eikgPT4gY2xhenouYXR0cmlidXRlcy5maW5kKChhdHRyKSA9PiBhdHRyLmlkID09PSBvcHRpb25zPy5ncm91cEJ5Py5hdHRyaWJ1dGUpKVxuICAgICAgICAgIC5maW5kKChhdHRyKSA9PiAhIWF0dHIpO1xuICAgICAgICBjb25zdCBhYnNjaXNzYUZpZWxkVHlwZSA9IGZpZWxkcy5maW5kKChmaWVsZCkgPT4gZmllbGQuaWQgPT09IGFic2Npc3NhPy5maWVsZCk/LnR5cGUgPz8gRmllbGRUeXBlLlNUUklORztcbiAgICAgICAgY29uc3Qgb3JkaW5hdGVGaWVsZFR5cGUgPSBmaWVsZHMuZmluZCgoZmllbGQpID0+IGZpZWxkLmlkID09PSBvcmRpbmF0ZT8uZmllbGQpPy50eXBlID8/IEZpZWxkVHlwZS5TVFJJTkc7XG4gICAgICAgIGNvbnN0IGdyb3VwQnlGaWVsZFR5cGUgPSBmaWVsZHMuZmluZCgoZmllbGQpID0+IGZpZWxkLmlkID09PSBncm91cEJ5Py5maWVsZCk/LnR5cGUgPz8gRmllbGRUeXBlLlNUUklORztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBhYnNjaXNzYToge1xuICAgICAgICAgICAgZmllbGRUeXBlOiBhYnNjaXNzYUZpZWxkVHlwZSxcbiAgICAgICAgICAgIHZlZ2FUeXBlOiB0aGlzLnRyYW5zbGF0ZVRvVmVnYVR5cGUoYWJzY2lzc2FGaWVsZFR5cGUsIGFic2Npc3NhPy5uYW1lID8/ICcnKSxcbiAgICAgICAgICAgIG5hbWU6IGFic2Npc3NhPy5uYW1lID8/ICcnXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvcmRpbmF0ZToge1xuICAgICAgICAgICAgZmllbGRUeXBlOiBvcmRpbmF0ZUZpZWxkVHlwZSxcbiAgICAgICAgICAgIHZlZ2FUeXBlOlxuICAgICAgICAgICAgICBvcHRpb25zIS5vcmRpbmF0ZS5vcGVyYXRpb24gPT09IE9wZXJhdGlvbi5DT1VOVCB8fCBvcHRpb25zIS5vcmRpbmF0ZS5vcGVyYXRpb24gPT09IE9wZXJhdGlvbi5ESVNUSU5DVFxuICAgICAgICAgICAgICAgID8gVmVnYVR5cGUuUVVBTlRJVEFUSVZFXG4gICAgICAgICAgICAgICAgOiB0aGlzLnRyYW5zbGF0ZVRvVmVnYVR5cGUob3JkaW5hdGVGaWVsZFR5cGUsIG9yZGluYXRlPy5uYW1lID8/ICcnKSxcbiAgICAgICAgICAgIG5hbWU6IG9yZGluYXRlPy5uYW1lID8/ICcnXG4gICAgICAgICAgfSxcbiAgICAgICAgICBncm91cEJ5OiB7XG4gICAgICAgICAgICBmaWVsZFR5cGU6IGdyb3VwQnlGaWVsZFR5cGUsXG4gICAgICAgICAgICB2ZWdhVHlwZTogdGhpcy50cmFuc2xhdGVUb1ZlZ2FUeXBlKGdyb3VwQnlGaWVsZFR5cGUsIGdyb3VwQnk/Lm5hbWUpLFxuICAgICAgICAgICAgbmFtZTogZ3JvdXBCeT8ubmFtZSA/PyAnJ1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuYWdncmVnYXRlZFZhbHVlcyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuZGF0YXNvdXJjZUlkcyQsXG4gICAgICB0aGlzLm9wdGlvbnMkLFxuICAgICAgY29tYmluZUxhdGVzdChbZnJvbUV2ZW50KHdpbmRvdywgJ2RhdGFzb3VyY2VSZWZyZXNoJyksIHRoaXMuZGF0YXNvdXJjZUlkcyRdKS5waXBlKFxuICAgICAgICBmaWx0ZXIoKFtldmVudCwgZGF0YXNvdXJjZXNdKSA9PlxuICAgICAgICAgIGRhdGFzb3VyY2VzLmluY2x1ZGVzKChldmVudCBhcyBDdXN0b21FdmVudCkuZGV0YWlsLnJlcGxhY2UoLyRhZ2dyZWdhdGUhLywgJycpKVxuICAgICAgICApLFxuICAgICAgICBzdGFydFdpdGgodW5kZWZpbmVkKVxuICAgICAgKVxuICAgIF0pLnBpcGUoXG4gICAgICBkZWJvdW5jZVRpbWUoMTAwKSxcbiAgICAgIHRhcCgoW2RhdGFzb3VyY2VzXSkgPT4gdGhpcy5zdG9yZS5kaXNwYXRjaChTZWFyY2hBY3Rpb25zLnNldFNlYXJjaExvYWRpbmcoeyBkYXRhc291cmNlcywgc3RhcnQ6IHRydWUgfSkpKSxcbiAgICAgIHN3aXRjaE1hcCgoW2RhdGFzb3VyY2VzLCBvcHRpb25zXSkgPT5cbiAgICAgICAgdGhpcy5hZ2dyZWdhdGlvblNlcnZpY2VcbiAgICAgICAgICAuYWdncmVnYXRlKGRhdGFzb3VyY2VzLCBvcHRpb25zKVxuICAgICAgICAgIC5waXBlKHRhcCgoKSA9PiB0aGlzLnN0b3JlLmRpc3BhdGNoKFNlYXJjaEFjdGlvbnMuc2V0U2VhcmNoTG9hZGluZyh7IGRhdGFzb3VyY2VzLCBzdGFydDogZmFsc2UgfSkpKSlcbiAgICAgICksXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLm9wdGlvbnMkKSxcbiAgICAgIG1hcCgoW2FnZ3JlZ2F0ZSwgb3B0aW9uc10pID0+IHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBpZiAoYWdncmVnYXRlLnZhbHVlcy5sZW5ndGggPiAwICYmICFhZ2dyZWdhdGUudmFsdWVzWzBdLmdyb3VwQnkpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgb3BlcmF0aW9uOiBhZ2dyZWdhdGUub3BlcmF0aW9uLFxuICAgICAgICAgICAgZGF0YTogYWdncmVnYXRlLnZhbHVlcy5tYXAoKHZhbHVlKSA9PiAoeyAuLi52YWx1ZSwgc2VyaWVzOiBvcHRpb25zLm9yZGluYXRlLmxhYmVsIH0pKVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmxhdHRlbmVkID0gKFxuICAgICAgICAgIGFnZ3JlZ2F0ZS52YWx1ZXMgYXMge1xuICAgICAgICAgICAga2V5OiBWYWx1ZVR5cGU7XG4gICAgICAgICAgICBncm91cEJ5OiB7XG4gICAgICAgICAgICAgIGtleTogVmFsdWVUeXBlO1xuICAgICAgICAgICAgICB2YWx1ZTogVmFsdWVUeXBlO1xuICAgICAgICAgICAgfVtdO1xuICAgICAgICAgIH1bXVxuICAgICAgICApXG4gICAgICAgICAgLm1hcCgodmFsdWUpID0+XG4gICAgICAgICAgICB2YWx1ZS5ncm91cEJ5Lm1hcCgoZ3JvdXBCeSkgPT4gKHtcbiAgICAgICAgICAgICAga2V5OiB2YWx1ZS5rZXksXG4gICAgICAgICAgICAgIHNlcmllczogZ3JvdXBCeS5rZXksXG4gICAgICAgICAgICAgIHZhbHVlOiBncm91cEJ5LnZhbHVlXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgICApXG4gICAgICAgICAgLnJlZHVjZSgoYSwgYikgPT4gWy4uLmEsIC4uLmJdLCBbXSk7XG4gICAgICAgIHJldHVybiB7IG9wZXJhdGlvbjogYWdncmVnYXRlLm9wZXJhdGlvbiwgZGF0YTogZmxhdHRlbmVkIH07XG4gICAgICB9KSxcbiAgICAgIHN0YXJ0V2l0aCh7IG9wZXJhdGlvbjogT3BlcmF0aW9uLk5PTkUsIGRhdGE6IFtdIH0pLFxuICAgICAgc2hhcmUoKVxuICAgICk7XG5cbiAgICB0aGlzLm5vRGF0YSQgPSB0aGlzLmRhdGFzb3VyY2VJZHMkLnBpcGUobWFwKChpZHMpID0+IGlkcy5sZW5ndGggPT09IDApKTtcbiAgICB0aGlzLm5vQWdncmVnYXRpb25EYXRhJCA9IHRoaXMuYWdncmVnYXRlZFZhbHVlcyQucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhLmxlbmd0aCA9PT0gMCkpO1xuXG4gICAgdGhpcy52ZWdhTGl0ZVNwZWMkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLm9wdGlvbnMkLFxuICAgICAgdGhpcy5hdHRyaWJ1dGVUeXBlcyQsXG4gICAgICB0aGlzLmFnZ3JlZ2F0ZWRWYWx1ZXMkLFxuICAgICAgdGhpcy53aWRnZXRTaXplJC5waXBlKGRlYm91bmNlVGltZSgxMDApKSxcbiAgICAgIHRoaXMuZGlzcGxheUhlYWRlciRcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChbb3B0aW9ucywgdHlwZXMsIHZhbHVlcywgc2l6ZSwgZGlzcGxheV0pID0+IHtcbiAgICAgICAgY29uc3QgaXNDaXJjdWxhciA9IFtHcmFwaFR5cGUuQ0lSQ1VMQVIsIEdyYXBoVHlwZS5ET05VVF0uaW5jbHVkZXMob3B0aW9ucy5ncmFwaC50eXBlKTtcbiAgICAgICAgY29uc3Qgc3RhY2tlZCA9IG9wdGlvbnMuZ3JhcGgudHlwZS5zdGFydHNXaXRoKCdiYXInKSA/ICFvcHRpb25zLmdyYXBoLnN0YWNrZWQgOiBvcHRpb25zLmdyYXBoLnN0YWNrZWQ7XG4gICAgICAgIGNvbnN0IGxlZ2VuZFRpdGxlID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgb3B0aW9ucy5ncm91cEJ5ID8gdHlwZXMuZ3JvdXBCeS5uYW1lID8/ICcnIDogJ0Bwcnkud2lkZ2V0LmNoYXJ0LmxlZ2VuZExhYmVsJ1xuICAgICAgICApO1xuXG4gICAgICAgIChbb3B0aW9ucy5ncm91cEJ5Py5jb2xvciwgb3B0aW9ucy5jaXJjbGVDb2xvclNjaGVtZV0uZmlsdGVyKChzY2hlbWUpID0+ICEhc2NoZW1lKSBhcyBzdHJpbmdbXSkuZm9yRWFjaChcbiAgICAgICAgICAoc2NoZW1lKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNjaGVtZVNlcnZpY2UuYXNzZXJ0U2NoZW1lKHNjaGVtZSk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gbWVyZ2VEZWVwKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgICRzY2hlbWE6ICdodHRwczovL3ZlZ2EuZ2l0aHViLmlvL3NjaGVtYS92ZWdhLWxpdGUvdjUuanNvbicsXG4gICAgICAgICAgICB0aXRsZTogdGhpcy5nZXRUaXRsZShvcHRpb25zKSxcbiAgICAgICAgICAgIHdpZHRoOiAnY29udGFpbmVyJyxcbiAgICAgICAgICAgIGhlaWdodDogKHNpemUuaGVpZ2h0ID8/IDEwMCkgLSAoZGlzcGxheSA/IFdJREdFVF9IRUFERVJfSEVJR0hUIDogMCksXG4gICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgIGF1dG9zaXplOiB7IHR5cGU6ICdmaXQnLCBjb250YWluczogJ3BhZGRpbmcnIH0sXG4gICAgICAgICAgICBkYXRhOiB7IHZhbHVlczogSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh2YWx1ZXMuZGF0YSkpIH0sXG4gICAgICAgICAgICBsYXllcjogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbWFyazoge1xuICAgICAgICAgICAgICAgICAgdHlwZTogb3B0aW9ucy5ncmFwaC50eXBlLnNwbGl0KCctJylbMF0gYXMgJ2FyYycgfCAnbGluZScgfCAncG9pbnQnIHwgJ2JhcicgfCAnYXJlYScsXG4gICAgICAgICAgICAgICAgICBwb2ludDogb3B0aW9ucy5ncmFwaC50eXBlLmluZGV4T2YoJ3BvaW50JykgPj0gMCxcbiAgICAgICAgICAgICAgICAgIGxpbmU6IG9wdGlvbnMuZ3JhcGgudHlwZS5pbmRleE9mKCdsaW5lJykgPj0gMCxcbiAgICAgICAgICAgICAgICAgIGlubmVyUmFkaXVzOiBvcHRpb25zLmdyYXBoLmRvbnV0U2l6ZSA/PyAzMFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6IHtcbiAgICAgICAgICAgICAgICAgIHg6ICFpc0NpcmN1bGFyXG4gICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdrZXknLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG9wdGlvbnMuYWJzY2lzc2EubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiB0eXBlcy5hYnNjaXNzYS52ZWdhVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVVbml0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlcy5hYnNjaXNzYS52ZWdhVHlwZSA9PT0gVmVnYVR5cGUuVEVNUE9SQUwgJiYgb3B0aW9ucy5hYnNjaXNzYS5saW1pdD8uaXNUaW1lTGltaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG9wdGlvbnMuYWJzY2lzc2EubGltaXQuaW50ZXJ2YWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJpbjogb3B0aW9ucy5ncmFwaC50eXBlLmluZGV4T2YoJ2hpc3RvZ3JhbScpID49IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBheGlzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vZm9ybWF0OiB0eXBlcy5hYnNjaXNzYS52ZWdhVHlwZSA9PT0gVmVnYVR5cGUuVEVNUE9SQUwgPyAnJVktJUItJWRUJUg6JU06JVMnIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uV2lkZ2V0QWdncmVnYXRlZENoYXJ0Q29tcG9uZW50Lm1pblRpY2sodHlwZXMuYWJzY2lzc2EuZmllbGRUeXBlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxFeHByOiBgaGVpZ2h0IDwgMzAwID8gJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlcy5hYnNjaXNzYS52ZWdhVHlwZSA9PT0gVmVnYVR5cGUuVEVNUE9SQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gXCJ0aW1lRm9ybWF0KGRhdHVtLnZhbHVlLCAnJVktJUItJWRUJUg6JU06JVMnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICd0cnVuY2F0ZShkYXR1bS52YWx1ZSwgMTApJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9IDogJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlcy5hYnNjaXNzYS52ZWdhVHlwZSA9PT0gVmVnYVR5cGUuVEVNUE9SQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gXCJ0aW1lRm9ybWF0KGRhdHVtLnZhbHVlLCAnJVktJUItJWRUJUg6JU06JVMnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdkYXR1bS52YWx1ZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfWBcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGb3JjZSBhIGZhbHNlIHZhbHVlIGhlcmUgc28gdGhhdCB2ZWdhIHVuZGVyc3RhbmRzIHByb3Blcmx5XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHplcm86ICEhb3B0aW9ucy5hYnNjaXNzYS5rZWVwMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAvL3R5cGU6IFdpZGdldENoYXJ0Q29tcG9uZW50LmlzVGltZVVuaXRVVEModmFyaWFibGVzWzBdKSA/ICd1dGMnIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5nZXRTb3J0KG9wdGlvbnMuYWJzY2lzc2EuYXR0cmlidXRlLCBvcHRpb25zLmdyYXBoPy5zb3J0LCBvcHRpb25zLm9yZGluYXRlLmF0dHJpYnV0ZSlcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgeTogIWlzQ2lyY3VsYXJcbiAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3ZhbHVlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBvcHRpb25zLm9yZGluYXRlLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogdHlwZXMub3JkaW5hdGUudmVnYVR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBheGlzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC4uLldpZGdldEFnZ3JlZ2F0ZWRDaGFydENvbXBvbmVudC5taW5UaWNrKHR5cGVzLm9yZGluYXRlLmZpZWxkVHlwZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuc2V0VGlja0NvdW50KHZhbHVlcy5kYXRhKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHplcm86IHR5cGVzLm9yZGluYXRlLnZlZ2FUeXBlID09PSBWZWdhVHlwZS5RVUFOVElUQVRJVkUgPyAhIW9wdGlvbnMub3JkaW5hdGUua2VlcDAgOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzdGFja2VkID8geyBzdGFjazogdHJ1ZSB9IDoge30pXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgIHRoZXRhOiBpc0NpcmN1bGFyID8geyBmaWVsZDogJ3ZhbHVlJywgdHlwZTogdHlwZXMub3JkaW5hdGUudmVnYVR5cGUgfSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBsZWdlbmRUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICFpc0NpcmN1bGFyID8gKCFvcHRpb25zLmdyb3VwQnkgPyB1bmRlZmluZWQgOiAnc2VyaWVzJykgOiAna2V5JyxcbiAgICAgICAgICAgICAgICAgICAgbGVnZW5kOiBvcHRpb25zLmdyYXBoLmxlZ2VuZCxcbiAgICAgICAgICAgICAgICAgICAgc2NhbGU6ICFpc0NpcmN1bGFyXG4gICAgICAgICAgICAgICAgICAgICAgPyBvcHRpb25zLmdyb3VwQnlcbiAgICAgICAgICAgICAgICAgICAgICAgID8geyBzY2hlbWU6IG9wdGlvbnMuZ3JvdXBCeT8uY29sb3IgPz8gdGhpcy5zY2hlbWVTZXJ2aWNlLmdldERlZmF1bHRTY2hlbWUoKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgIDogeyBzY2hlbWU6IG9wdGlvbnMuY2lyY2xlQ29sb3JTY2hlbWUgPz8gdGhpcy5zY2hlbWVTZXJ2aWNlLmdldERlZmF1bHRTY2hlbWUoKSB9LFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTpcbiAgICAgICAgICAgICAgICAgICAgICAhaXNDaXJjdWxhciAmJiAhb3B0aW9ucy5ncm91cEJ5XG4gICAgICAgICAgICAgICAgICAgICAgICA/IG9wdGlvbnMuYmFzZUNvbG9yID8/IHRoaXMuc2NoZW1lU2VydmljZS5nZXRTY2hlbWVDb2xvcnModGhpcy5zY2hlbWVTZXJ2aWNlLmdldERlZmF1bHRTY2hlbWUoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgeE9mZnNldDogc3RhY2tlZCAmJiBvcHRpb25zLmdyb3VwQnkgPyB7IGZpZWxkOiAnc2VyaWVzJyB9IDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgdG9vbHRpcDogb3B0aW9ucy5ncmFwaC50b29sdGlwXG4gICAgICAgICAgICAgICAgICAgID8gb3B0aW9ucy5ncm91cEJ5XG4gICAgICAgICAgICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ2tleScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogdHlwZXMuYWJzY2lzc2EudmVnYVR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG9wdGlvbnMuYWJzY2lzc2EubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHR5cGVzLmFic2Npc3NhLnZlZ2FUeXBlID09PSAndGVtcG9yYWwnID8geyBmb3JtYXQ6ICclWS0lQi0lZFQlSDolTTolUycgfSA6IHt9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICB7IGZpZWxkOiAndmFsdWUnLCB0eXBlOiB0eXBlcy5vcmRpbmF0ZS52ZWdhVHlwZSwgdGl0bGU6IG9wdGlvbnMub3JkaW5hdGUubGFiZWwgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnc2VyaWVzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogbGVnZW5kVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ25vbWluYWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAna2V5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiB0eXBlcy5hYnNjaXNzYS52ZWdhVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogb3B0aW9ucy5hYnNjaXNzYS5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4odHlwZXMuYWJzY2lzc2EudmVnYVR5cGUgPT09ICd0ZW1wb3JhbCcgPyB7IGZvcm1hdDogJyVZLSVCLSVkVCVIOiVNOiVTJyB9IDoge30pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsgZmllbGQ6ICd2YWx1ZScsIHR5cGU6IHR5cGVzLm9yZGluYXRlLnZlZ2FUeXBlLCB0aXRsZTogb3B0aW9ucy5vcmRpbmF0ZS5sYWJlbCB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgY29uZmlnOiB0aGlzLmdldENoYXJ0Q29uZmlnKClcbiAgICAgICAgICB9IGFzIGFueSxcbiAgICAgICAgICBvcHRpb25zLmFkZGl0aW9uYWxTcGVjXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnNvcnRBdHRyaWJ1dGVzJCA9IHRoaXMub3B0aW9uc0NvcHkkLnBpcGUoXG4gICAgICBtYXAoKG9wdGlvbnMpID0+IHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICB7IGlkOiBvcHRpb25zPy5hYnNjaXNzYS5hdHRyaWJ1dGUsIGxhYmVsOiBvcHRpb25zPy5hYnNjaXNzYS5sYWJlbCB9LFxuICAgICAgICAgIHsgaWQ6IG9wdGlvbnM/Lm9yZGluYXRlLmF0dHJpYnV0ZSwgbGFiZWw6IG9wdGlvbnM/Lm9yZGluYXRlLmxhYmVsIH1cbiAgICAgICAgXS5maWx0ZXIoKGF0dHJpYnV0ZSkgPT4gISFhdHRyaWJ1dGUuaWQpO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuc29ydEF0dHJpYnV0ZXMkLnN1YnNjcmliZSgoYXR0cmlidXRlcykgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5vcHRpb25zQ29weSQudmFsdWU/LmdyYXBoLnNvcnQgJiZcbiAgICAgICAgICAhYXR0cmlidXRlcy5tYXAoKGF0dHJpYnV0ZSkgPT4gYXR0cmlidXRlLmlkKS5pbmNsdWRlcyh0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uZ3JhcGguc29ydD8uYXR0cmlidXRlKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlISxcbiAgICAgICAgICAgIGdyYXBoOiB7XG4gICAgICAgICAgICAgIC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlPy5ncmFwaCEsXG4gICAgICAgICAgICAgIHNvcnQ6IHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uZ3JhcGguc29ydCxcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGU6IGF0dHJpYnV0ZXNbMF0uaWQgPz8gJydcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5vcHRpb25zQ29weSQsIHRoaXMuYXR0cmlidXRlVHlwZXMkLCB0aGlzLmNsYXNzZXMkXSkuc3Vic2NyaWJlKFxuICAgICAgICAoW29wdGlvbnMsIGF0dHJUeXBlcywgY2xhc3Nlc10pID0+IHtcbiAgICAgICAgICB0aGlzLnNvcnREaXJlY3Rpb25zID0gdGhpcy5zb3J0RGlyZWN0aW9uc1xuICAgICAgICAgICAgLm1hcCgoc29ydCkgPT4ge1xuICAgICAgICAgICAgICBsZXQgYXR0cmlidXRlID0gY2xhc3Nlc1xuICAgICAgICAgICAgICAgIC5tYXAoKGNsYXp6KSA9PiBjbGF6ei5hdHRyaWJ1dGVzLmZpbmQoKGF0dHIpID0+IGF0dHIuaWQgPT09IG9wdGlvbnM/LmdyYXBoLnNvcnQ/LmF0dHJpYnV0ZSkpXG4gICAgICAgICAgICAgICAgLmZpbmQoKGF0dHIpID0+ICEhYXR0cik7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHNvcnQudmFsdWUsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgYEBwcnkud2lkZ2V0LmNoYXJ0LnNvcnQuJHtzb3J0LnZhbHVlfS4ke1xuICAgICAgICAgICAgICAgICAgICBhdHRyVHlwZXMuYWJzY2lzc2EubmFtZSA9PT0gYXR0cmlidXRlPy5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgPyBhdHRyVHlwZXMuYWJzY2lzc2EudmVnYVR5cGVcbiAgICAgICAgICAgICAgICAgICAgICA6IGF0dHJUeXBlcy5vcmRpbmF0ZS52ZWdhVHlwZVxuICAgICAgICAgICAgICAgICAgfWBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEubGFiZWwubG9jYWxlQ29tcGFyZShiLmxhYmVsKSk7XG4gICAgICAgIH1cbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLnZlZ2FMaXRlU3BlYyQsIHRoaXMudHJpZ2dlciRdKS5zdWJzY3JpYmUoKFtzcGVjLCBfXSkgPT4ge1xuICAgICAgICBpZiAodGhpcy52ZWdhKSB7XG4gICAgICAgICAgdGhpcy52aWV3Py5maW5hbGl6ZSgpO1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHNwZWMpKTtcbiAgICAgICAgICBlbWJlZCh0aGlzLnZlZ2EubmF0aXZlRWxlbWVudCwgSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShzcGVjKSksIHtcbiAgICAgICAgICAgIGFjdGlvbnM6IGZhbHNlLFxuICAgICAgICAgICAgcmVuZGVyZXI6ICdjYW52YXMnLFxuICAgICAgICAgICAgZm9ybWF0TG9jYWxlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudE9iamVjdCgnQHByeS53aWRnZXQuY2hhcnQubnVtYmVyTG9jYWxlJykgYXMgYW55LFxuICAgICAgICAgICAgdGltZUZvcm1hdExvY2FsZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnRPYmplY3QoJ0Bwcnkud2lkZ2V0LmNoYXJ0LnRpbWVGb3JtYXRMb2NhbGUnKSBhcyBhbnksXG4gICAgICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgICAgIHRoZW1lOiAnY3VzdG9tJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICAgICAudGhlbigocmVzdWx0KSA9PiAodGhpcy52aWV3ID0gcmVzdWx0LnZpZXcpKVxuICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IGNvbnNvbGUuZXJyb3IoJ0Nhbm5vdCBkaXNwbGF5IGNoYXJ0JywgZXJyKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnRyaWdnZXIkLm5leHQoKSwgMTAwKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMudHJpZ2dlciQubmV4dCgpO1xuICB9XG5cbiAgdHJhbnNsYXRlVG9WZWdhVHlwZSh0eXBlPzogRmllbGRUeXBlLCBuYW1lPzogc3RyaW5nKTogVmVnYVR5cGUge1xuICAgIGxldCBpZFJlZ2V4ID0gbmV3IFJlZ0V4cCgvX2lkfGlkX3xfSUR8SURffF9JZHxJZF8vLCAnZycpO1xuICAgIGlmIChpZFJlZ2V4LnRlc3QobmFtZSA/PyAnLS0tLS0tLScpKSB7XG4gICAgICByZXR1cm4gVmVnYVR5cGUuT1JESU5BTDtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgRmllbGRUeXBlLkRFQ0lNQUw6XG4gICAgICBjYXNlIEZpZWxkVHlwZS5JTlRFR0VSOlxuICAgICAgY2FzZSBGaWVsZFR5cGUuTE9ORzpcbiAgICAgICAgcmV0dXJuIFZlZ2FUeXBlLlFVQU5USVRBVElWRTtcbiAgICAgIGNhc2UgRmllbGRUeXBlLklOU1RBTlQ6XG4gICAgICAgIHJldHVybiBWZWdhVHlwZS5URU1QT1JBTDtcbiAgICAgIGNhc2UgRmllbGRUeXBlLktFWVdPUkQ6XG4gICAgICBjYXNlIEZpZWxkVHlwZS5TVFJJTkc6XG4gICAgICAgIHJldHVybiBWZWdhVHlwZS5OT01JTkFMO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIFZlZ2FUeXBlLk5PTUlOQUw7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIG1pblRpY2sodHlwZTogRmllbGRUeXBlKTogeyB0aWNrTWluU3RlcDogbnVtYmVyIH0gfCB7fSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIEZpZWxkVHlwZS5JTlRFR0VSOlxuICAgICAgY2FzZSBGaWVsZFR5cGUuTE9ORzpcbiAgICAgICAgcmV0dXJuIHsgdGlja01pblN0ZXA6IDEgfTtcbiAgICAgIGNhc2UgRmllbGRUeXBlLkRFQ0lNQUw6XG4gICAgICBjYXNlIEZpZWxkVHlwZS5JTlNUQU5UOlxuICAgICAgY2FzZSBGaWVsZFR5cGUuS0VZV09SRDpcbiAgICAgIGNhc2UgRmllbGRUeXBlLlNUUklORzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH1cblxuICBnZXRTb3J0KGFic2Npc3NhOiBzdHJpbmcsIHNvcnQ/OiBTb3J0LCBvcmRpbmF0ZT86IHN0cmluZykge1xuICAgIHJldHVybiBzb3J0XG4gICAgICA/IHtcbiAgICAgICAgICBzb3J0OiB7IGZpZWxkOiBzb3J0LmF0dHJpYnV0ZSA9PT0gYWJzY2lzc2EgPyAna2V5JyA6ICd2YWx1ZScsIG9yZGVyOiBzb3J0LmRpcmVjdGlvbiArICdlbmRpbmcnIH1cbiAgICAgICAgfVxuICAgICAgOiB7fTtcbiAgfVxuXG4gIGVtaXRNYW5pZmVzdCgpIHtcbiAgICB0aGlzLm1hbmlmZXN0TW9kaWZpZWQuZW1pdCh7XG4gICAgICB3aWRnZXRJbmRleDogdGhpcy53aWRnZXRJbmRleCxcbiAgICAgIG1hbmlmZXN0OiB7XG4gICAgICAgIC4uLnRoaXMubWFuaWZlc3QsXG4gICAgICAgIG9wdGlvbnM6IHsgLi4udGhpcy5vcHRpb25zQ29weSQuZ2V0VmFsdWUoKSB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvcGVuU2V0dGluZ3MoKSB7XG4gICAgKHRoaXMub3BlbiQgYXMgU3ViamVjdDx2b2lkPikubmV4dCh1bmRlZmluZWQpO1xuICB9XG5cbiAgb3BlbkRhdGEoKSB7XG4gICAgKHRoaXMub3BlbkRhdGEkIGFzIFN1YmplY3Q8dm9pZD4pLm5leHQodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGl0bGUob3B0aW9uczogQ2hhcnRBZ2dyZWdhdGVkV2lkZ2V0T3B0aW9ucykge1xuICAgIHJldHVybiBvcHRpb25zLmdyYXBoPy50aXRsZSA/PyB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXRDaGFydENvbmZpZygpIHtcbiAgICByZXR1cm4gaW5pdENvbmZpZyh7XG4gICAgICBzdHlsZToge1xuICAgICAgICAnZ3VpZGUtbGFiZWwnOiB7XG4gICAgICAgICAgLy8gYXhpcyB0aWNrIHRpdGxlc1xuICAgICAgICAgIGZvbnQ6ICdVYnVudHUsIHNhbnMtc2VyaWYnLFxuICAgICAgICAgIGZvbnRTaXplOiAxMixcbiAgICAgICAgICBmb250V2VpZ2h0OiA2MDAsXG4gICAgICAgICAgZmlsbDogJyMyNjMzNDAnXG4gICAgICAgIH0sXG4gICAgICAgICdndWlkZS10aXRsZSc6IHtcbiAgICAgICAgICAvLyBheGlzIHRpdGxlXG4gICAgICAgICAgZm9udDogJ1VidW50dSwgc2Fucy1zZXJpZicsXG4gICAgICAgICAgZm9udFNpemU6IDEyLFxuICAgICAgICAgIGZvbnRXZWlnaHQ6IDYwMCxcbiAgICAgICAgICBmaWxsOiAnIzI2MzM0MCdcbiAgICAgICAgfSxcbiAgICAgICAgJ2dyb3VwLXRpdGxlJzoge1xuICAgICAgICAgIC8vIGNoYXJ0IHRpdGxlXG4gICAgICAgICAgZm9udDogJ1VidW50dSwgc2Fucy1zZXJpZicsXG4gICAgICAgICAgZm9udFNpemU6IDEyLFxuICAgICAgICAgIGZvbnRXZWlnaHQ6IDYwMCxcbiAgICAgICAgICBmaWxsOiAnIzI2MzM0MCdcbiAgICAgICAgfSxcbiAgICAgICAgJ2dyb3VwLXN1YnRpdGxlJzoge1xuICAgICAgICAgIC8vIG5vdCBzdXJlXG4gICAgICAgICAgZm9udDogJ1VidW50dSwgc2Fucy1zZXJpZicsXG4gICAgICAgICAgZm9udFNpemU6IDEyLFxuICAgICAgICAgIGZvbnRXZWlnaHQ6IDYwMCxcbiAgICAgICAgICBmaWxsOiAnIzI2MzM0MCdcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgY2hhbmdlQ2hhcnRUaXRsZSgkZXZlbnQ6IHN0cmluZykge1xuICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSkge1xuICAgICAgdGhpcy5vcHRpb25zQ29weSQubmV4dCh7XG4gICAgICAgIC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLFxuICAgICAgICBncmFwaDogeyAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uZ3JhcGgsIHRpdGxlOiAkZXZlbnQgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlVHlwZSgkZXZlbnQ6IEdyYXBoVHlwZSkge1xuICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSkge1xuICAgICAgdGhpcy5vcHRpb25zQ29weSQubmV4dCh7XG4gICAgICAgIC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLFxuICAgICAgICBncmFwaDogeyAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uZ3JhcGgsIHR5cGU6ICRldmVudCB9XG4gICAgICB9KTtcbiAgICAgIGlmIChbR3JhcGhUeXBlLkNJUkNVTEFSLCBHcmFwaFR5cGUuRE9OVVRdLmluY2x1ZGVzKCRldmVudCkpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zQ29weSQubmV4dCh7XG4gICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgICAgZ3JvdXBCeTogdW5kZWZpbmVkLFxuICAgICAgICAgIGNpcmNsZUNvbG9yU2NoZW1lOiB0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uY2lyY2xlQ29sb3JTY2hlbWUgPz8gJ1Byb3ZvbHknXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKFtHcmFwaFR5cGUuSElTVE9HUkFNXS5pbmNsdWRlcygkZXZlbnQpKSB7XG4gICAgICAgIHRoaXMubGltaXRFbGVtZW50cyh0cnVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjaGFuZ2VEb251dFNpemUoJGV2ZW50OiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zQ29weSQudmFsdWUpIHtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoe1xuICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgZ3JhcGg6IHsgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/LmdyYXBoLCBkb251dFNpemU6ICRldmVudCB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VPcGVyYXRpb24oJGV2ZW50OiBPcGVyYXRpb24pIHtcbiAgICBpZiAodGhpcy5vcHRpb25zQ29weSQudmFsdWUpIHtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoe1xuICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgb3JkaW5hdGU6IHsgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/Lm9yZGluYXRlLCBvcGVyYXRpb246ICRldmVudCB9XG4gICAgICB9KTtcbiAgICAgIGlmICgkZXZlbnQgPT09IE9wZXJhdGlvbi5DT1VOVCB8fCAkZXZlbnQgPT09IE9wZXJhdGlvbi5ESVNUSU5DVCkge1xuICAgICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgICBvcmRpbmF0ZToge1xuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/Lm9yZGluYXRlLFxuICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdAcHJ5LndpZGdldC5jaGFydC5vcGVyYXRpb24uJyArICRldmVudCksXG4gICAgICAgICAgICBhdHRyaWJ1dGU6IHVuZGVmaW5lZFxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudHJpZ2dlck9yZGluYXRlQXR0cmlidXRlcyQubmV4dCgpLCAxMCk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlQWJzY2lzc2EoJGV2ZW50OiBzdHJpbmcpIHtcbiAgICBpZiAoJGV2ZW50ICYmIHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlKSB7XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgIGFic2Npc3NhOiB7IC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlPy5hYnNjaXNzYSwgYXR0cmlidXRlOiAkZXZlbnQgfVxuICAgICAgfSk7XG4gICAgICBjb25zdCBhdHRyID0gdGhpcy5jbGFzc2VzXG4gICAgICAgIC5tYXAoKGNsYXp6KSA9PiBjbGF6ei5hdHRyaWJ1dGVzKVxuICAgICAgICAucmVkdWNlKChhLCBiKSA9PiBbLi4uYSwgLi4uYl0sIFtdKVxuICAgICAgICAuZmluZCgoYXR0cikgPT4gYXR0ci5pZCA9PT0gJGV2ZW50KTtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoe1xuICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgYWJzY2lzc2E6IHsgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/LmFic2Npc3NhLCBsYWJlbDogYXR0cj8ubmFtZSA/PyAnYXR0ci1ub3QtZm91bmQnIH1cbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmNvcHlBYnNjaXNzYUZpZWxkID0gdGhpcy5maWVsZHMuZmluZCgoZmllbGQpID0+IGF0dHI/LmZpZWxkID09PSBmaWVsZC5pZCk7XG5cbiAgICAgIHRoaXMubGltaXRFbGVtZW50cyghIXRoaXMub3B0aW9uc0NvcHkkLnZhbHVlPy5hYnNjaXNzYS5saW1pdCk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlQWJzY2lzc2FMYWJlbCgkZXZlbnQ6IHN0cmluZykge1xuICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSkge1xuICAgICAgdGhpcy5vcHRpb25zQ29weSQubmV4dCh7XG4gICAgICAgIC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLFxuICAgICAgICBhYnNjaXNzYTogeyAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uYWJzY2lzc2EsIGxhYmVsOiAkZXZlbnQgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlT3JkaW5hdGUoJGV2ZW50OiBhbnkpIHtcbiAgICBpZiAoJGV2ZW50ICYmIHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlKSB7XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgIG9yZGluYXRlOiB7IC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlPy5vcmRpbmF0ZSwgYXR0cmlidXRlOiAkZXZlbnQgfVxuICAgICAgfSk7XG4gICAgICBjb25zdCBhdHRyID0gdGhpcy5jbGFzc2VzXG4gICAgICAgIC5tYXAoKGNsYXp6KSA9PiBjbGF6ei5hdHRyaWJ1dGVzKVxuICAgICAgICAucmVkdWNlKChhLCBiKSA9PiBbLi4uYSwgLi4uYl0sIFtdKVxuICAgICAgICAuZmluZCgoYXR0cikgPT4gYXR0ci5pZCA9PT0gJGV2ZW50KTtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoe1xuICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgb3JkaW5hdGU6IHsgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/Lm9yZGluYXRlLCBsYWJlbDogYXR0cj8ubmFtZSA/PyAnYXR0ci1ub3QtZm91bmQnIH1cbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmNvcHlPcmRpbmF0ZUZpZWxkID0gdGhpcy5maWVsZHMuZmluZCgoZmllbGQpID0+IGF0dHI/LmZpZWxkID09PSBmaWVsZC5pZCk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlT3JkaW5hdGVMYWJlbCgkZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSkge1xuICAgICAgdGhpcy5vcHRpb25zQ29weSQubmV4dCh7XG4gICAgICAgIC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLFxuICAgICAgICBvcmRpbmF0ZTogeyAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8ub3JkaW5hdGUsIGxhYmVsOiAkZXZlbnQgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlS2VlcDBBYnNjaXNzYSgkZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSkge1xuICAgICAgdGhpcy5vcHRpb25zQ29weSQubmV4dCh7XG4gICAgICAgIC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLFxuICAgICAgICBhYnNjaXNzYTogeyAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uYWJzY2lzc2EsIGtlZXAwOiAkZXZlbnQgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlS2VlcDBPcmRpbmF0ZSgkZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSkge1xuICAgICAgdGhpcy5vcHRpb25zQ29weSQubmV4dCh7XG4gICAgICAgIC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLFxuICAgICAgICBvcmRpbmF0ZTogeyAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8ub3JkaW5hdGUsIGtlZXAwOiAkZXZlbnQgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbGltaXRFbGVtZW50cygkZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSkge1xuICAgICAgaWYgKCRldmVudCkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5jb3B5QWJzY2lzc2FGaWVsZD8udHlwZSAhPT0gRmllbGRUeXBlLklOU1RBTlQgJiZcbiAgICAgICAgICB0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uYWJzY2lzc2E/LmxpbWl0ICYmXG4gICAgICAgICAgJ2F0JyBpbiB0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uYWJzY2lzc2E/LmxpbWl0XG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoe1xuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgICAgICBhYnNjaXNzYToge1xuICAgICAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uYWJzY2lzc2EsXG4gICAgICAgICAgICAgIGxpbWl0OiB7XG4gICAgICAgICAgICAgICAgYXQ6IHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlPy5hYnNjaXNzYT8ubGltaXQ/LmF0ID8/IDMsXG4gICAgICAgICAgICAgICAgb3RoZXJzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBvcmRlcjogJ2FzYycsXG4gICAgICAgICAgICAgICAgaXNUaW1lTGltaXQ6IGZhbHNlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLFxuICAgICAgICAgICAgYWJzY2lzc2E6IHsgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/LmFic2Npc3NhLCBsaW1pdDogeyBpbnRlcnZhbDogJ3NlY29uZCcsIGlzVGltZUxpbWl0OiB0cnVlIH0gfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgICBhYnNjaXNzYTogeyAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uYWJzY2lzc2EsIGxpbWl0OiB1bmRlZmluZWQgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjaGFuZ2VMaW1pdCgkZXZlbnQ6IGFueSkge1xuICAgIGlmIChcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlICYmXG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZS5hYnNjaXNzYS5saW1pdCAmJlxuICAgICAgIXRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLmFic2Npc3NhLmxpbWl0LmlzVGltZUxpbWl0XG4gICAgKSB7XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgIGFic2Npc3NhOiB7XG4gICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/LmFic2Npc3NhLFxuICAgICAgICAgIGxpbWl0OiB7XG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uYWJzY2lzc2EubGltaXQsXG4gICAgICAgICAgICBhdDogJGV2ZW50XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VMaW1pdE90aGVycygkZXZlbnQ6IGFueSkge1xuICAgIGlmIChcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlICYmXG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZS5hYnNjaXNzYS5saW1pdCAmJlxuICAgICAgIXRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLmFic2Npc3NhLmxpbWl0LmlzVGltZUxpbWl0XG4gICAgKSB7XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgIGFic2Npc3NhOiB7XG4gICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/LmFic2Npc3NhLFxuICAgICAgICAgIGxpbWl0OiB7XG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uYWJzY2lzc2EubGltaXQsXG4gICAgICAgICAgICBvdGhlcnM6ICRldmVudFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlTGltaXRPcmRlcigkZXZlbnQ6IGFueSkge1xuICAgIGlmIChcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlICYmXG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZS5hYnNjaXNzYS5saW1pdCAmJlxuICAgICAgIXRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLmFic2Npc3NhLmxpbWl0LmlzVGltZUxpbWl0XG4gICAgKSB7XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgIGFic2Npc3NhOiB7XG4gICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/LmFic2Npc3NhLFxuICAgICAgICAgIGxpbWl0OiB7XG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uYWJzY2lzc2EubGltaXQsXG4gICAgICAgICAgICBvcmRlcjogJGV2ZW50ID8gJ2FzYycgOiAnZGVzYydcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNoYW5nZVRpbWVMaW1pdCgkZXZlbnQ6IGFueSkge1xuICAgIGlmIChcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlICYmXG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZS5hYnNjaXNzYS5saW1pdCAmJlxuICAgICAgdGhpcy5vcHRpb25zQ29weSQudmFsdWUuYWJzY2lzc2EubGltaXQuaXNUaW1lTGltaXRcbiAgICApIHtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoe1xuICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgYWJzY2lzc2E6IHtcbiAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZS5hYnNjaXNzYSxcbiAgICAgICAgICBsaW1pdDoge1xuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUuYWJzY2lzc2EubGltaXQsXG4gICAgICAgICAgICBpbnRlcnZhbDogJGV2ZW50XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVMZWdlbmQoJGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zQ29weSQudmFsdWUpIHtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoe1xuICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgZ3JhcGg6IHsgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUuZ3JhcGgsIGxlZ2VuZDogJGV2ZW50IH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZVRvb2x0aXAoJGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zQ29weSQudmFsdWUpIHtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoe1xuICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgZ3JhcGg6IHsgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/LmdyYXBoLCB0b29sdGlwOiAkZXZlbnQgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlR3JvdXBCeSgkZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSkge1xuICAgICAgaWYgKCRldmVudCkge1xuICAgICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgICBncm91cEJ5OiB7XG4gICAgICAgICAgICBhdHRyaWJ1dGU6IHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlPy5ncm91cEJ5Py5hdHRyaWJ1dGUgPz8gJycsXG4gICAgICAgICAgICBjb2xvcjogdGhpcy5zY2hlbWVTZXJ2aWNlLmdldERlZmF1bHRTY2hlbWUoKVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgICBncm91cEJ5OiB1bmRlZmluZWRcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlR3JvdXBCeSgkZXZlbnQ6IGFueSkge1xuICAgIGlmICh0eXBlb2YgJGV2ZW50ID09PSAnc3RyaW5nJyAmJiB0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSAmJiB0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZS5ncm91cEJ5KSB7XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgIGdyb3VwQnk6IHtcbiAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uZ3JvdXBCeSxcbiAgICAgICAgICBhdHRyaWJ1dGU6ICRldmVudFxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VDb2xvclNjaGVtZSgkZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSAmJiB0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZS5ncm91cEJ5KSB7XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgIGdyb3VwQnk6IHtcbiAgICAgICAgICBhdHRyaWJ1dGU6IHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLmdyb3VwQnk/LmF0dHJpYnV0ZSxcbiAgICAgICAgICBjb2xvcjogJGV2ZW50XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHNldFRpY2tDb3VudChkYXRhOiBhbnkpIHtcbiAgICByZXR1cm4gTWF0aC5tYXgoLi4uZGF0YS5tYXAoKHZhbDogYW55KSA9PiB2YWwudmFsdWUpKSA8IDNcbiAgICAgID8geyB0aWNrQ291bnQ6IE1hdGgubWF4KC4uLmRhdGEubWFwKCh2YWw6IGFueSkgPT4gdmFsLnZhbHVlKSkgfVxuICAgICAgOiB7fTtcbiAgfVxuXG4gIHRvZ2dsZVN0YWNrZWQoJGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zQ29weSQudmFsdWUpIHtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoe1xuICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgZ3JhcGg6IHtcbiAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uZ3JhcGgsXG4gICAgICAgICAgc3RhY2tlZDogJGV2ZW50XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZVNvcnQoJGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zQ29weSQudmFsdWUpIHtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoe1xuICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgZ3JhcGg6IHtcbiAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZS5ncmFwaCxcbiAgICAgICAgICBzb3J0OiAkZXZlbnRcbiAgICAgICAgICAgID8gdGhpcy5vcHRpb25zQ29weSQudmFsdWUuZ3JhcGguc29ydCA/PyB7XG4gICAgICAgICAgICAgICAgYXR0cmlidXRlOiB0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZS5hYnNjaXNzYS5hdHRyaWJ1dGUsXG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uOiAnYXNjJ1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VTb3J0QXR0cmlidXRlKCRldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlKSB7XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgIGdyYXBoOiB7XG4gICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUuZ3JhcGgsXG4gICAgICAgICAgc29ydDogeyAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZS5ncmFwaC5zb3J0ISwgYXR0cmlidXRlOiAkZXZlbnQgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VTb3J0RGlyZWN0aW9uKCRldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlKSB7XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgIGdyYXBoOiB7XG4gICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/LmdyYXBoLFxuICAgICAgICAgIHNvcnQ6IHsgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/LmdyYXBoLnNvcnQhLCBkaXJlY3Rpb246ICRldmVudCB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlIHRvSW1hZ2UoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgcmVzb2x2ZSh0aGlzLnZlZ2EubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdjYW52YXMnKVswXS50b0RhdGFVUkwoJ2ltYWdlL3BuZycpKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNoYW5nZUNpcmNsZUNvbG9yU2NoZW1lKCRldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlKSB7XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgIGNpcmNsZUNvbG9yU2NoZW1lOiAkZXZlbnRcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNoYW5nZUJhc2VDb2xvcigkZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSkge1xuICAgICAgdGhpcy5vcHRpb25zQ29weSQubmV4dCh7XG4gICAgICAgIC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLFxuICAgICAgICBiYXNlQ29sb3I6ICRldmVudFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iLCI8cHJ5LXdpZGdldC1hZ2dyZWdhdGVkLWNoYXJ0LWNzcz48L3ByeS13aWRnZXQtYWdncmVnYXRlZC1jaGFydC1jc3M+XG48ZGl2IGNsYXNzPVwiby13aWRnZXQgby13aWRnZXQtLWNoYXJ0XCIgKm5nSWY9XCJvcHRpb25zQ29weSQgfCBhc3luYyBhcyBvcHRpb25zQ29weVwiPlxuICA8cHJ5LXdpZGdldC1oZWFkZXJcbiAgICBbZGF0YXNvdXJjZUlkc109XCIoZGF0YXNvdXJjZUlkcyQgfCBhc3luYykgPz8gW11cIlxuICAgICpuZ0lmPVwiZGlzcGxheUhlYWRlciQgfCBhc3luY1wiXG4gICAgW3dpZGdldEluZGV4XT1cIndpZGdldEluZGV4XCJcbiAgICBbbWFuaWZlc3RdPVwibWFuaWZlc3RcIlxuICAgIChtYW5pZmVzdE1vZGlmaWVkKT1cIm1hbmlmZXN0TW9kaWZpZWQuZW1pdCgkZXZlbnQpXCJcbiAgICAjaGVhZGVyXG4gICAgW2hlYWRlck9wdGlvbnNdPVwiKGRpc3BsYXlIZWFkZXIkIHwgYXN5bmMpID8/IHt9XCJcbiAgICBbZGlzcGxheUNvdW50XT1cImZhbHNlXCJcbiAgICBbb3BlbkRhdGEkXT1cIm9wZW5EYXRhJFwiXG4gID5cbiAgICA8cHJ5LXNldHRpbmdzXG4gICAgICAoc2F2ZVRyaWdnZXJlZCk9XCJlbWl0TWFuaWZlc3QoKVwiXG4gICAgICAoY2hhbmdlVGl0bGUpPVwiY2hhbmdlV2lkZ2V0VGl0bGUoJGV2ZW50KVwiXG4gICAgICBbaGVhZGVyUHJlc2VudF09XCJkaXNwbGF5SGVhZGVyJCB8IGFzeW5jXCJcbiAgICAgIFt3aWRnZXRJbmRleF09XCJ3aWRnZXRJbmRleFwiXG4gICAgICBbb3BlbiRdPVwib3BlbiRcIlxuICAgICAgW2hlYWRlcl09XCJoZWFkZXJcIlxuICAgICAgY2xhc3M9XCJvLXNldHRpbmdzXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1zZXR0aW5nc19fcG9wdXBfX2NvbnRlbnRfX2ZpZWxkcyAtY29uZGVuc2VkXCI+XG4gICAgICAgIDxwcnktZWRpdC1pbnB1dFxuICAgICAgICAgIGxhYmVsPVwiQHByeS53aWRnZXQuY2hhcnQudGl0bGVcIlxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZUNoYXJ0VGl0bGUoJGV2ZW50KVwiXG4gICAgICAgICAgW25nTW9kZWxdPVwib3B0aW9uc0NvcHkuZ3JhcGgudGl0bGVcIlxuICAgICAgICA+PC9wcnktZWRpdC1pbnB1dD5cblxuICAgICAgICA8ZGl2ICpuZ0lmPVwib3B0aW9uc0NvcHlcIiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJjaGFydF90eXBlXCI+e3sgJ0Bwcnkud2lkZ2V0LmNoYXJ0LnR5cGUnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZVR5cGUoJGV2ZW50KVwiXG4gICAgICAgICAgICBbaXRlbXNBc09wdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtpdGVtc109XCJ0eXBlT3B0aW9uc1wiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJvcHRpb25zQ29weS5ncmFwaC50eXBlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYS1wcnktc2VsZWN0XCJcbiAgICAgICAgICAgIGJpbmRMYWJlbD1cImxhYmVsXCJcbiAgICAgICAgICAgIGJpbmRWYWx1ZT1cImlkXCJcbiAgICAgICAgICAgIGlkPVwiY2hhcnRfdHlwZVwiXG4gICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9wdGlvbnNDb3B5LmdyYXBoLnR5cGUgPT09IEdyYXBoVHlwZS5ET05VVFwiPlxuICAgICAgICAgIDxwcnktcmFuZ2VcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cIm9wdGlvbnNDb3B5LmdyYXBoLmRvbnV0U2l6ZVwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VEb251dFNpemUoJGV2ZW50KVwiXG4gICAgICAgICAgICBsYWJlbFRyYW5zbGF0ZT1cIkBwcnkud2lkZ2V0LmNoYXJ0LmRvbnV0U2l6ZVwiXG4gICAgICAgICAgICBtaW49XCIxXCJcbiAgICAgICAgICAgIG1heD1cIjUwMFwiXG4gICAgICAgICAgPjwvcHJ5LXJhbmdlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgPHByeS1jaGVja2JveCAobmdNb2RlbENoYW5nZSk9XCJ0b2dnbGVMZWdlbmQoJGV2ZW50KVwiIFtuZ01vZGVsXT1cIiEhb3B0aW9uc0NvcHkuZ3JhcGgubGVnZW5kXCI+XG4gICAgICAgICAgICB7eyAnQHByeS53aWRnZXQuY2hhcnQubGVnZW5kJyB8IGkxOG4gfX1cbiAgICAgICAgICA8L3ByeS1jaGVja2JveD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEhb3B0aW9uc0NvcHkuZ3JhcGgudHlwZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiby1zZXR0aW5nc19fcG9wdXBfX2NvbnRlbnRfX2ZpZWxkcyAtY29uZGVuc2VkXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cImFic2Npc3NhXCI+e3sgJ0Bwcnkud2lkZ2V0LmNoYXJ0LmFic2Npc3NhJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlQWJzY2lzc2EoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtpdGVtc0FzT3B0aW9uXT1cInRydWVcIlxuICAgICAgICAgICAgICBbaXRlbXNdPVwiYWJzY2lzc2FBdHRyaWJ1dGVzJCB8IGFzeW5jIHwgcHJ5U29ydERhdGEgOiBzb3J0QWN0aXZlIDogc29ydERpcmVjdGlvblwiXG4gICAgICAgICAgICAgIFtuZ01vZGVsXT1cIm9wdGlvbnNDb3B5LmFic2Npc3NhLmF0dHJpYnV0ZVwiXG4gICAgICAgICAgICAgIGJpbmRMYWJlbD1cIm5hbWVcIlxuICAgICAgICAgICAgICBiaW5kVmFsdWU9XCJpZFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYS1wcnktc2VsZWN0XCJcbiAgICAgICAgICAgICAgaWQ9XCJhYnNjaXNzYVwiXG4gICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPHByeS1lZGl0LWlucHV0XG4gICAgICAgICAgICBsYWJlbD1cIkBwcnkud2lkZ2V0LmNoYXJ0LmRhdGFMYWJlbFwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VBYnNjaXNzYUxhYmVsKCRldmVudClcIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwib3B0aW9uc0NvcHkuYWJzY2lzc2EubGFiZWxcIlxuICAgICAgICAgID48L3ByeS1lZGl0LWlucHV0PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgWydxdWFudGl0YXRpdmUnLCAndGVtcG9yYWwnXS5pbmNsdWRlcyh0cmFuc2xhdGVUb1ZlZ2FUeXBlKGNvcHlBYnNjaXNzYUZpZWxkPy50eXBlKSkgJiZcbiAgICAgICAgICAgICAgb3B0aW9uc0NvcHkuZ3JhcGgudHlwZSAhPT0gR3JhcGhUeXBlLkRPTlVUICYmXG4gICAgICAgICAgICAgIG9wdGlvbnNDb3B5LmdyYXBoLnR5cGUgIT09IEdyYXBoVHlwZS5DSVJDVUxBUlxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8cHJ5LWNoZWNrYm94IChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZUtlZXAwQWJzY2lzc2EoJGV2ZW50KVwiIFtuZ01vZGVsXT1cIm9wdGlvbnNDb3B5LmFic2Npc3NhLmtlZXAwXCJcbiAgICAgICAgICAgICAgPnt7ICdAcHJ5LndpZGdldC5jaGFydC5vcmlnaW4nIHwgaTE4biB9fVxuICAgICAgICAgICAgPC9wcnktY2hlY2tib3g+XG5cbiAgICAgICAgICAgIDxwcnktY2hlY2tib3hcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwibGltaXRFbGVtZW50cygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwiISFvcHRpb25zQ29weS5hYnNjaXNzYS5saW1pdFwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJvcHRpb25zQ29weS5ncmFwaC50eXBlID09PSBHcmFwaFR5cGUuSElTVE9HUkFNXCJcbiAgICAgICAgICAgICAgPnt7ICdAcHJ5LndpZGdldC5jaGFydC5saW1pdCcgfCBpMThuIH19XG4gICAgICAgICAgICA8L3ByeS1jaGVja2JveD5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEhb3B0aW9uc0NvcHkuYWJzY2lzc2EubGltaXRcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9wdGlvbnNDb3B5LmFic2Npc3NhLmxpbWl0LmlzVGltZUxpbWl0ID09PSBmYWxzZVwiPlxuICAgICAgICAgICAgICAgIDxwcnktcmFuZ2VcbiAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cIm9wdGlvbnNDb3B5LmFic2Npc3NhLmxpbWl0LmF0XCJcbiAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZUxpbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgbGFiZWxUcmFuc2xhdGU9XCJAcHJ5LndpZGdldC5jaGFydC5saW1pdFwiXG4gICAgICAgICAgICAgICAgICBtaW49XCIxXCJcbiAgICAgICAgICAgICAgICAgIG1heD1cIjEwXCJcbiAgICAgICAgICAgICAgICA+PC9wcnktcmFuZ2U+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib3B0aW9uc0NvcHkuZ3JhcGgudHlwZSAhPT0gR3JhcGhUeXBlLkhJU1RPR1JBTVwiPlxuICAgICAgICAgICAgICAgICAgPHByeS1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VMaW1pdE90aGVycygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwib3B0aW9uc0NvcHkuYWJzY2lzc2EubGltaXQub3RoZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgPnt7ICdAcHJ5LndpZGdldC5jaGFydC5vdGhlcnMnIHwgaTE4biB9fVxuICAgICAgICAgICAgICAgICAgPC9wcnktY2hlY2tib3g+XG5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJkYXRlX2xpbWl0XCI+e3sgJ0Bwcnkud2lkZ2V0LmNoYXJ0Lm9yZGVyJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlTGltaXRPcmRlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW2l0ZW1zQXNPcHRpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJbeyBpZDogJ2FzYycgfSwgeyBpZDogJ2Rlc2MnIH1dXCJcbiAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwib3B0aW9uc0NvcHkuYWJzY2lzc2EubGltaXQub3JkZXJcIlxuICAgICAgICAgICAgICAgICAgICBbYmFzZVRyYW5zbGF0ZV09XCInQHByeS53aWRnZXQuY2hhcnQuJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbFRyYW5zbGF0ZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgYmluZExhYmVsPVwiaWRcIlxuICAgICAgICAgICAgICAgICAgICBiaW5kVmFsdWU9XCJpZFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1wcnktc2VsZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJvdGhlcl9saW1pdFwiXG4gICAgICAgICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiISFvcHRpb25zQ29weS5hYnNjaXNzYS5saW1pdC5pc1RpbWVMaW1pdFwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJkYXRlX2xpbWl0XCI+e3sgJ0Bwcnkud2lkZ2V0LmNoYXJ0LnRpbWVJbnRlcnZhbCcgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlVGltZUxpbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgW2l0ZW1zQXNPcHRpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiW1xuICAgICAgICAgICAgICAgICAgICB7IGlkOiAnc2Vjb25kJyB9LFxuICAgICAgICAgICAgICAgICAgICB7IGlkOiAnbWludXRlJyB9LFxuICAgICAgICAgICAgICAgICAgICB7IGlkOiAnaG91cicgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBpZDogJ2RheScgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBpZDogJ3dlZWsnIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgaWQ6ICdtb250aCcgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBpZDogJ3F1YXJ0ZXInIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgaWQ6ICd5ZWFyJyB9XG4gICAgICAgICAgICAgICAgICBdXCJcbiAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cIm9wdGlvbnNDb3B5LmFic2Npc3NhLmxpbWl0LmludGVydmFsXCJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbFRyYW5zbGF0ZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIGJhc2VUcmFuc2xhdGU9XCJAcHJ5LndpZGdldC5jaGFydC50aW1lLlwiXG4gICAgICAgICAgICAgICAgICBiaW5kTGFiZWw9XCJpZFwiXG4gICAgICAgICAgICAgICAgICBiaW5kVmFsdWU9XCJpZFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImEtcHJ5LXNlbGVjdFwiXG4gICAgICAgICAgICAgICAgICBpZD1cImRhdGVfbGltaXRcIlxuICAgICAgICAgICAgICAgID48L3ByeS1zZWxlY3Q+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJvLXNldHRpbmdzX19wb3B1cF9fY29udGVudF9fZmllbGRzIC1jb25kZW5zZWRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwib3BlcmF0aW9uc1wiPnt7ICdAcHJ5LndpZGdldC5jaGFydC5vcGVyYXRpb24udGl0bGUnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VPcGVyYXRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtpdGVtc0FzT3B0aW9uXT1cInRydWVcIlxuICAgICAgICAgICAgICBbaXRlbXNdPVwib3BlcmF0aW9ucyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgIFtuZ01vZGVsXT1cIm9wdGlvbnNDb3B5Lm9yZGluYXRlLm9wZXJhdGlvblwiXG4gICAgICAgICAgICAgIGJpbmRMYWJlbD1cImxhYmVsXCJcbiAgICAgICAgICAgICAgYmluZFZhbHVlPVwiaWRcIlxuICAgICAgICAgICAgICBjbGFzcz1cImEtcHJ5LXNlbGVjdFwiXG4gICAgICAgICAgICAgIGlkPVwib3BlcmF0aW9uc1wiXG4gICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9wdGlvbnNDb3B5Lm9yZGluYXRlLm9wZXJhdGlvbiAhPT0gT3BlcmF0aW9uLkNPVU5UXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJvcmRpbmF0ZVwiPnt7ICdAcHJ5LndpZGdldC5jaGFydC5vcmRpbmF0ZScgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VPcmRpbmF0ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbaXRlbXNBc09wdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbaXRlbXNdPVwib3JkaW5hdGVBdHRyaWJ1dGVzJCB8IGFzeW5jIHwgcHJ5U29ydERhdGEgOiBzb3J0QWN0aXZlIDogc29ydERpcmVjdGlvblwiXG4gICAgICAgICAgICAgICAgW25nTW9kZWxdPVwib3B0aW9uc0NvcHkub3JkaW5hdGUuYXR0cmlidXRlXCJcbiAgICAgICAgICAgICAgICBiaW5kTGFiZWw9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICBiaW5kVmFsdWU9XCJpZFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhLXByeS1zZWxlY3RcIlxuICAgICAgICAgICAgICAgIGlkPVwib3JkaW5hdGVcIlxuICAgICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8cHJ5LWVkaXQtaW5wdXRcbiAgICAgICAgICAgIGxhYmVsPVwiQHByeS53aWRnZXQuY2hhcnQuZGF0YUxhYmVsXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZU9yZGluYXRlTGFiZWwoJGV2ZW50KVwiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJvcHRpb25zQ29weS5vcmRpbmF0ZS5sYWJlbFwiXG4gICAgICAgICAgPjwvcHJ5LWVkaXQtaW5wdXQ+XG5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwidHJhbnNsYXRlVG9WZWdhVHlwZShjb3B5T3JkaW5hdGVGaWVsZD8udHlwZSkgPT09ICdxdWFudGl0YXRpdmUnXCIgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICAgIDxwcnktY2hlY2tib3ggKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlS2VlcDBPcmRpbmF0ZSgkZXZlbnQpXCIgW25nTW9kZWxdPVwib3B0aW9uc0NvcHkub3JkaW5hdGUua2VlcDBcIlxuICAgICAgICAgICAgICA+e3sgJ0Bwcnkud2lkZ2V0LmNoYXJ0Lm9yaWdpbicgfCBpMThuIH19XG4gICAgICAgICAgICA8L3ByeS1jaGVja2JveD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwib3B0aW9uc0NvcHkuZ3JhcGgudHlwZSAhPT0gR3JhcGhUeXBlLkRPTlVUICYmIG9wdGlvbnNDb3B5LmdyYXBoLnR5cGUgIT09IEdyYXBoVHlwZS5DSVJDVUxBUlwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1zZXR0aW5nc19fcG9wdXBfX2NvbnRlbnRfX2ZpZWxkcyAtY29uZGVuc2VkXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgICAgIDxwcnktY2hlY2tib3ggKG5nTW9kZWxDaGFuZ2UpPVwidG9nZ2xlR3JvdXBCeSgkZXZlbnQpXCIgW25nTW9kZWxdPVwiISFvcHRpb25zQ29weS5ncm91cEJ5XCJcbiAgICAgICAgICAgICAgICA+e3sgJ0Bwcnkud2lkZ2V0LmNoYXJ0Lmdyb3VwQnknIHwgaTE4biB9fVxuICAgICAgICAgICAgICA8L3ByeS1jaGVja2JveD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiISFvcHRpb25zQ29weS5ncm91cEJ5XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwiY2hhcnRfc2VyaWVzQXR0clwiPnt7ICdAcHJ5LndpZGdldC5jaGFydC5ncm91cEF0dHInIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZUdyb3VwQnkoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJvcHRpb25zQ29weS5ncm91cEJ5LmF0dHJpYnV0ZVwiXG4gICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiYWJzY2lzc2FBdHRyaWJ1dGVzJCB8IGFzeW5jIHwgcHJ5U29ydERhdGEgOiBzb3J0QWN0aXZlIDogc29ydERpcmVjdGlvblwiXG4gICAgICAgICAgICAgICAgICBiaW5kTGFiZWw9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICAgIGJpbmRWYWx1ZT1cImlkXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1wcnktc2VsZWN0XCJcbiAgICAgICAgICAgICAgICAgIGlkPVwiY2hhcnRfc2VyaWVzQXR0clwiXG4gICAgICAgICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgICAgICAgIDxwcnktc2NoZW1lLXBpY2tlclxuICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlQ29sb3JTY2hlbWUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJvcHRpb25zQ29weS5ncm91cEJ5LmNvbG9yXCJcbiAgICAgICAgICAgICAgICA+PC9wcnktc2NoZW1lLXBpY2tlcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgICAgICAgIDxwcnktY2hlY2tib3ggW25nTW9kZWxdPVwib3B0aW9uc0NvcHkuZ3JhcGguc3RhY2tlZFwiIChuZ01vZGVsQ2hhbmdlKT1cInRvZ2dsZVN0YWNrZWQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAge3sgJ0Bwcnkud2lkZ2V0LmNoYXJ0LnN0YWNrZWQnIHwgaTE4biB9fVxuICAgICAgICAgICAgICAgIDwvcHJ5LWNoZWNrYm94PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLXNldHRpbmdzX19wb3B1cF9fY29udGVudF9fZmllbGRzIC1jb25kZW5zZWRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICAgICAgPHByeS1jaGVja2JveCAobmdNb2RlbENoYW5nZSk9XCJ0b2dnbGVTb3J0KCRldmVudClcIiBbbmdNb2RlbF09XCIhIW9wdGlvbnNDb3B5LmdyYXBoLnNvcnRcIlxuICAgICAgICAgICAgICAgID57eyAnQHByeS53aWRnZXQuY2hhcnQuc29ydC50aXRsZScgfCBpMThuIH19XG4gICAgICAgICAgICAgIDwvcHJ5LWNoZWNrYm94PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiISFvcHRpb25zQ29weS5ncmFwaC5zb3J0XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwiY2hhcnRfc2VyaWVzQXR0clwiPkF0dHJpYnV0ZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZVNvcnRBdHRyaWJ1dGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJvcHRpb25zQ29weS5ncmFwaC5zb3J0LmF0dHJpYnV0ZVwiXG4gICAgICAgICAgICAgICAgICBbaXRlbXNdPVwic29ydEF0dHJpYnV0ZXMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgYmluZFZhbHVlPVwiaWRcIlxuICAgICAgICAgICAgICAgICAgYmluZExhYmVsPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLXByeS1zZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJjaGFydF9zb3J0QXR0clwiXG4gICAgICAgICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwiY2hhcnRfc2VyaWVzQXR0clwiPlNvcnQ8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VTb3J0RGlyZWN0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwib3B0aW9uc0NvcHkuZ3JhcGguc29ydC5kaXJlY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cInNvcnREaXJlY3Rpb25zXCJcbiAgICAgICAgICAgICAgICAgIGJpbmRWYWx1ZT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIGJpbmRMYWJlbD1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1wcnktc2VsZWN0XCJcbiAgICAgICAgICAgICAgICAgIGlkPVwiY2hhcnRfc29ydERpcmVjdGlvblwiXG4gICAgICAgICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwib3B0aW9uc0NvcHkuZ3JhcGgudHlwZSA9PT0gR3JhcGhUeXBlLkRPTlVUIHx8IG9wdGlvbnNDb3B5LmdyYXBoLnR5cGUgPT09IEdyYXBoVHlwZS5DSVJDVUxBUlwiXG4gICAgICAgID5cbiAgICAgICAgICA8cHJ5LXNjaGVtZS1waWNrZXJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZUNpcmNsZUNvbG9yU2NoZW1lKCRldmVudClcIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwib3B0aW9uc0NvcHkuY2lyY2xlQ29sb3JTY2hlbWVcIlxuICAgICAgICAgID48L3ByeS1zY2hlbWUtcGlja2VyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIG9wdGlvbnNDb3B5LmdyYXBoLnR5cGUgIT09IEdyYXBoVHlwZS5ET05VVCAmJlxuICAgICAgICAgICAgb3B0aW9uc0NvcHkuZ3JhcGgudHlwZSAhPT0gR3JhcGhUeXBlLkNJUkNVTEFSICYmXG4gICAgICAgICAgICAhb3B0aW9uc0NvcHkuZ3JvdXBCeVxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwiY2hhcnRfYmFzZUNvbG9yXCI+e3sgJ0Bwcnkud2lkZ2V0LmNoYXJ0LmNvbG9yJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgICAgPHByeS1jb2xvci1waWNrZXJcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlQmFzZUNvbG9yKCRldmVudClcIlxuICAgICAgICAgICAgICBbbmdNb2RlbF09XCJvcHRpb25zQ29weS5iYXNlQ29sb3JcIlxuICAgICAgICAgICAgICBpZD1cImNoYXJ0X2Jhc2VDb2xvclwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYS1wcnktc2VsZWN0XCJcbiAgICAgICAgICAgID48L3ByeS1jb2xvci1waWNrZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3RlbXBsYXRlT3B0aW9uIGxldC1pdGVtPVwiaXRlbVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWxpZ25lZC1vcHRpb25cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYS1jaGlwcyAtbWRcIiBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJpdGVtXCI+e3sgaXRlbSB9fTwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9wcnktc2V0dGluZ3M+XG4gIDwvcHJ5LXdpZGdldC1oZWFkZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihpc0NoYXJ0VmFsaWQkIHwgYXN5bmMpICYmICEobm9EYXRhJCB8IGFzeW5jKSAmJiAhKG5vQWdncmVnYXRpb25EYXRhJCB8IGFzeW5jKVwiPlxuICAgIDxkaXYgI3ZlZ2E+PC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJub0RhdGEkIHwgYXN5bmNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiby13aWRnZXRfX2Nob29zZS1wYXJhbWV0ZXJzXCI+XG4gICAgICA8aW1nXG4gICAgICAgIGNsYXNzPVwibm8tcmVzdWx0X19zZWFyY2hcIlxuICAgICAgICBzcmM9XCIuLi8uLi8uLi9hc3NldHMvc3Zncy9wcnlfcmVjaGVyY2hlX3Bhc19kZV9yZXN1bHRhdC5zdmdcIlxuICAgICAgICBhbHQ9XCJ7eyAnQHByeS53aWRnZXQuY2hhcnQubm9EYXRhJyB8IGkxOG4gfX1cIlxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgLz5cbiAgICAgIDxzcGFuIGNsYXNzPVwibm8tcmVzdWx0X190ZXh0XCI+e3sgJ0Bwcnkud2lkZ2V0LmNoYXJ0Lm5vRGF0YScgfCBpMThuIH19PC9zcGFuPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9wZW5EYXRhKClcIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5XCI+XG4gICAgICAgIDxwcnktaWNvbiBbaGVpZ2h0XT1cIjIwXCIgW3dpZHRoXT1cIjIwXCIgaWNvblN2Zz1cImNvbnRyb2xcIj48L3ByeS1pY29uPlxuICAgICAgICA8c3Bhbj57eyAnQHByeS53aWRnZXQudG9vbHRpcC5yZWFkU2VhcmNoJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEobm9EYXRhJCB8IGFzeW5jKSAmJiAobm9BZ2dyZWdhdGlvbkRhdGEkIHwgYXN5bmMpXCI+XG4gICAgPGRpdiBjbGFzcz1cIm8td2lkZ2V0X19jaG9vc2UtcGFyYW1ldGVyc1wiPlxuICAgICAgPGltZ1xuICAgICAgICBjbGFzcz1cIm5vLXJlc3VsdF9fc2VhcmNoXCJcbiAgICAgICAgc3JjPVwiLi4vLi4vLi4vYXNzZXRzL3N2Z3MvcHJ5X3JlY2hlcmNoZV9wYXNfZGVfcmVzdWx0YXQuc3ZnXCJcbiAgICAgICAgYWx0PVwie3sgJ0Bwcnkud2lkZ2V0LmNoYXJ0LmFnZ05vUmVzdWx0JyB8IGkxOG4gfX1cIlxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgLz5cbiAgICAgIDxzcGFuIGNsYXNzPVwibm8tcmVzdWx0X190ZXh0XCI+e3sgJ0Bwcnkud2lkZ2V0LmNoYXJ0LmFnZ05vUmVzdWx0JyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib3BlblNldHRpbmdzKClcIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5XCI+XG4gICAgICAgIDxwcnktaWNvbiBbaGVpZ2h0XT1cIjIwXCIgW3dpZHRoXT1cIjIwXCIgaWNvblN2Zz1cImNvbnRyb2xcIj48L3ByeS1pY29uPlxuICAgICAgICA8c3Bhbj57eyAnQHByeS53aWRnZXQuc2V0dGluZ3MudGl0bGUnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIShub0RhdGEkIHwgYXN5bmMpICYmICEobm9BZ2dyZWdhdGlvbkRhdGEkIHwgYXN5bmMpICYmICEoaXNDaGFydFZhbGlkJCB8IGFzeW5jKVwiPlxuICAgIDxkaXYgY2xhc3M9XCJvLXdpZGdldF9fY2hvb3NlLXBhcmFtZXRlcnNcIj5cbiAgICAgIDxpbWdcbiAgICAgICAgY2xhc3M9XCJuby1yZXN1bHRfX3NlYXJjaFwiXG4gICAgICAgIHNyYz1cIi4uLy4uLy4uL2Fzc2V0cy9zdmdzL3ByeV9yZWNoZXJjaGVfcGFzX2RlX3Jlc3VsdGF0LnN2Z1wiXG4gICAgICAgIGFsdD1cInt7ICdAcHJ5LndpZGdldC5jaGFydC5jaG9vc2VQYXJhbWV0ZXJzJyB8IGkxOG4gfX1cIlxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgLz5cbiAgICAgIDxzcGFuIGNsYXNzPVwibm8tcmVzdWx0X190ZXh0XCI+e3sgJ0Bwcnkud2lkZ2V0LmNoYXJ0LmNob29zZVBhcmFtZXRlcnMnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvcGVuU2V0dGluZ3MoKVwiIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIj5cbiAgICAgICAgPHByeS1pY29uIFtoZWlnaHRdPVwiMjBcIiBbd2lkdGhdPVwiMjBcIiBpY29uU3ZnPVwiY29udHJvbFwiPjwvcHJ5LWljb24+XG4gICAgICAgIDxzcGFuPnt7ICdAcHJ5LndpZGdldC5zZXR0aW5ncy50aXRsZScgfCBpMThuIH19PC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=