@c8y/ngx-components 1018.0.194 → 1018.0.196

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.
Files changed (97) hide show
  1. package/core/common/global-config.service.d.ts +1 -1
  2. package/core/common/permissions.service.d.ts +67 -0
  3. package/core/common/tenant-ui.service.d.ts +1 -1
  4. package/esm2020/assets-navigator/asset-node.service.mjs +5 -4
  5. package/esm2020/auth-configuration/auth-configuration.guard.mjs +5 -2
  6. package/esm2020/auth-configuration/factories/navigation.factory.mjs +3 -3
  7. package/esm2020/cockpit-config/cockpit-config.guard.mjs +2 -2
  8. package/esm2020/cockpit-config/cockpit-config.service.mjs +2 -2
  9. package/esm2020/context-dashboard/add-dashboard.factory.mjs +6 -3
  10. package/esm2020/context-dashboard/context-dashboard.service.mjs +3 -3
  11. package/esm2020/context-dashboard/dashboard-detail.component.mjs +2 -2
  12. package/esm2020/context-dashboard/report-dashboard/report-dashboard-list.component.mjs +3 -3
  13. package/esm2020/core/common/global-config.service.mjs +3 -2
  14. package/esm2020/core/common/permissions.service.mjs +68 -1
  15. package/esm2020/core/common/tenant-ui.service.mjs +3 -2
  16. package/esm2020/core/common/user-preferences/user-preferences.service.mjs +6 -2
  17. package/esm2020/ecosystem/application-properties/application-properties.component.mjs +2 -2
  18. package/esm2020/ecosystem/ecosystem-navigation.factory.mjs +3 -3
  19. package/esm2020/ecosystem/packages/package-list/packages-list.component.mjs +2 -2
  20. package/esm2020/ecosystem/packages/package-versions/package-versions-list/package-versions-list.component.mjs +2 -2
  21. package/esm2020/files-repository/files-repository.guard.mjs +5 -3
  22. package/esm2020/protocol-lwm2m/components/bootstrap-parameters/lwm2m-bootstrap-parameters.component.mjs +2 -2
  23. package/esm2020/register-device/register-device-navigation.factory.mjs +3 -3
  24. package/esm2020/reports/export-schedules.component.mjs +3 -3
  25. package/esm2020/repository/configuration/device-tab/configuration-preview.component.mjs +4 -4
  26. package/esm2020/sms-gateway/sms-gateway.guard.mjs +2 -2
  27. package/esm2020/sms-gateway/sms-gateway.module.mjs +6 -6
  28. package/esm2020/sub-assets/add-group/add-group.component.mjs +2 -2
  29. package/esm2020/sub-assets/groups.component.mjs +2 -2
  30. package/esm2020/sub-assets/sub-assets.component.mjs +2 -2
  31. package/esm2020/sub-assets/sub-assets.service.mjs +16 -10
  32. package/esm2020/tenants/tenant-list/tenant-list.component.mjs +12 -7
  33. package/esm2020/upgrade/ng1/downgraded.services.mjs +3 -2
  34. package/esm2020/upgrade/ng1/index.mjs +4 -3
  35. package/fesm2015/c8y-ngx-components-assets-navigator.mjs +4 -3
  36. package/fesm2015/c8y-ngx-components-assets-navigator.mjs.map +1 -1
  37. package/fesm2015/c8y-ngx-components-auth-configuration.mjs +7 -4
  38. package/fesm2015/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  39. package/fesm2015/c8y-ngx-components-cockpit-config.mjs +3 -3
  40. package/fesm2015/c8y-ngx-components-cockpit-config.mjs.map +1 -1
  41. package/fesm2015/c8y-ngx-components-context-dashboard.mjs +11 -8
  42. package/fesm2015/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  43. package/fesm2015/c8y-ngx-components-ecosystem.mjs +6 -6
  44. package/fesm2015/c8y-ngx-components-ecosystem.mjs.map +1 -1
  45. package/fesm2015/c8y-ngx-components-files-repository.mjs +5 -3
  46. package/fesm2015/c8y-ngx-components-files-repository.mjs.map +1 -1
  47. package/fesm2015/c8y-ngx-components-protocol-lwm2m-components-bootstrap-parameters.mjs +2 -2
  48. package/fesm2015/c8y-ngx-components-protocol-lwm2m-components-bootstrap-parameters.mjs.map +1 -1
  49. package/fesm2015/c8y-ngx-components-register-device.mjs +3 -3
  50. package/fesm2015/c8y-ngx-components-register-device.mjs.map +1 -1
  51. package/fesm2015/c8y-ngx-components-reports.mjs +2 -2
  52. package/fesm2015/c8y-ngx-components-reports.mjs.map +1 -1
  53. package/fesm2015/c8y-ngx-components-repository-configuration.mjs +3 -3
  54. package/fesm2015/c8y-ngx-components-repository-configuration.mjs.map +1 -1
  55. package/fesm2015/c8y-ngx-components-sms-gateway.mjs +6 -6
  56. package/fesm2015/c8y-ngx-components-sms-gateway.mjs.map +1 -1
  57. package/fesm2015/c8y-ngx-components-sub-assets.mjs +19 -13
  58. package/fesm2015/c8y-ngx-components-sub-assets.mjs.map +1 -1
  59. package/fesm2015/c8y-ngx-components-tenants.mjs +11 -6
  60. package/fesm2015/c8y-ngx-components-tenants.mjs.map +1 -1
  61. package/fesm2015/c8y-ngx-components-upgrade.mjs +4 -2
  62. package/fesm2015/c8y-ngx-components-upgrade.mjs.map +1 -1
  63. package/fesm2015/c8y-ngx-components.mjs +74 -3
  64. package/fesm2015/c8y-ngx-components.mjs.map +1 -1
  65. package/fesm2020/c8y-ngx-components-assets-navigator.mjs +4 -3
  66. package/fesm2020/c8y-ngx-components-assets-navigator.mjs.map +1 -1
  67. package/fesm2020/c8y-ngx-components-auth-configuration.mjs +7 -4
  68. package/fesm2020/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  69. package/fesm2020/c8y-ngx-components-cockpit-config.mjs +3 -3
  70. package/fesm2020/c8y-ngx-components-cockpit-config.mjs.map +1 -1
  71. package/fesm2020/c8y-ngx-components-context-dashboard.mjs +11 -8
  72. package/fesm2020/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  73. package/fesm2020/c8y-ngx-components-ecosystem.mjs +6 -6
  74. package/fesm2020/c8y-ngx-components-ecosystem.mjs.map +1 -1
  75. package/fesm2020/c8y-ngx-components-files-repository.mjs +5 -3
  76. package/fesm2020/c8y-ngx-components-files-repository.mjs.map +1 -1
  77. package/fesm2020/c8y-ngx-components-protocol-lwm2m-components-bootstrap-parameters.mjs +2 -2
  78. package/fesm2020/c8y-ngx-components-protocol-lwm2m-components-bootstrap-parameters.mjs.map +1 -1
  79. package/fesm2020/c8y-ngx-components-register-device.mjs +3 -3
  80. package/fesm2020/c8y-ngx-components-register-device.mjs.map +1 -1
  81. package/fesm2020/c8y-ngx-components-reports.mjs +2 -2
  82. package/fesm2020/c8y-ngx-components-reports.mjs.map +1 -1
  83. package/fesm2020/c8y-ngx-components-repository-configuration.mjs +3 -3
  84. package/fesm2020/c8y-ngx-components-repository-configuration.mjs.map +1 -1
  85. package/fesm2020/c8y-ngx-components-sms-gateway.mjs +6 -6
  86. package/fesm2020/c8y-ngx-components-sms-gateway.mjs.map +1 -1
  87. package/fesm2020/c8y-ngx-components-sub-assets.mjs +19 -13
  88. package/fesm2020/c8y-ngx-components-sub-assets.mjs.map +1 -1
  89. package/fesm2020/c8y-ngx-components-tenants.mjs +11 -6
  90. package/fesm2020/c8y-ngx-components-tenants.mjs.map +1 -1
  91. package/fesm2020/c8y-ngx-components-upgrade.mjs +4 -2
  92. package/fesm2020/c8y-ngx-components-upgrade.mjs.map +1 -1
  93. package/fesm2020/c8y-ngx-components.mjs +74 -3
  94. package/fesm2020/c8y-ngx-components.mjs.map +1 -1
  95. package/package.json +1 -1
  96. package/tenants/tenant-list/tenant-list.component.d.ts +4 -2
  97. package/upgrade/ng1/downgraded.services.d.ts +1 -0
@@ -13,8 +13,10 @@ export class FilesRepositoryGuard {
13
13
  * @returns True, if the feature should be active.
14
14
  */
15
15
  canActivate() {
16
- return (this.permissions.hasRole('ROLE_INVENTORY_READ') ||
17
- this.permissions.hasRole('ROLE_INVENTORY_ADMIN'));
16
+ return this.permissions.hasAnyRole([
17
+ Permissions.ROLE_INVENTORY_READ,
18
+ Permissions.ROLE_INVENTORY_ADMIN
19
+ ]);
18
20
  }
19
21
  }
20
22
  FilesRepositoryGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: FilesRepositoryGuard, deps: [{ token: i1.Permissions }], target: i0.ɵɵFactoryTarget.Injectable });
@@ -25,4 +27,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
25
27
  providedIn: 'root'
26
28
  }]
27
29
  }], ctorParameters: function () { return [{ type: i1.Permissions }]; } });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtcmVwb3NpdG9yeS5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2ZpbGVzLXJlcG9zaXRvcnkvZmlsZXMtcmVwb3NpdG9yeS5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBS2xELE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsWUFBb0IsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFBRyxDQUFDO0lBQ2hEOzs7OztPQUtHO0lBQ0gsV0FBVztRQUNULE9BQU8sQ0FDTCxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQztZQUMvQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQUNqRCxDQUFDO0lBQ0osQ0FBQzs7aUhBYlUsb0JBQW9CO3FIQUFwQixvQkFBb0IsY0FGbkIsTUFBTTsyRkFFUCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FuQWN0aXZhdGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgUGVybWlzc2lvbnMgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRmlsZXNSZXBvc2l0b3J5R3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25zKSB7fVxuICAvKipcbiAgICogQ2hlY2tzIGlmIGZpbGVzIHJlcG9zaXRvcnkgc2hvdWxkIGJlIGFjdGl2ZSxcbiAgICogaS5lLiB3aGV0aGVyIHRoZSBjdXJyZW50IHRlbmFudCBjYW4gcmVhZCBvciBhZG1pbiBmaWxlcyBpbiByZXBvc2l0b3J5LlxuICAgKlxuICAgKiBAcmV0dXJucyBUcnVlLCBpZiB0aGUgZmVhdHVyZSBzaG91bGQgYmUgYWN0aXZlLlxuICAgKi9cbiAgY2FuQWN0aXZhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMucGVybWlzc2lvbnMuaGFzUm9sZSgnUk9MRV9JTlZFTlRPUllfUkVBRCcpIHx8XG4gICAgICB0aGlzLnBlcm1pc3Npb25zLmhhc1JvbGUoJ1JPTEVfSU5WRU5UT1JZX0FETUlOJylcbiAgICApO1xuICB9XG59XG4iXX0=
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtcmVwb3NpdG9yeS5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2ZpbGVzLXJlcG9zaXRvcnkvZmlsZXMtcmVwb3NpdG9yeS5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBS2xELE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsWUFBb0IsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFBRyxDQUFDO0lBRWhEOzs7OztPQUtHO0lBQ0gsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7WUFDakMsV0FBVyxDQUFDLG1CQUFtQjtZQUMvQixXQUFXLENBQUMsb0JBQW9CO1NBQ2pDLENBQUMsQ0FBQztJQUNMLENBQUM7O2lIQWRVLG9CQUFvQjtxSEFBcEIsb0JBQW9CLGNBRm5CLE1BQU07MkZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhbkFjdGl2YXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFBlcm1pc3Npb25zIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVzUmVwb3NpdG9yeUd1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBlcm1pc3Npb25zOiBQZXJtaXNzaW9ucykge31cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGZpbGVzIHJlcG9zaXRvcnkgc2hvdWxkIGJlIGFjdGl2ZSxcbiAgICogaS5lLiB3aGV0aGVyIHRoZSBjdXJyZW50IHRlbmFudCBjYW4gcmVhZCBvciBhZG1pbiBmaWxlcyBpbiByZXBvc2l0b3J5LlxuICAgKlxuICAgKiBAcmV0dXJucyBUcnVlLCBpZiB0aGUgZmVhdHVyZSBzaG91bGQgYmUgYWN0aXZlLlxuICAgKi9cbiAgY2FuQWN0aXZhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucGVybWlzc2lvbnMuaGFzQW55Um9sZShbXG4gICAgICBQZXJtaXNzaW9ucy5ST0xFX0lOVkVOVE9SWV9SRUFELFxuICAgICAgUGVybWlzc2lvbnMuUk9MRV9JTlZFTlRPUllfQURNSU5cbiAgICBdKTtcbiAgfVxufVxuIl19
@@ -273,7 +273,7 @@ export class Lwm2mBootstrapParametersComponent {
273
273
  }
274
274
  ];
275
275
  this.builder.buildForm(this.form, this.fields, this.model, this.options);
276
- const userHasWritePermission = this.permissions.hasRole('ROLE_INVENTORY_ADMIN');
276
+ const userHasWritePermission = this.permissions.hasRole(Permissions.ROLE_INVENTORY_ADMIN);
277
277
  if (Object.keys(parameters).length === 0 || !userHasWritePermission) {
278
278
  this.form.disable();
279
279
  this.options.formState.disabled = true;
@@ -330,4 +330,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
330
330
  type: Component,
331
331
  args: [{ selector: 'c8y-lwm2m-bootstrap-parameters', imports: [CommonModule, CoreModule], standalone: true, template: "<form (ngSubmit)=\"save()\">\n <div class=\"card content-fullpage fit-h\">\n <div class=\"card-header separator grid__col--fullspan\">\n <h1 class=\"card-title\">{{ 'LWM2M bootstrap parameters' | translate }}</h1>\n </div>\n <div class=\"inner-scroll\">\n <formly-form\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\"\n [options]=\"options\"\n ></formly-form>\n </div>\n <div\n [hidden]=\"options.formState.disabled\"\n class=\"card-footer separator grid__col--fullspan sticky-bottom\"\n >\n <button\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary\"\n [disabled]=\"form.invalid || !form.dirty\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n</form>\n" }]
332
332
  }], ctorParameters: function () { return [{ type: i1.AlertService }, { type: i1.Permissions }, { type: i2.FormlyFormBuilder }, { type: i3.Lwm2mBootstrapParametersService }, { type: i4.ActivatedRoute }]; } });
