brainloper-ui 14.0.19 → 14.0.20

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.
@@ -169,7 +169,7 @@ export class DataTableComponent {
169
169
  }
170
170
  }
171
171
  validateRolAndPermission() {
172
- if (this.roleId == 0) {
172
+ if (this.roleId != 0) {
173
173
  let rolePermissions = rolesAndPermissions?.find(x => x.id == this.roleId);
174
174
  this.hasAccessToAll = rolePermissions?.hasAccessToAll ?? rolePermissions.modules?.find(x => x.id == this.moduleId)?.hasAccessToAll ?? false;
175
175
  }
@@ -688,4 +688,4 @@ var enumRules;
688
688
  enumRules[enumRules["=="] = 2] = "==";
689
689
  enumRules[enumRules["!="] = 3] = "!=";
690
690
  })(enumRules || (enumRules = {}));
691
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvYnJhaW5sb3Blci11aS9jb21wb25lbnRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvYnJhaW5sb3Blci11aS9jb21wb25lbnRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFdEUsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFHWixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0ZBQWdGLENBQUM7QUFFckgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBSzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzREFBc0QsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBSXBGLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxJQUFZLEVBQUUsUUFBZ0IsRUFBRSxNQUFjLEVBQUUsRUFBRTtJQUMzRSxJQUFJLE1BQU0sSUFBSSxDQUFDLElBQUksUUFBUSxJQUFJLENBQUMsRUFBRTtRQUNoQyxPQUFPLFFBQVEsTUFBTSxFQUFFLENBQUM7S0FDekI7SUFFRCxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFN0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLFFBQVEsQ0FBQztJQUVuQyxNQUFNLFFBQVEsR0FDWixVQUFVLEdBQUcsTUFBTTtRQUNqQixDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxV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QTtJQUNILHFDQUFJLENBQUE7SUFDSixxQ0FBSSxDQUFBO0FBQ04sQ0FBQyxFQUxJLFNBQVMsS0FBVCxTQUFTLFFBS2IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY3JlZW5TaXplVXRpbCB9IGZyb20gJy4vLi4vLi4vLi4vc2VydmljZXMvc2NyZWVuLXNpemUtdXRpbCc7XHJcbmltcG9ydCB7IEV4cG9ydERhdGFTZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi8uLi9zZXJ2aWNlcy9leHBvcnQtZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBUYWJsZU1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vYnJhaW5sb3Blci11aS9jb21wb25lbnRzL2RhdGEtdGFibGUvdGFibGUtbW9kYWwvdGFibGUtbW9kYWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSHR0cFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9odHRwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21lc3NhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEZ1bmN0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9mdW5jdGlvbnMuc2VydmljZSc7XHJcbmltcG9ydCB7IE1hdFBhZ2luYXRvckludGwgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBUb29sdGlwUG9zaXRpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuaW1wb3J0IHsgbW9kdWxlc0J5Um9sIH0gZnJvbSAnYnJhaW5sb3Blci1zaGFyZWQvZGlzdC9jb25zdGFudHMvcm9sZXNBbmRQZXJtaXNzaW9ucyc7XHJcbmltcG9ydCB7IElQZXJtaXNzaW9ucyB9IGZyb20gJ2JyYWlubG9wZXItc2hhcmVkL2Rpc3QvaW50ZXJmYWNlcy9JUGVybWlzc2lvbnMnO1xyXG5cclxuXHJcbmNvbnN0IHNwYW5pc2hSYW5nZUxhYmVsID0gKHBhZ2U6IG51bWJlciwgcGFnZVNpemU6IG51bWJlciwgbGVuZ3RoOiBudW1iZXIpID0+IHtcclxuICBpZiAobGVuZ3RoID09IDAgfHwgcGFnZVNpemUgPT0gMCkge1xyXG4gICAgcmV0dXJuIGAwIGRlICR7bGVuZ3RofWA7XHJcbiAgfVxyXG5cclxuICBsZW5ndGggPSBNYXRoLm1heChsZW5ndGgsIDApO1xyXG5cclxuICBjb25zdCBzdGFydEluZGV4ID0gcGFnZSAqIHBhZ2VTaXplO1xyXG5cclxuICBjb25zdCBlbmRJbmRleCA9XHJcbiAgICBzdGFydEluZGV4IDwgbGVuZ3RoXHJcbiAgICAgID8gTWF0aC5taW4oc3RhcnRJbmRleCArIHBhZ2VTaXplLCBsZW5ndGgpXHJcbiAgICAgIDogc3RhcnRJbmRleCArIHBhZ2VTaXplO1xyXG5cclxuICByZXR1cm4gYCR7c3RhcnRJbmRleCArIDF9IC0gJHtlbmRJbmRleH0gZGUgJHtsZW5ndGh9YDtcclxufTtcclxuXHJcbmNvbnN0IHJvbGVzQW5kUGVybWlzc2lvbnMgPSBtb2R1bGVzQnlSb2xcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkYXRhLXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YS10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGF0YS10YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0YVRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIEBJbnB1dCgpIHRpdGxlO1xyXG4gIEBJbnB1dCgpIGNvbHVtbnM7XHJcbiAgQElucHV0KCkgZGF0YTogYW55ID0gW107XHJcbiAgQElucHV0KCkgY29tYm87XHJcbiAgQElucHV0KCkgY29uZmlndXJhdGlvbiA9IHtcclxuICAgIGFkZDogZmFsc2UsXHJcbiAgICBlZGl0OiBmYWxzZSxcclxuICAgIGRlbGV0ZTogZmFsc2UsXHJcbiAgICBhY3RpdmU6IGZhbHNlLFxyXG4gICAgc2VsZWN0YWJsZTogZmFsc2UsXHJcbiAgICBwcmludDogZmFsc2UsXHJcbiAgICBhZGRQZXI6IGZhbHNlLFxyXG4gICAgZWRpdFBlcjogZmFsc2UsXHJcbiAgICBwcmltYXJ5S2V5OiAnaWQnLFxyXG4gICAgZXhwb3J0WHNseDogZmFsc2UsXHJcbiAgICBoaWRlVGl0bGU6IHRydWUsXHJcbiAgICBoaWRlRmlsdGVyOiB0cnVlLFxyXG4gICAgbm90SW5pdGlhbGl6ZTogZmFsc2UsXHJcbiAgICBleHBvcnRYc2x4QnlSb3c6IGZhbHNlLFxyXG4gICAgZXhwb3J0WHNseFdpdGhQYWdlczogZmFsc2UsXHJcbiAgICB2aWV3OiBmYWxzZSxcclxuICAgIGNsb3NlT3JkZXI6IGZhbHNlLFxyXG4gICAgcGFja09mZjogZmFsc2UsXHJcbiAgICBhZHZhbmNlOiBmYWxzZSxcclxuICAgIGFkdmFuY2VMYWJlbDogbnVsbCxcclxuICAgIGluY29tZTogZmFsc2UsXHJcbiAgICBleGl0OiBmYWxzZSxcclxuICAgIHNlbmRFbWFpbDogZmFsc2UsXHJcbiAgfTtcclxuXHJcbiAgQElucHV0KCkgcmVsb2FkVGFibGU6IEV2ZW50RW1pdHRlcjxhbnk+O1xyXG4gIEBJbnB1dCgpIHVybDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHBhcmFtczogQXJyYXk8YW55PjtcclxuICBASW5wdXQoKSB0aXRsZUxvYWRpbmc6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIG1lc3NhZ2VMb2FkaW5nOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBoZWFkZXJGaWxlWGxzbTogQXJyYXk8YW55PiA9IFtdO1xyXG4gIEBJbnB1dCgpIGhlYWRlckZpbHRlcnM6IEFycmF5PGFueT4gPSBbXTtcclxuICBASW5wdXQoKSB4c2x4VGl0bGVGaWVsZHM6IHN0cmluZ1tdO1xyXG4gIEBJbnB1dCgpIHhzbHhTaGVldE5hbWVGaWVsZHM6IHN0cmluZ1tdO1xyXG4gIEBJbnB1dCgpIHhzbHhCb2R5RmllbGRzOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgeHNseFBhcmFtczogQXJyYXk8YW55PiA9IG51bGw7XHJcbiAgQElucHV0KCkgcm9sZUlkOiBudW1iZXIgPSAwO1xyXG4gIEBJbnB1dCgpIG1vZHVsZUlkOiBudW1iZXIgPSAwO1xyXG4gIEBJbnB1dCgpIHN1Yk1vZHVsZUlkOiBudW1iZXIgPSAwO1xyXG5cclxuXHJcbiAgcHJpdmF0ZSBoYXNBY2Nlc3NUb0FsbCA9IHRydWU7XHJcbiAgcHJpdmF0ZSByb2xlc0FuZFBlcm1pc3Npb25Vc2VyOiBJUGVybWlzc2lvbnMgPSB7fSBhcyBJUGVybWlzc2lvbnM7XHJcblxyXG4gIEBPdXRwdXQoKSBjbGlja1JvdyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBhZGQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgZWRpdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBkZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgcHJpbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgZXhwb3J0WHNseEJ5Um93ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGFjdGl2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSB2aWV3ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGNsb3NlT3JkZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgcGFja09mZiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBhZHZhbmNlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGluY29tZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBleGl0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGludGVybmFsRGF0YSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBzZW5kRW1haWwgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgbW92aWwgPSBTY3JlZW5TaXplVXRpbC5pc01vYmlsZSgpO1xyXG4gIGZpbHRlcnNQb3N0OiBBcnJheTxhbnk+ID0gW107XHJcbiAgQFZpZXdDaGlsZChNYXRQYWdpbmF0b3IsIHsgc3RhdGljOiB0cnVlIH0pIHBhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xyXG5cclxuICBzZWxlY3RlZFJvd3MgPSBbXTsgLyoqIGFsbWFjZW5hIGxhcyBmaWxhcyBzZWxlY2Npb25hZGFzICovXHJcbiAgY2hlY2tib3hzID0ge307XHJcbiAgc2VsZWN0QWxsID0gZmFsc2U7XHJcbiAgaW5kZXRlcm1pbmF0ZVN0YXRlID0gZmFsc2U7XHJcbiAgZmlsdGVycztcclxuICBvcmlnaW5hbERhdGEgPSBbXTtcclxuICBwYWdpbmF0b3JBY3RpdmUgPSB0cnVlO1xyXG4gIHNjcmVlbjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIGlkX2NvbXBhbmlhO1xyXG5cclxuICBwYWdlU2l6ZU9wdGlvbnM6IG51bWJlcltdID0gWzUsIDEwLCAyNSwgNTAsIDEwMF07XHJcblxyXG4gIHBhZ2VTaXplID0gc2NyZWVuLndpZHRoID4gNTAwID8gMTAgOiA1O1xyXG4gIGxlbmd0aCA9IDA7XHJcblxyXG4gIHBhZ2UgPSAwO1xyXG5cclxuICBhYm92ZTogVG9vbHRpcFBvc2l0aW9uW10gPSBbJ2Fib3ZlJ107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwU2VydmljZSxcclxuICAgIHByaXZhdGUgbWVzc2FnZTogTWVzc2FnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZ1bmN0aW9uRXRlcjogRnVuY3Rpb25zU2VydmljZSxcclxuICAgIHByaXZhdGUgcGFnaW5hdG9yVHJhbnNsYXRlOiBNYXRQYWdpbmF0b3JJbnRsLFxyXG4gICAgcHJpdmF0ZSBleHBvcnRTZXJ2aWNlOiBFeHBvcnREYXRhU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5wYWdpbmF0b3JUcmFuc2xhdGUuaXRlbXNQZXJQYWdlTGFiZWwgPSAnRWxlbWVudG9zIHBvciBww6FnaW5hJztcclxuICAgIHRoaXMucGFnaW5hdG9yVHJhbnNsYXRlLm5leHRQYWdlTGFiZWwgPSAnU2lndWllbnRlIHDDoWdpbmEnO1xyXG4gICAgdGhpcy5wYWdpbmF0b3JUcmFuc2xhdGUubGFzdFBhZ2VMYWJlbCA9ICfDmmx0aW1hIHDDoWdpbmEnO1xyXG4gICAgdGhpcy5wYWdpbmF0b3JUcmFuc2xhdGUucHJldmlvdXNQYWdlTGFiZWwgPSAnUMOhZ2luYSBhbnRlcmlvcic7XHJcbiAgICB0aGlzLnBhZ2luYXRvclRyYW5zbGF0ZS5maXJzdFBhZ2VMYWJlbCA9ICdQcmltZXJhIHDDoWdpbmEnO1xyXG4gICAgdGhpcy5wYWdpbmF0b3JUcmFuc2xhdGUuZ2V0UmFuZ2VMYWJlbCA9IHNwYW5pc2hSYW5nZUxhYmVsO1xyXG4gIH1cclxuXHJcbiAgYnV0dG9uc0NvbmZpZyA9IFtcclxuICBdO1xyXG5cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnZhbGlkYXRlUm9sQW5kUGVybWlzc2lvbigpXHJcbiAgICBpZiAod2luZG93LnNjcmVlbi53aWR0aCA+IDEwMDApIHtcclxuICAgICAgdGhpcy5zY3JlZW4gPSB0cnVlO1xyXG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgKCkgPT4ge1xyXG4gICAgICAgIHdpbmRvdy5zY3JlZW4ud2lkdGggPiAxMDAwXHJcbiAgICAgICAgICA/ICh0aGlzLnNjcmVlbiA9IHRydWUpXHJcbiAgICAgICAgICA6ICh0aGlzLnNjcmVlbiA9IGZhbHNlKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNjcmVlbiA9IGZhbHNlO1xyXG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgKCkgPT4ge1xyXG4gICAgICAgIHdpbmRvdy5zY3JlZW4ud2lkdGggPiAxMDAwXHJcbiAgICAgICAgICA/ICh0aGlzLnNjcmVlbiA9IHRydWUpXHJcbiAgICAgICAgICA6ICh0aGlzLnNjcmVlbiA9IGZhbHNlKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMucmVsb2FkVGFibGUpIHtcclxuICAgICAgdGhpcy5yZWxvYWRUYWJsZS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMub3JpZ2luYWxEYXRhID0gW107XHJcbiAgICAgICAgdGhpcy5zZWxlY3RBbGwgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNlbGV0ZWNBbGxFdmVudCgnJyk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudGl0bGVMb2FkaW5nID09ICcnID8gKHRoaXMudGl0bGVMb2FkaW5nID0gJ0NhcmdhbmRvJykgOiAnJztcclxuICAgIHRoaXMubWVzc2FnZUxvYWRpbmcgPT0gJydcclxuICAgICAgPyAodGhpcy5tZXNzYWdlTG9hZGluZyA9ICdPYnRlbmllbmRvIGRhdG9zLi4uJylcclxuICAgICAgOiAnJztcclxuICAgIHRoaXMudXJsICYmICF0aGlzLmNvbmZpZ3VyYXRpb24ubm90SW5pdGlhbGl6ZVxyXG4gICAgICA/IHRoaXMubWVzc2FnZS5vcGVuTG9hZGluZyh0aGlzLnRpdGxlTG9hZGluZywgdGhpcy5tZXNzYWdlTG9hZGluZylcclxuICAgICAgOiAnJztcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy51cmwgJiYgIXRoaXMuY29uZmlndXJhdGlvbi5ub3RJbml0aWFsaXplKSB7XHJcbiAgICAgICAgbGV0IHNlcnZpY2UgPSBhd2FpdCB0aGlzLmdldERhdGVUYWJsZUJ5VXJsKCk7XHJcbiAgICAgICAgdGhpcy5kYXRhID0gc2VydmljZVsnZGF0YSddO1xyXG4gICAgICAgIHRoaXMubGVuZ3RoID0gc2VydmljZVsnY291bnQnXTtcclxuXHJcbiAgICAgICAgdGhpcy5kYXRhLmZvckVhY2goKHJvdykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jaGVja2JveHNbcm93W3RoaXMuY29uZmlndXJhdGlvbi5wcmltYXJ5S2V5XV0gPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5pbnRlcm5hbERhdGEuZW1pdChzZXJ2aWNlKTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMubWVzc2FnZS5jbG9zZUxvYWRpbmcoKTtcclxuICAgICAgICB9LCAxMDAwKTtcclxuICAgICAgICB0aGlzLnZhbGlkYXRlUnVsZXMoKTtcclxuICAgICAgfSBlbHNlIGlmICghdGhpcy51cmwpIHtcclxuICAgICAgICB0aGlzLnBhZ2luYXRvckFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZVJvbEFuZFBlcm1pc3Npb24oKSB7XHJcbiAgICBpZih0aGlzLnJvbGVJZCA9PSAwKXtcclxuICAgICAgbGV0IHJvbGVQZXJtaXNzaW9ucyA9IHJvbGVzQW5kUGVybWlzc2lvbnM/LmZpbmQoeCA9PiB4LmlkID09IHRoaXMucm9sZUlkKVxyXG4gICAgICB0aGlzLmhhc0FjY2Vzc1RvQWxsID0gcm9sZVBlcm1pc3Npb25zPy5oYXNBY2Nlc3NUb0FsbCA/PyByb2xlUGVybWlzc2lvbnMubW9kdWxlcz8uZmluZCh4ID0+IHguaWQgPT0gdGhpcy5tb2R1bGVJZCk/Lmhhc0FjY2Vzc1RvQWxsID8/IGZhbHNlO1xyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLnJvbGVzQW5kUGVybWlzc2lvblVzZXIgPSByb2xlc0FuZFBlcm1pc3Npb25zPy5maW5kKHggPT4geC5pZCA9PSB0aGlzLnJvbGVJZCk/Lm1vZHVsZXM/LmZpbmQoeCA9PiB4LmlkID09IHRoaXMubW9kdWxlSWQpPy5zdWJNb2R1bGVzPy5maW5kKHggPT4geC5pZCA9PSB0aGlzLnN1Yk1vZHVsZUlkKT8ucGVybWlzc2lvbnMgPz8ge30gYXMgSVBlcm1pc3Npb25zO1xyXG4gICAgaWYgKCF0aGlzLmhhc0FjY2Vzc1RvQWxsICYmICF0aGlzLnJvbGVzQW5kUGVybWlzc2lvblVzZXIucmVhZEFsbCAmJiB0aGlzLnJvbGVzQW5kUGVybWlzc2lvblVzZXIucmVhZE93biA9PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMucGFyYW1zID0gWy4uLnRoaXMucGFyYW1zLCB7IGlkOiAncmVhZE93bicsIHZhbHVlOiB0cnVlIH1dO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb25maWd1cmVCdXR0b25zKClcclxuICB9XHJcblxyXG4gIGNvbmZpZ3VyZUJ1dHRvbnMoKSB7XHJcbiAgICB0aGlzLmJ1dHRvbnNDb25maWcgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBhY3Rpb246ICdlZGl0JyxcclxuICAgICAgICBjb25kaXRpb25TaG93SGVhZGVyOiAoKSA9PlxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3MubGVuZ3RoID09PSAxICYmXHJcbiAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uZWRpdCAmJlxyXG4gICAgICAgICAgdGhpcy5oYXNQZXJtaXNzaW9uKCd1cGRhdGUnKSxcclxuICAgICAgICBjb25kaXRpb246ICgpID0+IHRoaXMuY29uZmlndXJhdGlvbi5lZGl0ICYmIHRoaXMuaGFzUGVybWlzc2lvbigndXBkYXRlJyksXHJcbiAgICAgICAgaWNvbjogJ2ZhLWVkaXQnLFxyXG4gICAgICAgIHRvb2x0aXA6ICdFZGl0YXInLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgYWN0aW9uOiAncHJpbnQnLFxyXG4gICAgICAgIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGggPT09IDEgJiZcclxuICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5wcmludCAmJlxyXG4gICAgICAgICAgdGhpcy5zY3JlZW4gJiZcclxuICAgICAgICAgIHRoaXMuaGFzUGVybWlzc2lvbigncHJpbnQnKSxcclxuICAgICAgICBjb25kaXRpb246ICgpID0+IHRoaXMuY29uZmlndXJhdGlvbi5wcmludCAmJiB0aGlzLnNjcmVlbiAmJiB0aGlzLmhhc1Blcm1pc3Npb24oJ3ByaW50JyksXHJcbiAgICAgICAgaWNvbjogJ2ZhLXByaW50JyxcclxuICAgICAgICB0b29sdGlwOiAnSW1wcmltaXInLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgYWN0aW9uOiAnYWN0aXZlJyxcclxuICAgICAgICBjb25kaXRpb25TaG93SGVhZGVyOiAoKSA9PlxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3MubGVuZ3RoID4gMCAmJiB0aGlzLmNvbmZpZ3VyYXRpb24uYWN0aXZlICYmIHRoaXMuaGFzUGVybWlzc2lvbignYWN0aXZhdGVBbmRJbmFjdGl2YXRlJyksXHJcbiAgICAgICAgY29uZGl0aW9uOiAoKSA9PiB0aGlzLmNvbmZpZ3VyYXRpb24uYWN0aXZlICYmIHRoaXMuaGFzUGVybWlzc2lvbignYWN0aXZhdGVBbmRJbmFjdGl2YXRlJyksXHJcbiAgICAgICAgaWNvbjogJ2ZhLWFkanVzdCcsXHJcbiAgICAgICAgdG9vbHRpcDogJ0FjdGl2YXIvRGVzYWN0aXZhcicsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBhY3Rpb246ICdhZGQnLFxyXG4gICAgICAgIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGggPT09IDAgJiYgdGhpcy5jb25maWd1cmF0aW9uLmFkZCAmJiB0aGlzLmhhc1Blcm1pc3Npb24oJ3dyaXRlJyksXHJcbiAgICAgICAgY29uZGl0aW9uOiAoKSA9PiBmYWxzZSxcclxuICAgICAgICBpY29uOiAnZmEtcGx1cy1jaXJjbGUnLFxyXG4gICAgICAgIHRvb2x0aXA6ICdOdWV2bycsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBhY3Rpb246ICdpbmNvbWUnLFxyXG4gICAgICAgIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGggPT09IDAgJiYgdGhpcy5jb25maWd1cmF0aW9uLmluY29tZSAmJiB0aGlzLmhhc1Blcm1pc3Npb24oJ3dyaXRlJyksXHJcbiAgICAgICAgY29uZGl0aW9uOiAoKSA9PiBmYWxzZSxcclxuICAgICAgICBpY29uOiAnZmEtdXNlci1wbHVzJyxcclxuICAgICAgICB0b29sdGlwOiAnSW5ncmVzbycsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBhY3Rpb246ICdleGl0JyxcclxuICAgICAgICBjb25kaXRpb25TaG93SGVhZGVyOiAoKSA9PlxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3MubGVuZ3RoID09PSAwICYmIHRoaXMuY29uZmlndXJhdGlvbi5leGl0ICYmIHRoaXMuaGFzUGVybWlzc2lvbignd3JpdGUnKSxcclxuICAgICAgICBjb25kaXRpb246ICgpID0+IGZhbHNlLFxyXG4gICAgICAgIGljb246ICdmYS11c2VyLXRpbWVzJyxcclxuICAgICAgICB0b29sdGlwOiAnU2FsaWRhJyxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGFjdGlvbjogJ3ZpZXcnLFxyXG4gICAgICAgIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGggPT09IDEgJiYgdGhpcy5jb25maWd1cmF0aW9uLnZpZXcgJiYgdGhpcy5oYXNQZXJtaXNzaW9uKCdyZWFkRGV0YWlsJyksXHJcbiAgICAgICAgY29uZGl0aW9uOiAoKSA9PiB0aGlzLmNvbmZpZ3VyYXRpb24udmlldyAmJiB0aGlzLmhhc1Blcm1pc3Npb24oJ3JlYWREZXRhaWwnKSxcclxuICAgICAgICBpY29uOiAnZmEtZXllJyxcclxuICAgICAgICB0b29sdGlwOiAnVmVyIGRldGFsbGUnLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgYWN0aW9uOiAnY2xvc2VPcmRlcicsXHJcbiAgICAgICAgY29uZGl0aW9uU2hvd0hlYWRlcjogKCkgPT5cclxuICAgICAgICAgICh0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGggPT09IDEgJiYgdGhpcy5jb25maWd1cmF0aW9uLmNsb3NlT3JkZXIpICYmIHRoaXMuaGFzUGVybWlzc2lvbignY2xvc2VPVCcpLFxyXG4gICAgICAgIGNvbmRpdGlvbjogKCkgPT4gdGhpcy5jb25maWd1cmF0aW9uLmNsb3NlT3JkZXIgJiYgdGhpcy5oYXNQZXJtaXNzaW9uKCdjbG9zZU9UJyksXHJcbiAgICAgICAgaWNvbjogJ2ZhLWNoZWNrLWNpcmNsZScsXHJcbiAgICAgICAgdG9vbHRpcDogJ0NlcnJhciBvcmRlbicsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBhY3Rpb246ICdwYWNrT2ZmJyxcclxuICAgICAgICBjb25kaXRpb25TaG93SGVhZGVyOiAoKSA9PlxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3MubGVuZ3RoID09PSAxICYmIHRoaXMuY29uZmlndXJhdGlvbi5wYWNrT2ZmICYmIHRoaXMuaGFzUGVybWlzc2lvbignYWxsb2NhdGVSZXNvdXJjZXMnKSxcclxuICAgICAgICBjb25kaXRpb246ICgpID0+IHRoaXMuY29uZmlndXJhdGlvbi5wYWNrT2ZmICYmIHRoaXMuaGFzUGVybWlzc2lvbignYWxsb2NhdGVSZXNvdXJjZXMnKSxcclxuICAgICAgICBpY29uOiAnZmEtY2FydC1hcnJvdy1kb3duJyxcclxuICAgICAgICB0b29sdGlwOiAnRGVzcGFjaGFyIHJlY3Vyc29zJyxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGFjdGlvbjogJ2FkdmFuY2UnLFxyXG4gICAgICAgIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGggPT09IDEgJiYgdGhpcy5jb25maWd1cmF0aW9uLmFkdmFuY2UgJiYgdGhpcy5oYXNQZXJtaXNzaW9uKCdhZHZhbmNlJyksXHJcbiAgICAgICAgY29uZGl0aW9uOiAoKSA9PiB0aGlzLmNvbmZpZ3VyYXRpb24uYWR2YW5jZSAmJiB0aGlzLmhhc1Blcm1pc3Npb24oJ2FkdmFuY2UnKSxcclxuICAgICAgICBpY29uOiAnZmEtYXJyb3ctcmlnaHQnLFxyXG4gICAgICAgIHRvb2x0aXA6IHRoaXMuY29uZmlndXJhdGlvbi5hZHZhbmNlTGFiZWwsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBhY3Rpb246ICdzZW5kRW1haWwnLFxyXG4gICAgICAgIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGggPT09IDEgJiZcclxuICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5zZW5kRW1haWwgJiZcclxuICAgICAgICAgIHRoaXMuc2NyZWVuICYmXHJcbiAgICAgICAgICB0aGlzLmhhc1Blcm1pc3Npb24oJ3NlbmRFbWFpbCcpLFxyXG4gICAgICAgIGNvbmRpdGlvbjogKCkgPT4gdGhpcy5jb25maWd1cmF0aW9uLnNlbmRFbWFpbCAmJiB0aGlzLnNjcmVlbiAmJiB0aGlzLmhhc1Blcm1pc3Npb24oJ3NlbmRFbWFpbCcpLFxyXG4gICAgICAgIGljb246ICdmYS1tYWlsLWJ1bGsnLFxyXG4gICAgICAgIHRvb2x0aXA6ICdFbnZpYSBjb3JyZW8nLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgYWN0aW9uOiAnZXhwb3J0VG9FeGNlbCcsXHJcbiAgICAgICAgY29uZGl0aW9uU2hvd0hlYWRlcjogKCkgPT5cclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aCA9PT0gMCAmJlxyXG4gICAgICAgICAgdGhpcy5kYXRhLmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgICh0aGlzLmNvbmZpZ3VyYXRpb24uZXhwb3J0WHNseCB8fCB0aGlzLmNvbmZpZ3VyYXRpb24uZXhwb3J0WHNseFdpdGhQYWdlcykgJiZcclxuICAgICAgICAgIHRoaXMuaGFzUGVybWlzc2lvbignZXhwb3J0JyksXHJcbiAgICAgICAgY29uZGl0aW9uOiAoKSA9PiBmYWxzZSxcclxuICAgICAgICBpY29uOiAnZmEtZG93bmxvYWQnLFxyXG4gICAgICAgIHRvb2x0aXA6ICdFeHBvcnRhciBUYWJsYScsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBhY3Rpb246ICdleHBvcnRUb0V4Y2VsQnlSb3cnLFxyXG4gICAgICAgIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGggPT09IDEgJiYgdGhpcy5jb25maWd1cmF0aW9uLmV4cG9ydFhzbHhCeVJvdyAmJiB0aGlzLmhhc1Blcm1pc3Npb24oJ2V4cG9ydCcpLFxyXG4gICAgICAgIGNvbmRpdGlvbjogKCkgPT4gdGhpcy5jb25maWd1cmF0aW9uLmV4cG9ydFhzbHhCeVJvdyAmJiB0aGlzLmhhc1Blcm1pc3Npb24oJ2V4cG9ydCcpLFxyXG4gICAgICAgIGljb246ICdmYS1kb3dubG9hZCcsXHJcbiAgICAgICAgdG9vbHRpcDogJ0V4cG9ydGFyIFJlZ2lzdHJvJyxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGFjdGlvbjogJ2RlbGV0ZScsXHJcbiAgICAgICAgY29uZGl0aW9uU2hvd0hlYWRlcjogKCkgPT5cclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aCA+IDAgJiYgdGhpcy5jb25maWd1cmF0aW9uLmRlbGV0ZSAmJiB0aGlzLmhhc1Blcm1pc3Npb24oJ2RlbGV0ZScpLFxyXG4gICAgICAgIGNvbmRpdGlvbjogKCkgPT4gdGhpcy5jb25maWd1cmF0aW9uLmRlbGV0ZSAmJiB0aGlzLmhhc1Blcm1pc3Npb24oJ2RlbGV0ZScpLFxyXG4gICAgICAgIGljb246ICdmYS10cmFzaCcsXHJcbiAgICAgICAgdG9vbHRpcDogJ0VsaW1pbmFyJyxcclxuICAgICAgfSxcclxuICAgIF07XHJcbiAgfVxyXG5cclxuICBoYXNQZXJtaXNzaW9uKHBlcm1pc3Npb246IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuaGFzQWNjZXNzVG9BbGwpIHJldHVybiB0cnVlO1xyXG4gICAgcmV0dXJuIHRoaXMucm9sZXNBbmRQZXJtaXNzaW9uVXNlcj8uW3Blcm1pc3Npb25dID8/IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0RGF0ZVRhYmxlQnlVcmwoKSB7XHJcbiAgICB0aGlzLnZhbGlkYXJQYXJhbXMoKTtcclxuICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHAucG9zdERhdGFCb2R5KFxyXG4gICAgICB0aGlzLnVybCxcclxuICAgICAgdGhpcy5maWx0ZXJzUG9zdCxcclxuICAgICAgdGhpcy5wYXJhbXNcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB2YWxpZGFyUGFyYW1zKCkge1xyXG4gICAgdGhpcy5wYXJhbXMgPSB0aGlzLmZ1bmN0aW9uRXRlci5yZW1vdmVEdXBsaWNhdGVPYmplY3RzKHRoaXMucGFyYW1zKTtcclxuICAgIGlmICh0aGlzLnBhcmFtcykge1xyXG4gICAgICBpZiAoIXRoaXMucGFyYW1zLmZpbmQoKHgpID0+IHguaWQgPT0gJ3BhZ2UnKSkge1xyXG4gICAgICAgIHRoaXMucGFyYW1zLnB1c2goeyBpZDogJ3BhZ2UnLCB2YWx1ZTogJzAnIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5wYXJhbXMuZmluZCgoeCkgPT4geC5pZCA9PSAncGVyX3BhZ2UnKSkge1xyXG4gICAgICAgIHRoaXMucGFyYW1zLnB1c2goeyBpZDogJ3Blcl9wYWdlJywgdmFsdWU6IHRoaXMucGFnZVNpemUgfSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLnBhcmFtcy5maW5kKCh4KSA9PiB4LmlkID09ICdmaWx0ZXInKSkge1xyXG4gICAgICAgIHRoaXMucGFyYW1zLnB1c2goeyBpZDogJ2ZpbHRlcicsIHZhbHVlOiAnJyB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgdmFsaWRhdGVSdWxlcygpIHtcclxuICAgIGZvciAoY29uc3QgW2luZGV4LCBjb2x1bW5zXSBvZiB0aGlzLmNvbHVtbnMuZW50cmllcygpKSB7XHJcbiAgICAgIGZvciAoY29uc3QgW2luZGV4RGF0YSwgZWxlbWVudF0gb2YgdGhpcy5kYXRhLmVudHJpZXMoKSkge1xyXG4gICAgICAgIGlmIChjb2x1bW5zLnJ1bGVzKSB7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgY29sdW1ucy5ydWxlcykge1xyXG4gICAgICAgICAgICBpZiAocnVsZS5ydWxlID09IGVudW1SdWxlc1snPT0nXSkge1xyXG4gICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgIGVsZW1lbnRbY29sdW1ucy5JRF0gJiZcclxuICAgICAgICAgICAgICAgIGVsZW1lbnRbY29sdW1ucy5JRF0udG9TdHJpbmcoKSA9PSBydWxlLnZhbHVlUnVsZS50b1N0cmluZygpXHJcbiAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFbaW5kZXhEYXRhXVtjb2x1bW5zLklEXSA9IHJ1bGUudmFsdWVBY3Rpb247XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGNvbHVtblZhbHVlID0gZWxlbWVudFtjb2x1bW5zLklEXTtcclxuICAgICAgICBpZiAoY29sdW1ucy50eXBlID09ICdmZWNoYScgfHwgY29sdW1ucy50eXBlID09ICdkYXRlJylcclxuICAgICAgICAgIHRoaXMuZGF0YVtpbmRleERhdGFdW2NvbHVtbnMuSURdID1cclxuICAgICAgICAgICAgdGhpcy5mdW5jdGlvbkV0ZXIuZGF0ZUlzbyhjb2x1bW5WYWx1ZSk7XHJcbiAgICAgICAgaWYgKGNvbHVtbnMudHlwZSA9PSAnZGF0ZVdpdGhUaW1lJylcclxuICAgICAgICAgIHRoaXMuZGF0YVtpbmRleERhdGFdW2NvbHVtbnMuSURdID0gdGhpcy5mdW5jdGlvbkV0ZXIuZGF0ZVdpdGhUaW1lKFxyXG4gICAgICAgICAgICBjb2x1bW5WYWx1ZT8udG9TdHJpbmcoKSA/PyBjb2x1bW5WYWx1ZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAoY29sdW1ucy50eXBlID09ICdjdXJyZW5jeScpXHJcbiAgICAgICAgICB0aGlzLmRhdGFbaW5kZXhEYXRhXVtjb2x1bW5zLklEXSA9XHJcbiAgICAgICAgICAgIEludGwuTnVtYmVyRm9ybWF0KCdlcy1DTycpLmZvcm1hdChjb2x1bW5WYWx1ZSk7XHJcbiAgICAgICAgaWYgKGNvbHVtbnMudHlwZSA9PSAnYm9vbGVhbicpXHJcbiAgICAgICAgICB0aGlzLmRhdGFbaW5kZXhEYXRhXVtjb2x1bW5zLklEXSA9IGNvbHVtblZhbHVlID09IDEgPyAnU2knIDogJ05vJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXMuZGF0YSkge1xyXG4gICAgICBpZiAodGhpcy5kYXRhKSB7XHJcbiAgICAgICAgdGhpcy5kYXRhLmZvckVhY2goKHJvdykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jaGVja2JveHNbcm93W3RoaXMuY29uZmlndXJhdGlvbi5wcmltYXJ5S2V5XV0gPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAodGhpcy5vcmlnaW5hbERhdGEubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgIGlmICh0aGlzLmRhdGEubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhLmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLm9yaWdpbmFsRGF0YS5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy52YWxpZGF0ZVJ1bGVzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNoYW5nZXMuY29uZmlndXJhdGlvbikge1xyXG4gICAgICB0aGlzLnVwZGF0ZUJ1dHRvbkNvbmZpZygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlQnV0dG9uQ29uZmlnKCkge1xyXG4gICAgdGhpcy5idXR0b25zQ29uZmlnID0gdGhpcy5idXR0b25zQ29uZmlnLm1hcCgoYnV0dG9uKSA9PiB7XHJcbiAgICAgIGlmIChidXR0b24uYWN0aW9uID09PSAnYWR2YW5jZScpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgLi4uYnV0dG9uLFxyXG4gICAgICAgICAgdG9vbHRpcDogdGhpcy5jb25maWd1cmF0aW9uLmFkdmFuY2VMYWJlbCA/PyAnQXZhbnphcicsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gYnV0dG9uO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjbGlja09uUm9XKHJvd0RhdGEpIHtcclxuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2hlY2tib3hzW3Jvd0RhdGFbdGhpcy5jb25maWd1cmF0aW9uLnByaW1hcnlLZXldXTtcclxuXHJcbiAgICBpZiAoIXRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RhYmxlKSB7XHJcbiAgICAgIHRoaXMuY2xlYXJDaGVja2JveGVzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWxlY3Rpb24ocm93RGF0YSwgeyBjaGVja2VkOiAhc3RhdGUgfSwgdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdGFibGUpO1xyXG4gICAgdGhpcy5jbGlja1Jvdy5lbWl0KHJvd0RhdGEpO1xyXG4gIH1cclxuXHJcbiAgc2hvd01lbnUoJGV2ZW50KSB7XHJcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBhY3Rpb24oYWN0aW9uLCByb3cgPSBudWxsKSB7XHJcbiAgICB2YXIgY3VycmVudFJvdyA9IHJvdyA/IFtyb3ddIDogdGhpcy5zZWxlY3RlZFJvd3M7XHJcblxyXG4gICAgc3dpdGNoIChhY3Rpb24pIHtcclxuICAgICAgY2FzZSAnYWRkJzpcclxuICAgICAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uLmFkZFBlcikge1xyXG4gICAgICAgICAgdGhpcy5hZGQuZW1pdCh0aGlzLmxlbmd0aCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nXHJcbiAgICAgICAgICAgIC5vcGVuKFRhYmxlTW9kYWxDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICBhY3Rpb24sXHJcbiAgICAgICAgICAgICAgICBjb2x1bW5zOiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuY29sdW1ucykpLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgd2lkdGg6ICc2MHZoJyxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGQuZW1pdChyZXN1bHQpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgJ2VkaXQnOlxyXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24uZWRpdFBlcikge1xyXG4gICAgICAgICAgdGhpcy5lZGl0LmVtaXQoY3VycmVudFJvdyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxldCBjb2x1bW5zOiBhbnk7XHJcbiAgICAgICAgICBjb2x1bW5zID0gdGhpcy5jb2x1bW5zO1xyXG5cclxuICAgICAgICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhjdXJyZW50Um93WzBdKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoY29sdW1uLklEID09IGtleSkge1xyXG4gICAgICAgICAgICAgICAgY29sdW1uc1tpbmRleF0udmFsdWUgPSBjdXJyZW50Um93WzBdW2tleV07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIHRoaXMuZGlhbG9nXHJcbiAgICAgICAgICAgIC5vcGVuKFRhYmxlTW9kYWxDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICBhY3Rpb24sXHJcbiAgICAgICAgICAgICAgICBjb2x1bW5zOiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuY29sdW1ucykpLFxyXG4gICAgICAgICAgICAgICAgdmFsdWVzOiBjdXJyZW50Um93WzBdLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgd2lkdGg6ICc2MHZoJyxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lZGl0LmVtaXQoeyBuZXc6IHJlc3VsdCwgb2xkOiBjdXJyZW50Um93WzBdIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgJ2RlbGV0ZSc6XHJcbiAgICAgICAgdGhpcy5kZWxldGUuZW1pdChjdXJyZW50Um93KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAncHJpbnQnOlxyXG4gICAgICAgIHRoaXMucHJpbnQuZW1pdChjdXJyZW50Um93KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnYWN0aXZlJzpcclxuICAgICAgICB0aGlzLmFjdGl2ZS5lbWl0KGN1cnJlbnRSb3cpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdleHBvcnRUb0V4Y2VsJzpcclxuICAgICAgICB0aGlzLmV4cG9ydFRvRXhjZWwoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZXhwb3J0VG9FeGNlbEJ5Um93JzpcclxuICAgICAgICB0aGlzLmV4cG9ydFhzbHhCeVJvdy5lbWl0KGN1cnJlbnRSb3cpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd2aWV3JzpcclxuICAgICAgICB0aGlzLnZpZXcuZW1pdChjdXJyZW50Um93KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2xvc2VPcmRlcic6XHJcbiAgICAgICAgdGhpcy5jbG9zZU9yZGVyLmVtaXQoY3VycmVudFJvdyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3BhY2tPZmYnOlxyXG4gICAgICAgIHRoaXMucGFja09mZi5lbWl0KGN1cnJlbnRSb3cpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdhZHZhbmNlJzpcclxuICAgICAgICB0aGlzLmFkdmFuY2UuZW1pdChjdXJyZW50Um93KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnaW5jb21lJzpcclxuICAgICAgICB0aGlzLmluY29tZS5lbWl0KHRoaXMubGVuZ3RoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZXhpdCc6XHJcbiAgICAgICAgdGhpcy5leGl0LmVtaXQodGhpcy5sZW5ndGgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdzZW5kRW1haWwnOlxyXG4gICAgICAgIHRoaXMuc2VuZEVtYWlsLmVtaXQoY3VycmVudFJvdyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaG91bGRTaG93TWVudSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmJ1dHRvbnNDb25maWcuc29tZSgoYnRuKSA9PiBidG4uY29uZGl0aW9uKCkpO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0VG9FeGNlbCgpIHtcclxuICAgIGxldCBwYXJhbXMgPSBbXTtcclxuICAgIGlmICh0aGlzLnVybCAmJiB0aGlzLnBhcmFtcykge1xyXG4gICAgICBwYXJhbXMgPSBbLi4udGhpcy5wYXJhbXNdO1xyXG5cclxuICAgICAgaWYgKHRoaXMueHNseFBhcmFtcykge1xyXG4gICAgICAgIHBhcmFtcyA9IFsuLi5wYXJhbXMsIC4uLnRoaXMueHNseFBhcmFtc107XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGkgPSBwYXJhbXMuZmluZEluZGV4KCh4KSA9PiB4LmlkID09ICdwZXJfcGFnZScpO1xyXG4gICAgICBpZiAoaSAhPSAtMSkgcGFyYW1zW2ldLnZhbHVlID0gMTAwMDAwMDAwO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24uZXhwb3J0WHNseFdpdGhQYWdlcykge1xyXG4gICAgICB0aGlzLmV4cG9ydFNlcnZpY2UuZ2VuZXJhdGVFeGNlbFdpdGhTaGVldHM8YW55PihcclxuICAgICAgICB0aGlzLnRpdGxlLFxyXG4gICAgICAgIHRoaXMuaGVhZGVyRmlsZVhsc20sXHJcbiAgICAgICAgdGhpcy50aXRsZSxcclxuICAgICAgICB0aGlzLnVybCA/IG51bGwgOiB0aGlzLmRhdGEsXHJcbiAgICAgICAgdGhpcy51cmwsXHJcbiAgICAgICAgcGFyYW1zLFxyXG4gICAgICAgIHRoaXMuZmlsdGVyc1Bvc3QsXHJcbiAgICAgICAgdGhpcy54c2x4VGl0bGVGaWVsZHMsXHJcbiAgICAgICAgdGhpcy54c2x4U2hlZXROYW1lRmllbGRzLFxyXG4gICAgICAgIHRoaXMueHNseEJvZHlGaWVsZHNcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZXhwb3J0U2VydmljZS5nZW5lcmF0ZVRvWGxzeDxhbnk+KFxyXG4gICAgICAgIHRoaXMudGl0bGUsXHJcbiAgICAgICAgdGhpcy5oZWFkZXJGaWxlWGxzbSxcclxuICAgICAgICB0aGlzLnRpdGxlLFxyXG4gICAgICAgIHRoaXMudXJsID8gbnVsbCA6IHRoaXMuZGF0YSxcclxuICAgICAgICB0aGlzLnVybCxcclxuICAgICAgICBwYXJhbXMsXHJcbiAgICAgICAgdGhpcy5maWx0ZXJzUG9zdFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0aW9uKHJvdywgJGV2ZW50LCBlbWl0RXZlbnQgPSB0cnVlKSB7XHJcbiAgICB0aGlzLmNoZWNrYm94c1tyb3dbdGhpcy5jb25maWd1cmF0aW9uLnByaW1hcnlLZXldXSA9ICRldmVudC5jaGVja2VkO1xyXG4gICAgaWYgKCRldmVudC5jaGVja2VkKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLnB1c2gocm93KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dzLmluZGV4T2Yocm93KTtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd3Muc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdGFibGUgJiYgZW1pdEV2ZW50KSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdCh0aGlzLnNlbGVjdGVkUm93cyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aCA9PSB0aGlzLmRhdGEubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGggPiAwICYmXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aCA8IHRoaXMuZGF0YS5sZW5ndGhcclxuICAgICkge1xyXG4gICAgICB0aGlzLmluZGV0ZXJtaW5hdGVTdGF0ZSA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmluZGV0ZXJtaW5hdGVTdGF0ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xpY2tlZCgkZXZlbnQpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2VsZXRlY0FsbEV2ZW50KCRldmVudCkge1xyXG4gICAgdGhpcy5pbmRldGVybWluYXRlU3RhdGUgPSBmYWxzZTtcclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3RBbGwpIHtcclxuICAgICAgT2JqZWN0LmtleXModGhpcy5jaGVja2JveHMpLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2hlY2tib3hzW2tleV0gPSB0cnVlO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzID0gW107XHJcbiAgICAgIGxldCBkYXRhID0gdGhpcy5kYXRhO1xyXG4gICAgICBkYXRhLmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkUm93cy5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdCh0aGlzLnNlbGVjdGVkUm93cyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNsZWFyQ2hlY2tib3hlcygpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkLmVtaXQodGhpcy5zZWxlY3RlZFJvd3MpO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBzZXJ2aWNlID0gYXdhaXQgdGhpcy5nZXREYXRlVGFibGVCeVVybCgpO1xyXG4gICAgdGhpcy5kYXRhID0gc2VydmljZVsnZGF0YSddO1xyXG4gICAgdGhpcy5pbnRlcm5hbERhdGEuZW1pdChzZXJ2aWNlKTtcclxuICAgIHRoaXMubGVuZ3RoID0gc2VydmljZVsnY291bnQnXTtcclxuICAgIHRoaXMudmFsaWRhdGVSdWxlcygpO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJDaGVja2JveGVzKCkge1xyXG4gICAgT2JqZWN0LmtleXModGhpcy5jaGVja2JveHMpLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICB0aGlzLmNoZWNrYm94c1trZXldID0gZmFsc2U7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkUm93cyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlRmlsdGVycygpIHtcclxuICAgIGlmICh0aGlzLnBhcmFtcylcclxuICAgICAgdGhpcy5wYXJhbXMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG4gICAgICAgIGlmIChlbGVtZW50LmlkID09ICdmaWx0ZXInKSB7XHJcbiAgICAgICAgICBlbGVtZW50LnZhbHVlID0gdGhpcy5maWx0ZXJzO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBhcHBseUZpbHRlcnMoJGV2ZW50PzogYW55KSB7XHJcbiAgICBpZiAoJGV2ZW50KSB0aGlzLmZpbHRlcnNQb3N0ID0gJGV2ZW50O1xyXG4gICAgaWYgKHRoaXMudXJsKSB7XHJcbiAgICAgIGxldCByZXM6IGFueSA9IGF3YWl0IHRoaXMuZ2V0RGF0ZVRhYmxlQnlVcmwoKTtcclxuICAgICAgdGhpcy5kYXRhID0gcmVzWydkYXRhJ107XHJcbiAgICAgIHRoaXMudmFsaWRhdGVSdWxlcygpO1xyXG4gICAgICB0aGlzLmxlbmd0aCA9IHJlc1snY291bnQnXTtcclxuICAgICAgdGhpcy5pbnRlcm5hbERhdGEuZW1pdChyZXMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kYXRhID0gdGhpcy5vcmlnaW5hbERhdGEuZmlsdGVyKChkYXRhKSA9PiB7XHJcbiAgICAgICAgZm9yIChsZXQga2V5IG9mIE9iamVjdC5rZXlzKGRhdGEpKSB7XHJcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gZGF0YVtrZXldXHJcbiAgICAgICAgICAgIC50b1N0cmluZygpXHJcbiAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgICAgIC5pbmNsdWRlcyh0aGlzLmZpbHRlcnMudG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VQYWdlKCRldmVudCkge1xyXG4gICAgdGhpcy5wYXJhbXMuZm9yRWFjaCgoZWxlbWVudCwgaW5kZXgpID0+IHtcclxuICAgICAgaWYgKGVsZW1lbnQuaWQgPT0gJ3Blcl9wYWdlJykge1xyXG4gICAgICAgIGVsZW1lbnQudmFsdWUgPSAkZXZlbnQucGFnZVNpemU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGVsZW1lbnQuaWQgPT0gJ3BhZ2UnKSB7XHJcbiAgICAgICAgZWxlbWVudC52YWx1ZSA9ICRldmVudC5wYWdlSW5kZXg7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcclxuICB9XHJcbn1cclxuXHJcbmVudW0gZW51bVJ1bGVzIHtcclxuICAnPicsXHJcbiAgJzwnLFxyXG4gICc9PScsXHJcbiAgJyE9JyxcclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29udGVuZWRvci10YWJsYVwiPlxyXG4gIDxhcHAtZmlsdGVycyBbaGVhZGVyRmlsdGVyc109XCJoZWFkZXJGaWx0ZXJzXCIgKGFwcGx5RmlsdGVycyk9XCJhcHBseUZpbHRlcnMoJGV2ZW50KVwiPlxyXG4gIDwvYXBwLWZpbHRlcnM+XHJcblxyXG4gIDxkaXYgc3R5bGU9J2Rpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiByb3c7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgIGFsaWduLWl0ZW1zOiBjZW50ZXI7Jz5cclxuICAgIDxkaXYgc3R5bGU9J2ZsZXg6MTsgZm9udC1zaXplOiAxcmVtOyc+XHJcbiAgICAgIDxzdHJvbmc+PHAgc3R5bGU9J21hcmdpbjowJyAqbmdJZj0nc2VsZWN0ZWRSb3dzLmxlbmd0aD4wICYmIHNlbGVjdGVkUm93cy5sZW5ndGg8MiAmJiBjb25maWd1cmF0aW9uLnNlbGVjdGFibGUnPiB7e3NlbGVjdGVkUm93cy5sZW5ndGh9fSBTZWxlY2Npb25hZG8gPC9wPjwvc3Ryb25nPlxyXG4gICAgICA8c3Ryb25nPjxwIHN0eWxlPSdtYXJnaW46MCcgKm5nSWY9J3NlbGVjdGVkUm93cy5sZW5ndGg+MSc+IHt7c2VsZWN0ZWRSb3dzLmxlbmd0aH19IFNlbGVjY2lvbmFkb3MgPC9wPjwvc3Ryb25nPlxyXG4gICAgICA8c3Ryb25nPjxwIHN0eWxlPSdtYXJnaW46MCcgKm5nSWY9J3NlbGVjdGVkUm93cy5sZW5ndGg8MSAmJiAhY29uZmlndXJhdGlvbi5oaWRlVGl0bGUnPiB7e3RpdGxlfX0gPC9wPjwvc3Ryb25nPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cIiFjb25maWd1cmF0aW9uLmhpZGVGaWx0ZXJcIiBzdHlsZT0nZmxleDozOyBwYWRkaW5nLXJpZ2h0OiAxMHB4OyBtYXJnaW4tYm90dG9tOiA1cHg7Jz5cclxuICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz0nZmlsdGVyJz5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT0nZmlsdGVycycgKGtleXVwKT0nY2hhbmdlRmlsdGVycygpJyAgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCJGaWx0cmFyXCI+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnV0dG9uc1RhYmxlXCI+PC9uZy1jb250YWluZXI+XHJcblxyXG4gIDwvZGl2PlxyXG5cclxuIDx0YWJsZSBjbGFzcz1cInRhYmxlX0V0ZXIgdGFibGUtaG92ZXJcIj5cclxuICAgICA8dGhlYWQgY2xhc3M9XCJkYXJrXCI+XHJcbiAgICAgICA8dHIgPlxyXG4gICAgICAgIDx0aCAqbmdJZj0nY29uZmlndXJhdGlvbi5zZWxlY3RhYmxlJyBzdHlsZT0nanVzdGlmeS1jb250ZW50OiBjZW50ZXI7Jz5cclxuICAgICAgICAgIDxtYXQtY2hlY2tib3ggY29sb3I9J3ByaW1hcnknIChjaGFuZ2UpPSdzZWxldGVjQWxsRXZlbnQoJGV2ZW50KScgWyhuZ01vZGVsKV09J3NlbGVjdEFsbCcgW2luZGV0ZXJtaW5hdGVdPSdpbmRldGVybWluYXRlU3RhdGUnPiA8L21hdC1jaGVja2JveD4gIDwvdGg+XHJcbiAgICAgICA8dGhcclxuICAgICAgIFtjbGFzc109XCJjb2x1bW4uc3R5bGU/Lm1vdmlsXCJcclxuICAgICAgICpuZ0Zvcj0nbGV0IGNvbHVtbiBvZiBjb2x1bW5zJyBzY29wZT1cImNvbFwiXHJcbiAgICAgICBbbmdTdHlsZV09XCJjb2x1bW4uc3R5bGVcIlxyXG4gICAgICAgPnt7Y29sdW1uLmxhYmVsfX08L3RoPlxyXG4gICAgICAgPHRoICpuZ0lmPVwic2hvdWxkU2hvd01lbnUoKVwiPjwvdGg+XHJcbiAgICAgICA8L3RyPlxyXG4gICAgIDwvdGhlYWQ+XHJcbiAgICAgPHRib2R5IGNsYXNzPSdtYXQtZWxldmF0aW9uLXozJz5cclxuXHJcbiAgICAgICA8dHIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCIgKm5nRm9yPSdsZXQgcm93IG9mIGRhdGEnIChjbGljayk9J2NsaWNrT25Sb1cocm93KScgW2NsYXNzXT1cImNoZWNrYm94c1tyb3dbY29uZmlndXJhdGlvbi5wcmltYXJ5S2V5XV0/J3NlbGVjdGVkLXJvdyc6JydcIj5cclxuICAgICAgICA8dGggKm5nSWY9J2NvbmZpZ3VyYXRpb24uc2VsZWN0YWJsZScgc3R5bGU9J2p1c3RpZnktY29udGVudDogY2VudGVyOyc+IDxtYXQtY2hlY2tib3ggY29sb3I9J3ByaW1hcnknIFsobmdNb2RlbCldPSdjaGVja2JveHNbcm93W2NvbmZpZ3VyYXRpb24ucHJpbWFyeUtleV1dJyAoY2xpY2spPSdjbGlja2VkKCRldmVudCknIChjaGFuZ2UpPSdzZWxlY3Rpb24ocm93LCAkZXZlbnQpJz4gPC9tYXQtY2hlY2tib3g+ICA8L3RoPlxyXG4gICAgICAgIDx0aCBbY2xhc3NdPSdjb2x1bW4uc3R5bGU/Lm1vdmlsJyBbbmdTdHlsZV09J2NvbHVtbi5zdHlsZScgc2NvcGU9XCJyb3dcIiAqbmdGb3I9J2xldCBjb2x1bW4gb2YgY29sdW1ucyc+e3sgcm93W2NvbHVtbi5JRF0gfX08L3RoPlxyXG5cclxuICAgICAgICA8dGggKm5nSWY9XCJzaG91bGRTaG93TWVudSgpXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgYWxpZ24taXRlbXM6IGNlbnRlcjsgb3ZlcmZsb3c6IHZpc2libGU7XCI+XHJcbiAgICAgICAgICA8bWF0LWljb25cclxuICAgICAgICAgIChjbGljayk9XCJzaG93TWVudSgkZXZlbnQpXCJcclxuICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCJcclxuICAgICAgICAgIG1hdFJpcHBsZVxyXG4gICAgICAgICAgY2xhc3M9XCJtZW51X21vcmVfdmVydFwiXHJcbiAgICAgICAgICBhcmlhLWhpZGRlbj1cImZhbHNlXCJcclxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJFeGFtcGxlIGRlbGV0ZSBpY29uXCJcclxuICAgICAgICAgID5tb3JlX3ZlcnQ8L21hdC1pY29uPlxyXG5cclxuICAgICAgICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgYnRuIG9mIGJ1dHRvbnNDb25maWdcIiA+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImJ0bi5jb25kaXRpb24oKVwiIChjbGljayk9XCJhY3Rpb24oYnRuLmFjdGlvbiwgcm93KVwiIG1hdC1tZW51LWl0ZW0gY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHctMTAwXCIgPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSB7e2J0bi5pY29ufX0gYnRuLWFjY2lvblwiIHN0eWxlPVwiZm9udC1zaXplOjEyMCU7IG1hcmdpbi1yaWdodDogMTBweFwiPjwvaT5cclxuICAgICAgICAgICAgICAgIHt7YnRuLnRvb2x0aXB9fVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgPC90cj5cclxuXHJcblxyXG4gICAgIDwvdGJvZHk+XHJcblxyXG4gICA8L3RhYmxlPlxyXG5cclxuICAgPGRpdiAqbmdJZj0nbGVuZ3RoID09IDAgJiYgZGF0YS5sZW5ndGggPT0gMCcgc3R5bGU9XCJtYXJnaW4tbGVmdDogMTBweDtcIj4gPHN0cm9uZz5ObyBzZSBlbmNvbnRyw7MgaW5mb3JtYWNpw7NuPC9zdHJvbmc+PC9kaXY+XHJcblxyXG4gICA8bWF0LXBhZ2luYXRvciAqbmdJZj1cInBhZ2luYXRvckFjdGl2ZVwiXHJcbiAgIFtsZW5ndGhdPVwibGVuZ3RoXCIgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCIgW3BhZ2VTaXplT3B0aW9uc109XCJwYWdlU2l6ZU9wdGlvbnNcIiBzaG93Rmlyc3RMYXN0QnV0dG9uc1xyXG4gICAocGFnZSk9XCJjaGFuZ2VQYWdlKCRldmVudClcIj48L21hdC1wYWdpbmF0b3I+XHJcblxyXG4gIDwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICNidXR0b25zVGFibGUgbGV0LWZvbnRTaXplPVwiZm9udFNpemVcIiBsZXQtbWFyZ2luUmlnaHQ9XCJtYXJnaW5SaWdodFwiIHN0eWxlPSdmbGV4OjAuNTsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjogcm93OyBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOyc+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYnRuIG9mIGJ1dHRvbnNDb25maWdcIj5cclxuICAgIDxkaXYgKm5nSWY9XCJidG4uY29uZGl0aW9uU2hvd0hlYWRlcigpXCIgKGNsaWNrKT1cImFjdGlvbihidG4uYWN0aW9uKVwiIG1hdFRvb2x0aXA9XCJ7e2J0bi50b29sdGlwfX1cIiBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiPlxyXG4gICAgICA8aSBjbGFzcz1cImZhIHt7YnRuLmljb259fSBidG4tYWNjaW9uXCIgW25nU3R5bGVdPVwieydmb250LXNpemUnOiBmb250U2l6ZSA/IGZvbnRTaXplIDogJzE3MCUnLCAnbWFyZ2luLXJpZ2h0JzogbWFyZ2luUmlnaHQgPyBtYXJnaW5SaWdodCA6ICcxNXB4J31cIj48L2k+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiJdfQ==
691
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvYnJhaW5sb3Blci11aS9jb21wb25lbnRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvYnJhaW5sb3Blci11aS9jb21wb25lbnRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFdEUsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFHWixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0ZBQWdGLENBQUM7QUFFckgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBSzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzREFBc0QsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBSXBGLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxJQUFZLEVBQUUsUUFBZ0IsRUFBRSxNQUFjLEVBQUUsRUFBRTtJQUMzRSxJQUFJLE1BQU0sSUFBSSxDQUFDLElBQUksUUFBUSxJQUFJLENBQUMsRUFBRTtRQUNoQyxPQUFPLFFBQVEsTUFBTSxFQUFFLENBQUM7S0FDekI7SUFFRCxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFN0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLFFBQVEsQ0FBQztJQUVuQyxNQUFNLFFBQVEsR0FDWixVQUFVLEdBQUcsTUFBTTtRQUNqQixDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxV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QTtJQUNILHFDQUFJLENBQUE7SUFDSixxQ0FBSSxDQUFBO0FBQ04sQ0FBQyxFQUxJLFNBQVMsS0FBVCxTQUFTLFFBS2IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY3JlZW5TaXplVXRpbCB9IGZyb20gJy4vLi4vLi4vLi4vc2VydmljZXMvc2NyZWVuLXNpemUtdXRpbCc7XHJcbmltcG9ydCB7IEV4cG9ydERhdGFTZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi8uLi9zZXJ2aWNlcy9leHBvcnQtZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBUYWJsZU1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vYnJhaW5sb3Blci11aS9jb21wb25lbnRzL2RhdGEtdGFibGUvdGFibGUtbW9kYWwvdGFibGUtbW9kYWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSHR0cFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9odHRwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21lc3NhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEZ1bmN0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9mdW5jdGlvbnMuc2VydmljZSc7XHJcbmltcG9ydCB7IE1hdFBhZ2luYXRvckludGwgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBUb29sdGlwUG9zaXRpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuaW1wb3J0IHsgbW9kdWxlc0J5Um9sIH0gZnJvbSAnYnJhaW5sb3Blci1zaGFyZWQvZGlzdC9jb25zdGFudHMvcm9sZXNBbmRQZXJtaXNzaW9ucyc7XHJcbmltcG9ydCB7IElQZXJtaXNzaW9ucyB9IGZyb20gJ2JyYWlubG9wZXItc2hhcmVkL2Rpc3QvaW50ZXJmYWNlcy9JUGVybWlzc2lvbnMnO1xyXG5cclxuXHJcbmNvbnN0IHNwYW5pc2hSYW5nZUxhYmVsID0gKHBhZ2U6IG51bWJlciwgcGFnZVNpemU6IG51bWJlciwgbGVuZ3RoOiBudW1iZXIpID0+IHtcclxuICBpZiAobGVuZ3RoID09IDAgfHwgcGFnZVNpemUgPT0gMCkge1xyXG4gICAgcmV0dXJuIGAwIGRlICR7bGVuZ3RofWA7XHJcbiAgfVxyXG5cclxuICBsZW5ndGggPSBNYXRoLm1heChsZW5ndGgsIDApO1xyXG5cclxuICBjb25zdCBzdGFydEluZGV4ID0gcGFnZSAqIHBhZ2VTaXplO1xyXG5cclxuICBjb25zdCBlbmRJbmRleCA9XHJcbiAgICBzdGFydEluZGV4IDwgbGVuZ3RoXHJcbiAgICAgID8gTWF0aC5taW4oc3RhcnRJbmRleCArIHBhZ2VTaXplLCBsZW5ndGgpXHJcbiAgICAgIDogc3RhcnRJbmRleCArIHBhZ2VTaXplO1xyXG5cclxuICByZXR1cm4gYCR7c3RhcnRJbmRleCArIDF9IC0gJHtlbmRJbmRleH0gZGUgJHtsZW5ndGh9YDtcclxufTtcclxuXHJcbmNvbnN0IHJvbGVzQW5kUGVybWlzc2lvbnMgPSBtb2R1bGVzQnlSb2xcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkYXRhLXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YS10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGF0YS10YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0YVRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIEBJbnB1dCgpIHRpdGxlO1xyXG4gIEBJbnB1dCgpIGNvbHVtbnM7XHJcbiAgQElucHV0KCkgZGF0YTogYW55ID0gW107XHJcbiAgQElucHV0KCkgY29tYm87XHJcbiAgQElucHV0KCkgY29uZmlndXJhdGlvbiA9IHtcclxuICAgIGFkZDogZmFsc2UsXHJcbiAgICBlZGl0OiBmYWxzZSxcclxuICAgIGRlbGV0ZTogZmFsc2UsXHJcbiAgICBhY3RpdmU6IGZhbHNlLFxyXG4gICAgc2VsZWN0YWJsZTogZmFsc2UsXHJcbiAgICBwcmludDogZmFsc2UsXHJcbiAgICBhZGRQZXI6IGZhbHNlLFxyXG4gICAgZWRpdFBlcjogZmFsc2UsXHJcbiAgICBwcmltYXJ5S2V5OiAnaWQnLFxyXG4gICAgZXhwb3J0WHNseDogZmFsc2UsXHJcbiAgICBoaWRlVGl0bGU6IHRydWUsXHJcbiAgICBoaWRlRmlsdGVyOiB0cnVlLFxyXG4gICAgbm90SW5pdGlhbGl6ZTogZmFsc2UsXHJcbiAgICBleHBvcnRYc2x4QnlSb3c6IGZhbHNlLFxyXG4gICAgZXhwb3J0WHNseFdpdGhQYWdlczogZmFsc2UsXHJcbiAgICB2aWV3OiBmYWxzZSxcclxuICAgIGNsb3NlT3JkZXI6IGZhbHNlLFxyXG4gICAgcGFja09mZjogZmFsc2UsXHJcbiAgICBhZHZhbmNlOiBmYWxzZSxcclxuICAgIGFkdmFuY2VMYWJlbDogbnVsbCxcclxuICAgIGluY29tZTogZmFsc2UsXHJcbiAgICBleGl0OiBmYWxzZSxcclxuICAgIHNlbmRFbWFpbDogZmFsc2UsXHJcbiAgfTtcclxuXHJcbiAgQElucHV0KCkgcmVsb2FkVGFibGU6IEV2ZW50RW1pdHRlcjxhbnk+O1xyXG4gIEBJbnB1dCgpIHVybDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHBhcmFtczogQXJyYXk8YW55PjtcclxuICBASW5wdXQoKSB0aXRsZUxvYWRpbmc6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIG1lc3NhZ2VMb2FkaW5nOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBoZWFkZXJGaWxlWGxzbTogQXJyYXk8YW55PiA9IFtdO1xyXG4gIEBJbnB1dCgpIGhlYWRlckZpbHRlcnM6IEFycmF5PGFueT4gPSBbXTtcclxuICBASW5wdXQoKSB4c2x4VGl0bGVGaWVsZHM6IHN0cmluZ1tdO1xyXG4gIEBJbnB1dCgpIHhzbHhTaGVldE5hbWVGaWVsZHM6IHN0cmluZ1tdO1xyXG4gIEBJbnB1dCgpIHhzbHhCb2R5RmllbGRzOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgeHNseFBhcmFtczogQXJyYXk8YW55PiA9IG51bGw7XHJcbiAgQElucHV0KCkgcm9sZUlkOiBudW1iZXIgPSAwO1xyXG4gIEBJbnB1dCgpIG1vZHVsZUlkOiBudW1iZXIgPSAwO1xyXG4gIEBJbnB1dCgpIHN1Yk1vZHVsZUlkOiBudW1iZXIgPSAwO1xyXG5cclxuXHJcbiAgcHJpdmF0ZSBoYXNBY2Nlc3NUb0FsbCA9IHRydWU7XHJcbiAgcHJpdmF0ZSByb2xlc0FuZFBlcm1pc3Npb25Vc2VyOiBJUGVybWlzc2lvbnMgPSB7fSBhcyBJUGVybWlzc2lvbnM7XHJcblxyXG4gIEBPdXRwdXQoKSBjbGlja1JvdyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBhZGQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgZWRpdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBkZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgcHJpbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgZXhwb3J0WHNseEJ5Um93ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGFjdGl2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSB2aWV3ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGNsb3NlT3JkZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgcGFja09mZiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBhZHZhbmNlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGluY29tZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBleGl0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGludGVybmFsRGF0YSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBzZW5kRW1haWwgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgbW92aWwgPSBTY3JlZW5TaXplVXRpbC5pc01vYmlsZSgpO1xyXG4gIGZpbHRlcnNQb3N0OiBBcnJheTxhbnk+ID0gW107XHJcbiAgQFZpZXdDaGlsZChNYXRQYWdpbmF0b3IsIHsgc3RhdGljOiB0cnVlIH0pIHBhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xyXG5cclxuICBzZWxlY3RlZFJvd3MgPSBbXTsgLyoqIGFsbWFjZW5hIGxhcyBmaWxhcyBzZWxlY2Npb25hZGFzICovXHJcbiAgY2hlY2tib3hzID0ge307XHJcbiAgc2VsZWN0QWxsID0gZmFsc2U7XHJcbiAgaW5kZXRlcm1pbmF0ZVN0YXRlID0gZmFsc2U7XHJcbiAgZmlsdGVycztcclxuICBvcmlnaW5hbERhdGEgPSBbXTtcclxuICBwYWdpbmF0b3JBY3RpdmUgPSB0cnVlO1xyXG4gIHNjcmVlbjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIGlkX2NvbXBhbmlhO1xyXG5cclxuICBwYWdlU2l6ZU9wdGlvbnM6IG51bWJlcltdID0gWzUsIDEwLCAyNSwgNTAsIDEwMF07XHJcblxyXG4gIHBhZ2VTaXplID0gc2NyZWVuLndpZHRoID4gNTAwID8gMTAgOiA1O1xyXG4gIGxlbmd0aCA9IDA7XHJcblxyXG4gIHBhZ2UgPSAwO1xyXG5cclxuICBhYm92ZTogVG9vbHRpcFBvc2l0aW9uW10gPSBbJ2Fib3ZlJ107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwU2VydmljZSxcclxuICAgIHByaXZhdGUgbWVzc2FnZTogTWVzc2FnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZ1bmN0aW9uRXRlcjogRnVuY3Rpb25zU2VydmljZSxcclxuICAgIHByaXZhdGUgcGFnaW5hdG9yVHJhbnNsYXRlOiBNYXRQYWdpbmF0b3JJbnRsLFxyXG4gICAgcHJpdmF0ZSBleHBvcnRTZXJ2aWNlOiBFeHBvcnREYXRhU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5wYWdpbmF0b3JUcmFuc2xhdGUuaXRlbXNQZXJQYWdlTGFiZWwgPSAnRWxlbWVudG9zIHBvciBww6FnaW5hJztcclxuICAgIHRoaXMucGFnaW5hdG9yVHJhbnNsYXRlLm5leHRQYWdlTGFiZWwgPSAnU2lndWllbnRlIHDDoWdpbmEnO1xyXG4gICAgdGhpcy5wYWdpbmF0b3JUcmFuc2xhdGUubGFzdFBhZ2VMYWJlbCA9ICfDmmx0aW1hIHDDoWdpbmEnO1xyXG4gICAgdGhpcy5wYWdpbmF0b3JUcmFuc2xhdGUucHJldmlvdXNQYWdlTGFiZWwgPSAnUMOhZ2luYSBhbnRlcmlvcic7XHJcbiAgICB0aGlzLnBhZ2luYXRvclRyYW5zbGF0ZS5maXJzdFBhZ2VMYWJlbCA9ICdQcmltZXJhIHDDoWdpbmEnO1xyXG4gICAgdGhpcy5wYWdpbmF0b3JUcmFuc2xhdGUuZ2V0UmFuZ2VMYWJlbCA9IHNwYW5pc2hSYW5nZUxhYmVsO1xyXG4gIH1cclxuXHJcbiAgYnV0dG9uc0NvbmZpZyA9IFtcclxuICBdO1xyXG5cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnZhbGlkYXRlUm9sQW5kUGVybWlzc2lvbigpXHJcbiAgICBpZiAod2luZG93LnNjcmVlbi53aWR0aCA+IDEwMDApIHtcclxuICAgICAgdGhpcy5zY3JlZW4gPSB0cnVlO1xyXG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgKCkgPT4ge1xyXG4gICAgICAgIHdpbmRvdy5zY3JlZW4ud2lkdGggPiAxMDAwXHJcbiAgICAgICAgICA/ICh0aGlzLnNjcmVlbiA9IHRydWUpXHJcbiAgICAgICAgICA6ICh0aGlzLnNjcmVlbiA9IGZhbHNlKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNjcmVlbiA9IGZhbHNlO1xyXG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgKCkgPT4ge1xyXG4gICAgICAgIHdpbmRvdy5zY3JlZW4ud2lkdGggPiAxMDAwXHJcbiAgICAgICAgICA/ICh0aGlzLnNjcmVlbiA9IHRydWUpXHJcbiAgICAgICAgICA6ICh0aGlzLnNjcmVlbiA9IGZhbHNlKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMucmVsb2FkVGFibGUpIHtcclxuICAgICAgdGhpcy5yZWxvYWRUYWJsZS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMub3JpZ2luYWxEYXRhID0gW107XHJcbiAgICAgICAgdGhpcy5zZWxlY3RBbGwgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNlbGV0ZWNBbGxFdmVudCgnJyk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudGl0bGVMb2FkaW5nID09ICcnID8gKHRoaXMudGl0bGVMb2FkaW5nID0gJ0NhcmdhbmRvJykgOiAnJztcclxuICAgIHRoaXMubWVzc2FnZUxvYWRpbmcgPT0gJydcclxuICAgICAgPyAodGhpcy5tZXNzYWdlTG9hZGluZyA9ICdPYnRlbmllbmRvIGRhdG9zLi4uJylcclxuICAgICAgOiAnJztcclxuICAgIHRoaXMudXJsICYmICF0aGlzLmNvbmZpZ3VyYXRpb24ubm90SW5pdGlhbGl6ZVxyXG4gICAgICA/IHRoaXMubWVzc2FnZS5vcGVuTG9hZGluZyh0aGlzLnRpdGxlTG9hZGluZywgdGhpcy5tZXNzYWdlTG9hZGluZylcclxuICAgICAgOiAnJztcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy51cmwgJiYgIXRoaXMuY29uZmlndXJhdGlvbi5ub3RJbml0aWFsaXplKSB7XHJcbiAgICAgICAgbGV0IHNlcnZpY2UgPSBhd2FpdCB0aGlzLmdldERhdGVUYWJsZUJ5VXJsKCk7XHJcbiAgICAgICAgdGhpcy5kYXRhID0gc2VydmljZVsnZGF0YSddO1xyXG4gICAgICAgIHRoaXMubGVuZ3RoID0gc2VydmljZVsnY291bnQnXTtcclxuXHJcbiAgICAgICAgdGhpcy5kYXRhLmZvckVhY2goKHJvdykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jaGVja2JveHNbcm93W3RoaXMuY29uZmlndXJhdGlvbi5wcmltYXJ5S2V5XV0gPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5pbnRlcm5hbERhdGEuZW1pdChzZXJ2aWNlKTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMubWVzc2FnZS5jbG9zZUxvYWRpbmcoKTtcclxuICAgICAgICB9LCAxMDAwKTtcclxuICAgICAgICB0aGlzLnZhbGlkYXRlUnVsZXMoKTtcclxuICAgICAgfSBlbHNlIGlmICghdGhpcy51cmwpIHtcclxuICAgICAgICB0aGlzLnBhZ2luYXRvckFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZVJvbEFuZFBlcm1pc3Npb24oKSB7XHJcbiAgICBpZih0aGlzLnJvbGVJZCAhPSAwKXtcclxuICAgICAgbGV0IHJvbGVQZXJtaXNzaW9ucyA9IHJvbGVzQW5kUGVybWlzc2lvbnM/LmZpbmQoeCA9PiB4LmlkID09IHRoaXMucm9sZUlkKVxyXG4gICAgICB0aGlzLmhhc0FjY2Vzc1RvQWxsID0gcm9sZVBlcm1pc3Npb25zPy5oYXNBY2Nlc3NUb0FsbCA/PyByb2xlUGVybWlzc2lvbnMubW9kdWxlcz8uZmluZCh4ID0+IHguaWQgPT0gdGhpcy5tb2R1bGVJZCk/Lmhhc0FjY2Vzc1RvQWxsID8/IGZhbHNlO1xyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLnJvbGVzQW5kUGVybWlzc2lvblVzZXIgPSByb2xlc0FuZFBlcm1pc3Npb25zPy5maW5kKHggPT4geC5pZCA9PSB0aGlzLnJvbGVJZCk/Lm1vZHVsZXM/LmZpbmQoeCA9PiB4LmlkID09IHRoaXMubW9kdWxlSWQpPy5zdWJNb2R1bGVzPy5maW5kKHggPT4geC5pZCA9PSB0aGlzLnN1Yk1vZHVsZUlkKT8ucGVybWlzc2lvbnMgPz8ge30gYXMgSVBlcm1pc3Npb25zO1xyXG4gICAgaWYgKCF0aGlzLmhhc0FjY2Vzc1RvQWxsICYmICF0aGlzLnJvbGVzQW5kUGVybWlzc2lvblVzZXIucmVhZEFsbCAmJiB0aGlzLnJvbGVzQW5kUGVybWlzc2lvblVzZXIucmVhZE93biA9PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMucGFyYW1zID0gWy4uLnRoaXMucGFyYW1zLCB7IGlkOiAncmVhZE93bicsIHZhbHVlOiB0cnVlIH1dO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb25maWd1cmVCdXR0b25zKClcclxuICB9XHJcblxyXG4gIGNvbmZpZ3VyZUJ1dHRvbnMoKSB7XHJcbiAgICB0aGlzLmJ1dHRvbnNDb25maWcgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBhY3Rpb246ICdlZGl0JyxcclxuICAgICAgICBjb25kaXRpb25TaG93SGVhZGVyOiAoKSA9PlxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3MubGVuZ3RoID09PSAxICYmXHJcbiAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uZWRpdCAmJlxyXG4gICAgICAgICAgdGhpcy5oYXNQZXJtaXNzaW9uKCd1cGRhdGUnKSxcclxuICAgICAgICBjb25kaXRpb246ICgpID0+IHRoaXMuY29uZmlndXJhdGlvbi5lZGl0ICYmIHRoaXMuaGFzUGVybWlzc2lvbigndXBkYXRlJyksXHJcbiAgICAgICAgaWNvbjogJ2ZhLWVkaXQnLFxyXG4gICAgICAgIHRvb2x0aXA6ICdFZGl0YXInLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgYWN0aW9uOiAncHJpbnQnLFxyXG4gICAgICAgIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGggPT09IDEgJiZcclxuICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5wcmludCAmJlxyXG4gICAgICAgICAgdGhpcy5zY3JlZW4gJiZcclxuICAgICAgICAgIHRoaXMuaGFzUGVybWlzc2lvbigncHJpbnQnKSxcclxuICAgICAgICBjb25kaXRpb246ICgpID0+IHRoaXMuY29uZmlndXJhdGlvbi5wcmludCAmJiB0aGlzLnNjcmVlbiAmJiB0aGlzLmhhc1Blcm1pc3Npb24oJ3ByaW50JyksXHJcbiAgICAgICAgaWNvbjogJ2ZhLXByaW50JyxcclxuICAgICAgICB0b29sdGlwOiAnSW1wcmltaXInLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgYWN0aW9uOiAnYWN0aXZlJyxcclxuICAgICAgICBjb25kaXRpb25TaG93SGVhZGVyOiAoKSA9PlxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3MubGVuZ3RoID4gMCAmJiB0aGlzLmNvbmZpZ3VyYXRpb24uYWN0aXZlICYmIHRoaXMuaGFzUGVybWlzc2lvbignYWN0aXZhdGVBbmRJbmFjdGl2YXRlJyksXHJcbiAgICAgICAgY29uZGl0aW9uOiAoKSA9PiB0aGlzLmNvbmZpZ3VyYXRpb24uYWN0aXZlICYmIHRoaXMuaGFzUGVybWlzc2lvbignYWN0aXZhdGVBbmRJbmFjdGl2YXRlJyksXHJcbiAgICAgICAgaWNvbjogJ2ZhLWFkanVzdCcsXHJcbiAgICAgICAgdG9vbHRpcDogJ0FjdGl2YXIvRGVzYWN0aXZhcicsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBhY3Rpb246ICdhZGQnLFxyXG4gICAgICAgIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGggPT09IDAgJiYgdGhpcy5jb25maWd1cmF0aW9uLmFkZCAmJiB0aGlzLmhhc1Blcm1pc3Npb24oJ3dyaXRlJyksXHJcbiAgICAgICAgY29uZGl0aW9uOiAoKSA9PiBmYWxzZSxcclxuICAgICAgICBpY29uOiAnZmEtcGx1cy1jaXJjbGUnLFxyXG4gICAgICAgIHRvb2x0aXA6ICdOdWV2bycsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBhY3Rpb246ICdpbmNvbWUnLFxyXG4gICAgICAgIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGggPT09IDAgJiYgdGhpcy5jb25maWd1cmF0aW9uLmluY29tZSAmJiB0aGlzLmhhc1Blcm1pc3Npb24oJ3dyaXRlJyksXHJcbiAgICAgICAgY29uZGl0aW9uOiAoKSA9PiBmYWxzZSxcclxuICAgICAgICBpY29uOiAnZmEtdXNlci1wbHVzJyxcclxuICAgICAgICB0b29sdGlwOiAnSW5ncmVzbycsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBhY3Rpb246ICdleGl0JyxcclxuICAgICAgICBjb25kaXRpb25TaG93SGVhZGVyOiAoKSA9PlxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3MubGVuZ3RoID09PSAwICYmIHRoaXMuY29uZmlndXJhdGlvbi5leGl0ICYmIHRoaXMuaGFzUGVybWlzc2lvbignd3JpdGUnKSxcclxuICAgICAgICBjb25kaXRpb246ICgpID0+IGZhbHNlLFxyXG4gICAgICAgIGljb246ICdmYS11c2VyLXRpbWVzJyxcclxuICAgICAgICB0b29sdGlwOiAnU2FsaWRhJyxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGFjdGlvbjogJ3ZpZXcnLFxyXG4gICAgICAgIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGggPT09IDEgJiYgdGhpcy5jb25maWd1cmF0aW9uLnZpZXcgJiYgdGhpcy5oYXNQZXJtaXNzaW9uKCdyZWFkRGV0YWlsJyksXHJcbiAgICAgICAgY29uZGl0aW9uOiAoKSA9PiB0aGlzLmNvbmZpZ3VyYXRpb24udmlldyAmJiB0aGlzLmhhc1Blcm1pc3Npb24oJ3JlYWREZXRhaWwnKSxcclxuICAgICAgICBpY29uOiAnZmEtZXllJyxcclxuICAgICAgICB0b29sdGlwOiAnVmVyIGRldGFsbGUnLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgYWN0aW9uOiAnY2xvc2VPcmRlcicsXHJcbiAgICAgICAgY29uZGl0aW9uU2hvd0hlYWRlcjogKCkgPT5cclxuICAgICAgICAgICh0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGggPT09IDEgJiYgdGhpcy5jb25maWd1cmF0aW9uLmNsb3NlT3JkZXIpICYmIHRoaXMuaGFzUGVybWlzc2lvbignY2xvc2VPVCcpLFxyXG4gICAgICAgIGNvbmRpdGlvbjogKCkgPT4gdGhpcy5jb25maWd1cmF0aW9uLmNsb3NlT3JkZXIgJiYgdGhpcy5oYXNQZXJtaXNzaW9uKCdjbG9zZU9UJyksXHJcbiAgICAgICAgaWNvbjogJ2ZhLWNoZWNrLWNpcmNsZScsXHJcbiAgICAgICAgdG9vbHRpcDogJ0NlcnJhciBvcmRlbicsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBhY3Rpb246ICdwYWNrT2ZmJyxcclxuICAgICAgICBjb25kaXRpb25TaG93SGVhZGVyOiAoKSA9PlxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3MubGVuZ3RoID09PSAxICYmIHRoaXMuY29uZmlndXJhdGlvbi5wYWNrT2ZmICYmIHRoaXMuaGFzUGVybWlzc2lvbignYWxsb2NhdGVSZXNvdXJjZXMnKSxcclxuICAgICAgICBjb25kaXRpb246ICgpID0+IHRoaXMuY29uZmlndXJhdGlvbi5wYWNrT2ZmICYmIHRoaXMuaGFzUGVybWlzc2lvbignYWxsb2NhdGVSZXNvdXJjZXMnKSxcclxuICAgICAgICBpY29uOiAnZmEtY2FydC1hcnJvdy1kb3duJyxcclxuICAgICAgICB0b29sdGlwOiAnRGVzcGFjaGFyIHJlY3Vyc29zJyxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGFjdGlvbjogJ2FkdmFuY2UnLFxyXG4gICAgICAgIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGggPT09IDEgJiYgdGhpcy5jb25maWd1cmF0aW9uLmFkdmFuY2UgJiYgdGhpcy5oYXNQZXJtaXNzaW9uKCdhZHZhbmNlJyksXHJcbiAgICAgICAgY29uZGl0aW9uOiAoKSA9PiB0aGlzLmNvbmZpZ3VyYXRpb24uYWR2YW5jZSAmJiB0aGlzLmhhc1Blcm1pc3Npb24oJ2FkdmFuY2UnKSxcclxuICAgICAgICBpY29uOiAnZmEtYXJyb3ctcmlnaHQnLFxyXG4gICAgICAgIHRvb2x0aXA6IHRoaXMuY29uZmlndXJhdGlvbi5hZHZhbmNlTGFiZWwsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBhY3Rpb246ICdzZW5kRW1haWwnLFxyXG4gICAgICAgIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGggPT09IDEgJiZcclxuICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5zZW5kRW1haWwgJiZcclxuICAgICAgICAgIHRoaXMuc2NyZWVuICYmXHJcbiAgICAgICAgICB0aGlzLmhhc1Blcm1pc3Npb24oJ3NlbmRFbWFpbCcpLFxyXG4gICAgICAgIGNvbmRpdGlvbjogKCkgPT4gdGhpcy5jb25maWd1cmF0aW9uLnNlbmRFbWFpbCAmJiB0aGlzLnNjcmVlbiAmJiB0aGlzLmhhc1Blcm1pc3Npb24oJ3NlbmRFbWFpbCcpLFxyXG4gICAgICAgIGljb246ICdmYS1tYWlsLWJ1bGsnLFxyXG4gICAgICAgIHRvb2x0aXA6ICdFbnZpYSBjb3JyZW8nLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgYWN0aW9uOiAnZXhwb3J0VG9FeGNlbCcsXHJcbiAgICAgICAgY29uZGl0aW9uU2hvd0hlYWRlcjogKCkgPT5cclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aCA9PT0gMCAmJlxyXG4gICAgICAgICAgdGhpcy5kYXRhLmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgICh0aGlzLmNvbmZpZ3VyYXRpb24uZXhwb3J0WHNseCB8fCB0aGlzLmNvbmZpZ3VyYXRpb24uZXhwb3J0WHNseFdpdGhQYWdlcykgJiZcclxuICAgICAgICAgIHRoaXMuaGFzUGVybWlzc2lvbignZXhwb3J0JyksXHJcbiAgICAgICAgY29uZGl0aW9uOiAoKSA9PiBmYWxzZSxcclxuICAgICAgICBpY29uOiAnZmEtZG93bmxvYWQnLFxyXG4gICAgICAgIHRvb2x0aXA6ICdFeHBvcnRhciBUYWJsYScsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBhY3Rpb246ICdleHBvcnRUb0V4Y2VsQnlSb3cnLFxyXG4gICAgICAgIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGggPT09IDEgJiYgdGhpcy5jb25maWd1cmF0aW9uLmV4cG9ydFhzbHhCeVJvdyAmJiB0aGlzLmhhc1Blcm1pc3Npb24oJ2V4cG9ydCcpLFxyXG4gICAgICAgIGNvbmRpdGlvbjogKCkgPT4gdGhpcy5jb25maWd1cmF0aW9uLmV4cG9ydFhzbHhCeVJvdyAmJiB0aGlzLmhhc1Blcm1pc3Npb24oJ2V4cG9ydCcpLFxyXG4gICAgICAgIGljb246ICdmYS1kb3dubG9hZCcsXHJcbiAgICAgICAgdG9vbHRpcDogJ0V4cG9ydGFyIFJlZ2lzdHJvJyxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGFjdGlvbjogJ2RlbGV0ZScsXHJcbiAgICAgICAgY29uZGl0aW9uU2hvd0hlYWRlcjogKCkgPT5cclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aCA+IDAgJiYgdGhpcy5jb25maWd1cmF0aW9uLmRlbGV0ZSAmJiB0aGlzLmhhc1Blcm1pc3Npb24oJ2RlbGV0ZScpLFxyXG4gICAgICAgIGNvbmRpdGlvbjogKCkgPT4gdGhpcy5jb25maWd1cmF0aW9uLmRlbGV0ZSAmJiB0aGlzLmhhc1Blcm1pc3Npb24oJ2RlbGV0ZScpLFxyXG4gICAgICAgIGljb246ICdmYS10cmFzaCcsXHJcbiAgICAgICAgdG9vbHRpcDogJ0VsaW1pbmFyJyxcclxuICAgICAgfSxcclxuICAgIF07XHJcbiAgfVxyXG5cclxuICBoYXNQZXJtaXNzaW9uKHBlcm1pc3Npb246IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuaGFzQWNjZXNzVG9BbGwpIHJldHVybiB0cnVlO1xyXG4gICAgcmV0dXJuIHRoaXMucm9sZXNBbmRQZXJtaXNzaW9uVXNlcj8uW3Blcm1pc3Npb25dID8/IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0RGF0ZVRhYmxlQnlVcmwoKSB7XHJcbiAgICB0aGlzLnZhbGlkYXJQYXJhbXMoKTtcclxuICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHAucG9zdERhdGFCb2R5KFxyXG4gICAgICB0aGlzLnVybCxcclxuICAgICAgdGhpcy5maWx0ZXJzUG9zdCxcclxuICAgICAgdGhpcy5wYXJhbXNcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB2YWxpZGFyUGFyYW1zKCkge1xyXG4gICAgdGhpcy5wYXJhbXMgPSB0aGlzLmZ1bmN0aW9uRXRlci5yZW1vdmVEdXBsaWNhdGVPYmplY3RzKHRoaXMucGFyYW1zKTtcclxuICAgIGlmICh0aGlzLnBhcmFtcykge1xyXG4gICAgICBpZiAoIXRoaXMucGFyYW1zLmZpbmQoKHgpID0+IHguaWQgPT0gJ3BhZ2UnKSkge1xyXG4gICAgICAgIHRoaXMucGFyYW1zLnB1c2goeyBpZDogJ3BhZ2UnLCB2YWx1ZTogJzAnIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5wYXJhbXMuZmluZCgoeCkgPT4geC5pZCA9PSAncGVyX3BhZ2UnKSkge1xyXG4gICAgICAgIHRoaXMucGFyYW1zLnB1c2goeyBpZDogJ3Blcl9wYWdlJywgdmFsdWU6IHRoaXMucGFnZVNpemUgfSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLnBhcmFtcy5maW5kKCh4KSA9PiB4LmlkID09ICdmaWx0ZXInKSkge1xyXG4gICAgICAgIHRoaXMucGFyYW1zLnB1c2goeyBpZDogJ2ZpbHRlcicsIHZhbHVlOiAnJyB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgdmFsaWRhdGVSdWxlcygpIHtcclxuICAgIGZvciAoY29uc3QgW2luZGV4LCBjb2x1bW5zXSBvZiB0aGlzLmNvbHVtbnMuZW50cmllcygpKSB7XHJcbiAgICAgIGZvciAoY29uc3QgW2luZGV4RGF0YSwgZWxlbWVudF0gb2YgdGhpcy5kYXRhLmVudHJpZXMoKSkge1xyXG4gICAgICAgIGlmIChjb2x1bW5zLnJ1bGVzKSB7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgY29sdW1ucy5ydWxlcykge1xyXG4gICAgICAgICAgICBpZiAocnVsZS5ydWxlID09IGVudW1SdWxlc1snPT0nXSkge1xyXG4gICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgIGVsZW1lbnRbY29sdW1ucy5JRF0gJiZcclxuICAgICAgICAgICAgICAgIGVsZW1lbnRbY29sdW1ucy5JRF0udG9TdHJpbmcoKSA9PSBydWxlLnZhbHVlUnVsZS50b1N0cmluZygpXHJcbiAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFbaW5kZXhEYXRhXVtjb2x1bW5zLklEXSA9IHJ1bGUudmFsdWVBY3Rpb247XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGNvbHVtblZhbHVlID0gZWxlbWVudFtjb2x1bW5zLklEXTtcclxuICAgICAgICBpZiAoY29sdW1ucy50eXBlID09ICdmZWNoYScgfHwgY29sdW1ucy50eXBlID09ICdkYXRlJylcclxuICAgICAgICAgIHRoaXMuZGF0YVtpbmRleERhdGFdW2NvbHVtbnMuSURdID1cclxuICAgICAgICAgICAgdGhpcy5mdW5jdGlvbkV0ZXIuZGF0ZUlzbyhjb2x1bW5WYWx1ZSk7XHJcbiAgICAgICAgaWYgKGNvbHVtbnMudHlwZSA9PSAnZGF0ZVdpdGhUaW1lJylcclxuICAgICAgICAgIHRoaXMuZGF0YVtpbmRleERhdGFdW2NvbHVtbnMuSURdID0gdGhpcy5mdW5jdGlvbkV0ZXIuZGF0ZVdpdGhUaW1lKFxyXG4gICAgICAgICAgICBjb2x1bW5WYWx1ZT8udG9TdHJpbmcoKSA/PyBjb2x1bW5WYWx1ZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAoY29sdW1ucy50eXBlID09ICdjdXJyZW5jeScpXHJcbiAgICAgICAgICB0aGlzLmRhdGFbaW5kZXhEYXRhXVtjb2x1bW5zLklEXSA9XHJcbiAgICAgICAgICAgIEludGwuTnVtYmVyRm9ybWF0KCdlcy1DTycpLmZvcm1hdChjb2x1bW5WYWx1ZSk7XHJcbiAgICAgICAgaWYgKGNvbHVtbnMudHlwZSA9PSAnYm9vbGVhbicpXHJcbiAgICAgICAgICB0aGlzLmRhdGFbaW5kZXhEYXRhXVtjb2x1bW5zLklEXSA9IGNvbHVtblZhbHVlID09IDEgPyAnU2knIDogJ05vJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXMuZGF0YSkge1xyXG4gICAgICBpZiAodGhpcy5kYXRhKSB7XHJcbiAgICAgICAgdGhpcy5kYXRhLmZvckVhY2goKHJvdykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jaGVja2JveHNbcm93W3RoaXMuY29uZmlndXJhdGlvbi5wcmltYXJ5S2V5XV0gPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAodGhpcy5vcmlnaW5hbERhdGEubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgIGlmICh0aGlzLmRhdGEubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhLmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLm9yaWdpbmFsRGF0YS5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy52YWxpZGF0ZVJ1bGVzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNoYW5nZXMuY29uZmlndXJhdGlvbikge1xyXG4gICAgICB0aGlzLnVwZGF0ZUJ1dHRvbkNvbmZpZygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlQnV0dG9uQ29uZmlnKCkge1xyXG4gICAgdGhpcy5idXR0b25zQ29uZmlnID0gdGhpcy5idXR0b25zQ29uZmlnLm1hcCgoYnV0dG9uKSA9PiB7XHJcbiAgICAgIGlmIChidXR0b24uYWN0aW9uID09PSAnYWR2YW5jZScpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgLi4uYnV0dG9uLFxyXG4gICAgICAgICAgdG9vbHRpcDogdGhpcy5jb25maWd1cmF0aW9uLmFkdmFuY2VMYWJlbCA/PyAnQXZhbnphcicsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gYnV0dG9uO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjbGlja09uUm9XKHJvd0RhdGEpIHtcclxuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2hlY2tib3hzW3Jvd0RhdGFbdGhpcy5jb25maWd1cmF0aW9uLnByaW1hcnlLZXldXTtcclxuXHJcbiAgICBpZiAoIXRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RhYmxlKSB7XHJcbiAgICAgIHRoaXMuY2xlYXJDaGVja2JveGVzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWxlY3Rpb24ocm93RGF0YSwgeyBjaGVja2VkOiAhc3RhdGUgfSwgdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdGFibGUpO1xyXG4gICAgdGhpcy5jbGlja1Jvdy5lbWl0KHJvd0RhdGEpO1xyXG4gIH1cclxuXHJcbiAgc2hvd01lbnUoJGV2ZW50KSB7XHJcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBhY3Rpb24oYWN0aW9uLCByb3cgPSBudWxsKSB7XHJcbiAgICB2YXIgY3VycmVudFJvdyA9IHJvdyA/IFtyb3ddIDogdGhpcy5zZWxlY3RlZFJvd3M7XHJcblxyXG4gICAgc3dpdGNoIChhY3Rpb24pIHtcclxuICAgICAgY2FzZSAnYWRkJzpcclxuICAgICAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uLmFkZFBlcikge1xyXG4gICAgICAgICAgdGhpcy5hZGQuZW1pdCh0aGlzLmxlbmd0aCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nXHJcbiAgICAgICAgICAgIC5vcGVuKFRhYmxlTW9kYWxDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICBhY3Rpb24sXHJcbiAgICAgICAgICAgICAgICBjb2x1bW5zOiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuY29sdW1ucykpLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgd2lkdGg6ICc2MHZoJyxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGQuZW1pdChyZXN1bHQpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgJ2VkaXQnOlxyXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24uZWRpdFBlcikge1xyXG4gICAgICAgICAgdGhpcy5lZGl0LmVtaXQoY3VycmVudFJvdyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxldCBjb2x1bW5zOiBhbnk7XHJcbiAgICAgICAgICBjb2x1bW5zID0gdGhpcy5jb2x1bW5zO1xyXG5cclxuICAgICAgICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhjdXJyZW50Um93WzBdKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoY29sdW1uLklEID09IGtleSkge1xyXG4gICAgICAgICAgICAgICAgY29sdW1uc1tpbmRleF0udmFsdWUgPSBjdXJyZW50Um93WzBdW2tleV07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIHRoaXMuZGlhbG9nXHJcbiAgICAgICAgICAgIC5vcGVuKFRhYmxlTW9kYWxDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICBhY3Rpb24sXHJcbiAgICAgICAgICAgICAgICBjb2x1bW5zOiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuY29sdW1ucykpLFxyXG4gICAgICAgICAgICAgICAgdmFsdWVzOiBjdXJyZW50Um93WzBdLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgd2lkdGg6ICc2MHZoJyxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lZGl0LmVtaXQoeyBuZXc6IHJlc3VsdCwgb2xkOiBjdXJyZW50Um93WzBdIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgJ2RlbGV0ZSc6XHJcbiAgICAgICAgdGhpcy5kZWxldGUuZW1pdChjdXJyZW50Um93KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAncHJpbnQnOlxyXG4gICAgICAgIHRoaXMucHJpbnQuZW1pdChjdXJyZW50Um93KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnYWN0aXZlJzpcclxuICAgICAgICB0aGlzLmFjdGl2ZS5lbWl0KGN1cnJlbnRSb3cpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdleHBvcnRUb0V4Y2VsJzpcclxuICAgICAgICB0aGlzLmV4cG9ydFRvRXhjZWwoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZXhwb3J0VG9FeGNlbEJ5Um93JzpcclxuICAgICAgICB0aGlzLmV4cG9ydFhzbHhCeVJvdy5lbWl0KGN1cnJlbnRSb3cpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd2aWV3JzpcclxuICAgICAgICB0aGlzLnZpZXcuZW1pdChjdXJyZW50Um93KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2xvc2VPcmRlcic6XHJcbiAgICAgICAgdGhpcy5jbG9zZU9yZGVyLmVtaXQoY3VycmVudFJvdyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3BhY2tPZmYnOlxyXG4gICAgICAgIHRoaXMucGFja09mZi5lbWl0KGN1cnJlbnRSb3cpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdhZHZhbmNlJzpcclxuICAgICAgICB0aGlzLmFkdmFuY2UuZW1pdChjdXJyZW50Um93KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnaW5jb21lJzpcclxuICAgICAgICB0aGlzLmluY29tZS5lbWl0KHRoaXMubGVuZ3RoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZXhpdCc6XHJcbiAgICAgICAgdGhpcy5leGl0LmVtaXQodGhpcy5sZW5ndGgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdzZW5kRW1haWwnOlxyXG4gICAgICAgIHRoaXMuc2VuZEVtYWlsLmVtaXQoY3VycmVudFJvdyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaG91bGRTaG93TWVudSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmJ1dHRvbnNDb25maWcuc29tZSgoYnRuKSA9PiBidG4uY29uZGl0aW9uKCkpO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0VG9FeGNlbCgpIHtcclxuICAgIGxldCBwYXJhbXMgPSBbXTtcclxuICAgIGlmICh0aGlzLnVybCAmJiB0aGlzLnBhcmFtcykge1xyXG4gICAgICBwYXJhbXMgPSBbLi4udGhpcy5wYXJhbXNdO1xyXG5cclxuICAgICAgaWYgKHRoaXMueHNseFBhcmFtcykge1xyXG4gICAgICAgIHBhcmFtcyA9IFsuLi5wYXJhbXMsIC4uLnRoaXMueHNseFBhcmFtc107XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGkgPSBwYXJhbXMuZmluZEluZGV4KCh4KSA9PiB4LmlkID09ICdwZXJfcGFnZScpO1xyXG4gICAgICBpZiAoaSAhPSAtMSkgcGFyYW1zW2ldLnZhbHVlID0gMTAwMDAwMDAwO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24uZXhwb3J0WHNseFdpdGhQYWdlcykge1xyXG4gICAgICB0aGlzLmV4cG9ydFNlcnZpY2UuZ2VuZXJhdGVFeGNlbFdpdGhTaGVldHM8YW55PihcclxuICAgICAgICB0aGlzLnRpdGxlLFxyXG4gICAgICAgIHRoaXMuaGVhZGVyRmlsZVhsc20sXHJcbiAgICAgICAgdGhpcy50aXRsZSxcclxuICAgICAgICB0aGlzLnVybCA/IG51bGwgOiB0aGlzLmRhdGEsXHJcbiAgICAgICAgdGhpcy51cmwsXHJcbiAgICAgICAgcGFyYW1zLFxyXG4gICAgICAgIHRoaXMuZmlsdGVyc1Bvc3QsXHJcbiAgICAgICAgdGhpcy54c2x4VGl0bGVGaWVsZHMsXHJcbiAgICAgICAgdGhpcy54c2x4U2hlZXROYW1lRmllbGRzLFxyXG4gICAgICAgIHRoaXMueHNseEJvZHlGaWVsZHNcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZXhwb3J0U2VydmljZS5nZW5lcmF0ZVRvWGxzeDxhbnk+KFxyXG4gICAgICAgIHRoaXMudGl0bGUsXHJcbiAgICAgICAgdGhpcy5oZWFkZXJGaWxlWGxzbSxcclxuICAgICAgICB0aGlzLnRpdGxlLFxyXG4gICAgICAgIHRoaXMudXJsID8gbnVsbCA6IHRoaXMuZGF0YSxcclxuICAgICAgICB0aGlzLnVybCxcclxuICAgICAgICBwYXJhbXMsXHJcbiAgICAgICAgdGhpcy5maWx0ZXJzUG9zdFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0aW9uKHJvdywgJGV2ZW50LCBlbWl0RXZlbnQgPSB0cnVlKSB7XHJcbiAgICB0aGlzLmNoZWNrYm94c1tyb3dbdGhpcy5jb25maWd1cmF0aW9uLnByaW1hcnlLZXldXSA9ICRldmVudC5jaGVja2VkO1xyXG4gICAgaWYgKCRldmVudC5jaGVja2VkKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLnB1c2gocm93KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dzLmluZGV4T2Yocm93KTtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd3Muc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdGFibGUgJiYgZW1pdEV2ZW50KSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdCh0aGlzLnNlbGVjdGVkUm93cyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aCA9PSB0aGlzLmRhdGEubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGggPiAwICYmXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aCA8IHRoaXMuZGF0YS5sZW5ndGhcclxuICAgICkge1xyXG4gICAgICB0aGlzLmluZGV0ZXJtaW5hdGVTdGF0ZSA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmluZGV0ZXJtaW5hdGVTdGF0ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xpY2tlZCgkZXZlbnQpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2VsZXRlY0FsbEV2ZW50KCRldmVudCkge1xyXG4gICAgdGhpcy5pbmRldGVybWluYXRlU3RhdGUgPSBmYWxzZTtcclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3RBbGwpIHtcclxuICAgICAgT2JqZWN0LmtleXModGhpcy5jaGVja2JveHMpLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2hlY2tib3hzW2tleV0gPSB0cnVlO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzID0gW107XHJcbiAgICAgIGxldCBkYXRhID0gdGhpcy5kYXRhO1xyXG4gICAgICBkYXRhLmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkUm93cy5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdCh0aGlzLnNlbGVjdGVkUm93cyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNsZWFyQ2hlY2tib3hlcygpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkLmVtaXQodGhpcy5zZWxlY3RlZFJvd3MpO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBzZXJ2aWNlID0gYXdhaXQgdGhpcy5nZXREYXRlVGFibGVCeVVybCgpO1xyXG4gICAgdGhpcy5kYXRhID0gc2VydmljZVsnZGF0YSddO1xyXG4gICAgdGhpcy5pbnRlcm5hbERhdGEuZW1pdChzZXJ2aWNlKTtcclxuICAgIHRoaXMubGVuZ3RoID0gc2VydmljZVsnY291bnQnXTtcclxuICAgIHRoaXMudmFsaWRhdGVSdWxlcygpO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJDaGVja2JveGVzKCkge1xyXG4gICAgT2JqZWN0LmtleXModGhpcy5jaGVja2JveHMpLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICB0aGlzLmNoZWNrYm94c1trZXldID0gZmFsc2U7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkUm93cyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlRmlsdGVycygpIHtcclxuICAgIGlmICh0aGlzLnBhcmFtcylcclxuICAgICAgdGhpcy5wYXJhbXMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG4gICAgICAgIGlmIChlbGVtZW50LmlkID09ICdmaWx0ZXInKSB7XHJcbiAgICAgICAgICBlbGVtZW50LnZhbHVlID0gdGhpcy5maWx0ZXJzO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBhcHBseUZpbHRlcnMoJGV2ZW50PzogYW55KSB7XHJcbiAgICBpZiAoJGV2ZW50KSB0aGlzLmZpbHRlcnNQb3N0ID0gJGV2ZW50O1xyXG4gICAgaWYgKHRoaXMudXJsKSB7XHJcbiAgICAgIGxldCByZXM6IGFueSA9IGF3YWl0IHRoaXMuZ2V0RGF0ZVRhYmxlQnlVcmwoKTtcclxuICAgICAgdGhpcy5kYXRhID0gcmVzWydkYXRhJ107XHJcbiAgICAgIHRoaXMudmFsaWRhdGVSdWxlcygpO1xyXG4gICAgICB0aGlzLmxlbmd0aCA9IHJlc1snY291bnQnXTtcclxuICAgICAgdGhpcy5pbnRlcm5hbERhdGEuZW1pdChyZXMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kYXRhID0gdGhpcy5vcmlnaW5hbERhdGEuZmlsdGVyKChkYXRhKSA9PiB7XHJcbiAgICAgICAgZm9yIChsZXQga2V5IG9mIE9iamVjdC5rZXlzKGRhdGEpKSB7XHJcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gZGF0YVtrZXldXHJcbiAgICAgICAgICAgIC50b1N0cmluZygpXHJcbiAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgICAgIC5pbmNsdWRlcyh0aGlzLmZpbHRlcnMudG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VQYWdlKCRldmVudCkge1xyXG4gICAgdGhpcy5wYXJhbXMuZm9yRWFjaCgoZWxlbWVudCwgaW5kZXgpID0+IHtcclxuICAgICAgaWYgKGVsZW1lbnQuaWQgPT0gJ3Blcl9wYWdlJykge1xyXG4gICAgICAgIGVsZW1lbnQudmFsdWUgPSAkZXZlbnQucGFnZVNpemU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGVsZW1lbnQuaWQgPT0gJ3BhZ2UnKSB7XHJcbiAgICAgICAgZWxlbWVudC52YWx1ZSA9ICRldmVudC5wYWdlSW5kZXg7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcclxuICB9XHJcbn1cclxuXHJcbmVudW0gZW51bVJ1bGVzIHtcclxuICAnPicsXHJcbiAgJzwnLFxyXG4gICc9PScsXHJcbiAgJyE9JyxcclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29udGVuZWRvci10YWJsYVwiPlxyXG4gIDxhcHAtZmlsdGVycyBbaGVhZGVyRmlsdGVyc109XCJoZWFkZXJGaWx0ZXJzXCIgKGFwcGx5RmlsdGVycyk9XCJhcHBseUZpbHRlcnMoJGV2ZW50KVwiPlxyXG4gIDwvYXBwLWZpbHRlcnM+XHJcblxyXG4gIDxkaXYgc3R5bGU9J2Rpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiByb3c7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgIGFsaWduLWl0ZW1zOiBjZW50ZXI7Jz5cclxuICAgIDxkaXYgc3R5bGU9J2ZsZXg6MTsgZm9udC1zaXplOiAxcmVtOyc+XHJcbiAgICAgIDxzdHJvbmc+PHAgc3R5bGU9J21hcmdpbjowJyAqbmdJZj0nc2VsZWN0ZWRSb3dzLmxlbmd0aD4wICYmIHNlbGVjdGVkUm93cy5sZW5ndGg8MiAmJiBjb25maWd1cmF0aW9uLnNlbGVjdGFibGUnPiB7e3NlbGVjdGVkUm93cy5sZW5ndGh9fSBTZWxlY2Npb25hZG8gPC9wPjwvc3Ryb25nPlxyXG4gICAgICA8c3Ryb25nPjxwIHN0eWxlPSdtYXJnaW46MCcgKm5nSWY9J3NlbGVjdGVkUm93cy5sZW5ndGg+MSc+IHt7c2VsZWN0ZWRSb3dzLmxlbmd0aH19IFNlbGVjY2lvbmFkb3MgPC9wPjwvc3Ryb25nPlxyXG4gICAgICA8c3Ryb25nPjxwIHN0eWxlPSdtYXJnaW46MCcgKm5nSWY9J3NlbGVjdGVkUm93cy5sZW5ndGg8MSAmJiAhY29uZmlndXJhdGlvbi5oaWRlVGl0bGUnPiB7e3RpdGxlfX0gPC9wPjwvc3Ryb25nPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cIiFjb25maWd1cmF0aW9uLmhpZGVGaWx0ZXJcIiBzdHlsZT0nZmxleDozOyBwYWRkaW5nLXJpZ2h0OiAxMHB4OyBtYXJnaW4tYm90dG9tOiA1cHg7Jz5cclxuICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz0nZmlsdGVyJz5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT0nZmlsdGVycycgKGtleXVwKT0nY2hhbmdlRmlsdGVycygpJyAgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCJGaWx0cmFyXCI+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnV0dG9uc1RhYmxlXCI+PC9uZy1jb250YWluZXI+XHJcblxyXG4gIDwvZGl2PlxyXG5cclxuIDx0YWJsZSBjbGFzcz1cInRhYmxlX0V0ZXIgdGFibGUtaG92ZXJcIj5cclxuICAgICA8dGhlYWQgY2xhc3M9XCJkYXJrXCI+XHJcbiAgICAgICA8dHIgPlxyXG4gICAgICAgIDx0aCAqbmdJZj0nY29uZmlndXJhdGlvbi5zZWxlY3RhYmxlJyBzdHlsZT0nanVzdGlmeS1jb250ZW50OiBjZW50ZXI7Jz5cclxuICAgICAgICAgIDxtYXQtY2hlY2tib3ggY29sb3I9J3ByaW1hcnknIChjaGFuZ2UpPSdzZWxldGVjQWxsRXZlbnQoJGV2ZW50KScgWyhuZ01vZGVsKV09J3NlbGVjdEFsbCcgW2luZGV0ZXJtaW5hdGVdPSdpbmRldGVybWluYXRlU3RhdGUnPiA8L21hdC1jaGVja2JveD4gIDwvdGg+XHJcbiAgICAgICA8dGhcclxuICAgICAgIFtjbGFzc109XCJjb2x1bW4uc3R5bGU/Lm1vdmlsXCJcclxuICAgICAgICpuZ0Zvcj0nbGV0IGNvbHVtbiBvZiBjb2x1bW5zJyBzY29wZT1cImNvbFwiXHJcbiAgICAgICBbbmdTdHlsZV09XCJjb2x1bW4uc3R5bGVcIlxyXG4gICAgICAgPnt7Y29sdW1uLmxhYmVsfX08L3RoPlxyXG4gICAgICAgPHRoICpuZ0lmPVwic2hvdWxkU2hvd01lbnUoKVwiPjwvdGg+XHJcbiAgICAgICA8L3RyPlxyXG4gICAgIDwvdGhlYWQ+XHJcbiAgICAgPHRib2R5IGNsYXNzPSdtYXQtZWxldmF0aW9uLXozJz5cclxuXHJcbiAgICAgICA8dHIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCIgKm5nRm9yPSdsZXQgcm93IG9mIGRhdGEnIChjbGljayk9J2NsaWNrT25Sb1cocm93KScgW2NsYXNzXT1cImNoZWNrYm94c1tyb3dbY29uZmlndXJhdGlvbi5wcmltYXJ5S2V5XV0/J3NlbGVjdGVkLXJvdyc6JydcIj5cclxuICAgICAgICA8dGggKm5nSWY9J2NvbmZpZ3VyYXRpb24uc2VsZWN0YWJsZScgc3R5bGU9J2p1c3RpZnktY29udGVudDogY2VudGVyOyc+IDxtYXQtY2hlY2tib3ggY29sb3I9J3ByaW1hcnknIFsobmdNb2RlbCldPSdjaGVja2JveHNbcm93W2NvbmZpZ3VyYXRpb24ucHJpbWFyeUtleV1dJyAoY2xpY2spPSdjbGlja2VkKCRldmVudCknIChjaGFuZ2UpPSdzZWxlY3Rpb24ocm93LCAkZXZlbnQpJz4gPC9tYXQtY2hlY2tib3g+ICA8L3RoPlxyXG4gICAgICAgIDx0aCBbY2xhc3NdPSdjb2x1bW4uc3R5bGU/Lm1vdmlsJyBbbmdTdHlsZV09J2NvbHVtbi5zdHlsZScgc2NvcGU9XCJyb3dcIiAqbmdGb3I9J2xldCBjb2x1bW4gb2YgY29sdW1ucyc+e3sgcm93W2NvbHVtbi5JRF0gfX08L3RoPlxyXG5cclxuICAgICAgICA8dGggKm5nSWY9XCJzaG91bGRTaG93TWVudSgpXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgYWxpZ24taXRlbXM6IGNlbnRlcjsgb3ZlcmZsb3c6IHZpc2libGU7XCI+XHJcbiAgICAgICAgICA8bWF0LWljb25cclxuICAgICAgICAgIChjbGljayk9XCJzaG93TWVudSgkZXZlbnQpXCJcclxuICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCJcclxuICAgICAgICAgIG1hdFJpcHBsZVxyXG4gICAgICAgICAgY2xhc3M9XCJtZW51X21vcmVfdmVydFwiXHJcbiAgICAgICAgICBhcmlhLWhpZGRlbj1cImZhbHNlXCJcclxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJFeGFtcGxlIGRlbGV0ZSBpY29uXCJcclxuICAgICAgICAgID5tb3JlX3ZlcnQ8L21hdC1pY29uPlxyXG5cclxuICAgICAgICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgYnRuIG9mIGJ1dHRvbnNDb25maWdcIiA+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImJ0bi5jb25kaXRpb24oKVwiIChjbGljayk9XCJhY3Rpb24oYnRuLmFjdGlvbiwgcm93KVwiIG1hdC1tZW51LWl0ZW0gY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHctMTAwXCIgPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSB7e2J0bi5pY29ufX0gYnRuLWFjY2lvblwiIHN0eWxlPVwiZm9udC1zaXplOjEyMCU7IG1hcmdpbi1yaWdodDogMTBweFwiPjwvaT5cclxuICAgICAgICAgICAgICAgIHt7YnRuLnRvb2x0aXB9fVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgPC90cj5cclxuXHJcblxyXG4gICAgIDwvdGJvZHk+XHJcblxyXG4gICA8L3RhYmxlPlxyXG5cclxuICAgPGRpdiAqbmdJZj0nbGVuZ3RoID09IDAgJiYgZGF0YS5sZW5ndGggPT0gMCcgc3R5bGU9XCJtYXJnaW4tbGVmdDogMTBweDtcIj4gPHN0cm9uZz5ObyBzZSBlbmNvbnRyw7MgaW5mb3JtYWNpw7NuPC9zdHJvbmc+PC9kaXY+XHJcblxyXG4gICA8bWF0LXBhZ2luYXRvciAqbmdJZj1cInBhZ2luYXRvckFjdGl2ZVwiXHJcbiAgIFtsZW5ndGhdPVwibGVuZ3RoXCIgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCIgW3BhZ2VTaXplT3B0aW9uc109XCJwYWdlU2l6ZU9wdGlvbnNcIiBzaG93Rmlyc3RMYXN0QnV0dG9uc1xyXG4gICAocGFnZSk9XCJjaGFuZ2VQYWdlKCRldmVudClcIj48L21hdC1wYWdpbmF0b3I+XHJcblxyXG4gIDwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICNidXR0b25zVGFibGUgbGV0LWZvbnRTaXplPVwiZm9udFNpemVcIiBsZXQtbWFyZ2luUmlnaHQ9XCJtYXJnaW5SaWdodFwiIHN0eWxlPSdmbGV4OjAuNTsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjogcm93OyBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOyc+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYnRuIG9mIGJ1dHRvbnNDb25maWdcIj5cclxuICAgIDxkaXYgKm5nSWY9XCJidG4uY29uZGl0aW9uU2hvd0hlYWRlcigpXCIgKGNsaWNrKT1cImFjdGlvbihidG4uYWN0aW9uKVwiIG1hdFRvb2x0aXA9XCJ7e2J0bi50b29sdGlwfX1cIiBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiPlxyXG4gICAgICA8aSBjbGFzcz1cImZhIHt7YnRuLmljb259fSBidG4tYWNjaW9uXCIgW25nU3R5bGVdPVwieydmb250LXNpemUnOiBmb250U2l6ZSA/IGZvbnRTaXplIDogJzE3MCUnLCAnbWFyZ2luLXJpZ2h0JzogbWFyZ2luUmlnaHQgPyBtYXJnaW5SaWdodCA6ICcxNXB4J31cIj48L2k+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiJdfQ==
@@ -1628,7 +1628,7 @@ class DataTableComponent {
1628
1628
  }
1629
1629
  validateRolAndPermission() {
1630
1630
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
1631
- if (this.roleId == 0) {
1631
+ if (this.roleId != 0) {
1632
1632
  let rolePermissions = rolesAndPermissions === null || rolesAndPermissions === void 0 ? void 0 : rolesAndPermissions.find(x => x.id == this.roleId);
1633
1633
  this.hasAccessToAll = (_d = (_a = rolePermissions === null || rolePermissions === void 0 ? void 0 : rolePermissions.hasAccessToAll) !== null && _a !== void 0 ? _a : (_c = (_b = rolePermissions.modules) === null || _b === void 0 ? void 0 : _b.find(x => x.id == this.moduleId)) === null || _c === void 0 ? void 0 : _c.hasAccessToAll) !== null && _d !== void 0 ? _d : false;
1634
1634
  }