@c8y/ngx-components 1021.52.0 → 1021.54.2

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 (246) hide show
  1. package/alarm-event-selector/alarm-event-attributes-form/alarm-event-attributes-form.component.d.ts +10 -2
  2. package/alarm-event-selector/alarm-event-attributes-form/alarm-event-attributes-form.component.d.ts.map +1 -1
  3. package/alarm-event-selector/alarm-event-attributes-form/alarm-event-attributes-form.model.d.ts +11 -0
  4. package/alarm-event-selector/alarm-event-attributes-form/alarm-event-attributes-form.model.d.ts.map +1 -0
  5. package/alarm-event-selector/alarm-event-selection-list/alarm-event-selection-list.component.d.ts +10 -4
  6. package/alarm-event-selector/alarm-event-selection-list/alarm-event-selection-list.component.d.ts.map +1 -1
  7. package/alarm-event-selector/alarm-event-selector-list-item/alarm-event-selector-list-item.component.d.ts +3 -1
  8. package/alarm-event-selector/alarm-event-selector-list-item/alarm-event-selector-list-item.component.d.ts.map +1 -1
  9. package/alarm-event-selector/alarm-event-selector.model.d.ts +7 -0
  10. package/alarm-event-selector/alarm-event-selector.model.d.ts.map +1 -1
  11. package/core/dashboard/dashboard-child-action.component.d.ts +1 -1
  12. package/core/dashboard/dashboard-child-action.component.d.ts.map +1 -1
  13. package/core/dashboard/dashboard.module.d.ts +29 -29
  14. package/core/dashboard/index.d.ts +3 -0
  15. package/core/dashboard/index.d.ts.map +1 -1
  16. package/core/dashboard/widgets-dashboard.component.d.ts +1 -1
  17. package/core/dashboard/widgets-dashboard.component.d.ts.map +1 -1
  18. package/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.d.ts +1 -1
  19. package/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.d.ts.map +1 -1
  20. package/core/dashboard/wiget-time-context/realtime-control/realtime-control.component.d.ts +1 -1
  21. package/core/dashboard/wiget-time-context/realtime-control/realtime-control.component.d.ts.map +1 -1
  22. package/core/dashboard/wiget-time-context/widget-time-context-date-range.service.d.ts +10 -0
  23. package/core/dashboard/wiget-time-context/widget-time-context-date-range.service.d.ts.map +1 -0
  24. package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts +7 -4
  25. package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts.map +1 -1
  26. package/core/dashboard/wiget-time-context/widget-time-context.model.d.ts +0 -1
  27. package/core/dashboard/wiget-time-context/widget-time-context.model.d.ts.map +1 -1
  28. package/core/date-picker/date-picker.component.d.ts +1 -1
  29. package/core/date-picker/date-picker.component.d.ts.map +1 -1
  30. package/core/date-picker/date-picker.module.d.ts +9 -9
  31. package/core/date-time-picker/close-date-picker.directive.d.ts +1 -1
  32. package/core/date-time-picker/close-date-picker.directive.d.ts.map +1 -1
  33. package/core/date-time-picker/date-time-picker.component.d.ts +6 -3
  34. package/core/date-time-picker/date-time-picker.component.d.ts.map +1 -1
  35. package/core/date-time-picker/date-time-picker.module.d.ts +11 -11
  36. package/core/date-time-picker/date-time-picker.module.d.ts.map +1 -1
  37. package/core/forms/forms.module.d.ts +18 -18
  38. package/core/forms/required-input-placeholder.directive.d.ts +1 -1
  39. package/core/forms/required-input-placeholder.directive.d.ts.map +1 -1
  40. package/core/router/router.service.d.ts.map +1 -1
  41. package/core/user/user-menu.service.d.ts +36 -11
  42. package/core/user/user-menu.service.d.ts.map +1 -1
  43. package/datapoint-explorer/c8y-ngx-components-datapoint-explorer.d.ts.map +1 -0
  44. package/datapoint-explorer/datapoint-explorer.module.d.ts +7 -0
  45. package/datapoint-explorer/datapoint-explorer.module.d.ts.map +1 -0
  46. package/datapoint-explorer/index.d.ts +2 -0
  47. package/datapoint-explorer/index.d.ts.map +1 -0
  48. package/datapoint-explorer/view/c8y-ngx-components-datapoint-explorer-view.d.ts.map +1 -0
  49. package/datapoint-explorer/view/configuration/naming-dictionary.d.ts +3 -0
  50. package/datapoint-explorer/view/configuration/naming-dictionary.d.ts.map +1 -0
  51. package/datapoint-explorer/view/configuration/workspace-configuration.component.d.ts +38 -0
  52. package/datapoint-explorer/view/configuration/workspace-configuration.component.d.ts.map +1 -0
  53. package/datapoint-explorer/view/configuration/workspace-configuration.model.d.ts +7 -0
  54. package/datapoint-explorer/view/configuration/workspace-configuration.model.d.ts.map +1 -0
  55. package/datapoint-explorer/view/configuration/workspace-configuration.service.d.ts +15 -0
  56. package/datapoint-explorer/view/configuration/workspace-configuration.service.d.ts.map +1 -0
  57. package/datapoint-explorer/view/create-new-report-modal/create-new-report-modal.component.d.ts +25 -0
  58. package/datapoint-explorer/view/create-new-report-modal/create-new-report-modal.component.d.ts.map +1 -0
  59. package/datapoint-explorer/view/datapoint-explorer.component.d.ts +67 -0
  60. package/datapoint-explorer/view/datapoint-explorer.component.d.ts.map +1 -0
  61. package/datapoint-explorer/view/datapoint-explorer.service.d.ts +9 -0
  62. package/datapoint-explorer/view/datapoint-explorer.service.d.ts.map +1 -0
  63. package/datapoint-explorer/view/index.d.ts +2 -0
  64. package/datapoint-explorer/view/index.d.ts.map +1 -0
  65. package/datapoint-explorer/view/send-as-widget-to-report-modal/send-as-widget-to-report-modal.component.d.ts +23 -0
  66. package/datapoint-explorer/view/send-as-widget-to-report-modal/send-as-widget-to-report-modal.component.d.ts.map +1 -0
  67. package/echart/c8y-ngx-components-echart.d.ts.map +1 -0
  68. package/echart/chart-alerts/chart-alerts.component.d.ts +8 -0
  69. package/echart/chart-alerts/chart-alerts.component.d.ts.map +1 -0
  70. package/echart/charts.component.d.ts +63 -0
  71. package/echart/charts.component.d.ts.map +1 -0
  72. package/echart/index.d.ts +5 -0
  73. package/echart/index.d.ts.map +1 -0
  74. package/echart/models/c8y-ngx-components-echart-models.d.ts.map +1 -0
  75. package/echart/models/chart.model.d.ts +37 -0
  76. package/echart/models/chart.model.d.ts.map +1 -0
  77. package/echart/models/datapoints-graph-widget.model.d.ts +126 -0
  78. package/echart/models/datapoints-graph-widget.model.d.ts.map +1 -0
  79. package/echart/models/index.d.ts +4 -0
  80. package/echart/models/index.d.ts.map +1 -0
  81. package/echart/models/svg-icons.model.d.ts +22 -0
  82. package/echart/models/svg-icons.model.d.ts.map +1 -0
  83. package/echart/services/chart-alarms.service.d.ts +17 -0
  84. package/echart/services/chart-alarms.service.d.ts.map +1 -0
  85. package/echart/services/chart-events.service.d.ts +17 -0
  86. package/echart/services/chart-events.service.d.ts.map +1 -0
  87. package/echart/services/chart-realtime.service.d.ts +35 -0
  88. package/echart/services/chart-realtime.service.d.ts.map +1 -0
  89. package/echart/services/chart-types.service.d.ts +15 -0
  90. package/echart/services/chart-types.service.d.ts.map +1 -0
  91. package/echart/services/custom-measurements.service.d.ts +12 -0
  92. package/echart/services/custom-measurements.service.d.ts.map +1 -0
  93. package/echart/services/echarts-options.service.d.ts +143 -0
  94. package/echart/services/echarts-options.service.d.ts.map +1 -0
  95. package/echart/services/y-axis.service.d.ts +17 -0
  96. package/echart/services/y-axis.service.d.ts.map +1 -0
  97. package/esm2022/alarm-event-selector/alarm-event-attributes-form/alarm-event-attributes-form.component.mjs +37 -12
  98. package/esm2022/alarm-event-selector/alarm-event-attributes-form/alarm-event-attributes-form.model.mjs +2 -0
  99. package/esm2022/alarm-event-selector/alarm-event-selection-list/alarm-event-selection-list.component.mjs +39 -12
  100. package/esm2022/alarm-event-selector/alarm-event-selector-list-item/alarm-event-selector-list-item.component.mjs +6 -4
  101. package/esm2022/alarm-event-selector/alarm-event-selector.component.mjs +1 -1
  102. package/esm2022/alarm-event-selector/alarm-event-selector.model.mjs +1 -1
  103. package/esm2022/alarm-event-selector/custom-alarm-event-form/custom-alarm-event-form.component.mjs +1 -1
  104. package/esm2022/alarms/alarms-filter.component.mjs +3 -3
  105. package/esm2022/core/dashboard/dashboard-child-action.component.mjs +3 -3
  106. package/esm2022/core/dashboard/dashboard.module.mjs +17 -14
  107. package/esm2022/core/dashboard/index.mjs +4 -1
  108. package/esm2022/core/dashboard/widgets-dashboard.component.mjs +9 -9
  109. package/esm2022/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.mjs +11 -9
  110. package/esm2022/core/dashboard/wiget-time-context/realtime-control/realtime-control.component.mjs +8 -7
  111. package/esm2022/core/dashboard/wiget-time-context/widget-time-context-date-range.service.mjs +23 -0
  112. package/esm2022/core/dashboard/wiget-time-context/widget-time-context.component.mjs +70 -26
  113. package/esm2022/core/dashboard/wiget-time-context/widget-time-context.model.mjs +1 -1
  114. package/esm2022/core/date-picker/date-picker.component.mjs +29 -14
  115. package/esm2022/core/date-picker/date-picker.module.mjs +9 -7
  116. package/esm2022/core/date-time-picker/close-date-picker.directive.mjs +4 -3
  117. package/esm2022/core/date-time-picker/date-time-picker.component.mjs +57 -29
  118. package/esm2022/core/date-time-picker/date-time-picker.module.mjs +11 -7
  119. package/esm2022/core/forms/forms.module.mjs +3 -3
  120. package/esm2022/core/forms/ip-range-input-list.component.mjs +5 -5
  121. package/esm2022/core/forms/required-input-placeholder.directive.mjs +4 -3
  122. package/esm2022/core/router/router.service.mjs +1 -1
  123. package/esm2022/core/user/user-menu.service.mjs +57 -17
  124. package/esm2022/datapoint-explorer/c8y-ngx-components-datapoint-explorer.mjs +5 -0
  125. package/esm2022/datapoint-explorer/datapoint-explorer.module.mjs +65 -0
  126. package/esm2022/datapoint-explorer/index.mjs +2 -0
  127. package/esm2022/datapoint-explorer/view/c8y-ngx-components-datapoint-explorer-view.mjs +5 -0
  128. package/esm2022/datapoint-explorer/view/configuration/naming-dictionary.mjs +65 -0
  129. package/esm2022/datapoint-explorer/view/configuration/workspace-configuration.component.mjs +169 -0
  130. package/esm2022/datapoint-explorer/view/configuration/workspace-configuration.model.mjs +2 -0
  131. package/esm2022/datapoint-explorer/view/configuration/workspace-configuration.service.mjs +40 -0
  132. package/esm2022/datapoint-explorer/view/create-new-report-modal/create-new-report-modal.component.mjs +64 -0
  133. package/esm2022/datapoint-explorer/view/datapoint-explorer.component.mjs +279 -0
  134. package/esm2022/datapoint-explorer/view/datapoint-explorer.service.mjs +23 -0
  135. package/esm2022/datapoint-explorer/view/index.mjs +2 -0
  136. package/esm2022/datapoint-explorer/view/send-as-widget-to-report-modal/send-as-widget-to-report-modal.component.mjs +48 -0
  137. package/esm2022/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.mjs +3 -3
  138. package/esm2022/datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.mjs +3 -3
  139. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-file-types/datapoints-exports-selector-file-types.component.mjs +3 -3
  140. package/esm2022/datapoints-export-selector/datapoints-export-selector.component.mjs +3 -3
  141. package/esm2022/device-list/add-smart-group.component.mjs +3 -3
  142. package/esm2022/echart/c8y-ngx-components-echart.mjs +5 -0
  143. package/esm2022/echart/chart-alerts/chart-alerts.component.mjs +16 -0
  144. package/esm2022/echart/charts.component.mjs +560 -0
  145. package/esm2022/echart/index.mjs +5 -0
  146. package/esm2022/echart/models/c8y-ngx-components-echart-models.mjs +5 -0
  147. package/esm2022/echart/models/chart.model.mjs +2 -0
  148. package/esm2022/echart/models/datapoints-graph-widget.model.mjs +17 -0
  149. package/esm2022/echart/models/index.mjs +4 -0
  150. package/esm2022/echart/models/svg-icons.model.mjs +22 -0
  151. package/esm2022/echart/services/chart-alarms.service.mjs +58 -0
  152. package/esm2022/echart/services/chart-events.service.mjs +44 -0
  153. package/esm2022/echart/services/chart-realtime.service.mjs +193 -0
  154. package/esm2022/echart/services/chart-types.service.mjs +102 -0
  155. package/esm2022/echart/services/custom-measurements.service.mjs +52 -0
  156. package/esm2022/echart/services/echarts-options.service.mjs +857 -0
  157. package/esm2022/echart/services/y-axis.service.mjs +150 -0
  158. package/esm2022/interval-picker/interval-picker.component.mjs +3 -3
  159. package/esm2022/interval-picker/interval-picker.model.mjs +1 -1
  160. package/esm2022/report-dashboard/index.mjs +2 -1
  161. package/esm2022/time-context/c8y-ngx-components-time-context.mjs +5 -0
  162. package/esm2022/time-context/index.mjs +2 -0
  163. package/esm2022/time-context/time-context.component.mjs +217 -0
  164. package/esm2022/time-context/time-context.service.mjs +83 -0
  165. package/esm2022/translation-editor/lazy/translation-editor/translation-editor.component.mjs +6 -5
  166. package/esm2022/widgets/cockpit-exports/index.mjs +8 -1
  167. package/esm2022/widgets/definitions/datapoints-graph/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs +5 -0
  168. package/esm2022/widgets/definitions/datapoints-graph/index.mjs +31 -0
  169. package/esm2022/widgets/definitions/index.mjs +3 -2
  170. package/esm2022/widgets/implementations/datapoints-graph/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +5 -0
  171. package/esm2022/widgets/implementations/datapoints-graph/datapoints-graph-config/datapoints-graph-widget-config.component.mjs +239 -0
  172. package/esm2022/widgets/implementations/datapoints-graph/datapoints-graph-view/datapoints-graph-widget-view.component.mjs +241 -0
  173. package/esm2022/widgets/implementations/datapoints-graph/index.mjs +3 -0
  174. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +80 -28
  175. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs.map +1 -1
  176. package/fesm2022/c8y-ngx-components-alarms.mjs +2 -2
  177. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  178. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +658 -0
  179. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -0
  180. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs +72 -0
  181. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs.map +1 -0
  182. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +4 -4
  183. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  184. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +4 -4
  185. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -1
  186. package/fesm2022/c8y-ngx-components-device-list.mjs +2 -2
  187. package/fesm2022/c8y-ngx-components-device-list.mjs.map +1 -1
  188. package/fesm2022/c8y-ngx-components-echart-models.mjs +46 -0
  189. package/fesm2022/c8y-ngx-components-echart-models.mjs.map +1 -0
  190. package/fesm2022/c8y-ngx-components-echart.mjs +2023 -0
  191. package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -0
  192. package/fesm2022/c8y-ngx-components-interval-picker.mjs +2 -2
  193. package/fesm2022/c8y-ngx-components-interval-picker.mjs.map +1 -1
  194. package/fesm2022/c8y-ngx-components-report-dashboard.mjs +1 -1
  195. package/fesm2022/c8y-ngx-components-time-context.mjs +300 -0
  196. package/fesm2022/c8y-ngx-components-time-context.mjs.map +1 -0
  197. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +5 -4
  198. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs.map +1 -1
  199. package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs +7 -0
  200. package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs.map +1 -1
  201. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs +38 -0
  202. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs.map +1 -0
  203. package/fesm2022/c8y-ngx-components-widgets-definitions.mjs +2 -1
  204. package/fesm2022/c8y-ngx-components-widgets-definitions.mjs.map +1 -1
  205. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +467 -0
  206. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -0
  207. package/fesm2022/c8y-ngx-components.mjs +429 -277
  208. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  209. package/interval-picker/interval-picker.component.d.ts.map +1 -1
  210. package/interval-picker/interval-picker.model.d.ts.map +1 -1
  211. package/locales/de.po +206 -279
  212. package/locales/es.po +206 -279
  213. package/locales/fr.po +206 -279
  214. package/locales/ja_JP.po +196 -279
  215. package/locales/ko.po +455 -444
  216. package/locales/locales.pot +200 -0
  217. package/locales/nl.po +206 -279
  218. package/locales/pl.po +206 -279
  219. package/locales/pt_BR.po +206 -279
  220. package/locales/zh_CN.po +450 -443
  221. package/locales/zh_TW.po +452 -445
  222. package/package.json +1 -1
  223. package/report-dashboard/index.d.ts +1 -0
  224. package/report-dashboard/index.d.ts.map +1 -1
  225. package/time-context/c8y-ngx-components-time-context.d.ts.map +1 -0
  226. package/time-context/index.d.ts +2 -0
  227. package/time-context/index.d.ts.map +1 -0
  228. package/time-context/time-context.component.d.ts +61 -0
  229. package/time-context/time-context.component.d.ts.map +1 -0
  230. package/time-context/time-context.service.d.ts +25 -0
  231. package/time-context/time-context.service.d.ts.map +1 -0
  232. package/translation-editor/lazy/translation-editor/translation-editor.component.d.ts.map +1 -1
  233. package/widgets/cockpit-exports/index.d.ts +6 -0
  234. package/widgets/cockpit-exports/index.d.ts.map +1 -1
  235. package/widgets/definitions/datapoints-graph/c8y-ngx-components-widgets-definitions-datapoints-graph.d.ts.map +1 -0
  236. package/widgets/definitions/datapoints-graph/index.d.ts +16 -0
  237. package/widgets/definitions/datapoints-graph/index.d.ts.map +1 -0
  238. package/widgets/definitions/index.d.ts +1 -0
  239. package/widgets/definitions/index.d.ts.map +1 -1
  240. package/widgets/implementations/datapoints-graph/c8y-ngx-components-widgets-implementations-datapoints-graph.d.ts.map +1 -0
  241. package/widgets/implementations/datapoints-graph/datapoints-graph-config/datapoints-graph-widget-config.component.d.ts +43 -0
  242. package/widgets/implementations/datapoints-graph/datapoints-graph-config/datapoints-graph-widget-config.component.d.ts.map +1 -0
  243. package/widgets/implementations/datapoints-graph/datapoints-graph-view/datapoints-graph-widget-view.component.d.ts +54 -0
  244. package/widgets/implementations/datapoints-graph/datapoints-graph-view/datapoints-graph-widget-view.component.d.ts.map +1 -0
  245. package/widgets/implementations/datapoints-graph/index.d.ts +3 -0
  246. package/widgets/implementations/datapoints-graph/index.d.ts.map +1 -0
@@ -112,7 +112,7 @@ export class AlarmEventSelectorComponent {
112
112
  multi: true,
113
113
  useExisting: forwardRef(() => AlarmEventSelectorComponent)
114
114
  }