333
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHdtMm0tYm9vdHN0cmFwLXBhcmFtZXRlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvdG9jb2wtbHdtMm0vY29tcG9uZW50cy9ib290c3RyYXAtcGFyYW1ldGVycy9sd20ybS1ib290c3RyYXAtcGFyYW1ldGVycy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm90b2NvbC1sd20ybS9jb21wb25lbnRzL2Jvb3RzdHJhcC1wYXJhbWV0ZXJzL2x3bTJtLWJvb3RzdHJhcC1wYXJhbWV0ZXJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFxQixpQkFBaUIsRUFBcUIsTUFBTSxrQkFBa0IsQ0FBQztBQUMzRixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RixPQUFPLEVBQ0wsV0FBVyxFQUVYLFlBQVksRUFDYixNQUFNLDBDQUEwQyxDQUFDO0FBQ2xELE9BQU8sRUFDTCxPQUFPLEVBQ1AsWUFBWSxFQUNaLFdBQVcsRUFFWCxZQUFZLEVBQ1osVUFBVSxFQUNYLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7QUFRN0IsTUFBTSxPQUFPLGlDQUFpQztJQXNCNUMsWUFDVSxZQUEwQixFQUMxQixXQUF3QixFQUN4QixPQUEwQixFQUMxQiwyQkFBNEQsRUFDNUQsS0FBcUI7UUFKckIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsWUFBTyxHQUFQLE9BQU8sQ0FBbUI7UUFDMUIsZ0NBQTJCLEdBQTNCLDJCQUEyQixDQUFpQztRQUM1RCxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQXpCL0IsU0FBSSxHQUFjLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxZQUFPLEdBQXNCO1lBQzNCLFNBQVMsRUFBRTtnQkFDVCxRQUFRLEVBQUUsS0FBSztnQkFDZixTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUs7YUFDdEI7U0FDRixDQUFDO1FBRWUsZ0NBQTJCLEdBQVU7WUFDcEQsSUFBSSxFQUFFLE9BQU8sQ0FBQyw0REFBNEQsQ0FBQztZQUMzRSxJQUFJLEVBQUUsTUFBTTtTQUNiLENBQUM7UUFFZSx1QkFBa0IsR0FBVyxPQUFPLENBQ25ELGdEQUFnRCxDQUNqRCxDQUFDO1FBQ2UsWUFBTyxHQUFXLHFCQUFxQixDQUFDO1FBVXZELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUM7SUFDM0QsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRO1FBQ1osTUFBTSxVQUFVLEdBQTZCLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDakYsTUFBTSxFQUNKLFdBQVcsRUFDWCxXQUFXLEVBQ1gsWUFBWSxFQUNaLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLFlBQVksRUFDWixRQUFRLEVBQ1IsNkJBQTZCLEVBQzdCLGtCQUFrQixFQUNsQixTQUFTLEVBQ1Qsb0JBQW9CLEVBQ3BCLGVBQWUsRUFDZixzQkFBc0IsRUFDdEIsYUFBYSxFQUNiLFNBQVMsRUFDVixHQUE2QixVQUFVLENBQUM7UUFFekMsTUFBTSxVQUFVLEdBQXdCO1lBQ3RDO2dCQUNFLEdBQUcsRUFBRSxVQUFVO2dCQUNmLEVBQUUsRUFBRSxhQUFhO2dCQUNqQixJQUFJLEVBQUUsUUFBUTtnQkFDZCxZQUFZLEVBQUUsUUFBUTtnQkFDdEIsZUFBZSxFQUFFO29CQUNmLEtBQUssRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDO29CQUMxQixXQUFXLEVBQUUsMEJBQTBCO29CQUN2QyxRQUFRLEVBQUUsSUFBSTtpQkFDZjthQUNGO1lBQ0Q7Z0JBQ0UsR0FBRyxFQUFFLGNBQWM7Z0JBQ25CLEVBQUUsRUFBRSxpQkFBaUI7Z0JBQ3JCLElBQUksRUFBRSxRQUFRO2dCQUNkLFlBQVksRUFBRSxZQUFZLElBQUksWUFBWSxDQUFDLE1BQU07Z0JBQ2pELGVBQWUsRUFBRTtvQkFDZixLQUFLLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQztvQkFDL0IsT0FBTyxFQUFFO3dCQUNQLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxNQUFNLEVBQUU7d0JBQzFELEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxHQUFHLEVBQUU7cUJBQ3JEO29CQUNELFFBQVEsRUFBRSxJQUFJO2lCQUNmO2FBQ0Y7WUFDRDtnQkFDRSxHQUFHLEVBQUUsYUFBYTtnQkFDbEIsRUFBRSxFQUFFLGdCQUFnQjtnQkFDcEIsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsZUFBZSxFQUFFO29CQUNmLEtBQUssRUFBRSxPQUFPLENBQUMsa0JBQWtCLENBQUM7b0JBQ2xDLFdBQVcsRUFBRSxJQUFJLENBQUMsa0JBQWtCO29CQUNwQyxRQUFRLEVBQUUsSUFBSTtpQkFDZjtnQkFDRCxLQUFLLEVBQUU7b0JBQ0wsTUFBTSxFQUFFLENBQUMsS0FBd0IsRUFBRSxFQUFFO3dCQUNuQyxLQUFLLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDNUMsQ0FBQztpQkFDRjtnQkFDRCxvQkFBb0IsRUFBRTtvQkFDcEIsMEJBQTBCLEVBQUUsQ0FBQyxLQUFVLEVBQUUsU0FBYyxFQUFFLEtBQXdCLEVBQUUsRUFBRSxDQUNuRixJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUM7aUJBQ3pDO2FBQ0Y7WUFDRDtnQkFDRSxHQUFHLEVBQUUsY0FBYztnQkFDbkIsRUFBRSxFQUFFLGlCQUFpQjtnQkFDckIsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsZUFBZSxFQUFFO29CQUNmLEtBQUssRUFBRSxPQUFPLENBQUMsMEJBQTBCLENBQUM7b0JBQzFDLFdBQVcsRUFBRSxJQUFJLENBQUMsa0JBQWtCO29CQUNwQyxXQUFXLEVBQUUsa0JBQWtCO29CQUMvQixRQUFRLEVBQUUsSUFBSTtvQkFDZCxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87aUJBQ3RCO2dCQUNELEtBQUssRUFBRTtvQkFDTCxNQUFNLEVBQUUsQ0FBQyxLQUF3QixFQUFFLEVBQUU7d0JBQ25DLEtBQUssQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUM3QyxDQUFDO2lCQUNGO2dCQUNELG9CQUFvQixFQUFFO29CQUNwQiwwQkFBMEIsRUFBRSxDQUFDLEtBQVUsRUFBRSxTQUFjLEVBQUUsS0FBd0IsRUFBRSxFQUFFLENBQ25GLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQztpQkFDekM7YUFDRjtZQUNEO2dCQUNFLEdBQUcsRUFBRSx3QkFBd0I7Z0JBQzdCLEVBQUUsRUFBRSwyQkFBMkI7Z0JBQy9CLElBQUksRUFBRSxRQUFRO2dCQUNkLFlBQVksRUFBRSxzQkFBc0I7Z0JBQ3BDLGVBQWUsRUFBRTtvQkFDZixLQUFLLEVBQUUsT0FBTyxDQUFDLDBCQUEwQixDQUFDO29CQUMxQyxXQUFXLEVBQUUsR0FBRztvQkFDaEIsR0FBRyxFQUFFLENBQUM7aUJBQ1A7YUFDRjtZQUNEO2dCQUNFLEdBQUcsRUFBRSx3QkFBd0I7Z0JBQzdCLEVBQUUsRUFBRSwyQkFBMkI7Z0JBQy9CLElBQUksRUFBRSxRQUFRO2dCQUNkLFlBQVksRUFBRSxzQkFBc0I7Z0JBQ3BDLGVBQWUsRUFBRTtvQkFDZixLQUFLLEVBQUUsT0FBTyxDQUFDLGlDQUFpQyxDQUFDO29CQUNqRCxXQUFXLEVBQUUsR0FBRztvQkFDaEIsR0FBRyxFQUFFLENBQUM7aUJBQ1A7YUFDRjtZQUNEO2dCQUNFLEdBQUcsRUFBRSxzQkFBc0I7Z0JBQzNCLEVBQUUsRUFBRSx5QkFBeUI7Z0JBQzdCLElBQUksRUFBRSxRQUFRO2dCQUNkLFlBQVksRUFBRSxvQkFBb0I7Z0JBQ2xDLGVBQWUsRUFBRTtvQkFDZixLQUFLLEVBQUUsT0FBTyxDQUFDLHVCQUF1QixDQUFDO29CQUN2QyxXQUFXLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQztvQkFDbEMsV0FBVyxFQUFFLEtBQUs7b0JBQ2xCLEdBQUcsRUFBRSxDQUFDO2lCQUNQO2FBQ0Y7WUFDRDtnQkFDRSxHQUFHLEVBQUUsYUFBYTtnQkFDbEIsRUFBRSxFQUFFLGdCQUFnQjtnQkFDcEIsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsWUFBWSxFQUFFLFdBQVcsSUFBSSxXQUFXLENBQUMsQ0FBQztnQkFDMUMsZUFBZSxFQUFFO29CQUNmLEtBQUssRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDO29CQUM5QixPQUFPLEVBQUU7d0JBQ1AsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQyxFQUFFO3dCQUMvQyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMscUJBQXFCLENBQUMsRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLEVBQUUsRUFBRTtxQkFDakU7aUJBQ0Y7YUFDRjtTQUNGLENBQUM7UUFFRixNQUFNLFdBQVcsR0FBd0I7WUFDdkM7Z0JBQ0UsR0FBRyxFQUFFLGlCQUFpQjtnQkFDdEIsRUFBRSxFQUFFLG9CQUFvQjtnQkFDeEIsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsWUFBWSxFQUFFLGVBQWU7Z0JBQzdCLGVBQWUsRUFBRTtvQkFDZixLQUFLLEVBQUUsT0FBTyxDQUFDLG1CQUFtQixDQUFDO29CQUNuQyxXQUFXLEVBQUUsa0JBQWtCO2lCQUNoQzthQUNGO1lBQ0Q7Z0JBQ0UsR0FBRyxFQUFFLFdBQVc7Z0JBQ2hCLEVBQUUsRUFBRSxjQUFjO2dCQUNsQixJQUFJLEVBQUUsUUFBUTtnQkFDZCxZQUFZLEVBQUUsU0FBUztnQkFDdkIsZUFBZSxFQUFFO29CQUNmLEtBQUssRUFBRSxPQUFPLENBQUMsa0JBQWtCLENBQUM7b0JBQ2xDLFdBQVcsRUFBRSw0Q0FBNEM7aUJBQzFEO2FBQ0Y7WUFDRDtnQkFDRSxHQUFHLEVBQUUsZUFBZTtnQkFDcEIsRUFBRSxFQUFFLGtCQUFrQjtnQkFDdEIsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsZUFBZSxFQUFFO29CQUNmLEtBQUssRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDO29CQUM5QixXQUFXLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtvQkFDcEMsUUFBUSxFQUFFLElBQUk7aUJBQ2Y7Z0JBQ0QsS0FBSyxFQUFFO29CQUNMLE1BQU0sRUFBRSxDQUFDLEtBQXdCLEVBQUUsRUFBRTt3QkFDbkMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQzlDLENBQUM7aUJBQ0Y7Z0JBQ0Qsb0JBQW9CLEVBQUU7b0JBQ3BCLDBCQUEwQixFQUFFLENBQUMsS0FBVSxFQUFFLFNBQWMsRUFBRSxLQUF3QixFQUFFLEVBQUUsQ0FDbkYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDO2lCQUN6QzthQUNGO1lBQ0Q7Z0JBQ0UsR0FBRyxFQUFFLFdBQVc7Z0JBQ2hCLEVBQUUsRUFBRSxjQUFjO2dCQUNsQixJQUFJLEVBQUUsUUFBUTtnQkFDZCxlQUFlLEVBQUU7b0JBQ2YsS0FBSyxFQUFFLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQztvQkFDdEMsV0FBVyxFQUFFLElBQUksQ0FBQyxrQkFBa0I7b0JBQ3BDLFdBQVcsRUFBRSxrQkFBa0I7b0JBQy9CLFFBQVEsRUFBRSxJQUFJO29CQUNkLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztpQkFDdEI7Z0JBQ0QsS0FBSyxFQUFFO29CQUNMLE1BQU0sRUFBRSxDQUFDLEtBQXdCLEVBQUUsRUFBRTt3QkFDbkMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQzFDLENBQUM7aUJBQ0Y7Z0JBQ0Qsb0JBQW9CLEVBQUU7b0JBQ3BCLDBCQUEwQixFQUFFLENBQUMsS0FBVSxFQUFFLFNBQWMsRUFBRSxLQUF3QixFQUFFLEVBQUUsQ0FDbkYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDO2lCQUN6QzthQUNGO1lBQ0Q7Z0JBQ0UsR0FBRyxFQUFFLG9CQUFvQjtnQkFDekIsRUFBRSxFQUFFLHVCQUF1QjtnQkFDM0IsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsWUFBWSxFQUFFLGtCQUFrQjtnQkFDaEMsZUFBZSxFQUFFO29CQUNmLEtBQUssRUFBRSxPQUFPLENBQUMsdUJBQXVCLENBQUM7b0JBQ3ZDLFdBQVcsRUFBRSxHQUFHO29CQUNoQixHQUFHLEVBQUUsQ0FBQztpQkFDUDthQUNGO1lBQ0Q7Z0JBQ0UsR0FBRyxFQUFFLCtCQUErQjtnQkFDcEMsRUFBRSxFQUFFLGtDQUFrQztnQkFDdEMsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsWUFBWSxFQUFFLDZCQUE2QixJQUFJLEtBQUs7Z0JBQ3BELGVBQWUsRUFBRTtvQkFDZixLQUFLLEVBQUUsT0FBTyxDQUFDLGtDQUFrQyxDQUFDO29CQUNsRCxPQUFPLEVBQUU7d0JBQ1AsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7d0JBQ3RDLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO3FCQUN2QztpQkFDRjthQUNGO1lBQ0Q7Z0JBQ0UsR0FBRyxFQUFFLHNCQUFzQjtnQkFDM0IsRUFBRSxFQUFFLHlCQUF5QjtnQkFDN0IsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsWUFBWSxFQUFFLG9CQUFvQjtnQkFDbEMsZUFBZSxFQUFFO29CQUNmLEtBQUssRUFBRSxPQUFPLENBQUMsd0JBQXdCLENBQUM7b0JBQ3hDLFdBQVcsRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDO29CQUNsQyxXQUFXLEVBQUUsSUFBSTtvQkFDakIsR0FBRyxFQUFFLENBQUM7aUJBQ1A7YUFDRjtZQUNEO2dCQUNFLEdBQUcsRUFBRSxzQkFBc0I7Z0JBQzNCLEVBQUUsRUFBRSx5QkFBeUI7Z0JBQzdCLElBQUksRUFBRSxRQUFRO2dCQUNkLFlBQVksRUFBRSxvQkFBb0I7Z0JBQ2xDLGVBQWUsRUFBRTtvQkFDZixLQUFLLEVBQUUsT0FBTyxDQUFDLHdCQUF3QixDQUFDO29CQUN4QyxXQUFXLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQztvQkFDbEMsV0FBVyxFQUFFLElBQUk7b0JBQ2pCLEdBQUcsRUFBRSxDQUFDO2lCQUNQO2FBQ0Y7U0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDLE1BQU0sR0FBRztZQUNaO2dCQUNFLG1CQUFtQixFQUFFLGtDQUFrQztnQkFDdkQsVUFBVSxFQUFFO29CQUNWO3dCQUNFLG1CQUFtQixFQUFFLG1DQUFtQzt3QkFDeEQsVUFBVSxFQUFFLFVBQVU7cUJBQ3ZCO29CQUNEO3dCQUNFLG1CQUFtQixFQUFFLG1DQUFtQzt3QkFDeEQsVUFBVSxFQUFFLFdBQVc7cUJBQ3hCO2lCQUNGO2FBQ0Y7U0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXpFLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUVoRixJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFO1lBQ25FLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFFcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztTQUN4QztRQUVELElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBYyxDQUFDLENBQUM7U0FDekU7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULDZDQUE2QztRQUM3Qyw4Q0FBOEM7UUFDOUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELGVBQWUsQ0FDYixTQUFxRSxFQUNyRSxLQUF3QjtRQUV4QixJQUFJLFNBQVMsQ0FBQyxRQUFRLEVBQUU7WUFDdEIsT0FBTyxLQUFLLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQztZQUN6QyxPQUFPLElBQUksQ0FBQztTQUNiO2FBQU0sSUFDTCxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsWUFBWTtZQUNqQyxTQUFTLENBQUMsU0FBUyxDQUFDLFlBQVksS0FBSyxZQUFZLENBQUMsTUFBTSxFQUN4RDtZQUNBLEtBQUssQ0FBQyxlQUFlLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztZQUM1RCxLQUFLLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuQyxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxLQUFLLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQztRQUN6QyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNSLElBQUk7WUFDRixNQUFNLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzNGLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLENBQUM7WUFDbkUsdUJBQXVCO1lBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1NBQ3BDO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQ2xEO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxzQkFBc0I7UUFDMUIsSUFBSTtZQUNGLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUNsRSxJQUFnQyxDQUFDO1NBQ3JDO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ2pELE9BQU8sRUFBRSxDQUFDO1NBQ1g7SUFDSCxDQUFDOzs4SEFuV1UsaUNBQWlDO2tIQUFqQyxpQ0FBaUMsMEZDekI5QyxzMEJBNEJBLDJDRE5ZLFlBQVksOEZBQUUsVUFBVTsyRkFHdkIsaUNBQWlDO2tCQU43QyxTQUFTOytCQUNFLGdDQUFnQyxXQUVqQyxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsY0FDdkIsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnLCBGb3JtbHlGb3JtQnVpbGRlciwgRm9ybWx5Rm9ybU9wdGlvbnMgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IEx3bTJtQm9vdHN0cmFwUGFyYW1ldGVyc1NlcnZpY2UgfSBmcm9tICcuL2x3bTJtLWJvb3RzdHJhcC1wYXJhbWV0ZXJzLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgQmluZGluZ01vZGUsXG4gIEx3bTJtQm9vdHN0cmFwUGFyYW1ldGVycyxcbiAgU2VjdXJpdHlNb2RlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvcHJvdG9jb2wtbHdtMm0vbW9kZWwnO1xuaW1wb3J0IHtcbiAgZ2V0dGV4dCxcbiAgQWxlcnRTZXJ2aWNlLFxuICBQZXJtaXNzaW9ucyxcbiAgQWxlcnQsXG4gIENvbW1vbk1vZHVsZSxcbiAgQ29yZU1vZHVsZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWx3bTJtLWJvb3RzdHJhcC1wYXJhbWV0ZXJzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2x3bTJtLWJvb3RzdHJhcC1wYXJhbWV0ZXJzLmNvbXBvbmVudC5odG1sJyxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQ29yZU1vZHVsZV0sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTHdtMm1Cb290c3RyYXBQYXJhbWV0ZXJzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBmaWVsZHM6IEZvcm1seUZpZWxkQ29uZmlnW107XG4gIGZvcm06IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICBtb2RlbCA9IHt9O1xuICBvcHRpb25zOiBGb3JtbHlGb3JtT3B0aW9ucyA9IHtcbiAgICBmb3JtU3RhdGU6IHtcbiAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgIG1haW5Nb2RlbDogdGhpcy5tb2RlbFxuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHdyaXRlUGVybWlzc2lvbk1pc3NpbmdBbGVydDogQWxlcnQgPSB7XG4gICAgdGV4dDogZ2V0dGV4dCgnWW91IGRvIG5vdCBoYXZlIHdyaXRlIHBlcm1pc3Npb25zLiBUaGlzIGZvcm0gaXMgcmVhZC1vbmx5LicpLFxuICAgIHR5cGU6ICdpbmZvJ1xuICB9O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgRElTQUJMRURfSElOVF9URVhUOiBzdHJpbmcgPSBnZXR0ZXh0KFxuICAgICdDaGFuZ2UgdGhlIHNlY3VyaXR5IG1vZGUgdG8gZW5hYmxlIHRoaXMgZmllbGQuJ1xuICApO1xuICBwcml2YXRlIHJlYWRvbmx5IHBhdHRlcm46IFJlZ0V4cCA9IC9eKFthLWZBLUYwLTldezJ9KSskLztcbiAgcHJpdmF0ZSBkZXZpY2VJZDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwZXJtaXNzaW9uczogUGVybWlzc2lvbnMsXG4gICAgcHJpdmF0ZSBidWlsZGVyOiBGb3JtbHlGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGx3bTJtQm9vdHN0cmFwUGFyYW1ldGVyc1N2YzogTHdtMm1Cb290c3RyYXBQYXJhbWV0ZXJzU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVxuICApIHtcbiAgICB0aGlzLmRldmljZUlkID0gdGhpcy5yb3V0ZT8uc25hcHNob3Q/LnBhcmVudD8ucGFyYW1zPy5pZDtcbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IHBhcmFtZXRlcnM6IEx3bTJtQm9vdHN0cmFwUGFyYW1ldGVycyA9IGF3YWl0IHRoaXMuZ2V0Qm9vdHN0cmFwUGFyYW1ldGVycygpO1xuICAgIGNvbnN0IHtcbiAgICAgIGJpbmRpbmdNb2RlLFxuICAgICAgYm9vdHN0cmFwSWQsXG4gICAgICBib290c3RyYXBLZXksXG4gICAgICBib290c3RyYXBTaG9ydFNlcnZlcklkLFxuICAgICAgZGVmYXVsdE1heGltdW1QZXJpb2QsXG4gICAgICBkZWZhdWx0TWluaW11bVBlcmlvZCxcbiAgICAgIHNlY3VyaXR5TW9kZSxcbiAgICAgIGVuZHBvaW50LFxuICAgICAgZ2VuZXJhdGVCb290c3RyYXBTZXJ2ZXJDb25maWcsXG4gICAgICBsd20ybVNob3J0U2VydmVySWQsXG4gICAgICBzZXJ2ZXJVcmksXG4gICAgICByZWdpc3RyYXRpb25MaWZlVGltZSxcbiAgICAgIHNlcnZlclB1YmxpY0tleSxcbiAgICAgIHNlY3VyaXR5SW5zdGFuY2VPZmZzZXQsXG4gICAgICBwdWJsaWNLZXlPcklkLFxuICAgICAgc2VjcmV0S2V5XG4gICAgfTogTHdtMm1Cb290c3RyYXBQYXJhbWV0ZXJzID0gcGFyYW1ldGVycztcblxuICAgIGNvbnN0IGxlZnRGaWVsZHM6IEZvcm1seUZpZWxkQ29uZmlnW10gPSBbXG4gICAgICB7XG4gICAgICAgIGtleTogJ2VuZHBvaW50JyxcbiAgICAgICAgaWQ6ICdicy1lbmRwb2ludCcsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGVuZHBvaW50LFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnRW5kcG9pbnQnKSxcbiAgICAgICAgICBwbGFjZWhvbGRlcjogJ3VybjppbWVpOjAxMjM0NTY3ODkwMTIzNCcsXG4gICAgICAgICAgcmVhZG9ubHk6IHRydWVcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnc2VjdXJpdHlNb2RlJyxcbiAgICAgICAgaWQ6ICdicy1zZWN1cml0eU1vZGUnLFxuICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBzZWN1cml0eU1vZGUgfHwgU2VjdXJpdHlNb2RlLk5PX1NFQyxcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ1NlY3VyaXR5IG1vZGUnKSxcbiAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICB7IGxhYmVsOiBTZWN1cml0eU1vZGUuTk9fU0VDLCB2YWx1ZTogU2VjdXJpdHlNb2RlLk5PX1NFQyB9LFxuICAgICAgICAgICAgeyBsYWJlbDogU2VjdXJpdHlNb2RlLlBTSywgdmFsdWU6IFNlY3VyaXR5TW9kZS5QU0sgfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnYm9vdHN0cmFwSWQnLFxuICAgICAgICBpZDogJ2JzLWJvb3RzdHJhcElkJyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdCb290c3RyYXAgUFNLIElEJyksXG4gICAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuRElTQUJMRURfSElOVF9URVhULFxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIGhvb2tzOiB7XG4gICAgICAgICAgb25Jbml0OiAoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnKSA9PiB7XG4gICAgICAgICAgICBmaWVsZC5mb3JtQ29udHJvbC5wYXRjaFZhbHVlKGJvb3RzdHJhcElkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGV4cHJlc3Npb25Qcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgJ3RlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZCc6IChtb2RlbDogYW55LCBmb3JtU3RhdGU6IGFueSwgZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnKSA9PlxuICAgICAgICAgICAgdGhpcy5kaXNhYmxlUFNLRmllbGQoZm9ybVN0YXRlLCBmaWVsZClcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnYm9vdHN0cmFwS2V5JyxcbiAgICAgICAgaWQ6ICdicy1ib290c3RyYXBLZXknLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0Jvb3RzdHJhcCBwcmUtc2hhcmVkIGtleScpLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLkRJU0FCTEVEX0hJTlRfVEVYVCxcbiAgICAgICAgICBwbGFjZWhvbGRlcjogJzAxMjM0NTY3ODlhYmNkZWYnLFxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgIHBhdHRlcm46IHRoaXMucGF0dGVyblxuICAgICAgICB9LFxuICAgICAgICBob29rczoge1xuICAgICAgICAgIG9uSW5pdDogKGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZykgPT4ge1xuICAgICAgICAgICAgZmllbGQuZm9ybUNvbnRyb2wucGF0Y2hWYWx1ZShib290c3RyYXBLZXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXhwcmVzc2lvblByb3BlcnRpZXM6IHtcbiAgICAgICAgICAndGVtcGxhdGVPcHRpb25zLmRpc2FibGVkJzogKG1vZGVsOiBhbnksIGZvcm1TdGF0ZTogYW55LCBmaWVsZDogRm9ybWx5RmllbGRDb25maWcpID0+XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVQU0tGaWVsZChmb3JtU3RhdGUsIGZpZWxkKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdzZWN1cml0eUluc3RhbmNlT2Zmc2V0JyxcbiAgICAgICAgaWQ6ICdicy1zZWN1cml0eUluc3RhbmNlT2Zmc2V0JyxcbiAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogc2VjdXJpdHlJbnN0YW5jZU9mZnNldCxcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ1NlY3VyaXR5IGluc3RhbmNlIG9mZnNldCcpLFxuICAgICAgICAgIHBsYWNlaG9sZGVyOiAnMCcsXG4gICAgICAgICAgbWluOiAwXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ2Jvb3RzdHJhcFNob3J0U2VydmVySWQnLFxuICAgICAgICBpZDogJ2JzLWJvb3RzdHJhcFNob3J0U2VydmVySWQnLFxuICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBib290c3RyYXBTaG9ydFNlcnZlcklkLFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnTFdNMk0gYm9vdHN0cmFwIHNob3J0IHNlcnZlciBJRCcpLFxuICAgICAgICAgIHBsYWNlaG9sZGVyOiAnMCcsXG4gICAgICAgICAgbWluOiAwXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ3JlZ2lzdHJhdGlvbkxpZmVUaW1lJyxcbiAgICAgICAgaWQ6ICdicy1yZWdpc3RyYXRpb25MaWZlVGltZScsXG4gICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IHJlZ2lzdHJhdGlvbkxpZmVUaW1lLFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnUmVnaXN0cmF0aW9uIGxpZmV0aW1lJyksXG4gICAgICAgICAgZGVzY3JpcHRpb246IGdldHRleHQoJ2luIHNlY29uZHMnKSxcbiAgICAgICAgICBwbGFjZWhvbGRlcjogJzYwMCcsXG4gICAgICAgICAgbWluOiAwXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ2JpbmRpbmdNb2RlJyxcbiAgICAgICAgaWQ6ICdicy1iaW5kaW5nTW9kZScsXG4gICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGJpbmRpbmdNb2RlIHx8IEJpbmRpbmdNb2RlLlUsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdCaW5kaW5nIG1vZGUnKSxcbiAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICB7IGxhYmVsOiBnZXR0ZXh0KCdVRFAnKSwgdmFsdWU6IEJpbmRpbmdNb2RlLlUgfSxcbiAgICAgICAgICAgIHsgbGFiZWw6IGdldHRleHQoJ1VEUCB3aXRoIHF1ZXVlIG1vZGUnKSwgdmFsdWU6IEJpbmRpbmdNb2RlLlVRIH1cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdO1xuXG4gICAgY29uc3QgcmlnaHRGaWVsZHM6IEZvcm1seUZpZWxkQ29uZmlnW10gPSBbXG4gICAgICB7XG4gICAgICAgIGtleTogJ3NlcnZlclB1YmxpY0tleScsXG4gICAgICAgIGlkOiAnYnMtc2VydmVyUHVibGljS2V5JyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogc2VydmVyUHVibGljS2V5LFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnU2VydmVyIHB1YmxpYyBrZXknKSxcbiAgICAgICAgICBwbGFjZWhvbGRlcjogJ0FBQUFCM056YUMxeWMyReKApidcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnc2VydmVyVXJpJyxcbiAgICAgICAgaWQ6ICdicy1zZXJ2ZXJVcmknLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBzZXJ2ZXJVcmksXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdMV00yTSBzZXJ2ZXIgVVJJJyksXG4gICAgICAgICAgcGxhY2Vob2xkZXI6ICdjb2FwczovLzxMV00yTS1zZXJ2ZXItZG9tYWluPjo8Y29hcHMtcG9ydD4nXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ3B1YmxpY0tleU9ySWQnLFxuICAgICAgICBpZDogJ2JzLXB1YmxpY0tleU9ySWQnLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0xXTTJNIFBTSyBJRCcpLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLkRJU0FCTEVEX0hJTlRfVEVYVCxcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBob29rczoge1xuICAgICAgICAgIG9uSW5pdDogKGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZykgPT4ge1xuICAgICAgICAgICAgZmllbGQuZm9ybUNvbnRyb2wucGF0Y2hWYWx1ZShwdWJsaWNLZXlPcklkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGV4cHJlc3Npb25Qcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgJ3RlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZCc6IChtb2RlbDogYW55LCBmb3JtU3RhdGU6IGFueSwgZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnKSA9PlxuICAgICAgICAgICAgdGhpcy5kaXNhYmxlUFNLRmllbGQoZm9ybVN0YXRlLCBmaWVsZClcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnc2VjcmV0S2V5JyxcbiAgICAgICAgaWQ6ICdicy1zZWNyZXRLZXknLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0xXTTJNIHByZS1zaGFyZWQga2V5JyksXG4gICAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuRElTQUJMRURfSElOVF9URVhULFxuICAgICAgICAgIHBsYWNlaG9sZGVyOiAnMDEyMzQ1Njc4OWFiY2RlZicsXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgcGF0dGVybjogdGhpcy5wYXR0ZXJuXG4gICAgICAgIH0sXG4gICAgICAgIGhvb2tzOiB7XG4gICAgICAgICAgb25Jbml0OiAoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnKSA9PiB7XG4gICAgICAgICAgICBmaWVsZC5mb3JtQ29udHJvbC5wYXRjaFZhbHVlKHNlY3JldEtleSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBleHByZXNzaW9uUHJvcGVydGllczoge1xuICAgICAgICAgICd0ZW1wbGF0ZU9wdGlvbnMuZGlzYWJsZWQnOiAobW9kZWw6IGFueSwgZm9ybVN0YXRlOiBhbnksIGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZykgPT5cbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZVBTS0ZpZWxkKGZvcm1TdGF0ZSwgZmllbGQpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ2x3bTJtU2hvcnRTZXJ2ZXJJZCcsXG4gICAgICAgIGlkOiAnYnMtbHdtMm1TaG9ydFNlcnZlcklkJyxcbiAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogbHdtMm1TaG9ydFNlcnZlcklkLFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnTFdNMk0gc2hvcnQgc2VydmVyIElEJyksXG4gICAgICAgICAgcGxhY2Vob2xkZXI6ICcwJyxcbiAgICAgICAgICBtaW46IDBcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnZ2VuZXJhdGVCb290c3RyYXBTZXJ2ZXJDb25maWcnLFxuICAgICAgICBpZDogJ2JzLWdlbmVyYXRlQm9vdHN0cmFwU2VydmVyQ29uZmlnJyxcbiAgICAgICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogZ2VuZXJhdGVCb290c3RyYXBTZXJ2ZXJDb25maWcgfHwgZmFsc2UsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdHZW5lcmF0ZSBib290c3RyYXAgc2VydmVyIGNvbmZpZycpLFxuICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgIHsgbGFiZWw6IGdldHRleHQoJ1llcycpLCB2YWx1ZTogdHJ1ZSB9LFxuICAgICAgICAgICAgeyBsYWJlbDogZ2V0dGV4dCgnTm8nKSwgdmFsdWU6IGZhbHNlIH1cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ2RlZmF1bHRNaW5pbXVtUGVyaW9kJyxcbiAgICAgICAgaWQ6ICdicy1kZWZhdWx0TWluaW11bVBlcmlvZCcsXG4gICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGRlZmF1bHRNaW5pbXVtUGVyaW9kLFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnRGVmYXVsdCBtaW5pbXVtIHBlcmlvZCcpLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdpbiBzZWNvbmRzJyksXG4gICAgICAgICAgcGxhY2Vob2xkZXI6ICcxMCcsXG4gICAgICAgICAgbWluOiAwXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ2RlZmF1bHRNYXhpbXVtUGVyaW9kJyxcbiAgICAgICAgaWQ6ICdicy1kZWZhdWx0TWF4aW11bVBlcmlvZCcsXG4gICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGRlZmF1bHRNYXhpbXVtUGVyaW9kLFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnRGVmYXVsdCBtYXhpbXVtIHBlcmlvZCcpLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdpbiBzZWNvbmRzJyksXG4gICAgICAgICAgcGxhY2Vob2xkZXI6ICc2MCcsXG4gICAgICAgICAgbWluOiAwXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdO1xuXG4gICAgdGhpcy5maWVsZHMgPSBbXG4gICAgICB7XG4gICAgICAgIGZpZWxkR3JvdXBDbGFzc05hbWU6ICdjYXJkLWJsb2NrIGQtZ3JpZCBncmlkX19jb2wtLTYtNicsXG4gICAgICAgIGZpZWxkR3JvdXA6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmaWVsZEdyb3VwQ2xhc3NOYW1lOiAnZm9ybS1ncm91cCBwLTI0IHAtdC04IHAtYi04IG0tYi0wJyxcbiAgICAgICAgICAgIGZpZWxkR3JvdXA6IGxlZnRGaWVsZHNcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZpZWxkR3JvdXBDbGFzc05hbWU6ICdmb3JtLWdyb3VwIHAtMjQgcC10LTggcC1iLTggbS1iLTAnLFxuICAgICAgICAgICAgZmllbGRHcm91cDogcmlnaHRGaWVsZHNcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdO1xuXG4gICAgdGhpcy5idWlsZGVyLmJ1aWxkRm9ybSh0aGlzLmZvcm0sIHRoaXMuZmllbGRzLCB0aGlzLm1vZGVsLCB0aGlzLm9wdGlvbnMpO1xuXG4gICAgY29uc3QgdXNlckhhc1dyaXRlUGVybWlzc2lvbiA9IHRoaXMucGVybWlzc2lvbnMuaGFzUm9sZSgnUk9MRV9JTlZFTlRPUllfQURNSU4nKTtcblxuICAgIGlmIChPYmplY3Qua2V5cyhwYXJhbWV0ZXJzKS5sZW5ndGggPT09IDAgfHwgIXVzZXJIYXNXcml0ZVBlcm1pc3Npb24pIHtcbiAgICAgIHRoaXMuZm9ybS5kaXNhYmxlKCk7XG5cbiAgICAgIHRoaXMub3B0aW9ucy5mb3JtU3RhdGUuZGlzYWJsZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICghdXNlckhhc1dyaXRlUGVybWlzc2lvbikge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuaW5mbyh0aGlzLndyaXRlUGVybWlzc2lvbk1pc3NpbmdBbGVydC50ZXh0IGFzIHN0cmluZyk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgLy8gYWxlcnRTZXJ2aWNlIGNoZWNrcyBpZiBnaXZlbiBhbGVydCBleGlzdHMuXG4gICAgLy8gc2F2ZSB0byByZW1vdmUgaXQgd2l0aG91dCBhZGRpdGlvbmFsIGNoZWNrc1xuICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnJlbW92ZSh0aGlzLndyaXRlUGVybWlzc2lvbk1pc3NpbmdBbGVydCk7XG4gIH1cblxuICBkaXNhYmxlUFNLRmllbGQoXG4gICAgZm9ybVN0YXRlOiB7IGRpc2FibGVkOiBib29sZWFuOyBtYWluTW9kZWw6IEx3bTJtQm9vdHN0cmFwUGFyYW1ldGVycyB9LFxuICAgIGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZ1xuICApIHtcbiAgICBpZiAoZm9ybVN0YXRlLmRpc2FibGVkKSB7XG4gICAgICBkZWxldGUgZmllbGQudGVtcGxhdGVPcHRpb25zLmRlc2NyaXB0aW9uO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgICFmb3JtU3RhdGUubWFpbk1vZGVsLnNlY3VyaXR5TW9kZSB8fFxuICAgICAgZm9ybVN0YXRlLm1haW5Nb2RlbC5zZWN1cml0eU1vZGUgPT09IFNlY3VyaXR5TW9kZS5OT19TRUNcbiAgICApIHtcbiAgICAgIGZpZWxkLnRlbXBsYXRlT3B0aW9ucy5kZXNjcmlwdGlvbiA9IHRoaXMuRElTQUJMRURfSElOVF9URVhUO1xuICAgICAgZmllbGQuZm9ybUNvbnRyb2wucGF0Y2hWYWx1ZShudWxsKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBkZWxldGUgZmllbGQudGVtcGxhdGVPcHRpb25zLmRlc2NyaXB0aW9uO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIHNhdmUoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMubHdtMm1Cb290c3RyYXBQYXJhbWV0ZXJzU3ZjLnVwZGF0ZSh7IC4uLnRoaXMubW9kZWwsIC4uLnsgaWQ6IHRoaXMuZGV2aWNlSWQgfSB9KTtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnN1Y2Nlc3MoZ2V0dGV4dCgnQm9vdHN0cmFwIHBhcmFtZXRlcnMgdXBkYXRlZCcpKTtcbiAgICAgIC8vIGRpc2FibGVzIHNhdmUgYnV0dG9uXG4gICAgICB0aGlzLmZvcm0ubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgIHRoaXMuZm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoeyAuLi5lcnJvciB9KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXRCb290c3RyYXBQYXJhbWV0ZXJzKCk6IFByb21pc2U8THdtMm1Cb290c3RyYXBQYXJhbWV0ZXJzPiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5sd20ybUJvb3RzdHJhcFBhcmFtZXRlcnNTdmMuZGV0YWlsKHRoaXMuZGV2aWNlSWQpKVxuICAgICAgICAuZGF0YSBhcyBMd20ybUJvb3RzdHJhcFBhcmFtZXRlcnM7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoeyAuLi5lcnJvciB9KTtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH1cbn1cbiIsIjxmb3JtIChuZ1N1Ym1pdCk9XCJzYXZlKClcIj5cbiAgPGRpdiBjbGFzcz1cImNhcmQgY29udGVudC1mdWxscGFnZSBmaXQtaFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBzZXBhcmF0b3IgZ3JpZF9fY29sLS1mdWxsc3BhblwiPlxuICAgICAgPGgxIGNsYXNzPVwiY2FyZC10aXRsZVwiPnt7ICdMV00yTSBib290c3RyYXAgcGFyYW1ldGVycycgfCB0cmFuc2xhdGUgfX08L2gxPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJpbm5lci1zY3JvbGxcIj5cbiAgICAgIDxmb3JtbHktZm9ybVxuICAgICAgICBbZm9ybV09XCJmb3JtXCJcbiAgICAgICAgW2ZpZWxkc109XCJmaWVsZHNcIlxuICAgICAgICBbbW9kZWxdPVwibW9kZWxcIlxuICAgICAgICBbb3B0aW9uc109XCJvcHRpb25zXCJcbiAgICAgID48L2Zvcm1seS1mb3JtPlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIFtoaWRkZW5dPVwib3B0aW9ucy5mb3JtU3RhdGUuZGlzYWJsZWRcIlxuICAgICAgY2xhc3M9XCJjYXJkLWZvb3RlciBzZXBhcmF0b3IgZ3JpZF9fY29sLS1mdWxsc3BhbiBzdGlja3ktYm90dG9tXCJcbiAgICA+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHRpdGxlPVwie3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImZvcm0uaW52YWxpZCB8fCAhZm9ybS5kaXJ0eVwiXG4gICAgICA+XG4gICAgICAgIHt7ICdTYXZlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9mb3JtPlxuIl19
333
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHdtMm0tYm9vdHN0cmFwLXBhcmFtZXRlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvdG9jb2wtbHdtMm0vY29tcG9uZW50cy9ib290c3RyYXAtcGFyYW1ldGVycy9sd20ybS1ib290c3RyYXAtcGFyYW1ldGVycy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm90b2NvbC1sd20ybS9jb21wb25lbnRzL2Jvb3RzdHJhcC1wYXJhbWV0ZXJzL2x3bTJtLWJvb3RzdHJhcC1wYXJhbWV0ZXJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFxQixpQkFBaUIsRUFBcUIsTUFBTSxrQkFBa0IsQ0FBQztBQUMzRixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RixPQUFPLEVBQ0wsV0FBVyxFQUVYLFlBQVksRUFDYixNQUFNLDBDQUEwQyxDQUFDO0FBQ2xELE9BQU8sRUFDTCxPQUFPLEVBQ1AsWUFBWSxFQUNaLFdBQVcsRUFFWCxZQUFZLEVBQ1osVUFBVSxFQUNYLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7QUFRN0IsTUFBTSxPQUFPLGlDQUFpQztJQXNCNUMsWUFDVSxZQUEwQixFQUMxQixXQUF3QixFQUN4QixPQUEwQixFQUMxQiwyQkFBNEQsRUFDNUQsS0FBcUI7UUFKckIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsWUFBTyxHQUFQLE9BQU8sQ0FBbUI7UUFDMUIsZ0NBQTJCLEdBQTNCLDJCQUEyQixDQUFpQztRQUM1RCxVQUFLLEdB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QzNCLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztTQUNwQztRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUNsRDtJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsc0JBQXNCO1FBQzFCLElBQUk7WUFDRixPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsMkJBQTJCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDbEUsSUFBZ0MsQ0FBQztTQUNyQztRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNqRCxPQUFPLEVBQUUsQ0FBQztTQUNYO0lBQ0gsQ0FBQzs7OEhBbldVLGlDQUFpQztrSEFBakMsaUNBQWlDLDBGQ3pCOUMsczBCQTRCQSwyQ0ROWSxZQUFZLDhGQUFFLFVBQVU7MkZBR3ZCLGlDQUFpQztrQkFON0MsU0FBUzsrQkFDRSxnQ0FBZ0MsV0FFakMsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLGNBQ3ZCLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZywgRm9ybWx5Rm9ybUJ1aWxkZXIsIEZvcm1seUZvcm1PcHRpb25zIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBMd20ybUJvb3RzdHJhcFBhcmFtZXRlcnNTZXJ2aWNlIH0gZnJvbSAnLi9sd20ybS1ib290c3RyYXAtcGFyYW1ldGVycy5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEJpbmRpbmdNb2RlLFxuICBMd20ybUJvb3RzdHJhcFBhcmFtZXRlcnMsXG4gIFNlY3VyaXR5TW9kZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL3Byb3RvY29sLWx3bTJtL21vZGVsJztcbmltcG9ydCB7XG4gIGdldHRleHQsXG4gIEFsZXJ0U2VydmljZSxcbiAgUGVybWlzc2lvbnMsXG4gIEFsZXJ0LFxuICBDb21tb25Nb2R1bGUsXG4gIENvcmVNb2R1bGVcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1sd20ybS1ib290c3RyYXAtcGFyYW1ldGVycycsXG4gIHRlbXBsYXRlVXJsOiAnLi9sd20ybS1ib290c3RyYXAtcGFyYW1ldGVycy5jb21wb25lbnQuaHRtbCcsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIENvcmVNb2R1bGVdLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIEx3bTJtQm9vdHN0cmFwUGFyYW1ldGVyc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgZmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdO1xuICBmb3JtOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgbW9kZWwgPSB7fTtcbiAgb3B0aW9uczogRm9ybWx5Rm9ybU9wdGlvbnMgPSB7XG4gICAgZm9ybVN0YXRlOiB7XG4gICAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgICBtYWluTW9kZWw6IHRoaXMubW9kZWxcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSByZWFkb25seSB3cml0ZVBlcm1pc3Npb25NaXNzaW5nQWxlcnQ6IEFsZXJ0ID0ge1xuICAgIHRleHQ6IGdldHRleHQoJ1lvdSBkbyBub3QgaGF2ZSB3cml0ZSBwZXJtaXNzaW9ucy4gVGhpcyBmb3JtIGlzIHJlYWQtb25seS4nKSxcbiAgICB0eXBlOiAnaW5mbydcbiAgfTtcblxuICBwcml2YXRlIHJlYWRvbmx5IERJU0FCTEVEX0hJTlRfVEVYVDogc3RyaW5nID0gZ2V0dGV4dChcbiAgICAnQ2hhbmdlIHRoZSBzZWN1cml0eSBtb2RlIHRvIGVuYWJsZSB0aGlzIGZpZWxkLidcbiAgKTtcbiAgcHJpdmF0ZSByZWFkb25seSBwYXR0ZXJuOiBSZWdFeHAgPSAvXihbYS1mQS1GMC05XXsyfSkrJC87XG4gIHByaXZhdGUgZGV2aWNlSWQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25zLFxuICAgIHByaXZhdGUgYnVpbGRlcjogRm9ybWx5Rm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBsd20ybUJvb3RzdHJhcFBhcmFtZXRlcnNTdmM6IEx3bTJtQm9vdHN0cmFwUGFyYW1ldGVyc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGVcbiAgKSB7XG4gICAgdGhpcy5kZXZpY2VJZCA9IHRoaXMucm91dGU/LnNuYXBzaG90Py5wYXJlbnQ/LnBhcmFtcz8uaWQ7XG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBwYXJhbWV0ZXJzOiBMd20ybUJvb3RzdHJhcFBhcmFtZXRlcnMgPSBhd2FpdCB0aGlzLmdldEJvb3RzdHJhcFBhcmFtZXRlcnMoKTtcbiAgICBjb25zdCB7XG4gICAgICBiaW5kaW5nTW9kZSxcbiAgICAgIGJvb3RzdHJhcElkLFxuICAgICAgYm9vdHN0cmFwS2V5LFxuICAgICAgYm9vdHN0cmFwU2hvcnRTZXJ2ZXJJZCxcbiAgICAgIGRlZmF1bHRNYXhpbXVtUGVyaW9kLFxuICAgICAgZGVmYXVsdE1pbmltdW1QZXJpb2QsXG4gICAgICBzZWN1cml0eU1vZGUsXG4gICAgICBlbmRwb2ludCxcbiAgICAgIGdlbmVyYXRlQm9vdHN0cmFwU2VydmVyQ29uZmlnLFxuICAgICAgbHdtMm1TaG9ydFNlcnZlcklkLFxuICAgICAgc2VydmVyVXJpLFxuICAgICAgcmVnaXN0cmF0aW9uTGlmZVRpbWUsXG4gICAgICBzZXJ2ZXJQdWJsaWNLZXksXG4gICAgICBzZWN1cml0eUluc3RhbmNlT2Zmc2V0LFxuICAgICAgcHVibGljS2V5T3JJZCxcbiAgICAgIHNlY3JldEtleVxuICAgIH06IEx3bTJtQm9vdHN0cmFwUGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7XG5cbiAgICBjb25zdCBsZWZ0RmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdID0gW1xuICAgICAge1xuICAgICAgICBrZXk6ICdlbmRwb2ludCcsXG4gICAgICAgIGlkOiAnYnMtZW5kcG9pbnQnLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBlbmRwb2ludCxcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0VuZHBvaW50JyksXG4gICAgICAgICAgcGxhY2Vob2xkZXI6ICd1cm46aW1laTowMTIzNDU2Nzg5MDEyMzQnLFxuICAgICAgICAgIHJlYWRvbmx5OiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ3NlY3VyaXR5TW9kZScsXG4gICAgICAgIGlkOiAnYnMtc2VjdXJpdHlNb2RlJyxcbiAgICAgICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogc2VjdXJpdHlNb2RlIHx8IFNlY3VyaXR5TW9kZS5OT19TRUMsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdTZWN1cml0eSBtb2RlJyksXG4gICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgeyBsYWJlbDogU2VjdXJpdHlNb2RlLk5PX1NFQywgdmFsdWU6IFNlY3VyaXR5TW9kZS5OT19TRUMgfSxcbiAgICAgICAgICAgIHsgbGFiZWw6IFNlY3VyaXR5TW9kZS5QU0ssIHZhbHVlOiBTZWN1cml0eU1vZGUuUFNLIH1cbiAgICAgICAgICBdLFxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ2Jvb3RzdHJhcElkJyxcbiAgICAgICAgaWQ6ICdicy1ib290c3RyYXBJZCcsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQm9vdHN0cmFwIFBTSyBJRCcpLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLkRJU0FCTEVEX0hJTlRfVEVYVCxcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBob29rczoge1xuICAgICAgICAgIG9uSW5pdDogKGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZykgPT4ge1xuICAgICAgICAgICAgZmllbGQuZm9ybUNvbnRyb2wucGF0Y2hWYWx1ZShib290c3RyYXBJZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBleHByZXNzaW9uUHJvcGVydGllczoge1xuICAgICAgICAgICd0ZW1wbGF0ZU9wdGlvbnMuZGlzYWJsZWQnOiAobW9kZWw6IGFueSwgZm9ybVN0YXRlOiBhbnksIGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZykgPT5cbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZVBTS0ZpZWxkKGZvcm1TdGF0ZSwgZmllbGQpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ2Jvb3RzdHJhcEtleScsXG4gICAgICAgIGlkOiAnYnMtYm9vdHN0cmFwS2V5JyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdCb290c3RyYXAgcHJlLXNoYXJlZCBrZXknKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5ESVNBQkxFRF9ISU5UX1RFWFQsXG4gICAgICAgICAgcGxhY2Vob2xkZXI6ICcwMTIzNDU2Nzg5YWJjZGVmJyxcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICBwYXR0ZXJuOiB0aGlzLnBhdHRlcm5cbiAgICAgICAgfSxcbiAgICAgICAgaG9va3M6IHtcbiAgICAgICAgICBvbkluaXQ6IChmaWVsZDogRm9ybWx5RmllbGRDb25maWcpID0+IHtcbiAgICAgICAgICAgIGZpZWxkLmZvcm1Db250cm9sLnBhdGNoVmFsdWUoYm9vdHN0cmFwS2V5KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGV4cHJlc3Npb25Qcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgJ3RlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZCc6IChtb2RlbDogYW55LCBmb3JtU3RhdGU6IGFueSwgZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnKSA9PlxuICAgICAgICAgICAgdGhpcy5kaXNhYmxlUFNLRmllbGQoZm9ybVN0YXRlLCBmaWVsZClcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnc2VjdXJpdHlJbnN0YW5jZU9mZnNldCcsXG4gICAgICAgIGlkOiAnYnMtc2VjdXJpdHlJbnN0YW5jZU9mZnNldCcsXG4gICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IHNlY3VyaXR5SW5zdGFuY2VPZmZzZXQsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdTZWN1cml0eSBpbnN0YW5jZSBvZmZzZXQnKSxcbiAgICAgICAgICBwbGFjZWhvbGRlcjogJzAnLFxuICAgICAgICAgIG1pbjogMFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdib290c3RyYXBTaG9ydFNlcnZlcklkJyxcbiAgICAgICAgaWQ6ICdicy1ib290c3RyYXBTaG9ydFNlcnZlcklkJyxcbiAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogYm9vdHN0cmFwU2hvcnRTZXJ2ZXJJZCxcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0xXTTJNIGJvb3RzdHJhcCBzaG9ydCBzZXJ2ZXIgSUQnKSxcbiAgICAgICAgICBwbGFjZWhvbGRlcjogJzAnLFxuICAgICAgICAgIG1pbjogMFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdyZWdpc3RyYXRpb25MaWZlVGltZScsXG4gICAgICAgIGlkOiAnYnMtcmVnaXN0cmF0aW9uTGlmZVRpbWUnLFxuICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiByZWdpc3RyYXRpb25MaWZlVGltZSxcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ1JlZ2lzdHJhdGlvbiBsaWZldGltZScpLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdpbiBzZWNvbmRzJyksXG4gICAgICAgICAgcGxhY2Vob2xkZXI6ICc2MDAnLFxuICAgICAgICAgIG1pbjogMFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdiaW5kaW5nTW9kZScsXG4gICAgICAgIGlkOiAnYnMtYmluZGluZ01vZGUnLFxuICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBiaW5kaW5nTW9kZSB8fCBCaW5kaW5nTW9kZS5VLFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQmluZGluZyBtb2RlJyksXG4gICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgeyBsYWJlbDogZ2V0dGV4dCgnVURQJyksIHZhbHVlOiBCaW5kaW5nTW9kZS5VIH0sXG4gICAgICAgICAgICB7IGxhYmVsOiBnZXR0ZXh0KCdVRFAgd2l0aCBxdWV1ZSBtb2RlJyksIHZhbHVlOiBCaW5kaW5nTW9kZS5VUSB9XG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICB9XG4gICAgXTtcblxuICAgIGNvbnN0IHJpZ2h0RmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdID0gW1xuICAgICAge1xuICAgICAgICBrZXk6ICdzZXJ2ZXJQdWJsaWNLZXknLFxuICAgICAgICBpZDogJ2JzLXNlcnZlclB1YmxpY0tleScsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IHNlcnZlclB1YmxpY0tleSxcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ1NlcnZlciBwdWJsaWMga2V5JyksXG4gICAgICAgICAgcGxhY2Vob2xkZXI6ICdBQUFBQjNOemFDMXljMkXigKYnXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ3NlcnZlclVyaScsXG4gICAgICAgIGlkOiAnYnMtc2VydmVyVXJpJyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogc2VydmVyVXJpLFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnTFdNMk0gc2VydmVyIFVSSScpLFxuICAgICAgICAgIHBsYWNlaG9sZGVyOiAnY29hcHM6Ly88TFdNMk0tc2VydmVyLWRvbWFpbj46PGNvYXBzLXBvcnQ+J1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdwdWJsaWNLZXlPcklkJyxcbiAgICAgICAgaWQ6ICdicy1wdWJsaWNLZXlPcklkJyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdMV00yTSBQU0sgSUQnKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5ESVNBQkxFRF9ISU5UX1RFWFQsXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgaG9va3M6IHtcbiAgICAgICAgICBvbkluaXQ6IChmaWVsZDogRm9ybWx5RmllbGRDb25maWcpID0+IHtcbiAgICAgICAgICAgIGZpZWxkLmZvcm1Db250cm9sLnBhdGNoVmFsdWUocHVibGljS2V5T3JJZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBleHByZXNzaW9uUHJvcGVydGllczoge1xuICAgICAgICAgICd0ZW1wbGF0ZU9wdGlvbnMuZGlzYWJsZWQnOiAobW9kZWw6IGFueSwgZm9ybVN0YXRlOiBhbnksIGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZykgPT5cbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZVBTS0ZpZWxkKGZvcm1TdGF0ZSwgZmllbGQpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ3NlY3JldEtleScsXG4gICAgICAgIGlkOiAnYnMtc2VjcmV0S2V5JyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdMV00yTSBwcmUtc2hhcmVkIGtleScpLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLkRJU0FCTEVEX0hJTlRfVEVYVCxcbiAgICAgICAgICBwbGFjZWhvbGRlcjogJzAxMjM0NTY3ODlhYmNkZWYnLFxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgIHBhdHRlcm46IHRoaXMucGF0dGVyblxuICAgICAgICB9LFxuICAgICAgICBob29rczoge1xuICAgICAgICAgIG9uSW5pdDogKGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZykgPT4ge1xuICAgICAgICAgICAgZmllbGQuZm9ybUNvbnRyb2wucGF0Y2hWYWx1ZShzZWNyZXRLZXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXhwcmVzc2lvblByb3BlcnRpZXM6IHtcbiAgICAgICAgICAndGVtcGxhdGVPcHRpb25zLmRpc2FibGVkJzogKG1vZGVsOiBhbnksIGZvcm1TdGF0ZTogYW55LCBmaWVsZDogRm9ybWx5RmllbGRDb25maWcpID0+XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVQU0tGaWVsZChmb3JtU3RhdGUsIGZpZWxkKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdsd20ybVNob3J0U2VydmVySWQnLFxuICAgICAgICBpZDogJ2JzLWx3bTJtU2hvcnRTZXJ2ZXJJZCcsXG4gICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGx3bTJtU2hvcnRTZXJ2ZXJJZCxcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0xXTTJNIHNob3J0IHNlcnZlciBJRCcpLFxuICAgICAgICAgIHBsYWNlaG9sZGVyOiAnMCcsXG4gICAgICAgICAgbWluOiAwXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ2dlbmVyYXRlQm9vdHN0cmFwU2VydmVyQ29uZmlnJyxcbiAgICAgICAgaWQ6ICdicy1nZW5lcmF0ZUJvb3RzdHJhcFNlcnZlckNvbmZpZycsXG4gICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGdlbmVyYXRlQm9vdHN0cmFwU2VydmVyQ29uZmlnIHx8IGZhbHNlLFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnR2VuZXJhdGUgYm9vdHN0cmFwIHNlcnZlciBjb25maWcnKSxcbiAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICB7IGxhYmVsOiBnZXR0ZXh0KCdZZXMnKSwgdmFsdWU6IHRydWUgfSxcbiAgICAgICAgICAgIHsgbGFiZWw6IGdldHRleHQoJ05vJyksIHZhbHVlOiBmYWxzZSB9XG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdkZWZhdWx0TWluaW11bVBlcmlvZCcsXG4gICAgICAgIGlkOiAnYnMtZGVmYXVsdE1pbmltdW1QZXJpb2QnLFxuICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBkZWZhdWx0TWluaW11bVBlcmlvZCxcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0RlZmF1bHQgbWluaW11bSBwZXJpb2QnKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnaW4gc2Vjb25kcycpLFxuICAgICAgICAgIHBsYWNlaG9sZGVyOiAnMTAnLFxuICAgICAgICAgIG1pbjogMFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdkZWZhdWx0TWF4aW11bVBlcmlvZCcsXG4gICAgICAgIGlkOiAnYnMtZGVmYXVsdE1heGltdW1QZXJpb2QnLFxuICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBkZWZhdWx0TWF4aW11bVBlcmlvZCxcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0RlZmF1bHQgbWF4aW11bSBwZXJpb2QnKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnaW4gc2Vjb25kcycpLFxuICAgICAgICAgIHBsYWNlaG9sZGVyOiAnNjAnLFxuICAgICAgICAgIG1pbjogMFxuICAgICAgICB9XG4gICAgICB9XG4gICAgXTtcblxuICAgIHRoaXMuZmllbGRzID0gW1xuICAgICAge1xuICAgICAgICBmaWVsZEdyb3VwQ2xhc3NOYW1lOiAnY2FyZC1ibG9jayBkLWdyaWQgZ3JpZF9fY29sLS02LTYnLFxuICAgICAgICBmaWVsZEdyb3VwOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgZmllbGRHcm91cENsYXNzTmFtZTogJ2Zvcm0tZ3JvdXAgcC0yNCBwLXQtOCBwLWItOCBtLWItMCcsXG4gICAgICAgICAgICBmaWVsZEdyb3VwOiBsZWZ0RmllbGRzXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmaWVsZEdyb3VwQ2xhc3NOYW1lOiAnZm9ybS1ncm91cCBwLTI0IHAtdC04IHAtYi04IG0tYi0wJyxcbiAgICAgICAgICAgIGZpZWxkR3JvdXA6IHJpZ2h0RmllbGRzXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgXTtcblxuICAgIHRoaXMuYnVpbGRlci5idWlsZEZvcm0odGhpcy5mb3JtLCB0aGlzLmZpZWxkcywgdGhpcy5tb2RlbCwgdGhpcy5vcHRpb25zKTtcblxuICAgIGNvbnN0IHVzZXJIYXNXcml0ZVBlcm1pc3Npb24gPSB0aGlzLnBlcm1pc3Npb25zLmhhc1JvbGUoUGVybWlzc2lvbnMuUk9MRV9JTlZFTlRPUllfQURNSU4pO1xuXG4gICAgaWYgKE9iamVjdC5rZXlzKHBhcmFtZXRlcnMpLmxlbmd0aCA9PT0gMCB8fCAhdXNlckhhc1dyaXRlUGVybWlzc2lvbikge1xuICAgICAgdGhpcy5mb3JtLmRpc2FibGUoKTtcblxuICAgICAgdGhpcy5vcHRpb25zLmZvcm1TdGF0ZS5kaXNhYmxlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCF1c2VySGFzV3JpdGVQZXJtaXNzaW9uKSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5pbmZvKHRoaXMud3JpdGVQZXJtaXNzaW9uTWlzc2luZ0FsZXJ0LnRleHQgYXMgc3RyaW5nKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICAvLyBhbGVydFNlcnZpY2UgY2hlY2tzIGlmIGdpdmVuIGFsZXJ0IGV4aXN0cy5cbiAgICAvLyBzYXZlIHRvIHJlbW92ZSBpdCB3aXRob3V0IGFkZGl0aW9uYWwgY2hlY2tzXG4gICAgdGhpcy5hbGVydFNlcnZpY2UucmVtb3ZlKHRoaXMud3JpdGVQZXJtaXNzaW9uTWlzc2luZ0FsZXJ0KTtcbiAgfVxuXG4gIGRpc2FibGVQU0tGaWVsZChcbiAgICBmb3JtU3RhdGU6IHsgZGlzYWJsZWQ6IGJvb2xlYW47IG1haW5Nb2RlbDogTHdtMm1Cb290c3RyYXBQYXJhbWV0ZXJzIH0sXG4gICAgZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnXG4gICkge1xuICAgIGlmIChmb3JtU3RhdGUuZGlzYWJsZWQpIHtcbiAgICAgIGRlbGV0ZSBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMuZGVzY3JpcHRpb247XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgIWZvcm1TdGF0ZS5tYWluTW9kZWwuc2VjdXJpdHlNb2RlIHx8XG4gICAgICBmb3JtU3RhdGUubWFpbk1vZGVsLnNlY3VyaXR5TW9kZSA9PT0gU2VjdXJpdHlNb2RlLk5PX1NFQ1xuICAgICkge1xuICAgICAgZmllbGQudGVtcGxhdGVPcHRpb25zLmRlc2NyaXB0aW9uID0gdGhpcy5ESVNBQkxFRF9ISU5UX1RFWFQ7XG4gICAgICBmaWVsZC5mb3JtQ29udHJvbC5wYXRjaFZhbHVlKG51bGwpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGRlbGV0ZSBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMuZGVzY3JpcHRpb247XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgc2F2ZSgpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5sd20ybUJvb3RzdHJhcFBhcmFtZXRlcnNTdmMudXBkYXRlKHsgLi4udGhpcy5tb2RlbCwgLi4ueyBpZDogdGhpcy5kZXZpY2VJZCB9IH0pO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcyhnZXR0ZXh0KCdCb290c3RyYXAgcGFyYW1ldGVycyB1cGRhdGVkJykpO1xuICAgICAgLy8gZGlzYWJsZXMgc2F2ZSBidXR0b25cbiAgICAgIHRoaXMuZm9ybS5tYXJrQXNQcmlzdGluZSgpO1xuICAgICAgdGhpcy5mb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZSh7IC4uLmVycm9yIH0pO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGdldEJvb3RzdHJhcFBhcmFtZXRlcnMoKTogUHJvbWlzZTxMd20ybUJvb3RzdHJhcFBhcmFtZXRlcnM+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLmx3bTJtQm9vdHN0cmFwUGFyYW1ldGVyc1N2Yy5kZXRhaWwodGhpcy5kZXZpY2VJZCkpXG4gICAgICAgIC5kYXRhIGFzIEx3bTJtQm9vdHN0cmFwUGFyYW1ldGVycztcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZSh7IC4uLmVycm9yIH0pO1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfVxufVxuIiwiPGZvcm0gKG5nU3VibWl0KT1cInNhdmUoKVwiPlxuICA8ZGl2IGNsYXNzPVwiY2FyZCBjb250ZW50LWZ1bGxwYWdlIGZpdC1oXCI+XG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHNlcGFyYXRvciBncmlkX19jb2wtLWZ1bGxzcGFuXCI+XG4gICAgICA8aDEgY2xhc3M9XCJjYXJkLXRpdGxlXCI+e3sgJ0xXTTJNIGJvb3RzdHJhcCBwYXJhbWV0ZXJzJyB8IHRyYW5zbGF0ZSB9fTwvaDE+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImlubmVyLXNjcm9sbFwiPlxuICAgICAgPGZvcm1seS1mb3JtXG4gICAgICAgIFtmb3JtXT1cImZvcm1cIlxuICAgICAgICBbZmllbGRzXT1cImZpZWxkc1wiXG4gICAgICAgIFttb2RlbF09XCJtb2RlbFwiXG4gICAgICAgIFtvcHRpb25zXT1cIm9wdGlvbnNcIlxuICAgICAgPjwvZm9ybWx5LWZvcm0+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgW2hpZGRlbl09XCJvcHRpb25zLmZvcm1TdGF0ZS5kaXNhYmxlZFwiXG4gICAgICBjbGFzcz1cImNhcmQtZm9vdGVyIHNlcGFyYXRvciBncmlkX19jb2wtLWZ1bGxzcGFuIHN0aWNreS1ib3R0b21cIlxuICAgID5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdGl0bGU9XCJ7eyAnU2F2ZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkIHx8ICFmb3JtLmRpcnR5XCJcbiAgICAgID5cbiAgICAgICAge3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=
@@ -8,8 +8,8 @@ export class RegisterDeviceNavigationFactory {
8
8
  }
