@messaia/cdk 15.0.0-rc31 → 15.0.0-rc32

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.
@@ -13,6 +13,7 @@ import { GenericFormComponent } from './components/generic-form.component';
13
13
  import { GenericListComponent } from './components/generic-list.component';
14
14
  import { GenericReactiveFormComponent } from './components/generic-reactive-form.component';
15
15
  import { Common } from './constants/common';
16
+ import { GlobalRoles } from './constants/global-roles';
16
17
  import { MessageType } from './enums/message-type';
17
18
  import { AuthHelper } from './helpers/auth-helper';
18
19
  import { BaseInterceptor } from './interceptors/base.interceptor';
@@ -23,7 +24,7 @@ import { FileService } from './services/file.service';
23
24
  import { LoadingScreenService } from './services/loading-screen.service';
24
25
  import { PrintService } from './services/print.service';
25
26
  import * as i0 from "@angular/core";
26
- export { AuthHelper, AuthUser, BaseComponent, BaseInterceptor, CachingInterceptor, FileService, GenericFormBaseComponent, GenericFormComponent, GenericListComponent, GenericReactiveFormComponent, LoadingScreenInterceptor, LoadingScreenService, MessageType, PrintService, VdDynamicTableConfigDialogComponent, Common };
27
+ export { AuthHelper, AuthUser, BaseComponent, BaseInterceptor, CachingInterceptor, FileService, GenericFormBaseComponent, GenericFormComponent, GenericListComponent, GenericReactiveFormComponent, LoadingScreenInterceptor, LoadingScreenService, MessageType, PrintService, VdDynamicTableConfigDialogComponent, Common, GlobalRoles };
27
28
  const DECLARATIONS = [VdDynamicTableConfigDialogComponent];
28
29
  export class MaterialModule {
29
30
  }
@@ -83,4 +84,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImpor
83
84
  ]
84
85
  }]
85
86
  }] });
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9iYXNlL2Jhc2UubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzVELE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzFHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzVGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUs5RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFFeEQsT0FBTyxFQUNOLFVBQVUsRUFDVixRQUFRLEVBQ1IsYUFBYSxFQUNiLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsV0FBVyxFQUNYLHdCQUF3QixFQUN4QixvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLDRCQUE0QixFQUs1Qix3QkFBd0IsRUFDeEIsb0JBQW9CLEVBQ3BCLFdBQVcsRUFDWCxZQUFZLEVBQ1osbUNBQW1DLEVBQ25DLE1BQU0sRUFDTixDQUFDO0FBRUYsTUFBTSxZQUFZLEdBQUcsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0FBUTNELE1BQU0sT0FBTyxjQUFjOzs4SEFBZCxjQUFjOytIQUFkLGNBQWMsWUFKekIsZUFBZTtRQUNmLGNBQWM7K0hBR0gsY0FBYyxZQUp6QixlQUFlO1FBQ2YsY0FBYzsyRkFHSCxjQUFjO2tCQU4xQixRQUFRO21CQUFDO29CQUNULE9BQU8sRUFBRTt3QkFDUixlQUFlO3dCQUNmLGNBQWM7cUJBQ2Q7aUJBQ0Q7O0FBd0JELE1BQU0sT0FBTyxZQUFZOzs0SEFBWixZQUFZOzZIQUFaLFlBQVksaUJBL0JILG1DQUFtQyxhQVl2RCxZQUFZO1FBQ1osV0FBVztRQUNYLG1CQUFtQjtRQUNuQixlQUFlO1FBQ2YsYUFBYSxFQVJGLGNBQWMsYUFSTCxtQ0FBbUM7NkhBK0I1QyxZQUFZLGFBWmI7UUFDVixFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7UUFDdEUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7UUFDekUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLHdCQUF3QixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7S0FDL0UsWUFYQSxZQUFZO1FBQ1osV0FBVztRQUNYLG1CQUFtQjtRQUNuQixlQUFlO1FBQ2YsYUFBYTtRQUNiLGNBQWM7MkZBY0gsWUFBWTtrQkFyQnhCLFFBQVE7bUJBQUM7b0JBQ1QsT0FBTyxFQUFFO3dCQUNSLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixjQUFjO3FCQUNkO29CQUNELFNBQVMsRUFBRTt3QkFDVixFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7d0JBQ3RFLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO3dCQUN6RSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsd0JBQXdCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtxQkFDL0U7b0JBQ0QsWUFBWSxFQUFFO3dCQUNiLFlBQVk7cUJBQ1o7b0JBQ0QsT0FBTyxFQUFFO3dCQUNSLFlBQVk7cUJBQ1o7aUJBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEcmFnRHJvcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBIVFRQX0lOVEVSQ0VQVE9SUyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdERpYWxvZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IFZkVGFibGVNb2R1bGUgfSBmcm9tICcuLi90YWJsZS90YWJsZS5tb2R1bGUnO1xyXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2Jhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVmREeW5hbWljVGFibGVDb25maWdEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZHluYW1pYy10YWJsZS1jb25maWctZGlhbG9nLmNvbW5wb25lbnQnO1xyXG5pbXBvcnQgeyBHZW5lcmljRm9ybUJhc2VDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZ2VuZXJpYy1mb3JtLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgR2VuZXJpY0Zvcm1Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZ2VuZXJpYy1mb3JtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEdlbmVyaWNMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2dlbmVyaWMtbGlzdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBHZW5lcmljUmVhY3RpdmVGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2dlbmVyaWMtcmVhY3RpdmUtZm9ybS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb21tb24gfSBmcm9tICcuL2NvbnN0YW50cy9jb21tb24nO1xyXG5pbXBvcnQgeyBNZXNzYWdlVHlwZSB9IGZyb20gJy4vZW51bXMvbWVzc2FnZS10eXBlJztcclxuaW1wb3J0IHsgQXV0aEhlbHBlciB9IGZyb20gJy4vaGVscGVycy9hdXRoLWhlbHBlcic7XHJcbmltcG9ydCB7IEJhc2VJbnRlcmNlcHRvciB9IGZyb20gJy4vaW50ZXJjZXB0b3JzL2Jhc2UuaW50ZXJjZXB0b3InO1xyXG5pbXBvcnQgeyBDYWNoaW5nSW50ZXJjZXB0b3IgfSBmcm9tICcuL2ludGVyY2VwdG9ycy9jYWNoaW5nLWludGVyY2VwdG9yJztcclxuaW1wb3J0IHsgTG9hZGluZ1NjcmVlbkludGVyY2VwdG9yIH0gZnJvbSAnLi9pbnRlcmNlcHRvcnMvbG9hZGluZy5pbnRlcmNlcHRvcic7XHJcbmltcG9ydCB7IElCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9pbnRlcmZhY2VzL2liYXNlLWNvbXBvbmVudCc7XHJcbmltcG9ydCB7IElHZW5lcmljRm9ybUJhc2VDb21wb25lbnQgfSBmcm9tICcuL2ludGVyZmFjZXMvaWdlbmVyaWMtZm9ybS1iYXNlJztcclxuaW1wb3J0IHsgSUdlbmVyaWNMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9pbnRlcmZhY2VzL2lnZW5lcmljLWxpc3QtY29tcG9uZW50JztcclxuaW1wb3J0IHsgSUdlbmVyaWNSZWFjdGl2ZUZvcm1CYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9pbnRlcmZhY2VzL2lnZW5lcmljLXJlYWN0aXZlLWZvcm0tYmFzZSc7XHJcbmltcG9ydCB7IEF1dGhVc2VyIH0gZnJvbSAnLi9tb2RlbHMvYXV0aC11c2VyJztcclxuaW1wb3J0IHsgRmlsZVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2ZpbGUuc2VydmljZSc7XHJcbmltcG9ydCB7IExvYWRpbmdTY3JlZW5TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9sb2FkaW5nLXNjcmVlbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHJpbnRTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wcmludC5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCB7XHJcblx0QXV0aEhlbHBlcixcclxuXHRBdXRoVXNlcixcclxuXHRCYXNlQ29tcG9uZW50LFxyXG5cdEJhc2VJbnRlcmNlcHRvcixcclxuXHRDYWNoaW5nSW50ZXJjZXB0b3IsXHJcblx0RmlsZVNlcnZpY2UsXHJcblx0R2VuZXJpY0Zvcm1CYXNlQ29tcG9uZW50LFxyXG5cdEdlbmVyaWNGb3JtQ29tcG9uZW50LFxyXG5cdEdlbmVyaWNMaXN0Q29tcG9uZW50LFxyXG5cdEdlbmVyaWNSZWFjdGl2ZUZvcm1Db21wb25lbnQsXHJcblx0SUJhc2VDb21wb25lbnQsXHJcblx0SUdlbmVyaWNMaXN0Q29tcG9uZW50LFxyXG5cdElHZW5lcmljRm9ybUJhc2VDb21wb25lbnQsXHJcblx0SUdlbmVyaWNSZWFjdGl2ZUZvcm1CYXNlQ29tcG9uZW50LFxyXG5cdExvYWRpbmdTY3JlZW5JbnRlcmNlcHRvcixcclxuXHRMb2FkaW5nU2NyZWVuU2VydmljZSxcclxuXHRNZXNzYWdlVHlwZSxcclxuXHRQcmludFNlcnZpY2UsXHJcblx0VmREeW5hbWljVGFibGVDb25maWdEaWFsb2dDb21wb25lbnQsXHJcblx0Q29tbW9uXHJcbn07XHJcblxyXG5jb25zdCBERUNMQVJBVElPTlMgPSBbVmREeW5hbWljVGFibGVDb25maWdEaWFsb2dDb21wb25lbnRdO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuXHRleHBvcnRzOiBbXHJcblx0XHRNYXRCdXR0b25Nb2R1bGUsXHJcblx0XHREcmFnRHJvcE1vZHVsZVxyXG5cdF1cclxufSlcclxuZXhwb3J0IGNsYXNzIE1hdGVyaWFsTW9kdWxlIHsgfVxyXG5cclxuQE5nTW9kdWxlKHtcclxuXHRpbXBvcnRzOiBbXHJcblx0XHRDb21tb25Nb2R1bGUsXHJcblx0XHRGb3Jtc01vZHVsZSxcclxuXHRcdFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcblx0XHRNYXREaWFsb2dNb2R1bGUsXHJcblx0XHRWZFRhYmxlTW9kdWxlLFxyXG5cdFx0TWF0ZXJpYWxNb2R1bGVcclxuXHRdLFxyXG5cdHByb3ZpZGVyczogW1xyXG5cdFx0eyBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUywgdXNlQ2xhc3M6IEJhc2VJbnRlcmNlcHRvciwgbXVsdGk6IHRydWUgfSxcclxuXHRcdHsgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsIHVzZUNsYXNzOiBDYWNoaW5nSW50ZXJjZXB0b3IsIG11bHRpOiB0cnVlIH0sXHJcblx0XHR7IHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLCB1c2VDbGFzczogTG9hZGluZ1NjcmVlbkludGVyY2VwdG9yLCBtdWx0aTogdHJ1ZSB9LFxyXG5cdF0sXHJcblx0ZGVjbGFyYXRpb25zOiBbXHJcblx0XHRERUNMQVJBVElPTlNcclxuXHRdLFxyXG5cdGV4cG9ydHM6IFtcclxuXHRcdERFQ0xBUkFUSU9OU1xyXG5cdF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFZkQmFzZU1vZHVsZSB7IH0iXX0=
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9iYXNlL2Jhc2UubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzVELE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzFHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzVGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDeEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFLOUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBRXhELE9BQU8sRUFDTixVQUFVLEVBQ1YsUUFBUSxFQUNSLGFBQWEsRUFDYixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLFdBQVcsRUFDWCx3QkFBd0IsRUFDeEIsb0JBQW9CLEVBQ3BCLG9CQUFvQixFQUNwQiw0QkFBNEIsRUFLNUIsd0JBQXdCLEVBQ3hCLG9CQUFvQixFQUNwQixXQUFXLEVBQ1gsWUFBWSxFQUNaLG1DQUFtQyxFQUNuQyxNQUFNLEVBQ04sV0FBVyxFQUNYLENBQUM7QUFFRixNQUFNLFlBQVksR0FBRyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7QUFRM0QsTUFBTSxPQUFPLGNBQWM7OzhIQUFkLGNBQWM7K0hBQWQsY0FBYyxZQUp6QixlQUFlO1FBQ2YsY0FBYzsrSEFHSCxjQUFjLFlBSnpCLGVBQWU7UUFDZixjQUFjOzJGQUdILGNBQWM7a0JBTjFCLFFBQVE7bUJBQUM7b0JBQ1QsT0FBTyxFQUFFO3dCQUNSLGVBQWU7d0JBQ2YsY0FBYztxQkFDZDtpQkFDRDs7QUF3QkQsTUFBTSxPQUFPLFlBQVk7OzRIQUFaLFlBQVk7NkhBQVosWUFBWSxpQkEvQkgsbUNBQW1DLGFBWXZELFlBQVk7UUFDWixXQUFXO1FBQ1gsbUJBQW1CO1FBQ25CLGVBQWU7UUFDZixhQUFhLEVBUkYsY0FBYyxhQVJMLG1DQUFtQzs2SEErQjVDLFlBQVksYUFaYjtRQUNWLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtRQUN0RSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtRQUN6RSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsd0JBQXdCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtLQUMvRSxZQVhBLFlBQVk7UUFDWixXQUFXO1FBQ1gsbUJBQW1CO1FBQ25CLGVBQWU7UUFDZixhQUFhO1FBQ2IsY0FBYzsyRkFjSCxZQUFZO2tCQXJCeEIsUUFBUTttQkFBQztvQkFDVCxPQUFPLEVBQUU7d0JBQ1IsWUFBWTt3QkFDWixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGNBQWM7cUJBQ2Q7b0JBQ0QsU0FBUyxFQUFFO3dCQUNWLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTt3QkFDdEUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7d0JBQ3pFLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO3FCQUMvRTtvQkFDRCxZQUFZLEVBQUU7d0JBQ2IsWUFBWTtxQkFDWjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1IsWUFBWTtxQkFDWjtpQkFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEhUVFBfSU5URVJDRVBUT1JTIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgVmRUYWJsZU1vZHVsZSB9IGZyb20gJy4uL3RhYmxlL3RhYmxlLm1vZHVsZSc7XHJcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBWZER5bmFtaWNUYWJsZUNvbmZpZ0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9keW5hbWljLXRhYmxlLWNvbmZpZy1kaWFsb2cuY29tbnBvbmVudCc7XHJcbmltcG9ydCB7IEdlbmVyaWNGb3JtQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9nZW5lcmljLWZvcm0tYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBHZW5lcmljRm9ybUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9nZW5lcmljLWZvcm0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgR2VuZXJpY0xpc3RDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZ2VuZXJpYy1saXN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEdlbmVyaWNSZWFjdGl2ZUZvcm1Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZ2VuZXJpYy1yZWFjdGl2ZS1mb3JtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbW1vbiB9IGZyb20gJy4vY29uc3RhbnRzL2NvbW1vbic7XHJcbmltcG9ydCB7IEdsb2JhbFJvbGVzIH0gZnJvbSAnLi9jb25zdGFudHMvZ2xvYmFsLXJvbGVzJztcclxuaW1wb3J0IHsgTWVzc2FnZVR5cGUgfSBmcm9tICcuL2VudW1zL21lc3NhZ2UtdHlwZSc7XHJcbmltcG9ydCB7IEF1dGhIZWxwZXIgfSBmcm9tICcuL2hlbHBlcnMvYXV0aC1oZWxwZXInO1xyXG5pbXBvcnQgeyBCYXNlSW50ZXJjZXB0b3IgfSBmcm9tICcuL2ludGVyY2VwdG9ycy9iYXNlLmludGVyY2VwdG9yJztcclxuaW1wb3J0IHsgQ2FjaGluZ0ludGVyY2VwdG9yIH0gZnJvbSAnLi9pbnRlcmNlcHRvcnMvY2FjaGluZy1pbnRlcmNlcHRvcic7XHJcbmltcG9ydCB7IExvYWRpbmdTY3JlZW5JbnRlcmNlcHRvciB9IGZyb20gJy4vaW50ZXJjZXB0b3JzL2xvYWRpbmcuaW50ZXJjZXB0b3InO1xyXG5pbXBvcnQgeyBJQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vaW50ZXJmYWNlcy9pYmFzZS1jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJR2VuZXJpY0Zvcm1CYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9pbnRlcmZhY2VzL2lnZW5lcmljLWZvcm0tYmFzZSc7XHJcbmltcG9ydCB7IElHZW5lcmljTGlzdENvbXBvbmVudCB9IGZyb20gJy4vaW50ZXJmYWNlcy9pZ2VuZXJpYy1saXN0LWNvbXBvbmVudCc7XHJcbmltcG9ydCB7IElHZW5lcmljUmVhY3RpdmVGb3JtQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vaW50ZXJmYWNlcy9pZ2VuZXJpYy1yZWFjdGl2ZS1mb3JtLWJhc2UnO1xyXG5pbXBvcnQgeyBBdXRoVXNlciB9IGZyb20gJy4vbW9kZWxzL2F1dGgtdXNlcic7XHJcbmltcG9ydCB7IEZpbGVTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9maWxlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMb2FkaW5nU2NyZWVuU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvbG9hZGluZy1zY3JlZW4uc2VydmljZSc7XHJcbmltcG9ydCB7IFByaW50U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcHJpbnQuc2VydmljZSc7XHJcblxyXG5leHBvcnQge1xyXG5cdEF1dGhIZWxwZXIsXHJcblx0QXV0aFVzZXIsXHJcblx0QmFzZUNvbXBvbmVudCxcclxuXHRCYXNlSW50ZXJjZXB0b3IsXHJcblx0Q2FjaGluZ0ludGVyY2VwdG9yLFxyXG5cdEZpbGVTZXJ2aWNlLFxyXG5cdEdlbmVyaWNGb3JtQmFzZUNvbXBvbmVudCxcclxuXHRHZW5lcmljRm9ybUNvbXBvbmVudCxcclxuXHRHZW5lcmljTGlzdENvbXBvbmVudCxcclxuXHRHZW5lcmljUmVhY3RpdmVGb3JtQ29tcG9uZW50LFxyXG5cdElCYXNlQ29tcG9uZW50LFxyXG5cdElHZW5lcmljTGlzdENvbXBvbmVudCxcclxuXHRJR2VuZXJpY0Zvcm1CYXNlQ29tcG9uZW50LFxyXG5cdElHZW5lcmljUmVhY3RpdmVGb3JtQmFzZUNvbXBvbmVudCxcclxuXHRMb2FkaW5nU2NyZWVuSW50ZXJjZXB0b3IsXHJcblx0TG9hZGluZ1NjcmVlblNlcnZpY2UsXHJcblx0TWVzc2FnZVR5cGUsXHJcblx0UHJpbnRTZXJ2aWNlLFxyXG5cdFZkRHluYW1pY1RhYmxlQ29uZmlnRGlhbG9nQ29tcG9uZW50LFxyXG5cdENvbW1vbixcclxuXHRHbG9iYWxSb2xlc1xyXG59O1xyXG5cclxuY29uc3QgREVDTEFSQVRJT05TID0gW1ZkRHluYW1pY1RhYmxlQ29uZmlnRGlhbG9nQ29tcG9uZW50XTtcclxuXHJcbkBOZ01vZHVsZSh7XHJcblx0ZXhwb3J0czogW1xyXG5cdFx0TWF0QnV0dG9uTW9kdWxlLFxyXG5cdFx0RHJhZ0Ryb3BNb2R1bGVcclxuXHRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXRlcmlhbE1vZHVsZSB7IH1cclxuXHJcbkBOZ01vZHVsZSh7XHJcblx0aW1wb3J0czogW1xyXG5cdFx0Q29tbW9uTW9kdWxlLFxyXG5cdFx0Rm9ybXNNb2R1bGUsXHJcblx0XHRSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG5cdFx0TWF0RGlhbG9nTW9kdWxlLFxyXG5cdFx0VmRUYWJsZU1vZHVsZSxcclxuXHRcdE1hdGVyaWFsTW9kdWxlXHJcblx0XSxcclxuXHRwcm92aWRlcnM6IFtcclxuXHRcdHsgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsIHVzZUNsYXNzOiBCYXNlSW50ZXJjZXB0b3IsIG11bHRpOiB0cnVlIH0sXHJcblx0XHR7IHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLCB1c2VDbGFzczogQ2FjaGluZ0ludGVyY2VwdG9yLCBtdWx0aTogdHJ1ZSB9LFxyXG5cdFx0eyBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUywgdXNlQ2xhc3M6IExvYWRpbmdTY3JlZW5JbnRlcmNlcHRvciwgbXVsdGk6IHRydWUgfSxcclxuXHRdLFxyXG5cdGRlY2xhcmF0aW9uczogW1xyXG5cdFx0REVDTEFSQVRJT05TXHJcblx0XSxcclxuXHRleHBvcnRzOiBbXHJcblx0XHRERUNMQVJBVElPTlNcclxuXHRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWZEJhc2VNb2R1bGUgeyB9Il19
@@ -13,6 +13,7 @@ import { ServiceLocator } from '../../common/services/service-locator';
13
13
  import { VdDialogService } from '../../dialogs/services/dialog.service';