115
- ], ngImport: i0, template: "<div\n class=\"d-grid grid__row--1 fit-h\"\n [ngClass]=\"{\n 'grid__col--3-6-3--md': allowChangingContext,\n 'grid__col--8-4--md': !allowChangingContext\n }\"\n>\n <div\n class=\"d-flex d-col p-relative bg-level-1\"\n *ngIf=\"allowChangingContext\"\n >\n <c8y-asset-selector-miller\n class=\"d-contents\"\n [(ngModel)]=\"contextAsset\"\n [asset]=\"contextAsset\"\n (onSelected)=\"assetSelectionChanged($event)\"\n [container]=\"''\"\n [config]=\"{\n view: 'miller',\n groupsSelectable: groupsSelectable,\n columnHeaders: true,\n showChildDevices: true,\n showUnassignedDevices: true,\n singleColumn: true,\n search: allowSearch,\n showFilter: true\n }\"\n ></c8y-asset-selector-miller>\n </div>\n <!-- center column -->\n <div class=\"inner-scroll bg-component\" data-cy=\"c8y-alarm-event-selector--inner-column\">\n <ng-template #noDeviceEmptyState>\n <div class=\"p-16\">\n <c8y-ui-empty-state\n [icon]=\"timelineTypeTexts.emptyStateIcon\"\n [title]=\"timelineTypeTexts.emptyStateTitle | translate\"\n [subtitle]=\"timelineTypeTexts.assetWithNoItemsEmptyStateSubtitle | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n </ng-template>\n\n <ng-template #loadingData>\n <div class=\"p-16 text-center\">\n <c8y-loading></c8y-loading>\n </div>\n </ng-template>\n\n <div\n class=\"bg-inherit\"\n *ngIf=\"assetSelection | async as asset; else noDeviceEmptyState\"\n >\n <div class=\"p-l-16 p-r-16 p-t-8 p-b-8 sticky-top bg-inherit separator-bottom\">\n <p\n class=\"text-medium text-truncate\"\n [title]=\"timelineTypeTexts.availableItemsTitle | translate\"\n >\n {{ timelineTypeTexts.availableItemsTitle | translate }}\n </p>\n <div class=\"d-flex\">\n <div\n class=\"input-group input-group-search m-t-4\"\n id=\"search\"\n *ngIf=\"!(loadingItems$ | async)\"\n >\n <input\n class=\"form-control\"\n placeholder=\"Filter\u2026\"\n type=\"search\"\n [ngModel]=\"filterString\"\n (ngModelChange)=\"filterStringChanged($event)\"\n />\n <span class=\"input-group-addon\">\n <i\n c8yIcon=\"search\"\n *ngIf=\"!filterString; else clearFilterString\"\n ></i>\n <ng-template #clearFilterString>\n <i\n class=\"text-muted\"\n c8yIcon=\"times\"\n *ngIf=\"filterString\"\n (click)=\"filterStringChanged()\"\n ></i>\n </ng-template>\n </span>\n </div>\n </div>\n </div>\n\n <ng-container *ngIf=\"filteredItems$ | async as filteredItems; else loadingData\">\n <ng-container *ngIf=\"!(loadingItems$ | async); else loadingData\">\n <ng-container *ngIf=\"items$ | async as items\">\n <div class=\"p-16 bg-level-2 separator-bottom\">\n <div>\n <p>\n <i\n class=\"text-info m-r-4\"\n c8yIcon=\"info-circle\"\n ></i>\n <strong>{{ timelineTypeTexts.recentItemsWarningTitle | translate }}</strong>\n </p>\n <p>\n {{ timelineTypeTexts.recentItemsWarningText | translate }}\n {{ timelineTypeTexts.addCustomText | translate }}\n </p>\n </div>\n <div class=\"p-t-16\">\n <button\n class=\"btn btn-default btn-sm\"\n aria-controls=\"collapseCustomItemForm\"\n [attr.aria-expanded]=\"isExpanded\"\n (click)=\"isExpanded = !isExpanded\"\n >\n {{ timelineTypeTexts.addCustomItemButtonLabel | translate }}\n </button>\n <div\n class=\"collapse\"\n id=\"collapseCustomItemForm\"\n [collapse]=\"!isExpanded\"\n [isAnimated]=\"true\"\n >\n <div [style.min-height]=\"'230px'\">\n <c8y-custom-alarm-event-form\n class=\"d-block\"\n *ngIf=\"isExpanded\"\n [timelineType]=\"timelineType\"\n [target]=\"assetSelection | async\"\n [omitProperties]=\"omitProperties\"\n [defaultColor]=\"defaultColor\"\n (added)=\"itemAdded($event); isExpanded = false\"\n (cancel)=\"isExpanded = false\"\n [selectedItems]=\"selectedItems\"\n ></c8y-custom-alarm-event-form>\n </div>\n </div>\n </div>\n </div>\n\n <div\n class=\"p-16\"\n *ngIf=\"!filteredItems.length\"\n >\n <c8y-ui-empty-state\n [icon]=\"timelineTypeTexts.emptyStateIcon\"\n [title]=\"timelineTypeTexts.emptyStateTitle | translate\"\n [subtitle]=\"\n items.length\n ? ('Try another filter term.' | translate)\n : (timelineTypeTexts.assetWithNoItemsEmptyStateSubtitle | translate)\n \"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n\n <c8y-list-group>\n <c8y-list-item\n class=\"sticky-top\"\n style=\"top: 72px\"\n *ngIf=\"items.length > maxNumberOfItems && filteredItems.length >= maxNumberOfItems\"\n >\n <div class=\"alert alert-warning m-b-0\">\n {{ timelineTypeTexts.largeNumberOfItemsInfo | translate }}\n </div>\n </c8y-list-item>\n <c8y-alarm-event-selector-list-item\n class=\"d-contents\"\n [ngModel]=\"item\"\n [isSelected]=\"selectedItems | includesAlarmOrEvent: item\"\n (added)=\"itemAdded($event)\"\n (removed)=\"itemRemoved($event)\"\n [highlightText]=\"filterStringChanges$ | async\"\n [timelineType]=\"timelineType\"\n [hideSource]=\"hideSource\"\n *ngFor=\"let item of filteredItems; trackBy: trackByFn\"\n ></c8y-alarm-event-selector-list-item>\n </c8y-list-group>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n\n <!-- last column -->\n <div class=\"inner-scroll bg-level-1\">\n <p\n class=\"text-medium m-b-4 p-l-16 p-r-16 p-t-8 p-b-8 separator-bottom sticky-top text-truncate\"\n [title]=\"timelineTypeTexts.selectedItemsTitle | translate\"\n >\n {{ timelineTypeTexts.selectedItemsTitle | translate }}\n </p>\n <div class=\"d-flex flex-wrap gap-8 p-l-16 p-r-16 p-b-16\">\n <c8y-ui-empty-state\n [icon]=\"timelineTypeTexts.emptyStateIcon\"\n [title]=\"timelineTypeTexts.noSelectedItemsTitle | translate\"\n *ngIf=\"!selectedItems || !selectedItems.length\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n\n <div\n [ngClass]=\"{\n 'c8y-alarm-pill': timelineType === 'ALARM',\n 'c8y-event-pill': timelineType === 'EVENT'\n }\"\n *ngFor=\"let selectedItem of selectedItems\"\n >\n <button\n [title]=\"'Remove' | translate\"\n type=\"button\"\n [ngClass]=\"{\n 'c8y-alarm-pill__btn': timelineType === 'ALARM',\n 'c8y-event-pill__btn': timelineType === 'EVENT'\n }\"\n (click)=\"itemRemoved(selectedItem)\"\n >\n <i\n class=\"icon-14\"\n c8yIcon=\"remove\"\n ></i>\n </button>\n <div\n class=\"c8y-datapoint-pill__label\"\n [title]=\"selectedItem.label || selectedItem.filters.type\"\n >\n <span\n class=\"circle-icon-wrapper circle-icon-wrapper--small m-r-4\"\n [style.background-color]=\"selectedItem.color || defaultColor\"\n >\n <i\n class=\"stroked-icon\"\n [c8yIcon]=\"timelineType === 'ALARM' ? 'bell' : 'c8y-events'\"\n ></i>\n </span>\n <span class=\"text-truncate\">\n <span class=\"text-truncate\">{{ selectedItem.label || selectedItem.filters.type }}</span>\n <small\n class=\"text-muted text-10\"\n *ngIf=\"!hideSource && selectedItem?.__target?.name\"\n >\n {{ selectedItem?.__target?.name }}\n </small>\n </span>\n </div>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i2.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i2.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i5.MillerViewComponent, selector: "c8y-asset-selector-miller", inputs: ["config", "asset", "selectedDevice", "rootNode", "container"], outputs: ["onSelected", "onClearSelected"] }, { kind: "directive", type: i6.CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }, { kind: "component", type: i7.AlarmEventSelectorListItemComponent, selector: "c8y-alarm-event-selector-list-item", inputs: ["timelineType", "highlightText", "showAddRemoveButton", "isSelected", "optionToRemove", "showActiveToggle", "allowItemEdit", "hideSource", "displayAsSwitch", "omitProperties"], outputs: ["added", "removed"] }, { kind: "component", type: i8.CustomAlarmEventFormComponent, selector: "c8y-custom-alarm-event-form", inputs: ["timelineType", "target", "omitProperties", "selectedItems", "defaultColor"], outputs: ["added", "cancel"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.IncludesAlarmOrEventPipe, name: "includesAlarmOrEvent" }] }); }
115
+ ], ngImport: i0, template: "<div\n class=\"d-grid grid__row--1 fit-h\"\n [ngClass]=\"{\n 'grid__col--3-6-3--md': allowChangingContext,\n 'grid__col--8-4--md': !allowChangingContext\n }\"\n>\n <div\n class=\"d-flex d-col p-relative bg-level-1\"\n *ngIf=\"allowChangingContext\"\n >\n <c8y-asset-selector-miller\n class=\"d-contents\"\n [(ngModel)]=\"contextAsset\"\n [asset]=\"contextAsset\"\n (onSelected)=\"assetSelectionChanged($event)\"\n [container]=\"''\"\n [config]=\"{\n view: 'miller',\n groupsSelectable: groupsSelectable,\n columnHeaders: true,\n showChildDevices: true,\n showUnassignedDevices: true,\n singleColumn: true,\n search: allowSearch,\n showFilter: true\n }\"\n ></c8y-asset-selector-miller>\n </div>\n <!-- center column -->\n <div class=\"inner-scroll bg-component\" data-cy=\"c8y-alarm-event-selector--inner-column\">\n <ng-template #noDeviceEmptyState>\n <div class=\"p-16\">\n <c8y-ui-empty-state\n [icon]=\"timelineTypeTexts.emptyStateIcon\"\n [title]=\"timelineTypeTexts.emptyStateTitle | translate\"\n [subtitle]=\"timelineTypeTexts.assetWithNoItemsEmptyStateSubtitle | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n </ng-template>\n\n <ng-template #loadingData>\n <div class=\"p-16 text-center\">\n <c8y-loading></c8y-loading>\n </div>\n </ng-template>\n\n <div\n class=\"bg-inherit\"\n *ngIf=\"assetSelection | async as asset; else noDeviceEmptyState\"\n >\n <div class=\"p-l-16 p-r-16 p-t-8 p-b-8 sticky-top bg-inherit separator-bottom\">\n <p\n class=\"text-medium text-truncate\"\n [title]=\"timelineTypeTexts.availableItemsTitle | translate\"\n >\n {{ timelineTypeTexts.availableItemsTitle | translate }}\n </p>\n <div class=\"d-flex\">\n <div\n class=\"input-group input-group-search m-t-4\"\n id=\"search\"\n *ngIf=\"!(loadingItems$ | async)\"\n >\n <input\n class=\"form-control\"\n placeholder=\"Filter\u2026\"\n type=\"search\"\n [ngModel]=\"filterString\"\n (ngModelChange)=\"filterStringChanged($event)\"\n />\n <span class=\"input-group-addon\">\n <i\n c8yIcon=\"search\"\n *ngIf=\"!filterString; else clearFilterString\"\n ></i>\n <ng-template #clearFilterString>\n <i\n class=\"text-muted\"\n c8yIcon=\"times\"\n *ngIf=\"filterString\"\n (click)=\"filterStringChanged()\"\n ></i>\n </ng-template>\n </span>\n </div>\n </div>\n </div>\n\n <ng-container *ngIf=\"filteredItems$ | async as filteredItems; else loadingData\">\n <ng-container *ngIf=\"!(loadingItems$ | async); else loadingData\">\n <ng-container *ngIf=\"items$ | async as items\">\n <div class=\"p-16 bg-level-2 separator-bottom\">\n <div>\n <p>\n <i\n class=\"text-info m-r-4\"\n c8yIcon=\"info-circle\"\n ></i>\n <strong>{{ timelineTypeTexts.recentItemsWarningTitle | translate }}</strong>\n </p>\n <p>\n {{ timelineTypeTexts.recentItemsWarningText | translate }}\n {{ timelineTypeTexts.addCustomText | translate }}\n </p>\n </div>\n <div class=\"p-t-16\">\n <button\n class=\"btn btn-default btn-sm\"\n aria-controls=\"collapseCustomItemForm\"\n [attr.aria-expanded]=\"isExpanded\"\n (click)=\"isExpanded = !isExpanded\"\n >\n {{ timelineTypeTexts.addCustomItemButtonLabel | translate }}\n </button>\n <div\n class=\"collapse\"\n id=\"collapseCustomItemForm\"\n [collapse]=\"!isExpanded\"\n [isAnimated]=\"true\"\n >\n <div [style.min-height]=\"'230px'\">\n <c8y-custom-alarm-event-form\n class=\"d-block\"\n *ngIf=\"isExpanded\"\n [timelineType]=\"timelineType\"\n [target]=\"assetSelection | async\"\n [omitProperties]=\"omitProperties\"\n [defaultColor]=\"defaultColor\"\n (added)=\"itemAdded($event); isExpanded = false\"\n (cancel)=\"isExpanded = false\"\n [selectedItems]=\"selectedItems\"\n ></c8y-custom-alarm-event-form>\n </div>\n </div>\n </div>\n </div>\n\n <div\n class=\"p-16\"\n *ngIf=\"!filteredItems.length\"\n >\n <c8y-ui-empty-state\n [icon]=\"timelineTypeTexts.emptyStateIcon\"\n [title]=\"timelineTypeTexts.emptyStateTitle | translate\"\n [subtitle]=\"\n items.length\n ? ('Try another filter term.' | translate)\n : (timelineTypeTexts.assetWithNoItemsEmptyStateSubtitle | translate)\n \"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n\n <c8y-list-group>\n <c8y-list-item\n class=\"sticky-top\"\n style=\"top: 72px\"\n *ngIf=\"items.length > maxNumberOfItems && filteredItems.length >= maxNumberOfItems\"\n >\n <div class=\"alert alert-warning m-b-0\">\n {{ timelineTypeTexts.largeNumberOfItemsInfo | translate }}\n </div>\n </c8y-list-item>\n <c8y-alarm-event-selector-list-item\n class=\"d-contents\"\n [ngModel]=\"item\"\n [isSelected]=\"selectedItems | includesAlarmOrEvent: item\"\n (added)=\"itemAdded($event)\"\n (removed)=\"itemRemoved($event)\"\n [highlightText]=\"filterStringChanges$ | async\"\n [timelineType]=\"timelineType\"\n [hideSource]=\"hideSource\"\n *ngFor=\"let item of filteredItems; trackBy: trackByFn\"\n ></c8y-alarm-event-selector-list-item>\n </c8y-list-group>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n\n <!-- last column -->\n <div class=\"inner-scroll bg-level-1\">\n <p\n class=\"text-medium m-b-4 p-l-16 p-r-16 p-t-8 p-b-8 separator-bottom sticky-top text-truncate\"\n [title]=\"timelineTypeTexts.selectedItemsTitle | translate\"\n >\n {{ timelineTypeTexts.selectedItemsTitle | translate }}\n </p>\n <div class=\"d-flex flex-wrap gap-8 p-l-16 p-r-16 p-b-16\">\n <c8y-ui-empty-state\n [icon]=\"timelineTypeTexts.emptyStateIcon\"\n [title]=\"timelineTypeTexts.noSelectedItemsTitle | translate\"\n *ngIf=\"!selectedItems || !selectedItems.length\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n\n <div\n [ngClass]=\"{\n 'c8y-alarm-pill': timelineType === 'ALARM',\n 'c8y-event-pill': timelineType === 'EVENT'\n }\"\n *ngFor=\"let selectedItem of selectedItems\"\n >\n <button\n [title]=\"'Remove' | translate\"\n type=\"button\"\n [ngClass]=\"{\n 'c8y-alarm-pill__btn': timelineType === 'ALARM',\n 'c8y-event-pill__btn': timelineType === 'EVENT'\n }\"\n (click)=\"itemRemoved(selectedItem)\"\n >\n <i\n class=\"icon-14\"\n c8yIcon=\"remove\"\n ></i>\n </button>\n <div\n class=\"c8y-datapoint-pill__label\"\n [title]=\"selectedItem.label || selectedItem.filters.type\"\n >\n <span\n class=\"circle-icon-wrapper circle-icon-wrapper--small m-r-4\"\n [style.background-color]=\"selectedItem.color || defaultColor\"\n >\n <i\n class=\"stroked-icon\"\n [c8yIcon]=\"timelineType === 'ALARM' ? 'bell' : 'c8y-events'\"\n ></i>\n </span>\n <span class=\"text-truncate\">\n <span class=\"text-truncate\">{{ selectedItem.label || selectedItem.filters.type }}</span>\n <small\n class=\"text-muted text-10\"\n *ngIf=\"!hideSource && selectedItem?.__target?.name\"\n >\n {{ selectedItem?.__target?.name }}\n </small>\n </span>\n </div>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i2.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i2.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i5.MillerViewComponent, selector: "c8y-asset-selector-miller", inputs: ["config", "asset", "selectedDevice", "rootNode", "container"], outputs: ["onSelected", "onClearSelected"] }, { kind: "directive", type: i6.CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }, { kind: "component", type: i7.AlarmEventSelectorListItemComponent, selector: "c8y-alarm-event-selector-list-item", inputs: ["timelineType", "datapoints", "highlightText", "showAddRemoveButton", "isSelected", "optionToRemove", "showActiveToggle", "allowItemEdit", "hideSource", "displayAsSwitch", "omitProperties"], outputs: ["added", "removed"] }, { kind: "component", type: i8.CustomAlarmEventFormComponent, selector: "c8y-custom-alarm-event-form", inputs: ["timelineType", "target", "omitProperties", "selectedItems", "defaultColor"], outputs: ["added", "cancel"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.IncludesAlarmOrEventPipe, name: "includesAlarmOrEvent" }] }); }
116
116
  }