9
9
  get() {
10
10
  const userHasPermission = this.permissions.hasAnyRole([
11
- 'ROLE_DEVICE_CONTROL_ADMIN',
12
- 'ROLE_DEVICE_CONTROL_READ'
11
+ Permissions.ROLE_DEVICE_CONTROL_ADMIN,
12
+ Permissions.ROLE_DEVICE_CONTROL_READ
13
13
  ]);
14
14
  const nav = [];
15
15
  if (userHasPermission) {
@@ -30,4 +30,4 @@ RegisterDeviceNavigationFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion
30
30
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: RegisterDeviceNavigationFactory, decorators: [{
31
31
  type: Injectable
32
32
  }], ctorParameters: function () { return [{ type: i1.Permissions }]; } });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXItZGV2aWNlLW5hdmlnYXRpb24uZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3JlZ2lzdGVyLWRldmljZS9yZWdpc3Rlci1kZXZpY2UtbmF2aWdhdGlvbi5mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQXdCLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFHaEcsTUFBTSxPQUFPLCtCQUErQjtJQUMxQyxZQUFvQixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUFHLENBQUM7SUFDaEQsR0FBRztRQUNELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7WUFDcEQsMkJBQTJCO1lBQzNCLDBCQUEwQjtTQUMzQixDQUFDLENBQUM7UUFDSCxNQUFNLEdBQUcsR0FBb0IsRUFBRSxDQUFDO1FBQ2hDLElBQUksaUJBQWlCLEVBQUU7WUFDckIsR0FBRyxDQUFDLElBQUksQ0FDTixJQUFJLGFBQWEsQ0FBQztnQkFDaEIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxjQUFjLENBQUM7Z0JBQzlCLElBQUksRUFBRSxvQkFBb0I7Z0JBQzFCLElBQUksRUFBRSxxQkFBcUI7Z0JBQzNCLE1BQU0sRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDO2dCQUMxQixpQkFBaUIsRUFBRSxJQUFJO2dCQUN2QixRQUFRLEVBQUUsSUFBSTthQUNmLENBQUMsQ0FDSCxDQUFDO1NBQ0g7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7OzRIQXJCVSwrQkFBK0I7Z0lBQS9CLCtCQUErQjsyRkFBL0IsK0JBQStCO2tCQUQzQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZ2V0dGV4dCwgTmF2aWdhdG9yTm9kZSwgTmF2aWdhdG9yTm9kZUZhY3RvcnksIFBlcm1pc3Npb25zIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBSZWdpc3RlckRldmljZU5hdmlnYXRpb25GYWN0b3J5IGltcGxlbWVudHMgTmF2aWdhdG9yTm9kZUZhY3Rvcnkge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBlcm1pc3Npb25zOiBQZXJtaXNzaW9ucykge31cbiAgZ2V0KCkge1xuICAgIGNvbnN0IHVzZXJIYXNQZXJtaXNzaW9uID0gdGhpcy5wZXJtaXNzaW9ucy5oYXNBbnlSb2xlKFtcbiAgICAgICdST0xFX0RFVklDRV9DT05UUk9MX0FETUlOJyxcbiAgICAgICdST0xFX0RFVklDRV9DT05UUk9MX1JFQUQnXG4gICAgXSk7XG4gICAgY29uc3QgbmF2OiBOYXZpZ2F0b3JOb2RlW10gPSBbXTtcbiAgICBpZiAodXNlckhhc1Blcm1pc3Npb24pIHtcbiAgICAgIG5hdi5wdXNoKFxuICAgICAgICBuZXcgTmF2aWdhdG9yTm9kZSh7XG4gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ1JlZ2lzdHJhdGlvbicpLFxuICAgICAgICAgIGljb246ICdjOHktZGV2aWNlLWNvbm5lY3QnLFxuICAgICAgICAgIHBhdGg6ICcvZGV2aWNlcmVnaXN0cmF0aW9uJyxcbiAgICAgICAgICBwYXJlbnQ6IGdldHRleHQoJ0RldmljZXMnKSxcbiAgICAgICAgICBwcmV2ZW50RHVwbGljYXRlczogdHJ1ZSxcbiAgICAgICAgICBwcmlvcml0eTogMzAwMFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIG5hdjtcbiAgfVxufVxuIl19
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXItZGV2aWNlLW5hdmlnYXRpb24uZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3JlZ2lzdGVyLWRldmljZS9yZWdpc3Rlci1kZXZpY2UtbmF2aWdhdGlvbi5mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQXdCLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFHaEcsTUFBTSxPQUFPLCtCQUErQjtJQUMxQyxZQUFvQixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUFHLENBQUM7SUFDaEQsR0FBRztRQUNELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7WUFDcEQsV0FBVyxDQUFDLHlCQUF5QjtZQUNyQyxXQUFXLENBQUMsd0JBQXdCO1NBQ3JDLENBQUMsQ0FBQztRQUNILE1BQU0sR0FBRyxHQUFvQixFQUFFLENBQUM7UUFDaEMsSUFBSSxpQkFBaUIsRUFBRTtZQUNyQixHQUFHLENBQUMsSUFBSSxDQUNOLElBQUksYUFBYSxDQUFDO2dCQUNoQixLQUFLLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQztnQkFDOUIsSUFBSSxFQUFFLG9CQUFvQjtnQkFDMUIsSUFBSSxFQUFFLHFCQUFxQjtnQkFDM0IsTUFBTSxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUM7Z0JBQzFCLGlCQUFpQixFQUFFLElBQUk7Z0JBQ3ZCLFFBQVEsRUFBRSxJQUFJO2FBQ2YsQ0FBQyxDQUNILENBQUM7U0FDSDtRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQzs7NEhBckJVLCtCQUErQjtnSUFBL0IsK0JBQStCOzJGQUEvQiwrQkFBK0I7a0JBRDNDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXR0ZXh0LCBOYXZpZ2F0b3JOb2RlLCBOYXZpZ2F0b3JOb2RlRmFjdG9yeSwgUGVybWlzc2lvbnMgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJlZ2lzdGVyRGV2aWNlTmF2aWdhdGlvbkZhY3RvcnkgaW1wbGVtZW50cyBOYXZpZ2F0b3JOb2RlRmFjdG9yeSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25zKSB7fVxuICBnZXQoKSB7XG4gICAgY29uc3QgdXNlckhhc1Blcm1pc3Npb24gPSB0aGlzLnBlcm1pc3Npb25zLmhhc0FueVJvbGUoW1xuICAgICAgUGVybWlzc2lvbnMuUk9MRV9ERVZJQ0VfQ09OVFJPTF9BRE1JTixcbiAgICAgIFBlcm1pc3Npb25zLlJPTEVfREVWSUNFX0NPTlRST0xfUkVBRFxuICAgIF0pO1xuICAgIGNvbnN0IG5hdjogTmF2aWdhdG9yTm9kZVtdID0gW107XG4gICAgaWYgKHVzZXJIYXNQZXJtaXNzaW9uKSB7XG4gICAgICBuYXYucHVzaChcbiAgICAgICAgbmV3IE5hdmlnYXRvck5vZGUoe1xuICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdSZWdpc3RyYXRpb24nKSxcbiAgICAgICAgICBpY29uOiAnYzh5LWRldmljZS1jb25uZWN0JyxcbiAgICAgICAgICBwYXRoOiAnL2RldmljZXJlZ2lzdHJhdGlvbicsXG4gICAgICAgICAgcGFyZW50OiBnZXR0ZXh0KCdEZXZpY2VzJyksXG4gICAgICAgICAgcHJldmVudER1cGxpY2F0ZXM6IHRydWUsXG4gICAgICAgICAgcHJpb3JpdHk6IDMwMDBcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBuYXY7XG4gIH1cbn1cbiJdfQ==
@@ -3,7 +3,7 @@ import { ActionType } from './export-schedules.interface';
3
3
  import { ReportsService } from './reports.service';
