@c8y/ngx-components 1018.503.1 → 1018.503.23

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 (152) hide show
  1. package/core/common/ApplicationOptions.d.ts +4 -2
  2. package/core/common/files.service.d.ts +10 -2
  3. package/core/common/global-config.service.d.ts +1 -1
  4. package/core/common/permissions.service.d.ts +69 -2
  5. package/core/common/tenant-ui.service.d.ts +1 -1
  6. package/core/i18n/pattern-messages.data.d.ts +20 -20
  7. package/esm2020/assets-navigator/asset-node.service.mjs +11 -4
  8. package/esm2020/auth-configuration/auth-configuration.guard.mjs +5 -2
  9. package/esm2020/auth-configuration/factories/navigation.factory.mjs +3 -3
  10. package/esm2020/cockpit-config/cockpit-config.guard.mjs +2 -2
  11. package/esm2020/cockpit-config/cockpit-config.service.mjs +2 -2
  12. package/esm2020/context-dashboard/add-dashboard.factory.mjs +13 -3
  13. package/esm2020/context-dashboard/context-dashboard.component.mjs +2 -2
  14. package/esm2020/context-dashboard/context-dashboard.service.mjs +11 -3
  15. package/esm2020/context-dashboard/dashboard-detail.component.mjs +7 -2
  16. package/esm2020/context-dashboard/report-dashboard/report-dashboard-list.component.mjs +5 -3
  17. package/esm2020/core/bottom-drawer/bottom-drawer.service.mjs +1 -1
  18. package/esm2020/core/common/ApplicationOptions.mjs +1 -1
  19. package/esm2020/core/common/files.service.mjs +20 -4
  20. package/esm2020/core/common/global-config.service.mjs +7 -2
  21. package/esm2020/core/common/permissions.service.mjs +69 -2
  22. package/esm2020/core/common/tenant-ui.service.mjs +3 -2
  23. package/esm2020/core/common/user-preferences/user-preferences.service.mjs +10 -2
  24. package/esm2020/core/docs/support-outlet/support-outlet.component.mjs +3 -2
  25. package/esm2020/core/drop-area/drop-area.component.mjs +3 -1
  26. package/esm2020/core/i18n/pattern-messages.data.mjs +21 -21
  27. package/esm2020/core/setup/setup.service.mjs +2 -2
  28. package/esm2020/core/user/user-edit.component.mjs +1 -1
  29. package/esm2020/ecosystem/application-properties/application-properties.component.mjs +2 -2
  30. package/esm2020/ecosystem/application-properties/subscription-modal/subscription-modal.component.mjs +3 -3
  31. package/esm2020/ecosystem/ecosystem-navigation.factory.mjs +3 -3
  32. package/esm2020/ecosystem/packages/package-list/packages-list.component.mjs +2 -2
  33. package/esm2020/ecosystem/packages/package-versions/package-versions-list/package-versions-list.component.mjs +2 -2
  34. package/esm2020/files-repository/files-repository.guard.mjs +6 -3
  35. package/esm2020/location/location.component.mjs +20 -13
  36. package/esm2020/map/cluster-map.component.mjs +19 -11
  37. package/esm2020/map/cluster-map.mjs +8 -3
  38. package/esm2020/map/map-status.component.mjs +19 -5
  39. package/esm2020/map/map.component.mjs +10 -10
  40. package/esm2020/map/map.model.mjs +1 -19
  41. package/esm2020/map/map.service.mjs +24 -1
  42. package/esm2020/protocol-lwm2m/components/bootstrap-parameters/lwm2m-bootstrap-parameters.component.mjs +2 -2
  43. package/esm2020/protocol-lwm2m/components/configuration/typed-forms/form-wrapper-base.component.mjs +2 -2
  44. package/esm2020/register-device/register-device-navigation.factory.mjs +3 -3
  45. package/esm2020/replace-device/replace-device.service.mjs +15 -7
  46. package/esm2020/reports/export-schedules.component.mjs +3 -3
  47. package/esm2020/repository/configuration/device-tab/configuration-preview.component.mjs +14 -6
  48. package/esm2020/sms-gateway/sms-gateway.guard.mjs +2 -2
  49. package/esm2020/sms-gateway/sms-gateway.module.mjs +6 -6
  50. package/esm2020/sub-assets/add-group/add-group.component.mjs +7 -2
  51. package/esm2020/sub-assets/asset-properties-item.component.mjs +6 -6
  52. package/esm2020/sub-assets/groups.component.mjs +5 -2
  53. package/esm2020/sub-assets/sub-assets.component.mjs +7 -2
  54. package/esm2020/sub-assets/sub-assets.service.mjs +22 -10
  55. package/esm2020/tenants/tenant-list/tenant-list.component.mjs +12 -7
  56. package/esm2020/upgrade/ng1/downgraded.services.mjs +3 -2
  57. package/esm2020/upgrade/ng1/index.mjs +4 -3
  58. package/esm2020/widgets/cockpit/index.mjs +1 -1
  59. package/esm2020/widgets/device-management/index.mjs +1 -1
  60. package/fesm2015/c8y-ngx-components-assets-navigator.mjs +10 -3
  61. package/fesm2015/c8y-ngx-components-assets-navigator.mjs.map +1 -1
  62. package/fesm2015/c8y-ngx-components-auth-configuration.mjs +7 -4
  63. package/fesm2015/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  64. package/fesm2015/c8y-ngx-components-cockpit-config.mjs +3 -3
  65. package/fesm2015/c8y-ngx-components-cockpit-config.mjs.map +1 -1
  66. package/fesm2015/c8y-ngx-components-context-dashboard.mjs +35 -10
  67. package/fesm2015/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  68. package/fesm2015/c8y-ngx-components-ecosystem.mjs +8 -8
  69. package/fesm2015/c8y-ngx-components-ecosystem.mjs.map +1 -1
  70. package/fesm2015/c8y-ngx-components-files-repository.mjs +6 -3
  71. package/fesm2015/c8y-ngx-components-files-repository.mjs.map +1 -1
  72. package/fesm2015/c8y-ngx-components-location.mjs +20 -13
  73. package/fesm2015/c8y-ngx-components-location.mjs.map +1 -1
  74. package/fesm2015/c8y-ngx-components-map.mjs +174 -142
  75. package/fesm2015/c8y-ngx-components-map.mjs.map +1 -1
  76. package/fesm2015/c8y-ngx-components-protocol-lwm2m-components-bootstrap-parameters.mjs +2 -2
  77. package/fesm2015/c8y-ngx-components-protocol-lwm2m-components-bootstrap-parameters.mjs.map +1 -1
  78. package/fesm2015/c8y-ngx-components-protocol-lwm2m-components-configuration.mjs +1 -1
  79. package/fesm2015/c8y-ngx-components-protocol-lwm2m-components-configuration.mjs.map +1 -1
  80. package/fesm2015/c8y-ngx-components-register-device.mjs +3 -3
  81. package/fesm2015/c8y-ngx-components-register-device.mjs.map +1 -1
  82. package/fesm2015/c8y-ngx-components-replace-device.mjs +16 -8
  83. package/fesm2015/c8y-ngx-components-replace-device.mjs.map +1 -1
  84. package/fesm2015/c8y-ngx-components-reports.mjs +2 -2
  85. package/fesm2015/c8y-ngx-components-reports.mjs.map +1 -1
  86. package/fesm2015/c8y-ngx-components-repository-configuration.mjs +13 -5
  87. package/fesm2015/c8y-ngx-components-repository-configuration.mjs.map +1 -1
  88. package/fesm2015/c8y-ngx-components-sms-gateway.mjs +6 -6
  89. package/fesm2015/c8y-ngx-components-sms-gateway.mjs.map +1 -1
  90. package/fesm2015/c8y-ngx-components-sub-assets.mjs +43 -18
  91. package/fesm2015/c8y-ngx-components-sub-assets.mjs.map +1 -1
  92. package/fesm2015/c8y-ngx-components-tenants.mjs +11 -6
  93. package/fesm2015/c8y-ngx-components-tenants.mjs.map +1 -1
  94. package/fesm2015/c8y-ngx-components-upgrade.mjs +4 -2
  95. package/fesm2015/c8y-ngx-components-upgrade.mjs.map +1 -1
  96. package/fesm2015/c8y-ngx-components-widgets-cockpit.mjs.map +1 -1
  97. package/fesm2015/c8y-ngx-components-widgets-device-management.mjs.map +1 -1
  98. package/fesm2015/c8y-ngx-components.mjs +126 -29
  99. package/fesm2015/c8y-ngx-components.mjs.map +1 -1
  100. package/fesm2020/c8y-ngx-components-assets-navigator.mjs +10 -3
  101. package/fesm2020/c8y-ngx-components-assets-navigator.mjs.map +1 -1
  102. package/fesm2020/c8y-ngx-components-auth-configuration.mjs +7 -4
  103. package/fesm2020/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  104. package/fesm2020/c8y-ngx-components-cockpit-config.mjs +3 -3
  105. package/fesm2020/c8y-ngx-components-cockpit-config.mjs.map +1 -1
  106. package/fesm2020/c8y-ngx-components-context-dashboard.mjs +35 -10
  107. package/fesm2020/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  108. package/fesm2020/c8y-ngx-components-ecosystem.mjs +8 -8
  109. package/fesm2020/c8y-ngx-components-ecosystem.mjs.map +1 -1
  110. package/fesm2020/c8y-ngx-components-files-repository.mjs +6 -3
  111. package/fesm2020/c8y-ngx-components-files-repository.mjs.map +1 -1
  112. package/fesm2020/c8y-ngx-components-location.mjs +20 -13
  113. package/fesm2020/c8y-ngx-components-location.mjs.map +1 -1
  114. package/fesm2020/c8y-ngx-components-map.mjs +174 -142
  115. package/fesm2020/c8y-ngx-components-map.mjs.map +1 -1
  116. package/fesm2020/c8y-ngx-components-protocol-lwm2m-components-bootstrap-parameters.mjs +2 -2
  117. package/fesm2020/c8y-ngx-components-protocol-lwm2m-components-bootstrap-parameters.mjs.map +1 -1
  118. package/fesm2020/c8y-ngx-components-protocol-lwm2m-components-configuration.mjs +1 -1
  119. package/fesm2020/c8y-ngx-components-protocol-lwm2m-components-configuration.mjs.map +1 -1
  120. package/fesm2020/c8y-ngx-components-register-device.mjs +3 -3
  121. package/fesm2020/c8y-ngx-components-register-device.mjs.map +1 -1
  122. package/fesm2020/c8y-ngx-components-replace-device.mjs +16 -8
  123. package/fesm2020/c8y-ngx-components-replace-device.mjs.map +1 -1
  124. package/fesm2020/c8y-ngx-components-reports.mjs +2 -2
  125. package/fesm2020/c8y-ngx-components-reports.mjs.map +1 -1
  126. package/fesm2020/c8y-ngx-components-repository-configuration.mjs +13 -5
  127. package/fesm2020/c8y-ngx-components-repository-configuration.mjs.map +1 -1
  128. package/fesm2020/c8y-ngx-components-sms-gateway.mjs +6 -6
  129. package/fesm2020/c8y-ngx-components-sms-gateway.mjs.map +1 -1
  130. package/fesm2020/c8y-ngx-components-sub-assets.mjs +43 -18
  131. package/fesm2020/c8y-ngx-components-sub-assets.mjs.map +1 -1
  132. package/fesm2020/c8y-ngx-components-tenants.mjs +11 -6
  133. package/fesm2020/c8y-ngx-components-tenants.mjs.map +1 -1
  134. package/fesm2020/c8y-ngx-components-upgrade.mjs +4 -2
  135. package/fesm2020/c8y-ngx-components-upgrade.mjs.map +1 -1
  136. package/fesm2020/c8y-ngx-components-widgets-cockpit.mjs.map +1 -1
  137. package/fesm2020/c8y-ngx-components-widgets-device-management.mjs.map +1 -1
  138. package/fesm2020/c8y-ngx-components.mjs +126 -29
  139. package/fesm2020/c8y-ngx-components.mjs.map +1 -1
  140. package/locales/locales.pot +3 -0
  141. package/location/location.component.d.ts +2 -2
  142. package/map/cluster-map.component.d.ts +3 -1
  143. package/map/map-status.component.d.ts +12 -1
  144. package/map/map.component.d.ts +1 -1
  145. package/map/map.model.d.ts +0 -1
  146. package/map/map.service.d.ts +6 -0
  147. package/package.json +1 -1
  148. package/replace-device/replace-device.service.d.ts +3 -1
  149. package/tenants/tenant-list/tenant-list.component.d.ts +4 -2
  150. package/upgrade/ng1/downgraded.services.d.ts +1 -0
  151. package/widgets/cockpit/index.d.ts +2 -1
  152. package/widgets/device-management/index.d.ts +2 -1
@@ -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: "15.2.7", 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==
@@ -5,11 +5,17 @@ import { Subject } from 'rxjs';
5
5
  import { takeUntil } from 'rxjs/operators';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "@c8y/ngx-components";
