@c8y/ngx-components 1021.38.0 → 1021.49.1

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 (528) hide show
  1. package/api/services.d.ts +1 -1
  2. package/api/services.d.ts.map +1 -1
  3. package/auth-configuration/sso-configuration/template-parts/access-mapping/access-mapping.component.d.ts.map +1 -1
  4. package/connectivity/abstract-connectivity-tab.factory.d.ts +1 -1
  5. package/context-dashboard/add-dashboard.component.d.ts.map +1 -1
  6. package/context-dashboard/context-dashboard.model.d.ts +4 -2
  7. package/context-dashboard/context-dashboard.model.d.ts.map +1 -1
  8. package/context-dashboard/dashboard-detail.component.d.ts.map +1 -1
  9. package/context-dashboard/dashboard-manager/dashboard-manager.model.d.ts +1 -0
  10. package/context-dashboard/dashboard-manager/dashboard-manager.model.d.ts.map +1 -1
  11. package/context-dashboard/dashboard-manager/dashboard-manager.service.d.ts +0 -1
  12. package/context-dashboard/dashboard-manager/dashboard-manager.service.d.ts.map +1 -1
  13. package/context-dashboard/dashboard-manager/type-dashboards-list/type-dashboards-list.component.d.ts.map +1 -1
  14. package/context-dashboard/new-dashboard.guard.d.ts +1 -1
  15. package/context-dashboard/new-dashboard.guard.d.ts.map +1 -1
  16. package/core/action/action.component.d.ts +2 -1
  17. package/core/action/action.component.d.ts.map +1 -1
  18. package/core/action/action.model.d.ts +3 -2
  19. package/core/action/action.model.d.ts.map +1 -1
  20. package/core/breadcrumb/breadcrumb-item.component.d.ts +2 -1
  21. package/core/breadcrumb/breadcrumb-item.component.d.ts.map +1 -1
  22. package/core/breadcrumb/breadcrumb.model.d.ts +2 -1
  23. package/core/breadcrumb/breadcrumb.model.d.ts.map +1 -1
  24. package/core/common/ApplicationOptions.d.ts +1 -0
  25. package/core/common/ApplicationOptions.d.ts.map +1 -1
  26. package/core/common/empty-state/empty-state.component.d.ts +2 -1
  27. package/core/common/empty-state/empty-state.component.d.ts.map +1 -1
  28. package/core/common/get-group-icon.pipe.d.ts +2 -1
  29. package/core/common/get-group-icon.pipe.d.ts.map +1 -1
  30. package/core/common/group.service.d.ts +22 -7
  31. package/core/common/group.service.d.ts.map +1 -1
  32. package/core/common/icon.directive.d.ts +5 -5
  33. package/core/common/icon.directive.d.ts.map +1 -1
  34. package/core/common/service-registry.model.d.ts +2 -1
  35. package/core/common/service-registry.model.d.ts.map +1 -1
  36. package/core/data-grid/data-grid.model.d.ts +2 -1
  37. package/core/data-grid/data-grid.model.d.ts.map +1 -1
  38. package/core/docs/docs.models.d.ts +2 -1
  39. package/core/docs/docs.models.d.ts.map +1 -1
  40. package/core/docs/help-and-support-outlet/help-and-support-outlet.component.d.ts +5 -1
  41. package/core/docs/help-and-support-outlet/help-and-support-outlet.component.d.ts.map +1 -1
  42. package/core/docs/legal-notices-outlet/legal-notices-outlet.component.d.ts +5 -1
  43. package/core/docs/legal-notices-outlet/legal-notices-outlet.component.d.ts.map +1 -1
  44. package/core/docs/support-outlet/support-outlet.component.d.ts +5 -1
  45. package/core/docs/support-outlet/support-outlet.component.d.ts.map +1 -1
  46. package/core/forms/filter-input.component.d.ts +8 -3
  47. package/core/forms/filter-input.component.d.ts.map +1 -1
  48. package/core/list-group/list-item-action.component.d.ts +2 -1
  49. package/core/list-group/list-item-action.component.d.ts.map +1 -1
  50. package/core/list-group/list-item-icon.component.d.ts +2 -1
  51. package/core/list-group/list-item-icon.component.d.ts.map +1 -1
  52. package/core/login/login.service.d.ts.map +1 -1
  53. package/core/navigator/navigator-icon.component.d.ts +1 -1
  54. package/core/navigator/navigator-icon.component.d.ts.map +1 -1
  55. package/core/navigator/navigator-node-data.d.ts +2 -1
  56. package/core/navigator/navigator-node-data.d.ts.map +1 -1
  57. package/core/navigator/navigator-node.component.d.ts.map +1 -1
  58. package/core/navigator/navigator-node.d.ts +2 -1
  59. package/core/navigator/navigator-node.d.ts.map +1 -1
  60. package/core/plugins/plugins.model.d.ts +7 -2
  61. package/core/plugins/plugins.model.d.ts.map +1 -1
  62. package/core/plugins/plugins.service.d.ts.map +1 -1
  63. package/core/properties-list/properties-list.component.d.ts +2 -1
  64. package/core/properties-list/properties-list.component.d.ts.map +1 -1
  65. package/core/provider-configuration/model/dynamic-provider-config.model.d.ts +2 -2
  66. package/core/provider-configuration/model/dynamic-provider-config.model.d.ts.map +1 -1
  67. package/core/router/context-route.service.d.ts.map +1 -1
  68. package/core/router/router.model.d.ts +1 -1
  69. package/core/router/router.model.d.ts.map +1 -1
  70. package/core/router/scoped-context-route.service.d.ts.map +1 -1
  71. package/core/search/search.model.d.ts +2 -1
  72. package/core/search/search.model.d.ts.map +1 -1
  73. package/core/select/select-keyboard.service.d.ts +4 -0
  74. package/core/select/select-keyboard.service.d.ts.map +1 -1
  75. package/core/select/select.component.d.ts +14 -3
  76. package/core/select/select.component.d.ts.map +1 -1
  77. package/core/select-modal/select-modal.component.d.ts +2 -1
  78. package/core/select-modal/select-modal.component.d.ts.map +1 -1
  79. package/core/shared/core.model.d.ts +5 -1
  80. package/core/shared/core.model.d.ts.map +1 -1
  81. package/core/tabs/conditional-tabs-outlet.component.d.ts.map +1 -1
  82. package/core/tabs/tab.component.d.ts +3 -2
  83. package/core/tabs/tab.component.d.ts.map +1 -1
  84. package/core/tabs/tab.model.d.ts +10 -5
  85. package/core/tabs/tab.model.d.ts.map +1 -1
  86. package/core/tabs/tabs-outlet.component.d.ts +7 -4
  87. package/core/tabs/tabs-outlet.component.d.ts.map +1 -1
  88. package/core/user/user-menu-item.component.d.ts +2 -1
  89. package/core/user/user-menu-item.component.d.ts.map +1 -1
  90. package/core/user/user.model.d.ts +2 -1
  91. package/core/user/user.model.d.ts.map +1 -1
  92. package/core/wizard/wizard.model.d.ts +4 -3
  93. package/core/wizard/wizard.model.d.ts.map +1 -1
  94. package/data-grid-columns/asset-type/asset-type.cell-renderer.component.d.ts.map +1 -1
  95. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts +15 -46
  96. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts.map +1 -1
  97. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes.model.d.ts +3 -0
  98. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes.model.d.ts.map +1 -1
  99. package/datapoint-selector/datapoint-selection.model.d.ts +6 -7
  100. package/datapoint-selector/datapoint-selection.model.d.ts.map +1 -1
  101. package/datapoints-export-selector/datapoints-export-selector.model.d.ts +2 -1
  102. package/datapoints-export-selector/datapoints-export-selector.model.d.ts.map +1 -1
  103. package/device-grid/columns/icon.cell-renderer.component.d.ts +14 -0
  104. package/device-grid/columns/icon.cell-renderer.component.d.ts.map +1 -0
  105. package/device-grid/columns/index.d.ts +1 -0
  106. package/device-grid/columns/index.d.ts.map +1 -1
  107. package/device-grid/device-grid.component.d.ts.map +1 -1
  108. package/device-grid/device-grid.service.d.ts +0 -2
  109. package/device-grid/device-grid.service.d.ts.map +1 -1
  110. package/device-provisioned-certificates/c8y-ngx-components-device-provisioned-certificates.d.ts.map +1 -0
  111. package/device-provisioned-certificates/device-provisioned-certificates.guard.d.ts +11 -0
  112. package/device-provisioned-certificates/device-provisioned-certificates.guard.d.ts.map +1 -0
  113. package/device-provisioned-certificates/device-provisioned-certificates.module.d.ts +13 -0
  114. package/device-provisioned-certificates/device-provisioned-certificates.module.d.ts.map +1 -0
  115. package/device-provisioned-certificates/device-provisioned-certificates.service.d.ts +13 -0
  116. package/device-provisioned-certificates/device-provisioned-certificates.service.d.ts.map +1 -0
  117. package/device-provisioned-certificates/device-tab-provisioned-certificates.component.d.ts +57 -0
  118. package/device-provisioned-certificates/device-tab-provisioned-certificates.component.d.ts.map +1 -0
  119. package/device-provisioned-certificates/index.d.ts +2 -0
  120. package/device-provisioned-certificates/index.d.ts.map +1 -0
  121. package/ecosystem/application-plugins/application-plugins.component.d.ts +4 -0
  122. package/ecosystem/application-plugins/application-plugins.component.d.ts.map +1 -1
  123. package/ecosystem/application-plugins/application-plugins.module.d.ts +2 -2
  124. package/ecosystem/application-plugins/application-plugins.module.d.ts.map +1 -1
  125. package/ecosystem/application-plugins/index.d.ts +1 -0
  126. package/ecosystem/application-plugins/index.d.ts.map +1 -1
  127. package/ecosystem/application-plugins/install-plugin.component.d.ts +9 -11
  128. package/ecosystem/application-plugins/install-plugin.component.d.ts.map +1 -1
  129. package/ecosystem/application-plugins/only-latest-filter/only-latest-filter.component.d.ts +12 -0
  130. package/ecosystem/application-plugins/only-latest-filter/only-latest-filter.component.d.ts.map +1 -0
  131. package/ecosystem/application-plugins/plugin-list-item.component.d.ts +8 -3
  132. package/ecosystem/application-plugins/plugin-list-item.component.d.ts.map +1 -1
  133. package/ecosystem/application-plugins/plugin-list.component.d.ts.map +1 -1
  134. package/ecosystem/application-plugins/update-plugin-of-app/update-plugin-of-app.component.d.ts.map +1 -1
  135. package/ecosystem/applications/application-list/application-list.component.d.ts +2 -2
  136. package/ecosystem/applications/application-list/application-list.component.d.ts.map +1 -1
  137. package/ecosystem/applications/install-from-package/install-from-package.component.d.ts.map +1 -1
  138. package/ecosystem/archived-confirm/archived-confirm-modal.component.d.ts +11 -0
  139. package/ecosystem/archived-confirm/archived-confirm-modal.component.d.ts.map +1 -0
  140. package/ecosystem/archived-confirm/archived-confirm.module.d.ts +10 -0
  141. package/ecosystem/archived-confirm/archived-confirm.module.d.ts.map +1 -0
  142. package/ecosystem/archived-confirm/c8y-ngx-components-ecosystem-archived-confirm.d.ts.map +1 -0
  143. package/ecosystem/archived-confirm/index.d.ts +3 -0
  144. package/ecosystem/archived-confirm/index.d.ts.map +1 -0
  145. package/ecosystem/ecosystem.module.d.ts +2 -1
  146. package/ecosystem/ecosystem.module.d.ts.map +1 -1
  147. package/ecosystem/features/feature-list.component.d.ts +2 -2
  148. package/ecosystem/features/feature-list.component.d.ts.map +1 -1
  149. package/ecosystem/microservices/microservice-list.component.d.ts +2 -2
  150. package/ecosystem/microservices/microservice-list.component.d.ts.map +1 -1
  151. package/ecosystem/packages/deploy-application/deploy-application.component.d.ts.map +1 -1
  152. package/ecosystem/packages/package-details/package-details.component.d.ts +7 -2
  153. package/ecosystem/packages/package-details/package-details.component.d.ts.map +1 -1
  154. package/ecosystem/packages/package-list/packages-list.component.d.ts +2 -2
  155. package/ecosystem/packages/package-list/packages-list.component.d.ts.map +1 -1
  156. package/ecosystem/shared/add-application.component.d.ts +2 -1
  157. package/ecosystem/shared/add-application.component.d.ts.map +1 -1
  158. package/ecosystem/shared/application-card.component.d.ts +4 -0
  159. package/ecosystem/shared/application-card.component.d.ts.map +1 -1
  160. package/ecosystem/shared/archived-filter/archived-filter.component.d.ts +12 -0
  161. package/ecosystem/shared/archived-filter/archived-filter.component.d.ts.map +1 -0
  162. package/ecosystem/shared/ecosystem.constants.d.ts +4 -0
  163. package/ecosystem/shared/ecosystem.constants.d.ts.map +1 -1
  164. package/ecosystem/shared/ecosystem.model.d.ts +5 -1
  165. package/ecosystem/shared/ecosystem.model.d.ts.map +1 -1
  166. package/ecosystem/shared/ecosystem.service.d.ts +7 -0
  167. package/ecosystem/shared/ecosystem.service.d.ts.map +1 -1
  168. package/ecosystem/shared/index.d.ts +1 -0
  169. package/ecosystem/shared/index.d.ts.map +1 -1
  170. package/ecosystem/shared/list-filters/list-filters.component.d.ts +14 -4
  171. package/ecosystem/shared/list-filters/list-filters.component.d.ts.map +1 -1
  172. package/ecosystem/shared/list-filters/list-filters.model.d.ts +8 -2
  173. package/ecosystem/shared/list-filters/list-filters.model.d.ts.map +1 -1
  174. package/ecosystem/shared/shared-ecosystem.module.d.ts +9 -8
  175. package/ecosystem/shared/shared-ecosystem.module.d.ts.map +1 -1
  176. package/ecosystem/shared/translate-package-label.pipe.d.ts +1 -1
  177. package/ecosystem/shared/translate-package-label.pipe.d.ts.map +1 -1
  178. package/esm2022/alarms/alarm-info.component.mjs +1 -1
  179. package/esm2022/api/services.mjs +2 -2
  180. package/esm2022/auth-configuration/sso-configuration/template-parts/access-mapping/access-mapping.component.mjs +10 -5
  181. package/esm2022/auth-configuration/sso-configuration/template-parts/user-data-mapping.component.mjs +4 -4
  182. package/esm2022/context-dashboard/add-dashboard.component.mjs +4 -2
  183. package/esm2022/context-dashboard/context-dashboard.model.mjs +3 -2
  184. package/esm2022/context-dashboard/context-dashboard.service.mjs +2 -2
  185. package/esm2022/context-dashboard/dashboard-detail.component.mjs +5 -3
  186. package/esm2022/context-dashboard/dashboard-manager/dashboard-manager.model.mjs +1 -1
  187. package/esm2022/context-dashboard/dashboard-manager/dashboard-manager.service.mjs +5 -15
  188. package/esm2022/context-dashboard/dashboard-manager/type-dashboards-list/type-dashboards-list.component.mjs +2 -2
  189. package/esm2022/context-dashboard/new-dashboard.guard.mjs +1 -1
  190. package/esm2022/core/action/action.component.mjs +1 -1
  191. package/esm2022/core/action/action.model.mjs +1 -1
  192. package/esm2022/core/bootstrap/bootstrap.component.mjs +1 -1
  193. package/esm2022/core/breadcrumb/breadcrumb-item.component.mjs +1 -1
  194. package/esm2022/core/breadcrumb/breadcrumb.model.mjs +1 -1
  195. package/esm2022/core/common/ApplicationOptions.mjs +1 -1
  196. package/esm2022/core/common/empty-state/empty-state.component.mjs +1 -1
  197. package/esm2022/core/common/get-group-icon.pipe.mjs +1 -1
  198. package/esm2022/core/common/group.service.mjs +2 -2
  199. package/esm2022/core/common/icon.directive.mjs +1 -1
  200. package/esm2022/core/common/service-registry.model.mjs +1 -1
  201. package/esm2022/core/data-grid/data-grid.model.mjs +1 -1
  202. package/esm2022/core/docs/docs.models.mjs +1 -1
  203. package/esm2022/core/docs/support-outlet/support-outlet.component.mjs +3 -3
  204. package/esm2022/core/forms/filter-input.component.mjs +22 -7
  205. package/esm2022/core/list-group/list-item-action.component.mjs +1 -1
  206. package/esm2022/core/list-group/list-item-icon.component.mjs +1 -1
  207. package/esm2022/core/login/credentials.component.mjs +2 -2
  208. package/esm2022/core/login/login.service.mjs +18 -7
  209. package/esm2022/core/navigator/navigator-node-data.mjs +1 -1
  210. package/esm2022/core/navigator/navigator-node.component.mjs +11 -2
  211. package/esm2022/core/navigator/navigator-node.mjs +1 -1
  212. package/esm2022/core/plugins/plugins.model.mjs +5 -1
  213. package/esm2022/core/plugins/plugins.service.mjs +6 -2
  214. package/esm2022/core/properties-list/properties-list.component.mjs +1 -1
  215. package/esm2022/core/provider-configuration/model/dynamic-provider-config.model.mjs +1 -1
  216. package/esm2022/core/router/context-route.service.mjs +4 -2
  217. package/esm2022/core/router/router.model.mjs +1 -1
  218. package/esm2022/core/router/scoped-context-route.service.mjs +4 -2
  219. package/esm2022/core/search/search.model.mjs +1 -1
  220. package/esm2022/core/select/select-keyboard.service.mjs +7 -3
  221. package/esm2022/core/select/select.component.mjs +36 -8
  222. package/esm2022/core/select-modal/select-modal.component.mjs +2 -2
  223. package/esm2022/core/shared/core.model.mjs +6 -2
  224. package/esm2022/core/tabs/conditional-tabs-outlet.component.mjs +4 -2
  225. package/esm2022/core/tabs/tab.component.mjs +1 -1
  226. package/esm2022/core/tabs/tab.model.mjs +1 -1
  227. package/esm2022/core/tabs/tabs-outlet.component.mjs +41 -12
  228. package/esm2022/core/user/user-menu-item.component.mjs +1 -1
  229. package/esm2022/core/user/user.model.mjs +1 -1
  230. package/esm2022/core/wizard/wizard.model.mjs +1 -1
  231. package/esm2022/data-grid-columns/asset-type/asset-type.cell-renderer.component.mjs +1 -1
  232. package/esm2022/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.mjs +47 -22
  233. package/esm2022/datapoint-selector/datapoint-attributes-form/datapoint-attributes.model.mjs +1 -1
  234. package/esm2022/datapoint-selector/datapoint-selection.model.mjs +1 -1
  235. package/esm2022/datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.mjs +3 -3
  236. package/esm2022/datapoints-export-selector/datapoints-export-selector.model.mjs +1 -1
  237. package/esm2022/device-grid/columns/icon.cell-renderer.component.mjs +42 -0
  238. package/esm2022/device-grid/columns/index.mjs +2 -1
  239. package/esm2022/device-grid/device-grid.component.mjs +3 -3
  240. package/esm2022/device-grid/device-grid.service.mjs +7 -25
  241. package/esm2022/device-provisioned-certificates/c8y-ngx-components-device-provisioned-certificates.mjs +5 -0
  242. package/esm2022/device-provisioned-certificates/device-provisioned-certificates.guard.mjs +28 -0
  243. package/esm2022/device-provisioned-certificates/device-provisioned-certificates.module.mjs +51 -0
  244. package/esm2022/device-provisioned-certificates/device-provisioned-certificates.service.mjs +31 -0
  245. package/esm2022/device-provisioned-certificates/device-tab-provisioned-certificates.component.mjs +76 -0
  246. package/esm2022/device-provisioned-certificates/index.mjs +2 -0
  247. package/esm2022/ecosystem/application-plugins/application-plugins.component.mjs +41 -39
  248. package/esm2022/ecosystem/application-plugins/application-plugins.module.mjs +8 -6
  249. package/esm2022/ecosystem/application-plugins/apps-to-update-remotes-select.component.mjs +1 -1
  250. package/esm2022/ecosystem/application-plugins/index.mjs +2 -1
  251. package/esm2022/ecosystem/application-plugins/install-plugin.component.mjs +18 -21
  252. package/esm2022/ecosystem/application-plugins/only-latest-filter/only-latest-filter.component.mjs +26 -0
  253. package/esm2022/ecosystem/application-plugins/plugin-list-item.component.mjs +14 -6
  254. package/esm2022/ecosystem/application-plugins/plugin-list.component.mjs +14 -12
  255. package/esm2022/ecosystem/application-plugins/update-plugin-of-app/update-plugin-of-app.component.mjs +7 -1
  256. package/esm2022/ecosystem/applications/application-list/application-list.component.mjs +1 -1
  257. package/esm2022/ecosystem/applications/install-from-package/install-from-package.component.mjs +6 -1
  258. package/esm2022/ecosystem/archived-confirm/archived-confirm-modal.component.mjs +22 -0
  259. package/esm2022/ecosystem/archived-confirm/archived-confirm.module.mjs +32 -0
  260. package/esm2022/ecosystem/archived-confirm/c8y-ngx-components-ecosystem-archived-confirm.mjs +5 -0
  261. package/esm2022/ecosystem/archived-confirm/index.mjs +3 -0
  262. package/esm2022/ecosystem/ecosystem.module.mjs +20 -16
  263. package/esm2022/ecosystem/features/feature-list.component.mjs +1 -1
  264. package/esm2022/ecosystem/microservices/microservice-list.component.mjs +1 -1
  265. package/esm2022/ecosystem/packages/deploy-application/deploy-application.component.mjs +6 -1
  266. package/esm2022/ecosystem/packages/package-details/package-details.component.mjs +13 -8
  267. package/esm2022/ecosystem/packages/package-list/packages-list.component.mjs +4 -4
  268. package/esm2022/ecosystem/shared/add-application.component.mjs +1 -1
  269. package/esm2022/ecosystem/shared/application-card.component.mjs +3 -3
  270. package/esm2022/ecosystem/shared/archived-filter/archived-filter.component.mjs +27 -0
  271. package/esm2022/ecosystem/shared/ecosystem.constants.mjs +5 -1
  272. package/esm2022/ecosystem/shared/ecosystem.model.mjs +7 -3
  273. package/esm2022/ecosystem/shared/ecosystem.service.mjs +26 -1
  274. package/esm2022/ecosystem/shared/index.mjs +2 -1
  275. package/esm2022/ecosystem/shared/list-filters/list-filters.component.mjs +75 -13
  276. package/esm2022/ecosystem/shared/list-filters/list-filters.model.mjs +1 -1
  277. package/esm2022/ecosystem/shared/shared-ecosystem.module.mjs +10 -5
  278. package/esm2022/ecosystem/shared/translate-package-label.pipe.mjs +3 -3
  279. package/esm2022/files-repository/files-repository.component.mjs +2 -2
  280. package/esm2022/files-repository/files-repository.service.mjs +5 -16
  281. package/esm2022/icon-selector/icon-selector.component.mjs +1 -1
  282. package/esm2022/icon-selector/icons/index.mjs +1 -1
  283. package/esm2022/operations/shared/status-option.model.mjs +1 -1
  284. package/esm2022/protocol-lwm2m/components/configuration/lwm2m-configuration.component.mjs +2 -2
  285. package/esm2022/protocol-opcua/opcua-auto-apply-settings.component.mjs +1 -1
  286. package/esm2022/register-device/bulk/bulk-device-registration-modal.component.mjs +17 -9
  287. package/esm2022/register-device/general/general-device-registration-button.component.mjs +3 -3
  288. package/esm2022/register-device/general/general-device-registration.component.mjs +109 -33
  289. package/esm2022/remote-access/configurations/c8y-ngx-components-remote-access-configurations.mjs +5 -0
  290. package/esm2022/remote-access/configurations/index.mjs +16 -0
  291. package/esm2022/remote-access/configurations/remote-access-configuration-list/remote-access-configuration-list.component.mjs +218 -0
  292. package/esm2022/remote-access/configurations/remote-access-configuration-list/remote-access-connect-button/remote-access-connect-button.component.mjs +60 -0
  293. package/esm2022/remote-access/configurations/remote-access-pick-protocol-modal/remote-access-pick-protocol-modal.component.mjs +36 -0
  294. package/esm2022/remote-access/data/c8y-ngx-components-remote-access-data.mjs +5 -0
  295. package/esm2022/remote-access/data/index.mjs +3 -0
  296. package/esm2022/remote-access/data/remote-access-protocol-provider.mjs +2 -0
  297. package/esm2022/remote-access/data/remote-access.service.mjs +200 -0
  298. package/esm2022/remote-access/passthrough/c8y-ngx-components-remote-access-passthrough.mjs +5 -0
  299. package/esm2022/remote-access/passthrough/index.mjs +36 -0
  300. package/esm2022/remote-access/shared/c8y-ngx-components-remote-access-shared.mjs +5 -0
  301. package/esm2022/remote-access/shared/index.mjs +3 -0
  302. package/esm2022/remote-access/shared/remote-access-basic-endpoint-modal/remote-access-basic-endpoint-modal.component.mjs +49 -0
  303. package/esm2022/remote-access/shared/ssh-key-input/ssh-key-input.component.mjs +87 -0
  304. package/esm2022/remote-access/ssh/c8y-ngx-components-remote-access-ssh.mjs +5 -0
  305. package/esm2022/remote-access/ssh/index.mjs +73 -0
  306. package/esm2022/remote-access/ssh/remote-access-ssh-endpoint-modal/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs +5 -0
  307. package/esm2022/remote-access/ssh/remote-access-ssh-endpoint-modal/index.mjs +2 -0
  308. package/esm2022/remote-access/ssh/remote-access-ssh-endpoint-modal/remote-access-ssh-endpoint-modal.component.mjs +104 -0
  309. package/esm2022/remote-access/telnet/c8y-ngx-components-remote-access-telnet.mjs +5 -0
  310. package/esm2022/remote-access/telnet/index.mjs +43 -0
  311. package/esm2022/remote-access/terminal-viewer/c8y-ngx-components-remote-access-terminal-viewer.mjs +5 -0
  312. package/esm2022/remote-access/terminal-viewer/index.mjs +2 -0
  313. package/esm2022/remote-access/terminal-viewer/shell-adapter.mjs +36 -0
  314. package/esm2022/remote-access/terminal-viewer/telnet-negotiator.mjs +96 -0
  315. package/esm2022/remote-access/terminal-viewer/terminal-viewer.component.mjs +101 -0
  316. package/esm2022/remote-access/vnc/c8y-ngx-components-remote-access-vnc.mjs +5 -0
  317. package/esm2022/remote-access/vnc/index.mjs +73 -0
  318. package/esm2022/remote-access/vnc/remote-access-vnc-endpoint-modal/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs +5 -0
  319. package/esm2022/remote-access/vnc/remote-access-vnc-endpoint-modal/index.mjs +2 -0
  320. package/esm2022/remote-access/vnc/remote-access-vnc-endpoint-modal/remote-access-vnc-endpoint-modal.component.mjs +59 -0
  321. package/esm2022/remote-access/vnc/vnc-viewer/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs +5 -0
  322. package/esm2022/remote-access/vnc/vnc-viewer/index.mjs +2 -0
  323. package/esm2022/remote-access/vnc/vnc-viewer/vnc-credentials-prompt/vnc-credentials-prompt.component.mjs +57 -0
  324. package/esm2022/remote-access/vnc/vnc-viewer/vnc-viewer.component.mjs +158 -0
  325. package/esm2022/replace-device/replace-device-wizard/replace-device-wizard.model.mjs +1 -1
  326. package/esm2022/report-dashboard/report-dashboard-list.component.mjs +4 -3
  327. package/esm2022/repository/configuration/device-tab/device-configuration-list.component.mjs +1 -1
  328. package/esm2022/repository/shared/repository.model.mjs +1 -1
  329. package/esm2022/repository/shared/repository.service.mjs +3 -3
  330. package/esm2022/services/status-options/status-options.model.mjs +1 -1
  331. package/esm2022/sub-assets/group-info.component.mjs +1 -1
  332. package/esm2022/tenants/custom-properties/custom-properties.service.mjs +6 -2
  333. package/esm2022/translation-editor/data/translation-store.service.mjs +4 -3
  334. package/esm2022/trusted-certificates/list/trusted-certificate-list.component.mjs +35 -9
  335. package/esm2022/upgrade/bridge.service.mjs +16 -2
  336. package/esm2022/widgets/implementations/alarms/severity-icon.pipe.mjs +1 -1
  337. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.mjs +3 -2
  338. package/esm2022/widgets/implementations/kpi/kpi-widget.model.mjs +1 -1
  339. package/fesm2022/c8y-ngx-components-alarms.mjs +1 -1
  340. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  341. package/fesm2022/c8y-ngx-components-api.mjs +3 -2
  342. package/fesm2022/c8y-ngx-components-api.mjs.map +1 -1
  343. package/fesm2022/c8y-ngx-components-auth-configuration.mjs +12 -7
  344. package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  345. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +15 -20
  346. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  347. package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs.map +1 -1
  348. package/fesm2022/c8y-ngx-components-data-grid-columns.mjs.map +1 -1
  349. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +48 -23
  350. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  351. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -1
  352. package/fesm2022/c8y-ngx-components-device-grid.mjs +48 -28
  353. package/fesm2022/c8y-ngx-components-device-grid.mjs.map +1 -1
  354. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +174 -0
  355. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs.map +1 -0
  356. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +125 -105
  357. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  358. package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs +57 -0
  359. package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs.map +1 -0
  360. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +147 -31
  361. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
  362. package/fesm2022/c8y-ngx-components-ecosystem.mjs +1452 -1414
  363. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  364. package/fesm2022/c8y-ngx-components-files-repository.mjs +5 -16
  365. package/fesm2022/c8y-ngx-components-files-repository.mjs.map +1 -1
  366. package/fesm2022/c8y-ngx-components-icon-selector-icons.mjs.map +1 -1
  367. package/fesm2022/c8y-ngx-components-icon-selector.mjs.map +1 -1
  368. package/fesm2022/c8y-ngx-components-protocol-lwm2m-components-configuration.mjs +1 -1
  369. package/fesm2022/c8y-ngx-components-protocol-lwm2m-components-configuration.mjs.map +1 -1
  370. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +1 -1
  371. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs.map +1 -1
  372. package/fesm2022/c8y-ngx-components-register-device.mjs +269 -188
  373. package/fesm2022/c8y-ngx-components-register-device.mjs.map +1 -1
  374. package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs +314 -0
  375. package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs.map +1 -0
  376. package/fesm2022/c8y-ngx-components-remote-access-data.mjs +206 -0
  377. package/fesm2022/c8y-ngx-components-remote-access-data.mjs.map +1 -0
  378. package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs +42 -0
  379. package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs.map +1 -0
  380. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs +138 -0
  381. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs.map +1 -0
  382. package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs +111 -0
  383. package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs.map +1 -0
  384. package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs +79 -0
  385. package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs.map +1 -0
  386. package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs +50 -0
  387. package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs.map +1 -0
  388. package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs +235 -0
  389. package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs.map +1 -0
  390. package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs +66 -0
  391. package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs.map +1 -0
  392. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs +211 -0
  393. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs.map +1 -0
  394. package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs +79 -0
  395. package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs.map +1 -0
  396. package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs.map +1 -1
  397. package/fesm2022/c8y-ngx-components-report-dashboard.mjs +3 -2
  398. package/fesm2022/c8y-ngx-components-report-dashboard.mjs.map +1 -1
  399. package/fesm2022/c8y-ngx-components-repository-configuration.mjs +1 -1
  400. package/fesm2022/c8y-ngx-components-repository-configuration.mjs.map +1 -1
  401. package/fesm2022/c8y-ngx-components-repository-shared.mjs +2 -2
  402. package/fesm2022/c8y-ngx-components-repository-shared.mjs.map +1 -1
  403. package/fesm2022/c8y-ngx-components-services.mjs.map +1 -1
  404. package/fesm2022/c8y-ngx-components-sub-assets.mjs.map +1 -1
  405. package/fesm2022/c8y-ngx-components-tenants.mjs +5 -1
  406. package/fesm2022/c8y-ngx-components-tenants.mjs.map +1 -1
  407. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs +3 -2
  408. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs.map +1 -1
  409. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +43 -17
  410. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
  411. package/fesm2022/c8y-ngx-components-upgrade.mjs +16 -2
  412. package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
  413. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  414. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +2 -1
  415. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -1
  416. package/fesm2022/c8y-ngx-components.mjs +151 -38
  417. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  418. package/files-repository/files-repository.component.d.ts.map +1 -1
  419. package/files-repository/files-repository.service.d.ts +0 -2
  420. package/files-repository/files-repository.service.d.ts.map +1 -1
  421. package/icon-selector/icon-selector.component.d.ts +3 -2
  422. package/icon-selector/icon-selector.component.d.ts.map +1 -1
  423. package/icon-selector/icons/index.d.ts +1 -0
  424. package/icon-selector/icons/index.d.ts.map +1 -1
  425. package/locales/de.po +157 -5
  426. package/locales/es.po +157 -5
  427. package/locales/fr.po +157 -5
  428. package/locales/ja_JP.po +156 -5
  429. package/locales/ko.po +156 -5
  430. package/locales/locales.pot +156 -4
  431. package/locales/nl.po +157 -5
  432. package/locales/pl.po +159 -7
  433. package/locales/pt_BR.po +157 -5
  434. package/locales/zh_CN.po +156 -5
  435. package/locales/zh_TW.po +156 -5
  436. package/operations/shared/status-option.model.d.ts +2 -1
  437. package/operations/shared/status-option.model.d.ts.map +1 -1
  438. package/package.json +1 -1
  439. package/register-device/bulk/bulk-device-registration-modal.component.d.ts +6 -2
  440. package/register-device/bulk/bulk-device-registration-modal.component.d.ts.map +1 -1
  441. package/register-device/general/general-device-registration-button.component.d.ts +1 -1
  442. package/register-device/general/general-device-registration-button.component.d.ts.map +1 -1
  443. package/register-device/general/general-device-registration.component.d.ts +21 -7
  444. package/register-device/general/general-device-registration.component.d.ts.map +1 -1
  445. package/remote-access/configurations/c8y-ngx-components-remote-access-configurations.d.ts.map +1 -0
  446. package/remote-access/configurations/index.d.ts +3 -0
  447. package/remote-access/configurations/index.d.ts.map +1 -0
  448. package/remote-access/configurations/remote-access-configuration-list/remote-access-configuration-list.component.d.ts +34 -0
  449. package/remote-access/configurations/remote-access-configuration-list/remote-access-configuration-list.component.d.ts.map +1 -0
  450. package/remote-access/configurations/remote-access-configuration-list/remote-access-connect-button/remote-access-connect-button.component.d.ts +17 -0
  451. package/remote-access/configurations/remote-access-configuration-list/remote-access-connect-button/remote-access-connect-button.component.d.ts.map +1 -0
  452. package/remote-access/configurations/remote-access-pick-protocol-modal/remote-access-pick-protocol-modal.component.d.ts +18 -0
  453. package/remote-access/configurations/remote-access-pick-protocol-modal/remote-access-pick-protocol-modal.component.d.ts.map +1 -0
  454. package/remote-access/data/c8y-ngx-components-remote-access-data.d.ts.map +1 -0
  455. package/remote-access/data/index.d.ts +3 -0
  456. package/remote-access/data/index.d.ts.map +1 -0
  457. package/remote-access/data/remote-access-protocol-provider.d.ts +21 -0
  458. package/remote-access/data/remote-access-protocol-provider.d.ts.map +1 -0
  459. package/remote-access/data/remote-access.service.d.ts +94 -0
  460. package/remote-access/data/remote-access.service.d.ts.map +1 -0
  461. package/remote-access/passthrough/c8y-ngx-components-remote-access-passthrough.d.ts.map +1 -0
  462. package/remote-access/passthrough/index.d.ts +17 -0
  463. package/remote-access/passthrough/index.d.ts.map +1 -0
  464. package/remote-access/shared/c8y-ngx-components-remote-access-shared.d.ts.map +1 -0
  465. package/remote-access/shared/index.d.ts +3 -0
  466. package/remote-access/shared/index.d.ts.map +1 -0
  467. package/remote-access/shared/remote-access-basic-endpoint-modal/remote-access-basic-endpoint-modal.component.d.ts +37 -0
  468. package/remote-access/shared/remote-access-basic-endpoint-modal/remote-access-basic-endpoint-modal.component.d.ts.map +1 -0
  469. package/remote-access/shared/ssh-key-input/ssh-key-input.component.d.ts +38 -0
  470. package/remote-access/shared/ssh-key-input/ssh-key-input.component.d.ts.map +1 -0
  471. package/remote-access/ssh/c8y-ngx-components-remote-access-ssh.d.ts.map +1 -0
  472. package/remote-access/ssh/index.d.ts +22 -0
  473. package/remote-access/ssh/index.d.ts.map +1 -0
  474. package/remote-access/ssh/remote-access-ssh-endpoint-modal/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.d.ts.map +1 -0
  475. package/remote-access/ssh/remote-access-ssh-endpoint-modal/index.d.ts +2 -0
  476. package/remote-access/ssh/remote-access-ssh-endpoint-modal/index.d.ts.map +1 -0
  477. package/remote-access/ssh/remote-access-ssh-endpoint-modal/remote-access-ssh-endpoint-modal.component.d.ts +64 -0
  478. package/remote-access/ssh/remote-access-ssh-endpoint-modal/remote-access-ssh-endpoint-modal.component.d.ts.map +1 -0
  479. package/remote-access/telnet/c8y-ngx-components-remote-access-telnet.d.ts.map +1 -0
  480. package/remote-access/telnet/index.d.ts +17 -0
  481. package/remote-access/telnet/index.d.ts.map +1 -0
  482. package/remote-access/terminal-viewer/c8y-ngx-components-remote-access-terminal-viewer.d.ts.map +1 -0
  483. package/remote-access/terminal-viewer/index.d.ts +2 -0
  484. package/remote-access/terminal-viewer/index.d.ts.map +1 -0
  485. package/remote-access/terminal-viewer/shell-adapter.d.ts +14 -0
  486. package/remote-access/terminal-viewer/shell-adapter.d.ts.map +1 -0
  487. package/remote-access/terminal-viewer/telnet-negotiator.d.ts +13 -0
  488. package/remote-access/terminal-viewer/telnet-negotiator.d.ts.map +1 -0
  489. package/remote-access/terminal-viewer/terminal-viewer.component.d.ts +25 -0
  490. package/remote-access/terminal-viewer/terminal-viewer.component.d.ts.map +1 -0
  491. package/remote-access/vnc/c8y-ngx-components-remote-access-vnc.d.ts.map +1 -0
  492. package/remote-access/vnc/index.d.ts +22 -0
  493. package/remote-access/vnc/index.d.ts.map +1 -0
  494. package/remote-access/vnc/remote-access-vnc-endpoint-modal/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.d.ts.map +1 -0
  495. package/remote-access/vnc/remote-access-vnc-endpoint-modal/index.d.ts +2 -0
  496. package/remote-access/vnc/remote-access-vnc-endpoint-modal/index.d.ts.map +1 -0
  497. package/remote-access/vnc/remote-access-vnc-endpoint-modal/remote-access-vnc-endpoint-modal.component.d.ts +46 -0
  498. package/remote-access/vnc/remote-access-vnc-endpoint-modal/remote-access-vnc-endpoint-modal.component.d.ts.map +1 -0
  499. package/remote-access/vnc/vnc-viewer/c8y-ngx-components-remote-access-vnc-vnc-viewer.d.ts.map +1 -0
  500. package/remote-access/vnc/vnc-viewer/index.d.ts +2 -0
  501. package/remote-access/vnc/vnc-viewer/index.d.ts.map +1 -0
  502. package/remote-access/vnc/vnc-viewer/vnc-credentials-prompt/vnc-credentials-prompt.component.d.ts +32 -0
  503. package/remote-access/vnc/vnc-viewer/vnc-credentials-prompt/vnc-credentials-prompt.component.d.ts.map +1 -0
  504. package/remote-access/vnc/vnc-viewer/vnc-viewer.component.d.ts +37 -0
  505. package/remote-access/vnc/vnc-viewer/vnc-viewer.component.d.ts.map +1 -0
  506. package/replace-device/replace-device-wizard/replace-device-wizard.model.d.ts +2 -1
  507. package/replace-device/replace-device-wizard/replace-device-wizard.model.d.ts.map +1 -1
  508. package/report-dashboard/report-dashboard-list.component.d.ts +29 -0
  509. package/report-dashboard/report-dashboard-list.component.d.ts.map +1 -1
  510. package/repository/shared/repository.model.d.ts +2 -1
  511. package/repository/shared/repository.model.d.ts.map +1 -1
  512. package/services/status-options/status-options.model.d.ts +2 -1
  513. package/services/status-options/status-options.model.d.ts.map +1 -1
  514. package/sub-assets/group-info.component.d.ts +2 -1
  515. package/sub-assets/group-info.component.d.ts.map +1 -1
  516. package/tenants/custom-properties/custom-properties.service.d.ts.map +1 -1
  517. package/translation-editor/data/translation-store.service.d.ts.map +1 -1
  518. package/trusted-certificates/list/trusted-certificate-list.component.d.ts +7 -2
  519. package/trusted-certificates/list/trusted-certificate-list.component.d.ts.map +1 -1
  520. package/upgrade/bridge.service.d.ts +5 -0
  521. package/upgrade/bridge.service.d.ts.map +1 -1
  522. package/widgets/implementations/alarms/severity-icon.pipe.d.ts.map +1 -1
  523. package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.d.ts.map +1 -1
  524. package/widgets/implementations/kpi/kpi-widget.model.d.ts +2 -1
  525. package/widgets/implementations/kpi/kpi-widget.model.d.ts.map +1 -1
  526. package/ecosystem/application-plugins/only-latest-plugin-version.pipe.d.ts +0 -10
  527. package/ecosystem/application-plugins/only-latest-plugin-version.pipe.d.ts.map +0 -1
  528. package/esm2022/ecosystem/application-plugins/only-latest-plugin-version.pipe.mjs +0 -20
