mis-crystal-design-system 18.0.5 → 18.0.7-test

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 (545) hide show
  1. package/action-list/action-list.component.d.ts +1 -1
  2. package/analytics/analytics.service.d.ts +1 -1
  3. package/async-search-dropdown/async-dropdown.component.d.ts +3 -2
  4. package/button/button.component.d.ts +1 -1
  5. package/button/button.directive.d.ts +1 -1
  6. package/checkbox/checkbox.component.d.ts +1 -1
  7. package/chip/chip.component.d.ts +1 -1
  8. package/datepicker_v2/models/dp-config.model.d.ts +1 -1
  9. package/datepicker_v2/tz-datepicker.directive.d.ts +1 -1
  10. package/datepicker_v2/tz-dp-container/tz-dp-container.component.d.ts +1 -1
  11. package/daterangepicker_v2/models/drp-config.model.d.ts +1 -1
  12. package/daterangepicker_v2/tz-daterangepicker.directive.d.ts +1 -1
  13. package/daterangepicker_v2/tz-drp-container/tz-drp-container.component.d.ts +1 -1
  14. package/drawer/drawer-body/drawer-body.component.d.ts +1 -1
  15. package/dropdown/calculate-container-height.directive.d.ts +1 -1
  16. package/dropdown/dropdown.component.d.ts +1 -1
  17. package/dropdown/dropdown.module.d.ts +1 -1
  18. package/dynamic-form/dynamic-form.component.d.ts +1 -1
  19. package/esm2022/action-list/action-list.component.mjs +363 -0
  20. package/{esm2020 → esm2022}/action-list/action-list.module.mjs +5 -5
  21. package/{esm2020 → esm2022}/analytics/analytics.module.mjs +5 -5
  22. package/esm2022/analytics/analytics.service.mjs +64 -0
  23. package/esm2022/async-search-dropdown/async-dropdown.component.mjs +536 -0
  24. package/{esm2020 → esm2022}/async-search-dropdown/async-dropdown.module.mjs +5 -5
  25. package/esm2022/button/button.component.mjs +88 -0
  26. package/esm2022/button/button.directive.mjs +61 -0
  27. package/{esm2020 → esm2022}/button/button.module.mjs +5 -5
  28. package/esm2022/checkbox/checkbox.component.mjs +124 -0
  29. package/{esm2020 → esm2022}/checkbox/checkbox.module.mjs +5 -5
  30. package/esm2022/chip/chip.component.mjs +82 -0
  31. package/{esm2020 → esm2022}/chip/chip.module.mjs +5 -5
  32. package/{esm2020 → esm2022}/datepicker_v2/datepicker.module.mjs +5 -5
  33. package/esm2022/datepicker_v2/tz-datepicker.directive.mjs +183 -0
  34. package/esm2022/datepicker_v2/tz-dp-container/tz-dp-container.component.mjs +442 -0
  35. package/{esm2020/daterangepicker_v2 → esm2022/datepicker_v2}/utils/index.mjs +1 -1
  36. package/{esm2020 → esm2022}/daterangepicker_v2/daterangepicker.module.mjs +5 -5
  37. package/esm2022/daterangepicker_v2/tz-daterangepicker.directive.mjs +165 -0
  38. package/esm2022/daterangepicker_v2/tz-drp-container/tz-drp-container.component.mjs +503 -0
  39. package/esm2022/daterangepicker_v2/utils/index.mjs +45 -0
  40. package/esm2022/drawer/drawer-body/drawer-body.component.mjs +59 -0
  41. package/{esm2020 → esm2022}/drawer/drawer-ref.mjs +4 -4
  42. package/{esm2020 → esm2022}/drawer/drawer.module.mjs +5 -5
  43. package/{esm2020 → esm2022}/drawer/drawer.service.mjs +5 -5
  44. package/esm2022/dropdown/calculate-container-height.directive.mjs +41 -0
  45. package/esm2022/dropdown/dropdown.component.mjs +464 -0
  46. package/{esm2020 → esm2022}/dropdown/dropdown.module.mjs +6 -6
  47. package/esm2022/dynamic-form/dynamic-form.component.mjs +1093 -0
  48. package/{esm2020 → esm2022}/dynamic-form/dynamic-form.module.mjs +13 -13
  49. package/esm2022/fab/fab.component.mjs +145 -0
  50. package/{esm2020 → esm2022}/fab/fab.module.mjs +5 -5
  51. package/esm2022/filter/filter-panel/filter-panel.component.mjs +396 -0
  52. package/{esm2020 → esm2022}/filter/filters.module.mjs +17 -17
  53. package/esm2022/filter/has-value.pipe.mjs +31 -0
  54. package/{esm2020 → esm2022}/input/directives/input/input.directive.mjs +6 -6
  55. package/{fesm2020/mis-crystal-design-system-input.mjs → esm2022/input/mis-input.component.mjs} +49 -109
  56. package/{esm2020 → esm2022}/input/mis-input.module.mjs +5 -5
  57. package/esm2022/input-stepper/input-stepper/input-stepper.component.mjs +89 -0
  58. package/{esm2020 → esm2022}/input-stepper/input-stepper.module.mjs +5 -5
  59. package/esm2022/loader/loader.component.mjs +25 -0
  60. package/{esm2020 → esm2022}/loader/loader.module.mjs +5 -5
  61. package/esm2022/menu/menu-close.directive.mjs +25 -0
  62. package/{esm2020 → esm2022}/menu/menu.directive.mjs +7 -7
  63. package/{esm2020 → esm2022}/menu/menu.module.mjs +5 -5
  64. package/esm2022/mobile-filter/mobile-filter.component.mjs +180 -0
  65. package/{esm2020 → esm2022}/mobile-filter/mobile-filter.module.mjs +5 -5
  66. package/{esm2020 → esm2022}/modal/modal.module.mjs +5 -5
  67. package/esm2022/modal/modal.service.mjs +70 -0
  68. package/esm2022/modal/module-wrapper/module-wrapper.component.mjs +56 -0
  69. package/esm2022/multi-select-dropdown/multi-select-dropdown.component.mjs +489 -0
  70. package/{esm2020 → esm2022}/multi-select-dropdown/multi-select-dropdown.module.mjs +5 -5
  71. package/esm2022/nested-multi-select-dropdown/nested-multi-select-dropdown.component.mjs +516 -0
  72. package/{esm2020 → esm2022}/nested-multi-select-dropdown/nested-multi-select-dropdown.module.mjs +5 -5
  73. package/esm2022/phone-input/phone-input.component.mjs +72 -0
  74. package/{esm2020 → esm2022}/phone-input/phone-input.module.mjs +5 -5
  75. package/esm2022/radio-button/radio-button.component.mjs +57 -0
  76. package/{esm2020 → esm2022}/radio-button/radio-button.module.mjs +5 -5
  77. package/esm2022/ske-loader/ske-loader.component.mjs +54 -0
  78. package/{esm2020 → esm2022}/ske-loader/ske-loader.module.mjs +5 -5
  79. package/esm2022/slider/slider.component.mjs +46 -0
  80. package/{esm2020 → esm2022}/slider/slider.module.mjs +7 -7
  81. package/esm2022/snackbar/snackbar/snackbar.component.mjs +72 -0
  82. package/{esm2020 → esm2022}/snackbar/snackbar.module.mjs +5 -5
  83. package/esm2022/snackbar/snackbar.service.mjs +47 -0
  84. package/{esm2020 → esm2022}/specificdatepicker/specificdatepicker.module.mjs +5 -5
  85. package/esm2022/specificdatepicker/tz-sdp-container/tz-sdp-container.component.mjs +646 -0
  86. package/esm2022/specificdatepicker/tz-specificdatepicker.directive.mjs +196 -0
  87. package/esm2022/specificdatepicker/utils/index.mjs +45 -0
  88. package/esm2022/star-rating/star-rating.component.mjs +113 -0
  89. package/{esm2020 → esm2022}/star-rating/star-rating.module.mjs +5 -5
  90. package/esm2022/switch/switch.component.mjs +56 -0
  91. package/{esm2020 → esm2022}/switch/switch.module.mjs +5 -5
  92. package/esm2022/table/custom-table-cell.directive.mjs +42 -0
  93. package/esm2022/table/filter/filter.component.mjs +177 -0
  94. package/esm2022/table/sub-table/sub-table.component.mjs +192 -0
  95. package/esm2022/table/table.component.mjs +486 -0
  96. package/{esm2020 → esm2022}/table/table.module.mjs +5 -5
  97. package/esm2022/timepicker/timepicker.component.mjs +374 -0
  98. package/esm2022/timepicker/timepicker.directive.mjs +69 -0
  99. package/{esm2020 → esm2022}/timepicker/timepicker.module.mjs +5 -5
  100. package/esm2022/timerangepicker/timerangepicker.component.mjs +237 -0
  101. package/{esm2020 → esm2022}/timerangepicker/timerangepicker.module.mjs +5 -5
  102. package/esm2022/toast/toast.component.mjs +51 -0
  103. package/{esm2020 → esm2022}/toast/toast.data.service.mjs +8 -8
  104. package/{esm2020 → esm2022}/toast/toast.module.mjs +5 -5
  105. package/esm2022/toast/toast.service.mjs +91 -0
  106. package/esm2022/tooltip/tooltip-container/tooltip.component.mjs +79 -0
  107. package/esm2022/tooltip/tooltip.directive.mjs +143 -0
  108. package/{esm2020 → esm2022}/tooltip/tooltip.module.mjs +5 -5
  109. package/esm2022/virtual-scroll/virtual-scroll.component.mjs +188 -0
  110. package/{esm2020 → esm2022}/virtual-scroll/virtual-scroll.module.mjs +7 -7
  111. package/esm2022/widgets/classes/async-widget.mjs +23 -0
  112. package/{esm2020 → esm2022}/widgets/classes/base-widget.mjs +1 -1
  113. package/esm2022/widgets/classes/sync-widget.mjs +20 -0
  114. package/{esm2020 → esm2022}/widgets/services/widget.service.mjs +5 -5
  115. package/{esm2020 → esm2022}/widgets/widgets.module.mjs +5 -5
  116. package/fab/fab.component.d.ts +4 -4
  117. package/{fesm2020 → fesm2022}/mis-crystal-design-system-action-list.mjs +106 -113
  118. package/fesm2022/mis-crystal-design-system-action-list.mjs.map +1 -0
  119. package/{fesm2020 → fesm2022}/mis-crystal-design-system-analytics.mjs +9 -9
  120. package/{fesm2020 → fesm2022}/mis-crystal-design-system-analytics.mjs.map +1 -1
  121. package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs +561 -0
  122. package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs.map +1 -0
  123. package/fesm2022/mis-crystal-design-system-button.mjs +173 -0
  124. package/fesm2022/mis-crystal-design-system-button.mjs.map +1 -0
  125. package/fesm2022/mis-crystal-design-system-checkbox.mjs +150 -0
  126. package/fesm2022/mis-crystal-design-system-checkbox.mjs.map +1 -0
  127. package/fesm2022/mis-crystal-design-system-chip.mjs +108 -0
  128. package/fesm2022/mis-crystal-design-system-chip.mjs.map +1 -0
  129. package/{fesm2020 → fesm2022}/mis-crystal-design-system-datepicker_v2.mjs +133 -140
  130. package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs.map +1 -0
  131. package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs +737 -0
  132. package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs.map +1 -0
  133. package/{fesm2020 → fesm2022}/mis-crystal-design-system-drawer.mjs +34 -33
  134. package/{fesm2020 → fesm2022}/mis-crystal-design-system-drawer.mjs.map +1 -1
  135. package/{fesm2020 → fesm2022}/mis-crystal-design-system-dropdown.mjs +177 -186
  136. package/fesm2022/mis-crystal-design-system-dropdown.mjs.map +1 -0
  137. package/{fesm2020 → fesm2022}/mis-crystal-design-system-dynamic-form.mjs +441 -456
  138. package/fesm2022/mis-crystal-design-system-dynamic-form.mjs.map +1 -0
  139. package/{fesm2020 → fesm2022}/mis-crystal-design-system-fab.mjs +48 -47
  140. package/fesm2022/mis-crystal-design-system-fab.mjs.map +1 -0
  141. package/{fesm2020 → fesm2022}/mis-crystal-design-system-filter.mjs +113 -120
  142. package/fesm2022/mis-crystal-design-system-filter.mjs.map +1 -0
  143. package/{fesm2020 → fesm2022}/mis-crystal-design-system-input-stepper.mjs +35 -34
  144. package/{fesm2020 → fesm2022}/mis-crystal-design-system-input-stepper.mjs.map +1 -1
  145. package/fesm2022/mis-crystal-design-system-input.mjs +146 -0
  146. package/{fesm2020 → fesm2022}/mis-crystal-design-system-input.mjs.map +1 -1
  147. package/fesm2022/mis-crystal-design-system-loader.mjs +51 -0
  148. package/{fesm2020 → fesm2022}/mis-crystal-design-system-loader.mjs.map +1 -1
  149. package/{fesm2020 → fesm2022}/mis-crystal-design-system-menu.mjs +16 -16
  150. package/{fesm2020 → fesm2022}/mis-crystal-design-system-menu.mjs.map +1 -1
  151. package/fesm2022/mis-crystal-design-system-mobile-filter.mjs +205 -0
  152. package/fesm2022/mis-crystal-design-system-mobile-filter.mjs.map +1 -0
  153. package/{fesm2020 → fesm2022}/mis-crystal-design-system-modal.mjs +34 -33
  154. package/{fesm2020 → fesm2022}/mis-crystal-design-system-modal.mjs.map +1 -1
  155. package/{fesm2020 → fesm2022}/mis-crystal-design-system-multi-select-dropdown.mjs +107 -109
  156. package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs.map +1 -0
  157. package/{fesm2020 → fesm2022}/mis-crystal-design-system-nested-multi-select-dropdown.mjs +128 -129
  158. package/fesm2022/mis-crystal-design-system-nested-multi-select-dropdown.mjs.map +1 -0
  159. package/{fesm2020 → fesm2022}/mis-crystal-design-system-phone-input.mjs +22 -21
  160. package/{fesm2020 → fesm2022}/mis-crystal-design-system-phone-input.mjs.map +1 -1
  161. package/fesm2022/mis-crystal-design-system-radio-button.mjs +83 -0
  162. package/{fesm2020 → fesm2022}/mis-crystal-design-system-radio-button.mjs.map +1 -1
  163. package/fesm2022/mis-crystal-design-system-ske-loader.mjs +77 -0
  164. package/fesm2022/mis-crystal-design-system-ske-loader.mjs.map +1 -0
  165. package/fesm2022/mis-crystal-design-system-slider.mjs +80 -0
  166. package/{fesm2020 → fesm2022}/mis-crystal-design-system-slider.mjs.map +1 -1
  167. package/{fesm2020 → fesm2022}/mis-crystal-design-system-snackbar.mjs +32 -32
  168. package/fesm2022/mis-crystal-design-system-snackbar.mjs.map +1 -0
  169. package/{fesm2020 → fesm2022}/mis-crystal-design-system-specificdatepicker.mjs +204 -204
  170. package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs.map +1 -0
  171. package/{fesm2020 → fesm2022}/mis-crystal-design-system-star-rating.mjs +29 -28
  172. package/fesm2022/mis-crystal-design-system-star-rating.mjs.map +1 -0
  173. package/fesm2022/mis-crystal-design-system-switch.mjs +82 -0
  174. package/fesm2022/mis-crystal-design-system-switch.mjs.map +1 -0
  175. package/fesm2022/mis-crystal-design-system-table.mjs +913 -0
  176. package/fesm2022/mis-crystal-design-system-table.mjs.map +1 -0
  177. package/{fesm2020 → fesm2022}/mis-crystal-design-system-timepicker.mjs +78 -74
  178. package/{fesm2020 → fesm2022}/mis-crystal-design-system-timepicker.mjs.map +1 -1
  179. package/{fesm2020 → fesm2022}/mis-crystal-design-system-timerangepicker.mjs +26 -25
  180. package/{fesm2020 → fesm2022}/mis-crystal-design-system-timerangepicker.mjs.map +1 -1
  181. package/{fesm2020 → fesm2022}/mis-crystal-design-system-toast.mjs +35 -34
  182. package/{fesm2020 → fesm2022}/mis-crystal-design-system-toast.mjs.map +1 -1
  183. package/{fesm2020 → fesm2022}/mis-crystal-design-system-tooltip.mjs +47 -47
  184. package/{fesm2020 → fesm2022}/mis-crystal-design-system-tooltip.mjs.map +1 -1
  185. package/{fesm2020 → fesm2022}/mis-crystal-design-system-virtual-scroll.mjs +50 -52
  186. package/fesm2022/mis-crystal-design-system-virtual-scroll.mjs.map +1 -0
  187. package/{fesm2020 → fesm2022}/mis-crystal-design-system-widgets.mjs +4 -4
  188. package/{fesm2020 → fesm2022}/mis-crystal-design-system-widgets.mjs.map +1 -1
  189. package/filter/filter-panel/filter-panel.component.d.ts +1 -1
  190. package/input/directives/input/input.directive.d.ts +1 -1
  191. package/input/mis-input.component.d.ts +1 -1
  192. package/input-stepper/input-stepper/input-stepper.component.d.ts +1 -1
  193. package/loader/loader.component.d.ts +1 -1
  194. package/menu/menu-close.directive.d.ts +1 -1
  195. package/menu/menu.directive.d.ts +1 -1
  196. package/mobile-filter/mobile-filter.component.d.ts +1 -1
  197. package/modal/module-wrapper/module-wrapper.component.d.ts +1 -1
  198. package/multi-select-dropdown/multi-select-dropdown.component.d.ts +1 -1
  199. package/nested-multi-select-dropdown/nested-multi-select-dropdown.component.d.ts +1 -1
  200. package/package.json +125 -207
  201. package/phone-input/phone-input.component.d.ts +1 -1
  202. package/radio-button/radio-button.component.d.ts +1 -1
  203. package/ske-loader/ske-loader.component.d.ts +1 -1
  204. package/slider/slider.component.d.ts +1 -1
  205. package/snackbar/snackbar/snackbar.component.d.ts +1 -1
  206. package/specificdatepicker/models/sdp-config.model.d.ts +1 -1
  207. package/specificdatepicker/tz-sdp-container/tz-sdp-container.component.d.ts +1 -1
  208. package/specificdatepicker/tz-specificdatepicker.directive.d.ts +1 -1
  209. package/star-rating/star-rating.component.d.ts +1 -1
  210. package/switch/switch.component.d.ts +1 -1
  211. package/table/custom-table-cell.directive.d.ts +1 -1
  212. package/table/filter/filter.component.d.ts +1 -1
  213. package/table/sub-table/sub-table.component.d.ts +1 -1
  214. package/table/table.component.d.ts +1 -1
  215. package/timepicker/timepicker.component.d.ts +1 -1
  216. package/timepicker/timepicker.directive.d.ts +1 -1
  217. package/timerangepicker/timerange.namespace.d.ts +1 -1
  218. package/timerangepicker/timerangepicker.component.d.ts +1 -1
  219. package/toast/toast.component.d.ts +1 -1
  220. package/toast/toast.service.d.ts +1 -1
  221. package/tooltip/models/tooltip.model.d.ts +1 -1
  222. package/tooltip/tooltip-container/tooltip.component.d.ts +1 -1
  223. package/tooltip/tooltip.directive.d.ts +1 -1
  224. package/virtual-scroll/virtual-scroll.component.d.ts +1 -1
  225. package/widgets/interfaces/widgets.model.d.ts +1 -1
  226. package/button/button.directive.scss +0 -69
  227. package/drawer/drawer.scss +0 -20
  228. package/esm2020/action-list/action-list.component.mjs +0 -370
  229. package/esm2020/analytics/analytics.service.mjs +0 -64
  230. package/esm2020/async-search-dropdown/async-dropdown.component.mjs +0 -525
  231. package/esm2020/button/button.component.mjs +0 -87
  232. package/esm2020/button/button.directive.mjs +0 -61
  233. package/esm2020/checkbox/checkbox.component.mjs +0 -124
  234. package/esm2020/chip/chip.component.mjs +0 -82
  235. package/esm2020/datepicker_v2/tz-datepicker.directive.mjs +0 -183
  236. package/esm2020/datepicker_v2/tz-dp-container/tz-dp-container.component.mjs +0 -449
  237. package/esm2020/datepicker_v2/utils/index.mjs +0 -45
  238. package/esm2020/daterangepicker_v2/tz-daterangepicker.directive.mjs +0 -165
  239. package/esm2020/daterangepicker_v2/tz-drp-container/tz-drp-container.component.mjs +0 -502
  240. package/esm2020/drawer/drawer-body/drawer-body.component.mjs +0 -58
  241. package/esm2020/dropdown/calculate-container-height.directive.mjs +0 -41
  242. package/esm2020/dropdown/dropdown.component.mjs +0 -472
  243. package/esm2020/dynamic-form/dynamic-form.component.mjs +0 -1108
  244. package/esm2020/fab/fab.component.mjs +0 -144
  245. package/esm2020/filter/filter-panel/filter-panel.component.mjs +0 -403
  246. package/esm2020/filter/has-value.pipe.mjs +0 -31
  247. package/esm2020/input/mis-input.component.mjs +0 -84
  248. package/esm2020/input-stepper/input-stepper/input-stepper.component.mjs +0 -88
  249. package/esm2020/loader/loader.component.mjs +0 -24
  250. package/esm2020/menu/menu-close.directive.mjs +0 -25
  251. package/esm2020/mobile-filter/mobile-filter.component.mjs +0 -181
  252. package/esm2020/modal/modal.service.mjs +0 -70
  253. package/esm2020/modal/module-wrapper/module-wrapper.component.mjs +0 -55
  254. package/esm2020/multi-select-dropdown/multi-select-dropdown.component.mjs +0 -491
  255. package/esm2020/nested-multi-select-dropdown/nested-multi-select-dropdown.component.mjs +0 -517
  256. package/esm2020/phone-input/phone-input.component.mjs +0 -71
  257. package/esm2020/radio-button/radio-button.component.mjs +0 -56
  258. package/esm2020/ske-loader/ske-loader.component.mjs +0 -53
  259. package/esm2020/slider/slider.component.mjs +0 -45
  260. package/esm2020/snackbar/snackbar/snackbar.component.mjs +0 -72
  261. package/esm2020/snackbar/snackbar.service.mjs +0 -47
  262. package/esm2020/specificdatepicker/tz-sdp-container/tz-sdp-container.component.mjs +0 -646
  263. package/esm2020/specificdatepicker/tz-specificdatepicker.directive.mjs +0 -196
  264. package/esm2020/specificdatepicker/utils/index.mjs +0 -45
  265. package/esm2020/star-rating/star-rating.component.mjs +0 -112
  266. package/esm2020/switch/switch.component.mjs +0 -55
  267. package/esm2020/table/custom-table-cell.directive.mjs +0 -42
  268. package/esm2020/table/filter/filter.component.mjs +0 -176
  269. package/esm2020/table/sub-table/sub-table.component.mjs +0 -193
  270. package/esm2020/table/table.component.mjs +0 -492
  271. package/esm2020/timepicker/timepicker.component.mjs +0 -370
  272. package/esm2020/timepicker/timepicker.directive.mjs +0 -69
  273. package/esm2020/timerangepicker/timerangepicker.component.mjs +0 -236
  274. package/esm2020/toast/toast.component.mjs +0 -50
  275. package/esm2020/toast/toast.service.mjs +0 -91
  276. package/esm2020/tooltip/tooltip-container/tooltip.component.mjs +0 -79
  277. package/esm2020/tooltip/tooltip.directive.mjs +0 -143
  278. package/esm2020/virtual-scroll/virtual-scroll.component.mjs +0 -190
  279. package/esm2020/widgets/classes/async-widget.mjs +0 -23
  280. package/esm2020/widgets/classes/sync-widget.mjs +0 -20
  281. package/fesm2015/mis-crystal-design-system-action-list.mjs +0 -446
  282. package/fesm2015/mis-crystal-design-system-action-list.mjs.map +0 -1
  283. package/fesm2015/mis-crystal-design-system-analytics.mjs +0 -87
  284. package/fesm2015/mis-crystal-design-system-analytics.mjs.map +0 -1
  285. package/fesm2015/mis-crystal-design-system-async-search-dropdown.mjs +0 -618
  286. package/fesm2015/mis-crystal-design-system-async-search-dropdown.mjs.map +0 -1
  287. package/fesm2015/mis-crystal-design-system-button.mjs +0 -189
  288. package/fesm2015/mis-crystal-design-system-button.mjs.map +0 -1
  289. package/fesm2015/mis-crystal-design-system-checkbox.mjs +0 -166
  290. package/fesm2015/mis-crystal-design-system-checkbox.mjs.map +0 -1
  291. package/fesm2015/mis-crystal-design-system-chip.mjs +0 -123
  292. package/fesm2015/mis-crystal-design-system-chip.mjs.map +0 -1
  293. package/fesm2015/mis-crystal-design-system-datepicker_v2.mjs +0 -751
  294. package/fesm2015/mis-crystal-design-system-datepicker_v2.mjs.map +0 -1
  295. package/fesm2015/mis-crystal-design-system-daterangepicker_v2.mjs +0 -769
  296. package/fesm2015/mis-crystal-design-system-daterangepicker_v2.mjs.map +0 -1
  297. package/fesm2015/mis-crystal-design-system-drawer.mjs +0 -185
  298. package/fesm2015/mis-crystal-design-system-drawer.mjs.map +0 -1
  299. package/fesm2015/mis-crystal-design-system-dropdown.mjs +0 -616
  300. package/fesm2015/mis-crystal-design-system-dropdown.mjs.map +0 -1
  301. package/fesm2015/mis-crystal-design-system-dynamic-form.mjs +0 -1337
  302. package/fesm2015/mis-crystal-design-system-dynamic-form.mjs.map +0 -1
  303. package/fesm2015/mis-crystal-design-system-fab.mjs +0 -186
  304. package/fesm2015/mis-crystal-design-system-fab.mjs.map +0 -1
  305. package/fesm2015/mis-crystal-design-system-filter.mjs +0 -559
  306. package/fesm2015/mis-crystal-design-system-filter.mjs.map +0 -1
  307. package/fesm2015/mis-crystal-design-system-input-stepper.mjs +0 -124
  308. package/fesm2015/mis-crystal-design-system-input-stepper.mjs.map +0 -1
  309. package/fesm2015/mis-crystal-design-system-input.mjs +0 -165
  310. package/fesm2015/mis-crystal-design-system-input.mjs.map +0 -1
  311. package/fesm2015/mis-crystal-design-system-loader.mjs +0 -57
  312. package/fesm2015/mis-crystal-design-system-loader.mjs.map +0 -1
  313. package/fesm2015/mis-crystal-design-system-menu.mjs +0 -135
  314. package/fesm2015/mis-crystal-design-system-menu.mjs.map +0 -1
  315. package/fesm2015/mis-crystal-design-system-mobile-filter.mjs +0 -227
  316. package/fesm2015/mis-crystal-design-system-mobile-filter.mjs.map +0 -1
  317. package/fesm2015/mis-crystal-design-system-modal.mjs +0 -184
  318. package/fesm2015/mis-crystal-design-system-modal.mjs.map +0 -1
  319. package/fesm2015/mis-crystal-design-system-multi-select-dropdown.mjs +0 -550
  320. package/fesm2015/mis-crystal-design-system-multi-select-dropdown.mjs.map +0 -1
  321. package/fesm2015/mis-crystal-design-system-nested-multi-select-dropdown.mjs +0 -559
  322. package/fesm2015/mis-crystal-design-system-nested-multi-select-dropdown.mjs.map +0 -1
  323. package/fesm2015/mis-crystal-design-system-phone-input.mjs +0 -107
  324. package/fesm2015/mis-crystal-design-system-phone-input.mjs.map +0 -1
  325. package/fesm2015/mis-crystal-design-system-radio-button.mjs +0 -89
  326. package/fesm2015/mis-crystal-design-system-radio-button.mjs.map +0 -1
  327. package/fesm2015/mis-crystal-design-system-ske-loader.mjs +0 -86
  328. package/fesm2015/mis-crystal-design-system-ske-loader.mjs.map +0 -1
  329. package/fesm2015/mis-crystal-design-system-slider.mjs +0 -88
  330. package/fesm2015/mis-crystal-design-system-slider.mjs.map +0 -1
  331. package/fesm2015/mis-crystal-design-system-snackbar.mjs +0 -175
  332. package/fesm2015/mis-crystal-design-system-snackbar.mjs.map +0 -1
  333. package/fesm2015/mis-crystal-design-system-specificdatepicker.mjs +0 -970
  334. package/fesm2015/mis-crystal-design-system-specificdatepicker.mjs.map +0 -1
  335. package/fesm2015/mis-crystal-design-system-star-rating.mjs +0 -145
  336. package/fesm2015/mis-crystal-design-system-star-rating.mjs.map +0 -1
  337. package/fesm2015/mis-crystal-design-system-switch.mjs +0 -88
  338. package/fesm2015/mis-crystal-design-system-switch.mjs.map +0 -1
  339. package/fesm2015/mis-crystal-design-system-table.mjs +0 -1045
  340. package/fesm2015/mis-crystal-design-system-table.mjs.map +0 -1
  341. package/fesm2015/mis-crystal-design-system-timepicker.mjs +0 -484
  342. package/fesm2015/mis-crystal-design-system-timepicker.mjs.map +0 -1
  343. package/fesm2015/mis-crystal-design-system-timerangepicker.mjs +0 -273
  344. package/fesm2015/mis-crystal-design-system-timerangepicker.mjs.map +0 -1
  345. package/fesm2015/mis-crystal-design-system-toast.mjs +0 -214
  346. package/fesm2015/mis-crystal-design-system-toast.mjs.map +0 -1
  347. package/fesm2015/mis-crystal-design-system-tooltip.mjs +0 -272
  348. package/fesm2015/mis-crystal-design-system-tooltip.mjs.map +0 -1
  349. package/fesm2015/mis-crystal-design-system-virtual-scroll.mjs +0 -259
  350. package/fesm2015/mis-crystal-design-system-virtual-scroll.mjs.map +0 -1
  351. package/fesm2015/mis-crystal-design-system-widgets.mjs +0 -131
  352. package/fesm2015/mis-crystal-design-system-widgets.mjs.map +0 -1
  353. package/fesm2020/mis-crystal-design-system-action-list.mjs.map +0 -1
  354. package/fesm2020/mis-crystal-design-system-async-search-dropdown.mjs +0 -550
  355. package/fesm2020/mis-crystal-design-system-async-search-dropdown.mjs.map +0 -1
  356. package/fesm2020/mis-crystal-design-system-button.mjs +0 -172
  357. package/fesm2020/mis-crystal-design-system-button.mjs.map +0 -1
  358. package/fesm2020/mis-crystal-design-system-checkbox.mjs +0 -150
  359. package/fesm2020/mis-crystal-design-system-checkbox.mjs.map +0 -1
  360. package/fesm2020/mis-crystal-design-system-chip.mjs +0 -108
  361. package/fesm2020/mis-crystal-design-system-chip.mjs.map +0 -1
  362. package/fesm2020/mis-crystal-design-system-datepicker_v2.mjs.map +0 -1
  363. package/fesm2020/mis-crystal-design-system-daterangepicker_v2.mjs +0 -736
  364. package/fesm2020/mis-crystal-design-system-daterangepicker_v2.mjs.map +0 -1
  365. package/fesm2020/mis-crystal-design-system-dropdown.mjs.map +0 -1
  366. package/fesm2020/mis-crystal-design-system-dynamic-form.mjs.map +0 -1
  367. package/fesm2020/mis-crystal-design-system-fab.mjs.map +0 -1
  368. package/fesm2020/mis-crystal-design-system-filter.mjs.map +0 -1
  369. package/fesm2020/mis-crystal-design-system-loader.mjs +0 -50
  370. package/fesm2020/mis-crystal-design-system-mobile-filter.mjs +0 -206
  371. package/fesm2020/mis-crystal-design-system-mobile-filter.mjs.map +0 -1
  372. package/fesm2020/mis-crystal-design-system-multi-select-dropdown.mjs.map +0 -1
  373. package/fesm2020/mis-crystal-design-system-nested-multi-select-dropdown.mjs.map +0 -1
  374. package/fesm2020/mis-crystal-design-system-radio-button.mjs +0 -82
  375. package/fesm2020/mis-crystal-design-system-ske-loader.mjs +0 -76
  376. package/fesm2020/mis-crystal-design-system-ske-loader.mjs.map +0 -1
  377. package/fesm2020/mis-crystal-design-system-slider.mjs +0 -79
  378. package/fesm2020/mis-crystal-design-system-snackbar.mjs.map +0 -1
  379. package/fesm2020/mis-crystal-design-system-specificdatepicker.mjs.map +0 -1
  380. package/fesm2020/mis-crystal-design-system-star-rating.mjs.map +0 -1
  381. package/fesm2020/mis-crystal-design-system-styles.mjs +0 -4
  382. package/fesm2020/mis-crystal-design-system-styles.mjs.map +0 -1
  383. package/fesm2020/mis-crystal-design-system-switch.mjs +0 -81
  384. package/fesm2020/mis-crystal-design-system-switch.mjs.map +0 -1
  385. package/fesm2020/mis-crystal-design-system-table.mjs +0 -919
  386. package/fesm2020/mis-crystal-design-system-table.mjs.map +0 -1
  387. package/fesm2020/mis-crystal-design-system-utils.mjs +0 -24
  388. package/fesm2020/mis-crystal-design-system-utils.mjs.map +0 -1
  389. package/fesm2020/mis-crystal-design-system-virtual-scroll.mjs.map +0 -1
  390. package/fesm2020/mis-crystal-design-system.mjs +0 -24
  391. package/fesm2020/mis-crystal-design-system.mjs.map +0 -1
  392. package/input/mis-input.component.scss +0 -180
  393. package/modal/modal.scss +0 -9
  394. package/styles/fonts/icomoon.eot +0 -0
  395. package/styles/fonts/icomoon.svg +0 -315
  396. package/styles/fonts/icomoon.ttf +0 -0
  397. package/styles/fonts/icomoon.woff +0 -0
  398. package/styles/mis-borders-backgrounds.scss +0 -764
  399. package/styles/mis-color-constants.scss +0 -149
  400. package/styles/mis-flex.scss +0 -321
  401. package/styles/mis-fonts.scss +0 -124
  402. package/styles/mis-icons.scss +0 -1054
  403. package/styles/mis-mixins.scss +0 -46
  404. package/styles/mis-old-icon-styles.scss +0 -498
  405. package/styles/mis-spacing-sizing.scss +0 -2590
  406. package/styles/mis-typography.scss +0 -462
  407. /package/{esm2020 → esm2022}/action-list/index.mjs +0 -0
  408. /package/{esm2020 → esm2022}/action-list/mis-crystal-design-system-action-list.mjs +0 -0
  409. /package/{esm2020 → esm2022}/action-list/public_api.mjs +0 -0
  410. /package/{esm2020 → esm2022}/analytics/index.mjs +0 -0
  411. /package/{esm2020 → esm2022}/analytics/mis-crystal-design-system-analytics.mjs +0 -0
  412. /package/{esm2020 → esm2022}/analytics/public_api.mjs +0 -0
  413. /package/{esm2020 → esm2022}/async-search-dropdown/index.mjs +0 -0
  414. /package/{esm2020 → esm2022}/async-search-dropdown/mis-crystal-design-system-async-search-dropdown.mjs +0 -0
  415. /package/{esm2020 → esm2022}/async-search-dropdown/public_api.mjs +0 -0
  416. /package/{esm2020 → esm2022}/button/index.mjs +0 -0
  417. /package/{esm2020 → esm2022}/button/mis-crystal-design-system-button.mjs +0 -0
  418. /package/{esm2020 → esm2022}/button/public_api.mjs +0 -0
  419. /package/{esm2020 → esm2022}/checkbox/index.mjs +0 -0
  420. /package/{esm2020 → esm2022}/checkbox/mis-crystal-design-system-checkbox.mjs +0 -0
  421. /package/{esm2020 → esm2022}/checkbox/public_api.mjs +0 -0
  422. /package/{esm2020 → esm2022}/chip/index.mjs +0 -0
  423. /package/{esm2020 → esm2022}/chip/mis-crystal-design-system-chip.mjs +0 -0
  424. /package/{esm2020 → esm2022}/chip/public_api.mjs +0 -0
  425. /package/{esm2020 → esm2022}/datepicker_v2/datepicker-constants.mjs +0 -0
  426. /package/{esm2020 → esm2022}/datepicker_v2/index.mjs +0 -0
  427. /package/{esm2020 → esm2022}/datepicker_v2/mis-crystal-design-system-datepicker_v2.mjs +0 -0
  428. /package/{esm2020 → esm2022}/datepicker_v2/models/dp-config.model.mjs +0 -0
  429. /package/{esm2020 → esm2022}/datepicker_v2/public_api.mjs +0 -0
  430. /package/{esm2020 → esm2022}/daterangepicker_v2/daterangepicker-constants.mjs +0 -0
  431. /package/{esm2020 → esm2022}/daterangepicker_v2/index.mjs +0 -0
  432. /package/{esm2020 → esm2022}/daterangepicker_v2/mis-crystal-design-system-daterangepicker_v2.mjs +0 -0
  433. /package/{esm2020 → esm2022}/daterangepicker_v2/models/drp-config.model.mjs +0 -0
  434. /package/{esm2020 → esm2022}/daterangepicker_v2/public_api.mjs +0 -0
  435. /package/{esm2020 → esm2022}/drawer/drawer-constants.mjs +0 -0
  436. /package/{esm2020 → esm2022}/drawer/index.mjs +0 -0
  437. /package/{esm2020 → esm2022}/drawer/mis-crystal-design-system-drawer.mjs +0 -0
  438. /package/{esm2020 → esm2022}/drawer/public_api.mjs +0 -0
  439. /package/{esm2020 → esm2022}/dropdown/index.mjs +0 -0
  440. /package/{esm2020 → esm2022}/dropdown/mis-crystal-design-system-dropdown.mjs +0 -0
  441. /package/{esm2020 → esm2022}/dropdown/public_api.mjs +0 -0
  442. /package/{esm2020 → esm2022}/dynamic-form/dynamic-form.namespace.mjs +0 -0
  443. /package/{esm2020 → esm2022}/dynamic-form/index.mjs +0 -0
  444. /package/{esm2020 → esm2022}/dynamic-form/mis-crystal-design-system-dynamic-form.mjs +0 -0
  445. /package/{esm2020 → esm2022}/dynamic-form/public_api.mjs +0 -0
  446. /package/{esm2020 → esm2022}/fab/index.mjs +0 -0
  447. /package/{esm2020 → esm2022}/fab/mis-crystal-design-system-fab.mjs +0 -0
  448. /package/{esm2020 → esm2022}/fab/public_api.mjs +0 -0
  449. /package/{esm2020 → esm2022}/filter/animations/slideFromRight.mjs +0 -0
  450. /package/{esm2020 → esm2022}/filter/index.mjs +0 -0
  451. /package/{esm2020 → esm2022}/filter/mis-crystal-design-system-filter.mjs +0 -0
  452. /package/{esm2020 → esm2022}/filter/public_api.mjs +0 -0
  453. /package/{esm2020 → esm2022}/index.mjs +0 -0
  454. /package/{esm2020 → esm2022}/input/index.mjs +0 -0
  455. /package/{esm2020 → esm2022}/input/mis-crystal-design-system-input.mjs +0 -0
  456. /package/{esm2020 → esm2022}/input/public_api.mjs +0 -0
  457. /package/{esm2020 → esm2022}/input-stepper/index.mjs +0 -0
  458. /package/{esm2020 → esm2022}/input-stepper/mis-crystal-design-system-input-stepper.mjs +0 -0
  459. /package/{esm2020 → esm2022}/input-stepper/public_api.mjs +0 -0
  460. /package/{esm2020 → esm2022}/loader/index.mjs +0 -0
  461. /package/{esm2020 → esm2022}/loader/mis-crystal-design-system-loader.mjs +0 -0
  462. /package/{esm2020 → esm2022}/loader/public_api.mjs +0 -0
  463. /package/{esm2020 → esm2022}/menu/index.mjs +0 -0
  464. /package/{esm2020 → esm2022}/menu/mis-crystal-design-system-menu.mjs +0 -0
  465. /package/{esm2020 → esm2022}/menu/public_api.mjs +0 -0
  466. /package/{esm2020 → esm2022}/mis-crystal-design-system.mjs +0 -0
  467. /package/{esm2020 → esm2022}/mobile-filter/index.mjs +0 -0
  468. /package/{esm2020 → esm2022}/mobile-filter/mis-crystal-design-system-mobile-filter.mjs +0 -0
  469. /package/{esm2020 → esm2022}/mobile-filter/public_api.mjs +0 -0
  470. /package/{esm2020 → esm2022}/modal/index.mjs +0 -0
  471. /package/{esm2020 → esm2022}/modal/mis-crystal-design-system-modal.mjs +0 -0
  472. /package/{esm2020 → esm2022}/modal/modal-constants.mjs +0 -0
  473. /package/{esm2020 → esm2022}/modal/modal-ref.mjs +0 -0
  474. /package/{esm2020 → esm2022}/modal/public_api.mjs +0 -0
  475. /package/{esm2020 → esm2022}/multi-select-dropdown/index.mjs +0 -0
  476. /package/{esm2020 → esm2022}/multi-select-dropdown/mis-crystal-design-system-multi-select-dropdown.mjs +0 -0
  477. /package/{esm2020 → esm2022}/multi-select-dropdown/public_api.mjs +0 -0
  478. /package/{esm2020 → esm2022}/nested-multi-select-dropdown/index.mjs +0 -0
  479. /package/{esm2020 → esm2022}/nested-multi-select-dropdown/mis-crystal-design-system-nested-multi-select-dropdown.mjs +0 -0
  480. /package/{esm2020 → esm2022}/nested-multi-select-dropdown/public_api.mjs +0 -0
  481. /package/{esm2020 → esm2022}/phone-input/index.mjs +0 -0
  482. /package/{esm2020 → esm2022}/phone-input/mis-crystal-design-system-phone-input.mjs +0 -0
  483. /package/{esm2020 → esm2022}/phone-input/public_api.mjs +0 -0
  484. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  485. /package/{esm2020 → esm2022}/radio-button/index.mjs +0 -0
  486. /package/{esm2020 → esm2022}/radio-button/mis-crystal-design-system-radio-button.mjs +0 -0
  487. /package/{esm2020 → esm2022}/radio-button/public_api.mjs +0 -0
  488. /package/{esm2020 → esm2022}/ske-loader/index.mjs +0 -0
  489. /package/{esm2020 → esm2022}/ske-loader/mis-crystal-design-system-ske-loader.mjs +0 -0
  490. /package/{esm2020 → esm2022}/ske-loader/public_api.mjs +0 -0
  491. /package/{esm2020 → esm2022}/slider/index.mjs +0 -0
  492. /package/{esm2020 → esm2022}/slider/mis-crystal-design-system-slider.mjs +0 -0
  493. /package/{esm2020 → esm2022}/slider/public_api.mjs +0 -0
  494. /package/{esm2020 → esm2022}/snackbar/index.mjs +0 -0
  495. /package/{esm2020 → esm2022}/snackbar/mis-crystal-design-system-snackbar.mjs +0 -0
  496. /package/{esm2020 → esm2022}/snackbar/public_api.mjs +0 -0
  497. /package/{esm2020 → esm2022}/specificdatepicker/daterangepicker-constants.mjs +0 -0
  498. /package/{esm2020 → esm2022}/specificdatepicker/index.mjs +0 -0
  499. /package/{esm2020 → esm2022}/specificdatepicker/mis-crystal-design-system-specificdatepicker.mjs +0 -0
  500. /package/{esm2020 → esm2022}/specificdatepicker/models/sdp-config.model.mjs +0 -0
  501. /package/{esm2020 → esm2022}/specificdatepicker/public_api.mjs +0 -0
  502. /package/{esm2020 → esm2022}/star-rating/index.mjs +0 -0
  503. /package/{esm2020 → esm2022}/star-rating/mis-crystal-design-system-star-rating.mjs +0 -0
  504. /package/{esm2020 → esm2022}/star-rating/public_api.mjs +0 -0
  505. /package/{esm2020 → esm2022}/styles/index.mjs +0 -0
  506. /package/{esm2020 → esm2022}/styles/mis-crystal-design-system-styles.mjs +0 -0
  507. /package/{esm2020 → esm2022}/styles/public_api.mjs +0 -0
  508. /package/{esm2020 → esm2022}/switch/index.mjs +0 -0
  509. /package/{esm2020 → esm2022}/switch/mis-crystal-design-system-switch.mjs +0 -0
  510. /package/{esm2020 → esm2022}/switch/public_api.mjs +0 -0
  511. /package/{esm2020 → esm2022}/table/index.mjs +0 -0
  512. /package/{esm2020 → esm2022}/table/mis-crystal-design-system-table.mjs +0 -0
  513. /package/{esm2020 → esm2022}/table/public_api.mjs +0 -0
  514. /package/{esm2020 → esm2022}/timepicker/index.mjs +0 -0
  515. /package/{esm2020 → esm2022}/timepicker/mis-crystal-design-system-timepicker.mjs +0 -0
  516. /package/{esm2020 → esm2022}/timepicker/public_api.mjs +0 -0
  517. /package/{esm2020 → esm2022}/timepicker/time.namespace.mjs +0 -0
  518. /package/{esm2020 → esm2022}/timerangepicker/index.mjs +0 -0
  519. /package/{esm2020 → esm2022}/timerangepicker/mis-crystal-design-system-timerangepicker.mjs +0 -0
  520. /package/{esm2020 → esm2022}/timerangepicker/public_api.mjs +0 -0
  521. /package/{esm2020 → esm2022}/timerangepicker/timerange.namespace.mjs +0 -0
  522. /package/{esm2020 → esm2022}/toast/index.mjs +0 -0
  523. /package/{esm2020 → esm2022}/toast/mis-crystal-design-system-toast.mjs +0 -0
  524. /package/{esm2020 → esm2022}/toast/public_api.mjs +0 -0
  525. /package/{esm2020 → esm2022}/tooltip/index.mjs +0 -0
  526. /package/{esm2020 → esm2022}/tooltip/mis-crystal-design-system-tooltip.mjs +0 -0
  527. /package/{esm2020 → esm2022}/tooltip/models/tooltip.model.mjs +0 -0
  528. /package/{esm2020 → esm2022}/tooltip/public_api.mjs +0 -0
  529. /package/{esm2020 → esm2022}/utils/index.mjs +0 -0
  530. /package/{esm2020 → esm2022}/utils/mis-crystal-design-system-utils.mjs +0 -0
  531. /package/{esm2020 → esm2022}/virtual-scroll/index.mjs +0 -0
  532. /package/{esm2020 → esm2022}/virtual-scroll/mis-crystal-design-system-virtual-scroll.mjs +0 -0
  533. /package/{esm2020 → esm2022}/virtual-scroll/public_api.mjs +0 -0
  534. /package/{esm2020 → esm2022}/virtual-scroll/virtual-scroll.constants.mjs +0 -0
  535. /package/{esm2020 → esm2022}/widgets/classes/widget-group.mjs +0 -0
  536. /package/{esm2020 → esm2022}/widgets/index.mjs +0 -0
  537. /package/{esm2020 → esm2022}/widgets/interfaces/widgets.model.mjs +0 -0
  538. /package/{esm2020 → esm2022}/widgets/mis-crystal-design-system-widgets.mjs +0 -0
  539. /package/{esm2020 → esm2022}/widgets/public_api.mjs +0 -0
  540. /package/{fesm2015 → fesm2022}/mis-crystal-design-system-styles.mjs +0 -0
  541. /package/{fesm2015 → fesm2022}/mis-crystal-design-system-styles.mjs.map +0 -0
  542. /package/{fesm2015 → fesm2022}/mis-crystal-design-system-utils.mjs +0 -0
  543. /package/{fesm2015 → fesm2022}/mis-crystal-design-system-utils.mjs.map +0 -0
  544. /package/{fesm2015 → fesm2022}/mis-crystal-design-system.mjs +0 -0
  545. /package/{fesm2015 → fesm2022}/mis-crystal-design-system.mjs.map +0 -0