4
4
  import { BsModalService } from 'ngx-bootstrap/modal';
5
5
  import { ScheduleModalComponent } from './schedule-modal.component';
6
- import { gettext, OptionsService } from '@c8y/ngx-components';
6
+ import { gettext, OptionsService, Permissions } from '@c8y/ngx-components';
7
7
  import { cloneDeep } from 'lodash-es';
8
8
  import { CronService } from './cron.service';
9
9
  import { TranslateService } from '@ngx-translate/core';
@@ -89,7 +89,7 @@ export class ExportSchedulesComponent {
89
89
  }
90
90
  async checkRole() {
91
91
  const { data } = await this.userService.current();
92
- const role = 'ROLE_SCHEDULE_REPORT_ADMIN';
92
+ const role = Permissions.ROLE_SCHEDULE_REPORT_ADMIN;
93
93
  const hasRole = this.userService.hasRole(data, role);
94
94
  return hasRole;
95
95
  }
@@ -153,4 +153,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
153
153
  }], onSchedulesUpdate: [{
154
154
  type: Output
155
155
  }] } });
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LXNjaGVkdWxlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9yZXBvcnRzL2V4cG9ydC1zY2hlZHVsZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vcmVwb3J0cy9leHBvcnQtc2NoZWR1bGVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBb0MsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQTRCLE1BQU0scUJBQXFCLENBQUM7QUFDL0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7Ozs7Ozs7O0FBSzFDLE1BQU0sT0FBTyx3QkFBd0I7SUE2Q25DLFlBQ1UsY0FBOEIsRUFDOUIsY0FBOEIsRUFDL0IsV0FBd0IsRUFDdkIsZ0JBQWtDLEVBQ2xDLFdBQXdCLEVBQ3hCLGNBQThCO1FBTDlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDL0IsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDdkIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtR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UUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBb0IsRUFBRSxFQUFFLENBQy9ELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQ3RDLENBQUM7SUFDSixDQUFDO0lBRUQsbUJBQW1CLENBQUMsT0FBdUIsRUFBRSxLQUFjO1FBQ3pELElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRTtZQUNuQixJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7Z0JBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQzthQUM3QztpQkFBTTtnQkFDTCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDMUM7WUFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUNoRDtJQUNILENBQUM7SUFFRCxjQUFjLENBQUMsUUFBa0IsRUFBRSxLQUFhLEVBQUUsS0FBVTtRQUMxRCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2pELENBQUM7O3FIQXJLVSx3QkFBd0I7eUdBQXhCLHdCQUF3QixvS0NmckMsbXdQQStMQTsyRkRoTGEsd0JBQXdCO2tCQUpwQyxTQUFTOytCQUNFLGtCQUFrQjtrUEFJZixRQUFRO3NCQUFwQixLQUFLO2dCQUlJLGlCQUFpQjtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRXhwb3J0LCBTY2hlZHVsZSwgRW1pdHRlclBheWxvYWQsIEFjdGlvblR5cGUgfSBmcm9tICcuL2V4cG9ydC1zY2hlZHVsZXMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJlcG9ydHNTZXJ2aWNlIH0gZnJvbSAnLi9yZXBvcnRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQnNNb2RhbFNlcnZpY2UsIEJzTW9kYWxSZWYsIE1vZGFsT3B0aW9ucyB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgU2NoZWR1bGVNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vc2NoZWR1bGUtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IGdldHRleHQsIE9wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQ3JvblNlcnZpY2UgfSBmcm9tICcuL2Nyb24uc2VydmljZSc7XG5pbXBvcnQgeyBJZFJlZmVyZW5jZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZXhwb3J0LXNjaGVkdWxlcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9leHBvcnQtc2NoZWR1bGVzLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBFeHBvcnRTY2hlZHVsZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHNldCBleHBvcnRJZChleHBvcnRJZDogSWRSZWZlcmVuY2UpIHtcbiAgICB0aGlzLl9leHBvcnRJZCA9IGV4cG9ydElkO1xuICB9XG5cbiAgQE91dHB1dCgpIG9uU2NoZWR1bGVzVXBkYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxTY2hlZHVsZVtdPigpO1xuXG4gIGV4cDogRXhwb3J0O1xuICBzY2hlZHVsZUxpc3Q6IFNjaGVkdWxlW10gPSBbXTtcbiAgaW5pdGlhbFNjaGVkdWxlOiBTY2hlZHVsZSA9IHtcbiAgICB0aW1lc3RhbXA6IG51bGwsXG4gICAgZW1haWxDb25maWc6IHtcbiAgICAgIHRvOiBbXSxcbiAgICAgIGNjOiBbXSxcbiAgICAgIGJjYzogW10sXG4gICAgICByZXBseVRvOiAnJyxcbiAgICAgIHRleHQ6ICcnLFxuICAgICAgc3ViamVjdDogJydcbiAgICB9LFxuICAgIGNyb25Db25maWc6IHtcbiAgICAgIG1pbnV0ZTogJzAnLFxuICAgICAgaG91cjogJzAnLFxuICAgICAgZGF5OiAnMScsXG4gICAgICBtb250aDogJzEnLFxuICAgICAgd2Vla2RheTogJz8nXG4gICAgfVxuICB9O1xuICBidXR0b25MYWJlbHM6IGFueTtcbiAgbGlzdENsYXNzID0gJ2ludGVyYWN0LWxpc3QnO1xuICBsb2FkaW5nU3RhdHVzOiBhbnk7XG4gIHNvcnRUeXBlOiBzdHJpbmc7XG4gIHNvcnRSZXZlcnNlID0gZmFsc2U7XG4gIGlzT3BlbjogYW55ID0ge307XG4gIGlzRmxpcHBlZDogYm9vbGVhbjtcbiAgaXNFZGl0TWVudU9wZW4gPSBmYWxzZTtcbiAgbW9kYWxSZWY6IEJzTW9kYWxSZWY7XG4gIGN1cnJlbnRVc2VyRW1haWwgPSAnJztcbiAgaGFzUmVxdWlyZWRSb2xlID0gZmFsc2U7XG4gIHByaXZhdGUgX2V4cG9ydElkOiBJZFJlZmVyZW5jZTtcbiAgcHJpdmF0ZSBkZWZhdWx0RXhwb3J0RW1haWxUZW1wbGF0ZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgIGdldHRleHQoXG4gICAgICAnRmlsZSB3aXRoIGV4cG9ydGVkIGRhdGEgY2FuIGJlIGRvd25sb2FkZWQgZnJvbSB7dGVuYW50LWRvbWFpbn0vYXBwcy9jb2NrcGl0L2luZGV4Lmh0bWwjP2Rvd25sb2FkPXtiaW5hcnlJZH0uJ1xuICAgIClcbiAgKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlcG9ydHNTZXJ2aWNlOiBSZXBvcnRzU2VydmljZSxcbiAgICBwcml2YXRlIGJzTW9kYWxTZXJ2aWNlOiBCc01vZGFsU2VydmljZSxcbiAgICBwdWJsaWMgY3JvblNlcnZpY2U6IENyb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIG9wdGlvbnNTZXJ2aWNlOiBPcHRpb25zU2VydmljZVxuICApIHtcbiAgICB0aGlzLmxvYWRpbmdTdGF0dXMgPSB7XG4gICAgICBpblByb2dyZXNzOiBmYWxzZSxcbiAgICAgIGRvbmU6IGZhbHNlLFxuICAgICAgZXJyb3I6IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaGFzUmVxdWlyZWRSb2xlID0gYXdhaXQgdGhpcy5jaGVja1JvbGUoKTtcbiAgICB0aGlzLmdldFNjaGVkdWxlTGlzdCh0cnVlKTtcbiAgICBjb25zdCBjdXJyZW50VXNlckVtYWlsID0gYXdhaXQgdGhpcy5nZXRDdXJyZW50VXNlckVtYWlsKCk7XG4gICAgdGhpcy5pbml0aWFsU2NoZWR1bGUuZW1haWxDb25maWcudGV4dCA9IGF3YWl0IHRoaXMub3B0aW9uc1NlcnZpY2UuZ2V0VGVuYW50T3B0aW9uKFxuICAgICAgJ2NvbmZpZ3VyYXRpb24nLFxuICAgICAgJ2V4cG9ydC5kYXRhLm1haWwudGV4dCcsXG4gICAgICB0aGlzLmRlZmF1bHRFeHBvcnRFbWFpbFRlbXBsYXRlXG4gICAgKTtcbiAgICB0aGlzLmluaXRpYWxTY2hlZHVsZS5lbWFpbENvbmZpZy50byA9IGN1cnJlbnRVc2VyRW1haWw7XG4gICAgdGhpcy5leHAgPSBhd2FpdCB0aGlzLnJlcG9ydHNTZXJ2aWNlLmdldEV4cG9ydCh0aGlzLl9leHBvcnRJZCk7XG4gICAgdGhpcy5pbml0aWFsU2NoZWR1bGUuZW1haWxDb25maWcuc3ViamVjdCA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgZ2V0dGV4dCgnRXhwb3J0IG9mIFwie3tleHBOYW1lfX1cIicpLFxuICAgICAgeyBleHBOYW1lOiB0aGlzLmV4cC5uYW1lIH1cbiAgICApO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgdGhpcy50cmFuc2xhdGVCdXR0b25UaXRsZXMoKTtcbiAgfVxuXG4gIHRyYW5zbGF0ZUJ1dHRvblRpdGxlcygpIHtcbiAgICB0aGlzLmJ1dHRvbkxhYmVscyA9IHtcbiAgICAgIGVkaXQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJ0VkaXQgc2NoZWR1bGUnKSksXG4gICAgICBlZGl0Tm9QZXJtaXNzaW9uOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChnZXR0ZXh0KCdFZGl0IHNjaGVkdWxlIC0gbm8gcGVybWlzc2lvbnMnKSksXG4gICAgICBkdXBsaWNhdGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJ0R1cGxpY2F0ZSBzY2hlZHVsZScpKSxcbiAgICAgIGR1cGxpY2F0ZU5vUGVybWlzc2lvbjogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgIGdldHRleHQoJ0R1cGxpY2F0ZSBzY2hlZHVsZSAtIG5vIHBlcm1pc3Npb25zJylcbiAgICAgICksXG4gICAgICBkZWxldGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJ0RlbGV0ZSBzY2hlZHVsZScpKSxcbiAgICAgIGRlbGV0ZU5vUGVybWlzc2lvbjogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZ2V0dGV4dCgnRGVsZXRlIHNjaGVkdWxlIC0gbm8gcGVybWlzc2lvbnMnKSlcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZ2V0Q3VycmVudFVzZXJFbWFpbCgpIHtcbiAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMudXNlclNlcnZpY2UuY3VycmVudCgpO1xuICAgIHJldHVybiBkYXRhICYmIGRhdGEuZW1haWwgPyBbZGF0YS5lbWFpbF0gOiBbXTtcbiAgfVxuICBhc3luYyBjaGVja1JvbGUoKSB7XG4gICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnQoKTtcbiAgICBjb25zdCByb2xlID0gJ1JPTEVfU0NIRURVTEVfUkVQT1JUX0FETUlOJztcbiAgICBjb25zdCBoYXNSb2xlID0gdGhpcy51c2VyU2VydmljZS5oYXNSb2xlKGRhdGEsIHJvbGUpO1xuICAgIHJldHVybiBoYXNSb2xlO1xuICB9XG5cbiAgYXN5bmMgZ2V0U2NoZWR1bGVMaXN0KHdpdGhQcm9ncmVzczogYm9vbGVhbikge1xuICAgIGlmICh3aXRoUHJvZ3Jlc3MpIHtcbiAgICAgIHRoaXMubG9hZGluZ1N0YXR1cy5pblByb2dyZXNzID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5zY2hlZHVsZUxpc3QgPSBhd2FpdCB0aGlzLnJlcG9ydHNTZXJ2aWNlLmdldFNjaGVkdWxlTGlzdCh0aGlzLl9leHBvcnRJZCk7XG4gICAgaWYgKHdpdGhQcm9ncmVzcykge1xuICAgICAgdGhpcy5sb2FkaW5nU3RhdHVzLmluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBhZGRTY2hlZHVsZSgpIHtcbiAgICB0aGlzLm9wZW5BZGRFZGl0TW9kYWwodGhpcy5fZXhwb3J0SWQsIHRoaXMuaW5pdGlhbFNjaGVkdWxlLCBBY3Rpb25UeXBlLkNSRUFURSk7XG4gIH1cblxuICBlZGl0U2NoZWR1bGUoc2NoZWR1bGU6IFNjaGVkdWxlLCBpbmRleDogbnVtYmVyLCBldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuaGFzUmVxdWlyZWRSb2xlKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5vcGVuQWRkRWRpdE1vZGFsKHRoaXMuX2V4cG9ydElkLCBzY2hlZHVsZSwgQWN0aW9uVHlwZS5FRElULCBpbmRleCk7XG4gICAgfVxuICB9XG5cbiAgZHVwbGljYXRlU2NoZWR1bGUoc2NoZWR1bGU6IFNjaGVkdWxlLCBldmVudDogYW55KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLm9wZW5BZGRFZGl0TW9kYWwodGhpcy5fZXhwb3J0SWQsIHNjaGVkdWxlLCBBY3Rpb25UeXBlLkRVUExJQ0FURSk7XG4gIH1cblxuICBvcGVuQWRkRWRpdE1vZGFsKFxuICAgIGV4cG9ydElkOiBJZFJlZmVyZW5jZSxcbiAgICBzY2hlZHVsZTogU2NoZWR1bGUsXG4gICAgYWN0aW9uVHlwZTogQWN0aW9uVHlwZSxcbiAgICBpbmRleD86IG51bWJlclxuICApIHtcbiAgICBjb25zdCBwYXlsb2FkID0geyBhY3Rpb25UeXBlLCBleHBvcnRJZCwgc2NoZWR1bGU6IGNsb25lRGVlcChzY2hlZHVsZSkgfTtcbiAgICBjb25zdCBtb2RhbE9wdGlvbnMgPSB7XG4gICAgICBjbGFzczogJ21vZGFsLXNtJyxcbiAgICAgIGFyaWFEZXNjcmliZWRieTogJ21vZGFsLWJvZHknLFxuICAgICAgYXJpYUxhYmVsbGVkQnk6ICdtb2RhbC10aXRsZScsXG4gICAgICBpbml0aWFsU3RhdGU6IHBheWxvYWRcbiAgICB9IGFzIE1vZGFsT3B0aW9ucztcbiAgICB0aGlzLm1vZGFsUmVmID0gdGhpcy5ic01vZGFsU2VydmljZS5zaG93KFNjaGVkdWxlTW9kYWxDb21wb25lbnQsIG1vZGFsT3B0aW9ucyk7XG4gICAgdGhpcy5tb2RhbFJlZi5jb250ZW50LmVtaXR0ZXIuc3Vic2NyaWJlKChsb2FkOiBFbWl0dGVyUGF5bG9hZCkgPT5cbiAgICAgIHRoaXMuZ2V0TWVzc2FnZUZyb21Nb2RhbChsb2FkLCBpbmRleClcbiAgICApO1xuICB9XG5cbiAgZ2V0TWVzc2FnZUZyb21Nb2RhbChwYXlsb2FkOiBFbWl0dGVyUGF5bG9hZCwgaW5kZXg/OiBudW1iZXIpIHtcbiAgICBpZiAocGF5bG9hZC5zdWNjZXNzKSB7XG4gICAgICBpZiAoaW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnNjaGVkdWxlTGlzdFtpbmRleF0gPSBwYXlsb2FkLnNjaGVkdWxlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zY2hlZHVsZUxpc3QucHVzaChwYXlsb2FkLnNjaGVkdWxlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMub25TY2hlZHVsZXNVcGRhdGUuZW1pdCh0aGlzLnNjaGVkdWxlTGlzdCk7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlU2NoZWR1bGUoc2NoZWR1bGU6IFNjaGVkdWxlLCBpbmRleDogbnVtYmVyLCBldmVudDogYW55KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLnNjaGVkdWxlTGlzdC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMub25TY2hlZHVsZXNVcGRhdGUuZW1pdCh0aGlzLnNjaGVkdWxlTGlzdCk7XG4gIH1cbn1cbiIsIjxkaXY+XG4gIDxkaXYgKm5nSWY9XCJsb2FkaW5nU3RhdHVzLmluUHJvZ3Jlc3NcIiBjbGFzcz1cImQtZmxleCBhLWktY2VudGVyXCI+XG4gICAgPGM4eS1sb2FkaW5nPjwvYzh5LWxvYWRpbmc+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCIhbG9hZGluZ1N0YXR1cy5pblByb2dyZXNzICYmIGxvYWRpbmdTdGF0dXMuZG9uZSAmJiBsb2FkaW5nU3RhdHVzLmVycm9yXCI+XG4gICAgPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LXdhcm5pbmcgbWF4LXdpZHRoLTEwMFwiIHRyYW5zbGF0ZT5Db3VsZCBub3QgbG9hZCBzY2hlZHVsZXMgbGlzdC48L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj1cIiFsb2FkaW5nU3RhdHVzLmluUHJvZ3Jlc3MgJiYgIWxvYWRpbmdTdGF0dXMuZG9uZSAmJiAhbG9hZGluZ1N0YXR1cy5lcnJvclwiPlxuICAgIDxjOHktdWktZW1wdHktc3RhdGVcbiAgICAgICpuZ0lmPVwiIXNjaGVkdWxlTGlzdC5sZW5ndGhcIlxuICAgICAgW2ljb25dPVwiJ2M4eS1yZXBvcnQnXCJcbiAgICAgIFt0aXRsZV09XCInTm8gZXhwb3J0IHNjaGVkdWxlcyBkZWZpbmVkLicgfCB0cmFuc2xhdGVcIlxuICAgICAgW2hvcml6b250YWxdPVwidHJ1ZVwiXG4gICAgPjwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuXG4gICAgPGRpdiBjbGFzcz1cImM4eS1saXN0X19ncm91cFwiICpuZ0lmPVwic2NoZWR1bGVMaXN0Lmxlbmd0aFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImM4eS1saXN0X19pdGVtIGhpZGRlbi14c1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW1fX2Jsb2NrXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImM4eS1saXN0X19pdGVtX19pY29uXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cInAtbC0yNFwiPjwvaT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW1fX2JvZHlcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibS0wXCI+XG4gICAgICAgICAgICAgICAgICB7eyAnRGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNiBtLXItNDBcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIHt7ICdGcmVxdWVuY3knIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJjOHktbGlzdF9faXRlbSBwb2ludGVyXCJcbiAgICAgICAgKm5nRm9yPVwibGV0IHNjaGVkdWxlIG9mIHNjaGVkdWxlTGlzdDsgaW5kZXggYXMgaVwiXG4gICAgICAgIChjbGljayk9XCJlZGl0U2NoZWR1bGUoc2NoZWR1bGUsIGksICRldmVudClcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW1fX2Jsb2NrXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImM4eS1saXN0X19pdGVtX19pY29uXCI+XG4gICAgICAgICAgICA8aSBjOHlJY29uPVwiYzh5LXJlcG9ydFwiIGNsYXNzPVwiYzh5LWljb24tZHVvY29sb3JcIj48L2k+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImM4eS1saXN0X19pdGVtX19ib2R5IGQtZmxleFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02IGNvbC14cy02XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCIgdGl0bGU9XCJ7eyBzY2hlZHVsZS5lbWFpbENvbmZpZy5zdWJqZWN0IH19XCI+XG4gICAgICAgICAgICAgICAge3sgc2NoZWR1bGUuZW1haWxDb25maWcuc3ViamVjdCB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02IGNvbC14cy02XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYS1pLWJhc2VsaW5lXCI+XG4gICAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cImNhbGVuZGFyXCIgY2xhc3M9XCJ0ZXh0LW11dGVkIG0tci00XCI+PC9pPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic21hcnQtcnVsZS1pbmZvcm1hdGlvblwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjcm9uU2VydmljZS5nZXRCYXNlKHNjaGVkdWxlLmNyb25Db25maWcpID09PSAyXCJcbiAgICAgICAgICAgICAgICAgICAgbmdOb25CaW5kYWJsZVxuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgW3RyYW5zbGF0ZVBhcmFtc109XCJ7IG1pbnV0ZXM6IHNjaGVkdWxlLmNyb25Db25maWcubWludXRlIHwgbnVtYmVyOiAnMi4wLTAnIH1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBIb3VybHk6IHt7IG1pbnV0ZXMgfX0gbWludXRlKHMpIHBhc3QgdGhlIGhvdXIuXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNyb25TZXJ2aWNlLmdldEJhc2Uoc2NoZWR1bGUuY3JvbkNvbmZpZykgPT09IDNcIlxuICAgICAgICAgICAgICAgICAgICBuZ05vbkJpbmRhYmxlXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICBbdHJhbnNsYXRlUGFyYW1zXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICBob3VyOiBzY2hlZHVsZS5jcm9uQ29uZmlnLmhvdXIgfCBudW1iZXI6ICcyLjAtMCcsXG4gICAgICAgICAgICAgICAgICAgICAgbWludXRlczogc2NoZWR1bGUuY3JvbkNvbmZpZy5taW51dGUgfCBudW1iZXI6ICcyLjAtMCdcbiAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIERhaWx5OiBhdCB7eyBob3VyIH19Ont7IG1pbnV0ZXMgfX0uXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNyb25TZXJ2aWNlLmdldEJhc2Uoc2NoZWR1bGUuY3JvbkNvbmZpZykgPT09IDRcIlxuICAgICAgICAgICAgICAgICAgICBuZ05vbkJpbmRhYmxlXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICBbdHJhbnNsYXRlUGFyYW1zXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICB3ZWVrRGF5OiBjcm9uU2VydmljZS5nZXRXZWVrRGF5TmFtZShzY2hlZHVsZS5jcm9uQ29uZmlnKSxcbiAgICAgICAgICAgICAgICAgICAgICBob3VyOiBzY2hlZHVsZS5jcm9uQ29uZmlnLmhvdXIgfCBudW1iZXI6ICcyLjAtMCcsXG4gICAgICAgICAgICAgICAgICAgICAgbWludXRlczogc2NoZWR1bGUuY3JvbkNvbmZpZy5taW51dGUgfCBudW1iZXI6ICcyLjAtMCdcbiAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIFdlZWtseToge3sgd2Vla0RheSB9fSwgYXQge3sgaG91ciB9fTp7eyBtaW51dGVzIH19LlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjcm9uU2VydmljZS5nZXRCYXNlKHNjaGVkdWxlLmNyb25Db25maWcpID09PSA1XCJcbiAgICAgICAgICAgICAgICAgICAgbmdOb25CaW5kYWJsZVxuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgW3RyYW5zbGF0ZVBhcmFtc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgbW9udGhEYXk6IGNyb25TZXJ2aWNlLmdldE1vbnRoRGF5TmFtZShzY2hlZHVsZS5jcm9uQ29uZmlnKSxcbiAgICAgICAgICAgICAgICAgICAgICBob3VyOiBzY2hlZHVsZS5jcm9uQ29uZmlnLmhvdXIgfCBudW1iZXI6ICcyLjAtMCcsXG4gICAgICAgICAgICAgICAgICAgICAgbWludXRlczogc2NoZWR1bGUuY3JvbkNvbmZpZy5taW51dGUgfCBudW1iZXI6ICcyLjAtMCdcbiAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIE1vbnRobHk6IHt7IG1vbnRoRGF5IH19IGRheSBvZiB0aGUgbW9udGgsIGF0IHt7IGhvdXIgfX06e3sgbWludXRlcyB9fS5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY3JvblNlcnZpY2UuZ2V0QmFzZShzY2hlZHVsZS5jcm9uQ29uZmlnKSA9PT0gNlwiXG4gICAgICAgICAgICAgICAgICAgIG5nTm9uQmluZGFibGVcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgIFt0cmFuc2xhdGVQYXJhbXNdPVwie1xuICAgICAgICAgICAgICAgICAgICAgIG1vbnRoOiBjcm9uU2VydmljZS5nZXRNb250aE5hbWUoc2NoZWR1bGUuY3JvbkNvbmZpZyksXG4gICAgICAgICAgICAgICAgICAgICAgbW9udGhEYXk6IGNyb25TZXJ2aWNlLmdldE1vbnRoRGF5TmFtZShzY2hlZHVsZS5jcm9uQ29uZmlnKSxcbiAgICAgICAgICAgICAgICAgICAgICBob3VyOiBzY2hlZHVsZS5jcm9uQ29uZmlnLmhvdXIgfCBudW1iZXI6ICcyLjAtMCcsXG4gICAgICAgICAgICAgICAgICAgICAgbWludXRlczogc2NoZWR1bGUuY3JvbkNvbmZpZy5taW51dGUgfCBudW1iZXI6ICcyLjAtMCdcbiAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIFllYXJseToge3sgbW9udGggfX0sIHt7IG1vbnRoRGF5IH19IGRheSBvZiB0aGUgbW9udGgsIGF0IHt7IGhvdXIgfX06e3tcbiAgICAgICAgICAgICAgICAgICAgICBtaW51dGVzXG4gICAgICAgICAgICAgICAgICAgIH19LlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW1fX2FjdGlvbnNcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2V0dGluZ3MgZHJvcGRvd25cIiBkcm9wZG93bj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tdG9nZ2xlIGM4eS1kcm9wZG93blwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQWN0aW9ucycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgIGRyb3Bkb3duVG9nZ2xlXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aSBbYzh5SWNvbl09XCInZWxsaXBzaXMtdidcIj48L2k+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8dWwgcm9sZT1cImxpc3RcIiBjbGFzcz1cImRyb3Bkb3duLW1lbnUgZHJvcGRvd24tbWVudS1yaWdodFwiICpkcm9wZG93bk1lbnU+XG4gICAgICAgICAgICAgICAgPGxpIHJvbGU9XCJtZW51aXRlbVwiPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cImhhc1JlcXVpcmVkUm9sZSA/IGJ1dHRvbkxhYmVscy5lZGl0IDogYnV0dG9uTGFiZWxzLmVkaXROb1Blcm1pc3Npb25cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZWRpdFNjaGVkdWxlKHNjaGVkdWxlLCBpLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFoYXNSZXF1aXJlZFJvbGVcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8aSBbYzh5SWNvbl09XCIncGVuY2lsJ1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAge3sgJ0VkaXQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDxsaSByb2xlPVwibWVudWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICBoYXNSZXF1aXJlZFJvbGUgPyBidXR0b25MYWJlbHMuZHVwbGljYXRlIDogYnV0dG9uTGFiZWxzLmR1cGxpY2F0ZU5vUGVybWlzc2lvblxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZHVwbGljYXRlU2NoZWR1bGUoc2NoZWR1bGUsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWhhc1JlcXVpcmVkUm9sZVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpIFtjOHlJY29uXT1cIidjb3B5J1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAge3sgJ0R1cGxpY2F0ZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPGxpIHJvbGU9XCJtZW51aXRlbVwiPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgIGhhc1JlcXVpcmVkUm9sZSA/IGJ1dHRvbkxhYmVscy5kZWxldGUgOiBidXR0b25MYWJlbHMuZGVsZXRlTm9QZXJtaXNzaW9uXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVTY2hlZHVsZShzY2hlZHVsZSwgaSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaGFzUmVxdWlyZWRSb2xlXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGkgW2M4eUljb25dPVwiJ2RlbGV0ZSdcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdEZWxldGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtd2FybmluZyBtYXgtd2lkdGgtMTAwXCIgKm5nSWY9XCIhaGFzUmVxdWlyZWRSb2xlXCIgcm9sZT1cImFsZXJ0XCIgdHJhbnNsYXRlPlxuICAgIFlvdSBkb24ndCBoYXZlIHRoZSBwZXJtaXNzaW9uIHJlcXVpcmVkIHRvIHNjaGVkdWxlIGV4cG9ydHMuXG4gIDwvZGl2PlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgbS10LTE2XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICB0aXRsZT1cInt7ICdBZGQgc2NoZWR1bGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAoY2xpY2spPVwiYWRkU2NoZWR1bGUoKVwiXG4gICAgW2Rpc2FibGVkXT1cIiFoYXNSZXF1aXJlZFJvbGVcIlxuICA+XG4gICAgPGkgW2M4eUljb25dPVwiJ3BsdXMtY2lyY2xlJ1wiPjwvaT5cbiAgICB7eyAnQWRkIHNjaGVkdWxlJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cbjwvZGl2PlxuIl19
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LXNjaGVkdWxlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9yZXBvcnRzL2V4cG9ydC1zY2hlZHVsZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vcmVwb3J0cy9leHBvcnQtc2NoZWR1bGVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBb0MsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQTRCLE1BQU0scUJBQXFCLENBQUM7QUFDL0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDM0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7Ozs7OztBQUsxQyxNQUFNLE9BQU8sd0JBQXdCO0lBNkNuQyxZQUNVLGNBQThCLEVBQzlCLGNBQThCLEVBQy9CLFdBQXdCLEVBQ3ZCLGdCQUFrQyxFQUNsQyxXQUF3QixFQUN4QixjQUE4QjtRQUw5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQy9CLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3ZCLHFCQUFnQixHQUFoQixnQkFB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QUFDO1FBQy9FLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFvQixFQUFFLEVBQUUsQ0FDL0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FDdEMsQ0FBQztJQUNKLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxPQUF1QixFQUFFLEtBQWM7UUFDekQsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFO1lBQ25CLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtnQkFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO2FBQzdDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUMxQztZQUNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ2hEO0lBQ0gsQ0FBQztJQUVELGNBQWMsQ0FBQyxRQUFrQixFQUFFLEtBQWEsRUFBRSxLQUFVO1FBQzFELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDakQsQ0FBQzs7cUhBcktVLHdCQUF3Qjt5R0FBeEIsd0JBQXdCLG9LQ2ZyQyxtd1BBK0xBOzJGRGhMYSx3QkFBd0I7a0JBSnBDLFNBQVM7K0JBQ0Usa0JBQWtCO2tQQUlmLFFBQVE7c0JBQXBCLEtBQUs7Z0JBSUksaUJBQWlCO3NCQUExQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFeHBvcnQsIFNjaGVkdWxlLCBFbWl0dGVyUGF5bG9hZCwgQWN0aW9uVHlwZSB9IGZyb20gJy4vZXhwb3J0LXNjaGVkdWxlcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUmVwb3J0c1NlcnZpY2UgfSBmcm9tICcuL3JlcG9ydHMuc2VydmljZSc7XG5pbXBvcnQgeyBCc01vZGFsU2VydmljZSwgQnNNb2RhbFJlZiwgTW9kYWxPcHRpb25zIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBTY2hlZHVsZU1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9zY2hlZHVsZS1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgZ2V0dGV4dCwgT3B0aW9uc1NlcnZpY2UsIFBlcm1pc3Npb25zIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQ3JvblNlcnZpY2UgfSBmcm9tICcuL2Nyb24uc2VydmljZSc7XG5pbXBvcnQgeyBJZFJlZmVyZW5jZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZXhwb3J0LXNjaGVkdWxlcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9leHBvcnQtc2NoZWR1bGVzLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBFeHBvcnRTY2hlZHVsZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHNldCBleHBvcnRJZChleHBvcnRJZDogSWRSZWZlcmVuY2UpIHtcbiAgICB0aGlzLl9leHBvcnRJZCA9IGV4cG9ydElkO1xuICB9XG5cbiAgQE91dHB1dCgpIG9uU2NoZWR1bGVzVXBkYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxTY2hlZHVsZVtdPigpO1xuXG4gIGV4cDogRXhwb3J0O1xuICBzY2hlZHVsZUxpc3Q6IFNjaGVkdWxlW10gPSBbXTtcbiAgaW5pdGlhbFNjaGVkdWxlOiBTY2hlZHVsZSA9IHtcbiAgICB0aW1lc3RhbXA6IG51bGwsXG4gICAgZW1haWxDb25maWc6IHtcbiAgICAgIHRvOiBbXSxcbiAgICAgIGNjOiBbXSxcbiAgICAgIGJjYzogW10sXG4gICAgICByZXBseVRvOiAnJyxcbiAgICAgIHRleHQ6ICcnLFxuICAgICAgc3ViamVjdDogJydcbiAgICB9LFxuICAgIGNyb25Db25maWc6IHtcbiAgICAgIG1pbnV0ZTogJzAnLFxuICAgICAgaG91cjogJzAnLFxuICAgICAgZGF5OiAnMScsXG4gICAgICBtb250aDogJzEnLFxuICAgICAgd2Vla2RheTogJz8nXG4gICAgfVxuICB9O1xuICBidXR0b25MYWJlbHM6IGFueTtcbiAgbGlzdENsYXNzID0gJ2ludGVyYWN0LWxpc3QnO1xuICBsb2FkaW5nU3RhdHVzOiBhbnk7XG4gIHNvcnRUeXBlOiBzdHJpbmc7XG4gIHNvcnRSZXZlcnNlID0gZmFsc2U7XG4gIGlzT3BlbjogYW55ID0ge307XG4gIGlzRmxpcHBlZDogYm9vbGVhbjtcbiAgaXNFZGl0TWVudU9wZW4gPSBmYWxzZTtcbiAgbW9kYWxSZWY6IEJzTW9kYWxSZWY7XG4gIGN1cnJlbnRVc2VyRW1haWwgPSAnJztcbiAgaGFzUmVxdWlyZWRSb2xlID0gZmFsc2U7XG4gIHByaXZhdGUgX2V4cG9ydElkOiBJZFJlZmVyZW5jZTtcbiAgcHJpdmF0ZSBkZWZhdWx0RXhwb3J0RW1haWxUZW1wbGF0ZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgIGdldHRleHQoXG4gICAgICAnRmlsZSB3aXRoIGV4cG9ydGVkIGRhdGEgY2FuIGJlIGRvd25sb2FkZWQgZnJvbSB7dGVuYW50LWRvbWFpbn0vYXBwcy9jb2NrcGl0L2luZGV4Lmh0bWwjP2Rvd25sb2FkPXtiaW5hcnlJZH0uJ1xuICAgIClcbiAgKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlcG9ydHNTZXJ2aWNlOiBSZXBvcnRzU2VydmljZSxcbiAgICBwcml2YXRlIGJzTW9kYWxTZXJ2aWNlOiBCc01vZGFsU2VydmljZSxcbiAgICBwdWJsaWMgY3JvblNlcnZpY2U6IENyb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIG9wdGlvbnNTZXJ2aWNlOiBPcHRpb25zU2VydmljZVxuICApIHtcbiAgICB0aGlzLmxvYWRpbmdTdGF0dXMgPSB7XG4gICAgICBpblByb2dyZXNzOiBmYWxzZSxcbiAgICAgIGRvbmU6IGZhbHNlLFxuICAgICAgZXJyb3I6IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaGFzUmVxdWlyZWRSb2xlID0gYXdhaXQgdGhpcy5jaGVja1JvbGUoKTtcbiAgICB0aGlzLmdldFNjaGVkdWxlTGlzdCh0cnVlKTtcbiAgICBjb25zdCBjdXJyZW50VXNlckVtYWlsID0gYXdhaXQgdGhpcy5nZXRDdXJyZW50VXNlckVtYWlsKCk7XG4gICAgdGhpcy5pbml0aWFsU2NoZWR1bGUuZW1haWxDb25maWcudGV4dCA9IGF3YWl0IHRoaXMub3B0aW9uc1NlcnZpY2UuZ2V0VGVuYW50T3B0aW9uKFxuICAgICAgJ2NvbmZpZ3VyYXRpb24nLFxuICAgICAgJ2V4cG9ydC5kYXRhLm1haWwudGV4dCcsXG4gICAgICB0aGlzLmRlZmF1bHRFeHBvcnRFbWFpbFRlbXBsYXRlXG4gICAgKTtcbiAgICB0aGlzLmluaXRpYWxTY2hlZHVsZS5lbWFpbENvbmZpZy50byA9IGN1cnJlbnRVc2VyRW1haWw7XG4gICAgdGhpcy5leHAgPSBhd2FpdCB0aGlzLnJlcG9ydHNTZXJ2aWNlLmdldEV4cG9ydCh0aGlzLl9leHBvcnRJZCk7XG4gICAgdGhpcy5pbml0aWFsU2NoZWR1bGUuZW1haWxDb25maWcuc3ViamVjdCA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgZ2V0dGV4dCgnRXhwb3J0IG9mIFwie3tleHBOYW1lfX1cIicpLFxuICAgICAgeyBleHBOYW1lOiB0aGlzLmV4cC5uYW1lIH1cbiAgICApO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgdGhpcy50cmFuc2xhdGVCdXR0b25UaXRsZXMoKTtcbiAgfVxuXG4gIHRyYW5zbGF0ZUJ1dHRvblRpdGxlcygpIHtcbiAgICB0aGlzLmJ1dHRvbkxhYmVscyA9IHtcbiAgICAgIGVkaXQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJ0VkaXQgc2NoZWR1bGUnKSksXG4gICAgICBlZGl0Tm9QZXJtaXNzaW9uOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChnZXR0ZXh0KCdFZGl0IHNjaGVkdWxlIC0gbm8gcGVybWlzc2lvbnMnKSksXG4gICAgICBkdXBsaWNhdGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJ0R1cGxpY2F0ZSBzY2hlZHVsZScpKSxcbiAgICAgIGR1cGxpY2F0ZU5vUGVybWlzc2lvbjogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgIGdldHRleHQoJ0R1cGxpY2F0ZSBzY2hlZHVsZSAtIG5vIHBlcm1pc3Npb25zJylcbiAgICAgICksXG4gICAgICBkZWxldGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJ0RlbGV0ZSBzY2hlZHVsZScpKSxcbiAgICAgIGRlbGV0ZU5vUGVybWlzc2lvbjogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZ2V0dGV4dCgnRGVsZXRlIHNjaGVkdWxlIC0gbm8gcGVybWlzc2lvbnMnKSlcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZ2V0Q3VycmVudFVzZXJFbWFpbCgpIHtcbiAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMudXNlclNlcnZpY2UuY3VycmVudCgpO1xuICAgIHJldHVybiBkYXRhICYmIGRhdGEuZW1haWwgPyBbZGF0YS5lbWFpbF0gOiBbXTtcbiAgfVxuICBhc3luYyBjaGVja1JvbGUoKSB7XG4gICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnQoKTtcbiAgICBjb25zdCByb2xlID0gUGVybWlzc2lvbnMuUk9MRV9TQ0hFRFVMRV9SRVBPUlRfQURNSU47XG4gICAgY29uc3QgaGFzUm9sZSA9IHRoaXMudXNlclNlcnZpY2UuaGFzUm9sZShkYXRhLCByb2xlKTtcbiAgICByZXR1cm4gaGFzUm9sZTtcbiAgfVxuXG4gIGFzeW5jIGdldFNjaGVkdWxlTGlzdCh3aXRoUHJvZ3Jlc3M6IGJvb2xlYW4pIHtcbiAgICBpZiAod2l0aFByb2dyZXNzKSB7XG4gICAgICB0aGlzLmxvYWRpbmdTdGF0dXMuaW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuc2NoZWR1bGVMaXN0ID0gYXdhaXQgdGhpcy5yZXBvcnRzU2VydmljZS5nZXRTY2hlZHVsZUxpc3QodGhpcy5fZXhwb3J0SWQpO1xuICAgIGlmICh3aXRoUHJvZ3Jlc3MpIHtcbiAgICAgIHRoaXMubG9hZGluZ1N0YXR1cy5pblByb2dyZXNzID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgYWRkU2NoZWR1bGUoKSB7XG4gICAgdGhpcy5vcGVuQWRkRWRpdE1vZGFsKHRoaXMuX2V4cG9ydElkLCB0aGlzLmluaXRpYWxTY2hlZHVsZSwgQWN0aW9uVHlwZS5DUkVBVEUpO1xuICB9XG5cbiAgZWRpdFNjaGVkdWxlKHNjaGVkdWxlOiBTY2hlZHVsZSwgaW5kZXg6IG51bWJlciwgZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLmhhc1JlcXVpcmVkUm9sZSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMub3BlbkFkZEVkaXRNb2RhbCh0aGlzLl9leHBvcnRJZCwgc2NoZWR1bGUsIEFjdGlvblR5cGUuRURJVCwgaW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIGR1cGxpY2F0ZVNjaGVkdWxlKHNjaGVkdWxlOiBTY2hlZHVsZSwgZXZlbnQ6IGFueSkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5vcGVuQWRkRWRpdE1vZGFsKHRoaXMuX2V4cG9ydElkLCBzY2hlZHVsZSwgQWN0aW9uVHlwZS5EVVBMSUNBVEUpO1xuICB9XG5cbiAgb3BlbkFkZEVkaXRNb2RhbChcbiAgICBleHBvcnRJZDogSWRSZWZlcmVuY2UsXG4gICAgc2NoZWR1bGU6IFNjaGVkdWxlLFxuICAgIGFjdGlvblR5cGU6IEFjdGlvblR5cGUsXG4gICAgaW5kZXg/OiBudW1iZXJcbiAgKSB7XG4gICAgY29uc3QgcGF5bG9hZCA9IHsgYWN0aW9uVHlwZSwgZXhwb3J0SWQsIHNjaGVkdWxlOiBjbG9uZURlZXAoc2NoZWR1bGUpIH07XG4gICAgY29uc3QgbW9kYWxPcHRpb25zID0ge1xuICAgICAgY2xhc3M6ICdtb2RhbC1zbScsXG4gICAgICBhcmlhRGVzY3JpYmVkYnk6ICdtb2RhbC1ib2R5JyxcbiAgICAgIGFyaWFMYWJlbGxlZEJ5OiAnbW9kYWwtdGl0bGUnLFxuICAgICAgaW5pdGlhbFN0YXRlOiBwYXlsb2FkXG4gICAgfSBhcyBNb2RhbE9wdGlvbnM7XG4gICAgdGhpcy5tb2RhbFJlZiA9IHRoaXMuYnNNb2RhbFNlcnZpY2Uuc2hvdyhTY2hlZHVsZU1vZGFsQ29tcG9uZW50LCBtb2RhbE9wdGlvbnMpO1xuICAgIHRoaXMubW9kYWxSZWYuY29udGVudC5lbWl0dGVyLnN1YnNjcmliZSgobG9hZDogRW1pdHRlclBheWxvYWQpID0+XG4gICAgICB0aGlzLmdldE1lc3NhZ2VGcm9tTW9kYWwobG9hZCwgaW5kZXgpXG4gICAgKTtcbiAgfVxuXG4gIGdldE1lc3NhZ2VGcm9tTW9kYWwocGF5bG9hZDogRW1pdHRlclBheWxvYWQsIGluZGV4PzogbnVtYmVyKSB7XG4gICAgaWYgKHBheWxvYWQuc3VjY2Vzcykge1xuICAgICAgaWYgKGluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5zY2hlZHVsZUxpc3RbaW5kZXhdID0gcGF5bG9hZC5zY2hlZHVsZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2NoZWR1bGVMaXN0LnB1c2gocGF5bG9hZC5zY2hlZHVsZSk7XG4gICAgICB9XG4gICAgICB0aGlzLm9uU2NoZWR1bGVzVXBkYXRlLmVtaXQodGhpcy5zY2hlZHVsZUxpc3QpO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZVNjaGVkdWxlKHNjaGVkdWxlOiBTY2hlZHVsZSwgaW5kZXg6IG51bWJlciwgZXZlbnQ6IGFueSkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5zY2hlZHVsZUxpc3Quc3BsaWNlKGluZGV4LCAxKTtcbiAgICB0aGlzLm9uU2NoZWR1bGVzVXBkYXRlLmVtaXQodGhpcy5zY2hlZHVsZUxpc3QpO1xuICB9XG59XG4iLCI8ZGl2PlxuICA8ZGl2ICpuZ0lmPVwibG9hZGluZ1N0YXR1cy5pblByb2dyZXNzXCIgY2xhc3M9XCJkLWZsZXggYS1pLWNlbnRlclwiPlxuICAgIDxjOHktbG9hZGluZz48L2M4eS1sb2FkaW5nPlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPVwiIWxvYWRpbmdTdGF0dXMuaW5Qcm9ncmVzcyAmJiBsb2FkaW5nU3RhdHVzLmRvbmUgJiYgbG9hZGluZ1N0YXR1cy5lcnJvclwiPlxuICAgIDxkaXYgY2xhc3M9XCJhbGVydCBhbGVydC13YXJuaW5nIG1heC13aWR0aC0xMDBcIiB0cmFuc2xhdGU+Q291bGQgbm90IGxvYWQgc2NoZWR1bGVzIGxpc3QuPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCIhbG9hZGluZ1N0YXR1cy5pblByb2dyZXNzICYmICFsb2FkaW5nU3RhdHVzLmRvbmUgJiYgIWxvYWRpbmdTdGF0dXMuZXJyb3JcIj5cbiAgICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgICAqbmdJZj1cIiFzY2hlZHVsZUxpc3QubGVuZ3RoXCJcbiAgICAgIFtpY29uXT1cIidjOHktcmVwb3J0J1wiXG4gICAgICBbdGl0bGVdPVwiJ05vIGV4cG9ydCBzY2hlZHVsZXMgZGVmaW5lZC4nIHwgdHJhbnNsYXRlXCJcbiAgICAgIFtob3Jpem9udGFsXT1cInRydWVcIlxuICAgID48L2M4eS11aS1lbXB0eS1zdGF0ZT5cblxuICAgIDxkaXYgY2xhc3M9XCJjOHktbGlzdF9fZ3JvdXBcIiAqbmdJZj1cInNjaGVkdWxlTGlzdC5sZW5ndGhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjOHktbGlzdF9faXRlbSBoaWRkZW4teHNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImM4eS1saXN0X19pdGVtX19ibG9ja1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjOHktbGlzdF9faXRlbV9faWNvblwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJwLWwtMjRcIj48L2k+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImM4eS1saXN0X19pdGVtX19ib2R5XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAge3sgJ0Rlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTYgbS1yLTQwXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibS0wXCI+XG4gICAgICAgICAgICAgICAgICB7eyAnRnJlcXVlbmN5JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW0gcG9pbnRlclwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBzY2hlZHVsZSBvZiBzY2hlZHVsZUxpc3Q7IGluZGV4IGFzIGlcIlxuICAgICAgICAoY2xpY2spPVwiZWRpdFNjaGVkdWxlKHNjaGVkdWxlLCBpLCAkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImM4eS1saXN0X19pdGVtX19ibG9ja1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjOHktbGlzdF9faXRlbV9faWNvblwiPlxuICAgICAgICAgICAgPGkgYzh5SWNvbj1cImM4eS1yZXBvcnRcIiBjbGFzcz1cImM4eS1pY29uLWR1b2NvbG9yXCI+PC9pPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjOHktbGlzdF9faXRlbV9fYm9keSBkLWZsZXhcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNiBjb2wteHMtNlwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiIHRpdGxlPVwie3sgc2NoZWR1bGUuZW1haWxDb25maWcuc3ViamVjdCB9fVwiPlxuICAgICAgICAgICAgICAgIHt7IHNjaGVkdWxlLmVtYWlsQ29uZmlnLnN1YmplY3QgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNiBjb2wteHMtNlwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGEtaS1iYXNlbGluZVwiPlxuICAgICAgICAgICAgICAgIDxpIGM4eUljb249XCJjYWxlbmRhclwiIGNsYXNzPVwidGV4dC1tdXRlZCBtLXItNFwiPjwvaT5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNtYXJ0LXJ1bGUtaW5mb3JtYXRpb25cIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY3JvblNlcnZpY2UuZ2V0QmFzZShzY2hlZHVsZS5jcm9uQ29uZmlnKSA9PT0gMlwiXG4gICAgICAgICAgICAgICAgICAgIG5nTm9uQmluZGFibGVcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgIFt0cmFuc2xhdGVQYXJhbXNdPVwieyBtaW51dGVzOiBzY2hlZHVsZS5jcm9uQ29uZmlnLm1pbnV0ZSB8IG51bWJlcjogJzIuMC0wJyB9XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgSG91cmx5OiB7eyBtaW51dGVzIH19IG1pbnV0ZShzKSBwYXN0IHRoZSBob3VyLlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjcm9uU2VydmljZS5nZXRCYXNlKHNjaGVkdWxlLmNyb25Db25maWcpID09PSAzXCJcbiAgICAgICAgICAgICAgICAgICAgbmdOb25CaW5kYWJsZVxuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgW3RyYW5zbGF0ZVBhcmFtc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgaG91cjogc2NoZWR1bGUuY3JvbkNvbmZpZy5ob3VyIHwgbnVtYmVyOiAnMi4wLTAnLFxuICAgICAgICAgICAgICAgICAgICAgIG1pbnV0ZXM6IHNjaGVkdWxlLmNyb25Db25maWcubWludXRlIHwgbnVtYmVyOiAnMi4wLTAnXG4gICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBEYWlseTogYXQge3sgaG91ciB9fTp7eyBtaW51dGVzIH19LlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjcm9uU2VydmljZS5nZXRCYXNlKHNjaGVkdWxlLmNyb25Db25maWcpID09PSA0XCJcbiAgICAgICAgICAgICAgICAgICAgbmdOb25CaW5kYWJsZVxuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgW3RyYW5zbGF0ZVBhcmFtc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgd2Vla0RheTogY3JvblNlcnZpY2UuZ2V0V2Vla0RheU5hbWUoc2NoZWR1bGUuY3JvbkNvbmZpZyksXG4gICAgICAgICAgICAgICAgICAgICAgaG91cjogc2NoZWR1bGUuY3JvbkNvbmZpZy5ob3VyIHwgbnVtYmVyOiAnMi4wLTAnLFxuICAgICAgICAgICAgICAgICAgICAgIG1pbnV0ZXM6IHNjaGVkdWxlLmNyb25Db25maWcubWludXRlIHwgbnVtYmVyOiAnMi4wLTAnXG4gICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBXZWVrbHk6IHt7IHdlZWtEYXkgfX0sIGF0IHt7IGhvdXIgfX06e3sgbWludXRlcyB9fS5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY3JvblNlcnZpY2UuZ2V0QmFzZShzY2hlZHVsZS5jcm9uQ29uZmlnKSA9PT0gNVwiXG4gICAgICAgICAgICAgICAgICAgIG5nTm9uQmluZGFibGVcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgIFt0cmFuc2xhdGVQYXJhbXNdPVwie1xuICAgICAgICAgICAgICAgICAgICAgIG1vbnRoRGF5OiBjcm9uU2VydmljZS5nZXRNb250aERheU5hbWUoc2NoZWR1bGUuY3JvbkNvbmZpZyksXG4gICAgICAgICAgICAgICAgICAgICAgaG91cjogc2NoZWR1bGUuY3JvbkNvbmZpZy5ob3VyIHwgbnVtYmVyOiAnMi4wLTAnLFxuICAgICAgICAgICAgICAgICAgICAgIG1pbnV0ZXM6IHNjaGVkdWxlLmNyb25Db25maWcubWludXRlIHwgbnVtYmVyOiAnMi4wLTAnXG4gICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBNb250aGx5OiB7eyBtb250aERheSB9fSBkYXkgb2YgdGhlIG1vbnRoLCBhdCB7eyBob3VyIH19Ont7IG1pbnV0ZXMgfX0uXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNyb25TZXJ2aWNlLmdldEJhc2Uoc2NoZWR1bGUuY3JvbkNvbmZpZykgPT09IDZcIlxuICAgICAgICAgICAgICAgICAgICBuZ05vbkJpbmRhYmxlXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICBbdHJhbnNsYXRlUGFyYW1zXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICBtb250aDogY3JvblNlcnZpY2UuZ2V0TW9udGhOYW1lKHNjaGVkdWxlLmNyb25Db25maWcpLFxuICAgICAgICAgICAgICAgICAgICAgIG1vbnRoRGF5OiBjcm9uU2VydmljZS5nZXRNb250aERheU5hbWUoc2NoZWR1bGUuY3JvbkNvbmZpZyksXG4gICAgICAgICAgICAgICAgICAgICAgaG91cjogc2NoZWR1bGUuY3JvbkNvbmZpZy5ob3VyIHwgbnVtYmVyOiAnMi4wLTAnLFxuICAgICAgICAgICAgICAgICAgICAgIG1pbnV0ZXM6IHNjaGVkdWxlLmNyb25Db25maWcubWludXRlIHwgbnVtYmVyOiAnMi4wLTAnXG4gICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBZZWFybHk6IHt7IG1vbnRoIH19LCB7eyBtb250aERheSB9fSBkYXkgb2YgdGhlIG1vbnRoLCBhdCB7eyBob3VyIH19Ont7XG4gICAgICAgICAgICAgICAgICAgICAgbWludXRlc1xuICAgICAgICAgICAgICAgICAgICB9fS5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImM4eS1saXN0X19pdGVtX19hY3Rpb25zXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNldHRpbmdzIGRyb3Bkb3duXCIgZHJvcGRvd24+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLXRvZ2dsZSBjOHktZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FjdGlvbnMnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICBkcm9wZG93blRvZ2dsZVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGkgW2M4eUljb25dPVwiJ2VsbGlwc2lzLXYnXCI+PC9pPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPHVsIHJvbGU9XCJsaXN0XCIgY2xhc3M9XCJkcm9wZG93bi1tZW51IGRyb3Bkb3duLW1lbnUtcmlnaHRcIiAqZHJvcGRvd25NZW51PlxuICAgICAgICAgICAgICAgIDxsaSByb2xlPVwibWVudWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJoYXNSZXF1aXJlZFJvbGUgPyBidXR0b25MYWJlbHMuZWRpdCA6IGJ1dHRvbkxhYmVscy5lZGl0Tm9QZXJtaXNzaW9uXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImVkaXRTY2hlZHVsZShzY2hlZHVsZSwgaSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaGFzUmVxdWlyZWRSb2xlXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGkgW2M4eUljb25dPVwiJ3BlbmNpbCdcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdFZGl0JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8bGkgcm9sZT1cIm1lbnVpdGVtXCI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgaGFzUmVxdWlyZWRSb2xlID8gYnV0dG9uTGFiZWxzLmR1cGxpY2F0ZSA6IGJ1dHRvbkxhYmVscy5kdXBsaWNhdGVOb1Blcm1pc3Npb25cbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImR1cGxpY2F0ZVNjaGVkdWxlKHNjaGVkdWxlLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFoYXNSZXF1aXJlZFJvbGVcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8aSBbYzh5SWNvbl09XCInY29weSdcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdEdXBsaWNhdGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDxsaSByb2xlPVwibWVudWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICBoYXNSZXF1aXJlZFJvbGUgPyBidXR0b25MYWJlbHMuZGVsZXRlIDogYnV0dG9uTGFiZWxzLmRlbGV0ZU5vUGVybWlzc2lvblxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlU2NoZWR1bGUoc2NoZWR1bGUsIGksICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWhhc1JlcXVpcmVkUm9sZVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpIFtjOHlJY29uXT1cIidkZWxldGUnXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICB7eyAnRGVsZXRlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LXdhcm5pbmcgbWF4LXdpZHRoLTEwMFwiICpuZ0lmPVwiIWhhc1JlcXVpcmVkUm9sZVwiIHJvbGU9XCJhbGVydFwiIHRyYW5zbGF0ZT5cbiAgICBZb3UgZG9uJ3QgaGF2ZSB0aGUgcGVybWlzc2lvbiByZXF1aXJlZCB0byBzY2hlZHVsZSBleHBvcnRzLlxuICA8L2Rpdj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IG0tdC0xNlwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgdGl0bGU9XCJ7eyAnQWRkIHNjaGVkdWxlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgKGNsaWNrKT1cImFkZFNjaGVkdWxlKClcIlxuICAgIFtkaXNhYmxlZF09XCIhaGFzUmVxdWlyZWRSb2xlXCJcbiAgPlxuICAgIDxpIFtjOHlJY29uXT1cIidwbHVzLWNpcmNsZSdcIj48L2k+XG4gICAge3sgJ0FkZCBzY2hlZHVsZScgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
@@ -7,7 +7,7 @@ import { saveAs } from 'file-saver';
7
7
  import { BsModalService } from 'ngx-bootstrap/modal';