@@ -12,34 +12,27 @@ import * as i5 from "ngx-bootstrap/popover";
12
12
  export class DatapointAttributesFormComponent {
13
13
  constructor(formValidations) {
14
14
  this.formValidations = formValidations;
15
+ this.selectableChartRenderTypes = [];
16
+ this.selectableChartLineTypes = [];
17
+ this.selectableAxisTypes = [];
15
18
  this.showTarget = true;
16
19
  this.showRange = true;
17
20
  this.showYellowRange = true;
18
21
  this.showRedRange = true;
19
- /**
20
- * Responsible for displaying the chart section in a form.
21
- * Form contains display selector, so if this flag is true
22
- * then the form won't be shown alone (the state of the showDisplay flag won't be taken into account).
23
- */
24
22
  this.showChart = true;
25
- this.showDisplay = false;
26
23
  this.showFormIfTemplateWasSelected = false;
27
24
  this.rawValue = {};
28
- this.CHART_RENDER_TYPES = CHART_RENDER_TYPES;
29
- this.CHART_LINE_TYPES = CHART_LINE_TYPES;
30
- this.AXIS_TYPES = AXIS_TYPES;
25
+ this.CHART_RENDER_TYPES = Array.from(CHART_RENDER_TYPES);
26
+ this.CHART_LINE_TYPES = Array.from(CHART_LINE_TYPES);
27
+ this.AXIS_TYPES = Array.from(AXIS_TYPES);
31
28
  this.customValidationErrorMessages = {};
32
29
  this.shouldForceInitialValidation = true;
33
30
  this.formGroup = this.formValidations.getDefaultFormGroup();
34
31
  this.setSubForms();
35
32
  }
36
33
  ngOnInit() {
37
- /**
38
- * 'showChart' has a higher priority than 'showDisplay' because the display selector is part of the chart section.
39
- */
40
- if (this.showChart && this.showDisplay) {
41
- this.showDisplay = false;
42
- }
34
+ this.initializeFormVisibility();
35
+ this.filterChartTypes();
43
36
  }
44
37
  validate(_control) {
45
38
  if (this.formGroup?.get('series')?.errors?.noPeriods) {
@@ -86,8 +79,36 @@ export class DatapointAttributesFormComponent {
86
79
  this.chart = this.formGroup.get('chart');
87
80
  this.display = this.formGroup.get('display');
88
81
  }
82
+ initializeFormVisibility() {
83
+ this.showChartForm = this.chart && this.showChart;
84
+ const hasLineTypes = !!this.selectableChartLineTypes?.length;
85
+ const hasAxisTypes = !!this.selectableAxisTypes?.length;
86
+ const hasRenderTypes = this.selectableChartRenderTypes?.length > 0 || this.selectableChartRenderTypes === undefined;
87
+ this.showOnlyDisplayForm =
88
+ !this.showChartForm && !hasLineTypes && !hasAxisTypes && hasRenderTypes;
89
+ }
90
+ filterChartTypes() {
91
+ this.filterRenderTypes();
92
+ this.filterLineTypes();
93
+ this.filterAxisTypes();
94
+ }
95
+ filterRenderTypes() {
96
+ if (!!this.selectableChartRenderTypes?.length) {
97
+ this.CHART_RENDER_TYPES = this.CHART_RENDER_TYPES.filter(renderType => this.selectableChartRenderTypes.includes(renderType.val));
98
+ }
99
+ }
100
+ filterLineTypes() {
101
+ if (!!this.selectableChartLineTypes?.length) {
102
+ this.CHART_LINE_TYPES = this.CHART_LINE_TYPES.filter(lineType => this.selectableChartLineTypes.includes(lineType.val));
103
+ }
104
+ }
105
+ filterAxisTypes() {
106
+ if (!!this.selectableAxisTypes?.length) {
107
+ this.AXIS_TYPES = this.AXIS_TYPES.filter(axisType => this.selectableAxisTypes.includes(axisType.val));
108
+ }
109
+ }
89
110
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DatapointAttributesFormComponent, deps: [{ token: i1.DatapointAttributesFormValidationService }], target: i0.ɵɵFactoryTarget.Component }); }
90
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: DatapointAttributesFormComponent, selector: "c8y-datapoint-attributes-form", inputs: { showTarget: "showTarget", showRange: "showRange", showYellowRange: "showYellowRange", showRedRange: "showRedRange", showChart: "showChart", showDisplay: "showDisplay", showFormIfTemplateWasSelected: "showFormIfTemplateWasSelected" }, providers: [
111
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: DatapointAttributesFormComponent, selector: "c8y-datapoint-attributes-form", inputs: { selectableChartRenderTypes: "selectableChartRenderTypes", selectableChartLineTypes: "selectableChartLineTypes", selectableAxisTypes: "selectableAxisTypes", showTarget: "showTarget", showRange: "showRange", showYellowRange: "showYellowRange", showRedRange: "showRedRange", showChart: "showChart", showFormIfTemplateWasSelected: "showFormIfTemplateWasSelected" }, providers: [
91
112
  {
92
113
  provide: NG_VALUE_ACCESSOR,
93
114
  useExisting: forwardRef(() => DatapointAttributesFormComponent),
@@ -98,7 +119,7 @@ export class DatapointAttributesFormComponent {
98
119
  useExisting: forwardRef(() => DatapointAttributesFormComponent),
99
120
  multi: true
100
121
  }
101
- ], ngImport: i0, template: "<div [formGroup]=\"formGroup\">\n <ng-container *ngIf=\"!rawValue?.__template || showFormIfTemplateWasSelected\">\n <fieldset\n class=\"c8y-fieldset\"\n *ngIf=\"formGroup.controls?.label || formGroup.controls?.unit || formGroup.controls?.target\"\n >\n <legend translate>Details</legend>\n <div class=\"row\">\n <div\n class=\"col-md-6\"\n *ngIf=\"formGroup.controls?.label\"\n >\n <c8y-form-group>\n <label translate>Label</label>\n <input\n class=\"form-control\"\n name=\"label\"\n formControlName=\"label\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'Temperature' }\"\n />\n <c8y-messages\n [show]=\"formGroup.controls.label.touched && formGroup.controls.label.errors\"\n >\n <c8y-message\n *ngFor=\"let item of customValidationErrorMessages['label'] | keyvalue\"\n [name]=\"item.key\"\n [text]=\"item.value\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n\n <div\n class=\"col-md-6\"\n *ngIf=\"formGroup.controls?.unit\"\n >\n <c8y-form-group>\n <label translate>Unit</label>\n <input\n class=\"form-control\"\n name=\"unit\"\n formControlName=\"unit\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: '\u00BAC' }\"\n />\n <c8y-messages\n [show]=\"formGroup.controls.unit.touched && formGroup.controls.unit.errors\"\n >\n <c8y-message\n *ngFor=\"let item of customValidationErrorMessages['unit'] | keyvalue\"\n [name]=\"item.key\"\n [text]=\"item.value\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n\n <div\n class=\"col-md-6\"\n *ngIf=\"formGroup.controls?.target && showTarget\"\n >\n <c8y-form-group\n [ngClass]=\"{\n 'has-error':\n (range?.touched || formGroup.controls.target.touched) &&\n formGroup.controls?.target?.errors\n }\"\n >\n <label translate>Target</label>\n <input\n class=\"form-control\"\n name=\"target\"\n type=\"number\"\n formControlName=\"target\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 25 }\"\n />\n <c8y-messages\n [show]=\"\n (range?.touched || formGroup.controls.target.touched) &&\n formGroup.controls.target.errors\n \"\n >\n <c8y-message\n *ngFor=\"let item of customValidationErrorMessages['target'] | keyvalue\"\n [name]=\"item.key\"\n [text]=\"item.value\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n <fieldset\n class=\"c8y-fieldset\"\n *ngIf=\"range && showRange\"\n >\n <legend translate>Range</legend>\n <div\n class=\"row\"\n formGroupName=\"range\"\n >\n <div class=\"col-md-6\">\n <c8y-form-group\n [ngClass]=\"{ 'has-error': range?.touched && range?.controls?.min?.errors }\"\n >\n <label translate>Min</label>\n <input\n class=\"form-control\"\n name=\"min\"\n type=\"number\"\n formControlName=\"min\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 0 }\"\n />\n <c8y-messages [show]=\"range?.touched && range.controls?.min?.errors\"></c8y-messages>\n </c8y-form-group>\n </div>\n <div class=\"col-md-6\">\n <c8y-form-group\n [ngClass]=\"{ 'has-error': range?.touched && range?.controls?.max?.errors }\"\n >\n <label translate>Max</label>\n <input\n class=\"form-control\"\n name=\"max\"\n type=\"number\"\n formControlName=\"max\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 100 }\"\n />\n <c8y-messages [show]=\"range?.touched && range.controls?.max?.errors\">\n <c8y-message\n *ngFor=\"let item of customValidationErrorMessages['max'] | keyvalue\"\n [name]=\"item.key\"\n [text]=\"item.value\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n\n <fieldset\n class=\"c8y-fieldset\"\n formGroupName=\"yellowRange\"\n *ngIf=\"yellowRange && showYellowRange\"\n >\n <legend translate>Yellow range</legend>\n <div class=\"row\">\n <div class=\"col-md-6\">\n <c8y-form-group\n [ngClass]=\"{\n 'has-error':\n (range?.touched || yellowRange?.touched) && yellowRange?.controls?.min?.errors\n }\"\n >\n <label translate>Min</label>\n <input\n class=\"form-control\"\n name=\"min\"\n type=\"number\"\n formControlName=\"min\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 50 }\"\n />\n <c8y-messages\n [show]=\"(range?.touched || yellowRange?.touched) && yellowRange.controls?.min?.errors\"\n ></c8y-messages>\n </c8y-form-group>\n </div>\n\n <div class=\"col-md-6\">\n <c8y-form-group\n [ngClass]=\"{\n 'has-error':\n (range?.touched || yellowRange?.touched) && yellowRange?.controls?.max?.errors\n }\"\n >\n <label translate>Max</label>\n <input\n class=\"form-control\"\n name=\"max\"\n type=\"number\"\n formControlName=\"max\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 75 }\"\n />\n <c8y-messages\n [show]=\"(range?.touched || yellowRange?.touched) && yellowRange.controls?.max?.errors\"\n ></c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n\n <fieldset\n class=\"c8y-fieldset\"\n formGroupName=\"redRange\"\n *ngIf=\"redRange && showRedRange\"\n >\n <legend translate>Red range</legend>\n <div class=\"row\">\n <div class=\"col-md-6\">\n <c8y-form-group\n [ngClass]=\"{\n 'has-error': (range?.touched || redRange?.touched) && redRange?.controls?.min?.errors\n }\"\n >\n <label translate>Min</label>\n <input\n class=\"form-control\"\n name=\"min\"\n type=\"number\"\n formControlName=\"min\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 75 }\"\n />\n <c8y-messages\n [show]=\"(range?.touched || redRange?.touched) && redRange.controls?.min?.errors\"\n ></c8y-messages>\n </c8y-form-group>\n </div>\n\n <div class=\"col-md-6\">\n <c8y-form-group\n [ngClass]=\"{\n 'has-error': (range?.touched || redRange?.touched) && redRange?.controls?.max?.errors\n }\"\n >\n <label translate>Max</label>\n <input\n class=\"form-control\"\n name=\"max\"\n type=\"number\"\n formControlName=\"max\"\n [placeholder]=\"'e.g. {{ example }}' | translate : { example: 100 }\"\n />\n <c8y-messages\n [show]=\"(range?.touched || redRange?.touched) && redRange.controls?.max?.errors\"\n ></c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n </ng-container>\n\n <fieldset\n class=\"c8y-fieldset\"\n *ngIf=\"chart && showChart\"\n formGroupName=\"chart\"\n >\n <legend translate>Chart</legend>\n <div class=\"tight-grid\">\n <div class=\"col-xs-6 col-sm-4\">\n <c8y-form-group>\n <label for=\"display\">\n {{ 'Display' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ 'Value displayed when data is aggregated' | translate }}\"\n triggers=\"focus\"\n type=\"button\"\n [placement]=\"'right'\"\n [container]=\"'body'\"\n ></button>\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n formControlName=\"renderType\"\n >\n <option\n *ngFor=\"let type of CHART_RENDER_TYPES\"\n [ngValue]=\"type.val\"\n >\n {{ type.text | translate }}\n </option>\n </select>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-xs-6 col-sm-4\">\n <c8y-form-group>\n <label\n for=\"chartType\"\n translate\n >\n Chart type\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n formControlName=\"lineType\"\n >\n <option\n *ngFor=\"let type of CHART_LINE_TYPES\"\n [ngValue]=\"type.val\"\n >\n {{ type.text | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-xs-6 col-sm-4\">\n <c8y-form-group>\n <label\n for=\"yAxis\"\n translate\n >\n Y-axis\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n formControlName=\"yAxisType\"\n >\n <option\n *ngFor=\"let type of AXIS_TYPES\"\n [ngValue]=\"type.val\"\n >\n {{ type.text | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n <fieldset\n class=\"c8y-fieldset\"\n *ngIf=\"showDisplay\"\n formGroupName=\"display\"\n >\n <legend translate>Display</legend>\n <div class=\"tight-grid\">\n <div class=\"col-xs-6 col-sm-4\">\n <c8y-form-group>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n formControlName=\"renderType\"\n >\n <option\n *ngFor=\"let type of CHART_RENDER_TYPES\"\n [ngValue]=\"type.val\"\n >\n {{ type.text | translate }}\n </option>\n </select>\n </div>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n</div>\n", dependencies: [{ kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { 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: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { 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.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i2.MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "component", type: i2.MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "directive", type: i2.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i5.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i3.KeyValuePipe, name: "keyvalue" }] }); }
122
+ ], ngImport: i0, template: "<div [formGroup]=\"formGroup\">\n <ng-container *ngIf=\"!rawValue?.__template || showFormIfTemplateWasSelected\">\n <fieldset\n class=\"c8y-fieldset\"\n *ngIf=\"formGroup.controls?.label || formGroup.controls?.unit || formGroup.controls?.target\"\n >\n <legend translate>Details</legend>\n <div class=\"row\">\n <div\n class=\"col-md-6\"\n *ngIf=\"formGroup.controls?.label\"\n >\n <c8y-form-group>\n <label translate>Label</label>\n <input\n class=\"form-control\"\n name=\"label\"\n formControlName=\"label\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'Temperature' }\"\n />\n <c8y-messages\n [show]=\"formGroup.controls.label.touched && formGroup.controls.label.errors\"\n >\n <c8y-message\n *ngFor=\"let item of customValidationErrorMessages['label'] | keyvalue\"\n [name]=\"item.key\"\n [text]=\"item.value\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n\n <div\n class=\"col-md-6\"\n *ngIf=\"formGroup.controls?.unit\"\n >\n <c8y-form-group>\n <label translate>Unit</label>\n <input\n class=\"form-control\"\n name=\"unit\"\n formControlName=\"unit\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: '\u00BAC' }\"\n />\n <c8y-messages\n [show]=\"formGroup.controls.unit.touched && formGroup.controls.unit.errors\"\n >\n <c8y-message\n *ngFor=\"let item of customValidationErrorMessages['unit'] | keyvalue\"\n [name]=\"item.key\"\n [text]=\"item.value\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n\n <div\n class=\"col-md-6\"\n *ngIf=\"formGroup.controls?.target && showTarget\"\n >\n <c8y-form-group\n [ngClass]=\"{\n 'has-error':\n (range?.touched || formGroup.controls.target.touched) &&\n formGroup.controls?.target?.errors\n }\"\n >\n <label translate>Target</label>\n <input\n class=\"form-control\"\n name=\"target\"\n type=\"number\"\n formControlName=\"target\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 25 }\"\n />\n <c8y-messages\n [show]=\"\n (range?.touched || formGroup.controls.target.touched) &&\n formGroup.controls.target.errors\n \"\n >\n <c8y-message\n *ngFor=\"let item of customValidationErrorMessages['target'] | keyvalue\"\n [name]=\"item.key\"\n [text]=\"item.value\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n <fieldset\n class=\"c8y-fieldset\"\n *ngIf=\"range && showRange\"\n >\n <legend translate>Range</legend>\n <div\n class=\"row\"\n formGroupName=\"range\"\n >\n <div class=\"col-md-6\">\n <c8y-form-group\n [ngClass]=\"{ 'has-error': range?.touched && range?.controls?.min?.errors }\"\n >\n <label translate>Min</label>\n <input\n class=\"form-control\"\n name=\"min\"\n type=\"number\"\n formControlName=\"min\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 0 }\"\n />\n <c8y-messages [show]=\"range?.touched && range.controls?.min?.errors\"></c8y-messages>\n </c8y-form-group>\n </div>\n <div class=\"col-md-6\">\n <c8y-form-group\n [ngClass]=\"{ 'has-error': range?.touched && range?.controls?.max?.errors }\"\n >\n <label translate>Max</label>\n <input\n class=\"form-control\"\n name=\"max\"\n type=\"number\"\n formControlName=\"max\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 100 }\"\n />\n <c8y-messages [show]=\"range?.touched && range.controls?.max?.errors\">\n <c8y-message\n *ngFor=\"let item of customValidationErrorMessages['max'] | keyvalue\"\n [name]=\"item.key\"\n [text]=\"item.value\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n\n <fieldset\n class=\"c8y-fieldset\"\n formGroupName=\"yellowRange\"\n *ngIf=\"yellowRange && showYellowRange\"\n >\n <legend translate>Yellow range</legend>\n <div class=\"row\">\n <div class=\"col-md-6\">\n <c8y-form-group\n [ngClass]=\"{\n 'has-error':\n (range?.touched || yellowRange?.touched) && yellowRange?.controls?.min?.errors\n }\"\n >\n <label translate>Min</label>\n <input\n class=\"form-control\"\n name=\"min\"\n type=\"number\"\n formControlName=\"min\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 50 }\"\n />\n <c8y-messages\n [show]=\"(range?.touched || yellowRange?.touched) && yellowRange.controls?.min?.errors\"\n ></c8y-messages>\n </c8y-form-group>\n </div>\n\n <div class=\"col-md-6\">\n <c8y-form-group\n [ngClass]=\"{\n 'has-error':\n (range?.touched || yellowRange?.touched) && yellowRange?.controls?.max?.errors\n }\"\n >\n <label translate>Max</label>\n <input\n class=\"form-control\"\n name=\"max\"\n type=\"number\"\n formControlName=\"max\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 75 }\"\n />\n <c8y-messages\n [show]=\"(range?.touched || yellowRange?.touched) && yellowRange.controls?.max?.errors\"\n ></c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n\n <fieldset\n class=\"c8y-fieldset\"\n formGroupName=\"redRange\"\n *ngIf=\"redRange && showRedRange\"\n >\n <legend translate>Red range</legend>\n <div class=\"row\">\n <div class=\"col-md-6\">\n <c8y-form-group\n [ngClass]=\"{\n 'has-error': (range?.touched || redRange?.touched) && redRange?.controls?.min?.errors\n }\"\n >\n <label translate>Min</label>\n <input\n class=\"form-control\"\n name=\"min\"\n type=\"number\"\n formControlName=\"min\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 75 }\"\n />\n <c8y-messages\n [show]=\"(range?.touched || redRange?.touched) && redRange.controls?.min?.errors\"\n ></c8y-messages>\n </c8y-form-group>\n </div>\n\n <div class=\"col-md-6\">\n <c8y-form-group\n [ngClass]=\"{\n 'has-error': (range?.touched || redRange?.touched) && redRange?.controls?.max?.errors\n }\"\n >\n <label translate>Max</label>\n <input\n class=\"form-control\"\n name=\"max\"\n type=\"number\"\n formControlName=\"max\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 100 }\"\n />\n <c8y-messages\n [show]=\"(range?.touched || redRange?.touched) && redRange.controls?.max?.errors\"\n ></c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n </ng-container>\n\n <fieldset\n class=\"c8y-fieldset\"\n *ngIf=\"showChartForm\"\n formGroupName=\"chart\"\n >\n <legend translate>Chart</legend>\n <div class=\"tight-grid\">\n <div\n class=\"col-xs-6 col-sm-4\"\n *ngIf=\"selectableChartRenderTypes?.length !== 0\"\n >\n <c8y-form-group>\n <ng-container *ngTemplateOutlet=\"displayHelpButton\"></ng-container>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n formControlName=\"renderType\"\n >\n <option\n *ngFor=\"let type of CHART_RENDER_TYPES\"\n [ngValue]=\"type.val\"\n >\n {{ type.text | translate }}\n </option>\n </select>\n </div>\n </c8y-form-group>\n </div>\n <div\n class=\"col-xs-6 col-sm-4\"\n *ngIf=\"selectableChartLineTypes?.length !== 0\"\n >\n <c8y-form-group>\n <label\n for=\"chartType\"\n translate\n >\n Chart type\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n formControlName=\"lineType\"\n >\n <option\n *ngFor=\"let type of CHART_LINE_TYPES\"\n [ngValue]=\"type.val\"\n >\n {{ type.text | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </c8y-form-group>\n </div>\n <div\n class=\"col-xs-6 col-sm-4\"\n *ngIf=\"selectableAxisTypes?.length !== 0\"\n >\n <c8y-form-group>\n <label\n for=\"yAxis\"\n translate\n >\n Y-axis\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n formControlName=\"yAxisType\"\n >\n <option\n *ngFor=\"let type of AXIS_TYPES\"\n [ngValue]=\"type.val\"\n >\n {{ type.text | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n <fieldset\n class=\"c8y-fieldset\"\n *ngIf=\"showOnlyDisplayForm\"\n formGroupName=\"display\"\n >\n <legend>\n <ng-container *ngTemplateOutlet=\"displayHelpButton\"></ng-container>\n </legend>\n <div class=\"tight-grid\">\n <div class=\"col-xs-6 col-sm-4\">\n <c8y-form-group>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n formControlName=\"renderType\"\n >\n <option\n *ngFor=\"let type of CHART_RENDER_TYPES\"\n [ngValue]=\"type.val\"\n >\n {{ type.text | translate }}\n </option>\n </select>\n </div>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n</div>\n\n<ng-template #displayHelpButton>\n <label>\n {{ 'Display' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ 'Value displayed when data is aggregated' | translate }}\"\n triggers=\"focus\"\n type=\"button\"\n [placement]=\"'right'\"\n [container]=\"'body'\"\n ></button>\n </label>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { 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: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { 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.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i2.MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "component", type: i2.MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "directive", type: i2.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i5.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i3.KeyValuePipe, name: "keyvalue" }] }); }
102
123
  }