@@ -0,0 +1,1093 @@
1
+ import { Component, ContentChild, EventEmitter, Input, Output } from "@angular/core";
2
+ import { UntypedFormArray, UntypedFormControl, UntypedFormGroup, Validators } from "@angular/forms";
3
+ import dayjs from 'dayjs';
4
+ import timezone from 'dayjs/plugin/timezone';
5
+ import utc from 'dayjs/plugin/utc';
6
+ import customParseFormat from 'dayjs/plugin/customParseFormat';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/common";
9
+ import * as i2 from "@angular/forms";
10
+ import * as i3 from "mis-crystal-design-system/dropdown";
11
+ import * as i4 from "mis-crystal-design-system/switch";
12
+ import * as i5 from "mis-crystal-design-system/multi-select-dropdown";
13
+ import * as i6 from "mis-crystal-design-system/datepicker_v2";
14
+ const _c0 = ["customInputTextNumber"];
15
+ const _c1 = ["customInputTextarea"];
16
+ const _c2 = ["customInputDate"];
17
+ const _c3 = ["customBooleanToggle"];
18
+ const _c4 = ["customSingleSelectDropdown"];
19
+ const _c5 = ["customSingleSelectRadio"];
20
+ const _c6 = ["customMultiSelectCheckbox"];
21
+ const _c7 = ["customMultiSelectDropdown"];
22
+ const _c8 = (a0, a1, a2) => ({ $implicit: a0, formGroup: a1, control: a2 });
23
+ const _c9 = (a0, a1) => ({ $implicit: a0, control: a1 });
24
+ const _c10 = (a0, a1, a2) => ({ field: a0, control: a1, formgroup: a2 });
25
+ const _c11 = a0 => ({ "border-bottom": a0 });
26
+ const _c12 = a0 => ({ "border": a0 });
27
+ const _c13 = a0 => ({ $implicit: a0 });
28
+ const _c14 = a0 => ({ "removeable-container": a0 });
29
+ const _c15 = a0 => ({ "checkbox-active": a0 });
30
+ const _c16 = () => ({ "flex-basis": "100%", "height": "0" });
31
+ function DynamicFormComponent_ng_container_2_div_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
32
+ i0.ɵɵelementContainerStart(0);
33
+ i0.ɵɵelementContainer(1, 15);
34
+ i0.ɵɵelementContainerEnd();
35
+ } if (rf & 2) {
36
+ const subFieldControl_r1 = ctx.$implicit;
37
+ const j_r2 = ctx.index;
38
+ const ctx_r2 = i0.ɵɵnextContext(2);
39
+ const fieldControl_r4 = ctx_r2.$implicit;
40
+ const i_r5 = ctx_r2.index;
41
+ const ctx_r5 = i0.ɵɵnextContext();
42
+ const dynamicField_r7 = i0.ɵɵreference(4);
43
+ i0.ɵɵadvance();
44
+ i0.ɵɵproperty("ngTemplateOutlet", dynamicField_r7)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c9, ctx_r5.findSelectedSubFieldConfig(ctx_r5.formFields[i_r5] == null ? null : ctx_r5.formFields[i_r5].subFields, fieldControl_r4.controls.value.value.value, j_r2), subFieldControl_r1));
45
+ } }
46
+ function DynamicFormComponent_ng_container_2_div_2_Template(rf, ctx) { if (rf & 1) {
47
+ i0.ɵɵelementStart(0, "div", 17);
48
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_container_2_div_2_ng_container_1_Template, 2, 5, "ng-container", 18);
49
+ i0.ɵɵelementEnd();
50
+ } if (rf & 2) {
51
+ const fieldControl_r4 = i0.ɵɵnextContext().$implicit;
52
+ i0.ɵɵadvance();
53
+ i0.ɵɵproperty("ngForOf", fieldControl_r4.controls.subFields.controls);
54
+ } }
55
+ function DynamicFormComponent_ng_container_2_Template(rf, ctx) { if (rf & 1) {
56
+ i0.ɵɵelementContainerStart(0, 14);
57
+ i0.ɵɵelementContainer(1, 15);
58
+ i0.ɵɵtemplate(2, DynamicFormComponent_ng_container_2_div_2_Template, 2, 1, "div", 16);
59
+ i0.ɵɵelementContainerEnd();
60
+ } if (rf & 2) {
61
+ const fieldControl_r4 = ctx.$implicit;
62
+ const i_r5 = ctx.index;
63
+ const ctx_r5 = i0.ɵɵnextContext();
64
+ const dynamicField_r7 = i0.ɵɵreference(4);
65
+ i0.ɵɵproperty("formGroupName", i_r5);
66
+ i0.ɵɵadvance();
67
+ i0.ɵɵproperty("ngTemplateOutlet", dynamicField_r7)("ngTemplateOutletContext", i0.ɵɵpureFunction3(4, _c8, ctx_r5.formFields[i_r5], fieldControl_r4, fieldControl_r4.controls.value));
68
+ i0.ɵɵadvance();
69
+ i0.ɵɵproperty("ngIf", (fieldControl_r4 == null ? null : fieldControl_r4.value) && (!!(ctx_r5.formFields[i_r5] == null ? null : ctx_r5.formFields[i_r5].subFields) && (ctx_r5.formFields[i_r5] == null ? null : ctx_r5.formFields[i_r5].subFields == null ? null : ctx_r5.formFields[i_r5].subFields.length) > 0 && ctx_r5.matchParentConfig(ctx_r5.formFields[i_r5] == null ? null : ctx_r5.formFields[i_r5].subFields, fieldControl_r4 == null ? null : fieldControl_r4.controls == null ? null : fieldControl_r4.controls.value == null ? null : fieldControl_r4.controls.value.value == null ? null : fieldControl_r4.controls.value.value.value)));
70
+ } }
71
+ function DynamicFormComponent_ng_template_3_ng_container_0_ng_container_1_ng_template_1_Template(rf, ctx) { }
72
+ function DynamicFormComponent_ng_template_3_ng_container_0_ng_container_1_Template(rf, ctx) { if (rf & 1) {
73
+ i0.ɵɵelementContainerStart(0);
74
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_0_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 15);
75
+ i0.ɵɵelementContainerEnd();
76
+ } if (rf & 2) {
77
+ const ctx_r7 = i0.ɵɵnextContext(2);
78
+ const field_r9 = ctx_r7.$implicit;
79
+ const control_r10 = ctx_r7.control;
80
+ const formgroup_r11 = ctx_r7.formGroup;
81
+ const ctx_r5 = i0.ɵɵnextContext();
82
+ i0.ɵɵadvance();
83
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r5.customInputTextNumber)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r9, control_r10, formgroup_r11));
84
+ } }
85
+ function DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
86
+ i0.ɵɵelementStart(0, "span");
87
+ i0.ɵɵtext(1, " *");
88
+ i0.ɵɵelementEnd();
89
+ } }
90
+ function DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_ng_container_6_Template(rf, ctx) { if (rf & 1) {
91
+ i0.ɵɵelementContainer(0, 15);
92
+ } if (rf & 2) {
93
+ const control_r10 = i0.ɵɵnextContext(3).control;
94
+ i0.ɵɵnextContext();
95
+ const dynamicFieldErrors_r13 = i0.ɵɵreference(6);
96
+ i0.ɵɵproperty("ngTemplateOutlet", dynamicFieldErrors_r13)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c13, control_r10.errors));
97
+ } }
98
+ function DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_Template(rf, ctx) { if (rf & 1) {
99
+ const _r12 = i0.ɵɵgetCurrentView();
100
+ i0.ɵɵelementStart(0, "div", 21)(1, "p", 22);
101
+ i0.ɵɵtext(2);
102
+ i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_span_3_Template, 2, 0, "span", 19);
103
+ i0.ɵɵelementEnd();
104
+ i0.ɵɵelement(4, "div", 23);
105
+ i0.ɵɵelementStart(5, "input", 24);
106
+ i0.ɵɵlistener("ngModelChange", function DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_Template_input_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r7 = i0.ɵɵnextContext(2); const field_r9 = ctx_r7.$implicit; const formgroup_r11 = ctx_r7.formGroup; const ctx_r5 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r5.updateSubDynamicFields(field_r9, formgroup_r11, $event)); });
107
+ i0.ɵɵelementEnd();
108
+ i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_ng_container_6_Template, 1, 4, "ng-container", 25);
109
+ i0.ɵɵelementEnd();
110
+ } if (rf & 2) {
111
+ const ctx_r7 = i0.ɵɵnextContext(2);
112
+ const field_r9 = ctx_r7.$implicit;
113
+ const control_r10 = ctx_r7.control;
114
+ const formgroup_r11 = ctx_r7.formGroup;
115
+ const ctx_r5 = i0.ɵɵnextContext();
116
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(9, _c11, (formgroup_r11 == null ? null : formgroup_r11.controls == null ? null : formgroup_r11.controls.subFields == null ? null : formgroup_r11.controls.subFields.controls == null ? null : formgroup_r11.controls.subFields.controls.length) && ctx_r5.removeSepratorForSubFields ? "none" : ""));
117
+ i0.ɵɵadvance(2);
118
+ i0.ɵɵtextInterpolate1(" ", field_r9 == null ? null : field_r9.title, " ");
119
+ i0.ɵɵadvance();
120
+ i0.ɵɵproperty("ngIf", field_r9.validators && field_r9.validators.length > 0);
121
+ i0.ɵɵadvance(2);
122
+ i0.ɵɵproperty("type", field_r9.fieldInputType)("formControl", control_r10)("ngStyle", i0.ɵɵpureFunction1(11, _c12, control_r10.touched && control_r10.errors ? "1px solid #B00020" : ""))("placeholder", field_r9.placeholderText ? field_r9.placeholderText : "Input Text")("min", field_r9.fieldInputType === "number" ? 0 : "");
123
+ i0.ɵɵadvance();
124
+ i0.ɵɵproperty("ngIf", control_r10.touched && control_r10.errors);
125
+ } }
126
+ function DynamicFormComponent_ng_template_3_ng_container_0_Template(rf, ctx) { if (rf & 1) {
127
+ i0.ɵɵelementContainerStart(0);
128
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_0_ng_container_1_Template, 2, 6, "ng-container", 20)(2, DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_Template, 7, 13, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor);
129
+ i0.ɵɵelementContainerEnd();
130
+ } if (rf & 2) {
131
+ const defaultInputTextNumber_r14 = i0.ɵɵreference(3);
132
+ const ctx_r5 = i0.ɵɵnextContext(2);
133
+ i0.ɵɵadvance();
134
+ i0.ɵɵproperty("ngIf", ctx_r5.customInputTextNumber)("ngIfElse", defaultInputTextNumber_r14);
135
+ } }
136
+ function DynamicFormComponent_ng_template_3_ng_container_1_ng_container_1_ng_template_1_Template(rf, ctx) { }
137
+ function DynamicFormComponent_ng_template_3_ng_container_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
138
+ i0.ɵɵelementContainerStart(0);
139
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_1_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 15);
140
+ i0.ɵɵelementContainerEnd();
141
+ } if (rf & 2) {
142
+ const ctx_r7 = i0.ɵɵnextContext(2);
143
+ const field_r9 = ctx_r7.$implicit;
144
+ const control_r10 = ctx_r7.control;
145
+ const formgroup_r11 = ctx_r7.formGroup;
146
+ const ctx_r5 = i0.ɵɵnextContext();
147
+ i0.ɵɵadvance();
148
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r5.customInputTextarea)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r9, control_r10, formgroup_r11));
149
+ } }
150
+ function DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
151
+ i0.ɵɵelementStart(0, "span");
152
+ i0.ɵɵtext(1, " *");
153
+ i0.ɵɵelementEnd();
154
+ } }
155
+ function DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_ng_container_6_Template(rf, ctx) { if (rf & 1) {
156
+ i0.ɵɵelementContainer(0, 15);
157
+ } if (rf & 2) {
158
+ const control_r10 = i0.ɵɵnextContext(3).control;
159
+ i0.ɵɵnextContext();
160
+ const dynamicFieldErrors_r13 = i0.ɵɵreference(6);
161
+ i0.ɵɵproperty("ngTemplateOutlet", dynamicFieldErrors_r13)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c13, control_r10.errors));
162
+ } }
163
+ function DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_Template(rf, ctx) { if (rf & 1) {
164
+ const _r15 = i0.ɵɵgetCurrentView();
165
+ i0.ɵɵelementStart(0, "div", 21)(1, "p", 22);
166
+ i0.ɵɵtext(2);
167
+ i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_span_3_Template, 2, 0, "span", 19);
168
+ i0.ɵɵelementEnd();
169
+ i0.ɵɵelement(4, "div", 23);
170
+ i0.ɵɵelementStart(5, "textarea", 26);
171
+ i0.ɵɵlistener("ngModelChange", function DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_Template_textarea_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r7 = i0.ɵɵnextContext(2); const field_r9 = ctx_r7.$implicit; const formgroup_r11 = ctx_r7.formGroup; const ctx_r5 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r5.updateSubDynamicFields(field_r9, formgroup_r11, $event)); });
172
+ i0.ɵɵelementEnd();
173
+ i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_ng_container_6_Template, 1, 4, "ng-container", 25);
174
+ i0.ɵɵelementEnd();
175
+ } if (rf & 2) {
176
+ const ctx_r7 = i0.ɵɵnextContext(2);
177
+ const field_r9 = ctx_r7.$implicit;
178
+ const control_r10 = ctx_r7.control;
179
+ const formgroup_r11 = ctx_r7.formGroup;
180
+ const ctx_r5 = i0.ɵɵnextContext();
181
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(7, _c11, (formgroup_r11 == null ? null : formgroup_r11.controls == null ? null : formgroup_r11.controls.subFields == null ? null : formgroup_r11.controls.subFields.controls == null ? null : formgroup_r11.controls.subFields.controls.length) && ctx_r5.removeSepratorForSubFields ? "none" : ""));
182
+ i0.ɵɵadvance(2);
183
+ i0.ɵɵtextInterpolate1(" ", field_r9.title, "");
184
+ i0.ɵɵadvance();
185
+ i0.ɵɵproperty("ngIf", field_r9.validators && field_r9.validators.length > 0);
186
+ i0.ɵɵadvance(2);
187
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(9, _c12, control_r10.touched && control_r10.errors ? "1px solid #B00020" : ""))("placeholder", field_r9.placeholderText ? field_r9.placeholderText : "Input Text")("formControl", control_r10);
188
+ i0.ɵɵadvance();
189
+ i0.ɵɵproperty("ngIf", control_r10.touched && control_r10.errors);
190
+ } }
191
+ function DynamicFormComponent_ng_template_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
192
+ i0.ɵɵelementContainerStart(0);
193
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_1_ng_container_1_Template, 2, 6, "ng-container", 20)(2, DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_Template, 7, 11, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor);
194
+ i0.ɵɵelementContainerEnd();
195
+ } if (rf & 2) {
196
+ const defaultInputTextarea_r16 = i0.ɵɵreference(3);
197
+ const ctx_r5 = i0.ɵɵnextContext(2);
198
+ i0.ɵɵadvance();
199
+ i0.ɵɵproperty("ngIf", ctx_r5.customInputTextarea)("ngIfElse", defaultInputTextarea_r16);
200
+ } }
201
+ function DynamicFormComponent_ng_template_3_ng_container_2_ng_container_1_ng_template_1_Template(rf, ctx) { }
202
+ function DynamicFormComponent_ng_template_3_ng_container_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
203
+ i0.ɵɵelementContainerStart(0);
204
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_2_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 15);
205
+ i0.ɵɵelementContainerEnd();
206
+ } if (rf & 2) {
207
+ const ctx_r7 = i0.ɵɵnextContext(2);
208
+ const field_r9 = ctx_r7.$implicit;
209
+ const control_r10 = ctx_r7.control;
210
+ const formgroup_r11 = ctx_r7.formGroup;
211
+ const ctx_r5 = i0.ɵɵnextContext();
212
+ i0.ɵɵadvance();
213
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r5.customInputDate)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r9, control_r10, formgroup_r11));
214
+ } }
215
+ function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_span_3_Template(rf, ctx) { if (rf & 1) {
216
+ i0.ɵɵelementStart(0, "span");
217
+ i0.ɵɵtext(1, " *");
218
+ i0.ɵɵelementEnd();
219
+ } }
220
+ function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_img_7_Template(rf, ctx) { if (rf & 1) {
221
+ const _r18 = i0.ɵɵgetCurrentView();
222
+ i0.ɵɵelementStart(0, "img", 33);
223
+ i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_img_7_Template_img_click_0_listener() { i0.ɵɵrestoreView(_r18); i0.ɵɵnextContext(); const dp_r19 = i0.ɵɵreference(6); return i0.ɵɵresetView(dp_r19.click()); });
224
+ i0.ɵɵelementEnd();
225
+ } if (rf & 2) {
226
+ const ctx_r5 = i0.ɵɵnextContext(5);
227
+ i0.ɵɵproperty("src", ctx_r5.calendarIconUrl, i0.ɵɵsanitizeUrl);
228
+ } }
229
+ function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_ng_container_8_Template(rf, ctx) { if (rf & 1) {
230
+ i0.ɵɵelementContainer(0, 15);
231
+ } if (rf & 2) {
232
+ const control_r10 = i0.ɵɵnextContext(4).control;
233
+ i0.ɵɵnextContext();
234
+ const dynamicFieldErrors_r13 = i0.ɵɵreference(6);
235
+ i0.ɵɵproperty("ngTemplateOutlet", dynamicFieldErrors_r13)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c13, control_r10.errors));
236
+ } }
237
+ function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_Template(rf, ctx) { if (rf & 1) {
238
+ const _r17 = i0.ɵɵgetCurrentView();
239
+ i0.ɵɵelementStart(0, "div", 28)(1, "p", 29);
240
+ i0.ɵɵtext(2);
241
+ i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_span_3_Template, 2, 0, "span", 19);
242
+ i0.ɵɵelementEnd();
243
+ i0.ɵɵelementStart(4, "div", 30)(5, "input", 31, 5);
244
+ i0.ɵɵlistener("dateChange", function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_Template_input_dateChange_5_listener($event) { i0.ɵɵrestoreView(_r17); const control_r10 = i0.ɵɵnextContext(3).control; return i0.ɵɵresetView(control_r10.setValue($event)); });
245
+ i0.ɵɵelementEnd();
246
+ i0.ɵɵtemplate(7, DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_img_7_Template, 1, 1, "img", 32);
247
+ i0.ɵɵelementEnd();
248
+ i0.ɵɵtemplate(8, DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_ng_container_8_Template, 1, 4, "ng-container", 25);
249
+ i0.ɵɵelementEnd();
250
+ } if (rf & 2) {
251
+ const ctx_r7 = i0.ɵɵnextContext(3);
252
+ const field_r9 = ctx_r7.$implicit;
253
+ const control_r10 = ctx_r7.control;
254
+ const formgroup_r11 = ctx_r7.formGroup;
255
+ const ctx_r5 = i0.ɵɵnextContext();
256
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(9, _c11, (formgroup_r11 == null ? null : formgroup_r11.controls == null ? null : formgroup_r11.controls.subFields == null ? null : formgroup_r11.controls.subFields.controls == null ? null : formgroup_r11.controls.subFields.controls.length) && ctx_r5.removeSepratorForSubFields ? "none" : ""));
257
+ i0.ɵɵadvance(2);
258
+ i0.ɵɵtextInterpolate1(" ", field_r9.title, " ");
259
+ i0.ɵɵadvance();
260
+ i0.ɵɵproperty("ngIf", field_r9.validators && field_r9.validators.length > 0);
261
+ i0.ɵɵadvance(2);
262
+ i0.ɵɵproperty("dpConfig", field_r9.fieldConfig)("selectedDate", control_r10.value)("offsetY", 0)("value", control_r10.value);
263
+ i0.ɵɵadvance(2);
264
+ i0.ɵɵproperty("ngIf", ctx_r5.calendarIconUrl);
265
+ i0.ɵɵadvance();
266
+ i0.ɵɵproperty("ngIf", control_r10.touched && control_r10.errors);
267
+ } }
268
+ function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_Template(rf, ctx) { if (rf & 1) {
269
+ i0.ɵɵtemplate(0, DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_Template, 9, 11, "div", 27);
270
+ } if (rf & 2) {
271
+ const field_r9 = i0.ɵɵnextContext(2).$implicit;
272
+ i0.ɵɵproperty("ngIf", field_r9.fieldType === "input" && field_r9.fieldInputType === "date");
273
+ } }
274
+ function DynamicFormComponent_ng_template_3_ng_container_2_Template(rf, ctx) { if (rf & 1) {
275
+ i0.ɵɵelementContainerStart(0);
276
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_2_ng_container_1_Template, 2, 6, "ng-container", 20)(2, DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_Template, 1, 1, "ng-template", null, 4, i0.ɵɵtemplateRefExtractor);
277
+ i0.ɵɵelementContainerEnd();
278
+ } if (rf & 2) {
279
+ const defaultInputDate_r20 = i0.ɵɵreference(3);
280
+ const ctx_r5 = i0.ɵɵnextContext(2);
281
+ i0.ɵɵadvance();
282
+ i0.ɵɵproperty("ngIf", ctx_r5.customInputDate)("ngIfElse", defaultInputDate_r20);
283
+ } }
284
+ function DynamicFormComponent_ng_template_3_ng_container_3_ng_container_1_ng_template_1_Template(rf, ctx) { }
285
+ function DynamicFormComponent_ng_template_3_ng_container_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
286
+ i0.ɵɵelementContainerStart(0);
287
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_3_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 15);
288
+ i0.ɵɵelementContainerEnd();
289
+ } if (rf & 2) {
290
+ const ctx_r7 = i0.ɵɵnextContext(2);
291
+ const field_r9 = ctx_r7.$implicit;
292
+ const control_r10 = ctx_r7.control;
293
+ const formgroup_r11 = ctx_r7.formGroup;
294
+ const ctx_r5 = i0.ɵɵnextContext();
295
+ i0.ɵɵadvance();
296
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r5.customBooleanToggle)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r9, control_r10, formgroup_r11));
297
+ } }
298
+ function DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
299
+ i0.ɵɵelementStart(0, "span");
300
+ i0.ɵɵtext(1, " *");
301
+ i0.ɵɵelementEnd();
302
+ } }
303
+ function DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_ng_container_5_Template(rf, ctx) { if (rf & 1) {
304
+ i0.ɵɵelementContainer(0, 15);
305
+ } if (rf & 2) {
306
+ const control_r10 = i0.ɵɵnextContext(3).control;
307
+ i0.ɵɵnextContext();
308
+ const dynamicFieldErrors_r13 = i0.ɵɵreference(6);
309
+ i0.ɵɵproperty("ngTemplateOutlet", dynamicFieldErrors_r13)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c13, control_r10.errors));
310
+ } }
311
+ function DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_Template(rf, ctx) { if (rf & 1) {
312
+ const _r21 = i0.ɵɵgetCurrentView();
313
+ i0.ɵɵelementStart(0, "div", 28)(1, "p", 29);
314
+ i0.ɵɵtext(2);
315
+ i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_span_3_Template, 2, 0, "span", 19);
316
+ i0.ɵɵelementEnd();
317
+ i0.ɵɵelementStart(4, "mis-switch", 34);
318
+ i0.ɵɵlistener("valueChanged", function DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_Template_mis_switch_valueChanged_4_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r7 = i0.ɵɵnextContext(2); const field_r9 = ctx_r7.$implicit; const formgroup_r11 = ctx_r7.formGroup; const ctx_r5 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r5.updateSubDynamicFields(field_r9, formgroup_r11, $event)); });
319
+ i0.ɵɵelementEnd();
320
+ i0.ɵɵtemplate(5, DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_ng_container_5_Template, 1, 4, "ng-container", 25);
321
+ i0.ɵɵelementEnd();
322
+ } if (rf & 2) {
323
+ const ctx_r7 = i0.ɵɵnextContext(2);
324
+ const field_r9 = ctx_r7.$implicit;
325
+ const control_r10 = ctx_r7.control;
326
+ const formgroup_r11 = ctx_r7.formGroup;
327
+ const ctx_r5 = i0.ɵɵnextContext();
328
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(5, _c11, (formgroup_r11 == null ? null : formgroup_r11.controls == null ? null : formgroup_r11.controls.subFields == null ? null : formgroup_r11.controls.subFields.controls == null ? null : formgroup_r11.controls.subFields.controls.length) && ctx_r5.removeSepratorForSubFields ? "none" : ""));
329
+ i0.ɵɵadvance(2);
330
+ i0.ɵɵtextInterpolate1(" ", field_r9.title, "");
331
+ i0.ɵɵadvance();
332
+ i0.ɵɵproperty("ngIf", field_r9.validators && field_r9.validators.length > 0);
333
+ i0.ɵɵadvance();
334
+ i0.ɵɵproperty("control", control_r10);
335
+ i0.ɵɵadvance();
336
+ i0.ɵɵproperty("ngIf", control_r10.touched && control_r10.errors);
337
+ } }
338
+ function DynamicFormComponent_ng_template_3_ng_container_3_Template(rf, ctx) { if (rf & 1) {
339
+ i0.ɵɵelementContainerStart(0);
340
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_3_ng_container_1_Template, 2, 6, "ng-container", 20)(2, DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_Template, 6, 7, "ng-template", null, 6, i0.ɵɵtemplateRefExtractor);
341
+ i0.ɵɵelementContainerEnd();
342
+ } if (rf & 2) {
343
+ const defaultBooleanToggle_r22 = i0.ɵɵreference(3);
344
+ const ctx_r5 = i0.ɵɵnextContext(2);
345
+ i0.ɵɵadvance();
346
+ i0.ɵɵproperty("ngIf", ctx_r5.customBooleanToggle)("ngIfElse", defaultBooleanToggle_r22);
347
+ } }
348
+ function DynamicFormComponent_ng_template_3_ng_container_4_ng_container_1_ng_template_1_Template(rf, ctx) { }
349
+ function DynamicFormComponent_ng_template_3_ng_container_4_ng_container_1_Template(rf, ctx) { if (rf & 1) {
350
+ i0.ɵɵelementContainerStart(0);
351
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_4_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 15);
352
+ i0.ɵɵelementContainerEnd();
353
+ } if (rf & 2) {
354
+ const ctx_r7 = i0.ɵɵnextContext(2);
355
+ const field_r9 = ctx_r7.$implicit;
356
+ const control_r10 = ctx_r7.control;
357
+ const formgroup_r11 = ctx_r7.formGroup;
358
+ const ctx_r5 = i0.ɵɵnextContext();
359
+ i0.ɵɵadvance();
360
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r5.customSingleSelectDropdown)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r9, control_r10, formgroup_r11));
361
+ } }
362
+ function DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
363
+ i0.ɵɵelementStart(0, "span");
364
+ i0.ɵɵtext(1, " *");
365
+ i0.ɵɵelementEnd();
366
+ } }
367
+ function DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_img_6_Template(rf, ctx) { if (rf & 1) {
368
+ const _r24 = i0.ɵɵgetCurrentView();
369
+ i0.ɵɵelementStart(0, "img", 38);
370
+ i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_img_6_Template_img_click_0_listener() { i0.ɵɵrestoreView(_r24); const field_r9 = i0.ɵɵnextContext(3).$implicit; const ctx_r5 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r5.fieldRemoved.emit(field_r9)); });
371
+ i0.ɵɵelementEnd();
372
+ } if (rf & 2) {
373
+ const ctx_r5 = i0.ɵɵnextContext(4);
374
+ i0.ɵɵproperty("src", ctx_r5.removeIconUrl, i0.ɵɵsanitizeUrl);
375
+ } }
376
+ function DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_ng_container_7_Template(rf, ctx) { if (rf & 1) {
377
+ i0.ɵɵelementContainer(0, 15);
378
+ } if (rf & 2) {
379
+ const control_r10 = i0.ɵɵnextContext(3).control;
380
+ i0.ɵɵnextContext();
381
+ const dynamicFieldErrors_r13 = i0.ɵɵreference(6);
382
+ i0.ɵɵproperty("ngTemplateOutlet", dynamicFieldErrors_r13)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c13, control_r10.errors));
383
+ } }
384
+ function DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_Template(rf, ctx) { if (rf & 1) {
385
+ const _r23 = i0.ɵɵgetCurrentView();
386
+ i0.ɵɵelementStart(0, "div", 28)(1, "p", 29);
387
+ i0.ɵɵtext(2);
388
+ i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_span_3_Template, 2, 0, "span", 19);
389
+ i0.ɵɵelementEnd();
390
+ i0.ɵɵelementStart(4, "div", 35)(5, "mis-dropdown", 36);
391
+ i0.ɵɵlistener("onChange", function DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_Template_mis_dropdown_onChange_5_listener($event) { i0.ɵɵrestoreView(_r23); const ctx_r7 = i0.ɵɵnextContext(2); const field_r9 = ctx_r7.$implicit; const control_r10 = ctx_r7.control; const formgroup_r11 = ctx_r7.formGroup; const ctx_r5 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r5.updateSelectedValueForSingleSelect(field_r9, control_r10, formgroup_r11, $event)); });
392
+ i0.ɵɵelementEnd();
393
+ i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_img_6_Template, 1, 1, "img", 37);
394
+ i0.ɵɵelementEnd();
395
+ i0.ɵɵtemplate(7, DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_ng_container_7_Template, 1, 4, "ng-container", 25);
396
+ i0.ɵɵelementEnd();
397
+ } if (rf & 2) {
398
+ const ctx_r7 = i0.ɵɵnextContext(2);
399
+ const field_r9 = ctx_r7.$implicit;
400
+ const control_r10 = ctx_r7.control;
401
+ const formgroup_r11 = ctx_r7.formGroup;
402
+ const ctx_r5 = i0.ɵɵnextContext();
403
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(10, _c11, (formgroup_r11 == null ? null : formgroup_r11.controls == null ? null : formgroup_r11.controls.subFields == null ? null : formgroup_r11.controls.subFields.controls == null ? null : formgroup_r11.controls.subFields.controls.length) && ctx_r5.removeSepratorForSubFields ? "none" : ""));
404
+ i0.ɵɵadvance(2);
405
+ i0.ɵɵtextInterpolate1(" ", field_r9.title, "");
406
+ i0.ɵɵadvance();
407
+ i0.ɵɵproperty("ngIf", field_r9.validators && field_r9.validators.length > 0);
408
+ i0.ɵɵadvance();
409
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(12, _c14, field_r9 == null ? null : field_r9.isRemoveable));
410
+ i0.ɵɵadvance();
411
+ i0.ɵɵproperty("searchEnabled", false)("width", "140px")("data", field_r9.itemsList)("selectedItem", control_r10.value);
412
+ i0.ɵɵadvance();
413
+ i0.ɵɵproperty("ngIf", field_r9.isRemoveable && ctx_r5.removeIconUrl);
414
+ i0.ɵɵadvance();
415
+ i0.ɵɵproperty("ngIf", control_r10.touched && control_r10.errors);
416
+ } }
417
+ function DynamicFormComponent_ng_template_3_ng_container_4_Template(rf, ctx) { if (rf & 1) {
418
+ i0.ɵɵelementContainerStart(0);
419
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_4_ng_container_1_Template, 2, 6, "ng-container", 20)(2, DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_Template, 8, 14, "ng-template", null, 7, i0.ɵɵtemplateRefExtractor);
420
+ i0.ɵɵelementContainerEnd();
421
+ } if (rf & 2) {
422
+ const defaultSingleSelectDropdown_r25 = i0.ɵɵreference(3);
423
+ const ctx_r5 = i0.ɵɵnextContext(2);
424
+ i0.ɵɵadvance();
425
+ i0.ɵɵproperty("ngIf", ctx_r5.customSingleSelectDropdown)("ngIfElse", defaultSingleSelectDropdown_r25);
426
+ } }
427
+ function DynamicFormComponent_ng_template_3_ng_container_5_ng_container_1_ng_template_1_Template(rf, ctx) { }
428
+ function DynamicFormComponent_ng_template_3_ng_container_5_ng_container_1_Template(rf, ctx) { if (rf & 1) {
429
+ i0.ɵɵelementContainerStart(0);
430
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_5_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 15);
431
+ i0.ɵɵelementContainerEnd();
432
+ } if (rf & 2) {
433
+ const ctx_r7 = i0.ɵɵnextContext(2);
434
+ const field_r9 = ctx_r7.$implicit;
435
+ const control_r10 = ctx_r7.control;
436
+ const formgroup_r11 = ctx_r7.formGroup;
437
+ const ctx_r5 = i0.ɵɵnextContext();
438
+ i0.ɵɵadvance();
439
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r5.customSingleSelectRadio)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r9, control_r10, formgroup_r11));
440
+ } }
441
+ function DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
442
+ i0.ɵɵelementStart(0, "span");
443
+ i0.ɵɵtext(1, " *");
444
+ i0.ɵɵelementEnd();
445
+ } }
446
+ function DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_div_6_img_1_Template(rf, ctx) { if (rf & 1) {
447
+ i0.ɵɵelement(0, "img", 43);
448
+ } if (rf & 2) {
449
+ const ctx_r5 = i0.ɵɵnextContext(5);
450
+ i0.ɵɵproperty("src", ctx_r5.activeBtnIconUrl, i0.ɵɵsanitizeUrl);
451
+ } }
452
+ function DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_div_6_Template(rf, ctx) { if (rf & 1) {
453
+ const _r26 = i0.ɵɵgetCurrentView();
454
+ i0.ɵɵelementStart(0, "div", 41);
455
+ i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_div_6_Template_div_click_0_listener() { const item_r27 = i0.ɵɵrestoreView(_r26).$implicit; const ctx_r7 = i0.ɵɵnextContext(3); const field_r9 = ctx_r7.$implicit; const control_r10 = ctx_r7.control; const formgroup_r11 = ctx_r7.formGroup; const ctx_r5 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r5.updateSelectedValueForSingleSelect(field_r9, control_r10, formgroup_r11, item_r27)); });
456
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_div_6_img_1_Template, 1, 1, "img", 42);
457
+ i0.ɵɵelementStart(2, "p", 29);
458
+ i0.ɵɵtext(3);
459
+ i0.ɵɵelementEnd()();
460
+ } if (rf & 2) {
461
+ const item_r27 = ctx.$implicit;
462
+ const control_r10 = i0.ɵɵnextContext(3).control;
463
+ const ctx_r5 = i0.ɵɵnextContext();
464
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c15, item_r27.label === (control_r10.value == null ? null : control_r10.value.label)));
465
+ i0.ɵɵadvance();
466
+ i0.ɵɵproperty("ngIf", item_r27.label === (control_r10.value == null ? null : control_r10.value.label) && ctx_r5.activeBtnIconUrl);
467
+ i0.ɵɵadvance(2);
468
+ i0.ɵɵtextInterpolate(item_r27.label);
469
+ } }
470
+ function DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_ng_container_7_Template(rf, ctx) { if (rf & 1) {
471
+ i0.ɵɵelementContainer(0, 15);
472
+ } if (rf & 2) {
473
+ const control_r10 = i0.ɵɵnextContext(3).control;
474
+ i0.ɵɵnextContext();
475
+ const dynamicFieldErrors_r13 = i0.ɵɵreference(6);
476
+ i0.ɵɵproperty("ngTemplateOutlet", dynamicFieldErrors_r13)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c13, control_r10.errors));
477
+ } }
478
+ function DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_Template(rf, ctx) { if (rf & 1) {
479
+ i0.ɵɵelementStart(0, "div", 21)(1, "p", 22);
480
+ i0.ɵɵtext(2);
481
+ i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_span_3_Template, 2, 0, "span", 19);
482
+ i0.ɵɵelementEnd();
483
+ i0.ɵɵelement(4, "div", 23);
484
+ i0.ɵɵelementStart(5, "div", 39);
485
+ i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_div_6_Template, 4, 5, "div", 40);
486
+ i0.ɵɵelementEnd();
487
+ i0.ɵɵtemplate(7, DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_ng_container_7_Template, 1, 4, "ng-container", 25);
488
+ i0.ɵɵelementEnd();
489
+ } if (rf & 2) {
490
+ const ctx_r7 = i0.ɵɵnextContext(2);
491
+ const field_r9 = ctx_r7.$implicit;
492
+ const control_r10 = ctx_r7.control;
493
+ const formgroup_r11 = ctx_r7.formGroup;
494
+ const ctx_r5 = i0.ɵɵnextContext();
495
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(5, _c11, (formgroup_r11 == null ? null : formgroup_r11.controls == null ? null : formgroup_r11.controls.subFields == null ? null : formgroup_r11.controls.subFields.controls == null ? null : formgroup_r11.controls.subFields.controls.length) && ctx_r5.removeSepratorForSubFields ? "none" : ""));
496
+ i0.ɵɵadvance(2);
497
+ i0.ɵɵtextInterpolate1(" ", field_r9.title, "");
498
+ i0.ɵɵadvance();
499
+ i0.ɵɵproperty("ngIf", field_r9.validators && field_r9.validators.length > 0);
500
+ i0.ɵɵadvance(3);
501
+ i0.ɵɵproperty("ngForOf", field_r9.itemsList);
502
+ i0.ɵɵadvance();
503
+ i0.ɵɵproperty("ngIf", control_r10.touched && control_r10.errors);
504
+ } }
505
+ function DynamicFormComponent_ng_template_3_ng_container_5_Template(rf, ctx) { if (rf & 1) {
506
+ i0.ɵɵelementContainerStart(0);
507
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_5_ng_container_1_Template, 2, 6, "ng-container", 20)(2, DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_Template, 8, 7, "ng-template", null, 8, i0.ɵɵtemplateRefExtractor);
508
+ i0.ɵɵelementContainerEnd();
509
+ } if (rf & 2) {
510
+ const defaultSingleSelectRadio_r28 = i0.ɵɵreference(3);
511
+ const ctx_r5 = i0.ɵɵnextContext(2);
512
+ i0.ɵɵadvance();
513
+ i0.ɵɵproperty("ngIf", ctx_r5.customSingleSelectRadio)("ngIfElse", defaultSingleSelectRadio_r28);
514
+ } }
515
+ function DynamicFormComponent_ng_template_3_ng_container_6_ng_container_1_ng_template_1_Template(rf, ctx) { }
516
+ function DynamicFormComponent_ng_template_3_ng_container_6_ng_container_1_Template(rf, ctx) { if (rf & 1) {
517
+ i0.ɵɵelementContainerStart(0);
518
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_6_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 15);
519
+ i0.ɵɵelementContainerEnd();
520
+ } if (rf & 2) {
521
+ const ctx_r7 = i0.ɵɵnextContext(2);
522
+ const field_r9 = ctx_r7.$implicit;
523
+ const control_r10 = ctx_r7.control;
524
+ const formgroup_r11 = ctx_r7.formGroup;
525
+ const ctx_r5 = i0.ɵɵnextContext();
526
+ i0.ɵɵadvance();
527
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r5.customMultiSelectCheckbox)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r9, control_r10, formgroup_r11));
528
+ } }
529
+ function DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
530
+ i0.ɵɵelementStart(0, "span");
531
+ i0.ɵɵtext(1, " *");
532
+ i0.ɵɵelementEnd();
533
+ } }
534
+ function DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_div_6_img_1_Template(rf, ctx) { if (rf & 1) {
535
+ i0.ɵɵelement(0, "img", 43);
536
+ } if (rf & 2) {
537
+ const ctx_r5 = i0.ɵɵnextContext(5);
538
+ i0.ɵɵproperty("src", ctx_r5.activeBtnIconUrl, i0.ɵɵsanitizeUrl);
539
+ } }
540
+ function DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_div_6_Template(rf, ctx) { if (rf & 1) {
541
+ const _r29 = i0.ɵɵgetCurrentView();
542
+ i0.ɵɵelementStart(0, "div", 41);
543
+ i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_div_6_Template_div_click_0_listener() { const item_r30 = i0.ɵɵrestoreView(_r29).$implicit; const ctx_r7 = i0.ɵɵnextContext(3); const field_r9 = ctx_r7.$implicit; const control_r10 = ctx_r7.control; const formgroup_r11 = ctx_r7.formGroup; const ctx_r5 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r5.updateSelectedValueForMultiSelect(field_r9, control_r10, formgroup_r11, [item_r30])); });
544
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_div_6_img_1_Template, 1, 1, "img", 42);
545
+ i0.ɵɵelementStart(2, "p", 29);
546
+ i0.ɵɵtext(3);
547
+ i0.ɵɵelementEnd()();
548
+ } if (rf & 2) {
549
+ const item_r30 = ctx.$implicit;
550
+ const control_r10 = i0.ɵɵnextContext(3).control;
551
+ const ctx_r5 = i0.ɵɵnextContext();
552
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c15, ctx_r5.isCheckBoxSelected(item_r30.label, control_r10.value)));
553
+ i0.ɵɵadvance();
554
+ i0.ɵɵproperty("ngIf", ctx_r5.isCheckBoxSelected(item_r30.label, control_r10.value) && ctx_r5.activeBtnIconUrl);
555
+ i0.ɵɵadvance(2);
556
+ i0.ɵɵtextInterpolate(item_r30.label);
557
+ } }
558
+ function DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_ng_container_7_Template(rf, ctx) { if (rf & 1) {
559
+ i0.ɵɵelementContainer(0, 15);
560
+ } if (rf & 2) {
561
+ const control_r10 = i0.ɵɵnextContext(3).control;
562
+ i0.ɵɵnextContext();
563
+ const dynamicFieldErrors_r13 = i0.ɵɵreference(6);
564
+ i0.ɵɵproperty("ngTemplateOutlet", dynamicFieldErrors_r13)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c13, control_r10.errors));
565
+ } }
566
+ function DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_Template(rf, ctx) { if (rf & 1) {
567
+ i0.ɵɵelementStart(0, "div", 21)(1, "p", 22);
568
+ i0.ɵɵtext(2);
569
+ i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_span_3_Template, 2, 0, "span", 19);
570
+ i0.ɵɵelementEnd();
571
+ i0.ɵɵelement(4, "div", 23);
572
+ i0.ɵɵelementStart(5, "div", 39);
573
+ i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_div_6_Template, 4, 5, "div", 40);
574
+ i0.ɵɵelementEnd();
575
+ i0.ɵɵtemplate(7, DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_ng_container_7_Template, 1, 4, "ng-container", 25);
576
+ i0.ɵɵelementEnd();
577
+ } if (rf & 2) {
578
+ const ctx_r7 = i0.ɵɵnextContext(2);
579
+ const field_r9 = ctx_r7.$implicit;
580
+ const control_r10 = ctx_r7.control;
581
+ const formgroup_r11 = ctx_r7.formGroup;
582
+ const ctx_r5 = i0.ɵɵnextContext();
583
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(5, _c11, (formgroup_r11 == null ? null : formgroup_r11.controls == null ? null : formgroup_r11.controls.subFields == null ? null : formgroup_r11.controls.subFields.controls == null ? null : formgroup_r11.controls.subFields.controls.length) && ctx_r5.removeSepratorForSubFields ? "none" : ""));
584
+ i0.ɵɵadvance(2);
585
+ i0.ɵɵtextInterpolate1(" ", field_r9.title, "");
586
+ i0.ɵɵadvance();
587
+ i0.ɵɵproperty("ngIf", field_r9.validators && field_r9.validators.length > 0);
588
+ i0.ɵɵadvance(3);
589
+ i0.ɵɵproperty("ngForOf", field_r9.itemsList);
590
+ i0.ɵɵadvance();
591
+ i0.ɵɵproperty("ngIf", control_r10.touched && control_r10.errors);
592
+ } }
593
+ function DynamicFormComponent_ng_template_3_ng_container_6_Template(rf, ctx) { if (rf & 1) {
594
+ i0.ɵɵelementContainerStart(0);
595
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_6_ng_container_1_Template, 2, 6, "ng-container", 20)(2, DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_Template, 8, 7, "ng-template", null, 9, i0.ɵɵtemplateRefExtractor);
596
+ i0.ɵɵelementContainerEnd();
597
+ } if (rf & 2) {
598
+ const defaultMultiSelectCheckbox_r31 = i0.ɵɵreference(3);
599
+ const ctx_r5 = i0.ɵɵnextContext(2);
600
+ i0.ɵɵadvance();
601
+ i0.ɵɵproperty("ngIf", ctx_r5.customMultiSelectCheckbox)("ngIfElse", defaultMultiSelectCheckbox_r31);
602
+ } }
603
+ function DynamicFormComponent_ng_template_3_ng_container_7_ng_container_1_ng_template_1_Template(rf, ctx) { }
604
+ function DynamicFormComponent_ng_template_3_ng_container_7_ng_container_1_Template(rf, ctx) { if (rf & 1) {
605
+ i0.ɵɵelementContainerStart(0);
606
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_7_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 15);
607
+ i0.ɵɵelementContainerEnd();
608
+ } if (rf & 2) {
609
+ const ctx_r7 = i0.ɵɵnextContext(2);
610
+ const field_r9 = ctx_r7.$implicit;
611
+ const control_r10 = ctx_r7.control;
612
+ const formgroup_r11 = ctx_r7.formGroup;
613
+ const ctx_r5 = i0.ɵɵnextContext();
614
+ i0.ɵɵadvance();
615
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r5.customMultiSelectDropdown)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r9, control_r10, formgroup_r11));
616
+ } }
617
+ function DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
618
+ i0.ɵɵelementStart(0, "span");
619
+ i0.ɵɵtext(1, " *");
620
+ i0.ɵɵelementEnd();
621
+ } }
622
+ function DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_ng_container_5_Template(rf, ctx) { if (rf & 1) {
623
+ i0.ɵɵelementContainer(0, 15);
624
+ } if (rf & 2) {
625
+ const control_r10 = i0.ɵɵnextContext(3).control;
626
+ i0.ɵɵnextContext();
627
+ const dynamicFieldErrors_r13 = i0.ɵɵreference(6);
628
+ i0.ɵɵproperty("ngTemplateOutlet", dynamicFieldErrors_r13)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c13, control_r10.errors));
629
+ } }
630
+ function DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_Template(rf, ctx) { if (rf & 1) {
631
+ const _r32 = i0.ɵɵgetCurrentView();
632
+ i0.ɵɵelementStart(0, "div", 28)(1, "p", 29);
633
+ i0.ɵɵtext(2);
634
+ i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_span_3_Template, 2, 0, "span", 19);
635
+ i0.ɵɵelementEnd();
636
+ i0.ɵɵelementStart(4, "mis-multi-select-dropdown", 44);
637
+ i0.ɵɵlistener("onChange", function DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_Template_mis_multi_select_dropdown_onChange_4_listener($event) { i0.ɵɵrestoreView(_r32); const ctx_r7 = i0.ɵɵnextContext(2); const field_r9 = ctx_r7.$implicit; const control_r10 = ctx_r7.control; const formgroup_r11 = ctx_r7.formGroup; const ctx_r5 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r5.updateSelectedValueForMultiSelect(field_r9, control_r10, formgroup_r11, $event)); });
638
+ i0.ɵɵelementEnd();
639
+ i0.ɵɵtemplate(5, DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_ng_container_5_Template, 1, 4, "ng-container", 25);
640
+ i0.ɵɵelementEnd();
641
+ } if (rf & 2) {
642
+ const ctx_r7 = i0.ɵɵnextContext(2);
643
+ const field_r9 = ctx_r7.$implicit;
644
+ const control_r10 = ctx_r7.control;
645
+ const formgroup_r11 = ctx_r7.formGroup;
646
+ const ctx_r5 = i0.ɵɵnextContext();
647
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(11, _c11, (formgroup_r11 == null ? null : formgroup_r11.controls == null ? null : formgroup_r11.controls.subFields == null ? null : formgroup_r11.controls.subFields.controls == null ? null : formgroup_r11.controls.subFields.controls.length) && ctx_r5.removeSepratorForSubFields ? "none" : ""));
648
+ i0.ɵɵadvance(2);
649
+ i0.ɵɵtextInterpolate1(" ", field_r9.title, "");
650
+ i0.ɵɵadvance();
651
+ i0.ɵɵproperty("ngIf", field_r9.validators && field_r9.validators.length > 0);
652
+ i0.ɵɵadvance();
653
+ i0.ɵɵproperty("width", "140px")("showSelectedCount", true)("dropdownListWidth", "256px")("searchEnabled", false)("hideApplyButton", true)("data", field_r9.itemsList)("selectedItems", control_r10.value);
654
+ i0.ɵɵadvance();
655
+ i0.ɵɵproperty("ngIf", control_r10.touched && control_r10.errors);
656
+ } }
657
+ function DynamicFormComponent_ng_template_3_ng_container_7_Template(rf, ctx) { if (rf & 1) {
658
+ i0.ɵɵelementContainerStart(0);
659
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_7_ng_container_1_Template, 2, 6, "ng-container", 20)(2, DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_Template, 6, 13, "ng-template", null, 10, i0.ɵɵtemplateRefExtractor);
660
+ i0.ɵɵelementContainerEnd();
661
+ } if (rf & 2) {
662
+ const defaultMultiSelectDropdown_r33 = i0.ɵɵreference(3);
663
+ const ctx_r5 = i0.ɵɵnextContext(2);
664
+ i0.ɵɵadvance();
665
+ i0.ɵɵproperty("ngIf", ctx_r5.customMultiSelectDropdown)("ngIfElse", defaultMultiSelectDropdown_r33);
666
+ } }
667
+ function DynamicFormComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
668
+ i0.ɵɵtemplate(0, DynamicFormComponent_ng_template_3_ng_container_0_Template, 4, 2, "ng-container", 19)(1, DynamicFormComponent_ng_template_3_ng_container_1_Template, 4, 2, "ng-container", 19)(2, DynamicFormComponent_ng_template_3_ng_container_2_Template, 4, 2, "ng-container", 19)(3, DynamicFormComponent_ng_template_3_ng_container_3_Template, 4, 2, "ng-container", 19)(4, DynamicFormComponent_ng_template_3_ng_container_4_Template, 4, 2, "ng-container", 19)(5, DynamicFormComponent_ng_template_3_ng_container_5_Template, 4, 2, "ng-container", 19)(6, DynamicFormComponent_ng_template_3_ng_container_6_Template, 4, 2, "ng-container", 19)(7, DynamicFormComponent_ng_template_3_ng_container_7_Template, 4, 2, "ng-container", 19);
669
+ } if (rf & 2) {
670
+ const field_r9 = ctx.$implicit;
671
+ i0.ɵɵproperty("ngIf", field_r9.fieldType === "input" && (field_r9.fieldInputType === "text" || field_r9.fieldInputType === "number"));
672
+ i0.ɵɵadvance();
673
+ i0.ɵɵproperty("ngIf", field_r9.fieldType === "input" && field_r9.fieldInputType === "textarea");
674
+ i0.ɵɵadvance();
675
+ i0.ɵɵproperty("ngIf", field_r9.fieldType === "input" && field_r9.fieldInputType === "date");
676
+ i0.ɵɵadvance();
677
+ i0.ɵɵproperty("ngIf", field_r9.fieldType === "boolean" && field_r9.fieldInputType === "toggle");
678
+ i0.ɵɵadvance();
679
+ i0.ɵɵproperty("ngIf", field_r9.fieldType === "singleSelect" && field_r9.fieldInputType === "dropdown");
680
+ i0.ɵɵadvance();
681
+ i0.ɵɵproperty("ngIf", field_r9.fieldType === "singleSelect" && field_r9.fieldInputType === "radio");
682
+ i0.ɵɵadvance();
683
+ i0.ɵɵproperty("ngIf", field_r9.fieldType === "multiSelect" && field_r9.fieldInputType === "checkbox");
684
+ i0.ɵɵadvance();
685
+ i0.ɵɵproperty("ngIf", field_r9.fieldType === "multiSelect" && field_r9.fieldInputType === "dropdown");
686
+ } }
687
+ function DynamicFormComponent_ng_template_5_ng_container_1_Template(rf, ctx) { if (rf & 1) {
688
+ i0.ɵɵelementContainerStart(0);
689
+ i0.ɵɵelementStart(1, "p", 46);
690
+ i0.ɵɵtext(2);
691
+ i0.ɵɵelementEnd();
692
+ i0.ɵɵelement(3, "div", 47);
693
+ i0.ɵɵelementContainerEnd();
694
+ } if (rf & 2) {
695
+ const error_r34 = ctx.$implicit;
696
+ i0.ɵɵadvance(2);
697
+ i0.ɵɵtextInterpolate1(" ", " \u2022 \u00A0" + error_r34.value, " ");
698
+ i0.ɵɵadvance();
699
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction0(2, _c16));
700
+ } }
701
+ function DynamicFormComponent_ng_template_5_Template(rf, ctx) { if (rf & 1) {
702
+ i0.ɵɵelementStart(0, "div", 45);
703
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_5_ng_container_1_Template, 4, 3, "ng-container", 18);
704
+ i0.ɵɵpipe(2, "keyvalue");
705
+ i0.ɵɵelementEnd();
706
+ } if (rf & 2) {
707
+ const errors_r35 = ctx.$implicit;
708
+ i0.ɵɵadvance();
709
+ i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(2, 1, errors_r35));
710
+ } }
711
+ dayjs.extend(utc);
712
+ dayjs.extend(timezone);
713
+ dayjs.extend(customParseFormat);
714
+ export class DynamicFormComponent {
715
+ constructor() {
716
+ /**
717
+ * formFields: Dynamic fields recieved from the API metadata to build a dynamic form
718
+ * formValues: Holds the value of the dynamic form with "key" being dynamic field "title"
719
+ * and value being the user input.
720
+ */
721
+ this.formFields = [];
722
+ this.formValues = {};
723
+ // Need to deprecate these inputs and use constants.
724
+ this.activeBtnIconUrl = "";
725
+ this.calendarIconUrl = "";
726
+ this.removeIconUrl = "";
727
+ this.removeSepratorForSubFields = false;
728
+ /**
729
+ * formUpdated: Emits formValues Object whenever there is a change in the dynamic form.
730
+ */
731
+ this.formUpdated = new EventEmitter();
732
+ /**
733
+ * formValid: Emits boolean depending on validity of the form
734
+ */
735
+ this.formValid = new EventEmitter();
736
+ /**
737
+ * formInitialized: Emits dynamic form API on form initilization
738
+ */
739
+ this.formInitialized = new EventEmitter();
740
+ this.fieldRemoved = new EventEmitter();
741
+ }
742
+ ngOnInit() {
743
+ // Building the form
744
+ this.dynamicForm = this.generateDynamicForm(this.formFields, this.formValues);
745
+ // Subscribing to form changes and emiting values.
746
+ this.valueChangesSubscription$ = this.dynamicForm.valueChanges.subscribe(formValue => {
747
+ this.onFormValueChanges();
748
+ });
749
+ //api to expose functions
750
+ this.dynamicFormAPI = {
751
+ defaultFormValues: () => {
752
+ return this.generateDynamicFieldsValueObject(this.dynamicForm.value.dynamicFields);
753
+ }
754
+ };
755
+ this.formInitialized.emit(this.dynamicFormAPI);
756
+ this.formValid.emit(this.dynamicForm.valid);
757
+ }
758
+ ngOnDestroy() {
759
+ this.valueChangesSubscription$?.unsubscribe();
760
+ }
761
+ onFormValueChanges() {
762
+ let formValues = this.generateDynamicFieldsValueObject(this.dynamicForm.value.dynamicFields);
763
+ this.formValid.emit(this.dynamicForm.valid);
764
+ this.formUpdated.emit(formValues);
765
+ console.log(formValues);
766
+ }
767
+ generateDynamicFieldsValueObject(formValues) {
768
+ let dynamicFieldsValue = {};
769
+ formValues.forEach((fieldValue, index) => {
770
+ if (typeof fieldValue?.value === 'string')
771
+ fieldValue.value = fieldValue?.value?.trim();
772
+ let formattedValue = this.mapFormFieldToFormValue(this.formFields[index], fieldValue.value);
773
+ if (fieldValue.subFields?.length > 0) {
774
+ let formattedSubFieldsValues = {};
775
+ let subField = this.formFields[index].subFields;
776
+ if (this.formFields[index].fieldType === 'singleSelect' || this.formFields[index].fieldType === 'multiSelect') {
777
+ subField = subField.filter((subField) => subField.parentConfigValue === fieldValue.value.value);
778
+ }
779
+ fieldValue.subFields.forEach((subFieldValue, subIndex) => {
780
+ let subFormField = subField[subIndex];
781
+ if (typeof subFieldValue?.value === 'string')
782
+ subFieldValue.value = subFieldValue?.value?.trim();
783
+ formattedSubFieldsValues[subFormField.configName] = this.mapFormFieldToFormValue(subFormField, subFieldValue);
784
+ });
785
+ dynamicFieldsValue[this.formFields[index].configName] = {
786
+ value: formattedValue,
787
+ subFields: formattedSubFieldsValues
788
+ };
789
+ }
790
+ else {
791
+ dynamicFieldsValue[this.formFields[index].configName] = formattedValue;
792
+ }
793
+ });
794
+ return dynamicFieldsValue;
795
+ }
796
+ generateDynamicForm(formFields, formValues) {
797
+ let formArray = new UntypedFormArray([]);
798
+ for (let field of formFields) {
799
+ let fieldValue = formValues[field.configName]?.value ? formValues[field.configName].value : formValues[field.configName];
800
+ let fieldControl = this.mapFormValueToFormField(field, fieldValue);
801
+ let subFieldsControls = this.generateSubDynamicFields(formValues, field, fieldControl.value);
802
+ formArray.push(new UntypedFormGroup({
803
+ value: fieldControl,
804
+ subFields: subFieldsControls
805
+ }));
806
+ }
807
+ return new UntypedFormGroup({
808
+ dynamicFields: formArray
809
+ });
810
+ }
811
+ getDynamicFieldsControls() {
812
+ return this.dynamicForm.get("dynamicFields");
813
+ }
814
+ updateSubDynamicFields(field, formGroup, value) {
815
+ if (field.subFields?.length > 0) {
816
+ let subFieldsControls = this.generateSubDynamicFields(this.formValues, field, value);
817
+ formGroup.removeControl('subFields');
818
+ formGroup.addControl('subFields', subFieldsControls);
819
+ }
820
+ }
821
+ updateSelectedValueForSingleSelect(field, control, formGroup, value) {
822
+ if (control.value?.value !== value.value) {
823
+ control.setValue(value);
824
+ }
825
+ else
826
+ control.setValue('');
827
+ this.updateSubDynamicFields(field, formGroup, value);
828
+ control.markAsTouched();
829
+ }
830
+ updateSelectedValueForMultiSelect(field, control, formGroup, values) {
831
+ let selectedValues = control.value;
832
+ for (let value of values) {
833
+ let itemIndex = selectedValues.findIndex(item => item.label === value.label);
834
+ if (itemIndex > -1) {
835
+ selectedValues.splice(itemIndex, 1);
836
+ }
837
+ else {
838
+ selectedValues.push({ ...value });
839
+ }
840
+ }
841
+ control.setValue(selectedValues);
842
+ this.updateSubDynamicFields(field, formGroup, values);
843
+ control.markAsTouched();
844
+ }
845
+ isCheckBoxSelected(value, selectedValues) {
846
+ return selectedValues.findIndex(item => item.label === value) > -1;
847
+ }
848
+ findSelectedSubFieldConfig(subfields, value, subFieldIndex) {
849
+ try {
850
+ const selectedSubFieldConfig = subfields.filter(item => item.parentConfigValue === value)[subFieldIndex];
851
+ return selectedSubFieldConfig;
852
+ }
853
+ catch (e) {
854
+ throw new Error('Subfield index not found');
855
+ }
856
+ }
857
+ matchParentConfig(subfields, value) {
858
+ if (!subfields || subfields.length === 0) {
859
+ return false;
860
+ }
861
+ return subfields.some(item => item.parentConfigValue === value);
862
+ }
863
+ generateSubDynamicFields(formValues, parentField, parentValue) {
864
+ let controls = new UntypedFormArray([]);
865
+ let subFields = parentField.subFields;
866
+ let subFieldsValues = formValues[parentField.configName]?.subFields ? formValues[parentField.configName].subFields : {};
867
+ if (!subFields)
868
+ return controls;
869
+ if (parentField.fieldType === 'singleSelect') {
870
+ subFields = subFields.filter((subField) => subField.parentConfigValue === parentValue?.value);
871
+ }
872
+ else if (parentField.fieldType === 'multiSelect') {
873
+ let parentValues = new Set(parentValue.map((value) => value.value));
874
+ subFields = subFields.filter((subField) => parentValues.has(subField.parentConfigValue));
875
+ }
876
+ if (subFields?.length > 0) {
877
+ for (let subField of subFields) {
878
+ controls.push(this.mapFormValueToFormField(subField, subFieldsValues[subField.configName]));
879
+ }
880
+ }
881
+ return controls;
882
+ }
883
+ mapFormValueToFormField(formField, formValue) {
884
+ let validators = formField.validators ? [dynamicFieldValidator(formField.validators)] : [];
885
+ let control = new UntypedFormControl(null, validators);
886
+ if (formField.fieldType === "input") {
887
+ if (formField.fieldInputType === "text" || formField.fieldInputType === "textarea")
888
+ control.setValue(formValue ? formValue : "");
889
+ else if (formField.fieldInputType === "number")
890
+ control.setValue(formValue ? formValue : 0);
891
+ else if (formField.fieldInputType === "date") {
892
+ if (formValue && typeof formValue === "number") {
893
+ control.setValue(dayjs(formValue).tz(formField.fieldConfig.timezone).format(formField.fieldConfig.format));
894
+ }
895
+ else {
896
+ control.setValue(dayjs().tz(formField.fieldConfig.timezone).format(formField.fieldConfig.format));
897
+ }
898
+ }
899
+ }
900
+ else if (formField.fieldType === "singleSelect") {
901
+ const findSelectedValue = () => {
902
+ let index = formField.itemsList.findIndex(item => item.value === formValue);
903
+ return index >= 0 ? formField.itemsList[index] : "";
904
+ };
905
+ if (formField.fieldInputType === "dropdown") {
906
+ if (!formValue)
907
+ control.setValue(formField.itemsList[0]);
908
+ else
909
+ control.setValue(findSelectedValue());
910
+ }
911
+ else if (formField.fieldInputType === "radio") {
912
+ control.setValue(findSelectedValue());
913
+ }
914
+ }
915
+ else if (formField.fieldType === "multiSelect") {
916
+ if (formValue && Array.isArray(formValue)) {
917
+ let selectedValues = [];
918
+ for (let value of formValue) {
919
+ let index = formField.itemsList.findIndex(item => item.value === value);
920
+ if (index > -1)
921
+ selectedValues.push({ ...formField.itemsList[index] });
922
+ }
923
+ control.setValue(selectedValues);
924
+ }
925
+ else {
926
+ control.setValue([]);
927
+ }
928
+ }
929
+ else if (formField.fieldType === "boolean") {
930
+ control.setValue(!!formValue);
931
+ }
932
+ else
933
+ control.setValue(null);
934
+ return control;
935
+ }
936
+ mapFormFieldToFormValue(formField, formValue) {
937
+ if (formField.fieldType === "input") {
938
+ if (formField.fieldInputType === "text" || formField.fieldInputType === "textarea")
939
+ return formValue;
940
+ else if (formField.fieldInputType === "number")
941
+ return +formValue;
942
+ else if (formField.fieldInputType === "date") {
943
+ return dayjs.tz(formValue, formField.fieldConfig.format, formField.fieldConfig.timezone).valueOf();
944
+ }
945
+ }
946
+ else if (formField.fieldType === "singleSelect") {
947
+ return formValue?.value ?? '';
948
+ }
949
+ else if (formField.fieldType === "multiSelect") {
950
+ return formValue?.map(item => item.value);
951
+ }
952
+ else if (formField.fieldType === "boolean") {
953
+ return formValue;
954
+ }
955
+ else
956
+ return formValue;
957
+ }
958
+ static { this.ɵfac = function DynamicFormComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DynamicFormComponent)(); }; }
959
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DynamicFormComponent, selectors: [["mis-dynamic-form"]], contentQueries: function DynamicFormComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
960
+ i0.ɵɵcontentQuery(dirIndex, _c0, 5);
961
+ i0.ɵɵcontentQuery(dirIndex, _c1, 5);
962
+ i0.ɵɵcontentQuery(dirIndex, _c2, 5);
963
+ i0.ɵɵcontentQuery(dirIndex, _c3, 5);
964
+ i0.ɵɵcontentQuery(dirIndex, _c4, 5);
965
+ i0.ɵɵcontentQuery(dirIndex, _c5, 5);
966
+ i0.ɵɵcontentQuery(dirIndex, _c6, 5);
967
+ i0.ɵɵcontentQuery(dirIndex, _c7, 5);
968
+ } if (rf & 2) {
969
+ let _t;
970
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customInputTextNumber = _t.first);
971
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customInputTextarea = _t.first);
972
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customInputDate = _t.first);
973
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customBooleanToggle = _t.first);
974
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customSingleSelectDropdown = _t.first);
975
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customSingleSelectRadio = _t.first);
976
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customMultiSelectCheckbox = _t.first);
977
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customMultiSelectDropdown = _t.first);
978
+ } }, inputs: { formFields: "formFields", formValues: "formValues", activeBtnIconUrl: "activeBtnIconUrl", calendarIconUrl: "calendarIconUrl", removeIconUrl: "removeIconUrl", removeSepratorForSubFields: "removeSepratorForSubFields" }, outputs: { formUpdated: "formUpdated", formValid: "formValid", formInitialized: "formInitialized", fieldRemoved: "fieldRemoved" }, decls: 7, vars: 2, consts: [["dynamicField", ""], ["dynamicFieldErrors", ""], ["defaultInputTextNumber", ""], ["defaultInputTextarea", ""], ["defaultInputDate", ""], ["dp", ""], ["defaultBooleanToggle", ""], ["defaultSingleSelectDropdown", ""], ["defaultSingleSelectRadio", ""], ["defaultMultiSelectCheckbox", ""], ["defaultMultiSelectDropdown", ""], [3, "formGroup"], ["formArrayName", "dynamicFields"], [3, "formGroupName", 4, "ngFor", "ngForOf"], [3, "formGroupName"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], ["class", "sub-dynamic-form", 4, "ngIf"], [1, "sub-dynamic-form"], [4, "ngFor", "ngForOf"], [4, "ngIf"], [4, "ngIf", "ngIfElse"], [1, "dynamic-field", "multi-line-field-container", 3, "ngStyle"], [1, "h7", "field-title-sm"], [2, "flex-basis", "100%"], [1, "input-field", "ip-text", 3, "ngModelChange", "type", "formControl", "ngStyle", "placeholder", "min"], [3, "ngTemplateOutlet", "ngTemplateOutletContext", 4, "ngIf"], ["type", "text", 1, "input-field", "ip-textarea", 3, "ngModelChange", "ngStyle", "placeholder", "formControl"], ["class", "dynamic-field single-line-field-container", 3, "ngStyle", 4, "ngIf"], [1, "dynamic-field", "single-line-field-container", 3, "ngStyle"], [1, "h6"], [1, "date-picker-container"], ["readonly", "", "misTzDp", "", 1, "date-picker", 3, "dateChange", "dpConfig", "selectedDate", "offsetY", "value"], ["alt", "data-picker", "class", "date-picker-icon", 3, "src", "click", 4, "ngIf"], ["alt", "data-picker", 1, "date-picker-icon", 3, "click", "src"], [3, "valueChanged", "control"], [3, "ngClass"], [3, "onChange", "searchEnabled", "width", "data", "selectedItem"], ["class", "remove-icon", 3, "src", "click", 4, "ngIf"], [1, "remove-icon", 3, "click", "src"], ["id", "checkboxes-container"], ["class", "radio-checkbox-common", 3, "ngClass", "click", 4, "ngFor", "ngForOf"], [1, "radio-checkbox-common", 3, "click", "ngClass"], ["alt", "", 3, "src", 4, "ngIf"], ["alt", "", 3, "src"], [3, "onChange", "width", "showSelectedCount", "dropdownListWidth", "searchEnabled", "hideApplyButton", "data", "selectedItems"], ["id", "error-messages-container"], [1, "h8"], [3, "ngStyle"]], template: function DynamicFormComponent_Template(rf, ctx) { if (rf & 1) {
979
+ i0.ɵɵelementStart(0, "form", 11);
980
+ i0.ɵɵelementContainerStart(1, 12);
981
+ i0.ɵɵtemplate(2, DynamicFormComponent_ng_container_2_Template, 3, 8, "ng-container", 13);
982
+ i0.ɵɵelementContainerEnd();
983
+ i0.ɵɵelementEnd();
984
+ i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_Template, 8, 8, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor)(5, DynamicFormComponent_ng_template_5_Template, 3, 3, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
985
+ } if (rf & 2) {
986
+ i0.ɵɵproperty("formGroup", ctx.dynamicForm);
987
+ i0.ɵɵadvance(2);
988
+ i0.ɵɵproperty("ngForOf", ctx.getDynamicFieldsControls().controls);
989
+ } }, dependencies: [i1.NgClass, i1.NgForOf, i1.NgIf, i1.NgTemplateOutlet, i1.NgStyle, i2.ɵNgNoValidate, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgControlStatusGroup, i2.FormControlDirective, i2.FormGroupDirective, i2.FormGroupName, i2.FormArrayName, i3.DropdownComponent, i4.SwitchComponent, i5.MultiSelectDropdownComponent, i6.TzDatepickerDirective, i1.KeyValuePipe], styles: ["p[_ngcontent-%COMP%]{margin:0;cursor:default} .main-container{margin:0;max-width:100%}.sub-dynamic-form[_ngcontent-%COMP%]{padding-left:24px;border-bottom:1px solid var(--grey-seperators)}.dynamic-field[_ngcontent-%COMP%] .container{height:32px!important}.single-line-field-container[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;padding:28px 16px;border-bottom:1px solid var(--grey-seperators)}.multi-line-field-container[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;align-items:flex-start;padding:28px 16px;flex-wrap:wrap;border-bottom:1px solid var(--grey-seperators)}.field-title-sm[_ngcontent-%COMP%]{margin-bottom:8px;cursor:default}.input-field[_ngcontent-%COMP%]{width:100%;background-color:var(--grey-bg-1);border:1px solid var(--grey-seperators);border-radius:6px}.ip-text[_ngcontent-%COMP%]{height:44px;padding:8px 12px}.ip-textarea[_ngcontent-%COMP%]{max-height:94px;padding:8px}input[_ngcontent-%COMP%]:focus{outline:none}input[_ngcontent-%COMP%]::placeholder{color:var(--grey-seperators)}textarea[_ngcontent-%COMP%]:focus{outline:none}.date-picker-container[_ngcontent-%COMP%]{position:relative;width:140px}.date-picker-container[_ngcontent-%COMP%] .date-picker[_ngcontent-%COMP%]{cursor:pointer;height:32px;width:100%;font-size:14px;border-radius:6px;padding:0 12px;border:1px solid var(--grey-seperators);inset:10px auto auto 80px;background-color:var(--text-white)}.date-picker-container[_ngcontent-%COMP%] .date-picker[_ngcontent-%COMP%]:hover{background-color:var(--grey-hover)}.date-picker-container[_ngcontent-%COMP%] .date-picker-icon[_ngcontent-%COMP%]{position:absolute;top:50%;right:12px;transform:translateY(-50%);cursor:pointer}form[_ngcontent-%COMP%] .dynamic-field[_ngcontent-%COMP%]:last-child{border-bottom:none!important}#checkboxes-container[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}.radio-checkbox-common[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;cursor:pointer;margin-right:8px;margin-bottom:8px;background-color:var(--text-white);padding:12px 16px;border:1px solid var(--text-muted);border-radius:8px}.radio-checkbox-common[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:var(--text-muted);cursor:pointer}.radio-checkbox-common[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{margin-right:8px}.checkbox-active[_ngcontent-%COMP%]{background-color:var(--pmry-500)}.checkbox-active[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:var(--text-white)}#error-messages-container[_ngcontent-%COMP%]{margin-top:4px;width:100%;display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}#error-messages-container[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:var(--sem-error)}.removeable-container[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center}.removeable-container[_ngcontent-%COMP%] .remove-icon[_ngcontent-%COMP%]{cursor:pointer;margin-left:8px;max-width:24px}span[_ngcontent-%COMP%]{color:var(--sem-error)}"] }); }
990
+ }
991
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DynamicFormComponent, [{
992
+ type: Component,
993
+ args: [{ selector: "mis-dynamic-form", template: "<form [formGroup]=\"dynamicForm\">\n <ng-container formArrayName=\"dynamicFields\">\n <ng-container [formGroupName]=\"i\" *ngFor=\"let fieldControl of getDynamicFieldsControls().controls; let i = index\">\n <ng-container\n [ngTemplateOutlet]=\"dynamicField\"\n [ngTemplateOutletContext]=\"{\n $implicit: formFields[i],\n formGroup: fieldControl,\n control: fieldControl.controls.value\n }\"\n >\n </ng-container>\n <div class=\"sub-dynamic-form\" *ngIf=\"fieldControl?.value && (!!formFields[i]?.subFields && formFields[i]?.subFields?.length > 0 && matchParentConfig(formFields[i]?.subFields, fieldControl?.controls?.value?.value?.value))\">\n <ng-container *ngFor=\"let subFieldControl of fieldControl.controls.subFields.controls; let j = index\">\n <ng-container\n [ngTemplateOutlet]=\"dynamicField\"\n [ngTemplateOutletContext]=\"{\n $implicit: findSelectedSubFieldConfig(formFields[i]?.subFields, fieldControl.controls.value.value.value,j),\n control: subFieldControl\n }\">\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</form>\n\n\n<ng-template #dynamicField let-field let-control=\"control\" let-formgroup=\"formGroup\">\n\n <!-- fieldType: 'input' fieldInputType: 'text' | 'number' -->\n <ng-container *ngIf=\"field.fieldType === 'input' && (field.fieldInputType === 'text' || field.fieldInputType === 'number')\">\n <ng-container *ngIf=\"customInputTextNumber; else defaultInputTextNumber\">\n <ng-template\n [ngTemplateOutlet]=\"customInputTextNumber\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultInputTextNumber>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field?.title }} <span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <input class=\"input-field ip-text\" [type]=\"field.fieldInputType\" [formControl]=\"control\"\n (ngModelChange)=\"updateSubDynamicFields(field, formgroup, $event)\" \n [ngStyle]=\"{'border': control.touched && control.errors ? '1px solid #B00020': ''}\"\n [placeholder]=\"field.placeholderText ? field.placeholderText : 'Input Text'\" \n [min]=\"field.fieldInputType === 'number' ? 0 : '' \"/>\n <ng-container *ngIf=\"control.touched && control.errors\"\n [ngTemplateOutlet]=\"dynamicFieldErrors\" \n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\"\n >\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n \n <!-- fieldType: 'input' fieldInputType: 'textarea' -->\n <ng-container *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'textarea'\">\n <ng-container *ngIf=\"customInputTextarea; else defaultInputTextarea\">\n <ng-template\n [ngTemplateOutlet]=\"customInputTextarea\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultInputTextarea>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <textarea class=\"input-field ip-textarea\" type=\"text\"\n [ngStyle]=\"{'border': control.touched && control.errors ? '1px solid #B00020': ''}\"\n [placeholder]=\"field.placeholderText ? field.placeholderText : 'Input Text'\" [formControl]=\"control\" (ngModelChange)=\"updateSubDynamicFields(field, formgroup, $event)\"></textarea>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n \n <!-- fieldType: 'input' fieldInputType: 'date' -->\n <ng-container *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'date'\">\n <ng-container *ngIf=\"customInputDate; else defaultInputDate\">\n <ng-template\n [ngTemplateOutlet]=\"customInputDate\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultInputDate>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\"\n *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'date'\">\n <p class=\"h6\">\n {{ field.title }} <span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div class=\"date-picker-container\">\n <input class=\"date-picker\" readonly misTzDp [dpConfig]=\"field.fieldConfig\"\n (dateChange)=\"control.setValue($event)\" [selectedDate]=\"control.value\" [offsetY]=\"0\"\n [value]=\"control.value\" #dp />\n <img alt=\"data-picker\" *ngIf=\"calendarIconUrl\" class=\"date-picker-icon\" [src]=\"calendarIconUrl\"\n (click)=\"dp.click()\" />\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- fieldType: 'boolean' fieldInputType: 'toggle' -->\n <ng-container *ngIf=\"field.fieldType === 'boolean' && field.fieldInputType === 'toggle'\">\n <ng-container *ngIf=\"customBooleanToggle; else defaultBooleanToggle\">\n <ng-template\n [ngTemplateOutlet]=\"customBooleanToggle\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultBooleanToggle>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <mis-switch [control]=\"control\" (valueChanged)=\"updateSubDynamicFields(field, formgroup, $event)\"></mis-switch>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div> \n </ng-template>\n </ng-container>\n\n <!-- fieldType: 'singleSelect' fieldInputType: 'dropdown' -->\n <ng-container *ngIf=\"field.fieldType === 'singleSelect' && field.fieldInputType === 'dropdown'\">\n <ng-container *ngIf=\"customSingleSelectDropdown; else defaultSingleSelectDropdown\">\n <ng-template\n [ngTemplateOutlet]=\"customSingleSelectDropdown\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultSingleSelectDropdown>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div [ngClass]=\"{'removeable-container' : field?.isRemoveable}\">\n <mis-dropdown [searchEnabled]=\"false\" [width]=\"'140px'\" [data]=\"field.itemsList\" [selectedItem]=\"control.value\"\n (onChange)=\"updateSelectedValueForSingleSelect(field, control, formgroup, $event);\">\n </mis-dropdown>\n <img *ngIf=\"field.isRemoveable && removeIconUrl\" class=\"remove-icon\" [src]=\"removeIconUrl\" (click)=\"fieldRemoved.emit(field)\">\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container >\n \n\n <!-- fieldType: 'singleSelect' fieldInputType: 'radio' -->\n <ng-container *ngIf=\"field.fieldType === 'singleSelect' && field.fieldInputType === 'radio'\">\n <ng-container *ngIf=\"customSingleSelectRadio; else defaultSingleSelectRadio\">\n <ng-template\n [ngTemplateOutlet]=\"customSingleSelectRadio\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultSingleSelectRadio>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <div id=\"checkboxes-container\">\n <div class=\"radio-checkbox-common\" *ngFor=\"let item of field.itemsList\"\n [ngClass]=\"{ 'checkbox-active': item.label === control.value?.label }\"\n (click)=\"updateSelectedValueForSingleSelect(field, control, formgroup, item);\">\n <img *ngIf=\"(item.label === control.value?.label) && activeBtnIconUrl\" [src]=\"activeBtnIconUrl\" alt=\"\" />\n <p class=\"h6\">{{ item.label }}</p>\n </div>\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n \n\n <!-- fieldType: 'multiSelect' fieldInputType: 'checkbox' -->\n <ng-container *ngIf=\"field.fieldType === 'multiSelect' && field.fieldInputType === 'checkbox'\">\n <ng-container *ngIf=\"customMultiSelectCheckbox; else defaultMultiSelectCheckbox\">\n <ng-template\n [ngTemplateOutlet]=\"customMultiSelectCheckbox\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultMultiSelectCheckbox>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <div id=\"checkboxes-container\">\n <div class=\"radio-checkbox-common\" *ngFor=\"let item of field.itemsList\"\n [ngClass]=\"{ 'checkbox-active': isCheckBoxSelected(item.label, control.value) }\"\n (click)=\"updateSelectedValueForMultiSelect(field, control, formgroup, [item])\">\n <img *ngIf=\"isCheckBoxSelected(item.label, control.value) && activeBtnIconUrl\" [src]=\"activeBtnIconUrl\"\n alt=\"\" />\n <p class=\"h6\">{{ item.label }}</p>\n </div>\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n\n <!-- fieldType: 'multiSelect' fieldInputType: 'dropdown' -->\n <ng-container *ngIf=\"field.fieldType === 'multiSelect' && field.fieldInputType === 'dropdown'\">\n <ng-container *ngIf=\"customMultiSelectDropdown; else defaultMultiSelectDropdown\">\n <ng-template\n [ngTemplateOutlet]=\"customMultiSelectDropdown\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultMultiSelectDropdown>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <mis-multi-select-dropdown [width]=\"'140px'\" [showSelectedCount]=\"true\" [dropdownListWidth]=\"'256px'\"\n [searchEnabled]=\"false\" [hideApplyButton]=\"true\" [data]=\"field.itemsList\"\n [selectedItems]=\"control.value\" (onChange)=\"updateSelectedValueForMultiSelect(field, control, formgroup, $event);\"></mis-multi-select-dropdown>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n</ng-template>\n\n<ng-template #dynamicFieldErrors let-errors>\n <div id=\"error-messages-container\">\n <ng-container *ngFor=\"let error of errors | keyvalue\">\n <p class=\"h8\">\n {{\" \u2022 &nbsp;\" + error.value}}\n </p>\n <div [ngStyle]=\"{ 'flex-basis': '100%', 'height': '0' }\"></div>\n </ng-container>\n </div>\n</ng-template>", styles: ["p{margin:0;cursor:default}::ng-deep .main-container{margin:0;max-width:100%}.sub-dynamic-form{padding-left:24px;border-bottom:1px solid var(--grey-seperators)}.dynamic-field ::ng-deep .container{height:32px!important}.single-line-field-container{display:flex;justify-content:space-between;align-items:center;padding:28px 16px;border-bottom:1px solid var(--grey-seperators)}.multi-line-field-container{display:flex;justify-content:flex-start;align-items:flex-start;padding:28px 16px;flex-wrap:wrap;border-bottom:1px solid var(--grey-seperators)}.field-title-sm{margin-bottom:8px;cursor:default}.input-field{width:100%;background-color:var(--grey-bg-1);border:1px solid var(--grey-seperators);border-radius:6px}.ip-text{height:44px;padding:8px 12px}.ip-textarea{max-height:94px;padding:8px}input:focus{outline:none}input::placeholder{color:var(--grey-seperators)}textarea:focus{outline:none}.date-picker-container{position:relative;width:140px}.date-picker-container .date-picker{cursor:pointer;height:32px;width:100%;font-size:14px;border-radius:6px;padding:0 12px;border:1px solid var(--grey-seperators);inset:10px auto auto 80px;background-color:var(--text-white)}.date-picker-container .date-picker:hover{background-color:var(--grey-hover)}.date-picker-container .date-picker-icon{position:absolute;top:50%;right:12px;transform:translateY(-50%);cursor:pointer}form .dynamic-field:last-child{border-bottom:none!important}#checkboxes-container{display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}.radio-checkbox-common{display:flex;justify-content:center;align-items:center;cursor:pointer;margin-right:8px;margin-bottom:8px;background-color:var(--text-white);padding:12px 16px;border:1px solid var(--text-muted);border-radius:8px}.radio-checkbox-common p{color:var(--text-muted);cursor:pointer}.radio-checkbox-common img{margin-right:8px}.checkbox-active{background-color:var(--pmry-500)}.checkbox-active p{color:var(--text-white)}#error-messages-container{margin-top:4px;width:100%;display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}#error-messages-container p{color:var(--sem-error)}.removeable-container{display:flex;justify-content:center;align-items:center}.removeable-container .remove-icon{cursor:pointer;margin-left:8px;max-width:24px}span{color:var(--sem-error)}\n"] }]
994
+ }], () => [], { formFields: [{
995
+ type: Input
996
+ }], formValues: [{
997
+ type: Input
998
+ }], activeBtnIconUrl: [{
999
+ type: Input
1000
+ }], calendarIconUrl: [{
1001
+ type: Input
1002
+ }], removeIconUrl: [{
1003
+ type: Input
1004
+ }], removeSepratorForSubFields: [{
1005
+ type: Input
1006
+ }], formUpdated: [{
1007
+ type: Output
1008
+ }], formValid: [{
1009
+ type: Output
1010
+ }], formInitialized: [{
1011
+ type: Output
1012
+ }], fieldRemoved: [{
1013
+ type: Output
1014
+ }], customInputTextNumber: [{
1015
+ type: ContentChild,
1016
+ args: ["customInputTextNumber", { static: false }]
1017
+ }], customInputTextarea: [{
1018
+ type: ContentChild,
1019
+ args: ["customInputTextarea", { static: false }]
1020
+ }], customInputDate: [{
1021
+ type: ContentChild,
1022
+ args: ["customInputDate", { static: false }]
1023
+ }], customBooleanToggle: [{
1024
+ type: ContentChild,
1025
+ args: ["customBooleanToggle", { static: false }]
1026
+ }], customSingleSelectDropdown: [{
1027
+ type: ContentChild,
1028
+ args: ["customSingleSelectDropdown", { static: false }]
1029
+ }], customSingleSelectRadio: [{
1030
+ type: ContentChild,
1031
+ args: ["customSingleSelectRadio", { static: false }]
1032
+ }], customMultiSelectCheckbox: [{
1033
+ type: ContentChild,
1034
+ args: ["customMultiSelectCheckbox", { static: false }]
1035
+ }], customMultiSelectDropdown: [{
1036
+ type: ContentChild,
1037
+ args: ["customMultiSelectDropdown", { static: false }]
1038
+ }] }); })();
1039
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DynamicFormComponent, { className: "DynamicFormComponent" }); })();
1040
+ export const dynamicFieldValidator = (validators) => {
1041
+ return (control) => {
1042
+ let value = control.value;
1043
+ if (Array.isArray(value)) {
1044
+ return null;
1045
+ }
1046
+ else if (typeof value === 'object') {
1047
+ value = value?.value ? value.value : '';
1048
+ }
1049
+ let errors = null;
1050
+ validators.forEach((validator) => {
1051
+ let error = null;
1052
+ let message = validator.message;
1053
+ switch (validator.type) {
1054
+ case "Required":
1055
+ error = Validators.required(control);
1056
+ if (!error && typeof value === 'string' && value.trim() === '') {
1057
+ error = { Required: message };
1058
+ }
1059
+ if (error)
1060
+ error = { Required: message };
1061
+ break;
1062
+ case "MinLength":
1063
+ error = Validators.minLength(+validator.value)(control);
1064
+ message = message.replace('${0}', error?.minlength.requiredLength);
1065
+ if (error)
1066
+ error = { MinLength: message };
1067
+ break;
1068
+ case "MaxLength":
1069
+ error = Validators.maxLength(+validator.value)(control);
1070
+ message = message.replace('${0}', error?.actualLength);
1071
+ if (error)
1072
+ error = { MaxLength: message };
1073
+ break;
1074
+ case "Email":
1075
+ error = Validators.email(control);
1076
+ if (error)
1077
+ error = { Email: message };
1078
+ break;
1079
+ case "Custom":
1080
+ error = Validators.pattern(`${validator.value}`)(control);
1081
+ if (error)
1082
+ error = { Custom: message };
1083
+ break;
1084
+ default:
1085
+ break;
1086
+ }
1087
+ if (error)
1088
+ errors = { ...errors, ...error };
1089
+ });
1090
+ return errors;
1091
+ };
1092
+ };
1093
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9keW5hbWljLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQWdCLEtBQUssRUFBcUIsTUFBTSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBRW5JLE9BQU8sRUFBbUIsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQWlDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBKLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLFFBQVEsTUFBTSx1QkFBdUIsQ0FBQztBQUM3QyxPQUFPLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQztBQUNuQyxPQUFPLGlCQUFpQixNQUFNLGdDQUFnQyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ010RCw2QkFBc0c7SUFDcEcsNEJBTWU7Ozs7Ozs7Ozs7SUFMYixjQUFpQztJQUNqQyxBQURBLGtEQUFpQyw0T0FJL0I7OztJQVBSLCtCQUE4TjtJQUM1Tiw2R0FBc0c7SUFTeEcsaUJBQU07OztJQVRzQyxjQUE2QztJQUE3QyxxRUFBNkM7OztJQVgzRixpQ0FBa0g7SUFDOUcsNEJBUWE7SUFDZixxRkFBOE47Ozs7Ozs7SUFWbE4sb0NBQW1CO0lBRTdCLGNBQWlDO0lBQ2pDLEFBREEsa0RBQWlDLGlJQUsvQjtJQUcyQixjQUE2TDtJQUE3TCxzbkJBQTZMOzs7O0lBb0I5Tiw2QkFBeUU7SUFDdkUsa0lBR0M7Ozs7Ozs7O0lBRkMsY0FBMEM7SUFDMUMsQUFEQSwrREFBMEMsOEZB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QyxJQUFHLEtBQUs7d0JBQUUsS0FBSyxHQUFHLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBQyxDQUFBO29CQUNsQyxNQUFNO2dCQUNSLEtBQUssUUFBUTtvQkFDWCxLQUFLLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBO29CQUN6RCxJQUFHLEtBQUs7d0JBQUUsS0FBSyxHQUFHLEVBQUMsTUFBTSxFQUFFLE9BQU8sRUFBQyxDQUFBO29CQUNuQyxNQUFNO2dCQUNSO29CQUNFLE1BQU07WUFDVixDQUFDO1lBQ0QsSUFBSSxLQUFLO2dCQUFFLE1BQU0sR0FBRyxFQUFFLEdBQUcsTUFBTSxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUE7UUFDN0MsQ0FBQyxDQUFDLENBQUE7UUFDRixPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUMsQ0FBQTtBQUNILENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE5zRHluYW1pY0Zvcm0gfSBmcm9tIFwiLi9keW5hbWljLWZvcm0ubmFtZXNwYWNlXCI7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFVudHlwZWRGb3JtQXJyYXksIFVudHlwZWRGb3JtQ29udHJvbCwgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcblxuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcbmltcG9ydCB0aW1lem9uZSBmcm9tICdkYXlqcy9wbHVnaW4vdGltZXpvbmUnO1xuaW1wb3J0IHV0YyBmcm9tICdkYXlqcy9wbHVnaW4vdXRjJztcbmltcG9ydCBjdXN0b21QYXJzZUZvcm1hdCBmcm9tICdkYXlqcy9wbHVnaW4vY3VzdG9tUGFyc2VGb3JtYXQnXG5cbmRheWpzLmV4dGVuZCh1dGMpO1xuZGF5anMuZXh0ZW5kKHRpbWV6b25lKTtcbmRheWpzLmV4dGVuZChjdXN0b21QYXJzZUZvcm1hdCk7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWlzLWR5bmFtaWMtZm9ybVwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vZHluYW1pYy1mb3JtLmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIER5bmFtaWNGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogZm9ybUZpZWxkczogIER5bmFtaWMgZmllbGRzIHJlY2lldmVkIGZyb20gdGhlIEFQSSBtZXRhZGF0YSB0byBidWlsZCBhIGR5bmFtaWMgZm9ybVxuICAgKiBmb3JtVmFsdWVzOiAgSG9sZHMgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZvcm0gd2l0aCBcImtleVwiIGJlaW5nIGR5bmFtaWMgZmllbGQgXCJ0aXRsZVwiXG4gICAqICAgICAgICAgICAgICBhbmQgdmFsdWUgYmVpbmcgdGhlIHVzZXIgaW5wdXQuXG4gICAqL1xuICBASW5wdXQoKSBmb3JtRmllbGRzOiBBcnJheTxOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQ+ID0gW107XG4gIEBJbnB1dCgpIGZvcm1WYWx1ZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgLy8gTmVlZCB0byBkZXByZWNhdGUgdGhlc2UgaW5wdXRzIGFuZCB1c2UgY29uc3RhbnRzLlxuICBASW5wdXQoKSBhY3RpdmVCdG5JY29uVXJsID0gXCJcIjtcbiAgQElucHV0KCkgY2FsZW5kYXJJY29uVXJsID0gXCJcIjtcbiAgQElucHV0KCkgcmVtb3ZlSWNvblVybCA9IFwiXCI7XG4gIEBJbnB1dCgpIHJlbW92ZVNlcHJhdG9yRm9yU3ViRmllbGRzID0gZmFsc2U7XG4gIC8qKlxuICAgKiBkeW5hbWljRm9ybTogQ29uc3RydWN0ZWQgdXNpbmcgZm9ybUZpZWxkcyBhbmQgZm9ybVZhbHVlcyhpbiBjYXNlIG9mIGVkaXQpXG4gICAqL1xuICBkeW5hbWljRm9ybTogVW50eXBlZEZvcm1Hcm91cDtcblxuICAvKipcbiAgICogZm9ybVVwZGF0ZWQ6IEVtaXRzIGZvcm1WYWx1ZXMgT2JqZWN0IHdoZW5ldmVyIHRoZXJlIGlzIGEgY2hhbmdlIGluIHRoZSBkeW5hbWljIGZvcm0uXG4gICAqL1xuICBAT3V0cHV0KCkgZm9ybVVwZGF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgW2tleTogc3RyaW5nXTogYW55IH0+KCk7XG4gIC8qKlxuICAgKiBmb3JtVmFsaWQ6IEVtaXRzIGJvb2xlYW4gZGVwZW5kaW5nIG9uIHZhbGlkaXR5IG9mIHRoZSBmb3JtXG4gICAqL1xuICBAT3V0cHV0KCkgZm9ybVZhbGlkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAvKipcbiAgICogZm9ybUluaXRpYWxpemVkOiBFbWl0cyBkeW5hbWljIGZvcm0gQVBJIG9uIGZvcm0gaW5pdGlsaXphdGlvblxuICAgKi9cbiAgQE91dHB1dCgpIGZvcm1Jbml0aWFsaXplZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgZmllbGRSZW1vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQ+KCk7XG5cbiAgQENvbnRlbnRDaGlsZChcImN1c3RvbUlucHV0VGV4dE51bWJlclwiLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgY3VzdG9tSW5wdXRUZXh0TnVtYmVyOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcbiAgXG4gIEBDb250ZW50Q2hpbGQoXCJjdXN0b21JbnB1dFRleHRhcmVhXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBjdXN0b21JbnB1dFRleHRhcmVhOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcblxuICBAQ29udGVudENoaWxkKFwiY3VzdG9tSW5wdXREYXRlXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBjdXN0b21JbnB1dERhdGU6IFRlbXBsYXRlUmVmPEVsZW1lbnQ+O1xuXG4gIEBDb250ZW50Q2hpbGQoXCJjdXN0b21Cb29sZWFuVG9nZ2xlXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBjdXN0b21Cb29sZWFuVG9nZ2xlOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcblxuICBAQ29udGVudENoaWxkKFwiY3VzdG9tU2luZ2xlU2VsZWN0RHJvcGRvd25cIiwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGN1c3RvbVNpbmdsZVNlbGVjdERyb3Bkb3duOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcblxuICBAQ29udGVudENoaWxkKFwiY3VzdG9tU2luZ2xlU2VsZWN0UmFkaW9cIiwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGN1c3RvbVNpbmdsZVNlbGVjdFJhZGlvOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcblxuICBAQ29udGVudENoaWxkKFwiY3VzdG9tTXVsdGlTZWxlY3RDaGVja2JveFwiLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgY3VzdG9tTXVsdGlTZWxlY3RDaGVja2JveDogVGVtcGxhdGVSZWY8RWxlbWVudD47XG5cbiAgQENvbnRlbnRDaGlsZChcImN1c3RvbU11bHRpU2VsZWN0RHJvcGRvd25cIiwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGN1c3RvbU11bHRpU2VsZWN0RHJvcGRvd246IFRlbXBsYXRlUmVmPEVsZW1lbnQ+O1xuXG4gIGR5bmFtaWNGb3JtQVBJOiBOc0R5bmFtaWNGb3JtLklEeW5hbWljRm9ybUFQSTtcbiAgdmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uJDogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBCdWlsZGluZyB0aGUgZm9ybVxuICAgIHRoaXMuZHluYW1pY0Zvcm0gPSB0aGlzLmdlbmVyYXRlRHluYW1pY0Zvcm0odGhpcy5mb3JtRmllbGRzLCB0aGlzLmZvcm1WYWx1ZXMpO1xuXG4gICAgLy8gU3Vic2NyaWJpbmcgdG8gZm9ybSBjaGFuZ2VzIGFuZCBlbWl0aW5nIHZhbHVlcy5cbiAgICB0aGlzLnZhbHVlQ2hhbmdlc1N1YnNjcmlwdGlvbiQgPSB0aGlzLmR5bmFtaWNGb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoZm9ybVZhbHVlID0+IHtcbiAgICAgIHRoaXMub25Gb3JtVmFsdWVDaGFuZ2VzKCk7XG4gICAgfSk7XG5cbiAgICAvL2FwaSB0byBleHBvc2UgZnVuY3Rpb25zXG4gICAgdGhpcy5keW5hbWljRm9ybUFQSSA9IHtcbiAgICAgIGRlZmF1bHRGb3JtVmFsdWVzOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdlbmVyYXRlRHluYW1pY0ZpZWxkc1ZhbHVlT2JqZWN0KHRoaXMuZHluYW1pY0Zvcm0udmFsdWUuZHluYW1pY0ZpZWxkcyk7XG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLmZvcm1Jbml0aWFsaXplZC5lbWl0KHRoaXMuZHluYW1pY0Zvcm1BUEkpO1xuICAgIHRoaXMuZm9ybVZhbGlkLmVtaXQodGhpcy5keW5hbWljRm9ybS52YWxpZCk7XG4gIH1cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZUNoYW5nZXNTdWJzY3JpcHRpb24kPy51bnN1YnNjcmliZSgpO1xuICB9XG4gIG9uRm9ybVZhbHVlQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBsZXQgZm9ybVZhbHVlcyA9IHRoaXMuZ2VuZXJhdGVEeW5hbWljRmllbGRzVmFsdWVPYmplY3QodGhpcy5keW5hbWljRm9ybS52YWx1ZS5keW5hbWljRmllbGRzKTtcbiAgICB0aGlzLmZvcm1WYWxpZC5lbWl0KHRoaXMuZHluYW1pY0Zvcm0udmFsaWQpO1xuICAgIHRoaXMuZm9ybVVwZGF0ZWQuZW1pdChmb3JtVmFsdWVzKTtcbiAgICBjb25zb2xlLmxvZyhmb3JtVmFsdWVzKVxuICB9XG4gIGdlbmVyYXRlRHluYW1pY0ZpZWxkc1ZhbHVlT2JqZWN0KGZvcm1WYWx1ZXM6IEFycmF5PGFueT4pOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgICBsZXQgZHluYW1pY0ZpZWxkc1ZhbHVlID0ge307XG4gICAgZm9ybVZhbHVlcy5mb3JFYWNoKChmaWVsZFZhbHVlLCBpbmRleCkgPT4ge1xuICAgICAgaWYodHlwZW9mIGZpZWxkVmFsdWU/LnZhbHVlID09PSAnc3RyaW5nJykgZmllbGRWYWx1ZS52YWx1ZSA9IGZpZWxkVmFsdWU/LnZhbHVlPy50cmltKClcbiAgICAgIGxldCBmb3JtYXR0ZWRWYWx1ZSA9IHRoaXMubWFwRm9ybUZpZWxkVG9Gb3JtVmFsdWUodGhpcy5mb3JtRmllbGRzW2luZGV4XSwgZmllbGRWYWx1ZS52YWx1ZSk7XG4gICAgICBpZiAoZmllbGRWYWx1ZS5zdWJGaWVsZHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgbGV0IGZvcm1hdHRlZFN1YkZpZWxkc1ZhbHVlcyA9IHt9XG4gICAgICAgIGxldCBzdWJGaWVsZCA9IHRoaXMuZm9ybUZpZWxkc1tpbmRleF0uc3ViRmllbGRzXG4gICAgICAgIGlmKHRoaXMuZm9ybUZpZWxkc1tpbmRleF0uZmllbGRUeXBlID09PSAnc2luZ2xlU2VsZWN0JyB8fCB0aGlzLmZvcm1GaWVsZHNbaW5kZXhdLmZpZWxkVHlwZSA9PT0gJ211bHRpU2VsZWN0Jykge1xuICAgICAgICAgIHN1YkZpZWxkID0gc3ViRmllbGQuZmlsdGVyKChzdWJGaWVsZCkgPT4gc3ViRmllbGQucGFyZW50Q29uZmlnVmFsdWUgPT09IGZpZWxkVmFsdWUudmFsdWUudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGZpZWxkVmFsdWUuc3ViRmllbGRzLmZvckVhY2goKHN1YkZpZWxkVmFsdWUsIHN1YkluZGV4KSA9PiB7XG4gICAgICAgICAgbGV0IHN1YkZvcm1GaWVsZCA9IHN1YkZpZWxkW3N1YkluZGV4XVxuICAgICAgICAgIGlmKHR5cGVvZiBzdWJGaWVsZFZhbHVlPy52YWx1ZSA9PT0gJ3N0cmluZycpIHN1YkZpZWxkVmFsdWUudmFsdWUgPSBzdWJGaWVsZFZhbHVlPy52YWx1ZT8udHJpbSgpXG4gICAgICAgICAgZm9ybWF0dGVkU3ViRmllbGRzVmFsdWVzW3N1YkZvcm1GaWVsZC5jb25maWdOYW1lXSA9IHRoaXMubWFwRm9ybUZpZWxkVG9Gb3JtVmFsdWUoc3ViRm9ybUZpZWxkLCBzdWJGaWVsZFZhbHVlKVxuICAgICAgICB9KVxuICAgICAgICBkeW5hbWljRmllbGRzVmFsdWVbdGhpcy5mb3JtRmllbGRzW2luZGV4XS5jb25maWdOYW1lXSA9IHtcbiAgICAgICAgICB2YWx1ZTogZm9ybWF0dGVkVmFsdWUsXG4gICAgICAgICAgc3ViRmllbGRzOiBmb3JtYXR0ZWRTdWJGaWVsZHNWYWx1ZXNcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGR5bmFtaWNGaWVsZHNWYWx1ZVt0aGlzLmZvcm1GaWVsZHNbaW5kZXhdLmNvbmZpZ05hbWVdID0gZm9ybWF0dGVkVmFsdWU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGR5bmFtaWNGaWVsZHNWYWx1ZTtcbiAgfVxuICBnZW5lcmF0ZUR5bmFtaWNGb3JtKFxuICAgIGZvcm1GaWVsZHM6IEFycmF5PE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZD4sXG4gICAgZm9ybVZhbHVlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfVxuICApOiBVbnR5cGVkRm9ybUdyb3VwIHtcbiAgICBsZXQgZm9ybUFycmF5ID0gbmV3IFVudHlwZWRGb3JtQXJyYXkoW10pXG5cbiAgICBmb3IgKGxldCBmaWVsZCBvZiBmb3JtRmllbGRzKSB7XG4gICAgICBsZXQgZmllbGRWYWx1ZSA9IGZvcm1WYWx1ZXNbZmllbGQuY29uZmlnTmFtZV0/LnZhbHVlID8gZm9ybVZhbHVlc1tmaWVsZC5jb25maWdOYW1lXS52YWx1ZSA6IGZvcm1WYWx1ZXNbZmllbGQuY29uZmlnTmFtZV1cbiAgICAgIGxldCBmaWVsZENvbnRyb2wgPSB0aGlzLm1hcEZvcm1WYWx1ZVRvRm9ybUZpZWxkKGZpZWxkLCBmaWVsZFZhbHVlKTtcbiAgICAgIGxldCBzdWJGaWVsZHNDb250cm9scyA9IHRoaXMuZ2VuZXJhdGVTdWJEeW5hbWljRmllbGRzKGZvcm1WYWx1ZXMsIGZpZWxkLCBmaWVsZENvbnRyb2wudmFsdWUpO1xuICAgICAgZm9ybUFycmF5LnB1c2gobmV3IFVudHlwZWRGb3JtR3JvdXAoe1xuICAgICAgICB2YWx1ZTogZmllbGRDb250cm9sLFxuICAgICAgICBzdWJGaWVsZHM6IHN1YkZpZWxkc0NvbnRyb2xzXG4gICAgICB9KSlcbiAgICB9ICBcbiAgICByZXR1cm4gbmV3IFVudHlwZWRGb3JtR3JvdXAoe1xuICAgICAgZHluYW1pY0ZpZWxkczogZm9ybUFycmF5XG4gICAgfSlcbiAgfVxuICBcbiAgZ2V0RHluYW1pY0ZpZWxkc0NvbnRyb2xzKCk6IFVudHlwZWRGb3JtQXJyYXkge1xuICAgIHJldHVybiB0aGlzLmR5bmFtaWNGb3JtLmdldChcImR5bmFtaWNGaWVsZHNcIikgYXMgVW50eXBlZEZvcm1BcnJheTtcbiAgfVxuICB1cGRhdGVTdWJEeW5hbWljRmllbGRzKFxuICAgIGZpZWxkOiBOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQsXG4gICAgZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwLFxuICAgIHZhbHVlOiBhbnlcbiAgKTogdm9pZCB7XG4gICAgaWYgKGZpZWxkLnN1YkZpZWxkcz8ubGVuZ3RoID4gMCkge1xuICAgICAgbGV0IHN1YkZpZWxkc0NvbnRyb2xzID0gdGhpcy5nZW5lcmF0ZVN1YkR5bmFtaWNGaWVsZHModGhpcy5mb3JtVmFsdWVzLCBmaWVsZCwgdmFsdWUpO1xuICAgICAgZm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ3N1YkZpZWxkcycpXG4gICAgICBmb3JtR3JvdXAuYWRkQ29udHJvbCgnc3ViRmllbGRzJywgc3ViRmllbGRzQ29udHJvbHMpXG4gICAgfVxuICB9XG4gIHVwZGF0ZVNlbGVjdGVkVmFsdWVGb3JTaW5nbGVTZWxlY3QoXG4gICAgZmllbGQ6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZCxcbiAgICBjb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wsXG4gICAgZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwLFxuICAgIHZhbHVlOiBhbnlcbiAgKTogdm9pZCB7XG4gICAgaWYgKGNvbnRyb2wudmFsdWU/LnZhbHVlICE9PSB2YWx1ZS52YWx1ZSkge1xuICAgICAgY29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuICAgIGVsc2UgY29udHJvbC5zZXRWYWx1ZSgnJyk7XG4gICAgdGhpcy51cGRhdGVTdWJEeW5hbWljRmllbGRzKGZpZWxkLCBmb3JtR3JvdXAsIHZhbHVlKTtcbiAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgfVxuICB1cGRhdGVTZWxlY3RlZFZhbHVlRm9yTXVsdGlTZWxlY3QoXG4gICAgZmllbGQ6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZCxcbiAgICBjb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wsXG4gICAgZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwLFxuICAgIHZhbHVlczogQXJyYXk8YW55PlxuICApOiB2b2lkIHtcbiAgICBsZXQgc2VsZWN0ZWRWYWx1ZXM6IEFycmF5PHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IGFueSB9PiA9IGNvbnRyb2wudmFsdWU7XG4gICAgZm9yIChsZXQgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICBsZXQgaXRlbUluZGV4ID0gc2VsZWN0ZWRWYWx1ZXMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5sYWJlbCA9PT0gdmFsdWUubGFiZWwpO1xuICAgICAgaWYgKGl0ZW1JbmRleCA+IC0xKSB7XG4gICAgICAgIHNlbGVjdGVkVmFsdWVzLnNwbGljZShpdGVtSW5kZXgsIDEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZWN0ZWRWYWx1ZXMucHVzaCh7IC4uLnZhbHVlIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBjb250cm9sLnNldFZhbHVlKHNlbGVjdGVkVmFsdWVzKTtcbiAgICB0aGlzLnVwZGF0ZVN1YkR5bmFtaWNGaWVsZHMoZmllbGQsIGZvcm1Hcm91cCwgdmFsdWVzKTtcbiAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgfVxuICBpc0NoZWNrQm94U2VsZWN0ZWQodmFsdWU6IHN0cmluZywgc2VsZWN0ZWRWYWx1ZXM6IEFycmF5PHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9Pik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzZWxlY3RlZFZhbHVlcy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmxhYmVsID09PSB2YWx1ZSkgPiAtMTtcbiAgfVxuXG4gIGZpbmRTZWxlY3RlZFN1YkZpZWxkQ29uZmlnKHN1YmZpZWxkcywgdmFsdWUsIHN1YkZpZWxkSW5kZXgpIHtcbiAgICB0cnl7XG4gICAgICBjb25zdCBzZWxlY3RlZFN1YkZpZWxkQ29uZmlnID0gc3ViZmllbGRzLmZpbHRlcihpdGVtID0+IGl0ZW0ucGFyZW50Q29uZmlnVmFsdWUgPT09IHZhbHVlKVtzdWJGaWVsZEluZGV4XTtcbiAgICAgIHJldHVybiBzZWxlY3RlZFN1YkZpZWxkQ29uZmlnO1xuICAgIH1cbiAgICBjYXRjaChlKXtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU3ViZmllbGQgaW5kZXggbm90IGZvdW5kJyk7XG4gICAgfVxuICB9XG5cbiAgbWF0Y2hQYXJlbnRDb25maWcoc3ViZmllbGRzLCB2YWx1ZSkge1xuICAgIGlmICghc3ViZmllbGRzIHx8IHN1YmZpZWxkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHN1YmZpZWxkcy5zb21lKGl0ZW0gPT4gaXRlbS5wYXJlbnRDb25maWdWYWx1ZSA9PT0gdmFsdWUpO1xuICB9XG5cbiAgZ2VuZXJhdGVTdWJEeW5hbWljRmllbGRzKFxuICAgIGZvcm1WYWx1ZXM6IGFueSxcbiAgICBwYXJlbnRGaWVsZDogTnNEeW5hbWljRm9ybS5JRHluYW1pY0ZpZWxkLFxuICAgIHBhcmVudFZhbHVlOiBBcnJheTx7IGxhYmVsOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfT4gfCB7bGFiZWw6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9IHwgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhblxuICApOiBVbnR5cGVkRm9ybUFycmF5IHtcbiAgICBsZXQgY29udHJvbHMgPSBuZXcgVW50eXBlZEZvcm1BcnJheShbXSlcbiAgICBsZXQgc3ViRmllbGRzID0gcGFyZW50RmllbGQuc3ViRmllbGRzXG4gICAgbGV0IHN1YkZpZWxkc1ZhbHVlcyA9IGZvcm1WYWx1ZXNbcGFyZW50RmllbGQuY29uZmlnTmFtZV0/LnN1YkZpZWxkcyA/IGZvcm1WYWx1ZXNbcGFyZW50RmllbGQuY29uZmlnTmFtZV0uc3ViRmllbGRzIDoge31cbiAgICBpZighc3ViRmllbGRzKSByZXR1cm4gY29udHJvbHM7XG4gICAgaWYgKHBhcmVudEZpZWxkLmZpZWxkVHlwZSA9PT0gJ3NpbmdsZVNlbGVjdCcpIHtcbiAgICAgIHN1YkZpZWxkcyA9IHN1YkZpZWxkcy5maWx0ZXIoKHN1YkZpZWxkKSA9PiBzdWJGaWVsZC5wYXJlbnRDb25maWdWYWx1ZSA9PT0gKDx7bGFiZWw6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9PnBhcmVudFZhbHVlKT8udmFsdWUpO1xuICAgIH1cbiAgICBlbHNlIGlmIChwYXJlbnRGaWVsZC5maWVsZFR5cGUgPT09ICdtdWx0aVNlbGVjdCcpIHtcbiAgICAgIGxldCBwYXJlbnRWYWx1ZXMgPSBuZXcgU2V0KCg8QXJyYXk8eyBsYWJlbDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIH0+PnBhcmVudFZhbHVlKS5tYXAoKHZhbHVlKSA9PiB2YWx1ZS52YWx1ZSkpO1xuICAgICAgc3ViRmllbGRzID0gc3ViRmllbGRzLmZpbHRlcigoc3ViRmllbGQpID0+IHBhcmVudFZhbHVlcy5oYXMoc3ViRmllbGQucGFyZW50Q29uZmlnVmFsdWUpKTtcbiAgICB9XG5cbiAgICBpZiAoc3ViRmllbGRzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGZvciAobGV0IHN1YkZpZWxkIG9mIHN1YkZpZWxkcykge1xuICAgICAgICAgIGNvbnRyb2xzLnB1c2godGhpcy5tYXBGb3JtVmFsdWVUb0Zvcm1GaWVsZChzdWJGaWVsZCwgc3ViRmllbGRzVmFsdWVzW3N1YkZpZWxkLmNvbmZpZ05hbWVdKSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIHJldHVybiBjb250cm9scztcbiAgfVxuICBtYXBGb3JtVmFsdWVUb0Zvcm1GaWVsZChmb3JtRmllbGQ6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZCwgZm9ybVZhbHVlOiBhbnkpOiBhbnkge1xuICAgIGxldCB2YWxpZGF0b3JzID0gZm9ybUZpZWxkLnZhbGlkYXRvcnMgPyBbZHluYW1pY0ZpZWxkVmFsaWRhdG9yKGZvcm1GaWVsZC52YWxpZGF0b3JzKV06IFtdXG4gICAgbGV0IGNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKG51bGwsIHZhbGlkYXRvcnMpO1xuXG4gICAgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwiaW5wdXRcIikge1xuICAgICAgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJ0ZXh0XCIgfHwgZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcInRleHRhcmVhXCIpIGNvbnRyb2wuc2V0VmFsdWUoZm9ybVZhbHVlID8gZm9ybVZhbHVlIDogXCJcIik7XG4gICAgICBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRJbnB1dFR5cGUgPT09IFwibnVtYmVyXCIpIGNvbnRyb2wuc2V0VmFsdWUoZm9ybVZhbHVlID8gZm9ybVZhbHVlIDogMCk7XG4gICAgICBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRJbnB1dFR5cGUgPT09IFwiZGF0ZVwiKSB7XG4gICAgICAgIGlmIChmb3JtVmFsdWUgJiYgdHlwZW9mIGZvcm1WYWx1ZSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUoZGF5anMoZm9ybVZhbHVlKS50eihmb3JtRmllbGQuZmllbGRDb25maWcudGltZXpvbmUpLmZvcm1hdChmb3JtRmllbGQuZmllbGRDb25maWcuZm9ybWF0KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29udHJvbC5zZXRWYWx1ZShkYXlqcygpLnR6KGZvcm1GaWVsZC5maWVsZENvbmZpZy50aW1lem9uZSkuZm9ybWF0KGZvcm1GaWVsZC5maWVsZENvbmZpZy5mb3JtYXQpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkVHlwZSA9PT0gXCJzaW5nbGVTZWxlY3RcIikge1xuICAgICAgY29uc3QgZmluZFNlbGVjdGVkVmFsdWUgPSAoKSA9PiB7XG4gICAgICAgIGxldCBpbmRleCA9IGZvcm1GaWVsZC5pdGVtc0xpc3QuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS52YWx1ZSA9PT0gZm9ybVZhbHVlKVxuICAgICAgICByZXR1cm4gaW5kZXggPj0gMCA/IGZvcm1GaWVsZC5pdGVtc0xpc3RbaW5kZXhdOiBcIlwiO1xuICAgICAgfVxuICAgICAgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJkcm9wZG93blwiKSB7XG4gICAgICAgIGlmICghZm9ybVZhbHVlKSBjb250cm9sLnNldFZhbHVlKGZvcm1GaWVsZC5pdGVtc0xpc3RbMF0pO1xuICAgICAgICBlbHNlIGNvbnRyb2wuc2V0VmFsdWUoZmluZFNlbGVjdGVkVmFsdWUoKSlcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJyYWRpb1wiKSB7XG4gICAgICAgIGNvbnRyb2wuc2V0VmFsdWUoZmluZFNlbGVjdGVkVmFsdWUoKSlcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwibXVsdGlTZWxlY3RcIikge1xuICAgICAgaWYgKGZvcm1WYWx1ZSAmJiBBcnJheS5pc0FycmF5KGZvcm1WYWx1ZSkpIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkVmFsdWVzID0gW107XG4gICAgICAgIGZvciAobGV0IHZhbHVlIG9mIGZvcm1WYWx1ZSkge1xuICAgICAgICAgIGxldCBpbmRleCA9IGZvcm1GaWVsZC5pdGVtc0xpc3QuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS52YWx1ZSA9PT0gdmFsdWUpO1xuICAgICAgICAgIGlmIChpbmRleCA+IC0xKSBzZWxlY3RlZFZhbHVlcy5wdXNoKHsgLi4uZm9ybUZpZWxkLml0ZW1zTGlzdFtpbmRleF0gfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29udHJvbC5zZXRWYWx1ZShzZWxlY3RlZFZhbHVlcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250cm9sLnNldFZhbHVlKFtdKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICBjb250cm9sLnNldFZhbHVlKCEhZm9ybVZhbHVlKTtcbiAgICB9IGVsc2UgY29udHJvbC5zZXRWYWx1ZShudWxsKTtcbiAgICByZXR1cm4gY29udHJvbDtcbiAgfVxuICBtYXBGb3JtRmllbGRUb0Zvcm1WYWx1ZShmb3JtRmllbGQ6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZCwgZm9ybVZhbHVlOiBhbnkpOiBhbnkge1xuICAgIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcImlucHV0XCIpIHtcbiAgICAgIGlmIChmb3JtRmllbGQuZmllbGRJbnB1dFR5cGUgPT09IFwidGV4dFwiIHx8IGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJ0ZXh0YXJlYVwiKSByZXR1cm4gZm9ybVZhbHVlO1xuICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcIm51bWJlclwiKSByZXR1cm4gK2Zvcm1WYWx1ZTtcbiAgICAgIGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJkYXRlXCIpIHtcbiAgICAgICAgcmV0dXJuIGRheWpzLnR6KGZvcm1WYWx1ZSwgZm9ybUZpZWxkLmZpZWxkQ29uZmlnLmZvcm1hdCwgZm9ybUZpZWxkLmZpZWxkQ29uZmlnLnRpbWV6b25lKS52YWx1ZU9mKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcInNpbmdsZVNlbGVjdFwiKSB7XG4gICAgICByZXR1cm4gZm9ybVZhbHVlPy52YWx1ZSA/PyAnJztcbiAgICB9IGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwibXVsdGlTZWxlY3RcIikge1xuICAgICAgcmV0dXJuIGZvcm1WYWx1ZT8ubWFwKGl0ZW0gPT4gaXRlbS52YWx1ZSk7XG4gICAgfSBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcImJvb2xlYW5cIikge1xuICAgICAgcmV0dXJuIGZvcm1WYWx1ZTtcbiAgICB9IGVsc2UgcmV0dXJuIGZvcm1WYWx1ZTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZHluYW1pY0ZpZWxkVmFsaWRhdG9yID0gKHZhbGlkYXRvcnM6IEFycmF5PE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZFZhbGlkYXRvcj4pOiBWYWxpZGF0b3JGbiA9PiB7XG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgIGxldCB2YWx1ZSA9IGNvbnRyb2wudmFsdWVcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlPy52YWx1ZSA/IHZhbHVlLnZhbHVlIDogJydcbiAgICB9XG4gICAgbGV0IGVycm9ycyA9IG51bGxcblxuICAgIHZhbGlkYXRvcnMuZm9yRWFjaCgodmFsaWRhdG9yKSA9PiB7XG4gICAgICBsZXQgZXJyb3IgPSBudWxsXG4gICAgICBsZXQgbWVzc2FnZSA9IHZhbGlkYXRvci5tZXNzYWdlXG4gICAgICBzd2l0Y2ggKHZhbGlkYXRvci50eXBlKSB7XG4gICAgICAgIGNhc2UgXCJSZXF1aXJlZFwiOlxuICAgICAgICAgIGVycm9yID0gVmFsaWRhdG9ycy5yZXF1aXJlZChjb250cm9sKTtcbiAgICAgICAgICBpZiAoIWVycm9yICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUudHJpbSgpID09PSAnJykge1xuICAgICAgICAgICAgZXJyb3IgPSB7IFJlcXVpcmVkOiBtZXNzYWdlIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmKGVycm9yKSBlcnJvciA9IHtSZXF1aXJlZDogbWVzc2FnZX1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIk1pbkxlbmd0aFwiOlxuICAgICAgICAgIGVycm9yID0gVmFsaWRhdG9ycy5taW5MZW5ndGgoK3ZhbGlkYXRvci52YWx1ZSkoY29udHJvbClcbiAgICAgICAgICBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKCckezB9JywgZXJyb3I/Lm1pbmxlbmd0aC5yZXF1aXJlZExlbmd0aClcbiAgICAgICAgICBpZihlcnJvcikgZXJyb3IgPSB7IE1pbkxlbmd0aDogbWVzc2FnZSB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJNYXhMZW5ndGhcIjpcbiAgICAgICAgICBlcnJvciA9IFZhbGlkYXRvcnMubWF4TGVuZ3RoKCt2YWxpZGF0b3IudmFsdWUpKGNvbnRyb2wpXG4gICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSgnJHswfScsIGVycm9yPy5hY3R1YWxMZW5ndGgpXG4gICAgICAgICAgaWYoZXJyb3IpIGVycm9yID0geyBNYXhMZW5ndGg6IG1lc3NhZ2UgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiRW1haWxcIjpcbiAgICAgICAgICBlcnJvciA9IFZhbGlkYXRvcnMuZW1haWwoY29udHJvbClcbiAgICAgICAgICBpZihlcnJvcikgZXJyb3IgPSB7RW1haWw6IG1lc3NhZ2V9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJDdXN0b21cIjpcbiAgICAgICAgICBlcnJvciA9IFZhbGlkYXRvcnMucGF0dGVybihgJHt2YWxpZGF0b3IudmFsdWV9YCkoY29udHJvbClcbiAgICAgICAgICBpZihlcnJvcikgZXJyb3IgPSB7Q3VzdG9tOiBtZXNzYWdlfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYgKGVycm9yKSBlcnJvcnMgPSB7IC4uLmVycm9ycywgLi4uZXJyb3IgfVxuICAgIH0pXG4gICAgcmV0dXJuIGVycm9yc1xuICB9XG59IiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJkeW5hbWljRm9ybVwiPlxuICA8bmctY29udGFpbmVyIGZvcm1BcnJheU5hbWU9XCJkeW5hbWljRmllbGRzXCI+XG4gICAgPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwTmFtZV09XCJpXCIgKm5nRm9yPVwibGV0IGZpZWxkQ29udHJvbCBvZiBnZXREeW5hbWljRmllbGRzQ29udHJvbHMoKS5jb250cm9sczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZFwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgJGltcGxpY2l0OiBmb3JtRmllbGRzW2ldLFxuICAgICAgICAgIGZvcm1Hcm91cDogZmllbGRDb250cm9sLFxuICAgICAgICAgIGNvbnRyb2w6IGZpZWxkQ29udHJvbC5jb250cm9scy52YWx1ZVxuICAgICAgICB9XCJcbiAgICAgID5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPGRpdiBjbGFzcz1cInN1Yi1keW5hbWljLWZvcm1cIiAqbmdJZj1cImZpZWxkQ29udHJvbD8udmFsdWUgJiYgKCEhZm9ybUZpZWxkc1tpXT8uc3ViRmllbGRzICYmIGZvcm1GaWVsZHNbaV0/LnN1YkZpZWxkcz8ubGVuZ3RoID4gMCAmJiBtYXRjaFBhcmVudENvbmZpZyhmb3JtRmllbGRzW2ldPy5zdWJGaWVsZHMsIGZpZWxkQ29udHJvbD8uY29udHJvbHM/LnZhbHVlPy52YWx1ZT8udmFsdWUpKVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWJGaWVsZENvbnRyb2wgb2YgZmllbGRDb250cm9sLmNvbnRyb2xzLnN1YkZpZWxkcy5jb250cm9sczsgbGV0IGogPSBpbmRleFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZFwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAkaW1wbGljaXQ6IGZpbmRTZWxlY3RlZFN1YkZpZWxkQ29uZmlnKGZvcm1GaWVsZHNbaV0/LnN1YkZpZWxkcywgZmllbGRDb250cm9sLmNvbnRyb2xzLnZhbHVlLnZhbHVlLnZhbHVlLGopLFxuICAgICAgICAgICAgICBjb250cm9sOiBzdWJGaWVsZENvbnRyb2xcbiAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Zvcm0+XG5cblxuPG5nLXRlbXBsYXRlICNkeW5hbWljRmllbGQgbGV0LWZpZWxkIGxldC1jb250cm9sPVwiY29udHJvbFwiIGxldC1mb3JtZ3JvdXA9XCJmb3JtR3JvdXBcIj5cblxuICA8IS0tIGZpZWxkVHlwZTogJ2lucHV0JyBmaWVsZElucHV0VHlwZTogJ3RleHQnIHwgJ251bWJlcicgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdpbnB1dCcgJiYgKGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAndGV4dCcgfHwgZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICdudW1iZXInKVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21JbnB1dFRleHROdW1iZXI7IGVsc2UgZGVmYXVsdElucHV0VGV4dE51bWJlclwiPlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbUlucHV0VGV4dE51bWJlclwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCwgY29udHJvbDogY29udHJvbCwgZm9ybWdyb3VwOiBmb3JtZ3JvdXAgfVwiXG4gICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRJbnB1dFRleHROdW1iZXI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1maWVsZCBtdWx0aS1saW5lLWZpZWxkLWNvbnRhaW5lclwiXG4gICAgICAgIFtuZ1N0eWxlXT1cInsnYm9yZGVyLWJvdHRvbSc6IChmb3JtZ3JvdXA/LmNvbnRyb2xzPy5zdWJGaWVsZHM/LmNvbnRyb2xzPy5sZW5ndGggJiYgcmVtb3ZlU2VwcmF0b3JGb3JTdWJGaWVsZHMpID8gICdub25lJzonJ31cIj5cbiAgICAgICAgPHAgY2xhc3M9XCJoNyBmaWVsZC10aXRsZS1zbVwiPlxuICAgICAgICAgIHt7IGZpZWxkPy50aXRsZSB9fSA8c3BhbiAqbmdJZj1cImZpZWxkLnZhbGlkYXRvcnMgJiYgZmllbGQudmFsaWRhdG9ycy5sZW5ndGggPiAwXCI+ICo8L3NwYW4+XG4gICAgICAgIDwvcD5cbiAgICAgICAgPGRpdiBzdHlsZT1cImZsZXgtYmFzaXM6IDEwMCVcIj48L2Rpdj5cbiAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXQtZmllbGQgaXAtdGV4dFwiIFt0eXBlXT1cImZpZWxkLmZpZWxkSW5wdXRUeXBlXCIgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZVN1YkR5bmFtaWNGaWVsZHMoZmllbGQsIGZvcm1ncm91cCwgJGV2ZW50KVwiIFxuICAgICAgICAgIFtuZ1N0eWxlXT1cInsnYm9yZGVyJzogY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzID8gJzFweCBzb2xpZCAjQjAwMDIwJzogJyd9XCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXJUZXh0ID8gZmllbGQucGxhY2Vob2xkZXJUZXh0IDogJ0lucHV0IFRleHQnXCIgXG4gICAgICAgICAgW21pbl09XCJmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ251bWJlcicgPyAwIDogJycgXCIvPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIiBcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbnRyb2wuZXJyb3JzIH1cIlxuICAgICAgICA+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG4gIFxuICA8IS0tIGZpZWxkVHlwZTogJ2lucHV0JyBmaWVsZElucHV0VHlwZTogJ3RleHRhcmVhJyAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ2lucHV0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ3RleHRhcmVhJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21JbnB1dFRleHRhcmVhOyBlbHNlIGRlZmF1bHRJbnB1dFRleHRhcmVhXCI+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbUlucHV0VGV4dGFyZWFcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkLCBjb250cm9sOiBjb250cm9sLCBmb3JtZ3JvdXA6IGZvcm1ncm91cCB9XCJcbiAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRJbnB1dFRleHRhcmVhPlxuICAgICAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgbXVsdGktbGluZS1maWVsZC1jb250YWluZXJcIlxuICAgICAgW25nU3R5bGVdPVwieydib3JkZXItYm90dG9tJzogKGZvcm1ncm91cD8uY29udHJvbHM/LnN1YkZpZWxkcz8uY29udHJvbHM/Lmxlbmd0aCAmJiByZW1vdmVTZXByYXRvckZvclN1YkZpZWxkcykgPyAgJ25vbmUnOicnfVwiPlxuICAgICAgICA8cCBjbGFzcz1cImg3IGZpZWxkLXRpdGxlLXNtXCI+XG4gICAgICAgICAge3sgZmllbGQudGl0bGUgfX08c3BhbiAqbmdJZj1cImZpZWxkLnZhbGlkYXRvcnMgJiYgZmllbGQudmFsaWRhdG9ycy5sZW5ndGggPiAwXCI+ICo8L3NwYW4+XG4gICAgICAgIDwvcD5cbiAgICAgICAgPGRpdiBzdHlsZT1cImZsZXgtYmFzaXM6IDEwMCVcIj48L2Rpdj5cbiAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwiaW5wdXQtZmllbGQgaXAtdGV4dGFyZWFcIiB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgW25nU3R5bGVdPVwieydib3JkZXInOiBjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnMgPyAnMXB4IHNvbGlkICNCMDAwMjAnOiAnJ31cIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlclRleHQgPyBmaWVsZC5wbGFjZWhvbGRlclRleHQgOiAnSW5wdXQgVGV4dCdcIiBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZVN1YkR5bmFtaWNGaWVsZHMoZmllbGQsIGZvcm1ncm91cCwgJGV2ZW50KVwiPjwvdGV4dGFyZWE+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9yc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZEVycm9yc1wiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbnRyb2wuZXJyb3JzIH1cIj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuICBcbiAgPCEtLSBmaWVsZFR5cGU6ICdpbnB1dCcgZmllbGRJbnB1dFR5cGU6ICdkYXRlJyAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ2lucHV0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ2RhdGUnXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbUlucHV0RGF0ZTsgZWxzZSBkZWZhdWx0SW5wdXREYXRlXCI+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tSW5wdXREYXRlXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkLCBjb250cm9sOiBjb250cm9sLCBmb3JtZ3JvdXA6IGZvcm1ncm91cCB9XCJcbiAgICAgID48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdElucHV0RGF0ZT5cbiAgICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLWZpZWxkIHNpbmdsZS1saW5lLWZpZWxkLWNvbnRhaW5lclwiXG4gICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlci1ib3R0b20nOiAoZm9ybWdyb3VwPy5jb250cm9scz8uc3ViRmllbGRzPy5jb250cm9scz8ubGVuZ3RoICYmIHJlbW92ZVNlcHJhdG9yRm9yU3ViRmllbGRzKSA/ICAnbm9uZSc6Jyd9XCJcbiAgICAgICAgKm5nSWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdpbnB1dCcgJiYgZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICdkYXRlJ1wiPlxuICAgICAgICA8cCBjbGFzcz1cImg2XCI+XG4gICAgICAgICAge3sgZmllbGQudGl0bGUgfX0gPHNwYW4gKm5nSWY9XCJmaWVsZC52YWxpZGF0b3JzICYmIGZpZWxkLnZhbGlkYXRvcnMubGVuZ3RoID4gMFwiPiAqPC9zcGFuPlxuICAgICAgICA8L3A+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLXBpY2tlci1jb250YWluZXJcIj5cbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJkYXRlLXBpY2tlclwiIHJlYWRvbmx5IG1pc1R6RHAgW2RwQ29uZmlnXT1cImZpZWxkLmZpZWxkQ29uZmlnXCJcbiAgICAgICAgICAgIChkYXRlQ2hhbmdlKT1cImNvbnRyb2wuc2V0VmFsdWUoJGV2ZW50KVwiIFtzZWxlY3RlZERhdGVdPVwiY29udHJvbC52YWx1ZVwiIFtvZmZzZXRZXT1cIjBcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cImNvbnRyb2wudmFsdWVcIiAjZHAgLz5cbiAgICAgICAgICA8aW1nIGFsdD1cImRhdGEtcGlja2VyXCIgKm5nSWY9XCJjYWxlbmRhckljb25VcmxcIiBjbGFzcz1cImRhdGUtcGlja2VyLWljb25cIiBbc3JjXT1cImNhbGVuZGFySWNvblVybFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZHAuY2xpY2soKVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkRXJyb3JzXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbnRyb2wuZXJyb3JzIH1cIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIGZpZWxkVHlwZTogJ2Jvb2xlYW4nIGZpZWxkSW5wdXRUeXBlOiAndG9nZ2xlJyAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ2Jvb2xlYW4nICYmIGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAndG9nZ2xlJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21Cb29sZWFuVG9nZ2xlOyBlbHNlIGRlZmF1bHRCb29sZWFuVG9nZ2xlXCI+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tQm9vbGVhblRvZ2dsZVwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCwgY29udHJvbDogY29udHJvbCwgZm9ybWdyb3VwOiBmb3JtZ3JvdXAgfVwiXG4gICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRCb29sZWFuVG9nZ2xlPlxuICAgICAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgc2luZ2xlLWxpbmUtZmllbGQtY29udGFpbmVyXCJcbiAgICAgIFtuZ1N0eWxlXT1cInsnYm9yZGVyLWJvdHRvbSc6IChmb3JtZ3JvdXA/LmNvbnRyb2xzPy5zdWJGaWVsZHM/LmNvbnRyb2xzPy5sZW5ndGggJiYgcmVtb3ZlU2VwcmF0b3JGb3JTdWJGaWVsZHMpID8gICdub25lJzonJ31cIj5cbiAgICAgICAgPHAgY2xhc3M9XCJoNlwiPlxuICAgICAgICAgIHt7IGZpZWxkLnRpdGxlIH19PHNwYW4gKm5nSWY9XCJmaWVsZC52YWxpZGF0b3JzICYmIGZpZWxkLnZhbGlkYXRvcnMubGVuZ3RoID4gMFwiPiAqPC9zcGFuPlxuICAgICAgICA8L3A+XG4gICAgICAgIDxtaXMtc3dpdGNoIFtjb250cm9sXT1cImNvbnRyb2xcIiAodmFsdWVDaGFuZ2VkKT1cInVwZGF0ZVN1YkR5bmFtaWNGaWVsZHMoZmllbGQsIGZvcm1ncm91cCwgJGV2ZW50KVwiPjwvbWlzLXN3aXRjaD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9yc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZEVycm9yc1wiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb250cm9sLmVycm9ycyB9XCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+ICAgIFxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gZmllbGRUeXBlOiAnc2luZ2xlU2VsZWN0JyBmaWVsZElucHV0VHlwZTogJ2Ryb3Bkb3duJyAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ3NpbmdsZVNlbGVjdCcgJiYgZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICdkcm9wZG93bidcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tU2luZ2xlU2VsZWN0RHJvcGRvd247IGVsc2UgZGVmYXVsdFNpbmdsZVNlbGVjdERyb3Bkb3duXCI+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tU2luZ2xlU2VsZWN0RHJvcGRvd25cIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQsIGNvbnRyb2w6IGNvbnRyb2wsIGZvcm1ncm91cDogZm9ybWdyb3VwIH1cIlxuICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0U2luZ2xlU2VsZWN0RHJvcGRvd24+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1maWVsZCBzaW5nbGUtbGluZS1maWVsZC1jb250YWluZXJcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlci1ib3R0b20nOiAoZm9ybWdyb3VwPy5jb250cm9scz8uc3ViRmllbGRzPy5jb250cm9scz8ubGVuZ3RoICYmIHJlbW92ZVNlcHJhdG9yRm9yU3ViRmllbGRzKSA/ICAnbm9uZSc6Jyd9XCI+XG4gICAgICAgIDxwIGNsYXNzPVwiaDZcIj5cbiAgICAgICAgICB7eyBmaWVsZC50aXRsZSB9fTxzcGFuICpuZ0lmPVwiZmllbGQudmFsaWRhdG9ycyAmJiBmaWVsZC52YWxpZGF0b3JzLmxlbmd0aCA+IDBcIj4gKjwvc3Bhbj5cbiAgICAgICAgPC9wPlxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsncmVtb3ZlYWJsZS1jb250YWluZXInIDogZmllbGQ/LmlzUmVtb3ZlYWJsZX1cIj5cbiAgICAgICAgICA8bWlzLWRyb3Bkb3duIFtzZWFyY2hFbmFibGVkXT1cImZhbHNlXCIgW3dpZHRoXT1cIicxNDBweCdcIiBbZGF0YV09XCJmaWVsZC5pdGVtc0xpc3RcIiBbc2VsZWN0ZWRJdGVtXT1cImNvbnRyb2wudmFsdWVcIlxuICAgICAgICAgIChvbkNoYW5nZSk9XCJ1cGRhdGVTZWxlY3RlZFZhbHVlRm9yU2luZ2xlU2VsZWN0KGZpZWxkLCBjb250cm9sLCBmb3JtZ3JvdXAsICRldmVudCk7XCI+XG4gICAgICAgICAgPC9taXMtZHJvcGRvd24+XG4gICAgICAgICAgPGltZyAqbmdJZj1cImZpZWxkLmlzUmVtb3ZlYWJsZSAmJiByZW1vdmVJY29uVXJsXCIgY2xhc3M9XCJyZW1vdmUtaWNvblwiIFtzcmNdPVwicmVtb3ZlSWNvblVybFwiIChjbGljayk9XCJmaWVsZFJlbW92ZWQuZW1pdChmaWVsZClcIj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyID5cbiAgXG5cbiAgPCEtLSBmaWVsZFR5cGU6ICdzaW5nbGVTZWxlY3QnIGZpZWxkSW5wdXRUeXBlOiAncmFkaW8nIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnc2luZ2xlU2VsZWN0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ3JhZGlvJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21TaW5nbGVTZWxlY3RSYWRpbzsgZWxzZSBkZWZhdWx0U2luZ2xlU2VsZWN0UmFkaW9cIj5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21TaW5nbGVTZWxlY3RSYWRpb1wiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCwgY29udHJvbDogY29udHJvbCwgZm9ybWdyb3VwOiBmb3JtZ3JvdXAgfVwiXG4gICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRTaW5nbGVTZWxlY3RSYWRpbz5cbiAgICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLWZpZWxkIG11bHRpLWxpbmUtZmllbGQtY29udGFpbmVyXCJcbiAgICAgIFtuZ1N0eWxlXT1cInsnYm9yZGVyLWJvdHRvbSc6IChmb3JtZ3JvdXA/LmNvbnRyb2xzPy5zdWJGaWVsZHM/LmNvbnRyb2xzPy5sZW5ndGggJiYgcmVtb3ZlU2VwcmF0b3JGb3JTdWJGaWVsZHMpID8gICdub25lJzonJ31cIj5cbiAgICAgICAgPHAgY2xhc3M9XCJoNyBmaWVsZC10aXRsZS1zbVwiPlxuICAgICAgICAgIHt7IGZpZWxkLnRpdGxlIH19PHNwYW4gKm5nSWY9XCJmaWVsZC52YWxpZGF0b3JzICYmIGZpZWxkLnZhbGlkYXRvcnMubGVuZ3RoID4gMFwiPiAqPC9zcGFuPlxuICAgICAgICA8L3A+XG4gICAgICAgIDxkaXYgc3R5bGU9XCJmbGV4LWJhc2lzOiAxMDAlXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJjaGVja2JveGVzLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYWRpby1jaGVja2JveC1jb21tb25cIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWVsZC5pdGVtc0xpc3RcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnY2hlY2tib3gtYWN0aXZlJzogaXRlbS5sYWJlbCA9PT0gY29udHJvbC52YWx1ZT8ubGFiZWwgfVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidXBkYXRlU2VsZWN0ZWRWYWx1ZUZvclNpbmdsZVNlbGVjdChmaWVsZCwgY29udHJvbCwgZm9ybWdyb3VwLCBpdGVtKTtcIj5cbiAgICAgICAgICAgIDxpbWcgKm5nSWY9XCIoaXRlbS5sYWJlbCA9PT0gY29udHJvbC52YWx1ZT8ubGFiZWwpICYmIGFjdGl2ZUJ0bkljb25VcmxcIiBbc3JjXT1cImFjdGl2ZUJ0bkljb25VcmxcIiBhbHQ9XCJcIiAvPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJoNlwiPnt7IGl0ZW0ubGFiZWwgfX08L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkRXJyb3JzXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbnRyb2wuZXJyb3JzIH1cIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgXG5cbiAgPCEtLSBmaWVsZFR5cGU6ICdtdWx0aVNlbGVjdCcgZmllbGRJbnB1dFR5cGU6ICdjaGVja2JveCcgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdtdWx0aVNlbGVjdCcgJiYgZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICdjaGVja2JveCdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tTXVsdGlTZWxlY3RDaGVja2JveDsgZWxzZSBkZWZhdWx0TXVsdGlTZWxlY3RDaGVja2JveFwiPlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbU11bHRpU2VsZWN0Q2hlY2tib3hcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQsIGNvbnRyb2w6IGNvbnRyb2wsIGZvcm1ncm91cDogZm9ybWdyb3VwIH1cIlxuICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0TXVsdGlTZWxlY3RDaGVja2JveD5cbiAgICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLWZpZWxkIG11bHRpLWxpbmUtZmllbGQtY29udGFpbmVyXCJcbiAgICAgIFtuZ1N0eWxlXT1cInsnYm9yZGVyLWJvdHRvbSc6IChmb3JtZ3JvdXA/LmNvbnRyb2xzPy5zdWJGaWVsZHM/LmNvbnRyb2xzPy5sZW5ndGggJiYgcmVtb3ZlU2VwcmF0b3JGb3JTdWJGaWVsZHMpID8gICdub25lJzonJ31cIj5cbiAgICAgICAgPHAgY2xhc3M9XCJoNyBmaWVsZC10aXRsZS1zbVwiPlxuICAgICAgICAgIHt7IGZpZWxkLnRpdGxlIH19PHNwYW4gKm5nSWY9XCJmaWVsZC52YWxpZGF0b3JzICYmIGZpZWxkLnZhbGlkYXRvcnMubGVuZ3RoID4gMFwiPiAqPC9zcGFuPlxuICAgICAgICA8L3A+XG4gICAgICAgIDxkaXYgc3R5bGU9XCJmbGV4LWJhc2lzOiAxMDAlXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJjaGVja2JveGVzLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYWRpby1jaGVja2JveC1jb21tb25cIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWVsZC5pdGVtc0xpc3RcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnY2hlY2tib3gtYWN0aXZlJzogaXNDaGVja0JveFNlbGVjdGVkKGl0ZW0ubGFiZWwsIGNvbnRyb2wudmFsdWUpIH1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZVNlbGVjdGVkVmFsdWVGb3JNdWx0aVNlbGVjdChmaWVsZCwgY29udHJvbCwgZm9ybWdyb3VwLCBbaXRlbV0pXCI+XG4gICAgICAgICAgICA8aW1nICpuZ0lmPVwiaXNDaGVja0JveFNlbGVjdGVkKGl0ZW0ubGFiZWwsIGNvbnRyb2wudmFsdWUpICYmIGFjdGl2ZUJ0bkljb25VcmxcIiBbc3JjXT1cImFjdGl2ZUJ0bkljb25VcmxcIlxuICAgICAgICAgICAgICBhbHQ9XCJcIiAvPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJoNlwiPnt7IGl0ZW0ubGFiZWwgfX08L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkRXJyb3JzXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbnRyb2wuZXJyb3JzIH1cIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cblxuXG4gIDwhLS0gZmllbGRUeXBlOiAnbXVsdGlTZWxlY3QnIGZpZWxkSW5wdXRUeXBlOiAnZHJvcGRvd24nIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnbXVsdGlTZWxlY3QnICYmIGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAnZHJvcGRvd24nXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbU11bHRpU2VsZWN0RHJvcGRvd247IGVsc2UgZGVmYXVsdE11bHRpU2VsZWN0RHJvcGRvd25cIj5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21NdWx0aVNlbGVjdERyb3Bkb3duXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkLCBjb250cm9sOiBjb250cm9sLCBmb3JtZ3JvdXA6IGZvcm1ncm91cCB9XCJcbiAgICAgID48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdE11bHRpU2VsZWN0RHJvcGRvd24+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1maWVsZCBzaW5nbGUtbGluZS1maWVsZC1jb250YWluZXJcIlxuICAgICAgW25nU3R5bGVdPVwieydib3JkZXItYm90dG9tJzogKGZvcm1ncm91cD8uY29udHJvbHM/LnN1YkZpZWxkcz8uY29udHJvbHM/Lmxlbmd0aCAmJiByZW1vdmVTZXByYXRvckZvclN1YkZpZWxkcykgPyAgJ25vbmUnOicnfVwiPlxuICAgICAgICA8cCBjbGFzcz1cImg2XCI+XG4gICAgICAgICAge3sgZmllbGQudGl0bGUgfX08c3BhbiAqbmdJZj1cImZpZWxkLnZhbGlkYXRvcnMgJiYgZmllbGQudmFsaWRhdG9ycy5sZW5ndGggPiAwXCI+ICo8L3NwYW4+XG4gICAgICAgIDwvcD5cbiAgICAgICAgPG1pcy1tdWx0aS1zZWxlY3QtZHJvcGRvd24gW3dpZHRoXT1cIicxNDBweCdcIiBbc2hvd1NlbGVjdGVkQ291bnRdPVwidHJ1ZVwiIFtkcm9wZG93bkxpc3RXaWR0aF09XCInMjU2cHgnXCJcbiAgICAgICAgICBbc2VhcmNoRW5hYmxlZF09XCJmYWxzZVwiIFtoaWRlQXBwbHlCdXR0b25dPVwidHJ1ZVwiIFtkYXRhXT1cImZpZWxkLml0ZW1zTGlzdFwiXG4gICAgICAgICAgW3NlbGVjdGVkSXRlbXNdPVwiY29udHJvbC52YWx1ZVwiIChvbkNoYW5nZSk9XCJ1cGRhdGVTZWxlY3RlZFZhbHVlRm9yTXVsdGlTZWxlY3QoZmllbGQsIGNvbnRyb2wsIGZvcm1ncm91cCwgJGV2ZW50KTtcIj48L21pcy1tdWx0aS1zZWxlY3QtZHJvcGRvd24+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuXG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2R5bmFtaWNGaWVsZEVycm9ycyBsZXQtZXJyb3JzPlxuICA8ZGl2IGlkPVwiZXJyb3ItbWVzc2FnZXMtY29udGFpbmVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZXJyb3Igb2YgZXJyb3JzIHwga2V5dmFsdWVcIj5cbiAgICAgIDxwIGNsYXNzPVwiaDhcIj5cbiAgICAgICAge3tcIiDigKIgJm5ic3A7XCIgKyBlcnJvci52YWx1ZX19XG4gICAgICA8L3A+XG4gICAgICA8ZGl2IFtuZ1N0eWxlXT1cInsgJ2ZsZXgtYmFzaXMnOiAnMTAwJScsICdoZWlnaHQnOiAnMCcgfVwiPjwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+Il19