@sarasanalytics-com/design-system 0.0.159 → 0.0.160

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.
@@ -127,7 +127,7 @@ export class MessageBannerV2Component {
127
127
  }
128
128
  }
129
129
  initializeCleanFormState() {
130
- this.model = {};
130
+ // this.model = {};
131
131
  setTimeout(() => {
132
132
  Object.keys(this.form.controls).forEach(key => {
133
133
  const control = this.form.get(key);
@@ -507,4 +507,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
507
507
  }], buttonClick: [{
508
508
  type: Output
509
509
  }] } });
510
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1iYW5uZXItdjIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50LWxpYnJhcnkvc3JjL2xpYi9tZXNzYWdlLWJhbm5lci12Mi9tZXNzYWdlLWJhbm5lci12Mi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL21lc3NhZ2UtYmFubmVyLXYyL21lc3NhZ2UtYmFubmVyLXYyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQVUsWUFBWSxFQUFFLE1BQU0sRUFBNEIsTUFBTSxlQUFlLENBQUM7QUFDM0gsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxZQUFZLEVBQXFCLE1BQU0sa0JBQWtCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFN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V0FBVyxFQUFFLG1CQUFtQixFQUFFLFlBQVksRUFBRSxjQUFjLENBQUMsYUFDOUwsQ0FBQyxXQUFXLENBQUM7OEJBeUJmLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxpQ0FBaUM7c0JBQXpDLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBa0NJLFdBQVc7c0JBQXBCLE1BQU07Z0JBb0NNLFdBQVc7c0JBQXZCLEtBQUs7Z0JBSU8sZUFBZTtzQkFBM0IsS0FBSztnQkFJTyxLQUFLO3NCQUFqQixLQUFLO2dCQUlPLFdBQVc7c0JBQXZCLEtBQUs7Z0JBSUcsT0FBTztzQkFBZixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBjb21wdXRlZCwgc2lnbmFsLCBlZmZlY3QsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSWNvblNlcnZpY2UgfSBmcm9tICcuLi9pY29uL2ljb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgSWNvbk5hbWUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2ljb24taW50ZXJmYWNlJztcclxuaW1wb3J0IHsgQnV0dG9uSWNvblBvc2l0aW9uLCBCdXR0b25TaXplLCBCdXR0b25UeXBlLCBCdXR0b25JbnRlcmZhY2UsIEJ1dHRvbkNsaWNrRXZlbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2J1dHRvbi1pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vaWNvbi9pY29uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1lc3NhZ2VCYW5uZXJDb21wb25lbnQgfSBmcm9tICcuLi9tZXNzYWdlLWJhbm5lci9tZXNzYWdlLWJhbm5lci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb3JtSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi9mb3JtLWlucHV0L2Zvcm0taW5wdXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybVNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0tc2VsZWN0L2Zvcm0tc2VsZWN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBGb3JtbHlNb2R1bGUsIEZvcm1seUZpZWxkQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XHJcbmltcG9ydCB7IENoaXBzQ29tcG9uZW50IH0gZnJvbSAnLi4vY2hpcHMvY2hpcHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybUxheW91dENvbmZpZywgRm9ybUZpZWxkQ29uZmlnLCBVbmlmaWVkRm9ybUNvbmZpZyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZm9ybS1sYXlvdXQuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmludGVyZmFjZSBNZXNzYWdlQmFubmVyU3RhdGUge1xyXG4gIHR5cGU6ICdkZWZhdWx0JyB8ICdjb25uZWN0aW9uJyB8ICdhY2Nlc3MnIHwgJ2FjY2Vzc1Jlc3RyaWN0ZWQnO1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgZGVzY3JpcHRpb246IHN0cmluZztcclxuICBtZXNzYWdlSWNvbjogc3RyaW5nO1xyXG4gIG1lc3NhZ2VJY29uU2l6ZT86IHtcclxuICAgIHdpZHRoPzogc3RyaW5nO1xyXG4gICAgaGVpZ2h0Pzogc3RyaW5nO1xyXG4gIH07XHJcbiAgc3BhY2luZ0JldHdlZW5JbWFnZUFuZERlc2NyaXB0aW9uPzogc3RyaW5nO1xyXG4gIGNvbnRlbnRHYXA/OiBzdHJpbmc7IFxyXG4gIGNvbnRhY3RVcmw/OiBzdHJpbmc7XHJcbiAgdGl0bGVDbGFzcz86IHN0cmluZztcclxuICBkZXNjcmlwdGlvbkNsYXNzPzogc3RyaW5nO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NhLW1lc3NhZ2UtYmFubmVyLXYyJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEljb25Db21wb25lbnQsIEJ1dHRvbkNvbXBvbmVudCwgSHR0cENsaWVudE1vZHVsZSxNZXNzYWdlQmFubmVyQ29tcG9uZW50LCBGb3JtSW5wdXRDb21wb25lbnQsIEZvcm1TZWxlY3RDb21wb25lbnQsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3JtbHlNb2R1bGUsIENoaXBzQ29tcG9uZW50XSxcclxuICBwcm92aWRlcnM6IFtJY29uU2VydmljZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21lc3NhZ2UtYmFubmVyLXYyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9tZXNzYWdlLWJhbm5lci12Mi5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VCYW5uZXJWMkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgLy8gU3RhdGUgbWFuYWdlbWVudCB1c2luZyBzaWduYWxzXHJcbiAgcHJpdmF0ZSBzdGF0ZSA9IHNpZ25hbDxNZXNzYWdlQmFubmVyU3RhdGU+KHtcclxuICAgIHR5cGU6ICdkZWZhdWx0JyxcclxuICAgIHRpdGxlOiAnJyxcclxuICAgIGRlc2NyaXB0aW9uOiAnJyxcclxuICAgIG1lc3NhZ2VJY29uOiAnJyxcclxuICAgIG1lc3NhZ2VJY29uU2l6ZToge1xyXG4gICAgICBoZWlnaHQ6ICcxMi41cmVtJ1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICAvLyBDb21wdXRlZCBwcm9wZXJ0aWVzXHJcbiAgcHJvdGVjdGVkIGJhbm5lckNvbnRlbnQgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBjb25zdCBjdXJyZW50U3RhdGUgPSB0aGlzLnN0YXRlKCk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAuLi5jdXJyZW50U3RhdGUsXHJcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLnNhbml0aXplRGVzY3JpcHRpb24oY3VycmVudFN0YXRlLmRlc2NyaXB0aW9uKVxyXG4gICAgfTtcclxuICB9KTtcclxuXHJcbiAgQElucHV0KCkgbWVzc2FnZVR5cGU6ICdkZWZhdWx0JyB8ICdjb25uZWN0aW9uJyB8ICdhY2Nlc3MnIHwgJ2FjY2Vzc1Jlc3RyaWN0ZWQnO1xyXG4gIEBJbnB1dCgpIGNvbnRhY3RVcmw/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc3BhY2luZ0JldHdlZW5JbWFnZUFuZERlc2NyaXB0aW9uPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGNvbnRlbnRHYXA/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdGl0bGVDbGFzcz86IHN0cmluZztcclxuICBASW5wdXQoKSBkZXNjcmlwdGlvbkNsYXNzPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGJhbm5lcjphbnkgPSB7fTtcclxuICBASW5wdXQoKSBmb3JtQ29uZmlnOiBVbmlmaWVkRm9ybUNvbmZpZyB8IG51bGwgPSBudWxsO1xyXG4gIEBJbnB1dCgpIHByZWJ1aWx0Rm9ybUZpZWxkczogVGVtcGxhdGVSZWY8YW55PiBcclxuICBmb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgbW9kZWw6IGFueSA9IHt9O1xyXG4gIGZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXSA9IFtdO1xyXG4gIGZvcm1seUZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXSA9IFtdO1xyXG4gIGFsbEZpZWxkc0ZpbGxlZCA9IHNpZ25hbChmYWxzZSk7XHJcbiAgYWRkaXRpb25hbEZvcm1seUZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXSA9IFtdO1xyXG4gIGFsbEZvcm1seUZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXSA9IFtdO1xyXG4gIHVzZVByZWJ1aWx0RmllbGRzID0gc2lnbmFsKGZhbHNlKTtcclxuICAvLyBDb21wdXRlZCBwcm9wZXJ0aWVzIGZvciB1bmlmaWVkIGFjY2Vzc1xyXG4gIGdldCBhY3RpdmVGb3JtSW5wdXRzKCk6IGFueVtdIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1Db25maWc/LmZpZWxkcyB8fCBbXTtcclxuICB9XHJcblxyXG4gIGdldCBhY3RpdmVDaGlwcygpOiBhbnlbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtQ29uZmlnPy5jaGlwcyB8fCBbXTtcclxuICB9XHJcblxyXG4gIGdldCBhY3RpdmVDdXN0b21Gb3JtQnV0dG9uKCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtQ29uZmlnPy5jdXN0b21CdXR0b24gfHwgW107XHJcbiAgfVxyXG5cclxuICBnZXQgYWN0aXZlRGl2aWRlcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1Db25maWc/LmRpdmlkZXI/LmVuYWJsZWQgPz8gZmFsc2U7XHJcbiAgfSBcclxuXHJcbiAgZ2V0IGFjdGl2ZURpdmlkZXJDb25maWcoKTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1Db25maWc/LmRpdmlkZXIgfHwge307XHJcbiAgfVxyXG5cclxuICBnZXQgYWN0aXZlRm9ybUxheW91dCgpOiBGb3JtTGF5b3V0Q29uZmlnIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1Db25maWc/LmxheW91dCB8fCB7fTtcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSBvbkZvcm1FdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8e3R5cGU6IHN0cmluZywgZGF0YTogYW55fT4oKTtcclxuICBcclxuICBvbkNoaXBSZW1vdmUoY2hpcDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uRm9ybUV2ZW50LmVtaXQoeyB0eXBlOiAnY2hpcC1yZW1vdmUnLCBkYXRhOiBjaGlwIH0pO1xyXG4gIH1cclxuICBcclxuICBvbkFkZFVzZXIoKTogdm9pZCB7XHJcbiAgICBsZXQgY2xpY2tlZEJ1dHRvbiA9IHRoaXMuYWN0aXZlQ3VzdG9tRm9ybUJ1dHRvbjtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuYWN0aXZlQ3VzdG9tRm9ybUJ1dHRvbikpIHtcclxuICAgICAgY2xpY2tlZEJ1dHRvbiA9IHRoaXMuYWN0aXZlQ3VzdG9tRm9ybUJ1dHRvbi5maW5kKGJ0biA9PiBcclxuICAgICAgICBidG4udGV4dCA9PT0gJ0FkZCBVc2VyJyB8fCBidG4uaWQgPT09ICdhZGQtdXNlcicgfHwgYnRuLmFjdGlvbiA9PT0gJ2FkZC11c2VyJ1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vbkZvcm1FdmVudC5lbWl0KHsgdHlwZTogJ2N1c3RvbS1idXR0b24tY2xpY2snLCBkYXRhOiBjbGlja2VkQnV0dG9uIH0pO1xyXG4gICAgLy8gT25seSByZXNldCBmb3JtIGlmIGV4cGxpY2l0bHkgY29uZmlndXJlZCB0byBkbyBzb1xyXG4gICAgaWYgKGNsaWNrZWRCdXR0b24/LnJlc2V0Rm9ybSAhPT0gZmFsc2UpIHtcclxuICAgICAgdGhpcy5yZXNldEZvcm0oKTtcclxuICAgIH1cclxuICB9XHJcbiAgXHJcbiAgLy8gU2VwYXJhdGUgbWV0aG9kIGZvciBmb3JtIHJlc2V0IHRoYXQgY2FuIGJlIGNhbGxlZCBleHRlcm5hbGx5XHJcbiAgcmVzZXRGb3JtKCk6IHZvaWQge1xyXG4gICAgdGhpcy5tb2RlbCA9IHt9O1xyXG4gICAgdGhpcy5mb3JtLnJlc2V0KCk7XHJcbiAgICB0aGlzLmFjdGl2ZUZvcm1JbnB1dHM/LmZvckVhY2goaW5wdXQgPT4ge1xyXG4gICAgICBpbnB1dC52YWx1ZSA9ICcnO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnVwZGF0ZUZvcm1seUZpZWxkcygpO1xyXG4gIH1cclxuICBcclxuICBhcmVBbGxGaWVsZHNGaWxsZWQoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuYWN0aXZlRm9ybUlucHV0cyB8fCB0aGlzLmFjdGl2ZUZvcm1JbnB1dHMubGVuZ3RoIDwgNCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlRm9ybUlucHV0cy5ldmVyeShmaWVsZCA9PiBmaWVsZC52YWx1ZSAmJiBmaWVsZC52YWx1ZS50cmltKCkgIT09ICcnKTtcclxuICB9XHJcbiAgXHJcblxyXG4gIEBJbnB1dCgpIHNldCBtZXNzYWdlSWNvbih2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnN0YXRlLnVwZGF0ZShzID0+ICh7IC4uLnMsIG1lc3NhZ2VJY29uOiB2YWx1ZSB9KSk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgbWVzc2FnZUljb25TaXplKHZhbHVlOiB7IHdpZHRoPzogc3RyaW5nOyBoZWlnaHQ/OiBzdHJpbmcgfSkge1xyXG4gICAgdGhpcy5zdGF0ZS51cGRhdGUocyA9PiAoeyAuLi5zLCBtZXNzYWdlSWNvblNpemU6IHZhbHVlIH0pKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHNldCB0aXRsZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnN0YXRlLnVwZGF0ZShzID0+ICh7IC4uLnMsIHRpdGxlOiB2YWx1ZSB9KSk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgZGVzY3JpcHRpb24odmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5zdGF0ZS51cGRhdGUocyA9PiAoeyAuLi5zLCBkZXNjcmlwdGlvbjogdmFsdWUgfSkpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgYnV0dG9uczogQnV0dG9uSW50ZXJmYWNlW10gPSBbXTtcclxuICBAT3V0cHV0KCkgYnV0dG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEJ1dHRvbkNsaWNrRXZlbnQ+KCk7XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIC8vIENoZWNrIGlmIHRoaXMgaXMgdGhlIGZpcnN0IGluaXRpYWxpemF0aW9uIG9yIGlmIG1lc3NhZ2VUeXBlIGhhcyBjaGFuZ2VkXHJcbiAgICBjb25zdCBzaG91bGRVcGRhdGVCYXNlZE9uVHlwZSA9IGNoYW5nZXNbJ21lc3NhZ2VUeXBlJ10gJiYgXHJcbiAgICAgIC8vIE9ubHkgdXBkYXRlIGJhc2VkIG9uIHR5cGUgaWYgd2UgZG9uJ3QgaGF2ZSBjdXN0b20gdmFsdWVzIHNldFxyXG4gICAgICAhKHRoaXMuc3RhdGUoKS50aXRsZSB8fCB0aGlzLnN0YXRlKCkuZGVzY3JpcHRpb24gfHwgdGhpcy5zdGF0ZSgpLm1lc3NhZ2VJY29uKTtcclxuICAgIFxyXG4gICAgaWYgKHNob3VsZFVwZGF0ZUJhc2VkT25UeXBlKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlQ29udGVudEJhc2VkT25UeXBlKHRoaXMubWVzc2FnZVR5cGUgfHwgJ2RlZmF1bHQnKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgLy8gQ2hlY2sgaWYgcHJlYnVpbHQgZmllbGRzIGFyZSBwcm92aWRlZFxyXG4gICAgaWYgKGNoYW5nZXNbJ3ByZWJ1aWx0Rm9ybUZpZWxkcyddKSB7XHJcbiAgICAgIHRoaXMudXNlUHJlYnVpbHRGaWVsZHMuc2V0KCEhdGhpcy5wcmVidWlsdEZvcm1GaWVsZHMpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBpZiAoY2hhbmdlc1snZm9ybUNvbmZpZyddKSB7XHJcbiAgICAgIGlmICghdGhpcy51c2VQcmVidWlsdEZpZWxkcygpKSB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVGb3JtbHlGaWVsZHMoKTtcclxuICAgICAgICB0aGlzLmluaXRpYWxpemVDbGVhbkZvcm1TdGF0ZSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUNsZWFuRm9ybVN0YXRlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5tb2RlbCA9IHt9O1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybS5jb250cm9scykuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KGtleSk7XHJcbiAgICAgICAgaWYgKGNvbnRyb2wpIHtcclxuICAgICAgICAgIGNvbnRyb2wubWFya0FzVW50b3VjaGVkKCk7XHJcbiAgICAgICAgICBjb250cm9sLm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgICAgICAgICBjb250cm9sLnNldEVycm9ycyhudWxsKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUNvbnRlbnRCYXNlZE9uVHlwZSh0eXBlOiAnZGVmYXVsdCcgfCAnY29ubmVjdGlvbicgfCAnYWNjZXNzJyB8ICdhY2Nlc3NSZXN0cmljdGVkJykgeyAgXHJcbiAgICAvLyBEZWZpbmUgYSB0eXBlIGZvciB0aGUgY29udGVudCBpdGVtcyB0byBlbnN1cmUgYWxsIHByb3BlcnRpZXMgYXJlIHByb3Blcmx5IHR5cGVkXHJcbiAgICB0eXBlIENvbnRlbnRJdGVtID0ge1xyXG4gICAgICB0aXRsZTogc3RyaW5nO1xyXG4gICAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xyXG4gICAgICBtZXNzYWdlSWNvbjogc3RyaW5nO1xyXG4gICAgICBzcGFjaW5nQmV0d2VlbkltYWdlQW5kRGVzY3JpcHRpb24/OiBzdHJpbmc7XHJcbiAgICAgIGNvbnRlbnRHYXA/OiBzdHJpbmc7XHJcbiAgICAgIHRpdGxlQ2xhc3M/OiBzdHJpbmc7XHJcbiAgICAgIGRlc2NyaXB0aW9uQ2xhc3M/OiBzdHJpbmc7XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIE9ubHkgYXBwbHkgZGVmYXVsdCBjb250ZW50IGlmIGN1c3RvbSBjb250ZW50IGhhc24ndCBiZWVuIHByb3ZpZGVkXHJcbiAgICBjb25zdCBjdXJyZW50U3RhdGUgPSB0aGlzLnN0YXRlKCk7XHJcbiAgICBjb25zdCBjb250ZW50OiBSZWNvcmQ8J2RlZmF1bHQnIHwgJ2Nvbm5lY3Rpb24nIHwgJ2FjY2VzcycgfCAnYWNjZXNzUmVzdHJpY3RlZCcsIENvbnRlbnRJdGVtPiA9IHtcclxuICAgICAgZGVmYXVsdDoge1xyXG4gICAgICAgIHRpdGxlOiAnT29wcyEgU29tZXRoaW5nIHdlbnQgd3JvbmcuIFBsZWFzZSB0cnkgYWdhaW4gb3IgdHJ5IGFmdGVyIHNvbWUgdGltZScsXHJcbiAgICAgICAgZGVzY3JpcHRpb246ICdJZiB0aGUgaXNzdWUgcGVyc2lzdHMsIGNvbnRhY3Qgb3VyIHN1cHBvcnQgdGVhbSBhdCA8c3BhbiBjbGFzcz1cInN1cHBvcnQtZW1haWxcIj5zdXBwb3J0QHNhcmFzYW5hbHl0aWNzLmNvbTwvc3Bhbj4nLFxyXG4gICAgICAgIG1lc3NhZ2VJY29uOiAnL2Fzc2V0cy9lcnJvci5naWYnXHJcbiAgICAgIH0sXHJcbiAgICAgIGNvbm5lY3Rpb246IHtcclxuICAgICAgICB0aXRsZTogJ1dlXFwncmUgaGF2aW5nIHRyb3VibGUgY29ubmVjdGluZy4gUGxlYXNlIGNoZWNrIHlvdXIgaW50ZXJuZXQgY29ubmVjdGlvbiBhbmQgdHJ5IGFnYWluJyxcclxuICAgICAgICBkZXNjcmlwdGlvbjogJ1lvdSBjYW4gYWxzbyByZWFjaCBvdXQgdG8gb3VyIHN1cHBvcnQgdGVhbSBhdCA8c3BhbiBjbGFzcz1cInN1cHBvcnQtZW1haWxcIj5zdXBwb3J0QHNhcmFzYW5hbHl0aWNzLmNvbTwvc3Bhbj4gZm9yIGFzc2lzdGFuY2UnLFxyXG4gICAgICAgIG1lc3NhZ2VJY29uOiAnL2Fzc2V0cy9sb3N0LWNvbm5lY3Rpb24uZ2lmJ1xyXG4gICAgICB9LFxyXG4gICAgICBhY2Nlc3M6IHtcclxuICAgICAgICB0aXRsZTogJ1RoaXMgaXMgdGFraW5nIGEgYml0IGxvbmdlciB0aGFuIHVzdWFsLiBQbGVhc2UgaG9sZCBvbiEnLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnSWYgdGhlIGRlbGF5IGNvbnRpbnVlcywgY2hlY2sgeW91ciBjb25uZWN0aW9uIGFuZCB0cnkgcmVmcmVzaGluZyB0aGUgcGFnZS4nLFxyXG4gICAgICAgIG1lc3NhZ2VJY29uOiAnL2Fzc2V0cy9sb25nLWxvYWRpbmcuZ2lmJ1xyXG4gICAgICB9LFxyXG4gICAgICBhY2Nlc3NSZXN0cmljdGVkOiB7XHJcbiAgICAgICAgdGl0bGU6ICdBY2Nlc3MgUmVzdHJpY3RlZCEnLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgTG9va3MgbGlrZSB5b3UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gdGhpcyBtb2R1bGUganVzdCB5ZXQuIE5vIHdvcnJpZXPigJRyZWFjaCBvdXQgdG8geW91ciBhZG1pbiB0byByZXF1ZXN0IGFjY2VzcyB0byB0aGlzIGZlYXR1cmUuIElmIHlvdSdyZSBmYWNpbmcgYW55IGlzc3VlcywgZmVlbCBmcmVlIHRvIDxhIGNsYXNzPVwiY3VzdG9tLWNvbnRhY3QtbGlua1wiIGhyZWY9XCIke3RoaXMuY29udGFjdFVybCA/PyAnaHR0cHM6Ly9zdXBwb3J0LmRlZmF1bHQuY29tJ31cIiB0YXJnZXQ9XCJfYmxhbmtcIj5Db250YWN0IFVzPC9hPi5gLFxyXG4gICAgICAgIG1lc3NhZ2VJY29uOiAnL2Fzc2V0cy9hY2Nlc3MtcmVzdHJpY3RlZC5naWYnLFxyXG4gICAgICAgIHNwYWNpbmdCZXR3ZWVuSW1hZ2VBbmREZXNjcmlwdGlvbjogJzBweCcsXHJcbiAgICAgICAgY29udGVudEdhcDonMjBweCcsXHJcbiAgICAgICAgdGl0bGVDbGFzczogJ2FjY2Vzcy1yZXN0cmljdGVkLXRpdGxlJyxcclxuICAgICAgICBkZXNjcmlwdGlvbkNsYXNzOiAnYWNjZXNzLXJlc3RyaWN0ZWQtZGVzY3JpcHRpb24nLFxyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGNvbnRlbnRJdGVtID0gY29udGVudFt0eXBlXTtcclxuXHJcbiAgICB0aGlzLnN0YXRlLnVwZGF0ZShzID0+ICh7XHJcbiAgICAgIC4uLnMsXHJcbiAgICAgIHR5cGUsXHJcbiAgICAgIC8vIE9ubHkgYXBwbHkgZGVmYXVsdCB2YWx1ZXMgaWYgY3VzdG9tIHZhbHVlcyBoYXZlbid0IGJlZW4gcHJvdmlkZWRcclxuICAgICAgdGl0bGU6IHMudGl0bGUgfHwgY29udGVudEl0ZW0udGl0bGUsXHJcbiAgICAgIGRlc2NyaXB0aW9uOiBzLmRlc2NyaXB0aW9uIHx8IGNvbnRlbnRJdGVtLmRlc2NyaXB0aW9uLFxyXG4gICAgICBtZXNzYWdlSWNvbjogcy5tZXNzYWdlSWNvbiB8fCBjb250ZW50SXRlbS5tZXNzYWdlSWNvbixcclxuICAgICAgLy8gRm9yIG90aGVyIHByb3BlcnRpZXMsIG9ubHkgYXBwbHkgdGhlbSBpZiB0aGV5IGV4aXN0IGluIHRoZSBjb250ZW50SXRlbVxyXG4gICAgICAuLi4oY29udGVudEl0ZW0uc3BhY2luZ0JldHdlZW5JbWFnZUFuZERlc2NyaXB0aW9uICYmIHsgc3BhY2luZ0JldHdlZW5JbWFnZUFuZERlc2NyaXB0aW9uOiBjb250ZW50SXRlbS5zcGFjaW5nQmV0d2VlbkltYWdlQW5kRGVzY3JpcHRpb24gfSksXHJcbiAgICAgIC4uLihjb250ZW50SXRlbS5jb250ZW50R2FwICYmIHsgY29udGVudEdhcDogY29udGVudEl0ZW0uY29udGVudEdhcCB9KSxcclxuICAgICAgLi4uKGNvbnRlbnRJdGVtLnRpdGxlQ2xhc3MgJiYgeyB0aXRsZUNsYXNzOiBjb250ZW50SXRlbS50aXRsZUNsYXNzIH0pLFxyXG4gICAgICAuLi4oY29udGVudEl0ZW0uZGVzY3JpcHRpb25DbGFzcyAmJiB7IGRlc2NyaXB0aW9uQ2xhc3M6IGNvbnRlbnRJdGVtLmRlc2NyaXB0aW9uQ2xhc3MgfSlcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2FuaXRpemVEZXNjcmlwdGlvbihkZXNjcmlwdGlvbjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBkZXNjcmlwdGlvbi5yZXBsYWNlKFxyXG4gICAgICAvc3VwcG9ydEBzYXJhc2FuYWx5dGljc1xcLmNvbS9nLFxyXG4gICAgICAnPHNwYW4gY2xhc3M9XCJzdXBwb3J0LWVtYWlsXCI+c3VwcG9ydEBzYXJhc2FuYWx5dGljcy5jb208L3NwYW4+J1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG9uQnV0dG9uQ2xpY2soYnV0dG9uOiBhbnksIGV2ZW50PzogRXZlbnQpOiB2b2lkIHtcclxuICAgIC8vIENoZWNrIGlmIHRoaXMgaXMgYSBmb3JtIGJ1dHRvbiAoZnJvbSBhY3RpdmVDdXN0b21Gb3JtQnV0dG9uKSBvciByZWd1bGFyIGJhbm5lciBidXR0b25cclxuICAgIGlmICghZXZlbnQgJiYgKGJ1dHRvbi5hY3Rpb24gPT09ICdzdWJtaXQnIHx8IGJ1dHRvbi5hY3Rpb24gPT09ICdsaW5rJyB8fCBidXR0b24uaWQgPT09ICdhZGQtdXNlcicgfHwgYnV0dG9uLmlkID09PSAnbGVhcm4tbW9yZScpKSB7XHJcbiAgICAgIC8vIEhhbmRsZSBmb3JtIGJ1dHRvbnMgd2l0aCBuZXcgbG9naWNcclxuICAgICAgaWYgKCBidXR0b24uaWQgPT09ICdhZGQtdXNlcicpIHtcclxuICAgICAgICAvLyBIYW5kbGUgZm9ybSBzdWJtaXNzaW9uIChleGlzdGluZyBBZGQgVXNlciBmdW5jdGlvbmFsaXR5KVxyXG4gICAgICAgIHRoaXMub25BZGRVc2VyKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoYnV0dG9uLmFjdGlvbiA9PT0gJ2xpbmsnICYmIGJ1dHRvbi5saW5rKSB7XHJcbiAgICAgICAgLy8gSGFuZGxlIGxpbmsgbmF2aWdhdGlvbiAoTGVhcm4gTW9yZSBmdW5jdGlvbmFsaXR5KVxyXG4gICAgICAgIHdpbmRvdy5vcGVuKGJ1dHRvbi5saW5rLCAnX2JsYW5rJyk7XHJcbiAgICAgIH0gZWxzZSBpZiAoYnV0dG9uLm9uQ2xpY2spIHtcclxuICAgICAgICAvLyBIYW5kbGUgY3VzdG9tIGNsaWNrIGZ1bmN0aW9uXHJcbiAgICAgICAgYnV0dG9uLm9uQ2xpY2soKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChldmVudCkge1xyXG4gICAgICAvLyBIYW5kbGUgcmVndWxhciBiYW5uZXIgYnV0dG9ucyB3aXRoIG9yaWdpbmFsIGxvZ2ljIChiYWNrd2FyZCBjb21wYXRpYmlsaXR5KVxyXG4gICAgICB0aGlzLmJ1dHRvbkNsaWNrLmVtaXQoe1xyXG4gICAgICAgIHR5cGU6IGJ1dHRvbi50eXBlIGFzICdwcmltYXJ5JyB8ICdzZWNvbmRhcnknLFxyXG4gICAgICAgIGJ1dHRvbixcclxuICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzQnV0dG9uQXJyYXkoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLmFjdGl2ZUN1c3RvbUZvcm1CdXR0b24pO1xyXG4gIH1cclxuXHJcbiAgaXNFbXB0eU9iamVjdChvYmo6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKG9iaikge1xyXG4gICAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqKS5sZW5ndGggPT09IDA7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUZvcm1seUZpZWxkcygpOiB2b2lkIHtcclxuICAgIC8vIFNraXAgRm9ybWx5IGZpZWxkIGdlbmVyYXRpb24gaWYgdXNpbmcgcHJlYnVpbHQgZmllbGRzXHJcbiAgICBpZiAodGhpcy51c2VQcmVidWlsdEZpZWxkcygpKSB7XHJcbiAgICAgIHRoaXMuZm9ybWx5RmllbGRzID0gW107XHJcbiAgICAgIHRoaXMuYWxsRm9ybWx5RmllbGRzID0gW107XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuZm9ybUNvbmZpZyB8fCAhdGhpcy5mb3JtQ29uZmlnLmZpZWxkcyB8fCB0aGlzLmZvcm1Db25maWcuZmllbGRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLmZvcm1seUZpZWxkcyA9IFtdO1xyXG4gICAgICB0aGlzLmFsbEZvcm1seUZpZWxkcyA9IFtdO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gR2V0IGxheW91dCBjb25maWd1cmF0aW9uXHJcbiAgICBjb25zdCBsYXlvdXQgPSB0aGlzLmFjdGl2ZUZvcm1MYXlvdXQ7XHJcbiAgICBjb25zdCBmaWVsZHNQZXJSb3cgPSBsYXlvdXQuZmllbGRzUGVyUm93IHx8IDI7XHJcbiAgICBjb25zdCBpbml0aWFsVmlzaWJsZUZpZWxkcyA9IGxheW91dC5pbml0aWFsVmlzaWJsZUZpZWxkcyB8fCBmaWVsZHNQZXJSb3c7XHJcbiAgICBcclxuICAgIC8vIFVwZGF0ZSBDU1MgZ3JpZCBjb2x1bW5zIGR5bmFtaWNhbGx5XHJcbiAgICB0aGlzLnVwZGF0ZUdyaWRDb2x1bW5zKGZpZWxkc1BlclJvdyk7XHJcbiAgICBcclxuICAgIC8vIENyZWF0ZSBhbGwgZmllbGRzIHdpdGggcHJvcGVyIGhpZGUgZXhwcmVzc2lvbnMgZm9yIGNvbmRpdGlvbmFsIGZpZWxkc1xyXG4gICAgdGhpcy5hbGxGb3JtbHlGaWVsZHMgPSB0aGlzLmZvcm1Db25maWcuZmllbGRzLm1hcCgoZmllbGQsIGluZGV4KSA9PiB7XHJcbiAgICAgIC8vIE5vcm1hbGl6ZSBmaWVsZCBzdHJ1Y3R1cmUgdG8gcHJvcGVyIEZvcm1seSBmb3JtYXRcclxuICAgICAgY29uc3QgcGxhY2Vob2xkZXJWYWx1ZSA9IGZpZWxkLnBsYWNlaG9sZGVyIHx8IGZpZWxkLnByb3BzPy5wbGFjZWhvbGRlciB8fCBmaWVsZC5wYXJhbXM/LnBsYWNlaG9sZGVyIHx8IGZpZWxkLnByb3BzPy5wYXJhbXM/LnBsYWNlaG9sZGVyIHx8ICcnO1xyXG4gICAgICBcclxuICAgICAgY29uc3QgaXNDb25kaXRpb25hbEZpZWxkID0gaW5kZXggPj0gaW5pdGlhbFZpc2libGVGaWVsZHM7XHJcbiAgICAgIFxyXG4gICAgICBjb25zdCBmb3JtbHlGaWVsZDogRm9ybWx5RmllbGRDb25maWcgPSB7XHJcbiAgICAgICAga2V5OiBmaWVsZC5rZXksXHJcbiAgICAgICAgdHlwZTogZmllbGQudHlwZSxcclxuICAgICAgICBjbGFzc05hbWU6IHRoaXMuZ2V0RmllbGRDbGFzc05hbWUoaW5kZXggJSBmaWVsZHNQZXJSb3csIGZpZWxkc1BlclJvdyksXHJcbiAgICAgICAgaGlkZUV4cHJlc3Npb246IGlzQ29uZGl0aW9uYWxGaWVsZCA/ICgpID0+ICF0aGlzLnNob3VsZFNob3dBZGRpdGlvbmFsRmllbGRzKCkgOiBmYWxzZSxcclxuICAgICAgICBwcm9wczoge1xyXG4gICAgICAgICAgLy8gSGFuZGxlIG1peGVkIHN0cnVjdHVyZSAtIHNvbWUgZmllbGRzIGhhdmUgcHJvcHMgYXQgcm9vdCwgb3RoZXJzIG5lc3RlZFxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyVmFsdWUsXHJcbiAgICAgICAgICByZXF1aXJlZDogZmllbGQucmVxdWlyZWQgfHwgZmllbGQucHJvcHM/LnJlcXVpcmVkIHx8IGZhbHNlLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZpZWxkLmRpc2FibGVkIHx8IGZpZWxkLnByb3BzPy5kaXNhYmxlZCB8fCBmYWxzZSxcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgLy8gRm9yIHNlbGVjdCBmaWVsZHMsIGluY2x1ZGUgc2VsZWN0LXNwZWNpZmljIHByb3BlcnRpZXNcclxuICAgICAgICAgIC4uLihmaWVsZC5wcm9wcz8ub3B0aW9ucyAmJiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IGZpZWxkLnByb3BzLm9wdGlvbnMsXHJcbiAgICAgICAgICAgIG11bHRpcGxlOiBmaWVsZC5wcm9wcy5tdWx0aXBsZSB8fCBmYWxzZSxcclxuICAgICAgICAgICAgYmluZExhYmVsOiBmaWVsZC5wcm9wcy5wYXJhbXM/LmJpbmRMYWJlbCB8fCAnbGFiZWwnLFxyXG4gICAgICAgICAgICBiaW5kVmFsdWU6IGZpZWxkLnByb3BzLnBhcmFtcz8uYmluZFZhbHVlIHx8ICd2YWx1ZScsXHJcbiAgICAgICAgICAgIGlzQ2xlYXJhYmxlOiBmaWVsZC5wcm9wcy5wYXJhbXM/LmlzQ2xlYXJhYmxlICE9PSBmYWxzZSxcclxuICAgICAgICAgICAgc2hvd0NoZWNrYm94ZXM6IGZpZWxkLnByb3BzLnBhcmFtcz8uc2hvd0NoZWNrYm94ZXMgfHwgZmFsc2VcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAvLyBJbmNsdWRlIHBhcmFtcyBmb3IgY29tcG9uZW50LXNwZWNpZmljIGNvbmZpZ3VyYXRpb25cclxuICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAuLi4oZmllbGQucGFyYW1zIHx8IHt9KSxcclxuICAgICAgICAgICAgLi4uKGZpZWxkLnByb3BzPy5wYXJhbXMgfHwge30pLFxyXG4gICAgICAgICAgICAvLyBFbnN1cmUgbGFiZWwgYW5kIHBsYWNlaG9sZGVyIGFyZSBzZXRcclxuICAgICAgICAgICAgbGFiZWw6IGZpZWxkLmxhYmVsIHx8IGZpZWxkLnByb3BzPy5wYXJhbXM/LmxhYmVsIHx8IHBsYWNlaG9sZGVyVmFsdWUsXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlclZhbHVlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICB2YWxpZGF0b3JzOiB0aGlzLmdldEZvcm1seVZhbGlkYXRvcnMoZmllbGQpLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgLy8gU2V0IGluaXRpYWwgdmFsdWUgaWYgcHJvdmlkZWRcclxuICAgICAgaWYgKGZpZWxkLnZhbHVlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLm1vZGVsW2ZpZWxkLmtleSBhcyBzdHJpbmddID0gZmllbGQudmFsdWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIEFkZCBmb3JtIGNvbnRyb2wgdG8gZm9ybSBncm91cCBpZiBub3QgYWxyZWFkeSBwcmVzZW50XHJcbiAgICAgIGNvbnN0IGtleSA9IGZpZWxkLmtleSBhcyBzdHJpbmc7XHJcbiAgICAgIGlmICghdGhpcy5mb3JtLmdldChrZXkpKSB7XHJcbiAgICAgICAgbGV0IGZvcm1Db250cm9sOiBGb3JtQ29udHJvbDtcclxuICAgICAgICBpZiAoZmllbGQuZm9ybUNvbnRyb2wpIHtcclxuICAgICAgICAgIGZvcm1Db250cm9sID0gZmllbGQuZm9ybUNvbnRyb2w7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSBmaWVsZC5wYXJhbXM/LnZhbGlkYXRvcnMgfHwgW107XHJcbiAgICAgICAgICBmb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChmaWVsZC52YWx1ZSB8fCAnJywgdmFsaWRhdG9ycyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZm9ybS5hZGRDb250cm9sKGtleSwgZm9ybUNvbnRyb2wpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gZm9ybWx5RmllbGQ7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmZvcm1seUZpZWxkcyA9IHRoaXMuYWxsRm9ybWx5RmllbGRzLnNsaWNlKDAsIGluaXRpYWxWaXNpYmxlRmllbGRzKTtcclxuICAgIHRoaXMudXBkYXRlQWRkaXRpb25hbEZpZWxkcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGaWVsZENsYXNzTmFtZShpbmRleDogbnVtYmVyLCBmaWVsZHNQZXJSb3c6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBjb25zdCBjb2xTaXplID0gMTIgLyBmaWVsZHNQZXJSb3c7XHJcbiAgICByZXR1cm4gYGNvbC0ke2NvbFNpemV9YDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlR3JpZENvbHVtbnMoZmllbGRzUGVyUm93OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIC8vIFVzZSBDU1MgY3VzdG9tIHByb3BlcnR5IHRvIGR5bmFtaWNhbGx5IHVwZGF0ZSBncmlkIGNvbHVtbnNcclxuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1mb3JtLWdyaWQtY29sdW1ucycsIGZpZWxkc1BlclJvdy50b1N0cmluZygpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Rm9ybWx5VmFsaWRhdG9ycyhmaWVsZDogYW55KTogYW55IHtcclxuICAgIGNvbnN0IHZhbGlkYXRvcnM6IGFueSA9IHt9O1xyXG4gICAgXHJcbiAgICBpZiAoZmllbGQuZm9ybUNvbnRyb2wgJiYgZmllbGQuZm9ybUNvbnRyb2wudmFsaWRhdG9yKSB7XHJcbiAgICAgIHZhbGlkYXRvcnMudmFsaWRhdGlvbiA9IGZpZWxkLmZvcm1Db250cm9sLnZhbGlkYXRvcjtcclxuICAgIH1cclxuICAgIFxyXG4gICAgaWYgKGZpZWxkLnBhcmFtcz8udmFsaWRhdG9ycyAmJiBBcnJheS5pc0FycmF5KGZpZWxkLnBhcmFtcy52YWxpZGF0b3JzKSkge1xyXG4gICAgICB2YWxpZGF0b3JzLnZhbGlkYXRpb24gPSBmaWVsZC5wYXJhbXMudmFsaWRhdG9ycztcclxuICAgIH1cclxuICAgIFxyXG4gICAgaWYgKGZpZWxkLnZhbGlkYXRvcnMpIHtcclxuICAgICAgaWYgKGZpZWxkLnZhbGlkYXRvcnMudmFsaWRhdGlvbikge1xyXG4gICAgICAgIHZhbGlkYXRvcnMudmFsaWRhdGlvbiA9IGZpZWxkLnZhbGlkYXRvcnMudmFsaWRhdGlvbjtcclxuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGZpZWxkLnZhbGlkYXRvcnMpKSB7XHJcbiAgICAgICAgdmFsaWRhdG9ycy52YWxpZGF0aW9uID0gZmllbGQudmFsaWRhdG9ycztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgXHJcbiAgICByZXR1cm4gdmFsaWRhdG9ycztcclxuICB9XHJcblxyXG5cclxuICBzaG91bGRTaG93QWRkaXRpb25hbEZpZWxkcygpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5hY3RpdmVGb3JtSW5wdXRzIHx8IHRoaXMuYWN0aXZlRm9ybUlucHV0cy5sZW5ndGggPT09IDApIHJldHVybiBmYWxzZTtcclxuICAgIFxyXG4gICAgY29uc3QgbGF5b3V0ID0gdGhpcy5hY3RpdmVGb3JtTGF5b3V0O1xyXG4gICAgY29uc3QgaW5pdGlhbFZpc2libGVGaWVsZHMgPSBsYXlvdXQuaW5pdGlhbFZpc2libGVGaWVsZHMgfHwgbGF5b3V0LmZpZWxkc1BlclJvdyB8fCAyO1xyXG4gICAgXHJcbiAgICAvLyBJZiBubyBjb25kaXRpb25hbCBmaWVsZHMgY29uZmlndXJhdGlvbiwgY2hlY2sgaWYgaW5pdGlhbCBmaWVsZHMgYXJlIGZpbGxlZFxyXG4gICAgaWYgKCFsYXlvdXQuY29uZGl0aW9uYWxGaWVsZHMpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYXJlQWxsVmlzaWJsZUZpZWxkc0ZpbGxlZCgpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvLyBVc2UgY3VzdG9tIHNob3dXaGVuIGZ1bmN0aW9uIGlmIHByb3ZpZGVkXHJcbiAgICBjb25zdCBzaG91bGRTaG93ID0gbGF5b3V0LmNvbmRpdGlvbmFsRmllbGRzLnNob3dXaGVuID8gXHJcbiAgICAgIGxheW91dC5jb25kaXRpb25hbEZpZWxkcy5zaG93V2hlbih0aGlzLm1vZGVsKSA6IHRoaXMuYXJlQWxsVmlzaWJsZUZpZWxkc0ZpbGxlZCgpO1xyXG4gICAgcmV0dXJuIHNob3VsZFNob3c7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUFkZGl0aW9uYWxGaWVsZHMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBsYXlvdXQgPSB0aGlzLmFjdGl2ZUZvcm1MYXlvdXQ7XHJcbiAgICBjb25zdCBmaWVsZHNQZXJSb3cgPSBsYXlvdXQuZmllbGRzUGVyUm93IHx8IDI7XHJcbiAgICBjb25zdCBpbml0aWFsVmlzaWJsZUZpZWxkcyA9IGxheW91dC5pbml0aWFsVmlzaWJsZUZpZWxkcyB8fCBmaWVsZHNQZXJSb3c7XHJcbiAgICBcclxuICAgIC8vIENoZWNrIGlmIHdlIHNob3VsZCBzaG93IGFkZGl0aW9uYWwgZmllbGRzXHJcbiAgICBjb25zdCBzaG91bGRTaG93Q29uZGl0aW9uYWxGaWVsZHMgPSB0aGlzLnNob3VsZFNob3dBZGRpdGlvbmFsRmllbGRzKCk7XHJcbiAgICBcclxuICAgIGlmIChzaG91bGRTaG93Q29uZGl0aW9uYWxGaWVsZHMgJiYgdGhpcy5mb3JtQ29uZmlnLmZpZWxkcy5sZW5ndGggPiBpbml0aWFsVmlzaWJsZUZpZWxkcykge1xyXG4gICAgICAvLyBHZXQgc3BlY2lmaWMgY29uZGl0aW9uYWwgZmllbGQgaW5kaWNlcyBvciBhbGwgcmVtYWluaW5nIGZpZWxkc1xyXG4gICAgICBjb25zdCBjb25kaXRpb25hbEZpZWxkSW5kaWNlcyA9IGxheW91dC5jb25kaXRpb25hbEZpZWxkcz8uZmllbGRzIHx8IFxyXG4gICAgICAgIEFycmF5LmZyb20oe2xlbmd0aDogdGhpcy5mb3JtQ29uZmlnLmZpZWxkcy5sZW5ndGggLSBpbml0aWFsVmlzaWJsZUZpZWxkc30sIChfLCBpKSA9PiBpICsgaW5pdGlhbFZpc2libGVGaWVsZHMpO1xyXG4gICAgICBcclxuICAgICAgY29uc3QgYWRkaXRpb25hbEZpZWxkcyA9IGNvbmRpdGlvbmFsRmllbGRJbmRpY2VzLm1hcChpbmRleCA9PiB0aGlzLmZvcm1Db25maWcuZmllbGRzW2luZGV4XSkuZmlsdGVyKEJvb2xlYW4pO1xyXG4gICAgICBcclxuICAgICAgLy8gTm9ybWFsaXplIGFkZGl0aW9uYWwgZmllbGRzIHRvIHByb3BlciBGb3JtbHkgZm9ybWF0XHJcbiAgICAgIHRoaXMuYWRkaXRpb25hbEZvcm1seUZpZWxkcyA9IGFkZGl0aW9uYWxGaWVsZHMubWFwKChmaWVsZCwgaW5kZXgpID0+IHtcclxuICAgICAgICAvLyBOb3JtYWxpemUgZmllbGQgc3RydWN0dXJlIHRvIHByb3BlciBGb3JtbHkgZm9ybWF0XHJcbiAgICAgICAgY29uc3QgcGxhY2Vob2xkZXJWYWx1ZSA9IGZpZWxkLnBsYWNlaG9sZGVyIHx8IGZpZWxkLnByb3BzPy5wbGFjZWhvbGRlciB8fCBmaWVsZC5wYXJhbXM/LnBsYWNlaG9sZGVyIHx8IGZpZWxkLnByb3BzPy5wYXJhbXM/LnBsYWNlaG9sZGVyIHx8ICcnO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGNvbnNvbGUubG9nKCdQcm9jZXNzaW5nIGNvbmRpdGlvbmFsIGZpZWxkOicsIGZpZWxkLmtleSwgJ3BsYWNlaG9sZGVyOicsIHBsYWNlaG9sZGVyVmFsdWUsICdmaWVsZDonLCBmaWVsZCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgY29uc3QgZm9ybWx5RmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnID0ge1xyXG4gICAgICAgICAga2V5OiBmaWVsZC5rZXksXHJcbiAgICAgICAgICB0eXBlOiBmaWVsZC50eXBlLFxyXG4gICAgICAgICAgY2xhc3NOYW1lOiB0aGlzLmdldEZpZWxkQ2xhc3NOYW1lKGluZGV4LCBmaWVsZHNQZXJSb3cpLFxyXG4gICAgICAgICAgcHJvcHM6IHtcclxuICAgICAgICAgICAgLy8gSGFuZGxlIG1peGVkIHN0cnVjdHVyZSAtIHNvbWUgZmllbGRzIGhhdmUgcHJvcHMgYXQgcm9vdCwgb3RoZXJzIG5lc3RlZFxyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogcGxhY2Vob2xkZXJWYWx1ZSxcclxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZpZWxkLnJlcXVpcmVkIHx8IGZpZWxkLnByb3BzPy5yZXF1aXJlZCB8fCBmYWxzZSxcclxuICAgICAgICAgICAgZGlzYWJsZWQ6IGZpZWxkLmRpc2FibGVkIHx8IGZpZWxkLnByb3BzPy5kaXNhYmxlZCB8fCBmYWxzZSxcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIEZvciBzZWxlY3QgZmllbGRzLCBpbmNsdWRlIHNlbGVjdC1zcGVjaWZpYyBwcm9wZXJ0aWVzXHJcbiAgICAgICAgICAgIC4uLihmaWVsZC5wcm9wcz8ub3B0aW9ucyAmJiB7XHJcbiAgICAgICAgICAgICAgb3B0aW9uczogZmllbGQucHJvcHMub3B0aW9ucyxcclxuICAgICAgICAgICAgICBtdWx0aXBsZTogZmllbGQucHJvcHMubXVsdGlwbGUgfHwgZmFsc2UsXHJcbiAgICAgICAgICAgICAgYmluZExhYmVsOiBmaWVsZC5wcm9wcy5wYXJhbXM/LmJpbmRMYWJlbCB8fCAnbGFiZWwnLFxyXG4gICAgICAgICAgICAgIGJpbmRWYWx1ZTogZmllbGQucHJvcHMucGFyYW1zPy5iaW5kVmFsdWUgfHwgJ3ZhbHVlJyxcclxuICAgICAgICAgICAgICBpc0NsZWFyYWJsZTogZmllbGQucHJvcHMucGFyYW1zPy5pc0NsZWFyYWJsZSAhPT0gZmFsc2UsXHJcbiAgICAgICAgICAgICAgc2hvd0NoZWNrYm94ZXM6IGZpZWxkLnByb3BzLnBhcmFtcz8uc2hvd0NoZWNrYm94ZXMgfHwgZmFsc2VcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvLyBJbmNsdWRlIHBhcmFtcyBmb3IgY29tcG9uZW50LXNwZWNpZmljIGNvbmZpZ3VyYXRpb25cclxuICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgLi4uKGZpZWxkLnBhcmFtcyB8fCB7fSksXHJcbiAgICAgICAgICAgICAgLi4uKGZpZWxkLnByb3BzPy5wYXJhbXMgfHwge30pLFxyXG4gICAgICAgICAgICAgIC8vIEVuc3VyZSBsYWJlbCBhbmQgcGxhY2Vob2xkZXIgYXJlIHNldFxyXG4gICAgICAgICAgICAgIGxhYmVsOiBmaWVsZC5sYWJlbCB8fCBmaWVsZC5wcm9wcz8ucGFyYW1zPy5sYWJlbCB8fCBwbGFjZWhvbGRlclZhbHVlLFxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlclZhbHVlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB2YWxpZGF0b3JzOiBmaWVsZC52YWxpZGF0b3JzIHx8IGZpZWxkLnByb3BzPy52YWxpZGF0b3JzIHx8IHt9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgLy8gU2V0IGluaXRpYWwgdmFsdWUgaWYgcHJvdmlkZWRcclxuICAgICAgICBpZiAoZmllbGQudmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgdGhpcy5tb2RlbFtmaWVsZC5rZXkgYXMgc3RyaW5nXSA9IGZpZWxkLnZhbHVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQWRkIGZvcm0gY29udHJvbCB0byBmb3JtIGdyb3VwIGlmIG5vdCBhbHJlYWR5IHByZXNlbnRcclxuICAgICAgICBjb25zdCBrZXkgPSBmaWVsZC5rZXkgYXMgc3RyaW5nO1xyXG4gICAgICAgIGlmICghdGhpcy5mb3JtLmdldChrZXkpKSB7XHJcbiAgICAgICAgICB0aGlzLmZvcm0uYWRkQ29udHJvbChrZXksIGZpZWxkLmZvcm1Db250cm9sIHx8IG5ldyBGb3JtQ29udHJvbChmaWVsZC52YWx1ZSB8fCAnJykpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGZvcm1seUZpZWxkO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIENsZWFyIGFkZGl0aW9uYWwgZmllbGRzIGlmIGNvbmRpdGlvbnMgYXJlIG5vdCBtZXRcclxuICAgICAgdGhpcy5hZGRpdGlvbmFsRm9ybWx5RmllbGRzID0gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV2YWx1YXRlU2hvd1doZW4oc2hvd1doZW46IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCFzaG93V2hlbikgcmV0dXJuIHRydWU7XHJcbiAgICBcclxuICAgIC8vIEhhbmRsZSBkaWZmZXJlbnQgc2hvd1doZW4gY29uZGl0aW9uc1xyXG4gICAgaWYgKHR5cGVvZiBzaG93V2hlbiA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICByZXR1cm4gc2hvd1doZW4odGhpcy5tb2RlbCwgdGhpcy5mb3JtKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgaWYgKHR5cGVvZiBzaG93V2hlbiA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgLy8gSGFuZGxlIGZpZWxkLWJhc2VkIGNvbmRpdGlvbnMgbGlrZSB7IGZpZWxkOiAncm9sZScsIHZhbHVlOiAnYWRtaW4nIH1cclxuICAgICAgaWYgKHNob3dXaGVuLmZpZWxkICYmIHNob3dXaGVuLnZhbHVlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbFtzaG93V2hlbi5maWVsZF0gPT09IHNob3dXaGVuLnZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8gSGFuZGxlIGZvcm0gbW9kZWwgY2hhbmdlcyBmcm9tIEZvcm1seVxyXG4gIG9uRm9ybU1vZGVsQ2hhbmdlKG1vZGVsOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMubW9kZWwgPSB7IC4uLnRoaXMubW9kZWwsIC4uLm1vZGVsIH07XHJcbiAgICBcclxuICAgIC8vIFRyaWdnZXIgZmllbGQgdmlzaWJpbGl0eSB1cGRhdGVzIGJ5IHVwZGF0aW5nIHRoZSBhbGxGb3JtbHlGaWVsZHMgYXJyYXlcclxuICAgIC8vIFRoaXMgd2lsbCBjYXVzZSBGb3JtbHkgdG8gcmUtZXZhbHVhdGUgaGlkZUV4cHJlc3Npb24gZm9yIGFsbCBmaWVsZHNcclxuICAgIHRoaXMuYWxsRm9ybWx5RmllbGRzID0gWy4uLnRoaXMuYWxsRm9ybWx5RmllbGRzXTtcclxuICAgIFxyXG4gICAgLy8gRW1pdCB0aGUgY2hhbmdlIGV2ZW50XHJcbiAgICB0aGlzLm9uRm9ybUV2ZW50LmVtaXQoeyBcclxuICAgICAgdHlwZTogJ2Zvcm0tbW9kZWwtY2hhbmdlJywgXHJcbiAgICAgIGRhdGE6IG1vZGVsIFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuICAvLyBHZXQgaW5pdGlhbCBmaWVsZHMgdG8gZGlzcGxheSBpbiB0aGUgZmlyc3Qgcm93XHJcbiAgZ2V0SW5pdGlhbEZpZWxkcygpOiBGb3JtRmllbGRDb25maWdbXSB7XHJcbiAgICBpZiAoIXRoaXMuYWN0aXZlRm9ybUlucHV0cykgcmV0dXJuIFtdO1xyXG4gICAgXHJcbiAgICBjb25zdCBpbml0aWFsQ291bnQgPSB0aGlzLmFjdGl2ZUZvcm1MYXlvdXQuaW5pdGlhbFZpc2libGVGaWVsZHMgfHwgdGhpcy5hY3RpdmVGb3JtTGF5b3V0LmZpZWxkc1BlclJvdyB8fCAyO1xyXG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlRm9ybUlucHV0cy5zbGljZSgwLCBpbml0aWFsQ291bnQpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIENoZWNrIGlmIGFsbCB2aXNpYmxlIGZpZWxkcyBhcmUgZmlsbGVkIGFuZCBmb3JtIGlzIHZhbGlkXHJcbiAgYXJlQWxsVmlzaWJsZUZpZWxkc0ZpbGxlZCgpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5hY3RpdmVGb3JtSW5wdXRzIHx8IHRoaXMuYWN0aXZlRm9ybUlucHV0cy5sZW5ndGggPT09IDApIHJldHVybiB0cnVlO1xyXG4gICAgXHJcbiAgICAvLyBHZXQgbGF5b3V0IGNvbmZpZ3VyYXRpb24gdG8gZGV0ZXJtaW5lIHdoaWNoIGZpZWxkcyBzaG91bGQgYmUgdmlzaWJsZVxyXG4gICAgY29uc3QgbGF5b3V0ID0gdGhpcy5hY3RpdmVGb3JtTGF5b3V0O1xyXG4gICAgY29uc3QgaW5pdGlhbFZpc2libGVGaWVsZHMgPSBsYXlvdXQuaW5pdGlhbFZpc2libGVGaWVsZHMgfHwgbGF5b3V0LmZpZWxkc1BlclJvdyB8fCAyO1xyXG4gICAgXHJcbiAgICAvLyBHZXQgYWxsIGN1cnJlbnRseSB2aXNpYmxlIGZpZWxkcyAoaW5pdGlhbCArIGNvbmRpdGlvbmFsIGlmIHNob3duKVxyXG4gICAgY29uc3QgdmlzaWJsZUZpZWxkcyA9IHRoaXMuYWN0aXZlRm9ybUlucHV0cy5zbGljZSgwLCBpbml0aWFsVmlzaWJsZUZpZWxkcyk7XHJcbiAgICBpZiAodGhpcy5zaG91bGRTaG93QWRkaXRpb25hbEZpZWxkcygpKSB7XHJcbiAgICAgIGNvbnN0IGNvbmRpdGlvbmFsRmllbGRJbmRpY2VzID0gbGF5b3V0LmNvbmRpdGlvbmFsRmllbGRzPy5maWVsZHMgfHwgXHJcbiAgICAgICAgQXJyYXkuZnJvbSh7bGVuZ3RoOiB0aGlzLmFjdGl2ZUZvcm1JbnB1dHMubGVuZ3RoIC0gaW5pdGlhbFZpc2libGVGaWVsZHN9LCAoXywgaSkgPT4gaSArIGluaXRpYWxWaXNpYmxlRmllbGRzKTtcclxuICAgICAgY29uc3QgY29uZGl0aW9uYWxGaWVsZHMgPSBjb25kaXRpb25hbEZpZWxkSW5kaWNlcy5tYXAoaW5kZXggPT4gdGhpcy5hY3RpdmVGb3JtSW5wdXRzW2luZGV4XSkuZmlsdGVyKEJvb2xlYW4pO1xyXG4gICAgICB2aXNpYmxlRmllbGRzLnB1c2goLi4uY29uZGl0aW9uYWxGaWVsZHMpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvLyBDaGVjayBpZiBhbGwgdmlzaWJsZSBmaWVsZHMgaGF2ZSB2YWx1ZXMgdXNpbmcgdGhlaXIga2V5c1xyXG4gICAgY29uc3QgYWxsRmllbGRzRmlsbGVkID0gdmlzaWJsZUZpZWxkcy5ldmVyeShmaWVsZCA9PiB7XHJcbiAgICAgIGNvbnN0IGZpZWxkS2V5ID0gZmllbGQua2V5O1xyXG4gICAgICBjb25zdCBmaWVsZFZhbHVlID0gdGhpcy5tb2RlbFtmaWVsZEtleV07XHJcbiAgICAgIFxyXG4gICAgICBpZiAoIWZpZWxkVmFsdWUpIHJldHVybiBmYWxzZTtcclxuICAgICAgXHJcbiAgICAgIC8vIEZvciBzdHJpbmcgdmFsdWVzLCBjaGVjayBpZiBub3QgZW1wdHkgYWZ0ZXIgdHJpbVxyXG4gICAgICBpZiAodHlwZW9mIGZpZWxkVmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgcmV0dXJuIGZpZWxkVmFsdWUudHJpbSgpICE9PSAnJztcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgLy8gRm9yIGFycmF5cyAobXVsdGktc2VsZWN0KSwgY2hlY2sgaWYgbm90IGVtcHR5XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGZpZWxkVmFsdWUpKSB7XHJcbiAgICAgICAgcmV0dXJuIGZpZWxkVmFsdWUubGVuZ3RoID4gMDtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9KTtcclxuICAgIFxyXG4gICAgY29uc3QgZm9ybVZhbGlkID0gdGhpcy5mb3JtLnZhbGlkO1xyXG5cclxuICAgIHJldHVybiBhbGxGaWVsZHNGaWxsZWQgJiYgZm9ybVZhbGlkO1xyXG4gIH1cclxuICBcclxufVxyXG4iLCJAaWYgKGJhbm5lckNvbnRlbnQoKTsgYXMgY29udGVudCkge1xyXG4gIDxkaXYgY2xhc3M9XCJlcnJvci1wYWdlIG1lc3NhZ2UtYmFubmVyLXYyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1jb250YWluZXJcIiBbbmdTdHlsZV09XCJ7IGdhcDogY29udGVudEdhcCB8fCAndmFyKC0tbWVkaXVtLTMycHgsIDMycHgpJyB9XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZS1jb250YWluZXJcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cInsgJ21hcmdpbi1ib3R0b20nOiBzcGFjaW5nQmV0d2VlbkltYWdlQW5kRGVzY3JpcHRpb24gPz8gJ3ZhcigtLXNtYWxsLTE2cHgsIDE2cHgpJyB9XCI+XHJcbiAgICAgICAgPGltZyBbc3JjXT1cImNvbnRlbnQubWVzc2FnZUljb25cIiBbYWx0XT1cImNvbnRlbnQudHlwZSArICcgaW1hZ2UnXCJcclxuICAgICAgICAgIFtzdHlsZS4tLW1lc3NhZ2UtaWNvbi1oZWlnaHRdPVwiY29udGVudC5tZXNzYWdlSWNvblNpemU/LmhlaWdodFwiXHJcbiAgICAgICAgICBbc3R5bGUuLS1tZXNzYWdlLWljb24td2lkdGhdPVwiY29udGVudC5tZXNzYWdlSWNvblNpemU/LndpZHRoXCIgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWxzXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlLWRlc2NyaXB0aW9uXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtY2xhc3NcIiBbbmdDbGFzc109XCJ0aXRsZUNsYXNzIHx8ICd0aXRsZS1jbGFzcydcIiBbaW5uZXJIVE1MXT1cImNvbnRlbnQudGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgIDxwIGNsYXNzPVwiZGVzY3JpcHRpb25cIiBbbmdDbGFzc109XCJkZXNjcmlwdGlvbkNsYXNzIHx8ICdkZXNjcmlwdGlvbidcIiBbaW5uZXJIVE1MXT1cImNvbnRlbnQuZGVzY3JpcHRpb25cIj48L3A+IFxyXG4gICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7IG1hcmdpbjogYmFubmVyPy5zcGFjaW5nICsgJ3B4IDBweCcgfVwiPlxyXG4gICAgICAgICAgICA8c2EtbWVzc2FnZS1iYW5uZXIgKm5nSWY9XCIhaXNFbXB0eU9iamVjdChiYW5uZXIpXCIgW3R5cGVdPVwiYmFubmVyPy50eXBlXCIgW2Jhbm5lckljb25dPVwiYmFubmVyPy5iYW5uZXJJY29uXCIgW2J1dHRvbkljb25dPVwiYmFubmVyPy5idXR0b25JY29uXCJcclxuICAgICAgICAgICAgICBbYmFubmVySWNvblNpemVdPVwiYmFubmVyPy5iYW5uZXJJY29uU2l6ZVwiIFtidXR0b25UeXBlXT1cImJhbm5lcj8uYnV0dG9uVHlwZVwiIFtidXR0b25TaXplXT1cImJhbm5lcj8uYnV0dG9uU2l6ZVwiIFtidXR0b25JY29uUG9zaXRpb25dPVwiYmFubmVyPy5idXR0b25JY29uUG9zaXRpb25cIlxyXG4gICAgICAgICAgICAgIFtidXR0b25JY29uU2l6ZV09XCJiYW5uZXI/LmJ1dHRvbkljb25TaXplXCIgW2FjdGlvblRleHRdPVwiYmFubmVyPy5hY3Rpb25UZXh0XCIgPlxyXG4gICAgICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJiYW5uZXI/LnRleHRcIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9zYS1tZXNzYWdlLWJhbm5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgIDwhLS0gRm9ybSBpbnB1dHMgc2VjdGlvbiAtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicHJlYnVpbHRGb3JtRmllbGRzIHx8IGFjdGl2ZUZvcm1JbnB1dHM/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGRzLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgIDwhLS0gUHJlYnVpbHQgZm9ybSBmaWVsZHMgKGRpcmVjdCBjb21wb25lbnQgcmVuZGVyaW5nKSAtLT5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidXNlUHJlYnVpbHRGaWVsZHMoKSAmJiBwcmVidWlsdEZvcm1GaWVsZHNcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcmVidWlsdEZvcm1GaWVsZHNcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICA8IS0tIFVzZSBGb3JtbHkgZm9yIHByb3BlciBmb3JtIHJlbmRlcmluZyAtLT5cclxuICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cImRpYWxvZy1mb3JtXCIgKm5nSWY9XCIhdXNlUHJlYnVpbHRGaWVsZHMoKSAmJiBhY3RpdmVGb3JtSW5wdXRzPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgIDxmb3JtbHktZm9ybSBcclxuICAgICAgICAgICAgICAgICAgW2Zvcm1dPVwiZm9ybVwiIFxyXG4gICAgICAgICAgICAgICAgICBbZmllbGRzXT1cImFsbEZvcm1seUZpZWxkc1wiIFxyXG4gICAgICAgICAgICAgICAgICBbbW9kZWxdPVwibW9kZWxcIlxyXG4gICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwib25Gb3JtTW9kZWxDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgPC9mb3JtbHktZm9ybT5cclxuICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIEN1c3RvbSBmb3JtIGJ1dHRvbihzKSAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWJ1dHRvbi1jb250YWluZXJcIiAqbmdJZj1cImFjdGl2ZUN1c3RvbUZvcm1CdXR0b24gJiYgIXVzZVByZWJ1aWx0RmllbGRzKClcIj5cclxuICAgICAgICAgICAgPCEtLSBTdXBwb3J0IGJvdGggc2luZ2xlIGJ1dHRvbiBhbmQgYXJyYXkgb2YgYnV0dG9ucyAtLT5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzQnV0dG9uQXJyYXkoKTsgZWxzZSBzaW5nbGVCdXR0b25cIj5cclxuICAgICAgICAgICAgICA8c2EtYnV0dG9uIFxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBhY3RpdmVDdXN0b21Gb3JtQnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uLWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICBbaWRdPVwiYnV0dG9uLmlkXCJcclxuICAgICAgICAgICAgICAgIFt0ZXh0XT1cImJ1dHRvbi50ZXh0XCJcclxuICAgICAgICAgICAgICAgIFt0eXBlXT1cImJ1dHRvbi50eXBlXCJcclxuICAgICAgICAgICAgICAgIFtzaXplXT1cImJ1dHRvbi5zaXplXCJcclxuICAgICAgICAgICAgICAgIFtzdGF0ZV09XCJidXR0b24uc3RhdGVcIlxyXG4gICAgICAgICAgICAgICAgW0ltYWdlUGF0aF09XCJidXR0b24uSW1hZ2VQYXRoXCJcclxuICAgICAgICAgICAgICAgIFtpY29uUG9zaXRpb25dPVwiYnV0dG9uLmljb25Qb3NpdGlvblwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25CdXR0b25DbGljayhidXR0b24pXCI+XHJcbiAgICAgICAgICAgICAgPC9zYS1idXR0b24+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzaW5nbGVCdXR0b24+XHJcbiAgICAgICAgICAgICAgPHNhLWJ1dHRvbiBjbGFzcz1cImFjdGlvbi1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgW2lkXT1cImFjdGl2ZUN1c3RvbUZvcm1CdXR0b24uaWRcIlxyXG4gICAgICAgICAgICAgICAgW3RleHRdPVwiYWN0aXZlQ3VzdG9tRm9ybUJ1dHRvbi50ZXh0XCJcclxuICAgICAgICAgICAgICAgIFt0eXBlXT1cImFjdGl2ZUN1c3RvbUZvcm1CdXR0b24udHlwZVwiXHJcbiAgICAgICAgICAgICAgICBbc2l6ZV09XCJhY3RpdmVDdXN0b21Gb3JtQnV0dG9uLnNpemVcIlxyXG4gICAgICAgICAgICAgICAgW3N0YXRlXT1cImFjdGl2ZUN1c3RvbUZvcm1CdXR0b24uc3RhdGVcIlxyXG4gICAgICAgICAgICAgICAgW0ltYWdlUGF0aF09XCJhY3RpdmVDdXN0b21Gb3JtQnV0dG9uLkltYWdlUGF0aFwiXHJcbiAgICAgICAgICAgICAgICBbaWNvblBvc2l0aW9uXT1cImFjdGl2ZUN1c3RvbUZvcm1CdXR0b24uaWNvblBvc2l0aW9uXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkJ1dHRvbkNsaWNrKGFjdGl2ZUN1c3RvbUZvcm1CdXR0b24pXCI+XHJcbiAgICAgICAgICAgICAgPC9zYS1idXR0b24+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgIDwhLS0gRGl2aWRlciBzZWN0aW9uIC0tPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRpdmlkZXItc2VjdGlvblwiICpuZ0lmPVwiYWN0aXZlRGl2aWRlciAmJiAhdXNlUHJlYnVpbHRGaWVsZHMoKVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlci1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJkaXZpZGVyLXRpdGxlXCIgKm5nSWY9XCJhY3RpdmVEaXZpZGVyQ29uZmlnLnRpdGxlXCI+e3sgYWN0aXZlRGl2aWRlckNvbmZpZy50aXRsZSB9fTwvaDM+XHJcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJkaXZpZGVyLXN1YnRpdGxlXCIgKm5nSWY9XCJhY3RpdmVEaXZpZGVyQ29uZmlnLnN1YnRpdGxlIHx8IGFjdGl2ZURpdmlkZXJDb25maWcuc2hvd1N1YnRpdGxlV2hlbkVtcHR5XCI+XHJcbiAgICAgICAgICAgICAgICB7eyBhY3RpdmVEaXZpZGVyQ29uZmlnLnN1YnRpdGxlIHx8ICdObyBpdGVtcyBhZGRlZCB5ZXQnIH19XHJcbiAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgICAgICA8IS0tIENoaXBzIHNlY3Rpb24gLS0+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1saXN0XCIgKm5nSWY9XCJhY3RpdmVDaGlwcz8ubGVuZ3RoICYmICF1c2VQcmVidWlsdEZpZWxkcygpXCI+XHJcbiAgICAgICAgICAgIDxzYS1jaGlwIFxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNoaXAgb2YgYWN0aXZlQ2hpcHNcIlxyXG4gICAgICAgICAgICAgICAgW3RleHRdPVwiY2hpcC5sYWJlbCB8fCBjaGlwLnRleHQgfHwgY2hpcFwiXHJcbiAgICAgICAgICAgICAgICBbdHlwZV09XCIncmVndWxhcidcIlxyXG4gICAgICAgICAgICAgICAgW3N0YXRlXT1cIidkZWZhdWx0J1wiXHJcbiAgICAgICAgICAgICAgICBbZmlsbGluZ109XCInZmlsbGVkJ1wiXHJcbiAgICAgICAgICAgICAgICBbaWNvblBvc2l0aW9uXT1cIidyaWdodCdcIlxyXG4gICAgICAgICAgICAgICAgW2ljb25QYXRoXT1cIicuLi9hc3NldHMvY2xvc2VCbHVlT3V0bGluZWQuc3ZnJ1wiXHJcbiAgICAgICAgICAgICAgICAob25DbGlja0V2ZW50KT1cImNoaXAucmVtb3ZhYmxlID8gb25DaGlwUmVtb3ZlKGNoaXApIDogbnVsbFwiPlxyXG4gICAgICAgICAgICAgIDwvc2EtY2hpcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICBcclxuICAgICAgICBAaWYoYnV0dG9ucyl7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1ncm91cFwiPlxyXG4gICAgICAgICAgQGZvciAoYnV0dG9uIG9mIGJ1dHRvbnM7IHRyYWNrIGJ1dHRvbi50ZXh0KSB7XHJcbiAgICAgICAgICAgIDxzYS1idXR0b24gXHJcbiAgICAgICAgICAgICAgW3RleHRdPVwiYnV0dG9uLnRleHRcIlxyXG4gICAgICAgICAgICAgIFtpY29uXT1cImJ1dHRvbi5pY29uXCJcclxuICAgICAgICAgICAgICBbc2l6ZV09XCJidXR0b24uc2l6ZVwiXHJcbiAgICAgICAgICAgICAgW3R5cGVdPVwiYnV0dG9uLnR5cGVcIlxyXG4gICAgICAgICAgICAgIFtpY29uUG9zaXRpb25dPVwiYnV0dG9uLmljb25Qb3NpdGlvblwiXHJcbiAgICAgICAgICAgICAgW2J1dHRvbkljb25TaXplXT1cImJ1dHRvbi5idXR0b25JY29uU2l6ZVwiXHJcbiAgICAgICAgICAgICAgKG9uQ2xpY2tFdmVudCk9XCJvbkJ1dHRvbkNsaWNrKGJ1dHRvbiwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgW3N0YXRlXT1cIiFhcmVBbGxWaXNpYmxlRmllbGRzRmlsbGVkKCkgPyAnZGlzYWJsZWQnIDogJydcIlxyXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYnV0dG9uLnRleHRcIj5cclxuICAgICAgICAgICAgPC9zYS1idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIH0iXX0=
510
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1iYW5uZXItdjIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50LWxpYnJhcnkvc3JjL2xpYi9tZXNzYWdlLWJhbm5lci12Mi9tZXNzYWdlLWJhbm5lci12Mi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL21lc3NhZ2UtYmFubmVyLXYyL21lc3NhZ2UtYmFubmVyLXYyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQVUsWUFBWSxFQUFFLE1BQU0sRUFBNEIsTUFBTSxlQUFlLENBQUM7QUFDM0gsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxZQUFZLEVBQXFCLE1BQU0sa0JBQWtCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFN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QUFZLEVBQUUsY0FBYyxDQUFDLGFBQzlMLENBQUMsV0FBVyxDQUFDOzhCQXlCZixXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csaUNBQWlDO3NCQUF6QyxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQWtDSSxXQUFXO3NCQUFwQixNQUFNO2dCQW9DTSxXQUFXO3NCQUF2QixLQUFLO2dCQUlPLGVBQWU7c0JBQTNCLEtBQUs7Z0JBSU8sS0FBSztzQkFBakIsS0FBSztnQkFJTyxXQUFXO3NCQUF2QixLQUFLO2dCQUlHLE9BQU87c0JBQWYsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgY29tcHV0ZWQsIHNpZ25hbCwgZWZmZWN0LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgT25DaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEljb25TZXJ2aWNlIH0gZnJvbSAnLi4vaWNvbi9pY29uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEljb25OYW1lIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9pY29uLWludGVyZmFjZSc7XHJcbmltcG9ydCB7IEJ1dHRvbkljb25Qb3NpdGlvbiwgQnV0dG9uU2l6ZSwgQnV0dG9uVHlwZSwgQnV0dG9uSW50ZXJmYWNlLCBCdXR0b25DbGlja0V2ZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9idXR0b24taW50ZXJmYWNlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2ljb24vaWNvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNZXNzYWdlQmFubmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vbWVzc2FnZS1iYW5uZXIvbWVzc2FnZS1iYW5uZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS1pbnB1dC9mb3JtLWlucHV0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1TZWxlY3RDb21wb25lbnQgfSBmcm9tICcuLi9mb3JtLXNlbGVjdC9mb3JtLXNlbGVjdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRm9ybWx5TW9kdWxlLCBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xyXG5pbXBvcnQgeyBDaGlwc0NvbXBvbmVudCB9IGZyb20gJy4uL2NoaXBzL2NoaXBzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1MYXlvdXRDb25maWcsIEZvcm1GaWVsZENvbmZpZywgVW5pZmllZEZvcm1Db25maWcgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2Zvcm0tbGF5b3V0LmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbnRlcmZhY2UgTWVzc2FnZUJhbm5lclN0YXRlIHtcclxuICB0eXBlOiAnZGVmYXVsdCcgfCAnY29ubmVjdGlvbicgfCAnYWNjZXNzJyB8ICdhY2Nlc3NSZXN0cmljdGVkJztcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XHJcbiAgbWVzc2FnZUljb246IHN0cmluZztcclxuICBtZXNzYWdlSWNvblNpemU/OiB7XHJcbiAgICB3aWR0aD86IHN0cmluZztcclxuICAgIGhlaWdodD86IHN0cmluZztcclxuICB9O1xyXG4gIHNwYWNpbmdCZXR3ZWVuSW1hZ2VBbmREZXNjcmlwdGlvbj86IHN0cmluZztcclxuICBjb250ZW50R2FwPzogc3RyaW5nOyBcclxuICBjb250YWN0VXJsPzogc3RyaW5nO1xyXG4gIHRpdGxlQ2xhc3M/OiBzdHJpbmc7XHJcbiAgZGVzY3JpcHRpb25DbGFzcz86IHN0cmluZztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzYS1tZXNzYWdlLWJhbm5lci12MicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJY29uQ29tcG9uZW50LCBCdXR0b25Db21wb25lbnQsIEh0dHBDbGllbnRNb2R1bGUsTWVzc2FnZUJhbm5lckNvbXBvbmVudCwgRm9ybUlucHV0Q29tcG9uZW50LCBGb3JtU2VsZWN0Q29tcG9uZW50LCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgRm9ybWx5TW9kdWxlLCBDaGlwc0NvbXBvbmVudF0sXHJcbiAgcHJvdmlkZXJzOiBbSWNvblNlcnZpY2VdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tZXNzYWdlLWJhbm5lci12Mi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbWVzc2FnZS1iYW5uZXItdjIuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNZXNzYWdlQmFubmVyVjJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG4gIC8vIFN0YXRlIG1hbmFnZW1lbnQgdXNpbmcgc2lnbmFsc1xyXG4gIHByaXZhdGUgc3RhdGUgPSBzaWduYWw8TWVzc2FnZUJhbm5lclN0YXRlPih7XHJcbiAgICB0eXBlOiAnZGVmYXVsdCcsXHJcbiAgICB0aXRsZTogJycsXHJcbiAgICBkZXNjcmlwdGlvbjogJycsXHJcbiAgICBtZXNzYWdlSWNvbjogJycsXHJcbiAgICBtZXNzYWdlSWNvblNpemU6IHtcclxuICAgICAgaGVpZ2h0OiAnMTIuNXJlbSdcclxuICAgIH1cclxuICB9KTtcclxuXHJcbiAgLy8gQ29tcHV0ZWQgcHJvcGVydGllc1xyXG4gIHByb3RlY3RlZCBiYW5uZXJDb250ZW50ID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgY29uc3QgY3VycmVudFN0YXRlID0gdGhpcy5zdGF0ZSgpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLi4uY3VycmVudFN0YXRlLFxyXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5zYW5pdGl6ZURlc2NyaXB0aW9uKGN1cnJlbnRTdGF0ZS5kZXNjcmlwdGlvbilcclxuICAgIH07XHJcbiAgfSk7XHJcblxyXG4gIEBJbnB1dCgpIG1lc3NhZ2VUeXBlOiAnZGVmYXVsdCcgfCAnY29ubmVjdGlvbicgfCAnYWNjZXNzJyB8ICdhY2Nlc3NSZXN0cmljdGVkJztcclxuICBASW5wdXQoKSBjb250YWN0VXJsPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNwYWNpbmdCZXR3ZWVuSW1hZ2VBbmREZXNjcmlwdGlvbj86IHN0cmluZztcclxuICBASW5wdXQoKSBjb250ZW50R2FwPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHRpdGxlQ2xhc3M/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZGVzY3JpcHRpb25DbGFzcz86IHN0cmluZztcclxuICBASW5wdXQoKSBiYW5uZXI6YW55ID0ge307XHJcbiAgQElucHV0KCkgZm9ybUNvbmZpZzogVW5pZmllZEZvcm1Db25maWcgfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSBwcmVidWlsdEZvcm1GaWVsZHM6IFRlbXBsYXRlUmVmPGFueT4gXHJcbiAgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIG1vZGVsOiBhbnkgPSB7fTtcclxuICBmaWVsZHM6IEZvcm1seUZpZWxkQ29uZmlnW10gPSBbXTtcclxuICBmb3JtbHlGaWVsZHM6IEZvcm1seUZpZWxkQ29uZmlnW10gPSBbXTtcclxuICBhbGxGaWVsZHNGaWxsZWQgPSBzaWduYWwoZmFsc2UpO1xyXG4gIGFkZGl0aW9uYWxGb3JtbHlGaWVsZHM6IEZvcm1seUZpZWxkQ29uZmlnW10gPSBbXTtcclxuICBhbGxGb3JtbHlGaWVsZHM6IEZvcm1seUZpZWxkQ29uZmlnW10gPSBbXTtcclxuICB1c2VQcmVidWlsdEZpZWxkcyA9IHNpZ25hbChmYWxzZSk7XHJcbiAgLy8gQ29tcHV0ZWQgcHJvcGVydGllcyBmb3IgdW5pZmllZCBhY2Nlc3NcclxuICBnZXQgYWN0aXZlRm9ybUlucHV0cygpOiBhbnlbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtQ29uZmlnPy5maWVsZHMgfHwgW107XHJcbiAgfVxyXG5cclxuICBnZXQgYWN0aXZlQ2hpcHMoKTogYW55W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybUNvbmZpZz8uY2hpcHMgfHwgW107XHJcbiAgfVxyXG5cclxuICBnZXQgYWN0aXZlQ3VzdG9tRm9ybUJ1dHRvbigpOiBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybUNvbmZpZz8uY3VzdG9tQnV0dG9uIHx8IFtdO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFjdGl2ZURpdmlkZXIoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtQ29uZmlnPy5kaXZpZGVyPy5lbmFibGVkID8/IGZhbHNlO1xyXG4gIH0gXHJcblxyXG4gIGdldCBhY3RpdmVEaXZpZGVyQ29uZmlnKCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtQ29uZmlnPy5kaXZpZGVyIHx8IHt9O1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFjdGl2ZUZvcm1MYXlvdXQoKTogRm9ybUxheW91dENvbmZpZyB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtQ29uZmlnPy5sYXlvdXQgfHwge307XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgb25Gb3JtRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHt0eXBlOiBzdHJpbmcsIGRhdGE6IGFueX0+KCk7XHJcbiAgXHJcbiAgb25DaGlwUmVtb3ZlKGNoaXA6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkZvcm1FdmVudC5lbWl0KHsgdHlwZTogJ2NoaXAtcmVtb3ZlJywgZGF0YTogY2hpcCB9KTtcclxuICB9XHJcbiAgXHJcbiAgb25BZGRVc2VyKCk6IHZvaWQge1xyXG4gICAgbGV0IGNsaWNrZWRCdXR0b24gPSB0aGlzLmFjdGl2ZUN1c3RvbUZvcm1CdXR0b247XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmFjdGl2ZUN1c3RvbUZvcm1CdXR0b24pKSB7XHJcbiAgICAgIGNsaWNrZWRCdXR0b24gPSB0aGlzLmFjdGl2ZUN1c3RvbUZvcm1CdXR0b24uZmluZChidG4gPT4gXHJcbiAgICAgICAgYnRuLnRleHQgPT09ICdBZGQgVXNlcicgfHwgYnRuLmlkID09PSAnYWRkLXVzZXInIHx8IGJ0bi5hY3Rpb24gPT09ICdhZGQtdXNlcidcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHRoaXMub25Gb3JtRXZlbnQuZW1pdCh7IHR5cGU6ICdjdXN0b20tYnV0dG9uLWNsaWNrJywgZGF0YTogY2xpY2tlZEJ1dHRvbiB9KTtcclxuICAgIC8vIE9ubHkgcmVzZXQgZm9ybSBpZiBleHBsaWNpdGx5IGNvbmZpZ3VyZWQgdG8gZG8gc29cclxuICAgIGlmIChjbGlja2VkQnV0dG9uPy5yZXNldEZvcm0gIT09IGZhbHNlKSB7XHJcbiAgICAgIHRoaXMucmVzZXRGb3JtKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG4gIC8vIFNlcGFyYXRlIG1ldGhvZCBmb3IgZm9ybSByZXNldCB0aGF0IGNhbiBiZSBjYWxsZWQgZXh0ZXJuYWxseVxyXG4gIHJlc2V0Rm9ybSgpOiB2b2lkIHtcclxuICAgIHRoaXMubW9kZWwgPSB7fTtcclxuICAgIHRoaXMuZm9ybS5yZXNldCgpO1xyXG4gICAgdGhpcy5hY3RpdmVGb3JtSW5wdXRzPy5mb3JFYWNoKGlucHV0ID0+IHtcclxuICAgICAgaW5wdXQudmFsdWUgPSAnJztcclxuICAgIH0pO1xyXG4gICAgdGhpcy51cGRhdGVGb3JtbHlGaWVsZHMoKTtcclxuICB9XHJcbiAgXHJcbiAgYXJlQWxsRmllbGRzRmlsbGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLmFjdGl2ZUZvcm1JbnB1dHMgfHwgdGhpcy5hY3RpdmVGb3JtSW5wdXRzLmxlbmd0aCA8IDQpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiB0aGlzLmFjdGl2ZUZvcm1JbnB1dHMuZXZlcnkoZmllbGQgPT4gZmllbGQudmFsdWUgJiYgZmllbGQudmFsdWUudHJpbSgpICE9PSAnJyk7XHJcbiAgfVxyXG4gIFxyXG5cclxuICBASW5wdXQoKSBzZXQgbWVzc2FnZUljb24odmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5zdGF0ZS51cGRhdGUocyA9PiAoeyAuLi5zLCBtZXNzYWdlSWNvbjogdmFsdWUgfSkpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IG1lc3NhZ2VJY29uU2l6ZSh2YWx1ZTogeyB3aWR0aD86IHN0cmluZzsgaGVpZ2h0Pzogc3RyaW5nIH0pIHtcclxuICAgIHRoaXMuc3RhdGUudXBkYXRlKHMgPT4gKHsgLi4ucywgbWVzc2FnZUljb25TaXplOiB2YWx1ZSB9KSk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgdGl0bGUodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5zdGF0ZS51cGRhdGUocyA9PiAoeyAuLi5zLCB0aXRsZTogdmFsdWUgfSkpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IGRlc2NyaXB0aW9uKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc3RhdGUudXBkYXRlKHMgPT4gKHsgLi4ucywgZGVzY3JpcHRpb246IHZhbHVlIH0pKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIGJ1dHRvbnM6IEJ1dHRvbkludGVyZmFjZVtdID0gW107XHJcbiAgQE91dHB1dCgpIGJ1dHRvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxCdXR0b25DbGlja0V2ZW50PigpO1xyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAvLyBDaGVjayBpZiB0aGlzIGlzIHRoZSBmaXJzdCBpbml0aWFsaXphdGlvbiBvciBpZiBtZXNzYWdlVHlwZSBoYXMgY2hhbmdlZFxyXG4gICAgY29uc3Qgc2hvdWxkVXBkYXRlQmFzZWRPblR5cGUgPSBjaGFuZ2VzWydtZXNzYWdlVHlwZSddICYmIFxyXG4gICAgICAvLyBPbmx5IHVwZGF0ZSBiYXNlZCBvbiB0eXBlIGlmIHdlIGRvbid0IGhhdmUgY3VzdG9tIHZhbHVlcyBzZXRcclxuICAgICAgISh0aGlzLnN0YXRlKCkudGl0bGUgfHwgdGhpcy5zdGF0ZSgpLmRlc2NyaXB0aW9uIHx8IHRoaXMuc3RhdGUoKS5tZXNzYWdlSWNvbik7XHJcbiAgICBcclxuICAgIGlmIChzaG91bGRVcGRhdGVCYXNlZE9uVHlwZSkge1xyXG4gICAgICB0aGlzLnVwZGF0ZUNvbnRlbnRCYXNlZE9uVHlwZSh0aGlzLm1lc3NhZ2VUeXBlIHx8ICdkZWZhdWx0Jyk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8vIENoZWNrIGlmIHByZWJ1aWx0IGZpZWxkcyBhcmUgcHJvdmlkZWRcclxuICAgIGlmIChjaGFuZ2VzWydwcmVidWlsdEZvcm1GaWVsZHMnXSkge1xyXG4gICAgICB0aGlzLnVzZVByZWJ1aWx0RmllbGRzLnNldCghIXRoaXMucHJlYnVpbHRGb3JtRmllbGRzKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgaWYgKGNoYW5nZXNbJ2Zvcm1Db25maWcnXSkge1xyXG4gICAgICBpZiAoIXRoaXMudXNlUHJlYnVpbHRGaWVsZHMoKSkge1xyXG4gICAgICAgIHRoaXMudXBkYXRlRm9ybWx5RmllbGRzKCk7XHJcbiAgICAgICAgdGhpcy5pbml0aWFsaXplQ2xlYW5Gb3JtU3RhdGUoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBwcml2YXRlIGluaXRpYWxpemVDbGVhbkZvcm1TdGF0ZSgpOiB2b2lkIHtcclxuICAgLy8gdGhpcy5tb2RlbCA9IHt9O1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybS5jb250cm9scykuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KGtleSk7XHJcbiAgICAgICAgaWYgKGNvbnRyb2wpIHtcclxuICAgICAgICAgIGNvbnRyb2wubWFya0FzVW50b3VjaGVkKCk7XHJcbiAgICAgICAgICBjb250cm9sLm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgICAgICAgICBjb250cm9sLnNldEVycm9ycyhudWxsKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUNvbnRlbnRCYXNlZE9uVHlwZSh0eXBlOiAnZGVmYXVsdCcgfCAnY29ubmVjdGlvbicgfCAnYWNjZXNzJyB8ICdhY2Nlc3NSZXN0cmljdGVkJykgeyAgXHJcbiAgICAvLyBEZWZpbmUgYSB0eXBlIGZvciB0aGUgY29udGVudCBpdGVtcyB0byBlbnN1cmUgYWxsIHByb3BlcnRpZXMgYXJlIHByb3Blcmx5IHR5cGVkXHJcbiAgICB0eXBlIENvbnRlbnRJdGVtID0ge1xyXG4gICAgICB0aXRsZTogc3RyaW5nO1xyXG4gICAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xyXG4gICAgICBtZXNzYWdlSWNvbjogc3RyaW5nO1xyXG4gICAgICBzcGFjaW5nQmV0d2VlbkltYWdlQW5kRGVzY3JpcHRpb24/OiBzdHJpbmc7XHJcbiAgICAgIGNvbnRlbnRHYXA/OiBzdHJpbmc7XHJcbiAgICAgIHRpdGxlQ2xhc3M/OiBzdHJpbmc7XHJcbiAgICAgIGRlc2NyaXB0aW9uQ2xhc3M/OiBzdHJpbmc7XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIE9ubHkgYXBwbHkgZGVmYXVsdCBjb250ZW50IGlmIGN1c3RvbSBjb250ZW50IGhhc24ndCBiZWVuIHByb3ZpZGVkXHJcbiAgICBjb25zdCBjdXJyZW50U3RhdGUgPSB0aGlzLnN0YXRlKCk7XHJcbiAgICBjb25zdCBjb250ZW50OiBSZWNvcmQ8J2RlZmF1bHQnIHwgJ2Nvbm5lY3Rpb24nIHwgJ2FjY2VzcycgfCAnYWNjZXNzUmVzdHJpY3RlZCcsIENvbnRlbnRJdGVtPiA9IHtcclxuICAgICAgZGVmYXVsdDoge1xyXG4gICAgICAgIHRpdGxlOiAnT29wcyEgU29tZXRoaW5nIHdlbnQgd3JvbmcuIFBsZWFzZSB0cnkgYWdhaW4gb3IgdHJ5IGFmdGVyIHNvbWUgdGltZScsXHJcbiAgICAgICAgZGVzY3JpcHRpb246ICdJZiB0aGUgaXNzdWUgcGVyc2lzdHMsIGNvbnRhY3Qgb3VyIHN1cHBvcnQgdGVhbSBhdCA8c3BhbiBjbGFzcz1cInN1cHBvcnQtZW1haWxcIj5zdXBwb3J0QHNhcmFzYW5hbHl0aWNzLmNvbTwvc3Bhbj4nLFxyXG4gICAgICAgIG1lc3NhZ2VJY29uOiAnL2Fzc2V0cy9lcnJvci5naWYnXHJcbiAgICAgIH0sXHJcbiAgICAgIGNvbm5lY3Rpb246IHtcclxuICAgICAgICB0aXRsZTogJ1dlXFwncmUgaGF2aW5nIHRyb3VibGUgY29ubmVjdGluZy4gUGxlYXNlIGNoZWNrIHlvdXIgaW50ZXJuZXQgY29ubmVjdGlvbiBhbmQgdHJ5IGFnYWluJyxcclxuICAgICAgICBkZXNjcmlwdGlvbjogJ1lvdSBjYW4gYWxzbyByZWFjaCBvdXQgdG8gb3VyIHN1cHBvcnQgdGVhbSBhdCA8c3BhbiBjbGFzcz1cInN1cHBvcnQtZW1haWxcIj5zdXBwb3J0QHNhcmFzYW5hbHl0aWNzLmNvbTwvc3Bhbj4gZm9yIGFzc2lzdGFuY2UnLFxyXG4gICAgICAgIG1lc3NhZ2VJY29uOiAnL2Fzc2V0cy9sb3N0LWNvbm5lY3Rpb24uZ2lmJ1xyXG4gICAgICB9LFxyXG4gICAgICBhY2Nlc3M6IHtcclxuICAgICAgICB0aXRsZTogJ1RoaXMgaXMgdGFraW5nIGEgYml0IGxvbmdlciB0aGFuIHVzdWFsLiBQbGVhc2UgaG9sZCBvbiEnLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnSWYgdGhlIGRlbGF5IGNvbnRpbnVlcywgY2hlY2sgeW91ciBjb25uZWN0aW9uIGFuZCB0cnkgcmVmcmVzaGluZyB0aGUgcGFnZS4nLFxyXG4gICAgICAgIG1lc3NhZ2VJY29uOiAnL2Fzc2V0cy9sb25nLWxvYWRpbmcuZ2lmJ1xyXG4gICAgICB9LFxyXG4gICAgICBhY2Nlc3NSZXN0cmljdGVkOiB7XHJcbiAgICAgICAgdGl0bGU6ICdBY2Nlc3MgUmVzdHJpY3RlZCEnLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgTG9va3MgbGlrZSB5b3UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gdGhpcyBtb2R1bGUganVzdCB5ZXQuIE5vIHdvcnJpZXPigJRyZWFjaCBvdXQgdG8geW91ciBhZG1pbiB0byByZXF1ZXN0IGFjY2VzcyB0byB0aGlzIGZlYXR1cmUuIElmIHlvdSdyZSBmYWNpbmcgYW55IGlzc3VlcywgZmVlbCBmcmVlIHRvIDxhIGNsYXNzPVwiY3VzdG9tLWNvbnRhY3QtbGlua1wiIGhyZWY9XCIke3RoaXMuY29udGFjdFVybCA/PyAnaHR0cHM6Ly9zdXBwb3J0LmRlZmF1bHQuY29tJ31cIiB0YXJnZXQ9XCJfYmxhbmtcIj5Db250YWN0IFVzPC9hPi5gLFxyXG4gICAgICAgIG1lc3NhZ2VJY29uOiAnL2Fzc2V0cy9hY2Nlc3MtcmVzdHJpY3RlZC5naWYnLFxyXG4gICAgICAgIHNwYWNpbmdCZXR3ZWVuSW1hZ2VBbmREZXNjcmlwdGlvbjogJzBweCcsXHJcbiAgICAgICAgY29udGVudEdhcDonMjBweCcsXHJcbiAgICAgICAgdGl0bGVDbGFzczogJ2FjY2Vzcy1yZXN0cmljdGVkLXRpdGxlJyxcclxuICAgICAgICBkZXNjcmlwdGlvbkNsYXNzOiAnYWNjZXNzLXJlc3RyaWN0ZWQtZGVzY3JpcHRpb24nLFxyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGNvbnRlbnRJdGVtID0gY29udGVudFt0eXBlXTtcclxuXHJcbiAgICB0aGlzLnN0YXRlLnVwZGF0ZShzID0+ICh7XHJcbiAgICAgIC4uLnMsXHJcbiAgICAgIHR5cGUsXHJcbiAgICAgIC8vIE9ubHkgYXBwbHkgZGVmYXVsdCB2YWx1ZXMgaWYgY3VzdG9tIHZhbHVlcyBoYXZlbid0IGJlZW4gcHJvdmlkZWRcclxuICAgICAgdGl0bGU6IHMudGl0bGUgfHwgY29udGVudEl0ZW0udGl0bGUsXHJcbiAgICAgIGRlc2NyaXB0aW9uOiBzLmRlc2NyaXB0aW9uIHx8IGNvbnRlbnRJdGVtLmRlc2NyaXB0aW9uLFxyXG4gICAgICBtZXNzYWdlSWNvbjogcy5tZXNzYWdlSWNvbiB8fCBjb250ZW50SXRlbS5tZXNzYWdlSWNvbixcclxuICAgICAgLy8gRm9yIG90aGVyIHByb3BlcnRpZXMsIG9ubHkgYXBwbHkgdGhlbSBpZiB0aGV5IGV4aXN0IGluIHRoZSBjb250ZW50SXRlbVxyXG4gICAgICAuLi4oY29udGVudEl0ZW0uc3BhY2luZ0JldHdlZW5JbWFnZUFuZERlc2NyaXB0aW9uICYmIHsgc3BhY2luZ0JldHdlZW5JbWFnZUFuZERlc2NyaXB0aW9uOiBjb250ZW50SXRlbS5zcGFjaW5nQmV0d2VlbkltYWdlQW5kRGVzY3JpcHRpb24gfSksXHJcbiAgICAgIC4uLihjb250ZW50SXRlbS5jb250ZW50R2FwICYmIHsgY29udGVudEdhcDogY29udGVudEl0ZW0uY29udGVudEdhcCB9KSxcclxuICAgICAgLi4uKGNvbnRlbnRJdGVtLnRpdGxlQ2xhc3MgJiYgeyB0aXRsZUNsYXNzOiBjb250ZW50SXRlbS50aXRsZUNsYXNzIH0pLFxyXG4gICAgICAuLi4oY29udGVudEl0ZW0uZGVzY3JpcHRpb25DbGFzcyAmJiB7IGRlc2NyaXB0aW9uQ2xhc3M6IGNvbnRlbnRJdGVtLmRlc2NyaXB0aW9uQ2xhc3MgfSlcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2FuaXRpemVEZXNjcmlwdGlvbihkZXNjcmlwdGlvbjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBkZXNjcmlwdGlvbi5yZXBsYWNlKFxyXG4gICAgICAvc3VwcG9ydEBzYXJhc2FuYWx5dGljc1xcLmNvbS9nLFxyXG4gICAgICAnPHNwYW4gY2xhc3M9XCJzdXBwb3J0LWVtYWlsXCI+c3VwcG9ydEBzYXJhc2FuYWx5dGljcy5jb208L3NwYW4+J1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG9uQnV0dG9uQ2xpY2soYnV0dG9uOiBhbnksIGV2ZW50PzogRXZlbnQpOiB2b2lkIHtcclxuICAgIC8vIENoZWNrIGlmIHRoaXMgaXMgYSBmb3JtIGJ1dHRvbiAoZnJvbSBhY3RpdmVDdXN0b21Gb3JtQnV0dG9uKSBvciByZWd1bGFyIGJhbm5lciBidXR0b25cclxuICAgIGlmICghZXZlbnQgJiYgKGJ1dHRvbi5hY3Rpb24gPT09ICdzdWJtaXQnIHx8IGJ1dHRvbi5hY3Rpb24gPT09ICdsaW5rJyB8fCBidXR0b24uaWQgPT09ICdhZGQtdXNlcicgfHwgYnV0dG9uLmlkID09PSAnbGVhcm4tbW9yZScpKSB7XHJcbiAgICAgIC8vIEhhbmRsZSBmb3JtIGJ1dHRvbnMgd2l0aCBuZXcgbG9naWNcclxuICAgICAgaWYgKCBidXR0b24uaWQgPT09ICdhZGQtdXNlcicpIHtcclxuICAgICAgICAvLyBIYW5kbGUgZm9ybSBzdWJtaXNzaW9uIChleGlzdGluZyBBZGQgVXNlciBmdW5jdGlvbmFsaXR5KVxyXG4gICAgICAgIHRoaXMub25BZGRVc2VyKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoYnV0dG9uLmFjdGlvbiA9PT0gJ2xpbmsnICYmIGJ1dHRvbi5saW5rKSB7XHJcbiAgICAgICAgLy8gSGFuZGxlIGxpbmsgbmF2aWdhdGlvbiAoTGVhcm4gTW9yZSBmdW5jdGlvbmFsaXR5KVxyXG4gICAgICAgIHdpbmRvdy5vcGVuKGJ1dHRvbi5saW5rLCAnX2JsYW5rJyk7XHJcbiAgICAgIH0gZWxzZSBpZiAoYnV0dG9uLm9uQ2xpY2spIHtcclxuICAgICAgICAvLyBIYW5kbGUgY3VzdG9tIGNsaWNrIGZ1bmN0aW9uXHJcbiAgICAgICAgYnV0dG9uLm9uQ2xpY2soKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChldmVudCkge1xyXG4gICAgICAvLyBIYW5kbGUgcmVndWxhciBiYW5uZXIgYnV0dG9ucyB3aXRoIG9yaWdpbmFsIGxvZ2ljIChiYWNrd2FyZCBjb21wYXRpYmlsaXR5KVxyXG4gICAgICB0aGlzLmJ1dHRvbkNsaWNrLmVtaXQoe1xyXG4gICAgICAgIHR5cGU6IGJ1dHRvbi50eXBlIGFzICdwcmltYXJ5JyB8ICdzZWNvbmRhcnknLFxyXG4gICAgICAgIGJ1dHRvbixcclxuICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzQnV0dG9uQXJyYXkoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLmFjdGl2ZUN1c3RvbUZvcm1CdXR0b24pO1xyXG4gIH1cclxuXHJcbiAgaXNFbXB0eU9iamVjdChvYmo6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKG9iaikge1xyXG4gICAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqKS5sZW5ndGggPT09IDA7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUZvcm1seUZpZWxkcygpOiB2b2lkIHtcclxuICAgIC8vIFNraXAgRm9ybWx5IGZpZWxkIGdlbmVyYXRpb24gaWYgdXNpbmcgcHJlYnVpbHQgZmllbGRzXHJcbiAgICBpZiAodGhpcy51c2VQcmVidWlsdEZpZWxkcygpKSB7XHJcbiAgICAgIHRoaXMuZm9ybWx5RmllbGRzID0gW107XHJcbiAgICAgIHRoaXMuYWxsRm9ybWx5RmllbGRzID0gW107XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuZm9ybUNvbmZpZyB8fCAhdGhpcy5mb3JtQ29uZmlnLmZpZWxkcyB8fCB0aGlzLmZvcm1Db25maWcuZmllbGRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLmZvcm1seUZpZWxkcyA9IFtdO1xyXG4gICAgICB0aGlzLmFsbEZvcm1seUZpZWxkcyA9IFtdO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gR2V0IGxheW91dCBjb25maWd1cmF0aW9uXHJcbiAgICBjb25zdCBsYXlvdXQgPSB0aGlzLmFjdGl2ZUZvcm1MYXlvdXQ7XHJcbiAgICBjb25zdCBmaWVsZHNQZXJSb3cgPSBsYXlvdXQuZmllbGRzUGVyUm93IHx8IDI7XHJcbiAgICBjb25zdCBpbml0aWFsVmlzaWJsZUZpZWxkcyA9IGxheW91dC5pbml0aWFsVmlzaWJsZUZpZWxkcyB8fCBmaWVsZHNQZXJSb3c7XHJcbiAgICBcclxuICAgIC8vIFVwZGF0ZSBDU1MgZ3JpZCBjb2x1bW5zIGR5bmFtaWNhbGx5XHJcbiAgICB0aGlzLnVwZGF0ZUdyaWRDb2x1bW5zKGZpZWxkc1BlclJvdyk7XHJcbiAgICBcclxuICAgIC8vIENyZWF0ZSBhbGwgZmllbGRzIHdpdGggcHJvcGVyIGhpZGUgZXhwcmVzc2lvbnMgZm9yIGNvbmRpdGlvbmFsIGZpZWxkc1xyXG4gICAgdGhpcy5hbGxGb3JtbHlGaWVsZHMgPSB0aGlzLmZvcm1Db25maWcuZmllbGRzLm1hcCgoZmllbGQsIGluZGV4KSA9PiB7XHJcbiAgICAgIC8vIE5vcm1hbGl6ZSBmaWVsZCBzdHJ1Y3R1cmUgdG8gcHJvcGVyIEZvcm1seSBmb3JtYXRcclxuICAgICAgY29uc3QgcGxhY2Vob2xkZXJWYWx1ZSA9IGZpZWxkLnBsYWNlaG9sZGVyIHx8IGZpZWxkLnByb3BzPy5wbGFjZWhvbGRlciB8fCBmaWVsZC5wYXJhbXM/LnBsYWNlaG9sZGVyIHx8IGZpZWxkLnByb3BzPy5wYXJhbXM/LnBsYWNlaG9sZGVyIHx8ICcnO1xyXG4gICAgICBcclxuICAgICAgY29uc3QgaXNDb25kaXRpb25hbEZpZWxkID0gaW5kZXggPj0gaW5pdGlhbFZpc2libGVGaWVsZHM7XHJcbiAgICAgIFxyXG4gICAgICBjb25zdCBmb3JtbHlGaWVsZDogRm9ybWx5RmllbGRDb25maWcgPSB7XHJcbiAgICAgICAga2V5OiBmaWVsZC5rZXksXHJcbiAgICAgICAgdHlwZTogZmllbGQudHlwZSxcclxuICAgICAgICBjbGFzc05hbWU6IHRoaXMuZ2V0RmllbGRDbGFzc05hbWUoaW5kZXggJSBmaWVsZHNQZXJSb3csIGZpZWxkc1BlclJvdyksXHJcbiAgICAgICAgaGlkZUV4cHJlc3Npb246IGlzQ29uZGl0aW9uYWxGaWVsZCA/ICgpID0+ICF0aGlzLnNob3VsZFNob3dBZGRpdGlvbmFsRmllbGRzKCkgOiBmYWxzZSxcclxuICAgICAgICBwcm9wczoge1xyXG4gICAgICAgICAgLy8gSGFuZGxlIG1peGVkIHN0cnVjdHVyZSAtIHNvbWUgZmllbGRzIGhhdmUgcHJvcHMgYXQgcm9vdCwgb3RoZXJzIG5lc3RlZFxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyVmFsdWUsXHJcbiAgICAgICAgICByZXF1aXJlZDogZmllbGQucmVxdWlyZWQgfHwgZmllbGQucHJvcHM/LnJlcXVpcmVkIHx8IGZhbHNlLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZpZWxkLmRpc2FibGVkIHx8IGZpZWxkLnByb3BzPy5kaXNhYmxlZCB8fCBmYWxzZSxcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgLy8gRm9yIHNlbGVjdCBmaWVsZHMsIGluY2x1ZGUgc2VsZWN0LXNwZWNpZmljIHByb3BlcnRpZXNcclxuICAgICAgICAgIC4uLihmaWVsZC5wcm9wcz8ub3B0aW9ucyAmJiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IGZpZWxkLnByb3BzLm9wdGlvbnMsXHJcbiAgICAgICAgICAgIG11bHRpcGxlOiBmaWVsZC5wcm9wcy5tdWx0aXBsZSB8fCBmYWxzZSxcclxuICAgICAgICAgICAgYmluZExhYmVsOiBmaWVsZC5wcm9wcy5wYXJhbXM/LmJpbmRMYWJlbCB8fCAnbGFiZWwnLFxyXG4gICAgICAgICAgICBiaW5kVmFsdWU6IGZpZWxkLnByb3BzLnBhcmFtcz8uYmluZFZhbHVlIHx8ICd2YWx1ZScsXHJcbiAgICAgICAgICAgIGlzQ2xlYXJhYmxlOiBmaWVsZC5wcm9wcy5wYXJhbXM/LmlzQ2xlYXJhYmxlICE9PSBmYWxzZSxcclxuICAgICAgICAgICAgc2hvd0NoZWNrYm94ZXM6IGZpZWxkLnByb3BzLnBhcmFtcz8uc2hvd0NoZWNrYm94ZXMgfHwgZmFsc2VcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAvLyBJbmNsdWRlIHBhcmFtcyBmb3IgY29tcG9uZW50LXNwZWNpZmljIGNvbmZpZ3VyYXRpb25cclxuICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAuLi4oZmllbGQucGFyYW1zIHx8IHt9KSxcclxuICAgICAgICAgICAgLi4uKGZpZWxkLnByb3BzPy5wYXJhbXMgfHwge30pLFxyXG4gICAgICAgICAgICAvLyBFbnN1cmUgbGFiZWwgYW5kIHBsYWNlaG9sZGVyIGFyZSBzZXRcclxuICAgICAgICAgICAgbGFiZWw6IGZpZWxkLmxhYmVsIHx8IGZpZWxkLnByb3BzPy5wYXJhbXM/LmxhYmVsIHx8IHBsYWNlaG9sZGVyVmFsdWUsXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlclZhbHVlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICB2YWxpZGF0b3JzOiB0aGlzLmdldEZvcm1seVZhbGlkYXRvcnMoZmllbGQpLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgLy8gU2V0IGluaXRpYWwgdmFsdWUgaWYgcHJvdmlkZWRcclxuICAgICAgaWYgKGZpZWxkLnZhbHVlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLm1vZGVsW2ZpZWxkLmtleSBhcyBzdHJpbmddID0gZmllbGQudmFsdWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIEFkZCBmb3JtIGNvbnRyb2wgdG8gZm9ybSBncm91cCBpZiBub3QgYWxyZWFkeSBwcmVzZW50XHJcbiAgICAgIGNvbnN0IGtleSA9IGZpZWxkLmtleSBhcyBzdHJpbmc7XHJcbiAgICAgIGlmICghdGhpcy5mb3JtLmdldChrZXkpKSB7XHJcbiAgICAgICAgbGV0IGZvcm1Db250cm9sOiBGb3JtQ29udHJvbDtcclxuICAgICAgICBpZiAoZmllbGQuZm9ybUNvbnRyb2wpIHtcclxuICAgICAgICAgIGZvcm1Db250cm9sID0gZmllbGQuZm9ybUNvbnRyb2w7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSBmaWVsZC5wYXJhbXM/LnZhbGlkYXRvcnMgfHwgW107XHJcbiAgICAgICAgICBmb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChmaWVsZC52YWx1ZSB8fCAnJywgdmFsaWRhdG9ycyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZm9ybS5hZGRDb250cm9sKGtleSwgZm9ybUNvbnRyb2wpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gZm9ybWx5RmllbGQ7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmZvcm1seUZpZWxkcyA9IHRoaXMuYWxsRm9ybWx5RmllbGRzLnNsaWNlKDAsIGluaXRpYWxWaXNpYmxlRmllbGRzKTtcclxuICAgIHRoaXMudXBkYXRlQWRkaXRpb25hbEZpZWxkcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGaWVsZENsYXNzTmFtZShpbmRleDogbnVtYmVyLCBmaWVsZHNQZXJSb3c6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBjb25zdCBjb2xTaXplID0gMTIgLyBmaWVsZHNQZXJSb3c7XHJcbiAgICByZXR1cm4gYGNvbC0ke2NvbFNpemV9YDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlR3JpZENvbHVtbnMoZmllbGRzUGVyUm93OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIC8vIFVzZSBDU1MgY3VzdG9tIHByb3BlcnR5IHRvIGR5bmFtaWNhbGx5IHVwZGF0ZSBncmlkIGNvbHVtbnNcclxuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1mb3JtLWdyaWQtY29sdW1ucycsIGZpZWxkc1BlclJvdy50b1N0cmluZygpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Rm9ybWx5VmFsaWRhdG9ycyhmaWVsZDogYW55KTogYW55IHtcclxuICAgIGNvbnN0IHZhbGlkYXRvcnM6IGFueSA9IHt9O1xyXG4gICAgXHJcbiAgICBpZiAoZmllbGQuZm9ybUNvbnRyb2wgJiYgZmllbGQuZm9ybUNvbnRyb2wudmFsaWRhdG9yKSB7XHJcbiAgICAgIHZhbGlkYXRvcnMudmFsaWRhdGlvbiA9IGZpZWxkLmZvcm1Db250cm9sLnZhbGlkYXRvcjtcclxuICAgIH1cclxuICAgIFxyXG4gICAgaWYgKGZpZWxkLnBhcmFtcz8udmFsaWRhdG9ycyAmJiBBcnJheS5pc0FycmF5KGZpZWxkLnBhcmFtcy52YWxpZGF0b3JzKSkge1xyXG4gICAgICB2YWxpZGF0b3JzLnZhbGlkYXRpb24gPSBmaWVsZC5wYXJhbXMudmFsaWRhdG9ycztcclxuICAgIH1cclxuICAgIFxyXG4gICAgaWYgKGZpZWxkLnZhbGlkYXRvcnMpIHtcclxuICAgICAgaWYgKGZpZWxkLnZhbGlkYXRvcnMudmFsaWRhdGlvbikge1xyXG4gICAgICAgIHZhbGlkYXRvcnMudmFsaWRhdGlvbiA9IGZpZWxkLnZhbGlkYXRvcnMudmFsaWRhdGlvbjtcclxuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGZpZWxkLnZhbGlkYXRvcnMpKSB7XHJcbiAgICAgICAgdmFsaWRhdG9ycy52YWxpZGF0aW9uID0gZmllbGQudmFsaWRhdG9ycztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgXHJcbiAgICByZXR1cm4gdmFsaWRhdG9ycztcclxuICB9XHJcblxyXG5cclxuICBzaG91bGRTaG93QWRkaXRpb25hbEZpZWxkcygpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5hY3RpdmVGb3JtSW5wdXRzIHx8IHRoaXMuYWN0aXZlRm9ybUlucHV0cy5sZW5ndGggPT09IDApIHJldHVybiBmYWxzZTtcclxuICAgIFxyXG4gICAgY29uc3QgbGF5b3V0ID0gdGhpcy5hY3RpdmVGb3JtTGF5b3V0O1xyXG4gICAgY29uc3QgaW5pdGlhbFZpc2libGVGaWVsZHMgPSBsYXlvdXQuaW5pdGlhbFZpc2libGVGaWVsZHMgfHwgbGF5b3V0LmZpZWxkc1BlclJvdyB8fCAyO1xyXG4gICAgXHJcbiAgICAvLyBJZiBubyBjb25kaXRpb25hbCBmaWVsZHMgY29uZmlndXJhdGlvbiwgY2hlY2sgaWYgaW5pdGlhbCBmaWVsZHMgYXJlIGZpbGxlZFxyXG4gICAgaWYgKCFsYXlvdXQuY29uZGl0aW9uYWxGaWVsZHMpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYXJlQWxsVmlzaWJsZUZpZWxkc0ZpbGxlZCgpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvLyBVc2UgY3VzdG9tIHNob3dXaGVuIGZ1bmN0aW9uIGlmIHByb3ZpZGVkXHJcbiAgICBjb25zdCBzaG91bGRTaG93ID0gbGF5b3V0LmNvbmRpdGlvbmFsRmllbGRzLnNob3dXaGVuID8gXHJcbiAgICAgIGxheW91dC5jb25kaXRpb25hbEZpZWxkcy5zaG93V2hlbih0aGlzLm1vZGVsKSA6IHRoaXMuYXJlQWxsVmlzaWJsZUZpZWxkc0ZpbGxlZCgpO1xyXG4gICAgcmV0dXJuIHNob3VsZFNob3c7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUFkZGl0aW9uYWxGaWVsZHMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBsYXlvdXQgPSB0aGlzLmFjdGl2ZUZvcm1MYXlvdXQ7XHJcbiAgICBjb25zdCBmaWVsZHNQZXJSb3cgPSBsYXlvdXQuZmllbGRzUGVyUm93IHx8IDI7XHJcbiAgICBjb25zdCBpbml0aWFsVmlzaWJsZUZpZWxkcyA9IGxheW91dC5pbml0aWFsVmlzaWJsZUZpZWxkcyB8fCBmaWVsZHNQZXJSb3c7XHJcbiAgICBcclxuICAgIC8vIENoZWNrIGlmIHdlIHNob3VsZCBzaG93IGFkZGl0aW9uYWwgZmllbGRzXHJcbiAgICBjb25zdCBzaG91bGRTaG93Q29uZGl0aW9uYWxGaWVsZHMgPSB0aGlzLnNob3VsZFNob3dBZGRpdGlvbmFsRmllbGRzKCk7XHJcbiAgICBcclxuICAgIGlmIChzaG91bGRTaG93Q29uZGl0aW9uYWxGaWVsZHMgJiYgdGhpcy5mb3JtQ29uZmlnLmZpZWxkcy5sZW5ndGggPiBpbml0aWFsVmlzaWJsZUZpZWxkcykge1xyXG4gICAgICAvLyBHZXQgc3BlY2lmaWMgY29uZGl0aW9uYWwgZmllbGQgaW5kaWNlcyBvciBhbGwgcmVtYWluaW5nIGZpZWxkc1xyXG4gICAgICBjb25zdCBjb25kaXRpb25hbEZpZWxkSW5kaWNlcyA9IGxheW91dC5jb25kaXRpb25hbEZpZWxkcz8uZmllbGRzIHx8IFxyXG4gICAgICAgIEFycmF5LmZyb20oe2xlbmd0aDogdGhpcy5mb3JtQ29uZmlnLmZpZWxkcy5sZW5ndGggLSBpbml0aWFsVmlzaWJsZUZpZWxkc30sIChfLCBpKSA9PiBpICsgaW5pdGlhbFZpc2libGVGaWVsZHMpO1xyXG4gICAgICBcclxuICAgICAgY29uc3QgYWRkaXRpb25hbEZpZWxkcyA9IGNvbmRpdGlvbmFsRmllbGRJbmRpY2VzLm1hcChpbmRleCA9PiB0aGlzLmZvcm1Db25maWcuZmllbGRzW2luZGV4XSkuZmlsdGVyKEJvb2xlYW4pO1xyXG4gICAgICBcclxuICAgICAgLy8gTm9ybWFsaXplIGFkZGl0aW9uYWwgZmllbGRzIHRvIHByb3BlciBGb3JtbHkgZm9ybWF0XHJcbiAgICAgIHRoaXMuYWRkaXRpb25hbEZvcm1seUZpZWxkcyA9IGFkZGl0aW9uYWxGaWVsZHMubWFwKChmaWVsZCwgaW5kZXgpID0+IHtcclxuICAgICAgICAvLyBOb3JtYWxpemUgZmllbGQgc3RydWN0dXJlIHRvIHByb3BlciBGb3JtbHkgZm9ybWF0XHJcbiAgICAgICAgY29uc3QgcGxhY2Vob2xkZXJWYWx1ZSA9IGZpZWxkLnBsYWNlaG9sZGVyIHx8IGZpZWxkLnByb3BzPy5wbGFjZWhvbGRlciB8fCBmaWVsZC5wYXJhbXM/LnBsYWNlaG9sZGVyIHx8IGZpZWxkLnByb3BzPy5wYXJhbXM/LnBsYWNlaG9sZGVyIHx8ICcnO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGNvbnNvbGUubG9nKCdQcm9jZXNzaW5nIGNvbmRpdGlvbmFsIGZpZWxkOicsIGZpZWxkLmtleSwgJ3BsYWNlaG9sZGVyOicsIHBsYWNlaG9sZGVyVmFsdWUsICdmaWVsZDonLCBmaWVsZCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgY29uc3QgZm9ybWx5RmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnID0ge1xyXG4gICAgICAgICAga2V5OiBmaWVsZC5rZXksXHJcbiAgICAgICAgICB0eXBlOiBmaWVsZC50eXBlLFxyXG4gICAgICAgICAgY2xhc3NOYW1lOiB0aGlzLmdldEZpZWxkQ2xhc3NOYW1lKGluZGV4LCBmaWVsZHNQZXJSb3cpLFxyXG4gICAgICAgICAgcHJvcHM6IHtcclxuICAgICAgICAgICAgLy8gSGFuZGxlIG1peGVkIHN0cnVjdHVyZSAtIHNvbWUgZmllbGRzIGhhdmUgcHJvcHMgYXQgcm9vdCwgb3RoZXJzIG5lc3RlZFxyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogcGxhY2Vob2xkZXJWYWx1ZSxcclxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZpZWxkLnJlcXVpcmVkIHx8IGZpZWxkLnByb3BzPy5yZXF1aXJlZCB8fCBmYWxzZSxcclxuICAgICAgICAgICAgZGlzYWJsZWQ6IGZpZWxkLmRpc2FibGVkIHx8IGZpZWxkLnByb3BzPy5kaXNhYmxlZCB8fCBmYWxzZSxcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIEZvciBzZWxlY3QgZmllbGRzLCBpbmNsdWRlIHNlbGVjdC1zcGVjaWZpYyBwcm9wZXJ0aWVzXHJcbiAgICAgICAgICAgIC4uLihmaWVsZC5wcm9wcz8ub3B0aW9ucyAmJiB7XHJcbiAgICAgICAgICAgICAgb3B0aW9uczogZmllbGQucHJvcHMub3B0aW9ucyxcclxuICAgICAgICAgICAgICBtdWx0aXBsZTogZmllbGQucHJvcHMubXVsdGlwbGUgfHwgZmFsc2UsXHJcbiAgICAgICAgICAgICAgYmluZExhYmVsOiBmaWVsZC5wcm9wcy5wYXJhbXM/LmJpbmRMYWJlbCB8fCAnbGFiZWwnLFxyXG4gICAgICAgICAgICAgIGJpbmRWYWx1ZTogZmllbGQucHJvcHMucGFyYW1zPy5iaW5kVmFsdWUgfHwgJ3ZhbHVlJyxcclxuICAgICAgICAgICAgICBpc0NsZWFyYWJsZTogZmllbGQucHJvcHMucGFyYW1zPy5pc0NsZWFyYWJsZSAhPT0gZmFsc2UsXHJcbiAgICAgICAgICAgICAgc2hvd0NoZWNrYm94ZXM6IGZpZWxkLnByb3BzLnBhcmFtcz8uc2hvd0NoZWNrYm94ZXMgfHwgZmFsc2VcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvLyBJbmNsdWRlIHBhcmFtcyBmb3IgY29tcG9uZW50LXNwZWNpZmljIGNvbmZpZ3VyYXRpb25cclxuICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgLi4uKGZpZWxkLnBhcmFtcyB8fCB7fSksXHJcbiAgICAgICAgICAgICAgLi4uKGZpZWxkLnByb3BzPy5wYXJhbXMgfHwge30pLFxyXG4gICAgICAgICAgICAgIC8vIEVuc3VyZSBsYWJlbCBhbmQgcGxhY2Vob2xkZXIgYXJlIHNldFxyXG4gICAgICAgICAgICAgIGxhYmVsOiBmaWVsZC5sYWJlbCB8fCBmaWVsZC5wcm9wcz8ucGFyYW1zPy5sYWJlbCB8fCBwbGFjZWhvbGRlclZhbHVlLFxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlclZhbHVlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB2YWxpZGF0b3JzOiBmaWVsZC52YWxpZGF0b3JzIHx8IGZpZWxkLnByb3BzPy52YWxpZGF0b3JzIHx8IHt9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgLy8gU2V0IGluaXRpYWwgdmFsdWUgaWYgcHJvdmlkZWRcclxuICAgICAgICBpZiAoZmllbGQudmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgdGhpcy5tb2RlbFtmaWVsZC5rZXkgYXMgc3RyaW5nXSA9IGZpZWxkLnZhbHVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQWRkIGZvcm0gY29udHJvbCB0byBmb3JtIGdyb3VwIGlmIG5vdCBhbHJlYWR5IHByZXNlbnRcclxuICAgICAgICBjb25zdCBrZXkgPSBmaWVsZC5rZXkgYXMgc3RyaW5nO1xyXG4gICAgICAgIGlmICghdGhpcy5mb3JtLmdldChrZXkpKSB7XHJcbiAgICAgICAgICB0aGlzLmZvcm0uYWRkQ29udHJvbChrZXksIGZpZWxkLmZvcm1Db250cm9sIHx8IG5ldyBGb3JtQ29udHJvbChmaWVsZC52YWx1ZSB8fCAnJykpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGZvcm1seUZpZWxkO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIENsZWFyIGFkZGl0aW9uYWwgZmllbGRzIGlmIGNvbmRpdGlvbnMgYXJlIG5vdCBtZXRcclxuICAgICAgdGhpcy5hZGRpdGlvbmFsRm9ybWx5RmllbGRzID0gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV2YWx1YXRlU2hvd1doZW4oc2hvd1doZW46IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCFzaG93V2hlbikgcmV0dXJuIHRydWU7XHJcbiAgICBcclxuICAgIC8vIEhhbmRsZSBkaWZmZXJlbnQgc2hvd1doZW4gY29uZGl0aW9uc1xyXG4gICAgaWYgKHR5cGVvZiBzaG93V2hlbiA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICByZXR1cm4gc2hvd1doZW4odGhpcy5tb2RlbCwgdGhpcy5mb3JtKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgaWYgKHR5cGVvZiBzaG93V2hlbiA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgLy8gSGFuZGxlIGZpZWxkLWJhc2VkIGNvbmRpdGlvbnMgbGlrZSB7IGZpZWxkOiAncm9sZScsIHZhbHVlOiAnYWRtaW4nIH1cclxuICAgICAgaWYgKHNob3dXaGVuLmZpZWxkICYmIHNob3dXaGVuLnZhbHVlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbFtzaG93V2hlbi5maWVsZF0gPT09IHNob3dXaGVuLnZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8gSGFuZGxlIGZvcm0gbW9kZWwgY2hhbmdlcyBmcm9tIEZvcm1seVxyXG4gIG9uRm9ybU1vZGVsQ2hhbmdlKG1vZGVsOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMubW9kZWwgPSB7IC4uLnRoaXMubW9kZWwsIC4uLm1vZGVsIH07XHJcbiAgICBcclxuICAgIC8vIFRyaWdnZXIgZmllbGQgdmlzaWJpbGl0eSB1cGRhdGVzIGJ5IHVwZGF0aW5nIHRoZSBhbGxGb3JtbHlGaWVsZHMgYXJyYXlcclxuICAgIC8vIFRoaXMgd2lsbCBjYXVzZSBGb3JtbHkgdG8gcmUtZXZhbHVhdGUgaGlkZUV4cHJlc3Npb24gZm9yIGFsbCBmaWVsZHNcclxuICAgIHRoaXMuYWxsRm9ybWx5RmllbGRzID0gWy4uLnRoaXMuYWxsRm9ybWx5RmllbGRzXTtcclxuICAgIFxyXG4gICAgLy8gRW1pdCB0aGUgY2hhbmdlIGV2ZW50XHJcbiAgICB0aGlzLm9uRm9ybUV2ZW50LmVtaXQoeyBcclxuICAgICAgdHlwZTogJ2Zvcm0tbW9kZWwtY2hhbmdlJywgXHJcbiAgICAgIGRhdGE6IG1vZGVsIFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuICAvLyBHZXQgaW5pdGlhbCBmaWVsZHMgdG8gZGlzcGxheSBpbiB0aGUgZmlyc3Qgcm93XHJcbiAgZ2V0SW5pdGlhbEZpZWxkcygpOiBGb3JtRmllbGRDb25maWdbXSB7XHJcbiAgICBpZiAoIXRoaXMuYWN0aXZlRm9ybUlucHV0cykgcmV0dXJuIFtdO1xyXG4gICAgXHJcbiAgICBjb25zdCBpbml0aWFsQ291bnQgPSB0aGlzLmFjdGl2ZUZvcm1MYXlvdXQuaW5pdGlhbFZpc2libGVGaWVsZHMgfHwgdGhpcy5hY3RpdmVGb3JtTGF5b3V0LmZpZWxkc1BlclJvdyB8fCAyO1xyXG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlRm9ybUlucHV0cy5zbGljZSgwLCBpbml0aWFsQ291bnQpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIENoZWNrIGlmIGFsbCB2aXNpYmxlIGZpZWxkcyBhcmUgZmlsbGVkIGFuZCBmb3JtIGlzIHZhbGlkXHJcbiAgYXJlQWxsVmlzaWJsZUZpZWxkc0ZpbGxlZCgpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5hY3RpdmVGb3JtSW5wdXRzIHx8IHRoaXMuYWN0aXZlRm9ybUlucHV0cy5sZW5ndGggPT09IDApIHJldHVybiB0cnVlO1xyXG4gICAgXHJcbiAgICAvLyBHZXQgbGF5b3V0IGNvbmZpZ3VyYXRpb24gdG8gZGV0ZXJtaW5lIHdoaWNoIGZpZWxkcyBzaG91bGQgYmUgdmlzaWJsZVxyXG4gICAgY29uc3QgbGF5b3V0ID0gdGhpcy5hY3RpdmVGb3JtTGF5b3V0O1xyXG4gICAgY29uc3QgaW5pdGlhbFZpc2libGVGaWVsZHMgPSBsYXlvdXQuaW5pdGlhbFZpc2libGVGaWVsZHMgfHwgbGF5b3V0LmZpZWxkc1BlclJvdyB8fCAyO1xyXG4gICAgXHJcbiAgICAvLyBHZXQgYWxsIGN1cnJlbnRseSB2aXNpYmxlIGZpZWxkcyAoaW5pdGlhbCArIGNvbmRpdGlvbmFsIGlmIHNob3duKVxyXG4gICAgY29uc3QgdmlzaWJsZUZpZWxkcyA9IHRoaXMuYWN0aXZlRm9ybUlucHV0cy5zbGljZSgwLCBpbml0aWFsVmlzaWJsZUZpZWxkcyk7XHJcbiAgICBpZiAodGhpcy5zaG91bGRTaG93QWRkaXRpb25hbEZpZWxkcygpKSB7XHJcbiAgICAgIGNvbnN0IGNvbmRpdGlvbmFsRmllbGRJbmRpY2VzID0gbGF5b3V0LmNvbmRpdGlvbmFsRmllbGRzPy5maWVsZHMgfHwgXHJcbiAgICAgICAgQXJyYXkuZnJvbSh7bGVuZ3RoOiB0aGlzLmFjdGl2ZUZvcm1JbnB1dHMubGVuZ3RoIC0gaW5pdGlhbFZpc2libGVGaWVsZHN9LCAoXywgaSkgPT4gaSArIGluaXRpYWxWaXNpYmxlRmllbGRzKTtcclxuICAgICAgY29uc3QgY29uZGl0aW9uYWxGaWVsZHMgPSBjb25kaXRpb25hbEZpZWxkSW5kaWNlcy5tYXAoaW5kZXggPT4gdGhpcy5hY3RpdmVGb3JtSW5wdXRzW2luZGV4XSkuZmlsdGVyKEJvb2xlYW4pO1xyXG4gICAgICB2aXNpYmxlRmllbGRzLnB1c2goLi4uY29uZGl0aW9uYWxGaWVsZHMpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvLyBDaGVjayBpZiBhbGwgdmlzaWJsZSBmaWVsZHMgaGF2ZSB2YWx1ZXMgdXNpbmcgdGhlaXIga2V5c1xyXG4gICAgY29uc3QgYWxsRmllbGRzRmlsbGVkID0gdmlzaWJsZUZpZWxkcy5ldmVyeShmaWVsZCA9PiB7XHJcbiAgICAgIGNvbnN0IGZpZWxkS2V5ID0gZmllbGQua2V5O1xyXG4gICAgICBjb25zdCBmaWVsZFZhbHVlID0gdGhpcy5tb2RlbFtmaWVsZEtleV07XHJcbiAgICAgIFxyXG4gICAgICBpZiAoIWZpZWxkVmFsdWUpIHJldHVybiBmYWxzZTtcclxuICAgICAgXHJcbiAgICAgIC8vIEZvciBzdHJpbmcgdmFsdWVzLCBjaGVjayBpZiBub3QgZW1wdHkgYWZ0ZXIgdHJpbVxyXG4gICAgICBpZiAodHlwZW9mIGZpZWxkVmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgcmV0dXJuIGZpZWxkVmFsdWUudHJpbSgpICE9PSAnJztcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgLy8gRm9yIGFycmF5cyAobXVsdGktc2VsZWN0KSwgY2hlY2sgaWYgbm90IGVtcHR5XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGZpZWxkVmFsdWUpKSB7XHJcbiAgICAgICAgcmV0dXJuIGZpZWxkVmFsdWUubGVuZ3RoID4gMDtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9KTtcclxuICAgIFxyXG4gICAgY29uc3QgZm9ybVZhbGlkID0gdGhpcy5mb3JtLnZhbGlkO1xyXG5cclxuICAgIHJldHVybiBhbGxGaWVsZHNGaWxsZWQgJiYgZm9ybVZhbGlkO1xyXG4gIH1cclxuICBcclxufVxyXG4iLCJAaWYgKGJhbm5lckNvbnRlbnQoKTsgYXMgY29udGVudCkge1xyXG4gIDxkaXYgY2xhc3M9XCJlcnJvci1wYWdlIG1lc3NhZ2UtYmFubmVyLXYyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1jb250YWluZXJcIiBbbmdTdHlsZV09XCJ7IGdhcDogY29udGVudEdhcCB8fCAndmFyKC0tbWVkaXVtLTMycHgsIDMycHgpJyB9XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZS1jb250YWluZXJcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cInsgJ21hcmdpbi1ib3R0b20nOiBzcGFjaW5nQmV0d2VlbkltYWdlQW5kRGVzY3JpcHRpb24gPz8gJ3ZhcigtLXNtYWxsLTE2cHgsIDE2cHgpJyB9XCI+XHJcbiAgICAgICAgPGltZyBbc3JjXT1cImNvbnRlbnQubWVzc2FnZUljb25cIiBbYWx0XT1cImNvbnRlbnQudHlwZSArICcgaW1hZ2UnXCJcclxuICAgICAgICAgIFtzdHlsZS4tLW1lc3NhZ2UtaWNvbi1oZWlnaHRdPVwiY29udGVudC5tZXNzYWdlSWNvblNpemU/LmhlaWdodFwiXHJcbiAgICAgICAgICBbc3R5bGUuLS1tZXNzYWdlLWljb24td2lkdGhdPVwiY29udGVudC5tZXNzYWdlSWNvblNpemU/LndpZHRoXCIgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWxzXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlLWRlc2NyaXB0aW9uXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtY2xhc3NcIiBbbmdDbGFzc109XCJ0aXRsZUNsYXNzIHx8ICd0aXRsZS1jbGFzcydcIiBbaW5uZXJIVE1MXT1cImNvbnRlbnQudGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgIDxwIGNsYXNzPVwiZGVzY3JpcHRpb25cIiBbbmdDbGFzc109XCJkZXNjcmlwdGlvbkNsYXNzIHx8ICdkZXNjcmlwdGlvbidcIiBbaW5uZXJIVE1MXT1cImNvbnRlbnQuZGVzY3JpcHRpb25cIj48L3A+IFxyXG4gICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7IG1hcmdpbjogYmFubmVyPy5zcGFjaW5nICsgJ3B4IDBweCcgfVwiPlxyXG4gICAgICAgICAgICA8c2EtbWVzc2FnZS1iYW5uZXIgKm5nSWY9XCIhaXNFbXB0eU9iamVjdChiYW5uZXIpXCIgW3R5cGVdPVwiYmFubmVyPy50eXBlXCIgW2Jhbm5lckljb25dPVwiYmFubmVyPy5iYW5uZXJJY29uXCIgW2J1dHRvbkljb25dPVwiYmFubmVyPy5idXR0b25JY29uXCJcclxuICAgICAgICAgICAgICBbYmFubmVySWNvblNpemVdPVwiYmFubmVyPy5iYW5uZXJJY29uU2l6ZVwiIFtidXR0b25UeXBlXT1cImJhbm5lcj8uYnV0dG9uVHlwZVwiIFtidXR0b25TaXplXT1cImJhbm5lcj8uYnV0dG9uU2l6ZVwiIFtidXR0b25JY29uUG9zaXRpb25dPVwiYmFubmVyPy5idXR0b25JY29uUG9zaXRpb25cIlxyXG4gICAgICAgICAgICAgIFtidXR0b25JY29uU2l6ZV09XCJiYW5uZXI/LmJ1dHRvbkljb25TaXplXCIgW2FjdGlvblRleHRdPVwiYmFubmVyPy5hY3Rpb25UZXh0XCIgPlxyXG4gICAgICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJiYW5uZXI/LnRleHRcIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9zYS1tZXNzYWdlLWJhbm5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgIDwhLS0gRm9ybSBpbnB1dHMgc2VjdGlvbiAtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicHJlYnVpbHRGb3JtRmllbGRzIHx8IGFjdGl2ZUZvcm1JbnB1dHM/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGRzLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgIDwhLS0gUHJlYnVpbHQgZm9ybSBmaWVsZHMgKGRpcmVjdCBjb21wb25lbnQgcmVuZGVyaW5nKSAtLT5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidXNlUHJlYnVpbHRGaWVsZHMoKSAmJiBwcmVidWlsdEZvcm1GaWVsZHNcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcmVidWlsdEZvcm1GaWVsZHNcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICA8IS0tIFVzZSBGb3JtbHkgZm9yIHByb3BlciBmb3JtIHJlbmRlcmluZyAtLT5cclxuICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cImRpYWxvZy1mb3JtXCIgKm5nSWY9XCIhdXNlUHJlYnVpbHRGaWVsZHMoKSAmJiBhY3RpdmVGb3JtSW5wdXRzPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgIDxmb3JtbHktZm9ybSBcclxuICAgICAgICAgICAgICAgICAgW2Zvcm1dPVwiZm9ybVwiIFxyXG4gICAgICAgICAgICAgICAgICBbZmllbGRzXT1cImFsbEZvcm1seUZpZWxkc1wiIFxyXG4gICAgICAgICAgICAgICAgICBbbW9kZWxdPVwibW9kZWxcIlxyXG4gICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwib25Gb3JtTW9kZWxDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgPC9mb3JtbHktZm9ybT5cclxuICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIEN1c3RvbSBmb3JtIGJ1dHRvbihzKSAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWJ1dHRvbi1jb250YWluZXJcIiAqbmdJZj1cImFjdGl2ZUN1c3RvbUZvcm1CdXR0b24gJiYgIXVzZVByZWJ1aWx0RmllbGRzKClcIj5cclxuICAgICAgICAgICAgPCEtLSBTdXBwb3J0IGJvdGggc2luZ2xlIGJ1dHRvbiBhbmQgYXJyYXkgb2YgYnV0dG9ucyAtLT5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzQnV0dG9uQXJyYXkoKTsgZWxzZSBzaW5nbGVCdXR0b25cIj5cclxuICAgICAgICAgICAgICA8c2EtYnV0dG9uIFxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBhY3RpdmVDdXN0b21Gb3JtQnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uLWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICBbaWRdPVwiYnV0dG9uLmlkXCJcclxuICAgICAgICAgICAgICAgIFt0ZXh0XT1cImJ1dHRvbi50ZXh0XCJcclxuICAgICAgICAgICAgICAgIFt0eXBlXT1cImJ1dHRvbi50eXBlXCJcclxuICAgICAgICAgICAgICAgIFtzaXplXT1cImJ1dHRvbi5zaXplXCJcclxuICAgICAgICAgICAgICAgIFtzdGF0ZV09XCJidXR0b24uc3RhdGVcIlxyXG4gICAgICAgICAgICAgICAgW0ltYWdlUGF0aF09XCJidXR0b24uSW1hZ2VQYXRoXCJcclxuICAgICAgICAgICAgICAgIFtpY29uUG9zaXRpb25dPVwiYnV0dG9uLmljb25Qb3NpdGlvblwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25CdXR0b25DbGljayhidXR0b24pXCI+XHJcbiAgICAgICAgICAgICAgPC9zYS1idXR0b24+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzaW5nbGVCdXR0b24+XHJcbiAgICAgICAgICAgICAgPHNhLWJ1dHRvbiBjbGFzcz1cImFjdGlvbi1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgW2lkXT1cImFjdGl2ZUN1c3RvbUZvcm1CdXR0b24uaWRcIlxyXG4gICAgICAgICAgICAgICAgW3RleHRdPVwiYWN0aXZlQ3VzdG9tRm9ybUJ1dHRvbi50ZXh0XCJcclxuICAgICAgICAgICAgICAgIFt0eXBlXT1cImFjdGl2ZUN1c3RvbUZvcm1CdXR0b24udHlwZVwiXHJcbiAgICAgICAgICAgICAgICBbc2l6ZV09XCJhY3RpdmVDdXN0b21Gb3JtQnV0dG9uLnNpemVcIlxyXG4gICAgICAgICAgICAgICAgW3N0YXRlXT1cImFjdGl2ZUN1c3RvbUZvcm1CdXR0b24uc3RhdGVcIlxyXG4gICAgICAgICAgICAgICAgW0ltYWdlUGF0aF09XCJhY3RpdmVDdXN0b21Gb3JtQnV0dG9uLkltYWdlUGF0aFwiXHJcbiAgICAgICAgICAgICAgICBbaWNvblBvc2l0aW9uXT1cImFjdGl2ZUN1c3RvbUZvcm1CdXR0b24uaWNvblBvc2l0aW9uXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkJ1dHRvbkNsaWNrKGFjdGl2ZUN1c3RvbUZvcm1CdXR0b24pXCI+XHJcbiAgICAgICAgICAgICAgPC9zYS1idXR0b24+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgIDwhLS0gRGl2aWRlciBzZWN0aW9uIC0tPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRpdmlkZXItc2VjdGlvblwiICpuZ0lmPVwiYWN0aXZlRGl2aWRlciAmJiAhdXNlUHJlYnVpbHRGaWVsZHMoKVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlci1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJkaXZpZGVyLXRpdGxlXCIgKm5nSWY9XCJhY3RpdmVEaXZpZGVyQ29uZmlnLnRpdGxlXCI+e3sgYWN0aXZlRGl2aWRlckNvbmZpZy50aXRsZSB9fTwvaDM+XHJcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJkaXZpZGVyLXN1YnRpdGxlXCIgKm5nSWY9XCJhY3RpdmVEaXZpZGVyQ29uZmlnLnN1YnRpdGxlIHx8IGFjdGl2ZURpdmlkZXJDb25maWcuc2hvd1N1YnRpdGxlV2hlbkVtcHR5XCI+XHJcbiAgICAgICAgICAgICAgICB7eyBhY3RpdmVEaXZpZGVyQ29uZmlnLnN1YnRpdGxlIHx8ICdObyBpdGVtcyBhZGRlZCB5ZXQnIH19XHJcbiAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgICAgICA8IS0tIENoaXBzIHNlY3Rpb24gLS0+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1saXN0XCIgKm5nSWY9XCJhY3RpdmVDaGlwcz8ubGVuZ3RoICYmICF1c2VQcmVidWlsdEZpZWxkcygpXCI+XHJcbiAgICAgICAgICAgIDxzYS1jaGlwIFxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNoaXAgb2YgYWN0aXZlQ2hpcHNcIlxyXG4gICAgICAgICAgICAgICAgW3RleHRdPVwiY2hpcC5sYWJlbCB8fCBjaGlwLnRleHQgfHwgY2hpcFwiXHJcbiAgICAgICAgICAgICAgICBbdHlwZV09XCIncmVndWxhcidcIlxyXG4gICAgICAgICAgICAgICAgW3N0YXRlXT1cIidkZWZhdWx0J1wiXHJcbiAgICAgICAgICAgICAgICBbZmlsbGluZ109XCInZmlsbGVkJ1wiXHJcbiAgICAgICAgICAgICAgICBbaWNvblBvc2l0aW9uXT1cIidyaWdodCdcIlxyXG4gICAgICAgICAgICAgICAgW2ljb25QYXRoXT1cIicuLi9hc3NldHMvY2xvc2VCbHVlT3V0bGluZWQuc3ZnJ1wiXHJcbiAgICAgICAgICAgICAgICAob25DbGlja0V2ZW50KT1cImNoaXAucmVtb3ZhYmxlID8gb25DaGlwUmVtb3ZlKGNoaXApIDogbnVsbFwiPlxyXG4gICAgICAgICAgICAgIDwvc2EtY2hpcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICBcclxuICAgICAgICBAaWYoYnV0dG9ucyl7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1ncm91cFwiPlxyXG4gICAgICAgICAgQGZvciAoYnV0dG9uIG9mIGJ1dHRvbnM7IHRyYWNrIGJ1dHRvbi50ZXh0KSB7XHJcbiAgICAgICAgICAgIDxzYS1idXR0b24gXHJcbiAgICAgICAgICAgICAgW3RleHRdPVwiYnV0dG9uLnRleHRcIlxyXG4gICAgICAgICAgICAgIFtpY29uXT1cImJ1dHRvbi5pY29uXCJcclxuICAgICAgICAgICAgICBbc2l6ZV09XCJidXR0b24uc2l6ZVwiXHJcbiAgICAgICAgICAgICAgW3R5cGVdPVwiYnV0dG9uLnR5cGVcIlxyXG4gICAgICAgICAgICAgIFtpY29uUG9zaXRpb25dPVwiYnV0dG9uLmljb25Qb3NpdGlvblwiXHJcbiAgICAgICAgICAgICAgW2J1dHRvbkljb25TaXplXT1cImJ1dHRvbi5idXR0b25JY29uU2l6ZVwiXHJcbiAgICAgICAgICAgICAgKG9uQ2xpY2tFdmVudCk9XCJvbkJ1dHRvbkNsaWNrKGJ1dHRvbiwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgW3N0YXRlXT1cIiFhcmVBbGxWaXNpYmxlRmllbGRzRmlsbGVkKCkgPyAnZGlzYWJsZWQnIDogJydcIlxyXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYnV0dG9uLnRleHRcIj5cclxuICAgICAgICAgICAgPC9zYS1idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIH0iXX0=
@@ -2758,7 +2758,7 @@ class MessageBannerV2Component {
2758
2758
  }
2759
2759
  }
2760
2760
  initializeCleanFormState() {
2761
- this.model = {};
2761
+ // this.model = {};
2762
2762
  setTimeout(() => {
2763
2763
  Object.keys(this.form.controls).forEach(key => {
2764
2764
  const control = this.form.get(key);