103
124
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DatapointAttributesFormComponent, decorators: [{
104
125
  type: Component,
@@ -113,8 +134,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
113
134
  useExisting: forwardRef(() => DatapointAttributesFormComponent),
114
135
  multi: true
115
136
  }
116
- ], template: "<div [formGroup]=\"formGroup\">\n <ng-container *ngIf=\"!rawValue?.__template || showFormIfTemplateWasSelected\">\n <fieldset\n class=\"c8y-fieldset\"\n *ngIf=\"formGroup.controls?.label || formGroup.controls?.unit || formGroup.controls?.target\"\n >\n <legend translate>Details</legend>\n <div class=\"row\">\n <div\n class=\"col-md-6\"\n *ngIf=\"formGroup.controls?.label\"\n >\n <c8y-form-group>\n <label translate>Label</label>\n <input\n class=\"form-control\"\n name=\"label\"\n formControlName=\"label\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'Temperature' }\"\n />\n <c8y-messages\n [show]=\"formGroup.controls.label.touched && formGroup.controls.label.errors\"\n >\n <c8y-message\n *ngFor=\"let item of customValidationErrorMessages['label'] | keyvalue\"\n [name]=\"item.key\"\n [text]=\"item.value\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n\n <div\n class=\"col-md-6\"\n *ngIf=\"formGroup.controls?.unit\"\n >\n <c8y-form-group>\n <label translate>Unit</label>\n <input\n class=\"form-control\"\n name=\"unit\"\n formControlName=\"unit\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: '\u00BAC' }\"\n />\n <c8y-messages\n [show]=\"formGroup.controls.unit.touched && formGroup.controls.unit.errors\"\n >\n <c8y-message\n *ngFor=\"let item of customValidationErrorMessages['unit'] | keyvalue\"\n [name]=\"item.key\"\n [text]=\"item.value\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n\n <div\n class=\"col-md-6\"\n *ngIf=\"formGroup.controls?.target && showTarget\"\n >\n <c8y-form-group\n [ngClass]=\"{\n 'has-error':\n (range?.touched || formGroup.controls.target.touched) &&\n formGroup.controls?.target?.errors\n }\"\n >\n <label translate>Target</label>\n <input\n class=\"form-control\"\n name=\"target\"\n type=\"number\"\n formControlName=\"target\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 25 }\"\n />\n <c8y-messages\n [show]=\"\n (range?.touched || formGroup.controls.target.touched) &&\n formGroup.controls.target.errors\n \"\n >\n <c8y-message\n *ngFor=\"let item of customValidationErrorMessages['target'] | keyvalue\"\n [name]=\"item.key\"\n [text]=\"item.value\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n <fieldset\n class=\"c8y-fieldset\"\n *ngIf=\"range && showRange\"\n >\n <legend translate>Range</legend>\n <div\n class=\"row\"\n formGroupName=\"range\"\n >\n <div class=\"col-md-6\">\n <c8y-form-group\n [ngClass]=\"{ 'has-error': range?.touched && range?.controls?.min?.errors }\"\n >\n <label translate>Min</label>\n <input\n class=\"form-control\"\n name=\"min\"\n type=\"number\"\n formControlName=\"min\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 0 }\"\n />\n <c8y-messages [show]=\"range?.touched && range.controls?.min?.errors\"></c8y-messages>\n </c8y-form-group>\n </div>\n <div class=\"col-md-6\">\n <c8y-form-group\n [ngClass]=\"{ 'has-error': range?.touched && range?.controls?.max?.errors }\"\n >\n <label translate>Max</label>\n <input\n class=\"form-control\"\n name=\"max\"\n type=\"number\"\n formControlName=\"max\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 100 }\"\n />\n <c8y-messages [show]=\"range?.touched && range.controls?.max?.errors\">\n <c8y-message\n *ngFor=\"let item of customValidationErrorMessages['max'] | keyvalue\"\n [name]=\"item.key\"\n [text]=\"item.value\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n\n <fieldset\n class=\"c8y-fieldset\"\n formGroupName=\"yellowRange\"\n *ngIf=\"yellowRange && showYellowRange\"\n >\n <legend translate>Yellow range</legend>\n <div class=\"row\">\n <div class=\"col-md-6\">\n <c8y-form-group\n [ngClass]=\"{\n 'has-error':\n (range?.touched || yellowRange?.touched) && yellowRange?.controls?.min?.errors\n }\"\n >\n <label translate>Min</label>\n <input\n class=\"form-control\"\n name=\"min\"\n type=\"number\"\n formControlName=\"min\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 50 }\"\n />\n <c8y-messages\n [show]=\"(range?.touched || yellowRange?.touched) && yellowRange.controls?.min?.errors\"\n ></c8y-messages>\n </c8y-form-group>\n </div>\n\n <div class=\"col-md-6\">\n <c8y-form-group\n [ngClass]=\"{\n 'has-error':\n (range?.touched || yellowRange?.touched) && yellowRange?.controls?.max?.errors\n }\"\n >\n <label translate>Max</label>\n <input\n class=\"form-control\"\n name=\"max\"\n type=\"number\"\n formControlName=\"max\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 75 }\"\n />\n <c8y-messages\n [show]=\"(range?.touched || yellowRange?.touched) && yellowRange.controls?.max?.errors\"\n ></c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n\n <fieldset\n class=\"c8y-fieldset\"\n formGroupName=\"redRange\"\n *ngIf=\"redRange && showRedRange\"\n >\n <legend translate>Red range</legend>\n <div class=\"row\">\n <div class=\"col-md-6\">\n <c8y-form-group\n [ngClass]=\"{\n 'has-error': (range?.touched || redRange?.touched) && redRange?.controls?.min?.errors\n }\"\n >\n <label translate>Min</label>\n <input\n class=\"form-control\"\n name=\"min\"\n type=\"number\"\n formControlName=\"min\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 75 }\"\n />\n <c8y-messages\n [show]=\"(range?.touched || redRange?.touched) && redRange.controls?.min?.errors\"\n ></c8y-messages>\n </c8y-form-group>\n </div>\n\n <div class=\"col-md-6\">\n <c8y-form-group\n [ngClass]=\"{\n 'has-error': (range?.touched || redRange?.touched) && redRange?.controls?.max?.errors\n }\"\n >\n <label translate>Max</label>\n <input\n class=\"form-control\"\n name=\"max\"\n type=\"number\"\n formControlName=\"max\"\n [placeholder]=\"'e.g. {{ example }}' | translate : { example: 100 }\"\n />\n <c8y-messages\n [show]=\"(range?.touched || redRange?.touched) && redRange.controls?.max?.errors\"\n ></c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n </ng-container>\n\n <fieldset\n class=\"c8y-fieldset\"\n *ngIf=\"chart && showChart\"\n formGroupName=\"chart\"\n >\n <legend translate>Chart</legend>\n <div class=\"tight-grid\">\n <div class=\"col-xs-6 col-sm-4\">\n <c8y-form-group>\n <label for=\"display\">\n {{ 'Display' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ 'Value displayed when data is aggregated' | translate }}\"\n triggers=\"focus\"\n type=\"button\"\n [placement]=\"'right'\"\n [container]=\"'body'\"\n ></button>\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n formControlName=\"renderType\"\n >\n <option\n *ngFor=\"let type of CHART_RENDER_TYPES\"\n [ngValue]=\"type.val\"\n >\n {{ type.text | translate }}\n </option>\n </select>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-xs-6 col-sm-4\">\n <c8y-form-group>\n <label\n for=\"chartType\"\n translate\n >\n Chart type\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n formControlName=\"lineType\"\n >\n <option\n *ngFor=\"let type of CHART_LINE_TYPES\"\n [ngValue]=\"type.val\"\n >\n {{ type.text | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-xs-6 col-sm-4\">\n <c8y-form-group>\n <label\n for=\"yAxis\"\n translate\n >\n Y-axis\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n formControlName=\"yAxisType\"\n >\n <option\n *ngFor=\"let type of AXIS_TYPES\"\n [ngValue]=\"type.val\"\n >\n {{ type.text | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n <fieldset\n class=\"c8y-fieldset\"\n *ngIf=\"showDisplay\"\n formGroupName=\"display\"\n >\n <legend translate>Display</legend>\n <div class=\"tight-grid\">\n <div class=\"col-xs-6 col-sm-4\">\n <c8y-form-group>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n formControlName=\"renderType\"\n >\n <option\n *ngFor=\"let type of CHART_RENDER_TYPES\"\n [ngValue]=\"type.val\"\n >\n {{ type.text | translate }}\n </option>\n </select>\n </div>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n</div>\n" }]
117
- }], ctorParameters: () => [{ type: i1.DatapointAttributesFormValidationService }], propDecorators: { showTarget: [{
137
+ ], template: "<div [formGroup]=\"formGroup\">\n <ng-container *ngIf=\"!rawValue?.__template || showFormIfTemplateWasSelected\">\n <fieldset\n class=\"c8y-fieldset\"\n *ngIf=\"formGroup.controls?.label || formGroup.controls?.unit || formGroup.controls?.target\"\n >\n <legend translate>Details</legend>\n <div class=\"row\">\n <div\n class=\"col-md-6\"\n *ngIf=\"formGroup.controls?.label\"\n >\n <c8y-form-group>\n <label translate>Label</label>\n <input\n class=\"form-control\"\n name=\"label\"\n formControlName=\"label\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'Temperature' }\"\n />\n <c8y-messages\n [show]=\"formGroup.controls.label.touched && formGroup.controls.label.errors\"\n >\n <c8y-message\n *ngFor=\"let item of customValidationErrorMessages['label'] | keyvalue\"\n [name]=\"item.key\"\n [text]=\"item.value\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n\n <div\n class=\"col-md-6\"\n *ngIf=\"formGroup.controls?.unit\"\n >\n <c8y-form-group>\n <label translate>Unit</label>\n <input\n class=\"form-control\"\n name=\"unit\"\n formControlName=\"unit\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: '\u00BAC' }\"\n />\n <c8y-messages\n [show]=\"formGroup.controls.unit.touched && formGroup.controls.unit.errors\"\n >\n <c8y-message\n *ngFor=\"let item of customValidationErrorMessages['unit'] | keyvalue\"\n [name]=\"item.key\"\n [text]=\"item.value\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n\n <div\n class=\"col-md-6\"\n *ngIf=\"formGroup.controls?.target && showTarget\"\n >\n <c8y-form-group\n [ngClass]=\"{\n 'has-error':\n (range?.touched || formGroup.controls.target.touched) &&\n formGroup.controls?.target?.errors\n }\"\n >\n <label translate>Target</label>\n <input\n class=\"form-control\"\n name=\"target\"\n type=\"number\"\n formControlName=\"target\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 25 }\"\n />\n <c8y-messages\n [show]=\"\n (range?.touched || formGroup.controls.target.touched) &&\n formGroup.controls.target.errors\n \"\n >\n <c8y-message\n *ngFor=\"let item of customValidationErrorMessages['target'] | keyvalue\"\n [name]=\"item.key\"\n [text]=\"item.value\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n <fieldset\n class=\"c8y-fieldset\"\n *ngIf=\"range && showRange\"\n >\n <legend translate>Range</legend>\n <div\n class=\"row\"\n formGroupName=\"range\"\n >\n <div class=\"col-md-6\">\n <c8y-form-group\n [ngClass]=\"{ 'has-error': range?.touched && range?.controls?.min?.errors }\"\n >\n <label translate>Min</label>\n <input\n class=\"form-control\"\n name=\"min\"\n type=\"number\"\n formControlName=\"min\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 0 }\"\n />\n <c8y-messages [show]=\"range?.touched && range.controls?.min?.errors\"></c8y-messages>\n </c8y-form-group>\n </div>\n <div class=\"col-md-6\">\n <c8y-form-group\n [ngClass]=\"{ 'has-error': range?.touched && range?.controls?.max?.errors }\"\n >\n <label translate>Max</label>\n <input\n class=\"form-control\"\n name=\"max\"\n type=\"number\"\n formControlName=\"max\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 100 }\"\n />\n <c8y-messages [show]=\"range?.touched && range.controls?.max?.errors\">\n <c8y-message\n *ngFor=\"let item of customValidationErrorMessages['max'] | keyvalue\"\n [name]=\"item.key\"\n [text]=\"item.value\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n\n <fieldset\n class=\"c8y-fieldset\"\n formGroupName=\"yellowRange\"\n *ngIf=\"yellowRange && showYellowRange\"\n >\n <legend translate>Yellow range</legend>\n <div class=\"row\">\n <div class=\"col-md-6\">\n <c8y-form-group\n [ngClass]=\"{\n 'has-error':\n (range?.touched || yellowRange?.touched) && yellowRange?.controls?.min?.errors\n }\"\n >\n <label translate>Min</label>\n <input\n class=\"form-control\"\n name=\"min\"\n type=\"number\"\n formControlName=\"min\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 50 }\"\n />\n <c8y-messages\n [show]=\"(range?.touched || yellowRange?.touched) && yellowRange.controls?.min?.errors\"\n ></c8y-messages>\n </c8y-form-group>\n </div>\n\n <div class=\"col-md-6\">\n <c8y-form-group\n [ngClass]=\"{\n 'has-error':\n (range?.touched || yellowRange?.touched) && yellowRange?.controls?.max?.errors\n }\"\n >\n <label translate>Max</label>\n <input\n class=\"form-control\"\n name=\"max\"\n type=\"number\"\n formControlName=\"max\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 75 }\"\n />\n <c8y-messages\n [show]=\"(range?.touched || yellowRange?.touched) && yellowRange.controls?.max?.errors\"\n ></c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n\n <fieldset\n class=\"c8y-fieldset\"\n formGroupName=\"redRange\"\n *ngIf=\"redRange && showRedRange\"\n >\n <legend translate>Red range</legend>\n <div class=\"row\">\n <div class=\"col-md-6\">\n <c8y-form-group\n [ngClass]=\"{\n 'has-error': (range?.touched || redRange?.touched) && redRange?.controls?.min?.errors\n }\"\n >\n <label translate>Min</label>\n <input\n class=\"form-control\"\n name=\"min\"\n type=\"number\"\n formControlName=\"min\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 75 }\"\n />\n <c8y-messages\n [show]=\"(range?.touched || redRange?.touched) && redRange.controls?.min?.errors\"\n ></c8y-messages>\n </c8y-form-group>\n </div>\n\n <div class=\"col-md-6\">\n <c8y-form-group\n [ngClass]=\"{\n 'has-error': (range?.touched || redRange?.touched) && redRange?.controls?.max?.errors\n }\"\n >\n <label translate>Max</label>\n <input\n class=\"form-control\"\n name=\"max\"\n type=\"number\"\n formControlName=\"max\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 100 }\"\n />\n <c8y-messages\n [show]=\"(range?.touched || redRange?.touched) && redRange.controls?.max?.errors\"\n ></c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n </ng-container>\n\n <fieldset\n class=\"c8y-fieldset\"\n *ngIf=\"showChartForm\"\n formGroupName=\"chart\"\n >\n <legend translate>Chart</legend>\n <div class=\"tight-grid\">\n <div\n class=\"col-xs-6 col-sm-4\"\n *ngIf=\"selectableChartRenderTypes?.length !== 0\"\n >\n <c8y-form-group>\n <ng-container *ngTemplateOutlet=\"displayHelpButton\"></ng-container>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n formControlName=\"renderType\"\n >\n <option\n *ngFor=\"let type of CHART_RENDER_TYPES\"\n [ngValue]=\"type.val\"\n >\n {{ type.text | translate }}\n </option>\n </select>\n </div>\n </c8y-form-group>\n </div>\n <div\n class=\"col-xs-6 col-sm-4\"\n *ngIf=\"selectableChartLineTypes?.length !== 0\"\n >\n <c8y-form-group>\n <label\n for=\"chartType\"\n translate\n >\n Chart type\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n formControlName=\"lineType\"\n >\n <option\n *ngFor=\"let type of CHART_LINE_TYPES\"\n [ngValue]=\"type.val\"\n >\n {{ type.text | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </c8y-form-group>\n </div>\n <div\n class=\"col-xs-6 col-sm-4\"\n *ngIf=\"selectableAxisTypes?.length !== 0\"\n >\n <c8y-form-group>\n <label\n for=\"yAxis\"\n translate\n >\n Y-axis\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n formControlName=\"yAxisType\"\n >\n <option\n *ngFor=\"let type of AXIS_TYPES\"\n [ngValue]=\"type.val\"\n >\n {{ type.text | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n <fieldset\n class=\"c8y-fieldset\"\n *ngIf=\"showOnlyDisplayForm\"\n formGroupName=\"display\"\n >\n <legend>\n <ng-container *ngTemplateOutlet=\"displayHelpButton\"></ng-container>\n </legend>\n <div class=\"tight-grid\">\n <div class=\"col-xs-6 col-sm-4\">\n <c8y-form-group>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n formControlName=\"renderType\"\n >\n <option\n *ngFor=\"let type of CHART_RENDER_TYPES\"\n [ngValue]=\"type.val\"\n >\n {{ type.text | translate }}\n </option>\n </select>\n </div>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n</div>\n\n<ng-template #displayHelpButton>\n <label>\n {{ 'Display' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ 'Value displayed when data is aggregated' | translate }}\"\n triggers=\"focus\"\n type=\"button\"\n [placement]=\"'right'\"\n [container]=\"'body'\"\n ></button>\n </label>\n</ng-template>\n" }]
138
+ }], ctorParameters: () => [{ type: i1.DatapointAttributesFormValidationService }], propDecorators: { selectableChartRenderTypes: [{
139
+ type: Input
140
+ }], selectableChartLineTypes: [{
141
+ type: Input
142
+ }], selectableAxisTypes: [{
143
+ type: Input
144
+ }], showTarget: [{
118
145
  type: Input
119
146
  }], showRange: [{
120
147
  type: Input
@@ -124,9 +151,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
124
151
  type: Input
125
152
  }], showChart: [{
126
153
  type: Input
127
- }], showDisplay: [{
128
- type: Input
129
154
  }], showFormIfTemplateWasSelected: [{
130
155
  type: Input
131
156
  }] } });
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50LWF0dHJpYnV0ZXMtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9kYXRhcG9pbnQtc2VsZWN0b3IvZGF0YXBvaW50LWF0dHJpYnV0ZXMtZm9ybS9kYXRhcG9pbnQtYXR0cmlidXRlcy1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2RhdGFwb2ludC1zZWxlY3Rvci9kYXRhcG9pbnQtYXR0cmlidXRlcy1mb3JtL2RhdGFwb2ludC1hdHRyaWJ1dGVzLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFJTCxhQUFhLEVBQ2IsaUJBQWlCLEVBR2xCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsd0NBQXdDLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUMxRyxPQUFPLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7QUFrQmhHLE1BQU0sT0FBTyxnQ0FBZ0M7SUErQjNDLFlBQW9CLGVBQXlEO1FBQXpELG9CQUFlLEdBQWYsZUFBZSxDQUEwQztRQTlCcEUsZUFBVSxHQUFHLElBQUksQ0FBQztRQUNsQixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBQzdCOzs7O1dBSUc7UUFDTSxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLGtDQUE2QixHQUFHLEtBQUssQ0FBQztRQU8vQyxhQUFRLEdBQVEsRUFBRSxDQUFDO1FBQ25C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LEVBQUUsYUFBYTs0QkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsaUNBQWlDLENBQUM7NEJBQy9ELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGOzZHQUdRLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBTUcsU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLDZCQUE2QjtzQkFBckMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgRm9ybUdyb3VwLFxuICBOR19WQUxJREFUT1JTLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IG1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERhdGFwb2ludEF0dHJpYnV0ZXNGb3JtVmFsaWRhdGlvblNlcnZpY2UgfSBmcm9tICcuL2RhdGFwb2ludC1hdHRyaWJ1dGVzLWZvcm0tdmFsaWRhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEFYSVNfVFlQRVMsIENIQVJUX0xJTkVfVFlQRVMsIENIQVJUX1JFTkRFUl9UWVBFUyB9IGZyb20gJy4vZGF0YXBvaW50LWF0dHJpYnV0ZXMubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZGF0YXBvaW50LWF0dHJpYnV0ZXMtZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhcG9pbnQtYXR0cmlidXRlcy1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRhcG9pbnRBdHRyaWJ1dGVzRm9ybUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGFwb2ludEF0dHJpYnV0ZXNGb3JtQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIERhdGFwb2ludEF0dHJpYnV0ZXNGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciwgT25Jbml0IHtcbiAgQElucHV0KCkgc2hvd1RhcmdldCA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dSYW5nZSA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dZZWxsb3dSYW5nZSA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dSZWRSYW5nZSA9IHRydWU7XG4gIC8qKlxuICAgKiBSZXNwb25zaWJsZSBmb3IgZGlzcGxheWluZyB0aGUgY2hhcnQgc2VjdGlvbiBpbiBhIGZvcm0uXG4gICAqIEZvcm0gY29udGFpbnMgZGlzcGxheSBzZWxlY3Rvciwgc28gaWYgdGhpcyBmbGFnIGlzIHRydWVcbiAgICogdGhlbiB0aGUgZm9ybSB3b24ndCBiZSBzaG93biBhbG9uZSAodGhlIHN0YXRlIG9mIHRoZSBzaG93RGlzcGxheSBmbGFnIHdvbid0IGJlIHRha2VuIGludG8gYWNjb3VudCkuXG4gICAqL1xuICBASW5wdXQoKSBzaG93Q2hhcnQgPSB0cnVlO1xuICBASW5wdXQoKSBzaG93RGlzcGxheSA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93Rm9ybUlmVGVtcGxhdGVXYXNTZWxlY3RlZCA9IGZhbHNlO1xuICBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcbiAgcmFuZ2U6IEZvcm1Hcm91cDtcbiAgeWVsbG93UmFuZ2U6IEZvcm1Hcm91cDtcbiAgcmVkUmFuZ2U6IEZvcm1Hcm91cDtcbiAgY2hhcnQ6IEZvcm1Hcm91cDtcbiAgZGlzcGxheTogRm9ybUdyb3VwO1xuICByYXdWYWx1ZTogYW55ID0ge307XG4gIENIQVJUX1JFTkRFUl9UWVBFUyA9IENIQVJUX1JFTkRFUl9UWVBFUztcbiAgQ0hBUlRfTElORV9UWVBFUyA9IENIQVJUX0xJTkVfVFlQRVM7XG4gIEFYSVNfVFlQRVMgPSBBWElTX1RZUEVTO1xuXG4gIGN1c3RvbVZhbGlkYXRpb25FcnJvck1lc3NhZ2VzOiB7XG4gICAgW2Zvcm1GaWVsZDogc3RyaW5nXToge1xuICAgICAgW3ZhbGlkYXRpb25FcnJvcjogc3RyaW5nXTogc3RyaW5nO1xuICAgIH07XG4gIH0gPSB7fTtcbiAgc2hvdWxkRm9yY2VJbml0aWFsVmFsaWRhdGlvbiA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmb3JtVmFsaWRhdGlvbnM6IERhdGFwb2ludEF0dHJpYnV0ZXNGb3JtVmFsaWRhdGlvblNlcnZpY2UpIHtcbiAgICB0aGlzLmZvcm1Hcm91cCA9IHRoaXMuZm9ybVZhbGlkYXRpb25zLmdldERlZmF1bHRGb3JtR3JvdXAoKTtcbiAgICB0aGlzLnNldFN1YkZvcm1zKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvKipcbiAgICAgKiAnc2hvd0NoYXJ0JyBoYXMgYSBoaWdoZXIgcHJpb3JpdHkgdGhhbiAnc2hvd0Rpc3BsYXknIGJlY2F1c2UgdGhlIGRpc3BsYXkgc2VsZWN0b3IgaXMgcGFydCBvZiB0aGUgY2hhcnQgc2VjdGlvbi5cbiAgICAgKi9cbiAgICBpZiAodGhpcy5zaG93Q2hhcnQgJiYgdGhpcy5zaG93RGlzcGxheSkge1xuICAgICAgdGhpcy5zaG93RGlzcGxheSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlKF9jb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHtcbiAgICBpZiAodGhpcy5mb3JtR3JvdXA/LmdldCgnc2VyaWVzJyk/LmVycm9ycz8ubm9QZXJpb2RzKSB7XG4gICAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXA/LmdldCgnc2VyaWVzJyk/LmVycm9ycztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwPy52YWxpZCA/IG51bGwgOiB7IGZvcm1JbnZhbGlkOiB7fSB9O1xuICB9XG5cbiAgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge1xuICAgIHRoaXMucmF3VmFsdWUgPSBvYmogfHwge307XG4gICAgaWYgKG9iaikge1xuICAgICAgdGhpcy5mb3JtR3JvdXAucGF0Y2hWYWx1ZSh0aGlzLmZvcm1WYWxpZGF0aW9ucy5jb252ZXJ0VG9Gb3JtR3JvdXBGb3JtYXQob2JqKSwge1xuICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2hvdWxkRm9yY2VJbml0aWFsVmFsaWRhdGlvbikge1xuICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICB0aGlzLmZvcm1Hcm91cC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuc2hvdWxkRm9yY2VJbml0aWFsVmFsaWRhdGlvbiA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUdyb3VwLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChmb3JtVmFsdWUgPT4gdGhpcy5mb3JtVmFsaWRhdGlvbnMuY29udmVydFRvQmFja2VuZEZvcm1hdChmb3JtVmFsdWUsIHRoaXMuc2hvd0NoYXJ0KSksXG4gICAgICAgIG1hcChmb3JtVmFsdWUgPT4gT2JqZWN0LmFzc2lnbih0aGlzLnJhd1ZhbHVlLCBmb3JtVmFsdWUpKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShmbik7XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5mb3JtR3JvdXAudmFsdWVDaGFuZ2VzLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGZuKTtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmZvcm1Hcm91cD8uZGlzYWJsZWQgPT09IGlzRGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaXNEaXNhYmxlZCA/IHRoaXMuZm9ybUdyb3VwLmRpc2FibGUoKSA6IHRoaXMuZm9ybUdyb3VwLmVuYWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRTdWJGb3JtcygpIHtcbiAgICBpZiAoIXRoaXMuZm9ybUdyb3VwKSB7XG4gICAgICB0aGlzLnJhbmdlID0gdGhpcy55ZWxsb3dSYW5nZSA9IHRoaXMucmVkUmFuZ2UgPSB0aGlzLmNoYXJ0ID0gdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnJhbmdlID0gdGhpcy5mb3JtR3JvdXAuZ2V0KCdyYW5nZScpIGFzIEZvcm1Hcm91cDtcbiAgICB0aGlzLnllbGxvd1JhbmdlID0gdGhpcy5mb3JtR3JvdXAuZ2V0KCd5ZWxsb3dSYW5nZScpIGFzIEZvcm1Hcm91cDtcbiAgICB0aGlzLnJlZFJhbmdlID0gdGhpcy5mb3JtR3JvdXAuZ2V0KCdyZWRSYW5nZScpIGFzIEZvcm1Hcm91cDtcbiAgICB0aGlzLmNoYXJ0ID0gdGhpcy5mb3JtR3JvdXAuZ2V0KCdjaGFydCcpIGFzIEZvcm1Hcm91cDtcbiAgICB0aGlzLmRpc3BsYXkgPSB0aGlzLmZvcm1Hcm91cC5nZXQoJ2Rpc3BsYXknKSBhcyBGb3JtR3JvdXA7XG4gIH1cbn1cbiIsIjxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFyYXdWYWx1ZT8uX190ZW1wbGF0ZSB8fCBzaG93Rm9ybUlmVGVtcGxhdGVXYXNTZWxlY3RlZFwiPlxuICAgIDxmaWVsZHNldFxuICAgICAgY2xhc3M9XCJjOHktZmllbGRzZXRcIlxuICAgICAgKm5nSWY9XCJmb3JtR3JvdXAuY29udHJvbHM/LmxhYmVsIHx8IGZvcm1Hcm91cC5jb250cm9scz8udW5pdCB8fCBmb3JtR3JvdXAuY29udHJvbHM/LnRhcmdldFwiXG4gICAgPlxuICAgICAgPGxlZ2VuZCB0cmFuc2xhdGU+RGV0YWlsczwvbGVnZW5kPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJjb2wtbWQtNlwiXG4gICAgICAgICAgKm5nSWY9XCJmb3JtR3JvdXAuY29udHJvbHM/LmxhYmVsXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+TGFiZWw8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgbmFtZT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibGFiZWxcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2UuZy4ge3sgZXhhbXBsZSB9fScgfCB0cmFuc2xhdGU6IHsgZXhhbXBsZTogJ1RlbXBlcmF0dXJlJyB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8Yzh5LW1lc3NhZ2VzXG4gICAgICAgICAgICAgIFtzaG93XT1cImZvcm1Hcm91cC5jb250cm9scy5sYWJlbC50b3VjaGVkICYmIGZvcm1Hcm91cC5jb250cm9scy5sYWJlbC5lcnJvcnNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8Yzh5LW1lc3NhZ2VcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjdXN0b21WYWxpZGF0aW9uRXJyb3JNZXNzYWdlc1snbGFiZWwnXSB8IGtleXZhbHVlXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJpdGVtLmtleVwiXG4gICAgICAgICAgICAgICAgW3RleHRdPVwiaXRlbS52YWx1ZVwiXG4gICAgICAgICAgICAgID48L2M4eS1tZXNzYWdlPlxuICAgICAgICAgICAgPC9jOHktbWVzc2FnZXM+XG4gICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY29sLW1kLTZcIlxuICAgICAgICAgICpuZ0lmPVwiZm9ybUdyb3VwLmNvbnRyb2xzPy51bml0XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+VW5pdDwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICBuYW1lPVwidW5pdFwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInVuaXRcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2UuZy4ge3sgZXhhbXBsZSB9fScgfCB0cmFuc2xhdGU6IHsgZXhhbXBsZTogJ8K6QycgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGM4eS1tZXNzYWdlc1xuICAgICAgICAgICAgICBbc2hvd109XCJmb3JtR3JvdXAuY29udHJvbHMudW5pdC50b3VjaGVkICYmIGZvcm1Hcm91cC5jb250cm9scy51bml0LmVycm9yc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxjOHktbWVzc2FnZVxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGN1c3RvbVZhbGlkYXRpb25FcnJvck1lc3NhZ2VzWyd1bml0J10gfCBrZXl2YWx1ZVwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwiaXRlbS5rZXlcIlxuICAgICAgICAgICAgICAgIFt0ZXh0XT1cIml0ZW0udmFsdWVcIlxuICAgICAgICAgICAgICA+PC9jOHktbWVzc2FnZT5cbiAgICAgICAgICAgIDwvYzh5LW1lc3NhZ2VzPlxuICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNvbC1tZC02XCJcbiAgICAgICAgICAqbmdJZj1cImZvcm1Hcm91cC5jb250cm9scz8udGFyZ2V0ICYmIHNob3dUYXJnZXRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGM4eS1mb3JtLWdyb3VwXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdoYXMtZXJyb3InOlxuICAgICAgICAgICAgICAgIChyYW5nZT8udG91Y2hlZCB8fCBmb3JtR3JvdXAuY29udHJvbHMudGFyZ2V0LnRvdWNoZWQpICYmXG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwLmNvbnRyb2xzPy50YXJnZXQ/LmVycm9yc1xuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5UYXJnZXQ8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgbmFtZT1cInRhcmdldFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0YXJnZXRcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2UuZy4ge3sgZXhhbXBsZSB9fScgfCB0cmFuc2xhdGU6IHsgZXhhbXBsZTogMjUgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGM4eS1tZXNzYWdlc1xuICAgICAgICAgICAgICBbc2hvd109XCJcbiAgICAgICAgICAgICAgICAocmFuZ2U/LnRvdWNoZWQgfHwgZm9ybUdyb3VwLmNvbnRyb2xzLnRhcmdldC50b3VjaGVkKSAmJlxuICAgICAgICAgICAgICAgIGZvcm1Hcm91cC5jb250cm9scy50YXJnZXQuZXJyb3JzXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxjOHktbWVzc2FnZVxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGN1c3RvbVZhbGlkYXRpb25FcnJvck1lc3NhZ2VzWyd0YXJnZXQnXSB8IGtleXZhbHVlXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJpdGVtLmtleVwiXG4gICAgICAgICAgICAgICAgW3RleHRdPVwiaXRlbS52YWx1ZVwiXG4gICAgICAgICAgICAgID48L2M4eS1tZXNzYWdlPlxuICAgICAgICAgICAgPC9jOHktbWVzc2FnZXM+XG4gICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2ZpZWxkc2V0PlxuICAgIDxmaWVsZHNldFxuICAgICAgY2xhc3M9XCJjOHktZmllbGRzZXRcIlxuICAgICAgKm5nSWY9XCJyYW5nZSAmJiBzaG93UmFuZ2VcIlxuICAgID5cbiAgICAgIDxsZWdlbmQgdHJhbnNsYXRlPlJhbmdlPC9sZWdlbmQ+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicm93XCJcbiAgICAgICAgZm9ybUdyb3VwTmFtZT1cInJhbmdlXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgPGM4eS1mb3JtLWdyb3VwXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdoYXMtZXJyb3InOiByYW5nZT8udG91Y2hlZCAmJiByYW5nZT8uY29udHJvbHM/Lm1pbj8uZXJyb3JzIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+TWluPC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIG5hbWU9XCJtaW5cIlxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWluXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidlLmcuIHt7IGV4YW1wbGUgfX0nIHwgdHJhbnNsYXRlOiB7IGV4YW1wbGU6IDAgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGM4eS1tZXNzYWdlcyBbc2hvd109XCJyYW5nZT8udG91Y2hlZCAmJiByYW5nZS5jb250cm9scz8ubWluPy5lcnJvcnNcIj48L2M4eS1tZXNzYWdlcz5cbiAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgPGM4eS1mb3JtLWdyb3VwXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdoYXMtZXJyb3InOiByYW5nZT8udG91Y2hlZCAmJiByYW5nZT8uY29udHJvbHM/Lm1heD8uZXJyb3JzIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+TWF4PC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIG5hbWU9XCJtYXhcIlxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWF4XCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidlLmcuIHt7IGV4YW1wbGUgfX0nIHwgdHJhbnNsYXRlOiB7IGV4YW1wbGU6IDEwMCB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8Yzh5LW1lc3NhZ2VzIFtzaG93XT1cInJhbmdlPy50b3VjaGVkICYmIHJhbmdlLmNvbnRyb2xzPy5tYXg/LmVycm9yc1wiPlxuICAgICAgICAgICAgICA8Yzh5LW1lc3NhZ2VcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjdXN0b21WYWxpZGF0aW9uRXJyb3JNZXNzYWdlc1snbWF4J10gfCBrZXl2YWx1ZVwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwiaXRlbS5rZXlcIlxuICAgICAgICAgICAgICAgIFt0ZXh0XT1cIml0ZW0udmFsdWVcIlxuICAgICAgICAgICAgICA+PC9jOHktbWVzc2FnZT5cbiAgICAgICAgICAgIDwvYzh5LW1lc3NhZ2VzPlxuICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9maWVsZHNldD5cblxuICAgIDxmaWVsZHNldFxuICAgICAgY2xhc3M9XCJjOHktZmllbGRzZXRcIlxuICAgICAgZm9ybUdyb3VwTmFtZT1cInllbGxvd1JhbmdlXCJcbiAgICAgICpuZ0lmPVwieWVsbG93UmFuZ2UgJiYgc2hvd1llbGxvd1JhbmdlXCJcbiAgICA+XG4gICAgICA8bGVnZW5kIHRyYW5zbGF0ZT5ZZWxsb3cgcmFuZ2U8L2xlZ2VuZD5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgPGM4eS1mb3JtLWdyb3VwXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdoYXMtZXJyb3InOlxuICAgICAgICAgICAgICAgIChyYW5nZT8udG91Y2hlZCB8fCB5ZWxsb3dSYW5nZT8udG91Y2hlZCkgJiYgeWVsbG93UmFuZ2U/LmNvbnRyb2xzPy5taW4/LmVycm9yc1xuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5NaW48L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgbmFtZT1cIm1pblwiXG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtaW5cIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2UuZy4ge3sgZXhhbXBsZSB9fScgfCB0cmFuc2xhdGU6IHsgZXhhbXBsZTogNTAgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGM4eS1tZXNzYWdlc1xuICAgICAgICAgICAgICBbc2hvd109XCIocmFuZ2U/LnRvdWNoZWQgfHwgeWVsbG93UmFuZ2U/LnRvdWNoZWQpICYmIHllbGxvd1JhbmdlLmNvbnRyb2xzPy5taW4/LmVycm9yc1wiXG4gICAgICAgICAgICA+PC9jOHktbWVzc2FnZXM+XG4gICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgPGM4eS1mb3JtLWdyb3VwXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdoYXMtZXJyb3InOlxuICAgICAgICAgICAgICAgIChyYW5nZT8udG91Y2hlZCB8fCB5ZWxsb3dSYW5nZT8udG91Y2hlZCkgJiYgeWVsbG93UmFuZ2U/LmNvbnRyb2xzPy5tYXg/LmVycm9yc1xuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5NYXg8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgbmFtZT1cIm1heFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtYXhcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2UuZy4ge3sgZXhhbXBsZSB9fScgfCB0cmFuc2xhdGU6IHsgZXhhbXBsZTogNzUgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGM4eS1tZXNzYWdlc1xuICAgICAgICAgICAgICBbc2hvd109XCIocmFuZ2U/LnRvdWNoZWQgfHwgeWVsbG93UmFuZ2U/LnRvdWNoZWQpICYmIHllbGxvd1JhbmdlLmNvbnRyb2xzPy5tYXg/LmVycm9yc1wiXG4gICAgICAgICAgICA+PC9jOHktbWVzc2FnZXM+XG4gICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2ZpZWxkc2V0PlxuXG4gICAgPGZpZWxkc2V0XG4gICAgICBjbGFzcz1cImM4eS1maWVsZHNldFwiXG4gICAgICBmb3JtR3JvdXBOYW1lPVwicmVkUmFuZ2VcIlxuICAgICAgKm5nSWY9XCJyZWRSYW5nZSAmJiBzaG93UmVkUmFuZ2VcIlxuICAgID5cbiAgICAgIDxsZWdlbmQgdHJhbnNsYXRlPlJlZCByYW5nZTwvbGVnZW5kPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cbiAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXBcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ2hhcy1lcnJvcic6IChyYW5nZT8udG91Y2hlZCB8fCByZWRSYW5nZT8udG91Y2hlZCkgJiYgcmVkUmFuZ2U/LmNvbnRyb2xzPy5taW4/LmVycm9yc1xuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5NaW48L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgbmFtZT1cIm1pblwiXG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtaW5cIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2UuZy4ge3sgZXhhbXBsZSB9fScgfCB0cmFuc2xhdGU6IHsgZXhhbXBsZTogNzUgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGM4eS1tZXNzYWdlc1xuICAgICAgICAgICAgICBbc2hvd109XCIocmFuZ2U/LnRvdWNoZWQgfHwgcmVkUmFuZ2U/LnRvdWNoZWQpICYmIHJlZFJhbmdlLmNvbnRyb2xzPy5taW4/LmVycm9yc1wiXG4gICAgICAgICAgICA+PC9jOHktbWVzc2FnZXM+XG4gICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgPGM4eS1mb3JtLWdyb3VwXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdoYXMtZXJyb3InOiAocmFuZ2U/LnRvdWNoZWQgfHwgcmVkUmFuZ2U/LnRvdWNoZWQpICYmIHJlZFJhbmdlPy5jb250cm9scz8ubWF4Py5lcnJvcnNcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+TWF4PC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIG5hbWU9XCJtYXhcIlxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWF4XCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidlLmcuIHt7IGV4YW1wbGUgfX0nIHwgdHJhbnNsYXRlIDogeyBleGFtcGxlOiAxMDAgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGM4eS1tZXNzYWdlc1xuICAgICAgICAgICAgICBbc2hvd109XCIocmFuZ2U/LnRvdWNoZWQgfHwgcmVkUmFuZ2U/LnRvdWNoZWQpICYmIHJlZFJhbmdlLmNvbnRyb2xzPy5tYXg/LmVycm9yc1wiXG4gICAgICAgICAgICA+PC9jOHktbWVzc2FnZXM+XG4gICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2ZpZWxkc2V0PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8ZmllbGRzZXRcbiAgICBjbGFzcz1cImM4eS1maWVsZHNldFwiXG4gICAgKm5nSWY9XCJjaGFydCAmJiBzaG93Q2hhcnRcIlxuICAgIGZvcm1Hcm91cE5hbWU9XCJjaGFydFwiXG4gID5cbiAgICA8bGVnZW5kIHRyYW5zbGF0ZT5DaGFydDwvbGVnZW5kPlxuICAgIDxkaXYgY2xhc3M9XCJ0aWdodC1ncmlkXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTYgY29sLXNtLTRcIj5cbiAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJkaXNwbGF5XCI+XG4gICAgICAgICAgICB7eyAnRGlzcGxheScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4taGVscCBidG4taGVscC0tc21cIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidIZWxwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIHBvcG92ZXI9XCJ7eyAnVmFsdWUgZGlzcGxheWVkIHdoZW4gZGF0YSBpcyBhZ2dyZWdhdGVkJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgIHRyaWdnZXJzPVwiZm9jdXNcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgW3BsYWNlbWVudF09XCIncmlnaHQnXCJcbiAgICAgICAgICAgICAgW2NvbnRhaW5lcl09XCInYm9keSdcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImM4eS1zZWxlY3Qtd3JhcHBlclwiPlxuICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInJlbmRlclR5cGVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHR5cGUgb2YgQ0hBUlRfUkVOREVSX1RZUEVTXCJcbiAgICAgICAgICAgICAgICBbbmdWYWx1ZV09XCJ0eXBlLnZhbFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyB0eXBlLnRleHQgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy02IGNvbC1zbS00XCI+XG4gICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGZvcj1cImNoYXJ0VHlwZVwiXG4gICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICA+XG4gICAgICAgICAgICBDaGFydCB0eXBlXG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYzh5LXNlbGVjdC13cmFwcGVyXCI+XG4gICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibGluZVR5cGVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHR5cGUgb2YgQ0hBUlRfTElORV9UWVBFU1wiXG4gICAgICAgICAgICAgICAgW25nVmFsdWVdPVwidHlwZS52YWxcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgdHlwZS50ZXh0IHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtNiBjb2wtc20tNFwiPlxuICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBmb3I9XCJ5QXhpc1wiXG4gICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICA+XG4gICAgICAgICAgICBZLWF4aXNcbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjOHktc2VsZWN0LXdyYXBwZXJcIj5cbiAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ5QXhpc1R5cGVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHR5cGUgb2YgQVhJU19UWVBFU1wiXG4gICAgICAgICAgICAgICAgW25nVmFsdWVdPVwidHlwZS52YWxcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgdHlwZS50ZXh0IHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9maWVsZHNldD5cbiAgPGZpZWxkc2V0XG4gICAgY2xhc3M9XCJjOHktZmllbGRzZXRcIlxuICAgICpuZ0lmPVwic2hvd0Rpc3BsYXlcIlxuICAgIGZvcm1Hcm91cE5hbWU9XCJkaXNwbGF5XCJcbiAgPlxuICAgIDxsZWdlbmQgdHJhbnNsYXRlPkRpc3BsYXk8L2xlZ2VuZD5cbiAgICA8ZGl2IGNsYXNzPVwidGlnaHQtZ3JpZFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy02IGNvbC1zbS00XCI+XG4gICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYzh5LXNlbGVjdC13cmFwcGVyXCI+XG4gICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicmVuZGVyVHlwZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdHlwZSBvZiBDSEFSVF9SRU5ERVJfVFlQRVNcIlxuICAgICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cInR5cGUudmFsXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IHR5cGUudGV4dCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZmllbGRzZXQ+XG48L2Rpdj5cbiJdfQ==
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50LWF0dHJpYnV0ZXMtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9kYXRhcG9pbnQtc2VsZWN0b3IvZGF0YXBvaW50LWF0dHJpYnV0ZXMtZm9ybS9kYXRhcG9pbnQtYXR0cmlidXRlcy1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2RhdGFwb2ludC1zZWxlY3Rvci9kYXRhcG9pbnQtYXR0cmlidXRlcy1mb3JtL2RhdGFwb2ludC1hdHRyaWJ1dGVzLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFJTCxhQUFhLEVBQ2IsaUJBQWlCLEVBR2xCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsd0NBQXdDLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUMxRyxPQUFPLEVBQ0wsVUFBVSxFQUVWLGdCQUFnQixFQUNoQixrQkFBa0IsRUFHbkIsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7OztBQWtCdEMsTUFBTSxPQUFPLGdDQUFnQztJQThCM0MsWUFBb0IsZUFBeUQ7UUFBekQsb0JBQWUsR0FBZixlQUFlLENBQTBDO1FBN0JwRSwrQkFBMEIsR0FBdUIsRUFBRSxDQUFDO1FBQ3BELDZCQUF3QixHQUFxQixFQUFFLENBQUM7UUFDaEQsd0JBQW1CLEdBQWdCLEVBQUUsQ0FBQztRQUN0QyxlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakIsb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFDdkIsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFDcEIsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixrQ0FB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Q0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxnQ0FBZ0MsQ0FBQztnQkFDL0QsS0FBSyxFQUFFLElBQUk7YUFDWjtZQUNEO2dCQUNFLE9BQU8sRUFBRSxhQUFhO2dCQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGdDQUFnQyxDQUFDO2dCQUMvRCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsMEJDbkNILDBwWEFnWEE7OzJGRDNVYSxnQ0FBZ0M7a0JBaEI1QyxTQUFTOytCQUNFLCtCQUErQixhQUU5Qjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxpQ0FBaUMsQ0FBQzs0QkFDL0QsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGlDQUFpQyxDQUFDOzRCQUMvRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjs2R0FHUSwwQkFBMEI7c0JBQWxDLEtBQUs7Z0JBQ0csd0JBQXdCO3NCQUFoQyxLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csNkJBQTZCO3NCQUFyQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBGb3JtR3JvdXAsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3Jcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgbWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRGF0YXBvaW50QXR0cmlidXRlc0Zvcm1WYWxpZGF0aW9uU2VydmljZSB9IGZyb20gJy4vZGF0YXBvaW50LWF0dHJpYnV0ZXMtZm9ybS12YWxpZGF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgQVhJU19UWVBFUyxcbiAgQXhpc1R5cGVzLFxuICBDSEFSVF9MSU5FX1RZUEVTLFxuICBDSEFSVF9SRU5ERVJfVFlQRVMsXG4gIENoYXJ0TGluZVR5cGVzLFxuICBDaGFydFJlbmRlclR5cGVzXG59IGZyb20gJy4vZGF0YXBvaW50LWF0dHJpYnV0ZXMubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZGF0YXBvaW50LWF0dHJpYnV0ZXMtZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhcG9pbnQtYXR0cmlidXRlcy1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRhcG9pbnRBdHRyaWJ1dGVzRm9ybUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGFwb2ludEF0dHJpYnV0ZXNGb3JtQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIERhdGFwb2ludEF0dHJpYnV0ZXNGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciwgT25Jbml0IHtcbiAgQElucHV0KCkgc2VsZWN0YWJsZUNoYXJ0UmVuZGVyVHlwZXM6IENoYXJ0UmVuZGVyVHlwZXNbXSA9IFtdO1xuICBASW5wdXQoKSBzZWxlY3RhYmxlQ2hhcnRMaW5lVHlwZXM6IENoYXJ0TGluZVR5cGVzW10gPSBbXTtcbiAgQElucHV0KCkgc2VsZWN0YWJsZUF4aXNUeXBlczogQXhpc1R5cGVzW10gPSBbXTtcbiAgQElucHV0KCkgc2hvd1RhcmdldCA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dSYW5nZSA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dZZWxsb3dSYW5nZSA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dSZWRSYW5nZSA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dDaGFydCA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dGb3JtSWZUZW1wbGF0ZVdhc1NlbGVjdGVkID0gZmFsc2U7XG4gIGZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICByYW5nZTogRm9ybUdyb3VwO1xuICB5ZWxsb3dSYW5nZTogRm9ybUdyb3VwO1xuICByZWRSYW5nZTogRm9ybUdyb3VwO1xuICBjaGFydDogRm9ybUdyb3VwO1xuICBkaXNwbGF5OiBGb3JtR3JvdXA7XG4gIHJhd1ZhbHVlOiBhbnkgPSB7fTtcbiAgQ0hBUlRfUkVOREVSX1RZUEVTOiBBcnJheTwodHlwZW9mIENIQVJUX1JFTkRFUl9UWVBFUylbbnVtYmVyXT4gPSBBcnJheS5mcm9tKENIQVJUX1JFTkRFUl9UWVBFUyk7XG4gIENIQVJUX0xJTkVfVFlQRVM6IEFycmF5PCh0eXBlb2YgQ0hBUlRfTElORV9UWVBFUylbbnVtYmVyXT4gPSBBcnJheS5mcm9tKENIQVJUX0xJTkVfVFlQRVMpO1xuICBBWElTX1RZUEVTOiBBcnJheTwodHlwZW9mIEFYSVNfVFlQRVMpW251bWJlcl0+ID0gQXJyYXkuZnJvbShBWElTX1RZUEVTKTtcblxuICBjdXN0b21WYWxpZGF0aW9uRXJyb3JNZXNzYWdlczoge1xuICAgIFtmb3JtRmllbGQ6IHN0cmluZ106IHtcbiAgICAgIFt2YWxpZGF0aW9uRXJyb3I6IHN0cmluZ106IHN0cmluZztcbiAgICB9O1xuICB9ID0ge307XG4gIHNob3VsZEZvcmNlSW5pdGlhbFZhbGlkYXRpb24gPSB0cnVlO1xuICBzaG93T25seURpc3BsYXlGb3JtOiBib29sZWFuO1xuICBzaG93Q2hhcnRGb3JtOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZm9ybVZhbGlkYXRpb25zOiBEYXRhcG9pbnRBdHRyaWJ1dGVzRm9ybVZhbGlkYXRpb25TZXJ2aWNlKSB7XG4gICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLmZvcm1WYWxpZGF0aW9ucy5nZXREZWZhdWx0Rm9ybUdyb3VwKCk7XG4gICAgdGhpcy5zZXRTdWJGb3JtcygpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsaXplRm9ybVZpc2liaWxpdHkoKTtcbiAgICB0aGlzLmZpbHRlckNoYXJ0VHlwZXMoKTtcbiAgfVxuXG4gIHZhbGlkYXRlKF9jb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHtcbiAgICBpZiAodGhpcy5mb3JtR3JvdXA/LmdldCgnc2VyaWVzJyk/LmVycm9ycz8ubm9QZXJpb2RzKSB7XG4gICAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXA/LmdldCgnc2VyaWVzJyk/LmVycm9ycztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwPy52YWxpZCA/IG51bGwgOiB7IGZvcm1JbnZhbGlkOiB7fSB9O1xuICB9XG5cbiAgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge1xuICAgIHRoaXMucmF3VmFsdWUgPSBvYmogfHwge307XG4gICAgaWYgKG9iaikge1xuICAgICAgdGhpcy5mb3JtR3JvdXAucGF0Y2hWYWx1ZSh0aGlzLmZvcm1WYWxpZGF0aW9ucy5jb252ZXJ0VG9Gb3JtR3JvdXBGb3JtYXQob2JqKSwge1xuICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2hvdWxkRm9yY2VJbml0aWFsVmFsaWRhdGlvbikge1xuICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICB0aGlzLmZvcm1Hcm91cC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuc2hvdWxkRm9yY2VJbml0aWFsVmFsaWRhdGlvbiA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUdyb3VwLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChmb3JtVmFsdWUgPT4gdGhpcy5mb3JtVmFsaWRhdGlvbnMuY29udmVydFRvQmFja2VuZEZvcm1hdChmb3JtVmFsdWUsIHRoaXMuc2hvd0NoYXJ0KSksXG4gICAgICAgIG1hcChmb3JtVmFsdWUgPT4gT2JqZWN0LmFzc2lnbih0aGlzLnJhd1ZhbHVlLCBmb3JtVmFsdWUpKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShmbik7XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5mb3JtR3JvdXAudmFsdWVDaGFuZ2VzLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGZuKTtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmZvcm1Hcm91cD8uZGlzYWJsZWQgPT09IGlzRGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaXNEaXNhYmxlZCA/IHRoaXMuZm9ybUdyb3VwLmRpc2FibGUoKSA6IHRoaXMuZm9ybUdyb3VwLmVuYWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRTdWJGb3JtcygpIHtcbiAgICBpZiAoIXRoaXMuZm9ybUdyb3VwKSB7XG4gICAgICB0aGlzLnJhbmdlID0gdGhpcy55ZWxsb3dSYW5nZSA9IHRoaXMucmVkUmFuZ2UgPSB0aGlzLmNoYXJ0ID0gdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnJhbmdlID0gdGhpcy5mb3JtR3JvdXAuZ2V0KCdyYW5nZScpIGFzIEZvcm1Hcm91cDtcbiAgICB0aGlzLnllbGxvd1JhbmdlID0gdGhpcy5mb3JtR3JvdXAuZ2V0KCd5ZWxsb3dSYW5nZScpIGFzIEZvcm1Hcm91cDtcbiAgICB0aGlzLnJlZFJhbmdlID0gdGhpcy5mb3JtR3JvdXAuZ2V0KCdyZWRSYW5nZScpIGFzIEZvcm1Hcm91cDtcbiAgICB0aGlzLmNoYXJ0ID0gdGhpcy5mb3JtR3JvdXAuZ2V0KCdjaGFydCcpIGFzIEZvcm1Hcm91cDtcbiAgICB0aGlzLmRpc3BsYXkgPSB0aGlzLmZvcm1Hcm91cC5nZXQoJ2Rpc3BsYXknKSBhcyBGb3JtR3JvdXA7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVGb3JtVmlzaWJpbGl0eSgpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dDaGFydEZvcm0gPSB0aGlzLmNoYXJ0ICYmIHRoaXMuc2hvd0NoYXJ0O1xuXG4gICAgY29uc3QgaGFzTGluZVR5cGVzID0gISF0aGlzLnNlbGVjdGFibGVDaGFydExpbmVUeXBlcz8ubGVuZ3RoO1xuICAgIGNvbnN0IGhhc0F4aXNUeXBlcyA9ICEhdGhpcy5zZWxlY3RhYmxlQXhpc1R5cGVzPy5sZW5ndGg7XG4gICAgY29uc3QgaGFzUmVuZGVyVHlwZXMgPVxuICAgICAgdGhpcy5zZWxlY3RhYmxlQ2hhcnRSZW5kZXJUeXBlcz8ubGVuZ3RoID4gMCB8fCB0aGlzLnNlbGVjdGFibGVDaGFydFJlbmRlclR5cGVzID09PSB1bmRlZmluZWQ7XG5cbiAgICB0aGlzLnNob3dPbmx5RGlzcGxheUZvcm0gPVxuICAgICAgIXRoaXMuc2hvd0NoYXJ0Rm9ybSAmJiAhaGFzTGluZVR5cGVzICYmICFoYXNBeGlzVHlwZXMgJiYgaGFzUmVuZGVyVHlwZXM7XG4gIH1cblxuICBwcml2YXRlIGZpbHRlckNoYXJ0VHlwZXMoKTogdm9pZCB7XG4gICAgdGhpcy5maWx0ZXJSZW5kZXJUeXBlcygpO1xuICAgIHRoaXMuZmlsdGVyTGluZVR5cGVzKCk7XG4gICAgdGhpcy5maWx0ZXJBeGlzVHlwZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyUmVuZGVyVHlwZXMoKTogdm9pZCB7XG4gICAgaWYgKCEhdGhpcy5zZWxlY3RhYmxlQ2hhcnRSZW5kZXJUeXBlcz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLkNIQVJUX1JFTkRFUl9UWVBFUyA9IHRoaXMuQ0hBUlRfUkVOREVSX1RZUEVTLmZpbHRlcihyZW5kZXJUeXBlID0+XG4gICAgICAgIHRoaXMuc2VsZWN0YWJsZUNoYXJ0UmVuZGVyVHlwZXMuaW5jbHVkZXMocmVuZGVyVHlwZS52YWwpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyTGluZVR5cGVzKCk6IHZvaWQge1xuICAgIGlmICghIXRoaXMuc2VsZWN0YWJsZUNoYXJ0TGluZVR5cGVzPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuQ0hBUlRfTElORV9UWVBFUyA9IHRoaXMuQ0hBUlRfTElORV9UWVBFUy5maWx0ZXIobGluZVR5cGUgPT5cbiAgICAgICAgdGhpcy5zZWxlY3RhYmxlQ2hhcnRMaW5lVHlwZXMuaW5jbHVkZXMobGluZVR5cGUudmFsKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZpbHRlckF4aXNUeXBlcygpOiB2b2lkIHtcbiAgICBpZiAoISF0aGlzLnNlbGVjdGFibGVBeGlzVHlwZXM/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5BWElTX1RZUEVTID0gdGhpcy5BWElTX1RZUEVTLmZpbHRlcihheGlzVHlwZSA9PlxuICAgICAgICB0aGlzLnNlbGVjdGFibGVBeGlzVHlwZXMuaW5jbHVkZXMoYXhpc1R5cGUudmFsKVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFyYXdWYWx1ZT8uX190ZW1wbGF0ZSB8fCBzaG93Rm9ybUlmVGVtcGxhdGVXYXNTZWxlY3RlZFwiPlxuICAgIDxmaWVsZHNldFxuICAgICAgY2xhc3M9XCJjOHktZmllbGRzZXRcIlxuICAgICAgKm5nSWY9XCJmb3JtR3JvdXAuY29udHJvbHM/LmxhYmVsIHx8IGZvcm1Hcm91cC5jb250cm9scz8udW5pdCB8fCBmb3JtR3JvdXAuY29udHJvbHM/LnRhcmdldFwiXG4gICAgPlxuICAgICAgPGxlZ2VuZCB0cmFuc2xhdGU+RGV0YWlsczwvbGVnZW5kPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJjb2wtbWQtNlwiXG4gICAgICAgICAgKm5nSWY9XCJmb3JtR3JvdXAuY29udHJvbHM/LmxhYmVsXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+TGFiZWw8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgbmFtZT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibGFiZWxcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2UuZy4ge3sgZXhhbXBsZSB9fScgfCB0cmFuc2xhdGU6IHsgZXhhbXBsZTogJ1RlbXBlcmF0dXJlJyB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8Yzh5LW1lc3NhZ2VzXG4gICAgICAgICAgICAgIFtzaG93XT1cImZvcm1Hcm91cC5jb250cm9scy5sYWJlbC50b3VjaGVkICYmIGZvcm1Hcm91cC5jb250cm9scy5sYWJlbC5lcnJvcnNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8Yzh5LW1lc3NhZ2VcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjdXN0b21WYWxpZGF0aW9uRXJyb3JNZXNzYWdlc1snbGFiZWwnXSB8IGtleXZhbHVlXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJpdGVtLmtleVwiXG4gICAgICAgICAgICAgICAgW3RleHRdPVwiaXRlbS52YWx1ZVwiXG4gICAgICAgICAgICAgID48L2M4eS1tZXNzYWdlPlxuICAgICAgICAgICAgPC9jOHktbWVzc2FnZXM+XG4gICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY29sLW1kLTZcIlxuICAgICAgICAgICpuZ0lmPVwiZm9ybUdyb3VwLmNvbnRyb2xzPy51bml0XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+VW5pdDwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICBuYW1lPVwidW5pdFwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInVuaXRcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2UuZy4ge3sgZXhhbXBsZSB9fScgfCB0cmFuc2xhdGU6IHsgZXhhbXBsZTogJ8K6QycgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGM4eS1tZXNzYWdlc1xuICAgICAgICAgICAgICBbc2hvd109XCJmb3JtR3JvdXAuY29udHJvbHMudW5pdC50b3VjaGVkICYmIGZvcm1Hcm91cC5jb250cm9scy51bml0LmVycm9yc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxjOHktbWVzc2FnZVxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGN1c3RvbVZhbGlkYXRpb25FcnJvck1lc3NhZ2VzWyd1bml0J10gfCBrZXl2YWx1ZVwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwiaXRlbS5rZXlcIlxuICAgICAgICAgICAgICAgIFt0ZXh0XT1cIml0ZW0udmFsdWVcIlxuICAgICAgICAgICAgICA+PC9jOHktbWVzc2FnZT5cbiAgICAgICAgICAgIDwvYzh5LW1lc3NhZ2VzPlxuICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNvbC1tZC02XCJcbiAgICAgICAgICAqbmdJZj1cImZvcm1Hcm91cC5jb250cm9scz8udGFyZ2V0ICYmIHNob3dUYXJnZXRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGM4eS1mb3JtLWdyb3VwXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdoYXMtZXJyb3InOlxuICAgICAgICAgICAgICAgIChyYW5nZT8udG91Y2hlZCB8fCBmb3JtR3JvdXAuY29udHJvbHMudGFyZ2V0LnRvdWNoZWQpICYmXG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwLmNvbnRyb2xzPy50YXJnZXQ/LmVycm9yc1xuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5UYXJnZXQ8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgbmFtZT1cInRhcmdldFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0YXJnZXRcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2UuZy4ge3sgZXhhbXBsZSB9fScgfCB0cmFuc2xhdGU6IHsgZXhhbXBsZTogMjUgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGM4eS1tZXNzYWdlc1xuICAgICAgICAgICAgICBbc2hvd109XCJcbiAgICAgICAgICAgICAgICAocmFuZ2U/LnRvdWNoZWQgfHwgZm9ybUdyb3VwLmNvbnRyb2xzLnRhcmdldC50b3VjaGVkKSAmJlxuICAgICAgICAgICAgICAgIGZvcm1Hcm91cC5jb250cm9scy50YXJnZXQuZXJyb3JzXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxjOHktbWVzc2FnZVxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGN1c3RvbVZhbGlkYXRpb25FcnJvck1lc3NhZ2VzWyd0YXJnZXQnXSB8IGtleXZhbHVlXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJpdGVtLmtleVwiXG4gICAgICAgICAgICAgICAgW3RleHRdPVwiaXRlbS52YWx1ZVwiXG4gICAgICAgICAgICAgID48L2M4eS1tZXNzYWdlPlxuICAgICAgICAgICAgPC9jOHktbWVzc2FnZXM+XG4gICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2ZpZWxkc2V0PlxuICAgIDxmaWVsZHNldFxuICAgICAgY2xhc3M9XCJjOHktZmllbGRzZXRcIlxuICAgICAgKm5nSWY9XCJyYW5nZSAmJiBzaG93UmFuZ2VcIlxuICAgID5cbiAgICAgIDxsZWdlbmQgdHJhbnNsYXRlPlJhbmdlPC9sZWdlbmQ+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicm93XCJcbiAgICAgICAgZm9ybUdyb3VwTmFtZT1cInJhbmdlXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgPGM4eS1mb3JtLWdyb3VwXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdoYXMtZXJyb3InOiByYW5nZT8udG91Y2hlZCAmJiByYW5nZT8uY29udHJvbHM/Lm1pbj8uZXJyb3JzIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+TWluPC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIG5hbWU9XCJtaW5cIlxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWluXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidlLmcuIHt7IGV4YW1wbGUgfX0nIHwgdHJhbnNsYXRlOiB7IGV4YW1wbGU6IDAgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGM4eS1tZXNzYWdlcyBbc2hvd109XCJyYW5nZT8udG91Y2hlZCAmJiByYW5nZS5jb250cm9scz8ubWluPy5lcnJvcnNcIj48L2M4eS1tZXNzYWdlcz5cbiAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgPGM4eS1mb3JtLWdyb3VwXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdoYXMtZXJyb3InOiByYW5nZT8udG91Y2hlZCAmJiByYW5nZT8uY29udHJvbHM/Lm1heD8uZXJyb3JzIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+TWF4PC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIG5hbWU9XCJtYXhcIlxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWF4XCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidlLmcuIHt7IGV4YW1wbGUgfX0nIHwgdHJhbnNsYXRlOiB7IGV4YW1wbGU6IDEwMCB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8Yzh5LW1lc3NhZ2VzIFtzaG93XT1cInJhbmdlPy50b3VjaGVkICYmIHJhbmdlLmNvbnRyb2xzPy5tYXg/LmVycm9yc1wiPlxuICAgICAgICAgICAgICA8Yzh5LW1lc3NhZ2VcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjdXN0b21WYWxpZGF0aW9uRXJyb3JNZXNzYWdlc1snbWF4J10gfCBrZXl2YWx1ZVwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwiaXRlbS5rZXlcIlxuICAgICAgICAgICAgICAgIFt0ZXh0XT1cIml0ZW0udmFsdWVcIlxuICAgICAgICAgICAgICA+PC9jOHktbWVzc2FnZT5cbiAgICAgICAgICAgIDwvYzh5LW1lc3NhZ2VzPlxuICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9maWVsZHNldD5cblxuICAgIDxmaWVsZHNldFxuICAgICAgY2xhc3M9XCJjOHktZmllbGRzZXRcIlxuICAgICAgZm9ybUdyb3VwTmFtZT1cInllbGxvd1JhbmdlXCJcbiAgICAgICpuZ0lmPVwieWVsbG93UmFuZ2UgJiYgc2hvd1llbGxvd1JhbmdlXCJcbiAgICA+XG4gICAgICA8bGVnZW5kIHRyYW5zbGF0ZT5ZZWxsb3cgcmFuZ2U8L2xlZ2VuZD5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgPGM4eS1mb3JtLWdyb3VwXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdoYXMtZXJyb3InOlxuICAgICAgICAgICAgICAgIChyYW5nZT8udG91Y2hlZCB8fCB5ZWxsb3dSYW5nZT8udG91Y2hlZCkgJiYgeWVsbG93UmFuZ2U/LmNvbnRyb2xzPy5taW4/LmVycm9yc1xuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5NaW48L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgbmFtZT1cIm1pblwiXG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtaW5cIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2UuZy4ge3sgZXhhbXBsZSB9fScgfCB0cmFuc2xhdGU6IHsgZXhhbXBsZTogNTAgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGM4eS1tZXNzYWdlc1xuICAgICAgICAgICAgICBbc2hvd109XCIocmFuZ2U/LnRvdWNoZWQgfHwgeWVsbG93UmFuZ2U/LnRvdWNoZWQpICYmIHllbGxvd1JhbmdlLmNvbnRyb2xzPy5taW4/LmVycm9yc1wiXG4gICAgICAgICAgICA+PC9jOHktbWVzc2FnZXM+XG4gICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgPGM4eS1mb3JtLWdyb3VwXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdoYXMtZXJyb3InOlxuICAgICAgICAgICAgICAgIChyYW5nZT8udG91Y2hlZCB8fCB5ZWxsb3dSYW5nZT8udG91Y2hlZCkgJiYgeWVsbG93UmFuZ2U/LmNvbnRyb2xzPy5tYXg/LmVycm9yc1xuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5NYXg8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgbmFtZT1cIm1heFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtYXhcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2UuZy4ge3sgZXhhbXBsZSB9fScgfCB0cmFuc2xhdGU6IHsgZXhhbXBsZTogNzUgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGM4eS1tZXNzYWdlc1xuICAgICAgICAgICAgICBbc2hvd109XCIocmFuZ2U/LnRvdWNoZWQgfHwgeWVsbG93UmFuZ2U/LnRvdWNoZWQpICYmIHllbGxvd1JhbmdlLmNvbnRyb2xzPy5tYXg/LmVycm9yc1wiXG4gICAgICAgICAgICA+PC9jOHktbWVzc2FnZXM+XG4gICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2ZpZWxkc2V0PlxuXG4gICAgPGZpZWxkc2V0XG4gICAgICBjbGFzcz1cImM4eS1maWVsZHNldFwiXG4gICAgICBmb3JtR3JvdXBOYW1lPVwicmVkUmFuZ2VcIlxuICAgICAgKm5nSWY9XCJyZWRSYW5nZSAmJiBzaG93UmVkUmFuZ2VcIlxuICAgID5cbiAgICAgIDxsZWdlbmQgdHJhbnNsYXRlPlJlZCByYW5nZTwvbGVnZW5kPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cbiAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXBcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ2hhcy1lcnJvcic6IChyYW5nZT8udG91Y2hlZCB8fCByZWRSYW5nZT8udG91Y2hlZCkgJiYgcmVkUmFuZ2U/LmNvbnRyb2xzPy5taW4/LmVycm9yc1xuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5NaW48L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgbmFtZT1cIm1pblwiXG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtaW5cIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2UuZy4ge3sgZXhhbXBsZSB9fScgfCB0cmFuc2xhdGU6IHsgZXhhbXBsZTogNzUgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGM4eS1tZXNzYWdlc1xuICAgICAgICAgICAgICBbc2hvd109XCIocmFuZ2U/LnRvdWNoZWQgfHwgcmVkUmFuZ2U/LnRvdWNoZWQpICYmIHJlZFJhbmdlLmNvbnRyb2xzPy5taW4/LmVycm9yc1wiXG4gICAgICAgICAgICA+PC9jOHktbWVzc2FnZXM+XG4gICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgPGM4eS1mb3JtLWdyb3VwXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdoYXMtZXJyb3InOiAocmFuZ2U/LnRvdWNoZWQgfHwgcmVkUmFuZ2U/LnRvdWNoZWQpICYmIHJlZFJhbmdlPy5jb250cm9scz8ubWF4Py5lcnJvcnNcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+TWF4PC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIG5hbWU9XCJtYXhcIlxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWF4XCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidlLmcuIHt7IGV4YW1wbGUgfX0nIHwgdHJhbnNsYXRlOiB7IGV4YW1wbGU6IDEwMCB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8Yzh5LW1lc3NhZ2VzXG4gICAgICAgICAgICAgIFtzaG93XT1cIihyYW5nZT8udG91Y2hlZCB8fCByZWRSYW5nZT8udG91Y2hlZCkgJiYgcmVkUmFuZ2UuY29udHJvbHM/Lm1heD8uZXJyb3JzXCJcbiAgICAgICAgICAgID48L2M4eS1tZXNzYWdlcz5cbiAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZmllbGRzZXQ+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxmaWVsZHNldFxuICAgIGNsYXNzPVwiYzh5LWZpZWxkc2V0XCJcbiAgICAqbmdJZj1cInNob3dDaGFydEZvcm1cIlxuICAgIGZvcm1Hcm91cE5hbWU9XCJjaGFydFwiXG4gID5cbiAgICA8bGVnZW5kIHRyYW5zbGF0ZT5DaGFydDwvbGVnZW5kPlxuICAgIDxkaXYgY2xhc3M9XCJ0aWdodC1ncmlkXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiY29sLXhzLTYgY29sLXNtLTRcIlxuICAgICAgICAqbmdJZj1cInNlbGVjdGFibGVDaGFydFJlbmRlclR5cGVzPy5sZW5ndGggIT09IDBcIlxuICAgICAgPlxuICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRpc3BsYXlIZWxwQnV0dG9uXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImM4eS1zZWxlY3Qtd3JhcHBlclwiPlxuICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInJlbmRlclR5cGVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHR5cGUgb2YgQ0hBUlRfUkVOREVSX1RZUEVTXCJcbiAgICAgICAgICAgICAgICBbbmdWYWx1ZV09XCJ0eXBlLnZhbFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyB0eXBlLnRleHQgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImNvbC14cy02IGNvbC1zbS00XCJcbiAgICAgICAgKm5nSWY9XCJzZWxlY3RhYmxlQ2hhcnRMaW5lVHlwZXM/Lmxlbmd0aCAhPT0gMFwiXG4gICAgICA+XG4gICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGZvcj1cImNoYXJ0VHlwZVwiXG4gICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICA+XG4gICAgICAgICAgICBDaGFydCB0eXBlXG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYzh5LXNlbGVjdC13cmFwcGVyXCI+XG4gICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibGluZVR5cGVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHR5cGUgb2YgQ0hBUlRfTElORV9UWVBFU1wiXG4gICAgICAgICAgICAgICAgW25nVmFsdWVdPVwidHlwZS52YWxcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgdHlwZS50ZXh0IHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJjb2wteHMtNiBjb2wtc20tNFwiXG4gICAgICAgICpuZ0lmPVwic2VsZWN0YWJsZUF4aXNUeXBlcz8ubGVuZ3RoICE9PSAwXCJcbiAgICAgID5cbiAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgZm9yPVwieUF4aXNcIlxuICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgPlxuICAgICAgICAgICAgWS1heGlzXG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYzh5LXNlbGVjdC13cmFwcGVyXCI+XG4gICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwieUF4aXNUeXBlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0eXBlIG9mIEFYSVNfVFlQRVNcIlxuICAgICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cInR5cGUudmFsXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IHR5cGUudGV4dCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZmllbGRzZXQ+XG4gIDxmaWVsZHNldFxuICAgIGNsYXNzPVwiYzh5LWZpZWxkc2V0XCJcbiAgICAqbmdJZj1cInNob3dPbmx5RGlzcGxheUZvcm1cIlxuICAgIGZvcm1Hcm91cE5hbWU9XCJkaXNwbGF5XCJcbiAgPlxuICAgIDxsZWdlbmQ+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGlzcGxheUhlbHBCdXR0b25cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2xlZ2VuZD5cbiAgICA8ZGl2IGNsYXNzPVwidGlnaHQtZ3JpZFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy02IGNvbC1zbS00XCI+XG4gICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYzh5LXNlbGVjdC13cmFwcGVyXCI+XG4gICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicmVuZGVyVHlwZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdHlwZSBvZiBDSEFSVF9SRU5ERVJfVFlQRVNcIlxuICAgICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cInR5cGUudmFsXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IHR5cGUudGV4dCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZmllbGRzZXQ+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNkaXNwbGF5SGVscEJ1dHRvbj5cbiAgPGxhYmVsPlxuICAgIHt7ICdEaXNwbGF5JyB8IHRyYW5zbGF0ZSB9fVxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuLWhlbHAgYnRuLWhlbHAtLXNtXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCJcbiAgICAgIHBvcG92ZXI9XCJ7eyAnVmFsdWUgZGlzcGxheWVkIHdoZW4gZGF0YSBpcyBhZ2dyZWdhdGVkJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW3BsYWNlbWVudF09XCIncmlnaHQnXCJcbiAgICAgIFtjb250YWluZXJdPVwiJ2JvZHknXCJcbiAgICA+PC9idXR0b24+XG4gIDwvbGFiZWw+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -17,4 +17,4 @@ export const CHART_RENDER_TYPES = [
17
17
  { val: 'max', text: gettext('Maximum') },
18
18
  { val: 'area', text: gettext('Minimum and maximum') }
19
19
  ];
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50LWF0dHJpYnV0ZXMubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9kYXRhcG9pbnQtc2VsZWN0b3IvZGF0YXBvaW50LWF0dHJpYnV0ZXMtZm9ybS9kYXRhcG9pbnQtYXR0cmlidXRlcy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFOUMsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO0lBQ3pDLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO0lBQ3RDLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO0NBQ2hDLENBQUM7QUFFWCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRztJQUM5QixFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtJQUN0QyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtJQUMxQyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO0lBQ3ZELEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO0lBQ3RDLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFO0lBQ3BELEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFO0NBQzFDLENBQUM7QUFFWCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRztJQUNoQyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtJQUN4QyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtJQUN4QyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFO0NBQzdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5cbmV4cG9ydCBjb25zdCBBWElTX1RZUEVTID0gW1xuICB7IHZhbDogdW5kZWZpbmVkLCB0ZXh0OiBnZXR0ZXh0KCdBdXRvJykgfSxcbiAgeyB2YWw6ICdsZWZ0JywgdGV4dDogZ2V0dGV4dCgnTGVmdCcpIH0sXG4gIHsgdmFsOiAncmlnaHQnLCB0ZXh0OiBnZXR0ZXh0KCdSaWdodCcpIH1cbl0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBDSEFSVF9MSU5FX1RZUEVTID0gW1xuICB7IHZhbDogJ2xpbmUnLCB0ZXh0OiBnZXR0ZXh0KCdMaW5lJykgfSxcbiAgeyB2YWw6ICdwb2ludHMnLCB0ZXh0OiBnZXR0ZXh0KCdQb2ludHMnKSB9LFxuICB7IHZhbDogJ2xpbmVQb2ludHMnLCB0ZXh0OiBnZXR0ZXh0KCdMaW5lIGFuZCBwb2ludHMnKSB9LFxuICB7IHZhbDogJ2JhcnMnLCB0ZXh0OiBnZXR0ZXh0KCdCYXJzJykgfSxcbiAgeyB2YWw6ICdzdGVwLWJlZm9yZScsIHRleHQ6IGdldHRleHQoJ1N0ZXAgYmVmb3JlJykgfSxcbiAgeyB2YWw6ICdzdGVwLWFmdGVyJywgdGV4dDogZ2V0dGV4dCgnU3RlcCBhZnRlcicpIH1cbl0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBDSEFSVF9SRU5ERVJfVFlQRVMgPSBbXG4gIHsgdmFsOiAnbWluJywgdGV4dDogZ2V0dGV4dCgnTWluaW11bScpIH0sXG4gIHsgdmFsOiAnbWF4JywgdGV4dDogZ2V0dGV4dCgnTWF4aW11bScpIH0sXG4gIHsgdmFsOiAnYXJlYScsIHRleHQ6IGdldHRleHQoJ01pbmltdW0gYW5kIG1heGltdW0nKSB9XG5dIGFzIGNvbnN0O1xuIl19
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50LWF0dHJpYnV0ZXMubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9kYXRhcG9pbnQtc2VsZWN0b3IvZGF0YXBvaW50LWF0dHJpYnV0ZXMtZm9ybS9kYXRhcG9pbnQtYXR0cmlidXRlcy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFOUMsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO0lBQ3pDLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO0lBQ3RDLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO0NBQ2hDLENBQUM7QUFJWCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRztJQUM5QixFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtJQUN0QyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtJQUMxQyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO0lBQ3ZELEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO0lBQ3RDLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFO0lBQ3BELEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFO0NBQzFDLENBQUM7QUFJWCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRztJQUNoQyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtJQUN4QyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtJQUN4QyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFO0NBQzdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5cbmV4cG9ydCBjb25zdCBBWElTX1RZUEVTID0gW1xuICB7IHZhbDogdW5kZWZpbmVkLCB0ZXh0OiBnZXR0ZXh0KCdBdXRvJykgfSxcbiAgeyB2YWw6ICdsZWZ0JywgdGV4dDogZ2V0dGV4dCgnTGVmdCcpIH0sXG4gIHsgdmFsOiAncmlnaHQnLCB0ZXh0OiBnZXR0ZXh0KCdSaWdodCcpIH1cbl0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEF4aXNUeXBlcyA9ICh0eXBlb2YgQVhJU19UWVBFUylbMSB8IDJdWyd2YWwnXTtcblxuZXhwb3J0IGNvbnN0IENIQVJUX0xJTkVfVFlQRVMgPSBbXG4gIHsgdmFsOiAnbGluZScsIHRleHQ6IGdldHRleHQoJ0xpbmUnKSB9LFxuICB7IHZhbDogJ3BvaW50cycsIHRleHQ6IGdldHRleHQoJ1BvaW50cycpIH0sXG4gIHsgdmFsOiAnbGluZVBvaW50cycsIHRleHQ6IGdldHRleHQoJ0xpbmUgYW5kIHBvaW50cycpIH0sXG4gIHsgdmFsOiAnYmFycycsIHRleHQ6IGdldHRleHQoJ0JhcnMnKSB9LFxuICB7IHZhbDogJ3N0ZXAtYmVmb3JlJywgdGV4dDogZ2V0dGV4dCgnU3RlcCBiZWZvcmUnKSB9LFxuICB7IHZhbDogJ3N0ZXAtYWZ0ZXInLCB0ZXh0OiBnZXR0ZXh0KCdTdGVwIGFmdGVyJykgfVxuXSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgQ2hhcnRMaW5lVHlwZXMgPSAodHlwZW9mIENIQVJUX0xJTkVfVFlQRVMpW251bWJlcl1bJ3ZhbCddO1xuXG5leHBvcnQgY29uc3QgQ0hBUlRfUkVOREVSX1RZUEVTID0gW1xuICB7IHZhbDogJ21pbicsIHRleHQ6IGdldHRleHQoJ01pbmltdW0nKSB9LFxuICB7IHZhbDogJ21heCcsIHRleHQ6IGdldHRleHQoJ01heGltdW0nKSB9LFxuICB7IHZhbDogJ2FyZWEnLCB0ZXh0OiBnZXR0ZXh0KCdNaW5pbXVtIGFuZCBtYXhpbXVtJykgfVxuXSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgQ2hhcnRSZW5kZXJUeXBlcyA9ICh0eXBlb2YgQ0hBUlRfUkVOREVSX1RZUEVTKVtudW1iZXJdWyd2YWwnXTtcbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export const DATAPOINT_LIBRARY_FRAGMENT = 'c8y_Kpi';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50LXNlbGVjdGlvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2RhdGFwb2ludC1zZWxlY3Rvci9kYXRhcG9pbnQtc2VsZWN0aW9uLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElJZGVudGlmaWVkLCBJTWFuYWdlZE9iamVjdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IE1pbGxlclZpZXdDb21wb25lbnQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2Fzc2V0cy1uYXZpZ2F0b3InO1xuXG5leHBvcnQgY29uc3QgREFUQVBPSU5UX0xJQlJBUllfRlJBR01FTlQgPSAnYzh5X0twaSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgS1BJRGV0YWlscyB7XG4gIGZyYWdtZW50OiBzdHJpbmc7XG4gIHNlcmllczogc3RyaW5nO1xuICBvcmllbnRhdGlvbj86IHN0cmluZztcbiAgX190YXJnZXQ/OiBJSWRlbnRpZmllZDtcbiAgX19hY3RpdmU/OiBib29sZWFuO1xuICBfX3RlbXBsYXRlPzogc3RyaW5nIHwgbnVtYmVyO1xuICB1bml0Pzogc3RyaW5nO1xuICBtaW4/OiBudW1iZXI7XG4gIGNvbG9yPzogc3RyaW5nO1xuICBtYXg/OiBudW1iZXI7XG4gIGxhYmVsPzogc3RyaW5nO1xuICB0YXJnZXQ/OiBudW1iZXI7XG4gIHllbGxvd1JhbmdlTWF4PzogbnVtYmVyO1xuICB5ZWxsb3dSYW5nZU1pbj86IG51bWJlcjtcbiAgcmVkUmFuZ2VNaW4/OiBudW1iZXI7XG4gIHJlZFJhbmdlTWF4PzogbnVtYmVyO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgcmVuZGVyVHlwZT86IHN0cmluZztcbiAgbGluZVR5cGU/OiBzdHJpbmc7XG4gIHlBeGlzVHlwZT86IHN0cmluZztcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hbmFnZWRPYmplY3RLUEkgZXh0ZW5kcyBJTWFuYWdlZE9iamVjdCB7XG4gIFtEQVRBUE9JTlRfTElCUkFSWV9GUkFHTUVOVF06IEtQSURldGFpbHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXBvaW50QWN0aW9uIHtcbiAgbGFiZWw6IHN0cmluZztcbiAgY2FsbGJhY2s6IChkYXRhcG9pbnQ6IEtQSURldGFpbHMpID0+IHZvaWQ7XG4gIGljb246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhcG9pbnRBdHRyaWJ1dGVzRm9ybUNvbmZpZyB7XG4gIHNob3dUYXJnZXQ6IGJvb2xlYW47XG4gIHNob3dSYW5nZTogYm9vbGVhbjtcbiAgc2hvd1llbGxvd1JhbmdlOiBib29sZWFuO1xuICBzaG93UmVkUmFuZ2U6IGJvb2xlYW47XG4gIHNob3dDaGFydDogYm9vbGVhbjtcbiAgc2hvd0Zvcm1JZlRlbXBsYXRlV2FzU2VsZWN0ZWQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byBzaG93IHRoZSBkaXNwbGF5IHNlbGVjdG9yIGFsb25lIG9yIG5vdC5cbiAgICogJ3Nob3dDaGFydCcgaGFzIGEgaGlnaGVyIHByaW9yaXR5IHRoYW4gJ3Nob3dEaXNwbGF5JyBiZWNhdXNlIHRoZSBkaXNwbGF5IGlzIHBhcnQgb2YgdGhlIGNoYXJ0IHNlY3Rpb24uXG4gICAqIFRoZXJlZm9yZSwgZW5hYmxpbmcgJ3Nob3dEaXNwbGF5JyB3aWxsIGJlIGlnbm9yZWQgaWYgJ3Nob3dDaGFydCcgaXMgc2V0IHRvIHRydWUuXG4gICAqL1xuICBzaG93RGlzcGxheTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgRGF0YXBvaW50U2VsZWN0b3JNb2RhbEFzc2V0U2VsZWN0b3JPcHRpb25zID0gT21pdDxcbiAgTWlsbGVyVmlld0NvbXBvbmVudCxcbiAgfCAnbXVsdGknXG4gIHwgJ3NpbmdsZUNvbHVtbidcbiAgfCAnb25TZWxlY3RlZCdcbiAgfCAnbWlsbGVyVmlld1dyYXBwZXInXG4gIHwgJ2NvbHVtbnMnXG4gIHwgJ25nT25Jbml0J1xuICB8ICduZ09uQ2hhbmdlcydcbiAgfCAnYWRkTmV3Q29sdW1uJ1xuICB8ICdvblNlbGVjdGlvbkNoYW5nZSdcbj47XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50LXNlbGVjdGlvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2RhdGFwb2ludC1zZWxlY3Rvci9kYXRhcG9pbnQtc2VsZWN0aW9uLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElJZGVudGlmaWVkLCBJTWFuYWdlZE9iamVjdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IE1pbGxlclZpZXdDb21wb25lbnQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2Fzc2V0cy1uYXZpZ2F0b3InO1xuaW1wb3J0IHsgU3VwcG9ydGVkSWNvbnNTdWdnZXN0aW9ucyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvaWNvbi1zZWxlY3Rvci9pY29ucyc7XG5pbXBvcnQge1xuICBBeGlzVHlwZXMsXG4gIENoYXJ0TGluZVR5cGVzLFxuICBDaGFydFJlbmRlclR5cGVzXG59IGZyb20gJy4vZGF0YXBvaW50LWF0dHJpYnV0ZXMtZm9ybS9kYXRhcG9pbnQtYXR0cmlidXRlcy5tb2RlbCc7XG5cbmV4cG9ydCBjb25zdCBEQVRBUE9JTlRfTElCUkFSWV9GUkFHTUVOVCA9ICdjOHlfS3BpJztcblxuZXhwb3J0IGludGVyZmFjZSBLUElEZXRhaWxzIHtcbiAgZnJhZ21lbnQ6IHN0cmluZztcbiAgc2VyaWVzOiBzdHJpbmc7XG4gIG9yaWVudGF0aW9uPzogc3RyaW5nO1xuICBfX3RhcmdldD86IElJZGVudGlmaWVkO1xuICBfX2FjdGl2ZT86IGJvb2xlYW47XG4gIF9fdGVtcGxhdGU/OiBzdHJpbmcgfCBudW1iZXI7XG4gIHVuaXQ/OiBzdHJpbmc7XG4gIG1pbj86IG51bWJlcjtcbiAgY29sb3I/OiBzdHJpbmc7XG4gIG1heD86IG51bWJlcjtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIHRhcmdldD86IG51bWJlcjtcbiAgeWVsbG93UmFuZ2VNYXg/OiBudW1iZXI7XG4gIHllbGxvd1JhbmdlTWluPzogbnVtYmVyO1xuICByZWRSYW5nZU1pbj86IG51bWJlcjtcbiAgcmVkUmFuZ2VNYXg/OiBudW1iZXI7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICByZW5kZXJUeXBlPzogc3RyaW5nO1xuICBsaW5lVHlwZT86IHN0cmluZztcbiAgeUF4aXNUeXBlPzogc3RyaW5nO1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFuYWdlZE9iamVjdEtQSSBleHRlbmRzIElNYW5hZ2VkT2JqZWN0IHtcbiAgW0RBVEFQT0lOVF9MSUJSQVJZX0ZSQUdNRU5UXTogS1BJRGV0YWlscztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhcG9pbnRBY3Rpb24ge1xuICBsYWJlbDogc3RyaW5nO1xuICBjYWxsYmFjazogKGRhdGFwb2ludDogS1BJRGV0YWlscykgPT4gdm9pZDtcbiAgaWNvbjogU3VwcG9ydGVkSWNvbnNTdWdnZXN0aW9ucztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhcG9pbnRBdHRyaWJ1dGVzRm9ybUNvbmZpZyB7XG4gIHNob3dUYXJnZXQ6IGJvb2xlYW47XG4gIHNob3dSYW5nZTogYm9vbGVhbjtcbiAgc2hvd1llbGxvd1JhbmdlOiBib29sZWFuO1xuICBzaG93UmVkUmFuZ2U6IGJvb2xlYW47XG4gIHNob3dDaGFydDogYm9vbGVhbjtcbiAgc2hvd0Zvcm1JZlRlbXBsYXRlV2FzU2VsZWN0ZWQ6IGJvb2xlYW47XG4gIHNlbGVjdGFibGVDaGFydFJlbmRlclR5cGVzOiBDaGFydFJlbmRlclR5cGVzW107XG4gIHNlbGVjdGFibGVDaGFydExpbmVUeXBlczogQ2hhcnRMaW5lVHlwZXNbXTtcbiAgc2VsZWN0YWJsZUF4aXNUeXBlczogQXhpc1R5cGVzW107XG59XG5cbmV4cG9ydCB0eXBlIERhdGFwb2ludFNlbGVjdG9yTW9kYWxBc3NldFNlbGVjdG9yT3B0aW9ucyA9IE9taXQ8XG4gIE1pbGxlclZpZXdDb21wb25lbnQsXG4gIHwgJ211bHRpJ1xuICB8ICdzaW5nbGVDb2x1bW4nXG4gIHwgJ29uU2VsZWN0ZWQnXG4gIHwgJ21pbGxlclZpZXdXcmFwcGVyJ1xuICB8ICdjb2x1bW5zJ1xuICB8ICduZ09uSW5pdCdcbiAgfCAnbmdPbkNoYW5nZXMnXG4gIHwgJ2FkZE5ld0NvbHVtbidcbiAgfCAnb25TZWxlY3Rpb25DaGFuZ2UnXG4+O1xuIl19