117
117
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AlarmEventSelectorComponent, decorators: [{
118
118
  type: Component,
@@ -33,4 +33,4 @@ export const ALARM_TEXTS = {
33
33
  recentItemsWarningText: gettext('Recent alarms are displayed below. Past alarms might not be shown.'),
34
34
  addCustomText: gettext('Optionally you can add a custom alarm.')
35
35
  };
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm0tZXZlbnQtc2VsZWN0b3IubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9hbGFybS1ldmVudC1zZWxlY3Rvci9hbGFybS1ldmVudC1zZWxlY3Rvci5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFpRDlDLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBc0I7SUFDNUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFDNUIsY0FBYyxFQUFFLFlBQVk7SUFDNUIsZUFBZSxFQUFFLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQztJQUNqRCxrQkFBa0IsRUFBRSxPQUFPLENBQUMsdUJBQXVCLENBQUM7SUFDcEQsY0FBYyxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUM7SUFDcEMsd0JBQXdCLEVBQUUsT0FBTyxDQUFDLGtCQUFrQixDQUFDO0lBQ3JELGFBQWEsRUFBRSxPQUFPLENBQUMsaUJBQWlCLENBQUM7SUFDekMsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLGtCQUFrQixDQUFDO0lBQ2hELGtDQUFrQyxFQUFFLE9BQU8sQ0FBQyw0Q0FBNEMsQ0FBQztJQUN6RixzQkFBc0IsRUFBRSxPQUFPLENBQzdCLGtIQUFrSCxDQUNuSDtJQUNELGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztJQUM5QyxvQkFBb0IsRUFBRSxPQUFPLENBQUMscUJBQXFCLENBQUM7SUFDcEQsdUJBQXVCLEVBQUUsT0FBTyxDQUFDLHFDQUFxQyxDQUFDO0lBQ3ZFLHNCQUFzQixFQUFFLE9BQU8sQ0FDN0Isb0VBQW9FLENBQ3JFO0lBQ0QsYUFBYSxFQUFFLE9BQU8sQ0FBQyx3Q0FBd0MsQ0FBQztDQUNqRSxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFzQjtJQUM1QyxTQUFTLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUM1QixjQUFjLEVBQUUsV0FBVztJQUMzQixlQUFlLEVBQUUsT0FBTyxDQUFDLHVCQUF1QixDQUFDO0lBQ2pELGtCQUFrQixFQUFFLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQztJQUNwRCxjQUFjLEVBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQztJQUNwQyx3QkFBd0IsRUFBRSxPQUFPLENBQUMsa0JBQWtCLENBQUM7SUFDckQsYUFBYSxFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztJQUN6QyxtQkFBbUIsRUFBRSxPQUFPLENBQUMsa0JBQWtCLENBQUM7SUFDaEQsa0NBQWtDLEVBQUUsT0FBTyxDQUFDLDRDQUE0QyxDQUFDO0lBQ3pGLHNCQUFzQixFQUFFLE9BQU8sQ0FDN0Isa0hBQWtILENBQ25IO0lBQ0Qsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLGlCQUFpQixDQUFDO0lBQzlDLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQztJQUNwRCx1QkFBdUIsRUFBRSxPQUFPLENBQUMscUNBQXFDLENBQUM7SUFDdkUsc0JBQXNCLEVBQUUsT0FBTyxDQUM3QixvRUFBb0UsQ0FDckU7SUFDRCxhQUFhLEVBQUUsT0FBTyxDQUFDLHdDQUF3QyxDQUFDO0NBQ2pFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJSWRlbnRpZmllZCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcblxuZXhwb3J0IHR5cGUgVGltZWxpbmVUeXBlID0gJ0FMQVJNJyB8ICdFVkVOVCc7XG5cbnR5cGUgQWxhcm1PckV2ZW50QmFzZSA9IHtcbiAgdGltZWxpbmVUeXBlOiBUaW1lbGluZVR5cGU7XG4gIGNvbG9yOiBzdHJpbmc7XG4gIF9fYWN0aXZlPzogYm9vbGVhbjtcbiAgbGFiZWw6IHN0cmluZztcbiAgZmlsdGVyczoge1xuICAgIHR5cGU6IHN0cmluZztcbiAgfTtcbiAgX190YXJnZXQ6IElJZGVudGlmaWVkO1xufTtcblxuZXhwb3J0IHR5cGUgQWxhcm1EZXRhaWxzID0gQWxhcm1PckV2ZW50QmFzZSAmIHtcbiAgdGltZWxpbmVUeXBlOiAnQUxBUk0nO1xuICBmaWx0ZXJzOiB7XG4gICAgdHlwZTogc3RyaW5nO1xuICB9O1xufTtcblxuZXhwb3J0IHR5cGUgRXZlbnREZXRhaWxzID0gQWxhcm1PckV2ZW50QmFzZSAmIHtcbiAgdGltZWxpbmVUeXBlOiAnRVZFTlQnO1xuICBmaWx0ZXJzOiB7XG4gICAgdHlwZTogc3RyaW5nO1xuICB9O1xufTtcblxuZXhwb3J0IHR5cGUgQWxhcm1PckV2ZW50ID0gQWxhcm1EZXRhaWxzIHwgRXZlbnREZXRhaWxzO1xuXG5leHBvcnQgdHlwZSBUaW1lbGluZVR5cGVUZXh0cyA9IHtcbiAgbGlzdFRpdGxlOiBzdHJpbmc7XG4gIGVtcHR5U3RhdGVJY29uOiBzdHJpbmc7XG4gIGVtcHR5U3RhdGVUaXRsZTogc3RyaW5nO1xuICBlbXB0eVN0YXRlU3VidGl0bGU6IHN0cmluZztcbiAgYWRkQnV0dG9uTGFiZWw6IHN0cmluZztcbiAgYWRkQ3VzdG9tSXRlbUJ1dHRvbkxhYmVsOiBzdHJpbmc7XG4gIHNlbGVjdG9yVGl0bGU6IHN0cmluZztcbiAgYXZhaWxhYmxlSXRlbXNUaXRsZTogc3RyaW5nO1xuICBhc3NldFdpdGhOb0l0ZW1zRW1wdHlTdGF0ZVN1YnRpdGxlOiBzdHJpbmc7XG4gIGxhcmdlTnVtYmVyT2ZJdGVtc0luZm86IHN0cmluZztcbiAgc2VsZWN0ZWRJdGVtc1RpdGxlOiBzdHJpbmc7XG4gIG5vU2VsZWN0ZWRJdGVtc1RpdGxlOiBzdHJpbmc7XG4gIHJlY2VudEl0ZW1zV2FybmluZ1RpdGxlOiBzdHJpbmc7XG4gIHJlY2VudEl0ZW1zV2FybmluZ1RleHQ6IHN0cmluZztcbiAgYWRkQ3VzdG9tVGV4dDogc3RyaW5nO1xufTtcblxuZXhwb3J0IGNvbnN0IEVWRU5UX1RFWFRTOiBUaW1lbGluZVR5cGVUZXh0cyA9IHtcbiAgbGlzdFRpdGxlOiBnZXR0ZXh0KCdFdmVudHMnKSxcbiAgZW1wdHlTdGF0ZUljb246ICdjOHktZXZlbnRzJyxcbiAgZW1wdHlTdGF0ZVRpdGxlOiBnZXR0ZXh0KCdObyBldmVudHMgdG8gZGlzcGxheS4nKSxcbiAgZW1wdHlTdGF0ZVN1YnRpdGxlOiBnZXR0ZXh0KCdBZGQgeW91ciBmaXJzdCBldmVudC4nKSxcbiAgYWRkQnV0dG9uTGFiZWw6IGdldHRleHQoJ0FkZCBldmVudCcpLFxuICBhZGRDdXN0b21JdGVtQnV0dG9uTGFiZWw6IGdldHRleHQoJ0FkZCBjdXN0b20gZXZlbnQnKSxcbiAgc2VsZWN0b3JUaXRsZTogZ2V0dGV4dCgnRXZlbnRzIHNlbGVjdG9yJyksXG4gIGF2YWlsYWJsZUl0ZW1zVGl0bGU6IGdldHRleHQoJ0F2YWlsYWJsZSBldmVudHMnKSxcbiAgYXNzZXRXaXRoTm9JdGVtc0VtcHR5U3RhdGVTdWJ0aXRsZTogZ2V0dGV4dCgnU2VsZWN0IGFuIGFzc2V0IHdpdGggZXZlbnRzIGZyb20gdGhlIGxpc3QuJyksXG4gIGxhcmdlTnVtYmVyT2ZJdGVtc0luZm86IGdldHRleHQoXG4gICAgJ0R1ZSB0byB0aGUgbGFyZ2UgbnVtYmVyLCBvbmx5IGEgc3Vic2V0IG9mIGV2ZW50cyBhcmUgZGlzcGxheWVkLiBVc2Ugc2VhcmNoIHRvIG5hcnJvdyBkb3duIHRoZSBudW1iZXIgb2YgcmVzdWx0cy4nXG4gICksXG4gIHNlbGVjdGVkSXRlbXNUaXRsZTogZ2V0dGV4dCgnU2VsZWN0ZWQgZXZlbnRzJyksXG4gIG5vU2VsZWN0ZWRJdGVtc1RpdGxlOiBnZXR0ZXh0KCdObyBldmVudHMgc2VsZWN0ZWQuJyksXG4gIHJlY2VudEl0ZW1zV2FybmluZ1RpdGxlOiBnZXR0ZXh0KCdUaGUgbGlzdCBiZWxvdyBtYXkgbm90IGJlIGNvbXBsZXRlLicpLFxuICByZWNlbnRJdGVtc1dhcm5pbmdUZXh0OiBnZXR0ZXh0KFxuICAgICdSZWNlbnQgZXZlbnRzIGFyZSBkaXNwbGF5ZWQgYmVsb3cuIFBhc3QgZXZlbnRzIG1pZ2h0IG5vdCBiZSBzaG93bi4nXG4gICksXG4gIGFkZEN1c3RvbVRleHQ6IGdldHRleHQoJ09wdGlvbmFsbHkgeW91IGNhbiBhZGQgYSBjdXN0b20gZXZlbnQuJylcbn07XG5cbmV4cG9ydCBjb25zdCBBTEFSTV9URVhUUzogVGltZWxpbmVUeXBlVGV4dHMgPSB7XG4gIGxpc3RUaXRsZTogZ2V0dGV4dCgnQWxhcm1zJyksXG4gIGVtcHR5U3RhdGVJY29uOiAnYzh5LWFsYXJtJyxcbiAgZW1wdHlTdGF0ZVRpdGxlOiBnZXR0ZXh0KCdObyBhbGFybXMgdG8gZGlzcGxheS4nKSxcbiAgZW1wdHlTdGF0ZVN1YnRpdGxlOiBnZXR0ZXh0KCdBZGQgeW91ciBmaXJzdCBhbGFybS4nKSxcbiAgYWRkQnV0dG9uTGFiZWw6IGdldHRleHQoJ0FkZCBhbGFybScpLFxuICBhZGRDdXN0b21JdGVtQnV0dG9uTGFiZWw6IGdldHRleHQoJ0FkZCBjdXN0b20gYWxhcm0nKSxcbiAgc2VsZWN0b3JUaXRsZTogZ2V0dGV4dCgnQWxhcm1zIHNlbGVjdG9yJyksXG4gIGF2YWlsYWJsZUl0ZW1zVGl0bGU6IGdldHRleHQoJ0F2YWlsYWJsZSBhbGFybXMnKSxcbiAgYXNzZXRXaXRoTm9JdGVtc0VtcHR5U3RhdGVTdWJ0aXRsZTogZ2V0dGV4dCgnU2VsZWN0IGFuIGFzc2V0IHdpdGggYWxhcm1zIGZyb20gdGhlIGxpc3QuJyksXG4gIGxhcmdlTnVtYmVyT2ZJdGVtc0luZm86IGdldHRleHQoXG4gICAgJ0R1ZSB0byB0aGUgbGFyZ2UgbnVtYmVyLCBvbmx5IGEgc3Vic2V0IG9mIGFsYXJtcyBhcmUgZGlzcGxheWVkLiBVc2Ugc2VhcmNoIHRvIG5hcnJvdyBkb3duIHRoZSBudW1iZXIgb2YgcmVzdWx0cy4nXG4gICksXG4gIHNlbGVjdGVkSXRlbXNUaXRsZTogZ2V0dGV4dCgnU2VsZWN0ZWQgYWxhcm1zJyksXG4gIG5vU2VsZWN0ZWRJdGVtc1RpdGxlOiBnZXR0ZXh0KCdObyBhbGFybXMgc2VsZWN0ZWQuJyksXG4gIHJlY2VudEl0ZW1zV2FybmluZ1RpdGxlOiBnZXR0ZXh0KCdUaGUgbGlzdCBiZWxvdyBtYXkgbm90IGJlIGNvbXBsZXRlLicpLFxuICByZWNlbnRJdGVtc1dhcm5pbmdUZXh0OiBnZXR0ZXh0KFxuICAgICdSZWNlbnQgYWxhcm1zIGFyZSBkaXNwbGF5ZWQgYmVsb3cuIFBhc3QgYWxhcm1zIG1pZ2h0IG5vdCBiZSBzaG93bi4nXG4gICksXG4gIGFkZEN1c3RvbVRleHQ6IGdldHRleHQoJ09wdGlvbmFsbHkgeW91IGNhbiBhZGQgYSBjdXN0b20gYWxhcm0uJylcbn07XG5cbi8qKlxuICogVGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBhbGFybXMtZXZlbnRzIHNlbGVjdG9yIG1vZGFsIGlmIHNvbWUgcHJvcGVydGllcyBzaG91bGQgYmUgb21pdHRlZC5cbiAqL1xuZXhwb3J0IHR5cGUgT21pdFNlbGVjdG9yUHJvcGVydGllcyA9IHtcbiAgY29sb3I/OiBib29sZWFuO1xuICBsYWJlbD86IGJvb2xlYW47XG59O1xuIl19
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm0tZXZlbnQtc2VsZWN0b3IubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9hbGFybS1ldmVudC1zZWxlY3Rvci9hbGFybS1ldmVudC1zZWxlY3Rvci5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUF5RDlDLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBc0I7SUFDNUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFDNUIsY0FBYyxFQUFFLFlBQVk7SUFDNUIsZUFBZSxFQUFFLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQztJQUNqRCxrQkFBa0IsRUFBRSxPQUFPLENBQUMsdUJBQXVCLENBQUM7SUFDcEQsY0FBYyxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUM7SUFDcEMsd0JBQXdCLEVBQUUsT0FBTyxDQUFDLGtCQUFrQixDQUFDO0lBQ3JELGFBQWEsRUFBRSxPQUFPLENBQUMsaUJBQWlCLENBQUM7SUFDekMsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLGtCQUFrQixDQUFDO0lBQ2hELGtDQUFrQyxFQUFFLE9BQU8sQ0FBQyw0Q0FBNEMsQ0FBQztJQUN6RixzQkFBc0IsRUFBRSxPQUFPLENBQzdCLGtIQUFrSCxDQUNuSDtJQUNELGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztJQUM5QyxvQkFBb0IsRUFBRSxPQUFPLENBQUMscUJBQXFCLENBQUM7SUFDcEQsdUJBQXVCLEVBQUUsT0FBTyxDQUFDLHFDQUFxQyxDQUFDO0lBQ3ZFLHNCQUFzQixFQUFFLE9BQU8sQ0FDN0Isb0VBQW9FLENBQ3JFO0lBQ0QsYUFBYSxFQUFFLE9BQU8sQ0FBQyx3Q0FBd0MsQ0FBQztDQUNqRSxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFzQjtJQUM1QyxTQUFTLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUM1QixjQUFjLEVBQUUsV0FBVztJQUMzQixlQUFlLEVBQUUsT0FBTyxDQUFDLHVCQUF1QixDQUFDO0lBQ2pELGtCQUFrQixFQUFFLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQztJQUNwRCxjQUFjLEVBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQztJQUNwQyx3QkFBd0IsRUFBRSxPQUFPLENBQUMsa0JBQWtCLENBQUM7SUFDckQsYUFBYSxFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztJQUN6QyxtQkFBbUIsRUFBRSxPQUFPLENBQUMsa0JBQWtCLENBQUM7SUFDaEQsa0NBQWtDLEVBQUUsT0FBTyxDQUFDLDRDQUE0QyxDQUFDO0lBQ3pGLHNCQUFzQixFQUFFLE9BQU8sQ0FDN0Isa0hBQWtILENBQ25IO0lBQ0Qsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLGlCQUFpQixDQUFDO0lBQzlDLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQztJQUNwRCx1QkFBdUIsRUFBRSxPQUFPLENBQUMscUNBQXFDLENBQUM7SUFDdkUsc0JBQXNCLEVBQUUsT0FBTyxDQUM3QixvRUFBb0UsQ0FDckU7SUFDRCxhQUFhLEVBQUUsT0FBTyxDQUFDLHdDQUF3QyxDQUFDO0NBQ2pFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJSWRlbnRpZmllZCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcblxuZXhwb3J0IHR5cGUgVGltZWxpbmVUeXBlID0gJ0FMQVJNJyB8ICdFVkVOVCc7XG5cbnR5cGUgQWxhcm1PckV2ZW50QmFzZSA9IHtcbiAgdGltZWxpbmVUeXBlOiBUaW1lbGluZVR5cGU7XG4gIGNvbG9yOiBzdHJpbmc7XG4gIF9fYWN0aXZlPzogYm9vbGVhbjtcbiAgbGFiZWw6IHN0cmluZztcbiAgZmlsdGVyczoge1xuICAgIHR5cGU6IHN0cmluZztcbiAgfTtcbiAgX190YXJnZXQ6IElJZGVudGlmaWVkO1xufTtcblxuZXhwb3J0IHR5cGUgQWxhcm1EZXRhaWxzID0gQWxhcm1PckV2ZW50QmFzZSAmIHtcbiAgdGltZWxpbmVUeXBlOiAnQUxBUk0nO1xuICBmaWx0ZXJzOiB7XG4gICAgdHlwZTogc3RyaW5nO1xuICB9O1xuICBzZWxlY3RlZERhdGFwb2ludD86IFNlbGVjdGVkRGF0YXBvaW50O1xufTtcblxuZXhwb3J0IHR5cGUgRXZlbnREZXRhaWxzID0gQWxhcm1PckV2ZW50QmFzZSAmIHtcbiAgdGltZWxpbmVUeXBlOiAnRVZFTlQnO1xuICBmaWx0ZXJzOiB7XG4gICAgdHlwZTogc3RyaW5nO1xuICB9O1xuICBzZWxlY3RlZERhdGFwb2ludD86IFNlbGVjdGVkRGF0YXBvaW50O1xufTtcblxuZXhwb3J0IHR5cGUgU2VsZWN0ZWREYXRhcG9pbnQgPSB7XG4gIHRhcmdldD86IHN0cmluZztcbiAgc2VyaWVzPzogc3RyaW5nO1xuICBmcmFnbWVudD86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEFsYXJtT3JFdmVudCA9IEFsYXJtRGV0YWlscyB8IEV2ZW50RGV0YWlscztcblxuZXhwb3J0IHR5cGUgVGltZWxpbmVUeXBlVGV4dHMgPSB7XG4gIGxpc3RUaXRsZTogc3RyaW5nO1xuICBlbXB0eVN0YXRlSWNvbjogc3RyaW5nO1xuICBlbXB0eVN0YXRlVGl0bGU6IHN0cmluZztcbiAgZW1wdHlTdGF0ZVN1YnRpdGxlOiBzdHJpbmc7XG4gIGFkZEJ1dHRvbkxhYmVsOiBzdHJpbmc7XG4gIGFkZEN1c3RvbUl0ZW1CdXR0b25MYWJlbDogc3RyaW5nO1xuICBzZWxlY3RvclRpdGxlOiBzdHJpbmc7XG4gIGF2YWlsYWJsZUl0ZW1zVGl0bGU6IHN0cmluZztcbiAgYXNzZXRXaXRoTm9JdGVtc0VtcHR5U3RhdGVTdWJ0aXRsZTogc3RyaW5nO1xuICBsYXJnZU51bWJlck9mSXRlbXNJbmZvOiBzdHJpbmc7XG4gIHNlbGVjdGVkSXRlbXNUaXRsZTogc3RyaW5nO1xuICBub1NlbGVjdGVkSXRlbXNUaXRsZTogc3RyaW5nO1xuICByZWNlbnRJdGVtc1dhcm5pbmdUaXRsZTogc3RyaW5nO1xuICByZWNlbnRJdGVtc1dhcm5pbmdUZXh0OiBzdHJpbmc7XG4gIGFkZEN1c3RvbVRleHQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCBjb25zdCBFVkVOVF9URVhUUzogVGltZWxpbmVUeXBlVGV4dHMgPSB7XG4gIGxpc3RUaXRsZTogZ2V0dGV4dCgnRXZlbnRzJyksXG4gIGVtcHR5U3RhdGVJY29uOiAnYzh5LWV2ZW50cycsXG4gIGVtcHR5U3RhdGVUaXRsZTogZ2V0dGV4dCgnTm8gZXZlbnRzIHRvIGRpc3BsYXkuJyksXG4gIGVtcHR5U3RhdGVTdWJ0aXRsZTogZ2V0dGV4dCgnQWRkIHlvdXIgZmlyc3QgZXZlbnQuJyksXG4gIGFkZEJ1dHRvbkxhYmVsOiBnZXR0ZXh0KCdBZGQgZXZlbnQnKSxcbiAgYWRkQ3VzdG9tSXRlbUJ1dHRvbkxhYmVsOiBnZXR0ZXh0KCdBZGQgY3VzdG9tIGV2ZW50JyksXG4gIHNlbGVjdG9yVGl0bGU6IGdldHRleHQoJ0V2ZW50cyBzZWxlY3RvcicpLFxuICBhdmFpbGFibGVJdGVtc1RpdGxlOiBnZXR0ZXh0KCdBdmFpbGFibGUgZXZlbnRzJyksXG4gIGFzc2V0V2l0aE5vSXRlbXNFbXB0eVN0YXRlU3VidGl0bGU6IGdldHRleHQoJ1NlbGVjdCBhbiBhc3NldCB3aXRoIGV2ZW50cyBmcm9tIHRoZSBsaXN0LicpLFxuICBsYXJnZU51bWJlck9mSXRlbXNJbmZvOiBnZXR0ZXh0KFxuICAgICdEdWUgdG8gdGhlIGxhcmdlIG51bWJlciwgb25seSBhIHN1YnNldCBvZiBldmVudHMgYXJlIGRpc3BsYXllZC4gVXNlIHNlYXJjaCB0byBuYXJyb3cgZG93biB0aGUgbnVtYmVyIG9mIHJlc3VsdHMuJ1xuICApLFxuICBzZWxlY3RlZEl0ZW1zVGl0bGU6IGdldHRleHQoJ1NlbGVjdGVkIGV2ZW50cycpLFxuICBub1NlbGVjdGVkSXRlbXNUaXRsZTogZ2V0dGV4dCgnTm8gZXZlbnRzIHNlbGVjdGVkLicpLFxuICByZWNlbnRJdGVtc1dhcm5pbmdUaXRsZTogZ2V0dGV4dCgnVGhlIGxpc3QgYmVsb3cgbWF5IG5vdCBiZSBjb21wbGV0ZS4nKSxcbiAgcmVjZW50SXRlbXNXYXJuaW5nVGV4dDogZ2V0dGV4dChcbiAgICAnUmVjZW50IGV2ZW50cyBhcmUgZGlzcGxheWVkIGJlbG93LiBQYXN0IGV2ZW50cyBtaWdodCBub3QgYmUgc2hvd24uJ1xuICApLFxuICBhZGRDdXN0b21UZXh0OiBnZXR0ZXh0KCdPcHRpb25hbGx5IHlvdSBjYW4gYWRkIGEgY3VzdG9tIGV2ZW50LicpXG59O1xuXG5leHBvcnQgY29uc3QgQUxBUk1fVEVYVFM6IFRpbWVsaW5lVHlwZVRleHRzID0ge1xuICBsaXN0VGl0bGU6IGdldHRleHQoJ0FsYXJtcycpLFxuICBlbXB0eVN0YXRlSWNvbjogJ2M4eS1hbGFybScsXG4gIGVtcHR5U3RhdGVUaXRsZTogZ2V0dGV4dCgnTm8gYWxhcm1zIHRvIGRpc3BsYXkuJyksXG4gIGVtcHR5U3RhdGVTdWJ0aXRsZTogZ2V0dGV4dCgnQWRkIHlvdXIgZmlyc3QgYWxhcm0uJyksXG4gIGFkZEJ1dHRvbkxhYmVsOiBnZXR0ZXh0KCdBZGQgYWxhcm0nKSxcbiAgYWRkQ3VzdG9tSXRlbUJ1dHRvbkxhYmVsOiBnZXR0ZXh0KCdBZGQgY3VzdG9tIGFsYXJtJyksXG4gIHNlbGVjdG9yVGl0bGU6IGdldHRleHQoJ0FsYXJtcyBzZWxlY3RvcicpLFxuICBhdmFpbGFibGVJdGVtc1RpdGxlOiBnZXR0ZXh0KCdBdmFpbGFibGUgYWxhcm1zJyksXG4gIGFzc2V0V2l0aE5vSXRlbXNFbXB0eVN0YXRlU3VidGl0bGU6IGdldHRleHQoJ1NlbGVjdCBhbiBhc3NldCB3aXRoIGFsYXJtcyBmcm9tIHRoZSBsaXN0LicpLFxuICBsYXJnZU51bWJlck9mSXRlbXNJbmZvOiBnZXR0ZXh0KFxuICAgICdEdWUgdG8gdGhlIGxhcmdlIG51bWJlciwgb25seSBhIHN1YnNldCBvZiBhbGFybXMgYXJlIGRpc3BsYXllZC4gVXNlIHNlYXJjaCB0byBuYXJyb3cgZG93biB0aGUgbnVtYmVyIG9mIHJlc3VsdHMuJ1xuICApLFxuICBzZWxlY3RlZEl0ZW1zVGl0bGU6IGdldHRleHQoJ1NlbGVjdGVkIGFsYXJtcycpLFxuICBub1NlbGVjdGVkSXRlbXNUaXRsZTogZ2V0dGV4dCgnTm8gYWxhcm1zIHNlbGVjdGVkLicpLFxuICByZWNlbnRJdGVtc1dhcm5pbmdUaXRsZTogZ2V0dGV4dCgnVGhlIGxpc3QgYmVsb3cgbWF5IG5vdCBiZSBjb21wbGV0ZS4nKSxcbiAgcmVjZW50SXRlbXNXYXJuaW5nVGV4dDogZ2V0dGV4dChcbiAgICAnUmVjZW50IGFsYXJtcyBhcmUgZGlzcGxheWVkIGJlbG93LiBQYXN0IGFsYXJtcyBtaWdodCBub3QgYmUgc2hvd24uJ1xuICApLFxuICBhZGRDdXN0b21UZXh0OiBnZXR0ZXh0KCdPcHRpb25hbGx5IHlvdSBjYW4gYWRkIGEgY3VzdG9tIGFsYXJtLicpXG59O1xuXG4vKipcbiAqIFRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgYWxhcm1zLWV2ZW50cyBzZWxlY3RvciBtb2RhbCBpZiBzb21lIHByb3BlcnRpZXMgc2hvdWxkIGJlIG9taXR0ZWQuXG4gKi9cbmV4cG9ydCB0eXBlIE9taXRTZWxlY3RvclByb3BlcnRpZXMgPSB7XG4gIGNvbG9yPzogYm9vbGVhbjtcbiAgbGFiZWw/OiBib29sZWFuO1xufTtcbiJdfQ==
@@ -46,7 +46,7 @@ export class CustomAlarmEventFormComponent {
46
46
  return obj;
47
47
  }
48
48
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CustomAlarmEventFormComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
49
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: CustomAlarmEventFormComponent, selector: "c8y-custom-alarm-event-form", inputs: { timelineType: "timelineType", target: "target", omitProperties: "omitProperties", selectedItems: "selectedItems", defaultColor: "defaultColor" }, outputs: { added: "added", cancel: "cancel" }, ngImport: i0, template: "<form [formGroup]=\"formGroup\" class=\"p-16\">\n <div\n *ngIf=\"!omitProperties.color\"\n class=\"form-group d-flex a-i-center gap-8\"\n [title]=\"'Change color' | translate\"\n >\n <label class=\"m-0\">{{ 'Color' | translate }}</label>\n <div class=\"c8y-colorpicker\"\n [ngClass]=\"{\n 'c8y-colorpicker--event': timelineType === 'EVENT',\n 'c8y-colorpicker--alarm': timelineType !== 'EVENT'\n }\"\n >\n <input\n type=\"color\"\n formControlName=\"color\"\n (click)=\"$event.stopPropagation()\"\n />\n <span [style.background-color]=\"formGroup.value.color\">\n <i [c8yIcon]=\"timelineType === 'EVENT' ? 'c8y-events' : 'bell'\"></i>\n </span>\n </div>\n </div>\n\n <c8y-alarm-event-attributes-form\n formControlName=\"details\"\n [timelineType]=\"timelineType\"\n [omitProperties]=\"omitProperties\"\n [selectedItems]=\"selectedItems\"\n ></c8y-alarm-event-attributes-form>\n\n <div class=\"d-flex p-t-16\">\n <button class=\"btn btn-default btn-sm\" (click)=\"cancel.emit()\">\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary btn-sm\"\n [disabled]=\"(valid$ | async) === false\"\n (click)=\"add()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Select' | translate }}\n </button>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.AlarmEventAttributesFormComponent, selector: "c8y-alarm-event-attributes-form", inputs: ["timelineType", "omitProperties", "selectedItems"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] }); }
49
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: CustomAlarmEventFormComponent, selector: "c8y-custom-alarm-event-form", inputs: { timelineType: "timelineType", target: "target", omitProperties: "omitProperties", selectedItems: "selectedItems", defaultColor: "defaultColor" }, outputs: { added: "added", cancel: "cancel" }, ngImport: i0, template: "<form [formGroup]=\"formGroup\" class=\"p-16\">\n <div\n *ngIf=\"!omitProperties.color\"\n class=\"form-group d-flex a-i-center gap-8\"\n [title]=\"'Change color' | translate\"\n >\n <label class=\"m-0\">{{ 'Color' | translate }}</label>\n <div class=\"c8y-colorpicker\"\n [ngClass]=\"{\n 'c8y-colorpicker--event': timelineType === 'EVENT',\n 'c8y-colorpicker--alarm': timelineType !== 'EVENT'\n }\"\n >\n <input\n type=\"color\"\n formControlName=\"color\"\n (click)=\"$event.stopPropagation()\"\n />\n <span [style.background-color]=\"formGroup.value.color\">\n <i [c8yIcon]=\"timelineType === 'EVENT' ? 'c8y-events' : 'bell'\"></i>\n </span>\n </div>\n </div>\n\n <c8y-alarm-event-attributes-form\n formControlName=\"details\"\n [timelineType]=\"timelineType\"\n [omitProperties]=\"omitProperties\"\n [selectedItems]=\"selectedItems\"\n ></c8y-alarm-event-attributes-form>\n\n <div class=\"d-flex p-t-16\">\n <button class=\"btn btn-default btn-sm\" (click)=\"cancel.emit()\">\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary btn-sm\"\n [disabled]=\"(valid$ | async) === false\"\n (click)=\"add()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Select' | translate }}\n </button>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.AlarmEventAttributesFormComponent, selector: "c8y-alarm-event-attributes-form", inputs: ["timelineType", "omitProperties", "selectedItems", "target", "datapoints"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] }); }
50
50
  }
51
51
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CustomAlarmEventFormComponent, decorators: [{
52
52
  type: Component,
@@ -194,11 +194,11 @@ export class AlarmsFilterComponent {
194
194
  }
195
195
  }
196
196
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AlarmsFilterComponent, deps: [{ token: i1.FormBuilder }, { token: i2.AlarmsViewService }, { token: i3.AlertService }, { token: i4.Router }, { token: i4.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
197
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: AlarmsFilterComponent, selector: "c8y-alarms-filter", inputs: { contextSourceId: "contextSourceId" }, outputs: { onFilterApplied: "onFilterApplied" }, viewQueries: [{ propertyName: "filtersDropdown", first: true, predicate: ["filtersDropdown"], descendants: true }], ngImport: i0, template: "<form\n class=\"d-flex a-i-center\"\n [formGroup]=\"formGroup\"\n>\n <div\n class=\"dropdown\"\n title=\"{{ 'Filter by severity' | translate }}\"\n dropdown\n #filtersDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"filtersDropdown.isOpen\"\n [insideClick]=\"true\"\n >\n <div class=\"input-group fit-w\">\n <div class=\"form-control d-flex a-i-center inner-scroll\" style=\"min-width: 104px;\">\n <ng-container *ngIf=\"chips.length !== severitiesList.length; else allAlarms\">\n <span\n class=\"tag tag--info chip\"\n *ngFor=\"let chip of chips\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10\"\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n (click)=\"deselectChip(chip); $event.stopPropagation()\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n <i\n class=\"status stroked-icon icon-12\"\n [c8yIcon]=\"chip | AlarmSeverityToIcon\"\n [ngClass]=\"chip | lowercase\"\n ></i>\n {{ SEVERITY_LABELS[chip] | translate }}\n </span>\n </ng-container>\n <ng-template #allAlarms>\n <span class=\"text-truncate\" title=\"{{ 'All severities' | translate }}\">\n {{ 'All severities' | translate }}\n </span>\n </ng-template>\n </div>\n <div class=\"input-group-btn input-group-btn--last\">\n <button\n class=\"btn-default btn btn--caret\"\n title=\"{{ chips | AlarmSeveritiesToTitle }}\"\n data-cy=\"c8y-alarm-filter\"\n dropdownToggle\n (click)=\"resetForm()\"\n >\n <i class=\"caret\"></i>\n </button>\n </div>\n </div>\n <ul\n class=\"dropdown-menu dropdown-menu-action-bar\"\n *dropdownMenu\n >\n <li class=\"p-l-16 p-r-16 p-t-4 p-b-4 d-flex a-i-center sticky-top separator-bottom\">\n <label\n class=\"c8y-checkbox d-flex a-i-center\"\n [title]=\"'All' | translate\"\n >\n <input\n type=\"checkbox\"\n data-cy=\"c8y-alarm-filter--all\"\n [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"allChanged($event)\"\n [ngModel]=\"isEachCheckboxSelected$ | async\"\n [indeterminate]=\"isIndeterminate$ | async\"\n (click)=\"markSeveritiesAsTouched()\"\n />\n <span></span>\n <i\n class=\"status stroked-icon m-l-8 icon-20\"\n [c8yIcon]=\"'bell'\"\n ></i>\n <span class=\"m-l-8\">{{ 'All' | translate }}</span>\n </label>\n </li>\n <li\n class=\"p-l-16 p-r-16 p-t-4 p-b-4 d-flex a-i-center\"\n *ngFor=\"let severity of severitiesList\"\n >\n <label\n class=\"c8y-checkbox d-flex a-i-center\"\n [title]=\"SEVERITY_LABELS[severity] | translate\"\n >\n <input\n type=\"checkbox\"\n [attr.data-cy]=\"'c8y-alarm-filter--' + severity\"\n [formControlName]=\"severity\"\n [value]=\"severity\"\n (click)=\"markSeveritiesAsTouched()\"\n />\n <span></span>\n <i\n class=\"status stroked-icon m-l-8 icon-20\"\n [c8yIcon]=\"severity | AlarmSeverityToIcon\"\n [ngClass]=\"severity | lowercase\"\n ></i>\n <span class=\"m-l-8\">{{ SEVERITY_LABELS[severity] | translate }}</span>\n </label>\n <!-- badge -->\n <div\n class=\"badge badge-info m-l-auto\"\n *ngIf=\"alarmCounts[severity] || alarmCounts[severity] === 0\"\n >\n <i\n class=\"icon-spin\"\n [c8yIcon]=\"'circle-o-notch'\"\n *ngIf=\"countLoading\"\n ></i>\n <span\n *ngIf=\"!countLoading\"\n [attr.data-cy]=\"severity + '-badge'\"\n >\n {{ alarmCounts[severity] < 99 ? alarmCounts[severity] : '99+' }}\n </span>\n </div>\n </li>\n <li class=\"p-l-16 p-r-16 p-t-4 p-b-4 d-flex a-i-center separator-top\">\n <label\n class=\"c8y-switch\"\n [attr.aria-label]=\"'Show cleared alarms' | translate\"\n [attr.data-cy]=\"'c8y-alarms-filter--cleared'\"\n >\n <input\n type=\"checkbox\"\n #showClearedCheckbox\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"showCleared\"\n (click)=\"markSeveritiesAsTouched(); updateAlarmsCount(showClearedCheckbox.checked)\"\n />\n <span></span>\n <span\n class=\"text-truncate\"\n title=\"{{ 'Show cleared alarms' | translate }}\"\n >\n {{ 'Show cleared alarms' | translate }}\n </span>\n </label>\n </li>\n\n <div class=\"p-16 d-flex sticky-bottom separator-top\">\n <button\n [attr.data-cy]=\"'c8y-alarms-filter--apply'\"\n class=\"btn btn-primary btn-sm flex-grow\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n (click)=\"applyFilters(false); closeDropdown()\"\n [disabled]=\"shouldDisableApplyButton$ | async\"\n >\n {{ 'Apply' | translate }}\n </button>\n </div>\n </ul>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i5.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: i6.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i6.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i6.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.LowerCasePipe, name: "lowercase" }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }, { kind: "pipe", type: i9.AlarmSeverityToIconPipe, name: "AlarmSeverityToIcon" }, { kind: "pipe", type: i10.AlarmSeveritiesToTitlePipe, name: "AlarmSeveritiesToTitle" }] }); }
197
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: AlarmsFilterComponent, selector: "c8y-alarms-filter", inputs: { contextSourceId: "contextSourceId" }, outputs: { onFilterApplied: "onFilterApplied" }, viewQueries: [{ propertyName: "filtersDropdown", first: true, predicate: ["filtersDropdown"], descendants: true }], ngImport: i0, template: "<form\n class=\"d-flex a-i-center\"\n [formGroup]=\"formGroup\"\n>\n <div\n class=\"dropdown\"\n title=\"{{ 'Filter by severity' | translate }}\"\n dropdown\n #filtersDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"filtersDropdown.isOpen\"\n [insideClick]=\"true\"\n >\n <div class=\"input-group fit-w\">\n <div class=\"form-control d-flex a-i-center inner-scroll\" style=\"min-width: 104px; padding-top: 0; padding-bottom: 0;\">\n <ng-container *ngIf=\"chips.length !== severitiesList.length; else allAlarms\">\n <span\n class=\"tag tag--info chip\"\n *ngFor=\"let chip of chips\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10\"\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n (click)=\"deselectChip(chip); $event.stopPropagation()\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n <i\n class=\"status stroked-icon icon-12\"\n [c8yIcon]=\"chip | AlarmSeverityToIcon\"\n [ngClass]=\"chip | lowercase\"\n ></i>\n {{ SEVERITY_LABELS[chip] | translate }}\n </span>\n </ng-container>\n <ng-template #allAlarms>\n <span class=\"text-truncate\" title=\"{{ 'All severities' | translate }}\">\n {{ 'All severities' | translate }}\n </span>\n </ng-template>\n </div>\n <div class=\"input-group-btn input-group-btn--last\">\n <button\n class=\"btn-default btn btn--caret\"\n title=\"{{ chips | AlarmSeveritiesToTitle }}\"\n data-cy=\"c8y-alarm-filter\"\n dropdownToggle\n (click)=\"resetForm()\"\n >\n <i class=\"caret\"></i>\n </button>\n </div>\n </div>\n <ul\n class=\"dropdown-menu dropdown-menu-action-bar\"\n *dropdownMenu\n >\n <li class=\"p-l-16 p-r-16 p-t-4 p-b-4 d-flex a-i-center sticky-top separator-bottom\">\n <label\n class=\"c8y-checkbox d-flex a-i-center\"\n [title]=\"'All' | translate\"\n >\n <input\n type=\"checkbox\"\n data-cy=\"c8y-alarm-filter--all\"\n [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"allChanged($event)\"\n [ngModel]=\"isEachCheckboxSelected$ | async\"\n [indeterminate]=\"isIndeterminate$ | async\"\n (click)=\"markSeveritiesAsTouched()\"\n />\n <span></span>\n <i\n class=\"status stroked-icon m-l-8 icon-20\"\n [c8yIcon]=\"'bell'\"\n ></i>\n <span class=\"m-l-8\">{{ 'All' | translate }}</span>\n </label>\n </li>\n <li\n class=\"p-l-16 p-r-16 p-t-4 p-b-4 d-flex a-i-center\"\n *ngFor=\"let severity of severitiesList\"\n >\n <label\n class=\"c8y-checkbox d-flex a-i-center\"\n [title]=\"SEVERITY_LABELS[severity] | translate\"\n >\n <input\n type=\"checkbox\"\n [attr.data-cy]=\"'c8y-alarm-filter--' + severity\"\n [formControlName]=\"severity\"\n [value]=\"severity\"\n (click)=\"markSeveritiesAsTouched()\"\n />\n <span></span>\n <i\n class=\"status stroked-icon m-l-8 icon-20\"\n [c8yIcon]=\"severity | AlarmSeverityToIcon\"\n [ngClass]=\"severity | lowercase\"\n ></i>\n <span class=\"m-l-8\">{{ SEVERITY_LABELS[severity] | translate }}</span>\n </label>\n <!-- badge -->\n <div\n class=\"badge badge-info m-l-auto\"\n *ngIf=\"alarmCounts[severity] || alarmCounts[severity] === 0\"\n >\n <i\n class=\"icon-spin\"\n [c8yIcon]=\"'circle-o-notch'\"\n *ngIf=\"countLoading\"\n ></i>\n <span\n *ngIf=\"!countLoading\"\n [attr.data-cy]=\"severity + '-badge'\"\n >\n {{ alarmCounts[severity] < 99 ? alarmCounts[severity] : '99+' }}\n </span>\n </div>\n </li>\n <li class=\"p-l-16 p-r-16 p-t-4 p-b-4 d-flex a-i-center separator-top\">\n <label\n class=\"c8y-switch\"\n [attr.aria-label]=\"'Show cleared alarms' | translate\"\n [attr.data-cy]=\"'c8y-alarms-filter--cleared'\"\n >\n <input\n type=\"checkbox\"\n #showClearedCheckbox\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"showCleared\"\n (click)=\"markSeveritiesAsTouched(); updateAlarmsCount(showClearedCheckbox.checked)\"\n />\n <span></span>\n <span\n class=\"text-truncate\"\n title=\"{{ 'Show cleared alarms' | translate }}\"\n >\n {{ 'Show cleared alarms' | translate }}\n </span>\n </label>\n </li>\n\n <div class=\"p-16 d-flex sticky-bottom separator-top\">\n <button\n [attr.data-cy]=\"'c8y-alarms-filter--apply'\"\n class=\"btn btn-primary btn-sm flex-grow\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n (click)=\"applyFilters(false); closeDropdown()\"\n [disabled]=\"shouldDisableApplyButton$ | async\"\n >\n {{ 'Apply' | translate }}\n </button>\n </div>\n </ul>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i5.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: i6.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i6.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i6.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.LowerCasePipe, name: "lowercase" }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }, { kind: "pipe", type: i9.AlarmSeverityToIconPipe, name: "AlarmSeverityToIcon" }, { kind: "pipe", type: i10.AlarmSeveritiesToTitlePipe, name: "AlarmSeveritiesToTitle" }] }); }
198
198
  }
199
199
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AlarmsFilterComponent, decorators: [{
200
200
  type: Component,
201
- args: [{ selector: 'c8y-alarms-filter', template: "<form\n class=\"d-flex a-i-center\"\n [formGroup]=\"formGroup\"\n>\n <div\n class=\"dropdown\"\n title=\"{{ 'Filter by severity' | translate }}\"\n dropdown\n #filtersDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"filtersDropdown.isOpen\"\n [insideClick]=\"true\"\n >\n <div class=\"input-group fit-w\">\n <div class=\"form-control d-flex a-i-center inner-scroll\" style=\"min-width: 104px;\">\n <ng-container *ngIf=\"chips.length !== severitiesList.length; else allAlarms\">\n <span\n class=\"tag tag--info chip\"\n *ngFor=\"let chip of chips\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10\"\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n (click)=\"deselectChip(chip); $event.stopPropagation()\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n <i\n class=\"status stroked-icon icon-12\"\n [c8yIcon]=\"chip | AlarmSeverityToIcon\"\n [ngClass]=\"chip | lowercase\"\n ></i>\n {{ SEVERITY_LABELS[chip] | translate }}\n </span>\n </ng-container>\n <ng-template #allAlarms>\n <span class=\"text-truncate\" title=\"{{ 'All severities' | translate }}\">\n {{ 'All severities' | translate }}\n </span>\n </ng-template>\n </div>\n <div class=\"input-group-btn input-group-btn--last\">\n <button\n class=\"btn-default btn btn--caret\"\n title=\"{{ chips | AlarmSeveritiesToTitle }}\"\n data-cy=\"c8y-alarm-filter\"\n dropdownToggle\n (click)=\"resetForm()\"\n >\n <i class=\"caret\"></i>\n </button>\n </div>\n </div>\n <ul\n class=\"dropdown-menu dropdown-menu-action-bar\"\n *dropdownMenu\n >\n <li class=\"p-l-16 p-r-16 p-t-4 p-b-4 d-flex a-i-center sticky-top separator-bottom\">\n <label\n class=\"c8y-checkbox d-flex a-i-center\"\n [title]=\"'All' | translate\"\n >\n <input\n type=\"checkbox\"\n data-cy=\"c8y-alarm-filter--all\"\n [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"allChanged($event)\"\n [ngModel]=\"isEachCheckboxSelected$ | async\"\n [indeterminate]=\"isIndeterminate$ | async\"\n (click)=\"markSeveritiesAsTouched()\"\n />\n <span></span>\n <i\n class=\"status stroked-icon m-l-8 icon-20\"\n [c8yIcon]=\"'bell'\"\n ></i>\n <span class=\"m-l-8\">{{ 'All' | translate }}</span>\n </label>\n </li>\n <li\n class=\"p-l-16 p-r-16 p-t-4 p-b-4 d-flex a-i-center\"\n *ngFor=\"let severity of severitiesList\"\n >\n <label\n class=\"c8y-checkbox d-flex a-i-center\"\n [title]=\"SEVERITY_LABELS[severity] | translate\"\n >\n <input\n type=\"checkbox\"\n [attr.data-cy]=\"'c8y-alarm-filter--' + severity\"\n [formControlName]=\"severity\"\n [value]=\"severity\"\n (click)=\"markSeveritiesAsTouched()\"\n />\n <span></span>\n <i\n class=\"status stroked-icon m-l-8 icon-20\"\n [c8yIcon]=\"severity | AlarmSeverityToIcon\"\n [ngClass]=\"severity | lowercase\"\n ></i>\n <span class=\"m-l-8\">{{ SEVERITY_LABELS[severity] | translate }}</span>\n </label>\n <!-- badge -->\n <div\n class=\"badge badge-info m-l-auto\"\n *ngIf=\"alarmCounts[severity] || alarmCounts[severity] === 0\"\n >\n <i\n class=\"icon-spin\"\n [c8yIcon]=\"'circle-o-notch'\"\n *ngIf=\"countLoading\"\n ></i>\n <span\n *ngIf=\"!countLoading\"\n [attr.data-cy]=\"severity + '-badge'\"\n >\n {{ alarmCounts[severity] < 99 ? alarmCounts[severity] : '99+' }}\n </span>\n </div>\n </li>\n <li class=\"p-l-16 p-r-16 p-t-4 p-b-4 d-flex a-i-center separator-top\">\n <label\n class=\"c8y-switch\"\n [attr.aria-label]=\"'Show cleared alarms' | translate\"\n [attr.data-cy]=\"'c8y-alarms-filter--cleared'\"\n >\n <input\n type=\"checkbox\"\n #showClearedCheckbox\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"showCleared\"\n (click)=\"markSeveritiesAsTouched(); updateAlarmsCount(showClearedCheckbox.checked)\"\n />\n <span></span>\n <span\n class=\"text-truncate\"\n title=\"{{ 'Show cleared alarms' | translate }}\"\n >\n {{ 'Show cleared alarms' | translate }}\n </span>\n </label>\n </li>\n\n <div class=\"p-16 d-flex sticky-bottom separator-top\">\n <button\n [attr.data-cy]=\"'c8y-alarms-filter--apply'\"\n class=\"btn btn-primary btn-sm flex-grow\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n (click)=\"applyFilters(false); closeDropdown()\"\n [disabled]=\"shouldDisableApplyButton$ | async\"\n >\n {{ 'Apply' | translate }}\n </button>\n </div>\n </ul>\n </div>\n</form>\n" }]
201
+ args: [{ selector: 'c8y-alarms-filter', template: "<form\n class=\"d-flex a-i-center\"\n [formGroup]=\"formGroup\"\n>\n <div\n class=\"dropdown\"\n title=\"{{ 'Filter by severity' | translate }}\"\n dropdown\n #filtersDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"filtersDropdown.isOpen\"\n [insideClick]=\"true\"\n >\n <div class=\"input-group fit-w\">\n <div class=\"form-control d-flex a-i-center inner-scroll\" style=\"min-width: 104px; padding-top: 0; padding-bottom: 0;\">\n <ng-container *ngIf=\"chips.length !== severitiesList.length; else allAlarms\">\n <span\n class=\"tag tag--info chip\"\n *ngFor=\"let chip of chips\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10\"\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n (click)=\"deselectChip(chip); $event.stopPropagation()\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n <i\n class=\"status stroked-icon icon-12\"\n [c8yIcon]=\"chip | AlarmSeverityToIcon\"\n [ngClass]=\"chip | lowercase\"\n ></i>\n {{ SEVERITY_LABELS[chip] | translate }}\n </span>\n </ng-container>\n <ng-template #allAlarms>\n <span class=\"text-truncate\" title=\"{{ 'All severities' | translate }}\">\n {{ 'All severities' | translate }}\n </span>\n </ng-template>\n </div>\n <div class=\"input-group-btn input-group-btn--last\">\n <button\n class=\"btn-default btn btn--caret\"\n title=\"{{ chips | AlarmSeveritiesToTitle }}\"\n data-cy=\"c8y-alarm-filter\"\n dropdownToggle\n (click)=\"resetForm()\"\n >\n <i class=\"caret\"></i>\n </button>\n </div>\n </div>\n <ul\n class=\"dropdown-menu dropdown-menu-action-bar\"\n *dropdownMenu\n >\n <li class=\"p-l-16 p-r-16 p-t-4 p-b-4 d-flex a-i-center sticky-top separator-bottom\">\n <label\n class=\"c8y-checkbox d-flex a-i-center\"\n [title]=\"'All' | translate\"\n >\n <input\n type=\"checkbox\"\n data-cy=\"c8y-alarm-filter--all\"\n [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"allChanged($event)\"\n [ngModel]=\"isEachCheckboxSelected$ | async\"\n [indeterminate]=\"isIndeterminate$ | async\"\n (click)=\"markSeveritiesAsTouched()\"\n />\n <span></span>\n <i\n class=\"status stroked-icon m-l-8 icon-20\"\n [c8yIcon]=\"'bell'\"\n ></i>\n <span class=\"m-l-8\">{{ 'All' | translate }}</span>\n </label>\n </li>\n <li\n class=\"p-l-16 p-r-16 p-t-4 p-b-4 d-flex a-i-center\"\n *ngFor=\"let severity of severitiesList\"\n >\n <label\n class=\"c8y-checkbox d-flex a-i-center\"\n [title]=\"SEVERITY_LABELS[severity] | translate\"\n >\n <input\n type=\"checkbox\"\n [attr.data-cy]=\"'c8y-alarm-filter--' + severity\"\n [formControlName]=\"severity\"\n [value]=\"severity\"\n (click)=\"markSeveritiesAsTouched()\"\n />\n <span></span>\n <i\n class=\"status stroked-icon m-l-8 icon-20\"\n [c8yIcon]=\"severity | AlarmSeverityToIcon\"\n [ngClass]=\"severity | lowercase\"\n ></i>\n <span class=\"m-l-8\">{{ SEVERITY_LABELS[severity] | translate }}</span>\n </label>\n <!-- badge -->\n <div\n class=\"badge badge-info m-l-auto\"\n *ngIf=\"alarmCounts[severity] || alarmCounts[severity] === 0\"\n >\n <i\n class=\"icon-spin\"\n [c8yIcon]=\"'circle-o-notch'\"\n *ngIf=\"countLoading\"\n ></i>\n <span\n *ngIf=\"!countLoading\"\n [attr.data-cy]=\"severity + '-badge'\"\n >\n {{ alarmCounts[severity] < 99 ? alarmCounts[severity] : '99+' }}\n </span>\n </div>\n </li>\n <li class=\"p-l-16 p-r-16 p-t-4 p-b-4 d-flex a-i-center separator-top\">\n <label\n class=\"c8y-switch\"\n [attr.aria-label]=\"'Show cleared alarms' | translate\"\n [attr.data-cy]=\"'c8y-alarms-filter--cleared'\"\n >\n <input\n type=\"checkbox\"\n #showClearedCheckbox\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"showCleared\"\n (click)=\"markSeveritiesAsTouched(); updateAlarmsCount(showClearedCheckbox.checked)\"\n />\n <span></span>\n <span\n class=\"text-truncate\"\n title=\"{{ 'Show cleared alarms' | translate }}\"\n >\n {{ 'Show cleared alarms' | translate }}\n </span>\n </label>\n </li>\n\n <div class=\"p-16 d-flex sticky-bottom separator-top\">\n <button\n [attr.data-cy]=\"'c8y-alarms-filter--apply'\"\n class=\"btn btn-primary btn-sm flex-grow\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n (click)=\"applyFilters(false); closeDropdown()\"\n [disabled]=\"shouldDisableApplyButton$ | async\"\n >\n {{ 'Apply' | translate }}\n </button>\n </div>\n </ul>\n </div>\n</form>\n" }]
202
202
  }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.AlarmsViewService }, { type: i3.AlertService }, { type: i4.Router }, { type: i4.ActivatedRoute }], propDecorators: { contextSourceId: [{
203
203
  type: Input
204
204
  }], onFilterApplied: [{
@@ -207,4 +207,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
207
207
  type: ViewChild,
208
208
  args: ['filtersDropdown']
209
209
  }] } });