8
8
  import { SaveToRepositoryComponent } from './save-to-repository.component';
9
9
  import { cloneDeep } from 'lodash-es';
10
- import { AlertService, AppStateService, OperationRealtimeService } from '@c8y/ngx-components';
10
+ import { AlertService, AppStateService, OperationRealtimeService, Permissions } from '@c8y/ngx-components';
11
11
  import * as i0 from "@angular/core";
12
12
  import * as i1 from "./device-configuration.service";
13
13
  import * as i2 from "@c8y/ngx-components";
@@ -141,8 +141,8 @@ export class ConfigurationPreviewComponent {
141
141
  }
142
142
  hasPermission() {
143
143
  return this.user.hasAnyRole(this.appState.currentUser.value, [
144
- 'ROLE_INVENTORY_ADMIN',
145
- 'ROLE_INVENTORY_CREATE'
144
+ Permissions.ROLE_INVENTORY_ADMIN,
145
+ Permissions.ROLE_INVENTORY_CREATE
146
146
  ]);
147
147
  }
148
148
  ngOnDestroy() {
@@ -179,4 +179,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
179
179
  }], operationToTrigger: [{
180
180
  type: Input
181
181
  }] } });
182
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi1wcmV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3JlcG9zaXRvcnkvY29uZmlndXJhdGlvbi9kZXZpY2UtdGFiL2NvbmZpZ3VyYXRpb24tcHJldmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9yZXBvc2l0b3J5L2NvbmZpZ3VyYXRpb24vZGV2aWNlLXRhYi9jb25maWd1cmF0aW9uLXByZXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFFTCw0QkFBNEIsRUFDNUIsaUJBQWlCLEVBQ2xCLE1BQU0sdUNBQXVDLENBQUM7QUFDL0MsT0FBTyxFQUdMLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsV0FBVyxFQUNaLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTVFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7Ozs7QUFNOUYsTUFBTSxPQUFPLDZCQUE2QjtJQXdCeEMsWUFDVSwwQkFBc0QsRUFDdEQsaUJBQTJDLEVBQzNDLE9BQXVCLEVBQ3ZCLElBQWlCLEVBQ2pCLFFBQXlCLEVBQ3pCLGlCQUFvQyxFQUNwQyxnQkFBa0MsRUFDbEMsWUFBMEI7UUFQMUIsK0JBQTBCLEdBQTFCLDBCQUEwQixDQUE0QjtRQUN0RCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQTBCO1FBQzNDLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBbkIzQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBTTFCLGtCQUFhLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLGlDQUE0QixHQUFHLDRCQUE0QixDQUFDO0lBYXpELENBQUM7SUEvQkosSUFBYSxpQkFBaUIsQ0FBQyxJQUFZO1FBQ3pDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDakMsQ0FBQztJQTJCRCxLQUFLLENBQUMsUUFBUTtRQUNaLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxpQkFBaUI7YUFDakQsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2FBQ3RCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFrQixDQUFDLENBQUM7YUFDM0MsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsS0FBSyxDQUFDLFlBQVksQ0FBQyxVQUFVO1FBQzNCLE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLDBCQUEwQixDQUMzRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFDZCxJQUFJLENBQUMsa0JBQWtCLENBQ3hCLENBQUM7UUFFRixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUTtZQUM3QixDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDNUYsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQyxDQUFDO1FBRTlFLElBQUksQ0FBQyxTQUFTO1lBQ1osU0FBUyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDekYsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLHdCQUF3QixDQUMzRSxJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxrQkFBa0IsQ0FDeEIsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMscUJBQXFCO1FBQ3pCLElBQUksWUFBWSxDQUFDO1FBQ2pCLElBQUksSUFBSSxDQUFDLGtCQUFrQixLQUFLLDRCQUE0QixDQUFDLGVBQWUsRUFBRTtZQUM1RSxZQUFZLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHFDQUFxQyxDQUN6RSxJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxrQkFBa0IsRUFDdkIsSUFBSSxDQUFDLGNBQWMsRUFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FDZCxDQUFDO1NBQ0g7UUFDRCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsS0FBSyw0QkFBNEIsQ0FBQyxhQUFhLEVBQUU7WUFDMUUsWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxtQ0FBbUMsQ0FDdkUsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLENBQUMsa0JBQWtCLEVBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQ2QsQ0FBQztTQUNIO1FBQ0QsSUFBSTtZQUNGLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7U0FDMUU7UUFBQyxPQUFPLEVBQUUsRUFBRTtZQUNYLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDeEM7SUFDSCxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksSUFBSSxDQUFDLGtCQUFrQixLQUFLLDRCQUE0QixDQUFDLGVBQWUsRUFBRTtZQUM1RSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQ3pCO1FBQ0QsT0FBTyxDQUNMLElBQUksQ0FBQyxTQUFTO1lBQ2QsQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxTQUFTLEVBQUUsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FDbkYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQ3RCLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEtBQUssNEJBQTRCLENBQUMsZUFBZSxFQUFFO1lBQzVFLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCx5QkFBeUI7UUFDdkIsT0FBTyxDQUNMLElBQUksQ0FBQyxTQUFTO1lBQ2QsQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FDckYsQ0FBQztJQUNKLENBQUM7SUFFRCxhQUFhLENBQUMsU0FBcUI7UUFDakMsSUFDRSxTQUFTO1lBQ1QsU0FBUyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztZQUNsQyxDQUFDLElBQUksQ0FBQyxRQUFRO2dCQUNaLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLElBQUk7b0JBQ3RDLFNBQVMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFDeEU7WUFDQSxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztZQUMzQixJQUFJLENBQUMsNkJBQTZCLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDL0M7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDOUYsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7UUFDeEMsUUFBUSxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRTtZQUN0QyxLQUFLLFVBQVUsQ0FBQztZQUNoQixLQUFLLGlCQUFpQjtnQkFDcEIsUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ25DLE1BQU07WUFDUixLQUFLLFdBQVcsQ0FBQztZQUNqQixLQUFLLG9CQUFvQjtnQkFDdkIsUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3BDLE1BQU07WUFDUixLQUFLLGtCQUFrQjtnQkFDckIsUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3BDLE1BQU07U0FDVDtRQUNELE1BQU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELEtBQUssQ0FBQyxnQkFBZ0I7UUFDcEIsTUFBTSxZQUFZLEdBQUc7WUFDbkIsY0FBYyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO1NBQy9DLENBQUM7UUFDRixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRTtZQUN6RCxLQUFLLEVBQUUsVUFBVTtZQUNqQixlQUFlLEVBQUUsWUFBWTtZQUM3QixjQUFjLEVBQUUsYUFBYTtZQUM3QixZQUFZO1lBQ1osbUJBQW1CLEVBQUUsSUFBSTtTQUMxQixDQUFDLENBQUMsT0FBb0MsQ0FBQztRQUN4QyxJQUFJO1lBQ0YsTUFBTSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ25CLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzRCxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDZjtRQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ1gsYUFBYTtTQUNkO0lBQ0gsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRTtZQUMzRCxzQkFBc0I7WUFDdEIsdUJBQXVCO1NBQ3hCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDL0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQzNDO0lBQ0gsQ0FBQztJQUVPLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxTQUFTO1FBQ25ELElBQ0UsU0FBUyxDQUFDLDRCQUE0QixDQUFDLGFBQWEsQ0FBQztZQUNyRCxTQUFTLENBQUMsTUFBTSxLQUFLLGVBQWUsQ0FBQyxVQUFVLEVBQy9DO1lBQ0EsSUFBSSxDQUFDLDBCQUEwQixDQUFDLG9CQUFvQixFQUFFLENBQUM7U0FDeEQ7SUFDSCxDQUFDOzswSEE3TFUsNkJBQTZCOzhHQUE3Qiw2QkFBNkIsZ1dDMUIxQyxrN0VBMEVBOzJGRGhEYSw2QkFBNkI7a0JBSnpDLFNBQVM7K0JBQ0Usa0NBQWtDO3VVQUluQyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ08saUJBQWlCO3NCQUE3QixLQUFLO2dCQU9HLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbmZpZ3VyYXRpb25TbmFwc2hvdCxcbiAgRGV2aWNlQ29uZmlndXJhdGlvbk9wZXJhdGlvbixcbiAgUmVwb3NpdG9yeVNlcnZpY2Vcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9yZXBvc2l0b3J5L3NoYXJlZCc7XG5pbXBvcnQge1xuICBJTWFuYWdlZE9iamVjdCxcbiAgSU9wZXJhdGlvbixcbiAgT3BlcmF0aW9uU2VydmljZSxcbiAgT3BlcmF0aW9uU3RhdHVzLFxuICBVc2VyU2VydmljZVxufSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBEZXZpY2VDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4vZGV2aWNlLWNvbmZpZ3VyYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IHNhdmVBcyB9IGZyb20gJ2ZpbGUtc2F2ZXInO1xuaW1wb3J0IHsgQnNNb2RhbFNlcnZpY2UgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7IFNhdmVUb1JlcG9zaXRvcnlDb21wb25lbnQgfSBmcm9tICcuL3NhdmUtdG8tcmVwb3NpdG9yeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSwgQXBwU3RhdGVTZXJ2aWNlLCBPcGVyYXRpb25SZWFsdGltZVNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWRldmljZS1jb25maWd1cmF0aW9uLXByZXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29uZmlndXJhdGlvbi1wcmV2aWV3LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBDb25maWd1cmF0aW9uUHJldmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgZGV2aWNlOiBJTWFuYWdlZE9iamVjdDtcbiAgQElucHV0KCkgc2V0IGNvbmZpZ3VyYXRpb25UeXBlKHR5cGU6IHN0cmluZykge1xuICAgIHRoaXMuX2NvbmZpZ3VyYXRpb25UeXBlID0gdHlwZTtcbiAgICB0aGlzLnNldE9wZXJhdGlvbih0eXBlKTtcbiAgfVxuICBnZXQgY29uZmlndXJhdGlvblR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fY29uZmlndXJhdGlvblR5cGU7XG4gIH1cbiAgQElucHV0KCkgY29uZmlnU25hcHNob3Q6IENvbmZpZ3VyYXRpb25TbmFwc2hvdDtcbiAgQElucHV0KCkgY2FuU2F2ZVNuYXBzaG90OiBib29sZWFuO1xuICBASW5wdXQoKSBhY3Rpb25CdXR0b25UZXh0OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGFjdGlvbkJ1dHRvbkljb246IHN0cmluZztcbiAgQElucHV0KCkgaXNMZWdhY3kgPSBmYWxzZTtcbiAgQElucHV0KCkgb3BlcmF0aW9uVG9UcmlnZ2VyOlxuICAgIHwgRGV2aWNlQ29uZmlndXJhdGlvbk9wZXJhdGlvbi5VUExPQURfQ09ORklHXG4gICAgfCBEZXZpY2VDb25maWd1cmF0aW9uT3BlcmF0aW9uLkRPV05MT0FEX0NPTkZJRztcblxuICBvcGVyYXRpb246IElPcGVyYXRpb247XG4gIGNhbkNhbGxBY3Rpb24gPSB0cnVlO1xuICBkZXZpY2VDb25maWd1cmF0aW9uT3BlcmF0aW9uID0gRGV2aWNlQ29uZmlndXJhdGlvbk9wZXJhdGlvbjtcbiAgcHJpdmF0ZSBfY29uZmlndXJhdGlvblR5cGU6IHN0cmluZztcbiAgcHJpdmF0ZSBvcGVyYXRpb25zU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkZXZpY2VDb25maWd1cmF0aW9uU2VydmljZTogRGV2aWNlQ29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvcGVyYXRpb25SZWFsdGltZTogT3BlcmF0aW9uUmVhbHRpbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgYnNNb2RhbDogQnNNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIGFwcFN0YXRlOiBBcHBTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZXBvc2l0b3J5U2VydmljZTogUmVwb3NpdG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvcGVyYXRpb25TZXJ2aWNlOiBPcGVyYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc2V0Q2FuQ2FsbEFjdGlvbigpO1xuICAgIHRoaXMuc2V0T3BlcmF0aW9uKHRoaXMuX2NvbmZpZ3VyYXRpb25UeXBlKTtcbiAgICB0aGlzLm9wZXJhdGlvbnNTdWJzY3JpcHRpb24gPSB0aGlzLm9wZXJhdGlvblJlYWx0aW1lXG4gICAgICAub25BbGwkKHRoaXMuZGV2aWNlLmlkKVxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSBhcyBJT3BlcmF0aW9uKSlcbiAgICAgIC5zdWJzY3JpYmUob3BlcmF0aW9uID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVQcmV2aWV3KG9wZXJhdGlvbik7XG4gICAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHNldE9wZXJhdGlvbihjb25maWdUeXBlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgb3BlcmF0aW9uTGlzdCA9IGF3YWl0IHRoaXMucmVwb3NpdG9yeVNlcnZpY2UuZ2V0Q29uZmlnRmlsZU9wZXJhdGlvbkxpc3QoXG4gICAgICB0aGlzLmRldmljZS5pZCxcbiAgICAgIHRoaXMub3BlcmF0aW9uVG9UcmlnZ2VyXG4gICAgKTtcblxuICAgIGNvbnN0IG9wZXJhdGlvbiA9IHRoaXMuaXNMZWdhY3lcbiAgICAgID8gb3BlcmF0aW9uTGlzdC5maW5kKG9wID0+IG9wW3RoaXMub3BlcmF0aW9uVG9UcmlnZ2VyXSAmJiAhb3BbdGhpcy5vcGVyYXRpb25Ub1RyaWdnZXJdLnR5cGUpXG4gICAgICA6IG9wZXJhdGlvbkxpc3QuZmluZChvcCA9PiBvcFt0aGlzLm9wZXJhdGlvblRvVHJpZ2dlcl0udHlwZSA9PT0gY29uZmlnVHlwZSk7XG5cbiAgICB0aGlzLm9wZXJhdGlvbiA9XG4gICAgICBvcGVyYXRpb24gJiYgb3BlcmF0aW9uLnN0YXR1cyAhPT0gT3BlcmF0aW9uU3RhdHVzLlNVQ0NFU1NGVUwgPyBvcGVyYXRpb24gOiB1bmRlZmluZWQ7XG4gIH1cblxuICBzZXRDYW5DYWxsQWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuY2FuQ2FsbEFjdGlvbiA9IHRoaXMuZGV2aWNlQ29uZmlndXJhdGlvblNlcnZpY2UuaGFzQW55U3VwcG9ydGVkT3BlcmF0aW9uKFxuICAgICAgdGhpcy5kZXZpY2UsXG4gICAgICB0aGlzLm9wZXJhdGlvblRvVHJpZ2dlclxuICAgICk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVEZXZpY2VPcGVyYXRpb24oKSB7XG4gICAgbGV0IG9wZXJhdGlvbkNmZztcbiAgICBpZiAodGhpcy5vcGVyYXRpb25Ub1RyaWdnZXIgPT09IERldmljZUNvbmZpZ3VyYXRpb25PcGVyYXRpb24uRE9XTkxPQURfQ09ORklHKSB7XG4gICAgICBvcGVyYXRpb25DZmcgPSB0aGlzLnJlcG9zaXRvcnlTZXJ2aWNlLmdldERvd25sb2FkQ29uZmlndXJhdGlvbkZpbGVPcGVyYXRpb24oXG4gICAgICAgIHRoaXMuZGV2aWNlLFxuICAgICAgICB0aGlzLl9jb25maWd1cmF0aW9uVHlwZSxcbiAgICAgICAgdGhpcy5jb25maWdTbmFwc2hvdCxcbiAgICAgICAgdGhpcy5pc0xlZ2FjeVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3BlcmF0aW9uVG9UcmlnZ2VyID09PSBEZXZpY2VDb25maWd1cmF0aW9uT3BlcmF0aW9uLlVQTE9BRF9DT05GSUcpIHtcbiAgICAgIG9wZXJhdGlvbkNmZyA9IHRoaXMucmVwb3NpdG9yeVNlcnZpY2UuZ2V0VXBsb2FkQ29uZmlndXJhdGlvbkZpbGVPcGVyYXRpb24oXG4gICAgICAgIHRoaXMuZGV2aWNlLFxuICAgICAgICB0aGlzLl9jb25maWd1cmF0aW9uVHlwZSxcbiAgICAgICAgdGhpcy5pc0xlZ2FjeVxuICAgICAgKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMub3BlcmF0aW9uID0gKGF3YWl0IHRoaXMub3BlcmF0aW9uU2VydmljZS5jcmVhdGUob3BlcmF0aW9uQ2ZnKSkuZGF0YTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShleCk7XG4gICAgfVxuICB9XG5cbiAgc2hvd09wZXJhdGlvbigpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5vcGVyYXRpb25Ub1RyaWdnZXIgPT09IERldmljZUNvbmZpZ3VyYXRpb25PcGVyYXRpb24uRE9XTkxPQURfQ09ORklHKSB7XG4gICAgICByZXR1cm4gISF0aGlzLm9wZXJhdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMub3BlcmF0aW9uICYmXG4gICAgICBbT3BlcmF0aW9uU3RhdHVzLlBFTkRJTkcsIE9wZXJhdGlvblN0YXR1cy5FWEVDVVRJTkcsIE9wZXJhdGlvblN0YXR1cy5GQUlMRURdLmluY2x1ZGVzKFxuICAgICAgICB0aGlzLm9wZXJhdGlvbi5zdGF0dXNcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgc2hvd0JpbmFyeSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5vcGVyYXRpb25Ub1RyaWdnZXIgPT09IERldmljZUNvbmZpZ3VyYXRpb25PcGVyYXRpb24uRE9XTkxPQURfQ09ORklHKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuICF0aGlzLnNob3dPcGVyYXRpb24oKTtcbiAgfVxuXG4gIGlzQ3JlYXRlT3BlcmF0aW9uRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMub3BlcmF0aW9uICYmXG4gICAgICBbT3BlcmF0aW9uU3RhdHVzLlBFTkRJTkcsIE9wZXJhdGlvblN0YXR1cy5FWEVDVVRJTkddLmluY2x1ZGVzKHRoaXMub3BlcmF0aW9uLnN0YXR1cylcbiAgICApO1xuICB9XG5cbiAgdXBkYXRlUHJldmlldyhvcGVyYXRpb246IElPcGVyYXRpb24pIHtcbiAgICBpZiAoXG4gICAgICBvcGVyYXRpb24gJiZcbiAgICAgIG9wZXJhdGlvblt0aGlzLm9wZXJhdGlvblRvVHJpZ2dlcl0gJiZcbiAgICAgICh0aGlzLmlzTGVnYWN5IHx8XG4gICAgICAgIChvcGVyYXRpb25bdGhpcy5vcGVyYXRpb25Ub1RyaWdnZXJdLnR5cGUgJiZcbiAgICAgICAgICBvcGVyYXRpb25bdGhpcy5vcGVyYXRpb25Ub1RyaWdnZXJdLnR5cGUgPT09IHRoaXMuY29uZmlndXJhdGlvblR5cGUpKVxuICAgICkge1xuICAgICAgdGhpcy5vcGVyYXRpb24gPSBvcGVyYXRpb247XG4gICAgICB0aGlzLnVwZGF0ZVNuYXBzaG90c09uQ29uZmlnVXBsb2FkKG9wZXJhdGlvbik7XG4gICAgfVxuICB9XG5cbiAgZG93bmxvYWQoKSB7XG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFt0aGlzLmNvbmZpZ1NuYXBzaG90LmJpbmFyeV0sIHsgdHlwZTogdGhpcy5jb25maWdTbmFwc2hvdC5iaW5hcnlUeXBlIH0pO1xuICAgIGxldCBmaWxlTmFtZSA9IHRoaXMuY29uZmlnU25hcHNob3QubmFtZTtcbiAgICBzd2l0Y2ggKHRoaXMuY29uZmlnU25hcHNob3QuYmluYXJ5VHlwZSkge1xuICAgICAgY2FzZSAndGV4dC9jc3YnOlxuICAgICAgY2FzZSAnYXBwbGljYXRpb24vY3N2JzpcbiAgICAgICAgZmlsZU5hbWUgPSBmaWxlTmFtZS5jb25jYXQoJy5jc3YnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0ZXh0L3lhbWwnOlxuICAgICAgY2FzZSAnYXBwbGljYXRpb24veC15YW1sJzpcbiAgICAgICAgZmlsZU5hbWUgPSBmaWxlTmFtZS5jb25jYXQoJy55YW1sJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYXBwbGljYXRpb24vanNvbic6XG4gICAgICAgIGZpbGVOYW1lID0gZmlsZU5hbWUuY29uY2F0KCcuanNvbicpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgc2F2ZUFzKGJsb2IsIGZpbGVOYW1lKTtcbiAgfVxuXG4gIGFzeW5jIHNhdmVUb1JlcG9zaXRvcnkoKSB7XG4gICAgY29uc3QgaW5pdGlhbFN0YXRlID0ge1xuICAgICAgY29uZmlnU25hcHNob3Q6IGNsb25lRGVlcCh0aGlzLmNvbmZpZ1NuYXBzaG90KVxuICAgIH07XG4gICAgY29uc3QgbW9kYWwgPSB0aGlzLmJzTW9kYWwuc2hvdyhTYXZlVG9SZXBvc2l0b3J5Q29tcG9uZW50LCB7XG4gICAgICBjbGFzczogJ21vZGFsLXNtJyxcbiAgICAgIGFyaWFEZXNjcmliZWRieTogJ21vZGFsLWJvZHknLFxuICAgICAgYXJpYUxhYmVsbGVkQnk6ICdtb2RhbC10aXRsZScsXG4gICAgICBpbml0aWFsU3RhdGUsXG4gICAgICBpZ25vcmVCYWNrZHJvcENsaWNrOiB0cnVlXG4gICAgfSkuY29udGVudCBhcyBTYXZlVG9SZXBvc2l0b3J5Q29tcG9uZW50O1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBtb2RhbC5yZXN1bHQ7XG4gICAgICB0aGlzLmRldmljZUNvbmZpZ3VyYXRpb25TZXJ2aWNlLnVwZGF0ZUNvbmZpZ3VyYXRpb25zKHRydWUpO1xuICAgICAgbW9kYWwuY2xvc2UoKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgLy8gZG8gbm90aGluZ1xuICAgIH1cbiAgfVxuXG4gIGhhc1Blcm1pc3Npb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudXNlci5oYXNBbnlSb2xlKHRoaXMuYXBwU3RhdGUuY3VycmVudFVzZXIudmFsdWUsIFtcbiAgICAgICdST0xFX0lOVkVOVE9SWV9BRE1JTicsXG4gICAgICAnUk9MRV9JTlZFTlRPUllfQ1JFQVRFJ1xuICAgIF0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMub3BlcmF0aW9uc1N1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5vcGVyYXRpb25zU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVTbmFwc2hvdHNPbkNvbmZpZ1VwbG9hZChvcGVyYXRpb24pIHtcbiAgICBpZiAoXG4gICAgICBvcGVyYXRpb25bRGV2aWNlQ29uZmlndXJhdGlvbk9wZXJhdGlvbi5VUExPQURfQ09ORklHXSAmJlxuICAgICAgb3BlcmF0aW9uLnN0YXR1cyA9PT0gT3BlcmF0aW9uU3RhdHVzLlNVQ0NFU1NGVUxcbiAgICApIHtcbiAgICAgIHRoaXMuZGV2aWNlQ29uZmlndXJhdGlvblNlcnZpY2UudXBkYXRlQ29uZmlndXJhdGlvbnMoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb250ZW50LWZsZXgtNTUgcC1iLTE2XCI+XG4gIDxkaXYgY2xhc3M9XCJjb2wtNyBwLXQtNFwiPlxuICAgIDxwPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWxhYmVsLXNtYWxsIHRleHQtdXBwZXJjYXNlIG0tci00XCIgdHJhbnNsYXRlPkNvbmZpZ3VyYXRpb248L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cImNvbmZpZ1NuYXBzaG90Py5uYW1lOyBlbHNlIGVtcHR5VGV4dFwiPlxuICAgICAgICA8c3Ryb25nPnt7IGNvbmZpZ1NuYXBzaG90Lm5hbWUgfX08L3N0cm9uZz5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZW1wdHlUZXh0Pi0tLTwvbmctdGVtcGxhdGU+XG4gICAgPC9wPlxuICAgIDxwPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWxhYmVsLXNtYWxsIHRleHQtdXBwZXJjYXNlIG0tci00XCIgdHJhbnNsYXRlPkxhc3QgdXBkYXRlZDwvc3Bhbj5cbiAgICAgIDxzbWFsbCAqbmdJZj1cImNvbmZpZ1NuYXBzaG90Py50aW1lOyBlbHNlIGVtcHR5RGF0ZVwiPlxuICAgICAgICB7eyBjb25maWdTbmFwc2hvdC50aW1lIHwgYzh5RGF0ZSB9fVxuICAgICAgPC9zbWFsbD5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZW1wdHlEYXRlPi0tLTwvbmctdGVtcGxhdGU+XG4gICAgPC9wPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNvbC01XCI+XG4gICAgPGJ1dHRvblxuICAgICAgaWQ9XCJhY3Rpb24tYnRuXCJcbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zbSBwdWxsLXJpZ2h0XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgdGl0bGU9XCJ7eyBhY3Rpb25CdXR0b25UZXh0IHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIChjbGljayk9XCJjcmVhdGVEZXZpY2VPcGVyYXRpb24oKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiaXNDcmVhdGVPcGVyYXRpb25EaXNhYmxlZCgpXCJcbiAgICAgICpuZ0lmPVwiY2FuQ2FsbEFjdGlvblwiXG4gICAgPlxuICAgICAgPGkgW2M4eUljb25dPVwiYWN0aW9uQnV0dG9uSWNvblwiPjwvaT5cbiAgICAgIHt7IGFjdGlvbkJ1dHRvblRleHQgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJjOHktZW1wdHktc3RhdGUgdGV4dC1sZWZ0XCIgKm5nSWY9XCIhY29uZmlnU25hcHNob3Q/LmJpbmFyeSAmJiBzaG93QmluYXJ5KClcIj5cbiAgPGgxIFtjOHlJY29uXT1cIidmaWxlLWltYWdlLW8nXCI+PC9oMT5cbiAgPHA+XG4gICAgPHN0cm9uZyB0cmFuc2xhdGU+Tm8gcHJldmlldyBhdmFpbGFibGUuPC9zdHJvbmc+XG4gICAgPGJyIC8+XG4gICAgPHNtYWxsICpuZ0lmPVwiY29uZmlnU25hcHNob3Q/LmJpbmFyeSAhPT0gJyc7IGVsc2UgZW1wdHlGaWxlXCIgdHJhbnNsYXRlPlxuICAgICAgVGhlIGZpbGUgaXMgbm90IGF2YWlsYWJsZS5cbiAgICA8L3NtYWxsPlxuICAgIDxuZy10ZW1wbGF0ZSAjZW1wdHlGaWxlPlxuICAgICAgPHNtYWxsIHRyYW5zbGF0ZT5UaGUgZmlsZSBpcyBlbXB0eS48L3NtYWxsPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvcD5cbjwvZGl2PlxuPGRpdiAqbmdJZj1cImNvbmZpZ1NuYXBzaG90Py5iaW5hcnkgJiYgc2hvd0JpbmFyeSgpXCIgY2xhc3M9XCJmbGV4LWdyb3cgZC1mbGV4IGQtY29sXCI+XG4gIDxjOHktc291cmNlLWNvZGUtcHJldmlld1xuICAgIFt0ZXh0XT1cImNvbmZpZ1NuYXBzaG90LmJpbmFyeVwiXG4gICAgW2lzRGlzYWJsZWRdPVwidHJ1ZVwiXG4gICAgY2xhc3M9XCJkLWNvbnRlbnRzXCJcbiAgPjwvYzh5LXNvdXJjZS1jb2RlLXByZXZpZXc+XG4gIDxkaXYgKm5nSWY9XCJjYW5TYXZlU25hcHNob3RcIiBjbGFzcz1cInAtdC0xNlwiPlxuICAgIDxidXR0b25cbiAgICAgIHRpdGxlPVwie3sgJ0Rvd25sb2FkJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBwdWxsLXJpZ2h0IG0tbC04XCJcbiAgICAgIChjbGljayk9XCJkb3dubG9hZCgpXCJcbiAgICA+XG4gICAgICB7eyAnRG93bmxvYWQnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgdGl0bGU9XCJ7eyAnU2F2ZSB0byByZXBvc2l0b3J5JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAqbmdJZj1cImhhc1Blcm1pc3Npb24oKVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zbSBwdWxsLXJpZ2h0XCJcbiAgICAgIChjbGljayk9XCJzYXZlVG9SZXBvc2l0b3J5KClcIlxuICAgID5cbiAgICAgIHt7ICdTYXZlIHRvIHJlcG9zaXRvcnknIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2ICpuZ0lmPVwic2hvd09wZXJhdGlvbigpXCI+XG4gIDxjOHktb3BlcmF0aW9uLWRldGFpbHMgW29wZXJhdGlvbl09XCJvcGVyYXRpb25cIj48L2M4eS1vcGVyYXRpb24tZGV0YWlscz5cbjwvZGl2PlxuIl19
182
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi1wcmV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3JlcG9zaXRvcnkvY29uZmlndXJhdGlvbi9kZXZpY2UtdGFiL2NvbmZpZ3VyYXRpb24tcHJldmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9yZXBvc2l0b3J5L2NvbmZpZ3VyYXRpb24vZGV2aWNlLXRhYi9jb25maWd1cmF0aW9uLXByZXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFFTCw0QkFBNEIsRUFDNUIsaUJBQWlCLEVBQ2xCLE1BQU0sdUNBQXVDLENBQUM7QUFDL0MsT0FBTyxFQUdMLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsV0FBVyxFQUNaLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTVFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sRUFDTCxZQUFZLEVBQ1osZUFBZSxFQUNmLHdCQUF3QixFQUN4QixXQUFXLEVBQ1osTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7OztBQU03QixNQUFNLE9BQU8sNkJBQTZCO0lBMkJ4QyxZQUNVLDBCQUFzRCxFQUN0RCxpQkFBMkMsRUFDM0MsT0FBdUIsRUFDdkIsSUFBaUIsRUFDakIsUUFBeUIsRUFDekIs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QVMsQ0FBQyw0QkFBNEIsQ0FBQyxhQUFhLENBQUM7WUFDckQsU0FBUyxDQUFDLE1BQU0sS0FBSyxlQUFlLENBQUMsVUFBVSxFQUMvQztZQUNBLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1NBQ3hEO0lBQ0gsQ0FBQzs7MEhBaE1VLDZCQUE2Qjs4R0FBN0IsNkJBQTZCLGdXQy9CMUMsazdFQTBFQTsyRkQzQ2EsNkJBQTZCO2tCQUp6QyxTQUFTOytCQUNFLGtDQUFrQzt1VUFJbkMsTUFBTTtzQkFBZCxLQUFLO2dCQUVPLGlCQUFpQjtzQkFBN0IsS0FBSztnQkFTRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb25maWd1cmF0aW9uU25hcHNob3QsXG4gIERldmljZUNvbmZpZ3VyYXRpb25PcGVyYXRpb24sXG4gIFJlcG9zaXRvcnlTZXJ2aWNlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvcmVwb3NpdG9yeS9zaGFyZWQnO1xuaW1wb3J0IHtcbiAgSU1hbmFnZWRPYmplY3QsXG4gIElPcGVyYXRpb24sXG4gIE9wZXJhdGlvblNlcnZpY2UsXG4gIE9wZXJhdGlvblN0YXR1cyxcbiAgVXNlclNlcnZpY2Vcbn0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgRGV2aWNlQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuL2RldmljZS1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBzYXZlQXMgfSBmcm9tICdmaWxlLXNhdmVyJztcbmltcG9ydCB7IEJzTW9kYWxTZXJ2aWNlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBTYXZlVG9SZXBvc2l0b3J5Q29tcG9uZW50IH0gZnJvbSAnLi9zYXZlLXRvLXJlcG9zaXRvcnkuY29tcG9uZW50JztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQge1xuICBBbGVydFNlcnZpY2UsXG4gIEFwcFN0YXRlU2VydmljZSxcbiAgT3BlcmF0aW9uUmVhbHRpbWVTZXJ2aWNlLFxuICBQZXJtaXNzaW9uc1xufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWRldmljZS1jb25maWd1cmF0aW9uLXByZXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29uZmlndXJhdGlvbi1wcmV2aWV3LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBDb25maWd1cmF0aW9uUHJldmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgZGV2aWNlOiBJTWFuYWdlZE9iamVjdDtcblxuICBASW5wdXQoKSBzZXQgY29uZmlndXJhdGlvblR5cGUodHlwZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fY29uZmlndXJhdGlvblR5cGUgPSB0eXBlO1xuICAgIHRoaXMuc2V0T3BlcmF0aW9uKHR5cGUpO1xuICB9XG5cbiAgZ2V0IGNvbmZpZ3VyYXRpb25UeXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZ3VyYXRpb25UeXBlO1xuICB9XG5cbiAgQElucHV0KCkgY29uZmlnU25hcHNob3Q6IENvbmZpZ3VyYXRpb25TbmFwc2hvdDtcbiAgQElucHV0KCkgY2FuU2F2ZVNuYXBzaG90OiBib29sZWFuO1xuICBASW5wdXQoKSBhY3Rpb25CdXR0b25UZXh0OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGFjdGlvbkJ1dHRvbkljb246IHN0cmluZztcbiAgQElucHV0KCkgaXNMZWdhY3kgPSBmYWxzZTtcbiAgQElucHV0KCkgb3BlcmF0aW9uVG9UcmlnZ2VyOlxuICAgIHwgRGV2aWNlQ29uZmlndXJhdGlvbk9wZXJhdGlvbi5VUExPQURfQ09ORklHXG4gICAgfCBEZXZpY2VDb25maWd1cmF0aW9uT3BlcmF0aW9uLkRPV05MT0FEX0NPTkZJRztcblxuICBvcGVyYXRpb246IElPcGVyYXRpb247XG4gIGNhbkNhbGxBY3Rpb24gPSB0cnVlO1xuICBkZXZpY2VDb25maWd1cmF0aW9uT3BlcmF0aW9uID0gRGV2aWNlQ29uZmlndXJhdGlvbk9wZXJhdGlvbjtcbiAgcHJpdmF0ZSBfY29uZmlndXJhdGlvblR5cGU6IHN0cmluZztcbiAgcHJpdmF0ZSBvcGVyYXRpb25zU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkZXZpY2VDb25maWd1cmF0aW9uU2VydmljZTogRGV2aWNlQ29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvcGVyYXRpb25SZWFsdGltZTogT3BlcmF0aW9uUmVhbHRpbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgYnNNb2RhbDogQnNNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIGFwcFN0YXRlOiBBcHBTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZXBvc2l0b3J5U2VydmljZTogUmVwb3NpdG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvcGVyYXRpb25TZXJ2aWNlOiBPcGVyYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc2V0Q2FuQ2FsbEFjdGlvbigpO1xuICAgIHRoaXMuc2V0T3BlcmF0aW9uKHRoaXMuX2NvbmZpZ3VyYXRpb25UeXBlKTtcbiAgICB0aGlzLm9wZXJhdGlvbnNTdWJzY3JpcHRpb24gPSB0aGlzLm9wZXJhdGlvblJlYWx0aW1lXG4gICAgICAub25BbGwkKHRoaXMuZGV2aWNlLmlkKVxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSBhcyBJT3BlcmF0aW9uKSlcbiAgICAgIC5zdWJzY3JpYmUob3BlcmF0aW9uID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVQcmV2aWV3KG9wZXJhdGlvbik7XG4gICAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHNldE9wZXJhdGlvbihjb25maWdUeXBlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgb3BlcmF0aW9uTGlzdCA9IGF3YWl0IHRoaXMucmVwb3NpdG9yeVNlcnZpY2UuZ2V0Q29uZmlnRmlsZU9wZXJhdGlvbkxpc3QoXG4gICAgICB0aGlzLmRldmljZS5pZCxcbiAgICAgIHRoaXMub3BlcmF0aW9uVG9UcmlnZ2VyXG4gICAgKTtcblxuICAgIGNvbnN0IG9wZXJhdGlvbiA9IHRoaXMuaXNMZWdhY3lcbiAgICAgID8gb3BlcmF0aW9uTGlzdC5maW5kKG9wID0+IG9wW3RoaXMub3BlcmF0aW9uVG9UcmlnZ2VyXSAmJiAhb3BbdGhpcy5vcGVyYXRpb25Ub1RyaWdnZXJdLnR5cGUpXG4gICAgICA6IG9wZXJhdGlvbkxpc3QuZmluZChvcCA9PiBvcFt0aGlzLm9wZXJhdGlvblRvVHJpZ2dlcl0udHlwZSA9PT0gY29uZmlnVHlwZSk7XG5cbiAgICB0aGlzLm9wZXJhdGlvbiA9XG4gICAgICBvcGVyYXRpb24gJiYgb3BlcmF0aW9uLnN0YXR1cyAhPT0gT3BlcmF0aW9uU3RhdHVzLlNVQ0NFU1NGVUwgPyBvcGVyYXRpb24gOiB1bmRlZmluZWQ7XG4gIH1cblxuICBzZXRDYW5DYWxsQWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuY2FuQ2FsbEFjdGlvbiA9IHRoaXMuZGV2aWNlQ29uZmlndXJhdGlvblNlcnZpY2UuaGFzQW55U3VwcG9ydGVkT3BlcmF0aW9uKFxuICAgICAgdGhpcy5kZXZpY2UsXG4gICAgICB0aGlzLm9wZXJhdGlvblRvVHJpZ2dlclxuICAgICk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVEZXZpY2VPcGVyYXRpb24oKSB7XG4gICAgbGV0IG9wZXJhdGlvbkNmZztcbiAgICBpZiAodGhpcy5vcGVyYXRpb25Ub1RyaWdnZXIgPT09IERldmljZUNvbmZpZ3VyYXRpb25PcGVyYXRpb24uRE9XTkxPQURfQ09ORklHKSB7XG4gICAgICBvcGVyYXRpb25DZmcgPSB0aGlzLnJlcG9zaXRvcnlTZXJ2aWNlLmdldERvd25sb2FkQ29uZmlndXJhdGlvbkZpbGVPcGVyYXRpb24oXG4gICAgICAgIHRoaXMuZGV2aWNlLFxuICAgICAgICB0aGlzLl9jb25maWd1cmF0aW9uVHlwZSxcbiAgICAgICAgdGhpcy5jb25maWdTbmFwc2hvdCxcbiAgICAgICAgdGhpcy5pc0xlZ2FjeVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3BlcmF0aW9uVG9UcmlnZ2VyID09PSBEZXZpY2VDb25maWd1cmF0aW9uT3BlcmF0aW9uLlVQTE9BRF9DT05GSUcpIHtcbiAgICAgIG9wZXJhdGlvbkNmZyA9IHRoaXMucmVwb3NpdG9yeVNlcnZpY2UuZ2V0VXBsb2FkQ29uZmlndXJhdGlvbkZpbGVPcGVyYXRpb24oXG4gICAgICAgIHRoaXMuZGV2aWNlLFxuICAgICAgICB0aGlzLl9jb25maWd1cmF0aW9uVHlwZSxcbiAgICAgICAgdGhpcy5pc0xlZ2FjeVxuICAgICAgKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMub3BlcmF0aW9uID0gKGF3YWl0IHRoaXMub3BlcmF0aW9uU2VydmljZS5jcmVhdGUob3BlcmF0aW9uQ2ZnKSkuZGF0YTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShleCk7XG4gICAgfVxuICB9XG5cbiAgc2hvd09wZXJhdGlvbigpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5vcGVyYXRpb25Ub1RyaWdnZXIgPT09IERldmljZUNvbmZpZ3VyYXRpb25PcGVyYXRpb24uRE9XTkxPQURfQ09ORklHKSB7XG4gICAgICByZXR1cm4gISF0aGlzLm9wZXJhdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMub3BlcmF0aW9uICYmXG4gICAgICBbT3BlcmF0aW9uU3RhdHVzLlBFTkRJTkcsIE9wZXJhdGlvblN0YXR1cy5FWEVDVVRJTkcsIE9wZXJhdGlvblN0YXR1cy5GQUlMRURdLmluY2x1ZGVzKFxuICAgICAgICB0aGlzLm9wZXJhdGlvbi5zdGF0dXNcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgc2hvd0JpbmFyeSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5vcGVyYXRpb25Ub1RyaWdnZXIgPT09IERldmljZUNvbmZpZ3VyYXRpb25PcGVyYXRpb24uRE9XTkxPQURfQ09ORklHKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuICF0aGlzLnNob3dPcGVyYXRpb24oKTtcbiAgfVxuXG4gIGlzQ3JlYXRlT3BlcmF0aW9uRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMub3BlcmF0aW9uICYmXG4gICAgICBbT3BlcmF0aW9uU3RhdHVzLlBFTkRJTkcsIE9wZXJhdGlvblN0YXR1cy5FWEVDVVRJTkddLmluY2x1ZGVzKHRoaXMub3BlcmF0aW9uLnN0YXR1cylcbiAgICApO1xuICB9XG5cbiAgdXBkYXRlUHJldmlldyhvcGVyYXRpb246IElPcGVyYXRpb24pIHtcbiAgICBpZiAoXG4gICAgICBvcGVyYXRpb24gJiZcbiAgICAgIG9wZXJhdGlvblt0aGlzLm9wZXJhdGlvblRvVHJpZ2dlcl0gJiZcbiAgICAgICh0aGlzLmlzTGVnYWN5IHx8XG4gICAgICAgIChvcGVyYXRpb25bdGhpcy5vcGVyYXRpb25Ub1RyaWdnZXJdLnR5cGUgJiZcbiAgICAgICAgICBvcGVyYXRpb25bdGhpcy5vcGVyYXRpb25Ub1RyaWdnZXJdLnR5cGUgPT09IHRoaXMuY29uZmlndXJhdGlvblR5cGUpKVxuICAgICkge1xuICAgICAgdGhpcy5vcGVyYXRpb24gPSBvcGVyYXRpb247XG4gICAgICB0aGlzLnVwZGF0ZVNuYXBzaG90c09uQ29uZmlnVXBsb2FkKG9wZXJhdGlvbik7XG4gICAgfVxuICB9XG5cbiAgZG93bmxvYWQoKSB7XG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFt0aGlzLmNvbmZpZ1NuYXBzaG90LmJpbmFyeV0sIHsgdHlwZTogdGhpcy5jb25maWdTbmFwc2hvdC5iaW5hcnlUeXBlIH0pO1xuICAgIGxldCBmaWxlTmFtZSA9IHRoaXMuY29uZmlnU25hcHNob3QubmFtZTtcbiAgICBzd2l0Y2ggKHRoaXMuY29uZmlnU25hcHNob3QuYmluYXJ5VHlwZSkge1xuICAgICAgY2FzZSAndGV4dC9jc3YnOlxuICAgICAgY2FzZSAnYXBwbGljYXRpb24vY3N2JzpcbiAgICAgICAgZmlsZU5hbWUgPSBmaWxlTmFtZS5jb25jYXQoJy5jc3YnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0ZXh0L3lhbWwnOlxuICAgICAgY2FzZSAnYXBwbGljYXRpb24veC15YW1sJzpcbiAgICAgICAgZmlsZU5hbWUgPSBmaWxlTmFtZS5jb25jYXQoJy55YW1sJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYXBwbGljYXRpb24vanNvbic6XG4gICAgICAgIGZpbGVOYW1lID0gZmlsZU5hbWUuY29uY2F0KCcuanNvbicpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgc2F2ZUFzKGJsb2IsIGZpbGVOYW1lKTtcbiAgfVxuXG4gIGFzeW5jIHNhdmVUb1JlcG9zaXRvcnkoKSB7XG4gICAgY29uc3QgaW5pdGlhbFN0YXRlID0ge1xuICAgICAgY29uZmlnU25hcHNob3Q6IGNsb25lRGVlcCh0aGlzLmNvbmZpZ1NuYXBzaG90KVxuICAgIH07XG4gICAgY29uc3QgbW9kYWwgPSB0aGlzLmJzTW9kYWwuc2hvdyhTYXZlVG9SZXBvc2l0b3J5Q29tcG9uZW50LCB7XG4gICAgICBjbGFzczogJ21vZGFsLXNtJyxcbiAgICAgIGFyaWFEZXNjcmliZWRieTogJ21vZGFsLWJvZHknLFxuICAgICAgYXJpYUxhYmVsbGVkQnk6ICdtb2RhbC10aXRsZScsXG4gICAgICBpbml0aWFsU3RhdGUsXG4gICAgICBpZ25vcmVCYWNrZHJvcENsaWNrOiB0cnVlXG4gICAgfSkuY29udGVudCBhcyBTYXZlVG9SZXBvc2l0b3J5Q29tcG9uZW50O1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBtb2RhbC5yZXN1bHQ7XG4gICAgICB0aGlzLmRldmljZUNvbmZpZ3VyYXRpb25TZXJ2aWNlLnVwZGF0ZUNvbmZpZ3VyYXRpb25zKHRydWUpO1xuICAgICAgbW9kYWwuY2xvc2UoKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgLy8gZG8gbm90aGluZ1xuICAgIH1cbiAgfVxuXG4gIGhhc1Blcm1pc3Npb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudXNlci5oYXNBbnlSb2xlKHRoaXMuYXBwU3RhdGUuY3VycmVudFVzZXIudmFsdWUsIFtcbiAgICAgIFBlcm1pc3Npb25zLlJPTEVfSU5WRU5UT1JZX0FETUlOLFxuICAgICAgUGVybWlzc2lvbnMuUk9MRV9JTlZFTlRPUllfQ1JFQVRFXG4gICAgXSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5vcGVyYXRpb25zU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLm9wZXJhdGlvbnNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVNuYXBzaG90c09uQ29uZmlnVXBsb2FkKG9wZXJhdGlvbikge1xuICAgIGlmIChcbiAgICAgIG9wZXJhdGlvbltEZXZpY2VDb25maWd1cmF0aW9uT3BlcmF0aW9uLlVQTE9BRF9DT05GSUddICYmXG4gICAgICBvcGVyYXRpb24uc3RhdHVzID09PSBPcGVyYXRpb25TdGF0dXMuU1VDQ0VTU0ZVTFxuICAgICkge1xuICAgICAgdGhpcy5kZXZpY2VDb25maWd1cmF0aW9uU2VydmljZS51cGRhdGVDb25maWd1cmF0aW9ucygpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNvbnRlbnQtZmxleC01NSBwLWItMTZcIj5cbiAgPGRpdiBjbGFzcz1cImNvbC03IHAtdC00XCI+XG4gICAgPHA+XG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQtbGFiZWwtc21hbGwgdGV4dC11cHBlcmNhc2UgbS1yLTRcIiB0cmFuc2xhdGU+Q29uZmlndXJhdGlvbjwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiY29uZmlnU25hcHNob3Q/Lm5hbWU7IGVsc2UgZW1wdHlUZXh0XCI+XG4gICAgICAgIDxzdHJvbmc+e3sgY29uZmlnU25hcHNob3QubmFtZSB9fTwvc3Ryb25nPlxuICAgICAgPC9zcGFuPlxuICAgICAgPG5nLXRlbXBsYXRlICNlbXB0eVRleHQ+LS0tPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3A+XG4gICAgPHA+XG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQtbGFiZWwtc21hbGwgdGV4dC11cHBlcmNhc2UgbS1yLTRcIiB0cmFuc2xhdGU+TGFzdCB1cGRhdGVkPC9zcGFuPlxuICAgICAgPHNtYWxsICpuZ0lmPVwiY29uZmlnU25hcHNob3Q/LnRpbWU7IGVsc2UgZW1wdHlEYXRlXCI+XG4gICAgICAgIHt7IGNvbmZpZ1NuYXBzaG90LnRpbWUgfCBjOHlEYXRlIH19XG4gICAgICA8L3NtYWxsPlxuICAgICAgPG5nLXRlbXBsYXRlICNlbXB0eURhdGU+LS0tPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3A+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY29sLTVcIj5cbiAgICA8YnV0dG9uXG4gICAgICBpZD1cImFjdGlvbi1idG5cIlxuICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXNtIHB1bGwtcmlnaHRcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICB0aXRsZT1cInt7IGFjdGlvbkJ1dHRvblRleHQgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgKGNsaWNrKT1cImNyZWF0ZURldmljZU9wZXJhdGlvbigpXCJcbiAgICAgIFtkaXNhYmxlZF09XCJpc0NyZWF0ZU9wZXJhdGlvbkRpc2FibGVkKClcIlxuICAgICAgKm5nSWY9XCJjYW5DYWxsQWN0aW9uXCJcbiAgICA+XG4gICAgICA8aSBbYzh5SWNvbl09XCJhY3Rpb25CdXR0b25JY29uXCI+PC9pPlxuICAgICAge3sgYWN0aW9uQnV0dG9uVGV4dCB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImM4eS1lbXB0eS1zdGF0ZSB0ZXh0LWxlZnRcIiAqbmdJZj1cIiFjb25maWdTbmFwc2hvdD8uYmluYXJ5ICYmIHNob3dCaW5hcnkoKVwiPlxuICA8aDEgW2M4eUljb25dPVwiJ2ZpbGUtaW1hZ2UtbydcIj48L2gxPlxuICA8cD5cbiAgICA8c3Ryb25nIHRyYW5zbGF0ZT5ObyBwcmV2aWV3IGF2YWlsYWJsZS48L3N0cm9uZz5cbiAgICA8YnIgLz5cbiAgICA8c21hbGwgKm5nSWY9XCJjb25maWdTbmFwc2hvdD8uYmluYXJ5ICE9PSAnJzsgZWxzZSBlbXB0eUZpbGVcIiB0cmFuc2xhdGU+XG4gICAgICBUaGUgZmlsZSBpcyBub3QgYXZhaWxhYmxlLlxuICAgIDwvc21hbGw+XG4gICAgPG5nLXRlbXBsYXRlICNlbXB0eUZpbGU+XG4gICAgICA8c21hbGwgdHJhbnNsYXRlPlRoZSBmaWxlIGlzIGVtcHR5Ljwvc21hbGw+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9wPlxuPC9kaXY+XG48ZGl2ICpuZ0lmPVwiY29uZmlnU25hcHNob3Q/LmJpbmFyeSAmJiBzaG93QmluYXJ5KClcIiBjbGFzcz1cImZsZXgtZ3JvdyBkLWZsZXggZC1jb2xcIj5cbiAgPGM4eS1zb3VyY2UtY29kZS1wcmV2aWV3XG4gICAgW3RleHRdPVwiY29uZmlnU25hcHNob3QuYmluYXJ5XCJcbiAgICBbaXNEaXNhYmxlZF09XCJ0cnVlXCJcbiAgICBjbGFzcz1cImQtY29udGVudHNcIlxuICA+PC9jOHktc291cmNlLWNvZGUtcHJldmlldz5cbiAgPGRpdiAqbmdJZj1cImNhblNhdmVTbmFwc2hvdFwiIGNsYXNzPVwicC10LTE2XCI+XG4gICAgPGJ1dHRvblxuICAgICAgdGl0bGU9XCJ7eyAnRG93bmxvYWQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtIHB1bGwtcmlnaHQgbS1sLThcIlxuICAgICAgKGNsaWNrKT1cImRvd25sb2FkKClcIlxuICAgID5cbiAgICAgIHt7ICdEb3dubG9hZCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICB0aXRsZT1cInt7ICdTYXZlIHRvIHJlcG9zaXRvcnknIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICpuZ0lmPVwiaGFzUGVybWlzc2lvbigpXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXNtIHB1bGwtcmlnaHRcIlxuICAgICAgKGNsaWNrKT1cInNhdmVUb1JlcG9zaXRvcnkoKVwiXG4gICAgPlxuICAgICAge3sgJ1NhdmUgdG8gcmVwb3NpdG9yeScgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgKm5nSWY9XCJzaG93T3BlcmF0aW9uKClcIj5cbiAgPGM4eS1vcGVyYXRpb24tZGV0YWlscyBbb3BlcmF0aW9uXT1cIm9wZXJhdGlvblwiPjwvYzh5LW9wZXJhdGlvbi1kZXRhaWxzPlxuPC9kaXY+XG4iXX0=
@@ -9,7 +9,7 @@ export class SmsGatewayGuard {
9
9
  }
