@ng-atomic/common 16.2.0 → 17.0.0

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 (265) hide show
  1. package/directives/fallback-src/fallback-src.directive.d.ts +9 -0
  2. package/directives/fallback-src/index.d.ts +1 -0
  3. package/esm2022/directives/fallback-src/fallback-src.directive.mjs +25 -0
  4. package/esm2022/directives/fallback-src/index.mjs +2 -0
  5. package/esm2022/directives/fallback-src/ng-atomic-common-directives-fallback-src.mjs +5 -0
  6. package/esm2022/directives/ios-safari-scroll-buggyfill/ios-safari-scroll-buggyfill.directive.mjs +4 -4
  7. package/esm2022/directives/ios-safari-scroll-buggyfill/ios-safari-scroll-buggyfill.module.mjs +5 -5
  8. package/esm2022/interceptors/authorization/authorization.interceptor.mjs +4 -4
  9. package/esm2022/interceptors/index.mjs +2 -0
  10. package/esm2022/interceptors/interceptors.module.mjs +54 -0
  11. package/esm2022/interceptors/ng-atomic-common-interceptors.mjs +5 -0
  12. package/esm2022/interceptors/throttle/throttle.interceptor.mjs +8 -8
  13. package/esm2022/interceptors/token/authorization.interceptor.mjs +4 -4
  14. package/esm2022/models/index.mjs +1 -1
  15. package/esm2022/pipes/actions/actions.pipe.mjs +4 -4
  16. package/esm2022/pipes/data-accessor/data-accessor.pipe.mjs +14 -14
  17. package/esm2022/pipes/domain/domain.pipe.mjs +50 -21
  18. package/esm2022/pipes/error/error.pipe.mjs +4 -4
  19. package/esm2022/pipes/grouped-by/grouped-by.pipe.mjs +6 -4
  20. package/esm2022/pipes/index/index.mjs +2 -0
  21. package/esm2022/pipes/index/index.pipe.mjs +29 -0
  22. package/esm2022/pipes/index/ng-atomic-common-pipes-index.mjs +5 -0
  23. package/esm2022/pipes/index-length/index-length.pipe.mjs +22 -0
  24. package/esm2022/pipes/index-length/index.mjs +2 -0
  25. package/esm2022/pipes/index-length/ng-atomic-common-pipes-index-length.mjs +5 -0
  26. package/esm2022/pipes/keys/keys.pipe.mjs +4 -4
  27. package/esm2022/pipes/page/index.mjs +2 -0
  28. package/esm2022/pipes/page/ng-atomic-common-pipes-page.mjs +5 -0
  29. package/esm2022/pipes/page/page.pipe.mjs +25 -0
  30. package/esm2022/pipes/pagination/pagination.pipe.mjs +9 -9
  31. package/esm2022/pipes/query/query.pipe.mjs +14 -7
  32. package/esm2022/pipes/secret/index.mjs +2 -0
  33. package/esm2022/pipes/secret/ng-atomic-common-pipes-secret.mjs +5 -0
  34. package/esm2022/pipes/secret/secret.pipe.mjs +21 -0
  35. package/esm2022/pipes/select-id/select-id.pipe.mjs +6 -6
  36. package/esm2022/pipes/signal/signal.pipe.mjs +8 -4
  37. package/esm2022/pipes/smart-exp/smart-exp.module.mjs +5 -5
  38. package/esm2022/pipes/smart-exp/smart-exp.pipe.mjs +6 -6
  39. package/esm2022/pipes/smart-field/smart-field.pipe.mjs +21 -21
  40. package/esm2022/pipes/sort-by/index.mjs +2 -0
  41. package/esm2022/pipes/sort-by/ng-atomic-common-pipes-sort-by.mjs +5 -0
  42. package/esm2022/pipes/sort-by/sort-by.pipe.mjs +32 -0
  43. package/esm2022/pipes/yen/yen.pipe.mjs +4 -4
  44. package/esm2022/services/auth/auth.service.mjs +35 -20
  45. package/esm2022/services/chips-manager/chips.manager.mjs +4 -4
  46. package/esm2022/services/csv/csv.service.mjs +4 -4
  47. package/esm2022/services/form/pagination/pagination.service.mjs +4 -4
  48. package/esm2022/services/form/sort/sort.service.mjs +5 -5
  49. package/esm2022/services/loading/loading.service.mjs +42 -21
  50. package/esm2022/services/navigation-history/index.mjs +2 -0
  51. package/esm2022/services/navigation-history/navigation-history.service.mjs +50 -0
  52. package/esm2022/services/navigation-history/ng-atomic-common-services-navigation-history.mjs +5 -0
  53. package/esm2022/services/query-resolver/query-resolver.service.mjs +87 -25
  54. package/esm2022/services/root-property/index.mjs +2 -0
  55. package/esm2022/services/root-property/ng-atomic-common-services-root-property.mjs +5 -0
  56. package/esm2022/services/root-property/root-property.service.mjs +122 -0
  57. package/esm2022/services/router/index.mjs +2 -0
  58. package/esm2022/services/router/ng-atomic-common-services-router.mjs +5 -0
  59. package/esm2022/services/router/router.service.mjs +25 -0
  60. package/esm2022/services/secret/index.mjs +2 -0
  61. package/esm2022/services/secret/ng-atomic-common-services-secret.mjs +5 -0
  62. package/esm2022/services/secret/secret.service.mjs +16 -0
  63. package/esm2022/services/side-app/index.mjs +2 -0
  64. package/esm2022/services/side-app/ng-atomic-common-services-side-app.mjs +5 -0
  65. package/esm2022/services/side-app/side-app.service.mjs +25 -0
  66. package/esm2022/services/side-nav-mode/index.mjs +2 -0
  67. package/esm2022/services/side-nav-mode/ng-atomic-common-services-side-nav-mode.mjs +5 -0
  68. package/esm2022/services/side-nav-mode/side-nav-mode.service.mjs +27 -0
  69. package/esm2022/services/snack-bar/snack-bar.module.mjs +5 -5
  70. package/esm2022/services/snack-bar/snack-bar.service.mjs +6 -6
  71. package/esm2022/services/ui/index.mjs +2 -1
  72. package/esm2022/services/ui/ui.helpers.mjs +186 -0
  73. package/esm2022/services/ui/ui.service.mjs +55 -173
  74. package/esm2022/stores/entities/di.mjs +56 -0
  75. package/esm2022/stores/entities/entity-store-manager.mjs +42 -0
  76. package/esm2022/stores/entities/entity-store.mjs +127 -0
  77. package/esm2022/stores/entities/index.mjs +6 -2
  78. package/esm2022/stores/entities/proxy-id.service.mjs +29 -0
  79. package/esm2022/stores/entities/task-composer.mjs +71 -0
  80. package/esm2022/stores/pagination/pagination.store.mjs +5 -5
  81. package/esm2022/stores/query/query.store.mjs +7 -7
  82. package/esm2022/stores/selection/selection.store.mjs +5 -5
  83. package/esm2022/stores/sort/sort.store.mjs +5 -5
  84. package/esm2022/utils/form/form.mjs +26 -0
  85. package/esm2022/utils/form/index.mjs +2 -0
  86. package/esm2022/utils/get/get.mjs +2 -1
  87. package/esm2022/utils/index.mjs +5 -2
  88. package/esm2022/utils/inject/index.mjs +2 -0
  89. package/esm2022/utils/inject/inject.mjs +120 -0
  90. package/esm2022/utils/mat-dayjs-date/dayjs-date.adapter.mjs +3 -2
  91. package/esm2022/utils/mat-dayjs-date/dayjs-date.module.mjs +22 -26
  92. package/esm2022/utils/page/page.mjs +1 -1
  93. package/esm2022/utils/router/index.mjs +2 -0
  94. package/esm2022/utils/router/router.mjs +54 -0
  95. package/esm2022/utils/time.mjs +8 -0
  96. package/fesm2022/ng-atomic-common-directives-fallback-src.mjs +32 -0
  97. package/fesm2022/ng-atomic-common-directives-fallback-src.mjs.map +1 -0
  98. package/fesm2022/ng-atomic-common-directives-ios-safari-scroll-buggyfill.mjs +7 -7
  99. package/fesm2022/ng-atomic-common-directives-ios-safari-scroll-buggyfill.mjs.map +1 -1
  100. package/fesm2022/ng-atomic-common-interceptors-authorization.mjs +3 -3
  101. package/fesm2022/ng-atomic-common-interceptors-authorization.mjs.map +1 -1
  102. package/fesm2022/ng-atomic-common-interceptors-throttle.mjs +7 -7
  103. package/fesm2022/ng-atomic-common-interceptors-throttle.mjs.map +1 -1
  104. package/fesm2022/ng-atomic-common-interceptors-token.mjs +3 -3
  105. package/fesm2022/ng-atomic-common-interceptors-token.mjs.map +1 -1
  106. package/fesm2022/ng-atomic-common-interceptors.mjs +61 -0
  107. package/fesm2022/ng-atomic-common-interceptors.mjs.map +1 -0
  108. package/fesm2022/ng-atomic-common-pipes-actions.mjs +3 -3
  109. package/fesm2022/ng-atomic-common-pipes-actions.mjs.map +1 -1
  110. package/fesm2022/ng-atomic-common-pipes-data-accessor.mjs +14 -14
  111. package/fesm2022/ng-atomic-common-pipes-data-accessor.mjs.map +1 -1
  112. package/fesm2022/ng-atomic-common-pipes-domain.mjs +50 -21
  113. package/fesm2022/ng-atomic-common-pipes-domain.mjs.map +1 -1
  114. package/fesm2022/ng-atomic-common-pipes-error.mjs +3 -3
  115. package/fesm2022/ng-atomic-common-pipes-error.mjs.map +1 -1
  116. package/fesm2022/ng-atomic-common-pipes-grouped-by.mjs +5 -3
  117. package/fesm2022/ng-atomic-common-pipes-grouped-by.mjs.map +1 -1
  118. package/fesm2022/ng-atomic-common-pipes-index-length.mjs +29 -0
  119. package/fesm2022/ng-atomic-common-pipes-index-length.mjs.map +1 -0
  120. package/fesm2022/ng-atomic-common-pipes-index.mjs +36 -0
  121. package/fesm2022/ng-atomic-common-pipes-index.mjs.map +1 -0
  122. package/fesm2022/ng-atomic-common-pipes-keys.mjs +3 -3
  123. package/fesm2022/ng-atomic-common-pipes-keys.mjs.map +1 -1
  124. package/fesm2022/ng-atomic-common-pipes-page.mjs +32 -0
  125. package/fesm2022/ng-atomic-common-pipes-page.mjs.map +1 -0
  126. package/fesm2022/ng-atomic-common-pipes-pagination.mjs +8 -8
  127. package/fesm2022/ng-atomic-common-pipes-pagination.mjs.map +1 -1
  128. package/fesm2022/ng-atomic-common-pipes-query.mjs +14 -7
  129. package/fesm2022/ng-atomic-common-pipes-query.mjs.map +1 -1
  130. package/fesm2022/ng-atomic-common-pipes-secret.mjs +28 -0
  131. package/fesm2022/ng-atomic-common-pipes-secret.mjs.map +1 -0
  132. package/fesm2022/ng-atomic-common-pipes-select-id.mjs +5 -5
  133. package/fesm2022/ng-atomic-common-pipes-select-id.mjs.map +1 -1
  134. package/fesm2022/ng-atomic-common-pipes-signal.mjs +8 -4
  135. package/fesm2022/ng-atomic-common-pipes-signal.mjs.map +1 -1
  136. package/fesm2022/ng-atomic-common-pipes-smart-exp.mjs +9 -9
  137. package/fesm2022/ng-atomic-common-pipes-smart-exp.mjs.map +1 -1
  138. package/fesm2022/ng-atomic-common-pipes-smart-field.mjs +21 -21
  139. package/fesm2022/ng-atomic-common-pipes-smart-field.mjs.map +1 -1
  140. package/fesm2022/ng-atomic-common-pipes-sort-by.mjs +39 -0
  141. package/fesm2022/ng-atomic-common-pipes-sort-by.mjs.map +1 -0
  142. package/fesm2022/ng-atomic-common-pipes-yen.mjs +3 -3
  143. package/fesm2022/ng-atomic-common-pipes-yen.mjs.map +1 -1
  144. package/fesm2022/ng-atomic-common-services-auth.mjs +35 -20
  145. package/fesm2022/ng-atomic-common-services-auth.mjs.map +1 -1
  146. package/fesm2022/ng-atomic-common-services-chips-manager.mjs +3 -3
  147. package/fesm2022/ng-atomic-common-services-chips-manager.mjs.map +1 -1
  148. package/fesm2022/ng-atomic-common-services-csv.mjs +3 -3
  149. package/fesm2022/ng-atomic-common-services-csv.mjs.map +1 -1
  150. package/fesm2022/ng-atomic-common-services-form-pagination.mjs +3 -3
  151. package/fesm2022/ng-atomic-common-services-form-pagination.mjs.map +1 -1
  152. package/fesm2022/ng-atomic-common-services-form-sort.mjs +4 -4
  153. package/fesm2022/ng-atomic-common-services-form-sort.mjs.map +1 -1
  154. package/fesm2022/ng-atomic-common-services-loading.mjs +42 -21
  155. package/fesm2022/ng-atomic-common-services-loading.mjs.map +1 -1
  156. package/fesm2022/ng-atomic-common-services-navigation-history.mjs +57 -0
  157. package/fesm2022/ng-atomic-common-services-navigation-history.mjs.map +1 -0
  158. package/fesm2022/ng-atomic-common-services-query-resolver.mjs +86 -25
  159. package/fesm2022/ng-atomic-common-services-query-resolver.mjs.map +1 -1
  160. package/fesm2022/ng-atomic-common-services-root-property.mjs +129 -0
  161. package/fesm2022/ng-atomic-common-services-root-property.mjs.map +1 -0
  162. package/fesm2022/ng-atomic-common-services-router.mjs +32 -0
  163. package/fesm2022/ng-atomic-common-services-router.mjs.map +1 -0
  164. package/fesm2022/ng-atomic-common-services-secret.mjs +23 -0
  165. package/fesm2022/ng-atomic-common-services-secret.mjs.map +1 -0
  166. package/fesm2022/ng-atomic-common-services-side-app.mjs +32 -0
  167. package/fesm2022/ng-atomic-common-services-side-app.mjs.map +1 -0
  168. package/fesm2022/ng-atomic-common-services-side-nav-mode.mjs +34 -0
  169. package/fesm2022/ng-atomic-common-services-side-nav-mode.mjs.map +1 -0
  170. package/fesm2022/ng-atomic-common-services-snack-bar.mjs +9 -9
  171. package/fesm2022/ng-atomic-common-services-snack-bar.mjs.map +1 -1
  172. package/fesm2022/ng-atomic-common-services-ui.mjs +237 -174
  173. package/fesm2022/ng-atomic-common-services-ui.mjs.map +1 -1
  174. package/fesm2022/ng-atomic-common-stores-entities.mjs +297 -19
  175. package/fesm2022/ng-atomic-common-stores-entities.mjs.map +1 -1
  176. package/fesm2022/ng-atomic-common-stores-pagination.mjs +4 -4
  177. package/fesm2022/ng-atomic-common-stores-pagination.mjs.map +1 -1
  178. package/fesm2022/ng-atomic-common-stores-query.mjs +6 -6
  179. package/fesm2022/ng-atomic-common-stores-query.mjs.map +1 -1
  180. package/fesm2022/ng-atomic-common-stores-selection.mjs +4 -4
  181. package/fesm2022/ng-atomic-common-stores-selection.mjs.map +1 -1
  182. package/fesm2022/ng-atomic-common-stores-sort.mjs +4 -4
  183. package/fesm2022/ng-atomic-common-stores-sort.mjs.map +1 -1
  184. package/fesm2022/ng-atomic-common-utils-page.mjs.map +1 -1
  185. package/fesm2022/ng-atomic-common-utils.mjs +227 -124
  186. package/fesm2022/ng-atomic-common-utils.mjs.map +1 -1
  187. package/interceptors/index.d.ts +1 -0
  188. package/interceptors/interceptors.module.d.ts +7 -0
  189. package/models/index.d.ts +34 -0
  190. package/package.json +89 -19
  191. package/pipes/actions/actions.pipe.d.ts +2 -1
  192. package/pipes/data-accessor/data-accessor.pipe.d.ts +9 -5
  193. package/pipes/domain/domain.pipe.d.ts +52 -6
  194. package/pipes/error/error.pipe.d.ts +2 -2
  195. package/pipes/grouped-by/grouped-by.pipe.d.ts +3 -2
  196. package/pipes/index/index.d.ts +1 -0
  197. package/pipes/index/index.pipe.d.ts +11 -0
  198. package/pipes/index-length/index-length.pipe.d.ts +10 -0
  199. package/pipes/index-length/index.d.ts +1 -0
  200. package/pipes/keys/keys.pipe.d.ts +2 -1
  201. package/pipes/page/index.d.ts +1 -0
  202. package/pipes/page/page.pipe.d.ts +11 -0
  203. package/pipes/query/query.pipe.d.ts +5 -4
  204. package/pipes/secret/index.d.ts +1 -0
  205. package/pipes/secret/secret.pipe.d.ts +8 -0
  206. package/pipes/select-id/select-id.pipe.d.ts +2 -2
  207. package/pipes/signal/signal.pipe.d.ts +3 -2
  208. package/pipes/smart-exp/smart-exp.pipe.d.ts +2 -1
  209. package/pipes/smart-field/smart-field.pipe.d.ts +48 -15
  210. package/pipes/sort-by/index.d.ts +1 -0
  211. package/pipes/sort-by/sort-by.pipe.d.ts +17 -0
  212. package/services/auth/auth.service.d.ts +32 -25
  213. package/services/loading/loading.service.d.ts +20 -8
  214. package/services/navigation-history/index.d.ts +1 -0
  215. package/services/navigation-history/navigation-history.service.d.ts +14 -0
  216. package/services/query-resolver/query-resolver.service.d.ts +25 -8
  217. package/services/root-property/index.d.ts +1 -0
  218. package/services/root-property/root-property.service.d.ts +91 -0
  219. package/services/router/index.d.ts +1 -0
  220. package/services/router/router.service.d.ts +10 -0
  221. package/services/secret/index.d.ts +1 -0
  222. package/services/secret/secret.service.d.ts +6 -0
  223. package/services/side-app/index.d.ts +1 -0
  224. package/services/side-app/side-app.service.d.ts +9 -0
  225. package/services/side-nav-mode/index.d.ts +1 -0
  226. package/services/side-nav-mode/side-nav-mode.service.d.ts +11 -0
  227. package/services/snack-bar/snack-bar.service.d.ts +1 -1
  228. package/services/ui/index.d.ts +1 -0
  229. package/services/ui/ui.helpers.d.ts +28 -0
  230. package/services/ui/ui.service.d.ts +42 -47
  231. package/stores/entities/di.d.ts +15 -0
  232. package/stores/entities/entity-store-manager.d.ts +12 -0
  233. package/stores/entities/entity-store.d.ts +86 -0
  234. package/stores/entities/index.d.ts +5 -1
  235. package/stores/entities/proxy-id.service.d.ts +10 -0
  236. package/stores/entities/task-composer.d.ts +35 -0
  237. package/stores/query/query.store.d.ts +3 -3
  238. package/utils/form/form.d.ts +10 -0
  239. package/utils/form/index.d.ts +1 -0
  240. package/utils/get/get.d.ts +1 -0
  241. package/utils/index.d.ts +4 -1
  242. package/utils/inject/index.d.ts +1 -0
  243. package/utils/inject/inject.d.ts +50 -0
  244. package/utils/mat-dayjs-date/dayjs-date.module.d.ts +2 -5
  245. package/utils/page/page.d.ts +1 -1
  246. package/utils/router/index.d.ts +1 -0
  247. package/utils/router/router.d.ts +4 -0
  248. package/utils/time.d.ts +1 -0
  249. package/esm2022/pipes/smart-sort-by/index.mjs +0 -4
  250. package/esm2022/pipes/smart-sort-by/ng-atomic-common-pipes-smart-sort-by.mjs +0 -5
  251. package/esm2022/pipes/smart-sort-by/smart-sort-by.module.mjs +0 -24
  252. package/esm2022/pipes/smart-sort-by/smart-sort-by.pipe.mjs +0 -28
  253. package/esm2022/pipes/smart-sort-by/smart-sort-by.transformer.mjs +0 -5
  254. package/esm2022/stores/entities/entities.store.mjs +0 -32
  255. package/esm2022/utils/query/index.mjs +0 -2
  256. package/esm2022/utils/query/query.resolver.mjs +0 -100
  257. package/fesm2022/ng-atomic-common-pipes-smart-sort-by.mjs +0 -60
  258. package/fesm2022/ng-atomic-common-pipes-smart-sort-by.mjs.map +0 -1
  259. package/pipes/smart-sort-by/index.d.ts +0 -3
  260. package/pipes/smart-sort-by/smart-sort-by.module.d.ts +0 -8
  261. package/pipes/smart-sort-by/smart-sort-by.pipe.d.ts +0 -11
  262. package/pipes/smart-sort-by/smart-sort-by.transformer.d.ts +0 -2
  263. package/stores/entities/entities.store.d.ts +0 -19
  264. package/utils/query/index.d.ts +0 -1
  265. package/utils/query/query.resolver.d.ts +0 -2