210
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm1zLWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9hbGFybXMvYWxhcm1zLWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9hbGFybXMvYWxhcm1zLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUVMLFFBQVEsRUFFUixlQUFlLEVBRWhCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxZQUFZLEVBQW1CLE1BQU0scUJBQXFCLENBQUM7QUFDcEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBYyxPQUFPLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFFTCxvQkFBb0IsRUFDcEIsdUJBQXVCLEVBRXhCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBT3pELE1BQU0sT0FBTyxxQkFBcUI7SUFnQ2hDLFlBQ1UsV0FBd0IsRUFDeEIsaUJBQW9DLEVBQ3BDLFlBQTBCLEVBQzFCLE1BQWMsRUFDZCxjQUE4QjtRQUo5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UCxlQUFlO3NCQURkLFNBQVM7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIEFsYXJtUXVlcnlGaWx0ZXIsXG4gIFNldmVyaXR5LFxuICBTZXZlcml0eUZpbHRlcixcbiAgU0VWRVJJVFlfTEFCRUxTLFxuICBTZXZlcml0eVR5cGVcbn0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlLCBEYXRlVGltZUNvbnRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEJzRHJvcGRvd25EaXJlY3RpdmUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2Ryb3Bkb3duJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZnJvbSwgZm9ya0pvaW4sIEVNUFRZIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIGZpbmFsaXplLCBtYXAsIHN0YXJ0V2l0aCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWxhcm1zVmlld1NlcnZpY2UgfSBmcm9tICcuL2FsYXJtcy12aWV3LnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgQWxhcm1Db3VudCxcbiAgREVGQVVMVF9BTEFSTV9DT1VOVFMsXG4gIERFRkFVTFRfU0VWRVJJVFlfVkFMVUVTLFxuICBBbGFybUxpc3RGb3JtRmlsdGVyc1xufSBmcm9tICcuL2FsYXJtcy5tb2RlbCc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1hbGFybXMtZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FsYXJtcy1maWx0ZXIuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEFsYXJtc0ZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgcmVhZG9ubHkgc2V2ZXJpdGllc0xpc3QgPSBPYmplY3Qua2V5cyhTRVZFUklUWV9MQUJFTFMpIGFzIFNldmVyaXR5VHlwZVtdO1xuXG4gIEBJbnB1dCgpXG4gIGNvbnRleHRTb3VyY2VJZDogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbDtcblxuICAvKipcbiAgICogRXZlbnRFbWl0dGVyIHRvIG5vdGlmeSB3aGVuIGZpbHRlcnMgaGF2ZSBiZWVuIGFwcGxpZWQuXG4gICAqIEVtaXRzIGEgYEFsYXJtTGlzdEZvcm1GaWx0ZXJzYCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBmaWx0ZXIgY3JpdGVyaWEgYXBwbGllZCBieSB0aGUgdXNlci5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBvbkZpbHRlckFwcGxpZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEFsYXJtTGlzdEZvcm1GaWx0ZXJzPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2ZpbHRlcnNEcm9wZG93bicpXG4gIGZpbHRlcnNEcm9wZG93bjogQnNEcm9wZG93bkRpcmVjdGl2ZTtcblxuICBmb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKERFRkFVTFRfU0VWRVJJVFlfVkFMVUVTKTtcbiAgY2hpcHM6IFNldmVyaXR5VHlwZVtdID0gW107XG4gIGlzSW5kZXRlcm1pbmF0ZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGNvdW50TG9hZGluZzogYm9vbGVhbjtcbiAgc2hvd0NsZWFyZWQgPSBmYWxzZTtcbiAgYWxhcm1Db3VudHM6IEFsYXJtQ291bnQgPSBERUZBVUxUX0FMQVJNX0NPVU5UUztcbiAgc2VsZWN0ZWREYXRlczogRGF0ZVRpbWVDb250ZXh0O1xuICBzaG91bGREaXNhYmxlQXBwbHlCdXR0b24kOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBpc0VhY2hDaGVja2JveFNlbGVjdGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IFNFVkVSSVRZX0xBQkVMUyA9IFNFVkVSSVRZX0xBQkVMUztcbiAgcHJpdmF0ZSBpc05vbmVDaGVja2JveFNlbGVjdGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHNldmVyaXRpZXNUb3VjaGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIGN1cnJlbnRGb3JtR3JvdXBWYWx1ZXMgPSB0aGlzLmZvcm1Hcm91cC52YWx1ZTtcbiAgcHJpdmF0ZSBjdXJyZW50U2hvd0NsZWFyZWRWYWx1ZTogYm9vbGVhbjtcbiAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBhbGFybXNWaWV3U2VydmljZTogQWxhcm1zVmlld1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnF1ZXJ5UGFyYW1zLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgIHRoaXMuc2hvd0NsZWFyZWQgPSBwYXJhbXMuc2hvd0NsZWFyZWQgPT09ICd0cnVlJztcbiAgICAgIHRoaXMuZm9ybUdyb3VwLnNldFZhbHVlKHtcbiAgICAgICAgW1NldmVyaXR5LkNSSVRJQ0FMXTogcGFyYW1zW1NldmVyaXR5LkNSSVRJQ0FMXSA9PT0gJ3RydWUnLFxuICAgICAgICBbU2V2ZXJpdHkuTUFKT1JdOiBwYXJhbXNbU2V2ZXJpdHkuTUFKT1JdID09PSAndHJ1ZScsXG4gICAgICAgIFtTZXZlcml0eS5NSU5PUl06IHBhcmFtc1tTZXZlcml0eS5NSU5PUl0gPT09ICd0cnVlJyxcbiAgICAgICAgW1NldmVyaXR5LldBUk5JTkddOiBwYXJhbXNbU2V2ZXJpdHkuV0FSTklOR10gPT09ICd0cnVlJ1xuICAgICAgfSk7XG4gICAgICBpZiAocGFyYW1zLmxhc3RVcGRhdGVkRnJvbSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZXMgPSBbbmV3IERhdGUocGFyYW1zLmxhc3RVcGRhdGVkRnJvbSksIG5ldyBEYXRlKHBhcmFtcy5jcmVhdGVkVG8pXTtcbiAgICAgIH1cbiAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzKHRydWUsIGZhbHNlKTtcbiAgICB9KTtcbiAgICB0aGlzLnRyYWNrQ2hlY2tib3hTdGF0ZVdpdGhGb3JtQ2hhbmdlcygpO1xuICAgIHRoaXMuY3VycmVudFNob3dDbGVhcmVkVmFsdWUgPSB0aGlzLnNob3dDbGVhcmVkO1xuICAgIHRoaXMudXBkYXRlQ2hpcHNBbmREZWZhdWx0VmFsdWVzKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5maWx0ZXJzRHJvcGRvd24uaXNPcGVuQ2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCksIGZpbHRlcihCb29sZWFuKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy51cGRhdGVBbGFybXNDb3VudCgpKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIGFsbENoYW5nZWQoc2VsZWN0ZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1Hcm91cC5wYXRjaFZhbHVlKHtcbiAgICAgIFtTZXZlcml0eS5DUklUSUNBTF06IHNlbGVjdGVkLFxuICAgICAgW1NldmVyaXR5Lk1BSk9SXTogc2VsZWN0ZWQsXG4gICAgICBbU2V2ZXJpdHkuTUlOT1JdOiBzZWxlY3RlZCxcbiAgICAgIFtTZXZlcml0eS5XQVJOSU5HXTogc2VsZWN0ZWRcbiAgICB9IGFzIFNldmVyaXR5RmlsdGVyKTtcbiAgfVxuXG4gIGFwcGx5RmlsdGVycyhlbWl0ID0gdHJ1ZSwgbmF2aWdhdGUgPSB0cnVlKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVDaGlwc0FuZERlZmF1bHRWYWx1ZXMoKTtcbiAgICBjb25zdCBjb21iaW5lZEZvcm1FdmVudDogQWxhcm1MaXN0Rm9ybUZpbHRlcnMgPSB7XG4gICAgICBzaG93Q2xlYXJlZDogdGhpcy5zaG93Q2xlYXJlZCxcbiAgICAgIHNldmVyaXR5T3B0aW9uczogdGhpcy5mb3JtR3JvdXAudmFsdWUsXG4gICAgICBzZWxlY3RlZERhdGVzOiB0aGlzLnNlbGVjdGVkRGF0ZXNcbiAgICB9O1xuICAgIGlmIChlbWl0KSB7XG4gICAgICB0aGlzLm9uRmlsdGVyQXBwbGllZC5lbWl0KGNvbWJpbmVkRm9ybUV2ZW50KTtcbiAgICB9XG4gICAgdGhpcy5jdXJyZW50Rm9ybUdyb3VwVmFsdWVzID0gdGhpcy5mb3JtR3JvdXAudmFsdWU7XG4gICAgdGhpcy5jdXJyZW50U2hvd0NsZWFyZWRWYWx1ZSA9IHRoaXMuc2hvd0NsZWFyZWQ7XG5cbiAgICBpZiAobmF2aWdhdGUpIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7XG4gICAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgICAgc2hvd0NsZWFyZWQ6IGNvbWJpbmVkRm9ybUV2ZW50LnNob3dDbGVhcmVkLFxuICAgICAgICAgIC4uLmNvbWJpbmVkRm9ybUV2ZW50LnNldmVyaXR5T3B0aW9ucyxcbiAgICAgICAgICBsYXN0VXBkYXRlZEZyb206IGNvbWJpbmVkRm9ybUV2ZW50LnNlbGVjdGVkRGF0ZXM/LlswXT8udG9JU09TdHJpbmcoKSxcbiAgICAgICAgICBjcmVhdGVkVG86IGNvbWJpbmVkRm9ybUV2ZW50LnNlbGVjdGVkRGF0ZXM/LlsxXT8udG9JU09TdHJpbmcoKVxuICAgICAgICB9LFxuICAgICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBkZXNlbGVjdENoaXAoY2hpcDogU2V2ZXJpdHlUeXBlKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtR3JvdXAucGF0Y2hWYWx1ZSh7XG4gICAgICAuLi50aGlzLmZvcm1Hcm91cC52YWx1ZSxcbiAgICAgIFtjaGlwXTogZmFsc2VcbiAgICB9KTtcbiAgICB0aGlzLmFwcGx5RmlsdGVycyhmYWxzZSk7XG4gICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gIH1cblxuICBjbG9zZURyb3Bkb3duKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZpbHRlcnNEcm9wZG93bi5pc09wZW4pIHtcbiAgICAgIHRoaXMuZmlsdGVyc0Ryb3Bkb3duLmlzT3BlbiA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0Rm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1Hcm91cC5yZXNldCh0aGlzLmN1cnJlbnRGb3JtR3JvdXBWYWx1ZXMpO1xuICAgIHRoaXMuc2V2ZXJpdGllc1RvdWNoZWQkLm5leHQoZmFsc2UpO1xuICAgIHRoaXMuc2hvd0NsZWFyZWQgPSB0aGlzLmN1cnJlbnRTaG93Q2xlYXJlZFZhbHVlO1xuICB9XG5cbiAgbWFya1NldmVyaXRpZXNBc1RvdWNoZWQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXZlcml0aWVzVG91Y2hlZCQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBc3luY2hyb25vdXNseSBmZXRjaGVzIGFuZCB1cGRhdGVzIHRoZSBjb3VudCBvZiBhbGFybXMgZm9yIGVhY2ggc2V2ZXJpdHkgbGV2ZWwuXG4gICAqXG4gICAqIEBwYXJhbSBzaG93Q2xlYXJlZCAtIFdoZXRoZXIgdG8gaW5jbHVkZSBjbGVhcmVkIGFsYXJtcyBpbiB0aGUgY291bnQuXG4gICAqIERlZmF1bHRzIHRvIHRoZSBjdXJyZW50IHZhbHVlIG9mIGB0aGlzLmN1cnJlbnRTaG93Q2xlYXJlZFZhbHVlYC5cbiAgICogQHJldHVybnMgQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiBhbGwgYWxhcm0gY291bnRzIGhhdmUgYmVlbiBmZXRjaGVkLFxuICAgKiBvciByZWplY3RzIHdpdGggYW4gZXJyb3IgaWYgdGhlIG9wZXJhdGlvbiBmYWlscy5cbiAgICogQHRocm93cyBXaWxsIHRocm93IGFuIGVycm9yIGlmIGFueSBvZiB0aGUgYWxhcm0gY291bnQgZmV0Y2hpbmcgcHJvbWlzZXMgcmVqZWN0LlxuICAgKi9cbiAgYXN5bmMgdXBkYXRlQWxhcm1zQ291bnQoc2hvd0NsZWFyZWQgPSB0aGlzLmN1cnJlbnRTaG93Q2xlYXJlZFZhbHVlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jb3VudExvYWRpbmcgPSB0cnVlO1xuICAgIGNvbnN0IGFsYXJtRmlsdGVyOiBBbGFybVF1ZXJ5RmlsdGVyIHwgbnVsbCA9IHRoaXMuY29udGV4dFNvdXJjZUlkXG4gICAgICA/IHtcbiAgICAgICAgICBzb3VyY2U6IHRoaXMuY29udGV4dFNvdXJjZUlkLFxuICAgICAgICAgIHdpdGhTb3VyY2VBc3NldHM6IHRydWUsXG4gICAgICAgICAgd2l0aFNvdXJjZURldmljZXM6IHRydWVcbiAgICAgICAgfVxuICAgICAgOiBudWxsO1xuICAgIGNvbnN0IG9ic2VydmFibGVzOiBSZWNvcmQ8U2V2ZXJpdHlUeXBlLCBPYnNlcnZhYmxlPG51bWJlcj4+ID0gdGhpcy5zZXZlcml0aWVzTGlzdC5yZWR1Y2UoXG4gICAgICAoYWNjLCBzZXZlcml0eSkgPT4ge1xuICAgICAgICBhY2Nbc2V2ZXJpdHldID0gZnJvbShcbiAgICAgICAgICB0aGlzLmFsYXJtc1ZpZXdTZXJ2aWNlLmdldEFsYXJtc0NvdW50QnlTZXZlcml0eShzZXZlcml0eSwgc2hvd0NsZWFyZWQsIGFsYXJtRmlsdGVyKVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgQ1JJVElDQUw6IG51bGwsXG4gICAgICAgIE1BSk9SOiBudWxsLFxuICAgICAgICBNSU5PUjogbnVsbCxcbiAgICAgICAgV0FSTklORzogbnVsbFxuICAgICAgfVxuICAgICk7XG4gICAgZm9ya0pvaW4ob2JzZXJ2YWJsZXMpXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICAgIHRoaXMuYWxhcm1Db3VudHMgPSB7fSBhcyBBbGFybUNvdW50O1xuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZXJyKTtcbiAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgIH0pLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiAodGhpcy5jb3VudExvYWRpbmcgPSBmYWxzZSkpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChhbGFybUNvdW50czogQWxhcm1Db3VudCkgPT4gKHRoaXMuYWxhcm1Db3VudHMgPSBhbGFybUNvdW50cykpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVGb3JtVmFsdWVXaXRoQ2hhbmdlc1N0cmVhbSgpOiBPYnNlcnZhYmxlPFNldmVyaXR5RmlsdGVyPiB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0aGlzLmZvcm1Hcm91cC52YWx1ZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSB0cmFja0NoZWNrYm94U3RhdGVXaXRoRm9ybUNoYW5nZXMoKTogdm9pZCB7XG4gICAgY29uc3QgZm9ybVZhbHVlJCA9IHRoaXMuY3JlYXRlRm9ybVZhbHVlV2l0aENoYW5nZXNTdHJlYW0oKTtcbiAgICB0aGlzLmlzRWFjaENoZWNrYm94U2VsZWN0ZWQkID0gdGhpcy5jcmVhdGVBbGxTZWxlY3RlZFN0cmVhbShmb3JtVmFsdWUkKTtcbiAgICB0aGlzLmlzSW5kZXRlcm1pbmF0ZSQgPSB0aGlzLmNyZWF0ZUluZGV0ZXJtaW5hdGVTdHJlYW0oZm9ybVZhbHVlJCk7XG4gICAgdGhpcy50cmFja0FsbENoZWNrYm94ZXNEaXNhYmxlZChmb3JtVmFsdWUkKTtcbiAgICB0aGlzLnNob3VsZERpc2FibGVBcHBseUJ1dHRvbiQgPSB0aGlzLmNyZWF0ZURpc2FibGVBcHBseUJ1dHRvblN0cmVhbSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVBbGxTZWxlY3RlZFN0cmVhbShmb3JtVmFsdWUkOiBPYnNlcnZhYmxlPFNldmVyaXR5RmlsdGVyPik6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBmb3JtVmFsdWUkLnBpcGUobWFwKHNldmVyaXRpZXMgPT4gT2JqZWN0LnZhbHVlcyhzZXZlcml0aWVzKS5ldmVyeShCb29sZWFuKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVJbmRldGVybWluYXRlU3RyZWFtKGZvcm1WYWx1ZSQ6IE9ic2VydmFibGU8U2V2ZXJpdHlGaWx0ZXI+KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGZvcm1WYWx1ZSQucGlwZShcbiAgICAgIG1hcChcbiAgICAgICAgc2V2ZXJpdGllcyA9PlxuICAgICAgICAgIE9iamVjdC52YWx1ZXMoc2V2ZXJpdGllcykuc29tZShCb29sZWFuKSAmJiAhT2JqZWN0LnZhbHVlcyhzZXZlcml0aWVzKS5ldmVyeShCb29sZWFuKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHRyYWNrQWxsQ2hlY2tib3hlc0Rpc2FibGVkKGZvcm1WYWx1ZSQ6IE9ic2VydmFibGU8U2V2ZXJpdHlGaWx0ZXI+KTogdm9pZCB7XG4gICAgZm9ybVZhbHVlJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHNldmVyaXRpZXMgPT4ge1xuICAgICAgY29uc3QgYXJlQWxsRGlzYWJsZWQgPSBPYmplY3QudmFsdWVzKHNldmVyaXRpZXMpLmV2ZXJ5KHZhbHVlID0+ICF2YWx1ZSk7XG4gICAgICB0aGlzLmlzTm9uZUNoZWNrYm94U2VsZWN0ZWQkLm5leHQoYXJlQWxsRGlzYWJsZWQpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVEaXNhYmxlQXBwbHlCdXR0b25TdHJlYW0oKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW3RoaXMuaXNOb25lQ2hlY2tib3hTZWxlY3RlZCQsIHRoaXMuc2V2ZXJpdGllc1RvdWNoZWQkXSkucGlwZShcbiAgICAgIG1hcChcbiAgICAgICAgKFthbGxDaGVja2JveGVzQXJlRGlzYWJsZWQsIHNldmVyaXRpZXNUb3VjaGVkXSkgPT5cbiAgICAgICAgICBhbGxDaGVja2JveGVzQXJlRGlzYWJsZWQgfHwgIXNldmVyaXRpZXNUb3VjaGVkXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ2hpcHNBbmREZWZhdWx0VmFsdWVzKCk6IHZvaWQge1xuICAgIGNvbnN0IHNldmVyaXR5RmlsdGVyID0gdGhpcy5mb3JtR3JvdXA7XG4gICAgY29uc3Qgc2V2ZWVyaXR5VmFsdWVzID0gc2V2ZXJpdHlGaWx0ZXIudmFsdWU7XG5cbiAgICB0aGlzLmNoaXBzID0gT2JqZWN0LmtleXMoc2V2ZWVyaXR5VmFsdWVzKS5maWx0ZXIoa2V5ID0+IHNldmVlcml0eVZhbHVlc1trZXldKSBhcyBTZXZlcml0eVR5cGVbXTtcbiAgICBjb25zdCBhbGxDaGlwc1JlbW92ZWQgPSB0aGlzLmNoaXBzLmxlbmd0aCA9PT0gMDtcbiAgICBpZiAoYWxsQ2hpcHNSZW1vdmVkKSB7XG4gICAgICBjb25zdCBkZWZhdWx0VmFsdWVzID0gREVGQVVMVF9TRVZFUklUWV9WQUxVRVM7XG4gICAgICBzZXZlcml0eUZpbHRlci5zZXRWYWx1ZShkZWZhdWx0VmFsdWVzKTtcbiAgICAgIHRoaXMuY2hpcHMgPSBPYmplY3Qua2V5cyhkZWZhdWx0VmFsdWVzKSBhcyBTZXZlcml0eVR5cGVbXTtcbiAgICB9XG4gIH1cbn1cbiIsIjxmb3JtXG4gIGNsYXNzPVwiZC1mbGV4IGEtaS1jZW50ZXJcIlxuICBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cImRyb3Bkb3duXCJcbiAgICB0aXRsZT1cInt7ICdGaWx0ZXIgYnkgc2V2ZXJpdHknIHwgdHJhbnNsYXRlIH19XCJcbiAgICBkcm9wZG93blxuICAgICNmaWx0ZXJzRHJvcGRvd249XCJicy1kcm9wZG93blwiXG4gICAgW2Nka1RyYXBGb2N1c109XCJmaWx0ZXJzRHJvcGRvd24uaXNPcGVuXCJcbiAgICBbaW5zaWRlQ2xpY2tdPVwidHJ1ZVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgZml0LXdcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZC1mbGV4IGEtaS1jZW50ZXIgaW5uZXItc2Nyb2xsXCIgc3R5bGU9XCJtaW4td2lkdGg6IDEwNHB4O1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2hpcHMubGVuZ3RoICE9PSBzZXZlcml0aWVzTGlzdC5sZW5ndGg7IGVsc2UgYWxsQWxhcm1zXCI+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwidGFnIHRhZy0taW5mbyBjaGlwXCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjaGlwIG9mIGNoaXBzXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi14cyBidG4tY2xlYW4gdGV4dC0xMFwiXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1JlbW92ZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImRlc2VsZWN0Q2hpcChjaGlwKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cInRpbWVzXCI+PC9pPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cInN0YXR1cyBzdHJva2VkLWljb24gaWNvbi0xMlwiXG4gICAgICAgICAgICAgIFtjOHlJY29uXT1cImNoaXAgfCBBbGFybVNldmVyaXR5VG9JY29uXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY2hpcCB8IGxvd2VyY2FzZVwiXG4gICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAge3sgU0VWRVJJVFlfTEFCRUxTW2NoaXBdIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNhbGxBbGFybXM+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCIgdGl0bGU9XCJ7eyAnQWxsIHNldmVyaXRpZXMnIHwgdHJhbnNsYXRlIH19XCI+XG4gICAgICAgICAgICB7eyAnQWxsIHNldmVyaXRpZXMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAtYnRuIGlucHV0LWdyb3VwLWJ0bi0tbGFzdFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJidG4tZGVmYXVsdCBidG4gYnRuLS1jYXJldFwiXG4gICAgICAgICAgdGl0bGU9XCJ7eyBjaGlwcyB8IEFsYXJtU2V2ZXJpdGllc1RvVGl0bGUgfX1cIlxuICAgICAgICAgIGRhdGEtY3k9XCJjOHktYWxhcm0tZmlsdGVyXCJcbiAgICAgICAgICBkcm9wZG93blRvZ2dsZVxuICAgICAgICAgIChjbGljayk9XCJyZXNldEZvcm0oKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBjbGFzcz1cImNhcmV0XCI+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDx1bFxuICAgICAgY2xhc3M9XCJkcm9wZG93bi1tZW51IGRyb3Bkb3duLW1lbnUtYWN0aW9uLWJhclwiXG4gICAgICAqZHJvcGRvd25NZW51XG4gICAgPlxuICAgICAgPGxpIGNsYXNzPVwicC1sLTE2IHAtci0xNiBwLXQtNCBwLWItNCBkLWZsZXggYS1pLWNlbnRlciBzdGlja3ktdG9wIHNlcGFyYXRvci1ib3R0b21cIj5cbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAgY2xhc3M9XCJjOHktY2hlY2tib3ggZC1mbGV4IGEtaS1jZW50ZXJcIlxuICAgICAgICAgIFt0aXRsZV09XCInQWxsJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICBkYXRhLWN5PVwiYzh5LWFsYXJtLWZpbHRlci0tYWxsXCJcbiAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJhbGxDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwiaXNFYWNoQ2hlY2tib3hTZWxlY3RlZCQgfCBhc3luY1wiXG4gICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJpc0luZGV0ZXJtaW5hdGUkIHwgYXN5bmNcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm1hcmtTZXZlcml0aWVzQXNUb3VjaGVkKClcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgIDxpXG4gICAgICAgICAgICBjbGFzcz1cInN0YXR1cyBzdHJva2VkLWljb24gbS1sLTggaWNvbi0yMFwiXG4gICAgICAgICAgICBbYzh5SWNvbl09XCInYmVsbCdcIlxuICAgICAgICAgID48L2k+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtLWwtOFwiPnt7ICdBbGwnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgPC9saT5cbiAgICAgIDxsaVxuICAgICAgICBjbGFzcz1cInAtbC0xNiBwLXItMTYgcC10LTQgcC1iLTQgZC1mbGV4IGEtaS1jZW50ZXJcIlxuICAgICAgICAqbmdGb3I9XCJsZXQgc2V2ZXJpdHkgb2Ygc2V2ZXJpdGllc0xpc3RcIlxuICAgICAgPlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICBjbGFzcz1cImM4eS1jaGVja2JveCBkLWZsZXggYS1pLWNlbnRlclwiXG4gICAgICAgICAgW3RpdGxlXT1cIlNFVkVSSVRZX0xBQkVMU1tzZXZlcml0eV0gfCB0cmFuc2xhdGVcIlxuICAgICAgICA+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1jeV09XCInYzh5LWFsYXJtLWZpbHRlci0tJyArIHNldmVyaXR5XCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwic2V2ZXJpdHlcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cInNldmVyaXR5XCJcbiAgICAgICAgICAgIChjbGljayk9XCJtYXJrU2V2ZXJpdGllc0FzVG91Y2hlZCgpXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICA8aVxuICAgICAgICAgICAgY2xhc3M9XCJzdGF0dXMgc3Ryb2tlZC1pY29uIG0tbC04IGljb24tMjBcIlxuICAgICAgICAgICAgW2M4eUljb25dPVwic2V2ZXJpdHkgfCBBbGFybVNldmVyaXR5VG9JY29uXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNldmVyaXR5IHwgbG93ZXJjYXNlXCJcbiAgICAgICAgICA+PC9pPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibS1sLThcIj57eyBTRVZFUklUWV9MQUJFTFNbc2V2ZXJpdHldIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8IS0tIGJhZGdlIC0tPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJiYWRnZSBiYWRnZS1pbmZvIG0tbC1hdXRvXCJcbiAgICAgICAgICAqbmdJZj1cImFsYXJtQ291bnRzW3NldmVyaXR5XSB8fCBhbGFybUNvdW50c1tzZXZlcml0eV0gPT09IDBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGlcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbi1zcGluXCJcbiAgICAgICAgICAgIFtjOHlJY29uXT1cIidjaXJjbGUtby1ub3RjaCdcIlxuICAgICAgICAgICAgKm5nSWY9XCJjb3VudExvYWRpbmdcIlxuICAgICAgICAgID48L2k+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICpuZ0lmPVwiIWNvdW50TG9hZGluZ1wiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLWN5XT1cInNldmVyaXR5ICsgJy1iYWRnZSdcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGFsYXJtQ291bnRzW3NldmVyaXR5XSA8IDk5ID8gYWxhcm1Db3VudHNbc2V2ZXJpdHldIDogJzk5KycgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9saT5cbiAgICAgIDxsaSBjbGFzcz1cInAtbC0xNiBwLXItMTYgcC10LTQgcC1iLTQgZC1mbGV4IGEtaS1jZW50ZXIgc2VwYXJhdG9yLXRvcFwiPlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICBjbGFzcz1cImM4eS1zd2l0Y2hcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1Nob3cgY2xlYXJlZCBhbGFybXMnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbYXR0ci5kYXRhLWN5XT1cIidjOHktYWxhcm1zLWZpbHRlci0tY2xlYXJlZCdcIlxuICAgICAgICA+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgI3Nob3dDbGVhcmVkQ2hlY2tib3hcbiAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNob3dDbGVhcmVkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJtYXJrU2V2ZXJpdGllc0FzVG91Y2hlZCgpOyB1cGRhdGVBbGFybXNDb3VudChzaG93Q2xlYXJlZENoZWNrYm94LmNoZWNrZWQpXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCJcbiAgICAgICAgICAgIHRpdGxlPVwie3sgJ1Nob3cgY2xlYXJlZCBhbGFybXMnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnU2hvdyBjbGVhcmVkIGFsYXJtcycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICA8L2xpPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwicC0xNiBkLWZsZXggc3RpY2t5LWJvdHRvbSBzZXBhcmF0b3ItdG9wXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBbYXR0ci5kYXRhLWN5XT1cIidjOHktYWxhcm1zLWZpbHRlci0tYXBwbHknXCJcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc20gZmxleC1ncm93XCJcbiAgICAgICAgICB0aXRsZT1cInt7ICdBcHBseScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJhcHBseUZpbHRlcnMoZmFsc2UpOyBjbG9zZURyb3Bkb3duKClcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJzaG91bGREaXNhYmxlQXBwbHlCdXR0b24kIHwgYXN5bmNcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgJ0FwcGx5JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvdWw+XG4gIDwvZGl2PlxuPC9mb3JtPlxuIl19
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm1zLWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9hbGFybXMvYWxhcm1zLWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9hbGFybXMvYWxhcm1zLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUVMLFFBQVEsRUFFUixlQUFlLEVBRWhCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxZQUFZLEVBQW1CLE1BQU0scUJBQXFCLENBQUM7QUFDcEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBYyxPQUFPLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFFTCxvQkFBb0IsRUFDcEIsdUJBQXVCLEVBRXhCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBT3pELE1BQU0sT0FBTyxxQkFBcUI7SUFnQ2hDLFlBQ1UsV0FBd0IsRUFDeEIsaUJBQW9DLEVBQ3BDLFlBQTBCLEVBQzFCLE1BQWMsRUFDZCxjQUE4QjtRQUo5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UCxlQUFlO3NCQURkLFNBQVM7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIEFsYXJtUXVlcnlGaWx0ZXIsXG4gIFNldmVyaXR5LFxuICBTZXZlcml0eUZpbHRlcixcbiAgU0VWRVJJVFlfTEFCRUxTLFxuICBTZXZlcml0eVR5cGVcbn0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlLCBEYXRlVGltZUNvbnRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEJzRHJvcGRvd25EaXJlY3RpdmUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2Ryb3Bkb3duJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZnJvbSwgZm9ya0pvaW4sIEVNUFRZIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIGZpbmFsaXplLCBtYXAsIHN0YXJ0V2l0aCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWxhcm1zVmlld1NlcnZpY2UgfSBmcm9tICcuL2FsYXJtcy12aWV3LnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgQWxhcm1Db3VudCxcbiAgREVGQVVMVF9BTEFSTV9DT1VOVFMsXG4gIERFRkFVTFRfU0VWRVJJVFlfVkFMVUVTLFxuICBBbGFybUxpc3RGb3JtRmlsdGVyc1xufSBmcm9tICcuL2FsYXJtcy5tb2RlbCc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1hbGFybXMtZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FsYXJtcy1maWx0ZXIuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEFsYXJtc0ZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgcmVhZG9ubHkgc2V2ZXJpdGllc0xpc3QgPSBPYmplY3Qua2V5cyhTRVZFUklUWV9MQUJFTFMpIGFzIFNldmVyaXR5VHlwZVtdO1xuXG4gIEBJbnB1dCgpXG4gIGNvbnRleHRTb3VyY2VJZDogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbDtcblxuICAvKipcbiAgICogRXZlbnRFbWl0dGVyIHRvIG5vdGlmeSB3aGVuIGZpbHRlcnMgaGF2ZSBiZWVuIGFwcGxpZWQuXG4gICAqIEVtaXRzIGEgYEFsYXJtTGlzdEZvcm1GaWx0ZXJzYCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBmaWx0ZXIgY3JpdGVyaWEgYXBwbGllZCBieSB0aGUgdXNlci5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBvbkZpbHRlckFwcGxpZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEFsYXJtTGlzdEZvcm1GaWx0ZXJzPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2ZpbHRlcnNEcm9wZG93bicpXG4gIGZpbHRlcnNEcm9wZG93bjogQnNEcm9wZG93bkRpcmVjdGl2ZTtcblxuICBmb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKERFRkFVTFRfU0VWRVJJVFlfVkFMVUVTKTtcbiAgY2hpcHM6IFNldmVyaXR5VHlwZVtdID0gW107XG4gIGlzSW5kZXRlcm1pbmF0ZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGNvdW50TG9hZGluZzogYm9vbGVhbjtcbiAgc2hvd0NsZWFyZWQgPSBmYWxzZTtcbiAgYWxhcm1Db3VudHM6IEFsYXJtQ291bnQgPSBERUZBVUxUX0FMQVJNX0NPVU5UUztcbiAgc2VsZWN0ZWREYXRlczogRGF0ZVRpbWVDb250ZXh0O1xuICBzaG91bGREaXNhYmxlQXBwbHlCdXR0b24kOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBpc0VhY2hDaGVja2JveFNlbGVjdGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IFNFVkVSSVRZX0xBQkVMUyA9IFNFVkVSSVRZX0xBQkVMUztcbiAgcHJpdmF0ZSBpc05vbmVDaGVja2JveFNlbGVjdGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHNldmVyaXRpZXNUb3VjaGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIGN1cnJlbnRGb3JtR3JvdXBWYWx1ZXMgPSB0aGlzLmZvcm1Hcm91cC52YWx1ZTtcbiAgcHJpdmF0ZSBjdXJyZW50U2hvd0NsZWFyZWRWYWx1ZTogYm9vbGVhbjtcbiAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBhbGFybXNWaWV3U2VydmljZTogQWxhcm1zVmlld1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnF1ZXJ5UGFyYW1zLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgIHRoaXMuc2hvd0NsZWFyZWQgPSBwYXJhbXMuc2hvd0NsZWFyZWQgPT09ICd0cnVlJztcbiAgICAgIHRoaXMuZm9ybUdyb3VwLnNldFZhbHVlKHtcbiAgICAgICAgW1NldmVyaXR5LkNSSVRJQ0FMXTogcGFyYW1zW1NldmVyaXR5LkNSSVRJQ0FMXSA9PT0gJ3RydWUnLFxuICAgICAgICBbU2V2ZXJpdHkuTUFKT1JdOiBwYXJhbXNbU2V2ZXJpdHkuTUFKT1JdID09PSAndHJ1ZScsXG4gICAgICAgIFtTZXZlcml0eS5NSU5PUl06IHBhcmFtc1tTZXZlcml0eS5NSU5PUl0gPT09ICd0cnVlJyxcbiAgICAgICAgW1NldmVyaXR5LldBUk5JTkddOiBwYXJhbXNbU2V2ZXJpdHkuV0FSTklOR10gPT09ICd0cnVlJ1xuICAgICAgfSk7XG4gICAgICBpZiAocGFyYW1zLmxhc3RVcGRhdGVkRnJvbSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZXMgPSBbbmV3IERhdGUocGFyYW1zLmxhc3RVcGRhdGVkRnJvbSksIG5ldyBEYXRlKHBhcmFtcy5jcmVhdGVkVG8pXTtcbiAgICAgIH1cbiAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzKHRydWUsIGZhbHNlKTtcbiAgICB9KTtcbiAgICB0aGlzLnRyYWNrQ2hlY2tib3hTdGF0ZVdpdGhGb3JtQ2hhbmdlcygpO1xuICAgIHRoaXMuY3VycmVudFNob3dDbGVhcmVkVmFsdWUgPSB0aGlzLnNob3dDbGVhcmVkO1xuICAgIHRoaXMudXBkYXRlQ2hpcHNBbmREZWZhdWx0VmFsdWVzKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5maWx0ZXJzRHJvcGRvd24uaXNPcGVuQ2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCksIGZpbHRlcihCb29sZWFuKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy51cGRhdGVBbGFybXNDb3VudCgpKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIGFsbENoYW5nZWQoc2VsZWN0ZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1Hcm91cC5wYXRjaFZhbHVlKHtcbiAgICAgIFtTZXZlcml0eS5DUklUSUNBTF06IHNlbGVjdGVkLFxuICAgICAgW1NldmVyaXR5Lk1BSk9SXTogc2VsZWN0ZWQsXG4gICAgICBbU2V2ZXJpdHkuTUlOT1JdOiBzZWxlY3RlZCxcbiAgICAgIFtTZXZlcml0eS5XQVJOSU5HXTogc2VsZWN0ZWRcbiAgICB9IGFzIFNldmVyaXR5RmlsdGVyKTtcbiAgfVxuXG4gIGFwcGx5RmlsdGVycyhlbWl0ID0gdHJ1ZSwgbmF2aWdhdGUgPSB0cnVlKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVDaGlwc0FuZERlZmF1bHRWYWx1ZXMoKTtcbiAgICBjb25zdCBjb21iaW5lZEZvcm1FdmVudDogQWxhcm1MaXN0Rm9ybUZpbHRlcnMgPSB7XG4gICAgICBzaG93Q2xlYXJlZDogdGhpcy5zaG93Q2xlYXJlZCxcbiAgICAgIHNldmVyaXR5T3B0aW9uczogdGhpcy5mb3JtR3JvdXAudmFsdWUsXG4gICAgICBzZWxlY3RlZERhdGVzOiB0aGlzLnNlbGVjdGVkRGF0ZXNcbiAgICB9O1xuICAgIGlmIChlbWl0KSB7XG4gICAgICB0aGlzLm9uRmlsdGVyQXBwbGllZC5lbWl0KGNvbWJpbmVkRm9ybUV2ZW50KTtcbiAgICB9XG4gICAgdGhpcy5jdXJyZW50Rm9ybUdyb3VwVmFsdWVzID0gdGhpcy5mb3JtR3JvdXAudmFsdWU7XG4gICAgdGhpcy5jdXJyZW50U2hvd0NsZWFyZWRWYWx1ZSA9IHRoaXMuc2hvd0NsZWFyZWQ7XG5cbiAgICBpZiAobmF2aWdhdGUpIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7XG4gICAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgICAgc2hvd0NsZWFyZWQ6IGNvbWJpbmVkRm9ybUV2ZW50LnNob3dDbGVhcmVkLFxuICAgICAgICAgIC4uLmNvbWJpbmVkRm9ybUV2ZW50LnNldmVyaXR5T3B0aW9ucyxcbiAgICAgICAgICBsYXN0VXBkYXRlZEZyb206IGNvbWJpbmVkRm9ybUV2ZW50LnNlbGVjdGVkRGF0ZXM/LlswXT8udG9JU09TdHJpbmcoKSxcbiAgICAgICAgICBjcmVhdGVkVG86IGNvbWJpbmVkRm9ybUV2ZW50LnNlbGVjdGVkRGF0ZXM/LlsxXT8udG9JU09TdHJpbmcoKVxuICAgICAgICB9LFxuICAgICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBkZXNlbGVjdENoaXAoY2hpcDogU2V2ZXJpdHlUeXBlKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtR3JvdXAucGF0Y2hWYWx1ZSh7XG4gICAgICAuLi50aGlzLmZvcm1Hcm91cC52YWx1ZSxcbiAgICAgIFtjaGlwXTogZmFsc2VcbiAgICB9KTtcbiAgICB0aGlzLmFwcGx5RmlsdGVycyhmYWxzZSk7XG4gICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gIH1cblxuICBjbG9zZURyb3Bkb3duKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZpbHRlcnNEcm9wZG93bi5pc09wZW4pIHtcbiAgICAgIHRoaXMuZmlsdGVyc0Ryb3Bkb3duLmlzT3BlbiA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0Rm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1Hcm91cC5yZXNldCh0aGlzLmN1cnJlbnRGb3JtR3JvdXBWYWx1ZXMpO1xuICAgIHRoaXMuc2V2ZXJpdGllc1RvdWNoZWQkLm5leHQoZmFsc2UpO1xuICAgIHRoaXMuc2hvd0NsZWFyZWQgPSB0aGlzLmN1cnJlbnRTaG93Q2xlYXJlZFZhbHVlO1xuICB9XG5cbiAgbWFya1NldmVyaXRpZXNBc1RvdWNoZWQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXZlcml0aWVzVG91Y2hlZCQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBc3luY2hyb25vdXNseSBmZXRjaGVzIGFuZCB1cGRhdGVzIHRoZSBjb3VudCBvZiBhbGFybXMgZm9yIGVhY2ggc2V2ZXJpdHkgbGV2ZWwuXG4gICAqXG4gICAqIEBwYXJhbSBzaG93Q2xlYXJlZCAtIFdoZXRoZXIgdG8gaW5jbHVkZSBjbGVhcmVkIGFsYXJtcyBpbiB0aGUgY291bnQuXG4gICAqIERlZmF1bHRzIHRvIHRoZSBjdXJyZW50IHZhbHVlIG9mIGB0aGlzLmN1cnJlbnRTaG93Q2xlYXJlZFZhbHVlYC5cbiAgICogQHJldHVybnMgQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiBhbGwgYWxhcm0gY291bnRzIGhhdmUgYmVlbiBmZXRjaGVkLFxuICAgKiBvciByZWplY3RzIHdpdGggYW4gZXJyb3IgaWYgdGhlIG9wZXJhdGlvbiBmYWlscy5cbiAgICogQHRocm93cyBXaWxsIHRocm93IGFuIGVycm9yIGlmIGFueSBvZiB0aGUgYWxhcm0gY291bnQgZmV0Y2hpbmcgcHJvbWlzZXMgcmVqZWN0LlxuICAgKi9cbiAgYXN5bmMgdXBkYXRlQWxhcm1zQ291bnQoc2hvd0NsZWFyZWQgPSB0aGlzLmN1cnJlbnRTaG93Q2xlYXJlZFZhbHVlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jb3VudExvYWRpbmcgPSB0cnVlO1xuICAgIGNvbnN0IGFsYXJtRmlsdGVyOiBBbGFybVF1ZXJ5RmlsdGVyIHwgbnVsbCA9IHRoaXMuY29udGV4dFNvdXJjZUlkXG4gICAgICA/IHtcbiAgICAgICAgICBzb3VyY2U6IHRoaXMuY29udGV4dFNvdXJjZUlkLFxuICAgICAgICAgIHdpdGhTb3VyY2VBc3NldHM6IHRydWUsXG4gICAgICAgICAgd2l0aFNvdXJjZURldmljZXM6IHRydWVcbiAgICAgICAgfVxuICAgICAgOiBudWxsO1xuICAgIGNvbnN0IG9ic2VydmFibGVzOiBSZWNvcmQ8U2V2ZXJpdHlUeXBlLCBPYnNlcnZhYmxlPG51bWJlcj4+ID0gdGhpcy5zZXZlcml0aWVzTGlzdC5yZWR1Y2UoXG4gICAgICAoYWNjLCBzZXZlcml0eSkgPT4ge1xuICAgICAgICBhY2Nbc2V2ZXJpdHldID0gZnJvbShcbiAgICAgICAgICB0aGlzLmFsYXJtc1ZpZXdTZXJ2aWNlLmdldEFsYXJtc0NvdW50QnlTZXZlcml0eShzZXZlcml0eSwgc2hvd0NsZWFyZWQsIGFsYXJtRmlsdGVyKVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgQ1JJVElDQUw6IG51bGwsXG4gICAgICAgIE1BSk9SOiBudWxsLFxuICAgICAgICBNSU5PUjogbnVsbCxcbiAgICAgICAgV0FSTklORzogbnVsbFxuICAgICAgfVxuICAgICk7XG4gICAgZm9ya0pvaW4ob2JzZXJ2YWJsZXMpXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICAgIHRoaXMuYWxhcm1Db3VudHMgPSB7fSBhcyBBbGFybUNvdW50O1xuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZXJyKTtcbiAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgIH0pLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiAodGhpcy5jb3VudExvYWRpbmcgPSBmYWxzZSkpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChhbGFybUNvdW50czogQWxhcm1Db3VudCkgPT4gKHRoaXMuYWxhcm1Db3VudHMgPSBhbGFybUNvdW50cykpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVGb3JtVmFsdWVXaXRoQ2hhbmdlc1N0cmVhbSgpOiBPYnNlcnZhYmxlPFNldmVyaXR5RmlsdGVyPiB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0aGlzLmZvcm1Hcm91cC52YWx1ZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSB0cmFja0NoZWNrYm94U3RhdGVXaXRoRm9ybUNoYW5nZXMoKTogdm9pZCB7XG4gICAgY29uc3QgZm9ybVZhbHVlJCA9IHRoaXMuY3JlYXRlRm9ybVZhbHVlV2l0aENoYW5nZXNTdHJlYW0oKTtcbiAgICB0aGlzLmlzRWFjaENoZWNrYm94U2VsZWN0ZWQkID0gdGhpcy5jcmVhdGVBbGxTZWxlY3RlZFN0cmVhbShmb3JtVmFsdWUkKTtcbiAgICB0aGlzLmlzSW5kZXRlcm1pbmF0ZSQgPSB0aGlzLmNyZWF0ZUluZGV0ZXJtaW5hdGVTdHJlYW0oZm9ybVZhbHVlJCk7XG4gICAgdGhpcy50cmFja0FsbENoZWNrYm94ZXNEaXNhYmxlZChmb3JtVmFsdWUkKTtcbiAgICB0aGlzLnNob3VsZERpc2FibGVBcHBseUJ1dHRvbiQgPSB0aGlzLmNyZWF0ZURpc2FibGVBcHBseUJ1dHRvblN0cmVhbSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVBbGxTZWxlY3RlZFN0cmVhbShmb3JtVmFsdWUkOiBPYnNlcnZhYmxlPFNldmVyaXR5RmlsdGVyPik6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBmb3JtVmFsdWUkLnBpcGUobWFwKHNldmVyaXRpZXMgPT4gT2JqZWN0LnZhbHVlcyhzZXZlcml0aWVzKS5ldmVyeShCb29sZWFuKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVJbmRldGVybWluYXRlU3RyZWFtKGZvcm1WYWx1ZSQ6IE9ic2VydmFibGU8U2V2ZXJpdHlGaWx0ZXI+KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGZvcm1WYWx1ZSQucGlwZShcbiAgICAgIG1hcChcbiAgICAgICAgc2V2ZXJpdGllcyA9PlxuICAgICAgICAgIE9iamVjdC52YWx1ZXMoc2V2ZXJpdGllcykuc29tZShCb29sZWFuKSAmJiAhT2JqZWN0LnZhbHVlcyhzZXZlcml0aWVzKS5ldmVyeShCb29sZWFuKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHRyYWNrQWxsQ2hlY2tib3hlc0Rpc2FibGVkKGZvcm1WYWx1ZSQ6IE9ic2VydmFibGU8U2V2ZXJpdHlGaWx0ZXI+KTogdm9pZCB7XG4gICAgZm9ybVZhbHVlJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHNldmVyaXRpZXMgPT4ge1xuICAgICAgY29uc3QgYXJlQWxsRGlzYWJsZWQgPSBPYmplY3QudmFsdWVzKHNldmVyaXRpZXMpLmV2ZXJ5KHZhbHVlID0+ICF2YWx1ZSk7XG4gICAgICB0aGlzLmlzTm9uZUNoZWNrYm94U2VsZWN0ZWQkLm5leHQoYXJlQWxsRGlzYWJsZWQpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVEaXNhYmxlQXBwbHlCdXR0b25TdHJlYW0oKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW3RoaXMuaXNOb25lQ2hlY2tib3hTZWxlY3RlZCQsIHRoaXMuc2V2ZXJpdGllc1RvdWNoZWQkXSkucGlwZShcbiAgICAgIG1hcChcbiAgICAgICAgKFthbGxDaGVja2JveGVzQXJlRGlzYWJsZWQsIHNldmVyaXRpZXNUb3VjaGVkXSkgPT5cbiAgICAgICAgICBhbGxDaGVja2JveGVzQXJlRGlzYWJsZWQgfHwgIXNldmVyaXRpZXNUb3VjaGVkXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ2hpcHNBbmREZWZhdWx0VmFsdWVzKCk6IHZvaWQge1xuICAgIGNvbnN0IHNldmVyaXR5RmlsdGVyID0gdGhpcy5mb3JtR3JvdXA7XG4gICAgY29uc3Qgc2V2ZWVyaXR5VmFsdWVzID0gc2V2ZXJpdHlGaWx0ZXIudmFsdWU7XG5cbiAgICB0aGlzLmNoaXBzID0gT2JqZWN0LmtleXMoc2V2ZWVyaXR5VmFsdWVzKS5maWx0ZXIoa2V5ID0+IHNldmVlcml0eVZhbHVlc1trZXldKSBhcyBTZXZlcml0eVR5cGVbXTtcbiAgICBjb25zdCBhbGxDaGlwc1JlbW92ZWQgPSB0aGlzLmNoaXBzLmxlbmd0aCA9PT0gMDtcbiAgICBpZiAoYWxsQ2hpcHNSZW1vdmVkKSB7XG4gICAgICBjb25zdCBkZWZhdWx0VmFsdWVzID0gREVGQVVMVF9TRVZFUklUWV9WQUxVRVM7XG4gICAgICBzZXZlcml0eUZpbHRlci5zZXRWYWx1ZShkZWZhdWx0VmFsdWVzKTtcbiAgICAgIHRoaXMuY2hpcHMgPSBPYmplY3Qua2V5cyhkZWZhdWx0VmFsdWVzKSBhcyBTZXZlcml0eVR5cGVbXTtcbiAgICB9XG4gIH1cbn1cbiIsIjxmb3JtXG4gIGNsYXNzPVwiZC1mbGV4IGEtaS1jZW50ZXJcIlxuICBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cImRyb3Bkb3duXCJcbiAgICB0aXRsZT1cInt7ICdGaWx0ZXIgYnkgc2V2ZXJpdHknIHwgdHJhbnNsYXRlIH19XCJcbiAgICBkcm9wZG93blxuICAgICNmaWx0ZXJzRHJvcGRvd249XCJicy1kcm9wZG93blwiXG4gICAgW2Nka1RyYXBGb2N1c109XCJmaWx0ZXJzRHJvcGRvd24uaXNPcGVuXCJcbiAgICBbaW5zaWRlQ2xpY2tdPVwidHJ1ZVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgZml0LXdcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZC1mbGV4IGEtaS1jZW50ZXIgaW5uZXItc2Nyb2xsXCIgc3R5bGU9XCJtaW4td2lkdGg6IDEwNHB4OyBwYWRkaW5nLXRvcDogMDsgcGFkZGluZy1ib3R0b206IDA7XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjaGlwcy5sZW5ndGggIT09IHNldmVyaXRpZXNMaXN0Lmxlbmd0aDsgZWxzZSBhbGxBbGFybXNcIj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJ0YWcgdGFnLS1pbmZvIGNoaXBcIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNoaXAgb2YgY2hpcHNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXhzIGJ0bi1jbGVhbiB0ZXh0LTEwXCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnUmVtb3ZlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZGVzZWxlY3RDaGlwKGNoaXApOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aSBjOHlJY29uPVwidGltZXNcIj48L2k+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgIGNsYXNzPVwic3RhdHVzIHN0cm9rZWQtaWNvbiBpY29uLTEyXCJcbiAgICAgICAgICAgICAgW2M4eUljb25dPVwiY2hpcCB8IEFsYXJtU2V2ZXJpdHlUb0ljb25cIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJjaGlwIHwgbG93ZXJjYXNlXCJcbiAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICB7eyBTRVZFUklUWV9MQUJFTFNbY2hpcF0gfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2FsbEFsYXJtcz5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIiB0aXRsZT1cInt7ICdBbGwgc2V2ZXJpdGllcycgfCB0cmFuc2xhdGUgfX1cIj5cbiAgICAgICAgICAgIHt7ICdBbGwgc2V2ZXJpdGllcycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC1idG4gaW5wdXQtZ3JvdXAtYnRuLS1sYXN0XCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ0bi1kZWZhdWx0IGJ0biBidG4tLWNhcmV0XCJcbiAgICAgICAgICB0aXRsZT1cInt7IGNoaXBzIHwgQWxhcm1TZXZlcml0aWVzVG9UaXRsZSB9fVwiXG4gICAgICAgICAgZGF0YS1jeT1cImM4eS1hbGFybS1maWx0ZXJcIlxuICAgICAgICAgIGRyb3Bkb3duVG9nZ2xlXG4gICAgICAgICAgKGNsaWNrKT1cInJlc2V0Rm9ybSgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpIGNsYXNzPVwiY2FyZXRcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPHVsXG4gICAgICBjbGFzcz1cImRyb3Bkb3duLW1lbnUgZHJvcGRvd24tbWVudS1hY3Rpb24tYmFyXCJcbiAgICAgICpkcm9wZG93bk1lbnVcbiAgICA+XG4gICAgICA8bGkgY2xhc3M9XCJwLWwtMTYgcC1yLTE2IHAtdC00IHAtYi00IGQtZmxleCBhLWktY2VudGVyIHN0aWNreS10b3Agc2VwYXJhdG9yLWJvdHRvbVwiPlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICBjbGFzcz1cImM4eS1jaGVja2JveCBkLWZsZXggYS1pLWNlbnRlclwiXG4gICAgICAgICAgW3RpdGxlXT1cIidBbGwnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgIGRhdGEtY3k9XCJjOHktYWxhcm0tZmlsdGVyLS1hbGxcIlxuICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cInsgc3RhbmRhbG9uZTogdHJ1ZSB9XCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImFsbENoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJpc0VhY2hDaGVja2JveFNlbGVjdGVkJCB8IGFzeW5jXCJcbiAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cImlzSW5kZXRlcm1pbmF0ZSQgfCBhc3luY1wiXG4gICAgICAgICAgICAoY2xpY2spPVwibWFya1NldmVyaXRpZXNBc1RvdWNoZWQoKVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgPGlcbiAgICAgICAgICAgIGNsYXNzPVwic3RhdHVzIHN0cm9rZWQtaWNvbiBtLWwtOCBpY29uLTIwXCJcbiAgICAgICAgICAgIFtjOHlJY29uXT1cIidiZWxsJ1wiXG4gICAgICAgICAgPjwvaT5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm0tbC04XCI+e3sgJ0FsbCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICA8L2xpPlxuICAgICAgPGxpXG4gICAgICAgIGNsYXNzPVwicC1sLTE2IHAtci0xNiBwLXQtNCBwLWItNCBkLWZsZXggYS1pLWNlbnRlclwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBzZXZlcml0eSBvZiBzZXZlcml0aWVzTGlzdFwiXG4gICAgICA+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgIGNsYXNzPVwiYzh5LWNoZWNrYm94IGQtZmxleCBhLWktY2VudGVyXCJcbiAgICAgICAgICBbdGl0bGVdPVwiU0VWRVJJVFlfTEFCRUxTW3NldmVyaXR5XSB8IHRyYW5zbGF0ZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLWN5XT1cIidjOHktYWxhcm0tZmlsdGVyLS0nICsgc2V2ZXJpdHlcIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJzZXZlcml0eVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwic2V2ZXJpdHlcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm1hcmtTZXZlcml0aWVzQXNUb3VjaGVkKClcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgIDxpXG4gICAgICAgICAgICBjbGFzcz1cInN0YXR1cyBzdHJva2VkLWljb24gbS1sLTggaWNvbi0yMFwiXG4gICAgICAgICAgICBbYzh5SWNvbl09XCJzZXZlcml0eSB8IEFsYXJtU2V2ZXJpdHlUb0ljb25cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwic2V2ZXJpdHkgfCBsb3dlcmNhc2VcIlxuICAgICAgICAgID48L2k+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtLWwtOFwiPnt7IFNFVkVSSVRZX0xBQkVMU1tzZXZlcml0eV0gfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwhLS0gYmFkZ2UgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImJhZGdlIGJhZGdlLWluZm8gbS1sLWF1dG9cIlxuICAgICAgICAgICpuZ0lmPVwiYWxhcm1Db3VudHNbc2V2ZXJpdHldIHx8IGFsYXJtQ291bnRzW3NldmVyaXR5XSA9PT0gMFwiXG4gICAgICAgID5cbiAgICAgICAgICA8aVxuICAgICAgICAgICAgY2xhc3M9XCJpY29uLXNwaW5cIlxuICAgICAgICAgICAgW2M4eUljb25dPVwiJ2NpcmNsZS1vLW5vdGNoJ1wiXG4gICAgICAgICAgICAqbmdJZj1cImNvdW50TG9hZGluZ1wiXG4gICAgICAgICAgPjwvaT5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgKm5nSWY9XCIhY291bnRMb2FkaW5nXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtY3ldPVwic2V2ZXJpdHkgKyAnLWJhZGdlJ1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgYWxhcm1Db3VudHNbc2V2ZXJpdHldIDwgOTkgPyBhbGFybUNvdW50c1tzZXZlcml0eV0gOiAnOTkrJyB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2xpPlxuICAgICAgPGxpIGNsYXNzPVwicC1sLTE2IHAtci0xNiBwLXQtNCBwLWItNCBkLWZsZXggYS1pLWNlbnRlciBzZXBhcmF0b3ItdG9wXCI+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgIGNsYXNzPVwiYzh5LXN3aXRjaFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInU2hvdyBjbGVhcmVkIGFsYXJtcycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFthdHRyLmRhdGEtY3ldPVwiJ2M4eS1hbGFybXMtZmlsdGVyLS1jbGVhcmVkJ1wiXG4gICAgICAgID5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAjc2hvd0NsZWFyZWRDaGVja2JveFxuICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cInsgc3RhbmRhbG9uZTogdHJ1ZSB9XCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2hvd0NsZWFyZWRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm1hcmtTZXZlcml0aWVzQXNUb3VjaGVkKCk7IHVwZGF0ZUFsYXJtc0NvdW50KHNob3dDbGVhcmVkQ2hlY2tib3guY2hlY2tlZClcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eyAnU2hvdyBjbGVhcmVkIGFsYXJtcycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7ICdTaG93IGNsZWFyZWQgYWxhcm1zJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgIDwvbGk+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJwLTE2IGQtZmxleCBzdGlja3ktYm90dG9tIHNlcGFyYXRvci10b3BcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIFthdHRyLmRhdGEtY3ldPVwiJ2M4eS1hbGFybXMtZmlsdGVyLS1hcHBseSdcIlxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBmbGV4LWdyb3dcIlxuICAgICAgICAgIHRpdGxlPVwie3sgJ0FwcGx5JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cImFwcGx5RmlsdGVycyhmYWxzZSk7IGNsb3NlRHJvcGRvd24oKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cInNob3VsZERpc2FibGVBcHBseUJ1dHRvbiQgfCBhc3luY1wiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAnQXBwbHknIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC91bD5cbiAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=
@@ -2,13 +2,13 @@ import { Component, ViewChild } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class DashboardChildActionComponent {
4
4
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DashboardChildActionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: DashboardChildActionComponent, selector: "c8y-dashboard-child-action", viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true }], ngImport: i0, template: "<ng-template #template>\n <li>\n <ng-content></ng-content>\n </li>\n</ng-template>\n" }); }
5
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: DashboardChildActionComponent, isStandalone: true, selector: "c8y-dashboard-child-action", viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true }], ngImport: i0, template: "<ng-template #template>\n <li>\n <ng-content></ng-content>\n </li>\n</ng-template>\n" }); }
6
6
  }
