@openziti/ziti-console-lib 0.12.11 → 1.0.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 (450) hide show
  1. package/assets/fonts/icomoon.eot +0 -0
  2. package/assets/fonts/icomoon.svg +6 -1
  3. package/assets/fonts/icomoon.ttf +0 -0
  4. package/assets/fonts/icomoon.woff +0 -0
  5. package/assets/fonts/icomoon.woff2 +0 -0
  6. package/assets/styles/dark.css +15 -8
  7. package/assets/styles/global.scss +431 -24
  8. package/assets/styles/icons.scss +644 -0
  9. package/assets/svgs/Icon_Log_Logout.svg +43 -0
  10. package/assets/svgs/clients.svg +6 -0
  11. package/assets/svgs/ziti-logo.svg +23 -0
  12. package/esm2022/lib/ZAC_VERSION.mjs +4 -0
  13. package/esm2022/lib/default-app-config.mjs +5 -0
  14. package/esm2022/lib/features/card/card.component.mjs +4 -5
  15. package/esm2022/lib/features/card-list/card-list.component.mjs +2 -4
  16. package/esm2022/lib/features/config-editor/config-editor.component.mjs +2 -3
  17. package/esm2022/lib/features/confirm/confirm.component.mjs +4 -5
  18. package/esm2022/lib/features/creation-summary-dialog/creation-summary-dialog.component.mjs +2 -3
  19. package/esm2022/lib/features/custom-tags/custom-tags.component.mjs +4 -5
  20. package/esm2022/lib/features/data-table/cells/table-cell-menu/table-cell-menu.component.mjs +2 -3
  21. package/esm2022/lib/features/data-table/cells/table-cell-name/table-cell-name.component.mjs +2 -3
  22. package/esm2022/lib/features/data-table/cells/table-cell-select/table-cell-select.component.mjs +4 -5
  23. package/esm2022/lib/features/data-table/cells/table-cell-token/table-cell-token.component.mjs +2 -3
  24. package/esm2022/lib/features/data-table/column-headers/table-column-default/table-column-default.component.mjs +2 -3
  25. package/esm2022/lib/features/data-table/column-headers/table-column-filter/table-column-filter.component.mjs +2 -3
  26. package/esm2022/lib/features/data-table/column-headers/table-column-menu/table-column-menu.component.mjs +2 -3
  27. package/esm2022/lib/features/data-table/column-headers/table-column-select/table-column-select.component.mjs +4 -5
  28. package/esm2022/lib/features/data-table/data-table-filter.service.mjs +2 -3
  29. package/esm2022/lib/features/data-table/data-table.component.mjs +4 -5
  30. package/esm2022/lib/features/data-table/data-table.service.mjs +2 -3
  31. package/esm2022/lib/features/data-table/table-filter-bar/filter-bar.component.mjs +4 -5
  32. package/esm2022/lib/features/data-table/table-hidden-columns-bar/hidden-columns-bar.component.mjs +2 -3
  33. package/esm2022/lib/features/data-table/tooltips/os-tooltip.component.mjs +2 -3
  34. package/esm2022/lib/features/data-table/tooltips/sdk-tooltip.component.mjs +2 -3
  35. package/esm2022/lib/features/dynamic-widgets/boolean/boolean-toggle-input.component.mjs +2 -3
  36. package/esm2022/lib/features/dynamic-widgets/checkbox-list/checkbox-list-input.component.mjs +2 -3
  37. package/esm2022/lib/features/dynamic-widgets/forwarding-config/forwarding-config.component.mjs +2 -3
  38. package/esm2022/lib/features/dynamic-widgets/forwarding-config/forwarding-config.service.mjs +2 -3
  39. package/esm2022/lib/features/dynamic-widgets/number/number-input.component.mjs +2 -3
  40. package/esm2022/lib/features/dynamic-widgets/object/object.component.mjs +4 -5
  41. package/esm2022/lib/features/dynamic-widgets/password/password-input.component.mjs +2 -3
  42. package/esm2022/lib/features/dynamic-widgets/port-ranges/port-ranges.component.mjs +2 -3
  43. package/esm2022/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.mjs +2 -3
  44. package/esm2022/lib/features/dynamic-widgets/selector/selector-input.component.mjs +2 -3
  45. package/esm2022/lib/features/dynamic-widgets/string/string-input.component.mjs +2 -3
  46. package/esm2022/lib/features/dynamic-widgets/text-list/text-list-input.component.mjs +2 -3
  47. package/esm2022/lib/features/extendable/extendable.component.mjs +2 -3
  48. package/esm2022/lib/features/extendable/extensions-noop.service.mjs +3 -3
  49. package/esm2022/lib/features/header-bar/header-bar.component.mjs +105 -0
  50. package/esm2022/lib/features/json-view/json-view.component.mjs +4 -5
  51. package/esm2022/lib/features/list-page-features/list-page-form/list-page-form.component.mjs +2 -3
  52. package/esm2022/lib/features/list-page-features/list-page-header/list-page-header.component.mjs +4 -5
  53. package/esm2022/lib/features/loading-indicator/loading-indicator.component.mjs +2 -3
  54. package/esm2022/lib/features/login/login-dialog.component.mjs +10 -12
  55. package/esm2022/lib/features/messaging/growler.component.mjs +4 -5
  56. package/esm2022/lib/features/messaging/growler.module.mjs +2 -3
  57. package/esm2022/lib/features/messaging/growler.service.mjs +2 -3
  58. package/esm2022/lib/features/messaging/logger.service.mjs +2 -3
  59. package/esm2022/lib/features/multi-action-button/multi-action-button.component.mjs +2 -3
  60. package/esm2022/lib/features/no-items/no-items.component.mjs +2 -3
  61. package/esm2022/lib/features/overrides/overrides.component.mjs +2 -3
  62. package/esm2022/lib/features/overrides/overrides.service.mjs +2 -3
  63. package/esm2022/lib/features/preview-list/preview-list.component.mjs +4 -5
  64. package/esm2022/lib/features/preview-selections/preview-selections.component.mjs +2 -3
  65. package/esm2022/lib/features/progress-meter/progress-meter.component.mjs +2 -3
  66. package/esm2022/lib/features/progress-wizard/progress-wizard.component.mjs +2 -3
  67. package/esm2022/lib/features/projectable-forms/api-session/api-session-form.component.mjs +5 -9
  68. package/esm2022/lib/features/projectable-forms/api-session/api-session-form.service.mjs +2 -3
  69. package/esm2022/lib/features/projectable-forms/auth-policy/auth-policy-form.component.mjs +5 -9
  70. package/esm2022/lib/features/projectable-forms/auth-policy/auth-policy-form.service.mjs +2 -3
  71. package/esm2022/lib/features/projectable-forms/certificate-authority/certificate-authority-form.component.mjs +5 -9
  72. package/esm2022/lib/features/projectable-forms/certificate-authority/certificate-authority-form.service.mjs +2 -3
  73. package/esm2022/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.component.mjs +4 -8
  74. package/esm2022/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.service.mjs +2 -3
  75. package/esm2022/lib/features/projectable-forms/config-type/config-type-form.component.mjs +5 -9
  76. package/esm2022/lib/features/projectable-forms/config-type/config-type-form.service.mjs +2 -3
  77. package/esm2022/lib/features/projectable-forms/configuration/configuration-form.component.mjs +5 -9
  78. package/esm2022/lib/features/projectable-forms/configuration/configuration.service.mjs +2 -3
  79. package/esm2022/lib/features/projectable-forms/edge-router/edge-router-form.component.mjs +34 -26
  80. package/esm2022/lib/features/projectable-forms/edge-router/edge-router-form.service.mjs +2 -3
  81. package/esm2022/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.mjs +13 -14
  82. package/esm2022/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.service.mjs +6 -7
  83. package/esm2022/lib/features/projectable-forms/form-field-container/form-field-container.component.mjs +4 -5
  84. package/esm2022/lib/features/projectable-forms/form-field-toggle/form-field-toggle.component.mjs +4 -5
  85. package/esm2022/lib/features/projectable-forms/form-header/form-header.component.mjs +4 -5
  86. package/esm2022/lib/features/projectable-forms/identity/identity-form.component.mjs +6 -12
  87. package/esm2022/lib/features/projectable-forms/identity/identity-form.service.mjs +2 -3
  88. package/esm2022/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.mjs +5 -12
  89. package/esm2022/lib/features/projectable-forms/jwt-signer/jwt-signer-form.service.mjs +2 -3
  90. package/esm2022/lib/features/projectable-forms/posture-check/posture-check-form.component.mjs +5 -9
  91. package/esm2022/lib/features/projectable-forms/posture-check/posture-check-form.service.mjs +2 -3
  92. package/esm2022/lib/features/projectable-forms/projectable-form.class.mjs +36 -74
  93. package/esm2022/lib/features/projectable-forms/service/service-form.component.mjs +5 -8
  94. package/esm2022/lib/features/projectable-forms/service/service-form.service.mjs +2 -3
  95. package/esm2022/lib/features/projectable-forms/service/simple-service/simple-service.component.mjs +57 -24
  96. package/esm2022/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.mjs +13 -14
  97. package/esm2022/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.service.mjs +6 -7
  98. package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.component.mjs +14 -15
  99. package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.service.mjs +9 -10
  100. package/esm2022/lib/features/projectable-forms/session/session-form.component.mjs +5 -9
  101. package/esm2022/lib/features/projectable-forms/session/session-form.service.mjs +2 -3
  102. package/esm2022/lib/features/projectable-forms/terminator/terminator-form.component.mjs +4 -8
  103. package/esm2022/lib/features/projectable-forms/terminator/terminator-form.service.mjs +2 -3
  104. package/esm2022/lib/features/projectable-forms/transit-router/transit-router-form.component.mjs +7 -11
  105. package/esm2022/lib/features/projectable-forms/transit-router/transit-router-form.service.mjs +2 -3
  106. package/esm2022/lib/features/qr-code/qr-code.component.mjs +4 -5
  107. package/esm2022/lib/features/quick-add/quick-add.component.mjs +50 -0
  108. package/esm2022/lib/features/reset-enrollment/reset-enrollment.component.mjs +4 -5
  109. package/esm2022/lib/features/reset-enrollment/reset-enrollment.service.mjs +2 -3
  110. package/esm2022/lib/features/side-modal/side-modal.component.mjs +2 -3
  111. package/esm2022/lib/features/side-navigator/side-navigator.component.mjs +127 -0
  112. package/esm2022/lib/features/sidebars/side-navbar/side-navbar.component.mjs +4 -5
  113. package/esm2022/lib/features/tag-selector/tag-selector.component.mjs +4 -5
  114. package/esm2022/lib/features/visualizer/identity-service-path/identity-service-path.component.mjs +2 -3
  115. package/esm2022/lib/features/visualizer/identity-service-path/identity-service-path.helper.mjs +2 -3
  116. package/esm2022/lib/features/visualizer/network-visualizer/network-visualizer.component.mjs +2 -3
  117. package/esm2022/lib/features/visualizer/network-visualizer/network-visualizer.helper.mjs +2 -3
  118. package/esm2022/lib/features/visualizer/network-visualizer/network-visualizer.treenodeprocessor.mjs +2 -3
  119. package/esm2022/lib/features/visualizer/visualizer-service.class.mjs +2 -3
  120. package/esm2022/lib/pages/api-sessions/api-sessions-page.component.mjs +2 -3
  121. package/esm2022/lib/pages/api-sessions/api-sessions-page.service.mjs +2 -3
  122. package/esm2022/lib/pages/attributes/attributes.component.mjs +104 -0
  123. package/esm2022/lib/pages/auth-policies/auth-policies-page.component.mjs +2 -3
  124. package/esm2022/lib/pages/auth-policies/auth-policies-page.service.mjs +4 -4
  125. package/esm2022/lib/pages/callback/callback.component.mjs +2 -3
  126. package/esm2022/lib/pages/certificate-authorities/certificate-authorities-page.component.mjs +2 -3
  127. package/esm2022/lib/pages/certificate-authorities/certificate-authorities-page.service.mjs +2 -3
  128. package/esm2022/lib/pages/config-types/config-types-page.component.mjs +2 -3
  129. package/esm2022/lib/pages/config-types/config-types-page.service.mjs +2 -3
  130. package/esm2022/lib/pages/configurations/configurations-page.component.mjs +2 -3
  131. package/esm2022/lib/pages/configurations/configurations-page.service.mjs +2 -3
  132. package/esm2022/lib/pages/edge-router-policies/edge-router-policies-page.component.mjs +6 -13
  133. package/esm2022/lib/pages/edge-router-policies/edge-router-policies-page.service.mjs +2 -3
  134. package/esm2022/lib/pages/edge-routers/edge-routers-page.component.mjs +5 -16
  135. package/esm2022/lib/pages/edge-routers/edge-routers-page.service.mjs +2 -4
  136. package/esm2022/lib/pages/geolocate/geolocate.component.mjs +130 -0
  137. package/esm2022/lib/pages/identities/identities-page.component.mjs +5 -16
  138. package/esm2022/lib/pages/identities/identities-page.service.mjs +2 -3
  139. package/esm2022/lib/pages/jwt-signers/jwt-signers-page.component.mjs +2 -3
  140. package/esm2022/lib/pages/jwt-signers/jwt-signers-page.service.mjs +2 -3
  141. package/esm2022/lib/pages/posture-checks/posture-checks-page.component.mjs +3 -4
  142. package/esm2022/lib/pages/posture-checks/posture-checks-page.service.mjs +2 -3
  143. package/esm2022/lib/pages/profile/profile.component.mjs +58 -0
  144. package/esm2022/lib/pages/service-edge-router-policies/service-edge-router-policies-page.component.mjs +6 -13
  145. package/esm2022/lib/pages/service-edge-router-policies/service-edge-router-policies-page.service.mjs +2 -3
  146. package/esm2022/lib/pages/service-policies/service-policies-page.component.mjs +6 -13
  147. package/esm2022/lib/pages/service-policies/service-policies-page.service.mjs +2 -3
  148. package/esm2022/lib/pages/services/services-page.component.mjs +6 -13
  149. package/esm2022/lib/pages/services/services-page.service.mjs +2 -3
  150. package/esm2022/lib/pages/sessions/sessions-page.component.mjs +2 -3
  151. package/esm2022/lib/pages/sessions/sessions-page.service.mjs +2 -3
  152. package/esm2022/lib/pages/settings/settings.component.mjs +61 -0
  153. package/esm2022/lib/pages/terminators/terminators-page.component.mjs +3 -4
  154. package/esm2022/lib/pages/terminators/terminators-page.service.mjs +2 -3
  155. package/esm2022/lib/pages/transit-routers/transit-routers-page.component.mjs +5 -16
  156. package/esm2022/lib/pages/transit-routers/transit-routers-page.service.mjs +2 -3
  157. package/esm2022/lib/safe.pipe.mjs +2 -3
  158. package/esm2022/lib/services/auth.service.mjs +2 -3
  159. package/esm2022/lib/services/console-events.service.mjs +2 -14
  160. package/esm2022/lib/services/csv-download.service.mjs +2 -3
  161. package/esm2022/lib/services/deactivate-guard.service.mjs +2 -3
  162. package/esm2022/lib/services/login-service.class.mjs +2 -3
  163. package/esm2022/lib/services/node-data.service.mjs +24 -3
  164. package/esm2022/lib/services/noop-login.service.mjs +2 -3
  165. package/esm2022/lib/services/schema.service.mjs +2 -3
  166. package/esm2022/lib/services/settings-service.class.mjs +5 -18
  167. package/esm2022/lib/services/settings.service.mjs +14 -11
  168. package/esm2022/lib/services/tab-name.service.mjs +9 -6
  169. package/esm2022/lib/services/validation.service.mjs +2 -3
  170. package/esm2022/lib/services/ziti-controller-data.service.mjs +21 -6
  171. package/esm2022/lib/services/ziti-data.service.mjs +5 -5
  172. package/esm2022/lib/shared/list-page-component.class.mjs +6 -3
  173. package/esm2022/lib/shared/list-page-service.class.mjs +2 -3
  174. package/esm2022/lib/zac-routing.module.mjs +3 -10
  175. package/esm2022/lib/ziti-console-lib.module.mjs +43 -24
  176. package/esm2022/lib/ziti-console.constants.mjs +2 -1
  177. package/esm2022/public-api.mjs +9 -8
  178. package/fesm2022/openziti-ziti-console-lib.mjs +3547 -4342
  179. package/fesm2022/openziti-ziti-console-lib.mjs.map +1 -1
  180. package/lib/ZAC_VERSION.d.ts +4 -0
  181. package/lib/ZAC_VERSION.d.ts.map +1 -0
  182. package/lib/default-app-config.d.ts +9 -0
  183. package/lib/default-app-config.d.ts.map +1 -0
  184. package/lib/features/card-list/card-list.component.d.ts +0 -1
  185. package/lib/features/card-list/card-list.component.d.ts.map +1 -1
  186. package/lib/features/extendable/extensions-noop.service.d.ts +2 -0
  187. package/lib/features/extendable/extensions-noop.service.d.ts.map +1 -1
  188. package/lib/features/header-bar/header-bar.component.d.ts +29 -0
  189. package/lib/features/header-bar/header-bar.component.d.ts.map +1 -0
  190. package/lib/features/login/login-dialog.component.d.ts +2 -1
  191. package/lib/features/login/login-dialog.component.d.ts.map +1 -1
  192. package/lib/features/projectable-forms/api-session/api-session-form.component.d.ts +1 -2
  193. package/lib/features/projectable-forms/api-session/api-session-form.component.d.ts.map +1 -1
  194. package/lib/features/projectable-forms/auth-policy/auth-policy-form.component.d.ts +1 -2
  195. package/lib/features/projectable-forms/auth-policy/auth-policy-form.component.d.ts.map +1 -1
  196. package/lib/features/projectable-forms/certificate-authority/certificate-authority-form.component.d.ts +1 -2
  197. package/lib/features/projectable-forms/certificate-authority/certificate-authority-form.component.d.ts.map +1 -1
  198. package/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.component.d.ts +1 -2
  199. package/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.component.d.ts.map +1 -1
  200. package/lib/features/projectable-forms/config-type/config-type-form.component.d.ts +1 -2
  201. package/lib/features/projectable-forms/config-type/config-type-form.component.d.ts.map +1 -1
  202. package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts +1 -2
  203. package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts.map +1 -1
  204. package/lib/features/projectable-forms/edge-router/edge-router-form.component.d.ts +6 -3
  205. package/lib/features/projectable-forms/edge-router/edge-router-form.component.d.ts.map +1 -1
  206. package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.d.ts +2 -2
  207. package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.d.ts.map +1 -1
  208. package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.service.d.ts +2 -2
  209. package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.service.d.ts.map +1 -1
  210. package/lib/features/projectable-forms/identity/identity-form.component.d.ts +1 -2
  211. package/lib/features/projectable-forms/identity/identity-form.component.d.ts.map +1 -1
  212. package/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.d.ts +1 -2
  213. package/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.d.ts.map +1 -1
  214. package/lib/features/projectable-forms/posture-check/posture-check-form.component.d.ts +1 -2
  215. package/lib/features/projectable-forms/posture-check/posture-check-form.component.d.ts.map +1 -1
  216. package/lib/features/projectable-forms/projectable-form.class.d.ts +11 -7
  217. package/lib/features/projectable-forms/projectable-form.class.d.ts.map +1 -1
  218. package/lib/features/projectable-forms/service/service-form.component.d.ts +0 -1
  219. package/lib/features/projectable-forms/service/service-form.component.d.ts.map +1 -1
  220. package/lib/features/projectable-forms/service/simple-service/simple-service.component.d.ts +9 -2
  221. package/lib/features/projectable-forms/service/simple-service/simple-service.component.d.ts.map +1 -1
  222. package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.d.ts +2 -2
  223. package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.d.ts.map +1 -1
  224. package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.service.d.ts +2 -2
  225. package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.service.d.ts.map +1 -1
  226. package/lib/features/projectable-forms/service-policy/service-policy-form.component.d.ts +2 -2
  227. package/lib/features/projectable-forms/service-policy/service-policy-form.component.d.ts.map +1 -1
  228. package/lib/features/projectable-forms/service-policy/service-policy-form.service.d.ts +4 -4
  229. package/lib/features/projectable-forms/service-policy/service-policy-form.service.d.ts.map +1 -1
  230. package/lib/features/projectable-forms/session/session-form.component.d.ts +1 -2
  231. package/lib/features/projectable-forms/session/session-form.component.d.ts.map +1 -1
  232. package/lib/features/projectable-forms/terminator/terminator-form.component.d.ts +1 -2
  233. package/lib/features/projectable-forms/terminator/terminator-form.component.d.ts.map +1 -1
  234. package/lib/features/projectable-forms/transit-router/transit-router-form.component.d.ts +1 -2
  235. package/lib/features/projectable-forms/transit-router/transit-router-form.component.d.ts.map +1 -1
  236. package/lib/features/quick-add/quick-add.component.d.ts +15 -0
  237. package/lib/features/quick-add/quick-add.component.d.ts.map +1 -0
  238. package/lib/features/side-navigator/side-navigator.component.d.ts +33 -0
  239. package/lib/features/side-navigator/side-navigator.component.d.ts.map +1 -0
  240. package/lib/pages/attributes/attributes.component.d.ts +31 -0
  241. package/lib/pages/attributes/attributes.component.d.ts.map +1 -0
  242. package/lib/pages/auth-policies/auth-policies-page.service.d.ts.map +1 -1
  243. package/lib/pages/edge-router-policies/edge-router-policies-page.component.d.ts +1 -3
  244. package/lib/pages/edge-router-policies/edge-router-policies-page.component.d.ts.map +1 -1
  245. package/lib/pages/edge-routers/edge-routers-page.component.d.ts +1 -3
  246. package/lib/pages/edge-routers/edge-routers-page.component.d.ts.map +1 -1
  247. package/lib/pages/edge-routers/edge-routers-page.service.d.ts.map +1 -1
  248. package/lib/pages/geolocate/geolocate.component.d.ts +32 -0
  249. package/lib/pages/geolocate/geolocate.component.d.ts.map +1 -0
  250. package/lib/pages/identities/identities-page.component.d.ts +1 -3
  251. package/lib/pages/identities/identities-page.component.d.ts.map +1 -1
  252. package/lib/pages/profile/profile.component.d.ts +17 -0
  253. package/lib/pages/profile/profile.component.d.ts.map +1 -0
  254. package/lib/pages/service-edge-router-policies/service-edge-router-policies-page.component.d.ts +1 -3
  255. package/lib/pages/service-edge-router-policies/service-edge-router-policies-page.component.d.ts.map +1 -1
  256. package/lib/pages/service-policies/service-policies-page.component.d.ts +1 -3
  257. package/lib/pages/service-policies/service-policies-page.component.d.ts.map +1 -1
  258. package/lib/pages/services/services-page.component.d.ts +1 -3
  259. package/lib/pages/services/services-page.component.d.ts.map +1 -1
  260. package/lib/pages/settings/settings.component.d.ts +23 -0
  261. package/lib/pages/settings/settings.component.d.ts.map +1 -0
  262. package/lib/pages/transit-routers/transit-routers-page.component.d.ts +1 -3
  263. package/lib/pages/transit-routers/transit-routers-page.component.d.ts.map +1 -1
  264. package/lib/services/console-events.service.d.ts.map +1 -1
  265. package/lib/services/node-data.service.d.ts +1 -0
  266. package/lib/services/node-data.service.d.ts.map +1 -1
  267. package/lib/services/settings-service.class.d.ts +0 -2
  268. package/lib/services/settings-service.class.d.ts.map +1 -1
  269. package/lib/services/settings.service.d.ts.map +1 -1
  270. package/lib/services/tab-name.service.d.ts.map +1 -1
  271. package/lib/services/ziti-controller-data.service.d.ts +2 -1
  272. package/lib/services/ziti-controller-data.service.d.ts.map +1 -1
  273. package/lib/services/ziti-data.service.d.ts +2 -1
  274. package/lib/services/ziti-data.service.d.ts.map +1 -1
  275. package/lib/shared/list-page-component.class.d.ts.map +1 -1
  276. package/lib/zac-routing.module.d.ts.map +1 -1
  277. package/lib/ziti-console-lib.module.d.ts +114 -110
  278. package/lib/ziti-console-lib.module.d.ts.map +1 -1
  279. package/lib/ziti-console.constants.d.ts +1 -0
  280. package/lib/ziti-console.constants.d.ts.map +1 -1
  281. package/package.json +1 -1
  282. package/public-api.d.ts +8 -7
  283. package/public-api.d.ts.map +1 -1
  284. package/assets/components/add.html +0 -1
  285. package/assets/components/api.html +0 -12
  286. package/assets/components/customtags.html +0 -4
  287. package/assets/components/line.html +0 -1
  288. package/assets/components/noitems.html +0 -1
  289. package/assets/components/save.html +0 -4
  290. package/assets/components/search.html +0 -8
  291. package/assets/components/tabIdentities.html +0 -5
  292. package/assets/components/tabPolicies.html +0 -7
  293. package/assets/components/tabRouters.html +0 -5
  294. package/assets/components/tabServers.html +0 -4
  295. package/assets/components/tabServices.html +0 -6
  296. package/assets/components/tabSessions.html +0 -4
  297. package/assets/data/mail.json +0 -0
  298. package/assets/data/services.json +0 -6
  299. package/assets/data/site.json +0 -31
  300. package/assets/data/tags.json +0 -7
  301. package/assets/data/templates.json +0 -1
  302. package/assets/fonts/zac.eot +0 -0
  303. package/assets/fonts/zac.svg +0 -57
  304. package/assets/fonts/zac.ttf +0 -0
  305. package/assets/fonts/zac.woff +0 -0
  306. package/assets/fonts/zac.woff2 +0 -0
  307. package/assets/html/api-sessions.htm +0 -152
  308. package/assets/html/attributes.htm +0 -260
  309. package/assets/html/auth-policies.htm +0 -410
  310. package/assets/html/cas.htm +0 -439
  311. package/assets/html/config-types.htm +0 -167
  312. package/assets/html/configs.htm +0 -238
  313. package/assets/html/deprecated/fabric-links.htm +0 -336
  314. package/assets/html/deprecated/fabric-routers.htm +0 -72
  315. package/assets/html/deprecated/fabric-services.htm +0 -494
  316. package/assets/html/identities.htm +0 -934
  317. package/assets/html/index.htm +0 -222
  318. package/assets/html/jwt-signers.htm +0 -260
  319. package/assets/html/known.htm +0 -115
  320. package/assets/html/login.htm +0 -131
  321. package/assets/html/organization.htm +0 -223
  322. package/assets/html/posture-checks.htm +0 -393
  323. package/assets/html/profile.htm +0 -52
  324. package/assets/html/recipes.htm +0 -455
  325. package/assets/html/router-policies.htm +0 -168
  326. package/assets/html/routers.htm +0 -323
  327. package/assets/html/servers.htm +0 -236
  328. package/assets/html/service-policies.htm +0 -197
  329. package/assets/html/service-router-policies.htm +0 -170
  330. package/assets/html/services.htm +0 -634
  331. package/assets/html/sessions.htm +0 -157
  332. package/assets/html/settings.htm +0 -146
  333. package/assets/html/terminators.htm +0 -244
  334. package/assets/html/transit-routers.htm +0 -173
  335. package/assets/resources/avatar/man.svg +0 -78
  336. package/assets/resources/avatar/woman.svg +0 -96
  337. package/assets/resources/icon/analysis.svg +0 -104
  338. package/assets/resources/icon/appwans.svg +0 -20
  339. package/assets/resources/icon/architecture.svg +0 -1
  340. package/assets/resources/icon/bike.svg +0 -94
  341. package/assets/resources/icon/bus.svg +0 -64
  342. package/assets/resources/icon/cas.svg +0 -46
  343. package/assets/resources/icon/clusters.svg +0 -28
  344. package/assets/resources/icon/computer.svg +0 -1
  345. package/assets/resources/icon/data.svg +0 -1
  346. package/assets/resources/icon/delivery-truck.svg +0 -1
  347. package/assets/resources/icon/explosion.svg +0 -81
  348. package/assets/resources/icon/fabricServices.svg +0 -31
  349. package/assets/resources/icon/fabrics.svg +0 -136
  350. package/assets/resources/icon/front.svg +0 -83
  351. package/assets/resources/icon/gateway.svg +0 -49
  352. package/assets/resources/icon/gear.svg +0 -122
  353. package/assets/resources/icon/house.svg +0 -72
  354. package/assets/resources/icon/language.svg +0 -1
  355. package/assets/resources/icon/objective.svg +0 -55
  356. package/assets/resources/icon/route.svg +0 -97
  357. package/assets/resources/icon/routers.svg +0 -27
  358. package/assets/resources/icon/startup.svg +0 -112
  359. package/assets/resources/icon/switch.svg +0 -101
  360. package/assets/scripts/chart.min.js +0 -7
  361. package/assets/scripts/commands.js +0 -112
  362. package/assets/scripts/components/codemirror/codemirror.css +0 -356
  363. package/assets/scripts/components/codemirror/codemirror.js +0 -9741
  364. package/assets/scripts/components/codemirror/modes/addons/closetags.js +0 -200
  365. package/assets/scripts/components/codemirror/modes/addons/colorize.js +0 -40
  366. package/assets/scripts/components/codemirror/modes/addons/css-hint.js +0 -66
  367. package/assets/scripts/components/codemirror/modes/addons/formatting.js +0 -124
  368. package/assets/scripts/components/codemirror/modes/addons/html-hint.js +0 -366
  369. package/assets/scripts/components/codemirror/modes/addons/javascript-hint.js +0 -159
  370. package/assets/scripts/components/codemirror/modes/addons/show-hint.css +0 -36
  371. package/assets/scripts/components/codemirror/modes/addons/show-hint.js +0 -482
  372. package/assets/scripts/components/codemirror/modes/css.js +0 -831
  373. package/assets/scripts/components/codemirror/modes/htmlmixed.js +0 -152
  374. package/assets/scripts/components/codemirror/modes/javascript.js +0 -930
  375. package/assets/scripts/components/codemirror/modes/xml.js +0 -413
  376. package/assets/scripts/components/column.css +0 -184
  377. package/assets/scripts/components/column.js +0 -165
  378. package/assets/scripts/components/flows.css +0 -0
  379. package/assets/scripts/components/flows.js +0 -48
  380. package/assets/scripts/components/moment.js +0 -4602
  381. package/assets/scripts/components/multiselect.js +0 -333
  382. package/assets/scripts/components/resources.js +0 -26
  383. package/assets/scripts/components/selector-new.js +0 -300
  384. package/assets/scripts/components/selector.js +0 -300
  385. package/assets/scripts/components/spectrum.js +0 -2323
  386. package/assets/scripts/components/timezone.js +0 -1545
  387. package/assets/scripts/context.js +0 -177
  388. package/assets/scripts/dragging.js +0 -58
  389. package/assets/scripts/forms/forms.js +0 -74
  390. package/assets/scripts/forms/host.v1.htm +0 -43
  391. package/assets/scripts/forms/intercept.v1.htm +0 -0
  392. package/assets/scripts/forms/schema.js +0 -693
  393. package/assets/scripts/growler.js +0 -137
  394. package/assets/scripts/header.js +0 -163
  395. package/assets/scripts/jquery-3.6.3.min.js +0 -2
  396. package/assets/scripts/jquery.datetimepicker.js +0 -2930
  397. package/assets/scripts/locale.js +0 -47
  398. package/assets/scripts/modal.js +0 -65
  399. package/assets/scripts/model/data.js +0 -558
  400. package/assets/scripts/model/fabric.js +0 -55
  401. package/assets/scripts/model/fabricServices.js +0 -45
  402. package/assets/scripts/model/known.js +0 -43
  403. package/assets/scripts/model/links.js +0 -44
  404. package/assets/scripts/model/routers.js +0 -51
  405. package/assets/scripts/model/series.js +0 -70
  406. package/assets/scripts/model/sessions.js +0 -61
  407. package/assets/scripts/model/settings.js +0 -60
  408. package/assets/scripts/model/summary.js +0 -49
  409. package/assets/scripts/model/tags.js +0 -310
  410. package/assets/scripts/model/templates.js +0 -42
  411. package/assets/scripts/model/user.js +0 -40
  412. package/assets/scripts/restrictions.js +0 -34
  413. package/assets/scripts/service.js +0 -76
  414. package/assets/scripts/validation-tools.js +0 -5119
  415. package/assets/scripts/ziti.js +0 -372
  416. package/assets/styles/chart.min.css +0 -1
  417. package/assets/styles/datetimepicker.css +0 -1
  418. package/assets/styles/forms.css +0 -521
  419. package/assets/styles/growler.css +0 -190
  420. package/assets/styles/header.css +0 -232
  421. package/assets/styles/icons.css +0 -182
  422. package/assets/styles/navigation.css +0 -183
  423. package/assets/styles/select2.css +0 -481
  424. package/assets/styles/spectrum.css +0 -507
  425. package/assets/styles/tables.css +0 -449
  426. package/assets/styles/tooltip.css +0 -134
  427. package/assets/styles/ziti.css +0 -3271
  428. package/assets/templates/footer.htm +0 -183
  429. package/assets/templates/header.htm +0 -297
  430. package/esm2022/lib/features/sidebars/side-banner/side-banner.component.mjs +0 -17
  431. package/esm2022/lib/features/sidebars/side-toolbar/side-toolbar.component.mjs +0 -129
  432. package/esm2022/lib/features/wrappers/node-wrapper.service.mjs +0 -51
  433. package/esm2022/lib/features/wrappers/zac-wrapper-service.class.mjs +0 -95
  434. package/esm2022/lib/features/wrappers/zac-wrapper.component.mjs +0 -148
  435. package/esm2022/lib/features/wrappers/zac-wrapper.service.mjs +0 -981
  436. package/esm2022/lib/version.mjs +0 -4
  437. package/lib/features/sidebars/side-banner/side-banner.component.d.ts +0 -7
  438. package/lib/features/sidebars/side-banner/side-banner.component.d.ts.map +0 -1
  439. package/lib/features/sidebars/side-toolbar/side-toolbar.component.d.ts +0 -34
  440. package/lib/features/sidebars/side-toolbar/side-toolbar.component.d.ts.map +0 -1
  441. package/lib/features/wrappers/node-wrapper.service.d.ts +0 -24
  442. package/lib/features/wrappers/node-wrapper.service.d.ts.map +0 -1
  443. package/lib/features/wrappers/zac-wrapper-service.class.d.ts +0 -38
  444. package/lib/features/wrappers/zac-wrapper-service.class.d.ts.map +0 -1
  445. package/lib/features/wrappers/zac-wrapper.component.d.ts +0 -31
  446. package/lib/features/wrappers/zac-wrapper.component.d.ts.map +0 -1
  447. package/lib/features/wrappers/zac-wrapper.service.d.ts +0 -58
  448. package/lib/features/wrappers/zac-wrapper.service.d.ts.map +0 -1
  449. package/lib/version.d.ts +0 -4
  450. package/lib/version.d.ts.map +0 -1
