@pega/angular-sdk-components 0.242.11 → 0.242.13

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.
@@ -810,4 +810,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
810
810
  }], formGroup$: [{
811
811
  type: Input
812
812
  }] } });
813
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLXRhYmxlLW1hbnVhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvdGVtcGxhdGUvc2ltcGxlLXRhYmxlLW1hbnVhbC9zaW1wbGUtdGFibGUtbWFudWFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9zaW1wbGUtdGFibGUtbWFudWFsL3NpbXBsZS10YWJsZS1tYW51YWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFB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LCBJbnB1dCwgVmlld0NoaWxkLCBmb3J3YXJkUmVmLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0RGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IE1hdE9wdGlvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7IE1hdFNvcnQsIE1hdFNvcnRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7IE1hdFRhYmxlRGF0YVNvdXJjZSwgTWF0VGFibGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQgaXNFcXVhbCBmcm9tICdmYXN0LWRlZXAtZXF1YWwnO1xuXG5pbXBvcnQgeyBDb21wb25lbnRNYXBwZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9fYnJpZGdlL2NvbXBvbmVudC1tYXBwZXIvY29tcG9uZW50LW1hcHBlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQW5ndWxhclBDb25uZWN0RGF0YSwgQW5ndWxhclBDb25uZWN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19icmlkZ2UvYW5ndWxhci1wY29ubmVjdCc7XG5pbXBvcnQgeyBEYXRhcGFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fc2VydmljZXMvZGF0YXBhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBnZXRSZWZlcmVuY2VMaXN0IH0gZnJvbSAnLi4vLi4vLi4vX2hlbHBlcnMvZmllbGQtZ3JvdXAtdXRpbHMnO1xuaW1wb3J0IHsgYnVpbGRGaWVsZHNGb3JUYWJsZSwgZmlsdGVyRGF0YUJ5Q29tbW9uRmllbGRzLCBmaWx0ZXJEYXRhQnlEYXRlLCBnZXRDb250ZXh0IH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IGV2YWx1YXRlQWxsb3dSb3dBY3Rpb24gfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uLy4uL19oZWxwZXJzL3V0aWxzJztcbmltcG9ydCB7IGdldFNlY29uZHMgfSBmcm9tICcuLi8uLi8uLi9faGVscGVycy9jb21tb24nO1xuXG5kZWNsYXJlIGNvbnN0IHdpbmRvdzogYW55O1xuXG5pbnRlcmZhY2UgU2ltcGxlVGFibGVNYW51YWxQcm9wcyB7XG4gIC8vIElmIGFueSwgZW50ZXIgYWRkaXRpb25hbCBwcm9wcyB0aGF0IG9ubHkgZXhpc3Qgb24gdGhpcyBjb21wb25lbnRcbiAgdmlzaWJpbGl0eT86IGJvb2xlYW47XG4gIGdyb3VwaW5nPzogYW55O1xuICByZWZlcmVuY2VMaXN0PzogYW55W107XG4gIGNoaWxkcmVuPzogYW55W107XG4gIHJlbmRlck1vZGU/OiBzdHJpbmc7XG4gIHByZXNldHM/OiBhbnlbXTtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIHNob3dMYWJlbD86IGJvb2xlYW47XG4gIGRhdGFQYWdlTmFtZT86IHN0cmluZztcbiAgY29udGV4dENsYXNzPzogc3RyaW5nO1xuICBwcm9wZXJ0eUxhYmVsPzogc3RyaW5nO1xuICBmaWVsZE1ldGFkYXRhPzogYW55O1xuICBhbGxvd0FjdGlvbnM/OiBhbnk7XG4gIGFsbG93VGFibGVFZGl0PzogYm9vbGVhbjtcbiAgYWxsb3dSb3dEZWxldGU/OiBhbnk7XG4gIGVkaXRNb2RlPzogc3RyaW5nO1xuICBhZGRBbmRFZGl0Um93c1dpdGhpbj86IGFueTtcbiAgdmlld0ZvckFkZEFuZEVkaXRNb2RhbD86IGFueTtcbiAgZWRpdE1vZGVDb25maWc/OiBhbnk7XG4gIGRpc3BsYXlNb2RlPzogc3RyaW5nO1xuICB1c2VTZXBhcmF0ZVZpZXdGb3JFZGl0OiBhbnk7XG4gIHZpZXdGb3JFZGl0TW9kYWw6IGFueTtcbiAgdGFyZ2V0Q2xhc3NMYWJlbDogc3RyaW5nO1xufVxuXG5jbGFzcyBHcm91cCB7XG4gIGxldmVsID0gMDtcbiAgcGFyZW50OiBHcm91cDtcbiAgZXhwYW5kZWQgPSB0cnVlO1xuICB0b3RhbENvdW50cyA9IDA7XG4gIGdldCB2aXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5wYXJlbnQgfHwgKHRoaXMucGFyZW50LnZpc2libGUgJiYgdGhpcy5wYXJlbnQuZXhwYW5kZWQpO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1zaW1wbGUtdGFibGUtbWFudWFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpbXBsZS10YWJsZS1tYW51YWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zaW1wbGUtdGFibGUtbWFudWFsLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0VGFibGVNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdFNvcnRNb2R1bGUsXG4gICAgTWF0TWVudU1vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0RGF0ZXBpY2tlck1vZHVsZSxcbiAgICBNYXRPcHRpb25Nb2R1bGUsXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIGZvcndhcmRSZWYoKCkgPT4gQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50KVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFNpbXBsZVRhYmxlTWFudWFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKE1hdFNvcnQpIHNvcnQ6IE1hdFNvcnQ7XG5cbiAgQElucHV0KCkgcENvbm4kOiB0eXBlb2YgUENvbm5lY3Q7XG4gIEBJbnB1dCgpIGZvcm1Hcm91cCQ6IEZvcm1Hcm91cDtcblxuICAvLyBVc2VkIHdpdGggQW5ndWxhclBDb25uZWN0XG4gIGFuZ3VsYXJQQ29ubmVjdERhdGE6IEFuZ3VsYXJQQ29ubmVjdERhdGEgPSB7fTtcbiAgY29uZmlnUHJvcHMkOiBTaW1wbGVUYWJsZU1hbnVhbFByb3BzO1xuICBmaWVsZHMkOiBhbnlbXTtcblxuICBiVmlzaWJsZSQgPSB0cnVlO1xuICBkaXNwbGF5ZWRDb2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xuICByb3dEYXRhOiBNYXRUYWJsZURhdGFTb3VyY2U8YW55PjtcbiAgb3JpZ2luYWxEYXRhOiBhbnlbXSA9IFtdO1xuICBwcm9jZXNzZWRGaWVsZHM6IGFueVtdID0gW107XG4gIGZpZWxkRGVmczogYW55W10gPSBbXTtcbiAgcmVxdWVzdGVkUmVhZE9ubHlNb2RlID0gZmFsc2U7XG4gIHJlYWRPbmx5TW9kZSA9IGZhbHNlO1xuICBlZGl0YWJsZU1vZGU6IGJvb2xlYW47XG4gIG1lbnVJY29uT3ZlcnJpZGUkOiBzdHJpbmc7XG4gIHBhZ2VSZWZlcmVuY2U6IHN0cmluZztcbiAgcmVmZXJlbmNlTGlzdDogYW55O1xuICBjb250ZXh0Q2xhc3M6IGFueTtcbiAgc2hvd0FkZFJvd0J1dHRvbjogYm9vbGVhbjtcbiAgcHJldlJlZmVyZW5jZUxpc3Q6IGFueVtdID0gW107XG4gIGVsZW1lbnRzRGF0YTogTWF0VGFibGVEYXRhU291cmNlPGFueT47XG4gIG9yaWdpbmFsRWxlbWVudHNEYXRhOiBNYXRUYWJsZURhdGFTb3VyY2U8YW55PjtcbiAgcmF3RmllbGRzOiBhbnk7XG4gIGxhYmVsPzogc3RyaW5nID0gJyc7XG4gIHNlYXJjaEljb24kOiBzdHJpbmc7XG5cbiAgYlNob3dTZWFyY2gkID0gZmFsc2U7XG4gIGJDb2x1bW5SZW9yZGVyJCA9IGZhbHNlO1xuICBiR3JvdXBpbmckID0gZmFsc2U7XG5cbiAgcGVyZkZpbHRlcjogc3RyaW5nO1xuICBzZWFyY2hGaWx0ZXI6IHN0cmluZztcblxuICBtZW51U3ZnSWNvbiQ6IHN0cmluZztcbiAgYXJyb3dTdmdJY29uJCA9ICcnO1xuICBhcnJvd0Rvd25TdmdJY29uJDogc3RyaW5nO1xuICBhcnJvd1VwU3ZnSWNvbiQ6IHN0cmluZztcblxuICBmaWx0ZXJTdmdJY29uJDogc3RyaW5nO1xuICBmaWx0ZXJPblN2Z0ljb24kOiBzdHJpbmc7XG4gIGdyb3VwQnlTdmdJY29uJDogc3RyaW5nO1xuXG4gIGdyb3VwQnlDb2x1bW5zJDogc3RyaW5nW10gPSBbXTtcbiAgY29tcGFyZVR5cGU6IHN0cmluZztcbiAgY29tcGFyZVJlZjogc3RyaW5nO1xuICBhcnJvd0RpcmVjdGlvbiA9ICdkb3duJztcbiAgZmlsdGVyQnlDb2x1bW5zOiBhbnlbXSA9IFtdO1xuICBjdXJyZW50RmlsdGVyUmVmRGF0YTogYW55O1xuICBmaWx0ZXJDb250YWluc0xhYmVsJCA9ICcnO1xuICBmaWx0ZXJDb250YWluc1R5cGUkID0gJ2NvbnRhaW5zJztcbiAgZmlsdGVyQ29udGFpbnNWYWx1ZSQ6IGFueTtcbiAgYlNob3dGaWx0ZXJQb3BvdmVyJCA9IGZhbHNlO1xuICBiQ29udGFpbnMkID0gdHJ1ZTtcbiAgYkRhdGVUaW1lJCA9IGZhbHNlO1xuXG4gIGJJc0RhdGUkID0gZmFsc2U7XG4gIGJJc0RhdGVUaW1lJCA9IGZhbHNlO1xuICBiSXNUaW1lJCA9IGZhbHNlO1xuICBjdXJyZW50RmlsdGVySW1hZ2VFbDogYW55O1xuXG4gIGFyRmlsdGVyTWFpbkJ1dHRvbnMkOiBhbnlbXSA9IFtdO1xuICBhckZpbHRlclNlY29uZGFyeUJ1dHRvbnMkOiBhbnlbXSA9IFtdO1xuICBzZWxlY3Rpb25Nb2RlOiBzdHJpbmc7XG4gIHNpbmdsZVNlbGVjdGlvbk1vZGU6IGJvb2xlYW47XG4gIG11bHRpU2VsZWN0aW9uTW9kZTogYm9vbGVhbjtcbiAgcm93SUQ6IGFueTtcbiAgcmVzcG9uc2U6IGFueTtcbiAgY29tcG9zaXRlS2V5czogYW55O1xuICBwYXJhbWV0ZXJzOiBhbnk7XG4gIGFsbG93RWRpdGluZ0luTW9kYWwgPSBmYWxzZTtcbiAgZGVmYXVsdFZpZXc6IGFueTtcbiAgcmVmZXJlbmNlTGlzdFN0cjogYW55O1xuICBiVXNlU2VwYXJhdGVWaWV3Rm9yRWRpdDogYW55O1xuICBlZGl0VmlldzogYW55O1xuICBzZXR0aW5nc1N2Z0ljb24kOiBzdHJpbmc7XG5cbiAgaXNJbml0aWFsaXplZCA9IGZhbHNlO1xuICB0YXJnZXRDbGFzc0xhYmVsOiBzdHJpbmc7XG4gIGxvY2FsaXplZFZhbCA9IFBDb3JlLmdldExvY2FsZVV0aWxzKCkuZ2V0TG9jYWxlVmFsdWU7XG4gIGxvY2FsZUNhdGVnb3J5ID0gJ1NpbXBsZVRhYmxlJztcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhbmd1bGFyUENvbm5lY3Q6IEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UsXG4gICAgcHVibGljIHV0aWxzOiBVdGlscyxcbiAgICBwcml2YXRlIGRhdGFQYWdlU2VydmljZTogRGF0YXBhZ2VTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmVsZW1lbnRzRGF0YSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2U8YW55PihbXSk7XG4gICAgdGhpcy5pc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAvLyBGaXJzdCB0aGluZyBpbiBpbml0aWFsaXphdGlvbiBpcyByZWdpc3RlcmluZyBhbmQgc3Vic2NyaWJpbmcgdG8gdGhlIEFuZ3VsYXJQQ29ubmVjdCBzZXJ2aWNlXG4gICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhID0gdGhpcy5hbmd1bGFyUENvbm5lY3QucmVnaXN0ZXJBbmRTdWJzY3JpYmVDb21wb25lbnQodGhpcywgdGhpcy5vblN0YXRlQ2hhbmdlKTtcbiAgICB0aGlzLmNvbmZpZ1Byb3BzJCA9IHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCkgYXMgU2ltcGxlVGFibGVNYW51YWxQcm9wcztcbiAgICAvLyBUaGVuLCBjb250aW51ZSBvbiB3aXRoIG90aGVyIGluaXRpYWxpemF0aW9uXG4gICAgdGhpcy5tZW51SWNvbk92ZXJyaWRlJCA9IHRoaXMudXRpbHMuZ2V0SW1hZ2VTcmMoJ3RyYXNoJywgdGhpcy51dGlscy5nZXRTREtTdGF0aWNDb250ZW50VXJsKCkpO1xuICAgIC8vIGNhbGwgY2hlY2tBbmRVcGRhdGUgd2hlbiBpbml0aWFsaXppbmdcbiAgICB0aGlzLmNoZWNrQW5kVXBkYXRlKCk7XG4gICAgdGhpcy5maWx0ZXJTdmdJY29uJCA9IHRoaXMudXRpbHMuZ2V0SW1hZ2VTcmMoJ2ZpbHRlcicsIHRoaXMudXRpbHMuZ2V0U0RLU3RhdGljQ29udGVudFVybCgpKTtcbiAgICB0aGlzLmZpbHRlck9uU3ZnSWNvbiQgPSB0aGlzLnV0aWxzLmdldEltYWdlU3JjKCdmaWx0ZXItb24nLCB0aGlzLnV0aWxzLmdldFNES1N0YXRpY0NvbnRlbnRVcmwoKSk7XG4gICAgdGhpcy5ncm91cEJ5U3ZnSWNvbiQgPSB0aGlzLnV0aWxzLmdldEltYWdlU3JjKCdyb3cnLCB0aGlzLnV0aWxzLmdldFNES1N0YXRpY0NvbnRlbnRVcmwoKSk7XG4gICAgdGhpcy5iR3JvdXBpbmckID0gdGhpcy51dGlscy5nZXRCb29sZWFuVmFsdWUodGhpcy5jb25maWdQcm9wcyQuZ3JvdXBpbmcpO1xuICAgIHRoaXMubWVudVN2Z0ljb24kID0gdGhpcy51dGlscy5nZXRJbWFnZVNyYygnbW9yZScsIHRoaXMudXRpbHMuZ2V0U0RLU3RhdGljQ29udGVudFVybCgpKTtcblxuICAgIHRoaXMuYXJGaWx0ZXJNYWluQnV0dG9ucyQucHVzaCh7IGFjdGlvbklEOiAnc3VibWl0JywganNBY3Rpb246ICdzdWJtaXQnLCBuYW1lOiAnU3VibWl0JyB9KTtcbiAgICB0aGlzLmFyRmlsdGVyU2Vjb25kYXJ5QnV0dG9ucyQucHVzaCh7IGFjdGlvbklEOiAnY2FuY2VsJywganNBY3Rpb246ICdjYW5jZWwnLCBuYW1lOiAnQ2FuY2VsJyB9KTtcblxuICAgIHRoaXMuc2VhcmNoSWNvbiQgPSB0aGlzLnV0aWxzLmdldEltYWdlU3JjKCdzZWFyY2gnLCB0aGlzLnV0aWxzLmdldFNES1N0YXRpY0NvbnRlbnRVcmwoKSk7XG5cbiAgICB0aGlzLnNldHRpbmdzU3ZnSWNvbiQgPSB0aGlzLnV0aWxzLmdldEltYWdlU3JjKCdtb3JlJywgdGhpcy51dGlscy5nZXRTREtTdGF0aWNDb250ZW50VXJsKCkpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKSB7XG4gICAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbigpO1xuICAgIH1cbiAgfVxuXG4gIGNoZWNrQW5kVXBkYXRlKCkge1xuICAgIC8vIFNob3VsZCBhbHdheXMgY2hlY2sgdGhlIGJyaWRnZSB0byBzZWUgaWYgdGhlIGNvbXBvbmVudCBzaG91bGRcbiAgICAvLyB1cGRhdGUgaXRzZWxmIChyZS1yZW5kZXIpXG4gICAgY29uc3QgYlVwZGF0ZVNlbGYgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5zaG91bGRDb21wb25lbnRVcGRhdGUodGhpcyk7XG5cbiAgICAvLyBPTkxZIGNhbGwgdXBkYXRlU2VsZiB3aGVuIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZVxuICAgIGlmIChiVXBkYXRlU2VsZikge1xuICAgICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gdXBkYXRlU2VsZlxuICB1cGRhdGVTZWxmKCk6IHZvaWQge1xuICAgIC8vIG1vdmVkIHRoaXMgZnJvbSBuZ09uSW5pdCgpIGFuZCBjYWxsIHRoaXMgZnJvbSB0aGVyZSBpbnN0ZWFkLi4uXG4gICAgdGhpcy5jb25maWdQcm9wcyQgPSB0aGlzLnBDb25uJC5yZXNvbHZlQ29uZmlnUHJvcHModGhpcy5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKSkgYXMgU2ltcGxlVGFibGVNYW51YWxQcm9wcztcblxuICAgIGlmICh0aGlzLmNvbmZpZ1Byb3BzJC52aXNpYmlsaXR5ICE9IG51bGwpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tdWx0aS1hc3NpZ25cbiAgICAgIHRoaXMuYlZpc2libGUkID0gdGhpcy5iVmlzaWJsZSQgPSB0aGlzLnV0aWxzLmdldEJvb2xlYW5WYWx1ZSh0aGlzLmNvbmZpZ1Byb3BzJC52aXNpYmlsaXR5KTtcbiAgICB9XG5cbiAgICAvLyBOT1RFOiBnZXRDb25maWdQcm9wcygpIGhhcyBlYWNoIGNoaWxkLmNvbmZpZyB3aXRoIGRhdGFzb3VyY2UgYW5kIHZhbHVlIHVuZGVmaW5lZFxuICAgIC8vICBidXQgZ2V0UmF3TWV0YWRhdGEoKSBoYXMgZWFjaCBjaGlsZC5jb25maWcgd2l0aCBkYXRhc291cmNlIGFuZCB2YWx1ZSBzaG93aW5nIHRoZWlyIHVucmVzb2x2ZWQgdmFsdWVzIChleDogXCJAUCB0aGVQcm9wTmFtZVwiKVxuICAgIC8vICBXZSBuZWVkIHRvIHVzZSB0aGUgcHJvcCBuYW1lIGFzIHRoZSBcImdsdWVcIiB0byB0aWUgdGhlIEFuZ3VsYXIgTWF0ZXJpYWwgdGFibGUgZGF0YVNvdXJjZSwgZGlzcGxheUNvbHVtbnMgYW5kIGRhdGEgdG9nZXRoZXIuXG4gICAgLy8gIFNvLCBpbiB0aGUgY29kZSBiZWxvdywgd2UnbGwgdXNlIHRoZSB1bnJlc29sdmVkIGNvbmZpZy52YWx1ZSAoYnV0IHJlcGxhY2luZyB0aGUgc3BhY2Ugd2l0aCBhbiB1bmRlcnNjb3JlIHRvIGtlZXAgdGhpbmdzIGhhcHB5KVxuICAgIGNvbnN0IHJhd01ldGFkYXRhID0gdGhpcy5wQ29ubiQuZ2V0UmF3TWV0YWRhdGEoKTtcblxuICAgIC8vIEFkYXB0ZWQgZnJvbSBOZWJ1bGFcbiAgICBjb25zdCB7XG4gICAgICByZWZlcmVuY2VMaXN0ID0gW10sIC8vIGlmIHJlZmVyZW5jZUxpc3Qgbm90IGluIGNvbmZpZ1Byb3BzJCwgZGVmYXVsdCB0byBlbXB5IGxpc3RcbiAgICAgIHJlbmRlck1vZGUsXG4gICAgICBjaGlsZHJlbiwgLy8gZGVzdHJ1Y3R1cmUgY2hpbGRyZW4gaW50byBhbiBhcnJheSB2YXI6IFwicmVzb2x2ZWRGaWVsZHNcIlxuICAgICAgcHJlc2V0cyxcbiAgICAgIGFsbG93QWN0aW9ucyxcbiAgICAgIGFsbG93VGFibGVFZGl0LFxuICAgICAgYWxsb3dSb3dEZWxldGUsXG4gICAgICBsYWJlbDogbGFiZWxQcm9wLFxuICAgICAgcHJvcGVydHlMYWJlbCxcbiAgICAgIGZpZWxkTWV0YWRhdGEsXG4gICAgICBlZGl0TW9kZSxcbiAgICAgIGFkZEFuZEVkaXRSb3dzV2l0aGluLFxuICAgICAgdmlld0ZvckFkZEFuZEVkaXRNb2RhbCxcbiAgICAgIGVkaXRNb2RlQ29uZmlnLFxuICAgICAgZGlzcGxheU1vZGUsXG4gICAgICB1c2VTZXBhcmF0ZVZpZXdGb3JFZGl0LFxuICAgICAgdmlld0ZvckVkaXRNb2RhbCxcbiAgICAgIHRhcmdldENsYXNzTGFiZWxcbiAgICB9ID0gdGhpcy5jb25maWdQcm9wcyQ7XG5cbiAgICBjb25zdCBzaW1wbGVUYWJsZU1hbnVhbFByb3BzOiBhbnkgPSB7fTtcbiAgICBpZiAodGhpcy5jaGVja0lmQWxsb3dBY3Rpb25zT3JSb3dFZGl0aW5nRXhpc3QoYWxsb3dBY3Rpb25zKSAmJiBlZGl0TW9kZSkge1xuICAgICAgc2ltcGxlVGFibGVNYW51YWxQcm9wcy5oaWRlQWRkUm93ID0gYWxsb3dBY3Rpb25zPy5hbGxvd0FkZCA9PT0gZmFsc2U7XG4gICAgICBzaW1wbGVUYWJsZU1hbnVhbFByb3BzLmhpZGVEZWxldGVSb3cgPSBhbGxvd0FjdGlvbnM/LmFsbG93RGVsZXRlID09PSBmYWxzZTtcbiAgICAgIHNpbXBsZVRhYmxlTWFudWFsUHJvcHMuaGlkZUVkaXRSb3cgPSBhbGxvd0FjdGlvbnM/LmFsbG93RWRpdCA9PT0gZmFsc2U7XG4gICAgICBzaW1wbGVUYWJsZU1hbnVhbFByb3BzLmRpc2FibGVEcmFnRHJvcCA9IGFsbG93QWN0aW9ucz8uYWxsb3dEcmFnRHJvcCA9PT0gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChhbGxvd1RhYmxlRWRpdCA9PT0gZmFsc2UpIHtcbiAgICAgIHNpbXBsZVRhYmxlTWFudWFsUHJvcHMuaGlkZUFkZFJvdyA9IHRydWU7XG4gICAgICBzaW1wbGVUYWJsZU1hbnVhbFByb3BzLmhpZGVEZWxldGVSb3cgPSB0cnVlO1xuICAgICAgc2ltcGxlVGFibGVNYW51YWxQcm9wcy5kaXNhYmxlRHJhZ0Ryb3AgPSB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMucmVmZXJlbmNlTGlzdFN0ciA9IGdldENvbnRleHQodGhpcy5wQ29ubiQpLnJlZmVyZW5jZUxpc3RTdHI7XG4gICAgdGhpcy5sYWJlbCA9IGxhYmVsUHJvcCB8fCBwcm9wZXJ0eUxhYmVsO1xuICAgIHRoaXMucGFyYW1ldGVycyA9IGZpZWxkTWV0YWRhdGE/LmRhdGFzb3VyY2U/LnBhcmFtZXRlcnM7XG4gICAgdGhpcy50YXJnZXRDbGFzc0xhYmVsID0gdGFyZ2V0Q2xhc3NMYWJlbDtcbiAgICBsZXQgeyBjb250ZXh0Q2xhc3MgfSA9IHRoaXMuY29uZmlnUHJvcHMkO1xuICAgIHRoaXMucmVmZXJlbmNlTGlzdCA9IHJlZmVyZW5jZUxpc3Q7XG4gICAgaWYgKCFjb250ZXh0Q2xhc3MpIHtcbiAgICAgIGxldCBsaXN0TmFtZSA9IHRoaXMucENvbm4kLmdldENvbXBvbmVudENvbmZpZygpLnJlZmVyZW5jZUxpc3Q7XG4gICAgICBsaXN0TmFtZSA9IFBDb3JlLmdldEFubm90YXRpb25VdGlscygpLmdldFByb3BlcnR5TmFtZShsaXN0TmFtZSk7XG4gICAgICBjb250ZXh0Q2xhc3MgPSB0aGlzLnBDb25uJC5nZXRGaWVsZE1ldGFkYXRhKGxpc3ROYW1lKT8ucGFnZUNsYXNzO1xuICAgIH1cbiAgICB0aGlzLmNvbnRleHRDbGFzcyA9IGNvbnRleHRDbGFzcztcblxuICAgIGNvbnN0IHJlc29sdmVkRmllbGRzID0gY2hpbGRyZW4/LlswXT8uY2hpbGRyZW4gfHwgcHJlc2V0cz8uWzBdLmNoaWxkcmVuPy5bMF0uY2hpbGRyZW47XG4gICAgLy8gZ2V0IHJhdyBjb25maWcgYXMgQFAgYW5kIG90aGVyIGFubm90YXRpb25zIGFyZSBwcm9jZXNzZWQgYW5kIGRvbid0IGFwcGVhciBpbiB0aGUgcmVzb2x2ZWQgY29uZmlnLlxuICAgIC8vICBEZXN0cnVjdHVyZSBcInJhd1wiIGNoaWxkcmVuIGludG8gYXJyYXkgdmFyOiBcInJhd0ZpZWxkc1wiXG4gICAgLy8gIE5PVEU6IHdoZW4gY29uZmlnLmxpc3RUeXBlID09IFwiYXNzb2NpYXRlZFwiLCB0aGUgcHJvcGVydHkgY2FuIGJlIGZvdW5kIGluIGVpdGhlclxuICAgIC8vICAgIGNvbmZpZy52YWx1ZSAoZXg6IFwiQFAgLkRlY2xhcmFudENob2ljZVwiKSBvclxuICAgIC8vICAgIGNvbmZpZy5kYXRhc291cmNlIChleDogXCJAQVNTT0NJQVRFRCAuRGVjbGFyYW50Q2hvaWNlXCIpXG4gICAgLy8gIE5laXRoZXIgb2YgdGhlc2UgYXBwZWFyIGluIHRoZSByZXNvbHZlZCAodGhpcy5jb25maWdQcm9wcyQpXG4gICAgY29uc3QgcmF3Q29uZmlnOiBhbnkgPSByYXdNZXRhZGF0YT8uY29uZmlnO1xuICAgIGNvbnN0IHJhd0ZpZWxkcyA9IHJhd0NvbmZpZz8uY2hpbGRyZW4/LlswXT8uY2hpbGRyZW4gfHwgcmF3Q29uZmlnPy5wcmVzZXRzPy5bMF0uY2hpbGRyZW4/LlswXT8uY2hpbGRyZW47XG4gICAgdGhpcy5yYXdGaWVsZHMgPSByYXdGaWVsZHM7XG4gICAgLy8gQXQgdGhpcyBwb2ludCwgZmllbGRzIGhhcyByZXNvbHZlZEZpZWxkcyBhbmQgcmF3RmllbGRzIHdlIGNhbiB1c2VcblxuICAgIC8vIHN0YXJ0IG9mIGZyb20gTmVidWxhXG4gICAgLy8gZ2V0IGNvbnRleHQgbmFtZSBhbmQgcmVmZXJlbmNlTGlzdCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gcHJlcGFyZSBjb25maWcgb2YgUENvbm5lY3RcbiAgICAvLyBjb25zdCB7IGNvbnRleHROYW1lLCByZWZlcmVuY2VMaXN0U3RyLCBwYWdlUmVmZXJlbmNlRm9yUm93cyB9ID0gZ2V0Q29udGV4dCh0aGlzLnBDb25uJCk7XG5cbiAgICBjb25zdCByZXNvbHZlZExpc3QgPSBnZXRSZWZlcmVuY2VMaXN0KHRoaXMucENvbm4kKTtcbiAgICB0aGlzLnBhZ2VSZWZlcmVuY2UgPSBgJHt0aGlzLnBDb25uJC5nZXRQYWdlUmVmZXJlbmNlKCl9JHtyZXNvbHZlZExpc3R9YDtcbiAgICB0aGlzLnBDb25uJC5zZXRSZWZlcmVuY2VMaXN0KHJlc29sdmVkTGlzdCk7XG5cbiAgICAvLyBUaGlzIGdpdmVzIHVwIHRoZSBcInByb3BlcnRpZXNcIiB3ZSBuZWVkIHRvIG1hcCB0byByb3cvY29sdW1uIHZhbHVlcyBsYXRlclxuICAgIC8vIGNvbnN0IHByb2Nlc3NlZERhdGEgPSBwb3B1bGF0ZVJvd0tleShyZWZlcmVuY2VMaXN0KTtcblxuICAgIHRoaXMucmVxdWVzdGVkUmVhZE9ubHlNb2RlID0gcmVuZGVyTW9kZSA9PT0gJ1JlYWRPbmx5JztcbiAgICB0aGlzLnJlYWRPbmx5TW9kZSA9IHJlbmRlck1vZGUgPT09ICdSZWFkT25seSc7XG4gICAgdGhpcy5lZGl0YWJsZU1vZGUgPSByZW5kZXJNb2RlID09PSAnRWRpdGFibGUnO1xuICAgIGNvbnN0IGlzRGlzcGxheU1vZGVFbmFibGVkID0gZGlzcGxheU1vZGUgPT09ICdESVNQTEFZX09OTFknO1xuICAgIHRoaXMuc2hvd0FkZFJvd0J1dHRvbiA9ICF0aGlzLnJlYWRPbmx5TW9kZSAmJiAhc2ltcGxlVGFibGVNYW51YWxQcm9wcy5oaWRlQWRkUm93O1xuICAgIHRoaXMuYWxsb3dFZGl0aW5nSW5Nb2RhbCA9XG4gICAgICAoZWRpdE1vZGUgPyBlZGl0TW9kZSA9PT0gJ21vZGFsJyA6IGFkZEFuZEVkaXRSb3dzV2l0aGluID09PSAnbW9kYWwnKSAmJiAhKHJlbmRlck1vZGUgPT09ICdSZWFkT25seScgfHwgaXNEaXNwbGF5TW9kZUVuYWJsZWQpO1xuICAgIGNvbnN0IHNob3dEZWxldGVCdXR0b24gPSB0aGlzLmVkaXRhYmxlTW9kZSAmJiAhc2ltcGxlVGFibGVNYW51YWxQcm9wcy5oaWRlRGVsZXRlUm93ICYmIGV2YWx1YXRlQWxsb3dSb3dBY3Rpb24oYWxsb3dSb3dEZWxldGUsIHRoaXMucm93RGF0YSk7XG4gICAgdGhpcy5kZWZhdWx0VmlldyA9IGVkaXRNb2RlQ29uZmlnID8gZWRpdE1vZGVDb25maWcuZGVmYXVsdFZpZXcgOiB2aWV3Rm9yQWRkQW5kRWRpdE1vZGFsO1xuICAgIHRoaXMuYlVzZVNlcGFyYXRlVmlld0ZvckVkaXQgPSBlZGl0TW9kZUNvbmZpZyA/IGVkaXRNb2RlQ29uZmlnLnVzZVNlcGFyYXRlVmlld0ZvckVkaXQgOiB1c2VTZXBhcmF0ZVZpZXdGb3JFZGl0O1xuICAgIHRoaXMuZWRpdFZpZXcgPSBlZGl0TW9kZUNvbmZpZyA/IGVkaXRNb2RlQ29uZmlnLmVkaXRWaWV3IDogdmlld0ZvckVkaXRNb2RhbDtcbiAgICAvLyBjb25zdCBzaG93RGVsZXRlQnV0dG9uID0gIXRoaXMucmVhZE9ubHlNb2RlICYmICFoaWRlRGVsZXRlUm93O1xuXG4gICAgLy8gTmVidWxhIGhhcyBvdGhlciBoYW5kbGluZyBmb3IgaXNSZWFkT25seU1vZGUgYnV0IGhhcyBDb3Ntb3Mtc3BlY2lmaWMgY29kZVxuICAgIC8vICBzbyBpZ25vcmluZyB0aGF0IGZvciBub3cuLi5cbiAgICAvLyBmaWVsZERlZnMgd2lsbCBiZSBhbiBhcnJheSB3aGVyZSBlYWNoIGVudHJ5IHdpbGwgaGF2ZSBhIFwibmFtZVwiIHdoaWNoIHdpbGwgYmUgdGhlXG4gICAgLy8gIFwicmVzb2x2ZWRcIiBwcm9wZXJ0eSBuYW1lICh0aGF0IHdlIGNhbiB1c2UgYXMgdGhlIGNvbElkKSB0aG91Z2ggaXQncyBub3QgcmVhbGx5XG4gICAgLy8gIHJlc29sdmVkLiBUaGUgYnVpbGRGaWVsZHNGb3JUYWJsZSBoZWxwZXIganVzdCByZW1vdmVzIHRoZSBcIkBQIFwiICh3aGljaCBpcyB3aGF0XG4gICAgLy8gIE5lYnVsYSBkb2VzKS4gSXQgd2lsbCBhbHNvIGhhdmUgdGhlIFwibGFiZWxcIiwgYW5kIFwibWV0YVwiIGNvbnRhaW5zIHRoZSBvcmlnaW5hbCxcbiAgICAvLyAgdW5jaGFuZ2VkIGNvbmZpZyBpbmZvLiBGb3Igbm93LCBtdWNoIG9mIHRoZSBpbmZvIGhlcmUgaXMgY2FycmllZCBvdmVyIGZyb21cbiAgICAvLyAgTmVidWxhIGFuZCB3ZSBtYXkgbm90IGVuZCB1cCB1c2luZyBpdCBhbGwuXG4gICAgdGhpcy5maWVsZERlZnMgPSBidWlsZEZpZWxkc0ZvclRhYmxlKHJhd0ZpZWxkcywgcmVzb2x2ZWRGaWVsZHMsIHNob3dEZWxldGVCdXR0b24pO1xuXG4gICAgdGhpcy5pbml0aWFsaXplRGVmYXVsdFBhZ2VJbnN0cnVjdGlvbnMoKTtcblxuICAgIC8vIGVuZCBvZiBmcm9tIE5lYnVsYVxuXG4gICAgLy8gSGVyZSwgd2UgdXNlIHRoZSBcIm5hbWVcIiBmaWVsZCBpbiBmaWVsZERlZnMgc2luY2UgdGhhdCBoYXMgdGhlIGFzc29pY2F0ZWQgcHJvcGVydHlcbiAgICAvLyAgKGlmIG9uZSBleGlzdHMgZm9yIHRoZSBmaWVsZCkuIElmIG5vIFwibmFtZVwiLCB1c2UgXCJjZWxsUmVuZGVyZXJcIiAodHlwaWNhbGx5IGdldCBERUxFVEVfSUNPTilcbiAgICAvLyAgZm9yIG91ciBjb2x1bW5zLlxuICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IHRoaXMuZmllbGREZWZzPy5tYXAoZmllbGQgPT4ge1xuICAgICAgcmV0dXJuIGZpZWxkLm5hbWUgPyBmaWVsZC5uYW1lIDogZmllbGQuY2VsbFJlbmRlcmVyO1xuICAgIH0pO1xuXG4gICAgLy8gQW5kIG5vdyB3ZSBjYW4gcHJvY2VzcyB0aGUgcmVzb2x2ZWRGaWVsZHMgdG8gYWRkIGluIHRoZSBcIm5hbWVcIlxuICAgIC8vICBmcm9tIGZyb20gdGhlIGZpZWxkRGVmcy4gVGhpcyBcIm5hbWVcIiBpcyB0aGUgdmFsdWUgdGhhdFxuICAgIC8vICB3ZSdsbCBzaGFyZSB0byBjb25uZWN0IHRoaW5ncyB0b2dldGhlciBpbiB0aGUgdGFibGUuXG5cbiAgICB0aGlzLnByb2Nlc3NlZEZpZWxkcyA9IFtdO1xuXG4gICAgdGhpcy5wcm9jZXNzZWRGaWVsZHMgPSByZXNvbHZlZEZpZWxkcy5tYXAoKGZpZWxkLCBpKSA9PiB7XG4gICAgICBmaWVsZC5jb25maWcubmFtZSA9IHRoaXMuZGlzcGxheWVkQ29sdW1uc1tpXTsgLy8gLmNvbmZpZ1tcInZhbHVlXCJdLnJlcGxhY2UoLyAuL2csXCJfXCIpOyAgIC8vIHJlcGxhY2Ugc3BhY2UgZG90IHdpdGggdW5kZXJzY29yZVxuICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH0pO1xuXG4gICAgLy8gZm9yIGFkZGluZyByb3dzIHRvIHRhYmxlIHdoZW4gZWRpdGFibGUgYW5kIG5vdCBtb2RhbCB2aWV3XG4gICAgaWYgKHRoaXMucHJldlJlZmVyZW5jZUxpc3QubGVuZ3RoICE9PSB0aGlzLnJlZmVyZW5jZUxpc3QubGVuZ3RoKSB7XG4gICAgICB0aGlzLmJ1aWxkRWxlbWVudHNGb3JUYWJsZSgpO1xuICAgIH1cblxuICAgIC8vIGZvciBlZGl0IGFuZCBhZGRpbmcgcm93cyBpbiBtb2RhbCB2aWV3IGFuZCB0byBnZW5lcmF0ZSByZWFkb25seSBsaXN0XG4gICAgaWYgKCFpc0VxdWFsKHRoaXMucHJldlJlZmVyZW5jZUxpc3QsIHRoaXMucmVmZXJlbmNlTGlzdCkgJiYgKHRoaXMucmVhZE9ubHlNb2RlIHx8IHRoaXMuYWxsb3dFZGl0aW5nSW5Nb2RhbCkpIHtcbiAgICAgIHRoaXMuZ2VuZXJhdGVSb3dzRGF0YSgpO1xuICAgIH1cblxuICAgIHRoaXMucHJldlJlZmVyZW5jZUxpc3QgPSB0aGlzLnJlZmVyZW5jZUxpc3Q7XG5cbiAgICAvLyBUaGVzZSBhcmUgdGhlIGRhdGEgc3RydWN0dXJlcyByZWZlcnJlZCB0byBpbiB0aGUgaHRtbCBmaWxlLlxuICAgIC8vICBUaGVzZSBhcmUgdGhlIHJlbGF0aW9uc2hpcHMgdGhhdCBtYWtlIHRoZSB0YWJsZSB3b3JrXG4gICAgLy8gIGRpc3BsYXllZENvbHVtbnM6IGtleS92YWx1ZSBwYWlycyB3aGVyZSBrZXkgaXMgb3JkZXIgb2YgY29sdW1uIGFuZFxuICAgIC8vICAgIHZhbHVlIGlzIHRoZSBwcm9wZXJ0eSBzaG93biBpbiB0aGF0IGNvbHVtbi4gRXg6IDE6IFwiRmlyc3ROYW1lXCJcbiAgICAvLyAgcHJvY2Vzc2VkRmllbGRzOiBrZXkvdmFsdWUgcGFpcnMgd2hlcmUgZWFjaCBrZXkgaXMgb3JkZXIgb2YgY29sdW1uXG4gICAgLy8gICAgYW5kIGVhY2ggdmFsdWUgaXMgYW4gb2JqZWN0IG9mIG1vcmUgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgdGhhdFxuICAgIC8vICAgIGNvbHVtbi5cbiAgICAvLyAgcm93RGF0YTogYXJyYXkgb2YgZWFjaCByb3cncyBrZXkvdmFsdWUgcGFpcnMuIEluc2lkZSBlYWNoIHJvdyxcbiAgICAvLyAgICBlYWNoIGtleSBpcyBhbiBlbnRyeSBpbiBkaXNwbGF5ZWRDb2x1bW5zOiBleDogXCJGaXJzdE5hbWVcIjogXCJDaGFybGVzXCJcbiAgICAvLyAgICBFeDogeyAxOiB7Y29uZmlnOiB7bGFiZWw6IFwiRmlyc3QgTmFtZVwiLCByZWFkT25seTogdHJ1ZTogbmFtZTogXCJGaXJzdE5hbWVcIn19LCB0eXBlOiBcIlRleHRJbnB1dFwiIH1cbiAgICAvLyAgICBUaGUgXCJ0eXBlXCIgaW5kaWNhdGVzIHRoZSB0eXBlIG9mIGNvbXBvbmVudCB0aGF0IHNob3VsZCBiZSB1c2VkIGZvciBlZGl0aW5nICh3aGVuIGVkaXRpbmcgaXMgZW5hYmxlZClcbiAgICAvL1xuICAgIC8vICBOb3RlIHRoYXQgdGhlIFwicHJvcGVydHlcIiBzaG93biBpbiB0aGUgY29sdW1uIChcIkZpcnN0TmFtZVwiIGluIHRoZSBhYm92ZSBleGFtcGxlcykgaXMgd2hhdFxuICAgIC8vICB0aWVzIHRoZSAzIGRhdGEgc3RydWN0dXJlcyB0b2dldGhlci5cbiAgfVxuXG4gIGNoZWNrSWZBbGxvd0FjdGlvbnNPclJvd0VkaXRpbmdFeGlzdChuZXdmbGFnb2JqZWN0KSB7XG4gICAgcmV0dXJuIChuZXdmbGFnb2JqZWN0ICYmIE9iamVjdC5rZXlzKG5ld2ZsYWdvYmplY3QpLmxlbmd0aCA+IDApIHx8IHRoaXMucENvbm4kLmdldENvbXBvbmVudENvbmZpZygpLmFsbG93Um93RWRpdDtcbiAgfVxuXG4gIGluaXRpYWxpemVEZWZhdWx0UGFnZUluc3RydWN0aW9ucygpIHtcbiAgICBpZiAodGhpcy5pc0luaXRpYWxpemVkKSB7XG4gICAgICB0aGlzLmlzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICAgIGlmICh0aGlzLmFsbG93RWRpdGluZ0luTW9kYWwpIHtcbiAgICAgICAgdGhpcy5wQ29ubiQuZ2V0TGlzdEFjdGlvbnMoKS5pbml0RGVmYXVsdFBhZ2VJbnN0cnVjdGlvbnMoXG4gICAgICAgICAgdGhpcy5wQ29ubiQuZ2V0UmVmZXJlbmNlTGlzdCgpLFxuICAgICAgICAgIHRoaXMuZmllbGREZWZzLmZpbHRlcihpdGVtID0+IGl0ZW0ubmFtZSkubWFwKGl0ZW0gPT4gaXRlbS5uYW1lKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZSAtIEFuIGFyZ3VtZW50IGZvciAncHJvcGVydHlOYW1lcycgd2FzIG5vdCBwcm92aWRlZC5cbiAgICAgICAgdGhpcy5wQ29ubiQuZ2V0TGlzdEFjdGlvbnMoKS5pbml0RGVmYXVsdFBhZ2VJbnN0cnVjdGlvbnModGhpcy5wQ29ubiQuZ2V0UmVmZXJlbmNlTGlzdCgpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRSZXN1bHRzVGV4dCgpIHtcbiAgICBjb25zdCByZWNvcmRzQ291bnQgPSB0aGlzLnJlYWRPbmx5TW9kZSA/IHRoaXMucm93RGF0YT8uZGF0YS5sZW5ndGggOiB0aGlzLnJlZmVyZW5jZUxpc3Q/Lmxlbmd0aDtcbiAgICByZXR1cm4gYCR7cmVjb3Jkc0NvdW50IHx8IDB9IHJlc3VsdCR7cmVjb3Jkc0NvdW50ID4gMSA/ICdzJyA6ICcnfWA7XG4gIH1cblxuICBzb3J0Q29tcGFyZShhLCBiKTogbnVtYmVyIHtcbiAgICBsZXQgYVZhbHVlID0gYVswXVt0aGlzLmNvbXBhcmVSZWZdO1xuICAgIGxldCBiVmFsdWUgPSBiWzBdW3RoaXMuY29tcGFyZVJlZl07XG5cbiAgICBpZiAodGhpcy5jb21wYXJlVHlwZSA9PSAnRGF0ZScgfHwgdGhpcy5jb21wYXJlVHlwZSA9PSAnRGF0ZVRpbWUnKSB7XG4gICAgICBhVmFsdWUgPSBnZXRTZWNvbmRzKGFWYWx1ZSk7XG4gICAgICBiVmFsdWUgPSBnZXRTZWNvbmRzKGJWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29tcGFyZVJlZiA9PSAncHhSZWZPYmplY3RJbnNOYW1lJykge1xuICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5jb21wYXJlQnlDb2x1bW5QeFJlZk9iamVjdEluc05hbWUoYVZhbHVlLCBiVmFsdWUpO1xuICAgICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy9cbiAgICBzd2l0Y2ggKHRoaXMuYXJyb3dEaXJlY3Rpb24pIHtcbiAgICAgIGNhc2UgJ3VwJzpcbiAgICAgICAgaWYgKCFhVmFsdWUgfHwgYVZhbHVlIDwgYlZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIGlmICghYlZhbHVlIHx8IGFWYWx1ZSA+IGJWYWx1ZSkge1xuICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZG93bic6XG4gICAgICAgIGlmICghYlZhbHVlIHx8IGFWYWx1ZSA+IGJWYWx1ZSkge1xuICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWFWYWx1ZSB8fCBhVmFsdWUgPCBiVmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiAwO1xuICB9XG5cbiAgY29tcGFyZUJ5Q29sdW1uUHhSZWZPYmplY3RJbnNOYW1lKGFWYWx1ZSwgYlZhbHVlKSB7XG4gICAgY29uc3QgcHJlZml4WCA9IGFWYWx1ZS5zcGxpdCgnLScpO1xuICAgIGNvbnN0IHByZWZpeFkgPSBiVmFsdWUuc3BsaXQoJy0nKTtcbiAgICBzd2l0Y2ggKHRoaXMuYXJyb3dEaXJlY3Rpb24pIHtcbiAgICAgIGNhc2UgJ3VwJzpcbiAgICAgICAgaWYgKHByZWZpeFhbMF0gIT09IHByZWZpeFlbMF0pIHtcbiAgICAgICAgICBpZiAocHJlZml4WFswXSA8IHByZWZpeFlbMF0pIHJldHVybiAtMTtcbiAgICAgICAgICBpZiAocHJlZml4WFswXSA+IHByZWZpeFlbMF0pIHJldHVybiAxO1xuICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwcmVmaXhYWzFdIC0gcHJlZml4WVsxXTtcbiAgICAgIGNhc2UgJ2Rvd24nOlxuICAgICAgICBpZiAocHJlZml4WFswXSAhPT0gcHJlZml4WVswXSkge1xuICAgICAgICAgIGlmIChwcmVmaXhYWzBdID4gcHJlZml4WVswXSkgcmV0dXJuIC0xO1xuICAgICAgICAgIGlmIChwcmVmaXhYWzBdIDwgcHJlZml4WVswXSkgcmV0dXJuIDE7XG4gICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHByZWZpeFlbMV0gLSBwcmVmaXhYWzFdO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHVwZGF0ZUZpbHRlckRpc3BsYXkodHlwZSkge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnRGF0ZSc6XG4gICAgICAgIHRoaXMuZmlsdGVyQ29udGFpbnNUeXBlJCA9ICdub3RlcXVhbCc7XG4gICAgICAgIHRoaXMuYkNvbnRhaW5zJCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmJEYXRlVGltZSQgPSB0cnVlO1xuICAgICAgICB0aGlzLmJJc0RhdGUkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5iSXNEYXRlVGltZSQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5iSXNUaW1lJCA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0RhdGVUaW1lJzpcbiAgICAgICAgdGhpcy5maWx0ZXJDb250YWluc1R5cGUkID0gJ25vdGVxdWFsJztcbiAgICAgICAgdGhpcy5iQ29udGFpbnMkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYkRhdGVUaW1lJCA9IHRydWU7XG4gICAgICAgIHRoaXMuYklzRGF0ZSQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5iSXNEYXRlVGltZSQgPSB0cnVlO1xuICAgICAgICB0aGlzLmJJc1RpbWUkID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnVGltZSc6XG4gICAgICAgIHRoaXMuZmlsdGVyQ29udGFpbnNUeXBlJCA9ICdub3RlcXVhbCc7XG4gICAgICAgIHRoaXMuYkNvbnRhaW5zJCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmJEYXRlVGltZSQgPSB0cnVlO1xuICAgICAgICB0aGlzLmJJc0RhdGUkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYklzRGF0ZVRpbWUkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYklzVGltZSQgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuZmlsdGVyQ29udGFpbnNUeXBlJCA9ICdjb250YWlucyc7XG4gICAgICAgIHRoaXMuYkNvbnRhaW5zJCA9IHRydWU7XG4gICAgICAgIHRoaXMuYkRhdGVUaW1lJCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmJJc0RhdGUkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYklzRGF0ZVRpbWUkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYklzVGltZSQgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgX2ZpbHRlcihldmVudCwgY29sdW1uRGF0YSkge1xuICAgIC8vIGFkZCBjbGlja0F3YXkgbGlzdGVuZXJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMuX2NsaWNrQXdheS5iaW5kKHRoaXMpKTtcblxuICAgIHRoaXMuY3VycmVudEZpbHRlclJlZkRhdGEgPSBjb2x1bW5EYXRhO1xuICAgIHRoaXMuZmlsdGVyQ29udGFpbnNMYWJlbCQgPSBjb2x1bW5EYXRhLmNvbmZpZy5sYWJlbDtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVGaWx0ZXJEaXNwbGF5KGNvbHVtbkRhdGEudHlwZSk7XG5cbiAgICAgIHRoaXMudXBkYXRlRmlsdGVyVmFyc1dpdGhDdXJyZW50KGNvbHVtbkRhdGEpO1xuXG4gICAgICB0aGlzLmJTaG93RmlsdGVyUG9wb3ZlciQgPSB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgX2NsaWNrQXdheShldmVudDogYW55KSB7XG4gICAgbGV0IGJJblBvcFVwID0gZmFsc2U7XG5cbiAgICAvLyBydW4gdGhyb3VnaCBsaXN0IG9mIGVsZW1lbnRzIGluIHBhdGgsIGlmIG1lbnUgbm90IGluIHRoIHBhdGgsIHRoZW4gd2FudCB0b1xuICAgIC8vIGhpZGUgKHRvZ2dsZSkgdGhlIG1lbnVcbiAgICBjb25zdCBldmVudFBhdGggPSBldmVudC5wYXRoO1xuICAgIGlmIChldmVudFBhdGgpIHtcbiAgICAgIGZvciAobGV0IGV2ZW50SW5kZXggPSAwOyBldmVudEluZGV4IDwgZXZlbnRQYXRoLmxlbmd0aDsgZXZlbnRJbmRleCsrKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBldmVudFBhdGhbZXZlbnRJbmRleF0uY2xhc3NOYW1lID09ICdwc2RrLW1vZGFsLWZpbGUtdG9wJyB8fFxuICAgICAgICAgIGV2ZW50UGF0aFtldmVudEluZGV4XS50YWdOYW1lID09ICdCVVRUT04nIHx8XG4gICAgICAgICAgZXZlbnRQYXRoW2V2ZW50SW5kZXhdLnRhZ05hbWUgPT0gJ01BVC1PUFRJT04nIHx8XG4gICAgICAgICAgZXZlbnRQYXRoW2V2ZW50SW5kZXhdLnRhZ05hbWUgPT0gJ01BVC1JTlBVVCdcbiAgICAgICAgKSB7XG4gICAgICAgICAgYkluUG9wVXAgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFiSW5Qb3BVcCkge1xuICAgICAgLy8gdGhpcy5iU2hvd0ZpbHRlclBvcG92ZXIkID0gZmFsc2U7XG5cbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5fY2xpY2tBd2F5LmJpbmQodGhpcykpO1xuICAgIH1cbiAgfVxuXG4gIF9maWx0ZXJDb250YWluc1R5cGUoZXZlbnQpIHtcbiAgICB0aGlzLmZpbHRlckNvbnRhaW5zVHlwZSQgPSBldmVudC52YWx1ZTtcbiAgfVxuXG4gIF9maWx0ZXJDb250YWluc1ZhbHVlKGV2ZW50KSB7XG4gICAgdGhpcy5maWx0ZXJDb250YWluc1ZhbHVlJCA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgfVxuXG4gIF9maWx0ZXJDb250YWluc0RhdGVWYWx1ZShldmVudCwgdmFsdWUpIHtcbiAgICB0aGlzLmZpbHRlckNvbnRhaW5zVmFsdWUkID0gdmFsdWU7XG4gIH1cblxuICBfZmlsdGVyQ29udGFpbnNEYXRlVGltZVZhbHVlKGV2ZW50KSB7XG4gICAgdGhpcy5maWx0ZXJDb250YWluc1ZhbHVlJCA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgfVxuXG4gIF9maWx0ZXJDb250YWluc1RpbWVWYWx1ZShldmVudCkge1xuICAgIHRoaXMuZmlsdGVyQ29udGFpbnNWYWx1ZSQgPSBldmVudC50YXJnZXQudmFsdWU7XG4gIH1cblxuICBfb25GaWx0ZXJBY3Rpb25CdXR0b25DbGljayhldmVudDogYW55KSB7XG4gICAgLy8gbW9kYWwgYnV0dG9uc1xuICAgIHN3aXRjaCAoZXZlbnQuYWN0aW9uKSB7XG4gICAgICBjYXNlICdjYW5jZWwnOlxuICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJSZWZEYXRhID0gW107XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc3VibWl0JzpcbiAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJXaXRoSW5mbygpO1xuICAgICAgICB0aGlzLmZpbHRlclNvcnRHcm91cEJ5KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5iU2hvd0ZpbHRlclBvcG92ZXIkID0gZmFsc2U7XG5cbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMuX2NsaWNrQXdheS5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIHVwZGF0ZUZpbHRlcldpdGhJbmZvKCkge1xuICAgIGxldCBiRm91bmQgPSBmYWxzZTtcbiAgICBmb3IgKGNvbnN0IGZpbHRlck9iaiBvZiB0aGlzLmZpbHRlckJ5Q29sdW1ucykge1xuICAgICAgaWYgKGZpbHRlck9iai5yZWYgPT09IHRoaXMuY3VycmVudEZpbHRlclJlZkRhdGEuY29uZmlnLm5hbWUpIHtcbiAgICAgICAgZmlsdGVyT2JqLnR5cGUgPSB0aGlzLmN1cnJlbnRGaWx0ZXJSZWZEYXRhLnR5cGU7XG4gICAgICAgIGZpbHRlck9iai5jb250YWluc0ZpbHRlciA9IHRoaXMuZmlsdGVyQ29udGFpbnNUeXBlJDtcbiAgICAgICAgZmlsdGVyT2JqLmNvbnRhaW5zRmlsdGVyVmFsdWUgPSB0aGlzLmZpbHRlckNvbnRhaW5zVmFsdWUkO1xuXG4gICAgICAgIGJGb3VuZCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghYkZvdW5kKSB7XG4gICAgICAvLyBhZGQgaW5cbiAgICAgIGNvbnN0IGZpbHRlck9iajogYW55ID0ge307XG4gICAgICBmaWx0ZXJPYmoucmVmID0gdGhpcy5jdXJyZW50RmlsdGVyUmVmRGF0YS5jb25maWcubmFtZTtcbiAgICAgIGZpbHRlck9iai50eXBlID0gdGhpcy5jdXJyZW50RmlsdGVyUmVmRGF0YS50eXBlO1xuICAgICAgZmlsdGVyT2JqLmNvbnRhaW5zRmlsdGVyID0gdGhpcy5maWx0ZXJDb250YWluc1R5cGUkO1xuICAgICAgZmlsdGVyT2JqLmNvbnRhaW5zRmlsdGVyVmFsdWUgPSB0aGlzLmZpbHRlckNvbnRhaW5zVmFsdWUkO1xuXG4gICAgICB0aGlzLmZpbHRlckJ5Q29sdW1ucy5wdXNoKGZpbHRlck9iaik7XG4gICAgfVxuXG4gICAgLy8gaXRlcmF0ZSB0aHJvdWdoIGZpbHRlcnMgYW5kIHVwZGF0ZSBmaWx0ZXJPbiBpY29uXG4gICAgZm9yIChjb25zdCBmaWx0ZXJPYmogb2YgdGhpcy5maWx0ZXJCeUNvbHVtbnMpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5zRmlsdGVyVmFsdWUgPSBmaWx0ZXJPYmouY29udGFpbnNGaWx0ZXJWYWx1ZTtcbiAgICAgIGNvbnN0IGNvbnRhaW5zRmlsdGVyID0gZmlsdGVyT2JqLmNvbnRhaW5zRmlsdGVyO1xuICAgICAgY29uc3QgZmlsdGVyUmVmID0gZmlsdGVyT2JqLnJlZjtcbiAgICAgIGNvbnN0IGZpbHRlckluZGV4ID0gdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLmluZGV4T2YoZmlsdGVyUmVmKTtcbiAgICAgIGNvbnN0IGFyRmlsdGVySW1nID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ2ZpbHRlck9uSWNvbicpO1xuICAgICAgY29uc3QgZmlsdGVySW1nOiBhbnkgPSBhckZpbHRlckltZ1tmaWx0ZXJJbmRleF07XG4gICAgICBpZiAoY29udGFpbnNGaWx0ZXJWYWx1ZSA9PSAnJyAmJiBjb250YWluc0ZpbHRlciAhPSAnbnVsbCcgJiYgY29udGFpbnNGaWx0ZXIgIT0gJ25vdG51bGwnKSB7XG4gICAgICAgIC8vIGNsZWFyIGljb25cbiAgICAgICAgZmlsdGVySW1nLnNyYyA9ICcnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gc2hvdyBpY29uXG4gICAgICAgIGZpbHRlckltZy5zcmMgPSB0aGlzLmZpbHRlck9uU3ZnSWNvbiQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlRmlsdGVyVmFyc1dpdGhDdXJyZW50KGNvbHVtbkRhdGEpIHtcbiAgICAvLyBmaW5kIGN1cnJlbnQgcmVmLCBpZiBleGlzdHMsIG1vdmUgZGF0YSB0byB2YXJpYWJsZSB0byBkaXNwbGF5XG5cbiAgICBsZXQgYkZvdW5kID0gZmFsc2U7XG4gICAgZm9yIChjb25zdCBmaWx0ZXJPYmogb2YgdGhpcy5maWx0ZXJCeUNvbHVtbnMpIHtcbiAgICAgIGlmIChmaWx0ZXJPYmoucmVmID09PSB0aGlzLmN1cnJlbnRGaWx0ZXJSZWZEYXRhLmNvbmZpZy5uYW1lKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyQ29udGFpbnNUeXBlJCA9IGZpbHRlck9iai5jb250YWluc0ZpbHRlcjtcbiAgICAgICAgdGhpcy5maWx0ZXJDb250YWluc1ZhbHVlJCA9IGZpbHRlck9iai5jb250YWluc0ZpbHRlclZhbHVlO1xuXG4gICAgICAgIGJGb3VuZCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghYkZvdW5kKSB7XG4gICAgICBzd2l0Y2ggKGNvbHVtbkRhdGEudHlwZSkge1xuICAgICAgICBjYXNlICdEYXRlJzpcbiAgICAgICAgY2FzZSAnRGF0ZVRpbWUnOlxuICAgICAgICBjYXNlICdUaW1lJzpcbiAgICAgICAgICB0aGlzLmZpbHRlckNvbnRhaW5zVHlwZSQgPSAnbm90ZXF1YWwnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRoaXMuZmlsdGVyQ29udGFpbnNUeXBlJCA9ICdjb250YWlucyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZmlsdGVyQ29udGFpbnNWYWx1ZSQgPSAnJztcbiAgICB9XG4gIH1cblxuICBmaWx0ZXJEYXRhKGVsZW1lbnQ6IGFueSkge1xuICAgIGNvbnN0IGl0ZW0gPSBlbGVtZW50WzBdO1xuICAgIGxldCBiS2VlcCA9IHRydWU7XG4gICAgZm9yIChjb25zdCBmaWx0ZXJPYmogb2YgdGhpcy5maWx0ZXJCeUNvbHVtbnMpIHtcbiAgICAgIGlmIChmaWx0ZXJPYmouY29udGFpbnNGaWx0ZXJWYWx1ZSAhPSAnJyB8fCBmaWx0ZXJPYmouY29udGFpbnNGaWx0ZXIgPT0gJ251bGwnIHx8IGZpbHRlck9iai5jb250YWluc0ZpbHRlciA9PSAnbm90bnVsbCcpIHtcbiAgICAgICAgc3dpdGNoIChmaWx0ZXJPYmoudHlwZSkge1xuICAgICAgICAgIGNhc2UgJ0RhdGUnOlxuICAgICAgICAgIGNhc2UgJ0RhdGVUaW1lJzpcbiAgICAgICAgICBjYXNlICdUaW1lJzpcbiAgICAgICAgICAgIGJLZWVwID0gZmlsdGVyRGF0YUJ5RGF0ZShpdGVtLCBmaWx0ZXJPYmopO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGJLZWVwID0gZmlsdGVyRGF0YUJ5Q29tbW9uRmllbGRzKGl0ZW0sIGZpbHRlck9iaik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChmaWx0ZXJPYmouY29udGFpbnNGaWx0ZXJWYWx1ZSA9PT0gJycpIHtcbiAgICAgICAgYktlZXAgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBpZiBkb24ndCBrZWVwIHN0b3AgZmlsdGVyaW5nXG4gICAgICBpZiAoIWJLZWVwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBiS2VlcDtcbiAgfVxuXG4gIGZpbHRlclNvcnRHcm91cEJ5KCkge1xuICAgIGxldCB0aGVEYXRhID0gdGhpcy5vcmlnaW5hbERhdGEuc2xpY2UoKS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICByZXR1cm4gW2l0ZW0sIGluZGV4XTtcbiAgICB9KTtcblxuICAgIC8vIGxhc3QgZmlsdGVyIGNvbmZpZyBkYXRhIGlzIGdsb2JhbFxuICAgIHRoZURhdGEgPSB0aGVEYXRhLmZpbHRlcih0aGlzLmZpbHRlckRhdGEuYmluZCh0aGlzKSk7XG5cbiAgICAvLyBsYXN0IHNvcnQgY29uZmlnIGRhdGEgaXMgZ2xvYmFsXG4gICAgdGhlRGF0YS5zb3J0KHRoaXMuc29ydENvbXBhcmUuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5yb3dEYXRhLmRhdGEgPSB0aGVEYXRhLm1hcChpdGVtID0+IGl0ZW1bMF0pO1xuXG4gICAgY29uc3QgbmV3RWxlbWVudHM6IGFueSA9IG5ldyBBcnJheSh0aGlzLnJvd0RhdGEuZGF0YS5sZW5ndGgpO1xuICAgIHRoZURhdGEuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgIG5ld0VsZW1lbnRzW2luZGV4XSA9IHRoaXMub3JpZ2luYWxFbGVtZW50c0RhdGFbaXRlbVsxXV07XG4gICAgfSk7XG4gICAgdGhpcy5lbGVtZW50c0RhdGEgPSBuZXdFbGVtZW50cztcbiAgfVxuXG4gIF9oZWFkZXJTb3J0Q2xpY2soZXZlbnQsIGNvbHVtbkRhdGEpIHtcbiAgICAvLyBpbWFnZXMgMCAtIGZpbHRlciwgMSAtIGFycm93LCAyIC0gbW9yZVxuXG4gICAgLyoqIENvbW1lbnRpbmcgdGhpcyBjb2RlIGZvciBub3cgYXMgaXQgaXMgZ2l2aW5nIGVycm9ycyBub3Qgc3VyZSBpZiBpdCBldmVyIHdvcmtlZCAqL1xuICAgIC8vIGxldCBhcnJvd0ltYWdlID0gZXZlbnQuc3JjRWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW1nJylbMV07XG4gICAgLy8gbGV0IGFycm93QXR0ciA9IGFycm93SW1hZ2UuZ2V0QXR0cmlidXRlKCdhcnJvdycpO1xuXG4gICAgLy8gdGhpcy5jbGVhck91dEFycm93cyhldmVudCwgY29sdW1uRGF0YSk7XG5cbiAgICAvLyBzd2l0Y2ggKGFycm93QXR0cikge1xuICAgIC8vICAgY2FzZSAndXAnOlxuICAgIC8vICAgICBhcnJvd0ltYWdlLnNyYyA9IHRoaXMuYXJyb3dEb3duU3ZnSWNvbiQ7XG4gICAgLy8gICAgIGFycm93SW1hZ2Uuc2V0QXR0cmlidXRlKCdhcnJvdycsICdkb3duJyk7XG4gICAgLy8gICAgIGJyZWFrO1xuICAgIC8vICAgY2FzZSAnZG93bic6XG4gICAgLy8gICAgIGFycm93SW1hZ2Uuc3JjID0gJyc7XG4gICAgLy8gICAgIGFycm93SW1hZ2Uuc2V0QXR0cmlidXRlKCdhcnJvdycsICdub25lJyk7XG4gICAgLy8gICAgIGJyZWFrO1xuICAgIC8vICAgZGVmYXVsdDpcbiAgICAvLyAgICAgYXJyb3dJbWFnZS5zcmMgPSB0aGlzLmFycm93VXBTdmdJY29uJDtcbiAgICAvLyAgICAgYXJyb3dJbWFnZS5zZXRBdHRyaWJ1dGUoJ2Fycm93JywgJ3VwJyk7XG4gICAgLy8gICAgIGJyZWFrO1xuICAgIC8vIH1cblxuICAgIHRoaXMuY29tcGFyZVR5cGUgPSBjb2x1bW5EYXRhLnR5cGU7XG4gICAgdGhpcy5jb21wYXJlUmVmID0gY29sdW1uRGF0YS5jb25maWcubmFtZTtcbiAgICAvLyB0aGlzLmFycm93RGlyZWN0aW9uID0gYXJyb3dJbWFnZS5nZXRBdHRyaWJ1dGUoJ2Fycm93Jyk7XG4gICAgdGhpcy5hcnJvd0RpcmVjdGlvbiA9IHRoaXMuYXJyb3dEaXJlY3Rpb24gPT09ICd1cCcgPyAnZG93bicgOiAndXAnO1xuXG4gICAgdGhpcy5maWx0ZXJTb3J0R3JvdXBCeSgpO1xuICB9XG5cbiAgX3Nob3dVbkdyb3VwQnkoY29sdW1uRGF0YSk6IGJvb2xlYW4ge1xuICAgIGZvciAoY29uc3QgdmFsIG9mIHRoaXMuZ3JvdXBCeUNvbHVtbnMkKSB7XG4gICAgICBpZiAodmFsID09IGNvbHVtbkRhdGEuY29uZmlnLm5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgX2dyb3VwQnkoZXZlbnQsIGNvbHVtbkRhdGEpIHtcbiAgICB0aGlzLmNoZWNrR3JvdXBCeUNvbHVtbihjb2x1bW5EYXRhLmNvbmZpZy5uYW1lLCB0cnVlKTtcblxuICAgIHRoaXMuZmlsdGVyU29ydEdyb3VwQnkoKTtcbiAgfVxuXG4gIF91bkdyb3VwQnkoZXZlbnQsIGNvbHVtbkRhdGEpIHtcbiAgICAvLyBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmNoZWNrR3JvdXBCeUNvbHVtbihjb2x1bW5EYXRhLmNvbmZpZy5uYW1lLCBmYWxzZSk7XG5cbiAgICB0aGlzLmZpbHRlclNvcnRHcm91cEJ5KCk7XG4gIH1cblxuICBjaGVja0dyb3VwQnlDb2x1bW4oZmllbGQsIGFkZCkge1xuICAgIGxldCBmb3VuZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgZm9yIChjb25zdCBjb2x1bW4gb2YgdGhpcy5ncm91cEJ5Q29sdW1ucyQpIHtcbiAgICAgIGlmIChjb2x1bW4gPT09IGZpZWxkKSB7XG4gICAgICAgIGZvdW5kID0gdGhpcy5ncm91cEJ5Q29sdW1ucyQuaW5kZXhPZihjb2x1bW4sIDApO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZm91bmQgIT0gbnVsbCAmJiBmb3VuZCA+PSAwKSB7XG4gICAgICBpZiAoIWFkZCkge1xuICAgICAgICB0aGlzLmdyb3VwQnlDb2x1bW5zJC5zcGxpY2UoZm91bmQsIDEpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoYWRkKSB7XG4gICAgICB0aGlzLmdyb3VwQnlDb2x1bW5zJC5wdXNoKGZpZWxkKTtcbiAgICB9XG4gIH1cblxuICBfZ2V0R3JvdXBOYW1lKGZpZWxkTmFtZSkge1xuICAgIGZvciAobGV0IGZpZWxkSW5kZXggPSAwOyBmaWVsZEluZGV4IDwgdGhpcy5maWVsZHMkLmxlbmd0aDsgZmllbGRJbmRleCsrKSB7XG4gICAgICBjb25zdCBmaWVsZCA9IHRoaXMuZmllbGRzJFtmaWVsZEluZGV4XTtcbiAgICAgIGlmIChmaWVsZC5jb25maWcubmFtZSA9PSBmaWVsZE5hbWUpIHtcbiAgICAgICAgcmV0dXJuIGZpZWxkLmNvbmZpZy5sYWJlbDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgYWRkR3JvdXBzKGRhdGE6IGFueVtdLCBncm91cEJ5Q29sdW1uczogc3RyaW5nW10pOiBhbnlbXSB7XG4gICAgY29uc3Qgcm9vdEdyb3VwID0gbmV3IEdyb3VwKCk7XG4gICAgcm9vdEdyb3VwLmV4cGFuZGVkID0gdHJ1ZTtcbiAgICByZXR1cm4gdGhpcy5nZXRTdWJsZXZlbChkYXRhLCAwLCBncm91cEJ5Q29sdW1ucywgcm9vdEdyb3VwKTtcbiAgfVxuXG4gIGdldFN1YmxldmVsKGRhdGE6IGFueVtdLCBsZXZlbDogbnVtYmVyLCBncm91cEJ5Q29sdW1uczogc3RyaW5nW10sIHBhcmVudDogR3JvdXApOiBhbnlbXSB7XG4gICAgaWYgKGxldmVsID49IGdyb3VwQnlDb2x1bW5zLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIGNvbnN0IGdyb3VwcyA9IHRoaXMudW5pcXVlQnkoXG4gICAgICBkYXRhLm1hcChyb3cgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgR3JvdXAoKTtcbiAgICAgICAgcmVzdWx0LmxldmVsID0gbGV2ZWwgKyAxO1xuICAgICAgICByZXN1bHQucGFyZW50ID0gcGFyZW50O1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBsZXZlbDsgaSsrKSB7XG4gICAgICAgICAgcmVzdWx0W2dyb3VwQnlDb2x1bW5zW2ldXSA9IHJvd1tncm91cEJ5Q29sdW1uc1tpXV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pLFxuICAgICAgSlNPTi5zdHJpbmdpZnlcbiAgICApO1xuXG4gICAgY29uc3QgY3VycmVudENvbHVtbiA9IGdyb3VwQnlDb2x1bW5zW2xldmVsXTtcbiAgICBsZXQgc3ViR3JvdXBzOiBhbnkgPSBbXTtcbiAgICBncm91cHMuZm9yRWFjaChncm91cCA9PiB7XG4gICAgICBjb25zdCByb3dzSW5Hcm91cCA9IGRhdGEuZmlsdGVyKHJvdyA9PiBncm91cFtjdXJyZW50Q29sdW1uXSA9PT0gcm93W2N1cnJlbnRDb2x1bW5dKTtcbiAgICAgIGdyb3VwLnRvdGFsQ291bnRzID0gcm93c0luR3JvdXAubGVuZ3RoO1xuICAgICAgY29uc3Qgc3ViR3JvdXAgPSB0aGlzLmdldFN1YmxldmVsKHJvd3NJbkdyb3VwLCBsZXZlbCArIDEsIGdyb3VwQnlDb2x1bW5zLCBncm91cCk7XG4gICAgICBzdWJHcm91cC51bnNoaWZ0KGdyb3VwKTtcbiAgICAgIHN1Ykdyb3VwcyA9IHN1Ykdyb3Vwcy5jb25jYXQoc3ViR3JvdXApO1xuICAgIH0pO1xuICAgIHJldHVybiBzdWJHcm91cHM7XG4gIH1cblxuICB1bmlxdWVCeShhLCBrZXkpIHtcbiAgICBjb25zdCBzZWVuID0ge307XG4gICAgcmV0dXJuIGEuZmlsdGVyKGl0ZW0gPT4ge1xuICAgICAgY29uc3QgayA9IGtleShpdGVtKTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXR1cm4tYXNzaWduLCBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgICAgIHJldHVybiBzZWVuLmhhc093blByb3BlcnR5KGspID8gZmFsc2UgOiAoc2VlbltrXSA9IHRydWUpO1xuICAgIH0pO1xuICB9XG5cbiAgaXNHcm91cChpbmRleCwgaXRlbSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpdGVtLmxldmVsO1xuICB9XG5cbiAgX2dyb3VwSGVhZGVyQ2xpY2socm93KSB7XG4gICAgcm93LmV4cGFuZGVkID0gIXJvdy5leHBhbmRlZDtcbiAgICAvLyB0aGlzLnJlcGVhdExpc3QkLmZpbHRlciA9IFwiXCI7XG4gICAgdGhpcy5wZXJmRmlsdGVyID0gcGVyZm9ybWFuY2Uubm93KCkudG9TdHJpbmcoKTtcbiAgICB0aGlzLnJvd0RhdGEuZmlsdGVyID0gdGhpcy5wZXJmRmlsdGVyO1xuICB9XG5cbiAgLy8gYmVsb3cgaXMgZm9yIGdyaWQgcm93IGdyb3VwaW5nXG4gIGN1c3RvbUZpbHRlclByZWRpY2F0ZShkYXRhOiBhbnkgfCBHcm91cCwgZmlsdGVyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZGF0YSBpbnN0YW5jZW9mIEdyb3VwID8gZGF0YS52aXNpYmxlIDogdGhpcy5nZXREYXRhUm93VmlzaWJsZVdpdGhGaWx0ZXIoZGF0YSwgZmlsdGVyKTtcbiAgfVxuXG4gIGdldERhdGFSb3dWaXNpYmxlKGRhdGE6IGFueSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGdyb3VwUm93cyA9IHRoaXMucm93RGF0YS5kYXRhLmZpbHRlcihyb3cgPT4ge1xuICAgICAgaWYgKCEocm93IGluc3RhbmNlb2YgR3JvdXApKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGxldCBtYXRjaCA9IHRydWU7XG4gICAgICB0aGlzLmdyb3VwQnlDb2x1bW5zJC5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICAgIGlmICghcm93W2NvbHVtbl0gfHwgIWRhdGFbY29sdW1uXSB8fCByb3dbY29sdW1uXSAhPT0gZGF0YVtjb2x1bW5dKSB7XG4gICAgICAgICAgbWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gbWF0Y2g7XG4gICAgfSk7XG5cbiAgICBpZiAoZ3JvdXBSb3dzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IHBhcmVudCA9IGdyb3VwUm93c1swXSBhcyBHcm91cDtcbiAgICByZXR1cm4gcGFyZW50LnZpc2libGUgJiYgcGFyZW50LmV4cGFuZGVkO1xuICB9XG5cbiAgZ2V0RGF0YVJvd1Zpc2libGVXaXRoRmlsdGVyKGRhdGEsIGZpbHRlcikge1xuICAgIC8vIGZpc3QgY2hlY2sgaWYgcm93IGlzIHZpc2libGUgd2l0aCBncm91cGluZ1xuICAgIGxldCBiVmlzaWJsZSA9IHRoaXMuZ2V0RGF0YVJvd1Zpc2libGUoZGF0YSk7XG5cbiAgICBpZiAoYlZpc2libGUgJiYgZmlsdGVyICYmIGZpbHRlciAhPSAnJyAmJiBmaWx0ZXIgIT0gdGhpcy5wZXJmRmlsdGVyKSB7XG4gICAgICAvLyBub3cgY2hlY2sgaWYgcm93IGlzIGZpbHRlcmVkLlxuXG4gICAgICAvLyBhc3N1bWUgbm90IHRoZXJlIHVubGVzcyB3ZSBmaW5kIGl0XG4gICAgICBiVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgZm9yIChjb25zdCBjb2wgb2YgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zKSB7XG4gICAgICAgIC8vIGZpbHRlciBpcyBsb3dlciBjYXNlXG4gICAgICAgIGlmIChkYXRhW2NvbF0gJiYgZGF0YVtjb2xdLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmRleE9mKGZpbHRlcikgPj0gMCkge1xuICAgICAgICAgIGJWaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBiVmlzaWJsZTtcbiAgfVxuXG4gIGdldERpc3BsYXlDb2x1bW5zKGZpZWxkcyA9IFtdKSB7XG4gICAgcmV0dXJuIGZpZWxkcy5tYXAoKGZpZWxkOiBhbnkpID0+IHtcbiAgICAgIGxldCB0aGVGaWVsZCA9IGZpZWxkLmNvbmZpZy52YWx1ZS5zdWJzdHJpbmcoZmllbGQuY29uZmlnLnZhbHVlLmluZGV4T2YoJyAnKSArIDEpO1xuICAgICAgaWYgKHRoZUZpZWxkLmluZGV4T2YoJy4nKSA9PSAwKSB7XG4gICAgICAgIHRoZUZpZWxkID0gdGhlRmllbGQuc3Vic3RyaW5nKDEpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhlRmllbGQ7XG4gICAgfSk7XG4gIH1cblxuICBfZ2V0SWNvblN0eWxlKGxldmVsKTogc3RyaW5nIHtcbiAgICBsZXQgc1JldHVybiA9ICcnO1xuICAgIGxldCBuTGV2ZWwgPSBwYXJzZUludChsZXZlbCwgMTApO1xuICAgIG5MZXZlbC0tO1xuICAgIG5MZXZlbCAqPSAxNTtcbiAgICBzUmV0dXJuID0gYHBhZGRpbmctbGVmdDogJHtuTGV2ZWx9cHg7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGVgO1xuXG4gICAgcmV0dXJuIHNSZXR1cm47XG4gIH1cblxuICAvLyBDYWxsYmFjayBwYXNzZWQgd2hlbiBzdWJzY3JpYmluZyB0byBzdG9yZSBjaGFuZ2VcbiAgb25TdGF0ZUNoYW5nZSgpIHtcbiAgICB0aGlzLmNoZWNrQW5kVXBkYXRlKCk7XG4gIH1cblxuICAvLyByZXR1cm4gdGhlIHZhbHVlIHRoYXQgc2hvdWxkIGJlIHNob3duIGFzIHRoZSBjb250ZW50cyBmb3IgdGhlIGdpdmVuIHJvdyBkYXRhXG4gIC8vICBvZiB0aGUgZ2l2ZW4gcm93IGZpZWxkXG4gIGdldFJvd1ZhbHVlKGluUm93RGF0YTogT2JqZWN0LCBpbkNvbEtleTogc3RyaW5nKTogYW55IHtcbiAgICAvLyBTZWUgd2hhdCBkYXRhIChpZiBhbnkpIHdlIGhhdmUgdG8gZGlzcGxheVxuICAgIGNvbnN0IHJlZktleXM6IHN0cmluZ1tdID0gaW5Db2xLZXkuc3BsaXQoJy4nKTtcbiAgICBsZXQgdmFsQnVpbGRlciA9IGluUm93RGF0YTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiByZWZLZXlzKSB7XG4gICAgICB2YWxCdWlsZGVyID0gdmFsQnVpbGRlcltrZXldO1xuICAgIH1cbiAgICByZXR1cm4gdmFsQnVpbGRlcjtcbiAgfVxuXG4gIGdlbmVyYXRlUm93c0RhdGEoKSB7XG4gICAgY29uc3QgeyBkYXRhUGFnZU5hbWUsIHJlZmVyZW5jZUxpc3QgfSA9IHRoaXMuY29uZmlnUHJvcHMkO1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpO1xuICAgIC8vIGlmIGRhdGFQYWdlTmFtZSBwcm9wZXJ0eSB2YWx1ZSBleGlzdHMgdGhlbiBtYWtlIGEgZGF0YXBhZ2UgZmV0Y2ggY2FsbCBhbmQgZ2V0IHRoZSBsaXN0IG9mIGRhdGEuXG4gICAgaWYgKGRhdGFQYWdlTmFtZSkge1xuICAgICAgdGhpcy5kYXRhUGFnZVNlcnZpY2UuZ2V0RGF0YVBhZ2VEYXRhKGRhdGFQYWdlTmFtZSwgdGhpcy5wYXJhbWV0ZXJzLCBjb250ZXh0KS50aGVuKGxpc3REYXRhID0+IHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZm9ybWF0Um93c0RhdGEobGlzdERhdGEpO1xuICAgICAgICB0aGlzLm9yaWdpbmFsRGF0YSA9IGRhdGE7XG4gICAgICAgIHRoaXMucm93RGF0YSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2UoZGF0YSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVGhlIHJlZmVyZW5jZUxpc3QgcHJvcCBoYXMgdGhlIEpTT04gZGF0YSBmb3IgZWFjaCByb3cgdG8gYmUgZGlzcGxheWVkXG4gICAgICAvLyAgaW4gdGhlIHRhYmxlLiBTbywgaXRlcmF0ZSBvdmVyIHJlZmVyZW5jZUxpc3QgdG8gY3JlYXRlIHRoZSBkYXRhUm93cyB0aGF0XG4gICAgICAvLyAgd2UncmUgdXNpbmcgYXMgdGhlIHRhYmxlJ3MgZGF0YVNvdXJjZVxuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZm9ybWF0Um93c0RhdGEocmVmZXJlbmNlTGlzdCk7XG4gICAgICB0aGlzLm9yaWdpbmFsRGF0YSA9IGRhdGE7XG4gICAgICB0aGlzLnJvd0RhdGEgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKGRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIGZvcm1hdFJvd3NEYXRhKGRhdGEpIHtcbiAgICByZXR1cm4gZGF0YT8ubWFwKGl0ZW0gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuZGlzcGxheWVkQ29sdW1ucy5yZWR1Y2UoKGRhdGFGb3JSb3csIGNvbEtleSkgPT4ge1xuICAgICAgICBkYXRhRm9yUm93W2NvbEtleV0gPSB0aGlzLmdldFJvd1ZhbHVlKGl0ZW0sIGNvbEtleSk7XG4gICAgICAgIHJldHVybiBkYXRhRm9yUm93O1xuICAgICAgfSwge30pO1xuICAgIH0pO1xuICB9XG5cbiAgYWRkUmVjb3JkKCkge1xuICAgIGlmICh0aGlzLmFsbG93RWRpdGluZ0luTW9kYWwgJiYgdGhpcy5kZWZhdWx0Vmlldykge1xuICAgICAgdGhpcy5wQ29ubiRcbiAgICAgICAgLmdldEFjdGlvbnNBcGkoKVxuICAgICAgICAub3BlbkVtYmVkZGVkRGF0YU1vZGFsKFxuICAgICAgICAgIHRoaXMuZGVmYXVsdFZpZXcsXG4gICAgICAgICAgdGhpcy5wQ29ubiQgYXMgYW55LFxuICAgICAgICAgIHRoaXMucmVmZXJlbmNlTGlzdFN0cixcbiAgICAgICAgICB0aGlzLnJlZmVyZW5jZUxpc3QubGVuZ3RoLFxuICAgICAgICAgIFBDb3JlLmdldENvbnN0YW50cygpLlJFU09VUkNFX1NUQVRVUy5DUkVBVEUsXG4gICAgICAgICAgdGhpcy50YXJnZXRDbGFzc0xhYmVsXG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucENvbm4kLmdldExpc3RBY3Rpb25zKCkuaW5zZXJ0KHsgY2xhc3NJRDogdGhpcy5jb250ZXh0Q2xhc3MgfSwgdGhpcy5yZWZlcmVuY2VMaXN0Lmxlbmd0aCk7XG4gICAgfVxuXG4gICAgdGhpcy5wQ29ubiQuY2xlYXJFcnJvck1lc3NhZ2VzKHtcbiAgICAgIHByb3BlcnR5OiB0aGlzLnBDb25uJC5nZXRTdGF0ZVByb3BzKCk/LnJlZmVyZW5jZUxpc3Q/LnN1YnN0cmluZygxKVxuICAgIH0pO1xuICB9XG5cbiAgZWRpdFJlY29yZChkYXRhLCBpbmRleCkge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICB0aGlzLnBDb25uJFxuICAgICAgICAuZ2V0QWN0aW9uc0FwaSgpXG4gICAgICAgIC5vcGVuRW1iZWRkZWREYXRhTW9kYWwoXG4gICAgICAgICAgdGhpcy5iVXNlU2VwYXJhdGVWaWV3Rm9yRWRpdCA/IHRoaXMuZWRpdFZpZXcgOiB0aGlzLmRlZmF1bHRWaWV3LFxuICAgICAgICAgIHRoaXMucENvbm4kIGFzIGFueSxcbiAgICAgICAgICB0aGlzLnJlZmVyZW5jZUxpc3RTdHIsXG4gICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgUENvcmUuZ2V0Q29uc3RhbnRzKCkuUkVTT1VSQ0VfU1RBVFVTLlVQREFURSxcbiAgICAgICAgICB0aGlzLnRhcmdldENsYXNzTGFiZWxcbiAgICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBkZWxldGVSZWNvcmQoaW5kZXgpIHtcbiAgICB0aGlzLnBDb25uJC5nZXRMaXN0QWN0aW9ucygpLmRlbGV0ZUVudHJ5KGluZGV4KTtcbiAgfVxuXG4gIGJ1aWxkRWxlbWVudHNGb3JUYWJsZSgpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKTtcbiAgICBjb25zdCBlbGVEYXRhOiBhbnkgPSBbXTtcbiAgICB0aGlzLnJlZmVyZW5jZUxpc3QuZm9yRWFjaCgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGE6IGFueSA9IFtdO1xuICAgICAgdGhpcy5yYXdGaWVsZHM/LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGl0ZW0gPSB7XG4gICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICBjb25maWc6IHsgLi4uaXRlbS5jb25maWcsIGxhYmVsOiAnJywgZGlzcGxheU1vZGU6IHRoaXMucmVhZE9ubHlNb2RlIHx8IHRoaXMuYWxsb3dFZGl0aW5nSW5Nb2RhbCA/ICdESVNQTEFZX09OTFknIDogdW5kZWZpbmVkIH1cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlTGlzdERhdGEgPSBnZXRSZWZlcmVuY2VMaXN0KHRoaXMucENvbm4kKTtcbiAgICAgICAgY29uc3QgaXNEYXRhcGFnZSA9IHJlZmVyZW5jZUxpc3REYXRhLnN0YXJ0c1dpdGgoJ0RfJyk7XG4gICAgICAgIGNvbnN0IHBhZ2VSZWZlcmVuY2VWYWx1ZSA9IGlzRGF0YXBhZ2UgPyBgJHtyZWZlcmVuY2VMaXN0RGF0YX1bJHtpbmRleH1dYCA6IGAke3RoaXMucENvbm4kLmdldFBhZ2VSZWZlcmVuY2UoKX0ke3JlZmVyZW5jZUxpc3REYXRhfVske2luZGV4fV1gO1xuICAgICAgICBjb25zdCBjb25maWcgPSB7XG4gICAgICAgICAgbWV0YTogaXRlbSxcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgcGFnZVJlZmVyZW5jZTogcGFnZVJlZmVyZW5jZVZhbHVlLFxuICAgICAgICAgICAgcmVmZXJlbmNlTGlzdDogcmVmZXJlbmNlTGlzdERhdGEsXG4gICAgICAgICAgICBoYXNGb3JtOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCB2aWV3ID0gUENvcmUuY3JlYXRlUENvbm5lY3QoY29uZmlnKTtcbiAgICAgICAgZGF0YS5wdXNoKHZpZXcpO1xuICAgICAgfSk7XG4gICAgICBlbGVEYXRhLnB1c2goZGF0YSk7XG4gICAgfSk7XG4gICAgdGhpcy5vcmlnaW5hbEVsZW1lbnRzRGF0YSA9IGVsZURhdGE7XG4gICAgdGhpcy5lbGVtZW50c0RhdGEgPSBlbGVEYXRhO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiYlZpc2libGUkXCI+XG4gIDxkaXYgY2xhc3M9XCJzaW1wbGUtdGFibGUtd3JhcHBlclwiPlxuICAgIDxoMyAqbmdJZj1cImxhYmVsXCIgY2xhc3NOYW1lPVwibGFiZWxcIiBzdHlsZT1cImZvbnQtd2VpZ2h0OiBib2xkXCI+XG4gICAgICB7eyBsYWJlbCB9fSA8c3BhbiBjbGFzcz1cInJlc3VsdHMtY291bnRcIj57eyBnZXRSZXN1bHRzVGV4dCgpIH19PC9zcGFuPlxuICAgIDwvaDM+XG4gICAgPHRhYmxlICpuZ0lmPVwicmVhZE9ubHlNb2RlIHx8IGFsbG93RWRpdGluZ0luTW9kYWxcIiBtYXQtdGFibGUgW2RhdGFTb3VyY2VdPVwiZWxlbWVudHNEYXRhXCIgY2xhc3M9XCJtYXQtZWxldmF0aW9uLXo4XCIgaWQ9XCJyZWFkb25seS10YWJsZVwiIG1hdFNvcnQ+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkQ29sIG9mIHByb2Nlc3NlZEZpZWxkczsgbGV0IGkgPSBpbmRleFwiIFttYXRDb2x1bW5EZWZdPVwiZENvbC5jb25maWcubmFtZVwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlciAoY2xpY2spPVwiX2hlYWRlclNvcnRDbGljaygkZXZlbnQsIGRDb2wpXCIgYXJyb3dQb3NpdGlvbj1cImJlZm9yZVwiPlxuICAgICAgICAgIDxkaXY+e3sgZENvbC5jb25maWcubGFiZWwgfX08L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHNkay1tYXQtaGVhZGVyLWZpbHRlclwiPlxuICAgICAgICAgICAgPGltZyBjbGFzcz1cInBzZGstZmlsdGVyLXN2Zy1pY29uXCIgbmFtZT1cImZpbHRlck9uSWNvblwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiZ3JvdXBNZW51XCI+XG4gICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJwc2RrLWxpc3Qtdmlldy1zdmctaWNvblwiIHNyYz1cInt7IG1lbnVTdmdJY29uJCB9fVwiIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxtYXQtbWVudSAjZ3JvdXBNZW51PlxuICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIl9ncm91cEJ5KCRldmVudCwgZENvbClcIj5cbiAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwicHNkay1saXN0LXZpZXctc3ZnLWljb25cIiBzcmM9XCJ7eyBncm91cEJ5U3ZnSWNvbiQgfX1cIiAvPjxzcGFuPkdyb3VwIEJ5PC9zcGFuPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIl9zaG93VW5Hcm91cEJ5KGRDb2wpICYmIGJHcm91cGluZyRcIiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJfdW5Hcm91cEJ5KCRldmVudCwgZENvbClcIj5cbiAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwicHNkay1saXN0LXZpZXctc3ZnLWljb25cIiBzcmM9XCJ7eyBncm91cEJ5U3ZnSWNvbiQgfX1cIiAvPjxzcGFuPlVuZ3JvdXA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIl9maWx0ZXIoJGV2ZW50LCBkQ29sKVwiPlxuICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJwc2RrLWxpc3Qtdmlldy1zdmctaWNvblwiIHNyYz1cInt7IGZpbHRlclN2Z0ljb24kIH19XCIgLz48c3Bhbj5GaWx0ZXI8L3NwYW4+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICA8Y29tcG9uZW50LW1hcHBlclxuICAgICAgICAgICAgW25hbWVdPVwiZWxlbWVudFtpXS5nZXRQQ29ubmVjdCgpLmdldENvbXBvbmVudE5hbWUoKVwiXG4gICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICBwQ29ubiQ6IGVsZW1lbnRbaV0uZ2V0UENvbm5lY3QoKSxcbiAgICAgICAgICAgICAgZm9ybUdyb3VwJDogZm9ybUdyb3VwJFxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICBlcnJvck1zZz1cIlRhYmxlIHdhbnRzIGNvbXBvbmVudCBub3QgeWV0IGF2YWlsYWJsZToge3sgZWxlbWVudFtpXS5nZXRQQ29ubmVjdCgpLmdldENvbXBvbmVudE5hbWUoKSB9fVwiXG4gICAgICAgICAgPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJEZWxldGVJY29uXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJhbGxvd0VkaXRpbmdJbk1vZGFsXCI+XG4gICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj48L3RoPlxuICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50OyBpbmRleCBhcyBqXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWljb25cIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cInV0aWxpdHlNZW51XCI+XG4gICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cInBzZGstdXRpbGl0eS1jYXJkLWFjdGlvbnMtc3ZnLWljb25cIiBzcmM9XCJ7eyBzZXR0aW5nc1N2Z0ljb24kIH19XCIgLz5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxtYXQtbWVudSAjdXRpbGl0eU1lbnU9XCJtYXRNZW51XCIgb3ZlcmxhcFRyaWdnZXI9XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiZWRpdFJlY29yZChlbGVtZW50LCBqKVwiPkVkaXQ8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImRlbGV0ZVJlY29yZChqKVwiPkRlbGV0ZTwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L21hdC1tZW51PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uc1wiPjwvdHI+XG4gICAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGlzcGxheWVkQ29sdW1uc1wiPjwvdHI+XG4gICAgICA8dHIgY2xhc3M9XCJtYXQtcm93IHBzZGstbm8tcmVjb3Jkc1wiICptYXROb0RhdGFSb3c+XG4gICAgICAgIDx0ZCBpZD1cIm5vLXJlY29yZHNcIiBjbGFzcz1cIm1hdC1jZWxsXCIgW2F0dHIuY29sc3Bhbl09XCJkaXNwbGF5ZWRDb2x1bW5zLmxlbmd0aFwiPlxuICAgICAgICAgIHt7IHV0aWxzLmdldEdlbmVyaWNGaWVsZHNMb2NhbGl6ZWRWYWx1ZSgnQ29zbW9zRmllbGRzLmZpZWxkcy5saXN0cycsICdObyByZWNvcmRzIGZvdW5kLicpIH19XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L3RyPlxuICAgIDwvdGFibGU+XG4gICAgPHRhYmxlICpuZ0lmPVwiZWRpdGFibGVNb2RlICYmICFhbGxvd0VkaXRpbmdJbk1vZGFsXCIgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cImVsZW1lbnRzRGF0YVwiIGNsYXNzPVwibWF0LWVsZXZhdGlvbi16OFwiIGlkPVwiZWRpdGFibGUtdGFibGVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRDb2wgb2YgZmllbGREZWZzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkQ29sLm5hbWUgIT0gJ0RlbGV0ZUljb24nXCIgW21hdENvbHVtbkRlZl09XCJkQ29sLm5hbWVcIj5cbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIGNsYXNzPVwicHNkay1tYXQtaGVhZGVyXCI+e3sgZENvbC5sYWJlbCB9fTwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICAgIDxjb21wb25lbnQtbWFwcGVyXG4gICAgICAgICAgICAgIFtuYW1lXT1cImVsZW1lbnRbaV0uZ2V0UENvbm5lY3QoKS5nZXRDb21wb25lbnROYW1lKClcIlxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIHBDb25uJDogZWxlbWVudFtpXS5nZXRQQ29ubmVjdCgpLFxuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCQ6IGZvcm1Hcm91cCRcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIGVycm9yTXNnPVwiVGFibGUgd2FudHMgY29tcG9uZW50IG5vdCB5ZXQgYXZhaWxhYmxlOiB7eyBlbGVtZW50W2ldLmdldFBDb25uZWN0KCkuZ2V0Q29tcG9uZW50TmFtZSgpIH19XCJcbiAgICAgICAgICAgID48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiRGVsZXRlSWNvblwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPjwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50OyBpbmRleCBhcyBqXCI+XG4gICAgICAgICAgPGJ1dHRvbiBpZD1cImRlbGV0ZS1idXR0b25cIiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImRlbGV0ZVJlY29yZChqKVwiPlxuICAgICAgICAgICAgPGltZyBjbGFzcz1cInBzZGstdXRpbGl0eS1jYXJkLWFjdGlvbi1zdmctaWNvblwiIHNyYz1cInt7IG1lbnVJY29uT3ZlcnJpZGUkIH19XCIgLz5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zXCI+PC90cj5cbiAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zXCI+PC90cj5cbiAgICAgIDx0ciBjbGFzcz1cIm1hdC1yb3cgcHNkay1uby1yZWNvcmRzXCIgKm1hdE5vRGF0YVJvdz5cbiAgICAgICAgPHRkIGlkPVwibm8tcmVjb3Jkc1wiIGNsYXNzPVwibWF0LWNlbGxcIiBbYXR0ci5jb2xzcGFuXT1cImRpc3BsYXllZENvbHVtbnMubGVuZ3RoXCI+XG4gICAgICAgICAge3sgdXRpbHMuZ2V0R2VuZXJpY0ZpZWxkc0xvY2FsaXplZFZhbHVlKCdDb3Ntb3NGaWVsZHMuZmllbGRzLmxpc3RzJywgJ05vIHJlY29yZHMgZm91bmQuJykgfX1cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgPC90YWJsZT5cbiAgPC9kaXY+XG4gIDxidXR0b24gKm5nSWY9XCJzaG93QWRkUm93QnV0dG9uXCIgbWF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBzdHlsZT1cImZvbnQtc2l6ZTogMTZweFwiIChjbGljayk9XCJhZGRSZWNvcmQoKVwiPlxuICAgICsge3sgbG9jYWxpemVkVmFsKCdBZGQnLCBsb2NhbGVDYXRlZ29yeSkgfX1cbiAgPC9idXR0b24+XG48L25nLWNvbnRhaW5lcj5cblxuPCEtLSBwb3Agb3ZlcnMgZm9yIGZpbHRlcnMtLT5cbjxkaXYgKm5nSWY9XCJiU2hvd0ZpbHRlclBvcG92ZXIkXCIgY2xhc3M9XCJwc2RrLWRpYWxvZy1iYWNrZ3JvdW5kXCI+XG4gIDxkaXYgY2xhc3M9XCJwc2RrLW1vZGFsLWZpbGUtdG9wXCI+XG4gICAgPGg0PlxuICAgICAgRmlsdGVyOjxiPiB7eyBmaWx0ZXJDb250YWluc0xhYmVsJCB9fTwvYj5cbiAgICA8L2g0PlxuICAgIDxkaXYgKm5nSWY9XCJiQ29udGFpbnMkXCI+XG4gICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJwc2RrLWZ1bGwtd2lkdGhcIj5cbiAgICAgICAgPG1hdC1zZWxlY3QgW3ZhbHVlXT1cImZpbHRlckNvbnRhaW5zVHlwZSRcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cIl9maWx0ZXJDb250YWluc1R5cGUoJGV2ZW50KVwiPlxuICAgICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiY29udGFpbnNcIj5Db250YWluczwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cImVxdWFsc1wiPkVxdWFsczwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cInN0YXJ0c3dpdGhcIj5TdGFydHMgd2l0aDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwicHNkay1mdWxsLXdpZHRoXCI+XG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCB0eXBlPVwidGV4dFwiIFt2YWx1ZV09XCJmaWx0ZXJDb250YWluc1ZhbHVlJFwiIChjaGFuZ2UpPVwiX2ZpbHRlckNvbnRhaW5zVmFsdWUoJGV2ZW50KVwiIC8+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cImJEYXRlVGltZSRcIj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInBzZGstZnVsbC13aWR0aFwiPlxuICAgICAgICA8bWF0LXNlbGVjdCBbdmFsdWVdPVwiZmlsdGVyQ29udGFpbnNUeXBlJFwiIChzZWxlY3Rpb25DaGFuZ2UpPVwiX2ZpbHRlckNvbnRhaW5zVHlwZSgkZXZlbnQpXCI+XG4gICAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJub3RlcXVhbFwiPmlzIG5vdCBlcXVhbCB0bzwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+YWZ0ZXI8L21hdC1vcHRpb24+XG4gICAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5iZWZvcmU8L21hdC1vcHRpb24+XG4gICAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJudWxsXCI+aXMgbnVsbDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cIm5vdG51bGxcIj5pcyBub3QgbnVsbDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwiYklzRGF0ZSQgJiYgZmlsdGVyQ29udGFpbnNUeXBlJCAhPT0gJ251bGwnICYmIGZpbHRlckNvbnRhaW5zVHlwZSQgIT0gJ25vdG51bGwnXCIgY2xhc3M9XCJwc2RrLWZ1bGwtd2lkdGhcIj5cbiAgICAgICAgPG1hdC1sYWJlbD5EYXRlPC9tYXQtbGFiZWw+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgI2RhdGVJbnB1dFxuICAgICAgICAgIFttYXREYXRlcGlja2VyXT1cInBlZ2FkYXRlXCJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgW3ZhbHVlXT1cImZpbHRlckNvbnRhaW5zVmFsdWUkXCJcbiAgICAgICAgICAoZGF0ZUNoYW5nZSk9XCJfZmlsdGVyQ29udGFpbnNEYXRlVmFsdWUoJGV2ZW50LCBkYXRlSW5wdXQudmFsdWUpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJwZWdhZGF0ZVwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxuICAgICAgICA8bWF0LWRhdGVwaWNrZXIgI3BlZ2FkYXRlIFtzdGFydEF0XT1cImZpbHRlckNvbnRhaW5zVmFsdWUkXCI+PC9tYXQtZGF0ZXBpY2tlcj5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cImJJc0RhdGVUaW1lJCAmJiBmaWx0ZXJDb250YWluc1R5cGUkICE9PSAnbnVsbCcgJiYgZmlsdGVyQ29udGFpbnNUeXBlJCAhPSAnbm90bnVsbCdcIiBjbGFzcz1cInBzZGstZnVsbC13aWR0aFwiPlxuICAgICAgICA8bWF0LWxhYmVsPkRhdGUgdGltZTwvbWF0LWxhYmVsPlxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCIgW3ZhbHVlXT1cImZpbHRlckNvbnRhaW5zVmFsdWUkXCIgKGNoYW5nZSk9XCJfZmlsdGVyQ29udGFpbnNEYXRlVGltZVZhbHVlKCRldmVudClcIiAvPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwiYklzVGltZSQgJiYgZmlsdGVyQ29udGFpbnNUeXBlJCAhPT0gJ251bGwnICYmIGZpbHRlckNvbnRhaW5zVHlwZSQgIT0gJ25vdG51bGwnXCIgY2xhc3M9XCJwc2RrLWZ1bGwtd2lkdGhcIj5cbiAgICAgICAgPG1hdC1sYWJlbD5UaW1lPC9tYXQtbGFiZWw+XG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCB0eXBlPVwidGltZVwiIFt2YWx1ZV09XCJmaWx0ZXJDb250YWluc1ZhbHVlJFwiIChjaGFuZ2UpPVwiX2ZpbHRlckNvbnRhaW5zVGltZVZhbHVlKCRldmVudClcIiAvPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L2Rpdj5cblxuICAgIDxjb21wb25lbnQtbWFwcGVyXG4gICAgICBuYW1lPVwiQWN0aW9uQnV0dG9uc1wiXG4gICAgICBbcHJvcHNdPVwieyBhck1haW5CdXR0b25zJDogYXJGaWx0ZXJNYWluQnV0dG9ucyQsIGFyU2Vjb25kYXJ5QnV0dG9ucyQ6IGFyRmlsdGVyU2Vjb25kYXJ5QnV0dG9ucyQgfVwiXG4gICAgICBbcGFyZW50XT1cInRoaXNcIlxuICAgICAgW291dHB1dEV2ZW50c109XCJ7IGFjdGlvbkJ1dHRvbkNsaWNrOiBfb25GaWx0ZXJBY3Rpb25CdXR0b25DbGljayB9XCJcbiAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
813
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLXRhYmxlLW1hbnVhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvdGVtcGxhdGUvc2ltcGxlLXRhYmxlLW1hbnVhbC9zaW1wbGUtdGFibGUtbWFudWFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9zaW1wbGUtdGFibGUtbWFudWFsL3NpbXBsZS10YWJsZS1tYW51YWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFB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LCBJbnB1dCwgVmlld0NoaWxkLCBmb3J3YXJkUmVmLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0RGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IE1hdE9wdGlvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7IE1hdFNvcnQsIE1hdFNvcnRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7IE1hdFRhYmxlRGF0YVNvdXJjZSwgTWF0VGFibGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQgaXNFcXVhbCBmcm9tICdmYXN0LWRlZXAtZXF1YWwnO1xuXG5pbXBvcnQgeyBDb21wb25lbnRNYXBwZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9fYnJpZGdlL2NvbXBvbmVudC1tYXBwZXIvY29tcG9uZW50LW1hcHBlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQW5ndWxhclBDb25uZWN0RGF0YSwgQW5ndWxhclBDb25uZWN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19icmlkZ2UvYW5ndWxhci1wY29ubmVjdCc7XG5pbXBvcnQgeyBEYXRhcGFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fc2VydmljZXMvZGF0YXBhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBnZXRSZWZlcmVuY2VMaXN0IH0gZnJvbSAnLi4vLi4vLi4vX2hlbHBlcnMvZmllbGQtZ3JvdXAtdXRpbHMnO1xuaW1wb3J0IHsgYnVpbGRGaWVsZHNGb3JUYWJsZSwgZmlsdGVyRGF0YUJ5Q29tbW9uRmllbGRzLCBmaWx0ZXJEYXRhQnlEYXRlLCBnZXRDb250ZXh0IH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IGV2YWx1YXRlQWxsb3dSb3dBY3Rpb24gfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uLy4uL19oZWxwZXJzL3V0aWxzJztcbmltcG9ydCB7IGdldFNlY29uZHMgfSBmcm9tICcuLi8uLi8uLi9faGVscGVycy9jb21tb24nO1xuXG5pbnRlcmZhY2UgU2ltcGxlVGFibGVNYW51YWxQcm9wcyB7XG4gIC8vIElmIGFueSwgZW50ZXIgYWRkaXRpb25hbCBwcm9wcyB0aGF0IG9ubHkgZXhpc3Qgb24gdGhpcyBjb21wb25lbnRcbiAgdmlzaWJpbGl0eT86IGJvb2xlYW47XG4gIGdyb3VwaW5nPzogYW55O1xuICByZWZlcmVuY2VMaXN0PzogYW55W107XG4gIGNoaWxkcmVuPzogYW55W107XG4gIHJlbmRlck1vZGU/OiBzdHJpbmc7XG4gIHByZXNldHM/OiBhbnlbXTtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIHNob3dMYWJlbD86IGJvb2xlYW47XG4gIGRhdGFQYWdlTmFtZT86IHN0cmluZztcbiAgY29udGV4dENsYXNzPzogc3RyaW5nO1xuICBwcm9wZXJ0eUxhYmVsPzogc3RyaW5nO1xuICBmaWVsZE1ldGFkYXRhPzogYW55O1xuICBhbGxvd0FjdGlvbnM/OiBhbnk7XG4gIGFsbG93VGFibGVFZGl0PzogYm9vbGVhbjtcbiAgYWxsb3dSb3dEZWxldGU/OiBhbnk7XG4gIGVkaXRNb2RlPzogc3RyaW5nO1xuICBhZGRBbmRFZGl0Um93c1dpdGhpbj86IGFueTtcbiAgdmlld0ZvckFkZEFuZEVkaXRNb2RhbD86IGFueTtcbiAgZWRpdE1vZGVDb25maWc/OiBhbnk7XG4gIGRpc3BsYXlNb2RlPzogc3RyaW5nO1xuICB1c2VTZXBhcmF0ZVZpZXdGb3JFZGl0OiBhbnk7XG4gIHZpZXdGb3JFZGl0TW9kYWw6IGFueTtcbiAgdGFyZ2V0Q2xhc3NMYWJlbDogc3RyaW5nO1xufVxuXG5jbGFzcyBHcm91cCB7XG4gIGxldmVsID0gMDtcbiAgcGFyZW50OiBHcm91cDtcbiAgZXhwYW5kZWQgPSB0cnVlO1xuICB0b3RhbENvdW50cyA9IDA7XG4gIGdldCB2aXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5wYXJlbnQgfHwgKHRoaXMucGFyZW50LnZpc2libGUgJiYgdGhpcy5wYXJlbnQuZXhwYW5kZWQpO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1zaW1wbGUtdGFibGUtbWFudWFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpbXBsZS10YWJsZS1tYW51YWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zaW1wbGUtdGFibGUtbWFudWFsLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0VGFibGVNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdFNvcnRNb2R1bGUsXG4gICAgTWF0TWVudU1vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0RGF0ZXBpY2tlck1vZHVsZSxcbiAgICBNYXRPcHRpb25Nb2R1bGUsXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIGZvcndhcmRSZWYoKCkgPT4gQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50KVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFNpbXBsZVRhYmxlTWFudWFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKE1hdFNvcnQpIHNvcnQ6IE1hdFNvcnQ7XG5cbiAgQElucHV0KCkgcENvbm4kOiB0eXBlb2YgUENvbm5lY3Q7XG4gIEBJbnB1dCgpIGZvcm1Hcm91cCQ6IEZvcm1Hcm91cDtcblxuICAvLyBVc2VkIHdpdGggQW5ndWxhclBDb25uZWN0XG4gIGFuZ3VsYXJQQ29ubmVjdERhdGE6IEFuZ3VsYXJQQ29ubmVjdERhdGEgPSB7fTtcbiAgY29uZmlnUHJvcHMkOiBTaW1wbGVUYWJsZU1hbnVhbFByb3BzO1xuICBmaWVsZHMkOiBhbnlbXTtcblxuICBiVmlzaWJsZSQgPSB0cnVlO1xuICBkaXNwbGF5ZWRDb2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xuICByb3dEYXRhOiBNYXRUYWJsZURhdGFTb3VyY2U8YW55PjtcbiAgb3JpZ2luYWxEYXRhOiBhbnlbXSA9IFtdO1xuICBwcm9jZXNzZWRGaWVsZHM6IGFueVtdID0gW107XG4gIGZpZWxkRGVmczogYW55W10gPSBbXTtcbiAgcmVxdWVzdGVkUmVhZE9ubHlNb2RlID0gZmFsc2U7XG4gIHJlYWRPbmx5TW9kZSA9IGZhbHNlO1xuICBlZGl0YWJsZU1vZGU6IGJvb2xlYW47XG4gIG1lbnVJY29uT3ZlcnJpZGUkOiBzdHJpbmc7XG4gIHBhZ2VSZWZlcmVuY2U6IHN0cmluZztcbiAgcmVmZXJlbmNlTGlzdDogYW55O1xuICBjb250ZXh0Q2xhc3M6IGFueTtcbiAgc2hvd0FkZFJvd0J1dHRvbjogYm9vbGVhbjtcbiAgcHJldlJlZmVyZW5jZUxpc3Q6IGFueVtdID0gW107XG4gIGVsZW1lbnRzRGF0YTogTWF0VGFibGVEYXRhU291cmNlPGFueT47XG4gIG9yaWdpbmFsRWxlbWVudHNEYXRhOiBNYXRUYWJsZURhdGFTb3VyY2U8YW55PjtcbiAgcmF3RmllbGRzOiBhbnk7XG4gIGxhYmVsPzogc3RyaW5nID0gJyc7XG4gIHNlYXJjaEljb24kOiBzdHJpbmc7XG5cbiAgYlNob3dTZWFyY2gkID0gZmFsc2U7XG4gIGJDb2x1bW5SZW9yZGVyJCA9IGZhbHNlO1xuICBiR3JvdXBpbmckID0gZmFsc2U7XG5cbiAgcGVyZkZpbHRlcjogc3RyaW5nO1xuICBzZWFyY2hGaWx0ZXI6IHN0cmluZztcblxuICBtZW51U3ZnSWNvbiQ6IHN0cmluZztcbiAgYXJyb3dTdmdJY29uJCA9ICcnO1xuICBhcnJvd0Rvd25TdmdJY29uJDogc3RyaW5nO1xuICBhcnJvd1VwU3ZnSWNvbiQ6IHN0cmluZztcblxuICBmaWx0ZXJTdmdJY29uJDogc3RyaW5nO1xuICBmaWx0ZXJPblN2Z0ljb24kOiBzdHJpbmc7XG4gIGdyb3VwQnlTdmdJY29uJDogc3RyaW5nO1xuXG4gIGdyb3VwQnlDb2x1bW5zJDogc3RyaW5nW10gPSBbXTtcbiAgY29tcGFyZVR5cGU6IHN0cmluZztcbiAgY29tcGFyZVJlZjogc3RyaW5nO1xuICBhcnJvd0RpcmVjdGlvbiA9ICdkb3duJztcbiAgZmlsdGVyQnlDb2x1bW5zOiBhbnlbXSA9IFtdO1xuICBjdXJyZW50RmlsdGVyUmVmRGF0YTogYW55O1xuICBmaWx0ZXJDb250YWluc0xhYmVsJCA9ICcnO1xuICBmaWx0ZXJDb250YWluc1R5cGUkID0gJ2NvbnRhaW5zJztcbiAgZmlsdGVyQ29udGFpbnNWYWx1ZSQ6IGFueTtcbiAgYlNob3dGaWx0ZXJQb3BvdmVyJCA9IGZhbHNlO1xuICBiQ29udGFpbnMkID0gdHJ1ZTtcbiAgYkRhdGVUaW1lJCA9IGZhbHNlO1xuXG4gIGJJc0RhdGUkID0gZmFsc2U7XG4gIGJJc0RhdGVUaW1lJCA9IGZhbHNlO1xuICBiSXNUaW1lJCA9IGZhbHNlO1xuICBjdXJyZW50RmlsdGVySW1hZ2VFbDogYW55O1xuXG4gIGFyRmlsdGVyTWFpbkJ1dHRvbnMkOiBhbnlbXSA9IFtdO1xuICBhckZpbHRlclNlY29uZGFyeUJ1dHRvbnMkOiBhbnlbXSA9IFtdO1xuICBzZWxlY3Rpb25Nb2RlOiBzdHJpbmc7XG4gIHNpbmdsZVNlbGVjdGlvbk1vZGU6IGJvb2xlYW47XG4gIG11bHRpU2VsZWN0aW9uTW9kZTogYm9vbGVhbjtcbiAgcm93SUQ6IGFueTtcbiAgcmVzcG9uc2U6IGFueTtcbiAgY29tcG9zaXRlS2V5czogYW55O1xuICBwYXJhbWV0ZXJzOiBhbnk7XG4gIGFsbG93RWRpdGluZ0luTW9kYWwgPSBmYWxzZTtcbiAgZGVmYXVsdFZpZXc6IGFueTtcbiAgcmVmZXJlbmNlTGlzdFN0cjogYW55O1xuICBiVXNlU2VwYXJhdGVWaWV3Rm9yRWRpdDogYW55O1xuICBlZGl0VmlldzogYW55O1xuICBzZXR0aW5nc1N2Z0ljb24kOiBzdHJpbmc7XG5cbiAgaXNJbml0aWFsaXplZCA9IGZhbHNlO1xuICB0YXJnZXRDbGFzc0xhYmVsOiBzdHJpbmc7XG4gIGxvY2FsaXplZFZhbCA9IFBDb3JlLmdldExvY2FsZVV0aWxzKCkuZ2V0TG9jYWxlVmFsdWU7XG4gIGxvY2FsZUNhdGVnb3J5ID0gJ1NpbXBsZVRhYmxlJztcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhbmd1bGFyUENvbm5lY3Q6IEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UsXG4gICAgcHVibGljIHV0aWxzOiBVdGlscyxcbiAgICBwcml2YXRlIGRhdGFQYWdlU2VydmljZTogRGF0YXBhZ2VTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmVsZW1lbnRzRGF0YSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2U8YW55PihbXSk7XG4gICAgdGhpcy5pc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAvLyBGaXJzdCB0aGluZyBpbiBpbml0aWFsaXphdGlvbiBpcyByZWdpc3RlcmluZyBhbmQgc3Vic2NyaWJpbmcgdG8gdGhlIEFuZ3VsYXJQQ29ubmVjdCBzZXJ2aWNlXG4gICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhID0gdGhpcy5hbmd1bGFyUENvbm5lY3QucmVnaXN0ZXJBbmRTdWJzY3JpYmVDb21wb25lbnQodGhpcywgdGhpcy5vblN0YXRlQ2hhbmdlKTtcbiAgICB0aGlzLmNvbmZpZ1Byb3BzJCA9IHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCkgYXMgU2ltcGxlVGFibGVNYW51YWxQcm9wcztcbiAgICAvLyBUaGVuLCBjb250aW51ZSBvbiB3aXRoIG90aGVyIGluaXRpYWxpemF0aW9uXG4gICAgdGhpcy5tZW51SWNvbk92ZXJyaWRlJCA9IHRoaXMudXRpbHMuZ2V0SW1hZ2VTcmMoJ3RyYXNoJywgdGhpcy51dGlscy5nZXRTREtTdGF0aWNDb250ZW50VXJsKCkpO1xuICAgIC8vIGNhbGwgY2hlY2tBbmRVcGRhdGUgd2hlbiBpbml0aWFsaXppbmdcbiAgICB0aGlzLmNoZWNrQW5kVXBkYXRlKCk7XG4gICAgdGhpcy5maWx0ZXJTdmdJY29uJCA9IHRoaXMudXRpbHMuZ2V0SW1hZ2VTcmMoJ2ZpbHRlcicsIHRoaXMudXRpbHMuZ2V0U0RLU3RhdGljQ29udGVudFVybCgpKTtcbiAgICB0aGlzLmZpbHRlck9uU3ZnSWNvbiQgPSB0aGlzLnV0aWxzLmdldEltYWdlU3JjKCdmaWx0ZXItb24nLCB0aGlzLnV0aWxzLmdldFNES1N0YXRpY0NvbnRlbnRVcmwoKSk7XG4gICAgdGhpcy5ncm91cEJ5U3ZnSWNvbiQgPSB0aGlzLnV0aWxzLmdldEltYWdlU3JjKCdyb3cnLCB0aGlzLnV0aWxzLmdldFNES1N0YXRpY0NvbnRlbnRVcmwoKSk7XG4gICAgdGhpcy5iR3JvdXBpbmckID0gdGhpcy51dGlscy5nZXRCb29sZWFuVmFsdWUodGhpcy5jb25maWdQcm9wcyQuZ3JvdXBpbmcpO1xuICAgIHRoaXMubWVudVN2Z0ljb24kID0gdGhpcy51dGlscy5nZXRJbWFnZVNyYygnbW9yZScsIHRoaXMudXRpbHMuZ2V0U0RLU3RhdGljQ29udGVudFVybCgpKTtcblxuICAgIHRoaXMuYXJGaWx0ZXJNYWluQnV0dG9ucyQucHVzaCh7IGFjdGlvbklEOiAnc3VibWl0JywganNBY3Rpb246ICdzdWJtaXQnLCBuYW1lOiAnU3VibWl0JyB9KTtcbiAgICB0aGlzLmFyRmlsdGVyU2Vjb25kYXJ5QnV0dG9ucyQucHVzaCh7IGFjdGlvbklEOiAnY2FuY2VsJywganNBY3Rpb246ICdjYW5jZWwnLCBuYW1lOiAnQ2FuY2VsJyB9KTtcblxuICAgIHRoaXMuc2VhcmNoSWNvbiQgPSB0aGlzLnV0aWxzLmdldEltYWdlU3JjKCdzZWFyY2gnLCB0aGlzLnV0aWxzLmdldFNES1N0YXRpY0NvbnRlbnRVcmwoKSk7XG5cbiAgICB0aGlzLnNldHRpbmdzU3ZnSWNvbiQgPSB0aGlzLnV0aWxzLmdldEltYWdlU3JjKCdtb3JlJywgdGhpcy51dGlscy5nZXRTREtTdGF0aWNDb250ZW50VXJsKCkpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKSB7XG4gICAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbigpO1xuICAgIH1cbiAgfVxuXG4gIGNoZWNrQW5kVXBkYXRlKCkge1xuICAgIC8vIFNob3VsZCBhbHdheXMgY2hlY2sgdGhlIGJyaWRnZSB0byBzZWUgaWYgdGhlIGNvbXBvbmVudCBzaG91bGRcbiAgICAvLyB1cGRhdGUgaXRzZWxmIChyZS1yZW5kZXIpXG4gICAgY29uc3QgYlVwZGF0ZVNlbGYgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5zaG91bGRDb21wb25lbnRVcGRhdGUodGhpcyk7XG5cbiAgICAvLyBPTkxZIGNhbGwgdXBkYXRlU2VsZiB3aGVuIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZVxuICAgIGlmIChiVXBkYXRlU2VsZikge1xuICAgICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gdXBkYXRlU2VsZlxuICB1cGRhdGVTZWxmKCk6IHZvaWQge1xuICAgIC8vIG1vdmVkIHRoaXMgZnJvbSBuZ09uSW5pdCgpIGFuZCBjYWxsIHRoaXMgZnJvbSB0aGVyZSBpbnN0ZWFkLi4uXG4gICAgdGhpcy5jb25maWdQcm9wcyQgPSB0aGlzLnBDb25uJC5yZXNvbHZlQ29uZmlnUHJvcHModGhpcy5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKSkgYXMgU2ltcGxlVGFibGVNYW51YWxQcm9wcztcblxuICAgIGlmICh0aGlzLmNvbmZpZ1Byb3BzJC52aXNpYmlsaXR5ICE9IG51bGwpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tdWx0aS1hc3NpZ25cbiAgICAgIHRoaXMuYlZpc2libGUkID0gdGhpcy5iVmlzaWJsZSQgPSB0aGlzLnV0aWxzLmdldEJvb2xlYW5WYWx1ZSh0aGlzLmNvbmZpZ1Byb3BzJC52aXNpYmlsaXR5KTtcbiAgICB9XG5cbiAgICAvLyBOT1RFOiBnZXRDb25maWdQcm9wcygpIGhhcyBlYWNoIGNoaWxkLmNvbmZpZyB3aXRoIGRhdGFzb3VyY2UgYW5kIHZhbHVlIHVuZGVmaW5lZFxuICAgIC8vICBidXQgZ2V0UmF3TWV0YWRhdGEoKSBoYXMgZWFjaCBjaGlsZC5jb25maWcgd2l0aCBkYXRhc291cmNlIGFuZCB2YWx1ZSBzaG93aW5nIHRoZWlyIHVucmVzb2x2ZWQgdmFsdWVzIChleDogXCJAUCB0aGVQcm9wTmFtZVwiKVxuICAgIC8vICBXZSBuZWVkIHRvIHVzZSB0aGUgcHJvcCBuYW1lIGFzIHRoZSBcImdsdWVcIiB0byB0aWUgdGhlIEFuZ3VsYXIgTWF0ZXJpYWwgdGFibGUgZGF0YVNvdXJjZSwgZGlzcGxheUNvbHVtbnMgYW5kIGRhdGEgdG9nZXRoZXIuXG4gICAgLy8gIFNvLCBpbiB0aGUgY29kZSBiZWxvdywgd2UnbGwgdXNlIHRoZSB1bnJlc29sdmVkIGNvbmZpZy52YWx1ZSAoYnV0IHJlcGxhY2luZyB0aGUgc3BhY2Ugd2l0aCBhbiB1bmRlcnNjb3JlIHRvIGtlZXAgdGhpbmdzIGhhcHB5KVxuICAgIGNvbnN0IHJhd01ldGFkYXRhID0gdGhpcy5wQ29ubiQuZ2V0UmF3TWV0YWRhdGEoKTtcblxuICAgIC8vIEFkYXB0ZWQgZnJvbSBOZWJ1bGFcbiAgICBjb25zdCB7XG4gICAgICByZWZlcmVuY2VMaXN0ID0gW10sIC8vIGlmIHJlZmVyZW5jZUxpc3Qgbm90IGluIGNvbmZpZ1Byb3BzJCwgZGVmYXVsdCB0byBlbXB5IGxpc3RcbiAgICAgIHJlbmRlck1vZGUsXG4gICAgICBjaGlsZHJlbiwgLy8gZGVzdHJ1Y3R1cmUgY2hpbGRyZW4gaW50byBhbiBhcnJheSB2YXI6IFwicmVzb2x2ZWRGaWVsZHNcIlxuICAgICAgcHJlc2V0cyxcbiAgICAgIGFsbG93QWN0aW9ucyxcbiAgICAgIGFsbG93VGFibGVFZGl0LFxuICAgICAgYWxsb3dSb3dEZWxldGUsXG4gICAgICBsYWJlbDogbGFiZWxQcm9wLFxuICAgICAgcHJvcGVydHlMYWJlbCxcbiAgICAgIGZpZWxkTWV0YWRhdGEsXG4gICAgICBlZGl0TW9kZSxcbiAgICAgIGFkZEFuZEVkaXRSb3dzV2l0aGluLFxuICAgICAgdmlld0ZvckFkZEFuZEVkaXRNb2RhbCxcbiAgICAgIGVkaXRNb2RlQ29uZmlnLFxuICAgICAgZGlzcGxheU1vZGUsXG4gICAgICB1c2VTZXBhcmF0ZVZpZXdGb3JFZGl0LFxuICAgICAgdmlld0ZvckVkaXRNb2RhbCxcbiAgICAgIHRhcmdldENsYXNzTGFiZWxcbiAgICB9ID0gdGhpcy5jb25maWdQcm9wcyQ7XG5cbiAgICBjb25zdCBzaW1wbGVUYWJsZU1hbnVhbFByb3BzOiBhbnkgPSB7fTtcbiAgICBpZiAodGhpcy5jaGVja0lmQWxsb3dBY3Rpb25zT3JSb3dFZGl0aW5nRXhpc3QoYWxsb3dBY3Rpb25zKSAmJiBlZGl0TW9kZSkge1xuICAgICAgc2ltcGxlVGFibGVNYW51YWxQcm9wcy5oaWRlQWRkUm93ID0gYWxsb3dBY3Rpb25zPy5hbGxvd0FkZCA9PT0gZmFsc2U7XG4gICAgICBzaW1wbGVUYWJsZU1hbnVhbFByb3BzLmhpZGVEZWxldGVSb3cgPSBhbGxvd0FjdGlvbnM/LmFsbG93RGVsZXRlID09PSBmYWxzZTtcbiAgICAgIHNpbXBsZVRhYmxlTWFudWFsUHJvcHMuaGlkZUVkaXRSb3cgPSBhbGxvd0FjdGlvbnM/LmFsbG93RWRpdCA9PT0gZmFsc2U7XG4gICAgICBzaW1wbGVUYWJsZU1hbnVhbFByb3BzLmRpc2FibGVEcmFnRHJvcCA9IGFsbG93QWN0aW9ucz8uYWxsb3dEcmFnRHJvcCA9PT0gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChhbGxvd1RhYmxlRWRpdCA9PT0gZmFsc2UpIHtcbiAgICAgIHNpbXBsZVRhYmxlTWFudWFsUHJvcHMuaGlkZUFkZFJvdyA9IHRydWU7XG4gICAgICBzaW1wbGVUYWJsZU1hbnVhbFByb3BzLmhpZGVEZWxldGVSb3cgPSB0cnVlO1xuICAgICAgc2ltcGxlVGFibGVNYW51YWxQcm9wcy5kaXNhYmxlRHJhZ0Ryb3AgPSB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMucmVmZXJlbmNlTGlzdFN0ciA9IGdldENvbnRleHQodGhpcy5wQ29ubiQpLnJlZmVyZW5jZUxpc3RTdHI7XG4gICAgdGhpcy5sYWJlbCA9IGxhYmVsUHJvcCB8fCBwcm9wZXJ0eUxhYmVsO1xuICAgIHRoaXMucGFyYW1ldGVycyA9IGZpZWxkTWV0YWRhdGE/LmRhdGFzb3VyY2U/LnBhcmFtZXRlcnM7XG4gICAgdGhpcy50YXJnZXRDbGFzc0xhYmVsID0gdGFyZ2V0Q2xhc3NMYWJlbDtcbiAgICBsZXQgeyBjb250ZXh0Q2xhc3MgfSA9IHRoaXMuY29uZmlnUHJvcHMkO1xuICAgIHRoaXMucmVmZXJlbmNlTGlzdCA9IHJlZmVyZW5jZUxpc3Q7XG4gICAgaWYgKCFjb250ZXh0Q2xhc3MpIHtcbiAgICAgIGxldCBsaXN0TmFtZSA9IHRoaXMucENvbm4kLmdldENvbXBvbmVudENvbmZpZygpLnJlZmVyZW5jZUxpc3Q7XG4gICAgICBsaXN0TmFtZSA9IFBDb3JlLmdldEFubm90YXRpb25VdGlscygpLmdldFByb3BlcnR5TmFtZShsaXN0TmFtZSk7XG4gICAgICBjb250ZXh0Q2xhc3MgPSB0aGlzLnBDb25uJC5nZXRGaWVsZE1ldGFkYXRhKGxpc3ROYW1lKT8ucGFnZUNsYXNzO1xuICAgIH1cbiAgICB0aGlzLmNvbnRleHRDbGFzcyA9IGNvbnRleHRDbGFzcztcblxuICAgIGNvbnN0IHJlc29sdmVkRmllbGRzID0gY2hpbGRyZW4/LlswXT8uY2hpbGRyZW4gfHwgcHJlc2V0cz8uWzBdLmNoaWxkcmVuPy5bMF0uY2hpbGRyZW47XG4gICAgLy8gZ2V0IHJhdyBjb25maWcgYXMgQFAgYW5kIG90aGVyIGFubm90YXRpb25zIGFyZSBwcm9jZXNzZWQgYW5kIGRvbid0IGFwcGVhciBpbiB0aGUgcmVzb2x2ZWQgY29uZmlnLlxuICAgIC8vICBEZXN0cnVjdHVyZSBcInJhd1wiIGNoaWxkcmVuIGludG8gYXJyYXkgdmFyOiBcInJhd0ZpZWxkc1wiXG4gICAgLy8gIE5PVEU6IHdoZW4gY29uZmlnLmxpc3RUeXBlID09IFwiYXNzb2NpYXRlZFwiLCB0aGUgcHJvcGVydHkgY2FuIGJlIGZvdW5kIGluIGVpdGhlclxuICAgIC8vICAgIGNvbmZpZy52YWx1ZSAoZXg6IFwiQFAgLkRlY2xhcmFudENob2ljZVwiKSBvclxuICAgIC8vICAgIGNvbmZpZy5kYXRhc291cmNlIChleDogXCJAQVNTT0NJQVRFRCAuRGVjbGFyYW50Q2hvaWNlXCIpXG4gICAgLy8gIE5laXRoZXIgb2YgdGhlc2UgYXBwZWFyIGluIHRoZSByZXNvbHZlZCAodGhpcy5jb25maWdQcm9wcyQpXG4gICAgY29uc3QgcmF3Q29uZmlnOiBhbnkgPSByYXdNZXRhZGF0YT8uY29uZmlnO1xuICAgIGNvbnN0IHJhd0ZpZWxkcyA9IHJhd0NvbmZpZz8uY2hpbGRyZW4/LlswXT8uY2hpbGRyZW4gfHwgcmF3Q29uZmlnPy5wcmVzZXRzPy5bMF0uY2hpbGRyZW4/LlswXT8uY2hpbGRyZW47XG4gICAgdGhpcy5yYXdGaWVsZHMgPSByYXdGaWVsZHM7XG4gICAgLy8gQXQgdGhpcyBwb2ludCwgZmllbGRzIGhhcyByZXNvbHZlZEZpZWxkcyBhbmQgcmF3RmllbGRzIHdlIGNhbiB1c2VcblxuICAgIC8vIHN0YXJ0IG9mIGZyb20gTmVidWxhXG4gICAgLy8gZ2V0IGNvbnRleHQgbmFtZSBhbmQgcmVmZXJlbmNlTGlzdCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gcHJlcGFyZSBjb25maWcgb2YgUENvbm5lY3RcbiAgICAvLyBjb25zdCB7IGNvbnRleHROYW1lLCByZWZlcmVuY2VMaXN0U3RyLCBwYWdlUmVmZXJlbmNlRm9yUm93cyB9ID0gZ2V0Q29udGV4dCh0aGlzLnBDb25uJCk7XG5cbiAgICBjb25zdCByZXNvbHZlZExpc3QgPSBnZXRSZWZlcmVuY2VMaXN0KHRoaXMucENvbm4kKTtcbiAgICB0aGlzLnBhZ2VSZWZlcmVuY2UgPSBgJHt0aGlzLnBDb25uJC5nZXRQYWdlUmVmZXJlbmNlKCl9JHtyZXNvbHZlZExpc3R9YDtcbiAgICB0aGlzLnBDb25uJC5zZXRSZWZlcmVuY2VMaXN0KHJlc29sdmVkTGlzdCk7XG5cbiAgICAvLyBUaGlzIGdpdmVzIHVwIHRoZSBcInByb3BlcnRpZXNcIiB3ZSBuZWVkIHRvIG1hcCB0byByb3cvY29sdW1uIHZhbHVlcyBsYXRlclxuICAgIC8vIGNvbnN0IHByb2Nlc3NlZERhdGEgPSBwb3B1bGF0ZVJvd0tleShyZWZlcmVuY2VMaXN0KTtcblxuICAgIHRoaXMucmVxdWVzdGVkUmVhZE9ubHlNb2RlID0gcmVuZGVyTW9kZSA9PT0gJ1JlYWRPbmx5JztcbiAgICB0aGlzLnJlYWRPbmx5TW9kZSA9IHJlbmRlck1vZGUgPT09ICdSZWFkT25seSc7XG4gICAgdGhpcy5lZGl0YWJsZU1vZGUgPSByZW5kZXJNb2RlID09PSAnRWRpdGFibGUnO1xuICAgIGNvbnN0IGlzRGlzcGxheU1vZGVFbmFibGVkID0gZGlzcGxheU1vZGUgPT09ICdESVNQTEFZX09OTFknO1xuICAgIHRoaXMuc2hvd0FkZFJvd0J1dHRvbiA9ICF0aGlzLnJlYWRPbmx5TW9kZSAmJiAhc2ltcGxlVGFibGVNYW51YWxQcm9wcy5oaWRlQWRkUm93O1xuICAgIHRoaXMuYWxsb3dFZGl0aW5nSW5Nb2RhbCA9XG4gICAgICAoZWRpdE1vZGUgPyBlZGl0TW9kZSA9PT0gJ21vZGFsJyA6IGFkZEFuZEVkaXRSb3dzV2l0aGluID09PSAnbW9kYWwnKSAmJiAhKHJlbmRlck1vZGUgPT09ICdSZWFkT25seScgfHwgaXNEaXNwbGF5TW9kZUVuYWJsZWQpO1xuICAgIGNvbnN0IHNob3dEZWxldGVCdXR0b24gPSB0aGlzLmVkaXRhYmxlTW9kZSAmJiAhc2ltcGxlVGFibGVNYW51YWxQcm9wcy5oaWRlRGVsZXRlUm93ICYmIGV2YWx1YXRlQWxsb3dSb3dBY3Rpb24oYWxsb3dSb3dEZWxldGUsIHRoaXMucm93RGF0YSk7XG4gICAgdGhpcy5kZWZhdWx0VmlldyA9IGVkaXRNb2RlQ29uZmlnID8gZWRpdE1vZGVDb25maWcuZGVmYXVsdFZpZXcgOiB2aWV3Rm9yQWRkQW5kRWRpdE1vZGFsO1xuICAgIHRoaXMuYlVzZVNlcGFyYXRlVmlld0ZvckVkaXQgPSBlZGl0TW9kZUNvbmZpZyA/IGVkaXRNb2RlQ29uZmlnLnVzZVNlcGFyYXRlVmlld0ZvckVkaXQgOiB1c2VTZXBhcmF0ZVZpZXdGb3JFZGl0O1xuICAgIHRoaXMuZWRpdFZpZXcgPSBlZGl0TW9kZUNvbmZpZyA/IGVkaXRNb2RlQ29uZmlnLmVkaXRWaWV3IDogdmlld0ZvckVkaXRNb2RhbDtcbiAgICAvLyBjb25zdCBzaG93RGVsZXRlQnV0dG9uID0gIXRoaXMucmVhZE9ubHlNb2RlICYmICFoaWRlRGVsZXRlUm93O1xuXG4gICAgLy8gTmVidWxhIGhhcyBvdGhlciBoYW5kbGluZyBmb3IgaXNSZWFkT25seU1vZGUgYnV0IGhhcyBDb3Ntb3Mtc3BlY2lmaWMgY29kZVxuICAgIC8vICBzbyBpZ25vcmluZyB0aGF0IGZvciBub3cuLi5cbiAgICAvLyBmaWVsZERlZnMgd2lsbCBiZSBhbiBhcnJheSB3aGVyZSBlYWNoIGVudHJ5IHdpbGwgaGF2ZSBhIFwibmFtZVwiIHdoaWNoIHdpbGwgYmUgdGhlXG4gICAgLy8gIFwicmVzb2x2ZWRcIiBwcm9wZXJ0eSBuYW1lICh0aGF0IHdlIGNhbiB1c2UgYXMgdGhlIGNvbElkKSB0aG91Z2ggaXQncyBub3QgcmVhbGx5XG4gICAgLy8gIHJlc29sdmVkLiBUaGUgYnVpbGRGaWVsZHNGb3JUYWJsZSBoZWxwZXIganVzdCByZW1vdmVzIHRoZSBcIkBQIFwiICh3aGljaCBpcyB3aGF0XG4gICAgLy8gIE5lYnVsYSBkb2VzKS4gSXQgd2lsbCBhbHNvIGhhdmUgdGhlIFwibGFiZWxcIiwgYW5kIFwibWV0YVwiIGNvbnRhaW5zIHRoZSBvcmlnaW5hbCxcbiAgICAvLyAgdW5jaGFuZ2VkIGNvbmZpZyBpbmZvLiBGb3Igbm93LCBtdWNoIG9mIHRoZSBpbmZvIGhlcmUgaXMgY2FycmllZCBvdmVyIGZyb21cbiAgICAvLyAgTmVidWxhIGFuZCB3ZSBtYXkgbm90IGVuZCB1cCB1c2luZyBpdCBhbGwuXG4gICAgdGhpcy5maWVsZERlZnMgPSBidWlsZEZpZWxkc0ZvclRhYmxlKHJhd0ZpZWxkcywgcmVzb2x2ZWRGaWVsZHMsIHNob3dEZWxldGVCdXR0b24pO1xuXG4gICAgdGhpcy5pbml0aWFsaXplRGVmYXVsdFBhZ2VJbnN0cnVjdGlvbnMoKTtcblxuICAgIC8vIGVuZCBvZiBmcm9tIE5lYnVsYVxuXG4gICAgLy8gSGVyZSwgd2UgdXNlIHRoZSBcIm5hbWVcIiBmaWVsZCBpbiBmaWVsZERlZnMgc2luY2UgdGhhdCBoYXMgdGhlIGFzc29pY2F0ZWQgcHJvcGVydHlcbiAgICAvLyAgKGlmIG9uZSBleGlzdHMgZm9yIHRoZSBmaWVsZCkuIElmIG5vIFwibmFtZVwiLCB1c2UgXCJjZWxsUmVuZGVyZXJcIiAodHlwaWNhbGx5IGdldCBERUxFVEVfSUNPTilcbiAgICAvLyAgZm9yIG91ciBjb2x1bW5zLlxuICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IHRoaXMuZmllbGREZWZzPy5tYXAoZmllbGQgPT4ge1xuICAgICAgcmV0dXJuIGZpZWxkLm5hbWUgPyBmaWVsZC5uYW1lIDogZmllbGQuY2VsbFJlbmRlcmVyO1xuICAgIH0pO1xuXG4gICAgLy8gQW5kIG5vdyB3ZSBjYW4gcHJvY2VzcyB0aGUgcmVzb2x2ZWRGaWVsZHMgdG8gYWRkIGluIHRoZSBcIm5hbWVcIlxuICAgIC8vICBmcm9tIGZyb20gdGhlIGZpZWxkRGVmcy4gVGhpcyBcIm5hbWVcIiBpcyB0aGUgdmFsdWUgdGhhdFxuICAgIC8vICB3ZSdsbCBzaGFyZSB0byBjb25uZWN0IHRoaW5ncyB0b2dldGhlciBpbiB0aGUgdGFibGUuXG5cbiAgICB0aGlzLnByb2Nlc3NlZEZpZWxkcyA9IFtdO1xuXG4gICAgdGhpcy5wcm9jZXNzZWRGaWVsZHMgPSByZXNvbHZlZEZpZWxkcy5tYXAoKGZpZWxkLCBpKSA9PiB7XG4gICAgICBmaWVsZC5jb25maWcubmFtZSA9IHRoaXMuZGlzcGxheWVkQ29sdW1uc1tpXTsgLy8gLmNvbmZpZ1tcInZhbHVlXCJdLnJlcGxhY2UoLyAuL2csXCJfXCIpOyAgIC8vIHJlcGxhY2Ugc3BhY2UgZG90IHdpdGggdW5kZXJzY29yZVxuICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH0pO1xuXG4gICAgLy8gZm9yIGFkZGluZyByb3dzIHRvIHRhYmxlIHdoZW4gZWRpdGFibGUgYW5kIG5vdCBtb2RhbCB2aWV3XG4gICAgaWYgKHRoaXMucHJldlJlZmVyZW5jZUxpc3QubGVuZ3RoICE9PSB0aGlzLnJlZmVyZW5jZUxpc3QubGVuZ3RoKSB7XG4gICAgICB0aGlzLmJ1aWxkRWxlbWVudHNGb3JUYWJsZSgpO1xuICAgIH1cblxuICAgIC8vIGZvciBlZGl0IGFuZCBhZGRpbmcgcm93cyBpbiBtb2RhbCB2aWV3IGFuZCB0byBnZW5lcmF0ZSByZWFkb25seSBsaXN0XG4gICAgaWYgKCFpc0VxdWFsKHRoaXMucHJldlJlZmVyZW5jZUxpc3QsIHRoaXMucmVmZXJlbmNlTGlzdCkgJiYgKHRoaXMucmVhZE9ubHlNb2RlIHx8IHRoaXMuYWxsb3dFZGl0aW5nSW5Nb2RhbCkpIHtcbiAgICAgIHRoaXMuZ2VuZXJhdGVSb3dzRGF0YSgpO1xuICAgIH1cblxuICAgIHRoaXMucHJldlJlZmVyZW5jZUxpc3QgPSB0aGlzLnJlZmVyZW5jZUxpc3Q7XG5cbiAgICAvLyBUaGVzZSBhcmUgdGhlIGRhdGEgc3RydWN0dXJlcyByZWZlcnJlZCB0byBpbiB0aGUgaHRtbCBmaWxlLlxuICAgIC8vICBUaGVzZSBhcmUgdGhlIHJlbGF0aW9uc2hpcHMgdGhhdCBtYWtlIHRoZSB0YWJsZSB3b3JrXG4gICAgLy8gIGRpc3BsYXllZENvbHVtbnM6IGtleS92YWx1ZSBwYWlycyB3aGVyZSBrZXkgaXMgb3JkZXIgb2YgY29sdW1uIGFuZFxuICAgIC8vICAgIHZhbHVlIGlzIHRoZSBwcm9wZXJ0eSBzaG93biBpbiB0aGF0IGNvbHVtbi4gRXg6IDE6IFwiRmlyc3ROYW1lXCJcbiAgICAvLyAgcHJvY2Vzc2VkRmllbGRzOiBrZXkvdmFsdWUgcGFpcnMgd2hlcmUgZWFjaCBrZXkgaXMgb3JkZXIgb2YgY29sdW1uXG4gICAgLy8gICAgYW5kIGVhY2ggdmFsdWUgaXMgYW4gb2JqZWN0IG9mIG1vcmUgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgdGhhdFxuICAgIC8vICAgIGNvbHVtbi5cbiAgICAvLyAgcm93RGF0YTogYXJyYXkgb2YgZWFjaCByb3cncyBrZXkvdmFsdWUgcGFpcnMuIEluc2lkZSBlYWNoIHJvdyxcbiAgICAvLyAgICBlYWNoIGtleSBpcyBhbiBlbnRyeSBpbiBkaXNwbGF5ZWRDb2x1bW5zOiBleDogXCJGaXJzdE5hbWVcIjogXCJDaGFybGVzXCJcbiAgICAvLyAgICBFeDogeyAxOiB7Y29uZmlnOiB7bGFiZWw6IFwiRmlyc3QgTmFtZVwiLCByZWFkT25seTogdHJ1ZTogbmFtZTogXCJGaXJzdE5hbWVcIn19LCB0eXBlOiBcIlRleHRJbnB1dFwiIH1cbiAgICAvLyAgICBUaGUgXCJ0eXBlXCIgaW5kaWNhdGVzIHRoZSB0eXBlIG9mIGNvbXBvbmVudCB0aGF0IHNob3VsZCBiZSB1c2VkIGZvciBlZGl0aW5nICh3aGVuIGVkaXRpbmcgaXMgZW5hYmxlZClcbiAgICAvL1xuICAgIC8vICBOb3RlIHRoYXQgdGhlIFwicHJvcGVydHlcIiBzaG93biBpbiB0aGUgY29sdW1uIChcIkZpcnN0TmFtZVwiIGluIHRoZSBhYm92ZSBleGFtcGxlcykgaXMgd2hhdFxuICAgIC8vICB0aWVzIHRoZSAzIGRhdGEgc3RydWN0dXJlcyB0b2dldGhlci5cbiAgfVxuXG4gIGNoZWNrSWZBbGxvd0FjdGlvbnNPclJvd0VkaXRpbmdFeGlzdChuZXdmbGFnb2JqZWN0KSB7XG4gICAgcmV0dXJuIChuZXdmbGFnb2JqZWN0ICYmIE9iamVjdC5rZXlzKG5ld2ZsYWdvYmplY3QpLmxlbmd0aCA+IDApIHx8IHRoaXMucENvbm4kLmdldENvbXBvbmVudENvbmZpZygpLmFsbG93Um93RWRpdDtcbiAgfVxuXG4gIGluaXRpYWxpemVEZWZhdWx0UGFnZUluc3RydWN0aW9ucygpIHtcbiAgICBpZiAodGhpcy5pc0luaXRpYWxpemVkKSB7XG4gICAgICB0aGlzLmlzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICAgIGlmICh0aGlzLmFsbG93RWRpdGluZ0luTW9kYWwpIHtcbiAgICAgICAgdGhpcy5wQ29ubiQuZ2V0TGlzdEFjdGlvbnMoKS5pbml0RGVmYXVsdFBhZ2VJbnN0cnVjdGlvbnMoXG4gICAgICAgICAgdGhpcy5wQ29ubiQuZ2V0UmVmZXJlbmNlTGlzdCgpLFxuICAgICAgICAgIHRoaXMuZmllbGREZWZzLmZpbHRlcihpdGVtID0+IGl0ZW0ubmFtZSkubWFwKGl0ZW0gPT4gaXRlbS5uYW1lKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZSAtIEFuIGFyZ3VtZW50IGZvciAncHJvcGVydHlOYW1lcycgd2FzIG5vdCBwcm92aWRlZC5cbiAgICAgICAgdGhpcy5wQ29ubiQuZ2V0TGlzdEFjdGlvbnMoKS5pbml0RGVmYXVsdFBhZ2VJbnN0cnVjdGlvbnModGhpcy5wQ29ubiQuZ2V0UmVmZXJlbmNlTGlzdCgpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRSZXN1bHRzVGV4dCgpIHtcbiAgICBjb25zdCByZWNvcmRzQ291bnQgPSB0aGlzLnJlYWRPbmx5TW9kZSA/IHRoaXMucm93RGF0YT8uZGF0YS5sZW5ndGggOiB0aGlzLnJlZmVyZW5jZUxpc3Q/Lmxlbmd0aDtcbiAgICByZXR1cm4gYCR7cmVjb3Jkc0NvdW50IHx8IDB9IHJlc3VsdCR7cmVjb3Jkc0NvdW50ID4gMSA/ICdzJyA6ICcnfWA7XG4gIH1cblxuICBzb3J0Q29tcGFyZShhLCBiKTogbnVtYmVyIHtcbiAgICBsZXQgYVZhbHVlID0gYVswXVt0aGlzLmNvbXBhcmVSZWZdO1xuICAgIGxldCBiVmFsdWUgPSBiWzBdW3RoaXMuY29tcGFyZVJlZl07XG5cbiAgICBpZiAodGhpcy5jb21wYXJlVHlwZSA9PSAnRGF0ZScgfHwgdGhpcy5jb21wYXJlVHlwZSA9PSAnRGF0ZVRpbWUnKSB7XG4gICAgICBhVmFsdWUgPSBnZXRTZWNvbmRzKGFWYWx1ZSk7XG4gICAgICBiVmFsdWUgPSBnZXRTZWNvbmRzKGJWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29tcGFyZVJlZiA9PSAncHhSZWZPYmplY3RJbnNOYW1lJykge1xuICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5jb21wYXJlQnlDb2x1bW5QeFJlZk9iamVjdEluc05hbWUoYVZhbHVlLCBiVmFsdWUpO1xuICAgICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy9cbiAgICBzd2l0Y2ggKHRoaXMuYXJyb3dEaXJlY3Rpb24pIHtcbiAgICAgIGNhc2UgJ3VwJzpcbiAgICAgICAgaWYgKCFhVmFsdWUgfHwgYVZhbHVlIDwgYlZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIGlmICghYlZhbHVlIHx8IGFWYWx1ZSA+IGJWYWx1ZSkge1xuICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZG93bic6XG4gICAgICAgIGlmICghYlZhbHVlIHx8IGFWYWx1ZSA+IGJWYWx1ZSkge1xuICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWFWYWx1ZSB8fCBhVmFsdWUgPCBiVmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiAwO1xuICB9XG5cbiAgY29tcGFyZUJ5Q29sdW1uUHhSZWZPYmplY3RJbnNOYW1lKGFWYWx1ZSwgYlZhbHVlKSB7XG4gICAgY29uc3QgcHJlZml4WCA9IGFWYWx1ZS5zcGxpdCgnLScpO1xuICAgIGNvbnN0IHByZWZpeFkgPSBiVmFsdWUuc3BsaXQoJy0nKTtcbiAgICBzd2l0Y2ggKHRoaXMuYXJyb3dEaXJlY3Rpb24pIHtcbiAgICAgIGNhc2UgJ3VwJzpcbiAgICAgICAgaWYgKHByZWZpeFhbMF0gIT09IHByZWZpeFlbMF0pIHtcbiAgICAgICAgICBpZiAocHJlZml4WFswXSA8IHByZWZpeFlbMF0pIHJldHVybiAtMTtcbiAgICAgICAgICBpZiAocHJlZml4WFswXSA+IHByZWZpeFlbMF0pIHJldHVybiAxO1xuICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwcmVmaXhYWzFdIC0gcHJlZml4WVsxXTtcbiAgICAgIGNhc2UgJ2Rvd24nOlxuICAgICAgICBpZiAocHJlZml4WFswXSAhPT0gcHJlZml4WVswXSkge1xuICAgICAgICAgIGlmIChwcmVmaXhYWzBdID4gcHJlZml4WVswXSkgcmV0dXJuIC0xO1xuICAgICAgICAgIGlmIChwcmVmaXhYWzBdIDwgcHJlZml4WVswXSkgcmV0dXJuIDE7XG4gICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHByZWZpeFlbMV0gLSBwcmVmaXhYWzFdO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHVwZGF0ZUZpbHRlckRpc3BsYXkodHlwZSkge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnRGF0ZSc6XG4gICAgICAgIHRoaXMuZmlsdGVyQ29udGFpbnNUeXBlJCA9ICdub3RlcXVhbCc7XG4gICAgICAgIHRoaXMuYkNvbnRhaW5zJCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmJEYXRlVGltZSQgPSB0cnVlO1xuICAgICAgICB0aGlzLmJJc0RhdGUkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5iSXNEYXRlVGltZSQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5iSXNUaW1lJCA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0RhdGVUaW1lJzpcbiAgICAgICAgdGhpcy5maWx0ZXJDb250YWluc1R5cGUkID0gJ25vdGVxdWFsJztcbiAgICAgICAgdGhpcy5iQ29udGFpbnMkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYkRhdGVUaW1lJCA9IHRydWU7XG4gICAgICAgIHRoaXMuYklzRGF0ZSQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5iSXNEYXRlVGltZSQgPSB0cnVlO1xuICAgICAgICB0aGlzLmJJc1RpbWUkID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnVGltZSc6XG4gICAgICAgIHRoaXMuZmlsdGVyQ29udGFpbnNUeXBlJCA9ICdub3RlcXVhbCc7XG4gICAgICAgIHRoaXMuYkNvbnRhaW5zJCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmJEYXRlVGltZSQgPSB0cnVlO1xuICAgICAgICB0aGlzLmJJc0RhdGUkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYklzRGF0ZVRpbWUkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYklzVGltZSQgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuZmlsdGVyQ29udGFpbnNUeXBlJCA9ICdjb250YWlucyc7XG4gICAgICAgIHRoaXMuYkNvbnRhaW5zJCA9IHRydWU7XG4gICAgICAgIHRoaXMuYkRhdGVUaW1lJCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmJJc0RhdGUkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYklzRGF0ZVRpbWUkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYklzVGltZSQgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgX2ZpbHRlcihldmVudCwgY29sdW1uRGF0YSkge1xuICAgIC8vIGFkZCBjbGlja0F3YXkgbGlzdGVuZXJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMuX2NsaWNrQXdheS5iaW5kKHRoaXMpKTtcblxuICAgIHRoaXMuY3VycmVudEZpbHRlclJlZkRhdGEgPSBjb2x1bW5EYXRhO1xuICAgIHRoaXMuZmlsdGVyQ29udGFpbnNMYWJlbCQgPSBjb2x1bW5EYXRhLmNvbmZpZy5sYWJlbDtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVGaWx0ZXJEaXNwbGF5KGNvbHVtbkRhdGEudHlwZSk7XG5cbiAgICAgIHRoaXMudXBkYXRlRmlsdGVyVmFyc1dpdGhDdXJyZW50KGNvbHVtbkRhdGEpO1xuXG4gICAgICB0aGlzLmJTaG93RmlsdGVyUG9wb3ZlciQgPSB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgX2NsaWNrQXdheShldmVudDogYW55KSB7XG4gICAgbGV0IGJJblBvcFVwID0gZmFsc2U7XG5cbiAgICAvLyBydW4gdGhyb3VnaCBsaXN0IG9mIGVsZW1lbnRzIGluIHBhdGgsIGlmIG1lbnUgbm90IGluIHRoIHBhdGgsIHRoZW4gd2FudCB0b1xuICAgIC8vIGhpZGUgKHRvZ2dsZSkgdGhlIG1lbnVcbiAgICBjb25zdCBldmVudFBhdGggPSBldmVudC5wYXRoO1xuICAgIGlmIChldmVudFBhdGgpIHtcbiAgICAgIGZvciAobGV0IGV2ZW50SW5kZXggPSAwOyBldmVudEluZGV4IDwgZXZlbnRQYXRoLmxlbmd0aDsgZXZlbnRJbmRleCsrKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBldmVudFBhdGhbZXZlbnRJbmRleF0uY2xhc3NOYW1lID09ICdwc2RrLW1vZGFsLWZpbGUtdG9wJyB8fFxuICAgICAgICAgIGV2ZW50UGF0aFtldmVudEluZGV4XS50YWdOYW1lID09ICdCVVRUT04nIHx8XG4gICAgICAgICAgZXZlbnRQYXRoW2V2ZW50SW5kZXhdLnRhZ05hbWUgPT0gJ01BVC1PUFRJT04nIHx8XG4gICAgICAgICAgZXZlbnRQYXRoW2V2ZW50SW5kZXhdLnRhZ05hbWUgPT0gJ01BVC1JTlBVVCdcbiAgICAgICAgKSB7XG4gICAgICAgICAgYkluUG9wVXAgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFiSW5Qb3BVcCkge1xuICAgICAgLy8gdGhpcy5iU2hvd0ZpbHRlclBvcG92ZXIkID0gZmFsc2U7XG5cbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5fY2xpY2tBd2F5LmJpbmQodGhpcykpO1xuICAgIH1cbiAgfVxuXG4gIF9maWx0ZXJDb250YWluc1R5cGUoZXZlbnQpIHtcbiAgICB0aGlzLmZpbHRlckNvbnRhaW5zVHlwZSQgPSBldmVudC52YWx1ZTtcbiAgfVxuXG4gIF9maWx0ZXJDb250YWluc1ZhbHVlKGV2ZW50KSB7XG4gICAgdGhpcy5maWx0ZXJDb250YWluc1ZhbHVlJCA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgfVxuXG4gIF9maWx0ZXJDb250YWluc0RhdGVWYWx1ZShldmVudCwgdmFsdWUpIHtcbiAgICB0aGlzLmZpbHRlckNvbnRhaW5zVmFsdWUkID0gdmFsdWU7XG4gIH1cblxuICBfZmlsdGVyQ29udGFpbnNEYXRlVGltZVZhbHVlKGV2ZW50KSB7XG4gICAgdGhpcy5maWx0ZXJDb250YWluc1ZhbHVlJCA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgfVxuXG4gIF9maWx0ZXJDb250YWluc1RpbWVWYWx1ZShldmVudCkge1xuICAgIHRoaXMuZmlsdGVyQ29udGFpbnNWYWx1ZSQgPSBldmVudC50YXJnZXQudmFsdWU7XG4gIH1cblxuICBfb25GaWx0ZXJBY3Rpb25CdXR0b25DbGljayhldmVudDogYW55KSB7XG4gICAgLy8gbW9kYWwgYnV0dG9uc1xuICAgIHN3aXRjaCAoZXZlbnQuYWN0aW9uKSB7XG4gICAgICBjYXNlICdjYW5jZWwnOlxuICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJSZWZEYXRhID0gW107XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc3VibWl0JzpcbiAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJXaXRoSW5mbygpO1xuICAgICAgICB0aGlzLmZpbHRlclNvcnRHcm91cEJ5KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5iU2hvd0ZpbHRlclBvcG92ZXIkID0gZmFsc2U7XG5cbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMuX2NsaWNrQXdheS5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIHVwZGF0ZUZpbHRlcldpdGhJbmZvKCkge1xuICAgIGxldCBiRm91bmQgPSBmYWxzZTtcbiAgICBmb3IgKGNvbnN0IGZpbHRlck9iaiBvZiB0aGlzLmZpbHRlckJ5Q29sdW1ucykge1xuICAgICAgaWYgKGZpbHRlck9iai5yZWYgPT09IHRoaXMuY3VycmVudEZpbHRlclJlZkRhdGEuY29uZmlnLm5hbWUpIHtcbiAgICAgICAgZmlsdGVyT2JqLnR5cGUgPSB0aGlzLmN1cnJlbnRGaWx0ZXJSZWZEYXRhLnR5cGU7XG4gICAgICAgIGZpbHRlck9iai5jb250YWluc0ZpbHRlciA9IHRoaXMuZmlsdGVyQ29udGFpbnNUeXBlJDtcbiAgICAgICAgZmlsdGVyT2JqLmNvbnRhaW5zRmlsdGVyVmFsdWUgPSB0aGlzLmZpbHRlckNvbnRhaW5zVmFsdWUkO1xuXG4gICAgICAgIGJGb3VuZCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghYkZvdW5kKSB7XG4gICAgICAvLyBhZGQgaW5cbiAgICAgIGNvbnN0IGZpbHRlck9iajogYW55ID0ge307XG4gICAgICBmaWx0ZXJPYmoucmVmID0gdGhpcy5jdXJyZW50RmlsdGVyUmVmRGF0YS5jb25maWcubmFtZTtcbiAgICAgIGZpbHRlck9iai50eXBlID0gdGhpcy5jdXJyZW50RmlsdGVyUmVmRGF0YS50eXBlO1xuICAgICAgZmlsdGVyT2JqLmNvbnRhaW5zRmlsdGVyID0gdGhpcy5maWx0ZXJDb250YWluc1R5cGUkO1xuICAgICAgZmlsdGVyT2JqLmNvbnRhaW5zRmlsdGVyVmFsdWUgPSB0aGlzLmZpbHRlckNvbnRhaW5zVmFsdWUkO1xuXG4gICAgICB0aGlzLmZpbHRlckJ5Q29sdW1ucy5wdXNoKGZpbHRlck9iaik7XG4gICAgfVxuXG4gICAgLy8gaXRlcmF0ZSB0aHJvdWdoIGZpbHRlcnMgYW5kIHVwZGF0ZSBmaWx0ZXJPbiBpY29uXG4gICAgZm9yIChjb25zdCBmaWx0ZXJPYmogb2YgdGhpcy5maWx0ZXJCeUNvbHVtbnMpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5zRmlsdGVyVmFsdWUgPSBmaWx0ZXJPYmouY29udGFpbnNGaWx0ZXJWYWx1ZTtcbiAgICAgIGNvbnN0IGNvbnRhaW5zRmlsdGVyID0gZmlsdGVyT2JqLmNvbnRhaW5zRmlsdGVyO1xuICAgICAgY29uc3QgZmlsdGVyUmVmID0gZmlsdGVyT2JqLnJlZjtcbiAgICAgIGNvbnN0IGZpbHRlckluZGV4ID0gdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLmluZGV4T2YoZmlsdGVyUmVmKTtcbiAgICAgIGNvbnN0IGFyRmlsdGVySW1nID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ2ZpbHRlck9uSWNvbicpO1xuICAgICAgY29uc3QgZmlsdGVySW1nOiBhbnkgPSBhckZpbHRlckltZ1tmaWx0ZXJJbmRleF07XG4gICAgICBpZiAoY29udGFpbnNGaWx0ZXJWYWx1ZSA9PSAnJyAmJiBjb250YWluc0ZpbHRlciAhPSAnbnVsbCcgJiYgY29udGFpbnNGaWx0ZXIgIT0gJ25vdG51bGwnKSB7XG4gICAgICAgIC8vIGNsZWFyIGljb25cbiAgICAgICAgZmlsdGVySW1nLnNyYyA9ICcnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gc2hvdyBpY29uXG4gICAgICAgIGZpbHRlckltZy5zcmMgPSB0aGlzLmZpbHRlck9uU3ZnSWNvbiQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlRmlsdGVyVmFyc1dpdGhDdXJyZW50KGNvbHVtbkRhdGEpIHtcbiAgICAvLyBmaW5kIGN1cnJlbnQgcmVmLCBpZiBleGlzdHMsIG1vdmUgZGF0YSB0byB2YXJpYWJsZSB0byBkaXNwbGF5XG5cbiAgICBsZXQgYkZvdW5kID0gZmFsc2U7XG4gICAgZm9yIChjb25zdCBmaWx0ZXJPYmogb2YgdGhpcy5maWx0ZXJCeUNvbHVtbnMpIHtcbiAgICAgIGlmIChmaWx0ZXJPYmoucmVmID09PSB0aGlzLmN1cnJlbnRGaWx0ZXJSZWZEYXRhLmNvbmZpZy5uYW1lKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyQ29udGFpbnNUeXBlJCA9IGZpbHRlck9iai5jb250YWluc0ZpbHRlcjtcbiAgICAgICAgdGhpcy5maWx0ZXJDb250YWluc1ZhbHVlJCA9IGZpbHRlck9iai5jb250YWluc0ZpbHRlclZhbHVlO1xuXG4gICAgICAgIGJGb3VuZCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghYkZvdW5kKSB7XG4gICAgICBzd2l0Y2ggKGNvbHVtbkRhdGEudHlwZSkge1xuICAgICAgICBjYXNlICdEYXRlJzpcbiAgICAgICAgY2FzZSAnRGF0ZVRpbWUnOlxuICAgICAgICBjYXNlICdUaW1lJzpcbiAgICAgICAgICB0aGlzLmZpbHRlckNvbnRhaW5zVHlwZSQgPSAnbm90ZXF1YWwnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRoaXMuZmlsdGVyQ29udGFpbnNUeXBlJCA9ICdjb250YWlucyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZmlsdGVyQ29udGFpbnNWYWx1ZSQgPSAnJztcbiAgICB9XG4gIH1cblxuICBmaWx0ZXJEYXRhKGVsZW1lbnQ6IGFueSkge1xuICAgIGNvbnN0IGl0ZW0gPSBlbGVtZW50WzBdO1xuICAgIGxldCBiS2VlcCA9IHRydWU7XG4gICAgZm9yIChjb25zdCBmaWx0ZXJPYmogb2YgdGhpcy5maWx0ZXJCeUNvbHVtbnMpIHtcbiAgICAgIGlmIChmaWx0ZXJPYmouY29udGFpbnNGaWx0ZXJWYWx1ZSAhPSAnJyB8fCBmaWx0ZXJPYmouY29udGFpbnNGaWx0ZXIgPT0gJ251bGwnIHx8IGZpbHRlck9iai5jb250YWluc0ZpbHRlciA9PSAnbm90bnVsbCcpIHtcbiAgICAgICAgc3dpdGNoIChmaWx0ZXJPYmoudHlwZSkge1xuICAgICAgICAgIGNhc2UgJ0RhdGUnOlxuICAgICAgICAgIGNhc2UgJ0RhdGVUaW1lJzpcbiAgICAgICAgICBjYXNlICdUaW1lJzpcbiAgICAgICAgICAgIGJLZWVwID0gZmlsdGVyRGF0YUJ5RGF0ZShpdGVtLCBmaWx0ZXJPYmopO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGJLZWVwID0gZmlsdGVyRGF0YUJ5Q29tbW9uRmllbGRzKGl0ZW0sIGZpbHRlck9iaik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChmaWx0ZXJPYmouY29udGFpbnNGaWx0ZXJWYWx1ZSA9PT0gJycpIHtcbiAgICAgICAgYktlZXAgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBpZiBkb24ndCBrZWVwIHN0b3AgZmlsdGVyaW5nXG4gICAgICBpZiAoIWJLZWVwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBiS2VlcDtcbiAgfVxuXG4gIGZpbHRlclNvcnRHcm91cEJ5KCkge1xuICAgIGxldCB0aGVEYXRhID0gdGhpcy5vcmlnaW5hbERhdGEuc2xpY2UoKS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICByZXR1cm4gW2l0ZW0sIGluZGV4XTtcbiAgICB9KTtcblxuICAgIC8vIGxhc3QgZmlsdGVyIGNvbmZpZyBkYXRhIGlzIGdsb2JhbFxuICAgIHRoZURhdGEgPSB0aGVEYXRhLmZpbHRlcih0aGlzLmZpbHRlckRhdGEuYmluZCh0aGlzKSk7XG5cbiAgICAvLyBsYXN0IHNvcnQgY29uZmlnIGRhdGEgaXMgZ2xvYmFsXG4gICAgdGhlRGF0YS5zb3J0KHRoaXMuc29ydENvbXBhcmUuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5yb3dEYXRhLmRhdGEgPSB0aGVEYXRhLm1hcChpdGVtID0+IGl0ZW1bMF0pO1xuXG4gICAgY29uc3QgbmV3RWxlbWVudHM6IGFueSA9IG5ldyBBcnJheSh0aGlzLnJvd0RhdGEuZGF0YS5sZW5ndGgpO1xuICAgIHRoZURhdGEuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgIG5ld0VsZW1lbnRzW2luZGV4XSA9IHRoaXMub3JpZ2luYWxFbGVtZW50c0RhdGFbaXRlbVsxXV07XG4gICAgfSk7XG4gICAgdGhpcy5lbGVtZW50c0RhdGEgPSBuZXdFbGVtZW50cztcbiAgfVxuXG4gIF9oZWFkZXJTb3J0Q2xpY2soZXZlbnQsIGNvbHVtbkRhdGEpIHtcbiAgICAvLyBpbWFnZXMgMCAtIGZpbHRlciwgMSAtIGFycm93LCAyIC0gbW9yZVxuXG4gICAgLyoqIENvbW1lbnRpbmcgdGhpcyBjb2RlIGZvciBub3cgYXMgaXQgaXMgZ2l2aW5nIGVycm9ycyBub3Qgc3VyZSBpZiBpdCBldmVyIHdvcmtlZCAqL1xuICAgIC8vIGxldCBhcnJvd0ltYWdlID0gZXZlbnQuc3JjRWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW1nJylbMV07XG4gICAgLy8gbGV0IGFycm93QXR0ciA9IGFycm93SW1hZ2UuZ2V0QXR0cmlidXRlKCdhcnJvdycpO1xuXG4gICAgLy8gdGhpcy5jbGVhck91dEFycm93cyhldmVudCwgY29sdW1uRGF0YSk7XG5cbiAgICAvLyBzd2l0Y2ggKGFycm93QXR0cikge1xuICAgIC8vICAgY2FzZSAndXAnOlxuICAgIC8vICAgICBhcnJvd0ltYWdlLnNyYyA9IHRoaXMuYXJyb3dEb3duU3ZnSWNvbiQ7XG4gICAgLy8gICAgIGFycm93SW1hZ2Uuc2V0QXR0cmlidXRlKCdhcnJvdycsICdkb3duJyk7XG4gICAgLy8gICAgIGJyZWFrO1xuICAgIC8vICAgY2FzZSAnZG93bic6XG4gICAgLy8gICAgIGFycm93SW1hZ2Uuc3JjID0gJyc7XG4gICAgLy8gICAgIGFycm93SW1hZ2Uuc2V0QXR0cmlidXRlKCdhcnJvdycsICdub25lJyk7XG4gICAgLy8gICAgIGJyZWFrO1xuICAgIC8vICAgZGVmYXVsdDpcbiAgICAvLyAgICAgYXJyb3dJbWFnZS5zcmMgPSB0aGlzLmFycm93VXBTdmdJY29uJDtcbiAgICAvLyAgICAgYXJyb3dJbWFnZS5zZXRBdHRyaWJ1dGUoJ2Fycm93JywgJ3VwJyk7XG4gICAgLy8gICAgIGJyZWFrO1xuICAgIC8vIH1cblxuICAgIHRoaXMuY29tcGFyZVR5cGUgPSBjb2x1bW5EYXRhLnR5cGU7XG4gICAgdGhpcy5jb21wYXJlUmVmID0gY29sdW1uRGF0YS5jb25maWcubmFtZTtcbiAgICAvLyB0aGlzLmFycm93RGlyZWN0aW9uID0gYXJyb3dJbWFnZS5nZXRBdHRyaWJ1dGUoJ2Fycm93Jyk7XG4gICAgdGhpcy5hcnJvd0RpcmVjdGlvbiA9IHRoaXMuYXJyb3dEaXJlY3Rpb24gPT09ICd1cCcgPyAnZG93bicgOiAndXAnO1xuXG4gICAgdGhpcy5maWx0ZXJTb3J0R3JvdXBCeSgpO1xuICB9XG5cbiAgX3Nob3dVbkdyb3VwQnkoY29sdW1uRGF0YSk6IGJvb2xlYW4ge1xuICAgIGZvciAoY29uc3QgdmFsIG9mIHRoaXMuZ3JvdXBCeUNvbHVtbnMkKSB7XG4gICAgICBpZiAodmFsID09IGNvbHVtbkRhdGEuY29uZmlnLm5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgX2dyb3VwQnkoZXZlbnQsIGNvbHVtbkRhdGEpIHtcbiAgICB0aGlzLmNoZWNrR3JvdXBCeUNvbHVtbihjb2x1bW5EYXRhLmNvbmZpZy5uYW1lLCB0cnVlKTtcblxuICAgIHRoaXMuZmlsdGVyU29ydEdyb3VwQnkoKTtcbiAgfVxuXG4gIF91bkdyb3VwQnkoZXZlbnQsIGNvbHVtbkRhdGEpIHtcbiAgICAvLyBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmNoZWNrR3JvdXBCeUNvbHVtbihjb2x1bW5EYXRhLmNvbmZpZy5uYW1lLCBmYWxzZSk7XG5cbiAgICB0aGlzLmZpbHRlclNvcnRHcm91cEJ5KCk7XG4gIH1cblxuICBjaGVja0dyb3VwQnlDb2x1bW4oZmllbGQsIGFkZCkge1xuICAgIGxldCBmb3VuZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgZm9yIChjb25zdCBjb2x1bW4gb2YgdGhpcy5ncm91cEJ5Q29sdW1ucyQpIHtcbiAgICAgIGlmIChjb2x1bW4gPT09IGZpZWxkKSB7XG4gICAgICAgIGZvdW5kID0gdGhpcy5ncm91cEJ5Q29sdW1ucyQuaW5kZXhPZihjb2x1bW4sIDApO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZm91bmQgIT0gbnVsbCAmJiBmb3VuZCA+PSAwKSB7XG4gICAgICBpZiAoIWFkZCkge1xuICAgICAgICB0aGlzLmdyb3VwQnlDb2x1bW5zJC5zcGxpY2UoZm91bmQsIDEpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoYWRkKSB7XG4gICAgICB0aGlzLmdyb3VwQnlDb2x1bW5zJC5wdXNoKGZpZWxkKTtcbiAgICB9XG4gIH1cblxuICBfZ2V0R3JvdXBOYW1lKGZpZWxkTmFtZSkge1xuICAgIGZvciAobGV0IGZpZWxkSW5kZXggPSAwOyBmaWVsZEluZGV4IDwgdGhpcy5maWVsZHMkLmxlbmd0aDsgZmllbGRJbmRleCsrKSB7XG4gICAgICBjb25zdCBmaWVsZCA9IHRoaXMuZmllbGRzJFtmaWVsZEluZGV4XTtcbiAgICAgIGlmIChmaWVsZC5jb25maWcubmFtZSA9PSBmaWVsZE5hbWUpIHtcbiAgICAgICAgcmV0dXJuIGZpZWxkLmNvbmZpZy5sYWJlbDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgYWRkR3JvdXBzKGRhdGE6IGFueVtdLCBncm91cEJ5Q29sdW1uczogc3RyaW5nW10pOiBhbnlbXSB7XG4gICAgY29uc3Qgcm9vdEdyb3VwID0gbmV3IEdyb3VwKCk7XG4gICAgcm9vdEdyb3VwLmV4cGFuZGVkID0gdHJ1ZTtcbiAgICByZXR1cm4gdGhpcy5nZXRTdWJsZXZlbChkYXRhLCAwLCBncm91cEJ5Q29sdW1ucywgcm9vdEdyb3VwKTtcbiAgfVxuXG4gIGdldFN1YmxldmVsKGRhdGE6IGFueVtdLCBsZXZlbDogbnVtYmVyLCBncm91cEJ5Q29sdW1uczogc3RyaW5nW10sIHBhcmVudDogR3JvdXApOiBhbnlbXSB7XG4gICAgaWYgKGxldmVsID49IGdyb3VwQnlDb2x1bW5zLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIGNvbnN0IGdyb3VwcyA9IHRoaXMudW5pcXVlQnkoXG4gICAgICBkYXRhLm1hcChyb3cgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgR3JvdXAoKTtcbiAgICAgICAgcmVzdWx0LmxldmVsID0gbGV2ZWwgKyAxO1xuICAgICAgICByZXN1bHQucGFyZW50ID0gcGFyZW50O1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBsZXZlbDsgaSsrKSB7XG4gICAgICAgICAgcmVzdWx0W2dyb3VwQnlDb2x1bW5zW2ldXSA9IHJvd1tncm91cEJ5Q29sdW1uc1tpXV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pLFxuICAgICAgSlNPTi5zdHJpbmdpZnlcbiAgICApO1xuXG4gICAgY29uc3QgY3VycmVudENvbHVtbiA9IGdyb3VwQnlDb2x1bW5zW2xldmVsXTtcbiAgICBsZXQgc3ViR3JvdXBzOiBhbnkgPSBbXTtcbiAgICBncm91cHMuZm9yRWFjaChncm91cCA9PiB7XG4gICAgICBjb25zdCByb3dzSW5Hcm91cCA9IGRhdGEuZmlsdGVyKHJvdyA9PiBncm91cFtjdXJyZW50Q29sdW1uXSA9PT0gcm93W2N1cnJlbnRDb2x1bW5dKTtcbiAgICAgIGdyb3VwLnRvdGFsQ291bnRzID0gcm93c0luR3JvdXAubGVuZ3RoO1xuICAgICAgY29uc3Qgc3ViR3JvdXAgPSB0aGlzLmdldFN1YmxldmVsKHJvd3NJbkdyb3VwLCBsZXZlbCArIDEsIGdyb3VwQnlDb2x1bW5zLCBncm91cCk7XG4gICAgICBzdWJHcm91cC51bnNoaWZ0KGdyb3VwKTtcbiAgICAgIHN1Ykdyb3VwcyA9IHN1Ykdyb3Vwcy5jb25jYXQoc3ViR3JvdXApO1xuICAgIH0pO1xuICAgIHJldHVybiBzdWJHcm91cHM7XG4gIH1cblxuICB1bmlxdWVCeShhLCBrZXkpIHtcbiAgICBjb25zdCBzZWVuID0ge307XG4gICAgcmV0dXJuIGEuZmlsdGVyKGl0ZW0gPT4ge1xuICAgICAgY29uc3QgayA9IGtleShpdGVtKTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXR1cm4tYXNzaWduLCBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgICAgIHJldHVybiBzZWVuLmhhc093blByb3BlcnR5KGspID8gZmFsc2UgOiAoc2VlbltrXSA9IHRydWUpO1xuICAgIH0pO1xuICB9XG5cbiAgaXNHcm91cChpbmRleCwgaXRlbSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpdGVtLmxldmVsO1xuICB9XG5cbiAgX2dyb3VwSGVhZGVyQ2xpY2socm93KSB7XG4gICAgcm93LmV4cGFuZGVkID0gIXJvdy5leHBhbmRlZDtcbiAgICAvLyB0aGlzLnJlcGVhdExpc3QkLmZpbHRlciA9IFwiXCI7XG4gICAgdGhpcy5wZXJmRmlsdGVyID0gcGVyZm9ybWFuY2Uubm93KCkudG9TdHJpbmcoKTtcbiAgICB0aGlzLnJvd0RhdGEuZmlsdGVyID0gdGhpcy5wZXJmRmlsdGVyO1xuICB9XG5cbiAgLy8gYmVsb3cgaXMgZm9yIGdyaWQgcm93IGdyb3VwaW5nXG4gIGN1c3RvbUZpbHRlclByZWRpY2F0ZShkYXRhOiBhbnkgfCBHcm91cCwgZmlsdGVyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZGF0YSBpbnN0YW5jZW9mIEdyb3VwID8gZGF0YS52aXNpYmxlIDogdGhpcy5nZXREYXRhUm93VmlzaWJsZVdpdGhGaWx0ZXIoZGF0YSwgZmlsdGVyKTtcbiAgfVxuXG4gIGdldERhdGFSb3dWaXNpYmxlKGRhdGE6IGFueSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGdyb3VwUm93cyA9IHRoaXMucm93RGF0YS5kYXRhLmZpbHRlcihyb3cgPT4ge1xuICAgICAgaWYgKCEocm93IGluc3RhbmNlb2YgR3JvdXApKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGxldCBtYXRjaCA9IHRydWU7XG4gICAgICB0aGlzLmdyb3VwQnlDb2x1bW5zJC5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICAgIGlmICghcm93W2NvbHVtbl0gfHwgIWRhdGFbY29sdW1uXSB8fCByb3dbY29sdW1uXSAhPT0gZGF0YVtjb2x1bW5dKSB7XG4gICAgICAgICAgbWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gbWF0Y2g7XG4gICAgfSk7XG5cbiAgICBpZiAoZ3JvdXBSb3dzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IHBhcmVudCA9IGdyb3VwUm93c1swXSBhcyBHcm91cDtcbiAgICByZXR1cm4gcGFyZW50LnZpc2libGUgJiYgcGFyZW50LmV4cGFuZGVkO1xuICB9XG5cbiAgZ2V0RGF0YVJvd1Zpc2libGVXaXRoRmlsdGVyKGRhdGEsIGZpbHRlcikge1xuICAgIC8vIGZpc3QgY2hlY2sgaWYgcm93IGlzIHZpc2libGUgd2l0aCBncm91cGluZ1xuICAgIGxldCBiVmlzaWJsZSA9IHRoaXMuZ2V0RGF0YVJvd1Zpc2libGUoZGF0YSk7XG5cbiAgICBpZiAoYlZpc2libGUgJiYgZmlsdGVyICYmIGZpbHRlciAhPSAnJyAmJiBmaWx0ZXIgIT0gdGhpcy5wZXJmRmlsdGVyKSB7XG4gICAgICAvLyBub3cgY2hlY2sgaWYgcm93IGlzIGZpbHRlcmVkLlxuXG4gICAgICAvLyBhc3N1bWUgbm90IHRoZXJlIHVubGVzcyB3ZSBmaW5kIGl0XG4gICAgICBiVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgZm9yIChjb25zdCBjb2wgb2YgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zKSB7XG4gICAgICAgIC8vIGZpbHRlciBpcyBsb3dlciBjYXNlXG4gICAgICAgIGlmIChkYXRhW2NvbF0gJiYgZGF0YVtjb2xdLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmRleE9mKGZpbHRlcikgPj0gMCkge1xuICAgICAgICAgIGJWaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBiVmlzaWJsZTtcbiAgfVxuXG4gIGdldERpc3BsYXlDb2x1bW5zKGZpZWxkcyA9IFtdKSB7XG4gICAgcmV0dXJuIGZpZWxkcy5tYXAoKGZpZWxkOiBhbnkpID0+IHtcbiAgICAgIGxldCB0aGVGaWVsZCA9IGZpZWxkLmNvbmZpZy52YWx1ZS5zdWJzdHJpbmcoZmllbGQuY29uZmlnLnZhbHVlLmluZGV4T2YoJyAnKSArIDEpO1xuICAgICAgaWYgKHRoZUZpZWxkLmluZGV4T2YoJy4nKSA9PSAwKSB7XG4gICAgICAgIHRoZUZpZWxkID0gdGhlRmllbGQuc3Vic3RyaW5nKDEpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhlRmllbGQ7XG4gICAgfSk7XG4gIH1cblxuICBfZ2V0SWNvblN0eWxlKGxldmVsKTogc3RyaW5nIHtcbiAgICBsZXQgc1JldHVybiA9ICcnO1xuICAgIGxldCBuTGV2ZWwgPSBwYXJzZUludChsZXZlbCwgMTApO1xuICAgIG5MZXZlbC0tO1xuICAgIG5MZXZlbCAqPSAxNTtcbiAgICBzUmV0dXJuID0gYHBhZGRpbmctbGVmdDogJHtuTGV2ZWx9cHg7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGVgO1xuXG4gICAgcmV0dXJuIHNSZXR1cm47XG4gIH1cblxuICAvLyBDYWxsYmFjayBwYXNzZWQgd2hlbiBzdWJzY3JpYmluZyB0byBzdG9yZSBjaGFuZ2VcbiAgb25TdGF0ZUNoYW5nZSgpIHtcbiAgICB0aGlzLmNoZWNrQW5kVXBkYXRlKCk7XG4gIH1cblxuICAvLyByZXR1cm4gdGhlIHZhbHVlIHRoYXQgc2hvdWxkIGJlIHNob3duIGFzIHRoZSBjb250ZW50cyBmb3IgdGhlIGdpdmVuIHJvdyBkYXRhXG4gIC8vICBvZiB0aGUgZ2l2ZW4gcm93IGZpZWxkXG4gIGdldFJvd1ZhbHVlKGluUm93RGF0YTogT2JqZWN0LCBpbkNvbEtleTogc3RyaW5nKTogYW55IHtcbiAgICAvLyBTZWUgd2hhdCBkYXRhIChpZiBhbnkpIHdlIGhhdmUgdG8gZGlzcGxheVxuICAgIGNvbnN0IHJlZktleXM6IHN0cmluZ1tdID0gaW5Db2xLZXkuc3BsaXQoJy4nKTtcbiAgICBsZXQgdmFsQnVpbGRlciA9IGluUm93RGF0YTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiByZWZLZXlzKSB7XG4gICAgICB2YWxCdWlsZGVyID0gdmFsQnVpbGRlcltrZXldO1xuICAgIH1cbiAgICByZXR1cm4gdmFsQnVpbGRlcjtcbiAgfVxuXG4gIGdlbmVyYXRlUm93c0RhdGEoKSB7XG4gICAgY29uc3QgeyBkYXRhUGFnZU5hbWUsIHJlZmVyZW5jZUxpc3QgfSA9IHRoaXMuY29uZmlnUHJvcHMkO1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpO1xuICAgIC8vIGlmIGRhdGFQYWdlTmFtZSBwcm9wZXJ0eSB2YWx1ZSBleGlzdHMgdGhlbiBtYWtlIGEgZGF0YXBhZ2UgZmV0Y2ggY2FsbCBhbmQgZ2V0IHRoZSBsaXN0IG9mIGRhdGEuXG4gICAgaWYgKGRhdGFQYWdlTmFtZSkge1xuICAgICAgdGhpcy5kYXRhUGFnZVNlcnZpY2UuZ2V0RGF0YVBhZ2VEYXRhKGRhdGFQYWdlTmFtZSwgdGhpcy5wYXJhbWV0ZXJzLCBjb250ZXh0KS50aGVuKGxpc3REYXRhID0+IHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZm9ybWF0Um93c0RhdGEobGlzdERhdGEpO1xuICAgICAgICB0aGlzLm9yaWdpbmFsRGF0YSA9IGRhdGE7XG4gICAgICAgIHRoaXMucm93RGF0YSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2UoZGF0YSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVGhlIHJlZmVyZW5jZUxpc3QgcHJvcCBoYXMgdGhlIEpTT04gZGF0YSBmb3IgZWFjaCByb3cgdG8gYmUgZGlzcGxheWVkXG4gICAgICAvLyAgaW4gdGhlIHRhYmxlLiBTbywgaXRlcmF0ZSBvdmVyIHJlZmVyZW5jZUxpc3QgdG8gY3JlYXRlIHRoZSBkYXRhUm93cyB0aGF0XG4gICAgICAvLyAgd2UncmUgdXNpbmcgYXMgdGhlIHRhYmxlJ3MgZGF0YVNvdXJjZVxuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZm9ybWF0Um93c0RhdGEocmVmZXJlbmNlTGlzdCk7XG4gICAgICB0aGlzLm9yaWdpbmFsRGF0YSA9IGRhdGE7XG4gICAgICB0aGlzLnJvd0RhdGEgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKGRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIGZvcm1hdFJvd3NEYXRhKGRhdGEpIHtcbiAgICByZXR1cm4gZGF0YT8ubWFwKGl0ZW0gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuZGlzcGxheWVkQ29sdW1ucy5yZWR1Y2UoKGRhdGFGb3JSb3csIGNvbEtleSkgPT4ge1xuICAgICAgICBkYXRhRm9yUm93W2NvbEtleV0gPSB0aGlzLmdldFJvd1ZhbHVlKGl0ZW0sIGNvbEtleSk7XG4gICAgICAgIHJldHVybiBkYXRhRm9yUm93O1xuICAgICAgfSwge30pO1xuICAgIH0pO1xuICB9XG5cbiAgYWRkUmVjb3JkKCkge1xuICAgIGlmICh0aGlzLmFsbG93RWRpdGluZ0luTW9kYWwgJiYgdGhpcy5kZWZhdWx0Vmlldykge1xuICAgICAgdGhpcy5wQ29ubiRcbiAgICAgICAgLmdldEFjdGlvbnNBcGkoKVxuICAgICAgICAub3BlbkVtYmVkZGVkRGF0YU1vZGFsKFxuICAgICAgICAgIHRoaXMuZGVmYXVsdFZpZXcsXG4gICAgICAgICAgdGhpcy5wQ29ubiQgYXMgYW55LFxuICAgICAgICAgIHRoaXMucmVmZXJlbmNlTGlzdFN0cixcbiAgICAgICAgICB0aGlzLnJlZmVyZW5jZUxpc3QubGVuZ3RoLFxuICAgICAgICAgIFBDb3JlLmdldENvbnN0YW50cygpLlJFU09VUkNFX1NUQVRVUy5DUkVBVEUsXG4gICAgICAgICAgdGhpcy50YXJnZXRDbGFzc0xhYmVsXG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucENvbm4kLmdldExpc3RBY3Rpb25zKCkuaW5zZXJ0KHsgY2xhc3NJRDogdGhpcy5jb250ZXh0Q2xhc3MgfSwgdGhpcy5yZWZlcmVuY2VMaXN0Lmxlbmd0aCk7XG4gICAgfVxuXG4gICAgdGhpcy5wQ29ubiQuY2xlYXJFcnJvck1lc3NhZ2VzKHtcbiAgICAgIHByb3BlcnR5OiB0aGlzLnBDb25uJC5nZXRTdGF0ZVByb3BzKCk/LnJlZmVyZW5jZUxpc3Q/LnN1YnN0cmluZygxKVxuICAgIH0pO1xuICB9XG5cbiAgZWRpdFJlY29yZChkYXRhLCBpbmRleCkge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICB0aGlzLnBDb25uJFxuICAgICAgICAuZ2V0QWN0aW9uc0FwaSgpXG4gICAgICAgIC5vcGVuRW1iZWRkZWREYXRhTW9kYWwoXG4gICAgICAgICAgdGhpcy5iVXNlU2VwYXJhdGVWaWV3Rm9yRWRpdCA/IHRoaXMuZWRpdFZpZXcgOiB0aGlzLmRlZmF1bHRWaWV3LFxuICAgICAgICAgIHRoaXMucENvbm4kIGFzIGFueSxcbiAgICAgICAgICB0aGlzLnJlZmVyZW5jZUxpc3RTdHIsXG4gICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgUENvcmUuZ2V0Q29uc3RhbnRzKCkuUkVTT1VSQ0VfU1RBVFVTLlVQREFURSxcbiAgICAgICAgICB0aGlzLnRhcmdldENsYXNzTGFiZWxcbiAgICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBkZWxldGVSZWNvcmQoaW5kZXgpIHtcbiAgICB0aGlzLnBDb25uJC5nZXRMaXN0QWN0aW9ucygpLmRlbGV0ZUVudHJ5KGluZGV4KTtcbiAgfVxuXG4gIGJ1aWxkRWxlbWVudHNGb3JUYWJsZSgpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKTtcbiAgICBjb25zdCBlbGVEYXRhOiBhbnkgPSBbXTtcbiAgICB0aGlzLnJlZmVyZW5jZUxpc3QuZm9yRWFjaCgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGE6IGFueSA9IFtdO1xuICAgICAgdGhpcy5yYXdGaWVsZHM/LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGl0ZW0gPSB7XG4gICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICBjb25maWc6IHsgLi4uaXRlbS5jb25maWcsIGxhYmVsOiAnJywgZGlzcGxheU1vZGU6IHRoaXMucmVhZE9ubHlNb2RlIHx8IHRoaXMuYWxsb3dFZGl0aW5nSW5Nb2RhbCA/ICdESVNQTEFZX09OTFknIDogdW5kZWZpbmVkIH1cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlTGlzdERhdGEgPSBnZXRSZWZlcmVuY2VMaXN0KHRoaXMucENvbm4kKTtcbiAgICAgICAgY29uc3QgaXNEYXRhcGFnZSA9IHJlZmVyZW5jZUxpc3REYXRhLnN0YXJ0c1dpdGgoJ0RfJyk7XG4gICAgICAgIGNvbnN0IHBhZ2VSZWZlcmVuY2VWYWx1ZSA9IGlzRGF0YXBhZ2UgPyBgJHtyZWZlcmVuY2VMaXN0RGF0YX1bJHtpbmRleH1dYCA6IGAke3RoaXMucENvbm4kLmdldFBhZ2VSZWZlcmVuY2UoKX0ke3JlZmVyZW5jZUxpc3REYXRhfVske2luZGV4fV1gO1xuICAgICAgICBjb25zdCBjb25maWcgPSB7XG4gICAgICAgICAgbWV0YTogaXRlbSxcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgcGFnZVJlZmVyZW5jZTogcGFnZVJlZmVyZW5jZVZhbHVlLFxuICAgICAgICAgICAgcmVmZXJlbmNlTGlzdDogcmVmZXJlbmNlTGlzdERhdGEsXG4gICAgICAgICAgICBoYXNGb3JtOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCB2aWV3ID0gUENvcmUuY3JlYXRlUENvbm5lY3QoY29uZmlnKTtcbiAgICAgICAgZGF0YS5wdXNoKHZpZXcpO1xuICAgICAgfSk7XG4gICAgICBlbGVEYXRhLnB1c2goZGF0YSk7XG4gICAgfSk7XG4gICAgdGhpcy5vcmlnaW5hbEVsZW1lbnRzRGF0YSA9IGVsZURhdGE7XG4gICAgdGhpcy5lbGVtZW50c0RhdGEgPSBlbGVEYXRhO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiYlZpc2libGUkXCI+XG4gIDxkaXYgY2xhc3M9XCJzaW1wbGUtdGFibGUtd3JhcHBlclwiPlxuICAgIDxoMyAqbmdJZj1cImxhYmVsXCIgY2xhc3NOYW1lPVwibGFiZWxcIiBzdHlsZT1cImZvbnQtd2VpZ2h0OiBib2xkXCI+XG4gICAgICB7eyBsYWJlbCB9fSA8c3BhbiBjbGFzcz1cInJlc3VsdHMtY291bnRcIj57eyBnZXRSZXN1bHRzVGV4dCgpIH19PC9zcGFuPlxuICAgIDwvaDM+XG4gICAgPHRhYmxlICpuZ0lmPVwicmVhZE9ubHlNb2RlIHx8IGFsbG93RWRpdGluZ0luTW9kYWxcIiBtYXQtdGFibGUgW2RhdGFTb3VyY2VdPVwiZWxlbWVudHNEYXRhXCIgY2xhc3M9XCJtYXQtZWxldmF0aW9uLXo4XCIgaWQ9XCJyZWFkb25seS10YWJsZVwiIG1hdFNvcnQ+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkQ29sIG9mIHByb2Nlc3NlZEZpZWxkczsgbGV0IGkgPSBpbmRleFwiIFttYXRDb2x1bW5EZWZdPVwiZENvbC5jb25maWcubmFtZVwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlciAoY2xpY2spPVwiX2hlYWRlclNvcnRDbGljaygkZXZlbnQsIGRDb2wpXCIgYXJyb3dQb3NpdGlvbj1cImJlZm9yZVwiPlxuICAgICAgICAgIDxkaXY+e3sgZENvbC5jb25maWcubGFiZWwgfX08L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHNkay1tYXQtaGVhZGVyLWZpbHRlclwiPlxuICAgICAgICAgICAgPGltZyBjbGFzcz1cInBzZGstZmlsdGVyLXN2Zy1pY29uXCIgbmFtZT1cImZpbHRlck9uSWNvblwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiZ3JvdXBNZW51XCI+XG4gICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJwc2RrLWxpc3Qtdmlldy1zdmctaWNvblwiIHNyYz1cInt7IG1lbnVTdmdJY29uJCB9fVwiIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxtYXQtbWVudSAjZ3JvdXBNZW51PlxuICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIl9ncm91cEJ5KCRldmVudCwgZENvbClcIj5cbiAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwicHNkay1saXN0LXZpZXctc3ZnLWljb25cIiBzcmM9XCJ7eyBncm91cEJ5U3ZnSWNvbiQgfX1cIiAvPjxzcGFuPkdyb3VwIEJ5PC9zcGFuPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIl9zaG93VW5Hcm91cEJ5KGRDb2wpICYmIGJHcm91cGluZyRcIiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJfdW5Hcm91cEJ5KCRldmVudCwgZENvbClcIj5cbiAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwicHNkay1saXN0LXZpZXctc3ZnLWljb25cIiBzcmM9XCJ7eyBncm91cEJ5U3ZnSWNvbiQgfX1cIiAvPjxzcGFuPlVuZ3JvdXA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIl9maWx0ZXIoJGV2ZW50LCBkQ29sKVwiPlxuICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJwc2RrLWxpc3Qtdmlldy1zdmctaWNvblwiIHNyYz1cInt7IGZpbHRlclN2Z0ljb24kIH19XCIgLz48c3Bhbj5GaWx0ZXI8L3NwYW4+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICA8Y29tcG9uZW50LW1hcHBlclxuICAgICAgICAgICAgW25hbWVdPVwiZWxlbWVudFtpXS5nZXRQQ29ubmVjdCgpLmdldENvbXBvbmVudE5hbWUoKVwiXG4gICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICBwQ29ubiQ6IGVsZW1lbnRbaV0uZ2V0UENvbm5lY3QoKSxcbiAgICAgICAgICAgICAgZm9ybUdyb3VwJDogZm9ybUdyb3VwJFxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICBlcnJvck1zZz1cIlRhYmxlIHdhbnRzIGNvbXBvbmVudCBub3QgeWV0IGF2YWlsYWJsZToge3sgZWxlbWVudFtpXS5nZXRQQ29ubmVjdCgpLmdldENvbXBvbmVudE5hbWUoKSB9fVwiXG4gICAgICAgICAgPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJEZWxldGVJY29uXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJhbGxvd0VkaXRpbmdJbk1vZGFsXCI+XG4gICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj48L3RoPlxuICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50OyBpbmRleCBhcyBqXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWljb25cIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cInV0aWxpdHlNZW51XCI+XG4gICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cInBzZGstdXRpbGl0eS1jYXJkLWFjdGlvbnMtc3ZnLWljb25cIiBzcmM9XCJ7eyBzZXR0aW5nc1N2Z0ljb24kIH19XCIgLz5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxtYXQtbWVudSAjdXRpbGl0eU1lbnU9XCJtYXRNZW51XCIgb3ZlcmxhcFRyaWdnZXI9XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiZWRpdFJlY29yZChlbGVtZW50LCBqKVwiPkVkaXQ8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImRlbGV0ZVJlY29yZChqKVwiPkRlbGV0ZTwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L21hdC1tZW51PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uc1wiPjwvdHI+XG4gICAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGlzcGxheWVkQ29sdW1uc1wiPjwvdHI+XG4gICAgICA8dHIgY2xhc3M9XCJtYXQtcm93IHBzZGstbm8tcmVjb3Jkc1wiICptYXROb0RhdGFSb3c+XG4gICAgICAgIDx0ZCBpZD1cIm5vLXJlY29yZHNcIiBjbGFzcz1cIm1hdC1jZWxsXCIgW2F0dHIuY29sc3Bhbl09XCJkaXNwbGF5ZWRDb2x1bW5zLmxlbmd0aFwiPlxuICAgICAgICAgIHt7IHV0aWxzLmdldEdlbmVyaWNGaWVsZHNMb2NhbGl6ZWRWYWx1ZSgnQ29zbW9zRmllbGRzLmZpZWxkcy5saXN0cycsICdObyByZWNvcmRzIGZvdW5kLicpIH19XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L3RyPlxuICAgIDwvdGFibGU+XG4gICAgPHRhYmxlICpuZ0lmPVwiZWRpdGFibGVNb2RlICYmICFhbGxvd0VkaXRpbmdJbk1vZGFsXCIgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cImVsZW1lbnRzRGF0YVwiIGNsYXNzPVwibWF0LWVsZXZhdGlvbi16OFwiIGlkPVwiZWRpdGFibGUtdGFibGVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRDb2wgb2YgZmllbGREZWZzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkQ29sLm5hbWUgIT0gJ0RlbGV0ZUljb24nXCIgW21hdENvbHVtbkRlZl09XCJkQ29sLm5hbWVcIj5cbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIGNsYXNzPVwicHNkay1tYXQtaGVhZGVyXCI+e3sgZENvbC5sYWJlbCB9fTwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICAgIDxjb21wb25lbnQtbWFwcGVyXG4gICAgICAgICAgICAgIFtuYW1lXT1cImVsZW1lbnRbaV0uZ2V0UENvbm5lY3QoKS5nZXRDb21wb25lbnROYW1lKClcIlxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIHBDb25uJDogZWxlbWVudFtpXS5nZXRQQ29ubmVjdCgpLFxuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCQ6IGZvcm1Hcm91cCRcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIGVycm9yTXNnPVwiVGFibGUgd2FudHMgY29tcG9uZW50IG5vdCB5ZXQgYXZhaWxhYmxlOiB7eyBlbGVtZW50W2ldLmdldFBDb25uZWN0KCkuZ2V0Q29tcG9uZW50TmFtZSgpIH19XCJcbiAgICAgICAgICAgID48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiRGVsZXRlSWNvblwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPjwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50OyBpbmRleCBhcyBqXCI+XG4gICAgICAgICAgPGJ1dHRvbiBpZD1cImRlbGV0ZS1idXR0b25cIiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImRlbGV0ZVJlY29yZChqKVwiPlxuICAgICAgICAgICAgPGltZyBjbGFzcz1cInBzZGstdXRpbGl0eS1jYXJkLWFjdGlvbi1zdmctaWNvblwiIHNyYz1cInt7IG1lbnVJY29uT3ZlcnJpZGUkIH19XCIgLz5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zXCI+PC90cj5cbiAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zXCI+PC90cj5cbiAgICAgIDx0ciBjbGFzcz1cIm1hdC1yb3cgcHNkay1uby1yZWNvcmRzXCIgKm1hdE5vRGF0YVJvdz5cbiAgICAgICAgPHRkIGlkPVwibm8tcmVjb3Jkc1wiIGNsYXNzPVwibWF0LWNlbGxcIiBbYXR0ci5jb2xzcGFuXT1cImRpc3BsYXllZENvbHVtbnMubGVuZ3RoXCI+XG4gICAgICAgICAge3sgdXRpbHMuZ2V0R2VuZXJpY0ZpZWxkc0xvY2FsaXplZFZhbHVlKCdDb3Ntb3NGaWVsZHMuZmllbGRzLmxpc3RzJywgJ05vIHJlY29yZHMgZm91bmQuJykgfX1cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgPC90YWJsZT5cbiAgPC9kaXY+XG4gIDxidXR0b24gKm5nSWY9XCJzaG93QWRkUm93QnV0dG9uXCIgbWF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBzdHlsZT1cImZvbnQtc2l6ZTogMTZweFwiIChjbGljayk9XCJhZGRSZWNvcmQoKVwiPlxuICAgICsge3sgbG9jYWxpemVkVmFsKCdBZGQnLCBsb2NhbGVDYXRlZ29yeSkgfX1cbiAgPC9idXR0b24+XG48L25nLWNvbnRhaW5lcj5cblxuPCEtLSBwb3Agb3ZlcnMgZm9yIGZpbHRlcnMtLT5cbjxkaXYgKm5nSWY9XCJiU2hvd0ZpbHRlclBvcG92ZXIkXCIgY2xhc3M9XCJwc2RrLWRpYWxvZy1iYWNrZ3JvdW5kXCI+XG4gIDxkaXYgY2xhc3M9XCJwc2RrLW1vZGFsLWZpbGUtdG9wXCI+XG4gICAgPGg0PlxuICAgICAgRmlsdGVyOjxiPiB7eyBmaWx0ZXJDb250YWluc0xhYmVsJCB9fTwvYj5cbiAgICA8L2g0PlxuICAgIDxkaXYgKm5nSWY9XCJiQ29udGFpbnMkXCI+XG4gICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJwc2RrLWZ1bGwtd2lkdGhcIj5cbiAgICAgICAgPG1hdC1zZWxlY3QgW3ZhbHVlXT1cImZpbHRlckNvbnRhaW5zVHlwZSRcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cIl9maWx0ZXJDb250YWluc1R5cGUoJGV2ZW50KVwiPlxuICAgICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiY29udGFpbnNcIj5Db250YWluczwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cImVxdWFsc1wiPkVxdWFsczwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cInN0YXJ0c3dpdGhcIj5TdGFydHMgd2l0aDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwicHNkay1mdWxsLXdpZHRoXCI+XG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCB0eXBlPVwidGV4dFwiIFt2YWx1ZV09XCJmaWx0ZXJDb250YWluc1ZhbHVlJFwiIChjaGFuZ2UpPVwiX2ZpbHRlckNvbnRhaW5zVmFsdWUoJGV2ZW50KVwiIC8+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cImJEYXRlVGltZSRcIj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInBzZGstZnVsbC13aWR0aFwiPlxuICAgICAgICA8bWF0LXNlbGVjdCBbdmFsdWVdPVwiZmlsdGVyQ29udGFpbnNUeXBlJFwiIChzZWxlY3Rpb25DaGFuZ2UpPVwiX2ZpbHRlckNvbnRhaW5zVHlwZSgkZXZlbnQpXCI+XG4gICAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJub3RlcXVhbFwiPmlzIG5vdCBlcXVhbCB0bzwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+YWZ0ZXI8L21hdC1vcHRpb24+XG4gICAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5iZWZvcmU8L21hdC1vcHRpb24+XG4gICAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJudWxsXCI+aXMgbnVsbDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cIm5vdG51bGxcIj5pcyBub3QgbnVsbDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwiYklzRGF0ZSQgJiYgZmlsdGVyQ29udGFpbnNUeXBlJCAhPT0gJ251bGwnICYmIGZpbHRlckNvbnRhaW5zVHlwZSQgIT0gJ25vdG51bGwnXCIgY2xhc3M9XCJwc2RrLWZ1bGwtd2lkdGhcIj5cbiAgICAgICAgPG1hdC1sYWJlbD5EYXRlPC9tYXQtbGFiZWw+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgI2RhdGVJbnB1dFxuICAgICAgICAgIFttYXREYXRlcGlja2VyXT1cInBlZ2FkYXRlXCJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgW3ZhbHVlXT1cImZpbHRlckNvbnRhaW5zVmFsdWUkXCJcbiAgICAgICAgICAoZGF0ZUNoYW5nZSk9XCJfZmlsdGVyQ29udGFpbnNEYXRlVmFsdWUoJGV2ZW50LCBkYXRlSW5wdXQudmFsdWUpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJwZWdhZGF0ZVwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxuICAgICAgICA8bWF0LWRhdGVwaWNrZXIgI3BlZ2FkYXRlIFtzdGFydEF0XT1cImZpbHRlckNvbnRhaW5zVmFsdWUkXCI+PC9tYXQtZGF0ZXBpY2tlcj5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cImJJc0RhdGVUaW1lJCAmJiBmaWx0ZXJDb250YWluc1R5cGUkICE9PSAnbnVsbCcgJiYgZmlsdGVyQ29udGFpbnNUeXBlJCAhPSAnbm90bnVsbCdcIiBjbGFzcz1cInBzZGstZnVsbC13aWR0aFwiPlxuICAgICAgICA8bWF0LWxhYmVsPkRhdGUgdGltZTwvbWF0LWxhYmVsPlxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCIgW3ZhbHVlXT1cImZpbHRlckNvbnRhaW5zVmFsdWUkXCIgKGNoYW5nZSk9XCJfZmlsdGVyQ29udGFpbnNEYXRlVGltZVZhbHVlKCRldmVudClcIiAvPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwiYklzVGltZSQgJiYgZmlsdGVyQ29udGFpbnNUeXBlJCAhPT0gJ251bGwnICYmIGZpbHRlckNvbnRhaW5zVHlwZSQgIT0gJ25vdG51bGwnXCIgY2xhc3M9XCJwc2RrLWZ1bGwtd2lkdGhcIj5cbiAgICAgICAgPG1hdC1sYWJlbD5UaW1lPC9tYXQtbGFiZWw+XG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCB0eXBlPVwidGltZVwiIFt2YWx1ZV09XCJmaWx0ZXJDb250YWluc1ZhbHVlJFwiIChjaGFuZ2UpPVwiX2ZpbHRlckNvbnRhaW5zVGltZVZhbHVlKCRldmVudClcIiAvPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L2Rpdj5cblxuICAgIDxjb21wb25lbnQtbWFwcGVyXG4gICAgICBuYW1lPVwiQWN0aW9uQnV0dG9uc1wiXG4gICAgICBbcHJvcHNdPVwieyBhck1haW5CdXR0b25zJDogYXJGaWx0ZXJNYWluQnV0dG9ucyQsIGFyU2Vjb25kYXJ5QnV0dG9ucyQ6IGFyRmlsdGVyU2Vjb25kYXJ5QnV0dG9ucyQgfVwiXG4gICAgICBbcGFyZW50XT1cInRoaXNcIlxuICAgICAgW291dHB1dEV2ZW50c109XCJ7IGFjdGlvbkJ1dHRvbkNsaWNrOiBfb25GaWx0ZXJBY3Rpb25CdXR0b25DbGljayB9XCJcbiAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19