@koalarx/ui 15.0.0 → 20.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2698) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +8 -11
  3. package/core/base/index.d.ts +60 -0
  4. package/core/base/package.json +3 -0
  5. package/core/components/dialog/index.d.ts +8 -0
  6. package/core/components/dialog/package.json +3 -0
  7. package/core/components/kl-root/index.d.ts +9 -0
  8. package/core/components/kl-root/package.json +3 -0
  9. package/core/components/loader/index.d.ts +10 -0
  10. package/core/components/loader/package.json +3 -0
  11. package/core/components/loader-page/index.d.ts +18 -0
  12. package/core/components/loader-page/package.json +3 -0
  13. package/core/components/side-window/index.d.ts +8 -0
  14. package/core/components/side-window/package.json +3 -0
  15. package/core/components/snackbar/index.d.ts +8 -0
  16. package/core/components/snackbar/package.json +3 -0
  17. package/core/config/index.d.ts +12 -0
  18. package/core/config/package.json +3 -0
  19. package/core/middlewares/index.d.ts +7 -0
  20. package/core/middlewares/package.json +3 -0
  21. package/core/models/index.d.ts +16 -0
  22. package/core/models/package.json +3 -0
  23. package/core/translations/index.d.ts +54 -0
  24. package/core/translations/package.json +3 -0
  25. package/fesm2022/koalarx-ui-core-base.mjs +154 -0
  26. package/fesm2022/koalarx-ui-core-base.mjs.map +1 -0
  27. package/fesm2022/koalarx-ui-core-components-dialog.mjs +18 -0
  28. package/fesm2022/koalarx-ui-core-components-dialog.mjs.map +1 -0
  29. package/fesm2022/koalarx-ui-core-components-kl-root.mjs +31 -0
  30. package/fesm2022/koalarx-ui-core-components-kl-root.mjs.map +1 -0
  31. package/fesm2022/koalarx-ui-core-components-loader-page.mjs +39 -0
  32. package/fesm2022/koalarx-ui-core-components-loader-page.mjs.map +1 -0
  33. package/fesm2022/koalarx-ui-core-components-loader.mjs +19 -0
  34. package/fesm2022/koalarx-ui-core-components-loader.mjs.map +1 -0
  35. package/fesm2022/koalarx-ui-core-components-side-window.mjs +18 -0
  36. package/fesm2022/koalarx-ui-core-components-side-window.mjs.map +1 -0
  37. package/fesm2022/koalarx-ui-core-components-snackbar.mjs +18 -0
  38. package/fesm2022/koalarx-ui-core-components-snackbar.mjs.map +1 -0
  39. package/fesm2022/koalarx-ui-core-config.mjs +14 -0
  40. package/fesm2022/koalarx-ui-core-config.mjs.map +1 -0
  41. package/fesm2022/koalarx-ui-core-middlewares.mjs +9 -0
  42. package/fesm2022/koalarx-ui-core-middlewares.mjs.map +1 -0
  43. package/fesm2022/koalarx-ui-core-models.mjs +4 -0
  44. package/fesm2022/koalarx-ui-core-models.mjs.map +1 -0
  45. package/fesm2022/koalarx-ui-core-translations.mjs +105 -0
  46. package/fesm2022/koalarx-ui-core-translations.mjs.map +1 -0
  47. package/fesm2022/koalarx-ui-shared-components-accordion.mjs +19 -0
  48. package/fesm2022/koalarx-ui-shared-components-accordion.mjs.map +1 -0
  49. package/fesm2022/koalarx-ui-shared-components-alert.mjs +90 -0
  50. package/fesm2022/koalarx-ui-shared-components-alert.mjs.map +1 -0
  51. package/fesm2022/koalarx-ui-shared-components-code-viewer.mjs +68 -0
  52. package/fesm2022/koalarx-ui-shared-components-code-viewer.mjs.map +1 -0
  53. package/fesm2022/koalarx-ui-shared-components-collapse.mjs +18 -0
  54. package/fesm2022/koalarx-ui-shared-components-collapse.mjs.map +1 -0
  55. package/fesm2022/koalarx-ui-shared-components-confirm.mjs +53 -0
  56. package/fesm2022/koalarx-ui-shared-components-confirm.mjs.map +1 -0
  57. package/fesm2022/koalarx-ui-shared-components-datatable.mjs +272 -0
  58. package/fesm2022/koalarx-ui-shared-components-datatable.mjs.map +1 -0
  59. package/fesm2022/koalarx-ui-shared-components-dialog.mjs +119 -0
  60. package/fesm2022/koalarx-ui-shared-components-dialog.mjs.map +1 -0
  61. package/fesm2022/koalarx-ui-shared-components-dropdown.mjs +18 -0
  62. package/fesm2022/koalarx-ui-shared-components-dropdown.mjs.map +1 -0
  63. package/fesm2022/koalarx-ui-shared-components-field-errors.mjs +21 -0
  64. package/fesm2022/koalarx-ui-shared-components-field-errors.mjs.map +1 -0
  65. package/fesm2022/koalarx-ui-shared-components-horizontal-menu.mjs +29 -0
  66. package/fesm2022/koalarx-ui-shared-components-horizontal-menu.mjs.map +1 -0
  67. package/fesm2022/koalarx-ui-shared-components-input-field-autocomplete.mjs +567 -0
  68. package/fesm2022/koalarx-ui-shared-components-input-field-autocomplete.mjs.map +1 -0
  69. package/fesm2022/koalarx-ui-shared-components-input-field-field-group.mjs +18 -0
  70. package/fesm2022/koalarx-ui-shared-components-input-field-field-group.mjs.map +1 -0
  71. package/fesm2022/koalarx-ui-shared-components-input-field-fieldset.mjs +19 -0
  72. package/fesm2022/koalarx-ui-shared-components-input-field-fieldset.mjs.map +1 -0
  73. package/fesm2022/koalarx-ui-shared-components-input-field-input-checkbox.mjs +82 -0
  74. package/fesm2022/koalarx-ui-shared-components-input-field-input-checkbox.mjs.map +1 -0
  75. package/fesm2022/koalarx-ui-shared-components-input-field-input-cnpj.mjs +37 -0
  76. package/fesm2022/koalarx-ui-shared-components-input-field-input-cnpj.mjs.map +1 -0
  77. package/fesm2022/koalarx-ui-shared-components-input-field-input-cpf.mjs +37 -0
  78. package/fesm2022/koalarx-ui-shared-components-input-field-input-cpf.mjs.map +1 -0
  79. package/fesm2022/koalarx-ui-shared-components-input-field-input-currency.mjs +25 -0
  80. package/fesm2022/koalarx-ui-shared-components-input-field-input-currency.mjs.map +1 -0
  81. package/fesm2022/koalarx-ui-shared-components-input-field-input-date.mjs +21 -0
  82. package/fesm2022/koalarx-ui-shared-components-input-field-input-date.mjs.map +1 -0
  83. package/fesm2022/koalarx-ui-shared-components-input-field-input-datetime.mjs +21 -0
  84. package/fesm2022/koalarx-ui-shared-components-input-field-input-datetime.mjs.map +1 -0
  85. package/fesm2022/koalarx-ui-shared-components-input-field-input-email.mjs +27 -0
  86. package/fesm2022/koalarx-ui-shared-components-input-field-input-email.mjs.map +1 -0
  87. package/fesm2022/koalarx-ui-shared-components-input-field-input-month.mjs +21 -0
  88. package/fesm2022/koalarx-ui-shared-components-input-field-input-month.mjs.map +1 -0
  89. package/fesm2022/koalarx-ui-shared-components-input-field-input-password.mjs +68 -0
  90. package/fesm2022/koalarx-ui-shared-components-input-field-input-password.mjs.map +1 -0
  91. package/fesm2022/koalarx-ui-shared-components-input-field-input-radio.mjs +91 -0
  92. package/fesm2022/koalarx-ui-shared-components-input-field-input-radio.mjs.map +1 -0
  93. package/fesm2022/koalarx-ui-shared-components-input-field-input-text.mjs +20 -0
  94. package/fesm2022/koalarx-ui-shared-components-input-field-input-text.mjs.map +1 -0
  95. package/fesm2022/koalarx-ui-shared-components-input-field-input-time.mjs +21 -0
  96. package/fesm2022/koalarx-ui-shared-components-input-field-input-time.mjs.map +1 -0
  97. package/fesm2022/koalarx-ui-shared-components-input-field-input-url.mjs +29 -0
  98. package/fesm2022/koalarx-ui-shared-components-input-field-input-url.mjs.map +1 -0
  99. package/fesm2022/koalarx-ui-shared-components-input-field-select.mjs +42 -0
  100. package/fesm2022/koalarx-ui-shared-components-input-field-select.mjs.map +1 -0
  101. package/fesm2022/koalarx-ui-shared-components-input-field-switcher.mjs +82 -0
  102. package/fesm2022/koalarx-ui-shared-components-input-field-switcher.mjs.map +1 -0
  103. package/fesm2022/koalarx-ui-shared-components-input-field-textarea.mjs +34 -0
  104. package/fesm2022/koalarx-ui-shared-components-input-field-textarea.mjs.map +1 -0
  105. package/fesm2022/koalarx-ui-shared-components-input-field.mjs +51 -0
  106. package/fesm2022/koalarx-ui-shared-components-input-field.mjs.map +1 -0
  107. package/fesm2022/koalarx-ui-shared-components-on-this-page.mjs +77 -0
  108. package/fesm2022/koalarx-ui-shared-components-on-this-page.mjs.map +1 -0
  109. package/fesm2022/koalarx-ui-shared-components-side-window.mjs +118 -0
  110. package/fesm2022/koalarx-ui-shared-components-side-window.mjs.map +1 -0
  111. package/fesm2022/koalarx-ui-shared-components-snackbar.mjs +193 -0
  112. package/fesm2022/koalarx-ui-shared-components-snackbar.mjs.map +1 -0
  113. package/fesm2022/koalarx-ui-shared-components-stepper.mjs +88 -0
  114. package/fesm2022/koalarx-ui-shared-components-stepper.mjs.map +1 -0
  115. package/fesm2022/koalarx-ui-shared-components-vertical-menu.mjs +29 -0
  116. package/fesm2022/koalarx-ui-shared-components-vertical-menu.mjs.map +1 -0
  117. package/fesm2022/koalarx-ui-shared-directives.mjs +340 -0
  118. package/fesm2022/koalarx-ui-shared-directives.mjs.map +1 -0
  119. package/fesm2022/koalarx-ui-shared-utils.mjs +97 -0
  120. package/fesm2022/koalarx-ui-shared-utils.mjs.map +1 -0
  121. package/fesm2022/koalarx-ui-shared-validators.mjs +15 -0
  122. package/fesm2022/koalarx-ui-shared-validators.mjs.map +1 -0
  123. package/fesm2022/koalarx-ui.mjs +165 -0
  124. package/fesm2022/koalarx-ui.mjs.map +1 -0
  125. package/index.d.ts +13 -0
  126. package/package.json +35 -34
  127. package/shared/components/accordion/index.d.ts +9 -0
  128. package/shared/components/accordion/package.json +3 -0
  129. package/shared/components/alert/index.d.ts +36 -0
  130. package/shared/components/alert/package.json +3 -0
  131. package/shared/components/code-viewer/index.d.ts +32 -0
  132. package/shared/components/code-viewer/package.json +3 -0
  133. package/shared/components/collapse/index.d.ts +8 -0
  134. package/shared/components/collapse/package.json +3 -0
  135. package/shared/components/confirm/index.d.ts +28 -0
  136. package/shared/components/confirm/package.json +3 -0
  137. package/shared/components/datatable/index.d.ts +112 -0
  138. package/shared/components/datatable/package.json +3 -0
  139. package/shared/components/dialog/index.d.ts +44 -0
  140. package/shared/components/dialog/package.json +3 -0
  141. package/shared/components/dropdown/index.d.ts +8 -0
  142. package/shared/components/dropdown/package.json +3 -0
  143. package/shared/components/field-errors/index.d.ts +23 -0
  144. package/shared/components/field-errors/package.json +3 -0
  145. package/shared/components/horizontal-menu/index.d.ts +14 -0
  146. package/shared/components/horizontal-menu/package.json +3 -0
  147. package/shared/components/input-field/autocomplete/index.d.ts +147 -0
  148. package/shared/components/input-field/autocomplete/package.json +3 -0
  149. package/shared/components/input-field/field-group/index.d.ts +8 -0
  150. package/shared/components/input-field/field-group/package.json +3 -0
  151. package/shared/components/input-field/fieldset/index.d.ts +8 -0
  152. package/shared/components/input-field/fieldset/package.json +3 -0
  153. package/shared/components/input-field/index.d.ts +28 -0
  154. package/shared/components/input-field/input-checkbox/index.d.ts +19 -0
  155. package/shared/components/input-field/input-checkbox/package.json +3 -0
  156. package/shared/components/input-field/input-cnpj/index.d.ts +28 -0
  157. package/shared/components/input-field/input-cnpj/package.json +3 -0
  158. package/shared/components/input-field/input-cpf/index.d.ts +28 -0
  159. package/shared/components/input-field/input-cpf/package.json +3 -0
  160. package/shared/components/input-field/input-currency/index.d.ts +11 -0
  161. package/shared/components/input-field/input-currency/package.json +3 -0
  162. package/shared/components/input-field/input-date/index.d.ts +11 -0
  163. package/shared/components/input-field/input-date/package.json +3 -0
  164. package/shared/components/input-field/input-datetime/index.d.ts +11 -0
  165. package/shared/components/input-field/input-datetime/package.json +3 -0
  166. package/shared/components/input-field/input-email/index.d.ts +10 -0
  167. package/shared/components/input-field/input-email/package.json +3 -0
  168. package/shared/components/input-field/input-month/index.d.ts +11 -0
  169. package/shared/components/input-field/input-month/package.json +3 -0
  170. package/shared/components/input-field/input-password/index.d.ts +45 -0
  171. package/shared/components/input-field/input-password/package.json +3 -0
  172. package/shared/components/input-field/input-radio/index.d.ts +22 -0
  173. package/shared/components/input-field/input-radio/package.json +3 -0
  174. package/shared/components/input-field/input-text/index.d.ts +10 -0
  175. package/shared/components/input-field/input-text/package.json +3 -0
  176. package/shared/components/input-field/input-time/index.d.ts +11 -0
  177. package/shared/components/input-field/input-time/package.json +3 -0
  178. package/shared/components/input-field/input-url/index.d.ts +23 -0
  179. package/shared/components/input-field/input-url/package.json +3 -0
  180. package/shared/components/input-field/package.json +3 -0
  181. package/shared/components/input-field/select/index.d.ts +20 -0
  182. package/shared/components/input-field/select/package.json +3 -0
  183. package/shared/components/input-field/switcher/index.d.ts +19 -0
  184. package/shared/components/input-field/switcher/package.json +3 -0
  185. package/shared/components/input-field/textarea/index.d.ts +13 -0
  186. package/shared/components/input-field/textarea/package.json +3 -0
  187. package/shared/components/on-this-page/index.d.ts +30 -0
  188. package/shared/components/on-this-page/package.json +3 -0
  189. package/shared/components/side-window/index.d.ts +42 -0
  190. package/shared/components/side-window/package.json +3 -0
  191. package/shared/components/snackbar/index.d.ts +52 -0
  192. package/shared/components/snackbar/package.json +3 -0
  193. package/shared/components/stepper/index.d.ts +32 -0
  194. package/shared/components/stepper/package.json +3 -0
  195. package/shared/components/vertical-menu/index.d.ts +14 -0
  196. package/shared/components/vertical-menu/package.json +3 -0
  197. package/shared/directives/index.d.ts +85 -0
  198. package/shared/directives/package.json +3 -0
  199. package/shared/utils/index.d.ts +17 -0
  200. package/shared/utils/package.json +3 -0
  201. package/shared/validators/index.d.ts +7 -0
  202. package/shared/validators/package.json +3 -0
  203. package/theme/animations.css +22 -0
  204. package/theme/code-viewer.css +3 -0
  205. package/theme/content.css +14 -0
  206. package/theme/form.css +72 -0
  207. package/theme/grid.css +67 -0
  208. package/theme/icons/font-awesome/LICENSE.txt +165 -0
  209. package/theme/icons/font-awesome/css/all.css +7970 -0
  210. package/theme/icons/font-awesome/css/all.min.css +9 -0
  211. package/theme/icons/font-awesome/css/brands.css +1537 -0
  212. package/theme/icons/font-awesome/css/brands.min.css +6 -0
  213. package/theme/icons/font-awesome/css/fontawesome.css +6372 -0
  214. package/theme/icons/font-awesome/css/fontawesome.min.css +9 -0
  215. package/theme/icons/font-awesome/css/regular.css +19 -0
  216. package/theme/icons/font-awesome/css/regular.min.css +6 -0
  217. package/theme/icons/font-awesome/css/solid.css +19 -0
  218. package/theme/icons/font-awesome/css/solid.min.css +6 -0
  219. package/theme/icons/font-awesome/css/svg-with-js.css +639 -0
  220. package/theme/icons/font-awesome/css/svg-with-js.min.css +6 -0
  221. package/theme/icons/font-awesome/css/v4-font-face.css +26 -0
  222. package/theme/icons/font-awesome/css/v4-font-face.min.css +6 -0
  223. package/theme/icons/font-awesome/css/v4-shims.css +2194 -0
  224. package/theme/icons/font-awesome/css/v4-shims.min.css +6 -0
  225. package/theme/icons/font-awesome/css/v5-font-face.css +22 -0
  226. package/theme/icons/font-awesome/css/v5-font-face.min.css +6 -0
  227. package/theme/icons/font-awesome/js/all.js +5982 -0
  228. package/theme/icons/font-awesome/js/all.min.js +6 -0
  229. package/theme/icons/font-awesome/js/brands.js +754 -0
  230. package/theme/icons/font-awesome/js/brands.min.js +6 -0
  231. package/theme/icons/font-awesome/js/conflict-detection.js +1138 -0
  232. package/theme/icons/font-awesome/js/conflict-detection.min.js +6 -0
  233. package/theme/icons/font-awesome/js/fontawesome.js +3126 -0
  234. package/theme/icons/font-awesome/js/fontawesome.min.js +6 -0
  235. package/theme/icons/font-awesome/js/regular.js +445 -0
  236. package/theme/icons/font-awesome/js/regular.min.js +6 -0
  237. package/theme/icons/font-awesome/js/solid.js +1672 -0
  238. package/theme/icons/font-awesome/js/solid.min.js +6 -0
  239. package/theme/icons/font-awesome/js/v4-shims.js +225 -0
  240. package/theme/icons/font-awesome/js/v4-shims.min.js +6 -0
  241. package/theme/icons/font-awesome/less/_animated.less +152 -0
  242. package/theme/icons/font-awesome/less/_bordered-pulled.less +20 -0
  243. package/theme/icons/font-awesome/less/_core.less +38 -0
  244. package/theme/icons/font-awesome/less/_fixed-width.less +7 -0
  245. package/theme/icons/font-awesome/less/_icons.less +9 -0
  246. package/theme/icons/font-awesome/less/_list.less +18 -0
  247. package/theme/icons/font-awesome/less/_mixins.less +78 -0
  248. package/theme/icons/font-awesome/less/_rotated-flipped.less +31 -0
  249. package/theme/icons/font-awesome/less/_screen-reader.less +14 -0
  250. package/theme/icons/font-awesome/less/_shims.less +2042 -0
  251. package/theme/icons/font-awesome/less/_sizing.less +19 -0
  252. package/theme/icons/font-awesome/less/_stacked.less +31 -0
  253. package/theme/icons/font-awesome/less/_variables.less +4972 -0
  254. package/theme/icons/font-awesome/less/brands.less +29 -0
  255. package/theme/icons/font-awesome/less/fontawesome.less +20 -0
  256. package/theme/icons/font-awesome/less/regular.less +25 -0
  257. package/theme/icons/font-awesome/less/solid.less +26 -0
  258. package/theme/icons/font-awesome/less/v4-shims.less +10 -0
  259. package/theme/icons/font-awesome/metadata/categories.yml +3060 -0
  260. package/theme/icons/font-awesome/metadata/icon-families.json +111762 -0
  261. package/theme/icons/font-awesome/metadata/icon-families.yml +51134 -0
  262. package/theme/icons/font-awesome/metadata/icons.json +92168 -0
  263. package/theme/icons/font-awesome/metadata/icons.yml +41337 -0
  264. package/theme/icons/font-awesome/metadata/shims.json +4052 -0
  265. package/theme/icons/font-awesome/metadata/shims.yml +646 -0
  266. package/theme/icons/font-awesome/metadata/sponsors.yml +1416 -0
  267. package/theme/icons/font-awesome/scss/_animated.scss +153 -0
  268. package/theme/icons/font-awesome/scss/_bordered-pulled.scss +20 -0
  269. package/theme/icons/font-awesome/scss/_core.scss +43 -0
  270. package/theme/icons/font-awesome/scss/_fixed-width.scss +7 -0
  271. package/theme/icons/font-awesome/scss/_functions.scss +57 -0
  272. package/theme/icons/font-awesome/scss/_icons.scss +10 -0
  273. package/theme/icons/font-awesome/scss/_list.scss +18 -0
  274. package/theme/icons/font-awesome/scss/_mixins.scss +75 -0
  275. package/theme/icons/font-awesome/scss/_rotated-flipped.scss +31 -0
  276. package/theme/icons/font-awesome/scss/_screen-reader.scss +14 -0
  277. package/theme/icons/font-awesome/scss/_shims.scss +2042 -0
  278. package/theme/icons/font-awesome/scss/_sizing.scss +16 -0
  279. package/theme/icons/font-awesome/scss/_stacked.scss +32 -0
  280. package/theme/icons/font-awesome/scss/_variables.scss +4971 -0
  281. package/theme/icons/font-awesome/scss/brands.scss +30 -0
  282. package/theme/icons/font-awesome/scss/fontawesome.scss +21 -0
  283. package/theme/icons/font-awesome/scss/regular.scss +26 -0
  284. package/theme/icons/font-awesome/scss/solid.scss +26 -0
  285. package/theme/icons/font-awesome/scss/v4-shims.scss +11 -0
  286. package/theme/icons/font-awesome/sprites/brands.svg +1424 -0
  287. package/theme/icons/font-awesome/sprites/regular.svg +497 -0
  288. package/theme/icons/font-awesome/sprites/solid.svg +4178 -0
  289. package/theme/icons/font-awesome/svgs/brands/42-group.svg +1 -0
  290. package/theme/icons/font-awesome/svgs/brands/500px.svg +1 -0
  291. package/theme/icons/font-awesome/svgs/brands/accessible-icon.svg +1 -0
  292. package/theme/icons/font-awesome/svgs/brands/accusoft.svg +1 -0
  293. package/theme/icons/font-awesome/svgs/brands/adn.svg +1 -0
  294. package/theme/icons/font-awesome/svgs/brands/adversal.svg +1 -0
  295. package/theme/icons/font-awesome/svgs/brands/affiliatetheme.svg +1 -0
  296. package/theme/icons/font-awesome/svgs/brands/airbnb.svg +1 -0
  297. package/theme/icons/font-awesome/svgs/brands/algolia.svg +1 -0
  298. package/theme/icons/font-awesome/svgs/brands/alipay.svg +1 -0
  299. package/theme/icons/font-awesome/svgs/brands/amazon-pay.svg +1 -0
  300. package/theme/icons/font-awesome/svgs/brands/amazon.svg +1 -0
  301. package/theme/icons/font-awesome/svgs/brands/amilia.svg +1 -0
  302. package/theme/icons/font-awesome/svgs/brands/android.svg +1 -0
  303. package/theme/icons/font-awesome/svgs/brands/angellist.svg +1 -0
  304. package/theme/icons/font-awesome/svgs/brands/angrycreative.svg +1 -0
  305. package/theme/icons/font-awesome/svgs/brands/angular.svg +1 -0
  306. package/theme/icons/font-awesome/svgs/brands/app-store-ios.svg +1 -0
  307. package/theme/icons/font-awesome/svgs/brands/app-store.svg +1 -0
  308. package/theme/icons/font-awesome/svgs/brands/apper.svg +1 -0
  309. package/theme/icons/font-awesome/svgs/brands/apple-pay.svg +1 -0
  310. package/theme/icons/font-awesome/svgs/brands/apple.svg +1 -0
  311. package/theme/icons/font-awesome/svgs/brands/artstation.svg +1 -0
  312. package/theme/icons/font-awesome/svgs/brands/asymmetrik.svg +1 -0
  313. package/theme/icons/font-awesome/svgs/brands/atlassian.svg +1 -0
  314. package/theme/icons/font-awesome/svgs/brands/audible.svg +1 -0
  315. package/theme/icons/font-awesome/svgs/brands/autoprefixer.svg +1 -0
  316. package/theme/icons/font-awesome/svgs/brands/avianex.svg +1 -0
  317. package/theme/icons/font-awesome/svgs/brands/aviato.svg +1 -0
  318. package/theme/icons/font-awesome/svgs/brands/aws.svg +1 -0
  319. package/theme/icons/font-awesome/svgs/brands/bandcamp.svg +1 -0
  320. package/theme/icons/font-awesome/svgs/brands/battle-net.svg +1 -0
  321. package/theme/icons/font-awesome/svgs/brands/behance.svg +1 -0
  322. package/theme/icons/font-awesome/svgs/brands/bilibili.svg +1 -0
  323. package/theme/icons/font-awesome/svgs/brands/bimobject.svg +1 -0
  324. package/theme/icons/font-awesome/svgs/brands/bitbucket.svg +1 -0
  325. package/theme/icons/font-awesome/svgs/brands/bitcoin.svg +1 -0
  326. package/theme/icons/font-awesome/svgs/brands/bity.svg +1 -0
  327. package/theme/icons/font-awesome/svgs/brands/black-tie.svg +1 -0
  328. package/theme/icons/font-awesome/svgs/brands/blackberry.svg +1 -0
  329. package/theme/icons/font-awesome/svgs/brands/blogger-b.svg +1 -0
  330. package/theme/icons/font-awesome/svgs/brands/blogger.svg +1 -0
  331. package/theme/icons/font-awesome/svgs/brands/bluetooth-b.svg +1 -0
  332. package/theme/icons/font-awesome/svgs/brands/bluetooth.svg +1 -0
  333. package/theme/icons/font-awesome/svgs/brands/bootstrap.svg +1 -0
  334. package/theme/icons/font-awesome/svgs/brands/bots.svg +1 -0
  335. package/theme/icons/font-awesome/svgs/brands/btc.svg +1 -0
  336. package/theme/icons/font-awesome/svgs/brands/buffer.svg +1 -0
  337. package/theme/icons/font-awesome/svgs/brands/buromobelexperte.svg +1 -0
  338. package/theme/icons/font-awesome/svgs/brands/buy-n-large.svg +1 -0
  339. package/theme/icons/font-awesome/svgs/brands/buysellads.svg +1 -0
  340. package/theme/icons/font-awesome/svgs/brands/canadian-maple-leaf.svg +1 -0
  341. package/theme/icons/font-awesome/svgs/brands/cc-amazon-pay.svg +1 -0
  342. package/theme/icons/font-awesome/svgs/brands/cc-amex.svg +1 -0
  343. package/theme/icons/font-awesome/svgs/brands/cc-apple-pay.svg +1 -0
  344. package/theme/icons/font-awesome/svgs/brands/cc-diners-club.svg +1 -0
  345. package/theme/icons/font-awesome/svgs/brands/cc-discover.svg +1 -0
  346. package/theme/icons/font-awesome/svgs/brands/cc-jcb.svg +1 -0
  347. package/theme/icons/font-awesome/svgs/brands/cc-mastercard.svg +1 -0
  348. package/theme/icons/font-awesome/svgs/brands/cc-paypal.svg +1 -0
  349. package/theme/icons/font-awesome/svgs/brands/cc-stripe.svg +1 -0
  350. package/theme/icons/font-awesome/svgs/brands/cc-visa.svg +1 -0
  351. package/theme/icons/font-awesome/svgs/brands/centercode.svg +1 -0
  352. package/theme/icons/font-awesome/svgs/brands/centos.svg +1 -0
  353. package/theme/icons/font-awesome/svgs/brands/chrome.svg +1 -0
  354. package/theme/icons/font-awesome/svgs/brands/chromecast.svg +1 -0
  355. package/theme/icons/font-awesome/svgs/brands/cloudflare.svg +1 -0
  356. package/theme/icons/font-awesome/svgs/brands/cloudscale.svg +1 -0
  357. package/theme/icons/font-awesome/svgs/brands/cloudsmith.svg +1 -0
  358. package/theme/icons/font-awesome/svgs/brands/cloudversify.svg +1 -0
  359. package/theme/icons/font-awesome/svgs/brands/cmplid.svg +1 -0
  360. package/theme/icons/font-awesome/svgs/brands/codepen.svg +1 -0
  361. package/theme/icons/font-awesome/svgs/brands/codiepie.svg +1 -0
  362. package/theme/icons/font-awesome/svgs/brands/confluence.svg +1 -0
  363. package/theme/icons/font-awesome/svgs/brands/connectdevelop.svg +1 -0
  364. package/theme/icons/font-awesome/svgs/brands/contao.svg +1 -0
  365. package/theme/icons/font-awesome/svgs/brands/cotton-bureau.svg +1 -0
  366. package/theme/icons/font-awesome/svgs/brands/cpanel.svg +1 -0
  367. package/theme/icons/font-awesome/svgs/brands/creative-commons-by.svg +1 -0
  368. package/theme/icons/font-awesome/svgs/brands/creative-commons-nc-eu.svg +1 -0
  369. package/theme/icons/font-awesome/svgs/brands/creative-commons-nc-jp.svg +1 -0
  370. package/theme/icons/font-awesome/svgs/brands/creative-commons-nc.svg +1 -0
  371. package/theme/icons/font-awesome/svgs/brands/creative-commons-nd.svg +1 -0
  372. package/theme/icons/font-awesome/svgs/brands/creative-commons-pd-alt.svg +1 -0
  373. package/theme/icons/font-awesome/svgs/brands/creative-commons-pd.svg +1 -0
  374. package/theme/icons/font-awesome/svgs/brands/creative-commons-remix.svg +1 -0
  375. package/theme/icons/font-awesome/svgs/brands/creative-commons-sa.svg +1 -0
  376. package/theme/icons/font-awesome/svgs/brands/creative-commons-sampling-plus.svg +1 -0
  377. package/theme/icons/font-awesome/svgs/brands/creative-commons-sampling.svg +1 -0
  378. package/theme/icons/font-awesome/svgs/brands/creative-commons-share.svg +1 -0
  379. package/theme/icons/font-awesome/svgs/brands/creative-commons-zero.svg +1 -0
  380. package/theme/icons/font-awesome/svgs/brands/creative-commons.svg +1 -0
  381. package/theme/icons/font-awesome/svgs/brands/critical-role.svg +1 -0
  382. package/theme/icons/font-awesome/svgs/brands/css3-alt.svg +1 -0
  383. package/theme/icons/font-awesome/svgs/brands/css3.svg +1 -0
  384. package/theme/icons/font-awesome/svgs/brands/cuttlefish.svg +1 -0
  385. package/theme/icons/font-awesome/svgs/brands/d-and-d-beyond.svg +1 -0
  386. package/theme/icons/font-awesome/svgs/brands/d-and-d.svg +1 -0
  387. package/theme/icons/font-awesome/svgs/brands/dailymotion.svg +1 -0
  388. package/theme/icons/font-awesome/svgs/brands/dashcube.svg +1 -0
  389. package/theme/icons/font-awesome/svgs/brands/debian.svg +1 -0
  390. package/theme/icons/font-awesome/svgs/brands/deezer.svg +1 -0
  391. package/theme/icons/font-awesome/svgs/brands/delicious.svg +1 -0
  392. package/theme/icons/font-awesome/svgs/brands/deploydog.svg +1 -0
  393. package/theme/icons/font-awesome/svgs/brands/deskpro.svg +1 -0
  394. package/theme/icons/font-awesome/svgs/brands/dev.svg +1 -0
  395. package/theme/icons/font-awesome/svgs/brands/deviantart.svg +1 -0
  396. package/theme/icons/font-awesome/svgs/brands/dhl.svg +1 -0
  397. package/theme/icons/font-awesome/svgs/brands/diaspora.svg +1 -0
  398. package/theme/icons/font-awesome/svgs/brands/digg.svg +1 -0
  399. package/theme/icons/font-awesome/svgs/brands/digital-ocean.svg +1 -0
  400. package/theme/icons/font-awesome/svgs/brands/discord.svg +1 -0
  401. package/theme/icons/font-awesome/svgs/brands/discourse.svg +1 -0
  402. package/theme/icons/font-awesome/svgs/brands/dochub.svg +1 -0
  403. package/theme/icons/font-awesome/svgs/brands/docker.svg +1 -0
  404. package/theme/icons/font-awesome/svgs/brands/draft2digital.svg +1 -0
  405. package/theme/icons/font-awesome/svgs/brands/dribbble.svg +1 -0
  406. package/theme/icons/font-awesome/svgs/brands/dropbox.svg +1 -0
  407. package/theme/icons/font-awesome/svgs/brands/drupal.svg +1 -0
  408. package/theme/icons/font-awesome/svgs/brands/dyalog.svg +1 -0
  409. package/theme/icons/font-awesome/svgs/brands/earlybirds.svg +1 -0
  410. package/theme/icons/font-awesome/svgs/brands/ebay.svg +1 -0
  411. package/theme/icons/font-awesome/svgs/brands/edge-legacy.svg +1 -0
  412. package/theme/icons/font-awesome/svgs/brands/edge.svg +1 -0
  413. package/theme/icons/font-awesome/svgs/brands/elementor.svg +1 -0
  414. package/theme/icons/font-awesome/svgs/brands/ello.svg +1 -0
  415. package/theme/icons/font-awesome/svgs/brands/ember.svg +1 -0
  416. package/theme/icons/font-awesome/svgs/brands/empire.svg +1 -0
  417. package/theme/icons/font-awesome/svgs/brands/envira.svg +1 -0
  418. package/theme/icons/font-awesome/svgs/brands/erlang.svg +1 -0
  419. package/theme/icons/font-awesome/svgs/brands/ethereum.svg +1 -0
  420. package/theme/icons/font-awesome/svgs/brands/etsy.svg +1 -0
  421. package/theme/icons/font-awesome/svgs/brands/evernote.svg +1 -0
  422. package/theme/icons/font-awesome/svgs/brands/expeditedssl.svg +1 -0
  423. package/theme/icons/font-awesome/svgs/brands/facebook-f.svg +1 -0
  424. package/theme/icons/font-awesome/svgs/brands/facebook-messenger.svg +1 -0
  425. package/theme/icons/font-awesome/svgs/brands/facebook.svg +1 -0
  426. package/theme/icons/font-awesome/svgs/brands/fantasy-flight-games.svg +1 -0
  427. package/theme/icons/font-awesome/svgs/brands/fedex.svg +1 -0
  428. package/theme/icons/font-awesome/svgs/brands/fedora.svg +1 -0
  429. package/theme/icons/font-awesome/svgs/brands/figma.svg +1 -0
  430. package/theme/icons/font-awesome/svgs/brands/firefox-browser.svg +1 -0
  431. package/theme/icons/font-awesome/svgs/brands/firefox.svg +1 -0
  432. package/theme/icons/font-awesome/svgs/brands/first-order-alt.svg +1 -0
  433. package/theme/icons/font-awesome/svgs/brands/first-order.svg +1 -0
  434. package/theme/icons/font-awesome/svgs/brands/firstdraft.svg +1 -0
  435. package/theme/icons/font-awesome/svgs/brands/flickr.svg +1 -0
  436. package/theme/icons/font-awesome/svgs/brands/flipboard.svg +1 -0
  437. package/theme/icons/font-awesome/svgs/brands/fly.svg +1 -0
  438. package/theme/icons/font-awesome/svgs/brands/font-awesome.svg +1 -0
  439. package/theme/icons/font-awesome/svgs/brands/fonticons-fi.svg +1 -0
  440. package/theme/icons/font-awesome/svgs/brands/fonticons.svg +1 -0
  441. package/theme/icons/font-awesome/svgs/brands/fort-awesome-alt.svg +1 -0
  442. package/theme/icons/font-awesome/svgs/brands/fort-awesome.svg +1 -0
  443. package/theme/icons/font-awesome/svgs/brands/forumbee.svg +1 -0
  444. package/theme/icons/font-awesome/svgs/brands/foursquare.svg +1 -0
  445. package/theme/icons/font-awesome/svgs/brands/free-code-camp.svg +1 -0
  446. package/theme/icons/font-awesome/svgs/brands/freebsd.svg +1 -0
  447. package/theme/icons/font-awesome/svgs/brands/fulcrum.svg +1 -0
  448. package/theme/icons/font-awesome/svgs/brands/galactic-republic.svg +1 -0
  449. package/theme/icons/font-awesome/svgs/brands/galactic-senate.svg +1 -0
  450. package/theme/icons/font-awesome/svgs/brands/get-pocket.svg +1 -0
  451. package/theme/icons/font-awesome/svgs/brands/gg-circle.svg +1 -0
  452. package/theme/icons/font-awesome/svgs/brands/gg.svg +1 -0
  453. package/theme/icons/font-awesome/svgs/brands/git-alt.svg +1 -0
  454. package/theme/icons/font-awesome/svgs/brands/git.svg +1 -0
  455. package/theme/icons/font-awesome/svgs/brands/github-alt.svg +1 -0
  456. package/theme/icons/font-awesome/svgs/brands/github.svg +1 -0
  457. package/theme/icons/font-awesome/svgs/brands/gitkraken.svg +1 -0
  458. package/theme/icons/font-awesome/svgs/brands/gitlab.svg +1 -0
  459. package/theme/icons/font-awesome/svgs/brands/gitter.svg +1 -0
  460. package/theme/icons/font-awesome/svgs/brands/glide-g.svg +1 -0
  461. package/theme/icons/font-awesome/svgs/brands/glide.svg +1 -0
  462. package/theme/icons/font-awesome/svgs/brands/gofore.svg +1 -0
  463. package/theme/icons/font-awesome/svgs/brands/golang.svg +1 -0
  464. package/theme/icons/font-awesome/svgs/brands/goodreads-g.svg +1 -0
  465. package/theme/icons/font-awesome/svgs/brands/goodreads.svg +1 -0
  466. package/theme/icons/font-awesome/svgs/brands/google-drive.svg +1 -0
  467. package/theme/icons/font-awesome/svgs/brands/google-pay.svg +1 -0
  468. package/theme/icons/font-awesome/svgs/brands/google-play.svg +1 -0
  469. package/theme/icons/font-awesome/svgs/brands/google-plus-g.svg +1 -0
  470. package/theme/icons/font-awesome/svgs/brands/google-plus.svg +1 -0
  471. package/theme/icons/font-awesome/svgs/brands/google-wallet.svg +1 -0
  472. package/theme/icons/font-awesome/svgs/brands/google.svg +1 -0
  473. package/theme/icons/font-awesome/svgs/brands/gratipay.svg +1 -0
  474. package/theme/icons/font-awesome/svgs/brands/grav.svg +1 -0
  475. package/theme/icons/font-awesome/svgs/brands/gripfire.svg +1 -0
  476. package/theme/icons/font-awesome/svgs/brands/grunt.svg +1 -0
  477. package/theme/icons/font-awesome/svgs/brands/guilded.svg +1 -0
  478. package/theme/icons/font-awesome/svgs/brands/gulp.svg +1 -0
  479. package/theme/icons/font-awesome/svgs/brands/hacker-news.svg +1 -0
  480. package/theme/icons/font-awesome/svgs/brands/hackerrank.svg +1 -0
  481. package/theme/icons/font-awesome/svgs/brands/hashnode.svg +1 -0
  482. package/theme/icons/font-awesome/svgs/brands/hips.svg +1 -0
  483. package/theme/icons/font-awesome/svgs/brands/hire-a-helper.svg +1 -0
  484. package/theme/icons/font-awesome/svgs/brands/hive.svg +1 -0
  485. package/theme/icons/font-awesome/svgs/brands/hooli.svg +1 -0
  486. package/theme/icons/font-awesome/svgs/brands/hornbill.svg +1 -0
  487. package/theme/icons/font-awesome/svgs/brands/hotjar.svg +1 -0
  488. package/theme/icons/font-awesome/svgs/brands/houzz.svg +1 -0
  489. package/theme/icons/font-awesome/svgs/brands/html5.svg +1 -0
  490. package/theme/icons/font-awesome/svgs/brands/hubspot.svg +1 -0
  491. package/theme/icons/font-awesome/svgs/brands/ideal.svg +1 -0
  492. package/theme/icons/font-awesome/svgs/brands/imdb.svg +1 -0
  493. package/theme/icons/font-awesome/svgs/brands/instagram.svg +1 -0
  494. package/theme/icons/font-awesome/svgs/brands/instalod.svg +1 -0
  495. package/theme/icons/font-awesome/svgs/brands/intercom.svg +1 -0
  496. package/theme/icons/font-awesome/svgs/brands/internet-explorer.svg +1 -0
  497. package/theme/icons/font-awesome/svgs/brands/invision.svg +1 -0
  498. package/theme/icons/font-awesome/svgs/brands/ioxhost.svg +1 -0
  499. package/theme/icons/font-awesome/svgs/brands/itch-io.svg +1 -0
  500. package/theme/icons/font-awesome/svgs/brands/itunes-note.svg +1 -0
  501. package/theme/icons/font-awesome/svgs/brands/itunes.svg +1 -0
  502. package/theme/icons/font-awesome/svgs/brands/java.svg +1 -0
  503. package/theme/icons/font-awesome/svgs/brands/jedi-order.svg +1 -0
  504. package/theme/icons/font-awesome/svgs/brands/jenkins.svg +1 -0
  505. package/theme/icons/font-awesome/svgs/brands/jira.svg +1 -0
  506. package/theme/icons/font-awesome/svgs/brands/joget.svg +1 -0
  507. package/theme/icons/font-awesome/svgs/brands/joomla.svg +1 -0
  508. package/theme/icons/font-awesome/svgs/brands/js.svg +1 -0
  509. package/theme/icons/font-awesome/svgs/brands/jsfiddle.svg +1 -0
  510. package/theme/icons/font-awesome/svgs/brands/kaggle.svg +1 -0
  511. package/theme/icons/font-awesome/svgs/brands/keybase.svg +1 -0
  512. package/theme/icons/font-awesome/svgs/brands/keycdn.svg +1 -0
  513. package/theme/icons/font-awesome/svgs/brands/kickstarter-k.svg +1 -0
  514. package/theme/icons/font-awesome/svgs/brands/kickstarter.svg +1 -0
  515. package/theme/icons/font-awesome/svgs/brands/korvue.svg +1 -0
  516. package/theme/icons/font-awesome/svgs/brands/laravel.svg +1 -0
  517. package/theme/icons/font-awesome/svgs/brands/lastfm.svg +1 -0
  518. package/theme/icons/font-awesome/svgs/brands/leanpub.svg +1 -0
  519. package/theme/icons/font-awesome/svgs/brands/less.svg +1 -0
  520. package/theme/icons/font-awesome/svgs/brands/line.svg +1 -0
  521. package/theme/icons/font-awesome/svgs/brands/linkedin-in.svg +1 -0
  522. package/theme/icons/font-awesome/svgs/brands/linkedin.svg +1 -0
  523. package/theme/icons/font-awesome/svgs/brands/linode.svg +1 -0
  524. package/theme/icons/font-awesome/svgs/brands/linux.svg +1 -0
  525. package/theme/icons/font-awesome/svgs/brands/lyft.svg +1 -0
  526. package/theme/icons/font-awesome/svgs/brands/magento.svg +1 -0
  527. package/theme/icons/font-awesome/svgs/brands/mailchimp.svg +1 -0
  528. package/theme/icons/font-awesome/svgs/brands/mandalorian.svg +1 -0
  529. package/theme/icons/font-awesome/svgs/brands/markdown.svg +1 -0
  530. package/theme/icons/font-awesome/svgs/brands/mastodon.svg +1 -0
  531. package/theme/icons/font-awesome/svgs/brands/maxcdn.svg +1 -0
  532. package/theme/icons/font-awesome/svgs/brands/mdb.svg +1 -0
  533. package/theme/icons/font-awesome/svgs/brands/medapps.svg +1 -0
  534. package/theme/icons/font-awesome/svgs/brands/medium.svg +1 -0
  535. package/theme/icons/font-awesome/svgs/brands/medrt.svg +1 -0
  536. package/theme/icons/font-awesome/svgs/brands/meetup.svg +1 -0
  537. package/theme/icons/font-awesome/svgs/brands/megaport.svg +1 -0
  538. package/theme/icons/font-awesome/svgs/brands/mendeley.svg +1 -0
  539. package/theme/icons/font-awesome/svgs/brands/meta.svg +1 -0
  540. package/theme/icons/font-awesome/svgs/brands/microblog.svg +1 -0
  541. package/theme/icons/font-awesome/svgs/brands/microsoft.svg +1 -0
  542. package/theme/icons/font-awesome/svgs/brands/mix.svg +1 -0
  543. package/theme/icons/font-awesome/svgs/brands/mixcloud.svg +1 -0
  544. package/theme/icons/font-awesome/svgs/brands/mixer.svg +1 -0
  545. package/theme/icons/font-awesome/svgs/brands/mizuni.svg +1 -0
  546. package/theme/icons/font-awesome/svgs/brands/modx.svg +1 -0
  547. package/theme/icons/font-awesome/svgs/brands/monero.svg +1 -0
  548. package/theme/icons/font-awesome/svgs/brands/napster.svg +1 -0
  549. package/theme/icons/font-awesome/svgs/brands/neos.svg +1 -0
  550. package/theme/icons/font-awesome/svgs/brands/nfc-directional.svg +1 -0
  551. package/theme/icons/font-awesome/svgs/brands/nfc-symbol.svg +1 -0
  552. package/theme/icons/font-awesome/svgs/brands/nimblr.svg +1 -0
  553. package/theme/icons/font-awesome/svgs/brands/node-js.svg +1 -0
  554. package/theme/icons/font-awesome/svgs/brands/node.svg +1 -0
  555. package/theme/icons/font-awesome/svgs/brands/npm.svg +1 -0
  556. package/theme/icons/font-awesome/svgs/brands/ns8.svg +1 -0
  557. package/theme/icons/font-awesome/svgs/brands/nutritionix.svg +1 -0
  558. package/theme/icons/font-awesome/svgs/brands/octopus-deploy.svg +1 -0
  559. package/theme/icons/font-awesome/svgs/brands/odnoklassniki.svg +1 -0
  560. package/theme/icons/font-awesome/svgs/brands/odysee.svg +1 -0
  561. package/theme/icons/font-awesome/svgs/brands/old-republic.svg +1 -0
  562. package/theme/icons/font-awesome/svgs/brands/opencart.svg +1 -0
  563. package/theme/icons/font-awesome/svgs/brands/openid.svg +1 -0
  564. package/theme/icons/font-awesome/svgs/brands/opera.svg +1 -0
  565. package/theme/icons/font-awesome/svgs/brands/optin-monster.svg +1 -0
  566. package/theme/icons/font-awesome/svgs/brands/orcid.svg +1 -0
  567. package/theme/icons/font-awesome/svgs/brands/osi.svg +1 -0
  568. package/theme/icons/font-awesome/svgs/brands/padlet.svg +1 -0
  569. package/theme/icons/font-awesome/svgs/brands/page4.svg +1 -0
  570. package/theme/icons/font-awesome/svgs/brands/pagelines.svg +1 -0
  571. package/theme/icons/font-awesome/svgs/brands/palfed.svg +1 -0
  572. package/theme/icons/font-awesome/svgs/brands/patreon.svg +1 -0
  573. package/theme/icons/font-awesome/svgs/brands/paypal.svg +1 -0
  574. package/theme/icons/font-awesome/svgs/brands/perbyte.svg +1 -0
  575. package/theme/icons/font-awesome/svgs/brands/periscope.svg +1 -0
  576. package/theme/icons/font-awesome/svgs/brands/phabricator.svg +1 -0
  577. package/theme/icons/font-awesome/svgs/brands/phoenix-framework.svg +1 -0
  578. package/theme/icons/font-awesome/svgs/brands/phoenix-squadron.svg +1 -0
  579. package/theme/icons/font-awesome/svgs/brands/php.svg +1 -0
  580. package/theme/icons/font-awesome/svgs/brands/pied-piper-alt.svg +1 -0
  581. package/theme/icons/font-awesome/svgs/brands/pied-piper-hat.svg +1 -0
  582. package/theme/icons/font-awesome/svgs/brands/pied-piper-pp.svg +1 -0
  583. package/theme/icons/font-awesome/svgs/brands/pied-piper.svg +1 -0
  584. package/theme/icons/font-awesome/svgs/brands/pinterest-p.svg +1 -0
  585. package/theme/icons/font-awesome/svgs/brands/pinterest.svg +1 -0
  586. package/theme/icons/font-awesome/svgs/brands/pix.svg +1 -0
  587. package/theme/icons/font-awesome/svgs/brands/playstation.svg +1 -0
  588. package/theme/icons/font-awesome/svgs/brands/product-hunt.svg +1 -0
  589. package/theme/icons/font-awesome/svgs/brands/pushed.svg +1 -0
  590. package/theme/icons/font-awesome/svgs/brands/python.svg +1 -0
  591. package/theme/icons/font-awesome/svgs/brands/qq.svg +1 -0
  592. package/theme/icons/font-awesome/svgs/brands/quinscape.svg +1 -0
  593. package/theme/icons/font-awesome/svgs/brands/quora.svg +1 -0
  594. package/theme/icons/font-awesome/svgs/brands/r-project.svg +1 -0
  595. package/theme/icons/font-awesome/svgs/brands/raspberry-pi.svg +1 -0
  596. package/theme/icons/font-awesome/svgs/brands/ravelry.svg +1 -0
  597. package/theme/icons/font-awesome/svgs/brands/react.svg +1 -0
  598. package/theme/icons/font-awesome/svgs/brands/reacteurope.svg +1 -0
  599. package/theme/icons/font-awesome/svgs/brands/readme.svg +1 -0
  600. package/theme/icons/font-awesome/svgs/brands/rebel.svg +1 -0
  601. package/theme/icons/font-awesome/svgs/brands/red-river.svg +1 -0
  602. package/theme/icons/font-awesome/svgs/brands/reddit-alien.svg +1 -0
  603. package/theme/icons/font-awesome/svgs/brands/reddit.svg +1 -0
  604. package/theme/icons/font-awesome/svgs/brands/redhat.svg +1 -0
  605. package/theme/icons/font-awesome/svgs/brands/renren.svg +1 -0
  606. package/theme/icons/font-awesome/svgs/brands/replyd.svg +1 -0
  607. package/theme/icons/font-awesome/svgs/brands/researchgate.svg +1 -0
  608. package/theme/icons/font-awesome/svgs/brands/resolving.svg +1 -0
  609. package/theme/icons/font-awesome/svgs/brands/rev.svg +1 -0
  610. package/theme/icons/font-awesome/svgs/brands/rocketchat.svg +1 -0
  611. package/theme/icons/font-awesome/svgs/brands/rockrms.svg +1 -0
  612. package/theme/icons/font-awesome/svgs/brands/rust.svg +1 -0
  613. package/theme/icons/font-awesome/svgs/brands/safari.svg +1 -0
  614. package/theme/icons/font-awesome/svgs/brands/salesforce.svg +1 -0
  615. package/theme/icons/font-awesome/svgs/brands/sass.svg +1 -0
  616. package/theme/icons/font-awesome/svgs/brands/schlix.svg +1 -0
  617. package/theme/icons/font-awesome/svgs/brands/screenpal.svg +1 -0
  618. package/theme/icons/font-awesome/svgs/brands/scribd.svg +1 -0
  619. package/theme/icons/font-awesome/svgs/brands/searchengin.svg +1 -0
  620. package/theme/icons/font-awesome/svgs/brands/sellcast.svg +1 -0
  621. package/theme/icons/font-awesome/svgs/brands/sellsy.svg +1 -0
  622. package/theme/icons/font-awesome/svgs/brands/servicestack.svg +1 -0
  623. package/theme/icons/font-awesome/svgs/brands/shirtsinbulk.svg +1 -0
  624. package/theme/icons/font-awesome/svgs/brands/shopify.svg +1 -0
  625. package/theme/icons/font-awesome/svgs/brands/shopware.svg +1 -0
  626. package/theme/icons/font-awesome/svgs/brands/simplybuilt.svg +1 -0
  627. package/theme/icons/font-awesome/svgs/brands/sistrix.svg +1 -0
  628. package/theme/icons/font-awesome/svgs/brands/sith.svg +1 -0
  629. package/theme/icons/font-awesome/svgs/brands/sitrox.svg +1 -0
  630. package/theme/icons/font-awesome/svgs/brands/sketch.svg +1 -0
  631. package/theme/icons/font-awesome/svgs/brands/skyatlas.svg +1 -0
  632. package/theme/icons/font-awesome/svgs/brands/skype.svg +1 -0
  633. package/theme/icons/font-awesome/svgs/brands/slack.svg +1 -0
  634. package/theme/icons/font-awesome/svgs/brands/slideshare.svg +1 -0
  635. package/theme/icons/font-awesome/svgs/brands/snapchat.svg +1 -0
  636. package/theme/icons/font-awesome/svgs/brands/soundcloud.svg +1 -0
  637. package/theme/icons/font-awesome/svgs/brands/sourcetree.svg +1 -0
  638. package/theme/icons/font-awesome/svgs/brands/space-awesome.svg +1 -0
  639. package/theme/icons/font-awesome/svgs/brands/speakap.svg +1 -0
  640. package/theme/icons/font-awesome/svgs/brands/speaker-deck.svg +1 -0
  641. package/theme/icons/font-awesome/svgs/brands/spotify.svg +1 -0
  642. package/theme/icons/font-awesome/svgs/brands/square-behance.svg +1 -0
  643. package/theme/icons/font-awesome/svgs/brands/square-dribbble.svg +1 -0
  644. package/theme/icons/font-awesome/svgs/brands/square-facebook.svg +1 -0
  645. package/theme/icons/font-awesome/svgs/brands/square-font-awesome-stroke.svg +1 -0
  646. package/theme/icons/font-awesome/svgs/brands/square-font-awesome.svg +1 -0
  647. package/theme/icons/font-awesome/svgs/brands/square-git.svg +1 -0
  648. package/theme/icons/font-awesome/svgs/brands/square-github.svg +1 -0
  649. package/theme/icons/font-awesome/svgs/brands/square-gitlab.svg +1 -0
  650. package/theme/icons/font-awesome/svgs/brands/square-google-plus.svg +1 -0
  651. package/theme/icons/font-awesome/svgs/brands/square-hacker-news.svg +1 -0
  652. package/theme/icons/font-awesome/svgs/brands/square-instagram.svg +1 -0
  653. package/theme/icons/font-awesome/svgs/brands/square-js.svg +1 -0
  654. package/theme/icons/font-awesome/svgs/brands/square-lastfm.svg +1 -0
  655. package/theme/icons/font-awesome/svgs/brands/square-odnoklassniki.svg +1 -0
  656. package/theme/icons/font-awesome/svgs/brands/square-pied-piper.svg +1 -0
  657. package/theme/icons/font-awesome/svgs/brands/square-pinterest.svg +1 -0
  658. package/theme/icons/font-awesome/svgs/brands/square-reddit.svg +1 -0
  659. package/theme/icons/font-awesome/svgs/brands/square-snapchat.svg +1 -0
  660. package/theme/icons/font-awesome/svgs/brands/square-steam.svg +1 -0
  661. package/theme/icons/font-awesome/svgs/brands/square-threads.svg +1 -0
  662. package/theme/icons/font-awesome/svgs/brands/square-tumblr.svg +1 -0
  663. package/theme/icons/font-awesome/svgs/brands/square-twitter.svg +1 -0
  664. package/theme/icons/font-awesome/svgs/brands/square-viadeo.svg +1 -0
  665. package/theme/icons/font-awesome/svgs/brands/square-vimeo.svg +1 -0
  666. package/theme/icons/font-awesome/svgs/brands/square-whatsapp.svg +1 -0
  667. package/theme/icons/font-awesome/svgs/brands/square-x-twitter.svg +1 -0
  668. package/theme/icons/font-awesome/svgs/brands/square-xing.svg +1 -0
  669. package/theme/icons/font-awesome/svgs/brands/square-youtube.svg +1 -0
  670. package/theme/icons/font-awesome/svgs/brands/squarespace.svg +1 -0
  671. package/theme/icons/font-awesome/svgs/brands/stack-exchange.svg +1 -0
  672. package/theme/icons/font-awesome/svgs/brands/stack-overflow.svg +1 -0
  673. package/theme/icons/font-awesome/svgs/brands/stackpath.svg +1 -0
  674. package/theme/icons/font-awesome/svgs/brands/staylinked.svg +1 -0
  675. package/theme/icons/font-awesome/svgs/brands/steam-symbol.svg +1 -0
  676. package/theme/icons/font-awesome/svgs/brands/steam.svg +1 -0
  677. package/theme/icons/font-awesome/svgs/brands/sticker-mule.svg +1 -0
  678. package/theme/icons/font-awesome/svgs/brands/strava.svg +1 -0
  679. package/theme/icons/font-awesome/svgs/brands/stripe-s.svg +1 -0
  680. package/theme/icons/font-awesome/svgs/brands/stripe.svg +1 -0
  681. package/theme/icons/font-awesome/svgs/brands/stubber.svg +1 -0
  682. package/theme/icons/font-awesome/svgs/brands/studiovinari.svg +1 -0
  683. package/theme/icons/font-awesome/svgs/brands/stumbleupon-circle.svg +1 -0
  684. package/theme/icons/font-awesome/svgs/brands/stumbleupon.svg +1 -0
  685. package/theme/icons/font-awesome/svgs/brands/superpowers.svg +1 -0
  686. package/theme/icons/font-awesome/svgs/brands/supple.svg +1 -0
  687. package/theme/icons/font-awesome/svgs/brands/suse.svg +1 -0
  688. package/theme/icons/font-awesome/svgs/brands/swift.svg +1 -0
  689. package/theme/icons/font-awesome/svgs/brands/symfony.svg +1 -0
  690. package/theme/icons/font-awesome/svgs/brands/teamspeak.svg +1 -0
  691. package/theme/icons/font-awesome/svgs/brands/telegram.svg +1 -0
  692. package/theme/icons/font-awesome/svgs/brands/tencent-weibo.svg +1 -0
  693. package/theme/icons/font-awesome/svgs/brands/the-red-yeti.svg +1 -0
  694. package/theme/icons/font-awesome/svgs/brands/themeco.svg +1 -0
  695. package/theme/icons/font-awesome/svgs/brands/themeisle.svg +1 -0
  696. package/theme/icons/font-awesome/svgs/brands/think-peaks.svg +1 -0
  697. package/theme/icons/font-awesome/svgs/brands/threads.svg +1 -0
  698. package/theme/icons/font-awesome/svgs/brands/tiktok.svg +1 -0
  699. package/theme/icons/font-awesome/svgs/brands/trade-federation.svg +1 -0
  700. package/theme/icons/font-awesome/svgs/brands/trello.svg +1 -0
  701. package/theme/icons/font-awesome/svgs/brands/tumblr.svg +1 -0
  702. package/theme/icons/font-awesome/svgs/brands/twitch.svg +1 -0
  703. package/theme/icons/font-awesome/svgs/brands/twitter.svg +1 -0
  704. package/theme/icons/font-awesome/svgs/brands/typo3.svg +1 -0
  705. package/theme/icons/font-awesome/svgs/brands/uber.svg +1 -0
  706. package/theme/icons/font-awesome/svgs/brands/ubuntu.svg +1 -0
  707. package/theme/icons/font-awesome/svgs/brands/uikit.svg +1 -0
  708. package/theme/icons/font-awesome/svgs/brands/umbraco.svg +1 -0
  709. package/theme/icons/font-awesome/svgs/brands/uncharted.svg +1 -0
  710. package/theme/icons/font-awesome/svgs/brands/uniregistry.svg +1 -0
  711. package/theme/icons/font-awesome/svgs/brands/unity.svg +1 -0
  712. package/theme/icons/font-awesome/svgs/brands/unsplash.svg +1 -0
  713. package/theme/icons/font-awesome/svgs/brands/untappd.svg +1 -0
  714. package/theme/icons/font-awesome/svgs/brands/ups.svg +1 -0
  715. package/theme/icons/font-awesome/svgs/brands/usb.svg +1 -0
  716. package/theme/icons/font-awesome/svgs/brands/usps.svg +1 -0
  717. package/theme/icons/font-awesome/svgs/brands/ussunnah.svg +1 -0
  718. package/theme/icons/font-awesome/svgs/brands/vaadin.svg +1 -0
  719. package/theme/icons/font-awesome/svgs/brands/viacoin.svg +1 -0
  720. package/theme/icons/font-awesome/svgs/brands/viadeo.svg +1 -0
  721. package/theme/icons/font-awesome/svgs/brands/viber.svg +1 -0
  722. package/theme/icons/font-awesome/svgs/brands/vimeo-v.svg +1 -0
  723. package/theme/icons/font-awesome/svgs/brands/vimeo.svg +1 -0
  724. package/theme/icons/font-awesome/svgs/brands/vine.svg +1 -0
  725. package/theme/icons/font-awesome/svgs/brands/vk.svg +1 -0
  726. package/theme/icons/font-awesome/svgs/brands/vnv.svg +1 -0
  727. package/theme/icons/font-awesome/svgs/brands/vuejs.svg +1 -0
  728. package/theme/icons/font-awesome/svgs/brands/watchman-monitoring.svg +1 -0
  729. package/theme/icons/font-awesome/svgs/brands/waze.svg +1 -0
  730. package/theme/icons/font-awesome/svgs/brands/weebly.svg +1 -0
  731. package/theme/icons/font-awesome/svgs/brands/weibo.svg +1 -0
  732. package/theme/icons/font-awesome/svgs/brands/weixin.svg +1 -0
  733. package/theme/icons/font-awesome/svgs/brands/whatsapp.svg +1 -0
  734. package/theme/icons/font-awesome/svgs/brands/whmcs.svg +1 -0
  735. package/theme/icons/font-awesome/svgs/brands/wikipedia-w.svg +1 -0
  736. package/theme/icons/font-awesome/svgs/brands/windows.svg +1 -0
  737. package/theme/icons/font-awesome/svgs/brands/wirsindhandwerk.svg +1 -0
  738. package/theme/icons/font-awesome/svgs/brands/wix.svg +1 -0
  739. package/theme/icons/font-awesome/svgs/brands/wizards-of-the-coast.svg +1 -0
  740. package/theme/icons/font-awesome/svgs/brands/wodu.svg +1 -0
  741. package/theme/icons/font-awesome/svgs/brands/wolf-pack-battalion.svg +1 -0
  742. package/theme/icons/font-awesome/svgs/brands/wordpress-simple.svg +1 -0
  743. package/theme/icons/font-awesome/svgs/brands/wordpress.svg +1 -0
  744. package/theme/icons/font-awesome/svgs/brands/wpbeginner.svg +1 -0
  745. package/theme/icons/font-awesome/svgs/brands/wpexplorer.svg +1 -0
  746. package/theme/icons/font-awesome/svgs/brands/wpforms.svg +1 -0
  747. package/theme/icons/font-awesome/svgs/brands/wpressr.svg +1 -0
  748. package/theme/icons/font-awesome/svgs/brands/x-twitter.svg +1 -0
  749. package/theme/icons/font-awesome/svgs/brands/xbox.svg +1 -0
  750. package/theme/icons/font-awesome/svgs/brands/xing.svg +1 -0
  751. package/theme/icons/font-awesome/svgs/brands/y-combinator.svg +1 -0
  752. package/theme/icons/font-awesome/svgs/brands/yahoo.svg +1 -0
  753. package/theme/icons/font-awesome/svgs/brands/yammer.svg +1 -0
  754. package/theme/icons/font-awesome/svgs/brands/yandex-international.svg +1 -0
  755. package/theme/icons/font-awesome/svgs/brands/yandex.svg +1 -0
  756. package/theme/icons/font-awesome/svgs/brands/yarn.svg +1 -0
  757. package/theme/icons/font-awesome/svgs/brands/yelp.svg +1 -0
  758. package/theme/icons/font-awesome/svgs/brands/yoast.svg +1 -0
  759. package/theme/icons/font-awesome/svgs/brands/youtube.svg +1 -0
  760. package/theme/icons/font-awesome/svgs/brands/zhihu.svg +1 -0
  761. package/theme/icons/font-awesome/svgs/regular/address-book.svg +1 -0
  762. package/theme/icons/font-awesome/svgs/regular/address-card.svg +1 -0
  763. package/theme/icons/font-awesome/svgs/regular/bell-slash.svg +1 -0
  764. package/theme/icons/font-awesome/svgs/regular/bell.svg +1 -0
  765. package/theme/icons/font-awesome/svgs/regular/bookmark.svg +1 -0
  766. package/theme/icons/font-awesome/svgs/regular/building.svg +1 -0
  767. package/theme/icons/font-awesome/svgs/regular/calendar-check.svg +1 -0
  768. package/theme/icons/font-awesome/svgs/regular/calendar-days.svg +1 -0
  769. package/theme/icons/font-awesome/svgs/regular/calendar-minus.svg +1 -0
  770. package/theme/icons/font-awesome/svgs/regular/calendar-plus.svg +1 -0
  771. package/theme/icons/font-awesome/svgs/regular/calendar-xmark.svg +1 -0
  772. package/theme/icons/font-awesome/svgs/regular/calendar.svg +1 -0
  773. package/theme/icons/font-awesome/svgs/regular/chart-bar.svg +1 -0
  774. package/theme/icons/font-awesome/svgs/regular/chess-bishop.svg +1 -0
  775. package/theme/icons/font-awesome/svgs/regular/chess-king.svg +1 -0
  776. package/theme/icons/font-awesome/svgs/regular/chess-knight.svg +1 -0
  777. package/theme/icons/font-awesome/svgs/regular/chess-pawn.svg +1 -0
  778. package/theme/icons/font-awesome/svgs/regular/chess-queen.svg +1 -0
  779. package/theme/icons/font-awesome/svgs/regular/chess-rook.svg +1 -0
  780. package/theme/icons/font-awesome/svgs/regular/circle-check.svg +1 -0
  781. package/theme/icons/font-awesome/svgs/regular/circle-dot.svg +1 -0
  782. package/theme/icons/font-awesome/svgs/regular/circle-down.svg +1 -0
  783. package/theme/icons/font-awesome/svgs/regular/circle-left.svg +1 -0
  784. package/theme/icons/font-awesome/svgs/regular/circle-pause.svg +1 -0
  785. package/theme/icons/font-awesome/svgs/regular/circle-play.svg +1 -0
  786. package/theme/icons/font-awesome/svgs/regular/circle-question.svg +1 -0
  787. package/theme/icons/font-awesome/svgs/regular/circle-right.svg +1 -0
  788. package/theme/icons/font-awesome/svgs/regular/circle-stop.svg +1 -0
  789. package/theme/icons/font-awesome/svgs/regular/circle-up.svg +1 -0
  790. package/theme/icons/font-awesome/svgs/regular/circle-user.svg +1 -0
  791. package/theme/icons/font-awesome/svgs/regular/circle-xmark.svg +1 -0
  792. package/theme/icons/font-awesome/svgs/regular/circle.svg +1 -0
  793. package/theme/icons/font-awesome/svgs/regular/clipboard.svg +1 -0
  794. package/theme/icons/font-awesome/svgs/regular/clock.svg +1 -0
  795. package/theme/icons/font-awesome/svgs/regular/clone.svg +1 -0
  796. package/theme/icons/font-awesome/svgs/regular/closed-captioning.svg +1 -0
  797. package/theme/icons/font-awesome/svgs/regular/comment-dots.svg +1 -0
  798. package/theme/icons/font-awesome/svgs/regular/comment.svg +1 -0
  799. package/theme/icons/font-awesome/svgs/regular/comments.svg +1 -0
  800. package/theme/icons/font-awesome/svgs/regular/compass.svg +1 -0
  801. package/theme/icons/font-awesome/svgs/regular/copy.svg +1 -0
  802. package/theme/icons/font-awesome/svgs/regular/copyright.svg +1 -0
  803. package/theme/icons/font-awesome/svgs/regular/credit-card.svg +1 -0
  804. package/theme/icons/font-awesome/svgs/regular/envelope-open.svg +1 -0
  805. package/theme/icons/font-awesome/svgs/regular/envelope.svg +1 -0
  806. package/theme/icons/font-awesome/svgs/regular/eye-slash.svg +1 -0
  807. package/theme/icons/font-awesome/svgs/regular/eye.svg +1 -0
  808. package/theme/icons/font-awesome/svgs/regular/face-angry.svg +1 -0
  809. package/theme/icons/font-awesome/svgs/regular/face-dizzy.svg +1 -0
  810. package/theme/icons/font-awesome/svgs/regular/face-flushed.svg +1 -0
  811. package/theme/icons/font-awesome/svgs/regular/face-frown-open.svg +1 -0
  812. package/theme/icons/font-awesome/svgs/regular/face-frown.svg +1 -0
  813. package/theme/icons/font-awesome/svgs/regular/face-grimace.svg +1 -0
  814. package/theme/icons/font-awesome/svgs/regular/face-grin-beam-sweat.svg +1 -0
  815. package/theme/icons/font-awesome/svgs/regular/face-grin-beam.svg +1 -0
  816. package/theme/icons/font-awesome/svgs/regular/face-grin-hearts.svg +1 -0
  817. package/theme/icons/font-awesome/svgs/regular/face-grin-squint-tears.svg +1 -0
  818. package/theme/icons/font-awesome/svgs/regular/face-grin-squint.svg +1 -0
  819. package/theme/icons/font-awesome/svgs/regular/face-grin-stars.svg +1 -0
  820. package/theme/icons/font-awesome/svgs/regular/face-grin-tears.svg +1 -0
  821. package/theme/icons/font-awesome/svgs/regular/face-grin-tongue-squint.svg +1 -0
  822. package/theme/icons/font-awesome/svgs/regular/face-grin-tongue-wink.svg +1 -0
  823. package/theme/icons/font-awesome/svgs/regular/face-grin-tongue.svg +1 -0
  824. package/theme/icons/font-awesome/svgs/regular/face-grin-wide.svg +1 -0
  825. package/theme/icons/font-awesome/svgs/regular/face-grin-wink.svg +1 -0
  826. package/theme/icons/font-awesome/svgs/regular/face-grin.svg +1 -0
  827. package/theme/icons/font-awesome/svgs/regular/face-kiss-beam.svg +1 -0
  828. package/theme/icons/font-awesome/svgs/regular/face-kiss-wink-heart.svg +1 -0
  829. package/theme/icons/font-awesome/svgs/regular/face-kiss.svg +1 -0
  830. package/theme/icons/font-awesome/svgs/regular/face-laugh-beam.svg +1 -0
  831. package/theme/icons/font-awesome/svgs/regular/face-laugh-squint.svg +1 -0
  832. package/theme/icons/font-awesome/svgs/regular/face-laugh-wink.svg +1 -0
  833. package/theme/icons/font-awesome/svgs/regular/face-laugh.svg +1 -0
  834. package/theme/icons/font-awesome/svgs/regular/face-meh-blank.svg +1 -0
  835. package/theme/icons/font-awesome/svgs/regular/face-meh.svg +1 -0
  836. package/theme/icons/font-awesome/svgs/regular/face-rolling-eyes.svg +1 -0
  837. package/theme/icons/font-awesome/svgs/regular/face-sad-cry.svg +1 -0
  838. package/theme/icons/font-awesome/svgs/regular/face-sad-tear.svg +1 -0
  839. package/theme/icons/font-awesome/svgs/regular/face-smile-beam.svg +1 -0
  840. package/theme/icons/font-awesome/svgs/regular/face-smile-wink.svg +1 -0
  841. package/theme/icons/font-awesome/svgs/regular/face-smile.svg +1 -0
  842. package/theme/icons/font-awesome/svgs/regular/face-surprise.svg +1 -0
  843. package/theme/icons/font-awesome/svgs/regular/face-tired.svg +1 -0
  844. package/theme/icons/font-awesome/svgs/regular/file-audio.svg +1 -0
  845. package/theme/icons/font-awesome/svgs/regular/file-code.svg +1 -0
  846. package/theme/icons/font-awesome/svgs/regular/file-excel.svg +1 -0
  847. package/theme/icons/font-awesome/svgs/regular/file-image.svg +1 -0
  848. package/theme/icons/font-awesome/svgs/regular/file-lines.svg +1 -0
  849. package/theme/icons/font-awesome/svgs/regular/file-pdf.svg +1 -0
  850. package/theme/icons/font-awesome/svgs/regular/file-powerpoint.svg +1 -0
  851. package/theme/icons/font-awesome/svgs/regular/file-video.svg +1 -0
  852. package/theme/icons/font-awesome/svgs/regular/file-word.svg +1 -0
  853. package/theme/icons/font-awesome/svgs/regular/file-zipper.svg +1 -0
  854. package/theme/icons/font-awesome/svgs/regular/file.svg +1 -0
  855. package/theme/icons/font-awesome/svgs/regular/flag.svg +1 -0
  856. package/theme/icons/font-awesome/svgs/regular/floppy-disk.svg +1 -0
  857. package/theme/icons/font-awesome/svgs/regular/folder-closed.svg +1 -0
  858. package/theme/icons/font-awesome/svgs/regular/folder-open.svg +1 -0
  859. package/theme/icons/font-awesome/svgs/regular/folder.svg +1 -0
  860. package/theme/icons/font-awesome/svgs/regular/font-awesome.svg +1 -0
  861. package/theme/icons/font-awesome/svgs/regular/futbol.svg +1 -0
  862. package/theme/icons/font-awesome/svgs/regular/gem.svg +1 -0
  863. package/theme/icons/font-awesome/svgs/regular/hand-back-fist.svg +1 -0
  864. package/theme/icons/font-awesome/svgs/regular/hand-lizard.svg +1 -0
  865. package/theme/icons/font-awesome/svgs/regular/hand-peace.svg +1 -0
  866. package/theme/icons/font-awesome/svgs/regular/hand-point-down.svg +1 -0
  867. package/theme/icons/font-awesome/svgs/regular/hand-point-left.svg +1 -0
  868. package/theme/icons/font-awesome/svgs/regular/hand-point-right.svg +1 -0
  869. package/theme/icons/font-awesome/svgs/regular/hand-point-up.svg +1 -0
  870. package/theme/icons/font-awesome/svgs/regular/hand-pointer.svg +1 -0
  871. package/theme/icons/font-awesome/svgs/regular/hand-scissors.svg +1 -0
  872. package/theme/icons/font-awesome/svgs/regular/hand-spock.svg +1 -0
  873. package/theme/icons/font-awesome/svgs/regular/hand.svg +1 -0
  874. package/theme/icons/font-awesome/svgs/regular/handshake.svg +1 -0
  875. package/theme/icons/font-awesome/svgs/regular/hard-drive.svg +1 -0
  876. package/theme/icons/font-awesome/svgs/regular/heart.svg +1 -0
  877. package/theme/icons/font-awesome/svgs/regular/hospital.svg +1 -0
  878. package/theme/icons/font-awesome/svgs/regular/hourglass-half.svg +1 -0
  879. package/theme/icons/font-awesome/svgs/regular/hourglass.svg +1 -0
  880. package/theme/icons/font-awesome/svgs/regular/id-badge.svg +1 -0
  881. package/theme/icons/font-awesome/svgs/regular/id-card.svg +1 -0
  882. package/theme/icons/font-awesome/svgs/regular/image.svg +1 -0
  883. package/theme/icons/font-awesome/svgs/regular/images.svg +1 -0
  884. package/theme/icons/font-awesome/svgs/regular/keyboard.svg +1 -0
  885. package/theme/icons/font-awesome/svgs/regular/lemon.svg +1 -0
  886. package/theme/icons/font-awesome/svgs/regular/life-ring.svg +1 -0
  887. package/theme/icons/font-awesome/svgs/regular/lightbulb.svg +1 -0
  888. package/theme/icons/font-awesome/svgs/regular/map.svg +1 -0
  889. package/theme/icons/font-awesome/svgs/regular/message.svg +1 -0
  890. package/theme/icons/font-awesome/svgs/regular/money-bill-1.svg +1 -0
  891. package/theme/icons/font-awesome/svgs/regular/moon.svg +1 -0
  892. package/theme/icons/font-awesome/svgs/regular/newspaper.svg +1 -0
  893. package/theme/icons/font-awesome/svgs/regular/note-sticky.svg +1 -0
  894. package/theme/icons/font-awesome/svgs/regular/object-group.svg +1 -0
  895. package/theme/icons/font-awesome/svgs/regular/object-ungroup.svg +1 -0
  896. package/theme/icons/font-awesome/svgs/regular/paper-plane.svg +1 -0
  897. package/theme/icons/font-awesome/svgs/regular/paste.svg +1 -0
  898. package/theme/icons/font-awesome/svgs/regular/pen-to-square.svg +1 -0
  899. package/theme/icons/font-awesome/svgs/regular/rectangle-list.svg +1 -0
  900. package/theme/icons/font-awesome/svgs/regular/rectangle-xmark.svg +1 -0
  901. package/theme/icons/font-awesome/svgs/regular/registered.svg +1 -0
  902. package/theme/icons/font-awesome/svgs/regular/share-from-square.svg +1 -0
  903. package/theme/icons/font-awesome/svgs/regular/snowflake.svg +1 -0
  904. package/theme/icons/font-awesome/svgs/regular/square-caret-down.svg +1 -0
  905. package/theme/icons/font-awesome/svgs/regular/square-caret-left.svg +1 -0
  906. package/theme/icons/font-awesome/svgs/regular/square-caret-right.svg +1 -0
  907. package/theme/icons/font-awesome/svgs/regular/square-caret-up.svg +1 -0
  908. package/theme/icons/font-awesome/svgs/regular/square-check.svg +1 -0
  909. package/theme/icons/font-awesome/svgs/regular/square-full.svg +1 -0
  910. package/theme/icons/font-awesome/svgs/regular/square-minus.svg +1 -0
  911. package/theme/icons/font-awesome/svgs/regular/square-plus.svg +1 -0
  912. package/theme/icons/font-awesome/svgs/regular/square.svg +1 -0
  913. package/theme/icons/font-awesome/svgs/regular/star-half-stroke.svg +1 -0
  914. package/theme/icons/font-awesome/svgs/regular/star-half.svg +1 -0
  915. package/theme/icons/font-awesome/svgs/regular/star.svg +1 -0
  916. package/theme/icons/font-awesome/svgs/regular/sun.svg +1 -0
  917. package/theme/icons/font-awesome/svgs/regular/thumbs-down.svg +1 -0
  918. package/theme/icons/font-awesome/svgs/regular/thumbs-up.svg +1 -0
  919. package/theme/icons/font-awesome/svgs/regular/trash-can.svg +1 -0
  920. package/theme/icons/font-awesome/svgs/regular/user.svg +1 -0
  921. package/theme/icons/font-awesome/svgs/regular/window-maximize.svg +1 -0
  922. package/theme/icons/font-awesome/svgs/regular/window-minimize.svg +1 -0
  923. package/theme/icons/font-awesome/svgs/regular/window-restore.svg +1 -0
  924. package/theme/icons/font-awesome/svgs/solid/0.svg +1 -0
  925. package/theme/icons/font-awesome/svgs/solid/1.svg +1 -0
  926. package/theme/icons/font-awesome/svgs/solid/2.svg +1 -0
  927. package/theme/icons/font-awesome/svgs/solid/3.svg +1 -0
  928. package/theme/icons/font-awesome/svgs/solid/4.svg +1 -0
  929. package/theme/icons/font-awesome/svgs/solid/5.svg +1 -0
  930. package/theme/icons/font-awesome/svgs/solid/6.svg +1 -0
  931. package/theme/icons/font-awesome/svgs/solid/7.svg +1 -0
  932. package/theme/icons/font-awesome/svgs/solid/8.svg +1 -0
  933. package/theme/icons/font-awesome/svgs/solid/9.svg +1 -0
  934. package/theme/icons/font-awesome/svgs/solid/a.svg +1 -0
  935. package/theme/icons/font-awesome/svgs/solid/address-book.svg +1 -0
  936. package/theme/icons/font-awesome/svgs/solid/address-card.svg +1 -0
  937. package/theme/icons/font-awesome/svgs/solid/align-center.svg +1 -0
  938. package/theme/icons/font-awesome/svgs/solid/align-justify.svg +1 -0
  939. package/theme/icons/font-awesome/svgs/solid/align-left.svg +1 -0
  940. package/theme/icons/font-awesome/svgs/solid/align-right.svg +1 -0
  941. package/theme/icons/font-awesome/svgs/solid/anchor-circle-check.svg +1 -0
  942. package/theme/icons/font-awesome/svgs/solid/anchor-circle-exclamation.svg +1 -0
  943. package/theme/icons/font-awesome/svgs/solid/anchor-circle-xmark.svg +1 -0
  944. package/theme/icons/font-awesome/svgs/solid/anchor-lock.svg +1 -0
  945. package/theme/icons/font-awesome/svgs/solid/anchor.svg +1 -0
  946. package/theme/icons/font-awesome/svgs/solid/angle-down.svg +1 -0
  947. package/theme/icons/font-awesome/svgs/solid/angle-left.svg +1 -0
  948. package/theme/icons/font-awesome/svgs/solid/angle-right.svg +1 -0
  949. package/theme/icons/font-awesome/svgs/solid/angle-up.svg +1 -0
  950. package/theme/icons/font-awesome/svgs/solid/angles-down.svg +1 -0
  951. package/theme/icons/font-awesome/svgs/solid/angles-left.svg +1 -0
  952. package/theme/icons/font-awesome/svgs/solid/angles-right.svg +1 -0
  953. package/theme/icons/font-awesome/svgs/solid/angles-up.svg +1 -0
  954. package/theme/icons/font-awesome/svgs/solid/ankh.svg +1 -0
  955. package/theme/icons/font-awesome/svgs/solid/apple-whole.svg +1 -0
  956. package/theme/icons/font-awesome/svgs/solid/archway.svg +1 -0
  957. package/theme/icons/font-awesome/svgs/solid/arrow-down-1-9.svg +1 -0
  958. package/theme/icons/font-awesome/svgs/solid/arrow-down-9-1.svg +1 -0
  959. package/theme/icons/font-awesome/svgs/solid/arrow-down-a-z.svg +1 -0
  960. package/theme/icons/font-awesome/svgs/solid/arrow-down-long.svg +1 -0
  961. package/theme/icons/font-awesome/svgs/solid/arrow-down-short-wide.svg +1 -0
  962. package/theme/icons/font-awesome/svgs/solid/arrow-down-up-across-line.svg +1 -0
  963. package/theme/icons/font-awesome/svgs/solid/arrow-down-up-lock.svg +1 -0
  964. package/theme/icons/font-awesome/svgs/solid/arrow-down-wide-short.svg +1 -0
  965. package/theme/icons/font-awesome/svgs/solid/arrow-down-z-a.svg +1 -0
  966. package/theme/icons/font-awesome/svgs/solid/arrow-down.svg +1 -0
  967. package/theme/icons/font-awesome/svgs/solid/arrow-left-long.svg +1 -0
  968. package/theme/icons/font-awesome/svgs/solid/arrow-left.svg +1 -0
  969. package/theme/icons/font-awesome/svgs/solid/arrow-pointer.svg +1 -0
  970. package/theme/icons/font-awesome/svgs/solid/arrow-right-arrow-left.svg +1 -0
  971. package/theme/icons/font-awesome/svgs/solid/arrow-right-from-bracket.svg +1 -0
  972. package/theme/icons/font-awesome/svgs/solid/arrow-right-long.svg +1 -0
  973. package/theme/icons/font-awesome/svgs/solid/arrow-right-to-bracket.svg +1 -0
  974. package/theme/icons/font-awesome/svgs/solid/arrow-right-to-city.svg +1 -0
  975. package/theme/icons/font-awesome/svgs/solid/arrow-right.svg +1 -0
  976. package/theme/icons/font-awesome/svgs/solid/arrow-rotate-left.svg +1 -0
  977. package/theme/icons/font-awesome/svgs/solid/arrow-rotate-right.svg +1 -0
  978. package/theme/icons/font-awesome/svgs/solid/arrow-trend-down.svg +1 -0
  979. package/theme/icons/font-awesome/svgs/solid/arrow-trend-up.svg +1 -0
  980. package/theme/icons/font-awesome/svgs/solid/arrow-turn-down.svg +1 -0
  981. package/theme/icons/font-awesome/svgs/solid/arrow-turn-up.svg +1 -0
  982. package/theme/icons/font-awesome/svgs/solid/arrow-up-1-9.svg +1 -0
  983. package/theme/icons/font-awesome/svgs/solid/arrow-up-9-1.svg +1 -0
  984. package/theme/icons/font-awesome/svgs/solid/arrow-up-a-z.svg +1 -0
  985. package/theme/icons/font-awesome/svgs/solid/arrow-up-from-bracket.svg +1 -0
  986. package/theme/icons/font-awesome/svgs/solid/arrow-up-from-ground-water.svg +1 -0
  987. package/theme/icons/font-awesome/svgs/solid/arrow-up-from-water-pump.svg +1 -0
  988. package/theme/icons/font-awesome/svgs/solid/arrow-up-long.svg +1 -0
  989. package/theme/icons/font-awesome/svgs/solid/arrow-up-right-dots.svg +1 -0
  990. package/theme/icons/font-awesome/svgs/solid/arrow-up-right-from-square.svg +1 -0
  991. package/theme/icons/font-awesome/svgs/solid/arrow-up-short-wide.svg +1 -0
  992. package/theme/icons/font-awesome/svgs/solid/arrow-up-wide-short.svg +1 -0
  993. package/theme/icons/font-awesome/svgs/solid/arrow-up-z-a.svg +1 -0
  994. package/theme/icons/font-awesome/svgs/solid/arrow-up.svg +1 -0
  995. package/theme/icons/font-awesome/svgs/solid/arrows-down-to-line.svg +1 -0
  996. package/theme/icons/font-awesome/svgs/solid/arrows-down-to-people.svg +1 -0
  997. package/theme/icons/font-awesome/svgs/solid/arrows-left-right-to-line.svg +1 -0
  998. package/theme/icons/font-awesome/svgs/solid/arrows-left-right.svg +1 -0
  999. package/theme/icons/font-awesome/svgs/solid/arrows-rotate.svg +1 -0
  1000. package/theme/icons/font-awesome/svgs/solid/arrows-spin.svg +1 -0
  1001. package/theme/icons/font-awesome/svgs/solid/arrows-split-up-and-left.svg +1 -0
  1002. package/theme/icons/font-awesome/svgs/solid/arrows-to-circle.svg +1 -0
  1003. package/theme/icons/font-awesome/svgs/solid/arrows-to-dot.svg +1 -0
  1004. package/theme/icons/font-awesome/svgs/solid/arrows-to-eye.svg +1 -0
  1005. package/theme/icons/font-awesome/svgs/solid/arrows-turn-right.svg +1 -0
  1006. package/theme/icons/font-awesome/svgs/solid/arrows-turn-to-dots.svg +1 -0
  1007. package/theme/icons/font-awesome/svgs/solid/arrows-up-down-left-right.svg +1 -0
  1008. package/theme/icons/font-awesome/svgs/solid/arrows-up-down.svg +1 -0
  1009. package/theme/icons/font-awesome/svgs/solid/arrows-up-to-line.svg +1 -0
  1010. package/theme/icons/font-awesome/svgs/solid/asterisk.svg +1 -0
  1011. package/theme/icons/font-awesome/svgs/solid/at.svg +1 -0
  1012. package/theme/icons/font-awesome/svgs/solid/atom.svg +1 -0
  1013. package/theme/icons/font-awesome/svgs/solid/audio-description.svg +1 -0
  1014. package/theme/icons/font-awesome/svgs/solid/austral-sign.svg +1 -0
  1015. package/theme/icons/font-awesome/svgs/solid/award.svg +1 -0
  1016. package/theme/icons/font-awesome/svgs/solid/b.svg +1 -0
  1017. package/theme/icons/font-awesome/svgs/solid/baby-carriage.svg +1 -0
  1018. package/theme/icons/font-awesome/svgs/solid/baby.svg +1 -0
  1019. package/theme/icons/font-awesome/svgs/solid/backward-fast.svg +1 -0
  1020. package/theme/icons/font-awesome/svgs/solid/backward-step.svg +1 -0
  1021. package/theme/icons/font-awesome/svgs/solid/backward.svg +1 -0
  1022. package/theme/icons/font-awesome/svgs/solid/bacon.svg +1 -0
  1023. package/theme/icons/font-awesome/svgs/solid/bacteria.svg +1 -0
  1024. package/theme/icons/font-awesome/svgs/solid/bacterium.svg +1 -0
  1025. package/theme/icons/font-awesome/svgs/solid/bag-shopping.svg +1 -0
  1026. package/theme/icons/font-awesome/svgs/solid/bahai.svg +1 -0
  1027. package/theme/icons/font-awesome/svgs/solid/baht-sign.svg +1 -0
  1028. package/theme/icons/font-awesome/svgs/solid/ban-smoking.svg +1 -0
  1029. package/theme/icons/font-awesome/svgs/solid/ban.svg +1 -0
  1030. package/theme/icons/font-awesome/svgs/solid/bandage.svg +1 -0
  1031. package/theme/icons/font-awesome/svgs/solid/bangladeshi-taka-sign.svg +1 -0
  1032. package/theme/icons/font-awesome/svgs/solid/barcode.svg +1 -0
  1033. package/theme/icons/font-awesome/svgs/solid/bars-progress.svg +1 -0
  1034. package/theme/icons/font-awesome/svgs/solid/bars-staggered.svg +1 -0
  1035. package/theme/icons/font-awesome/svgs/solid/bars.svg +1 -0
  1036. package/theme/icons/font-awesome/svgs/solid/baseball-bat-ball.svg +1 -0
  1037. package/theme/icons/font-awesome/svgs/solid/baseball.svg +1 -0
  1038. package/theme/icons/font-awesome/svgs/solid/basket-shopping.svg +1 -0
  1039. package/theme/icons/font-awesome/svgs/solid/basketball.svg +1 -0
  1040. package/theme/icons/font-awesome/svgs/solid/bath.svg +1 -0
  1041. package/theme/icons/font-awesome/svgs/solid/battery-empty.svg +1 -0
  1042. package/theme/icons/font-awesome/svgs/solid/battery-full.svg +1 -0
  1043. package/theme/icons/font-awesome/svgs/solid/battery-half.svg +1 -0
  1044. package/theme/icons/font-awesome/svgs/solid/battery-quarter.svg +1 -0
  1045. package/theme/icons/font-awesome/svgs/solid/battery-three-quarters.svg +1 -0
  1046. package/theme/icons/font-awesome/svgs/solid/bed-pulse.svg +1 -0
  1047. package/theme/icons/font-awesome/svgs/solid/bed.svg +1 -0
  1048. package/theme/icons/font-awesome/svgs/solid/beer-mug-empty.svg +1 -0
  1049. package/theme/icons/font-awesome/svgs/solid/bell-concierge.svg +1 -0
  1050. package/theme/icons/font-awesome/svgs/solid/bell-slash.svg +1 -0
  1051. package/theme/icons/font-awesome/svgs/solid/bell.svg +1 -0
  1052. package/theme/icons/font-awesome/svgs/solid/bezier-curve.svg +1 -0
  1053. package/theme/icons/font-awesome/svgs/solid/bicycle.svg +1 -0
  1054. package/theme/icons/font-awesome/svgs/solid/binoculars.svg +1 -0
  1055. package/theme/icons/font-awesome/svgs/solid/biohazard.svg +1 -0
  1056. package/theme/icons/font-awesome/svgs/solid/bitcoin-sign.svg +1 -0
  1057. package/theme/icons/font-awesome/svgs/solid/blender-phone.svg +1 -0
  1058. package/theme/icons/font-awesome/svgs/solid/blender.svg +1 -0
  1059. package/theme/icons/font-awesome/svgs/solid/blog.svg +1 -0
  1060. package/theme/icons/font-awesome/svgs/solid/bold.svg +1 -0
  1061. package/theme/icons/font-awesome/svgs/solid/bolt-lightning.svg +1 -0
  1062. package/theme/icons/font-awesome/svgs/solid/bolt.svg +1 -0
  1063. package/theme/icons/font-awesome/svgs/solid/bomb.svg +1 -0
  1064. package/theme/icons/font-awesome/svgs/solid/bone.svg +1 -0
  1065. package/theme/icons/font-awesome/svgs/solid/bong.svg +1 -0
  1066. package/theme/icons/font-awesome/svgs/solid/book-atlas.svg +1 -0
  1067. package/theme/icons/font-awesome/svgs/solid/book-bible.svg +1 -0
  1068. package/theme/icons/font-awesome/svgs/solid/book-bookmark.svg +1 -0
  1069. package/theme/icons/font-awesome/svgs/solid/book-journal-whills.svg +1 -0
  1070. package/theme/icons/font-awesome/svgs/solid/book-medical.svg +1 -0
  1071. package/theme/icons/font-awesome/svgs/solid/book-open-reader.svg +1 -0
  1072. package/theme/icons/font-awesome/svgs/solid/book-open.svg +1 -0
  1073. package/theme/icons/font-awesome/svgs/solid/book-quran.svg +1 -0
  1074. package/theme/icons/font-awesome/svgs/solid/book-skull.svg +1 -0
  1075. package/theme/icons/font-awesome/svgs/solid/book-tanakh.svg +1 -0
  1076. package/theme/icons/font-awesome/svgs/solid/book.svg +1 -0
  1077. package/theme/icons/font-awesome/svgs/solid/bookmark.svg +1 -0
  1078. package/theme/icons/font-awesome/svgs/solid/border-all.svg +1 -0
  1079. package/theme/icons/font-awesome/svgs/solid/border-none.svg +1 -0
  1080. package/theme/icons/font-awesome/svgs/solid/border-top-left.svg +1 -0
  1081. package/theme/icons/font-awesome/svgs/solid/bore-hole.svg +1 -0
  1082. package/theme/icons/font-awesome/svgs/solid/bottle-droplet.svg +1 -0
  1083. package/theme/icons/font-awesome/svgs/solid/bottle-water.svg +1 -0
  1084. package/theme/icons/font-awesome/svgs/solid/bowl-food.svg +1 -0
  1085. package/theme/icons/font-awesome/svgs/solid/bowl-rice.svg +1 -0
  1086. package/theme/icons/font-awesome/svgs/solid/bowling-ball.svg +1 -0
  1087. package/theme/icons/font-awesome/svgs/solid/box-archive.svg +1 -0
  1088. package/theme/icons/font-awesome/svgs/solid/box-open.svg +1 -0
  1089. package/theme/icons/font-awesome/svgs/solid/box-tissue.svg +1 -0
  1090. package/theme/icons/font-awesome/svgs/solid/box.svg +1 -0
  1091. package/theme/icons/font-awesome/svgs/solid/boxes-packing.svg +1 -0
  1092. package/theme/icons/font-awesome/svgs/solid/boxes-stacked.svg +1 -0
  1093. package/theme/icons/font-awesome/svgs/solid/braille.svg +1 -0
  1094. package/theme/icons/font-awesome/svgs/solid/brain.svg +1 -0
  1095. package/theme/icons/font-awesome/svgs/solid/brazilian-real-sign.svg +1 -0
  1096. package/theme/icons/font-awesome/svgs/solid/bread-slice.svg +1 -0
  1097. package/theme/icons/font-awesome/svgs/solid/bridge-circle-check.svg +1 -0
  1098. package/theme/icons/font-awesome/svgs/solid/bridge-circle-exclamation.svg +1 -0
  1099. package/theme/icons/font-awesome/svgs/solid/bridge-circle-xmark.svg +1 -0
  1100. package/theme/icons/font-awesome/svgs/solid/bridge-lock.svg +1 -0
  1101. package/theme/icons/font-awesome/svgs/solid/bridge-water.svg +1 -0
  1102. package/theme/icons/font-awesome/svgs/solid/bridge.svg +1 -0
  1103. package/theme/icons/font-awesome/svgs/solid/briefcase-medical.svg +1 -0
  1104. package/theme/icons/font-awesome/svgs/solid/briefcase.svg +1 -0
  1105. package/theme/icons/font-awesome/svgs/solid/broom-ball.svg +1 -0
  1106. package/theme/icons/font-awesome/svgs/solid/broom.svg +1 -0
  1107. package/theme/icons/font-awesome/svgs/solid/brush.svg +1 -0
  1108. package/theme/icons/font-awesome/svgs/solid/bucket.svg +1 -0
  1109. package/theme/icons/font-awesome/svgs/solid/bug-slash.svg +1 -0
  1110. package/theme/icons/font-awesome/svgs/solid/bug.svg +1 -0
  1111. package/theme/icons/font-awesome/svgs/solid/bugs.svg +1 -0
  1112. package/theme/icons/font-awesome/svgs/solid/building-circle-arrow-right.svg +1 -0
  1113. package/theme/icons/font-awesome/svgs/solid/building-circle-check.svg +1 -0
  1114. package/theme/icons/font-awesome/svgs/solid/building-circle-exclamation.svg +1 -0
  1115. package/theme/icons/font-awesome/svgs/solid/building-circle-xmark.svg +1 -0
  1116. package/theme/icons/font-awesome/svgs/solid/building-columns.svg +1 -0
  1117. package/theme/icons/font-awesome/svgs/solid/building-flag.svg +1 -0
  1118. package/theme/icons/font-awesome/svgs/solid/building-lock.svg +1 -0
  1119. package/theme/icons/font-awesome/svgs/solid/building-ngo.svg +1 -0
  1120. package/theme/icons/font-awesome/svgs/solid/building-shield.svg +1 -0
  1121. package/theme/icons/font-awesome/svgs/solid/building-un.svg +1 -0
  1122. package/theme/icons/font-awesome/svgs/solid/building-user.svg +1 -0
  1123. package/theme/icons/font-awesome/svgs/solid/building-wheat.svg +1 -0
  1124. package/theme/icons/font-awesome/svgs/solid/building.svg +1 -0
  1125. package/theme/icons/font-awesome/svgs/solid/bullhorn.svg +1 -0
  1126. package/theme/icons/font-awesome/svgs/solid/bullseye.svg +1 -0
  1127. package/theme/icons/font-awesome/svgs/solid/burger.svg +1 -0
  1128. package/theme/icons/font-awesome/svgs/solid/burst.svg +1 -0
  1129. package/theme/icons/font-awesome/svgs/solid/bus-simple.svg +1 -0
  1130. package/theme/icons/font-awesome/svgs/solid/bus.svg +1 -0
  1131. package/theme/icons/font-awesome/svgs/solid/business-time.svg +1 -0
  1132. package/theme/icons/font-awesome/svgs/solid/c.svg +1 -0
  1133. package/theme/icons/font-awesome/svgs/solid/cable-car.svg +1 -0
  1134. package/theme/icons/font-awesome/svgs/solid/cake-candles.svg +1 -0
  1135. package/theme/icons/font-awesome/svgs/solid/calculator.svg +1 -0
  1136. package/theme/icons/font-awesome/svgs/solid/calendar-check.svg +1 -0
  1137. package/theme/icons/font-awesome/svgs/solid/calendar-day.svg +1 -0
  1138. package/theme/icons/font-awesome/svgs/solid/calendar-days.svg +1 -0
  1139. package/theme/icons/font-awesome/svgs/solid/calendar-minus.svg +1 -0
  1140. package/theme/icons/font-awesome/svgs/solid/calendar-plus.svg +1 -0
  1141. package/theme/icons/font-awesome/svgs/solid/calendar-week.svg +1 -0
  1142. package/theme/icons/font-awesome/svgs/solid/calendar-xmark.svg +1 -0
  1143. package/theme/icons/font-awesome/svgs/solid/calendar.svg +1 -0
  1144. package/theme/icons/font-awesome/svgs/solid/camera-retro.svg +1 -0
  1145. package/theme/icons/font-awesome/svgs/solid/camera-rotate.svg +1 -0
  1146. package/theme/icons/font-awesome/svgs/solid/camera.svg +1 -0
  1147. package/theme/icons/font-awesome/svgs/solid/campground.svg +1 -0
  1148. package/theme/icons/font-awesome/svgs/solid/candy-cane.svg +1 -0
  1149. package/theme/icons/font-awesome/svgs/solid/cannabis.svg +1 -0
  1150. package/theme/icons/font-awesome/svgs/solid/capsules.svg +1 -0
  1151. package/theme/icons/font-awesome/svgs/solid/car-battery.svg +1 -0
  1152. package/theme/icons/font-awesome/svgs/solid/car-burst.svg +1 -0
  1153. package/theme/icons/font-awesome/svgs/solid/car-on.svg +1 -0
  1154. package/theme/icons/font-awesome/svgs/solid/car-rear.svg +1 -0
  1155. package/theme/icons/font-awesome/svgs/solid/car-side.svg +1 -0
  1156. package/theme/icons/font-awesome/svgs/solid/car-tunnel.svg +1 -0
  1157. package/theme/icons/font-awesome/svgs/solid/car.svg +1 -0
  1158. package/theme/icons/font-awesome/svgs/solid/caravan.svg +1 -0
  1159. package/theme/icons/font-awesome/svgs/solid/caret-down.svg +1 -0
  1160. package/theme/icons/font-awesome/svgs/solid/caret-left.svg +1 -0
  1161. package/theme/icons/font-awesome/svgs/solid/caret-right.svg +1 -0
  1162. package/theme/icons/font-awesome/svgs/solid/caret-up.svg +1 -0
  1163. package/theme/icons/font-awesome/svgs/solid/carrot.svg +1 -0
  1164. package/theme/icons/font-awesome/svgs/solid/cart-arrow-down.svg +1 -0
  1165. package/theme/icons/font-awesome/svgs/solid/cart-flatbed-suitcase.svg +1 -0
  1166. package/theme/icons/font-awesome/svgs/solid/cart-flatbed.svg +1 -0
  1167. package/theme/icons/font-awesome/svgs/solid/cart-plus.svg +1 -0
  1168. package/theme/icons/font-awesome/svgs/solid/cart-shopping.svg +1 -0
  1169. package/theme/icons/font-awesome/svgs/solid/cash-register.svg +1 -0
  1170. package/theme/icons/font-awesome/svgs/solid/cat.svg +1 -0
  1171. package/theme/icons/font-awesome/svgs/solid/cedi-sign.svg +1 -0
  1172. package/theme/icons/font-awesome/svgs/solid/cent-sign.svg +1 -0
  1173. package/theme/icons/font-awesome/svgs/solid/certificate.svg +1 -0
  1174. package/theme/icons/font-awesome/svgs/solid/chair.svg +1 -0
  1175. package/theme/icons/font-awesome/svgs/solid/chalkboard-user.svg +1 -0
  1176. package/theme/icons/font-awesome/svgs/solid/chalkboard.svg +1 -0
  1177. package/theme/icons/font-awesome/svgs/solid/champagne-glasses.svg +1 -0
  1178. package/theme/icons/font-awesome/svgs/solid/charging-station.svg +1 -0
  1179. package/theme/icons/font-awesome/svgs/solid/chart-area.svg +1 -0
  1180. package/theme/icons/font-awesome/svgs/solid/chart-bar.svg +1 -0
  1181. package/theme/icons/font-awesome/svgs/solid/chart-column.svg +1 -0
  1182. package/theme/icons/font-awesome/svgs/solid/chart-gantt.svg +1 -0
  1183. package/theme/icons/font-awesome/svgs/solid/chart-line.svg +1 -0
  1184. package/theme/icons/font-awesome/svgs/solid/chart-pie.svg +1 -0
  1185. package/theme/icons/font-awesome/svgs/solid/chart-simple.svg +1 -0
  1186. package/theme/icons/font-awesome/svgs/solid/check-double.svg +1 -0
  1187. package/theme/icons/font-awesome/svgs/solid/check-to-slot.svg +1 -0
  1188. package/theme/icons/font-awesome/svgs/solid/check.svg +1 -0
  1189. package/theme/icons/font-awesome/svgs/solid/cheese.svg +1 -0
  1190. package/theme/icons/font-awesome/svgs/solid/chess-bishop.svg +1 -0
  1191. package/theme/icons/font-awesome/svgs/solid/chess-board.svg +1 -0
  1192. package/theme/icons/font-awesome/svgs/solid/chess-king.svg +1 -0
  1193. package/theme/icons/font-awesome/svgs/solid/chess-knight.svg +1 -0
  1194. package/theme/icons/font-awesome/svgs/solid/chess-pawn.svg +1 -0
  1195. package/theme/icons/font-awesome/svgs/solid/chess-queen.svg +1 -0
  1196. package/theme/icons/font-awesome/svgs/solid/chess-rook.svg +1 -0
  1197. package/theme/icons/font-awesome/svgs/solid/chess.svg +1 -0
  1198. package/theme/icons/font-awesome/svgs/solid/chevron-down.svg +1 -0
  1199. package/theme/icons/font-awesome/svgs/solid/chevron-left.svg +1 -0
  1200. package/theme/icons/font-awesome/svgs/solid/chevron-right.svg +1 -0
  1201. package/theme/icons/font-awesome/svgs/solid/chevron-up.svg +1 -0
  1202. package/theme/icons/font-awesome/svgs/solid/child-combatant.svg +1 -0
  1203. package/theme/icons/font-awesome/svgs/solid/child-dress.svg +1 -0
  1204. package/theme/icons/font-awesome/svgs/solid/child-reaching.svg +1 -0
  1205. package/theme/icons/font-awesome/svgs/solid/child.svg +1 -0
  1206. package/theme/icons/font-awesome/svgs/solid/children.svg +1 -0
  1207. package/theme/icons/font-awesome/svgs/solid/church.svg +1 -0
  1208. package/theme/icons/font-awesome/svgs/solid/circle-arrow-down.svg +1 -0
  1209. package/theme/icons/font-awesome/svgs/solid/circle-arrow-left.svg +1 -0
  1210. package/theme/icons/font-awesome/svgs/solid/circle-arrow-right.svg +1 -0
  1211. package/theme/icons/font-awesome/svgs/solid/circle-arrow-up.svg +1 -0
  1212. package/theme/icons/font-awesome/svgs/solid/circle-check.svg +1 -0
  1213. package/theme/icons/font-awesome/svgs/solid/circle-chevron-down.svg +1 -0
  1214. package/theme/icons/font-awesome/svgs/solid/circle-chevron-left.svg +1 -0
  1215. package/theme/icons/font-awesome/svgs/solid/circle-chevron-right.svg +1 -0
  1216. package/theme/icons/font-awesome/svgs/solid/circle-chevron-up.svg +1 -0
  1217. package/theme/icons/font-awesome/svgs/solid/circle-dollar-to-slot.svg +1 -0
  1218. package/theme/icons/font-awesome/svgs/solid/circle-dot.svg +1 -0
  1219. package/theme/icons/font-awesome/svgs/solid/circle-down.svg +1 -0
  1220. package/theme/icons/font-awesome/svgs/solid/circle-exclamation.svg +1 -0
  1221. package/theme/icons/font-awesome/svgs/solid/circle-h.svg +1 -0
  1222. package/theme/icons/font-awesome/svgs/solid/circle-half-stroke.svg +1 -0
  1223. package/theme/icons/font-awesome/svgs/solid/circle-info.svg +1 -0
  1224. package/theme/icons/font-awesome/svgs/solid/circle-left.svg +1 -0
  1225. package/theme/icons/font-awesome/svgs/solid/circle-minus.svg +1 -0
  1226. package/theme/icons/font-awesome/svgs/solid/circle-nodes.svg +1 -0
  1227. package/theme/icons/font-awesome/svgs/solid/circle-notch.svg +1 -0
  1228. package/theme/icons/font-awesome/svgs/solid/circle-pause.svg +1 -0
  1229. package/theme/icons/font-awesome/svgs/solid/circle-play.svg +1 -0
  1230. package/theme/icons/font-awesome/svgs/solid/circle-plus.svg +1 -0
  1231. package/theme/icons/font-awesome/svgs/solid/circle-question.svg +1 -0
  1232. package/theme/icons/font-awesome/svgs/solid/circle-radiation.svg +1 -0
  1233. package/theme/icons/font-awesome/svgs/solid/circle-right.svg +1 -0
  1234. package/theme/icons/font-awesome/svgs/solid/circle-stop.svg +1 -0
  1235. package/theme/icons/font-awesome/svgs/solid/circle-up.svg +1 -0
  1236. package/theme/icons/font-awesome/svgs/solid/circle-user.svg +1 -0
  1237. package/theme/icons/font-awesome/svgs/solid/circle-xmark.svg +1 -0
  1238. package/theme/icons/font-awesome/svgs/solid/circle.svg +1 -0
  1239. package/theme/icons/font-awesome/svgs/solid/city.svg +1 -0
  1240. package/theme/icons/font-awesome/svgs/solid/clapperboard.svg +1 -0
  1241. package/theme/icons/font-awesome/svgs/solid/clipboard-check.svg +1 -0
  1242. package/theme/icons/font-awesome/svgs/solid/clipboard-list.svg +1 -0
  1243. package/theme/icons/font-awesome/svgs/solid/clipboard-question.svg +1 -0
  1244. package/theme/icons/font-awesome/svgs/solid/clipboard-user.svg +1 -0
  1245. package/theme/icons/font-awesome/svgs/solid/clipboard.svg +1 -0
  1246. package/theme/icons/font-awesome/svgs/solid/clock-rotate-left.svg +1 -0
  1247. package/theme/icons/font-awesome/svgs/solid/clock.svg +1 -0
  1248. package/theme/icons/font-awesome/svgs/solid/clone.svg +1 -0
  1249. package/theme/icons/font-awesome/svgs/solid/closed-captioning.svg +1 -0
  1250. package/theme/icons/font-awesome/svgs/solid/cloud-arrow-down.svg +1 -0
  1251. package/theme/icons/font-awesome/svgs/solid/cloud-arrow-up.svg +1 -0
  1252. package/theme/icons/font-awesome/svgs/solid/cloud-bolt.svg +1 -0
  1253. package/theme/icons/font-awesome/svgs/solid/cloud-meatball.svg +1 -0
  1254. package/theme/icons/font-awesome/svgs/solid/cloud-moon-rain.svg +1 -0
  1255. package/theme/icons/font-awesome/svgs/solid/cloud-moon.svg +1 -0
  1256. package/theme/icons/font-awesome/svgs/solid/cloud-rain.svg +1 -0
  1257. package/theme/icons/font-awesome/svgs/solid/cloud-showers-heavy.svg +1 -0
  1258. package/theme/icons/font-awesome/svgs/solid/cloud-showers-water.svg +1 -0
  1259. package/theme/icons/font-awesome/svgs/solid/cloud-sun-rain.svg +1 -0
  1260. package/theme/icons/font-awesome/svgs/solid/cloud-sun.svg +1 -0
  1261. package/theme/icons/font-awesome/svgs/solid/cloud.svg +1 -0
  1262. package/theme/icons/font-awesome/svgs/solid/clover.svg +1 -0
  1263. package/theme/icons/font-awesome/svgs/solid/code-branch.svg +1 -0
  1264. package/theme/icons/font-awesome/svgs/solid/code-commit.svg +1 -0
  1265. package/theme/icons/font-awesome/svgs/solid/code-compare.svg +1 -0
  1266. package/theme/icons/font-awesome/svgs/solid/code-fork.svg +1 -0
  1267. package/theme/icons/font-awesome/svgs/solid/code-merge.svg +1 -0
  1268. package/theme/icons/font-awesome/svgs/solid/code-pull-request.svg +1 -0
  1269. package/theme/icons/font-awesome/svgs/solid/code.svg +1 -0
  1270. package/theme/icons/font-awesome/svgs/solid/coins.svg +1 -0
  1271. package/theme/icons/font-awesome/svgs/solid/colon-sign.svg +1 -0
  1272. package/theme/icons/font-awesome/svgs/solid/comment-dollar.svg +1 -0
  1273. package/theme/icons/font-awesome/svgs/solid/comment-dots.svg +1 -0
  1274. package/theme/icons/font-awesome/svgs/solid/comment-medical.svg +1 -0
  1275. package/theme/icons/font-awesome/svgs/solid/comment-slash.svg +1 -0
  1276. package/theme/icons/font-awesome/svgs/solid/comment-sms.svg +1 -0
  1277. package/theme/icons/font-awesome/svgs/solid/comment.svg +1 -0
  1278. package/theme/icons/font-awesome/svgs/solid/comments-dollar.svg +1 -0
  1279. package/theme/icons/font-awesome/svgs/solid/comments.svg +1 -0
  1280. package/theme/icons/font-awesome/svgs/solid/compact-disc.svg +1 -0
  1281. package/theme/icons/font-awesome/svgs/solid/compass-drafting.svg +1 -0
  1282. package/theme/icons/font-awesome/svgs/solid/compass.svg +1 -0
  1283. package/theme/icons/font-awesome/svgs/solid/compress.svg +1 -0
  1284. package/theme/icons/font-awesome/svgs/solid/computer-mouse.svg +1 -0
  1285. package/theme/icons/font-awesome/svgs/solid/computer.svg +1 -0
  1286. package/theme/icons/font-awesome/svgs/solid/cookie-bite.svg +1 -0
  1287. package/theme/icons/font-awesome/svgs/solid/cookie.svg +1 -0
  1288. package/theme/icons/font-awesome/svgs/solid/copy.svg +1 -0
  1289. package/theme/icons/font-awesome/svgs/solid/copyright.svg +1 -0
  1290. package/theme/icons/font-awesome/svgs/solid/couch.svg +1 -0
  1291. package/theme/icons/font-awesome/svgs/solid/cow.svg +1 -0
  1292. package/theme/icons/font-awesome/svgs/solid/credit-card.svg +1 -0
  1293. package/theme/icons/font-awesome/svgs/solid/crop-simple.svg +1 -0
  1294. package/theme/icons/font-awesome/svgs/solid/crop.svg +1 -0
  1295. package/theme/icons/font-awesome/svgs/solid/cross.svg +1 -0
  1296. package/theme/icons/font-awesome/svgs/solid/crosshairs.svg +1 -0
  1297. package/theme/icons/font-awesome/svgs/solid/crow.svg +1 -0
  1298. package/theme/icons/font-awesome/svgs/solid/crown.svg +1 -0
  1299. package/theme/icons/font-awesome/svgs/solid/crutch.svg +1 -0
  1300. package/theme/icons/font-awesome/svgs/solid/cruzeiro-sign.svg +1 -0
  1301. package/theme/icons/font-awesome/svgs/solid/cube.svg +1 -0
  1302. package/theme/icons/font-awesome/svgs/solid/cubes-stacked.svg +1 -0
  1303. package/theme/icons/font-awesome/svgs/solid/cubes.svg +1 -0
  1304. package/theme/icons/font-awesome/svgs/solid/d.svg +1 -0
  1305. package/theme/icons/font-awesome/svgs/solid/database.svg +1 -0
  1306. package/theme/icons/font-awesome/svgs/solid/delete-left.svg +1 -0
  1307. package/theme/icons/font-awesome/svgs/solid/democrat.svg +1 -0
  1308. package/theme/icons/font-awesome/svgs/solid/desktop.svg +1 -0
  1309. package/theme/icons/font-awesome/svgs/solid/dharmachakra.svg +1 -0
  1310. package/theme/icons/font-awesome/svgs/solid/diagram-next.svg +1 -0
  1311. package/theme/icons/font-awesome/svgs/solid/diagram-predecessor.svg +1 -0
  1312. package/theme/icons/font-awesome/svgs/solid/diagram-project.svg +1 -0
  1313. package/theme/icons/font-awesome/svgs/solid/diagram-successor.svg +1 -0
  1314. package/theme/icons/font-awesome/svgs/solid/diamond-turn-right.svg +1 -0
  1315. package/theme/icons/font-awesome/svgs/solid/diamond.svg +1 -0
  1316. package/theme/icons/font-awesome/svgs/solid/dice-d20.svg +1 -0
  1317. package/theme/icons/font-awesome/svgs/solid/dice-d6.svg +1 -0
  1318. package/theme/icons/font-awesome/svgs/solid/dice-five.svg +1 -0
  1319. package/theme/icons/font-awesome/svgs/solid/dice-four.svg +1 -0
  1320. package/theme/icons/font-awesome/svgs/solid/dice-one.svg +1 -0
  1321. package/theme/icons/font-awesome/svgs/solid/dice-six.svg +1 -0
  1322. package/theme/icons/font-awesome/svgs/solid/dice-three.svg +1 -0
  1323. package/theme/icons/font-awesome/svgs/solid/dice-two.svg +1 -0
  1324. package/theme/icons/font-awesome/svgs/solid/dice.svg +1 -0
  1325. package/theme/icons/font-awesome/svgs/solid/disease.svg +1 -0
  1326. package/theme/icons/font-awesome/svgs/solid/display.svg +1 -0
  1327. package/theme/icons/font-awesome/svgs/solid/divide.svg +1 -0
  1328. package/theme/icons/font-awesome/svgs/solid/dna.svg +1 -0
  1329. package/theme/icons/font-awesome/svgs/solid/dog.svg +1 -0
  1330. package/theme/icons/font-awesome/svgs/solid/dollar-sign.svg +1 -0
  1331. package/theme/icons/font-awesome/svgs/solid/dolly.svg +1 -0
  1332. package/theme/icons/font-awesome/svgs/solid/dong-sign.svg +1 -0
  1333. package/theme/icons/font-awesome/svgs/solid/door-closed.svg +1 -0
  1334. package/theme/icons/font-awesome/svgs/solid/door-open.svg +1 -0
  1335. package/theme/icons/font-awesome/svgs/solid/dove.svg +1 -0
  1336. package/theme/icons/font-awesome/svgs/solid/down-left-and-up-right-to-center.svg +1 -0
  1337. package/theme/icons/font-awesome/svgs/solid/down-long.svg +1 -0
  1338. package/theme/icons/font-awesome/svgs/solid/download.svg +1 -0
  1339. package/theme/icons/font-awesome/svgs/solid/dragon.svg +1 -0
  1340. package/theme/icons/font-awesome/svgs/solid/draw-polygon.svg +1 -0
  1341. package/theme/icons/font-awesome/svgs/solid/droplet-slash.svg +1 -0
  1342. package/theme/icons/font-awesome/svgs/solid/droplet.svg +1 -0
  1343. package/theme/icons/font-awesome/svgs/solid/drum-steelpan.svg +1 -0
  1344. package/theme/icons/font-awesome/svgs/solid/drum.svg +1 -0
  1345. package/theme/icons/font-awesome/svgs/solid/drumstick-bite.svg +1 -0
  1346. package/theme/icons/font-awesome/svgs/solid/dumbbell.svg +1 -0
  1347. package/theme/icons/font-awesome/svgs/solid/dumpster-fire.svg +1 -0
  1348. package/theme/icons/font-awesome/svgs/solid/dumpster.svg +1 -0
  1349. package/theme/icons/font-awesome/svgs/solid/dungeon.svg +1 -0
  1350. package/theme/icons/font-awesome/svgs/solid/e.svg +1 -0
  1351. package/theme/icons/font-awesome/svgs/solid/ear-deaf.svg +1 -0
  1352. package/theme/icons/font-awesome/svgs/solid/ear-listen.svg +1 -0
  1353. package/theme/icons/font-awesome/svgs/solid/earth-africa.svg +1 -0
  1354. package/theme/icons/font-awesome/svgs/solid/earth-americas.svg +1 -0
  1355. package/theme/icons/font-awesome/svgs/solid/earth-asia.svg +1 -0
  1356. package/theme/icons/font-awesome/svgs/solid/earth-europe.svg +1 -0
  1357. package/theme/icons/font-awesome/svgs/solid/earth-oceania.svg +1 -0
  1358. package/theme/icons/font-awesome/svgs/solid/egg.svg +1 -0
  1359. package/theme/icons/font-awesome/svgs/solid/eject.svg +1 -0
  1360. package/theme/icons/font-awesome/svgs/solid/elevator.svg +1 -0
  1361. package/theme/icons/font-awesome/svgs/solid/ellipsis-vertical.svg +1 -0
  1362. package/theme/icons/font-awesome/svgs/solid/ellipsis.svg +1 -0
  1363. package/theme/icons/font-awesome/svgs/solid/envelope-circle-check.svg +1 -0
  1364. package/theme/icons/font-awesome/svgs/solid/envelope-open-text.svg +1 -0
  1365. package/theme/icons/font-awesome/svgs/solid/envelope-open.svg +1 -0
  1366. package/theme/icons/font-awesome/svgs/solid/envelope.svg +1 -0
  1367. package/theme/icons/font-awesome/svgs/solid/envelopes-bulk.svg +1 -0
  1368. package/theme/icons/font-awesome/svgs/solid/equals.svg +1 -0
  1369. package/theme/icons/font-awesome/svgs/solid/eraser.svg +1 -0
  1370. package/theme/icons/font-awesome/svgs/solid/ethernet.svg +1 -0
  1371. package/theme/icons/font-awesome/svgs/solid/euro-sign.svg +1 -0
  1372. package/theme/icons/font-awesome/svgs/solid/exclamation.svg +1 -0
  1373. package/theme/icons/font-awesome/svgs/solid/expand.svg +1 -0
  1374. package/theme/icons/font-awesome/svgs/solid/explosion.svg +1 -0
  1375. package/theme/icons/font-awesome/svgs/solid/eye-dropper.svg +1 -0
  1376. package/theme/icons/font-awesome/svgs/solid/eye-low-vision.svg +1 -0
  1377. package/theme/icons/font-awesome/svgs/solid/eye-slash.svg +1 -0
  1378. package/theme/icons/font-awesome/svgs/solid/eye.svg +1 -0
  1379. package/theme/icons/font-awesome/svgs/solid/f.svg +1 -0
  1380. package/theme/icons/font-awesome/svgs/solid/face-angry.svg +1 -0
  1381. package/theme/icons/font-awesome/svgs/solid/face-dizzy.svg +1 -0
  1382. package/theme/icons/font-awesome/svgs/solid/face-flushed.svg +1 -0
  1383. package/theme/icons/font-awesome/svgs/solid/face-frown-open.svg +1 -0
  1384. package/theme/icons/font-awesome/svgs/solid/face-frown.svg +1 -0
  1385. package/theme/icons/font-awesome/svgs/solid/face-grimace.svg +1 -0
  1386. package/theme/icons/font-awesome/svgs/solid/face-grin-beam-sweat.svg +1 -0
  1387. package/theme/icons/font-awesome/svgs/solid/face-grin-beam.svg +1 -0
  1388. package/theme/icons/font-awesome/svgs/solid/face-grin-hearts.svg +1 -0
  1389. package/theme/icons/font-awesome/svgs/solid/face-grin-squint-tears.svg +1 -0
  1390. package/theme/icons/font-awesome/svgs/solid/face-grin-squint.svg +1 -0
  1391. package/theme/icons/font-awesome/svgs/solid/face-grin-stars.svg +1 -0
  1392. package/theme/icons/font-awesome/svgs/solid/face-grin-tears.svg +1 -0
  1393. package/theme/icons/font-awesome/svgs/solid/face-grin-tongue-squint.svg +1 -0
  1394. package/theme/icons/font-awesome/svgs/solid/face-grin-tongue-wink.svg +1 -0
  1395. package/theme/icons/font-awesome/svgs/solid/face-grin-tongue.svg +1 -0
  1396. package/theme/icons/font-awesome/svgs/solid/face-grin-wide.svg +1 -0
  1397. package/theme/icons/font-awesome/svgs/solid/face-grin-wink.svg +1 -0
  1398. package/theme/icons/font-awesome/svgs/solid/face-grin.svg +1 -0
  1399. package/theme/icons/font-awesome/svgs/solid/face-kiss-beam.svg +1 -0
  1400. package/theme/icons/font-awesome/svgs/solid/face-kiss-wink-heart.svg +1 -0
  1401. package/theme/icons/font-awesome/svgs/solid/face-kiss.svg +1 -0
  1402. package/theme/icons/font-awesome/svgs/solid/face-laugh-beam.svg +1 -0
  1403. package/theme/icons/font-awesome/svgs/solid/face-laugh-squint.svg +1 -0
  1404. package/theme/icons/font-awesome/svgs/solid/face-laugh-wink.svg +1 -0
  1405. package/theme/icons/font-awesome/svgs/solid/face-laugh.svg +1 -0
  1406. package/theme/icons/font-awesome/svgs/solid/face-meh-blank.svg +1 -0
  1407. package/theme/icons/font-awesome/svgs/solid/face-meh.svg +1 -0
  1408. package/theme/icons/font-awesome/svgs/solid/face-rolling-eyes.svg +1 -0
  1409. package/theme/icons/font-awesome/svgs/solid/face-sad-cry.svg +1 -0
  1410. package/theme/icons/font-awesome/svgs/solid/face-sad-tear.svg +1 -0
  1411. package/theme/icons/font-awesome/svgs/solid/face-smile-beam.svg +1 -0
  1412. package/theme/icons/font-awesome/svgs/solid/face-smile-wink.svg +1 -0
  1413. package/theme/icons/font-awesome/svgs/solid/face-smile.svg +1 -0
  1414. package/theme/icons/font-awesome/svgs/solid/face-surprise.svg +1 -0
  1415. package/theme/icons/font-awesome/svgs/solid/face-tired.svg +1 -0
  1416. package/theme/icons/font-awesome/svgs/solid/fan.svg +1 -0
  1417. package/theme/icons/font-awesome/svgs/solid/faucet-drip.svg +1 -0
  1418. package/theme/icons/font-awesome/svgs/solid/faucet.svg +1 -0
  1419. package/theme/icons/font-awesome/svgs/solid/fax.svg +1 -0
  1420. package/theme/icons/font-awesome/svgs/solid/feather-pointed.svg +1 -0
  1421. package/theme/icons/font-awesome/svgs/solid/feather.svg +1 -0
  1422. package/theme/icons/font-awesome/svgs/solid/ferry.svg +1 -0
  1423. package/theme/icons/font-awesome/svgs/solid/file-arrow-down.svg +1 -0
  1424. package/theme/icons/font-awesome/svgs/solid/file-arrow-up.svg +1 -0
  1425. package/theme/icons/font-awesome/svgs/solid/file-audio.svg +1 -0
  1426. package/theme/icons/font-awesome/svgs/solid/file-circle-check.svg +1 -0
  1427. package/theme/icons/font-awesome/svgs/solid/file-circle-exclamation.svg +1 -0
  1428. package/theme/icons/font-awesome/svgs/solid/file-circle-minus.svg +1 -0
  1429. package/theme/icons/font-awesome/svgs/solid/file-circle-plus.svg +1 -0
  1430. package/theme/icons/font-awesome/svgs/solid/file-circle-question.svg +1 -0
  1431. package/theme/icons/font-awesome/svgs/solid/file-circle-xmark.svg +1 -0
  1432. package/theme/icons/font-awesome/svgs/solid/file-code.svg +1 -0
  1433. package/theme/icons/font-awesome/svgs/solid/file-contract.svg +1 -0
  1434. package/theme/icons/font-awesome/svgs/solid/file-csv.svg +1 -0
  1435. package/theme/icons/font-awesome/svgs/solid/file-excel.svg +1 -0
  1436. package/theme/icons/font-awesome/svgs/solid/file-export.svg +1 -0
  1437. package/theme/icons/font-awesome/svgs/solid/file-image.svg +1 -0
  1438. package/theme/icons/font-awesome/svgs/solid/file-import.svg +1 -0
  1439. package/theme/icons/font-awesome/svgs/solid/file-invoice-dollar.svg +1 -0
  1440. package/theme/icons/font-awesome/svgs/solid/file-invoice.svg +1 -0
  1441. package/theme/icons/font-awesome/svgs/solid/file-lines.svg +1 -0
  1442. package/theme/icons/font-awesome/svgs/solid/file-medical.svg +1 -0
  1443. package/theme/icons/font-awesome/svgs/solid/file-pdf.svg +1 -0
  1444. package/theme/icons/font-awesome/svgs/solid/file-pen.svg +1 -0
  1445. package/theme/icons/font-awesome/svgs/solid/file-powerpoint.svg +1 -0
  1446. package/theme/icons/font-awesome/svgs/solid/file-prescription.svg +1 -0
  1447. package/theme/icons/font-awesome/svgs/solid/file-shield.svg +1 -0
  1448. package/theme/icons/font-awesome/svgs/solid/file-signature.svg +1 -0
  1449. package/theme/icons/font-awesome/svgs/solid/file-video.svg +1 -0
  1450. package/theme/icons/font-awesome/svgs/solid/file-waveform.svg +1 -0
  1451. package/theme/icons/font-awesome/svgs/solid/file-word.svg +1 -0
  1452. package/theme/icons/font-awesome/svgs/solid/file-zipper.svg +1 -0
  1453. package/theme/icons/font-awesome/svgs/solid/file.svg +1 -0
  1454. package/theme/icons/font-awesome/svgs/solid/fill-drip.svg +1 -0
  1455. package/theme/icons/font-awesome/svgs/solid/fill.svg +1 -0
  1456. package/theme/icons/font-awesome/svgs/solid/film.svg +1 -0
  1457. package/theme/icons/font-awesome/svgs/solid/filter-circle-dollar.svg +1 -0
  1458. package/theme/icons/font-awesome/svgs/solid/filter-circle-xmark.svg +1 -0
  1459. package/theme/icons/font-awesome/svgs/solid/filter.svg +1 -0
  1460. package/theme/icons/font-awesome/svgs/solid/fingerprint.svg +1 -0
  1461. package/theme/icons/font-awesome/svgs/solid/fire-burner.svg +1 -0
  1462. package/theme/icons/font-awesome/svgs/solid/fire-extinguisher.svg +1 -0
  1463. package/theme/icons/font-awesome/svgs/solid/fire-flame-curved.svg +1 -0
  1464. package/theme/icons/font-awesome/svgs/solid/fire-flame-simple.svg +1 -0
  1465. package/theme/icons/font-awesome/svgs/solid/fire.svg +1 -0
  1466. package/theme/icons/font-awesome/svgs/solid/fish-fins.svg +1 -0
  1467. package/theme/icons/font-awesome/svgs/solid/fish.svg +1 -0
  1468. package/theme/icons/font-awesome/svgs/solid/flag-checkered.svg +1 -0
  1469. package/theme/icons/font-awesome/svgs/solid/flag-usa.svg +1 -0
  1470. package/theme/icons/font-awesome/svgs/solid/flag.svg +1 -0
  1471. package/theme/icons/font-awesome/svgs/solid/flask-vial.svg +1 -0
  1472. package/theme/icons/font-awesome/svgs/solid/flask.svg +1 -0
  1473. package/theme/icons/font-awesome/svgs/solid/floppy-disk.svg +1 -0
  1474. package/theme/icons/font-awesome/svgs/solid/florin-sign.svg +1 -0
  1475. package/theme/icons/font-awesome/svgs/solid/folder-closed.svg +1 -0
  1476. package/theme/icons/font-awesome/svgs/solid/folder-minus.svg +1 -0
  1477. package/theme/icons/font-awesome/svgs/solid/folder-open.svg +1 -0
  1478. package/theme/icons/font-awesome/svgs/solid/folder-plus.svg +1 -0
  1479. package/theme/icons/font-awesome/svgs/solid/folder-tree.svg +1 -0
  1480. package/theme/icons/font-awesome/svgs/solid/folder.svg +1 -0
  1481. package/theme/icons/font-awesome/svgs/solid/font-awesome.svg +1 -0
  1482. package/theme/icons/font-awesome/svgs/solid/font.svg +1 -0
  1483. package/theme/icons/font-awesome/svgs/solid/football.svg +1 -0
  1484. package/theme/icons/font-awesome/svgs/solid/forward-fast.svg +1 -0
  1485. package/theme/icons/font-awesome/svgs/solid/forward-step.svg +1 -0
  1486. package/theme/icons/font-awesome/svgs/solid/forward.svg +1 -0
  1487. package/theme/icons/font-awesome/svgs/solid/franc-sign.svg +1 -0
  1488. package/theme/icons/font-awesome/svgs/solid/frog.svg +1 -0
  1489. package/theme/icons/font-awesome/svgs/solid/futbol.svg +1 -0
  1490. package/theme/icons/font-awesome/svgs/solid/g.svg +1 -0
  1491. package/theme/icons/font-awesome/svgs/solid/gamepad.svg +1 -0
  1492. package/theme/icons/font-awesome/svgs/solid/gas-pump.svg +1 -0
  1493. package/theme/icons/font-awesome/svgs/solid/gauge-high.svg +1 -0
  1494. package/theme/icons/font-awesome/svgs/solid/gauge-simple-high.svg +1 -0
  1495. package/theme/icons/font-awesome/svgs/solid/gauge-simple.svg +1 -0
  1496. package/theme/icons/font-awesome/svgs/solid/gauge.svg +1 -0
  1497. package/theme/icons/font-awesome/svgs/solid/gavel.svg +1 -0
  1498. package/theme/icons/font-awesome/svgs/solid/gear.svg +1 -0
  1499. package/theme/icons/font-awesome/svgs/solid/gears.svg +1 -0
  1500. package/theme/icons/font-awesome/svgs/solid/gem.svg +1 -0
  1501. package/theme/icons/font-awesome/svgs/solid/genderless.svg +1 -0
  1502. package/theme/icons/font-awesome/svgs/solid/ghost.svg +1 -0
  1503. package/theme/icons/font-awesome/svgs/solid/gift.svg +1 -0
  1504. package/theme/icons/font-awesome/svgs/solid/gifts.svg +1 -0
  1505. package/theme/icons/font-awesome/svgs/solid/glass-water-droplet.svg +1 -0
  1506. package/theme/icons/font-awesome/svgs/solid/glass-water.svg +1 -0
  1507. package/theme/icons/font-awesome/svgs/solid/glasses.svg +1 -0
  1508. package/theme/icons/font-awesome/svgs/solid/globe.svg +1 -0
  1509. package/theme/icons/font-awesome/svgs/solid/golf-ball-tee.svg +1 -0
  1510. package/theme/icons/font-awesome/svgs/solid/gopuram.svg +1 -0
  1511. package/theme/icons/font-awesome/svgs/solid/graduation-cap.svg +1 -0
  1512. package/theme/icons/font-awesome/svgs/solid/greater-than-equal.svg +1 -0
  1513. package/theme/icons/font-awesome/svgs/solid/greater-than.svg +1 -0
  1514. package/theme/icons/font-awesome/svgs/solid/grip-lines-vertical.svg +1 -0
  1515. package/theme/icons/font-awesome/svgs/solid/grip-lines.svg +1 -0
  1516. package/theme/icons/font-awesome/svgs/solid/grip-vertical.svg +1 -0
  1517. package/theme/icons/font-awesome/svgs/solid/grip.svg +1 -0
  1518. package/theme/icons/font-awesome/svgs/solid/group-arrows-rotate.svg +1 -0
  1519. package/theme/icons/font-awesome/svgs/solid/guarani-sign.svg +1 -0
  1520. package/theme/icons/font-awesome/svgs/solid/guitar.svg +1 -0
  1521. package/theme/icons/font-awesome/svgs/solid/gun.svg +1 -0
  1522. package/theme/icons/font-awesome/svgs/solid/h.svg +1 -0
  1523. package/theme/icons/font-awesome/svgs/solid/hammer.svg +1 -0
  1524. package/theme/icons/font-awesome/svgs/solid/hamsa.svg +1 -0
  1525. package/theme/icons/font-awesome/svgs/solid/hand-back-fist.svg +1 -0
  1526. package/theme/icons/font-awesome/svgs/solid/hand-dots.svg +1 -0
  1527. package/theme/icons/font-awesome/svgs/solid/hand-fist.svg +1 -0
  1528. package/theme/icons/font-awesome/svgs/solid/hand-holding-dollar.svg +1 -0
  1529. package/theme/icons/font-awesome/svgs/solid/hand-holding-droplet.svg +1 -0
  1530. package/theme/icons/font-awesome/svgs/solid/hand-holding-hand.svg +1 -0
  1531. package/theme/icons/font-awesome/svgs/solid/hand-holding-heart.svg +1 -0
  1532. package/theme/icons/font-awesome/svgs/solid/hand-holding-medical.svg +1 -0
  1533. package/theme/icons/font-awesome/svgs/solid/hand-holding.svg +1 -0
  1534. package/theme/icons/font-awesome/svgs/solid/hand-lizard.svg +1 -0
  1535. package/theme/icons/font-awesome/svgs/solid/hand-middle-finger.svg +1 -0
  1536. package/theme/icons/font-awesome/svgs/solid/hand-peace.svg +1 -0
  1537. package/theme/icons/font-awesome/svgs/solid/hand-point-down.svg +1 -0
  1538. package/theme/icons/font-awesome/svgs/solid/hand-point-left.svg +1 -0
  1539. package/theme/icons/font-awesome/svgs/solid/hand-point-right.svg +1 -0
  1540. package/theme/icons/font-awesome/svgs/solid/hand-point-up.svg +1 -0
  1541. package/theme/icons/font-awesome/svgs/solid/hand-pointer.svg +1 -0
  1542. package/theme/icons/font-awesome/svgs/solid/hand-scissors.svg +1 -0
  1543. package/theme/icons/font-awesome/svgs/solid/hand-sparkles.svg +1 -0
  1544. package/theme/icons/font-awesome/svgs/solid/hand-spock.svg +1 -0
  1545. package/theme/icons/font-awesome/svgs/solid/hand.svg +1 -0
  1546. package/theme/icons/font-awesome/svgs/solid/handcuffs.svg +1 -0
  1547. package/theme/icons/font-awesome/svgs/solid/hands-asl-interpreting.svg +1 -0
  1548. package/theme/icons/font-awesome/svgs/solid/hands-bound.svg +1 -0
  1549. package/theme/icons/font-awesome/svgs/solid/hands-bubbles.svg +1 -0
  1550. package/theme/icons/font-awesome/svgs/solid/hands-clapping.svg +1 -0
  1551. package/theme/icons/font-awesome/svgs/solid/hands-holding-child.svg +1 -0
  1552. package/theme/icons/font-awesome/svgs/solid/hands-holding-circle.svg +1 -0
  1553. package/theme/icons/font-awesome/svgs/solid/hands-holding.svg +1 -0
  1554. package/theme/icons/font-awesome/svgs/solid/hands-praying.svg +1 -0
  1555. package/theme/icons/font-awesome/svgs/solid/hands.svg +1 -0
  1556. package/theme/icons/font-awesome/svgs/solid/handshake-angle.svg +1 -0
  1557. package/theme/icons/font-awesome/svgs/solid/handshake-simple-slash.svg +1 -0
  1558. package/theme/icons/font-awesome/svgs/solid/handshake-simple.svg +1 -0
  1559. package/theme/icons/font-awesome/svgs/solid/handshake-slash.svg +1 -0
  1560. package/theme/icons/font-awesome/svgs/solid/handshake.svg +1 -0
  1561. package/theme/icons/font-awesome/svgs/solid/hanukiah.svg +1 -0
  1562. package/theme/icons/font-awesome/svgs/solid/hard-drive.svg +1 -0
  1563. package/theme/icons/font-awesome/svgs/solid/hashtag.svg +1 -0
  1564. package/theme/icons/font-awesome/svgs/solid/hat-cowboy-side.svg +1 -0
  1565. package/theme/icons/font-awesome/svgs/solid/hat-cowboy.svg +1 -0
  1566. package/theme/icons/font-awesome/svgs/solid/hat-wizard.svg +1 -0
  1567. package/theme/icons/font-awesome/svgs/solid/head-side-cough-slash.svg +1 -0
  1568. package/theme/icons/font-awesome/svgs/solid/head-side-cough.svg +1 -0
  1569. package/theme/icons/font-awesome/svgs/solid/head-side-mask.svg +1 -0
  1570. package/theme/icons/font-awesome/svgs/solid/head-side-virus.svg +1 -0
  1571. package/theme/icons/font-awesome/svgs/solid/heading.svg +1 -0
  1572. package/theme/icons/font-awesome/svgs/solid/headphones-simple.svg +1 -0
  1573. package/theme/icons/font-awesome/svgs/solid/headphones.svg +1 -0
  1574. package/theme/icons/font-awesome/svgs/solid/headset.svg +1 -0
  1575. package/theme/icons/font-awesome/svgs/solid/heart-circle-bolt.svg +1 -0
  1576. package/theme/icons/font-awesome/svgs/solid/heart-circle-check.svg +1 -0
  1577. package/theme/icons/font-awesome/svgs/solid/heart-circle-exclamation.svg +1 -0
  1578. package/theme/icons/font-awesome/svgs/solid/heart-circle-minus.svg +1 -0
  1579. package/theme/icons/font-awesome/svgs/solid/heart-circle-plus.svg +1 -0
  1580. package/theme/icons/font-awesome/svgs/solid/heart-circle-xmark.svg +1 -0
  1581. package/theme/icons/font-awesome/svgs/solid/heart-crack.svg +1 -0
  1582. package/theme/icons/font-awesome/svgs/solid/heart-pulse.svg +1 -0
  1583. package/theme/icons/font-awesome/svgs/solid/heart.svg +1 -0
  1584. package/theme/icons/font-awesome/svgs/solid/helicopter-symbol.svg +1 -0
  1585. package/theme/icons/font-awesome/svgs/solid/helicopter.svg +1 -0
  1586. package/theme/icons/font-awesome/svgs/solid/helmet-safety.svg +1 -0
  1587. package/theme/icons/font-awesome/svgs/solid/helmet-un.svg +1 -0
  1588. package/theme/icons/font-awesome/svgs/solid/highlighter.svg +1 -0
  1589. package/theme/icons/font-awesome/svgs/solid/hill-avalanche.svg +1 -0
  1590. package/theme/icons/font-awesome/svgs/solid/hill-rockslide.svg +1 -0
  1591. package/theme/icons/font-awesome/svgs/solid/hippo.svg +1 -0
  1592. package/theme/icons/font-awesome/svgs/solid/hockey-puck.svg +1 -0
  1593. package/theme/icons/font-awesome/svgs/solid/holly-berry.svg +1 -0
  1594. package/theme/icons/font-awesome/svgs/solid/horse-head.svg +1 -0
  1595. package/theme/icons/font-awesome/svgs/solid/horse.svg +1 -0
  1596. package/theme/icons/font-awesome/svgs/solid/hospital-user.svg +1 -0
  1597. package/theme/icons/font-awesome/svgs/solid/hospital.svg +1 -0
  1598. package/theme/icons/font-awesome/svgs/solid/hot-tub-person.svg +1 -0
  1599. package/theme/icons/font-awesome/svgs/solid/hotdog.svg +1 -0
  1600. package/theme/icons/font-awesome/svgs/solid/hotel.svg +1 -0
  1601. package/theme/icons/font-awesome/svgs/solid/hourglass-end.svg +1 -0
  1602. package/theme/icons/font-awesome/svgs/solid/hourglass-half.svg +1 -0
  1603. package/theme/icons/font-awesome/svgs/solid/hourglass-start.svg +1 -0
  1604. package/theme/icons/font-awesome/svgs/solid/hourglass.svg +1 -0
  1605. package/theme/icons/font-awesome/svgs/solid/house-chimney-crack.svg +1 -0
  1606. package/theme/icons/font-awesome/svgs/solid/house-chimney-medical.svg +1 -0
  1607. package/theme/icons/font-awesome/svgs/solid/house-chimney-user.svg +1 -0
  1608. package/theme/icons/font-awesome/svgs/solid/house-chimney-window.svg +1 -0
  1609. package/theme/icons/font-awesome/svgs/solid/house-chimney.svg +1 -0
  1610. package/theme/icons/font-awesome/svgs/solid/house-circle-check.svg +1 -0
  1611. package/theme/icons/font-awesome/svgs/solid/house-circle-exclamation.svg +1 -0
  1612. package/theme/icons/font-awesome/svgs/solid/house-circle-xmark.svg +1 -0
  1613. package/theme/icons/font-awesome/svgs/solid/house-crack.svg +1 -0
  1614. package/theme/icons/font-awesome/svgs/solid/house-fire.svg +1 -0
  1615. package/theme/icons/font-awesome/svgs/solid/house-flag.svg +1 -0
  1616. package/theme/icons/font-awesome/svgs/solid/house-flood-water-circle-arrow-right.svg +1 -0
  1617. package/theme/icons/font-awesome/svgs/solid/house-flood-water.svg +1 -0
  1618. package/theme/icons/font-awesome/svgs/solid/house-laptop.svg +1 -0
  1619. package/theme/icons/font-awesome/svgs/solid/house-lock.svg +1 -0
  1620. package/theme/icons/font-awesome/svgs/solid/house-medical-circle-check.svg +1 -0
  1621. package/theme/icons/font-awesome/svgs/solid/house-medical-circle-exclamation.svg +1 -0
  1622. package/theme/icons/font-awesome/svgs/solid/house-medical-circle-xmark.svg +1 -0
  1623. package/theme/icons/font-awesome/svgs/solid/house-medical-flag.svg +1 -0
  1624. package/theme/icons/font-awesome/svgs/solid/house-medical.svg +1 -0
  1625. package/theme/icons/font-awesome/svgs/solid/house-signal.svg +1 -0
  1626. package/theme/icons/font-awesome/svgs/solid/house-tsunami.svg +1 -0
  1627. package/theme/icons/font-awesome/svgs/solid/house-user.svg +1 -0
  1628. package/theme/icons/font-awesome/svgs/solid/house.svg +1 -0
  1629. package/theme/icons/font-awesome/svgs/solid/hryvnia-sign.svg +1 -0
  1630. package/theme/icons/font-awesome/svgs/solid/hurricane.svg +1 -0
  1631. package/theme/icons/font-awesome/svgs/solid/i-cursor.svg +1 -0
  1632. package/theme/icons/font-awesome/svgs/solid/i.svg +1 -0
  1633. package/theme/icons/font-awesome/svgs/solid/ice-cream.svg +1 -0
  1634. package/theme/icons/font-awesome/svgs/solid/icicles.svg +1 -0
  1635. package/theme/icons/font-awesome/svgs/solid/icons.svg +1 -0
  1636. package/theme/icons/font-awesome/svgs/solid/id-badge.svg +1 -0
  1637. package/theme/icons/font-awesome/svgs/solid/id-card-clip.svg +1 -0
  1638. package/theme/icons/font-awesome/svgs/solid/id-card.svg +1 -0
  1639. package/theme/icons/font-awesome/svgs/solid/igloo.svg +1 -0
  1640. package/theme/icons/font-awesome/svgs/solid/image-portrait.svg +1 -0
  1641. package/theme/icons/font-awesome/svgs/solid/image.svg +1 -0
  1642. package/theme/icons/font-awesome/svgs/solid/images.svg +1 -0
  1643. package/theme/icons/font-awesome/svgs/solid/inbox.svg +1 -0
  1644. package/theme/icons/font-awesome/svgs/solid/indent.svg +1 -0
  1645. package/theme/icons/font-awesome/svgs/solid/indian-rupee-sign.svg +1 -0
  1646. package/theme/icons/font-awesome/svgs/solid/industry.svg +1 -0
  1647. package/theme/icons/font-awesome/svgs/solid/infinity.svg +1 -0
  1648. package/theme/icons/font-awesome/svgs/solid/info.svg +1 -0
  1649. package/theme/icons/font-awesome/svgs/solid/italic.svg +1 -0
  1650. package/theme/icons/font-awesome/svgs/solid/j.svg +1 -0
  1651. package/theme/icons/font-awesome/svgs/solid/jar-wheat.svg +1 -0
  1652. package/theme/icons/font-awesome/svgs/solid/jar.svg +1 -0
  1653. package/theme/icons/font-awesome/svgs/solid/jedi.svg +1 -0
  1654. package/theme/icons/font-awesome/svgs/solid/jet-fighter-up.svg +1 -0
  1655. package/theme/icons/font-awesome/svgs/solid/jet-fighter.svg +1 -0
  1656. package/theme/icons/font-awesome/svgs/solid/joint.svg +1 -0
  1657. package/theme/icons/font-awesome/svgs/solid/jug-detergent.svg +1 -0
  1658. package/theme/icons/font-awesome/svgs/solid/k.svg +1 -0
  1659. package/theme/icons/font-awesome/svgs/solid/kaaba.svg +1 -0
  1660. package/theme/icons/font-awesome/svgs/solid/key.svg +1 -0
  1661. package/theme/icons/font-awesome/svgs/solid/keyboard.svg +1 -0
  1662. package/theme/icons/font-awesome/svgs/solid/khanda.svg +1 -0
  1663. package/theme/icons/font-awesome/svgs/solid/kip-sign.svg +1 -0
  1664. package/theme/icons/font-awesome/svgs/solid/kit-medical.svg +1 -0
  1665. package/theme/icons/font-awesome/svgs/solid/kitchen-set.svg +1 -0
  1666. package/theme/icons/font-awesome/svgs/solid/kiwi-bird.svg +1 -0
  1667. package/theme/icons/font-awesome/svgs/solid/l.svg +1 -0
  1668. package/theme/icons/font-awesome/svgs/solid/land-mine-on.svg +1 -0
  1669. package/theme/icons/font-awesome/svgs/solid/landmark-dome.svg +1 -0
  1670. package/theme/icons/font-awesome/svgs/solid/landmark-flag.svg +1 -0
  1671. package/theme/icons/font-awesome/svgs/solid/landmark.svg +1 -0
  1672. package/theme/icons/font-awesome/svgs/solid/language.svg +1 -0
  1673. package/theme/icons/font-awesome/svgs/solid/laptop-code.svg +1 -0
  1674. package/theme/icons/font-awesome/svgs/solid/laptop-file.svg +1 -0
  1675. package/theme/icons/font-awesome/svgs/solid/laptop-medical.svg +1 -0
  1676. package/theme/icons/font-awesome/svgs/solid/laptop.svg +1 -0
  1677. package/theme/icons/font-awesome/svgs/solid/lari-sign.svg +1 -0
  1678. package/theme/icons/font-awesome/svgs/solid/layer-group.svg +1 -0
  1679. package/theme/icons/font-awesome/svgs/solid/leaf.svg +1 -0
  1680. package/theme/icons/font-awesome/svgs/solid/left-long.svg +1 -0
  1681. package/theme/icons/font-awesome/svgs/solid/left-right.svg +1 -0
  1682. package/theme/icons/font-awesome/svgs/solid/lemon.svg +1 -0
  1683. package/theme/icons/font-awesome/svgs/solid/less-than-equal.svg +1 -0
  1684. package/theme/icons/font-awesome/svgs/solid/less-than.svg +1 -0
  1685. package/theme/icons/font-awesome/svgs/solid/life-ring.svg +1 -0
  1686. package/theme/icons/font-awesome/svgs/solid/lightbulb.svg +1 -0
  1687. package/theme/icons/font-awesome/svgs/solid/lines-leaning.svg +1 -0
  1688. package/theme/icons/font-awesome/svgs/solid/link-slash.svg +1 -0
  1689. package/theme/icons/font-awesome/svgs/solid/link.svg +1 -0
  1690. package/theme/icons/font-awesome/svgs/solid/lira-sign.svg +1 -0
  1691. package/theme/icons/font-awesome/svgs/solid/list-check.svg +1 -0
  1692. package/theme/icons/font-awesome/svgs/solid/list-ol.svg +1 -0
  1693. package/theme/icons/font-awesome/svgs/solid/list-ul.svg +1 -0
  1694. package/theme/icons/font-awesome/svgs/solid/list.svg +1 -0
  1695. package/theme/icons/font-awesome/svgs/solid/litecoin-sign.svg +1 -0
  1696. package/theme/icons/font-awesome/svgs/solid/location-arrow.svg +1 -0
  1697. package/theme/icons/font-awesome/svgs/solid/location-crosshairs.svg +1 -0
  1698. package/theme/icons/font-awesome/svgs/solid/location-dot.svg +1 -0
  1699. package/theme/icons/font-awesome/svgs/solid/location-pin-lock.svg +1 -0
  1700. package/theme/icons/font-awesome/svgs/solid/location-pin.svg +1 -0
  1701. package/theme/icons/font-awesome/svgs/solid/lock-open.svg +1 -0
  1702. package/theme/icons/font-awesome/svgs/solid/lock.svg +1 -0
  1703. package/theme/icons/font-awesome/svgs/solid/locust.svg +1 -0
  1704. package/theme/icons/font-awesome/svgs/solid/lungs-virus.svg +1 -0
  1705. package/theme/icons/font-awesome/svgs/solid/lungs.svg +1 -0
  1706. package/theme/icons/font-awesome/svgs/solid/m.svg +1 -0
  1707. package/theme/icons/font-awesome/svgs/solid/magnet.svg +1 -0
  1708. package/theme/icons/font-awesome/svgs/solid/magnifying-glass-arrow-right.svg +1 -0
  1709. package/theme/icons/font-awesome/svgs/solid/magnifying-glass-chart.svg +1 -0
  1710. package/theme/icons/font-awesome/svgs/solid/magnifying-glass-dollar.svg +1 -0
  1711. package/theme/icons/font-awesome/svgs/solid/magnifying-glass-location.svg +1 -0
  1712. package/theme/icons/font-awesome/svgs/solid/magnifying-glass-minus.svg +1 -0
  1713. package/theme/icons/font-awesome/svgs/solid/magnifying-glass-plus.svg +1 -0
  1714. package/theme/icons/font-awesome/svgs/solid/magnifying-glass.svg +1 -0
  1715. package/theme/icons/font-awesome/svgs/solid/manat-sign.svg +1 -0
  1716. package/theme/icons/font-awesome/svgs/solid/map-location-dot.svg +1 -0
  1717. package/theme/icons/font-awesome/svgs/solid/map-location.svg +1 -0
  1718. package/theme/icons/font-awesome/svgs/solid/map-pin.svg +1 -0
  1719. package/theme/icons/font-awesome/svgs/solid/map.svg +1 -0
  1720. package/theme/icons/font-awesome/svgs/solid/marker.svg +1 -0
  1721. package/theme/icons/font-awesome/svgs/solid/mars-and-venus-burst.svg +1 -0
  1722. package/theme/icons/font-awesome/svgs/solid/mars-and-venus.svg +1 -0
  1723. package/theme/icons/font-awesome/svgs/solid/mars-double.svg +1 -0
  1724. package/theme/icons/font-awesome/svgs/solid/mars-stroke-right.svg +1 -0
  1725. package/theme/icons/font-awesome/svgs/solid/mars-stroke-up.svg +1 -0
  1726. package/theme/icons/font-awesome/svgs/solid/mars-stroke.svg +1 -0
  1727. package/theme/icons/font-awesome/svgs/solid/mars.svg +1 -0
  1728. package/theme/icons/font-awesome/svgs/solid/martini-glass-citrus.svg +1 -0
  1729. package/theme/icons/font-awesome/svgs/solid/martini-glass-empty.svg +1 -0
  1730. package/theme/icons/font-awesome/svgs/solid/martini-glass.svg +1 -0
  1731. package/theme/icons/font-awesome/svgs/solid/mask-face.svg +1 -0
  1732. package/theme/icons/font-awesome/svgs/solid/mask-ventilator.svg +1 -0
  1733. package/theme/icons/font-awesome/svgs/solid/mask.svg +1 -0
  1734. package/theme/icons/font-awesome/svgs/solid/masks-theater.svg +1 -0
  1735. package/theme/icons/font-awesome/svgs/solid/mattress-pillow.svg +1 -0
  1736. package/theme/icons/font-awesome/svgs/solid/maximize.svg +1 -0
  1737. package/theme/icons/font-awesome/svgs/solid/medal.svg +1 -0
  1738. package/theme/icons/font-awesome/svgs/solid/memory.svg +1 -0
  1739. package/theme/icons/font-awesome/svgs/solid/menorah.svg +1 -0
  1740. package/theme/icons/font-awesome/svgs/solid/mercury.svg +1 -0
  1741. package/theme/icons/font-awesome/svgs/solid/message.svg +1 -0
  1742. package/theme/icons/font-awesome/svgs/solid/meteor.svg +1 -0
  1743. package/theme/icons/font-awesome/svgs/solid/microchip.svg +1 -0
  1744. package/theme/icons/font-awesome/svgs/solid/microphone-lines-slash.svg +1 -0
  1745. package/theme/icons/font-awesome/svgs/solid/microphone-lines.svg +1 -0
  1746. package/theme/icons/font-awesome/svgs/solid/microphone-slash.svg +1 -0
  1747. package/theme/icons/font-awesome/svgs/solid/microphone.svg +1 -0
  1748. package/theme/icons/font-awesome/svgs/solid/microscope.svg +1 -0
  1749. package/theme/icons/font-awesome/svgs/solid/mill-sign.svg +1 -0
  1750. package/theme/icons/font-awesome/svgs/solid/minimize.svg +1 -0
  1751. package/theme/icons/font-awesome/svgs/solid/minus.svg +1 -0
  1752. package/theme/icons/font-awesome/svgs/solid/mitten.svg +1 -0
  1753. package/theme/icons/font-awesome/svgs/solid/mobile-button.svg +1 -0
  1754. package/theme/icons/font-awesome/svgs/solid/mobile-retro.svg +1 -0
  1755. package/theme/icons/font-awesome/svgs/solid/mobile-screen-button.svg +1 -0
  1756. package/theme/icons/font-awesome/svgs/solid/mobile-screen.svg +1 -0
  1757. package/theme/icons/font-awesome/svgs/solid/mobile.svg +1 -0
  1758. package/theme/icons/font-awesome/svgs/solid/money-bill-1-wave.svg +1 -0
  1759. package/theme/icons/font-awesome/svgs/solid/money-bill-1.svg +1 -0
  1760. package/theme/icons/font-awesome/svgs/solid/money-bill-transfer.svg +1 -0
  1761. package/theme/icons/font-awesome/svgs/solid/money-bill-trend-up.svg +1 -0
  1762. package/theme/icons/font-awesome/svgs/solid/money-bill-wave.svg +1 -0
  1763. package/theme/icons/font-awesome/svgs/solid/money-bill-wheat.svg +1 -0
  1764. package/theme/icons/font-awesome/svgs/solid/money-bill.svg +1 -0
  1765. package/theme/icons/font-awesome/svgs/solid/money-bills.svg +1 -0
  1766. package/theme/icons/font-awesome/svgs/solid/money-check-dollar.svg +1 -0
  1767. package/theme/icons/font-awesome/svgs/solid/money-check.svg +1 -0
  1768. package/theme/icons/font-awesome/svgs/solid/monument.svg +1 -0
  1769. package/theme/icons/font-awesome/svgs/solid/moon.svg +1 -0
  1770. package/theme/icons/font-awesome/svgs/solid/mortar-pestle.svg +1 -0
  1771. package/theme/icons/font-awesome/svgs/solid/mosque.svg +1 -0
  1772. package/theme/icons/font-awesome/svgs/solid/mosquito-net.svg +1 -0
  1773. package/theme/icons/font-awesome/svgs/solid/mosquito.svg +1 -0
  1774. package/theme/icons/font-awesome/svgs/solid/motorcycle.svg +1 -0
  1775. package/theme/icons/font-awesome/svgs/solid/mound.svg +1 -0
  1776. package/theme/icons/font-awesome/svgs/solid/mountain-city.svg +1 -0
  1777. package/theme/icons/font-awesome/svgs/solid/mountain-sun.svg +1 -0
  1778. package/theme/icons/font-awesome/svgs/solid/mountain.svg +1 -0
  1779. package/theme/icons/font-awesome/svgs/solid/mug-hot.svg +1 -0
  1780. package/theme/icons/font-awesome/svgs/solid/mug-saucer.svg +1 -0
  1781. package/theme/icons/font-awesome/svgs/solid/music.svg +1 -0
  1782. package/theme/icons/font-awesome/svgs/solid/n.svg +1 -0
  1783. package/theme/icons/font-awesome/svgs/solid/naira-sign.svg +1 -0
  1784. package/theme/icons/font-awesome/svgs/solid/network-wired.svg +1 -0
  1785. package/theme/icons/font-awesome/svgs/solid/neuter.svg +1 -0
  1786. package/theme/icons/font-awesome/svgs/solid/newspaper.svg +1 -0
  1787. package/theme/icons/font-awesome/svgs/solid/not-equal.svg +1 -0
  1788. package/theme/icons/font-awesome/svgs/solid/notdef.svg +1 -0
  1789. package/theme/icons/font-awesome/svgs/solid/note-sticky.svg +1 -0
  1790. package/theme/icons/font-awesome/svgs/solid/notes-medical.svg +1 -0
  1791. package/theme/icons/font-awesome/svgs/solid/o.svg +1 -0
  1792. package/theme/icons/font-awesome/svgs/solid/object-group.svg +1 -0
  1793. package/theme/icons/font-awesome/svgs/solid/object-ungroup.svg +1 -0
  1794. package/theme/icons/font-awesome/svgs/solid/oil-can.svg +1 -0
  1795. package/theme/icons/font-awesome/svgs/solid/oil-well.svg +1 -0
  1796. package/theme/icons/font-awesome/svgs/solid/om.svg +1 -0
  1797. package/theme/icons/font-awesome/svgs/solid/otter.svg +1 -0
  1798. package/theme/icons/font-awesome/svgs/solid/outdent.svg +1 -0
  1799. package/theme/icons/font-awesome/svgs/solid/p.svg +1 -0
  1800. package/theme/icons/font-awesome/svgs/solid/pager.svg +1 -0
  1801. package/theme/icons/font-awesome/svgs/solid/paint-roller.svg +1 -0
  1802. package/theme/icons/font-awesome/svgs/solid/paintbrush.svg +1 -0
  1803. package/theme/icons/font-awesome/svgs/solid/palette.svg +1 -0
  1804. package/theme/icons/font-awesome/svgs/solid/pallet.svg +1 -0
  1805. package/theme/icons/font-awesome/svgs/solid/panorama.svg +1 -0
  1806. package/theme/icons/font-awesome/svgs/solid/paper-plane.svg +1 -0
  1807. package/theme/icons/font-awesome/svgs/solid/paperclip.svg +1 -0
  1808. package/theme/icons/font-awesome/svgs/solid/parachute-box.svg +1 -0
  1809. package/theme/icons/font-awesome/svgs/solid/paragraph.svg +1 -0
  1810. package/theme/icons/font-awesome/svgs/solid/passport.svg +1 -0
  1811. package/theme/icons/font-awesome/svgs/solid/paste.svg +1 -0
  1812. package/theme/icons/font-awesome/svgs/solid/pause.svg +1 -0
  1813. package/theme/icons/font-awesome/svgs/solid/paw.svg +1 -0
  1814. package/theme/icons/font-awesome/svgs/solid/peace.svg +1 -0
  1815. package/theme/icons/font-awesome/svgs/solid/pen-clip.svg +1 -0
  1816. package/theme/icons/font-awesome/svgs/solid/pen-fancy.svg +1 -0
  1817. package/theme/icons/font-awesome/svgs/solid/pen-nib.svg +1 -0
  1818. package/theme/icons/font-awesome/svgs/solid/pen-ruler.svg +1 -0
  1819. package/theme/icons/font-awesome/svgs/solid/pen-to-square.svg +1 -0
  1820. package/theme/icons/font-awesome/svgs/solid/pen.svg +1 -0
  1821. package/theme/icons/font-awesome/svgs/solid/pencil.svg +1 -0
  1822. package/theme/icons/font-awesome/svgs/solid/people-arrows.svg +1 -0
  1823. package/theme/icons/font-awesome/svgs/solid/people-carry-box.svg +1 -0
  1824. package/theme/icons/font-awesome/svgs/solid/people-group.svg +1 -0
  1825. package/theme/icons/font-awesome/svgs/solid/people-line.svg +1 -0
  1826. package/theme/icons/font-awesome/svgs/solid/people-pulling.svg +1 -0
  1827. package/theme/icons/font-awesome/svgs/solid/people-robbery.svg +1 -0
  1828. package/theme/icons/font-awesome/svgs/solid/people-roof.svg +1 -0
  1829. package/theme/icons/font-awesome/svgs/solid/pepper-hot.svg +1 -0
  1830. package/theme/icons/font-awesome/svgs/solid/percent.svg +1 -0
  1831. package/theme/icons/font-awesome/svgs/solid/person-arrow-down-to-line.svg +1 -0
  1832. package/theme/icons/font-awesome/svgs/solid/person-arrow-up-from-line.svg +1 -0
  1833. package/theme/icons/font-awesome/svgs/solid/person-biking.svg +1 -0
  1834. package/theme/icons/font-awesome/svgs/solid/person-booth.svg +1 -0
  1835. package/theme/icons/font-awesome/svgs/solid/person-breastfeeding.svg +1 -0
  1836. package/theme/icons/font-awesome/svgs/solid/person-burst.svg +1 -0
  1837. package/theme/icons/font-awesome/svgs/solid/person-cane.svg +1 -0
  1838. package/theme/icons/font-awesome/svgs/solid/person-chalkboard.svg +1 -0
  1839. package/theme/icons/font-awesome/svgs/solid/person-circle-check.svg +1 -0
  1840. package/theme/icons/font-awesome/svgs/solid/person-circle-exclamation.svg +1 -0
  1841. package/theme/icons/font-awesome/svgs/solid/person-circle-minus.svg +1 -0
  1842. package/theme/icons/font-awesome/svgs/solid/person-circle-plus.svg +1 -0
  1843. package/theme/icons/font-awesome/svgs/solid/person-circle-question.svg +1 -0
  1844. package/theme/icons/font-awesome/svgs/solid/person-circle-xmark.svg +1 -0
  1845. package/theme/icons/font-awesome/svgs/solid/person-digging.svg +1 -0
  1846. package/theme/icons/font-awesome/svgs/solid/person-dots-from-line.svg +1 -0
  1847. package/theme/icons/font-awesome/svgs/solid/person-dress-burst.svg +1 -0
  1848. package/theme/icons/font-awesome/svgs/solid/person-dress.svg +1 -0
  1849. package/theme/icons/font-awesome/svgs/solid/person-drowning.svg +1 -0
  1850. package/theme/icons/font-awesome/svgs/solid/person-falling-burst.svg +1 -0
  1851. package/theme/icons/font-awesome/svgs/solid/person-falling.svg +1 -0
  1852. package/theme/icons/font-awesome/svgs/solid/person-half-dress.svg +1 -0
  1853. package/theme/icons/font-awesome/svgs/solid/person-harassing.svg +1 -0
  1854. package/theme/icons/font-awesome/svgs/solid/person-hiking.svg +1 -0
  1855. package/theme/icons/font-awesome/svgs/solid/person-military-pointing.svg +1 -0
  1856. package/theme/icons/font-awesome/svgs/solid/person-military-rifle.svg +1 -0
  1857. package/theme/icons/font-awesome/svgs/solid/person-military-to-person.svg +1 -0
  1858. package/theme/icons/font-awesome/svgs/solid/person-praying.svg +1 -0
  1859. package/theme/icons/font-awesome/svgs/solid/person-pregnant.svg +1 -0
  1860. package/theme/icons/font-awesome/svgs/solid/person-rays.svg +1 -0
  1861. package/theme/icons/font-awesome/svgs/solid/person-rifle.svg +1 -0
  1862. package/theme/icons/font-awesome/svgs/solid/person-running.svg +1 -0
  1863. package/theme/icons/font-awesome/svgs/solid/person-shelter.svg +1 -0
  1864. package/theme/icons/font-awesome/svgs/solid/person-skating.svg +1 -0
  1865. package/theme/icons/font-awesome/svgs/solid/person-skiing-nordic.svg +1 -0
  1866. package/theme/icons/font-awesome/svgs/solid/person-skiing.svg +1 -0
  1867. package/theme/icons/font-awesome/svgs/solid/person-snowboarding.svg +1 -0
  1868. package/theme/icons/font-awesome/svgs/solid/person-swimming.svg +1 -0
  1869. package/theme/icons/font-awesome/svgs/solid/person-through-window.svg +1 -0
  1870. package/theme/icons/font-awesome/svgs/solid/person-walking-arrow-loop-left.svg +1 -0
  1871. package/theme/icons/font-awesome/svgs/solid/person-walking-arrow-right.svg +1 -0
  1872. package/theme/icons/font-awesome/svgs/solid/person-walking-dashed-line-arrow-right.svg +1 -0
  1873. package/theme/icons/font-awesome/svgs/solid/person-walking-luggage.svg +1 -0
  1874. package/theme/icons/font-awesome/svgs/solid/person-walking-with-cane.svg +1 -0
  1875. package/theme/icons/font-awesome/svgs/solid/person-walking.svg +1 -0
  1876. package/theme/icons/font-awesome/svgs/solid/person.svg +1 -0
  1877. package/theme/icons/font-awesome/svgs/solid/peseta-sign.svg +1 -0
  1878. package/theme/icons/font-awesome/svgs/solid/peso-sign.svg +1 -0
  1879. package/theme/icons/font-awesome/svgs/solid/phone-flip.svg +1 -0
  1880. package/theme/icons/font-awesome/svgs/solid/phone-slash.svg +1 -0
  1881. package/theme/icons/font-awesome/svgs/solid/phone-volume.svg +1 -0
  1882. package/theme/icons/font-awesome/svgs/solid/phone.svg +1 -0
  1883. package/theme/icons/font-awesome/svgs/solid/photo-film.svg +1 -0
  1884. package/theme/icons/font-awesome/svgs/solid/piggy-bank.svg +1 -0
  1885. package/theme/icons/font-awesome/svgs/solid/pills.svg +1 -0
  1886. package/theme/icons/font-awesome/svgs/solid/pizza-slice.svg +1 -0
  1887. package/theme/icons/font-awesome/svgs/solid/place-of-worship.svg +1 -0
  1888. package/theme/icons/font-awesome/svgs/solid/plane-arrival.svg +1 -0
  1889. package/theme/icons/font-awesome/svgs/solid/plane-circle-check.svg +1 -0
  1890. package/theme/icons/font-awesome/svgs/solid/plane-circle-exclamation.svg +1 -0
  1891. package/theme/icons/font-awesome/svgs/solid/plane-circle-xmark.svg +1 -0
  1892. package/theme/icons/font-awesome/svgs/solid/plane-departure.svg +1 -0
  1893. package/theme/icons/font-awesome/svgs/solid/plane-lock.svg +1 -0
  1894. package/theme/icons/font-awesome/svgs/solid/plane-slash.svg +1 -0
  1895. package/theme/icons/font-awesome/svgs/solid/plane-up.svg +1 -0
  1896. package/theme/icons/font-awesome/svgs/solid/plane.svg +1 -0
  1897. package/theme/icons/font-awesome/svgs/solid/plant-wilt.svg +1 -0
  1898. package/theme/icons/font-awesome/svgs/solid/plate-wheat.svg +1 -0
  1899. package/theme/icons/font-awesome/svgs/solid/play.svg +1 -0
  1900. package/theme/icons/font-awesome/svgs/solid/plug-circle-bolt.svg +1 -0
  1901. package/theme/icons/font-awesome/svgs/solid/plug-circle-check.svg +1 -0
  1902. package/theme/icons/font-awesome/svgs/solid/plug-circle-exclamation.svg +1 -0
  1903. package/theme/icons/font-awesome/svgs/solid/plug-circle-minus.svg +1 -0
  1904. package/theme/icons/font-awesome/svgs/solid/plug-circle-plus.svg +1 -0
  1905. package/theme/icons/font-awesome/svgs/solid/plug-circle-xmark.svg +1 -0
  1906. package/theme/icons/font-awesome/svgs/solid/plug.svg +1 -0
  1907. package/theme/icons/font-awesome/svgs/solid/plus-minus.svg +1 -0
  1908. package/theme/icons/font-awesome/svgs/solid/plus.svg +1 -0
  1909. package/theme/icons/font-awesome/svgs/solid/podcast.svg +1 -0
  1910. package/theme/icons/font-awesome/svgs/solid/poo-storm.svg +1 -0
  1911. package/theme/icons/font-awesome/svgs/solid/poo.svg +1 -0
  1912. package/theme/icons/font-awesome/svgs/solid/poop.svg +1 -0
  1913. package/theme/icons/font-awesome/svgs/solid/power-off.svg +1 -0
  1914. package/theme/icons/font-awesome/svgs/solid/prescription-bottle-medical.svg +1 -0
  1915. package/theme/icons/font-awesome/svgs/solid/prescription-bottle.svg +1 -0
  1916. package/theme/icons/font-awesome/svgs/solid/prescription.svg +1 -0
  1917. package/theme/icons/font-awesome/svgs/solid/print.svg +1 -0
  1918. package/theme/icons/font-awesome/svgs/solid/pump-medical.svg +1 -0
  1919. package/theme/icons/font-awesome/svgs/solid/pump-soap.svg +1 -0
  1920. package/theme/icons/font-awesome/svgs/solid/puzzle-piece.svg +1 -0
  1921. package/theme/icons/font-awesome/svgs/solid/q.svg +1 -0
  1922. package/theme/icons/font-awesome/svgs/solid/qrcode.svg +1 -0
  1923. package/theme/icons/font-awesome/svgs/solid/question.svg +1 -0
  1924. package/theme/icons/font-awesome/svgs/solid/quote-left.svg +1 -0
  1925. package/theme/icons/font-awesome/svgs/solid/quote-right.svg +1 -0
  1926. package/theme/icons/font-awesome/svgs/solid/r.svg +1 -0
  1927. package/theme/icons/font-awesome/svgs/solid/radiation.svg +1 -0
  1928. package/theme/icons/font-awesome/svgs/solid/radio.svg +1 -0
  1929. package/theme/icons/font-awesome/svgs/solid/rainbow.svg +1 -0
  1930. package/theme/icons/font-awesome/svgs/solid/ranking-star.svg +1 -0
  1931. package/theme/icons/font-awesome/svgs/solid/receipt.svg +1 -0
  1932. package/theme/icons/font-awesome/svgs/solid/record-vinyl.svg +1 -0
  1933. package/theme/icons/font-awesome/svgs/solid/rectangle-ad.svg +1 -0
  1934. package/theme/icons/font-awesome/svgs/solid/rectangle-list.svg +1 -0
  1935. package/theme/icons/font-awesome/svgs/solid/rectangle-xmark.svg +1 -0
  1936. package/theme/icons/font-awesome/svgs/solid/recycle.svg +1 -0
  1937. package/theme/icons/font-awesome/svgs/solid/registered.svg +1 -0
  1938. package/theme/icons/font-awesome/svgs/solid/repeat.svg +1 -0
  1939. package/theme/icons/font-awesome/svgs/solid/reply-all.svg +1 -0
  1940. package/theme/icons/font-awesome/svgs/solid/reply.svg +1 -0
  1941. package/theme/icons/font-awesome/svgs/solid/republican.svg +1 -0
  1942. package/theme/icons/font-awesome/svgs/solid/restroom.svg +1 -0
  1943. package/theme/icons/font-awesome/svgs/solid/retweet.svg +1 -0
  1944. package/theme/icons/font-awesome/svgs/solid/ribbon.svg +1 -0
  1945. package/theme/icons/font-awesome/svgs/solid/right-from-bracket.svg +1 -0
  1946. package/theme/icons/font-awesome/svgs/solid/right-left.svg +1 -0
  1947. package/theme/icons/font-awesome/svgs/solid/right-long.svg +1 -0
  1948. package/theme/icons/font-awesome/svgs/solid/right-to-bracket.svg +1 -0
  1949. package/theme/icons/font-awesome/svgs/solid/ring.svg +1 -0
  1950. package/theme/icons/font-awesome/svgs/solid/road-barrier.svg +1 -0
  1951. package/theme/icons/font-awesome/svgs/solid/road-bridge.svg +1 -0
  1952. package/theme/icons/font-awesome/svgs/solid/road-circle-check.svg +1 -0
  1953. package/theme/icons/font-awesome/svgs/solid/road-circle-exclamation.svg +1 -0
  1954. package/theme/icons/font-awesome/svgs/solid/road-circle-xmark.svg +1 -0
  1955. package/theme/icons/font-awesome/svgs/solid/road-lock.svg +1 -0
  1956. package/theme/icons/font-awesome/svgs/solid/road-spikes.svg +1 -0
  1957. package/theme/icons/font-awesome/svgs/solid/road.svg +1 -0
  1958. package/theme/icons/font-awesome/svgs/solid/robot.svg +1 -0
  1959. package/theme/icons/font-awesome/svgs/solid/rocket.svg +1 -0
  1960. package/theme/icons/font-awesome/svgs/solid/rotate-left.svg +1 -0
  1961. package/theme/icons/font-awesome/svgs/solid/rotate-right.svg +1 -0
  1962. package/theme/icons/font-awesome/svgs/solid/rotate.svg +1 -0
  1963. package/theme/icons/font-awesome/svgs/solid/route.svg +1 -0
  1964. package/theme/icons/font-awesome/svgs/solid/rss.svg +1 -0
  1965. package/theme/icons/font-awesome/svgs/solid/ruble-sign.svg +1 -0
  1966. package/theme/icons/font-awesome/svgs/solid/rug.svg +1 -0
  1967. package/theme/icons/font-awesome/svgs/solid/ruler-combined.svg +1 -0
  1968. package/theme/icons/font-awesome/svgs/solid/ruler-horizontal.svg +1 -0
  1969. package/theme/icons/font-awesome/svgs/solid/ruler-vertical.svg +1 -0
  1970. package/theme/icons/font-awesome/svgs/solid/ruler.svg +1 -0
  1971. package/theme/icons/font-awesome/svgs/solid/rupee-sign.svg +1 -0
  1972. package/theme/icons/font-awesome/svgs/solid/rupiah-sign.svg +1 -0
  1973. package/theme/icons/font-awesome/svgs/solid/s.svg +1 -0
  1974. package/theme/icons/font-awesome/svgs/solid/sack-dollar.svg +1 -0
  1975. package/theme/icons/font-awesome/svgs/solid/sack-xmark.svg +1 -0
  1976. package/theme/icons/font-awesome/svgs/solid/sailboat.svg +1 -0
  1977. package/theme/icons/font-awesome/svgs/solid/satellite-dish.svg +1 -0
  1978. package/theme/icons/font-awesome/svgs/solid/satellite.svg +1 -0
  1979. package/theme/icons/font-awesome/svgs/solid/scale-balanced.svg +1 -0
  1980. package/theme/icons/font-awesome/svgs/solid/scale-unbalanced-flip.svg +1 -0
  1981. package/theme/icons/font-awesome/svgs/solid/scale-unbalanced.svg +1 -0
  1982. package/theme/icons/font-awesome/svgs/solid/school-circle-check.svg +1 -0
  1983. package/theme/icons/font-awesome/svgs/solid/school-circle-exclamation.svg +1 -0
  1984. package/theme/icons/font-awesome/svgs/solid/school-circle-xmark.svg +1 -0
  1985. package/theme/icons/font-awesome/svgs/solid/school-flag.svg +1 -0
  1986. package/theme/icons/font-awesome/svgs/solid/school-lock.svg +1 -0
  1987. package/theme/icons/font-awesome/svgs/solid/school.svg +1 -0
  1988. package/theme/icons/font-awesome/svgs/solid/scissors.svg +1 -0
  1989. package/theme/icons/font-awesome/svgs/solid/screwdriver-wrench.svg +1 -0
  1990. package/theme/icons/font-awesome/svgs/solid/screwdriver.svg +1 -0
  1991. package/theme/icons/font-awesome/svgs/solid/scroll-torah.svg +1 -0
  1992. package/theme/icons/font-awesome/svgs/solid/scroll.svg +1 -0
  1993. package/theme/icons/font-awesome/svgs/solid/sd-card.svg +1 -0
  1994. package/theme/icons/font-awesome/svgs/solid/section.svg +1 -0
  1995. package/theme/icons/font-awesome/svgs/solid/seedling.svg +1 -0
  1996. package/theme/icons/font-awesome/svgs/solid/server.svg +1 -0
  1997. package/theme/icons/font-awesome/svgs/solid/shapes.svg +1 -0
  1998. package/theme/icons/font-awesome/svgs/solid/share-from-square.svg +1 -0
  1999. package/theme/icons/font-awesome/svgs/solid/share-nodes.svg +1 -0
  2000. package/theme/icons/font-awesome/svgs/solid/share.svg +1 -0
  2001. package/theme/icons/font-awesome/svgs/solid/sheet-plastic.svg +1 -0
  2002. package/theme/icons/font-awesome/svgs/solid/shekel-sign.svg +1 -0
  2003. package/theme/icons/font-awesome/svgs/solid/shield-cat.svg +1 -0
  2004. package/theme/icons/font-awesome/svgs/solid/shield-dog.svg +1 -0
  2005. package/theme/icons/font-awesome/svgs/solid/shield-halved.svg +1 -0
  2006. package/theme/icons/font-awesome/svgs/solid/shield-heart.svg +1 -0
  2007. package/theme/icons/font-awesome/svgs/solid/shield-virus.svg +1 -0
  2008. package/theme/icons/font-awesome/svgs/solid/shield.svg +1 -0
  2009. package/theme/icons/font-awesome/svgs/solid/ship.svg +1 -0
  2010. package/theme/icons/font-awesome/svgs/solid/shirt.svg +1 -0
  2011. package/theme/icons/font-awesome/svgs/solid/shoe-prints.svg +1 -0
  2012. package/theme/icons/font-awesome/svgs/solid/shop-lock.svg +1 -0
  2013. package/theme/icons/font-awesome/svgs/solid/shop-slash.svg +1 -0
  2014. package/theme/icons/font-awesome/svgs/solid/shop.svg +1 -0
  2015. package/theme/icons/font-awesome/svgs/solid/shower.svg +1 -0
  2016. package/theme/icons/font-awesome/svgs/solid/shrimp.svg +1 -0
  2017. package/theme/icons/font-awesome/svgs/solid/shuffle.svg +1 -0
  2018. package/theme/icons/font-awesome/svgs/solid/shuttle-space.svg +1 -0
  2019. package/theme/icons/font-awesome/svgs/solid/sign-hanging.svg +1 -0
  2020. package/theme/icons/font-awesome/svgs/solid/signal.svg +1 -0
  2021. package/theme/icons/font-awesome/svgs/solid/signature.svg +1 -0
  2022. package/theme/icons/font-awesome/svgs/solid/signs-post.svg +1 -0
  2023. package/theme/icons/font-awesome/svgs/solid/sim-card.svg +1 -0
  2024. package/theme/icons/font-awesome/svgs/solid/sink.svg +1 -0
  2025. package/theme/icons/font-awesome/svgs/solid/sitemap.svg +1 -0
  2026. package/theme/icons/font-awesome/svgs/solid/skull-crossbones.svg +1 -0
  2027. package/theme/icons/font-awesome/svgs/solid/skull.svg +1 -0
  2028. package/theme/icons/font-awesome/svgs/solid/slash.svg +1 -0
  2029. package/theme/icons/font-awesome/svgs/solid/sleigh.svg +1 -0
  2030. package/theme/icons/font-awesome/svgs/solid/sliders.svg +1 -0
  2031. package/theme/icons/font-awesome/svgs/solid/smog.svg +1 -0
  2032. package/theme/icons/font-awesome/svgs/solid/smoking.svg +1 -0
  2033. package/theme/icons/font-awesome/svgs/solid/snowflake.svg +1 -0
  2034. package/theme/icons/font-awesome/svgs/solid/snowman.svg +1 -0
  2035. package/theme/icons/font-awesome/svgs/solid/snowplow.svg +1 -0
  2036. package/theme/icons/font-awesome/svgs/solid/soap.svg +1 -0
  2037. package/theme/icons/font-awesome/svgs/solid/socks.svg +1 -0
  2038. package/theme/icons/font-awesome/svgs/solid/solar-panel.svg +1 -0
  2039. package/theme/icons/font-awesome/svgs/solid/sort-down.svg +1 -0
  2040. package/theme/icons/font-awesome/svgs/solid/sort-up.svg +1 -0
  2041. package/theme/icons/font-awesome/svgs/solid/sort.svg +1 -0
  2042. package/theme/icons/font-awesome/svgs/solid/spa.svg +1 -0
  2043. package/theme/icons/font-awesome/svgs/solid/spaghetti-monster-flying.svg +1 -0
  2044. package/theme/icons/font-awesome/svgs/solid/spell-check.svg +1 -0
  2045. package/theme/icons/font-awesome/svgs/solid/spider.svg +1 -0
  2046. package/theme/icons/font-awesome/svgs/solid/spinner.svg +1 -0
  2047. package/theme/icons/font-awesome/svgs/solid/splotch.svg +1 -0
  2048. package/theme/icons/font-awesome/svgs/solid/spoon.svg +1 -0
  2049. package/theme/icons/font-awesome/svgs/solid/spray-can-sparkles.svg +1 -0
  2050. package/theme/icons/font-awesome/svgs/solid/spray-can.svg +1 -0
  2051. package/theme/icons/font-awesome/svgs/solid/square-arrow-up-right.svg +1 -0
  2052. package/theme/icons/font-awesome/svgs/solid/square-caret-down.svg +1 -0
  2053. package/theme/icons/font-awesome/svgs/solid/square-caret-left.svg +1 -0
  2054. package/theme/icons/font-awesome/svgs/solid/square-caret-right.svg +1 -0
  2055. package/theme/icons/font-awesome/svgs/solid/square-caret-up.svg +1 -0
  2056. package/theme/icons/font-awesome/svgs/solid/square-check.svg +1 -0
  2057. package/theme/icons/font-awesome/svgs/solid/square-envelope.svg +1 -0
  2058. package/theme/icons/font-awesome/svgs/solid/square-full.svg +1 -0
  2059. package/theme/icons/font-awesome/svgs/solid/square-h.svg +1 -0
  2060. package/theme/icons/font-awesome/svgs/solid/square-minus.svg +1 -0
  2061. package/theme/icons/font-awesome/svgs/solid/square-nfi.svg +1 -0
  2062. package/theme/icons/font-awesome/svgs/solid/square-parking.svg +1 -0
  2063. package/theme/icons/font-awesome/svgs/solid/square-pen.svg +1 -0
  2064. package/theme/icons/font-awesome/svgs/solid/square-person-confined.svg +1 -0
  2065. package/theme/icons/font-awesome/svgs/solid/square-phone-flip.svg +1 -0
  2066. package/theme/icons/font-awesome/svgs/solid/square-phone.svg +1 -0
  2067. package/theme/icons/font-awesome/svgs/solid/square-plus.svg +1 -0
  2068. package/theme/icons/font-awesome/svgs/solid/square-poll-horizontal.svg +1 -0
  2069. package/theme/icons/font-awesome/svgs/solid/square-poll-vertical.svg +1 -0
  2070. package/theme/icons/font-awesome/svgs/solid/square-root-variable.svg +1 -0
  2071. package/theme/icons/font-awesome/svgs/solid/square-rss.svg +1 -0
  2072. package/theme/icons/font-awesome/svgs/solid/square-share-nodes.svg +1 -0
  2073. package/theme/icons/font-awesome/svgs/solid/square-up-right.svg +1 -0
  2074. package/theme/icons/font-awesome/svgs/solid/square-virus.svg +1 -0
  2075. package/theme/icons/font-awesome/svgs/solid/square-xmark.svg +1 -0
  2076. package/theme/icons/font-awesome/svgs/solid/square.svg +1 -0
  2077. package/theme/icons/font-awesome/svgs/solid/staff-snake.svg +1 -0
  2078. package/theme/icons/font-awesome/svgs/solid/stairs.svg +1 -0
  2079. package/theme/icons/font-awesome/svgs/solid/stamp.svg +1 -0
  2080. package/theme/icons/font-awesome/svgs/solid/stapler.svg +1 -0
  2081. package/theme/icons/font-awesome/svgs/solid/star-and-crescent.svg +1 -0
  2082. package/theme/icons/font-awesome/svgs/solid/star-half-stroke.svg +1 -0
  2083. package/theme/icons/font-awesome/svgs/solid/star-half.svg +1 -0
  2084. package/theme/icons/font-awesome/svgs/solid/star-of-david.svg +1 -0
  2085. package/theme/icons/font-awesome/svgs/solid/star-of-life.svg +1 -0
  2086. package/theme/icons/font-awesome/svgs/solid/star.svg +1 -0
  2087. package/theme/icons/font-awesome/svgs/solid/sterling-sign.svg +1 -0
  2088. package/theme/icons/font-awesome/svgs/solid/stethoscope.svg +1 -0
  2089. package/theme/icons/font-awesome/svgs/solid/stop.svg +1 -0
  2090. package/theme/icons/font-awesome/svgs/solid/stopwatch-20.svg +1 -0
  2091. package/theme/icons/font-awesome/svgs/solid/stopwatch.svg +1 -0
  2092. package/theme/icons/font-awesome/svgs/solid/store-slash.svg +1 -0
  2093. package/theme/icons/font-awesome/svgs/solid/store.svg +1 -0
  2094. package/theme/icons/font-awesome/svgs/solid/street-view.svg +1 -0
  2095. package/theme/icons/font-awesome/svgs/solid/strikethrough.svg +1 -0
  2096. package/theme/icons/font-awesome/svgs/solid/stroopwafel.svg +1 -0
  2097. package/theme/icons/font-awesome/svgs/solid/subscript.svg +1 -0
  2098. package/theme/icons/font-awesome/svgs/solid/suitcase-medical.svg +1 -0
  2099. package/theme/icons/font-awesome/svgs/solid/suitcase-rolling.svg +1 -0
  2100. package/theme/icons/font-awesome/svgs/solid/suitcase.svg +1 -0
  2101. package/theme/icons/font-awesome/svgs/solid/sun-plant-wilt.svg +1 -0
  2102. package/theme/icons/font-awesome/svgs/solid/sun.svg +1 -0
  2103. package/theme/icons/font-awesome/svgs/solid/superscript.svg +1 -0
  2104. package/theme/icons/font-awesome/svgs/solid/swatchbook.svg +1 -0
  2105. package/theme/icons/font-awesome/svgs/solid/synagogue.svg +1 -0
  2106. package/theme/icons/font-awesome/svgs/solid/syringe.svg +1 -0
  2107. package/theme/icons/font-awesome/svgs/solid/t.svg +1 -0
  2108. package/theme/icons/font-awesome/svgs/solid/table-cells-large.svg +1 -0
  2109. package/theme/icons/font-awesome/svgs/solid/table-cells.svg +1 -0
  2110. package/theme/icons/font-awesome/svgs/solid/table-columns.svg +1 -0
  2111. package/theme/icons/font-awesome/svgs/solid/table-list.svg +1 -0
  2112. package/theme/icons/font-awesome/svgs/solid/table-tennis-paddle-ball.svg +1 -0
  2113. package/theme/icons/font-awesome/svgs/solid/table.svg +1 -0
  2114. package/theme/icons/font-awesome/svgs/solid/tablet-button.svg +1 -0
  2115. package/theme/icons/font-awesome/svgs/solid/tablet-screen-button.svg +1 -0
  2116. package/theme/icons/font-awesome/svgs/solid/tablet.svg +1 -0
  2117. package/theme/icons/font-awesome/svgs/solid/tablets.svg +1 -0
  2118. package/theme/icons/font-awesome/svgs/solid/tachograph-digital.svg +1 -0
  2119. package/theme/icons/font-awesome/svgs/solid/tag.svg +1 -0
  2120. package/theme/icons/font-awesome/svgs/solid/tags.svg +1 -0
  2121. package/theme/icons/font-awesome/svgs/solid/tape.svg +1 -0
  2122. package/theme/icons/font-awesome/svgs/solid/tarp-droplet.svg +1 -0
  2123. package/theme/icons/font-awesome/svgs/solid/tarp.svg +1 -0
  2124. package/theme/icons/font-awesome/svgs/solid/taxi.svg +1 -0
  2125. package/theme/icons/font-awesome/svgs/solid/teeth-open.svg +1 -0
  2126. package/theme/icons/font-awesome/svgs/solid/teeth.svg +1 -0
  2127. package/theme/icons/font-awesome/svgs/solid/temperature-arrow-down.svg +1 -0
  2128. package/theme/icons/font-awesome/svgs/solid/temperature-arrow-up.svg +1 -0
  2129. package/theme/icons/font-awesome/svgs/solid/temperature-empty.svg +1 -0
  2130. package/theme/icons/font-awesome/svgs/solid/temperature-full.svg +1 -0
  2131. package/theme/icons/font-awesome/svgs/solid/temperature-half.svg +1 -0
  2132. package/theme/icons/font-awesome/svgs/solid/temperature-high.svg +1 -0
  2133. package/theme/icons/font-awesome/svgs/solid/temperature-low.svg +1 -0
  2134. package/theme/icons/font-awesome/svgs/solid/temperature-quarter.svg +1 -0
  2135. package/theme/icons/font-awesome/svgs/solid/temperature-three-quarters.svg +1 -0
  2136. package/theme/icons/font-awesome/svgs/solid/tenge-sign.svg +1 -0
  2137. package/theme/icons/font-awesome/svgs/solid/tent-arrow-down-to-line.svg +1 -0
  2138. package/theme/icons/font-awesome/svgs/solid/tent-arrow-left-right.svg +1 -0
  2139. package/theme/icons/font-awesome/svgs/solid/tent-arrow-turn-left.svg +1 -0
  2140. package/theme/icons/font-awesome/svgs/solid/tent-arrows-down.svg +1 -0
  2141. package/theme/icons/font-awesome/svgs/solid/tent.svg +1 -0
  2142. package/theme/icons/font-awesome/svgs/solid/tents.svg +1 -0
  2143. package/theme/icons/font-awesome/svgs/solid/terminal.svg +1 -0
  2144. package/theme/icons/font-awesome/svgs/solid/text-height.svg +1 -0
  2145. package/theme/icons/font-awesome/svgs/solid/text-slash.svg +1 -0
  2146. package/theme/icons/font-awesome/svgs/solid/text-width.svg +1 -0
  2147. package/theme/icons/font-awesome/svgs/solid/thermometer.svg +1 -0
  2148. package/theme/icons/font-awesome/svgs/solid/thumbs-down.svg +1 -0
  2149. package/theme/icons/font-awesome/svgs/solid/thumbs-up.svg +1 -0
  2150. package/theme/icons/font-awesome/svgs/solid/thumbtack.svg +1 -0
  2151. package/theme/icons/font-awesome/svgs/solid/ticket-simple.svg +1 -0
  2152. package/theme/icons/font-awesome/svgs/solid/ticket.svg +1 -0
  2153. package/theme/icons/font-awesome/svgs/solid/timeline.svg +1 -0
  2154. package/theme/icons/font-awesome/svgs/solid/toggle-off.svg +1 -0
  2155. package/theme/icons/font-awesome/svgs/solid/toggle-on.svg +1 -0
  2156. package/theme/icons/font-awesome/svgs/solid/toilet-paper-slash.svg +1 -0
  2157. package/theme/icons/font-awesome/svgs/solid/toilet-paper.svg +1 -0
  2158. package/theme/icons/font-awesome/svgs/solid/toilet-portable.svg +1 -0
  2159. package/theme/icons/font-awesome/svgs/solid/toilet.svg +1 -0
  2160. package/theme/icons/font-awesome/svgs/solid/toilets-portable.svg +1 -0
  2161. package/theme/icons/font-awesome/svgs/solid/toolbox.svg +1 -0
  2162. package/theme/icons/font-awesome/svgs/solid/tooth.svg +1 -0
  2163. package/theme/icons/font-awesome/svgs/solid/torii-gate.svg +1 -0
  2164. package/theme/icons/font-awesome/svgs/solid/tornado.svg +1 -0
  2165. package/theme/icons/font-awesome/svgs/solid/tower-broadcast.svg +1 -0
  2166. package/theme/icons/font-awesome/svgs/solid/tower-cell.svg +1 -0
  2167. package/theme/icons/font-awesome/svgs/solid/tower-observation.svg +1 -0
  2168. package/theme/icons/font-awesome/svgs/solid/tractor.svg +1 -0
  2169. package/theme/icons/font-awesome/svgs/solid/trademark.svg +1 -0
  2170. package/theme/icons/font-awesome/svgs/solid/traffic-light.svg +1 -0
  2171. package/theme/icons/font-awesome/svgs/solid/trailer.svg +1 -0
  2172. package/theme/icons/font-awesome/svgs/solid/train-subway.svg +1 -0
  2173. package/theme/icons/font-awesome/svgs/solid/train-tram.svg +1 -0
  2174. package/theme/icons/font-awesome/svgs/solid/train.svg +1 -0
  2175. package/theme/icons/font-awesome/svgs/solid/transgender.svg +1 -0
  2176. package/theme/icons/font-awesome/svgs/solid/trash-arrow-up.svg +1 -0
  2177. package/theme/icons/font-awesome/svgs/solid/trash-can-arrow-up.svg +1 -0
  2178. package/theme/icons/font-awesome/svgs/solid/trash-can.svg +1 -0
  2179. package/theme/icons/font-awesome/svgs/solid/trash.svg +1 -0
  2180. package/theme/icons/font-awesome/svgs/solid/tree-city.svg +1 -0
  2181. package/theme/icons/font-awesome/svgs/solid/tree.svg +1 -0
  2182. package/theme/icons/font-awesome/svgs/solid/triangle-exclamation.svg +1 -0
  2183. package/theme/icons/font-awesome/svgs/solid/trophy.svg +1 -0
  2184. package/theme/icons/font-awesome/svgs/solid/trowel-bricks.svg +1 -0
  2185. package/theme/icons/font-awesome/svgs/solid/trowel.svg +1 -0
  2186. package/theme/icons/font-awesome/svgs/solid/truck-arrow-right.svg +1 -0
  2187. package/theme/icons/font-awesome/svgs/solid/truck-droplet.svg +1 -0
  2188. package/theme/icons/font-awesome/svgs/solid/truck-fast.svg +1 -0
  2189. package/theme/icons/font-awesome/svgs/solid/truck-field-un.svg +1 -0
  2190. package/theme/icons/font-awesome/svgs/solid/truck-field.svg +1 -0
  2191. package/theme/icons/font-awesome/svgs/solid/truck-front.svg +1 -0
  2192. package/theme/icons/font-awesome/svgs/solid/truck-medical.svg +1 -0
  2193. package/theme/icons/font-awesome/svgs/solid/truck-monster.svg +1 -0
  2194. package/theme/icons/font-awesome/svgs/solid/truck-moving.svg +1 -0
  2195. package/theme/icons/font-awesome/svgs/solid/truck-pickup.svg +1 -0
  2196. package/theme/icons/font-awesome/svgs/solid/truck-plane.svg +1 -0
  2197. package/theme/icons/font-awesome/svgs/solid/truck-ramp-box.svg +1 -0
  2198. package/theme/icons/font-awesome/svgs/solid/truck.svg +1 -0
  2199. package/theme/icons/font-awesome/svgs/solid/tty.svg +1 -0
  2200. package/theme/icons/font-awesome/svgs/solid/turkish-lira-sign.svg +1 -0
  2201. package/theme/icons/font-awesome/svgs/solid/turn-down.svg +1 -0
  2202. package/theme/icons/font-awesome/svgs/solid/turn-up.svg +1 -0
  2203. package/theme/icons/font-awesome/svgs/solid/tv.svg +1 -0
  2204. package/theme/icons/font-awesome/svgs/solid/u.svg +1 -0
  2205. package/theme/icons/font-awesome/svgs/solid/umbrella-beach.svg +1 -0
  2206. package/theme/icons/font-awesome/svgs/solid/umbrella.svg +1 -0
  2207. package/theme/icons/font-awesome/svgs/solid/underline.svg +1 -0
  2208. package/theme/icons/font-awesome/svgs/solid/universal-access.svg +1 -0
  2209. package/theme/icons/font-awesome/svgs/solid/unlock-keyhole.svg +1 -0
  2210. package/theme/icons/font-awesome/svgs/solid/unlock.svg +1 -0
  2211. package/theme/icons/font-awesome/svgs/solid/up-down-left-right.svg +1 -0
  2212. package/theme/icons/font-awesome/svgs/solid/up-down.svg +1 -0
  2213. package/theme/icons/font-awesome/svgs/solid/up-long.svg +1 -0
  2214. package/theme/icons/font-awesome/svgs/solid/up-right-and-down-left-from-center.svg +1 -0
  2215. package/theme/icons/font-awesome/svgs/solid/up-right-from-square.svg +1 -0
  2216. package/theme/icons/font-awesome/svgs/solid/upload.svg +1 -0
  2217. package/theme/icons/font-awesome/svgs/solid/user-astronaut.svg +1 -0
  2218. package/theme/icons/font-awesome/svgs/solid/user-check.svg +1 -0
  2219. package/theme/icons/font-awesome/svgs/solid/user-clock.svg +1 -0
  2220. package/theme/icons/font-awesome/svgs/solid/user-doctor.svg +1 -0
  2221. package/theme/icons/font-awesome/svgs/solid/user-gear.svg +1 -0
  2222. package/theme/icons/font-awesome/svgs/solid/user-graduate.svg +1 -0
  2223. package/theme/icons/font-awesome/svgs/solid/user-group.svg +1 -0
  2224. package/theme/icons/font-awesome/svgs/solid/user-injured.svg +1 -0
  2225. package/theme/icons/font-awesome/svgs/solid/user-large-slash.svg +1 -0
  2226. package/theme/icons/font-awesome/svgs/solid/user-large.svg +1 -0
  2227. package/theme/icons/font-awesome/svgs/solid/user-lock.svg +1 -0
  2228. package/theme/icons/font-awesome/svgs/solid/user-minus.svg +1 -0
  2229. package/theme/icons/font-awesome/svgs/solid/user-ninja.svg +1 -0
  2230. package/theme/icons/font-awesome/svgs/solid/user-nurse.svg +1 -0
  2231. package/theme/icons/font-awesome/svgs/solid/user-pen.svg +1 -0
  2232. package/theme/icons/font-awesome/svgs/solid/user-plus.svg +1 -0
  2233. package/theme/icons/font-awesome/svgs/solid/user-secret.svg +1 -0
  2234. package/theme/icons/font-awesome/svgs/solid/user-shield.svg +1 -0
  2235. package/theme/icons/font-awesome/svgs/solid/user-slash.svg +1 -0
  2236. package/theme/icons/font-awesome/svgs/solid/user-tag.svg +1 -0
  2237. package/theme/icons/font-awesome/svgs/solid/user-tie.svg +1 -0
  2238. package/theme/icons/font-awesome/svgs/solid/user-xmark.svg +1 -0
  2239. package/theme/icons/font-awesome/svgs/solid/user.svg +1 -0
  2240. package/theme/icons/font-awesome/svgs/solid/users-between-lines.svg +1 -0
  2241. package/theme/icons/font-awesome/svgs/solid/users-gear.svg +1 -0
  2242. package/theme/icons/font-awesome/svgs/solid/users-line.svg +1 -0
  2243. package/theme/icons/font-awesome/svgs/solid/users-rays.svg +1 -0
  2244. package/theme/icons/font-awesome/svgs/solid/users-rectangle.svg +1 -0
  2245. package/theme/icons/font-awesome/svgs/solid/users-slash.svg +1 -0
  2246. package/theme/icons/font-awesome/svgs/solid/users-viewfinder.svg +1 -0
  2247. package/theme/icons/font-awesome/svgs/solid/users.svg +1 -0
  2248. package/theme/icons/font-awesome/svgs/solid/utensils.svg +1 -0
  2249. package/theme/icons/font-awesome/svgs/solid/v.svg +1 -0
  2250. package/theme/icons/font-awesome/svgs/solid/van-shuttle.svg +1 -0
  2251. package/theme/icons/font-awesome/svgs/solid/vault.svg +1 -0
  2252. package/theme/icons/font-awesome/svgs/solid/vector-square.svg +1 -0
  2253. package/theme/icons/font-awesome/svgs/solid/venus-double.svg +1 -0
  2254. package/theme/icons/font-awesome/svgs/solid/venus-mars.svg +1 -0
  2255. package/theme/icons/font-awesome/svgs/solid/venus.svg +1 -0
  2256. package/theme/icons/font-awesome/svgs/solid/vest-patches.svg +1 -0
  2257. package/theme/icons/font-awesome/svgs/solid/vest.svg +1 -0
  2258. package/theme/icons/font-awesome/svgs/solid/vial-circle-check.svg +1 -0
  2259. package/theme/icons/font-awesome/svgs/solid/vial-virus.svg +1 -0
  2260. package/theme/icons/font-awesome/svgs/solid/vial.svg +1 -0
  2261. package/theme/icons/font-awesome/svgs/solid/vials.svg +1 -0
  2262. package/theme/icons/font-awesome/svgs/solid/video-slash.svg +1 -0
  2263. package/theme/icons/font-awesome/svgs/solid/video.svg +1 -0
  2264. package/theme/icons/font-awesome/svgs/solid/vihara.svg +1 -0
  2265. package/theme/icons/font-awesome/svgs/solid/virus-covid-slash.svg +1 -0
  2266. package/theme/icons/font-awesome/svgs/solid/virus-covid.svg +1 -0
  2267. package/theme/icons/font-awesome/svgs/solid/virus-slash.svg +1 -0
  2268. package/theme/icons/font-awesome/svgs/solid/virus.svg +1 -0
  2269. package/theme/icons/font-awesome/svgs/solid/viruses.svg +1 -0
  2270. package/theme/icons/font-awesome/svgs/solid/voicemail.svg +1 -0
  2271. package/theme/icons/font-awesome/svgs/solid/volcano.svg +1 -0
  2272. package/theme/icons/font-awesome/svgs/solid/volleyball.svg +1 -0
  2273. package/theme/icons/font-awesome/svgs/solid/volume-high.svg +1 -0
  2274. package/theme/icons/font-awesome/svgs/solid/volume-low.svg +1 -0
  2275. package/theme/icons/font-awesome/svgs/solid/volume-off.svg +1 -0
  2276. package/theme/icons/font-awesome/svgs/solid/volume-xmark.svg +1 -0
  2277. package/theme/icons/font-awesome/svgs/solid/vr-cardboard.svg +1 -0
  2278. package/theme/icons/font-awesome/svgs/solid/w.svg +1 -0
  2279. package/theme/icons/font-awesome/svgs/solid/walkie-talkie.svg +1 -0
  2280. package/theme/icons/font-awesome/svgs/solid/wallet.svg +1 -0
  2281. package/theme/icons/font-awesome/svgs/solid/wand-magic-sparkles.svg +1 -0
  2282. package/theme/icons/font-awesome/svgs/solid/wand-magic.svg +1 -0
  2283. package/theme/icons/font-awesome/svgs/solid/wand-sparkles.svg +1 -0
  2284. package/theme/icons/font-awesome/svgs/solid/warehouse.svg +1 -0
  2285. package/theme/icons/font-awesome/svgs/solid/water-ladder.svg +1 -0
  2286. package/theme/icons/font-awesome/svgs/solid/water.svg +1 -0
  2287. package/theme/icons/font-awesome/svgs/solid/wave-square.svg +1 -0
  2288. package/theme/icons/font-awesome/svgs/solid/weight-hanging.svg +1 -0
  2289. package/theme/icons/font-awesome/svgs/solid/weight-scale.svg +1 -0
  2290. package/theme/icons/font-awesome/svgs/solid/wheat-awn-circle-exclamation.svg +1 -0
  2291. package/theme/icons/font-awesome/svgs/solid/wheat-awn.svg +1 -0
  2292. package/theme/icons/font-awesome/svgs/solid/wheelchair-move.svg +1 -0
  2293. package/theme/icons/font-awesome/svgs/solid/wheelchair.svg +1 -0
  2294. package/theme/icons/font-awesome/svgs/solid/whiskey-glass.svg +1 -0
  2295. package/theme/icons/font-awesome/svgs/solid/wifi.svg +1 -0
  2296. package/theme/icons/font-awesome/svgs/solid/wind.svg +1 -0
  2297. package/theme/icons/font-awesome/svgs/solid/window-maximize.svg +1 -0
  2298. package/theme/icons/font-awesome/svgs/solid/window-minimize.svg +1 -0
  2299. package/theme/icons/font-awesome/svgs/solid/window-restore.svg +1 -0
  2300. package/theme/icons/font-awesome/svgs/solid/wine-bottle.svg +1 -0
  2301. package/theme/icons/font-awesome/svgs/solid/wine-glass-empty.svg +1 -0
  2302. package/theme/icons/font-awesome/svgs/solid/wine-glass.svg +1 -0
  2303. package/theme/icons/font-awesome/svgs/solid/won-sign.svg +1 -0
  2304. package/theme/icons/font-awesome/svgs/solid/worm.svg +1 -0
  2305. package/theme/icons/font-awesome/svgs/solid/wrench.svg +1 -0
  2306. package/theme/icons/font-awesome/svgs/solid/x-ray.svg +1 -0
  2307. package/theme/icons/font-awesome/svgs/solid/x.svg +1 -0
  2308. package/theme/icons/font-awesome/svgs/solid/xmark.svg +1 -0
  2309. package/theme/icons/font-awesome/svgs/solid/xmarks-lines.svg +1 -0
  2310. package/theme/icons/font-awesome/svgs/solid/y.svg +1 -0
  2311. package/theme/icons/font-awesome/svgs/solid/yen-sign.svg +1 -0
  2312. package/theme/icons/font-awesome/svgs/solid/yin-yang.svg +1 -0
  2313. package/theme/icons/font-awesome/svgs/solid/z.svg +1 -0
  2314. package/theme/icons/font-awesome/webfonts/fa-brands-400.ttf +0 -0
  2315. package/theme/icons/font-awesome/webfonts/fa-brands-400.woff2 +0 -0
  2316. package/theme/icons/font-awesome/webfonts/fa-regular-400.ttf +0 -0
  2317. package/theme/icons/font-awesome/webfonts/fa-regular-400.woff2 +0 -0
  2318. package/theme/icons/font-awesome/webfonts/fa-solid-900.ttf +0 -0
  2319. package/theme/icons/font-awesome/webfonts/fa-solid-900.woff2 +0 -0
  2320. package/theme/icons/font-awesome/webfonts/fa-v4compatibility.ttf +0 -0
  2321. package/theme/icons/font-awesome/webfonts/fa-v4compatibility.woff2 +0 -0
  2322. package/theme/koala.css +16 -0
  2323. package/theme/snackbar.css +9 -0
  2324. package/theme/table.css +26 -0
  2325. package/alert/README.md +0 -24
  2326. package/alert/esm2020/index.mjs +0 -7
  2327. package/alert/esm2020/koalarx-ui-alert.mjs +0 -5
  2328. package/alert/esm2020/lib/dialog-alert.component.mjs +0 -48
  2329. package/alert/esm2020/lib/koala.alert-config.interface.mjs +0 -2
  2330. package/alert/esm2020/lib/koala.alert.enum.mjs +0 -9
  2331. package/alert/esm2020/lib/koala.alert.module.mjs +0 -46
  2332. package/alert/esm2020/lib/koala.alert.service.mjs +0 -19
  2333. package/alert/esm2020/lib/koala.request-code-to-alert-enum.translate.mjs +0 -18
  2334. package/alert/fesm2015/koalarx-ui-alert.mjs +0 -139
  2335. package/alert/fesm2015/koalarx-ui-alert.mjs.map +0 -1
  2336. package/alert/fesm2020/koalarx-ui-alert.mjs +0 -137
  2337. package/alert/fesm2020/koalarx-ui-alert.mjs.map +0 -1
  2338. package/alert/index.d.ts +0 -6
  2339. package/alert/lib/dialog-alert.component.d.ts +0 -10
  2340. package/alert/lib/koala.alert-config.interface.d.ts +0 -14
  2341. package/alert/lib/koala.alert.enum.d.ts +0 -7
  2342. package/alert/lib/koala.alert.module.d.ts +0 -12
  2343. package/alert/lib/koala.alert.service.d.ts +0 -10
  2344. package/alert/lib/koala.request-code-to-alert-enum.translate.d.ts +0 -4
  2345. package/alert/package.json +0 -31
  2346. package/button/esm2020/index.mjs +0 -3
  2347. package/button/esm2020/koalarx-ui-button.mjs +0 -5
  2348. package/button/esm2020/lib/button.component.mjs +0 -44
  2349. package/button/esm2020/lib/koala.button.module.mjs +0 -40
  2350. package/button/fesm2015/koalarx-ui-button.mjs +0 -88
  2351. package/button/fesm2015/koalarx-ui-button.mjs.map +0 -1
  2352. package/button/fesm2020/koalarx-ui-button.mjs +0 -88
  2353. package/button/fesm2020/koalarx-ui-button.mjs.map +0 -1
  2354. package/button/index.d.ts +0 -2
  2355. package/button/lib/button.component.d.ts +0 -18
  2356. package/button/lib/koala.button.module.d.ts +0 -12
  2357. package/button/package.json +0 -31
  2358. package/common/README.md +0 -24
  2359. package/common/esm2020/index.mjs +0 -5
  2360. package/common/esm2020/koalarx-ui-common.mjs +0 -5
  2361. package/common/esm2020/lib/mask-options.mjs +0 -4
  2362. package/common/esm2020/lib/services/csv/koala.csv.service.mjs +0 -36
  2363. package/common/esm2020/lib/services/xlsx/koala.xlsx-config.interface.mjs +0 -2
  2364. package/common/esm2020/lib/services/xlsx/koala.xlsx.service.mjs +0 -127
  2365. package/common/fesm2015/koalarx-ui-common.mjs +0 -178
  2366. package/common/fesm2015/koalarx-ui-common.mjs.map +0 -1
  2367. package/common/fesm2020/koalarx-ui-common.mjs +0 -172
  2368. package/common/fesm2020/koalarx-ui-common.mjs.map +0 -1
  2369. package/common/index.d.ts +0 -4
  2370. package/common/lib/mask-options.d.ts +0 -2
  2371. package/common/lib/services/csv/koala.csv.service.d.ts +0 -10
  2372. package/common/lib/services/xlsx/koala.xlsx-config.interface.d.ts +0 -11
  2373. package/common/lib/services/xlsx/koala.xlsx.service.d.ts +0 -12
  2374. package/common/package.json +0 -31
  2375. package/core/README.md +0 -24
  2376. package/core/esm2020/index.mjs +0 -37
  2377. package/core/esm2020/koalarx-ui-core.mjs +0 -5
  2378. package/core/esm2020/lib/environments/koalaEnvironment.mjs +0 -4
  2379. package/core/esm2020/lib/helpers/mat-form-field.helper.mjs +0 -17
  2380. package/core/esm2020/lib/loader/loader-bar-page.component.mjs +0 -24
  2381. package/core/esm2020/lib/loader/loader-bar-page.interface.mjs +0 -2
  2382. package/core/esm2020/lib/loader/loader-config.interface.mjs +0 -2
  2383. package/core/esm2020/lib/ngx-koala.module.mjs +0 -47
  2384. package/core/esm2020/lib/page/koala-language.helper.mjs +0 -114
  2385. package/core/esm2020/lib/page/koala-page-pallet-colors.interface.mjs +0 -2
  2386. package/core/esm2020/lib/page/koala.page.module.mjs +0 -76
  2387. package/core/esm2020/lib/page/koala.user-menu-options.interface.mjs +0 -2
  2388. package/core/esm2020/lib/page/notifications/koala.notification.interface.mjs +0 -2
  2389. package/core/esm2020/lib/page/notifications/notification.component.mjs +0 -42
  2390. package/core/esm2020/lib/page/page.component.mjs +0 -416
  2391. package/core/esm2020/lib/router/koala.parameter-hash-location-stategy.mjs +0 -18
  2392. package/core/esm2020/lib/services/api-requester/factory/koala.response.factory.mjs +0 -44
  2393. package/core/esm2020/lib/services/api-requester/helpers/error/koala.client.error.mjs +0 -3
  2394. package/core/esm2020/lib/services/api-requester/helpers/error/koala.errors.helper.mjs +0 -46
  2395. package/core/esm2020/lib/services/api-requester/helpers/error/koala.not-found.error.mjs +0 -3
  2396. package/core/esm2020/lib/services/api-requester/helpers/error/koala.success.error.mjs +0 -3
  2397. package/core/esm2020/lib/services/api-requester/helpers/error/koala.unhautorized.error.mjs +0 -3
  2398. package/core/esm2020/lib/services/api-requester/helpers/service/koala.request-header.helper.mjs +0 -15
  2399. package/core/esm2020/lib/services/api-requester/koala.api-requester.base.mjs +0 -87
  2400. package/core/esm2020/lib/services/api-requester/koala.api-requester.cache.mjs +0 -38
  2401. package/core/esm2020/lib/services/api-requester/koala.api-requester.service.mjs +0 -158
  2402. package/core/esm2020/lib/services/loader/koala.loader.service.mjs +0 -34
  2403. package/core/esm2020/lib/services/openid/koala-oauth2-config.interface.mjs +0 -2
  2404. package/core/esm2020/lib/services/openid/koala.oauth.config.mjs +0 -30
  2405. package/core/esm2020/lib/services/openid/koala.oauth2.service.mjs +0 -188
  2406. package/core/esm2020/lib/services/request/koala.request.service.mjs +0 -52
  2407. package/core/esm2020/lib/services/token/koala.token.service.mjs +0 -55
  2408. package/core/esm2020/lib/services/token/token.factory.mjs +0 -27
  2409. package/core/fesm2015/koalarx-ui-core.mjs +0 -1507
  2410. package/core/fesm2015/koalarx-ui-core.mjs.map +0 -1
  2411. package/core/fesm2020/koalarx-ui-core.mjs +0 -1468
  2412. package/core/fesm2020/koalarx-ui-core.mjs.map +0 -1
  2413. package/core/index.d.ts +0 -30
  2414. package/core/lib/environments/koalaEnvironment.d.ts +0 -15
  2415. package/core/lib/helpers/mat-form-field.helper.d.ts +0 -3
  2416. package/core/lib/loader/loader-bar-page.component.d.ts +0 -9
  2417. package/core/lib/loader/loader-bar-page.interface.d.ts +0 -5
  2418. package/core/lib/loader/loader-config.interface.d.ts +0 -7
  2419. package/core/lib/ngx-koala.module.d.ts +0 -12
  2420. package/core/lib/page/koala-language.helper.d.ts +0 -19
  2421. package/core/lib/page/koala-page-pallet-colors.interface.d.ts +0 -38
  2422. package/core/lib/page/koala.page.module.d.ts +0 -21
  2423. package/core/lib/page/koala.user-menu-options.interface.d.ts +0 -5
  2424. package/core/lib/page/notifications/koala.notification.interface.d.ts +0 -6
  2425. package/core/lib/page/notifications/notification.component.d.ts +0 -15
  2426. package/core/lib/page/page.component.d.ts +0 -58
  2427. package/core/lib/router/koala.parameter-hash-location-stategy.d.ts +0 -7
  2428. package/core/lib/services/api-requester/factory/koala.response.factory.d.ts +0 -5
  2429. package/core/lib/services/api-requester/helpers/error/koala.client.error.d.ts +0 -2
  2430. package/core/lib/services/api-requester/helpers/error/koala.errors.helper.d.ts +0 -13
  2431. package/core/lib/services/api-requester/helpers/error/koala.not-found.error.d.ts +0 -2
  2432. package/core/lib/services/api-requester/helpers/error/koala.success.error.d.ts +0 -2
  2433. package/core/lib/services/api-requester/helpers/error/koala.unhautorized.error.d.ts +0 -2
  2434. package/core/lib/services/api-requester/helpers/service/koala.request-header.helper.d.ts +0 -4
  2435. package/core/lib/services/api-requester/koala.api-requester.base.d.ts +0 -19
  2436. package/core/lib/services/api-requester/koala.api-requester.cache.d.ts +0 -13
  2437. package/core/lib/services/api-requester/koala.api-requester.service.d.ts +0 -24
  2438. package/core/lib/services/loader/koala.loader.service.d.ts +0 -14
  2439. package/core/lib/services/openid/koala-oauth2-config.interface.d.ts +0 -11
  2440. package/core/lib/services/openid/koala.oauth.config.d.ts +0 -9
  2441. package/core/lib/services/openid/koala.oauth2.service.d.ts +0 -82
  2442. package/core/lib/services/request/koala.request.service.d.ts +0 -11
  2443. package/core/lib/services/token/koala.token.service.d.ts +0 -26
  2444. package/core/lib/services/token/token.factory.d.ts +0 -9
  2445. package/core/package.json +0 -32
  2446. package/core/theme/koala.theme.css +0 -189
  2447. package/dialog/README.md +0 -24
  2448. package/dialog/esm2020/index.mjs +0 -4
  2449. package/dialog/esm2020/koalarx-ui-dialog.mjs +0 -5
  2450. package/dialog/esm2020/lib/dialog.component.mjs +0 -25
  2451. package/dialog/esm2020/lib/koala.dialog-template.interface.mjs +0 -2
  2452. package/dialog/esm2020/lib/koala.dialog.module.mjs +0 -36
  2453. package/dialog/esm2020/lib/koala.dialog.service.mjs +0 -57
  2454. package/dialog/fesm2015/koalarx-ui-dialog.mjs +0 -119
  2455. package/dialog/fesm2015/koalarx-ui-dialog.mjs.map +0 -1
  2456. package/dialog/fesm2020/koalarx-ui-dialog.mjs +0 -119
  2457. package/dialog/fesm2020/koalarx-ui-dialog.mjs.map +0 -1
  2458. package/dialog/index.d.ts +0 -3
  2459. package/dialog/lib/dialog.component.d.ts +0 -11
  2460. package/dialog/lib/koala.dialog-template.interface.d.ts +0 -9
  2461. package/dialog/lib/koala.dialog.module.d.ts +0 -11
  2462. package/dialog/lib/koala.dialog.service.d.ts +0 -14
  2463. package/dialog/package.json +0 -32
  2464. package/dynamic-component/README.md +0 -24
  2465. package/dynamic-component/esm2020/index.mjs +0 -6
  2466. package/dynamic-component/esm2020/koalarx-ui-dynamic-component.mjs +0 -5
  2467. package/dynamic-component/esm2020/lib/koala-dynamic-component.component.mjs +0 -2
  2468. package/dynamic-component/esm2020/lib/koala-dynamic-component.directive.mjs +0 -16
  2469. package/dynamic-component/esm2020/lib/koala-dynamic-component.factory.mjs +0 -41
  2470. package/dynamic-component/esm2020/lib/koala-dynamic-component.mjs +0 -7
  2471. package/dynamic-component/esm2020/lib/koala-dynamic-component.module.mjs +0 -23
  2472. package/dynamic-component/fesm2015/koalarx-ui-dynamic-component.mjs +0 -87
  2473. package/dynamic-component/fesm2015/koalarx-ui-dynamic-component.mjs.map +0 -1
  2474. package/dynamic-component/fesm2020/koalarx-ui-dynamic-component.mjs +0 -86
  2475. package/dynamic-component/fesm2020/koalarx-ui-dynamic-component.mjs.map +0 -1
  2476. package/dynamic-component/index.d.ts +0 -5
  2477. package/dynamic-component/lib/koala-dynamic-component.component.d.ts +0 -3
  2478. package/dynamic-component/lib/koala-dynamic-component.d.ts +0 -6
  2479. package/dynamic-component/lib/koala-dynamic-component.directive.d.ts +0 -8
  2480. package/dynamic-component/lib/koala-dynamic-component.factory.d.ts +0 -14
  2481. package/dynamic-component/lib/koala-dynamic-component.module.d.ts +0 -8
  2482. package/dynamic-component/package.json +0 -31
  2483. package/file-button/README.md +0 -24
  2484. package/file-button/esm2020/index.mjs +0 -5
  2485. package/file-button/esm2020/koalarx-ui-file-button.mjs +0 -5
  2486. package/file-button/esm2020/lib/file-button.component.mjs +0 -125
  2487. package/file-button/esm2020/lib/koala.btn-file.service.mjs +0 -25
  2488. package/file-button/esm2020/lib/koala.file-button.module.mjs +0 -36
  2489. package/file-button/esm2020/lib/koala.file.interface.mjs +0 -2
  2490. package/file-button/fesm2015/koalarx-ui-file-button.mjs +0 -197
  2491. package/file-button/fesm2015/koalarx-ui-file-button.mjs.map +0 -1
  2492. package/file-button/fesm2020/koalarx-ui-file-button.mjs +0 -187
  2493. package/file-button/fesm2020/koalarx-ui-file-button.mjs.map +0 -1
  2494. package/file-button/index.d.ts +0 -4
  2495. package/file-button/lib/file-button.component.d.ts +0 -29
  2496. package/file-button/lib/koala.btn-file.service.d.ts +0 -11
  2497. package/file-button/lib/koala.file-button.module.d.ts +0 -11
  2498. package/file-button/lib/koala.file.interface.d.ts +0 -5
  2499. package/file-button/package.json +0 -31
  2500. package/folder-page/README.md +0 -24
  2501. package/folder-page/esm2020/index.mjs +0 -4
  2502. package/folder-page/esm2020/koalarx-ui-folder-page.mjs +0 -5
  2503. package/folder-page/esm2020/lib/folder.component.mjs +0 -70
  2504. package/folder-page/esm2020/lib/koala-navigate-history.interface.mjs +0 -2
  2505. package/folder-page/esm2020/lib/koala.folder-page.module.mjs +0 -40
  2506. package/folder-page/fesm2015/koalarx-ui-folder-page.mjs +0 -115
  2507. package/folder-page/fesm2015/koalarx-ui-folder-page.mjs.map +0 -1
  2508. package/folder-page/fesm2020/koalarx-ui-folder-page.mjs +0 -114
  2509. package/folder-page/fesm2020/koalarx-ui-folder-page.mjs.map +0 -1
  2510. package/folder-page/index.d.ts +0 -3
  2511. package/folder-page/lib/folder.component.d.ts +0 -21
  2512. package/folder-page/lib/koala-navigate-history.interface.d.ts +0 -4
  2513. package/folder-page/lib/koala.folder-page.module.d.ts +0 -12
  2514. package/folder-page/package.json +0 -31
  2515. package/form/README.md +0 -24
  2516. package/form/esm2020/index.mjs +0 -20
  2517. package/form/esm2020/koalarx-ui-form.mjs +0 -5
  2518. package/form/esm2020/lib/btn-submit/btn-submit.component.mjs +0 -49
  2519. package/form/esm2020/lib/directives/koala-autofocus.directive.mjs +0 -25
  2520. package/form/esm2020/lib/dynamic-form/builder/dynamic-form.builder.mjs +0 -138
  2521. package/form/esm2020/lib/dynamic-form/builder/fields/autocomplete.builder.mjs +0 -38
  2522. package/form/esm2020/lib/dynamic-form/builder/fields/field.base.mjs +0 -148
  2523. package/form/esm2020/lib/dynamic-form/builder/fields/field.builder.mjs +0 -7
  2524. package/form/esm2020/lib/dynamic-form/builder/fields/more-items.builder.mjs +0 -57
  2525. package/form/esm2020/lib/dynamic-form/dynamic-form.component.mjs +0 -598
  2526. package/form/esm2020/lib/dynamic-form/enums/dynamic-form-type-field.enum.mjs +0 -35
  2527. package/form/esm2020/lib/dynamic-form/interfaces/koala-custom-validator-fn.interface.mjs +0 -2
  2528. package/form/esm2020/lib/dynamic-form/interfaces/koala.dynamic-autocomplete-options.interface.mjs +0 -2
  2529. package/form/esm2020/lib/dynamic-form/interfaces/koala.dynamic-form-autocomplete-multiple-config.interface.mjs +0 -2
  2530. package/form/esm2020/lib/dynamic-form/interfaces/koala.dynamic-form-config.interface.mjs +0 -2
  2531. package/form/esm2020/lib/dynamic-form/interfaces/koala.dynamic-form-field.interface.mjs +0 -2
  2532. package/form/esm2020/lib/dynamic-form/interfaces/koala.dynamic-form-more-itens-show-field-config.interface.mjs +0 -2
  2533. package/form/esm2020/lib/dynamic-form/interfaces/koala.dynamic-form-show-field.interface.mjs +0 -2
  2534. package/form/esm2020/lib/dynamic-form/interfaces/koala.dynamic-set-value.interface.mjs +0 -2
  2535. package/form/esm2020/lib/dynamic-form/koala.dynamic-form.service.mjs +0 -212
  2536. package/form/esm2020/lib/dynamic-form/validators/autocomplete-selected.validator.mjs +0 -10
  2537. package/form/esm2020/lib/dynamic-form/validators/cnpj.validator.mjs +0 -10
  2538. package/form/esm2020/lib/dynamic-form/validators/cpf.validator.mjs +0 -10
  2539. package/form/esm2020/lib/dynamic-form/validators/date-max.validator.mjs +0 -11
  2540. package/form/esm2020/lib/dynamic-form/validators/date-min.validator.mjs +0 -11
  2541. package/form/esm2020/lib/dynamic-form/validators/koala-dynamic-form-validator-result.helper.mjs +0 -10
  2542. package/form/esm2020/lib/dynamic-form/validators/validation.helper.mjs +0 -86
  2543. package/form/esm2020/lib/form.abstract.mjs +0 -42
  2544. package/form/esm2020/lib/koala.form.module.mjs +0 -136
  2545. package/form/esm2020/lib/show-invalid-fields/show-invalid-fields.mjs +0 -9
  2546. package/form/fesm2015/koalarx-ui-form.mjs +0 -1612
  2547. package/form/fesm2015/koalarx-ui-form.mjs.map +0 -1
  2548. package/form/fesm2020/koalarx-ui-form.mjs +0 -1593
  2549. package/form/fesm2020/koalarx-ui-form.mjs.map +0 -1
  2550. package/form/index.d.ts +0 -19
  2551. package/form/lib/btn-submit/btn-submit.component.d.ts +0 -20
  2552. package/form/lib/directives/koala-autofocus.directive.d.ts +0 -10
  2553. package/form/lib/dynamic-form/builder/dynamic-form.builder.d.ts +0 -21
  2554. package/form/lib/dynamic-form/builder/fields/autocomplete.builder.d.ts +0 -16
  2555. package/form/lib/dynamic-form/builder/fields/field.base.d.ts +0 -42
  2556. package/form/lib/dynamic-form/builder/fields/field.builder.d.ts +0 -8
  2557. package/form/lib/dynamic-form/builder/fields/more-items.builder.d.ts +0 -17
  2558. package/form/lib/dynamic-form/dynamic-form.component.d.ts +0 -54
  2559. package/form/lib/dynamic-form/enums/dynamic-form-type-field.enum.d.ts +0 -33
  2560. package/form/lib/dynamic-form/interfaces/koala-custom-validator-fn.interface.d.ts +0 -4
  2561. package/form/lib/dynamic-form/interfaces/koala.dynamic-autocomplete-options.interface.d.ts +0 -4
  2562. package/form/lib/dynamic-form/interfaces/koala.dynamic-form-autocomplete-multiple-config.interface.d.ts +0 -4
  2563. package/form/lib/dynamic-form/interfaces/koala.dynamic-form-config.interface.d.ts +0 -11
  2564. package/form/lib/dynamic-form/interfaces/koala.dynamic-form-field.interface.d.ts +0 -69
  2565. package/form/lib/dynamic-form/interfaces/koala.dynamic-form-more-itens-show-field-config.interface.d.ts +0 -8
  2566. package/form/lib/dynamic-form/interfaces/koala.dynamic-form-show-field.interface.d.ts +0 -5
  2567. package/form/lib/dynamic-form/interfaces/koala.dynamic-set-value.interface.d.ts +0 -4
  2568. package/form/lib/dynamic-form/koala.dynamic-form.service.d.ts +0 -28
  2569. package/form/lib/dynamic-form/validators/autocomplete-selected.validator.d.ts +0 -4
  2570. package/form/lib/dynamic-form/validators/cnpj.validator.d.ts +0 -4
  2571. package/form/lib/dynamic-form/validators/cpf.validator.d.ts +0 -4
  2572. package/form/lib/dynamic-form/validators/date-max.validator.d.ts +0 -2
  2573. package/form/lib/dynamic-form/validators/date-min.validator.d.ts +0 -2
  2574. package/form/lib/dynamic-form/validators/koala-dynamic-form-validator-result.helper.d.ts +0 -7
  2575. package/form/lib/dynamic-form/validators/validation.helper.d.ts +0 -4
  2576. package/form/lib/form.abstract.d.ts +0 -16
  2577. package/form/lib/koala.form.module.d.ts +0 -25
  2578. package/form/lib/show-invalid-fields/show-invalid-fields.d.ts +0 -6
  2579. package/form/package.json +0 -32
  2580. package/icon/esm2020/index.mjs +0 -4
  2581. package/icon/esm2020/koalarx-ui-icon.mjs +0 -5
  2582. package/icon/esm2020/lib/icon.component.mjs +0 -46
  2583. package/icon/esm2020/lib/koala.icon.module.mjs +0 -24
  2584. package/icon/esm2020/lib/koala.icon.type.mjs +0 -2
  2585. package/icon/fesm2015/koalarx-ui-icon.mjs +0 -75
  2586. package/icon/fesm2015/koalarx-ui-icon.mjs.map +0 -1
  2587. package/icon/fesm2020/koalarx-ui-icon.mjs +0 -74
  2588. package/icon/fesm2020/koalarx-ui-icon.mjs.map +0 -1
  2589. package/icon/index.d.ts +0 -3
  2590. package/icon/lib/icon.component.d.ts +0 -14
  2591. package/icon/lib/koala.icon.module.d.ts +0 -8
  2592. package/icon/lib/koala.icon.type.d.ts +0 -1
  2593. package/icon/package.json +0 -31
  2594. package/icons-animated/README.md +0 -24
  2595. package/icons-animated/esm2020/index.mjs +0 -5
  2596. package/icons-animated/esm2020/koalarx-ui-icons-animated.mjs +0 -5
  2597. package/icons-animated/esm2020/lib/icons/downloading/downloading-icon-animated.component.mjs +0 -23
  2598. package/icons-animated/esm2020/lib/icons/loading/loading-icon-animated.component.mjs +0 -23
  2599. package/icons-animated/esm2020/lib/icons-animated.component.mjs +0 -20
  2600. package/icons-animated/esm2020/lib/icons-animated.service.mjs +0 -32
  2601. package/icons-animated/esm2020/lib/koala-icons-animated.module.mjs +0 -30
  2602. package/icons-animated/fesm2015/koalarx-ui-icons-animated.mjs +0 -120
  2603. package/icons-animated/fesm2015/koalarx-ui-icons-animated.mjs.map +0 -1
  2604. package/icons-animated/fesm2020/koalarx-ui-icons-animated.mjs +0 -118
  2605. package/icons-animated/fesm2020/koalarx-ui-icons-animated.mjs.map +0 -1
  2606. package/icons-animated/index.d.ts +0 -4
  2607. package/icons-animated/lib/icons/downloading/downloading-icon-animated.component.d.ts +0 -12
  2608. package/icons-animated/lib/icons/loading/loading-icon-animated.component.d.ts +0 -12
  2609. package/icons-animated/lib/icons-animated.component.d.ts +0 -8
  2610. package/icons-animated/lib/icons-animated.service.d.ts +0 -9
  2611. package/icons-animated/lib/koala-icons-animated.module.d.ts +0 -10
  2612. package/icons-animated/package.json +0 -31
  2613. package/list/README.md +0 -24
  2614. package/list/esm2020/index.mjs +0 -12
  2615. package/list/esm2020/koalarx-ui-list.mjs +0 -5
  2616. package/list/esm2020/lib/koala-list-btn-collapse-sub-list-config.interface.mjs +0 -2
  2617. package/list/esm2020/lib/koala-list-filter.interface.mjs +0 -2
  2618. package/list/esm2020/lib/koala-list-form-filter.interface.mjs +0 -2
  2619. package/list/esm2020/lib/koala-list-item-menu-option.interface.mjs +0 -2
  2620. package/list/esm2020/lib/koala-list-item.interface.mjs +0 -2
  2621. package/list/esm2020/lib/koala.list-config.interface.mjs +0 -2
  2622. package/list/esm2020/lib/koala.list.module.mjs +0 -68
  2623. package/list/esm2020/lib/koala.list.service.mjs +0 -15
  2624. package/list/esm2020/lib/list-builder/list.builder.mjs +0 -105
  2625. package/list/esm2020/lib/list.abstract.mjs +0 -171
  2626. package/list/esm2020/lib/list.component.mjs +0 -172
  2627. package/list/esm2020/lib/providers/pagination/pagination.provider.mjs +0 -32
  2628. package/list/fesm2015/koalarx-ui-list.mjs +0 -580
  2629. package/list/fesm2015/koalarx-ui-list.mjs.map +0 -1
  2630. package/list/fesm2020/koalarx-ui-list.mjs +0 -549
  2631. package/list/fesm2020/koalarx-ui-list.mjs.map +0 -1
  2632. package/list/index.d.ts +0 -11
  2633. package/list/lib/koala-list-btn-collapse-sub-list-config.interface.d.ts +0 -8
  2634. package/list/lib/koala-list-filter.interface.d.ts +0 -10
  2635. package/list/lib/koala-list-form-filter.interface.d.ts +0 -8
  2636. package/list/lib/koala-list-item-menu-option.interface.d.ts +0 -7
  2637. package/list/lib/koala-list-item.interface.d.ts +0 -13
  2638. package/list/lib/koala.list-config.interface.d.ts +0 -37
  2639. package/list/lib/koala.list.module.d.ts +0 -17
  2640. package/list/lib/koala.list.service.d.ts +0 -7
  2641. package/list/lib/list-builder/list.builder.d.ts +0 -32
  2642. package/list/lib/list.abstract.d.ts +0 -47
  2643. package/list/lib/list.component.d.ts +0 -54
  2644. package/list/lib/providers/pagination/pagination.provider.d.ts +0 -9
  2645. package/list/package.json +0 -32
  2646. package/menu/README.md +0 -24
  2647. package/menu/esm2020/index.mjs +0 -6
  2648. package/menu/esm2020/koalarx-ui-menu.mjs +0 -5
  2649. package/menu/esm2020/lib/koala.menu-module.interface.mjs +0 -2
  2650. package/menu/esm2020/lib/koala.menu-tool.interface.mjs +0 -2
  2651. package/menu/esm2020/lib/koala.menu.module.mjs +0 -36
  2652. package/menu/esm2020/lib/koala.menu.service.mjs +0 -24
  2653. package/menu/esm2020/lib/menu.component.mjs +0 -100
  2654. package/menu/fesm2015/koalarx-ui-menu.mjs +0 -165
  2655. package/menu/fesm2015/koalarx-ui-menu.mjs.map +0 -1
  2656. package/menu/fesm2020/koalarx-ui-menu.mjs +0 -160
  2657. package/menu/fesm2020/koalarx-ui-menu.mjs.map +0 -1
  2658. package/menu/index.d.ts +0 -5
  2659. package/menu/lib/koala.menu-module.interface.d.ts +0 -12
  2660. package/menu/lib/koala.menu-tool.interface.d.ts +0 -6
  2661. package/menu/lib/koala.menu.module.d.ts +0 -11
  2662. package/menu/lib/koala.menu.service.d.ts +0 -10
  2663. package/menu/lib/menu.component.d.ts +0 -22
  2664. package/menu/package.json +0 -31
  2665. package/question/README.md +0 -24
  2666. package/question/esm2020/index.mjs +0 -5
  2667. package/question/esm2020/koalarx-ui-question.mjs +0 -5
  2668. package/question/esm2020/lib/dialog-question.component.mjs +0 -25
  2669. package/question/esm2020/lib/koala-question-config.interface.mjs +0 -2
  2670. package/question/esm2020/lib/koala.question.module.mjs +0 -40
  2671. package/question/esm2020/lib/koala.question.service.mjs +0 -26
  2672. package/question/fesm2015/koalarx-ui-question.mjs +0 -93
  2673. package/question/fesm2015/koalarx-ui-question.mjs.map +0 -1
  2674. package/question/fesm2020/koalarx-ui-question.mjs +0 -91
  2675. package/question/fesm2020/koalarx-ui-question.mjs.map +0 -1
  2676. package/question/index.d.ts +0 -4
  2677. package/question/lib/dialog-question.component.d.ts +0 -10
  2678. package/question/lib/koala-question-config.interface.d.ts +0 -5
  2679. package/question/lib/koala.question.module.d.ts +0 -12
  2680. package/question/lib/koala.question.service.d.ts +0 -10
  2681. package/question/package.json +0 -31
  2682. package/snackbar/README.md +0 -24
  2683. package/snackbar/esm2020/index.mjs +0 -5
  2684. package/snackbar/esm2020/koalarx-ui-snackbar.mjs +0 -5
  2685. package/snackbar/esm2020/lib/koala.snackbar.component.mjs +0 -22
  2686. package/snackbar/esm2020/lib/koala.snackbar.interface.mjs +0 -2
  2687. package/snackbar/esm2020/lib/koala.snackbar.module.mjs +0 -36
  2688. package/snackbar/esm2020/lib/koala.snackbar.service.mjs +0 -35
  2689. package/snackbar/fesm2015/koalarx-ui-snackbar.mjs +0 -95
  2690. package/snackbar/fesm2015/koalarx-ui-snackbar.mjs.map +0 -1
  2691. package/snackbar/fesm2020/koalarx-ui-snackbar.mjs +0 -93
  2692. package/snackbar/fesm2020/koalarx-ui-snackbar.mjs.map +0 -1
  2693. package/snackbar/index.d.ts +0 -4
  2694. package/snackbar/lib/koala.snackbar.component.d.ts +0 -10
  2695. package/snackbar/lib/koala.snackbar.interface.d.ts +0 -4
  2696. package/snackbar/lib/koala.snackbar.module.d.ts +0 -10
  2697. package/snackbar/lib/koala.snackbar.service.d.ts +0 -12
  2698. package/snackbar/package.json +0 -31
@@ -1,598 +0,0 @@
1
- import { Validators } from '@angular/forms';
2
- import { DynamicFormTypeFieldEnum } from './enums/dynamic-form-type-field.enum';
3
- import { CpfValidator } from './validators/cpf.validator';
4
- import { CnpjValidator } from './validators/cnpj.validator';
5
- import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
6
- import { FormAbstract } from '../form.abstract';
7
- import { debounceTime } from 'rxjs/operators';
8
- import { BehaviorSubject } from 'rxjs';
9
- import { AutocompleteSelectedValidator } from './validators/autocomplete-selected.validator';
10
- import { delay } from "@koalarx/utils/operators/delay";
11
- import { koala } from "@koalarx/utils";
12
- import { DateMinValidator } from "./validators/date-min.validator";
13
- import { DateMaxValidator } from "./validators/date-max.validator";
14
- import { KoalaLanguageHelper } from "@koalarx/ui/core";
15
- import { randomString } from "@koalarx/utils/operators/string";
16
- import * as i0 from "@angular/core";
17
- import * as i1 from "@angular/forms";
18
- import * as i2 from "./koala.dynamic-form.service";
19
- import * as i3 from "@angular/common";
20
- import * as i4 from "ngx-mask";
21
- import * as i5 from "ng2-currency-mask";
22
- import * as i6 from "@koalarx/ui/file-button";
23
- import * as i7 from "@angular/material/input";
24
- import * as i8 from "@angular/material/form-field";
25
- import * as i9 from "@angular/cdk/text-field";
26
- import * as i10 from "@angular/material/select";
27
- import * as i11 from "@angular/material/core";
28
- import * as i12 from "@angular/material/radio";
29
- import * as i13 from "@angular/material/checkbox";
30
- import * as i14 from "@angular/material/autocomplete";
31
- import * as i15 from "@angular/material/button";
32
- import * as i16 from "@angular/material/icon";
33
- import * as i17 from "@angular/material/expansion";
34
- import * as i18 from "@angular/material/chips";
35
- import * as i19 from "@koalarx/ui/button";
36
- import * as i20 from "@angular/material/progress-spinner";
37
- import * as i21 from "../directives/koala-autofocus.directive";
38
- export class DynamicFormComponent extends FormAbstract {
39
- constructor(fb, dynamicFormService) {
40
- super(() => this.form);
41
- this.fb = fb;
42
- this.dynamicFormService = dynamicFormService;
43
- this.tabIndexStart = 1;
44
- this.typeField = DynamicFormTypeFieldEnum;
45
- this.hoursAndMinutesMask = '00:000';
46
- this.errorMessage = KoalaLanguageHelper;
47
- this.formId = randomString(25, {
48
- lowercase: true,
49
- uppercase: true,
50
- numbers: false,
51
- specialCharacters: false
52
- });
53
- }
54
- ngOnInit() {
55
- if (!this.form.get('formData')) {
56
- this.form.addControl('formData', this.fb.array([]));
57
- }
58
- this.controls = this.form.get('formData');
59
- this.formConfig?.forEach((config, indexConfig) => {
60
- const newFormGroup = this.newControl(config);
61
- if (config.asyncValidators) {
62
- newFormGroup.get('value').setAsyncValidators(config.asyncValidators);
63
- }
64
- newFormGroup.get('value').updateValueAndValidity();
65
- if (config.type === DynamicFormTypeFieldEnum.dynamicForm) {
66
- const formGroupDynamicFormsSubject = newFormGroup.get('dynamicFormConfig').value;
67
- formGroupDynamicFormsSubject.subscribe(formGroupConfig => {
68
- if (formGroupConfig) {
69
- formGroupConfig.form.valueChanges.subscribe(() => {
70
- if (formGroupConfig.form.valid && (config.valueChanges || this.showFieldsMoreItensConfig)) {
71
- const value = this.dynamicFormService.emitData(formGroupConfig.form);
72
- newFormGroup.get('value').setValue(value);
73
- }
74
- });
75
- }
76
- });
77
- }
78
- if (config.valueChanges ||
79
- config.type === DynamicFormTypeFieldEnum.autocomplete ||
80
- config.type === DynamicFormTypeFieldEnum.dynamicForm ||
81
- this.showFieldsMoreItensConfig) {
82
- if (config.type === DynamicFormTypeFieldEnum.autocomplete) {
83
- const autocompleteOptionsSubject = newFormGroup.get('autocompleteOptions').value;
84
- if (autocompleteOptionsSubject) {
85
- autocompleteOptionsSubject.subscribe(options => newFormGroup.get('autocompleteOptionsFiltered').value.next(options));
86
- }
87
- }
88
- newFormGroup.get('value')
89
- .valueChanges
90
- .pipe(debounceTime(300))
91
- .subscribe(async (value) => {
92
- await this.setConfigDynamicForm(newFormGroup);
93
- if (config.type === DynamicFormTypeFieldEnum.autocomplete) {
94
- if (value && (value.hasOwnProperty('value') &&
95
- value.hasOwnProperty('name') &&
96
- Object.keys(value).length === 2) || (Array.isArray(value) &&
97
- newFormGroup.get('multiple').value)) {
98
- if (newFormGroup.get('multiple').value) {
99
- if (Array.isArray(value)) {
100
- newFormGroup.get('autocompleteSelectedValue').setValue(value);
101
- newFormGroup.get('value').setValue(value[value.length - 1], { emitEvent: false });
102
- }
103
- else {
104
- if (this.validateAutocompleteSelect(newFormGroup.get('autocompleteSelectedValue').value, value)) {
105
- newFormGroup.get('autocompleteSelectedValue').value.push(value);
106
- }
107
- }
108
- const autocompleteInput = document.querySelector(`#${this.formId} input#autocomplete-${newFormGroup.get('name')?.value}`);
109
- if (autocompleteInput) {
110
- autocompleteInput.value = '';
111
- }
112
- }
113
- else {
114
- newFormGroup.get('autocompleteSelectedValue').setValue(value);
115
- }
116
- }
117
- else if (!newFormGroup.get('multiple').value) {
118
- newFormGroup.get('autocompleteSelectedValue').setValue(koala(this.formConfig)
119
- .array()
120
- .filter(newFormGroup.get('name').value, 'name')
121
- .getValue()[0]?.autocompleteDefaultValueOnClear ?? null);
122
- }
123
- if (config.type === DynamicFormTypeFieldEnum.autocomplete) {
124
- if (config.autocompleteType === 'all') {
125
- const autocompleteOptionsSubject = newFormGroup.get('autocompleteOptions').value;
126
- newFormGroup.get('autocompleteOptionsFiltered').value.next(this.autocompleteFilter(autocompleteOptionsSubject.value, value));
127
- }
128
- else if (config.autocompleteType === 'onDemand' && typeof value !== "object") {
129
- const loader = newFormGroup.get('autocompleteLoading').value;
130
- loader.next(true);
131
- config.autocompleteFilter(value).subscribe(options => {
132
- newFormGroup.get('autocompleteOptionsFiltered').value.next(options);
133
- loader.next(false);
134
- });
135
- }
136
- }
137
- }
138
- if (config.valueChanges) {
139
- if (config.type === DynamicFormTypeFieldEnum.autocomplete) {
140
- config.valueChanges((newFormGroup.get('multiple').value ?
141
- newFormGroup.get('autocompleteSelectedValue').value.map(item => item.value) :
142
- newFormGroup.get('autocompleteSelectedValue').value?.value));
143
- }
144
- else {
145
- config.valueChanges(value);
146
- }
147
- }
148
- });
149
- }
150
- this.controls.push(newFormGroup);
151
- if (config.moreItemsConfig) {
152
- if (config.moreItemsMinItems > 0) {
153
- for (let min = 0; min < config.moreItemsMinItems; min++) {
154
- if (min <= config.moreItemsMaxItems) {
155
- this.addMoreItem(indexConfig);
156
- }
157
- }
158
- }
159
- if (config.moreItemsConfig.setValues) {
160
- config.moreItemsConfig
161
- .setValues
162
- .subscribe(async (values) => {
163
- if (values.length > 0) {
164
- values.forEach((itemValue, indexValue) => {
165
- if (!this.controls.controls[indexConfig].get('moreItemsConfig').value[indexValue]) {
166
- this.addMoreItem(indexConfig);
167
- }
168
- setTimeout(() => {
169
- this.setValuesOnFields(itemValue, this.controls.controls[indexConfig].get('moreItemsConfig').value[indexValue].form);
170
- }, 300);
171
- });
172
- }
173
- });
174
- }
175
- }
176
- });
177
- if (this.showFields) {
178
- this.changeVisibilityFields(this.showFields, this.form);
179
- }
180
- if (this.setValues) {
181
- this.setValuesOnFields(this.setValues, this.form);
182
- }
183
- }
184
- isValidNewAutocompleteOption(value) {
185
- return !!value && typeof value === 'string';
186
- }
187
- hoursAndMinutesApplyMask(index, event) {
188
- const control = this.controls?.controls[index];
189
- const type = control?.get('type').value;
190
- if (type === DynamicFormTypeFieldEnum.hoursAndMinutes) {
191
- const value = control?.get('value').value;
192
- if (event.key == 'Backspace' && value.length < 6) {
193
- this.hoursAndMinutesMask = '00:000';
194
- }
195
- else if (event.key != 'Backspace' && value.length >= 6) {
196
- this.hoursAndMinutesMask = '000:00';
197
- }
198
- }
199
- }
200
- passwordView(index) {
201
- const control = this.controls?.controls[index];
202
- const hidePassword = !control?.get('hidePassword').value;
203
- control?.get('hidePassword').setValue(hidePassword);
204
- control?.get('type').setValue(hidePassword ?
205
- DynamicFormTypeFieldEnum.password :
206
- DynamicFormTypeFieldEnum.text);
207
- }
208
- addMoreItem(propIndex) {
209
- if (this.controls.controls[propIndex].get('moreItemsConfig').value.length < this.controls.controls[propIndex].get('moreItemsMaxItems').value) {
210
- const formGroup = this.fb.group({});
211
- this.controls.controls[propIndex].get('moreItemsConfig').value.push({
212
- form: formGroup,
213
- formConfig: this.formConfig[propIndex].moreItemsConfig.formConfig,
214
- showFields: new BehaviorSubject([]),
215
- showFieldsMoreItensConfig: this.formConfig[propIndex].moreItemsConfig.showFieldsConfig
216
- });
217
- this.controls.controls[propIndex].get('moreItemsExpanded').setValue(this.controls.controls[propIndex].get('moreItemsConfig').value.length - 1);
218
- const formArrayMoreItems = this.controls.controls[propIndex].get('moreItemsFormGroup');
219
- formArrayMoreItems.push(formGroup);
220
- }
221
- }
222
- removeMoreItem(propIndex, removeIndex) {
223
- const expandedItemIndex = removeIndex - 1;
224
- this.controls.controls[propIndex].get('moreItemsConfig').value.splice(removeIndex, 1);
225
- setTimeout(() => {
226
- this.controls.controls[propIndex].get('moreItemsExpanded').setValue((expandedItemIndex < 0) ? 0 : expandedItemIndex);
227
- }, 50);
228
- }
229
- clearAutocomplete(propIndex) {
230
- if (this.controls.controls[propIndex].get('multiple').value) {
231
- this.controls.controls[propIndex].get('autocompleteSelectedValue').setValue([]);
232
- this.controls.controls[propIndex].get('value').setValue(null);
233
- }
234
- else {
235
- this.controls.controls[propIndex].get('autocompleteSelectedValue').setValue(this.formConfig[propIndex].autocompleteDefaultValueOnClear ?? null);
236
- this.controls.controls[propIndex].get('value').setValue(this.formConfig[propIndex].autocompleteDefaultValueOnClear ?? null);
237
- }
238
- }
239
- display(option) {
240
- return option ? option.name : undefined;
241
- }
242
- removeOptionOnAutocomplete(propIndex, option) {
243
- const value = this.controls.controls[propIndex].get('autocompleteSelectedValue').value.filter(item => item !== option);
244
- this.controls.controls[propIndex].get('autocompleteSelectedValue').setValue(value);
245
- if (value.length === 0) {
246
- this.controls.controls[propIndex].get('autocompleteSelectedValue').setValue([]);
247
- this.controls.controls[propIndex].get('value').setValue(null);
248
- }
249
- else if (this.formConfig[propIndex].valueChanges) {
250
- this.formConfig[propIndex].valueChanges(value.map(item => item.value));
251
- }
252
- }
253
- getColorChip(config) {
254
- return config.color;
255
- }
256
- getAutocompleteOptions(propriedade) {
257
- return propriedade.get('autocompleteOptionsFiltered').value;
258
- }
259
- getDynamicFormConfig(propriedade) {
260
- return propriedade.get('dynamicFormConfig').value;
261
- }
262
- getRandomString() {
263
- return randomString(20, {
264
- lowercase: true,
265
- numbers: true,
266
- specialCharacters: false,
267
- uppercase: true
268
- });
269
- }
270
- newControl(config) {
271
- let validators = config.syncValidators ?? [];
272
- let value = config.value ?? '';
273
- let valueSelectedAutocomplete = (config.multiple ? [] : (config.autocompleteDefaultValueOnClear ?? null));
274
- if (config.required === true)
275
- validators.push(Validators.required);
276
- if (config.min && typeof config.min === "number")
277
- validators.push(Validators.min(config.min));
278
- if (config.max && typeof config.max === "number")
279
- validators.push(Validators.max(config.max));
280
- if (config.type === DynamicFormTypeFieldEnum.date ||
281
- config.type === DynamicFormTypeFieldEnum.datetime ||
282
- config.type === DynamicFormTypeFieldEnum.time) {
283
- if (config.min && typeof config.min === "string") {
284
- validators.push(DateMinValidator(config.min));
285
- }
286
- if (config.max && typeof config.max === "string") {
287
- validators.push(DateMaxValidator(config.max));
288
- }
289
- }
290
- if (config.minLength)
291
- validators.push(Validators.minLength(config.minLength));
292
- if (config.maxLength)
293
- validators.push(Validators.maxLength(config.maxLength));
294
- if (config.type === DynamicFormTypeFieldEnum.cpf) {
295
- validators.push(CpfValidator);
296
- }
297
- else if (config.type === DynamicFormTypeFieldEnum.cnpj) {
298
- validators.push(CnpjValidator);
299
- }
300
- else if (config.type === DynamicFormTypeFieldEnum.email) {
301
- validators.push(Validators.email);
302
- }
303
- else if (config.type === DynamicFormTypeFieldEnum.autocomplete) {
304
- if (value) {
305
- valueSelectedAutocomplete = value;
306
- value = (config.multiple ? valueSelectedAutocomplete[0] : value);
307
- }
308
- if (config.required === true) {
309
- validators.push(AutocompleteSelectedValidator);
310
- }
311
- }
312
- else if (config.type === DynamicFormTypeFieldEnum.checkbox) {
313
- value = config.value ?? false;
314
- }
315
- if (config.type === DynamicFormTypeFieldEnum.hoursAndMinutes &&
316
- value.length >= 6) {
317
- this.hoursAndMinutesMask = '000:00';
318
- }
319
- if (config.dynamicFormConfig) {
320
- const cloneDynamicFormConfig = {};
321
- Object.assign(cloneDynamicFormConfig, config.dynamicFormConfig);
322
- cloneDynamicFormConfig.form = config.dynamicFormConfig.form;
323
- config.dynamicFormConfig = cloneDynamicFormConfig;
324
- }
325
- if (config.show === false) {
326
- validators = [];
327
- }
328
- const field = this.fb.group({
329
- show: [new BehaviorSubject(config.show ?? true)],
330
- label: [config.label],
331
- name: [config.name],
332
- type: [config.type],
333
- fileButtonConfig: [{
334
- icon: config?.fileButtonConfig?.icon ?? 'attach_file',
335
- text: config?.fileButtonConfig?.text ?? 'Clique para anexar arquivos',
336
- backgroundColor: config?.fileButtonConfig?.backgroundColor ?? 'white',
337
- color: config?.fileButtonConfig?.color ?? 'blue',
338
- accept: config?.fileButtonConfig?.accept ?? '*'
339
- }],
340
- dynamicFormConfig: [new BehaviorSubject(config.dynamicFormConfig)],
341
- dynamicFormGroup: this.fb.array([]),
342
- appearance: [config.appearance],
343
- floatLabel: [config.floatLabel],
344
- placeholder: [config.placeholder],
345
- class: [config.class],
346
- fieldClass: [config.fieldClass],
347
- textHint: [config.textHint],
348
- required: [config.required ?? false],
349
- min: [config.min ?? 0],
350
- max: [config.max ?? 99999999999],
351
- minLength: [config.minLength ?? 0],
352
- maxLength: [config.maxLength ?? 255],
353
- disabled: [config.disabled ?? false],
354
- focus: [config.focus ?? false],
355
- multiple: [config.multiple ?? false],
356
- opcoesSelect: [config.opcoesSelect ?? []],
357
- hidePassword: config.type === DynamicFormTypeFieldEnum.password ? true : null,
358
- moreItemsButtonIconAddlabel: [config.moreItemsButtonIconAddlabel],
359
- moreItemsMinItems: [config.moreItemsMinItems ?? 0],
360
- moreItemsMaxItems: [config.moreItemsMaxItems ?? 100],
361
- moreItemsIcon: [config.moreItemsIcon],
362
- moreItemsIconFontColor: [config.moreItemsIconFontColor],
363
- moreItemsIconBackgroundColor: [config.moreItemsIconBackgroundColor],
364
- moreItemsExpanded: [''],
365
- moreItemsConfig: [[]],
366
- moreItemsFormGroup: this.fb.array([]),
367
- autocompleteLoading: [new BehaviorSubject(false)],
368
- autocompleteOptions: [config.autocompleteOptions],
369
- autocompleteMultipleConfig: [config.autocompleteMultipleConfig],
370
- autocompleteOptionsFiltered: [new BehaviorSubject([])],
371
- autocompleteSelectedValue: [valueSelectedAutocomplete],
372
- autocompleteAddOption: [config.autocompleteAddOption],
373
- textLogs: [config?.textObs],
374
- customMasc: [config?.customMasc],
375
- customMascThousandSeparator: [config?.customMascThousandSeparator ?? ''],
376
- customMascSuffix: [config?.customMascSuffix ?? ''],
377
- customMascPrefix: [config?.customMascPrefix ?? ''],
378
- value: [{ value, disabled: config.disabled }, validators, config.asyncValidators]
379
- });
380
- if (config.autocompleteType === "onDemand") {
381
- const loader = field.get('autocompleteLoading').value;
382
- loader.next(true);
383
- config.autocompleteFilter('').subscribe(options => {
384
- field.get('autocompleteOptionsFiltered').value.next(options);
385
- loader.next(false);
386
- });
387
- }
388
- return field;
389
- }
390
- setValuesOnFields(subject, form) {
391
- subject.subscribe(item => {
392
- if (item) {
393
- const formArray = form.get('formData');
394
- for (const prop of item.values()) {
395
- this.setValueByProp(formArray, prop);
396
- }
397
- }
398
- });
399
- }
400
- changeVisibilityFields(subject, form) {
401
- subject.pipe(debounceTime(5)).subscribe(item => {
402
- if (item) {
403
- const formArray = form.get('formData');
404
- for (const prop of item.values()) {
405
- for (const [indexControl, control] of formArray.controls.entries()) {
406
- if (control.get('name').value === prop.name) {
407
- control.get('show').value.next(prop.show);
408
- const config = this.formConfig[indexControl] ?? null;
409
- if (prop.show) {
410
- let validators = [];
411
- if (config) {
412
- if (config.type === DynamicFormTypeFieldEnum.dynamicForm) {
413
- const formArrayMoreItems = control.get('dynamicFormGroup');
414
- formArrayMoreItems.push(config?.dynamicFormConfig?.form);
415
- }
416
- else {
417
- validators = config.syncValidators ?? [];
418
- if (config.required === true) {
419
- validators.push(Validators.required);
420
- }
421
- if (config.type === DynamicFormTypeFieldEnum.cpf) {
422
- validators.push(CpfValidator);
423
- }
424
- else if (config.type === DynamicFormTypeFieldEnum.cnpj) {
425
- validators.push(CnpjValidator);
426
- }
427
- else if (config.type === DynamicFormTypeFieldEnum.email) {
428
- validators.push(Validators.email);
429
- }
430
- else if (config.required === true &&
431
- config.type === DynamicFormTypeFieldEnum.autocomplete) {
432
- validators.push(AutocompleteSelectedValidator);
433
- }
434
- if (config.min && typeof config.min === "number")
435
- validators.push(Validators.min(config.min));
436
- if (config.max && typeof config.max === "number")
437
- validators.push(Validators.max(config.max));
438
- if (config.type === DynamicFormTypeFieldEnum.date ||
439
- config.type === DynamicFormTypeFieldEnum.datetime ||
440
- config.type === DynamicFormTypeFieldEnum.time) {
441
- if (config.min && typeof config.min === "string") {
442
- validators.push(DateMinValidator(config.min));
443
- }
444
- if (config.max && typeof config.max === "string") {
445
- validators.push(DateMaxValidator(config.max));
446
- }
447
- }
448
- if (config.minLength)
449
- validators.push(Validators.minLength(config.minLength));
450
- if (config.maxLength)
451
- validators.push(Validators.maxLength(config.maxLength));
452
- control.get('value').setValidators(validators);
453
- if (config.asyncValidators) {
454
- control.get('value').setAsyncValidators(config.asyncValidators);
455
- }
456
- }
457
- control.get('value').updateValueAndValidity();
458
- if (prop.clearCurrentValue) {
459
- control.get('value').setValue(null);
460
- }
461
- }
462
- }
463
- else {
464
- control.get('value').clearValidators();
465
- control.get('value').clearAsyncValidators();
466
- control.setErrors(null);
467
- control.get('value').setValue(null);
468
- control.get('value').updateValueAndValidity();
469
- if (config.type === DynamicFormTypeFieldEnum.dynamicForm) {
470
- const formGroup = control;
471
- formGroup.removeControl('dynamicFormGroup');
472
- formGroup.addControl('dynamicFormGroup', this.fb.array([]));
473
- }
474
- }
475
- break;
476
- }
477
- }
478
- }
479
- }
480
- });
481
- }
482
- autocompleteFilter(arr, value) {
483
- return arr.filter(filter => {
484
- if (typeof value === 'string') {
485
- if (filter) {
486
- let find = true;
487
- value.toLowerCase()
488
- .split(' ')
489
- .forEach(part => {
490
- if (filter.name.toLowerCase().indexOf(part) < 0) {
491
- find = false;
492
- return false;
493
- }
494
- });
495
- return find;
496
- }
497
- }
498
- else {
499
- return true;
500
- }
501
- });
502
- }
503
- setValueByProp(formArray, prop) {
504
- if (formArray) {
505
- if (prop.name.indexOf(' > ') >= 0) {
506
- let dynamicFormSubject;
507
- const arrPropName = prop.name.split(' > ');
508
- let indexPropName = 0;
509
- do {
510
- const control = formArray.controls.find(control => control.get('name').value === arrPropName[indexPropName]);
511
- if (indexPropName === arrPropName.length - 2) {
512
- dynamicFormSubject = control.get('dynamicFormConfig').value;
513
- const dynamicForm = dynamicFormSubject.getValue();
514
- if (dynamicForm.formConfig.find(fc => fc.name === arrPropName[arrPropName.length - 1])) {
515
- if (dynamicForm.setValues) {
516
- dynamicForm.setValues.next(koala(dynamicForm.setValues.getValue()).array().merge([{
517
- name: arrPropName[arrPropName.length - 1],
518
- value: prop.value
519
- }]).getValue());
520
- }
521
- else {
522
- dynamicForm.setValues = new BehaviorSubject([{
523
- name: arrPropName[arrPropName.length - 1],
524
- value: prop.value
525
- }]);
526
- }
527
- }
528
- }
529
- indexPropName++;
530
- } while (indexPropName < arrPropName.length - 1);
531
- }
532
- else {
533
- for (const control of formArray.controls.values()) {
534
- if (control.get('name').value === prop.name) {
535
- control.get('value').setValue(prop.value);
536
- break;
537
- }
538
- }
539
- }
540
- }
541
- }
542
- async setConfigDynamicForm(newFormGroup) {
543
- if (this.showFieldsMoreItensConfig) {
544
- const value = newFormGroup.get('value').value;
545
- const configs = this.showFieldsMoreItensConfig
546
- .filter(config => config.nameField === newFormGroup.get('name').value)
547
- .sort(config => {
548
- if (config.fnShow(value)) {
549
- return 1;
550
- }
551
- return -1;
552
- });
553
- for (const config of configs) {
554
- if (config) {
555
- if (config.dynamicFormConfig && config.fnShow(value)) {
556
- const controlDynamicFormConfig = this.controls
557
- .controls
558
- .find(control => config.fieldsToShow.indexOf(control.get('name').value) >= 0);
559
- const dynamicFormConfigSubject = controlDynamicFormConfig.get('dynamicFormConfig').value;
560
- dynamicFormConfigSubject.next(null);
561
- await delay(1);
562
- dynamicFormConfigSubject.next(config.dynamicFormConfig(value));
563
- }
564
- this.dynamicFormService.showFields(this.showFields, config.fieldsToShow, config.fnShow(value), config.clearCurrentValue);
565
- }
566
- }
567
- }
568
- }
569
- validateAutocompleteSelect(selectedValues, value) {
570
- let isValid = true;
571
- for (const selectedItem of selectedValues.values()) {
572
- if (selectedItem.name === value.name) {
573
- isValid = false;
574
- break;
575
- }
576
- }
577
- return isValid;
578
- }
579
- }
580
- DynamicFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DynamicFormComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.KoalaDynamicFormService }], target: i0.ɵɵFactoryTarget.Component });
581
- DynamicFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: DynamicFormComponent, selector: "koala-dynamic-form", inputs: { form: "form", formConfig: "formConfig", showFields: "showFields", showFieldsMoreItensConfig: "showFieldsMoreItensConfig", setValues: "setValues", tabIndexStart: "tabIndexStart" }, usesInheritance: true, ngImport: i0, template: "<div [formGroup]=\"form\" class=\"p-relative w-100\" [id]=\"formId\">\n <div *ngFor=\"let propriedade of controls?.controls; let i = index;\"\n [ngClass]=\"(propriedade.get('show').value | async) ? propriedade.get('class').value : 'd-none'\"\n formArrayName=\"formData\">\n\t <div *ngIf=\"propriedade.get('show').value | async\">\n\t <mat-form-field\n\t\t *ngIf=\"propriedade.get('type').value == typeField.text ||\n\t propriedade.get('type').value == typeField.password ||\n\t propriedade.get('type').value == typeField.cpf ||\n\t propriedade.get('type').value == typeField.cnpj ||\n\t propriedade.get('type').value == typeField.datetime ||\n\t propriedade.get('type').value == typeField.email ||\n\t propriedade.get('type').value == typeField.number ||\n\t propriedade.get('type').value == typeField.stringNumber ||\n\t propriedade.get('type').value == typeField.time ||\n\t propriedade.get('type').value == typeField.date ||\n\t propriedade.get('type').value == typeField.hoursAndMinutes ||\n\t propriedade.get('type').value == typeField.phone ||\n\t propriedade.get('type').value == typeField.percent ||\n\t propriedade.get('type').value == typeField.color ||\n\t propriedade.get('type').value == typeField.month ||\n\t propriedade.get('type').value == typeField.competenceDate ||\n propriedade.get('type').value == typeField.stringWithCustomMasc\"\n\t\t [appearance]=\"propriedade.get('appearance').value\"\n\t\t [floatLabel]=\"propriedade.get('floatLabel').value\"\n\t\t [formGroupName]=\"i\"\n\t\t [ngClass]=\"propriedade.get('fieldClass').value\">\n\t <mat-label>{{propriedade.get('label').value}}</mat-label>\n\t <input\n\t\t [dropSpecialCharacters]=\"false\"\n\t\t [koalaAutoFocus]=\"propriedade.get('focus').value\"\n\t\t (keyup)=\"hoursAndMinutesApplyMask(i, $event)\"\n\t\t [required]=\"propriedade.get('required').value\"\n\t\t [tabIndex]=\"tabIndexStart + i\"\n\t\t [mask]=\"((propriedade.get('type').value == typeField.competenceDate) ? '00/0000' : null) ||\n\t\t ((propriedade.get('type').value == typeField.phone) ? '(00)0000-0000?0' : null) ||\n\t\t ((propriedade.get('type').value == typeField.stringNumber) ? '0{'+propriedade.get('maxLength').value+'}' : null) ||\n ((propriedade.get('type').value == typeField.cpf) ? '000.000.000-00' : null) ||\n ((propriedade.get('type').value == typeField.cnpj) ? '00.000.000/0000-00' : null) ||\n ((propriedade.get('type').value == typeField.percent) ? 'percent' : null) ||\n\t\t\t\t\t\t\t\t\t((propriedade.get('type').value == typeField.hoursAndMinutes) ? hoursAndMinutesMask : null) ||\n\t\t\t\t\t\t\t\t\t((propriedade.get('type').value == typeField.stringWithCustomMasc) ? propriedade.get('customMasc').value : null)\"\n\t\t [validation]=\"\n\t (propriedade.get('type').value == typeField.cpf && propriedade.get('value').errors?.cpfInvalid) ||\n\t (propriedade.get('type').value == typeField.cnpj && propriedade.get('value').errors?.cnpjInvalid)\"\n\t\t [type]=\"((propriedade.get('type').value == typeField.cpf ||\n propriedade.get('type').value == typeField.cnpj ||\n propriedade.get('type').value == typeField.phone ||\n propriedade.get('type').value == typeField.percent\n )) ? 'tel' : (\n propriedade.get('type').value == typeField.month ?\n 'month' : (\n propriedade.get('type').value == typeField.date ?\n 'date' : (\n propriedade.get('type').value == typeField.datetime ?\n 'datetime-local' : (\n propriedade.get('type').value == typeField.email ?\n 'email' : (\n propriedade.get('type').value == typeField.number ?\n 'number' : (\n propriedade.get('type').value == typeField.time ?\n 'time' : (\n propriedade.get('type').value == typeField.password ?\n 'password' : (\n propriedade.get('type').value == typeField.color ?\n 'color' : 'text'))))))))\"\n [min]=\"propriedade.get('min').value\"\n [max]=\"propriedade.get('max').value\"\n [minLength]=\"propriedade.get('minLength').value\"\n [maxLength]=\"propriedade.get('maxLength').value\"\n [thousandSeparator]=\"propriedade.get('customMascThousandSeparator').value\"\n [suffix]=\"propriedade.get('customMascSuffix').value\"\n [prefix]=\"propriedade.get('customMascPrefix').value\"\n separatorLimit=\"0\"\n [autocomplete]=\"getRandomString()\"\n\t\t formControlName=\"value\"\n\t\t matInput/>\n\t <button\n\t\t (click)=\"passwordView(i)\"\n\t\t *ngIf=\"propriedade.get('hidePassword').value !== null\"\n\t\t [attr.aria-label]=\"'Hide password'\"\n\t\t [attr.aria-pressed]=\"propriedade.get('hidePassword').value\"\n\t\t mat-icon-button matSuffix tabindex=\"-1\" type=\"button\">\n\t <mat-icon>{{propriedade.get('hidePassword').value ? 'visibility_off' : 'visibility'}}</mat-icon>\n\t </button>\n\t <mat-hint *ngIf=\"propriedade.get('textHint').value\">\n\t <mat-icon>info</mat-icon>\n\t\t {{propriedade.get('textHint').value}}\n\t </mat-hint>\n\t <mat-error *ngIf=\"propriedade.get('value').errors?.required\">\n\t <mat-icon>error</mat-icon>\n {{errorMessage.getRequiredMessage(propriedade.get('label').value)}}\n\t </mat-error>\n\t <mat-error *ngIf=\"propriedade.get('value').errors?.cpfInvalid\">\n\t <mat-icon>error</mat-icon>\n {{errorMessage.getInvalidMessage(propriedade.get('label').value)}}\n\t </mat-error>\n\t <mat-error *ngIf=\"propriedade.get('value').errors?.cnpjInvalid\">\n\t <mat-icon>error</mat-icon>\n {{errorMessage.getInvalidMessage(propriedade.get('label').value)}}\n\t </mat-error>\n\t <mat-error *ngIf=\"propriedade.get('value').errors?.email\">\n\t <mat-icon>error</mat-icon>\n {{errorMessage.getInvalidMessage(propriedade.get('label').value)}}\n\t </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.min\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getMinMessage(propriedade.get('min').value)}}\n </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.max\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getMaxMessage(propriedade.get('max').value)}}\n </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.minLength\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getMinLengthMessage(propriedade.get('minLength').value)}}\n </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.maxLength\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getMaxLengthMessage(propriedade.get('maxLength').value)}}\n </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.dateMin\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getDateMinMessage()}}\n {{propriedade.get('min').value | date:\"shortDate\"}}.\n </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.dateMax\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getDateMaxMessage()}}\n {{propriedade.get('max').value | date:\"shortDate\"}}.\n </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.customError\">\n <mat-icon>error</mat-icon>\n {{propriedade.get('value').errors?.customError.message}}.\n </mat-error>\n\t </mat-form-field>\n\t <mat-form-field\n\t\t *ngIf=\"propriedade.get('type').value == typeField.coin\"\n\t\t [appearance]=\"propriedade.get('appearance').value\"\n\t\t [floatLabel]=\"propriedade.get('floatLabel').value\"\n\t\t [formGroupName]=\"i\"\n\t\t [ngClass]=\"propriedade.get('fieldClass').value\">\n\t <mat-label>{{propriedade.get('label').value}}</mat-label>\n\t <input\n\t\t [koalaAutoFocus]=\"propriedade.get('focus').value\"\n\t\t [required]=\"propriedade.get('required').value\"\n [tabIndex]=\"tabIndexStart + i\"\n [min]=\"propriedade.get('min').value\"\n [max]=\"propriedade.get('max').value\"\n [minLength]=\"propriedade.get('minLength').value\"\n [maxLength]=\"propriedade.get('maxLength').value\"\n [autocomplete]=\"getRandomString()\"\n\t\t currencyMask\n\t\t formControlName=\"value\"\n\t\t matInput\n\t\t type=\"tel\"/>\n\t <mat-hint *ngIf=\"propriedade.get('textHint').value\">\n\t <mat-icon>info</mat-icon>\n\t\t {{propriedade.get('textHint').value}}\n\t </mat-hint>\n <mat-error *ngIf=\"propriedade.get('value').errors?.min\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getMinMessage(propriedade.get('min').value)}}\n </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.max\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getMaxMessage(propriedade.get('max').value)}}\n </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.minLength\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getMinLengthMessage(propriedade.get('minLength').value)}}\n </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.maxLength\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getMaxLengthMessage(propriedade.get('maxLength').value)}}\n </mat-error>\n\t <mat-error *ngIf=\"propriedade.get('value').errors?.required\">\n\t <mat-icon>error</mat-icon>\n {{errorMessage.getRequiredMessage(propriedade.get('label').value)}}\n\t </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.customError\">\n <mat-icon>error</mat-icon>\n {{propriedade.get('value').errors?.customError.message}}.\n </mat-error>\n\t </mat-form-field>\n <mat-form-field\n *ngIf=\"propriedade.get('type').value == typeField.float\"\n [appearance]=\"propriedade.get('appearance').value\"\n [floatLabel]=\"propriedade.get('floatLabel').value\"\n [formGroupName]=\"i\"\n [ngClass]=\"propriedade.get('fieldClass').value\">\n <mat-label>{{propriedade.get('label').value}}</mat-label>\n <input\n [koalaAutoFocus]=\"propriedade.get('focus').value\"\n [required]=\"propriedade.get('required').value\"\n [tabIndex]=\"tabIndexStart + i\"\n [min]=\"propriedade.get('min').value\"\n [max]=\"propriedade.get('max').value\"\n [minLength]=\"propriedade.get('minLength').value\"\n [maxLength]=\"propriedade.get('maxLength').value\"\n [autocomplete]=\"getRandomString()\"\n currencyMask\n [options]=\"{prefix: ''}\"\n formControlName=\"value\"\n matInput\n type=\"tel\"/>\n <mat-hint *ngIf=\"propriedade.get('textHint').value\">\n <mat-icon>info</mat-icon>\n {{propriedade.get('textHint').value}}\n </mat-hint>\n <mat-error *ngIf=\"propriedade.get('value').errors?.min\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getMinMessage(propriedade.get('min').value)}}\n </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.max\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getMaxMessage(propriedade.get('max').value)}}\n </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.minLength\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getMinLengthMessage(propriedade.get('minLength').value)}}\n </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.maxLength\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getMaxLengthMessage(propriedade.get('maxLength').value)}}\n </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.required\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getRequiredMessage(propriedade.get('label').value)}}\n </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.customError\">\n <mat-icon>error</mat-icon>\n {{propriedade.get('value').errors?.customError.message}}.\n </mat-error>\n </mat-form-field>\n\t <mat-form-field\n\t\t *ngIf=\"propriedade.get('type').value == typeField.valueList ||\n\t propriedade.get('type').value == typeField.textarea\"\n\t\t [appearance]=\"propriedade.get('appearance').value\"\n\t\t [floatLabel]=\"propriedade.get('floatLabel').value\"\n\t\t [formGroupName]=\"i\"\n\t\t [ngClass]=\"propriedade.get('fieldClass').value\">\n\t <mat-label>{{propriedade.get('label').value}}</mat-label>\n\t <textarea\n #textarea\n\t\t [koalaAutoFocus]=\"propriedade.get('focus').value\"\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n\t\t [cdkAutosizeMaxRows]=\"8\"\n\t\t [cdkAutosizeMinRows]=\"3\"\n\t\t [required]=\"propriedade.get('required').value\"\n [tabIndex]=\"tabIndexStart + i\"\n [minLength]=\"propriedade.get('minLength').value\"\n [maxLength]=\"propriedade.get('maxLength').value\"\n\t\t formControlName=\"value\"\n\t\t matInput>\n </textarea>\n\t <mat-hint *ngIf=\"propriedade.get('textHint').value\">\n\t <mat-icon>info</mat-icon>\n\t\t {{propriedade.get('textHint').value}}\n\t </mat-hint>\n <mat-hint align=\"end\" *ngIf=\"propriedade.get('maxLength').value\">\n {{textarea.value.length}}/{{propriedade.get('maxLength').value}}\n </mat-hint>\n <mat-error *ngIf=\"propriedade.get('value').errors?.minLength\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getMinLengthMessage(propriedade.get('minLength').value)}}\n </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.maxLength\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getMaxLengthMessage(propriedade.get('maxLength').value)}}\n </mat-error>\n\t <mat-error *ngIf=\"propriedade.get('value').errors?.required\">\n\t <mat-icon>error</mat-icon>\n {{errorMessage.getRequiredMessage(propriedade.get('label').value)}}\n\t </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.customError\">\n <mat-icon>error</mat-icon>\n {{propriedade.get('value').errors?.customError.message}}.\n </mat-error>\n\t </mat-form-field>\n\t\t <mat-form-field\n\t\t\t *ngIf=\"propriedade.get('type').value == typeField.textLogs\"\n\t\t\t [appearance]=\"propriedade.get('appearance').value\"\n\t\t\t [floatLabel]=\"propriedade.get('floatLabel').value\"\n\t\t\t [formGroupName]=\"i\"\n\t\t\t [ngClass]=\"propriedade.get('fieldClass').value\">\n\t <mat-label>{{propriedade.get('label').value}}</mat-label>\n\t <div [innerHTML]=\"propriedade.get('textLogs').value\" class=\"text-obs\"></div>\n\t <textarea\n #textarea\n\t\t [koalaAutoFocus]=\"propriedade.get('focus').value\"\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n\t\t [cdkAutosizeMaxRows]=\"8\"\n\t\t [cdkAutosizeMinRows]=\"3\"\n\t\t [required]=\"propriedade.get('required').value\"\n [tabIndex]=\"tabIndexStart + i\"\n [minLength]=\"propriedade.get('minLength').value\"\n [maxLength]=\"propriedade.get('maxLength').value\"\n\t\t formControlName=\"value\"\n\t\t matInput>\n\t </textarea>\n\t <mat-hint *ngIf=\"propriedade.get('textHint').value\">\n\t <mat-icon>info</mat-icon>\n\t\t {{propriedade.get('textHint').value}}\n\t </mat-hint>\n <mat-hint align=\"end\" *ngIf=\"propriedade.get('maxLength').value\">\n {{textarea.value.length}}/{{propriedade.get('maxLength').value}}\n </mat-hint>\n <mat-error *ngIf=\"propriedade.get('value').errors?.minLength\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getMinLengthMessage(propriedade.get('minLength').value)}}\n </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.maxLength\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getMaxLengthMessage(propriedade.get('maxLength').value)}}\n </mat-error>\n\t <mat-error *ngIf=\"propriedade.get('value').errors?.required\">\n\t <mat-icon>error</mat-icon>\n {{errorMessage.getRequiredMessage(propriedade.get('label').value)}}\n\t </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.customError\">\n <mat-icon>error</mat-icon>\n {{propriedade.get('value').errors?.customError.message}}.\n </mat-error>\n\t </mat-form-field>\n\t <mat-form-field\n\t\t *ngIf=\"propriedade.get('type').value == typeField.select\"\n\t\t [appearance]=\"propriedade.get('appearance').value\"\n\t\t [floatLabel]=\"propriedade.get('floatLabel').value\"\n\t\t [formGroupName]=\"i\"\n\t\t [ngClass]=\"propriedade.get('fieldClass').value\">\n\t <mat-label>{{propriedade.get('label').value}}</mat-label>\n\t <mat-select [multiple]=\"propriedade.get('multiple').value\" [required]=\"propriedade.get('required').value\"\n [tabIndex]=\"tabIndexStart + i\" formControlName=\"value\">\n\t <mat-option *ngFor=\"let options of propriedade.get('opcoesSelect').value\" [value]=\"options.value\">\n\t {{options.name}}\n\t </mat-option>\n\t </mat-select>\n\t <mat-hint *ngIf=\"propriedade.get('textHint').value\">\n\t <mat-icon>info</mat-icon>\n\t\t {{propriedade.get('textHint').value}}\n\t </mat-hint>\n\t <mat-error *ngIf=\"propriedade.get('value').errors?.required\">\n\t <mat-icon>error</mat-icon>\n {{errorMessage.getRequiredMessage(propriedade.get('label').value)}}\n\t </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.customError\">\n <mat-icon>error</mat-icon>\n {{propriedade.get('value').errors?.customError.message}}.\n </mat-error>\n\t </mat-form-field>\n <mat-form-field\n class=\"select-multiple-native\"\n *ngIf=\"propriedade.get('type').value == typeField.selectMultipleNative\"\n [appearance]=\"propriedade.get('appearance').value\"\n [floatLabel]=\"propriedade.get('floatLabel').value\"\n [formGroupName]=\"i\"\n [ngClass]=\"propriedade.get('fieldClass').value\">\n <mat-label>{{propriedade.get('label').value}}</mat-label>\n <select\n matNativeControl\n formControlName=\"value\"\n multiple\n [tabIndex]=\"tabIndexStart + i\"\n [required]=\"propriedade.get('required').value\">\n <option *ngFor=\"let options of propriedade.get('opcoesSelect').value\" [value]=\"options.value\">\n {{options.name}}\n </option>\n </select>\n <mat-hint *ngIf=\"propriedade.get('textHint').value\">\n <mat-icon>info</mat-icon>\n {{propriedade.get('textHint').value}}\n </mat-hint>\n <mat-error *ngIf=\"propriedade.get('value').errors?.required\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getRequiredMessage(propriedade.get('label').value)}}\n </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.customError\">\n <mat-icon>error</mat-icon>\n {{propriedade.get('value').errors?.customError.message}}.\n </mat-error>\n </mat-form-field>\n\t <div\n\t\t *ngIf=\"propriedade.get('type').value == typeField.checkbox\"\n\t\t [formGroupName]=\"i\"\n\t\t [ngClass]=\"propriedade.get('fieldClass').value\">\n\t <mat-checkbox\n [tabIndex]=\"tabIndexStart + i\"\n\t\t formControlName=\"value\"\n\t\t value=\"true\">\n\t {{propriedade.get('label').value}}\n\t </mat-checkbox>\n\t </div>\n\t\t <div\n\t\t\t *ngIf=\"propriedade.get('type').value == typeField.moreItems\"\n\t\t\t [formGroupName]=\"i\"\n\t\t\t [ngClass]=\"propriedade.get('fieldClass').value\"\n\t\t\t class=\"more-items-content\">\n\t\t\t <fieldset>\n\t\t\t\t <legend>\n\t\t\t\t\t <koala-button\n\t\t\t\t\t\t (click)=\"addMoreItem(i)\"\n\t\t\t\t\t\t [disabled]=\"propriedade.get('moreItemsConfig').value.length === propriedade.get('moreItemsMaxItems').value\"\n\t\t\t\t\t\t [tooltip]=\"propriedade.get('moreItemsButtonIconAddlabel').value\"\n\t\t\t\t\t\t [backgroundColor]=\"propriedade.get('moreItemsIconBackgroundColor').value\"\n [color]=\"propriedade.get('moreItemsIconFontColor').value\"\n\t\t\t\t\t\t class=\"btn-add-more-items\"\n\t\t\t\t\t\t icon=\"add\">\n\t\t\t\t\t </koala-button>\n\t\t\t\t\t {{propriedade.get('label').value}} (Min.: {{propriedade.get('moreItemsMinItems').value}}\n\t\t\t\t\t | M\u00E1x.: {{propriedade.get('moreItemsMaxItems').value}})\n\t\t\t\t </legend>\n\t\t\t\t <mat-accordion class=\"items\" multi>\n\t\t\t\t\t <mat-expansion-panel\n\t\t\t\t\t\t *ngFor=\"let item of propriedade.get('moreItemsConfig').value.slice().reverse(); index as indexMoreItems\"\n\t\t\t\t\t\t expanded>\n\t\t\t\t\t\t <mat-expansion-panel-header>\n\t\t\t\t\t\t\t\t<mat-panel-title class=\"titleForm\">#\n\t\t\t\t\t\t\t\t\t{{propriedade.get('moreItemsConfig').value.length - 1 - indexMoreItems + 1}}</mat-panel-title>\n\t\t\t\t\t\t\t\t<mat-panel-description class=\"titleForm\">\n\t\t\t\t\t\t\t\t\t{{propriedade.get('label').value}}\n\t\t\t\t\t\t\t\t\t<mat-icon>{{propriedade.get('moreItemsIcon').value}}</mat-icon>\n\t\t\t\t\t\t\t\t</mat-panel-description>\n\t\t\t\t\t\t\t</mat-expansion-panel-header>\n\t\t\t\t\t\t <koala-dynamic-form\n\t\t\t\t\t\t\t [showFieldsMoreItensConfig]=\"item.showFieldsMoreItensConfig\"\n\t\t\t\t\t\t\t [showFields]=\"item.showFields\"\n\t\t\t\t\t\t\t [formConfig]=\"item.formConfig\"\n\t\t\t\t\t\t\t [form]=\"item.form\"\n [tabIndexStart]=\"tabIndexStart + i\">\n\t\t\t\t\t\t </koala-dynamic-form>\n\t\t\t\t\t <mat-action-row\n\t\t\t\t\t\t *ngIf=\"propriedade.get('moreItemsConfig').value.length > propriedade.get('moreItemsMinItems').value\">\n\t\t\t\t\t <button\n\t\t\t\t\t\t (click)=\"removeMoreItem(i, propriedade.get('moreItemsConfig').value.length - 1 - indexMoreItems)\"\n\t\t\t\t\t\t mat-icon-button>\n\t\t\t\t\t\t <mat-icon>delete</mat-icon>\n\t\t\t\t\t </button>\n\t\t\t\t\t </mat-action-row>\n\t\t\t\t\t </mat-expansion-panel>\n\t\t\t\t </mat-accordion>\n\t\t\t </fieldset>\n\t\t </div>\n\t\t <mat-form-field\n\t\t\t *ngIf=\"propriedade.get('type').value == typeField.autocomplete\"\n\t\t\t [appearance]=\"propriedade.get('appearance').value\"\n\t\t\t [floatLabel]=\"propriedade.get('floatLabel').value\"\n\t\t\t [formGroupName]=\"i\"\n\t\t\t [ngClass]=\"propriedade.get('fieldClass').value\">\n\t <mat-label>{{propriedade.get('label').value}} {{propriedade.get('multiple').value &&\n\t propriedade.get('required').value ? '*' : ''}}</mat-label>\n\t\t\t <div *ngIf=\"propriedade.get('multiple').value else single\">\n\t <mat-chip-grid #chipList>\n <mat-chip-row\n (removed)=\"removeOptionOnAutocomplete(i, option)\"\n *ngFor=\"let option of propriedade.get('autocompleteSelectedValue').value\"\n [color]=\"getColorChip(propriedade.get('autocompleteMultipleConfig').value | async)\"\n [removable]=\"true\">\n {{display(option)}}\n <mat-icon *ngIf=\"!propriedade.get('disabled').value\" matChipRemove>cancel</mat-icon>\n </mat-chip-row>\n\t <input\n [id]=\"'autocomplete-' + propriedade.get('name').value\"\n [koalaAutoFocus]=\"propriedade.get('focus').value\"\n\t\t [required]=\"propriedade.get('required').value\"\n\t\t [matAutocomplete]=\"auto\"\n\t\t [matChipInputFor]=\"chipList\"\n [tabIndex]=\"tabIndexStart + i\"\n [autocomplete]=\"getRandomString()\"\n\t\t formControlName=\"value\"\n\t\t matInput\n\t\t type=\"text\"\n\t\t placeholder=\"Selecione um ou mais op\u00E7\u00F5es...\">\n\t </mat-chip-grid>\n\t </div>\n\t <ng-template #single>\n\t\t <input\n\t\t\t [matAutocomplete]=\"auto\"\n [koalaAutoFocus]=\"propriedade.get('focus').value\"\n\t\t\t [required]=\"propriedade.get('required').value\"\n [tabIndex]=\"tabIndexStart + i\"\n [autocomplete]=\"getRandomString()\"\n\t\t\t formControlName=\"value\"\n\t\t\t matInput\n\t\t\t placeholder=\"Selecione uma op\u00E7\u00E3o...\"\n\t\t\t type=\"text\">\n\t </ng-template>\n\t <mat-spinner *ngIf=\"propriedade.get('autocompleteLoading').value | async\" color=\"primary\"\n\t matSuffix></mat-spinner>\n\t <button\n\t\t (click)=\"clearAutocomplete(i)\"\n\t\t *ngIf=\"\n\t !(propriedade.get('autocompleteLoading').value | async) &&\n\t !propriedade.get('disabled').value\"\n\t\t color=\"warn\"\n\t\t mat-icon-button\n\t\t matSuffix\n\t\t type=\"button\">\n\t <mat-icon>close</mat-icon>\n\t </button>\n\t <mat-hint *ngIf=\"propriedade.get('textHint').value\">\n\t <mat-icon>info</mat-icon>\n\t\t {{propriedade.get('textHint').value}}\n\t </mat-hint>\n\t <mat-error *ngIf=\"propriedade.get('value').errors?.required || propriedade.get('value').errors?.autocompleteSelected\">\n\t <mat-icon>error</mat-icon>\n {{errorMessage.getAutocompleteMessage(propriedade.get('label').value)}}\n\t </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.customError\">\n <mat-icon>error</mat-icon>\n {{propriedade.get('value').errors?.customError.message}}.\n </mat-error>\n\t <mat-autocomplete\n\t\t #auto=\"matAutocomplete\"\n\t\t [displayWith]=\"display\" autoActiveFirstOption>\n <mat-option\n *ngIf=\"propriedade.get('autocompleteAddOption').value && isValidNewAutocompleteOption(propriedade.get('value').value)\"\n [value]=\"{\n value: {id: 0, name: propriedade.get('value').value},\n name: propriedade.get('value').value\n }\">\n Add <b>{{propriedade.get('value').value}}</b>...\n </mat-option>\n\t\t <div *ngIf=\"(getAutocompleteOptions(propriedade) | async) as options\">\n\t\t <mat-option *ngFor=\"let option of options\" [value]=\"option\">\n\t\t {{option.name}}\n\t\t </mat-option>\n\t\t </div>\n\t </mat-autocomplete>\n\t </mat-form-field>\n\t\t <div *ngIf=\"propriedade.get('type').value == typeField.file\">\n\t\t\t <koala-file-button\n\t\t\t\t (getFiles)=\"propriedade.get('value').setValue($event)\"\n\t\t\t\t [accept]=\"propriedade.get('fileButtonConfig').value.accept\"\n\t\t\t\t [backgroundColor]=\"propriedade.get('fileButtonConfig').value.backgroundColor\"\n\t\t\t\t [color]=\"propriedade.get('fileButtonConfig').value.color\"\n\t\t\t\t [disabled]=\"propriedade.get('disabled').value\"\n\t\t\t\t [icon]=\"propriedade.get('fileButtonConfig').value.icon\"\n\t\t\t\t [multiple]=\"propriedade.get('multiple').value\"\n\t\t\t\t [text]=\"propriedade.get('fileButtonConfig').value.text\">\n\t\t\t </koala-file-button>\n\t\t </div>\n\t\t <div *ngIf=\"\n\t\t propriedade.get('type').value == typeField.dynamicForm &&\n\t\t\t\t(getDynamicFormConfig(propriedade) | async) as dynamicFormConfig\">\n\t\t\t <fieldset *ngIf=\"propriedade.get('label').value else dynamicFormWithoutLabel\">\n\t\t\t\t <legend>{{propriedade.get('label').value}}</legend>\n\t\t\t\t <koala-dynamic-form\n\t\t\t\t\t [formConfig]=\"dynamicFormConfig.formConfig\"\n\t\t\t\t\t [form]=\"dynamicFormConfig.form\"\n\t\t\t\t\t [setValues]=\"dynamicFormConfig.setValues\"\n\t\t\t\t\t [showFields]=\"dynamicFormConfig.showFields\"\n [tabIndexStart]=\"tabIndexStart + i\">\n\t\t\t\t </koala-dynamic-form>\n\t\t\t </fieldset>\n\t\t\t <ng-template #dynamicFormWithoutLabel>\n\t\t\t\t <koala-dynamic-form\n\t\t\t\t\t [formConfig]=\"dynamicFormConfig.formConfig\"\n\t\t\t\t\t [form]=\"dynamicFormConfig.form\"\n\t\t\t\t\t [setValues]=\"dynamicFormConfig.setValues\"\n\t\t\t\t\t [showFields]=\"dynamicFormConfig.showFields\"\n [tabIndexStart]=\"tabIndexStart + i\">\n\t\t\t\t </koala-dynamic-form>\n\t\t\t </ng-template>\n\t\t </div>\n <div\n class=\"radio-btn-group\"\n *ngIf=\"propriedade.get('type').value == typeField.radio\"\n [formGroupName]=\"i\"\n [ngClass]=\"propriedade.get('fieldClass').value\">\n <mat-radio-group formControlName=\"value\">\n <label *ngIf=\"propriedade.get('label').value\">{{propriedade.get('label').value}}</label>\n <mat-radio-button\n [tabIndex]=\"tabIndexStart + i\"\n *ngFor=\"let options of propriedade.get('opcoesSelect').value\"\n [value]=\"options.value\">\n {{options.name}}\n </mat-radio-button>\n </mat-radio-group>\n </div>\n\t </div>\n </div>\n <ng-content select=\"[btn-submit]\"></ng-content>\n</div>\n", styles: [".more-items-content fieldset{border:1px solid #cccccc;padding:16px}.more-items-content fieldset legend{font-family:Josefin Sans,sans-serif;font-size:11px;font-weight:700;padding:0 8px}.more-items-content .items .titleForm{color:#616161}.more-items-content .items .mat-expansion-panel-header-title,.more-items-content .items .mat-expansion-panel-header-description{flex-basis:0}.more-items-content .items .mat-expansion-panel-header-description{align-items:center;justify-content:space-between}.more-items-content .items .mat-form-field+.mat-form-field{margin-left:8px}.radio-btn-group label{position:relative;display:block;padding:10px 0}.text-obs{background:#eeeeee;border-radius:5px;color:#212121;font-family:OpenSansLight,sans-serif;height:150px;margin:0 auto 10px;overflow-y:auto;padding:10px;position:relative;width:calc(100% - 27px)}.select-multiple-native{margin-bottom:15px}.select-multiple-native select{width:100%;height:150px;background:transparent;border:none}.select-multiple-native select:focus,.select-multiple-native select:active{outline:none}.select-multiple-native select option{padding:5px 10px;font-family:JosefinSans,sans-serif}.select-multiple-native select option:checked{background:#f1f1f1!important}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgxMaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "showTemplate", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "triggerOnMaskChange"], outputs: ["maskFilled"], exportAs: ["mask", "ngxMask"] }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectMultipleControlValueAccessor, selector: "select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: i5.CurrencyMaskDirective, selector: "[currencyMask]", inputs: ["max", "min", "options"] }, { kind: "component", type: i6.FileButtonComponent, selector: "koala-file-button", inputs: ["color", "backgroundColor", "icon", "text", "tooltip", "disabled", "multiple", "accept", "setFile", "updateFileList", "autoclear"], outputs: ["getFiles"] }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "directive", type: i8.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i8.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i8.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i9.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "component", type: i10.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i11.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i12.MatRadioGroup, selector: "mat-radio-group", exportAs: ["matRadioGroup"] }, { kind: "component", type: i12.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { kind: "component", type: i13.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i14.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i14.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i15.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i16.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i17.MatAccordion, selector: "mat-accordion", inputs: ["multi", "hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i17.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "directive", type: i17.MatExpansionPanelActionRow, selector: "mat-action-row" }, { kind: "component", type: i17.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { kind: "directive", type: i17.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i17.MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "component", type: i18.MatChipGrid, selector: "mat-chip-grid", inputs: ["tabIndex", "disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i18.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i18.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i18.MatChipRow, selector: "mat-chip-row, mat-basic-chip-row", inputs: ["color", "disabled", "disableRipple", "tabIndex", "editable"], outputs: ["edited"] }, { kind: "component", type: i19.ButtonComponent, selector: "koala-button", inputs: ["color", "backgroundColor", "icon", "text", "tooltip", "disabled", "koalaIcon", "koalaIconSize"] }, { kind: "component", type: i20.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: DynamicFormComponent, selector: "koala-dynamic-form", inputs: ["form", "formConfig", "showFields", "showFieldsMoreItensConfig", "setValues", "tabIndexStart"] }, { kind: "directive", type: i21.KoalaAutofocusDirective, selector: "[koalaAutoFocus]", inputs: ["koalaAutoFocus"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
582
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DynamicFormComponent, decorators: [{
583
- type: Component,
584
- args: [{ selector: 'koala-dynamic-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [formGroup]=\"form\" class=\"p-relative w-100\" [id]=\"formId\">\n <div *ngFor=\"let propriedade of controls?.controls; let i = index;\"\n [ngClass]=\"(propriedade.get('show').value | async) ? propriedade.get('class').value : 'd-none'\"\n formArrayName=\"formData\">\n\t <div *ngIf=\"propriedade.get('show').value | async\">\n\t <mat-form-field\n\t\t *ngIf=\"propriedade.get('type').value == typeField.text ||\n\t propriedade.get('type').value == typeField.password ||\n\t propriedade.get('type').value == typeField.cpf ||\n\t propriedade.get('type').value == typeField.cnpj ||\n\t propriedade.get('type').value == typeField.datetime ||\n\t propriedade.get('type').value == typeField.email ||\n\t propriedade.get('type').value == typeField.number ||\n\t propriedade.get('type').value == typeField.stringNumber ||\n\t propriedade.get('type').value == typeField.time ||\n\t propriedade.get('type').value == typeField.date ||\n\t propriedade.get('type').value == typeField.hoursAndMinutes ||\n\t propriedade.get('type').value == typeField.phone ||\n\t propriedade.get('type').value == typeField.percent ||\n\t propriedade.get('type').value == typeField.color ||\n\t propriedade.get('type').value == typeField.month ||\n\t propriedade.get('type').value == typeField.competenceDate ||\n propriedade.get('type').value == typeField.stringWithCustomMasc\"\n\t\t [appearance]=\"propriedade.get('appearance').value\"\n\t\t [floatLabel]=\"propriedade.get('floatLabel').value\"\n\t\t [formGroupName]=\"i\"\n\t\t [ngClass]=\"propriedade.get('fieldClass').value\">\n\t <mat-label>{{propriedade.get('label').value}}</mat-label>\n\t <input\n\t\t [dropSpecialCharacters]=\"false\"\n\t\t [koalaAutoFocus]=\"propriedade.get('focus').value\"\n\t\t (keyup)=\"hoursAndMinutesApplyMask(i, $event)\"\n\t\t [required]=\"propriedade.get('required').value\"\n\t\t [tabIndex]=\"tabIndexStart + i\"\n\t\t [mask]=\"((propriedade.get('type').value == typeField.competenceDate) ? '00/0000' : null) ||\n\t\t ((propriedade.get('type').value == typeField.phone) ? '(00)0000-0000?0' : null) ||\n\t\t ((propriedade.get('type').value == typeField.stringNumber) ? '0{'+propriedade.get('maxLength').value+'}' : null) ||\n ((propriedade.get('type').value == typeField.cpf) ? '000.000.000-00' : null) ||\n ((propriedade.get('type').value == typeField.cnpj) ? '00.000.000/0000-00' : null) ||\n ((propriedade.get('type').value == typeField.percent) ? 'percent' : null) ||\n\t\t\t\t\t\t\t\t\t((propriedade.get('type').value == typeField.hoursAndMinutes) ? hoursAndMinutesMask : null) ||\n\t\t\t\t\t\t\t\t\t((propriedade.get('type').value == typeField.stringWithCustomMasc) ? propriedade.get('customMasc').value : null)\"\n\t\t [validation]=\"\n\t (propriedade.get('type').value == typeField.cpf && propriedade.get('value').errors?.cpfInvalid) ||\n\t (propriedade.get('type').value == typeField.cnpj && propriedade.get('value').errors?.cnpjInvalid)\"\n\t\t [type]=\"((propriedade.get('type').value == typeField.cpf ||\n propriedade.get('type').value == typeField.cnpj ||\n propriedade.get('type').value == typeField.phone ||\n propriedade.get('type').value == typeField.percent\n )) ? 'tel' : (\n propriedade.get('type').value == typeField.month ?\n 'month' : (\n propriedade.get('type').value == typeField.date ?\n 'date' : (\n propriedade.get('type').value == typeField.datetime ?\n 'datetime-local' : (\n propriedade.get('type').value == typeField.email ?\n 'email' : (\n propriedade.get('type').value == typeField.number ?\n 'number' : (\n propriedade.get('type').value == typeField.time ?\n 'time' : (\n propriedade.get('type').value == typeField.password ?\n 'password' : (\n propriedade.get('type').value == typeField.color ?\n 'color' : 'text'))))))))\"\n [min]=\"propriedade.get('min').value\"\n [max]=\"propriedade.get('max').value\"\n [minLength]=\"propriedade.get('minLength').value\"\n [maxLength]=\"propriedade.get('maxLength').value\"\n [thousandSeparator]=\"propriedade.get('customMascThousandSeparator').value\"\n [suffix]=\"propriedade.get('customMascSuffix').value\"\n [prefix]=\"propriedade.get('customMascPrefix').value\"\n separatorLimit=\"0\"\n [autocomplete]=\"getRandomString()\"\n\t\t formControlName=\"value\"\n\t\t matInput/>\n\t <button\n\t\t (click)=\"passwordView(i)\"\n\t\t *ngIf=\"propriedade.get('hidePassword').value !== null\"\n\t\t [attr.aria-label]=\"'Hide password'\"\n\t\t [attr.aria-pressed]=\"propriedade.get('hidePassword').value\"\n\t\t mat-icon-button matSuffix tabindex=\"-1\" type=\"button\">\n\t <mat-icon>{{propriedade.get('hidePassword').value ? 'visibility_off' : 'visibility'}}</mat-icon>\n\t </button>\n\t <mat-hint *ngIf=\"propriedade.get('textHint').value\">\n\t <mat-icon>info</mat-icon>\n\t\t {{propriedade.get('textHint').value}}\n\t </mat-hint>\n\t <mat-error *ngIf=\"propriedade.get('value').errors?.required\">\n\t <mat-icon>error</mat-icon>\n {{errorMessage.getRequiredMessage(propriedade.get('label').value)}}\n\t </mat-error>\n\t <mat-error *ngIf=\"propriedade.get('value').errors?.cpfInvalid\">\n\t <mat-icon>error</mat-icon>\n {{errorMessage.getInvalidMessage(propriedade.get('label').value)}}\n\t </mat-error>\n\t <mat-error *ngIf=\"propriedade.get('value').errors?.cnpjInvalid\">\n\t <mat-icon>error</mat-icon>\n {{errorMessage.getInvalidMessage(propriedade.get('label').value)}}\n\t </mat-error>\n\t <mat-error *ngIf=\"propriedade.get('value').errors?.email\">\n\t <mat-icon>error</mat-icon>\n {{errorMessage.getInvalidMessage(propriedade.get('label').value)}}\n\t </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.min\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getMinMessage(propriedade.get('min').value)}}\n </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.max\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getMaxMessage(propriedade.get('max').value)}}\n </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.minLength\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getMinLengthMessage(propriedade.get('minLength').value)}}\n </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.maxLength\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getMaxLengthMessage(propriedade.get('maxLength').value)}}\n </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.dateMin\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getDateMinMessage()}}\n {{propriedade.get('min').value | date:\"shortDate\"}}.\n </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.dateMax\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getDateMaxMessage()}}\n {{propriedade.get('max').value | date:\"shortDate\"}}.\n </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.customError\">\n <mat-icon>error</mat-icon>\n {{propriedade.get('value').errors?.customError.message}}.\n </mat-error>\n\t </mat-form-field>\n\t <mat-form-field\n\t\t *ngIf=\"propriedade.get('type').value == typeField.coin\"\n\t\t [appearance]=\"propriedade.get('appearance').value\"\n\t\t [floatLabel]=\"propriedade.get('floatLabel').value\"\n\t\t [formGroupName]=\"i\"\n\t\t [ngClass]=\"propriedade.get('fieldClass').value\">\n\t <mat-label>{{propriedade.get('label').value}}</mat-label>\n\t <input\n\t\t [koalaAutoFocus]=\"propriedade.get('focus').value\"\n\t\t [required]=\"propriedade.get('required').value\"\n [tabIndex]=\"tabIndexStart + i\"\n [min]=\"propriedade.get('min').value\"\n [max]=\"propriedade.get('max').value\"\n [minLength]=\"propriedade.get('minLength').value\"\n [maxLength]=\"propriedade.get('maxLength').value\"\n [autocomplete]=\"getRandomString()\"\n\t\t currencyMask\n\t\t formControlName=\"value\"\n\t\t matInput\n\t\t type=\"tel\"/>\n\t <mat-hint *ngIf=\"propriedade.get('textHint').value\">\n\t <mat-icon>info</mat-icon>\n\t\t {{propriedade.get('textHint').value}}\n\t </mat-hint>\n <mat-error *ngIf=\"propriedade.get('value').errors?.min\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getMinMessage(propriedade.get('min').value)}}\n </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.max\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getMaxMessage(propriedade.get('max').value)}}\n </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.minLength\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getMinLengthMessage(propriedade.get('minLength').value)}}\n </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.maxLength\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getMaxLengthMessage(propriedade.get('maxLength').value)}}\n </mat-error>\n\t <mat-error *ngIf=\"propriedade.get('value').errors?.required\">\n\t <mat-icon>error</mat-icon>\n {{errorMessage.getRequiredMessage(propriedade.get('label').value)}}\n\t </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.customError\">\n <mat-icon>error</mat-icon>\n {{propriedade.get('value').errors?.customError.message}}.\n </mat-error>\n\t </mat-form-field>\n <mat-form-field\n *ngIf=\"propriedade.get('type').value == typeField.float\"\n [appearance]=\"propriedade.get('appearance').value\"\n [floatLabel]=\"propriedade.get('floatLabel').value\"\n [formGroupName]=\"i\"\n [ngClass]=\"propriedade.get('fieldClass').value\">\n <mat-label>{{propriedade.get('label').value}}</mat-label>\n <input\n [koalaAutoFocus]=\"propriedade.get('focus').value\"\n [required]=\"propriedade.get('required').value\"\n [tabIndex]=\"tabIndexStart + i\"\n [min]=\"propriedade.get('min').value\"\n [max]=\"propriedade.get('max').value\"\n [minLength]=\"propriedade.get('minLength').value\"\n [maxLength]=\"propriedade.get('maxLength').value\"\n [autocomplete]=\"getRandomString()\"\n currencyMask\n [options]=\"{prefix: ''}\"\n formControlName=\"value\"\n matInput\n type=\"tel\"/>\n <mat-hint *ngIf=\"propriedade.get('textHint').value\">\n <mat-icon>info</mat-icon>\n {{propriedade.get('textHint').value}}\n </mat-hint>\n <mat-error *ngIf=\"propriedade.get('value').errors?.min\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getMinMessage(propriedade.get('min').value)}}\n </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.max\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getMaxMessage(propriedade.get('max').value)}}\n </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.minLength\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getMinLengthMessage(propriedade.get('minLength').value)}}\n </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.maxLength\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getMaxLengthMessage(propriedade.get('maxLength').value)}}\n </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.required\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getRequiredMessage(propriedade.get('label').value)}}\n </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.customError\">\n <mat-icon>error</mat-icon>\n {{propriedade.get('value').errors?.customError.message}}.\n </mat-error>\n </mat-form-field>\n\t <mat-form-field\n\t\t *ngIf=\"propriedade.get('type').value == typeField.valueList ||\n\t propriedade.get('type').value == typeField.textarea\"\n\t\t [appearance]=\"propriedade.get('appearance').value\"\n\t\t [floatLabel]=\"propriedade.get('floatLabel').value\"\n\t\t [formGroupName]=\"i\"\n\t\t [ngClass]=\"propriedade.get('fieldClass').value\">\n\t <mat-label>{{propriedade.get('label').value}}</mat-label>\n\t <textarea\n #textarea\n\t\t [koalaAutoFocus]=\"propriedade.get('focus').value\"\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n\t\t [cdkAutosizeMaxRows]=\"8\"\n\t\t [cdkAutosizeMinRows]=\"3\"\n\t\t [required]=\"propriedade.get('required').value\"\n [tabIndex]=\"tabIndexStart + i\"\n [minLength]=\"propriedade.get('minLength').value\"\n [maxLength]=\"propriedade.get('maxLength').value\"\n\t\t formControlName=\"value\"\n\t\t matInput>\n </textarea>\n\t <mat-hint *ngIf=\"propriedade.get('textHint').value\">\n\t <mat-icon>info</mat-icon>\n\t\t {{propriedade.get('textHint').value}}\n\t </mat-hint>\n <mat-hint align=\"end\" *ngIf=\"propriedade.get('maxLength').value\">\n {{textarea.value.length}}/{{propriedade.get('maxLength').value}}\n </mat-hint>\n <mat-error *ngIf=\"propriedade.get('value').errors?.minLength\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getMinLengthMessage(propriedade.get('minLength').value)}}\n </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.maxLength\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getMaxLengthMessage(propriedade.get('maxLength').value)}}\n </mat-error>\n\t <mat-error *ngIf=\"propriedade.get('value').errors?.required\">\n\t <mat-icon>error</mat-icon>\n {{errorMessage.getRequiredMessage(propriedade.get('label').value)}}\n\t </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.customError\">\n <mat-icon>error</mat-icon>\n {{propriedade.get('value').errors?.customError.message}}.\n </mat-error>\n\t </mat-form-field>\n\t\t <mat-form-field\n\t\t\t *ngIf=\"propriedade.get('type').value == typeField.textLogs\"\n\t\t\t [appearance]=\"propriedade.get('appearance').value\"\n\t\t\t [floatLabel]=\"propriedade.get('floatLabel').value\"\n\t\t\t [formGroupName]=\"i\"\n\t\t\t [ngClass]=\"propriedade.get('fieldClass').value\">\n\t <mat-label>{{propriedade.get('label').value}}</mat-label>\n\t <div [innerHTML]=\"propriedade.get('textLogs').value\" class=\"text-obs\"></div>\n\t <textarea\n #textarea\n\t\t [koalaAutoFocus]=\"propriedade.get('focus').value\"\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n\t\t [cdkAutosizeMaxRows]=\"8\"\n\t\t [cdkAutosizeMinRows]=\"3\"\n\t\t [required]=\"propriedade.get('required').value\"\n [tabIndex]=\"tabIndexStart + i\"\n [minLength]=\"propriedade.get('minLength').value\"\n [maxLength]=\"propriedade.get('maxLength').value\"\n\t\t formControlName=\"value\"\n\t\t matInput>\n\t </textarea>\n\t <mat-hint *ngIf=\"propriedade.get('textHint').value\">\n\t <mat-icon>info</mat-icon>\n\t\t {{propriedade.get('textHint').value}}\n\t </mat-hint>\n <mat-hint align=\"end\" *ngIf=\"propriedade.get('maxLength').value\">\n {{textarea.value.length}}/{{propriedade.get('maxLength').value}}\n </mat-hint>\n <mat-error *ngIf=\"propriedade.get('value').errors?.minLength\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getMinLengthMessage(propriedade.get('minLength').value)}}\n </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.maxLength\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getMaxLengthMessage(propriedade.get('maxLength').value)}}\n </mat-error>\n\t <mat-error *ngIf=\"propriedade.get('value').errors?.required\">\n\t <mat-icon>error</mat-icon>\n {{errorMessage.getRequiredMessage(propriedade.get('label').value)}}\n\t </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.customError\">\n <mat-icon>error</mat-icon>\n {{propriedade.get('value').errors?.customError.message}}.\n </mat-error>\n\t </mat-form-field>\n\t <mat-form-field\n\t\t *ngIf=\"propriedade.get('type').value == typeField.select\"\n\t\t [appearance]=\"propriedade.get('appearance').value\"\n\t\t [floatLabel]=\"propriedade.get('floatLabel').value\"\n\t\t [formGroupName]=\"i\"\n\t\t [ngClass]=\"propriedade.get('fieldClass').value\">\n\t <mat-label>{{propriedade.get('label').value}}</mat-label>\n\t <mat-select [multiple]=\"propriedade.get('multiple').value\" [required]=\"propriedade.get('required').value\"\n [tabIndex]=\"tabIndexStart + i\" formControlName=\"value\">\n\t <mat-option *ngFor=\"let options of propriedade.get('opcoesSelect').value\" [value]=\"options.value\">\n\t {{options.name}}\n\t </mat-option>\n\t </mat-select>\n\t <mat-hint *ngIf=\"propriedade.get('textHint').value\">\n\t <mat-icon>info</mat-icon>\n\t\t {{propriedade.get('textHint').value}}\n\t </mat-hint>\n\t <mat-error *ngIf=\"propriedade.get('value').errors?.required\">\n\t <mat-icon>error</mat-icon>\n {{errorMessage.getRequiredMessage(propriedade.get('label').value)}}\n\t </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.customError\">\n <mat-icon>error</mat-icon>\n {{propriedade.get('value').errors?.customError.message}}.\n </mat-error>\n\t </mat-form-field>\n <mat-form-field\n class=\"select-multiple-native\"\n *ngIf=\"propriedade.get('type').value == typeField.selectMultipleNative\"\n [appearance]=\"propriedade.get('appearance').value\"\n [floatLabel]=\"propriedade.get('floatLabel').value\"\n [formGroupName]=\"i\"\n [ngClass]=\"propriedade.get('fieldClass').value\">\n <mat-label>{{propriedade.get('label').value}}</mat-label>\n <select\n matNativeControl\n formControlName=\"value\"\n multiple\n [tabIndex]=\"tabIndexStart + i\"\n [required]=\"propriedade.get('required').value\">\n <option *ngFor=\"let options of propriedade.get('opcoesSelect').value\" [value]=\"options.value\">\n {{options.name}}\n </option>\n </select>\n <mat-hint *ngIf=\"propriedade.get('textHint').value\">\n <mat-icon>info</mat-icon>\n {{propriedade.get('textHint').value}}\n </mat-hint>\n <mat-error *ngIf=\"propriedade.get('value').errors?.required\">\n <mat-icon>error</mat-icon>\n {{errorMessage.getRequiredMessage(propriedade.get('label').value)}}\n </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.customError\">\n <mat-icon>error</mat-icon>\n {{propriedade.get('value').errors?.customError.message}}.\n </mat-error>\n </mat-form-field>\n\t <div\n\t\t *ngIf=\"propriedade.get('type').value == typeField.checkbox\"\n\t\t [formGroupName]=\"i\"\n\t\t [ngClass]=\"propriedade.get('fieldClass').value\">\n\t <mat-checkbox\n [tabIndex]=\"tabIndexStart + i\"\n\t\t formControlName=\"value\"\n\t\t value=\"true\">\n\t {{propriedade.get('label').value}}\n\t </mat-checkbox>\n\t </div>\n\t\t <div\n\t\t\t *ngIf=\"propriedade.get('type').value == typeField.moreItems\"\n\t\t\t [formGroupName]=\"i\"\n\t\t\t [ngClass]=\"propriedade.get('fieldClass').value\"\n\t\t\t class=\"more-items-content\">\n\t\t\t <fieldset>\n\t\t\t\t <legend>\n\t\t\t\t\t <koala-button\n\t\t\t\t\t\t (click)=\"addMoreItem(i)\"\n\t\t\t\t\t\t [disabled]=\"propriedade.get('moreItemsConfig').value.length === propriedade.get('moreItemsMaxItems').value\"\n\t\t\t\t\t\t [tooltip]=\"propriedade.get('moreItemsButtonIconAddlabel').value\"\n\t\t\t\t\t\t [backgroundColor]=\"propriedade.get('moreItemsIconBackgroundColor').value\"\n [color]=\"propriedade.get('moreItemsIconFontColor').value\"\n\t\t\t\t\t\t class=\"btn-add-more-items\"\n\t\t\t\t\t\t icon=\"add\">\n\t\t\t\t\t </koala-button>\n\t\t\t\t\t {{propriedade.get('label').value}} (Min.: {{propriedade.get('moreItemsMinItems').value}}\n\t\t\t\t\t | M\u00E1x.: {{propriedade.get('moreItemsMaxItems').value}})\n\t\t\t\t </legend>\n\t\t\t\t <mat-accordion class=\"items\" multi>\n\t\t\t\t\t <mat-expansion-panel\n\t\t\t\t\t\t *ngFor=\"let item of propriedade.get('moreItemsConfig').value.slice().reverse(); index as indexMoreItems\"\n\t\t\t\t\t\t expanded>\n\t\t\t\t\t\t <mat-expansion-panel-header>\n\t\t\t\t\t\t\t\t<mat-panel-title class=\"titleForm\">#\n\t\t\t\t\t\t\t\t\t{{propriedade.get('moreItemsConfig').value.length - 1 - indexMoreItems + 1}}</mat-panel-title>\n\t\t\t\t\t\t\t\t<mat-panel-description class=\"titleForm\">\n\t\t\t\t\t\t\t\t\t{{propriedade.get('label').value}}\n\t\t\t\t\t\t\t\t\t<mat-icon>{{propriedade.get('moreItemsIcon').value}}</mat-icon>\n\t\t\t\t\t\t\t\t</mat-panel-description>\n\t\t\t\t\t\t\t</mat-expansion-panel-header>\n\t\t\t\t\t\t <koala-dynamic-form\n\t\t\t\t\t\t\t [showFieldsMoreItensConfig]=\"item.showFieldsMoreItensConfig\"\n\t\t\t\t\t\t\t [showFields]=\"item.showFields\"\n\t\t\t\t\t\t\t [formConfig]=\"item.formConfig\"\n\t\t\t\t\t\t\t [form]=\"item.form\"\n [tabIndexStart]=\"tabIndexStart + i\">\n\t\t\t\t\t\t </koala-dynamic-form>\n\t\t\t\t\t <mat-action-row\n\t\t\t\t\t\t *ngIf=\"propriedade.get('moreItemsConfig').value.length > propriedade.get('moreItemsMinItems').value\">\n\t\t\t\t\t <button\n\t\t\t\t\t\t (click)=\"removeMoreItem(i, propriedade.get('moreItemsConfig').value.length - 1 - indexMoreItems)\"\n\t\t\t\t\t\t mat-icon-button>\n\t\t\t\t\t\t <mat-icon>delete</mat-icon>\n\t\t\t\t\t </button>\n\t\t\t\t\t </mat-action-row>\n\t\t\t\t\t </mat-expansion-panel>\n\t\t\t\t </mat-accordion>\n\t\t\t </fieldset>\n\t\t </div>\n\t\t <mat-form-field\n\t\t\t *ngIf=\"propriedade.get('type').value == typeField.autocomplete\"\n\t\t\t [appearance]=\"propriedade.get('appearance').value\"\n\t\t\t [floatLabel]=\"propriedade.get('floatLabel').value\"\n\t\t\t [formGroupName]=\"i\"\n\t\t\t [ngClass]=\"propriedade.get('fieldClass').value\">\n\t <mat-label>{{propriedade.get('label').value}} {{propriedade.get('multiple').value &&\n\t propriedade.get('required').value ? '*' : ''}}</mat-label>\n\t\t\t <div *ngIf=\"propriedade.get('multiple').value else single\">\n\t <mat-chip-grid #chipList>\n <mat-chip-row\n (removed)=\"removeOptionOnAutocomplete(i, option)\"\n *ngFor=\"let option of propriedade.get('autocompleteSelectedValue').value\"\n [color]=\"getColorChip(propriedade.get('autocompleteMultipleConfig').value | async)\"\n [removable]=\"true\">\n {{display(option)}}\n <mat-icon *ngIf=\"!propriedade.get('disabled').value\" matChipRemove>cancel</mat-icon>\n </mat-chip-row>\n\t <input\n [id]=\"'autocomplete-' + propriedade.get('name').value\"\n [koalaAutoFocus]=\"propriedade.get('focus').value\"\n\t\t [required]=\"propriedade.get('required').value\"\n\t\t [matAutocomplete]=\"auto\"\n\t\t [matChipInputFor]=\"chipList\"\n [tabIndex]=\"tabIndexStart + i\"\n [autocomplete]=\"getRandomString()\"\n\t\t formControlName=\"value\"\n\t\t matInput\n\t\t type=\"text\"\n\t\t placeholder=\"Selecione um ou mais op\u00E7\u00F5es...\">\n\t </mat-chip-grid>\n\t </div>\n\t <ng-template #single>\n\t\t <input\n\t\t\t [matAutocomplete]=\"auto\"\n [koalaAutoFocus]=\"propriedade.get('focus').value\"\n\t\t\t [required]=\"propriedade.get('required').value\"\n [tabIndex]=\"tabIndexStart + i\"\n [autocomplete]=\"getRandomString()\"\n\t\t\t formControlName=\"value\"\n\t\t\t matInput\n\t\t\t placeholder=\"Selecione uma op\u00E7\u00E3o...\"\n\t\t\t type=\"text\">\n\t </ng-template>\n\t <mat-spinner *ngIf=\"propriedade.get('autocompleteLoading').value | async\" color=\"primary\"\n\t matSuffix></mat-spinner>\n\t <button\n\t\t (click)=\"clearAutocomplete(i)\"\n\t\t *ngIf=\"\n\t !(propriedade.get('autocompleteLoading').value | async) &&\n\t !propriedade.get('disabled').value\"\n\t\t color=\"warn\"\n\t\t mat-icon-button\n\t\t matSuffix\n\t\t type=\"button\">\n\t <mat-icon>close</mat-icon>\n\t </button>\n\t <mat-hint *ngIf=\"propriedade.get('textHint').value\">\n\t <mat-icon>info</mat-icon>\n\t\t {{propriedade.get('textHint').value}}\n\t </mat-hint>\n\t <mat-error *ngIf=\"propriedade.get('value').errors?.required || propriedade.get('value').errors?.autocompleteSelected\">\n\t <mat-icon>error</mat-icon>\n {{errorMessage.getAutocompleteMessage(propriedade.get('label').value)}}\n\t </mat-error>\n <mat-error *ngIf=\"propriedade.get('value').errors?.customError\">\n <mat-icon>error</mat-icon>\n {{propriedade.get('value').errors?.customError.message}}.\n </mat-error>\n\t <mat-autocomplete\n\t\t #auto=\"matAutocomplete\"\n\t\t [displayWith]=\"display\" autoActiveFirstOption>\n <mat-option\n *ngIf=\"propriedade.get('autocompleteAddOption').value && isValidNewAutocompleteOption(propriedade.get('value').value)\"\n [value]=\"{\n value: {id: 0, name: propriedade.get('value').value},\n name: propriedade.get('value').value\n }\">\n Add <b>{{propriedade.get('value').value}}</b>...\n </mat-option>\n\t\t <div *ngIf=\"(getAutocompleteOptions(propriedade) | async) as options\">\n\t\t <mat-option *ngFor=\"let option of options\" [value]=\"option\">\n\t\t {{option.name}}\n\t\t </mat-option>\n\t\t </div>\n\t </mat-autocomplete>\n\t </mat-form-field>\n\t\t <div *ngIf=\"propriedade.get('type').value == typeField.file\">\n\t\t\t <koala-file-button\n\t\t\t\t (getFiles)=\"propriedade.get('value').setValue($event)\"\n\t\t\t\t [accept]=\"propriedade.get('fileButtonConfig').value.accept\"\n\t\t\t\t [backgroundColor]=\"propriedade.get('fileButtonConfig').value.backgroundColor\"\n\t\t\t\t [color]=\"propriedade.get('fileButtonConfig').value.color\"\n\t\t\t\t [disabled]=\"propriedade.get('disabled').value\"\n\t\t\t\t [icon]=\"propriedade.get('fileButtonConfig').value.icon\"\n\t\t\t\t [multiple]=\"propriedade.get('multiple').value\"\n\t\t\t\t [text]=\"propriedade.get('fileButtonConfig').value.text\">\n\t\t\t </koala-file-button>\n\t\t </div>\n\t\t <div *ngIf=\"\n\t\t propriedade.get('type').value == typeField.dynamicForm &&\n\t\t\t\t(getDynamicFormConfig(propriedade) | async) as dynamicFormConfig\">\n\t\t\t <fieldset *ngIf=\"propriedade.get('label').value else dynamicFormWithoutLabel\">\n\t\t\t\t <legend>{{propriedade.get('label').value}}</legend>\n\t\t\t\t <koala-dynamic-form\n\t\t\t\t\t [formConfig]=\"dynamicFormConfig.formConfig\"\n\t\t\t\t\t [form]=\"dynamicFormConfig.form\"\n\t\t\t\t\t [setValues]=\"dynamicFormConfig.setValues\"\n\t\t\t\t\t [showFields]=\"dynamicFormConfig.showFields\"\n [tabIndexStart]=\"tabIndexStart + i\">\n\t\t\t\t </koala-dynamic-form>\n\t\t\t </fieldset>\n\t\t\t <ng-template #dynamicFormWithoutLabel>\n\t\t\t\t <koala-dynamic-form\n\t\t\t\t\t [formConfig]=\"dynamicFormConfig.formConfig\"\n\t\t\t\t\t [form]=\"dynamicFormConfig.form\"\n\t\t\t\t\t [setValues]=\"dynamicFormConfig.setValues\"\n\t\t\t\t\t [showFields]=\"dynamicFormConfig.showFields\"\n [tabIndexStart]=\"tabIndexStart + i\">\n\t\t\t\t </koala-dynamic-form>\n\t\t\t </ng-template>\n\t\t </div>\n <div\n class=\"radio-btn-group\"\n *ngIf=\"propriedade.get('type').value == typeField.radio\"\n [formGroupName]=\"i\"\n [ngClass]=\"propriedade.get('fieldClass').value\">\n <mat-radio-group formControlName=\"value\">\n <label *ngIf=\"propriedade.get('label').value\">{{propriedade.get('label').value}}</label>\n <mat-radio-button\n [tabIndex]=\"tabIndexStart + i\"\n *ngFor=\"let options of propriedade.get('opcoesSelect').value\"\n [value]=\"options.value\">\n {{options.name}}\n </mat-radio-button>\n </mat-radio-group>\n </div>\n\t </div>\n </div>\n <ng-content select=\"[btn-submit]\"></ng-content>\n</div>\n", styles: [".more-items-content fieldset{border:1px solid #cccccc;padding:16px}.more-items-content fieldset legend{font-family:Josefin Sans,sans-serif;font-size:11px;font-weight:700;padding:0 8px}.more-items-content .items .titleForm{color:#616161}.more-items-content .items .mat-expansion-panel-header-title,.more-items-content .items .mat-expansion-panel-header-description{flex-basis:0}.more-items-content .items .mat-expansion-panel-header-description{align-items:center;justify-content:space-between}.more-items-content .items .mat-form-field+.mat-form-field{margin-left:8px}.radio-btn-group label{position:relative;display:block;padding:10px 0}.text-obs{background:#eeeeee;border-radius:5px;color:#212121;font-family:OpenSansLight,sans-serif;height:150px;margin:0 auto 10px;overflow-y:auto;padding:10px;position:relative;width:calc(100% - 27px)}.select-multiple-native{margin-bottom:15px}.select-multiple-native select{width:100%;height:150px;background:transparent;border:none}.select-multiple-native select:focus,.select-multiple-native select:active{outline:none}.select-multiple-native select option{padding:5px 10px;font-family:JosefinSans,sans-serif}.select-multiple-native select option:checked{background:#f1f1f1!important}\n"] }]
585
- }], ctorParameters: function () { return [{ type: i1.UntypedFormBuilder }, { type: i2.KoalaDynamicFormService }]; }, propDecorators: { form: [{
586
- type: Input
587
- }], formConfig: [{
588
- type: Input
589
- }], showFields: [{
590
- type: Input
591
- }], showFieldsMoreItensConfig: [{
592
- type: Input
593
- }], setValues: [{
594
- type: Input
595
- }], tabIndexStart: [{
596
- type: Input
597
- }] } });
598
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm0vc3JjL2xpYi9keW5hbWljLWZvcm0vZHluYW1pYy1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm0vc3JjL2xpYi9keW5hbWljLWZvcm0vZHluYW1pYy1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBMEQsVUFBVSxFQUFtQixNQUFNLGdCQUFnQixDQUFDO0FBRXJILE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXZDLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBUTdGLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN2RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkQsT0FBTyxF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QkFBb0I7cUdBQXBCLG9CQUFvQiwrUUMvQmpDLG92NkJBMGtCQSw2eVFEM2lCYSxvQkFBb0I7MkZBQXBCLG9CQUFvQjtrQkFOaEMsU0FBUzsrQkFDRSxvQkFBb0IsbUJBR2IsdUJBQXVCLENBQUMsTUFBTTsrSUFHdEMsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyx5QkFBeUI7c0JBQWpDLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVW50eXBlZEZvcm1BcnJheSwgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUdyb3VwLCBWYWxpZGF0b3JzLCBBYnN0cmFjdENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBLb2FsYUR5bmFtaWNGb3JtRmllbGRJbnRlcmZhY2UgfSBmcm9tICcuL2ludGVyZmFjZXMva29hbGEuZHluYW1pYy1mb3JtLWZpZWxkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW0gfSBmcm9tICcuL2VudW1zL2R5bmFtaWMtZm9ybS10eXBlLWZpZWxkLmVudW0nO1xuaW1wb3J0IHsgQ3BmVmFsaWRhdG9yIH0gZnJvbSAnLi92YWxpZGF0b3JzL2NwZi52YWxpZGF0b3InO1xuaW1wb3J0IHsgQ25walZhbGlkYXRvciB9IGZyb20gJy4vdmFsaWRhdG9ycy9jbnBqLnZhbGlkYXRvcic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQWJzdHJhY3QgfSBmcm9tICcuLi9mb3JtLmFic3RyYWN0JztcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgS29hbGFEeW5hbWljU2V0VmFsdWVJbnRlcmZhY2UgfSBmcm9tICcuL2ludGVyZmFjZXMva29hbGEuZHluYW1pYy1zZXQtdmFsdWUuaW50ZXJmYWNlJztcbmltcG9ydCB7IEF1dG9jb21wbGV0ZVNlbGVjdGVkVmFsaWRhdG9yIH0gZnJvbSAnLi92YWxpZGF0b3JzL2F1dG9jb21wbGV0ZS1zZWxlY3RlZC52YWxpZGF0b3InO1xuaW1wb3J0IHsgS29hbGFEeW5hbWljQXV0b2NvbXBsZXRlT3B0aW9uc0ludGVyZmFjZSB9IGZyb20gJy4vaW50ZXJmYWNlcy9rb2FsYS5keW5hbWljLWF1dG9jb21wbGV0ZS1vcHRpb25zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBLb2FsYUR5bmFtaWNGb3JtU2hvd0ZpZWxkSW50ZXJmYWNlIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2tvYWxhLmR5bmFtaWMtZm9ybS1zaG93LWZpZWxkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBLb2FsYUR5bmFtaWNGb3JtU2VydmljZSB9IGZyb20gJy4va29hbGEuZHluYW1pYy1mb3JtLnNlcnZpY2UnO1xuaW1wb3J0IHsgS29hbGFEeW5hbWljRm9ybU1vcmVJdGVuc1Nob3dGaWVsZENvbmZpZ0ludGVyZmFjZSB9IGZyb20gJy4vaW50ZXJmYWNlcy9rb2FsYS5keW5hbWljLWZvcm0tbW9yZS1pdGVucy1zaG93LWZpZWxkLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVGhlbWVQYWxldHRlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBLb2FsYUR5bmFtaWNGb3JtQXV0b2NvbXBsZXRlTXVsdGlwbGVDb25maWdJbnRlcmZhY2UgfSBmcm9tICcuL2ludGVyZmFjZXMva29hbGEuZHluYW1pYy1mb3JtLWF1dG9jb21wbGV0ZS1tdWx0aXBsZS1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IEtvYWxhRHluYW1pY0Zvcm1Db25maWdJbnRlcmZhY2UgfSBmcm9tICcuL2ludGVyZmFjZXMva29hbGEuZHluYW1pYy1mb3JtLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgZGVsYXkgfSBmcm9tIFwiQGtvYWxhcngvdXRpbHMvb3BlcmF0b3JzL2RlbGF5XCI7XG5pbXBvcnQgeyBrb2FsYSB9IGZyb20gXCJAa29hbGFyeC91dGlsc1wiO1xuaW1wb3J0IHsgRGF0ZU1pblZhbGlkYXRvciB9IGZyb20gXCIuL3ZhbGlkYXRvcnMvZGF0ZS1taW4udmFsaWRhdG9yXCI7XG5pbXBvcnQgeyBEYXRlTWF4VmFsaWRhdG9yIH0gZnJvbSBcIi4vdmFsaWRhdG9ycy9kYXRlLW1heC52YWxpZGF0b3JcIjtcbmltcG9ydCB7IEtvYWxhTGFuZ3VhZ2VIZWxwZXIgfSBmcm9tIFwiQGtvYWxhcngvdWkvY29yZVwiO1xuaW1wb3J0IHsgcmFuZG9tU3RyaW5nIH0gZnJvbSBcIkBrb2FsYXJ4L3V0aWxzL29wZXJhdG9ycy9zdHJpbmdcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna29hbGEtZHluYW1pYy1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICdkeW5hbWljLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnZHluYW1pYy1mb3JtLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0Zvcm1Db21wb25lbnQgZXh0ZW5kcyBGb3JtQWJzdHJhY3QgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuICBASW5wdXQoKSBmb3JtQ29uZmlnOiBLb2FsYUR5bmFtaWNGb3JtRmllbGRJbnRlcmZhY2VbXTtcbiAgQElucHV0KCkgc2hvd0ZpZWxkczogQmVoYXZpb3JTdWJqZWN0PEtvYWxhRHluYW1pY0Zvcm1TaG93RmllbGRJbnRlcmZhY2VbXT47XG4gIEBJbnB1dCgpIHNob3dGaWVsZHNNb3JlSXRlbnNDb25maWc6IEtvYWxhRHluYW1pY0Zvcm1Nb3JlSXRlbnNTaG93RmllbGRDb25maWdJbnRlcmZhY2VbXTtcbiAgQElucHV0KCkgc2V0VmFsdWVzOiBCZWhhdmlvclN1YmplY3Q8S29hbGFEeW5hbWljU2V0VmFsdWVJbnRlcmZhY2VbXT47XG4gIEBJbnB1dCgpIHRhYkluZGV4U3RhcnQ6IG51bWJlciA9IDE7XG5cbiAgcHVibGljIGNvbnRyb2xzOiBVbnR5cGVkRm9ybUFycmF5O1xuICBwdWJsaWMgdHlwZUZpZWxkID0gRHluYW1pY0Zvcm1UeXBlRmllbGRFbnVtO1xuICBwdWJsaWMgaG91cnNBbmRNaW51dGVzTWFzayA9ICcwMDowMDAnO1xuICBwdWJsaWMgZXJyb3JNZXNzYWdlID0gS29hbGFMYW5ndWFnZUhlbHBlcjtcbiAgcHVibGljIGZvcm1JZCA9IHJhbmRvbVN0cmluZygyNSwge1xuICAgIGxvd2VyY2FzZTogdHJ1ZSxcbiAgICB1cHBlcmNhc2U6IHRydWUsXG4gICAgbnVtYmVyczogZmFsc2UsXG4gICAgc3BlY2lhbENoYXJhY3RlcnM6IGZhbHNlXG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGR5bmFtaWNGb3JtU2VydmljZTogS29hbGFEeW5hbWljRm9ybVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKCkgPT4gdGhpcy5mb3JtKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICghdGhpcy5mb3JtLmdldCgnZm9ybURhdGEnKSkge1xuICAgICAgdGhpcy5mb3JtLmFkZENvbnRyb2woJ2Zvcm1EYXRhJywgdGhpcy5mYi5hcnJheShbXSkpO1xuICAgIH1cbiAgICB0aGlzLmNvbnRyb2xzID0gdGhpcy5mb3JtLmdldCgnZm9ybURhdGEnKSBhcyBVbnR5cGVkRm9ybUFycmF5O1xuICAgIHRoaXMuZm9ybUNvbmZpZz8uZm9yRWFjaCgoY29uZmlnLCBpbmRleENvbmZpZykgPT4ge1xuICAgICAgY29uc3QgbmV3Rm9ybUdyb3VwID0gdGhpcy5uZXdDb250cm9sKGNvbmZpZyk7XG4gICAgICBpZiAoY29uZmlnLmFzeW5jVmFsaWRhdG9ycykge1xuICAgICAgICBuZXdGb3JtR3JvdXAuZ2V0KCd2YWx1ZScpLnNldEFzeW5jVmFsaWRhdG9ycyhjb25maWcuYXN5bmNWYWxpZGF0b3JzKTtcbiAgICAgIH1cbiAgICAgIG5ld0Zvcm1Hcm91cC5nZXQoJ3ZhbHVlJykudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgaWYgKGNvbmZpZy50eXBlID09PSBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW0uZHluYW1pY0Zvcm0pIHtcbiAgICAgICAgY29uc3QgZm9ybUdyb3VwRHluYW1pY0Zvcm1zU3ViamVjdCA9IG5ld0Zvcm1Hcm91cC5nZXQoJ2R5bmFtaWNGb3JtQ29uZmlnJykudmFsdWUgYXMgQmVoYXZpb3JTdWJqZWN0PEtvYWxhRHluYW1pY0Zvcm1Db25maWdJbnRlcmZhY2U+O1xuICAgICAgICBmb3JtR3JvdXBEeW5hbWljRm9ybXNTdWJqZWN0LnN1YnNjcmliZShmb3JtR3JvdXBDb25maWcgPT4ge1xuICAgICAgICAgIGlmIChmb3JtR3JvdXBDb25maWcpIHtcbiAgICAgICAgICAgIGZvcm1Hcm91cENvbmZpZy5mb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoZm9ybUdyb3VwQ29uZmlnLmZvcm0udmFsaWQgJiYgKGNvbmZpZy52YWx1ZUNoYW5nZXMgfHwgdGhpcy5zaG93RmllbGRzTW9yZUl0ZW5zQ29uZmlnKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5keW5hbWljRm9ybVNlcnZpY2UuZW1pdERhdGEoZm9ybUdyb3VwQ29uZmlnLmZvcm0pO1xuICAgICAgICAgICAgICAgIG5ld0Zvcm1Hcm91cC5nZXQoJ3ZhbHVlJykuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBjb25maWcudmFsdWVDaGFuZ2VzIHx8XG4gICAgICAgIGNvbmZpZy50eXBlID09PSBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW0uYXV0b2NvbXBsZXRlIHx8XG4gICAgICAgIGNvbmZpZy50eXBlID09PSBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW0uZHluYW1pY0Zvcm0gfHxcbiAgICAgICAgdGhpcy5zaG93RmllbGRzTW9yZUl0ZW5zQ29uZmlnXG4gICAgICApIHtcbiAgICAgICAgaWYgKGNvbmZpZy50eXBlID09PSBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW0uYXV0b2NvbXBsZXRlKSB7XG4gICAgICAgICAgY29uc3QgYXV0b2NvbXBsZXRlT3B0aW9uc1N1YmplY3QgPSBuZXdGb3JtR3JvdXAuZ2V0KCdhdXRvY29tcGxldGVPcHRpb25zJykudmFsdWUgYXMgQmVoYXZpb3JTdWJqZWN0PEtvYWxhRHluYW1pY0F1dG9jb21wbGV0ZU9wdGlvbnNJbnRlcmZhY2VbXT47XG4gICAgICAgICAgaWYgKGF1dG9jb21wbGV0ZU9wdGlvbnNTdWJqZWN0KSB7XG4gICAgICAgICAgICBhdXRvY29tcGxldGVPcHRpb25zU3ViamVjdC5zdWJzY3JpYmUob3B0aW9ucyA9PiBuZXdGb3JtR3JvdXAuZ2V0KCdhdXRvY29tcGxldGVPcHRpb25zRmlsdGVyZWQnKS52YWx1ZS5uZXh0KG9wdGlvbnMpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbmV3Rm9ybUdyb3VwLmdldCgndmFsdWUnKVxuICAgICAgICAgICAgICAgICAgICAudmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgzMDApKVxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKGFzeW5jIHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnNldENvbmZpZ0R5bmFtaWNGb3JtKG5ld0Zvcm1Hcm91cCk7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy50eXBlID09PSBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW0uYXV0b2NvbXBsZXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5oYXNPd25Qcm9wZXJ0eSgndmFsdWUnKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLmhhc093blByb3BlcnR5KCduYW1lJykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoID09PSAyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkgfHwgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkodmFsdWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Rm9ybUdyb3VwLmdldCgnbXVsdGlwbGUnKS52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdGb3JtR3JvdXAuZ2V0KCdtdWx0aXBsZScpLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdGb3JtR3JvdXAuZ2V0KCdhdXRvY29tcGxldGVTZWxlY3RlZFZhbHVlJykuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Rm9ybUdyb3VwLmdldCgndmFsdWUnKS5zZXRWYWx1ZSh2YWx1ZVt2YWx1ZS5sZW5ndGggLSAxXSwge2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudmFsaWRhdGVBdXRvY29tcGxldGVTZWxlY3QobmV3Rm9ybUdyb3VwLmdldCgnYXV0b2NvbXBsZXRlU2VsZWN0ZWRWYWx1ZScpLnZhbHVlLCB2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Rm9ybUdyb3VwLmdldCgnYXV0b2NvbXBsZXRlU2VsZWN0ZWRWYWx1ZScpLnZhbHVlLnB1c2godmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGF1dG9jb21wbGV0ZUlucHV0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MSW5wdXRFbGVtZW50PihgIyR7dGhpcy5mb3JtSWR9IGlucHV0I2F1dG9jb21wbGV0ZS0ke25ld0Zvcm1Hcm91cC5nZXQoJ25hbWUnKT8udmFsdWV9YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG9jb21wbGV0ZUlucHV0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGVJbnB1dC52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdGb3JtR3JvdXAuZ2V0KCdhdXRvY29tcGxldGVTZWxlY3RlZFZhbHVlJykuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFuZXdGb3JtR3JvdXAuZ2V0KCdtdWx0aXBsZScpLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0Zvcm1Hcm91cC5nZXQoJ2F1dG9jb21wbGV0ZVNlbGVjdGVkVmFsdWUnKS5zZXRWYWx1ZShrb2FsYSh0aGlzLmZvcm1Db25maWcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFycmF5PEtvYWxhRHluYW1pY0Zvcm1GaWVsZEludGVyZmFjZT4oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIobmV3Rm9ybUdyb3VwLmdldCgnbmFtZScpLnZhbHVlLCAnbmFtZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldFZhbHVlKClbMF0/LmF1dG9jb21wbGV0ZURlZmF1bHRWYWx1ZU9uQ2xlYXIgPz8gbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWcudHlwZSA9PT0gRHluYW1pY0Zvcm1UeXBlRmllbGRFbnVtLmF1dG9jb21wbGV0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnLmF1dG9jb21wbGV0ZVR5cGUgPT09ICdhbGwnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXV0b2NvbXBsZXRlT3B0aW9uc1N1YmplY3QgPSBuZXdGb3JtR3JvdXAuZ2V0KCdhdXRvY29tcGxldGVPcHRpb25zJykudmFsdWUgYXMgQmVoYXZpb3JTdWJqZWN0PEtvYWxhRHluYW1pY0F1dG9jb21wbGV0ZU9wdGlvbnNJbnRlcmZhY2VbXT47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Rm9ybUdyb3VwLmdldCgnYXV0b2NvbXBsZXRlT3B0aW9uc0ZpbHRlcmVkJykudmFsdWUubmV4dCh0aGlzLmF1dG9jb21wbGV0ZUZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZU9wdGlvbnNTdWJqZWN0LnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb25maWcuYXV0b2NvbXBsZXRlVHlwZSA9PT0gJ29uRGVtYW5kJyAmJiB0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsb2FkZXIgPSBuZXdGb3JtR3JvdXAuZ2V0KCdhdXRvY29tcGxldGVMb2FkaW5nJykudmFsdWUgYXMgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlci5uZXh0KHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5hdXRvY29tcGxldGVGaWx0ZXIodmFsdWUpLnN1YnNjcmliZShvcHRpb25zID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0Zvcm1Hcm91cC5nZXQoJ2F1dG9jb21wbGV0ZU9wdGlvbnNGaWx0ZXJlZCcpLnZhbHVlLm5leHQob3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkZXIubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy52YWx1ZUNoYW5nZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWcudHlwZSA9PT0gRHluYW1pY0Zvcm1UeXBlRmllbGRFbnVtLmF1dG9jb21wbGV0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcudmFsdWVDaGFuZ2VzKChuZXdGb3JtR3JvdXAuZ2V0KCdtdWx0aXBsZScpLnZhbHVlID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Rm9ybUdyb3VwLmdldCgnYXV0b2NvbXBsZXRlU2VsZWN0ZWRWYWx1ZScpLnZhbHVlLm1hcChpdGVtID0+IGl0ZW0udmFsdWUpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Rm9ybUdyb3VwLmdldCgnYXV0b2NvbXBsZXRlU2VsZWN0ZWRWYWx1ZScpLnZhbHVlPy52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICApKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy52YWx1ZUNoYW5nZXModmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLmNvbnRyb2xzLnB1c2gobmV3Rm9ybUdyb3VwKTtcbiAgICAgIGlmIChjb25maWcubW9yZUl0ZW1zQ29uZmlnKSB7XG4gICAgICAgIGlmIChjb25maWcubW9yZUl0ZW1zTWluSXRlbXMgPiAwKSB7XG4gICAgICAgICAgZm9yIChsZXQgbWluID0gMDsgbWluIDwgY29uZmlnLm1vcmVJdGVtc01pbkl0ZW1zOyBtaW4rKykge1xuICAgICAgICAgICAgaWYgKG1pbiA8PSBjb25maWcubW9yZUl0ZW1zTWF4SXRlbXMpIHtcbiAgICAgICAgICAgICAgdGhpcy5hZGRNb3JlSXRlbShpbmRleENvbmZpZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChjb25maWcubW9yZUl0ZW1zQ29uZmlnLnNldFZhbHVlcykge1xuICAgICAgICAgIGNvbmZpZy5tb3JlSXRlbXNDb25maWdcbiAgICAgICAgICAgICAgICAuc2V0VmFsdWVzXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShhc3luYyB2YWx1ZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlcy5mb3JFYWNoKChpdGVtVmFsdWUsIGluZGV4VmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY29udHJvbHMuY29udHJvbHNbaW5kZXhDb25maWddLmdldCgnbW9yZUl0ZW1zQ29uZmlnJykudmFsdWVbaW5kZXhWYWx1ZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkTW9yZUl0ZW0oaW5kZXhDb25maWcpO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWVzT25GaWVsZHMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1WYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250cm9scy5jb250cm9sc1tpbmRleENvbmZpZ10uZ2V0KCdtb3JlSXRlbXNDb25maWcnKS52YWx1ZVtpbmRleFZhbHVlXS5mb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgIH0sIDMwMCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKHRoaXMuc2hvd0ZpZWxkcykge1xuICAgICAgdGhpcy5jaGFuZ2VWaXNpYmlsaXR5RmllbGRzKHRoaXMuc2hvd0ZpZWxkcywgdGhpcy5mb3JtKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2V0VmFsdWVzKSB7XG4gICAgICB0aGlzLnNldFZhbHVlc09uRmllbGRzKHRoaXMuc2V0VmFsdWVzLCB0aGlzLmZvcm0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc1ZhbGlkTmV3QXV0b2NvbXBsZXRlT3B0aW9uKHZhbHVlOiBhbnkpIHtcbiAgICByZXR1cm4gISF2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnO1xuICB9XG5cbiAgcHVibGljIGhvdXJzQW5kTWludXRlc0FwcGx5TWFzayhpbmRleDogbnVtYmVyLCBldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmNvbnRyb2xzPy5jb250cm9sc1tpbmRleF07XG4gICAgY29uc3QgdHlwZSA9IGNvbnRyb2w/LmdldCgndHlwZScpLnZhbHVlIGFzIER5bmFtaWNGb3JtVHlwZUZpZWxkRW51bTtcbiAgICBpZiAodHlwZSA9PT0gRHluYW1pY0Zvcm1UeXBlRmllbGRFbnVtLmhvdXJzQW5kTWludXRlcykge1xuICAgICAgY29uc3QgdmFsdWUgPSBjb250cm9sPy5nZXQoJ3ZhbHVlJykudmFsdWU7XG4gICAgICBpZiAoZXZlbnQua2V5ID09ICdCYWNrc3BhY2UnICYmIHZhbHVlLmxlbmd0aCA8IDYpIHtcbiAgICAgICAgdGhpcy5ob3Vyc0FuZE1pbnV0ZXNNYXNrID0gJzAwOjAwMCc7XG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSAhPSAnQmFja3NwYWNlJyAmJiB2YWx1ZS5sZW5ndGggPj0gNikge1xuICAgICAgICB0aGlzLmhvdXJzQW5kTWludXRlc01hc2sgPSAnMDAwOjAwJztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcGFzc3dvcmRWaWV3KGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5jb250cm9scz8uY29udHJvbHNbaW5kZXhdO1xuICAgIGNvbnN0IGhpZGVQYXNzd29yZCA9ICFjb250cm9sPy5nZXQoJ2hpZGVQYXNzd29yZCcpLnZhbHVlO1xuICAgIGNvbnRyb2w/LmdldCgnaGlkZVBhc3N3b3JkJykuc2V0VmFsdWUoaGlkZVBhc3N3b3JkKTtcbiAgICBjb250cm9sPy5nZXQoJ3R5cGUnKS5zZXRWYWx1ZShoaWRlUGFzc3dvcmQgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGb3JtVHlwZUZpZWxkRW51bS5wYXNzd29yZCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0Zvcm1UeXBlRmllbGRFbnVtLnRleHRcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFkZE1vcmVJdGVtKHByb3BJbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuY29udHJvbHMuY29udHJvbHNbcHJvcEluZGV4XS5nZXQoJ21vcmVJdGVtc0NvbmZpZycpLnZhbHVlLmxlbmd0aCA8IHRoaXMuY29udHJvbHMuY29udHJvbHNbcHJvcEluZGV4XS5nZXQoJ21vcmVJdGVtc01heEl0ZW1zJykudmFsdWUpIHtcbiAgICAgIGNvbnN0IGZvcm1Hcm91cCA9IHRoaXMuZmIuZ3JvdXAoe30pO1xuICAgICAgdGhpcy5jb250cm9scy5jb250cm9sc1twcm9wSW5kZXhdLmdldCgnbW9yZUl0ZW1zQ29uZmlnJykudmFsdWUucHVzaCh7XG4gICAgICAgIGZvcm06IGZvcm1Hcm91cCxcbiAgICAgICAgZm9ybUNvbmZpZzogdGhpcy5mb3JtQ29uZmlnW3Byb3BJbmRleF0ubW9yZUl0ZW1zQ29uZmlnLmZvcm1Db25maWcsXG4gICAgICAgIHNob3dGaWVsZHM6IG5ldyBCZWhhdmlvclN1YmplY3Q8QmVoYXZpb3JTdWJqZWN0PEtvYWxhRHluYW1pY1NldFZhbHVlSW50ZXJmYWNlW10+W10+KFtdKSxcbiAgICAgICAgc2hvd0ZpZWxkc01vcmVJdGVuc0NvbmZpZzogdGhpcy5mb3JtQ29uZmlnW3Byb3BJbmRleF0ubW9yZUl0ZW1zQ29uZmlnLnNob3dGaWVsZHNDb25maWdcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jb250cm9scy5jb250cm9sc1twcm9wSW5kZXhdLmdldCgnbW9yZUl0ZW1zRXhwYW5kZWQnKS5zZXRWYWx1ZShcbiAgICAgICAgdGhpcy5jb250cm9scy5jb250cm9sc1twcm9wSW5kZXhdLmdldCgnbW9yZUl0ZW1zQ29uZmlnJykudmFsdWUubGVuZ3RoIC0gMVxuICAgICAgKTtcbiAgICAgIGNvbnN0IGZvcm1BcnJheU1vcmVJdGVtcyA9IHRoaXMuY29udHJvbHMuY29udHJvbHNbcHJvcEluZGV4XS5nZXQoJ21vcmVJdGVtc0Zvcm1Hcm91cCcpIGFzIFVudHlwZWRGb3JtQXJyYXk7XG4gICAgICBmb3JtQXJyYXlNb3JlSXRlbXMucHVzaChmb3JtR3JvdXApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVNb3JlSXRlbShwcm9wSW5kZXg6IG51bWJlciwgcmVtb3ZlSW5kZXgpIHtcbiAgICBjb25zdCBleHBhbmRlZEl0ZW1JbmRleCA9IHJlbW92ZUluZGV4IC0gMTtcbiAgICB0aGlzLmNvbnRyb2xzLmNvbnRyb2xzW3Byb3BJbmRleF0uZ2V0KCdtb3JlSXRlbXNDb25maWcnKS52YWx1ZS5zcGxpY2UocmVtb3ZlSW5kZXgsIDEpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jb250cm9scy5jb250cm9sc1twcm9wSW5kZXhdLmdldCgnbW9yZUl0ZW1zRXhwYW5kZWQnKS5zZXRWYWx1ZSgoZXhwYW5kZWRJdGVtSW5kZXggPCAwKSA/IDAgOiBleHBhbmRlZEl0ZW1JbmRleCk7XG4gICAgfSwgNTApO1xuICB9XG5cbiAgcHVibGljIGNsZWFyQXV0b2NvbXBsZXRlKHByb3BJbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuY29udHJvbHMuY29udHJvbHNbcHJvcEluZGV4XS5nZXQoJ211bHRpcGxlJykudmFsdWUpIHtcbiAgICAgIHRoaXMuY29udHJvbHMuY29udHJvbHNbcHJvcEluZGV4XS5nZXQoJ2F1dG9jb21wbGV0ZVNlbGVjdGVkVmFsdWUnKS5zZXRWYWx1ZShbXSk7XG4gICAgICB0aGlzLmNvbnRyb2xzLmNvbnRyb2xzW3Byb3BJbmRleF0uZ2V0KCd2YWx1ZScpLnNldFZhbHVlKG51bGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbnRyb2xzLmNvbnRyb2xzW3Byb3BJbmRleF0uZ2V0KCdhdXRvY29tcGxldGVTZWxlY3RlZFZhbHVlJykuc2V0VmFsdWUodGhpcy5mb3JtQ29uZmlnW3Byb3BJbmRleF0uYXV0b2NvbXBsZXRlRGVmYXVsdFZhbHVlT25DbGVhciA/PyBudWxsKTtcbiAgICAgIHRoaXMuY29udHJvbHMuY29udHJvbHNbcHJvcEluZGV4XS5nZXQoJ3ZhbHVlJykuc2V0VmFsdWUodGhpcy5mb3JtQ29uZmlnW3Byb3BJbmRleF0uYXV0b2NvbXBsZXRlRGVmYXVsdFZhbHVlT25DbGVhciA/PyBudWxsKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZGlzcGxheShvcHRpb24/OiBLb2FsYUR5bmFtaWNBdXRvY29tcGxldGVPcHRpb25zSW50ZXJmYWNlKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gb3B0aW9uID8gb3B0aW9uLm5hbWUgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlT3B0aW9uT25BdXRvY29tcGxldGUocHJvcEluZGV4OiBudW1iZXIsIG9wdGlvbjogS29hbGFEeW5hbWljQXV0b2NvbXBsZXRlT3B0aW9uc0ludGVyZmFjZSkge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5jb250cm9scy5jb250cm9sc1twcm9wSW5kZXhdLmdldCgnYXV0b2NvbXBsZXRlU2VsZWN0ZWRWYWx1ZScpLnZhbHVlLmZpbHRlcihpdGVtID0+IGl0ZW0gIT09IG9wdGlvbikgYXMgS29hbGFEeW5hbWljQXV0b2NvbXBsZXRlT3B0aW9uc0ludGVyZmFjZVtdO1xuICAgIHRoaXMuY29udHJvbHMuY29udHJvbHNbcHJvcEluZGV4XS5nZXQoJ2F1dG9jb21wbGV0ZVNlbGVjdGVkVmFsdWUnKS5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgaWYgKHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5jb250cm9scy5jb250cm9sc1twcm9wSW5kZXhdLmdldCgnYXV0b2NvbXBsZXRlU2VsZWN0ZWRWYWx1ZScpLnNldFZhbHVlKFtdKTtcbiAgICAgIHRoaXMuY29udHJvbHMuY29udHJvbHNbcHJvcEluZGV4XS5nZXQoJ3ZhbHVlJykuc2V0VmFsdWUobnVsbCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmZvcm1Db25maWdbcHJvcEluZGV4XS52YWx1ZUNoYW5nZXMpIHtcbiAgICAgIHRoaXMuZm9ybUNvbmZpZ1twcm9wSW5kZXhdLnZhbHVlQ2hhbmdlcyh2YWx1ZS5tYXAoaXRlbSA9PiBpdGVtLnZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldENvbG9yQ2hpcChjb25maWc6IEtvYWxhRHluYW1pY0Zvcm1BdXRvY29tcGxldGVNdWx0aXBsZUNvbmZpZ0ludGVyZmFjZSk6IFRoZW1lUGFsZXR0ZSB7XG4gICAgcmV0dXJuIGNvbmZpZy5jb2xvcjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBdXRvY29tcGxldGVPcHRpb25zKHByb3ByaWVkYWRlOiBBYnN0cmFjdENvbnRyb2wpIHtcbiAgICByZXR1cm4gcHJvcHJpZWRhZGUuZ2V0KCdhdXRvY29tcGxldGVPcHRpb25zRmlsdGVyZWQnKS52YWx1ZSBhcyBCZWhhdmlvclN1YmplY3Q8YW55W10+O1xuICB9XG5cbiAgcHVibGljIGdldER5bmFtaWNGb3JtQ29uZmlnKHByb3ByaWVkYWRlOiBBYnN0cmFjdENvbnRyb2wpIHtcbiAgICByZXR1cm4gcHJvcHJpZWRhZGUuZ2V0KCdkeW5hbWljRm9ybUNvbmZpZycpLnZhbHVlIGFzIEJlaGF2aW9yU3ViamVjdDxLb2FsYUR5bmFtaWNGb3JtQ29uZmlnSW50ZXJmYWNlPjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSYW5kb21TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHJhbmRvbVN0cmluZygyMCwge1xuICAgICAgbG93ZXJjYXNlOiB0cnVlLFxuICAgICAgbnVtYmVyczogdHJ1ZSxcbiAgICAgIHNwZWNpYWxDaGFyYWN0ZXJzOiBmYWxzZSxcbiAgICAgIHVwcGVyY2FzZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBuZXdDb250cm9sKGNvbmZpZzogS29hbGFEeW5hbWljRm9ybUZpZWxkSW50ZXJmYWNlKTogVW50eXBlZEZvcm1Hcm91cCB7XG4gICAgbGV0IHZhbGlkYXRvcnMgPSBjb25maWcuc3luY1ZhbGlkYXRvcnMgPz8gW107XG4gICAgbGV0IHZhbHVlOiBhbnkgPSBjb25maWcudmFsdWUgPz8gJyc7XG4gICAgbGV0IHZhbHVlU2VsZWN0ZWRBdXRvY29tcGxldGU6IEtvYWxhRHluYW1pY0F1dG9jb21wbGV0ZU9wdGlvbnNJbnRlcmZhY2UgfCBLb2FsYUR5bmFtaWNBdXRvY29tcGxldGVPcHRpb25zSW50ZXJmYWNlW10gPSAoXG4gICAgICBjb25maWcubXVsdGlwbGUgPyBbXSA6IChjb25maWcuYXV0b2NvbXBsZXRlRGVmYXVsdFZhbHVlT25DbGVhciA/PyBudWxsKVxuICAgICk7XG5cbiAgICBpZiAoY29uZmlnLnJlcXVpcmVkID09PSB0cnVlKSB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgaWYgKGNvbmZpZy5taW4gJiYgdHlwZW9mIGNvbmZpZy5taW4gPT09IFwibnVtYmVyXCIpIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbihjb25maWcubWluKSk7XG4gICAgaWYgKGNvbmZpZy5tYXggJiYgdHlwZW9mIGNvbmZpZy5tYXggPT09IFwibnVtYmVyXCIpIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heChjb25maWcubWF4KSk7XG4gICAgaWYgKFxuICAgICAgY29uZmlnLnR5cGUgPT09IER5bmFtaWNGb3JtVHlwZUZpZWxkRW51bS5kYXRlIHx8XG4gICAgICBjb25maWcudHlwZSA9PT0gRHluYW1pY0Zvcm1UeXBlRmllbGRFbnVtLmRhdGV0aW1lIHx8XG4gICAgICBjb25maWcudHlwZSA9PT0gRHluYW1pY0Zvcm1UeXBlRmllbGRFbnVtLnRpbWVcbiAgICApIHtcbiAgICAgIGlmIChjb25maWcubWluICYmIHR5cGVvZiBjb25maWcubWluID09PSBcInN0cmluZ1wiKSB7IHZhbGlkYXRvcnMucHVzaChEYXRlTWluVmFsaWRhdG9yKGNvbmZpZy5taW4pKTsgfVxuICAgICAgaWYgKGNvbmZpZy5tYXggJiYgdHlwZW9mIGNvbmZpZy5tYXggPT09IFwic3RyaW5nXCIpIHsgdmFsaWRhdG9ycy5wdXNoKERhdGVNYXhWYWxpZGF0b3IoY29uZmlnLm1heCkpOyB9XG4gICAgfVxuICAgIGlmIChjb25maWcubWluTGVuZ3RoKSB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5taW5MZW5ndGgoY29uZmlnLm1pbkxlbmd0aCkpO1xuICAgIGlmIChjb25maWcubWF4TGVuZ3RoKSB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXhMZW5ndGgoY29uZmlnLm1heExlbmd0aCkpO1xuXG4gICAgaWYgKGNvbmZpZy50eXBlID09PSBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW0uY3BmKSB7XG4gICAgICB2YWxpZGF0b3JzLnB1c2goQ3BmVmFsaWRhdG9yKTtcbiAgICB9IGVsc2UgaWYgKGNvbmZpZy50eXBlID09PSBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW0uY25waikge1xuICAgICAgdmFsaWRhdG9ycy5wdXNoKENucGpWYWxpZGF0b3IpO1xuICAgIH0gZWxzZSBpZiAoY29uZmlnLnR5cGUgPT09IER5bmFtaWNGb3JtVHlwZUZpZWxkRW51bS5lbWFpbCkge1xuICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMuZW1haWwpO1xuICAgIH0gZWxzZSBpZiAoY29uZmlnLnR5cGUgPT09IER5bmFtaWNGb3JtVHlwZUZpZWxkRW51bS5hdXRvY29tcGxldGUpIHtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICB2YWx1ZVNlbGVjdGVkQXV0b2NvbXBsZXRlID0gdmFsdWU7XG4gICAgICAgIHZhbHVlID0gKGNvbmZpZy5tdWx0aXBsZSA/IHZhbHVlU2VsZWN0ZWRBdXRvY29tcGxldGVbMF0gOiB2YWx1ZSk7XG4gICAgICB9XG4gICAgICBpZiAoY29uZmlnLnJlcXVpcmVkID09PSB0cnVlKSB7XG4gICAgICAgIHZhbGlkYXRvcnMucHVzaChBdXRvY29tcGxldGVTZWxlY3RlZFZhbGlkYXRvcik7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjb25maWcudHlwZSA9PT0gRHluYW1pY0Zvcm1UeXBlRmllbGRFbnVtLmNoZWNrYm94KSB7XG4gICAgICB2YWx1ZSA9IGNvbmZpZy52YWx1ZSA/PyBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBjb25maWcudHlwZSA9PT0gRHluYW1pY0Zvcm1UeXBlRmllbGRFbnVtLmhvdXJzQW5kTWludXRlcyAmJlxuICAgICAgdmFsdWUubGVuZ3RoID49IDZcbiAgICApIHtcbiAgICAgIHRoaXMuaG91cnNBbmRNaW51dGVzTWFzayA9ICcwMDA6MDAnO1xuICAgIH1cblxuICAgIGlmIChjb25maWcuZHluYW1pY0Zvcm1Db25maWcpIHtcbiAgICAgIGNvbnN0IGNsb25lRHluYW1pY0Zvcm1Db25maWcgPSB7fSBhcyBLb2FsYUR5bmFtaWNGb3JtQ29uZmlnSW50ZXJmYWNlO1xuICAgICAgT2JqZWN0LmFzc2lnbihjbG9uZUR5bmFtaWNGb3JtQ29uZmlnLCBjb25maWcuZHluYW1pY0Zvcm1Db25maWcpO1xuICAgICAgY2xvbmVEeW5hbWljRm9ybUNvbmZpZy5mb3JtID0gY29uZmlnLmR5bmFtaWNGb3JtQ29uZmlnLmZvcm07XG4gICAgICBjb25maWcuZHluYW1pY0Zvcm1Db25maWcgPSBjbG9uZUR5bmFtaWNGb3JtQ29uZmlnO1xuICAgIH1cblxuICAgIGlmIChjb25maWcuc2hvdyA9PT0gZmFsc2UpIHtcbiAgICAgIHZhbGlkYXRvcnMgPSBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgc2hvdzogW25ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oY29uZmlnLnNob3cgPz8gdHJ1ZSldLFxuICAgICAgbGFiZWw6IFtjb25maWcubGFiZWxdLFxuICAgICAgbmFtZTogW2NvbmZpZy5uYW1lXSxcbiAgICAgIHR5cGU6IFtjb25maWcudHlwZV0sXG4gICAgICBmaWxlQnV0dG9uQ29uZmlnOiBbe1xuICAgICAgICBpY29uOiBjb25maWc/LmZpbGVCdXR0b25Db25maWc/Lmljb24gPz8gJ2F0dGFjaF9maWxlJyxcbiAgICAgICAgdGV4dDogY29uZmlnPy5maWxlQnV0dG9uQ29uZmlnPy50ZXh0ID8/ICdDbGlxdWUgcGFyYSBhbmV4YXIgYXJxdWl2b3MnLFxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbmZpZz8uZmlsZUJ1dHRvbkNvbmZpZz8uYmFja2dyb3VuZENvbG9yID8/ICd3aGl0ZScsXG4gICAgICAgIGNvbG9yOiBjb25maWc/LmZpbGVCdXR0b25Db25maWc/LmNvbG9yID8/ICdibHVlJyxcbiAgICAgICAgYWNjZXB0OiBjb25maWc/LmZpbGVCdXR0b25Db25maWc/LmFjY2VwdCA/PyAnKidcbiAgICAgIH1dLFxuICAgICAgZHluYW1pY0Zvcm1Db25maWc6IFtuZXcgQmVoYXZpb3JTdWJqZWN0PEtvYWxhRHluYW1pY0Zvcm1Db25maWdJbnRlcmZhY2U+KGNvbmZpZy5keW5hbWljRm9ybUNvbmZpZyldLFxuICAgICAgZHluYW1pY0Zvcm1Hcm91cDogdGhpcy5mYi5hcnJheShbXSksXG4gICAgICBhcHBlYXJhbmNlOiBbY29uZmlnLmFwcGVhcmFuY2VdLFxuICAgICAgZmxvYXRMYWJlbDogW2NvbmZpZy5mbG9hdExhYmVsXSxcbiAgICAgIHBsYWNlaG9sZGVyOiBbY29uZmlnLnBsYWNlaG9sZGVyXSxcbiAgICAgIGNsYXNzOiBbY29uZmlnLmNsYXNzXSxcbiAgICAgIGZpZWxkQ2xhc3M6IFtjb25maWcuZmllbGRDbGFzc10sXG4gICAgICB0ZXh0SGludDogW2NvbmZpZy50ZXh0SGludF0sXG4gICAgICByZXF1aXJlZDogW2NvbmZpZy5yZXF1aXJlZCA/PyBmYWxzZV0sXG4gICAgICBtaW46IFtjb25maWcubWluID8/IDBdLFxuICAgICAgbWF4OiBbY29uZmlnLm1heCA/PyA5OTk5OTk5OTk5OV0sXG4gICAgICBtaW5MZW5ndGg6IFtjb25maWcubWluTGVuZ3RoID8/IDBdLFxuICAgICAgbWF4TGVuZ3RoOiBbY29uZmlnLm1heExlbmd0aCA/PyAyNTVdLFxuICAgICAgZGlzYWJsZWQ6IFtjb25maWcuZGlzYWJsZWQgPz8gZmFsc2VdLFxuICAgICAgZm9jdXM6IFtjb25maWcuZm9jdXMgPz8gZmFsc2VdLFxuICAgICAgbXVsdGlwbGU6IFtjb25maWcubXVsdGlwbGUgPz8gZmFsc2VdLFxuICAgICAgb3Bjb2VzU2VsZWN0OiBbY29uZmlnLm9wY29lc1NlbGVjdCA/PyBbXV0sXG4gICAgICBoaWRlUGFzc3dvcmQ6IGNvbmZpZy50eXBlID09PSBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW0ucGFzc3dvcmQgPyB0cnVlIDogbnVsbCxcbiAgICAgIG1vcmVJdGVtc0J1dHRvbkljb25BZGRsYWJlbDogW2NvbmZpZy5tb3JlSXRlbXNCdXR0b25JY29uQWRkbGFiZWxdLFxuICAgICAgbW9yZUl0ZW1zTWluSXRlbXM6IFtjb25maWcubW9yZUl0ZW1zTWluSXRlbXMgPz8gMF0sXG4gICAgICBtb3JlSXRlbXNNYXhJdGVtczogW2NvbmZpZy5tb3JlSXRlbXNNYXhJdGVtcyA/PyAxMDBdLFxuICAgICAgbW9yZUl0ZW1zSWNvbjogW2NvbmZpZy5tb3JlSXRlbXNJY29uXSxcbiAgICAgIG1vcmVJdGVtc0ljb25Gb250Q29sb3I6IFtjb25maWcubW9yZUl0ZW1zSWNvbkZvbnRDb2xvcl0sXG4gICAgICBtb3JlSXRlbXNJY29uQmFja2dyb3VuZENvbG9yOiBbY29uZmlnLm1vcmVJdGVtc0ljb25CYWNrZ3JvdW5kQ29sb3JdLFxuICAgICAgbW9yZUl0ZW1zRXhwYW5kZWQ6IFsnJ10sXG4gICAgICBtb3JlSXRlbXNDb25maWc6IFtbXV0sXG4gICAgICBtb3JlSXRlbXNGb3JtR3JvdXA6IHRoaXMuZmIuYXJyYXkoW10pLFxuICAgICAgYXV0b2NvbXBsZXRlTG9hZGluZzogW25ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpXSxcbiAgICAgIGF1dG9jb21wbGV0ZU9wdGlvbnM6IFtjb25maWcuYXV0b2NvbXBsZXRlT3B0aW9uc10sXG4gICAgICBhdXRvY29tcGxldGVNdWx0aXBsZUNvbmZpZzogW2NvbmZpZy5hdXRvY29tcGxldGVNdWx0aXBsZUNvbmZpZ10sXG4gICAgICBhdXRvY29tcGxldGVPcHRpb25zRmlsdGVyZWQ6IFtuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4oW10pXSxcbiAgICAgIGF1dG9jb21wbGV0ZVNlbGVjdGVkVmFsdWU6IFt2YWx1ZVNlbGVjdGVkQXV0b2NvbXBsZXRlXSxcbiAgICAgIGF1dG9jb21wbGV0ZUFkZE9wdGlvbjogW2NvbmZpZy5hdXRvY29tcGxldGVBZGRPcHRpb25dLFxuICAgICAgdGV4dExvZ3M6IFtjb25maWc/LnRleHRPYnNdLFxuICAgICAgY3VzdG9tTWFzYzogW2NvbmZpZz8uY3VzdG9tTWFzY10sXG4gICAgICBjdXN0b21NYXNjVGhvdXNhbmRTZXBhcmF0b3I6IFtjb25maWc/LmN1c3RvbU1hc2NUaG91c2FuZFNlcGFyYXRvciA/PyAnJ10sXG4gICAgICBjdXN0b21NYXNjU3VmZml4OiBbY29uZmlnPy5jdXN0b21NYXNjU3VmZml4ID8/ICcnXSxcbiAgICAgIGN1c3RvbU1hc2NQcmVmaXg6IFtjb25maWc/LmN1c3RvbU1hc2NQcmVmaXggPz8gJyddLFxuICAgICAgdmFsdWU6IFt7dmFsdWUsIGRpc2FibGVkOiBjb25maWcuZGlzYWJsZWR9LCB2YWxpZGF0b3JzLCBjb25maWcuYXN5bmNWYWxpZGF0b3JzXVxuICAgIH0pO1xuXG4gICAgaWYgKGNvbmZpZy5hdXRvY29tcGxldGVUeXBlID09PSBcIm9uRGVtYW5kXCIpIHtcbiAgICAgIGNvbnN0IGxvYWRlciA9IGZpZWxkLmdldCgnYXV0b2NvbXBsZXRlTG9hZGluZycpLnZhbHVlIGFzIEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcbiAgICAgIGxvYWRlci5uZXh0KHRydWUpO1xuICAgICAgY29uZmlnLmF1dG9jb21wbGV0ZUZpbHRlcignJykuc3Vic2NyaWJlKG9wdGlvbnMgPT4ge1xuICAgICAgICBmaWVsZC5nZXQoJ2F1dG9jb21wbGV0ZU9wdGlvbnNGaWx0ZXJlZCcpLnZhbHVlLm5leHQob3B0aW9ucyk7XG4gICAgICAgIGxvYWRlci5uZXh0KGZhbHNlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBmaWVsZDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VmFsdWVzT25GaWVsZHMoc3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PEtvYWxhRHluYW1pY1NldFZhbHVlSW50ZXJmYWNlW10+LCBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwKSB7XG4gICAgc3ViamVjdC5zdWJzY3JpYmUoaXRlbSA9PiB7XG4gICAgICBpZiAoaXRlbSkge1xuICAgICAgICBjb25zdCBmb3JtQXJyYXkgPSBmb3JtLmdldCgnZm9ybURhdGEnKSBhcyBVbnR5cGVkRm9ybUFycmF5O1xuICAgICAgICBmb3IgKGNvbnN0IHByb3Agb2YgaXRlbS52YWx1ZXMoKSkge1xuICAgICAgICAgIHRoaXMuc2V0VmFsdWVCeVByb3AoZm9ybUFycmF5LCBwcm9wKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGFuZ2VWaXNpYmlsaXR5RmllbGRzKHN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxLb2FsYUR5bmFtaWNGb3JtU2hvd0ZpZWxkSW50ZXJmYWNlW10+LCBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwKSB7XG4gICAgc3ViamVjdC5waXBlKGRlYm91bmNlVGltZSg1KSkuc3Vic2NyaWJlKGl0ZW0gPT4ge1xuICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgY29uc3QgZm9ybUFycmF5ID0gZm9ybS5nZXQoJ2Zvcm1EYXRhJykgYXMgVW50eXBlZEZvcm1BcnJheTtcbiAgICAgICAgZm9yIChjb25zdCBwcm9wIG9mIGl0ZW0udmFsdWVzKCkpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IFtpbmRleENvbnRyb2wsIGNvbnRyb2xdIG9mIGZvcm1BcnJheS5jb250cm9scy5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgIGlmIChjb250cm9sLmdldCgnbmFtZScpLnZhbHVlID09PSBwcm9wLm5hbWUpIHtcbiAgICAgICAgICAgICAgY29udHJvbC5nZXQoJ3Nob3cnKS52YWx1ZS5uZXh0KHByb3Auc2hvdyk7XG4gICAgICAgICAgICAgIGNvbnN0IGNvbmZpZzogS29hbGFEeW5hbWljRm9ybUZpZWxkSW50ZXJmYWNlID0gdGhpcy5mb3JtQ29uZmlnW2luZGV4Q29udHJvbF0gPz8gbnVsbDtcbiAgICAgICAgICAgICAgaWYgKHByb3Auc2hvdykge1xuICAgICAgICAgICAgICAgIGxldCB2YWxpZGF0b3JzID0gW107XG4gICAgICAgICAgICAgICAgaWYgKGNvbmZpZykge1xuICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy50eXBlID09PSBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW0uZHluYW1pY0Zvcm0pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZm9ybUFycmF5TW9yZUl0ZW1zID0gY29udHJvbC5nZXQoJ2R5bmFtaWNGb3JtR3JvdXAnKSBhcyBVbnR5cGVkRm9ybUFycmF5O1xuICAgICAgICAgICAgICAgICAgICBmb3JtQXJyYXlNb3JlSXRlbXMucHVzaChjb25maWc/LmR5bmFtaWNGb3JtQ29uZmlnPy5mb3JtKTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcnMgPSBjb25maWcuc3luY1ZhbGlkYXRvcnMgPz8gW107XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb25maWcucmVxdWlyZWQgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy50eXBlID09PSBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW0uY3BmKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKENwZlZhbGlkYXRvcik7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29uZmlnLnR5cGUgPT09IER5bmFtaWNGb3JtVHlwZUZpZWxkRW51bS5jbnBqKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKENucGpWYWxpZGF0b3IpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbmZpZy50eXBlID09PSBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW0uZW1haWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5lbWFpbCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnJlcXVpcmVkID09PSB0cnVlICYmXG4gICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnR5cGUgPT09IER5bmFtaWNGb3JtVHlwZUZpZWxkRW51bS5hdXRvY29tcGxldGVcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKEF1dG9jb21wbGV0ZVNlbGVjdGVkVmFsaWRhdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb25maWcubWluICYmIHR5cGVvZiBjb25maWcubWluID09PSBcIm51bWJlclwiKSB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5taW4oY29uZmlnLm1pbikpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnLm1heCAmJiB0eXBlb2YgY29uZmlnLm1heCA9PT0gXCJudW1iZXJcIikgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWF4KGNvbmZpZy5tYXgpKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy50eXBlID09PSBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW0uZGF0ZSB8fFxuICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy50eXBlID09PSBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW0uZGF0ZXRpbWUgfHxcbiAgICAgICAgICAgICAgICAgICAgICBjb25maWcudHlwZSA9PT0gRHluYW1pY0Zvcm1UeXBlRmllbGRFbnVtLnRpbWVcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5taW4gJiYgdHlwZW9mIGNvbmZpZy5taW4gPT09IFwic3RyaW5nXCIpIHsgdmFsaWRhdG9ycy5wdXNoKERhdGVNaW5WYWxpZGF0b3IoY29uZmlnLm1pbikpOyB9XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5tYXggJiYgdHlwZW9mIGNvbmZpZy5tYXggPT09IFwic3RyaW5nXCIpIHsgdmFsaWRhdG9ycy5wdXNoKERhdGVNYXhWYWxpZGF0b3IoY29uZmlnLm1heCkpOyB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5taW5MZW5ndGgpIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbkxlbmd0aChjb25maWcubWluTGVuZ3RoKSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb25maWcubWF4TGVuZ3RoKSB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXhMZW5ndGgoY29uZmlnLm1heExlbmd0aCkpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuZ2V0KCd2YWx1ZScpLnNldFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb25maWcuYXN5bmNWYWxpZGF0b3JzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgY29udHJvbC5nZXQoJ3ZhbHVlJykuc2V0QXN5bmNWYWxpZGF0b3JzKGNvbmZpZy5hc3luY1ZhbGlkYXRvcnMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGNvbnRyb2wuZ2V0KCd2YWx1ZScpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgICAgICAgICAgIGlmIChwcm9wLmNsZWFyQ3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuZ2V0KCd2YWx1ZScpLnNldFZhbHVlKG51bGwpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb250cm9sLmdldCgndmFsdWUnKS5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgICAgICAgICBjb250cm9sLmdldCgndmFsdWUnKS5jbGVhckFzeW5jVmFsaWRhdG9ycygpO1xuICAgICAgICAgICAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xuICAgICAgICAgICAgICAgIGNvbnRyb2wuZ2V0KCd2YWx1ZScpLnNldFZhbHVlKG51bGwpO1xuICAgICAgICAgICAgICAgIGNvbnRyb2wuZ2V0KCd2YWx1ZScpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcblxuICAgICAgICAgICAgICAgIGlmIChjb25maWcudHlwZSA9PT0gRHluYW1pY0Zvcm1UeXBlRmllbGRFbnVtLmR5bmFtaWNGb3JtKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBmb3JtR3JvdXAgPSBjb250cm9sIGFzIFVudHlwZWRGb3JtR3JvdXA7XG4gICAgICAgICAgICAgICAgICBmb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgnZHluYW1pY0Zvcm1Hcm91cCcpO1xuICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwLmFkZENvbnRyb2woJ2R5bmFtaWNGb3JtR3JvdXAnLCB0aGlzLmZiLmFycmF5KFtdKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhdXRvY29tcGxldGVGaWx0ZXIoYXJyOiBLb2FsYUR5bmFtaWNBdXRvY29tcGxldGVPcHRpb25zSW50ZXJmYWNlW10sIHZhbHVlOiBzdHJpbmcpOiBLb2FsYUR5bmFtaWNBdXRvY29tcGxldGVPcHRpb25zSW50ZXJmYWNlW10ge1xuICAgIHJldHVybiBhcnIuZmlsdGVyKGZpbHRlciA9PiB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAoZmlsdGVyKSB7XG4gICAgICAgICAgbGV0IGZpbmQgPSB0cnVlO1xuICAgICAgICAgIHZhbHVlLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgIC5zcGxpdCgnICcpXG4gICAgICAgICAgICAgICAuZm9yRWFjaChwYXJ0ID0+IHtcbiAgICAgICAgICAgICAgICAgaWYgKGZpbHRlci5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihwYXJ0KSA8IDApIHtcbiAgICAgICAgICAgICAgICAgICBmaW5kID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybiBmaW5kO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VmFsdWVCeVByb3AoZm9ybUFycmF5OiBVbnR5cGVkRm9ybUFycmF5LCBwcm9wOiBLb2FsYUR5bmFtaWNTZXRWYWx1ZUludGVyZmFjZSkge1xuICAgIGlmIChmb3JtQXJyYXkpIHtcbiAgICAgIGlmIChwcm9wLm5hbWUuaW5kZXhPZignID4gJykgPj0gMCkge1xuICAgICAgICBsZXQgZHluYW1pY0Zvcm1TdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8S29hbGFEeW5hbWljRm9ybUNvbmZpZ0ludGVyZmFjZT47XG4gICAgICAgIGNvbnN0IGFyclByb3BOYW1lID0gcHJvcC5uYW1lLnNwbGl0KCcgPiAnKTtcbiAgICAgICAgbGV0IGluZGV4UHJvcE5hbWUgPSAwO1xuICAgICAgICBkbyB7XG4gICAgICAgICAgY29uc3QgY29udHJvbCA9IGZvcm1BcnJheS5jb250cm9scy5maW5kKGNvbnRyb2wgPT4gY29udHJvbC5nZXQoJ25hbWUnKS52YWx1ZSA9PT0gYXJyUHJvcE5hbWVbaW5kZXhQcm9wTmFtZV0pO1xuICAgICAgICAgIGlmIChpbmRleFByb3BOYW1lID09PSBhcnJQcm9wTmFtZS5sZW5ndGggLSAyKSB7XG4gICAgICAgICAgICBkeW5hbWljRm9ybVN1YmplY3QgPSBjb250cm9sLmdldCgnZHluYW1pY0Zvcm1Db25maWcnKS52YWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IGR5bmFtaWNGb3JtID0gZHluYW1pY0Zvcm1TdWJqZWN0LmdldFZhbHVlKCk7XG4gICAgICAgICAgICBpZiAoZHluYW1pY0Zvcm0uZm9ybUNvbmZpZy5maW5kKGZjID0+IGZjLm5hbWUgPT09IGFyclByb3BOYW1lW2FyclByb3BOYW1lLmxlbmd0aCAtIDFdKSkge1xuICAgICAgICAgICAgICBpZiAoZHluYW1pY0Zvcm0uc2V0VmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgZHluYW1pY0Zvcm0uc2V0VmFsdWVzLm5leHQoa29hbGEoZHluYW1pY0Zvcm0uc2V0VmFsdWVzLmdldFZhbHVlKCkpLmFycmF5PGFueT4oKS5tZXJnZShbe1xuICAgICAgICAgICAgICAgICAgbmFtZTogYXJyUHJvcE5hbWVbYXJyUHJvcE5hbWUubGVuZ3RoIC0gMV0sXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogcHJvcC52YWx1ZVxuICAgICAgICAgICAgICAgIH1dKS5nZXRWYWx1ZSgpKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkeW5hbWljRm9ybS5zZXRWYWx1ZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEtvYWxhRHluYW1pY1NldFZhbHVlSW50ZXJmYWNlW10+KFt7XG4gICAgICAgICAgICAgICAgICBuYW1lOiBhcnJQcm9wTmFtZVthcnJQcm9wTmFtZS5sZW5ndGggLSAxXSxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBwcm9wLnZhbHVlXG4gICAgICAgICAgICAgICAgfV0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGluZGV4UHJvcE5hbWUrKztcbiAgICAgICAgfSB3aGlsZSAoaW5kZXhQcm9wTmFtZSA8IGFyclByb3BOYW1lLmxlbmd0aCAtIDEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yIChjb25zdCBjb250cm9sIG9mIGZvcm1BcnJheS5jb250cm9scy52YWx1ZXMoKSkge1xuICAgICAgICAgIGlmIChjb250cm9sLmdldCgnbmFtZScpLnZhbHVlID09PSBwcm9wLm5hbWUpIHtcbiAgICAgICAgICAgIGNvbnRyb2wuZ2V0KCd2YWx1ZScpLnNldFZhbHVlKHByb3AudmFsdWUpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZXRDb25maWdEeW5hbWljRm9ybShuZXdGb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXApIHtcbiAgICBpZiAodGhpcy5zaG93RmllbGRzTW9yZUl0ZW5zQ29uZmlnKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IG5ld0Zvcm1Hcm91cC5nZXQoJ3ZhbHVlJykudmFsdWU7XG4gICAgICBjb25zdCBjb25maWdzID0gdGhpcy5zaG93RmllbGRzTW9yZUl0ZW5zQ29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoY29uZmlnID0+IGNvbmZpZy5uYW1lRmllbGQgPT09IG5ld0Zvcm1Hcm91cC5nZXQoJ25hbWUnKS52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLnNvcnQoY29uZmlnID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnLmZuU2hvdyh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgZm9yIChjb25zdCBjb25maWcgb2YgY29uZmlncykge1xuICAgICAgICBpZiAoY29uZmlnKSB7XG4gICAgICAgICAgaWYgKGNvbmZpZy5keW5hbWljRm9ybUNvbmZpZyAmJiBjb25maWcuZm5TaG93KHZhbHVlKSkge1xuICAgICAgICAgICAgY29uc3QgY29udHJvbER5bmFtaWNGb3JtQ29uZmlnID0gdGhpcy5jb250cm9sc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jb250cm9sc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKGNvbnRyb2wgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5maWVsZHNUb1Nob3cuaW5kZXhPZihjb250cm9sLmdldCgnbmFtZScpLnZhbHVlKSA+PSAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGR5bmFtaWNGb3JtQ29uZmlnU3ViamVjdCA9IGNvbnRyb2xEeW5hbWljRm9ybUNvbmZpZy5nZXQoJ2R5bmFtaWNGb3JtQ29uZmlnJykudmFsdWUgYXMgQmVoYXZpb3JTdWJqZWN0PEtvYWxhRHluYW1pY0Zvcm1Db25maWdJbnRlcmZhY2U+O1xuICAgICAgICAgICAgZHluYW1pY0Zvcm1Db25maWdTdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgICAgICAgICBhd2FpdCBkZWxheSgxKTtcbiAgICAgICAgICAgIGR5bmFtaWNGb3JtQ29uZmlnU3ViamVjdC5uZXh0KGNvbmZpZy5keW5hbWljRm9ybUNvbmZpZyh2YWx1ZSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmR5bmFtaWNGb3JtU2VydmljZS5zaG93RmllbGRzKFxuICAgICAgICAgICAgdGhpcy5zaG93RmllbGRzLFxuICAgICAgICAgICAgY29uZmlnLmZpZWxkc1RvU2hvdyxcbiAgICAgICAgICAgIGNvbmZpZy5mblNob3codmFsdWUpLFxuICAgICAgICAgICAgY29uZmlnLmNsZWFyQ3VycmVudFZhbHVlXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVBdXRvY29tcGxldGVTZWxlY3Qoc2VsZWN0ZWRWYWx1ZXM6IEtvYWxhRHluYW1pY0F1dG9jb21wbGV0ZU9wdGlvbnNJbnRlcmZhY2VbXSwgdmFsdWU6IEtvYWxhRHluYW1pY0F1dG9jb21wbGV0ZU9wdGlvbnNJbnRlcmZhY2UpIHtcbiAgICBsZXQgaXNWYWxpZCA9IHRydWU7XG5cbiAgICBmb3IgKGNvbnN0IHNlbGVjdGVkSXRlbSBvZiBzZWxlY3RlZFZhbHVlcy52YWx1ZXMoKSkge1xuICAgICAgaWYgKHNlbGVjdGVkSXRlbS5uYW1lID09PSB2YWx1ZS5uYW1lKSB7XG4gICAgICAgIGlzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzVmFsaWQ7XG4gIH1cbn1cbiIsIjxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJwLXJlbGF0aXZlIHctMTAwXCIgW2lkXT1cImZvcm1JZFwiPlxuICA8ZGl2ICpuZ0Zvcj1cImxldCBwcm9wcmllZGFkZSBvZiBjb250cm9scz8uY29udHJvbHM7IGxldCBpID0gaW5kZXg7XCJcbiAgICAgICBbbmdDbGFzc109XCIocHJvcHJpZWRhZGUuZ2V0KCdzaG93JykudmFsdWUgfCBhc3luYykgPyBwcm9wcmllZGFkZS5nZXQoJ2NsYXNzJykudmFsdWUgOiAnZC1ub25lJ1wiXG4gICAgICAgZm9ybUFycmF5TmFtZT1cImZvcm1EYXRhXCI+XG5cdCAgPGRpdiAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgnc2hvdycpLnZhbHVlIHwgYXN5bmNcIj5cblx0ICAgIDxtYXQtZm9ybS1maWVsZFxuXHRcdCAgICAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC50ZXh0IHx8XG5cdCAgICAgICAgICAgICBwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQucGFzc3dvcmQgfHxcblx0ICAgICAgICAgICAgIHByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5jcGYgfHxcblx0ICAgICAgICAgICAgIHByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5jbnBqIHx8XG5cdCAgICAgICAgICAgICBwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQuZGF0ZXRpbWUgfHxcblx0ICAgICAgICAgICAgIHByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5lbWFpbCB8fFxuXHQgICAgICAgICAgICAgcHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLm51bWJlciB8fFxuXHQgICAgICAgICAgICAgcHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLnN0cmluZ051bWJlciB8fFxuXHQgICAgICAgICAgICAgcHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLnRpbWUgfHxcblx0ICAgICAgICAgICAgIHByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5kYXRlIHx8XG5cdCAgICAgICAgICAgICBwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQuaG91cnNBbmRNaW51dGVzIHx8XG5cdCAgICAgICAgICAgICBwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQucGhvbmUgfHxcblx0ICAgICAgICAgICAgIHByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5wZXJjZW50IHx8XG5cdCAgICAgICAgICAgICBwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQuY29sb3IgfHxcblx0ICAgICAgICAgICAgIHByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5tb250aCB8fFxuXHQgICAgICAgICAgICAgcHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLmNvbXBldGVuY2VEYXRlIHx8XG4gICAgICAgICAgICAgICBwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQuc3RyaW5nV2l0aEN1c3RvbU1hc2NcIlxuXHRcdCAgICBbYXBwZWFyYW5jZV09XCJwcm9wcmllZGFkZS5nZXQoJ2FwcGVhcmFuY2UnKS52YWx1ZVwiXG5cdFx0ICAgIFtmbG9hdExhYmVsXT1cInByb3ByaWVkYWRlLmdldCgnZmxvYXRMYWJlbCcpLnZhbHVlXCJcblx0XHQgICAgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiXG5cdFx0ICAgIFtuZ0NsYXNzXT1cInByb3ByaWVkYWRlLmdldCgnZmllbGRDbGFzcycpLnZhbHVlXCI+XG5cdCAgICAgIDxtYXQtbGFiZWw+e3twcm9wcmllZGFkZS5nZXQoJ2xhYmVsJykudmFsdWV9fTwvbWF0LWxhYmVsPlxuXHQgICAgICA8aW5wdXRcblx0XHQgICAgICBbZHJvcFNwZWNpYWxDaGFyYWN0ZXJzXT1cImZhbHNlXCJcblx0XHQgICAgICBba29hbGFBdXRvRm9jdXNdPVwicHJvcHJpZWRhZGUuZ2V0KCdmb2N1cycpLnZhbHVlXCJcblx0XHQgICAgICAoa2V5dXApPVwiaG91cnNBbmRNaW51dGVzQXBwbHlNYXNrKGksICRldmVudClcIlxuXHRcdCAgICAgIFtyZXF1aXJlZF09XCJwcm9wcmllZGFkZS5nZXQoJ3JlcXVpcmVkJykudmFsdWVcIlxuXHRcdCAgICAgIFt0YWJJbmRleF09XCJ0YWJJbmRleFN0YXJ0ICsgaVwiXG5cdFx0ICAgICAgW21hc2tdPVwiKChwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQuY29tcGV0ZW5jZURhdGUpID8gJzAwLzAwMDAnIDogbnVsbCkgfHxcblx0XHQgICAgICAgICAgICAgICgocHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLnBob25lKSA/ICcoMDApMDAwMC0wMDAwPzAnIDogbnVsbCkgfHxcblx0XHQgICAgICAgICAgICAgICgocHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLnN0cmluZ051bWJlcikgPyAnMHsnK3Byb3ByaWVkYWRlLmdldCgnbWF4TGVuZ3RoJykudmFsdWUrJ30nIDogbnVsbCkgfHxcbiAgICAgICAgICAgICAgICAgICgocHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLmNwZikgPyAnMDAwLjAwMC4wMDAtMDAnIDogbnVsbCkgfHxcbiAgICAgICAgICAgICAgICAgICgocHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLmNucGopID8gJzAwLjAwMC4wMDAvMDAwMC0wMCcgOiBudWxsKSB8fFxuICAgICAgICAgICAgICAgICAgKChwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQucGVyY2VudCkgPyAncGVyY2VudCcgOiBudWxsKSB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0KChwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQuaG91cnNBbmRNaW51dGVzKSA/IGhvdXJzQW5kTWludXRlc01hc2sgOiBudWxsKSB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0KChwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQuc3RyaW5nV2l0aEN1c3RvbU1hc2MpID8gcHJvcHJpZWRhZGUuZ2V0KCdjdXN0b21NYXNjJykudmFsdWUgOiBudWxsKVwiXG5cdFx0ICAgICAgW3ZhbGlkYXRpb25dPVwiXG5cdCAgICAgICAgICAgICAgICAgICAgKHByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5jcGYgJiYgcHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8uY3BmSW52YWxpZCkgfHxcblx0ICAgICAgICAgICAgICAgICAgICAocHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLmNucGogJiYgcHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8uY25wakludmFsaWQpXCJcblx0XHQgICAgICBbdHlwZV09XCIoKHByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5jcGYgfHxcbiAgICAgICAgICAgICAgICAgICAgcHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLmNucGogfHxcbiAgICAgICAgICAgICAgICAgICAgcHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLnBob25lIHx8XG4gICAgICAgICAgICAgICAgICAgIHByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5wZXJjZW50XG4gICAgICAgICAgICAgICAgICApKSA/ICd0ZWwnIDogKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQubW9udGggP1xuICAgICAgICAgICAgICAgICAgICAnbW9udGgnIDogKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQuZGF0ZSA/XG4gICAgICAgICAgICAgICAgICAgICdkYXRlJyA6IChcbiAgICAgICAgICAgICAgICAgICAgcHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLmRhdGV0aW1lID9cbiAgICAgICAgICAgICAgICAgICAgJ2RhdGV0aW1lLWxvY2FsJyA6IChcbiAgICAgICAgICAgICAgICAgICAgcHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLmVtYWlsID9cbiAgICAgICAgICAgICAgICAgICAgJ2VtYWlsJyA6IChcbiAgICAgICAgICAgICAgICAgICAgcHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLm51bWJlciA/XG4gICAgICAgICAgICAgICAgICAgICdudW1iZXInIDogKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQudGltZSA/XG4gICAgICAgICAgICAgICAgICAgICd0aW1lJyA6IChcbiAgICAgICAgICAgICAgICAgICAgcHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLnBhc3N3b3JkID9cbiAgICAgICAgICAgICAgICAgICAgJ3Bhc3N3b3JkJyA6IChcbiAgICAgICAgICAgICAgICAgICAgcHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLmNvbG9yID9cbiAgICAgICAgICAgICAgICAgICAgJ2NvbG9yJyA6ICd0ZXh0JykpKSkpKSkpXCJcbiAgICAgICAgICBbbWluXT1cInByb3ByaWVkYWRlLmdldCgnbWluJykudmFsdWVcIlxuICAgICAgICAgIFttYXhdPVwicHJvcHJpZWRhZGUuZ2V0KCdtYXgnKS52YWx1ZVwiXG4gICAgICAgICAgW21pbkxlbmd0aF09XCJwcm9wcmllZGFkZS5nZXQoJ21pbkxlbmd0aCcpLnZhbHVlXCJcbiAgICAgICAgICBbbWF4TGVuZ3RoXT1cInByb3ByaWVkYWRlLmdldCgnbWF4TGVuZ3RoJykudmFsdWVcIlxuICAgICAgICAgIFt0aG91c2FuZFNlcGFyYXRvcl09XCJwcm9wcmllZGFkZS5nZXQoJ2N1c3RvbU1hc2NUaG91c2FuZFNlcGFyYXRvcicpLnZhbHVlXCJcbiAgICAgICAgICBbc3VmZml4XT1cInByb3ByaWVkYWRlLmdldCgnY3VzdG9tTWFzY1N1ZmZpeCcpLnZhbHVlXCJcbiAgICAgICAgICBbcHJlZml4XT1cInByb3ByaWVkYWRlLmdldCgnY3VzdG9tTWFzY1ByZWZpeCcpLnZhbHVlXCJcbiAgICAgICAgICBzZXBhcmF0b3JMaW1pdD1cIjBcIlxuICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiZ2V0UmFuZG9tU3RyaW5nKClcIlxuXHRcdCAgICAgIGZvcm1Db250cm9sTmFtZT1cInZhbHVlXCJcblx0XHQgICAgICBtYXRJbnB1dC8+XG5cdCAgICAgIDxidXR0b25cblx0XHQgICAgICAoY2xpY2spPVwicGFzc3dvcmRWaWV3KGkpXCJcblx0XHQgICAgICAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgnaGlkZVBhc3N3b3JkJykudmFsdWUgIT09IG51bGxcIlxuXHRcdCAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hpZGUgcGFzc3dvcmQnXCJcblx0XHQgICAgICBbYXR0ci5hcmlhLXByZXNzZWRdPVwicHJvcHJpZWRhZGUuZ2V0KCdoaWRlUGFzc3dvcmQnKS52YWx1ZVwiXG5cdFx0ICAgICAgbWF0LWljb24tYnV0dG9uIG1hdFN1ZmZpeCB0YWJpbmRleD1cIi0xXCIgdHlwZT1cImJ1dHRvblwiPlxuXHQgICAgICAgIDxtYXQtaWNvbj57e3Byb3ByaWVkYWRlLmdldCgnaGlkZVBhc3N3b3JkJykudmFsdWUgPyAndmlzaWJpbGl0eV9vZmYnIDogJ3Zpc2liaWxpdHknfX08L21hdC1pY29uPlxuXHQgICAgICA8L2J1dHRvbj5cblx0ICAgICAgPG1hdC1oaW50ICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd0ZXh0SGludCcpLnZhbHVlXCI+XG5cdCAgICAgICAgPG1hdC1pY29uPmluZm88L21hdC1pY29uPlxuXHRcdCAgICAgIHt7cHJvcHJpZWRhZGUuZ2V0KCd0ZXh0SGludCcpLnZhbHVlfX1cblx0ICAgICAgPC9tYXQtaGludD5cblx0ICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/LnJlcXVpcmVkXCI+XG5cdCAgICAgICAgPG1hdC1pY29uPmVycm9yPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e2Vycm9yTWVzc2FnZS5nZXRSZXF1aXJlZE1lc3NhZ2UocHJvcHJpZWRhZGUuZ2V0KCdsYWJlbCcpLnZhbHVlKX19XG5cdCAgICAgIDwvbWF0LWVycm9yPlxuXHQgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8uY3BmSW52YWxpZFwiPlxuXHQgICAgICAgIDxtYXQtaWNvbj5lcnJvcjwvbWF0LWljb24+XG4gICAgICAgICAge3tlcnJvck1lc3NhZ2UuZ2V0SW52YWxpZE1lc3NhZ2UocHJvcHJpZWRhZGUuZ2V0KCdsYWJlbCcpLnZhbHVlKX19XG5cdCAgICAgIDwvbWF0LWVycm9yPlxuXHQgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8uY25wakludmFsaWRcIj5cblx0ICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlLmdldEludmFsaWRNZXNzYWdlKHByb3ByaWVkYWRlLmdldCgnbGFiZWwnKS52YWx1ZSl9fVxuXHQgICAgICA8L21hdC1lcnJvcj5cblx0ICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/LmVtYWlsXCI+XG5cdCAgICAgICAgPG1hdC1pY29uPmVycm9yPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e2Vycm9yTWVzc2FnZS5nZXRJbnZhbGlkTWVzc2FnZShwcm9wcmllZGFkZS5nZXQoJ2xhYmVsJykudmFsdWUpfX1cblx0ICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5taW5cIj5cbiAgICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlLmdldE1pbk1lc3NhZ2UocHJvcHJpZWRhZGUuZ2V0KCdtaW4nKS52YWx1ZSl9fVxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/Lm1heFwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5lcnJvcjwvbWF0LWljb24+XG4gICAgICAgICAge3tlcnJvck1lc3NhZ2UuZ2V0TWF4TWVzc2FnZShwcm9wcmllZGFkZS5nZXQoJ21heCcpLnZhbHVlKX19XG4gICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8ubWluTGVuZ3RoXCI+XG4gICAgICAgICAgPG1hdC1pY29uPmVycm9yPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e2Vycm9yTWVzc2FnZS5nZXRNaW5MZW5ndGhNZXNzYWdlKHByb3ByaWVkYWRlLmdldCgnbWluTGVuZ3RoJykudmFsdWUpfX1cbiAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5tYXhMZW5ndGhcIj5cbiAgICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlLmdldE1heExlbmd0aE1lc3NhZ2UocHJvcHJpZWRhZGUuZ2V0KCdtYXhMZW5ndGgnKS52YWx1ZSl9fVxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/LmRhdGVNaW5cIj5cbiAgICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlLmdldERhdGVNaW5NZXNzYWdlKCl9fVxuICAgICAgICAgIHt7cHJvcHJpZWRhZGUuZ2V0KCdtaW4nKS52YWx1ZSB8IGRhdGU6XCJzaG9ydERhdGVcIn19LlxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/LmRhdGVNYXhcIj5cbiAgICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlLmdldERhdGVNYXhNZXNzYWdlKCl9fVxuICAgICAgICAgIHt7cHJvcHJpZWRhZGUuZ2V0KCdtYXgnKS52YWx1ZSB8IGRhdGU6XCJzaG9ydERhdGVcIn19LlxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/LmN1c3RvbUVycm9yXCI+XG4gICAgICAgICAgPG1hdC1pY29uPmVycm9yPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e3Byb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/LmN1c3RvbUVycm9yLm1lc3NhZ2V9fS5cbiAgICAgICAgPC9tYXQtZXJyb3I+XG5cdCAgICA8L21hdC1mb3JtLWZpZWxkPlxuXHQgICAgPG1hdC1mb3JtLWZpZWxkXG5cdFx0ICAgICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLmNvaW5cIlxuXHRcdCAgICBbYXBwZWFyYW5jZV09XCJwcm9wcmllZGFkZS5nZXQoJ2FwcGVhcmFuY2UnKS52YWx1ZVwiXG5cdFx0ICAgIFtmbG9hdExhYmVsXT1cInByb3ByaWVkYWRlLmdldCgnZmxvYXRMYWJlbCcpLnZhbHVlXCJcblx0XHQgICAgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiXG5cdFx0ICAgIFtuZ0NsYXNzXT1cInByb3ByaWVkYWRlLmdldCgnZmllbGRDbGFzcycpLnZhbHVlXCI+XG5cdCAgICAgIDxtYXQtbGFiZWw+e3twcm9wcmllZGFkZS5nZXQoJ2xhYmVsJykudmFsdWV9fTwvbWF0LWxhYmVsPlxuXHQgICAgICA8aW5wdXRcblx0XHQgICAgICBba29hbGFBdXRvRm9jdXNdPVwicHJvcHJpZWRhZGUuZ2V0KCdmb2N1cycpLnZhbHVlXCJcblx0XHQgICAgICBbcmVxdWlyZWRdPVwicHJvcHJpZWRhZGUuZ2V0KCdyZXF1aXJlZCcpLnZhbHVlXCJcbiAgICAgICAgICBbdGFiSW5kZXhdPVwidGFiSW5kZXhTdGFydCArIGlcIlxuICAgICAgICAgIFttaW5dPVwicHJvcHJpZWRhZGUuZ2V0KCdtaW4nKS52YWx1ZVwiXG4gICAgICAgICAgW21heF09XCJwcm9wcmllZGFkZS5nZXQoJ21heCcpLnZhbHVlXCJcbiAgICAgICAgICBbbWluTGVuZ3RoXT1cInByb3ByaWVkYWRlLmdldCgnbWluTGVuZ3RoJykudmFsdWVcIlxuICAgICAgICAgIFttYXhMZW5ndGhdPVwicHJvcHJpZWRhZGUuZ2V0KCdtYXhMZW5ndGgnKS52YWx1ZVwiXG4gICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJnZXRSYW5kb21TdHJpbmcoKVwiXG5cdFx0ICAgICAgY3VycmVuY3lNYXNrXG5cdFx0ICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidmFsdWVcIlxuXHRcdCAgICAgIG1hdElucHV0XG5cdFx0ICAgICAgdHlwZT1cInRlbFwiLz5cblx0ICAgICAgPG1hdC1oaW50ICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd0ZXh0SGludCcpLnZhbHVlXCI+XG5cdCAgICAgICAgPG1hdC1pY29uPmluZm88L21hdC1pY29uPlxuXHRcdCAgICAgIHt7cHJvcHJpZWRhZGUuZ2V0KCd0ZXh0SGludCcpLnZhbHVlfX1cblx0ICAgICAgPC9tYXQtaGludD5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/Lm1pblwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5lcnJvcjwvbWF0LWljb24+XG4gICAgICAgICAge3tlcnJvck1lc3NhZ2UuZ2V0TWluTWVzc2FnZShwcm9wcmllZGFkZS5nZXQoJ21pbicpLnZhbHVlKX19XG4gICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8ubWF4XCI+XG4gICAgICAgICAgPG1hdC1pY29uPmVycm9yPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e2Vycm9yTWVzc2FnZS5nZXRNYXhNZXNzYWdlKHByb3ByaWVkYWRlLmdldCgnbWF4JykudmFsdWUpfX1cbiAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5taW5MZW5ndGhcIj5cbiAgICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlLmdldE1pbkxlbmd0aE1lc3NhZ2UocHJvcHJpZWRhZGUuZ2V0KCdtaW5MZW5ndGgnKS52YWx1ZSl9fVxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/Lm1heExlbmd0aFwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5lcnJvcjwvbWF0LWljb24+XG4gICAgICAgICAge3tlcnJvck1lc3NhZ2UuZ2V0TWF4TGVuZ3RoTWVzc2FnZShwcm9wcmllZGFkZS5nZXQoJ21heExlbmd0aCcpLnZhbHVlKX19XG4gICAgICAgIDwvbWF0LWVycm9yPlxuXHQgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8ucmVxdWlyZWRcIj5cblx0ICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlLmdldFJlcXVpcmVkTWVzc2FnZShwcm9wcmllZGFkZS5nZXQoJ2xhYmVsJykudmFsdWUpfX1cblx0ICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5jdXN0b21FcnJvclwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5lcnJvcjwvbWF0LWljb24+XG4gICAgICAgICAge3twcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5jdXN0b21FcnJvci5tZXNzYWdlfX0uXG4gICAgICAgIDwvbWF0LWVycm9yPlxuXHQgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDxtYXQtZm9ybS1maWVsZFxuICAgICAgICAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5mbG9hdFwiXG4gICAgICAgIFthcHBlYXJhbmNlXT1cInByb3ByaWVkYWRlLmdldCgnYXBwZWFyYW5jZScpLnZhbHVlXCJcbiAgICAgICAgW2Zsb2F0TGFiZWxdPVwicHJvcHJpZWRhZGUuZ2V0KCdmbG9hdExhYmVsJykudmFsdWVcIlxuICAgICAgICBbZm9ybUdyb3VwTmFtZV09XCJpXCJcbiAgICAgICAgW25nQ2xhc3NdPVwicHJvcHJpZWRhZGUuZ2V0KCdmaWVsZENsYXNzJykudmFsdWVcIj5cbiAgICAgICAgPG1hdC1sYWJlbD57e3Byb3ByaWVkYWRlLmdldCgnbGFiZWwnKS52YWx1ZX19PC9tYXQtbGFiZWw+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIFtrb2FsYUF1dG9Gb2N1c109XCJwcm9wcmllZGFkZS5nZXQoJ2ZvY3VzJykudmFsdWVcIlxuICAgICAgICAgIFtyZXF1aXJlZF09XCJwcm9wcmllZGFkZS5nZXQoJ3JlcXVpcmVkJykudmFsdWVcIlxuICAgICAgICAgIFt0YWJJbmRleF09XCJ0YWJJbmRleFN0YXJ0ICsgaVwiXG4gICAgICAgICAgW21pbl09XCJwcm9wcmllZGFkZS5nZXQoJ21pbicpLnZhbHVlXCJcbiAgICAgICAgICBbbWF4XT1cInByb3ByaWVkYWRlLmdldCgnbWF4JykudmFsdWVcIlxuICAgICAgICAgIFttaW5MZW5ndGhdPVwicHJvcHJpZWRhZGUuZ2V0KCdtaW5MZW5ndGgnKS52YWx1ZVwiXG4gICAgICAgICAgW21heExlbmd0aF09XCJwcm9wcmllZGFkZS5nZXQoJ21heExlbmd0aCcpLnZhbHVlXCJcbiAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cImdldFJhbmRvbVN0cmluZygpXCJcbiAgICAgICAgICBjdXJyZW5jeU1hc2tcbiAgICAgICAgICBbb3B0aW9uc109XCJ7cHJlZml4OiAnJ31cIlxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInZhbHVlXCJcbiAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgIHR5cGU9XCJ0ZWxcIi8+XG4gICAgICAgIDxtYXQtaGludCAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndGV4dEhpbnQnKS52YWx1ZVwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5pbmZvPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e3Byb3ByaWVkYWRlLmdldCgndGV4dEhpbnQnKS52YWx1ZX19XG4gICAgICAgIDwvbWF0LWhpbnQ+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5taW5cIj5cbiAgICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlLmdldE1pbk1lc3NhZ2UocHJvcHJpZWRhZGUuZ2V0KCdtaW4nKS52YWx1ZSl9fVxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/Lm1heFwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5lcnJvcjwvbWF0LWljb24+XG4gICAgICAgICAge3tlcnJvck1lc3NhZ2UuZ2V0TWF4TWVzc2FnZShwcm9wcmllZGFkZS5nZXQoJ21heCcpLnZhbHVlKX19XG4gICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8ubWluTGVuZ3RoXCI+XG4gICAgICAgICAgPG1hdC1pY29uPmVycm9yPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e2Vycm9yTWVzc2FnZS5nZXRNaW5MZW5ndGhNZXNzYWdlKHByb3ByaWVkYWRlLmdldCgnbWluTGVuZ3RoJykudmFsdWUpfX1cbiAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5tYXhMZW5ndGhcIj5cbiAgICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlLmdldE1heExlbmd0aE1lc3NhZ2UocHJvcHJpZWRhZGUuZ2V0KCdtYXhMZW5ndGgnKS52YWx1ZSl9fVxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/LnJlcXVpcmVkXCI+XG4gICAgICAgICAgPG1hdC1pY29uPmVycm9yPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e2Vycm9yTWVzc2FnZS5nZXRSZXF1aXJlZE1lc3NhZ2UocHJvcHJpZWRhZGUuZ2V0KCdsYWJlbCcpLnZhbHVlKX19XG4gICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8uY3VzdG9tRXJyb3JcIj5cbiAgICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7cHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8uY3VzdG9tRXJyb3IubWVzc2FnZX19LlxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cdCAgICA8bWF0LWZvcm0tZmllbGRcblx0XHQgICAgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQudmFsdWVMaXN0IHx8XG5cdCAgICAgICAgICAgICBwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQudGV4dGFyZWFcIlxuXHRcdCAgICBbYXBwZWFyYW5jZV09XCJwcm9wcmllZGFkZS5nZXQoJ2FwcGVhcmFuY2UnKS52YWx1ZVwiXG5cdFx0ICAgIFtmbG9hdExhYmVsXT1cInByb3ByaWVkYWRlLmdldCgnZmxvYXRMYWJlbCcpLnZhbHVlXCJcblx0XHQgICAgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiXG5cdFx0ICAgIFtuZ0NsYXNzXT1cInByb3ByaWVkYWRlLmdldCgnZmllbGRDbGFzcycpLnZhbHVlXCI+XG5cdCAgICAgIDxtYXQtbGFiZWw+e3twcm9wcmllZGFkZS5nZXQoJ2xhYmVsJykudmFsdWV9fTwvbWF0LWxhYmVsPlxuXHQgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAjdGV4dGFyZWFcblx0XHQgICAgICBba29hbGFBdXRvRm9jdXNdPVwicHJvcHJpZWRhZGUuZ2V0KCdmb2N1cycpLnZhbHVlXCJcbiAgICAgICAgICBjZGtUZXh0YXJlYUF1dG9zaXplXG4gICAgICAgICAgI2F1dG9zaXplPVwiY2RrVGV4dGFyZWFBdXRvc2l6ZVwiXG5cdFx0ICAgICAgW2Nka0F1dG9zaXplTWF4Um93c109XCI4XCJcblx0XHQgICAgICBbY2RrQXV0b3NpemVNaW5Sb3dzXT1cIjNcIlxuXHRcdCAgICAgIFtyZXF1aXJlZF09XCJwcm9wcmllZGFkZS5nZXQoJ3JlcXVpcmVkJykudmFsdWVcIlxuICAgICAgICAgIFt0YWJJbmRleF09XCJ0YWJJbmRleFN0YXJ0ICsgaVwiXG4gICAgICAgICAgW21pbkxlbmd0aF09XCJwcm9wcmllZGFkZS5nZXQoJ21pbkxlbmd0aCcpLnZhbHVlXCJcbiAgICAgICAgICBbbWF4TGVuZ3RoXT1cInByb3ByaWVkYWRlLmdldCgnbWF4TGVuZ3RoJykudmFsdWVcIlxuXHRcdCAgICAgIGZvcm1Db250cm9sTmFtZT1cInZhbHVlXCJcblx0XHQgICAgICBtYXRJbnB1dD5cbiAgICAgICAgPC90ZXh0YXJlYT5cblx0ICAgICAgPG1hdC1oaW50ICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd0ZXh0SGludCcpLnZhbHVlXCI+XG5cdCAgICAgICAgPG1hdC1pY29uPmluZm88L21hdC1pY29uPlxuXHRcdCAgICAgIHt7cHJvcHJpZWRhZGUuZ2V0KCd0ZXh0SGludCcpLnZhbHVlfX1cblx0ICAgICAgPC9tYXQtaGludD5cbiAgICAgICAgPG1hdC1oaW50IGFsaWduPVwiZW5kXCIgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ21heExlbmd0aCcpLnZhbHVlXCI+XG4gICAgICAgICAge3t0ZXh0YXJlYS52YWx1ZS5sZW5ndGh9fS97e3Byb3ByaWVkYWRlLmdldCgnbWF4TGVuZ3RoJykudmFsdWV9fVxuICAgICAgICA8L21hdC1oaW50PlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8ubWluTGVuZ3RoXCI+XG4gICAgICAgICAgPG1hdC1pY29uPmVycm9yPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e2Vycm9yTWVzc2FnZS5nZXRNaW5MZW5ndGhNZXNzYWdlKHByb3ByaWVkYWRlLmdldCgnbWluTGVuZ3RoJykudmFsdWUpfX1cbiAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5tYXhMZW5ndGhcIj5cbiAgICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlLmdldE1heExlbmd0aE1lc3NhZ2UocHJvcHJpZWRhZGUuZ2V0KCdtYXhMZW5ndGgnKS52YWx1ZSl9fVxuICAgICAgICA8L21hdC1lcnJvcj5cblx0ICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/LnJlcXVpcmVkXCI+XG5cdCAgICAgICAgPG1hdC1pY29uPmVycm9yPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e2Vycm9yTWVzc2FnZS5nZXRSZXF1aXJlZE1lc3NhZ2UocHJvcHJpZWRhZGUuZ2V0KCdsYWJlbCcpLnZhbHVlKX19XG5cdCAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8uY3VzdG9tRXJyb3JcIj5cbiAgICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7cHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8uY3VzdG9tRXJyb3IubWVzc2FnZX19LlxuICAgICAgICA8L21hdC1lcnJvcj5cblx0ICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cdFx0ICA8bWF0LWZvcm0tZmllbGRcblx0XHRcdCAgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQudGV4dExvZ3NcIlxuXHRcdFx0ICBbYXBwZWFyYW5jZV09XCJwcm9wcmllZGFkZS5nZXQoJ2FwcGVhcmFuY2UnKS52YWx1ZVwiXG5cdFx0XHQgIFtmbG9hdExhYmVsXT1cInByb3ByaWVkYWRlLmdldCgnZmxvYXRMYWJlbCcpLnZhbHVlXCJcblx0XHRcdCAgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiXG5cdFx0XHQgIFtuZ0NsYXNzXT1cInByb3ByaWVkYWRlLmdldCgnZmllbGRDbGFzcycpLnZhbHVlXCI+XG5cdCAgICAgIDxtYXQtbGFiZWw+e3twcm9wcmllZGFkZS5nZXQoJ2xhYmVsJykudmFsdWV9fTwvbWF0LWxhYmVsPlxuXHQgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwicHJvcHJpZWRhZGUuZ2V0KCd0ZXh0TG9ncycpLnZhbHVlXCIgY2xhc3M9XCJ0ZXh0LW9ic1wiPjwvZGl2PlxuXHQgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAjdGV4dGFyZWFcblx0XHQgICAgICBba29hbGFBdXRvRm9jdXNdPVwicHJvcHJpZWRhZGUuZ2V0KCdmb2N1cycpLnZhbHVlXCJcbiAgICAgICAgICBjZGtUZXh0YXJlYUF1dG9zaXplXG4gICAgICAgICAgI2F1dG9zaXplPVwiY2RrVGV4dGFyZWFBdXRvc2l6ZVwiXG5cdFx0ICAgICAgW2Nka0F1dG9zaXplTWF4Um93c109XCI4XCJcblx0XHQgICAgICBbY2RrQXV0b3NpemVNaW5Sb3dzXT1cIjNcIlxuXHRcdCAgICAgIFtyZXF1aXJlZF09XCJwcm9wcmllZGFkZS5nZXQoJ3JlcXVpcmVkJykudmFsdWVcIlxuICAgICAgICAgIFt0YWJJbmRleF09XCJ0YWJJbmRleFN0YXJ0ICsgaVwiXG4gICAgICAgICAgW21pbkxlbmd0aF09XCJwcm9wcmllZGFkZS5nZXQoJ21pbkxlbmd0aCcpLnZhbHVlXCJcbiAgICAgICAgICBbbWF4TGVuZ3RoXT1cInByb3ByaWVkYWRlLmdldCgnbWF4TGVuZ3RoJykudmFsdWVcIlxuXHRcdCAgICAgIGZvcm1Db250cm9sTmFtZT1cInZhbHVlXCJcblx0XHQgICAgICBtYXRJbnB1dD5cblx0ICAgICAgPC90ZXh0YXJlYT5cblx0ICAgICAgPG1hdC1oaW50ICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd0ZXh0SGludCcpLnZhbHVlXCI+XG5cdCAgICAgICAgPG1hdC1pY29uPmluZm88L21hdC1pY29uPlxuXHRcdCAgICAgIHt7cHJvcHJpZWRhZGUuZ2V0KCd0ZXh0SGludCcpLnZhbHVlfX1cblx0ICAgICAgPC9tYXQtaGludD5cbiAgICAgICAgPG1hdC1oaW50IGFsaWduPVwiZW5kXCIgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ21heExlbmd0aCcpLnZhbHVlXCI+XG4gICAgICAgICAge3t0ZXh0YXJlYS52YWx1ZS5sZW5ndGh9fS97e3Byb3ByaWVkYWRlLmdldCgnbWF4TGVuZ3RoJykudmFsdWV9fVxuICAgICAgICA8L21hdC1oaW50PlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8ubWluTGVuZ3RoXCI+XG4gICAgICAgICAgPG1hdC1pY29uPmVycm9yPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e2Vycm9yTWVzc2FnZS5nZXRNaW5MZW5ndGhNZXNzYWdlKHByb3ByaWVkYWRlLmdldCgnbWluTGVuZ3RoJykudmFsdWUpfX1cbiAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5tYXhMZW5ndGhcIj5cbiAgICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlLmdldE1heExlbmd0aE1lc3NhZ2UocHJvcHJpZWRhZGUuZ2V0KCdtYXhMZW5ndGgnKS52YWx1ZSl9fVxuICAgICAgICA8L21hdC1lcnJvcj5cblx0ICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/LnJlcXVpcmVkXCI+XG5cdCAgICAgICAgPG1hdC1pY29uPmVycm9yPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e2Vycm9yTWVzc2FnZS5nZXRSZXF1aXJlZE1lc3NhZ2UocHJvcHJpZWRhZGUuZ2V0KCdsYWJlbCcpLnZhbHVlKX19XG5cdCAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8uY3VzdG9tRXJyb3JcIj5cbiAgICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7cHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8uY3VzdG9tRXJyb3IubWVzc2FnZX19LlxuICAgICAgICA8L21hdC1lcnJvcj5cblx0ICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cdCAgICA8bWF0LWZvcm0tZmllbGRcblx0XHQgICAgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQuc2VsZWN0XCJcblx0XHQgICAgW2FwcGVhcmFuY2VdPVwicHJvcHJpZWRhZGUuZ2V0KCdhcHBlYXJhbmNlJykudmFsdWVcIlxuXHRcdCAgICBbZmxvYXRMYWJlbF09XCJwcm9wcmllZGFkZS5nZXQoJ2Zsb2F0TGFiZWwnKS52YWx1ZVwiXG5cdFx0ICAgIFtmb3JtR3JvdXBOYW1lXT1cImlcIlxuXHRcdCAgICBbbmdDbGFzc109XCJwcm9wcmllZGFkZS5nZXQoJ2ZpZWxkQ2xhc3MnKS52YWx1ZVwiPlxuXHQgICAgICA8bWF0LWxhYmVsPnt7cHJvcHJpZWRhZGUuZ2V0KCdsYWJlbCcpLnZhbHVlfX08L21hdC1sYWJlbD5cblx0ICAgICAgPG1hdC1zZWxlY3QgW211bHRpcGxlXT1cInByb3ByaWVkYWRlLmdldCgnbXVsdGlwbGUnKS52YWx1ZVwiIFtyZXF1aXJlZF09XCJwcm9wcmllZGFkZS5nZXQoJ3JlcXVpcmVkJykudmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICBbdGFiSW5kZXhdPVwidGFiSW5kZXhTdGFydCArIGlcIiBmb3JtQ29udHJvbE5hbWU9XCJ2YWx1ZVwiPlxuXHQgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb25zIG9mIHByb3ByaWVkYWRlLmdldCgnb3Bjb2VzU2VsZWN0JykudmFsdWVcIiBbdmFsdWVdPVwib3B0aW9ucy52YWx1ZVwiPlxuXHQgICAgICAgICAge3tvcHRpb25zLm5hbWV9fVxuXHQgICAgICAgIDwvbWF0LW9wdGlvbj5cblx0ICAgICAgPC9tYXQtc2VsZWN0PlxuXHQgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3RleHRIaW50JykudmFsdWVcIj5cblx0ICAgICAgICA8bWF0LWljb24+aW5mbzwvbWF0LWljb24+XG5cdFx0ICAgICAge3twcm9wcmllZGFkZS5nZXQoJ3RleHRIaW50JykudmFsdWV9fVxuXHQgICAgICA8L21hdC1oaW50PlxuXHQgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8ucmVxdWlyZWRcIj5cblx0ICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlLmdldFJlcXVpcmVkTWVzc2FnZShwcm9wcmllZGFkZS5nZXQoJ2xhYmVsJykudmFsdWUpfX1cblx0ICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5jdXN0b21FcnJvclwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5lcnJvcjwvbWF0LWljb24+XG4gICAgICAgICAge3twcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5jdXN0b21FcnJvci5tZXNzYWdlfX0uXG4gICAgICAgIDwvbWF0LWVycm9yPlxuXHQgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDxtYXQtZm9ybS1maWVsZFxuICAgICAgICBjbGFzcz1cInNlbGVjdC1tdWx0aXBsZS1uYXRpdmVcIlxuICAgICAgICAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5zZWxlY3RNdWx0aXBsZU5hdGl2ZVwiXG4gICAgICAgIFthcHBlYXJhbmNlXT1cInByb3ByaWVkYWRlLmdldCgnYXBwZWFyYW5jZScpLnZhbHVlXCJcbiAgICAgICAgW2Zsb2F0TGFiZWxdPVwicHJvcHJpZWRhZGUuZ2V0KCdmbG9hdExhYmVsJykudmFsdWVcIlxuICAgICAgICBbZm9ybUdyb3VwTmFtZV09XCJpXCJcbiAgICAgICAgW25nQ2xhc3NdPVwicHJvcHJpZWRhZGUuZ2V0KCdmaWVsZENsYXNzJykudmFsdWVcIj5cbiAgICAgICAgPG1hdC1sYWJlbD57e3Byb3ByaWVkYWRlLmdldCgnbGFiZWwnKS52YWx1ZX19PC9tYXQtbGFiZWw+XG4gICAgICAgIDxzZWxlY3RcbiAgICAgICAgICBtYXROYXRpdmVDb250cm9sXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidmFsdWVcIlxuICAgICAgICAgIG11bHRpcGxlXG4gICAgICAgICAgW3RhYkluZGV4XT1cInRhYkluZGV4U3RhcnQgKyBpXCJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwicHJvcHJpZWRhZGUuZ2V0KCdyZXF1aXJlZCcpLnZhbHVlXCI+XG4gICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9ucyBvZiBwcm9wcmllZGFkZS5nZXQoJ29wY29lc1NlbGVjdCcpLnZhbHVlXCIgW3ZhbHVlXT1cIm9wdGlvbnMudmFsdWVcIj5cbiAgICAgICAgICAgIHt7b3B0aW9ucy5uYW1lfX1cbiAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgIDxtYXQtaGludCAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndGV4dEhpbnQnKS52YWx1ZVwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5pbmZvPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e3Byb3ByaWVkYWRlLmdldCgndGV4dEhpbnQnKS52YWx1ZX19XG4gICAgICAgIDwvbWF0LWhpbnQ+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5yZXF1aXJlZFwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5lcnJvcjwvbWF0LWljb24+XG4gICAgICAgICAge3tlcnJvck1lc3NhZ2UuZ2V0UmVxdWlyZWRNZXNzYWdlKHByb3ByaWVkYWRlLmdldCgnbGFiZWwnKS52YWx1ZSl9fVxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/LmN1c3RvbUVycm9yXCI+XG4gICAgICAgICAgPG1hdC1pY29uPmVycm9yPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e3Byb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/LmN1c3RvbUVycm9yLm1lc3NhZ2V9fS5cbiAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXHQgICAgPGRpdlxuXHRcdCAgICAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5jaGVja2JveFwiXG5cdFx0ICAgIFtmb3JtR3JvdXBOYW1lXT1cImlcIlxuXHRcdCAgICBbbmdDbGFzc109XCJwcm9wcmllZGFkZS5nZXQoJ2ZpZWxkQ2xhc3MnKS52YWx1ZVwiPlxuXHQgICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICAgW3RhYkluZGV4XT1cInRhYkluZGV4U3RhcnQgKyBpXCJcblx0XHQgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ2YWx1ZVwiXG5cdFx0ICAgICAgdmFsdWU9XCJ0cnVlXCI+XG5cdCAgICAgICAge3twcm9wcmllZGFkZS5nZXQoJ2xhYmVsJykudmFsdWV9fVxuXHQgICAgICA8L21hdC1jaGVja2JveD5cblx0ICAgIDwvZGl2PlxuXHRcdCAgPGRpdlxuXHRcdFx0ICAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5tb3JlSXRlbXNcIlxuXHRcdFx0ICBbZm9ybUdyb3VwTmFtZV09XCJpXCJcblx0XHRcdCAgW25nQ2xhc3NdPVwicHJvcHJpZWRhZGUuZ2V0KCdmaWVsZENsYXNzJykudmFsdWVcIlxuXHRcdFx0ICBjbGFzcz1cIm1vcmUtaXRlbXMtY29udGVudFwiPlxuXHRcdFx0ICA8ZmllbGRzZXQ+XG5cdFx0XHRcdCAgPGxlZ2VuZD5cblx0XHRcdFx0XHQgIDxrb2FsYS1idXR0b25cblx0XHRcdFx0XHRcdCAgKGNsaWNrKT1cImFkZE1vcmVJdGVtKGkpXCJcblx0XHRcdFx0XHRcdCAgW2Rpc2FibGVkXT1cInByb3ByaWVkYWRlLmdldCgnbW9yZUl0ZW1zQ29uZmlnJykudmFsdWUubGVuZ3RoID09PSBwcm9wcmllZGFkZS5nZXQoJ21vcmVJdGVtc01heEl0ZW1zJykudmFsdWVcIlxuXHRcdFx0XHRcdFx0ICBbdG9vbHRpcF09XCJwcm9wcmllZGFkZS5nZXQoJ21vcmVJdGVtc0J1dHRvbkljb25BZGRsYWJlbCcpLnZhbHVlXCJcblx0XHRcdFx0XHRcdCAgW2JhY2tncm91bmRDb2xvcl09XCJwcm9wcmllZGFkZS5nZXQoJ21vcmVJdGVtc0ljb25CYWNrZ3JvdW5kQ29sb3InKS52YWx1ZVwiXG4gICAgICAgICAgICAgIFtjb2xvcl09XCJwcm9wcmllZGFkZS5nZXQoJ21vcmVJdGVtc0ljb25Gb250Q29sb3InKS52YWx1ZVwiXG5cdFx0XHRcdFx0XHQgIGNsYXNzPVwiYnRuLWFkZC1tb3JlLWl0ZW1zXCJcblx0XHRcdFx0XHRcdCAgaWNvbj1cImFkZFwiPlxuXHRcdFx0XHRcdCAgPC9rb2FsYS1idXR0b24+XG5cdFx0XHRcdFx0ICB7e3Byb3ByaWVkYWRlLmdldCgnbGFiZWwnKS52YWx1ZX19IChNaW4uOiB7e3Byb3ByaWVkYWRlLmdldCgnbW9yZUl0ZW1zTWluSXRlbXMnKS52YWx1ZX19XG5cdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTcOheC46IHt7cHJvcHJpZWRhZGUuZ2V0KCdtb3JlSXRlbXNNYXhJdGVtcycpLnZhbHVlfX0pXG5cdFx0XHRcdCAgPC9sZWdlbmQ+XG5cdFx0XHRcdCAgPG1hdC1hY2NvcmRpb24gY2xhc3M9XCJpdGVtc1wiIG11bHRpPlxuXHRcdFx0XHRcdCAgPG1hdC1leHBhbnNpb24tcGFuZWxcblx0XHRcdFx0XHRcdCAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcHJvcHJpZWRhZGUuZ2V0KCdtb3JlSXRlbXNDb25maWcnKS52YWx1ZS5zbGljZSgpLnJldmVyc2UoKTsgaW5kZXggYXMgaW5kZXhNb3JlSXRlbXNcIlxuXHRcdFx0XHRcdFx0ICBleHBhbmRlZD5cblx0XHRcdFx0XHRcdCAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuXHRcdFx0XHRcdFx0XHRcdDxtYXQtcGFuZWwtdGl0bGUgY2xhc3M9XCJ0aXRsZUZvcm1cIj4jXG5cdFx0XHRcdFx0XHRcdFx0XHR7e3Byb3ByaWVkYWRlLmdldCgnbW9yZUl0ZW1zQ29uZmlnJykudmFsdWUubGVuZ3RoIC0gMSAtIGluZGV4TW9yZUl0ZW1zICsgMX19PC9tYXQtcGFuZWwtdGl0bGU+XG5cdFx0XHRcdFx0XHRcdFx0PG1hdC1wYW5lbC1kZXNjcmlwdGlvbiBjbGFzcz1cInRpdGxlRm9ybVwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0e3twcm9wcmllZGFkZS5nZXQoJ2xhYmVsJykudmFsdWV9fVxuXHRcdFx0XHRcdFx0XHRcdFx0PG1hdC1pY29uPnt7cHJvcHJpZWRhZGUuZ2V0KCdtb3JlSXRlbXNJY29uJykudmFsdWV9fTwvbWF0LWljb24+XG5cdFx0XHRcdFx0XHRcdFx0PC9tYXQtcGFuZWwtZGVzY3JpcHRpb24+XG5cdFx0XHRcdFx0XHRcdDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG5cdFx0XHRcdFx0XHQgIDxrb2FsYS1keW5hbWljLWZvcm1cblx0XHRcdFx0XHRcdFx0ICBbc2hvd0ZpZWxkc01vcmVJdGVuc0NvbmZpZ109XCJpdGVtLnNob3dGaWVsZHNNb3JlSXRlbnNDb25maWdcIlxuXHRcdFx0XHRcdFx0XHQgIFtzaG93RmllbGRzXT1cIml0ZW0uc2hvd0ZpZWxkc1wiXG5cdFx0XHRcdFx0XHRcdCAgW2Zvcm1Db25maWddPVwiaXRlbS5mb3JtQ29uZmlnXCJcblx0XHRcdFx0XHRcdFx0ICBbZm9ybV09XCJpdGVtLmZvcm1cIlxuICAgICAgICAgICAgICAgIFt0YWJJbmRleFN0YXJ0XT1cInRhYkluZGV4U3RhcnQgKyBpXCI+XG5cdFx0XHRcdFx0XHQgIDwva29hbGEtZHluYW1pYy1mb3JtPlxuXHRcdFx0XHRcdCAgICA8bWF0LWFjdGlvbi1yb3dcblx0XHRcdFx0XHRcdCAgICAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgnbW9yZUl0ZW1zQ29uZmlnJykudmFsdWUubGVuZ3RoID4gcHJvcHJpZWRhZGUuZ2V0KCdtb3JlSXRlbXNNaW5JdGVtcycpLnZhbHVlXCI+XG5cdFx0XHRcdFx0ICAgICAgPGJ1dHRvblxuXHRcdFx0XHRcdFx0ICAgICAgKGNsaWNrKT1cInJlbW92ZU1vcmVJdGVtKGksIHByb3ByaWVkYWRlLmdldCgnbW9yZUl0ZW1zQ29uZmlnJykudmFsdWUubGVuZ3RoIC0gMSAtIGluZGV4TW9yZUl0ZW1zKVwiXG5cdFx0XHRcdFx0XHQgICAgICBtYXQtaWNvbi1idXR0b24+XG5cdFx0XHRcdFx0XHQgICAgICA8bWF0LWljb24+ZGVsZXRlPC9tYXQtaWNvbj5cblx0XHRcdFx0XHQgICAgICA8L2J1dHRvbj5cblx0XHRcdFx0XHQgICAgPC9tYXQtYWN0aW9uLXJvdz5cblx0XHRcdFx0XHQgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cblx0XHRcdFx0ICA8L21hdC1hY2NvcmRpb24+XG5cdFx0XHQgIDwvZmllbGRzZXQ+XG5cdFx0ICA8L2Rpdj5cblx0XHQgIDxtYXQtZm9ybS1maWVsZFxuXHRcdFx0ICAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5hdXRvY29tcGxldGVcIlxuXHRcdFx0ICBbYXBwZWFyYW5jZV09XCJwcm9wcmllZGFkZS5nZXQoJ2FwcGVhcmFuY2UnKS52YWx1ZVwiXG5cdFx0XHQgIFtmbG9hdExhYmVsXT1cInByb3ByaWVkYWRlLmdldCgnZmxvYXRMYWJlbCcpLnZhbHVlXCJcblx0XHRcdCAgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiXG5cdFx0XHQgIFtuZ0NsYXNzXT1cInByb3ByaWVkYWRlLmdldCgnZmllbGRDbGFzcycpLnZhbHVlXCI+XG5cdCAgICAgIDxtYXQtbGFiZWw+e3twcm9wcmllZGFkZS5nZXQoJ2xhYmVsJykudmFsdWV9fSB7e3Byb3ByaWVkYWRlLmdldCgnbXVsdGlwbGUnKS52YWx1ZSAmJlxuXHQgICAgICBwcm9wcmllZGFkZS5nZXQoJ3JlcXVpcmVkJykudmFsdWUgPyAnKicgOiAnJ319PC9tYXQtbGFiZWw+XG5cdFx0XHQgIDxkaXYgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ211bHRpcGxlJykudmFsdWUgZWxzZSBzaW5nbGVcIj5cblx0ICAgICAgICA8bWF0LWNoaXAtZ3JpZCAjY2hpcExpc3Q+XG4gICAgICAgICAgICA8bWF0LWNoaXAtcm93XG4gICAgICAgICAgICAgIChyZW1vdmVkKT1cInJlbW92ZU9wdGlvbk9uQXV0b2NvbXBsZXRlKGksIG9wdGlvbilcIlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHByb3ByaWVkYWRlLmdldCgnYXV0b2NvbXBsZXRlU2VsZWN0ZWRWYWx1ZScpLnZhbHVlXCJcbiAgICAgICAgICAgICAgW2NvbG9yXT1cImdldENvbG9yQ2hpcChwcm9wcmllZGFkZS5nZXQoJ2F1dG9jb21wbGV0ZU11bHRpcGxlQ29uZmlnJykudmFsdWUgfCBhc3luYylcIlxuICAgICAgICAgICAgICBbcmVtb3ZhYmxlXT1cInRydWVcIj5cbiAgICAgICAgICAgICAge3tkaXNwbGF5KG9wdGlvbil9fVxuICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCIhcHJvcHJpZWRhZGUuZ2V0KCdkaXNhYmxlZCcpLnZhbHVlXCIgbWF0Q2hpcFJlbW92ZT5jYW5jZWw8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9tYXQtY2hpcC1yb3c+XG5cdCAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgW2lkXT1cIidhdXRvY29tcGxldGUtJyArIHByb3ByaWVkYWRlLmdldCgnbmFtZScpLnZhbHVlXCJcbiAgICAgICAgICAgICAgW2tvYWxhQXV0b0ZvY3VzXT1cInByb3ByaWVkYWRlLmdldCgnZm9jdXMnKS52YWx1ZVwiXG5cdFx0ICAgICAgICAgIFtyZXF1aXJlZF09XCJwcm9wcmllZGFkZS5nZXQoJ3JlcXVpcmVkJykudmFsdWVcIlxuXHRcdCAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIlxuXHRcdCAgICAgICAgICBbbWF0Q2hpcElucHV0Rm9yXT1cImNoaXBMaXN0XCJcbiAgICAgICAgICAgICAgW3RhYkluZGV4XT1cInRhYkluZGV4U3RhcnQgKyBpXCJcbiAgICAgICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJnZXRSYW5kb21TdHJpbmcoKVwiXG5cdFx0ICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInZhbHVlXCJcblx0XHQgICAgICAgICAgbWF0SW5wdXRcblx0XHQgICAgICAgICAgdHlwZT1cInRleHRcIlxuXHRcdCAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjaW9uZSB1bSBvdSBtYWlzIG9ww6fDtWVzLi4uXCI+XG5cdCAgICAgICAgPC9tYXQtY2hpcC1ncmlkPlxuXHQgICAgICA8L2Rpdj5cblx0ICAgICAgPG5nLXRlbXBsYXRlICNzaW5nbGU+XG5cdFx0ICAgICAgPGlucHV0XG5cdFx0XHQgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIlxuICAgICAgICAgICAgW2tvYWxhQXV0b0ZvY3VzXT1cInByb3ByaWVkYWRlLmdldCgnZm9jdXMnKS52YWx1ZVwiXG5cdFx0XHQgICAgICBbcmVxdWlyZWRdPVwicHJvcHJpZWRhZGUuZ2V0KCdyZXF1aXJlZCcpLnZhbHVlXCJcbiAgICAgICAgICAgIFt0YWJJbmRleF09XCJ0YWJJbmRleFN0YXJ0ICsgaVwiXG4gICAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cImdldFJhbmRvbVN0cmluZygpXCJcblx0XHRcdCAgICAgIGZvcm1Db250cm9sTmFtZT1cInZhbHVlXCJcblx0XHRcdCAgICAgIG1hdElucHV0XG5cdFx0XHQgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjaW9uZSB1bWEgb3DDp8Ojby4uLlwiXG5cdFx0XHQgICAgICB0eXBlPVwidGV4dFwiPlxuXHQgICAgICA8L25nLXRlbXBsYXRlPlxuXHQgICAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ2F1dG9jb21wbGV0ZUxvYWRpbmcnKS52YWx1ZSB8IGFzeW5jXCIgY29sb3I9XCJwcmltYXJ5XCJcblx0ICAgICAgICAgICAgICAgICAgIG1hdFN1ZmZpeD48L21hdC1zcGlubmVyPlxuXHQgICAgICA8YnV0dG9uXG5cdFx0ICAgICAgKGNsaWNrKT1cImNsZWFyQXV0b2NvbXBsZXRlKGkpXCJcblx0XHQgICAgICAqbmdJZj1cIlxuXHQgICAgICAgICAgIShwcm9wcmllZGFkZS5nZXQoJ2F1dG9jb21wbGV0ZUxvYWRpbmcnKS52YWx1ZSB8IGFzeW5jKSAmJlxuXHQgICAgICAgICAgIXByb3ByaWVkYWRlLmdldCgnZGlzYWJsZWQnKS52YWx1ZVwiXG5cdFx0ICAgICAgY29sb3I9XCJ3YXJuXCJcblx0XHQgICAgICBtYXQtaWNvbi1idXR0b25cblx0XHQgICAgICBtYXRTdWZmaXhcblx0XHQgICAgICB0eXBlPVwiYnV0dG9uXCI+XG5cdCAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cblx0ICAgICAgPC9idXR0b24+XG5cdCAgICAgIDxtYXQtaGludCAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndGV4dEhpbnQnKS52YWx1ZVwiPlxuXHQgICAgICAgIDxtYXQtaWNvbj5pbmZvPC9tYXQtaWNvbj5cblx0XHQgICAgICB7e3Byb3ByaWVkYWRlLmdldCgndGV4dEhpbnQnKS52YWx1ZX19XG5cdCAgICAgIDwvbWF0LWhpbnQ+XG5cdCAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5yZXF1aXJlZCB8fCBwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5hdXRvY29tcGxldGVTZWxlY3RlZFwiPlxuXHQgICAgICAgIDxtYXQtaWNvbj5lcnJvcjwvbWF0LWljb24+XG4gICAgICAgICAge3tlcnJvck1lc3NhZ2UuZ2V0QXV0b2NvbXBsZXRlTWVzc2FnZShwcm9wcmllZGFkZS5nZXQoJ2xhYmVsJykudmFsdWUpfX1cblx0ICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5jdXN0b21FcnJvclwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5lcnJvcjwvbWF0LWljb24+XG4gICAgICAgICAge3twcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5jdXN0b21FcnJvci5tZXNzYWdlfX0uXG4gICAgICAgIDwvbWF0LWVycm9yPlxuXHQgICAgICA8bWF0LWF1dG9jb21wbGV0ZVxuXHRcdCAgICAgICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCJcblx0XHQgICAgICBbZGlzcGxheVdpdGhdPVwiZGlzcGxheVwiIGF1dG9BY3RpdmVGaXJzdE9wdGlvbj5cbiAgICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgICAgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ2F1dG9jb21wbGV0ZUFkZE9wdGlvbicpLnZhbHVlICYmIGlzVmFsaWROZXdBdXRvY29tcGxldGVPcHRpb24ocHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLnZhbHVlKVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwie1xuICAgICAgICAgICAgICB2YWx1ZToge2lkOiAwLCBuYW1lOiBwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykudmFsdWV9LFxuICAgICAgICAgICAgICBuYW1lOiBwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykudmFsdWVcbiAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICAgIEFkZCA8Yj57e3Byb3ByaWVkYWRlLmdldCgndmFsdWUnKS52YWx1ZX19PC9iPi4uLlxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cblx0XHQgICAgICA8ZGl2ICpuZ0lmPVwiKGdldEF1dG9jb21wbGV0ZU9wdGlvbnMocHJvcHJpZWRhZGUpIHwgYXN5bmMpIGFzIG9wdGlvbnNcIj5cblx0XHQgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uc1wiIFt2YWx1ZV09XCJvcHRpb25cIj5cblx0XHQgICAgICAgICAge3tvcHRpb24ubmFtZX19XG5cdFx0ICAgICAgICA8L21hdC1vcHRpb24+XG5cdFx0ICAgICAgPC9kaXY+XG5cdCAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cblx0ICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cdFx0ICA8ZGl2ICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLmZpbGVcIj5cblx0XHRcdCAgPGtvYWxhLWZpbGUtYnV0dG9uXG5cdFx0XHRcdCAgKGdldEZpbGVzKT1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5zZXRWYWx1ZSgkZXZlbnQpXCJcblx0XHRcdFx0ICBbYWNjZXB0XT1cInByb3ByaWVkYWRlLmdldCgnZmlsZUJ1dHRvbkNvbmZpZycpLnZhbHVlLmFjY2VwdFwiXG5cdFx0XHRcdCAgW2JhY2tncm91bmRDb2xvcl09XCJwcm9wcmllZGFkZS5nZXQoJ2ZpbGVCdXR0b25Db25maWcnKS52YWx1ZS5iYWNrZ3JvdW5kQ29sb3JcIlxuXHRcdFx0XHQgIFtjb2xvcl09XCJwcm9wcmllZGFkZS5nZXQoJ2ZpbGVCdXR0b25Db25maWcnKS52YWx1ZS5jb2xvclwiXG5cdFx0XHRcdCAgW2Rpc2FibGVkXT1cInByb3ByaWVkYWRlLmdldCgnZGlzYWJsZWQnKS52YWx1ZVwiXG5cdFx0XHRcdCAgW2ljb25dPVwicHJvcHJpZWRhZGUuZ2V0KCdmaWxlQnV0dG9uQ29uZmlnJykudmFsdWUuaWNvblwiXG5cdFx0XHRcdCAgW211bHRpcGxlXT1cInByb3ByaWVkYWRlLmdldCgnbXVsdGlwbGUnKS52YWx1ZVwiXG5cdFx0XHRcdCAgW3RleHRdPVwicHJvcHJpZWRhZGUuZ2V0KCdmaWxlQnV0dG9uQ29uZmlnJykudmFsdWUudGV4dFwiPlxuXHRcdFx0ICA8L2tvYWxhLWZpbGUtYnV0dG9uPlxuXHRcdCAgPC9kaXY+XG5cdFx0ICA8ZGl2ICpuZ0lmPVwiXG5cdFx0ICAgIHByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5keW5hbWljRm9ybSAmJlxuXHRcdFx0XHQoZ2V0RHluYW1pY0Zvcm1Db25maWcocHJvcHJpZWRhZGUpIHwgYXN5bmMpIGFzIGR5bmFtaWNGb3JtQ29uZmlnXCI+XG5cdFx0XHQgIDxmaWVsZHNldCAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgnbGFiZWwnKS52YWx1ZSBlbHNlIGR5bmFtaWNGb3JtV2l0aG91dExhYmVsXCI+XG5cdFx0XHRcdCAgPGxlZ2VuZD57e3Byb3ByaWVkYWRlLmdldCgnbGFiZWwnKS52YWx1ZX19PC9sZWdlbmQ+XG5cdFx0XHRcdCAgPGtvYWxhLWR5bmFtaWMtZm9ybVxuXHRcdFx0XHRcdCAgW2Zvcm1Db25maWddPVwiZHluYW1pY0Zvcm1Db25maWcuZm9ybUNvbmZpZ1wiXG5cdFx0XHRcdFx0ICBbZm9ybV09XCJkeW5hbWljRm9ybUNvbmZpZy5mb3JtXCJcblx0XHRcdFx0XHQgIFtzZXRWYWx1ZXNdPVwiZHluYW1pY0Zvcm1Db25maWcuc2V0VmFsdWVzXCJcblx0XHRcdFx0XHQgIFtzaG93RmllbGRzXT1cImR5bmFtaWNGb3JtQ29uZmlnLnNob3dGaWVsZHNcIlxuICAgICAgICAgICAgW3RhYkluZGV4U3RhcnRdPVwidGFiSW5kZXhTdGFydCArIGlcIj5cblx0XHRcdFx0ICA8L2tvYWxhLWR5bmFtaWMtZm9ybT5cblx0XHRcdCAgPC9maWVsZHNldD5cblx0XHRcdCAgPG5nLXRlbXBsYXRlICNkeW5hbWljRm9ybVdpdGhvdXRMYWJlbD5cblx0XHRcdFx0ICA8a29hbGEtZHluYW1pYy1mb3JtXG5cdFx0XHRcdFx0ICBbZm9ybUNvbmZpZ109XCJkeW5hbWljRm9ybUNvbmZpZy5mb3JtQ29uZmlnXCJcblx0XHRcdFx0XHQgIFtmb3JtXT1cImR5bmFtaWNGb3JtQ29uZmlnLmZvcm1cIlxuXHRcdFx0XHRcdCAgW3NldFZhbHVlc109XCJkeW5hbWljRm9ybUNvbmZpZy5zZXRWYWx1ZXNcIlxuXHRcdFx0XHRcdCAgW3Nob3dGaWVsZHNdPVwiZHluYW1pY0Zvcm1Db25maWcuc2hvd0ZpZWxkc1wiXG4gICAgICAgICAgICBbdGFiSW5kZXhTdGFydF09XCJ0YWJJbmRleFN0YXJ0ICsgaVwiPlxuXHRcdFx0XHQgIDwva29hbGEtZHluYW1pYy1mb3JtPlxuXHRcdFx0ICA8L25nLXRlbXBsYXRlPlxuXHRcdCAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicmFkaW8tYnRuLWdyb3VwXCJcbiAgICAgICAgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQucmFkaW9cIlxuICAgICAgICBbZm9ybUdyb3VwTmFtZV09XCJpXCJcbiAgICAgICAgW25nQ2xhc3NdPVwicHJvcHJpZWRhZGUuZ2V0KCdmaWVsZENsYXNzJykudmFsdWVcIj5cbiAgICAgICAgPG1hdC1yYWRpby1ncm91cCBmb3JtQ29udHJvbE5hbWU9XCJ2YWx1ZVwiPlxuICAgICAgICAgIDxsYWJlbCAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgnbGFiZWwnKS52YWx1ZVwiPnt7cHJvcHJpZWRhZGUuZ2V0KCdsYWJlbCcpLnZhbHVlfX08L2xhYmVsPlxuICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uXG4gICAgICAgICAgICBbdGFiSW5kZXhdPVwidGFiSW5kZXhTdGFydCArIGlcIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbnMgb2YgcHJvcHJpZWRhZGUuZ2V0KCdvcGNvZXNTZWxlY3QnKS52YWx1ZVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9ucy52YWx1ZVwiPlxuICAgICAgICAgICAge3tvcHRpb25zLm5hbWV9fVxuICAgICAgICAgIDwvbWF0LXJhZGlvLWJ1dHRvbj5cbiAgICAgICAgPC9tYXQtcmFkaW8tZ3JvdXA+XG4gICAgICA8L2Rpdj5cblx0ICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIltidG4tc3VibWl0XVwiPjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19