8
- export const REQUIRED_ROLES = [
9
- 'ROLE_INVENTORY_READ',
10
- 'ROLE_INVENTORY_ADMIN',
11
- 'ROLE_IDENTITY_READ',
12
- 'ROLE_IDENTITY_ADMIN'
8
+ export const REQUIRED_IDENTITY_ROLES = [
9
+ Permissions.ROLE_IDENTITY_READ,
10
+ Permissions.ROLE_IDENTITY_ADMIN
11
+ ];
12
+ export const REQUIRED_INVENTORY_ROLES = [
13
+ Permissions.ROLE_INVENTORY_READ,
14
+ Permissions.ROLE_INVENTORY_ADMIN
15
+ ];
16
+ export const REQUIRED_MANAGED_OBJECT_ROLES = [
17
+ Permissions.ROLE_MANAGED_OBJECT_READ,
18
+ Permissions.ROLE_MANAGED_OBJECT_ADMIN
13
19
  ];
14
20
  export class ReplaceDeviceService {
15
21
  constructor(permissions, breadcrumbService, drawerService) {
@@ -19,7 +25,9 @@ export class ReplaceDeviceService {
19
25
  this.destroyed$ = new Subject();
20
26
  }
21
27
  canShowReplaceDevice(device) {
22
- return (this.permissions.hasAllRoles(REQUIRED_ROLES) &&
28
+ return ((this.permissions.hasAllRoles(REQUIRED_INVENTORY_ROLES) ||
29
+ this.permissions.hasAllRoles(REQUIRED_MANAGED_OBJECT_ROLES)) &&
30
+ this.permissions.hasAllRoles(REQUIRED_IDENTITY_ROLES) &&
23
31
  !isNil(device.c8y_IsDevice) &&
24
32
  isNil(device.c8y_IsLwm2mDevice));
25
33
  }
@@ -55,4 +63,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
55
63
  type: Injectable,
56
64
  args: [{ providedIn: 'root' }]
57
65
  }], ctorParameters: function () { return [{ type: i1.Permissions }, { type: i1.BreadcrumbService }, { type: i1.BottomDrawerService }]; } });
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZS1kZXZpY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3JlcGxhY2UtZGV2aWNlL3JlcGxhY2UtZGV2aWNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUV0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25HLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUUzQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIscUJBQXFCO0lBQ3JCLHNCQUFzQjtJQUN0QixvQkFBb0I7SUFDcEIscUJBQXFCO0NBQ3RCLENBQUM7QUFHRixNQUFNLE9BQU8sb0JBQW9CO0lBRy9CLFlBQ1UsV0FBd0IsRUFDeEIsaUJBQW9DLEVBQ3BDLGFBQWtDO1FBRmxDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBTHBDLGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBTXRDLENBQUM7SUFFSixvQkFBb0IsQ0FBQyxNQUFzQjtRQUN6QyxPQUFPLENBQ0wsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDO1lBQzVDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7WUFDM0IsS0FBSyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUNoQyxDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQUMsZUFBK0IsRUFBRSxhQUEwQjtRQUMxRSxNQUFNLEVBQUUsNEJBQTRCLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FDbkQsMkNBQTJDLENBQzVDLENBQUM7UUFDRixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyw0QkFBNEIsRUFBRTtZQUM1RSxZQUFZLEVBQUUsRUFBRSxlQUFlLEVBQUU7U0FDbEMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDbEUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDekIsSUFBSSxPQUFPLGFBQWEsS0FBSyxVQUFVLEVBQUU7Z0JBQ3ZDLGFBQWEsRUFBRSxDQUFDO2FBQ2pCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUNsQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUN4RixDQUFDO1FBQ0YsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25DLENBQUM7O2lIQWhEVSxvQkFBb0I7cUhBQXBCLG9CQUFvQixjQURQLE1BQU07MkZBQ25CLG9CQUFvQjtrQkFEaEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQm90dG9tRHJhd2VyU2VydmljZSwgQnJlYWRjcnVtYlNlcnZpY2UsIGdldHRleHQsIFBlcm1pc3Npb25zIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCBjb25zdCBSRVFVSVJFRF9ST0xFUyA9IFtcbiAgJ1JPTEVfSU5WRU5UT1JZX1JFQUQnLFxuICAnUk9MRV9JTlZFTlRPUllfQURNSU4nLFxuICAnUk9MRV9JREVOVElUWV9SRUFEJyxcbiAgJ1JPTEVfSURFTlRJVFlfQURNSU4nXG5dO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFJlcGxhY2VEZXZpY2VTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBkZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBlcm1pc3Npb25zOiBQZXJtaXNzaW9ucyxcbiAgICBwcml2YXRlIGJyZWFkY3J1bWJTZXJ2aWNlOiBCcmVhZGNydW1iU2VydmljZSxcbiAgICBwcml2YXRlIGRyYXdlclNlcnZpY2U6IEJvdHRvbURyYXdlclNlcnZpY2VcbiAgKSB7fVxuXG4gIGNhblNob3dSZXBsYWNlRGV2aWNlKGRldmljZTogSU1hbmFnZWRPYmplY3QpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5wZXJtaXNzaW9ucy5oYXNBbGxSb2xlcyhSRVFVSVJFRF9ST0xFUykgJiZcbiAgICAgICFpc05pbChkZXZpY2UuYzh5X0lzRGV2aWNlKSAmJlxuICAgICAgaXNOaWwoZGV2aWNlLmM4eV9Jc0x3bTJtRGV2aWNlKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBvcGVuRHJhd2VyKGRldmljZVRvUmVwbGFjZTogSU1hbmFnZWRPYmplY3QsIGNsb3NlQ2FsbGJhY2s/OiAoKSA9PiB2b2lkKSB7XG4gICAgY29uc3QgeyBSZXBsYWNlRGV2aWNlV2l6YXJkQ29tcG9uZW50IH0gPSBhd2FpdCBpbXBvcnQoXG4gICAgICAnQGM4eS9uZ3gtY29tcG9uZW50cy9yZXBsYWNlLWRldmljZS13aXphcmQnXG4gICAgKTtcbiAgICBjb25zdCBkcmF3ZXJSZWYgPSB0aGlzLmRyYXdlclNlcnZpY2Uub3BlbkRyYXdlcihSZXBsYWNlRGV2aWNlV2l6YXJkQ29tcG9uZW50LCB7XG4gICAgICBpbml0aWFsU3RhdGU6IHsgZGV2aWNlVG9SZXBsYWNlIH1cbiAgICB9KTtcbiAgICB0aGlzLmFwcGVuZEJyZWFkY3J1bWJzKCk7XG4gICAgZHJhd2VyUmVmLm9uQ2xvc2VkJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5yZW1vdmVCcmVhZGNydW1icygpO1xuICAgICAgaWYgKHR5cGVvZiBjbG9zZUNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNsb3NlQ2FsbGJhY2soKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveWVkJC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95ZWQkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIGFwcGVuZEJyZWFkY3J1bWJzKCk6IHZvaWQge1xuICAgIHRoaXMuYnJlYWRjcnVtYlNlcnZpY2Uuc3RhdGUuZm9yRWFjaChcbiAgICAgIGJjID0+IChiYy5pdGVtcyA9IFsuLi5iYy5pdGVtcywgeyBsYWJlbDogZ2V0dGV4dCgnUmVwbGFjZSBkZXZpY2UnKSwgcGF0aDogdW5kZWZpbmVkIH1dKVxuICAgICk7XG4gICAgdGhpcy5icmVhZGNydW1iU2VydmljZS5yZWZyZXNoKCk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUJyZWFkY3J1bWJzKCk6IHZvaWQge1xuICAgIHRoaXMuYnJlYWRjcnVtYlNlcnZpY2Uuc3RhdGUuZm9yRWFjaChiYyA9PiBiYy5pdGVtcz8ucG9wKCkpO1xuICAgIHRoaXMuYnJlYWRjcnVtYlNlcnZpY2UucmVmcmVzaCgpO1xuICB9XG59XG4iXX0=
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZS1kZXZpY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3JlcGxhY2UtZGV2aWNlL3JlcGxhY2UtZGV2aWNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUV0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25HLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUUzQyxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRztJQUNyQyxXQUFXLENBQUMsa0JBQWtCO0lBQzlCLFdBQVcsQ0FBQyxtQkFBbUI7Q0FDaEMsQ0FBQztBQUNGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHO0lBQ3RDLFdBQVcsQ0FBQyxtQkFBbUI7SUFDL0IsV0FBVyxDQUFDLG9CQUFvQjtDQUNqQyxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUc7SUFDM0MsV0FBVyxDQUFDLHdCQUF3QjtJQUNwQyxXQUFXLENBQUMseUJBQXlCO0NBQ3RDLENBQUM7QUFHRixNQUFNLE9BQU8sb0JBQW9CO0lBRy9CLFlBQ1UsV0FBd0IsRUFDeEIsaUJBQW9DLEVBQ3BDLGFBQWtDO1FBRmxDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBTHBDLGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBTXRDLENBQUM7SUFFSixvQkFBb0IsQ0FBQyxNQUFzQjtRQUN6QyxPQUFPLENBQ0wsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyx3QkFBd0IsQ0FBQztZQUNyRCxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1lBQzlELElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLHVCQUF1QixDQUFDO1lBQ3JELENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7WUFDM0IsS0FBSyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUNoQyxDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQUMsZUFBK0IsRUFBRSxhQUEwQjtRQUMxRSxNQUFNLEVBQUUsNEJBQTRCLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FDbkQsMkNBQTJDLENBQzVDLENBQUM7UUFDRixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyw0QkFBNEIsRUFBRTtZQUM1RSxZQUFZLEVBQUUsRUFBRSxlQUFlLEVBQUU7U0FDbEMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDbEUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDekIsSUFBSSxPQUFPLGFBQWEsS0FBSyxVQUFVLEVBQUU7Z0JBQ3ZDLGFBQWEsRUFBRSxDQUFDO2FBQ2pCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUNsQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUN4RixDQUFDO1FBQ0YsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25DLENBQUM7O2lIQWxEVSxvQkFBb0I7cUhBQXBCLG9CQUFvQixjQURQLE1BQU07MkZBQ25CLG9CQUFvQjtrQkFEaEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQm90dG9tRHJhd2VyU2VydmljZSwgQnJlYWRjcnVtYlNlcnZpY2UsIGdldHRleHQsIFBlcm1pc3Npb25zIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCBjb25zdCBSRVFVSVJFRF9JREVOVElUWV9ST0xFUyA9IFtcbiAgUGVybWlzc2lvbnMuUk9MRV9JREVOVElUWV9SRUFELFxuICBQZXJtaXNzaW9ucy5ST0xFX0lERU5USVRZX0FETUlOXG5dO1xuZXhwb3J0IGNvbnN0IFJFUVVJUkVEX0lOVkVOVE9SWV9ST0xFUyA9IFtcbiAgUGVybWlzc2lvbnMuUk9MRV9JTlZFTlRPUllfUkVBRCxcbiAgUGVybWlzc2lvbnMuUk9MRV9JTlZFTlRPUllfQURNSU5cbl07XG5leHBvcnQgY29uc3QgUkVRVUlSRURfTUFOQUdFRF9PQkpFQ1RfUk9MRVMgPSBbXG4gIFBlcm1pc3Npb25zLlJPTEVfTUFOQUdFRF9PQkpFQ1RfUkVBRCxcbiAgUGVybWlzc2lvbnMuUk9MRV9NQU5BR0VEX09CSkVDVF9BRE1JTlxuXTtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBSZXBsYWNlRGV2aWNlU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwZXJtaXNzaW9uczogUGVybWlzc2lvbnMsXG4gICAgcHJpdmF0ZSBicmVhZGNydW1iU2VydmljZTogQnJlYWRjcnVtYlNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkcmF3ZXJTZXJ2aWNlOiBCb3R0b21EcmF3ZXJTZXJ2aWNlXG4gICkge31cblxuICBjYW5TaG93UmVwbGFjZURldmljZShkZXZpY2U6IElNYW5hZ2VkT2JqZWN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgICh0aGlzLnBlcm1pc3Npb25zLmhhc0FsbFJvbGVzKFJFUVVJUkVEX0lOVkVOVE9SWV9ST0xFUykgfHxcbiAgICAgICAgdGhpcy5wZXJtaXNzaW9ucy5oYXNBbGxSb2xlcyhSRVFVSVJFRF9NQU5BR0VEX09CSkVDVF9ST0xFUykpICYmXG4gICAgICB0aGlzLnBlcm1pc3Npb25zLmhhc0FsbFJvbGVzKFJFUVVJUkVEX0lERU5USVRZX1JPTEVTKSAmJlxuICAgICAgIWlzTmlsKGRldmljZS5jOHlfSXNEZXZpY2UpICYmXG4gICAgICBpc05pbChkZXZpY2UuYzh5X0lzTHdtMm1EZXZpY2UpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIG9wZW5EcmF3ZXIoZGV2aWNlVG9SZXBsYWNlOiBJTWFuYWdlZE9iamVjdCwgY2xvc2VDYWxsYmFjaz86ICgpID0+IHZvaWQpIHtcbiAgICBjb25zdCB7IFJlcGxhY2VEZXZpY2VXaXphcmRDb21wb25lbnQgfSA9IGF3YWl0IGltcG9ydChcbiAgICAgICdAYzh5L25neC1jb21wb25lbnRzL3JlcGxhY2UtZGV2aWNlLXdpemFyZCdcbiAgICApO1xuICAgIGNvbnN0IGRyYXdlclJlZiA9IHRoaXMuZHJhd2VyU2VydmljZS5vcGVuRHJhd2VyKFJlcGxhY2VEZXZpY2VXaXphcmRDb21wb25lbnQsIHtcbiAgICAgIGluaXRpYWxTdGF0ZTogeyBkZXZpY2VUb1JlcGxhY2UgfVxuICAgIH0pO1xuICAgIHRoaXMuYXBwZW5kQnJlYWRjcnVtYnMoKTtcbiAgICBkcmF3ZXJSZWYub25DbG9zZWQkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnJlbW92ZUJyZWFkY3J1bWJzKCk7XG4gICAgICBpZiAodHlwZW9mIGNsb3NlQ2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgY2xvc2VDYWxsYmFjaygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwZW5kQnJlYWRjcnVtYnMoKTogdm9pZCB7XG4gICAgdGhpcy5icmVhZGNydW1iU2VydmljZS5zdGF0ZS5mb3JFYWNoKFxuICAgICAgYmMgPT4gKGJjLml0ZW1zID0gWy4uLmJjLml0ZW1zLCB7IGxhYmVsOiBnZXR0ZXh0KCdSZXBsYWNlIGRldmljZScpLCBwYXRoOiB1bmRlZmluZWQgfV0pXG4gICAgKTtcbiAgICB0aGlzLmJyZWFkY3J1bWJTZXJ2aWNlLnJlZnJlc2goKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlQnJlYWRjcnVtYnMoKTogdm9pZCB7XG4gICAgdGhpcy5icmVhZGNydW1iU2VydmljZS5zdGF0ZS5mb3JFYWNoKGJjID0+IGJjLml0ZW1zPy5wb3AoKSk7XG4gICAgdGhpcy5icmVhZGNydW1iU2VydmljZS5yZWZyZXNoKCk7XG4gIH1cbn1cbiJdfQ==
@@ -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';
@@ -93,7 +93,7 @@ export class ExportSchedulesComponent {
93
93
  }
94
94
  async checkRole() {
95
95
  const { data } = await this.userService.current();
96
- const role = 'ROLE_SCHEDULE_REPORT_ADMIN';
96
+ const role = Permissions.ROLE_SCHEDULE_REPORT_ADMIN;
97
97
  const hasRole = this.userService.hasRole(data, role);
98
98
  return hasRole;
99
99
  }
