@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
@@ -101,6 +101,10 @@ export class SelectComponent {
101
101
  * If set to true, the user can select multiple items.
102
102
  */
103
103
  this.multi = false;
104
+ /**
105
+ * If enabled, an item can be selected with the space key.
106
+ */
107
+ this.canSelectWithSpace = !this.multi;
104
108
  /**
105
109
  * If set to true, the select is disabled.
106
110
  */
@@ -154,7 +158,8 @@ export class SelectComponent {
154
158
  this.destroy$ = new Subject();
155
159
  this.selectKeyboardService.options = {
156
160
  emptyInput: true,
157
- keyboardSearch: true
161
+ keyboardSearch: true,
162
+ spaceSelect: this.canSelectWithSpace
158
163
  };
159
164
  }
160
165
  /**
@@ -174,6 +179,9 @@ export class SelectComponent {
174
179
  this.insideClick = this.multi;
175
180
  }
176
181
  }
182
+ /**
183
+ * @ignore
184
+ */
177
185
  ngAfterViewInit() {
178
186
  this.selectKeyboardService
179
187
  .register$(this.searchControl.nativeElement, this.list, this.dropdown)
@@ -186,6 +194,18 @@ export class SelectComponent {
186
194
  }
187
195
  });
188
196
  }
197
+ /**
198
+ * @ignore
199
+ */
200
+ ngOnChanges(changes) {
201
+ if (changes.canSelectWithSpace) {
202
+ this.selectKeyboardService.options = {
203
+ emptyInput: true,
204
+ keyboardSearch: true,
205
+ spaceSelect: changes.canSelectWithSpace.currentValue
206
+ };
207
+ }
208
+ }
189
209
  /**
190
210
  * @ignore
191
211
  */
