@eqproject/eqp-dynamic-module 2.9.18 → 2.9.19

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.
@@ -74,14 +74,16 @@ export class ActionButtonCreatorComponent {
74
74
  this.actionButton = new ActionButton();
75
75
  }
76
76
  var executeGetModules = false;
77
- Object.keys(this.formulas).forEach((res) => {
78
- this.formulaKeys.push({ "key": res });
79
- Object.keys(this.formulas[res]).forEach((property) => {
80
- if (this.formulas[res][property].type == TriggerPropertyTypeEnum.DMMODULE) {
81
- executeGetModules = true;
82
- }
77
+ if (this.formulas) {
78
+ Object.keys(this.formulas).forEach((res) => {
79
+ this.formulaKeys.push({ "key": res });
80
+ Object.keys(this.formulas[res]).forEach((property) => {
81
+ if (this.formulas[res][property].type == TriggerPropertyTypeEnum.DMMODULE) {
82
+ executeGetModules = true;
83
+ }
84
+ });
83
85
  });
84
- });
86
+ }
85
87
  if (executeGetModules) {
86
88
  this.getAllModules();
87
89
  }
@@ -113,7 +115,12 @@ export class ActionButtonCreatorComponent {
113
115
  this.changeSomething();
114
116
  }
115
117
  onEqpSelectModule(ev, formulaField) {
116
- formulaField.value = ev.ID;
118
+ if (ev != null) {
119
+ formulaField.value = ev.ID;
120
+ }
121
+ else {
122
+ formulaField.value = "";
123
+ }
117
124
  this.changeSomething();
118
125
  }
119
126
  saveOrExitForm(exit) {
@@ -242,4 +249,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
242
249
  type: ViewChild,
243
250
  args: ["dialogFormula", { static: true }]
244
251
  }] } });
