tango-app-ui-shared 3.7.3-dev6-demo7 → 3.7.3-dev6-demo8

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 (402) hide show
  1. package/esm2022/lib/guards/auth.guard.mjs +26 -0
  2. package/esm2022/lib/guards/lead.guard.mjs +16 -0
  3. package/esm2022/lib/guards/stores.guard.mjs +16 -0
  4. package/esm2022/lib/guards/tickets.guard.mjs +16 -0
  5. package/esm2022/lib/i18n/index.mjs +3 -0
  6. package/esm2022/lib/i18n/translation.module.mjs +17 -0
  7. package/esm2022/lib/i18n/translation.service.mjs +53 -0
  8. package/esm2022/lib/i18n/vocabs/ch.mjs +106 -0
  9. package/esm2022/lib/i18n/vocabs/de.mjs +106 -0
  10. package/esm2022/lib/i18n/vocabs/en.mjs +106 -0
  11. package/esm2022/lib/i18n/vocabs/es.mjs +106 -0
  12. package/esm2022/lib/i18n/vocabs/fr.mjs +106 -0
  13. package/esm2022/lib/i18n/vocabs/jp.mjs +106 -0
  14. package/esm2022/lib/interceptors/http-auth-interceptor.mjs +124 -0
  15. package/esm2022/lib/interfaces/global-state.mjs +2 -0
  16. package/esm2022/lib/modules/common/common-shared.module.mjs +31 -0
  17. package/esm2022/lib/modules/common/custom-select/custom-select.component.mjs +155 -0
  18. package/esm2022/lib/modules/common/filters/filters.component.mjs +179 -0
  19. package/esm2022/lib/modules/common/pagination/pagination.component.mjs +49 -0
  20. package/esm2022/lib/modules/errors/error403/error403.component.mjs +33 -0
  21. package/esm2022/lib/modules/errors/error404/error404.component.mjs +44 -0
  22. package/esm2022/lib/modules/errors/error500/error500.component.mjs +45 -0
  23. package/esm2022/lib/modules/errors/errors-routing.module.mjs +48 -0
  24. package/esm2022/lib/modules/errors/errors.component.mjs +39 -0
  25. package/esm2022/lib/modules/errors/errors.module.mjs +37 -0
  26. package/esm2022/lib/modules/errors/invalid-ip/invalid-ip.component.mjs +44 -0
  27. package/esm2022/lib/modules/intro/contact-support/contact-support.component.mjs +19 -0
  28. package/esm2022/lib/modules/intro/intro-routing.module.mjs +24 -0
  29. package/esm2022/lib/modules/intro/intro.module.mjs +32 -0
  30. package/esm2022/lib/modules/intro/lead-intro/lead-intro.component.mjs +110 -0
  31. package/esm2022/lib/modules/layout/components/csm-assign-confirmation/csm-assign-confirmation.component.mjs +31 -0
  32. package/esm2022/lib/modules/layout/content/content.component.mjs +107 -0
  33. package/esm2022/lib/modules/layout/footer/footer.component.mjs +17 -0
  34. package/esm2022/lib/modules/layout/header/header-menu/header-menu.component.mjs +41 -0
  35. package/esm2022/lib/modules/layout/header/header.component.mjs +100 -0
  36. package/esm2022/lib/modules/layout/header/navbar/navbar.component.mjs +256 -0
  37. package/esm2022/lib/modules/layout/header/notifications-inner/notifications-inner.component.mjs +79 -0
  38. package/esm2022/lib/modules/layout/header/page-title/page-title.component.mjs +56 -0
  39. package/esm2022/lib/modules/layout/keenicon/icons.json +1 -0
  40. package/esm2022/lib/modules/layout/keenicon/keenicon.component.mjs +37 -0
  41. package/esm2022/lib/modules/layout/layout/layout.component.mjs +314 -0
  42. package/esm2022/lib/modules/layout/layout.module.mjs +198 -0
  43. package/esm2022/lib/modules/layout/scripts-init/scripts-init.component.mjs +74 -0
  44. package/esm2022/lib/modules/layout/scroll-top/scroll-top.component.mjs +74 -0
  45. package/esm2022/lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component.mjs +159 -0
  46. package/esm2022/lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component.mjs +45 -0
  47. package/esm2022/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.mjs +122 -0
  48. package/esm2022/lib/modules/layout/sidebar/sidebar.component.mjs +134 -0
  49. package/esm2022/lib/modules/layout/toolbar/accounting/accounting.component.mjs +16 -0
  50. package/esm2022/lib/modules/layout/toolbar/classic/classic.component.mjs +331 -0
  51. package/esm2022/lib/modules/layout/toolbar/client-settings/client-settings.component.mjs +88 -0
  52. package/esm2022/lib/modules/layout/toolbar/date-single-select/date-single-select.component.mjs +207 -0
  53. package/esm2022/lib/modules/layout/toolbar/datepicker/datepicker.component.mjs +158 -0
  54. package/esm2022/lib/modules/layout/toolbar/extended/extended.component.mjs +15 -0
  55. package/esm2022/lib/modules/layout/toolbar/metrics-header/metrics-header.component.mjs +1321 -0
  56. package/esm2022/lib/modules/layout/toolbar/reports/reports.component.mjs +18 -0
  57. package/esm2022/lib/modules/layout/toolbar/saas/saas.component.mjs +18 -0
  58. package/esm2022/lib/modules/layout/toolbar/single-clientstore-date/single-clientstore-date.component.mjs +216 -0
  59. package/esm2022/lib/modules/layout/toolbar/single-store/single-store.component.mjs +178 -0
  60. package/esm2022/lib/modules/layout/toolbar/single-storedate/single-storedate.component.mjs +166 -0
  61. package/esm2022/lib/modules/layout/toolbar/storesingle/storesingle.component.mjs +105 -0
  62. package/esm2022/lib/modules/layout/toolbar/toolbar.component.mjs +372 -0
  63. package/esm2022/lib/modules/layout/toolbar/traffic-header/traffic-header/traffic-header.component.mjs +1062 -0
  64. package/esm2022/lib/modules/layout/toolbar/traffic-nob/traffic-nob.component.mjs +795 -0
  65. package/esm2022/lib/modules/layout/toolbar/trax-header/trax-header.component.mjs +880 -0
  66. package/esm2022/lib/modules/layout/toolbar/trax-withoutdate/trax-withoutdate.component.mjs +729 -0
  67. package/esm2022/lib/modules/layout/toolbar/zone-header/zone-header.component.mjs +1100 -0
  68. package/esm2022/lib/modules/notification/conformation/conformation.component.mjs +22 -0
  69. package/esm2022/lib/modules/notification/notification/notification.component.mjs +317 -0
  70. package/esm2022/lib/modules/notification/notification-routing.module.mjs +28 -0
  71. package/esm2022/lib/modules/notification/notification.module.mjs +32 -0
  72. package/esm2022/lib/pipes/customDate.pipe.mjs +22 -0
  73. package/esm2022/lib/routes/route-wraper-modules/edge-wrapper.module.mjs +18 -0
  74. package/esm2022/lib/routes/route-wraper-modules/manage-wrapper.module.mjs +18 -0
  75. package/esm2022/lib/routes/route-wraper-modules/profile-wrapper.module.mjs +18 -0
  76. package/esm2022/lib/routes/route-wraper-modules/store-wrapper.module.mjs +18 -0
  77. package/esm2022/lib/routes/route-wraper-modules/ticket-wrapper.module.mjs +18 -0
  78. package/esm2022/lib/routes/routing.mjs +53 -0
  79. package/esm2022/lib/services/auth.service.mjs +141 -0
  80. package/esm2022/lib/services/notification.service.mjs +74 -0
  81. package/esm2022/lib/services/toast.service.mjs +83 -0
  82. package/esm2022/public-api.mjs +56 -0
  83. package/esm2022/tango-app-ui-shared.mjs +5 -0
  84. package/fesm2022/tango-app-ui-shared-edge-wrapper.module-CFDk0tvS.mjs +21 -0
  85. package/fesm2022/tango-app-ui-shared-edge-wrapper.module-CFDk0tvS.mjs.map +1 -0
  86. package/fesm2022/tango-app-ui-shared-intro.module-DYh4ZRha.mjs +188 -0
  87. package/fesm2022/tango-app-ui-shared-intro.module-DYh4ZRha.mjs.map +1 -0
  88. package/fesm2022/tango-app-ui-shared-manage-wrapper.module-BHyh4Njw.mjs +21 -0
  89. package/fesm2022/tango-app-ui-shared-manage-wrapper.module-BHyh4Njw.mjs.map +1 -0
  90. package/fesm2022/tango-app-ui-shared-notification.module-C5ZmCf8U.mjs +400 -0
  91. package/fesm2022/tango-app-ui-shared-notification.module-C5ZmCf8U.mjs.map +1 -0
  92. package/fesm2022/tango-app-ui-shared-profile-wrapper.module-BNC1AGOk.mjs +21 -0
  93. package/fesm2022/tango-app-ui-shared-profile-wrapper.module-BNC1AGOk.mjs.map +1 -0
  94. package/fesm2022/tango-app-ui-shared-store-wrapper.module-DdaCYHdv.mjs +21 -0
  95. package/fesm2022/tango-app-ui-shared-store-wrapper.module-DdaCYHdv.mjs.map +1 -0
  96. package/fesm2022/tango-app-ui-shared-ticket-wrapper.module-r32uKkDO.mjs +21 -0
  97. package/fesm2022/tango-app-ui-shared-ticket-wrapper.module-r32uKkDO.mjs.map +1 -0
  98. package/fesm2022/tango-app-ui-shared.mjs +12450 -0
  99. package/fesm2022/tango-app-ui-shared.mjs.map +1 -0
  100. package/index.d.ts +5 -0
  101. package/lib/guards/auth.guard.d.ts +10 -0
  102. package/lib/guards/lead.guard.d.ts +2 -0
  103. package/lib/guards/stores.guard.d.ts +2 -0
  104. package/lib/guards/tickets.guard.d.ts +2 -0
  105. package/{src/lib/i18n/index.ts → lib/i18n/index.d.ts} +2 -2
  106. package/lib/i18n/translation.module.d.ts +8 -0
  107. package/lib/i18n/translation.service.d.ts +19 -0
  108. package/lib/i18n/vocabs/ch.d.ts +104 -0
  109. package/lib/i18n/vocabs/de.d.ts +104 -0
  110. package/lib/i18n/vocabs/en.d.ts +104 -0
  111. package/lib/i18n/vocabs/es.d.ts +104 -0
  112. package/lib/i18n/vocabs/fr.d.ts +104 -0
  113. package/lib/i18n/vocabs/jp.d.ts +104 -0
  114. package/lib/interceptors/http-auth-interceptor.d.ts +19 -0
  115. package/lib/interfaces/global-state.d.ts +5 -0
  116. package/lib/modules/common/common-shared.module.d.ts +13 -0
  117. package/lib/modules/common/custom-select/custom-select.component.d.ts +33 -0
  118. package/lib/modules/common/filters/filters.component.d.ts +38 -0
  119. package/lib/modules/common/pagination/pagination.component.d.ts +18 -0
  120. package/lib/modules/errors/error403/error403.component.d.ts +14 -0
  121. package/lib/modules/errors/error404/error404.component.d.ts +15 -0
  122. package/lib/modules/errors/error500/error500.component.d.ts +15 -0
  123. package/lib/modules/errors/errors-routing.module.d.ts +7 -0
  124. package/lib/modules/errors/errors.component.d.ts +13 -0
  125. package/lib/modules/errors/errors.module.d.ts +13 -0
  126. package/lib/modules/errors/invalid-ip/invalid-ip.component.d.ts +17 -0
  127. package/lib/modules/intro/contact-support/contact-support.component.d.ts +9 -0
  128. package/lib/modules/intro/intro-routing.module.d.ts +7 -0
  129. package/lib/modules/intro/intro.module.d.ts +11 -0
  130. package/lib/modules/intro/lead-intro/lead-intro.component.d.ts +31 -0
  131. package/lib/modules/layout/components/csm-assign-confirmation/csm-assign-confirmation.component.d.ts +13 -0
  132. package/lib/modules/layout/content/content.component.d.ts +25 -0
  133. package/lib/modules/layout/footer/footer.component.d.ts +8 -0
  134. package/lib/modules/layout/header/header-menu/header-menu.component.d.ts +18 -0
  135. package/lib/modules/layout/header/header.component.d.ts +30 -0
  136. package/lib/modules/layout/header/navbar/navbar.component.d.ts +45 -0
  137. package/lib/modules/layout/header/notifications-inner/notifications-inner.component.d.ts +25 -0
  138. package/lib/modules/layout/header/page-title/page-title.component.d.ts +23 -0
  139. package/lib/modules/layout/keenicon/keenicon.component.d.ts +13 -0
  140. package/lib/modules/layout/layout/layout.component.d.ts +82 -0
  141. package/lib/modules/layout/layout.module.d.ts +50 -0
  142. package/lib/modules/layout/scripts-init/scripts-init.component.d.ts +19 -0
  143. package/lib/modules/layout/scroll-top/scroll-top.component.d.ts +19 -0
  144. package/lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component.d.ts +45 -0
  145. package/lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component.d.ts +19 -0
  146. package/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.d.ts +26 -0
  147. package/lib/modules/layout/sidebar/sidebar.component.d.ts +36 -0
  148. package/lib/modules/layout/toolbar/accounting/accounting.component.d.ts +8 -0
  149. package/lib/modules/layout/toolbar/classic/classic.component.d.ts +48 -0
  150. package/lib/modules/layout/toolbar/client-settings/client-settings.component.d.ts +16 -0
  151. package/lib/modules/layout/toolbar/date-single-select/date-single-select.component.d.ts +28 -0
  152. package/lib/modules/layout/toolbar/datepicker/datepicker.component.d.ts +28 -0
  153. package/lib/modules/layout/toolbar/extended/extended.component.d.ts +8 -0
  154. package/lib/modules/layout/toolbar/metrics-header/metrics-header.component.d.ts +103 -0
  155. package/lib/modules/layout/toolbar/reports/reports.component.d.ts +9 -0
  156. package/lib/modules/layout/toolbar/saas/saas.component.d.ts +9 -0
  157. package/lib/modules/layout/toolbar/single-clientstore-date/single-clientstore-date.component.d.ts +32 -0
  158. package/lib/modules/layout/toolbar/single-store/single-store.component.d.ts +33 -0
  159. package/lib/modules/layout/toolbar/single-storedate/single-storedate.component.d.ts +34 -0
  160. package/lib/modules/layout/toolbar/storesingle/storesingle.component.d.ts +24 -0
  161. package/lib/modules/layout/toolbar/toolbar.component.d.ts +57 -0
  162. package/lib/modules/layout/toolbar/traffic-header/traffic-header/traffic-header.component.d.ts +93 -0
  163. package/lib/modules/layout/toolbar/traffic-nob/traffic-nob.component.d.ts +80 -0
  164. package/lib/modules/layout/toolbar/trax-header/trax-header.component.d.ts +83 -0
  165. package/lib/modules/layout/toolbar/trax-withoutdate/trax-withoutdate.component.d.ts +74 -0
  166. package/lib/modules/layout/toolbar/zone-header/zone-header.component.d.ts +97 -0
  167. package/lib/modules/notification/conformation/conformation.component.d.ts +10 -0
  168. package/lib/modules/notification/notification/notification.component.d.ts +63 -0
  169. package/lib/modules/notification/notification-routing.module.d.ts +7 -0
  170. package/lib/modules/notification/notification.module.d.ts +11 -0
  171. package/lib/pipes/customDate.pipe.d.ts +7 -0
  172. package/lib/routes/route-wraper-modules/edge-wrapper.module.d.ts +7 -0
  173. package/lib/routes/route-wraper-modules/manage-wrapper.module.d.ts +7 -0
  174. package/lib/routes/route-wraper-modules/profile-wrapper.module.d.ts +7 -0
  175. package/lib/routes/route-wraper-modules/store-wrapper.module.d.ts +7 -0
  176. package/lib/routes/route-wraper-modules/ticket-wrapper.module.d.ts +7 -0
  177. package/lib/routes/routing.d.ts +3 -0
  178. package/lib/services/auth.service.d.ts +49 -0
  179. package/lib/services/notification.service.d.ts +30 -0
  180. package/lib/services/toast.service.d.ts +10 -0
  181. package/package.json +25 -12
  182. package/{src/public-api.ts → public-api.d.ts} +44 -71
  183. package/.eslintrc.json +0 -37
  184. package/ng-package.json +0 -7
  185. package/src/lib/guards/auth.guard.ts +0 -20
  186. package/src/lib/guards/lead.guard.ts +0 -16
  187. package/src/lib/guards/stores.guard.ts +0 -16
  188. package/src/lib/guards/tickets.guard.ts +0 -16
  189. package/src/lib/i18n/translation.module.ts +0 -9
  190. package/src/lib/i18n/translation.service.ts +0 -61
  191. package/src/lib/i18n/vocabs/ch.ts +0 -105
  192. package/src/lib/i18n/vocabs/de.ts +0 -105
  193. package/src/lib/i18n/vocabs/en.ts +0 -105
  194. package/src/lib/i18n/vocabs/es.ts +0 -105
  195. package/src/lib/i18n/vocabs/fr.ts +0 -105
  196. package/src/lib/i18n/vocabs/jp.ts +0 -105
  197. package/src/lib/interceptors/http-auth-interceptor.ts +0 -225
  198. package/src/lib/interfaces/global-state.ts +0 -6
  199. package/src/lib/modules/common/common-shared.module.ts +0 -20
  200. package/src/lib/modules/common/custom-select/custom-select.component.html +0 -42
  201. package/src/lib/modules/common/custom-select/custom-select.component.scss +0 -131
  202. package/src/lib/modules/common/custom-select/custom-select.component.spec.ts +0 -23
  203. package/src/lib/modules/common/custom-select/custom-select.component.ts +0 -149
  204. package/src/lib/modules/common/filters/filters.component.html +0 -76
  205. package/src/lib/modules/common/filters/filters.component.scss +0 -131
  206. package/src/lib/modules/common/filters/filters.component.spec.ts +0 -23
  207. package/src/lib/modules/common/filters/filters.component.ts +0 -181
  208. package/src/lib/modules/common/pagination/pagination.component.html +0 -26
  209. package/src/lib/modules/common/pagination/pagination.component.scss +0 -63
  210. package/src/lib/modules/common/pagination/pagination.component.spec.ts +0 -23
  211. package/src/lib/modules/common/pagination/pagination.component.ts +0 -46
  212. package/src/lib/modules/errors/error403/error403.component.html +0 -25
  213. package/src/lib/modules/errors/error403/error403.component.scss +0 -0
  214. package/src/lib/modules/errors/error403/error403.component.spec.ts +0 -23
  215. package/src/lib/modules/errors/error403/error403.component.ts +0 -28
  216. package/src/lib/modules/errors/error404/error404.component.html +0 -24
  217. package/src/lib/modules/errors/error404/error404.component.scss +0 -0
  218. package/src/lib/modules/errors/error404/error404.component.spec.ts +0 -25
  219. package/src/lib/modules/errors/error404/error404.component.ts +0 -50
  220. package/src/lib/modules/errors/error500/error500.component.html +0 -24
  221. package/src/lib/modules/errors/error500/error500.component.scss +0 -0
  222. package/src/lib/modules/errors/error500/error500.component.spec.ts +0 -25
  223. package/src/lib/modules/errors/error500/error500.component.ts +0 -50
  224. package/src/lib/modules/errors/errors-routing.module.ts +0 -40
  225. package/src/lib/modules/errors/errors.component.html +0 -15
  226. package/src/lib/modules/errors/errors.component.scss +0 -4
  227. package/src/lib/modules/errors/errors.component.spec.ts +0 -25
  228. package/src/lib/modules/errors/errors.component.ts +0 -42
  229. package/src/lib/modules/errors/errors.module.ts +0 -25
  230. package/src/lib/modules/errors/invalid-ip/invalid-ip.component.html +0 -16
  231. package/src/lib/modules/errors/invalid-ip/invalid-ip.component.scss +0 -0
  232. package/src/lib/modules/errors/invalid-ip/invalid-ip.component.spec.ts +0 -23
  233. package/src/lib/modules/errors/invalid-ip/invalid-ip.component.ts +0 -43
  234. package/src/lib/modules/intro/contact-support/contact-support.component.html +0 -30
  235. package/src/lib/modules/intro/contact-support/contact-support.component.scss +0 -60
  236. package/src/lib/modules/intro/contact-support/contact-support.component.spec.ts +0 -23
  237. package/src/lib/modules/intro/contact-support/contact-support.component.ts +0 -17
  238. package/src/lib/modules/intro/intro-routing.module.ts +0 -16
  239. package/src/lib/modules/intro/intro.module.ts +0 -21
  240. package/src/lib/modules/intro/lead-intro/lead-intro.component.html +0 -325
  241. package/src/lib/modules/intro/lead-intro/lead-intro.component.scss +0 -185
  242. package/src/lib/modules/intro/lead-intro/lead-intro.component.spec.ts +0 -23
  243. package/src/lib/modules/intro/lead-intro/lead-intro.component.ts +0 -120
  244. package/src/lib/modules/layout/components/csm-assign-confirmation/csm-assign-confirmation.component.html +0 -44
  245. package/src/lib/modules/layout/components/csm-assign-confirmation/csm-assign-confirmation.component.scss +0 -28
  246. package/src/lib/modules/layout/components/csm-assign-confirmation/csm-assign-confirmation.component.spec.ts +0 -23
  247. package/src/lib/modules/layout/components/csm-assign-confirmation/csm-assign-confirmation.component.ts +0 -24
  248. package/src/lib/modules/layout/content/content.component.html +0 -12
  249. package/src/lib/modules/layout/content/content.component.scss +0 -0
  250. package/src/lib/modules/layout/content/content.component.ts +0 -102
  251. package/src/lib/modules/layout/footer/footer.component.html +0 -29
  252. package/src/lib/modules/layout/footer/footer.component.scss +0 -7
  253. package/src/lib/modules/layout/footer/footer.component.spec.ts +0 -25
  254. package/src/lib/modules/layout/footer/footer.component.ts +0 -13
  255. package/src/lib/modules/layout/header/header-menu/header-menu.component.html +0 -27
  256. package/src/lib/modules/layout/header/header-menu/header-menu.component.scss +0 -4
  257. package/src/lib/modules/layout/header/header-menu/header-menu.component.spec.ts +0 -25
  258. package/src/lib/modules/layout/header/header-menu/header-menu.component.ts +0 -38
  259. package/src/lib/modules/layout/header/header.component.html +0 -90
  260. package/src/lib/modules/layout/header/header.component.scss +0 -7
  261. package/src/lib/modules/layout/header/header.component.spec.ts +0 -25
  262. package/src/lib/modules/layout/header/header.component.ts +0 -139
  263. package/src/lib/modules/layout/header/navbar/navbar.component.html +0 -156
  264. package/src/lib/modules/layout/header/navbar/navbar.component.scss +0 -223
  265. package/src/lib/modules/layout/header/navbar/navbar.component.spec.ts +0 -23
  266. package/src/lib/modules/layout/header/navbar/navbar.component.ts +0 -255
  267. package/src/lib/modules/layout/header/notifications-inner/notifications-inner.component.html +0 -200
  268. package/src/lib/modules/layout/header/notifications-inner/notifications-inner.component.scss +0 -139
  269. package/src/lib/modules/layout/header/notifications-inner/notifications-inner.component.ts +0 -76
  270. package/src/lib/modules/layout/header/page-title/page-title.component.html +0 -32
  271. package/src/lib/modules/layout/header/page-title/page-title.component.scss +0 -11
  272. package/src/lib/modules/layout/header/page-title/page-title.component.ts +0 -47
  273. package/src/lib/modules/layout/keenicon/icons.json +0 -1
  274. package/src/lib/modules/layout/keenicon/keenicon.component.html +0 -4
  275. package/src/lib/modules/layout/keenicon/keenicon.component.scss +0 -0
  276. package/src/lib/modules/layout/keenicon/keenicon.component.spec.ts +0 -23
  277. package/src/lib/modules/layout/keenicon/keenicon.component.ts +0 -30
  278. package/src/lib/modules/layout/layout/layout.component.html +0 -71
  279. package/src/lib/modules/layout/layout/layout.component.scss +0 -23
  280. package/src/lib/modules/layout/layout/layout.component.ts +0 -425
  281. package/src/lib/modules/layout/layout.module.ts +0 -129
  282. package/src/lib/modules/layout/scripts-init/scripts-init.component.html +0 -0
  283. package/src/lib/modules/layout/scripts-init/scripts-init.component.ts +0 -81
  284. package/src/lib/modules/layout/scroll-top/scroll-top.component.html +0 -1
  285. package/src/lib/modules/layout/scroll-top/scroll-top.component.ts +0 -75
  286. package/src/lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component.html +0 -70
  287. package/src/lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component.scss +0 -57
  288. package/src/lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component.spec.ts +0 -23
  289. package/src/lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component.ts +0 -136
  290. package/src/lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component.html +0 -26
  291. package/src/lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component.scss +0 -0
  292. package/src/lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component.spec.ts +0 -23
  293. package/src/lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component.ts +0 -36
  294. package/src/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.html +0 -761
  295. package/src/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.scss +0 -38
  296. package/src/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.spec.ts +0 -23
  297. package/src/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.ts +0 -130
  298. package/src/lib/modules/layout/sidebar/sidebar.component.html +0 -16
  299. package/src/lib/modules/layout/sidebar/sidebar.component.scss +0 -3
  300. package/src/lib/modules/layout/sidebar/sidebar.component.spec.ts +0 -23
  301. package/src/lib/modules/layout/sidebar/sidebar.component.ts +0 -203
  302. package/src/lib/modules/layout/toolbar/accounting/accounting.component.html +0 -84
  303. package/src/lib/modules/layout/toolbar/accounting/accounting.component.scss +0 -0
  304. package/src/lib/modules/layout/toolbar/accounting/accounting.component.spec.ts +0 -23
  305. package/src/lib/modules/layout/toolbar/accounting/accounting.component.ts +0 -14
  306. package/src/lib/modules/layout/toolbar/classic/classic.component.html +0 -69
  307. package/src/lib/modules/layout/toolbar/classic/classic.component.scss +0 -238
  308. package/src/lib/modules/layout/toolbar/classic/classic.component.spec.ts +0 -23
  309. package/src/lib/modules/layout/toolbar/classic/classic.component.ts +0 -389
  310. package/src/lib/modules/layout/toolbar/client-settings/client-settings.component.html +0 -4
  311. package/src/lib/modules/layout/toolbar/client-settings/client-settings.component.scss +0 -3
  312. package/src/lib/modules/layout/toolbar/client-settings/client-settings.component.spec.ts +0 -23
  313. package/src/lib/modules/layout/toolbar/client-settings/client-settings.component.ts +0 -91
  314. package/src/lib/modules/layout/toolbar/date-single-select/date-single-select.component.html +0 -22
  315. package/src/lib/modules/layout/toolbar/date-single-select/date-single-select.component.scss +0 -156
  316. package/src/lib/modules/layout/toolbar/date-single-select/date-single-select.component.spec.ts +0 -23
  317. package/src/lib/modules/layout/toolbar/date-single-select/date-single-select.component.ts +0 -238
  318. package/src/lib/modules/layout/toolbar/datepicker/datepicker.component.html +0 -14
  319. package/src/lib/modules/layout/toolbar/datepicker/datepicker.component.scss +0 -149
  320. package/src/lib/modules/layout/toolbar/datepicker/datepicker.component.spec.ts +0 -23
  321. package/src/lib/modules/layout/toolbar/datepicker/datepicker.component.ts +0 -183
  322. package/src/lib/modules/layout/toolbar/extended/extended.component.html +0 -100
  323. package/src/lib/modules/layout/toolbar/extended/extended.component.scss +0 -0
  324. package/src/lib/modules/layout/toolbar/extended/extended.component.spec.ts +0 -23
  325. package/src/lib/modules/layout/toolbar/extended/extended.component.ts +0 -12
  326. package/src/lib/modules/layout/toolbar/metrics-header/metrics-header.component.html +0 -311
  327. package/src/lib/modules/layout/toolbar/metrics-header/metrics-header.component.scss +0 -311
  328. package/src/lib/modules/layout/toolbar/metrics-header/metrics-header.component.spec.ts +0 -23
  329. package/src/lib/modules/layout/toolbar/metrics-header/metrics-header.component.ts +0 -1555
  330. package/src/lib/modules/layout/toolbar/reports/reports.component.html +0 -62
  331. package/src/lib/modules/layout/toolbar/reports/reports.component.scss +0 -0
  332. package/src/lib/modules/layout/toolbar/reports/reports.component.spec.ts +0 -23
  333. package/src/lib/modules/layout/toolbar/reports/reports.component.ts +0 -14
  334. package/src/lib/modules/layout/toolbar/saas/saas.component.html +0 -77
  335. package/src/lib/modules/layout/toolbar/saas/saas.component.scss +0 -0
  336. package/src/lib/modules/layout/toolbar/saas/saas.component.spec.ts +0 -23
  337. package/src/lib/modules/layout/toolbar/saas/saas.component.ts +0 -14
  338. package/src/lib/modules/layout/toolbar/single-clientstore-date/single-clientstore-date.component.html +0 -26
  339. package/src/lib/modules/layout/toolbar/single-clientstore-date/single-clientstore-date.component.scss +0 -176
  340. package/src/lib/modules/layout/toolbar/single-clientstore-date/single-clientstore-date.component.spec.ts +0 -23
  341. package/src/lib/modules/layout/toolbar/single-clientstore-date/single-clientstore-date.component.ts +0 -235
  342. package/src/lib/modules/layout/toolbar/single-store/single-store.component.html +0 -39
  343. package/src/lib/modules/layout/toolbar/single-store/single-store.component.scss +0 -176
  344. package/src/lib/modules/layout/toolbar/single-store/single-store.component.spec.ts +0 -23
  345. package/src/lib/modules/layout/toolbar/single-store/single-store.component.ts +0 -188
  346. package/src/lib/modules/layout/toolbar/single-storedate/single-storedate.component.html +0 -17
  347. package/src/lib/modules/layout/toolbar/single-storedate/single-storedate.component.scss +0 -172
  348. package/src/lib/modules/layout/toolbar/single-storedate/single-storedate.component.spec.ts +0 -23
  349. package/src/lib/modules/layout/toolbar/single-storedate/single-storedate.component.ts +0 -179
  350. package/src/lib/modules/layout/toolbar/storesingle/storesingle.component.html +0 -4
  351. package/src/lib/modules/layout/toolbar/storesingle/storesingle.component.scss +0 -19
  352. package/src/lib/modules/layout/toolbar/storesingle/storesingle.component.spec.ts +0 -23
  353. package/src/lib/modules/layout/toolbar/storesingle/storesingle.component.ts +0 -105
  354. package/src/lib/modules/layout/toolbar/toolbar.component.html +0 -64
  355. package/src/lib/modules/layout/toolbar/toolbar.component.scss +0 -0
  356. package/src/lib/modules/layout/toolbar/toolbar.component.spec.ts +0 -25
  357. package/src/lib/modules/layout/toolbar/toolbar.component.ts +0 -400
  358. package/src/lib/modules/layout/toolbar/traffic-header/traffic-header/traffic-header.component.html +0 -259
  359. package/src/lib/modules/layout/toolbar/traffic-header/traffic-header/traffic-header.component.scss +0 -305
  360. package/src/lib/modules/layout/toolbar/traffic-header/traffic-header/traffic-header.component.spec.ts +0 -23
  361. package/src/lib/modules/layout/toolbar/traffic-header/traffic-header/traffic-header.component.ts +0 -1202
  362. package/src/lib/modules/layout/toolbar/traffic-nob/traffic-nob.component.html +0 -199
  363. package/src/lib/modules/layout/toolbar/traffic-nob/traffic-nob.component.scss +0 -311
  364. package/src/lib/modules/layout/toolbar/traffic-nob/traffic-nob.component.spec.ts +0 -23
  365. package/src/lib/modules/layout/toolbar/traffic-nob/traffic-nob.component.ts +0 -899
  366. package/src/lib/modules/layout/toolbar/trax-header/trax-header.component.html +0 -204
  367. package/src/lib/modules/layout/toolbar/trax-header/trax-header.component.scss +0 -311
  368. package/src/lib/modules/layout/toolbar/trax-header/trax-header.component.spec.ts +0 -23
  369. package/src/lib/modules/layout/toolbar/trax-header/trax-header.component.ts +0 -1045
  370. package/src/lib/modules/layout/toolbar/trax-withoutdate/trax-withoutdate.component.html +0 -190
  371. package/src/lib/modules/layout/toolbar/trax-withoutdate/trax-withoutdate.component.scss +0 -311
  372. package/src/lib/modules/layout/toolbar/trax-withoutdate/trax-withoutdate.component.spec.ts +0 -23
  373. package/src/lib/modules/layout/toolbar/trax-withoutdate/trax-withoutdate.component.ts +0 -825
  374. package/src/lib/modules/layout/toolbar/zone-header/zone-header.component.html +0 -259
  375. package/src/lib/modules/layout/toolbar/zone-header/zone-header.component.scss +0 -305
  376. package/src/lib/modules/layout/toolbar/zone-header/zone-header.component.spec.ts +0 -23
  377. package/src/lib/modules/layout/toolbar/zone-header/zone-header.component.ts +0 -1242
  378. package/src/lib/modules/notification/conformation/conformation.component.html +0 -25
  379. package/src/lib/modules/notification/conformation/conformation.component.scss +0 -0
  380. package/src/lib/modules/notification/conformation/conformation.component.spec.ts +0 -23
  381. package/src/lib/modules/notification/conformation/conformation.component.ts +0 -23
  382. package/src/lib/modules/notification/notification/notification.component.html +0 -209
  383. package/src/lib/modules/notification/notification/notification.component.scss +0 -211
  384. package/src/lib/modules/notification/notification/notification.component.spec.ts +0 -23
  385. package/src/lib/modules/notification/notification/notification.component.ts +0 -310
  386. package/src/lib/modules/notification/notification-routing.module.ts +0 -20
  387. package/src/lib/modules/notification/notification.module.ts +0 -21
  388. package/src/lib/pipes/customDate.pipe.ts +0 -18
  389. package/src/lib/routes/route-wraper-modules/analyse-wrapper.module.ts +0 -12
  390. package/src/lib/routes/route-wraper-modules/edge-wrapper.module.ts +0 -11
  391. package/src/lib/routes/route-wraper-modules/manage-wrapper.module.ts +0 -11
  392. package/src/lib/routes/route-wraper-modules/profile-wrapper.module.ts +0 -12
  393. package/src/lib/routes/route-wraper-modules/store-wrapper.module.ts +0 -11
  394. package/src/lib/routes/route-wraper-modules/ticket-wrapper.module.ts +0 -10
  395. package/src/lib/routes/routing.ts +0 -56
  396. package/src/lib/services/auth.service.ts +0 -178
  397. package/src/lib/services/notification.service.spec.ts +0 -16
  398. package/src/lib/services/notification.service.ts +0 -73
  399. package/src/lib/services/toast.service.ts +0 -82
  400. package/tsconfig.lib.json +0 -14
  401. package/tsconfig.lib.prod.json +0 -10
  402. package/tsconfig.spec.json +0 -14