@@ -1,95 +0,0 @@
1
- import { EventEmitter, Inject, Injectable, InjectionToken } from "@angular/core";
2
- import { ZITI_DOMAIN_CONTROLLER } from "../../services/ziti-domain-controller.service";
3
- import { ZITI_URLS } from "../../ziti-console.constants";
4
- import { SETTINGS_SERVICE } from "../../services/settings.service";
5
- import { Subscription } from "rxjs";
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/common/http";
8
- import * as i2 from "@angular/router";
9
- import * as i3 from "../messaging/growler.service";
10
- import * as i4 from "../messaging/logger.service";
11
- import * as i5 from "../../services/validation.service";
12
- import * as i6 from "../../services/settings.service";
13
- export const ZAC_WRAPPER_SERVICE = new InjectionToken('ZAC_WRAPPER_SERVICE');
14
- // @ts-ignore
15
- const { $, tags } = window;
16
- class ZacWrapperServiceClass {
17
- constructor(zitiDomainController, URLS, settingsService, http, router, growlerService, loggerService, validationService) {
18
- this.zitiDomainController = zitiDomainController;
19
- this.URLS = URLS;
20
- this.settingsService = settingsService;
21
- this.http = http;
22
- this.router = router;
23
- this.growlerService = growlerService;
24
- this.loggerService = loggerService;
25
- this.validationService = validationService;
26
- this.zitiUpdated = new EventEmitter();
27
- this.pageChanged = new EventEmitter();
28
- this.subscription = new Subscription();
29
- this.page = '';
30
- this.scriptsAdded = false;
31
- this.zacInit = false;
32
- }
33
- initZACPersonalSettings() {
34
- if (!this.settingsService?.supportedFeatures?.tags) {
35
- localStorage.setItem("hideTags", "yes");
36
- }
37
- else {
38
- localStorage.removeItem("hideTags");
39
- }
40
- if (localStorage.getItem("primaryColor") != null) {
41
- document.documentElement.style.setProperty("--primary", localStorage.getItem("primaryColor"));
42
- }
43
- if (localStorage.getItem("secondaryColor") != null) {
44
- document.documentElement.style.setProperty("--secondary", localStorage.getItem("secondaryColor"));
45
- }
46
- var mode = localStorage.getItem("Transitions");
47
- if (mode == "off") {
48
- document.documentElement.style.setProperty("--transition", "0s");
49
- }
50
- else {
51
- document.documentElement.style.setProperty("--transition", "0.5s");
52
- }
53
- $(document).ready((e) => {
54
- $(".personal").show();
55
- if (!this.settingsService?.supportedFeatures?.tags) {
56
- $("#HideTags").parent().hide();
57
- $('<div></div>').insertBefore($("#HideTags").parent().siblings()[3]);
58
- }
59
- });
60
- }
61
- resetZacEvents() {
62
- $("input").off("keyup");
63
- $("select").off("keyup");
64
- $(".toggle").off("click");
65
- $("body").off("keyup");
66
- $("#SServiceName").off('keyup');
67
- $("#SServiceHost").off('keyup');
68
- $("#CreateButton").off('click');
69
- $("#CreateIdButton").off('click');
70
- $("#IdentityDownload").off('click');
71
- $("#DoneIdButton").off('click');
72
- $("#DoneServiceButton").off('click');
73
- $("#InlineAddIdentityButton").off('click');
74
- $("#InlineAddServiceButton").off('click');
75
- $("#AlertButton").off('click');
76
- tags.tagData = [];
77
- }
78
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ZacWrapperServiceClass, deps: [{ token: ZITI_DOMAIN_CONTROLLER }, { token: ZITI_URLS }, { token: SETTINGS_SERVICE }, { token: i1.HttpClient }, { token: i2.Router }, { token: i3.GrowlerService }, { token: i4.LoggerService }, { token: i5.ValidationService }], target: i0.ɵɵFactoryTarget.Injectable }); }
79
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ZacWrapperServiceClass, providedIn: 'root' }); }
80
- }
81
- export { ZacWrapperServiceClass };
82
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ZacWrapperServiceClass, decorators: [{
83
- type: Injectable,
84
- args: [{ providedIn: 'root' }]
85
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
86
- type: Inject,
87
- args: [ZITI_DOMAIN_CONTROLLER]
88
- }] }, { type: undefined, decorators: [{
89
- type: Inject,
90
- args: [ZITI_URLS]
91
- }] }, { type: i6.SettingsService, decorators: [{
92
- type: Inject,
93
- args: [SETTINGS_SERVICE]
94
- }] }, { type: i1.HttpClient }, { type: i2.Router }, { type: i3.GrowlerService }, { type: i4.LoggerService }, { type: i5.ValidationService }]; } });
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemFjLXdyYXBwZXItc2VydmljZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy93cmFwcGVycy96YWMtd3JhcHBlci1zZXJ2aWNlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFDLHNCQUFzQixFQUE4QixNQUFNLCtDQUErQyxDQUFDO0FBQ2xILE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQWtCLE1BQU0saUNBQWlDLENBQUM7QUFFbEYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7QUFLbEMsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxjQUFjLENBQXlCLHFCQUFxQixDQUFDLENBQUM7QUFFckcsYUFBYTtBQUNiLE1BQU0sRUFBQyxDQUFDLEVBQUUsSUFBSSxFQUFDLEdBQUcsTUFBTSxDQUFDO0FBRXpCLE1BQ3NCLHNCQUFzQjtJQVV4QyxZQUM4QyxvQkFBaUQsRUFDOUQsSUFBUyxFQUNGLGVBQWdDLEVBQzFELElBQWdCLEVBQ2hCLE1BQWMsRUFDZCxjQUE4QixFQUM5QixhQUE0QixFQUM1QixpQkFBb0M7UUFQSix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQTZCO1FBQzlELFNBQUksR0FBSixJQUFJLENBQUs7UUFDRixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDMUQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLHNC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O1FBQ2xDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQzsrR0FyRWlCLHNCQUFzQixrQkFXNUIsc0JBQXNCLGFBQ3RCLFNBQVMsYUFDVCxnQkFBZ0I7bUhBYlYsc0JBQXNCLGNBRG5CLE1BQU07O1NBQ1Qsc0JBQXNCOzRGQUF0QixzQkFBc0I7a0JBRDNDLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDOzswQkFZdkIsTUFBTTsyQkFBQyxzQkFBc0I7OzBCQUM3QixNQUFNOzJCQUFDLFNBQVM7OzBCQUNoQixNQUFNOzJCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RXZlbnRFbWl0dGVyLCBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7WklUSV9ET01BSU5fQ09OVFJPTExFUiwgWml0aURvbWFpbkNvbnRyb2xsZXJTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMveml0aS1kb21haW4tY29udHJvbGxlci5zZXJ2aWNlXCI7XG5pbXBvcnQge1pJVElfVVJMU30gZnJvbSBcIi4uLy4uL3ppdGktY29uc29sZS5jb25zdGFudHNcIjtcbmltcG9ydCB7U0VUVElOR1NfU0VSVklDRSwgU2V0dGluZ3NTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvc2V0dGluZ3Muc2VydmljZVwiO1xuaW1wb3J0IHtIdHRwQ2xpZW50fSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtHcm93bGVyU2VydmljZX0gZnJvbSBcIi4uL21lc3NhZ2luZy9ncm93bGVyLnNlcnZpY2VcIjtcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSBcIi4uL21lc3NhZ2luZy9sb2dnZXIuc2VydmljZVwiO1xuaW1wb3J0IHtWYWxpZGF0aW9uU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3ZhbGlkYXRpb24uc2VydmljZVwiO1xuXG5leHBvcnQgY29uc3QgWkFDX1dSQVBQRVJfU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxaYWNXcmFwcGVyU2VydmljZUNsYXNzPignWkFDX1dSQVBQRVJfU0VSVklDRScpO1xuXG4vLyBAdHMtaWdub3JlXG5jb25zdCB7JCwgdGFnc30gPSB3aW5kb3c7XG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFphY1dyYXBwZXJTZXJ2aWNlQ2xhc3Mge1xuXG4gICAgcm9vdFJlc291cmNlQWRkcmVzczogc3RyaW5nO1xuICAgIHppdGlVcGRhdGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAgIHBhZ2VDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAgIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgIHBhZ2UgPSAnJztcbiAgICBzY3JpcHRzQWRkZWQgPSBmYWxzZTtcbiAgICB6YWNJbml0ID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChaSVRJX0RPTUFJTl9DT05UUk9MTEVSKSBwcm90ZWN0ZWQgeml0aURvbWFpbkNvbnRyb2xsZXI6IFppdGlEb21haW5Db250cm9sbGVyU2VydmljZSxcbiAgICAgICAgQEluamVjdChaSVRJX1VSTFMpIHByb3RlY3RlZCBVUkxTOiBhbnksXG4gICAgICAgIEBJbmplY3QoU0VUVElOR1NfU0VSVklDRSkgcHJvdGVjdGVkIHNldHRpbmdzU2VydmljZTogU2V0dGluZ3NTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCxcbiAgICAgICAgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcm90ZWN0ZWQgZ3Jvd2xlclNlcnZpY2U6IEdyb3dsZXJTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgbG9nZ2VyU2VydmljZTogTG9nZ2VyU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIHZhbGlkYXRpb25TZXJ2aWNlOiBWYWxpZGF0aW9uU2VydmljZVxuICAgICkge31cblxuICAgIHB1YmxpYyBhYnN0cmFjdCBpbml0WmFjKCk7XG4gICAgcHVibGljIGFic3RyYWN0IGxvYWRDdXJyZW50UGFnZSgpXG4gICAgcHVibGljIGFic3RyYWN0IGluaXRaQUNCdXR0b25MaXN0ZW5lcigpO1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBpbml0WmFjTGlzdGVuZXJzKCk7XG5cbiAgICBpbml0WkFDUGVyc29uYWxTZXR0aW5ncygpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNldHRpbmdzU2VydmljZT8uc3VwcG9ydGVkRmVhdHVyZXM/LnRhZ3MpIHtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiaGlkZVRhZ3NcIiwgXCJ5ZXNcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShcImhpZGVUYWdzXCIpXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwicHJpbWFyeUNvbG9yXCIpIT1udWxsKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXCItLXByaW1hcnlcIiwgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJwcmltYXJ5Q29sb3JcIikpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInNlY29uZGFyeUNvbG9yXCIpIT1udWxsKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXCItLXNlY29uZGFyeVwiLCBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInNlY29uZGFyeUNvbG9yXCIpKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbW9kZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiVHJhbnNpdGlvbnNcIik7XG4gICAgICAgIGlmIChtb2RlPT1cIm9mZlwiKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXCItLXRyYW5zaXRpb25cIiwgXCIwc1wiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcIi0tdHJhbnNpdGlvblwiLCBcIjAuNXNcIik7XG4gICAgICAgIH1cbiAgICAgICAgJChkb2N1bWVudCkucmVhZHkoKGUpID0+IHtcbiAgICAgICAgICAgICQoXCIucGVyc29uYWxcIikuc2hvdygpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLnNldHRpbmdzU2VydmljZT8uc3VwcG9ydGVkRmVhdHVyZXM/LnRhZ3MpIHtcbiAgICAgICAgICAgICAgICAkKFwiI0hpZGVUYWdzXCIpLnBhcmVudCgpLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAkKCc8ZGl2PjwvZGl2PicpLmluc2VydEJlZm9yZSgkKFwiI0hpZGVUYWdzXCIpLnBhcmVudCgpLnNpYmxpbmdzKClbM10pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXNldFphY0V2ZW50cygpIHtcbiAgICAgICAgJChcImlucHV0XCIpLm9mZihcImtleXVwXCIpO1xuICAgICAgICAkKFwic2VsZWN0XCIpLm9mZihcImtleXVwXCIpO1xuICAgICAgICAkKFwiLnRvZ2dsZVwiKS5vZmYoXCJjbGlja1wiKTtcbiAgICAgICAgJChcImJvZHlcIikub2ZmKFwia2V5dXBcIik7XG4gICAgICAgICQoXCIjU1NlcnZpY2VOYW1lXCIpLm9mZigna2V5dXAnKTtcbiAgICAgICAgJChcIiNTU2VydmljZUhvc3RcIikub2ZmKCdrZXl1cCcpO1xuICAgICAgICAkKFwiI0NyZWF0ZUJ1dHRvblwiKS5vZmYoJ2NsaWNrJyk7XG4gICAgICAgICQoXCIjQ3JlYXRlSWRCdXR0b25cIikub2ZmKCdjbGljaycpO1xuICAgICAgICAkKFwiI0lkZW50aXR5RG93bmxvYWRcIikub2ZmKCdjbGljaycpO1xuICAgICAgICAkKFwiI0RvbmVJZEJ1dHRvblwiKS5vZmYoJ2NsaWNrJyk7XG4gICAgICAgICQoXCIjRG9uZVNlcnZpY2VCdXR0b25cIikub2ZmKCdjbGljaycpO1xuICAgICAgICAkKFwiI0lubGluZUFkZElkZW50aXR5QnV0dG9uXCIpLm9mZignY2xpY2snKTtcbiAgICAgICAgJChcIiNJbmxpbmVBZGRTZXJ2aWNlQnV0dG9uXCIpLm9mZignY2xpY2snKTtcbiAgICAgICAgJChcIiNBbGVydEJ1dHRvblwiKS5vZmYoJ2NsaWNrJyk7XG4gICAgICAgIHRhZ3MudGFnRGF0YSA9IFtdO1xuICAgIH1cbn0iXX0=
@@ -1,148 +0,0 @@
1
- /*
2
- Copyright NetFoundry Inc.
3
-
4
- Licensed under the Apache License, Version 2.0 (the "License");
5
- you may not use this file except in compliance with the License.
6
- You may obtain a copy of the License at
7
-
8
- https://www.apache.org/licenses/LICENSE-2.0
9
-
10
- Unless required by applicable law or agreed to in writing, software
11
- distributed under the License is distributed on an "AS IS" BASIS,
12
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- See the License for the specific language governing permissions and
14
- limitations under the License.
15
- */
16
- import { Component, Inject, ViewChild } from '@angular/core';
17
- import { NavigationEnd } from '@angular/router';
18
- import { ZAC_WRAPPER_SERVICE } from "./zac-wrapper-service.class";
19
- import { cloneDeep, invoke, defer, set, get } from 'lodash';
20
- import { Subscription } from "rxjs";
21
- import { SETTINGS_SERVICE } from "../../services/settings.service";
22
- import { ZAC_LOGIN_SERVICE } from "../../services/login-service.class";
23
- import * as i0 from "@angular/core";
24
- import * as i1 from "../messaging/logger.service";
25
- import * as i2 from "@angular/router";
26
- import * as i3 from "@angular/common";
27
- import * as i4 from "@angular/forms";
28
- import * as i5 from "../loading-indicator/loading-indicator.component";
29
- import * as i6 from "../../safe.pipe";
30
- import * as i7 from "./zac-wrapper-service.class";
31
- import * as i8 from "../../services/settings.service";
32
- import * as i9 from "../../services/login-service.class";
33
- const context = window['context'];
34
- class ZacWrapperComponent {
35
- constructor(wrapperService, settingsService, loggerService, loginService, router) {
36
- this.wrapperService = wrapperService;
37
- this.settingsService = settingsService;
38
- this.loggerService = loggerService;
39
- this.loginService = loginService;
40
- this.router = router;
41
- this.loading = false;
42
- this.pageHtml = '';
43
- this.subscription = new Subscription();
44
- this.title = 'Ziti Console';
45
- this.waitingForSession = true;
46
- this.pageLoading = false;
47
- this.settings = {};
48
- }
49
- ngOnInit() {
50
- this.wrapperService.initZac();
51
- this.subscription.add(this.wrapperService.pageChanged.subscribe(() => {
52
- if (this.waitingForSession) {
53
- return;
54
- }
55
- this.loadPage();
56
- }));
57
- this.subscription.add(this.wrapperService.zitiUpdated.subscribe(() => {
58
- if (this.waitingForSession) {
59
- return;
60
- }
61
- this.loadPage();
62
- }));
63
- this.subscription.add(this.settingsService.settingsChange.subscribe(async (results) => {
64
- const hasSession = this.settingsService.hasSession();
65
- const controllerChanged = this.settings?.session?.controllerDomain !== results?.session?.controllerDomain;
66
- if (hasSession && (!this.pageLoading || controllerChanged)) {
67
- this.pageLoading = true;
68
- this.pageHtml = undefined;
69
- defer(async () => {
70
- await this.loadPage();
71
- this.waitingForSession = false;
72
- this.pageLoading = false;
73
- });
74
- }
75
- this.settings = cloneDeep(results);
76
- }));
77
- this.subscription.add(this.router.events.subscribe((event) => {
78
- if (event instanceof NavigationEnd) {
79
- this.loadPage();
80
- }
81
- }));
82
- defer(() => {
83
- this.wrapperService.initZACButtonListener();
84
- });
85
- }
86
- ngOnDestroy() {
87
- this.subscription.unsubscribe();
88
- this.pageHtml = undefined;
89
- }
90
- async loadPage() {
91
- this.pageHtml = await this.wrapperService.loadCurrentPage();
92
- defer(() => {
93
- this.wrapperService.resetZacEvents();
94
- this.executePageScripts();
95
- });
96
- }
97
- executePageScripts() {
98
- const scripts = this.zacContainer.nativeElement.getElementsByTagName('script');
99
- for (const script of scripts) {
100
- const scriptCopy = document.createElement('script');
101
- scriptCopy.type = script.type ? script.type : 'text/javascript';
102
- if (script.innerHTML) {
103
- scriptCopy.innerHTML = script.innerHTML;
104
- }
105
- else if (script.src) {
106
- scriptCopy.src = script.src;
107
- }
108
- scriptCopy.async = false;
109
- script.parentNode.replaceChild(scriptCopy, script);
110
- }
111
- defer(() => {
112
- try {
113
- set(window, 'context.items', []);
114
- set(window, 'context.watchers', []);
115
- set(window, 'context.eventWatchers', []);
116
- invoke(window, 'app.init');
117
- context.addListener(get(window, 'page.filterObject.name', 'identities'), this.wrapperService.initZACButtonListener);
118
- this.wrapperService.initZACPersonalSettings();
119
- }
120
- catch (err) {
121
- this.loggerService.error('error initializing page scripts');
122
- }
123
- finally {
124
- this.loading = false;
125
- }
126
- });
127
- }
128
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ZacWrapperComponent, deps: [{ token: ZAC_WRAPPER_SERVICE }, { token: SETTINGS_SERVICE }, { token: i1.LoggerService }, { token: ZAC_LOGIN_SERVICE }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component }); }
129
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ZacWrapperComponent, selector: "app-zac-wrapper", viewQueries: [{ propertyName: "zacContainer", first: true, predicate: ["zacContainer"], descendants: true }], ngImport: i0, template: "<div class=\"zac-wrapper-container\" [innerHTML]=\"pageHtml | safe\" #zacContainer [ngClass]=\"{'hidden': pageLoading}\"></div>\n<!-- Operational Wizard UI -->\n<div id=\"WizardModal\" class=\"modal box\">\n <div class=\"close icon-close\"></div>\n <div class=\"title\" data-i18n=\"ZitiWizard\"></div>\n <div class=\"subtitle\" data-i18n=\"WizardService\"></div>\n <div class=\"wizard area open\">\n <label for=\"WServiceName\" data-i18n=\"ServiceName\"></label>\n <input id=\"WServiceName\" type=\"text\" maxlength=\"100\" />\n <label for=\"WServiceRoles\"></label>\n </div>\n <div></div>\n</div>\n\n\n<!-- Add Any Modal UI -->\n<div id=\"AddAnyModal\" class=\"modal box\" style=\"height: fit-content; width: 600px; transition: var(--transition);\" [ngClass]=\"{'hidden': pageLoading}\">\n <div class=\"close icon-close\"></div>\n <div id=\"Select1\">\n <div class=\"title\" data-i18n=\"AddTitle\"></div>\n <div id=\"Selector\" class=\"grid dual\">\n <div id=\"InlineAddIdentityButton\" class=\"iconButton\">\n <div class=\"image icon-identity\"></div>\n <div class=\"label\" data-i18n=\"AddIdentity\"></div>\n </div>\n <div id=\"InlineAddServiceButton\" class=\"iconButton\">\n <div class=\"image icon-services\"></div>\n <div class=\"label\" data-i18n=\"AddService\"></div>\n </div>\n </div>\n </div>\n\n <div id=\"InlineIdentityArea\" style=\"display: none;\" class=\"anyadd\">\n <div class=\"title\" data-i18n=\"AddSimpleIdentity\"></div>\n <div id=\"IdentityLoader\" class=\"center\" style=\"display: none;\">\n <div class=\"lds-ripple\"><div></div><div></div></div>\n </div>\n <div id=\"Identity1\" class=\"anyid\">\n <label for=\"IdName\" data-i18n=\"Name\"></label>\n <input id=\"IdName\" type=\"text\" maxlength=\"50\" data-i18n=\"EnterName\" />\n <label for=\"IdRoles\" data-i18n=\"RoleAttributes\"></label>\n <div id=\"IdRoles\"></div>\n <div class=\"buttons\">\n <div></div>\n <div id=\"CreateIdButton\" class=\"button\" data-i18n=\"Create\"></div>\n </div>\n </div>\n <div id=\"Identity2\" style=\"display: none;\" class=\"anyid\">\n <div class=\"center\">\n <div id=\"IdentityQrCode\"></div>\n </div>\n <div id=\"IdentityDownload\" class=\"linkButton\" data-i18n=\"DownloadJWT\"></div>\n <div class=\"center\">\n <div id=\"DoneIdButton\" class=\"button\" data-i18n=\"Done\"></div>\n </div>\n </div>\n </div>\n\n <div id=\"InlineServiceArea\" style=\"display: none;\" class=\"anyadd\">\n <div class=\"title\" data-i18n=\"AddSimpleService\"></div>\n <div id=\"SServiceLoader\" class=\"center\" style=\"display: none;\">\n <div class=\"lds-ripple\"><div></div><div></div></div>\n </div>\n <div id=\"Service1\" class=\"anyservice\">\n <label for=\"SServiceName\" data-i18n=\"ServiceName\"></label>\n <input id=\"SServiceName\" type=\"text\" maxlength=\"50\" data-i18n=\"EnterName\" />\n <label for=\"WhereHosted\" data-i18n=\"WhereHosted\"></label>\n <div id=\"WhereHosted\"></div>\n <label for=\"WhatIsIt\" data-i18n=\"WhatShare\"></label>\n <div class=\"grid addressFull\">\n <select id=\"HostedProtocol\">\n <option value=\"tcp\">tcp</option>\n <option value=\"udp\">udp</option>\n </select>\n <input id=\"HostedHost\" type=\"text\" maxlength=\"100\" value=\"localhost\" data-i18n=\"EgHost\" />\n <input id=\"HostedPort\" type=\"number\" maxlength=\"10\" value=\"80\" />\n </div>\n <label for=\"WhoAccesses\" data-i18n=\"WhoAccesses\"></label>\n <div id=\"WhoAccesses\"></div>\n <div id=\"IsEncryptionRequired\" class=\"forminfo\" style=\"display: none\"></div>\n <div class=\"grid checkLabel\">\n <div id=\"SimpleEncryptionRequired\" class=\"toggle\">\n <div class=\"switch\"></div>\n <div class=\"label\"></div>\n </div>\n <div class=\"toggleLabel\" data-i18n=\"RequireEncryption\"></div>\n </div>\n <label for=\"HowTo\" data-i18n=\"HowShare\"></label>\n <div class=\"grid addressPort\">\n <input id=\"HowTo\" type=\"text\" maxlength=\"100\" data-i18n=\"EgHost\" />\n <input id=\"HowToPort\" type=\"number\" maxlength=\"10\" value=\"80\" />\n </div>\n <div class=\"buttons\">\n <div>\n <div class=\"linkButton closer\" data-i18n=\"Cancel\" style=\"width: fit-content;\"></div>\n </div>\n <div id=\"CreateButton\" class=\"button\" data-i18n=\"Create\"></div>\n </div>\n </div>\n <div id=\"Service2\" class=\"anyservice\" style=\"display: none;\">\n <label for=\"ServiceHappen\" data-i18n=\"ServiceHappen\"></label>\n <div id=\"ServiceHappen\"></div>\n <div class=\"buttons\">\n <div></div>\n <div id=\"DoneServiceButton\" class=\"button\" data-i18n=\"Done\"></div>\n </div>\n </div>\n </div>\n\n <div id=\"OperationCommands\" class=\"commands\" style=\"display: none\">\n <div class=\"title\" data-i18n=\"ExecutionOperations\"></div>\n <div id=\"ExecutionSteps\"></div>\n <div id=\"IconDownload\" class=\"icon icon-download\"></div>\n <label data-i18n=\"CLICommands\"></label>\n <div class=\"related\">\n <input id=\"CLICommands\" type=\"text\" readonly/>\n <div class=\"icon-copy copy\" data-copy=\"CLICommands\"></div>\n </div>\n <label data-i18n=\"APICalls\"></label>\n <div class=\"related\">\n <input id=\"ApiCall\" type=\"text\" readonly />\n <div class=\"icon-copy copy\" data-copy=\"ApiCall\"></div>\n </div>\n <div class=\"related\">\n <textarea id=\"ApiJson\"></textarea>\n <div class=\"icon-copy copy swap\" data-copy=\"ApiJson\"></div>\n </div>\n </div>\n\n</div>\n<lib-loading-indicator *ngIf=\"loading\" [isLoading]=\"loading\"></lib-loading-indicator>", styles: [".zac-wrapper-container{width:100%;height:100%;position:absolute;display:flex;flex-direction:column;top:0;left:0;flex:1 0 auto}.zac-wrapper-container.hidden,#AddAnyModal.hidden{display:none}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "component", type: i5.LoadingIndicatorComponent, selector: "lib-loading-indicator", inputs: ["isLoading"] }, { kind: "pipe", type: i6.SafePipe, name: "safe" }] }); }
130
- }
131
- export { ZacWrapperComponent };
132
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ZacWrapperComponent, decorators: [{
133
- type: Component,
134
- args: [{ selector: 'app-zac-wrapper', template: "<div class=\"zac-wrapper-container\" [innerHTML]=\"pageHtml | safe\" #zacContainer [ngClass]=\"{'hidden': pageLoading}\"></div>\n<!-- Operational Wizard UI -->\n<div id=\"WizardModal\" class=\"modal box\">\n <div class=\"close icon-close\"></div>\n <div class=\"title\" data-i18n=\"ZitiWizard\"></div>\n <div class=\"subtitle\" data-i18n=\"WizardService\"></div>\n <div class=\"wizard area open\">\n <label for=\"WServiceName\" data-i18n=\"ServiceName\"></label>\n <input id=\"WServiceName\" type=\"text\" maxlength=\"100\" />\n <label for=\"WServiceRoles\"></label>\n </div>\n <div></div>\n</div>\n\n\n<!-- Add Any Modal UI -->\n<div id=\"AddAnyModal\" class=\"modal box\" style=\"height: fit-content; width: 600px; transition: var(--transition);\" [ngClass]=\"{'hidden': pageLoading}\">\n <div class=\"close icon-close\"></div>\n <div id=\"Select1\">\n <div class=\"title\" data-i18n=\"AddTitle\"></div>\n <div id=\"Selector\" class=\"grid dual\">\n <div id=\"InlineAddIdentityButton\" class=\"iconButton\">\n <div class=\"image icon-identity\"></div>\n <div class=\"label\" data-i18n=\"AddIdentity\"></div>\n </div>\n <div id=\"InlineAddServiceButton\" class=\"iconButton\">\n <div class=\"image icon-services\"></div>\n <div class=\"label\" data-i18n=\"AddService\"></div>\n </div>\n </div>\n </div>\n\n <div id=\"InlineIdentityArea\" style=\"display: none;\" class=\"anyadd\">\n <div class=\"title\" data-i18n=\"AddSimpleIdentity\"></div>\n <div id=\"IdentityLoader\" class=\"center\" style=\"display: none;\">\n <div class=\"lds-ripple\"><div></div><div></div></div>\n </div>\n <div id=\"Identity1\" class=\"anyid\">\n <label for=\"IdName\" data-i18n=\"Name\"></label>\n <input id=\"IdName\" type=\"text\" maxlength=\"50\" data-i18n=\"EnterName\" />\n <label for=\"IdRoles\" data-i18n=\"RoleAttributes\"></label>\n <div id=\"IdRoles\"></div>\n <div class=\"buttons\">\n <div></div>\n <div id=\"CreateIdButton\" class=\"button\" data-i18n=\"Create\"></div>\n </div>\n </div>\n <div id=\"Identity2\" style=\"display: none;\" class=\"anyid\">\n <div class=\"center\">\n <div id=\"IdentityQrCode\"></div>\n </div>\n <div id=\"IdentityDownload\" class=\"linkButton\" data-i18n=\"DownloadJWT\"></div>\n <div class=\"center\">\n <div id=\"DoneIdButton\" class=\"button\" data-i18n=\"Done\"></div>\n </div>\n </div>\n </div>\n\n <div id=\"InlineServiceArea\" style=\"display: none;\" class=\"anyadd\">\n <div class=\"title\" data-i18n=\"AddSimpleService\"></div>\n <div id=\"SServiceLoader\" class=\"center\" style=\"display: none;\">\n <div class=\"lds-ripple\"><div></div><div></div></div>\n </div>\n <div id=\"Service1\" class=\"anyservice\">\n <label for=\"SServiceName\" data-i18n=\"ServiceName\"></label>\n <input id=\"SServiceName\" type=\"text\" maxlength=\"50\" data-i18n=\"EnterName\" />\n <label for=\"WhereHosted\" data-i18n=\"WhereHosted\"></label>\n <div id=\"WhereHosted\"></div>\n <label for=\"WhatIsIt\" data-i18n=\"WhatShare\"></label>\n <div class=\"grid addressFull\">\n <select id=\"HostedProtocol\">\n <option value=\"tcp\">tcp</option>\n <option value=\"udp\">udp</option>\n </select>\n <input id=\"HostedHost\" type=\"text\" maxlength=\"100\" value=\"localhost\" data-i18n=\"EgHost\" />\n <input id=\"HostedPort\" type=\"number\" maxlength=\"10\" value=\"80\" />\n </div>\n <label for=\"WhoAccesses\" data-i18n=\"WhoAccesses\"></label>\n <div id=\"WhoAccesses\"></div>\n <div id=\"IsEncryptionRequired\" class=\"forminfo\" style=\"display: none\"></div>\n <div class=\"grid checkLabel\">\n <div id=\"SimpleEncryptionRequired\" class=\"toggle\">\n <div class=\"switch\"></div>\n <div class=\"label\"></div>\n </div>\n <div class=\"toggleLabel\" data-i18n=\"RequireEncryption\"></div>\n </div>\n <label for=\"HowTo\" data-i18n=\"HowShare\"></label>\n <div class=\"grid addressPort\">\n <input id=\"HowTo\" type=\"text\" maxlength=\"100\" data-i18n=\"EgHost\" />\n <input id=\"HowToPort\" type=\"number\" maxlength=\"10\" value=\"80\" />\n </div>\n <div class=\"buttons\">\n <div>\n <div class=\"linkButton closer\" data-i18n=\"Cancel\" style=\"width: fit-content;\"></div>\n </div>\n <div id=\"CreateButton\" class=\"button\" data-i18n=\"Create\"></div>\n </div>\n </div>\n <div id=\"Service2\" class=\"anyservice\" style=\"display: none;\">\n <label for=\"ServiceHappen\" data-i18n=\"ServiceHappen\"></label>\n <div id=\"ServiceHappen\"></div>\n <div class=\"buttons\">\n <div></div>\n <div id=\"DoneServiceButton\" class=\"button\" data-i18n=\"Done\"></div>\n </div>\n </div>\n </div>\n\n <div id=\"OperationCommands\" class=\"commands\" style=\"display: none\">\n <div class=\"title\" data-i18n=\"ExecutionOperations\"></div>\n <div id=\"ExecutionSteps\"></div>\n <div id=\"IconDownload\" class=\"icon icon-download\"></div>\n <label data-i18n=\"CLICommands\"></label>\n <div class=\"related\">\n <input id=\"CLICommands\" type=\"text\" readonly/>\n <div class=\"icon-copy copy\" data-copy=\"CLICommands\"></div>\n </div>\n <label data-i18n=\"APICalls\"></label>\n <div class=\"related\">\n <input id=\"ApiCall\" type=\"text\" readonly />\n <div class=\"icon-copy copy\" data-copy=\"ApiCall\"></div>\n </div>\n <div class=\"related\">\n <textarea id=\"ApiJson\"></textarea>\n <div class=\"icon-copy copy swap\" data-copy=\"ApiJson\"></div>\n </div>\n </div>\n\n</div>\n<lib-loading-indicator *ngIf=\"loading\" [isLoading]=\"loading\"></lib-loading-indicator>", styles: [".zac-wrapper-container{width:100%;height:100%;position:absolute;display:flex;flex-direction:column;top:0;left:0;flex:1 0 auto}.zac-wrapper-container.hidden,#AddAnyModal.hidden{display:none}\n"] }]
135
- }], ctorParameters: function () { return [{ type: i7.ZacWrapperServiceClass, decorators: [{
136
- type: Inject,
137
- args: [ZAC_WRAPPER_SERVICE]
138
- }] }, { type: i8.SettingsService, decorators: [{
139
- type: Inject,
140
- args: [SETTINGS_SERVICE]
141
- }] }, { type: i1.LoggerService }, { type: i9.LoginServiceClass, decorators: [{
142
- type: Inject,
143
- args: [ZAC_LOGIN_SERVICE]
144
- }] }, { type: i2.Router }]; }, propDecorators: { zacContainer: [{
145
- type: ViewChild,
146
- args: ['zacContainer']
147
- }] } });
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemFjLXdyYXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL3dyYXBwZXJzL3phYy13cmFwcGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy93cmFwcGVycy96YWMtd3JhcHBlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQUVGLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFxQixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDOUUsT0FBTyxFQUFTLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxtQkFBbUIsRUFBeUIsTUFBTSw2QkFBNkIsQ0FBQztBQUN4RixPQUFPLEVBQUMsU0FBUyxFQUFTLE1BQU0sRUFBVyxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUMxRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUlsRixPQUFPLEVBQW9CLGlCQUFpQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7Ozs7Ozs7Ozs7O0FBQ3hGLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUVsQyxNQUthLG1CQUFtQjtJQVc5QixZQUN5QyxjQUFzQyxFQUN6QyxlQUFnQyxFQUMxRCxhQUE0QixFQUNELFlBQStCLEVBQzFELE1BQWM7UUFKZSxtQkFBYyxHQUFkLGNBQWMsQ0FBd0I7UUFDekMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQzFELGtCQUFhLEdBQWIsYUFBYSxDQUFl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LE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztnQkFDM0IsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLHdCQUF3QixFQUFFLFlBQVksQ0FBQyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsQ0FBQztnQkFDcEgsSUFBSSxDQUFDLGNBQWMsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO2FBQy9DO1lBQUEsT0FBTSxHQUFHLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQzthQUM3RDtvQkFBUztnQkFDUixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQzthQUN0QjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0ExR1UsbUJBQW1CLGtCQVlsQixtQkFBbUIsYUFDbkIsZ0JBQWdCLDBDQUVoQixpQkFBaUI7bUdBZmxCLG1CQUFtQixxS0NqQ2hDLDA1TUFrSXFGOztTRGpHeEUsbUJBQW1COzRGQUFuQixtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0ksaUJBQWlCOzswQkFnQnhCLE1BQU07MkJBQUMsbUJBQW1COzswQkFDMUIsTUFBTTsyQkFBQyxnQkFBZ0I7OzBCQUV2QixNQUFNOzJCQUFDLGlCQUFpQjtpRUFORixZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICAgIENvcHlyaWdodCBOZXRGb3VuZHJ5IEluYy5cblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgSW5qZWN0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Um91dGVyLCBOYXZpZ2F0aW9uRW5kfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtaQUNfV1JBUFBFUl9TRVJWSUNFLCBaYWNXcmFwcGVyU2VydmljZUNsYXNzfSBmcm9tIFwiLi96YWMtd3JhcHBlci1zZXJ2aWNlLmNsYXNzXCI7XG5pbXBvcnQge2Nsb25lRGVlcCwgZGVsYXksIGludm9rZSwgaXNFbXB0eSwgZGVmZXIsIHNldCwgZ2V0fSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge1NldHRpbmdzU2VydmljZSwgU0VUVElOR1NfU0VSVklDRX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3NldHRpbmdzLnNlcnZpY2VcIjtcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSBcIi4uL21lc3NhZ2luZy9sb2dnZXIuc2VydmljZVwiO1xuXG5pbXBvcnQgJCBmcm9tICdqcXVlcnknO1xuaW1wb3J0IHtMb2dpblNlcnZpY2VDbGFzcywgWkFDX0xPR0lOX1NFUlZJQ0V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9sb2dpbi1zZXJ2aWNlLmNsYXNzXCI7XG5jb25zdCBjb250ZXh0ID0gd2luZG93Wydjb250ZXh0J107XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLXphYy13cmFwcGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vemFjLXdyYXBwZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3phYy13cmFwcGVyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFphY1dyYXBwZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgbG9hZGluZyA9IGZhbHNlO1xuICBwYWdlSHRtbDogYW55ID0gJyc7XG4gIHN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgdGl0bGUgPSAnWml0aSBDb25zb2xlJztcbiAgd2FpdGluZ0ZvclNlc3Npb24gPSB0cnVlO1xuICBwYWdlTG9hZGluZyA9IGZhbHNlO1xuICBzZXR0aW5nczogYW55ID0ge307XG4gIEBWaWV3Q2hpbGQoJ3phY0NvbnRhaW5lcicpIHphY0NvbnRhaW5lcjogYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgQEluamVjdChaQUNfV1JBUFBFUl9TRVJWSUNFKSBwcml2YXRlIHdyYXBwZXJTZXJ2aWNlOiBaYWNXcmFwcGVyU2VydmljZUNsYXNzLFxuICAgICAgQEluamVjdChTRVRUSU5HU19TRVJWSUNFKSBwcml2YXRlIHNldHRpbmdzU2VydmljZTogU2V0dGluZ3NTZXJ2aWNlLFxuICAgICAgcHJpdmF0ZSBsb2dnZXJTZXJ2aWNlOiBMb2dnZXJTZXJ2aWNlLFxuICAgICAgQEluamVjdChaQUNfTE9HSU5fU0VSVklDRSkgcHJpdmF0ZSBsb2dpblNlcnZpY2U6IExvZ2luU2VydmljZUNsYXNzLFxuICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgKSB7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLndyYXBwZXJTZXJ2aWNlLmluaXRaYWMoKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLndyYXBwZXJTZXJ2aWNlLnBhZ2VDaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLndhaXRpbmdGb3JTZXNzaW9uKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9hZFBhZ2UoKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgIHRoaXMud3JhcHBlclNlcnZpY2Uueml0aVVwZGF0ZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy53YWl0aW5nRm9yU2Vzc2lvbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmxvYWRQYWdlKCk7XG4gICAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLnNldHRpbmdzU2VydmljZS5zZXR0aW5nc0NoYW5nZS5zdWJzY3JpYmUoYXN5bmMgKHJlc3VsdHM6YW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGhhc1Nlc3Npb24gPSB0aGlzLnNldHRpbmdzU2VydmljZS5oYXNTZXNzaW9uKCk7XG4gICAgICAgIGNvbnN0IGNvbnRyb2xsZXJDaGFuZ2VkID0gdGhpcy5zZXR0aW5ncz8uc2Vzc2lvbj8uY29udHJvbGxlckRvbWFpbiAhPT0gcmVzdWx0cz8uc2Vzc2lvbj8uY29udHJvbGxlckRvbWFpbjtcbiAgICAgICAgaWYgKGhhc1Nlc3Npb24gJiYgKCF0aGlzLnBhZ2VMb2FkaW5nIHx8IGNvbnRyb2xsZXJDaGFuZ2VkKSkge1xuICAgICAgICAgIHRoaXMucGFnZUxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgIHRoaXMucGFnZUh0bWwgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgZGVmZXIoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5sb2FkUGFnZSgpO1xuICAgICAgICAgICAgdGhpcy53YWl0aW5nRm9yU2Vzc2lvbiA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5wYWdlTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0dGluZ3MgPSBjbG9uZURlZXAocmVzdWx0cyk7XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xuICAgICAgICAgICAgdGhpcy5sb2FkUGFnZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICApO1xuICAgIGRlZmVyKCgpID0+IHtcbiAgICAgIHRoaXMud3JhcHBlclNlcnZpY2UuaW5pdFpBQ0J1dHRvbkxpc3RlbmVyKCk7XG4gICAgfSlcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5wYWdlSHRtbCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGFzeW5jIGxvYWRQYWdlKCkge1xuICAgIHRoaXMucGFnZUh0bWwgPSBhd2FpdCB0aGlzLndyYXBwZXJTZXJ2aWNlLmxvYWRDdXJyZW50UGFnZSgpO1xuICAgIGRlZmVyKCgpID0+IHtcbiAgICAgIHRoaXMud3JhcHBlclNlcnZpY2UucmVzZXRaYWNFdmVudHMoKTtcbiAgICAgIHRoaXMuZXhlY3V0ZVBhZ2VTY3JpcHRzKCk7XG4gICAgfSk7XG4gIH1cblxuICBleGVjdXRlUGFnZVNjcmlwdHMoKSB7XG4gICAgY29uc3Qgc2NyaXB0cyA9IHRoaXMuemFjQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpO1xuICAgIGZvciAoY29uc3Qgc2NyaXB0IG9mIHNjcmlwdHMpIHtcbiAgICAgIGNvbnN0IHNjcmlwdENvcHkgPSA8SFRNTFNjcmlwdEVsZW1lbnQ+ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgICBzY3JpcHRDb3B5LnR5cGUgPSBzY3JpcHQudHlwZSA/IHNjcmlwdC50eXBlIDogJ3RleHQvamF2YXNjcmlwdCc7XG4gICAgICBpZiAoc2NyaXB0LmlubmVySFRNTCkge1xuICAgICAgICBzY3JpcHRDb3B5LmlubmVySFRNTCA9IHNjcmlwdC5pbm5lckhUTUw7XG4gICAgICB9IGVsc2UgaWYgKHNjcmlwdC5zcmMpIHtcbiAgICAgICAgc2NyaXB0Q29weS5zcmMgPSBzY3JpcHQuc3JjO1xuICAgICAgfVxuICAgICAgc2NyaXB0Q29weS5hc3luYyA9IGZhbHNlO1xuICAgICAgc2NyaXB0LnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKHNjcmlwdENvcHksIHNjcmlwdCk7XG4gICAgfVxuICAgIGRlZmVyKCgpID0+IHtcbiAgICAgIHRyeXtcbiAgICAgICAgc2V0KHdpbmRvdywgJ2NvbnRleHQuaXRlbXMnLCBbXSk7XG4gICAgICAgIHNldCh3aW5kb3csICdjb250ZXh0LndhdGNoZXJzJywgW10pO1xuICAgICAgICBzZXQod2luZG93LCAnY29udGV4dC5ldmVudFdhdGNoZXJzJywgW10pO1xuICAgICAgICBpbnZva2Uod2luZG93LCAnYXBwLmluaXQnKTtcbiAgICAgICAgY29udGV4dC5hZGRMaXN0ZW5lcihnZXQod2luZG93LCAncGFnZS5maWx0ZXJPYmplY3QubmFtZScsICdpZGVudGl0aWVzJyksIHRoaXMud3JhcHBlclNlcnZpY2UuaW5pdFpBQ0J1dHRvbkxpc3RlbmVyKTtcbiAgICAgICAgdGhpcy53cmFwcGVyU2VydmljZS5pbml0WkFDUGVyc29uYWxTZXR0aW5ncygpO1xuICAgICAgfWNhdGNoKGVycikge1xuICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UuZXJyb3IoJ2Vycm9yIGluaXRpYWxpemluZyBwYWdlIHNjcmlwdHMnKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiemFjLXdyYXBwZXItY29udGFpbmVyXCIgW2lubmVySFRNTF09XCJwYWdlSHRtbCB8IHNhZmVcIiAjemFjQ29udGFpbmVyIFtuZ0NsYXNzXT1cInsnaGlkZGVuJzogcGFnZUxvYWRpbmd9XCI+PC9kaXY+XG48IS0tIE9wZXJhdGlvbmFsIFdpemFyZCBVSSAtLT5cbjxkaXYgaWQ9XCJXaXphcmRNb2RhbFwiIGNsYXNzPVwibW9kYWwgYm94XCI+XG4gICAgPGRpdiBjbGFzcz1cImNsb3NlIGljb24tY2xvc2VcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIiBkYXRhLWkxOG49XCJaaXRpV2l6YXJkXCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInN1YnRpdGxlXCIgZGF0YS1pMThuPVwiV2l6YXJkU2VydmljZVwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ3aXphcmQgYXJlYSBvcGVuXCI+XG4gICAgICAgIDxsYWJlbCBmb3I9XCJXU2VydmljZU5hbWVcIiBkYXRhLWkxOG49XCJTZXJ2aWNlTmFtZVwiPjwvbGFiZWw+XG4gICAgICAgIDxpbnB1dCBpZD1cIldTZXJ2aWNlTmFtZVwiIHR5cGU9XCJ0ZXh0XCIgbWF4bGVuZ3RoPVwiMTAwXCIgLz5cbiAgICAgICAgPGxhYmVsIGZvcj1cIldTZXJ2aWNlUm9sZXNcIj48L2xhYmVsPlxuICAgIDwvZGl2PlxuICAgIDxkaXY+PC9kaXY+XG48L2Rpdj5cblxuXG48IS0tIEFkZCBBbnkgTW9kYWwgVUkgLS0+XG48ZGl2IGlkPVwiQWRkQW55TW9kYWxcIiBjbGFzcz1cIm1vZGFsIGJveFwiIHN0eWxlPVwiaGVpZ2h0OiBmaXQtY29udGVudDsgd2lkdGg6IDYwMHB4OyB0cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0aW9uKTtcIiBbbmdDbGFzc109XCJ7J2hpZGRlbic6IHBhZ2VMb2FkaW5nfVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjbG9zZSBpY29uLWNsb3NlXCI+PC9kaXY+XG4gICAgPGRpdiBpZD1cIlNlbGVjdDFcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCIgZGF0YS1pMThuPVwiQWRkVGl0bGVcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cIlNlbGVjdG9yXCIgY2xhc3M9XCJncmlkIGR1YWxcIj5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJJbmxpbmVBZGRJZGVudGl0eUJ1dHRvblwiIGNsYXNzPVwiaWNvbkJ1dHRvblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZSBpY29uLWlkZW50aXR5XCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgZGF0YS1pMThuPVwiQWRkSWRlbnRpdHlcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBpZD1cIklubGluZUFkZFNlcnZpY2VCdXR0b25cIiBjbGFzcz1cImljb25CdXR0b25cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UgaWNvbi1zZXJ2aWNlc1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiIGRhdGEtaTE4bj1cIkFkZFNlcnZpY2VcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgaWQ9XCJJbmxpbmVJZGVudGl0eUFyZWFcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCIgY2xhc3M9XCJhbnlhZGRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCIgZGF0YS1pMThuPVwiQWRkU2ltcGxlSWRlbnRpdHlcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cIklkZW50aXR5TG9hZGVyXCIgY2xhc3M9XCJjZW50ZXJcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGRzLXJpcHBsZVwiPjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJJZGVudGl0eTFcIiBjbGFzcz1cImFueWlkXCI+XG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwiSWROYW1lXCIgZGF0YS1pMThuPVwiTmFtZVwiPjwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgaWQ9XCJJZE5hbWVcIiB0eXBlPVwidGV4dFwiIG1heGxlbmd0aD1cIjUwXCIgZGF0YS1pMThuPVwiRW50ZXJOYW1lXCIgLz5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJJZFJvbGVzXCIgZGF0YS1pMThuPVwiUm9sZUF0dHJpYnV0ZXNcIj48L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiBpZD1cIklkUm9sZXNcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25zXCI+XG4gICAgICAgICAgICAgICAgPGRpdj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiQ3JlYXRlSWRCdXR0b25cIiBjbGFzcz1cImJ1dHRvblwiIGRhdGEtaTE4bj1cIkNyZWF0ZVwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGlkPVwiSWRlbnRpdHkyXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIGNsYXNzPVwiYW55aWRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiSWRlbnRpdHlRckNvZGVcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBpZD1cIklkZW50aXR5RG93bmxvYWRcIiBjbGFzcz1cImxpbmtCdXR0b25cIiBkYXRhLWkxOG49XCJEb3dubG9hZEpXVFwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJEb25lSWRCdXR0b25cIiBjbGFzcz1cImJ1dHRvblwiIGRhdGEtaTE4bj1cIkRvbmVcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgaWQ9XCJJbmxpbmVTZXJ2aWNlQXJlYVwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiBjbGFzcz1cImFueWFkZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIiBkYXRhLWkxOG49XCJBZGRTaW1wbGVTZXJ2aWNlXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJTU2VydmljZUxvYWRlclwiIGNsYXNzPVwiY2VudGVyXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxkcy1yaXBwbGVcIj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGlkPVwiU2VydmljZTFcIiBjbGFzcz1cImFueXNlcnZpY2VcIj5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJTU2VydmljZU5hbWVcIiBkYXRhLWkxOG49XCJTZXJ2aWNlTmFtZVwiPjwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgaWQ9XCJTU2VydmljZU5hbWVcIiB0eXBlPVwidGV4dFwiIG1heGxlbmd0aD1cIjUwXCIgZGF0YS1pMThuPVwiRW50ZXJOYW1lXCIgLz5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJXaGVyZUhvc3RlZFwiIGRhdGEtaTE4bj1cIldoZXJlSG9zdGVkXCI+PC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJXaGVyZUhvc3RlZFwiPjwvZGl2PlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cIldoYXRJc0l0XCIgZGF0YS1pMThuPVwiV2hhdFNoYXJlXCI+PC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGFkZHJlc3NGdWxsXCI+XG4gICAgICAgICAgICAgICAgPHNlbGVjdCBpZD1cIkhvc3RlZFByb3RvY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJ0Y3BcIj50Y3A8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInVkcFwiPnVkcDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cIkhvc3RlZEhvc3RcIiB0eXBlPVwidGV4dFwiIG1heGxlbmd0aD1cIjEwMFwiIHZhbHVlPVwibG9jYWxob3N0XCIgZGF0YS1pMThuPVwiRWdIb3N0XCIgLz5cbiAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJIb3N0ZWRQb3J0XCIgdHlwZT1cIm51bWJlclwiIG1heGxlbmd0aD1cIjEwXCIgdmFsdWU9XCI4MFwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJXaG9BY2Nlc3Nlc1wiIGRhdGEtaTE4bj1cIldob0FjY2Vzc2VzXCI+PC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJXaG9BY2Nlc3Nlc1wiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBpZD1cIklzRW5jcnlwdGlvblJlcXVpcmVkXCIgY2xhc3M9XCJmb3JtaW5mb1wiIHN0eWxlPVwiZGlzcGxheTogbm9uZVwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgY2hlY2tMYWJlbFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJTaW1wbGVFbmNyeXB0aW9uUmVxdWlyZWRcIiBjbGFzcz1cInRvZ2dsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3dpdGNoXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b2dnbGVMYWJlbFwiIGRhdGEtaTE4bj1cIlJlcXVpcmVFbmNyeXB0aW9uXCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJIb3dUb1wiIGRhdGEtaTE4bj1cIkhvd1NoYXJlXCI+PC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGFkZHJlc3NQb3J0XCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiSG93VG9cIiB0eXBlPVwidGV4dFwiIG1heGxlbmd0aD1cIjEwMFwiIGRhdGEtaTE4bj1cIkVnSG9zdFwiIC8+XG4gICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiSG93VG9Qb3J0XCIgdHlwZT1cIm51bWJlclwiIG1heGxlbmd0aD1cIjEwXCIgdmFsdWU9XCI4MFwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25zXCI+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpbmtCdXR0b24gY2xvc2VyXCIgZGF0YS1pMThuPVwiQ2FuY2VsXCIgc3R5bGU9XCJ3aWR0aDogZml0LWNvbnRlbnQ7XCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBpZD1cIkNyZWF0ZUJ1dHRvblwiIGNsYXNzPVwiYnV0dG9uXCIgZGF0YS1pMThuPVwiQ3JlYXRlXCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJTZXJ2aWNlMlwiIGNsYXNzPVwiYW55c2VydmljZVwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIj5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJTZXJ2aWNlSGFwcGVuXCIgZGF0YS1pMThuPVwiU2VydmljZUhhcHBlblwiPjwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGlkPVwiU2VydmljZUhhcHBlblwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbnNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2PjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJEb25lU2VydmljZUJ1dHRvblwiIGNsYXNzPVwiYnV0dG9uXCIgZGF0YS1pMThuPVwiRG9uZVwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBpZD1cIk9wZXJhdGlvbkNvbW1hbmRzXCIgY2xhc3M9XCJjb21tYW5kc1wiIHN0eWxlPVwiZGlzcGxheTogbm9uZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIiBkYXRhLWkxOG49XCJFeGVjdXRpb25PcGVyYXRpb25zXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJFeGVjdXRpb25TdGVwc1wiPjwvZGl2PlxuICAgICAgICA8ZGl2IGlkPVwiSWNvbkRvd25sb2FkXCIgY2xhc3M9XCJpY29uIGljb24tZG93bmxvYWRcIj48L2Rpdj5cbiAgICAgICAgPGxhYmVsIGRhdGEtaTE4bj1cIkNMSUNvbW1hbmRzXCI+PC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0ZWRcIj5cbiAgICAgICAgICAgIDxpbnB1dCBpZD1cIkNMSUNvbW1hbmRzXCIgdHlwZT1cInRleHRcIiByZWFkb25seS8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1jb3B5IGNvcHlcIiBkYXRhLWNvcHk9XCJDTElDb21tYW5kc1wiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGxhYmVsIGRhdGEtaTE4bj1cIkFQSUNhbGxzXCI+PC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0ZWRcIj5cbiAgICAgICAgICAgIDxpbnB1dCBpZD1cIkFwaUNhbGxcIiB0eXBlPVwidGV4dFwiIHJlYWRvbmx5IC8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1jb3B5IGNvcHlcIiBkYXRhLWNvcHk9XCJBcGlDYWxsXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRlZFwiPlxuICAgICAgICAgICAgPHRleHRhcmVhIGlkPVwiQXBpSnNvblwiPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1jb3B5IGNvcHkgc3dhcFwiIGRhdGEtY29weT1cIkFwaUpzb25cIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbjwvZGl2PlxuPGxpYi1sb2FkaW5nLWluZGljYXRvciAqbmdJZj1cImxvYWRpbmdcIiBbaXNMb2FkaW5nXT1cImxvYWRpbmdcIj48L2xpYi1sb2FkaW5nLWluZGljYXRvcj4iXX0=