245
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWJ1dHRvbi1jcmVhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9hY3Rpb24tYnV0dG9uLWNyZWF0b3IvYWN0aW9uLWJ1dHRvbi1jcmVhdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9hY3Rpb24tYnV0dG9uLWNyZWF0b3IvYWN0aW9uLWJ1dHRvbi1jcmVhdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQWUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFdEcsT0FBTyxFQUE2QyxhQUFhLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN2SCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7Ozs7Ozs7O0FBU2pFLE1BQU0sT0FBTyw0QkFBNEI7SUF5QnJDLFlBQW9CLE1BQWlCLEVBQVUsb0JBQTBDO1FBQXJFLFdBQU0sR0FBTixNQUFNLENBQVc7UUFBVSx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBdEJwRSxpQkFBWSxHQUFpQixJQUFJLENBQUM7UUFDN0Isc0JBQWlCLEdBQXNCLElBQUksQ0FBQztRQUNyRCxhQUFRLEdBQVEsSUFBSSxDQUFDO1FBRXRCLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFFakMsaUJBQVks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RCxhQUFhLENBQUMsR0FBRyxFQUFFLEtBQW1CLEVBQUUsUUFBb0I7UUFDMUQsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUM1QixJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO0lBQ3hELENBQUM7OzBIQWpQVSw0QkFBNEI7OEdBQTVCLDRCQUE0Qix3Y0NoQnpDLHFnTEErR2M7NEZEL0ZELDRCQUE0QjtrQkFMeEMsU0FBUzsrQkFDRSx1QkFBdUI7bUlBTWxCLElBQUk7c0JBQWxCLEtBQUs7dUJBQUMsTUFBTTtnQkFDVSxZQUFZO3NCQUFsQyxLQUFLO3VCQUFDLGNBQWM7Z0JBQ08saUJBQWlCO3NCQUE1QyxLQUFLO3VCQUFDLG1CQUFtQjtnQkFDUCxRQUFRO3NCQUExQixLQUFLO3VCQUFDLFVBQVU7Z0JBQ2UscUJBQXFCO3NCQUFwRCxLQUFLO3VCQUFDLHVCQUF1QjtnQkFDWixPQUFPO3NCQUF4QixLQUFLO3VCQUFDLFNBQVM7Z0JBRU4sWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBV3lDLGFBQWE7c0JBQTFELFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGlvbkJ1dHRvbiwgQWN0aW9uRmxhZ0VudW0sIFRyaWdnZXJQcm9wZXJ0eVR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3RyaWdnZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBGb3JtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2Zvcm0ubW9kZWwnO1xyXG5pbXBvcnQgeyBFbmRQb2ludENvbmZpZ3VyYXRpb24sIEVuZFBvaW50RGF0YVBhcmFtcywgUGFyYW1UeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9lbmRQb2ludENvbmZpZ3VyYXRpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBGaWVsZFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2Jhc2VGaWVsZC5tb2RlbCc7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuXHJcbmltcG9ydCB7IEdsb2JhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9nbG9iYWwuc2VydmljZSc7XHJcbmltcG9ydCB7IFV0aWxpdHlIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbGl0eUhlbHBlci5zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IEFjdGlvbkJ1dHRvbkZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy9hY3Rpb25CdXR0b24ubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhY3Rpb24tYnV0dG9uLWNyZWF0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hY3Rpb24tYnV0dG9uLWNyZWF0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2FjdGlvbi1idXR0b24tY3JlYXRvci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBY3Rpb25CdXR0b25DcmVhdG9yQ29tcG9uZW50IHtcclxuXHJcbiAgQElucHV0KFwiZm9ybVwiKSBmb3JtOiBGb3JtO1xyXG4gIEBJbnB1dChcImFjdGlvbkJ1dHRvblwiKSBhY3Rpb25CdXR0b246IEFjdGlvbkJ1dHRvbiA9IG51bGw7XHJcbiAgQElucHV0KFwiYWN0aW9uQnV0dG9uRmllbGRcIikgYWN0aW9uQnV0dG9uRmllbGQ6IEFjdGlvbkJ1dHRvbkZpZWxkID0gbnVsbDtcclxuICBASW5wdXQoXCJmb3JtdWxhc1wiKSBmb3JtdWxhczogYW55ID0gbnVsbDtcclxuICBASW5wdXQoXCJlbmRQb2ludENvbmZpZ3VyYXRpb25cIikgZW5kUG9pbnRDb25maWd1cmF0aW9uOiBFbmRQb2ludENvbmZpZ3VyYXRpb247XHJcbiAgQElucHV0KFwiSW5GaWVsZFwiKSBJbkZpZWxkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKSBvblNhdmVSZWNvcmQ6IEV2ZW50RW1pdHRlcjxBY3Rpb25CdXR0b24+ID0gbmV3IEV2ZW50RW1pdHRlcjxBY3Rpb25CdXR0b24+KCk7XHJcbiAgQE91dHB1dCgpIG9uQ2hhbmdlU29tZXRoaW5nOiBFdmVudEVtaXR0ZXI8QWN0aW9uQnV0dG9uPiA9IG5ldyBFdmVudEVtaXR0ZXI8QWN0aW9uQnV0dG9uPigpO1xyXG5cclxuICAgIEZpZWxkVHlwZUVudW0gPSBGaWVsZFR5cGVFbnVtO1xyXG4gICAgaXNTYXZpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHNlbGVjdGVkRm9ybXVsYTogYW55O1xyXG4gICAgZm9ybXVsYUtleXM6IEFycmF5PGFueT4gPSBuZXcgQXJyYXk8YW55PigpO1xyXG4gICAgZm9ybXVsYUZpZWxkc1N0cnVjdHVyZTogQXJyYXk8YW55PiA9IG5ldyBBcnJheTxhbnk+KCk7XHJcbiAgICBhY3Rpb25zRmxhZyA9IEFjdGlvbkZsYWdFbnVtO1xyXG4gICAgdHJpZ2dlclByb3BlcnR5VHlwZSA9IFRyaWdnZXJQcm9wZXJ0eVR5cGVFbnVtO1xyXG4gIFxyXG4gICAgZGlhbG9nRm9ybXVsYVJlZjogTWF0RGlhbG9nUmVmPFRlbXBsYXRlUmVmPGFueT4+O1xyXG4gICAgQFZpZXdDaGlsZChcImRpYWxvZ0Zvcm11bGFcIiwgeyBzdGF0aWM6IHRydWUgfSkgZGlhbG9nRm9ybXVsYTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBcclxuICAgIGZvcm1zOiBBcnJheTxGb3JtPjtcclxuICBcclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csIHByaXZhdGUgdXRpbGl0eUhlbHBlclNlcnZpY2U6IFV0aWxpdHlIZWxwZXJTZXJ2aWNlKXt9XHJcbiAgICBcclxuICAgIG5nT25Jbml0KCl7XHJcblxyXG4gICAgICAvLy9cclxuICAgICAgLy8vIFF1ZXN0byBjb21wb25lbnRlIGZ1bnppb25hIHNpYSBwZXIgaSBib3R0b25pIGRlaSBmaWVsZHMgc2lhIHBlciBpIGJvdHRvbmkgc3VnbGkgaGVhZGVyIChhZGRyZWNvcmQsIGxpc3R2aWV3IGVjY2V0ZXJhKVxyXG4gICAgICAvLy8gU2Ugc2kgc3RhIGxhdm9yYW5kbyBzdWkgZmllbGRzIMOoIHBvcG9sYXRvICd0aGlzLmFjdGlvbkJ1dHRvbkZpZWxkJyBhbHRyaW1lbnRpIMOoIG51bGwuXHJcbiAgICAgIC8vL1xyXG5cclxuICAgICAgaWYgKHRoaXMuYWN0aW9uQnV0dG9uRmllbGQgIT0gbnVsbCl7XHJcbiAgICAgICAgdGhpcy5hY3Rpb25CdXR0b24gPSA8QWN0aW9uQnV0dG9uPnRoaXMuYWN0aW9uQnV0dG9uRmllbGQ7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIGlmICh0aGlzLmFjdGlvbkJ1dHRvbiAhPSBudWxsICYmIHRoaXMuYWN0aW9uQnV0dG9uLmV4ZWN1dGlvbiAhPSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZvcm11bGEgPSB7fTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRm9ybXVsYS5rZXkgPSB0aGlzLmFjdGlvbkJ1dHRvbi5leGVjdXRpb247XHJcblxyXG4gICAgICAgIC8qXHJcbiAgICAgICAgaWYgKHRoaXMuYWN0aW9uQnV0dG9uRmllbGQgPT0gbnVsbCl7XHJcbiAgICAgICAgICB0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUgPSBuZXcgQXJyYXk8YW55PigpO1xyXG4gICAgICAgICAgdGhpcy5mb3JtdWxhcy5mb3JFYWNoKChyZXMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlLnB1c2goe1wia2V5XCI6IHJlcy5rZXksIFwidHlwZVwiOiB0aGlzLmZvcm11bGFzW3RoaXMuc2VsZWN0ZWRGb3JtdWxhLmtleV1bcmVzXS50eXBlLCBcInRvb2x0aXBcIjogdGhpcy5mb3JtdWxhc1t0aGlzLnNlbGVjdGVkRm9ybXVsYS5rZXldW3Jlc10udG9vbHRpcH0pO1xyXG4gICAgICAgICAgfSk7ICAgXHJcblxyXG4gICAgICAgICAgT2JqZWN0LmtleXModGhpcy5hY3Rpb25CdXR0b24uZm9ybXVsYXNUZW1wKS5mb3JFYWNoKChyZXMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlLmZpbmQoeCA9PiB4LmtleSA9PSByZXMpLnZhbHVlID0gdGhpcy5hY3Rpb25CdXR0b24uZm9ybXVsYXNUZW1wW3Jlc10udmFsdWU7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlLnB1c2godGhpcy5hY3Rpb25CdXR0b24uZm9ybXVsYXMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgKi9cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuYWN0aW9uQnV0dG9uRmllbGQgPT0gbnVsbCl7XHJcbiAgICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmFjdGlvbkJ1dHRvbi5mb3JtdWxhc1RlbXApLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNBbkFjdGlvbktleShrZXksIHRoaXMuYWN0aW9uQnV0dG9uLCB0aGlzLmZvcm11bGFzKSl7IHJldHVybjsgfVxyXG4gICAgICAgICAgICB0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUucHVzaCh0aGlzLmFjdGlvbkJ1dHRvbi5mb3JtdWxhc1RlbXBba2V5XSk7XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZSA9IHRoaXMuYWN0aW9uQnV0dG9uRmllbGQuZm9ybXVsYXM7XHJcbiAgICAgICAgfSAgICAgICAgXHJcblxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5hY3Rpb25CdXR0b24gPT0gbnVsbCl7XHJcbiAgICAgICAgdGhpcy5hY3Rpb25CdXR0b24gPSBuZXcgQWN0aW9uQnV0dG9uKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIFxyXG5cclxuICAgICAgdmFyIGV4ZWN1dGVHZXRNb2R1bGVzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybXVsYXMpLmZvckVhY2goKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMuZm9ybXVsYUtleXMucHVzaCh7XCJrZXlcIjogcmVzfSk7XHJcbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5mb3JtdWxhc1tyZXNdKS5mb3JFYWNoKChwcm9wZXJ0eSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMuZm9ybXVsYXNbcmVzXVtwcm9wZXJ0eV0udHlwZSA9PSBUcmlnZ2VyUHJvcGVydHlUeXBlRW51bS5ETU1PRFVMRSl7XHJcbiAgICAgICAgICAgIGV4ZWN1dGVHZXRNb2R1bGVzID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBpZiAoZXhlY3V0ZUdldE1vZHVsZXMpe1xyXG4gICAgICAgIHRoaXMuZ2V0QWxsTW9kdWxlcygpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIG9wZW5Gb3JtdWxhRGlhbG9nKGZvcm11bGFGaWVsZDogYW55KSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nRm9ybXVsYVJlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5kaWFsb2dGb3JtdWxhLCB7XHJcbiAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICAgIHdpZHRoOiBcIjc1JVwiLFxyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgIGZvcm11bGE6IHRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZS5maW5kKHggPT4geC5rZXkgPT0gZm9ybXVsYUZpZWxkLmtleSkudmFsdWUsXHJcbiAgICAgICAgICBmaWVsZHM6IHRoaXMuZm9ybS5GaWVsZHNcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5kaWFsb2dGb3JtdWxhUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICB2YXIgZm9ybXVsYVRvQ2hhbmdlID0gdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlLmZpbmQoeCA9PiB4LmtleSA9PSBmb3JtdWxhRmllbGQua2V5KTtcclxuICAgICAgICBmb3JtdWxhVG9DaGFuZ2UudmFsdWUgPSByZXN1bHQuZm9ybXVsYS50b1N0cmluZygpID09IFwiXCIgPyBudWxsIDogcmVzdWx0LmZvcm11bGEudG9TdHJpbmcoKTtcclxuICAgICAgICB0aGlzLm9uRm9ybXVsYUZpZWxkQ2hhbmdlKGZvcm11bGFUb0NoYW5nZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKmFnZ2lvcm5hICBzZWxlY3RlZEZvcm11bGEgY29uIGlsIHZhbG9yZSByZXN0aXR1aXRvIGRhbGxhIHNlbGVjdFxyXG4gICAgICogcXVpIG5vbiDDqCBjaGlhcm8gc2UgZSBxdWFuZG8gcmljaGlhbWFyZSBpbCBjaGFuZ2VTb21ldGhpbmcgXHJcbiAgICAgKiAqL1xyXG4gICAgb25Ecm9wRG93blNlbGVjdGlvbihzZWxlY3RlZEFsbG93ZWRWYWx1ZSl7XHJcbiAgICAgIFxyXG4gICAgICB0aGlzLmNoYW5nZVNvbWV0aGluZygpOyAvLyBub24gc2kgY2FwaXNjZSBhIGNoZSBzZXJ2ZSwgYXNzZWduYSBjb3NlXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGb3JtdWxhLnNlbGVjdGVkQWxsb3dlZFZhbHVlID0gc2VsZWN0ZWRBbGxvd2VkVmFsdWUudmFsdWU7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIG9uRm9ybXVsYUZpZWxkQ2hhbmdlKGZvcm11bGFGaWVsZDogYW55KXtcclxuICAgICAgIHRoaXMuY2hhbmdlU29tZXRoaW5nKCk7XHJcbiAgICB9ICAgIFxyXG5cclxuICAgIG9uRXFwU2VsZWN0TW9kdWxlKGV2LCBmb3JtdWxhRmllbGQpe1xyXG4gICAgICBmb3JtdWxhRmllbGQudmFsdWUgPSBldi5JRDsgICAgXHJcbiAgICAgIHRoaXMuY2hhbmdlU29tZXRoaW5nKCk7XHJcbiAgICB9ICAgIFxyXG5cclxuICBzYXZlT3JFeGl0Rm9ybShleGl0OiBib29sZWFuKSB7XHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKCdhZGQtZm9ybS1yZWNvcmQgc2F2ZVJlY29yZEV2ZW50JylcclxuICAgIGlmIChleGl0KSB7XHJcbiAgICAgIHRoaXMub25TYXZlUmVjb3JkLmVtaXQobnVsbCk7XHJcbiAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgaWYgKHRoaXMuYWN0aW9uQnV0dG9uLkJ1dHRvblVuaXF1ZUlkID09IG51bGwpeyB0aGlzLmFjdGlvbkJ1dHRvbi5CdXR0b25VbmlxdWVJZCA9IHRoaXMuZ2VuZXJhdGVHVUlEKCk7IH1cclxuICAgICAgdGhpcy5hY3Rpb25CdXR0b24uQnV0dG9uQ29kZSA9IHRoaXMuc2VsZWN0ZWRGb3JtdWxhLmtleTtcclxuXHJcbiAgICAgIHRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZS5mb3JFYWNoKChmb3JtdWxhRmllbGQpID0+IHtcclxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYWN0aW9uQnV0dG9uLmZvcm11bGFzID09IFwidW5kZWZpbmVkXCIpeyB0aGlzLmFjdGlvbkJ1dHRvbi5mb3JtdWxhcyA9IHt9OyB9XHJcbiAgICAgICAgdGhpcy5hY3Rpb25CdXR0b24uZm9ybXVsYXNUZW1wW2Zvcm11bGFGaWVsZC5rZXldID0gZm9ybXVsYUZpZWxkO1xyXG4gICAgICAgIHRoaXMuYWN0aW9uQnV0dG9uLmV4ZWN1dGlvbiA9IHRoaXMuc2VsZWN0ZWRGb3JtdWxhLmtleTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuaXNTYXZpbmcgPSB0cnVlO1xyXG5cclxuICAgICAgY29uc29sZS5sb2coXCJBY3Rpb25CdXR0b25DcmVhdG9yQ29tcG9uZW50IHNhdmVPckV4aXRGb3JtKClcIiwgdGhpcy5hY3Rpb25CdXR0b24pO1xyXG4gICAgICB0aGlzLm9uU2F2ZVJlY29yZC5lbWl0KHRoaXMuYWN0aW9uQnV0dG9uKTtcclxuICAgIH1cclxuICB9ICAgIFxyXG5cclxuICBnZW5lcmF0ZUdVSUQoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHRpbWVzdGFtcCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgY29uc3QgcmFuZG9tTnVtID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwMDAwMCk7XHJcbiAgICByZXR1cm4gYCR7dGltZXN0YW1wfS0ke3JhbmRvbU51bX1gO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlU29tZXRoaW5nKCl7XHJcbiAgICB0aGlzLmFjdGlvbkJ1dHRvbi5CdXR0b25Db2RlID0gdGhpcy5zZWxlY3RlZEZvcm11bGEua2V5O1xyXG5cclxuICAgIGlmICghdGhpcy5hY3Rpb25CdXR0b24uZm9ybXVsYXNUZW1wKXsgdGhpcy5hY3Rpb25CdXR0b24uZm9ybXVsYXNUZW1wID0ge307IH1cclxuXHJcbiAgICB0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUuZm9yRWFjaCgoZm9ybXVsYUZpZWxkKSA9PiB7XHJcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5hY3Rpb25CdXR0b24uZm9ybXVsYXMgPT0gXCJ1bmRlZmluZWRcIil7IHRoaXMuYWN0aW9uQnV0dG9uLmZvcm11bGFzID0ge307IH1cclxuICAgICAgdGhpcy5hY3Rpb25CdXR0b24uZm9ybXVsYXNUZW1wW2Zvcm11bGFGaWVsZC5rZXldID0gZm9ybXVsYUZpZWxkO1xyXG4gICAgICB0aGlzLmFjdGlvbkJ1dHRvbi5leGVjdXRpb24gPSB0aGlzLnNlbGVjdGVkRm9ybXVsYS5rZXk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLm9uQ2hhbmdlU29tZXRoaW5nLmVtaXQodGhpcy5hY3Rpb25CdXR0b24pO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWxsTW9kdWxlcygpe1xyXG5cclxuICAgIGNvbnN0IGR5bmFtaWNNb2R1bGVQYXJhbXM6IEFycmF5PEVuZFBvaW50RGF0YVBhcmFtcz4gPVxyXG4gICAgICBuZXcgQXJyYXk8RW5kUG9pbnREYXRhUGFyYW1zPigpO1xyXG4gICAgZHluYW1pY01vZHVsZVBhcmFtcy5wdXNoKHtcclxuICAgICAgUGFyYW1OYW1lOiBcIm9yZ2FpZFwiLFxyXG4gICAgICBQYXJhbVZhbHVlOiB0aGlzLmZvcm0uT3JnYUlELFxyXG4gICAgICBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJRdWVyeSBwYXJhbVwiXSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy51dGlsaXR5SGVscGVyU2VydmljZS5SdW5FbmRQb2ludENhbGwoXHJcbiAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLkZvcm1zLkdldEFsbEZvcm1FbmRQb2ludCxcclxuICAgICAgZHluYW1pY01vZHVsZVBhcmFtcyxcclxuICAgICAgKHJlczogQXJyYXk8Rm9ybT4pID0+IHtcclxuICAgICAgICB0aGlzLmZvcm1zID0gcmVzO1xyXG4gICAgICAgIHRoaXMuZm9ybXMgPSB0aGlzLmZvcm1zLnNvcnQoKHVubywgZHVlKSA9PiB1bm8uTmFtZS5sb2NhbGVDb21wYXJlKGR1ZS5OYW1lKSk7XHJcblxyXG4gICAgICAgIHRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZS5mb3JFYWNoKChyZXMpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMudHlwZSA9PSBUcmlnZ2VyUHJvcGVydHlUeXBlRW51bS5ETU1PRFVMRSl7XHJcbiAgICAgICAgICAgIHJlcy5vYmplY3QgPSB0aGlzLmZvcm1zLmZpbmQoeCA9PiB4LklEID09IHJlcy52YWx1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyKSA9PiB7IH1cclxuICAgICk7ICAgIFxyXG4gIH0gIFxyXG5cclxuICBvbkNoYW5nZUZvcm11bGEoZm9ybXVsYTogYW55KXtcclxuXHJcbiAgICBpZiAoZm9ybXVsYSA9PSBudWxsKXsgIFxyXG4gICAgICB0aGlzLmNoYW5nZVNvbWV0aGluZygpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZygnQEB0cmlnZ2VyLWNyZWF0b3I6b25DaGFuZ2VGb3JtdWxhIHNlbGVjdGVkIGZvcm11bGEnLGZvcm11bGEpXHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKCdAQHRyaWdnZXItY3JlYXRvcjpvbkNoYW5nZUZvcm11bGEgZm9ybXVsYXMnLHRoaXMuZm9ybXVsYXMpXHJcblxyXG4gICAgdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlID0gbmV3IEFycmF5PGFueT4oKTtcclxuXHJcbiAgICBjb25zb2xlLmxvZyhcIm9uQ2hhbmdlRm9ybXVsYVwiLCB0aGlzLmZvcm11bGFzLCBmb3JtdWxhLmtleSk7XHJcblxyXG4gICAgLy8tLS0tLS0tLS0tLS1cclxuICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybXVsYXNbZm9ybXVsYS5rZXldKS5mb3JFYWNoKChyZXMpID0+IHtcclxuXHJcbiAgICAgIHRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZS5wdXNoKHtcclxuICAgICAgICBcImtleVwiOiByZXMsIFxyXG4gICAgICAgIFwidHlwZVwiOiB0aGlzLmZvcm11bGFzW2Zvcm11bGEua2V5XVtyZXNdLnR5cGUsIFxyXG4gICAgICAgIFwidG9vbHRpcFwiOiB0aGlzLmZvcm11bGFzW2Zvcm11bGEua2V5XVtyZXNdLnRvb2x0aXAsXHJcbiAgICAgICAgXCJ2YWx1ZVwiIDogdGhpcy5mb3JtdWxhc1tmb3JtdWxhLmtleV1bcmVzXS52YWx1ZSxcclxuICAgICAgICAvKiogcGVyIHZhbG9yaSB2aW5jb2xhdGkgYSBsaXN0ZSAqL1xyXG4gICAgICAgIFwiYWxsb3dlZFZhbHVlc1wiIDogdGhpcy5mb3JtdWxhc1tmb3JtdWxhLmtleV1bcmVzXS5hbGxvd2VkVmFsdWVzLFxyXG4gICAgICAgIFwic2VsZWN0ZWRBbGxvd2VkVmFsdWVcIiA6IHRoaXMuZm9ybXVsYXNbZm9ybXVsYS5rZXldW3Jlc10uc2VsZWN0ZWRBbGxvd2VkVmFsdWVcclxuXHJcbiAgICAgIH0pOyBcclxuICAgIH0pOyAgXHJcbiAgICAvLy0tLS0tLS0tLS0tLVxyXG4gICAgLyogKioqIG9yaWdpbmFsZSAqKipcclxuICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybXVsYXNbZm9ybXVsYS5rZXldKS5mb3JFYWNoKChyZXMpID0+IHtcclxuICAgICAgdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlLnB1c2goe1wia2V5XCI6IHJlcywgXCJ0eXBlXCI6IHRoaXMuZm9ybXVsYXNbZm9ybXVsYS5rZXldW3Jlc10udHlwZVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgKioqICovXHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKCdAQHRyaWdnZXItY3JlYXRvcjpvbkNoYW5nZUZvcm11bGEgZm9ybXVsYUZpZWxkc1N0cnVjdHVyZScsdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlKVxyXG5cclxuXHJcbiAgICB0aGlzLmNoYW5nZVNvbWV0aGluZygpO1xyXG4gIH0gIFxyXG4gIFxyXG4gIGlzQW5BY3Rpb25LZXkoa2V5LCBmaWVsZDogQWN0aW9uQnV0dG9uLCBmb3JtdWxhczogQXJyYXk8YW55Pil7XHJcbiAgICB2YXIgY29kZSA9IGZpZWxkLkJ1dHRvbkNvZGU7XHJcbiAgICB2YXIgZWxzID0gZm9ybXVsYXNbY29kZV07XHJcbiAgICByZXR1cm4gKE9iamVjdC5rZXlzKGVscykuZmluZCh4ID0+IHggPT0ga2V5KSAhPSBudWxsKTtcclxuICB9XHJcblxyXG59XHJcbiIsIlxyXG48bWF0LWNhcmQgY2xhc3M9XCJhZGQtZm9ybS1maWVsZFwiPlxyXG4gICAgPG1hdC1jYXJkLWhlYWRlciAqbmdJZj1cIiFJbkZpZWxkXCI+XHJcbiAgICAgICAgPG1hdC1jYXJkLXRpdGxlPlxyXG4gICAgICAgICAgICB7e2FjdGlvbkJ1dHRvbiAhPSBudWxsID8gXCJNb2RpZmljYVwiIDogXCJBZ2dpdW5naVwifX0gYm90dG9uZSBhemlvbmVcclxuICAgICAgICA8L21hdC1jYXJkLXRpdGxlPlxyXG4gICAgPC9tYXQtY2FyZC1oZWFkZXI+XHJcblxyXG4gICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZCBjb250YWluZXJDb250ZW50IHBhZGRlclwiPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPlRpcG8gQWN0aW9uIEJ1dHRvbjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTlcIj5cclxuICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwiZm9ybXVsYUtleXNcIiBbKG5nTW9kZWxJbnB1dCldPVwic2VsZWN0ZWRGb3JtdWxhXCJcclxuICAgICAgICAgICAgICAgIFthcnJheUtleVByb3BlcnR5XT1cIidrZXknXCIgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCIna2V5J1wiIFtzaG93Q2FuY2VsQnV0dG9uXT1cInRydWVcIiAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uQ2hhbmdlRm9ybXVsYSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj5FdGljaGV0dGE8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC05XCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbCAgY2xhc3M9XCJwdC0xXCI+IEV0aWNoZXR0YSA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJhY3Rpb25CdXR0b24uQnV0dG9uTGFiZWxcIiBbcmVhZG9ubHldPVwiZmFsc2VcIiAoa2V5dXApPVwiY2hhbmdlU29tZXRoaW5nKClcIj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPkljb25hICg8YSBocmVmPSdodHRwczovL3d3dy5hbmd1bGFyanN3aWtpLmNvbS9hbmd1bGFyL2FuZ3VsYXItbWF0ZXJpYWwtaWNvbnMtbGlzdC1tYXQtaWNvbi1saXN0JyB0YXJnZXQ9XCJfYmxhbmtcIj5saXN0YTwvYT4pPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgIGNsYXNzPVwicHQtMVwiPiBJY29uYSBNYXRlcmlhbCAoPGEgaHJlZj0naHR0cHM6Ly93d3cuYW5ndWxhcmpzd2lraS5jb20vYW5ndWxhci9hbmd1bGFyLW1hdGVyaWFsLWljb25zLWxpc3QtbWF0LWljb24tbGlzdCcgdGFyZ2V0PVwiX2JsYW5rXCI+bGlzdGE8L2E+KSA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJhY3Rpb25CdXR0b24uSWNvblwiIFtyZWFkb25seV09XCJmYWxzZVwiIChrZXl1cCk9XCJjaGFuZ2VTb21ldGhpbmcoKVwiPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj4gICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiIUluRmllbGRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+U2V6aW9uaTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTlcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgIGNsYXNzPVwicHQtMVwiPiBTZXppb25pIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGVxcC1zZWxlY3RcclxuICAgICAgICAgICAgICAgICAgW2VudW1EYXRhXT1cImFjdGlvbnNGbGFnXCJcclxuICAgICAgICAgICAgICAgICAgW2lzU2VhcmNoYWJsZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW2lzTXVsdGlTZWxlY3RdID0gXCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cImFjdGlvbkJ1dHRvbi5TaG93SW5cIiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwiY2hhbmdlU29tZXRoaW5nKClcIiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj4gICBcclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0Zvcj1cImxldCBmb3JtdWxhRmllbGQgb2YgZm9ybXVsYUZpZWxkc1N0cnVjdHVyZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj57e2Zvcm11bGFGaWVsZC5rZXl9fTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTlcIiAqbmdJZj1cImZvcm11bGFGaWVsZC50eXBlID09IHRyaWdnZXJQcm9wZXJ0eVR5cGUuU1RSSU5HXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbCAgY2xhc3M9XCJwdC0xXCI+IHt7Zm9ybXVsYUZpZWxkLmtleX19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFtyZWFkb25seV09XCJmYWxzZVwiIFtyZXF1aXJlZF09XCJmYWxzZVwiIFttYXRUb29sdGlwXT1cImZvcm11bGFGaWVsZC50b29sdGlwXCIgKGNsaWNrKT1cIm9wZW5Gb3JtdWxhRGlhbG9nKGZvcm11bGFGaWVsZClcIiBbKG5nTW9kZWwpXT1cImZvcm11bGFGaWVsZC52YWx1ZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uRm9ybXVsYUZpZWxkQ2hhbmdlKGZvcm11bGFGaWVsZClcIj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIGkgY2FtcGkgY29uIHZhbG9yaShub24gY2FsY29sYXRpKSB2aW5jb2xhdGkgbGkgbW9zdHJvIGluIHVuYSBzZWxlY3QtLT5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOVwiICpuZ0lmPVwiZm9ybXVsYUZpZWxkLnR5cGUgPT0gdHJpZ2dlclByb3BlcnR5VHlwZS5EUk9QRE9XTl9MSVNUXCI+XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInU2VsZXppb25hIHZhbG9yZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlEYXRhXT1cImZvcm11bGFGaWVsZC5hbGxvd2VkVmFsdWVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkRyb3BEb3duU2VsZWN0aW9uKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiZm9ybXVsYUZpZWxkLnNlbGVjdGVkQWxsb3dlZFZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2FycmF5S2V5UHJvcGVydHldPVwiJ2tleSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIid2YWx1ZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaXNSZXF1aXJlZF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZXFwLWZvcm0tZmllbGQgZXFwLWNvbG91cmVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgPCEtLSBmaW5lIGdlc3Rpb25lIGxpc3RlLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOVwiICpuZ0lmPVwiZm9ybXVsYUZpZWxkLnR5cGUgPT0gdHJpZ2dlclByb3BlcnR5VHlwZS5ETU1PRFVMRVwiPlxyXG4gICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW3BsYWNlaG9sZGVyXT1cIidTZWxlemlvbmEgbW9kdWxvJ1wiIFthcnJheURhdGFdPVwiZm9ybXNcIiBbKG5nTW9kZWxJbnB1dCldPVwiZm9ybXVsYUZpZWxkLm9iamVjdFwiIFtpc1NlYXJjaGFibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCInSUQnXCIgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCInTmFtZSdcIiBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIiAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uRXFwU2VsZWN0TW9kdWxlKCRldmVudCwgZm9ybXVsYUZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICA8bWF0LWNhcmQtZm9vdGVyICpuZ0lmPVwiIUluRmllbGRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgbXQtMiBtYi0xIG1lLTNcIj4gXHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtci0yXCIgbWF0LXJhaXNlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzYXZlT3JFeGl0Rm9ybSh0cnVlKVwiPlxyXG4gICAgICAgICAgICAgICAgQW5udWxsYVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1yLTJcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzYXZlT3JFeGl0Rm9ybShmYWxzZSlcIiBbZGlzYWJsZWRdPVwiaXNTYXZpbmdcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWlzU2F2aW5nXCI+U2FsdmE8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImlzU2F2aW5nXCI+U2FsdmF0YWdnaW8gaW4gQ29yc28uLi48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9tYXQtY2FyZC1mb290ZXI+XHJcblxyXG48L21hdC1jYXJkPlxyXG5cclxuPCEtLURJQUxPRyBQRVIgU0VNUExJRklDQVJFIExBIFNDUklUVFVSQSBERUwgQ0FNUE8gRk9STVVMQS0tPlxyXG48bmctdGVtcGxhdGUgI2RpYWxvZ0Zvcm11bGE+XHJcbiAgICA8ZXFwLWR5bmFtaWMtbW9kdWxlLWFkZC1mb3JtdWxhLWNvbXBvbmVudD5cclxuICAgIDwvZXFwLWR5bmFtaWMtbW9kdWxlLWFkZC1mb3JtdWxhLWNvbXBvbmVudD5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
252
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWJ1dHRvbi1jcmVhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9hY3Rpb24tYnV0dG9uLWNyZWF0b3IvYWN0aW9uLWJ1dHRvbi1jcmVhdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9hY3Rpb24tYnV0dG9uLWNyZWF0b3IvYWN0aW9uLWJ1dHRvbi1jcmVhdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQWUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFdEcsT0FBTyxFQUE2QyxhQUFhLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN2SCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7Ozs7Ozs7O0FBU2pFLE1BQU0sT0FBTyw0QkFBNEI7SUF5QnJDLFlBQW9CLE1BQWlCLEVBQVUsb0JBQTBDO1FBQXJFLFdBQU0sR0FBTixNQUFNLENBQVc7UUFBVSx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBdEJwRSxpQkFBWSxHQUFpQixJQUFJLENBQUM7UUFDN0Isc0JBQWlCLEdBQXNCLElBQUksQ0FBQztRQUNyRCxhQUFRLEdBQVEsSUFBSSxDQUFDO1FBRXRCLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFFakMsaUJBQVks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ZDs7Ozs7Y0FLTTtRQUNOLGFBQWEsQ0FBQyxRQUFRLENBQUMsMERBQTBELEVBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUE7UUFHOUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxhQUFhLENBQUMsR0FBRyxFQUFFLEtBQW1CLEVBQUUsUUFBb0I7UUFDMUQsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUM1QixJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO0lBQ3hELENBQUM7OzBIQXRQVSw0QkFBNEI7OEdBQTVCLDRCQUE0Qix3Y0NoQnpDLHFnTEErR2M7NEZEL0ZELDRCQUE0QjtrQkFMeEMsU0FBUzsrQkFDRSx1QkFBdUI7bUlBTWxCLElBQUk7c0JBQWxCLEtBQUs7dUJBQUMsTUFBTTtnQkFDVSxZQUFZO3NCQUFsQyxLQUFLO3VCQUFDLGNBQWM7Z0JBQ08saUJBQWlCO3NCQUE1QyxLQUFLO3VCQUFDLG1CQUFtQjtnQkFDUCxRQUFRO3NCQUExQixLQUFLO3VCQUFDLFVBQVU7Z0JBQ2UscUJBQXFCO3NCQUFwRCxLQUFLO3VCQUFDLHVCQUF1QjtnQkFDWixPQUFPO3NCQUF4QixLQUFLO3VCQUFDLFNBQVM7Z0JBRU4sWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBV3lDLGFBQWE7c0JBQTFELFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGlvbkJ1dHRvbiwgQWN0aW9uRmxhZ0VudW0sIFRyaWdnZXJQcm9wZXJ0eVR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3RyaWdnZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBGb3JtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2Zvcm0ubW9kZWwnO1xyXG5pbXBvcnQgeyBFbmRQb2ludENvbmZpZ3VyYXRpb24sIEVuZFBvaW50RGF0YVBhcmFtcywgUGFyYW1UeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9lbmRQb2ludENvbmZpZ3VyYXRpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBGaWVsZFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2Jhc2VGaWVsZC5tb2RlbCc7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuXHJcbmltcG9ydCB7IEdsb2JhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9nbG9iYWwuc2VydmljZSc7XHJcbmltcG9ydCB7IFV0aWxpdHlIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbGl0eUhlbHBlci5zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IEFjdGlvbkJ1dHRvbkZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy9hY3Rpb25CdXR0b24ubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhY3Rpb24tYnV0dG9uLWNyZWF0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hY3Rpb24tYnV0dG9uLWNyZWF0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2FjdGlvbi1idXR0b24tY3JlYXRvci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBY3Rpb25CdXR0b25DcmVhdG9yQ29tcG9uZW50IHtcclxuXHJcbiAgQElucHV0KFwiZm9ybVwiKSBmb3JtOiBGb3JtO1xyXG4gIEBJbnB1dChcImFjdGlvbkJ1dHRvblwiKSBhY3Rpb25CdXR0b246IEFjdGlvbkJ1dHRvbiA9IG51bGw7XHJcbiAgQElucHV0KFwiYWN0aW9uQnV0dG9uRmllbGRcIikgYWN0aW9uQnV0dG9uRmllbGQ6IEFjdGlvbkJ1dHRvbkZpZWxkID0gbnVsbDtcclxuICBASW5wdXQoXCJmb3JtdWxhc1wiKSBmb3JtdWxhczogYW55ID0gbnVsbDtcclxuICBASW5wdXQoXCJlbmRQb2ludENvbmZpZ3VyYXRpb25cIikgZW5kUG9pbnRDb25maWd1cmF0aW9uOiBFbmRQb2ludENvbmZpZ3VyYXRpb247XHJcbiAgQElucHV0KFwiSW5GaWVsZFwiKSBJbkZpZWxkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKSBvblNhdmVSZWNvcmQ6IEV2ZW50RW1pdHRlcjxBY3Rpb25CdXR0b24+ID0gbmV3IEV2ZW50RW1pdHRlcjxBY3Rpb25CdXR0b24+KCk7XHJcbiAgQE91dHB1dCgpIG9uQ2hhbmdlU29tZXRoaW5nOiBFdmVudEVtaXR0ZXI8QWN0aW9uQnV0dG9uPiA9IG5ldyBFdmVudEVtaXR0ZXI8QWN0aW9uQnV0dG9uPigpO1xyXG5cclxuICAgIEZpZWxkVHlwZUVudW0gPSBGaWVsZFR5cGVFbnVtO1xyXG4gICAgaXNTYXZpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHNlbGVjdGVkRm9ybXVsYTogYW55O1xyXG4gICAgZm9ybXVsYUtleXM6IEFycmF5PGFueT4gPSBuZXcgQXJyYXk8YW55PigpO1xyXG4gICAgZm9ybXVsYUZpZWxkc1N0cnVjdHVyZTogQXJyYXk8YW55PiA9IG5ldyBBcnJheTxhbnk+KCk7XHJcbiAgICBhY3Rpb25zRmxhZyA9IEFjdGlvbkZsYWdFbnVtO1xyXG4gICAgdHJpZ2dlclByb3BlcnR5VHlwZSA9IFRyaWdnZXJQcm9wZXJ0eVR5cGVFbnVtO1xyXG4gIFxyXG4gICAgZGlhbG9nRm9ybXVsYVJlZjogTWF0RGlhbG9nUmVmPFRlbXBsYXRlUmVmPGFueT4+O1xyXG4gICAgQFZpZXdDaGlsZChcImRpYWxvZ0Zvcm11bGFcIiwgeyBzdGF0aWM6IHRydWUgfSkgZGlhbG9nRm9ybXVsYTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBcclxuICAgIGZvcm1zOiBBcnJheTxGb3JtPjtcclxuICBcclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csIHByaXZhdGUgdXRpbGl0eUhlbHBlclNlcnZpY2U6IFV0aWxpdHlIZWxwZXJTZXJ2aWNlKXt9XHJcbiAgICBcclxuICAgIG5nT25Jbml0KCl7XHJcblxyXG4gICAgICAvLy9cclxuICAgICAgLy8vIFF1ZXN0byBjb21wb25lbnRlIGZ1bnppb25hIHNpYSBwZXIgaSBib3R0b25pIGRlaSBmaWVsZHMgc2lhIHBlciBpIGJvdHRvbmkgc3VnbGkgaGVhZGVyIChhZGRyZWNvcmQsIGxpc3R2aWV3IGVjY2V0ZXJhKVxyXG4gICAgICAvLy8gU2Ugc2kgc3RhIGxhdm9yYW5kbyBzdWkgZmllbGRzIMOoIHBvcG9sYXRvICd0aGlzLmFjdGlvbkJ1dHRvbkZpZWxkJyBhbHRyaW1lbnRpIMOoIG51bGwuXHJcbiAgICAgIC8vL1xyXG5cclxuICAgICAgaWYgKHRoaXMuYWN0aW9uQnV0dG9uRmllbGQgIT0gbnVsbCl7XHJcbiAgICAgICAgdGhpcy5hY3Rpb25CdXR0b24gPSA8QWN0aW9uQnV0dG9uPnRoaXMuYWN0aW9uQnV0dG9uRmllbGQ7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIGlmICh0aGlzLmFjdGlvbkJ1dHRvbiAhPSBudWxsICYmIHRoaXMuYWN0aW9uQnV0dG9uLmV4ZWN1dGlvbiAhPSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZvcm11bGEgPSB7fTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRm9ybXVsYS5rZXkgPSB0aGlzLmFjdGlvbkJ1dHRvbi5leGVjdXRpb247XHJcblxyXG4gICAgICAgIC8qXHJcbiAgICAgICAgaWYgKHRoaXMuYWN0aW9uQnV0dG9uRmllbGQgPT0gbnVsbCl7XHJcbiAgICAgICAgICB0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUgPSBuZXcgQXJyYXk8YW55PigpO1xyXG4gICAgICAgICAgdGhpcy5mb3JtdWxhcy5mb3JFYWNoKChyZXMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlLnB1c2goe1wia2V5XCI6IHJlcy5rZXksIFwidHlwZVwiOiB0aGlzLmZvcm11bGFzW3RoaXMuc2VsZWN0ZWRGb3JtdWxhLmtleV1bcmVzXS50eXBlLCBcInRvb2x0aXBcIjogdGhpcy5mb3JtdWxhc1t0aGlzLnNlbGVjdGVkRm9ybXVsYS5rZXldW3Jlc10udG9vbHRpcH0pO1xyXG4gICAgICAgICAgfSk7ICAgXHJcblxyXG4gICAgICAgICAgT2JqZWN0LmtleXModGhpcy5hY3Rpb25CdXR0b24uZm9ybXVsYXNUZW1wKS5mb3JFYWNoKChyZXMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlLmZpbmQoeCA9PiB4LmtleSA9PSByZXMpLnZhbHVlID0gdGhpcy5hY3Rpb25CdXR0b24uZm9ybXVsYXNUZW1wW3Jlc10udmFsdWU7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlLnB1c2godGhpcy5hY3Rpb25CdXR0b24uZm9ybXVsYXMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgKi9cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuYWN0aW9uQnV0dG9uRmllbGQgPT0gbnVsbCl7XHJcbiAgICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmFjdGlvbkJ1dHRvbi5mb3JtdWxhc1RlbXApLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNBbkFjdGlvbktleShrZXksIHRoaXMuYWN0aW9uQnV0dG9uLCB0aGlzLmZvcm11bGFzKSl7IHJldHVybjsgfVxyXG4gICAgICAgICAgICB0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUucHVzaCh0aGlzLmFjdGlvbkJ1dHRvbi5mb3JtdWxhc1RlbXBba2V5XSk7XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZSA9IHRoaXMuYWN0aW9uQnV0dG9uRmllbGQuZm9ybXVsYXM7XHJcbiAgICAgICAgfSAgICAgICAgXHJcblxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5hY3Rpb25CdXR0b24gPT0gbnVsbCl7XHJcbiAgICAgICAgdGhpcy5hY3Rpb25CdXR0b24gPSBuZXcgQWN0aW9uQnV0dG9uKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHZhciBleGVjdXRlR2V0TW9kdWxlczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgICAgaWYodGhpcy5mb3JtdWxhcyl7XHJcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybXVsYXMpLmZvckVhY2goKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMuZm9ybXVsYUtleXMucHVzaCh7XCJrZXlcIjogcmVzfSk7XHJcbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5mb3JtdWxhc1tyZXNdKS5mb3JFYWNoKChwcm9wZXJ0eSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMuZm9ybXVsYXNbcmVzXVtwcm9wZXJ0eV0udHlwZSA9PSBUcmlnZ2VyUHJvcGVydHlUeXBlRW51bS5ETU1PRFVMRSl7XHJcbiAgICAgICAgICAgIGV4ZWN1dGVHZXRNb2R1bGVzID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgICBpZiAoZXhlY3V0ZUdldE1vZHVsZXMpe1xyXG4gICAgICAgIHRoaXMuZ2V0QWxsTW9kdWxlcygpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIG9wZW5Gb3JtdWxhRGlhbG9nKGZvcm11bGFGaWVsZDogYW55KSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nRm9ybXVsYVJlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5kaWFsb2dGb3JtdWxhLCB7XHJcbiAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICAgIHdpZHRoOiBcIjc1JVwiLFxyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgIGZvcm11bGE6IHRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZS5maW5kKHggPT4geC5rZXkgPT0gZm9ybXVsYUZpZWxkLmtleSkudmFsdWUsXHJcbiAgICAgICAgICBmaWVsZHM6IHRoaXMuZm9ybS5GaWVsZHNcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5kaWFsb2dGb3JtdWxhUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICB2YXIgZm9ybXVsYVRvQ2hhbmdlID0gdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlLmZpbmQoeCA9PiB4LmtleSA9PSBmb3JtdWxhRmllbGQua2V5KTtcclxuICAgICAgICBmb3JtdWxhVG9DaGFuZ2UudmFsdWUgPSByZXN1bHQuZm9ybXVsYS50b1N0cmluZygpID09IFwiXCIgPyBudWxsIDogcmVzdWx0LmZvcm11bGEudG9TdHJpbmcoKTtcclxuICAgICAgICB0aGlzLm9uRm9ybXVsYUZpZWxkQ2hhbmdlKGZvcm11bGFUb0NoYW5nZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKmFnZ2lvcm5hICBzZWxlY3RlZEZvcm11bGEgY29uIGlsIHZhbG9yZSByZXN0aXR1aXRvIGRhbGxhIHNlbGVjdFxyXG4gICAgICogcXVpIG5vbiDDqCBjaGlhcm8gc2UgZSBxdWFuZG8gcmljaGlhbWFyZSBpbCBjaGFuZ2VTb21ldGhpbmcgXHJcbiAgICAgKiAqL1xyXG4gICAgb25Ecm9wRG93blNlbGVjdGlvbihzZWxlY3RlZEFsbG93ZWRWYWx1ZSl7XHJcbiAgICAgIFxyXG4gICAgICB0aGlzLmNoYW5nZVNvbWV0aGluZygpOyAvLyBub24gc2kgY2FwaXNjZSBhIGNoZSBzZXJ2ZSwgYXNzZWduYSBjb3NlXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGb3JtdWxhLnNlbGVjdGVkQWxsb3dlZFZhbHVlID0gc2VsZWN0ZWRBbGxvd2VkVmFsdWUudmFsdWU7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIG9uRm9ybXVsYUZpZWxkQ2hhbmdlKGZvcm11bGFGaWVsZDogYW55KXtcclxuICAgICAgIHRoaXMuY2hhbmdlU29tZXRoaW5nKCk7XHJcbiAgICB9ICAgIFxyXG5cclxuICAgIG9uRXFwU2VsZWN0TW9kdWxlKGV2LCBmb3JtdWxhRmllbGQpe1xyXG4gICAgICBpZiAoZXYgIT0gbnVsbCl7XHJcbiAgICAgICAgZm9ybXVsYUZpZWxkLnZhbHVlID0gZXYuSUQ7ICAgIFxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZvcm11bGFGaWVsZC52YWx1ZSA9IFwiXCI7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGFuZ2VTb21ldGhpbmcoKTtcclxuICAgIH0gICAgXHJcblxyXG4gIHNhdmVPckV4aXRGb3JtKGV4aXQ6IGJvb2xlYW4pIHtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coJ2FkZC1mb3JtLXJlY29yZCBzYXZlUmVjb3JkRXZlbnQnKVxyXG4gICAgaWYgKGV4aXQpIHtcclxuICAgICAgdGhpcy5vblNhdmVSZWNvcmQuZW1pdChudWxsKTtcclxuICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICBpZiAodGhpcy5hY3Rpb25CdXR0b24uQnV0dG9uVW5pcXVlSWQgPT0gbnVsbCl7IHRoaXMuYWN0aW9uQnV0dG9uLkJ1dHRvblVuaXF1ZUlkID0gdGhpcy5nZW5lcmF0ZUdVSUQoKTsgfVxyXG4gICAgICB0aGlzLmFjdGlvbkJ1dHRvbi5CdXR0b25Db2RlID0gdGhpcy5zZWxlY3RlZEZvcm11bGEua2V5O1xyXG5cclxuICAgICAgdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlLmZvckVhY2goKGZvcm11bGFGaWVsZCkgPT4ge1xyXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hY3Rpb25CdXR0b24uZm9ybXVsYXMgPT0gXCJ1bmRlZmluZWRcIil7IHRoaXMuYWN0aW9uQnV0dG9uLmZvcm11bGFzID0ge307IH1cclxuICAgICAgICB0aGlzLmFjdGlvbkJ1dHRvbi5mb3JtdWxhc1RlbXBbZm9ybXVsYUZpZWxkLmtleV0gPSBmb3JtdWxhRmllbGQ7XHJcbiAgICAgICAgdGhpcy5hY3Rpb25CdXR0b24uZXhlY3V0aW9uID0gdGhpcy5zZWxlY3RlZEZvcm11bGEua2V5O1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5pc1NhdmluZyA9IHRydWU7XHJcblxyXG4gICAgICBjb25zb2xlLmxvZyhcIkFjdGlvbkJ1dHRvbkNyZWF0b3JDb21wb25lbnQgc2F2ZU9yRXhpdEZvcm0oKVwiLCB0aGlzLmFjdGlvbkJ1dHRvbik7XHJcbiAgICAgIHRoaXMub25TYXZlUmVjb3JkLmVtaXQodGhpcy5hY3Rpb25CdXR0b24pO1xyXG4gICAgfVxyXG4gIH0gICAgXHJcblxyXG4gIGdlbmVyYXRlR1VJRCgpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdGltZXN0YW1wID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICBjb25zdCByYW5kb21OdW0gPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMDAwMDAwKTtcclxuICAgIHJldHVybiBgJHt0aW1lc3RhbXB9LSR7cmFuZG9tTnVtfWA7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VTb21ldGhpbmcoKXtcclxuICAgIHRoaXMuYWN0aW9uQnV0dG9uLkJ1dHRvbkNvZGUgPSB0aGlzLnNlbGVjdGVkRm9ybXVsYS5rZXk7XHJcblxyXG4gICAgaWYgKCF0aGlzLmFjdGlvbkJ1dHRvbi5mb3JtdWxhc1RlbXApeyB0aGlzLmFjdGlvbkJ1dHRvbi5mb3JtdWxhc1RlbXAgPSB7fTsgfVxyXG5cclxuICAgIHRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZS5mb3JFYWNoKChmb3JtdWxhRmllbGQpID0+IHtcclxuICAgICAgaWYgKHR5cGVvZiB0aGlzLmFjdGlvbkJ1dHRvbi5mb3JtdWxhcyA9PSBcInVuZGVmaW5lZFwiKXsgdGhpcy5hY3Rpb25CdXR0b24uZm9ybXVsYXMgPSB7fTsgfVxyXG4gICAgICB0aGlzLmFjdGlvbkJ1dHRvbi5mb3JtdWxhc1RlbXBbZm9ybXVsYUZpZWxkLmtleV0gPSBmb3JtdWxhRmllbGQ7XHJcbiAgICAgIHRoaXMuYWN0aW9uQnV0dG9uLmV4ZWN1dGlvbiA9IHRoaXMuc2VsZWN0ZWRGb3JtdWxhLmtleTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMub25DaGFuZ2VTb21ldGhpbmcuZW1pdCh0aGlzLmFjdGlvbkJ1dHRvbik7XHJcbiAgfVxyXG5cclxuICBnZXRBbGxNb2R1bGVzKCl7XHJcblxyXG4gICAgY29uc3QgZHluYW1pY01vZHVsZVBhcmFtczogQXJyYXk8RW5kUG9pbnREYXRhUGFyYW1zPiA9XHJcbiAgICAgIG5ldyBBcnJheTxFbmRQb2ludERhdGFQYXJhbXM+KCk7XHJcbiAgICBkeW5hbWljTW9kdWxlUGFyYW1zLnB1c2goe1xyXG4gICAgICBQYXJhbU5hbWU6IFwib3JnYWlkXCIsXHJcbiAgICAgIFBhcmFtVmFsdWU6IHRoaXMuZm9ybS5PcmdhSUQsXHJcbiAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIlF1ZXJ5IHBhcmFtXCJdLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnV0aWxpdHlIZWxwZXJTZXJ2aWNlLlJ1bkVuZFBvaW50Q2FsbChcclxuICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uRm9ybXMuR2V0QWxsRm9ybUVuZFBvaW50LFxyXG4gICAgICBkeW5hbWljTW9kdWxlUGFyYW1zLFxyXG4gICAgICAocmVzOiBBcnJheTxGb3JtPikgPT4ge1xyXG4gICAgICAgIHRoaXMuZm9ybXMgPSByZXM7XHJcbiAgICAgICAgdGhpcy5mb3JtcyA9IHRoaXMuZm9ybXMuc29ydCgodW5vLCBkdWUpID0+IHVuby5OYW1lLmxvY2FsZUNvbXBhcmUoZHVlLk5hbWUpKTtcclxuXHJcbiAgICAgICAgdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlLmZvckVhY2goKHJlcykgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcy50eXBlID09IFRyaWdnZXJQcm9wZXJ0eVR5cGVFbnVtLkRNTU9EVUxFKXtcclxuICAgICAgICAgICAgcmVzLm9iamVjdCA9IHRoaXMuZm9ybXMuZmluZCh4ID0+IHguSUQgPT0gcmVzLnZhbHVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHsgfVxyXG4gICAgKTsgICAgXHJcbiAgfSAgXHJcblxyXG4gIG9uQ2hhbmdlRm9ybXVsYShmb3JtdWxhOiBhbnkpe1xyXG5cclxuICAgIGlmIChmb3JtdWxhID09IG51bGwpeyAgXHJcbiAgICAgIHRoaXMuY2hhbmdlU29tZXRoaW5nKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKCdAQHRyaWdnZXItY3JlYXRvcjpvbkNoYW5nZUZvcm11bGEgc2VsZWN0ZWQgZm9ybXVsYScsZm9ybXVsYSlcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coJ0BAdHJpZ2dlci1jcmVhdG9yOm9uQ2hhbmdlRm9ybXVsYSBmb3JtdWxhcycsdGhpcy5mb3JtdWxhcylcclxuXHJcbiAgICB0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUgPSBuZXcgQXJyYXk8YW55PigpO1xyXG5cclxuICAgIGNvbnNvbGUubG9nKFwib25DaGFuZ2VGb3JtdWxhXCIsIHRoaXMuZm9ybXVsYXMsIGZvcm11bGEua2V5KTtcclxuXHJcbiAgICAvLy0tLS0tLS0tLS0tLVxyXG4gICAgT2JqZWN0LmtleXModGhpcy5mb3JtdWxhc1tmb3JtdWxhLmtleV0pLmZvckVhY2goKHJlcykgPT4ge1xyXG5cclxuICAgICAgdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlLnB1c2goe1xyXG4gICAgICAgIFwia2V5XCI6IHJlcywgXHJcbiAgICAgICAgXCJ0eXBlXCI6IHRoaXMuZm9ybXVsYXNbZm9ybXVsYS5rZXldW3Jlc10udHlwZSwgXHJcbiAgICAgICAgXCJ0b29sdGlwXCI6IHRoaXMuZm9ybXVsYXNbZm9ybXVsYS5rZXldW3Jlc10udG9vbHRpcCxcclxuICAgICAgICBcInZhbHVlXCIgOiB0aGlzLmZvcm11bGFzW2Zvcm11bGEua2V5XVtyZXNdLnZhbHVlLFxyXG4gICAgICAgIC8qKiBwZXIgdmFsb3JpIHZpbmNvbGF0aSBhIGxpc3RlICovXHJcbiAgICAgICAgXCJhbGxvd2VkVmFsdWVzXCIgOiB0aGlzLmZvcm11bGFzW2Zvcm11bGEua2V5XVtyZXNdLmFsbG93ZWRWYWx1ZXMsXHJcbiAgICAgICAgXCJzZWxlY3RlZEFsbG93ZWRWYWx1ZVwiIDogdGhpcy5mb3JtdWxhc1tmb3JtdWxhLmtleV1bcmVzXS5zZWxlY3RlZEFsbG93ZWRWYWx1ZVxyXG5cclxuICAgICAgfSk7IFxyXG4gICAgfSk7ICBcclxuICAgIC8vLS0tLS0tLS0tLS0tXHJcbiAgICAvKiAqKiogb3JpZ2luYWxlICoqKlxyXG4gICAgT2JqZWN0LmtleXModGhpcy5mb3JtdWxhc1tmb3JtdWxhLmtleV0pLmZvckVhY2goKHJlcykgPT4ge1xyXG4gICAgICB0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUucHVzaCh7XCJrZXlcIjogcmVzLCBcInR5cGVcIjogdGhpcy5mb3JtdWxhc1tmb3JtdWxhLmtleV1bcmVzXS50eXBlXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICAqKiogKi9cclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coJ0BAdHJpZ2dlci1jcmVhdG9yOm9uQ2hhbmdlRm9ybXVsYSBmb3JtdWxhRmllbGRzU3RydWN0dXJlJyx0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUpXHJcblxyXG5cclxuICAgIHRoaXMuY2hhbmdlU29tZXRoaW5nKCk7XHJcbiAgfSAgXHJcbiAgXHJcbiAgaXNBbkFjdGlvbktleShrZXksIGZpZWxkOiBBY3Rpb25CdXR0b24sIGZvcm11bGFzOiBBcnJheTxhbnk+KXtcclxuICAgIHZhciBjb2RlID0gZmllbGQuQnV0dG9uQ29kZTtcclxuICAgIHZhciBlbHMgPSBmb3JtdWxhc1tjb2RlXTtcclxuICAgIHJldHVybiAoT2JqZWN0LmtleXMoZWxzKS5maW5kKHggPT4geCA9PSBrZXkpICE9IG51bGwpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiXHJcbjxtYXQtY2FyZCBjbGFzcz1cImFkZC1mb3JtLWZpZWxkXCI+XHJcbiAgICA8bWF0LWNhcmQtaGVhZGVyICpuZ0lmPVwiIUluRmllbGRcIj5cclxuICAgICAgICA8bWF0LWNhcmQtdGl0bGU+XHJcbiAgICAgICAgICAgIHt7YWN0aW9uQnV0dG9uICE9IG51bGwgPyBcIk1vZGlmaWNhXCIgOiBcIkFnZ2l1bmdpXCJ9fSBib3R0b25lIGF6aW9uZVxyXG4gICAgICAgIDwvbWF0LWNhcmQtdGl0bGU+XHJcbiAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuXHJcbiAgICA8bWF0LWNhcmQtY29udGVudD5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkIGNvbnRhaW5lckNvbnRlbnQgcGFkZGVyXCI+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+VGlwbyBBY3Rpb24gQnV0dG9uPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOVwiPlxyXG4gICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJmb3JtdWxhS2V5c1wiIFsobmdNb2RlbElucHV0KV09XCJzZWxlY3RlZEZvcm11bGFcIlxyXG4gICAgICAgICAgICAgICAgW2FycmF5S2V5UHJvcGVydHldPVwiJ2tleSdcIiBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIidrZXknXCIgW3Nob3dDYW5jZWxCdXR0b25dPVwidHJ1ZVwiIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25DaGFuZ2VGb3JtdWxhKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD4gICAgICAgICAgICBcclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPkV0aWNoZXR0YTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTlcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsICBjbGFzcz1cInB0LTFcIj4gRXRpY2hldHRhIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImFjdGlvbkJ1dHRvbi5CdXR0b25MYWJlbFwiIFtyZWFkb25seV09XCJmYWxzZVwiIChrZXl1cCk9XCJjaGFuZ2VTb21ldGhpbmcoKVwiPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+SWNvbmEgKDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFuZ3VsYXJqc3dpa2kuY29tL2FuZ3VsYXIvYW5ndWxhci1tYXRlcmlhbC1pY29ucy1saXN0LW1hdC1pY29uLWxpc3QnIHRhcmdldD1cIl9ibGFua1wiPmxpc3RhPC9hPik8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC05XCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbCAgY2xhc3M9XCJwdC0xXCI+IEljb25hIE1hdGVyaWFsICg8YSBocmVmPSdodHRwczovL3d3dy5hbmd1bGFyanN3aWtpLmNvbS9hbmd1bGFyL2FuZ3VsYXItbWF0ZXJpYWwtaWNvbnMtbGlzdC1tYXQtaWNvbi1saXN0JyB0YXJnZXQ9XCJfYmxhbmtcIj5saXN0YTwvYT4pIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImFjdGlvbkJ1dHRvbi5JY29uXCIgW3JlYWRvbmx5XT1cImZhbHNlXCIgKGtleXVwKT1cImNoYW5nZVNvbWV0aGluZygpXCI+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PiAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCIhSW5GaWVsZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj5TZXppb25pPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbCAgY2xhc3M9XCJwdC0xXCI+IFNlemlvbmkgPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICBbZW51bURhdGFdPVwiYWN0aW9uc0ZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICBbaXNTZWFyY2hhYmxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBbaXNNdWx0aVNlbGVjdF0gPSBcInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiYWN0aW9uQnV0dG9uLlNob3dJblwiICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJjaGFuZ2VTb21ldGhpbmcoKVwiICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PiAgIFxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nRm9yPVwibGV0IGZvcm11bGFGaWVsZCBvZiBmb3JtdWxhRmllbGRzU3RydWN0dXJlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPnt7Zm9ybXVsYUZpZWxkLmtleX19PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOVwiICpuZ0lmPVwiZm9ybXVsYUZpZWxkLnR5cGUgPT0gdHJpZ2dlclByb3BlcnR5VHlwZS5TVFJJTkdcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsICBjbGFzcz1cInB0LTFcIj4ge3tmb3JtdWxhRmllbGQua2V5fX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW3JlYWRvbmx5XT1cImZhbHNlXCIgW3JlcXVpcmVkXT1cImZhbHNlXCIgW21hdFRvb2x0aXBdPVwiZm9ybXVsYUZpZWxkLnRvb2x0aXBcIiAoY2xpY2spPVwib3BlbkZvcm11bGFEaWFsb2coZm9ybXVsYUZpZWxkKVwiIFsobmdNb2RlbCldPVwiZm9ybXVsYUZpZWxkLnZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25Gb3JtdWxhRmllbGRDaGFuZ2UoZm9ybXVsYUZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS0gaSBjYW1waSBjb24gdmFsb3JpKG5vbiBjYWxjb2xhdGkpIHZpbmNvbGF0aSBsaSBtb3N0cm8gaW4gdW5hIHNlbGVjdC0tPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC05XCIgKm5nSWY9XCJmb3JtdWxhRmllbGQudHlwZSA9PSB0cmlnZ2VyUHJvcGVydHlUeXBlLkRST1BET1dOX0xJU1RcIj5cclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTZWxlemlvbmEgdmFsb3JlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheURhdGFdPVwiZm9ybXVsYUZpZWxkLmFsbG93ZWRWYWx1ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uRHJvcERvd25TZWxlY3Rpb24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJmb3JtdWxhRmllbGQuc2VsZWN0ZWRBbGxvd2VkVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCIna2V5J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ3ZhbHVlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpc1JlcXVpcmVkXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJlcXAtZm9ybS1maWVsZCBlcXAtY29sb3VyZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8IS0tIGZpbmUgZ2VzdGlvbmUgbGlzdGUtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC05XCIgKm5nSWY9XCJmb3JtdWxhRmllbGQudHlwZSA9PSB0cmlnZ2VyUHJvcGVydHlUeXBlLkRNTU9EVUxFXCI+XHJcbiAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbcGxhY2Vob2xkZXJdPVwiJ1NlbGV6aW9uYSBtb2R1bG8nXCIgW2FycmF5RGF0YV09XCJmb3Jtc1wiIFsobmdNb2RlbElucHV0KV09XCJmb3JtdWxhRmllbGQub2JqZWN0XCIgW2lzU2VhcmNoYWJsZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFthcnJheUtleVByb3BlcnR5XT1cIidJRCdcIiBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIidOYW1lJ1wiIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25FcXBTZWxlY3RNb2R1bGUoJGV2ZW50LCBmb3JtdWxhRmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgIDxtYXQtY2FyZC1mb290ZXIgKm5nSWY9XCIhSW5GaWVsZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBtdC0yIG1iLTEgbWUtM1wiPiBcclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1yLTJcIiBtYXQtcmFpc2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNhdmVPckV4aXRGb3JtKHRydWUpXCI+XHJcbiAgICAgICAgICAgICAgICBBbm51bGxhXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibXItMlwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNhdmVPckV4aXRGb3JtKGZhbHNlKVwiIFtkaXNhYmxlZF09XCJpc1NhdmluZ1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhaXNTYXZpbmdcIj5TYWx2YTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXNTYXZpbmdcIj5TYWx2YXRhZ2dpbyBpbiBDb3Jzby4uLjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L21hdC1jYXJkLWZvb3Rlcj5cclxuXHJcbjwvbWF0LWNhcmQ+XHJcblxyXG48IS0tRElBTE9HIFBFUiBTRU1QTElGSUNBUkUgTEEgU0NSSVRUVVJBIERFTCBDQU1QTyBGT1JNVUxBLS0+XHJcbjxuZy10ZW1wbGF0ZSAjZGlhbG9nRm9ybXVsYT5cclxuICAgIDxlcXAtZHluYW1pYy1tb2R1bGUtYWRkLWZvcm11bGEtY29tcG9uZW50PlxyXG4gICAgPC9lcXAtZHluYW1pYy1tb2R1bGUtYWRkLWZvcm11bGEtY29tcG9uZW50PlxyXG48L25nLXRlbXBsYXRlPiJdfQ==