@@ -0,0 +1,314 @@
1
+ import { Component, ViewChild, HostListener, } from '@angular/core';
2
+ import { NavigationEnd } from '@angular/router';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "tango-app-ui-global";
5
+ import * as i2 from "@angular/router";
6
+ import * as i3 from "../../../services/auth.service";
7
+ import * as i4 from "../../../services/toast.service";
8
+ import * as i5 from "@angular/common";
9
+ import * as i6 from "../header/header.component";
10
+ import * as i7 from "../content/content.component";
11
+ import * as i8 from "../footer/footer.component";
12
+ import * as i9 from "../scripts-init/scripts-init.component";
13
+ import * as i10 from "../toolbar/toolbar.component";
14
+ import * as i11 from "../sidebar/sidebar.component";
15
+ import * as i12 from "../scroll-top/scroll-top.component";
16
+ export class LayoutComponent {
17
+ initService;
18
+ layout;
19
+ router;
20
+ activatedRoute;
21
+ authService;
22
+ toastService;
23
+ gs;
24
+ unsubscribe = [];
25
+ // Public variables
26
+ // page
27
+ pageContainerCSSClasses;
28
+ // header
29
+ appHeaderDefaultClass = '';
30
+ appHeaderDisplay;
31
+ appHeaderDefaultStickyEnabled;
32
+ appHeaderDefaultStickyAttributes = {};
33
+ appHeaderDefaultMinimizeEnabled;
34
+ appHeaderDefaultMinimizeAttributes = {};
35
+ // toolbar
36
+ appToolbarDisplay;
37
+ appToolbarLayout;
38
+ appToolbarCSSClass = '';
39
+ appToolbarSwapEnabled;
40
+ appToolbarSwapAttributes = {};
41
+ appToolbarStickyEnabled;
42
+ appToolbarStickyAttributes = {};
43
+ appToolbarMinimizeEnabled;
44
+ appToolbarMinimizeAttributes = {};
45
+ // content
46
+ appContentContiner;
47
+ appContentContainerClass;
48
+ contentCSSClasses;
49
+ contentContainerCSSClass;
50
+ // sidebar
51
+ appSidebarDefaultClass;
52
+ appSidebarDefaultDrawerEnabled;
53
+ appSidebarDefaultDrawerAttributes = {};
54
+ appSidebarDisplay;
55
+ appSidebarDefaultStickyEnabled;
56
+ appSidebarDefaultStickyAttributes = {};
57
+ ktSidebar;
58
+ /// sidebar panel
59
+ appSidebarPanelDisplay;
60
+ // footer
61
+ appFooterDisplay;
62
+ appFooterCSSClass = '';
63
+ appFooterContainer = '';
64
+ appFooterContainerCSSClass = '';
65
+ appFooterFixedDesktop;
66
+ appFooterFixedMobile;
67
+ // scrolltop
68
+ scrolltopDisplay;
69
+ ktAside;
70
+ ktHeaderMobile;
71
+ ktHeader;
72
+ constructor(initService, layout, router, activatedRoute, authService, toastService, gs) {
73
+ this.initService = initService;
74
+ this.layout = layout;
75
+ this.router = router;
76
+ this.activatedRoute = activatedRoute;
77
+ this.authService = authService;
78
+ this.toastService = toastService;
79
+ this.gs = gs;
80
+ // define layout type and load layout
81
+ this.router.events.subscribe((event) => {
82
+ if (event instanceof NavigationEnd) {
83
+ const currentLayoutType = this.layout.currentLayoutTypeSubject.value;
84
+ const nextLayoutType = this.activatedRoute?.firstChild?.snapshot.data.layout ||
85
+ this.layout.getBaseLayoutTypeFromLocalStorage();
86
+ if (currentLayoutType !== nextLayoutType || !currentLayoutType) {
87
+ this.layout.currentLayoutTypeSubject.next(nextLayoutType);
88
+ this.initService.reInitProps(nextLayoutType);
89
+ }
90
+ }
91
+ });
92
+ }
93
+ ngOnInit() {
94
+ const subscr = this.layout.layoutConfigSubject
95
+ .asObservable()
96
+ .subscribe((config) => {
97
+ this.updateProps(config);
98
+ });
99
+ this.unsubscribe.push(subscr);
100
+ }
101
+ updateProps(config) {
102
+ this.scrolltopDisplay = this.layout.getProp('scrolltop.display', config);
103
+ this.pageContainerCSSClasses =
104
+ this.layout.getStringCSSClasses('pageContainer');
105
+ this.appHeaderDefaultClass = this.layout.getProp('app.header.default.class', config);
106
+ this.appHeaderDisplay = this.layout.getProp('app.header.display', config);
107
+ this.appFooterDisplay = this.layout.getProp('app.footer.display', config);
108
+ this.appSidebarDisplay = this.layout.getProp('app.sidebar.display', config);
109
+ this.appSidebarPanelDisplay = this.layout.getProp('app.sidebar-panel.display', config);
110
+ this.appToolbarDisplay = this.layout.getProp('app.toolbar.display', config);
111
+ this.contentCSSClasses = this.layout.getStringCSSClasses('content');
112
+ this.contentContainerCSSClass =
113
+ this.layout.getStringCSSClasses('contentContainer');
114
+ this.appContentContiner = this.layout.getProp('app.content.container', config);
115
+ this.appContentContainerClass = this.layout.getProp('app.content.containerClass', config);
116
+ // footer
117
+ if (this.appFooterDisplay) {
118
+ this.updateFooter(config);
119
+ }
120
+ // sidebar
121
+ if (this.appSidebarDisplay) {
122
+ this.updateSidebar(config);
123
+ }
124
+ // header
125
+ if (this.appHeaderDisplay) {
126
+ this.updateHeader(config);
127
+ }
128
+ // toolbar
129
+ if (this.appToolbarDisplay) {
130
+ this.updateToolbar(config);
131
+ }
132
+ }
133
+ updateSidebar(config) {
134
+ this.appSidebarDefaultClass = this.layout.getProp('app.sidebar.default.class', config);
135
+ this.appSidebarDefaultDrawerEnabled = this.layout.getProp('app.sidebar.default.drawer.enabled', config);
136
+ if (this.appSidebarDefaultDrawerEnabled) {
137
+ this.appSidebarDefaultDrawerAttributes = this.layout.getProp('app.sidebar.default.drawer.attributes', config);
138
+ }
139
+ this.appSidebarDefaultStickyEnabled = this.layout.getProp('app.sidebar.default.sticky.enabled', config);
140
+ if (this.appSidebarDefaultStickyEnabled) {
141
+ this.appSidebarDefaultStickyAttributes = this.layout.getProp('app.sidebar.default.sticky.attributes', config);
142
+ }
143
+ setTimeout(() => {
144
+ const sidebarElement = document.getElementById('kt_app_sidebar');
145
+ // sidebar
146
+ if (this.appSidebarDisplay && sidebarElement) {
147
+ const sidebarAttributes = sidebarElement
148
+ .getAttributeNames()
149
+ .filter((t) => t.indexOf('data-') > -1);
150
+ sidebarAttributes.forEach((attr) => sidebarElement.removeAttribute(attr));
151
+ if (this.appSidebarDefaultDrawerEnabled) {
152
+ for (const key in this.appSidebarDefaultDrawerAttributes) {
153
+ if (this.appSidebarDefaultDrawerAttributes.hasOwnProperty(key)) {
154
+ sidebarElement.setAttribute(key, this.appSidebarDefaultDrawerAttributes[key]);
155
+ }
156
+ }
157
+ }
158
+ if (this.appSidebarDefaultStickyEnabled) {
159
+ for (const key in this.appSidebarDefaultStickyAttributes) {
160
+ if (this.appSidebarDefaultStickyAttributes.hasOwnProperty(key)) {
161
+ sidebarElement.setAttribute(key, this.appSidebarDefaultStickyAttributes[key]);
162
+ }
163
+ }
164
+ }
165
+ }
166
+ }, 0);
167
+ }
168
+ updateHeader(config) {
169
+ this.appHeaderDefaultStickyEnabled = this.layout.getProp('app.header.default.sticky.enabled', config);
170
+ if (this.appHeaderDefaultStickyEnabled) {
171
+ this.appHeaderDefaultStickyAttributes = this.layout.getProp('app.header.default.sticky.attributes', config);
172
+ }
173
+ this.appHeaderDefaultMinimizeEnabled = this.layout.getProp('app.header.default.minimize.enabled', config);
174
+ if (this.appHeaderDefaultMinimizeEnabled) {
175
+ this.appHeaderDefaultMinimizeAttributes = this.layout.getProp('app.header.default.minimize.attributes', config);
176
+ }
177
+ setTimeout(() => {
178
+ const headerElement = document.getElementById('kt_app_header');
179
+ // header
180
+ if (this.appHeaderDisplay && headerElement) {
181
+ const headerAttributes = headerElement
182
+ .getAttributeNames()
183
+ .filter((t) => t.indexOf('data-') > -1);
184
+ headerAttributes.forEach((attr) => headerElement.removeAttribute(attr));
185
+ if (this.appHeaderDefaultStickyEnabled) {
186
+ for (const key in this.appHeaderDefaultStickyAttributes) {
187
+ if (this.appHeaderDefaultStickyAttributes.hasOwnProperty(key)) {
188
+ headerElement.setAttribute(key, this.appHeaderDefaultStickyAttributes[key]);
189
+ }
190
+ }
191
+ }
192
+ if (this.appHeaderDefaultMinimizeEnabled) {
193
+ for (const key in this.appHeaderDefaultMinimizeAttributes) {
194
+ if (this.appHeaderDefaultMinimizeAttributes.hasOwnProperty(key)) {
195
+ headerElement.setAttribute(key, this.appHeaderDefaultMinimizeAttributes[key]);
196
+ }
197
+ }
198
+ }
199
+ }
200
+ }, 0);
201
+ }
202
+ updateFooter(config) {
203
+ this.appFooterCSSClass = this.layout.getProp('app.footer.class', config);
204
+ this.appFooterContainer = this.layout.getProp('app.footer.container', config);
205
+ this.appFooterContainerCSSClass = this.layout.getProp('app.footer.containerClass', config);
206
+ if (this.appFooterContainer === 'fixed') {
207
+ this.appFooterContainerCSSClass += ' container-xxl';
208
+ }
209
+ else {
210
+ if (this.appFooterContainer === 'fluid') {
211
+ this.appFooterContainerCSSClass += ' container-fluid';
212
+ }
213
+ }
214
+ this.appFooterFixedDesktop = this.layout.getProp('app.footer.fixed.desktop', config);
215
+ if (this.appFooterFixedDesktop) {
216
+ document.body.setAttribute('data-kt-app-footer-fixed', 'true');
217
+ }
218
+ this.appFooterFixedMobile = this.layout.getProp('app.footer.fixed.mobile');
219
+ if (this.appFooterFixedMobile) {
220
+ document.body.setAttribute('data-kt-app-footer-fixed-mobile', 'true');
221
+ }
222
+ }
223
+ updateToolbar(config) {
224
+ this.appToolbarLayout = this.layout.getProp('app.toolbar.layout', config);
225
+ this.appToolbarSwapEnabled = this.layout.getProp('app.toolbar.swap.enabled', config);
226
+ if (this.appToolbarSwapEnabled) {
227
+ this.appToolbarSwapAttributes = this.layout.getProp('app.toolbar.swap.attributes', config);
228
+ }
229
+ this.appToolbarStickyEnabled = this.layout.getProp('app.toolbar.sticky.enabled', config);
230
+ if (this.appToolbarStickyEnabled) {
231
+ this.appToolbarStickyAttributes = this.layout.getProp('app.toolbar.sticky.attributes', config);
232
+ }
233
+ this.appToolbarCSSClass =
234
+ this.layout.getProp('app.toolbar.class', config) || '';
235
+ this.appToolbarMinimizeEnabled = this.layout.getProp('app.toolbar.minimize.enabled', config);
236
+ if (this.appToolbarMinimizeEnabled) {
237
+ this.appToolbarMinimizeAttributes = this.layout.getProp('app.toolbar.minimize.attributes', config);
238
+ this.appToolbarCSSClass += ' app-toolbar-minimize';
239
+ }
240
+ setTimeout(() => {
241
+ const toolbarElement = document.getElementById('kt_app_toolbar');
242
+ // toolbar
243
+ if (this.appToolbarDisplay && toolbarElement) {
244
+ const toolbarAttributes = toolbarElement
245
+ .getAttributeNames()
246
+ .filter((t) => t.indexOf('data-') > -1);
247
+ toolbarAttributes.forEach((attr) => toolbarElement.removeAttribute(attr));
248
+ if (this.appToolbarSwapEnabled) {
249
+ for (const key in this.appToolbarSwapAttributes) {
250
+ if (this.appToolbarSwapAttributes.hasOwnProperty(key)) {
251
+ toolbarElement.setAttribute(key, this.appToolbarSwapAttributes[key]);
252
+ }
253
+ }
254
+ }
255
+ if (this.appToolbarStickyEnabled) {
256
+ for (const key in this.appToolbarStickyAttributes) {
257
+ if (this.appToolbarStickyAttributes.hasOwnProperty(key)) {
258
+ toolbarElement.setAttribute(key, this.appToolbarStickyAttributes[key]);
259
+ }
260
+ }
261
+ }
262
+ if (this.appToolbarMinimizeEnabled) {
263
+ for (const key in this.appToolbarMinimizeAttributes) {
264
+ if (this.appToolbarMinimizeAttributes.hasOwnProperty(key)) {
265
+ toolbarElement.setAttribute(key, this.appToolbarMinimizeAttributes[key]);
266
+ }
267
+ }
268
+ }
269
+ }
270
+ }, 0);
271
+ }
272
+ ngOnDestroy() {
273
+ this.unsubscribe.forEach((sb) => sb.unsubscribe());
274
+ }
275
+ previousScroll = 0;
276
+ // appHeaderDisplay = true; // Initially visible
277
+ isToolbarFixed = false;
278
+ onScroll() {
279
+ const currentScroll = window.scrollY;
280
+ if (currentScroll > this.previousScroll && currentScroll > 100) {
281
+ // Hide header on scroll down
282
+ this.appHeaderDisplay = false;
283
+ this.isToolbarFixed = true; // Fix toolbar
284
+ }
285
+ else {
286
+ // Show header on scroll up
287
+ this.appHeaderDisplay = true;
288
+ this.isToolbarFixed = currentScroll > 100; // Keep toolbar fixed if scrolled beyond 100px
289
+ }
290
+ this.previousScroll = currentScroll;
291
+ }
292
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LayoutComponent, deps: [{ token: i1.LayoutInitService }, { token: i1.LayoutService }, { token: i2.Router }, { token: i2.ActivatedRoute }, { token: i3.AuthService }, { token: i4.ToastService }, { token: i1.GlobalStateService }], target: i0.ɵɵFactoryTarget.Component });
293
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: LayoutComponent, selector: "lib-layout", host: { listeners: { "window:scroll": "onScroll()" } }, viewQueries: [{ propertyName: "ktSidebar", first: true, predicate: ["ktSidebar"], descendants: true, static: true }, { propertyName: "ktAside", first: true, predicate: ["ktAside"], descendants: true, static: true }, { propertyName: "ktHeaderMobile", first: true, predicate: ["ktHeaderMobile"], descendants: true, static: true }, { propertyName: "ktHeader", first: true, predicate: ["ktHeader"], descendants: true, static: true }], ngImport: i0, template: "<!--begin::App-->\r\n<div class=\"d-flex flex-column flex-root app-root\" id=\"kt_app_root\">\r\n <!--begin::Page-->\r\n <div class=\"app-page flex-column flex-column-fluid\" id=\"kt_app_page\">\r\n <ng-container *ngIf=\"appHeaderDisplay\">\r\n <!--begin::Header-->\r\n <lib-header [ngClass]=\"appHeaderDefaultClass\" id=\"kt_app_header\" class=\"app-header\" data-kt-sticky=\"true\" data-kt-sticky-activate=\"{default: true, lg: true}\" data-kt-sticky-name=\"app-header-minimize\" data-kt-sticky-offset=\"{default: '200px', lg: '0'}\" data-kt-sticky-animation=\"false\">\r\n </lib-header>\r\n <!--end::Header-->\r\n </ng-container>\r\n\r\n <!--begin::Wrapper-->\r\n <div class=\"app-wrapper flex-column flex-row-fluid\" id=\"kt_app_wrapper\">\r\n\r\n <ng-container *ngIf=\"appSidebarDisplay\">\r\n <!--begin::sidebar-->\r\n <lib-sidebar #ktSidebar id=\"kt_app_sidebar\" class=\"app-sidebar flex-column\" [ngClass]=\"appSidebarDefaultClass\">\r\n </lib-sidebar>\r\n <!--end::sidebar-->\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"appSidebarPanelDisplay\">\r\n <!-- TODO: app sidebar panel -->\r\n </ng-container>\r\n <!--begin::Main-->\r\n <div class=\"app-main content flex-column flex-row-fluid\" id=\"kt_app_main\">\r\n <!--begin::Content wrapper-->\r\n <ng-container *ngIf=\"appToolbarDisplay\">\r\n <lib-toolbar [ngClass]=\"{'fixed-toolbar': isToolbarFixed}\" class=\"app-toolbar\" [ngClass]=\"appToolbarCSSClass\" id=\"kt_app_toolbar\"\r\n [appToolbarLayout]=\"appToolbarLayout\"></lib-toolbar>\r\n </ng-container>\r\n <div class=\"d-flex flex-column flex-column-fluid mt-10\">\r\n \r\n <lib-content id=\" kt_app_content\" class=\"app-content mt-15\" [ngClass]=\"contentCSSClasses\"\r\n [contentContainerCSSClass]=\"contentContainerCSSClass\" [appContentContiner]=\"appContentContiner\"\r\n [appContentContainerClass]=\"appContentContainerClass\">\r\n </lib-content>\r\n </div>\r\n <!--end::Content wrapper-->\r\n <ng-container *ngIf=\"appFooterDisplay\">\r\n <lib-footer class=\"app-footer\" [ngClass]=\"appFooterCSSClass\" id=\"kt_app_footer\"\r\n [appFooterContainerCSSClass]=\"appFooterContainerCSSClass\"></lib-footer>\r\n </ng-container>\r\n </div>\r\n <!--end:::Main-->\r\n </div>\r\n <!--end::Wrapper-->\r\n\r\n </div>\r\n <!--end::Page-->\r\n</div>\r\n<!--end::App-->\r\n\r\n<lib-scripts-init></lib-scripts-init>\r\n<ng-container>\r\n <lib-scroll-top id=\"kt_scrolltop\" class=\"scrolltop\" data-kt-scrolltop=\"true\"></lib-scroll-top>\r\n</ng-container>\r\n<!-- begin:: Drawers -->\r\n<!-- <lib-activity-drawer></lib-activity-drawer> -->\r\n<!-- <lib-messenger-drawer></lib-messenger-drawer> -->\r\n<!-- end:: Drawers -->\r\n\r\n<!-- end:: Engage -->\r\n<!-- <lib-engages></lib-engages> -->\r\n<!-- end:: Engage -->\r\n\r\n<!-- begin:: Modals -->\r\n<!-- <lib-main-modal></lib-main-modal> -->\r\n<!-- <lib-invite-users-modal></lib-invite-users-modal> -->\r\n<!-- <lib-upgrade-plan-modal></lib-upgrade-plan-modal> -->\r\n<!-- end:: Modals -->\r\n", styles: [":host{height:100%;margin:0}:host .flex-root{height:100%}.page-loaded app-layout{opacity:1;transition:opacity 1s ease-in-out}.fixed-toolbar{position:fixed;top:0;width:100%;background:#fff;z-index:1000;box-shadow:0 4px 6px #0000001a}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.HeaderComponent, selector: "lib-header" }, { kind: "component", type: i7.ContentComponent, selector: "lib-content", inputs: ["contentContainerCSSClass", "appContentContiner", "appContentContainerClass"] }, { kind: "component", type: i8.FooterComponent, selector: "lib-footer", inputs: ["appFooterContainerCSSClass"] }, { kind: "component", type: i9.ScriptsInitComponent, selector: "lib-scripts-init" }, { kind: "component", type: i10.ToolbarComponent, selector: "lib-toolbar", inputs: ["currentLayoutType", "appToolbarLayout"] }, { kind: "component", type: i11.SidebarComponent, selector: "lib-sidebar" }, { kind: "component", type: i12.LayoutScrollTopComponent, selector: "lib-scroll-top" }] });
294
+ }
295
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LayoutComponent, decorators: [{
296
+ type: Component,
297
+ args: [{ selector: 'lib-layout', template: "<!--begin::App-->\r\n<div class=\"d-flex flex-column flex-root app-root\" id=\"kt_app_root\">\r\n <!--begin::Page-->\r\n <div class=\"app-page flex-column flex-column-fluid\" id=\"kt_app_page\">\r\n <ng-container *ngIf=\"appHeaderDisplay\">\r\n <!--begin::Header-->\r\n <lib-header [ngClass]=\"appHeaderDefaultClass\" id=\"kt_app_header\" class=\"app-header\" data-kt-sticky=\"true\" data-kt-sticky-activate=\"{default: true, lg: true}\" data-kt-sticky-name=\"app-header-minimize\" data-kt-sticky-offset=\"{default: '200px', lg: '0'}\" data-kt-sticky-animation=\"false\">\r\n </lib-header>\r\n <!--end::Header-->\r\n </ng-container>\r\n\r\n <!--begin::Wrapper-->\r\n <div class=\"app-wrapper flex-column flex-row-fluid\" id=\"kt_app_wrapper\">\r\n\r\n <ng-container *ngIf=\"appSidebarDisplay\">\r\n <!--begin::sidebar-->\r\n <lib-sidebar #ktSidebar id=\"kt_app_sidebar\" class=\"app-sidebar flex-column\" [ngClass]=\"appSidebarDefaultClass\">\r\n </lib-sidebar>\r\n <!--end::sidebar-->\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"appSidebarPanelDisplay\">\r\n <!-- TODO: app sidebar panel -->\r\n </ng-container>\r\n <!--begin::Main-->\r\n <div class=\"app-main content flex-column flex-row-fluid\" id=\"kt_app_main\">\r\n <!--begin::Content wrapper-->\r\n <ng-container *ngIf=\"appToolbarDisplay\">\r\n <lib-toolbar [ngClass]=\"{'fixed-toolbar': isToolbarFixed}\" class=\"app-toolbar\" [ngClass]=\"appToolbarCSSClass\" id=\"kt_app_toolbar\"\r\n [appToolbarLayout]=\"appToolbarLayout\"></lib-toolbar>\r\n </ng-container>\r\n <div class=\"d-flex flex-column flex-column-fluid mt-10\">\r\n \r\n <lib-content id=\" kt_app_content\" class=\"app-content mt-15\" [ngClass]=\"contentCSSClasses\"\r\n [contentContainerCSSClass]=\"contentContainerCSSClass\" [appContentContiner]=\"appContentContiner\"\r\n [appContentContainerClass]=\"appContentContainerClass\">\r\n </lib-content>\r\n </div>\r\n <!--end::Content wrapper-->\r\n <ng-container *ngIf=\"appFooterDisplay\">\r\n <lib-footer class=\"app-footer\" [ngClass]=\"appFooterCSSClass\" id=\"kt_app_footer\"\r\n [appFooterContainerCSSClass]=\"appFooterContainerCSSClass\"></lib-footer>\r\n </ng-container>\r\n </div>\r\n <!--end:::Main-->\r\n </div>\r\n <!--end::Wrapper-->\r\n\r\n </div>\r\n <!--end::Page-->\r\n</div>\r\n<!--end::App-->\r\n\r\n<lib-scripts-init></lib-scripts-init>\r\n<ng-container>\r\n <lib-scroll-top id=\"kt_scrolltop\" class=\"scrolltop\" data-kt-scrolltop=\"true\"></lib-scroll-top>\r\n</ng-container>\r\n<!-- begin:: Drawers -->\r\n<!-- <lib-activity-drawer></lib-activity-drawer> -->\r\n<!-- <lib-messenger-drawer></lib-messenger-drawer> -->\r\n<!-- end:: Drawers -->\r\n\r\n<!-- end:: Engage -->\r\n<!-- <lib-engages></lib-engages> -->\r\n<!-- end:: Engage -->\r\n\r\n<!-- begin:: Modals -->\r\n<!-- <lib-main-modal></lib-main-modal> -->\r\n<!-- <lib-invite-users-modal></lib-invite-users-modal> -->\r\n<!-- <lib-upgrade-plan-modal></lib-upgrade-plan-modal> -->\r\n<!-- end:: Modals -->\r\n", styles: [":host{height:100%;margin:0}:host .flex-root{height:100%}.page-loaded app-layout{opacity:1;transition:opacity 1s ease-in-out}.fixed-toolbar{position:fixed;top:0;width:100%;background:#fff;z-index:1000;box-shadow:0 4px 6px #0000001a}\n"] }]
298
+ }], ctorParameters: () => [{ type: i1.LayoutInitService }, { type: i1.LayoutService }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i3.AuthService }, { type: i4.ToastService }, { type: i1.GlobalStateService }], propDecorators: { ktSidebar: [{
299
+ type: ViewChild,
300
+ args: ['ktSidebar', { static: true }]
301
+ }], ktAside: [{
302
+ type: ViewChild,
303
+ args: ['ktAside', { static: true }]
304
+ }], ktHeaderMobile: [{
305
+ type: ViewChild,
306
+ args: ['ktHeaderMobile', { static: true }]
307
+ }], ktHeader: [{
308
+ type: ViewChild,
309
+ args: ['ktHeader', { static: true }]
310
+ }], onScroll: [{
311
+ type: HostListener,
312
+ args: ['window:scroll', []]
313
+ }] } });
314
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFwcC1zaGFyZWQvc3JjL2xpYi9tb2R1bGVzL2xheW91dC9sYXlvdXQvbGF5b3V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFwcC1zaGFyZWQvc3JjL2xpYi9tb2R1bGVzL2xheW91dC9sYXlvdXQvbGF5b3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsU0FBUyxFQUdULFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWtCLGFBQWEsRUFBVSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7Ozs7Ozs7OztBQVl4RSxNQUFNLE9BQU8sZUFBZTtJQXVEaEI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUE1REYsV0FBVyxHQUFtQixFQUFFLENBQUM7SUFFekMsbUJBQW1CO0lBQ25CLE9BQU87SUFDUCx1QkFBdUIsQ0FBUztJQUNoQyxTQUFTO0lBQ1QscUJBQXFCLEdBQVcsRUFBRSxDQUFDO0lBQ25DLGdCQUFnQixDQUFVO0lBQzFCLDZCQUE2QixDQUFVO0lBQ3ZDLGdDQUFnQyxHQUFtQyxFQUFFLENBQUM7SUFDdEUsK0JBQStCLENBQVU7SUFDekMsa0NBQWtDLEdBQW1DLEVBQUUsQ0FBQztJQUN4RSxVQUFVO0lBQ1YsaUJBQWlCLENBQVU7SUFDM0IsZ0JBQWdCLENBQTZEO0lBQzdFLGtCQUFrQixHQUFXLEVBQUUsQ0FBQztJQUNoQyxxQkFBcUIsQ0FBVTtJQUMvQix3QkFBd0IsR0FBbUMsRUFBRSxDQUFDO0lBQzlELHVCQUF1QixDQUFVO0lBQ2pDLDBCQUEwQixHQUFtQyxFQUFFLENBQUM7SUFDaEUseUJBQXlCLENBQVU7SUFDbkMsNEJBQTRCLEdBQW1DLEVBQUUsQ0FB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LGFBQWEsR0FBRyxHQUFHLENBQUMsQ0FBQyw4Q0FBOEM7U0FDMUY7UUFFRCxJQUFJLENBQUMsY0FBYyxHQUFHLGFBQWEsQ0FBQztJQUN0QyxDQUFDO3dHQW5aVSxlQUFlOzRGQUFmLGVBQWUseWhCQ3BCNUIsK3BHQXVFQTs7NEZEbkRhLGVBQWU7a0JBTDNCLFNBQVM7K0JBQ0UsWUFBWTswUEF3Q29CLFNBQVM7c0JBQWxELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFjQSxPQUFPO3NCQUE5QyxTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ1MsY0FBYztzQkFBNUQsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ0osUUFBUTtzQkFBaEQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQWlWdkMsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBFbGVtZW50UmVmLFxyXG4gIE9uRGVzdHJveSxcclxuICBIb3N0TGlzdGVuZXIsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlLCBJTGF5b3V0LCBMYXlvdXRUeXBlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcbmltcG9ydCB7IExheW91dEluaXRTZXJ2aWNlLCBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1sYXlvdXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9sYXlvdXQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2xheW91dC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTGF5b3V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgdW5zdWJzY3JpYmU6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIC8vIFB1YmxpYyB2YXJpYWJsZXNcclxuICAvLyBwYWdlXHJcbiAgcGFnZUNvbnRhaW5lckNTU0NsYXNzZXM6IHN0cmluZztcclxuICAvLyBoZWFkZXJcclxuICBhcHBIZWFkZXJEZWZhdWx0Q2xhc3M6IHN0cmluZyA9ICcnO1xyXG4gIGFwcEhlYWRlckRpc3BsYXk6IGJvb2xlYW47XHJcbiAgYXBwSGVhZGVyRGVmYXVsdFN0aWNreUVuYWJsZWQ6IGJvb2xlYW47XHJcbiAgYXBwSGVhZGVyRGVmYXVsdFN0aWNreUF0dHJpYnV0ZXM6IHsgW2F0dHJOYW1lOiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xyXG4gIGFwcEhlYWRlckRlZmF1bHRNaW5pbWl6ZUVuYWJsZWQ6IGJvb2xlYW47XHJcbiAgYXBwSGVhZGVyRGVmYXVsdE1pbmltaXplQXR0cmlidXRlczogeyBbYXR0ck5hbWU6IHN0cmluZ106IHN0cmluZyB9ID0ge307XHJcbiAgLy8gdG9vbGJhclxyXG4gIGFwcFRvb2xiYXJEaXNwbGF5OiBib29sZWFuO1xyXG4gIGFwcFRvb2xiYXJMYXlvdXQ6ICdjbGFzc2ljJyB8ICdhY2NvdW50aW5nJyB8ICdleHRlbmRlZCcgfCAncmVwb3J0cycgfCAnc2Fhcyc7XHJcbiAgYXBwVG9vbGJhckNTU0NsYXNzOiBzdHJpbmcgPSAnJztcclxuICBhcHBUb29sYmFyU3dhcEVuYWJsZWQ6IGJvb2xlYW47XHJcbiAgYXBwVG9vbGJhclN3YXBBdHRyaWJ1dGVzOiB7IFthdHRyTmFtZTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcclxuICBhcHBUb29sYmFyU3RpY2t5RW5hYmxlZDogYm9vbGVhbjtcclxuICBhcHBUb29sYmFyU3RpY2t5QXR0cmlidXRlczogeyBbYXR0ck5hbWU6IHN0cmluZ106IHN0cmluZyB9ID0ge307XHJcbiAgYXBwVG9vbGJhck1pbmltaXplRW5hYmxlZDogYm9vbGVhbjtcclxuICBhcHBUb29sYmFyTWluaW1pemVBdHRyaWJ1dGVzOiB7IFthdHRyTmFtZTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcclxuXHJcbiAgLy8gY29udGVudFxyXG4gIGFwcENvbnRlbnRDb250aW5lcj86ICdmaXhlZCcgfCAnZmx1aWQnO1xyXG4gIGFwcENvbnRlbnRDb250YWluZXJDbGFzczogc3RyaW5nO1xyXG4gIGNvbnRlbnRDU1NDbGFzc2VzOiBzdHJpbmc7XHJcbiAgY29udGVudENvbnRhaW5lckNTU0NsYXNzOiBzdHJpbmc7XHJcbiAgLy8gc2lkZWJhclxyXG4gIGFwcFNpZGViYXJEZWZhdWx0Q2xhc3M6IHN0cmluZztcclxuICBhcHBTaWRlYmFyRGVmYXVsdERyYXdlckVuYWJsZWQ6IGJvb2xlYW47XHJcbiAgYXBwU2lkZWJhckRlZmF1bHREcmF3ZXJBdHRyaWJ1dGVzOiB7IFthdHRyTmFtZTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcclxuICBhcHBTaWRlYmFyRGlzcGxheTogYm9vbGVhbjtcclxuICBhcHBTaWRlYmFyRGVmYXVsdFN0aWNreUVuYWJsZWQ6IGJvb2xlYW47XHJcbiAgYXBwU2lkZWJhckRlZmF1bHRTdGlja3lBdHRyaWJ1dGVzOiB7IFthdHRyTmFtZTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcclxuICBAVmlld0NoaWxkKCdrdFNpZGViYXInLCB7IHN0YXRpYzogdHJ1ZSB9KSBrdFNpZGViYXI6IEVsZW1lbnRSZWY7XHJcbiAgLy8vIHNpZGViYXIgcGFuZWxcclxuICBhcHBTaWRlYmFyUGFuZWxEaXNwbGF5OiBib29sZWFuO1xyXG4gIC8vIGZvb3RlclxyXG4gIGFwcEZvb3RlckRpc3BsYXk6IGJvb2xlYW47XHJcbiAgYXBwRm9vdGVyQ1NTQ2xhc3M6IHN0cmluZyA9ICcnO1xyXG4gIGFwcEZvb3RlckNvbnRhaW5lcjogc3RyaW5nID0gJyc7XHJcbiAgYXBwRm9vdGVyQ29udGFpbmVyQ1NTQ2xhc3M6IHN0cmluZyA9ICcnO1xyXG4gIGFwcEZvb3RlckZpeGVkRGVza3RvcDogYm9vbGVhbjtcclxuICBhcHBGb290ZXJGaXhlZE1vYmlsZTogYm9vbGVhbjtcclxuXHJcbiAgLy8gc2Nyb2xsdG9wXHJcbiAgc2Nyb2xsdG9wRGlzcGxheTogYm9vbGVhbjtcclxuXHJcbiAgQFZpZXdDaGlsZCgna3RBc2lkZScsIHsgc3RhdGljOiB0cnVlIH0pIGt0QXNpZGU6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgna3RIZWFkZXJNb2JpbGUnLCB7IHN0YXRpYzogdHJ1ZSB9KSBrdEhlYWRlck1vYmlsZTogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdrdEhlYWRlcicsIHsgc3RhdGljOiB0cnVlIH0pIGt0SGVhZGVyOiBFbGVtZW50UmVmO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaW5pdFNlcnZpY2U6IExheW91dEluaXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsYXlvdXQ6IExheW91dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOkF1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0b2FzdFNlcnZpY2U6VG9hc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBnczpHbG9iYWxTdGF0ZVNlcnZpY2VcclxuICApIHtcclxuICAgIFxyXG4gICAgLy8gZGVmaW5lIGxheW91dCB0eXBlIGFuZCBsb2FkIGxheW91dFxyXG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcclxuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRMYXlvdXRUeXBlID0gdGhpcy5sYXlvdXQuY3VycmVudExheW91dFR5cGVTdWJqZWN0LnZhbHVlO1xyXG5cclxuICAgICAgICBjb25zdCBuZXh0TGF5b3V0VHlwZTogTGF5b3V0VHlwZSA9XHJcbiAgICAgICAgICB0aGlzLmFjdGl2YXRlZFJvdXRlPy5maXJzdENoaWxkPy5zbmFwc2hvdC5kYXRhLmxheW91dCB8fFxyXG4gICAgICAgICAgdGhpcy5sYXlvdXQuZ2V0QmFzZUxheW91dFR5cGVGcm9tTG9jYWxTdG9yYWdlKCk7XHJcblxyXG4gICAgICAgIGlmIChjdXJyZW50TGF5b3V0VHlwZSAhPT0gbmV4dExheW91dFR5cGUgfHwgIWN1cnJlbnRMYXlvdXRUeXBlKSB7XHJcbiAgICAgICAgICB0aGlzLmxheW91dC5jdXJyZW50TGF5b3V0VHlwZVN1YmplY3QubmV4dChuZXh0TGF5b3V0VHlwZSk7XHJcbiAgICAgICAgICB0aGlzLmluaXRTZXJ2aWNlLnJlSW5pdFByb3BzKG5leHRMYXlvdXRUeXBlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBjb25zdCBzdWJzY3IgPSB0aGlzLmxheW91dC5sYXlvdXRDb25maWdTdWJqZWN0XHJcbiAgICAgIC5hc09ic2VydmFibGUoKVxyXG4gICAgICAuc3Vic2NyaWJlKChjb25maWcpID0+IHtcclxuICAgICAgICB0aGlzLnVwZGF0ZVByb3BzKGNvbmZpZyk7XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy51bnN1YnNjcmliZS5wdXNoKHN1YnNjcik7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVQcm9wcyhjb25maWc6IElMYXlvdXQpIHtcclxuICAgIHRoaXMuc2Nyb2xsdG9wRGlzcGxheSA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgICdzY3JvbGx0b3AuZGlzcGxheScsXHJcbiAgICAgIGNvbmZpZ1xyXG4gICAgKSBhcyBib29sZWFuO1xyXG4gICAgdGhpcy5wYWdlQ29udGFpbmVyQ1NTQ2xhc3NlcyA9XHJcbiAgICAgIHRoaXMubGF5b3V0LmdldFN0cmluZ0NTU0NsYXNzZXMoJ3BhZ2VDb250YWluZXInKTtcclxuICAgIHRoaXMuYXBwSGVhZGVyRGVmYXVsdENsYXNzID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgJ2FwcC5oZWFkZXIuZGVmYXVsdC5jbGFzcycsXHJcbiAgICAgIGNvbmZpZ1xyXG4gICAgKSBhcyBzdHJpbmc7XHJcbiAgICB0aGlzLmFwcEhlYWRlckRpc3BsYXkgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICAnYXBwLmhlYWRlci5kaXNwbGF5JyxcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIGJvb2xlYW47XHJcbiAgICB0aGlzLmFwcEZvb3RlckRpc3BsYXkgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICAnYXBwLmZvb3Rlci5kaXNwbGF5JyxcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIGJvb2xlYW47XHJcbiAgICB0aGlzLmFwcFNpZGViYXJEaXNwbGF5ID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgJ2FwcC5zaWRlYmFyLmRpc3BsYXknLFxyXG4gICAgICBjb25maWdcclxuICAgICkgYXMgYm9vbGVhbjtcclxuICAgIHRoaXMuYXBwU2lkZWJhclBhbmVsRGlzcGxheSA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgICdhcHAuc2lkZWJhci1wYW5lbC5kaXNwbGF5JyxcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIGJvb2xlYW47XHJcbiAgICB0aGlzLmFwcFRvb2xiYXJEaXNwbGF5ID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgJ2FwcC50b29sYmFyLmRpc3BsYXknLFxyXG4gICAgICBjb25maWdcclxuICAgICkgYXMgYm9vbGVhbjtcclxuICAgIHRoaXMuY29udGVudENTU0NsYXNzZXMgPSB0aGlzLmxheW91dC5nZXRTdHJpbmdDU1NDbGFzc2VzKCdjb250ZW50Jyk7XHJcbiAgICB0aGlzLmNvbnRlbnRDb250YWluZXJDU1NDbGFzcyA9XHJcbiAgICAgIHRoaXMubGF5b3V0LmdldFN0cmluZ0NTU0NsYXNzZXMoJ2NvbnRlbnRDb250YWluZXInKTtcclxuICAgIHRoaXMuYXBwQ29udGVudENvbnRpbmVyID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgJ2FwcC5jb250ZW50LmNvbnRhaW5lcicsXHJcbiAgICAgIGNvbmZpZ1xyXG4gICAgKSBhcyAnZml4ZWQnIHwgJ2ZsdWlkJztcclxuICAgIHRoaXMuYXBwQ29udGVudENvbnRhaW5lckNsYXNzID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgJ2FwcC5jb250ZW50LmNvbnRhaW5lckNsYXNzJyxcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIHN0cmluZztcclxuICAgIC8vIGZvb3RlclxyXG4gICAgaWYgKHRoaXMuYXBwRm9vdGVyRGlzcGxheSkge1xyXG4gICAgICB0aGlzLnVwZGF0ZUZvb3Rlcihjb25maWcpO1xyXG4gICAgfVxyXG4gICAgLy8gc2lkZWJhclxyXG4gICAgaWYgKHRoaXMuYXBwU2lkZWJhckRpc3BsYXkpIHtcclxuICAgICAgdGhpcy51cGRhdGVTaWRlYmFyKGNvbmZpZyk7XHJcbiAgICB9XHJcbiAgICAvLyBoZWFkZXJcclxuICAgIGlmICh0aGlzLmFwcEhlYWRlckRpc3BsYXkpIHtcclxuICAgICAgdGhpcy51cGRhdGVIZWFkZXIoY29uZmlnKTtcclxuICAgIH1cclxuICAgIC8vIHRvb2xiYXJcclxuICAgIGlmICh0aGlzLmFwcFRvb2xiYXJEaXNwbGF5KSB7XHJcbiAgICAgIHRoaXMudXBkYXRlVG9vbGJhcihjb25maWcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlU2lkZWJhcihjb25maWc6IElMYXlvdXQpIHtcclxuICAgIHRoaXMuYXBwU2lkZWJhckRlZmF1bHRDbGFzcyA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgICdhcHAuc2lkZWJhci5kZWZhdWx0LmNsYXNzJyxcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIHN0cmluZztcclxuXHJcbiAgICB0aGlzLmFwcFNpZGViYXJEZWZhdWx0RHJhd2VyRW5hYmxlZCA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgICdhcHAuc2lkZWJhci5kZWZhdWx0LmRyYXdlci5lbmFibGVkJyxcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIGJvb2xlYW47XHJcbiAgICBpZiAodGhpcy5hcHBTaWRlYmFyRGVmYXVsdERyYXdlckVuYWJsZWQpIHtcclxuICAgICAgdGhpcy5hcHBTaWRlYmFyRGVmYXVsdERyYXdlckF0dHJpYnV0ZXMgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICAgICdhcHAuc2lkZWJhci5kZWZhdWx0LmRyYXdlci5hdHRyaWJ1dGVzJyxcclxuICAgICAgICBjb25maWdcclxuICAgICAgKSBhcyB7IFthdHRyTmFtZTogc3RyaW5nXTogc3RyaW5nIH07XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hcHBTaWRlYmFyRGVmYXVsdFN0aWNreUVuYWJsZWQgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICAnYXBwLnNpZGViYXIuZGVmYXVsdC5zdGlja3kuZW5hYmxlZCcsXHJcbiAgICAgIGNvbmZpZ1xyXG4gICAgKSBhcyBib29sZWFuO1xyXG4gICAgaWYgKHRoaXMuYXBwU2lkZWJhckRlZmF1bHRTdGlja3lFbmFibGVkKSB7XHJcbiAgICAgIHRoaXMuYXBwU2lkZWJhckRlZmF1bHRTdGlja3lBdHRyaWJ1dGVzID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgICAnYXBwLnNpZGViYXIuZGVmYXVsdC5zdGlja3kuYXR0cmlidXRlcycsXHJcbiAgICAgICAgY29uZmlnXHJcbiAgICAgICkgYXMgeyBbYXR0ck5hbWU6IHN0cmluZ106IHN0cmluZyB9O1xyXG4gICAgfVxyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBzaWRlYmFyRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdrdF9hcHBfc2lkZWJhcicpO1xyXG4gICAgICAvLyBzaWRlYmFyXHJcbiAgICAgIGlmICh0aGlzLmFwcFNpZGViYXJEaXNwbGF5ICYmIHNpZGViYXJFbGVtZW50KSB7XHJcbiAgICAgICAgY29uc3Qgc2lkZWJhckF0dHJpYnV0ZXMgPSBzaWRlYmFyRWxlbWVudFxyXG4gICAgICAgICAgLmdldEF0dHJpYnV0ZU5hbWVzKClcclxuICAgICAgICAgIC5maWx0ZXIoKHQpID0+IHQuaW5kZXhPZignZGF0YS0nKSA+IC0xKTtcclxuICAgICAgICBzaWRlYmFyQXR0cmlidXRlcy5mb3JFYWNoKChhdHRyKSA9PlxyXG4gICAgICAgICAgc2lkZWJhckVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKGF0dHIpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuYXBwU2lkZWJhckRlZmF1bHREcmF3ZXJFbmFibGVkKSB7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmFwcFNpZGViYXJEZWZhdWx0RHJhd2VyQXR0cmlidXRlcykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5hcHBTaWRlYmFyRGVmYXVsdERyYXdlckF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xyXG4gICAgICAgICAgICAgIHNpZGViYXJFbGVtZW50LnNldEF0dHJpYnV0ZShcclxuICAgICAgICAgICAgICAgIGtleSxcclxuICAgICAgICAgICAgICAgIHRoaXMuYXBwU2lkZWJhckRlZmF1bHREcmF3ZXJBdHRyaWJ1dGVzW2tleV1cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5hcHBTaWRlYmFyRGVmYXVsdFN0aWNreUVuYWJsZWQpIHtcclxuICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuYXBwU2lkZWJhckRlZmF1bHRTdGlja3lBdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmFwcFNpZGViYXJEZWZhdWx0U3RpY2t5QXR0cmlidXRlcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgICAgICAgc2lkZWJhckVsZW1lbnQuc2V0QXR0cmlidXRlKFxyXG4gICAgICAgICAgICAgICAga2V5LFxyXG4gICAgICAgICAgICAgICAgdGhpcy5hcHBTaWRlYmFyRGVmYXVsdFN0aWNreUF0dHJpYnV0ZXNba2V5XVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sIDApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlSGVhZGVyKGNvbmZpZzogSUxheW91dCkge1xyXG4gICAgdGhpcy5hcHBIZWFkZXJEZWZhdWx0U3RpY2t5RW5hYmxlZCA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgICdhcHAuaGVhZGVyLmRlZmF1bHQuc3RpY2t5LmVuYWJsZWQnLFxyXG4gICAgICBjb25maWdcclxuICAgICkgYXMgYm9vbGVhbjtcclxuICAgIGlmICh0aGlzLmFwcEhlYWRlckRlZmF1bHRTdGlja3lFbmFibGVkKSB7XHJcbiAgICAgIHRoaXMuYXBwSGVhZGVyRGVmYXVsdFN0aWNreUF0dHJpYnV0ZXMgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICAgICdhcHAuaGVhZGVyLmRlZmF1bHQuc3RpY2t5LmF0dHJpYnV0ZXMnLFxyXG4gICAgICAgIGNvbmZpZ1xyXG4gICAgICApIGFzIHsgW2F0dHJOYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFwcEhlYWRlckRlZmF1bHRNaW5pbWl6ZUVuYWJsZWQgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICAnYXBwLmhlYWRlci5kZWZhdWx0Lm1pbmltaXplLmVuYWJsZWQnLFxyXG4gICAgICBjb25maWdcclxuICAgICkgYXMgYm9vbGVhbjtcclxuICAgIGlmICh0aGlzLmFwcEhlYWRlckRlZmF1bHRNaW5pbWl6ZUVuYWJsZWQpIHtcclxuICAgICAgdGhpcy5hcHBIZWFkZXJEZWZhdWx0TWluaW1pemVBdHRyaWJ1dGVzID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgICAnYXBwLmhlYWRlci5kZWZhdWx0Lm1pbmltaXplLmF0dHJpYnV0ZXMnLFxyXG4gICAgICAgIGNvbmZpZ1xyXG4gICAgICApIGFzIHsgW2F0dHJOYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgaGVhZGVyRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdrdF9hcHBfaGVhZGVyJyk7XHJcbiAgICAgIC8vIGhlYWRlclxyXG4gICAgICBpZiAodGhpcy5hcHBIZWFkZXJEaXNwbGF5ICYmIGhlYWRlckVsZW1lbnQpIHtcclxuICAgICAgICBjb25zdCBoZWFkZXJBdHRyaWJ1dGVzID0gaGVhZGVyRWxlbWVudFxyXG4gICAgICAgICAgLmdldEF0dHJpYnV0ZU5hbWVzKClcclxuICAgICAgICAgIC5maWx0ZXIoKHQpID0+IHQuaW5kZXhPZignZGF0YS0nKSA+IC0xKTtcclxuICAgICAgICBoZWFkZXJBdHRyaWJ1dGVzLmZvckVhY2goKGF0dHIpID0+IGhlYWRlckVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKGF0dHIpKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuYXBwSGVhZGVyRGVmYXVsdFN0aWNreUVuYWJsZWQpIHtcclxuICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuYXBwSGVhZGVyRGVmYXVsdFN0aWNreUF0dHJpYnV0ZXMpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYXBwSGVhZGVyRGVmYXVsdFN0aWNreUF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xyXG4gICAgICAgICAgICAgIGhlYWRlckVsZW1lbnQuc2V0QXR0cmlidXRlKFxyXG4gICAgICAgICAgICAgICAga2V5LFxyXG4gICAgICAgICAgICAgICAgdGhpcy5hcHBIZWFkZXJEZWZhdWx0U3RpY2t5QXR0cmlidXRlc1trZXldXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuYXBwSGVhZGVyRGVmYXVsdE1pbmltaXplRW5hYmxlZCkge1xyXG4gICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5hcHBIZWFkZXJEZWZhdWx0TWluaW1pemVBdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmFwcEhlYWRlckRlZmF1bHRNaW5pbWl6ZUF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xyXG4gICAgICAgICAgICAgIGhlYWRlckVsZW1lbnQuc2V0QXR0cmlidXRlKFxyXG4gICAgICAgICAgICAgICAga2V5LFxyXG4gICAgICAgICAgICAgICAgdGhpcy5hcHBIZWFkZXJEZWZhdWx0TWluaW1pemVBdHRyaWJ1dGVzW2tleV1cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9LCAwKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUZvb3Rlcihjb25maWc6IElMYXlvdXQpIHtcclxuICAgIHRoaXMuYXBwRm9vdGVyQ1NTQ2xhc3MgPSB0aGlzLmxheW91dC5nZXRQcm9wKCdhcHAuZm9vdGVyLmNsYXNzJywgY29uZmlnKSBhcyBzdHJpbmc7XHJcbiAgICB0aGlzLmFwcEZvb3RlckNvbnRhaW5lciA9IHRoaXMubGF5b3V0LmdldFByb3AoJ2FwcC5mb290ZXIuY29udGFpbmVyJywgY29uZmlnKSBhcyBzdHJpbmc7XHJcbiAgICB0aGlzLmFwcEZvb3RlckNvbnRhaW5lckNTU0NsYXNzID0gdGhpcy5sYXlvdXQuZ2V0UHJvcCgnYXBwLmZvb3Rlci5jb250YWluZXJDbGFzcycsIGNvbmZpZykgYXMgc3RyaW5nO1xyXG4gICAgaWYgKHRoaXMuYXBwRm9vdGVyQ29udGFpbmVyID09PSAnZml4ZWQnKSB7XHJcbiAgICAgIHRoaXMuYXBwRm9vdGVyQ29udGFpbmVyQ1NTQ2xhc3MgKz0gJyBjb250YWluZXIteHhsJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmFwcEZvb3RlckNvbnRhaW5lciA9PT0gJ2ZsdWlkJykge1xyXG4gICAgICAgIHRoaXMuYXBwRm9vdGVyQ29udGFpbmVyQ1NTQ2xhc3MgKz0gJyBjb250YWluZXItZmx1aWQnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hcHBGb290ZXJGaXhlZERlc2t0b3AgPSB0aGlzLmxheW91dC5nZXRQcm9wKCdhcHAuZm9vdGVyLmZpeGVkLmRlc2t0b3AnLCBjb25maWcpIGFzIGJvb2xlYW47XHJcbiAgICBpZiAodGhpcy5hcHBGb290ZXJGaXhlZERlc2t0b3ApIHtcclxuICAgICAgZG9jdW1lbnQuYm9keS5zZXRBdHRyaWJ1dGUoJ2RhdGEta3QtYXBwLWZvb3Rlci1maXhlZCcsICd0cnVlJylcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFwcEZvb3RlckZpeGVkTW9iaWxlID0gdGhpcy5sYXlvdXQuZ2V0UHJvcCgnYXBwLmZvb3Rlci5maXhlZC5tb2JpbGUnKSBhcyBib29sZWFuO1xyXG4gICAgaWYgKHRoaXMuYXBwRm9vdGVyRml4ZWRNb2JpbGUpIHtcclxuICAgICAgZG9jdW1lbnQuYm9keS5zZXRBdHRyaWJ1dGUoJ2RhdGEta3QtYXBwLWZvb3Rlci1maXhlZC1tb2JpbGUnLCAndHJ1ZScpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVUb29sYmFyKGNvbmZpZzogSUxheW91dCkge1xyXG4gICAgdGhpcy5hcHBUb29sYmFyTGF5b3V0ID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgJ2FwcC50b29sYmFyLmxheW91dCcsXHJcbiAgICAgIGNvbmZpZ1xyXG4gICAgKSBhcyAnY2xhc3NpYycgfCAnYWNjb3VudGluZycgfCAnZXh0ZW5kZWQnIHwgJ3JlcG9ydHMnIHwgJ3NhYXMnO1xyXG4gICAgdGhpcy5hcHBUb29sYmFyU3dhcEVuYWJsZWQgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICAnYXBwLnRvb2xiYXIuc3dhcC5lbmFibGVkJyxcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIGJvb2xlYW47XHJcbiAgICBpZiAodGhpcy5hcHBUb29sYmFyU3dhcEVuYWJsZWQpIHtcclxuICAgICAgdGhpcy5hcHBUb29sYmFyU3dhcEF0dHJpYnV0ZXMgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICAgICdhcHAudG9vbGJhci5zd2FwLmF0dHJpYnV0ZXMnLFxyXG4gICAgICAgIGNvbmZpZ1xyXG4gICAgICApIGFzIHsgW2F0dHJOYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFwcFRvb2xiYXJTdGlja3lFbmFibGVkID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgJ2FwcC50b29sYmFyLnN0aWNreS5lbmFibGVkJyxcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIGJvb2xlYW47XHJcbiAgICBpZiAodGhpcy5hcHBUb29sYmFyU3RpY2t5RW5hYmxlZCkge1xyXG4gICAgICB0aGlzLmFwcFRvb2xiYXJTdGlja3lBdHRyaWJ1dGVzID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgICAnYXBwLnRvb2xiYXIuc3RpY2t5LmF0dHJpYnV0ZXMnLFxyXG4gICAgICAgIGNvbmZpZ1xyXG4gICAgICApIGFzIHsgW2F0dHJOYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFwcFRvb2xiYXJDU1NDbGFzcyA9XHJcbiAgICAgICh0aGlzLmxheW91dC5nZXRQcm9wKCdhcHAudG9vbGJhci5jbGFzcycsIGNvbmZpZykgYXMgc3RyaW5nKSB8fCAnJztcclxuICAgIHRoaXMuYXBwVG9vbGJhck1pbmltaXplRW5hYmxlZCA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgICdhcHAudG9vbGJhci5taW5pbWl6ZS5lbmFibGVkJyxcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIGJvb2xlYW47XHJcbiAgICBpZiAodGhpcy5hcHBUb29sYmFyTWluaW1pemVFbmFibGVkKSB7XHJcbiAgICAgIHRoaXMuYXBwVG9vbGJhck1pbmltaXplQXR0cmlidXRlcyA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgICAgJ2FwcC50b29sYmFyLm1pbmltaXplLmF0dHJpYnV0ZXMnLFxyXG4gICAgICAgIGNvbmZpZ1xyXG4gICAgICApIGFzIHsgW2F0dHJOYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcclxuICAgICAgdGhpcy5hcHBUb29sYmFyQ1NTQ2xhc3MgKz0gJyBhcHAtdG9vbGJhci1taW5pbWl6ZSc7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHRvb2xiYXJFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2t0X2FwcF90b29sYmFyJyk7XHJcbiAgICAgIC8vIHRvb2xiYXJcclxuICAgICAgaWYgKHRoaXMuYXBwVG9vbGJhckRpc3BsYXkgJiYgdG9vbGJhckVsZW1lbnQpIHtcclxuICAgICAgICBjb25zdCB0b29sYmFyQXR0cmlidXRlcyA9IHRvb2xiYXJFbGVtZW50XHJcbiAgICAgICAgICAuZ2V0QXR0cmlidXRlTmFtZXMoKVxyXG4gICAgICAgICAgLmZpbHRlcigodCkgPT4gdC5pbmRleE9mKCdkYXRhLScpID4gLTEpO1xyXG4gICAgICAgIHRvb2xiYXJBdHRyaWJ1dGVzLmZvckVhY2goKGF0dHIpID0+XHJcbiAgICAgICAgICB0b29sYmFyRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYXR0cilcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5hcHBUb29sYmFyU3dhcEVuYWJsZWQpIHtcclxuICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuYXBwVG9vbGJhclN3YXBBdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmFwcFRvb2xiYXJTd2FwQXR0cmlidXRlcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgICAgICAgdG9vbGJhckVsZW1lbnQuc2V0QXR0cmlidXRlKFxyXG4gICAgICAgICAgICAgICAga2V5LFxyXG4gICAgICAgICAgICAgICAgdGhpcy5hcHBUb29sYmFyU3dhcEF0dHJpYnV0ZXNba2V5XVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmFwcFRvb2xiYXJTdGlja3lFbmFibGVkKSB7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmFwcFRvb2xiYXJTdGlja3lBdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmFwcFRvb2xiYXJTdGlja3lBdHRyaWJ1dGVzLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAgICAgICB0b29sYmFyRWxlbWVudC5zZXRBdHRyaWJ1dGUoXHJcbiAgICAgICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgICAgICB0aGlzLmFwcFRvb2xiYXJTdGlja3lBdHRyaWJ1dGVzW2tleV1cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5hcHBUb29sYmFyTWluaW1pemVFbmFibGVkKSB7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmFwcFRvb2xiYXJNaW5pbWl6ZUF0dHJpYnV0ZXMpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYXBwVG9vbGJhck1pbmltaXplQXR0cmlidXRlcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgICAgICAgdG9vbGJhckVsZW1lbnQuc2V0QXR0cmlidXRlKFxyXG4gICAgICAgICAgICAgICAga2V5LFxyXG4gICAgICAgICAgICAgICAgdGhpcy5hcHBUb29sYmFyTWluaW1pemVBdHRyaWJ1dGVzW2tleV1cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9LCAwKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy51bnN1YnNjcmliZS5mb3JFYWNoKChzYikgPT4gc2IudW5zdWJzY3JpYmUoKSk7XHJcbiAgfVxyXG4gIHByZXZpb3VzU2Nyb2xsID0gMDtcclxuICAvLyBhcHBIZWFkZXJEaXNwbGF5ID0gdHJ1ZTsgLy8gSW5pdGlhbGx5IHZpc2libGVcclxuICBpc1Rvb2xiYXJGaXhlZCA9IGZhbHNlO1xyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpzY3JvbGwnLCBbXSlcclxuICBvblNjcm9sbCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGN1cnJlbnRTY3JvbGwgPSB3aW5kb3cuc2Nyb2xsWTtcclxuXHJcbiAgICBpZiAoY3VycmVudFNjcm9sbCA+IHRoaXMucHJldmlvdXNTY3JvbGwgJiYgY3VycmVudFNjcm9sbCA+IDEwMCkge1xyXG4gICAgICAvLyBIaWRlIGhlYWRlciBvbiBzY3JvbGwgZG93blxyXG4gICAgICB0aGlzLmFwcEhlYWRlckRpc3BsYXkgPSBmYWxzZTtcclxuICAgICAgdGhpcy5pc1Rvb2xiYXJGaXhlZCA9IHRydWU7IC8vIEZpeCB0b29sYmFyXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBTaG93IGhlYWRlciBvbiBzY3JvbGwgdXBcclxuICAgICAgdGhpcy5hcHBIZWFkZXJEaXNwbGF5ID0gdHJ1ZTtcclxuICAgICAgdGhpcy5pc1Rvb2xiYXJGaXhlZCA9IGN1cnJlbnRTY3JvbGwgPiAxMDA7IC8vIEtlZXAgdG9vbGJhciBmaXhlZCBpZiBzY3JvbGxlZCBiZXlvbmQgMTAwcHhcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnByZXZpb3VzU2Nyb2xsID0gY3VycmVudFNjcm9sbDtcclxuICB9XHJcbn1cclxuIiwiPCEtLWJlZ2luOjpBcHAtLT5cclxuPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBmbGV4LXJvb3QgYXBwLXJvb3RcIiBpZD1cImt0X2FwcF9yb290XCI+XHJcbiAgPCEtLWJlZ2luOjpQYWdlLS0+XHJcbiAgPGRpdiBjbGFzcz1cImFwcC1wYWdlIGZsZXgtY29sdW1uIGZsZXgtY29sdW1uLWZsdWlkXCIgaWQ9XCJrdF9hcHBfcGFnZVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFwcEhlYWRlckRpc3BsYXlcIj5cclxuICAgICAgPCEtLWJlZ2luOjpIZWFkZXItLT5cclxuICAgICAgPGxpYi1oZWFkZXIgW25nQ2xhc3NdPVwiYXBwSGVhZGVyRGVmYXVsdENsYXNzXCIgaWQ9XCJrdF9hcHBfaGVhZGVyXCIgY2xhc3M9XCJhcHAtaGVhZGVyXCIgZGF0YS1rdC1zdGlja3k9XCJ0cnVlXCIgZGF0YS1rdC1zdGlja3ktYWN0aXZhdGU9XCJ7ZGVmYXVsdDogdHJ1ZSwgbGc6IHRydWV9XCIgZGF0YS1rdC1zdGlja3ktbmFtZT1cImFwcC1oZWFkZXItbWluaW1pemVcIiBkYXRhLWt0LXN0aWNreS1vZmZzZXQ9XCJ7ZGVmYXVsdDogJzIwMHB4JywgbGc6ICcwJ31cIiBkYXRhLWt0LXN0aWNreS1hbmltYXRpb249XCJmYWxzZVwiPlxyXG4gICAgICA8L2xpYi1oZWFkZXI+XHJcbiAgICAgIDwhLS1lbmQ6OkhlYWRlci0tPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLWJlZ2luOjpXcmFwcGVyLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXBwLXdyYXBwZXIgZmxleC1jb2x1bW4gZmxleC1yb3ctZmx1aWRcIiBpZD1cImt0X2FwcF93cmFwcGVyXCI+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXBwU2lkZWJhckRpc3BsYXlcIj5cclxuICAgICAgICA8IS0tYmVnaW46OnNpZGViYXItLT5cclxuICAgICAgICA8bGliLXNpZGViYXIgI2t0U2lkZWJhciBpZD1cImt0X2FwcF9zaWRlYmFyXCIgY2xhc3M9XCJhcHAtc2lkZWJhciBmbGV4LWNvbHVtblwiIFtuZ0NsYXNzXT1cImFwcFNpZGViYXJEZWZhdWx0Q2xhc3NcIj5cclxuICAgICAgICA8L2xpYi1zaWRlYmFyPlxyXG4gICAgICAgIDwhLS1lbmQ6OnNpZGViYXItLT5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXBwU2lkZWJhclBhbmVsRGlzcGxheVwiPlxyXG4gICAgICAgIDwhLS0gVE9ETzogYXBwIHNpZGViYXIgcGFuZWwgLS0+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8IS0tYmVnaW46Ok1haW4tLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImFwcC1tYWluIGNvbnRlbnQgZmxleC1jb2x1bW4gZmxleC1yb3ctZmx1aWRcIiBpZD1cImt0X2FwcF9tYWluXCI+XHJcbiAgICAgICAgPCEtLWJlZ2luOjpDb250ZW50IHdyYXBwZXItLT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXBwVG9vbGJhckRpc3BsYXlcIj5cclxuICAgICAgICAgIDxsaWItdG9vbGJhciBbbmdDbGFzc109XCJ7J2ZpeGVkLXRvb2xiYXInOiBpc1Rvb2xiYXJGaXhlZH1cIiAgY2xhc3M9XCJhcHAtdG9vbGJhclwiIFtuZ0NsYXNzXT1cImFwcFRvb2xiYXJDU1NDbGFzc1wiIGlkPVwia3RfYXBwX3Rvb2xiYXJcIlxyXG4gICAgICAgICAgICBbYXBwVG9vbGJhckxheW91dF09XCJhcHBUb29sYmFyTGF5b3V0XCI+PC9saWItdG9vbGJhcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGZsZXgtY29sdW1uLWZsdWlkIG10LTEwXCI+XHJcbiAgICAgICAgXHJcbiAgICAgICAgICA8bGliLWNvbnRlbnQgaWQ9XCIga3RfYXBwX2NvbnRlbnRcIiBjbGFzcz1cImFwcC1jb250ZW50IG10LTE1XCIgW25nQ2xhc3NdPVwiY29udGVudENTU0NsYXNzZXNcIlxyXG4gICAgICAgICAgICBbY29udGVudENvbnRhaW5lckNTU0NsYXNzXT1cImNvbnRlbnRDb250YWluZXJDU1NDbGFzc1wiIFthcHBDb250ZW50Q29udGluZXJdPVwiYXBwQ29udGVudENvbnRpbmVyXCJcclxuICAgICAgICAgICAgW2FwcENvbnRlbnRDb250YWluZXJDbGFzc109XCJhcHBDb250ZW50Q29udGFpbmVyQ2xhc3NcIj5cclxuICAgICAgICAgIDwvbGliLWNvbnRlbnQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLWVuZDo6Q29udGVudCB3cmFwcGVyLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFwcEZvb3RlckRpc3BsYXlcIj5cclxuICAgICAgICAgIDxsaWItZm9vdGVyIGNsYXNzPVwiYXBwLWZvb3RlclwiIFtuZ0NsYXNzXT1cImFwcEZvb3RlckNTU0NsYXNzXCIgaWQ9XCJrdF9hcHBfZm9vdGVyXCJcclxuICAgICAgICAgICAgW2FwcEZvb3RlckNvbnRhaW5lckNTU0NsYXNzXT1cImFwcEZvb3RlckNvbnRhaW5lckNTU0NsYXNzXCI+PC9saWItZm9vdGVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLWVuZDo6Ok1haW4tLT5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLWVuZDo6V3JhcHBlci0tPlxyXG5cclxuICA8L2Rpdj5cclxuICA8IS0tZW5kOjpQYWdlLS0+XHJcbjwvZGl2PlxyXG48IS0tZW5kOjpBcHAtLT5cclxuXHJcbjxsaWItc2NyaXB0cy1pbml0PjwvbGliLXNjcmlwdHMtaW5pdD5cclxuPG5nLWNvbnRhaW5lcj5cclxuICA8bGliLXNjcm9sbC10b3AgaWQ9XCJrdF9zY3JvbGx0b3BcIiBjbGFzcz1cInNjcm9sbHRvcFwiIGRhdGEta3Qtc2Nyb2xsdG9wPVwidHJ1ZVwiPjwvbGliLXNjcm9sbC10b3A+XHJcbjwvbmctY29udGFpbmVyPlxyXG48IS0tIGJlZ2luOjogRHJhd2VycyAtLT5cclxuPCEtLSA8bGliLWFjdGl2aXR5LWRyYXdlcj48L2xpYi1hY3Rpdml0eS1kcmF3ZXI+IC0tPlxyXG48IS0tIDxsaWItbWVzc2VuZ2VyLWRyYXdlcj48L2xpYi1tZXNzZW5nZXItZHJhd2VyPiAtLT5cclxuPCEtLSBlbmQ6OiBEcmF3ZXJzIC0tPlxyXG5cclxuPCEtLSBlbmQ6OiBFbmdhZ2UgLS0+XHJcbjwhLS0gPGxpYi1lbmdhZ2VzPjwvbGliLWVuZ2FnZXM+IC0tPlxyXG48IS0tIGVuZDo6IEVuZ2FnZSAtLT5cclxuXHJcbjwhLS0gYmVnaW46OiBNb2RhbHMgLS0+XHJcbjwhLS0gPGxpYi1tYWluLW1vZGFsPjwvbGliLW1haW4tbW9kYWw+IC0tPlxyXG48IS0tIDxsaWItaW52aXRlLXVzZXJzLW1vZGFsPjwvbGliLWludml0ZS11c2Vycy1tb2RhbD4gLS0+XHJcbjwhLS0gPGxpYi11cGdyYWRlLXBsYW4tbW9kYWw+PC9saWItdXBncmFkZS1wbGFuLW1vZGFsPiAtLT5cclxuPCEtLSBlbmQ6OiBNb2RhbHMgLS0+XHJcbiJdfQ==
@@ -0,0 +1,198 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { InlineSVGModule } from 'ng-inline-svg-2';
4
+ import { RouterModule } from '@angular/router';
5
+ import { NgbDropdownModule, NgbProgressbarModule, NgbTooltipModule, } from '@ng-bootstrap/ng-bootstrap';
6
+ import { TranslateModule } from '@ngx-translate/core';
7
+ // import { ExtrasModule } from '../partials/layout/extras/extras.module';
8
+ // import {
9
+ // DrawersModule,
10
+ // DropdownMenusModule,
11
+ // ModalsModule,
12
+ // EngagesModule,
13
+ // } from '../partials';
14
+ // import { EngagesComponent } from '../partials/layout/engages/engages.component';
15
+ // import { ThemeModeModule } from '../partials/layout/theme-mode-switcher/theme-mode.module';
16
+ import { KeeniconComponent } from './keenicon/keenicon.component';
17
+ import { TranslationModule } from '../../i18n';
18
+ import { LayoutComponent } from './layout/layout.component';
19
+ import { HeaderComponent } from './header/header.component';
20
+ import { ContentComponent } from './content/content.component';
21
+ import { FooterComponent } from './footer/footer.component';
22
+ import { ScriptsInitComponent } from './scripts-init/scripts-init.component';
23
+ import { ToolbarComponent } from './toolbar/toolbar.component';
24
+ import { PageTitleComponent } from './header/page-title/page-title.component';
25
+ import { HeaderMenuComponent } from './header/header-menu/header-menu.component';
26
+ import { SidebarComponent } from './sidebar/sidebar.component';
27
+ import { SidebarLogoComponent } from './sidebar/sidebar-logo/sidebar-logo.component';
28
+ import { SidebarMenuComponent } from './sidebar/sidebar-menu/sidebar-menu.component';
29
+ import { SidebarFooterComponent } from './sidebar/sidebar-footer/sidebar-footer.component';
30
+ import { NavbarComponent } from './header/navbar/navbar.component';
31
+ import { AccountingComponent } from './toolbar/accounting/accounting.component';
32
+ import { ClassicComponent } from './toolbar/classic/classic.component';
33
+ import { ExtendedComponent } from './toolbar/extended/extended.component';
34
+ import { ReportsComponent } from './toolbar/reports/reports.component';
35
+ import { SaasComponent } from './toolbar/saas/saas.component';
36
+ import { Routing } from '../../routes/routing';
37
+ import { LayoutScrollTopComponent } from './scroll-top/scroll-top.component';
38
+ import { CommonSharedModule } from '../common/common-shared.module';
39
+ import { FormsModule } from '@angular/forms';
40
+ import { NgxDaterangepickerMd } from 'ngx-daterangepicker-material';
41
+ import { ClientSettingsComponent } from './toolbar/client-settings/client-settings.component';
42
+ import { DatepickerComponent } from './toolbar/datepicker/datepicker.component';
43
+ import { DateSingleSelectComponent } from './toolbar/date-single-select/date-single-select.component';
44
+ import { SingleStoreComponent } from './toolbar/single-store/single-store.component';
45
+ import { NotificationsInnerComponent } from './header/notifications-inner/notifications-inner.component';
46
+ import { CsmAssignConfirmationComponent } from './components/csm-assign-confirmation/csm-assign-confirmation.component';
47
+ import { TrafficHeaderComponent } from './toolbar/traffic-header/traffic-header/traffic-header.component';
48
+ import { TraxHeaderComponent } from './toolbar/trax-header/trax-header.component';
49
+ import { SingleStoredateComponent } from './toolbar/single-storedate/single-storedate.component';
50
+ import { StoresingleComponent } from './toolbar/storesingle/storesingle.component';
51
+ import { TraxWithoutdateComponent } from './toolbar/trax-withoutdate/trax-withoutdate.component';
52
+ import { TrafficNobComponent } from './toolbar/traffic-nob/traffic-nob.component';
53
+ import { MetricsHeaderComponent } from './toolbar/metrics-header/metrics-header.component';
54
+ import { SingleClientstoreDateComponent } from './toolbar/single-clientstore-date/single-clientstore-date.component';
55
+ import { ZoneHeaderComponent } from './toolbar/zone-header/zone-header.component';
56
+ import * as i0 from "@angular/core";
57
+ import * as i1 from "@angular/router";
58
+ import * as i2 from "ngx-daterangepicker-material";
59
+ const routes = [
60
+ {
61
+ path: '',
62
+ component: LayoutComponent,
63
+ children: Routing,
64
+ },
65
+ ];
66
+ export class LayoutModule {
67
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
68
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: LayoutModule, declarations: [LayoutComponent,
69
+ HeaderComponent,
70
+ ContentComponent,
71
+ FooterComponent,
72
+ ScriptsInitComponent,
73
+ ToolbarComponent,
74
+ PageTitleComponent,
75
+ HeaderMenuComponent,
76
+ // EngagesComponent,
77
+ SidebarComponent,
78
+ SidebarLogoComponent,
79
+ SidebarMenuComponent,
80
+ SidebarFooterComponent,
81
+ NavbarComponent,
82
+ AccountingComponent,
83
+ ClassicComponent,
84
+ ExtendedComponent,
85
+ ReportsComponent,
86
+ SaasComponent,
87
+ KeeniconComponent,
88
+ LayoutScrollTopComponent,
89
+ ClientSettingsComponent,
90
+ DatepickerComponent,
91
+ DateSingleSelectComponent,
92
+ SingleStoreComponent,
93
+ NotificationsInnerComponent,
94
+ CsmAssignConfirmationComponent,
95
+ TrafficHeaderComponent,
96
+ TraxHeaderComponent,
97
+ SingleStoredateComponent,
98
+ StoresingleComponent,
99
+ TraxWithoutdateComponent,
100
+ TrafficNobComponent,
101
+ MetricsHeaderComponent,
102
+ SingleClientstoreDateComponent,
103
+ ZoneHeaderComponent], imports: [CommonModule, i1.RouterModule, TranslationModule,
104
+ InlineSVGModule,
105
+ NgbDropdownModule,
106
+ NgbProgressbarModule,
107
+ // ExtrasModule,
108
+ // ModalsModule,
109
+ // DrawersModule,
110
+ // EngagesModule,
111
+ // DropdownMenusModule,
112
+ NgbTooltipModule,
113
+ TranslateModule,
114
+ // ThemeModeModule,
115
+ CommonSharedModule,
116
+ FormsModule, i2.NgxDaterangepickerMd], exports: [RouterModule] });
117
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LayoutModule, imports: [CommonModule,
118
+ RouterModule.forChild(routes),
119
+ TranslationModule,
120
+ InlineSVGModule,
121
+ NgbDropdownModule,
122
+ NgbProgressbarModule,
123
+ // ExtrasModule,
124
+ // ModalsModule,
125
+ // DrawersModule,
126
+ // EngagesModule,
127
+ // DropdownMenusModule,
128
+ NgbTooltipModule,
129
+ TranslateModule,
130
+ // ThemeModeModule,
131
+ CommonSharedModule,
132
+ FormsModule,
133
+ NgxDaterangepickerMd.forRoot(), RouterModule] });
134
+ }
135
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LayoutModule, decorators: [{
136
+ type: NgModule,
137
+ args: [{
138
+ declarations: [
139
+ LayoutComponent,
140
+ HeaderComponent,
141
+ ContentComponent,
142
+ FooterComponent,
143
+ ScriptsInitComponent,
144
+ ToolbarComponent,
145
+ PageTitleComponent,
146
+ HeaderMenuComponent,
147
+ // EngagesComponent,
148
+ SidebarComponent,
149
+ SidebarLogoComponent,
150
+ SidebarMenuComponent,
151
+ SidebarFooterComponent,
152
+ NavbarComponent,
153
+ AccountingComponent,
154
+ ClassicComponent,
155
+ ExtendedComponent,
156
+ ReportsComponent,
157
+ SaasComponent,
158
+ KeeniconComponent,
159
+ LayoutScrollTopComponent,
160
+ ClientSettingsComponent,
161
+ DatepickerComponent,
162
+ DateSingleSelectComponent,
163
+ SingleStoreComponent,
164
+ NotificationsInnerComponent,
165
+ CsmAssignConfirmationComponent,
166
+ TrafficHeaderComponent,
167
+ TraxHeaderComponent,
168
+ SingleStoredateComponent,
169
+ StoresingleComponent,
170
+ TraxWithoutdateComponent,
171
+ TrafficNobComponent,
172
+ MetricsHeaderComponent,
173
+ SingleClientstoreDateComponent,
174
+ ZoneHeaderComponent
175
+ ],
176
+ imports: [
177
+ CommonModule,
178
+ RouterModule.forChild(routes),
179
+ TranslationModule,
180
+ InlineSVGModule,
181
+ NgbDropdownModule,
182
+ NgbProgressbarModule,
183
+ // ExtrasModule,
184
+ // ModalsModule,
185
+ // DrawersModule,
186
+ // EngagesModule,
187
+ // DropdownMenusModule,
188
+ NgbTooltipModule,
189
+ TranslateModule,
190
+ // ThemeModeModule,
191
+ CommonSharedModule,
192
+ FormsModule,
193
+ NgxDaterangepickerMd.forRoot()
194
+ ],
195
+ exports: [RouterModule],
196
+ }]
197
+ }] });
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFwcC1zaGFyZWQvc3JjL2xpYi9tb2R1bGVzL2xheW91dC9sYXlvdXQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixvQkFBb0IsRUFDcEIsZ0JBQWdCLEdBQ2pCLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELDBFQUEwRTtBQUMxRSxXQUFXO0FBQ1gsbUJBQW1CO0FBQ25CLHlCQUF5QjtBQUN6QixrQkFBa0I7QUFDbEIsbUJBQW1CO0FBQ25CLHdCQUF3QjtBQUN4QixtRkFBbUY7QUFDbkYsOEZBQThGO0FBQzlGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZ0JB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QkFBZ0I7d0JBQ2hCLG9CQUFvQjt3QkFDcEIsb0JBQW9CO3dCQUNwQixzQkFBc0I7d0JBQ3RCLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixnQkFBZ0I7d0JBQ2hCLGlCQUFpQjt3QkFDakIsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLGlCQUFpQjt3QkFDakIsd0JBQXdCO3dCQUN4Qix1QkFBdUI7d0JBQ3ZCLG1CQUFtQjt3QkFDbkIseUJBQXlCO3dCQUN6QixvQkFBb0I7d0JBQ3BCLDJCQUEyQjt3QkFDM0IsOEJBQThCO3dCQUM5QixzQkFBc0I7d0JBQ3RCLG1CQUFtQjt3QkFDbkIsd0JBQXdCO3dCQUN4QixvQkFBb0I7d0JBQ3BCLHdCQUF3Qjt3QkFDeEIsbUJBQW1CO3dCQUNuQixzQkFBc0I7d0JBQ3RCLDhCQUE4Qjt3QkFDOUIsbUJBQW1CO3FCQUNwQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQzt3QkFDN0IsaUJBQWlCO3dCQUNqQixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsb0JBQW9CO3dCQUNwQixnQkFBZ0I7d0JBQ2hCLGdCQUFnQjt3QkFDaEIsaUJBQWlCO3dCQUNqQixpQkFBaUI7d0JBQ2pCLHVCQUF1Qjt3QkFDdkIsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixXQUFXO3dCQUNYLG9CQUFvQixDQUFDLE9BQU8sRUFBRTtxQkFDL0I7b0JBQ0QsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IElubGluZVNWR01vZHVsZSB9IGZyb20gJ25nLWlubGluZS1zdmctMic7XHJcbmltcG9ydCB7IFJvdXRlck1vZHVsZSwgUm91dGVzIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHtcclxuICBOZ2JEcm9wZG93bk1vZHVsZSxcclxuICBOZ2JQcm9ncmVzc2Jhck1vZHVsZSxcclxuICBOZ2JUb29sdGlwTW9kdWxlLFxyXG59IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbi8vIGltcG9ydCB7IEV4dHJhc01vZHVsZSB9IGZyb20gJy4uL3BhcnRpYWxzL2xheW91dC9leHRyYXMvZXh0cmFzLm1vZHVsZSc7XHJcbi8vIGltcG9ydCB7XHJcbi8vICAgRHJhd2Vyc01vZHVsZSxcclxuLy8gICBEcm9wZG93bk1lbnVzTW9kdWxlLFxyXG4vLyAgIE1vZGFsc01vZHVsZSxcclxuLy8gICBFbmdhZ2VzTW9kdWxlLFxyXG4vLyB9IGZyb20gJy4uL3BhcnRpYWxzJztcclxuLy8gaW1wb3J0IHsgRW5nYWdlc0NvbXBvbmVudCB9IGZyb20gJy4uL3BhcnRpYWxzL2xheW91dC9lbmdhZ2VzL2VuZ2FnZXMuY29tcG9uZW50JztcclxuLy8gaW1wb3J0IHsgVGhlbWVNb2RlTW9kdWxlIH0gZnJvbSAnLi4vcGFydGlhbHMvbGF5b3V0L3RoZW1lLW1vZGUtc3dpdGNoZXIvdGhlbWUtbW9kZS5tb2R1bGUnO1xyXG5pbXBvcnQgeyBLZWVuaWNvbkNvbXBvbmVudCB9IGZyb20gJy4va2Vlbmljb24va2Vlbmljb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHJhbnNsYXRpb25Nb2R1bGUgfSBmcm9tICcuLi8uLi9pMThuJztcclxuaW1wb3J0IHsgTGF5b3V0Q29tcG9uZW50IH0gZnJvbSAnLi9sYXlvdXQvbGF5b3V0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vaGVhZGVyL2hlYWRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi9jb250ZW50L2NvbnRlbnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9vdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9mb290ZXIvZm9vdGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNjcmlwdHNJbml0Q29tcG9uZW50IH0gZnJvbSAnLi9zY3JpcHRzLWluaXQvc2NyaXB0cy1pbml0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRvb2xiYXJDb21wb25lbnQgfSBmcm9tICcuL3Rvb2xiYXIvdG9vbGJhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQYWdlVGl0bGVDb21wb25lbnQgfSBmcm9tICcuL2hlYWRlci9wYWdlLXRpdGxlL3BhZ2UtdGl0bGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSGVhZGVyTWVudUNvbXBvbmVudCB9IGZyb20gJy4vaGVhZGVyL2hlYWRlci1tZW51L2hlYWRlci1tZW51LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNpZGViYXJDb21wb25lbnQgfSBmcm9tICcuL3NpZGViYXIvc2lkZWJhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTaWRlYmFyTG9nb0NvbXBvbmVudCB9IGZyb20gJy4vc2lkZWJhci9zaWRlYmFyLWxvZ28vc2lkZWJhci1sb2dvLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNpZGViYXJNZW51Q29tcG9uZW50IH0gZnJvbSAnLi9zaWRlYmFyL3NpZGViYXItbWVudS9zaWRlYmFyLW1lbnUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2lkZWJhckZvb3RlckNvbXBvbmVudCB9IGZyb20gJy4vc2lkZWJhci9zaWRlYmFyLWZvb3Rlci9zaWRlYmFyLWZvb3Rlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBOYXZiYXJDb21wb25lbnQgfSBmcm9tICcuL2hlYWRlci9uYXZiYXIvbmF2YmFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFjY291bnRpbmdDb21wb25lbnQgfSBmcm9tICcuL3Rvb2xiYXIvYWNjb3VudGluZy9hY2NvdW50aW5nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENsYXNzaWNDb21wb25lbnQgfSBmcm9tICcuL3Rvb2xiYXIvY2xhc3NpYy9jbGFzc2ljLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEV4dGVuZGVkQ29tcG9uZW50IH0gZnJvbSAnLi90b29sYmFyL2V4dGVuZGVkL2V4dGVuZGVkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlcG9ydHNDb21wb25lbnQgfSBmcm9tICcuL3Rvb2xiYXIvcmVwb3J0cy9yZXBvcnRzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNhYXNDb21wb25lbnQgfSBmcm9tICcuL3Rvb2xiYXIvc2Fhcy9zYWFzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJvdXRpbmcgfSBmcm9tICcuLi8uLi9yb3V0ZXMvcm91dGluZyc7XHJcbmltcG9ydCB7IExheW91dFNjcm9sbFRvcENvbXBvbmVudCB9IGZyb20gJy4vc2Nyb2xsLXRvcC9zY3JvbGwtdG9wLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbW1vblNoYXJlZE1vZHVsZSB9IGZyb20gJy4uL2NvbW1vbi9jb21tb24tc2hhcmVkLm1vZHVsZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBOZ3hEYXRlcmFuZ2VwaWNrZXJNZCB9IGZyb20gJ25neC1kYXRlcmFuZ2VwaWNrZXItbWF0ZXJpYWwnO1xyXG5pbXBvcnQgeyBDbGllbnRTZXR0aW5nc0NvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci9jbGllbnQtc2V0dGluZ3MvY2xpZW50LXNldHRpbmdzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERhdGVwaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL3Rvb2xiYXIvZGF0ZXBpY2tlci9kYXRlcGlja2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERhdGVTaW5nbGVTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuL3Rvb2xiYXIvZGF0ZS1zaW5nbGUtc2VsZWN0L2RhdGUtc2luZ2xlLXNlbGVjdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTaW5nbGVTdG9yZUNvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci9zaW5nbGUtc3RvcmUvc2luZ2xlLXN0b3JlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvbnNJbm5lckNvbXBvbmVudCB9IGZyb20gJy4vaGVhZGVyL25vdGlmaWNhdGlvbnMtaW5uZXIvbm90aWZpY2F0aW9ucy1pbm5lci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDc21Bc3NpZ25Db25maXJtYXRpb25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY3NtLWFzc2lnbi1jb25maXJtYXRpb24vY3NtLWFzc2lnbi1jb25maXJtYXRpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHJhZmZpY0hlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci90cmFmZmljLWhlYWRlci90cmFmZmljLWhlYWRlci90cmFmZmljLWhlYWRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUcmF4SGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi90b29sYmFyL3RyYXgtaGVhZGVyL3RyYXgtaGVhZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNpbmdsZVN0b3JlZGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci9zaW5nbGUtc3RvcmVkYXRlL3NpbmdsZS1zdG9yZWRhdGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU3RvcmVzaW5nbGVDb21wb25lbnQgfSBmcm9tICcuL3Rvb2xiYXIvc3RvcmVzaW5nbGUvc3RvcmVzaW5nbGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHJheFdpdGhvdXRkYXRlQ29tcG9uZW50IH0gZnJvbSAnLi90b29sYmFyL3RyYXgtd2l0aG91dGRhdGUvdHJheC13aXRob3V0ZGF0ZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUcmFmZmljTm9iQ29tcG9uZW50IH0gZnJvbSAnLi90b29sYmFyL3RyYWZmaWMtbm9iL3RyYWZmaWMtbm9iLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1ldHJpY3NIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL3Rvb2xiYXIvbWV0cmljcy1oZWFkZXIvbWV0cmljcy1oZWFkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2luZ2xlQ2xpZW50c3RvcmVEYXRlQ29tcG9uZW50IH0gZnJvbSAnLi90b29sYmFyL3NpbmdsZS1jbGllbnRzdG9yZS1kYXRlL3NpbmdsZS1jbGllbnRzdG9yZS1kYXRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFpvbmVIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL3Rvb2xiYXIvem9uZS1oZWFkZXIvem9uZS1oZWFkZXIuY29tcG9uZW50JztcclxuXHJcbmNvbnN0IHJvdXRlczogUm91dGVzID0gW1xyXG4gIHtcclxuICAgIHBhdGg6ICcnLFxyXG4gICAgY29tcG9uZW50OiBMYXlvdXRDb21wb25lbnQsXHJcbiAgICBjaGlsZHJlbjogUm91dGluZyxcclxuICB9LFxyXG5dO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIExheW91dENvbXBvbmVudCxcclxuICAgIEhlYWRlckNvbXBvbmVudCxcclxuICAgIENvbnRlbnRDb21wb25lbnQsXHJcbiAgICBGb290ZXJDb21wb25lbnQsXHJcbiAgICBTY3JpcHRzSW5pdENvbXBvbmVudCxcclxuICAgIFRvb2xiYXJDb21wb25lbnQsXHJcbiAgICBQYWdlVGl0bGVDb21wb25lbnQsXHJcbiAgICBIZWFkZXJNZW51Q29tcG9uZW50LFxyXG4gICAgLy8gRW5nYWdlc0NvbXBvbmVudCxcclxuICAgIFNpZGViYXJDb21wb25lbnQsXHJcbiAgICBTaWRlYmFyTG9nb0NvbXBvbmVudCxcclxuICAgIFNpZGViYXJNZW51Q29tcG9uZW50LFxyXG4gICAgU2lkZWJhckZvb3RlckNvbXBvbmVudCxcclxuICAgIE5hdmJhckNvbXBvbmVudCxcclxuICAgIEFjY291bnRpbmdDb21wb25lbnQsXHJcbiAgICBDbGFzc2ljQ29tcG9uZW50LFxyXG4gICAgRXh0ZW5kZWRDb21wb25lbnQsXHJcbiAgICBSZXBvcnRzQ29tcG9uZW50LFxyXG4gICAgU2Fhc0NvbXBvbmVudCxcclxuICAgIEtlZW5pY29uQ29tcG9uZW50LFxyXG4gICAgTGF5b3V0U2Nyb2xsVG9wQ29tcG9uZW50LFxyXG4gICAgQ2xpZW50U2V0dGluZ3NDb21wb25lbnQsXHJcbiAgICBEYXRlcGlja2VyQ29tcG9uZW50LFxyXG4gICAgRGF0ZVNpbmdsZVNlbGVjdENvbXBvbmVudCxcclxuICAgIFNpbmdsZVN0b3JlQ29tcG9uZW50LFxyXG4gICAgTm90aWZpY2F0aW9uc0lubmVyQ29tcG9uZW50LFxyXG4gICAgQ3NtQXNzaWduQ29uZmlybWF0aW9uQ29tcG9uZW50LFxyXG4gICAgVHJhZmZpY0hlYWRlckNvbXBvbmVudCxcclxuICAgIFRyYXhIZWFkZXJDb21wb25lbnQsXHJcbiAgICBTaW5nbGVTdG9yZWRhdGVDb21wb25lbnQsXHJcbiAgICBTdG9yZXNpbmdsZUNvbXBvbmVudCxcclxuICAgIFRyYXhXaXRob3V0ZGF0ZUNvbXBvbmVudCxcclxuICAgIFRyYWZmaWNOb2JDb21wb25lbnQsXHJcbiAgICBNZXRyaWNzSGVhZGVyQ29tcG9uZW50LFxyXG4gICAgU2luZ2xlQ2xpZW50c3RvcmVEYXRlQ29tcG9uZW50LFxyXG4gICAgWm9uZUhlYWRlckNvbXBvbmVudFxyXG4gIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgUm91dGVyTW9kdWxlLmZvckNoaWxkKHJvdXRlcyksXHJcbiAgICBUcmFuc2xhdGlvbk1vZHVsZSxcclxuICAgIElubGluZVNWR01vZHVsZSxcclxuICAgIE5nYkRyb3Bkb3duTW9kdWxlLFxyXG4gICAgTmdiUHJvZ3Jlc3NiYXJNb2R1bGUsXHJcbiAgICAvLyBFeHRyYXNNb2R1bGUsXHJcbiAgICAvLyBNb2RhbHNNb2R1bGUsXHJcbiAgICAvLyBEcmF3ZXJzTW9kdWxlLFxyXG4gICAgLy8gRW5nYWdlc01vZHVsZSxcclxuICAgIC8vIERyb3Bkb3duTWVudXNNb2R1bGUsXHJcbiAgICBOZ2JUb29sdGlwTW9kdWxlLFxyXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxyXG4gICAgLy8gVGhlbWVNb2RlTW9kdWxlLFxyXG4gICAgQ29tbW9uU2hhcmVkTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBOZ3hEYXRlcmFuZ2VwaWNrZXJNZC5mb3JSb290KClcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtSb3V0ZXJNb2R1bGVdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTGF5b3V0TW9kdWxlIHt9XHJcbiJdfQ==