@eo-sdk/client 11.15.0-rc.2 → 11.15.0-rc.4

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 (27) hide show
  1. package/app/eo-client/about-state/about-state.component.d.ts +1 -1
  2. package/app/eo-client/about-state/about-state.component.d.ts.map +1 -1
  3. package/app/eo-framework/actions/index.d.ts +40 -0
  4. package/app/eo-framework/actions/index.d.ts.map +1 -1
  5. package/app/eo-framework/form-elements/id-reference/id-reference.component.d.ts.map +1 -1
  6. package/app/eo-framework/grid/grid.component.d.ts.map +1 -1
  7. package/app/eo-framework/list-container/list-container.component.d.ts.map +1 -1
  8. package/app/eo-framework/result-list/result-list.component.d.ts +1 -0
  9. package/app/eo-framework/result-list/result-list.component.d.ts.map +1 -1
  10. package/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.d.ts.map +1 -1
  11. package/assets/_default/api/xrechnung/xslt/xrechnung-html.uni.sef.json +1 -1
  12. package/assets/_default/api/xrechnung/xslt/xrechnung-html.uni.xsl +0 -12
  13. package/esm2022/app/eo-client/about-state/about-state.component.mjs +4 -4
  14. package/esm2022/app/eo-framework/actions/index.mjs +41 -1
  15. package/esm2022/app/eo-framework/form-elements/codesystem/codesystem.component.mjs +3 -3
  16. package/esm2022/app/eo-framework/form-elements/id-reference/id-reference.component.mjs +6 -5
  17. package/esm2022/app/eo-framework/grid/filters/codesystem-filter.component.mjs +3 -3
  18. package/esm2022/app/eo-framework/grid/grid.component.mjs +2 -1
  19. package/esm2022/app/eo-framework/list-container/list-container.component.mjs +6 -2
  20. package/esm2022/app/eo-framework/result-list/result-list.component.mjs +12 -1
  21. package/esm2022/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.mjs +2 -2
  22. package/esm2022/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.mjs +6 -2
  23. package/esm2022/app/eo-framework-core/api/grid.service.mjs +3 -3
  24. package/esm2022/app/eo-framework-core/error-handler/error-handler.service.mjs +2 -2
  25. package/fesm2022/eo-sdk-client.mjs +51 -31
  26. package/fesm2022/eo-sdk-client.mjs.map +1 -1
  27. package/package.json +3 -3
@@ -76,7 +76,11 @@ export class ListContainerComponent {
76
76
  showActions(selectedData, target = 'DMS_OBJECT') {
77
77
  let selection = selectedData || this.selection.find(this.applySelection.out).get();
78
78
  let observables = selection.map(data => target === 'DMS_OBJECT' ? this.dmsService.getDmsObjectByParams(this.parseDmsParams(data)) : observableOf(data));
79
- observableForkJoin(observables).subscribe((res) => this.actionService.showActions(res, target));
79
+ this.loading = true;
80
+ observableForkJoin(observables).subscribe((res) => {
81
+ this.loading = false;
82
+ this.actionService.showActions(res, target);
83
+ });
80
84
  }
81
85
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ListContainerComponent, deps: [{ token: i1.SelectionService }, { token: i2.Router }, { token: i3.DmsService }, { token: i4.ActionService }], target: i0.ɵɵFactoryTarget.Component }); }
82
86
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: ListContainerComponent, selector: "eo-list-container", inputs: { applySelection: "applySelection", applyVersion: "applyVersion", loading: "loading", tabs: "tabs", parseDmsParams: "parseDmsParams" }, queries: [{ propertyName: "contentGrid", first: true, predicate: GridComponent, descendants: true }], ngImport: i0, template: "<div class=\"eo-head\" [ngClass]=\"{'eo-head-tabs': tabs}\">\n <ng-content select=\".eo-header\"></ng-content>\n</div>\n<ng-content select=\".eo-body\">\n</ng-content>\n<div class=\"loading-container\" *ngIf=\"loading\"><eo-loading-spinner [size]=\"'medium'\"></eo-loading-spinner></div>\n", styles: [":host{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;height:100%;width:100%;background:var(--color-white)}:host .loading-container{height:100%;display:flex;justify-content:center;align-items:center}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.LoadingSpinnerComponent, selector: "eo-loading-spinner", inputs: ["size", "mode"] }] }); }
@@ -98,4 +102,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
98
102
  }], parseDmsParams: [{
99
103
  type: Input
100
104
  }] } });
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvbGlzdC1jb250YWluZXIvbGlzdC1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvbGlzdC1jb250YWluZXIvbGlzdC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxRQUFRLElBQUksa0JBQWtCLEVBQUUsRUFBRSxJQUFJLFlBQVksRUFBRSxZQUFZLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFDcEcsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUc1RSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7O0FBU3JELE1BQU0sT0FBTyxzQkFBc0I7SUFNakMsSUFDSSxXQUFXLENBQUMsTUFBcUI7UUFDbkMsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLENBQUM7SUFDSCxDQUFDO0lBUUQsWUFBb0IsU0FBMkIsRUFDM0IsTUFBYyxFQUFVLFVBQXNCLEVBQVUsYUFBNEI7UUFEcEYsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLGVBQVUsR0FBVixVQUFVLENBQVk7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FB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LElBQUk7c0JBQVosS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDZWxsUmVuZGVyZXJ9IGZyb20gJy4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvYXBpL2dyaWQuc2VydmljZSc7XG5pbXBvcnQge2ZvcmtKb2luIGFzIG9ic2VydmFibGVGb3JrSm9pbiwgb2YgYXMgb2JzZXJ2YWJsZU9mLCBBc3luY1N1YmplY3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0NvbXBvbmVudCwgQ29udGVudENoaWxkLCBJbnB1dCwgQWZ0ZXJWaWV3SW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1NlbGVjdGlvbkNvbmZpZywgU2VsZWN0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvc2VsZWN0aW9uL3NlbGVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7Um91dGVyLCBOYXZpZ2F0aW9uRXh0cmFzfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtHcmlkQ29tcG9uZW50fSBmcm9tICcuLi9ncmlkL2dyaWQuY29tcG9uZW50JztcbmltcG9ydCB7QWN0aW9uU2VydmljZX0gZnJvbSAnLi4vYWN0aW9ucy9hY3Rpb24tc2VydmljZS9hY3Rpb24uc2VydmljZSc7XG5pbXBvcnQge0Rtc09iamVjdCwgRG1zU2VydmljZSwgVXRpbHN9IGZyb20gJ0Blby1zZGsvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLWxpc3QtY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xpc3QtY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGlzdC1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBMaXN0Q29udGFpbmVyQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgcHVibGljIGdyaWRDb3VudDogYW55O1xuICBlb0dyaWQ6IEdyaWRDb21wb25lbnQ7XG4gIGVvR3JpZFN1YmplY3QgPSBuZXcgQXN5bmNTdWJqZWN0PEdyaWRDb21wb25lbnQ+KCk7XG5cbiAgQENvbnRlbnRDaGlsZChHcmlkQ29tcG9uZW50KVxuICBzZXQgY29udGVudEdyaWQoZW9HcmlkOiBHcmlkQ29tcG9uZW50KSB7XG4gICAgaWYgKGVvR3JpZCkge1xuICAgICAgdGhpcy5lb0dyaWQgPSBlb0dyaWQ7XG4gICAgICB0aGlzLmVvR3JpZFN1YmplY3QubmV4dCh0aGlzLmVvR3JpZCk7XG4gICAgICB0aGlzLmVvR3JpZFN1YmplY3QuY29tcGxldGUoKTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKSBhcHBseVNlbGVjdGlvbjogU2VsZWN0aW9uQ29uZmlnID0ge307XG4gIEBJbnB1dCgpIGFwcGx5VmVyc2lvbiA9IGZhbHNlO1xuICBASW5wdXQoKSBsb2FkaW5nID0gdHJ1ZTtcbiAgQElucHV0KCkgdGFicyA9IHRydWU7XG4gIEBJbnB1dCgpIHBhcnNlRG1zUGFyYW1zOiAoZGF0YSkgPT4gYW55ID0gKGRhdGE6IGFueSkgPT4gZGF0YTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNlbGVjdGlvbjogU2VsZWN0aW9uU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBkbXNTZXJ2aWNlOiBEbXNTZXJ2aWNlLCBwcml2YXRlIGFjdGlvblNlcnZpY2U6IEFjdGlvblNlcnZpY2UpIHtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgfVxuXG4gIG9uQ291bnRDaGFuZ2VkKGRhdGE6IGFueSkge1xuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIHRoaXMuZ3JpZENvdW50ID0gZGF0YTtcbiAgfVxuXG4gIG9uRm9jdXNDaGFuZ2VkKGRhdGE6IGFueSkge1xuICAgIHRoaXMuc2VsZWN0aW9uXG4gICAgICAuZmluZCh0aGlzLmFwcGx5U2VsZWN0aW9uLm91dClcbiAgICAgIC5mb2N1cyhkYXRhKTtcbiAgfVxuXG4gIG9uRG91YmxlQ2xpY2soZXZlbnQ6IGFueSwgZm9yY2VPcGVuT2JqZWN0ID0gZmFsc2UpIHtcblxuICAgIGNvbnN0IHtpZCwgdHlwZSwgdmVyc2lvbiwgaW50ZW50fSA9IHRoaXMucGFyc2VEbXNQYXJhbXMoZXZlbnQuZGF0YSk7XG4gICAgaWYgKGlkKSB7XG4gICAgICByZXR1cm4gdGhpcy5vcGVuT2JqZWN0KGlkLCB0eXBlLCB2ZXJzaW9uLCBpbnRlbnQsIGV2ZW50LmV2ZW50LmN0cmxLZXksIGZvcmNlT3Blbk9iamVjdCk7XG4gICAgfVxuICB9XG5cbiAgb25TZWxlY3Rpb25DaGFuZ2VkKHNlbGVjdGVkRGF0YTogYW55W10pIHtcbiAgICB0aGlzLnNlbGVjdGlvbi5maW5kKHRoaXMuYXBwbHlTZWxlY3Rpb24ub3V0KS5zZXQoc2VsZWN0ZWREYXRhKTtcbiAgfVxuXG4gIG9uQ29udGV4dE1lbnUoc2VsZWN0ZWREYXRhPzogYW55W10sIHRhcmdldD86IHN0cmluZykge1xuICAgIHRoaXMuc2hvd0FjdGlvbnMoc2VsZWN0ZWREYXRhLCB0YXJnZXQpO1xuICB9XG5cbiAgb3Blbk9iamVjdChpZCwgX3R5cGU/LCB2ZXJzaW9uPywgaW50ZW50PywgbmV3VGFiID0gZmFsc2UsIGZvcmNlT3Blbk9iamVjdCA9IGZhbHNlKSB7XG4gICAgaWYgKHRoaXMucm91dGVyLnVybC5zdGFydHNXaXRoKCcvb2JqZWN0JykgJiYgIWZvcmNlT3Blbk9iamVjdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2ZXJzaW9uID0gdGhpcy5hcHBseVZlcnNpb24gPyB2ZXJzaW9uIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zOiBOYXZpZ2F0aW9uRXh0cmFzID0ge3F1ZXJ5UGFyYW1zOiB7J3R5cGUnOiBfdHlwZSwgdmVyc2lvbiwgaW50ZW50fX07XG4gICAgaWYgKG5ld1RhYikge1xuICAgICAgd2luZG93Lm9wZW4oQ2VsbFJlbmRlcmVyLndpbmRvd1VSSSh0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFsnb2JqZWN0JywgaWRdLCBxdWVyeVBhcmFtcykpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvb2JqZWN0JywgaWRdLCBxdWVyeVBhcmFtcyk7XG4gICAgfVxuICB9XG5cbiAgbG9hZE9iamVjdChpZCwgX3R5cGU/LCB2ZXJzaW9uPywgaW50ZW50Pyk6IFN1YnNjcmlwdGlvbiB7XG4gICAgdmVyc2lvbiA9IHRoaXMuYXBwbHlWZXJzaW9uID8gdmVyc2lvbiA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gdGhpcy5kbXNTZXJ2aWNlXG4gICAgICAuZ2V0RG1zT2JqZWN0KGlkLCBfdHlwZSwgdmVyc2lvbiwgaW50ZW50KVxuICAgICAgLnN1YnNjcmliZSgocmVzOiBEbXNPYmplY3QpID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uZmluZCh0aGlzLmFwcGx5U2VsZWN0aW9uLm91dCkuZm9jdXMocmVzKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgc2hvd0FjdGlvbnMoc2VsZWN0ZWREYXRhPzogYW55W10sIHRhcmdldCA9ICdETVNfT0JKRUNUJykge1xuICAgIGxldCBzZWxlY3Rpb24gPSBzZWxlY3RlZERhdGEgfHwgdGhpcy5zZWxlY3Rpb24uZmluZCh0aGlzLmFwcGx5U2VsZWN0aW9uLm91dCkuZ2V0KCk7XG4gICAgbGV0IG9ic2VydmFibGVzID0gc2VsZWN0aW9uLm1hcChkYXRhID0+IHRhcmdldCA9PT0gJ0RNU19PQkpFQ1QnID8gdGhpcy5kbXNTZXJ2aWNlLmdldERtc09iamVjdEJ5UGFyYW1zKHRoaXMucGFyc2VEbXNQYXJhbXMoZGF0YSkpIDogb2JzZXJ2YWJsZU9mKGRhdGEpKTtcbiAgICBvYnNlcnZhYmxlRm9ya0pvaW4ob2JzZXJ2YWJsZXMpLnN1YnNjcmliZSgocmVzOiBhbnlbXSkgPT4gdGhpcy5hY3Rpb25TZXJ2aWNlLnNob3dBY3Rpb25zKHJlcywgdGFyZ2V0KSk7XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cImVvLWhlYWRcIiBbbmdDbGFzc109XCJ7J2VvLWhlYWQtdGFicyc6IHRhYnN9XCI+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIi5lby1oZWFkZXJcIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbjxuZy1jb250ZW50IHNlbGVjdD1cIi5lby1ib2R5XCI+XG48L25nLWNvbnRlbnQ+XG48ZGl2IGNsYXNzPVwibG9hZGluZy1jb250YWluZXJcIiAqbmdJZj1cImxvYWRpbmdcIj48ZW8tbG9hZGluZy1zcGlubmVyIFtzaXplXT1cIidtZWRpdW0nXCI+PC9lby1sb2FkaW5nLXNwaW5uZXI+PC9kaXY+XG4iXX0=
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvbGlzdC1jb250YWluZXIvbGlzdC1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvbGlzdC1jb250YWluZXIvbGlzdC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxRQUFRLElBQUksa0JBQWtCLEVBQUUsRUFBRSxJQUFJLFlBQVksRUFBRSxZQUFZLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFDcEcsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUc1RSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7O0FBU3JELE1BQU0sT0FBTyxzQkFBc0I7SUFNakMsSUFDSSxXQUFXLENBQUMsTUFBcUI7UUFDbkMsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLENBQUM7SUFDSCxDQUFDO0lBUUQsWUFBb0IsU0FBMkIsRUFDM0IsTUFBYyxFQUFVLFVBQXNCLEVBQVUsYUFBNEI7UUFEcEYsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLGVBQVUsR0FBVixVQUFVLENBQVk7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQWxCeEcsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQVd6QyxtQkFBYyxHQUFvQixFQUFFLENBQUM7UUFDckMsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsWUFBTyxHQUFHLElBQUksQ0FBQztRQUNmLFNBQUksR0FBRyxJQUFJLENBQUM7UUFDWixtQkFBYyxHQUFrQixDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDO0lBSTdELENBQUM7SUFFRCxlQUFlO0lBQ2YsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFTO1FBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxjQUFjLENBQUMsSUFBUztRQUN0QixJQUFJLENBQUMsU0FBUzthQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQzthQUM3QixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFVLEVBQUUsZUFBZSxHQUFHLEtBQUs7UUFFL0MsTUFBTSxFQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BFLElBQUksRUFBRSxFQUFFLENBQUM7WUFDUCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQzFGLENBQUM7SUFDSCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsWUFBbUI7UUFDcEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELGFBQWEsQ0FBQyxZQUFvQixFQUFFLE1BQWU7UUFDakQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELFVBQVUsQ0FBQyxFQUFFLEVBQUUsS0FBTSxFQUFFLE9BQVEsRUFBRSxNQUFPLEVBQUUsTUFBTSxHQUFHLEtBQUssRUFBRSxlQUFlLEdBQUcsS0FBSztRQUMvRSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzlELE9BQU87UUFDVCxDQUFDO1FBQ0QsT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2xELE1BQU0sV0FBVyxHQUFxQixFQUFDLFdBQVcsRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBQyxFQUFDLENBQUM7UUFDdEYsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUYsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNyRCxDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxFQUFFLEVBQUUsS0FBTSxFQUFFLE9BQVEsRUFBRSxNQUFPO1FBQ3RDLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNsRCxPQUFPLElBQUksQ0FBQyxVQUFVO2FBQ25CLFlBQVksQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUM7YUFDeEMsU0FBUyxDQUFDLENBQUMsR0FBYyxFQUFFLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVyxDQUFDLFlBQW9CLEVBQUUsTUFBTSxHQUFHLFlBQVk7UUFDckQsSUFBSSxTQUFTLEdBQUcsWUFBWSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDbkYsSUFBSSxXQUFXLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN4SixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFVLEVBQUUsRUFBRTtZQUN2RCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNyQixJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQXJGVSxzQkFBc0I7a0dBQXRCLHNCQUFzQixrUEFNbkIsYUFBYSxnRENwQjdCLG9TQU1BOzsyRkRRYSxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0UsbUJBQW1COytKQVd6QixXQUFXO3NCQURkLFlBQVk7dUJBQUMsYUFBYTtnQkFTbEIsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2VsbFJlbmRlcmVyfSBmcm9tICcuLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL2FwaS9ncmlkLnNlcnZpY2UnO1xuaW1wb3J0IHtmb3JrSm9pbiBhcyBvYnNlcnZhYmxlRm9ya0pvaW4sIG9mIGFzIG9ic2VydmFibGVPZiwgQXN5bmNTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgSW5wdXQsIEFmdGVyVmlld0luaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTZWxlY3Rpb25Db25maWcsIFNlbGVjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3NlbGVjdGlvbi9zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQge1JvdXRlciwgTmF2aWdhdGlvbkV4dHJhc30gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7R3JpZENvbXBvbmVudH0gZnJvbSAnLi4vZ3JpZC9ncmlkLmNvbXBvbmVudCc7XG5pbXBvcnQge0FjdGlvblNlcnZpY2V9IGZyb20gJy4uL2FjdGlvbnMvYWN0aW9uLXNlcnZpY2UvYWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtEbXNPYmplY3QsIERtc1NlcnZpY2UsIFV0aWxzfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlby1saXN0LWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpc3QtY29udGFpbmVyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTGlzdENvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuXG4gIHB1YmxpYyBncmlkQ291bnQ6IGFueTtcbiAgZW9HcmlkOiBHcmlkQ29tcG9uZW50O1xuICBlb0dyaWRTdWJqZWN0ID0gbmV3IEFzeW5jU3ViamVjdDxHcmlkQ29tcG9uZW50PigpO1xuXG4gIEBDb250ZW50Q2hpbGQoR3JpZENvbXBvbmVudClcbiAgc2V0IGNvbnRlbnRHcmlkKGVvR3JpZDogR3JpZENvbXBvbmVudCkge1xuICAgIGlmIChlb0dyaWQpIHtcbiAgICAgIHRoaXMuZW9HcmlkID0gZW9HcmlkO1xuICAgICAgdGhpcy5lb0dyaWRTdWJqZWN0Lm5leHQodGhpcy5lb0dyaWQpO1xuICAgICAgdGhpcy5lb0dyaWRTdWJqZWN0LmNvbXBsZXRlKCk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KCkgYXBwbHlTZWxlY3Rpb246IFNlbGVjdGlvbkNvbmZpZyA9IHt9O1xuICBASW5wdXQoKSBhcHBseVZlcnNpb24gPSBmYWxzZTtcbiAgQElucHV0KCkgbG9hZGluZyA9IHRydWU7XG4gIEBJbnB1dCgpIHRhYnMgPSB0cnVlO1xuICBASW5wdXQoKSBwYXJzZURtc1BhcmFtczogKGRhdGEpID0+IGFueSA9IChkYXRhOiBhbnkpID0+IGRhdGE7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzZWxlY3Rpb246IFNlbGVjdGlvblNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgZG1zU2VydmljZTogRG1zU2VydmljZSwgcHJpdmF0ZSBhY3Rpb25TZXJ2aWNlOiBBY3Rpb25TZXJ2aWNlKSB7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gIH1cblxuICBvbkNvdW50Q2hhbmdlZChkYXRhOiBhbnkpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmdyaWRDb3VudCA9IGRhdGE7XG4gIH1cblxuICBvbkZvY3VzQ2hhbmdlZChkYXRhOiBhbnkpIHtcbiAgICB0aGlzLnNlbGVjdGlvblxuICAgICAgLmZpbmQodGhpcy5hcHBseVNlbGVjdGlvbi5vdXQpXG4gICAgICAuZm9jdXMoZGF0YSk7XG4gIH1cblxuICBvbkRvdWJsZUNsaWNrKGV2ZW50OiBhbnksIGZvcmNlT3Blbk9iamVjdCA9IGZhbHNlKSB7XG5cbiAgICBjb25zdCB7aWQsIHR5cGUsIHZlcnNpb24sIGludGVudH0gPSB0aGlzLnBhcnNlRG1zUGFyYW1zKGV2ZW50LmRhdGEpO1xuICAgIGlmIChpZCkge1xuICAgICAgcmV0dXJuIHRoaXMub3Blbk9iamVjdChpZCwgdHlwZSwgdmVyc2lvbiwgaW50ZW50LCBldmVudC5ldmVudC5jdHJsS2V5LCBmb3JjZU9wZW5PYmplY3QpO1xuICAgIH1cbiAgfVxuXG4gIG9uU2VsZWN0aW9uQ2hhbmdlZChzZWxlY3RlZERhdGE6IGFueVtdKSB7XG4gICAgdGhpcy5zZWxlY3Rpb24uZmluZCh0aGlzLmFwcGx5U2VsZWN0aW9uLm91dCkuc2V0KHNlbGVjdGVkRGF0YSk7XG4gIH1cblxuICBvbkNvbnRleHRNZW51KHNlbGVjdGVkRGF0YT86IGFueVtdLCB0YXJnZXQ/OiBzdHJpbmcpIHtcbiAgICB0aGlzLnNob3dBY3Rpb25zKHNlbGVjdGVkRGF0YSwgdGFyZ2V0KTtcbiAgfVxuXG4gIG9wZW5PYmplY3QoaWQsIF90eXBlPywgdmVyc2lvbj8sIGludGVudD8sIG5ld1RhYiA9IGZhbHNlLCBmb3JjZU9wZW5PYmplY3QgPSBmYWxzZSkge1xuICAgIGlmICh0aGlzLnJvdXRlci51cmwuc3RhcnRzV2l0aCgnL29iamVjdCcpICYmICFmb3JjZU9wZW5PYmplY3QpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmVyc2lvbiA9IHRoaXMuYXBwbHlWZXJzaW9uID8gdmVyc2lvbiA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBxdWVyeVBhcmFtczogTmF2aWdhdGlvbkV4dHJhcyA9IHtxdWVyeVBhcmFtczogeyd0eXBlJzogX3R5cGUsIHZlcnNpb24sIGludGVudH19O1xuICAgIGlmIChuZXdUYWIpIHtcbiAgICAgIHdpbmRvdy5vcGVuKENlbGxSZW5kZXJlci53aW5kb3dVUkkodGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShbJ29iamVjdCcsIGlkXSwgcXVlcnlQYXJhbXMpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL29iamVjdCcsIGlkXSwgcXVlcnlQYXJhbXMpO1xuICAgIH1cbiAgfVxuXG4gIGxvYWRPYmplY3QoaWQsIF90eXBlPywgdmVyc2lvbj8sIGludGVudD8pOiBTdWJzY3JpcHRpb24ge1xuICAgIHZlcnNpb24gPSB0aGlzLmFwcGx5VmVyc2lvbiA/IHZlcnNpb24gOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHRoaXMuZG1zU2VydmljZVxuICAgICAgLmdldERtc09iamVjdChpZCwgX3R5cGUsIHZlcnNpb24sIGludGVudClcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogRG1zT2JqZWN0KSA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLmZpbmQodGhpcy5hcHBseVNlbGVjdGlvbi5vdXQpLmZvY3VzKHJlcyk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHNob3dBY3Rpb25zKHNlbGVjdGVkRGF0YT86IGFueVtdLCB0YXJnZXQgPSAnRE1TX09CSkVDVCcpIHtcbiAgICBsZXQgc2VsZWN0aW9uID0gc2VsZWN0ZWREYXRhIHx8IHRoaXMuc2VsZWN0aW9uLmZpbmQodGhpcy5hcHBseVNlbGVjdGlvbi5vdXQpLmdldCgpO1xuICAgIGxldCBvYnNlcnZhYmxlcyA9IHNlbGVjdGlvbi5tYXAoZGF0YSA9PiB0YXJnZXQgPT09ICdETVNfT0JKRUNUJyA/IHRoaXMuZG1zU2VydmljZS5nZXREbXNPYmplY3RCeVBhcmFtcyh0aGlzLnBhcnNlRG1zUGFyYW1zKGRhdGEpKSA6IG9ic2VydmFibGVPZihkYXRhKSk7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICBvYnNlcnZhYmxlRm9ya0pvaW4ob2JzZXJ2YWJsZXMpLnN1YnNjcmliZSgocmVzOiBhbnlbXSkgPT4ge1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLmFjdGlvblNlcnZpY2Uuc2hvd0FjdGlvbnMocmVzLCB0YXJnZXQpO1xuICAgIH0pO1xuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJlby1oZWFkXCIgW25nQ2xhc3NdPVwieydlby1oZWFkLXRhYnMnOiB0YWJzfVwiPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCIuZW8taGVhZGVyXCI+PC9uZy1jb250ZW50PlxuPC9kaXY+XG48bmctY29udGVudCBzZWxlY3Q9XCIuZW8tYm9keVwiPlxuPC9uZy1jb250ZW50PlxuPGRpdiBjbGFzcz1cImxvYWRpbmctY29udGFpbmVyXCIgKm5nSWY9XCJsb2FkaW5nXCI+PGVvLWxvYWRpbmctc3Bpbm5lciBbc2l6ZV09XCInbWVkaXVtJ1wiPjwvZW8tbG9hZGluZy1zcGlubmVyPjwvZGl2PlxuIl19
@@ -37,12 +37,23 @@ let ResultListComponent = class ResultListComponent {
37
37
  }