@@ -157,4 +157,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
157
157
  }], onSchedulesUpdate: [{
158
158
  type: Output
159
159
  }] } });
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LXNjaGVkdWxlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9yZXBvcnRzL2V4cG9ydC1zY2hlZHVsZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vcmVwb3J0cy9leHBvcnQtc2NoZWR1bGVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBb0MsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQTRCLE1BQU0scUJBQXFCLENBQUM7QUFDL0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7Ozs7Ozs7QUFLcEMsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQyxJQUFhLFFBQVEsQ0FBQyxRQUFxQjtRQUN6QyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztJQUM1QixDQUFDO0lBMENELFlBQ1UsY0FBOEIsRUFDOUIsY0FBOEIsRUFDL0IsV0FBd0IsRUFDdkIsZ0JBQWtDLEVBQ2xDLFdBQXdCLEVBQ3hCLGNBQThCO1FBTDlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDL0IsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDdkIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUE5QzlCLHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFjLENBQUM7UUFHN0QsaUJBQVksR0FBZSxFQUFFLENBQUM7UUFDOUIsb0JBQWUsR0FBYTtZQUMxQixTQUFTLEVBQUUsSUFBSTtZQUNmLFdBQVcsRUFBRTtnQkFDWCxFQUFFLEVBQUUsRUFBRTtnQkFDTixFQUFFLEVBQUUsRUFBRTtnQkFDTixHQUFHLEVBQUUsRUFBRTtnQkFDUCxPQUFPLEVBQUUsRUFBRTtnQkFDWCxJQUFJLEVBQUUsRUFBRTtnQkFDUixPQUFPLEVBQUUsRUFBRTthQUNaO1lBQ0QsVUFBVSxFQUFFO2dCQUNWLE1BQU0sRUFBRSxHQUFHO2dCQUNYLElBQUksRUFBRSxHQUFHO2dCQUNULEdBQUcsRUFBRSxHQUFHO2dCQUNSLEtBQUssRUFBRSxHQUFHO2dCQUNWLE9BQU8sRUFBRSxHQUFHO2FBQ2I7U0FDRixDQUFDO1FBRUYsY0FBUyxHQUFHLGVBQWUsQ0FBQztRQUc1QixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixXQUFNLEdBQVEsRUFBRSxDQUFDO1FBRWpCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBRXZCLHFCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUN0QixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUVoQiwrQkFBMEIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUNoRSxPQUFPLENBQ0wsOEdBQThHLENBQy9HLENBQ0YsQ0FBQztRQVVBLElBQUksQ0FBQyxhQUFhLEdBQUc7WUFDbkIsVUFBVSxFQUFFLEtBQUs7WUFDakIsSUFBSSxFQUFFLEtBQUs7WUFDWCxLQUFLLEVBQUUsS0FBSztTQUNiLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVE7UUFDWixJQUFJLENBQUMsZUFBZSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzlDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzFELElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUMvRSxlQUFlLEVBQ2YsdUJBQXVCLENBQ3hCLENBQUM7UUFDRixJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNsRCxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLHdCQUF3QixDQUN4RixlQUFlLEVBQ2YsdUJBQXVCLEVBQ3ZCLElBQUksQ0FBQywwQkFBMEIsQ0FDaEMsQ0FBQztTQUNIO1FBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsRUFBRSxHQUFHLGdCQUFnQixDQUFDO1FBQ3ZELElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQ3RFLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQyxFQUNsQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUMzQixDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQscUJBQXFCO1FBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUc7WUFDbEIsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzdELGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7WUFDMUYsU0FBUyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDdkUscUJBQXFCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FDbEQsT0FBTyxDQUFDLHFDQUFxQyxDQUFDLENBQy9DO1lBQ0QsTUFBTSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDakUsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsa0NBQWtDLENBQUMsQ0FBQztTQUMvRixDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxtQkFBbUI7UUFDdkIsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNsRCxPQUFPLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFDRCxLQUFLLENBQUMsU0FBUztRQUNiLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbEQsTUFBTSxJQUFJLEdBQUcsNEJBQTRCLENBQUM7UUFDMUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3JELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxLQUFLLENBQUMsZUFBZSxDQUFDLFlBQXFCO1FBQ3pDLElBQUksWUFBWSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztTQUN0QztRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUUsSUFBSSxZQUFZLEVBQUU7WUFDaEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1NBQ3ZDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRUQsWUFBWSxDQUFDLFFBQWtCLEVBQUUsS0FBYSxFQUFFLEtBQVU7UUFDeEQsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3hCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN6RTtJQUNILENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxRQUFrQixFQUFFLEtBQVU7UUFDOUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELGdCQUFnQixDQUNkLFFBQXFCLEVBQ3JCLFFBQWtCLEVBQ2xCLFVBQXNCLEVBQ3RCLEtBQWM7UUFFZCxNQUFNLE9BQU8sR0FBRyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ3hFLE1BQU0sWUFBWSxHQUFHO1lBQ25CLEtBQUssRUFBRSxVQUFVO1lBQ2pCLGVBQWUsRUFBRSxZQUFZO1lBQzdCLGNBQWMsRUFBRSxhQUFhO1lBQzdCLFlBQVksRUFBRSxPQUFPO1NBQ04sQ0FBQztRQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQy9FLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFvQixFQUFFLEVBQUUsQ0FDL0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FDdEMsQ0FBQztJQUNKLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxPQUF1QixFQUFFLEtBQWM7UUFDekQsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFO1lBQ25CLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtnQkFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO2FBQzdDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUMxQztZQUNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ2hEO0lBQ0gsQ0FBQztJQUVELGNBQWMsQ0FBQyxRQUFrQixFQUFFLEtBQWEsRUFBRSxLQUFVO1FBQzFELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDakQsQ0FBQzs7cUhBM0tVLHdCQUF3Qjt5R0FBeEIsd0JBQXdCLG9LQ2hCckMsbXdQQStMQTsyRkQvS2Esd0JBQXdCO2tCQUpwQyxTQUFTOytCQUNFLGtCQUFrQjtrUEFJZixRQUFRO3NCQUFwQixLQUFLO2dCQUlJLGlCQUFpQjtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRXhwb3J0LCBTY2hlZHVsZSwgRW1pdHRlclBheWxvYWQsIEFjdGlvblR5cGUgfSBmcm9tICcuL2V4cG9ydC1zY2hlZHVsZXMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJlcG9ydHNTZXJ2aWNlIH0gZnJvbSAnLi9yZXBvcnRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQnNNb2RhbFNlcnZpY2UsIEJzTW9kYWxSZWYsIE1vZGFsT3B0aW9ucyB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgU2NoZWR1bGVNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vc2NoZWR1bGUtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IGdldHRleHQsIE9wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQ3JvblNlcnZpY2UgfSBmcm9tICcuL2Nyb24uc2VydmljZSc7XG5pbXBvcnQgeyBJZFJlZmVyZW5jZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdleHBvcnQtc2NoZWR1bGVzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2V4cG9ydC1zY2hlZHVsZXMuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEV4cG9ydFNjaGVkdWxlc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgc2V0IGV4cG9ydElkKGV4cG9ydElkOiBJZFJlZmVyZW5jZSkge1xuICAgIHRoaXMuX2V4cG9ydElkID0gZXhwb3J0SWQ7XG4gIH1cblxuICBAT3V0cHV0KCkgb25TY2hlZHVsZXNVcGRhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPFNjaGVkdWxlW10+KCk7XG5cbiAgZXhwOiBFeHBvcnQ7XG4gIHNjaGVkdWxlTGlzdDogU2NoZWR1bGVbXSA9IFtdO1xuICBpbml0aWFsU2NoZWR1bGU6IFNjaGVkdWxlID0ge1xuICAgIHRpbWVzdGFtcDogbnVsbCxcbiAgICBlbWFpbENvbmZpZzoge1xuICAgICAgdG86IFtdLFxuICAgICAgY2M6IFtdLFxuICAgICAgYmNjOiBbXSxcbiAgICAgIHJlcGx5VG86ICcnLFxuICAgICAgdGV4dDogJycsXG4gICAgICBzdWJqZWN0OiAnJ1xuICAgIH0sXG4gICAgY3JvbkNvbmZpZzoge1xuICAgICAgbWludXRlOiAnMCcsXG4gICAgICBob3VyOiAnMCcsXG4gICAgICBkYXk6ICcxJyxcbiAgICAgIG1vbnRoOiAnMScsXG4gICAgICB3ZWVrZGF5OiAnPydcbiAgICB9XG4gIH07XG4gIGJ1dHRvbkxhYmVsczogYW55O1xuICBsaXN0Q2xhc3MgPSAnaW50ZXJhY3QtbGlzdCc7XG4gIGxvYWRpbmdTdGF0dXM6IGFueTtcbiAgc29ydFR5cGU6IHN0cmluZztcbiAgc29ydFJldmVyc2UgPSBmYWxzZTtcbiAgaXNPcGVuOiBhbnkgPSB7fTtcbiAgaXNGbGlwcGVkOiBib29sZWFuO1xuICBpc0VkaXRNZW51T3BlbiA9IGZhbHNlO1xuICBtb2RhbFJlZjogQnNNb2RhbFJlZjtcbiAgY3VycmVudFVzZXJFbWFpbCA9ICcnO1xuICBoYXNSZXF1aXJlZFJvbGUgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZXhwb3J0SWQ6IElkUmVmZXJlbmNlO1xuICBwcml2YXRlIGRlZmF1bHRFeHBvcnRFbWFpbFRlbXBsYXRlID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgZ2V0dGV4dChcbiAgICAgICdGaWxlIHdpdGggZXhwb3J0ZWQgZGF0YSBjYW4gYmUgZG93bmxvYWRlZCBmcm9tIHt0ZW5hbnQtZG9tYWlufS9hcHBzL2NvY2twaXQvaW5kZXguaHRtbCM/ZG93bmxvYWQ9e2JpbmFyeUlkfS4nXG4gICAgKVxuICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVwb3J0c1NlcnZpY2U6IFJlcG9ydHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgYnNNb2RhbFNlcnZpY2U6IEJzTW9kYWxTZXJ2aWNlLFxuICAgIHB1YmxpYyBjcm9uU2VydmljZTogQ3JvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgb3B0aW9uc1NlcnZpY2U6IE9wdGlvbnNTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMubG9hZGluZ1N0YXR1cyA9IHtcbiAgICAgIGluUHJvZ3Jlc3M6IGZhbHNlLFxuICAgICAgZG9uZTogZmFsc2UsXG4gICAgICBlcnJvcjogZmFsc2VcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5oYXNSZXF1aXJlZFJvbGUgPSBhd2FpdCB0aGlzLmNoZWNrUm9sZSgpO1xuICAgIHRoaXMuZ2V0U2NoZWR1bGVMaXN0KHRydWUpO1xuICAgIGNvbnN0IGN1cnJlbnRVc2VyRW1haWwgPSBhd2FpdCB0aGlzLmdldEN1cnJlbnRVc2VyRW1haWwoKTtcbiAgICB0aGlzLmluaXRpYWxTY2hlZHVsZS5lbWFpbENvbmZpZy50ZXh0ID0gYXdhaXQgdGhpcy5vcHRpb25zU2VydmljZS5nZXRUZW5hbnRPcHRpb24oXG4gICAgICAnY29uZmlndXJhdGlvbicsXG4gICAgICAnZXhwb3J0LmRhdGEubWFpbC50ZXh0J1xuICAgICk7XG4gICAgaWYgKGlzRW1wdHkodGhpcy5pbml0aWFsU2NoZWR1bGUuZW1haWxDb25maWcudGV4dCkpIHtcbiAgICAgIHRoaXMuaW5pdGlhbFNjaGVkdWxlLmVtYWlsQ29uZmlnLnRleHQgPSBhd2FpdCB0aGlzLm9wdGlvbnNTZXJ2aWNlLmdldEluaGVyaXRlZFRlbmFudE9wdGlvbihcbiAgICAgICAgJ2NvbmZpZ3VyYXRpb24nLFxuICAgICAgICAnZXhwb3J0LmRhdGEubWFpbC50ZXh0JyxcbiAgICAgICAgdGhpcy5kZWZhdWx0RXhwb3J0RW1haWxUZW1wbGF0ZVxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5pbml0aWFsU2NoZWR1bGUuZW1haWxDb25maWcudG8gPSBjdXJyZW50VXNlckVtYWlsO1xuICAgIHRoaXMuZXhwID0gYXdhaXQgdGhpcy5yZXBvcnRzU2VydmljZS5nZXRFeHBvcnQodGhpcy5fZXhwb3J0SWQpO1xuICAgIHRoaXMuaW5pdGlhbFNjaGVkdWxlLmVtYWlsQ29uZmlnLnN1YmplY3QgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgIGdldHRleHQoJ0V4cG9ydCBvZiBcInt7ZXhwTmFtZX19XCInKSxcbiAgICAgIHsgZXhwTmFtZTogdGhpcy5leHAubmFtZSB9XG4gICAgKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIHRoaXMudHJhbnNsYXRlQnV0dG9uVGl0bGVzKCk7XG4gIH1cblxuICB0cmFuc2xhdGVCdXR0b25UaXRsZXMoKSB7XG4gICAgdGhpcy5idXR0b25MYWJlbHMgPSB7XG4gICAgICBlZGl0OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChnZXR0ZXh0KCdFZGl0IHNjaGVkdWxlJykpLFxuICAgICAgZWRpdE5vUGVybWlzc2lvbjogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZ2V0dGV4dCgnRWRpdCBzY2hlZHVsZSAtIG5vIHBlcm1pc3Npb25zJykpLFxuICAgICAgZHVwbGljYXRlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChnZXR0ZXh0KCdEdXBsaWNhdGUgc2NoZWR1bGUnKSksXG4gICAgICBkdXBsaWNhdGVOb1Blcm1pc3Npb246IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICBnZXR0ZXh0KCdEdXBsaWNhdGUgc2NoZWR1bGUgLSBubyBwZXJtaXNzaW9ucycpXG4gICAgICApLFxuICAgICAgZGVsZXRlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChnZXR0ZXh0KCdEZWxldGUgc2NoZWR1bGUnKSksXG4gICAgICBkZWxldGVOb1Blcm1pc3Npb246IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJ0RlbGV0ZSBzY2hlZHVsZSAtIG5vIHBlcm1pc3Npb25zJykpXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGdldEN1cnJlbnRVc2VyRW1haWwoKSB7XG4gICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnQoKTtcbiAgICByZXR1cm4gZGF0YSAmJiBkYXRhLmVtYWlsID8gW2RhdGEuZW1haWxdIDogW107XG4gIH1cbiAgYXN5bmMgY2hlY2tSb2xlKCkge1xuICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy51c2VyU2VydmljZS5jdXJyZW50KCk7XG4gICAgY29uc3Qgcm9sZSA9ICdST0xFX1NDSEVEVUxFX1JFUE9SVF9BRE1JTic7XG4gICAgY29uc3QgaGFzUm9sZSA9IHRoaXMudXNlclNlcnZpY2UuaGFzUm9sZShkYXRhLCByb2xlKTtcbiAgICByZXR1cm4gaGFzUm9sZTtcbiAgfVxuXG4gIGFzeW5jIGdldFNjaGVkdWxlTGlzdCh3aXRoUHJvZ3Jlc3M6IGJvb2xlYW4pIHtcbiAgICBpZiAod2l0aFByb2dyZXNzKSB7XG4gICAgICB0aGlzLmxvYWRpbmdTdGF0dXMuaW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuc2NoZWR1bGVMaXN0ID0gYXdhaXQgdGhpcy5yZXBvcnRzU2VydmljZS5nZXRTY2hlZHVsZUxpc3QodGhpcy5fZXhwb3J0SWQpO1xuICAgIGlmICh3aXRoUHJvZ3Jlc3MpIHtcbiAgICAgIHRoaXMubG9hZGluZ1N0YXR1cy5pblByb2dyZXNzID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgYWRkU2NoZWR1bGUoKSB7XG4gICAgdGhpcy5vcGVuQWRkRWRpdE1vZGFsKHRoaXMuX2V4cG9ydElkLCB0aGlzLmluaXRpYWxTY2hlZHVsZSwgQWN0aW9uVHlwZS5DUkVBVEUpO1xuICB9XG5cbiAgZWRpdFNjaGVkdWxlKHNjaGVkdWxlOiBTY2hlZHVsZSwgaW5kZXg6IG51bWJlciwgZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLmhhc1JlcXVpcmVkUm9sZSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMub3BlbkFkZEVkaXRNb2RhbCh0aGlzLl9leHBvcnRJZCwgc2NoZWR1bGUsIEFjdGlvblR5cGUuRURJVCwgaW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIGR1cGxpY2F0ZVNjaGVkdWxlKHNjaGVkdWxlOiBTY2hlZHVsZSwgZXZlbnQ6IGFueSkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5vcGVuQWRkRWRpdE1vZGFsKHRoaXMuX2V4cG9ydElkLCBzY2hlZHVsZSwgQWN0aW9uVHlwZS5EVVBMSUNBVEUpO1xuICB9XG5cbiAgb3BlbkFkZEVkaXRNb2RhbChcbiAgICBleHBvcnRJZDogSWRSZWZlcmVuY2UsXG4gICAgc2NoZWR1bGU6IFNjaGVkdWxlLFxuICAgIGFjdGlvblR5cGU6IEFjdGlvblR5cGUsXG4gICAgaW5kZXg/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==
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LXNjaGVkdWxlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9yZXBvcnRzL2V4cG9ydC1zY2hlZHVsZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vcmVwb3J0cy9leHBvcnQtc2NoZWR1bGVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBb0MsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQTRCLE1BQU0scUJBQXFCLENBQUM7QUFDL0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDM0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7Ozs7Ozs7O0FBS3BDLE1BQU0sT0FBTyx3QkFBd0I7SUFDbkMsSUFBYSxRQUFRLENBQUMsUUFBcUI7UUFDekMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7SUFDNUIsQ0FBQztJQTBDRCxZQUNVLGNBQThCLEVBQzlCLGNBQThCLEVBQy9CLFdBQXdCLEVBQ3ZCLGdCQUFrQyxFQUNsQyxXQUF3QixFQUN4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d0JBQXdCO3lHQUF4Qix3QkFBd0Isb0tDaEJyQyxtd1BBK0xBOzJGRC9LYSx3QkFBd0I7a0JBSnBDLFNBQVM7K0JBQ0Usa0JBQWtCO2tQQUlmLFFBQVE7c0JBQXBCLEtBQUs7Z0JBSUksaUJBQWlCO3NCQUExQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFeHBvcnQsIFNjaGVkdWxlLCBFbWl0dGVyUGF5bG9hZCwgQWN0aW9uVHlwZSB9IGZyb20gJy4vZXhwb3J0LXNjaGVkdWxlcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUmVwb3J0c1NlcnZpY2UgfSBmcm9tICcuL3JlcG9ydHMuc2VydmljZSc7XG5pbXBvcnQgeyBCc01vZGFsU2VydmljZSwgQnNNb2RhbFJlZiwgTW9kYWxPcHRpb25zIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBTY2hlZHVsZU1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9zY2hlZHVsZS1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgZ2V0dGV4dCwgT3B0aW9uc1NlcnZpY2UsIFBlcm1pc3Npb25zIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQ3JvblNlcnZpY2UgfSBmcm9tICcuL2Nyb24uc2VydmljZSc7XG5pbXBvcnQgeyBJZFJlZmVyZW5jZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdleHBvcnQtc2NoZWR1bGVzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2V4cG9ydC1zY2hlZHVsZXMuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEV4cG9ydFNjaGVkdWxlc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgc2V0IGV4cG9ydElkKGV4cG9ydElkOiBJZFJlZmVyZW5jZSkge1xuICAgIHRoaXMuX2V4cG9ydElkID0gZXhwb3J0SWQ7XG4gIH1cblxuICBAT3V0cHV0KCkgb25TY2hlZHVsZXNVcGRhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPFNjaGVkdWxlW10+KCk7XG5cbiAgZXhwOiBFeHBvcnQ7XG4gIHNjaGVkdWxlTGlzdDogU2NoZWR1bGVbXSA9IFtdO1xuICBpbml0aWFsU2NoZWR1bGU6IFNjaGVkdWxlID0ge1xuICAgIHRpbWVzdGFtcDogbnVsbCxcbiAgICBlbWFpbENvbmZpZzoge1xuICAgICAgdG86IFtdLFxuICAgICAgY2M6IFtdLFxuICAgICAgYmNjOiBbXSxcbiAgICAgIHJlcGx5VG86ICcnLFxuICAgICAgdGV4dDogJycsXG4gICAgICBzdWJqZWN0OiAnJ1xuICAgIH0sXG4gICAgY3JvbkNvbmZpZzoge1xuICAgICAgbWludXRlOiAnMCcsXG4gICAgICBob3VyOiAnMCcsXG4gICAgICBkYXk6ICcxJyxcbiAgICAgIG1vbnRoOiAnMScsXG4gICAgICB3ZWVrZGF5OiAnPydcbiAgICB9XG4gIH07XG4gIGJ1dHRvbkxhYmVsczogYW55O1xuICBsaXN0Q2xhc3MgPSAnaW50ZXJhY3QtbGlzdCc7XG4gIGxvYWRpbmdTdGF0dXM6IGFueTtcbiAgc29ydFR5cGU6IHN0cmluZztcbiAgc29ydFJldmVyc2UgPSBmYWxzZTtcbiAgaXNPcGVuOiBhbnkgPSB7fTtcbiAgaXNGbGlwcGVkOiBib29sZWFuO1xuICBpc0VkaXRNZW51T3BlbiA9IGZhbHNlO1xuICBtb2RhbFJlZjogQnNNb2RhbFJlZjtcbiAgY3VycmVudFVzZXJFbWFpbCA9ICcnO1xuICBoYXNSZXF1aXJlZFJvbGUgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZXhwb3J0SWQ6IElkUmVmZXJlbmNlO1xuICBwcml2YXRlIGRlZmF1bHRFeHBvcnRFbWFpbFRlbXBsYXRlID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgZ2V0dGV4dChcbiAgICAgICdGaWxlIHdpdGggZXhwb3J0ZWQgZGF0YSBjYW4gYmUgZG93bmxvYWRlZCBmcm9tIHt0ZW5hbnQtZG9tYWlufS9hcHBzL2NvY2twaXQvaW5kZXguaHRtbCM/ZG93bmxvYWQ9e2JpbmFyeUlkfS4nXG4gICAgKVxuICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVwb3J0c1NlcnZpY2U6IFJlcG9ydHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgYnNNb2RhbFNlcnZpY2U6IEJzTW9kYWxTZXJ2aWNlLFxuICAgIHB1YmxpYyBjcm9uU2VydmljZTogQ3JvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgb3B0aW9uc1NlcnZpY2U6IE9wdGlvbnNTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMubG9hZGluZ1N0YXR1cyA9IHtcbiAgICAgIGluUHJvZ3Jlc3M6IGZhbHNlLFxuICAgICAgZG9uZTogZmFsc2UsXG4gICAgICBlcnJvcjogZmFsc2VcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5oYXNSZXF1aXJlZFJvbGUgPSBhd2FpdCB0aGlzLmNoZWNrUm9sZSgpO1xuICAgIHRoaXMuZ2V0U2NoZWR1bGVMaXN0KHRydWUpO1xuICAgIGNvbnN0IGN1cnJlbnRVc2VyRW1haWwgPSBhd2FpdCB0aGlzLmdldEN1cnJlbnRVc2VyRW1haWwoKTtcbiAgICB0aGlzLmluaXRpYWxTY2hlZHVsZS5lbWFpbENvbmZpZy50ZXh0ID0gYXdhaXQgdGhpcy5vcHRpb25zU2VydmljZS5nZXRUZW5hbnRPcHRpb24oXG4gICAgICAnY29uZmlndXJhdGlvbicsXG4gICAgICAnZXhwb3J0LmRhdGEubWFpbC50ZXh0J1xuICAgICk7XG4gICAgaWYgKGlzRW1wdHkodGhpcy5pbml0aWFsU2NoZWR1bGUuZW1haWxDb25maWcudGV4dCkpIHtcbiAgICAgIHRoaXMuaW5pdGlhbFNjaGVkdWxlLmVtYWlsQ29uZmlnLnRleHQgPSBhd2FpdCB0aGlzLm9wdGlvbnNTZXJ2aWNlLmdldEluaGVyaXRlZFRlbmFudE9wdGlvbihcbiAgICAgICAgJ2NvbmZpZ3VyYXRpb24nLFxuICAgICAgICAnZXhwb3J0LmRhdGEubWFpbC50ZXh0JyxcbiAgICAgICAgdGhpcy5kZWZhdWx0RXhwb3J0RW1haWxUZW1wbGF0ZVxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5pbml0aWFsU2NoZWR1bGUuZW1haWxDb25maWcudG8gPSBjdXJyZW50VXNlckVtYWlsO1xuICAgIHRoaXMuZXhwID0gYXdhaXQgdGhpcy5yZXBvcnRzU2VydmljZS5nZXRFeHBvcnQodGhpcy5fZXhwb3J0SWQpO1xuICAgIHRoaXMuaW5pdGlhbFNjaGVkdWxlLmVtYWlsQ29uZmlnLnN1YmplY3QgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgIGdldHRleHQoJ0V4cG9ydCBvZiBcInt7ZXhwTmFtZX19XCInKSxcbiAgICAgIHsgZXhwTmFtZTogdGhpcy5leHAubmFtZSB9XG4gICAgKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIHRoaXMudHJhbnNsYXRlQnV0dG9uVGl0bGVzKCk7XG4gIH1cblxuICB0cmFuc2xhdGVCdXR0b25UaXRsZXMoKSB7XG4gICAgdGhpcy5idXR0b25MYWJlbHMgPSB7XG4gICAgICBlZGl0OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChnZXR0ZXh0KCdFZGl0IHNjaGVkdWxlJykpLFxuICAgICAgZWRpdE5vUGVybWlzc2lvbjogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZ2V0dGV4dCgnRWRpdCBzY2hlZHVsZSAtIG5vIHBlcm1pc3Npb25zJykpLFxuICAgICAgZHVwbGljYXRlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChnZXR0ZXh0KCdEdXBsaWNhdGUgc2NoZWR1bGUnKSksXG4gICAgICBkdXBsaWNhdGVOb1Blcm1pc3Npb246IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICBnZXR0ZXh0KCdEdXBsaWNhdGUgc2NoZWR1bGUgLSBubyBwZXJtaXNzaW9ucycpXG4gICAgICApLFxuICAgICAgZGVsZXRlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChnZXR0ZXh0KCdEZWxldGUgc2NoZWR1bGUnKSksXG4gICAgICBkZWxldGVOb1Blcm1pc3Npb246IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJ0RlbGV0ZSBzY2hlZHVsZSAtIG5vIHBlcm1pc3Npb25zJykpXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGdldEN1cnJlbnRVc2VyRW1haWwoKSB7XG4gICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnQoKTtcbiAgICByZXR1cm4gZGF0YSAmJiBkYXRhLmVtYWlsID8gW2RhdGEuZW1haWxdIDogW107XG4gIH1cbiAgYXN5bmMgY2hlY2tSb2xlKCkge1xuICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy51c2VyU2VydmljZS5jdXJyZW50KCk7XG4gICAgY29uc3Qgcm9sZSA9IFBlcm1pc3Npb25zLlJPTEVfU0NIRURVTEVfUkVQT1JUX0FETUlOO1xuICAgIGNvbnN0IGhhc1JvbGUgPSB0aGlzLnVzZXJTZXJ2aWNlLmhhc1JvbGUoZGF0YSwgcm9sZSk7XG4gICAgcmV0dXJuIGhhc1JvbGU7XG4gIH1cblxuICBhc3luYyBnZXRTY2hlZHVsZUxpc3Qod2l0aFByb2dyZXNzOiBib29sZWFuKSB7XG4gICAgaWYgKHdpdGhQcm9ncmVzcykge1xuICAgICAgdGhpcy5sb2FkaW5nU3RhdHVzLmluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLnNjaGVkdWxlTGlzdCA9IGF3YWl0IHRoaXMucmVwb3J0c1NlcnZpY2UuZ2V0U2NoZWR1bGVMaXN0KHRoaXMuX2V4cG9ydElkKTtcbiAgICBpZiAod2l0aFByb2dyZXNzKSB7XG4gICAgICB0aGlzLmxvYWRpbmdTdGF0dXMuaW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGFkZFNjaGVkdWxlKCkge1xuICAgIHRoaXMub3BlbkFkZEVkaXRNb2RhbCh0aGlzLl9leHBvcnRJZCwgdGhpcy5pbml0aWFsU2NoZWR1bGUsIEFjdGlvblR5cGUuQ1JFQVRFKTtcbiAgfVxuXG4gIGVkaXRTY2hlZHVsZShzY2hlZHVsZTogU2NoZWR1bGUsIGluZGV4OiBudW1iZXIsIGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5oYXNSZXF1aXJlZFJvbGUpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLm9wZW5BZGRFZGl0TW9kYWwodGhpcy5fZXhwb3J0SWQsIHNjaGVkdWxlLCBBY3Rpb25UeXBlLkVESVQsIGluZGV4KTtcbiAgICB9XG4gIH1cblxuICBkdXBsaWNhdGVTY2hlZHVsZShzY2hlZHVsZTogU2NoZWR1bGUsIGV2ZW50OiBhbnkpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMub3BlbkFkZEVkaXRNb2RhbCh0aGlzLl9leHBvcnRJZCwgc2NoZWR1bGUsIEFjdGlvblR5cGUuRFVQTElDQVRFKTtcbiAgfVxuXG4gIG9wZW5BZGRFZGl0TW9kYWwoXG4gICAgZXhwb3J0SWQ6IElkUmVmZXJlbmNlLFxuICAgIHNjaGVkdWxlOiBTY2hlZHVsZSxcbiAgICBhY3Rpb25UeXBlOiBBY3Rpb25UeXBlLFxuICAgIGluZGV4PzogbnVtYmVyXG4gICkge1xuICAgIGNvbnN0IHBheWxvYWQgPSB7IGFjdGlvblR5cGUsIGV4cG9ydElkLCBzY2hlZHVsZTogY2xvbmVEZWVwKHNjaGVkdWxlKSB9O1xuICAgIGNvbnN0IG1vZGFsT3B0aW9ucyA9IHtcbiAgICAgIGNsYXNzOiAnbW9kYWwtc20nLFxuICAgICAgYXJpYURlc2NyaWJlZGJ5OiAnbW9kYWwtYm9keScsXG4gICAgICBhcmlhTGFiZWxsZWRCeTogJ21vZGFsLXRpdGxlJyxcbiAgICAgIGluaXRpYWxTdGF0ZTogcGF5bG9hZFxuICAgIH0gYXMgTW9kYWxPcHRpb25zO1xuICAgIHRoaXMubW9kYWxSZWYgPSB0aGlzLmJzTW9kYWxTZXJ2aWNlLnNob3coU2NoZWR1bGVNb2RhbENvbXBvbmVudCwgbW9kYWxPcHRpb25zKTtcbiAgICB0aGlzLm1vZGFsUmVmLmNvbnRlbnQuZW1pdHRlci5zdWJzY3JpYmUoKGxvYWQ6IEVtaXR0ZXJQYXlsb2FkKSA9PlxuICAgICAgdGhpcy5nZXRNZXNzYWdlRnJvbU1vZGFsKGxvYWQsIGluZGV4KVxuICAgICk7XG4gIH1cblxuICBnZXRNZXNzYWdlRnJvbU1vZGFsKHBheWxvYWQ6IEVtaXR0ZXJQYXlsb2FkLCBpbmRleD86IG51bWJlcikge1xuICAgIGlmIChwYXlsb2FkLnN1Y2Nlc3MpIHtcbiAgICAgIGlmIChpbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuc2NoZWR1bGVMaXN0W2luZGV4XSA9IHBheWxvYWQuc2NoZWR1bGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNjaGVkdWxlTGlzdC5wdXNoKHBheWxvYWQuc2NoZWR1bGUpO1xuICAgICAgfVxuICAgICAgdGhpcy5vblNjaGVkdWxlc1VwZGF0ZS5lbWl0KHRoaXMuc2NoZWR1bGVMaXN0KTtcbiAgICB9XG4gIH1cblxuICByZW1vdmVTY2hlZHVsZShzY2hlZHVsZTogU2NoZWR1bGUsIGluZGV4OiBudW1iZXIsIGV2ZW50OiBhbnkpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuc2NoZWR1bGVMaXN0LnNwbGljZShpbmRleCwgMSk7XG4gICAgdGhpcy5vblNjaGVkdWxlc1VwZGF0ZS5lbWl0KHRoaXMuc2NoZWR1bGVMaXN0KTtcbiAgfVxufVxuIiwiPGRpdj5cbiAgPGRpdiAqbmdJZj1cImxvYWRpbmdTdGF0dXMuaW5Qcm9ncmVzc1wiIGNsYXNzPVwiZC1mbGV4IGEtaS1jZW50ZXJcIj5cbiAgICA8Yzh5LWxvYWRpbmc+PC9jOHktbG9hZGluZz5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj1cIiFsb2FkaW5nU3RhdHVzLmluUHJvZ3Jlc3MgJiYgbG9hZGluZ1N0YXR1cy5kb25lICYmIGxvYWRpbmdTdGF0dXMuZXJyb3JcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtd2FybmluZyBtYXgtd2lkdGgtMTAwXCIgdHJhbnNsYXRlPkNvdWxkIG5vdCBsb2FkIHNjaGVkdWxlcyBsaXN0LjwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPVwiIWxvYWRpbmdTdGF0dXMuaW5Qcm9ncmVzcyAmJiAhbG9hZGluZ1N0YXR1cy5kb25lICYmICFsb2FkaW5nU3RhdHVzLmVycm9yXCI+XG4gICAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgICAgKm5nSWY9XCIhc2NoZWR1bGVMaXN0Lmxlbmd0aFwiXG4gICAgICBbaWNvbl09XCInYzh5LXJlcG9ydCdcIlxuICAgICAgW3RpdGxlXT1cIidObyBleHBvcnQgc2NoZWR1bGVzIGRlZmluZWQuJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbaG9yaXpvbnRhbF09XCJ0cnVlXCJcbiAgICA+PC9jOHktdWktZW1wdHktc3RhdGU+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYzh5LWxpc3RfX2dyb3VwXCIgKm5nSWY9XCJzY2hlZHVsZUxpc3QubGVuZ3RoXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW0gaGlkZGVuLXhzXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjOHktbGlzdF9faXRlbV9fYmxvY2tcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW1fX2ljb25cIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwicC1sLTI0XCI+PC9pPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjOHktbGlzdF9faXRlbV9fYm9keVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIHt7ICdEZXNjcmlwdGlvbicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02IG0tci00MFwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAge3sgJ0ZyZXF1ZW5jeScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImM4eS1saXN0X19pdGVtIHBvaW50ZXJcIlxuICAgICAgICAqbmdGb3I9XCJsZXQgc2NoZWR1bGUgb2Ygc2NoZWR1bGVMaXN0OyBpbmRleCBhcyBpXCJcbiAgICAgICAgKGNsaWNrKT1cImVkaXRTY2hlZHVsZShzY2hlZHVsZSwgaSwgJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjOHktbGlzdF9faXRlbV9fYmxvY2tcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW1fX2ljb25cIj5cbiAgICAgICAgICAgIDxpIGM4eUljb249XCJjOHktcmVwb3J0XCIgY2xhc3M9XCJjOHktaWNvbi1kdW9jb2xvclwiPjwvaT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW1fX2JvZHkgZC1mbGV4XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTYgY29sLXhzLTZcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIiB0aXRsZT1cInt7IHNjaGVkdWxlLmVtYWlsQ29uZmlnLnN1YmplY3QgfX1cIj5cbiAgICAgICAgICAgICAgICB7eyBzY2hlZHVsZS5lbWFpbENvbmZpZy5zdWJqZWN0IH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTYgY29sLXhzLTZcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhLWktYmFzZWxpbmVcIj5cbiAgICAgICAgICAgICAgICA8aSBjOHlJY29uPVwiY2FsZW5kYXJcIiBjbGFzcz1cInRleHQtbXV0ZWQgbS1yLTRcIj48L2k+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzbWFydC1ydWxlLWluZm9ybWF0aW9uXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNyb25TZXJ2aWNlLmdldEJhc2Uoc2NoZWR1bGUuY3JvbkNvbmZpZykgPT09IDJcIlxuICAgICAgICAgICAgICAgICAgICBuZ05vbkJpbmRhYmxlXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICBbdHJhbnNsYXRlUGFyYW1zXT1cInsgbWludXRlczogc2NoZWR1bGUuY3JvbkNvbmZpZy5taW51dGUgfCBudW1iZXI6ICcyLjAtMCcgfVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIEhvdXJseToge3sgbWludXRlcyB9fSBtaW51dGUocykgcGFzdCB0aGUgaG91ci5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY3JvblNlcnZpY2UuZ2V0QmFzZShzY2hlZHVsZS5jcm9uQ29uZmlnKSA9PT0gM1wiXG4gICAgICAgICAgICAgICAgICAgIG5nTm9uQmluZGFibGVcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgIFt0cmFuc2xhdGVQYXJhbXNdPVwie1xuICAgICAgICAgICAgICAgICAgICAgIGhvdXI6IHNjaGVkdWxlLmNyb25Db25maWcuaG91ciB8IG51bWJlcjogJzIuMC0wJyxcbiAgICAgICAgICAgICAgICAgICAgICBtaW51dGVzOiBzY2hlZHVsZS5jcm9uQ29uZmlnLm1pbnV0ZSB8IG51bWJlcjogJzIuMC0wJ1xuICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgRGFpbHk6IGF0IHt7IGhvdXIgfX06e3sgbWludXRlcyB9fS5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY3JvblNlcnZpY2UuZ2V0QmFzZShzY2hlZHVsZS5jcm9uQ29uZmlnKSA9PT0gNFwiXG4gICAgICAgICAgICAgICAgICAgIG5nTm9uQmluZGFibGVcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgIFt0cmFuc2xhdGVQYXJhbXNdPVwie1xuICAgICAgICAgICAgICAgICAgICAgIHdlZWtEYXk6IGNyb25TZXJ2aWNlLmdldFdlZWtEYXlOYW1lKHNjaGVkdWxlLmNyb25Db25maWcpLFxuICAgICAgICAgICAgICAgICAgICAgIGhvdXI6IHNjaGVkdWxlLmNyb25Db25maWcuaG91ciB8IG51bWJlcjogJzIuMC0wJyxcbiAgICAgICAgICAgICAgICAgICAgICBtaW51dGVzOiBzY2hlZHVsZS5jcm9uQ29uZmlnLm1pbnV0ZSB8IG51bWJlcjogJzIuMC0wJ1xuICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgV2Vla2x5OiB7eyB3ZWVrRGF5IH19LCBhdCB7eyBob3VyIH19Ont7IG1pbnV0ZXMgfX0uXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNyb25TZXJ2aWNlLmdldEJhc2Uoc2NoZWR1bGUuY3JvbkNvbmZpZykgPT09IDVcIlxuICAgICAgICAgICAgICAgICAgICBuZ05vbkJpbmRhYmxlXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICBbdHJhbnNsYXRlUGFyYW1zXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICBtb250aERheTogY3JvblNlcnZpY2UuZ2V0TW9udGhEYXlOYW1lKHNjaGVkdWxlLmNyb25Db25maWcpLFxuICAgICAgICAgICAgICAgICAgICAgIGhvdXI6IHNjaGVkdWxlLmNyb25Db25maWcuaG91ciB8IG51bWJlcjogJzIuMC0wJyxcbiAgICAgICAgICAgICAgICAgICAgICBtaW51dGVzOiBzY2hlZHVsZS5jcm9uQ29uZmlnLm1pbnV0ZSB8IG51bWJlcjogJzIuMC0wJ1xuICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgTW9udGhseToge3sgbW9udGhEYXkgfX0gZGF5IG9mIHRoZSBtb250aCwgYXQge3sgaG91ciB9fTp7eyBtaW51dGVzIH19LlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjcm9uU2VydmljZS5nZXRCYXNlKHNjaGVkdWxlLmNyb25Db25maWcpID09PSA2XCJcbiAgICAgICAgICAgICAgICAgICAgbmdOb25CaW5kYWJsZVxuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgW3RyYW5zbGF0ZVBhcmFtc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgbW9udGg6IGNyb25TZXJ2aWNlLmdldE1vbnRoTmFtZShzY2hlZHVsZS5jcm9uQ29uZmlnKSxcbiAgICAgICAgICAgICAgICAgICAgICBtb250aERheTogY3JvblNlcnZpY2UuZ2V0TW9udGhEYXlOYW1lKHNjaGVkdWxlLmNyb25Db25maWcpLFxuICAgICAgICAgICAgICAgICAgICAgIGhvdXI6IHNjaGVkdWxlLmNyb25Db25maWcuaG91ciB8IG51bWJlcjogJzIuMC0wJyxcbiAgICAgICAgICAgICAgICAgICAgICBtaW51dGVzOiBzY2hlZHVsZS5jcm9uQ29uZmlnLm1pbnV0ZSB8IG51bWJlcjogJzIuMC0wJ1xuICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgWWVhcmx5OiB7eyBtb250aCB9fSwge3sgbW9udGhEYXkgfX0gZGF5IG9mIHRoZSBtb250aCwgYXQge3sgaG91ciB9fTp7e1xuICAgICAgICAgICAgICAgICAgICAgIG1pbnV0ZXNcbiAgICAgICAgICAgICAgICAgICAgfX0uXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjOHktbGlzdF9faXRlbV9fYWN0aW9uc1wiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZXR0aW5ncyBkcm9wZG93blwiIGRyb3Bkb3duPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi10b2dnbGUgYzh5LWRyb3Bkb3duXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdBY3Rpb25zJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgZHJvcGRvd25Ub2dnbGVcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpIFtjOHlJY29uXT1cIidlbGxpcHNpcy12J1wiPjwvaT5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDx1bCByb2xlPVwibGlzdFwiIGNsYXNzPVwiZHJvcGRvd24tbWVudSBkcm9wZG93bi1tZW51LXJpZ2h0XCIgKmRyb3Bkb3duTWVudT5cbiAgICAgICAgICAgICAgICA8bGkgcm9sZT1cIm1lbnVpdGVtXCI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiaGFzUmVxdWlyZWRSb2xlID8gYnV0dG9uTGFiZWxzLmVkaXQgOiBidXR0b25MYWJlbHMuZWRpdE5vUGVybWlzc2lvblwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlZGl0U2NoZWR1bGUoc2NoZWR1bGUsIGksICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWhhc1JlcXVpcmVkUm9sZVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpIFtjOHlJY29uXT1cIidwZW5jaWwnXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICB7eyAnRWRpdCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPGxpIHJvbGU9XCJtZW51aXRlbVwiPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgIGhhc1JlcXVpcmVkUm9sZSA/IGJ1dHRvbkxhYmVscy5kdXBsaWNhdGUgOiBidXR0b25MYWJlbHMuZHVwbGljYXRlTm9QZXJtaXNzaW9uXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkdXBsaWNhdGVTY2hlZHVsZShzY2hlZHVsZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaGFzUmVxdWlyZWRSb2xlXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGkgW2M4eUljb25dPVwiJ2NvcHknXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICB7eyAnRHVwbGljYXRlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8bGkgcm9sZT1cIm1lbnVpdGVtXCI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgaGFzUmVxdWlyZWRSb2xlID8gYnV0dG9uTGFiZWxzLmRlbGV0ZSA6IGJ1dHRvbkxhYmVscy5kZWxldGVOb1Blcm1pc3Npb25cbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZVNjaGVkdWxlKHNjaGVkdWxlLCBpLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFoYXNSZXF1aXJlZFJvbGVcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8aSBbYzh5SWNvbl09XCInZGVsZXRlJ1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAge3sgJ0RlbGV0ZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJhbGVydCBhbGVydC13YXJuaW5nIG1heC13aWR0aC0xMDBcIiAqbmdJZj1cIiFoYXNSZXF1aXJlZFJvbGVcIiByb2xlPVwiYWxlcnRcIiB0cmFuc2xhdGU+XG4gICAgWW91IGRvbid0IGhhdmUgdGhlIHBlcm1pc3Npb24gcmVxdWlyZWQgdG8gc2NoZWR1bGUgZXhwb3J0cy5cbiAgPC9kaXY+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBtLXQtMTZcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIHRpdGxlPVwie3sgJ0FkZCBzY2hlZHVsZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgIChjbGljayk9XCJhZGRTY2hlZHVsZSgpXCJcbiAgICBbZGlzYWJsZWRdPVwiIWhhc1JlcXVpcmVkUm9sZVwiXG4gID5cbiAgICA8aSBbYzh5SWNvbl09XCIncGx1cy1jaXJjbGUnXCI+PC9pPlxuICAgIHt7ICdBZGQgc2NoZWR1bGUnIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
@@ -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";
@@ -140,10 +140,18 @@ export class ConfigurationPreviewComponent {
140
140
  }