7
7
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DashboardChildActionComponent, decorators: [{
8
8
  type: Component,
9
- args: [{ selector: 'c8y-dashboard-child-action', template: "<ng-template #template>\n <li>\n <ng-content></ng-content>\n </li>\n</ng-template>\n" }]
9
+ args: [{ selector: 'c8y-dashboard-child-action', standalone: true, template: "<ng-template #template>\n <li>\n <ng-content></ng-content>\n </li>\n</ng-template>\n" }]
10
10
  }], propDecorators: { template: [{
11
11
  type: ViewChild,
12
12
  args: ['template', { static: false }]
13
13
  }] } });
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLWNoaWxkLWFjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2Rhc2hib2FyZC9kYXNoYm9hcmQtY2hpbGQtYWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2NvcmUvZGFzaGJvYXJkL2Rhc2hib2FyZC1jaGlsZC1hY3Rpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTXJELE1BQU0sT0FBTyw2QkFBNkI7OEdBQTdCLDZCQUE2QjtrR0FBN0IsNkJBQTZCLHdLQ04xQywyRkFLQTs7MkZEQ2EsNkJBQTZCO2tCQUp6QyxTQUFTOytCQUNFLDRCQUE0Qjs4QkFJSSxRQUFRO3NCQUFqRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZGFzaGJvYXJkLWNoaWxkLWFjdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXNoYm9hcmQtY2hpbGQtYWN0aW9uLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBEYXNoYm9hcmRDaGlsZEFjdGlvbkNvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoJ3RlbXBsYXRlJywgeyBzdGF0aWM6IGZhbHNlIH0pIHRlbXBsYXRlOiBhbnk7XG59XG4iLCI8bmctdGVtcGxhdGUgI3RlbXBsYXRlPlxuICA8bGk+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2xpPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLWNoaWxkLWFjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2Rhc2hib2FyZC9kYXNoYm9hcmQtY2hpbGQtYWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2NvcmUvZGFzaGJvYXJkL2Rhc2hib2FyZC1jaGlsZC1hY3Rpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBT3JELE1BQU0sT0FBTyw2QkFBNkI7OEdBQTdCLDZCQUE2QjtrR0FBN0IsNkJBQTZCLDRMQ1AxQywyRkFLQTs7MkZERWEsNkJBQTZCO2tCQUx6QyxTQUFTOytCQUNFLDRCQUE0QixjQUUxQixJQUFJOzhCQUcwQixRQUFRO3NCQUFqRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZGFzaGJvYXJkLWNoaWxkLWFjdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXNoYm9hcmQtY2hpbGQtYWN0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBEYXNoYm9hcmRDaGlsZEFjdGlvbkNvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoJ3RlbXBsYXRlJywgeyBzdGF0aWM6IGZhbHNlIH0pIHRlbXBsYXRlOiBhbnk7XG59XG4iLCI8bmctdGVtcGxhdGUgI3RlbXBsYXRlPlxuICA8bGk+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2xpPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -20,13 +20,13 @@ import { HelpModule } from '../help';
20
20
  import { DateTimePickerModule } from '../date-time-picker';