@@ -0,0 +1,122 @@
1
+ import { isPlatformBrowser, isPlatformServer } from '@angular/common';
2
+ import { Directive, ENVIRONMENT_INITIALIZER, ElementRef, Injectable, PLATFORM_ID, effect, inject } from '@angular/core';
3
+ import { toObservable } from '@angular/core/rxjs-interop';
4
+ import { makeConfig } from '@ng-atomic/common/services/ui';
5
+ import { delay, filter, map, of } from 'rxjs';
6
+ import * as i0 from "@angular/core";
7
+ export class RootPropertyService {
8
+ static { this.Config = makeConfig(() => {
9
+ return (_, context) => {
10
+ switch (context.breakpoint) {
11
+ case 'xSmall': return {
12
+ '--primary-color': '#404040',
13
+ '--on-primary-color': '#f0f0f0',
14
+ '--surface-color': '#fff',
15
+ '--on-surface-color': '#404040',
16
+ '--background-color': '#fff',
17
+ '--menu-width': '220px',
18
+ '--page-width-lv1': '100vw',
19
+ '--page-width-lv2': '100vw',
20
+ '--page-width-lv3': '100vw',
21
+ '--page-width-lv4': '100vw',
22
+ '--page-height-lv1': '100vh',
23
+ };
24
+ case 'small':
25
+ case 'medium': return {
26
+ '--primary-color': '#404040',
27
+ '--on-primary-color': '#f0f0f0',
28
+ '--surface-color': '#fff',
29
+ '--on-surface-color': '#404040',
30
+ '--background-color': '#fff',
31
+ '--menu-width': '64px',
32
+ '--page-width-lv1': '360px',
33
+ '--page-width-lv2': 'max(calc(min(100vw, 1600px) - 360px - 64px), 360px)',
34
+ '--page-width-lv3': 'max(calc(min(100vw, 1600px) - 64px), 360px)',
35
+ '--page-width-lv4': '100vw',
36
+ '--page-height-lv1': '100vh',
37
+ };
38
+ case 'large':
39
+ case 'xLarge': return {
40
+ '--primary-color': '#404040',
41
+ '--on-primary-color': '#f0f0f0',
42
+ '--surface-color': '#fff',
43
+ '--on-surface-color': '#404040',
44
+ '--background-color': '#fff',
45
+ '--menu-width': '220px',
46
+ '--page-width-lv1': '360px',
47
+ '--page-width-lv2': 'max(calc(min(100vw, 1600px) - 360px - 220px), 360px)',
48
+ '--page-width-lv3': 'max(calc(min(100vw, 1600px) - 220px), 360px)',
49
+ '--page-width-lv4': '100vw',
50
+ '--page-height-lv1': '100vh',
51
+ };
52
+ }
53
+ };
54
+ }, ['root', 'properties']); }
55
+ constructor() {
56
+ this.config = RootPropertyService.Config.inject();
57
+ this.platformId = inject(PLATFORM_ID);
58
+ effect(() => {
59
+ if (isPlatformBrowser(this.platformId)) {
60
+ for (const [key, value] of Object.entries(this.config?.() ?? {})) {
61
+ document.documentElement.style.setProperty(key, value);
62
+ }
63
+ }
64
+ });
65
+ }
66
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: RootPropertyService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
67
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: RootPropertyService, providedIn: 'root' }); }
68
+ }
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: RootPropertyService, decorators: [{
70
+ type: Injectable,
71
+ args: [{ providedIn: 'root' }]
72
+ }], ctorParameters: () => [] });
73
+ export function provideRootProperty(resolverFactoryFactory) {
74
+ return [
75
+ {
76
+ provide: ENVIRONMENT_INITIALIZER,
77
+ useFactory: () => {
78
+ return () => inject(RootPropertyService);
79
+ },
80
+ multi: true,
81
+ },
82
+ RootPropertyService.Config.provide(resolverFactoryFactory),
83
+ ];
84
+ }
85
+ export class NgAtomicStyleDirective {
86
+ #el;
87
+ constructor(rootPropertyService) {
88
+ this.rootPropertyService = rootPropertyService;
89
+ this.#el = inject(ElementRef);
90
+ this.platformId = inject(PLATFORM_ID);
91
+ effect(() => {
92
+ for (const [key, value] of Object.entries(this.rootPropertyService.config?.() ?? {})) {
93
+ this.#el.nativeElement.style.setProperty(key, value);
94
+ }
95
+ });
96
+ }
97
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: NgAtomicStyleDirective, deps: [{ token: RootPropertyService }], target: i0.ɵɵFactoryTarget.Directive }); }
98
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.2", type: NgAtomicStyleDirective, isStandalone: true, selector: "[atomicStyle]", ngImport: i0 }); }
99
+ }
100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: NgAtomicStyleDirective, decorators: [{
101
+ type: Directive,
102
+ args: [{ standalone: true, selector: '[atomicStyle]' }]
103
+ }], ctorParameters: () => [{ type: RootPropertyService }] });
104
+ export class RootPropertyGuard {
105
+ constructor() {
106
+ this.properties = RootPropertyService.Config.inject();
107
+ this.properties$ = toObservable(this.properties);
108
+ this.platformId = inject(PLATFORM_ID);
109
+ }
110
+ canActivate() {
111
+ if (isPlatformServer(this.platformId))
112
+ return of(null);
113
+ return this.properties$.pipe(filter(properties => properties['--background-color'] === '#f0f0f0'), delay(500), map(() => true));
114
+ }
115
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: RootPropertyGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
116
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: RootPropertyGuard, providedIn: 'root' }); }
117
+ }
118
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: RootPropertyGuard, decorators: [{
119
+ type: Injectable,
120
+ args: [{ providedIn: 'root' }]
121
+ }] });
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdC1wcm9wZXJ0eS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9yb290LXByb3BlcnR5L3Jvb3QtcHJvcGVydHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFZLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEksT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQWMsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUcxRCxNQUFNLE9BQU8sbUJBQW1CO2FBQ2QsV0FBTSxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDdkMsT0FBTyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUNwQixRQUFRLE9BQU8sQ0FBQyxVQUFVLEVBQUU7Z0JBQzFCLEtBQUssUUFBUSxDQUFDLENBQUMsT0FBTztvQkFDcEIsaUJBQWlCLEVBQUUsU0FBUztvQkFDNUIsb0JBQW9CLEVBQUUsU0FBUztvQkFDL0IsaUJBQWlCLEVBQUUsTUFBTTtvQkFDekIsb0JBQW9CLEVBQUUsU0FBUztvQkFDL0Isb0JBQW9CLEVBQUUsTUFBTTtvQkFDNUIsY0FBYyxFQUFFLE9BQU87b0JBQ3ZCLGtCQUFrQixFQUFFLE9BQU87b0JBQzNCLGtCQUFrQixFQUFFLE9BQU87b0JBQzNCLGtCQUFrQixFQUFFLE9BQU87b0JB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c1BsYXRmb3JtU2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgRU5WSVJPTk1FTlRfSU5JVElBTElaRVIsIEVsZW1lbnRSZWYsIEluamVjdGFibGUsIFBMQVRGT1JNX0lELCBQcm92aWRlciwgZWZmZWN0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IG1ha2VDb25maWcgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9zZXJ2aWNlcy91aSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBkZWxheSwgZmlsdGVyLCBtYXAsIG9mIH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgUm9vdFByb3BlcnR5U2VydmljZSB7XG4gIHN0YXRpYyByZWFkb25seSBDb25maWcgPSBtYWtlQ29uZmlnKCgpID0+IHtcbiAgICByZXR1cm4gKF8sIGNvbnRleHQpID0+IHtcbiAgICAgIHN3aXRjaCAoY29udGV4dC5icmVha3BvaW50KSB7XG4gICAgICAgIGNhc2UgJ3hTbWFsbCc6IHJldHVybiB7XG4gICAgICAgICAgJy0tcHJpbWFyeS1jb2xvcic6ICcjNDA0MDQwJyxcbiAgICAgICAgICAnLS1vbi1wcmltYXJ5LWNvbG9yJzogJyNmMGYwZjAnLFxuICAgICAgICAgICctLXN1cmZhY2UtY29sb3InOiAnI2ZmZicsXG4gICAgICAgICAgJy0tb24tc3VyZmFjZS1jb2xvcic6ICcjNDA0MDQwJyxcbiAgICAgICAgICAnLS1iYWNrZ3JvdW5kLWNvbG9yJzogJyNmZmYnLFxuICAgICAgICAgICctLW1lbnUtd2lkdGgnOiAnMjIwcHgnLFxuICAgICAgICAgICctLXBhZ2Utd2lkdGgtbHYxJzogJzEwMHZ3JyxcbiAgICAgICAgICAnLS1wYWdlLXdpZHRoLWx2Mic6ICcxMDB2dycsXG4gICAgICAgICAgJy0tcGFnZS13aWR0aC1sdjMnOiAnMTAwdncnLFxuICAgICAgICAgICctLXBhZ2Utd2lkdGgtbHY0JzogJzEwMHZ3JyxcbiAgICAgICAgICAnLS1wYWdlLWhlaWdodC1sdjEnOiAnMTAwdmgnLFxuICAgICAgICB9O1xuICAgICAgICBjYXNlICdzbWFsbCc6XG4gICAgICAgIGNhc2UgJ21lZGl1bSc6IHJldHVybiB7XG4gICAgICAgICAgJy0tcHJpbWFyeS1jb2xvcic6ICcjNDA0MDQwJyxcbiAgICAgICAgICAnLS1vbi1wcmltYXJ5LWNvbG9yJzogJyNmMGYwZjAnLFxuICAgICAgICAgICctLXN1cmZhY2UtY29sb3InOiAnI2ZmZicsXG4gICAgICAgICAgJy0tb24tc3VyZmFjZS1jb2xvcic6ICcjNDA0MDQwJyxcbiAgICAgICAgICAnLS1iYWNrZ3JvdW5kLWNvbG9yJzogJyNmZmYnLFxuICAgICAgICAgICctLW1lbnUtd2lkdGgnOiAnNjRweCcsXG4gICAgICAgICAgJy0tcGFnZS13aWR0aC1sdjEnOiAnMzYwcHgnLFxuICAgICAgICAgICctLXBhZ2Utd2lkdGgtbHYyJzogJ21heChjYWxjKG1pbigxMDB2dywgMTYwMHB4KSAtIDM2MHB4IC0gNjRweCksIDM2MHB4KScsXG4gICAgICAgICAgJy0tcGFnZS13aWR0aC1sdjMnOiAnbWF4KGNhbGMobWluKDEwMHZ3LCAxNjAwcHgpIC0gNjRweCksIDM2MHB4KScsXG4gICAgICAgICAgJy0tcGFnZS13aWR0aC1sdjQnOiAnMTAwdncnLFxuICAgICAgICAgICctLXBhZ2UtaGVpZ2h0LWx2MSc6ICcxMDB2aCcsXG4gICAgICAgIH07XG4gICAgICAgIGNhc2UgJ2xhcmdlJzpcbiAgICAgICAgY2FzZSAneExhcmdlJzogcmV0dXJuIHtcbiAgICAgICAgICAnLS1wcmltYXJ5LWNvbG9yJzogJyM0MDQwNDAnLFxuICAgICAgICAgICctLW9uLXByaW1hcnktY29sb3InOiAnI2YwZjBmMCcsXG4gICAgICAgICAgJy0tc3VyZmFjZS1jb2xvcic6ICcjZmZmJyxcbiAgICAgICAgICAnLS1vbi1zdXJmYWNlLWNvbG9yJzogJyM0MDQwNDAnLFxuICAgICAgICAgICctLWJhY2tncm91bmQtY29sb3InOiAnI2ZmZicsXG4gICAgICAgICAgJy0tbWVudS13aWR0aCc6ICcyMjBweCcsXG4gICAgICAgICAgJy0tcGFnZS13aWR0aC1sdjEnOiAnMzYwcHgnLFxuICAgICAgICAgICctLXBhZ2Utd2lkdGgtbHYyJzogJ21heChjYWxjKG1pbigxMDB2dywgMTYwMHB4KSAtIDM2MHB4IC0gMjIwcHgpLCAzNjBweCknLFxuICAgICAgICAgICctLXBhZ2Utd2lkdGgtbHYzJzogJ21heChjYWxjKG1pbigxMDB2dywgMTYwMHB4KSAtIDIyMHB4KSwgMzYwcHgpJyxcbiAgICAgICAgICAnLS1wYWdlLXdpZHRoLWx2NCc6ICcxMDB2dycsXG4gICAgICAgICAgJy0tcGFnZS1oZWlnaHQtbHYxJzogJzEwMHZoJyxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9O1xuICB9LCBbJ3Jvb3QnLCAncHJvcGVydGllcyddKTtcbiAgcmVhZG9ubHkgY29uZmlnID0gUm9vdFByb3BlcnR5U2VydmljZS5Db25maWcuaW5qZWN0KCk7XG5cbiAgcmVhZG9ubHkgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuY29uZmlnPy4oKSA/PyB7fSkpIHtcbiAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoa2V5LCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZVJvb3RQcm9wZXJ0eShcbiAgcmVzb2x2ZXJGYWN0b3J5RmFjdG9yeT86IFBhcmFtZXRlcnM8dHlwZW9mIFJvb3RQcm9wZXJ0eVNlcnZpY2UuQ29uZmlnLnByb3ZpZGU+WzBdLFxuKTogUHJvdmlkZXJbXSB7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogRU5WSVJPTk1FTlRfSU5JVElBTElaRVIsXG4gICAgICB1c2VGYWN0b3J5OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiAoKSA9PiBpbmplY3QoUm9vdFByb3BlcnR5U2VydmljZSk7XG4gICAgICB9LFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICBSb290UHJvcGVydHlTZXJ2aWNlLkNvbmZpZy5wcm92aWRlKHJlc29sdmVyRmFjdG9yeUZhY3RvcnkpLFxuICBdXG59XG5cbkBEaXJlY3RpdmUoeyBzdGFuZGFsb25lOiB0cnVlLCBzZWxlY3RvcjogJ1thdG9taWNTdHlsZV0nIH0pXG5leHBvcnQgY2xhc3MgTmdBdG9taWNTdHlsZURpcmVjdGl2ZSB7XG4gIHJlYWRvbmx5ICNlbCA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcmVhZG9ubHkgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb290UHJvcGVydHlTZXJ2aWNlOiBSb290UHJvcGVydHlTZXJ2aWNlKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMucm9vdFByb3BlcnR5U2VydmljZS5jb25maWc/LigpID8/IHt9KSkge1xuICAgICAgICB0aGlzLiNlbC5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KGtleSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgUm9vdFByb3BlcnR5R3VhcmQge1xuXHRyZWFkb25seSBwcm9wZXJ0aWVzID0gUm9vdFByb3BlcnR5U2VydmljZS5Db25maWcuaW5qZWN0KCk7XG5cdHJlYWRvbmx5IHByb3BlcnRpZXMkID0gdG9PYnNlcnZhYmxlKHRoaXMucHJvcGVydGllcyk7XG5cdHJlYWRvbmx5IHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuXG5cdGNhbkFjdGl2YXRlKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuXHRcdGlmIChpc1BsYXRmb3JtU2VydmVyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybiBvZihudWxsKTtcdFxuXHRcdHJldHVybiB0aGlzLnByb3BlcnRpZXMkLnBpcGUoXG5cdFx0XHRmaWx0ZXIocHJvcGVydGllcyA9PiBwcm9wZXJ0aWVzWyctLWJhY2tncm91bmQtY29sb3InXSAgPT09ICcjZjBmMGYwJyksXG5cdFx0XHRkZWxheSg1MDApLFxuXHRcdFx0bWFwKCgpID0+IHRydWUpLFxuXHRcdCk7XG5cdH1cbn0iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './router.service';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL3JvdXRlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9yb3V0ZXIuc2VydmljZSc7XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctYXRvbWljLWNvbW1vbi1zZXJ2aWNlcy1yb3V0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL3JvdXRlci9uZy1hdG9taWMtY29tbW9uLXNlcnZpY2VzLXJvdXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -0,0 +1,25 @@
1
+ import { Injectable, inject } from '@angular/core';
2
+ import { Router } from '@angular/router';
3
+ import * as i0 from "@angular/core";
4
+ export function walkActivatedRoute(route, callback) {
5
+ if (!callback(route))
6
+ return;
7
+ route.children.forEach(child => walkActivatedRoute(child, callback));
8
+ }
9
+ export class RouterService extends Router {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.router = inject(Router);
13
+ this.events$ = this.router.events;
14
+ }
15
+ back() {
16
+ history.back();
17
+ }
18
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: RouterService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
19
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: RouterService, providedIn: 'root' }); }
20
+ }
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: RouterService, decorators: [{
22
+ type: Injectable,
23
+ args: [{ providedIn: 'root' }]
24
+ }] });
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL3JvdXRlci9yb3V0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWtCLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUV6RCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsS0FBcUIsRUFBRSxRQUE0QztJQUNwRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU87SUFDN0IsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUN2RSxDQUFDO0FBR0QsTUFBTSxPQUFPLGFBQWMsU0FBUSxNQUFNO0lBRHpDOztRQUVXLFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEIsWUFBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0tBS3ZDO0lBSEMsSUFBSTtRQUNGLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUNoQixDQUFDOzhHQU5VLGFBQWE7a0hBQWIsYUFBYSxjQURELE1BQU07OzJGQUNsQixhQUFhO2tCQUR6QixVQUFVO21CQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmV4cG9ydCBmdW5jdGlvbiB3YWxrQWN0aXZhdGVkUm91dGUocm91dGU6IEFjdGl2YXRlZFJvdXRlLCBjYWxsYmFjazogKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSkgPT4gYm9vbGVhbik6IHZvaWQge1xuICBpZiAoIWNhbGxiYWNrKHJvdXRlKSkgcmV0dXJuO1xuICByb3V0ZS5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IHdhbGtBY3RpdmF0ZWRSb3V0ZShjaGlsZCwgY2FsbGJhY2spKTtcbn1cblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgUm91dGVyU2VydmljZSBleHRlbmRzIFJvdXRlciB7XG4gIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICByZWFkb25seSBldmVudHMkID0gdGhpcy5yb3V0ZXIuZXZlbnRzO1xuXG4gIGJhY2soKTogdm9pZCB7XG4gICAgaGlzdG9yeS5iYWNrKClcbiAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export * from './secret.service';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL3NlY3JldC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zZWNyZXQuc2VydmljZSc7XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctYXRvbWljLWNvbW1vbi1zZXJ2aWNlcy1zZWNyZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL3NlY3JldC9uZy1hdG9taWMtY29tbW9uLXNlcnZpY2VzLXNlY3JldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -0,0 +1,16 @@
1
+ import { Injectable, signal } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class SecretService {
4
+ constructor() {
5
+ this.isSecret = signal(false);
6
+ }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: SecretService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
8
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: SecretService, providedIn: 'root' }); }
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: SecretService, decorators: [{
11
+ type: Injectable,
12
+ args: [{
13
+ providedIn: 'root'
14
+ }]
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL3NlY3JldC9zZWNyZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLbkQsTUFBTSxPQUFPLGFBQWE7SUFIMUI7UUFJVyxhQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ25DOzhHQUZZLGFBQWE7a0hBQWIsYUFBYSxjQUZaLE1BQU07OzJGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFNlY3JldFNlcnZpY2Uge1xuICByZWFkb25seSBpc1NlY3JldCA9IHNpZ25hbChmYWxzZSk7XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './side-app.service';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL3NpZGUtYXBwL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NpZGUtYXBwLnNlcnZpY2UnO1xuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctYXRvbWljLWNvbW1vbi1zZXJ2aWNlcy1zaWRlLWFwcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvc2lkZS1hcHAvbmctYXRvbWljLWNvbW1vbi1zZXJ2aWNlcy1zaWRlLWFwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -0,0 +1,25 @@
1
+ import { Injectable, signal } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class SideAppService {
4
+ constructor() {
5
+ this.opened = signal(false);
6
+ }
7
+ toggle() {
8
+ this.opened.set(!this.opened());
9
+ }
10
+ collapse() {
11
+ this.opened.set(false);
12
+ }
13
+ expand() {
14
+ this.opened.set(true);
15
+ }
16
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: SideAppService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
17
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: SideAppService, providedIn: 'root' }); }
18
+ }
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: SideAppService, decorators: [{
20
+ type: Injectable,
21
+ args: [{
22
+ providedIn: 'root'
23
+ }]
24
+ }] });
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1hcHAuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvc2lkZS1hcHAvc2lkZS1hcHAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLbkQsTUFBTSxPQUFPLGNBQWM7SUFIM0I7UUFJVyxXQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBYWpDO0lBWEMsTUFBTTtRQUNKLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hCLENBQUM7OEdBYlUsY0FBYztrSEFBZCxjQUFjLGNBRmIsTUFBTTs7MkZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU2lkZUFwcFNlcnZpY2Uge1xuICByZWFkb25seSBvcGVuZWQgPSBzaWduYWwoZmFsc2UpO1xuXG4gIHRvZ2dsZSgpIHtcbiAgICB0aGlzLm9wZW5lZC5zZXQoIXRoaXMub3BlbmVkKCkpO1xuICB9XG5cbiAgY29sbGFwc2UoKSB7XG4gICAgdGhpcy5vcGVuZWQuc2V0KGZhbHNlKTtcbiAgfVxuXG4gIGV4cGFuZCgpIHtcbiAgICB0aGlzLm9wZW5lZC5zZXQodHJ1ZSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './side-nav-mode.service';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL3NpZGUtbmF2LW1vZGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2lkZS1uYXYtbW9kZS5zZXJ2aWNlJztcbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctYXRvbWljLWNvbW1vbi1zZXJ2aWNlcy1zaWRlLW5hdi1tb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9zaWRlLW5hdi1tb2RlL25nLWF0b21pYy1jb21tb24tc2VydmljZXMtc2lkZS1uYXYtbW9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -0,0 +1,27 @@
1
+ import { Injectable, signal } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class SideNavModeService {
4
+ constructor() {
5
+ this.sideNavMode = signal('collapsed');
6
+ }
7
+ /** @deprecated use toggle() instead */
8
+ toggleSideNav() {
9
+ this.sideNavMode.set(this.sideNavMode() === 'expanded' ? 'collapsed' : 'expanded');
10
+ }
11
+ toggle() {
12
+ this.sideNavMode.set(this.sideNavMode() === 'expanded' ? 'collapsed' : 'expanded');
13
+ }
14
+ collapse() {
15
+ this.sideNavMode.set('collapsed');
16
+ }
17
+ expand() {
18
+ this.sideNavMode.set('expanded');
19
+ }
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: SideNavModeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
21
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: SideNavModeService, providedIn: 'root' }); }
22
+ }
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: SideNavModeService, decorators: [{
24
+ type: Injectable,
25
+ args: [{ providedIn: 'root' }]
26
+ }] });
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1uYXYtbW9kZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9zaWRlLW5hdi1tb2RlL3NpZGUtbmF2LW1vZGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHbkQsTUFBTSxPQUFPLGtCQUFrQjtJQUQvQjtRQUVXLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0tBa0I1QztJQWhCQyx1Q0FBdUM7SUFDdkMsYUFBYTtRQUNYLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuQyxDQUFDOzhHQWxCVSxrQkFBa0I7a0hBQWxCLGtCQUFrQixjQURMLE1BQU07OzJGQUNuQixrQkFBa0I7a0JBRDlCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgU2lkZU5hdk1vZGVTZXJ2aWNlIHtcbiAgcmVhZG9ubHkgc2lkZU5hdk1vZGUgPSBzaWduYWwoJ2NvbGxhcHNlZCcpO1xuXG4gIC8qKiBAZGVwcmVjYXRlZCB1c2UgdG9nZ2xlKCkgaW5zdGVhZCAqL1xuICB0b2dnbGVTaWRlTmF2KCkge1xuICAgIHRoaXMuc2lkZU5hdk1vZGUuc2V0KHRoaXMuc2lkZU5hdk1vZGUoKSA9PT0gJ2V4cGFuZGVkJyA/ICdjb2xsYXBzZWQnIDogJ2V4cGFuZGVkJyk7XG4gIH1cblxuICB0b2dnbGUoKSB7XG4gICAgdGhpcy5zaWRlTmF2TW9kZS5zZXQodGhpcy5zaWRlTmF2TW9kZSgpID09PSAnZXhwYW5kZWQnID8gJ2NvbGxhcHNlZCcgOiAnZXhwYW5kZWQnKTtcbiAgfVxuXG4gIGNvbGxhcHNlKCkge1xuICAgIHRoaXMuc2lkZU5hdk1vZGUuc2V0KCdjb2xsYXBzZWQnKTtcbiAgfVxuXG4gIGV4cGFuZCgpIHtcbiAgICB0aGlzLnNpZGVOYXZNb2RlLnNldCgnZXhwYW5kZWQnKTtcbiAgfVxufVxuIl19
@@ -3,13 +3,13 @@ import { CommonModule } from '@angular/common';
3
3
  import { MatSnackBarModule } from '@angular/material/snack-bar';