14
14
  import { VdMediaService } from '../../media/services/media.service';
15
15
  import { Common } from '../constants/common';
16
+ import { GlobalRoles } from '../constants/global-roles';
16
17
  import { MessageType } from '../enums/message-type';
17
18
  import { AuthHelper } from '../helpers/auth-helper';
18
19
  import * as i0 from "@angular/core";
@@ -68,6 +69,18 @@ export class BaseComponent {
68
69
  * Current user object
69
70
  */
70
71
  this.currentUser = AuthHelper.user;
72
+ /**
73
+ * Is the current user a client admin
74
+ */
75
+ this.isAdmin = AuthHelper.hasRole(GlobalRoles.Administrator);
76
+ /**
77
+ * Is the current user a client admin
78
+ */
79
+ this.isClientAdmin = AuthHelper.hasRole(GlobalRoles.ClientAdministrator);
80
+ /**
81
+ * Is the current user a department admin
82
+ */
83
+ this.isDepartmentAdmin = AuthHelper.hasRole(GlobalRoles.DepartmentAdministrator);
71
84
  /**
72
85
  * If true, set url hash
73
86
  */
@@ -541,4 +554,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImpor
541
554
  type: ViewChildren,
542
555
  args: [MatExpansionPanel]
543
556
  }] } });
