mis-crystal-design-system 18.0.5 → 18.0.6

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 (526) 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/dynamic-form/dynamic-form.component.d.ts +1 -1
  18. package/esm2022/action-list/action-list.component.mjs +363 -0
  19. package/{esm2020 → esm2022}/action-list/action-list.module.mjs +5 -5
  20. package/{esm2020 → esm2022}/analytics/analytics.module.mjs +5 -5
  21. package/esm2022/analytics/analytics.service.mjs +64 -0
  22. package/esm2022/async-search-dropdown/async-dropdown.component.mjs +536 -0
  23. package/{esm2020 → esm2022}/async-search-dropdown/async-dropdown.module.mjs +5 -5
  24. package/esm2022/button/button.component.mjs +88 -0
  25. package/esm2022/button/button.directive.mjs +61 -0
  26. package/{esm2020 → esm2022}/button/button.module.mjs +5 -5
  27. package/esm2022/checkbox/checkbox.component.mjs +124 -0
  28. package/{esm2020 → esm2022}/checkbox/checkbox.module.mjs +5 -5
  29. package/esm2022/chip/chip.component.mjs +82 -0
  30. package/{esm2020 → esm2022}/chip/chip.module.mjs +5 -5
  31. package/{esm2020 → esm2022}/datepicker_v2/datepicker.module.mjs +5 -5
  32. package/esm2022/datepicker_v2/tz-datepicker.directive.mjs +183 -0
  33. package/esm2022/datepicker_v2/tz-dp-container/tz-dp-container.component.mjs +442 -0
  34. package/{esm2020/daterangepicker_v2 → esm2022/datepicker_v2}/utils/index.mjs +1 -1
  35. package/{esm2020 → esm2022}/daterangepicker_v2/daterangepicker.module.mjs +5 -5
  36. package/esm2022/daterangepicker_v2/tz-daterangepicker.directive.mjs +165 -0
  37. package/esm2022/daterangepicker_v2/tz-drp-container/tz-drp-container.component.mjs +503 -0
  38. package/esm2022/daterangepicker_v2/utils/index.mjs +45 -0
  39. package/esm2022/drawer/drawer-body/drawer-body.component.mjs +59 -0
  40. package/{esm2020 → esm2022}/drawer/drawer-ref.mjs +4 -4
  41. package/{esm2020 → esm2022}/drawer/drawer.module.mjs +5 -5
  42. package/{esm2020 → esm2022}/drawer/drawer.service.mjs +5 -5
  43. package/esm2022/dropdown/calculate-container-height.directive.mjs +41 -0
  44. package/esm2022/dropdown/dropdown.component.mjs +464 -0
  45. package/{esm2020 → esm2022}/dropdown/dropdown.module.mjs +5 -5
  46. package/esm2022/dynamic-form/dynamic-form.component.mjs +1093 -0
  47. package/{esm2020 → esm2022}/dynamic-form/dynamic-form.module.mjs +13 -13
  48. package/esm2022/fab/fab.component.mjs +145 -0
  49. package/{esm2020 → esm2022}/fab/fab.module.mjs +5 -5
  50. package/esm2022/filter/filter-panel/filter-panel.component.mjs +396 -0
  51. package/{esm2020 → esm2022}/filter/filters.module.mjs +17 -17
  52. package/esm2022/filter/has-value.pipe.mjs +31 -0
  53. package/{esm2020 → esm2022}/input/directives/input/input.directive.mjs +6 -6
  54. package/{fesm2020/mis-crystal-design-system-input.mjs → esm2022/input/mis-input.component.mjs} +49 -109
  55. package/{esm2020 → esm2022}/input/mis-input.module.mjs +5 -5
  56. package/esm2022/input-stepper/input-stepper/input-stepper.component.mjs +89 -0
  57. package/{esm2020 → esm2022}/input-stepper/input-stepper.module.mjs +5 -5
  58. package/esm2022/loader/loader.component.mjs +25 -0
  59. package/{esm2020 → esm2022}/loader/loader.module.mjs +5 -5
  60. package/esm2022/menu/menu-close.directive.mjs +25 -0
  61. package/{esm2020 → esm2022}/menu/menu.directive.mjs +7 -7
  62. package/{esm2020 → esm2022}/menu/menu.module.mjs +5 -5
  63. package/esm2022/mobile-filter/mobile-filter.component.mjs +180 -0
  64. package/{esm2020 → esm2022}/mobile-filter/mobile-filter.module.mjs +5 -5
  65. package/{esm2020 → esm2022}/modal/modal.module.mjs +5 -5
  66. package/esm2022/modal/modal.service.mjs +70 -0
  67. package/esm2022/modal/module-wrapper/module-wrapper.component.mjs +56 -0
  68. package/esm2022/multi-select-dropdown/multi-select-dropdown.component.mjs +489 -0
  69. package/{esm2020 → esm2022}/multi-select-dropdown/multi-select-dropdown.module.mjs +5 -5
  70. package/esm2022/nested-multi-select-dropdown/nested-multi-select-dropdown.component.mjs +516 -0
  71. package/{esm2020 → esm2022}/nested-multi-select-dropdown/nested-multi-select-dropdown.module.mjs +5 -5
  72. package/esm2022/phone-input/phone-input.component.mjs +72 -0
  73. package/{esm2020 → esm2022}/phone-input/phone-input.module.mjs +5 -5
  74. package/esm2022/radio-button/radio-button.component.mjs +57 -0
  75. package/{esm2020 → esm2022}/radio-button/radio-button.module.mjs +5 -5
  76. package/esm2022/ske-loader/ske-loader.component.mjs +54 -0
  77. package/{esm2020 → esm2022}/ske-loader/ske-loader.module.mjs +5 -5
  78. package/esm2022/slider/slider.component.mjs +46 -0
  79. package/{esm2020 → esm2022}/slider/slider.module.mjs +7 -7
  80. package/esm2022/snackbar/snackbar/snackbar.component.mjs +72 -0
  81. package/{esm2020 → esm2022}/snackbar/snackbar.module.mjs +5 -5
  82. package/esm2022/snackbar/snackbar.service.mjs +47 -0
  83. package/{esm2020 → esm2022}/specificdatepicker/specificdatepicker.module.mjs +5 -5
  84. package/esm2022/specificdatepicker/tz-sdp-container/tz-sdp-container.component.mjs +646 -0
  85. package/esm2022/specificdatepicker/tz-specificdatepicker.directive.mjs +196 -0
  86. package/esm2022/specificdatepicker/utils/index.mjs +45 -0
  87. package/esm2022/star-rating/star-rating.component.mjs +113 -0
  88. package/{esm2020 → esm2022}/star-rating/star-rating.module.mjs +5 -5
  89. package/esm2022/switch/switch.component.mjs +56 -0
  90. package/{esm2020 → esm2022}/switch/switch.module.mjs +5 -5
  91. package/esm2022/table/custom-table-cell.directive.mjs +42 -0
  92. package/esm2022/table/filter/filter.component.mjs +177 -0
  93. package/esm2022/table/sub-table/sub-table.component.mjs +192 -0
  94. package/esm2022/table/table.component.mjs +485 -0
  95. package/{esm2020 → esm2022}/table/table.module.mjs +5 -5
  96. package/esm2022/timepicker/timepicker.component.mjs +374 -0
  97. package/esm2022/timepicker/timepicker.directive.mjs +69 -0
  98. package/{esm2020 → esm2022}/timepicker/timepicker.module.mjs +5 -5
  99. package/esm2022/timerangepicker/timerangepicker.component.mjs +237 -0
  100. package/{esm2020 → esm2022}/timerangepicker/timerangepicker.module.mjs +5 -5
  101. package/esm2022/toast/toast.component.mjs +51 -0
  102. package/{esm2020 → esm2022}/toast/toast.data.service.mjs +8 -8
  103. package/{esm2020 → esm2022}/toast/toast.module.mjs +5 -5
  104. package/esm2022/toast/toast.service.mjs +91 -0
  105. package/esm2022/tooltip/tooltip-container/tooltip.component.mjs +79 -0
  106. package/esm2022/tooltip/tooltip.directive.mjs +143 -0
  107. package/{esm2020 → esm2022}/tooltip/tooltip.module.mjs +5 -5
  108. package/esm2022/virtual-scroll/virtual-scroll.component.mjs +188 -0
  109. package/{esm2020 → esm2022}/virtual-scroll/virtual-scroll.module.mjs +7 -7
  110. package/esm2022/widgets/classes/async-widget.mjs +23 -0
  111. package/{esm2020 → esm2022}/widgets/classes/base-widget.mjs +1 -1
  112. package/esm2022/widgets/classes/sync-widget.mjs +20 -0
  113. package/{esm2020 → esm2022}/widgets/services/widget.service.mjs +5 -5
  114. package/{esm2020 → esm2022}/widgets/widgets.module.mjs +5 -5
  115. package/fab/fab.component.d.ts +4 -4
  116. package/{fesm2020 → fesm2022}/mis-crystal-design-system-action-list.mjs +106 -113
  117. package/fesm2022/mis-crystal-design-system-action-list.mjs.map +1 -0
  118. package/{fesm2020 → fesm2022}/mis-crystal-design-system-analytics.mjs +9 -9
  119. package/{fesm2020 → fesm2022}/mis-crystal-design-system-analytics.mjs.map +1 -1
  120. package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs +561 -0
  121. package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs.map +1 -0
  122. package/fesm2022/mis-crystal-design-system-button.mjs +173 -0
  123. package/fesm2022/mis-crystal-design-system-button.mjs.map +1 -0
  124. package/fesm2022/mis-crystal-design-system-checkbox.mjs +150 -0
  125. package/fesm2022/mis-crystal-design-system-checkbox.mjs.map +1 -0
  126. package/fesm2022/mis-crystal-design-system-chip.mjs +108 -0
  127. package/fesm2022/mis-crystal-design-system-chip.mjs.map +1 -0
  128. package/{fesm2020 → fesm2022}/mis-crystal-design-system-datepicker_v2.mjs +133 -140
  129. package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs.map +1 -0
  130. package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs +737 -0
  131. package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs.map +1 -0
  132. package/{fesm2020 → fesm2022}/mis-crystal-design-system-drawer.mjs +34 -33
  133. package/{fesm2020 → fesm2022}/mis-crystal-design-system-drawer.mjs.map +1 -1
  134. package/{fesm2020 → fesm2022}/mis-crystal-design-system-dropdown.mjs +176 -184
  135. package/fesm2022/mis-crystal-design-system-dropdown.mjs.map +1 -0
  136. package/{fesm2020 → fesm2022}/mis-crystal-design-system-dynamic-form.mjs +441 -456
  137. package/fesm2022/mis-crystal-design-system-dynamic-form.mjs.map +1 -0
  138. package/{fesm2020 → fesm2022}/mis-crystal-design-system-fab.mjs +48 -47
  139. package/fesm2022/mis-crystal-design-system-fab.mjs.map +1 -0
  140. package/{fesm2020 → fesm2022}/mis-crystal-design-system-filter.mjs +113 -120
  141. package/fesm2022/mis-crystal-design-system-filter.mjs.map +1 -0
  142. package/{fesm2020 → fesm2022}/mis-crystal-design-system-input-stepper.mjs +35 -34
  143. package/{fesm2020 → fesm2022}/mis-crystal-design-system-input-stepper.mjs.map +1 -1
  144. package/fesm2022/mis-crystal-design-system-input.mjs +146 -0
  145. package/{fesm2020 → fesm2022}/mis-crystal-design-system-input.mjs.map +1 -1
  146. package/fesm2022/mis-crystal-design-system-loader.mjs +51 -0
  147. package/{fesm2020 → fesm2022}/mis-crystal-design-system-loader.mjs.map +1 -1
  148. package/{fesm2020 → fesm2022}/mis-crystal-design-system-menu.mjs +16 -16
  149. package/{fesm2020 → fesm2022}/mis-crystal-design-system-menu.mjs.map +1 -1
  150. package/fesm2022/mis-crystal-design-system-mobile-filter.mjs +205 -0
  151. package/fesm2022/mis-crystal-design-system-mobile-filter.mjs.map +1 -0
  152. package/{fesm2020 → fesm2022}/mis-crystal-design-system-modal.mjs +34 -33
  153. package/{fesm2020 → fesm2022}/mis-crystal-design-system-modal.mjs.map +1 -1
  154. package/{fesm2020 → fesm2022}/mis-crystal-design-system-multi-select-dropdown.mjs +107 -109
  155. package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs.map +1 -0
  156. package/{fesm2020 → fesm2022}/mis-crystal-design-system-nested-multi-select-dropdown.mjs +128 -129
  157. package/fesm2022/mis-crystal-design-system-nested-multi-select-dropdown.mjs.map +1 -0
  158. package/{fesm2020 → fesm2022}/mis-crystal-design-system-phone-input.mjs +22 -21
  159. package/{fesm2020 → fesm2022}/mis-crystal-design-system-phone-input.mjs.map +1 -1
  160. package/fesm2022/mis-crystal-design-system-radio-button.mjs +83 -0
  161. package/{fesm2020 → fesm2022}/mis-crystal-design-system-radio-button.mjs.map +1 -1
  162. package/fesm2022/mis-crystal-design-system-ske-loader.mjs +77 -0
  163. package/fesm2022/mis-crystal-design-system-ske-loader.mjs.map +1 -0
  164. package/fesm2022/mis-crystal-design-system-slider.mjs +80 -0
  165. package/{fesm2020 → fesm2022}/mis-crystal-design-system-slider.mjs.map +1 -1
  166. package/{fesm2020 → fesm2022}/mis-crystal-design-system-snackbar.mjs +32 -32
  167. package/fesm2022/mis-crystal-design-system-snackbar.mjs.map +1 -0
  168. package/{fesm2020 → fesm2022}/mis-crystal-design-system-specificdatepicker.mjs +204 -204
  169. package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs.map +1 -0
  170. package/{fesm2020 → fesm2022}/mis-crystal-design-system-star-rating.mjs +29 -28
  171. package/fesm2022/mis-crystal-design-system-star-rating.mjs.map +1 -0
  172. package/fesm2022/mis-crystal-design-system-switch.mjs +82 -0
  173. package/fesm2022/mis-crystal-design-system-switch.mjs.map +1 -0
  174. package/{fesm2020 → fesm2022}/mis-crystal-design-system-table.mjs +314 -321
  175. package/fesm2022/mis-crystal-design-system-table.mjs.map +1 -0
  176. package/{fesm2020 → fesm2022}/mis-crystal-design-system-timepicker.mjs +78 -74
  177. package/{fesm2020 → fesm2022}/mis-crystal-design-system-timepicker.mjs.map +1 -1
  178. package/{fesm2020 → fesm2022}/mis-crystal-design-system-timerangepicker.mjs +26 -25
  179. package/{fesm2020 → fesm2022}/mis-crystal-design-system-timerangepicker.mjs.map +1 -1
  180. package/{fesm2020 → fesm2022}/mis-crystal-design-system-toast.mjs +35 -34
  181. package/{fesm2020 → fesm2022}/mis-crystal-design-system-toast.mjs.map +1 -1
  182. package/{fesm2020 → fesm2022}/mis-crystal-design-system-tooltip.mjs +47 -47
  183. package/{fesm2020 → fesm2022}/mis-crystal-design-system-tooltip.mjs.map +1 -1
  184. package/{fesm2020 → fesm2022}/mis-crystal-design-system-virtual-scroll.mjs +50 -52
  185. package/fesm2022/mis-crystal-design-system-virtual-scroll.mjs.map +1 -0
  186. package/{fesm2020 → fesm2022}/mis-crystal-design-system-widgets.mjs +4 -4
  187. package/{fesm2020 → fesm2022}/mis-crystal-design-system-widgets.mjs.map +1 -1
  188. package/filter/filter-panel/filter-panel.component.d.ts +1 -1
  189. package/input/directives/input/input.directive.d.ts +1 -1
  190. package/input/mis-input.component.d.ts +1 -1
  191. package/input-stepper/input-stepper/input-stepper.component.d.ts +1 -1
  192. package/loader/loader.component.d.ts +1 -1
  193. package/menu/menu-close.directive.d.ts +1 -1
  194. package/menu/menu.directive.d.ts +1 -1
  195. package/mobile-filter/mobile-filter.component.d.ts +1 -1
  196. package/modal/module-wrapper/module-wrapper.component.d.ts +1 -1
  197. package/multi-select-dropdown/multi-select-dropdown.component.d.ts +1 -1
  198. package/nested-multi-select-dropdown/nested-multi-select-dropdown.component.d.ts +1 -1
  199. package/package.json +125 -207
  200. package/phone-input/phone-input.component.d.ts +1 -1
  201. package/radio-button/radio-button.component.d.ts +1 -1
  202. package/ske-loader/ske-loader.component.d.ts +1 -1
  203. package/slider/slider.component.d.ts +1 -1
  204. package/snackbar/snackbar/snackbar.component.d.ts +1 -1
  205. package/specificdatepicker/models/sdp-config.model.d.ts +1 -1
  206. package/specificdatepicker/tz-sdp-container/tz-sdp-container.component.d.ts +1 -1
  207. package/specificdatepicker/tz-specificdatepicker.directive.d.ts +1 -1
  208. package/star-rating/star-rating.component.d.ts +1 -1
  209. package/switch/switch.component.d.ts +1 -1
  210. package/table/custom-table-cell.directive.d.ts +1 -1
  211. package/table/filter/filter.component.d.ts +1 -1
  212. package/table/sub-table/sub-table.component.d.ts +1 -1
  213. package/table/table.component.d.ts +1 -1
  214. package/timepicker/timepicker.component.d.ts +1 -1
  215. package/timepicker/timepicker.directive.d.ts +1 -1
  216. package/timerangepicker/timerange.namespace.d.ts +1 -1
  217. package/timerangepicker/timerangepicker.component.d.ts +1 -1
  218. package/toast/toast.component.d.ts +1 -1
  219. package/toast/toast.service.d.ts +1 -1
  220. package/tooltip/models/tooltip.model.d.ts +1 -1
  221. package/tooltip/tooltip-container/tooltip.component.d.ts +1 -1
  222. package/tooltip/tooltip.directive.d.ts +1 -1
  223. package/virtual-scroll/virtual-scroll.component.d.ts +1 -1
  224. package/widgets/interfaces/widgets.model.d.ts +1 -1
  225. package/esm2020/action-list/action-list.component.mjs +0 -370
  226. package/esm2020/analytics/analytics.service.mjs +0 -64
  227. package/esm2020/async-search-dropdown/async-dropdown.component.mjs +0 -525
  228. package/esm2020/button/button.component.mjs +0 -87
  229. package/esm2020/button/button.directive.mjs +0 -61
  230. package/esm2020/checkbox/checkbox.component.mjs +0 -124
  231. package/esm2020/chip/chip.component.mjs +0 -82
  232. package/esm2020/datepicker_v2/tz-datepicker.directive.mjs +0 -183
  233. package/esm2020/datepicker_v2/tz-dp-container/tz-dp-container.component.mjs +0 -449
  234. package/esm2020/datepicker_v2/utils/index.mjs +0 -45
  235. package/esm2020/daterangepicker_v2/tz-daterangepicker.directive.mjs +0 -165
  236. package/esm2020/daterangepicker_v2/tz-drp-container/tz-drp-container.component.mjs +0 -502
  237. package/esm2020/drawer/drawer-body/drawer-body.component.mjs +0 -58
  238. package/esm2020/dropdown/calculate-container-height.directive.mjs +0 -41
  239. package/esm2020/dropdown/dropdown.component.mjs +0 -472
  240. package/esm2020/dynamic-form/dynamic-form.component.mjs +0 -1108
  241. package/esm2020/fab/fab.component.mjs +0 -144
  242. package/esm2020/filter/filter-panel/filter-panel.component.mjs +0 -403
  243. package/esm2020/filter/has-value.pipe.mjs +0 -31
  244. package/esm2020/input/mis-input.component.mjs +0 -84
  245. package/esm2020/input-stepper/input-stepper/input-stepper.component.mjs +0 -88
  246. package/esm2020/loader/loader.component.mjs +0 -24
  247. package/esm2020/menu/menu-close.directive.mjs +0 -25
  248. package/esm2020/mobile-filter/mobile-filter.component.mjs +0 -181
  249. package/esm2020/modal/modal.service.mjs +0 -70
  250. package/esm2020/modal/module-wrapper/module-wrapper.component.mjs +0 -55
  251. package/esm2020/multi-select-dropdown/multi-select-dropdown.component.mjs +0 -491
  252. package/esm2020/nested-multi-select-dropdown/nested-multi-select-dropdown.component.mjs +0 -517
  253. package/esm2020/phone-input/phone-input.component.mjs +0 -71
  254. package/esm2020/radio-button/radio-button.component.mjs +0 -56
  255. package/esm2020/ske-loader/ske-loader.component.mjs +0 -53
  256. package/esm2020/slider/slider.component.mjs +0 -45
  257. package/esm2020/snackbar/snackbar/snackbar.component.mjs +0 -72
  258. package/esm2020/snackbar/snackbar.service.mjs +0 -47
  259. package/esm2020/specificdatepicker/tz-sdp-container/tz-sdp-container.component.mjs +0 -646
  260. package/esm2020/specificdatepicker/tz-specificdatepicker.directive.mjs +0 -196
  261. package/esm2020/specificdatepicker/utils/index.mjs +0 -45
  262. package/esm2020/star-rating/star-rating.component.mjs +0 -112
  263. package/esm2020/switch/switch.component.mjs +0 -55
  264. package/esm2020/table/custom-table-cell.directive.mjs +0 -42
  265. package/esm2020/table/filter/filter.component.mjs +0 -176
  266. package/esm2020/table/sub-table/sub-table.component.mjs +0 -193
  267. package/esm2020/table/table.component.mjs +0 -492
  268. package/esm2020/timepicker/timepicker.component.mjs +0 -370
  269. package/esm2020/timepicker/timepicker.directive.mjs +0 -69
  270. package/esm2020/timerangepicker/timerangepicker.component.mjs +0 -236
  271. package/esm2020/toast/toast.component.mjs +0 -50
  272. package/esm2020/toast/toast.service.mjs +0 -91
  273. package/esm2020/tooltip/tooltip-container/tooltip.component.mjs +0 -79
  274. package/esm2020/tooltip/tooltip.directive.mjs +0 -143
  275. package/esm2020/virtual-scroll/virtual-scroll.component.mjs +0 -190
  276. package/esm2020/widgets/classes/async-widget.mjs +0 -23
  277. package/esm2020/widgets/classes/sync-widget.mjs +0 -20
  278. package/fesm2015/mis-crystal-design-system-action-list.mjs +0 -446
  279. package/fesm2015/mis-crystal-design-system-action-list.mjs.map +0 -1
  280. package/fesm2015/mis-crystal-design-system-analytics.mjs +0 -87
  281. package/fesm2015/mis-crystal-design-system-analytics.mjs.map +0 -1
  282. package/fesm2015/mis-crystal-design-system-async-search-dropdown.mjs +0 -618
  283. package/fesm2015/mis-crystal-design-system-async-search-dropdown.mjs.map +0 -1
  284. package/fesm2015/mis-crystal-design-system-button.mjs +0 -189
  285. package/fesm2015/mis-crystal-design-system-button.mjs.map +0 -1
  286. package/fesm2015/mis-crystal-design-system-checkbox.mjs +0 -166
  287. package/fesm2015/mis-crystal-design-system-checkbox.mjs.map +0 -1
  288. package/fesm2015/mis-crystal-design-system-chip.mjs +0 -123
  289. package/fesm2015/mis-crystal-design-system-chip.mjs.map +0 -1
  290. package/fesm2015/mis-crystal-design-system-datepicker_v2.mjs +0 -751
  291. package/fesm2015/mis-crystal-design-system-datepicker_v2.mjs.map +0 -1
  292. package/fesm2015/mis-crystal-design-system-daterangepicker_v2.mjs +0 -769
  293. package/fesm2015/mis-crystal-design-system-daterangepicker_v2.mjs.map +0 -1
  294. package/fesm2015/mis-crystal-design-system-drawer.mjs +0 -185
  295. package/fesm2015/mis-crystal-design-system-drawer.mjs.map +0 -1
  296. package/fesm2015/mis-crystal-design-system-dropdown.mjs +0 -616
  297. package/fesm2015/mis-crystal-design-system-dropdown.mjs.map +0 -1
  298. package/fesm2015/mis-crystal-design-system-dynamic-form.mjs +0 -1337
  299. package/fesm2015/mis-crystal-design-system-dynamic-form.mjs.map +0 -1
  300. package/fesm2015/mis-crystal-design-system-fab.mjs +0 -186
  301. package/fesm2015/mis-crystal-design-system-fab.mjs.map +0 -1
  302. package/fesm2015/mis-crystal-design-system-filter.mjs +0 -559
  303. package/fesm2015/mis-crystal-design-system-filter.mjs.map +0 -1
  304. package/fesm2015/mis-crystal-design-system-input-stepper.mjs +0 -124
  305. package/fesm2015/mis-crystal-design-system-input-stepper.mjs.map +0 -1
  306. package/fesm2015/mis-crystal-design-system-input.mjs +0 -165
  307. package/fesm2015/mis-crystal-design-system-input.mjs.map +0 -1
  308. package/fesm2015/mis-crystal-design-system-loader.mjs +0 -57
  309. package/fesm2015/mis-crystal-design-system-loader.mjs.map +0 -1
  310. package/fesm2015/mis-crystal-design-system-menu.mjs +0 -135
  311. package/fesm2015/mis-crystal-design-system-menu.mjs.map +0 -1
  312. package/fesm2015/mis-crystal-design-system-mobile-filter.mjs +0 -227
  313. package/fesm2015/mis-crystal-design-system-mobile-filter.mjs.map +0 -1
  314. package/fesm2015/mis-crystal-design-system-modal.mjs +0 -184
  315. package/fesm2015/mis-crystal-design-system-modal.mjs.map +0 -1
  316. package/fesm2015/mis-crystal-design-system-multi-select-dropdown.mjs +0 -550
  317. package/fesm2015/mis-crystal-design-system-multi-select-dropdown.mjs.map +0 -1
  318. package/fesm2015/mis-crystal-design-system-nested-multi-select-dropdown.mjs +0 -559
  319. package/fesm2015/mis-crystal-design-system-nested-multi-select-dropdown.mjs.map +0 -1
  320. package/fesm2015/mis-crystal-design-system-phone-input.mjs +0 -107
  321. package/fesm2015/mis-crystal-design-system-phone-input.mjs.map +0 -1
  322. package/fesm2015/mis-crystal-design-system-radio-button.mjs +0 -89
  323. package/fesm2015/mis-crystal-design-system-radio-button.mjs.map +0 -1
  324. package/fesm2015/mis-crystal-design-system-ske-loader.mjs +0 -86
  325. package/fesm2015/mis-crystal-design-system-ske-loader.mjs.map +0 -1
  326. package/fesm2015/mis-crystal-design-system-slider.mjs +0 -88
  327. package/fesm2015/mis-crystal-design-system-slider.mjs.map +0 -1
  328. package/fesm2015/mis-crystal-design-system-snackbar.mjs +0 -175
  329. package/fesm2015/mis-crystal-design-system-snackbar.mjs.map +0 -1
  330. package/fesm2015/mis-crystal-design-system-specificdatepicker.mjs +0 -970
  331. package/fesm2015/mis-crystal-design-system-specificdatepicker.mjs.map +0 -1
  332. package/fesm2015/mis-crystal-design-system-star-rating.mjs +0 -145
  333. package/fesm2015/mis-crystal-design-system-star-rating.mjs.map +0 -1
  334. package/fesm2015/mis-crystal-design-system-switch.mjs +0 -88
  335. package/fesm2015/mis-crystal-design-system-switch.mjs.map +0 -1
  336. package/fesm2015/mis-crystal-design-system-table.mjs +0 -1045
  337. package/fesm2015/mis-crystal-design-system-table.mjs.map +0 -1
  338. package/fesm2015/mis-crystal-design-system-timepicker.mjs +0 -484
  339. package/fesm2015/mis-crystal-design-system-timepicker.mjs.map +0 -1
  340. package/fesm2015/mis-crystal-design-system-timerangepicker.mjs +0 -273
  341. package/fesm2015/mis-crystal-design-system-timerangepicker.mjs.map +0 -1
  342. package/fesm2015/mis-crystal-design-system-toast.mjs +0 -214
  343. package/fesm2015/mis-crystal-design-system-toast.mjs.map +0 -1
  344. package/fesm2015/mis-crystal-design-system-tooltip.mjs +0 -272
  345. package/fesm2015/mis-crystal-design-system-tooltip.mjs.map +0 -1
  346. package/fesm2015/mis-crystal-design-system-virtual-scroll.mjs +0 -259
  347. package/fesm2015/mis-crystal-design-system-virtual-scroll.mjs.map +0 -1
  348. package/fesm2015/mis-crystal-design-system-widgets.mjs +0 -131
  349. package/fesm2015/mis-crystal-design-system-widgets.mjs.map +0 -1
  350. package/fesm2020/mis-crystal-design-system-action-list.mjs.map +0 -1
  351. package/fesm2020/mis-crystal-design-system-async-search-dropdown.mjs +0 -550
  352. package/fesm2020/mis-crystal-design-system-async-search-dropdown.mjs.map +0 -1
  353. package/fesm2020/mis-crystal-design-system-button.mjs +0 -172
  354. package/fesm2020/mis-crystal-design-system-button.mjs.map +0 -1
  355. package/fesm2020/mis-crystal-design-system-checkbox.mjs +0 -150
  356. package/fesm2020/mis-crystal-design-system-checkbox.mjs.map +0 -1
  357. package/fesm2020/mis-crystal-design-system-chip.mjs +0 -108
  358. package/fesm2020/mis-crystal-design-system-chip.mjs.map +0 -1
  359. package/fesm2020/mis-crystal-design-system-datepicker_v2.mjs.map +0 -1
  360. package/fesm2020/mis-crystal-design-system-daterangepicker_v2.mjs +0 -736
  361. package/fesm2020/mis-crystal-design-system-daterangepicker_v2.mjs.map +0 -1
  362. package/fesm2020/mis-crystal-design-system-dropdown.mjs.map +0 -1
  363. package/fesm2020/mis-crystal-design-system-dynamic-form.mjs.map +0 -1
  364. package/fesm2020/mis-crystal-design-system-fab.mjs.map +0 -1
  365. package/fesm2020/mis-crystal-design-system-filter.mjs.map +0 -1
  366. package/fesm2020/mis-crystal-design-system-loader.mjs +0 -50
  367. package/fesm2020/mis-crystal-design-system-mobile-filter.mjs +0 -206
  368. package/fesm2020/mis-crystal-design-system-mobile-filter.mjs.map +0 -1
  369. package/fesm2020/mis-crystal-design-system-multi-select-dropdown.mjs.map +0 -1
  370. package/fesm2020/mis-crystal-design-system-nested-multi-select-dropdown.mjs.map +0 -1
  371. package/fesm2020/mis-crystal-design-system-radio-button.mjs +0 -82
  372. package/fesm2020/mis-crystal-design-system-ske-loader.mjs +0 -76
  373. package/fesm2020/mis-crystal-design-system-ske-loader.mjs.map +0 -1
  374. package/fesm2020/mis-crystal-design-system-slider.mjs +0 -79
  375. package/fesm2020/mis-crystal-design-system-snackbar.mjs.map +0 -1
  376. package/fesm2020/mis-crystal-design-system-specificdatepicker.mjs.map +0 -1
  377. package/fesm2020/mis-crystal-design-system-star-rating.mjs.map +0 -1
  378. package/fesm2020/mis-crystal-design-system-styles.mjs +0 -4
  379. package/fesm2020/mis-crystal-design-system-styles.mjs.map +0 -1
  380. package/fesm2020/mis-crystal-design-system-switch.mjs +0 -81
  381. package/fesm2020/mis-crystal-design-system-switch.mjs.map +0 -1
  382. package/fesm2020/mis-crystal-design-system-table.mjs.map +0 -1
  383. package/fesm2020/mis-crystal-design-system-utils.mjs +0 -24
  384. package/fesm2020/mis-crystal-design-system-utils.mjs.map +0 -1
  385. package/fesm2020/mis-crystal-design-system-virtual-scroll.mjs.map +0 -1
  386. package/fesm2020/mis-crystal-design-system.mjs +0 -24
  387. package/fesm2020/mis-crystal-design-system.mjs.map +0 -1
  388. /package/{esm2020 → esm2022}/action-list/index.mjs +0 -0
  389. /package/{esm2020 → esm2022}/action-list/mis-crystal-design-system-action-list.mjs +0 -0
  390. /package/{esm2020 → esm2022}/action-list/public_api.mjs +0 -0
  391. /package/{esm2020 → esm2022}/analytics/index.mjs +0 -0
  392. /package/{esm2020 → esm2022}/analytics/mis-crystal-design-system-analytics.mjs +0 -0
  393. /package/{esm2020 → esm2022}/analytics/public_api.mjs +0 -0
  394. /package/{esm2020 → esm2022}/async-search-dropdown/index.mjs +0 -0
  395. /package/{esm2020 → esm2022}/async-search-dropdown/mis-crystal-design-system-async-search-dropdown.mjs +0 -0
  396. /package/{esm2020 → esm2022}/async-search-dropdown/public_api.mjs +0 -0
  397. /package/{esm2020 → esm2022}/button/index.mjs +0 -0
  398. /package/{esm2020 → esm2022}/button/mis-crystal-design-system-button.mjs +0 -0
  399. /package/{esm2020 → esm2022}/button/public_api.mjs +0 -0
  400. /package/{esm2020 → esm2022}/checkbox/index.mjs +0 -0
  401. /package/{esm2020 → esm2022}/checkbox/mis-crystal-design-system-checkbox.mjs +0 -0
  402. /package/{esm2020 → esm2022}/checkbox/public_api.mjs +0 -0
  403. /package/{esm2020 → esm2022}/chip/index.mjs +0 -0
  404. /package/{esm2020 → esm2022}/chip/mis-crystal-design-system-chip.mjs +0 -0
  405. /package/{esm2020 → esm2022}/chip/public_api.mjs +0 -0
  406. /package/{esm2020 → esm2022}/datepicker_v2/datepicker-constants.mjs +0 -0
  407. /package/{esm2020 → esm2022}/datepicker_v2/index.mjs +0 -0
  408. /package/{esm2020 → esm2022}/datepicker_v2/mis-crystal-design-system-datepicker_v2.mjs +0 -0
  409. /package/{esm2020 → esm2022}/datepicker_v2/models/dp-config.model.mjs +0 -0
  410. /package/{esm2020 → esm2022}/datepicker_v2/public_api.mjs +0 -0
  411. /package/{esm2020 → esm2022}/daterangepicker_v2/daterangepicker-constants.mjs +0 -0
  412. /package/{esm2020 → esm2022}/daterangepicker_v2/index.mjs +0 -0
  413. /package/{esm2020 → esm2022}/daterangepicker_v2/mis-crystal-design-system-daterangepicker_v2.mjs +0 -0
  414. /package/{esm2020 → esm2022}/daterangepicker_v2/models/drp-config.model.mjs +0 -0
  415. /package/{esm2020 → esm2022}/daterangepicker_v2/public_api.mjs +0 -0
  416. /package/{esm2020 → esm2022}/drawer/drawer-constants.mjs +0 -0
  417. /package/{esm2020 → esm2022}/drawer/index.mjs +0 -0
  418. /package/{esm2020 → esm2022}/drawer/mis-crystal-design-system-drawer.mjs +0 -0
  419. /package/{esm2020 → esm2022}/drawer/public_api.mjs +0 -0
  420. /package/{esm2020 → esm2022}/dropdown/index.mjs +0 -0
  421. /package/{esm2020 → esm2022}/dropdown/mis-crystal-design-system-dropdown.mjs +0 -0
  422. /package/{esm2020 → esm2022}/dropdown/public_api.mjs +0 -0
  423. /package/{esm2020 → esm2022}/dynamic-form/dynamic-form.namespace.mjs +0 -0
  424. /package/{esm2020 → esm2022}/dynamic-form/index.mjs +0 -0
  425. /package/{esm2020 → esm2022}/dynamic-form/mis-crystal-design-system-dynamic-form.mjs +0 -0
  426. /package/{esm2020 → esm2022}/dynamic-form/public_api.mjs +0 -0
  427. /package/{esm2020 → esm2022}/fab/index.mjs +0 -0
  428. /package/{esm2020 → esm2022}/fab/mis-crystal-design-system-fab.mjs +0 -0
  429. /package/{esm2020 → esm2022}/fab/public_api.mjs +0 -0
  430. /package/{esm2020 → esm2022}/filter/animations/slideFromRight.mjs +0 -0
  431. /package/{esm2020 → esm2022}/filter/index.mjs +0 -0
  432. /package/{esm2020 → esm2022}/filter/mis-crystal-design-system-filter.mjs +0 -0
  433. /package/{esm2020 → esm2022}/filter/public_api.mjs +0 -0
  434. /package/{esm2020 → esm2022}/index.mjs +0 -0
  435. /package/{esm2020 → esm2022}/input/index.mjs +0 -0
  436. /package/{esm2020 → esm2022}/input/mis-crystal-design-system-input.mjs +0 -0
  437. /package/{esm2020 → esm2022}/input/public_api.mjs +0 -0
  438. /package/{esm2020 → esm2022}/input-stepper/index.mjs +0 -0
  439. /package/{esm2020 → esm2022}/input-stepper/mis-crystal-design-system-input-stepper.mjs +0 -0
  440. /package/{esm2020 → esm2022}/input-stepper/public_api.mjs +0 -0
  441. /package/{esm2020 → esm2022}/loader/index.mjs +0 -0
  442. /package/{esm2020 → esm2022}/loader/mis-crystal-design-system-loader.mjs +0 -0
  443. /package/{esm2020 → esm2022}/loader/public_api.mjs +0 -0
  444. /package/{esm2020 → esm2022}/menu/index.mjs +0 -0
  445. /package/{esm2020 → esm2022}/menu/mis-crystal-design-system-menu.mjs +0 -0
  446. /package/{esm2020 → esm2022}/menu/public_api.mjs +0 -0
  447. /package/{esm2020 → esm2022}/mis-crystal-design-system.mjs +0 -0
  448. /package/{esm2020 → esm2022}/mobile-filter/index.mjs +0 -0
  449. /package/{esm2020 → esm2022}/mobile-filter/mis-crystal-design-system-mobile-filter.mjs +0 -0
  450. /package/{esm2020 → esm2022}/mobile-filter/public_api.mjs +0 -0
  451. /package/{esm2020 → esm2022}/modal/index.mjs +0 -0
  452. /package/{esm2020 → esm2022}/modal/mis-crystal-design-system-modal.mjs +0 -0
  453. /package/{esm2020 → esm2022}/modal/modal-constants.mjs +0 -0
  454. /package/{esm2020 → esm2022}/modal/modal-ref.mjs +0 -0
  455. /package/{esm2020 → esm2022}/modal/public_api.mjs +0 -0
  456. /package/{esm2020 → esm2022}/multi-select-dropdown/index.mjs +0 -0
  457. /package/{esm2020 → esm2022}/multi-select-dropdown/mis-crystal-design-system-multi-select-dropdown.mjs +0 -0
  458. /package/{esm2020 → esm2022}/multi-select-dropdown/public_api.mjs +0 -0
  459. /package/{esm2020 → esm2022}/nested-multi-select-dropdown/index.mjs +0 -0
  460. /package/{esm2020 → esm2022}/nested-multi-select-dropdown/mis-crystal-design-system-nested-multi-select-dropdown.mjs +0 -0
  461. /package/{esm2020 → esm2022}/nested-multi-select-dropdown/public_api.mjs +0 -0
  462. /package/{esm2020 → esm2022}/phone-input/index.mjs +0 -0
  463. /package/{esm2020 → esm2022}/phone-input/mis-crystal-design-system-phone-input.mjs +0 -0
  464. /package/{esm2020 → esm2022}/phone-input/public_api.mjs +0 -0
  465. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  466. /package/{esm2020 → esm2022}/radio-button/index.mjs +0 -0
  467. /package/{esm2020 → esm2022}/radio-button/mis-crystal-design-system-radio-button.mjs +0 -0
  468. /package/{esm2020 → esm2022}/radio-button/public_api.mjs +0 -0
  469. /package/{esm2020 → esm2022}/ske-loader/index.mjs +0 -0
  470. /package/{esm2020 → esm2022}/ske-loader/mis-crystal-design-system-ske-loader.mjs +0 -0
  471. /package/{esm2020 → esm2022}/ske-loader/public_api.mjs +0 -0
  472. /package/{esm2020 → esm2022}/slider/index.mjs +0 -0
  473. /package/{esm2020 → esm2022}/slider/mis-crystal-design-system-slider.mjs +0 -0
  474. /package/{esm2020 → esm2022}/slider/public_api.mjs +0 -0
  475. /package/{esm2020 → esm2022}/snackbar/index.mjs +0 -0
  476. /package/{esm2020 → esm2022}/snackbar/mis-crystal-design-system-snackbar.mjs +0 -0
  477. /package/{esm2020 → esm2022}/snackbar/public_api.mjs +0 -0
  478. /package/{esm2020 → esm2022}/specificdatepicker/daterangepicker-constants.mjs +0 -0
  479. /package/{esm2020 → esm2022}/specificdatepicker/index.mjs +0 -0
  480. /package/{esm2020 → esm2022}/specificdatepicker/mis-crystal-design-system-specificdatepicker.mjs +0 -0
  481. /package/{esm2020 → esm2022}/specificdatepicker/models/sdp-config.model.mjs +0 -0
  482. /package/{esm2020 → esm2022}/specificdatepicker/public_api.mjs +0 -0
  483. /package/{esm2020 → esm2022}/star-rating/index.mjs +0 -0
  484. /package/{esm2020 → esm2022}/star-rating/mis-crystal-design-system-star-rating.mjs +0 -0
  485. /package/{esm2020 → esm2022}/star-rating/public_api.mjs +0 -0
  486. /package/{esm2020 → esm2022}/styles/index.mjs +0 -0
  487. /package/{esm2020 → esm2022}/styles/mis-crystal-design-system-styles.mjs +0 -0
  488. /package/{esm2020 → esm2022}/styles/public_api.mjs +0 -0
  489. /package/{esm2020 → esm2022}/switch/index.mjs +0 -0
  490. /package/{esm2020 → esm2022}/switch/mis-crystal-design-system-switch.mjs +0 -0
  491. /package/{esm2020 → esm2022}/switch/public_api.mjs +0 -0
  492. /package/{esm2020 → esm2022}/table/index.mjs +0 -0
  493. /package/{esm2020 → esm2022}/table/mis-crystal-design-system-table.mjs +0 -0
  494. /package/{esm2020 → esm2022}/table/public_api.mjs +0 -0
  495. /package/{esm2020 → esm2022}/timepicker/index.mjs +0 -0
  496. /package/{esm2020 → esm2022}/timepicker/mis-crystal-design-system-timepicker.mjs +0 -0
  497. /package/{esm2020 → esm2022}/timepicker/public_api.mjs +0 -0
  498. /package/{esm2020 → esm2022}/timepicker/time.namespace.mjs +0 -0
  499. /package/{esm2020 → esm2022}/timerangepicker/index.mjs +0 -0
  500. /package/{esm2020 → esm2022}/timerangepicker/mis-crystal-design-system-timerangepicker.mjs +0 -0
  501. /package/{esm2020 → esm2022}/timerangepicker/public_api.mjs +0 -0
  502. /package/{esm2020 → esm2022}/timerangepicker/timerange.namespace.mjs +0 -0
  503. /package/{esm2020 → esm2022}/toast/index.mjs +0 -0
  504. /package/{esm2020 → esm2022}/toast/mis-crystal-design-system-toast.mjs +0 -0
  505. /package/{esm2020 → esm2022}/toast/public_api.mjs +0 -0
  506. /package/{esm2020 → esm2022}/tooltip/index.mjs +0 -0
  507. /package/{esm2020 → esm2022}/tooltip/mis-crystal-design-system-tooltip.mjs +0 -0
  508. /package/{esm2020 → esm2022}/tooltip/models/tooltip.model.mjs +0 -0
  509. /package/{esm2020 → esm2022}/tooltip/public_api.mjs +0 -0
  510. /package/{esm2020 → esm2022}/utils/index.mjs +0 -0
  511. /package/{esm2020 → esm2022}/utils/mis-crystal-design-system-utils.mjs +0 -0
  512. /package/{esm2020 → esm2022}/virtual-scroll/index.mjs +0 -0
  513. /package/{esm2020 → esm2022}/virtual-scroll/mis-crystal-design-system-virtual-scroll.mjs +0 -0
  514. /package/{esm2020 → esm2022}/virtual-scroll/public_api.mjs +0 -0
  515. /package/{esm2020 → esm2022}/virtual-scroll/virtual-scroll.constants.mjs +0 -0
  516. /package/{esm2020 → esm2022}/widgets/classes/widget-group.mjs +0 -0
  517. /package/{esm2020 → esm2022}/widgets/index.mjs +0 -0
  518. /package/{esm2020 → esm2022}/widgets/interfaces/widgets.model.mjs +0 -0
  519. /package/{esm2020 → esm2022}/widgets/mis-crystal-design-system-widgets.mjs +0 -0
  520. /package/{esm2020 → esm2022}/widgets/public_api.mjs +0 -0
  521. /package/{fesm2015 → fesm2022}/mis-crystal-design-system-styles.mjs +0 -0
  522. /package/{fesm2015 → fesm2022}/mis-crystal-design-system-styles.mjs.map +0 -0
  523. /package/{fesm2015 → fesm2022}/mis-crystal-design-system-utils.mjs +0 -0
  524. /package/{fesm2015 → fesm2022}/mis-crystal-design-system-utils.mjs.map +0 -0
  525. /package/{fesm2015 → fesm2022}/mis-crystal-design-system.mjs +0 -0
  526. /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