21
21
  import { FormsModule } from '../forms';
22
22
  import { RealtimeControlComponent } from './wiget-time-context/realtime-control/realtime-control.component';
23
- import { AggregationPickerComponent } from './wiget-time-context/aggregation-picker/aggregation-picker.component';
24
23
  import { WidgetTimeContextIconBar } from './wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component';
25
24
  import { IntervalPickerComponent } from '@c8y/ngx-components/interval-picker';
26
25
  import { PopoverModule } from 'ngx-bootstrap/popover';
27
- import { WidgetAutoRefreshContextComponent, AutoRefreshControlComponent, AutoRefreshSelectControlComponent, WidgetAutoRefreshContextIconBarComponent } from './widget-auto-refresh-context';
26
+ import { AutoRefreshControlComponent, AutoRefreshSelectControlComponent, WidgetAutoRefreshContextComponent, WidgetAutoRefreshContextIconBarComponent } from './widget-auto-refresh-context';
28
27
  import { CountdownIntervalModule } from '../countdown-interval';
29
28
  import { TranslateModule } from '@ngx-translate/core';
29
+ import { AggregationPickerComponent } from './wiget-time-context/aggregation-picker/aggregation-picker.component';
30
30
  import * as i0 from "@angular/core";
31
31
  import * as i1 from "ngx-bootstrap/dropdown";