@@ -199,15 +219,21 @@ export class SelectComponent {
199
219
  * @param item The item to select.
200
220
  */
201
221
  select(item) {
202
- this.onSelect.emit(item);
203
222
  if (this.multi) {
204
- this._selected.indexOf(item) > -1 ? this.deselect(item) : this._selected.push(item);
223
+ const isSelected = this._selected.indexOf(item) > -1;
224
+ if (isSelected) {
225
+ this.deselect(item);
226
+ return;
227
+ }
228
+ this._selected.push(item);
205
229
  this.emitChangeEvent();
230
+ this.onSelect.emit(item);
206
231
  return;
207
232
  }
208
233
  this._selected = [item];
209
234
  this._preselectedItem = item;
210
235
  this.emitChangeEvent();
236
+ this.onSelect.emit(item);
211
237
  }
212
238
  /**
213
239
  * Deselects an item.
@@ -217,8 +243,8 @@ export class SelectComponent {
217
243
  const index = this._selected.indexOf(item);
218
244
  if (index > -1) {
219
245
  this._selected.splice(index, 1);
220
- this.onDeselect.emit(item);
221
246
  this.emitChangeEvent();
247
+ this.onDeselect.emit(item);
222
248
  this._preselectedItem = null;
223
249
  }
224
250
  }
@@ -325,7 +351,7 @@ export class SelectComponent {
325
351
  }
326
352
  }
327
353
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: SelectComponent, deps: [{ token: i1.SelectKeyboardService }], target: i0.ɵɵFactoryTarget.Component }); }
328
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: SelectComponent, selector: "c8y-select", inputs: { placeholder: "placeholder", items: "items", selected: "selected", container: "container", multi: "multi", disabled: "disabled", autoClose: "autoClose", insideClick: "insideClick", required: "required", canDeselect: "canDeselect", name: "name", icon: "icon" }, outputs: { onSelect: "onSelect", onDeselect: "onDeselect", onIconClick: "onIconClick" }, host: { classAttribute: "c8y-select-v2" }, providers: [
354
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: SelectComponent, selector: "c8y-select", inputs: { placeholder: "placeholder", items: "items", selected: "selected", container: "container", multi: "multi", canSelectWithSpace: "canSelectWithSpace", disabled: "disabled", autoClose: "autoClose", insideClick: "insideClick", required: "required", canDeselect: "canDeselect", name: "name", icon: "icon" }, outputs: { onSelect: "onSelect", onDeselect: "onDeselect", onIconClick: "onIconClick" }, host: { classAttribute: "c8y-select-v2" }, providers: [
329
355
  {
330
356
  provide: NG_VALUE_ACCESSOR,
331
357
  multi: true,
@@ -337,7 +363,7 @@ export class SelectComponent {
337
363
  multi: true
338
364
  },
339
365
  SelectKeyboardService
340
- ], queries: [{ propertyName: "projectedSelectedItems", first: true, predicate: SelectedItemsDirective, descendants: true }, { propertyName: "projectedSelectableItems", predicate: SelectItemDirective }], viewQueries: [{ propertyName: "searchControl", first: true, predicate: ["searchControl"], descendants: true }, { propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }, { propertyName: "list", predicate: ListItemComponent, descendants: true }], ngImport: i0, template: "<div\n class=\"c8y-search-dropdown dropdown fit-w\"\n placement=\"bottom left\"\n dropdown\n [container]=\"container\"\n #dropdown=\"bs-dropdown\"\n [autoClose]=\"autoClose\"\n [isDisabled]=\"disabled\"\n [insideClick]=\"insideClick\"\n (onShown)=\"onShown()\"\n (onHidden)=\"onHidden()\"\n dropdownToggle\n (click)=\"open()\"\n>\n <div\n class=\"input-group input-group-dropdown\"\n role=\"button\"\n >\n <div\n class=\"form-control text-truncate\"\n *ngIf=\"true\"\n [ngClass]=\"{\n 'm-r-80': canDeselect && selected.length > 0,\n 'm-r-40': !canDeselect || selected.length === 0,\n 'text-truncate': !multi,\n 'inner-scroll d-flex a-i-center': multi\n }\"\n >\n <!-- rendering of selected items (with content projection) -->\n <div\n class=\"selected-items\"\n *ngIf=\"projectedSelectedItems\"\n >\n <ng-container *ngFor=\"let selectedItem of selected\">\n <ng-container\n *ngTemplateOutlet=\"\n projectedSelectedItems.templateRef;\n context: { $implicit: selectedItem }\n \"\n ></ng-container>\n </ng-container>\n <i\n class=\"text-muted\"\n *ngIf=\"selected.length === 0 && !searchHasFocus && searchControl.value.length === 0\"\n >\n {{ placeholder | translate }}\n </i>\n </div>\n\n <!-- rendering of selected items (default) -->\n <div\n class=\"selected-items\"\n *ngIf=\"!projectedSelectedItems\"\n >\n <span *ngIf=\"!multi\">\n <span *ngIf=\"searchHasFocus && preselectedItem\">\n {{ preselectedItem.label | translate }}\n </span>\n <span *ngIf=\"!searchHasFocus && selected.length === 1\">\n {{ selected[0].label | translate }}\n </span>\n </span>\n <i\n class=\"text-muted\"\n *ngIf=\"selected.length === 0 && !preselectedItem && searchControl.value.length === 0\"\n >\n {{ placeholder | translate }}\n </i>\n <ng-container *ngIf=\"multi\">\n <span class=\"m-r-4\">{{ searchControl.value }}</span>\n <span\n class=\"tag tag--info chip\"\n *ngFor=\"let selectedItem of selected\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10 m-r-4\"\n title=\"{{ selectedItem.label | translate }}\"\n type=\"button\"\n (click)=\"$event.preventDefault(); $event.stopPropagation(); deselect(selectedItem)\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n {{ selectedItem.label | translate }}\n </span>\n </ng-container>\n </div>\n </div>\n \n <input\n class=\"form-control text-truncate\"\n type=\"text\"\n autocomplete=\"off\"\n #searchControl\n [ngClass]=\"{\n 'p-absolute': true,\n 'm-r-80': canDeselect && selected.length > 0,\n 'm-r-40': !canDeselect || selected.length === 0\n }\"\n [required]=\"required\"\n (blur)=\"doBlur()\"\n (focus)=\"doFocus()\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n />\n\n <span class=\"input-group-btn\">\n <!-- this button is displayed only if we have something selected and are allowed to deselect -->\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Deselect' | translate }}\"\n type=\"button\"\n *ngIf=\"canDeselect && selected.length > 0\"\n [disabled]=\"disabled\"\n (click)=\"$event.preventDefault(); $event.stopPropagation(); deselectAll()\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Search' | translate }}\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"onIconClick.emit({ icon, $event })\"\n data-cy=\"select-button\"\n >\n <i\n class=\"text-primary\"\n [c8yIcon]=\"icon\"\n ></i>\n </button>\n </span>\n </div>\n\n <c8y-list-group\n class=\"dropdown-menu dropdown-menu--modal\"\n [style.width]=\"container === 'body' ? searchControl.parentNode.clientWidth + 'px' : undefined\"\n role=\"menu\"\n data-cy=\"select--dropdown-menu\"\n *dropdownMenu\n >\n <!-- rendering of items (default) -->\n <c8y-li\n style=\"cursor: pointer\"\n *ngFor=\"let item of items\"\n [selectable]=\"true\"\n [dense]=\"true\"\n [active]=\"!multi && item.value === selected[0]?.value\"\n (click)=\"select(item)\"\n >\n <span [attr.data-search-label]=\"item.label | translate\"></span>\n <c8y-li-checkbox\n *ngIf=\"multi\"\n [selected]=\"selected.indexOf(item) > -1\"\n (click)=\"$event.preventDefault(); $event.stopPropagation(); select(item)\"\n ></c8y-li-checkbox>\n <c8y-li-body\n *ngIf=\"!item.template\"\n >\n {{ item.label | translate }}\n </c8y-li-body>\n <ng-container\n *ngTemplateOutlet=\"item?.template\"\n ngProjectAs=\"c8y-li-body\"\n ></ng-container>\n </c8y-li>\n <ng-content select=\"div\"></ng-content>\n </c8y-list-group>\n</div>\n", dependencies: [{ kind: "directive", type: i2.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i2.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i2.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i6.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i7.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: i8.ListItemCheckboxComponent, selector: "c8y-list-item-checkbox, c8y-li-checkbox", inputs: ["selected", "indeterminate", "disabled", "displayAsSwitch"], outputs: ["onSelect"] }, { kind: "directive", type: i9.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "pipe", type: i10.C8yTranslatePipe, name: "translate" }] }); }
366
+ ], queries: [{ propertyName: "projectedSelectedItems", first: true, predicate: SelectedItemsDirective, descendants: true }, { propertyName: "projectedSelectableItems", predicate: SelectItemDirective }], viewQueries: [{ propertyName: "searchControl", first: true, predicate: ["searchControl"], descendants: true }, { propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }, { propertyName: "list", predicate: ListItemComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"c8y-search-dropdown dropdown fit-w\"\n placement=\"bottom left\"\n dropdown\n [container]=\"container\"\n #dropdown=\"bs-dropdown\"\n [autoClose]=\"autoClose\"\n [isDisabled]=\"disabled\"\n [insideClick]=\"insideClick\"\n (onShown)=\"onShown()\"\n (onHidden)=\"onHidden()\"\n dropdownToggle\n (click)=\"open()\"\n>\n <div\n class=\"input-group input-group-dropdown\"\n role=\"button\"\n >\n <div\n class=\"form-control text-truncate\"\n *ngIf=\"true\"\n [ngClass]=\"{\n 'm-r-80': canDeselect && selected.length > 0,\n 'm-r-40': !canDeselect || selected.length === 0,\n 'text-truncate': !multi,\n 'inner-scroll d-flex a-i-center': multi\n }\"\n >\n <!-- rendering of selected items (with content projection) -->\n <div\n class=\"selected-items\"\n *ngIf=\"projectedSelectedItems\"\n >\n <ng-container *ngFor=\"let selectedItem of selected\">\n <ng-container\n *ngTemplateOutlet=\"\n projectedSelectedItems.templateRef;\n context: { $implicit: selectedItem }\n \"\n ></ng-container>\n </ng-container>\n <i\n class=\"text-muted\"\n *ngIf=\"selected.length === 0 && !searchHasFocus && searchControl.value.length === 0\"\n >\n {{ placeholder | translate }}\n </i>\n </div>\n\n <!-- rendering of selected items (default) -->\n <div\n class=\"selected-items\"\n *ngIf=\"!projectedSelectedItems\"\n >\n <span *ngIf=\"!multi\">\n <span *ngIf=\"searchHasFocus && preselectedItem\">\n {{ preselectedItem.label | translate }}\n </span>\n <span *ngIf=\"!searchHasFocus && selected.length === 1\">\n {{ selected[0].label | translate }}\n </span>\n </span>\n <i\n class=\"text-muted\"\n *ngIf=\"selected.length === 0 && !preselectedItem && searchControl.value.length === 0\"\n >\n {{ placeholder | translate }}\n </i>\n <ng-container *ngIf=\"multi\">\n <span class=\"m-r-4\">{{ searchControl.value }}</span>\n <span\n class=\"tag tag--info chip\"\n *ngFor=\"let selectedItem of selected\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10 m-r-4\"\n title=\"{{ selectedItem.label | translate }}\"\n type=\"button\"\n (click)=\"$event.preventDefault(); $event.stopPropagation(); deselect(selectedItem)\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n {{ selectedItem.label | translate }}\n </span>\n </ng-container>\n </div>\n </div>\n \n <input\n class=\"form-control text-truncate\"\n type=\"text\"\n autocomplete=\"off\"\n #searchControl\n [ngClass]=\"{\n 'p-absolute': true,\n 'm-r-80': canDeselect && selected.length > 0,\n 'm-r-40': !canDeselect || selected.length === 0\n }\"\n [required]=\"required\"\n (blur)=\"doBlur()\"\n (focus)=\"doFocus()\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n />\n\n <span class=\"input-group-btn\">\n <!-- this button is displayed only if we have something selected and are allowed to deselect -->\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Deselect' | translate }}\"\n type=\"button\"\n *ngIf=\"canDeselect && selected.length > 0\"\n [disabled]=\"disabled\"\n (click)=\"$event.preventDefault(); $event.stopPropagation(); deselectAll()\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Search' | translate }}\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"onIconClick.emit({ icon, $event })\"\n data-cy=\"select-button\"\n >\n <i\n class=\"text-primary\"\n [c8yIcon]=\"icon\"\n ></i>\n </button>\n </span>\n </div>\n\n <c8y-list-group\n class=\"dropdown-menu dropdown-menu--modal\"\n [style.width]=\"container === 'body' ? searchControl.parentNode.clientWidth + 'px' : undefined\"\n role=\"menu\"\n data-cy=\"select--dropdown-menu\"\n *dropdownMenu\n >\n <!-- rendering of items (default) -->\n <c8y-li\n style=\"cursor: pointer\"\n *ngFor=\"let item of items\"\n [selectable]=\"true\"\n [dense]=\"true\"\n [active]=\"!multi && item.value === selected[0]?.value\"\n (click)=\"select(item)\"\n >\n <span [attr.data-search-label]=\"item.label | translate\"></span>\n <c8y-li-checkbox\n *ngIf=\"multi\"\n [selected]=\"selected.indexOf(item) > -1\"\n (click)=\"$event.preventDefault();\"\n ></c8y-li-checkbox>\n <c8y-li-body\n *ngIf=\"!item.template\"\n >\n {{ item.label | translate }}\n </c8y-li-body>\n <ng-container\n *ngTemplateOutlet=\"item?.template\"\n ngProjectAs=\"c8y-li-body\"\n ></ng-container>\n </c8y-li>\n <ng-content select=\"div\"></ng-content>\n </c8y-list-group>\n</div>\n", dependencies: [{ kind: "directive", type: i2.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i2.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i2.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i6.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i7.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: i8.ListItemCheckboxComponent, selector: "c8y-list-item-checkbox, c8y-li-checkbox", inputs: ["selected", "indeterminate", "disabled", "displayAsSwitch"], outputs: ["onSelect"] }, { kind: "directive", type: i9.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "pipe", type: i10.C8yTranslatePipe, name: "translate" }] }); }
341
367
  }
342
368
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: SelectComponent, decorators: [{
343
369
  type: Component,
@@ -353,7 +379,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
353
379
  multi: true
354
380
  },
355
381
  SelectKeyboardService
356
- ], template: "<div\n class=\"c8y-search-dropdown dropdown fit-w\"\n placement=\"bottom left\"\n dropdown\n [container]=\"container\"\n #dropdown=\"bs-dropdown\"\n [autoClose]=\"autoClose\"\n [isDisabled]=\"disabled\"\n [insideClick]=\"insideClick\"\n (onShown)=\"onShown()\"\n (onHidden)=\"onHidden()\"\n dropdownToggle\n (click)=\"open()\"\n>\n <div\n class=\"input-group input-group-dropdown\"\n role=\"button\"\n >\n <div\n class=\"form-control text-truncate\"\n *ngIf=\"true\"\n [ngClass]=\"{\n 'm-r-80': canDeselect && selected.length > 0,\n 'm-r-40': !canDeselect || selected.length === 0,\n 'text-truncate': !multi,\n 'inner-scroll d-flex a-i-center': multi\n }\"\n >\n <!-- rendering of selected items (with content projection) -->\n <div\n class=\"selected-items\"\n *ngIf=\"projectedSelectedItems\"\n >\n <ng-container *ngFor=\"let selectedItem of selected\">\n <ng-container\n *ngTemplateOutlet=\"\n projectedSelectedItems.templateRef;\n context: { $implicit: selectedItem }\n \"\n ></ng-container>\n </ng-container>\n <i\n class=\"text-muted\"\n *ngIf=\"selected.length === 0 && !searchHasFocus && searchControl.value.length === 0\"\n >\n {{ placeholder | translate }}\n </i>\n </div>\n\n <!-- rendering of selected items (default) -->\n <div\n class=\"selected-items\"\n *ngIf=\"!projectedSelectedItems\"\n >\n <span *ngIf=\"!multi\">\n <span *ngIf=\"searchHasFocus && preselectedItem\">\n {{ preselectedItem.label | translate }}\n </span>\n <span *ngIf=\"!searchHasFocus && selected.length === 1\">\n {{ selected[0].label | translate }}\n </span>\n </span>\n <i\n class=\"text-muted\"\n *ngIf=\"selected.length === 0 && !preselectedItem && searchControl.value.length === 0\"\n >\n {{ placeholder | translate }}\n </i>\n <ng-container *ngIf=\"multi\">\n <span class=\"m-r-4\">{{ searchControl.value }}</span>\n <span\n class=\"tag tag--info chip\"\n *ngFor=\"let selectedItem of selected\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10 m-r-4\"\n title=\"{{ selectedItem.label | translate }}\"\n type=\"button\"\n (click)=\"$event.preventDefault(); $event.stopPropagation(); deselect(selectedItem)\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n {{ selectedItem.label | translate }}\n </span>\n </ng-container>\n </div>\n </div>\n \n <input\n class=\"form-control text-truncate\"\n type=\"text\"\n autocomplete=\"off\"\n #searchControl\n [ngClass]=\"{\n 'p-absolute': true,\n 'm-r-80': canDeselect && selected.length > 0,\n 'm-r-40': !canDeselect || selected.length === 0\n }\"\n [required]=\"required\"\n (blur)=\"doBlur()\"\n (focus)=\"doFocus()\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n />\n\n <span class=\"input-group-btn\">\n <!-- this button is displayed only if we have something selected and are allowed to deselect -->\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Deselect' | translate }}\"\n type=\"button\"\n *ngIf=\"canDeselect && selected.length > 0\"\n [disabled]=\"disabled\"\n (click)=\"$event.preventDefault(); $event.stopPropagation(); deselectAll()\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Search' | translate }}\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"onIconClick.emit({ icon, $event })\"\n data-cy=\"select-button\"\n >\n <i\n class=\"text-primary\"\n [c8yIcon]=\"icon\"\n ></i>\n </button>\n </span>\n </div>\n\n <c8y-list-group\n class=\"dropdown-menu dropdown-menu--modal\"\n [style.width]=\"container === 'body' ? searchControl.parentNode.clientWidth + 'px' : undefined\"\n role=\"menu\"\n data-cy=\"select--dropdown-menu\"\n *dropdownMenu\n >\n <!-- rendering of items (default) -->\n <c8y-li\n style=\"cursor: pointer\"\n *ngFor=\"let item of items\"\n [selectable]=\"true\"\n [dense]=\"true\"\n [active]=\"!multi && item.value === selected[0]?.value\"\n (click)=\"select(item)\"\n >\n <span [attr.data-search-label]=\"item.label | translate\"></span>\n <c8y-li-checkbox\n *ngIf=\"multi\"\n [selected]=\"selected.indexOf(item) > -1\"\n (click)=\"$event.preventDefault(); $event.stopPropagation(); select(item)\"\n ></c8y-li-checkbox>\n <c8y-li-body\n *ngIf=\"!item.template\"\n >\n {{ item.label | translate }}\n </c8y-li-body>\n <ng-container\n *ngTemplateOutlet=\"item?.template\"\n ngProjectAs=\"c8y-li-body\"\n ></ng-container>\n </c8y-li>\n <ng-content select=\"div\"></ng-content>\n </c8y-list-group>\n</div>\n" }]
382
+ ], template: "<div\n class=\"c8y-search-dropdown dropdown fit-w\"\n placement=\"bottom left\"\n dropdown\n [container]=\"container\"\n #dropdown=\"bs-dropdown\"\n [autoClose]=\"autoClose\"\n [isDisabled]=\"disabled\"\n [insideClick]=\"insideClick\"\n (onShown)=\"onShown()\"\n (onHidden)=\"onHidden()\"\n dropdownToggle\n (click)=\"open()\"\n>\n <div\n class=\"input-group input-group-dropdown\"\n role=\"button\"\n >\n <div\n class=\"form-control text-truncate\"\n *ngIf=\"true\"\n [ngClass]=\"{\n 'm-r-80': canDeselect && selected.length > 0,\n 'm-r-40': !canDeselect || selected.length === 0,\n 'text-truncate': !multi,\n 'inner-scroll d-flex a-i-center': multi\n }\"\n >\n <!-- rendering of selected items (with content projection) -->\n <div\n class=\"selected-items\"\n *ngIf=\"projectedSelectedItems\"\n >\n <ng-container *ngFor=\"let selectedItem of selected\">\n <ng-container\n *ngTemplateOutlet=\"\n projectedSelectedItems.templateRef;\n context: { $implicit: selectedItem }\n \"\n ></ng-container>\n </ng-container>\n <i\n class=\"text-muted\"\n *ngIf=\"selected.length === 0 && !searchHasFocus && searchControl.value.length === 0\"\n >\n {{ placeholder | translate }}\n </i>\n </div>\n\n <!-- rendering of selected items (default) -->\n <div\n class=\"selected-items\"\n *ngIf=\"!projectedSelectedItems\"\n >\n <span *ngIf=\"!multi\">\n <span *ngIf=\"searchHasFocus && preselectedItem\">\n {{ preselectedItem.label | translate }}\n </span>\n <span *ngIf=\"!searchHasFocus && selected.length === 1\">\n {{ selected[0].label | translate }}\n </span>\n </span>\n <i\n class=\"text-muted\"\n *ngIf=\"selected.length === 0 && !preselectedItem && searchControl.value.length === 0\"\n >\n {{ placeholder | translate }}\n </i>\n <ng-container *ngIf=\"multi\">\n <span class=\"m-r-4\">{{ searchControl.value }}</span>\n <span\n class=\"tag tag--info chip\"\n *ngFor=\"let selectedItem of selected\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10 m-r-4\"\n title=\"{{ selectedItem.label | translate }}\"\n type=\"button\"\n (click)=\"$event.preventDefault(); $event.stopPropagation(); deselect(selectedItem)\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n {{ selectedItem.label | translate }}\n </span>\n </ng-container>\n </div>\n </div>\n \n <input\n class=\"form-control text-truncate\"\n type=\"text\"\n autocomplete=\"off\"\n #searchControl\n [ngClass]=\"{\n 'p-absolute': true,\n 'm-r-80': canDeselect && selected.length > 0,\n 'm-r-40': !canDeselect || selected.length === 0\n }\"\n [required]=\"required\"\n (blur)=\"doBlur()\"\n (focus)=\"doFocus()\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n />\n\n <span class=\"input-group-btn\">\n <!-- this button is displayed only if we have something selected and are allowed to deselect -->\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Deselect' | translate }}\"\n type=\"button\"\n *ngIf=\"canDeselect && selected.length > 0\"\n [disabled]=\"disabled\"\n (click)=\"$event.preventDefault(); $event.stopPropagation(); deselectAll()\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Search' | translate }}\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"onIconClick.emit({ icon, $event })\"\n data-cy=\"select-button\"\n >\n <i\n class=\"text-primary\"\n [c8yIcon]=\"icon\"\n ></i>\n </button>\n </span>\n </div>\n\n <c8y-list-group\n class=\"dropdown-menu dropdown-menu--modal\"\n [style.width]=\"container === 'body' ? searchControl.parentNode.clientWidth + 'px' : undefined\"\n role=\"menu\"\n data-cy=\"select--dropdown-menu\"\n *dropdownMenu\n >\n <!-- rendering of items (default) -->\n <c8y-li\n style=\"cursor: pointer\"\n *ngFor=\"let item of items\"\n [selectable]=\"true\"\n [dense]=\"true\"\n [active]=\"!multi && item.value === selected[0]?.value\"\n (click)=\"select(item)\"\n >\n <span [attr.data-search-label]=\"item.label | translate\"></span>\n <c8y-li-checkbox\n *ngIf=\"multi\"\n [selected]=\"selected.indexOf(item) > -1\"\n (click)=\"$event.preventDefault();\"\n ></c8y-li-checkbox>\n <c8y-li-body\n *ngIf=\"!item.template\"\n >\n {{ item.label | translate }}\n </c8y-li-body>\n <ng-container\n *ngTemplateOutlet=\"item?.template\"\n ngProjectAs=\"c8y-li-body\"\n ></ng-container>\n </c8y-li>\n <ng-content select=\"div\"></ng-content>\n </c8y-list-group>\n</div>\n" }]
357
383
  }], ctorParameters: () => [{ type: i1.SelectKeyboardService }], propDecorators: { placeholder: [{
358
384
  type: Input
359
385
  }], items: [{
@@ -364,6 +390,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
364
390
  type: Input
365
391
  }], multi: [{
366
392
  type: Input
393
+ }], canSelectWithSpace: [{
394
+ type: Input
367
395
  }], disabled: [{
368
396
  type: Input
369
397
  }], autoClose: [{
@@ -400,4 +428,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
400
428
  type: ViewChildren,
401
429
  args: [ListItemComponent]
402
430
  }] } });
403
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLGFBQWEsRUFDYixpQkFBaUIsRUFHbEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVsRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBb0JwRSxNQUFNLE9BQU8sZUFBZTtJQVExQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F1Qkc7SUFDSCxJQUFhLEtBQUssQ0FBQyxLQUE2RDtRQUM5RSxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDN0IsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDN0IsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxD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O3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuLFxuICBmb3J3YXJkUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCc0Ryb3Bkb3duRGlyZWN0aXZlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9kcm9wZG93bic7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMaXN0SXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL2xpc3QtZ3JvdXAnO1xuaW1wb3J0IHsgU2VsZWN0SXRlbURpcmVjdGl2ZSB9IGZyb20gJy4vc2VsZWN0LWl0ZW0uZGlyZWN0aXZlJztcbmltcG9ydCB7IFNlbGVjdEtleWJvYXJkU2VydmljZSB9IGZyb20gJy4vc2VsZWN0LWtleWJvYXJkLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VsZWN0YWJsZUl0ZW0sIFNlbGVjdGFibGVJdGVtVGVtcGxhdGUgfSBmcm9tICcuL3NlbGVjdC5tb2RlbCc7XG5pbXBvcnQgeyBTZWxlY3RlZEl0ZW1zRGlyZWN0aXZlIH0gZnJvbSAnLi9zZWxlY3RlZC1pdGVtcy5kaXJlY3RpdmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIGhvc3Q6IHsgY2xhc3M6ICdjOHktc2VsZWN0LXYyJyB9LFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2VsZWN0Q29tcG9uZW50KVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNlbGVjdENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH0sXG4gICAgU2VsZWN0S2V5Ym9hcmRTZXJ2aWNlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0Q29tcG9uZW50XG4gIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yXG57XG4gIC8qKlxuICAgKiBQbGFjZWhvbGRlciB0ZXh0IHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgc2VsZWN0LlxuICAgKi9cbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnU2VsZWN0IGl0ZW3igKYnO1xuXG4gIC8qKlxuICAgKiBJdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHNlbGVjdC5cbiAgICogQ2FuIGJlIGFuIGFycmF5IG9mIHN0cmluZ3Mgb3IgYW4gYXJyYXkgb2Ygb2JqZWN0cyB3aXRoIGBsYWJlbGAgYW5kIGB2YWx1ZWAgcHJvcGVydGllcy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgaHRtbFxuICAgKiA8Yzh5LXNlbGVjdCBbaXRlbXNdPVwiW3sgbGFiZWw6ICdJdGVtIDEnLCB2YWx1ZTogJ2l0ZW0xJyB9LCB7IGxhYmVsOiAnSXRlbSAyJywgdmFsdWU6ICdpdGVtMicgfV1cIj48L2M4eS1zZWxlY3Q+XG4gICAqIGBgYFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGBodG1sXG4gICAqIDxjOHktc2VsZWN0IFtpdGVtc109XCJbJ0l0ZW0gMScsICdJdGVtIDInLCAnSXRlbSAzJ11cIj48L2M4eS1zZWxlY3Q+XG4gICAqIGBgYFxuICAgKlxuICAgKiBGb3IgbW9yZSBjb21wbGV4IHNjZW5hcmlvcywgeW91IGNhbiB1c2UgY29udGVudC1wcm9qZWN0aW9uOlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGBodG1sXG4gICAqIDxjOHktc2VsZWN0PlxuICAgKiAgICA8aSBbYzh5SWNvbl09XCIncm9ja2V0J1wiIGNsYXNzPVwidGV4dC0xNlwiICpjOHlTZWxlY3RJdGVtPVwiJ3JvY2tldCc7IGxhYmVsOiAnUm9ja2V0J1wiPjwvaT5cbiAgICogICAgPGkgW2M4eUljb25dPVwiJ2NhcidcIiBjbGFzcz1cInRleHQtMTZcIiAqYzh5U2VsZWN0SXRlbT1cIidjYXInOyBsYWJlbDogJ0NhcidcIj48L2k+XG4gICAqIDwvYzh5LXNlbGVjdD5cbiAgICogYGBgXG4gICAqL1xuICBASW5wdXQoKSBzZXQgaXRlbXModmFsdWU6IHN0cmluZ1tdIHwgU2VsZWN0YWJsZUl0ZW1bXSB8IFNlbGVjdGFibGVJdGVtVGVtcGxhdGVbXSkge1xuICAgIHRoaXMuX2l0ZW1zID0gdmFsdWUubWFwKGl0ZW0gPT4ge1xuICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4geyBsYWJlbDogaXRlbSwgdmFsdWU6IGl0ZW0gfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHNlbGVjdC5cbiAgICovXG4gIGdldCBpdGVtcygpOiBTZWxlY3RhYmxlSXRlbVRlbXBsYXRlW10ge1xuICAgIHJldHVybiB0aGlzLl9pdGVtcztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgc2VsZWN0ZWQgaXRlbS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBzZWxlY3RlZCh2YWx1ZTogc3RyaW5nIHwgU2VsZWN0YWJsZUl0ZW0gfCBBcnJheTxzdHJpbmcgfCBTZWxlY3RhYmxlSXRlbT4pIHtcbiAgICBjb25zdCBlbnN1cmVkQXJyYXk6IChzdHJpbmcgfCBTZWxlY3RhYmxlSXRlbSlbXSA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRBcnJheSA9IGVuc3VyZWRBcnJheS5tYXAoaXRlbSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiB7IGxhYmVsOiBpdGVtLCB2YWx1ZTogaXRlbSB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfSk7XG4gICAgdGhpcy5fc2VsZWN0ZWQgPSBub3JtYWxpemVkQXJyYXkubWFwKGl0ZW0gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zLmZpbmQoaSA9PiBpLnZhbHVlID09PSBpdGVtLnZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBzZWxlY3RlZCBpdGVtLlxuICAgKi9cbiAgZ2V0IHNlbGVjdGVkKCk6IFNlbGVjdGFibGVJdGVtW10ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgY29udGFpbmVyIHRvIHB1dCB0aGUgZHJvcGRvd24gdG8uIERlZmF1bHRzIHRvIGJvZHkuXG4gICAqL1xuICBASW5wdXQoKVxuICBjb250YWluZXI6ICcnIHwgJ2JvZHknID0gJ2JvZHknO1xuXG4gIC8qKlxuICAgKiBJZiBzZXQgdG8gdHJ1ZSwgdGhlIHVzZXIgY2FuIHNlbGVjdCBtdWx0aXBsZSBpdGVtcy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIG11bHRpID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIElmIHNldCB0byB0cnVlLCB0aGUgc2VsZWN0IGlzIGRpc2FibGVkLlxuICAgKi9cbiAgQElucHV0KClcbiAgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogRGVmaW5lcywgaWYgdGhlIGRyb3Bkb3duIHNob3VsZCBjbG9zZSBhdXRvbWF0aWNhbGx5IGFmdGVyIHVzZXIgaW50ZXJhY3Rpb24uXG4gICAqL1xuICBASW5wdXQoKVxuICBhdXRvQ2xvc2UgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGlmIHRoZSBkcm9wZG93biBzaG91bGQgc3RheSBvcGVuIHdoZW4gdGhlIHVzZXIgY2xpY2tzIGluc2lkZSB0aGUgc2VsZWN0LlxuICAgKiBJZiBzZXQgdG8gdHJ1ZSwgdGhlIGRyb3Bkb3duIHdpbGwgb25seSBjbG9zZSB3aGVuIHRoZSB1c2VyIGNsaWNrcyBvdXRzaWRlIHRoZSBzZWxlY3QuXG4gICAqL1xuICBASW5wdXQoKVxuICBpbnNpZGVDbGljazogYm9vbGVhbjtcblxuICAvKipcbiAgICogTWFya3MgdGhlIHNlbGVjdCBhcyByZXF1aXJlZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHJlcXVpcmVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEFsbG93cyB0aGUgdXNlciB0byBkZXNlbGVjdCBhbiBpdGVtLlxuICAgKi9cbiAgQElucHV0KClcbiAgY2FuRGVzZWxlY3QgPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgdXNlZCBmb3IgdGhpcyBzZWxlY3QuXG4gICAqL1xuICBASW5wdXQoKVxuICBuYW1lID0gJ3NlbGVjdCc7XG5cbiAgLyoqXG4gICAqIFRoZSBpY29uIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgc2VsZWN0LlxuICAgKi9cbiAgQElucHV0KClcbiAgaWNvbiA9ICdjYXJldC1kb3duJztcblxuICAvKipcbiAgICogRW1pdHMgaWYgYSBpdGVtIGlzIHNlbGVjdGVkLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIG9uU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3RhYmxlSXRlbT4oKTtcblxuICAvKipcbiAgICogRW1pdHMgaWYgYSBpdGVtIHdhcyBkZXNlbGVjdGVkLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIG9uRGVzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdGFibGVJdGVtPigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBzZWxlY3QgaWNvbiBpcyBjbGlja2VkLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIG9uSWNvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx7IGljb246IHN0cmluZzsgJGV2ZW50OiBNb3VzZUV2ZW50IH0+KCk7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgc2VhcmNoIGlucHV0IGhhcyBmb2N1cy5cbiAgICovXG4gIHNlYXJjaEhhc0ZvY3VzID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBzZWxlY3RhYmxlIGl0ZW1zIHdoZW4gY29udGVudCBwcm9qZWN0aW9uIGlzIHVzZWQuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIEBDb250ZW50Q2hpbGRyZW4oU2VsZWN0SXRlbURpcmVjdGl2ZSkgcHJvamVjdGVkU2VsZWN0YWJsZUl0ZW1zOiBRdWVyeUxpc3Q8U2VsZWN0SXRlbURpcmVjdGl2ZT47XG5cbiAgLyoqXG4gICAqIFRoZSBzZWxlY3RlZCBpdGVtcyB3aGVuIGNvbnRlbnQgcHJvamVjdGlvbiBpcyB1c2VkLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBAQ29udGVudENoaWxkKFNlbGVjdGVkSXRlbXNEaXJlY3RpdmUpIHByb2plY3RlZFNlbGVjdGVkSXRlbXM6IFNlbGVjdGVkSXRlbXNEaXJlY3RpdmU7XG5cbiAgQFZpZXdDaGlsZCgnc2VhcmNoQ29udHJvbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwcml2YXRlIHNlYXJjaENvbnRyb2w6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duJywgeyBzdGF0aWM6IGZhbHNlIH0pIHByaXZhdGUgZHJvcGRvd246IEJzRHJvcGRvd25EaXJlY3RpdmU7XG4gIEBWaWV3Q2hpbGRyZW4oTGlzdEl0ZW1Db21wb25lbnQpIHByaXZhdGUgbGlzdDogUXVlcnlMaXN0PExpc3RJdGVtQ29tcG9uZW50PjtcblxuICAvKipcbiAgICogQSBpdGVtIHdoaWNoIGlzIHByZXNlbGVjdGVkLiBJdCBpcyB1c2VkIHdoZW4gYSB1c2VyIHR5cGVzIGluIHRoZSBzZWFyY2ggaW5wdXQgdG8gZ2l2ZSBhIHZpc3VhbCB0eXBlYWhlYWQgZmVlZGJhY2suXG4gICAqL1xuICBnZXQgcHJlc2VsZWN0ZWRJdGVtKCk6IFNlbGVjdGFibGVJdGVtIHtcbiAgICByZXR1cm4gdGhpcy5fcHJlc2VsZWN0ZWRJdGVtO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBpbnRlcm5hbCBzZWxlY3QgZWxlbWVudC5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBfc2VsZWN0ZWQ6IFNlbGVjdGFibGVJdGVtW10gPSBbXTtcblxuICAvKipcbiAgICogVGhlIGludGVybmFsIHByZS1zZWxlY3QgZWxlbWVudC4gSXQgaXMgdXNlZCB3aGVuIGEgdXNlciB0eXBlcyBpbiB0aGUgc2VhcmNoIGlucHV0IHRvIGdpdmUgYSB2aXN1YWwgdHlwZWFoZWFkIGZlZWRiYWNrLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIF9wcmVzZWxlY3RlZEl0ZW06IFNlbGVjdGFibGVJdGVtO1xuXG4gIC8qKlxuICAgKiBUaGUgaW50ZXJuYWwgaXRlbXMgZWxlbWVudC5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBfaXRlbXM6IFNlbGVjdGFibGVJdGVtVGVtcGxhdGVbXSA9IFtdO1xuXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIG9uQ2hhbmdlOiAoaXRlbXM6IFNlbGVjdGFibGVJdGVtIHwgU2VsZWN0YWJsZUl0ZW1bXSkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBvblRvdWNoZWQ6ICgpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICogQHBhcmFtIHNlbGVjdEtleWJvYXJkU2VydmljZSBUaGUgc2VydmljZSB0byBoYW5kbGUga2V5Ym9hcmQgbmF2aWdhdGlvbi5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2VsZWN0S2V5Ym9hcmRTZXJ2aWNlOiBTZWxlY3RLZXlib2FyZFNlcnZpY2UpIHtcbiAgICB0aGlzLnNlbGVjdEtleWJvYXJkU2VydmljZS5vcHRpb25zID0ge1xuICAgICAgZW1wdHlJbnB1dDogdHJ1ZSxcbiAgICAgIGtleWJvYXJkU2VhcmNoOiB0cnVlXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvamVjdGVkU2VsZWN0YWJsZUl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMucHJvamVjdGVkU2VsZWN0YWJsZUl0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIHRoaXMuX2l0ZW1zLnB1c2goe1xuICAgICAgICAgIGxhYmVsOiBpdGVtLmxhYmVsLFxuICAgICAgICAgIHZhbHVlOiBpdGVtLnZhbHVlLFxuICAgICAgICAgIHRlbXBsYXRlOiBpdGVtLnRlbXBsYXRlUmVmXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmluc2lkZUNsaWNrKSB7XG4gICAgICB0aGlzLmluc2lkZUNsaWNrID0gdGhpcy5tdWx0aTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RLZXlib2FyZFNlcnZpY2VcbiAgICAgIC5yZWdpc3RlciQodGhpcy5zZWFyY2hDb250cm9sLm5hdGl2ZUVsZW1lbnQsIHRoaXMubGlzdCwgdGhpcy5kcm9wZG93bilcbiAgICAgIC5zdWJzY3JpYmUoc2VsZWN0ZWRJbmRleCA9PiB7XG4gICAgICAgIGlmIChzZWxlY3RlZEluZGV4ID4gLTEpIHtcbiAgICAgICAgICB0aGlzLl9wcmVzZWxlY3RlZEl0ZW0gPSB0aGlzLl9pdGVtc1tzZWxlY3RlZEluZGV4XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLl9wcmVzZWxlY3RlZEl0ZW0gPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5zZWxlY3RLZXlib2FyZFNlcnZpY2UudW5yZWdpc3RlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdHMgYW4gaXRlbVxuICAgKiBAcGFyYW0gaXRlbSBUaGUgaXRlbSB0byBzZWxlY3QuXG4gICAqL1xuICBzZWxlY3QoaXRlbTogU2VsZWN0YWJsZUl0ZW0pOiB2b2lkIHtcbiAgICB0aGlzLm9uU2VsZWN0LmVtaXQoaXRlbSk7XG4gICAgaWYgKHRoaXMubXVsdGkpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGVkLmluZGV4T2YoaXRlbSkgPiAtMSA/IHRoaXMuZGVzZWxlY3QoaXRlbSkgOiB0aGlzLl9zZWxlY3RlZC5wdXNoKGl0ZW0pO1xuICAgICAgdGhpcy5lbWl0Q2hhbmdlRXZlbnQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fc2VsZWN0ZWQgPSBbaXRlbV07XG4gICAgdGhpcy5fcHJlc2VsZWN0ZWRJdGVtID0gaXRlbTtcbiAgICB0aGlzLmVtaXRDaGFuZ2VFdmVudCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc2VsZWN0cyBhbiBpdGVtLlxuICAgKiBAcGFyYW0gaXRlbSBUaGUgaXRlbSB0byBkZXNlbGVjdC5cbiAgICovXG4gIGRlc2VsZWN0KGl0ZW06IFNlbGVjdGFibGVJdGVtKTogdm9pZCB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLl9zZWxlY3RlZC5pbmRleE9mKGl0ZW0pO1xuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLl9zZWxlY3RlZC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgdGhpcy5vbkRlc2VsZWN0LmVtaXQoaXRlbSk7XG4gICAgICB0aGlzLmVtaXRDaGFuZ2VFdmVudCgpO1xuICAgICAgdGhpcy5fcHJlc2VsZWN0ZWRJdGVtID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGVzZWxlY3RzIGFsbCBpdGVtc1xuICAgKi9cbiAgZGVzZWxlY3RBbGwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3NlbGVjdGVkLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMub25EZXNlbGVjdC5lbWl0KCk7XG4gICAgICB0aGlzLl9zZWxlY3RlZCA9IFtdO1xuICAgICAgdGhpcy5fcHJlc2VsZWN0ZWRJdGVtID0gbnVsbDtcbiAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICB0aGlzLmVtaXRDaGFuZ2VFdmVudCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIGRyb3Bkb3duLlxuICAgKi9cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5kcm9wZG93bi5oaWRlKCk7XG4gIH1cblxuICAvKipcbiAgICogT3BlbnMgdGhlIGRyb3Bkb3duLlxuICAgKi9cbiAgb3BlbigpOiB2b2lkIHtcbiAgICB0aGlzLmRyb3Bkb3duLnNob3coKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gd3JpdGUuXG4gICAqL1xuICB3cml0ZVZhbHVlKHZhbHVlOiBTZWxlY3RhYmxlSXRlbSB8IFNlbGVjdGFibGVJdGVtW10pIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKiBAcGFyYW0gZm4gVGhlIGZ1bmN0aW9uIHRvIHJlZ2lzdGVyIGZvciBvbkNoYW5nZS5cbiAgICovXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChpdGVtczogU2VsZWN0YWJsZUl0ZW0gfCBTZWxlY3RhYmxlSXRlbVtdKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICogQHBhcmFtIGZuIFRoZSBmdW5jdGlvbiB0byByZWdpc3RlciBmb3Igb25Ub3VjaGVkLlxuICAgKi9cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICogQHBhcmFtIGlzRGlzYWJsZWQgU2hvdWxkIGRpc2FibGUgb3Igbm90XG4gICAqL1xuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBkb0JsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hIYXNGb2N1cyA9IGZhbHNlO1xuICAgIGlmICh0aGlzLm9uVG91Y2hlZCkge1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgZG9Gb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW4oKTtcbiAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICB0aGlzLnNlYXJjaEhhc0ZvY3VzID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHtcbiAgICBpZiAodGhpcy5yZXF1aXJlZCAmJiAoIWNvbnRyb2wudmFsdWUgfHwgY29udHJvbC52YWx1ZS5sZW5ndGggPT09IDApKSB7XG4gICAgICByZXR1cm4geyByZXF1aXJlZDogdHJ1ZSB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyZWQgaWYgdGhlIGRyb3Bkb3duIHdhcyBzaG93bi5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25TaG93bigpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaENvbnRyb2wubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXJlZCBpZiB0aGUgZHJvcGRvd24gd2FzIGhpZGRlbi5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25IaWRkZW4oKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hDb250cm9sLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICB0aGlzLl9wcmVzZWxlY3RlZEl0ZW0gPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0Q2hhbmdlRXZlbnQoKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLm9uQ2hhbmdlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMubXVsdGkgPyB0aGlzLl9zZWxlY3RlZCA6IHRoaXMuX3NlbGVjdGVkWzBdKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJjOHktc2VhcmNoLWRyb3Bkb3duIGRyb3Bkb3duIGZpdC13XCJcbiAgcGxhY2VtZW50PVwiYm90dG9tIGxlZnRcIlxuICBkcm9wZG93blxuICBbY29udGFpbmVyXT1cImNvbnRhaW5lclwiXG4gICNkcm9wZG93bj1cImJzLWRyb3Bkb3duXCJcbiAgW2F1dG9DbG9zZV09XCJhdXRvQ2xvc2VcIlxuICBbaXNEaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFtpbnNpZGVDbGlja109XCJpbnNpZGVDbGlja1wiXG4gIChvblNob3duKT1cIm9uU2hvd24oKVwiXG4gIChvbkhpZGRlbik9XCJvbkhpZGRlbigpXCJcbiAgZHJvcGRvd25Ub2dnbGVcbiAgKGNsaWNrKT1cIm9wZW4oKVwiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cImlucHV0LWdyb3VwIGlucHV0LWdyb3VwLWRyb3Bkb3duXCJcbiAgICByb2xlPVwiYnV0dG9uXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIHRleHQtdHJ1bmNhdGVcIlxuICAgICAgKm5nSWY9XCJ0cnVlXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ20tci04MCc6IGNhbkRlc2VsZWN0ICYmIHNlbGVjdGVkLmxlbmd0aCA+IDAsXG4gICAgICAgICdtLXItNDAnOiAhY2FuRGVzZWxlY3QgfHwgc2VsZWN0ZWQubGVuZ3RoID09PSAwLFxuICAgICAgICAndGV4dC10cnVuY2F0ZSc6ICFtdWx0aSxcbiAgICAgICAgJ2lubmVyLXNjcm9sbCBkLWZsZXggYS1pLWNlbnRlcic6IG11bHRpXG4gICAgICB9XCJcbiAgICA+XG4gICAgICA8IS0tIHJlbmRlcmluZyBvZiBzZWxlY3RlZCBpdGVtcyAod2l0aCBjb250ZW50IHByb2plY3Rpb24pIC0tPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInNlbGVjdGVkLWl0ZW1zXCJcbiAgICAgICAgKm5nSWY9XCJwcm9qZWN0ZWRTZWxlY3RlZEl0ZW1zXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc2VsZWN0ZWRJdGVtIG9mIHNlbGVjdGVkXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgcHJvamVjdGVkU2VsZWN0ZWRJdGVtcy50ZW1wbGF0ZVJlZjtcbiAgICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IHNlbGVjdGVkSXRlbSB9XG4gICAgICAgICAgICBcIlxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxpXG4gICAgICAgICAgY2xhc3M9XCJ0ZXh0LW11dGVkXCJcbiAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkLmxlbmd0aCA9PT0gMCAmJiAhc2VhcmNoSGFzRm9jdXMgJiYgc2VhcmNoQ29udHJvbC52YWx1ZS5sZW5ndGggPT09IDBcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcGxhY2Vob2xkZXIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9pPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gcmVuZGVyaW5nIG9mIHNlbGVjdGVkIGl0ZW1zIChkZWZhdWx0KSAtLT5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJzZWxlY3RlZC1pdGVtc1wiXG4gICAgICAgICpuZ0lmPVwiIXByb2plY3RlZFNlbGVjdGVkSXRlbXNcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIiFtdWx0aVwiPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VhcmNoSGFzRm9jdXMgJiYgcHJlc2VsZWN0ZWRJdGVtXCI+XG4gICAgICAgICAgICB7eyBwcmVzZWxlY3RlZEl0ZW0ubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCIhc2VhcmNoSGFzRm9jdXMgJiYgc2VsZWN0ZWQubGVuZ3RoID09PSAxXCI+XG4gICAgICAgICAgICB7eyBzZWxlY3RlZFswXS5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8aVxuICAgICAgICAgIGNsYXNzPVwidGV4dC1tdXRlZFwiXG4gICAgICAgICAgKm5nSWY9XCJzZWxlY3RlZC5sZW5ndGggPT09IDAgJiYgIXByZXNlbGVjdGVkSXRlbSAmJiBzZWFyY2hDb250cm9sLnZhbHVlLmxlbmd0aCA9PT0gMFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwbGFjZWhvbGRlciB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2k+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtdWx0aVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibS1yLTRcIj57eyBzZWFyY2hDb250cm9sLnZhbHVlIH19PC9zcGFuPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cInRhZyB0YWctLWluZm8gY2hpcFwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgc2VsZWN0ZWRJdGVtIG9mIHNlbGVjdGVkXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi14cyBidG4tY2xlYW4gdGV4dC0xMCBtLXItNFwiXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgc2VsZWN0ZWRJdGVtLmxhYmVsIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBkZXNlbGVjdChzZWxlY3RlZEl0ZW0pXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cInRpbWVzXCI+PC9pPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB7eyBzZWxlY3RlZEl0ZW0ubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgXG4gICAgPGlucHV0XG4gICAgICBjbGFzcz1cImZvcm0tY29udHJvbCB0ZXh0LXRydW5jYXRlXCJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAjc2VhcmNoQ29udHJvbFxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAncC1hYnNvbHV0ZSc6IHRydWUsXG4gICAgICAgICdtLXItODAnOiBjYW5EZXNlbGVjdCAmJiBzZWxlY3RlZC5sZW5ndGggPiAwLFxuICAgICAgICAnbS1yLTQwJzogIWNhbkRlc2VsZWN0IHx8IHNlbGVjdGVkLmxlbmd0aCA9PT0gMFxuICAgICAgfVwiXG4gICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgKGJsdXIpPVwiZG9CbHVyKClcIlxuICAgICAgKGZvY3VzKT1cImRvRm9jdXMoKVwiXG4gICAgICBbbmFtZV09XCJuYW1lXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgLz5cblxuICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYnRuXCI+XG4gICAgICA8IS0tIHRoaXMgYnV0dG9uIGlzIGRpc3BsYXllZCBvbmx5IGlmIHdlIGhhdmUgc29tZXRoaW5nIHNlbGVjdGVkIGFuZCBhcmUgYWxsb3dlZCB0byBkZXNlbGVjdCAtLT5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRvdFwiXG4gICAgICAgIHRpdGxlPVwie3sgJ0Rlc2VsZWN0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAqbmdJZj1cImNhbkRlc2VsZWN0ICYmIHNlbGVjdGVkLmxlbmd0aCA+IDBcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgZGVzZWxlY3RBbGwoKVwiXG4gICAgICA+XG4gICAgICAgIDxpIGM4eUljb249XCJ0aW1lc1wiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImJ0biBidG4tZG90XCJcbiAgICAgICAgdGl0bGU9XCJ7eyAnU2VhcmNoJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAoY2xpY2spPVwib25JY29uQ2xpY2suZW1pdCh7IGljb24sICRldmVudCB9KVwiXG4gICAgICAgIGRhdGEtY3k9XCJzZWxlY3QtYnV0dG9uXCJcbiAgICAgID5cbiAgICAgICAgPGlcbiAgICAgICAgICBjbGFzcz1cInRleHQtcHJpbWFyeVwiXG4gICAgICAgICAgW2M4eUljb25dPVwiaWNvblwiXG4gICAgICAgID48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L3NwYW4+XG4gIDwvZGl2PlxuXG4gIDxjOHktbGlzdC1ncm91cFxuICAgIGNsYXNzPVwiZHJvcGRvd24tbWVudSBkcm9wZG93bi1tZW51LS1tb2RhbFwiXG4gICAgW3N0eWxlLndpZHRoXT1cImNvbnRhaW5lciA9PT0gJ2JvZHknID8gc2VhcmNoQ29udHJvbC5wYXJlbnROb2RlLmNsaWVudFdpZHRoICsgJ3B4JyA6IHVuZGVmaW5lZFwiXG4gICAgcm9sZT1cIm1lbnVcIlxuICAgIGRhdGEtY3k9XCJzZWxlY3QtLWRyb3Bkb3duLW1lbnVcIlxuICAgICpkcm9wZG93bk1lbnVcbiAgPlxuICAgIDwhLS0gcmVuZGVyaW5nIG9mIGl0ZW1zIChkZWZhdWx0KSAtLT5cbiAgICA8Yzh5LWxpXG4gICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiXG4gICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc1wiXG4gICAgICBbc2VsZWN0YWJsZV09XCJ0cnVlXCJcbiAgICAgIFtkZW5zZV09XCJ0cnVlXCJcbiAgICAgIFthY3RpdmVdPVwiIW11bHRpICYmIGl0ZW0udmFsdWUgPT09IHNlbGVjdGVkWzBdPy52YWx1ZVwiXG4gICAgICAoY2xpY2spPVwic2VsZWN0KGl0ZW0pXCJcbiAgICA+XG4gICAgICA8c3BhbiBbYXR0ci5kYXRhLXNlYXJjaC1sYWJlbF09XCJpdGVtLmxhYmVsIHwgdHJhbnNsYXRlXCI+PC9zcGFuPlxuICAgICAgPGM4eS1saS1jaGVja2JveFxuICAgICAgICAqbmdJZj1cIm11bHRpXCJcbiAgICAgICAgW3NlbGVjdGVkXT1cInNlbGVjdGVkLmluZGV4T2YoaXRlbSkgPiAtMVwiXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBzZWxlY3QoaXRlbSlcIlxuICAgICAgPjwvYzh5LWxpLWNoZWNrYm94PlxuICAgICAgPGM4eS1saS1ib2R5XG4gICAgICAgICpuZ0lmPVwiIWl0ZW0udGVtcGxhdGVcIlxuICAgICAgPlxuICAgICAgICB7eyBpdGVtLmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2M4eS1saS1ib2R5PlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW0/LnRlbXBsYXRlXCJcbiAgICAgICAgbmdQcm9qZWN0QXM9XCJjOHktbGktYm9keVwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9jOHktbGk+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZGl2XCI+PC9uZy1jb250ZW50PlxuICA8L2M4eS1saXN0LWdyb3VwPlxuPC9kaXY+XG4iXX0=
431
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBRVQsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLGFBQWEsRUFDYixpQkFBaUIsRUFHbEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVsRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBb0JwRSxNQUFNLE9BQU8sZUFBZTtJQVExQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F1Qkc7SUFDSCxJQUFhLEtBQUssQ0FBQyxLQUE2RDtRQUM5RSxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDN0IsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDN0IsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxD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QixLQUFLO2dCQU1OLFFBQVE7c0JBRFAsS0FBSztnQkFPTixTQUFTO3NCQURSLEtBQUs7Z0JBUU4sV0FBVztzQkFEVixLQUFLO2dCQU9OLFFBQVE7c0JBRFAsS0FBSztnQkFPTixXQUFXO3NCQURWLEtBQUs7Z0JBT04sSUFBSTtzQkFESCxLQUFLO2dCQU9OLElBQUk7c0JBREgsS0FBSztnQkFPTixRQUFRO3NCQURQLE1BQU07Z0JBT1AsVUFBVTtzQkFEVCxNQUFNO2dCQU9QLFdBQVc7c0JBRFYsTUFBTTtnQkFZK0Isd0JBQXdCO3NCQUE3RCxlQUFlO3VCQUFDLG1CQUFtQjtnQkFNRSxzQkFBc0I7c0JBQTNELFlBQVk7dUJBQUMsc0JBQXNCO2dCQUVtQixhQUFhO3NCQUFuRSxTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0ssUUFBUTtzQkFBekQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNDLElBQUk7c0JBQTVDLFlBQVk7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDaGlsZHJlbixcbiAgZm9yd2FyZFJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3Jcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQnNEcm9wZG93bkRpcmVjdGl2ZSB9IGZyb20gJ25neC1ib290c3RyYXAvZHJvcGRvd24nO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTGlzdEl0ZW1Db21wb25lbnQgfSBmcm9tICcuLi9saXN0LWdyb3VwJztcbmltcG9ydCB7IFNlbGVjdEl0ZW1EaXJlY3RpdmUgfSBmcm9tICcuL3NlbGVjdC1pdGVtLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTZWxlY3RLZXlib2FyZFNlcnZpY2UgfSBmcm9tICcuL3NlbGVjdC1rZXlib2FyZC5zZXJ2aWNlJztcbmltcG9ydCB7IFNlbGVjdGFibGVJdGVtLCBTZWxlY3RhYmxlSXRlbVRlbXBsYXRlIH0gZnJvbSAnLi9zZWxlY3QubW9kZWwnO1xuaW1wb3J0IHsgU2VsZWN0ZWRJdGVtc0RpcmVjdGl2ZSB9IGZyb20gJy4vc2VsZWN0ZWQtaXRlbXMuZGlyZWN0aXZlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBob3N0OiB7IGNsYXNzOiAnYzh5LXNlbGVjdC12MicgfSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNlbGVjdENvbXBvbmVudClcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTZWxlY3RDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIFNlbGVjdEtleWJvYXJkU2VydmljZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdENvbXBvbmVudFxuICBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yXG57XG4gIC8qKlxuICAgKiBQbGFjZWhvbGRlciB0ZXh0IHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgc2VsZWN0LlxuICAgKi9cbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnU2VsZWN0IGl0ZW3igKYnO1xuXG4gIC8qKlxuICAgKiBJdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHNlbGVjdC5cbiAgICogQ2FuIGJlIGFuIGFycmF5IG9mIHN0cmluZ3Mgb3IgYW4gYXJyYXkgb2Ygb2JqZWN0cyB3aXRoIGBsYWJlbGAgYW5kIGB2YWx1ZWAgcHJvcGVydGllcy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgaHRtbFxuICAgKiA8Yzh5LXNlbGVjdCBbaXRlbXNdPVwiW3sgbGFiZWw6ICdJdGVtIDEnLCB2YWx1ZTogJ2l0ZW0xJyB9LCB7IGxhYmVsOiAnSXRlbSAyJywgdmFsdWU6ICdpdGVtMicgfV1cIj48L2M4eS1zZWxlY3Q+XG4gICAqIGBgYFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGBodG1sXG4gICAqIDxjOHktc2VsZWN0IFtpdGVtc109XCJbJ0l0ZW0gMScsICdJdGVtIDInLCAnSXRlbSAzJ11cIj48L2M4eS1zZWxlY3Q+XG4gICAqIGBgYFxuICAgKlxuICAgKiBGb3IgbW9yZSBjb21wbGV4IHNjZW5hcmlvcywgeW91IGNhbiB1c2UgY29udGVudC1wcm9qZWN0aW9uOlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGBodG1sXG4gICAqIDxjOHktc2VsZWN0PlxuICAgKiAgICA8aSBbYzh5SWNvbl09XCIncm9ja2V0J1wiIGNsYXNzPVwidGV4dC0xNlwiICpjOHlTZWxlY3RJdGVtPVwiJ3JvY2tldCc7IGxhYmVsOiAnUm9ja2V0J1wiPjwvaT5cbiAgICogICAgPGkgW2M4eUljb25dPVwiJ2NhcidcIiBjbGFzcz1cInRleHQtMTZcIiAqYzh5U2VsZWN0SXRlbT1cIidjYXInOyBsYWJlbDogJ0NhcidcIj48L2k+XG4gICAqIDwvYzh5LXNlbGVjdD5cbiAgICogYGBgXG4gICAqL1xuICBASW5wdXQoKSBzZXQgaXRlbXModmFsdWU6IHN0cmluZ1tdIHwgU2VsZWN0YWJsZUl0ZW1bXSB8IFNlbGVjdGFibGVJdGVtVGVtcGxhdGVbXSkge1xuICAgIHRoaXMuX2l0ZW1zID0gdmFsdWUubWFwKGl0ZW0gPT4ge1xuICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4geyBsYWJlbDogaXRlbSwgdmFsdWU6IGl0ZW0gfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHNlbGVjdC5cbiAgICovXG4gIGdldCBpdGVtcygpOiBTZWxlY3RhYmxlSXRlbVRlbXBsYXRlW10ge1xuICAgIHJldHVybiB0aGlzLl9pdGVtcztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgc2VsZWN0ZWQgaXRlbS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBzZWxlY3RlZCh2YWx1ZTogc3RyaW5nIHwgU2VsZWN0YWJsZUl0ZW0gfCBBcnJheTxzdHJpbmcgfCBTZWxlY3RhYmxlSXRlbT4pIHtcbiAgICBjb25zdCBlbnN1cmVkQXJyYXk6IChzdHJpbmcgfCBTZWxlY3RhYmxlSXRlbSlbXSA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRBcnJheSA9IGVuc3VyZWRBcnJheS5tYXAoaXRlbSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiB7IGxhYmVsOiBpdGVtLCB2YWx1ZTogaXRlbSB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfSk7XG4gICAgdGhpcy5fc2VsZWN0ZWQgPSBub3JtYWxpemVkQXJyYXkubWFwKGl0ZW0gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zLmZpbmQoaSA9PiBpLnZhbHVlID09PSBpdGVtLnZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBzZWxlY3RlZCBpdGVtLlxuICAgKi9cbiAgZ2V0IHNlbGVjdGVkKCk6IFNlbGVjdGFibGVJdGVtW10ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgY29udGFpbmVyIHRvIHB1dCB0aGUgZHJvcGRvd24gdG8uIERlZmF1bHRzIHRvIGJvZHkuXG4gICAqL1xuICBASW5wdXQoKVxuICBjb250YWluZXI6ICcnIHwgJ2JvZHknID0gJ2JvZHknO1xuXG4gIC8qKlxuICAgKiBJZiBzZXQgdG8gdHJ1ZSwgdGhlIHVzZXIgY2FuIHNlbGVjdCBtdWx0aXBsZSBpdGVtcy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIG11bHRpID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIElmIGVuYWJsZWQsIGFuIGl0ZW0gY2FuIGJlIHNlbGVjdGVkIHdpdGggdGhlIHNwYWNlIGtleS5cbiAgICovXG4gIEBJbnB1dCgpIGNhblNlbGVjdFdpdGhTcGFjZSA9ICF0aGlzLm11bHRpO1xuXG4gIC8qKlxuICAgKiBJZiBzZXQgdG8gdHJ1ZSwgdGhlIHNlbGVjdCBpcyBkaXNhYmxlZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERlZmluZXMsIGlmIHRoZSBkcm9wZG93biBzaG91bGQgY2xvc2UgYXV0b21hdGljYWxseSBhZnRlciB1c2VyIGludGVyYWN0aW9uLlxuICAgKi9cbiAgQElucHV0KClcbiAgYXV0b0Nsb3NlID0gdHJ1ZTtcblxuICAvKipcbiAgICogRGVmaW5lcyBpZiB0aGUgZHJvcGRvd24gc2hvdWxkIHN0YXkgb3BlbiB3aGVuIHRoZSB1c2VyIGNsaWNrcyBpbnNpZGUgdGhlIHNlbGVjdC5cbiAgICogSWYgc2V0IHRvIHRydWUsIHRoZSBkcm9wZG93biB3aWxsIG9ubHkgY2xvc2Ugd2hlbiB0aGUgdXNlciBjbGlja3Mgb3V0c2lkZSB0aGUgc2VsZWN0LlxuICAgKi9cbiAgQElucHV0KClcbiAgaW5zaWRlQ2xpY2s6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE1hcmtzIHRoZSBzZWxlY3QgYXMgcmVxdWlyZWQuXG4gICAqL1xuICBASW5wdXQoKVxuICByZXF1aXJlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBBbGxvd3MgdGhlIHVzZXIgdG8gZGVzZWxlY3QgYW4gaXRlbS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGNhbkRlc2VsZWN0ID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIHVzZWQgZm9yIHRoaXMgc2VsZWN0LlxuICAgKi9cbiAgQElucHV0KClcbiAgbmFtZSA9ICdzZWxlY3QnO1xuXG4gIC8qKlxuICAgKiBUaGUgaWNvbiB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHNlbGVjdC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGljb24gPSAnY2FyZXQtZG93bic7XG5cbiAgLyoqXG4gICAqIEVtaXRzIGlmIGEgaXRlbSBpcyBzZWxlY3RlZC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBvblNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8U2VsZWN0YWJsZUl0ZW0+KCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIGlmIGEgaXRlbSB3YXMgZGVzZWxlY3RlZC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBvbkRlc2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3RhYmxlSXRlbT4oKTtcblxuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgc2VsZWN0IGljb24gaXMgY2xpY2tlZC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBvbkljb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8eyBpY29uOiBzdHJpbmc7ICRldmVudDogTW91c2VFdmVudCB9PigpO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIHNlYXJjaCBpbnB1dCBoYXMgZm9jdXMuXG4gICAqL1xuICBzZWFyY2hIYXNGb2N1cyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VsZWN0YWJsZSBpdGVtcyB3aGVuIGNvbnRlbnQgcHJvamVjdGlvbiBpcyB1c2VkLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBAQ29udGVudENoaWxkcmVuKFNlbGVjdEl0ZW1EaXJlY3RpdmUpIHByb2plY3RlZFNlbGVjdGFibGVJdGVtczogUXVlcnlMaXN0PFNlbGVjdEl0ZW1EaXJlY3RpdmU+O1xuXG4gIC8qKlxuICAgKiBUaGUgc2VsZWN0ZWQgaXRlbXMgd2hlbiBjb250ZW50IHByb2plY3Rpb24gaXMgdXNlZC5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgQENvbnRlbnRDaGlsZChTZWxlY3RlZEl0ZW1zRGlyZWN0aXZlKSBwcm9qZWN0ZWRTZWxlY3RlZEl0ZW1zOiBTZWxlY3RlZEl0ZW1zRGlyZWN0aXZlO1xuXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaENvbnRyb2wnLCB7IHN0YXRpYzogZmFsc2UgfSkgcHJpdmF0ZSBzZWFyY2hDb250cm9sOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdkcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KSBwcml2YXRlIGRyb3Bkb3duOiBCc0Ryb3Bkb3duRGlyZWN0aXZlO1xuICBAVmlld0NoaWxkcmVuKExpc3RJdGVtQ29tcG9uZW50KSBwcml2YXRlIGxpc3Q6IFF1ZXJ5TGlzdDxMaXN0SXRlbUNvbXBvbmVudD47XG5cbiAgLyoqXG4gICAqIEEgaXRlbSB3aGljaCBpcyBwcmVzZWxlY3RlZC4gSXQgaXMgdXNlZCB3aGVuIGEgdXNlciB0eXBlcyBpbiB0aGUgc2VhcmNoIGlucHV0IHRvIGdpdmUgYSB2aXN1YWwgdHlwZWFoZWFkIGZlZWRiYWNrLlxuICAgKi9cbiAgZ2V0IHByZXNlbGVjdGVkSXRlbSgpOiBTZWxlY3RhYmxlSXRlbSB7XG4gICAgcmV0dXJuIHRoaXMuX3ByZXNlbGVjdGVkSXRlbTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaW50ZXJuYWwgc2VsZWN0IGVsZW1lbnQuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgX3NlbGVjdGVkOiBTZWxlY3RhYmxlSXRlbVtdID0gW107XG5cbiAgLyoqXG4gICAqIFRoZSBpbnRlcm5hbCBwcmUtc2VsZWN0IGVsZW1lbnQuIEl0IGlzIHVzZWQgd2hlbiBhIHVzZXIgdHlwZXMgaW4gdGhlIHNlYXJjaCBpbnB1dCB0byBnaXZlIGEgdmlzdWFsIHR5cGVhaGVhZCBmZWVkYmFjay5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBfcHJlc2VsZWN0ZWRJdGVtOiBTZWxlY3RhYmxlSXRlbTtcblxuICAvKipcbiAgICogVGhlIGludGVybmFsIGl0ZW1zIGVsZW1lbnQuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgX2l0ZW1zOiBTZWxlY3RhYmxlSXRlbVRlbXBsYXRlW10gPSBbXTtcblxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBvbkNoYW5nZTogKGl0ZW1zOiBTZWxlY3RhYmxlSXRlbSB8IFNlbGVjdGFibGVJdGVtW10pID0+IHZvaWQ7XG4gIHByaXZhdGUgb25Ub3VjaGVkOiAoKSA9PiB2b2lkO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqIEBwYXJhbSBzZWxlY3RLZXlib2FyZFNlcnZpY2UgVGhlIHNlcnZpY2UgdG8gaGFuZGxlIGtleWJvYXJkIG5hdmlnYXRpb24uXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNlbGVjdEtleWJvYXJkU2VydmljZTogU2VsZWN0S2V5Ym9hcmRTZXJ2aWNlKSB7XG4gICAgdGhpcy5zZWxlY3RLZXlib2FyZFNlcnZpY2Uub3B0aW9ucyA9IHtcbiAgICAgIGVtcHR5SW5wdXQ6IHRydWUsXG4gICAgICBrZXlib2FyZFNlYXJjaDogdHJ1ZSxcbiAgICAgIHNwYWNlU2VsZWN0OiB0aGlzLmNhblNlbGVjdFdpdGhTcGFjZVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb2plY3RlZFNlbGVjdGFibGVJdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnByb2plY3RlZFNlbGVjdGFibGVJdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICB0aGlzLl9pdGVtcy5wdXNoKHtcbiAgICAgICAgICBsYWJlbDogaXRlbS5sYWJlbCxcbiAgICAgICAgICB2YWx1ZTogaXRlbS52YWx1ZSxcbiAgICAgICAgICB0ZW1wbGF0ZTogaXRlbS50ZW1wbGF0ZVJlZlxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5pbnNpZGVDbGljaykge1xuICAgICAgdGhpcy5pbnNpZGVDbGljayA9IHRoaXMubXVsdGk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdEtleWJvYXJkU2VydmljZVxuICAgICAgLnJlZ2lzdGVyJCh0aGlzLnNlYXJjaENvbnRyb2wubmF0aXZlRWxlbWVudCwgdGhpcy5saXN0LCB0aGlzLmRyb3Bkb3duKVxuICAgICAgLnN1YnNjcmliZShzZWxlY3RlZEluZGV4ID0+IHtcbiAgICAgICAgaWYgKHNlbGVjdGVkSW5kZXggPiAtMSkge1xuICAgICAgICAgIHRoaXMuX3ByZXNlbGVjdGVkSXRlbSA9IHRoaXMuX2l0ZW1zW3NlbGVjdGVkSW5kZXhdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX3ByZXNlbGVjdGVkSXRlbSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5jYW5TZWxlY3RXaXRoU3BhY2UpIHtcbiAgICAgIHRoaXMuc2VsZWN0S2V5Ym9hcmRTZXJ2aWNlLm9wdGlvbnMgPSB7XG4gICAgICAgIGVtcHR5SW5wdXQ6IHRydWUsXG4gICAgICAgIGtleWJvYXJkU2VhcmNoOiB0cnVlLFxuICAgICAgICBzcGFjZVNlbGVjdDogY2hhbmdlcy5jYW5TZWxlY3RXaXRoU3BhY2UuY3VycmVudFZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5zZWxlY3RLZXlib2FyZFNlcnZpY2UudW5yZWdpc3RlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdHMgYW4gaXRlbVxuICAgKiBAcGFyYW0gaXRlbSBUaGUgaXRlbSB0byBzZWxlY3QuXG4gICAqL1xuICBzZWxlY3QoaXRlbTogU2VsZWN0YWJsZUl0ZW0pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tdWx0aSkge1xuICAgICAgY29uc3QgaXNTZWxlY3RlZCA9IHRoaXMuX3NlbGVjdGVkLmluZGV4T2YoaXRlbSkgPiAtMTtcbiAgICAgIGlmIChpc1NlbGVjdGVkKSB7XG4gICAgICAgIHRoaXMuZGVzZWxlY3QoaXRlbSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3NlbGVjdGVkLnB1c2goaXRlbSk7XG4gICAgICB0aGlzLmVtaXRDaGFuZ2VFdmVudCgpO1xuICAgICAgdGhpcy5vblNlbGVjdC5lbWl0KGl0ZW0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9zZWxlY3RlZCA9IFtpdGVtXTtcbiAgICB0aGlzLl9wcmVzZWxlY3RlZEl0ZW0gPSBpdGVtO1xuICAgIHRoaXMuZW1pdENoYW5nZUV2ZW50KCk7XG4gICAgdGhpcy5vblNlbGVjdC5lbWl0KGl0ZW0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc2VsZWN0cyBhbiBpdGVtLlxuICAgKiBAcGFyYW0gaXRlbSBUaGUgaXRlbSB0byBkZXNlbGVjdC5cbiAgICovXG4gIGRlc2VsZWN0KGl0ZW06IFNlbGVjdGFibGVJdGVtKTogdm9pZCB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLl9zZWxlY3RlZC5pbmRleE9mKGl0ZW0pO1xuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLl9zZWxlY3RlZC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgdGhpcy5lbWl0Q2hhbmdlRXZlbnQoKTtcbiAgICAgIHRoaXMub25EZXNlbGVjdC5lbWl0KGl0ZW0pO1xuICAgICAgdGhpcy5fcHJlc2VsZWN0ZWRJdGVtID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGVzZWxlY3RzIGFsbCBpdGVtc1xuICAgKi9cbiAgZGVzZWxlY3RBbGwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3NlbGVjdGVkLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMub25EZXNlbGVjdC5lbWl0KCk7XG4gICAgICB0aGlzLl9zZWxlY3RlZCA9IFtdO1xuICAgICAgdGhpcy5fcHJlc2VsZWN0ZWRJdGVtID0gbnVsbDtcbiAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICB0aGlzLmVtaXRDaGFuZ2VFdmVudCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIGRyb3Bkb3duLlxuICAgKi9cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5kcm9wZG93bi5oaWRlKCk7XG4gIH1cblxuICAvKipcbiAgICogT3BlbnMgdGhlIGRyb3Bkb3duLlxuICAgKi9cbiAgb3BlbigpOiB2b2lkIHtcbiAgICB0aGlzLmRyb3Bkb3duLnNob3coKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gd3JpdGUuXG4gICAqL1xuICB3cml0ZVZhbHVlKHZhbHVlOiBTZWxlY3RhYmxlSXRlbSB8IFNlbGVjdGFibGVJdGVtW10pIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKiBAcGFyYW0gZm4gVGhlIGZ1bmN0aW9uIHRvIHJlZ2lzdGVyIGZvciBvbkNoYW5nZS5cbiAgICovXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChpdGVtczogU2VsZWN0YWJsZUl0ZW0gfCBTZWxlY3RhYmxlSXRlbVtdKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICogQHBhcmFtIGZuIFRoZSBmdW5jdGlvbiB0byByZWdpc3RlciBmb3Igb25Ub3VjaGVkLlxuICAgKi9cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICogQHBhcmFtIGlzRGlzYWJsZWQgU2hvdWxkIGRpc2FibGUgb3Igbm90XG4gICAqL1xuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBkb0JsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hIYXNGb2N1cyA9IGZhbHNlO1xuICAgIGlmICh0aGlzLm9uVG91Y2hlZCkge1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgZG9Gb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW4oKTtcbiAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICB0aGlzLnNlYXJjaEhhc0ZvY3VzID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHtcbiAgICBpZiAodGhpcy5yZXF1aXJlZCAmJiAoIWNvbnRyb2wudmFsdWUgfHwgY29udHJvbC52YWx1ZS5sZW5ndGggPT09IDApKSB7XG4gICAgICByZXR1cm4geyByZXF1aXJlZDogdHJ1ZSB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyZWQgaWYgdGhlIGRyb3Bkb3duIHdhcyBzaG93bi5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25TaG93bigpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaENvbnRyb2wubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXJlZCBpZiB0aGUgZHJvcGRvd24gd2FzIGhpZGRlbi5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25IaWRkZW4oKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hDb250cm9sLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICB0aGlzLl9wcmVzZWxlY3RlZEl0ZW0gPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0Q2hhbmdlRXZlbnQoKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLm9uQ2hhbmdlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMubXVsdGkgPyB0aGlzLl9zZWxlY3RlZCA6IHRoaXMuX3NlbGVjdGVkWzBdKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJjOHktc2VhcmNoLWRyb3Bkb3duIGRyb3Bkb3duIGZpdC13XCJcbiAgcGxhY2VtZW50PVwiYm90dG9tIGxlZnRcIlxuICBkcm9wZG93blxuICBbY29udGFpbmVyXT1cImNvbnRhaW5lclwiXG4gICNkcm9wZG93bj1cImJzLWRyb3Bkb3duXCJcbiAgW2F1dG9DbG9zZV09XCJhdXRvQ2xvc2VcIlxuICBbaXNEaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFtpbnNpZGVDbGlja109XCJpbnNpZGVDbGlja1wiXG4gIChvblNob3duKT1cIm9uU2hvd24oKVwiXG4gIChvbkhpZGRlbik9XCJvbkhpZGRlbigpXCJcbiAgZHJvcGRvd25Ub2dnbGVcbiAgKGNsaWNrKT1cIm9wZW4oKVwiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cImlucHV0LWdyb3VwIGlucHV0LWdyb3VwLWRyb3Bkb3duXCJcbiAgICByb2xlPVwiYnV0dG9uXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIHRleHQtdHJ1bmNhdGVcIlxuICAgICAgKm5nSWY9XCJ0cnVlXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ20tci04MCc6IGNhbkRlc2VsZWN0ICYmIHNlbGVjdGVkLmxlbmd0aCA+IDAsXG4gICAgICAgICdtLXItNDAnOiAhY2FuRGVzZWxlY3QgfHwgc2VsZWN0ZWQubGVuZ3RoID09PSAwLFxuICAgICAgICAndGV4dC10cnVuY2F0ZSc6ICFtdWx0aSxcbiAgICAgICAgJ2lubmVyLXNjcm9sbCBkLWZsZXggYS1pLWNlbnRlcic6IG11bHRpXG4gICAgICB9XCJcbiAgICA+XG4gICAgICA8IS0tIHJlbmRlcmluZyBvZiBzZWxlY3RlZCBpdGVtcyAod2l0aCBjb250ZW50IHByb2plY3Rpb24pIC0tPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInNlbGVjdGVkLWl0ZW1zXCJcbiAgICAgICAgKm5nSWY9XCJwcm9qZWN0ZWRTZWxlY3RlZEl0ZW1zXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc2VsZWN0ZWRJdGVtIG9mIHNlbGVjdGVkXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgcHJvamVjdGVkU2VsZWN0ZWRJdGVtcy50ZW1wbGF0ZVJlZjtcbiAgICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IHNlbGVjdGVkSXRlbSB9XG4gICAgICAgICAgICBcIlxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxpXG4gICAgICAgICAgY2xhc3M9XCJ0ZXh0LW11dGVkXCJcbiAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkLmxlbmd0aCA9PT0gMCAmJiAhc2VhcmNoSGFzRm9jdXMgJiYgc2VhcmNoQ29udHJvbC52YWx1ZS5sZW5ndGggPT09IDBcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcGxhY2Vob2xkZXIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9pPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gcmVuZGVyaW5nIG9mIHNlbGVjdGVkIGl0ZW1zIChkZWZhdWx0KSAtLT5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJzZWxlY3RlZC1pdGVtc1wiXG4gICAgICAgICpuZ0lmPVwiIXByb2plY3RlZFNlbGVjdGVkSXRlbXNcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIiFtdWx0aVwiPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VhcmNoSGFzRm9jdXMgJiYgcHJlc2VsZWN0ZWRJdGVtXCI+XG4gICAgICAgICAgICB7eyBwcmVzZWxlY3RlZEl0ZW0ubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCIhc2VhcmNoSGFzRm9jdXMgJiYgc2VsZWN0ZWQubGVuZ3RoID09PSAxXCI+XG4gICAgICAgICAgICB7eyBzZWxlY3RlZFswXS5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8aVxuICAgICAgICAgIGNsYXNzPVwidGV4dC1tdXRlZFwiXG4gICAgICAgICAgKm5nSWY9XCJzZWxlY3RlZC5sZW5ndGggPT09IDAgJiYgIXByZXNlbGVjdGVkSXRlbSAmJiBzZWFyY2hDb250cm9sLnZhbHVlLmxlbmd0aCA9PT0gMFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwbGFjZWhvbGRlciB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2k+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtdWx0aVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibS1yLTRcIj57eyBzZWFyY2hDb250cm9sLnZhbHVlIH19PC9zcGFuPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cInRhZyB0YWctLWluZm8gY2hpcFwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgc2VsZWN0ZWRJdGVtIG9mIHNlbGVjdGVkXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi14cyBidG4tY2xlYW4gdGV4dC0xMCBtLXItNFwiXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgc2VsZWN0ZWRJdGVtLmxhYmVsIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBkZXNlbGVjdChzZWxlY3RlZEl0ZW0pXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cInRpbWVzXCI+PC9pPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB7eyBzZWxlY3RlZEl0ZW0ubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgXG4gICAgPGlucHV0XG4gICAgICBjbGFzcz1cImZvcm0tY29udHJvbCB0ZXh0LXRydW5jYXRlXCJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAjc2VhcmNoQ29udHJvbFxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAncC1hYnNvbHV0ZSc6IHRydWUsXG4gICAgICAgICdtLXItODAnOiBjYW5EZXNlbGVjdCAmJiBzZWxlY3RlZC5sZW5ndGggPiAwLFxuICAgICAgICAnbS1yLTQwJzogIWNhbkRlc2VsZWN0IHx8IHNlbGVjdGVkLmxlbmd0aCA9PT0gMFxuICAgICAgfVwiXG4gICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgKGJsdXIpPVwiZG9CbHVyKClcIlxuICAgICAgKGZvY3VzKT1cImRvRm9jdXMoKVwiXG4gICAgICBbbmFtZV09XCJuYW1lXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgLz5cblxuICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYnRuXCI+XG4gICAgICA8IS0tIHRoaXMgYnV0dG9uIGlzIGRpc3BsYXllZCBvbmx5IGlmIHdlIGhhdmUgc29tZXRoaW5nIHNlbGVjdGVkIGFuZCBhcmUgYWxsb3dlZCB0byBkZXNlbGVjdCAtLT5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRvdFwiXG4gICAgICAgIHRpdGxlPVwie3sgJ0Rlc2VsZWN0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAqbmdJZj1cImNhbkRlc2VsZWN0ICYmIHNlbGVjdGVkLmxlbmd0aCA+IDBcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgZGVzZWxlY3RBbGwoKVwiXG4gICAgICA+XG4gICAgICAgIDxpIGM4eUljb249XCJ0aW1lc1wiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImJ0biBidG4tZG90XCJcbiAgICAgICAgdGl0bGU9XCJ7eyAnU2VhcmNoJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAoY2xpY2spPVwib25JY29uQ2xpY2suZW1pdCh7IGljb24sICRldmVudCB9KVwiXG4gICAgICAgIGRhdGEtY3k9XCJzZWxlY3QtYnV0dG9uXCJcbiAgICAgID5cbiAgICAgICAgPGlcbiAgICAgICAgICBjbGFzcz1cInRleHQtcHJpbWFyeVwiXG4gICAgICAgICAgW2M4eUljb25dPVwiaWNvblwiXG4gICAgICAgID48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L3NwYW4+XG4gIDwvZGl2PlxuXG4gIDxjOHktbGlzdC1ncm91cFxuICAgIGNsYXNzPVwiZHJvcGRvd24tbWVudSBkcm9wZG93bi1tZW51LS1tb2RhbFwiXG4gICAgW3N0eWxlLndpZHRoXT1cImNvbnRhaW5lciA9PT0gJ2JvZHknID8gc2VhcmNoQ29udHJvbC5wYXJlbnROb2RlLmNsaWVudFdpZHRoICsgJ3B4JyA6IHVuZGVmaW5lZFwiXG4gICAgcm9sZT1cIm1lbnVcIlxuICAgIGRhdGEtY3k9XCJzZWxlY3QtLWRyb3Bkb3duLW1lbnVcIlxuICAgICpkcm9wZG93bk1lbnVcbiAgPlxuICAgIDwhLS0gcmVuZGVyaW5nIG9mIGl0ZW1zIChkZWZhdWx0KSAtLT5cbiAgICA8Yzh5LWxpXG4gICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiXG4gICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc1wiXG4gICAgICBbc2VsZWN0YWJsZV09XCJ0cnVlXCJcbiAgICAgIFtkZW5zZV09XCJ0cnVlXCJcbiAgICAgIFthY3RpdmVdPVwiIW11bHRpICYmIGl0ZW0udmFsdWUgPT09IHNlbGVjdGVkWzBdPy52YWx1ZVwiXG4gICAgICAoY2xpY2spPVwic2VsZWN0KGl0ZW0pXCJcbiAgICA+XG4gICAgICA8c3BhbiBbYXR0ci5kYXRhLXNlYXJjaC1sYWJlbF09XCJpdGVtLmxhYmVsIHwgdHJhbnNsYXRlXCI+PC9zcGFuPlxuICAgICAgPGM4eS1saS1jaGVja2JveFxuICAgICAgICAqbmdJZj1cIm11bHRpXCJcbiAgICAgICAgW3NlbGVjdGVkXT1cInNlbGVjdGVkLmluZGV4T2YoaXRlbSkgPiAtMVwiXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTtcIlxuICAgICAgPjwvYzh5LWxpLWNoZWNrYm94PlxuICAgICAgPGM4eS1saS1ib2R5XG4gICAgICAgICpuZ0lmPVwiIWl0ZW0udGVtcGxhdGVcIlxuICAgICAgPlxuICAgICAgICB7eyBpdGVtLmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2M4eS1saS1ib2R5PlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW0/LnRlbXBsYXRlXCJcbiAgICAgICAgbmdQcm9qZWN0QXM9XCJjOHktbGktYm9keVwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9jOHktbGk+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZGl2XCI+PC9uZy1jb250ZW50PlxuICA8L2M4eS1saXN0LWdyb3VwPlxuPC9kaXY+XG4iXX0=
@@ -112,7 +112,7 @@ export class SelectModalComponent {
112
112
  provide: PRODUCT_EXPERIENCE_EVENT_SOURCE,
113
113
  useExisting: forwardRef(() => SelectModalComponent)
114
114
  }
115
- ], usesOnChanges: true, ngImport: i0, template: "<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i [c8yIcon]=\"icon\"></i>\n <h1\n class=\"h3\"\n id=\"modal-title\"\n >\n {{ title | translate }}\n </h1>\n </div>\n <div class=\"p-16 text-center separator-bottom min-height-fit\">\n <p class=\"m-b-8\">{{ subTitle | translate }}</p>\n <div class=\"row\">\n <div\n *ngIf=\"showFilter\"\n [ngClass]=\"{\n 'col-xs-6': showFilter && additionalFilterTemplate,\n 'col-xs-12': !showFilter || !additionalFilterTemplate\n }\"\n >\n <c8y-filter\n [icon]=\"'search'\"\n (onSearch)=\"updatePipe($event)\"\n ></c8y-filter>\n </div>\n <div\n *ngIf=\"additionalFilterTemplate\"\n [ngClass]=\"{\n 'col-xs-6': showFilter && additionalFilterTemplate,\n 'col-xs-12': !showFilter || !additionalFilterTemplate\n }\"\n >\n <ng-container *ngTemplateOutlet=\"additionalFilterTemplate\"></ng-container>\n </div>\n </div>\n </div>\n <div\n class=\"modal-inner-scroll\"\n id=\"modal-body\"\n >\n <div class=\"p-l-16 p-r-16\">\n <div\n class=\"panel m-t-8 m-b-8\"\n *ngIf=\"!items || items.length === 0 || (emptyItemsOnly && hideEmptyItems)\"\n >\n <div class=\"c8y-empty-state text-left\">\n <h1\n class=\"c8y-icon-duocolor\"\n c8yIcon=\"{{ icon }} \"\n ></h1>\n <p>{{ (noItemsMessage | translate) ?? 'No items to display.' | translate }}</p>\n </div>\n </div>\n </div>\n <c8y-list-group>\n <ng-container *ngFor=\"let item of listItems | selectModalFilterPipe : filterTerm\">\n <c8y-li *ngIf=\"item.options?.length > 0 || !hideEmptyItems\">\n <c8y-li-icon>\n <i c8yIcon=\"{{ icon }}\"></i>\n </c8y-li-icon>\n\n <c8y-li-body class=\"content-flex-30\">\n <div class=\"col-9\">\n <div\n *ngFor=\"let bodyPart of item.body\"\n [ngClass]=\"bodyPart.class\"\n >\n <c8y-highlight\n [title]=\"bodyPart.value\"\n [pattern]=\"filterTerm\"\n [text]=\"bodyPart.value\"\n ></c8y-highlight>\n </div>\n </div>\n\n <div\n class=\"col-3 text-right\"\n *ngIf=\"item.additionalInformation\"\n >\n <div [ngClass]=\"item.additionalInformation.class\">\n {{ item.additionalInformation.value }}\n </div>\n </div>\n </c8y-li-body>\n\n <c8y-li-collapse *ngIf=\"item.options?.length > 0\">\n <c8y-list-group>\n <c8y-li *ngFor=\"let option of item.options\">\n <c8y-li-radio\n [name]=\"mode === 'single' ? 'single' : item.groupId\"\n (onSelect)=\"updateChoice({ item: item, id: option.obj.id })\"\n [disabled]=\"option.disabled\"\n [selected]=\"option.selected\"\n ></c8y-li-radio>\n <c8y-li-body class=\"content-flex-20\">\n <div\n *ngFor=\"let optionPart of option.body; let i = index\"\n [ngClass]=\"optionPart.class\"\n >\n <c8y-highlight\n [pattern]=\"filterTerm\"\n [text]=\"optionPart.value\"\n ></c8y-highlight>\n </div>\n <ng-container\n *ngIf=\"option.template\"\n [ngTemplateOutlet]=\"option.template\"\n [ngTemplateOutletContext]=\"{ $implicit: item, option: option }\"\n ></ng-container>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n </c8y-li-collapse>\n </c8y-li>\n </ng-container>\n <div *ngIf=\"areMoreEntries\">\n <div\n class=\"alert alert-info m-t-16 m-r-8 m-l-8\"\n translate\n >\n Some entries might not be shown. Try narrowing search criteria.\n </div>\n </div>\n </c8y-list-group>\n </div>\n\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ labels.cancel | translate }}\"\n type=\"button\"\n data-cy=\"select-modal--Cancel-button\"\n *ngIf=\"labels.cancel\"\n (click)=\"dismiss()\"\n c8yProductExperience\n inherit\n [actionData]=\"{ result: labels.cancel }\"\n >\n {{ labels.cancel | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ labels.ok | translate }}\"\n type=\"button\"\n data-cy=\"select-modal--Save-button\"\n (click)=\"select()\"\n [disabled]=\"!selected\"\n c8yProductExperience\n inherit\n [actionData]=\"{ result: labels.ok }\"\n >\n {{ labels.ok | translate }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i6.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i7.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i8.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: i9.ListItemCollapseComponent, selector: "c8y-list-item-collapse, c8y-li-collapse", inputs: ["collapseWay"] }, { kind: "component", type: i10.ListItemRadioComponent, selector: "c8y-list-item-radio, c8y-li-radio", inputs: ["selected", "name", "disabled", "value"], outputs: ["onSelect"] }, { kind: "component", type: i11.HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "component", type: i12.FilterInputComponent, selector: "c8y-filter", inputs: ["icon"], outputs: ["onSearch"] }, { kind: "directive", type: i13.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "pipe", type: i14.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i15.SelectModalFilterPipe, name: "selectModalFilterPipe" }] }); }
115
+ ], usesOnChanges: true, ngImport: i0, template: "<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i [c8yIcon]=\"icon\"></i>\n <h1\n class=\"h3\"\n id=\"modal-title\"\n >\n {{ title | translate }}\n </h1>\n </div>\n <div class=\"p-16 text-center separator-bottom min-height-fit\">\n <p class=\"m-b-8\">{{ subTitle | translate }}</p>\n <div class=\"row\">\n <div\n *ngIf=\"showFilter\"\n [ngClass]=\"{\n 'col-xs-6': showFilter && additionalFilterTemplate,\n 'col-xs-12': !showFilter || !additionalFilterTemplate\n }\"\n >\n <c8y-filter\n [icon]=\"'search'\"\n (onSearch)=\"updatePipe($event)\"\n ></c8y-filter>\n </div>\n <div\n *ngIf=\"additionalFilterTemplate\"\n [ngClass]=\"{\n 'col-xs-6': showFilter && additionalFilterTemplate,\n 'col-xs-12': !showFilter || !additionalFilterTemplate\n }\"\n >\n <ng-container *ngTemplateOutlet=\"additionalFilterTemplate\"></ng-container>\n </div>\n </div>\n </div>\n <div\n class=\"modal-inner-scroll\"\n id=\"modal-body\"\n >\n <div class=\"p-l-16 p-r-16\">\n <div\n class=\"panel m-t-8 m-b-8\"\n *ngIf=\"!items || items.length === 0 || (emptyItemsOnly && hideEmptyItems)\"\n >\n <div class=\"c8y-empty-state text-left\">\n <h1\n class=\"c8y-icon-duocolor\"\n c8yIcon=\"{{ icon }} \"\n ></h1>\n <p>{{ (noItemsMessage | translate) ?? 'No items to display.' | translate }}</p>\n </div>\n </div>\n </div>\n <c8y-list-group>\n <ng-container *ngFor=\"let item of listItems | selectModalFilterPipe : filterTerm\">\n <c8y-li *ngIf=\"item.options?.length > 0 || !hideEmptyItems\">\n <c8y-li-icon>\n <i c8yIcon=\"{{ icon }}\"></i>\n </c8y-li-icon>\n\n <c8y-li-body class=\"content-flex-30\">\n <div class=\"col-9\">\n <div\n *ngFor=\"let bodyPart of item.body\"\n [ngClass]=\"bodyPart.class\"\n >\n <c8y-highlight\n [title]=\"bodyPart.value\"\n [pattern]=\"filterTerm\"\n [text]=\"bodyPart.value\"\n ></c8y-highlight>\n </div>\n </div>\n\n <div\n class=\"col-3 text-right\"\n *ngIf=\"item.additionalInformation\"\n >\n <div [ngClass]=\"item.additionalInformation.class\">\n {{ item.additionalInformation.value }}\n </div>\n </div>\n </c8y-li-body>\n\n <c8y-li-collapse *ngIf=\"item.options?.length > 0\">\n <c8y-list-group>\n <c8y-li *ngFor=\"let option of item.options\">\n <c8y-li-radio\n [name]=\"mode === 'single' ? 'single' : item.groupId\"\n (onSelect)=\"updateChoice({ item: item, id: option.obj.id })\"\n [disabled]=\"option.disabled\"\n [selected]=\"option.selected\"\n ></c8y-li-radio>\n <c8y-li-body class=\"content-flex-20\">\n <div\n *ngFor=\"let optionPart of option.body; let i = index\"\n [ngClass]=\"optionPart.class\"\n >\n <c8y-highlight\n [pattern]=\"filterTerm\"\n [text]=\"optionPart.value\"\n ></c8y-highlight>\n </div>\n <ng-container\n *ngIf=\"option.template\"\n [ngTemplateOutlet]=\"option.template\"\n [ngTemplateOutletContext]=\"{ $implicit: item, option: option }\"\n ></ng-container>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n </c8y-li-collapse>\n </c8y-li>\n </ng-container>\n <div *ngIf=\"areMoreEntries\">\n <div\n class=\"alert alert-info m-t-16 m-r-8 m-l-8\"\n translate\n >\n Some entries might not be shown. Try narrowing search criteria.\n </div>\n </div>\n </c8y-list-group>\n </div>\n\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ labels.cancel | translate }}\"\n type=\"button\"\n data-cy=\"select-modal--Cancel-button\"\n *ngIf=\"labels.cancel\"\n (click)=\"dismiss()\"\n c8yProductExperience\n inherit\n [actionData]=\"{ result: labels.cancel }\"\n >\n {{ labels.cancel | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ labels.ok | translate }}\"\n type=\"button\"\n data-cy=\"select-modal--Save-button\"\n (click)=\"select()\"\n [disabled]=\"!selected\"\n c8yProductExperience\n inherit\n [actionData]=\"{ result: labels.ok }\"\n >\n {{ labels.ok | translate }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i6.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i7.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i8.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: i9.ListItemCollapseComponent, selector: "c8y-list-item-collapse, c8y-li-collapse", inputs: ["collapseWay"] }, { kind: "component", type: i10.ListItemRadioComponent, selector: "c8y-list-item-radio, c8y-li-radio", inputs: ["selected", "name", "disabled", "value"], outputs: ["onSelect"] }, { kind: "component", type: i11.HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "component", type: i12.FilterInputComponent, selector: "c8y-filter", inputs: ["icon", "filterTerm"], outputs: ["onSearch"] }, { kind: "directive", type: i13.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "pipe", type: i14.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i15.SelectModalFilterPipe, name: "selectModalFilterPipe" }] }); }
116
116
  }
117
117
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: SelectModalComponent, decorators: [{
118
118
  type: Component,
@@ -153,4 +153,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
153
153
  }], onChoiceUpdated: [{
154
154
  type: Output
155
155
  }] } });
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc2VsZWN0LW1vZGFsL3NlbGVjdC1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL3NlbGVjdC1tb2RhbC9zZWxlY3QtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFDTCxNQUFNLEVBRU4sV0FBVyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBR0wsK0JBQStCLEVBQ2hDLE1BQU0sZ0RBQWdELENBQUM7QUFDeEQsT0FBTyxFQUFtQyxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQWdCM0YsTUFBTSxPQUFPLG9CQUFvQjtJQVUvQixJQUFhLE1BQU0sQ0FBQyxNQUFtQjtRQUNyQyxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFDMUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBQ0QsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFtQkQsWUFBb0IsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQWhDakMsYUFBUSxHQUFXLE9BQU8sQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO1FBRXJGLFNBQUksR0FBdUIsa0JBQWtCLENBQUMsS0FBSyxDQUFDO1FBQ3BELG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFFbEIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFVdEIsV0FBTSxHQUFnQyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUN4RSxXQUFNLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDMUQsb0JBQWUsR0FBOEIsSUFBSSxZQUFZLEVBQWUsQ0FBQztRQUN2RixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsY0FBUyxHQUFpQyxFQUFFLENBQUM7UUFDN0MsMkJBQXNCLEdBQTJCO1lBQy9DLFNBQVMsRUFBRSxTQUFTLEVBQUUsNEVBQTRFO1lBQ2xHLElBQUksRUFBRTtnQkFDSixTQUFTLEVBQUUsY0FBYzthQUMxQjtTQUNGLENBQUM7UUFFTSxjQUFTLEdBQW9CLElBQUksT0FBTyxFQUFVLENBQUM7UUFDbkQsWUFBTyxHQUFnQixFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBR25GLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN2RCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQXNCO1FBQ3RDLElBQUksT0FBTyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2hELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUMsSUFBSSxFQUFDLEVBQUU7Z0JBQy9ELElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDO2dCQUNsQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDOUQsSUFBSSxRQUFRLEVBQUUsQ0FBQztvQkFDYixJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNsQyxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQzt3QkFDekIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDakUsQ0FBQztnQkFDSCxDQUFDO2dCQUNELE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUN4QyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQ25ELENBQUM7UUFDSixDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDekQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7UUFDdEUsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsVUFBa0I7UUFDM0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQztJQUVELFlBQVksQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7UUFDdkIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU8sU0FBUztRQUNmLE9BQU8sSUFBSSxDQUFDLFNBQVM7YUFDbEIsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQzthQUMvQixHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEtBQUssTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUMzRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7YUFDbEMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9DLENBQUM7OEdBbkdVLG9CQUFvQjtrR0FBcEIsb0JBQW9CLDBjQVBwQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSwrQkFBK0I7Z0JBQ3hDLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUM7YUFDcEQ7U0FDRiwrQ0NsQ0gsMCtKQTJKQTs7MkZEdkhhLG9CQUFvQjtrQkFWaEMsU0FBUzsrQkFDRSxrQkFBa0IsYUFFakI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLCtCQUErQjs0QkFDeEMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUM7eUJBQ3BEO3FCQUNGOytFQUdRLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDTyxNQUFNO3NCQUFsQixLQUFLO2dCQU9HLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDSSxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJSWRlbnRpZmllZCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IGFzc2lnbiB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCc01vZGFsUmVmIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnLi4vaTE4bi9nZXR0ZXh0JztcbmltcG9ydCB7XG4gIFByb2R1Y3RFeHBlcmllbmNlRXZlbnQsXG4gIFByb2R1Y3RFeHBlcmllbmNlRXZlbnRTb3VyY2UsXG4gIFBST0RVQ1RfRVhQRVJJRU5DRV9FVkVOVF9TT1VSQ0Vcbn0gZnJvbSAnLi4vcHJvZHVjdC1leHBlcmllbmNlL3Byb2R1Y3QtZXhwZXJpZW5jZS5tb2RlbCc7XG5pbXBvcnQgeyBJU2VsZWN0TW9kYWxPYmplY3QsIE1vZGFsTGFiZWxzLCBNb2RhbFNlbGVjdGlvbk1vZGUgfSBmcm9tICcuL3NlbGVjdC1tb2RhbC5tb2RlbCc7XG5cbmludGVyZmFjZSBJU2VsZWN0TW9kYWxJbnRlcm5hbE9iamVjdCBleHRlbmRzIElTZWxlY3RNb2RhbE9iamVjdCB7XG4gIHNlbGVjdGVkSWQ6IHN0cmluZyB8IG51bWJlcjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LXNlbGVjdC1tb2RhbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QtbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBQUk9EVUNUX0VYUEVSSUVOQ0VfRVZFTlRfU09VUkNFLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2VsZWN0TW9kYWxDb21wb25lbnQpXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdE1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgUHJvZHVjdEV4cGVyaWVuY2VFdmVudFNvdXJjZSB7XG4gIEBJbnB1dCgpIGljb246IHN0cmluZztcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgc3ViVGl0bGU6IHN0cmluZyA9IGdldHRleHQoJ1NlbGVjdCBmcm9tIHRoZSBsaXN0IG9mIGl0ZW1zIG1hdGNoaW5nIHRoZSBkZXZpY2UgdHlwZScpO1xuICBASW5wdXQoKSBpdGVtczogSVNlbGVjdE1vZGFsSW50ZXJuYWxPYmplY3RbXTtcbiAgQElucHV0KCkgbW9kZTogTW9kYWxTZWxlY3Rpb25Nb2RlID0gTW9kYWxTZWxlY3Rpb25Nb2RlLk1VTFRJO1xuICBASW5wdXQoKSBkaXNhYmxlU2VsZWN0ZWQgPSB0cnVlO1xuICBASW5wdXQoKSBzaG93RmlsdGVyID0gdHJ1ZTtcbiAgQElucHV0KCkgYWRkaXRpb25hbEZpbHRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBASW5wdXQoKSBhcmVNb3JlRW50cmllcyA9IGZhbHNlO1xuICBASW5wdXQoKSBzZXQgbGFiZWxzKGxhYmVsczogTW9kYWxMYWJlbHMpIHtcbiAgICBjb25zdCB7IG9rID0gdGhpcy5sYWJlbHMub2ssIGNhbmNlbCA9IHRoaXMubGFiZWxzLmNhbmNlbCB9ID0gbGFiZWxzIHx8IHt9O1xuICAgIHRoaXMuX2xhYmVscyA9IHsgb2ssIGNhbmNlbCB9O1xuICB9XG4gIGdldCBsYWJlbHMoKTogTW9kYWxMYWJlbHMge1xuICAgIHJldHVybiB0aGlzLl9sYWJlbHM7XG4gIH1cbiAgQElucHV0KCkgbm9JdGVtc01lc3NhZ2U6IHN0cmluZztcbiAgQElucHV0KCkgaGlkZUVtcHR5SXRlbXM6IGJvb2xlYW47XG4gIEBPdXRwdXQoKSByZXN1bHQ6IEV2ZW50RW1pdHRlcjxJSWRlbnRpZmllZFtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8SUlkZW50aWZpZWRbXT4oKTtcbiAgQE91dHB1dCgpIHNlYXJjaDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIG9uQ2hvaWNlVXBkYXRlZDogRXZlbnRFbWl0dGVyPElJZGVudGlmaWVkPiA9IG5ldyBFdmVudEVtaXR0ZXI8SUlkZW50aWZpZWQ+KCk7XG4gIHNlbGVjdGVkID0gZmFsc2U7XG4gIGZpbHRlclRlcm0gPSAnJztcbiAgbGlzdEl0ZW1zOiBJU2VsZWN0TW9kYWxJbnRlcm5hbE9iamVjdFtdID0gW107XG4gIHByb2R1Y3RFeHBlcmllbmNlRXZlbnQ6IFByb2R1Y3RFeHBlcmllbmNlRXZlbnQgPSB7XG4gICAgZXZlbnROYW1lOiB1bmRlZmluZWQsIC8vIHN1cHJlc3MgZW1pdHRpbmcgZXZlbnRzIGlmIGEgcGFyZW50IGNvbXBvbmVudCBkb2VzIG5vdCBkZWNsYXJlIGV2ZW50IG5hbWVcbiAgICBkYXRhOiB7XG4gICAgICBjb21wb25lbnQ6ICdzZWxlY3QtbW9kYWwnXG4gICAgfVxuICB9O1xuICBlbXB0eUl0ZW1zT25seTogYm9vbGVhbjtcbiAgcHJpdmF0ZSBkZWJvdW5jZXI6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgcHJpdmF0ZSBfbGFiZWxzOiBNb2RhbExhYmVscyA9IHsgb2s6IGdldHRleHQoJ0NvbmZpcm0nKSwgY2FuY2VsOiBnZXR0ZXh0KCdDYW5jZWwnKSB9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYnNNb2RhbFJlZjogQnNNb2RhbFJlZikge1xuICAgIHRoaXMuZGVib3VuY2VyLnBpcGUoZGVib3VuY2VUaW1lKDUwMCkpLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICB0aGlzLnNlYXJjaC5lbWl0KHZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5pdGVtcyAmJiBjaGFuZ2VzLml0ZW1zLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgY29uc3QgaXRlbXNQcm9taXNlID0gY2hhbmdlcy5pdGVtcy5jdXJyZW50VmFsdWUubWFwKGFzeW5jIGl0ZW0gPT4ge1xuICAgICAgICBpdGVtLm9wdGlvbnMgPSBhd2FpdCBpdGVtLm9wdGlvbnM7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0gaXRlbS5vcHRpb25zLmZpbmQob3B0aW9uID0+IG9wdGlvbi5zZWxlY3RlZCk7XG4gICAgICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgICAgIGl0ZW0uc2VsZWN0ZWRJZCA9IHNlbGVjdGVkLm9iai5pZDtcbiAgICAgICAgICBpZiAodGhpcy5kaXNhYmxlU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIGl0ZW0ub3B0aW9ucy5tYXAob3B0aW9uID0+IGFzc2lnbihvcHRpb24sIHsgZGlzYWJsZWQ6IHRydWUgfSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5saXN0SXRlbXMgPSBhd2FpdCBQcm9taXNlLmFsbChpdGVtc1Byb21pc2UpO1xuICAgICAgdGhpcy5lbXB0eUl0ZW1zT25seSA9IHRoaXMubGlzdEl0ZW1zLmV2ZXJ5KFxuICAgICAgICBpdGVtID0+ICFpdGVtLm9wdGlvbnMgfHwgaXRlbS5vcHRpb25zLmxlbmd0aCA9PT0gMFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMudGl0bGUgJiYgISF0aGlzLnByb2R1Y3RFeHBlcmllbmNlRXZlbnQ/LmRhdGEpIHtcbiAgICAgIHRoaXMucHJvZHVjdEV4cGVyaWVuY2VFdmVudC5kYXRhLnRpdGxlID0gY2hhbmdlcy50aXRsZS5jdXJyZW50VmFsdWU7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlUGlwZShmaWx0ZXJUZXJtOiBzdHJpbmcpIHtcbiAgICB0aGlzLmRlYm91bmNlci5uZXh0KGZpbHRlclRlcm0pO1xuICAgIHRoaXMuZmlsdGVyVGVybSA9IGZpbHRlclRlcm07XG4gIH1cblxuICB1cGRhdGVDaG9pY2UoeyBpdGVtLCBpZCB9KSB7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgIHRoaXMubGlzdEl0ZW1zLm1hcCh2YWx1ZSA9PiAodmFsdWUuc2VsZWN0ZWRJZCA9IHVuZGVmaW5lZCkpO1xuICAgIH1cbiAgICBpdGVtLnNlbGVjdGVkSWQgPSBpZDtcbiAgICB0aGlzLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICB0aGlzLm9uQ2hvaWNlVXBkYXRlZC5lbWl0KGl0ZW0pO1xuICB9XG5cbiAgZGlzbWlzcygpIHtcbiAgICB0aGlzLmJzTW9kYWxSZWYuaGlkZSgpO1xuICB9XG5cbiAgc2VsZWN0KCkge1xuICAgIHRoaXMucmVzdWx0LmVtaXQodGhpcy5nZXRPdXRwdXQoKSk7XG4gICAgdGhpcy5ic01vZGFsUmVmLmhpZGUoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVib3VuY2VyLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5yZXN1bHQuY29tcGxldGUoKTtcbiAgICB0aGlzLnNlYXJjaC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRPdXRwdXQoKTogSUlkZW50aWZpZWRbXSB7XG4gICAgcmV0dXJuIHRoaXMubGlzdEl0ZW1zXG4gICAgICAuZmlsdGVyKGl0ZW0gPT4gaXRlbS5zZWxlY3RlZElkKVxuICAgICAgLm1hcChpdGVtID0+IGl0ZW0ub3B0aW9ucy5maW5kKG9wdGlvbiA9PiBpdGVtLnNlbGVjdGVkSWQgPT09IG9wdGlvbi5vYmouaWQpKVxuICAgICAgLmZpbHRlcihvcHRpb24gPT4gIW9wdGlvbi5zZWxlY3RlZClcbiAgICAgIC5tYXAoc2VsZWN0ZWRPcHRpb24gPT4gc2VsZWN0ZWRPcHRpb24ub2JqKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInZpZXdwb3J0LW1vZGFsXCI+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgZGlhbG9nLWhlYWRlclwiPlxuICAgIDxpIFtjOHlJY29uXT1cImljb25cIj48L2k+XG4gICAgPGgxXG4gICAgICBjbGFzcz1cImgzXCJcbiAgICAgIGlkPVwibW9kYWwtdGl0bGVcIlxuICAgID5cbiAgICAgIHt7IHRpdGxlIHwgdHJhbnNsYXRlIH19XG4gICAgPC9oMT5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJwLTE2IHRleHQtY2VudGVyIHNlcGFyYXRvci1ib3R0b20gbWluLWhlaWdodC1maXRcIj5cbiAgICA8cCBjbGFzcz1cIm0tYi04XCI+e3sgc3ViVGl0bGUgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cInNob3dGaWx0ZXJcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgJ2NvbC14cy02Jzogc2hvd0ZpbHRlciAmJiBhZGRpdGlvbmFsRmlsdGVyVGVtcGxhdGUsXG4gICAgICAgICAgJ2NvbC14cy0xMic6ICFzaG93RmlsdGVyIHx8ICFhZGRpdGlvbmFsRmlsdGVyVGVtcGxhdGVcbiAgICAgICAgfVwiXG4gICAgICA+XG4gICAgICAgIDxjOHktZmlsdGVyXG4gICAgICAgICAgW2ljb25dPVwiJ3NlYXJjaCdcIlxuICAgICAgICAgIChvblNlYXJjaCk9XCJ1cGRhdGVQaXBlKCRldmVudClcIlxuICAgICAgICA+PC9jOHktZmlsdGVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiYWRkaXRpb25hbEZpbHRlclRlbXBsYXRlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICdjb2wteHMtNic6IHNob3dGaWx0ZXIgJiYgYWRkaXRpb25hbEZpbHRlclRlbXBsYXRlLFxuICAgICAgICAgICdjb2wteHMtMTInOiAhc2hvd0ZpbHRlciB8fCAhYWRkaXRpb25hbEZpbHRlclRlbXBsYXRlXG4gICAgICAgIH1cIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYWRkaXRpb25hbEZpbHRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cIm1vZGFsLWlubmVyLXNjcm9sbFwiXG4gICAgaWQ9XCJtb2RhbC1ib2R5XCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJwLWwtMTYgcC1yLTE2XCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicGFuZWwgbS10LTggbS1iLThcIlxuICAgICAgICAqbmdJZj1cIiFpdGVtcyB8fCBpdGVtcy5sZW5ndGggPT09IDAgfHwgKGVtcHR5SXRlbXNPbmx5ICYmIGhpZGVFbXB0eUl0ZW1zKVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjOHktZW1wdHktc3RhdGUgdGV4dC1sZWZ0XCI+XG4gICAgICAgICAgPGgxXG4gICAgICAgICAgICBjbGFzcz1cImM4eS1pY29uLWR1b2NvbG9yXCJcbiAgICAgICAgICAgIGM4eUljb249XCJ7eyBpY29uIH19IFwiXG4gICAgICAgICAgPjwvaDE+XG4gICAgICAgICAgPHA+e3sgKG5vSXRlbXNNZXNzYWdlIHwgdHJhbnNsYXRlKSA/PyAnTm8gaXRlbXMgdG8gZGlzcGxheS4nIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxjOHktbGlzdC1ncm91cD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbGlzdEl0ZW1zIHwgc2VsZWN0TW9kYWxGaWx0ZXJQaXBlIDogZmlsdGVyVGVybVwiPlxuICAgICAgICA8Yzh5LWxpICpuZ0lmPVwiaXRlbS5vcHRpb25zPy5sZW5ndGggPiAwIHx8ICFoaWRlRW1wdHlJdGVtc1wiPlxuICAgICAgICAgIDxjOHktbGktaWNvbj5cbiAgICAgICAgICAgIDxpIGM4eUljb249XCJ7eyBpY29uIH19XCI+PC9pPlxuICAgICAgICAgIDwvYzh5LWxpLWljb24+XG5cbiAgICAgICAgICA8Yzh5LWxpLWJvZHkgY2xhc3M9XCJjb250ZW50LWZsZXgtMzBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOVwiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGJvZHlQYXJ0IG9mIGl0ZW0uYm9keVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiYm9keVBhcnQuY2xhc3NcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGM4eS1oaWdobGlnaHRcbiAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJib2R5UGFydC52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICBbcGF0dGVybl09XCJmaWx0ZXJUZXJtXCJcbiAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cImJvZHlQYXJ0LnZhbHVlXCJcbiAgICAgICAgICAgICAgICA+PC9jOHktaGlnaGxpZ2h0PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY29sLTMgdGV4dC1yaWdodFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5hZGRpdGlvbmFsSW5mb3JtYXRpb25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cIml0ZW0uYWRkaXRpb25hbEluZm9ybWF0aW9uLmNsYXNzXCI+XG4gICAgICAgICAgICAgICAge3sgaXRlbS5hZGRpdGlvbmFsSW5mb3JtYXRpb24udmFsdWUgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2M4eS1saS1ib2R5PlxuXG4gICAgICAgICAgPGM4eS1saS1jb2xsYXBzZSAqbmdJZj1cIml0ZW0ub3B0aW9ucz8ubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgPGM4eS1saXN0LWdyb3VwPlxuICAgICAgICAgICAgICA8Yzh5LWxpICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgaXRlbS5vcHRpb25zXCI+XG4gICAgICAgICAgICAgICAgPGM4eS1saS1yYWRpb1xuICAgICAgICAgICAgICAgICAgW25hbWVdPVwibW9kZSA9PT0gJ3NpbmdsZScgPyAnc2luZ2xlJyA6IGl0ZW0uZ3JvdXBJZFwiXG4gICAgICAgICAgICAgICAgICAob25TZWxlY3QpPVwidXBkYXRlQ2hvaWNlKHsgaXRlbTogaXRlbSwgaWQ6IG9wdGlvbi5vYmouaWQgfSlcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm9wdGlvbi5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRdPVwib3B0aW9uLnNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICA+PC9jOHktbGktcmFkaW8+XG4gICAgICAgICAgICAgICAgPGM4eS1saS1ib2R5IGNsYXNzPVwiY29udGVudC1mbGV4LTIwXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb25QYXJ0IG9mIG9wdGlvbi5ib2R5OyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwib3B0aW9uUGFydC5jbGFzc1wiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxjOHktaGlnaGxpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAgW3BhdHRlcm5dPVwiZmlsdGVyVGVybVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3RleHRdPVwib3B0aW9uUGFydC52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgID48L2M4eS1oaWdobGlnaHQ+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJvcHRpb24udGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJvcHRpb24udGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0sIG9wdGlvbjogb3B0aW9uIH1cIlxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvYzh5LWxpLWJvZHk+XG4gICAgICAgICAgICAgIDwvYzh5LWxpPlxuICAgICAgICAgICAgPC9jOHktbGlzdC1ncm91cD5cbiAgICAgICAgICA8L2M4eS1saS1jb2xsYXBzZT5cbiAgICAgICAgPC9jOHktbGk+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxkaXYgKm5nSWY9XCJhcmVNb3JlRW50cmllc1wiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJhbGVydCBhbGVydC1pbmZvIG0tdC0xNiBtLXItOCBtLWwtOFwiXG4gICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgID5cbiAgICAgICAgICBTb21lIGVudHJpZXMgbWlnaHQgbm90IGJlIHNob3duLiBUcnkgbmFycm93aW5nIHNlYXJjaCBjcml0ZXJpYS5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2M4eS1saXN0LWdyb3VwPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgdGl0bGU9XCJ7eyBsYWJlbHMuY2FuY2VsIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgZGF0YS1jeT1cInNlbGVjdC1tb2RhbC0tQ2FuY2VsLWJ1dHRvblwiXG4gICAgICAqbmdJZj1cImxhYmVscy5jYW5jZWxcIlxuICAgICAgKGNsaWNrKT1cImRpc21pc3MoKVwiXG4gICAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgICAgaW5oZXJpdFxuICAgICAgW2FjdGlvbkRhdGFdPVwieyByZXN1bHQ6IGxhYmVscy5jYW5jZWwgfVwiXG4gICAgPlxuICAgICAge3sgbGFiZWxzLmNhbmNlbCB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgIHRpdGxlPVwie3sgbGFiZWxzLm9rIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgZGF0YS1jeT1cInNlbGVjdC1tb2RhbC0tU2F2ZS1idXR0b25cIlxuICAgICAgKGNsaWNrKT1cInNlbGVjdCgpXCJcbiAgICAgIFtkaXNhYmxlZF09XCIhc2VsZWN0ZWRcIlxuICAgICAgYzh5UHJvZHVjdEV4cGVyaWVuY2VcbiAgICAgIGluaGVyaXRcbiAgICAgIFthY3Rpb25EYXRhXT1cInsgcmVzdWx0OiBsYWJlbHMub2sgfVwiXG4gICAgPlxuICAgICAge3sgbGFiZWxzLm9rIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc2VsZWN0LW1vZGFsL3NlbGVjdC1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL3NlbGVjdC1tb2RhbC9zZWxlY3QtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFDTCxNQUFNLEVBRU4sV0FBVyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBR0wsK0JBQStCLEVBQ2hDLE1BQU0sZ0RBQWdELENBQUM7QUFDeEQsT0FBTyxFQUFtQyxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQWlCM0YsTUFBTSxPQUFPLG9CQUFvQjtJQVUvQixJQUFhLE1BQU0sQ0FBQyxNQUFtQjtRQUNyQyxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFDMUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBQ0QsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMs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ZixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJSWRlbnRpZmllZCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IGFzc2lnbiB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCc01vZGFsUmVmIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnLi4vaTE4bi9nZXR0ZXh0JztcbmltcG9ydCB7XG4gIFByb2R1Y3RFeHBlcmllbmNlRXZlbnQsXG4gIFByb2R1Y3RFeHBlcmllbmNlRXZlbnRTb3VyY2UsXG4gIFBST0RVQ1RfRVhQRVJJRU5DRV9FVkVOVF9TT1VSQ0Vcbn0gZnJvbSAnLi4vcHJvZHVjdC1leHBlcmllbmNlL3Byb2R1Y3QtZXhwZXJpZW5jZS5tb2RlbCc7XG5pbXBvcnQgeyBJU2VsZWN0TW9kYWxPYmplY3QsIE1vZGFsTGFiZWxzLCBNb2RhbFNlbGVjdGlvbk1vZGUgfSBmcm9tICcuL3NlbGVjdC1tb2RhbC5tb2RlbCc7XG5pbXBvcnQgeyBTdXBwb3J0ZWRJY29uc1N1Z2dlc3Rpb25zIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pY29uLXNlbGVjdG9yL2ljb25zJztcblxuaW50ZXJmYWNlIElTZWxlY3RNb2RhbEludGVybmFsT2JqZWN0IGV4dGVuZHMgSVNlbGVjdE1vZGFsT2JqZWN0IHtcbiAgc2VsZWN0ZWRJZDogc3RyaW5nIHwgbnVtYmVyO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktc2VsZWN0LW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IFBST0RVQ1RfRVhQRVJJRU5DRV9FVkVOVF9TT1VSQ0UsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTZWxlY3RNb2RhbENvbXBvbmVudClcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0TW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBQcm9kdWN0RXhwZXJpZW5jZUV2ZW50U291cmNlIHtcbiAgQElucHV0KCkgaWNvbjogU3VwcG9ydGVkSWNvbnNTdWdnZXN0aW9ucztcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgc3ViVGl0bGU6IHN0cmluZyA9IGdldHRleHQoJ1NlbGVjdCBmcm9tIHRoZSBsaXN0IG9mIGl0ZW1zIG1hdGNoaW5nIHRoZSBkZXZpY2UgdHlwZScpO1xuICBASW5wdXQoKSBpdGVtczogSVNlbGVjdE1vZGFsSW50ZXJuYWxPYmplY3RbXTtcbiAgQElucHV0KCkgbW9kZTogTW9kYWxTZWxlY3Rpb25Nb2RlID0gTW9kYWxTZWxlY3Rpb25Nb2RlLk1VTFRJO1xuICBASW5wdXQoKSBkaXNhYmxlU2VsZWN0ZWQgPSB0cnVlO1xuICBASW5wdXQoKSBzaG93RmlsdGVyID0gdHJ1ZTtcbiAgQElucHV0KCkgYWRkaXRpb25hbEZpbHRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBASW5wdXQoKSBhcmVNb3JlRW50cmllcyA9IGZhbHNlO1xuICBASW5wdXQoKSBzZXQgbGFiZWxzKGxhYmVsczogTW9kYWxMYWJlbHMpIHtcbiAgICBjb25zdCB7IG9rID0gdGhpcy5sYWJlbHMub2ssIGNhbmNlbCA9IHRoaXMubGFiZWxzLmNhbmNlbCB9ID0gbGFiZWxzIHx8IHt9O1xuICAgIHRoaXMuX2xhYmVscyA9IHsgb2ssIGNhbmNlbCB9O1xuICB9XG4gIGdldCBsYWJlbHMoKTogTW9kYWxMYWJlbHMge1xuICAgIHJldHVybiB0aGlzLl9sYWJlbHM7XG4gIH1cbiAgQElucHV0KCkgbm9JdGVtc01lc3NhZ2U6IHN0cmluZztcbiAgQElucHV0KCkgaGlkZUVtcHR5SXRlbXM6IGJvb2xlYW47XG4gIEBPdXRwdXQoKSByZXN1bHQ6IEV2ZW50RW1pdHRlcjxJSWRlbnRpZmllZFtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8SUlkZW50aWZpZWRbXT4oKTtcbiAgQE91dHB1dCgpIHNlYXJjaDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIG9uQ2hvaWNlVXBkYXRlZDogRXZlbnRFbWl0dGVyPElJZGVudGlmaWVkPiA9IG5ldyBFdmVudEVtaXR0ZXI8SUlkZW50aWZpZWQ+KCk7XG4gIHNlbGVjdGVkID0gZmFsc2U7XG4gIGZpbHRlclRlcm0gPSAnJztcbiAgbGlzdEl0ZW1zOiBJU2VsZWN0TW9kYWxJbnRlcm5hbE9iamVjdFtdID0gW107XG4gIHByb2R1Y3RFeHBlcmllbmNlRXZlbnQ6IFByb2R1Y3RFeHBlcmllbmNlRXZlbnQgPSB7XG4gICAgZXZlbnROYW1lOiB1bmRlZmluZWQsIC8vIHN1cHJlc3MgZW1pdHRpbmcgZXZlbnRzIGlmIGEgcGFyZW50IGNvbXBvbmVudCBkb2VzIG5vdCBkZWNsYXJlIGV2ZW50IG5hbWVcbiAgICBkYXRhOiB7XG4gICAgICBjb21wb25lbnQ6ICdzZWxlY3QtbW9kYWwnXG4gICAgfVxuICB9O1xuICBlbXB0eUl0ZW1zT25seTogYm9vbGVhbjtcbiAgcHJpdmF0ZSBkZWJvdW5jZXI6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgcHJpdmF0ZSBfbGFiZWxzOiBNb2RhbExhYmVscyA9IHsgb2s6IGdldHRleHQoJ0NvbmZpcm0nKSwgY2FuY2VsOiBnZXR0ZXh0KCdDYW5jZWwnKSB9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYnNNb2RhbFJlZjogQnNNb2RhbFJlZikge1xuICAgIHRoaXMuZGVib3VuY2VyLnBpcGUoZGVib3VuY2VUaW1lKDUwMCkpLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICB0aGlzLnNlYXJjaC5lbWl0KHZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5pdGVtcyAmJiBjaGFuZ2VzLml0ZW1zLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgY29uc3QgaXRlbXNQcm9taXNlID0gY2hhbmdlcy5pdGVtcy5jdXJyZW50VmFsdWUubWFwKGFzeW5jIGl0ZW0gPT4ge1xuICAgICAgICBpdGVtLm9wdGlvbnMgPSBhd2FpdCBpdGVtLm9wdGlvbnM7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0gaXRlbS5vcHRpb25zLmZpbmQob3B0aW9uID0+IG9wdGlvbi5zZWxlY3RlZCk7XG4gICAgICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgICAgIGl0ZW0uc2VsZWN0ZWRJZCA9IHNlbGVjdGVkLm9iai5pZDtcbiAgICAgICAgICBpZiAodGhpcy5kaXNhYmxlU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIGl0ZW0ub3B0aW9ucy5tYXAob3B0aW9uID0+IGFzc2lnbihvcHRpb24sIHsgZGlzYWJsZWQ6IHRydWUgfSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5saXN0SXRlbXMgPSBhd2FpdCBQcm9taXNlLmFsbChpdGVtc1Byb21pc2UpO1xuICAgICAgdGhpcy5lbXB0eUl0ZW1zT25seSA9IHRoaXMubGlzdEl0ZW1zLmV2ZXJ5KFxuICAgICAgICBpdGVtID0+ICFpdGVtLm9wdGlvbnMgfHwgaXRlbS5vcHRpb25zLmxlbmd0aCA9PT0gMFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMudGl0bGUgJiYgISF0aGlzLnByb2R1Y3RFeHBlcmllbmNlRXZlbnQ/LmRhdGEpIHtcbiAgICAgIHRoaXMucHJvZHVjdEV4cGVyaWVuY2VFdmVudC5kYXRhLnRpdGxlID0gY2hhbmdlcy50aXRsZS5jdXJyZW50VmFsdWU7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlUGlwZShmaWx0ZXJUZXJtOiBzdHJpbmcpIHtcbiAgICB0aGlzLmRlYm91bmNlci5uZXh0KGZpbHRlclRlcm0pO1xuICAgIHRoaXMuZmlsdGVyVGVybSA9IGZpbHRlclRlcm07XG4gIH1cblxuICB1cGRhdGVDaG9pY2UoeyBpdGVtLCBpZCB9KSB7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgIHRoaXMubGlzdEl0ZW1zLm1hcCh2YWx1ZSA9PiAodmFsdWUuc2VsZWN0ZWRJZCA9IHVuZGVmaW5lZCkpO1xuICAgIH1cbiAgICBpdGVtLnNlbGVjdGVkSWQgPSBpZDtcbiAgICB0aGlzLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICB0aGlzLm9uQ2hvaWNlVXBkYXRlZC5lbWl0KGl0ZW0pO1xuICB9XG5cbiAgZGlzbWlzcygpIHtcbiAgICB0aGlzLmJzTW9kYWxSZWYuaGlkZSgpO1xuICB9XG5cbiAgc2VsZWN0KCkge1xuICAgIHRoaXMucmVzdWx0LmVtaXQodGhpcy5nZXRPdXRwdXQoKSk7XG4gICAgdGhpcy5ic01vZGFsUmVmLmhpZGUoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVib3VuY2VyLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5yZXN1bHQuY29tcGxldGUoKTtcbiAgICB0aGlzLnNlYXJjaC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRPdXRwdXQoKTogSUlkZW50aWZpZWRbXSB7XG4gICAgcmV0dXJuIHRoaXMubGlzdEl0ZW1zXG4gICAgICAuZmlsdGVyKGl0ZW0gPT4gaXRlbS5zZWxlY3RlZElkKVxuICAgICAgLm1hcChpdGVtID0+IGl0ZW0ub3B0aW9ucy5maW5kKG9wdGlvbiA9PiBpdGVtLnNlbGVjdGVkSWQgPT09IG9wdGlvbi5vYmouaWQpKVxuICAgICAgLmZpbHRlcihvcHRpb24gPT4gIW9wdGlvbi5zZWxlY3RlZClcbiAgICAgIC5tYXAoc2VsZWN0ZWRPcHRpb24gPT4gc2VsZWN0ZWRPcHRpb24ub2JqKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInZpZXdwb3J0LW1vZGFsXCI+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgZGlhbG9nLWhlYWRlclwiPlxuICAgIDxpIFtjOHlJY29uXT1cImljb25cIj48L2k+XG4gICAgPGgxXG4gICAgICBjbGFzcz1cImgzXCJcbiAgICAgIGlkPVwibW9kYWwtdGl0bGVcIlxuICAgID5cbiAgICAgIHt7IHRpdGxlIHwgdHJhbnNsYXRlIH19XG4gICAgPC9oMT5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJwLTE2IHRleHQtY2VudGVyIHNlcGFyYXRvci1ib3R0b20gbWluLWhlaWdodC1maXRcIj5cbiAgICA8cCBjbGFzcz1cIm0tYi04XCI+e3sgc3ViVGl0bGUgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cInNob3dGaWx0ZXJcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgJ2NvbC14cy02Jzogc2hvd0ZpbHRlciAmJiBhZGRpdGlvbmFsRmlsdGVyVGVtcGxhdGUsXG4gICAgICAgICAgJ2NvbC14cy0xMic6ICFzaG93RmlsdGVyIHx8ICFhZGRpdGlvbmFsRmlsdGVyVGVtcGxhdGVcbiAgICAgICAgfVwiXG4gICAgICA+XG4gICAgICAgIDxjOHktZmlsdGVyXG4gICAgICAgICAgW2ljb25dPVwiJ3NlYXJjaCdcIlxuICAgICAgICAgIChvblNlYXJjaCk9XCJ1cGRhdGVQaXBlKCRldmVudClcIlxuICAgICAgICA+PC9jOHktZmlsdGVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiYWRkaXRpb25hbEZpbHRlclRlbXBsYXRlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICdjb2wteHMtNic6IHNob3dGaWx0ZXIgJiYgYWRkaXRpb25hbEZpbHRlclRlbXBsYXRlLFxuICAgICAgICAgICdjb2wteHMtMTInOiAhc2hvd0ZpbHRlciB8fCAhYWRkaXRpb25hbEZpbHRlclRlbXBsYXRlXG4gICAgICAgIH1cIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYWRkaXRpb25hbEZpbHRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cIm1vZGFsLWlubmVyLXNjcm9sbFwiXG4gICAgaWQ9XCJtb2RhbC1ib2R5XCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJwLWwtMTYgcC1yLTE2XCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicGFuZWwgbS10LTggbS1iLThcIlxuICAgICAgICAqbmdJZj1cIiFpdGVtcyB8fCBpdGVtcy5sZW5ndGggPT09IDAgfHwgKGVtcHR5SXRlbXNPbmx5ICYmIGhpZGVFbXB0eUl0ZW1zKVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjOHktZW1wdHktc3RhdGUgdGV4dC1sZWZ0XCI+XG4gICAgICAgICAgPGgxXG4gICAgICAgICAgICBjbGFzcz1cImM4eS1pY29uLWR1b2NvbG9yXCJcbiAgICAgICAgICAgIGM4eUljb249XCJ7eyBpY29uIH19IFwiXG4gICAgICAgICAgPjwvaDE+XG4gICAgICAgICAgPHA+e3sgKG5vSXRlbXNNZXNzYWdlIHwgdHJhbnNsYXRlKSA/PyAnTm8gaXRlbXMgdG8gZGlzcGxheS4nIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxjOHktbGlzdC1ncm91cD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbGlzdEl0ZW1zIHwgc2VsZWN0TW9kYWxGaWx0ZXJQaXBlIDogZmlsdGVyVGVybVwiPlxuICAgICAgICA8Yzh5LWxpICpuZ0lmPVwiaXRlbS5vcHRpb25zPy5sZW5ndGggPiAwIHx8ICFoaWRlRW1wdHlJdGVtc1wiPlxuICAgICAgICAgIDxjOHktbGktaWNvbj5cbiAgICAgICAgICAgIDxpIGM4eUljb249XCJ7eyBpY29uIH19XCI+PC9pPlxuICAgICAgICAgIDwvYzh5LWxpLWljb24+XG5cbiAgICAgICAgICA8Yzh5LWxpLWJvZHkgY2xhc3M9XCJjb250ZW50LWZsZXgtMzBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOVwiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGJvZHlQYXJ0IG9mIGl0ZW0uYm9keVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiYm9keVBhcnQuY2xhc3NcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGM4eS1oaWdobGlnaHRcbiAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJib2R5UGFydC52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICBbcGF0dGVybl09XCJmaWx0ZXJUZXJtXCJcbiAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cImJvZHlQYXJ0LnZhbHVlXCJcbiAgICAgICAgICAgICAgICA+PC9jOHktaGlnaGxpZ2h0PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY29sLTMgdGV4dC1yaWdodFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5hZGRpdGlvbmFsSW5mb3JtYXRpb25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cIml0ZW0uYWRkaXRpb25hbEluZm9ybWF0aW9uLmNsYXNzXCI+XG4gICAgICAgICAgICAgICAge3sgaXRlbS5hZGRpdGlvbmFsSW5mb3JtYXRpb24udmFsdWUgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2M4eS1saS1ib2R5PlxuXG4gICAgICAgICAgPGM4eS1saS1jb2xsYXBzZSAqbmdJZj1cIml0ZW0ub3B0aW9ucz8ubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgPGM4eS1saXN0LWdyb3VwPlxuICAgICAgICAgICAgICA8Yzh5LWxpICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgaXRlbS5vcHRpb25zXCI+XG4gICAgICAgICAgICAgICAgPGM4eS1saS1yYWRpb1xuICAgICAgICAgICAgICAgICAgW25hbWVdPVwibW9kZSA9PT0gJ3NpbmdsZScgPyAnc2luZ2xlJyA6IGl0ZW0uZ3JvdXBJZFwiXG4gICAgICAgICAgICAgICAgICAob25TZWxlY3QpPVwidXBkYXRlQ2hvaWNlKHsgaXRlbTogaXRlbSwgaWQ6IG9wdGlvbi5vYmouaWQgfSlcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm9wdGlvbi5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRdPVwib3B0aW9uLnNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICA+PC9jOHktbGktcmFkaW8+XG4gICAgICAgICAgICAgICAgPGM4eS1saS1ib2R5IGNsYXNzPVwiY29udGVudC1mbGV4LTIwXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb25QYXJ0IG9mIG9wdGlvbi5ib2R5OyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwib3B0aW9uUGFydC5jbGFzc1wiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxjOHktaGlnaGxpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAgW3BhdHRlcm5dPVwiZmlsdGVyVGVybVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3RleHRdPVwib3B0aW9uUGFydC52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgID48L2M4eS1oaWdobGlnaHQ+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJvcHRpb24udGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJvcHRpb24udGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0sIG9wdGlvbjogb3B0aW9uIH1cIlxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvYzh5LWxpLWJvZHk+XG4gICAgICAgICAgICAgIDwvYzh5LWxpPlxuICAgICAgICAgICAgPC9jOHktbGlzdC1ncm91cD5cbiAgICAgICAgICA8L2M4eS1saS1jb2xsYXBzZT5cbiAgICAgICAgPC9jOHktbGk+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxkaXYgKm5nSWY9XCJhcmVNb3JlRW50cmllc1wiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJhbGVydCBhbGVydC1pbmZvIG0tdC0xNiBtLXItOCBtLWwtOFwiXG4gICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgID5cbiAgICAgICAgICBTb21lIGVudHJpZXMgbWlnaHQgbm90IGJlIHNob3duLiBUcnkgbmFycm93aW5nIHNlYXJjaCBjcml0ZXJpYS5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2M4eS1saXN0LWdyb3VwPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgdGl0bGU9XCJ7eyBsYWJlbHMuY2FuY2VsIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgZGF0YS1jeT1cInNlbGVjdC1tb2RhbC0tQ2FuY2VsLWJ1dHRvblwiXG4gICAgICAqbmdJZj1cImxhYmVscy5jYW5jZWxcIlxuICAgICAgKGNsaWNrKT1cImRpc21pc3MoKVwiXG4gICAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgICAgaW5oZXJpdFxuICAgICAgW2FjdGlvbkRhdGFdPVwieyByZXN1bHQ6IGxhYmVscy5jYW5jZWwgfVwiXG4gICAgPlxuICAgICAge3sgbGFiZWxzLmNhbmNlbCB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgIHRpdGxlPVwie3sgbGFiZWxzLm9rIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgZGF0YS1jeT1cInNlbGVjdC1tb2RhbC0tU2F2ZS1idXR0b25cIlxuICAgICAgKGNsaWNrKT1cInNlbGVjdCgpXCJcbiAgICAgIFtkaXNhYmxlZF09XCIhc2VsZWN0ZWRcIlxuICAgICAgYzh5UHJvZHVjdEV4cGVyaWVuY2VcbiAgICAgIGluaGVyaXRcbiAgICAgIFthY3Rpb25EYXRhXT1cInsgcmVzdWx0OiBsYWJlbHMub2sgfVwiXG4gICAgPlxuICAgICAge3sgbGFiZWxzLm9rIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -8,8 +8,12 @@ export const PRODUCT_EXPERIENCE_CORE_SHARED = {
8
8
  QUICK_LINKS: {
9
9
  EVENTS: { QUICK_LINK_RIGHT_DRAWER: 'quickLinkRightDrawer' },
10
10
  COMPONENTS: { RIGHT_DRAWER_COMPONENT: 'right-drawer' },
11
- ACTIONS: {},
11
+ ACTIONS: {
12
+ ACTIVATE_SUPPORT_ACCESS: 'activateSupportAccess',
13
+ DEACTIVATE_SUPPORT_ACCESS: 'deactivateSupportAccess',
14
+ OPEN_SUPPORT_LINK: 'openSupportLink'
15
+ },
12
16
  RESULTS: {}
13
17
  }
14
18
  };
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc2hhcmVkL2NvcmUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUc7SUFDNUMsVUFBVSxFQUFFO1FBQ1YsTUFBTSxFQUFFLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRTtRQUM1QyxVQUFVLEVBQUUsRUFBRSxvQkFBb0IsRUFBRSxZQUFZLEVBQUU7UUFDbEQsT0FBTyxFQUFFLEVBQUU7UUFDWCxPQUFPLEVBQUUsRUFBRTtLQUNaO0lBQ0QsV0FBVyxFQUFFO1FBQ1gsTUFBTSxFQUFFLEVBQUUsdUJBQXVCLEVBQUUsc0JBQXNCLEVBQUU7UUFDM0QsVUFBVSxFQUFFLEVBQUUsc0JBQXNCLEVBQUUsY0FBYyxFQUFFO1FBQ3RELE9BQU8sRUFBRSxFQUFFO1FBQ1gsT0FBTyxFQUFFLEVBQUU7S0FDWjtDQUNPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgUFJPRFVDVF9FWFBFUklFTkNFX0NPUkVfU0hBUkVEID0ge1xuICBBQ1RJT05fQkFSOiB7XG4gICAgRVZFTlRTOiB7IEFDVElPTl9CQVJfSVRFTTogJ2FjdGlvbkJhckl0ZW0nIH0sXG4gICAgQ09NUE9ORU5UUzogeyBBQ1RJT05fQkFSX0NPTVBPTkVOVDogJ2FjdGlvbi1iYXInIH0sXG4gICAgQUNUSU9OUzoge30sXG4gICAgUkVTVUxUUzoge31cbiAgfSxcbiAgUVVJQ0tfTElOS1M6IHtcbiAgICBFVkVOVFM6IHsgUVVJQ0tfTElOS19SSUdIVF9EUkFXRVI6ICdxdWlja0xpbmtSaWdodERyYXdlcicgfSxcbiAgICBDT01QT05FTlRTOiB7IFJJR0hUX0RSQVdFUl9DT01QT05FTlQ6ICdyaWdodC1kcmF3ZXInIH0sXG4gICAgQUNUSU9OUzoge30sXG4gICAgUkVTVUxUUzoge31cbiAgfVxufSBhcyBjb25zdDtcbiJdfQ==
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc2hhcmVkL2NvcmUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUc7SUFDNUMsVUFBVSxFQUFFO1FBQ1YsTUFBTSxFQUFFLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRTtRQUM1QyxVQUFVLEVBQUUsRUFBRSxvQkFBb0IsRUFBRSxZQUFZLEVBQUU7UUFDbEQsT0FBTyxFQUFFLEVBQUU7UUFDWCxPQUFPLEVBQUUsRUFBRTtLQUNaO0lBQ0QsV0FBVyxFQUFFO1FBQ1gsTUFBTSxFQUFFLEVBQUUsdUJBQXVCLEVBQUUsc0JBQXNCLEVBQUU7UUFDM0QsVUFBVSxFQUFFLEVBQUUsc0JBQXNCLEVBQUUsY0FBYyxFQUFFO1FBQ3RELE9BQU8sRUFBRTtZQUNQLHVCQUF1QixFQUFFLHVCQUF1QjtZQUNoRCx5QkFBeUIsRUFBRSx5QkFBeUI7WUFDcEQsaUJBQWlCLEVBQUUsaUJBQWlCO1NBQ3JDO1FBQ0QsT0FBTyxFQUFFLEVBQUU7S0FDWjtDQUNPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgUFJPRFVDVF9FWFBFUklFTkNFX0NPUkVfU0hBUkVEID0ge1xuICBBQ1RJT05fQkFSOiB7XG4gICAgRVZFTlRTOiB7IEFDVElPTl9CQVJfSVRFTTogJ2FjdGlvbkJhckl0ZW0nIH0sXG4gICAgQ09NUE9ORU5UUzogeyBBQ1RJT05fQkFSX0NPTVBPTkVOVDogJ2FjdGlvbi1iYXInIH0sXG4gICAgQUNUSU9OUzoge30sXG4gICAgUkVTVUxUUzoge31cbiAgfSxcbiAgUVVJQ0tfTElOS1M6IHtcbiAgICBFVkVOVFM6IHsgUVVJQ0tfTElOS19SSUdIVF9EUkFXRVI6ICdxdWlja0xpbmtSaWdodERyYXdlcicgfSxcbiAgICBDT01QT05FTlRTOiB7IFJJR0hUX0RSQVdFUl9DT01QT05FTlQ6ICdyaWdodC1kcmF3ZXInIH0sXG4gICAgQUNUSU9OUzoge1xuICAgICAgQUNUSVZBVEVfU1VQUE9SVF9BQ0NFU1M6ICdhY3RpdmF0ZVN1cHBvcnRBY2Nlc3MnLFxuICAgICAgREVBQ1RJVkFURV9TVVBQT1JUX0FDQ0VTUzogJ2RlYWN0aXZhdGVTdXBwb3J0QWNjZXNzJyxcbiAgICAgIE9QRU5fU1VQUE9SVF9MSU5LOiAnb3BlblN1cHBvcnRMaW5rJ1xuICAgIH0sXG4gICAgUkVTVUxUUzoge31cbiAgfVxufSBhcyBjb25zdDtcbiJdfQ==
@@ -91,7 +91,9 @@ export class ConditionalTabsOutletComponent {
91
91
  ngOnInit() {
92
92
  this.tabsService.firstTab$.pipe(takeUntil(this.endSubscriptions$)).subscribe((tab) => {
93
93
  if (tab) {
94
- this.router.navigateByUrl(tab.path, { replaceUrl: true });
94
+ this.router.navigate(typeof tab.path === 'string' ? [tab.path] : tab.path, {
95
+ replaceUrl: true
96
+ });
95
97
  }
96
98
  });
97
99
  }
@@ -109,4 +111,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
109
111
  template: ` <router-outlet></router-outlet> `
110
112
  }]
111
113
  }], ctorParameters: () => [{ type: i1.TabsService }, { type: i2.Router }] });
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uYWwtdGFicy1vdXRsZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS90YWJzL2NvbmRpdGlvbmFsLXRhYnMtb3V0bGV0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBRTdDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyRUc7QUFLSCxNQUFNLE9BQU8sOEJBQThCO0lBR3pDLFlBQW9CLFdBQXdCLEVBQVUsTUFBYztRQUFoRCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFGNUQsc0JBQWlCLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7SUFFYyxDQUFDO0lBRXhFLFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDeEYsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDUixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDNUQsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BDLENBQUM7OEdBaEJVLDhCQUE4QjtrR0FBOUIsOEJBQThCLG1FQUYvQixtQ0FBbUM7OzJGQUVsQyw4QkFBOEI7a0JBSjFDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDZCQUE2QjtvQkFDdkMsUUFBUSxFQUFFLG1DQUFtQztpQkFDOUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVGFiIH0gZnJvbSAnLi90YWIubW9kZWwnO1xuaW1wb3J0IHsgVGFic1NlcnZpY2UgfSBmcm9tICcuL3RhYnMuc2VydmljZSc7XG5cbi8qKlxuICogUmVnaXN0ZXIgdGhpcyBjb21wb25lbnQgb24gdGhlIHBhcmVudCByb3V0ZSBvZiBhIHZpZXcgd2l0aCBtdWx0aXBsZSB0YWJzIHdoZXJlIHRoZSBmaXJzdCB0YWJcbiAqIGlzIGRpc3BsYXllZCBvbmx5IGNvbmRpdGlvbmFsbHkuXG4gKlxuICogR2l2ZW4gdGhlIGZvbGxvd2luZyByb3V0ZXMgbGVhZGluZyB0byBhIHNpbmdsZSB2aWV3IHdpdGggbXVsdGlwbGUgdGFiczo8YnI+XG4gKiAveW91cnBhdGgvdGFiLWEgLT4gVGFiIEE8YnI+XG4gKiAveW91cnBhdGgvdGFiLWIgLT4gVGFiIEI8YnI+XG4gKiAveW91cnBhdGgvdGFiLWMgLT4gVGFiIENcbiAqXG4gKiBZb3VyIGNvbXBvbmVudHMgd2lsbCBiZSByZWdpc3RlcmVkIGxpa2VcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGV4cG9ydCBjb25zdCByb3V0ZXM6IFJvdXRlW10gPSBbXG4gKiAgIHtcbiAqICAgICBwYXRoOiAneW91cnBhdGgvdGFiLWEnLFxuICogICAgIGNvbXBvbmVudDogVGFiQUNvbXBvbmVudFxuICogICB9LFxuICogICB7XG4gKiAgICAgcGF0aDogJ3lvdXJwYXRoL3RhYi1iJyxcbiAqICAgICBjb21wb25lbnQ6IFRhYkJDb21wb25lbnRcbiAqICAgfSxcbiAqICAge1xuICogICAgIHBhdGg6ICd5b3VycGF0aC90YWItYycsXG4gKiAgICAgY29tcG9uZW50OiBUYWJDQ29tcG9uZW50XG4gKiAgIH1cbiAqIF07XG4gKiBgYGBcbiAqXG4gKiBJbiB0aGUgc2ltcGxlIGNhc2Ugd2hlcmUgVGFiIEEgaXMgdGhlIGZpcnN0IHRhYiBvbiB0aGUgdmlldyBhbmQgaXQgaXMgYWx3YXlzIGRpc3BsYXllZCwgeW91IGNhbiByZWdpc3RlclxuICogeW91ciB2aWV3IGluIHRoZSBuYXZpZ2F0aW9uIHdpdGggYSBzaW1pbGFyIG5hdmlnYXRvciBub2RlOlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIG5ldyBOYXZpZ2F0b3JOb2RlKHtcbiAqICAgbGFiZWw6IGdldHRleHQoJ015IHRhYnMnKSxcbiAqICAgcGF0aDogJ3lvdXJwYXRoL3RhYi1hJyxcbiAqICAgaWNvbjogJ2dlYXJzJyxcbiAqICAgcGFyZW50OiBnZXR0ZXh0KCdTb21lIHBhcmVudCBub2RlJyksXG4gKiAgIHByaW9yaXR5OiAxMDBcbiAqIH0pXG4gKiBgYGBcbiAqXG4gKiBUaGlzIHdpbGwgbmF2aWdhdGUgdG8gdGhlIGZpcnN0IHRhYidzIGNvbXBvbmVudCBhbmQgYWN0aXZhdGUgdGhlIGZpcnN0IHRhYiBpbiB0aGUgdmlldy5cbiAqXG4gKiBJbiBjYXNlIFRhYiBBIGlzIGRpc3BsYXllZCBjb25kaXRpb25hbGx5IHlvdSBjYW5ub3QgbGluayBpdCBmcm9tIGEgbmF2aWdhdG9yIG5vZGUgc2luY2UgaXQgbWF5IG5vdCBiZSBhdmFpbGFibGUgaW4gc29tZSBjYXNlcy5cbiAqIEluIHRoaXMgc2l0dWF0aW9uIGBDb25kaXRpb25hbFRhYnNPdXRsZXRDb21wb25lbnRgIGNvbWVzIGhhbmR5IGFzIGl0IHdpbGwgZm9yd2FyZCB1c2VycyB0byB0aGUgZmlyc3QgYXZhaWxhYmxlIHRhYiBvbiB5b3VyIHZpZXc6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogbmV3IE5hdmlnYXRvck5vZGUoe1xuICogICBsYWJlbDogZ2V0dGV4dCgnTXkgdGFicycpLFxuICogICBwYXRoOiAneW91cnBhdGgnLCAvLyBub3RlIHRoYXQgaGVyZSB3ZSB1c2Ugb25seSB0aGUgcGFyZW50IHJvdXRlXG4gKiAgIGljb246ICdnZWFycycsXG4gKiAgIHBhcmVudDogZ2V0dGV4dCgnU29tZSBwYXJlbnQgbm9kZScpLFxuICogICBwcmlvcml0eTogMTAwXG4gKiB9KVxuICpcbiAqIFsuLi5dXG4gKlxuICogZXhwb3J0IGNvbnN0IHJvdXRlczogUm91dGVbXSA9IFtcbiAqICAge1xuICogICAgIHBhdGg6ICd5b3VycGF0aCcsXG4gKiAgICAgY29tcG9uZW50OiBDb25kaXRpb25hbFRhYnNPdXRsZXRDb21wb25lbnQgLy8gd2UgcmVnaXN0ZXIgQ29uZGl0aW9uYWxUYWJzT3V0bGV0Q29tcG9uZW50IGZvciB0aGUgcGFyZW50IHBhdGhcbiAqICAgfSxcbiAqICAge1xuICogICAgIHBhdGg6ICd5b3VycGF0aC90YWItYScsXG4gKiAgICAgY29tcG9uZW50OiBUYWJBQ29tcG9uZW50XG4gKiAgIH0sXG4gKiAgIHtcbiAqICAgICBwYXRoOiAneW91cnBhdGgvdGFiLWInLFxuICogICAgIGNvbXBvbmVudDogVGFiQkNvbXBvbmVudFxuICogICB9LFxuICogICB7XG4gKiAgICAgcGF0aDogJ3lvdXJwYXRoL3RhYi1jJyxcbiAqICAgICBjb21wb25lbnQ6IFRhYkNDb21wb25lbnRcbiAqICAgfVxuICogXTtcbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktY29uZGl0aW9uYWwtdGFicy1vdXRsZXQnLFxuICB0ZW1wbGF0ZTogYCA8cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+IGBcbn0pXG5leHBvcnQgY2xhc3MgQ29uZGl0aW9uYWxUYWJzT3V0bGV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIGVuZFN1YnNjcmlwdGlvbnMkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRhYnNTZXJ2aWNlOiBUYWJzU2VydmljZSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnRhYnNTZXJ2aWNlLmZpcnN0VGFiJC5waXBlKHRha2VVbnRpbCh0aGlzLmVuZFN1YnNjcmlwdGlvbnMkKSkuc3Vic2NyaWJlKCh0YWI6IFRhYikgPT4ge1xuICAgICAgaWYgKHRhYikge1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRhYi5wYXRoLCB7IHJlcGxhY2VVcmw6IHRydWUgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmVuZFN1YnNjcmlwdGlvbnMkLm5leHQoKTtcbiAgICB0aGlzLmVuZFN1YnNjcmlwdGlvbnMkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uYWwtdGFicy1vdXRsZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS90YWJzL2NvbmRpdGlvbmFsLXRhYnMtb3V0bGV0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBRTdDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyRUc7QUFLSCxNQUFNLE9BQU8sOEJBQThCO0lBR3pDLFlBQ1UsV0FBd0IsRUFDeEIsTUFBYztRQURkLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFKaEIsc0JBQWlCLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7SUFLdEQsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDeEYsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDUixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRTtvQkFDekUsVUFBVSxFQUFFLElBQUk7aUJBQ2pCLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNwQyxDQUFDOzhHQXJCVSw4QkFBOEI7a0dBQTlCLDhCQUE4QixtRUFGL0IsbUNBQW1DOzsyRkFFbEMsOEJBQThCO2tCQUoxQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw2QkFBNkI7b0JBQ3ZDLFFBQVEsRUFBRSxtQ0FBbUM7aUJBQzlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRhYiB9IGZyb20gJy4vdGFiLm1vZGVsJztcbmltcG9ydCB7IFRhYnNTZXJ2aWNlIH0gZnJvbSAnLi90YWJzLnNlcnZpY2UnO1xuXG4vKipcbiAqIFJlZ2lzdGVyIHRoaXMgY29tcG9uZW50IG9uIHRoZSBwYXJlbnQgcm91dGUgb2YgYSB2aWV3IHdpdGggbXVsdGlwbGUgdGFicyB3aGVyZSB0aGUgZmlyc3QgdGFiXG4gKiBpcyBkaXNwbGF5ZWQgb25seSBjb25kaXRpb25hbGx5LlxuICpcbiAqIEdpdmVuIHRoZSBmb2xsb3dpbmcgcm91dGVzIGxlYWRpbmcgdG8gYSBzaW5nbGUgdmlldyB3aXRoIG11bHRpcGxlIHRhYnM6PGJyPlxuICogL3lvdXJwYXRoL3RhYi1hIC0+IFRhYiBBPGJyPlxuICogL3lvdXJwYXRoL3RhYi1iIC0+IFRhYiBCPGJyPlxuICogL3lvdXJwYXRoL3RhYi1jIC0+IFRhYiBDXG4gKlxuICogWW91ciBjb21wb25lbnRzIHdpbGwgYmUgcmVnaXN0ZXJlZCBsaWtlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBleHBvcnQgY29uc3Qgcm91dGVzOiBSb3V0ZVtdID0gW1xuICogICB7XG4gKiAgICAgcGF0aDogJ3lvdXJwYXRoL3RhYi1hJyxcbiAqICAgICBjb21wb25lbnQ6IFRhYkFDb21wb25lbnRcbiAqICAgfSxcbiAqICAge1xuICogICAgIHBhdGg6ICd5b3VycGF0aC90YWItYicsXG4gKiAgICAgY29tcG9uZW50OiBUYWJCQ29tcG9uZW50XG4gKiAgIH0sXG4gKiAgIHtcbiAqICAgICBwYXRoOiAneW91cnBhdGgvdGFiLWMnLFxuICogICAgIGNvbXBvbmVudDogVGFiQ0NvbXBvbmVudFxuICogICB9XG4gKiBdO1xuICogYGBgXG4gKlxuICogSW4gdGhlIHNpbXBsZSBjYXNlIHdoZXJlIFRhYiBBIGlzIHRoZSBmaXJzdCB0YWIgb24gdGhlIHZpZXcgYW5kIGl0IGlzIGFsd2F5cyBkaXNwbGF5ZWQsIHlvdSBjYW4gcmVnaXN0ZXJcbiAqIHlvdXIgdmlldyBpbiB0aGUgbmF2aWdhdGlvbiB3aXRoIGEgc2ltaWxhciBuYXZpZ2F0b3Igbm9kZTpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBuZXcgTmF2aWdhdG9yTm9kZSh7XG4gKiAgIGxhYmVsOiBnZXR0ZXh0KCdNeSB0YWJzJyksXG4gKiAgIHBhdGg6ICd5b3VycGF0aC90YWItYScsXG4gKiAgIGljb246ICdnZWFycycsXG4gKiAgIHBhcmVudDogZ2V0dGV4dCgnU29tZSBwYXJlbnQgbm9kZScpLFxuICogICBwcmlvcml0eTogMTAwXG4gKiB9KVxuICogYGBgXG4gKlxuICogVGhpcyB3aWxsIG5hdmlnYXRlIHRvIHRoZSBmaXJzdCB0YWIncyBjb21wb25lbnQgYW5kIGFjdGl2YXRlIHRoZSBmaXJzdCB0YWIgaW4gdGhlIHZpZXcuXG4gKlxuICogSW4gY2FzZSBUYWIgQSBpcyBkaXNwbGF5ZWQgY29uZGl0aW9uYWxseSB5b3UgY2Fubm90IGxpbmsgaXQgZnJvbSBhIG5hdmlnYXRvciBub2RlIHNpbmNlIGl0IG1heSBub3QgYmUgYXZhaWxhYmxlIGluIHNvbWUgY2FzZXMuXG4gKiBJbiB0aGlzIHNpdHVhdGlvbiBgQ29uZGl0aW9uYWxUYWJzT3V0bGV0Q29tcG9uZW50YCBjb21lcyBoYW5keSBhcyBpdCB3aWxsIGZvcndhcmQgdXNlcnMgdG8gdGhlIGZpcnN0IGF2YWlsYWJsZSB0YWIgb24geW91ciB2aWV3OlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIG5ldyBOYXZpZ2F0b3JOb2RlKHtcbiAqICAgbGFiZWw6IGdldHRleHQoJ015IHRhYnMnKSxcbiAqICAgcGF0aDogJ3lvdXJwYXRoJywgLy8gbm90ZSB0aGF0IGhlcmUgd2UgdXNlIG9ubHkgdGhlIHBhcmVudCByb3V0ZVxuICogICBpY29uOiAnZ2VhcnMnLFxuICogICBwYXJlbnQ6IGdldHRleHQoJ1NvbWUgcGFyZW50IG5vZGUnKSxcbiAqICAgcHJpb3JpdHk6IDEwMFxuICogfSlcbiAqXG4gKiBbLi4uXVxuICpcbiAqIGV4cG9ydCBjb25zdCByb3V0ZXM6IFJvdXRlW10gPSBbXG4gKiAgIHtcbiAqICAgICBwYXRoOiAneW91cnBhdGgnLFxuICogICAgIGNvbXBvbmVudDogQ29uZGl0aW9uYWxUYWJzT3V0bGV0Q29tcG9uZW50IC8vIHdlIHJlZ2lzdGVyIENvbmRpdGlvbmFsVGFic091dGxldENvbXBvbmVudCBmb3IgdGhlIHBhcmVudCBwYXRoXG4gKiAgIH0sXG4gKiAgIHtcbiAqICAgICBwYXRoOiAneW91cnBhdGgvdGFiLWEnLFxuICogICAgIGNvbXBvbmVudDogVGFiQUNvbXBvbmVudFxuICogICB9LFxuICogICB7XG4gKiAgICAgcGF0aDogJ3lvdXJwYXRoL3RhYi1iJyxcbiAqICAgICBjb21wb25lbnQ6IFRhYkJDb21wb25lbnRcbiAqICAgfSxcbiAqICAge1xuICogICAgIHBhdGg6ICd5b3VycGF0aC90YWItYycsXG4gKiAgICAgY29tcG9uZW50OiBUYWJDQ29tcG9uZW50XG4gKiAgIH1cbiAqIF07XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWNvbmRpdGlvbmFsLXRhYnMtb3V0bGV0JyxcbiAgdGVtcGxhdGU6IGAgPHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PiBgXG59KVxuZXhwb3J0IGNsYXNzIENvbmRpdGlvbmFsVGFic091dGxldENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBlbmRTdWJzY3JpcHRpb25zJDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0YWJzU2VydmljZTogVGFic1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy50YWJzU2VydmljZS5maXJzdFRhYiQucGlwZSh0YWtlVW50aWwodGhpcy5lbmRTdWJzY3JpcHRpb25zJCkpLnN1YnNjcmliZSgodGFiOiBUYWIpID0+IHtcbiAgICAgIGlmICh0YWIpIHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUodHlwZW9mIHRhYi5wYXRoID09PSAnc3RyaW5nJyA/IFt0YWIucGF0aF0gOiB0YWIucGF0aCwge1xuICAgICAgICAgIHJlcGxhY2VVcmw6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmVuZFN1YnNjcmlwdGlvbnMkLm5leHQoKTtcbiAgICB0aGlzLmVuZFN1YnNjcmlwdGlvbnMkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==
@@ -46,4 +46,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
46
46
  }], onSelect: [{
47
47
  type: Output
48
48
  }] } });
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvdGFicy90YWIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUNULEtBQUssRUFDTCxnQkFBZ0IsRUFHaEIsUUFBUSxFQUNSLG1CQUFtQixFQUNuQixNQUFNLEVBQ04sWUFBWSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBTzdDLE1BQU0sT0FBTyxZQUFZO0lBWXZCLFlBQ1UsSUFBaUIsRUFDekIsU0FBOEI7UUFEdEIsU0FBSSxHQUFKLElBQUksQ0FBYTtRQVZsQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBT1YsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFNdEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7SUFDNUIsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBVyxDQUFDLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQVcsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7OEdBekJVLFlBQVk7a0dBQVosWUFBWSxtV0FGYiwyREFBMkQ7OzJGQUUxRCxZQUFZO2tCQUp4QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxTQUFTO29CQUNuQixRQUFRLEVBQUUsMkRBQTJEO2lCQUN0RTtrSEFFc0MsUUFBUTtzQkFBNUMsU0FBUzt1QkFBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUMxQixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0ksUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgVmlld0NoaWxkLFxuICBJbnB1dCxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgT25EZXN0cm95LFxuICBJbmplY3RvcixcbiAgRW52aXJvbm1lbnRJbmplY3RvcixcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUYWJzU2VydmljZSB9IGZyb20gJy4vdGFicy5zZXJ2aWNlJztcbmltcG9ydCB7IFRhYiwgVGFiV2l0aFRlbXBsYXRlIH0gZnJvbSAnLi90YWIubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktdGFiJyxcbiAgdGVtcGxhdGU6ICc8bmctdGVtcGxhdGUgI3RwbD48bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9uZy10ZW1wbGF0ZT4nXG59KVxuZXhwb3J0IGNsYXNzIFRhYkNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSwgVGFiV2l0aFRlbXBsYXRlIHtcbiAgQFZpZXdDaGlsZCgndHBsJywgeyBzdGF0aWM6IGZhbHNlIH0pIHRlbXBsYXRlOiBWaWV3Q29udGFpbmVyUmVmO1xuICBASW5wdXQoKSBwYXRoOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGxhYmVsID0gJyc7XG4gIEBJbnB1dCgpIGljb246IHN0cmluZztcbiAgQElucHV0KCkgcHJpb3JpdHk6IG51bWJlcjtcbiAgQElucHV0KCkgb3JpZW50YXRpb246ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCc7XG4gIEBJbnB1dCgpIGluamVjdG9yOiBJbmplY3RvcjtcbiAgQElucHV0KCkgdGFic091dGxldDogc3RyaW5nO1xuICBASW5wdXQoKSBpc0FjdGl2ZTogYm9vbGVhbjtcbiAgQE91dHB1dCgpIG9uU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdGFiczogVGFic1NlcnZpY2UsXG4gICAgX2luamVjdG9yOiBFbnZpcm9ubWVudEluamVjdG9yXG4gICkge1xuICAgIHRoaXMuaW5qZWN0b3IgPSBfaW5qZWN0b3I7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnRhYnMuYWRkKHRoaXMgYXMgVGFiKSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnRhYnMucmVtb3ZlKHRoaXMgYXMgVGFiKTtcbiAgfVxufVxuIl19
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvdGFicy90YWIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUNULEtBQUssRUFDTCxnQkFBZ0IsRUFHaEIsUUFBUSxFQUNSLG1CQUFtQixFQUNuQixNQUFNLEVBQ04sWUFBWSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBUTdDLE1BQU0sT0FBTyxZQUFZO0lBWXZCLFlBQ1UsSUFBaUIsRUFDekIsU0FBOEI7UUFEdEIsU0FBSSxHQUFKLElBQUksQ0FBYTtRQVZsQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBT1YsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFNdEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7SUFDNUIsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBVyxDQUFDLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQVcsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7OEdBekJVLFlBQVk7a0dBQVosWUFBWSxtV0FGYiwyREFBMkQ7OzJGQUUxRCxZQUFZO2tCQUp4QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxTQUFTO29CQUNuQixRQUFRLEVBQUUsMkRBQTJEO2lCQUN0RTtrSEFFc0MsUUFBUTtzQkFBNUMsU0FBUzt1QkFBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUMxQixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0ksUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgVmlld0NoaWxkLFxuICBJbnB1dCxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgT25EZXN0cm95LFxuICBJbmplY3RvcixcbiAgRW52aXJvbm1lbnRJbmplY3RvcixcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUYWJzU2VydmljZSB9IGZyb20gJy4vdGFicy5zZXJ2aWNlJztcbmltcG9ydCB7IFRhYiwgVGFiV2l0aFRlbXBsYXRlIH0gZnJvbSAnLi90YWIubW9kZWwnO1xuaW1wb3J0IHsgU3VwcG9ydGVkSWNvbnNTdWdnZXN0aW9ucyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvaWNvbi1zZWxlY3Rvci9pY29ucyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS10YWInLFxuICB0ZW1wbGF0ZTogJzxuZy10ZW1wbGF0ZSAjdHBsPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L25nLXRlbXBsYXRlPidcbn0pXG5leHBvcnQgY2xhc3MgVGFiQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95LCBUYWJXaXRoVGVtcGxhdGU8c3RyaW5nPiB7XG4gIEBWaWV3Q2hpbGQoJ3RwbCcsIHsgc3RhdGljOiBmYWxzZSB9KSB0ZW1wbGF0ZTogVmlld0NvbnRhaW5lclJlZjtcbiAgQElucHV0KCkgcGF0aDogc3RyaW5nO1xuICBASW5wdXQoKSBsYWJlbCA9ICcnO1xuICBASW5wdXQoKSBpY29uOiBTdXBwb3J0ZWRJY29uc1N1Z2dlc3Rpb25zO1xuICBASW5wdXQoKSBwcmlvcml0eTogbnVtYmVyO1xuICBASW5wdXQoKSBvcmllbnRhdGlvbjogJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJztcbiAgQElucHV0KCkgaW5qZWN0b3I6IEluamVjdG9yO1xuICBASW5wdXQoKSB0YWJzT3V0bGV0OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGlzQWN0aXZlOiBib29sZWFuO1xuICBAT3V0cHV0KCkgb25TZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0YWJzOiBUYWJzU2VydmljZSxcbiAgICBfaW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3JcbiAgKSB7XG4gICAgdGhpcy5pbmplY3RvciA9IF9pbmplY3RvcjtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudGFicy5hZGQodGhpcyBhcyBUYWIpKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMudGFicy5yZW1vdmUodGhpcyBhcyBUYWIpO1xuICB9XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS90YWJzL3RhYi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IsIFR5cGUsIFZpZXdDb250YWluZXJSZWYsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRXh0ZW5zaW9uRmFjdG9yeSB9IGZyb20gJy4uL2NvbW1vbi9leHRlbnNpb24taG9va3MnO1xuXG4vKipcbiAqIEFuIHRhYiBhbGxvd3MgdG8gc3dpdGNoIHJvdXRlc1xuICogb24gYSBwYWdlLlxuICovXG5leHBvcnQgdHlwZSBUYWIgPSBUYWJXaXRoVGVtcGxhdGUgfCBUYWJXaXRoQ29tcG9uZW50O1xuXG5pbnRlcmZhY2UgVGFiQmFzZSB7XG4gIC8qKlxuICAgKiBPcmRlcmluZyBvZiB0aGUgdGFicyAoaGlnaCBudW1iZXIgZmlyc3QpIChvcHRpb25hbClcbiAgICovXG4gIHByaW9yaXR5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBbGlnbm1lbnQgZm9yIHRhYnMgKG9wdGlvbmFsKVxuICAgKi9cbiAgb3JpZW50YXRpb24/OiAnaG9yaXpvbnRhbCcgfCAndmVydGljYWwnO1xuICAvKipcbiAgICogSGlkZSB0YWIgKG9wdGlvbmFsKVxuICAgKi9cbiAgaGlkZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJZCB0byBpZGVudGlmeSBzcGVjaWZpYyBmZWF0dXJlIHRhYi5cbiAgICovXG4gIGZlYXR1cmVJZD86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBpbmplY3RvciB0byB1c2UuIElmIG5vdCBzZXQsIHRoZSBkZWZhdWx0IHJvb3QgaW5qZWN0b3Igd2lsbCBiZSB1c2VkLlxuICAgKi9cbiAgaW5qZWN0b3I/OiBJbmplY3RvcjtcbiAgLyoqXG4gICAqIElmIHRoZXJlIGlzIGp1c3QgYSBzaW5nbGUgdGFiIGZvciBhIHJvdXRlIHRoZSB0YWIgd2lsbCBub3QgYmUgc2hvdy5cbiAgICogSWYgeW91IHNldCB0aGlzIGZsYWcgdG8gdHJ1ZSB0aGUgdGFiIGlzIHN0aWxsIGdvaW5nIHRvIGJlIHNob3duIGV2ZW4gaWYgaXQgaXMgdGhlIG9ubHkgb25lLlxuICAgKi9cbiAgc2hvd0Fsd2F5cz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSB0YWIgb3V0bGV0IHdoaWNoIHRoZSB0YWJzIHdpbGwgdXNlLiBFLmcuIGNhbiBiZSB1c2VkIHRvIGRpc3BsYXkgaW5saW5lIHRhYnMuXG4gICAqL1xuICB0YWJzT3V0bGV0Pzogc3RyaW5nO1xuICAvKipcbiAgICogQWRkaXRpb25hbCBpY29uIHByb3ZpZGVkIHRvIGluZGljYXRlIHNwZWNpYWwga2luZCBvZiB0YWJzLiBFLmcuIHR5cGVkIGRhc2hib2FyZHMuXG4gICAqL1xuICBiYWRnZT86IHN0cmluZztcbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgZGVzY3JpcHRpb24gd2hpY2ggY2FuIGJlIGFkZGVkIHRvIHRoZSB0YWIuXG4gICAqL1xuICB0b29sdGlwVGV4dD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWJXaXRoVGVtcGxhdGUgZXh0ZW5kcyBUYWJCYXNlIHtcbiAgLyoqXG4gICAqIFRoZSBhbmd1bGFyIHJvdXRlIHBhdGggdG8gbmF2aWdhdGUgdG8gb24gY2xpY2suXG4gICAqL1xuICBwYXRoPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGxhYmVsIHRvIHNob3cgZm9yIHRoYXQgdGFiLlxuICAgKi9cbiAgbGFiZWw6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBpY29uIHRvIHNob3cgb24gdGhpcyB0YWIgKG9wdGlvbmFsKVxuICAgKi9cbiAgaWNvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZXIgdG8gaGFuZGxlIHRoZSBzZWxlY3Rpb24gb2YgdGhlIHRhYi5cbiAgICovXG4gIG9uU2VsZWN0PzogRXZlbnRFbWl0dGVyPHZvaWQ+O1xuICAvKipcbiAgICogQWRkaXRpb25hbCB0ZW1wbGF0ZSB0byByZXBsYWNlIHRoZSBsYWJlbCAobm90ZSB0aGUgbGFiZWwgd2lsbCBzdGlsbCBiZSB1c2VkIGFzIHRpdGxlIGFuZCBvbiBtb2JpbGUgZGV2aWNlcylcbiAgICovXG4gIHRlbXBsYXRlPzogVmlld0NvbnRhaW5lclJlZjtcbiAgY29tcG9uZW50PzogbmV2ZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFiV2l0aENvbXBvbmVudCBleHRlbmRzIFRhYkJhc2Uge1xuICB0ZW1wbGF0ZT86IG5ldmVyO1xuICBpY29uPzogbmV2ZXI7XG4gIHBhdGg/OiBuZXZlcjtcbiAgbGFiZWw/OiBuZXZlcjtcbiAgLyoqXG4gICAqIEFuZ3VsYXIgY29tcG9uZW50IChjYW4gYmUgdXNlZCB0byBhZGQgYW55IGNvbXBvbmVudCBpbnNpZGUgdGhlIGxpc3QgaXRlbSBvZiB0aGUgdGFicylcbiAgICpcbiAgICogTm90ZTogVGhlIGNvbXBvbmVudCBtdXN0IGhhbmRsZSBpdCByZXNwb25zaXZlIG1vYmlsZSB2aWV3IGl0c2VsZi5cbiAgICogTm90ZTogQXMgYSBUYWIgaXMgcmVuZGVyZWQgaW4gYSA8bGk+IGl0IGlzIGdvb2QgcHJhY3RpY2VcbiAgICogdG8gcmVtb3ZlIHRoZSB3cmFwcGVyIG5vZGUgdG8gbm90IHJ1biBpbnRvIENTUyBpc3N1ZXMuIFlvdVxuICAgKiBjYW4gZG8gc28gYnkgZGVmaW5pbmcgdGhlIHNlbGVjdG9yIGFzIGEgbGk6IGBsaVtjdXN0b21FeHRlbnNpb25dYFxuICAgKiAoc2VlOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNTY4ODc2MzAvOTIzMjcwIG9yXG4gICAqIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8zODcxNjE2NC85MjMyNzApXG4gICAqL1xuICBjb21wb25lbnQ6IFR5cGU8YW55Pjtcbn1cblxuLyoqXG4gKiBGYWN0b3J5IHRvIGltcGxlbWVudCBpZiB1c2VkIGluIGEgaG9vayBmb3IgTXVsdGkgUHJvdmlkZXIgZXh0ZW5zaW9uLlxuICovXG5leHBvcnQgdHlwZSBUYWJGYWN0b3J5ID0gRXh0ZW5zaW9uRmFjdG9yeTxUYWI+O1xuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS90YWJzL3RhYi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IsIFR5cGUsIFZpZXdDb250YWluZXJSZWYsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRXh0ZW5zaW9uRmFjdG9yeSB9IGZyb20gJy4uL2NvbW1vbi9leHRlbnNpb24taG9va3MnO1xuaW1wb3J0IHsgU3VwcG9ydGVkSWNvbnNTdWdnZXN0aW9ucyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvaWNvbi1zZWxlY3Rvci9pY29ucyc7XG5cbi8qKlxuICogQW4gdGFiIGFsbG93cyB0byBzd2l0Y2ggcm91dGVzXG4gKiBvbiBhIHBhZ2Ugb3IgcHJvdmlkZSBhbiBhZGRpdGlvbmFsIGNvbXBvbmVudC5cbiAqXG4gKiBJZiB1c2VkIGZvciBzd2l0Y2hpbmcgcm91dGUsIHRoZSByb3V0ZXIgbGlua1xuICogY2FuIGJlIHByb3ZpZGVkIGFzIHN0cmluZyBvciBhbnlbXSwgYXMgc3VwcG9ydGVkXG4gKiBpbiB0aGUgcm91dGVyTGluayBkaXJlY3RpdmUuXG4gKi9cbmV4cG9ydCB0eXBlIFRhYjxUID0gc3RyaW5nIHwgYW55W10+ID0gVGFiV2l0aFRlbXBsYXRlPFQ+IHwgVGFiV2l0aENvbXBvbmVudDtcblxuaW50ZXJmYWNlIFRhYkJhc2Uge1xuICAvKipcbiAgICogT3JkZXJpbmcgb2YgdGhlIHRhYnMgKGhpZ2ggbnVtYmVyIGZpcnN0KSAob3B0aW9uYWwpXG4gICAqL1xuICBwcmlvcml0eT86IG51bWJlcjtcblxuICAvKipcbiAgICogQWxpZ25tZW50IGZvciB0YWJzIChvcHRpb25hbClcbiAgICovXG4gIG9yaWVudGF0aW9uPzogJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJztcbiAgLyoqXG4gICAqIEhpZGUgdGFiIChvcHRpb25hbClcbiAgICovXG4gIGhpZGU/OiBib29sZWFuO1xuICAvKipcbiAgICogSWQgdG8gaWRlbnRpZnkgc3BlY2lmaWMgZmVhdHVyZSB0YWIuXG4gICAqL1xuICBmZWF0dXJlSWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgaW5qZWN0b3IgdG8gdXNlLiBJZiBub3Qgc2V0LCB0aGUgZGVmYXVsdCByb290IGluamVjdG9yIHdpbGwgYmUgdXNlZC5cbiAgICovXG4gIGluamVjdG9yPzogSW5qZWN0b3I7XG4gIC8qKlxuICAgKiBJZiB0aGVyZSBpcyBqdXN0IGEgc2luZ2xlIHRhYiBmb3IgYSByb3V0ZSB0aGUgdGFiIHdpbGwgbm90IGJlIHNob3cuXG4gICAqIElmIHlvdSBzZXQgdGhpcyBmbGFnIHRvIHRydWUgdGhlIHRhYiBpcyBzdGlsbCBnb2luZyB0byBiZSBzaG93biBldmVuIGlmIGl0IGlzIHRoZSBvbmx5IG9uZS5cbiAgICovXG4gIHNob3dBbHdheXM/OiBib29sZWFuO1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgdGFiIG91dGxldCB3aGljaCB0aGUgdGFicyB3aWxsIHVzZS4gRS5nLiBjYW4gYmUgdXNlZCB0byBkaXNwbGF5IGlubGluZSB0YWJzLlxuICAgKi9cbiAgdGFic091dGxldD86IHN0cmluZztcbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgaWNvbiBwcm92aWRlZCB0byBpbmRpY2F0ZSBzcGVjaWFsIGtpbmQgb2YgdGFicy4gRS5nLiB0eXBlZCBkYXNoYm9hcmRzLlxuICAgKi9cbiAgYmFkZ2U/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGRlc2NyaXB0aW9uIHdoaWNoIGNhbiBiZSBhZGRlZCB0byB0aGUgdGFiLlxuICAgKi9cbiAgdG9vbHRpcFRleHQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFiV2l0aFRlbXBsYXRlPFQgPSBzdHJpbmc+IGV4dGVuZHMgVGFiQmFzZSB7XG4gIC8qKlxuICAgKiBUaGUgYW5ndWxhciByb3V0ZSBwYXRoIHRvIG5hdmlnYXRlIHRvIG9uIGNsaWNrLlxuICAgKi9cbiAgcGF0aD86IFQ7XG5cbiAgLyoqXG4gICAqIFRoZSBsYWJlbCB0byBzaG93IGZvciB0aGF0IHRhYi5cbiAgICovXG4gIGxhYmVsOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgaWNvbiB0byBzaG93IG9uIHRoaXMgdGFiIChvcHRpb25hbClcbiAgICovXG4gIGljb24/OiBTdXBwb3J0ZWRJY29uc1N1Z2dlc3Rpb25zO1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlciB0byBoYW5kbGUgdGhlIHNlbGVjdGlvbiBvZiB0aGUgdGFiLlxuICAgKi9cbiAgb25TZWxlY3Q/OiBFdmVudEVtaXR0ZXI8dm9pZD47XG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIHRlbXBsYXRlIHRvIHJlcGxhY2UgdGhlIGxhYmVsIChub3RlIHRoZSBsYWJlbCB3aWxsIHN0aWxsIGJlIHVzZWQgYXMgdGl0bGUgYW5kIG9uIG1vYmlsZSBkZXZpY2VzKVxuICAgKi9cbiAgdGVtcGxhdGU/OiBWaWV3Q29udGFpbmVyUmVmO1xuICBjb21wb25lbnQ/OiBuZXZlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWJXaXRoQ29tcG9uZW50IGV4dGVuZHMgVGFiQmFzZSB7XG4gIHRlbXBsYXRlPzogbmV2ZXI7XG4gIGljb24/OiBuZXZlcjtcbiAgcGF0aD86IG5ldmVyO1xuICBsYWJlbD86IG5ldmVyO1xuICAvKipcbiAgICogQW5ndWxhciBjb21wb25lbnQgKGNhbiBiZSB1c2VkIHRvIGFkZCBhbnkgY29tcG9uZW50IGluc2lkZSB0aGUgbGlzdCBpdGVtIG9mIHRoZSB0YWJzKVxuICAgKlxuICAgKiBOb3RlOiBUaGUgY29tcG9uZW50IG11c3QgaGFuZGxlIGl0IHJlc3BvbnNpdmUgbW9iaWxlIHZpZXcgaXRzZWxmLlxuICAgKiBOb3RlOiBBcyBhIFRhYiBpcyByZW5kZXJlZCBpbiBhIDxsaT4gaXQgaXMgZ29vZCBwcmFjdGljZVxuICAgKiB0byByZW1vdmUgdGhlIHdyYXBwZXIgbm9kZSB0byBub3QgcnVuIGludG8gQ1NTIGlzc3Vlcy4gWW91XG4gICAqIGNhbiBkbyBzbyBieSBkZWZpbmluZyB0aGUgc2VsZWN0b3IgYXMgYSBsaTogYGxpW2N1c3RvbUV4dGVuc2lvbl1gXG4gICAqIChzZWU6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS81Njg4NzYzMC85MjMyNzAgb3JcbiAgICogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzM4NzE2MTY0LzkyMzI3MClcbiAgICovXG4gIGNvbXBvbmVudDogVHlwZTxhbnk+O1xufVxuXG4vKipcbiAqIEZhY3RvcnkgdG8gaW1wbGVtZW50IGlmIHVzZWQgaW4gYSBob29rIGZvciBNdWx0aSBQcm92aWRlciBleHRlbnNpb24uXG4gKi9cbmV4cG9ydCB0eXBlIFRhYkZhY3RvcnkgPSBFeHRlbnNpb25GYWN0b3J5PFRhYj47XG4iXX0=