544
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9iYXNlL2NvbXBvbmVudHMvYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQWlCLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBUSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEksT0FBTyxFQUFFLFNBQVMsRUFBbUIsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQTBCLGFBQWEsRUFBRSxNQUFNLEVBQXVCLE1BQU0saUJBQWlCLENBQUM7QUFDckgsT0FBTyxFQUFjLEVBQUUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVwRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0MsT0FBTyxFQUFF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QWlDO3NCQUQxQyxZQUFZO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFPM0MsMEJBQTBCO3NCQURuQyxZQUFZO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBPbkluaXQsIFF1ZXJ5TGlzdCwgVHlwZSwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nQ29uZmlnIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgTWF0RXhwYW5zaW9uUGFuZWwgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9leHBhbnNpb24nO1xyXG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XHJcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIsIFVybFNlZ21lbnQsIFVybFRyZWUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbnRleHRIZWxwZXIgfSBmcm9tICcuLi8uLi9jb21tb24vY29tbW9uLm1vZHVsZSc7XHJcbmltcG9ydCB7IEFwcFNldHRpbmcgfSBmcm9tICcuLi8uLi9jb21tb24vbW9kZWxzL2FwcC1zZXR0aW5nJztcclxuaW1wb3J0IHsgU2VydmljZUxvY2F0b3IgfSBmcm9tICcuLi8uLi9jb21tb24vc2VydmljZXMvc2VydmljZS1sb2NhdG9yJztcclxuaW1wb3J0IHsgVmREaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZGlhbG9ncy9zZXJ2aWNlcy9kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IFZkTWVkaWFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbWVkaWEvc2VydmljZXMvbWVkaWEuc2VydmljZSc7XHJcbmltcG9ydCB7IE1lbnUgfSBmcm9tICcuLi8uLi9tZW51L21vZGVscy9tZW51JztcclxuaW1wb3J0IHsgQ29tbW9uIH0gZnJvbSAnLi4vY29uc3RhbnRzL2NvbW1vbic7XHJcbmltcG9ydCB7IE1lc3NhZ2VUeXBlIH0gZnJvbSAnLi4vZW51bXMvbWVzc2FnZS10eXBlJztcclxuaW1wb3J0IHsgQXV0aEhlbHBlciB9IGZyb20gJy4uL2hlbHBlcnMvYXV0aC1oZWxwZXInO1xyXG5pbXBvcnQgeyBJQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvaWJhc2UtY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXV0aFVzZXIgfSBmcm9tICcuLi9tb2RlbHMvYXV0aC11c2VyJztcclxuXHJcbi8qKlxyXG4gKiBBIGJhc2UgbGlzdCBjb21wb25lbnQgZm9yIGNvbXBvbmVudHMgd2l0aCBwYWdpbmF0aW9uIHN1cHBvcnRcclxuICovXHJcbi8vIEBkeW5hbWljXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIElCYXNlQ29tcG9uZW50LCBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG5cdC8qKlxyXG5cdCAqIEFwcCBzZXR0aW5nc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBhcHBTZXR0aW5nOiBBcHBTZXR0aW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBNZW51IGl0ZW1zXHJcblx0ICovXHJcblx0cHVibGljIG1lbnU6IE1lbnU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBuYW1lIG9mIHRoZSBwcm9qZWN0XHJcblx0ICovXHJcblx0cHVibGljIHByb2plY3ROYW1lOiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSB0aXRsZSBvZiB0aGUgY3VycmVudCBwYWdlXHJcblx0ICovXHJcblx0cHVibGljIHRpdGxlOiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBzdWJ0aXRsZSBvZiB0aGUgY3VycmVudCBvdXRsZXRcclxuXHQgKi9cclxuXHRwdWJsaWMgc3VidGl0bGU6IHN0cmluZyA9ICcnO1xyXG5cclxuXHQvKipcclxuXHQgKiBJZiB0cnVlLCB1c2Ugc29tZSBkdW1teSBkYXRhIGFuZCBzaG93IGRlYnVnIGxvZ3NcclxuXHQgKi9cclxuXHRwdWJsaWMgZGVidWc6IGJvb2xlYW47XHJcblxyXG5cdC8qKlx0IFxyXG5cdCAqIExvYWRpbmcgc3RhdHVzXHJcblx0ICovXHJcblx0cHVibGljIGlzTG9hZGluZzogYm9vbGVhbjtcclxuXHJcblx0LyoqXHJcblx0ICogaGFuZGxlRXhwYW5zaW9uUGFuZWxDaGFuZ2VzOiBib29sZWFuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgaGFuZGxlRXhwYW5zaW9uUGFuZWxDaGFuZ2VzOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcblx0LyoqXHJcblx0ICogU2F2aW5nIHN0YXR1c1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBfaXNTYXZpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRwdWJsaWMgZ2V0IGlzU2F2aW5nKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5faXNTYXZpbmcgfHwgdGhpcy5pc0xvYWRpbmc7IH1cclxuXHRwdWJsaWMgc2V0IGlzU2F2aW5nKGlzU2F2aW5nOiBib29sZWFuKSB7IHRoaXMuaXNMb2FkaW5nID0gdGhpcy5faXNTYXZpbmcgPSBpc1NhdmluZzsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBBIGZsYWcgZWluZGljYXRlcyB0aGF0IHRoZSBlZGl0b3IgaXMgaW5pdGVkXHJcblx0ICovXHJcblx0cHVibGljIGlzRWRpdG9ySW5pdGlhbHplZDogYm9vbGVhbjtcclxuXHJcblx0LyoqXHJcblx0ICogUmVwcmVzZW50cyB0aGUgcmVxdWVzdCBlcnJvcnNcclxuXHQgKi9cclxuXHRwdWJsaWMgZXJyb3JzOiBBcnJheTxzdHJpbmc+ID0gbmV3IEFycmF5PHN0cmluZz4oKTtcclxuXHJcblx0LyoqXHJcblx0ICogVXNlZCB0byBldmFsdWF0ZSB3aGV0aGVyIGEgZ2l2ZW4gbWVkaWEgcXVlcnkgaXMgdHJ1ZSBvciBmYWxzZSBnaXZlbiB0aGUgY3VycmVudCBkZXZpY2UncyBzY3JlZW4gLyB3aW5kb3cgc2l6ZS5cclxuXHQgKi9cclxuXHRwdWJsaWMgbWVkaWE6IFZkTWVkaWFTZXJ2aWNlO1xyXG5cclxuXHQvKipcclxuXHQgKiBBbGxvd2VkIGZpbGUgZXh0ZW5zaW9uc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBhbGxvd2VkRXh0ZW5zaW9uczogc3RyaW5nW10gPSBDb21tb24uYWxsb3dlZEV4dGVuc2lvbnM7XHJcblxyXG5cdC8qKlxyXG5cdCAqIHRpbnlNQ0UgcGx1Z2luc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBlZGl0b3JQbHVnaW5zOiBzdHJpbmcgPSBDb21tb24uZWRpdG9yUGx1Z2lucztcclxuXHJcblx0LyoqXHJcblx0ICogdGlueU1DRSBlZGl0b3JcclxuXHQgKi9cclxuXHRwdWJsaWMgZWRpdG9yVG9vbGJhcjogc3RyaW5nID0gQ29tbW9uLmVkaXRvclRvb2xiYXI7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEVkaXRvciBjb25maWd1cmF0aW9uXHJcblx0ICovXHJcblx0cHVibGljIGVkaXRvckNvbmZpZzogYW55ID0ge307XHJcblxyXG5cdC8qKlxyXG5cdCAqIFByb3ZpZGVzIHRoZSBuYXZpZ2F0aW9uIGFuZCB1cmwgbWFuaXB1bGF0aW9uIGNhcGFiaWxpdGllcy5cclxuXHQgKi9cclxuXHRwdWJsaWMgcm91dGVyOiBSb3V0ZXI7XHJcblxyXG5cdC8qKlxyXG5cdCAqIHVybEhhc2g6IHN0cmluZ1xyXG5cdCAqL1xyXG5cdHB1YmxpYyB1cmxIYXNoOiBzdHJpbmcgPSBudWxsO1xyXG5cclxuXHQvKipcclxuXHQgKiBDbGFzcyBuYW1lXHJcblx0ICovXHJcblx0cHVibGljIGNsYXNzTmFtZTogc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBDcmVhdGUgcGVybWlzc2lvblxyXG5cdCAqL1xyXG5cdHB1YmxpYyBjYW5DcmVhdGU6IGJvb2xlYW47XHJcblxyXG5cdC8qKlxyXG5cdCAqIFVwZGF0ZSBwZXJtaXNzaW9uXHJcblx0ICovXHJcblx0cHVibGljIGNhblVwZGF0ZTogYm9vbGVhbjtcclxuXHJcblx0LyoqXHJcblx0ICogQ3VycmVudCByb3V0ZVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBjdXJyZW50Um91dGU6IHN0cmluZztcclxuXHJcblx0LyoqXHJcblx0ICogQ3VycmVudCBiYXNlIHJvdXRlXHJcblx0ICovXHJcblx0cHVibGljIGN1cnJlbnRCYXNlUm91dGU6IHN0cmluZztcclxuXHJcblx0LyoqXHJcblx0ICogQSB1cmwgdG8gcmV0dXJuIHRvIGFmdGVyIHNhdmVcclxuXHQgKi9cclxuXHRwdWJsaWMgcmV0dXJuVXJsOiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEN1cnJlbnQgdXNlciBvYmplY3RcclxuXHQgKi9cclxuXHRwdWJsaWMgY3VycmVudFVzZXI6IEF1dGhVc2VyID0gQXV0aEhlbHBlci51c2VyO1xyXG5cclxuXHQvKipcclxuXHQgKiBBIHNlcnZpY2UgdGhhdCBjYW4gYmUgdXNlZCB0byBnZXQgYW5kIHNldCB0aGUgdGl0bGUgb2YgYSBjdXJyZW50IEhUTUwgZG9jdW1lbnQuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIHRpdGxlU2VydmljZTogVGl0bGU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgc2VydmljZSB0byBkaXNwYXRjaCBNYXRlcmlhbCBEZXNpZ24gc25hY2sgYmFyIG1lc3NhZ2VzLlxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBzbmFja0JhclNlcnZpY2U6IE1hdFNuYWNrQmFyO1xyXG5cclxuXHQvKipcclxuXHQgKiBBIHNlcnZpY2UgdG8gc2hvdyBjb25pcm0gYW5kIHByb21wdCBkaWFsb2dzLlxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBkaWFsb2dTZXJ2aWNlOiBWZERpYWxvZ1NlcnZpY2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgc2VydmljZSB0byBzaG93IGNvbmlybSBhbmQgcHJvbXB0IGRpYWxvZ3MuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGRpYWxvZzogTWF0RGlhbG9nO1xyXG5cclxuXHQvKipcclxuXHQgKiBsb2NhdGlvbjogTG9jYXRpb25cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgbG9jYXRpb246IExvY2F0aW9uO1xyXG5cclxuXHQvKipcclxuXHQgKiBJZiB0cnVlLCBzZXQgdXJsIGhhc2hcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgc2V0VXJsSGFzaDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIE1hdEV4cGFuc2lvblBhbmVsIHJlZlxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGRyZW4oTWF0RXhwYW5zaW9uUGFuZWwsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxyXG5cdHByb3RlY3RlZCBtYXRFeHBhbnNpb25QYW5lbEVsZW1lbnRRdWVyeUxpc3Q6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcclxuXHJcblx0LyoqXHJcblx0ICogTWF0RXhwYW5zaW9uUGFuZWwgcmVmXHJcblx0ICovXHJcblx0QFZpZXdDaGlsZHJlbihNYXRFeHBhbnNpb25QYW5lbClcclxuXHRwcm90ZWN0ZWQgbWF0RXhwYW5zaW9uUGFuZWxRdWVyeUxpc3Q6IFF1ZXJ5TGlzdDxNYXRFeHBhbnNpb25QYW5lbD47XHJcblxyXG5cdC8qKlxyXG5cdCAqIG1hdEV4cGFuc2lvblBhbmVsU3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW11cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgbWF0RXhwYW5zaW9uUGFuZWxTdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBDb25zdHJ1Y3RvclxyXG5cdCAqL1xyXG5cdGNvbnN0cnVjdG9yKHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByb3RlY3RlZCBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuXHRcdHRoaXMudGl0bGVTZXJ2aWNlID0gdGhpcy5nZXRTZXJ2aWNlKFRpdGxlKTtcclxuXHRcdHRoaXMuZGlhbG9nU2VydmljZSA9IHRoaXMuZ2V0U2VydmljZShWZERpYWxvZ1NlcnZpY2UpO1xyXG5cdFx0dGhpcy5kaWFsb2cgPSB0aGlzLmdldFNlcnZpY2UoTWF0RGlhbG9nKTtcclxuXHRcdHRoaXMubWVkaWEgPSB0aGlzLmdldFNlcnZpY2UoVmRNZWRpYVNlcnZpY2UpO1xyXG5cdFx0dGhpcy5zbmFja0JhclNlcnZpY2UgPSB0aGlzLmdldFNlcnZpY2UoTWF0U25hY2tCYXIpO1xyXG5cdFx0dGhpcy5yb3V0ZXIgPSB0aGlzLmdldFNlcnZpY2UoUm91dGVyKTtcclxuXHRcdHRoaXMuYXBwU2V0dGluZyA9IHRoaXMuZ2V0U2VydmljZShBcHBTZXR0aW5nKTtcclxuXHRcdHRoaXMubG9jYXRpb24gPSB0aGlzLmdldFNlcnZpY2UoTG9jYXRpb24pO1xyXG5cclxuXHRcdENvbnRleHRIZWxwZXIuYWN0aXZhdGVkUm91dGUgPSByb3V0ZTtcclxuXHRcdENvbnRleHRIZWxwZXIucm91dGVyID0gdGhpcy5yb3V0ZXI7XHJcblx0XHRDb250ZXh0SGVscGVyLmFwcFNldHRpbmcgPSB0aGlzLmFwcFNldHRpbmc7XHJcblxyXG5cdFx0dGhpcy5pbml0RWRpdG9yKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBMaWZlY3ljbGUgaG9vayB0aGF0IGlzIGNhbGxlZCBhZnRlciBkYXRhLWJvdW5kIHByb3BlcnRpZXMgXHJcblx0ICogb2YgYSBkaXJlY3RpdmUgYXJlIGluaXRpYWxpemVkLlxyXG5cdCAqL1xyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0LyogR2V0IG1lbnUgaXRlbXMgZnJvbSByb3V0ZSBzbmFwc2hvdCAqL1xyXG5cdFx0dmFyIG1haW5Sb3V0ZSA9IHRoaXMuZ2V0TWFpblJvdXRlKHRoaXMucm91dGUuc25hcHNob3QpO1xyXG5cdFx0aWYgKG1haW5Sb3V0ZSkge1xyXG5cdFx0XHR0aGlzLm1lbnUgPSBtYWluUm91dGUuZGF0YS5tZW51O1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIFNldCBwcm9qZWN0IG5hbWUgJiBkZWJ1ZyBtb2RlICovXHJcblx0XHR0aGlzLnByb2plY3ROYW1lID0gdGhpcy5hcHBTZXR0aW5nLnByb2plY3ROYW1lO1xyXG5cdFx0dGhpcy5kZWJ1ZyA9IHRoaXMuYXBwU2V0dGluZy5kZWJ1ZztcclxuXHJcblx0XHQvKiBHZXQgdGhlIGhhc2ggZnJvbSB0aGUgdXJsICovXHJcblx0XHR0aGlzLnJvdXRlLmZyYWdtZW50LnN1YnNjcmliZSgoZnJhZ21lbnQ6IHN0cmluZykgPT4gdGhpcy51cmxIYXNoID0gZnJhZ21lbnQpO1xyXG5cclxuXHRcdC8qKlxyXG5cdFx0ICogQ2hlY2sgcGVybWlzc2lvbnNcclxuXHRcdCAqL1xyXG5cdFx0aWYgKHRoaXMucm91dGUucGFyZW50KSB7XHJcblx0XHRcdHRoaXMucm91dGUucGFyZW50LnVybC5zdWJzY3JpYmUoKHVybDogVXJsU2VnbWVudFtdKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5jbGFzc05hbWUgPz89IHVybC5sZW5ndGggPyB1cmxbMF0ucGF0aC5yZXBsYWNlKC8oLiopcyQvLCAnJDEnKS5yZXBsYWNlKC9eLi8sICh1cmxbMF0ucGF0aFswXSB8fCAnJykudG9VcHBlckNhc2UoKSkgOiAnJztcclxuXHRcdFx0XHR0aGlzLmNhbkNyZWF0ZSA9IEF1dGhIZWxwZXIuaXNQZXJtaXR0ZWQoJ0NyZWF0ZScsIGBDcmVhdGUke3RoaXMuY2xhc3NOYW1lfWApO1xyXG5cdFx0XHRcdHRoaXMuY2FuVXBkYXRlID0gQXV0aEhlbHBlci5pc1Blcm1pdHRlZCgnVXBkYXRlJywgYFVwZGF0ZSR7dGhpcy5jbGFzc05hbWV9YCk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIFNldCBjdXJyZW50IHJvdXRlICovXHJcblx0XHR0aGlzLmN1cnJlbnRSb3V0ZSA9IGJ0b2EodGhpcy5yb3V0ZXIudXJsKTtcclxuXHRcdHRoaXMuY3VycmVudEJhc2VSb3V0ZSA9IHRoaXMucm91dGVyLnVybD8uc3BsaXQoJz8nKVswXT8uc3BsaXQoJzsnKVswXTtcclxuXHJcblx0XHQvKipcclxuXHRcdCAqIFNldCBwYWdlIHRpdGxlXHJcblx0XHQgKi9cclxuXHRcdHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoeCA9PiB7XHJcblx0XHRcdGlmICh4IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xyXG5cdFx0XHRcdHRoaXMuc2V0VGl0bGVzKCk7XHJcblx0XHRcdFx0dGhpcy5jdXJyZW50Um91dGUgPSBidG9hKHgudXJsKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblxyXG5cdFx0LyogR2V0IHRoZSByZXR1cm4gdXJsIGlmIGFueSAqL1xyXG5cdFx0dGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoeCA9PiB0aGlzLnNldFJldHVyblVybCh4LnJldHVyblVybCkpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTGlmZWN5Y2xlIGhvb2sgdGhhdCBpcyBjYWxsZWQgYWZ0ZXIgYSBjb21wb25lbnQncyB2aWV3IGhhcyBiZWVuIGZ1bGx5IGluaXRpYWxpemVkLlxyXG5cdCAqL1xyXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuXHRcdC8qIEJyb2FkY2FzdCB0byBhbGwgbGlzdGVuZXIgb2JzZXJ2YWJsZXMgd2hlbiBsb2FkaW5nIHRoZSBwYWdlICovXHJcblx0XHR0aGlzLm1lZGlhLmJyb2FkY2FzdCgpO1xyXG5cclxuXHRcdC8qIFNldCB0aXRsZXMgKi9cclxuXHRcdHRoaXMuc2V0VGl0bGVzKCk7XHJcblxyXG5cdFx0LyogXHJcblx0XHQgKiBGb3JjZSBhIG5ldyBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlIHNpbmNlIGNoYW5nZSBkZXRlY3Rpb25zIFxyXG5cdFx0ICogaGF2ZSBmaW5pc2hlZCB3aGVuIGBuZ0FmdGVyVmlld0luaXRgIGlzIGV4ZWN1dGVkXHJcblx0XHQgKi9cclxuXHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuXHRcdC8qIExpc3RlbiBmb3IgZXhwYW5zaW9uIHBhbmVsIGNoYW5nZXMgKi9cclxuXHRcdGlmICh0aGlzLmhhbmRsZUV4cGFuc2lvblBhbmVsQ2hhbmdlcykge1xyXG5cdFx0XHR0aGlzLm9uRXhwYW5zaW9uUGFuZWxDaGFuZ2VzKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZWZyZXNocyB0aGlzIHBhZ2UvY29tcG9uZW50XHJcblx0ICovXHJcblx0cHVibGljIHJlbG9hZFBhZ2UoKTogdm9pZCB7XHJcblx0XHRsZXQgY3VycmVudFVybCA9IHRoaXMucm91dGVyLnVybDtcclxuXHRcdHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy8nLCB7IHJlcGxhY2VVcmw6IHRydWUgfSkudGhlbigoKSA9PiB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGN1cnJlbnRVcmwsIHsgcmVwbGFjZVVybDogdHJ1ZSB9KSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBOYXZpZ2F0ZXMgYmFjayB0byByZXR1cm4gdXJsXHJcblx0ICovXHJcblx0cHVibGljIG5hdmlnYXRlVG9SZXR1cm5VcmwoKTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5yZXR1cm5VcmwpIHtcclxuXHRcdFx0bGV0IHVybFRyZWU6IFVybFRyZWUgPSB0aGlzLnJvdXRlci5wYXJzZVVybCh0aGlzLnJldHVyblVybCk7XHJcblx0XHRcdHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodXJsVHJlZS50b1N0cmluZygpKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldHMgcmV0dXJuIHVybFxyXG5cdCAqIEBwYXJhbSByZXR1cm5VcmwgXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIHNldFJldHVyblVybChyZXR1cm5Vcmw6IHN0cmluZyk6IHZvaWQge1xyXG5cdFx0dHJ5IHsgdGhpcy5yZXR1cm5VcmwgPSByZXR1cm5VcmwgPyBkZWNvZGVVUklDb21wb25lbnQoYXRvYihyZXR1cm5VcmwpKSA6IG51bGw7IH1cclxuXHRcdGNhdGNoIChlcnJvcikgeyB9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBMaXN0ZW4gZm9yIGV4cGFuc2lvbiBwYW5lbCBjaGFuZ2VzXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIG9uRXhwYW5zaW9uUGFuZWxDaGFuZ2VzKCk6IHZvaWQge1xyXG5cdFx0LyogTGlzdGVuIGZvciBleHBhbnNpb24gcGFuZWwgY2hhbmdlcyAqL1xyXG5cdFx0dGhpcy5tYXRFeHBhbnNpb25QYW5lbFF1ZXJ5TGlzdD8uY2hhbmdlcy5zdWJzY3JpYmUoXyA9PiB7XHJcblx0XHRcdC8qIFVuc3Vic2NyaWJlIGZyb20gb2xkICdvcGVuZWQnIGFuZCAnY2xvc2VkJyBzdWJzY3JpcHRpb25zICovXHJcblx0XHRcdHRoaXMubWF0RXhwYW5zaW9uUGFuZWxTdWJzY3JpcHRpb25zLmZvckVhY2goeCA9PiB4LnVuc3Vic2NyaWJlKCkpO1xyXG5cclxuXHRcdFx0LyogRGV0ZWN0IGNoYW5nZXMgKi9cclxuXHRcdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG5cdFx0XHQvKiBHZXQgdGhlIHBhbmVsIGVuZHMgd2l0aCB0aGUgSUQgJ25ldycgKi9cclxuXHRcdFx0dmFyIG5ld0V4cGFuc2lvblBhbmVsSW5kZXggPSB0aGlzLm1hdEV4cGFuc2lvblBhbmVsRWxlbWVudFF1ZXJ5TGlzdD8udG9BcnJheSgpPy5maW5kSW5kZXgoeCA9PiB4Lm5hdGl2ZUVsZW1lbnQ/LmlkPy5lbmRzV2l0aCgnLm5ldycpKTtcclxuXHRcdFx0aWYgKG5ld0V4cGFuc2lvblBhbmVsSW5kZXggPj0gMCkge1xyXG5cdFx0XHRcdC8qIENsb3NlIGFsbCBwYW5lbHMgKi9cclxuXHRcdFx0XHR0aGlzLm1hdEV4cGFuc2lvblBhbmVsUXVlcnlMaXN0Py5maXJzdD8uYWNjb3JkaW9uPy5jbG9zZUFsbCgpO1xyXG5cclxuXHRcdFx0XHQvKiBPcGVuIHRoZSBuZXcgcGFuZWwgKi9cclxuXHRcdFx0XHR0aGlzLm1hdEV4cGFuc2lvblBhbmVsUXVlcnlMaXN0Py50b0FycmF5KClbbmV3RXhwYW5zaW9uUGFuZWxJbmRleF0/Lm9wZW4oKTtcclxuXHJcblx0XHRcdFx0LyogRGV0ZWN0IGNoYW5nZXMgKi9cclxuXHRcdFx0XHR0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHQvKiBGaW5kIHRoZSBpbmRleCBvZiB0aGUgcGFuZWwgd2l0aCB0aGUgc3BlY2lmaWVkIGVsZW1lbnQgSUQgKi9cclxuXHRcdFx0XHR0aGlzLnVybEhhc2g/LnNwbGl0KCcuJylcclxuXHRcdFx0XHRcdD8ucmVkdWNlKChhY2N1bXVsYXRvciwgY3VycmVudFZhbHVlLCBpbmRleCkgPT4gYWNjdW11bGF0b3IuY29uY2F0KChpbmRleCA+IDAgPyAoYWNjdW11bGF0b3Iuc2xpY2UoLTEpLmpvaW4oJy4nKSArICcuJykgOiAnJykgKyBjdXJyZW50VmFsdWUpLCBbXSlcclxuXHRcdFx0XHRcdD8uZm9yRWFjaCgoaGFzaDogc3RyaW5nKSA9PiB7XHJcblx0XHRcdFx0XHRcdHZhciBleHBhbnNpb25QYW5lbEluZGV4ID0gdGhpcy5tYXRFeHBhbnNpb25QYW5lbEVsZW1lbnRRdWVyeUxpc3Q/LnRvQXJyYXkoKT8uZmluZEluZGV4KHggPT4geC5uYXRpdmVFbGVtZW50LmlkID09IGhhc2gpO1xyXG5cdFx0XHRcdFx0XHRpZiAoZXhwYW5zaW9uUGFuZWxJbmRleCA+PSAwKSB7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5tYXRFeHBhbnNpb25QYW5lbFF1ZXJ5TGlzdD8udG9BcnJheSgpW2V4cGFuc2lvblBhbmVsSW5kZXhdPy5vcGVuKCk7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiBEZXRlY3QgY2hhbmdlcyBmb3Igb3BlbmVkIHBhbmVscyAqL1xyXG5cdFx0XHR0aGlzLm1hdEV4cGFuc2lvblBhbmVsUXVlcnlMaXN0Py5mb3JFYWNoKHkgPT4ge1xyXG5cdFx0XHRcdHRoaXMubWF0RXhwYW5zaW9uUGFuZWxTdWJzY3JpcHRpb25zLnB1c2goeS5vcGVuZWQuc3Vic2NyaWJlKF8gPT4ge1xyXG5cdFx0XHRcdFx0aWYgKHRoaXMuc2V0VXJsSGFzaCkge1xyXG5cdFx0XHRcdFx0XHQvKiBHZXQgdGhlIGlkIG9mIHRoZSBjdXJyZW50IG9wZW5lZCBwYW5lbCAqL1xyXG5cdFx0XHRcdFx0XHR2YXIgY3VycmVudFBhbmVsSWQgPSB5Wydfdmlld0NvbnRhaW5lclJlZiddPy5lbGVtZW50Py5uYXRpdmVFbGVtZW50Py5pZDtcclxuXHJcblx0XHRcdFx0XHRcdC8qIElmIHRoZSBwYW5lbCBJRCBpcyBzZXQsIHNldCBpdCBhcyB1cmwgc2VnbWVudCAoaGFzaCkgKi9cclxuXHRcdFx0XHRcdFx0aWYgKGN1cnJlbnRQYW5lbElkKSB7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHsgZnJhZ21lbnQ6IGN1cnJlbnRQYW5lbElkLCByZXBsYWNlVXJsOiB0cnVlIH0pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHQvKiBPdGhlcndpc2UgcmVtb3ZlIHRoZSBzZWdtZW50IGZyb20gdGhlIHVybCAqL1xyXG5cdFx0XHRcdFx0XHRlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwgeyByZXBsYWNlVXJsOiB0cnVlIH0pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0LyogRGV0ZWN0IGNoYW5nZXMgKi9cclxuXHRcdFx0XHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdFx0XHRcdH0pKTtcclxuXHJcblx0XHRcdFx0LyogRGV0ZWN0IGNoYW5nZXMgZm9yIGNsb3NlZCBwYW5lbHMgKi9cclxuXHRcdFx0XHR0aGlzLm1hdEV4cGFuc2lvblBhbmVsU3Vic2NyaXB0aW9ucy5wdXNoKHkuY2xvc2VkLnN1YnNjcmliZShfID0+IHtcclxuXHRcdFx0XHRcdGlmICh0aGlzLnNldFVybEhhc2gpIHtcclxuXHRcdFx0XHRcdFx0LyogR2V0IHRoZSBpZCBvZiB0aGUgY3VycmVudCBvcGVuZWQgcGFuZWwgKi9cclxuXHRcdFx0XHRcdFx0dmFyIGN1cnJlbnRQYW5lbElkUGFydHMgPSB5Wydfdmlld0NvbnRhaW5lclJlZiddPy5lbGVtZW50Py5uYXRpdmVFbGVtZW50Py5pZD8uc3BsaXQoJy4nKTtcclxuXHJcblx0XHRcdFx0XHRcdC8qIElmIHRoZSBwYW5lbCBJRCBpcyBzZXQsIHNldCBpdCBhcyB1cmwgc2VnbWVudCAoaGFzaCkgKi9cclxuXHRcdFx0XHRcdFx0aWYgKGN1cnJlbnRQYW5lbElkUGFydHMubGVuZ3RoID4gMSkge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7IGZyYWdtZW50OiBjdXJyZW50UGFuZWxJZFBhcnRzLnNsaWNlKDAsIC0xKS5qb2luKCcuJyksIHJlcGxhY2VVcmw6IHRydWUgfSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHQvKiBEZXRlY3QgY2hhbmdlcyAqL1xyXG5cdFx0XHRcdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblx0XHRcdFx0fSkpO1xyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cclxuXHRcdC8qIE5vdGlmeSBleHBhbnNpb24gcGFuZWwgbGlzdCBjaGFuZ2VzICovXHJcblx0XHR0aGlzLm1hdEV4cGFuc2lvblBhbmVsUXVlcnlMaXN0Lm5vdGlmeU9uQ2hhbmdlcygpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmV0cmlldmVzIGFuIGluc3RhbmNlIGZyb20gdGhlIGluamVjdG9yIGJhc2VkIG9uIHRoZSBwcm92aWRlZCB0b2tlbi5cclxuXHQgKiBJZiBub3QgZm91bmQ6XHJcblx0ICogLSBUaHJvd3Mge0BsaW5rIE5vUHJvdmlkZXJFcnJvcn0gaWYgbm8gYG5vdEZvdW5kVmFsdWVgIHRoYXQgaXMgbm90IGVxdWFsIHRvXHJcblx0ICogSW5qZWN0b3IuVEhST1dfSUZfTk9UX0ZPVU5EIGlzIGdpdmVuXHJcblx0ICogLSBSZXR1cm5zIHRoZSBgbm90Rm91bmRWYWx1ZWAgb3RoZXJ3aXNlXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGdldFNlcnZpY2U8VD4odG9rZW46IFR5cGU8VD4pOiBUIHtcclxuXHRcdHJldHVybiBTZXJ2aWNlTG9jYXRvci5nZXRTZXJ2aWNlKHRva2VuKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldHMgYmFzZSByb3V0ZVxyXG5cdCAqIEBwYXJhbSBzbmFwc2hvdCBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgZ2V0TWFpblJvdXRlKHNuYXBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB7XHJcblx0XHRpZiAoc25hcHNob3QgJiYgIXNuYXBzaG90LmRhdGEubWVudSkge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy5nZXRNYWluUm91dGUoc25hcHNob3QucGFyZW50KTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gc25hcHNob3Q7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTaG93cyBhIGNvbmZpcm0gZGlhbG9nIHRvIGRlbGV0ZSBhbiBpdGVtIFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBzaG93RGVsZXRlSXRlbURpYWxvZygpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuZGlhbG9nU2VydmljZS5vcGVuQ29uZmlybSh7XHJcblx0XHRcdG1lc3NhZ2U6ICRsb2NhbGl6ZWA6QEBkaWFsb2cubWVzc2FnZS5kZWxldGUub25lOkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBpdGVtP2AsXHJcblx0XHRcdHRpdGxlOiAkbG9jYWxpemVgOkBAZGlhbG9nLnRpdGxlLmRlbGV0ZTpDb25maXJtIERlbGV0ZWAsXHJcblx0XHRcdGNhbmNlbEJ1dHRvbjogJGxvY2FsaXplYDpAQGNhbmNlbDpDYW5jZWxgLFxyXG5cdFx0XHRhY2NlcHRCdXR0b246ICRsb2NhbGl6ZWA6QEBkZWxldGU6RGVsZXRlYCxcclxuXHRcdH0pLmFmdGVyQ2xvc2VkKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTaG93cyBhIGNvbmZpcm0gZGlhbG9nIHRvIGRlbGV0ZSBtdWx0aXBsZSBpdGVtc1xyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBzaG93RGVsZXRlSXRlbXNEaWFsb2coKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdHJldHVybiB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbkNvbmZpcm0oe1xyXG5cdFx0XHRtZXNzYWdlOiAkbG9jYWxpemVgOkBAZGlhbG9nLm1lc3NhZ2UuZGVsZXRlLmxpc3Q6QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGUgc2VsZWN0ZWQgaXRlbXM/YCxcclxuXHRcdFx0dGl0bGU6ICRsb2NhbGl6ZWA6QEBkaWFsb2cudGl0bGUuZGVsZXRlOkNvbmZpcm0gRGVsZXRlYCxcclxuXHRcdFx0Y2FuY2VsQnV0dG9uOiAkbG9jYWxpemVgOkBAY2FuY2VsOkNhbmNlbGAsXHJcblx0XHRcdGFjY2VwdEJ1dHRvbjogJGxvY2FsaXplYDpAQGRlbGV0ZTpEZWxldGVgLFxyXG5cdFx0fSkuYWZ0ZXJDbG9zZWQoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNob3dzIGEgY29uZmlybSBkaWFsb2cgdG8gc2VuZCBzb21lIGRhdGFcclxuXHQgKiBAcGFyYW0gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBkaXNwbGF5XHJcblx0ICogQHBhcmFtIG9ic2VydmFiZSBUaGUgb2JzZXJ2YWJsZSBpbnN0YW5jZVxyXG5cdCAqIEBwYXJhbSBzdWNjZXNzQ2FsbGJhY2sgQSBzdWNjZXNzIGNhbGxiYWNrXHJcblx0ICogQHBhcmFtIGVycm9yQ2FsbGJhY2sgQW4gZXJyb3IgY2FsbGJhY2tcclxuXHQgKi9cclxuXHRwdWJsaWMgc2hvd0NvbmZpcm1hdGlvbkRpYWxvZyhtZXNzYWdlOiBzdHJpbmcsIG9ic2VydmFiZTogT2JzZXJ2YWJsZTxhbnk+LCBzdWNjZXNzQ2FsbGJhY2s6IEZ1bmN0aW9uID0gbnVsbCwgZXJyb3JDYWxsYmFjazogRnVuY3Rpb24gPSBudWxsKTogdm9pZCB7XHJcblx0XHR0aGlzLmRpYWxvZ1NlcnZpY2VcclxuXHRcdFx0Lm9wZW5Db25maXJtKHtcclxuXHRcdFx0XHRtZXNzYWdlOiBtZXNzYWdlLFxyXG5cdFx0XHRcdHRpdGxlOiAkbG9jYWxpemVgOkBAZGlhbG9nLnRpdGxlLmNvbmZpcm06Q29uZmlybWAsXHJcblx0XHRcdFx0Y2FuY2VsQnV0dG9uOiAkbG9jYWxpemVgOkBAY2FuY2VsOkNhbmNlbGAsXHJcblx0XHRcdFx0YWNjZXB0QnV0dG9uOiAkbG9jYWxpemVgOkBAb2s6T2tgLFxyXG5cdFx0XHR9KVxyXG5cdFx0XHQuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKGFjY2VwdDogYm9vbGVhbikgPT4ge1xyXG5cdFx0XHRcdGlmIChhY2NlcHQpIHtcclxuXHRcdFx0XHRcdG9ic2VydmFiZS5zdWJzY3JpYmUoeCA9PiB7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2hvd01lc3NhZ2UoJGxvY2FsaXplYDpAQHNuYWNrYmFyLnNlbmQuc3VjY2VzczpEYXRhIHNlbnQgc3VjY2Vzc2Z1bGx5LmApO1xyXG5cclxuXHRcdFx0XHRcdFx0aWYgKHN1Y2Nlc3NDYWxsYmFjaykge1xyXG5cdFx0XHRcdFx0XHRcdHN1Y2Nlc3NDYWxsYmFjayh4KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSwgZXJyb3JzID0+IHtcclxuXHRcdFx0XHRcdFx0dGhpcy5pc1NhdmluZyA9IGZhbHNlO1xyXG5cdFx0XHRcdFx0XHRpZiAoZXJyb3JDYWxsYmFjaykge1xyXG5cdFx0XHRcdFx0XHRcdGVycm9yQ2FsbGJhY2soZXJyb3JzKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIE5hdmlnYXRlcyB0byB0aGUgYWRkIHBhZ2UuXHJcblx0ICovXHJcblx0cHVibGljIG9wZW5EaWFsb2c8VCwgRCA9IGFueT4oZGlhbG9nVHlwZTogVHlwZTxUPiwgY29uZmlnOiBNYXREaWFsb2dDb25maWc8RD4sIGNhbGxiYWNrOiBGdW5jdGlvbik6IHZvaWQge1xyXG5cdFx0dGhpcy5kaWFsb2cub3BlbihkaWFsb2dUeXBlLCBPYmplY3QuYXNzaWduKHsgd2lkdGg6ICc2NTBweCcsIGRhdGE6IHt9LCBwYW5lbENsYXNzOiBbJ2RpYWxvZy1mdWxsLXNjcmVlbiddIH0sIGNvbmZpZykpXHJcblx0XHRcdC5hZnRlckNsb3NlZCgpXHJcblx0XHRcdC5zdWJzY3JpYmUoXyA9PiBjYWxsYmFjaygpKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNob3dzIGEgbWVzc2FnZVxyXG5cdCAqIEBwYXJhbSBtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIGRpc3BsYXlcclxuXHQgKiBAcGFyYW0gdHlwZSBUaGUgdHlwZSBvZiB0aGUgbWVzc2FnZVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBzaG93TWVzc2FnZShtZXNzYWdlPzogc3RyaW5nLCB0eXBlOiBNZXNzYWdlVHlwZSA9IE1lc3NhZ2VUeXBlLlN1Y2Nlc3MpOiB2b2lkIHtcclxuXHRcdHZhciBzbmFja0JhckNsYXNzID0gJ3ByaW1hcnknO1xyXG5cdFx0c3dpdGNoICh0eXBlKSB7XHJcblx0XHRcdGNhc2UgTWVzc2FnZVR5cGUuU3VjY2VzczpcclxuXHRcdFx0XHRzbmFja0JhckNsYXNzID0gJ3ByaW1hcnknO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cclxuXHRcdFx0Y2FzZSBNZXNzYWdlVHlwZS5XYXJuaW5nOlxyXG5cdFx0XHRcdHNuYWNrQmFyQ2xhc3MgPSAnd2Fybic7XHJcblx0XHRcdFx0YnJlYWs7XHJcblxyXG5cdFx0XHRjYXNlIE1lc3NhZ2VUeXBlLkVycm9yOlxyXG5cdFx0XHRcdHNuYWNrQmFyQ2xhc3MgPSAnZXJyb3InO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cclxuXHRcdFx0ZGVmYXVsdDpcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLnNuYWNrQmFyU2VydmljZS5vcGVuKG1lc3NhZ2UgfHwgJGxvY2FsaXplYDpAQHNuYWNrYmFyLnNlbmQuc3VjY2VzczpEYXRhIHNlbnQgc3VjY2Vzc2Z1bGx5LmAsIG51bGwsIHtcclxuXHRcdFx0ZHVyYXRpb246IDMwMDAsXHJcblx0XHRcdHBhbmVsQ2xhc3M6IFtzbmFja0JhckNsYXNzXVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJbml0b2FsaXplcyB0aGUgdGlueW1jZSBlZGl0b3JcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgaW5pdEVkaXRvcihlZGl0b3JDb25maWc6IGFueSA9IHt9KSB7XHJcblx0XHRPYmplY3QuYXNzaWduKHRoaXMuZWRpdG9yQ29uZmlnLCB7XHJcblx0XHRcdHN1ZmZpeDogJy5taW4nLFxyXG5cdFx0XHRza2luOiBmYWxzZSxcclxuXHRcdFx0aGVpZ2h0OiAnMTcwcHgnLFxyXG5cdFx0XHRjb250ZW50X2NzczogZmFsc2UsXHJcblx0XHRcdHBsdWdpbnM6IHRoaXMuZWRpdG9yUGx1Z2lucyxcclxuXHRcdFx0dG9vbGJhcjogdGhpcy5lZGl0b3JUb29sYmFyLFxyXG5cdFx0XHRwYXN0ZV9hc190ZXh0OiB0cnVlLFxyXG5cdFx0XHRsYW5ndWFnZTogJ2RlJyxcclxuXHRcdFx0bGFuZ3VhZ2VfdXJsOiAnL2Fzc2V0cy90aW55bWNlL2xhbmdzL2RlLmpzJyxcclxuXHRcdFx0ZG9jdW1lbnRfYmFzZV91cmw6IGAke3RoaXMuYXBwU2V0dGluZy5hcGlVcmx9ZmlsZS9gLFxyXG5cdFx0XHRhdXRvbWF0aWNfdXBsb2FkczogdHJ1ZSxcclxuXHRcdFx0cmVsYXRpdmVfdXJsczogdHJ1ZSxcclxuXHRcdFx0Y29udmVydF91cmxzOiBmYWxzZSxcclxuXHRcdFx0ZXh0ZW5kZWRfdmFsaWRfZWxlbWVudHM6ICdzcGFuW2lkfGNsYXNzfHN0eWxlXSwrQFtkYXRhLW9wdGlvbnNdJyxcclxuXHRcdFx0YWxsb3dfaHRtbF9pbl9uYW1lZF9hbmNob3I6IHRydWVcclxuXHRcdH0sIGVkaXRvckNvbmZpZyk7XHJcblxyXG5cdFx0dGhpcy5pc0VkaXRvckluaXRpYWx6ZWQgPSB0cnVlO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2V0cyBzdWJ0aXRsZSBmcm9tIGN1cnJlbiBtZW51XHJcblx0ICovXHJcblx0cHJvdGVjdGVkIHNldFRpdGxlcygpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLm1lbnUpIHtcclxuXHRcdFx0dGhpcy50aXRsZVNlcnZpY2Uuc2V0VGl0bGUodGhpcy5tZW51LnRpdGxlKTtcclxuXHRcdFx0dGhpcy50aXRsZSA9IHRoaXMudGl0bGVTZXJ2aWNlLmdldFRpdGxlKCk7XHJcblxyXG5cdFx0XHRpZiAoIXRoaXMubWVudS5pdGVtcykge1xyXG5cdFx0XHRcdHJldHVybjtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LyogR2V0IHN1YnRpdGxlIGZyb20gdXJsIHBhcmFtcyAqL1xyXG5cdFx0XHR2YXIgc3VidGl0bGUgPSB0aGlzLnJvdXRlPy5zbmFwc2hvdD8ucGFyYW1NYXA/LmdldCgnc3VidGl0bGUnKTtcclxuXHRcdFx0aWYgKHN1YnRpdGxlKSB7XHJcblx0XHRcdFx0dHJ5IHsgdGhpcy5zdWJ0aXRsZSA9IGF0b2Ioc3VidGl0bGUpOyB9XHJcblx0XHRcdFx0Y2F0Y2ggKGUpIHsgdGhpcy5zdWJ0aXRsZSA9IHN1YnRpdGxlOyB9XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0LyogR2V0IGN1cnJlbnQgcm91dGUgKi9cclxuXHRcdFx0XHRsZXQgY3VycmVudFJvdXRlID0gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KCc/JylbMF0/LnNwbGl0KCc7JylbMF07XHJcblx0XHRcdFx0dmFyIHN1Ym1lbnUgPSB0aGlzLm1lbnUuaXRlbXMuZmlsdGVyKHggPT4geC5wYXRoID09IGN1cnJlbnRSb3V0ZSlbMF07XHJcblx0XHRcdFx0aWYgKHN1Ym1lbnUpIHtcclxuXHRcdFx0XHRcdHRoaXMuc3VidGl0bGUgPSBzdWJtZW51LnRpdGxlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTmF2aWdhdGUgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGFycmF5IG9mIGNvbW1hbmRzIGFuZCBhIHN0YXJ0aW5nIHBvaW50LlxyXG5cdCAqIEBwYXJhbSBjb21tYW5kcyBcclxuXHQgKi9cclxuXHRwdWJsaWMgbmF2aWdhdGUoY29tbWFuZHM6IGFueVtdLCBxdWVyeVBhcmFtcz86IGFueSwgZnJhZ21lbnQ/OiBzdHJpbmcsIHByZXNlcnZlRnJhZ21lbnQ/OiBib29sZWFuKTogdm9pZCB7XHJcblx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZShjb21tYW5kcywge1xyXG5cdFx0XHRxdWVyeVBhcmFtczogT2JqZWN0LmFzc2lnbih7IHJldHVyblVybDogdGhpcy5jdXJyZW50Um91dGUgfSwgcXVlcnlQYXJhbXMgfHwge30pLFxyXG5cdFx0XHRmcmFnbWVudDogZnJhZ21lbnQsXHJcblx0XHRcdHByZXNlcnZlRnJhZ21lbnQ6IHByZXNlcnZlRnJhZ21lbnQsXHJcblx0XHRcdHJlbGF0aXZlVG86IHRoaXMucm91dGVcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ29udmVydCBPYmplY3QgdG8gSHR0cEhlYWRlcnNcclxuXHQgKiBcclxuXHQgKiBAcGFyYW0gYm9keVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCB0b0h0dHBIZWFkZXJzKGJvZHk6IE9iamVjdCk6IEh0dHBIZWFkZXJzIHtcclxuXHRcdGlmICghYm9keSkge1xyXG5cdFx0XHRyZXR1cm4gbmV3IEh0dHBIZWFkZXJzKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGJvZHkpXHJcblx0XHRcdC5maWx0ZXIoa2V5ID0+IGJvZHlba2V5XSAhPSBudWxsICYmIGJvZHlba2V5XSAhPSAnJylcclxuXHRcdFx0LnJlZHVjZSgocCwga2V5KSA9PiBwLnNldChrZXksIGJvZHlba2V5XSksIG5ldyBIdHRwSGVhZGVycygpKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFBhcnNlcyBodHRwIHJlc3BvbnNlIGVycm9yc1xyXG5cdCAqIEBwYXJhbSBlcnJvcnMgXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIHBhcnNlRXJyb3JzKGVycm9yczogT2JqZWN0KTogdm9pZCB7XHJcblx0XHR0aGlzLmVycm9ycyA9IFtdO1xyXG5cdFx0dGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuXHRcdHRoaXMuaXNTYXZpbmcgPSBmYWxzZTtcclxuXHJcblx0XHRpZiAoZXJyb3JzKSB7XHJcblx0XHRcdE9iamVjdC5rZXlzKGVycm9ycykuZm9yRWFjaChlbCA9PiB7XHJcblx0XHRcdFx0bGV0IGVycm9yID0gZXJyb3JzW2VsXTtcclxuXHRcdFx0XHRpZiAoQXJyYXkuaXNBcnJheShlcnJvcikpIHtcclxuXHRcdFx0XHRcdGVycm9yLmZvckVhY2goZXJyID0+IHtcclxuXHRcdFx0XHRcdFx0dGhpcy5lcnJvcnMucHVzaChlcnIpO1xyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fSBlbHNlIGlmICh0eXBlb2YgZXJyb3IgPT09IFwic3RyaW5nXCIpIHtcclxuXHRcdFx0XHRcdHRoaXMuZXJyb3JzLnB1c2goZXJyb3IpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBIYW5kbGUgSHR0cCBvcGVyYXRpb24gdGhhdCBmYWlsZWQuXHJcblx0ICogTGV0IHRoZSBhcHAgY29udGludWUuXHJcblx0ICogQHBhcmFtIG9wZXJhdGlvbiAtIG5hbWUgb2YgdGhlIG9wZXJhdGlvbiB0aGF0IGZhaWxlZFxyXG5cdCAqIEBwYXJhbSByZXN1bHQgLSBvcHRpb25hbCB2YWx1ZSB0byByZXR1cm4gYXMgdGhlIG9ic2VydmFibGUgcmVzdWx0XHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGhhbmRsZUVycm9yPFQ+KG9wZXJhdGlvbiA9ICdvcGVyYXRpb24nLCByZXN1bHQ/OiBUKSB7XHJcblx0XHRyZXR1cm4gKGVycm9yOiBhbnkpOiBPYnNlcnZhYmxlPFQ+ID0+IHtcclxuXHJcblx0XHRcdC8qIFBhcnNlIHRoZSBlcnJvciBtZXNzYWdlcyAqL1xyXG5cdFx0XHR0aGlzLnBhcnNlRXJyb3JzKGVycm9yKTtcclxuXHJcblx0XHRcdC8qIExvZyB0byBjb25zb2xlICovXHJcblx0XHRcdHRoaXMud2FybihgJHtvcGVyYXRpb259IGZhaWxlZDogJHtlcnJvci5tZXNzYWdlfWApO1xyXG5cclxuXHRcdFx0LyogTGV0IHRoZSBhcHAga2VlcCBydW5uaW5nIGJ5IHJldHVybmluZyBhbiBlbXB0eSByZXN1bHQgKi9cclxuXHRcdFx0cmV0dXJuIG9mKHJlc3VsdCBhcyBUKTtcclxuXHRcdH07XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBMb2cgdG8gY29uc29sZVxyXG5cdCAqIEBwYXJhbSBtZXNzYWdlIFxyXG5cdCAqIEBwYXJhbSBvcHRpb25hbFBhcmFtcyBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgbG9nKG1lc3NhZ2U6IHN0cmluZywgLi4ub3B0aW9uYWxQYXJhbXM6IGFueVtdKSB7XHJcblx0XHRpZiAodGhpcy5kZWJ1Zykge1xyXG5cdFx0XHRjb25zb2xlLmxvZyhtZXNzYWdlLCBvcHRpb25hbFBhcmFtcyk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBMb2cgdG8gY29uc29sZVxyXG5cdCAqIEBwYXJhbSBtZXNzYWdlIFxyXG5cdCAqIEBwYXJhbSBvcHRpb25hbFBhcmFtcyBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgd2FybihtZXNzYWdlOiBzdHJpbmcsIC4uLm9wdGlvbmFsUGFyYW1zOiBhbnlbXSkge1xyXG5cdFx0aWYgKHRoaXMuZGVidWcpIHtcclxuXHRcdFx0Y29uc29sZS53YXJuKG1lc3NhZ2UsIG9wdGlvbmFsUGFyYW1zKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENsZWFucyB0aGUgb2JqZWN0c1xyXG5cdCAqIFJlbW92ZXMgZW1wdHkgcHJvcGVydGllc1xyXG5cdCAqIEBwYXJhbSBvYmogXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGNsZWFuKG9iajogYW55KTogYW55IHtcclxuXHRcdHRyeSB7XHJcblx0XHRcdGZvciAodmFyIHByb3BOYW1lIGluIG9iaikge1xyXG5cdFx0XHRcdGlmIChvYmpbcHJvcE5hbWVdID09PSBudWxsIHx8IG9ialtwcm9wTmFtZV0gPT09IHVuZGVmaW5lZCB8fCBvYmpbcHJvcE5hbWVdID09PSBcIlwiKSB7XHJcblx0XHRcdFx0XHRkZWxldGUgb2JqW3Byb3BOYW1lXTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH0gY2F0Y2ggKGVycm9yKSB7IH1cclxuXHJcblx0XHRyZXR1cm4gb2JqO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2FuaXRpemVzIHRoZSBzcGVjaWZpZWQgb2JqZWN0XHJcblx0ICogQHBhcmFtIG9iaiBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgc2FuaXRpemVPYmplY3Qob2JqOiBhbnksIC4uLmlnbm9yZTogc3RyaW5nW10pOiBhbnkge1xyXG5cdFx0cmV0dXJuIE9iamVjdC5rZXlzKG9iailcclxuXHRcdFx0LmZpbHRlcih4ID0+IG9ialt4XSlcclxuXHRcdFx0LmZpbHRlcih4ID0+ICEoaWdub3JlIHx8IFtdKS5tYXAoeCA9PiB4LnRvTG93ZXJDYXNlKCkpLmluY2x1ZGVzKHgudG9Mb3dlckNhc2UoKSkpXHJcblx0XHRcdC5yZWR1Y2UoKHJlc3VsdCwga2V5KSA9PiB7XHJcblx0XHRcdFx0cmVzdWx0W2tleV0gPSBpc05hTigrb2JqW2tleV0pID8gb2JqW2tleV0gOiArb2JqW2tleV07XHJcblx0XHRcdFx0cmV0dXJuIHJlc3VsdDtcclxuXHRcdFx0fSwge30pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2hlY2tzIGlmIHRoZSB1c2VyIHNlbGVjZXRlZCBhbnkgdGV4dCBpbiB0aGUgZG9jdW1lbnRcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgaXNUZXh0U2VsZWN0ZWQgPSAoKTogYm9vbGVhbiA9PiB3aW5kb3c/LmdldFNlbGVjdGlvbigpPy50b1N0cmluZygpPy5sZW5ndGggPiAwO1xyXG5cclxuXHQvKipcclxuXHQgKiBBIGNhbGxiYWNrIHVzZWQgZm9yIGFueSBjdXN0b20gY2xlYW51cCB0aGF0IG5lZWRzIHRvIG9jY3VyXHJcblx0ICogd2hlbiB0aGUgaW5zdGFuY2UgaXMgZGVzdHJveWVkLlxyXG5cdCAqL1xyXG5cdG5nT25EZXN0cm95KCkge1xyXG5cdFx0dGhpcy5tYXRFeHBhbnNpb25QYW5lbFN1YnNjcmlwdGlvbnMuZm9yRWFjaCh4ID0+IHgudW5zdWJzY3JpYmUoKSk7XHJcblx0fVxyXG59Il19
557
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9iYXNlL2NvbXBvbmVudHMvYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQWlCLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBUSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEksT0FBTyxFQUFFLFNBQVMsRUFBbUIsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQTBCLGFBQWEsRUFBRSxNQUFNLEVBQXVCLE1BQU0saUJBQWlCLENBQUM7QUFDckgsT0FBTyxFQUFjLEVBQUUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVwRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0MsT0FBTyxFQUFF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Q0FBQyxDQUFDO0lBQ1QsQ0FBQztJQVFEOzs7T0FHRztJQUNILFdBQVc7UUFDVixJQUFJLENBQUMsOEJBQThCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDbkUsQ0FBQzs7NkhBeHJCb0IsYUFBYTtpSEFBYixhQUFhLHdKQWlMcEIsaUJBQWlCLDJCQUFVLFVBQVUsNkRBTXJDLGlCQUFpQjsyRkF2TFYsYUFBYTtrQkFEbEMsU0FBUztxSUF5Q0YsMkJBQTJCO3NCQURqQyxLQUFLO2dCQTJJSSxpQ0FBaUM7c0JBRDFDLFlBQVk7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQU8zQywwQkFBMEI7c0JBRG5DLFlBQVk7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIE9uSW5pdCwgUXVlcnlMaXN0LCBUeXBlLCBWaWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dDb25maWcgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBNYXRFeHBhbnNpb25QYW5lbCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2V4cGFuc2lvbic7XHJcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcclxuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIE5hdmlnYXRpb25FbmQsIFJvdXRlciwgVXJsU2VnbWVudCwgVXJsVHJlZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29udGV4dEhlbHBlciB9IGZyb20gJy4uLy4uL2NvbW1vbi9jb21tb24ubW9kdWxlJztcclxuaW1wb3J0IHsgQXBwU2V0dGluZyB9IGZyb20gJy4uLy4uL2NvbW1vbi9tb2RlbHMvYXBwLXNldHRpbmcnO1xyXG5pbXBvcnQgeyBTZXJ2aWNlTG9jYXRvciB9IGZyb20gJy4uLy4uL2NvbW1vbi9zZXJ2aWNlcy9zZXJ2aWNlLWxvY2F0b3InO1xyXG5pbXBvcnQgeyBWZERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9kaWFsb2dzL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVmRNZWRpYVNlcnZpY2UgfSBmcm9tICcuLi8uLi9tZWRpYS9zZXJ2aWNlcy9tZWRpYS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWVudSB9IGZyb20gJy4uLy4uL21lbnUvbW9kZWxzL21lbnUnO1xyXG5pbXBvcnQgeyBDb21tb24gfSBmcm9tICcuLi9jb25zdGFudHMvY29tbW9uJztcclxuaW1wb3J0IHsgR2xvYmFsUm9sZXMgfSBmcm9tICcuLi9jb25zdGFudHMvZ2xvYmFsLXJvbGVzJztcclxuaW1wb3J0IHsgTWVzc2FnZVR5cGUgfSBmcm9tICcuLi9lbnVtcy9tZXNzYWdlLXR5cGUnO1xyXG5pbXBvcnQgeyBBdXRoSGVscGVyIH0gZnJvbSAnLi4vaGVscGVycy9hdXRoLWhlbHBlcic7XHJcbmltcG9ydCB7IElCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pYmFzZS1jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBdXRoVXNlciB9IGZyb20gJy4uL21vZGVscy9hdXRoLXVzZXInO1xyXG5cclxuLyoqXHJcbiAqIEEgYmFzZSBsaXN0IGNvbXBvbmVudCBmb3IgY29tcG9uZW50cyB3aXRoIHBhZ2luYXRpb24gc3VwcG9ydFxyXG4gKi9cclxuLy8gQGR5bmFtaWNcclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgSUJhc2VDb21wb25lbnQsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcblx0LyoqXHJcblx0ICogQXBwIHNldHRpbmdzXHJcblx0ICovXHJcblx0cHVibGljIGFwcFNldHRpbmc6IEFwcFNldHRpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIE1lbnUgaXRlbXNcclxuXHQgKi9cclxuXHRwdWJsaWMgbWVudTogTWVudTtcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIG5hbWUgb2YgdGhlIHByb2plY3RcclxuXHQgKi9cclxuXHRwdWJsaWMgcHJvamVjdE5hbWU6IHN0cmluZztcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIHRpdGxlIG9mIHRoZSBjdXJyZW50IHBhZ2VcclxuXHQgKi9cclxuXHRwdWJsaWMgdGl0bGU6IHN0cmluZztcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIHN1YnRpdGxlIG9mIHRoZSBjdXJyZW50IG91dGxldFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzdWJ0aXRsZTogc3RyaW5nID0gJyc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIElmIHRydWUsIHVzZSBzb21lIGR1bW15IGRhdGEgYW5kIHNob3cgZGVidWcgbG9nc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBkZWJ1ZzogYm9vbGVhbjtcclxuXHJcblx0LyoqXHQgXHJcblx0ICogTG9hZGluZyBzdGF0dXNcclxuXHQgKi9cclxuXHRwdWJsaWMgaXNMb2FkaW5nOiBib29sZWFuO1xyXG5cclxuXHQvKipcclxuXHQgKiBoYW5kbGVFeHBhbnNpb25QYW5lbENoYW5nZXM6IGJvb2xlYW5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBoYW5kbGVFeHBhbnNpb25QYW5lbENoYW5nZXM6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiBTYXZpbmcgc3RhdHVzXHJcblx0ICovXHJcblx0cHVibGljIF9pc1NhdmluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdHB1YmxpYyBnZXQgaXNTYXZpbmcoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9pc1NhdmluZyB8fCB0aGlzLmlzTG9hZGluZzsgfVxyXG5cdHB1YmxpYyBzZXQgaXNTYXZpbmcoaXNTYXZpbmc6IGJvb2xlYW4pIHsgdGhpcy5pc0xvYWRpbmcgPSB0aGlzLl9pc1NhdmluZyA9IGlzU2F2aW5nOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgZmxhZyBlaW5kaWNhdGVzIHRoYXQgdGhlIGVkaXRvciBpcyBpbml0ZWRcclxuXHQgKi9cclxuXHRwdWJsaWMgaXNFZGl0b3JJbml0aWFsemVkOiBib29sZWFuO1xyXG5cclxuXHQvKipcclxuXHQgKiBSZXByZXNlbnRzIHRoZSByZXF1ZXN0IGVycm9yc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBlcnJvcnM6IEFycmF5PHN0cmluZz4gPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xyXG5cclxuXHQvKipcclxuXHQgKiBVc2VkIHRvIGV2YWx1YXRlIHdoZXRoZXIgYSBnaXZlbiBtZWRpYSBxdWVyeSBpcyB0cnVlIG9yIGZhbHNlIGdpdmVuIHRoZSBjdXJyZW50IGRldmljZSdzIHNjcmVlbiAvIHdpbmRvdyBzaXplLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBtZWRpYTogVmRNZWRpYVNlcnZpY2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEFsbG93ZWQgZmlsZSBleHRlbnNpb25zXHJcblx0ICovXHJcblx0cHVibGljIGFsbG93ZWRFeHRlbnNpb25zOiBzdHJpbmdbXSA9IENvbW1vbi5hbGxvd2VkRXh0ZW5zaW9ucztcclxuXHJcblx0LyoqXHJcblx0ICogdGlueU1DRSBwbHVnaW5zXHJcblx0ICovXHJcblx0cHVibGljIGVkaXRvclBsdWdpbnM6IHN0cmluZyA9IENvbW1vbi5lZGl0b3JQbHVnaW5zO1xyXG5cclxuXHQvKipcclxuXHQgKiB0aW55TUNFIGVkaXRvclxyXG5cdCAqL1xyXG5cdHB1YmxpYyBlZGl0b3JUb29sYmFyOiBzdHJpbmcgPSBDb21tb24uZWRpdG9yVG9vbGJhcjtcclxuXHJcblx0LyoqXHJcblx0ICogRWRpdG9yIGNvbmZpZ3VyYXRpb25cclxuXHQgKi9cclxuXHRwdWJsaWMgZWRpdG9yQ29uZmlnOiBhbnkgPSB7fTtcclxuXHJcblx0LyoqXHJcblx0ICogUHJvdmlkZXMgdGhlIG5hdmlnYXRpb24gYW5kIHVybCBtYW5pcHVsYXRpb24gY2FwYWJpbGl0aWVzLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyByb3V0ZXI6IFJvdXRlcjtcclxuXHJcblx0LyoqXHJcblx0ICogdXJsSGFzaDogc3RyaW5nXHJcblx0ICovXHJcblx0cHVibGljIHVybEhhc2g6IHN0cmluZyA9IG51bGw7XHJcblxyXG5cdC8qKlxyXG5cdCAqIENsYXNzIG5hbWVcclxuXHQgKi9cclxuXHRwdWJsaWMgY2xhc3NOYW1lOiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIENyZWF0ZSBwZXJtaXNzaW9uXHJcblx0ICovXHJcblx0cHVibGljIGNhbkNyZWF0ZTogYm9vbGVhbjtcclxuXHJcblx0LyoqXHJcblx0ICogVXBkYXRlIHBlcm1pc3Npb25cclxuXHQgKi9cclxuXHRwdWJsaWMgY2FuVXBkYXRlOiBib29sZWFuO1xyXG5cclxuXHQvKipcclxuXHQgKiBDdXJyZW50IHJvdXRlXHJcblx0ICovXHJcblx0cHVibGljIGN1cnJlbnRSb3V0ZTogc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBDdXJyZW50IGJhc2Ugcm91dGVcclxuXHQgKi9cclxuXHRwdWJsaWMgY3VycmVudEJhc2VSb3V0ZTogc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBBIHVybCB0byByZXR1cm4gdG8gYWZ0ZXIgc2F2ZVxyXG5cdCAqL1xyXG5cdHB1YmxpYyByZXR1cm5Vcmw6IHN0cmluZztcclxuXHJcblx0LyoqXHJcblx0ICogQ3VycmVudCB1c2VyIG9iamVjdFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBjdXJyZW50VXNlcjogQXV0aFVzZXIgPSBBdXRoSGVscGVyLnVzZXI7XHJcblxyXG5cdC8qKlxyXG5cdCAqIElzIHRoZSBjdXJyZW50IHVzZXIgYSBjbGllbnQgYWRtaW5cclxuXHQgKi9cclxuXHRwdWJsaWMgaXNBZG1pbiA9IEF1dGhIZWxwZXIuaGFzUm9sZShHbG9iYWxSb2xlcy5BZG1pbmlzdHJhdG9yKTtcclxuXHJcblx0LyoqXHJcblx0ICogSXMgdGhlIGN1cnJlbnQgdXNlciBhIGNsaWVudCBhZG1pblxyXG5cdCAqL1xyXG5cdHB1YmxpYyBpc0NsaWVudEFkbWluID0gQXV0aEhlbHBlci5oYXNSb2xlKEdsb2JhbFJvbGVzLkNsaWVudEFkbWluaXN0cmF0b3IpO1xyXG5cclxuXHQvKipcclxuXHQgKiBJcyB0aGUgY3VycmVudCB1c2VyIGEgZGVwYXJ0bWVudCBhZG1pblxyXG5cdCAqL1xyXG5cdHB1YmxpYyBpc0RlcGFydG1lbnRBZG1pbiA9IEF1dGhIZWxwZXIuaGFzUm9sZShHbG9iYWxSb2xlcy5EZXBhcnRtZW50QWRtaW5pc3RyYXRvcik7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgc2VydmljZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGdldCBhbmQgc2V0IHRoZSB0aXRsZSBvZiBhIGN1cnJlbnQgSFRNTCBkb2N1bWVudC5cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgdGl0bGVTZXJ2aWNlOiBUaXRsZTtcclxuXHJcblx0LyoqXHJcblx0ICogQSBzZXJ2aWNlIHRvIGRpc3BhdGNoIE1hdGVyaWFsIERlc2lnbiBzbmFjayBiYXIgbWVzc2FnZXMuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIHNuYWNrQmFyU2VydmljZTogTWF0U25hY2tCYXI7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgc2VydmljZSB0byBzaG93IGNvbmlybSBhbmQgcHJvbXB0IGRpYWxvZ3MuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGRpYWxvZ1NlcnZpY2U6IFZkRGlhbG9nU2VydmljZTtcclxuXHJcblx0LyoqXHJcblx0ICogQSBzZXJ2aWNlIHRvIHNob3cgY29uaXJtIGFuZCBwcm9tcHQgZGlhbG9ncy5cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgZGlhbG9nOiBNYXREaWFsb2c7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGxvY2F0aW9uOiBMb2NhdGlvblxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBsb2NhdGlvbjogTG9jYXRpb247XHJcblxyXG5cdC8qKlxyXG5cdCAqIElmIHRydWUsIHNldCB1cmwgaGFzaFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBzZXRVcmxIYXNoOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcblx0LyoqXHJcblx0ICogTWF0RXhwYW5zaW9uUGFuZWwgcmVmXHJcblx0ICovXHJcblx0QFZpZXdDaGlsZHJlbihNYXRFeHBhbnNpb25QYW5lbCwgeyByZWFkOiBFbGVtZW50UmVmIH0pXHJcblx0cHJvdGVjdGVkIG1hdEV4cGFuc2lvblBhbmVsRWxlbWVudFF1ZXJ5TGlzdDogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xyXG5cclxuXHQvKipcclxuXHQgKiBNYXRFeHBhbnNpb25QYW5lbCByZWZcclxuXHQgKi9cclxuXHRAVmlld0NoaWxkcmVuKE1hdEV4cGFuc2lvblBhbmVsKVxyXG5cdHByb3RlY3RlZCBtYXRFeHBhbnNpb25QYW5lbFF1ZXJ5TGlzdDogUXVlcnlMaXN0PE1hdEV4cGFuc2lvblBhbmVsPjtcclxuXHJcblx0LyoqXHJcblx0ICogbWF0RXhwYW5zaW9uUGFuZWxTdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBtYXRFeHBhbnNpb25QYW5lbFN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG5cdC8qKlxyXG5cdCAqIENvbnN0cnVjdG9yXHJcblx0ICovXHJcblx0Y29uc3RydWN0b3IocHJvdGVjdGVkIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgcHJvdGVjdGVkIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG5cdFx0dGhpcy50aXRsZVNlcnZpY2UgPSB0aGlzLmdldFNlcnZpY2UoVGl0bGUpO1xyXG5cdFx0dGhpcy5kaWFsb2dTZXJ2aWNlID0gdGhpcy5nZXRTZXJ2aWNlKFZkRGlhbG9nU2VydmljZSk7XHJcblx0XHR0aGlzLmRpYWxvZyA9IHRoaXMuZ2V0U2VydmljZShNYXREaWFsb2cpO1xyXG5cdFx0dGhpcy5tZWRpYSA9IHRoaXMuZ2V0U2VydmljZShWZE1lZGlhU2VydmljZSk7XHJcblx0XHR0aGlzLnNuYWNrQmFyU2VydmljZSA9IHRoaXMuZ2V0U2VydmljZShNYXRTbmFja0Jhcik7XHJcblx0XHR0aGlzLnJvdXRlciA9IHRoaXMuZ2V0U2VydmljZShSb3V0ZXIpO1xyXG5cdFx0dGhpcy5hcHBTZXR0aW5nID0gdGhpcy5nZXRTZXJ2aWNlKEFwcFNldHRpbmcpO1xyXG5cdFx0dGhpcy5sb2NhdGlvbiA9IHRoaXMuZ2V0U2VydmljZShMb2NhdGlvbik7XHJcblxyXG5cdFx0Q29udGV4dEhlbHBlci5hY3RpdmF0ZWRSb3V0ZSA9IHJvdXRlO1xyXG5cdFx0Q29udGV4dEhlbHBlci5yb3V0ZXIgPSB0aGlzLnJvdXRlcjtcclxuXHRcdENvbnRleHRIZWxwZXIuYXBwU2V0dGluZyA9IHRoaXMuYXBwU2V0dGluZztcclxuXHJcblx0XHR0aGlzLmluaXRFZGl0b3IoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIExpZmVjeWNsZSBob29rIHRoYXQgaXMgY2FsbGVkIGFmdGVyIGRhdGEtYm91bmQgcHJvcGVydGllcyBcclxuXHQgKiBvZiBhIGRpcmVjdGl2ZSBhcmUgaW5pdGlhbGl6ZWQuXHJcblx0ICovXHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHQvKiBHZXQgbWVudSBpdGVtcyBmcm9tIHJvdXRlIHNuYXBzaG90ICovXHJcblx0XHR2YXIgbWFpblJvdXRlID0gdGhpcy5nZXRNYWluUm91dGUodGhpcy5yb3V0ZS5zbmFwc2hvdCk7XHJcblx0XHRpZiAobWFpblJvdXRlKSB7XHJcblx0XHRcdHRoaXMubWVudSA9IG1haW5Sb3V0ZS5kYXRhLm1lbnU7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogU2V0IHByb2plY3QgbmFtZSAmIGRlYnVnIG1vZGUgKi9cclxuXHRcdHRoaXMucHJvamVjdE5hbWUgPSB0aGlzLmFwcFNldHRpbmcucHJvamVjdE5hbWU7XHJcblx0XHR0aGlzLmRlYnVnID0gdGhpcy5hcHBTZXR0aW5nLmRlYnVnO1xyXG5cclxuXHRcdC8qIEdldCB0aGUgaGFzaCBmcm9tIHRoZSB1cmwgKi9cclxuXHRcdHRoaXMucm91dGUuZnJhZ21lbnQuc3Vic2NyaWJlKChmcmFnbWVudDogc3RyaW5nKSA9PiB0aGlzLnVybEhhc2ggPSBmcmFnbWVudCk7XHJcblxyXG5cdFx0LyoqXHJcblx0XHQgKiBDaGVjayBwZXJtaXNzaW9uc1xyXG5cdFx0ICovXHJcblx0XHRpZiAodGhpcy5yb3V0ZS5wYXJlbnQpIHtcclxuXHRcdFx0dGhpcy5yb3V0ZS5wYXJlbnQudXJsLnN1YnNjcmliZSgodXJsOiBVcmxTZWdtZW50W10pID0+IHtcclxuXHRcdFx0XHR0aGlzLmNsYXNzTmFtZSA/Pz0gdXJsLmxlbmd0aCA/IHVybFswXS5wYXRoLnJlcGxhY2UoLyguKilzJC8sICckMScpLnJlcGxhY2UoL14uLywgKHVybFswXS5wYXRoWzBdIHx8ICcnKS50b1VwcGVyQ2FzZSgpKSA6ICcnO1xyXG5cdFx0XHRcdHRoaXMuY2FuQ3JlYXRlID0gQXV0aEhlbHBlci5pc1Blcm1pdHRlZCgnQ3JlYXRlJywgYENyZWF0ZSR7dGhpcy5jbGFzc05hbWV9YCk7XHJcblx0XHRcdFx0dGhpcy5jYW5VcGRhdGUgPSBBdXRoSGVscGVyLmlzUGVybWl0dGVkKCdVcGRhdGUnLCBgVXBkYXRlJHt0aGlzLmNsYXNzTmFtZX1gKTtcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogU2V0IGN1cnJlbnQgcm91dGUgKi9cclxuXHRcdHRoaXMuY3VycmVudFJvdXRlID0gYnRvYSh0aGlzLnJvdXRlci51cmwpO1xyXG5cdFx0dGhpcy5jdXJyZW50QmFzZVJvdXRlID0gdGhpcy5yb3V0ZXIudXJsPy5zcGxpdCgnPycpWzBdPy5zcGxpdCgnOycpWzBdO1xyXG5cclxuXHRcdC8qKlxyXG5cdFx0ICogU2V0IHBhZ2UgdGl0bGVcclxuXHRcdCAqL1xyXG5cdFx0dGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZSh4ID0+IHtcclxuXHRcdFx0aWYgKHggaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XHJcblx0XHRcdFx0dGhpcy5zZXRUaXRsZXMoKTtcclxuXHRcdFx0XHR0aGlzLmN1cnJlbnRSb3V0ZSA9IGJ0b2EoeC51cmwpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHJcblx0XHQvKiBHZXQgdGhlIHJldHVybiB1cmwgaWYgYW55ICovXHJcblx0XHR0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSh4ID0+IHRoaXMuc2V0UmV0dXJuVXJsKHgucmV0dXJuVXJsKSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBMaWZlY3ljbGUgaG9vayB0aGF0IGlzIGNhbGxlZCBhZnRlciBhIGNvbXBvbmVudCdzIHZpZXcgaGFzIGJlZW4gZnVsbHkgaW5pdGlhbGl6ZWQuXHJcblx0ICovXHJcblx0bmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG5cdFx0LyogQnJvYWRjYXN0IHRvIGFsbCBsaXN0ZW5lciBvYnNlcnZhYmxlcyB3aGVuIGxvYWRpbmcgdGhlIHBhZ2UgKi9cclxuXHRcdHRoaXMubWVkaWEuYnJvYWRjYXN0KCk7XHJcblxyXG5cdFx0LyogU2V0IHRpdGxlcyAqL1xyXG5cdFx0dGhpcy5zZXRUaXRsZXMoKTtcclxuXHJcblx0XHQvKiBcclxuXHRcdCAqIEZvcmNlIGEgbmV3IGNoYW5nZSBkZXRlY3Rpb24gY3ljbGUgc2luY2UgY2hhbmdlIGRldGVjdGlvbnMgXHJcblx0XHQgKiBoYXZlIGZpbmlzaGVkIHdoZW4gYG5nQWZ0ZXJWaWV3SW5pdGAgaXMgZXhlY3V0ZWRcclxuXHRcdCAqL1xyXG5cdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG5cdFx0LyogTGlzdGVuIGZvciBleHBhbnNpb24gcGFuZWwgY2hhbmdlcyAqL1xyXG5cdFx0aWYgKHRoaXMuaGFuZGxlRXhwYW5zaW9uUGFuZWxDaGFuZ2VzKSB7XHJcblx0XHRcdHRoaXMub25FeHBhbnNpb25QYW5lbENoYW5nZXMoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlZnJlc2hzIHRoaXMgcGFnZS9jb21wb25lbnRcclxuXHQgKi9cclxuXHRwdWJsaWMgcmVsb2FkUGFnZSgpOiB2b2lkIHtcclxuXHRcdGxldCBjdXJyZW50VXJsID0gdGhpcy5yb3V0ZXIudXJsO1xyXG5cdFx0dGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnLycsIHsgcmVwbGFjZVVybDogdHJ1ZSB9KS50aGVuKCgpID0+IHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoY3VycmVudFVybCwgeyByZXBsYWNlVXJsOiB0cnVlIH0pKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIE5hdmlnYXRlcyBiYWNrIHRvIHJldHVybiB1cmxcclxuXHQgKi9cclxuXHRwdWJsaWMgbmF2aWdhdGVUb1JldHVyblVybCgpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLnJldHVyblVybCkge1xyXG5cdFx0XHRsZXQgdXJsVHJlZTogVXJsVHJlZSA9IHRoaXMucm91dGVyLnBhcnNlVXJsKHRoaXMucmV0dXJuVXJsKTtcclxuXHRcdFx0dGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmxUcmVlLnRvU3RyaW5nKCkpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2V0cyByZXR1cm4gdXJsXHJcblx0ICogQHBhcmFtIHJldHVyblVybCBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgc2V0UmV0dXJuVXJsKHJldHVyblVybDogc3RyaW5nKTogdm9pZCB7XHJcblx0XHR0cnkgeyB0aGlzLnJldHVyblVybCA9IHJldHVyblVybCA/IGRlY29kZVVSSUNvbXBvbmVudChhdG9iKHJldHVyblVybCkpIDogbnVsbDsgfVxyXG5cdFx0Y2F0Y2ggKGVycm9yKSB7IH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIExpc3RlbiBmb3IgZXhwYW5zaW9uIHBhbmVsIGNoYW5nZXNcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgb25FeHBhbnNpb25QYW5lbENoYW5nZXMoKTogdm9pZCB7XHJcblx0XHQvKiBMaXN0ZW4gZm9yIGV4cGFuc2lvbiBwYW5lbCBjaGFuZ2VzICovXHJcblx0XHR0aGlzLm1hdEV4cGFuc2lvblBhbmVsUXVlcnlMaXN0Py5jaGFuZ2VzLnN1YnNjcmliZShfID0+IHtcclxuXHRcdFx0LyogVW5zdWJzY3JpYmUgZnJvbSBvbGQgJ29wZW5lZCcgYW5kICdjbG9zZWQnIHN1YnNjcmlwdGlvbnMgKi9cclxuXHRcdFx0dGhpcy5tYXRFeHBhbnNpb25QYW5lbFN1YnNjcmlwdGlvbnMuZm9yRWFjaCh4ID0+IHgudW5zdWJzY3JpYmUoKSk7XHJcblxyXG5cdFx0XHQvKiBEZXRlY3QgY2hhbmdlcyAqL1xyXG5cdFx0XHR0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcblx0XHRcdC8qIEdldCB0aGUgcGFuZWwgZW5kcyB3aXRoIHRoZSBJRCAnbmV3JyAqL1xyXG5cdFx0XHR2YXIgbmV3RXhwYW5zaW9uUGFuZWxJbmRleCA9IHRoaXMubWF0RXhwYW5zaW9uUGFuZWxFbGVtZW50UXVlcnlMaXN0Py50b0FycmF5KCk/LmZpbmRJbmRleCh4ID0+IHgubmF0aXZlRWxlbWVudD8uaWQ/LmVuZHNXaXRoKCcubmV3JykpO1xyXG5cdFx0XHRpZiAobmV3RXhwYW5zaW9uUGFuZWxJbmRleCA+PSAwKSB7XHJcblx0XHRcdFx0LyogQ2xvc2UgYWxsIHBhbmVscyAqL1xyXG5cdFx0XHRcdHRoaXMubWF0RXhwYW5zaW9uUGFuZWxRdWVyeUxpc3Q/LmZpcnN0Py5hY2NvcmRpb24/LmNsb3NlQWxsKCk7XHJcblxyXG5cdFx0XHRcdC8qIE9wZW4gdGhlIG5ldyBwYW5lbCAqL1xyXG5cdFx0XHRcdHRoaXMubWF0RXhwYW5zaW9uUGFuZWxRdWVyeUxpc3Q/LnRvQXJyYXkoKVtuZXdFeHBhbnNpb25QYW5lbEluZGV4XT8ub3BlbigpO1xyXG5cclxuXHRcdFx0XHQvKiBEZXRlY3QgY2hhbmdlcyAqL1xyXG5cdFx0XHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdC8qIEZpbmQgdGhlIGluZGV4IG9mIHRoZSBwYW5lbCB3aXRoIHRoZSBzcGVjaWZpZWQgZWxlbWVudCBJRCAqL1xyXG5cdFx0XHRcdHRoaXMudXJsSGFzaD8uc3BsaXQoJy4nKVxyXG5cdFx0XHRcdFx0Py5yZWR1Y2UoKGFjY3VtdWxhdG9yLCBjdXJyZW50VmFsdWUsIGluZGV4KSA9PiBhY2N1bXVsYXRvci5jb25jYXQoKGluZGV4ID4gMCA/IChhY2N1bXVsYXRvci5zbGljZSgtMSkuam9pbignLicpICsgJy4nKSA6ICcnKSArIGN1cnJlbnRWYWx1ZSksIFtdKVxyXG5cdFx0XHRcdFx0Py5mb3JFYWNoKChoYXNoOiBzdHJpbmcpID0+IHtcclxuXHRcdFx0XHRcdFx0dmFyIGV4cGFuc2lvblBhbmVsSW5kZXggPSB0aGlzLm1hdEV4cGFuc2lvblBhbmVsRWxlbWVudFF1ZXJ5TGlzdD8udG9BcnJheSgpPy5maW5kSW5kZXgoeCA9PiB4Lm5hdGl2ZUVsZW1lbnQuaWQgPT0gaGFzaCk7XHJcblx0XHRcdFx0XHRcdGlmIChleHBhbnNpb25QYW5lbEluZGV4ID49IDApIHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLm1hdEV4cGFuc2lvblBhbmVsUXVlcnlMaXN0Py50b0FycmF5KClbZXhwYW5zaW9uUGFuZWxJbmRleF0/Lm9wZW4oKTtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIERldGVjdCBjaGFuZ2VzIGZvciBvcGVuZWQgcGFuZWxzICovXHJcblx0XHRcdHRoaXMubWF0RXhwYW5zaW9uUGFuZWxRdWVyeUxpc3Q/LmZvckVhY2goeSA9PiB7XHJcblx0XHRcdFx0dGhpcy5tYXRFeHBhbnNpb25QYW5lbFN1YnNjcmlwdGlvbnMucHVzaCh5Lm9wZW5lZC5zdWJzY3JpYmUoXyA9PiB7XHJcblx0XHRcdFx0XHRpZiAodGhpcy5zZXRVcmxIYXNoKSB7XHJcblx0XHRcdFx0XHRcdC8qIEdldCB0aGUgaWQgb2YgdGhlIGN1cnJlbnQgb3BlbmVkIHBhbmVsICovXHJcblx0XHRcdFx0XHRcdHZhciBjdXJyZW50UGFuZWxJZCA9IHlbJ192aWV3Q29udGFpbmVyUmVmJ10/LmVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ/LmlkO1xyXG5cclxuXHRcdFx0XHRcdFx0LyogSWYgdGhlIHBhbmVsIElEIGlzIHNldCwgc2V0IGl0IGFzIHVybCBzZWdtZW50IChoYXNoKSAqL1xyXG5cdFx0XHRcdFx0XHRpZiAoY3VycmVudFBhbmVsSWQpIHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwgeyBmcmFnbWVudDogY3VycmVudFBhbmVsSWQsIHJlcGxhY2VVcmw6IHRydWUgfSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdC8qIE90aGVyd2lzZSByZW1vdmUgdGhlIHNlZ21lbnQgZnJvbSB0aGUgdXJsICovXHJcblx0XHRcdFx0XHRcdGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7IHJlcGxhY2VVcmw6IHRydWUgfSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHQvKiBEZXRlY3QgY2hhbmdlcyAqL1xyXG5cdFx0XHRcdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblx0XHRcdFx0fSkpO1xyXG5cclxuXHRcdFx0XHQvKiBEZXRlY3QgY2hhbmdlcyBmb3IgY2xvc2VkIHBhbmVscyAqL1xyXG5cdFx0XHRcdHRoaXMubWF0RXhwYW5zaW9uUGFuZWxTdWJzY3JpcHRpb25zLnB1c2goeS5jbG9zZWQuc3Vic2NyaWJlKF8gPT4ge1xyXG5cdFx0XHRcdFx0aWYgKHRoaXMuc2V0VXJsSGFzaCkge1xyXG5cdFx0XHRcdFx0XHQvKiBHZXQgdGhlIGlkIG9mIHRoZSBjdXJyZW50IG9wZW5lZCBwYW5lbCAqL1xyXG5cdFx0XHRcdFx0XHR2YXIgY3VycmVudFBhbmVsSWRQYXJ0cyA9IHlbJ192aWV3Q29udGFpbmVyUmVmJ10/LmVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ/LmlkPy5zcGxpdCgnLicpO1xyXG5cclxuXHRcdFx0XHRcdFx0LyogSWYgdGhlIHBhbmVsIElEIGlzIHNldCwgc2V0IGl0IGFzIHVybCBzZWdtZW50IChoYXNoKSAqL1xyXG5cdFx0XHRcdFx0XHRpZiAoY3VycmVudFBhbmVsSWRQYXJ0cy5sZW5ndGggPiAxKSB7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHsgZnJhZ21lbnQ6IGN1cnJlbnRQYW5lbElkUGFydHMuc2xpY2UoMCwgLTEpLmpvaW4oJy4nKSwgcmVwbGFjZVVybDogdHJ1ZSB9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdC8qIERldGVjdCBjaGFuZ2VzICovXHJcblx0XHRcdFx0XHR0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHRcdFx0XHR9KSk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblxyXG5cdFx0LyogTm90aWZ5IGV4cGFuc2lvbiBwYW5lbCBsaXN0IGNoYW5nZXMgKi9cclxuXHRcdHRoaXMubWF0RXhwYW5zaW9uUGFuZWxRdWVyeUxpc3Qubm90aWZ5T25DaGFuZ2VzKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZXRyaWV2ZXMgYW4gaW5zdGFuY2UgZnJvbSB0aGUgaW5qZWN0b3IgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHRva2VuLlxyXG5cdCAqIElmIG5vdCBmb3VuZDpcclxuXHQgKiAtIFRocm93cyB7QGxpbmsgTm9Qcm92aWRlckVycm9yfSBpZiBubyBgbm90Rm91bmRWYWx1ZWAgdGhhdCBpcyBub3QgZXF1YWwgdG9cclxuXHQgKiBJbmplY3Rvci5USFJPV19JRl9OT1RfRk9VTkQgaXMgZ2l2ZW5cclxuXHQgKiAtIFJldHVybnMgdGhlIGBub3RGb3VuZFZhbHVlYCBvdGhlcndpc2VcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgZ2V0U2VydmljZTxUPih0b2tlbjogVHlwZTxUPik6IFQge1xyXG5cdFx0cmV0dXJuIFNlcnZpY2VMb2NhdG9yLmdldFNlcnZpY2UodG9rZW4pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyBiYXNlIHJvdXRlXHJcblx0ICogQHBhcmFtIHNuYXBzaG90IFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBnZXRNYWluUm91dGUoc25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IHtcclxuXHRcdGlmIChzbmFwc2hvdCAmJiAhc25hcHNob3QuZGF0YS5tZW51KSB7XHJcblx0XHRcdHJldHVybiB0aGlzLmdldE1haW5Sb3V0ZShzbmFwc2hvdC5wYXJlbnQpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBzbmFwc2hvdDtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNob3dzIGEgY29uZmlybSBkaWFsb2cgdG8gZGVsZXRlIGFuIGl0ZW0gXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIHNob3dEZWxldGVJdGVtRGlhbG9nKCk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW5Db25maXJtKHtcclxuXHRcdFx0bWVzc2FnZTogJGxvY2FsaXplYDpAQGRpYWxvZy5tZXNzYWdlLmRlbGV0ZS5vbmU6QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIGl0ZW0/YCxcclxuXHRcdFx0dGl0bGU6ICRsb2NhbGl6ZWA6QEBkaWFsb2cudGl0bGUuZGVsZXRlOkNvbmZpcm0gRGVsZXRlYCxcclxuXHRcdFx0Y2FuY2VsQnV0dG9uOiAkbG9jYWxpemVgOkBAY2FuY2VsOkNhbmNlbGAsXHJcblx0XHRcdGFjY2VwdEJ1dHRvbjogJGxvY2FsaXplYDpAQGRlbGV0ZTpEZWxldGVgLFxyXG5cdFx0fSkuYWZ0ZXJDbG9zZWQoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNob3dzIGEgY29uZmlybSBkaWFsb2cgdG8gZGVsZXRlIG11bHRpcGxlIGl0ZW1zXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIHNob3dEZWxldGVJdGVtc0RpYWxvZygpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuZGlhbG9nU2VydmljZS5vcGVuQ29uZmlybSh7XHJcblx0XHRcdG1lc3NhZ2U6ICRsb2NhbGl6ZWA6QEBkaWFsb2cubWVzc2FnZS5kZWxldGUubGlzdDpBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoZSBzZWxlY3RlZCBpdGVtcz9gLFxyXG5cdFx0XHR0aXRsZTogJGxvY2FsaXplYDpAQGRpYWxvZy50aXRsZS5kZWxldGU6Q29uZmlybSBEZWxldGVgLFxyXG5cdFx0XHRjYW5jZWxCdXR0b246ICRsb2NhbGl6ZWA6QEBjYW5jZWw6Q2FuY2VsYCxcclxuXHRcdFx0YWNjZXB0QnV0dG9uOiAkbG9jYWxpemVgOkBAZGVsZXRlOkRlbGV0ZWAsXHJcblx0XHR9KS5hZnRlckNsb3NlZCgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2hvd3MgYSBjb25maXJtIGRpYWxvZyB0byBzZW5kIHNvbWUgZGF0YVxyXG5cdCAqIEBwYXJhbSBtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIGRpc3BsYXlcclxuXHQgKiBAcGFyYW0gb2JzZXJ2YWJlIFRoZSBvYnNlcnZhYmxlIGluc3RhbmNlXHJcblx0ICogQHBhcmFtIHN1Y2Nlc3NDYWxsYmFjayBBIHN1Y2Nlc3MgY2FsbGJhY2tcclxuXHQgKiBAcGFyYW0gZXJyb3JDYWxsYmFjayBBbiBlcnJvciBjYWxsYmFja1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBzaG93Q29uZmlybWF0aW9uRGlhbG9nKG1lc3NhZ2U6IHN0cmluZywgb2JzZXJ2YWJlOiBPYnNlcnZhYmxlPGFueT4sIHN1Y2Nlc3NDYWxsYmFjazogRnVuY3Rpb24gPSBudWxsLCBlcnJvckNhbGxiYWNrOiBGdW5jdGlvbiA9IG51bGwpOiB2b2lkIHtcclxuXHRcdHRoaXMuZGlhbG9nU2VydmljZVxyXG5cdFx0XHQub3BlbkNvbmZpcm0oe1xyXG5cdFx0XHRcdG1lc3NhZ2U6IG1lc3NhZ2UsXHJcblx0XHRcdFx0dGl0bGU6ICRsb2NhbGl6ZWA6QEBkaWFsb2cudGl0bGUuY29uZmlybTpDb25maXJtYCxcclxuXHRcdFx0XHRjYW5jZWxCdXR0b246ICRsb2NhbGl6ZWA6QEBjYW5jZWw6Q2FuY2VsYCxcclxuXHRcdFx0XHRhY2NlcHRCdXR0b246ICRsb2NhbGl6ZWA6QEBvazpPa2AsXHJcblx0XHRcdH0pXHJcblx0XHRcdC5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoYWNjZXB0OiBib29sZWFuKSA9PiB7XHJcblx0XHRcdFx0aWYgKGFjY2VwdCkge1xyXG5cdFx0XHRcdFx0b2JzZXJ2YWJlLnN1YnNjcmliZSh4ID0+IHtcclxuXHRcdFx0XHRcdFx0dGhpcy5zaG93TWVzc2FnZSgkbG9jYWxpemVgOkBAc25hY2tiYXIuc2VuZC5zdWNjZXNzOkRhdGEgc2VudCBzdWNjZXNzZnVsbHkuYCk7XHJcblxyXG5cdFx0XHRcdFx0XHRpZiAoc3VjY2Vzc0NhbGxiYWNrKSB7XHJcblx0XHRcdFx0XHRcdFx0c3VjY2Vzc0NhbGxiYWNrKHgpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9LCBlcnJvcnMgPT4ge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmlzU2F2aW5nID0gZmFsc2U7XHJcblx0XHRcdFx0XHRcdGlmIChlcnJvckNhbGxiYWNrKSB7XHJcblx0XHRcdFx0XHRcdFx0ZXJyb3JDYWxsYmFjayhlcnJvcnMpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTmF2aWdhdGVzIHRvIHRoZSBhZGQgcGFnZS5cclxuXHQgKi9cclxuXHRwdWJsaWMgb3BlbkRpYWxvZzxULCBEID0gYW55PihkaWFsb2dUeXBlOiBUeXBlPFQ+LCBjb25maWc6IE1hdERpYWxvZ0NvbmZpZzxEPiwgY2FsbGJhY2s6IEZ1bmN0aW9uKTogdm9pZCB7XHJcblx0XHR0aGlzLmRpYWxvZy5vcGVuKGRpYWxvZ1R5cGUsIE9iamVjdC5hc3NpZ24oeyB3aWR0aDogJzY1MHB4JywgZGF0YToge30sIHBhbmVsQ2xhc3M6IFsnZGlhbG9nLWZ1bGwtc2NyZWVuJ10gfSwgY29uZmlnKSlcclxuXHRcdFx0LmFmdGVyQ2xvc2VkKClcclxuXHRcdFx0LnN1YnNjcmliZShfID0+IGNhbGxiYWNrKCkpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2hvd3MgYSBtZXNzYWdlXHJcblx0ICogQHBhcmFtIG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gZGlzcGxheVxyXG5cdCAqIEBwYXJhbSB0eXBlIFRoZSB0eXBlIG9mIHRoZSBtZXNzYWdlXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIHNob3dNZXNzYWdlKG1lc3NhZ2U/OiBzdHJpbmcsIHR5cGU6IE1lc3NhZ2VUeXBlID0gTWVzc2FnZVR5cGUuU3VjY2Vzcyk6IHZvaWQge1xyXG5cdFx0dmFyIHNuYWNrQmFyQ2xhc3MgPSAncHJpbWFyeSc7XHJcblx0XHRzd2l0Y2ggKHR5cGUpIHtcclxuXHRcdFx0Y2FzZSBNZXNzYWdlVHlwZS5TdWNjZXNzOlxyXG5cdFx0XHRcdHNuYWNrQmFyQ2xhc3MgPSAncHJpbWFyeSc7XHJcblx0XHRcdFx0YnJlYWs7XHJcblxyXG5cdFx0XHRjYXNlIE1lc3NhZ2VUeXBlLldhcm5pbmc6XHJcblx0XHRcdFx0c25hY2tCYXJDbGFzcyA9ICd3YXJuJztcclxuXHRcdFx0XHRicmVhaztcclxuXHJcblx0XHRcdGNhc2UgTWVzc2FnZVR5cGUuRXJyb3I6XHJcblx0XHRcdFx0c25hY2tCYXJDbGFzcyA9ICdlcnJvcic7XHJcblx0XHRcdFx0YnJlYWs7XHJcblxyXG5cdFx0XHRkZWZhdWx0OlxyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXMuc25hY2tCYXJTZXJ2aWNlLm9wZW4obWVzc2FnZSB8fCAkbG9jYWxpemVgOkBAc25hY2tiYXIuc2VuZC5zdWNjZXNzOkRhdGEgc2VudCBzdWNjZXNzZnVsbHkuYCwgbnVsbCwge1xyXG5cdFx0XHRkdXJhdGlvbjogMzAwMCxcclxuXHRcdFx0cGFuZWxDbGFzczogW3NuYWNrQmFyQ2xhc3NdXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEluaXRvYWxpemVzIHRoZSB0aW55bWNlIGVkaXRvclxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBpbml0RWRpdG9yKGVkaXRvckNvbmZpZzogYW55ID0ge30pIHtcclxuXHRcdE9iamVjdC5hc3NpZ24odGhpcy5lZGl0b3JDb25maWcsIHtcclxuXHRcdFx0c3VmZml4OiAnLm1pbicsXHJcblx0XHRcdHNraW46IGZhbHNlLFxyXG5cdFx0XHRoZWlnaHQ6ICcxNzBweCcsXHJcblx0XHRcdGNvbnRlbnRfY3NzOiBmYWxzZSxcclxuXHRcdFx0cGx1Z2luczogdGhpcy5lZGl0b3JQbHVnaW5zLFxyXG5cdFx0XHR0b29sYmFyOiB0aGlzLmVkaXRvclRvb2xiYXIsXHJcblx0XHRcdHBhc3RlX2FzX3RleHQ6IHRydWUsXHJcblx0XHRcdGxhbmd1YWdlOiAnZGUnLFxyXG5cdFx0XHRsYW5ndWFnZV91cmw6ICcvYXNzZXRzL3RpbnltY2UvbGFuZ3MvZGUuanMnLFxyXG5cdFx0XHRkb2N1bWVudF9iYXNlX3VybDogYCR7dGhpcy5hcHBTZXR0aW5nLmFwaVVybH1maWxlL2AsXHJcblx0XHRcdGF1dG9tYXRpY191cGxvYWRzOiB0cnVlLFxyXG5cdFx0XHRyZWxhdGl2ZV91cmxzOiB0cnVlLFxyXG5cdFx0XHRjb252ZXJ0X3VybHM6IGZhbHNlLFxyXG5cdFx0XHRleHRlbmRlZF92YWxpZF9lbGVtZW50czogJ3NwYW5baWR8Y2xhc3N8c3R5bGVdLCtAW2RhdGEtb3B0aW9uc10nLFxyXG5cdFx0XHRhbGxvd19odG1sX2luX25hbWVkX2FuY2hvcjogdHJ1ZVxyXG5cdFx0fSwgZWRpdG9yQ29uZmlnKTtcclxuXHJcblx0XHR0aGlzLmlzRWRpdG9ySW5pdGlhbHplZCA9IHRydWU7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTZXRzIHN1YnRpdGxlIGZyb20gY3VycmVuIG1lbnVcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgc2V0VGl0bGVzKCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMubWVudSkge1xyXG5cdFx0XHR0aGlzLnRpdGxlU2VydmljZS5zZXRUaXRsZSh0aGlzLm1lbnUudGl0bGUpO1xyXG5cdFx0XHR0aGlzLnRpdGxlID0gdGhpcy50aXRsZVNlcnZpY2UuZ2V0VGl0bGUoKTtcclxuXHJcblx0XHRcdGlmICghdGhpcy5tZW51Lml0ZW1zKSB7XHJcblx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiBHZXQgc3VidGl0bGUgZnJvbSB1cmwgcGFyYW1zICovXHJcblx0XHRcdHZhciBzdWJ0aXRsZSA9IHRoaXMucm91dGU/LnNuYXBzaG90Py5wYXJhbU1hcD8uZ2V0KCdzdWJ0aXRsZScpO1xyXG5cdFx0XHRpZiAoc3VidGl0bGUpIHtcclxuXHRcdFx0XHR0cnkgeyB0aGlzLnN1YnRpdGxlID0gYXRvYihzdWJ0aXRsZSk7IH1cclxuXHRcdFx0XHRjYXRjaCAoZSkgeyB0aGlzLnN1YnRpdGxlID0gc3VidGl0bGU7IH1cclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHQvKiBHZXQgY3VycmVudCByb3V0ZSAqL1xyXG5cdFx0XHRcdGxldCBjdXJyZW50Um91dGUgPSB0aGlzLnJvdXRlci51cmwuc3BsaXQoJz8nKVswXT8uc3BsaXQoJzsnKVswXTtcclxuXHRcdFx0XHR2YXIgc3VibWVudSA9IHRoaXMubWVudS5pdGVtcy5maWx0ZXIoeCA9PiB4LnBhdGggPT0gY3VycmVudFJvdXRlKVswXTtcclxuXHRcdFx0XHRpZiAoc3VibWVudSkge1xyXG5cdFx0XHRcdFx0dGhpcy5zdWJ0aXRsZSA9IHN1Ym1lbnUudGl0bGU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBOYXZpZ2F0ZSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgYXJyYXkgb2YgY29tbWFuZHMgYW5kIGEgc3RhcnRpbmcgcG9pbnQuXHJcblx0ICogQHBhcmFtIGNvbW1hbmRzIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBuYXZpZ2F0ZShjb21tYW5kczogYW55W10sIHF1ZXJ5UGFyYW1zPzogYW55LCBmcmFnbWVudD86IHN0cmluZywgcHJlc2VydmVGcmFnbWVudD86IGJvb2xlYW4pOiB2b2lkIHtcclxuXHRcdHRoaXMucm91dGVyLm5hdmlnYXRlKGNvbW1hbmRzLCB7XHJcblx0XHRcdHF1ZXJ5UGFyYW1zOiBPYmplY3QuYXNzaWduKHsgcmV0dXJuVXJsOiB0aGlzLmN1cnJlbnRSb3V0ZSB9LCBxdWVyeVBhcmFtcyB8fCB7fSksXHJcblx0XHRcdGZyYWdtZW50OiBmcmFnbWVudCxcclxuXHRcdFx0cHJlc2VydmVGcmFnbWVudDogcHJlc2VydmVGcmFnbWVudCxcclxuXHRcdFx0cmVsYXRpdmVUbzogdGhpcy5yb3V0ZVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDb252ZXJ0IE9iamVjdCB0byBIdHRwSGVhZGVyc1xyXG5cdCAqIFxyXG5cdCAqIEBwYXJhbSBib2R5XHJcblx0ICovXHJcblx0cHJvdGVjdGVkIHRvSHR0cEhlYWRlcnMoYm9keTogT2JqZWN0KTogSHR0cEhlYWRlcnMge1xyXG5cdFx0aWYgKCFib2R5KSB7XHJcblx0XHRcdHJldHVybiBuZXcgSHR0cEhlYWRlcnMoKTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoYm9keSlcclxuXHRcdFx0LmZpbHRlcihrZXkgPT4gYm9keVtrZXldICE9IG51bGwgJiYgYm9keVtrZXldICE9ICcnKVxyXG5cdFx0XHQucmVkdWNlKChwLCBrZXkpID0+IHAuc2V0KGtleSwgYm9keVtrZXldKSwgbmV3IEh0dHBIZWFkZXJzKCkpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUGFyc2VzIGh0dHAgcmVzcG9uc2UgZXJyb3JzXHJcblx0ICogQHBhcmFtIGVycm9ycyBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgcGFyc2VFcnJvcnMoZXJyb3JzOiBPYmplY3QpOiB2b2lkIHtcclxuXHRcdHRoaXMuZXJyb3JzID0gW107XHJcblx0XHR0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG5cdFx0dGhpcy5pc1NhdmluZyA9IGZhbHNlO1xyXG5cclxuXHRcdGlmIChlcnJvcnMpIHtcclxuXHRcdFx0T2JqZWN0LmtleXMoZXJyb3JzKS5mb3JFYWNoKGVsID0+IHtcclxuXHRcdFx0XHRsZXQgZXJyb3IgPSBlcnJvcnNbZWxdO1xyXG5cdFx0XHRcdGlmIChBcnJheS5pc0FycmF5KGVycm9yKSkge1xyXG5cdFx0XHRcdFx0ZXJyb3IuZm9yRWFjaChlcnIgPT4ge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmVycm9ycy5wdXNoKGVycik7XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiBlcnJvciA9PT0gXCJzdHJpbmdcIikge1xyXG5cdFx0XHRcdFx0dGhpcy5lcnJvcnMucHVzaChlcnJvcik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEhhbmRsZSBIdHRwIG9wZXJhdGlvbiB0aGF0IGZhaWxlZC5cclxuXHQgKiBMZXQgdGhlIGFwcCBjb250aW51ZS5cclxuXHQgKiBAcGFyYW0gb3BlcmF0aW9uIC0gbmFtZSBvZiB0aGUgb3BlcmF0aW9uIHRoYXQgZmFpbGVkXHJcblx0ICogQHBhcmFtIHJlc3VsdCAtIG9wdGlvbmFsIHZhbHVlIHRvIHJldHVybiBhcyB0aGUgb2JzZXJ2YWJsZSByZXN1bHRcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgaGFuZGxlRXJyb3I8VD4ob3BlcmF0aW9uID0gJ29wZXJhdGlvbicsIHJlc3VsdD86IFQpIHtcclxuXHRcdHJldHVybiAoZXJyb3I6IGFueSk6IE9ic2VydmFibGU8VD4gPT4ge1xyXG5cclxuXHRcdFx0LyogUGFyc2UgdGhlIGVycm9yIG1lc3NhZ2VzICovXHJcblx0XHRcdHRoaXMucGFyc2VFcnJvcnMoZXJyb3IpO1xyXG5cclxuXHRcdFx0LyogTG9nIHRvIGNvbnNvbGUgKi9cclxuXHRcdFx0dGhpcy53YXJuKGAke29wZXJhdGlvbn0gZmFpbGVkOiAke2Vycm9yLm1lc3NhZ2V9YCk7XHJcblxyXG5cdFx0XHQvKiBMZXQgdGhlIGFwcCBrZWVwIHJ1bm5pbmcgYnkgcmV0dXJuaW5nIGFuIGVtcHR5IHJlc3VsdCAqL1xyXG5cdFx0XHRyZXR1cm4gb2YocmVzdWx0IGFzIFQpO1xyXG5cdFx0fTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIExvZyB0byBjb25zb2xlXHJcblx0ICogQHBhcmFtIG1lc3NhZ2UgXHJcblx0ICogQHBhcmFtIG9wdGlvbmFsUGFyYW1zIFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBsb2cobWVzc2FnZTogc3RyaW5nLCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pIHtcclxuXHRcdGlmICh0aGlzLmRlYnVnKSB7XHJcblx0XHRcdGNvbnNvbGUubG9nKG1lc3NhZ2UsIG9wdGlvbmFsUGFyYW1zKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIExvZyB0byBjb25zb2xlXHJcblx0ICogQHBhcmFtIG1lc3NhZ2UgXHJcblx0ICogQHBhcmFtIG9wdGlvbmFsUGFyYW1zIFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCB3YXJuKG1lc3NhZ2U6IHN0cmluZywgLi4ub3B0aW9uYWxQYXJhbXM6IGFueVtdKSB7XHJcblx0XHRpZiAodGhpcy5kZWJ1Zykge1xyXG5cdFx0XHRjb25zb2xlLndhcm4obWVzc2FnZSwgb3B0aW9uYWxQYXJhbXMpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2xlYW5zIHRoZSBvYmplY3RzXHJcblx0ICogUmVtb3ZlcyBlbXB0eSBwcm9wZXJ0aWVzXHJcblx0ICogQHBhcmFtIG9iaiBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgY2xlYW4ob2JqOiBhbnkpOiBhbnkge1xyXG5cdFx0dHJ5IHtcclxuXHRcdFx0Zm9yICh2YXIgcHJvcE5hbWUgaW4gb2JqKSB7XHJcblx0XHRcdFx0aWYgKG9ialtwcm9wTmFtZV0gPT09IG51bGwgfHwgb2JqW3Byb3BOYW1lXSA9PT0gdW5kZWZpbmVkIHx8IG9ialtwcm9wTmFtZV0gPT09IFwiXCIpIHtcclxuXHRcdFx0XHRcdGRlbGV0ZSBvYmpbcHJvcE5hbWVdO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSBjYXRjaCAoZXJyb3IpIHsgfVxyXG5cclxuXHRcdHJldHVybiBvYmo7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTYW5pdGl6ZXMgdGhlIHNwZWNpZmllZCBvYmplY3RcclxuXHQgKiBAcGFyYW0gb2JqIFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBzYW5pdGl6ZU9iamVjdChvYmo6IGFueSwgLi4uaWdub3JlOiBzdHJpbmdbXSk6IGFueSB7XHJcblx0XHRyZXR1cm4gT2JqZWN0LmtleXMob2JqKVxyXG5cdFx0XHQuZmlsdGVyKHggPT4gb2JqW3hdKVxyXG5cdFx0XHQuZmlsdGVyKHggPT4gIShpZ25vcmUgfHwgW10pLm1hcCh4ID0+IHgudG9Mb3dlckNhc2UoKSkuaW5jbHVkZXMoeC50b0xvd2VyQ2FzZSgpKSlcclxuXHRcdFx0LnJlZHVjZSgocmVzdWx0LCBrZXkpID0+IHtcclxuXHRcdFx0XHRyZXN1bHRba2V5XSA9IGlzTmFOKCtvYmpba2V5XSkgPyBvYmpba2V5XSA6ICtvYmpba2V5XTtcclxuXHRcdFx0XHRyZXR1cm4gcmVzdWx0O1xyXG5cdFx0XHR9LCB7fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDaGVja3MgaWYgdGhlIHVzZXIgc2VsZWNldGVkIGFueSB0ZXh0IGluIHRoZSBkb2N1bWVudFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBpc1RleHRTZWxlY3RlZCA9ICgpOiBib29sZWFuID0+IHdpbmRvdz8uZ2V0U2VsZWN0aW9uKCk/LnRvU3RyaW5nKCk/Lmxlbmd0aCA+IDA7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgY2FsbGJhY2sgdXNlZCBmb3IgYW55IGN1c3RvbSBjbGVhbnVwIHRoYXQgbmVlZHMgdG8gb2NjdXJcclxuXHQgKiB3aGVuIHRoZSBpbnN0YW5jZSBpcyBkZXN0cm95ZWQuXHJcblx0ICovXHJcblx0bmdPbkRlc3Ryb3koKSB7XHJcblx0XHR0aGlzLm1hdEV4cGFuc2lvblBhbmVsU3Vic2NyaXB0aW9ucy5mb3JFYWNoKHggPT4geC51bnN1YnNjcmliZSgpKTtcclxuXHR9XHJcbn0iXX0=
@@ -0,0 +1,9 @@
1
+ export const GlobalRoles = {
2
+ Administrator: 'Administrator',
3
+ SystemAdministrator: 'SystemAdministrator',
4
+ SystemSupervisor: 'SystemSupervisor',
5
+ ClientAdministrator: 'ClientAdministrator',
6
+ DepartmentAdministrator: 'DepartmentAdministrator',
7
+ ExternalAPI: 'ExternalAPI',
8
+ };
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLXJvbGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvYmFzZS9jb25zdGFudHMvZ2xvYmFsLXJvbGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRztJQUN2QixhQUFhLEVBQUUsZUFBZTtJQUM5QixtQkFBbUIsRUFBRSxxQkFBcUI7SUFDMUMsZ0JBQWdCLEVBQUUsa0JBQWtCO0lBQ3BDLG1CQUFtQixFQUFFLHFCQUFxQjtJQUMxQyx1QkFBdUIsRUFBRSx5QkFBeUI7SUFDbEQsV0FBVyxFQUFFLGFBQWE7Q0FDN0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBHbG9iYWxSb2xlcyA9IHtcclxuICAgIEFkbWluaXN0cmF0b3I6ICdBZG1pbmlzdHJhdG9yJyxcclxuICAgIFN5c3RlbUFkbWluaXN0cmF0b3I6ICdTeXN0ZW1BZG1pbmlzdHJhdG9yJyxcclxuICAgIFN5c3RlbVN1cGVydmlzb3I6ICdTeXN0ZW1TdXBlcnZpc29yJyxcclxuICAgIENsaWVudEFkbWluaXN0cmF0b3I6ICdDbGllbnRBZG1pbmlzdHJhdG9yJyxcclxuICAgIERlcGFydG1lbnRBZG1pbmlzdHJhdG9yOiAnRGVwYXJ0bWVudEFkbWluaXN0cmF0b3InLFxyXG4gICAgRXh0ZXJuYWxBUEk6ICdFeHRlcm5hbEFQSScsXHJcbn0iXX0=
@@ -28,7 +28,13 @@ export class AuthHelper {
28
28
  */
29
29
  static hasRole(...roles) {
30
30
  return roles.some(role => {
31
- return this.user && this.isString(this.user.role) && role && this.user.role.toLowerCase() === role.toLowerCase();
31
+ if (!role || !this.user) {
32
+ return false;
33
+ }
34
+ /* Convert role to lower case */
35
+ role = role.toLowerCase();
36
+ return (this.isString(this.user.role) && this.user.role.toLowerCase() === role) ||
37
+ Array.isArray(this.user.role) && this.user.role.map(x => x?.toLowerCase()).includes(role);
32
38
  });
33
39
  }
34
40
  /**
@@ -43,4 +49,4 @@ export class AuthHelper {
43
49
  * Authenticated user
44
50
  */
45
51
  AuthHelper.user = new AuthUser();
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9iYXNlL2hlbHBlcnMvYXV0aC1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRS9DLFVBQVU7QUFDVixNQUFNLE9BQU8sVUFBVTtJQU10Qjs7T0FFRztJQUNJLE1BQU0sQ0FBQyxlQUFlO1FBQzVCLE9BQU8sSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxXQUFxQjtRQUNqRCw2QkFBNkI7UUFDN0IsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQixXQUFXLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRWxDLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDckQsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dCQUNwQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEQsQ0FBQyxDQUFDLENBQUM7U0FDSDtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFlO1FBQ3ZDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN4QixPQUFPLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbEgsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFRO1FBQzlCLE9BQU8sT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLEdBQUcsWUFBWSxNQUFNLENBQUM7SUFDekQsQ0FBQzs7QUE5Q0Q7O0dBRUc7QUFDVyxlQUFJLEdBQWEsSUFBSSxRQUFRLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF1dGhVc2VyIH0gZnJvbSBcIi4uL21vZGVscy9hdXRoLXVzZXJcIjtcclxuXHJcbi8vQGR5bmFtaWNcclxuZXhwb3J0IGNsYXNzIEF1dGhIZWxwZXIge1xyXG5cdC8qKlxyXG5cdCAqIEF1dGhlbnRpY2F0ZWQgdXNlclxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzdGF0aWMgdXNlcjogQXV0aFVzZXIgPSBuZXcgQXV0aFVzZXIoKTtcclxuXHJcblx0LyoqXHJcblx0ICogQ2hlY2tzIGlmIHRoZSBjdXJyZW50IHVzZXIgaXMgYXV0aGVudGljYXRlZFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzdGF0aWMgaXNBdXRoZW50aWNhdGVkKCk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHRoaXMudXNlciAmJiB0aGlzLnVzZXIuc3ViID4gMDtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENoZWNrcyBpZiB0aGUgdXNlciBoYXMgdGhlIHNwZWNpZmllZCBwZXJtaXNzaW9uXHJcblx0ICogQHBhcmFtIHBlcm1pc3Npb24gVGhlIHBlcm1pc3Npb24gdG8gY2hlY2tcclxuXHQgKi9cclxuXHRwdWJsaWMgc3RhdGljIGlzUGVybWl0dGVkKC4uLnBlcm1pc3Npb25zOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xyXG5cdFx0LyogQWRtaW5zIGhhdmUgZnVsbCBhY2Nlc3MgKi9cclxuXHRcdHBlcm1pc3Npb25zLnB1c2goJ0FkbWluJyk7XHJcblx0XHRwZXJtaXNzaW9ucy5wdXNoKCdBZG1pbmlzdHJhdG9yJyk7XHJcblxyXG5cdFx0aWYgKHRoaXMudXNlciAmJiBBcnJheS5pc0FycmF5KHRoaXMudXNlci5wZXJtaXNzaW9uKSkge1xyXG5cdFx0XHRyZXR1cm4gcGVybWlzc2lvbnMuc29tZShwZXJtaXNzaW9uID0+IHtcclxuXHRcdFx0XHRyZXR1cm4gdGhpcy51c2VyLnBlcm1pc3Npb24uaW5kZXhPZihwZXJtaXNzaW9uKSA+PSAwO1xyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gZmFsc2U7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgdXNlciBoYXMgb24gb2YgdGhlIHNwZWNpZmllZCByb2xlc1xyXG5cdCAqIEBwYXJhbSByb2xlcyBcclxuXHQgKi9cclxuXHRwdWJsaWMgc3RhdGljIGhhc1JvbGUoLi4ucm9sZXM6IHN0cmluZ1tdKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gcm9sZXMuc29tZShyb2xlID0+IHtcclxuXHRcdFx0cmV0dXJuIHRoaXMudXNlciAmJiB0aGlzLmlzU3RyaW5nKHRoaXMudXNlci5yb2xlKSAmJiByb2xlICYmIHRoaXMudXNlci5yb2xlLnRvTG93ZXJDYXNlKCkgPT09IHJvbGUudG9Mb3dlckNhc2UoKTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2hlY2tzIGlmIHRoZSBzcGVjaWZpZWQgdmFyaWFibGUgaXMgYSBzdHJpbmdcclxuXHQgKiBAcGFyYW0gc3RyIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzdGF0aWMgaXNTdHJpbmcoc3RyOiBhbnkpIHtcclxuXHRcdHJldHVybiB0eXBlb2Ygc3RyID09PSAnc3RyaW5nJyB8fCBzdHIgaW5zdGFuY2VvZiBTdHJpbmc7XHJcblx0fVxyXG59Il19
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9iYXNlL2hlbHBlcnMvYXV0aC1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRS9DLFVBQVU7QUFDVixNQUFNLE9BQU8sVUFBVTtJQU10Qjs7T0FFRztJQUNJLE1BQU0sQ0FBQyxlQUFlO1FBQzVCLE9BQU8sSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxXQUFxQjtRQUNqRCw2QkFBNkI7UUFDN0IsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQixXQUFXLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRWxDLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDckQsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dCQUNwQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEQsQ0FBQyxDQUFDLENBQUM7U0FDSDtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFlO1FBQ3ZDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN4QixJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDeEIsT0FBTyxLQUFLLENBQUM7YUFDYjtZQUVELGdDQUFnQztZQUNoQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRTFCLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssSUFBSSxDQUFDO2dCQUM5RSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVGLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBUTtRQUM5QixPQUFPLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxHQUFHLFlBQVksTUFBTSxDQUFDO0lBQ3pELENBQUM7O0FBdEREOztHQUVHO0FBQ1csZUFBSSxHQUFhLElBQUksUUFBUSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdXRoVXNlciB9IGZyb20gXCIuLi9tb2RlbHMvYXV0aC11c2VyXCI7XHJcblxyXG4vL0BkeW5hbWljXHJcbmV4cG9ydCBjbGFzcyBBdXRoSGVscGVyIHtcclxuXHQvKipcclxuXHQgKiBBdXRoZW50aWNhdGVkIHVzZXJcclxuXHQgKi9cclxuXHRwdWJsaWMgc3RhdGljIHVzZXI6IEF1dGhVc2VyID0gbmV3IEF1dGhVc2VyKCk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB1c2VyIGlzIGF1dGhlbnRpY2F0ZWRcclxuXHQgKi9cclxuXHRwdWJsaWMgc3RhdGljIGlzQXV0aGVudGljYXRlZCgpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLnVzZXIgJiYgdGhpcy51c2VyLnN1YiA+IDA7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDaGVja3MgaWYgdGhlIHVzZXIgaGFzIHRoZSBzcGVjaWZpZWQgcGVybWlzc2lvblxyXG5cdCAqIEBwYXJhbSBwZXJtaXNzaW9uIFRoZSBwZXJtaXNzaW9uIHRvIGNoZWNrXHJcblx0ICovXHJcblx0cHVibGljIHN0YXRpYyBpc1Blcm1pdHRlZCguLi5wZXJtaXNzaW9uczogc3RyaW5nW10pOiBib29sZWFuIHtcclxuXHRcdC8qIEFkbWlucyBoYXZlIGZ1bGwgYWNjZXNzICovXHJcblx0XHRwZXJtaXNzaW9ucy5wdXNoKCdBZG1pbicpO1xyXG5cdFx0cGVybWlzc2lvbnMucHVzaCgnQWRtaW5pc3RyYXRvcicpO1xyXG5cclxuXHRcdGlmICh0aGlzLnVzZXIgJiYgQXJyYXkuaXNBcnJheSh0aGlzLnVzZXIucGVybWlzc2lvbikpIHtcclxuXHRcdFx0cmV0dXJuIHBlcm1pc3Npb25zLnNvbWUocGVybWlzc2lvbiA9PiB7XHJcblx0XHRcdFx0cmV0dXJuIHRoaXMudXNlci5wZXJtaXNzaW9uLmluZGV4T2YocGVybWlzc2lvbikgPj0gMDtcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIGZhbHNlO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2hlY2tzIGlmIHRoZSBjdXJyZW50IHVzZXIgaGFzIG9uIG9mIHRoZSBzcGVjaWZpZWQgcm9sZXNcclxuXHQgKiBAcGFyYW0gcm9sZXMgXHJcblx0ICovXHJcblx0cHVibGljIHN0YXRpYyBoYXNSb2xlKC4uLnJvbGVzOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHJvbGVzLnNvbWUocm9sZSA9PiB7XHJcblx0XHRcdGlmICghcm9sZSB8fCAhdGhpcy51c2VyKSB7XHJcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiBDb252ZXJ0IHJvbGUgdG8gbG93ZXIgY2FzZSAqL1xyXG5cdFx0XHRyb2xlID0gcm9sZS50b0xvd2VyQ2FzZSgpO1xyXG5cclxuXHRcdFx0cmV0dXJuICh0aGlzLmlzU3RyaW5nKHRoaXMudXNlci5yb2xlKSAmJiB0aGlzLnVzZXIucm9sZS50b0xvd2VyQ2FzZSgpID09PSByb2xlKSB8fFxyXG5cdFx0XHRcdEFycmF5LmlzQXJyYXkodGhpcy51c2VyLnJvbGUpICYmIHRoaXMudXNlci5yb2xlLm1hcCh4ID0+IHg/LnRvTG93ZXJDYXNlKCkpLmluY2x1ZGVzKHJvbGUpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDaGVja3MgaWYgdGhlIHNwZWNpZmllZCB2YXJpYWJsZSBpcyBhIHN0cmluZ1xyXG5cdCAqIEBwYXJhbSBzdHIgXHJcblx0ICovXHJcblx0cHVibGljIHN0YXRpYyBpc1N0cmluZyhzdHI6IGFueSkge1xyXG5cdFx0cmV0dXJuIHR5cGVvZiBzdHIgPT09ICdzdHJpbmcnIHx8IHN0ciBpbnN0YW5jZW9mIFN0cmluZztcclxuXHR9XHJcbn0iXX0=
@@ -11014,6 +11014,15 @@ const Common = {
11014
11014
  ]
11015
11015
  };