32
32
  export class DashboardModule {
@@ -34,11 +34,7 @@ export class DashboardModule {
34
34
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: DashboardModule, declarations: [DashboardChildComponent,
35
35
  DashboardComponent,
36
36
  DashboardChildTitleComponent,
37
- DashboardChildActionComponent,
38
37
  WidgetsDashboardComponent,
39
- WidgetTimeContextComponent,
40
- RealtimeControlComponent,
41
- AggregationPickerComponent,
42
38
  WidgetAutoRefreshContextComponent,
43
39
  WidgetAutoRefreshContextIconBarComponent,
44
40
  AutoRefreshControlComponent,
@@ -58,7 +54,11 @@ export class DashboardModule {
58
54
  CountdownIntervalModule,
59
55
  TranslateModule,
60
56
  IntervalPickerComponent,
61
- PopoverModule], exports: [DashboardComponent,
57
+ PopoverModule,
58
+ AggregationPickerComponent,
59
+ RealtimeControlComponent,
60
+ WidgetTimeContextComponent,
61
+ DashboardChildActionComponent], exports: [DashboardComponent,
62
62
  DashboardChildComponent,
63
63
  DashboardChildTitleComponent,
64
64
  DashboardChildActionComponent,
@@ -81,7 +81,10 @@ export class DashboardModule {
81
81
  CountdownIntervalModule,
82
82
  TranslateModule,
83
83
  IntervalPickerComponent,
84
- PopoverModule] }); }
84
+ PopoverModule,
85
+ AggregationPickerComponent,
86
+ RealtimeControlComponent,
87
+ WidgetTimeContextComponent] }); }
85
88
  }