10
10
  canActivate() {
11
11
  if (this.showSMSProvider === undefined) {
12
- const hasRole = Promise.resolve(this.permissions.hasRole('ROLE_SMS_READ'));
12
+ const hasRole = Promise.resolve(this.permissions.hasRole(Permissions.ROLE_SMS_READ));
13
13
  this.showSMSProvider = hasRole.then((hasPermissions) => hasPermissions && this.appState.isApplicationAvailable(SmsGatewayGuard.applicationName));
14
14
  }
15
15
  return this.showSMSProvider;
@@ -21,4 +21,4 @@ SmsGatewayGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", vers
21
21
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SmsGatewayGuard, decorators: [{
22
22
  type: Injectable
23
23
  }], ctorParameters: function () { return [{ type: i1.Permissions }, { type: i1.AppStateService }]; } });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21zLWdhdGV3YXkuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zbXMtZ2F0ZXdheS9zbXMtZ2F0ZXdheS5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQUduRSxNQUFNLE9BQU8sZUFBZTtJQUkxQixZQUFvQixXQUF3QixFQUFVLFFBQXlCO1FBQTNELGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7SUFBRyxDQUFDO0lBRW5GLFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssU0FBUyxFQUFFO1lBQ3RDLE1BQU0sT0FBTyxHQUFxQixPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7WUFFN0YsSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUNqQyxDQUFDLGNBQXVCLEVBQUUsRUFBRSxDQUMxQixjQUFjLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLENBQzFGLENBQUM7U0FDSDtRQUVELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDOztBQWhCdUIsK0JBQWUsR0FBRyxhQUFjLENBQUE7NEdBRDdDLGVBQWU7Z0hBQWYsZUFBZTsyRkFBZixlQUFlO2tCQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FuQWN0aXZhdGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgUGVybWlzc2lvbnMsIEFwcFN0YXRlU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU21zR2F0ZXdheUd1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBhcHBsaWNhdGlvbk5hbWUgPSAnc21zLWdhdGV3YXknO1xuICBwcml2YXRlIHNob3dTTVNQcm92aWRlcjogUHJvbWlzZTxib29sZWFuPjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBlcm1pc3Npb25zOiBQZXJtaXNzaW9ucywgcHJpdmF0ZSBhcHBTdGF0ZTogQXBwU3RhdGVTZXJ2aWNlKSB7fVxuXG4gIGNhbkFjdGl2YXRlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICh0aGlzLnNob3dTTVNQcm92aWRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBoYXNSb2xlOiBQcm9taXNlPGJvb2xlYW4+ID0gUHJvbWlzZS5yZXNvbHZlKHRoaXMucGVybWlzc2lvbnMuaGFzUm9sZSgnUk9MRV9TTVNfUkVBRCcpKTtcblxuICAgICAgdGhpcy5zaG93U01TUHJvdmlkZXIgPSBoYXNSb2xlLnRoZW4oXG4gICAgICAgIChoYXNQZXJtaXNzaW9uczogYm9vbGVhbikgPT5cbiAgICAgICAgICBoYXNQZXJtaXNzaW9ucyAmJiB0aGlzLmFwcFN0YXRlLmlzQXBwbGljYXRpb25BdmFpbGFibGUoU21zR2F0ZXdheUd1YXJkLmFwcGxpY2F0aW9uTmFtZSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc2hvd1NNU1Byb3ZpZGVyO1xuICB9XG59XG4iXX0=
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21zLWdhdGV3YXkuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zbXMtZ2F0ZXdheS9zbXMtZ2F0ZXdheS5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQUduRSxNQUFNLE9BQU8sZUFBZTtJQUkxQixZQUFvQixXQUF3QixFQUFVLFFBQXlCO1FBQTNELGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7SUFBRyxDQUFDO0lBRW5GLFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssU0FBUyxFQUFFO1lBQ3RDLE1BQU0sT0FBTyxHQUFxQixPQUFPLENBQUMsT0FBTyxDQUMvQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQ3BELENBQUM7WUFFRixJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQ2pDLENBQUMsY0FBdUIsRUFBRSxFQUFFLENBQzFCLGNBQWMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsQ0FDMUYsQ0FBQztTQUNIO1FBRUQsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7O0FBbEJ1QiwrQkFBZSxHQUFHLGFBQWMsQ0FBQTs0R0FEN0MsZUFBZTtnSEFBZixlQUFlOzJGQUFmLGVBQWU7a0JBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYW5BY3RpdmF0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBQZXJtaXNzaW9ucywgQXBwU3RhdGVTZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTbXNHYXRld2F5R3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGFwcGxpY2F0aW9uTmFtZSA9ICdzbXMtZ2F0ZXdheSc7XG4gIHByaXZhdGUgc2hvd1NNU1Byb3ZpZGVyOiBQcm9taXNlPGJvb2xlYW4+O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25zLCBwcml2YXRlIGFwcFN0YXRlOiBBcHBTdGF0ZVNlcnZpY2UpIHt9XG5cbiAgY2FuQWN0aXZhdGUoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKHRoaXMuc2hvd1NNU1Byb3ZpZGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGhhc1JvbGU6IFByb21pc2U8Ym9vbGVhbj4gPSBQcm9taXNlLnJlc29sdmUoXG4gICAgICAgIHRoaXMucGVybWlzc2lvbnMuaGFzUm9sZShQZXJtaXNzaW9ucy5ST0xFX1NNU19SRUFEKVxuICAgICAgKTtcblxuICAgICAgdGhpcy5zaG93U01TUHJvdmlkZXIgPSBoYXNSb2xlLnRoZW4oXG4gICAgICAgIChoYXNQZXJtaXNzaW9uczogYm9vbGVhbikgPT5cbiAgICAgICAgICBoYXNQZXJtaXNzaW9ucyAmJiB0aGlzLmFwcFN0YXRlLmlzQXBwbGljYXRpb25BdmFpbGFibGUoU21zR2F0ZXdheUd1YXJkLmFwcGxpY2F0aW9uTmFtZSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc2hvd1NNU1Byb3ZpZGVyO1xuICB9XG59XG4iXX0=
@@ -1,5 +1,5 @@
1
1
  import { NgModule } from '@angular/core';
