tango-app-ui-manage-users 3.7.0-alpha.15 → 3.7.0-alpha.17

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.
@@ -87,7 +87,7 @@ export class AddUsersComponent {
87
87
  this.destroy.complete();
88
88
  }
89
89
  ngOnInit() {
90
- console.log(this.type);
90
+ // console.log(this.type)
91
91
  let data;
92
92
  if ("header-filters" in localStorage) {
93
93
  data = JSON.parse(localStorage.getItem('header-filters') || '');
@@ -370,7 +370,7 @@ export class AddUsersComponent {
370
370
  next: (res) => {
371
371
  if (res && res.code == 200 && res.data?.result?.length > 0) {
372
372
  this.user["teams"] = res.data.result;
373
- this.activeModal.close();
373
+ // this.activeModal.close();
374
374
  const modalRef = this.modalService.open(AlertPopupComponent, { centered: true, size: 'md', backdrop: "static" });
375
375
  modalRef.componentInstance.user = this.user;
376
376
  modalRef.result.then((result) => {
@@ -430,8 +430,8 @@ export class AddUsersComponent {
430
430
  next: (res) => {
431
431
  if (res && res.code == 200 && res.data.result?.length > 0) {
432
432
  this.user["teams"] = res.data.result;
433
- this.activeModal.close();
434
- console.log({ user: this.user, role1: mapping[oldRole], role2: mapping[updatedRole], mesg: ".............2", role: user?.role });
433
+ // this.activeModal.close();
434
+ // console.log({user:this.user, role1:mapping[oldRole], role2:mapping[updatedRole],mesg:".............2", role:user?.role})
435
435
  const modalRef = this.modalService.open(AlertPopupComponent, { centered: true, size: 'md', backdrop: "static" });
436
436
  modalRef.componentInstance.user = this.user;
437
437
  modalRef.result.then((result) => {
@@ -485,7 +485,7 @@ export class AddUsersComponent {
485
485
  });
486
486
  }
487
487
  else {
488
- this.activeModal.close();
488
+ // this.activeModal.close();
489
489
  const modalRef = this.modalService.open(AlertPopupComponent, { centered: true, size: 'md', backdrop: "static" });
490
490
  modalRef.componentInstance.user = this.user;
491
491
  modalRef.result.then((result) => {
@@ -644,4 +644,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
644
644
  }], data: [{
645
645
  type: Input
646
646
  }] } });
647
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXVzZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS11c2Vycy9zcmMvbGliL2NvbXBvbmVudHMtdjIvYWRkLXVzZXJzL2FkZC11c2Vycy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2UtdXNlcnMvc3JjL2xpYi9jb21wb25lbnRzLXYyL2FkZC11c2Vycy9hZGQtdXNlcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsT0FBTyxFQUFnQixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHeEQsT0FBTyxFQUEwQixXQUFXLEVBQWEsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLNUYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0ZBQWtGLENBQUM7Ozs7Ozs7Ozs7QUFNdkgsTUFBTSxPQUFPLGlCQUFpQjtJQXlEUjtJQUNWO0lBQ0Q7SUFDQztJQUNBO0lBQ0E7SUFDRDtJQUNBO0lBL0RRLE9BQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQ2hDLElBQUksQ0FBTTtJQUNWLElBQUksQ0FBTTtJQUNWLFFBQVEsQ0FBTTtJQUNkLElBQUksQ0FBTTtJQUNuQixRQUFRLENBQVk7SUFDcEIsYUFBYSxHQUFXLEtBQUssQ0FBQztJQUM5QixRQUFRLEdBQVEsRUFBRSxDQUFBO0lBQ2xCLFdBQVcsQ0FBTTtJQUNqQixZQUFZLEdBQVEsRUFBRSxDQUFDO0lBQ3ZCLFVBQVUsR0FBVyxrQkFBa0IsQ0FBQztJQUN4QyxVQUFVLEdBQVcsNEJBQTRCLENBQUM7SUFDbEQsU0FBUyxDQUFNO0lBQ2YsY0FBYyxDQUFNO0lBQ0gsUUFBUSxHQUFHLElBQUksT0FBTyxF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TUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUN0QixNQUFNLEtBQUssR0FBRyxrQkFBa0IsQ0FBQztRQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNwQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDeEI7SUFDSCxDQUFDO0lBRUMsb0JBQW9CLENBQUMsS0FBcUI7UUFDNUMsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsSUFBTSxNQUFjLENBQUMsZUFBZSxDQUFDLENBQUM7UUFBQSxDQUFDO1FBQ2hGLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakQsTUFBTSxLQUFLLEdBQUcsbUJBQW1CLENBQUM7UUFDbEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDM0IsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLHFDQUFxQyxDQUFDLENBQUM7U0FDOUQ7SUFDRCxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQVk7UUFDdkIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3pCLENBQUM7d0dBN29CVSxpQkFBaUI7NEZBQWpCLGlCQUFpQixpSUNmOUIsaXdiQXlLVTs7NEZEMUpHLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxlQUFlOzJSQU1oQixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgTWFuYWdlVXNlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMtdjIvbWFuYWdlLXVzZXJzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOZ2JBY3RpdmVNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgVXNlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91c2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktc2hhcmVkJztcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSBcIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwXCI7XHJcbmltcG9ydCB7IEFsZXJ0UG9wdXBDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL3RhbmdvLW1hbmFnZS11c2Vycy91c2VyLXRhYmxlL2FsZXJ0LXBvcHVwL2FsZXJ0LXBvcHVwLmNvbXBvbmVudCc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWFkZC11c2VycycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZC11c2Vycy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2FkZC11c2Vycy5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEFkZFVzZXJzQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgQElucHV0KCkgdHlwZTogYW55O1xyXG4gIEBJbnB1dCgpIHVzZXI6IGFueTtcclxuICBASW5wdXQoKSB1c2VyVHlwZTogYW55O1xyXG4gIEBJbnB1dCgpIGRhdGE6IGFueTtcclxuICB1c2VyRm9ybTogRm9ybUdyb3VwO1xyXG4gIG9wZXJhdGlvblR5cGU6IHN0cmluZyA9ICdhZGQnO1xyXG4gIHRlYW1MaXN0OiBhbnkgPSBbXVxyXG4gIGNvdW50cnlMaXN0OiBhbnk7XHJcbiAgc2VsZWN0ZWRVc2VyOiBhbnkgPSBbXTtcclxuICBwaG9uZVJlZ2V4OiBSZWdFeHAgPSAvXihcXGR7M30pP1xcZHsxNX0kLztcclxuICBlbWFpbFJlZ2V4OiBSZWdFeHAgPSAvXlteXFxzQF0rQFteXFxzQF0rXFwuW15cXHNAXSskLztcclxuICB1c2VyX2RhdGE6IGFueTtcclxuICAkaGVhZGVyRmlsdGVyczogYW55O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIHBlcm1pc3Npb25BcnJheSA9IFtcclxuICAgIHtcclxuICAgICAgZmVhdHVyZU5hbWU6IFwiR2xvYmFsXCIsXHJcbiAgICAgIG1vZHVsZXM6IFtcclxuICAgICAgICB7IG5hbWU6IFwiU3RvcmVcIiwgaXNBZGQ6IGZhbHNlLCBpc0VkaXQ6IGZhbHNlIH0sXHJcbiAgICAgICAgeyBuYW1lOiBcIlVzZXJcIiwgaXNBZGQ6IGZhbHNlLCBpc0VkaXQ6IGZhbHNlIH0sXHJcbiAgICAgICAgeyBuYW1lOiBcIkNhbWVyYVwiLCBpc0FkZDogZmFsc2UsIGlzRWRpdDogZmFsc2UgfSxcclxuICAgICAgICB7IG5hbWU6IFwiQ29uZmlndXJhdGlvblwiLCBpc0FkZDogZmFsc2UsIGlzRWRpdDogZmFsc2UgfSxcclxuICAgICAgICB7IG5hbWU6IFwiU3Vic2NyaXB0aW9uXCIsIGlzQWRkOiBmYWxzZSwgaXNFZGl0OiBmYWxzZSB9LFxyXG4gICAgICAgIHsgbmFtZTogXCJCaWxsaW5nXCIsIGlzQWRkOiBmYWxzZSwgaXNFZGl0OiBmYWxzZSB9LFxyXG4gICAgICBdXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBmZWF0dXJlTmFtZTogXCJUYW5nb0V5ZVwiLFxyXG4gICAgICBtb2R1bGVzOiBbXHJcblxyXG4gICAgICAgIHsgbmFtZTogXCJab25lVGFnXCIsIGlzQWRkOiBmYWxzZSwgaXNFZGl0OiBmYWxzZSB9LFxyXG4gICAgICBdXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBmZWF0dXJlTmFtZTogXCJUYW5nb1RyYXhcIixcclxuICAgICAgbW9kdWxlczogW1xyXG4gICAgICAgIHsgbmFtZTogXCJjaGVja2xpc3RcIiwgaXNBZGQ6IGZhbHNlLCBpc0VkaXQ6IGZhbHNlIH0sXHJcbiAgICAgICAgeyBuYW1lOiBcIlRhc2tcIiwgaXNBZGQ6IGZhbHNlLCBpc0VkaXQ6IGZhbHNlIH0sXHJcbiAgICAgIF1cclxuICAgIH0sXHJcblxyXG4gIF07XHJcblxyXG4gIGhhbmRsZVZpZXdDaGFuZ2UobW9kdWxlczogRm9ybUdyb3VwIHwgYW55KTogdm9pZCB7XHJcbiAgICBpZiAoIW1vZHVsZXMuZ2V0KFwiaXNBZGRcIik/LnZhbHVlKSB7XHJcbiAgICAgIG1vZHVsZXMuZ2V0KFwiaXNEZWxldGVcIik/LnNldFZhbHVlKGZhbHNlKTtcclxuICAgICAgbW9kdWxlcy5nZXQoXCJpc0VkaXRcIik/LnNldFZhbHVlKGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcbiAgaGFuZGxlRWRpdENoYW5nZShtb2R1bGVzOiBGb3JtR3JvdXAgfCBhbnkpOiB2b2lkIHtcclxuICAgIGlmICghbW9kdWxlcy5nZXQoXCJpc0VkaXRcIik/LnZhbHVlKSB7XHJcbiAgICAgIG1vZHVsZXMuZ2V0KFwiaXNEZWxldGVcIik/LnNldFZhbHVlKGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2VydmljZTogTWFuYWdlVXNlcnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgYWN0aXZlTW9kYWw6IE5nYkFjdGl2ZU1vZGFsLFxyXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgdHM6IFRvYXN0U2VydmljZSxcclxuICAgIHB1YmxpYyBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLFxyXG4gICAgcHVibGljIG1vZGFsU2VydmljZTogTmdiTW9kYWxcclxuICApIHtcclxuXHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuZGVzdHJveS5uZXh0KGZhbHNlKTtcclxuICAgIHRoaXMuZGVzdHJveS5jb21wbGV0ZSgpO1xyXG5cclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLnR5cGUpXHJcbiAgICBsZXQgZGF0YTogYW55O1xyXG4gICAgaWYgKFwiaGVhZGVyLWZpbHRlcnNcIiBpbiBsb2NhbFN0b3JhZ2UpIHtcclxuICAgICAgZGF0YSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2hlYWRlci1maWx0ZXJzJykgfHwgJycpO1xyXG4gICAgfVxyXG4gICAgdGhpcy51c2VyX2RhdGEgPSBKU09OPy5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndXNlci1pbmZvJykgfHwgJycpO1xyXG4gICAgdGhpcy4kaGVhZGVyRmlsdGVycyA9IGRhdGEgPyBkYXRhIDogdGhpcy51c2VyX2RhdGE7XHJcbiAgIFxyXG4gICAgdGhpcy5nZXRSb2xlcygpO1xyXG4gICAgdGhpcy5nZXRBbGxUZWFtc0xpc3QoKVxyXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gXCJ2aWV3XCIgfHwgKHRoaXMudHlwZSA9PT0gXCJlZGl0XCIpKSB7XHJcbiAgICAgIHRoaXMubG9hZFVzZXJGb3JtKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmluaXRVc2VyRm9ybSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5nZXRDb3VudHJ5Q29kZXMoKTtcclxuICB9XHJcblxyXG4gIGdldFJvbGVzKCkge1xyXG4gICAgaWYgKHRoaXMudXNlclR5cGUgPT09ICd0YW5nbycpIHtcclxuICAgICAgdGhpcy5wZXJtaXNzaW9uQXJyYXkucHVzaCh7XHJcbiAgICAgICAgZmVhdHVyZU5hbWU6IFwiVGFuZ29BZG1pblwiLFxyXG4gICAgICAgIG1vZHVsZXM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogXCJpbnZvaWNlQXBwcm92YWxcIiwgaXNBZGQ6IGZhbHNlLFxyXG4gICAgICAgICAgICBpc0VkaXQ6IGZhbHNlXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiBcIkVkaXRCaWxsaW5nXCIsIGlzQWRkOiBmYWxzZSxcclxuICAgICAgICAgICAgaXNFZGl0OiBmYWxzZVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogXCJUaWNrZXRDb25maWd1cmF0aW9uXCIsIGlzQWRkOiBmYWxzZSxcclxuICAgICAgICAgICAgaXNFZGl0OiBmYWxzZVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogXCJSZXBvcnRzXCIsIGlzQWRkOiBmYWxzZSxcclxuICAgICAgICAgICAgaXNFZGl0OiBmYWxzZVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICBdXHJcbiAgICAgIH0sKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb21pdF9zcGVjaWFsX2NoYXIoZXZlbnQ6IGFueSkge1xyXG4gICAgdmFyIGs7XHJcbiAgICBrID0gZXZlbnQuY2hhckNvZGU7XHJcbiAgICByZXR1cm4gayA9PSA4IHx8IGsgPT0gMzIgfHwgKGsgPj0gNDggJiYgayA8PSA1Nyk7XHJcbiAgfVxyXG5cclxuICBvblJvbGVDaGFuZ2Uocm9sZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmdldFVzZXJQZXJtaXNzaW9uRGF0YShyb2xlLCB0aGlzLnVzZXJfZGF0YS51c2VyVHlwZSk7XHJcbiAgfVxyXG4gIGdldENvdW50cnlDb2RlcygpIHtcclxuICAgIHRoaXMuc2VydmljZS5nZXRBbGxDb3VudHJpZXMoKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb3VudHJ5TGlzdCA9IHJlcy5kYXRhXHJcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKClcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIG9ucm9sZWNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICBpZiAoZXZlbnQudGFyZ2V0LnZhbHVlID09PSAndXNlcicpIHtcclxuICAgICAgdGhpcy5wb3B1bGF0ZVBlcm1pc3Npb24odGhpcy5wZXJtaXNzaW9uQXJyYXkpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcbiAgb25TdG9yZVNlbGVjdChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkVXNlciA9IGV2ZW50XHJcbiAgICBjb25zdCB0ZWFtTGVhZEFycmF5ID0gdGhpcy51c2VyRm9ybS5nZXQoJ3RlYW1MZWFkJykgYXMgRm9ybUFycmF5O1xyXG4gICAgdGVhbUxlYWRBcnJheS5jbGVhcigpOyAvLyBDbGVhcnMgZXhpc3RpbmcgdmFsdWVzXHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZFVzZXIuZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XHJcbiAgICAgIHRlYW1MZWFkQXJyYXkucHVzaChuZXcgRm9ybUNvbnRyb2wodXNlcikpOyAvLyBBZGRzIGVhY2ggdXNlciBpbiBzZWxlY3RlZFVzZXIgYXJyYXlcclxuICAgIH0pO1xyXG4gICAgO1xyXG4gICAgLy8gdGhpcy5zZXRUZWFtTGVhZHMoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgY2FuY2VsKCkge1xyXG4gICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgnc3VibWl0Jyk7XHJcbiAgICBjb25zdCB0cmlnZ2VyQnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3RyaWdnZXJCdXR0b25JZCcpIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgdHJpZ2dlckJ1dHRvbj8uZm9jdXMoKTtcclxuICB9XHJcblxyXG4gIG1hc2tFbWFpbCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICghdmFsdWUgfHwgIXZhbHVlLmluY2x1ZGVzKCdAJykpIHJldHVybiAnJztcclxuICAgIGNvbnN0IFtsb2NhbCwgZG9tYWluXSA9IHZhbHVlLnNwbGl0KCdAJyk7XHJcbiAgICBjb25zdCB2aXNpYmxlTGVuZ3RoID0gTWF0aC5taW4oMywgbG9jYWwubGVuZ3RoKTtcclxuICAgIGNvbnN0IHZpc2libGVQYXJ0ID0gbG9jYWwuc2xpY2UoMCwgdmlzaWJsZUxlbmd0aCk7XHJcbiAgICBjb25zdCBtYXNrZWRQYXJ0ID0gJyonLnJlcGVhdChsb2NhbC5sZW5ndGggLSB2aXNpYmxlTGVuZ3RoKTtcclxuICAgIHJldHVybiBgJHt2aXNpYmxlUGFydH0ke21hc2tlZFBhcnR9QCR7ZG9tYWlufWA7XHJcbiAgfVxyXG4gIFxyXG4gIG1hc2tNb2JpbGUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXZhbHVlIHx8IHZhbHVlLmxlbmd0aCA8PSA0KSByZXR1cm4gJyonLnJlcGVhdCh2YWx1ZS5sZW5ndGgpO1xyXG4gICAgY29uc3QgZmlyc3QyID0gdmFsdWUuc2xpY2UoMCwgMik7XHJcbiAgICBjb25zdCBsYXN0MiA9IHZhbHVlLnNsaWNlKC0yKTtcclxuICAgIGNvbnN0IG1hc2tlZE1pZGRsZSA9ICcqJy5yZXBlYXQodmFsdWUubGVuZ3RoIC0gNCk7XHJcbiAgICByZXR1cm4gYCR7Zmlyc3QyfSR7bWFza2VkTWlkZGxlfSR7bGFzdDJ9YDtcclxuICB9XHJcbiAgbG9hZFVzZXJGb3JtKCkge1xyXG4gICAgdGhpcy51c2VyU2VydmljZS5nZXRVc2VyKHRoaXMudXNlci5lbWFpbCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwICYmIHJlcy5kYXRhLnJlc3VsdCkge1xyXG4gICAgICAgICAgY29uc3QgdXNlckRhdGEgPSByZXMuZGF0YS5yZXN1bHQ7XHJcbiAgICAgICAgICBjb25zdCBpc1ZpZXdNb2RlID0gdGhpcy50eXBlID09PSAndmlldyc7XHJcbiAgICAgICAgICBjb25zdCBpc1N1cGVyYWRtaW4gPSB0aGlzLnVzZXJfZGF0YT8ucm9sZSA9PT0gJ3N1cGVyYWRtaW4nO1xyXG4gIFxyXG4gICAgICAgICAgY29uc3QgZW1haWwgPSAoaXNWaWV3TW9kZSAmJiAhaXNTdXBlcmFkbWluKSA/IHRoaXMubWFza0VtYWlsKHVzZXJEYXRhLmVtYWlsKSA6IHVzZXJEYXRhLmVtYWlsO1xyXG4gICAgICAgICAgY29uc3QgbW9iaWxlID0gKGlzVmlld01vZGUgJiYgIWlzU3VwZXJhZG1pbikgPyB0aGlzLm1hc2tNb2JpbGUodXNlckRhdGEubW9iaWxlTnVtYmVyKSA6IHVzZXJEYXRhLm1vYmlsZU51bWJlcjtcclxuICAgICAgICAgIHRoaXMub3JpZ2luYWxFbWFpbCA9IHVzZXJEYXRhLmVtYWlsO1xyXG4gICAgICAgICAgdGhpcy5vcmlnaW5hbE1vYmlsZSA9IHVzZXJEYXRhLm1vYmlsZU51bWJlcjsgXHJcbiAgICAgICAgICB0aGlzLnVzZXJGb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgICAgIHVzZXJOYW1lOiBbcmVzLmRhdGEucmVzdWx0LnVzZXJOYW1lLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgZW1haWw6IFtlbWFpbCwgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgIFZhbGlkYXRvcnMucGF0dGVybihcIl5bYS16QS1aMC05XSsoWy4tX10/W2EtekEtWjAtOV0rKSpAW2EtekEtWjAtOV0rKFsuLV9dP1thLXpBLVpdKykqWy5dezF9W2EtekEtWl17Mix9JFwiKSxcclxuICAgICAgICAgIF0pXSxcclxuICAgICAgICAgICAgbW9iaWxlTnVtYmVyOiBbbW9iaWxlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoOCksVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTMpXSBdLFxyXG4gICAgICAgICAgICByb2xlOiBbcmVzLmRhdGEucmVzdWx0LnJvbGUsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgICB1c2VyVHlwZTogW3Jlcy5kYXRhLnJlc3VsdC51c2VyVHlwZSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgIHJvbGVzcGVybWlzc2lvbjogdGhpcy5mYi5hcnJheShbXSwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXHJcbiAgICAgICAgICAgIHRlYW1MZWFkOiB0aGlzLmZiLmFycmF5KFtdKSxcclxuICAgICAgICAgICAgY291bnRyeUNvZGU6IFtyZXMuZGF0YS5yZXN1bHQuY291bnRyeUNvZGUsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZVRhbmdvdXNlckZpZWxkKHJlcy5kYXRhLnJlc3VsdC50YW5nb1VzZXJUeXBlKTtcclxuICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT0gXCJ2aWV3XCIpIHtcclxuICAgICAgICAgICAgdGhpcy51c2VyRm9ybS5kaXNhYmxlKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnVzZXJGb3JtLmdldChcImVtYWlsXCIpPy5kaXNhYmxlKCk7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVXNlciA9IHJlcy5kYXRhLnRlYW1zTGlzdFxyXG4gICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRVc2VyLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLnNldFRlYW1MZWFkcyh0aGlzLnNlbGVjdGVkVXNlcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgIC8vIHRoaXMudXNlckZvcm0uZ2V0KCd0ZWFtTGVhZCcpPy5zZXRWYWx1ZSgpO1xyXG4gICAgICAgICAgdGhpcy5wb3B1bGF0ZVBlcm1pc3Npb24ocmVzPy5kYXRhPy5yZXN1bHQ/LnJvbGVzcGVybWlzc2lvbik7XHJcbiAgICAgICAgICAvLyB9KTtcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5vcGVyYXRpb25UeXBlID09IFwidmlld1wiKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXNlckZvcm0uZGlzYWJsZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy51c2VyRm9ybS5nZXQoXCJlbWFpbFwiKT8uZGlzYWJsZSgpO1xyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAvLyB0aGlzLmdldFVzZXJQZXJtaXNzaW9uRGF0YShyZXMuZGF0YS5yZXN1bHQucm9sZSxyZXMuZGF0YS5yZXN1bHQudXNlclR5cGUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmluaXRVc2VyRm9ybSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmluaXRVc2VyRm9ybSgpO1xyXG4gICAgICB9LFxyXG4gICAgICBjb21wbGV0ZTogKCkgPT4geyB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVUYW5nb3VzZXJGaWVsZCh0YW5nb1VzZXJUeXBlOmFueSkge1xyXG4gICAgaWYgKHRoaXMudXNlclR5cGUgPT09ICd0YW5nbycpIHtcclxuICAgICAgaWYgKCF0aGlzLnVzZXJGb3JtLmNvbnRhaW5zKCd0YW5nb1VzZXJUeXBlJykpIHtcclxuICAgICAgICB0aGlzLnVzZXJGb3JtLmFkZENvbnRyb2woJ3RhbmdvVXNlclR5cGUnLCB0aGlzLmZiLmNvbnRyb2wodGFuZ29Vc2VyVHlwZSB8fCAnZGFzaGJvYXJkJywgVmFsaWRhdG9ycy5yZXF1aXJlZCkpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy51c2VyRm9ybS5jb250YWlucygndGFuZ29Vc2VyVHlwZScpKSB7XHJcbiAgICAgICAgdGhpcy51c2VyRm9ybS5yZW1vdmVDb250cm9sKCd0YW5nb1VzZXJUeXBlJyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluaXRVc2VyRm9ybSgpIHtcclxuICAgIHRoaXMudXNlckZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgdXNlck5hbWU6IFtcIlwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgZW1haWw6IFtcIlwiLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgIFZhbGlkYXRvcnMucGF0dGVybihcIl5bYS16QS1aMC05XSsoWy4tX10/W2EtekEtWjAtOV0rKSpAW2EtekEtWjAtOV0rKFsuLV9dP1thLXpBLVpdKykqWy5dezF9W2EtekEtWl17Mix9JFwiKSxcclxuICAgICAgXSldLFxyXG4gICAgICBtb2JpbGVOdW1iZXI6IFtcIlwiLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoOCksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEzKV1dLFxyXG4gICAgICByb2xlOiBbXCJ1c2VyXCIsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICB1c2VyVHlwZTogW3RoaXMudXNlclR5cGUsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICByb2xlc3Blcm1pc3Npb246IHRoaXMuZmIuYXJyYXkoW10sIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxyXG4gICAgICB0ZWFtTGVhZDogdGhpcy5mYi5hcnJheShbXSksXHJcbiAgICAgIGNvdW50cnlDb2RlOiBbXCI5MVwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICh0aGlzLnVzZXJUeXBlID09PSAndGFuZ28nKSB7XHJcbiAgICAgIGlmICghdGhpcy51c2VyRm9ybS5jb250YWlucygndGFuZ29Vc2VyVHlwZScpKSB7XHJcbiAgICAgICAgdGhpcy51c2VyRm9ybS5hZGRDb250cm9sKCd0YW5nb1VzZXJUeXBlJywgdGhpcy5mYi5jb250cm9sKCdkYXNoYm9hcmQnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLnVzZXJGb3JtLmNvbnRhaW5zKCd0YW5nb1VzZXJUeXBlJykpIHtcclxuICAgICAgICB0aGlzLnVzZXJGb3JtLnJlbW92ZUNvbnRyb2woJ3RhbmdvVXNlclR5cGUnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5nZXRVc2VyUGVybWlzc2lvbkRhdGEoXCJ1c2VyXCIsIHRoaXMudXNlcl9kYXRhLnVzZXJUeXBlKTtcclxuICB9XHJcbiAgcG9wdWxhdGVQZXJtaXNzaW9uKHBlcm1pc3Npb25zRGF0YTogYW55W10pIHtcclxuICAgIGNvbnN0IHBlcm1pc3Npb25zID0gdGhpcy51c2VyRm9ybS5nZXQoXCJyb2xlc3Blcm1pc3Npb25cIikgYXMgRm9ybUFycmF5O1xyXG4gICAgcGVybWlzc2lvbnMuY2xlYXIoKTsgIC8vIENsZWFyIGV4aXN0aW5nIGVudHJpZXNcclxuXHJcbiAgICBwZXJtaXNzaW9uc0RhdGEuZm9yRWFjaCgocm9sZXNwZXJtaXNzaW9uOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgZmVhdHVyZUdyb3VwID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgZmVhdHVyZU5hbWU6IFtyb2xlc3Blcm1pc3Npb24/LmZlYXR1cmVOYW1lXSxcclxuICAgICAgICBtb2R1bGVzOiB0aGlzLmZiLmFycmF5KFtdKSwgIC8vIEluaXRpYWxpemUgbW9kdWxlcyBhcyBhIEZvcm1BcnJheVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGNvbnN0IG1vZHVsZXNBcnJheSA9IGZlYXR1cmVHcm91cC5nZXQoXCJtb2R1bGVzXCIpIGFzIEZvcm1BcnJheTtcclxuICAgICAgcm9sZXNwZXJtaXNzaW9uLm1vZHVsZXMuZm9yRWFjaCgobW9kdWxlOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBtb2R1bGVHcm91cCA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgbmFtZTogW21vZHVsZS5uYW1lXSxcclxuICAgICAgICAgIGlzQWRkOiBbeyB2YWx1ZTogbW9kdWxlLmlzQWRkLCBkaXNhYmxlZDogdGhpcy50eXBlID09PSAndmlldycgfV0sIC8vIFNldCBkaXNhYmxlZCBiYXNlZCBvbiB0eXBlXHJcbiAgICAgICAgICBpc0VkaXQ6IFt7IHZhbHVlOiBtb2R1bGUuaXNFZGl0LCBkaXNhYmxlZDogdGhpcy50eXBlID09PSAndmlldycgfV0sIC8vIFNldCBkaXNhYmxlZCBiYXNlZCBvbiB0eXBlXHJcbiAgICAgICAgICAvLyBpc0RlbGV0ZTogW21vZHVsZS5pc0RlbGV0ZV0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgbW9kdWxlc0FycmF5LnB1c2gobW9kdWxlR3JvdXApOyAgLy8gQWRkIGVhY2ggbW9kdWxlIHRvIG1vZHVsZXMgYXJyYXlcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBwZXJtaXNzaW9ucy5wdXNoKGZlYXR1cmVHcm91cCk7ICAvLyBBZGQgZWFjaCBmZWF0dXJlIGdyb3VwIHRvIHBlcm1pc3Npb25zXHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBUcmlnZ2VyIHZhbGlkYXRpb24gYWZ0ZXIgcG9wdWxhdGluZ1xyXG4gICAgcGVybWlzc2lvbnMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGVybWlzc2lvbnMoKTogRm9ybUFycmF5IHtcclxuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMudXNlckZvcm0udmFsdWUpXHJcbiAgICByZXR1cm4gdGhpcy51c2VyRm9ybS5nZXQoXCJyb2xlc3Blcm1pc3Npb25cIikgYXMgRm9ybUFycmF5O1xyXG5cclxuICB9XHJcbiAgZ2V0RmVhdHVyZVBlcm1pc3Npb25zKHJvbGVzcGVybWlzc2lvbjogRm9ybUdyb3VwIHwgYW55KTogRm9ybUFycmF5IHtcclxuICAgIHJldHVybiByb2xlc3Blcm1pc3Npb24uZ2V0KFwibW9kdWxlc1wiKSBhcyBGb3JtQXJyYXk7XHJcbiAgfVxyXG4gIGdldFVzZXJQZXJtaXNzaW9uRGF0YShyb2xlTmFtZTogc3RyaW5nLCB1c2VyVHlwZTogc3RyaW5nKSB7XHJcbiAgICAodGhpcy51c2VyRm9ybT8uZ2V0KFwicm9sZXNwZXJtaXNzaW9uXCIpIGFzIEZvcm1BcnJheSkuY2xlYXIoKTtcclxuICAgIHRoaXMucG9wdWxhdGVQZXJtaXNzaW9uKHRoaXMucGVybWlzc2lvbkFycmF5KTtcclxuICB9XHJcbiAgY2FtZWxDYXNlVG9UZXh0KGlucHV0OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGlucHV0LnJlcGxhY2UoLyhbQS1aXSkvZywgJyAkMScpXHJcbiAgICAgIC5yZXBsYWNlKC9eLi8sIChzdHIpID0+IHN0ci50b1VwcGVyQ2FzZSgpKVxyXG4gICAgICAudHJpbSgpO1xyXG4gIH1cclxub3JpZ2luYWxFbWFpbDogc3RyaW5nID0gJyc7XHJcbm9yaWdpbmFsTW9iaWxlOiBzdHJpbmcgPSAnJztcclxuYWRkVXNlclN1Ym1pdCgpIHtcclxuICBsZXQgdmFsdWUgPSB0aGlzLnVwZGF0ZVBlcm1pc3Npb25zQmFzZWRPblVzZXJUeXBlKHRoaXMudXNlckZvcm0udmFsdWUpO1xyXG4gIGNvbnN0IHVwZGF0ZWREYXRhID0gdGhpcy5yZW1vdmVOdWxsVmFsdWVzKHZhbHVlKTtcclxuXHJcbiAgY29uc3QgY2xpZW50SWQgPSB0aGlzLiRoZWFkZXJGaWx0ZXJzLmNsaWVudCA/IHRoaXMuJGhlYWRlckZpbHRlcnMuY2xpZW50IDogdGhpcy51c2VyX2RhdGEuY2xpZW50SWQ7XHJcblxyXG4gIHRoaXMudXNlclNlcnZpY2UuY3JlYXRlU2luZ2xlVXNlcnMoeyAuLi51cGRhdGVkRGF0YSwgY2xpZW50SWQgfSkuc3Vic2NyaWJlKHtcclxuICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgIHRoaXMudHMuZ2V0U3VjY2Vzc1RvYXN0KFwiVXNlciBjcmVhdGVkIHN1Y2Nlc3NmdWxseS5cIik7XHJcbiAgICAgICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgnc3VibWl0Jyk7XHJcbiAgICAgICAgdGhpcy5ncy5tYW5hZ2VSZWZyZXNoVHJpZ2dlci5uZXh0KHRydWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChcIlVuYWJsZSB0byBjcmVhdGUgVXNlciFcIik7XHJcbiAgICAgICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgnc3VibWl0Jyk7XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChlcnI/LmVycm9yPy5lcnJvciA/IGVycj8uZXJyb3I/LmVycm9yIDogXCJVbmFibGUgdG8gY3JlYXRlIFVzZXIhXCIpO1xyXG4gICAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCk7XHJcbiAgICB9LFxyXG4gICAgY29tcGxldGU6ICgpID0+IHt9XHJcbiAgfSk7XHJcbn1cclxuXHJcbiAgb25TdWJtaXQoKSB7XHJcbiAgICBpZiAodGhpcy50eXBlID09IFwiZWRpdFwiKSB7XHJcbiAgICAgIHRoaXMudXNlclVwZGF0ZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hZGRVc2VyU3VibWl0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHVzZXJVcGRhdGUoKSB7XHJcbnRoaXMudXNlckZvcm0uZ2V0KFwiZW1haWxcIik/LmVuYWJsZSgpO1xyXG5sZXQgdXNlcjogYW55ID0gdGhpcy51c2VyRm9ybS52YWx1ZTtcclxuaWYgKCF1c2VyLm1vYmlsZU51bWJlciB8fCB1c2VyLm1vYmlsZU51bWJlci5pbmNsdWRlcygnKicpKSB7XHJcbiAgdXNlci5tb2JpbGVOdW1iZXIgPSB0aGlzLm9yaWdpbmFsTW9iaWxlO1xyXG59IGVsc2Uge1xyXG4gdXNlci5tb2JpbGVOdW1iZXI7XHJcbn1cclxuXHJcbnVzZXIuZW1haWwgPSB0aGlzLm9yaWdpbmFsRW1haWw7XHJcbnRoaXMudXNlckZvcm0uZ2V0KFwiZW1haWxcIik/LmRpc2FibGUoKTtcclxuXHJcbnR5cGUgUm9sZSA9ICd1c2VyJyB8ICdhZG1pbicgfCAnc3VwZXJhZG1pbic7XHJcbmxldCBtYXBwaW5nOiBSZWNvcmQ8Um9sZSwgbnVtYmVyPiA9IHtcclxuICB1c2VyOiAxLFxyXG4gIGFkbWluOiAyLFxyXG4gIHN1cGVyYWRtaW46IDMsXHJcbn07XHJcblxyXG5sZXQgb2xkUm9sZTogUm9sZSA9IHRoaXMudXNlci5yb2xlO1xyXG5sZXQgdXBkYXRlZFJvbGU6IFJvbGUgPSB1c2VyLnJvbGU7XHJcblxyXG5pZih1c2VyPy5yb2xlICYmIG1hcHBpbmdbb2xkUm9sZV08bWFwcGluZ1t1cGRhdGVkUm9sZV0pe1xyXG50aGlzLnVzZXJbXCJyb2xlU3RhdHVzXCJdID0gXCJ1cFwiXHJcbiAgIHRoaXMuc2VydmljZS5nZXRVc2VyVGVhbXMoe2VtYWlsOnVzZXIuZW1haWwsIHR5cGU6XCJ1c2VyXCJ9KS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCAmJiByZXMuZGF0YT8ucmVzdWx0Py5sZW5ndGggPiAwKSB7ICAgICAgIFxyXG4gICAgICAgICAgdGhpcy51c2VyW1widGVhbXNcIl0gPSByZXMuZGF0YS5yZXN1bHRcclxuICAgICAgICAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCk7XHJcbmNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihBbGVydFBvcHVwQ29tcG9uZW50LCB7IGNlbnRlcmVkOiB0cnVlLCBzaXplOiAnbWQnLCBiYWNrZHJvcDogXCJzdGF0aWNcIiB9KTtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnVzZXIgPSB0aGlzLnVzZXJcclxuXHJcbiAgICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0ID09PSAnc3VibWl0Jykge1xyXG4gICAgICAgICB1c2VyLnRlYW1MZWFkID0gW11cclxuICAgdGhpcy5zZXJ2aWNlLnVwZGF0ZVVzZXJzKHVzZXIpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLnRzLmdldFN1Y2Nlc3NUb2FzdChcclxuICAgICAgICAgICAgXCJVc2VyIGRldGFpbHMgdXBkYXRlZCBzdWNjZXNzZnVsbHkuXCJcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCdzdWJtaXQnKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KFwiVW5hYmxlIHRvIHVwZGF0ZSBVc2VyIVwiKTtcclxuICAgICAgICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KGVycj8uZXJyb3I/LmVycm9yID8gZXJyPy5lcnJvcj8uZXJyb3IgOiBcIlVuYWJsZSB0byB1cGRhdGUgVXNlciFcIik7XHJcbiAgICAgICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgpO1xyXG4gICAgICB9LFxyXG4gICAgICBjb21wbGV0ZTogKCkgPT4geyB9LFxyXG4gICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VydmljZS51cGRhdGVVc2Vycyh1c2VyKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy50cy5nZXRTdWNjZXNzVG9hc3QoXHJcbiAgICAgICAgICAgIFwiVXNlciBkZXRhaWxzIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5LlwiXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgnc3VibWl0Jyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChcIlVuYWJsZSB0byB1cGRhdGUgVXNlciFcIik7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChlcnI/LmVycm9yPy5lcnJvciA/IGVycj8uZXJyb3I/LmVycm9yIDogXCJVbmFibGUgdG8gdXBkYXRlIFVzZXIhXCIpO1xyXG4gICAgICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoKTtcclxuICAgICAgfSxcclxuICAgICAgY29tcGxldGU6ICgpID0+IHsgfSxcclxuICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICB0aGlzLnRzLmdldEVycm9yVG9hc3QoZXJyPy5lcnJvcj8uZXJyb3IgPyBlcnI/LmVycm9yPy5lcnJvciA6IFwiVW5hYmxlIHRvIHVwZGF0ZSBVc2VyIVwiKTtcclxuICAgICAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGNvbXBsZXRlOiAoKSA9PiB7IH0sXHJcbiAgICB9KTtcclxuXHJcbn1lbHNlIGlmKHVzZXI/LnJvbGUgJiYgbWFwcGluZ1tvbGRSb2xlXT5tYXBwaW5nW3VwZGF0ZWRSb2xlXSl7XHJcbnRoaXMudXNlcltcInJvbGVTdGF0dXNcIl0gPSBcImRvd25cIlxyXG5cclxuaWYoIXRoaXMudXNlci5sYXN0T25lKXtcclxuICAgIHRoaXMuc2VydmljZS5nZXRVc2VyVGVhbXMoe2VtYWlsOnVzZXIuZW1haWwsIHR5cGU6XCJsZWFkXCJ9KS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCAmJiByZXMuZGF0YS5yZXN1bHQ/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdGhpcy51c2VyW1widGVhbXNcIl0gPSByZXMuZGF0YS5yZXN1bHRcclxuICAgICAgICAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCk7XHJcbiAgICAgICAgIGNvbnNvbGUubG9nKHt1c2VyOnRoaXMudXNlciwgcm9sZTE6bWFwcGluZ1tvbGRSb2xlXSwgIHJvbGUyOm1hcHBpbmdbdXBkYXRlZFJvbGVdLG1lc2c6XCIuLi4uLi4uLi4uLi4uMlwiLCByb2xlOnVzZXI/LnJvbGV9KVxyXG5jb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oQWxlcnRQb3B1cENvbXBvbmVudCwgeyBjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ21kJywgYmFja2Ryb3A6IFwic3RhdGljXCIgfSk7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS51c2VyID0gdGhpcy51c2VyXHJcblxyXG4gICAgIG1vZGFsUmVmLnJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCA9PT0gJ3N1Ym1pdCcpIHtcclxuICAgICAgICAvLyAgdXNlci50ZWFtTGVhZCA9IFtdXHJcbiAgIHRoaXMuc2VydmljZS51cGRhdGVVc2Vycyh1c2VyKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy50cy5nZXRTdWNjZXNzVG9hc3QoXHJcbiAgICAgICAgICAgIFwiVXNlciBkZXRhaWxzIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5LlwiXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgnc3VibWl0Jyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChcIlVuYWJsZSB0byB1cGRhdGUgVXNlciFcIik7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycjphbnkpID0+IHtcclxuICAgICAgICB0aGlzLnRzLmdldEVycm9yVG9hc3QoZXJyPy5lcnJvcj8uZXJyb3IgPyBlcnI/LmVycm9yPy5lcnJvciA6IFwiVW5hYmxlIHRvIHVwZGF0ZSBVc2VyIVwiKTtcclxuICAgICAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGNvbXBsZXRlOiAoKSA9PiB7IH0sXHJcbiAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLnVwZGF0ZVVzZXJzKHVzZXIpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLnRzLmdldFN1Y2Nlc3NUb2FzdChcclxuICAgICAgICAgICAgXCJVc2VyIGRldGFpbHMgdXBkYXRlZCBzdWNjZXNzZnVsbHkuXCJcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCdzdWJtaXQnKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KFwiVW5hYmxlIHRvIHVwZGF0ZSBVc2VyIVwiKTtcclxuICAgICAgICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KGVycj8uZXJyb3I/LmVycm9yID8gZXJyPy5lcnJvcj8uZXJyb3IgOiBcIlVuYWJsZSB0byB1cGRhdGUgVXNlciFcIik7XHJcbiAgICAgICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgpO1xyXG4gICAgICB9LFxyXG4gICAgICBjb21wbGV0ZTogKCkgPT4geyB9LFxyXG4gICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChlcnI/LmVycm9yPy5lcnJvciA/IGVycj8uZXJyb3I/LmVycm9yIDogXCJVbmFibGUgdG8gdXBkYXRlIFVzZXIhXCIpO1xyXG4gICAgICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoKTtcclxuICAgICAgfSxcclxuICAgICAgY29tcGxldGU6ICgpID0+IHsgfSxcclxuICAgIH0pO1xyXG59ZWxzZXtcclxuICAgICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoKTtcclxuY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEFsZXJ0UG9wdXBDb21wb25lbnQsIHsgY2VudGVyZWQ6IHRydWUsIHNpemU6ICdtZCcsIGJhY2tkcm9wOiBcInN0YXRpY1wiIH0pO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UudXNlciA9IHRoaXMudXNlclxyXG5cclxuICAgICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0ID09PSAnc3VibWl0Jykge1xyXG4gICAgICAgIC8vICB1c2VyLnRlYW1MZWFkID0gW11cclxuICAgdGhpcy5zZXJ2aWNlLnVwZGF0ZVVzZXJzKHVzZXIpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLnRzLmdldFN1Y2Nlc3NUb2FzdChcclxuICAgICAgICAgICAgXCJVc2VyIGRldGFpbHMgdXBkYXRlZCBzdWNjZXNzZnVsbHkuXCJcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCdzdWJtaXQnKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KFwiVW5hYmxlIHRvIHVwZGF0ZSBVc2VyIVwiKTtcclxuICAgICAgICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyOmFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChlcnI/LmVycm9yPy5lcnJvciA/IGVycj8uZXJyb3I/LmVycm9yIDogXCJVbmFibGUgdG8gdXBkYXRlIFVzZXIhXCIpO1xyXG4gICAgICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoKTtcclxuICAgICAgfSxcclxuICAgICAgY29tcGxldGU6ICgpID0+IHsgfSxcclxuICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIFxyXG4gICAgXHJcbn1cclxuXHJcblxyXG59XHJcbmVsc2V7XHJcbiAgdGhpcy5zZXJ2aWNlLnVwZGF0ZVVzZXJzKHVzZXIpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLnRzLmdldFN1Y2Nlc3NUb2FzdChcclxuICAgICAgICAgICAgXCJVc2VyIGRldGFpbHMgdXBkYXRlZCBzdWNjZXNzZnVsbHkuXCJcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCdzdWJtaXQnKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KFwiVW5hYmxlIHRvIHVwZGF0ZSBVc2VyIVwiKTtcclxuICAgICAgICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KGVycj8uZXJyb3I/LmVycm9yID8gZXJyPy5lcnJvcj8uZXJyb3IgOiBcIlVuYWJsZSB0byB1cGRhdGUgVXNlciFcIik7XHJcbiAgICAgICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgpO1xyXG4gICAgICB9LFxyXG4gICAgICBjb21wbGV0ZTogKCkgPT4geyB9LFxyXG4gICAgfSk7XHJcbn1cclxuICAgIFxyXG4gIH1cclxuICB1cGRhdGVQZXJtaXNzaW9uc0Jhc2VkT25Vc2VyVHlwZSh1c2VyOiBhbnkpIHtcclxuICAgIHVzZXIucm9sZXNwZXJtaXNzaW9uLmZvckVhY2goKGZlYXR1cmU6IGFueSkgPT4ge1xyXG4gICAgICBmZWF0dXJlLm1vZHVsZXMuZm9yRWFjaCgobW9kdWxlczogYW55KSA9PiB7XHJcbiAgICAgICAgLy8gaWYgKHVzZXIudXNlclR5cGUgPT09IFwic3VwZXJBZG1pblwiKSB7XHJcbiAgICAgICAgLy8gICBtb2R1bGVzLmlzQWRkID0gdHJ1ZTtcclxuICAgICAgICAvLyAgIG1vZHVsZXMuaXNFZGl0ID0gdHJ1ZTtcclxuICAgICAgICAvLyAgIC8vIG1vZHVsZXMuaXNEZWxldGUgPSB0cnVlO1xyXG4gICAgICAgIC8vIH0gZWxzZSBcclxuICAgICAgICBpZiAodXNlci51c2VyVHlwZSA9PT0gXCJ1c2Vyc1wiKSB7XHJcbiAgICAgICAgICBtb2R1bGVzLmlzQWRkID0gZmFsc2U7XHJcbiAgICAgICAgICBtb2R1bGVzLmlzRWRpdCA9IGZhbHNlO1xyXG4gICAgICAgICAgLy8gbW9kdWxlcy5pc0RlbGV0ZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB1c2VyO1xyXG4gIH1cclxuICByZW1vdmVOdWxsVmFsdWVzID0gKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGEucm9sZXNwZXJtaXNzaW9uKSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQZXJtaXNzaW9uIGlzIG5vdCBhbiBhcnJheVwiKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBNYXAgdGhyb3VnaCB0aGUgcGVybWlzc2lvbnMgYW5kIHByb2R1Y3RzIHRvIHJlbW92ZSBudWxsIHZhbHVlc1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLi4uZGF0YSxcclxuICAgICAgcm9sZXNwZXJtaXNzaW9uOiBkYXRhLnJvbGVzcGVybWlzc2lvbi5tYXAoKGZlYXR1cmU6IGFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAuLi5mZWF0dXJlLFxyXG4gICAgICAgICAgbW9kdWxlczogZmVhdHVyZS5tb2R1bGVzLm1hcCgobW9kdWxlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld1Byb2R1Y3Q6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMobW9kdWxlcykpIHtcclxuICAgICAgICAgICAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIG5ld1Byb2R1Y3Rba2V5XSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbmV3UHJvZHVjdDtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfTtcclxuICAgICAgfSlcclxuICAgIH07XHJcbiAgfTtcclxuICBnZXRBbGxUZWFtc0xpc3QoKSB7XHJcbiAgICB0aGlzLnNlcnZpY2UuZ2V0QWxsVGVhbXNMaXN0KHsgY2xpZW50SWQ6IHRoaXMuJGhlYWRlckZpbHRlcnMuY2xpZW50IH0pLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSkpLnN1YnNjcmliZShcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLnRlYW1MaXN0ID0gcmVzLmRhdGEucmVzdWx0XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gIH1cclxuICBlZGl0VXNlcigpIHtcclxuICAgIGlmICh0aGlzLnVzZXI/LmlzQWN0aXZlKSB7XHJcbiAgICAgIHRoaXMudHlwZSA9IFwiZWRpdFwiO1xyXG4gICAgICB0aGlzLnVzZXJGb3JtLmVuYWJsZSgpO1xyXG4gICAgICB0aGlzLnVzZXJGb3JtLmdldChcImVtYWlsXCIpPy5kaXNhYmxlKCk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudXNlcj8uc3RhdHVzID09PSAnYWN0aXZlJykge1xyXG4gICAgICB0aGlzLnR5cGUgPSBcInZpZXdcIjtcclxuICAgICAgdGhpcy51c2VyRm9ybS5lbmFibGUoKTtcclxuICAgICAgdGhpcy51c2VyRm9ybS5nZXQoXCJlbWFpbFwiKT8uZGlzYWJsZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICBpc0J1dHRvbkRpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgeyB0ZWFtTGVhZCwgLi4uY29udHJvbHNUb0NoZWNrIH0gPSB0aGlzLnVzZXJGb3JtLmNvbnRyb2xzO1xyXG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoY29udHJvbHNUb0NoZWNrKS5zb21lKGNvbnRyb2wgPT4gY29udHJvbC5pbnZhbGlkKTtcclxuICB9XHJcbiAgc2V0VGVhbUxlYWRzKHRlYW1MaXN0OiBhbnlbXSkge1xyXG4gICAgY29uc3QgdGVhbUxlYWRBcnJheSA9IHRoaXMudXNlckZvcm0uZ2V0KCd0ZWFtTGVhZCcpIGFzIEZvcm1BcnJheTtcclxuICAgIHRlYW1MaXN0LmZvckVhY2godGVhbSA9PiB7XHJcbiAgICAgIC8vIFB1c2ggZWFjaCB0ZWFtIG9iamVjdCBhcyBhIG5ldyBGb3JtR3JvdXAgaW50byB0aGUgdGVhbUxlYWQgRm9ybUFycmF5XHJcbiAgICAgIGlmICh0ZWFtLmNsaWVudElkKSB7XHJcbiAgICAgICAgdGVhbUxlYWRBcnJheS5wdXNoKHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgX2lkOiBuZXcgRm9ybUNvbnRyb2wodGVhbS5faWQpLFxyXG4gICAgICAgICAgY2xpZW50SWQ6IG5ldyBGb3JtQ29udHJvbCh0ZWFtLmNsaWVudElkKSxcclxuICAgICAgICAgIHRlYW1OYW1lOiBuZXcgRm9ybUNvbnRyb2wodGVhbS50ZWFtTmFtZSksXHJcbiAgICAgICAgICB1c2Vyc0NvdW50OiBuZXcgRm9ybUNvbnRyb2wodGVhbS51c2Vyc0NvdW50KVxyXG4gICAgICAgIH0pKTtcclxuICAgICAgfVxyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb21pdFNwZWNpYWxDaGFyKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBjb25zdCBrZXkgPSBldmVudC5rZXk7XHJcbiAgICBjb25zdCByZWdleCA9IC9eW2EtekEtWjAtOSBfLV0kLztcclxuICAgIGlmICghcmVnZXgudGVzdChrZXkpKSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAgIG9taXRTcGVjaWFsQ2hhclBhc3RlKGV2ZW50OiBDbGlwYm9hcmRFdmVudCkge1xyXG4gIGNvbnN0IGNsaXBib2FyZERhdGEgPSBldmVudC5jbGlwYm9hcmREYXRhIHx8ICAod2luZG93IGFzIGFueSlbJ2NsaXBib2FyZERhdGEnXTs7XHJcbiAgY29uc3QgcGFzdGVkVGV4dCA9IGNsaXBib2FyZERhdGEuZ2V0RGF0YSgndGV4dCcpO1xyXG4gIGNvbnN0IHJlZ2V4ID0gL15bYS16QS1aMC05IF8tXSokLztcclxuICBpZiAoIXJlZ2V4LnRlc3QocGFzdGVkVGV4dCkpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLnRzLmdldEVycm9yVG9hc3QoXCJTcGVjaWFsIGNoYXJhY3RlcnMgYXJlIG5vdCBhbGxvd2VkLlwiKTtcclxuICB9XHJcbiAgfVxyXG4gIFxyXG4gIHByZXZlbnRDbG9zZShldmVudDogRXZlbnQpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG5cclxufSIsIjxkaXYgIGNsYXNzPVwiY2FyZCBwdC0wIHBiLTMgc2Nyb2xsXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTAgZC1mbGV4IGZsZXgtc3RhcnQgZmxleC1jb2x1bW4gcC05IFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS01IGQtZmxleFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC03NXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgYWx0PVwiUGljXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvYWRkLXN0b3JlLWljb24uc3ZnXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyB3LTEwMFwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidHlwZSE9PSd2aWV3JyAmJiB0eXBlIT09J2VkaXQnXCIgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZnMtNCB0ZXh0LWdyYXktODAwIHRleHQtaG92ZXItcHJpbWFyeSBmdy1ib2xkIG1iLTAgdGl0bGUgY3Vyc29yLXBvaW50ZXJcIj5BZGRcclxuICAgICAgICAgICAgICAgICAgICBVc2VyPC9hPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi10aXRsZVwiPlBsZWFzZSBhZGQgeW91ciB1c2VyIGRldGFpbHM8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS0gPGRpdiAqbmdJZj1cInR5cGU9PT0nZWRpdCdcIiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJmcy00IHRleHQtZ3JheS04MDAgdGV4dC1ob3Zlci1wcmltYXJ5IGZ3LWJvbGQgbWItMCB0aXRsZSBjdXJzb3ItcG9pbnRlclwiPkVkaXQgVXNlciBEZXRhaWxzPC9hPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi10aXRsZVwiPlBsZWFzZSBFZGl0IHlvdXIgdXNlciBkZXRhaWxzPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInR5cGU9PT0ndmlldycgJiYgdHlwZSAhPT0nZWRpdCdcIiBjbGFzcz1cImNvbC1tZC05XCI+XHJcbiAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImZzLTQgdGV4dC1ncmF5LTgwMCB0ZXh0LWhvdmVyLXByaW1hcnkgZnctYm9sZCBtYi0wIHRpdGxlIGN1cnNvci1wb2ludGVyXCI+VXNlciBEZXRhaWxzPC9hPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi10aXRsZVwiPlZpZXcgeW91ciB1c2VyIGRldGFpbHM8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcGVyYXRpb25UeXBlIT09J3ZpZXcnXCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8YXN5bmMpPy5HbG9iYWxfVXNlcl9pc0VkaXQgJiYgdHlwZSA9PT0ndmlldycgICYmIHR5cGUgIT09J2VkaXQnICYmIHVzZXI/LnJvbGUgIT09ICdzdXBlcmFkbWluJyAmJiB1c2VyPy5pc0FjdGl2ZSA9PSB0cnVlXCIgY2xhc3M9XCJjb2wtbWQtMyB0ZXh0LWVuZCBweC0wXCIgKGNsaWNrKT1cImVkaXRVc2VyKClcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8zODMzXzg1OTA4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkuMTY2MDIgMy4zMzMySDMuMzMyNjhDMi44OTA2NSAzLjMzMzIgMi40NjY3MyAzLjUwODc5IDIuMTU0MTcgMy44MjEzNUMxLjg0MTYxIDQuMTMzOTEgMS42NjYwMiA0LjU1Nzg0IDEuNjY2MDIgNC45OTk4NlYxNi42NjY1QzEuNjY2MDIgMTcuMTA4NiAxLjg0MTYxIDE3LjUzMjUgMi4xNTQxNyAxNy44NDVDMi40NjY3MyAxOC4xNTc2IDIuODkwNjUgMTguMzMzMiAzLjMzMjY4IDE4LjMzMzJIMTQuOTk5M0MxNS40NDE0IDE4LjMzMzIgMTUuODY1MyAxOC4xNTc2IDE2LjE3NzkgMTcuODQ1QzE2LjQ5MDQgMTcuNTMyNSAxNi42NjYgMTcuMTA4NiAxNi42NjYgMTYuNjY2NVYxMC44MzMyTTE1LjQxNiAyLjA4MzJDMTUuNzQ3NSAxLjc1MTY4IDE2LjE5NzIgMS41NjU0MyAxNi42NjYgMS41NjU0M0MxNy4xMzQ5IDEuNTY1NDMgMTcuNTg0NSAxLjc1MTY4IDE3LjkxNiAyLjA4MzJDMTguMjQ3NSAyLjQxNDcyIDE4LjQzMzggMi44NjQzNiAxOC40MzM4IDMuMzMzMkMxOC40MzM4IDMuODAyMDQgMTguMjQ3NSA0LjI1MTY4IDE3LjkxNiA0LjU4MzJMOS45OTkzNSAxMi40OTk5TDYuNjY2MDIgMTMuMzMzMkw3LjQ5OTM1IDkuOTk5ODZMMTUuNDE2IDIuMDgzMlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzM4MzNfODU5MDhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidHlwZT09PSdlZGl0JyAgJiYgdHlwZSAhPT0ndmlldydcIiBjbGFzcz1cImNvbC1tZC05XCI+XHJcbiAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImZzLTQgdGV4dC1ncmF5LTgwMCB0ZXh0LWhvdmVyLXByaW1hcnkgZnctYm9sZCBtYi0wIHRpdGxlIGN1cnNvci1wb2ludGVyXCI+VXNlciBEZXRhaWxzPC9hPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi10aXRsZVwiPkVkaXQgeW91ciB1c2VyIGRldGFpbHM8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBoLTBweCBzY3JvbGxcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC01XCIgKm5nSWY9XCJ1c2VyRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwidXNlckZvcm1cIiBub3ZhbGlkYXRlPVwibm92YWxpZGF0ZVwiIChrZXlkb3duLmVudGVyKT1cInByZXZlbnRDbG9zZSgkZXZlbnQpXCIgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBweC0wIG1lLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gVXNlciBOYW1lIEZpZWxkIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBjb2wteGwtNiBjb2wteHhsLTYgbWItN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwidXNlcm5hbWVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5Vc2VyIE5hbWUgPHNwYW4gY2xhc3M9XCJhbGVydC1yZXF1aXJlZCB0ZXh0LWRhbmdlclwiPio8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInVzZXJuYW1lXCIgZm9ybUNvbnRyb2xOYW1lPVwidXNlck5hbWVcIiBhdXRvY29tcGxldGU9XCJvZmZcIiAoa2V5cHJlc3MpPVwib21pdFNwZWNpYWxDaGFyKCRldmVudClcIiAocGFzdGUpPVwib21pdFNwZWNpYWxDaGFyUGFzdGUoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidXNlckZvcm0uZ2V0KCd1c2VyTmFtZScpPy5pbnZhbGlkICYmICh1c2VyRm9ybS5nZXQoJ3VzZXJOYW1lJyk/LmRpcnR5KVwiIGNsYXNzPVwidGV4dC1kYW5nZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgKm5nSWY9XCJ1c2VyRm9ybS5nZXQoJ3VzZXJOYW1lJyk/LmVycm9ycz8uWydyZXF1aXJlZCddXCI+VXNlciBOYW1lIGlzIHJlcXVpcmVkLjwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEVtYWlsIEZpZWxkIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBjb2wteGwtNiBjb2wteHhsLTYgbWItN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZW1haWxcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5FbWFpbCA8c3BhbiBjbGFzcz1cImFsZXJ0LXJlcXVpcmVkIHRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImVtYWlsXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImVtYWlsXCIgZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxcIiBhdXRvY29tcGxldGU9XCJvZmZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInVzZXJGb3JtLmdldCgnZW1haWwnKT8uaW52YWxpZCAmJiB1c2VyRm9ybS5nZXQoJ2VtYWlsJyk/LnRvdWNoZWRcIiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsICpuZ0lmPVwidXNlckZvcm0uZ2V0KCdlbWFpbCcpPy5lcnJvcnM/LlsncmVxdWlyZWQnXVwiPkVtYWlsIGlzIHJlcXVpcmVkLjwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsICpuZ0lmPVwidXNlckZvcm0uZ2V0KCdlbWFpbCcpPy5lcnJvcnM/LlsncGF0dGVybiddXCI+SW52YWxpZCBlbWFpbCBmb3JtYXQuPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQ29udGFjdCBOdW1iZXIgRmllbGQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IGNvbC14bC02IGNvbC14eGwtNiBtYi03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJjb250YWN0XCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+Q29udGFjdCBOdW1iZXIgPHNwYW4gY2xhc3M9XCJhbGVydC1yZXF1aXJlZCB0ZXh0LWRhbmdlclwiPio8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTQgY29sLXhsLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdCBwcy0zIHBlLThcIiBpZD1cImlucHV0R3JvdXBTZWxlY3QwMVwiIGZvcm1Db250cm9sTmFtZT1cImNvdW50cnlDb2RlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGNvdW50cnkgb2YgY291bnRyeUxpc3RcIiBbdmFsdWVdPVwiY291bnRyeS5waG9uZWNvZGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvdW50cnkubmFtZX19ICh7e2NvdW50cnkucGhvbmVjb2RlfX0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctOCBjb2wteGwtOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwibW9iaWxlTnVtYmVyXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgZm9ybUNvbnRyb2xOYW1lPVwibW9iaWxlTnVtYmVyXCIgbWlubGVuZ3RoPVwiOFwiIG1heGxlbmd0aD1cIjEzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidXNlckZvcm0uZ2V0KCdtb2JpbGVOdW1iZXInKT8uaW52YWxpZCAmJiB1c2VyRm9ybS5nZXQoJ21vYmlsZU51bWJlcicpPy50b3VjaGVkXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgKm5nSWY9XCJ1c2VyRm9ybS5nZXQoJ21vYmlsZU51bWJlcicpPy5lcnJvcnM/LlsncmVxdWlyZWQnXVwiPkNvbnRhY3QgTnVtYmVyIGlzIHJlcXVpcmVkLjwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCAqbmdJZj1cInVzZXJGb3JtLmdldCgnbW9iaWxlTnVtYmVyJyk/LmVycm9ycz8uWydtaW5sZW5ndGgnXVwiPkNvbnRhY3QgTnVtYmVyIG11c3QgYmUgYXQgbGVhc3QgOCBkaWdpdHMuPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsICpuZ0lmPVwidXNlckZvcm0uZ2V0KCdtb2JpbGVOdW1iZXInKT8uZXJyb3JzPy5bJ21heGxlbmd0aCddXCI+Q29udGFjdCBOdW1iZXIgY2Fubm90IGV4Y2VlZCAxMyBkaWdpdHMuPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBSb2xlIEZpZWxkIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBjb2wteGwtNiBjb2wteHhsLTYgbWItN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicm9sZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlJvbGUgPHNwYW4gY2xhc3M9XCJhbGVydC1yZXF1aXJlZCB0ZXh0LWRhbmdlclwiPio8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0XCIgZm9ybUNvbnRyb2xOYW1lPVwicm9sZVwiIChjaGFuZ2UpPVwib25Sb2xlQ2hhbmdlKHVzZXJGb3JtLmdldCgncm9sZScpPy52YWx1ZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWRtaW5cIj5BZG1pbjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJ1c2VyXCI+VXNlcjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInVzZXJGb3JtLmdldCgncm9sZScpPy5pbnZhbGlkICYmIHVzZXJGb3JtLmdldCgncm9sZScpPy50b3VjaGVkXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCAqbmdJZj1cInVzZXJGb3JtLmdldCgncm9sZScpPy5lcnJvcnM/LlsncmVxdWlyZWQnXVwiPlJvbGUgaXMgcmVxdWlyZWQuPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQWRkIHRvIFRlYW0gRmllbGQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy0xMiBjb2wteGwtMTIgY29sLXh4bC0xMiBtYi01XCIgKm5nSWY9XCJ0aGlzLnVzZXJUeXBlICE9PSd0YW5nbydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInRlYW1MZWFkXCIgY2xhc3M9XCJmb3JtLWxhYmVsIHRlYW1zLXRpdGxlXCI+QWRkIHRvIGEgdGVhbTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZWFtLXNlbGVjdCBbaXRlbXNdPVwidGVhbUxpc3RcIiBbbXVsdGldPVwidHJ1ZVwiIFtzZWFyY2hGaWVsZF09XCIndGVhbU5hbWUnXCIgW2lkRmllbGRdPVwiJ19pZCdcIiBbZGlzYWJsZWRdPVwidHlwZSA9PT0gJ3ZpZXcnID8gdHJ1ZSA6IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZCk9XCJvblN0b3JlU2VsZWN0KCRldmVudClcIiBbc2VsZWN0ZWRWYWx1ZXNdPVwic2VsZWN0ZWRVc2VyXCI+PC90ZWFtLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidXNlckZvcm0uZ2V0KCdyb2xlJyk/LnZhbHVlID09PSAnYWRtaW4nXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwidGVhbXMtdGl0bGVcIiAgKm5nSWY9XCJnZXRQZXJtaXNzaW9ucygpLmxlbmd0aFwiPkFjY2VzcyBmb3IgQWRtaW48L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdldFBlcm1pc3Npb25zKCkubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBmb3JtQXJyYXlOYW1lPVwicm9sZXNwZXJtaXNzaW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCByb2xlc3Blcm1pc3Npb24gb2YgZ2V0UGVybWlzc2lvbnMoKS5jb250cm9sczsgbGV0IGkgPSBpbmRleFwiIFtmb3JtR3JvdXBOYW1lXT1cImlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmUgbXktMiBtZS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlLWhlYWRlciBtdC00IG1zLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY2FtZWxDYXNlVG9UZXh0KHJvbGVzcGVybWlzc2lvbi5nZXQoJ2ZlYXR1cmVOYW1lJyk/LnZhbHVlKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvbGVzcGVybWlzc2lvbi5nZXQoJ21vZHVsZXMnKVwiIGZvcm1BcnJheU5hbWU9XCJtb2R1bGVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBtb2R1bGVzIG9mIGdldEZlYXR1cmVQZXJtaXNzaW9ucyhyb2xlc3Blcm1pc3Npb24pPy5jb250cm9sczsgbGV0IGogPSBpbmRleFwiIFtmb3JtR3JvdXBOYW1lXT1cImpcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nSWY9XCJyb2xlc3Blcm1pc3Npb24uZ2V0KCdmZWF0dXJlTmFtZScpPy52YWx1ZSAhPT0gJ1RhbmdvQWRtaW4nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInctNTBcIj57eyBjYW1lbENhc2VUb1RleHQobW9kdWxlcy5nZXQoJ25hbWUnKT8udmFsdWUpIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1zdGFydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWlubGluZS1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGZvcm1Db250cm9sTmFtZT1cImlzQWRkXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjaGFuZ2UpPVwiaGFuZGxlVmlld0NoYW5nZShtb2R1bGVzKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ2xvYmFsLWxhYmVsIG1zLTIgbXQtYXV0b1wiPkFkZDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1pbmxpbmUtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJpc0VkaXRcIiB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNoYW5nZSk9XCJoYW5kbGVFZGl0Q2hhbmdlKG1vZHVsZXMpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnbG9iYWwtbGFiZWwgbXMtMiBtdC1hdXRvXCI+RWRpdDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyb2xlc3Blcm1pc3Npb24uZ2V0KCdmZWF0dXJlTmFtZScpPy52YWx1ZSA9PT0gJ1RhbmdvQWRtaW4nXCIgY2xhc3M9XCJyb3cgdy0xMDAgdGV4dC1ub3dyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCIgKm5nRm9yPVwibGV0IG1vZHVsZXMgb2YgZ2V0RmVhdHVyZVBlcm1pc3Npb25zKHJvbGVzcGVybWlzc2lvbik/LmNvbnRyb2xzOyBsZXQgaiA9IGluZGV4XCIgW2Zvcm1Hcm91cE5hbWVdPVwialwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWlubGluZS1mbGV4IG10LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgZm9ybUNvbnRyb2xOYW1lPVwiaXNFZGl0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnbG9iYWwtbGFiZWwgbWItNSBteC0yIG10LTFcIiBzdHlsZT1cInRleHQtd3JhcDpub3dyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY2FtZWxDYXNlVG9UZXh0KG1vZHVsZXMuZ2V0KCduYW1lJyk/LnZhbHVlKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0eXBlIT09J3ZpZXcnXCIgY2xhc3M9XCJkLWZsZXggbXktMTBcIiByb2xlPVwiZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgdy0xMDAgbWUtM1wiIChjbGljayk9XCJjYW5jZWwoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy0xMDAgbXMtM1wiIGlkPVwiYWxlcnQtdG9hc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblN1Ym1pdCgpXCIgW2Rpc2FibGVkXT1cInVzZXJGb3JtLmludmFsaWQgfHwgdHlwZSA9PT0gJ3ZpZXcnXCI+U3VibWl0PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PiJdfQ==
647
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXVzZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS11c2Vycy9zcmMvbGliL2NvbXBvbmVudHMtdjIvYWRkLXVzZXJzL2FkZC11c2Vycy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2UtdXNlcnMvc3JjL2xpYi9jb21wb25lbnRzLXYyL2FkZC11c2Vycy9hZGQtdXNlcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsT0FBTyxFQUFnQixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHeEQsT0FBTyxFQUEwQixXQUFXLEVBQWEsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLNUYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0ZBQWtGLENBQUM7Ozs7Ozs7Ozs7QUFNdkgsTUFBTSxPQUFPLGlCQUFpQjtJQXlEUjtJQUNWO0lBQ0Q7SUFDQztJQUNBO0lBQ0E7SUFDRDtJQUNBO0lBL0RRLE9BQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQ2hDLElBQUksQ0FBTTtJQUNWLElBQUksQ0FBTTtJQUNWLFFBQVEsQ0FBTTtJQUNkLElBQUksQ0FBTTtJQUNuQixRQUFRLENBQVk7SUFDcEIsYUFBYSxHQUFXLEtBQUssQ0FBQztJQUM5QixRQUFRLEdBQVEsRUFBRSxDQUFBO0lBQ2xCLFdBQVcsQ0FBTTtJQUNqQixZQUFZLEdBQVEsRUFBRSxDQUFDO0lBQ3ZCLFVBQVUsR0FBVyxrQkFBa0IsQ0FBQztJQUN4QyxVQUFVLEdBQVcsNEJBQTRCLENBQUM7SUFDbEQsU0FBUyxDQUFNO0lBQ2YsY0FBYyxDQUFNO0lBQ0gsUUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFDMUMsZUFBZSxHQUFHO1FBQ2hCO1lBQ0UsV0FBVyxFQUFFLFFBQVE7WUFDckIsT0FBTyxFQUFFO2dCQUNQLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQzlDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQzdDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQy9DLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ3RELEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ3JELEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7YUFDakQ7U0FDRjtRQUNEO1lBQ0UsV0FBVyxFQUFFLFVBQVU7WUFDdkIsT0FBTyxFQUFFO2dCQUVQLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7YUFDakQ7U0FDRjtRQUNEO1lBQ0UsV0FBVyxFQUFFLFdBQVc7WUFDeEIsT0FBTyxFQUFFO2dCQUNQLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ2xELEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7YUFDOUM7U0FDRjtLQUVGLENBQUM7SUFFRixnQkFBZ0IsQ0FBQyxPQUF3QjtRQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUU7WUFDaEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDeEM7SUFDSCxDQUFDO0lBQ0QsZ0JBQWdCLENBQUMsT0FBd0I7UUFDdkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxFQUFFO1lBQ2pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzFDO0lBQ0gsQ0FBQztJQUVELFlBQW9CLE9BQTJCLEVBQ3JDLEVBQXFCLEVBQ3RCLFdBQTJCLEVBQzFCLEVBQWUsRUFDZixXQUF3QixFQUN4QixFQUFnQixFQUNqQixFQUFzQixFQUN0QixZQUFzQjtRQVBYLFlBQU8sR0FBUCxPQUFPLENBQW9CO1FBQ3JDLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ3RCLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUMxQixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2YsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsT0FBRSxHQUFGLEVBQUUsQ0FBYztRQUNqQixPQUFFLEdBQUYsRUFBRSxDQUFvQjtRQUN0QixpQkFBWSxHQUFaLFlBQVksQ0FBVTtJQUcvQixDQUFDO0lBQ0QsV0FBVztRQUVULElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7SUFFMUIsQ0FBQztJQUNELFFBQVE7UUFDTix5QkFBeUI7UUFDekIsSUFBSSxJQUFTLENBQUM7UUFDZCxJQUFJLGdCQUFnQixJQUFJLFlBQVksRUFBRTtZQUNwQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7U0FDakU7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBRW5ELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUE7UUFDdEIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLEVBQUU7WUFDbEQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3JCO2FBQU07WUFDTCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckI7UUFDRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFO1lBQzdCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO2dCQUN4QixXQUFXLEVBQUUsWUFBWTtnQkFDekIsT0FBTyxFQUFFO29CQUNQO3dCQUNFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsS0FBSzt3QkFDckMsTUFBTSxFQUFFLEtBQUs7cUJBQ2Q7b0JBQ0Q7d0JBQ0UsSUFBSSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsS0FBSzt3QkFDakMsTUFBTSxFQUFFLEtBQUs7cUJBQ2Q7b0JBQ0Q7d0JBQ0UsSUFBSSxFQUFFLHFCQUFxQixFQUFFLEtBQUssRUFBRSxLQUFLO3dCQUN6QyxNQUFNLEVBQUUsS0FBSztxQkFDZDtvQkFDRDt3QkFDRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLO3dCQUM3QixNQUFNLEVBQUUsS0FBSztxQkFDZDtpQkFDRjthQUNGLENBQUUsQ0FBQTtTQUNKO0lBQ0gsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQVU7UUFDMUIsSUFBSSxDQUFDLENBQUM7UUFDTixDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztRQUNuQixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxZQUFZLENBQUMsSUFBWTtRQUN2QixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUNELGVBQWU7UUFDYixJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUN2QyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDWixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUE7Z0JBQzNCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUE7WUFDekIsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBRWYsQ0FBQztTQUNGLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFDRCxZQUFZLENBQUMsS0FBVTtRQUNyQixJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxLQUFLLE1BQU0sRUFBRTtZQUNqQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQy9DO0lBRUgsQ0FBQztJQUNELGFBQWEsQ0FBQyxLQUFVO1FBQ3RCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFBO1FBQ3pCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBYyxDQUFDO1FBQ2pFLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLHlCQUF5QjtRQUVoRCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO1lBQ3RDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLHVDQUF1QztRQUNwRixDQUFDLENBQUMsQ0FBQztRQUNILENBQUM7UUFDRCw0QkFBNEI7SUFDOUIsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqQyxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFnQixDQUFDO1FBQ2hGLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQWE7UUFDckIsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDOUMsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoRCxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUNsRCxNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLENBQUM7UUFDNUQsT0FBTyxHQUFHLFdBQVcsR0FBRyxVQUFVLElBQUksTUFBTSxFQUFFLENBQUM7SUFDakQsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFhO1FBQ3RCLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDO1lBQUUsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqRSxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNqQyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2xELE9BQU8sR0FBRyxNQUFNLEdBQUcsWUFBWSxHQUFHLEtBQUssRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFDRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUNqRixJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7b0JBQzdDLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO29CQUNqQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQztvQkFDeEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEtBQUssWUFBWSxDQUFDO29CQUUzRCxNQUFNLEtBQUssR0FBRyxDQUFDLFVBQVUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztvQkFDOUYsTUFBTSxNQUFNLEdBQUcsQ0FBQyxVQUFVLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUM7b0JBQzlHLElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQztvQkFDcEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDO29CQUM1QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO3dCQUM1QixRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQzt3QkFDekQsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUTtnQ0FDcEQsVUFBVSxDQUFDLE9BQU8sQ0FBQyxzRkFBc0YsQ0FBQzs2QkFDN0csQ0FBQyxDQUFDO3dCQUNELFlBQVksRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUU7d0JBQ2hHLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO3dCQUNqRCxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQzt3QkFDekQsZUFBZSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO3dCQUN2RCxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO3dCQUMzQixXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztxQkFDaEUsQ0FBQyxDQUFDO29CQUNILElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDekQsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLE1BQU0sRUFBRTt3QkFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztxQkFDekI7b0JBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUM7b0JBQ3RDLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUE7b0JBQ3RDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUU7d0JBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO3FCQUN0QztvQkFDRCxpQ0FBaUM7b0JBQ2pDLDZDQUE2QztvQkFDN0MsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLGVBQWUsQ0FBQyxDQUFDO29CQUM1RCxNQUFNO29CQUVOLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxNQUFNLEVBQUU7d0JBQ2hDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7cUJBQ3pCO29CQUNELElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDO29CQUN0QyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO29CQUN4Qiw2RUFBNkU7aUJBQzlFO3FCQUFNO29CQUNMLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztpQkFDckI7WUFDSCxDQUFDO1lBQ0QsS0FBSyxFQUFFLEdBQUcsRUFBRTtnQkFDVixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsQ0FBQztZQUNELFFBQVEsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO1NBQ3BCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxhQUFpQjtRQUNwQyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFO1lBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRTtnQkFDNUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLGFBQWEsSUFBSSxXQUFXLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7YUFDL0c7U0FDRjthQUFNO1lBQ0wsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRTtnQkFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUM7YUFDOUM7U0FDRjtJQUNILENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUM1QixRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUNuQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRO29CQUNuRCxVQUFVLENBQUMsT0FBTyxDQUFDLHNGQUFzRixDQUFDO2lCQUN6RyxDQUFDLENBQUM7WUFDSCxZQUFZLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzVGLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ25DLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUM5QyxlQUFlLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDdkQsUUFBUSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMzQixXQUFXLEVBQUUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztTQUN6QyxDQUFDLENBQUM7UUFFSCxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFO1lBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRTtnQkFDNUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQzthQUM5RjtTQUNGO2FBQU07WUFDTCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxFQUFFO2dCQUMzQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQzthQUM5QztTQUNGO1FBQ0QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxlQUFzQjtRQUN2QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBYyxDQUFDO1FBQ3RFLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFFLHlCQUF5QjtRQUUvQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsZUFBb0IsRUFBRSxFQUFFO1lBQy9DLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO2dCQUNqQyxXQUFXLEVBQUUsQ0FBQyxlQUFlLEVBQUUsV0FBVyxDQUFDO2dCQUMzQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUcsb0NBQW9DO2FBQ2xFLENBQUMsQ0FBQztZQUVILE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFjLENBQUM7WUFDOUQsZUFBZSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRTtnQkFDOUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7b0JBQ2hDLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7b0JBQ25CLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFLENBQUM7b0JBQ2hFLE1BQU0sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFLENBQUMsRUFBRSw2QkFBNkI7b0JBQ2pHLCtCQUErQjtpQkFDaEMsQ0FBQyxDQUFDO2dCQUNILFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBRSxtQ0FBbUM7WUFDdEUsQ0FBQyxDQUFDLENBQUM7WUFFSCxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUUsd0NBQXdDO1FBQzNFLENBQUMsQ0FBQyxDQUFDO1FBRUgsc0NBQXNDO1FBQ3RDLFdBQVcsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxjQUFjO1FBQ1osbUNBQW1DO1FBQ25DLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQWMsQ0FBQztJQUUzRCxDQUFDO0lBQ0QscUJBQXFCLENBQUMsZUFBZ0M7UUFDcEQsT0FBTyxlQUFlLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBYyxDQUFDO0lBQ3JELENBQUM7SUFDRCxxQkFBcUIsQ0FBQyxRQUFnQixFQUFFLFFBQWdCO1FBQ3RELENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsaUJBQWlCLENBQWUsQ0FBQSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzdELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUNELGVBQWUsQ0FBQyxLQUFhO1FBQzNCLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDO2FBQ3BDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUN6QyxJQUFJLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFDSCxhQUFhLEdBQVcsRUFBRSxDQUFDO0lBQzNCLGNBQWMsR0FBVyxFQUFFLENBQUM7SUFDNUIsYUFBYTtRQUNYLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZFLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVqRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO1FBRW5HLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsRUFBRSxHQUFHLFdBQVcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUN6RSxJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLEVBQUU7b0JBQzFCLElBQUksQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLDRCQUE0QixDQUFDLENBQUM7b0JBQ3RELElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUNqQyxJQUFJLENBQUMsRUFBRSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDekM7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsd0JBQXdCLENBQUMsQ0FBQztvQkFDaEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQ2xDO1lBQ0gsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNsQixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLENBQUM7Z0JBQ3hGLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDM0IsQ0FBQztZQUNELFFBQVEsRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFQyxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLE1BQU0sRUFBRTtZQUN2QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDbkI7YUFBTTtZQUNMLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUN0QjtJQUNILENBQUM7SUFDRCxVQUFVO1FBQ1osSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDckMsSUFBSSxJQUFJLEdBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDekQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1NBQ3pDO2FBQU07WUFDTixJQUFJLENBQUMsWUFBWSxDQUFDO1NBQ2xCO1FBRUQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBR3RDLElBQUksT0FBTyxHQUF5QjtZQUNsQyxJQUFJLEVBQUUsQ0FBQztZQUNQLEtBQUssRUFBRSxDQUFDO1lBQ1IsVUFBVSxFQUFFLENBQUM7U0FDZCxDQUFDO1FBRUYsSUFBSSxPQUFPLEdBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDbkMsSUFBSSxXQUFXLEdBQVMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUVsQyxJQUFHLElBQUksRUFBRSxJQUFJLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBQztZQUN2RCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQTtZQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFDLEtBQUssRUFBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksRUFBQyxNQUFNLEVBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDbEUsSUFBSSxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7b0JBQ2pCLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUU7d0JBQzFELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUE7d0JBQ3BDLDZCQUE2Qjt3QkFDdkMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7d0JBQzdHLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQTt3QkFFMUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTs0QkFDL0IsSUFBSSxNQUFNLEtBQUssUUFBUSxFQUFFO2dDQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQTtnQ0FDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDO29DQUN0QyxJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTt3Q0FDakIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLEVBQUU7NENBQzFCLElBQUksQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUNyQixvQ0FBb0MsQ0FDckMsQ0FBQzs0Q0FDRixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQzt5Q0FDbEM7NkNBQU07NENBQ0wsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsd0JBQXdCLENBQUMsQ0FBQzs0Q0FDaEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQzt5Q0FDMUI7b0NBQ0gsQ0FBQztvQ0FDRCxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTt3Q0FDYixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLENBQUM7d0NBQ3hGLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7b0NBQzNCLENBQUM7b0NBQ0QsUUFBUSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7aUNBQ3BCLENBQUMsQ0FBQzs2QkFDQTt3QkFDSCxDQUFDLENBQUMsQ0FBQztxQkFDRTt5QkFBTTt3QkFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUM7NEJBQy9DLElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dDQUNqQixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsRUFBRTtvQ0FDMUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQ3JCLG9DQUFvQyxDQUNyQyxDQUFDO29DQUNGLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lDQUNsQztxQ0FBTTtvQ0FDTCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO29DQUNoRCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO2lDQUMxQjs0QkFDSCxDQUFDOzRCQUNELEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dDQUNiLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQztnQ0FDeEYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQzs0QkFDM0IsQ0FBQzs0QkFDRCxRQUFRLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQzt5QkFDcEIsQ0FBQyxDQUFDO3FCQUNFO2dCQUNILENBQUM7Z0JBQ0QsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7b0JBQ2IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO29CQUN4RixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUMzQixDQUFDO2dCQUNELFFBQVEsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO2FBQ3BCLENBQUMsQ0FBQztTQUVOO2FBQUssSUFBRyxJQUFJLEVBQUUsSUFBSSxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUM7WUFDN0QsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxNQUFNLENBQUE7WUFFaEMsSUFBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFDO2dCQUNsQixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFDLEtBQUssRUFBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksRUFBQyxNQUFNLEVBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztvQkFDbkUsSUFBSSxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7d0JBQ2pCLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUU7NEJBRXpELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUE7NEJBQ3BDLDZCQUE2Qjs0QkFDL0IsNkhBQTZIOzRCQUNySSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQzs0QkFDN0csUUFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFBOzRCQUUxQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dDQUMvQixJQUFJLE1BQU0sS0FBSyxRQUFRLEVBQUU7b0NBQ3ZCLHNCQUFzQjtvQ0FDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDO3dDQUN0QyxJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTs0Q0FDakIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLEVBQUU7Z0RBQzFCLElBQUksQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUNyQixvQ0FBb0MsQ0FDckMsQ0FBQztnREFDRixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQzs2Q0FDbEM7aURBQU07Z0RBQ0wsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsd0JBQXdCLENBQUMsQ0FBQztnREFDaEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQzs2Q0FDMUI7d0NBQ0gsQ0FBQzt3Q0FDRCxLQUFLLEVBQUUsQ0FBQyxHQUFPLEVBQUUsRUFBRTs0Q0FDakIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDOzRDQUN4RixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO3dDQUMzQixDQUFDO3dDQUNELFFBQVEsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO3FDQUNwQixDQUFDLENBQUM7aUNBQ0E7NEJBQ0gsQ0FBQyxDQUFDLENBQUM7eUJBQ0U7NkJBQU07NEJBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDO2dDQUMvQyxJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtvQ0FDakIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLEVBQUU7d0NBQzFCLElBQUksQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUNyQixvQ0FBb0MsQ0FDckMsQ0FBQzt3Q0FDRixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztxQ0FDbEM7eUNBQU07d0NBQ0wsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsd0JBQXdCLENBQUMsQ0FBQzt3Q0FDaEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztxQ0FDMUI7Z0NBQ0gsQ0FBQztnQ0FDRCxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQ0FDYixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLENBQUM7b0NBQ3hGLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7Z0NBQzNCLENBQUM7Z0NBQ0QsUUFBUSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7NkJBQ3BCLENBQUMsQ0FBQzt5QkFDRTtvQkFDSCxDQUFDO29CQUNELEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO3dCQUNiLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQzt3QkFDeEYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDM0IsQ0FBQztvQkFDRCxRQUFRLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztpQkFDcEIsQ0FBQyxDQUFDO2FBQ047aUJBQUk7Z0JBQ0MsNkJBQTZCO2dCQUNuQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDN0csUUFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFBO2dCQUV6QyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO29CQUNoQyxJQUFJLE1BQU0sS0FBSyxRQUFRLEVBQUU7d0JBQ3ZCLHNCQUFzQjt3QkFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDOzRCQUN0QyxJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQ0FDakIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLEVBQUU7b0NBQzFCLElBQUksQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUNyQixvQ0FBb0MsQ0FDckMsQ0FBQztvQ0FDRixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztpQ0FDbEM7cUNBQU07b0NBQ0wsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsd0JBQXdCLENBQUMsQ0FBQztvQ0FDaEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztpQ0FDMUI7NEJBQ0gsQ0FBQzs0QkFDRCxLQUFLLEVBQUUsQ0FBQyxHQUFPLEVBQUUsRUFBRTtnQ0FDakIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO2dDQUN4RixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDOzRCQUMzQixDQUFDOzRCQUNELFFBQVEsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO3lCQUNwQixDQUFDLENBQUM7cUJBQ0E7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7YUFHTjtTQUdBO2FBQ0c7WUFDRixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUM7Z0JBQ3JDLElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO29CQUNqQixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsRUFBRTt3QkFDMUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQ3JCLG9DQUFvQyxDQUNyQyxDQUFDO3dCQUNGLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO3FCQUNsQzt5QkFBTTt3QkFDTCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO3dCQUNoRCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO3FCQUMxQjtnQkFDSCxDQUFDO2dCQUNELEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUNiLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQztvQkFDeEYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDM0IsQ0FBQztnQkFDRCxRQUFRLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQzthQUNwQixDQUFDLENBQUM7U0FDTjtJQUVDLENBQUM7SUFDRCxnQ0FBZ0MsQ0FBQyxJQUFTO1FBQ3hDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUU7WUFDNUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRTtnQkFDdkMsd0NBQXdDO2dCQUN4QywwQkFBMEI7Z0JBQzFCLDJCQUEyQjtnQkFDM0IsZ0NBQWdDO2dCQUNoQyxVQUFVO2dCQUNWLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxPQUFPLEVBQUU7b0JBQzdCLE9BQU8sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO29CQUN0QixPQUFPLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztvQkFDdkIsNEJBQTRCO2lCQUM3QjtZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxnQkFBZ0IsR0FBRyxDQUFDLElBQVMsRUFBRSxFQUFFO1FBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRTtZQUN4QyxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7U0FDL0M7UUFFRCxpRUFBaUU7UUFDakUsT0FBTztZQUNMLEdBQUcsSUFBSTtZQUNQLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFO2dCQUN6RCxPQUFPO29CQUNMLEdBQUcsT0FBTztvQkFDVixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRTt3QkFDNUMsTUFBTSxVQUFVLEdBQTJCLEVBQUUsQ0FBQzt3QkFDOUMsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7NEJBQ2xELElBQUksS0FBSyxLQUFLLElBQUksRUFBRTtnQ0FDbEIsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQzs2QkFDekI7eUJBQ0Y7d0JBQ0QsT0FBTyxVQUFVLENBQUM7b0JBQ3BCLENBQUMsQ0FBQztpQkFDSCxDQUFDO1lBQ0osQ0FBQyxDQUFDO1NBQ0gsQ0FBQztJQUNKLENBQUMsQ0FBQztJQUNGLGVBQWU7UUFDYixJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQzVHLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDWCxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsRUFBRTtnQkFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQTthQUNoQztRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUNELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO1lBQ25CLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUM7U0FDdkM7YUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxLQUFLLFFBQVEsRUFBRTtZQUN6QyxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztZQUNuQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDO1NBQ3ZDO0lBQ0gsQ0FBQztJQUNELGdCQUFnQjtRQUNkLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxlQUFlLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztRQUNoRSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFDRCxZQUFZLENBQUMsUUFBZTtRQUMxQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQWMsQ0FBQztRQUNqRSxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3RCLHVFQUF1RTtZQUN2RSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2pCLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7b0JBQy9CLEdBQUcsRUFBRSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO29CQUM5QixRQUFRLEVBQUUsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztvQkFDeEMsUUFBUSxFQUFFLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7b0JBQ3hDLFVBQVUsRUFBRSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO2lCQUM3QyxDQUFDLENBQUMsQ0FBQzthQUNMO1FBRUgsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQW9CO1FBQ2xDLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFDdEIsTUFBTSxLQUFLLEdBQUcsa0JBQWtCLENBQUM7UUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDcEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQztJQUVDLG9CQUFvQixDQUFDLEtBQXFCO1FBQzVDLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLElBQU0sTUFBYyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQUEsQ0FBQztRQUNoRixNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pELE1BQU0sS0FBSyxHQUFHLG1CQUFtQixDQUFDO1FBQ2xDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQzNCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1NBQzlEO0lBQ0QsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFZO1FBQ3ZCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN6QixDQUFDO3dHQTdvQlUsaUJBQWlCOzRGQUFqQixpQkFBaUIsaUlDZjlCLGl3YkF5S1U7OzRGRDFKRyxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0UsZUFBZTsyUkFNaEIsSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IE1hbmFnZVVzZXJzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzLXYyL21hbmFnZS11c2Vycy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmdiQWN0aXZlTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXNlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLXNoYXJlZCc7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gXCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcFwiO1xyXG5pbXBvcnQgeyBBbGVydFBvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy90YW5nby1tYW5hZ2UtdXNlcnMvdXNlci10YWJsZS9hbGVydC1wb3B1cC9hbGVydC1wb3B1cC5jb21wb25lbnQnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1hZGQtdXNlcnMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGQtdXNlcnMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9hZGQtdXNlcnMuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBZGRVc2Vyc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0IHtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kgPSBuZXcgU3ViamVjdCgpO1xyXG4gIEBJbnB1dCgpIHR5cGU6IGFueTtcclxuICBASW5wdXQoKSB1c2VyOiBhbnk7XHJcbiAgQElucHV0KCkgdXNlclR5cGU6IGFueTtcclxuICBASW5wdXQoKSBkYXRhOiBhbnk7XHJcbiAgdXNlckZvcm06IEZvcm1Hcm91cDtcclxuICBvcGVyYXRpb25UeXBlOiBzdHJpbmcgPSAnYWRkJztcclxuICB0ZWFtTGlzdDogYW55ID0gW11cclxuICBjb3VudHJ5TGlzdDogYW55O1xyXG4gIHNlbGVjdGVkVXNlcjogYW55ID0gW107XHJcbiAgcGhvbmVSZWdleDogUmVnRXhwID0gL14oXFxkezN9KT9cXGR7MTV9JC87XHJcbiAgZW1haWxSZWdleDogUmVnRXhwID0gL15bXlxcc0BdK0BbXlxcc0BdK1xcLlteXFxzQF0rJC87XHJcbiAgdXNlcl9kYXRhOiBhbnk7XHJcbiAgJGhlYWRlckZpbHRlcnM6IGFueTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuICBwZXJtaXNzaW9uQXJyYXkgPSBbXHJcbiAgICB7XHJcbiAgICAgIGZlYXR1cmVOYW1lOiBcIkdsb2JhbFwiLFxyXG4gICAgICBtb2R1bGVzOiBbXHJcbiAgICAgICAgeyBuYW1lOiBcIlN0b3JlXCIsIGlzQWRkOiBmYWxzZSwgaXNFZGl0OiBmYWxzZSB9LFxyXG4gICAgICAgIHsgbmFtZTogXCJVc2VyXCIsIGlzQWRkOiBmYWxzZSwgaXNFZGl0OiBmYWxzZSB9LFxyXG4gICAgICAgIHsgbmFtZTogXCJDYW1lcmFcIiwgaXNBZGQ6IGZhbHNlLCBpc0VkaXQ6IGZhbHNlIH0sXHJcbiAgICAgICAgeyBuYW1lOiBcIkNvbmZpZ3VyYXRpb25cIiwgaXNBZGQ6IGZhbHNlLCBpc0VkaXQ6IGZhbHNlIH0sXHJcbiAgICAgICAgeyBuYW1lOiBcIlN1YnNjcmlwdGlvblwiLCBpc0FkZDogZmFsc2UsIGlzRWRpdDogZmFsc2UgfSxcclxuICAgICAgICB7IG5hbWU6IFwiQmlsbGluZ1wiLCBpc0FkZDogZmFsc2UsIGlzRWRpdDogZmFsc2UgfSxcclxuICAgICAgXVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgZmVhdHVyZU5hbWU6IFwiVGFuZ29FeWVcIixcclxuICAgICAgbW9kdWxlczogW1xyXG5cclxuICAgICAgICB7IG5hbWU6IFwiWm9uZVRhZ1wiLCBpc0FkZDogZmFsc2UsIGlzRWRpdDogZmFsc2UgfSxcclxuICAgICAgXVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgZmVhdHVyZU5hbWU6IFwiVGFuZ29UcmF4XCIsXHJcbiAgICAgIG1vZHVsZXM6IFtcclxuICAgICAgICB7IG5hbWU6IFwiY2hlY2tsaXN0XCIsIGlzQWRkOiBmYWxzZSwgaXNFZGl0OiBmYWxzZSB9LFxyXG4gICAgICAgIHsgbmFtZTogXCJUYXNrXCIsIGlzQWRkOiBmYWxzZSwgaXNFZGl0OiBmYWxzZSB9LFxyXG4gICAgICBdXHJcbiAgICB9LFxyXG5cclxuICBdO1xyXG5cclxuICBoYW5kbGVWaWV3Q2hhbmdlKG1vZHVsZXM6IEZvcm1Hcm91cCB8IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKCFtb2R1bGVzLmdldChcImlzQWRkXCIpPy52YWx1ZSkge1xyXG4gICAgICBtb2R1bGVzLmdldChcImlzRGVsZXRlXCIpPy5zZXRWYWx1ZShmYWxzZSk7XHJcbiAgICAgIG1vZHVsZXMuZ2V0KFwiaXNFZGl0XCIpPy5zZXRWYWx1ZShmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGhhbmRsZUVkaXRDaGFuZ2UobW9kdWxlczogRm9ybUdyb3VwIHwgYW55KTogdm9pZCB7XHJcbiAgICBpZiAoIW1vZHVsZXMuZ2V0KFwiaXNFZGl0XCIpPy52YWx1ZSkge1xyXG4gICAgICBtb2R1bGVzLmdldChcImlzRGVsZXRlXCIpPy5zZXRWYWx1ZShmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNlcnZpY2U6IE1hbmFnZVVzZXJzU2VydmljZSxcclxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHVibGljIGFjdGl2ZU1vZGFsOiBOZ2JBY3RpdmVNb2RhbCxcclxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRzOiBUb2FzdFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgZ3M6IEdsb2JhbFN0YXRlU2VydmljZSxcclxuICAgIHB1YmxpYyBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsXHJcbiAgKSB7XHJcblxyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLmRlc3Ryb3kubmV4dChmYWxzZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kuY29tcGxldGUoKTtcclxuXHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgLy8gY29uc29sZS5sb2codGhpcy50eXBlKVxyXG4gICAgbGV0IGRhdGE6IGFueTtcclxuICAgIGlmIChcImhlYWRlci1maWx0ZXJzXCIgaW4gbG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgIGRhdGEgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdoZWFkZXItZmlsdGVycycpIHx8ICcnKTtcclxuICAgIH1cclxuICAgIHRoaXMudXNlcl9kYXRhID0gSlNPTj8ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3VzZXItaW5mbycpIHx8ICcnKTtcclxuICAgIHRoaXMuJGhlYWRlckZpbHRlcnMgPSBkYXRhID8gZGF0YSA6IHRoaXMudXNlcl9kYXRhO1xyXG4gICBcclxuICAgIHRoaXMuZ2V0Um9sZXMoKTtcclxuICAgIHRoaXMuZ2V0QWxsVGVhbXNMaXN0KClcclxuICAgIGlmICh0aGlzLnR5cGUgPT09IFwidmlld1wiIHx8ICh0aGlzLnR5cGUgPT09IFwiZWRpdFwiKSkge1xyXG4gICAgICB0aGlzLmxvYWRVc2VyRm9ybSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pbml0VXNlckZvcm0oKTtcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0Q291bnRyeUNvZGVzKCk7XHJcbiAgfVxyXG5cclxuICBnZXRSb2xlcygpIHtcclxuICAgIGlmICh0aGlzLnVzZXJUeXBlID09PSAndGFuZ28nKSB7XHJcbiAgICAgIHRoaXMucGVybWlzc2lvbkFycmF5LnB1c2goe1xyXG4gICAgICAgIGZlYXR1cmVOYW1lOiBcIlRhbmdvQWRtaW5cIixcclxuICAgICAgICBtb2R1bGVzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6IFwiaW52b2ljZUFwcHJvdmFsXCIsIGlzQWRkOiBmYWxzZSxcclxuICAgICAgICAgICAgaXNFZGl0OiBmYWxzZVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogXCJFZGl0QmlsbGluZ1wiLCBpc0FkZDogZmFsc2UsXHJcbiAgICAgICAgICAgIGlzRWRpdDogZmFsc2VcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6IFwiVGlja2V0Q29uZmlndXJhdGlvblwiLCBpc0FkZDogZmFsc2UsXHJcbiAgICAgICAgICAgIGlzRWRpdDogZmFsc2VcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6IFwiUmVwb3J0c1wiLCBpc0FkZDogZmFsc2UsXHJcbiAgICAgICAgICAgIGlzRWRpdDogZmFsc2VcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXVxyXG4gICAgICB9LClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9taXRfc3BlY2lhbF9jaGFyKGV2ZW50OiBhbnkpIHtcclxuICAgIHZhciBrO1xyXG4gICAgayA9IGV2ZW50LmNoYXJDb2RlO1xyXG4gICAgcmV0dXJuIGsgPT0gOCB8fCBrID09IDMyIHx8IChrID49IDQ4ICYmIGsgPD0gNTcpO1xyXG4gIH1cclxuXHJcbiAgb25Sb2xlQ2hhbmdlKHJvbGU6IHN0cmluZykge1xyXG4gICAgdGhpcy5nZXRVc2VyUGVybWlzc2lvbkRhdGEocm9sZSwgdGhpcy51c2VyX2RhdGEudXNlclR5cGUpO1xyXG4gIH1cclxuICBnZXRDb3VudHJ5Q29kZXMoKSB7XHJcbiAgICB0aGlzLnNlcnZpY2UuZ2V0QWxsQ291bnRyaWVzKCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMuY291bnRyeUxpc3QgPSByZXMuZGF0YVxyXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcblxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICBvbnJvbGVjaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKGV2ZW50LnRhcmdldC52YWx1ZSA9PT0gJ3VzZXInKSB7XHJcbiAgICAgIHRoaXMucG9wdWxhdGVQZXJtaXNzaW9uKHRoaXMucGVybWlzc2lvbkFycmF5KTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG4gIG9uU3RvcmVTZWxlY3QoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFVzZXIgPSBldmVudFxyXG4gICAgY29uc3QgdGVhbUxlYWRBcnJheSA9IHRoaXMudXNlckZvcm0uZ2V0KCd0ZWFtTGVhZCcpIGFzIEZvcm1BcnJheTtcclxuICAgIHRlYW1MZWFkQXJyYXkuY2xlYXIoKTsgLy8gQ2xlYXJzIGV4aXN0aW5nIHZhbHVlc1xyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRVc2VyLmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xyXG4gICAgICB0ZWFtTGVhZEFycmF5LnB1c2gobmV3IEZvcm1Db250cm9sKHVzZXIpKTsgLy8gQWRkcyBlYWNoIHVzZXIgaW4gc2VsZWN0ZWRVc2VyIGFycmF5XHJcbiAgICB9KTtcclxuICAgIDtcclxuICAgIC8vIHRoaXMuc2V0VGVhbUxlYWRzKGV2ZW50KTtcclxuICB9XHJcblxyXG4gIGNhbmNlbCgpIHtcclxuICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoJ3N1Ym1pdCcpO1xyXG4gICAgY29uc3QgdHJpZ2dlckJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyN0cmlnZ2VyQnV0dG9uSWQnKSBhcyBIVE1MRWxlbWVudDtcclxuICAgIHRyaWdnZXJCdXR0b24/LmZvY3VzKCk7XHJcbiAgfVxyXG5cclxuICBtYXNrRW1haWwodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXZhbHVlIHx8ICF2YWx1ZS5pbmNsdWRlcygnQCcpKSByZXR1cm4gJyc7XHJcbiAgICBjb25zdCBbbG9jYWwsIGRvbWFpbl0gPSB2YWx1ZS5zcGxpdCgnQCcpO1xyXG4gICAgY29uc3QgdmlzaWJsZUxlbmd0aCA9IE1hdGgubWluKDMsIGxvY2FsLmxlbmd0aCk7XHJcbiAgICBjb25zdCB2aXNpYmxlUGFydCA9IGxvY2FsLnNsaWNlKDAsIHZpc2libGVMZW5ndGgpO1xyXG4gICAgY29uc3QgbWFza2VkUGFydCA9ICcqJy5yZXBlYXQobG9jYWwubGVuZ3RoIC0gdmlzaWJsZUxlbmd0aCk7XHJcbiAgICByZXR1cm4gYCR7dmlzaWJsZVBhcnR9JHttYXNrZWRQYXJ0fUAke2RvbWFpbn1gO1xyXG4gIH1cclxuICBcclxuICBtYXNrTW9iaWxlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF2YWx1ZSB8fCB2YWx1ZS5sZW5ndGggPD0gNCkgcmV0dXJuICcqJy5yZXBlYXQodmFsdWUubGVuZ3RoKTtcclxuICAgIGNvbnN0IGZpcnN0MiA9IHZhbHVlLnNsaWNlKDAsIDIpO1xyXG4gICAgY29uc3QgbGFzdDIgPSB2YWx1ZS5zbGljZSgtMik7XHJcbiAgICBjb25zdCBtYXNrZWRNaWRkbGUgPSAnKicucmVwZWF0KHZhbHVlLmxlbmd0aCAtIDQpO1xyXG4gICAgcmV0dXJuIGAke2ZpcnN0Mn0ke21hc2tlZE1pZGRsZX0ke2xhc3QyfWA7XHJcbiAgfVxyXG4gIGxvYWRVc2VyRm9ybSgpIHtcclxuICAgIHRoaXMudXNlclNlcnZpY2UuZ2V0VXNlcih0aGlzLnVzZXIuZW1haWwpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCAmJiByZXMuZGF0YS5yZXN1bHQpIHtcclxuICAgICAgICAgIGNvbnN0IHVzZXJEYXRhID0gcmVzLmRhdGEucmVzdWx0O1xyXG4gICAgICAgICAgY29uc3QgaXNWaWV3TW9kZSA9IHRoaXMudHlwZSA9PT0gJ3ZpZXcnO1xyXG4gICAgICAgICAgY29uc3QgaXNTdXBlcmFkbWluID0gdGhpcy51c2VyX2RhdGE/LnJvbGUgPT09ICdzdXBlcmFkbWluJztcclxuICBcclxuICAgICAgICAgIGNvbnN0IGVtYWlsID0gKGlzVmlld01vZGUgJiYgIWlzU3VwZXJhZG1pbikgPyB0aGlzLm1hc2tFbWFpbCh1c2VyRGF0YS5lbWFpbCkgOiB1c2VyRGF0YS5lbWFpbDtcclxuICAgICAgICAgIGNvbnN0IG1vYmlsZSA9IChpc1ZpZXdNb2RlICYmICFpc1N1cGVyYWRtaW4pID8gdGhpcy5tYXNrTW9iaWxlKHVzZXJEYXRhLm1vYmlsZU51bWJlcikgOiB1c2VyRGF0YS5tb2JpbGVOdW1iZXI7XHJcbiAgICAgICAgICB0aGlzLm9yaWdpbmFsRW1haWwgPSB1c2VyRGF0YS5lbWFpbDtcclxuICAgICAgICAgIHRoaXMub3JpZ2luYWxNb2JpbGUgPSB1c2VyRGF0YS5tb2JpbGVOdW1iZXI7IFxyXG4gICAgICAgICAgdGhpcy51c2VyRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgICB1c2VyTmFtZTogW3Jlcy5kYXRhLnJlc3VsdC51c2VyTmFtZSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgIGVtYWlsOiBbZW1haWwsIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oXCJeW2EtekEtWjAtOV0rKFsuLV9dP1thLXpBLVowLTldKykqQFthLXpBLVowLTldKyhbLi1fXT9bYS16QS1aXSspKlsuXXsxfVthLXpBLVpdezIsfSRcIiksXHJcbiAgICAgICAgICBdKV0sXHJcbiAgICAgICAgICAgIG1vYmlsZU51bWJlcjogW21vYmlsZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDgpLFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEzKV0gXSxcclxuICAgICAgICAgICAgcm9sZTogW3Jlcy5kYXRhLnJlc3VsdC5yb2xlLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgdXNlclR5cGU6IFtyZXMuZGF0YS5yZXN1bHQudXNlclR5cGUsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgICByb2xlc3Blcm1pc3Npb246IHRoaXMuZmIuYXJyYXkoW10sIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxyXG4gICAgICAgICAgICB0ZWFtTGVhZDogdGhpcy5mYi5hcnJheShbXSksXHJcbiAgICAgICAgICAgIGNvdW50cnlDb2RlOiBbcmVzLmRhdGEucmVzdWx0LmNvdW50cnlDb2RlLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVUYW5nb3VzZXJGaWVsZChyZXMuZGF0YS5yZXN1bHQudGFuZ29Vc2VyVHlwZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy50eXBlID09IFwidmlld1wiKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXNlckZvcm0uZGlzYWJsZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy51c2VyRm9ybS5nZXQoXCJlbWFpbFwiKT8uZGlzYWJsZSgpO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFVzZXIgPSByZXMuZGF0YS50ZWFtc0xpc3RcclxuICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVXNlci5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRUZWFtTGVhZHModGhpcy5zZWxlY3RlZFVzZXIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8gUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAvLyB0aGlzLnVzZXJGb3JtLmdldCgndGVhbUxlYWQnKT8uc2V0VmFsdWUoKTtcclxuICAgICAgICAgIHRoaXMucG9wdWxhdGVQZXJtaXNzaW9uKHJlcz8uZGF0YT8ucmVzdWx0Py5yb2xlc3Blcm1pc3Npb24pO1xyXG4gICAgICAgICAgLy8gfSk7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMub3BlcmF0aW9uVHlwZSA9PSBcInZpZXdcIikge1xyXG4gICAgICAgICAgICB0aGlzLnVzZXJGb3JtLmRpc2FibGUoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMudXNlckZvcm0uZ2V0KFwiZW1haWxcIik/LmRpc2FibGUoKTtcclxuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgLy8gdGhpcy5nZXRVc2VyUGVybWlzc2lvbkRhdGEocmVzLmRhdGEucmVzdWx0LnJvbGUscmVzLmRhdGEucmVzdWx0LnVzZXJUeXBlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5pbml0VXNlckZvcm0oKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pbml0VXNlckZvcm0oKTtcclxuICAgICAgfSxcclxuICAgICAgY29tcGxldGU6ICgpID0+IHsgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlVGFuZ291c2VyRmllbGQodGFuZ29Vc2VyVHlwZTphbnkpIHtcclxuICAgIGlmICh0aGlzLnVzZXJUeXBlID09PSAndGFuZ28nKSB7XHJcbiAgICAgIGlmICghdGhpcy51c2VyRm9ybS5jb250YWlucygndGFuZ29Vc2VyVHlwZScpKSB7XHJcbiAgICAgICAgdGhpcy51c2VyRm9ybS5hZGRDb250cm9sKCd0YW5nb1VzZXJUeXBlJywgdGhpcy5mYi5jb250cm9sKHRhbmdvVXNlclR5cGUgfHwgJ2Rhc2hib2FyZCcsIFZhbGlkYXRvcnMucmVxdWlyZWQpKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMudXNlckZvcm0uY29udGFpbnMoJ3RhbmdvVXNlclR5cGUnKSkge1xyXG4gICAgICAgIHRoaXMudXNlckZvcm0ucmVtb3ZlQ29udHJvbCgndGFuZ29Vc2VyVHlwZScpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0VXNlckZvcm0oKSB7XHJcbiAgICB0aGlzLnVzZXJGb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIHVzZXJOYW1lOiBbXCJcIiwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgIGVtYWlsOiBbXCJcIiwgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oXCJeW2EtekEtWjAtOV0rKFsuLV9dP1thLXpBLVowLTldKykqQFthLXpBLVowLTldKyhbLi1fXT9bYS16QS1aXSspKlsuXXsxfVthLXpBLVpdezIsfSRcIiksXHJcbiAgICAgIF0pXSxcclxuICAgICAgbW9iaWxlTnVtYmVyOiBbXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDgpLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxMyldXSxcclxuICAgICAgcm9sZTogW1widXNlclwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgdXNlclR5cGU6IFt0aGlzLnVzZXJUeXBlLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgcm9sZXNwZXJtaXNzaW9uOiB0aGlzLmZiLmFycmF5KFtdLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcclxuICAgICAgdGVhbUxlYWQ6IHRoaXMuZmIuYXJyYXkoW10pLFxyXG4gICAgICBjb3VudHJ5Q29kZTogW1wiOTFcIiwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAodGhpcy51c2VyVHlwZSA9PT0gJ3RhbmdvJykge1xyXG4gICAgICBpZiAoIXRoaXMudXNlckZvcm0uY29udGFpbnMoJ3RhbmdvVXNlclR5cGUnKSkge1xyXG4gICAgICAgIHRoaXMudXNlckZvcm0uYWRkQ29udHJvbCgndGFuZ29Vc2VyVHlwZScsIHRoaXMuZmIuY29udHJvbCgnZGFzaGJvYXJkJywgVmFsaWRhdG9ycy5yZXF1aXJlZCkpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy51c2VyRm9ybS5jb250YWlucygndGFuZ29Vc2VyVHlwZScpKSB7XHJcbiAgICAgICAgdGhpcy51c2VyRm9ybS5yZW1vdmVDb250cm9sKCd0YW5nb1VzZXJUeXBlJyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuZ2V0VXNlclBlcm1pc3Npb25EYXRhKFwidXNlclwiLCB0aGlzLnVzZXJfZGF0YS51c2VyVHlwZSk7XHJcbiAgfVxyXG4gIHBvcHVsYXRlUGVybWlzc2lvbihwZXJtaXNzaW9uc0RhdGE6IGFueVtdKSB7XHJcbiAgICBjb25zdCBwZXJtaXNzaW9ucyA9IHRoaXMudXNlckZvcm0uZ2V0KFwicm9sZXNwZXJtaXNzaW9uXCIpIGFzIEZvcm1BcnJheTtcclxuICAgIHBlcm1pc3Npb25zLmNsZWFyKCk7ICAvLyBDbGVhciBleGlzdGluZyBlbnRyaWVzXHJcblxyXG4gICAgcGVybWlzc2lvbnNEYXRhLmZvckVhY2goKHJvbGVzcGVybWlzc2lvbjogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGZlYXR1cmVHcm91cCA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgIGZlYXR1cmVOYW1lOiBbcm9sZXNwZXJtaXNzaW9uPy5mZWF0dXJlTmFtZV0sXHJcbiAgICAgICAgbW9kdWxlczogdGhpcy5mYi5hcnJheShbXSksICAvLyBJbml0aWFsaXplIG1vZHVsZXMgYXMgYSBGb3JtQXJyYXlcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBjb25zdCBtb2R1bGVzQXJyYXkgPSBmZWF0dXJlR3JvdXAuZ2V0KFwibW9kdWxlc1wiKSBhcyBGb3JtQXJyYXk7XHJcbiAgICAgIHJvbGVzcGVybWlzc2lvbi5tb2R1bGVzLmZvckVhY2goKG1vZHVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgbW9kdWxlR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICAgIG5hbWU6IFttb2R1bGUubmFtZV0sXHJcbiAgICAgICAgICBpc0FkZDogW3sgdmFsdWU6IG1vZHVsZS5pc0FkZCwgZGlzYWJsZWQ6IHRoaXMudHlwZSA9PT0gJ3ZpZXcnIH1dLCAvLyBTZXQgZGlzYWJsZWQgYmFzZWQgb24gdHlwZVxyXG4gICAgICAgICAgaXNFZGl0OiBbeyB2YWx1ZTogbW9kdWxlLmlzRWRpdCwgZGlzYWJsZWQ6IHRoaXMudHlwZSA9PT0gJ3ZpZXcnIH1dLCAvLyBTZXQgZGlzYWJsZWQgYmFzZWQgb24gdHlwZVxyXG4gICAgICAgICAgLy8gaXNEZWxldGU6IFttb2R1bGUuaXNEZWxldGVdLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIG1vZHVsZXNBcnJheS5wdXNoKG1vZHVsZUdyb3VwKTsgIC8vIEFkZCBlYWNoIG1vZHVsZSB0byBtb2R1bGVzIGFycmF5XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgcGVybWlzc2lvbnMucHVzaChmZWF0dXJlR3JvdXApOyAgLy8gQWRkIGVhY2ggZmVhdHVyZSBncm91cCB0byBwZXJtaXNzaW9uc1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gVHJpZ2dlciB2YWxpZGF0aW9uIGFmdGVyIHBvcHVsYXRpbmdcclxuICAgIHBlcm1pc3Npb25zLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICB9XHJcblxyXG4gIGdldFBlcm1pc3Npb25zKCk6IEZvcm1BcnJheSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZyh0aGlzLnVzZXJGb3JtLnZhbHVlKVxyXG4gICAgcmV0dXJuIHRoaXMudXNlckZvcm0uZ2V0KFwicm9sZXNwZXJtaXNzaW9uXCIpIGFzIEZvcm1BcnJheTtcclxuXHJcbiAgfVxyXG4gIGdldEZlYXR1cmVQZXJtaXNzaW9ucyhyb2xlc3Blcm1pc3Npb246IEZvcm1Hcm91cCB8IGFueSk6IEZvcm1BcnJheSB7XHJcbiAgICByZXR1cm4gcm9sZXNwZXJtaXNzaW9uLmdldChcIm1vZHVsZXNcIikgYXMgRm9ybUFycmF5O1xyXG4gIH1cclxuICBnZXRVc2VyUGVybWlzc2lvbkRhdGEocm9sZU5hbWU6IHN0cmluZywgdXNlclR5cGU6IHN0cmluZykge1xyXG4gICAgKHRoaXMudXNlckZvcm0/LmdldChcInJvbGVzcGVybWlzc2lvblwiKSBhcyBGb3JtQXJyYXkpLmNsZWFyKCk7XHJcbiAgICB0aGlzLnBvcHVsYXRlUGVybWlzc2lvbih0aGlzLnBlcm1pc3Npb25BcnJheSk7XHJcbiAgfVxyXG4gIGNhbWVsQ2FzZVRvVGV4dChpbnB1dDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBpbnB1dC5yZXBsYWNlKC8oW0EtWl0pL2csICcgJDEnKVxyXG4gICAgICAucmVwbGFjZSgvXi4vLCAoc3RyKSA9PiBzdHIudG9VcHBlckNhc2UoKSlcclxuICAgICAgLnRyaW0oKTtcclxuICB9XHJcbm9yaWdpbmFsRW1haWw6IHN0cmluZyA9ICcnO1xyXG5vcmlnaW5hbE1vYmlsZTogc3RyaW5nID0gJyc7XHJcbmFkZFVzZXJTdWJtaXQoKSB7XHJcbiAgbGV0IHZhbHVlID0gdGhpcy51cGRhdGVQZXJtaXNzaW9uc0Jhc2VkT25Vc2VyVHlwZSh0aGlzLnVzZXJGb3JtLnZhbHVlKTtcclxuICBjb25zdCB1cGRhdGVkRGF0YSA9IHRoaXMucmVtb3ZlTnVsbFZhbHVlcyh2YWx1ZSk7XHJcblxyXG4gIGNvbnN0IGNsaWVudElkID0gdGhpcy4kaGVhZGVyRmlsdGVycy5jbGllbnQgPyB0aGlzLiRoZWFkZXJGaWx0ZXJzLmNsaWVudCA6IHRoaXMudXNlcl9kYXRhLmNsaWVudElkO1xyXG5cclxuICB0aGlzLnVzZXJTZXJ2aWNlLmNyZWF0ZVNpbmdsZVVzZXJzKHsgLi4udXBkYXRlZERhdGEsIGNsaWVudElkIH0pLnN1YnNjcmliZSh7XHJcbiAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICB0aGlzLnRzLmdldFN1Y2Nlc3NUb2FzdChcIlVzZXIgY3JlYXRlZCBzdWNjZXNzZnVsbHkuXCIpO1xyXG4gICAgICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoJ3N1Ym1pdCcpO1xyXG4gICAgICAgIHRoaXMuZ3MubWFuYWdlUmVmcmVzaFRyaWdnZXIubmV4dCh0cnVlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnRzLmdldEVycm9yVG9hc3QoXCJVbmFibGUgdG8gY3JlYXRlIFVzZXIhXCIpO1xyXG4gICAgICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoJ3N1Ym1pdCcpO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnRzLmdldEVycm9yVG9hc3QoZXJyPy5lcnJvcj8uZXJyb3IgPyBlcnI/LmVycm9yPy5lcnJvciA6IFwiVW5hYmxlIHRvIGNyZWF0ZSBVc2VyIVwiKTtcclxuICAgICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgpO1xyXG4gICAgfSxcclxuICAgIGNvbXBsZXRlOiAoKSA9PiB7fVxyXG4gIH0pO1xyXG59XHJcblxyXG4gIG9uU3VibWl0KCkge1xyXG4gICAgaWYgKHRoaXMudHlwZSA9PSBcImVkaXRcIikge1xyXG4gICAgICB0aGlzLnVzZXJVcGRhdGUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYWRkVXNlclN1Ym1pdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuICB1c2VyVXBkYXRlKCkge1xyXG50aGlzLnVzZXJGb3JtLmdldChcImVtYWlsXCIpPy5lbmFibGUoKTtcclxubGV0IHVzZXI6IGFueSA9IHRoaXMudXNlckZvcm0udmFsdWU7XHJcbmlmICghdXNlci5tb2JpbGVOdW1iZXIgfHwgdXNlci5tb2JpbGVOdW1iZXIuaW5jbHVkZXMoJyonKSkge1xyXG4gIHVzZXIubW9iaWxlTnVtYmVyID0gdGhpcy5vcmlnaW5hbE1vYmlsZTtcclxufSBlbHNlIHtcclxuIHVzZXIubW9iaWxlTnVtYmVyO1xyXG59XHJcblxyXG51c2VyLmVtYWlsID0gdGhpcy5vcmlnaW5hbEVtYWlsO1xyXG50aGlzLnVzZXJGb3JtLmdldChcImVtYWlsXCIpPy5kaXNhYmxlKCk7XHJcblxyXG50eXBlIFJvbGUgPSAndXNlcicgfCAnYWRtaW4nIHwgJ3N1cGVyYWRtaW4nO1xyXG5sZXQgbWFwcGluZzogUmVjb3JkPFJvbGUsIG51bWJlcj4gPSB7XHJcbiAgdXNlcjogMSxcclxuICBhZG1pbjogMixcclxuICBzdXBlcmFkbWluOiAzLFxyXG59O1xyXG5cclxubGV0IG9sZFJvbGU6IFJvbGUgPSB0aGlzLnVzZXIucm9sZTtcclxubGV0IHVwZGF0ZWRSb2xlOiBSb2xlID0gdXNlci5yb2xlO1xyXG5cclxuaWYodXNlcj8ucm9sZSAmJiBtYXBwaW5nW29sZFJvbGVdPG1hcHBpbmdbdXBkYXRlZFJvbGVdKXtcclxudGhpcy51c2VyW1wicm9sZVN0YXR1c1wiXSA9IFwidXBcIlxyXG4gICB0aGlzLnNlcnZpY2UuZ2V0VXNlclRlYW1zKHtlbWFpbDp1c2VyLmVtYWlsLCB0eXBlOlwidXNlclwifSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDAgJiYgcmVzLmRhdGE/LnJlc3VsdD8ubGVuZ3RoID4gMCkgeyAgICAgICBcclxuICAgICAgICAgIHRoaXMudXNlcltcInRlYW1zXCJdID0gcmVzLmRhdGEucmVzdWx0XHJcbiAgICAgICAgICAvLyAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgpO1xyXG5jb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oQWxlcnRQb3B1cENvbXBvbmVudCwgeyBjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ21kJywgYmFja2Ryb3A6IFwic3RhdGljXCIgfSk7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS51c2VyID0gdGhpcy51c2VyXHJcblxyXG4gICAgIG1vZGFsUmVmLnJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCA9PT0gJ3N1Ym1pdCcpIHtcclxuICAgICAgICAgdXNlci50ZWFtTGVhZCA9IFtdXHJcbiAgIHRoaXMuc2VydmljZS51cGRhdGVVc2Vycyh1c2VyKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy50cy5nZXRTdWNjZXNzVG9hc3QoXHJcbiAgICAgICAgICAgIFwiVXNlciBkZXRhaWxzIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5LlwiXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgnc3VibWl0Jyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChcIlVuYWJsZSB0byB1cGRhdGUgVXNlciFcIik7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChlcnI/LmVycm9yPy5lcnJvciA/IGVycj8uZXJyb3I/LmVycm9yIDogXCJVbmFibGUgdG8gdXBkYXRlIFVzZXIhXCIpO1xyXG4gICAgICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoKTtcclxuICAgICAgfSxcclxuICAgICAgY29tcGxldGU6ICgpID0+IHsgfSxcclxuICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNlcnZpY2UudXBkYXRlVXNlcnModXNlcikuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMudHMuZ2V0U3VjY2Vzc1RvYXN0KFxyXG4gICAgICAgICAgICBcIlVzZXIgZGV0YWlscyB1cGRhdGVkIHN1Y2Nlc3NmdWxseS5cIlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoJ3N1Ym1pdCcpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnRzLmdldEVycm9yVG9hc3QoXCJVbmFibGUgdG8gdXBkYXRlIFVzZXIhXCIpO1xyXG4gICAgICAgICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICB0aGlzLnRzLmdldEVycm9yVG9hc3QoZXJyPy5lcnJvcj8uZXJyb3IgPyBlcnI/LmVycm9yPy5lcnJvciA6IFwiVW5hYmxlIHRvIHVwZGF0ZSBVc2VyIVwiKTtcclxuICAgICAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGNvbXBsZXRlOiAoKSA9PiB7IH0sXHJcbiAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KGVycj8uZXJyb3I/LmVycm9yID8gZXJyPy5lcnJvcj8uZXJyb3IgOiBcIlVuYWJsZSB0byB1cGRhdGUgVXNlciFcIik7XHJcbiAgICAgICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgpO1xyXG4gICAgICB9LFxyXG4gICAgICBjb21wbGV0ZTogKCkgPT4geyB9LFxyXG4gICAgfSk7XHJcblxyXG59ZWxzZSBpZih1c2VyPy5yb2xlICYmIG1hcHBpbmdbb2xkUm9sZV0+bWFwcGluZ1t1cGRhdGVkUm9sZV0pe1xyXG50aGlzLnVzZXJbXCJyb2xlU3RhdHVzXCJdID0gXCJkb3duXCJcclxuXHJcbmlmKCF0aGlzLnVzZXIubGFzdE9uZSl7XHJcbiAgICB0aGlzLnNlcnZpY2UuZ2V0VXNlclRlYW1zKHtlbWFpbDp1c2VyLmVtYWlsLCB0eXBlOlwibGVhZFwifSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDAgJiYgcmVzLmRhdGEucmVzdWx0Py5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHRoaXMudXNlcltcInRlYW1zXCJdID0gcmVzLmRhdGEucmVzdWx0XHJcbiAgICAgICAgICAvLyAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgpO1xyXG4gICAgICAgIC8vICBjb25zb2xlLmxvZyh7dXNlcjp0aGlzLnVzZXIsIHJvbGUxOm1hcHBpbmdbb2xkUm9sZV0sICByb2xlMjptYXBwaW5nW3VwZGF0ZWRSb2xlXSxtZXNnOlwiLi4uLi4uLi4uLi4uLjJcIiwgcm9sZTp1c2VyPy5yb2xlfSlcclxuY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEFsZXJ0UG9wdXBDb21wb25lbnQsIHsgY2VudGVyZWQ6IHRydWUsIHNpemU6ICdtZCcsIGJhY2tkcm9wOiBcInN0YXRpY1wiIH0pO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UudXNlciA9IHRoaXMudXNlclxyXG5cclxuICAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQgPT09ICdzdWJtaXQnKSB7XHJcbiAgICAgICAgLy8gIHVzZXIudGVhbUxlYWQgPSBbXVxyXG4gICB0aGlzLnNlcnZpY2UudXBkYXRlVXNlcnModXNlcikuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMudHMuZ2V0U3VjY2Vzc1RvYXN0KFxyXG4gICAgICAgICAgICBcIlVzZXIgZGV0YWlscyB1cGRhdGVkIHN1Y2Nlc3NmdWxseS5cIlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoJ3N1Ym1pdCcpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnRzLmdldEVycm9yVG9hc3QoXCJVbmFibGUgdG8gdXBkYXRlIFVzZXIhXCIpO1xyXG4gICAgICAgICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6YW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KGVycj8uZXJyb3I/LmVycm9yID8gZXJyPy5lcnJvcj8uZXJyb3IgOiBcIlVuYWJsZSB0byB1cGRhdGUgVXNlciFcIik7XHJcbiAgICAgICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgpO1xyXG4gICAgICB9LFxyXG4gICAgICBjb21wbGV0ZTogKCkgPT4geyB9LFxyXG4gICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VydmljZS51cGRhdGVVc2Vycyh1c2VyKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy50cy5nZXRTdWNjZXNzVG9hc3QoXHJcbiAgICAgICAgICAgIFwiVXNlciBkZXRhaWxzIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5LlwiXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgnc3VibWl0Jyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChcIlVuYWJsZSB0byB1cGRhdGUgVXNlciFcIik7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChlcnI/LmVycm9yPy5lcnJvciA/IGVycj8uZXJyb3I/LmVycm9yIDogXCJVbmFibGUgdG8gdXBkYXRlIFVzZXIhXCIpO1xyXG4gICAgICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoKTtcclxuICAgICAgfSxcclxuICAgICAgY29tcGxldGU6ICgpID0+IHsgfSxcclxuICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICB0aGlzLnRzLmdldEVycm9yVG9hc3QoZXJyPy5lcnJvcj8uZXJyb3IgPyBlcnI/LmVycm9yPy5lcnJvciA6IFwiVW5hYmxlIHRvIHVwZGF0ZSBVc2VyIVwiKTtcclxuICAgICAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGNvbXBsZXRlOiAoKSA9PiB7IH0sXHJcbiAgICB9KTtcclxufWVsc2V7XHJcbiAgICAgIC8vICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCk7XHJcbmNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihBbGVydFBvcHVwQ29tcG9uZW50LCB7IGNlbnRlcmVkOiB0cnVlLCBzaXplOiAnbWQnLCBiYWNrZHJvcDogXCJzdGF0aWNcIiB9KTtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnVzZXIgPSB0aGlzLnVzZXJcclxuXHJcbiAgICAgIG1vZGFsUmVmLnJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCA9PT0gJ3N1Ym1pdCcpIHtcclxuICAgICAgICAvLyAgdXNlci50ZWFtTGVhZCA9IFtdXHJcbiAgIHRoaXMuc2VydmljZS51cGRhdGVVc2Vycyh1c2VyKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy50cy5nZXRTdWNjZXNzVG9hc3QoXHJcbiAgICAgICAgICAgIFwiVXNlciBkZXRhaWxzIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5LlwiXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgnc3VibWl0Jyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChcIlVuYWJsZSB0byB1cGRhdGUgVXNlciFcIik7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycjphbnkpID0+IHtcclxuICAgICAgICB0aGlzLnRzLmdldEVycm9yVG9hc3QoZXJyPy5lcnJvcj8uZXJyb3IgPyBlcnI/LmVycm9yPy5lcnJvciA6IFwiVW5hYmxlIHRvIHVwZGF0ZSBVc2VyIVwiKTtcclxuICAgICAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGNvbXBsZXRlOiAoKSA9PiB7IH0sXHJcbiAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBcclxuICAgIFxyXG59XHJcblxyXG5cclxufVxyXG5lbHNle1xyXG4gIHRoaXMuc2VydmljZS51cGRhdGVVc2Vycyh1c2VyKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy50cy5nZXRTdWNjZXNzVG9hc3QoXHJcbiAgICAgICAgICAgIFwiVXNlciBkZXRhaWxzIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5LlwiXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgnc3VibWl0Jyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChcIlVuYWJsZSB0byB1cGRhdGUgVXNlciFcIik7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChlcnI/LmVycm9yPy5lcnJvciA/IGVycj8uZXJyb3I/LmVycm9yIDogXCJVbmFibGUgdG8gdXBkYXRlIFVzZXIhXCIpO1xyXG4gICAgICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoKTtcclxuICAgICAgfSxcclxuICAgICAgY29tcGxldGU6ICgpID0+IHsgfSxcclxuICAgIH0pO1xyXG59XHJcbiAgICBcclxuICB9XHJcbiAgdXBkYXRlUGVybWlzc2lvbnNCYXNlZE9uVXNlclR5cGUodXNlcjogYW55KSB7XHJcbiAgICB1c2VyLnJvbGVzcGVybWlzc2lvbi5mb3JFYWNoKChmZWF0dXJlOiBhbnkpID0+IHtcclxuICAgICAgZmVhdHVyZS5tb2R1bGVzLmZvckVhY2goKG1vZHVsZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIC8vIGlmICh1c2VyLnVzZXJUeXBlID09PSBcInN1cGVyQWRtaW5cIikge1xyXG4gICAgICAgIC8vICAgbW9kdWxlcy5pc0FkZCA9IHRydWU7XHJcbiAgICAgICAgLy8gICBtb2R1bGVzLmlzRWRpdCA9IHRydWU7XHJcbiAgICAgICAgLy8gICAvLyBtb2R1bGVzLmlzRGVsZXRlID0gdHJ1ZTtcclxuICAgICAgICAvLyB9IGVsc2UgXHJcbiAgICAgICAgaWYgKHVzZXIudXNlclR5cGUgPT09IFwidXNlcnNcIikge1xyXG4gICAgICAgICAgbW9kdWxlcy5pc0FkZCA9IGZhbHNlO1xyXG4gICAgICAgICAgbW9kdWxlcy5pc0VkaXQgPSBmYWxzZTtcclxuICAgICAgICAgIC8vIG1vZHVsZXMuaXNEZWxldGUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdXNlcjtcclxuICB9XHJcbiAgcmVtb3ZlTnVsbFZhbHVlcyA9IChkYXRhOiBhbnkpID0+IHtcclxuICAgIGlmICghQXJyYXkuaXNBcnJheShkYXRhLnJvbGVzcGVybWlzc2lvbikpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGVybWlzc2lvbiBpcyBub3QgYW4gYXJyYXlcIik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTWFwIHRocm91Z2ggdGhlIHBlcm1pc3Npb25zIGFuZCBwcm9kdWN0cyB0byByZW1vdmUgbnVsbCB2YWx1ZXNcclxuICAgIHJldHVybiB7XHJcbiAgICAgIC4uLmRhdGEsXHJcbiAgICAgIHJvbGVzcGVybWlzc2lvbjogZGF0YS5yb2xlc3Blcm1pc3Npb24ubWFwKChmZWF0dXJlOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgLi4uZmVhdHVyZSxcclxuICAgICAgICAgIG1vZHVsZXM6IGZlYXR1cmUubW9kdWxlcy5tYXAoKG1vZHVsZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdQcm9kdWN0OiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG1vZHVsZXMpKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHZhbHVlICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBuZXdQcm9kdWN0W2tleV0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIG5ld1Byb2R1Y3Q7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pXHJcbiAgICB9O1xyXG4gIH07XHJcbiAgZ2V0QWxsVGVhbXNMaXN0KCkge1xyXG4gICAgdGhpcy5zZXJ2aWNlLmdldEFsbFRlYW1zTGlzdCh7IGNsaWVudElkOiB0aGlzLiRoZWFkZXJGaWx0ZXJzLmNsaWVudCB9KS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kpKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy50ZWFtTGlzdCA9IHJlcy5kYXRhLnJlc3VsdFxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICB9XHJcbiAgZWRpdFVzZXIoKSB7XHJcbiAgICBpZiAodGhpcy51c2VyPy5pc0FjdGl2ZSkge1xyXG4gICAgICB0aGlzLnR5cGUgPSBcImVkaXRcIjtcclxuICAgICAgdGhpcy51c2VyRm9ybS5lbmFibGUoKTtcclxuICAgICAgdGhpcy51c2VyRm9ybS5nZXQoXCJlbWFpbFwiKT8uZGlzYWJsZSgpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnVzZXI/LnN0YXR1cyA9PT0gJ2FjdGl2ZScpIHtcclxuICAgICAgdGhpcy50eXBlID0gXCJ2aWV3XCI7XHJcbiAgICAgIHRoaXMudXNlckZvcm0uZW5hYmxlKCk7XHJcbiAgICAgIHRoaXMudXNlckZvcm0uZ2V0KFwiZW1haWxcIik/LmRpc2FibGUoKTtcclxuICAgIH1cclxuICB9XHJcbiAgaXNCdXR0b25EaXNhYmxlZCgpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHsgdGVhbUxlYWQsIC4uLmNvbnRyb2xzVG9DaGVjayB9ID0gdGhpcy51c2VyRm9ybS5jb250cm9scztcclxuICAgIHJldHVybiBPYmplY3QudmFsdWVzKGNvbnRyb2xzVG9DaGVjaykuc29tZShjb250cm9sID0+IGNvbnRyb2wuaW52YWxpZCk7XHJcbiAgfVxyXG4gIHNldFRlYW1MZWFkcyh0ZWFtTGlzdDogYW55W10pIHtcclxuICAgIGNvbnN0IHRlYW1MZWFkQXJyYXkgPSB0aGlzLnVzZXJGb3JtLmdldCgndGVhbUxlYWQnKSBhcyBGb3JtQXJyYXk7XHJcbiAgICB0ZWFtTGlzdC5mb3JFYWNoKHRlYW0gPT4ge1xyXG4gICAgICAvLyBQdXNoIGVhY2ggdGVhbSBvYmplY3QgYXMgYSBuZXcgRm9ybUdyb3VwIGludG8gdGhlIHRlYW1MZWFkIEZvcm1BcnJheVxyXG4gICAgICBpZiAodGVhbS5jbGllbnRJZCkge1xyXG4gICAgICAgIHRlYW1MZWFkQXJyYXkucHVzaCh0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICAgIF9pZDogbmV3IEZvcm1Db250cm9sKHRlYW0uX2lkKSxcclxuICAgICAgICAgIGNsaWVudElkOiBuZXcgRm9ybUNvbnRyb2wodGVhbS5jbGllbnRJZCksXHJcbiAgICAgICAgICB0ZWFtTmFtZTogbmV3IEZvcm1Db250cm9sKHRlYW0udGVhbU5hbWUpLFxyXG4gICAgICAgICAgdXNlcnNDb3VudDogbmV3IEZvcm1Db250cm9sKHRlYW0udXNlcnNDb3VudClcclxuICAgICAgICB9KSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9taXRTcGVjaWFsQ2hhcihldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgY29uc3Qga2V5ID0gZXZlbnQua2V5O1xyXG4gICAgY29uc3QgcmVnZXggPSAvXlthLXpBLVowLTkgXy1dJC87XHJcbiAgICBpZiAoIXJlZ2V4LnRlc3Qoa2V5KSkge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgICBvbWl0U3BlY2lhbENoYXJQYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpIHtcclxuICBjb25zdCBjbGlwYm9hcmREYXRhID0gZXZlbnQuY2xpcGJvYXJkRGF0YSB8fCAgKHdpbmRvdyBhcyBhbnkpWydjbGlwYm9hcmREYXRhJ107O1xyXG4gIGNvbnN0IHBhc3RlZFRleHQgPSBjbGlwYm9hcmREYXRhLmdldERhdGEoJ3RleHQnKTtcclxuICBjb25zdCByZWdleCA9IC9eW2EtekEtWjAtOSBfLV0qJC87XHJcbiAgaWYgKCFyZWdleC50ZXN0KHBhc3RlZFRleHQpKSB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KFwiU3BlY2lhbCBjaGFyYWN0ZXJzIGFyZSBub3QgYWxsb3dlZC5cIik7XHJcbiAgfVxyXG4gIH1cclxuICBcclxuICBwcmV2ZW50Q2xvc2UoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbn0iLCI8ZGl2ICBjbGFzcz1cImNhcmQgcHQtMCBwYi0zIHNjcm9sbFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS0wIGQtZmxleCBmbGV4LXN0YXJ0IGZsZXgtY29sdW1uIHAtOSBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXktNSBkLWZsZXhcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtNzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nIGFsdD1cIlBpY1wiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL2FkZC1zdG9yZS1pY29uLnN2Z1wiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgdy0xMDBcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInR5cGUhPT0ndmlldycgJiYgdHlwZSE9PSdlZGl0J1wiIGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImZzLTQgdGV4dC1ncmF5LTgwMCB0ZXh0LWhvdmVyLXByaW1hcnkgZnctYm9sZCBtYi0wIHRpdGxlIGN1cnNvci1wb2ludGVyXCI+QWRkXHJcbiAgICAgICAgICAgICAgICAgICAgVXNlcjwvYT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGl0bGVcIj5QbGVhc2UgYWRkIHlvdXIgdXNlciBkZXRhaWxzPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIDxkaXYgKm5nSWY9XCJ0eXBlPT09J2VkaXQnXCIgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZnMtNCB0ZXh0LWdyYXktODAwIHRleHQtaG92ZXItcHJpbWFyeSBmdy1ib2xkIG1iLTAgdGl0bGUgY3Vyc29yLXBvaW50ZXJcIj5FZGl0IFVzZXIgRGV0YWlsczwvYT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGl0bGVcIj5QbGVhc2UgRWRpdCB5b3VyIHVzZXIgZGV0YWlsczwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0eXBlPT09J3ZpZXcnICYmIHR5cGUgIT09J2VkaXQnXCIgY2xhc3M9XCJjb2wtbWQtOVwiPlxyXG4gICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJmcy00IHRleHQtZ3JheS04MDAgdGV4dC1ob3Zlci1wcmltYXJ5IGZ3LWJvbGQgbWItMCB0aXRsZSBjdXJzb3ItcG9pbnRlclwiPlVzZXIgRGV0YWlsczwvYT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGl0bGVcIj5WaWV3IHlvdXIgdXNlciBkZXRhaWxzPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib3BlcmF0aW9uVHlwZSE9PSd2aWV3J1wiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfGFzeW5jKT8uR2xvYmFsX1VzZXJfaXNFZGl0ICYmIHR5cGUgPT09J3ZpZXcnICAmJiB0eXBlICE9PSdlZGl0JyAmJiB1c2VyPy5yb2xlICE9PSAnc3VwZXJhZG1pbicgJiYgdXNlcj8uaXNBY3RpdmUgPT0gdHJ1ZVwiIGNsYXNzPVwiY29sLW1kLTMgdGV4dC1lbmQgcHgtMFwiIChjbGljayk9XCJlZGl0VXNlcigpXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMzgzM184NTkwOClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05LjE2NjAyIDMuMzMzMkgzLjMzMjY4QzIuODkwNjUgMy4zMzMyIDIuNDY2NzMgMy41MDg3OSAyLjE1NDE3IDMuODIxMzVDMS44NDE2MSA0LjEzMzkxIDEuNjY2MDIgNC41NTc4NCAxLjY2NjAyIDQuOTk5ODZWMTYuNjY2NUMxLjY2NjAyIDE3LjEwODYgMS44NDE2MSAxNy41MzI1IDIuMTU0MTcgMTcuODQ1QzIuNDY2NzMgMTguMTU3NiAyLjg5MDY1IDE4LjMzMzIgMy4zMzI2OCAxOC4zMzMySDE0Ljk5OTNDMTUuNDQxNCAxOC4zMzMyIDE1Ljg2NTMgMTguMTU3NiAxNi4xNzc5IDE3Ljg0NUMxNi40OTA0IDE3LjUzMjUgMTYuNjY2IDE3LjEwODYgMTYuNjY2IDE2LjY2NjVWMTAuODMzMk0xNS40MTYgMi4wODMyQzE1Ljc0NzUgMS43NTE2OCAxNi4xOTcyIDEuNTY1NDMgMTYuNjY2IDEuNTY1NDNDMTcuMTM0OSAxLjU2NTQzIDE3LjU4NDUgMS43NTE2OCAxNy45MTYgMi4wODMyQzE4LjI0NzUgMi40MTQ3MiAxOC40MzM4IDIuODY0MzYgMTguNDMzOCAzLjMzMzJDMTguNDMzOCAzLjgwMjA0IDE4LjI0NzUgNC4yNTE2OCAxNy45MTYgNC41ODMyTDkuOTk5MzUgMTIuNDk5OUw2LjY2NjAyIDEzLjMzMzJMNy40OTkzNSA5Ljk5OTg2TDE1LjQxNiAyLjA4MzJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zODMzXzg1OTA4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInR5cGU9PT0nZWRpdCcgICYmIHR5cGUgIT09J3ZpZXcnXCIgY2xhc3M9XCJjb2wtbWQtOVwiPlxyXG4gICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJmcy00IHRleHQtZ3JheS04MDAgdGV4dC1ob3Zlci1wcmltYXJ5IGZ3LWJvbGQgbWItMCB0aXRsZSBjdXJzb3ItcG9pbnRlclwiPlVzZXIgRGV0YWlsczwvYT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGl0bGVcIj5FZGl0IHlvdXIgdXNlciBkZXRhaWxzPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgaC0wcHggc2Nyb2xsXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNVwiICpuZ0lmPVwidXNlckZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cInVzZXJGb3JtXCIgbm92YWxpZGF0ZT1cIm5vdmFsaWRhdGVcIiAoa2V5ZG93bi5lbnRlcik9XCJwcmV2ZW50Q2xvc2UoJGV2ZW50KVwiIGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHgtMCBtZS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFVzZXIgTmFtZSBGaWVsZCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgY29sLXhsLTYgY29sLXh4bC02IG1iLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInVzZXJuYW1lXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+VXNlciBOYW1lIDxzcGFuIGNsYXNzPVwiYWxlcnQtcmVxdWlyZWQgdGV4dC1kYW5nZXJcIj4qPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJ1c2VybmFtZVwiIGZvcm1Db250cm9sTmFtZT1cInVzZXJOYW1lXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKGtleXByZXNzKT1cIm9taXRTcGVjaWFsQ2hhcigkZXZlbnQpXCIgKHBhc3RlKT1cIm9taXRTcGVjaWFsQ2hhclBhc3RlKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInVzZXJGb3JtLmdldCgndXNlck5hbWUnKT8uaW52YWxpZCAmJiAodXNlckZvcm0uZ2V0KCd1c2VyTmFtZScpPy5kaXJ0eSlcIiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsICpuZ0lmPVwidXNlckZvcm0uZ2V0KCd1c2VyTmFtZScpPy5lcnJvcnM/LlsncmVxdWlyZWQnXVwiPlVzZXIgTmFtZSBpcyByZXF1aXJlZC48L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBFbWFpbCBGaWVsZCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgY29sLXhsLTYgY29sLXh4bC02IG1iLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImVtYWlsXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+RW1haWwgPHNwYW4gY2xhc3M9XCJhbGVydC1yZXF1aXJlZCB0ZXh0LWRhbmdlclwiPio8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJlbWFpbFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJlbWFpbFwiIGZvcm1Db250cm9sTmFtZT1cImVtYWlsXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ1c2VyRm9ybS5nZXQoJ2VtYWlsJyk/LmludmFsaWQgJiYgdXNlckZvcm0uZ2V0KCdlbWFpbCcpPy50b3VjaGVkXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCAqbmdJZj1cInVzZXJGb3JtLmdldCgnZW1haWwnKT8uZXJyb3JzPy5bJ3JlcXVpcmVkJ11cIj5FbWFpbCBpcyByZXF1aXJlZC48L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCAqbmdJZj1cInVzZXJGb3JtLmdldCgnZW1haWwnKT8uZXJyb3JzPy5bJ3BhdHRlcm4nXVwiPkludmFsaWQgZW1haWwgZm9ybWF0Ljwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIENvbnRhY3QgTnVtYmVyIEZpZWxkIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBjb2wteGwtNiBjb2wteHhsLTYgbWItN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiY29udGFjdFwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkNvbnRhY3QgTnVtYmVyIDxzcGFuIGNsYXNzPVwiYWxlcnQtcmVxdWlyZWQgdGV4dC1kYW5nZXJcIj4qPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy00IGNvbC14bC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1zZWxlY3QgcHMtMyBwZS04XCIgaWQ9XCJpbnB1dEdyb3VwU2VsZWN0MDFcIiBmb3JtQ29udHJvbE5hbWU9XCJjb3VudHJ5Q29kZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBjb3VudHJ5IG9mIGNvdW50cnlMaXN0XCIgW3ZhbHVlXT1cImNvdW50cnkucGhvbmVjb2RlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb3VudHJ5Lm5hbWV9fSAoe3tjb3VudHJ5LnBob25lY29kZX19KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTggY29sLXhsLThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cIm1vYmlsZU51bWJlclwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIGZvcm1Db250cm9sTmFtZT1cIm1vYmlsZU51bWJlclwiIG1pbmxlbmd0aD1cIjhcIiBtYXhsZW5ndGg9XCIxM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInVzZXJGb3JtLmdldCgnbW9iaWxlTnVtYmVyJyk/LmludmFsaWQgJiYgdXNlckZvcm0uZ2V0KCdtb2JpbGVOdW1iZXInKT8udG91Y2hlZFwiIGNsYXNzPVwidGV4dC1kYW5nZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsICpuZ0lmPVwidXNlckZvcm0uZ2V0KCdtb2JpbGVOdW1iZXInKT8uZXJyb3JzPy5bJ3JlcXVpcmVkJ11cIj5Db250YWN0IE51bWJlciBpcyByZXF1aXJlZC48L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgKm5nSWY9XCJ1c2VyRm9ybS5nZXQoJ21vYmlsZU51bWJlcicpPy5lcnJvcnM/LlsnbWlubGVuZ3RoJ11cIj5Db250YWN0IE51bWJlciBtdXN0IGJlIGF0IGxlYXN0IDggZGlnaXRzLjwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCAqbmdJZj1cInVzZXJGb3JtLmdldCgnbW9iaWxlTnVtYmVyJyk/LmVycm9ycz8uWydtYXhsZW5ndGgnXVwiPkNvbnRhY3QgTnVtYmVyIGNhbm5vdCBleGNlZWQgMTMgZGlnaXRzLjwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUm9sZSBGaWVsZCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgY29sLXhsLTYgY29sLXh4bC02IG1iLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInJvbGVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5Sb2xlIDxzcGFuIGNsYXNzPVwiYWxlcnQtcmVxdWlyZWQgdGV4dC1kYW5nZXJcIj4qPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdFwiIGZvcm1Db250cm9sTmFtZT1cInJvbGVcIiAoY2hhbmdlKT1cIm9uUm9sZUNoYW5nZSh1c2VyRm9ybS5nZXQoJ3JvbGUnKT8udmFsdWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFkbWluXCI+QWRtaW48L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwidXNlclwiPlVzZXI8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ1c2VyRm9ybS5nZXQoJ3JvbGUnKT8uaW52YWxpZCAmJiB1c2VyRm9ybS5nZXQoJ3JvbGUnKT8udG91Y2hlZFwiIGNsYXNzPVwidGV4dC1kYW5nZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgKm5nSWY9XCJ1c2VyRm9ybS5nZXQoJ3JvbGUnKT8uZXJyb3JzPy5bJ3JlcXVpcmVkJ11cIj5Sb2xlIGlzIHJlcXVpcmVkLjwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEFkZCB0byBUZWFtIEZpZWxkIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctMTIgY29sLXhsLTEyIGNvbC14eGwtMTIgbWItNVwiICpuZ0lmPVwidGhpcy51c2VyVHlwZSAhPT0ndGFuZ28nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJ0ZWFtTGVhZFwiIGNsYXNzPVwiZm9ybS1sYWJlbCB0ZWFtcy10aXRsZVwiPkFkZCB0byBhIHRlYW08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVhbS1zZWxlY3QgW2l0ZW1zXT1cInRlYW1MaXN0XCIgW211bHRpXT1cInRydWVcIiBbc2VhcmNoRmllbGRdPVwiJ3RlYW1OYW1lJ1wiIFtpZEZpZWxkXT1cIidfaWQnXCIgW2Rpc2FibGVkXT1cInR5cGUgPT09ICd2aWV3JyA/IHRydWUgOiBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWQpPVwib25TdG9yZVNlbGVjdCgkZXZlbnQpXCIgW3NlbGVjdGVkVmFsdWVzXT1cInNlbGVjdGVkVXNlclwiPjwvdGVhbS1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInVzZXJGb3JtLmdldCgncm9sZScpPy52YWx1ZSA9PT0gJ2FkbWluJ1wiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cInRlYW1zLXRpdGxlXCIgICpuZ0lmPVwiZ2V0UGVybWlzc2lvbnMoKS5sZW5ndGhcIj5BY2Nlc3MgZm9yIEFkbWluPC9oMz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJnZXRQZXJtaXNzaW9ucygpLmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgZm9ybUFycmF5TmFtZT1cInJvbGVzcGVybWlzc2lvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcm9sZXNwZXJtaXNzaW9uIG9mIGdldFBlcm1pc3Npb25zKCkuY29udHJvbHM7IGxldCBpID0gaW5kZXhcIiBbZm9ybUdyb3VwTmFtZV09XCJpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlIG15LTIgbWUtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1oZWFkZXIgbXQtNCBtcy0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNhbWVsQ2FzZVRvVGV4dChyb2xlc3Blcm1pc3Npb24uZ2V0KCdmZWF0dXJlTmFtZScpPy52YWx1ZSkgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb2xlc3Blcm1pc3Npb24uZ2V0KCdtb2R1bGVzJylcIiBmb3JtQXJyYXlOYW1lPVwibW9kdWxlc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbW9kdWxlcyBvZiBnZXRGZWF0dXJlUGVybWlzc2lvbnMocm9sZXNwZXJtaXNzaW9uKT8uY29udHJvbHM7IGxldCBqID0gaW5kZXhcIiBbZm9ybUdyb3VwTmFtZV09XCJqXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0lmPVwicm9sZXNwZXJtaXNzaW9uLmdldCgnZmVhdHVyZU5hbWUnKT8udmFsdWUgIT09ICdUYW5nb0FkbWluJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ3LTUwXCI+e3sgY2FtZWxDYXNlVG9UZXh0KG1vZHVsZXMuZ2V0KCduYW1lJyk/LnZhbHVlKSB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1pbmxpbmUtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBmb3JtQ29udHJvbE5hbWU9XCJpc0FkZFwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2hhbmdlKT1cImhhbmRsZVZpZXdDaGFuZ2UobW9kdWxlcylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdsb2JhbC1sYWJlbCBtcy0yIG10LWF1dG9cIj5BZGQ8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LXN0YXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtaW5saW5lLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiaXNFZGl0XCIgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjaGFuZ2UpPVwiaGFuZGxlRWRpdENoYW5nZShtb2R1bGVzKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ2xvYmFsLWxhYmVsIG1zLTIgbXQtYXV0b1wiPkVkaXQ8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicm9sZXNwZXJtaXNzaW9uLmdldCgnZmVhdHVyZU5hbWUnKT8udmFsdWUgPT09ICdUYW5nb0FkbWluJ1wiIGNsYXNzPVwicm93IHctMTAwIHRleHQtbm93cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiICpuZ0Zvcj1cImxldCBtb2R1bGVzIG9mIGdldEZlYXR1cmVQZXJtaXNzaW9ucyhyb2xlc3Blcm1pc3Npb24pPy5jb250cm9sczsgbGV0IGogPSBpbmRleFwiIFtmb3JtR3JvdXBOYW1lXT1cImpcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1pbmxpbmUtZmxleCBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIGZvcm1Db250cm9sTmFtZT1cImlzRWRpdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ2xvYmFsLWxhYmVsIG1iLTUgbXgtMiBtdC0xXCIgc3R5bGU9XCJ0ZXh0LXdyYXA6bm93cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNhbWVsQ2FzZVRvVGV4dChtb2R1bGVzLmdldCgnbmFtZScpPy52YWx1ZSkgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidHlwZSE9PSd2aWV3J1wiIGNsYXNzPVwiZC1mbGV4IG15LTEwXCIgcm9sZT1cImdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHctMTAwIG1lLTNcIiAoY2xpY2spPVwiY2FuY2VsKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMTAwIG1zLTNcIiBpZD1cImFsZXJ0LXRvYXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TdWJtaXQoKVwiIFtkaXNhYmxlZF09XCJ1c2VyRm9ybS5pbnZhbGlkIHx8IHR5cGUgPT09ICd2aWV3J1wiPlN1Ym1pdDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj4iXX0=