141
141
  }
142
142
  hasPermission() {
143
- return this.user.hasAnyRole(this.appState.currentUser.value, [
144
- 'ROLE_INVENTORY_ADMIN',
145
- 'ROLE_INVENTORY_CREATE'
146
- ]);
143
+ return (this.user.hasAnyRole(this.appState.currentUser.value, [
144
+ Permissions.ROLE_INVENTORY_ADMIN,
145
+ Permissions.ROLE_INVENTORY_CREATE
146
+ ]) ||
147
+ (this.user.hasAnyRole(this.appState.currentUser.value, [
148
+ Permissions.ROLE_MANAGED_OBJECT_ADMIN,
149
+ Permissions.ROLE_MANAGED_OBJECT_CREATE
150
+ ]) &&
151
+ this.user.hasAnyRole(this.appState.currentUser.value, [
152
+ Permissions.ROLE_BINARY_ADMIN,
153
+ Permissions.ROLE_BINARY_CREATE
154
+ ])));
147
155
  }
148
156
  ngOnDestroy() {
149
157
  if (this.operationsSubscription) {
@@ -179,4 +187,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
179
187
  }], operationToTrigger: [{
180
188
  type: Input
181
189
  }] } });
182
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi1wcmV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3JlcG9zaXRvcnkvY29uZmlndXJhdGlvbi9kZXZpY2UtdGFiL2NvbmZpZ3VyYXRpb24tcHJldmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9yZXBvc2l0b3J5L2NvbmZpZ3VyYXRpb24vZGV2aWNlLXRhYi9jb25maWd1cmF0aW9uLXByZXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFFTCw0QkFBNEIsRUFDNUIsaUJBQWlCLEVBQ2xCLE1BQU0sdUNBQXVDLENBQUM7QUFDL0MsT0FBTyxFQUdMLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsV0FBVyxFQUNaLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTVFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7Ozs7QUFNOUYsTUFBTSxPQUFPLDZCQUE2QjtJQUV4QyxJQUFhLGlCQUFpQixDQUFDLElBQVk7UUFDekMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztRQUMvQixJQUFJLENBQUMsWUFB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ckQsU0FBUyxDQUFDLE1BQU0sS0FBSyxlQUFlLENBQUMsVUFBVSxFQUMvQztZQUNBLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1NBQ3hEO0lBQ0gsQ0FBQzs7MEhBN0xVLDZCQUE2Qjs4R0FBN0IsNkJBQTZCLGdXQzFCMUMsazdFQTBFQTsyRkRoRGEsNkJBQTZCO2tCQUp6QyxTQUFTOytCQUNFLGtDQUFrQzt1VUFJbkMsTUFBTTtzQkFBZCxLQUFLO2dCQUNPLGlCQUFpQjtzQkFBN0IsS0FBSztnQkFPRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb25maWd1cmF0aW9uU25hcHNob3QsXG4gIERldmljZUNvbmZpZ3VyYXRpb25PcGVyYXRpb24sXG4gIFJlcG9zaXRvcnlTZXJ2aWNlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvcmVwb3NpdG9yeS9zaGFyZWQnO1xuaW1wb3J0IHtcbiAgSU1hbmFnZWRPYmplY3QsXG4gIElPcGVyYXRpb24sXG4gIE9wZXJhdGlvblNlcnZpY2UsXG4gIE9wZXJhdGlvblN0YXR1cyxcbiAgVXNlclNlcnZpY2Vcbn0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgRGV2aWNlQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuL2RldmljZS1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBzYXZlQXMgfSBmcm9tICdmaWxlLXNhdmVyJztcbmltcG9ydCB7IEJzTW9kYWxTZXJ2aWNlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBTYXZlVG9SZXBvc2l0b3J5Q29tcG9uZW50IH0gZnJvbSAnLi9zYXZlLXRvLXJlcG9zaXRvcnkuY29tcG9uZW50JztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UsIEFwcFN0YXRlU2VydmljZSwgT3BlcmF0aW9uUmVhbHRpbWVTZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1kZXZpY2UtY29uZmlndXJhdGlvbi1wcmV2aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbmZpZ3VyYXRpb24tcHJldmlldy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQ29uZmlndXJhdGlvblByZXZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGRldmljZTogSU1hbmFnZWRPYmplY3Q7XG4gIEBJbnB1dCgpIHNldCBjb25maWd1cmF0aW9uVHlwZSh0eXBlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9jb25maWd1cmF0aW9uVHlwZSA9IHR5cGU7XG4gICAgdGhpcy5zZXRPcGVyYXRpb24odHlwZSk7XG4gIH1cbiAgZ2V0IGNvbmZpZ3VyYXRpb25UeXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZ3VyYXRpb25UeXBlO1xuICB9XG4gIEBJbnB1dCgpIGNvbmZpZ1NuYXBzaG90OiBDb25maWd1cmF0aW9uU25hcHNob3Q7XG4gIEBJbnB1dCgpIGNhblNhdmVTbmFwc2hvdDogYm9vbGVhbjtcbiAgQElucHV0KCkgYWN0aW9uQnV0dG9uVGV4dDogc3RyaW5nO1xuICBASW5wdXQoKSBhY3Rpb25CdXR0b25JY29uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGlzTGVnYWN5ID0gZmFsc2U7XG4gIEBJbnB1dCgpIG9wZXJhdGlvblRvVHJpZ2dlcjpcbiAgICB8IERldmljZUNvbmZpZ3VyYXRpb25PcGVyYXRpb24uVVBMT0FEX0NPTkZJR1xuICAgIHwgRGV2aWNlQ29uZmlndXJhdGlvbk9wZXJhdGlvbi5ET1dOTE9BRF9DT05GSUc7XG5cbiAgb3BlcmF0aW9uOiBJT3BlcmF0aW9uO1xuICBjYW5DYWxsQWN0aW9uID0gdHJ1ZTtcbiAgZGV2aWNlQ29uZmlndXJhdGlvbk9wZXJhdGlvbiA9IERldmljZUNvbmZpZ3VyYXRpb25PcGVyYXRpb247XG4gIHByaXZhdGUgX2NvbmZpZ3VyYXRpb25UeXBlOiBzdHJpbmc7XG4gIHByaXZhdGUgb3BlcmF0aW9uc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZGV2aWNlQ29uZmlndXJhdGlvblNlcnZpY2U6IERldmljZUNvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgb3BlcmF0aW9uUmVhbHRpbWU6IE9wZXJhdGlvblJlYWx0aW1lU2VydmljZSxcbiAgICBwcml2YXRlIGJzTW9kYWw6IEJzTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlcjogVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcHBTdGF0ZTogQXBwU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVwb3NpdG9yeVNlcnZpY2U6IFJlcG9zaXRvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgb3BlcmF0aW9uU2VydmljZTogT3BlcmF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlXG4gICkge31cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNldENhbkNhbGxBY3Rpb24oKTtcbiAgICB0aGlzLnNldE9wZXJhdGlvbih0aGlzLl9jb25maWd1cmF0aW9uVHlwZSk7XG4gICAgdGhpcy5vcGVyYXRpb25zU3Vic2NyaXB0aW9uID0gdGhpcy5vcGVyYXRpb25SZWFsdGltZVxuICAgICAgLm9uQWxsJCh0aGlzLmRldmljZS5pZClcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEgYXMgSU9wZXJhdGlvbikpXG4gICAgICAuc3Vic2NyaWJlKG9wZXJhdGlvbiA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlUHJldmlldyhvcGVyYXRpb24pO1xuICAgICAgfSk7XG4gIH1cblxuICBhc3luYyBzZXRPcGVyYXRpb24oY29uZmlnVHlwZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG9wZXJhdGlvbkxpc3QgPSBhd2FpdCB0aGlzLnJlcG9zaXRvcnlTZXJ2aWNlLmdldENvbmZpZ0ZpbGVPcGVyYXRpb25MaXN0KFxuICAgICAgdGhpcy5kZXZpY2UuaWQsXG4gICAgICB0aGlzLm9wZXJhdGlvblRvVHJpZ2dlclxuICAgICk7XG5cbiAgICBjb25zdCBvcGVyYXRpb24gPSB0aGlzLmlzTGVnYWN5XG4gICAgICA/IG9wZXJhdGlvbkxpc3QuZmluZChvcCA9PiBvcFt0aGlzLm9wZXJhdGlvblRvVHJpZ2dlcl0gJiYgIW9wW3RoaXMub3BlcmF0aW9uVG9UcmlnZ2VyXS50eXBlKVxuICAgICAgOiBvcGVyYXRpb25MaXN0LmZpbmQob3AgPT4gb3BbdGhpcy5vcGVyYXRpb25Ub1RyaWdnZXJdLnR5cGUgPT09IGNvbmZpZ1R5cGUpO1xuXG4gICAgdGhpcy5vcGVyYXRpb24gPVxuICAgICAgb3BlcmF0aW9uICYmIG9wZXJhdGlvbi5zdGF0dXMgIT09IE9wZXJhdGlvblN0YXR1cy5TVUNDRVNTRlVMID8gb3BlcmF0aW9uIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgc2V0Q2FuQ2FsbEFjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLmNhbkNhbGxBY3Rpb24gPSB0aGlzLmRldmljZUNvbmZpZ3VyYXRpb25TZXJ2aWNlLmhhc0FueVN1cHBvcnRlZE9wZXJhdGlvbihcbiAgICAgIHRoaXMuZGV2aWNlLFxuICAgICAgdGhpcy5vcGVyYXRpb25Ub1RyaWdnZXJcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlRGV2aWNlT3BlcmF0aW9uKCkge1xuICAgIGxldCBvcGVyYXRpb25DZmc7XG4gICAgaWYgKHRoaXMub3BlcmF0aW9uVG9UcmlnZ2VyID09PSBEZXZpY2VDb25maWd1cmF0aW9uT3BlcmF0aW9uLkRPV05MT0FEX0NPTkZJRykge1xuICAgICAgb3BlcmF0aW9uQ2ZnID0gdGhpcy5yZXBvc2l0b3J5U2VydmljZS5nZXREb3dubG9hZENvbmZpZ3VyYXRpb25GaWxlT3BlcmF0aW9uKFxuICAgICAgICB0aGlzLmRldmljZSxcbiAgICAgICAgdGhpcy5fY29uZmlndXJhdGlvblR5cGUsXG4gICAgICAgIHRoaXMuY29uZmlnU25hcHNob3QsXG4gICAgICAgIHRoaXMuaXNMZWdhY3lcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wZXJhdGlvblRvVHJpZ2dlciA9PT0gRGV2aWNlQ29uZmlndXJhdGlvbk9wZXJhdGlvbi5VUExPQURfQ09ORklHKSB7XG4gICAgICBvcGVyYXRpb25DZmcgPSB0aGlzLnJlcG9zaXRvcnlTZXJ2aWNlLmdldFVwbG9hZENvbmZpZ3VyYXRpb25GaWxlT3BlcmF0aW9uKFxuICAgICAgICB0aGlzLmRldmljZSxcbiAgICAgICAgdGhpcy5fY29uZmlndXJhdGlvblR5cGUsXG4gICAgICAgIHRoaXMuaXNMZWdhY3lcbiAgICAgICk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICB0aGlzLm9wZXJhdGlvbiA9IChhd2FpdCB0aGlzLm9wZXJhdGlvblNlcnZpY2UuY3JlYXRlKG9wZXJhdGlvbkNmZykpLmRhdGE7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZXgpO1xuICAgIH1cbiAgfVxuXG4gIHNob3dPcGVyYXRpb24oKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMub3BlcmF0aW9uVG9UcmlnZ2VyID09PSBEZXZpY2VDb25maWd1cmF0aW9uT3BlcmF0aW9uLkRPV05MT0FEX0NPTkZJRykge1xuICAgICAgcmV0dXJuICEhdGhpcy5vcGVyYXRpb247XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICB0aGlzLm9wZXJhdGlvbiAmJlxuICAgICAgW09wZXJhdGlvblN0YXR1cy5QRU5ESU5HLCBPcGVyYXRpb25TdGF0dXMuRVhFQ1VUSU5HLCBPcGVyYXRpb25TdGF0dXMuRkFJTEVEXS5pbmNsdWRlcyhcbiAgICAgICAgdGhpcy5vcGVyYXRpb24uc3RhdHVzXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHNob3dCaW5hcnkoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMub3BlcmF0aW9uVG9UcmlnZ2VyID09PSBEZXZpY2VDb25maWd1cmF0aW9uT3BlcmF0aW9uLkRPV05MT0FEX0NPTkZJRykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiAhdGhpcy5zaG93T3BlcmF0aW9uKCk7XG4gIH1cblxuICBpc0NyZWF0ZU9wZXJhdGlvbkRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLm9wZXJhdGlvbiAmJlxuICAgICAgW09wZXJhdGlvblN0YXR1cy5QRU5ESU5HLCBPcGVyYXRpb25TdGF0dXMuRVhFQ1VUSU5HXS5pbmNsdWRlcyh0aGlzLm9wZXJhdGlvbi5zdGF0dXMpXG4gICAgKTtcbiAgfVxuXG4gIHVwZGF0ZVByZXZpZXcob3BlcmF0aW9uOiBJT3BlcmF0aW9uKSB7XG4gICAgaWYgKFxuICAgICAgb3BlcmF0aW9uICYmXG4gICAgICBvcGVyYXRpb25bdGhpcy5vcGVyYXRpb25Ub1RyaWdnZXJdICYmXG4gICAgICAodGhpcy5pc0xlZ2FjeSB8fFxuICAgICAgICAob3BlcmF0aW9uW3RoaXMub3BlcmF0aW9uVG9UcmlnZ2VyXS50eXBlICYmXG4gICAgICAgICAgb3BlcmF0aW9uW3RoaXMub3BlcmF0aW9uVG9UcmlnZ2VyXS50eXBlID09PSB0aGlzLmNvbmZpZ3VyYXRpb25UeXBlKSlcbiAgICApIHtcbiAgICAgIHRoaXMub3BlcmF0aW9uID0gb3BlcmF0aW9uO1xuICAgICAgdGhpcy51cGRhdGVTbmFwc2hvdHNPbkNvbmZpZ1VwbG9hZChvcGVyYXRpb24pO1xuICAgIH1cbiAgfVxuXG4gIGRvd25sb2FkKCkge1xuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbdGhpcy5jb25maWdTbmFwc2hvdC5iaW5hcnldLCB7IHR5cGU6IHRoaXMuY29uZmlnU25hcHNob3QuYmluYXJ5VHlwZSB9KTtcbiAgICBsZXQgZmlsZU5hbWUgPSB0aGlzLmNvbmZpZ1NuYXBzaG90Lm5hbWU7XG4gICAgc3dpdGNoICh0aGlzLmNvbmZpZ1NuYXBzaG90LmJpbmFyeVR5cGUpIHtcbiAgICAgIGNhc2UgJ3RleHQvY3N2JzpcbiAgICAgIGNhc2UgJ2FwcGxpY2F0aW9uL2Nzdic6XG4gICAgICAgIGZpbGVOYW1lID0gZmlsZU5hbWUuY29uY2F0KCcuY3N2Jyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndGV4dC95YW1sJzpcbiAgICAgIGNhc2UgJ2FwcGxpY2F0aW9uL3gteWFtbCc6XG4gICAgICAgIGZpbGVOYW1lID0gZmlsZU5hbWUuY29uY2F0KCcueWFtbCcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2FwcGxpY2F0aW9uL2pzb24nOlxuICAgICAgICBmaWxlTmFtZSA9IGZpbGVOYW1lLmNvbmNhdCgnLmpzb24nKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHNhdmVBcyhibG9iLCBmaWxlTmFtZSk7XG4gIH1cblxuICBhc3luYyBzYXZlVG9SZXBvc2l0b3J5KCkge1xuICAgIGNvbnN0IGluaXRpYWxTdGF0ZSA9IHtcbiAgICAgIGNvbmZpZ1NuYXBzaG90OiBjbG9uZURlZXAodGhpcy5jb25maWdTbmFwc2hvdClcbiAgICB9O1xuICAgIGNvbnN0IG1vZGFsID0gdGhpcy5ic01vZGFsLnNob3coU2F2ZVRvUmVwb3NpdG9yeUNvbXBvbmVudCwge1xuICAgICAgY2xhc3M6ICdtb2RhbC1zbScsXG4gICAgICBhcmlhRGVzY3JpYmVkYnk6ICdtb2RhbC1ib2R5JyxcbiAgICAgIGFyaWFMYWJlbGxlZEJ5OiAnbW9kYWwtdGl0bGUnLFxuICAgICAgaW5pdGlhbFN0YXRlLFxuICAgICAgaWdub3JlQmFja2Ryb3BDbGljazogdHJ1ZVxuICAgIH0pLmNvbnRlbnQgYXMgU2F2ZVRvUmVwb3NpdG9yeUNvbXBvbmVudDtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgbW9kYWwucmVzdWx0O1xuICAgICAgdGhpcy5kZXZpY2VDb25maWd1cmF0aW9uU2VydmljZS51cGRhdGVDb25maWd1cmF0aW9ucyh0cnVlKTtcbiAgICAgIG1vZGFsLmNsb3NlKCk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICB9XG4gIH1cblxuICBoYXNQZXJtaXNzaW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnVzZXIuaGFzQW55Um9sZSh0aGlzLmFwcFN0YXRlLmN1cnJlbnRVc2VyLnZhbHVlLCBbXG4gICAgICAnUk9MRV9JTlZFTlRPUllfQURNSU4nLFxuICAgICAgJ1JPTEVfSU5WRU5UT1JZX0NSRUFURSdcbiAgICBdKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLm9wZXJhdGlvbnNTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMub3BlcmF0aW9uc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlU25hcHNob3RzT25Db25maWdVcGxvYWQob3BlcmF0aW9uKSB7XG4gICAgaWYgKFxuICAgICAgb3BlcmF0aW9uW0RldmljZUNvbmZpZ3VyYXRpb25PcGVyYXRpb24uVVBMT0FEX0NPTkZJR10gJiZcbiAgICAgIG9wZXJhdGlvbi5zdGF0dXMgPT09IE9wZXJhdGlvblN0YXR1cy5TVUNDRVNTRlVMXG4gICAgKSB7XG4gICAgICB0aGlzLmRldmljZUNvbmZpZ3VyYXRpb25TZXJ2aWNlLnVwZGF0ZUNvbmZpZ3VyYXRpb25zKCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29udGVudC1mbGV4LTU1IHAtYi0xNlwiPlxuICA8ZGl2IGNsYXNzPVwiY29sLTcgcC10LTRcIj5cbiAgICA8cD5cbiAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1sYWJlbC1zbWFsbCB0ZXh0LXVwcGVyY2FzZSBtLXItNFwiIHRyYW5zbGF0ZT5Db25maWd1cmF0aW9uPC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCJjb25maWdTbmFwc2hvdD8ubmFtZTsgZWxzZSBlbXB0eVRleHRcIj5cbiAgICAgICAgPHN0cm9uZz57eyBjb25maWdTbmFwc2hvdC5uYW1lIH19PC9zdHJvbmc+XG4gICAgICA8L3NwYW4+XG4gICAgICA8bmctdGVtcGxhdGUgI2VtcHR5VGV4dD4tLS08L25nLXRlbXBsYXRlPlxuICAgIDwvcD5cbiAgICA8cD5cbiAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1sYWJlbC1zbWFsbCB0ZXh0LXVwcGVyY2FzZSBtLXItNFwiIHRyYW5zbGF0ZT5MYXN0IHVwZGF0ZWQ8L3NwYW4+XG4gICAgICA8c21hbGwgKm5nSWY9XCJjb25maWdTbmFwc2hvdD8udGltZTsgZWxzZSBlbXB0eURhdGVcIj5cbiAgICAgICAge3sgY29uZmlnU25hcHNob3QudGltZSB8IGM4eURhdGUgfX1cbiAgICAgIDwvc21hbGw+XG4gICAgICA8bmctdGVtcGxhdGUgI2VtcHR5RGF0ZT4tLS08L25nLXRlbXBsYXRlPlxuICAgIDwvcD5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjb2wtNVwiPlxuICAgIDxidXR0b25cbiAgICAgIGlkPVwiYWN0aW9uLWJ0blwiXG4gICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tc20gcHVsbC1yaWdodFwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIHRpdGxlPVwie3sgYWN0aW9uQnV0dG9uVGV4dCB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAoY2xpY2spPVwiY3JlYXRlRGV2aWNlT3BlcmF0aW9uKClcIlxuICAgICAgW2Rpc2FibGVkXT1cImlzQ3JlYXRlT3BlcmF0aW9uRGlzYWJsZWQoKVwiXG4gICAgICAqbmdJZj1cImNhbkNhbGxBY3Rpb25cIlxuICAgID5cbiAgICAgIDxpIFtjOHlJY29uXT1cImFjdGlvbkJ1dHRvbkljb25cIj48L2k+XG4gICAgICB7eyBhY3Rpb25CdXR0b25UZXh0IHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiYzh5LWVtcHR5LXN0YXRlIHRleHQtbGVmdFwiICpuZ0lmPVwiIWNvbmZpZ1NuYXBzaG90Py5iaW5hcnkgJiYgc2hvd0JpbmFyeSgpXCI+XG4gIDxoMSBbYzh5SWNvbl09XCInZmlsZS1pbWFnZS1vJ1wiPjwvaDE+XG4gIDxwPlxuICAgIDxzdHJvbmcgdHJhbnNsYXRlPk5vIHByZXZpZXcgYXZhaWxhYmxlLjwvc3Ryb25nPlxuICAgIDxiciAvPlxuICAgIDxzbWFsbCAqbmdJZj1cImNvbmZpZ1NuYXBzaG90Py5iaW5hcnkgIT09ICcnOyBlbHNlIGVtcHR5RmlsZVwiIHRyYW5zbGF0ZT5cbiAgICAgIFRoZSBmaWxlIGlzIG5vdCBhdmFpbGFibGUuXG4gICAgPC9zbWFsbD5cbiAgICA8bmctdGVtcGxhdGUgI2VtcHR5RmlsZT5cbiAgICAgIDxzbWFsbCB0cmFuc2xhdGU+VGhlIGZpbGUgaXMgZW1wdHkuPC9zbWFsbD5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L3A+XG48L2Rpdj5cbjxkaXYgKm5nSWY9XCJjb25maWdTbmFwc2hvdD8uYmluYXJ5ICYmIHNob3dCaW5hcnkoKVwiIGNsYXNzPVwiZmxleC1ncm93IGQtZmxleCBkLWNvbFwiPlxuICA8Yzh5LXNvdXJjZS1jb2RlLXByZXZpZXdcbiAgICBbdGV4dF09XCJjb25maWdTbmFwc2hvdC5iaW5hcnlcIlxuICAgIFtpc0Rpc2FibGVkXT1cInRydWVcIlxuICAgIGNsYXNzPVwiZC1jb250ZW50c1wiXG4gID48L2M4eS1zb3VyY2UtY29kZS1wcmV2aWV3PlxuICA8ZGl2ICpuZ0lmPVwiY2FuU2F2ZVNuYXBzaG90XCIgY2xhc3M9XCJwLXQtMTZcIj5cbiAgICA8YnV0dG9uXG4gICAgICB0aXRsZT1cInt7ICdEb3dubG9hZCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc20gcHVsbC1yaWdodCBtLWwtOFwiXG4gICAgICAoY2xpY2spPVwiZG93bmxvYWQoKVwiXG4gICAgPlxuICAgICAge3sgJ0Rvd25sb2FkJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIHRpdGxlPVwie3sgJ1NhdmUgdG8gcmVwb3NpdG9yeScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgKm5nSWY9XCJoYXNQZXJtaXNzaW9uKClcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tc20gcHVsbC1yaWdodFwiXG4gICAgICAoY2xpY2spPVwic2F2ZVRvUmVwb3NpdG9yeSgpXCJcbiAgICA+XG4gICAgICB7eyAnU2F2ZSB0byByZXBvc2l0b3J5JyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiAqbmdJZj1cInNob3dPcGVyYXRpb24oKVwiPlxuICA8Yzh5LW9wZXJhdGlvbi1kZXRhaWxzIFtvcGVyYXRpb25dPVwib3BlcmF0aW9uXCI+PC9jOHktb3BlcmF0aW9uLWRldGFpbHM+XG48L2Rpdj5cbiJdfQ==
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi1wcmV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3JlcG9zaXRvcnkvY29uZmlndXJhdGlvbi9kZXZpY2UtdGFiL2NvbmZpZ3VyYXRpb24tcHJldmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9yZXBvc2l0b3J5L2NvbmZpZ3VyYXRpb24vZGV2aWNlLXRhYi9jb25maWd1cmF0aW9uLXByZXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFFTCw0QkFBNEIsRUFDNUIsaUJBQWlCLEVBQ2xCLE1BQU0sdUNBQXVDLENBQUM7QUFDL0MsT0FBTyxFQUdMLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsV0FBVyxFQUNaLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTVFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sRUFDTCxZQUFZLEVBQ1osZUFBZSxFQUNmLHdCQUF3QixFQUN4QixXQUFXLEVBQ1osTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7OztBQU03QixNQUFNLE9BQU8sNkJBQTZCO0lBR3hDLElBQWEsaUJBQWlCLENBQUMsSUFBWTtRQUN6QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQy9CLElB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SSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUU7b0JBQ3BELFdBQVcsQ0FBQyxpQkFBaUI7b0JBQzdCLFdBQVcsQ0FBQyxrQkFBa0I7aUJBQy9CLENBQUMsQ0FBQyxDQUNOLENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFO1lBQy9CLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUMzQztJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsNkJBQTZCLENBQUMsU0FBUztRQUNuRCxJQUNFLFNBQVMsQ0FBQyw0QkFBNEIsQ0FBQyxhQUFhLENBQUM7WUFDckQsU0FBUyxDQUFDLE1BQU0sS0FBSyxlQUFlLENBQUMsVUFBVSxFQUMvQztZQUNBLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1NBQ3hEO0lBQ0gsQ0FBQzs7MEhBMU1VLDZCQUE2Qjs4R0FBN0IsNkJBQTZCLGdXQy9CMUMsazdFQTBFQTsyRkQzQ2EsNkJBQTZCO2tCQUp6QyxTQUFTOytCQUNFLGtDQUFrQzt1VUFJbkMsTUFBTTtzQkFBZCxLQUFLO2dCQUVPLGlCQUFpQjtzQkFBN0IsS0FBSztnQkFTRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb25maWd1cmF0aW9uU25hcHNob3QsXG4gIERldmljZUNvbmZpZ3VyYXRpb25PcGVyYXRpb24sXG4gIFJlcG9zaXRvcnlTZXJ2aWNlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvcmVwb3NpdG9yeS9zaGFyZWQnO1xuaW1wb3J0IHtcbiAgSU1hbmFnZWRPYmplY3QsXG4gIElPcGVyYXRpb24sXG4gIE9wZXJhdGlvblNlcnZpY2UsXG4gIE9wZXJhdGlvblN0YXR1cyxcbiAgVXNlclNlcnZpY2Vcbn0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgRGV2aWNlQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuL2RldmljZS1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBzYXZlQXMgfSBmcm9tICdmaWxlLXNhdmVyJztcbmltcG9ydCB7IEJzTW9kYWxTZXJ2aWNlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBTYXZlVG9SZXBvc2l0b3J5Q29tcG9uZW50IH0gZnJvbSAnLi9zYXZlLXRvLXJlcG9zaXRvcnkuY29tcG9uZW50JztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQge1xuICBBbGVydFNlcnZpY2UsXG4gIEFwcFN0YXRlU2VydmljZSxcbiAgT3BlcmF0aW9uUmVhbHRpbWVTZXJ2aWNlLFxuICBQZXJtaXNzaW9uc1xufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWRldmljZS1jb25maWd1cmF0aW9uLXByZXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29uZmlndXJhdGlvbi1wcmV2aWV3LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBDb25maWd1cmF0aW9uUHJldmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgZGV2aWNlOiBJTWFuYWdlZE9iamVjdDtcblxuICBASW5wdXQoKSBzZXQgY29uZmlndXJhdGlvblR5cGUodHlwZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fY29uZmlndXJhdGlvblR5cGUgPSB0eXBlO1xuICAgIHRoaXMuc2V0T3BlcmF0aW9uKHR5cGUpO1xuICB9XG5cbiAgZ2V0IGNvbmZpZ3VyYXRpb25UeXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZ3VyYXRpb25UeXBlO1xuICB9XG5cbiAgQElucHV0KCkgY29uZmlnU25hcHNob3Q6IENvbmZpZ3VyYXRpb25TbmFwc2hvdDtcbiAgQElucHV0KCkgY2FuU2F2ZVNuYXBzaG90OiBib29sZWFuO1xuICBASW5wdXQoKSBhY3Rpb25CdXR0b25UZXh0OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGFjdGlvbkJ1dHRvbkljb246IHN0cmluZztcbiAgQElucHV0KCkgaXNMZWdhY3kgPSBmYWxzZTtcbiAgQElucHV0KCkgb3BlcmF0aW9uVG9UcmlnZ2VyOlxuICAgIHwgRGV2aWNlQ29uZmlndXJhdGlvbk9wZXJhdGlvbi5VUExPQURfQ09ORklHXG4gICAgfCBEZXZpY2VDb25maWd1cmF0aW9uT3BlcmF0aW9uLkRPV05MT0FEX0NPTkZJRztcblxuICBvcGVyYXRpb246IElPcGVyYXRpb247XG4gIGNhbkNhbGxBY3Rpb24gPSB0cnVlO1xuICBkZXZpY2VDb25maWd1cmF0aW9uT3BlcmF0aW9uID0gRGV2aWNlQ29uZmlndXJhdGlvbk9wZXJhdGlvbjtcbiAgcHJpdmF0ZSBfY29uZmlndXJhdGlvblR5cGU6IHN0cmluZztcbiAgcHJpdmF0ZSBvcGVyYXRpb25zU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkZXZpY2VDb25maWd1cmF0aW9uU2VydmljZTogRGV2aWNlQ29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvcGVyYXRpb25SZWFsdGltZTogT3BlcmF0aW9uUmVhbHRpbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgYnNNb2RhbDogQnNNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIGFwcFN0YXRlOiBBcHBTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZXBvc2l0b3J5U2VydmljZTogUmVwb3NpdG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvcGVyYXRpb25TZXJ2aWNlOiBPcGVyYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc2V0Q2FuQ2FsbEFjdGlvbigpO1xuICAgIHRoaXMuc2V0T3BlcmF0aW9uKHRoaXMuX2NvbmZpZ3VyYXRpb25UeXBlKTtcbiAgICB0aGlzLm9wZXJhdGlvbnNTdWJzY3JpcHRpb24gPSB0aGlzLm9wZXJhdGlvblJlYWx0aW1lXG4gICAgICAub25BbGwkKHRoaXMuZGV2aWNlLmlkKVxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSBhcyBJT3BlcmF0aW9uKSlcbiAgICAgIC5zdWJzY3JpYmUob3BlcmF0aW9uID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVQcmV2aWV3KG9wZXJhdGlvbik7XG4gICAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHNldE9wZXJhdGlvbihjb25maWdUeXBlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgb3BlcmF0aW9uTGlzdCA9IGF3YWl0IHRoaXMucmVwb3NpdG9yeVNlcnZpY2UuZ2V0Q29uZmlnRmlsZU9wZXJhdGlvbkxpc3QoXG4gICAgICB0aGlzLmRldmljZS5pZCxcbiAgICAgIHRoaXMub3BlcmF0aW9uVG9UcmlnZ2VyXG4gICAgKTtcblxuICAgIGNvbnN0IG9wZXJhdGlvbiA9IHRoaXMuaXNMZWdhY3lcbiAgICAgID8gb3BlcmF0aW9uTGlzdC5maW5kKG9wID0+IG9wW3RoaXMub3BlcmF0aW9uVG9UcmlnZ2VyXSAmJiAhb3BbdGhpcy5vcGVyYXRpb25Ub1RyaWdnZXJdLnR5cGUpXG4gICAgICA6IG9wZXJhdGlvbkxpc3QuZmluZChvcCA9PiBvcFt0aGlzLm9wZXJhdGlvblRvVHJpZ2dlcl0udHlwZSA9PT0gY29uZmlnVHlwZSk7XG5cbiAgICB0aGlzLm9wZXJhdGlvbiA9XG4gICAgICBvcGVyYXRpb24gJiYgb3BlcmF0aW9uLnN0YXR1cyAhPT0gT3BlcmF0aW9uU3RhdHVzLlNVQ0NFU1NGVUwgPyBvcGVyYXRpb24gOiB1bmRlZmluZWQ7XG4gIH1cblxuICBzZXRDYW5DYWxsQWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuY2FuQ2FsbEFjdGlvbiA9IHRoaXMuZGV2aWNlQ29uZmlndXJhdGlvblNlcnZpY2UuaGFzQW55U3VwcG9ydGVkT3BlcmF0aW9uKFxuICAgICAgdGhpcy5kZXZpY2UsXG4gICAgICB0aGlzLm9wZXJhdGlvblRvVHJpZ2dlclxuICAgICk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVEZXZpY2VPcGVyYXRpb24oKSB7XG4gICAgbGV0IG9wZXJhdGlvbkNmZztcbiAgICBpZiAodGhpcy5vcGVyYXRpb25Ub1RyaWdnZXIgPT09IERldmljZUNvbmZpZ3VyYXRpb25PcGVyYXRpb24uRE9XTkxPQURfQ09ORklHKSB7XG4gICAgICBvcGVyYXRpb25DZmcgPSB0aGlzLnJlcG9zaXRvcnlTZXJ2aWNlLmdldERvd25sb2FkQ29uZmlndXJhdGlvbkZpbGVPcGVyYXRpb24oXG4gICAgICAgIHRoaXMuZGV2aWNlLFxuICAgICAgICB0aGlzLl9jb25maWd1cmF0aW9uVHlwZSxcbiAgICAgICAgdGhpcy5jb25maWdTbmFwc2hvdCxcbiAgICAgICAgdGhpcy5pc0xlZ2FjeVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3BlcmF0aW9uVG9UcmlnZ2VyID09PSBEZXZpY2VDb25maWd1cmF0aW9uT3BlcmF0aW9uLlVQTE9BRF9DT05GSUcpIHtcbiAgICAgIG9wZXJhdGlvbkNmZyA9IHRoaXMucmVwb3NpdG9yeVNlcnZpY2UuZ2V0VXBsb2FkQ29uZmlndXJhdGlvbkZpbGVPcGVyYXRpb24oXG4gICAgICAgIHRoaXMuZGV2aWNlLFxuICAgICAgICB0aGlzLl9jb25maWd1cmF0aW9uVHlwZSxcbiAgICAgICAgdGhpcy5pc0xlZ2FjeVxuICAgICAgKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMub3BlcmF0aW9uID0gKGF3YWl0IHRoaXMub3BlcmF0aW9uU2VydmljZS5jcmVhdGUob3BlcmF0aW9uQ2ZnKSkuZGF0YTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShleCk7XG4gICAgfVxuICB9XG5cbiAgc2hvd09wZXJhdGlvbigpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5vcGVyYXRpb25Ub1RyaWdnZXIgPT09IERldmljZUNvbmZpZ3VyYXRpb25PcGVyYXRpb24uRE9XTkxPQURfQ09ORklHKSB7XG4gICAgICByZXR1cm4gISF0aGlzLm9wZXJhdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMub3BlcmF0aW9uICYmXG4gICAgICBbT3BlcmF0aW9uU3RhdHVzLlBFTkRJTkcsIE9wZXJhdGlvblN0YXR1cy5FWEVDVVRJTkcsIE9wZXJhdGlvblN0YXR1cy5GQUlMRURdLmluY2x1ZGVzKFxuICAgICAgICB0aGlzLm9wZXJhdGlvbi5zdGF0dXNcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgc2hvd0JpbmFyeSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5vcGVyYXRpb25Ub1RyaWdnZXIgPT09IERldmljZUNvbmZpZ3VyYXRpb25PcGVyYXRpb24uRE9XTkxPQURfQ09ORklHKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuICF0aGlzLnNob3dPcGVyYXRpb24oKTtcbiAgfVxuXG4gIGlzQ3JlYXRlT3BlcmF0aW9uRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMub3BlcmF0aW9uICYmXG4gICAgICBbT3BlcmF0aW9uU3RhdHVzLlBFTkRJTkcsIE9wZXJhdGlvblN0YXR1cy5FWEVDVVRJTkddLmluY2x1ZGVzKHRoaXMub3BlcmF0aW9uLnN0YXR1cylcbiAgICApO1xuICB9XG5cbiAgdXBkYXRlUHJldmlldyhvcGVyYXRpb246IElPcGVyYXRpb24pIHtcbiAgICBpZiAoXG4gICAgICBvcGVyYXRpb24gJiZcbiAgICAgIG9wZXJhdGlvblt0aGlzLm9wZXJhdGlvblRvVHJpZ2dlcl0gJiZcbiAgICAgICh0aGlzLmlzTGVnYWN5IHx8XG4gICAgICAgIChvcGVyYXRpb25bdGhpcy5vcGVyYXRpb25Ub1RyaWdnZXJdLnR5cGUgJiZcbiAgICAgICAgICBvcGVyYXRpb25bdGhpcy5vcGVyYXRpb25Ub1RyaWdnZXJdLnR5cGUgPT09IHRoaXMuY29uZmlndXJhdGlvblR5cGUpKVxuICAgICkge1xuICAgICAgdGhpcy5vcGVyYXRpb24gPSBvcGVyYXRpb247XG4gICAgICB0aGlzLnVwZGF0ZVNuYXBzaG90c09uQ29uZmlnVXBsb2FkKG9wZXJhdGlvbik7XG4gICAgfVxuICB9XG5cbiAgZG93bmxvYWQoKSB7XG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFt0aGlzLmNvbmZpZ1NuYXBzaG90LmJpbmFyeV0sIHsgdHlwZTogdGhpcy5jb25maWdTbmFwc2hvdC5iaW5hcnlUeXBlIH0pO1xuICAgIGxldCBmaWxlTmFtZSA9IHRoaXMuY29uZmlnU25hcHNob3QubmFtZTtcbiAgICBzd2l0Y2ggKHRoaXMuY29uZmlnU25hcHNob3QuYmluYXJ5VHlwZSkge1xuICAgICAgY2FzZSAndGV4dC9jc3YnOlxuICAgICAgY2FzZSAnYXBwbGljYXRpb24vY3N2JzpcbiAgICAgICAgZmlsZU5hbWUgPSBmaWxlTmFtZS5jb25jYXQoJy5jc3YnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0ZXh0L3lhbWwnOlxuICAgICAgY2FzZSAnYXBwbGljYXRpb24veC15YW1sJzpcbiAgICAgICAgZmlsZU5hbWUgPSBmaWxlTmFtZS5jb25jYXQoJy55YW1sJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYXBwbGljYXRpb24vanNvbic6XG4gICAgICAgIGZpbGVOYW1lID0gZmlsZU5hbWUuY29uY2F0KCcuanNvbicpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgc2F2ZUFzKGJsb2IsIGZpbGVOYW1lKTtcbiAgfVxuXG4gIGFzeW5jIHNhdmVUb1JlcG9zaXRvcnkoKSB7XG4gICAgY29uc3QgaW5pdGlhbFN0YXRlID0ge1xuICAgICAgY29uZmlnU25hcHNob3Q6IGNsb25lRGVlcCh0aGlzLmNvbmZpZ1NuYXBzaG90KVxuICAgIH07XG4gICAgY29uc3QgbW9kYWwgPSB0aGlzLmJzTW9kYWwuc2hvdyhTYXZlVG9SZXBvc2l0b3J5Q29tcG9uZW50LCB7XG4gICAgICBjbGFzczogJ21vZGFsLXNtJyxcbiAgICAgIGFyaWFEZXNjcmliZWRieTogJ21vZGFsLWJvZHknLFxuICAgICAgYXJpYUxhYmVsbGVkQnk6ICdtb2RhbC10aXRsZScsXG4gICAgICBpbml0aWFsU3RhdGUsXG4gICAgICBpZ25vcmVCYWNrZHJvcENsaWNrOiB0cnVlXG4gICAgfSkuY29udGVudCBhcyBTYXZlVG9SZXBvc2l0b3J5Q29tcG9uZW50O1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBtb2RhbC5yZXN1bHQ7XG4gICAgICB0aGlzLmRldmljZUNvbmZpZ3VyYXRpb25TZXJ2aWNlLnVwZGF0ZUNvbmZpZ3VyYXRpb25zKHRydWUpO1xuICAgICAgbW9kYWwuY2xvc2UoKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgLy8gZG8gbm90aGluZ1xuICAgIH1cbiAgfVxuXG4gIGhhc1Blcm1pc3Npb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMudXNlci5oYXNBbnlSb2xlKHRoaXMuYXBwU3RhdGUuY3VycmVudFVzZXIudmFsdWUsIFtcbiAgICAgICAgUGVybWlzc2lvbnMuUk9MRV9JTlZFTlRPUllfQURNSU4sXG4gICAgICAgIFBlcm1pc3Npb25zLlJPTEVfSU5WRU5UT1JZX0NSRUFURVxuICAgICAgXSkgfHxcbiAgICAgICh0aGlzLnVzZXIuaGFzQW55Um9sZSh0aGlzLmFwcFN0YXRlLmN1cnJlbnRVc2VyLnZhbHVlLCBbXG4gICAgICAgIFBlcm1pc3Npb25zLlJPTEVfTUFOQUdFRF9PQkpFQ1RfQURNSU4sXG4gICAgICAgIFBlcm1pc3Npb25zLlJPTEVfTUFOQUdFRF9PQkpFQ1RfQ1JFQVRFXG4gICAgICBdKSAmJlxuICAgICAgICB0aGlzLnVzZXIuaGFzQW55Um9sZSh0aGlzLmFwcFN0YXRlLmN1cnJlbnRVc2VyLnZhbHVlLCBbXG4gICAgICAgICAgUGVybWlzc2lvbnMuUk9MRV9CSU5BUllfQURNSU4sXG4gICAgICAgICAgUGVybWlzc2lvbnMuUk9MRV9CSU5BUllfQ1JFQVRFXG4gICAgICAgIF0pKVxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5vcGVyYXRpb25zU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLm9wZXJhdGlvbnNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVNuYXBzaG90c09uQ29uZmlnVXBsb2FkKG9wZXJhdGlvbikge1xuICAgIGlmIChcbiAgICAgIG9wZXJhdGlvbltEZXZpY2VDb25maWd1cmF0aW9uT3BlcmF0aW9uLlVQTE9BRF9DT05GSUddICYmXG4gICAgICBvcGVyYXRpb24uc3RhdHVzID09PSBPcGVyYXRpb25TdGF0dXMuU1VDQ0VTU0ZVTFxuICAgICkge1xuICAgICAgdGhpcy5kZXZpY2VDb25maWd1cmF0aW9uU2VydmljZS51cGRhdGVDb25maWd1cmF0aW9ucygpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNvbnRlbnQtZmxleC01NSBwLWItMTZcIj5cbiAgPGRpdiBjbGFzcz1cImNvbC03IHAtdC00XCI+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: "15.2.7", 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21zLWdhdGV3YXkuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zbXMtZ2F0ZXdheS9zbXMtZ2F0ZXdheS5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQUduRSxNQUFNLE9BQU8sZUFBZTtJQUkxQixZQUFvQixXQUF3QixFQUFVLFFBQXlCO1FBQTNELGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7SUFBRyxDQUFDO0lBRW5GLFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssU0FBUyxFQUFFO1lBQ3RDLE1BQU0sT0FBTyxHQUFxQixPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7WUFFN0YsSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUNqQyxDQUFDLGNBQXVCLEVBQUUsRUFBRSxDQUMxQixjQUFjLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLENBQzFGLENBQUM7U0FDSDtRQUVELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDOztBQWhCdUIsK0JBQWUsR0FBRyxhQUFhLENBQUM7NEdBRDdDLGVBQWU7Z0hBQWYsZUFBZTsyRkFBZixlQUFlO2tCQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FuQWN0aXZhdGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgUGVybWlzc2lvbnMsIEFwcFN0YXRlU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU21zR2F0ZXdheUd1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBhcHBsaWNhdGlvbk5hbWUgPSAnc21zLWdhdGV3YXknO1xuICBwcml2YXRlIHNob3dTTVNQcm92aWRlcjogUHJvbWlzZTxib29sZWFuPjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBlcm1pc3Npb25zOiBQZXJtaXNzaW9ucywgcHJpdmF0ZSBhcHBTdGF0ZTogQXBwU3RhdGVTZXJ2aWNlKSB7fVxuXG4gIGNhbkFjdGl2YXRlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICh0aGlzLnNob3dTTVNQcm92aWRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBoYXNSb2xlOiBQcm9taXNlPGJvb2xlYW4+ID0gUHJvbWlzZS5yZXNvbHZlKHRoaXMucGVybWlzc2lvbnMuaGFzUm9sZSgnUk9MRV9TTVNfUkVBRCcpKTtcblxuICAgICAgdGhpcy5zaG93U01TUHJvdmlkZXIgPSBoYXNSb2xlLnRoZW4oXG4gICAgICAgIChoYXNQZXJtaXNzaW9uczogYm9vbGVhbikgPT5cbiAgICAgICAgICBoYXNQZXJtaXNzaW9ucyAmJiB0aGlzLmFwcFN0YXRlLmlzQXBwbGljYXRpb25BdmFpbGFibGUoU21zR2F0ZXdheUd1YXJkLmFwcGxpY2F0aW9uTmFtZSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc2hvd1NNU1Byb3ZpZGVyO1xuICB9XG59XG4iXX0=
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21zLWdhdGV3YXkuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zbXMtZ2F0ZXdheS9zbXMtZ2F0ZXdheS5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQUduRSxNQUFNLE9BQU8sZUFBZTtJQUkxQixZQUNVLFdBQXdCLEVBQ3hCLFFBQXlCO1FBRHpCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGFBQVEsR0FBUixRQUFRLENBQWlCO0lBQ2hDLENBQUM7SUFFSixXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLFNBQVMsRUFBRTtZQUN0QyxNQUFNLE9BQU8sR0FBcUIsT0FBTyxDQUFDLE9BQU8sQ0FDL0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUNwRCxDQUFDO1lBRUYsSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUNqQyxDQUFDLGNBQXVCLEVBQUUsRUFBRSxDQUMxQixjQUFjLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLENBQzFGLENBQUM7U0FDSDtRQUVELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDOztBQXJCdUIsK0JBQWUsR0FBRyxhQUFhLENBQUM7NEdBRDdDLGVBQWU7Z0hBQWYsZUFBZTsyRkFBZixlQUFlO2tCQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FuQWN0aXZhdGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgUGVybWlzc2lvbnMsIEFwcFN0YXRlU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU21zR2F0ZXdheUd1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBhcHBsaWNhdGlvbk5hbWUgPSAnc21zLWdhdGV3YXknO1xuICBwcml2YXRlIHNob3dTTVNQcm92aWRlcjogUHJvbWlzZTxib29sZWFuPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBlcm1pc3Npb25zOiBQZXJtaXNzaW9ucyxcbiAgICBwcml2YXRlIGFwcFN0YXRlOiBBcHBTdGF0ZVNlcnZpY2VcbiAgKSB7fVxuXG4gIGNhbkFjdGl2YXRlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICh0aGlzLnNob3dTTVNQcm92aWRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBoYXNSb2xlOiBQcm9taXNlPGJvb2xlYW4+ID0gUHJvbWlzZS5yZXNvbHZlKFxuICAgICAgICB0aGlzLnBlcm1pc3Npb25zLmhhc1JvbGUoUGVybWlzc2lvbnMuUk9MRV9TTVNfUkVBRClcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuc2hvd1NNU1Byb3ZpZGVyID0gaGFzUm9sZS50aGVuKFxuICAgICAgICAoaGFzUGVybWlzc2lvbnM6IGJvb2xlYW4pID0+XG4gICAgICAgICAgaGFzUGVybWlzc2lvbnMgJiYgdGhpcy5hcHBTdGF0ZS5pc0FwcGxpY2F0aW9uQXZhaWxhYmxlKFNtc0dhdGV3YXlHdWFyZC5hcHBsaWNhdGlvbk5hbWUpXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNob3dTTVNQcm92aWRlcjtcbiAgfVxufVxuIl19
@@ -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: "15.2.7", 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: "15.2.7", 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
@@ -52,7 +52,12 @@ export class AddGroupComponent {
52
52
  this.subscription = this.onCancel.subscribe(() => this.resetStepper());
53
53
  this.canCreateGroup =
54
54
  this.subAssetsService.canCreateGroup() ||
55
- (await this.permissionsService.canEdit(['ROLE_INVENTORY_ADMIN', 'ROLE_INVENTORY_CREATE'], {
55
+ (await this.permissionsService.canEdit([
56
+ Permissions.ROLE_INVENTORY_ADMIN,
57
+ Permissions.ROLE_INVENTORY_CREATE,
58
+ Permissions.ROLE_MANAGED_OBJECT_ADMIN,
59
+ Permissions.ROLE_MANAGED_OBJECT_CREATE
60
+ ], {
56
61
  id: this.currentGroupId
57
62
  }));
58
63
  this.canAssignDevice = await this.subAssetsService.canAssignDevice({
@@ -130,4 +135,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
130
135
  type: HostListener,
131
136
  args: ['document:keydown.enter', ['$event']]
132
137
  }] } });
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3N1Yi1hc3NldHMvYWRkLWdyb3VwL2FkZC1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zdWItYXNzZXRzL2FkZC1ncm91cC9hZGQtZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFDTCxZQUFZLEVBQ1osVUFBVSxFQUNWLGdCQUFnQixFQUNoQixPQUFPLEVBRVAsV0FBVyxFQUNaLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7QUFNdEQsTUFBTSxPQUFPLGlCQUFpQjtJQTRCNUIsWUFDVSxFQUFlLEVBQ2YsZUFBZ0MsRUFDaEMsS0FBbUIsRUFDbkIsZ0JBQWtDLEVBQ2xDLGdCQUFrQyxFQUNsQyxrQkFBK0I7UUFML0IsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQWE7UUFoQ2hDLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFB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Q0FBQzs7OEdBekhVLGlCQUFpQjtrR0FBakIsaUJBQWlCLHdVQUtqQixVQUFVLDBJQ2pDdkIsNHFKQXNIQTsyRkQxRmEsaUJBQWlCO2tCQUo3QixTQUFTOytCQUNFLGVBQWU7bVBBSWhCLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNJLHlCQUF5QjtzQkFBbEMsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUVQLE9BQU87c0JBRE4sU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUd4QyxZQUFZO3NCQURYLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkE4QmEsY0FBYztzQkFBakUsWUFBWTt1QkFBQyx3QkFBd0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIEFsZXJ0U2VydmljZSxcbiAgQzh5U3RlcHBlcixcbiAgR2FpbnNpZ2h0U2VydmljZSxcbiAgZ2V0dGV4dCxcbiAgUGFnaW5hdGlvbixcbiAgUGVybWlzc2lvbnNcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFBST0RVQ1RfRVhQRVJJRU5DRSB9IGZyb20gJy4uL3NoYXJlZC9zdWItYXNzZXRzLm1vZGVsJztcbmltcG9ydCB7IFN1YkFzc2V0c1NlcnZpY2UgfSBmcm9tICcuLi9zdWItYXNzZXRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWRkR3JvdXBTZXJ2aWNlIH0gZnJvbSAnLi9hZGQtZ3JvdXAuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1hZGQtZ3JvdXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWRkLWdyb3VwLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBBZGRHcm91cENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGN1cnJlbnRHcm91cElkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHJlZnJlc2ggPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBvbkRldmljZVF1ZXJ5U3RyaW5nQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgb25DYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBWaWV3Q2hpbGQoQzh5U3RlcHBlciwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHN0ZXBwZXI6IEM4eVN0ZXBwZXI7XG4gIEBWaWV3Q2hpbGQoJ25hbWVSZWYnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgbmFtZUlucHV0UmVmOiBFbGVtZW50UmVmO1xuICBkZXZpY2VRdWVyeVN0cmluZ091dHB1dDogc3RyaW5nO1xuICBmb3JtR3JvdXBTdGVwT25lOiBGb3JtR3JvdXA7XG4gIHBlbmRpbmdTdGF0dXMgPSBmYWxzZTtcbiAgcGFnaW5hdGlvbjogUGFnaW5hdGlvbiA9IHsgcGFnZVNpemU6IDIwLCBjdXJyZW50UGFnZTogMSB9O1xuICBzZWxlY3RlZDogc3RyaW5nW10gPSBbXTtcbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIGNhbkNyZWF0ZUdyb3VwID0gZmFsc2U7XG4gIGNhbkFzc2lnbkRldmljZSA9IGZhbHNlO1xuICBQUk9EVUNUX0VYUEVSSUVOQ0UgPSBQUk9EVUNUX0VYUEVSSUVOQ0U7XG5cbiAgcmVhZG9ubHkgSVRFTVNfU0VMRUNUX0xJTUlUOiBudW1iZXIgPSAxNTtcbiAgcmVhZG9ubHkgYnRuTGFiZWxzID0ge1xuICAgIG5leHQ6IGdldHRleHQoJ05leHQnKSxcbiAgICBjYW5jZWw6IGdldHRleHQoJ0NhbmNlbCcpLFxuICAgIGNyZWF0ZTogZ2V0dGV4dCgnQ3JlYXRlJylcbiAgfTtcblxuICBwcml2YXRlIG5hbWVJbnB1dDogSFRNTElucHV0RWxlbWVudDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGFkZEdyb3VwU2VydmljZTogQWRkR3JvdXBTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnQ6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIHN1YkFzc2V0c1NlcnZpY2U6IFN1YkFzc2V0c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBnYWluc2lnaHRTZXJ2aWNlOiBHYWluc2lnaHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGVybWlzc2lvbnNTZXJ2aWNlOiBQZXJtaXNzaW9uc1xuICApIHt9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lbnRlcicsIFsnJGV2ZW50J10pIG9uRW50ZXJLZXlEb3duKF9ldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIC8vIE9yZGVyIG1hdHRlcnMhIE5lZWRzIHRvIGJlIHBsYWNlZCBiZWZvcmUgdGhpcy5zdGVwcGVyLm5leHRcbiAgICBpZiAoKHRoaXMuaXNHcm91cERldGFpbHNTdGVwKCkgJiYgIXRoaXMuY2FuQXNzaWduRGV2aWNlKSB8fCB0aGlzLmlzQXNzaWduRGV2aWNlU3RlcCgpKSB7XG4gICAgICB0aGlzLmNyZWF0ZUdyb3VwKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3RlcHBlci5uZXh0KCk7XG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZvcm1Hcm91cFN0ZXBPbmUgPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIG5hbWU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBkZXNjcmlwdGlvbjogWycnXVxuICAgIH0pO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5vbkNhbmNlbC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5yZXNldFN0ZXBwZXIoKSk7XG4gICAgdGhpcy5jYW5DcmVhdGVHcm91cCA9XG4gICAgICB0aGlzLnN1YkFzc2V0c1NlcnZpY2UuY2FuQ3JlYXRlR3JvdXAoKSB8fFxuICAgICAgKGF3YWl0IHRoaXMucGVybWlzc2lvbnNTZXJ2aWNlLmNhbkVkaXQoWydST0xFX0lOVkVOVE9SWV9BRE1JTicsICdST0xFX0lOVkVOVE9SWV9DUkVBVEUnXSwge1xuICAgICAgICBpZDogdGhpcy5jdXJyZW50R3JvdXBJZFxuICAgICAgfSkpO1xuICAgIHRoaXMuY2FuQXNzaWduRGV2aWNlID0gYXdhaXQgdGhpcy5zdWJBc3NldHNTZXJ2aWNlLmNhbkFzc2lnbkRldmljZSh7XG4gICAgICBpZDogdGhpcy5jdXJyZW50R3JvdXBJZFxuICAgIH0gYXMgSU1hbmFnZWRPYmplY3QpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMubmFtZUlucHV0ID0gdGhpcy5uYW1lSW5wdXRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIHRoaXMuc2V0Rm9jdXNPbk5hbWVJbnB1dCgpO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlR3JvdXAoKSB7XG4gICAgaWYgKHRoaXMuY2FuQ3JlYXRlR3JvdXAgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wZW5kaW5nU3RhdHVzID0gdHJ1ZTtcbiAgICBhd2FpdCB0aGlzLmFkZEdyb3VwU2VydmljZS5jcmVhdGVHcm91cEFuZEFzc2lnbkRldmljZXMoXG4gICAgICB0aGlzLmZvcm1Hcm91cFN0ZXBPbmUudmFsdWUsXG4gICAgICB0aGlzLmN1cnJlbnRHcm91cElkLFxuICAgICAgdGhpcy5zZWxlY3RlZFxuICAgICk7XG5cbiAgICB0aGlzLnBlbmRpbmdTdGF0dXMgPSBmYWxzZTtcbiAgICB0aGlzLnJlc2V0U3RlcHBlcigpO1xuICAgIGNvbnN0IGFsZXJ0TXNnID0gZ2V0dGV4dCgnR3JvdXAgY3JlYXRlZC4nKTtcbiAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFBST0RVQ1RfRVhQRVJJRU5DRS5FVkVOVCwge1xuICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0UuQUREX0dST1VQLkNPTVBPTkVOVFMuQUREX0dST1VQLFxuICAgICAgdXJsOiB3aW5kb3cubG9jYXRpb24uaHJlZixcbiAgICAgIHJlc3VsdDogUFJPRFVDVF9FWFBFUklFTkNFLkFERF9HUk9VUC5SRVNVTFRTLkFERF9TVUNDRVNTXG4gICAgfSk7XG4gICAgdGhpcy5hbGVydC5zdWNjZXNzKGFsZXJ0TXNnKTtcbiAgICB0aGlzLnJlZnJlc2guZW1pdCgpO1xuICAgIHRoaXMub25DYW5jZWwuZW1pdCgpO1xuICB9XG5cbiAgb25TZWxlY3RlZChzZWxlY3RlZERldmljZXNJRHM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5zZWxlY3RlZCA9IHNlbGVjdGVkRGV2aWNlc0lEcztcbiAgfVxuXG4gIHJlc2V0U3RlcHBlcigpIHtcbiAgICB0aGlzLnN0ZXBwZXIucmVzZXQoKTtcbiAgICB0aGlzLnN0ZXBwZXIuc2VsZWN0ZWRJbmRleCA9IDE7XG4gICAgdGhpcy5zZWxlY3RlZCA9IFtdO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNHcm91cERldGFpbHNTdGVwKCkge1xuICAgIHJldHVybiB0aGlzLnN0ZXBwZXIuc2VsZWN0ZWRJbmRleCA9PT0gMDtcbiAgfVxuXG4gIHByaXZhdGUgaXNBc3NpZ25EZXZpY2VTdGVwKCkge1xuICAgIHJldHVybiB0aGlzLnN0ZXBwZXIuc2VsZWN0ZWRJbmRleCA9PT0gMTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Rm9jdXNPbk5hbWVJbnB1dCgpIHtcbiAgICBpZiAodGhpcy5uYW1lSW5wdXQpIHtcbiAgICAgIHRoaXMubmFtZUlucHV0LmZvY3VzKCk7XG4gICAgICB0aGlzLm5hbWVJbnB1dC5zZWxlY3QoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkLWNvbnRlbnRzXCIgKm5nSWY9XCIhY3VycmVudEdyb3VwSWQ7IGVsc2Ugc3RlcHBlclwiPlxuICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0ZXBwZXJcIj48L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3N0ZXBwZXI+XG4gIDxjOHktc3RlcHBlclxuICAgIGNsYXNzPVwiZC1jb2wgZmxleC1ub3dyYXAgbm8tYWxpZ24taXRlbXMgZml0LWggYzh5LXN0ZXBwZXItLW5vLWJ0bnNcIlxuICAgIFtkaXNhYmxlRGVmYXVsdEljb25zXT1cInsgZWRpdDogdHJ1ZSwgZG9uZTogZmFsc2UgfVwiXG4gICAgW2N1c3RvbUNsYXNzZXNdPVwiWydjb2wtbWQtNicsICdjb2wtbWQtb2Zmc2V0LTMnLCAnbS10LTI0JywgJ20tYi00MCcsICdwLTAnLCAnZmxleC1uby1zaHJpbmsnXVwiXG4gICAgbGluZWFyXG4gICAgYzh5UHJvZHVjdEV4cGVyaWVuY2VcbiAgICBpbmhlcml0XG4gICAgW2FjdGlvbk5hbWVdPVwiUFJPRFVDVF9FWFBFUklFTkNFLkVWRU5UXCJcbiAgICBbYWN0aW9uRGF0YV09XCJ7IGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFLkFERF9HUk9VUC5DT01QT05FTlRTLkFERF9HUk9VUCB9XCJcbiAgPlxuICAgIDxjZGstc3RlcCBbc3RlcENvbnRyb2xdPVwiZm9ybUdyb3VwU3RlcE9uZVwiIFtsYWJlbF09XCInTmV3IGdyb3VwJyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInAtMTYgcC10LTAgZmxleC1uby1zaHJpbmsgc2VwYXJhdG9yLWJvdHRvbSBjb2wteHMtMTJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBjb2wtbWQtb2Zmc2V0LTMgY29sLWxnLTQgY29sLWxnLW9mZnNldC00XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaDQgdGV4dC1jZW50ZXIgdGV4dC1tZWRpdW1cIj5cbiAgICAgICAgICAgICAge3sgJ05ldyBncm91cCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy0xMiBmbGV4LWdyb3cgbm8tZ3V0dGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWlubmVyLXNjcm9sbCBmaXQtaFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJsb2NrIHAtYi0wXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBjb2wtbWQtb2Zmc2V0LTMgY29sLWxnLTQgY29sLWxnLW9mZnNldC00XCI+XG4gICAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwIFtub3ZhbGlkYXRpb25dPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFN0ZXBPbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+TmFtZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4gRmlyc3QgZmxvb3InIHwgdHJhbnNsYXRlIH19IFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIyNTRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgI25hbWVSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cblxuICAgICAgICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5EZXNjcmlwdGlvbjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdlLmcuIGZpcnN0IGZsb29yIGRldmljZXMnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwU3RlcE9uZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWluZm8gbWF4LXdpZHRoLTEwMFwiIHRyYW5zbGF0ZSAqbmdJZj1cIiFjYW5Bc3NpZ25EZXZpY2VcIj5cbiAgICAgICAgICAgICAgICAgIFlvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gYXNzaWduIGRldmljZXMuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxjOHktc3RlcHBlci1idXR0b25zXG4gICAgICAgIGNsYXNzPVwiZC1ibG9jayBjYXJkLWZvb3RlciBwLTI0IHNlcGFyYXRvclwiXG4gICAgICAgIChvbkNhbmNlbCk9XCJvbkNhbmNlbC5lbWl0KClcIlxuICAgICAgICAob25DdXN0b20pPVwiY3JlYXRlR3JvdXAoKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCIhY2FuQ3JlYXRlR3JvdXBcIlxuICAgICAgICBbbGFiZWxzXT1cIlxuICAgICAgICAgIGNhbkFzc2lnbkRldmljZVxuICAgICAgICAgICAgPyB7IG5leHQ6IGJ0bkxhYmVscy5uZXh0LCBjYW5jZWw6IGJ0bkxhYmVscy5jYW5jZWwgfVxuICAgICAgICAgICAgOiB7IGN1c3RvbTogYnRuTGFiZWxzLmNyZWF0ZSwgY2FuY2VsOiBidG5MYWJlbHMuY2FuY2VsIH1cbiAgICAgICAgXCJcbiAgICAgICAgW3Nob3dCdXR0b25zXT1cIlxuICAgICAgICAgIGNhbkFzc2lnbkRldmljZSA/IHsgbmV4dDogdHJ1ZSwgY2FuY2VsOiB0cnVlIH0gOiB7IGN1c3RvbTogdHJ1ZSwgY2FuY2VsOiB0cnVlIH1cbiAgICAgICAgXCJcbiAgICAgID48L2M4eS1zdGVwcGVyLWJ1dHRvbnM+XG4gICAgPC9jZGstc3RlcD5cbiAgICA8Y2RrLXN0ZXAgW2xhYmVsXT1cIidBc3NpZ24gZGV2aWNlcycgfCB0cmFuc2xhdGVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwLTE2IHAtdC0wIGZsZXgtbm8tc2hyaW5rIHNlcGFyYXRvci1ib3R0b20gY29sLXhzLTEyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgY29sLW1kLW9mZnNldC0zIGNvbC1sZy00IGNvbC1sZy1vZmZzZXQtNFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImg0IHRleHQtY2VudGVyIHRleHQtbWVkaXVtXCI+XG4gICAgICAgICAgICAgIHt7ICdBc3NpZ24gZGV2aWNlcycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy0xMiBuby1ndXR0ZXIgZmxleC1ncm93XCI+XG4gICAgICAgIDxjOHktZGV2aWNlLWdyaWRcbiAgICAgICAgICBbdGl0bGVdPVwiJ1NlbGVjdCB0YXJnZXQgZGV2aWNlcycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFthY3Rpb25Db250cm9sc109XCJbXVwiXG4gICAgICAgICAgW2luZmluaXRlU2Nyb2xsXT1cIidhdXRvJ1wiXG4gICAgICAgICAgW3NlbGVjdGFibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgW3BhZ2luYXRpb25dPVwicGFnaW5hdGlvblwiXG4gICAgICAgICAgKGl0ZW1zU2VsZWN0KT1cIm9uU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgW3JlZnJlc2hdPVwicmVmcmVzaFwiXG4gICAgICAgICAgYzh5UHJvZHVjdEV4cGVyaWVuY2VcbiAgICAgICAgICBbYWN0aW9uTmFtZV09XCJQUk9EVUNUX0VYUEVSSUVOQ0UuRVZFTlRcIlxuICAgICAgICAgIFthY3Rpb25EYXRhXT1cInsgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0UuQUREX0dST1VQLkNPTVBPTkVOVFMuQUREX0dST1VQIH1cIlxuICAgICAgICA+PC9jOHktZGV2aWNlLWdyaWQ+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxjOHktc3RlcHBlci1idXR0b25zXG4gICAgICAgIGNsYXNzPVwiZC1ibG9jayBjYXJkLWZvb3RlciBwLTI0IHNlcGFyYXRvclwiXG4gICAgICAgIChvbkNhbmNlbCk9XCJvbkNhbmNlbC5lbWl0KClcIlxuICAgICAgICAob25DdXN0b20pPVwiY3JlYXRlR3JvdXAoKVwiXG4gICAgICAgIFtsYWJlbHNdPVwieyBjdXN0b206IGJ0bkxhYmVscy5jcmVhdGUgfVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCIhY2FuQXNzaWduRGV2aWNlXCJcbiAgICAgICAgW3BlbmRpbmddPVwicGVuZGluZ1N0YXR1c1wiXG4gICAgICA+PC9jOHktc3RlcHBlci1idXR0b25zPlxuICAgIDwvY2RrLXN0ZXA+XG4gIDwvYzh5LXN0ZXBwZXI+XG48L25nLXRlbXBsYXRlPlxuIl19
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3N1Yi1hc3NldHMvYWRkLWdyb3VwL2FkZC1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zdWItYXNzZXRzL2FkZC1ncm91cC9hZGQtZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFDTCxZQUFZLEVBQ1osVUFBVSxFQUNWLGdCQUFnQixFQUNoQixPQUFPLEVBRVAsV0FBVyxFQUNaLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7QUFNdEQsTUFBTSxPQUFPLGlCQUFpQjtJQTRCNUIsWUFDVSxFQUFlLEVBQ2YsZUFBZ0MsRUFDaEMsS0FBbUIsRUFDbkIsZ0JBQWtDLEVBQ2xDLGdCQUFrQyxFQUNsQyxrQkFBK0I7UUFML0IsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQWE7UUFoQ2hDLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFB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LENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUN6QjtJQUNILENBQUM7OzhHQWpJVSxpQkFBaUI7a0dBQWpCLGlCQUFpQix3VUFLakIsVUFBVSwwSUNqQ3ZCLDRxSkFzSEE7MkZEMUZhLGlCQUFpQjtrQkFKN0IsU0FBUzsrQkFDRSxlQUFlO21QQUloQixjQUFjO3NCQUF0QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDSSx5QkFBeUI7c0JBQWxDLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFFUCxPQUFPO3NCQUROLFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFHeEMsWUFBWTtzQkFEWCxTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBOEJhLGNBQWM7c0JBQWpFLFlBQVk7dUJBQUMsd0JBQXdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBBbGVydFNlcnZpY2UsXG4gIEM4eVN0ZXBwZXIsXG4gIEdhaW5zaWdodFNlcnZpY2UsXG4gIGdldHRleHQsXG4gIFBhZ2luYXRpb24sXG4gIFBlcm1pc3Npb25zXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQUk9EVUNUX0VYUEVSSUVOQ0UgfSBmcm9tICcuLi9zaGFyZWQvc3ViLWFzc2V0cy5tb2RlbCc7XG5pbXBvcnQgeyBTdWJBc3NldHNTZXJ2aWNlIH0gZnJvbSAnLi4vc3ViLWFzc2V0cy5zZXJ2aWNlJztcbmltcG9ydCB7IEFkZEdyb3VwU2VydmljZSB9IGZyb20gJy4vYWRkLWdyb3VwLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktYWRkLWdyb3VwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZC1ncm91cC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQWRkR3JvdXBDb21wb25lbnQge1xuICBASW5wdXQoKSBjdXJyZW50R3JvdXBJZDogc3RyaW5nO1xuICBASW5wdXQoKSByZWZyZXNoID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgb25EZXZpY2VRdWVyeVN0cmluZ0NoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIG9uQ2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAVmlld0NoaWxkKEM4eVN0ZXBwZXIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBzdGVwcGVyOiBDOHlTdGVwcGVyO1xuICBAVmlld0NoaWxkKCduYW1lUmVmJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIG5hbWVJbnB1dFJlZjogRWxlbWVudFJlZjtcbiAgZGV2aWNlUXVlcnlTdHJpbmdPdXRwdXQ6IHN0cmluZztcbiAgZm9ybUdyb3VwU3RlcE9uZTogRm9ybUdyb3VwO1xuICBwZW5kaW5nU3RhdHVzID0gZmFsc2U7XG4gIHBhZ2luYXRpb246IFBhZ2luYXRpb24gPSB7IHBhZ2VTaXplOiAyMCwgY3VycmVudFBhZ2U6IDEgfTtcbiAgc2VsZWN0ZWQ6IHN0cmluZ1tdID0gW107XG4gIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBjYW5DcmVhdGVHcm91cCA9IGZhbHNlO1xuICBjYW5Bc3NpZ25EZXZpY2UgPSBmYWxzZTtcbiAgUFJPRFVDVF9FWFBFUklFTkNFID0gUFJPRFVDVF9FWFBFUklFTkNFO1xuXG4gIHJlYWRvbmx5IElURU1TX1NFTEVDVF9MSU1JVDogbnVtYmVyID0gMTU7XG4gIHJlYWRvbmx5IGJ0bkxhYmVscyA9IHtcbiAgICBuZXh0OiBnZXR0ZXh0KCdOZXh0JyksXG4gICAgY2FuY2VsOiBnZXR0ZXh0KCdDYW5jZWwnKSxcbiAgICBjcmVhdGU6IGdldHRleHQoJ0NyZWF0ZScpXG4gIH07XG5cbiAgcHJpdmF0ZSBuYW1lSW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBhZGRHcm91cFNlcnZpY2U6IEFkZEdyb3VwU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0OiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdWJBc3NldHNTZXJ2aWNlOiBTdWJBc3NldHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgZ2FpbnNpZ2h0U2VydmljZTogR2FpbnNpZ2h0U2VydmljZSxcbiAgICBwcml2YXRlIHBlcm1pc3Npb25zU2VydmljZTogUGVybWlzc2lvbnNcbiAgKSB7fVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZW50ZXInLCBbJyRldmVudCddKSBvbkVudGVyS2V5RG93bihfZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAvLyBPcmRlciBtYXR0ZXJzISBOZWVkcyB0byBiZSBwbGFjZWQgYmVmb3JlIHRoaXMuc3RlcHBlci5uZXh0XG4gICAgaWYgKCh0aGlzLmlzR3JvdXBEZXRhaWxzU3RlcCgpICYmICF0aGlzLmNhbkFzc2lnbkRldmljZSkgfHwgdGhpcy5pc0Fzc2lnbkRldmljZVN0ZXAoKSkge1xuICAgICAgdGhpcy5jcmVhdGVHcm91cCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnN0ZXBwZXIubmV4dCgpO1xuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5mb3JtR3JvdXBTdGVwT25lID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBuYW1lOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgZGVzY3JpcHRpb246IFsnJ11cbiAgICB9KTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMub25DYW5jZWwuc3Vic2NyaWJlKCgpID0+IHRoaXMucmVzZXRTdGVwcGVyKCkpO1xuICAgIHRoaXMuY2FuQ3JlYXRlR3JvdXAgPVxuICAgICAgdGhpcy5zdWJBc3NldHNTZXJ2aWNlLmNhbkNyZWF0ZUdyb3VwKCkgfHxcbiAgICAgIChhd2FpdCB0aGlzLnBlcm1pc3Npb25zU2VydmljZS5jYW5FZGl0KFxuICAgICAgICBbXG4gICAgICAgICAgUGVybWlzc2lvbnMuUk9MRV9JTlZFTlRPUllfQURNSU4sXG4gICAgICAgICAgUGVybWlzc2lvbnMuUk9MRV9JTlZFTlRPUllfQ1JFQVRFLFxuICAgICAgICAgIFBlcm1pc3Npb25zLlJPTEVfTUFOQUdFRF9PQkpFQ1RfQURNSU4sXG4gICAgICAgICAgUGVybWlzc2lvbnMuUk9MRV9NQU5BR0VEX09CSkVDVF9DUkVBVEVcbiAgICAgICAgXSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiB0aGlzLmN1cnJlbnRHcm91cElkXG4gICAgICAgIH1cbiAgICAgICkpO1xuICAgIHRoaXMuY2FuQXNzaWduRGV2aWNlID0gYXdhaXQgdGhpcy5zdWJBc3NldHNTZXJ2aWNlLmNhbkFzc2lnbkRldmljZSh7XG4gICAgICBpZDogdGhpcy5jdXJyZW50R3JvdXBJZFxuICAgIH0gYXMgSU1hbmFnZWRPYmplY3QpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMubmFtZUlucHV0ID0gdGhpcy5uYW1lSW5wdXRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIHRoaXMuc2V0Rm9jdXNPbk5hbWVJbnB1dCgpO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlR3JvdXAoKSB7XG4gICAgaWYgKHRoaXMuY2FuQ3JlYXRlR3JvdXAgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wZW5kaW5nU3RhdHVzID0gdHJ1ZTtcbiAgICBhd2FpdCB0aGlzLmFkZEdyb3VwU2VydmljZS5jcmVhdGVHcm91cEFuZEFzc2lnbkRldmljZXMoXG4gICAgICB0aGlzLmZvcm1Hcm91cFN0ZXBPbmUudmFsdWUsXG4gICAgICB0aGlzLmN1cnJlbnRHcm91cElkLFxuICAgICAgdGhpcy5zZWxlY3RlZFxuICAgICk7XG5cbiAgICB0aGlzLnBlbmRpbmdTdGF0dXMgPSBmYWxzZTtcbiAgICB0aGlzLnJlc2V0U3RlcHBlcigpO1xuICAgIGNvbnN0IGFsZXJ0TXNnID0gZ2V0dGV4dCgnR3JvdXAgY3JlYXRlZC4nKTtcbiAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFBST0RVQ1RfRVhQRVJJRU5DRS5FVkVOVCwge1xuICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0UuQUREX0dST1VQLkNPTVBPTkVOVFMuQUREX0dST1VQLFxuICAgICAgdXJsOiB3aW5kb3cubG9jYXRpb24uaHJlZixcbiAgICAgIHJlc3VsdDogUFJPRFVDVF9FWFBFUklFTkNFLkFERF9HUk9VUC5SRVNVTFRTLkFERF9TVUNDRVNTXG4gICAgfSk7XG4gICAgdGhpcy5hbGVydC5zdWNjZXNzKGFsZXJ0TXNnKTtcbiAgICB0aGlzLnJlZnJlc2guZW1pdCgpO1xuICAgIHRoaXMub25DYW5jZWwuZW1pdCgpO1xuICB9XG5cbiAgb25TZWxlY3RlZChzZWxlY3RlZERldmljZXNJRHM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5zZWxlY3RlZCA9IHNlbGVjdGVkRGV2aWNlc0lEcztcbiAgfVxuXG4gIHJlc2V0U3RlcHBlcigpIHtcbiAgICB0aGlzLnN0ZXBwZXIucmVzZXQoKTtcbiAgICB0aGlzLnN0ZXBwZXIuc2VsZWN0ZWRJbmRleCA9IDE7XG4gICAgdGhpcy5zZWxlY3RlZCA9IFtdO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNHcm91cERldGFpbHNTdGVwKCkge1xuICAgIHJldHVybiB0aGlzLnN0ZXBwZXIuc2VsZWN0ZWRJbmRleCA9PT0gMDtcbiAgfVxuXG4gIHByaXZhdGUgaXNBc3NpZ25EZXZpY2VTdGVwKCkge1xuICAgIHJldHVybiB0aGlzLnN0ZXBwZXIuc2VsZWN0ZWRJbmRleCA9PT0gMTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Rm9jdXNPbk5hbWVJbnB1dCgpIHtcbiAgICBpZiAodGhpcy5uYW1lSW5wdXQpIHtcbiAgICAgIHRoaXMubmFtZUlucHV0LmZvY3VzKCk7XG4gICAgICB0aGlzLm5hbWVJbnB1dC5zZWxlY3QoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkLWNvbnRlbnRzXCIgKm5nSWY9XCIhY3VycmVudEdyb3VwSWQ7IGVsc2Ugc3RlcHBlclwiPlxuICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0ZXBwZXJcIj48L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3N0ZXBwZXI+XG4gIDxjOHktc3RlcHBlclxuICAgIGNsYXNzPVwiZC1jb2wgZmxleC1ub3dyYXAgbm8tYWxpZ24taXRlbXMgZml0LWggYzh5LXN0ZXBwZXItLW5vLWJ0bnNcIlxuICAgIFtkaXNhYmxlRGVmYXVsdEljb25zXT1cInsgZWRpdDogdHJ1ZSwgZG9uZTogZmFsc2UgfVwiXG4gICAgW2N1c3RvbUNsYXNzZXNdPVwiWydjb2wtbWQtNicsICdjb2wtbWQtb2Zmc2V0LTMnLCAnbS10LTI0JywgJ20tYi00MCcsICdwLTAnLCAnZmxleC1uby1zaHJpbmsnXVwiXG4gICAgbGluZWFyXG4gICAgYzh5UHJvZHVjdEV4cGVyaWVuY2VcbiAgICBpbmhlcml0XG4gICAgW2FjdGlvbk5hbWVdPVwiUFJPRFVDVF9FWFBFUklFTkNFLkVWRU5UXCJcbiAgICBbYWN0aW9uRGF0YV09XCJ7IGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFLkFERF9HUk9VUC5DT01QT05FTlRTLkFERF9HUk9VUCB9XCJcbiAgPlxuICAgIDxjZGstc3RlcCBbc3RlcENvbnRyb2xdPVwiZm9ybUdyb3VwU3RlcE9uZVwiIFtsYWJlbF09XCInTmV3IGdyb3VwJyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInAtMTYgcC10LTAgZmxleC1uby1zaHJpbmsgc2VwYXJhdG9yLWJvdHRvbSBjb2wteHMtMTJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBjb2wtbWQtb2Zmc2V0LTMgY29sLWxnLTQgY29sLWxnLW9mZnNldC00XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaDQgdGV4dC1jZW50ZXIgdGV4dC1tZWRpdW1cIj5cbiAgICAgICAgICAgICAge3sgJ05ldyBncm91cCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy0xMiBmbGV4LWdyb3cgbm8tZ3V0dGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWlubmVyLXNjcm9sbCBmaXQtaFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJsb2NrIHAtYi0wXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBjb2wtbWQtb2Zmc2V0LTMgY29sLWxnLTQgY29sLWxnLW9mZnNldC00XCI+XG4gICAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwIFtub3ZhbGlkYXRpb25dPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFN0ZXBPbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+TmFtZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4gRmlyc3QgZmxvb3InIHwgdHJhbnNsYXRlIH19IFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIyNTRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgI25hbWVSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cblxuICAgICAgICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5EZXNjcmlwdGlvbjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdlLmcuIGZpcnN0IGZsb29yIGRldmljZXMnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwU3RlcE9uZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWluZm8gbWF4LXdpZHRoLTEwMFwiIHRyYW5zbGF0ZSAqbmdJZj1cIiFjYW5Bc3NpZ25EZXZpY2VcIj5cbiAgICAgICAgICAgICAgICAgIFlvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gYXNzaWduIGRldmljZXMuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxjOHktc3RlcHBlci1idXR0b25zXG4gICAgICAgIGNsYXNzPVwiZC1ibG9jayBjYXJkLWZvb3RlciBwLTI0IHNlcGFyYXRvclwiXG4gICAgICAgIChvbkNhbmNlbCk9XCJvbkNhbmNlbC5lbWl0KClcIlxuICAgICAgICAob25DdXN0b20pPVwiY3JlYXRlR3JvdXAoKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCIhY2FuQ3JlYXRlR3JvdXBcIlxuICAgICAgICBbbGFiZWxzXT1cIlxuICAgICAgICAgIGNhbkFzc2lnbkRldmljZVxuICAgICAgICAgICAgPyB7IG5leHQ6IGJ0bkxhYmVscy5uZXh0LCBjYW5jZWw6IGJ0bkxhYmVscy5jYW5jZWwgfVxuICAgICAgICAgICAgOiB7IGN1c3RvbTogYnRuTGFiZWxzLmNyZWF0ZSwgY2FuY2VsOiBidG5MYWJlbHMuY2FuY2VsIH1cbiAgICAgICAgXCJcbiAgICAgICAgW3Nob3dCdXR0b25zXT1cIlxuICAgICAgICAgIGNhbkFzc2lnbkRldmljZSA/IHsgbmV4dDogdHJ1ZSwgY2FuY2VsOiB0cnVlIH0gOiB7IGN1c3RvbTogdHJ1ZSwgY2FuY2VsOiB0cnVlIH1cbiAgICAgICAgXCJcbiAgICAgID48L2M4eS1zdGVwcGVyLWJ1dHRvbnM+XG4gICAgPC9jZGstc3RlcD5cbiAgICA8Y2RrLXN0ZXAgW2xhYmVsXT1cIidBc3NpZ24gZGV2aWNlcycgfCB0cmFuc2xhdGVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwLTE2IHAtdC0wIGZsZXgtbm8tc2hyaW5rIHNlcGFyYXRvci1ib3R0b20gY29sLXhzLTEyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgY29sLW1kLW9mZnNldC0zIGNvbC1sZy00IGNvbC1sZy1vZmZzZXQtNFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImg0IHRleHQtY2VudGVyIHRleHQtbWVkaXVtXCI+XG4gICAgICAgICAgICAgIHt7ICdBc3NpZ24gZGV2aWNlcycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy0xMiBuby1ndXR0ZXIgZmxleC1ncm93XCI+XG4gICAgICAgIDxjOHktZGV2aWNlLWdyaWRcbiAgICAgICAgICBbdGl0bGVdPVwiJ1NlbGVjdCB0YXJnZXQgZGV2aWNlcycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFthY3Rpb25Db250cm9sc109XCJbXVwiXG4gICAgICAgICAgW2luZmluaXRlU2Nyb2xsXT1cIidhdXRvJ1wiXG4gICAgICAgICAgW3NlbGVjdGFibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgW3BhZ2luYXRpb25dPVwicGFnaW5hdGlvblwiXG4gICAgICAgICAgKGl0ZW1zU2VsZWN0KT1cIm9uU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgW3JlZnJlc2hdPVwicmVmcmVzaFwiXG4gICAgICAgICAgYzh5UHJvZHVjdEV4cGVyaWVuY2VcbiAgICAgICAgICBbYWN0aW9uTmFtZV09XCJQUk9EVUNUX0VYUEVSSUVOQ0UuRVZFTlRcIlxuICAgICAgICAgIFthY3Rpb25EYXRhXT1cInsgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0UuQUREX0dST1VQLkNPTVBPTkVOVFMuQUREX0dST1VQIH1cIlxuICAgICAgICA+PC9jOHktZGV2aWNlLWdyaWQ+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxjOHktc3RlcHBlci1idXR0b25zXG4gICAgICAgIGNsYXNzPVwiZC1ibG9jayBjYXJkLWZvb3RlciBwLTI0IHNlcGFyYXRvclwiXG4gICAgICAgIChvbkNhbmNlbCk9XCJvbkNhbmNlbC5lbWl0KClcIlxuICAgICAgICAob25DdXN0b20pPVwiY3JlYXRlR3JvdXAoKVwiXG4gICAgICAgIFtsYWJlbHNdPVwieyBjdXN0b206IGJ0bkxhYmVscy5jcmVhdGUgfVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCIhY2FuQXNzaWduRGV2aWNlXCJcbiAgICAgICAgW3BlbmRpbmddPVwicGVuZGluZ1N0YXR1c1wiXG4gICAgICA+PC9jOHktc3RlcHBlci1idXR0b25zPlxuICAgIDwvY2RrLXN0ZXA+XG4gIDwvYzh5LXN0ZXBwZXI+XG48L25nLXRlbXBsYXRlPlxuIl19