2
- import { gettext, hookPatternMessages, ProviderConfigurationModule } from '@c8y/ngx-components';
2
+ import { gettext, hookPatternMessages, ProviderConfigurationModule, Permissions } from '@c8y/ngx-components';
3
3
  import { MESSAGES } from './pattern-messages.data';
4
4
  import { SmsGatewayGuard } from './sms-gateway.guard';
5
5
  import * as i0 from "@angular/core";
@@ -25,9 +25,9 @@ SmsGatewayModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", versio
25
25
  providerName: gettext('SMS provider'),
26
26
  providerNamePlaceholder: gettext('Select or type to filter providers'),
27
27
  providerNameNoMatchesHint: gettext('Select one of the existing providers.'),
28
- deleteRoles: ['ROLE_SMS_ADMIN'],
28
+ deleteRoles: [Permissions.ROLE_SMS_ADMIN],
29
29
  deleteBtnLabel: gettext('Delete'),
30
- saveRoles: ['ROLE_SMS_ADMIN'],
30
+ saveRoles: [Permissions.ROLE_SMS_ADMIN],
31
31
  saveBtnLabel: gettext('Save'),
32
32
  configurationUpdatedSuccessMsg: gettext('Credentials updated.'),
33
33
  deleteConfigurationModalTitle: gettext('Delete credentials'),
