aril 0.0.49 → 0.0.51

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 (618) hide show
  1. package/boot/config/api/{index.ts → index.d.ts} +1 -1
  2. package/boot/config/api/src/api.service.d.ts +14 -0
  3. package/boot/config/api/src/interfaces.d.ts +9 -0
  4. package/boot/config/apps/{index.ts → index.d.ts} +2 -2
  5. package/boot/config/apps/src/apps.service.d.ts +16 -0
  6. package/boot/config/apps/src/interfaces.d.ts +23 -0
  7. package/boot/config/apps/src/showdowDOMWrapper.d.ts +10 -0
  8. package/boot/config/plugins/{index.ts → index.d.ts} +2 -2
  9. package/boot/config/plugins/src/getNgZone.d.ts +5 -0
  10. package/boot/config/plugins/src/interfaces.d.ts +18 -0
  11. package/boot/config/plugins/src/plugins.service.d.ts +9 -0
  12. package/boot/host/{index.ts → index.d.ts} +1 -1
  13. package/boot/host/src/app.component.d.ts +8 -0
  14. package/boot/host/src/bootstrap.d.ts +2 -0
  15. package/boot/index.d.ts +1 -0
  16. package/boot/mfe/{index.ts → index.d.ts} +1 -1
  17. package/boot/mfe/src/app.component.d.ts +12 -0
  18. package/boot/mfe/src/appComponentLoader.d.ts +1 -0
  19. package/boot/mfe/src/bootstrap.d.ts +6 -0
  20. package/boot/mfe/src/loadStyles.d.ts +3 -0
  21. package/esm2022/aril.mjs +5 -0
  22. package/esm2022/boot/aril-boot.mjs +5 -0
  23. package/esm2022/boot/config/api/aril-boot-config-api.mjs +5 -0
  24. package/esm2022/boot/config/api/index.mjs +2 -0
  25. package/esm2022/boot/config/api/src/api.service.mjs +42 -0
  26. package/esm2022/boot/config/api/src/interfaces.mjs +11 -0
  27. package/esm2022/boot/config/apps/aril-boot-config-apps.mjs +5 -0
  28. package/esm2022/boot/config/apps/index.mjs +3 -0
  29. package/esm2022/boot/config/apps/src/apps.service.mjs +51 -0
  30. package/esm2022/boot/config/apps/src/interfaces.mjs +17 -0
  31. package/esm2022/boot/config/apps/src/showdowDOMWrapper.mjs +35 -0
  32. package/esm2022/boot/config/plugins/aril-boot-config-plugins.mjs +5 -0
  33. package/esm2022/boot/config/plugins/index.mjs +3 -0
  34. package/esm2022/boot/config/plugins/src/getNgZone.mjs +12 -0
  35. package/esm2022/boot/config/plugins/src/interfaces.mjs +3 -0
  36. package/esm2022/boot/config/plugins/src/plugins.service.mjs +62 -0
  37. package/esm2022/boot/host/aril-boot-host.mjs +5 -0
  38. package/esm2022/boot/host/index.mjs +2 -0
  39. package/esm2022/boot/host/src/app.component.mjs +32 -0
  40. package/esm2022/boot/host/src/bootstrap.mjs +50 -0
  41. package/esm2022/boot/index.mjs +2 -0
  42. package/esm2022/boot/mfe/aril-boot-mfe.mjs +5 -0
  43. package/esm2022/boot/mfe/index.mjs +2 -0
  44. package/esm2022/boot/mfe/src/app.component.mjs +60 -0
  45. package/esm2022/boot/mfe/src/appComponentLoader.mjs +5 -0
  46. package/esm2022/boot/mfe/src/bootstrap.mjs +64 -0
  47. package/esm2022/boot/mfe/src/loadStyles.mjs +16 -0
  48. package/esm2022/http/aril-http.mjs +5 -0
  49. package/esm2022/http/index.mjs +12 -0
  50. package/esm2022/http/lib/enums.mjs +16 -0
  51. package/esm2022/http/lib/interfaces.mjs +15 -0
  52. package/esm2022/http/src/httpBackend.mjs +17 -0
  53. package/esm2022/http/src/httpClient.mjs +14 -0
  54. package/esm2022/http/src/interceptor/state-machine.interceptor.mjs +8 -0
  55. package/esm2022/http/src/serviceBase.mjs +60 -0
  56. package/esm2022/http/src/serviceMockBase.mjs +5 -0
  57. package/esm2022/http/src/serviceRequest.mjs +21 -0
  58. package/esm2022/http/src/serviceStateMethods.mjs +118 -0
  59. package/esm2022/i18n/aril-i18n.mjs +5 -0
  60. package/esm2022/i18n/index.mjs +6 -0
  61. package/esm2022/i18n/src/folder-name-token.mjs +3 -0
  62. package/esm2022/i18n/src/i18n.module.mjs +17 -0
  63. package/esm2022/i18n/src/loader.mjs +20 -0
  64. package/esm2022/i18n/src/provideI18n.mjs +16 -0
  65. package/esm2022/i18n/src/provideScope.mjs +18 -0
  66. package/esm2022/keycloak/aril-keycloak.mjs +5 -0
  67. package/esm2022/keycloak/index.mjs +4 -0
  68. package/esm2022/keycloak/src/auth.guard.mjs +39 -0
  69. package/esm2022/keycloak/src/auth.interceptor.mjs +10 -0
  70. package/esm2022/keycloak/src/keycloak.manager.mjs +76 -0
  71. package/esm2022/public-api.mjs +3 -0
  72. package/esm2022/theme/aril-theme.mjs +5 -0
  73. package/esm2022/theme/index.mjs +2 -0
  74. package/esm2022/theme/layout/app/breadcrumb/app.breadcrumb.component.mjs +41 -0
  75. package/esm2022/theme/layout/app/config/app.config.component.mjs +132 -0
  76. package/esm2022/theme/layout/app/layout/app.layout.component.mjs +147 -0
  77. package/esm2022/theme/layout/app/layout/mfe.layout.component.mjs +67 -0
  78. package/esm2022/theme/layout/app/menu/app.menu.component.mjs +398 -0
  79. package/esm2022/theme/layout/app/profileSidebar/app.profilesidebar.component.mjs +28 -0
  80. package/esm2022/theme/layout/app/sidebar/app.sidebar.component.mjs +41 -0
  81. package/esm2022/theme/layout/app/topbar/app.topbar.component.mjs +34 -0
  82. package/esm2022/theme/layout/aril-theme-layout.mjs +5 -0
  83. package/esm2022/theme/layout/index.mjs +4 -0
  84. package/esm2022/theme/layout/service/app.layout.service.mjs +127 -0
  85. package/esm2022/theme/layout/service/app.menu.service.mjs +53 -0
  86. package/esm2022/theme/layout/service/menuchangeevent.mjs +2 -0
  87. package/esm2022/ui/aril-ui.mjs +5 -0
  88. package/esm2022/ui/autoComplete/aril-ui-autoComplete.mjs +5 -0
  89. package/esm2022/ui/autoComplete/index.mjs +2 -0
  90. package/esm2022/ui/autoComplete/src/auto-complete.component.mjs +81 -0
  91. package/esm2022/ui/autoComplete/src/interfaces.mjs +2 -0
  92. package/esm2022/ui/badge/aril-ui-badge.mjs +5 -0
  93. package/esm2022/ui/badge/index.mjs +2 -0
  94. package/esm2022/ui/badge/src/badge.component.mjs +19 -0
  95. package/esm2022/ui/button/aril-ui-button.mjs +5 -0
  96. package/esm2022/ui/button/index.mjs +3 -0
  97. package/esm2022/ui/button/src/button.component.mjs +37 -0
  98. package/esm2022/ui/button/src/split-button.component.mjs +18 -0
  99. package/esm2022/ui/calendar/aril-ui-calendar.mjs +5 -0
  100. package/esm2022/ui/calendar/index.mjs +2 -0
  101. package/esm2022/ui/calendar/src/calendar.component.mjs +119 -0
  102. package/esm2022/ui/checkbox/aril-ui-checkbox.mjs +5 -0
  103. package/esm2022/ui/checkbox/index.mjs +3 -0
  104. package/esm2022/ui/checkbox/src/check-box.component.mjs +24 -0
  105. package/esm2022/ui/checkbox/src/tri-state-checkbox.component.mjs +24 -0
  106. package/esm2022/ui/dxField/aril-ui-dxField.mjs +5 -0
  107. package/esm2022/ui/dxField/index.mjs +2 -0
  108. package/esm2022/ui/dxField/src/dx-field.component.mjs +18 -0
  109. package/esm2022/ui/field/aril-ui-field.mjs +5 -0
  110. package/esm2022/ui/field/index.mjs +2 -0
  111. package/esm2022/ui/field/src/field.component.mjs +39 -0
  112. package/esm2022/ui/fileUpload/aril-ui-fileUpload.mjs +5 -0
  113. package/esm2022/ui/fileUpload/index.mjs +2 -0
  114. package/esm2022/ui/fileUpload/src/file-upload.component.mjs +61 -0
  115. package/esm2022/ui/form/aril-ui-form.mjs +5 -0
  116. package/esm2022/ui/form/index.mjs +22 -0
  117. package/esm2022/ui/form/src/form-submit-button.component.mjs +40 -0
  118. package/esm2022/ui/form/src/form.component.mjs +27 -0
  119. package/esm2022/ui/index.mjs +2 -0
  120. package/esm2022/ui/lib/aril-ui-lib.mjs +5 -0
  121. package/esm2022/ui/lib/index.mjs +15 -0
  122. package/esm2022/ui/lib/src/form/form-error-message.component.mjs +33 -0
  123. package/esm2022/ui/lib/src/form/form-error-message.directive.mjs +34 -0
  124. package/esm2022/ui/lib/src/form/form-field-builder.mjs +23 -0
  125. package/esm2022/ui/lib/src/form/form-validation.mjs +14 -0
  126. package/esm2022/ui/lib/src/grid/flex-grid.directive.mjs +21 -0
  127. package/esm2022/ui/lib/src/input/baseInput.mjs +24 -0
  128. package/esm2022/ui/lib/src/input/common-input-validators.service.mjs +49 -0
  129. package/esm2022/ui/lib/src/input/dx-input-error-message.pipe.mjs +22 -0
  130. package/esm2022/ui/lib/src/input/input-disabled.directive.mjs +25 -0
  131. package/esm2022/ui/lib/src/input/input-error-message.pipe.mjs +42 -0
  132. package/esm2022/ui/lib/src/input/input-transforms.mjs +8 -0
  133. package/esm2022/ui/lib/src/input/value-accessor.directive.mjs +38 -0
  134. package/esm2022/ui/mask/aril-ui-mask.mjs +5 -0
  135. package/esm2022/ui/mask/index.mjs +2 -0
  136. package/esm2022/ui/mask/src/mask.component.mjs +35 -0
  137. package/esm2022/ui/number/aril-ui-number.mjs +5 -0
  138. package/esm2022/ui/number/index.mjs +2 -0
  139. package/esm2022/ui/number/src/number.component.mjs +36 -0
  140. package/esm2022/ui/overlayPanel/aril-ui-overlayPanel.mjs +5 -0
  141. package/esm2022/ui/overlayPanel/index.mjs +2 -0
  142. package/esm2022/ui/overlayPanel/src/overlay-panel.component.mjs +20 -0
  143. package/esm2022/ui/panel/aril-ui-panel.mjs +5 -0
  144. package/esm2022/ui/panel/index.mjs +2 -0
  145. package/esm2022/ui/panel/src/panel.component.mjs +24 -0
  146. package/esm2022/ui/password/aril-ui-password.mjs +5 -0
  147. package/esm2022/ui/password/index.mjs +2 -0
  148. package/esm2022/ui/password/src/password.component.mjs +29 -0
  149. package/esm2022/ui/radioButton/aril-ui-radioButton.mjs +5 -0
  150. package/esm2022/ui/radioButton/index.mjs +2 -0
  151. package/esm2022/ui/radioButton/src/radio-button.component.mjs +30 -0
  152. package/esm2022/ui/selectBox/aril-ui-selectBox.mjs +5 -0
  153. package/esm2022/ui/selectBox/index.mjs +2 -0
  154. package/esm2022/ui/selectBox/src/interfaces.mjs +2 -0
  155. package/esm2022/ui/selectBox/src/select-box.component.mjs +54 -0
  156. package/esm2022/ui/switch/aril-ui-switch.mjs +5 -0
  157. package/esm2022/ui/switch/index.mjs +2 -0
  158. package/esm2022/ui/switch/src/switch.component.mjs +23 -0
  159. package/esm2022/ui/table/aril-ui-table.mjs +5 -0
  160. package/esm2022/ui/table/index.mjs +49 -0
  161. package/esm2022/ui/table/src/i18n.mjs +56 -0
  162. package/esm2022/ui/table/src/table-column.component.mjs +23 -0
  163. package/esm2022/ui/table/src/table.component.mjs +94 -0
  164. package/esm2022/ui/tagBox/aril-ui-tagBox.mjs +5 -0
  165. package/esm2022/ui/tagBox/index.mjs +2 -0
  166. package/esm2022/ui/tagBox/src/tag-box.component.mjs +50 -0
  167. package/esm2022/ui/text/aril-ui-text.mjs +5 -0
  168. package/esm2022/ui/text/index.mjs +2 -0
  169. package/esm2022/ui/text/src/text.component.mjs +40 -0
  170. package/esm2022/ui/textArea/aril-ui-textArea.mjs +5 -0
  171. package/esm2022/ui/textArea/index.mjs +2 -0
  172. package/esm2022/ui/textArea/src/text-area.component.mjs +26 -0
  173. package/esm2022/ui/toggle-button/aril-ui-toggle-button.mjs +5 -0
  174. package/esm2022/ui/toggle-button/index.mjs +2 -0
  175. package/esm2022/ui/toggle-button/src/toggle-button.component.mjs +25 -0
  176. package/esm2022/ui/tree/aril-ui-tree.mjs +5 -0
  177. package/esm2022/ui/tree/index.mjs +2 -0
  178. package/esm2022/ui/tree/src/tree.component.mjs +34 -0
  179. package/esm2022/ui/treeTable/aril-ui-treeTable.mjs +5 -0
  180. package/esm2022/ui/treeTable/index.mjs +2 -0
  181. package/esm2022/ui/treeTable/src/tree-table.component.mjs +55 -0
  182. package/esm2022/ui/value/aril-ui-value.mjs +5 -0
  183. package/esm2022/ui/value/index.mjs +2 -0
  184. package/esm2022/ui/value/src/value.component.mjs +35 -0
  185. package/esm2022/util/aril-util.mjs +5 -0
  186. package/esm2022/util/block/aril-util-block.mjs +5 -0
  187. package/esm2022/util/block/index.mjs +2 -0
  188. package/esm2022/util/block/src/block.mjs +64 -0
  189. package/esm2022/util/custom_pages/aril-util-custom_pages.mjs +5 -0
  190. package/esm2022/util/custom_pages/index.mjs +2 -0
  191. package/esm2022/util/custom_pages/src/notFound.component.mjs +65 -0
  192. package/esm2022/util/index.mjs +2 -0
  193. package/esm2022/util/init-event/aril-util-init-event.mjs +5 -0
  194. package/esm2022/util/init-event/index.mjs +2 -0
  195. package/esm2022/util/init-event/src/init-event.directive.mjs +22 -0
  196. package/esm2022/util/lib/aril-util-lib.mjs +5 -0
  197. package/esm2022/util/lib/index.mjs +4 -0
  198. package/esm2022/util/lib/src/interfaces.mjs +4 -0
  199. package/esm2022/util/lib/src/module-router.mjs +17 -0
  200. package/esm2022/util/lib/src/types.mjs +3 -0
  201. package/esm2022/util/loaders/aril-util-loaders.mjs +5 -0
  202. package/esm2022/util/loaders/index.mjs +3 -0
  203. package/esm2022/util/loaders/script/script.loader.service.mjs +61 -0
  204. package/esm2022/util/loaders/style/style.loader.service.mjs +61 -0
  205. package/esm2022/util/primitive-extensions/aril-util-primitive-extensions.mjs +5 -0
  206. package/esm2022/util/primitive-extensions/index.mjs +5 -0
  207. package/esm2022/util/primitive-extensions/src/boolean.extensions.mjs +2 -0
  208. package/esm2022/util/primitive-extensions/src/date.extensions.mjs +116 -0
  209. package/esm2022/util/primitive-extensions/src/number.extensions.mjs +39 -0
  210. package/esm2022/util/primitive-extensions/src/string.extensions.mjs +23 -0
  211. package/esm2022/util/pub-sub/aril-util-pub-sub.mjs +5 -0
  212. package/esm2022/util/pub-sub/index.mjs +2 -0
  213. package/esm2022/util/pub-sub/src/pub-sub.service.mjs +29 -0
  214. package/fesm2022/aril-app.component-c363Er6g.mjs +76 -0
  215. package/fesm2022/aril-app.component-c363Er6g.mjs.map +1 -0
  216. package/fesm2022/aril-boot-config-api.mjs +59 -0
  217. package/fesm2022/aril-boot-config-api.mjs.map +1 -0
  218. package/fesm2022/aril-boot-config-apps.mjs +106 -0
  219. package/fesm2022/aril-boot-config-apps.mjs.map +1 -0
  220. package/fesm2022/aril-boot-config-plugins.mjs +81 -0
  221. package/fesm2022/aril-boot-config-plugins.mjs.map +1 -0
  222. package/fesm2022/aril-boot-host.mjs +86 -0
  223. package/fesm2022/aril-boot-host.mjs.map +1 -0
  224. package/fesm2022/aril-boot-mfe-app.component-WWRmTfs5.mjs +75 -0
  225. package/fesm2022/aril-boot-mfe-app.component-WWRmTfs5.mjs.map +1 -0
  226. package/fesm2022/aril-boot-mfe-aril-boot-mfe-PwAGdNZE.mjs +90 -0
  227. package/fesm2022/aril-boot-mfe-aril-boot-mfe-PwAGdNZE.mjs.map +1 -0
  228. package/fesm2022/aril-boot-mfe.mjs +16 -0
  229. package/fesm2022/aril-boot-mfe.mjs.map +1 -0
  230. package/fesm2022/aril-boot.mjs +8 -0
  231. package/fesm2022/aril-boot.mjs.map +1 -0
  232. package/fesm2022/aril-http.mjs +273 -0
  233. package/fesm2022/aril-http.mjs.map +1 -0
  234. package/fesm2022/aril-i18n.mjs +72 -0
  235. package/fesm2022/aril-i18n.mjs.map +1 -0
  236. package/fesm2022/aril-keycloak.mjs +129 -0
  237. package/fesm2022/aril-keycloak.mjs.map +1 -0
  238. package/fesm2022/aril-theme-layout.mjs +1010 -0
  239. package/fesm2022/aril-theme-layout.mjs.map +1 -0
  240. package/fesm2022/aril-theme.mjs +8 -0
  241. package/fesm2022/aril-theme.mjs.map +1 -0
  242. package/fesm2022/aril-ui-autoComplete.mjs +88 -0
  243. package/fesm2022/aril-ui-autoComplete.mjs.map +1 -0
  244. package/fesm2022/aril-ui-badge.mjs +26 -0
  245. package/fesm2022/aril-ui-badge.mjs.map +1 -0
  246. package/fesm2022/aril-ui-button.mjs +59 -0
  247. package/fesm2022/aril-ui-button.mjs.map +1 -0
  248. package/fesm2022/aril-ui-calendar.mjs +125 -0
  249. package/fesm2022/aril-ui-calendar.mjs.map +1 -0
  250. package/fesm2022/aril-ui-checkbox.mjs +47 -0
  251. package/fesm2022/aril-ui-checkbox.mjs.map +1 -0
  252. package/fesm2022/aril-ui-dxField.mjs +25 -0
  253. package/fesm2022/aril-ui-dxField.mjs.map +1 -0
  254. package/fesm2022/aril-ui-field.mjs +46 -0
  255. package/fesm2022/aril-ui-field.mjs.map +1 -0
  256. package/fesm2022/aril-ui-fileUpload.mjs +68 -0
  257. package/fesm2022/aril-ui-fileUpload.mjs.map +1 -0
  258. package/fesm2022/aril-ui-form.mjs +86 -0
  259. package/fesm2022/aril-ui-form.mjs.map +1 -0
  260. package/fesm2022/aril-ui-lib.mjs +322 -0
  261. package/fesm2022/aril-ui-lib.mjs.map +1 -0
  262. package/fesm2022/aril-ui-mask.mjs +42 -0
  263. package/fesm2022/aril-ui-mask.mjs.map +1 -0
  264. package/fesm2022/aril-ui-number.mjs +43 -0
  265. package/fesm2022/aril-ui-number.mjs.map +1 -0
  266. package/fesm2022/aril-ui-overlayPanel.mjs +27 -0
  267. package/fesm2022/aril-ui-overlayPanel.mjs.map +1 -0
  268. package/fesm2022/aril-ui-panel.mjs +31 -0
  269. package/fesm2022/aril-ui-panel.mjs.map +1 -0
  270. package/fesm2022/aril-ui-password.mjs +36 -0
  271. package/fesm2022/aril-ui-password.mjs.map +1 -0
  272. package/fesm2022/aril-ui-radioButton.mjs +37 -0
  273. package/fesm2022/aril-ui-radioButton.mjs.map +1 -0
  274. package/fesm2022/aril-ui-selectBox.mjs +61 -0
  275. package/fesm2022/aril-ui-selectBox.mjs.map +1 -0
  276. package/fesm2022/aril-ui-switch.mjs +30 -0
  277. package/fesm2022/aril-ui-switch.mjs.map +1 -0
  278. package/fesm2022/aril-ui-table.mjs +219 -0
  279. package/fesm2022/aril-ui-table.mjs.map +1 -0
  280. package/fesm2022/aril-ui-tagBox.mjs +57 -0
  281. package/fesm2022/aril-ui-tagBox.mjs.map +1 -0
  282. package/fesm2022/aril-ui-text.mjs +47 -0
  283. package/fesm2022/aril-ui-text.mjs.map +1 -0
  284. package/fesm2022/aril-ui-textArea.mjs +33 -0
  285. package/fesm2022/aril-ui-textArea.mjs.map +1 -0
  286. package/fesm2022/aril-ui-toggle-button.mjs +32 -0
  287. package/fesm2022/aril-ui-toggle-button.mjs.map +1 -0
  288. package/fesm2022/aril-ui-tree.mjs +41 -0
  289. package/fesm2022/aril-ui-tree.mjs.map +1 -0
  290. package/fesm2022/aril-ui-treeTable.mjs +62 -0
  291. package/fesm2022/aril-ui-treeTable.mjs.map +1 -0
  292. package/fesm2022/aril-ui-value.mjs +42 -0
  293. package/fesm2022/aril-ui-value.mjs.map +1 -0
  294. package/fesm2022/aril-ui.mjs +8 -0
  295. package/fesm2022/aril-ui.mjs.map +1 -0
  296. package/fesm2022/aril-util-block.mjs +71 -0
  297. package/fesm2022/aril-util-block.mjs.map +1 -0
  298. package/fesm2022/aril-util-custom_pages.mjs +72 -0
  299. package/fesm2022/aril-util-custom_pages.mjs.map +1 -0
  300. package/fesm2022/aril-util-init-event.mjs +29 -0
  301. package/fesm2022/aril-util-init-event.mjs.map +1 -0
  302. package/fesm2022/aril-util-lib.mjs +29 -0
  303. package/fesm2022/aril-util-lib.mjs.map +1 -0
  304. package/fesm2022/aril-util-loaders.mjs +126 -0
  305. package/fesm2022/aril-util-loaders.mjs.map +1 -0
  306. package/fesm2022/aril-util-primitive-extensions.mjs +179 -0
  307. package/fesm2022/aril-util-primitive-extensions.mjs.map +1 -0
  308. package/fesm2022/aril-util-pub-sub.mjs +36 -0
  309. package/fesm2022/aril-util-pub-sub.mjs.map +1 -0
  310. package/fesm2022/aril-util.mjs +8 -0
  311. package/fesm2022/aril-util.mjs.map +1 -0
  312. package/fesm2022/aril.mjs +157 -0
  313. package/fesm2022/aril.mjs.map +1 -0
  314. package/http/{index.ts → index.d.ts} +8 -13
  315. package/http/lib/enums.d.ts +13 -0
  316. package/http/lib/interfaces.d.ts +21 -0
  317. package/http/src/httpBackend.d.ts +8 -0
  318. package/http/src/httpClient.d.ts +8 -0
  319. package/http/src/interceptor/state-machine.interceptor.d.ts +2 -0
  320. package/http/src/serviceBase.d.ts +5 -0
  321. package/http/src/serviceMockBase.d.ts +6 -0
  322. package/http/src/serviceRequest.d.ts +4 -0
  323. package/http/src/serviceStateMethods.d.ts +14 -0
  324. package/i18n/{index.ts → index.d.ts} +5 -5
  325. package/i18n/src/folder-name-token.d.ts +2 -0
  326. package/i18n/src/i18n.module.d.ts +7 -0
  327. package/i18n/src/loader.d.ts +9 -0
  328. package/i18n/src/provideI18n.d.ts +2 -0
  329. package/i18n/src/provideScope.d.ts +5 -0
  330. package/index.d.ts +5 -0
  331. package/keycloak/{index.ts → index.d.ts} +3 -3
  332. package/keycloak/src/auth.guard.d.ts +11 -0
  333. package/keycloak/src/auth.interceptor.d.ts +2 -0
  334. package/keycloak/src/keycloak.manager.d.ts +25 -0
  335. package/package.json +314 -31
  336. package/{public-api.ts → public-api.d.ts} +2 -2
  337. package/theme/index.d.ts +1 -0
  338. package/theme/layout/app/breadcrumb/app.breadcrumb.component.d.ts +16 -0
  339. package/theme/layout/app/config/app.config.component.d.ts +36 -0
  340. package/theme/layout/app/layout/app.layout.component.d.ts +48 -0
  341. package/theme/layout/app/layout/mfe.layout.component.d.ts +8 -0
  342. package/theme/layout/app/menu/app.menu.component.d.ts +50 -0
  343. package/theme/layout/app/profileSidebar/app.profilesidebar.component.d.ts +13 -0
  344. package/theme/layout/app/sidebar/app.sidebar.component.d.ts +15 -0
  345. package/theme/layout/app/topbar/app.topbar.component.d.ts +16 -0
  346. package/theme/layout/index.d.ts +3 -0
  347. package/theme/layout/service/app.layout.service.d.ts +51 -0
  348. package/theme/layout/service/app.menu.service.d.ts +23 -0
  349. package/theme/layout/service/menuchangeevent.d.ts +4 -0
  350. package/ui/autoComplete/{index.ts → index.d.ts} +1 -1
  351. package/ui/autoComplete/src/auto-complete.component.d.ts +24 -0
  352. package/ui/autoComplete/src/interfaces.d.ts +24 -0
  353. package/ui/badge/{index.ts → index.d.ts} +1 -1
  354. package/ui/badge/src/badge.component.d.ts +11 -0
  355. package/ui/button/{index.ts → index.d.ts} +2 -2
  356. package/ui/button/src/button.component.d.ts +24 -0
  357. package/ui/button/src/split-button.component.d.ts +8 -0
  358. package/ui/calendar/{index.ts → index.d.ts} +1 -1
  359. package/ui/calendar/src/calendar.component.d.ts +38 -0
  360. package/ui/checkbox/{index.ts → index.d.ts} +2 -2
  361. package/ui/checkbox/src/check-box.component.d.ts +9 -0
  362. package/ui/checkbox/src/tri-state-checkbox.component.d.ts +9 -0
  363. package/ui/dxField/{index.ts → index.d.ts} +1 -1
  364. package/ui/dxField/src/dx-field.component.d.ts +9 -0
  365. package/ui/field/{index.ts → index.d.ts} +1 -1
  366. package/ui/field/src/field.component.d.ts +25 -0
  367. package/ui/fileUpload/{index.ts → index.d.ts} +1 -1
  368. package/ui/fileUpload/src/file-upload.component.d.ts +47 -0
  369. package/ui/form/index.d.ts +11 -0
  370. package/ui/form/src/form-submit-button.component.d.ts +14 -0
  371. package/ui/form/src/form.component.d.ts +8 -0
  372. package/ui/index.d.ts +1 -0
  373. package/ui/lib/{index.ts → index.d.ts} +11 -16
  374. package/ui/lib/src/form/form-error-message.component.d.ts +9 -0
  375. package/ui/lib/src/form/form-error-message.directive.d.ts +14 -0
  376. package/ui/lib/src/form/form-field-builder.d.ts +8 -0
  377. package/ui/lib/src/form/form-validation.d.ts +2 -0
  378. package/ui/lib/src/grid/flex-grid.directive.d.ts +6 -0
  379. package/ui/lib/src/input/baseInput.d.ts +7 -0
  380. package/ui/lib/src/input/common-input-validators.service.d.ts +20 -0
  381. package/ui/lib/src/input/dx-input-error-message.pipe.d.ts +11 -0
  382. package/ui/lib/src/input/input-disabled.directive.d.ts +9 -0
  383. package/ui/lib/src/input/input-error-message.pipe.d.ts +7 -0
  384. package/ui/lib/src/input/input-transforms.d.ts +5 -0
  385. package/ui/lib/src/input/value-accessor.directive.d.ts +9 -0
  386. package/ui/mask/{index.ts → index.d.ts} +1 -1
  387. package/ui/mask/src/mask.component.d.ts +21 -0
  388. package/ui/number/{index.ts → index.d.ts} +1 -1
  389. package/ui/number/src/number.component.d.ts +27 -0
  390. package/ui/overlayPanel/{index.ts → index.d.ts} +1 -1
  391. package/ui/overlayPanel/src/overlay-panel.component.d.ts +8 -0
  392. package/ui/panel/{index.ts → index.d.ts} +1 -1
  393. package/ui/panel/src/panel.component.d.ts +10 -0
  394. package/ui/password/{index.ts → index.d.ts} +1 -1
  395. package/ui/password/src/password.component.d.ts +11 -0
  396. package/ui/radioButton/{index.ts → index.d.ts} +1 -1
  397. package/ui/radioButton/src/radio-button.component.d.ts +20 -0
  398. package/ui/selectBox/{index.ts → index.d.ts} +1 -1
  399. package/ui/selectBox/src/interfaces.d.ts +32 -0
  400. package/ui/selectBox/src/select-box.component.d.ts +25 -0
  401. package/ui/switch/{index.ts → index.d.ts} +1 -1
  402. package/ui/switch/src/switch.component.d.ts +8 -0
  403. package/ui/table/index.d.ts +16 -0
  404. package/ui/table/src/i18n.d.ts +42 -0
  405. package/ui/table/src/table-column.component.d.ts +24 -0
  406. package/ui/table/src/table.component.d.ts +41 -0
  407. package/ui/tagBox/{index.ts → index.d.ts} +1 -1
  408. package/ui/tagBox/src/tag-box.component.d.ts +15 -0
  409. package/ui/text/{index.ts → index.d.ts} +1 -1
  410. package/ui/text/src/text.component.d.ts +17 -0
  411. package/ui/textArea/{index.ts → index.d.ts} +1 -1
  412. package/ui/textArea/src/text-area.component.d.ts +11 -0
  413. package/ui/toggle-button/index.d.ts +1 -0
  414. package/ui/toggle-button/src/toggle-button.component.d.ts +10 -0
  415. package/ui/tree/{index.ts → index.d.ts} +1 -1
  416. package/ui/tree/src/tree.component.d.ts +19 -0
  417. package/ui/treeTable/{index.ts → index.d.ts} +1 -1
  418. package/ui/treeTable/src/tree-table.component.d.ts +21 -0
  419. package/ui/value/{index.ts → index.d.ts} +1 -1
  420. package/ui/value/src/value.component.d.ts +13 -0
  421. package/util/block/{index.ts → index.d.ts} +1 -1
  422. package/util/block/src/block.d.ts +28 -0
  423. package/util/custom_pages/{index.ts → index.d.ts} +1 -1
  424. package/util/custom_pages/src/notFound.component.d.ts +5 -0
  425. package/util/index.d.ts +1 -0
  426. package/util/init-event/{index.ts → index.d.ts} +1 -1
  427. package/util/init-event/src/init-event.directive.d.ts +8 -0
  428. package/util/lib/{index.ts → index.d.ts} +3 -3
  429. package/util/lib/src/interfaces.d.ts +41 -0
  430. package/util/lib/src/module-router.d.ts +5 -0
  431. package/util/lib/src/types.d.ts +29 -0
  432. package/util/loaders/{index.ts → index.d.ts} +2 -2
  433. package/util/loaders/script/script.loader.service.d.ts +13 -0
  434. package/util/loaders/style/style.loader.service.d.ts +13 -0
  435. package/util/primitive-extensions/{index.ts → index.d.ts} +4 -4
  436. package/util/primitive-extensions/src/{boolean.extensions.ts → boolean.extensions.d.ts} +1 -1
  437. package/util/primitive-extensions/src/date.extensions.d.ts +8 -0
  438. package/util/primitive-extensions/src/number.extensions.d.ts +12 -0
  439. package/util/primitive-extensions/src/string.extensions.d.ts +11 -0
  440. package/util/pub-sub/{index.ts → index.d.ts} +1 -1
  441. package/util/pub-sub/src/pub-sub.service.d.ts +20 -0
  442. package/.eslintrc.json +0 -41
  443. package/boot/config/api/ng-package.json +0 -6
  444. package/boot/config/api/src/api.service.ts +0 -57
  445. package/boot/config/api/src/interfaces.ts +0 -13
  446. package/boot/config/apps/ng-package.json +0 -6
  447. package/boot/config/apps/src/apps.service.ts +0 -64
  448. package/boot/config/apps/src/interfaces.ts +0 -27
  449. package/boot/config/apps/src/showdowDOMWrapper.ts +0 -28
  450. package/boot/config/plugins/ng-package.json +0 -6
  451. package/boot/config/plugins/src/getNgZone.ts +0 -9
  452. package/boot/config/plugins/src/interfaces.ts +0 -11
  453. package/boot/config/plugins/src/plugins.service.ts +0 -81
  454. package/boot/host/ng-package.json +0 -6
  455. package/boot/host/src/app.component.ts +0 -27
  456. package/boot/host/src/bootstrap.ts +0 -61
  457. package/boot/index.ts +0 -1
  458. package/boot/mfe/ng-package.json +0 -6
  459. package/boot/mfe/src/app.component.ts +0 -57
  460. package/boot/mfe/src/appComponentLoader.ts +0 -4
  461. package/boot/mfe/src/bootstrap.ts +0 -78
  462. package/boot/mfe/src/loadStyles.ts +0 -19
  463. package/boot/ng-package.json +0 -6
  464. package/http/lib/enums.ts +0 -13
  465. package/http/lib/interfaces.ts +0 -38
  466. package/http/ng-package.json +0 -6
  467. package/http/src/httpBackend.ts +0 -12
  468. package/http/src/httpClient.ts +0 -20
  469. package/http/src/interceptor/state-machine.interceptor.ts +0 -9
  470. package/http/src/serviceBase.ts +0 -91
  471. package/http/src/serviceMockBase.ts +0 -12
  472. package/http/src/serviceRequest.ts +0 -26
  473. package/http/src/serviceStateMethods.ts +0 -155
  474. package/i18n/ng-package.json +0 -6
  475. package/i18n/src/folder-name-token.ts +0 -3
  476. package/i18n/src/i18n.module.ts +0 -11
  477. package/i18n/src/loader.ts +0 -16
  478. package/i18n/src/provideI18n.ts +0 -18
  479. package/i18n/src/provideScope.ts +0 -20
  480. package/keycloak/ng-package.json +0 -6
  481. package/keycloak/src/auth.guard.ts +0 -37
  482. package/keycloak/src/auth.interceptor.ts +0 -13
  483. package/keycloak/src/keycloak.manager.ts +0 -89
  484. package/ng-package.json +0 -14
  485. package/project.json +0 -39
  486. package/tsconfig.lib.json +0 -12
  487. package/tsconfig.lib.prod.json +0 -10
  488. package/tsconfig.spec.json +0 -9
  489. package/ui/autoComplete/ng-package.json +0 -6
  490. package/ui/autoComplete/src/auto-complete.component.html +0 -11
  491. package/ui/autoComplete/src/auto-complete.component.ts +0 -92
  492. package/ui/autoComplete/src/interfaces.ts +0 -30
  493. package/ui/badge/ng-package.json +0 -6
  494. package/ui/badge/src/badge.component.html +0 -3
  495. package/ui/badge/src/badge.component.ts +0 -19
  496. package/ui/button/ng-package.json +0 -6
  497. package/ui/button/src/button.component.html +0 -10
  498. package/ui/button/src/button.component.ts +0 -43
  499. package/ui/button/src/split-button.component.html +0 -2
  500. package/ui/button/src/split-button.component.ts +0 -17
  501. package/ui/calendar/ng-package.json +0 -6
  502. package/ui/calendar/src/calendar.component.html +0 -31
  503. package/ui/calendar/src/calendar.component.ts +0 -136
  504. package/ui/checkbox/ng-package.json +0 -6
  505. package/ui/checkbox/src/check-box.component.html +0 -9
  506. package/ui/checkbox/src/check-box.component.ts +0 -19
  507. package/ui/checkbox/src/tri-state-checkbox.component.html +0 -7
  508. package/ui/checkbox/src/tri-state-checkbox.component.ts +0 -20
  509. package/ui/dxField/ng-package.json +0 -6
  510. package/ui/dxField/src/dx-field.component.html +0 -8
  511. package/ui/dxField/src/dx-field.component.ts +0 -16
  512. package/ui/field/ng-package.json +0 -6
  513. package/ui/field/src/field.component.html +0 -22
  514. package/ui/field/src/field.component.ts +0 -46
  515. package/ui/fileUpload/ng-package.json +0 -6
  516. package/ui/fileUpload/src/file-upload.component.html +0 -38
  517. package/ui/fileUpload/src/file-upload.component.ts +0 -72
  518. package/ui/form/index.ts +0 -18
  519. package/ui/form/ng-package.json +0 -6
  520. package/ui/form/src/form-submit-button.component.html +0 -12
  521. package/ui/form/src/form-submit-button.component.ts +0 -36
  522. package/ui/form/src/form.component.ts +0 -20
  523. package/ui/index.ts +0 -1
  524. package/ui/lib/ng-package.json +0 -6
  525. package/ui/lib/src/form/form-error-message.component.ts +0 -25
  526. package/ui/lib/src/form/form-error-message.directive.ts +0 -32
  527. package/ui/lib/src/form/form-field-builder.ts +0 -31
  528. package/ui/lib/src/form/form-validation.ts +0 -14
  529. package/ui/lib/src/grid/flex-grid.directive.ts +0 -10
  530. package/ui/lib/src/input/baseInput.ts +0 -30
  531. package/ui/lib/src/input/common-input-validators.service.ts +0 -57
  532. package/ui/lib/src/input/dx-input-error-message.pipe.ts +0 -16
  533. package/ui/lib/src/input/input-disabled.directive.ts +0 -15
  534. package/ui/lib/src/input/input-error-message.pipe.ts +0 -39
  535. package/ui/lib/src/input/input-transforms.ts +0 -11
  536. package/ui/lib/src/input/value-accessor.directive.ts +0 -27
  537. package/ui/mask/ng-package.json +0 -6
  538. package/ui/mask/src/mask.component.css +0 -23
  539. package/ui/mask/src/mask.component.html +0 -17
  540. package/ui/mask/src/mask.component.ts +0 -34
  541. package/ui/ng-package.json +0 -6
  542. package/ui/number/ng-package.json +0 -6
  543. package/ui/number/src/number.component.html +0 -25
  544. package/ui/number/src/number.component.ts +0 -34
  545. package/ui/overlayPanel/ng-package.json +0 -6
  546. package/ui/overlayPanel/src/overlay-panel.component.html +0 -5
  547. package/ui/overlayPanel/src/overlay-panel.component.ts +0 -16
  548. package/ui/panel/ng-package.json +0 -6
  549. package/ui/panel/src/panel.component.css +0 -25
  550. package/ui/panel/src/panel.component.html +0 -38
  551. package/ui/panel/src/panel.component.ts +0 -24
  552. package/ui/password/ng-package.json +0 -6
  553. package/ui/password/src/password.component.html +0 -24
  554. package/ui/password/src/password.component.ts +0 -22
  555. package/ui/radioButton/ng-package.json +0 -6
  556. package/ui/radioButton/src/radio-button.component.html +0 -17
  557. package/ui/radioButton/src/radio-button.component.ts +0 -36
  558. package/ui/selectBox/ng-package.json +0 -6
  559. package/ui/selectBox/src/interfaces.ts +0 -41
  560. package/ui/selectBox/src/select-box.component.html +0 -17
  561. package/ui/selectBox/src/select-box.component.ts +0 -69
  562. package/ui/switch/ng-package.json +0 -6
  563. package/ui/switch/src/switch.component.html +0 -7
  564. package/ui/switch/src/switch.component.ts +0 -18
  565. package/ui/table/index.ts +0 -34
  566. package/ui/table/ng-package.json +0 -6
  567. package/ui/table/src/i18n.ts +0 -55
  568. package/ui/table/src/table-column.component.ts +0 -28
  569. package/ui/table/src/table.component.html +0 -136
  570. package/ui/table/src/table.component.ts +0 -99
  571. package/ui/tagBox/ng-package.json +0 -6
  572. package/ui/tagBox/src/tag-box.component.html +0 -21
  573. package/ui/tagBox/src/tag-box.component.ts +0 -53
  574. package/ui/text/ng-package.json +0 -6
  575. package/ui/text/src/text.component.html +0 -21
  576. package/ui/text/src/text.component.ts +0 -47
  577. package/ui/textArea/ng-package.json +0 -6
  578. package/ui/textArea/src/text-area.component.html +0 -11
  579. package/ui/textArea/src/text-area.component.ts +0 -21
  580. package/ui/toggle-button/index.ts +0 -1
  581. package/ui/toggle-button/ng-package.json +0 -6
  582. package/ui/toggle-button/src/toggle-button.component.html +0 -13
  583. package/ui/toggle-button/src/toggle-button.component.scss +0 -19
  584. package/ui/toggle-button/src/toggle-button.component.ts +0 -22
  585. package/ui/tree/ng-package.json +0 -6
  586. package/ui/tree/src/tree.component.html +0 -16
  587. package/ui/tree/src/tree.component.ts +0 -52
  588. package/ui/treeTable/ng-package.json +0 -6
  589. package/ui/treeTable/src/tree-table.component.html +0 -88
  590. package/ui/treeTable/src/tree-table.component.ts +0 -57
  591. package/ui/value/ng-package.json +0 -6
  592. package/ui/value/src/value.component.html +0 -19
  593. package/ui/value/src/value.component.ts +0 -39
  594. package/util/block/ng-package.json +0 -6
  595. package/util/block/src/block.ts +0 -65
  596. package/util/custom_pages/ng-package.json +0 -6
  597. package/util/custom_pages/src/notFound.component.ts +0 -34
  598. package/util/index.ts +0 -1
  599. package/util/init-event/ng-package.json +0 -6
  600. package/util/init-event/src/init-event.directive.ts +0 -13
  601. package/util/lib/ng-package.json +0 -6
  602. package/util/lib/src/interfaces.ts +0 -44
  603. package/util/lib/src/module-router.ts +0 -10
  604. package/util/lib/src/types.ts +0 -49
  605. package/util/loaders/ng-package.json +0 -6
  606. package/util/loaders/script/script.loader.service.ts +0 -69
  607. package/util/loaders/style/style.loader.service.ts +0 -69
  608. package/util/ng-package.json +0 -6
  609. package/util/primitive-extensions/ng-package.json +0 -6
  610. package/util/primitive-extensions/src/date.extensions.ts +0 -135
  611. package/util/primitive-extensions/src/number.extensions.ts +0 -57
  612. package/util/primitive-extensions/src/string.extensions.ts +0 -39
  613. package/util/pub-sub/ng-package.json +0 -6
  614. package/util/pub-sub/src/pub-sub.service.ts +0 -34
  615. /package/boot/config/{api/src/api.sample.json → api.sample.json} +0 -0
  616. /package/{util/block/src → scripts/util}/blockui.min.js +0 -0
  617. /package/{ui/styles → styles/ui}/ui.common.scss +0 -0
  618. /package/{util/block/src → styles/util}/blockui.css +0 -0
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJpbC1pMThuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvYXJpbC9pMThuL2FyaWwtaTE4bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -0,0 +1,6 @@
1
+ export * from './src/loader';
2
+ export * from './src/provideI18n';
3
+ export * from './src/provideScope';
4
+ export * from './src/folder-name-token';
5
+ export * from './src/i18n.module';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9hcmlsL2kxOG4vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc3JjL2xvYWRlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL3Byb3ZpZGVJMThuJztcclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvcHJvdmlkZVNjb3BlJztcclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvZm9sZGVyLW5hbWUtdG9rZW4nO1xyXG5leHBvcnQgKiBmcm9tICcuL3NyYy9pMThuLm1vZHVsZSc7XHJcbiJdfQ==
@@ -0,0 +1,3 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export const i18nFolderName = new InjectionToken('i18nFolderName');
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9sZGVyLW5hbWUtdG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL2kxOG4vc3JjL2ZvbGRlci1uYW1lLXRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLElBQUksY0FBYyxDQUFTLGdCQUFnQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuZXhwb3J0IGNvbnN0IGkxOG5Gb2xkZXJOYW1lID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ2kxOG5Gb2xkZXJOYW1lJyk7XHJcbiJdfQ==
@@ -0,0 +1,17 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { TranslocoModule } from '@ngneat/transloco';
3
+ import { i18nProvider } from './provideI18n';
4
+ import * as i0 from "@angular/core";
5
+ export class i18nModule {
6
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: i18nModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.2", ngImport: i0, type: i18nModule, exports: [TranslocoModule] }); }
8
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: i18nModule, providers: [i18nProvider()], imports: [TranslocoModule] }); }
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: i18nModule, decorators: [{
11
+ type: NgModule,
12
+ args: [{
13
+ exports: [TranslocoModule],
14
+ providers: [i18nProvider()]
15
+ }]
16
+ }] });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL2kxOG4vc3JjL2kxOG4ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXBELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTTdDLE1BQU0sT0FBTyxVQUFVOzhHQUFWLFVBQVU7K0dBQVYsVUFBVSxZQUhaLGVBQWU7K0dBR2IsVUFBVSxhQUZYLENBQUMsWUFBWSxFQUFFLENBQUMsWUFEakIsZUFBZTs7MkZBR2IsVUFBVTtrQkFKdEIsUUFBUTttQkFBQztvQkFDVCxPQUFPLEVBQUUsQ0FBQyxlQUFlLENBQUM7b0JBQzFCLFNBQVMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO2lCQUMzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBUcmFuc2xvY29Nb2R1bGUgfSBmcm9tICdAbmduZWF0L3RyYW5zbG9jbyc7XHJcblxyXG5pbXBvcnQgeyBpMThuUHJvdmlkZXIgfSBmcm9tICcuL3Byb3ZpZGVJMThuJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcblx0ZXhwb3J0czogW1RyYW5zbG9jb01vZHVsZV0sXHJcblx0cHJvdmlkZXJzOiBbaTE4blByb3ZpZGVyKCldXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBpMThuTW9kdWxlIHt9XHJcbiJdfQ==
@@ -0,0 +1,20 @@
1
+ import { HttpClient } from '@angular/common/http';
2
+ import { Injectable, inject } from '@angular/core';
3
+ import { i18nFolderName } from './folder-name-token';
4
+ import * as i0 from "@angular/core";
5
+ export class TranslocoHttpLoader {
6
+ constructor() {
7
+ this.http = inject(HttpClient);
8
+ this.folderUrl = inject(i18nFolderName);
9
+ }
10
+ getTranslation(lang) {
11
+ return this.http.get(`./assets/${this.folderUrl}/i18n/${lang}.json`);
12
+ }
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TranslocoHttpLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
14
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TranslocoHttpLoader, providedIn: 'root' }); }
15
+ }
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TranslocoHttpLoader, decorators: [{
17
+ type: Injectable,
18
+ args: [{ providedIn: 'root' }]
19
+ }] });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC9pMThuL3NyYy9sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSW5ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFHckQsTUFBTSxPQUFPLG1CQUFtQjtJQURoQztRQUVTLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUIsY0FBUyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztLQUszQztJQUhBLGNBQWMsQ0FBQyxJQUFZO1FBQzFCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWMsWUFBWSxJQUFJLENBQUMsU0FBUyxTQUFTLElBQUksT0FBTyxDQUFDLENBQUM7SUFDbkYsQ0FBQzs4R0FOVyxtQkFBbUI7a0hBQW5CLG1CQUFtQixjQUROLE1BQU07OzJGQUNuQixtQkFBbUI7a0JBRC9CLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBUcmFuc2xhdGlvbiwgVHJhbnNsb2NvTG9hZGVyIH0gZnJvbSAnQG5nbmVhdC90cmFuc2xvY28nO1xyXG5cclxuaW1wb3J0IHsgaTE4bkZvbGRlck5hbWUgfSBmcm9tICcuL2ZvbGRlci1uYW1lLXRva2VuJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBUcmFuc2xvY29IdHRwTG9hZGVyIGltcGxlbWVudHMgVHJhbnNsb2NvTG9hZGVyIHtcclxuXHRwcml2YXRlIGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XHJcblx0cHJpdmF0ZSBmb2xkZXJVcmwgPSBpbmplY3QoaTE4bkZvbGRlck5hbWUpO1xyXG5cclxuXHRnZXRUcmFuc2xhdGlvbihsYW5nOiBzdHJpbmcpIHtcclxuXHRcdHJldHVybiB0aGlzLmh0dHAuZ2V0PFRyYW5zbGF0aW9uPihgLi9hc3NldHMvJHt0aGlzLmZvbGRlclVybH0vaTE4bi8ke2xhbmd9Lmpzb25gKTtcclxuXHR9XHJcbn1cclxuIl19
@@ -0,0 +1,16 @@
1
+ import { isDevMode } from '@angular/core';
2
+ import { provideTransloco } from '@ngneat/transloco';
3
+ import { TranslocoHttpLoader } from './loader';
4
+ export const i18nProvider = () => {
5
+ return provideTransloco({
6
+ config: {
7
+ availableLangs: ['tr', 'en'],
8
+ defaultLang: 'tr',
9
+ fallbackLang: 'tr',
10
+ reRenderOnLangChange: true,
11
+ prodMode: !isDevMode()
12
+ },
13
+ loader: TranslocoHttpLoader
14
+ });
15
+ };
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZUkxOG4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL2kxOG4vc3JjL3Byb3ZpZGVJMThuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBd0IsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWhFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXJELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsR0FBMkIsRUFBRTtJQUN4RCxPQUFPLGdCQUFnQixDQUFDO1FBQ3ZCLE1BQU0sRUFBRTtZQUNQLGNBQWMsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7WUFDNUIsV0FBVyxFQUFFLElBQUk7WUFDakIsWUFBWSxFQUFFLElBQUk7WUFDbEIsb0JBQW9CLEVBQUUsSUFBSTtZQUMxQixRQUFRLEVBQUUsQ0FBQyxTQUFTLEVBQUU7U0FDdEI7UUFDRCxNQUFNLEVBQUUsbUJBQW1CO0tBQzNCLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudmlyb25tZW50UHJvdmlkZXJzLCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IHByb3ZpZGVUcmFuc2xvY28gfSBmcm9tICdAbmduZWF0L3RyYW5zbG9jbyc7XHJcblxyXG5pbXBvcnQgeyBUcmFuc2xvY29IdHRwTG9hZGVyIH0gZnJvbSAnLi9sb2FkZXInO1xyXG5cclxuZXhwb3J0IGNvbnN0IGkxOG5Qcm92aWRlciA9ICgpOiBFbnZpcm9ubWVudFByb3ZpZGVyc1tdID0+IHtcclxuXHRyZXR1cm4gcHJvdmlkZVRyYW5zbG9jbyh7XHJcblx0XHRjb25maWc6IHtcclxuXHRcdFx0YXZhaWxhYmxlTGFuZ3M6IFsndHInLCAnZW4nXSxcclxuXHRcdFx0ZGVmYXVsdExhbmc6ICd0cicsXHJcblx0XHRcdGZhbGxiYWNrTGFuZzogJ3RyJyxcclxuXHRcdFx0cmVSZW5kZXJPbkxhbmdDaGFuZ2U6IHRydWUsXHJcblx0XHRcdHByb2RNb2RlOiAhaXNEZXZNb2RlKClcclxuXHRcdH0sXHJcblx0XHRsb2FkZXI6IFRyYW5zbG9jb0h0dHBMb2FkZXJcclxuXHR9KTtcclxufTtcclxuIl19
@@ -0,0 +1,18 @@
1
+ import { provideTranslocoScope } from '@ngneat/transloco';
2
+ const languages = ['tr', 'en'];
3
+ /**
4
+ * @param loader `(lang: string) => import(`./i18n/${lang}.json`)` to create a relative import to the correct dir
5
+ */
6
+ function i18nLoaderFactory(loader) {
7
+ return languages.reduce((acc, lang) => {
8
+ acc[lang] = () => loader(lang);
9
+ return acc;
10
+ }, {});
11
+ }
12
+ export const providei18nScope = (scopeName, loader) => {
13
+ return provideTranslocoScope({
14
+ scope: scopeName,
15
+ loader: i18nLoaderFactory(loader)
16
+ });
17
+ };
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZVNjb3BlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC9pMThuL3NyYy9wcm92aWRlU2NvcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFMUQsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFFL0I7O0dBRUc7QUFDSCxTQUFTLGlCQUFpQixDQUFDLE1BQXNDO0lBQ2hFLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQVEsRUFBRSxJQUFJLEVBQUUsRUFBRTtRQUMxQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLE9BQU8sR0FBRyxDQUFDO0lBQ1osQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ1IsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsU0FBaUIsRUFBRSxNQUFzQyxFQUFFLEVBQUU7SUFDN0YsT0FBTyxxQkFBcUIsQ0FBQztRQUM1QixLQUFLLEVBQUUsU0FBUztRQUNoQixNQUFNLEVBQUUsaUJBQWlCLENBQUMsTUFBTSxDQUFDO0tBQ2pDLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHByb3ZpZGVUcmFuc2xvY29TY29wZSB9IGZyb20gJ0BuZ25lYXQvdHJhbnNsb2NvJztcclxuXHJcbmNvbnN0IGxhbmd1YWdlcyA9IFsndHInLCAnZW4nXTtcclxuXHJcbi8qKlxyXG4gKiBAcGFyYW0gbG9hZGVyIGAobGFuZzogc3RyaW5nKSA9PiBpbXBvcnQoYC4vaTE4bi8ke2xhbmd9Lmpzb25gKWAgdG8gY3JlYXRlIGEgcmVsYXRpdmUgaW1wb3J0IHRvIHRoZSBjb3JyZWN0IGRpclxyXG4gKi9cclxuZnVuY3Rpb24gaTE4bkxvYWRlckZhY3RvcnkobG9hZGVyOiAobGFuZzogc3RyaW5nKSA9PiBQcm9taXNlPGFueT4pIHtcclxuXHRyZXR1cm4gbGFuZ3VhZ2VzLnJlZHVjZSgoYWNjOiBhbnksIGxhbmcpID0+IHtcclxuXHRcdGFjY1tsYW5nXSA9ICgpID0+IGxvYWRlcihsYW5nKTtcclxuXHRcdHJldHVybiBhY2M7XHJcblx0fSwge30pO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgcHJvdmlkZWkxOG5TY29wZSA9IChzY29wZU5hbWU6IHN0cmluZywgbG9hZGVyOiAobGFuZzogc3RyaW5nKSA9PiBQcm9taXNlPGFueT4pID0+IHtcclxuXHRyZXR1cm4gcHJvdmlkZVRyYW5zbG9jb1Njb3BlKHtcclxuXHRcdHNjb3BlOiBzY29wZU5hbWUsXHJcblx0XHRsb2FkZXI6IGkxOG5Mb2FkZXJGYWN0b3J5KGxvYWRlcilcclxuXHR9KTtcclxufTtcclxuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJpbC1rZXljbG9hay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FyaWwva2V5Y2xvYWsvYXJpbC1rZXljbG9hay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -0,0 +1,4 @@
1
+ export * from './src/keycloak.manager';
2
+ export * from './src/auth.interceptor';
3
+ export * from './src/auth.guard';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9hcmlsL2tleWNsb2FrL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zcmMva2V5Y2xvYWsubWFuYWdlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2F1dGguaW50ZXJjZXB0b3InO1xyXG5leHBvcnQgKiBmcm9tICcuL3NyYy9hdXRoLmd1YXJkJztcclxuIl19
@@ -0,0 +1,39 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { KeycloakAuthGuard } from 'keycloak-angular';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/router";
5
+ import * as i2 from "keycloak-angular";
6
+ export class AuthGuard extends KeycloakAuthGuard {
7
+ constructor(router, keycloak) {
8
+ super(router, keycloak);
9
+ this.router = router;
10
+ this.keycloak = keycloak;
11
+ }
12
+ async isAccessAllowed(route, state) {
13
+ if (!this.authenticated) {
14
+ await this.keycloak.login({
15
+ redirectUri: window.location.origin + state.url
16
+ });
17
+ }
18
+ const requiredRoles = route.data['roles'];
19
+ if (!Array.isArray(requiredRoles) || requiredRoles.length === 0) {
20
+ return true;
21
+ }
22
+ const authorized = requiredRoles.every((role) => this.roles.includes(role));
23
+ if (!authorized) {
24
+ console.error('User not authorized to access this route');
25
+ return false;
26
+ }
27
+ else
28
+ return true;
29
+ }
30
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AuthGuard, deps: [{ token: i1.Router }, { token: i2.KeycloakService }], target: i0.ɵɵFactoryTarget.Injectable }); }
31
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AuthGuard, providedIn: 'root' }); }
32
+ }
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AuthGuard, decorators: [{
34
+ type: Injectable,
35
+ args: [{
36
+ providedIn: 'root'
37
+ }]
38
+ }], ctorParameters: () => [{ type: i1.Router }, { type: i2.KeycloakService }] });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwva2V5Y2xvYWsvc3JjL2F1dGguZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsaUJBQWlCLEVBQW1CLE1BQU0sa0JBQWtCLENBQUM7Ozs7QUFLdEUsTUFBTSxPQUFPLFNBQVUsU0FBUSxpQkFBaUI7SUFDL0MsWUFDNkIsTUFBYyxFQUN2QixRQUF5QjtRQUU1QyxLQUFLLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBSEksV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUN2QixhQUFRLEdBQVIsUUFBUSxDQUFpQjtJQUc3QyxDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWUsQ0FBQyxLQUE2QixFQUFFLEtBQTBCO1FBQ3JGLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekIsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztnQkFDekIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxHQUFHO2FBQy9DLENBQUMsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDakUsT0FBTyxJQUFJLENBQUM7UUFDYixDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUU1RSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDakIsT0FBTyxDQUFDLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1lBQzFELE9BQU8sS0FBSyxDQUFDO1FBQ2QsQ0FBQzs7WUFBTSxPQUFPLElBQUksQ0FBQztJQUNwQixDQUFDOzhHQTNCVyxTQUFTO2tIQUFULFNBQVMsY0FGVCxNQUFNOzsyRkFFTixTQUFTO2tCQUhyQixVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUm91dGVyLCBSb3V0ZXJTdGF0ZVNuYXBzaG90IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IEtleWNsb2FrQXV0aEd1YXJkLCBLZXljbG9ha1NlcnZpY2UgfSBmcm9tICdrZXljbG9hay1hbmd1bGFyJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuXHRwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dGhHdWFyZCBleHRlbmRzIEtleWNsb2FrQXV0aEd1YXJkIHtcclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByb3RlY3RlZCBvdmVycmlkZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcclxuXHRcdHByb3RlY3RlZCByZWFkb25seSBrZXljbG9hazogS2V5Y2xvYWtTZXJ2aWNlXHJcblx0KSB7XHJcblx0XHRzdXBlcihyb3V0ZXIsIGtleWNsb2FrKTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBhc3luYyBpc0FjY2Vzc0FsbG93ZWQocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KSB7XHJcblx0XHRpZiAoIXRoaXMuYXV0aGVudGljYXRlZCkge1xyXG5cdFx0XHRhd2FpdCB0aGlzLmtleWNsb2FrLmxvZ2luKHtcclxuXHRcdFx0XHRyZWRpcmVjdFVyaTogd2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHN0YXRlLnVybFxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCByZXF1aXJlZFJvbGVzID0gcm91dGUuZGF0YVsncm9sZXMnXTtcclxuXHJcblx0XHRpZiAoIUFycmF5LmlzQXJyYXkocmVxdWlyZWRSb2xlcykgfHwgcmVxdWlyZWRSb2xlcy5sZW5ndGggPT09IDApIHtcclxuXHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3QgYXV0aG9yaXplZCA9IHJlcXVpcmVkUm9sZXMuZXZlcnkoKHJvbGUpID0+IHRoaXMucm9sZXMuaW5jbHVkZXMocm9sZSkpO1xyXG5cclxuXHRcdGlmICghYXV0aG9yaXplZCkge1xyXG5cdFx0XHRjb25zb2xlLmVycm9yKCdVc2VyIG5vdCBhdXRob3JpemVkIHRvIGFjY2VzcyB0aGlzIHJvdXRlJyk7XHJcblx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdH0gZWxzZSByZXR1cm4gdHJ1ZTtcclxuXHR9XHJcbn1cclxuIl19
@@ -0,0 +1,10 @@
1
+ export const authInterceptor = (req, next) => {
2
+ const token = globalThis.keycloakService?._instance?.token;
3
+ const authReq = req.clone({
4
+ setHeaders: {
5
+ Authorization: `Bearer ${token}`
6
+ }
7
+ });
8
+ return next(authReq);
9
+ };
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwva2V5Y2xvYWsvc3JjL2F1dGguaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFzQixDQUFDLEdBQXlCLEVBQUUsSUFBbUIsRUFBRSxFQUFFO0lBQ3BHLE1BQU0sS0FBSyxHQUFTLFVBQVcsQ0FBQyxlQUFlLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQztJQUVsRSxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO1FBQ3pCLFVBQVUsRUFBRTtZQUNYLGFBQWEsRUFBRSxVQUFVLEtBQUssRUFBRTtTQUNoQztLQUNELENBQUMsQ0FBQztJQUVILE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3RCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBIYW5kbGVyRm4sIEh0dHBJbnRlcmNlcHRvckZuLCBIdHRwUmVxdWVzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuXHJcbmV4cG9ydCBjb25zdCBhdXRoSW50ZXJjZXB0b3I6IEh0dHBJbnRlcmNlcHRvckZuID0gKHJlcTogSHR0cFJlcXVlc3Q8dW5rbm93bj4sIG5leHQ6IEh0dHBIYW5kbGVyRm4pID0+IHtcclxuXHRjb25zdCB0b2tlbiA9ICg8YW55Pmdsb2JhbFRoaXMpLmtleWNsb2FrU2VydmljZT8uX2luc3RhbmNlPy50b2tlbjtcclxuXHJcblx0Y29uc3QgYXV0aFJlcSA9IHJlcS5jbG9uZSh7XHJcblx0XHRzZXRIZWFkZXJzOiB7XHJcblx0XHRcdEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0b2tlbn1gXHJcblx0XHR9XHJcblx0fSk7XHJcblxyXG5cdHJldHVybiBuZXh0KGF1dGhSZXEpO1xyXG59O1xyXG4iXX0=
@@ -0,0 +1,76 @@
1
+ import { Injectable, inject } from '@angular/core';
2
+ import { KeycloakEventType, KeycloakService } from 'keycloak-angular';
3
+ import * as i0 from "@angular/core";
4
+ export class KeycloakManager {
5
+ constructor() {
6
+ this.keycloak = inject(KeycloakService);
7
+ this.defaultOptions = {
8
+ loadUserProfileAtStartUp: true,
9
+ initOptions: { onLoad: 'login-required' },
10
+ bearerExcludedUrls: ['/assets']
11
+ };
12
+ this.keycloak.keycloakEvents$.subscribe((event) => {
13
+ console.log('keycloakEvents', event);
14
+ switch (event.type) {
15
+ case KeycloakEventType.OnReady:
16
+ globalThis.keycloakService = this.keycloak;
17
+ break;
18
+ case KeycloakEventType.OnAuthError:
19
+ case KeycloakEventType.OnAuthLogout:
20
+ case KeycloakEventType.OnAuthRefreshError:
21
+ globalThis.keycloakService = null;
22
+ // this.keycloak.clearToken();
23
+ break;
24
+ // case KeycloakEventType.OnTokenExpired:
25
+ // this.keycloak.updateToken();
26
+ // break;
27
+ }
28
+ });
29
+ }
30
+ init(configs) {
31
+ return this.keycloak.init({ ...this.defaultOptions, config: configs });
32
+ }
33
+ login(options) {
34
+ return this.keycloak.login(options);
35
+ }
36
+ logout(redirectUri) {
37
+ return this.keycloak.logout(redirectUri); // window.location.origin
38
+ }
39
+ isUserInRole(role, resource) {
40
+ return this.keycloak.isUserInRole(role, resource);
41
+ }
42
+ getUserRoles(realmRoles, resource) {
43
+ return this.keycloak.getUserRoles(realmRoles, resource);
44
+ }
45
+ isLoggedIn() {
46
+ return this.keycloak.isLoggedIn();
47
+ }
48
+ isTokenExpired(minValidity) {
49
+ return this.keycloak.isTokenExpired(minValidity);
50
+ }
51
+ updateToken(minValidity) {
52
+ return this.keycloak.updateToken(minValidity);
53
+ }
54
+ loadUserProfile(forceReload) {
55
+ return this.keycloak.loadUserProfile(forceReload);
56
+ }
57
+ getToken() {
58
+ return this.keycloak.getToken();
59
+ }
60
+ getUsername() {
61
+ return this.keycloak.getUsername();
62
+ }
63
+ clearToken() {
64
+ this.keycloak.clearToken();
65
+ }
66
+ addTokenToHeader(headers) {
67
+ return this.keycloak.addTokenToHeader(headers);
68
+ }
69
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: KeycloakManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
70
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: KeycloakManager, providedIn: 'root' }); }
71
+ }
72
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: KeycloakManager, decorators: [{
73
+ type: Injectable,
74
+ args: [{ providedIn: 'root' }]
75
+ }], ctorParameters: () => [] });
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2xvYWsubWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwva2V5Y2xvYWsvc3JjL2tleWNsb2FrLm1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFtQixlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFLdkYsTUFBTSxPQUFPLGVBQWU7SUFDM0I7UUFvQmdCLGFBQVEsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFM0MsbUJBQWMsR0FBb0I7WUFDekMsd0JBQXdCLEVBQUUsSUFBSTtZQUM5QixXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUU7WUFDekMsa0JBQWtCLEVBQUUsQ0FBQyxTQUFTLENBQUM7U0FDL0IsQ0FBQztRQXpCRCxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNqRCxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRXJDLFFBQVEsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNwQixLQUFLLGlCQUFpQixDQUFDLE9BQU87b0JBQ3ZCLFVBQVcsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztvQkFDbEQsTUFBTTtnQkFDUCxLQUFLLGlCQUFpQixDQUFDLFdBQVcsQ0FBQztnQkFDbkMsS0FBSyxpQkFBaUIsQ0FBQyxZQUFZLENBQUM7Z0JBQ3BDLEtBQUssaUJBQWlCLENBQUMsa0JBQWtCO29CQUNsQyxVQUFXLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztvQkFDekMsOEJBQThCO29CQUM5QixNQUFNO2dCQUNQLHlDQUF5QztnQkFDekMsZ0NBQWdDO2dCQUNoQyxVQUFVO1lBQ1gsQ0FBQztRQUNGLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQVNELElBQUksQ0FBQyxPQUFZO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUE4QjtRQUNuQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxNQUFNLENBQUMsV0FBb0I7UUFDMUIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLHlCQUF5QjtJQUNwRSxDQUFDO0lBRUQsWUFBWSxDQUFDLElBQVksRUFBRSxRQUFpQjtRQUMzQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsWUFBWSxDQUFDLFVBQW9CLEVBQUUsUUFBaUI7UUFDbkQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELFVBQVU7UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELGNBQWMsQ0FBQyxXQUFvQjtRQUNsQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxXQUFXLENBQUMsV0FBb0I7UUFDL0IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsZUFBZSxDQUFDLFdBQXFCO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELFFBQVE7UUFDUCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELFdBQVc7UUFDVixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELFVBQVU7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxPQUFxQjtRQUNyQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEQsQ0FBQzs4R0EvRVcsZUFBZTtrSEFBZixlQUFlLGNBREYsTUFBTTs7MkZBQ25CLGVBQWU7a0JBRDNCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgS2V5Y2xvYWtFdmVudFR5cGUsIEtleWNsb2FrT3B0aW9ucywgS2V5Y2xvYWtTZXJ2aWNlIH0gZnJvbSAna2V5Y2xvYWstYW5ndWxhcic7XHJcbmltcG9ydCB7IEtleWNsb2FrTG9naW5PcHRpb25zIH0gZnJvbSAna2V5Y2xvYWstanMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgS2V5Y2xvYWtNYW5hZ2VyIHtcclxuXHRjb25zdHJ1Y3RvcigpIHtcclxuXHRcdHRoaXMua2V5Y2xvYWsua2V5Y2xvYWtFdmVudHMkLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcclxuXHRcdFx0Y29uc29sZS5sb2coJ2tleWNsb2FrRXZlbnRzJywgZXZlbnQpO1xyXG5cclxuXHRcdFx0c3dpdGNoIChldmVudC50eXBlKSB7XHJcblx0XHRcdFx0Y2FzZSBLZXljbG9ha0V2ZW50VHlwZS5PblJlYWR5OlxyXG5cdFx0XHRcdFx0KDxhbnk+Z2xvYmFsVGhpcykua2V5Y2xvYWtTZXJ2aWNlID0gdGhpcy5rZXljbG9haztcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgS2V5Y2xvYWtFdmVudFR5cGUuT25BdXRoRXJyb3I6XHJcblx0XHRcdFx0Y2FzZSBLZXljbG9ha0V2ZW50VHlwZS5PbkF1dGhMb2dvdXQ6XHJcblx0XHRcdFx0Y2FzZSBLZXljbG9ha0V2ZW50VHlwZS5PbkF1dGhSZWZyZXNoRXJyb3I6XHJcblx0XHRcdFx0XHQoPGFueT5nbG9iYWxUaGlzKS5rZXljbG9ha1NlcnZpY2UgPSBudWxsO1xyXG5cdFx0XHRcdFx0Ly8gdGhpcy5rZXljbG9hay5jbGVhclRva2VuKCk7XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHQvLyBjYXNlIEtleWNsb2FrRXZlbnRUeXBlLk9uVG9rZW5FeHBpcmVkOlxyXG5cdFx0XHRcdC8vIFx0dGhpcy5rZXljbG9hay51cGRhdGVUb2tlbigpO1xyXG5cdFx0XHRcdC8vIFx0YnJlYWs7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHRwdWJsaWMgcmVhZG9ubHkga2V5Y2xvYWsgPSBpbmplY3QoS2V5Y2xvYWtTZXJ2aWNlKTtcclxuXHJcblx0cHJpdmF0ZSBkZWZhdWx0T3B0aW9uczogS2V5Y2xvYWtPcHRpb25zID0ge1xyXG5cdFx0bG9hZFVzZXJQcm9maWxlQXRTdGFydFVwOiB0cnVlLFxyXG5cdFx0aW5pdE9wdGlvbnM6IHsgb25Mb2FkOiAnbG9naW4tcmVxdWlyZWQnIH0sXHJcblx0XHRiZWFyZXJFeGNsdWRlZFVybHM6IFsnL2Fzc2V0cyddXHJcblx0fTtcclxuXHJcblx0aW5pdChjb25maWdzOiBhbnkpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuXHRcdHJldHVybiB0aGlzLmtleWNsb2FrLmluaXQoeyAuLi50aGlzLmRlZmF1bHRPcHRpb25zLCBjb25maWc6IGNvbmZpZ3MgfSk7XHJcblx0fVxyXG5cclxuXHRsb2dpbihvcHRpb25zPzogS2V5Y2xvYWtMb2dpbk9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcclxuXHRcdHJldHVybiB0aGlzLmtleWNsb2FrLmxvZ2luKG9wdGlvbnMpO1xyXG5cdH1cclxuXHJcblx0bG9nb3V0KHJlZGlyZWN0VXJpPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcblx0XHRyZXR1cm4gdGhpcy5rZXljbG9hay5sb2dvdXQocmVkaXJlY3RVcmkpOyAvLyB3aW5kb3cubG9jYXRpb24ub3JpZ2luXHJcblx0fVxyXG5cclxuXHRpc1VzZXJJblJvbGUocm9sZTogc3RyaW5nLCByZXNvdXJjZT86IHN0cmluZyk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHRoaXMua2V5Y2xvYWsuaXNVc2VySW5Sb2xlKHJvbGUsIHJlc291cmNlKTtcclxuXHR9XHJcblxyXG5cdGdldFVzZXJSb2xlcyhyZWFsbVJvbGVzPzogYm9vbGVhbiwgcmVzb3VyY2U/OiBzdHJpbmcpOiBzdHJpbmdbXSB7XHJcblx0XHRyZXR1cm4gdGhpcy5rZXljbG9hay5nZXRVc2VyUm9sZXMocmVhbG1Sb2xlcywgcmVzb3VyY2UpO1xyXG5cdH1cclxuXHJcblx0aXNMb2dnZWRJbigpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLmtleWNsb2FrLmlzTG9nZ2VkSW4oKTtcclxuXHR9XHJcblxyXG5cdGlzVG9rZW5FeHBpcmVkKG1pblZhbGlkaXR5PzogbnVtYmVyKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5rZXljbG9hay5pc1Rva2VuRXhwaXJlZChtaW5WYWxpZGl0eSk7XHJcblx0fVxyXG5cclxuXHR1cGRhdGVUb2tlbihtaW5WYWxpZGl0eT86IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG5cdFx0cmV0dXJuIHRoaXMua2V5Y2xvYWsudXBkYXRlVG9rZW4obWluVmFsaWRpdHkpO1xyXG5cdH1cclxuXHJcblx0bG9hZFVzZXJQcm9maWxlKGZvcmNlUmVsb2FkPzogYm9vbGVhbik6IFByb21pc2U8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5rZXljbG9hay5sb2FkVXNlclByb2ZpbGUoZm9yY2VSZWxvYWQpO1xyXG5cdH1cclxuXHJcblx0Z2V0VG9rZW4oKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuXHRcdHJldHVybiB0aGlzLmtleWNsb2FrLmdldFRva2VuKCk7XHJcblx0fVxyXG5cclxuXHRnZXRVc2VybmFtZSgpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIHRoaXMua2V5Y2xvYWsuZ2V0VXNlcm5hbWUoKTtcclxuXHR9XHJcblxyXG5cdGNsZWFyVG9rZW4oKTogdm9pZCB7XHJcblx0XHR0aGlzLmtleWNsb2FrLmNsZWFyVG9rZW4oKTtcclxuXHR9XHJcblxyXG5cdGFkZFRva2VuVG9IZWFkZXIoaGVhZGVycz86IEh0dHBIZWFkZXJzKTogT2JzZXJ2YWJsZTxIdHRwSGVhZGVycz4ge1xyXG5cdFx0cmV0dXJuIHRoaXMua2V5Y2xvYWsuYWRkVG9rZW5Ub0hlYWRlcihoZWFkZXJzKTtcclxuXHR9XHJcbn1cclxuIl19
@@ -0,0 +1,3 @@
1
+ import './boot/host/index';
2
+ import './boot/mfe/index';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3Byb2plY3RzL2FyaWwvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJy4vYm9vdC9ob3N0L2luZGV4JztcclxuaW1wb3J0ICcuL2Jvb3QvbWZlL2luZGV4JztcclxuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJpbC10aGVtZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdGhlbWUvYXJpbC10aGVtZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export const aril_theme = 'ARiL-THEME';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgYXJpbF90aGVtZSA9ICdBUmlMLVRIRU1FJztcclxuIl19
@@ -0,0 +1,41 @@
1
+ import { AsyncPipe, NgTemplateOutlet } from '@angular/common';
2
+ import { Component } from '@angular/core';
3
+ import { NavigationEnd, RouterLink } from '@angular/router';
4
+ import { BehaviorSubject } from 'rxjs';
5
+ import { filter } from 'rxjs/operators';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/router";
8
+ export class AppBreadcrumbComponent {
9
+ constructor(router) {
10
+ this.router = router;
11
+ this._breadcrumbs$ = new BehaviorSubject([]);
12
+ this.breadcrumbs$ = this._breadcrumbs$.asObservable();
13
+ this.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe((event) => {
14
+ const root = this.router.routerState.snapshot.root;
15
+ const breadcrumbs = [];
16
+ this.addBreadcrumb(root, [], breadcrumbs);
17
+ this._breadcrumbs$.next(breadcrumbs);
18
+ });
19
+ }
20
+ addBreadcrumb(route, parentUrl, breadcrumbs) {
21
+ const routeUrl = parentUrl.concat(route.url.map((url) => url.path));
22
+ const breadcrumb = route.data['breadcrumb'];
23
+ const parentBreadcrumb = route.parent && route.parent.data ? route.parent.data['breadcrumb'] : null;
24
+ if (breadcrumb && breadcrumb !== parentBreadcrumb) {
25
+ breadcrumbs.push({
26
+ label: route.data['breadcrumb'],
27
+ url: '/' + routeUrl.join('/')
28
+ });
29
+ }
30
+ if (route.firstChild) {
31
+ this.addBreadcrumb(route.firstChild, routeUrl, breadcrumbs);
32
+ }
33
+ }
34
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppBreadcrumbComponent, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
35
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: AppBreadcrumbComponent, isStandalone: true, selector: "app-breadcrumb", ngImport: i0, template: "<nav class=\"layout-breadcrumb\">\r\n\t<ol>\r\n\t\t<i class=\"pi pi-home text-xl\"></i>\r\n\t\t@for (item of breadcrumbs$ | async; track item; let last = $last) {\r\n\t\t\t<li class=\"border-bottom-1\">\r\n\t\t\t\t<a [routerLink]=\"item.url\" class=\"no-underline\">\r\n\t\t\t\t\t<span class=\"text-gray-900 text-lg\">{{ item.label }}</span>\r\n\t\t\t\t</a>\r\n\t\t\t</li>\r\n\t\t\t@if (!last) {\r\n\t\t\t\t<li class=\"layout-breadcrumb-chevron \">\r\n\t\t\t\t\t<i class=\"pi pi-chevron-right font-semibold text-lg text-gray-900\"></i>\r\n\t\t\t\t</li>\r\n\t\t\t}\r\n\t\t}\r\n\t</ol>\r\n</nav>\r\n", dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
36
+ }
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppBreadcrumbComponent, decorators: [{
38
+ type: Component,
39
+ args: [{ standalone: true, selector: 'app-breadcrumb', imports: [NgTemplateOutlet, AsyncPipe, RouterLink], template: "<nav class=\"layout-breadcrumb\">\r\n\t<ol>\r\n\t\t<i class=\"pi pi-home text-xl\"></i>\r\n\t\t@for (item of breadcrumbs$ | async; track item; let last = $last) {\r\n\t\t\t<li class=\"border-bottom-1\">\r\n\t\t\t\t<a [routerLink]=\"item.url\" class=\"no-underline\">\r\n\t\t\t\t\t<span class=\"text-gray-900 text-lg\">{{ item.label }}</span>\r\n\t\t\t\t</a>\r\n\t\t\t</li>\r\n\t\t\t@if (!last) {\r\n\t\t\t\t<li class=\"layout-breadcrumb-chevron \">\r\n\t\t\t\t\t<i class=\"pi pi-chevron-right font-semibold text-lg text-gray-900\"></i>\r\n\t\t\t\t</li>\r\n\t\t\t}\r\n\t\t}\r\n\t</ol>\r\n</nav>\r\n" }]
40
+ }], ctorParameters: () => [{ type: i1.Router }] });
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmJyZWFkY3J1bWIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL2JyZWFkY3J1bWIvYXBwLmJyZWFkY3J1bWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL2JyZWFkY3J1bWIvYXBwLmJyZWFkY3J1bWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUEwQixhQUFhLEVBQVUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFNUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQWF4QyxNQUFNLE9BQU8sc0JBQXNCO0lBS2xDLFlBQW9CLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBSmpCLGtCQUFhLEdBQUcsSUFBSSxlQUFlLENBQWUsRUFBRSxDQUFDLENBQUM7UUFFOUQsaUJBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBR3pELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssWUFBWSxhQUFhLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzlGLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDbkQsTUFBTSxXQUFXLEdBQWlCLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFFMUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRU8sYUFBYSxDQUFDLEtBQTZCLEVBQUUsU0FBbUIsRUFBRSxXQUF5QjtRQUNsRyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNwRSxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzVDLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUVwRyxJQUFJLFVBQVUsSUFBSSxVQUFVLEtBQUssZ0JBQWdCLEVBQUUsQ0FBQztZQUNuRCxXQUFXLENBQUMsSUFBSSxDQUFDO2dCQUNoQixLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7Z0JBQy9CLEdBQUcsRUFBRSxHQUFHLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7YUFDN0IsQ0FBQyxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDN0QsQ0FBQztJQUNGLENBQUM7OEdBOUJXLHNCQUFzQjtrR0FBdEIsc0JBQXNCLDBFQ2xCbkMsdWxCQWlCQSx1Q0RGNkIsU0FBUyw4Q0FBRSxVQUFVOzsyRkFHckMsc0JBQXNCO2tCQU5sQyxTQUFTO2lDQUNHLElBQUksWUFDTixnQkFBZ0IsV0FDakIsQ0FBQyxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIE5hdmlnYXRpb25FbmQsIFJvdXRlciwgUm91dGVyTGluayB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW50ZXJmYWNlIEJyZWFkY3J1bWIge1xyXG5cdGxhYmVsOiBzdHJpbmc7XHJcblx0dXJsPzogc3RyaW5nO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdHNlbGVjdG9yOiAnYXBwLWJyZWFkY3J1bWInLFxyXG5cdGltcG9ydHM6IFtOZ1RlbXBsYXRlT3V0bGV0LCBBc3luY1BpcGUsIFJvdXRlckxpbmtdLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9hcHAuYnJlYWRjcnVtYi5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEFwcEJyZWFkY3J1bWJDb21wb25lbnQge1xyXG5cdHByaXZhdGUgcmVhZG9ubHkgX2JyZWFkY3J1bWJzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QnJlYWRjcnVtYltdPihbXSk7XHJcblxyXG5cdHJlYWRvbmx5IGJyZWFkY3J1bWJzJCA9IHRoaXMuX2JyZWFkY3J1bWJzJC5hc09ic2VydmFibGUoKTtcclxuXHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge1xyXG5cdFx0dGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyKChldmVudCkgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSkuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG5cdFx0XHRjb25zdCByb290ID0gdGhpcy5yb3V0ZXIucm91dGVyU3RhdGUuc25hcHNob3Qucm9vdDtcclxuXHRcdFx0Y29uc3QgYnJlYWRjcnVtYnM6IEJyZWFkY3J1bWJbXSA9IFtdO1xyXG5cdFx0XHR0aGlzLmFkZEJyZWFkY3J1bWIocm9vdCwgW10sIGJyZWFkY3J1bWJzKTtcclxuXHJcblx0XHRcdHRoaXMuX2JyZWFkY3J1bWJzJC5uZXh0KGJyZWFkY3J1bWJzKTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBhZGRCcmVhZGNydW1iKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBwYXJlbnRVcmw6IHN0cmluZ1tdLCBicmVhZGNydW1iczogQnJlYWRjcnVtYltdKSB7XHJcblx0XHRjb25zdCByb3V0ZVVybCA9IHBhcmVudFVybC5jb25jYXQocm91dGUudXJsLm1hcCgodXJsKSA9PiB1cmwucGF0aCkpO1xyXG5cdFx0Y29uc3QgYnJlYWRjcnVtYiA9IHJvdXRlLmRhdGFbJ2JyZWFkY3J1bWInXTtcclxuXHRcdGNvbnN0IHBhcmVudEJyZWFkY3J1bWIgPSByb3V0ZS5wYXJlbnQgJiYgcm91dGUucGFyZW50LmRhdGEgPyByb3V0ZS5wYXJlbnQuZGF0YVsnYnJlYWRjcnVtYiddIDogbnVsbDtcclxuXHJcblx0XHRpZiAoYnJlYWRjcnVtYiAmJiBicmVhZGNydW1iICE9PSBwYXJlbnRCcmVhZGNydW1iKSB7XHJcblx0XHRcdGJyZWFkY3J1bWJzLnB1c2goe1xyXG5cdFx0XHRcdGxhYmVsOiByb3V0ZS5kYXRhWydicmVhZGNydW1iJ10sXHJcblx0XHRcdFx0dXJsOiAnLycgKyByb3V0ZVVybC5qb2luKCcvJylcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHJvdXRlLmZpcnN0Q2hpbGQpIHtcclxuXHRcdFx0dGhpcy5hZGRCcmVhZGNydW1iKHJvdXRlLmZpcnN0Q2hpbGQsIHJvdXRlVXJsLCBicmVhZGNydW1icyk7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcbiIsIjxuYXYgY2xhc3M9XCJsYXlvdXQtYnJlYWRjcnVtYlwiPlxyXG5cdDxvbD5cclxuXHRcdDxpIGNsYXNzPVwicGkgcGktaG9tZSB0ZXh0LXhsXCI+PC9pPlxyXG5cdFx0QGZvciAoaXRlbSBvZiBicmVhZGNydW1icyQgfCBhc3luYzsgdHJhY2sgaXRlbTsgbGV0IGxhc3QgPSAkbGFzdCkge1xyXG5cdFx0XHQ8bGkgY2xhc3M9XCJib3JkZXItYm90dG9tLTFcIj5cclxuXHRcdFx0XHQ8YSBbcm91dGVyTGlua109XCJpdGVtLnVybFwiIGNsYXNzPVwibm8tdW5kZXJsaW5lXCI+XHJcblx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cInRleHQtZ3JheS05MDAgdGV4dC1sZ1wiPnt7IGl0ZW0ubGFiZWwgfX08L3NwYW4+XHJcblx0XHRcdFx0PC9hPlxyXG5cdFx0XHQ8L2xpPlxyXG5cdFx0XHRAaWYgKCFsYXN0KSB7XHJcblx0XHRcdFx0PGxpIGNsYXNzPVwibGF5b3V0LWJyZWFkY3J1bWItY2hldnJvbiBcIj5cclxuXHRcdFx0XHRcdDxpIGNsYXNzPVwicGkgcGktY2hldnJvbi1yaWdodCBmb250LXNlbWlib2xkIHRleHQtbGcgdGV4dC1ncmF5LTkwMFwiPjwvaT5cclxuXHRcdFx0XHQ8L2xpPlxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0PC9vbD5cclxuPC9uYXY+XHJcbiJdfQ==
@@ -0,0 +1,132 @@
1
+ import { NgClass, NgStyle } from '@angular/common';
2
+ import { Component, Input } from '@angular/core';
3
+ import { FormsModule } from '@angular/forms';
4
+ import { ButtonModule } from 'primeng/button';
5
+ import { InputSwitchModule } from 'primeng/inputswitch';
6
+ import { RadioButtonModule } from 'primeng/radiobutton';
7
+ import { SidebarModule } from 'primeng/sidebar';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "../../service/app.layout.service";
10
+ import * as i2 from "../../service/app.menu.service";
11
+ import * as i3 from "@angular/forms";
12
+ import * as i4 from "primeng/sidebar";
13
+ import * as i5 from "primeng/radiobutton";
14
+ import * as i6 from "primeng/button";
15
+ import * as i7 from "primeng/inputswitch";
16
+ export class AppConfigComponent {
17
+ constructor(layoutService, menuService) {
18
+ this.layoutService = layoutService;
19
+ this.menuService = menuService;
20
+ this.minimal = false;
21
+ this.componentThemes = [];
22
+ this.scales = [12, 13, 14, 15, 16];
23
+ }
24
+ get visible() {
25
+ return this.layoutService.state.configSidebarVisible;
26
+ }
27
+ set visible(_val) {
28
+ this.layoutService.state.configSidebarVisible = _val;
29
+ }
30
+ get scale() {
31
+ return this.layoutService.config().scale;
32
+ }
33
+ set scale(_val) {
34
+ this.layoutService.config.update((config) => ({
35
+ ...config,
36
+ scale: _val
37
+ }));
38
+ }
39
+ get menuMode() {
40
+ return this.layoutService.config().menuMode;
41
+ }
42
+ set menuMode(_val) {
43
+ this.layoutService.config.update((config) => ({
44
+ ...config,
45
+ menuMode: _val
46
+ }));
47
+ if (this.layoutService.isSlimPlus() || this.layoutService.isSlim() || this.layoutService.isHorizontal()) {
48
+ this.menuService.reset();
49
+ }
50
+ }
51
+ get colorScheme() {
52
+ return this.layoutService.config().colorScheme;
53
+ }
54
+ set colorScheme(_val) {
55
+ this.layoutService.config.update((config) => ({
56
+ ...config,
57
+ colorScheme: _val
58
+ }));
59
+ }
60
+ get inputStyle() {
61
+ return this.layoutService.config().inputStyle;
62
+ }
63
+ set inputStyle(_val) {
64
+ this.layoutService.config.update((config) => ({
65
+ ...config,
66
+ inputStyle: _val
67
+ }));
68
+ }
69
+ get ripple() {
70
+ return this.layoutService.config().ripple;
71
+ }
72
+ set ripple(_val) {
73
+ this.layoutService.config.update((config) => ({
74
+ ...config,
75
+ ripple: _val
76
+ }));
77
+ }
78
+ get menuTheme() {
79
+ return this.layoutService.config().menuTheme;
80
+ }
81
+ set menuTheme(_val) {
82
+ this.layoutService.config.update((config) => ({
83
+ ...config,
84
+ menuTheme: _val
85
+ }));
86
+ }
87
+ get theme() {
88
+ return this.layoutService.config().theme;
89
+ }
90
+ set theme(_val) {
91
+ this.layoutService.config.update((config) => ({
92
+ ...config,
93
+ theme: _val
94
+ }));
95
+ }
96
+ ngOnInit() {
97
+ this.componentThemes = [
98
+ { name: 'indigo', color: '#6366F1' },
99
+ { name: 'blue', color: '#3B82F6' },
100
+ { name: 'purple', color: '#8B5CF6' },
101
+ { name: 'teal', color: '#14B8A6' },
102
+ { name: 'cyan', color: '#06b6d4' },
103
+ { name: 'green', color: '#10b981' },
104
+ { name: 'orange', color: '#f59e0b' },
105
+ { name: 'pink', color: '#d946ef' }
106
+ ];
107
+ }
108
+ onConfigButtonClick() {
109
+ this.layoutService.showConfigSidebar();
110
+ }
111
+ changeColorScheme(colorScheme) {
112
+ this.colorScheme = colorScheme;
113
+ }
114
+ changeTheme(theme) {
115
+ this.theme = theme;
116
+ }
117
+ decrementScale() {
118
+ this.scale--;
119
+ }
120
+ incrementScale() {
121
+ this.scale++;
122
+ }
123
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppConfigComponent, deps: [{ token: i1.LayoutService }, { token: i2.AppMenuService }], target: i0.ɵɵFactoryTarget.Component }); }
124
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: AppConfigComponent, isStandalone: true, selector: "app-config", inputs: { minimal: "minimal" }, ngImport: i0, template: "<button class=\"layout-config-button p-link\" type=\"button\" (click)=\"onConfigButtonClick()\">\r\n\t<i class=\"pi pi-cog\"></i>\r\n</button>\r\n\r\n<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-config-sidebar w-18rem\">\r\n\t<h5>Themes</h5>\r\n\t<div class=\"flex flex-wrap row-gap-3\">\r\n\t\t@for (theme of componentThemes; track theme) {\r\n\t\t\t<div class=\"w-3\">\r\n\t\t\t\t<button\r\n\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\tclass=\"cursor-pointer p-link w-2rem h-2rem border-circle flex-shrink-0 flex align-items-center justify-content-center\"\r\n\t\t\t\t\t(click)=\"changeTheme(theme.name)\"\r\n\t\t\t\t\t[ngStyle]=\"{ 'background-color': theme.color }\">\r\n\t\t\t\t\t@if (theme.name == this.layoutService.config().theme) {\r\n\t\t\t\t\t\t<i class=\"pi pi-check text-white\"></i>\r\n\t\t\t\t\t}\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n\r\n\t<h5>Scale</h5>\r\n\t<div class=\"flex align-items-center\">\r\n\t\t<button\r\n\t\t\ticon=\"pi pi-minus\"\r\n\t\t\ttype=\"button\"\r\n\t\t\tpButton\r\n\t\t\t(click)=\"decrementScale()\"\r\n\t\t\tclass=\"p-button-text p-button-rounded w-2rem h-2rem mr-2\"\r\n\t\t\t[disabled]=\"scale === scales[0]\"></button>\r\n\t\t<div class=\"flex gap-2 align-items-center\">\r\n\t\t\t@for (s of scales; track s) {\r\n\t\t\t\t<i class=\"pi pi-circle-fill text-300\" [ngClass]=\"{ 'text-primary-500': s === scale }\"></i>\r\n\t\t\t}\r\n\t\t</div>\r\n\t\t<button\r\n\t\t\ticon=\"pi pi-plus\"\r\n\t\t\ttype=\"button\"\r\n\t\t\tpButton\r\n\t\t\t(click)=\"incrementScale()\"\r\n\t\t\tclass=\"p-button-text p-button-rounded w-2rem h-2rem ml-2\"\r\n\t\t\t[disabled]=\"scale === scales[scales.length - 1]\"></button>\r\n\t</div>\r\n\r\n\t@if (!minimal) {\r\n\t\t<h5>Menu Type</h5>\r\n\t\t<div class=\"flex flex-wrap row-gap-3\">\r\n\t\t\t<div class=\"flex align-items-center gap-2 w-6\">\r\n\t\t\t\t<p-radioButton name=\"menuMode\" value=\"static\" [(ngModel)]=\"menuMode\" inputId=\"mode1\"></p-radioButton>\r\n\t\t\t\t<label for=\"mode1\">Static</label>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"flex align-items-center gap-2 w-6\">\r\n\t\t\t\t<p-radioButton name=\"menuMode\" value=\"overlay\" [(ngModel)]=\"menuMode\" inputId=\"mode2\"></p-radioButton>\r\n\t\t\t\t<label for=\"mode2\">Overlay</label>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"flex align-items-center gap-2 w-6\">\r\n\t\t\t\t<p-radioButton name=\"menuMode\" value=\"slim\" [(ngModel)]=\"menuMode\" inputId=\"mode3\"></p-radioButton>\r\n\t\t\t\t<label for=\"mode3\">Slim</label>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"flex align-items-center gap-2 w-6\">\r\n\t\t\t\t<p-radioButton name=\"menuMode\" value=\"slim-plus\" [(ngModel)]=\"menuMode\" inputId=\"mode4\"></p-radioButton>\r\n\t\t\t\t<label for=\"mode3\">Slim +</label>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"flex align-items-center gap-2 w-6\">\r\n\t\t\t\t<p-radioButton name=\"menuMode\" value=\"reveal\" [(ngModel)]=\"menuMode\" inputId=\"mode6\"></p-radioButton>\r\n\t\t\t\t<label for=\"mode5\">Reveal</label>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"flex align-items-center gap-2 w-6\">\r\n\t\t\t\t<p-radioButton name=\"menuMode\" value=\"drawer\" [(ngModel)]=\"menuMode\" inputId=\"mode7\"></p-radioButton>\r\n\t\t\t\t<label for=\"mode6\">Drawer</label>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"flex align-items-center gap-2 w-6\">\r\n\t\t\t\t<p-radioButton name=\"menuMode\" value=\"horizontal\" [(ngModel)]=\"menuMode\" inputId=\"mode5\"></p-radioButton>\r\n\t\t\t\t<label for=\"mode4\">Horizontal</label>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<h5>Menu Theme</h5>\r\n\t\t<div class=\"field-radiobutton\">\r\n\t\t\t<p-radioButton\r\n\t\t\t\tname=\"menuTheme\"\r\n\t\t\t\tvalue=\"colorScheme\"\r\n\t\t\t\t[(ngModel)]=\"menuTheme\"\r\n\t\t\t\tinputId=\"menutheme-colorscheme\"></p-radioButton>\r\n\t\t\t<label for=\"menutheme-colorscheme\">Color Scheme</label>\r\n\t\t</div>\r\n\t\t<div class=\"field-radiobutton\">\r\n\t\t\t<p-radioButton\r\n\t\t\t\tname=\"menuTheme\"\r\n\t\t\t\tvalue=\"primaryColor\"\r\n\t\t\t\t[(ngModel)]=\"menuTheme\"\r\n\t\t\t\tinputId=\"menutheme-primarycolor\"></p-radioButton>\r\n\t\t\t<label for=\"menutheme-primarycolor\">Primary Color</label>\r\n\t\t</div>\r\n\t\t<div class=\"field-radiobutton\">\r\n\t\t\t<p-radioButton\r\n\t\t\t\tname=\"menuTheme\"\r\n\t\t\t\tvalue=\"transparent\"\r\n\t\t\t\t[(ngModel)]=\"menuTheme\"\r\n\t\t\t\tinputId=\"menutheme-transparent\"></p-radioButton>\r\n\t\t\t<label for=\"menutheme-transparent\">Transparent</label>\r\n\t\t</div>\r\n\t}\r\n\r\n\t<h5>Color Scheme</h5>\r\n\t<div class=\"field-radiobutton\">\r\n\t\t<p-radioButton name=\"colorScheme\" value=\"light\" [(ngModel)]=\"colorScheme\" inputId=\"mode-light\"></p-radioButton>\r\n\t\t<label for=\"mode-light\">Light</label>\r\n\t</div>\r\n\t<div class=\"field-radiobutton\">\r\n\t\t<p-radioButton name=\"colorScheme\" value=\"dim\" [(ngModel)]=\"colorScheme\" inputId=\"mode-dim\"></p-radioButton>\r\n\t\t<label for=\"mode-dim\">Dim</label>\r\n\t</div>\r\n\t<div class=\"field-radiobutton\">\r\n\t\t<p-radioButton name=\"colorScheme\" value=\"dark\" [(ngModel)]=\"colorScheme\" inputId=\"mode-dark\"></p-radioButton>\r\n\t\t<label for=\"mode-dark\">Dark</label>\r\n\t</div>\r\n\r\n\t@if (!minimal) {\r\n\t\t<h5>Input Style</h5>\r\n\t\t<div class=\"flex\">\r\n\t\t\t<div class=\"field-radiobutton flex-1\">\r\n\t\t\t\t<p-radioButton\r\n\t\t\t\t\tname=\"inputStyle\"\r\n\t\t\t\t\tvalue=\"outlined\"\r\n\t\t\t\t\t[(ngModel)]=\"inputStyle\"\r\n\t\t\t\t\tinputId=\"outlined_input\"></p-radioButton>\r\n\t\t\t\t<label for=\"outlined_input\">Outlined</label>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"field-radiobutton flex-1\">\r\n\t\t\t\t<p-radioButton name=\"inputStyle\" value=\"filled\" [(ngModel)]=\"inputStyle\" inputId=\"filled_input\"></p-radioButton>\r\n\t\t\t\t<label for=\"filled_input\">Filled</label>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<h5>Ripple Effect</h5>\r\n\t\t<p-inputSwitch [(ngModel)]=\"ripple\"></p-inputSwitch>\r\n\t}\r\n</p-sidebar>\r\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: SidebarModule }, { kind: "component", type: i4.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "ngmodule", type: RadioButtonModule }, { kind: "component", type: i5.RadioButton, selector: "p-radioButton", inputs: ["value", "formControlName", "name", "disabled", "label", "variant", "tabindex", "inputId", "ariaLabelledBy", "ariaLabel", "style", "styleClass", "labelStyleClass", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i6.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "ngmodule", type: InputSwitchModule }, { kind: "component", type: i7.InputSwitch, selector: "p-inputSwitch", inputs: ["style", "styleClass", "tabindex", "inputId", "name", "disabled", "readonly", "trueValue", "falseValue", "ariaLabel", "ariaLabelledBy", "autofocus"], outputs: ["onChange"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
125
+ }
126
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppConfigComponent, decorators: [{
127
+ type: Component,
128
+ args: [{ standalone: true, selector: 'app-config', imports: [FormsModule, SidebarModule, RadioButtonModule, ButtonModule, InputSwitchModule, NgStyle, NgClass], template: "<button class=\"layout-config-button p-link\" type=\"button\" (click)=\"onConfigButtonClick()\">\r\n\t<i class=\"pi pi-cog\"></i>\r\n</button>\r\n\r\n<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-config-sidebar w-18rem\">\r\n\t<h5>Themes</h5>\r\n\t<div class=\"flex flex-wrap row-gap-3\">\r\n\t\t@for (theme of componentThemes; track theme) {\r\n\t\t\t<div class=\"w-3\">\r\n\t\t\t\t<button\r\n\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\tclass=\"cursor-pointer p-link w-2rem h-2rem border-circle flex-shrink-0 flex align-items-center justify-content-center\"\r\n\t\t\t\t\t(click)=\"changeTheme(theme.name)\"\r\n\t\t\t\t\t[ngStyle]=\"{ 'background-color': theme.color }\">\r\n\t\t\t\t\t@if (theme.name == this.layoutService.config().theme) {\r\n\t\t\t\t\t\t<i class=\"pi pi-check text-white\"></i>\r\n\t\t\t\t\t}\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n\r\n\t<h5>Scale</h5>\r\n\t<div class=\"flex align-items-center\">\r\n\t\t<button\r\n\t\t\ticon=\"pi pi-minus\"\r\n\t\t\ttype=\"button\"\r\n\t\t\tpButton\r\n\t\t\t(click)=\"decrementScale()\"\r\n\t\t\tclass=\"p-button-text p-button-rounded w-2rem h-2rem mr-2\"\r\n\t\t\t[disabled]=\"scale === scales[0]\"></button>\r\n\t\t<div class=\"flex gap-2 align-items-center\">\r\n\t\t\t@for (s of scales; track s) {\r\n\t\t\t\t<i class=\"pi pi-circle-fill text-300\" [ngClass]=\"{ 'text-primary-500': s === scale }\"></i>\r\n\t\t\t}\r\n\t\t</div>\r\n\t\t<button\r\n\t\t\ticon=\"pi pi-plus\"\r\n\t\t\ttype=\"button\"\r\n\t\t\tpButton\r\n\t\t\t(click)=\"incrementScale()\"\r\n\t\t\tclass=\"p-button-text p-button-rounded w-2rem h-2rem ml-2\"\r\n\t\t\t[disabled]=\"scale === scales[scales.length - 1]\"></button>\r\n\t</div>\r\n\r\n\t@if (!minimal) {\r\n\t\t<h5>Menu Type</h5>\r\n\t\t<div class=\"flex flex-wrap row-gap-3\">\r\n\t\t\t<div class=\"flex align-items-center gap-2 w-6\">\r\n\t\t\t\t<p-radioButton name=\"menuMode\" value=\"static\" [(ngModel)]=\"menuMode\" inputId=\"mode1\"></p-radioButton>\r\n\t\t\t\t<label for=\"mode1\">Static</label>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"flex align-items-center gap-2 w-6\">\r\n\t\t\t\t<p-radioButton name=\"menuMode\" value=\"overlay\" [(ngModel)]=\"menuMode\" inputId=\"mode2\"></p-radioButton>\r\n\t\t\t\t<label for=\"mode2\">Overlay</label>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"flex align-items-center gap-2 w-6\">\r\n\t\t\t\t<p-radioButton name=\"menuMode\" value=\"slim\" [(ngModel)]=\"menuMode\" inputId=\"mode3\"></p-radioButton>\r\n\t\t\t\t<label for=\"mode3\">Slim</label>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"flex align-items-center gap-2 w-6\">\r\n\t\t\t\t<p-radioButton name=\"menuMode\" value=\"slim-plus\" [(ngModel)]=\"menuMode\" inputId=\"mode4\"></p-radioButton>\r\n\t\t\t\t<label for=\"mode3\">Slim +</label>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"flex align-items-center gap-2 w-6\">\r\n\t\t\t\t<p-radioButton name=\"menuMode\" value=\"reveal\" [(ngModel)]=\"menuMode\" inputId=\"mode6\"></p-radioButton>\r\n\t\t\t\t<label for=\"mode5\">Reveal</label>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"flex align-items-center gap-2 w-6\">\r\n\t\t\t\t<p-radioButton name=\"menuMode\" value=\"drawer\" [(ngModel)]=\"menuMode\" inputId=\"mode7\"></p-radioButton>\r\n\t\t\t\t<label for=\"mode6\">Drawer</label>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"flex align-items-center gap-2 w-6\">\r\n\t\t\t\t<p-radioButton name=\"menuMode\" value=\"horizontal\" [(ngModel)]=\"menuMode\" inputId=\"mode5\"></p-radioButton>\r\n\t\t\t\t<label for=\"mode4\">Horizontal</label>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<h5>Menu Theme</h5>\r\n\t\t<div class=\"field-radiobutton\">\r\n\t\t\t<p-radioButton\r\n\t\t\t\tname=\"menuTheme\"\r\n\t\t\t\tvalue=\"colorScheme\"\r\n\t\t\t\t[(ngModel)]=\"menuTheme\"\r\n\t\t\t\tinputId=\"menutheme-colorscheme\"></p-radioButton>\r\n\t\t\t<label for=\"menutheme-colorscheme\">Color Scheme</label>\r\n\t\t</div>\r\n\t\t<div class=\"field-radiobutton\">\r\n\t\t\t<p-radioButton\r\n\t\t\t\tname=\"menuTheme\"\r\n\t\t\t\tvalue=\"primaryColor\"\r\n\t\t\t\t[(ngModel)]=\"menuTheme\"\r\n\t\t\t\tinputId=\"menutheme-primarycolor\"></p-radioButton>\r\n\t\t\t<label for=\"menutheme-primarycolor\">Primary Color</label>\r\n\t\t</div>\r\n\t\t<div class=\"field-radiobutton\">\r\n\t\t\t<p-radioButton\r\n\t\t\t\tname=\"menuTheme\"\r\n\t\t\t\tvalue=\"transparent\"\r\n\t\t\t\t[(ngModel)]=\"menuTheme\"\r\n\t\t\t\tinputId=\"menutheme-transparent\"></p-radioButton>\r\n\t\t\t<label for=\"menutheme-transparent\">Transparent</label>\r\n\t\t</div>\r\n\t}\r\n\r\n\t<h5>Color Scheme</h5>\r\n\t<div class=\"field-radiobutton\">\r\n\t\t<p-radioButton name=\"colorScheme\" value=\"light\" [(ngModel)]=\"colorScheme\" inputId=\"mode-light\"></p-radioButton>\r\n\t\t<label for=\"mode-light\">Light</label>\r\n\t</div>\r\n\t<div class=\"field-radiobutton\">\r\n\t\t<p-radioButton name=\"colorScheme\" value=\"dim\" [(ngModel)]=\"colorScheme\" inputId=\"mode-dim\"></p-radioButton>\r\n\t\t<label for=\"mode-dim\">Dim</label>\r\n\t</div>\r\n\t<div class=\"field-radiobutton\">\r\n\t\t<p-radioButton name=\"colorScheme\" value=\"dark\" [(ngModel)]=\"colorScheme\" inputId=\"mode-dark\"></p-radioButton>\r\n\t\t<label for=\"mode-dark\">Dark</label>\r\n\t</div>\r\n\r\n\t@if (!minimal) {\r\n\t\t<h5>Input Style</h5>\r\n\t\t<div class=\"flex\">\r\n\t\t\t<div class=\"field-radiobutton flex-1\">\r\n\t\t\t\t<p-radioButton\r\n\t\t\t\t\tname=\"inputStyle\"\r\n\t\t\t\t\tvalue=\"outlined\"\r\n\t\t\t\t\t[(ngModel)]=\"inputStyle\"\r\n\t\t\t\t\tinputId=\"outlined_input\"></p-radioButton>\r\n\t\t\t\t<label for=\"outlined_input\">Outlined</label>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"field-radiobutton flex-1\">\r\n\t\t\t\t<p-radioButton name=\"inputStyle\" value=\"filled\" [(ngModel)]=\"inputStyle\" inputId=\"filled_input\"></p-radioButton>\r\n\t\t\t\t<label for=\"filled_input\">Filled</label>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<h5>Ripple Effect</h5>\r\n\t\t<p-inputSwitch [(ngModel)]=\"ripple\"></p-inputSwitch>\r\n\t}\r\n</p-sidebar>\r\n" }]
129
+ }], ctorParameters: () => [{ type: i1.LayoutService }, { type: i2.AppMenuService }], propDecorators: { minimal: [{
130
+ type: Input
131
+ }] } });
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNvbmZpZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9hcHAvY29uZmlnL2FwcC5jb25maWcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL2NvbmZpZy9hcHAuY29uZmlnLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7OztBQVdoRCxNQUFNLE9BQU8sa0JBQWtCO0lBTzlCLFlBQ1EsYUFBNEIsRUFDNUIsV0FBMkI7UUFEM0Isa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBUjFCLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFFbEMsb0JBQWUsR0FBVSxFQUFFLENBQUM7UUFFNUIsV0FBTSxHQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBS3JDLENBQUM7SUFFSixJQUFJLE9BQU87UUFDVixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDO0lBQ3RELENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxJQUFhO1FBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztJQUN0RCxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQztJQUMxQyxDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsSUFBWTtRQUNyQixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDN0MsR0FBRyxNQUFNO1lBQ1QsS0FBSyxFQUFFLElBQUk7U0FDWCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDWCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDO0lBQzdDLENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBQyxJQUFjO1FBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM3QyxHQUFHLE1BQU07WUFDVCxRQUFRLEVBQUUsSUFBSTtTQUNkLENBQUMsQ0FBQyxDQUFDO1FBQ0osSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO1lBQ3pHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDMUIsQ0FBQztJQUNGLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsV0FBVyxDQUFDO0lBQ2hELENBQUM7SUFDRCxJQUFJLFdBQVcsQ0FBQyxJQUFpQjtRQUNoQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDN0MsR0FBRyxNQUFNO1lBQ1QsV0FBVyxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ2IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBQztJQUMvQyxDQUFDO0lBQ0QsSUFBSSxVQUFVLENBQUMsSUFBWTtRQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDN0MsR0FBRyxNQUFNO1lBQ1QsVUFBVSxFQUFFLElBQUk7U0FDaEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQztJQUMzQyxDQUFDO0lBQ0QsSUFBSSxNQUFNLENBQUMsSUFBYTtRQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDN0MsR0FBRyxNQUFNO1lBQ1QsTUFBTSxFQUFFLElBQUk7U0FDWixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDO0lBQzlDLENBQUM7SUFDRCxJQUFJLFNBQVMsQ0FBQyxJQUFxQjtRQUNsQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDN0MsR0FBRyxNQUFNO1lBQ1QsU0FBUyxFQUFFLElBQUk7U0FDZixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQzFDLENBQUM7SUFDRCxJQUFJLEtBQUssQ0FBQyxJQUFZO1FBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM3QyxHQUFHLE1BQU07WUFDVCxLQUFLLEVBQUUsSUFBSTtTQUNYLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFDUCxJQUFJLENBQUMsZUFBZSxHQUFHO1lBQ3RCLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQ3BDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQ2xDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQ3BDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQ2xDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQ2xDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQ25DLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQ3BDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1NBQ2xDLENBQUM7SUFDSCxDQUFDO0lBRUQsbUJBQW1CO1FBQ2xCLElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsV0FBd0I7UUFDekMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDaEMsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFhO1FBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxjQUFjO1FBQ2IsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELGNBQWM7UUFDYixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDZCxDQUFDOzhHQTNIVyxrQkFBa0I7a0dBQWxCLGtCQUFrQixzR0NsQi9CLDQ1TEE4SUEsMkNEL0hXLFdBQVcsOFZBQUUsYUFBYSw0V0FBRSxpQkFBaUIsNFVBQUUsWUFBWSw0T0FBRSxpQkFBaUIsNlJBQUUsT0FBTywyRUFBRSxPQUFPOzsyRkFHOUYsa0JBQWtCO2tCQU45QixTQUFTO2lDQUNHLElBQUksWUFDTixZQUFZLFdBQ2IsQ0FBQyxXQUFXLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDOytHQUlsRyxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzLCBOZ1N0eWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xyXG5pbXBvcnQgeyBJbnB1dFN3aXRjaE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXRzd2l0Y2gnO1xyXG5pbXBvcnQgeyBSYWRpb0J1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvcmFkaW9idXR0b24nO1xyXG5pbXBvcnQgeyBTaWRlYmFyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9zaWRlYmFyJztcclxuXHJcbmltcG9ydCB7IENvbG9yU2NoZW1lLCBMYXlvdXRTZXJ2aWNlLCBNZW51Q29sb3JTY2hlbWUsIE1lbnVNb2RlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9hcHAubGF5b3V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcHBNZW51U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvYXBwLm1lbnUuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdHNlbGVjdG9yOiAnYXBwLWNvbmZpZycsXHJcblx0aW1wb3J0czogW0Zvcm1zTW9kdWxlLCBTaWRlYmFyTW9kdWxlLCBSYWRpb0J1dHRvbk1vZHVsZSwgQnV0dG9uTW9kdWxlLCBJbnB1dFN3aXRjaE1vZHVsZSwgTmdTdHlsZSwgTmdDbGFzc10sXHJcblx0dGVtcGxhdGVVcmw6ICcuL2FwcC5jb25maWcuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcHBDb25maWdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cdEBJbnB1dCgpIG1pbmltYWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0Y29tcG9uZW50VGhlbWVzOiBhbnlbXSA9IFtdO1xyXG5cclxuXHRzY2FsZXM6IG51bWJlcltdID0gWzEyLCAxMywgMTQsIDE1LCAxNl07XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHVibGljIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsXHJcblx0XHRwdWJsaWMgbWVudVNlcnZpY2U6IEFwcE1lbnVTZXJ2aWNlXHJcblx0KSB7fVxyXG5cclxuXHRnZXQgdmlzaWJsZSgpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuY29uZmlnU2lkZWJhclZpc2libGU7XHJcblx0fVxyXG5cdHNldCB2aXNpYmxlKF92YWw6IGJvb2xlYW4pIHtcclxuXHRcdHRoaXMubGF5b3V0U2VydmljZS5zdGF0ZS5jb25maWdTaWRlYmFyVmlzaWJsZSA9IF92YWw7XHJcblx0fVxyXG5cclxuXHRnZXQgc2NhbGUoKTogbnVtYmVyIHtcclxuXHRcdHJldHVybiB0aGlzLmxheW91dFNlcnZpY2UuY29uZmlnKCkuc2NhbGU7XHJcblx0fVxyXG5cdHNldCBzY2FsZShfdmFsOiBudW1iZXIpIHtcclxuXHRcdHRoaXMubGF5b3V0U2VydmljZS5jb25maWcudXBkYXRlKChjb25maWcpID0+ICh7XHJcblx0XHRcdC4uLmNvbmZpZyxcclxuXHRcdFx0c2NhbGU6IF92YWxcclxuXHRcdH0pKTtcclxuXHR9XHJcblxyXG5cdGdldCBtZW51TW9kZSgpOiBNZW51TW9kZSB7XHJcblx0XHRyZXR1cm4gdGhpcy5sYXlvdXRTZXJ2aWNlLmNvbmZpZygpLm1lbnVNb2RlO1xyXG5cdH1cclxuXHRzZXQgbWVudU1vZGUoX3ZhbDogTWVudU1vZGUpIHtcclxuXHRcdHRoaXMubGF5b3V0U2VydmljZS5jb25maWcudXBkYXRlKChjb25maWcpID0+ICh7XHJcblx0XHRcdC4uLmNvbmZpZyxcclxuXHRcdFx0bWVudU1vZGU6IF92YWxcclxuXHRcdH0pKTtcclxuXHRcdGlmICh0aGlzLmxheW91dFNlcnZpY2UuaXNTbGltUGx1cygpIHx8IHRoaXMubGF5b3V0U2VydmljZS5pc1NsaW0oKSB8fCB0aGlzLmxheW91dFNlcnZpY2UuaXNIb3Jpem9udGFsKCkpIHtcclxuXHRcdFx0dGhpcy5tZW51U2VydmljZS5yZXNldCgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Z2V0IGNvbG9yU2NoZW1lKCk6IENvbG9yU2NoZW1lIHtcclxuXHRcdHJldHVybiB0aGlzLmxheW91dFNlcnZpY2UuY29uZmlnKCkuY29sb3JTY2hlbWU7XHJcblx0fVxyXG5cdHNldCBjb2xvclNjaGVtZShfdmFsOiBDb2xvclNjaGVtZSkge1xyXG5cdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLmNvbmZpZy51cGRhdGUoKGNvbmZpZykgPT4gKHtcclxuXHRcdFx0Li4uY29uZmlnLFxyXG5cdFx0XHRjb2xvclNjaGVtZTogX3ZhbFxyXG5cdFx0fSkpO1xyXG5cdH1cclxuXHJcblx0Z2V0IGlucHV0U3R5bGUoKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiB0aGlzLmxheW91dFNlcnZpY2UuY29uZmlnKCkuaW5wdXRTdHlsZTtcclxuXHR9XHJcblx0c2V0IGlucHV0U3R5bGUoX3ZhbDogc3RyaW5nKSB7XHJcblx0XHR0aGlzLmxheW91dFNlcnZpY2UuY29uZmlnLnVwZGF0ZSgoY29uZmlnKSA9PiAoe1xyXG5cdFx0XHQuLi5jb25maWcsXHJcblx0XHRcdGlucHV0U3R5bGU6IF92YWxcclxuXHRcdH0pKTtcclxuXHR9XHJcblxyXG5cdGdldCByaXBwbGUoKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5sYXlvdXRTZXJ2aWNlLmNvbmZpZygpLnJpcHBsZTtcclxuXHR9XHJcblx0c2V0IHJpcHBsZShfdmFsOiBib29sZWFuKSB7XHJcblx0XHR0aGlzLmxheW91dFNlcnZpY2UuY29uZmlnLnVwZGF0ZSgoY29uZmlnKSA9PiAoe1xyXG5cdFx0XHQuLi5jb25maWcsXHJcblx0XHRcdHJpcHBsZTogX3ZhbFxyXG5cdFx0fSkpO1xyXG5cdH1cclxuXHJcblx0Z2V0IG1lbnVUaGVtZSgpOiBNZW51Q29sb3JTY2hlbWUge1xyXG5cdFx0cmV0dXJuIHRoaXMubGF5b3V0U2VydmljZS5jb25maWcoKS5tZW51VGhlbWU7XHJcblx0fVxyXG5cdHNldCBtZW51VGhlbWUoX3ZhbDogTWVudUNvbG9yU2NoZW1lKSB7XHJcblx0XHR0aGlzLmxheW91dFNlcnZpY2UuY29uZmlnLnVwZGF0ZSgoY29uZmlnKSA9PiAoe1xyXG5cdFx0XHQuLi5jb25maWcsXHJcblx0XHRcdG1lbnVUaGVtZTogX3ZhbFxyXG5cdFx0fSkpO1xyXG5cdH1cclxuXHJcblx0Z2V0IHRoZW1lKCk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gdGhpcy5sYXlvdXRTZXJ2aWNlLmNvbmZpZygpLnRoZW1lO1xyXG5cdH1cclxuXHRzZXQgdGhlbWUoX3ZhbDogc3RyaW5nKSB7XHJcblx0XHR0aGlzLmxheW91dFNlcnZpY2UuY29uZmlnLnVwZGF0ZSgoY29uZmlnKSA9PiAoe1xyXG5cdFx0XHQuLi5jb25maWcsXHJcblx0XHRcdHRoZW1lOiBfdmFsXHJcblx0XHR9KSk7XHJcblx0fVxyXG5cclxuXHRuZ09uSW5pdCgpIHtcclxuXHRcdHRoaXMuY29tcG9uZW50VGhlbWVzID0gW1xyXG5cdFx0XHR7IG5hbWU6ICdpbmRpZ28nLCBjb2xvcjogJyM2MzY2RjEnIH0sXHJcblx0XHRcdHsgbmFtZTogJ2JsdWUnLCBjb2xvcjogJyMzQjgyRjYnIH0sXHJcblx0XHRcdHsgbmFtZTogJ3B1cnBsZScsIGNvbG9yOiAnIzhCNUNGNicgfSxcclxuXHRcdFx0eyBuYW1lOiAndGVhbCcsIGNvbG9yOiAnIzE0QjhBNicgfSxcclxuXHRcdFx0eyBuYW1lOiAnY3lhbicsIGNvbG9yOiAnIzA2YjZkNCcgfSxcclxuXHRcdFx0eyBuYW1lOiAnZ3JlZW4nLCBjb2xvcjogJyMxMGI5ODEnIH0sXHJcblx0XHRcdHsgbmFtZTogJ29yYW5nZScsIGNvbG9yOiAnI2Y1OWUwYicgfSxcclxuXHRcdFx0eyBuYW1lOiAncGluaycsIGNvbG9yOiAnI2Q5NDZlZicgfVxyXG5cdFx0XTtcclxuXHR9XHJcblxyXG5cdG9uQ29uZmlnQnV0dG9uQ2xpY2soKSB7XHJcblx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2hvd0NvbmZpZ1NpZGViYXIoKTtcclxuXHR9XHJcblxyXG5cdGNoYW5nZUNvbG9yU2NoZW1lKGNvbG9yU2NoZW1lOiBDb2xvclNjaGVtZSkge1xyXG5cdFx0dGhpcy5jb2xvclNjaGVtZSA9IGNvbG9yU2NoZW1lO1xyXG5cdH1cclxuXHJcblx0Y2hhbmdlVGhlbWUodGhlbWU6IHN0cmluZykge1xyXG5cdFx0dGhpcy50aGVtZSA9IHRoZW1lO1xyXG5cdH1cclxuXHJcblx0ZGVjcmVtZW50U2NhbGUoKSB7XHJcblx0XHR0aGlzLnNjYWxlLS07XHJcblx0fVxyXG5cclxuXHRpbmNyZW1lbnRTY2FsZSgpIHtcclxuXHRcdHRoaXMuc2NhbGUrKztcclxuXHR9XHJcbn1cclxuIiwiPGJ1dHRvbiBjbGFzcz1cImxheW91dC1jb25maWctYnV0dG9uIHAtbGlua1wiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25Db25maWdCdXR0b25DbGljaygpXCI+XHJcblx0PGkgY2xhc3M9XCJwaSBwaS1jb2dcIj48L2k+XHJcbjwvYnV0dG9uPlxyXG5cclxuPHAtc2lkZWJhclxyXG5cdFsodmlzaWJsZSldPVwidmlzaWJsZVwiXHJcblx0cG9zaXRpb249XCJyaWdodFwiXHJcblx0W3RyYW5zaXRpb25PcHRpb25zXT1cIicuM3MgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSknXCJcclxuXHRzdHlsZUNsYXNzPVwibGF5b3V0LWNvbmZpZy1zaWRlYmFyIHctMThyZW1cIj5cclxuXHQ8aDU+VGhlbWVzPC9oNT5cclxuXHQ8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgcm93LWdhcC0zXCI+XHJcblx0XHRAZm9yICh0aGVtZSBvZiBjb21wb25lbnRUaGVtZXM7IHRyYWNrIHRoZW1lKSB7XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJ3LTNcIj5cclxuXHRcdFx0XHQ8YnV0dG9uXHJcblx0XHRcdFx0XHR0eXBlPVwiYnV0dG9uXCJcclxuXHRcdFx0XHRcdGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgcC1saW5rIHctMnJlbSBoLTJyZW0gYm9yZGVyLWNpcmNsZSBmbGV4LXNocmluay0wIGZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxyXG5cdFx0XHRcdFx0KGNsaWNrKT1cImNoYW5nZVRoZW1lKHRoZW1lLm5hbWUpXCJcclxuXHRcdFx0XHRcdFtuZ1N0eWxlXT1cInsgJ2JhY2tncm91bmQtY29sb3InOiB0aGVtZS5jb2xvciB9XCI+XHJcblx0XHRcdFx0XHRAaWYgKHRoZW1lLm5hbWUgPT0gdGhpcy5sYXlvdXRTZXJ2aWNlLmNvbmZpZygpLnRoZW1lKSB7XHJcblx0XHRcdFx0XHRcdDxpIGNsYXNzPVwicGkgcGktY2hlY2sgdGV4dC13aGl0ZVwiPjwvaT5cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHQ8L2J1dHRvbj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHR9XHJcblx0PC9kaXY+XHJcblxyXG5cdDxoNT5TY2FsZTwvaDU+XHJcblx0PGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcblx0XHQ8YnV0dG9uXHJcblx0XHRcdGljb249XCJwaSBwaS1taW51c1wiXHJcblx0XHRcdHR5cGU9XCJidXR0b25cIlxyXG5cdFx0XHRwQnV0dG9uXHJcblx0XHRcdChjbGljayk9XCJkZWNyZW1lbnRTY2FsZSgpXCJcclxuXHRcdFx0Y2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXJvdW5kZWQgdy0ycmVtIGgtMnJlbSBtci0yXCJcclxuXHRcdFx0W2Rpc2FibGVkXT1cInNjYWxlID09PSBzY2FsZXNbMF1cIj48L2J1dHRvbj5cclxuXHRcdDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0yIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG5cdFx0XHRAZm9yIChzIG9mIHNjYWxlczsgdHJhY2sgcykge1xyXG5cdFx0XHRcdDxpIGNsYXNzPVwicGkgcGktY2lyY2xlLWZpbGwgdGV4dC0zMDBcIiBbbmdDbGFzc109XCJ7ICd0ZXh0LXByaW1hcnktNTAwJzogcyA9PT0gc2NhbGUgfVwiPjwvaT5cclxuXHRcdFx0fVxyXG5cdFx0PC9kaXY+XHJcblx0XHQ8YnV0dG9uXHJcblx0XHRcdGljb249XCJwaSBwaS1wbHVzXCJcclxuXHRcdFx0dHlwZT1cImJ1dHRvblwiXHJcblx0XHRcdHBCdXR0b25cclxuXHRcdFx0KGNsaWNrKT1cImluY3JlbWVudFNjYWxlKClcIlxyXG5cdFx0XHRjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tcm91bmRlZCB3LTJyZW0gaC0ycmVtIG1sLTJcIlxyXG5cdFx0XHRbZGlzYWJsZWRdPVwic2NhbGUgPT09IHNjYWxlc1tzY2FsZXMubGVuZ3RoIC0gMV1cIj48L2J1dHRvbj5cclxuXHQ8L2Rpdj5cclxuXHJcblx0QGlmICghbWluaW1hbCkge1xyXG5cdFx0PGg1Pk1lbnUgVHlwZTwvaDU+XHJcblx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgcm93LWdhcC0zXCI+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiB3LTZcIj5cclxuXHRcdFx0XHQ8cC1yYWRpb0J1dHRvbiBuYW1lPVwibWVudU1vZGVcIiB2YWx1ZT1cInN0YXRpY1wiIFsobmdNb2RlbCldPVwibWVudU1vZGVcIiBpbnB1dElkPVwibW9kZTFcIj48L3AtcmFkaW9CdXR0b24+XHJcblx0XHRcdFx0PGxhYmVsIGZvcj1cIm1vZGUxXCI+U3RhdGljPC9sYWJlbD5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiB3LTZcIj5cclxuXHRcdFx0XHQ8cC1yYWRpb0J1dHRvbiBuYW1lPVwibWVudU1vZGVcIiB2YWx1ZT1cIm92ZXJsYXlcIiBbKG5nTW9kZWwpXT1cIm1lbnVNb2RlXCIgaW5wdXRJZD1cIm1vZGUyXCI+PC9wLXJhZGlvQnV0dG9uPlxyXG5cdFx0XHRcdDxsYWJlbCBmb3I9XCJtb2RlMlwiPk92ZXJsYXk8L2xhYmVsPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIHctNlwiPlxyXG5cdFx0XHRcdDxwLXJhZGlvQnV0dG9uIG5hbWU9XCJtZW51TW9kZVwiIHZhbHVlPVwic2xpbVwiIFsobmdNb2RlbCldPVwibWVudU1vZGVcIiBpbnB1dElkPVwibW9kZTNcIj48L3AtcmFkaW9CdXR0b24+XHJcblx0XHRcdFx0PGxhYmVsIGZvcj1cIm1vZGUzXCI+U2xpbTwvbGFiZWw+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgdy02XCI+XHJcblx0XHRcdFx0PHAtcmFkaW9CdXR0b24gbmFtZT1cIm1lbnVNb2RlXCIgdmFsdWU9XCJzbGltLXBsdXNcIiBbKG5nTW9kZWwpXT1cIm1lbnVNb2RlXCIgaW5wdXRJZD1cIm1vZGU0XCI+PC9wLXJhZGlvQnV0dG9uPlxyXG5cdFx0XHRcdDxsYWJlbCBmb3I9XCJtb2RlM1wiPlNsaW0gKzwvbGFiZWw+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgdy02XCI+XHJcblx0XHRcdFx0PHAtcmFkaW9CdXR0b24gbmFtZT1cIm1lbnVNb2RlXCIgdmFsdWU9XCJyZXZlYWxcIiBbKG5nTW9kZWwpXT1cIm1lbnVNb2RlXCIgaW5wdXRJZD1cIm1vZGU2XCI+PC9wLXJhZGlvQnV0dG9uPlxyXG5cdFx0XHRcdDxsYWJlbCBmb3I9XCJtb2RlNVwiPlJldmVhbDwvbGFiZWw+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgdy02XCI+XHJcblx0XHRcdFx0PHAtcmFkaW9CdXR0b24gbmFtZT1cIm1lbnVNb2RlXCIgdmFsdWU9XCJkcmF3ZXJcIiBbKG5nTW9kZWwpXT1cIm1lbnVNb2RlXCIgaW5wdXRJZD1cIm1vZGU3XCI+PC9wLXJhZGlvQnV0dG9uPlxyXG5cdFx0XHRcdDxsYWJlbCBmb3I9XCJtb2RlNlwiPkRyYXdlcjwvbGFiZWw+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgdy02XCI+XHJcblx0XHRcdFx0PHAtcmFkaW9CdXR0b24gbmFtZT1cIm1lbnVNb2RlXCIgdmFsdWU9XCJob3Jpem9udGFsXCIgWyhuZ01vZGVsKV09XCJtZW51TW9kZVwiIGlucHV0SWQ9XCJtb2RlNVwiPjwvcC1yYWRpb0J1dHRvbj5cclxuXHRcdFx0XHQ8bGFiZWwgZm9yPVwibW9kZTRcIj5Ib3Jpem9udGFsPC9sYWJlbD5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L2Rpdj5cclxuXHRcdDxoNT5NZW51IFRoZW1lPC9oNT5cclxuXHRcdDxkaXYgY2xhc3M9XCJmaWVsZC1yYWRpb2J1dHRvblwiPlxyXG5cdFx0XHQ8cC1yYWRpb0J1dHRvblxyXG5cdFx0XHRcdG5hbWU9XCJtZW51VGhlbWVcIlxyXG5cdFx0XHRcdHZhbHVlPVwiY29sb3JTY2hlbWVcIlxyXG5cdFx0XHRcdFsobmdNb2RlbCldPVwibWVudVRoZW1lXCJcclxuXHRcdFx0XHRpbnB1dElkPVwibWVudXRoZW1lLWNvbG9yc2NoZW1lXCI+PC9wLXJhZGlvQnV0dG9uPlxyXG5cdFx0XHQ8bGFiZWwgZm9yPVwibWVudXRoZW1lLWNvbG9yc2NoZW1lXCI+Q29sb3IgU2NoZW1lPC9sYWJlbD5cclxuXHRcdDwvZGl2PlxyXG5cdFx0PGRpdiBjbGFzcz1cImZpZWxkLXJhZGlvYnV0dG9uXCI+XHJcblx0XHRcdDxwLXJhZGlvQnV0dG9uXHJcblx0XHRcdFx0bmFtZT1cIm1lbnVUaGVtZVwiXHJcblx0XHRcdFx0dmFsdWU9XCJwcmltYXJ5Q29sb3JcIlxyXG5cdFx0XHRcdFsobmdNb2RlbCldPVwibWVudVRoZW1lXCJcclxuXHRcdFx0XHRpbnB1dElkPVwibWVudXRoZW1lLXByaW1hcnljb2xvclwiPjwvcC1yYWRpb0J1dHRvbj5cclxuXHRcdFx0PGxhYmVsIGZvcj1cIm1lbnV0aGVtZS1wcmltYXJ5Y29sb3JcIj5QcmltYXJ5IENvbG9yPC9sYWJlbD5cclxuXHRcdDwvZGl2PlxyXG5cdFx0PGRpdiBjbGFzcz1cImZpZWxkLXJhZGlvYnV0dG9uXCI+XHJcblx0XHRcdDxwLXJhZGlvQnV0dG9uXHJcblx0XHRcdFx0bmFtZT1cIm1lbnVUaGVtZVwiXHJcblx0XHRcdFx0dmFsdWU9XCJ0cmFuc3BhcmVudFwiXHJcblx0XHRcdFx0WyhuZ01vZGVsKV09XCJtZW51VGhlbWVcIlxyXG5cdFx0XHRcdGlucHV0SWQ9XCJtZW51dGhlbWUtdHJhbnNwYXJlbnRcIj48L3AtcmFkaW9CdXR0b24+XHJcblx0XHRcdDxsYWJlbCBmb3I9XCJtZW51dGhlbWUtdHJhbnNwYXJlbnRcIj5UcmFuc3BhcmVudDwvbGFiZWw+XHJcblx0XHQ8L2Rpdj5cclxuXHR9XHJcblxyXG5cdDxoNT5Db2xvciBTY2hlbWU8L2g1PlxyXG5cdDxkaXYgY2xhc3M9XCJmaWVsZC1yYWRpb2J1dHRvblwiPlxyXG5cdFx0PHAtcmFkaW9CdXR0b24gbmFtZT1cImNvbG9yU2NoZW1lXCIgdmFsdWU9XCJsaWdodFwiIFsobmdNb2RlbCldPVwiY29sb3JTY2hlbWVcIiBpbnB1dElkPVwibW9kZS1saWdodFwiPjwvcC1yYWRpb0J1dHRvbj5cclxuXHRcdDxsYWJlbCBmb3I9XCJtb2RlLWxpZ2h0XCI+TGlnaHQ8L2xhYmVsPlxyXG5cdDwvZGl2PlxyXG5cdDxkaXYgY2xhc3M9XCJmaWVsZC1yYWRpb2J1dHRvblwiPlxyXG5cdFx0PHAtcmFkaW9CdXR0b24gbmFtZT1cImNvbG9yU2NoZW1lXCIgdmFsdWU9XCJkaW1cIiBbKG5nTW9kZWwpXT1cImNvbG9yU2NoZW1lXCIgaW5wdXRJZD1cIm1vZGUtZGltXCI+PC9wLXJhZGlvQnV0dG9uPlxyXG5cdFx0PGxhYmVsIGZvcj1cIm1vZGUtZGltXCI+RGltPC9sYWJlbD5cclxuXHQ8L2Rpdj5cclxuXHQ8ZGl2IGNsYXNzPVwiZmllbGQtcmFkaW9idXR0b25cIj5cclxuXHRcdDxwLXJhZGlvQnV0dG9uIG5hbWU9XCJjb2xvclNjaGVtZVwiIHZhbHVlPVwiZGFya1wiIFsobmdNb2RlbCldPVwiY29sb3JTY2hlbWVcIiBpbnB1dElkPVwibW9kZS1kYXJrXCI+PC9wLXJhZGlvQnV0dG9uPlxyXG5cdFx0PGxhYmVsIGZvcj1cIm1vZGUtZGFya1wiPkRhcms8L2xhYmVsPlxyXG5cdDwvZGl2PlxyXG5cclxuXHRAaWYgKCFtaW5pbWFsKSB7XHJcblx0XHQ8aDU+SW5wdXQgU3R5bGU8L2g1PlxyXG5cdFx0PGRpdiBjbGFzcz1cImZsZXhcIj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImZpZWxkLXJhZGlvYnV0dG9uIGZsZXgtMVwiPlxyXG5cdFx0XHRcdDxwLXJhZGlvQnV0dG9uXHJcblx0XHRcdFx0XHRuYW1lPVwiaW5wdXRTdHlsZVwiXHJcblx0XHRcdFx0XHR2YWx1ZT1cIm91dGxpbmVkXCJcclxuXHRcdFx0XHRcdFsobmdNb2RlbCldPVwiaW5wdXRTdHlsZVwiXHJcblx0XHRcdFx0XHRpbnB1dElkPVwib3V0bGluZWRfaW5wdXRcIj48L3AtcmFkaW9CdXR0b24+XHJcblx0XHRcdFx0PGxhYmVsIGZvcj1cIm91dGxpbmVkX2lucHV0XCI+T3V0bGluZWQ8L2xhYmVsPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImZpZWxkLXJhZGlvYnV0dG9uIGZsZXgtMVwiPlxyXG5cdFx0XHRcdDxwLXJhZGlvQnV0dG9uIG5hbWU9XCJpbnB1dFN0eWxlXCIgdmFsdWU9XCJmaWxsZWRcIiBbKG5nTW9kZWwpXT1cImlucHV0U3R5bGVcIiBpbnB1dElkPVwiZmlsbGVkX2lucHV0XCI+PC9wLXJhZGlvQnV0dG9uPlxyXG5cdFx0XHRcdDxsYWJlbCBmb3I9XCJmaWxsZWRfaW5wdXRcIj5GaWxsZWQ8L2xhYmVsPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdDwvZGl2PlxyXG5cdFx0PGg1PlJpcHBsZSBFZmZlY3Q8L2g1PlxyXG5cdFx0PHAtaW5wdXRTd2l0Y2ggWyhuZ01vZGVsKV09XCJyaXBwbGVcIj48L3AtaW5wdXRTd2l0Y2g+XHJcblx0fVxyXG48L3Atc2lkZWJhcj5cclxuIl19