38
38
  else {
39
39
  if (query.name) {
40
+ this.storedQueryName = query.name;
40
41
  this.storedQueriesService.getStoredQueries$()
41
42
  .pipe(untilDestroyed(this))
42
43
  .subscribe((queriesSubscription) => {
43
44
  this.storedQuery = queriesSubscription.queries.filter(q => q.name === query.name)[0];
44
45
  });
45
46
  }
47
+ else if (this.storedQueryName) {
48
+ // we need this recheck, because in the ngAfterViewInit, we are resetting the query for the sortoptions,
49
+ // but this time it does not include the name anymore
50
+ this.storedQueriesService.getStoredQueries$()
51
+ .pipe(untilDestroyed(this))
52
+ .subscribe((queriesSubscription) => {
53
+ this.storedQuery = queriesSubscription.queries.filter(q => q.name === this.storedQueryName)[0];
54
+ this.storedQueryName = '';
55
+ });
56
+ }
46
57
  this._query = this.searchService.buildQuery(query);
47
58
  if (this._query) {
48
59
  this.defaultQuery = this.searchService.buildQuery(this._query.getQueryJson());
@@ -515,4 +526,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
515
526
  }], searchResult: [{
516
527
  type: Input
517
528
  }] } });
518
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvcmVzdWx0LWxpc3QvcmVzdWx0LWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvcmVzdWx0LWxpc3QvcmVzdWx0LWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFdkcsT0FBTyxFQUdMLFVBQVUsRUFFVixlQUFlLEVBR2YsV0FBVyxFQUVYLFVBQVUsRUFFUSxLQUFLLEVBQ3hCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBQyxZQUFZLEVBQUUsY0FBYyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDbkUsT0FBTyxFQUFDLEVBQUUsSUFBSSxZQUFZLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBRXJFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUlyRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sY0FBYyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRL0IsSUFBTSxtQkFBbUIsR0FBekIsTUFBTSxtQkFBbUI7O2FBWXZCLHVCQUFrQixHQUFHLHVDQUF1QyxBQUExQyxDQUEyQztJQTRDcEUsSUFDSSxLQUFLLENBQUMsS0FBVTtRQUNsQixJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQztRQUM3QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQzthQUFNLENBQUM7WUFD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QUN0QyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBQyxXQUFXLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFDLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxFQUFDLENBQUMsQ0FBQztJQUMzRyxDQUFDOzhHQTVlVSxtQkFBbUI7a0dBQW5CLG1CQUFtQixneUJDakNoQyxrNU1Bd0dBOztBRHZFYSxtQkFBbUI7SUFOL0IsWUFBWSxFQUFFO0dBTUYsbUJBQW1CLENBNmUvQjs7MkZBN2VZLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxnQkFBZ0I7a1hBVUwsSUFBSTtzQkFBeEIsU0FBUzt1QkFBQyxRQUFRO2dCQUNFLElBQUk7c0JBQXhCLFNBQVM7dUJBQUMsUUFBUTtnQkE0QlYsS0FBSztzQkFBYixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFJRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0ksa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBR0gsS0FBSztzQkFEUixLQUFLO2dCQW9ERixZQUFZO3NCQURmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbERlZiwgR3JpZE9wdGlvbnN9IGZyb20gJ0BhZy1ncmlkLWNvbW11bml0eS9jb3JlJztcbmltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmF2aWdhdGlvbkV4dHJhcywgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgQmFja2VuZFNlcnZpY2UsXG4gIENvbmZpZyxcbiAgRW5haW9FdmVudCxcbiAgRXZlbnRTZXJ2aWNlLFxuICBGaWVsZERlZmluaXRpb24sXG4gIExvY2FsU3RvcmFnZVNlcnZpY2UsXG4gIE9iamVjdFR5cGUsXG4gIFNlYXJjaFF1ZXJ5LCBTZWFyY2hSZXN1bHQsXG4gIFNlYXJjaFNlcnZpY2UsXG4gIFNvcnRPcHRpb24sXG4gIFN0b3JlZFF1ZXJpZXNTZXJ2aWNlLCBTdG9yZWRRdWVyeSxcbiAgVHJhbnNsYXRlU2VydmljZSwgVXRpbHNcbn0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7VW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZH0gZnJvbSAnQG5nbmVhdC91bnRpbC1kZXN0cm95JztcbmltcG9ydCB7b2YgYXMgb2JzZXJ2YWJsZU9mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7R3JpZFNlcnZpY2V9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL2FwaS9ncmlkLnNlcnZpY2UnO1xuaW1wb3J0IHtBcHBTZWFyY2hTZXJ2aWNlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9zZWFyY2gvYXBwLXNlYXJjaC5zZXJ2aWNlJztcbmltcG9ydCB7R3JpZEZpbHRlcn0gZnJvbSAnLi4vZ3JpZC9ncmlkLWZpbHRlci5tb2RlbCc7XG5pbXBvcnQge0dyaWRDb21wb25lbnR9IGZyb20gJy4uL2dyaWQvZ3JpZC5jb21wb25lbnQnO1xuaW1wb3J0IHtMaXN0Q29udGFpbmVyQ29tcG9uZW50fSBmcm9tICcuLi9saXN0LWNvbnRhaW5lcic7XG5pbXBvcnQge0dsb2JhbFNob3J0Y3V0Q29tcG9uZW50fSBmcm9tICcuLi9zaG9ydGN1dHMvZ2xvYmFsLXNob3J0Y3V0LWNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtTaG9ydGN1dH0gZnJvbSAnLi4vc2hvcnRjdXRzJztcbmltcG9ydCB7VW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUdyb3VwfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLXJlc3VsdC1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Jlc3VsdC1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVzdWx0LWxpc3QuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBSZXN1bHRMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgc2V0dXBGb3JtOiBVbnR5cGVkRm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7XG4gICAgZXhwb3J0Q1NWd2l0aFVybDogW2ZhbHNlXSxcbiAgfSk7XG5cblxuICBAVmlld0NoaWxkKCdlb0dyaWQnKSBncmlkOiBHcmlkQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdlb0xpc3QnKSBsaXN0OiBMaXN0Q29udGFpbmVyQ29tcG9uZW50O1xuICAvLyBmb3IgbGlzdHMgdGhhdCBleGNlZWQgdGhlIGNvbmZpZ3VyZWQgbWF4IHJlc3VsdCBzaXplLCBkYXRhIHdpbGwgYmUgZmV0Y2hlZCBpbiBjaHVua3NcbiAgcHJpdmF0ZSBWSVJUVUFMX0xJU1RfQ0hVTktfU0laRTogbnVtYmVyO1xuICByZXNvbHZlUmVmZXJlbmNlc0NzdjogYm9vbGVhbjtcbiAgcmVzb2x2ZVJlZmVyZW5jZXNDc3ZUaHJlc2hvbGQ6IG51bWJlcjtcbiAgc3RhdGljIENPTFVNTlNfREVGSU5JVElPTiA9ICdlby5mcmFtZXdvcmsuY2FjaGUuY29sdW1ucy5kZWZpbml0aW9uJztcbiAgZXhwb3J0Q1NWd2l0aFVybEtleSA9ICdlby5yZXN1bHRsaXN0LmNhY2hlLndpdGhVcmwnO1xuXG4gIHByaXZhdGUgX2V4cG9ydENTVndpdGhVcmwgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfcmVzdWx0OiBTZWFyY2hSZXN1bHQ7XG4gIHByaXZhdGUgX3F1ZXJ5OiBTZWFyY2hRdWVyeTtcbiAgcHJpdmF0ZSBfY2FjaGVkQ29sdW1uczogYW55W107XG4gIHByaXZhdGUgZGVmYXVsdFF1ZXJ5OiBTZWFyY2hRdWVyeTtcbiAgY3N2TG9hZGluZ1NwaW5uZXJWaXNpYmlsaXR5ID0gZmFsc2U7XG5cbiAgdmlzaWJsZUNvbmZpZyA9IGZhbHNlO1xuICBzaG93TG9hZGVyID0gZmFsc2U7XG4gIHB1YmxpYyB0b3RhbEhpdHM6IGFueTtcbiAgcHVibGljIGxpbWl0ZWRMaXN0ID0gZmFsc2U7XG4gIHB1YmxpYyByZXN1bHRHcmlkT3B0aW9uczogR3JpZE9wdGlvbnMgPSB7fTtcbiAgc2V0dGluZ3MgPSB7fTtcbiAgcXVlcnlTdWJ0aXRsZSA9ICcnO1xuICBzYXZlZFNlYXJjaENsaWNrZWQgPSBmYWxzZTtcbiAgc3RvcmVkUXVlcnk6IFN0b3JlZFF1ZXJ5O1xuICBzaG93RGlhbG9nRXhwb3J0ID0gZmFsc2U7XG4gIHNob3dXYXJuRXhwb3J0Q1NWVGhyZXNob2xkID0gZmFsc2U7XG4gIHNlbGVjdGVkT2JqZWN0SWQ6IHN0cmluZztcblxuICBASW5wdXQoKSB0aXRsZSA9ICcnO1xuICBASW5wdXQoKSBjb25maWdUeXBlOiBPYmplY3RUeXBlIHwgbnVsbDtcbiAgQElucHV0KCkgY29uZmlnQ29udGV4dDogT2JqZWN0VHlwZSB8IG51bGw7XG5cbiAgLy8gSWYgc2V0IHRvIHRydWUgcXVlcnkgd2lsbCBiZSB0cmVhdGVkIGxpa2UgYSB0ZW1wb3Jhcnkgc2VhcmNoLlxuICAvLyBUaGF0IG1lYW5zLCBnbG9iYWwgc2VhcmNoIHdpbGwgbm90IGJlIGFmZmVjdGVkIChnbG9iYWwgcXVlcnkgd2lsbCBiZSByZXNldCBhZnRlciBleGVjdXRpb24pXG4gIEBJbnB1dCgpIGNsZWFyQWZ0ZXJFeGVjdXRlOiBib29sZWFuO1xuICBASW5wdXQoKSBlbXB0eU1lc3NhZ2UgPSAnJztcbiAgQElucHV0KCkgc2VsZWN0Rmlyc3QgPSB0cnVlO1xuICBASW5wdXQoKSBncmlkT3B0aW9uczogR3JpZE9wdGlvbnM7XG4gIEBJbnB1dCgpIGhhc0ljb24gPSBmYWxzZTtcbiAgQElucHV0KCkgcmVmZXJlbmNlID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBvblNlbGVjdGlvbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkZvY3VzQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uRG91YmxlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkNvbnRleHRNZW51ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25Db3VudENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvblJlZnJlc2ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvblJlc3VsdCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uUXVlcnlJbnZhbGlkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBxdWVyeShxdWVyeTogYW55KSB7XG4gICAgdGhpcy5zdG9yZWRRdWVyeSA9IHVuZGVmaW5lZDtcbiAgICBpZiAoIXF1ZXJ5KSB7XG4gICAgICB0aGlzLmludmFsaWRRdWVyeSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocXVlcnkubmFtZSkge1xuICAgICAgICB0aGlzLnN0b3JlZFF1ZXJpZXNTZXJ2aWNlLmdldFN0b3JlZFF1ZXJpZXMkKClcbiAgICAgICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKChxdWVyaWVzU3Vic2NyaXB0aW9uOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmVkUXVlcnkgPSBxdWVyaWVzU3Vic2NyaXB0aW9uLnF1ZXJpZXMuZmlsdGVyKHEgPT4gcS5uYW1lID09PSBxdWVyeS5uYW1lKVswXTtcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3F1ZXJ5ID0gdGhpcy5zZWFyY2hTZXJ2aWNlLmJ1aWxkUXVlcnkocXVlcnkpO1xuICAgICAgaWYgKHRoaXMuX3F1ZXJ5KSB7XG4gICAgICAgIHRoaXMuZGVmYXVsdFF1ZXJ5ID0gdGhpcy5zZWFyY2hTZXJ2aWNlLmJ1aWxkUXVlcnkodGhpcy5fcXVlcnkuZ2V0UXVlcnlKc29uKCkpO1xuICAgICAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2Uuc2V0UXVlcnkodGhpcy5kZWZhdWx0UXVlcnkpO1xuICAgICAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2UuYWdncmVnYXRlKCk7XG5cbiAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5zZWFyY2hTZXJ2aWNlLmdldFJlc3VsdEZpZWxkRGVmaW5pdGlvbkNvbmZpZyh0aGlzLnF1ZXJ5KTtcbiAgICAgICAgdGhpcy5jb25maWdUeXBlID0gY29uZmlnLnR5cGU7XG4gICAgICAgIHRoaXMuY29uZmlnQ29udGV4dCA9IGNvbmZpZy5jb250ZXh0VHlwZTtcbiAgICAgICAgdGhpcy5zaG93TG9hZGVyID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlXG4gICAgICAgICAgLmdldENodW5rZWRSZXN1bHQodGhpcy5fcXVlcnksIDAsIHRoaXMuVklSVFVBTF9MSVNUX0NIVU5LX1NJWkUpXG4gICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICAgICAgdGhpcy5zaG93TG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmNsZWFyUXVlcnkodGhpcy5jbGVhckFmdGVyRXhlY3V0ZSk7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaFJlc3VsdCA9IHJlc3VsdDtcbiAgICAgICAgICB9LCBVdGlscy50aHJvdygoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNob3dMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJRdWVyeSh0cnVlKTtcbiAgICAgICAgICAgIHRoaXMuaW52YWxpZFF1ZXJ5KCk7XG4gICAgICAgICAgfSkpO1xuICAgICAgICB0aGlzLnF1ZXJ5U3VidGl0bGUgPSAnJztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnF1ZXJ5LnR5cGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdGhpcy5xdWVyeVN1YnRpdGxlICs9IHRoaXMucXVlcnkudHlwZXNbaV0ubGFiZWw7XG4gICAgICAgICAgaWYgKGkgIT09IHRoaXMucXVlcnkudHlwZXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgdGhpcy5xdWVyeVN1YnRpdGxlICs9ICcsICc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmludmFsaWRRdWVyeSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBxdWVyeSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcXVlcnk7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgc2VhcmNoUmVzdWx0KHJlc3VsdDogU2VhcmNoUmVzdWx0KSB7XG4gICAgdGhpcy5zZWxlY3RlZE9iamVjdElkID0gbnVsbDtcbiAgICAvLyB0b2RvOiBiYWNrZW5kIHNob3VsZCByZXNvbHZlIHF1ZXJ5LmZpZWxkcyBhbmQgcmV0dXJuIGNvbmZpZyBpbiBzcGVjaWZpYyBvcmRlclxuICAgIGNvbnN0IF9maWVsZHMgPSByZXN1bHQuZmllbGRzID8gb2JzZXJ2YWJsZU9mKHJlc3VsdC5maWVsZHMpIDpcbiAgICAgIHRoaXMuc2VhcmNoU2VydmljZS5mZXRjaFJlc3VsdEZpZWxkRGVmaW5pdGlvbih0aGlzLmNvbmZpZ1R5cGUsIHRoaXMuY29uZmlnQ29udGV4dCwgJ0FMTCcpO1xuICAgIF9maWVsZHMuc3Vic2NyaWJlKGZpZWxkcyA9PiB7XG4gICAgICBpZiAoZmllbGRzICYmIHRoaXMucXVlcnkgJiYgdGhpcy5xdWVyeS5maWVsZHMgJiYgdGhpcy5xdWVyeS5maWVsZHMubGVuZ3RoKSB7XG4gICAgICAgIGZpZWxkcy5lbGVtZW50cyA9IHRoaXMucXVlcnkuZmllbGRzLm1hcChmID0+IGZpZWxkcy5lbGVtZW50cy5maW5kKGUgPT4gZiA9PT0gZS5oaXRuYW1lKSk7XG4gICAgICB9XG4gICAgICByZXN1bHQuZmllbGRzID0gZmllbGRzIHx8IG5ldyBGaWVsZERlZmluaXRpb24oKTtcbiAgICAgIHRoaXMuX3Jlc3VsdCA9IHJlc3VsdDtcbiAgICAgIHRoaXMucHJvY2Vzc1Jlc3VsdHModGhpcy5fcmVzdWx0KTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBzZWFyY2hSZXN1bHQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Jlc3VsdDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29uZmlnOiBDb25maWcsXG4gICAgcHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwdWJsaWMgZ3JpZEFwaTogR3JpZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kU2VydmljZSxcbiAgICBwcml2YXRlIGFwcFNlYXJjaFNlcnZpY2U6IEFwcFNlYXJjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzZWFyY2hTZXJ2aWNlOiBTZWFyY2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogTG9jYWxTdG9yYWdlU2VydmljZSxcbiAgICBwcml2YXRlIHN0b3JlZFF1ZXJpZXNTZXJ2aWNlOiBTdG9yZWRRdWVyaWVzU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgZmI6IFVudHlwZWRGb3JtQnVpbGRlclxuICApIHtcbiAgICB0aGlzLlZJUlRVQUxfTElTVF9DSFVOS19TSVpFID0gdGhpcy5jb25maWcuZ2V0UmF3KCdzZWFyY2gubGltaXQnKSBhcyBudW1iZXI7XG4gICAgdGhpcy5yZXNvbHZlUmVmZXJlbmNlc0NzdiA9IHRoaXMuY29uZmlnLmdldFJhdygnc2VhcmNoLnJlc29sdmVSZWZlcmVuY2VzQ1NWJykgYXMgYm9vbGVhbiB8fCBmYWxzZTtcbiAgICB0aGlzLnJlc29sdmVSZWZlcmVuY2VzQ3N2VGhyZXNob2xkID0gdGhpcy5jb25maWcuZ2V0UmF3KCdzZWFyY2gucmVzb2x2ZVJlZmVyZW5jZXNDU1ZUaHJlc2hvbGQnKSBhcyBudW1iZXIgfHwgMTAwMDA7XG4gICAgdGhpcy5fY2FjaGVkQ29sdW1ucyA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0SXRlbShSZXN1bHRMaXN0Q29tcG9uZW50LkNPTFVNTlNfREVGSU5JVElPTikgfHwgW107XG4gICAgdGhpcy5zZXR1cEZvcm0udmFsdWVDaGFuZ2VzLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZSgoXykgPT4ge1xuICAgICAgdGhpcy5fZXhwb3J0Q1NWd2l0aFVybCA9IHRoaXMuc2V0dXBGb3JtLmdldCgnZXhwb3J0Q1NWd2l0aFVybCcpLnZhbHVlO1xuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRJdGVtKHRoaXMuZXhwb3J0Q1NWd2l0aFVybEtleSwgdGhpcy5zZXR1cEZvcm0uZ2V0KCdleHBvcnRDU1Z3aXRoVXJsJykudmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgY2xlYXJRdWVyeShjbGVhckFmdGVyRXhlY3V0ZSkge1xuICAgIGlmIChjbGVhckFmdGVyRXhlY3V0ZSkge1xuICAgICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLmNsZWFyUXVlcnkoKTtcbiAgICB9XG4gIH1cblxuICBpbnZhbGlkUXVlcnkoKSB7XG4gICAgdGhpcy5vblF1ZXJ5SW52YWxpZC5lbWl0KCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNlbGVjdGVkT2JqZWN0SWQgPSBudWxsO1xuICAgIHRoaXMuZXZlbnRTZXJ2aWNlXG4gICAgICAub24oRW5haW9FdmVudC5ETVNfT0JKRUNUX0RFTEVURUQpXG4gICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmdyaWQpIHtcbiAgICAgICAgICB0aGlzLmdyaWQudXBkYXRlUm93cyh0aGlzLmJhY2tlbmQudXBkYXRlKFtyZXMuZGF0YV0sIFt7aWQ6IHJlcy5kYXRhLmlkfV0pKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgdGhpcy5fZXhwb3J0Q1NWd2l0aFVybCA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSh0aGlzLmV4cG9ydENTVndpdGhVcmxLZXkpIHx8IHRoaXMuc2V0dXBGb3JtLmdldCgnZXhwb3J0Q1NWd2l0aFVybCcpLnZhbHVlO1xuICAgIHRoaXMuc2V0dXBGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgZXhwb3J0Q1NWd2l0aFVybDogdGhpcy5fZXhwb3J0Q1NWd2l0aFVybFxuICAgIH0pO1xuXG4gICAgdGhpcy5ldmVudFNlcnZpY2VcbiAgICAgIC5vbihFbmFpb0V2ZW50LkRNU19PQkpFQ1RfVVBEQVRFRClcbiAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZ3JpZCAmJiByZXMuZGF0YS5kYXRhKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVSb3cocmVzLmRhdGEuaWQsIHJlcy5kYXRhLmRhdGEpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmdyaWQgJiYgdGhpcy5fcXVlcnkpIHtcbiAgICAgICAgdGhpcy5fcXVlcnkuc29ydE9wdGlvbnMgPSAodGhpcy5ncmlkLmFwaS5nZXRDb2x1bW5TdGF0ZSgpIHx8IFtdKVxuICAgICAgICAgIC5tYXAobW9kZWwgPT4gbmV3IFNvcnRPcHRpb24oR3JpZFNlcnZpY2UucW5hbWVGb3JtYXR0ZXIobW9kZWwuY29sSWQgKyB0aGlzLnBvc3RmaXhTb3J0KG1vZGVsLmNvbElkKSksIG1vZGVsLnNvcnQpKTtcbiAgICAgICAgdGhpcy5xdWVyeSA9IHRoaXMuX3F1ZXJ5O1xuICAgICAgfVxuICAgIH0sIDIwMCk7XG4gIH1cblxuICAvLyBzaG9ydGN1dCBhY3Rpb25zXG4gIHNob3J0Y3V0czogR2xvYmFsU2hvcnRjdXRDb21wb25lbnQgPSB7XG4gICAgaWQ6ICdlby53b3Jrc3BhY2Uud2lkZ2V0LmhpdGxpc3QubGFiZWwnLFxuICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby53b3Jrc3BhY2Uud2lkZ2V0LmhpdGxpc3QubGFiZWwnKSxcbiAgICBsYWJlbEtleTogJ2VvLndvcmtzcGFjZS53aWRnZXQuaGl0bGlzdC5sYWJlbCcsXG4gICAgYWN0aW9uczogW3tcbiAgICAgIG5hbWU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmNvbHVtbi5jb25maWcudGl0bGUnKSxcbiAgICAgIG5hbWVLZXk6ICdlby5jb2x1bW4uY29uZmlnLnRpdGxlJyxcbiAgICAgIHNob3J0Y3V0OiBuZXcgU2hvcnRjdXQoJ1AnLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgb25FeGVjdXRlQWN0aW9uOiAoKSA9PiB7XG4gICAgICAgIHRoaXMudmlzaWJsZUNvbmZpZyA9ICF0aGlzLnZpc2libGVDb25maWc7XG4gICAgICB9LFxuICAgICAgaXNIaWRkZW46ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucmVzdWx0bGlzdC5leHBvcnQuY3N2JyksXG4gICAgICBuYW1lS2V5OiAnZW8ucmVzdWx0bGlzdC5leHBvcnQuY3N2JyxcbiAgICAgIHNob3J0Y3V0OiBuZXcgU2hvcnRjdXQoJ1gnLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgb25FeGVjdXRlQWN0aW9uOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuZXhwb3J0Q1NWKCk7XG4gICAgICB9LFxuICAgICAgaXNIaWRkZW46ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ub2JqZWN0LmFjdGlvbnMudGl0bGUnKSxcbiAgICAgIG5hbWVLZXk6ICdlby5vYmplY3QuYWN0aW9ucy50aXRsZScsXG4gICAgICBzaG9ydGN1dDogbmV3IFNob3J0Y3V0KCdNJywgZmFsc2UsIGZhbHNlKSxcbiAgICAgIG9uRXhlY3V0ZUFjdGlvbjogKCkgPT4ge1xuICAgICAgICB0aGlzLmxpc3Quc2hvd0FjdGlvbnMoKTtcbiAgICAgIH0sXG4gICAgICBpc0hpZGRlbjogKCkgPT4ge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5saXN0LnJlZnJlc2gnKSxcbiAgICAgIG5hbWVLZXk6ICdlby5saXN0LnJlZnJlc2gnLFxuICAgICAgc2hvcnRjdXQ6IG5ldyBTaG9ydGN1dCgnUicsIGZhbHNlLCBmYWxzZSksXG4gICAgICBvbkV4ZWN1dGVBY3Rpb246ICgpID0+IHtcbiAgICAgICAgdGhpcy5yZWZyZXNoR3JpZCgpO1xuICAgICAgfSxcbiAgICAgIGlzSGlkZGVuOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XVxuICB9O1xuXG4gIHVwZGF0ZVJvdyhpZDogc3RyaW5nLCBkYXRhOiBhbnkpIHtcbiAgICBjb25zdCBtYXRjaFJvdyA9IHRoaXMucmVzdWx0R3JpZE9wdGlvbnMucm93RGF0YS5maW5kKChyKSA9PiByLmlkID09PSBpZCk7XG4gICAgY29uc3Qgc3lzdGVtRmllbGRzID0gWydjcmVhdGVkJywgJ2NyZWF0b3J0aXRsZScsICdtb2RpZmllZCcsICdtb2RpZmllcnRpdGxlJywgJ3RpdGxlJywgJ2Rlc2NyaXB0aW9uJywgJ3R5cGUnLCAndmVyc2lvbicsICdmaWxlc2l6ZScsICdmaWxlbmFtZScsICdtaW1ldHlwZWdyb3VwJywgJ21pbWV0eXBlJ107XG4gICAgbGV0IG1pc3NpbmdDb2x1bW5zID0gdGhpcy5yZXN1bHRHcmlkT3B0aW9ucy5jb2x1bW5EZWZzO1xuICAgIGlmIChtYXRjaFJvdykge1xuICAgICAgT2JqZWN0LmtleXMobWF0Y2hSb3cpLmZvckVhY2goKGspID0+IHtcbiAgICAgICAgaWYgKGRhdGEuaGFzT3duUHJvcGVydHkoaykpIHtcbiAgICAgICAgICBpZiAoZGF0YS5oYXNPd25Qcm9wZXJ0eShrICsgJ19tZXRhJykpIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGFbayArICdfbWV0YSddKSkge1xuICAgICAgICAgICAgICBjb25zdCByb3cgPSBbXTtcbiAgICAgICAgICAgICAgZGF0YVtrICsgJ19tZXRhJ10uZm9yRWFjaChkID0+IHtcbiAgICAgICAgICAgICAgICByb3cucHVzaChkLnRpdGxlID8gZC50aXRsZSA6IGQubGFiZWwpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgbWF0Y2hSb3dba10gPSByb3c7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBpZiBpdCBpcyBhbiBvcmcgZmllbGQsIGl0IHdpbGwgaGF2ZSBhIHRpdGxlIHRvIHNob3csIG90aGVyd2lzZSBpdCBpcyBhIGNvZGVzeXN0ZW0gYW5kIHdlIHNob3cgdGhlIGxhYmVsXG4gICAgICAgICAgICAgIG1hdGNoUm93W2tdID0gZGF0YVtrICsgJ19tZXRhJ10udGl0bGUgPyBkYXRhW2sgKyAnX21ldGEnXS50aXRsZSA6IGRhdGFbayArICdfbWV0YSddLmxhYmVsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtYXRjaFJvd1trXSA9IGRhdGFba107XG4gICAgICAgICAgfVxuICAgICAgICAgIG1pc3NpbmdDb2x1bW5zID0gbWlzc2luZ0NvbHVtbnMuZmlsdGVyKChjb2x1bW46IENvbERlZikgPT4gY29sdW1uLmZpZWxkICE9PSBrKTtcbiAgICAgICAgfSBlbHNlIGlmIChkYXRhLmhhc093blByb3BlcnR5KGsuc3BsaXQoJy4nKVsxXSkpIHtcbiAgICAgICAgICAvLyBzb21lIHRlY2huaWNhbCBuYW1lcyBoYXZlIHRoZSBvYmplY3QgdHlwZSBhcyBhIHByZWZpeCwgd2UgaGF2ZSB0byBnZXQgcmlkIG9mIGl0XG4gICAgICAgICAgY29uc3Qga1NwbGl0ID0gay5zcGxpdCgnLicpWzFdO1xuICAgICAgICAgIGlmIChkYXRhLmhhc093blByb3BlcnR5KGtTcGxpdCArICdfbWV0YScpKSB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhW2tTcGxpdCArICdfbWV0YSddKSkge1xuICAgICAgICAgICAgICBjb25zdCByb3cgPSBbXTtcbiAgICAgICAgICAgICAgZGF0YVtrU3BsaXQgKyAnX21ldGEnXS5mb3JFYWNoKGQgPT4ge1xuICAgICAgICAgICAgICAgIHJvdy5wdXNoKGQudGl0bGUgPyBkLnRpdGxlIDogZC5sYWJlbCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBtYXRjaFJvd1trXSA9IHJvdztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIGlmIGl0IGlzIGFuIG9yZyBmaWVsZCwgaXQgd2lsbCBoYXZlIGEgdGl0bGUgdG8gc2hvdywgb3RoZXJ3aXNlIGl0IGlzIGEgY29kZXN5c3RlbSBhbmQgd2Ugc2hvdyB0aGUgbGFiZWxcbiAgICAgICAgICAgICAgbWF0Y2hSb3dba10gPSBkYXRhW2tTcGxpdCArICdfbWV0YSddLnRpdGxlID8gZGF0YVtrU3BsaXQgKyAnX21ldGEnXS50aXRsZSA6IGRhdGFba1NwbGl0ICsgJ19tZXRhJ10ubGFiZWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1hdGNoUm93W2tdID0gZGF0YVtrU3BsaXRdO1xuICAgICAgICAgIH1cbiAgICAgICAgICBtaXNzaW5nQ29sdW1ucyA9IG1pc3NpbmdDb2x1bW5zLmZpbHRlcigoY29sdW1uOiBDb2xEZWYpID0+IGNvbHVtbi5maWVsZCAhPT0gayk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgLy8gd2UgbmVlZCB0byBpdGVyYXRlIHRocm91Z2ggdGhlIG5vdCBhbHJlYWR5IGFwcGxpZWQgY29sdW1ucywgd2hpY2ggd2VyZSBjaGFuZ2VkIGZyb20gbnVsbCBvciB0byBudWxsXG4gICAgICBtaXNzaW5nQ29sdW1ucy5mb3JFYWNoKChjb2x1bW46IENvbERlZikgPT4ge1xuICAgICAgICBpZiAoZGF0YS5oYXNPd25Qcm9wZXJ0eShjb2x1bW4uZmllbGQpKSB7XG4gICAgICAgICAgbWF0Y2hSb3dbY29sdW1uLmZpZWxkXSA9IGRhdGFbY29sdW1uLmZpZWxkXTtcbiAgICAgICAgfSBlbHNlIGlmIChkYXRhLmhhc093blByb3BlcnR5KGNvbHVtbi5maWVsZC5zcGxpdCgnLicpWzFdKSkge1xuICAgICAgICAgIG1hdGNoUm93W2NvbHVtbi5maWVsZF0gPSBkYXRhW2NvbHVtbi5maWVsZC5zcGxpdCgnLicpWzFdXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoIXN5c3RlbUZpZWxkcy5pbmNsdWRlcyhjb2x1bW4uZmllbGQpICYmIGNvbHVtbi5oZWFkZXJDbGFzcyAhPT0gJ2NvbnRleHRmb2xkZXInKSB7XG4gICAgICAgICAgICBtYXRjaFJvd1tjb2x1bW4uZmllbGRdID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgbWF0Y2hSb3cuaWQgPSBpZDtcbiAgICAgIGNvbnN0IHJvd05vZGUgPSB0aGlzLmdyaWQuYXBpLmdldFJvd05vZGUoaWQpO1xuICAgICAgcm93Tm9kZSAmJiByb3dOb2RlLnNldERhdGEobWF0Y2hSb3cpO1xuICAgIH1cbiAgfVxuXG4gIHJlZnJlc2hHcmlkKHVzZUNvbHVtblN0YXRlID0gdHJ1ZSkge1xuICAgIGlmICghdGhpcy5xdWVyeSB8fCAhdGhpcy5ncmlkPy5hcGkpIHJldHVybjtcbiAgICBjb25zdCBjb2x1bW5TdGF0ZSA9IHRoaXMuZ3JpZC5hcGkuZ2V0Q29sdW1uU3RhdGUoKSB8fCBbXTtcbiAgICBjb25zdCBmaWx0ZXJNb2RlbCA9IHRoaXMuZ3JpZC5hcGkuZ2V0RmlsdGVyTW9kZWwoKSB8fCB7fTtcbiAgICB0aGlzLl9xdWVyeS5zb3J0T3B0aW9ucyA9IGNvbHVtblN0YXRlLm1hcChcbiAgICAgIG1vZGVsID0+IG5ldyBTb3J0T3B0aW9uKEdyaWRTZXJ2aWNlLnFuYW1lRm9ybWF0dGVyKG1vZGVsLmNvbElkICsgdGhpcy5wb3N0Zml4U29ydChtb2RlbC5jb2xJZCkpLFxuICAgICAgICBtb2RlbC5zb3J0KSk7XG4gICAgdGhpcy5fcXVlcnkuZmlsdGVycyA9IHRoaXMuZGVmYXVsdFF1ZXJ5LmZpbHRlcnMuY29uY2F0KE9iamVjdC5rZXlzKGZpbHRlck1vZGVsKS5tYXAoXG4gICAgICBrZXkgPT4gR3JpZEZpbHRlci5vcGVyYXRvcihHcmlkU2VydmljZS5xbmFtZUZvcm1hdHRlcihrZXkpLFxuICAgICAgICBmaWx0ZXJNb2RlbFtrZXldKSkpO1xuICAgIHRoaXMucXVlcnkgPSB0aGlzLl9xdWVyeTtcbiAgICBpZiAodXNlQ29sdW1uU3RhdGUpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCB7IGFwaSB9ID0gdGhpcy5ncmlkLmFnR3JpZDtcbiAgICAgICAgYXBpLnNldEZpbHRlck1vZGVsKGZpbHRlck1vZGVsKTtcbiAgICAgICAgYXBpLmFwcGx5Q29sdW1uU3RhdGUoeyBzdGF0ZTogY29sdW1uU3RhdGUgfSk7XG4gICAgICB9LCAzMDApO1xuICAgIH1cbiAgICB0aGlzLm9uUmVmcmVzaC5lbWl0KHRoaXMucXVlcnkpO1xuICB9XG5cbiAgb25Db2x1bW5SZXNpemVkKGNvbHVtbjogYW55KSB7XG4gICAgbGV0IGNvbCA9IHRoaXMuX2NhY2hlZENvbHVtbnMuZmluZChjID0+IGMucW5hbWUgPT09IGNvbHVtbi5jb2xEZWYucmVmRGF0YS5xbmFtZSk7XG4gICAgaWYgKGNvbCkge1xuICAgICAgY29sLndpZHRoID0gY29sdW1uLmFjdHVhbFdpZHRoO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9jYWNoZWRDb2x1bW5zLnB1c2goe3FuYW1lOiBjb2x1bW4uY29sRGVmLnJlZkRhdGEucW5hbWUsIHdpZHRoOiBjb2x1bW4uYWN0dWFsV2lkdGh9KTtcbiAgICB9XG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRJdGVtKFJlc3VsdExpc3RDb21wb25lbnQuQ09MVU1OU19ERUZJTklUSU9OLCB0aGlzLl9jYWNoZWRDb2x1bW5zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFdmVudCBoYW5kbGVyIGZvciBncmlkIGNvbmZpZ3VyYXRpb25cbiAgICogQHBhcmFtICRldmVudFxuICAgKi9cbiAgb25Db25maWdDaGFuZ2VkKGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICB0aGlzLnJlZnJlc2hHcmlkKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUHJvY2VzcyBTZWFyY2ggcmVzdWx0ICYgZ2VuZXJhdGUgY29sdW1uIGRlZmluaXRpb25zXG4gICAqIEBwYXJhbSByZXN1bHRcbiAgICovXG4gIHByaXZhdGUgcHJvY2Vzc1Jlc3VsdHMocmVzdWx0OiBTZWFyY2hSZXN1bHQpIHtcblxuICAgIHRoaXMudmlzaWJsZUNvbmZpZyA9IGZhbHNlO1xuICAgIHRoaXMub25SZXN1bHQuZW1pdChyZXN1bHQpO1xuICAgIHRoaXMudG90YWxIaXRzID0gcmVzdWx0LmNvdW50LnZhbHVlO1xuICAgIHRoaXMubGltaXRlZExpc3QgPSB0aGlzLnRvdGFsSGl0cyA+IHJlc3VsdC5oaXRzLmxlbmd0aDtcbiAgICBsZXQgZ3JpZE9wdGlvbnM6IEdyaWRPcHRpb25zID0ge2NvbnRleHQ6IHt9LCBvblNvcnRDaGFuZ2VkOiAoKSA9PiB0aGlzLm9uUGFnZUNoYW5nZWQoKSwgb25GaWx0ZXJDaGFuZ2VkOiAoKSA9PiB0aGlzLm9uUGFnZUNoYW5nZWQoKX07XG4gICAgY29uc3Qgc2VhcmNoTW9kZSA9IHJlc3VsdC5maWVsZHMubW9kZSA/IHJlc3VsdC5maWVsZHMubW9kZSA6IG51bGw7XG5cbiAgICB0aGlzLnNldHRpbmdzID0gdGhpcy5saW1pdGVkTGlzdCAmJiB0aGlzLnF1ZXJ5ID8ge3RvdGFsOiB0aGlzLnRvdGFsSGl0cywgc2l6ZTogdGhpcy5WSVJUVUFMX0xJU1RfQ0hVTktfU0laRSwgcmVsYXRpb246IHJlc3VsdC5jb3VudC5yZWxhdGlvbn0gOiBudWxsO1xuICAgIGdyaWRPcHRpb25zLnJvd0RhdGEgPSByZXN1bHQuaGl0cztcblxuICAgIGNvbnN0IHtlbGVtZW50cywgc29ydG9yZGVyLCBncm91cG9yZGVyLCBwaW5uZWQsIGFsaWdubWVudHh9ID0gcmVzdWx0LmZpZWxkcztcblxuICAgIGdyaWRPcHRpb25zLmNvbnRleHQuY291bnQgPSByZXN1bHQuY291bnQ7XG4gICAgZ3JpZE9wdGlvbnMuY29sdW1uRGVmcyA9IHRoaXMuZ3JpZEFwaS5nZXRDb2x1bW5EZWZzKGVsZW1lbnRzLCBzb3J0b3JkZXIsIGdyb3Vwb3JkZXIsIHBpbm5lZCwgYWxpZ25tZW50eCwgZmFsc2UsIHRoaXMuX2NhY2hlZENvbHVtbnMsIHNlYXJjaE1vZGUpO1xuXG4gICAgY29uc3QgcmVmcmVzaEdyaWQgPSB0aGlzLmhhc0dyaWRPcHRpb25zO1xuICAgIE9iamVjdC5hc3NpZ24odGhpcy5yZXN1bHRHcmlkT3B0aW9ucywgZ3JpZE9wdGlvbnMsIHRoaXMuZ3JpZE9wdGlvbnMpO1xuXG4gICAgaWYgKHJlZnJlc2hHcmlkKSB7XG4gICAgICAvLyByZWxvYWQgZ3JpZCBjb21wb25lbnRcbiAgICAgIHRoaXMucmVzdWx0R3JpZE9wdGlvbnMgPSB7fTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gT2JqZWN0LmFzc2lnbih0aGlzLnJlc3VsdEdyaWRPcHRpb25zLCBncmlkT3B0aW9ucywgdGhpcy5ncmlkT3B0aW9ucyksIDApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcG9zdGZpeFNvcnQoaWQpIHtcbiAgICAvLyB0b2RvOiByZW1vdmUgd2hlbiBpdCdzIGZpeGVkIG9uIGJhY2tlbmRcbiAgICByZXR1cm4gaWQubWF0Y2goLyhec3lzb2JqZWN0XFwufF5zeXNkb2N1bWVudFxcLikoY3JlYXRvciR8bW9kaWZpZXIkKS8pID8gJ3RpdGxlJyA6ICcnO1xuICB9XG5cbiAgb25QYWdlQ2hhbmdlZChwYWdlOiBudW1iZXIgPSAxKSB7XG4gICAgaWYgKHRoaXMubGltaXRlZExpc3QgJiYgdGhpcy5xdWVyeSkge1xuICAgICAgdGhpcy5mZXRjaFJvd0RhdGEoe1xuICAgICAgICBzdGFydFJvdzogdGhpcy5WSVJUVUFMX0xJU1RfQ0hVTktfU0laRSAqIChwYWdlIC0gMSksXG4gICAgICAgIHNvcnRNb2RlbDogdGhpcy5ncmlkLmFwaS5nZXRDb2x1bW5TdGF0ZSgpLFxuICAgICAgICBmaWx0ZXJNb2RlbDogdGhpcy5ncmlkLmFwaS5nZXRGaWx0ZXJNb2RlbCgpLFxuICAgICAgICBzdWNjZXNzQ2FsbGJhY2s6IChyb3dzLCB0b3RhbCwgcmVsYXRpb24pID0+IHtcbiAgICAgICAgICB0aGlzLnNldHRpbmdzID0ge3RvdGFsLCByZWxhdGlvbiwgc2l6ZTogdGhpcy5WSVJUVUFMX0xJU1RfQ0hVTktfU0laRSwgcGFnZX07XG4gICAgICAgICAgdGhpcy5ncmlkLmFwaS5zZXRHcmlkT3B0aW9uKCdyb3dEYXRhJywgcm93cyk7XG4gICAgICAgICAgdGhpcy5ncmlkLnNlbGVjdFJvdygwKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIGZvciBmZXRjaGluZyB0aGUgaXRlbXMgdG8gYmUgZGlzcGxheWVkIHdpdGggYSB2aXJ0dWFsIHJvdyBtb2RlbC5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIHJvdyBtb2RlbCBwYXJhbXMgKGluY2wuIHN0YXJ0Um93LCBlbmRSb3csIHNvcnRNb2RlbCBhbmQgZmlsdGVyTW9kZWwpXG4gICAqL1xuICBwcml2YXRlIGZldGNoUm93RGF0YShwYXJhbXM6IGFueSkge1xuXG4gICAgaWYgKHRoaXMucXVlcnkpIHtcblxuICAgICAgdGhpcy51cGRhdGVRdWVyeShwYXJhbXMpO1xuXG4gICAgICB0aGlzLnNlYXJjaFNlcnZpY2VcbiAgICAgICAgLmdldENodW5rZWRSZXN1bHQodGhpcy5xdWVyeSwgcGFyYW1zLnN0YXJ0Um93LCB0aGlzLlZJUlRVQUxfTElTVF9DSFVOS19TSVpFKVxuICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgdGhpcy50b3RhbEhpdHMgPSB0aGlzLmdyaWQuZ3JpZE9wdGlvbnMuY29udGV4dC5yb3dDb3VudCA9IHJlc3VsdC5jb3VudC52YWx1ZTtcbiAgICAgICAgICB0aGlzLmdyaWQuZ3JpZE9wdGlvbnMuY29udGV4dC5jb3VudCA9IHJlc3VsdC5jb3VudDtcbiAgICAgICAgICBwYXJhbXMuc3VjY2Vzc0NhbGxiYWNrKHJlc3VsdC5oaXRzLCB0aGlzLnRvdGFsSGl0cywgcmVzdWx0LmNvdW50LnJlbGF0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVRdWVyeShwYXJhbXM6IGFueSkge1xuICAgIHRoaXMucXVlcnkuc29ydE9wdGlvbnMgPSAocGFyYW1zLnNvcnRNb2RlbCB8fCB0aGlzLmdyaWQuYXBpLmdldENvbHVtblN0YXRlKCkgfHwgW10pXG4gICAgICAubWFwKG1vZGVsID0+IG5ldyBTb3J0T3B0aW9uKEdyaWRTZXJ2aWNlLnFuYW1lRm9ybWF0dGVyKG1vZGVsLmNvbElkICsgdGhpcy5wb3N0Zml4U29ydChtb2RlbC5jb2xJZCkpLCBtb2RlbC5zb3J0KSk7XG5cbiAgICB0aGlzLnF1ZXJ5LmZpbHRlcnMgPSB0aGlzLmRlZmF1bHRRdWVyeS5maWx0ZXJzXG4gICAgICAuY29uY2F0KChPYmplY3Qua2V5cyhwYXJhbXMuZmlsdGVyTW9kZWwgfHwgdGhpcy5ncmlkLmFwaS5nZXRGaWx0ZXJNb2RlbCgpKSB8fCBbXSlcbiAgICAgICAgLm1hcChrZXkgPT4gR3JpZEZpbHRlci5vcGVyYXRvcihHcmlkU2VydmljZS5xbmFtZUZvcm1hdHRlcihrZXkpLCAocGFyYW1zLmZpbHRlck1vZGVsIHx8IHRoaXMuZ3JpZC5hcGkuZ2V0RmlsdGVyTW9kZWwoKSlba2V5XSkpKTtcblxuICAgIHRoaXMucXVlcnkuc2VhcmNoTW9kZSA9IFNlYXJjaFF1ZXJ5LkRFRkFVTFRfU0VBUkNIX01PREU7XG4gIH1cblxuICBleGVjdXRlU3VnZ2VzdFNlYXJjaCgpIHtcbiAgICAvLyB0b2RvOiBpbXBsZW1lbnRcbiAgfVxuXG4gIHByaXZhdGUgcmVzdWx0SGFzUmVmZXJlbmNlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVzdWx0LmZpZWxkcy5lbGVtZW50cy5zb21lKGVsZW1lbnQgPT4gZWxlbWVudC50eXBlID09PSAnT1JHQU5JWkFUSU9OJyB8fCBlbGVtZW50LnR5cGUgPT09ICdSRUZFUkVOQ0UnKTtcbiAgfVxuXG4gIG9wZW5EaWFsb2dFeHBvcnQoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93RGlhbG9nRXhwb3J0ID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5yZXNvbHZlUmVmZXJlbmNlc0NzdlxuICAgICAgJiYgKHRoaXMubGlzdC5ncmlkQ291bnQudG90YWxDb3VudCA+IHRoaXMucmVzb2x2ZVJlZmVyZW5jZXNDc3ZUaHJlc2hvbGQgfHwgdGhpcy5saXN0LmdyaWRDb3VudC5yZWxhdGlvbiA9PT0gJ2d0ZScpXG4gICAgICAmJiB0aGlzLnJlc3VsdEhhc1JlZmVyZW5jZXMoKSkge1xuICAgICAgdGhpcy5zaG93V2FybkV4cG9ydENTVlRocmVzaG9sZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0Q1NWKCk6IHZvaWQge1xuICAgIHRoaXMuY3N2TG9hZGluZ1NwaW5uZXJWaXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICB0aGlzLnVwZGF0ZVF1ZXJ5KHt9KTtcbiAgICB0aGlzLnNob3dXYXJuRXhwb3J0Q1NWVGhyZXNob2xkID0gZmFsc2U7XG4gICAgdGhpcy5zaG93RGlhbG9nRXhwb3J0ID0gZmFsc2U7XG4gICAgY29uc3QgcXVlcnlKc29uID0gdGhpcy5xdWVyeS5nZXRRdWVyeUpzb24odGhpcy5yZXNvbHZlUmVmZXJlbmNlc0Nzdik7XG4gICAgcXVlcnlKc29uLmZpZWxkcyA9IFtdO1xuICAgIHRoaXMucmVzdWx0R3JpZE9wdGlvbnM/LmNvbHVtbkRlZnMuZm9yRWFjaChjb2xEZWYgPT4ge1xuICAgICAgcXVlcnlKc29uLmZpZWxkcy5wdXNoKGNvbERlZlsnZmllbGQnXSArICcgJyArIGNvbERlZi5oZWFkZXJOYW1lKTtcbiAgICB9KTtcbiAgICB0aGlzLnNlYXJjaFNlcnZpY2UuZG93bmxvYWRDc3ZGcm9tUXVlcnkocXVlcnlKc29uLCB0aGlzLl9leHBvcnRDU1Z3aXRoVXJsKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5jc3ZMb2FkaW5nU3Bpbm5lclZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIHBhcnNlRG1zUGFyYW1zKGRhdGEpIHtcbiAgICByZXR1cm4ge2lkOiBkYXRhICYmIGRhdGEuaWQgPyBkYXRhLmlkIDogbnVsbCwgdHlwZTogZGF0YSAmJiBkYXRhLnR5cGUgPyBkYXRhLnR5cGUgOiBudWxsfTtcbiAgfVxuXG4gIGdldCBoYXNHcmlkT3B0aW9ucygpIHtcbiAgICByZXR1cm4gISEodGhpcy5yZXN1bHRHcmlkT3B0aW9ucy5kYXRhc291cmNlIHx8IHRoaXMucmVzdWx0R3JpZE9wdGlvbnMucm93RGF0YSk7XG4gIH1cblxuICBvblN0b3JlZFF1ZXJ5TG9hZGVkKCkge1xuICAgIHRoaXMuc2F2ZWRTZWFyY2hDbGlja2VkID0gZmFsc2U7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3tvdXRsZXRzOiB7bW9kYWw6ICdzZWFyY2gnfX1dKTtcbiAgfVxuXG4gIG9uU3RvcmVkUXVlcnlFeGVjdXRlKGV2dCkge1xuICAgIHRoaXMuc2F2ZWRTZWFyY2hDbGlja2VkID0gZmFsc2U7XG4gICAgY29uc3QgdXJpUGFyYW0gPSBlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoZXZ0LnF1ZXJ5SnNvbikpO1xuICAgIGNvbnN0IHVyaVBhcmFtUXVlcnk6IE5hdmlnYXRpb25FeHRyYXMgPSB7cXVlcnlQYXJhbXM6IHsncXVlcnknOiB1cmlQYXJhbX19O1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3Jlc3VsdCddLCB1cmlQYXJhbVF1ZXJ5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBjbGljayBldmVudCBvbiBhIGdyaWQgY2VsbC5cbiAgICpcbiAgICogQHBhcmFtIHthbnl9IGV2ZW50IC0gVGhlIGV2ZW50IG9iamVjdCBjb250YWluaW5nIGRhdGEgYWJvdXQgdGhlIGNsaWNrZWQgY2VsbC5cbiAgICovXG4gIGVvR3JpZENlbGxDbGljayhldmVudCkge1xuICAgIGlmICh0aGlzLl9xdWVyeSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkT2JqZWN0SWQgPSBldmVudC5kYXRhLmlkO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7cXVlcnlQYXJhbXM6IHtvYmplY3RJZDogdGhpcy5zZWxlY3RlZE9iamVjdElkfSwgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJ30pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibG9hZGVyLW92ZXJsYXlfX21hc2tcIiAqbmdJZj1cInNob3dMb2FkZXJcIj5cbiAgPGVvLWxvYWRpbmctc3Bpbm5lciBjbGFzcz1cInJlc3VsdC1saXN0X19sb2FkZXJcIiBbc2l6ZV09XCInbWVkaXVtJ1wiPjwvZW8tbG9hZGluZy1zcGlubmVyPlxuPC9kaXY+XG48ZW8tY29sdW1uLWNvbmZpZ3VyYXRvciAqbmdJZj1cInZpc2libGVDb25maWdcIiBbdmlzaWJsZV09XCJ2aXNpYmxlQ29uZmlnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb25maWdUeXBlXT1cImNvbmZpZ1R5cGVcIiBbY29uZmlnQ29udGV4dF09XCJjb25maWdDb250ZXh0XCIgW2VvR3JpZF09XCJncmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkNvbmZpZ0NoYW5nZWQpPVwidmlzaWJsZUNvbmZpZyA9IGZhbHNlOyBvbkNvbmZpZ0NoYW5nZWQoJGV2ZW50KVwiID48L2VvLWNvbHVtbi1jb25maWd1cmF0b3I+XG5cbjxlby1saXN0LWNvbnRhaW5lciAjZW9MaXN0IFthcHBseVNlbGVjdGlvbl09XCJ7fVwiIFtsb2FkaW5nXT1cImZhbHNlXCIgW3BhcnNlRG1zUGFyYW1zXT1cInBhcnNlRG1zUGFyYW1zXCI+XG4gIDxkaXYgY2xhc3M9XCJlby1oZWFkZXJcIiBbZW9TaG9ydGN1dHNdPVwic2hvcnRjdXRzXCI+XG4gICAgPGVvLWljb24gY2xhc3M9XCJlby1oZWFkZXItaWNvblwiICpuZ0lmPVwiaGFzSWNvblwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3NlYXJjaC5zdmcnXCI+PC9lby1pY29uPlxuICAgIDxkaXYgY2xhc3M9XCJlby1oZWFkZXItaW5mb1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlci10aXRsZVwiPnt7dGl0bGUgfHwgKCdlby5zZWFyY2gudGl0bGUnIHwgdHJhbnNsYXRlKX19PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZW8taGVhZGVyLXN1YnRpdGxlXCI+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIXN0b3JlZFF1ZXJ5OyBlbHNlIHN0b3JlZFF1ZXJ5VGV4dFwiIGNsYXNzPVwiZW8taGVhZGVyLXN1YnRpdGxlX19sYWJlbFwiIFt0aXRsZV09XCJxdWVyeVN1YnRpdGxlXCI+e3txdWVyeVN1YnRpdGxlfX08L3NwYW4+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjc3RvcmVkUXVlcnlUZXh0PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdG9yZWRRdWVyeS5wYXJhbWV0ZXIubGVuZ3RoID09PSAwOyBlbHNlIHN0b3JlZFF1ZXJ5RGlhbG9nXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVvLWhlYWRlci1zdWJ0aXRsZV9fbGFiZWxcIiBbdGl0bGVdPVwiKCdlby5zZWFyY2guYXNpZGUuc3VtbWFyeS5zdG9yZWRxdWVyeScgfCB0cmFuc2xhdGUpICsgJzogJyArIHN0b3JlZFF1ZXJ5Lm5hbWVcIj5cbiAgICAgICAgICAgICAge3snZW8uc2VhcmNoLmFzaWRlLnN1bW1hcnkuc3RvcmVkcXVlcnknIHwgdHJhbnNsYXRlfX06IHt7c3RvcmVkUXVlcnkubmFtZX19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjc3RvcmVkUXVlcnlEaWFsb2c+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0b3JlZC1xdWVyeVwiPlxuICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgIHt7J2VvLnNlYXJjaC5hc2lkZS5zdW1tYXJ5LnN0b3JlZHF1ZXJ5JyB8IHRyYW5zbGF0ZX19OlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInNxXCIgKGNsaWNrKT1cInNhdmVkU2VhcmNoQ2xpY2tlZCA9IHRydWVcIiAoa2V5dXAuZW50ZXIpPVwic2F2ZWRTZWFyY2hDbGlja2VkID0gdHJ1ZVwiIHRhYmluZGV4PVwiMFwiPlxuICAgICAgICAgICAgICA8ZW8taWNvbiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19zdG9yZWRfcXVlcnkuc3ZnJ1wiPjwvZW8taWNvbj5cbiAgICAgICAgICAgICAgPHNwYW4+e3tzdG9yZWRRdWVyeS5uYW1lfX08L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJxdWVyeT8uY29udGV4dEZvbGRlclR5cGVzLmxlbmd0aCA9PT0gMVwiIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICBbdHJhbnNsYXRlUGFyYW1zXT1cInt0eXBlOiBxdWVyeS5jb250ZXh0Rm9sZGVyVHlwZXNbMF0ubGFiZWx9XCI+ZW8uc2VhcmNoLm9iamVjdHR5cGUuZm9ybS5jb250ZXh0PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRlcm1cIiAqbmdJZj1cIiFzdG9yZWRRdWVyeSAmJiBxdWVyeT8udGVybSAmJiAhY2xlYXJBZnRlckV4ZWN1dGVcIiBbdGl0bGVdPVwiKCdlby5zZWFyY2gucmVzdWx0LnRlcm0nIHwgdHJhbnNsYXRlKSArICc6ICcgKyBxdWVyeS50ZXJtXCI+e3snZW8uc2VhcmNoLnJlc3VsdC50ZXJtJyB8IHRyYW5zbGF0ZX19IDogXCJ7e3F1ZXJ5LnRlcm19fVwiPC9zcGFuPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3VnZ2VzdFwiICpuZ0lmPVwic2VhcmNoUmVzdWx0Py5zdWdnZXN0c1wiPnt7J2VvLnNlYXJjaC5zdWdnZXN0JyB8IHRyYW5zbGF0ZX19PGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJleGVjdXRlU3VnZ2VzdFNlYXJjaCgpXCI+e3tzZWFyY2hSZXN1bHQuc3VnZ2VzdHNbMF19fTwvYT4gP1xuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJlby1oZWFkZXItYWN0aW9uc1wiPlxuICAgICAgPGVvLWljb24gY2xhc3M9XCJidXR0b24gcmVmcmVzaC1idXR0b25cIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19yZWZyZXNoLnN2ZydcIiAoY2xpY2spPVwicmVmcmVzaEdyaWQoKVwiXG4gICAgICAgICAgICAgICBbaWNvblRpdGxlXT1cIignZW8ubGlzdC5yZWZyZXNoJyB8IHRyYW5zbGF0ZSlcIj48L2VvLWljb24+XG4gICAgICA8ZW8taWNvbiBjbGFzcz1cImJ1dHRvbiBleHBvcnQtYnV0dG9uXCIgW2hpZGRlbl09XCIhcXVlcnlcIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19jb250ZW50LWRvd25sb2FkLnN2ZydcIiBbaWNvblRpdGxlXT1cIignZW8ucmVzdWx0bGlzdC5leHBvcnQuY3N2JyB8IHRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5EaWFsb2dFeHBvcnQoKVwiICpuZ0lmPVwiIWNzdkxvYWRpbmdTcGlubmVyVmlzaWJpbGl0eVwiPjwvZW8taWNvbj5cbiAgICAgIDxlby1sb2FkaW5nLXNwaW5uZXIgW3NpemVdPVwiJ3NtYWxsJ1wiICpuZ0lmPVwiY3N2TG9hZGluZ1NwaW5uZXJWaXNpYmlsaXR5XCIgY2xhc3M9XCJzcGlubmVyXCI+PC9lby1sb2FkaW5nLXNwaW5uZXI+XG4gICAgICA8ZW8taWNvbiBjbGFzcz1cImJ1dHRvbiBjb25maWctYnV0dG9uXCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfc2V0dGluZ3Muc3ZnJ1wiIFtpY29uVGl0bGVdPVwiKCdlby5jb2x1bW4uY29uZmlnLnRpdGxlJyB8IHRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICAgKGNsaWNrKT1cInZpc2libGVDb25maWcgPSAhdmlzaWJsZUNvbmZpZ1wiPjwvZW8taWNvbj5cbiAgICAgIDxlby1pY29uIGNsYXNzPVwiYnV0dG9uIGFjdGlvbnMtYnV0dG9uXCIgKGNsaWNrKT1cImVvTGlzdC5zaG93QWN0aW9ucygpXCIgW2ljb25UaXRsZV09XCIoJ2VvLm9iamVjdC5hY3Rpb25zLnRpdGxlJyB8IHRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfbW9yZS5zdmcnXCIgKm5nSWY9XCIhcmVmZXJlbmNlXCI+PC9lby1pY29uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImVvLWJvZHlcIj5cbiAgICA8ZW8tZ3JpZCAjZW9HcmlkIFtncmlkT3B0aW9uc109XCJyZXN1bHRHcmlkT3B0aW9uc1wiICpuZ0lmPVwiaGFzR3JpZE9wdGlvbnM7IGVsc2UgZXJyb3JcIlxuICAgICAgICAgICAgIFtzaG93Rm9vdGVyXT1cInRydWVcIiAoZW9HcmlkQ29sdW1uUmVzaXplZCk9XCJvbkNvbHVtblJlc2l6ZWQoJGV2ZW50KVwiIFtzZWxlY3RGaXJzdF09XCJzZWxlY3RGaXJzdFwiXG4gICAgICAgICAgICAgKGVvR3JpZENvdW50Q2hhbmdlZCk9XCJlb0xpc3Qub25Db3VudENoYW5nZWQoJGV2ZW50KTtvbkNvdW50Q2hhbmdlZC5lbWl0KCRldmVudCk7XCJcbiAgICAgICAgICAgICAoZW9HcmlkQ29udGV4dE1lbnVDbGljayk9XCJlb0xpc3Qub25Db250ZXh0TWVudSgkZXZlbnQpO29uQ29udGV4dE1lbnUuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAoZW9HcmlkU2VsZWN0aW9uQ2hhbmdlZCk9XCJlb0xpc3Qub25TZWxlY3Rpb25DaGFuZ2VkKCRldmVudCk7b25TZWxlY3Rpb25DaGFuZ2VkLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgKGVvR3JpZERvdWJsZUNsaWNrKT1cImVvTGlzdC5vbkRvdWJsZUNsaWNrKCRldmVudCk7b25Eb3VibGVDbGljay5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgIChlb0dyaWRGb2N1c0NoYW5nZWQpPVwiZW9MaXN0Lm9uRm9jdXNDaGFuZ2VkKCRldmVudCk7b25Gb2N1c0NoYW5nZWQuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAoZW9HcmlkQ2VsbENsaWNrKT1cImVvR3JpZENlbGxDbGljaygkZXZlbnQpXCIgW3NlbGVjdGVkSWRdPVwic2VsZWN0ZWRPYmplY3RJZFwiPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyXCI+XG4gICAgICAgIDxlby10b3RhbC1jb3VudCBbZ3JpZENvdW50XT1cImVvTGlzdC5ncmlkQ291bnRcIiBbb3V0c2lkZUdyaWRdPVwiZmFsc2VcIiBjbGFzcz1cImZsZXgtcm93XCI+PC9lby10b3RhbC1jb3VudD5cbiAgICAgICAgPCEtLTxlby1xdWljay1maWx0ZXIgW2VvR3JpZF09XCJlb0dyaWRcIj48L2VvLXF1aWNrLWZpbHRlcj4tLT5cbiAgICAgICAgPGVvLXBhZ2luYXRpb24gW3NldHRpbmdzXT1cInNldHRpbmdzXCIgKHBhZ2VDaGFuZ2VkKT1cIm9uUGFnZUNoYW5nZWQoJGV2ZW50KVwiPjwvZW8tcGFnaW5hdGlvbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiZW1wdHlcIj5cbiAgICAgICAgPGVvLWVycm9yLW1lc3NhZ2UgW2VtcHR5U3RhdGVdPVwie3RleHQ6IGVtcHR5TWVzc2FnZSB8fCAnZW8uc2VhcmNoLnJlc3VsdC5leHBpcmVkJ31cIj48L2VvLWVycm9yLW1lc3NhZ2U+XG4gICAgICA8L2Rpdj5cbiAgICA8L2VvLWdyaWQ+XG4gIDwvZGl2PlxuICA8bmctdGVtcGxhdGUgI2Vycm9yPlxuXG4gICAgPGVvLWVycm9yLW1lc3NhZ2UgKm5nSWY9XCJoYXNHcmlkT3B0aW9uc1wiIFtlbXB0eVN0YXRlXT1cInt0ZXh0Oidlby5zZWFyY2gubW9kZS5leHBlcnQucmVzdWx0LmVtcHR5J31cIj5cbiAgICA8L2VvLWVycm9yLW1lc3NhZ2U+XG5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZW8tbGlzdC1jb250YWluZXI+XG5cbjxlby1kaWFsb2cgW3Zpc2libGVdPVwic2F2ZWRTZWFyY2hDbGlja2VkXCIgKGhpZGUpPVwic2F2ZWRTZWFyY2hDbGlja2VkID0gZmFsc2VcIiBbdGl0bGVdPVwiJ2VvLnNlYXJjaC5hc2lkZS5zdW1tYXJ5LnN0b3JlZHF1ZXJ5JyB8IHRyYW5zbGF0ZVwiPlxuXG48L2VvLWRpYWxvZz5cbjxlby1kaWFsb2cgW3RpdGxlXT1cIidlby5yZXN1bHRsaXN0LmV4cG9ydC5jc3YuZGlhbG9nLnRpdGxlJyB8IHRyYW5zbGF0ZVwiIFsodmlzaWJsZSldPVwic2hvd0RpYWxvZ0V4cG9ydFwiXG4gIFtmb2N1c09uU2hvd109XCJmYWxzZVwiIFttaW5XaWR0aF09XCI0MDBcIiBbc3R5bGVDbGFzc109XCInZXhwb3J0X19kaWFsb2cnXCI+XG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwic2V0dXBGb3JtXCI+XG4gICAgPGVvLWZvcm0taW5wdXQgY2xhc3M9XCJsYWJlbCBjaGVja2JveFwiIFtza2lwVG9nZ2xlXT1cInRydWVcIlxuICAgICAgW2xhYmVsXT1cIidlby5yZXN1bHRsaXN0LmV4cG9ydC5jc3YuZGlhbG9nLm9iamVjdFVybC5sYWJlbCcgfCB0cmFuc2xhdGVcIj5cbiAgICAgIDxlby1jaGVja2JveCBmb3JtQ29udHJvbE5hbWU9XCJleHBvcnRDU1Z3aXRoVXJsXCI+XG4gICAgICA8L2VvLWNoZWNrYm94PlxuICAgIDwvZW8tZm9ybS1pbnB1dD5cbiAgPC9mb3JtPlxuXG4gIEBpZihzaG93V2FybkV4cG9ydENTVlRocmVzaG9sZCl7XG4gICAgPGRpdiBjbGFzcz1cInRocmVzaG9sZC13YXJuaW5nXCI+e3snZW8ucmVzdWx0bGlzdC5leHBvcnQuY3N2LnRocmVzaG9sZC5kaWFsb2cubWVzc2FnZScgfCB0cmFuc2xhdGV9fTwvZGl2PlxuICB9XG5cbiAgPGRpdiBjbGFzcz1cImFjdGlvbi1idXR0b25zIGZsZXgtcm93XCI+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidXR0b24gY2FuY2VsXCIgKGNsaWNrKT1cInNob3dEaWFsb2dFeHBvcnQgPSBmYWxzZVwiXG4gICAgICB0cmFuc2xhdGU+ZW8uY3RhLmJ1dHRvbi5jYW5jZWw8L2J1dHRvbj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZXhwb3J0Q1NWKClcIiBjbGFzcz1cImJ1dHRvbiBwcmltYXJ5XCJcbiAgICAgIHRyYW5zbGF0ZT5lby5yZXN1bHRsaXN0LmV4cG9ydC5jc3YuZGlhbG9nLmV4cG9ydDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZW8tZGlhbG9nPlxuIl19
529
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvcmVzdWx0LWxpc3QvcmVzdWx0LWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvcmVzdWx0LWxpc3QvcmVzdWx0LWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFdkcsT0FBTyxFQUdMLFVBQVUsRUFFVixlQUFlLEVBR2YsV0FBVyxFQUVYLFVBQVUsRUFFUSxLQUFLLEVBQ3hCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBQyxZQUFZLEVBQUUsY0FBYyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDbkUsT0FBTyxFQUFDLEVBQUUsSUFBSSxZQUFZLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBRXJFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUlyRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sY0FBYyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRL0IsSUFBTSxtQkFBbUIsR0FBekIsTUFBTSxtQkFBbUI7O2FBWXZCLHVCQUFrQixHQUFHLHVDQUF1QyxBQUExQyxDQUEyQztJQTZDcEUsSUFDSSxLQUFLLENBQUMsS0FBVTtRQUNsQixJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQztRQUM3QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQzthQUFNLENBQUM7WUFD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S0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0ksa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBR0gsS0FBSztzQkFEUixLQUFLO2dCQThERixZQUFZO3NCQURmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbERlZiwgR3JpZE9wdGlvbnN9IGZyb20gJ0BhZy1ncmlkLWNvbW11bml0eS9jb3JlJztcbmltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmF2aWdhdGlvbkV4dHJhcywgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgQmFja2VuZFNlcnZpY2UsXG4gIENvbmZpZyxcbiAgRW5haW9FdmVudCxcbiAgRXZlbnRTZXJ2aWNlLFxuICBGaWVsZERlZmluaXRpb24sXG4gIExvY2FsU3RvcmFnZVNlcnZpY2UsXG4gIE9iamVjdFR5cGUsXG4gIFNlYXJjaFF1ZXJ5LCBTZWFyY2hSZXN1bHQsXG4gIFNlYXJjaFNlcnZpY2UsXG4gIFNvcnRPcHRpb24sXG4gIFN0b3JlZFF1ZXJpZXNTZXJ2aWNlLCBTdG9yZWRRdWVyeSxcbiAgVHJhbnNsYXRlU2VydmljZSwgVXRpbHNcbn0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7VW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZH0gZnJvbSAnQG5nbmVhdC91bnRpbC1kZXN0cm95JztcbmltcG9ydCB7b2YgYXMgb2JzZXJ2YWJsZU9mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7R3JpZFNlcnZpY2V9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL2FwaS9ncmlkLnNlcnZpY2UnO1xuaW1wb3J0IHtBcHBTZWFyY2hTZXJ2aWNlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9zZWFyY2gvYXBwLXNlYXJjaC5zZXJ2aWNlJztcbmltcG9ydCB7R3JpZEZpbHRlcn0gZnJvbSAnLi4vZ3JpZC9ncmlkLWZpbHRlci5tb2RlbCc7XG5pbXBvcnQge0dyaWRDb21wb25lbnR9IGZyb20gJy4uL2dyaWQvZ3JpZC5jb21wb25lbnQnO1xuaW1wb3J0IHtMaXN0Q29udGFpbmVyQ29tcG9uZW50fSBmcm9tICcuLi9saXN0LWNvbnRhaW5lcic7XG5pbXBvcnQge0dsb2JhbFNob3J0Y3V0Q29tcG9uZW50fSBmcm9tICcuLi9zaG9ydGN1dHMvZ2xvYmFsLXNob3J0Y3V0LWNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtTaG9ydGN1dH0gZnJvbSAnLi4vc2hvcnRjdXRzJztcbmltcG9ydCB7VW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUdyb3VwfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLXJlc3VsdC1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Jlc3VsdC1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVzdWx0LWxpc3QuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBSZXN1bHRMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgc2V0dXBGb3JtOiBVbnR5cGVkRm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7XG4gICAgZXhwb3J0Q1NWd2l0aFVybDogW2ZhbHNlXSxcbiAgfSk7XG5cblxuICBAVmlld0NoaWxkKCdlb0dyaWQnKSBncmlkOiBHcmlkQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdlb0xpc3QnKSBsaXN0OiBMaXN0Q29udGFpbmVyQ29tcG9uZW50O1xuICAvLyBmb3IgbGlzdHMgdGhhdCBleGNlZWQgdGhlIGNvbmZpZ3VyZWQgbWF4IHJlc3VsdCBzaXplLCBkYXRhIHdpbGwgYmUgZmV0Y2hlZCBpbiBjaHVua3NcbiAgcHJpdmF0ZSBWSVJUVUFMX0xJU1RfQ0hVTktfU0laRTogbnVtYmVyO1xuICByZXNvbHZlUmVmZXJlbmNlc0NzdjogYm9vbGVhbjtcbiAgcmVzb2x2ZVJlZmVyZW5jZXNDc3ZUaHJlc2hvbGQ6IG51bWJlcjtcbiAgc3RhdGljIENPTFVNTlNfREVGSU5JVElPTiA9ICdlby5mcmFtZXdvcmsuY2FjaGUuY29sdW1ucy5kZWZpbml0aW9uJztcbiAgZXhwb3J0Q1NWd2l0aFVybEtleSA9ICdlby5yZXN1bHRsaXN0LmNhY2hlLndpdGhVcmwnO1xuXG4gIHByaXZhdGUgX2V4cG9ydENTVndpdGhVcmwgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfcmVzdWx0OiBTZWFyY2hSZXN1bHQ7XG4gIHByaXZhdGUgX3F1ZXJ5OiBTZWFyY2hRdWVyeTtcbiAgcHJpdmF0ZSBfY2FjaGVkQ29sdW1uczogYW55W107XG4gIHByaXZhdGUgZGVmYXVsdFF1ZXJ5OiBTZWFyY2hRdWVyeTtcbiAgY3N2TG9hZGluZ1NwaW5uZXJWaXNpYmlsaXR5ID0gZmFsc2U7XG5cbiAgdmlzaWJsZUNvbmZpZyA9IGZhbHNlO1xuICBzaG93TG9hZGVyID0gZmFsc2U7XG4gIHB1YmxpYyB0b3RhbEhpdHM6IGFueTtcbiAgcHVibGljIGxpbWl0ZWRMaXN0ID0gZmFsc2U7XG4gIHB1YmxpYyByZXN1bHRHcmlkT3B0aW9uczogR3JpZE9wdGlvbnMgPSB7fTtcbiAgc2V0dGluZ3MgPSB7fTtcbiAgcXVlcnlTdWJ0aXRsZSA9ICcnO1xuICBzYXZlZFNlYXJjaENsaWNrZWQgPSBmYWxzZTtcbiAgc3RvcmVkUXVlcnk6IFN0b3JlZFF1ZXJ5O1xuICBzaG93RGlhbG9nRXhwb3J0ID0gZmFsc2U7XG4gIHNob3dXYXJuRXhwb3J0Q1NWVGhyZXNob2xkID0gZmFsc2U7XG4gIHNlbGVjdGVkT2JqZWN0SWQ6IHN0cmluZztcbiAgc3RvcmVkUXVlcnlOYW1lOiBzdHJpbmc7XG5cbiAgQElucHV0KCkgdGl0bGUgPSAnJztcbiAgQElucHV0KCkgY29uZmlnVHlwZTogT2JqZWN0VHlwZSB8IG51bGw7XG4gIEBJbnB1dCgpIGNvbmZpZ0NvbnRleHQ6IE9iamVjdFR5cGUgfCBudWxsO1xuXG4gIC8vIElmIHNldCB0byB0cnVlIHF1ZXJ5IHdpbGwgYmUgdHJlYXRlZCBsaWtlIGEgdGVtcG9yYXJ5IHNlYXJjaC5cbiAgLy8gVGhhdCBtZWFucywgZ2xvYmFsIHNlYXJjaCB3aWxsIG5vdCBiZSBhZmZlY3RlZCAoZ2xvYmFsIHF1ZXJ5IHdpbGwgYmUgcmVzZXQgYWZ0ZXIgZXhlY3V0aW9uKVxuICBASW5wdXQoKSBjbGVhckFmdGVyRXhlY3V0ZTogYm9vbGVhbjtcbiAgQElucHV0KCkgZW1wdHlNZXNzYWdlID0gJyc7XG4gIEBJbnB1dCgpIHNlbGVjdEZpcnN0ID0gdHJ1ZTtcbiAgQElucHV0KCkgZ3JpZE9wdGlvbnM6IEdyaWRPcHRpb25zO1xuICBASW5wdXQoKSBoYXNJY29uID0gZmFsc2U7XG4gIEBJbnB1dCgpIHJlZmVyZW5jZSA9IGZhbHNlO1xuICBAT3V0cHV0KCkgb25TZWxlY3Rpb25DaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25Gb2N1c0NoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkRvdWJsZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25Db250ZXh0TWVudSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uQ291bnRDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25SZWZyZXNoID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25SZXN1bHQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvblF1ZXJ5SW52YWxpZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBASW5wdXQoKVxuICBzZXQgcXVlcnkocXVlcnk6IGFueSkge1xuICAgIHRoaXMuc3RvcmVkUXVlcnkgPSB1bmRlZmluZWQ7XG4gICAgaWYgKCFxdWVyeSkge1xuICAgICAgdGhpcy5pbnZhbGlkUXVlcnkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHF1ZXJ5Lm5hbWUpIHtcbiAgICAgICAgdGhpcy5zdG9yZWRRdWVyeU5hbWUgPSBxdWVyeS5uYW1lO1xuICAgICAgICB0aGlzLnN0b3JlZFF1ZXJpZXNTZXJ2aWNlLmdldFN0b3JlZFF1ZXJpZXMkKClcbiAgICAgICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKChxdWVyaWVzU3Vic2NyaXB0aW9uOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmVkUXVlcnkgPSBxdWVyaWVzU3Vic2NyaXB0aW9uLnF1ZXJpZXMuZmlsdGVyKHEgPT4gcS5uYW1lID09PSBxdWVyeS5uYW1lKVswXTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zdG9yZWRRdWVyeU5hbWUpIHtcbiAgICAgICAgLy8gd2UgbmVlZCB0aGlzIHJlY2hlY2ssIGJlY2F1c2UgaW4gdGhlIG5nQWZ0ZXJWaWV3SW5pdCwgd2UgYXJlIHJlc2V0dGluZyB0aGUgcXVlcnkgZm9yIHRoZSBzb3J0b3B0aW9ucyxcbiAgICAgICAgLy8gYnV0IHRoaXMgdGltZSBpdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBuYW1lIGFueW1vcmVcbiAgICAgICAgdGhpcy5zdG9yZWRRdWVyaWVzU2VydmljZS5nZXRTdG9yZWRRdWVyaWVzJCgpXG4gICAgICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAgICAgLnN1YnNjcmliZSgocXVlcmllc1N1YnNjcmlwdGlvbjogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlZFF1ZXJ5ID0gcXVlcmllc1N1YnNjcmlwdGlvbi5xdWVyaWVzLmZpbHRlcihxID0+IHEubmFtZSA9PT0gdGhpcy5zdG9yZWRRdWVyeU5hbWUpWzBdO1xuICAgICAgICAgICAgdGhpcy5zdG9yZWRRdWVyeU5hbWUgPSAnJztcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3F1ZXJ5ID0gdGhpcy5zZWFyY2hTZXJ2aWNlLmJ1aWxkUXVlcnkocXVlcnkpO1xuICAgICAgaWYgKHRoaXMuX3F1ZXJ5KSB7XG4gICAgICAgIHRoaXMuZGVmYXVsdFF1ZXJ5ID0gdGhpcy5zZWFyY2hTZXJ2aWNlLmJ1aWxkUXVlcnkodGhpcy5fcXVlcnkuZ2V0UXVlcnlKc29uKCkpO1xuICAgICAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2Uuc2V0UXVlcnkodGhpcy5kZWZhdWx0UXVlcnkpO1xuICAgICAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2UuYWdncmVnYXRlKCk7XG5cbiAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5zZWFyY2hTZXJ2aWNlLmdldFJlc3VsdEZpZWxkRGVmaW5pdGlvbkNvbmZpZyh0aGlzLnF1ZXJ5KTtcbiAgICAgICAgdGhpcy5jb25maWdUeXBlID0gY29uZmlnLnR5cGU7XG4gICAgICAgIHRoaXMuY29uZmlnQ29udGV4dCA9IGNvbmZpZy5jb250ZXh0VHlwZTtcbiAgICAgICAgdGhpcy5zaG93TG9hZGVyID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlXG4gICAgICAgICAgLmdldENodW5rZWRSZXN1bHQodGhpcy5fcXVlcnksIDAsIHRoaXMuVklSVFVBTF9MSVNUX0NIVU5LX1NJWkUpXG4gICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICAgICAgdGhpcy5zaG93TG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmNsZWFyUXVlcnkodGhpcy5jbGVhckFmdGVyRXhlY3V0ZSk7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaFJlc3VsdCA9IHJlc3VsdDtcbiAgICAgICAgICB9LCBVdGlscy50aHJvdygoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNob3dMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJRdWVyeSh0cnVlKTtcbiAgICAgICAgICAgIHRoaXMuaW52YWxpZFF1ZXJ5KCk7XG4gICAgICAgICAgfSkpO1xuICAgICAgICB0aGlzLnF1ZXJ5U3VidGl0bGUgPSAnJztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnF1ZXJ5LnR5cGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdGhpcy5xdWVyeVN1YnRpdGxlICs9IHRoaXMucXVlcnkudHlwZXNbaV0ubGFiZWw7XG4gICAgICAgICAgaWYgKGkgIT09IHRoaXMucXVlcnkudHlwZXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgdGhpcy5xdWVyeVN1YnRpdGxlICs9ICcsICc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmludmFsaWRRdWVyeSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBxdWVyeSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcXVlcnk7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgc2VhcmNoUmVzdWx0KHJlc3VsdDogU2VhcmNoUmVzdWx0KSB7XG4gICAgdGhpcy5zZWxlY3RlZE9iamVjdElkID0gbnVsbDtcbiAgICAvLyB0b2RvOiBiYWNrZW5kIHNob3VsZCByZXNvbHZlIHF1ZXJ5LmZpZWxkcyBhbmQgcmV0dXJuIGNvbmZpZyBpbiBzcGVjaWZpYyBvcmRlclxuICAgIGNvbnN0IF9maWVsZHMgPSByZXN1bHQuZmllbGRzID8gb2JzZXJ2YWJsZU9mKHJlc3VsdC5maWVsZHMpIDpcbiAgICAgIHRoaXMuc2VhcmNoU2VydmljZS5mZXRjaFJlc3VsdEZpZWxkRGVmaW5pdGlvbih0aGlzLmNvbmZpZ1R5cGUsIHRoaXMuY29uZmlnQ29udGV4dCwgJ0FMTCcpO1xuICAgIF9maWVsZHMuc3Vic2NyaWJlKGZpZWxkcyA9PiB7XG4gICAgICBpZiAoZmllbGRzICYmIHRoaXMucXVlcnkgJiYgdGhpcy5xdWVyeS5maWVsZHMgJiYgdGhpcy5xdWVyeS5maWVsZHMubGVuZ3RoKSB7XG4gICAgICAgIGZpZWxkcy5lbGVtZW50cyA9IHRoaXMucXVlcnkuZmllbGRzLm1hcChmID0+IGZpZWxkcy5lbGVtZW50cy5maW5kKGUgPT4gZiA9PT0gZS5oaXRuYW1lKSk7XG4gICAgICB9XG4gICAgICByZXN1bHQuZmllbGRzID0gZmllbGRzIHx8IG5ldyBGaWVsZERlZmluaXRpb24oKTtcbiAgICAgIHRoaXMuX3Jlc3VsdCA9IHJlc3VsdDtcbiAgICAgIHRoaXMucHJvY2Vzc1Jlc3VsdHModGhpcy5fcmVzdWx0KTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBzZWFyY2hSZXN1bHQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Jlc3VsdDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29uZmlnOiBDb25maWcsXG4gICAgcHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwdWJsaWMgZ3JpZEFwaTogR3JpZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kU2VydmljZSxcbiAgICBwcml2YXRlIGFwcFNlYXJjaFNlcnZpY2U6IEFwcFNlYXJjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzZWFyY2hTZXJ2aWNlOiBTZWFyY2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogTG9jYWxTdG9yYWdlU2VydmljZSxcbiAgICBwcml2YXRlIHN0b3JlZFF1ZXJpZXNTZXJ2aWNlOiBTdG9yZWRRdWVyaWVzU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgZmI6IFVudHlwZWRGb3JtQnVpbGRlclxuICApIHtcbiAgICB0aGlzLlZJUlRVQUxfTElTVF9DSFVOS19TSVpFID0gdGhpcy5jb25maWcuZ2V0UmF3KCdzZWFyY2gubGltaXQnKSBhcyBudW1iZXI7XG4gICAgdGhpcy5yZXNvbHZlUmVmZXJlbmNlc0NzdiA9IHRoaXMuY29uZmlnLmdldFJhdygnc2VhcmNoLnJlc29sdmVSZWZlcmVuY2VzQ1NWJykgYXMgYm9vbGVhbiB8fCBmYWxzZTtcbiAgICB0aGlzLnJlc29sdmVSZWZlcmVuY2VzQ3N2VGhyZXNob2xkID0gdGhpcy5jb25maWcuZ2V0UmF3KCdzZWFyY2gucmVzb2x2ZVJlZmVyZW5jZXNDU1ZUaHJlc2hvbGQnKSBhcyBudW1iZXIgfHwgMTAwMDA7XG4gICAgdGhpcy5fY2FjaGVkQ29sdW1ucyA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0SXRlbShSZXN1bHRMaXN0Q29tcG9uZW50LkNPTFVNTlNfREVGSU5JVElPTikgfHwgW107XG4gICAgdGhpcy5zZXR1cEZvcm0udmFsdWVDaGFuZ2VzLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZSgoXykgPT4ge1xuICAgICAgdGhpcy5fZXhwb3J0Q1NWd2l0aFVybCA9IHRoaXMuc2V0dXBGb3JtLmdldCgnZXhwb3J0Q1NWd2l0aFVybCcpLnZhbHVlO1xuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRJdGVtKHRoaXMuZXhwb3J0Q1NWd2l0aFVybEtleSwgdGhpcy5zZXR1cEZvcm0uZ2V0KCdleHBvcnRDU1Z3aXRoVXJsJykudmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgY2xlYXJRdWVyeShjbGVhckFmdGVyRXhlY3V0ZSkge1xuICAgIGlmIChjbGVhckFmdGVyRXhlY3V0ZSkge1xuICAgICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLmNsZWFyUXVlcnkoKTtcbiAgICB9XG4gIH1cblxuICBpbnZhbGlkUXVlcnkoKSB7XG4gICAgdGhpcy5vblF1ZXJ5SW52YWxpZC5lbWl0KCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNlbGVjdGVkT2JqZWN0SWQgPSBudWxsO1xuICAgIHRoaXMuZXZlbnRTZXJ2aWNlXG4gICAgICAub24oRW5haW9FdmVudC5ETVNfT0JKRUNUX0RFTEVURUQpXG4gICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmdyaWQpIHtcbiAgICAgICAgICB0aGlzLmdyaWQudXBkYXRlUm93cyh0aGlzLmJhY2tlbmQudXBkYXRlKFtyZXMuZGF0YV0sIFt7aWQ6IHJlcy5kYXRhLmlkfV0pKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgdGhpcy5fZXhwb3J0Q1NWd2l0aFVybCA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSh0aGlzLmV4cG9ydENTVndpdGhVcmxLZXkpIHx8IHRoaXMuc2V0dXBGb3JtLmdldCgnZXhwb3J0Q1NWd2l0aFVybCcpLnZhbHVlO1xuICAgIHRoaXMuc2V0dXBGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgZXhwb3J0Q1NWd2l0aFVybDogdGhpcy5fZXhwb3J0Q1NWd2l0aFVybFxuICAgIH0pO1xuXG4gICAgdGhpcy5ldmVudFNlcnZpY2VcbiAgICAgIC5vbihFbmFpb0V2ZW50LkRNU19PQkpFQ1RfVVBEQVRFRClcbiAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZ3JpZCAmJiByZXMuZGF0YS5kYXRhKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVSb3cocmVzLmRhdGEuaWQsIHJlcy5kYXRhLmRhdGEpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmdyaWQgJiYgdGhpcy5fcXVlcnkpIHtcbiAgICAgICAgdGhpcy5fcXVlcnkuc29ydE9wdGlvbnMgPSAodGhpcy5ncmlkLmFwaS5nZXRDb2x1bW5TdGF0ZSgpIHx8IFtdKVxuICAgICAgICAgIC5tYXAobW9kZWwgPT4gbmV3IFNvcnRPcHRpb24oR3JpZFNlcnZpY2UucW5hbWVGb3JtYXR0ZXIobW9kZWwuY29sSWQgKyB0aGlzLnBvc3RmaXhTb3J0KG1vZGVsLmNvbElkKSksIG1vZGVsLnNvcnQpKTtcbiAgICAgICAgdGhpcy5xdWVyeSA9IHRoaXMuX3F1ZXJ5O1xuICAgICAgfVxuICAgIH0sIDIwMCk7XG4gIH1cblxuICAvLyBzaG9ydGN1dCBhY3Rpb25zXG4gIHNob3J0Y3V0czogR2xvYmFsU2hvcnRjdXRDb21wb25lbnQgPSB7XG4gICAgaWQ6ICdlby53b3Jrc3BhY2Uud2lkZ2V0LmhpdGxpc3QubGFiZWwnLFxuICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby53b3Jrc3BhY2Uud2lkZ2V0LmhpdGxpc3QubGFiZWwnKSxcbiAgICBsYWJlbEtleTogJ2VvLndvcmtzcGFjZS53aWRnZXQuaGl0bGlzdC5sYWJlbCcsXG4gICAgYWN0aW9uczogW3tcbiAgICAgIG5hbWU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmNvbHVtbi5jb25maWcudGl0bGUnKSxcbiAgICAgIG5hbWVLZXk6ICdlby5jb2x1bW4uY29uZmlnLnRpdGxlJyxcbiAgICAgIHNob3J0Y3V0OiBuZXcgU2hvcnRjdXQoJ1AnLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgb25FeGVjdXRlQWN0aW9uOiAoKSA9PiB7XG4gICAgICAgIHRoaXMudmlzaWJsZUNvbmZpZyA9ICF0aGlzLnZpc2libGVDb25maWc7XG4gICAgICB9LFxuICAgICAgaXNIaWRkZW46ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucmVzdWx0bGlzdC5leHBvcnQuY3N2JyksXG4gICAgICBuYW1lS2V5OiAnZW8ucmVzdWx0bGlzdC5leHBvcnQuY3N2JyxcbiAgICAgIHNob3J0Y3V0OiBuZXcgU2hvcnRjdXQoJ1gnLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgb25FeGVjdXRlQWN0aW9uOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuZXhwb3J0Q1NWKCk7XG4gICAgICB9LFxuICAgICAgaXNIaWRkZW46ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ub2JqZWN0LmFjdGlvbnMudGl0bGUnKSxcbiAgICAgIG5hbWVLZXk6ICdlby5vYmplY3QuYWN0aW9ucy50aXRsZScsXG4gICAgICBzaG9ydGN1dDogbmV3IFNob3J0Y3V0KCdNJywgZmFsc2UsIGZhbHNlKSxcbiAgICAgIG9uRXhlY3V0ZUFjdGlvbjogKCkgPT4ge1xuICAgICAgICB0aGlzLmxpc3Quc2hvd0FjdGlvbnMoKTtcbiAgICAgIH0sXG4gICAgICBpc0hpZGRlbjogKCkgPT4ge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5saXN0LnJlZnJlc2gnKSxcbiAgICAgIG5hbWVLZXk6ICdlby5saXN0LnJlZnJlc2gnLFxuICAgICAgc2hvcnRjdXQ6IG5ldyBTaG9ydGN1dCgnUicsIGZhbHNlLCBmYWxzZSksXG4gICAgICBvbkV4ZWN1dGVBY3Rpb246ICgpID0+IHtcbiAgICAgICAgdGhpcy5yZWZyZXNoR3JpZCgpO1xuICAgICAgfSxcbiAgICAgIGlzSGlkZGVuOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XVxuICB9O1xuXG4gIHVwZGF0ZVJvdyhpZDogc3RyaW5nLCBkYXRhOiBhbnkpIHtcbiAgICBjb25zdCBtYXRjaFJvdyA9IHRoaXMucmVzdWx0R3JpZE9wdGlvbnMucm93RGF0YS5maW5kKChyKSA9PiByLmlkID09PSBpZCk7XG4gICAgY29uc3Qgc3lzdGVtRmllbGRzID0gWydjcmVhdGVkJywgJ2NyZWF0b3J0aXRsZScsICdtb2RpZmllZCcsICdtb2RpZmllcnRpdGxlJywgJ3RpdGxlJywgJ2Rlc2NyaXB0aW9uJywgJ3R5cGUnLCAndmVyc2lvbicsICdmaWxlc2l6ZScsICdmaWxlbmFtZScsICdtaW1ldHlwZWdyb3VwJywgJ21pbWV0eXBlJ107XG4gICAgbGV0IG1pc3NpbmdDb2x1bW5zID0gdGhpcy5yZXN1bHRHcmlkT3B0aW9ucy5jb2x1bW5EZWZzO1xuICAgIGlmIChtYXRjaFJvdykge1xuICAgICAgT2JqZWN0LmtleXMobWF0Y2hSb3cpLmZvckVhY2goKGspID0+IHtcbiAgICAgICAgaWYgKGRhdGEuaGFzT3duUHJvcGVydHkoaykpIHtcbiAgICAgICAgICBpZiAoZGF0YS5oYXNPd25Qcm9wZXJ0eShrICsgJ19tZXRhJykpIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGFbayArICdfbWV0YSddKSkge1xuICAgICAgICAgICAgICBjb25zdCByb3cgPSBbXTtcbiAgICAgICAgICAgICAgZGF0YVtrICsgJ19tZXRhJ10uZm9yRWFjaChkID0+IHtcbiAgICAgICAgICAgICAgICByb3cucHVzaChkLnRpdGxlID8gZC50aXRsZSA6IGQubGFiZWwpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgbWF0Y2hSb3dba10gPSByb3c7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBpZiBpdCBpcyBhbiBvcmcgZmllbGQsIGl0IHdpbGwgaGF2ZSBhIHRpdGxlIHRvIHNob3csIG90aGVyd2lzZSBpdCBpcyBhIGNvZGVzeXN0ZW0gYW5kIHdlIHNob3cgdGhlIGxhYmVsXG4gICAgICAgICAgICAgIG1hdGNoUm93W2tdID0gZGF0YVtrICsgJ19tZXRhJ10udGl0bGUgPyBkYXRhW2sgKyAnX21ldGEnXS50aXRsZSA6IGRhdGFbayArICdfbWV0YSddLmxhYmVsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtYXRjaFJvd1trXSA9IGRhdGFba107XG4gICAgICAgICAgfVxuICAgICAgICAgIG1pc3NpbmdDb2x1bW5zID0gbWlzc2luZ0NvbHVtbnMuZmlsdGVyKChjb2x1bW46IENvbERlZikgPT4gY29sdW1uLmZpZWxkICE9PSBrKTtcbiAgICAgICAgfSBlbHNlIGlmIChkYXRhLmhhc093blByb3BlcnR5KGsuc3BsaXQoJy4nKVsxXSkpIHtcbiAgICAgICAgICAvLyBzb21lIHRlY2huaWNhbCBuYW1lcyBoYXZlIHRoZSBvYmplY3QgdHlwZSBhcyBhIHByZWZpeCwgd2UgaGF2ZSB0byBnZXQgcmlkIG9mIGl0XG4gICAgICAgICAgY29uc3Qga1NwbGl0ID0gay5zcGxpdCgnLicpWzFdO1xuICAgICAgICAgIGlmIChkYXRhLmhhc093blByb3BlcnR5KGtTcGxpdCArICdfbWV0YScpKSB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhW2tTcGxpdCArICdfbWV0YSddKSkge1xuICAgICAgICAgICAgICBjb25zdCByb3cgPSBbXTtcbiAgICAgICAgICAgICAgZGF0YVtrU3BsaXQgKyAnX21ldGEnXS5mb3JFYWNoKGQgPT4ge1xuICAgICAgICAgICAgICAgIHJvdy5wdXNoKGQudGl0bGUgPyBkLnRpdGxlIDogZC5sYWJlbCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBtYXRjaFJvd1trXSA9IHJvdztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIGlmIGl0IGlzIGFuIG9yZyBmaWVsZCwgaXQgd2lsbCBoYXZlIGEgdGl0bGUgdG8gc2hvdywgb3RoZXJ3aXNlIGl0IGlzIGEgY29kZXN5c3RlbSBhbmQgd2Ugc2hvdyB0aGUgbGFiZWxcbiAgICAgICAgICAgICAgbWF0Y2hSb3dba10gPSBkYXRhW2tTcGxpdCArICdfbWV0YSddLnRpdGxlID8gZGF0YVtrU3BsaXQgKyAnX21ldGEnXS50aXRsZSA6IGRhdGFba1NwbGl0ICsgJ19tZXRhJ10ubGFiZWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1hdGNoUm93W2tdID0gZGF0YVtrU3BsaXRdO1xuICAgICAgICAgIH1cbiAgICAgICAgICBtaXNzaW5nQ29sdW1ucyA9IG1pc3NpbmdDb2x1bW5zLmZpbHRlcigoY29sdW1uOiBDb2xEZWYpID0+IGNvbHVtbi5maWVsZCAhPT0gayk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgLy8gd2UgbmVlZCB0byBpdGVyYXRlIHRocm91Z2ggdGhlIG5vdCBhbHJlYWR5IGFwcGxpZWQgY29sdW1ucywgd2hpY2ggd2VyZSBjaGFuZ2VkIGZyb20gbnVsbCBvciB0byBudWxsXG4gICAgICBtaXNzaW5nQ29sdW1ucy5mb3JFYWNoKChjb2x1bW46IENvbERlZikgPT4ge1xuICAgICAgICBpZiAoZGF0YS5oYXNPd25Qcm9wZXJ0eShjb2x1bW4uZmllbGQpKSB7XG4gICAgICAgICAgbWF0Y2hSb3dbY29sdW1uLmZpZWxkXSA9IGRhdGFbY29sdW1uLmZpZWxkXTtcbiAgICAgICAgfSBlbHNlIGlmIChkYXRhLmhhc093blByb3BlcnR5KGNvbHVtbi5maWVsZC5zcGxpdCgnLicpWzFdKSkge1xuICAgICAgICAgIG1hdGNoUm93W2NvbHVtbi5maWVsZF0gPSBkYXRhW2NvbHVtbi5maWVsZC5zcGxpdCgnLicpWzFdXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoIXN5c3RlbUZpZWxkcy5pbmNsdWRlcyhjb2x1bW4uZmllbGQpICYmIGNvbHVtbi5oZWFkZXJDbGFzcyAhPT0gJ2NvbnRleHRmb2xkZXInKSB7XG4gICAgICAgICAgICBtYXRjaFJvd1tjb2x1bW4uZmllbGRdID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgbWF0Y2hSb3cuaWQgPSBpZDtcbiAgICAgIGNvbnN0IHJvd05vZGUgPSB0aGlzLmdyaWQuYXBpLmdldFJvd05vZGUoaWQpO1xuICAgICAgcm93Tm9kZSAmJiByb3dOb2RlLnNldERhdGEobWF0Y2hSb3cpO1xuICAgIH1cbiAgfVxuXG4gIHJlZnJlc2hHcmlkKHVzZUNvbHVtblN0YXRlID0gdHJ1ZSkge1xuICAgIGlmICghdGhpcy5xdWVyeSB8fCAhdGhpcy5ncmlkPy5hcGkpIHJldHVybjtcbiAgICBjb25zdCBjb2x1bW5TdGF0ZSA9IHRoaXMuZ3JpZC5hcGkuZ2V0Q29sdW1uU3RhdGUoKSB8fCBbXTtcbiAgICBjb25zdCBmaWx0ZXJNb2RlbCA9IHRoaXMuZ3JpZC5hcGkuZ2V0RmlsdGVyTW9kZWwoKSB8fCB7fTtcbiAgICB0aGlzLl9xdWVyeS5zb3J0T3B0aW9ucyA9IGNvbHVtblN0YXRlLm1hcChcbiAgICAgIG1vZGVsID0+IG5ldyBTb3J0T3B0aW9uKEdyaWRTZXJ2aWNlLnFuYW1lRm9ybWF0dGVyKG1vZGVsLmNvbElkICsgdGhpcy5wb3N0Zml4U29ydChtb2RlbC5jb2xJZCkpLFxuICAgICAgICBtb2RlbC5zb3J0KSk7XG4gICAgdGhpcy5fcXVlcnkuZmlsdGVycyA9IHRoaXMuZGVmYXVsdFF1ZXJ5LmZpbHRlcnMuY29uY2F0KE9iamVjdC5rZXlzKGZpbHRlck1vZGVsKS5tYXAoXG4gICAgICBrZXkgPT4gR3JpZEZpbHRlci5vcGVyYXRvcihHcmlkU2VydmljZS5xbmFtZUZvcm1hdHRlcihrZXkpLFxuICAgICAgICBmaWx0ZXJNb2RlbFtrZXldKSkpO1xuICAgIHRoaXMucXVlcnkgPSB0aGlzLl9xdWVyeTtcbiAgICBpZiAodXNlQ29sdW1uU3RhdGUpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCB7IGFwaSB9ID0gdGhpcy5ncmlkLmFnR3JpZDtcbiAgICAgICAgYXBpLnNldEZpbHRlck1vZGVsKGZpbHRlck1vZGVsKTtcbiAgICAgICAgYXBpLmFwcGx5Q29sdW1uU3RhdGUoeyBzdGF0ZTogY29sdW1uU3RhdGUgfSk7XG4gICAgICB9LCAzMDApO1xuICAgIH1cbiAgICB0aGlzLm9uUmVmcmVzaC5lbWl0KHRoaXMucXVlcnkpO1xuICB9XG5cbiAgb25Db2x1bW5SZXNpemVkKGNvbHVtbjogYW55KSB7XG4gICAgbGV0IGNvbCA9IHRoaXMuX2NhY2hlZENvbHVtbnMuZmluZChjID0+IGMucW5hbWUgPT09IGNvbHVtbi5jb2xEZWYucmVmRGF0YS5xbmFtZSk7XG4gICAgaWYgKGNvbCkge1xuICAgICAgY29sLndpZHRoID0gY29sdW1uLmFjdHVhbFdpZHRoO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9jYWNoZWRDb2x1bW5zLnB1c2goe3FuYW1lOiBjb2x1bW4uY29sRGVmLnJlZkRhdGEucW5hbWUsIHdpZHRoOiBjb2x1bW4uYWN0dWFsV2lkdGh9KTtcbiAgICB9XG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRJdGVtKFJlc3VsdExpc3RDb21wb25lbnQuQ09MVU1OU19ERUZJTklUSU9OLCB0aGlzLl9jYWNoZWRDb2x1bW5zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFdmVudCBoYW5kbGVyIGZvciBncmlkIGNvbmZpZ3VyYXRpb25cbiAgICogQHBhcmFtICRldmVudFxuICAgKi9cbiAgb25Db25maWdDaGFuZ2VkKGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICB0aGlzLnJlZnJlc2hHcmlkKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUHJvY2VzcyBTZWFyY2ggcmVzdWx0ICYgZ2VuZXJhdGUgY29sdW1uIGRlZmluaXRpb25zXG4gICAqIEBwYXJhbSByZXN1bHRcbiAgICovXG4gIHByaXZhdGUgcHJvY2Vzc1Jlc3VsdHMocmVzdWx0OiBTZWFyY2hSZXN1bHQpIHtcblxuICAgIHRoaXMudmlzaWJsZUNvbmZpZyA9IGZhbHNlO1xuICAgIHRoaXMub25SZXN1bHQuZW1pdChyZXN1bHQpO1xuICAgIHRoaXMudG90YWxIaXRzID0gcmVzdWx0LmNvdW50LnZhbHVlO1xuICAgIHRoaXMubGltaXRlZExpc3QgPSB0aGlzLnRvdGFsSGl0cyA+IHJlc3VsdC5oaXRzLmxlbmd0aDtcbiAgICBsZXQgZ3JpZE9wdGlvbnM6IEdyaWRPcHRpb25zID0ge2NvbnRleHQ6IHt9LCBvblNvcnRDaGFuZ2VkOiAoKSA9PiB0aGlzLm9uUGFnZUNoYW5nZWQoKSwgb25GaWx0ZXJDaGFuZ2VkOiAoKSA9PiB0aGlzLm9uUGFnZUNoYW5nZWQoKX07XG4gICAgY29uc3Qgc2VhcmNoTW9kZSA9IHJlc3VsdC5maWVsZHMubW9kZSA/IHJlc3VsdC5maWVsZHMubW9kZSA6IG51bGw7XG5cbiAgICB0aGlzLnNldHRpbmdzID0gdGhpcy5saW1pdGVkTGlzdCAmJiB0aGlzLnF1ZXJ5ID8ge3RvdGFsOiB0aGlzLnRvdGFsSGl0cywgc2l6ZTogdGhpcy5WSVJUVUFMX0xJU1RfQ0hVTktfU0laRSwgcmVsYXRpb246IHJlc3VsdC5jb3VudC5yZWxhdGlvbn0gOiBudWxsO1xuICAgIGdyaWRPcHRpb25zLnJvd0RhdGEgPSByZXN1bHQuaGl0cztcblxuICAgIGNvbnN0IHtlbGVtZW50cywgc29ydG9yZGVyLCBncm91cG9yZGVyLCBwaW5uZWQsIGFsaWdubWVudHh9ID0gcmVzdWx0LmZpZWxkcztcblxuICAgIGdyaWRPcHRpb25zLmNvbnRleHQuY291bnQgPSByZXN1bHQuY291bnQ7XG4gICAgZ3JpZE9wdGlvbnMuY29sdW1uRGVmcyA9IHRoaXMuZ3JpZEFwaS5nZXRDb2x1bW5EZWZzKGVsZW1lbnRzLCBzb3J0b3JkZXIsIGdyb3Vwb3JkZXIsIHBpbm5lZCwgYWxpZ25tZW50eCwgZmFsc2UsIHRoaXMuX2NhY2hlZENvbHVtbnMsIHNlYXJjaE1vZGUpO1xuXG4gICAgY29uc3QgcmVmcmVzaEdyaWQgPSB0aGlzLmhhc0dyaWRPcHRpb25zO1xuICAgIE9iamVjdC5hc3NpZ24odGhpcy5yZXN1bHRHcmlkT3B0aW9ucywgZ3JpZE9wdGlvbnMsIHRoaXMuZ3JpZE9wdGlvbnMpO1xuXG4gICAgaWYgKHJlZnJlc2hHcmlkKSB7XG4gICAgICAvLyByZWxvYWQgZ3JpZCBjb21wb25lbnRcbiAgICAgIHRoaXMucmVzdWx0R3JpZE9wdGlvbnMgPSB7fTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gT2JqZWN0LmFzc2lnbih0aGlzLnJlc3VsdEdyaWRPcHRpb25zLCBncmlkT3B0aW9ucywgdGhpcy5ncmlkT3B0aW9ucyksIDApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcG9zdGZpeFNvcnQoaWQpIHtcbiAgICAvLyB0b2RvOiByZW1vdmUgd2hlbiBpdCdzIGZpeGVkIG9uIGJhY2tlbmRcbiAgICByZXR1cm4gaWQubWF0Y2goLyhec3lzb2JqZWN0XFwufF5zeXNkb2N1bWVudFxcLikoY3JlYXRvciR8bW9kaWZpZXIkKS8pID8gJ3RpdGxlJyA6ICcnO1xuICB9XG5cbiAgb25QYWdlQ2hhbmdlZChwYWdlOiBudW1iZXIgPSAxKSB7XG4gICAgaWYgKHRoaXMubGltaXRlZExpc3QgJiYgdGhpcy5xdWVyeSkge1xuICAgICAgdGhpcy5mZXRjaFJvd0RhdGEoe1xuICAgICAgICBzdGFydFJvdzogdGhpcy5WSVJUVUFMX0xJU1RfQ0hVTktfU0laRSAqIChwYWdlIC0gMSksXG4gICAgICAgIHNvcnRNb2RlbDogdGhpcy5ncmlkLmFwaS5nZXRDb2x1bW5TdGF0ZSgpLFxuICAgICAgICBmaWx0ZXJNb2RlbDogdGhpcy5ncmlkLmFwaS5nZXRGaWx0ZXJNb2RlbCgpLFxuICAgICAgICBzdWNjZXNzQ2FsbGJhY2s6IChyb3dzLCB0b3RhbCwgcmVsYXRpb24pID0+IHtcbiAgICAgICAgICB0aGlzLnNldHRpbmdzID0ge3RvdGFsLCByZWxhdGlvbiwgc2l6ZTogdGhpcy5WSVJUVUFMX0xJU1RfQ0hVTktfU0laRSwgcGFnZX07XG4gICAgICAgICAgdGhpcy5ncmlkLmFwaS5zZXRHcmlkT3B0aW9uKCdyb3dEYXRhJywgcm93cyk7XG4gICAgICAgICAgdGhpcy5ncmlkLnNlbGVjdFJvdygwKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIGZvciBmZXRjaGluZyB0aGUgaXRlbXMgdG8gYmUgZGlzcGxheWVkIHdpdGggYSB2aXJ0dWFsIHJvdyBtb2RlbC5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIHJvdyBtb2RlbCBwYXJhbXMgKGluY2wuIHN0YXJ0Um93LCBlbmRSb3csIHNvcnRNb2RlbCBhbmQgZmlsdGVyTW9kZWwpXG4gICAqL1xuICBwcml2YXRlIGZldGNoUm93RGF0YShwYXJhbXM6IGFueSkge1xuXG4gICAgaWYgKHRoaXMucXVlcnkpIHtcblxuICAgICAgdGhpcy51cGRhdGVRdWVyeShwYXJhbXMpO1xuXG4gICAgICB0aGlzLnNlYXJjaFNlcnZpY2VcbiAgICAgICAgLmdldENodW5rZWRSZXN1bHQodGhpcy5xdWVyeSwgcGFyYW1zLnN0YXJ0Um93LCB0aGlzLlZJUlRVQUxfTElTVF9DSFVOS19TSVpFKVxuICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgdGhpcy50b3RhbEhpdHMgPSB0aGlzLmdyaWQuZ3JpZE9wdGlvbnMuY29udGV4dC5yb3dDb3VudCA9IHJlc3VsdC5jb3VudC52YWx1ZTtcbiAgICAgICAgICB0aGlzLmdyaWQuZ3JpZE9wdGlvbnMuY29udGV4dC5jb3VudCA9IHJlc3VsdC5jb3VudDtcbiAgICAgICAgICBwYXJhbXMuc3VjY2Vzc0NhbGxiYWNrKHJlc3VsdC5oaXRzLCB0aGlzLnRvdGFsSGl0cywgcmVzdWx0LmNvdW50LnJlbGF0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVRdWVyeShwYXJhbXM6IGFueSkge1xuICAgIHRoaXMucXVlcnkuc29ydE9wdGlvbnMgPSAocGFyYW1zLnNvcnRNb2RlbCB8fCB0aGlzLmdyaWQuYXBpLmdldENvbHVtblN0YXRlKCkgfHwgW10pXG4gICAgICAubWFwKG1vZGVsID0+IG5ldyBTb3J0T3B0aW9uKEdyaWRTZXJ2aWNlLnFuYW1lRm9ybWF0dGVyKG1vZGVsLmNvbElkICsgdGhpcy5wb3N0Zml4U29ydChtb2RlbC5jb2xJZCkpLCBtb2RlbC5zb3J0KSk7XG5cbiAgICB0aGlzLnF1ZXJ5LmZpbHRlcnMgPSB0aGlzLmRlZmF1bHRRdWVyeS5maWx0ZXJzXG4gICAgICAuY29uY2F0KChPYmplY3Qua2V5cyhwYXJhbXMuZmlsdGVyTW9kZWwgfHwgdGhpcy5ncmlkLmFwaS5nZXRGaWx0ZXJNb2RlbCgpKSB8fCBbXSlcbiAgICAgICAgLm1hcChrZXkgPT4gR3JpZEZpbHRlci5vcGVyYXRvcihHcmlkU2VydmljZS5xbmFtZUZvcm1hdHRlcihrZXkpLCAocGFyYW1zLmZpbHRlck1vZGVsIHx8IHRoaXMuZ3JpZC5hcGkuZ2V0RmlsdGVyTW9kZWwoKSlba2V5XSkpKTtcblxuICAgIHRoaXMucXVlcnkuc2VhcmNoTW9kZSA9IFNlYXJjaFF1ZXJ5LkRFRkFVTFRfU0VBUkNIX01PREU7XG4gIH1cblxuICBleGVjdXRlU3VnZ2VzdFNlYXJjaCgpIHtcbiAgICAvLyB0b2RvOiBpbXBsZW1lbnRcbiAgfVxuXG4gIHByaXZhdGUgcmVzdWx0SGFzUmVmZXJlbmNlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVzdWx0LmZpZWxkcy5lbGVtZW50cy5zb21lKGVsZW1lbnQgPT4gZWxlbWVudC50eXBlID09PSAnT1JHQU5JWkFUSU9OJyB8fCBlbGVtZW50LnR5cGUgPT09ICdSRUZFUkVOQ0UnKTtcbiAgfVxuXG4gIG9wZW5EaWFsb2dFeHBvcnQoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93RGlhbG9nRXhwb3J0ID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5yZXNvbHZlUmVmZXJlbmNlc0NzdlxuICAgICAgJiYgKHRoaXMubGlzdC5ncmlkQ291bnQudG90YWxDb3VudCA+IHRoaXMucmVzb2x2ZVJlZmVyZW5jZXNDc3ZUaHJlc2hvbGQgfHwgdGhpcy5saXN0LmdyaWRDb3VudC5yZWxhdGlvbiA9PT0gJ2d0ZScpXG4gICAgICAmJiB0aGlzLnJlc3VsdEhhc1JlZmVyZW5jZXMoKSkge1xuICAgICAgdGhpcy5zaG93V2FybkV4cG9ydENTVlRocmVzaG9sZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0Q1NWKCk6IHZvaWQge1xuICAgIHRoaXMuY3N2TG9hZGluZ1NwaW5uZXJWaXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICB0aGlzLnVwZGF0ZVF1ZXJ5KHt9KTtcbiAgICB0aGlzLnNob3dXYXJuRXhwb3J0Q1NWVGhyZXNob2xkID0gZmFsc2U7XG4gICAgdGhpcy5zaG93RGlhbG9nRXhwb3J0ID0gZmFsc2U7XG4gICAgY29uc3QgcXVlcnlKc29uID0gdGhpcy5xdWVyeS5nZXRRdWVyeUpzb24odGhpcy5yZXNvbHZlUmVmZXJlbmNlc0Nzdik7XG4gICAgcXVlcnlKc29uLmZpZWxkcyA9IFtdO1xuICAgIHRoaXMucmVzdWx0R3JpZE9wdGlvbnM/LmNvbHVtbkRlZnMuZm9yRWFjaChjb2xEZWYgPT4ge1xuICAgICAgcXVlcnlKc29uLmZpZWxkcy5wdXNoKGNvbERlZlsnZmllbGQnXSArICcgJyArIGNvbERlZi5oZWFkZXJOYW1lKTtcbiAgICB9KTtcbiAgICB0aGlzLnNlYXJjaFNlcnZpY2UuZG93bmxvYWRDc3ZGcm9tUXVlcnkocXVlcnlKc29uLCB0aGlzLl9leHBvcnRDU1Z3aXRoVXJsKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5jc3ZMb2FkaW5nU3Bpbm5lclZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIHBhcnNlRG1zUGFyYW1zKGRhdGEpIHtcbiAgICByZXR1cm4ge2lkOiBkYXRhICYmIGRhdGEuaWQgPyBkYXRhLmlkIDogbnVsbCwgdHlwZTogZGF0YSAmJiBkYXRhLnR5cGUgPyBkYXRhLnR5cGUgOiBudWxsfTtcbiAgfVxuXG4gIGdldCBoYXNHcmlkT3B0aW9ucygpIHtcbiAgICByZXR1cm4gISEodGhpcy5yZXN1bHRHcmlkT3B0aW9ucy5kYXRhc291cmNlIHx8IHRoaXMucmVzdWx0R3JpZE9wdGlvbnMucm93RGF0YSk7XG4gIH1cblxuICBvblN0b3JlZFF1ZXJ5TG9hZGVkKCkge1xuICAgIHRoaXMuc2F2ZWRTZWFyY2hDbGlja2VkID0gZmFsc2U7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3tvdXRsZXRzOiB7bW9kYWw6ICdzZWFyY2gnfX1dKTtcbiAgfVxuXG4gIG9uU3RvcmVkUXVlcnlFeGVjdXRlKGV2dCkge1xuICAgIHRoaXMuc2F2ZWRTZWFyY2hDbGlja2VkID0gZmFsc2U7XG4gICAgY29uc3QgdXJpUGFyYW0gPSBlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoZXZ0LnF1ZXJ5SnNvbikpO1xuICAgIGNvbnN0IHVyaVBhcmFtUXVlcnk6IE5hdmlnYXRpb25FeHRyYXMgPSB7cXVlcnlQYXJhbXM6IHsncXVlcnknOiB1cmlQYXJhbX19O1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3Jlc3VsdCddLCB1cmlQYXJhbVF1ZXJ5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBjbGljayBldmVudCBvbiBhIGdyaWQgY2VsbC5cbiAgICpcbiAgICogQHBhcmFtIHthbnl9IGV2ZW50IC0gVGhlIGV2ZW50IG9iamVjdCBjb250YWluaW5nIGRhdGEgYWJvdXQgdGhlIGNsaWNrZWQgY2VsbC5cbiAgICovXG4gIGVvR3JpZENlbGxDbGljayhldmVudCkge1xuICAgIGlmICh0aGlzLl9xdWVyeSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkT2JqZWN0SWQgPSBldmVudC5kYXRhLmlkO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7cXVlcnlQYXJhbXM6IHtvYmplY3RJZDogdGhpcy5zZWxlY3RlZE9iamVjdElkfSwgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJ30pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibG9hZGVyLW92ZXJsYXlfX21hc2tcIiAqbmdJZj1cInNob3dMb2FkZXJcIj5cbiAgPGVvLWxvYWRpbmctc3Bpbm5lciBjbGFzcz1cInJlc3VsdC1saXN0X19sb2FkZXJcIiBbc2l6ZV09XCInbWVkaXVtJ1wiPjwvZW8tbG9hZGluZy1zcGlubmVyPlxuPC9kaXY+XG48ZW8tY29sdW1uLWNvbmZpZ3VyYXRvciAqbmdJZj1cInZpc2libGVDb25maWdcIiBbdmlzaWJsZV09XCJ2aXNpYmxlQ29uZmlnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb25maWdUeXBlXT1cImNvbmZpZ1R5cGVcIiBbY29uZmlnQ29udGV4dF09XCJjb25maWdDb250ZXh0XCIgW2VvR3JpZF09XCJncmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkNvbmZpZ0NoYW5nZWQpPVwidmlzaWJsZUNvbmZpZyA9IGZhbHNlOyBvbkNvbmZpZ0NoYW5nZWQoJGV2ZW50KVwiID48L2VvLWNvbHVtbi1jb25maWd1cmF0b3I+XG5cbjxlby1saXN0LWNvbnRhaW5lciAjZW9MaXN0IFthcHBseVNlbGVjdGlvbl09XCJ7fVwiIFtsb2FkaW5nXT1cImZhbHNlXCIgW3BhcnNlRG1zUGFyYW1zXT1cInBhcnNlRG1zUGFyYW1zXCI+XG4gIDxkaXYgY2xhc3M9XCJlby1oZWFkZXJcIiBbZW9TaG9ydGN1dHNdPVwic2hvcnRjdXRzXCI+XG4gICAgPGVvLWljb24gY2xhc3M9XCJlby1oZWFkZXItaWNvblwiICpuZ0lmPVwiaGFzSWNvblwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3NlYXJjaC5zdmcnXCI+PC9lby1pY29uPlxuICAgIDxkaXYgY2xhc3M9XCJlby1oZWFkZXItaW5mb1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlci10aXRsZVwiPnt7dGl0bGUgfHwgKCdlby5zZWFyY2gudGl0bGUnIHwgdHJhbnNsYXRlKX19PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZW8taGVhZGVyLXN1YnRpdGxlXCI+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIXN0b3JlZFF1ZXJ5OyBlbHNlIHN0b3JlZFF1ZXJ5VGV4dFwiIGNsYXNzPVwiZW8taGVhZGVyLXN1YnRpdGxlX19sYWJlbFwiIFt0aXRsZV09XCJxdWVyeVN1YnRpdGxlXCI+e3txdWVyeVN1YnRpdGxlfX08L3NwYW4+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjc3RvcmVkUXVlcnlUZXh0PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdG9yZWRRdWVyeS5wYXJhbWV0ZXIubGVuZ3RoID09PSAwOyBlbHNlIHN0b3JlZFF1ZXJ5RGlhbG9nXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVvLWhlYWRlci1zdWJ0aXRsZV9fbGFiZWxcIiBbdGl0bGVdPVwiKCdlby5zZWFyY2guYXNpZGUuc3VtbWFyeS5zdG9yZWRxdWVyeScgfCB0cmFuc2xhdGUpICsgJzogJyArIHN0b3JlZFF1ZXJ5Lm5hbWVcIj5cbiAgICAgICAgICAgICAge3snZW8uc2VhcmNoLmFzaWRlLnN1bW1hcnkuc3RvcmVkcXVlcnknIHwgdHJhbnNsYXRlfX06IHt7c3RvcmVkUXVlcnkubmFtZX19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjc3RvcmVkUXVlcnlEaWFsb2c+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0b3JlZC1xdWVyeVwiPlxuICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgIHt7J2VvLnNlYXJjaC5hc2lkZS5zdW1tYXJ5LnN0b3JlZHF1ZXJ5JyB8IHRyYW5zbGF0ZX19OlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInNxXCIgKGNsaWNrKT1cInNhdmVkU2VhcmNoQ2xpY2tlZCA9IHRydWVcIiAoa2V5dXAuZW50ZXIpPVwic2F2ZWRTZWFyY2hDbGlja2VkID0gdHJ1ZVwiIHRhYmluZGV4PVwiMFwiPlxuICAgICAgICAgICAgICA8ZW8taWNvbiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19zdG9yZWRfcXVlcnkuc3ZnJ1wiPjwvZW8taWNvbj5cbiAgICAgICAgICAgICAgPHNwYW4+e3tzdG9yZWRRdWVyeS5uYW1lfX08L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJxdWVyeT8uY29udGV4dEZvbGRlclR5cGVzLmxlbmd0aCA9PT0gMVwiIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICBbdHJhbnNsYXRlUGFyYW1zXT1cInt0eXBlOiBxdWVyeS5jb250ZXh0Rm9sZGVyVHlwZXNbMF0ubGFiZWx9XCI+ZW8uc2VhcmNoLm9iamVjdHR5cGUuZm9ybS5jb250ZXh0PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRlcm1cIiAqbmdJZj1cIiFzdG9yZWRRdWVyeSAmJiBxdWVyeT8udGVybSAmJiAhY2xlYXJBZnRlckV4ZWN1dGVcIiBbdGl0bGVdPVwiKCdlby5zZWFyY2gucmVzdWx0LnRlcm0nIHwgdHJhbnNsYXRlKSArICc6ICcgKyBxdWVyeS50ZXJtXCI+e3snZW8uc2VhcmNoLnJlc3VsdC50ZXJtJyB8IHRyYW5zbGF0ZX19IDogXCJ7e3F1ZXJ5LnRlcm19fVwiPC9zcGFuPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3VnZ2VzdFwiICpuZ0lmPVwic2VhcmNoUmVzdWx0Py5zdWdnZXN0c1wiPnt7J2VvLnNlYXJjaC5zdWdnZXN0JyB8IHRyYW5zbGF0ZX19PGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJleGVjdXRlU3VnZ2VzdFNlYXJjaCgpXCI+e3tzZWFyY2hSZXN1bHQuc3VnZ2VzdHNbMF19fTwvYT4gP1xuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJlby1oZWFkZXItYWN0aW9uc1wiPlxuICAgICAgPGVvLWljb24gY2xhc3M9XCJidXR0b24gcmVmcmVzaC1idXR0b25cIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19yZWZyZXNoLnN2ZydcIiAoY2xpY2spPVwicmVmcmVzaEdyaWQoKVwiXG4gICAgICAgICAgICAgICBbaWNvblRpdGxlXT1cIignZW8ubGlzdC5yZWZyZXNoJyB8IHRyYW5zbGF0ZSlcIj48L2VvLWljb24+XG4gICAgICA8ZW8taWNvbiBjbGFzcz1cImJ1dHRvbiBleHBvcnQtYnV0dG9uXCIgW2hpZGRlbl09XCIhcXVlcnlcIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19jb250ZW50LWRvd25sb2FkLnN2ZydcIiBbaWNvblRpdGxlXT1cIignZW8ucmVzdWx0bGlzdC5leHBvcnQuY3N2JyB8IHRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5EaWFsb2dFeHBvcnQoKVwiICpuZ0lmPVwiIWNzdkxvYWRpbmdTcGlubmVyVmlzaWJpbGl0eVwiPjwvZW8taWNvbj5cbiAgICAgIDxlby1sb2FkaW5nLXNwaW5uZXIgW3NpemVdPVwiJ3NtYWxsJ1wiICpuZ0lmPVwiY3N2TG9hZGluZ1NwaW5uZXJWaXNpYmlsaXR5XCIgY2xhc3M9XCJzcGlubmVyXCI+PC9lby1sb2FkaW5nLXNwaW5uZXI+XG4gICAgICA8ZW8taWNvbiBjbGFzcz1cImJ1dHRvbiBjb25maWctYnV0dG9uXCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfc2V0dGluZ3Muc3ZnJ1wiIFtpY29uVGl0bGVdPVwiKCdlby5jb2x1bW4uY29uZmlnLnRpdGxlJyB8IHRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICAgKGNsaWNrKT1cInZpc2libGVDb25maWcgPSAhdmlzaWJsZUNvbmZpZ1wiPjwvZW8taWNvbj5cbiAgICAgIDxlby1pY29uIGNsYXNzPVwiYnV0dG9uIGFjdGlvbnMtYnV0dG9uXCIgKGNsaWNrKT1cImVvTGlzdC5zaG93QWN0aW9ucygpXCIgW2ljb25UaXRsZV09XCIoJ2VvLm9iamVjdC5hY3Rpb25zLnRpdGxlJyB8IHRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfbW9yZS5zdmcnXCIgKm5nSWY9XCIhcmVmZXJlbmNlXCI+PC9lby1pY29uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImVvLWJvZHlcIj5cbiAgICA8ZW8tZ3JpZCAjZW9HcmlkIFtncmlkT3B0aW9uc109XCJyZXN1bHRHcmlkT3B0aW9uc1wiICpuZ0lmPVwiaGFzR3JpZE9wdGlvbnM7IGVsc2UgZXJyb3JcIlxuICAgICAgICAgICAgIFtzaG93Rm9vdGVyXT1cInRydWVcIiAoZW9HcmlkQ29sdW1uUmVzaXplZCk9XCJvbkNvbHVtblJlc2l6ZWQoJGV2ZW50KVwiIFtzZWxlY3RGaXJzdF09XCJzZWxlY3RGaXJzdFwiXG4gICAgICAgICAgICAgKGVvR3JpZENvdW50Q2hhbmdlZCk9XCJlb0xpc3Qub25Db3VudENoYW5nZWQoJGV2ZW50KTtvbkNvdW50Q2hhbmdlZC5lbWl0KCRldmVudCk7XCJcbiAgICAgICAgICAgICAoZW9HcmlkQ29udGV4dE1lbnVDbGljayk9XCJlb0xpc3Qub25Db250ZXh0TWVudSgkZXZlbnQpO29uQ29udGV4dE1lbnUuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAoZW9HcmlkU2VsZWN0aW9uQ2hhbmdlZCk9XCJlb0xpc3Qub25TZWxlY3Rpb25DaGFuZ2VkKCRldmVudCk7b25TZWxlY3Rpb25DaGFuZ2VkLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgKGVvR3JpZERvdWJsZUNsaWNrKT1cImVvTGlzdC5vbkRvdWJsZUNsaWNrKCRldmVudCk7b25Eb3VibGVDbGljay5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgIChlb0dyaWRGb2N1c0NoYW5nZWQpPVwiZW9MaXN0Lm9uRm9jdXNDaGFuZ2VkKCRldmVudCk7b25Gb2N1c0NoYW5nZWQuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAoZW9HcmlkQ2VsbENsaWNrKT1cImVvR3JpZENlbGxDbGljaygkZXZlbnQpXCIgW3NlbGVjdGVkSWRdPVwic2VsZWN0ZWRPYmplY3RJZFwiPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyXCI+XG4gICAgICAgIDxlby10b3RhbC1jb3VudCBbZ3JpZENvdW50XT1cImVvTGlzdC5ncmlkQ291bnRcIiBbb3V0c2lkZUdyaWRdPVwiZmFsc2VcIiBjbGFzcz1cImZsZXgtcm93XCI+PC9lby10b3RhbC1jb3VudD5cbiAgICAgICAgPCEtLTxlby1xdWljay1maWx0ZXIgW2VvR3JpZF09XCJlb0dyaWRcIj48L2VvLXF1aWNrLWZpbHRlcj4tLT5cbiAgICAgICAgPGVvLXBhZ2luYXRpb24gW3NldHRpbmdzXT1cInNldHRpbmdzXCIgKHBhZ2VDaGFuZ2VkKT1cIm9uUGFnZUNoYW5nZWQoJGV2ZW50KVwiPjwvZW8tcGFnaW5hdGlvbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiZW1wdHlcIj5cbiAgICAgICAgPGVvLWVycm9yLW1lc3NhZ2UgW2VtcHR5U3RhdGVdPVwie3RleHQ6IGVtcHR5TWVzc2FnZSB8fCAnZW8uc2VhcmNoLnJlc3VsdC5leHBpcmVkJ31cIj48L2VvLWVycm9yLW1lc3NhZ2U+XG4gICAgICA8L2Rpdj5cbiAgICA8L2VvLWdyaWQ+XG4gIDwvZGl2PlxuICA8bmctdGVtcGxhdGUgI2Vycm9yPlxuXG4gICAgPGVvLWVycm9yLW1lc3NhZ2UgKm5nSWY9XCJoYXNHcmlkT3B0aW9uc1wiIFtlbXB0eVN0YXRlXT1cInt0ZXh0Oidlby5zZWFyY2gubW9kZS5leHBlcnQucmVzdWx0LmVtcHR5J31cIj5cbiAgICA8L2VvLWVycm9yLW1lc3NhZ2U+XG5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZW8tbGlzdC1jb250YWluZXI+XG5cbjxlby1kaWFsb2cgW3Zpc2libGVdPVwic2F2ZWRTZWFyY2hDbGlja2VkXCIgKGhpZGUpPVwic2F2ZWRTZWFyY2hDbGlja2VkID0gZmFsc2VcIiBbdGl0bGVdPVwiJ2VvLnNlYXJjaC5hc2lkZS5zdW1tYXJ5LnN0b3JlZHF1ZXJ5JyB8IHRyYW5zbGF0ZVwiPlxuXG48L2VvLWRpYWxvZz5cbjxlby1kaWFsb2cgW3RpdGxlXT1cIidlby5yZXN1bHRsaXN0LmV4cG9ydC5jc3YuZGlhbG9nLnRpdGxlJyB8IHRyYW5zbGF0ZVwiIFsodmlzaWJsZSldPVwic2hvd0RpYWxvZ0V4cG9ydFwiXG4gIFtmb2N1c09uU2hvd109XCJmYWxzZVwiIFttaW5XaWR0aF09XCI0MDBcIiBbc3R5bGVDbGFzc109XCInZXhwb3J0X19kaWFsb2cnXCI+XG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwic2V0dXBGb3JtXCI+XG4gICAgPGVvLWZvcm0taW5wdXQgY2xhc3M9XCJsYWJlbCBjaGVja2JveFwiIFtza2lwVG9nZ2xlXT1cInRydWVcIlxuICAgICAgW2xhYmVsXT1cIidlby5yZXN1bHRsaXN0LmV4cG9ydC5jc3YuZGlhbG9nLm9iamVjdFVybC5sYWJlbCcgfCB0cmFuc2xhdGVcIj5cbiAgICAgIDxlby1jaGVja2JveCBmb3JtQ29udHJvbE5hbWU9XCJleHBvcnRDU1Z3aXRoVXJsXCI+XG4gICAgICA8L2VvLWNoZWNrYm94PlxuICAgIDwvZW8tZm9ybS1pbnB1dD5cbiAgPC9mb3JtPlxuXG4gIEBpZihzaG93V2FybkV4cG9ydENTVlRocmVzaG9sZCl7XG4gICAgPGRpdiBjbGFzcz1cInRocmVzaG9sZC13YXJuaW5nXCI+e3snZW8ucmVzdWx0bGlzdC5leHBvcnQuY3N2LnRocmVzaG9sZC5kaWFsb2cubWVzc2FnZScgfCB0cmFuc2xhdGV9fTwvZGl2PlxuICB9XG5cbiAgPGRpdiBjbGFzcz1cImFjdGlvbi1idXR0b25zIGZsZXgtcm93XCI+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidXR0b24gY2FuY2VsXCIgKGNsaWNrKT1cInNob3dEaWFsb2dFeHBvcnQgPSBmYWxzZVwiXG4gICAgICB0cmFuc2xhdGU+ZW8uY3RhLmJ1dHRvbi5jYW5jZWw8L2J1dHRvbj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZXhwb3J0Q1NWKClcIiBjbGFzcz1cImJ1dHRvbiBwcmltYXJ5XCJcbiAgICAgIHRyYW5zbGF0ZT5lby5yZXN1bHRsaXN0LmV4cG9ydC5jc3YuZGlhbG9nLmV4cG9ydDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZW8tZGlhbG9nPlxuIl19