@@ -68,9 +68,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
68
68
  providerName: gettext('SMS provider'),
69
69
  providerNamePlaceholder: gettext('Select or type to filter providers'),
70
70
  providerNameNoMatchesHint: gettext('Select one of the existing providers.'),
71
- deleteRoles: ['ROLE_SMS_ADMIN'],
71
+ deleteRoles: [Permissions.ROLE_SMS_ADMIN],
72
72
  deleteBtnLabel: gettext('Delete'),
73
- saveRoles: ['ROLE_SMS_ADMIN'],
73
+ saveRoles: [Permissions.ROLE_SMS_ADMIN],
74
74
  saveBtnLabel: gettext('Save'),
75
75
  configurationUpdatedSuccessMsg: gettext('Credentials updated.'),
76
76
  deleteConfigurationModalTitle: gettext('Delete credentials'),
@@ -94,4 +94,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
94
94
  providers: [SmsGatewayGuard, hookPatternMessages(MESSAGES)]
95
95
  }]
96
96
  }] });
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21zLWdhdGV3YXkubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc21zLWdhdGV3YXkvc21zLWdhdGV3YXkubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQWtEdEQsTUFBTSxPQUFPLGdCQUFnQjs7NkdBQWhCLGdCQUFnQjs4R0FBaEIsZ0JBQWdCOzhHQUFoQixnQkFBZ0IsYUFGaEIsQ0FBQyxlQUFlLEVBQUUsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUMsWUE1Q3pELDJCQUEyQixDQUFDLE1BQU0sQ0FBQztZQUNqQztnQkFDRSxVQUFVLEVBQUU7b0JBQ1YsS0FBSyxFQUFFLE9BQU8sQ0FBQyxjQUFjLENBQUM7b0JBQzlCLElBQUksRUFBRSxZQUFZO29CQUNsQixJQUFJLEVBQUUsWUFBWTtvQkFDbEIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUM7b0JBQzNCLFFBQVEsRUFBRSxJQUFJO29CQUNkLFdBQVcsRUFBRSxDQUFDLGVBQWUsQ0FBQztpQkFDL0I7Z0JBQ0QsTUFBTSxFQUFFO29CQUNOLFNBQVMsRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDO29CQUNsQyxTQUFTLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQztvQkFDakMsV0FBVyxFQUFFLE9BQU8sQ0FDbEIsMEtBQTBLLENBQzNLO29CQUNELFlBQVksRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDO29CQUNyQyx1QkFBdUIsRUFBRSxPQUFPLENBQUMsb0NBQW9DLENBQUM7b0JBQ3RFLHlCQUF5QixFQUFFLE9BQU8sQ0FBQyx1Q0FBdUMsQ0FBQztvQkFDM0UsV0FBVyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0JBQy9CLGNBQWMsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDO29CQUNqQyxTQUFTLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztvQkFDN0IsWUFBWSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUM7b0JBQzdCLDhCQUE4QixFQUFFLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQztvQkFDL0QsNkJBQTZCLEVBQUUsT0FBTyxDQUFDLG9CQUFvQixDQUFDO29CQUM1RCw0QkFBNEIsRUFBRSxPQUFPLENBQ25DLG9PQUFvTyxDQUNyTztvQkFDRCxrQ0FBa0MsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDO29CQUNyRCw4QkFBOEIsRUFBRSxPQUFPLENBQUMsc0JBQXNCLENBQUM7aUJBQ2hFO2dCQUNELFFBQVEsRUFBRTtvQkFDUixtQkFBbUIsRUFBRTt3QkFDbkIsT0FBTyxFQUFFLDZCQUE2Qjt3QkFDdEMsT0FBTyxFQUFFLGFBQWE7cUJBQ3ZCO29CQUNELHFCQUFxQixFQUFFO3dCQUNyQixPQUFPLEVBQUUsNkJBQTZCO3dCQUN0QyxPQUFPLEVBQUUsZUFBZTtxQkFDekI7aUJBQ0Y7YUFDRjtTQUNGLENBQUM7MkZBSU8sZ0JBQWdCO2tCQWhENUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsMkJBQTJCLENBQUMsTUFBTSxDQUFDOzRCQUNqQztnQ0FDRSxVQUFVLEVBQUU7b0NBQ1YsS0FBSyxFQUFFLE9BQU8sQ0FBQyxjQUFjLENBQUM7b0NBQzlCLElBQUksRUFBRSxZQUFZO29DQUNsQixJQUFJLEVBQUUsWUFBWTtvQ0FDbEIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUM7b0NBQzNCLFFBQVEsRUFBRSxJQUFJO29DQUNkLFdBQVcsRUFBRSxDQUFDLGVBQWUsQ0FBQztpQ0FDL0I7Z0NBQ0QsTUFBTSxFQUFFO29DQUNOLFNBQVMsRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDO29DQUNsQyxTQUFTLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQztvQ0FDakMsV0FBVyxFQUFFLE9BQU8sQ0FDbEIsMEtBQTBLLENBQzNLO29DQUNELFlBQVksRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDO29DQUNyQyx1QkFBdUIsRUFBRSxPQUFPLENBQUMsb0NBQW9DLENBQUM7b0NBQ3RFLHlCQUF5QixFQUFFLE9BQU8sQ0FBQyx1Q0FBdUMsQ0FBQztvQ0FDM0UsV0FBVyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0NBQy9CLGNBQWMsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDO29DQUNqQyxTQUFTLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztvQ0FDN0IsWUFBWSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUM7b0NBQzdCLDhCQUE4QixFQUFFLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQztvQ0FDL0QsNkJBQTZCLEVBQUUsT0FBTyxDQUFDLG9CQUFvQixDQUFDO29DQUM1RCw0QkFBNEIsRUFBRSxPQUFPLENBQ25DLG9PQUFvTyxDQUNyTztvQ0FDRCxrQ0FBa0MsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDO29DQUNyRCw4QkFBOEIsRUFBRSxPQUFPLENBQUMsc0JBQXNCLENBQUM7aUNBQ2hFO2dDQUNELFFBQVEsRUFBRTtvQ0FDUixtQkFBbUIsRUFBRTt3Q0FDbkIsT0FBTyxFQUFFLDZCQUE2Qjt3Q0FDdEMsT0FBTyxFQUFFLGFBQWE7cUNBQ3ZCO29DQUNELHFCQUFxQixFQUFFO3dDQUNyQixPQUFPLEVBQUUsNkJBQTZCO3dDQUN0QyxPQUFPLEVBQUUsZUFBZTtxQ0FDekI7aUNBQ0Y7NkJBQ0Y7eUJBQ0YsQ0FBQztxQkFDSDtvQkFDRCxTQUFTLEVBQUUsQ0FBQyxlQUFlLEVBQUUsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQzVEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldHRleHQsIGhvb2tQYXR0ZXJuTWVzc2FnZXMsIFByb3ZpZGVyQ29uZmlndXJhdGlvbk1vZHVsZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgTUVTU0FHRVMgfSBmcm9tICcuL3BhdHRlcm4tbWVzc2FnZXMuZGF0YSc7XG5pbXBvcnQgeyBTbXNHYXRld2F5R3VhcmQgfSBmcm9tICcuL3Ntcy1nYXRld2F5Lmd1YXJkJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIFByb3ZpZGVyQ29uZmlndXJhdGlvbk1vZHVsZS5jb25maWcoW1xuICAgICAge1xuICAgICAgICBuYXZpZ2F0aW9uOiB7XG4gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ1NNUyBwcm92aWRlcicpLFxuICAgICAgICAgIHBhdGg6ICdzbXNnYXRld2F5JyxcbiAgICAgICAgICBpY29uOiAnZW52ZWxvcGUtbycsXG4gICAgICAgICAgcGFyZW50OiBnZXR0ZXh0KCdTZXR0aW5ncycpLFxuICAgICAgICAgIHByaW9yaXR5OiAxMDAwLFxuICAgICAgICAgIGNhbkFjdGl2YXRlOiBbU21zR2F0ZXdheUd1YXJkXVxuICAgICAgICB9LFxuICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICBwYWdlVGl0bGU6IGdldHRleHQoJ1NNUyBwcm92aWRlcicpLFxuICAgICAgICAgIGNhcmRUaXRsZTogZ2V0dGV4dCgnQ3JlZGVudGlhbHMnKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dChcbiAgICAgICAgICAgICdFbnRlciB5b3VyIGNyZWRlbnRpYWxzIGZyb20geW91ciBTTVMgcHJvdmlkZXIuIFRoaXMgZW5hYmxlcyBwbGF0Zm9ybSBmZWF0dXJlcyB0aGF0IHV0aWxpemUgU01TIHNlcnZpY2VzIChmb3IgZXhhbXBsZSwgdHdvLWZhY3RvciBhdXRoZW50aWNhdGlvbiBhbmQgdXNlciBub3RpZmljYXRpb25zKS4nXG4gICAgICAgICAgKSxcbiAgICAgICAgICBwcm92aWRlck5hbWU6IGdldHRleHQoJ1NNUyBwcm92aWRlcicpLFxuICAgICAgICAgIHByb3ZpZGVyTmFtZVBsYWNlaG9sZGVyOiBnZXR0ZXh0KCdTZWxlY3Qgb3IgdHlwZSB0byBmaWx0ZXIgcHJvdmlkZXJzJyksXG4gICAgICAgICAgcHJvdmlkZXJOYW1lTm9NYXRjaGVzSGludDogZ2V0dGV4dCgnU2VsZWN0IG9uZSBvZiB0aGUgZXhpc3RpbmcgcHJvdmlkZXJzLicpLFxuICAgICAgICAgIGRlbGV0ZVJvbGVzOiBbJ1JPTEVfU01TX0FETUlOJ10sXG4gICAgICAgICAgZGVsZXRlQnRuTGFiZWw6IGdldHRleHQoJ0RlbGV0ZScpLFxuICAgICAgICAgIHNhdmVSb2xlczogWydST0xFX1NNU19BRE1JTiddLFxuICAgICAgICAgIHNhdmVCdG5MYWJlbDogZ2V0dGV4dCgnU2F2ZScpLFxuICAgICAgICAgIGNvbmZpZ3VyYXRpb25VcGRhdGVkU3VjY2Vzc01zZzogZ2V0dGV4dCgnQ3JlZGVudGlhbHMgdXBkYXRlZC4nKSxcbiAgICAgICAgICBkZWxldGVDb25maWd1cmF0aW9uTW9kYWxUaXRsZTogZ2V0dGV4dCgnRGVsZXRlIGNyZWRlbnRpYWxzJyksXG4gICAgICAgICAgZGVsZXRlQ29uZmlndXJhdGlvbk1vZGFsQm9keTogZ2V0dGV4dChcbiAgICAgICAgICAgIGBZb3UgYXJlIGFib3V0IHRvIGRlbGV0ZSBTTVMgcHJvdmlkZXIgY3JlZGVudGlhbHMuIERlbGV0aW5nIGNyZWRlbnRpYWxzIHdpbGwgbG9jayBvdXQgYW55IHVzZXJzIHdpdGggU01TLWJhc2VkIHR3by1mYWN0b3IgYXV0aGVudGljYXRpb24gYW5kIGRlYWN0aXZhdGUgdGhlIFNNUy1iYXNlZCBzbWFydCBydWxlcyBhbmQgZGV2aWNlIGNvbW11bmljYXRpb24uIERvIHlvdSB3YW50IHRvIHByb2NlZWQ/YFxuICAgICAgICAgICksXG4gICAgICAgICAgZGVsZXRlQ29uZmlndXJhdGlvbk1vZGFsT2tCdG5MYWJlbDogZ2V0dGV4dCgnRGVsZXRlJyksXG4gICAgICAgICAgY29uZmlndXJhdGlvbkRlbGV0ZWRTdWNjZXNzTXNnOiBnZXR0ZXh0KCdDcmVkZW50aWFscyBkZWxldGVkLicpXG4gICAgICAgIH0sXG4gICAgICAgIGVuZHBvaW50OiB7XG4gICAgICAgICAgZGVmaW5pdGlvbnNFbmRwb2ludDoge1xuICAgICAgICAgICAgYmFzZVVybDogJ3NlcnZpY2UvbWVzc2FnaW5nL3Byb3ZpZGVycycsXG4gICAgICAgICAgICBsaXN0VXJsOiAnZGVmaW5pdGlvbnMnXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb25maWd1cmF0aW9uRW5kcG9pbnQ6IHtcbiAgICAgICAgICAgIGJhc2VVcmw6ICdzZXJ2aWNlL21lc3NhZ2luZy9wcm92aWRlcnMnLFxuICAgICAgICAgICAgbGlzdFVybDogJ2NvbmZpZ3VyYXRpb24nXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgXSlcbiAgXSxcbiAgcHJvdmlkZXJzOiBbU21zR2F0ZXdheUd1YXJkLCBob29rUGF0dGVybk1lc3NhZ2VzKE1FU1NBR0VTKV1cbn0pXG5leHBvcnQgY2xhc3MgU21zR2F0ZXdheU1vZHVsZSB7fVxuIl19
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21zLWdhdGV3YXkubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc21zLWdhdGV3YXkvc21zLWdhdGV3YXkubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUNMLE9BQU8sRUFDUCxtQkFBbUIsRUFDbkIsMkJBQTJCLEVBQzNCLFdBQVcsRUFDWixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQWtEdEQsTUFBTSxPQUFPLGdCQUFnQjs7NkdBQWhCLGdCQUFnQjs4R0FBaEIsZ0JBQWdCOzhHQUFoQixnQkFBZ0IsYUFGaEIsQ0FBQyxlQUFlLEVBQUUsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUMsWUE1Q3pELDJCQUEyQixDQUFDLE1BQU0sQ0FBQztZQUNqQztnQkFDRSxVQUFVLEVBQUU7b0JBQ1YsS0FBSyxFQUFFLE9BQU8sQ0FBQyxjQUFjLENBQUM7b0JBQzlCLElBQUksRUFBRSxZQUFZO29CQUNsQixJQUFJLEVBQUUsWUFBWTtvQkFDbEIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUM7b0JBQzNCLFFBQVEsRUFBRSxJQUFJO29CQUNkLFdBQVcsRUFBRSxDQUFDLGVBQWUsQ0FBQztpQkFDL0I7Z0JBQ0QsTUFBTSxFQUFFO29CQUNOLFNBQVMsRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDO29CQUNsQyxTQUFTLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQztvQkFDakMsV0FBVyxFQUFFLE9BQU8sQ0FDbEIsMEtBQTBLLENBQzNLO29CQUNELFlBQVksRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDO29CQUNyQyx1QkFBdUIsRUFBRSxPQUFPLENBQUMsb0NBQW9DLENBQUM7b0JBQ3RFLHlCQUF5QixFQUFFLE9BQU8sQ0FBQyx1Q0FBdUMsQ0FBQztvQkFDM0UsV0FBVyxFQUFFLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQztvQkFDekMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUM7b0JBQ2pDLFNBQVMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUM7b0JBQ3ZDLFlBQVksRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDO29CQUM3Qiw4QkFBOEIsRUFBRSxPQUFPLENBQUMsc0JBQXNCLENBQUM7b0JBQy9ELDZCQUE2QixFQUFFLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQztvQkFDNUQsNEJBQTRCLEVBQUUsT0FBTyxDQUNuQyxvT0FBb08sQ0FDck87b0JBQ0Qsa0NBQWtDLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQztvQkFDckQsOEJBQThCLEVBQUUsT0FBTyxDQUFDLHNCQUFzQixDQUFDO2lCQUNoRTtnQkFDRCxRQUFRLEVBQUU7b0JBQ1IsbUJBQW1CLEVBQUU7d0JBQ25CLE9BQU8sRUFBRSw2QkFBNkI7d0JBQ3RDLE9BQU8sRUFBRSxhQUFhO3FCQUN2QjtvQkFDRCxxQkFBcUIsRUFBRTt3QkFDckIsT0FBTyxFQUFFLDZCQUE2Qjt3QkFDdEMsT0FBTyxFQUFFLGVBQWU7cUJBQ3pCO2lCQUNGO2FBQ0Y7U0FDRixDQUFDOzJGQUlPLGdCQUFnQjtrQkFoRDVCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLDJCQUEyQixDQUFDLE1BQU0sQ0FBQzs0QkFDakM7Z0NBQ0UsVUFBVSxFQUFFO29DQUNWLEtBQUssRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDO29DQUM5QixJQUFJLEVBQUUsWUFBWTtvQ0FDbEIsSUFBSSxFQUFFLFlBQVk7b0NBQ2xCLE1BQU0sRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDO29DQUMzQixRQUFRLEVBQUUsSUFBSTtvQ0FDZCxXQUFXLEVBQUUsQ0FBQyxlQUFlLENBQUM7aUNBQy9CO2dDQUNELE1BQU0sRUFBRTtvQ0FDTixTQUFTLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQztvQ0FDbEMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxhQUFhLENBQUM7b0NBQ2pDLFdBQVcsRUFBRSxPQUFPLENBQ2xCLDBLQUEwSyxDQUMzSztvQ0FDRCxZQUFZLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQztvQ0FDckMsdUJBQXVCLEVBQUUsT0FBTyxDQUFDLG9DQUFvQyxDQUFDO29DQUN0RSx5QkFBeUIsRUFBRSxPQUFPLENBQUMsdUNBQXVDLENBQUM7b0NBQzNFLFdBQVcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUM7b0NBQ3pDLGNBQWMsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDO29DQUNqQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDO29DQUN2QyxZQUFZLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQztvQ0FDN0IsOEJBQThCLEVBQUUsT0FBTyxDQUFDLHNCQUFzQixDQUFDO29DQUMvRCw2QkFBNkIsRUFBRSxPQUFPLENBQUMsb0JBQW9CLENBQUM7b0NBQzVELDRCQUE0QixFQUFFLE9BQU8sQ0FDbkMsb09BQW9PLENBQ3JPO29DQUNELGtDQUFrQyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUM7b0NBQ3JELDhCQUE4QixFQUFFLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQztpQ0FDaEU7Z0NBQ0QsUUFBUSxFQUFFO29DQUNSLG1CQUFtQixFQUFFO3dDQUNuQixPQUFPLEVBQUUsNkJBQTZCO3dDQUN0QyxPQUFPLEVBQUUsYUFBYTtxQ0FDdkI7b0NBQ0QscUJBQXFCLEVBQUU7d0NBQ3JCLE9BQU8sRUFBRSw2QkFBNkI7d0NBQ3RDLE9BQU8sRUFBRSxlQUFlO3FDQUN6QjtpQ0FDRjs2QkFDRjt5QkFDRixDQUFDO3FCQUNIO29CQUNELFNBQVMsRUFBRSxDQUFDLGVBQWUsRUFBRSxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDNUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgZ2V0dGV4dCxcbiAgaG9va1BhdHRlcm5NZXNzYWdlcyxcbiAgUHJvdmlkZXJDb25maWd1cmF0aW9uTW9kdWxlLFxuICBQZXJtaXNzaW9uc1xufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IE1FU1NBR0VTIH0gZnJvbSAnLi9wYXR0ZXJuLW1lc3NhZ2VzLmRhdGEnO1xuaW1wb3J0IHsgU21zR2F0ZXdheUd1YXJkIH0gZnJvbSAnLi9zbXMtZ2F0ZXdheS5ndWFyZCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBQcm92aWRlckNvbmZpZ3VyYXRpb25Nb2R1bGUuY29uZmlnKFtcbiAgICAgIHtcbiAgICAgICAgbmF2aWdhdGlvbjoge1xuICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdTTVMgcHJvdmlkZXInKSxcbiAgICAgICAgICBwYXRoOiAnc21zZ2F0ZXdheScsXG4gICAgICAgICAgaWNvbjogJ2VudmVsb3BlLW8nLFxuICAgICAgICAgIHBhcmVudDogZ2V0dGV4dCgnU2V0dGluZ3MnKSxcbiAgICAgICAgICBwcmlvcml0eTogMTAwMCxcbiAgICAgICAgICBjYW5BY3RpdmF0ZTogW1Ntc0dhdGV3YXlHdWFyZF1cbiAgICAgICAgfSxcbiAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgcGFnZVRpdGxlOiBnZXR0ZXh0KCdTTVMgcHJvdmlkZXInKSxcbiAgICAgICAgICBjYXJkVGl0bGU6IGdldHRleHQoJ0NyZWRlbnRpYWxzJyksXG4gICAgICAgICAgZGVzY3JpcHRpb246IGdldHRleHQoXG4gICAgICAgICAgICAnRW50ZXIgeW91ciBjcmVkZW50aWFscyBmcm9tIHlvdXIgU01TIHByb3ZpZGVyLiBUaGlzIGVuYWJsZXMgcGxhdGZvcm0gZmVhdHVyZXMgdGhhdCB1dGlsaXplIFNNUyBzZXJ2aWNlcyAoZm9yIGV4YW1wbGUsIHR3by1mYWN0b3IgYXV0aGVudGljYXRpb24gYW5kIHVzZXIgbm90aWZpY2F0aW9ucykuJ1xuICAgICAgICAgICksXG4gICAgICAgICAgcHJvdmlkZXJOYW1lOiBnZXR0ZXh0KCdTTVMgcHJvdmlkZXInKSxcbiAgICAgICAgICBwcm92aWRlck5hbWVQbGFjZWhvbGRlcjogZ2V0dGV4dCgnU2VsZWN0IG9yIHR5cGUgdG8gZmlsdGVyIHByb3ZpZGVycycpLFxuICAgICAgICAgIHByb3ZpZGVyTmFtZU5vTWF0Y2hlc0hpbnQ6IGdldHRleHQoJ1NlbGVjdCBvbmUgb2YgdGhlIGV4aXN0aW5nIHByb3ZpZGVycy4nKSxcbiAgICAgICAgICBkZWxldGVSb2xlczogW1Blcm1pc3Npb25zLlJPTEVfU01TX0FETUlOXSxcbiAgICAgICAgICBkZWxldGVCdG5MYWJlbDogZ2V0dGV4dCgnRGVsZXRlJyksXG4gICAgICAgICAgc2F2ZVJvbGVzOiBbUGVybWlzc2lvbnMuUk9MRV9TTVNfQURNSU5dLFxuICAgICAgICAgIHNhdmVCdG5MYWJlbDogZ2V0dGV4dCgnU2F2ZScpLFxuICAgICAgICAgIGNvbmZpZ3VyYXRpb25VcGRhdGVkU3VjY2Vzc01zZzogZ2V0dGV4dCgnQ3JlZGVudGlhbHMgdXBkYXRlZC4nKSxcbiAgICAgICAgICBkZWxldGVDb25maWd1cmF0aW9uTW9kYWxUaXRsZTogZ2V0dGV4dCgnRGVsZXRlIGNyZWRlbnRpYWxzJyksXG4gICAgICAgICAgZGVsZXRlQ29uZmlndXJhdGlvbk1vZGFsQm9keTogZ2V0dGV4dChcbiAgICAgICAgICAgIGBZb3UgYXJlIGFib3V0IHRvIGRlbGV0ZSBTTVMgcHJvdmlkZXIgY3JlZGVudGlhbHMuIERlbGV0aW5nIGNyZWRlbnRpYWxzIHdpbGwgbG9jayBvdXQgYW55IHVzZXJzIHdpdGggU01TLWJhc2VkIHR3by1mYWN0b3IgYXV0aGVudGljYXRpb24gYW5kIGRlYWN0aXZhdGUgdGhlIFNNUy1iYXNlZCBzbWFydCBydWxlcyBhbmQgZGV2aWNlIGNvbW11bmljYXRpb24uIERvIHlvdSB3YW50IHRvIHByb2NlZWQ/YFxuICAgICAgICAgICksXG4gICAgICAgICAgZGVsZXRlQ29uZmlndXJhdGlvbk1vZGFsT2tCdG5MYWJlbDogZ2V0dGV4dCgnRGVsZXRlJyksXG4gICAgICAgICAgY29uZmlndXJhdGlvbkRlbGV0ZWRTdWNjZXNzTXNnOiBnZXR0ZXh0KCdDcmVkZW50aWFscyBkZWxldGVkLicpXG4gICAgICAgIH0sXG4gICAgICAgIGVuZHBvaW50OiB7XG4gICAgICAgICAgZGVmaW5pdGlvbnNFbmRwb2ludDoge1xuICAgICAgICAgICAgYmFzZVVybDogJ3NlcnZpY2UvbWVzc2FnaW5nL3Byb3ZpZGVycycsXG4gICAgICAgICAgICBsaXN0VXJsOiAnZGVmaW5pdGlvbnMnXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb25maWd1cmF0aW9uRW5kcG9pbnQ6IHtcbiAgICAgICAgICAgIGJhc2VVcmw6ICdzZXJ2aWNlL21lc3NhZ2luZy9wcm92aWRlcnMnLFxuICAgICAgICAgICAgbGlzdFVybDogJ2NvbmZpZ3VyYXRpb24nXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgXSlcbiAgXSxcbiAgcHJvdmlkZXJzOiBbU21zR2F0ZXdheUd1YXJkLCBob29rUGF0dGVybk1lc3NhZ2VzKE1FU1NBR0VTKV1cbn0pXG5leHBvcnQgY2xhc3MgU21zR2F0ZXdheU1vZHVsZSB7fVxuIl19