4
4
  import * as i0 from "@angular/core";
5
5
  export class SnackBarModule {
6
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SnackBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: SnackBarModule, imports: [CommonModule,
6
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: SnackBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.2", ngImport: i0, type: SnackBarModule, imports: [CommonModule,
8
8
  MatSnackBarModule] }); }
9
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SnackBarModule, imports: [CommonModule,
9
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: SnackBarModule, imports: [CommonModule,
10
10
  MatSnackBarModule] }); }
11
11
  }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SnackBarModule, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: SnackBarModule, decorators: [{
13
13
  type: NgModule,
14
14
  args: [{
15
15
  declarations: [],
@@ -19,4 +19,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
19
19
  ]
20
20
  }]
21
21
  }] });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hY2stYmFyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvc25hY2stYmFyL3NuYWNrLWJhci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBU2hFLE1BQU0sT0FBTyxjQUFjOytHQUFkLGNBQWM7Z0hBQWQsY0FBYyxZQUp2QixZQUFZO1lBQ1osaUJBQWlCO2dIQUdSLGNBQWMsWUFKdkIsWUFBWTtZQUNaLGlCQUFpQjs7NEZBR1IsY0FBYztrQkFQMUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsRUFBRTtvQkFDaEIsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osaUJBQWlCO3FCQUNsQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQgeyBNYXRTbmFja0Jhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW10sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0U25hY2tCYXJNb2R1bGVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTbmFja0Jhck1vZHVsZSB7IH1cbiJdfQ==
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hY2stYmFyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvc25hY2stYmFyL3NuYWNrLWJhci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBU2hFLE1BQU0sT0FBTyxjQUFjOzhHQUFkLGNBQWM7K0dBQWQsY0FBYyxZQUp2QixZQUFZO1lBQ1osaUJBQWlCOytHQUdSLGNBQWMsWUFKdkIsWUFBWTtZQUNaLGlCQUFpQjs7MkZBR1IsY0FBYztrQkFQMUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsRUFBRTtvQkFDaEIsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osaUJBQWlCO3FCQUNsQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQgeyBNYXRTbmFja0Jhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW10sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0U25hY2tCYXJNb2R1bGVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTbmFja0Jhck1vZHVsZSB7IH1cbiJdfQ==
@@ -6,18 +6,18 @@ export class SnackBarService {
6
6
  constructor(snackBar) {
7
7
  this.snackBar = snackBar;
8
8
  }
9
- openSnackBar(message, action) {
9
+ open(message, action) {
10
10
  this.snackBar.open(message, action, {
11
11
  duration: 2000,
12
12
  });
13
13
  }
14
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SnackBarService, deps: [{ token: i1.MatSnackBar }], target: i0.ɵɵFactoryTarget.Injectable }); }
15
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SnackBarService, providedIn: 'root' }); }
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: SnackBarService, deps: [{ token: i1.MatSnackBar }], target: i0.ɵɵFactoryTarget.Injectable }); }
15
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: SnackBarService, providedIn: 'root' }); }
16
16
  }
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SnackBarService, decorators: [{
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: SnackBarService, decorators: [{
18
18
  type: Injectable,
19
19
  args: [{
20
20
  providedIn: 'root'
21
21
  }]
22
- }], ctorParameters: function () { return [{ type: i1.MatSnackBar }]; } });
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hY2stYmFyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL3NuYWNrLWJhci9zbmFjay1iYXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7O0FBTTFELE1BQU0sT0FBTyxlQUFlO0lBRTFCLFlBQW9CLFFBQXFCO1FBQXJCLGFBQVEsR0FBUixRQUFRLENBQWE7SUFBRyxDQUFDO0lBRTdDLFlBQVksQ0FBQyxPQUFlLEVBQUUsTUFBZTtRQUMzQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFO1lBQ2xDLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0FSVSxlQUFlO21IQUFmLGVBQWUsY0FGZCxNQUFNOzs0RkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBTbmFja0JhclNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyKSB7fVxuXG4gIG9wZW5TbmFja0JhcihtZXNzYWdlOiBzdHJpbmcsIGFjdGlvbj86IHN0cmluZykge1xuICAgIHRoaXMuc25hY2tCYXIub3BlbihtZXNzYWdlLCBhY3Rpb24sIHtcbiAgICAgIGR1cmF0aW9uOiAyMDAwLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
22
+ }], ctorParameters: () => [{ type: i1.MatSnackBar }] });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hY2stYmFyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL3NuYWNrLWJhci9zbmFjay1iYXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7O0FBTTFELE1BQU0sT0FBTyxlQUFlO0lBRTFCLFlBQW9CLFFBQXFCO1FBQXJCLGFBQVEsR0FBUixRQUFRLENBQWE7SUFBRyxDQUFDO0lBRTdDLElBQUksQ0FBQyxPQUFlLEVBQUUsTUFBZTtRQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFO1lBQ2xDLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0FSVSxlQUFlO2tIQUFmLGVBQWUsY0FGZCxNQUFNOzsyRkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBTbmFja0JhclNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyKSB7fVxuXG4gIG9wZW4obWVzc2FnZTogc3RyaW5nLCBhY3Rpb24/OiBzdHJpbmcpIHtcbiAgICB0aGlzLnNuYWNrQmFyLm9wZW4obWVzc2FnZSwgYWN0aW9uLCB7XG4gICAgICBkdXJhdGlvbjogMjAwMCxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,2 +1,3 @@
1
+ export * from './ui.helpers';
1
2
  export * from './ui.service';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL3VpL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi91aS5zZXJ2aWNlJztcbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL3VpL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi91aS5oZWxwZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vdWkuc2VydmljZSc7XG4iXX0=