11016
11016
 
11017
+ const GlobalRoles = {
11018
+ Administrator: 'Administrator',
11019
+ SystemAdministrator: 'SystemAdministrator',
11020
+ SystemSupervisor: 'SystemSupervisor',
11021
+ ClientAdministrator: 'ClientAdministrator',
11022
+ DepartmentAdministrator: 'DepartmentAdministrator',
11023
+ ExternalAPI: 'ExternalAPI',
11024
+ };
11025
+
11017
11026
  var MessageType;
11018
11027
  (function (MessageType) {
11019
11028
  MessageType[MessageType["Success"] = 0] = "Success";
@@ -11053,7 +11062,13 @@ class AuthHelper {
11053
11062
  */
11054
11063
  static hasRole(...roles) {
11055
11064
  return roles.some(role => {
11056
- return this.user && this.isString(this.user.role) && role && this.user.role.toLowerCase() === role.toLowerCase();
11065
+ if (!role || !this.user) {
11066
+ return false;
11067
+ }
11068
+ /* Convert role to lower case */
11069
+ role = role.toLowerCase();
11070
+ return (this.isString(this.user.role) && this.user.role.toLowerCase() === role) ||
11071
+ Array.isArray(this.user.role) && this.user.role.map(x => x === null || x === void 0 ? void 0 : x.toLowerCase()).includes(role);
11057
11072
  });
11058
11073
  }
11059
11074
  /**
@@ -11120,6 +11135,18 @@ class BaseComponent {
11120
11135
  * Current user object
11121
11136
  */
11122
11137
  this.currentUser = AuthHelper.user;
11138
+ /**
11139
+ * Is the current user a client admin
11140
+ */
11141
+ this.isAdmin = AuthHelper.hasRole(GlobalRoles.Administrator);
11142
+ /**
11143
+ * Is the current user a client admin
11144
+ */
11145
+ this.isClientAdmin = AuthHelper.hasRole(GlobalRoles.ClientAdministrator);
11146
+ /**
11147
+ * Is the current user a department admin
11148
+ */
11149
+ this.isDepartmentAdmin = AuthHelper.hasRole(GlobalRoles.DepartmentAdministrator);
11123
11150
  /**
11124
11151
  * If true, set url hash
11125
11152
  */
@@ -18751,5 +18778,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImpor
18751
18778
  * Generated bundle index. Do not edit.
18752
18779
  */
18753
18780
 
18754
- export { AbstractMatFormField, ActionItem, Api, AppSetting, AppStorage, AsyncValidationDirective, AuditEntity, AuditUser, AuthHelper, AuthUser, BaseComponent, BaseDirective, BaseEntity, BaseInterceptor, BaseService, CachingInterceptor, Column, Common, ContextHelper, DataSourceFilterDirective, DataSourcePipe, DatePickerHeaderComponent, DisableControlDirective, Display, DisplayNameNumberProjection, DisplayNameProjection, DynamicBuilder, DynamicComponentCompiler, EmptyStringResetDirective, EnumPipe, EnumService, EqualValidator, ErrorMessageBindingStrategy, FileControlDirective, FileService, FileSizePipe, FilterClearComponent, FilterDateComponent, FilterInputComponent, FilterPipe, FilterSelectComponent, FirstLetterPipe, Form, FormArrayPipe, FormBuilderConfiguration, FormControlPipe, FormDefinition, FormField, FormFieldDefinition, FormFieldGroup, FormFieldGroupDefinition, FormFieldType, FormGroupPipe, FuncPipe, GenericFormBaseComponent, GenericFormComponent, GenericListComponent, GenericReactiveFormComponent, GenericService, Grid, HtmlControlTemplateDirective, IAbstractControl, ImageFileControlDirective, IpVersion, KeyValue, KeysPipe, LoadingScreenInterceptor, LoadingScreenService, MatFormFieldEditorDirective, MatFormFieldReadonlyDirective, MaterialModule, Menu, MenuItem, MenuItemService, MenuResolve, MenuScope, MenuService, MessageType, MonthNamePipe, NameNumberProjection, NameProjection, NativeElementInjectorDirective, NumericValueType, OnlyNumberDirective, OrderPipe, Pagination, PlaceholderPipe, PrintService, RUNTIME_COMPILER_PROVIDERS, ReactiveFormConfig, ReactiveTypedFormsModule, ResetFormType, RxFormArray, RxFormBuilder, RxFormControl, RxFormControlDirective, RxFormGroup, RxReactiveFormsModule, RxwebFormDirective, RxwebValidators, SafeHtmlPipe, Salutation, SaveAction, ServiceLocator, SubMenuResolve, SuffixButton, Table, TableColumn, TableColumnConfig, TableColumnType, TableDataSource, TableDefinition, TableStaticDataSource, Templates, TimePipe, TitleCase, TitleProjection, TruncatePipe, TypedForm, TypedFormBuilder, UniqueValidatorDirective, UrlValidationType, Utils, ValidationAlphabetLocale, ValueAccessorBase, ValuesPipe, VdAlertDialogComponent, VdAutocompleteOptionDirective, VdBaseModule, VdChipDirective, VdChipsComponent, VdChipsModule, VdCodeDirective, VdCommonModule, VdConfirmDialogComponent, VdCustomDirective, VdDialogActionsDirective, VdDialogComponent, VdDialogContentDirective, VdDialogService, VdDialogTitleDirective, VdDialogsModule, VdDynamicMenuComponent, VdDynamicTableComponent, VdDynamicTableConfigDialogComponent, VdEditorDirective, VdFileDirective, VdFileInputComponent, VdFileModule, VdFilterOptionDirective, VdFormsModule, VdGenericFormComponent, VdGenericFormCustomFieldDirective, VdHttpModule, VdLayoutCardOverComponent, VdLayoutCloseDirective, VdLayoutComponent, VdLayoutFooterComponent, VdLayoutManageListCloseDirective, VdLayoutManageListComponent, VdLayoutManageListOpenDirective, VdLayoutManageListToggleDirective, VdLayoutModule, VdLayoutNavComponent, VdLayoutNavListCloseDirective, VdLayoutNavListComponent, VdLayoutNavListOpenDirective, VdLayoutNavListToggleDirective, VdLayoutOpenDirective, VdLayoutToggleDirective, VdListComponent, VdListModule, VdListOptionDirective, VdListToolbarComponent, VdMediaModule, VdMediaService, VdMediaToggleDirective, VdMenuComponent, VdMenuModule, VdNavigationDrawerComponent, VdNavigationDrawerMenuDirective, VdNavigationDrawerToolbarDirective, VdPromptDialogComponent, VdSearchBoxComponent, VdSearchInputComponent, VdSearchModule, VdSelectComponent, VdSelectModule, VdSelectOptionDirective, VdSelectTriggerDirective, VdTableModule, allOf, allOfAsync, alpha, alphaAsync, alphaNumeric, alphaNumericAsync, and, ascii, async, blacklist, choice, choiceAsync, compare, compose, contains, containsAsync, createCompiler, creditCard, creditCardAsync, cusip, custom, customAsync, dataUri, date, dateAsync, different, digit, disable, elementClass, email, endpointMetadataKey, endsWith, endsWithAsync, error, escape, even, extension, extensionAsync, factor, factorAsync, file, fileAsync, fileSize, fileSizeAsync, formFieldGroupsMetadataKey, formFieldsMetadataKey, getEndpoint, getFormGroups, getTableDefinition, greaterThan, greaterThanAsync, greaterThanEqualTo, greaterThanEqualToAsync, grid, headerMetadataKey, hexColor, image, imageAsync, json, latLong, latitude, leapYear, lessThan, lessThanAsync, lessThanEqualTo, lessThanEqualToAsync, longitude, lowerCase, ltrim, mac, mask, maxDate, maxDateAsync, maxLength, maxLengthAsync, maxNumber, maxNumberAsync, maxTime, maxTimeAsync, minDate, minDateAsync, minLength, minLengthAsync, minNumber, minNumberAsync, minTime, minTimeAsync, mixinControlValueAccessor, mixinDisabled, model, noneOf, noneOfAsync, not, notEmpty, numeric, numericAsync, odd, oneOf, oneOfAsync, or, password, passwordAsync, pattern, patternAsync, port, prefix, primeNumber, prop, propArray, propObject, range, rangeAsync, required, requiredTrue, rtrim, rule, sanitize, startsWith, startsWithAsync, stripLow, suffix, tableColumnsMetadataKey, tableDefinitionMetadataKey, time, timeAsync, toBoolean, toDate, toDouble, toFloat, toInt, toString, trim, unique, updateOn, upperCase, url, urlAsync, whitelist };
18781
+ export { AbstractMatFormField, ActionItem, Api, AppSetting, AppStorage, AsyncValidationDirective, AuditEntity, AuditUser, AuthHelper, AuthUser, BaseComponent, BaseDirective, BaseEntity, BaseInterceptor, BaseService, CachingInterceptor, Column, Common, ContextHelper, DataSourceFilterDirective, DataSourcePipe, DatePickerHeaderComponent, DisableControlDirective, Display, DisplayNameNumberProjection, DisplayNameProjection, DynamicBuilder, DynamicComponentCompiler, EmptyStringResetDirective, EnumPipe, EnumService, EqualValidator, ErrorMessageBindingStrategy, FileControlDirective, FileService, FileSizePipe, FilterClearComponent, FilterDateComponent, FilterInputComponent, FilterPipe, FilterSelectComponent, FirstLetterPipe, Form, FormArrayPipe, FormBuilderConfiguration, FormControlPipe, FormDefinition, FormField, FormFieldDefinition, FormFieldGroup, FormFieldGroupDefinition, FormFieldType, FormGroupPipe, FuncPipe, GenericFormBaseComponent, GenericFormComponent, GenericListComponent, GenericReactiveFormComponent, GenericService, GlobalRoles, Grid, HtmlControlTemplateDirective, IAbstractControl, ImageFileControlDirective, IpVersion, KeyValue, KeysPipe, LoadingScreenInterceptor, LoadingScreenService, MatFormFieldEditorDirective, MatFormFieldReadonlyDirective, MaterialModule, Menu, MenuItem, MenuItemService, MenuResolve, MenuScope, MenuService, MessageType, MonthNamePipe, NameNumberProjection, NameProjection, NativeElementInjectorDirective, NumericValueType, OnlyNumberDirective, OrderPipe, Pagination, PlaceholderPipe, PrintService, RUNTIME_COMPILER_PROVIDERS, ReactiveFormConfig, ReactiveTypedFormsModule, ResetFormType, RxFormArray, RxFormBuilder, RxFormControl, RxFormControlDirective, RxFormGroup, RxReactiveFormsModule, RxwebFormDirective, RxwebValidators, SafeHtmlPipe, Salutation, SaveAction, ServiceLocator, SubMenuResolve, SuffixButton, Table, TableColumn, TableColumnConfig, TableColumnType, TableDataSource, TableDefinition, TableStaticDataSource, Templates, TimePipe, TitleCase, TitleProjection, TruncatePipe, TypedForm, TypedFormBuilder, UniqueValidatorDirective, UrlValidationType, Utils, ValidationAlphabetLocale, ValueAccessorBase, ValuesPipe, VdAlertDialogComponent, VdAutocompleteOptionDirective, VdBaseModule, VdChipDirective, VdChipsComponent, VdChipsModule, VdCodeDirective, VdCommonModule, VdConfirmDialogComponent, VdCustomDirective, VdDialogActionsDirective, VdDialogComponent, VdDialogContentDirective, VdDialogService, VdDialogTitleDirective, VdDialogsModule, VdDynamicMenuComponent, VdDynamicTableComponent, VdDynamicTableConfigDialogComponent, VdEditorDirective, VdFileDirective, VdFileInputComponent, VdFileModule, VdFilterOptionDirective, VdFormsModule, VdGenericFormComponent, VdGenericFormCustomFieldDirective, VdHttpModule, VdLayoutCardOverComponent, VdLayoutCloseDirective, VdLayoutComponent, VdLayoutFooterComponent, VdLayoutManageListCloseDirective, VdLayoutManageListComponent, VdLayoutManageListOpenDirective, VdLayoutManageListToggleDirective, VdLayoutModule, VdLayoutNavComponent, VdLayoutNavListCloseDirective, VdLayoutNavListComponent, VdLayoutNavListOpenDirective, VdLayoutNavListToggleDirective, VdLayoutOpenDirective, VdLayoutToggleDirective, VdListComponent, VdListModule, VdListOptionDirective, VdListToolbarComponent, VdMediaModule, VdMediaService, VdMediaToggleDirective, VdMenuComponent, VdMenuModule, VdNavigationDrawerComponent, VdNavigationDrawerMenuDirective, VdNavigationDrawerToolbarDirective, VdPromptDialogComponent, VdSearchBoxComponent, VdSearchInputComponent, VdSearchModule, VdSelectComponent, VdSelectModule, VdSelectOptionDirective, VdSelectTriggerDirective, VdTableModule, allOf, allOfAsync, alpha, alphaAsync, alphaNumeric, alphaNumericAsync, and, ascii, async, blacklist, choice, choiceAsync, compare, compose, contains, containsAsync, createCompiler, creditCard, creditCardAsync, cusip, custom, customAsync, dataUri, date, dateAsync, different, digit, disable, elementClass, email, endpointMetadataKey, endsWith, endsWithAsync, error, escape, even, extension, extensionAsync, factor, factorAsync, file, fileAsync, fileSize, fileSizeAsync, formFieldGroupsMetadataKey, formFieldsMetadataKey, getEndpoint, getFormGroups, getTableDefinition, greaterThan, greaterThanAsync, greaterThanEqualTo, greaterThanEqualToAsync, grid, headerMetadataKey, hexColor, image, imageAsync, json, latLong, latitude, leapYear, lessThan, lessThanAsync, lessThanEqualTo, lessThanEqualToAsync, longitude, lowerCase, ltrim, mac, mask, maxDate, maxDateAsync, maxLength, maxLengthAsync, maxNumber, maxNumberAsync, maxTime, maxTimeAsync, minDate, minDateAsync, minLength, minLengthAsync, minNumber, minNumberAsync, minTime, minTimeAsync, mixinControlValueAccessor, mixinDisabled, model, noneOf, noneOfAsync, not, notEmpty, numeric, numericAsync, odd, oneOf, oneOfAsync, or, password, passwordAsync, pattern, patternAsync, port, prefix, primeNumber, prop, propArray, propObject, range, rangeAsync, required, requiredTrue, rtrim, rule, sanitize, startsWith, startsWithAsync, stripLow, suffix, tableColumnsMetadataKey, tableDefinitionMetadataKey, time, timeAsync, toBoolean, toDate, toDouble, toFloat, toInt, toString, trim, unique, updateOn, upperCase, url, urlAsync, whitelist };
18755
18782
  //# sourceMappingURL=messaia-cdk.mjs.map