86
89
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DashboardModule, decorators: [{
87
90
  type: NgModule,
@@ -90,11 +93,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
90
93
  DashboardChildComponent,
91
94
  DashboardComponent,
92
95
  DashboardChildTitleComponent,
93
- DashboardChildActionComponent,
94
96
  WidgetsDashboardComponent,
95
- WidgetTimeContextComponent,
96
- RealtimeControlComponent,
97
- AggregationPickerComponent,
98
97
  WidgetAutoRefreshContextComponent,
99
98
  WidgetAutoRefreshContextIconBarComponent,
100
99
  AutoRefreshControlComponent,
@@ -119,7 +118,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
119
118
  CountdownIntervalModule,
120
119
  TranslateModule,
121
120
  IntervalPickerComponent,
122
- PopoverModule
121
+ PopoverModule,
122
+ AggregationPickerComponent,
123
+ RealtimeControlComponent,
124
+ WidgetTimeContextComponent,
125
+ DashboardChildActionComponent
123
126
  ],
124
127
  exports: [
125
128
  DashboardComponent,
@@ -131,4 +134,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
131
134
  ]
132
135
  }]
133
136
  }] });
134
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvZGFzaGJvYXJkL2Rhc2hib2FyZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUNoRyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMxRSxPQUFP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O3dCQUNsQix1QkFBdUI7d0JBQ3ZCLDRCQUE0Qjt3QkFDNUIsNkJBQTZCO3dCQUM3Qix5QkFBeUI7d0JBQ3pCLDBCQUEwQjtxQkFDM0I7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEcmFnRHJvcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJzRGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBCc0Ryb3Bkb3duTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9kcm9wZG93bic7XG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC90b29sdGlwJztcbmltcG9ydCB7IEFjdGlvbkJhck1vZHVsZSB9IGZyb20gJy4uL2FjdGlvbi1iYXIvYWN0aW9uLWJhci5tb2R1bGUnO1xuaW1wb3J0IHsgQnJlYWRjcnVtYk1vZHVsZSB9IGZyb20gJy4uL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5tb2R1bGUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnLi4vY29tbW9uL2NvbW1vbi5tb2R1bGUnO1xuaW1wb3J0IHsgRG9jc01vZHVsZSB9IGZyb20gJy4uL2RvY3MvZG9jcy5tb2R1bGUnO1xuaW1wb3J0IHsgRHluYW1pY0NvbXBvbmVudE1vZHVsZSB9IGZyb20gJy4uL2R5bmFtaWMtY29tcG9uZW50L2R5bmFtaWMtY29tcG9uZW50Lm1vZHVsZSc7XG5pbXBvcnQgeyBIZWFkZXJNb2R1bGUgfSBmcm9tICcuLi9oZWFkZXIvaGVhZGVyLm1vZHVsZSc7XG5pbXBvcnQgeyBEYXNoYm9hcmRDaGlsZEFjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vZGFzaGJvYXJkLWNoaWxkLWFjdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGFzaGJvYXJkQ2hpbGRUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4vZGFzaGJvYXJkLWNoaWxkLXRpdGxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXNoYm9hcmRDaGlsZENvbXBvbmVudCB9IGZyb20gJy4vZGFzaGJvYXJkLWNoaWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXNoYm9hcmRDb21wb25lbnQgfSBmcm9tICcuL2Rhc2hib2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgV2lkZ2V0VGltZUNvbnRleHRDb21wb25lbnQgfSBmcm9tICcuL3dpZ2V0LXRpbWUtY29udGV4dC93aWRnZXQtdGltZS1jb250ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXaWRnZXRzRGFzaGJvYXJkQ29tcG9uZW50IH0gZnJvbSAnLi93aWRnZXRzLWRhc2hib2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1zTW9kdWxlIH0gZnJvbSAnLi4vZHluYW1pYy1mb3Jtcyc7XG5pbXBvcnQgeyBIZWxwTW9kdWxlIH0gZnJvbSAnLi4vaGVscCc7XG5pbXBvcnQgeyBEYXRlVGltZVBpY2tlck1vZHVsZSB9IGZyb20gJy4uL2RhdGUtdGltZS1waWNrZXInO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICcuLi9mb3Jtcyc7XG5pbXBvcnQgeyBSZWFsdGltZUNvbnRyb2xDb21wb25lbnQgfSBmcm9tICcuL3dpZ2V0LXRpbWUtY29udGV4dC9yZWFsdGltZS1jb250cm9sL3JlYWx0aW1lLWNvbnRyb2wuY29tcG9uZW50JztcbmltcG9ydCB7IEFnZ3JlZ2F0aW9uUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi93aWdldC10aW1lLWNvbnRleHQvYWdncmVnYXRpb24tcGlja2VyL2FnZ3JlZ2F0aW9uLXBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgV2lkZ2V0VGltZUNvbnRleHRJY29uQmFyIH0gZnJvbSAnLi93aWdldC10aW1lLWNvbnRleHQvd2lkZ2V0LXRpbWUtY29udGV4dC1pY29uLWJhci93aWRnZXQtdGltZS1jb250ZXh0LWljb24tYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnRlcnZhbFBpY2tlckNvbXBvbmVudCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvaW50ZXJ2YWwtcGlja2VyJztcbmltcG9ydCB7IFBvcG92ZXJNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL3BvcG92ZXInO1xuaW1wb3J0IHtcbiAgV2lkZ2V0QXV0b1JlZnJlc2hDb250ZXh0Q29tcG9uZW50LFxuICBBdXRvUmVmcmVzaENvbnRyb2xDb21wb25lbnQsXG4gIEF1dG9SZWZyZXNoU2VsZWN0Q29udHJvbENvbXBvbmVudCxcbiAgV2lkZ2V0QXV0b1JlZnJlc2hDb250ZXh0SWNvbkJhckNvbXBvbmVudFxufSBmcm9tICcuL3dpZGdldC1hdXRvLXJlZnJlc2gtY29udGV4dCc7XG5pbXBvcnQgeyBDb3VudGRvd25JbnRlcnZhbE1vZHVsZSB9IGZyb20gJy4uL2NvdW50ZG93bi1pbnRlcnZhbCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgRGFzaGJvYXJkQ2hpbGRDb21wb25lbnQsXG4gICAgRGFzaGJvYXJkQ29tcG9uZW50LFxuICAgIERhc2hib2FyZENoaWxkVGl0bGVDb21wb25lbnQsXG4gICAgRGFzaGJvYXJkQ2hpbGRBY3Rpb25Db21wb25lbnQsXG4gICAgV2lkZ2V0c0Rhc2hib2FyZENvbXBvbmVudCxcbiAgICBXaWRnZXRUaW1lQ29udGV4dENvbXBvbmVudCxcbiAgICBSZWFsdGltZUNvbnRyb2xDb21wb25lbnQsXG4gICAgQWdncmVnYXRpb25QaWNrZXJDb21wb25lbnQsXG4gICAgV2lkZ2V0QXV0b1JlZnJlc2hDb250ZXh0Q29tcG9uZW50LFxuICAgIFdpZGdldEF1dG9SZWZyZXNoQ29udGV4dEljb25CYXJDb21wb25lbnQsXG4gICAgQXV0b1JlZnJlc2hDb250cm9sQ29tcG9uZW50LFxuICAgIEF1dG9SZWZyZXNoU2VsZWN0Q29udHJvbENvbXBvbmVudCxcbiAgICBXaWRnZXRUaW1lQ29udGV4dEljb25CYXJcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBBY3Rpb25CYXJNb2R1bGUsXG4gICAgRHluYW1pY0NvbXBvbmVudE1vZHVsZSxcbiAgICBEcmFnRHJvcE1vZHVsZSxcbiAgICBCc0Ryb3Bkb3duTW9kdWxlLmZvclJvb3QoKSxcbiAgICBUb29sdGlwTW9kdWxlLFxuICAgIEhlYWRlck1vZHVsZSxcbiAgICBEb2NzTW9kdWxlLFxuICAgIEJyZWFkY3J1bWJNb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgQnNEYXRlcGlja2VyTW9kdWxlLFxuICAgIER5bmFtaWNGb3Jtc01vZHVsZSxcbiAgICBIZWxwTW9kdWxlLFxuICAgIERhdGVUaW1lUGlja2VyTW9kdWxlLFxuICAgIENvdW50ZG93bkludGVydmFsTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBJbnRlcnZhbFBpY2tlckNvbXBvbmVudCxcbiAgICBQb3BvdmVyTW9kdWxlXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBEYXNoYm9hcmRDb21wb25lbnQsXG4gICAgRGFzaGJvYXJkQ2hpbGRDb21wb25lbnQsXG4gICAgRGFzaGJvYXJkQ2hpbGRUaXRsZUNvbXBvbmVudCxcbiAgICBEYXNoYm9hcmRDaGlsZEFjdGlvbkNvbXBvbmVudCxcbiAgICBXaWRnZXRzRGFzaGJvYXJkQ29tcG9uZW50LFxuICAgIFdpZGdldFRpbWVDb250ZXh0Q29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRGFzaGJvYXJkTW9kdWxlIHt9XG4iXX0=
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvZGFzaGJvYXJkL2Rhc2hib2FyZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUNoRyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMxRSxPQUFP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QTZCO3FCQUM5QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1Asa0JBQWtCO3dCQUNsQix1QkFBdUI7d0JBQ3ZCLDRCQUE0Qjt3QkFDNUIsNkJBQTZCO3dCQUM3Qix5QkFBeUI7d0JBQ3pCLDBCQUEwQjtxQkFDM0I7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEcmFnRHJvcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJzRGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBCc0Ryb3Bkb3duTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9kcm9wZG93bic7XG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC90b29sdGlwJztcbmltcG9ydCB7IEFjdGlvbkJhck1vZHVsZSB9IGZyb20gJy4uL2FjdGlvbi1iYXIvYWN0aW9uLWJhci5tb2R1bGUnO1xuaW1wb3J0IHsgQnJlYWRjcnVtYk1vZHVsZSB9IGZyb20gJy4uL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5tb2R1bGUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnLi4vY29tbW9uL2NvbW1vbi5tb2R1bGUnO1xuaW1wb3J0IHsgRG9jc01vZHVsZSB9IGZyb20gJy4uL2RvY3MvZG9jcy5tb2R1bGUnO1xuaW1wb3J0IHsgRHluYW1pY0NvbXBvbmVudE1vZHVsZSB9IGZyb20gJy4uL2R5bmFtaWMtY29tcG9uZW50L2R5bmFtaWMtY29tcG9uZW50Lm1vZHVsZSc7XG5pbXBvcnQgeyBIZWFkZXJNb2R1bGUgfSBmcm9tICcuLi9oZWFkZXIvaGVhZGVyLm1vZHVsZSc7XG5pbXBvcnQgeyBEYXNoYm9hcmRDaGlsZEFjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vZGFzaGJvYXJkLWNoaWxkLWFjdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGFzaGJvYXJkQ2hpbGRUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4vZGFzaGJvYXJkLWNoaWxkLXRpdGxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXNoYm9hcmRDaGlsZENvbXBvbmVudCB9IGZyb20gJy4vZGFzaGJvYXJkLWNoaWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXNoYm9hcmRDb21wb25lbnQgfSBmcm9tICcuL2Rhc2hib2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgV2lkZ2V0VGltZUNvbnRleHRDb21wb25lbnQgfSBmcm9tICcuL3dpZ2V0LXRpbWUtY29udGV4dC93aWRnZXQtdGltZS1jb250ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXaWRnZXRzRGFzaGJvYXJkQ29tcG9uZW50IH0gZnJvbSAnLi93aWRnZXRzLWRhc2hib2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1zTW9kdWxlIH0gZnJvbSAnLi4vZHluYW1pYy1mb3Jtcyc7XG5pbXBvcnQgeyBIZWxwTW9kdWxlIH0gZnJvbSAnLi4vaGVscCc7XG5pbXBvcnQgeyBEYXRlVGltZVBpY2tlck1vZHVsZSB9IGZyb20gJy4uL2RhdGUtdGltZS1waWNrZXInO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICcuLi9mb3Jtcyc7XG5pbXBvcnQgeyBSZWFsdGltZUNvbnRyb2xDb21wb25lbnQgfSBmcm9tICcuL3dpZ2V0LXRpbWUtY29udGV4dC9yZWFsdGltZS1jb250cm9sL3JlYWx0aW1lLWNvbnRyb2wuY29tcG9uZW50JztcbmltcG9ydCB7IFdpZGdldFRpbWVDb250ZXh0SWNvbkJhciB9IGZyb20gJy4vd2lnZXQtdGltZS1jb250ZXh0L3dpZGdldC10aW1lLWNvbnRleHQtaWNvbi1iYXIvd2lkZ2V0LXRpbWUtY29udGV4dC1pY29uLWJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW50ZXJ2YWxQaWNrZXJDb21wb25lbnQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2ludGVydmFsLXBpY2tlcic7XG5pbXBvcnQgeyBQb3BvdmVyTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9wb3BvdmVyJztcbmltcG9ydCB7XG4gIEF1dG9SZWZyZXNoQ29udHJvbENvbXBvbmVudCxcbiAgQXV0b1JlZnJlc2hTZWxlY3RDb250cm9sQ29tcG9uZW50LFxuICBXaWRnZXRBdXRvUmVmcmVzaENvbnRleHRDb21wb25lbnQsXG4gIFdpZGdldEF1dG9SZWZyZXNoQ29udGV4dEljb25CYXJDb21wb25lbnRcbn0gZnJvbSAnLi93aWRnZXQtYXV0by1yZWZyZXNoLWNvbnRleHQnO1xuaW1wb3J0IHsgQ291bnRkb3duSW50ZXJ2YWxNb2R1bGUgfSBmcm9tICcuLi9jb3VudGRvd24taW50ZXJ2YWwnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBBZ2dyZWdhdGlvblBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vd2lnZXQtdGltZS1jb250ZXh0L2FnZ3JlZ2F0aW9uLXBpY2tlci9hZ2dyZWdhdGlvbi1waWNrZXIuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgRGFzaGJvYXJkQ2hpbGRDb21wb25lbnQsXG4gICAgRGFzaGJvYXJkQ29tcG9uZW50LFxuICAgIERhc2hib2FyZENoaWxkVGl0bGVDb21wb25lbnQsXG4gICAgV2lkZ2V0c0Rhc2hib2FyZENvbXBvbmVudCxcbiAgICBXaWRnZXRBdXRvUmVmcmVzaENvbnRleHRDb21wb25lbnQsXG4gICAgV2lkZ2V0QXV0b1JlZnJlc2hDb250ZXh0SWNvbkJhckNvbXBvbmVudCxcbiAgICBBdXRvUmVmcmVzaENvbnRyb2xDb21wb25lbnQsXG4gICAgQXV0b1JlZnJlc2hTZWxlY3RDb250cm9sQ29tcG9uZW50LFxuICAgIFdpZGdldFRpbWVDb250ZXh0SWNvbkJhclxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEFjdGlvbkJhck1vZHVsZSxcbiAgICBEeW5hbWljQ29tcG9uZW50TW9kdWxlLFxuICAgIERyYWdEcm9wTW9kdWxlLFxuICAgIEJzRHJvcGRvd25Nb2R1bGUuZm9yUm9vdCgpLFxuICAgIFRvb2x0aXBNb2R1bGUsXG4gICAgSGVhZGVyTW9kdWxlLFxuICAgIERvY3NNb2R1bGUsXG4gICAgQnJlYWRjcnVtYk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBCc0RhdGVwaWNrZXJNb2R1bGUsXG4gICAgRHluYW1pY0Zvcm1zTW9kdWxlLFxuICAgIEhlbHBNb2R1bGUsXG4gICAgRGF0ZVRpbWVQaWNrZXJNb2R1bGUsXG4gICAgQ291bnRkb3duSW50ZXJ2YWxNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIEludGVydmFsUGlja2VyQ29tcG9uZW50LFxuICAgIFBvcG92ZXJNb2R1bGUsXG4gICAgQWdncmVnYXRpb25QaWNrZXJDb21wb25lbnQsXG4gICAgUmVhbHRpbWVDb250cm9sQ29tcG9uZW50LFxuICAgIFdpZGdldFRpbWVDb250ZXh0Q29tcG9uZW50LFxuICAgIERhc2hib2FyZENoaWxkQWN0aW9uQ29tcG9uZW50XG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBEYXNoYm9hcmRDb21wb25lbnQsXG4gICAgRGFzaGJvYXJkQ2hpbGRDb21wb25lbnQsXG4gICAgRGFzaGJvYXJkQ2hpbGRUaXRsZUNvbXBvbmVudCxcbiAgICBEYXNoYm9hcmRDaGlsZEFjdGlvbkNvbXBvbmVudCxcbiAgICBXaWRnZXRzRGFzaGJvYXJkQ29tcG9uZW50LFxuICAgIFdpZGdldFRpbWVDb250ZXh0Q29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRGFzaGJvYXJkTW9kdWxlIHt9XG4iXX0=
@@ -9,7 +9,10 @@ export * from './dashboard-child-change';
9
9
  export * from './dashboard-child-title.component';
10
10
  export * from './wiget-time-context/widget-time-context.component';
11
11
  export * from './wiget-time-context/widget-time-context.model';
12
+ export * from './wiget-time-context/widget-time-context-date-range.service';
12
13
  export * from './widget-auto-refresh-context/widget-auto-refresh-context.model';
13
14
  export * from './widget-auto-refresh-context/widget-global-auto-refresh.service';
14
15
  export * from './widget-auto-refresh-context/global-refresh-loading.operator';
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2Rhc2hib2FyZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLG9EQUFvRCxDQUFDO0FBQ25FLGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyxpRUFBaUUsQ0FBQztBQUNoRixjQUFjLGtFQUFrRSxDQUFDO0FBQ2pGLGNBQWMsK0RBQStELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2Rhc2hib2FyZC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzLWRhc2hib2FyZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXNoYm9hcmQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZGFzaGJvYXJkLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0LWNoYW5nZS1ldmVudC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2Rhc2hib2FyZC1jaGlsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXNoYm9hcmQtY2hpbGQtYWN0aW9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2Rhc2hib2FyZC1jaGlsZC1jaGFuZ2UnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXNoYm9hcmQtY2hpbGQtdGl0bGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vd2lnZXQtdGltZS1jb250ZXh0L3dpZGdldC10aW1lLWNvbnRleHQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vd2lnZXQtdGltZS1jb250ZXh0L3dpZGdldC10aW1lLWNvbnRleHQubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXQtYXV0by1yZWZyZXNoLWNvbnRleHQvd2lkZ2V0LWF1dG8tcmVmcmVzaC1jb250ZXh0Lm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0LWF1dG8tcmVmcmVzaC1jb250ZXh0L3dpZGdldC1nbG9iYWwtYXV0by1yZWZyZXNoLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXQtYXV0by1yZWZyZXNoLWNvbnRleHQvZ2xvYmFsLXJlZnJlc2gtbG9hZGluZy5vcGVyYXRvcic7XG4iXX0=
16
+ export * from './wiget-time-context/aggregation-picker/aggregation-picker.component';
17
+ export * from './wiget-time-context/realtime-control/realtime-control.component';
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2Rhc2hib2FyZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLG9EQUFvRCxDQUFDO0FBQ25FLGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyw2REFBNkQsQ0FBQztBQUM1RSxjQUFjLGlFQUFpRSxDQUFDO0FBQ2hGLGNBQWMsa0VBQWtFLENBQUM7QUFDakYsY0FBYywrREFBK0QsQ0FBQztBQUM5RSxjQUFjLHNFQUFzRSxDQUFDO0FBQ3JGLGNBQWMsa0VBQWtFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2Rhc2hib2FyZC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzLWRhc2hib2FyZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXNoYm9hcmQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZGFzaGJvYXJkLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0LWNoYW5nZS1ldmVudC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2Rhc2hib2FyZC1jaGlsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXNoYm9hcmQtY2hpbGQtYWN0aW9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2Rhc2hib2FyZC1jaGlsZC1jaGFuZ2UnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXNoYm9hcmQtY2hpbGQtdGl0bGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vd2lnZXQtdGltZS1jb250ZXh0L3dpZGdldC10aW1lLWNvbnRleHQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vd2lnZXQtdGltZS1jb250ZXh0L3dpZGdldC10aW1lLWNvbnRleHQubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi93aWdldC10aW1lLWNvbnRleHQvd2lkZ2V0LXRpbWUtY29udGV4dC1kYXRlLXJhbmdlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXQtYXV0by1yZWZyZXNoLWNvbnRleHQvd2lkZ2V0LWF1dG8tcmVmcmVzaC1jb250ZXh0Lm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0LWF1dG8tcmVmcmVzaC1jb250ZXh0L3dpZGdldC1nbG9iYWwtYXV0by1yZWZyZXNoLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXQtYXV0by1yZWZyZXNoLWNvbnRleHQvZ2xvYmFsLXJlZnJlc2gtbG9hZGluZy5vcGVyYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL3dpZ2V0LXRpbWUtY29udGV4dC9hZ2dyZWdhdGlvbi1waWNrZXIvYWdncmVnYXRpb24tcGlja2VyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3dpZ2V0LXRpbWUtY29udGV4dC9yZWFsdGltZS1jb250cm9sL3JlYWx0aW1lLWNvbnRyb2wuY29tcG9uZW50JztcbiJdfQ==