@@ -0,0 +1,186 @@
1
+ import { ElementRef, InjectionToken, Injector, computed, effect, inject, isSignal, runInInjectionContext, signal } from "@angular/core";
2
+ import { UiService } from "./ui.service";
3
+ import { get, set } from "lodash-es";
4
+ import { ActivatedRoute, Router } from "@angular/router";
5
+ import { map, shareReplay, startWith } from "rxjs";
6
+ import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
7
+ import { computedAsync } from "ngxtension/computed-async";
8
+ import { NavigationHistoryService } from "@ng-atomic/common/services/navigation-history";
9
+ export function scoped(source, path) {
10
+ const scopedSignal = signal(get(source(), path));
11
+ effect(() => {
12
+ scopedSignal.set(get(source(), path, source()));
13
+ }, { allowSignalWrites: true });
14
+ return computed(() => scopedSignal(), {
15
+ // equal: (a, b) => JSON.stringify(a) === JSON.stringify(b),
16
+ });
17
+ }
18
+ export function injectBreakpoint() {
19
+ return inject(UiService).breakpoint.breakpoint;
20
+ }
21
+ export function injectIsMobile() {
22
+ const breakpoint = injectBreakpoint();
23
+ return computed(() => ['xSmall', 'small'].includes(breakpoint()));
24
+ }
25
+ export var NavActionId;
26
+ (function (NavActionId) {
27
+ NavActionId["TOGGLE_SIDE_NAV"] = "[@ng-atomic/common/services/ui] TOGGLE_SIDE_NAV";
28
+ NavActionId["BACK"] = "[@ng-atomic/common/services/ui] BACK";
29
+ })(NavActionId || (NavActionId = {}));
30
+ export function injectIsRootPage$() {
31
+ const router = inject(Router);
32
+ const route = inject(ActivatedRoute);
33
+ return router.events.pipe(startWith(null), map(() => {
34
+ const components = [];
35
+ let route_ = route;
36
+ while (route_) {
37
+ if (!route_.parent)
38
+ break;
39
+ route_ = route_.parent;
40
+ if (route_.component) {
41
+ components.push(route_.component);
42
+ }
43
+ }
44
+ return !!(components?.length === 1);
45
+ }), map((route) => !!route), shareReplay(1), takeUntilDestroyed());
46
+ }
47
+ export function injectIsRootPage() {
48
+ const isRootPage$ = injectIsRootPage$();
49
+ const injector = inject(Injector);
50
+ return computedAsync(() => isRootPage$, { injector });
51
+ }
52
+ export function injectNavStartActions(isRootPage = signal(false)) {
53
+ const context = injectUiContext();
54
+ const navigationHistory = inject(NavigationHistoryService);
55
+ return computed(() => {
56
+ switch (context().breakpoint) {
57
+ case 'xLarge':
58
+ case 'large':
59
+ case 'medium':
60
+ case 'small': {
61
+ if (isRootPage()) {
62
+ return [];
63
+ }
64
+ else {
65
+ if (navigationHistory.isInitial()) {
66
+ return [];
67
+ }
68
+ else {
69
+ return [{ id: NavActionId.BACK, name: 'BACK', icon: 'arrow_back' }];
70
+ }
71
+ }
72
+ }
73
+ case 'xSmall': {
74
+ if (isRootPage()) {
75
+ return [{ id: NavActionId.TOGGLE_SIDE_NAV, name: 'メニュー', icon: 'menu' }];
76
+ }
77
+ else {
78
+ if (navigationHistory.isInitial()) {
79
+ return [{ id: NavActionId.TOGGLE_SIDE_NAV, name: 'メニュー', icon: 'menu' }];
80
+ }
81
+ else {
82
+ return [{ id: NavActionId.BACK, name: 'BACK', icon: 'arrow_back' }];
83
+ }
84
+ }
85
+ }
86
+ default: {
87
+ if (isRootPage())
88
+ return [];
89
+ return [{ id: NavActionId.BACK, name: 'BACK', icon: 'arrow_back' }];
90
+ }
91
+ }
92
+ });
93
+ }
94
+ export function injectUiContext() {
95
+ return inject(UiService).uiContext;
96
+ }
97
+ export const UI_CONFIG_REDUCER = new InjectionToken('UI_CONFIG_REDUCER');
98
+ export function call(signalOrValue) {
99
+ return isSignal(signalOrValue) ? signalOrValue() : signalOrValue;
100
+ }
101
+ export function provideUiConfig(reducerFactory, path = [], name = 'name') {
102
+ return {
103
+ provide: UI_CONFIG_REDUCER,
104
+ useFactory: (injector) => {
105
+ function _reducerFactory(hostInjector) {
106
+ const reducer = reducerFactory(injector, hostInjector);
107
+ return (config, context) => {
108
+ if (path.length === 0)
109
+ return reducer(config, context);
110
+ return set(config, path, reducer(get(config, path), context));
111
+ };
112
+ }
113
+ ;
114
+ Object.defineProperty(_reducerFactory, 'name', { value: name, configurable: true });
115
+ return _reducerFactory;
116
+ },
117
+ deps: [Injector],
118
+ multi: true,
119
+ };
120
+ }
121
+ export function injectRootConfig() {
122
+ const uiContext = injectUiContext();
123
+ const reducerFactories = injectReducers();
124
+ const hostInjector = inject(Injector);
125
+ const reducers = reducerFactories.map(reducerFactory => {
126
+ return runInInjectionContext(hostInjector, () => reducerFactory(hostInjector));
127
+ });
128
+ if (!reducers)
129
+ return undefined;
130
+ return computed(() => {
131
+ const context = uiContext();
132
+ return reducers.reduce((acc, reducer) => {
133
+ return runInInjectionContext(hostInjector, () => reducer(acc, context));
134
+ }, {});
135
+ });
136
+ }
137
+ export function injectUiConfig(paths = []) {
138
+ const rootConfig = injectRootConfig();
139
+ return scoped(rootConfig, paths);
140
+ }
141
+ export function makeConfig(defaultUseFactory, path) {
142
+ return {
143
+ provide: function provideConfig(useFactory, label = useFactory ? 'custom' : 'default') {
144
+ useFactory ??= defaultUseFactory;
145
+ return provideUiConfig(useFactory, path, `[${path.join('.')}] ${label}`);
146
+ },
147
+ inject: function injectConfig() {
148
+ return injectUiConfig(path);
149
+ },
150
+ };
151
+ }
152
+ export function injectReducers() {
153
+ return injectDeepMulti(UI_CONFIG_REDUCER);
154
+ }
155
+ export function injectDeepMulti(token, injector = inject(Injector)) {
156
+ const valueOrArray = injector.get(token, [], { optional: true });
157
+ const items = Array.isArray(valueOrArray) ? valueOrArray : [valueOrArray];
158
+ const parentInjector = injector.get(Injector, null, { skipSelf: true });
159
+ if (!parentInjector)
160
+ return items;
161
+ return [...new Set([...injectDeepMulti(token, parentInjector), ...items])];
162
+ }
163
+ export function debugInjector(injector = inject(Injector)) {
164
+ const getParent = (injector, n = 0) => {
165
+ while (injector && n-- > 0) {
166
+ injector = injector.get(Injector, null, { skipSelf: true });
167
+ }
168
+ return injector;
169
+ };
170
+ const getInjectorName = (injector) => {
171
+ const name = injector.get(ElementRef, null)?.nativeElement?.tagName?.toLowerCase();
172
+ if (name)
173
+ return `<${name}>`;
174
+ return `${injector['source']}`;
175
+ };
176
+ const isNodeInjector = (injector) => {
177
+ return injector.get(ElementRef, null) !== null;
178
+ };
179
+ const mapToNames = (reducers) => (reducers ?? []).map(reducer => reducer.name);
180
+ for (let i = 0; i < 20; i++) {
181
+ injector = getParent(injector, i);
182
+ if (injector === Injector.NULL)
183
+ break;
184
+ }
185
+ }
186
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWkuaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvdWkvdWkuaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQW1DLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekssT0FBTyxFQUFhLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwRCxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVyQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFFekYsTUFBTSxVQUFVLE1BQU0sQ0FBeUMsTUFBaUIsRUFBRSxJQUFtQjtJQUNuRyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQVUsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDMUQsTUFBTSxDQUFDLEdBQUcsRUFBRTtRQUNWLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBWSxDQUFDLENBQUM7SUFDN0QsQ0FBQyxFQUFFLEVBQUMsaUJBQWlCLEVBQUUsSUFB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SUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7U0FDN0Q7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDLENBQUE7SUFFRCxNQUFNLGVBQWUsR0FBRyxDQUFDLFFBQWtCLEVBQVUsRUFBRTtRQUNyRCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ25GLElBQUksSUFBSTtZQUFFLE9BQU8sSUFBSSxJQUFJLEdBQUcsQ0FBQztRQUM3QixPQUFPLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7SUFDakMsQ0FBQyxDQUFBO0lBRUQsTUFBTSxjQUFjLEdBQUcsQ0FBQyxRQUFrQixFQUFXLEVBQUU7UUFDckQsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUM7SUFDakQsQ0FBQyxDQUFBO0lBRUQsTUFBTSxVQUFVLEdBQUcsQ0FBQyxRQUFhLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVwRixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQzNCLFFBQVEsR0FBRyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLElBQUksUUFBUSxLQUFLLFFBQVEsQ0FBQyxJQUFJO1lBQUUsTUFBTTtLQUN2QztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0b3IsIFByb3ZpZGVyLCBQcm92aWRlclRva2VuLCBTaWduYWwsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgaXNTaWduYWwsIHJ1bkluSW5qZWN0aW9uQ29udGV4dCwgc2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFVJQ29udGV4dCwgVWlTZXJ2aWNlIH0gZnJvbSBcIi4vdWkuc2VydmljZVwiO1xuaW1wb3J0IHsgZ2V0LCBzZXQgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tIFwiQG5nLWF0b21pYy9jb3JlXCI7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHsgbWFwLCBzaGFyZVJlcGxheSwgc3RhcnRXaXRoIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcFwiO1xuaW1wb3J0IHsgY29tcHV0ZWRBc3luYyB9IGZyb20gXCJuZ3h0ZW5zaW9uL2NvbXB1dGVkLWFzeW5jXCI7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uSGlzdG9yeVNlcnZpY2UgfSBmcm9tIFwiQG5nLWF0b21pYy9jb21tb24vc2VydmljZXMvbmF2aWdhdGlvbi1oaXN0b3J5XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBzY29wZWQ8VCBleHRlbmRzIG9iamVjdCwgVEtleSBleHRlbmRzIGtleW9mIFQ+KHNvdXJjZTogU2lnbmFsPFQ+LCBwYXRoOiBUS2V5IHwgW1RLZXldKTogU2lnbmFsPFRbVEtleV0+IHtcbiAgY29uc3Qgc2NvcGVkU2lnbmFsID0gc2lnbmFsPFRbVEtleV0+KGdldChzb3VyY2UoKSwgcGF0aCkpO1xuICBlZmZlY3QoKCkgPT4ge1xuICAgIHNjb3BlZFNpZ25hbC5zZXQoZ2V0KHNvdXJjZSgpLCBwYXRoLCBzb3VyY2UoKSkgYXMgVFtUS2V5XSk7XG4gIH0sIHthbGxvd1NpZ25hbFdyaXRlczogdHJ1ZX0pO1xuICByZXR1cm4gY29tcHV0ZWQoKCkgPT4gc2NvcGVkU2lnbmFsKCksIHtcbiAgICAvLyBlcXVhbDogKGEsIGIpID0+IEpTT04uc3RyaW5naWZ5KGEpID09PSBKU09OLnN0cmluZ2lmeShiKSxcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RCcmVha3BvaW50KCkge1xuICByZXR1cm4gaW5qZWN0KFVpU2VydmljZSkuYnJlYWtwb2ludC5icmVha3BvaW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0SXNNb2JpbGUoKSB7XG4gIGNvbnN0IGJyZWFrcG9pbnQgPSBpbmplY3RCcmVha3BvaW50KCk7XG4gIHJldHVybiBjb21wdXRlZCgoKSA9PiAgWyd4U21hbGwnLCAnc21hbGwnXS5pbmNsdWRlcyhicmVha3BvaW50KCkpKTtcbn1cblxuZXhwb3J0IGVudW0gTmF2QWN0aW9uSWQge1xuICBUT0dHTEVfU0lERV9OQVYgPSAnW0BuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL3VpXSBUT0dHTEVfU0lERV9OQVYnLFxuICBCQUNLID0gJ1tAbmctYXRvbWljL2NvbW1vbi9zZXJ2aWNlcy91aV0gQkFDSycsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RJc1Jvb3RQYWdlJCgpIHtcbiAgY29uc3Qgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIGNvbnN0IHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcmV0dXJuIHJvdXRlci5ldmVudHMucGlwZShcbiAgICBzdGFydFdpdGgobnVsbCksXG4gICAgbWFwKCgpID0+IHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudHMgPSBbXTtcbiAgICAgIGxldCByb3V0ZV8gPSByb3V0ZTsgXG4gICAgICB3aGlsZShyb3V0ZV8pIHtcbiAgICAgICAgaWYgKCFyb3V0ZV8ucGFyZW50KSBicmVhaztcbiAgICAgICAgcm91dGVfID0gcm91dGVfLnBhcmVudDtcbiAgICAgICAgaWYgKHJvdXRlXy5jb21wb25lbnQpIHtcbiAgICAgICAgICBjb21wb25lbnRzLnB1c2gocm91dGVfLmNvbXBvbmVudCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiAhIShjb21wb25lbnRzPy5sZW5ndGggPT09IDEpO1xuICAgIH0pLFxuICAgIG1hcCgocm91dGUpID0+ICEhcm91dGUpLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0SXNSb290UGFnZSgpIHtcbiAgY29uc3QgaXNSb290UGFnZSQgPSBpbmplY3RJc1Jvb3RQYWdlJCgpO1xuICBjb25zdCBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIHJldHVybiBjb21wdXRlZEFzeW5jKCgpID0+IGlzUm9vdFBhZ2UkLCB7aW5qZWN0b3J9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdE5hdlN0YXJ0QWN0aW9ucyhcbiAgaXNSb290UGFnZTogU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKSxcbik6IFNpZ25hbDxBY3Rpb25bXT4ge1xuICBjb25zdCBjb250ZXh0ID0gaW5qZWN0VWlDb250ZXh0KCk7XG4gIGNvbnN0IG5hdmlnYXRpb25IaXN0b3J5ID0gaW5qZWN0KE5hdmlnYXRpb25IaXN0b3J5U2VydmljZSk7XG4gIHJldHVybiBjb21wdXRlZCgoKSA9PiB7XG4gICAgc3dpdGNoKGNvbnRleHQoKS5icmVha3BvaW50KSB7XG4gICAgICBjYXNlICd4TGFyZ2UnOlxuICAgICAgY2FzZSAnbGFyZ2UnOlxuICAgICAgY2FzZSAnbWVkaXVtJzpcbiAgICAgIGNhc2UgJ3NtYWxsJzoge1xuICAgICAgICBpZiAoaXNSb290UGFnZSgpKSB7XG4gICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChuYXZpZ2F0aW9uSGlzdG9yeS5pc0luaXRpYWwoKSkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gW3sgaWQ6IE5hdkFjdGlvbklkLkJBQ0ssIG5hbWU6ICdCQUNLJywgaWNvbjogJ2Fycm93X2JhY2snIH1dO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY2FzZSAneFNtYWxsJzoge1xuICAgICAgICBpZiAoaXNSb290UGFnZSgpKSB7XG4gICAgICAgICAgcmV0dXJuIFt7IGlkOiBOYXZBY3Rpb25JZC5UT0dHTEVfU0lERV9OQVYsIG5hbWU6ICfjg6Hjg4vjg6Xjg7wnLCBpY29uOiAnbWVudScgfV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKG5hdmlnYXRpb25IaXN0b3J5LmlzSW5pdGlhbCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gW3sgaWQ6IE5hdkFjdGlvbklkLlRPR0dMRV9TSURFX05BViwgbmFtZTogJ+ODoeODi+ODpeODvCcsIGljb246ICdtZW51JyB9XVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gW3sgaWQ6IE5hdkFjdGlvbklkLkJBQ0ssIG5hbWU6ICdCQUNLJywgaWNvbjogJ2Fycm93X2JhY2snIH1dO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBpZiAoaXNSb290UGFnZSgpKSByZXR1cm4gW107XG4gICAgICAgIHJldHVybiBbeyBpZDogTmF2QWN0aW9uSWQuQkFDSywgbmFtZTogJ0JBQ0snLCBpY29uOiAnYXJyb3dfYmFjaycgfV07XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFVpQ29udGV4dCgpOiBTaWduYWw8VUlDb250ZXh0PiB7XG4gIHJldHVybiBpbmplY3QoVWlTZXJ2aWNlKS51aUNvbnRleHQ7XG59XG5cbmV4cG9ydCB0eXBlIFVpQ29uZmlnUmVkdWNlcjxUIGV4dGVuZHMgb2JqZWN0IHwgc3RyaW5nLCBDIGV4dGVuZHMgVUlDb250ZXh0ID0gYW55PiA9IChjb25maWc6IFQsIGNvbnRleHQ6IEMpID0+IFQ7XG5leHBvcnQgY29uc3QgVUlfQ09ORklHX1JFRFVDRVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48VWlDb25maWdSZWR1Y2VyPGFueT4+KCdVSV9DT05GSUdfUkVEVUNFUicpO1xuZXhwb3J0IHR5cGUgUmVkdWNlckZhY3Rvcnk8VCBleHRlbmRzIG9iamVjdCB8IHN0cmluZywgSyBleHRlbmRzIFQgPSBhbnk+IFxuICA9IChpbmplY3RvcjogSW5qZWN0b3IsIGhvc3RJbmplY3RvcjogSW5qZWN0b3IpID0+IChjb25maWc6IEssIGNvbnRleHQ6IFVJQ29udGV4dCkgPT4gVDtcblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGw8VD4oc2lnbmFsT3JWYWx1ZTogU2lnbmFsPFQ+IHwgVCk6IFQge1xuICByZXR1cm4gaXNTaWduYWwoc2lnbmFsT3JWYWx1ZSkgPyBzaWduYWxPclZhbHVlKCkgOiBzaWduYWxPclZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZVVpQ29uZmlnPFQgZXh0ZW5kcyBvYmplY3QgfCBzdHJpbmc+KFxuICByZWR1Y2VyRmFjdG9yeTogUmVkdWNlckZhY3Rvcnk8VD4sXG4gIHBhdGg6IHN0cmluZ1tdID0gW10sXG4gIG5hbWUgPSAnbmFtZScsXG4pOiBQcm92aWRlciB7XG4gIHJldHVybiB7XG4gICAgcHJvdmlkZTogVUlfQ09ORklHX1JFRFVDRVIsXG4gICAgdXNlRmFjdG9yeTogKGluamVjdG9yOiBJbmplY3RvcikgPT4ge1xuICAgICAgZnVuY3Rpb24gX3JlZHVjZXJGYWN0b3J5KGhvc3RJbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgY29uc3QgcmVkdWNlciA9IHJlZHVjZXJGYWN0b3J5KGluamVjdG9yLCBob3N0SW5qZWN0b3IpOyBcbiAgICAgICAgcmV0dXJuIChjb25maWc6IFQsIGNvbnRleHQ6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkgcmV0dXJuICByZWR1Y2VyKGNvbmZpZywgY29udGV4dCk7XG4gICAgICAgICAgcmV0dXJuIHNldChjb25maWcgYXMgb2JqZWN0LCBwYXRoLCByZWR1Y2VyKGdldDxhbnksIGFueT4oY29uZmlnLCBwYXRoKSwgY29udGV4dCkpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9yZWR1Y2VyRmFjdG9yeSwgJ25hbWUnLCB7IHZhbHVlOiBuYW1lLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG4gICAgICByZXR1cm4gX3JlZHVjZXJGYWN0b3J5O1xuICAgIH0sXG4gICAgZGVwczogW0luamVjdG9yXSxcbiAgICBtdWx0aTogdHJ1ZSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJvb3RDb25maWc8VCBleHRlbmRzIG9iamVjdD4oKTogU2lnbmFsPFQ+IHtcbiAgY29uc3QgdWlDb250ZXh0ID0gaW5qZWN0VWlDb250ZXh0KCk7XG4gIGNvbnN0IHJlZHVjZXJGYWN0b3JpZXMgPSBpbmplY3RSZWR1Y2VycygpO1xuICBjb25zdCBob3N0SW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBjb25zdCByZWR1Y2VycyA9IHJlZHVjZXJGYWN0b3JpZXMubWFwKHJlZHVjZXJGYWN0b3J5ID0+IHtcbiAgICByZXR1cm4gcnVuSW5JbmplY3Rpb25Db250ZXh0KGhvc3RJbmplY3RvciwgKCkgPT4gcmVkdWNlckZhY3RvcnkoaG9zdEluamVjdG9yKSk7XG4gIH0pO1xuICBpZiAoIXJlZHVjZXJzKSByZXR1cm4gdW5kZWZpbmVkO1xuICByZXR1cm4gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRleHQgPSB1aUNvbnRleHQoKTtcbiAgICByZXR1cm4gcmVkdWNlcnMucmVkdWNlKChhY2MsIHJlZHVjZXIpID0+IHtcbiAgICAgIHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQoaG9zdEluamVjdG9yLCAoKSA9PiByZWR1Y2VyKGFjYywgY29udGV4dCkpO1xuICAgIH0sIHt9IGFzIFQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFVpQ29uZmlnPFQgZXh0ZW5kcyBvYmplY3Q+KHBhdGhzOiBzdHJpbmdbXSA9IFtdKTogU2lnbmFsPFQ+IHtcbiAgY29uc3Qgcm9vdENvbmZpZyA9IGluamVjdFJvb3RDb25maWcoKTtcbiAgcmV0dXJuIHNjb3BlZChyb290Q29uZmlnLCBwYXRocyBhcyBhbnkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFrZUNvbmZpZzxUIGV4dGVuZHMgb2JqZWN0PihkZWZhdWx0VXNlRmFjdG9yeTogUmVkdWNlckZhY3Rvcnk8VD4sIHBhdGg6IHN0cmluZ1tdKSB7XG4gIHJldHVybiB7XG4gICAgcHJvdmlkZTogZnVuY3Rpb24gcHJvdmlkZUNvbmZpZyh1c2VGYWN0b3J5PzogUmVkdWNlckZhY3Rvcnk8VD4sIGxhYmVsID0gdXNlRmFjdG9yeSA/ICdjdXN0b20nIDogJ2RlZmF1bHQnKSB7XG4gICAgICB1c2VGYWN0b3J5ID8/PSBkZWZhdWx0VXNlRmFjdG9yeTtcbiAgICAgIHJldHVybiBwcm92aWRlVWlDb25maWc8VD4odXNlRmFjdG9yeSwgcGF0aCwgYFske3BhdGguam9pbignLicpfV0gJHtsYWJlbH1gKTtcbiAgICB9LFxuICAgIGluamVjdDogZnVuY3Rpb24gaW5qZWN0Q29uZmlnKCkge1xuICAgICAgcmV0dXJuIGluamVjdFVpQ29uZmlnPFQ+KHBhdGgpO1xuICAgIH0sXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJlZHVjZXJzKCk6ICgoaG9zdEluamVjdG9yOiBJbmplY3RvcikgPT4gVWlDb25maWdSZWR1Y2VyPGFueT4pW10ge1xuICByZXR1cm4gaW5qZWN0RGVlcE11bHRpPChob3N0SW5qZWN0b3I6IEluamVjdG9yKSA9PiBVaUNvbmZpZ1JlZHVjZXI8YW55Pj4oVUlfQ09ORklHX1JFRFVDRVIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0RGVlcE11bHRpPFQ+KHRva2VuOiBQcm92aWRlclRva2VuPFQ+LCBpbmplY3RvcjogSW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpKTogVFtdIHtcbiAgY29uc3QgdmFsdWVPckFycmF5ID0gaW5qZWN0b3IuZ2V0KHRva2VuIGFzIFByb3ZpZGVyVG9rZW48VFtdPiwgW10sIHtvcHRpb25hbDogdHJ1ZX0pO1xuICBjb25zdCBpdGVtcyA9IEFycmF5LmlzQXJyYXkodmFsdWVPckFycmF5KSA/IHZhbHVlT3JBcnJheSA6IFt2YWx1ZU9yQXJyYXldO1xuICBjb25zdCBwYXJlbnRJbmplY3RvciA9IGluamVjdG9yLmdldChJbmplY3RvciwgbnVsbCwge3NraXBTZWxmOiB0cnVlfSk7XG4gIGlmICghcGFyZW50SW5qZWN0b3IpIHJldHVybiBpdGVtcztcbiAgcmV0dXJuIFsuLi5uZXcgU2V0KFsuLi5pbmplY3REZWVwTXVsdGkodG9rZW4sIHBhcmVudEluamVjdG9yKSwgLi4uaXRlbXNdKV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWJ1Z0luamVjdG9yKGluamVjdG9yOiBJbmplY3RvciB8IG51bGwgPSBpbmplY3QoSW5qZWN0b3IpKSB7XG4gICAgICBjb25zdCBnZXRQYXJlbnQgPSAoaW5qZWN0b3I6IEluamVjdG9yLCBuID0gMCk6IEluamVjdG9yIHwgbnVsbCA9PiB7XG4gICAgICB3aGlsZSAoaW5qZWN0b3IgJiYgbi0tID4gMCkge1xuICAgICAgICBpbmplY3RvciA9IGluamVjdG9yLmdldChJbmplY3RvciwgbnVsbCwgeyBza2lwU2VsZjogdHJ1ZSB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpbmplY3RvcjtcbiAgICB9XG5cbiAgICBjb25zdCBnZXRJbmplY3Rvck5hbWUgPSAoaW5qZWN0b3I6IEluamVjdG9yKTogc3RyaW5nID0+IHtcbiAgICAgIGNvbnN0IG5hbWUgPSBpbmplY3Rvci5nZXQoRWxlbWVudFJlZiwgbnVsbCk/Lm5hdGl2ZUVsZW1lbnQ/LnRhZ05hbWU/LnRvTG93ZXJDYXNlKCk7XG4gICAgICBpZiAobmFtZSkgcmV0dXJuIGA8JHtuYW1lfT5gO1xuICAgICAgcmV0dXJuIGAke2luamVjdG9yWydzb3VyY2UnXX1gO1xuICAgIH1cblxuICAgIGNvbnN0IGlzTm9kZUluamVjdG9yID0gKGluamVjdG9yOiBJbmplY3Rvcik6IGJvb2xlYW4gPT4ge1xuICAgICAgcmV0dXJuIGluamVjdG9yLmdldChFbGVtZW50UmVmLCBudWxsKSAhPT0gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBtYXBUb05hbWVzID0gKHJlZHVjZXJzOiBhbnkpID0+IChyZWR1Y2VycyA/PyBbXSkubWFwKHJlZHVjZXIgPT4gcmVkdWNlci5uYW1lKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMjA7IGkrKykge1xuICAgICAgaW5qZWN0b3IgPSBnZXRQYXJlbnQoaW5qZWN0b3IsIGkpO1xuICAgICAgaWYgKGluamVjdG9yID09PSBJbmplY3Rvci5OVUxMKSBicmVhaztcbiAgICB9XG59XG4iXX0=