@testgorilla/tgo-ui 2.11.1 → 2.11.2

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 (1003) hide show
  1. package/components/accordion/accordion.component.d.ts +76 -0
  2. package/components/accordion/accordion.component.module.d.ts +12 -0
  3. package/components/alert-banner/alert-banner.component.d.ts +89 -0
  4. package/components/alert-banner/alert-banner.component.module.d.ts +10 -0
  5. package/components/autocomplete/autocomplete.component.d.ts +223 -0
  6. package/components/autocomplete/autocomplete.component.module.d.ts +22 -0
  7. package/components/autocomplete/autocomplete.model.d.ts +18 -0
  8. package/components/autocomplete/includes.pipe.d.ts +12 -0
  9. package/components/autocomplete/transform-Item.pipe.d.ts +11 -0
  10. package/components/avatar/avatar.component.d.ts +58 -0
  11. package/components/avatar/avatar.component.module.d.ts +12 -0
  12. package/components/avatar/avatar.model.d.ts +7 -0
  13. package/components/badge/badge.component.d.ts +58 -0
  14. package/components/badge/badge.component.module.d.ts +9 -0
  15. package/components/badge/badge.model.d.ts +27 -0
  16. package/components/button/button.component.d.ts +190 -0
  17. package/components/button/button.component.module.d.ts +13 -0
  18. package/components/button/button.model.d.ts +14 -0
  19. package/components/card/card.component.d.ts +46 -0
  20. package/components/card/card.component.module.d.ts +9 -0
  21. package/components/checkbox/checkbox.component.d.ts +148 -0
  22. package/components/checkbox/checkbox.component.module.d.ts +15 -0
  23. package/components/confirm-dialog/confirm-dialog.component.d.ts +25 -0
  24. package/components/confirm-dialog/confirm-dialog.component.module.d.ts +12 -0
  25. package/components/confirm-dialog/confirm-dialog.model.d.ts +9 -0
  26. package/components/datepicker/datepicker.component.d.ts +205 -0
  27. package/components/datepicker/datepicker.component.module.d.ts +18 -0
  28. package/components/datepicker/no-date-format.directive.d.ts +11 -0
  29. package/components/deprecated-paginator/deprecated-paginator.component.d.ts +38 -0
  30. package/components/deprecated-paginator/deprecated-paginator.component.module.d.ts +9 -0
  31. package/components/deprecated-table/deprecated-table.component.d.ts +91 -0
  32. package/components/deprecated-table/deprecated-table.component.module.d.ts +14 -0
  33. package/components/deprecated-table/deprecated-table.model.d.ts +45 -0
  34. package/components/deprecated-table/directives/dynamic-component.directive.d.ts +13 -0
  35. package/components/dialog/dialog.component.d.ts +108 -0
  36. package/components/dialog/dialog.component.module.d.ts +11 -0
  37. package/components/dialog/dialog.service.d.ts +13 -0
  38. package/components/divider/divider.component.d.ts +39 -0
  39. package/components/divider/divider.component.module.d.ts +9 -0
  40. package/components/dropdown/dropdown.component.d.ts +169 -0
  41. package/components/dropdown/dropdown.component.module.d.ts +17 -0
  42. package/components/dropdown/dropdown.model.d.ts +5 -0
  43. package/components/elevation-shadow/elevation-shadow.component.d.ts +26 -0
  44. package/components/elevation-shadow/elevation-shadow.component.module.d.ts +8 -0
  45. package/components/elevation-shadow/elevation-shadow.constant.d.ts +8 -0
  46. package/components/empty-state/empty-state.component.d.ts +124 -0
  47. package/components/empty-state/empty-state.component.module.d.ts +11 -0
  48. package/components/field/field.component.d.ts +238 -0
  49. package/components/field/field.component.module.d.ts +18 -0
  50. package/components/field/field.model.d.ts +1 -0
  51. package/components/file-upload/file-upload.component.d.ts +124 -0
  52. package/components/file-upload/file-upload.component.module.d.ts +14 -0
  53. package/components/icon/icon.component.d.ts +65 -0
  54. package/components/icon/icon.component.module.d.ts +10 -0
  55. package/components/icon/icon.config.d.ts +10 -0
  56. package/components/icon/icon.model.d.ts +7 -0
  57. package/components/icon-label/icon-label.component.d.ts +39 -0
  58. package/components/icon-label/icon-label.component.module.d.ts +9 -0
  59. package/components/logo/logo.component.d.ts +57 -0
  60. package/components/logo/logo.component.module.d.ts +8 -0
  61. package/components/logo/logo.model.d.ts +29 -0
  62. package/components/navbar/mobile-navbar-side-sheet/mobile-navbar-side-sheet.component.d.ts +22 -0
  63. package/components/navbar/navbar.component.d.ts +113 -0
  64. package/components/navbar/navbar.component.module.d.ts +20 -0
  65. package/components/navbar/navbar.model.d.ts +10 -0
  66. package/components/overflow-menu/overflow-menu.component.d.ts +55 -0
  67. package/components/overflow-menu/overflow-menu.component.module.d.ts +11 -0
  68. package/components/overflow-menu/overflow-menu.model.d.ts +10 -0
  69. package/components/page-header/page-header.component.d.ts +45 -0
  70. package/components/page-header/page-header.component.module.d.ts +10 -0
  71. package/components/paginator/paginator.component.d.ts +49 -0
  72. package/components/paginator/paginator.component.module.d.ts +9 -0
  73. package/components/password-criteria/password.component.d.ts +49 -0
  74. package/components/password-criteria/password.component.module.d.ts +13 -0
  75. package/components/password-strength/password-strength.component.d.ts +52 -0
  76. package/components/password-strength/password-strength.component.module.d.ts +11 -0
  77. package/components/phone-input/join-strings.pipe.d.ts +7 -0
  78. package/components/phone-input/phone-input.component.d.ts +154 -0
  79. package/components/phone-input/phone-input.component.module.d.ts +20 -0
  80. package/components/phone-input/phone-input.model.d.ts +8 -0
  81. package/components/progress-bar/progress-bar.component.d.ts +52 -0
  82. package/components/progress-bar/progress-bar.component.module.d.ts +9 -0
  83. package/components/radial-progress/radial-progress.component.d.ts +68 -0
  84. package/components/radial-progress/radial-progress.component.module.d.ts +10 -0
  85. package/components/radial-progress/radial-progress.model.d.ts +10 -0
  86. package/components/radio-button/radio-button.component.d.ts +116 -0
  87. package/components/radio-button/radio-button.component.module.d.ts +11 -0
  88. package/components/radio-button/radio-button.model.d.ts +4 -0
  89. package/components/rating/half-star.pipe.d.ts +14 -0
  90. package/components/rating/rating.component.d.ts +64 -0
  91. package/components/rating/rating.component.module.d.ts +10 -0
  92. package/components/scale/scale.component.d.ts +34 -0
  93. package/components/scale/scale.component.module.d.ts +8 -0
  94. package/components/segmented-bar/segmented-bar.component.d.ts +54 -0
  95. package/components/segmented-bar/segmented-bar.component.module.d.ts +10 -0
  96. package/components/segmented-bar/segmented-bar.model.d.ts +7 -0
  97. package/components/segmented-button/segmented-button.component.d.ts +32 -0
  98. package/components/segmented-button/segmented-button.component.module.d.ts +10 -0
  99. package/components/segmented-button/segmented-button.model.d.ts +7 -0
  100. package/components/side-sheet/side-sheet.component.d.ts +49 -0
  101. package/components/side-sheet/side-sheet.component.module.d.ts +14 -0
  102. package/components/side-sheet/side-sheet.model.d.ts +10 -0
  103. package/components/side-sheet/side-sheet.service.d.ts +14 -0
  104. package/components/skeleton/skeleton.component.d.ts +26 -0
  105. package/components/skeleton/skeleton.model.d.ts +2 -0
  106. package/components/slider/slider.component.d.ts +103 -0
  107. package/components/slider/slider.component.module.d.ts +14 -0
  108. package/components/slider/slider.model.d.ts +4 -0
  109. package/components/snackbar/snackbar.component.d.ts +111 -0
  110. package/components/snackbar/snackbar.component.module.d.ts +12 -0
  111. package/components/snackbar/snackbar.service.d.ts +12 -0
  112. package/components/spinner/spinner.component.d.ts +38 -0
  113. package/components/spinner/spinner.module.d.ts +8 -0
  114. package/components/step/step.component.d.ts +104 -0
  115. package/components/step/step.component.module.d.ts +9 -0
  116. package/components/stepper/stepper.component.d.ts +76 -0
  117. package/components/stepper/stepper.component.module.d.ts +15 -0
  118. package/components/stepper/stepper.model.d.ts +9 -0
  119. package/components/table/sentence-case.pipe.d.ts +7 -0
  120. package/components/table/table.component.d.ts +94 -0
  121. package/components/table/table.component.module.d.ts +20 -0
  122. package/components/table/table.model.d.ts +92 -0
  123. package/components/tabs/tab.directive.d.ts +18 -0
  124. package/components/tabs/tabs.component.d.ts +59 -0
  125. package/components/tabs/tabs.component.module.d.ts +11 -0
  126. package/components/tabs/tabs.model.d.ts +9 -0
  127. package/components/tag/tag.component.d.ts +129 -0
  128. package/components/tag/tag.component.module.d.ts +12 -0
  129. package/components/toggle/toggle.component.d.ts +105 -0
  130. package/components/toggle/toggle.component.module.d.ts +12 -0
  131. package/components/tooltip/tooltip.component.d.ts +44 -0
  132. package/components/tooltip/tooltip.component.module.d.ts +8 -0
  133. package/components/tooltip/tooltip.model.d.ts +6 -0
  134. package/components/validation-error/validation-error.component.d.ts +27 -0
  135. package/components/validation-error/validation-error.module.d.ts +10 -0
  136. package/directives/digits-only.directive.d.ts +15 -0
  137. package/directives/drag-drop.directive.d.ts +12 -0
  138. package/directives/ellipse-text.directive.d.ts +16 -0
  139. package/directives/select-text.directive.d.ts +19 -0
  140. package/directives/step-line-width.directive.d.ts +15 -0
  141. package/esm2022/assets/i18n/da-dk.json +77 -0
  142. package/esm2022/assets/i18n/de.json +77 -0
  143. package/esm2022/assets/i18n/en.json +100 -0
  144. package/esm2022/assets/i18n/es.json +77 -0
  145. package/esm2022/assets/i18n/fr.json +77 -0
  146. package/esm2022/assets/i18n/it-it.json +77 -0
  147. package/esm2022/assets/i18n/ja-jp.json +77 -0
  148. package/esm2022/assets/i18n/nb-no.json +77 -0
  149. package/esm2022/assets/i18n/nl.json +77 -0
  150. package/esm2022/assets/i18n/pl-pl.json +77 -0
  151. package/esm2022/assets/i18n/pt-br.json +77 -0
  152. package/esm2022/assets/i18n/sv-se.json +77 -0
  153. package/esm2022/components/accordion/accordion.component.mjs +105 -0
  154. package/esm2022/components/accordion/accordion.component.module.mjs +40 -0
  155. package/esm2022/components/accordion/accordion.model.mjs +2 -0
  156. package/esm2022/components/alert-banner/alert-banner.component.mjs +127 -0
  157. package/esm2022/components/alert-banner/alert-banner.component.module.mjs +20 -0
  158. package/esm2022/components/alert-banner/alert-banner.model.mjs +2 -0
  159. package/esm2022/components/autocomplete/autocomplete.component.mjs +537 -0
  160. package/esm2022/components/autocomplete/autocomplete.component.module.mjs +70 -0
  161. package/esm2022/components/autocomplete/autocomplete.model.mjs +22 -0
  162. package/esm2022/components/autocomplete/includes.pipe.mjs +21 -0
  163. package/esm2022/components/autocomplete/transform-Item.pipe.mjs +29 -0
  164. package/esm2022/components/avatar/avatar.component.mjs +91 -0
  165. package/esm2022/components/avatar/avatar.component.module.mjs +22 -0
  166. package/esm2022/components/avatar/avatar.model.mjs +12 -0
  167. package/esm2022/components/badge/badge.component.mjs +102 -0
  168. package/esm2022/components/badge/badge.component.module.mjs +19 -0
  169. package/esm2022/components/badge/badge.model.mjs +28 -0
  170. package/esm2022/components/button/button.component.mjs +352 -0
  171. package/esm2022/components/button/button.component.module.mjs +41 -0
  172. package/esm2022/components/button/button.model.mjs +2 -0
  173. package/esm2022/components/card/card.component.mjs +75 -0
  174. package/esm2022/components/card/card.component.module.mjs +19 -0
  175. package/esm2022/components/card/card.model.mjs +2 -0
  176. package/esm2022/components/checkbox/checkbox.component.mjs +227 -0
  177. package/esm2022/components/checkbox/checkbox.component.module.mjs +25 -0
  178. package/esm2022/components/confirm-dialog/confirm-dialog.component.mjs +48 -0
  179. package/esm2022/components/confirm-dialog/confirm-dialog.component.module.mjs +29 -0
  180. package/esm2022/components/confirm-dialog/confirm-dialog.model.mjs +2 -0
  181. package/esm2022/components/datepicker/datepicker.component.mjs +302 -0
  182. package/esm2022/components/datepicker/datepicker.component.module.mjs +60 -0
  183. package/esm2022/components/datepicker/no-date-format.directive.mjs +56 -0
  184. package/esm2022/components/deprecated-paginator/deprecated-paginator.component.mjs +55 -0
  185. package/esm2022/components/deprecated-paginator/deprecated-paginator.component.module.mjs +20 -0
  186. package/esm2022/components/deprecated-table/deprecated-table.component.mjs +158 -0
  187. package/esm2022/components/deprecated-table/deprecated-table.component.module.mjs +43 -0
  188. package/esm2022/components/deprecated-table/deprecated-table.model.mjs +13 -0
  189. package/esm2022/components/deprecated-table/directives/dynamic-component.directive.mjs +40 -0
  190. package/esm2022/components/dialog/dialog.component.mjs +193 -0
  191. package/esm2022/components/dialog/dialog.component.module.mjs +23 -0
  192. package/esm2022/components/dialog/dialog.service.mjs +32 -0
  193. package/esm2022/components/divider/divider.component.mjs +65 -0
  194. package/esm2022/components/divider/divider.component.module.mjs +19 -0
  195. package/esm2022/components/divider/divider.model.mjs +2 -0
  196. package/esm2022/components/dropdown/dropdown.component.mjs +244 -0
  197. package/esm2022/components/dropdown/dropdown.component.module.mjs +57 -0
  198. package/esm2022/components/dropdown/dropdown.model.mjs +2 -0
  199. package/esm2022/components/elevation-shadow/elevation-shadow.component.mjs +45 -0
  200. package/esm2022/components/elevation-shadow/elevation-shadow.component.module.mjs +18 -0
  201. package/esm2022/components/elevation-shadow/elevation-shadow.constant.mjs +9 -0
  202. package/esm2022/components/empty-state/empty-state.component.mjs +195 -0
  203. package/esm2022/components/empty-state/empty-state.component.module.mjs +21 -0
  204. package/esm2022/components/empty-state/empty-state.model.mjs +2 -0
  205. package/esm2022/components/field/field.component.mjs +409 -0
  206. package/esm2022/components/field/field.component.module.mjs +58 -0
  207. package/esm2022/components/field/field.model.mjs +2 -0
  208. package/esm2022/components/file-upload/file-upload.component.mjs +271 -0
  209. package/esm2022/components/file-upload/file-upload.component.module.mjs +40 -0
  210. package/esm2022/components/icon/icon.component.mjs +127 -0
  211. package/esm2022/components/icon/icon.component.module.mjs +21 -0
  212. package/esm2022/components/icon/icon.config.mjs +657 -0
  213. package/esm2022/components/icon/icon.model.mjs +2 -0
  214. package/esm2022/components/icon-label/icon-label.component.mjs +53 -0
  215. package/esm2022/components/icon-label/icon-label.component.module.mjs +20 -0
  216. package/esm2022/components/logo/logo.component.mjs +149 -0
  217. package/esm2022/components/logo/logo.component.module.mjs +18 -0
  218. package/esm2022/components/logo/logo.model.mjs +32 -0
  219. package/esm2022/components/navbar/mobile-navbar-side-sheet/mobile-navbar-side-sheet.component.mjs +75 -0
  220. package/esm2022/components/navbar/navbar.component.mjs +200 -0
  221. package/esm2022/components/navbar/navbar.component.module.mjs +67 -0
  222. package/esm2022/components/navbar/navbar.model.mjs +2 -0
  223. package/esm2022/components/overflow-menu/overflow-menu.component.mjs +73 -0
  224. package/esm2022/components/overflow-menu/overflow-menu.component.module.mjs +21 -0
  225. package/esm2022/components/overflow-menu/overflow-menu.model.mjs +2 -0
  226. package/esm2022/components/page-header/page-header.component.mjs +81 -0
  227. package/esm2022/components/page-header/page-header.component.module.mjs +20 -0
  228. package/esm2022/components/paginator/paginator.component.mjs +76 -0
  229. package/esm2022/components/paginator/paginator.component.module.mjs +19 -0
  230. package/esm2022/components/password-criteria/password.component.mjs +115 -0
  231. package/esm2022/components/password-criteria/password.component.module.mjs +39 -0
  232. package/esm2022/components/password-strength/password-strength.component.mjs +103 -0
  233. package/esm2022/components/password-strength/password-strength.component.module.mjs +21 -0
  234. package/esm2022/components/phone-input/join-strings.pipe.mjs +14 -0
  235. package/esm2022/components/phone-input/phone-input.component.mjs +363 -0
  236. package/esm2022/components/phone-input/phone-input.component.module.mjs +63 -0
  237. package/esm2022/components/phone-input/phone-input.model.mjs +2 -0
  238. package/esm2022/components/progress-bar/progress-bar.component.mjs +74 -0
  239. package/esm2022/components/progress-bar/progress-bar.component.module.mjs +20 -0
  240. package/esm2022/components/radial-progress/radial-progress.component.mjs +106 -0
  241. package/esm2022/components/radial-progress/radial-progress.component.module.mjs +20 -0
  242. package/esm2022/components/radial-progress/radial-progress.model.mjs +11 -0
  243. package/esm2022/components/radio-button/radio-button.component.mjs +176 -0
  244. package/esm2022/components/radio-button/radio-button.component.module.mjs +21 -0
  245. package/esm2022/components/radio-button/radio-button.model.mjs +2 -0
  246. package/esm2022/components/rating/half-star.pipe.mjs +23 -0
  247. package/esm2022/components/rating/rating.component.mjs +92 -0
  248. package/esm2022/components/rating/rating.component.module.mjs +20 -0
  249. package/esm2022/components/scale/scale.component.mjs +58 -0
  250. package/esm2022/components/scale/scale.component.module.mjs +18 -0
  251. package/esm2022/components/segmented-bar/segmented-bar.component.mjs +75 -0
  252. package/esm2022/components/segmented-bar/segmented-bar.component.module.mjs +20 -0
  253. package/esm2022/components/segmented-bar/segmented-bar.model.mjs +2 -0
  254. package/esm2022/components/segmented-button/segmented-button.component.mjs +66 -0
  255. package/esm2022/components/segmented-button/segmented-button.component.module.mjs +32 -0
  256. package/esm2022/components/segmented-button/segmented-button.model.mjs +2 -0
  257. package/esm2022/components/side-sheet/side-sheet.component.mjs +109 -0
  258. package/esm2022/components/side-sheet/side-sheet.component.module.mjs +43 -0
  259. package/esm2022/components/side-sheet/side-sheet.model.mjs +2 -0
  260. package/esm2022/components/side-sheet/side-sheet.service.mjs +31 -0
  261. package/esm2022/components/skeleton/skeleton.component.mjs +71 -0
  262. package/esm2022/components/skeleton/skeleton.model.mjs +2 -0
  263. package/esm2022/components/slider/slider.component.mjs +191 -0
  264. package/esm2022/components/slider/slider.component.module.mjs +43 -0
  265. package/esm2022/components/slider/slider.model.mjs +2 -0
  266. package/esm2022/components/snackbar/snackbar.component.mjs +208 -0
  267. package/esm2022/components/snackbar/snackbar.component.module.mjs +24 -0
  268. package/esm2022/components/snackbar/snackbar.model.mjs +2 -0
  269. package/esm2022/components/snackbar/snackbar.service.mjs +41 -0
  270. package/esm2022/components/spinner/spinner.component.mjs +62 -0
  271. package/esm2022/components/spinner/spinner.model.mjs +2 -0
  272. package/esm2022/components/spinner/spinner.module.mjs +18 -0
  273. package/esm2022/components/step/step.component.mjs +110 -0
  274. package/esm2022/components/step/step.component.module.mjs +19 -0
  275. package/esm2022/components/stepper/stepper.component.mjs +124 -0
  276. package/esm2022/components/stepper/stepper.component.module.mjs +44 -0
  277. package/esm2022/components/stepper/stepper.model.mjs +2 -0
  278. package/esm2022/components/table/sentence-case.pipe.mjs +19 -0
  279. package/esm2022/components/table/table.component.mjs +226 -0
  280. package/esm2022/components/table/table.component.module.mjs +61 -0
  281. package/esm2022/components/table/table.model.mjs +13 -0
  282. package/esm2022/components/tabs/tab.directive.mjs +42 -0
  283. package/esm2022/components/tabs/tabs.component.mjs +99 -0
  284. package/esm2022/components/tabs/tabs.component.module.mjs +33 -0
  285. package/esm2022/components/tabs/tabs.model.mjs +2 -0
  286. package/esm2022/components/tag/tag.component.mjs +201 -0
  287. package/esm2022/components/tag/tag.component.module.mjs +23 -0
  288. package/esm2022/components/tag/tag.model.mjs +2 -0
  289. package/esm2022/components/toggle/toggle.component.mjs +169 -0
  290. package/esm2022/components/toggle/toggle.component.module.mjs +22 -0
  291. package/esm2022/components/toggle/toggle.model.mjs +2 -0
  292. package/esm2022/components/tooltip/tooltip.component.mjs +79 -0
  293. package/esm2022/components/tooltip/tooltip.component.module.mjs +18 -0
  294. package/esm2022/components/tooltip/tooltip.model.mjs +8 -0
  295. package/esm2022/components/validation-error/validation-error.component.mjs +59 -0
  296. package/esm2022/components/validation-error/validation-error.model.mjs +2 -0
  297. package/esm2022/components/validation-error/validation-error.module.mjs +20 -0
  298. package/esm2022/directives/digits-only.directive.mjs +52 -0
  299. package/esm2022/directives/drag-drop.directive.mjs +55 -0
  300. package/esm2022/directives/ellipse-text.directive.mjs +37 -0
  301. package/esm2022/directives/select-text.directive.mjs +41 -0
  302. package/esm2022/directives/step-line-width.directive.mjs +38 -0
  303. package/esm2022/models/application-theme.model.mjs +2 -0
  304. package/esm2022/models/colors.model.mjs +78 -0
  305. package/esm2022/models/screen-breakpoints.model.mjs +6 -0
  306. package/esm2022/pipes/data-property-getter.mjs +33 -0
  307. package/esm2022/pipes/has-validation-error.pipe.mjs +27 -0
  308. package/esm2022/pipes/memoize-func.pipe.mjs +39 -0
  309. package/esm2022/pipes/name-initials.pipe.mjs +25 -0
  310. package/esm2022/pipes/ui-translate.pipe.mjs +76 -0
  311. package/esm2022/providers/is-mobile.mjs +11 -0
  312. package/esm2022/public-api.mjs +184 -0
  313. package/esm2022/testgorilla-tgo-ui.mjs +5 -0
  314. package/esm2022/utils/alert-bar.model.mjs +2 -0
  315. package/esm2022/utils/alert-bars.utils.mjs +33 -0
  316. package/esm2022/utils/autocomplete-utils.mjs +61 -0
  317. package/esm2022/utils/color-contrast.mjs +131 -0
  318. package/esm2022/utils/localization/language.model.mjs +16 -0
  319. package/esm2022/utils/localization/language.service.mjs +33 -0
  320. package/esm2022/utils/table.utils.mjs +19 -0
  321. package/fesm2022/testgorilla-tgo-ui.mjs +11206 -0
  322. package/fesm2022/testgorilla-tgo-ui.mjs.map +1 -0
  323. package/index.d.ts +5 -0
  324. package/models/colors.model.d.ts +63 -0
  325. package/models/screen-breakpoints.model.d.ts +4 -0
  326. package/package.json +17 -68
  327. package/pipes/data-property-getter.d.ts +8 -0
  328. package/pipes/has-validation-error.pipe.d.ts +15 -0
  329. package/pipes/memoize-func.pipe.d.ts +26 -0
  330. package/pipes/name-initials.pipe.d.ts +7 -0
  331. package/pipes/ui-translate.pipe.d.ts +28 -0
  332. package/providers/is-mobile.d.ts +2 -0
  333. package/public-api.d.ts +130 -0
  334. package/utils/alert-bars.utils.d.ts +7 -0
  335. package/utils/autocomplete-utils.d.ts +11 -0
  336. package/utils/color-contrast.d.ts +28 -0
  337. package/utils/localization/language.model.d.ts +14 -0
  338. package/utils/localization/language.service.d.ts +16 -0
  339. package/utils/table.utils.d.ts +6 -0
  340. package/.circleci/config.yml +0 -112
  341. package/.editorconfig +0 -16
  342. package/.eslintignore +0 -5
  343. package/.eslintrc.js +0 -301
  344. package/.github/README.md +0 -81
  345. package/.husky/pre-commit +0 -4
  346. package/.prettierignore +0 -2
  347. package/.prettierrc +0 -13
  348. package/.storybook/main.js +0 -25
  349. package/.storybook/preview-head.html +0 -10
  350. package/.storybook/preview.js +0 -107
  351. package/.storybook/tsconfig.json +0 -24
  352. package/.storybook/typings.d.ts +0 -4
  353. package/.stylelintrc.json +0 -30
  354. package/.vscode/extensions.json +0 -4
  355. package/.vscode/launch.json +0 -20
  356. package/.vscode/tasks.json +0 -42
  357. package/CHANGELOG.md +0 -149
  358. package/angular.json +0 -174
  359. package/e2e/bannerAction.spec.ts +0 -46
  360. package/e2e/bannerAction.spec.ts-snapshots/id-alert-bars-banner-action--default-chromium-darwin.png +0 -0
  361. package/e2e/bannerAction.spec.ts-snapshots/id-alert-bars-banner-action--default-chromium-linux.png +0 -0
  362. package/e2e/bannerAction.spec.ts-snapshots/id-alert-bars-banner-action--error-chromium-darwin.png +0 -0
  363. package/e2e/bannerAction.spec.ts-snapshots/id-alert-bars-banner-action--error-chromium-linux.png +0 -0
  364. package/e2e/bannerAction.spec.ts-snapshots/id-alert-bars-banner-action--info-chromium-darwin.png +0 -0
  365. package/e2e/bannerAction.spec.ts-snapshots/id-alert-bars-banner-action--info-chromium-linux.png +0 -0
  366. package/e2e/bannerAction.spec.ts-snapshots/id-alert-bars-banner-action--warning-chromium-darwin.png +0 -0
  367. package/e2e/bannerAction.spec.ts-snapshots/id-alert-bars-banner-action--warning-chromium-linux.png +0 -0
  368. package/e2e/bannerAction.spec.ts-snapshots/id-alert-bars-banner-action--with-relative-width-chromium-darwin.png +0 -0
  369. package/e2e/bannerAction.spec.ts-snapshots/id-alert-bars-banner-action--with-relative-width-chromium-linux.png +0 -0
  370. package/e2e/bannerAction.spec.ts-snapshots/id-bars-banner-action--default-chromium-linux.png +0 -0
  371. package/e2e/bannerAction.spec.ts-snapshots/id-bars-banner-action--error-chromium-linux.png +0 -0
  372. package/e2e/bannerAction.spec.ts-snapshots/id-bars-banner-action--info-chromium-linux.png +0 -0
  373. package/e2e/bannerAction.spec.ts-snapshots/id-bars-banner-action--warning-chromium-linux.png +0 -0
  374. package/e2e/bannerAction.spec.ts-snapshots/id-bars-banner-action--with-relative-width-chromium-linux.png +0 -0
  375. package/e2e/button.spec.ts +0 -53
  376. package/e2e/button.spec.ts-snapshots/id-button--basic-chromium-linux.png +0 -0
  377. package/e2e/button.spec.ts-snapshots/id-button--button-as-link-chromium-linux.png +0 -0
  378. package/e2e/button.spec.ts-snapshots/id-button--button-only-label-chromium-linux.png +0 -0
  379. package/e2e/button.spec.ts-snapshots/id-button--disabled-chromium-linux.png +0 -0
  380. package/e2e/button.spec.ts-snapshots/id-button--full-width-chromium-linux.png +0 -0
  381. package/e2e/button.spec.ts-snapshots/id-button--label-icon-left-chromium-linux.png +0 -0
  382. package/e2e/button.spec.ts-snapshots/id-button--label-icon-right-chromium-linux.png +0 -0
  383. package/e2e/button.spec.ts-snapshots/id-button--loading-chromium-linux.png +0 -0
  384. package/e2e/button.spec.ts-snapshots/id-button--menu-cell-chromium-linux.png +0 -0
  385. package/e2e/button.spec.ts-snapshots/id-button--menu-trigger-chromium-linux.png +0 -0
  386. package/e2e/button.spec.ts-snapshots/id-button--only-icon-chromium-linux.png +0 -0
  387. package/e2e/button.spec.ts-snapshots/id-button--small-chromium-linux.png +0 -0
  388. package/e2e/card.spec.ts +0 -43
  389. package/e2e/card.spec.ts-snapshots/id-card--default-chromium-linux.png +0 -0
  390. package/e2e/colors.spec.ts +0 -47
  391. package/e2e/colors.spec.ts-snapshots/id-foundations-colors--greysacale-chromium-linux.png +0 -0
  392. package/e2e/colors.spec.ts-snapshots/id-foundations-colors--primary-error-chromium-linux.png +0 -0
  393. package/e2e/colors.spec.ts-snapshots/id-foundations-colors--primary-petrol-chromium-linux.png +0 -0
  394. package/e2e/colors.spec.ts-snapshots/id-foundations-colors--primary-teal-chromium-linux.png +0 -0
  395. package/e2e/colors.spec.ts-snapshots/id-foundations-colors--primary-warning-chromium-linux.png +0 -0
  396. package/e2e/colors.spec.ts-snapshots/id-foundations-colors--secondary-colors-chromium-linux.png +0 -0
  397. package/e2e/createAccount.spec.ts +0 -102
  398. package/e2e/createAccount.spec.ts-snapshots/id-create-account--default-chromium-linux.png +0 -0
  399. package/e2e/createAccount.spec.ts-snapshots/id-deprecated-create-account--default-chromium-linux.png +0 -0
  400. package/e2e/createAccount.spec.ts-snapshots/register-with-errors-chromium-linux.png +0 -0
  401. package/e2e/createAccount.spec.ts-snapshots/register-with-texts-chromium-linux.png +0 -0
  402. package/e2e/createPassword.spec.ts +0 -94
  403. package/e2e/createPassword.spec.ts-snapshots/createPassword-with-errors-chromium-linux.png +0 -0
  404. package/e2e/createPassword.spec.ts-snapshots/createPassword-with-texts-chromium-linux.png +0 -0
  405. package/e2e/createPassword.spec.ts-snapshots/id-createpassword--default-args-viewMode-story-chromium-linux.png +0 -0
  406. package/e2e/createPassword.spec.ts-snapshots/id-createpassword--default-chromium-linux.png +0 -0
  407. package/e2e/createPassword.spec.ts-snapshots/id-deprecated-create-password--default-chromium-linux.png +0 -0
  408. package/e2e/dialog.spec.ts +0 -43
  409. package/e2e/dialog.spec.ts-snapshots/id-dialog-dialog--default-chromium-darwin.png +0 -0
  410. package/e2e/dialog.spec.ts-snapshots/id-dialog-dialog--default-chromium-linux.png +0 -0
  411. package/e2e/field.spec.ts +0 -51
  412. package/e2e/field.spec.ts-snapshots/id-forms-field--email-chromium-linux.png +0 -0
  413. package/e2e/field.spec.ts-snapshots/id-forms-field--number-type-chromium-linux.png +0 -0
  414. package/e2e/field.spec.ts-snapshots/id-forms-field--password-chromium-linux.png +0 -0
  415. package/e2e/field.spec.ts-snapshots/id-forms-field--search-chromium-linux.png +0 -0
  416. package/e2e/field.spec.ts-snapshots/id-forms-field--tel-chromium-linux.png +0 -0
  417. package/e2e/field.spec.ts-snapshots/id-forms-field--text-chromium-linux.png +0 -0
  418. package/e2e/field.spec.ts-snapshots/id-forms-field--with-disable-chromium-linux.png +0 -0
  419. package/e2e/field.spec.ts-snapshots/id-forms-field--with-errors-chromium-linux.png +0 -0
  420. package/e2e/field.spec.ts-snapshots/id-forms-field--with-require-chromium-linux.png +0 -0
  421. package/e2e/field.spec.ts-snapshots/id-forms-field--without-label-chromium-linux.png +0 -0
  422. package/e2e/forgotPassword.spec.ts +0 -94
  423. package/e2e/forgotPassword.spec.ts-snapshots/forgotPassword-with-errors-chromium-linux.png +0 -0
  424. package/e2e/forgotPassword.spec.ts-snapshots/forgotPassword-with-texts-chromium-linux.png +0 -0
  425. package/e2e/forgotPassword.spec.ts-snapshots/id-deprecated-forgot-password--default-chromium-linux.png +0 -0
  426. package/e2e/forgotPassword.spec.ts-snapshots/id-forgotpassword--default-args-viewMode-story-chromium-linux.png +0 -0
  427. package/e2e/forgotPassword.spec.ts-snapshots/id-forgotpassword--default-chromium-linux.png +0 -0
  428. package/e2e/label.spec.ts +0 -47
  429. package/e2e/label.spec.ts-snapshots/id-label--big-chromium-linux.png +0 -0
  430. package/e2e/label.spec.ts-snapshots/id-label--huge-chromium-linux.png +0 -0
  431. package/e2e/label.spec.ts-snapshots/id-label--large-chromium-linux.png +0 -0
  432. package/e2e/label.spec.ts-snapshots/id-label--medium-chromium-linux.png +0 -0
  433. package/e2e/label.spec.ts-snapshots/id-label--small-chromium-linux.png +0 -0
  434. package/e2e/label.spec.ts-snapshots/id-under-review-label--big-chromium-linux.png +0 -0
  435. package/e2e/label.spec.ts-snapshots/id-under-review-label--huge-chromium-linux.png +0 -0
  436. package/e2e/label.spec.ts-snapshots/id-under-review-label--large-chromium-linux.png +0 -0
  437. package/e2e/label.spec.ts-snapshots/id-under-review-label--medium-chromium-linux.png +0 -0
  438. package/e2e/label.spec.ts-snapshots/id-under-review-label--small-chromium-linux.png +0 -0
  439. package/e2e/login.spec.ts +0 -102
  440. package/e2e/login.spec.ts-snapshots/id-deprecated-login--default-chromium-linux.png +0 -0
  441. package/e2e/login.spec.ts-snapshots/id-login--default-chromium-linux.png +0 -0
  442. package/e2e/login.spec.ts-snapshots/login-with-errors-chromium-linux.png +0 -0
  443. package/e2e/login.spec.ts-snapshots/login-with-texts-chromium-linux.png +0 -0
  444. package/e2e/logo.spec.ts +0 -45
  445. package/e2e/logo.spec.ts-snapshots/id-logo--default-chromium-linux.png +0 -0
  446. package/e2e/logo.spec.ts-snapshots/id-logo--powered-by-chromium-linux.png +0 -0
  447. package/e2e/logo.spec.ts-snapshots/id-logo--reverse-chromium-linux.png +0 -0
  448. package/e2e/navbar.spec.ts +0 -42
  449. package/e2e/navbar.spec.ts-snapshots/id-navbar--default-chromium-linux.png +0 -0
  450. package/e2e/navigation.spec.ts +0 -43
  451. package/e2e/navigation.spec.ts-snapshots/id-navigation--default-chromium-linux.png +0 -0
  452. package/e2e/paginator.spec.ts +0 -42
  453. package/e2e/paginator.spec.ts-snapshots/id-paginator--default-chromium-linux.png +0 -0
  454. package/e2e/progressBar.spec.ts +0 -42
  455. package/e2e/progressBar.spec.ts-snapshots/id-progressbar--determinate-chromium-linux.png +0 -0
  456. package/e2e/table.spec.ts +0 -47
  457. package/e2e/table.spec.ts-snapshots/id-deprecated-table--default-chromium-linux.png +0 -0
  458. package/e2e/table.spec.ts-snapshots/id-table--default-chromium-darwin.png +0 -0
  459. package/e2e/table.spec.ts-snapshots/id-table--default-chromium-linux.png +0 -0
  460. package/e2e/table.spec.ts-snapshots/id-table--expandable-chromium-darwin.png +0 -0
  461. package/e2e/table.spec.ts-snapshots/id-table--expandable-chromium-linux.png +0 -0
  462. package/e2e/typography.spec.ts +0 -42
  463. package/e2e/typography.spec.ts-snapshots/id-foundations-typography--page-args-viewMode-story-chromium-linux.png +0 -0
  464. package/globalSetup.js +0 -9
  465. package/jest.config.js +0 -69
  466. package/ng-package.json +0 -9
  467. package/projects/client/src/app/app.component.html +0 -1
  468. package/projects/client/src/app/app.component.scss +0 -8
  469. package/projects/client/src/app/app.component.spec.ts +0 -27
  470. package/projects/client/src/app/app.component.ts +0 -37
  471. package/projects/client/src/app/app.routes.ts +0 -11
  472. package/projects/client/src/app/components/avatar/avatar.component.html +0 -10
  473. package/projects/client/src/app/components/avatar/avatar.component.scss +0 -0
  474. package/projects/client/src/app/components/avatar/avatar.component.ts +0 -25
  475. package/projects/client/src/app/components/badge/badge.component.html +0 -11
  476. package/projects/client/src/app/components/badge/badge.component.scss +0 -0
  477. package/projects/client/src/app/components/badge/badge.component.ts +0 -22
  478. package/projects/client/src/app/components/checkbox/checkbox.component.html +0 -13
  479. package/projects/client/src/app/components/checkbox/checkbox.component.scss +0 -0
  480. package/projects/client/src/app/components/checkbox/checkbox.component.ts +0 -23
  481. package/projects/client/src/app/components/icon/icon.component.html +0 -10
  482. package/projects/client/src/app/components/icon/icon.component.scss +0 -0
  483. package/projects/client/src/app/components/icon/icon.component.ts +0 -19
  484. package/projects/client/src/assets/.gitkeep +0 -0
  485. package/projects/client/src/assets/Avatar.png +0 -0
  486. package/projects/client/src/favicon.ico +0 -0
  487. package/projects/client/src/index.html +0 -13
  488. package/projects/client/src/main.ts +0 -15
  489. package/projects/client/src/styles.scss +0 -10
  490. package/projects/client/tsconfig.app.json +0 -14
  491. package/projects/client/tsconfig.spec.json +0 -14
  492. package/projects/tgo-canopy-ui/__mocks__/alert-bar.mock.ts +0 -18
  493. package/projects/tgo-canopy-ui/__mocks__/button.mock.ts +0 -34
  494. package/projects/tgo-canopy-ui/__mocks__/field.mock.ts +0 -10
  495. package/projects/tgo-canopy-ui/__mocks__/icon.mock.ts +0 -14
  496. package/projects/tgo-canopy-ui/__mocks__/tag.mock.ts +0 -9
  497. package/projects/tgo-canopy-ui/assets/.gitkeep +0 -0
  498. package/projects/tgo-canopy-ui/components/accordion/accordion.component.html +0 -35
  499. package/projects/tgo-canopy-ui/components/accordion/accordion.component.module.ts +0 -26
  500. package/projects/tgo-canopy-ui/components/accordion/accordion.component.scss +0 -284
  501. package/projects/tgo-canopy-ui/components/accordion/accordion.component.spec.ts +0 -37
  502. package/projects/tgo-canopy-ui/components/accordion/accordion.component.stories.ts +0 -176
  503. package/projects/tgo-canopy-ui/components/accordion/accordion.component.ts +0 -97
  504. package/projects/tgo-canopy-ui/components/alert-banner/__snapshots__/alert-banner.component.spec.ts.snap +0 -42
  505. package/projects/tgo-canopy-ui/components/alert-banner/alert-banner.component.html +0 -22
  506. package/projects/tgo-canopy-ui/components/alert-banner/alert-banner.component.module.ts +0 -12
  507. package/projects/tgo-canopy-ui/components/alert-banner/alert-banner.component.scss +0 -39
  508. package/projects/tgo-canopy-ui/components/alert-banner/alert-banner.component.spec.ts +0 -177
  509. package/projects/tgo-canopy-ui/components/alert-banner/alert-banner.component.stories.ts +0 -100
  510. package/projects/tgo-canopy-ui/components/alert-banner/alert-banner.component.ts +0 -130
  511. package/projects/tgo-canopy-ui/components/autocomplete/autocomplete.component.html +0 -219
  512. package/projects/tgo-canopy-ui/components/autocomplete/autocomplete.component.module.ts +0 -40
  513. package/projects/tgo-canopy-ui/components/autocomplete/autocomplete.component.scss +0 -283
  514. package/projects/tgo-canopy-ui/components/autocomplete/autocomplete.component.spec.ts +0 -238
  515. package/projects/tgo-canopy-ui/components/autocomplete/autocomplete.component.stories.ts +0 -135
  516. package/projects/tgo-canopy-ui/components/autocomplete/autocomplete.component.ts +0 -541
  517. package/projects/tgo-canopy-ui/components/autocomplete/autocomplete.model.ts +0 -22
  518. package/projects/tgo-canopy-ui/components/autocomplete/includes.pipe.spec.ts +0 -33
  519. package/projects/tgo-canopy-ui/components/autocomplete/includes.pipe.ts +0 -15
  520. package/projects/tgo-canopy-ui/components/autocomplete/transform-Item.pipe.ts +0 -21
  521. package/projects/tgo-canopy-ui/components/autocomplete/transform-item.pipe.spec.ts +0 -24
  522. package/projects/tgo-canopy-ui/components/avatar/avatar.component.html +0 -23
  523. package/projects/tgo-canopy-ui/components/avatar/avatar.component.module.ts +0 -14
  524. package/projects/tgo-canopy-ui/components/avatar/avatar.component.scss +0 -75
  525. package/projects/tgo-canopy-ui/components/avatar/avatar.component.spec.ts +0 -39
  526. package/projects/tgo-canopy-ui/components/avatar/avatar.component.stories.ts +0 -111
  527. package/projects/tgo-canopy-ui/components/avatar/avatar.component.ts +0 -76
  528. package/projects/tgo-canopy-ui/components/avatar/avatar.model.ts +0 -13
  529. package/projects/tgo-canopy-ui/components/badge/badge.component.html +0 -10
  530. package/projects/tgo-canopy-ui/components/badge/badge.component.module.ts +0 -11
  531. package/projects/tgo-canopy-ui/components/badge/badge.component.scss +0 -147
  532. package/projects/tgo-canopy-ui/components/badge/badge.component.spec.ts +0 -57
  533. package/projects/tgo-canopy-ui/components/badge/badge.component.stories.ts +0 -61
  534. package/projects/tgo-canopy-ui/components/badge/badge.component.ts +0 -99
  535. package/projects/tgo-canopy-ui/components/badge/badge.model.ts +0 -40
  536. package/projects/tgo-canopy-ui/components/button/__snapshots__/button.component.spec.ts.snap +0 -64
  537. package/projects/tgo-canopy-ui/components/button/button.component.html +0 -80
  538. package/projects/tgo-canopy-ui/components/button/button.component.module.ts +0 -23
  539. package/projects/tgo-canopy-ui/components/button/button.component.scss +0 -1012
  540. package/projects/tgo-canopy-ui/components/button/button.component.spec.ts +0 -274
  541. package/projects/tgo-canopy-ui/components/button/button.component.stories.ts +0 -455
  542. package/projects/tgo-canopy-ui/components/button/button.component.ts +0 -393
  543. package/projects/tgo-canopy-ui/components/button/button.model.ts +0 -28
  544. package/projects/tgo-canopy-ui/components/card/card.component.html +0 -9
  545. package/projects/tgo-canopy-ui/components/card/card.component.module.ts +0 -11
  546. package/projects/tgo-canopy-ui/components/card/card.component.scss +0 -91
  547. package/projects/tgo-canopy-ui/components/card/card.component.spec.ts +0 -76
  548. package/projects/tgo-canopy-ui/components/card/card.component.stories.ts +0 -88
  549. package/projects/tgo-canopy-ui/components/card/card.component.ts +0 -72
  550. package/projects/tgo-canopy-ui/components/checkbox/checkbox.component.html +0 -23
  551. package/projects/tgo-canopy-ui/components/checkbox/checkbox.component.module.ts +0 -17
  552. package/projects/tgo-canopy-ui/components/checkbox/checkbox.component.scss +0 -233
  553. package/projects/tgo-canopy-ui/components/checkbox/checkbox.component.spec.ts +0 -193
  554. package/projects/tgo-canopy-ui/components/checkbox/checkbox.component.stories.ts +0 -122
  555. package/projects/tgo-canopy-ui/components/checkbox/checkbox.component.ts +0 -242
  556. package/projects/tgo-canopy-ui/components/confirm-dialog/confirm-dialog.component.html +0 -16
  557. package/projects/tgo-canopy-ui/components/confirm-dialog/confirm-dialog.component.module.ts +0 -18
  558. package/projects/tgo-canopy-ui/components/confirm-dialog/confirm-dialog.component.scss +0 -3
  559. package/projects/tgo-canopy-ui/components/confirm-dialog/confirm-dialog.component.spec.ts +0 -42
  560. package/projects/tgo-canopy-ui/components/confirm-dialog/confirm-dialog.component.ts +0 -43
  561. package/projects/tgo-canopy-ui/components/confirm-dialog/confirm-dialog.model.ts +0 -10
  562. package/projects/tgo-canopy-ui/components/confirm-dialog/confirm-dialog.stories.ts +0 -37
  563. package/projects/tgo-canopy-ui/components/datepicker/__snapshots__/datepicker.component.spec.ts.snap +0 -56
  564. package/projects/tgo-canopy-ui/components/datepicker/datepicker.component.html +0 -98
  565. package/projects/tgo-canopy-ui/components/datepicker/datepicker.component.module.ts +0 -33
  566. package/projects/tgo-canopy-ui/components/datepicker/datepicker.component.scss +0 -195
  567. package/projects/tgo-canopy-ui/components/datepicker/datepicker.component.spec.ts +0 -249
  568. package/projects/tgo-canopy-ui/components/datepicker/datepicker.component.stories.ts +0 -138
  569. package/projects/tgo-canopy-ui/components/datepicker/datepicker.component.ts +0 -358
  570. package/projects/tgo-canopy-ui/components/datepicker/no-date-format.directive.spec.ts +0 -35
  571. package/projects/tgo-canopy-ui/components/datepicker/no-date-format.directive.ts +0 -43
  572. package/projects/tgo-canopy-ui/components/deprecated-paginator/deprecated-paginator.component.html +0 -5
  573. package/projects/tgo-canopy-ui/components/deprecated-paginator/deprecated-paginator.component.module.ts +0 -12
  574. package/projects/tgo-canopy-ui/components/deprecated-paginator/deprecated-paginator.component.scss +0 -32
  575. package/projects/tgo-canopy-ui/components/deprecated-paginator/deprecated-paginator.component.stories.ts +0 -31
  576. package/projects/tgo-canopy-ui/components/deprecated-paginator/deprecated-paginator.component.ts +0 -54
  577. package/projects/tgo-canopy-ui/components/deprecated-table/deprecated-table.component.html +0 -113
  578. package/projects/tgo-canopy-ui/components/deprecated-table/deprecated-table.component.module.ts +0 -25
  579. package/projects/tgo-canopy-ui/components/deprecated-table/deprecated-table.component.scss +0 -188
  580. package/projects/tgo-canopy-ui/components/deprecated-table/deprecated-table.component.stories.ts +0 -620
  581. package/projects/tgo-canopy-ui/components/deprecated-table/deprecated-table.component.ts +0 -160
  582. package/projects/tgo-canopy-ui/components/deprecated-table/deprecated-table.model.ts +0 -51
  583. package/projects/tgo-canopy-ui/components/deprecated-table/directives/dynamic-component.directive.ts +0 -41
  584. package/projects/tgo-canopy-ui/components/dialog/__snapshots__/dialog.component.spec.ts.snap +0 -51
  585. package/projects/tgo-canopy-ui/components/dialog/dialog.component.html +0 -41
  586. package/projects/tgo-canopy-ui/components/dialog/dialog.component.module.ts +0 -15
  587. package/projects/tgo-canopy-ui/components/dialog/dialog.component.scss +0 -133
  588. package/projects/tgo-canopy-ui/components/dialog/dialog.component.spec.ts +0 -230
  589. package/projects/tgo-canopy-ui/components/dialog/dialog.component.stories.ts +0 -60
  590. package/projects/tgo-canopy-ui/components/dialog/dialog.component.ts +0 -184
  591. package/projects/tgo-canopy-ui/components/dialog/dialog.service.spec.ts +0 -55
  592. package/projects/tgo-canopy-ui/components/dialog/dialog.service.ts +0 -33
  593. package/projects/tgo-canopy-ui/components/dialog-custom/__snapshots__/dialog-custom.component.spec.ts.snap +0 -28
  594. package/projects/tgo-canopy-ui/components/dialog-custom/dialog-custom +0 -0
  595. package/projects/tgo-canopy-ui/components/dialog-custom/dialog-custom.component.html +0 -38
  596. package/projects/tgo-canopy-ui/components/dialog-custom/dialog-custom.component.mdx +0 -38
  597. package/projects/tgo-canopy-ui/components/dialog-custom/dialog-custom.component.module.ts +0 -11
  598. package/projects/tgo-canopy-ui/components/dialog-custom/dialog-custom.component.scss +0 -0
  599. package/projects/tgo-canopy-ui/components/dialog-custom/dialog-custom.component.spec.ts +0 -56
  600. package/projects/tgo-canopy-ui/components/dialog-custom/dialog-custom.component.stories.ts +0 -27
  601. package/projects/tgo-canopy-ui/components/dialog-custom/dialog-custom.component.ts +0 -45
  602. package/projects/tgo-canopy-ui/components/dialog-demo/__snapshots__/dialog-demo.component.spec.ts.snap +0 -21
  603. package/projects/tgo-canopy-ui/components/dialog-demo/dialog-demo.component.html +0 -4
  604. package/projects/tgo-canopy-ui/components/dialog-demo/dialog-demo.component.mdx +0 -28
  605. package/projects/tgo-canopy-ui/components/dialog-demo/dialog-demo.component.module.ts +0 -15
  606. package/projects/tgo-canopy-ui/components/dialog-demo/dialog-demo.component.scss +0 -12
  607. package/projects/tgo-canopy-ui/components/dialog-demo/dialog-demo.component.spec.ts +0 -58
  608. package/projects/tgo-canopy-ui/components/dialog-demo/dialog-demo.component.stories.ts +0 -30
  609. package/projects/tgo-canopy-ui/components/dialog-demo/dialog-demo.component.ts +0 -33
  610. package/projects/tgo-canopy-ui/components/divider/divider.component.html +0 -13
  611. package/projects/tgo-canopy-ui/components/divider/divider.component.module.ts +0 -11
  612. package/projects/tgo-canopy-ui/components/divider/divider.component.scss +0 -57
  613. package/projects/tgo-canopy-ui/components/divider/divider.component.spec.ts +0 -21
  614. package/projects/tgo-canopy-ui/components/divider/divider.component.stories.ts +0 -48
  615. package/projects/tgo-canopy-ui/components/divider/divider.component.ts +0 -54
  616. package/projects/tgo-canopy-ui/components/dropdown/dropdown.component.html +0 -43
  617. package/projects/tgo-canopy-ui/components/dropdown/dropdown.component.module.ts +0 -31
  618. package/projects/tgo-canopy-ui/components/dropdown/dropdown.component.scss +0 -237
  619. package/projects/tgo-canopy-ui/components/dropdown/dropdown.component.spec.ts +0 -104
  620. package/projects/tgo-canopy-ui/components/dropdown/dropdown.component.stories.ts +0 -248
  621. package/projects/tgo-canopy-ui/components/dropdown/dropdown.component.ts +0 -264
  622. package/projects/tgo-canopy-ui/components/dropdown/dropdown.model.ts +0 -5
  623. package/projects/tgo-canopy-ui/components/elevation-shadow/elevation-shadow.component.html +0 -3
  624. package/projects/tgo-canopy-ui/components/elevation-shadow/elevation-shadow.component.module.ts +0 -10
  625. package/projects/tgo-canopy-ui/components/elevation-shadow/elevation-shadow.component.scss +0 -41
  626. package/projects/tgo-canopy-ui/components/elevation-shadow/elevation-shadow.component.spec.ts +0 -39
  627. package/projects/tgo-canopy-ui/components/elevation-shadow/elevation-shadow.component.stories.ts +0 -59
  628. package/projects/tgo-canopy-ui/components/elevation-shadow/elevation-shadow.component.ts +0 -38
  629. package/projects/tgo-canopy-ui/components/elevation-shadow/elevation-shadow.constant.ts +0 -9
  630. package/projects/tgo-canopy-ui/components/empty-state/empty-state.component.html +0 -25
  631. package/projects/tgo-canopy-ui/components/empty-state/empty-state.component.module.ts +0 -13
  632. package/projects/tgo-canopy-ui/components/empty-state/empty-state.component.scss +0 -70
  633. package/projects/tgo-canopy-ui/components/empty-state/empty-state.component.spec.ts +0 -80
  634. package/projects/tgo-canopy-ui/components/empty-state/empty-state.component.stories.ts +0 -159
  635. package/projects/tgo-canopy-ui/components/empty-state/empty-state.component.ts +0 -174
  636. package/projects/tgo-canopy-ui/components/field/__snapshots__/field.component.spec.ts.snap +0 -55
  637. package/projects/tgo-canopy-ui/components/field/field.component.html +0 -105
  638. package/projects/tgo-canopy-ui/components/field/field.component.module.ts +0 -32
  639. package/projects/tgo-canopy-ui/components/field/field.component.scss +0 -492
  640. package/projects/tgo-canopy-ui/components/field/field.component.spec.ts +0 -268
  641. package/projects/tgo-canopy-ui/components/field/field.component.stories.ts +0 -212
  642. package/projects/tgo-canopy-ui/components/field/field.component.ts +0 -430
  643. package/projects/tgo-canopy-ui/components/field/field.model.ts +0 -11
  644. package/projects/tgo-canopy-ui/components/file-upload/__snapshots__/file-upload.component.spec.ts.snap +0 -59
  645. package/projects/tgo-canopy-ui/components/file-upload/file-upload.component.html +0 -94
  646. package/projects/tgo-canopy-ui/components/file-upload/file-upload.component.module.ts +0 -23
  647. package/projects/tgo-canopy-ui/components/file-upload/file-upload.component.scss +0 -182
  648. package/projects/tgo-canopy-ui/components/file-upload/file-upload.component.spec.ts +0 -142
  649. package/projects/tgo-canopy-ui/components/file-upload/file-upload.component.stories.ts +0 -96
  650. package/projects/tgo-canopy-ui/components/file-upload/file-upload.component.ts +0 -284
  651. package/projects/tgo-canopy-ui/components/file-upload-demo/file-upload-demo.component.html +0 -32
  652. package/projects/tgo-canopy-ui/components/file-upload-demo/file-upload-demo.component.module.ts +0 -14
  653. package/projects/tgo-canopy-ui/components/file-upload-demo/file-upload-demo.component.scss +0 -23
  654. package/projects/tgo-canopy-ui/components/file-upload-demo/file-upload-demo.component.spec.ts +0 -111
  655. package/projects/tgo-canopy-ui/components/file-upload-demo/file-upload-demo.component.stories.ts +0 -28
  656. package/projects/tgo-canopy-ui/components/file-upload-demo/file-upload-demo.component.ts +0 -74
  657. package/projects/tgo-canopy-ui/components/form-demo/form-demo-component.stories.ts +0 -41
  658. package/projects/tgo-canopy-ui/components/form-demo/form-demo.component.html +0 -210
  659. package/projects/tgo-canopy-ui/components/form-demo/form-demo.component.module.ts +0 -34
  660. package/projects/tgo-canopy-ui/components/form-demo/form-demo.component.scss +0 -59
  661. package/projects/tgo-canopy-ui/components/form-demo/form-demo.component.spec.ts +0 -127
  662. package/projects/tgo-canopy-ui/components/form-demo/form-demo.component.ts +0 -217
  663. package/projects/tgo-canopy-ui/components/form-demo/form-demo.model.ts +0 -6
  664. package/projects/tgo-canopy-ui/components/icon/__snapshots__/icon.component.spec.ts.snap +0 -20
  665. package/projects/tgo-canopy-ui/components/icon/icon.component.html +0 -1
  666. package/projects/tgo-canopy-ui/components/icon/icon.component.module.ts +0 -13
  667. package/projects/tgo-canopy-ui/components/icon/icon.component.scss +0 -66
  668. package/projects/tgo-canopy-ui/components/icon/icon.component.spec.ts +0 -150
  669. package/projects/tgo-canopy-ui/components/icon/icon.component.stories.ts +0 -68
  670. package/projects/tgo-canopy-ui/components/icon/icon.component.ts +0 -147
  671. package/projects/tgo-canopy-ui/components/icon/icon.config.ts +0 -658
  672. package/projects/tgo-canopy-ui/components/icon/icon.model.ts +0 -8
  673. package/projects/tgo-canopy-ui/components/icon-label/__snapshots__/icon-label.component.spec.ts.snap +0 -15
  674. package/projects/tgo-canopy-ui/components/icon-label/icon-label.component.html +0 -2
  675. package/projects/tgo-canopy-ui/components/icon-label/icon-label.component.module.ts +0 -12
  676. package/projects/tgo-canopy-ui/components/icon-label/icon-label.component.scss +0 -8
  677. package/projects/tgo-canopy-ui/components/icon-label/icon-label.component.spec.ts +0 -64
  678. package/projects/tgo-canopy-ui/components/icon-label/icon-label.component.stories.ts +0 -48
  679. package/projects/tgo-canopy-ui/components/icon-label/icon-label.component.ts +0 -53
  680. package/projects/tgo-canopy-ui/components/icons-showcase/__snapshots__/icons-showcase.component.spec.ts.snap +0 -3487
  681. package/projects/tgo-canopy-ui/components/icons-showcase/icons-showcase.component.html +0 -17
  682. package/projects/tgo-canopy-ui/components/icons-showcase/icons-showcase.component.module.ts +0 -12
  683. package/projects/tgo-canopy-ui/components/icons-showcase/icons-showcase.component.scss +0 -25
  684. package/projects/tgo-canopy-ui/components/icons-showcase/icons-showcase.component.spec.ts +0 -40
  685. package/projects/tgo-canopy-ui/components/icons-showcase/icons-showcase.component.stories.ts +0 -44
  686. package/projects/tgo-canopy-ui/components/icons-showcase/icons-showcase.component.ts +0 -43
  687. package/projects/tgo-canopy-ui/components/login/login.component.scss +0 -0
  688. package/projects/tgo-canopy-ui/components/logo/logo.component.html +0 -14
  689. package/projects/tgo-canopy-ui/components/logo/logo.component.module.ts +0 -10
  690. package/projects/tgo-canopy-ui/components/logo/logo.component.scss +0 -13
  691. package/projects/tgo-canopy-ui/components/logo/logo.component.spec.ts +0 -162
  692. package/projects/tgo-canopy-ui/components/logo/logo.component.stories.ts +0 -55
  693. package/projects/tgo-canopy-ui/components/logo/logo.component.ts +0 -148
  694. package/projects/tgo-canopy-ui/components/logo/logo.model.ts +0 -30
  695. package/projects/tgo-canopy-ui/components/navbar/mobile-navbar-side-sheet/mobile-navbar-side-sheet.component.html +0 -36
  696. package/projects/tgo-canopy-ui/components/navbar/mobile-navbar-side-sheet/mobile-navbar-side-sheet.component.scss +0 -70
  697. package/projects/tgo-canopy-ui/components/navbar/mobile-navbar-side-sheet/mobile-navbar-side-sheet.component.spec.ts +0 -58
  698. package/projects/tgo-canopy-ui/components/navbar/mobile-navbar-side-sheet/mobile-navbar-side-sheet.component.ts +0 -58
  699. package/projects/tgo-canopy-ui/components/navbar/navbar.component.html +0 -62
  700. package/projects/tgo-canopy-ui/components/navbar/navbar.component.module.ts +0 -36
  701. package/projects/tgo-canopy-ui/components/navbar/navbar.component.scss +0 -240
  702. package/projects/tgo-canopy-ui/components/navbar/navbar.component.spec.ts +0 -136
  703. package/projects/tgo-canopy-ui/components/navbar/navbar.component.stories.ts +0 -134
  704. package/projects/tgo-canopy-ui/components/navbar/navbar.component.ts +0 -206
  705. package/projects/tgo-canopy-ui/components/navbar/navbar.model.ts +0 -12
  706. package/projects/tgo-canopy-ui/components/overflow-menu/__snapshots__/overflow-menu.component.spec.ts.snap +0 -28
  707. package/projects/tgo-canopy-ui/components/overflow-menu/overflow-menu.component.html +0 -47
  708. package/projects/tgo-canopy-ui/components/overflow-menu/overflow-menu.component.module.ts +0 -13
  709. package/projects/tgo-canopy-ui/components/overflow-menu/overflow-menu.component.scss +0 -98
  710. package/projects/tgo-canopy-ui/components/overflow-menu/overflow-menu.component.spec.ts +0 -124
  711. package/projects/tgo-canopy-ui/components/overflow-menu/overflow-menu.component.stories.ts +0 -58
  712. package/projects/tgo-canopy-ui/components/overflow-menu/overflow-menu.component.ts +0 -88
  713. package/projects/tgo-canopy-ui/components/overflow-menu/overflow-menu.model.ts +0 -11
  714. package/projects/tgo-canopy-ui/components/page-header/page-header.component.html +0 -35
  715. package/projects/tgo-canopy-ui/components/page-header/page-header.component.module.ts +0 -12
  716. package/projects/tgo-canopy-ui/components/page-header/page-header.component.scss +0 -61
  717. package/projects/tgo-canopy-ui/components/page-header/page-header.component.spec.ts +0 -34
  718. package/projects/tgo-canopy-ui/components/page-header/page-header.component.stories.ts +0 -56
  719. package/projects/tgo-canopy-ui/components/page-header/page-header.component.ts +0 -64
  720. package/projects/tgo-canopy-ui/components/paginator/paginator.component.html +0 -10
  721. package/projects/tgo-canopy-ui/components/paginator/paginator.component.module.ts +0 -11
  722. package/projects/tgo-canopy-ui/components/paginator/paginator.component.scss +0 -159
  723. package/projects/tgo-canopy-ui/components/paginator/paginator.component.spec.ts +0 -29
  724. package/projects/tgo-canopy-ui/components/paginator/paginator.component.stories.ts +0 -36
  725. package/projects/tgo-canopy-ui/components/paginator/paginator.component.ts +0 -67
  726. package/projects/tgo-canopy-ui/components/password-criteria/password.component.html +0 -31
  727. package/projects/tgo-canopy-ui/components/password-criteria/password.component.module.ts +0 -22
  728. package/projects/tgo-canopy-ui/components/password-criteria/password.component.scss +0 -56
  729. package/projects/tgo-canopy-ui/components/password-criteria/password.component.spec.ts +0 -45
  730. package/projects/tgo-canopy-ui/components/password-criteria/password.component.stories.ts +0 -49
  731. package/projects/tgo-canopy-ui/components/password-criteria/password.component.ts +0 -106
  732. package/projects/tgo-canopy-ui/components/password-strength/password-strength.component.html +0 -19
  733. package/projects/tgo-canopy-ui/components/password-strength/password-strength.component.module.ts +0 -13
  734. package/projects/tgo-canopy-ui/components/password-strength/password-strength.component.scss +0 -54
  735. package/projects/tgo-canopy-ui/components/password-strength/password-strength.component.spec.ts +0 -40
  736. package/projects/tgo-canopy-ui/components/password-strength/password-strength.component.stories.ts +0 -50
  737. package/projects/tgo-canopy-ui/components/password-strength/password-strength.component.ts +0 -98
  738. package/projects/tgo-canopy-ui/components/password-strength-demo/password-strength-demo.component.html +0 -2
  739. package/projects/tgo-canopy-ui/components/password-strength-demo/password-strength-demo.component.scss +0 -0
  740. package/projects/tgo-canopy-ui/components/password-strength-demo/password-strength-demo.component.spec.ts +0 -28
  741. package/projects/tgo-canopy-ui/components/password-strength-demo/password-strength-demo.component.stories.ts +0 -40
  742. package/projects/tgo-canopy-ui/components/password-strength-demo/password-strength-demo.component.ts +0 -20
  743. package/projects/tgo-canopy-ui/components/phone-input/join-string.pipe.spec.ts +0 -9
  744. package/projects/tgo-canopy-ui/components/phone-input/join-strings.pipe.ts +0 -8
  745. package/projects/tgo-canopy-ui/components/phone-input/phone-input.component.html +0 -64
  746. package/projects/tgo-canopy-ui/components/phone-input/phone-input.component.module.ts +0 -35
  747. package/projects/tgo-canopy-ui/components/phone-input/phone-input.component.scss +0 -133
  748. package/projects/tgo-canopy-ui/components/phone-input/phone-input.component.spec.ts +0 -212
  749. package/projects/tgo-canopy-ui/components/phone-input/phone-input.component.stories.ts +0 -89
  750. package/projects/tgo-canopy-ui/components/phone-input/phone-input.component.ts +0 -427
  751. package/projects/tgo-canopy-ui/components/phone-input/phone-input.model.ts +0 -8
  752. package/projects/tgo-canopy-ui/components/progress-bar/progress-bar.component.html +0 -9
  753. package/projects/tgo-canopy-ui/components/progress-bar/progress-bar.component.module.ts +0 -12
  754. package/projects/tgo-canopy-ui/components/progress-bar/progress-bar.component.scss +0 -152
  755. package/projects/tgo-canopy-ui/components/progress-bar/progress-bar.component.spec.ts +0 -76
  756. package/projects/tgo-canopy-ui/components/progress-bar/progress-bar.component.stories.ts +0 -48
  757. package/projects/tgo-canopy-ui/components/progress-bar/progress-bar.component.ts +0 -82
  758. package/projects/tgo-canopy-ui/components/radial-progress/radial-progress.component.html +0 -26
  759. package/projects/tgo-canopy-ui/components/radial-progress/radial-progress.component.module.ts +0 -12
  760. package/projects/tgo-canopy-ui/components/radial-progress/radial-progress.component.scss +0 -41
  761. package/projects/tgo-canopy-ui/components/radial-progress/radial-progress.component.spec.ts +0 -102
  762. package/projects/tgo-canopy-ui/components/radial-progress/radial-progress.component.stories.ts +0 -69
  763. package/projects/tgo-canopy-ui/components/radial-progress/radial-progress.component.ts +0 -114
  764. package/projects/tgo-canopy-ui/components/radial-progress/radial-progress.model.ts +0 -13
  765. package/projects/tgo-canopy-ui/components/radio-button/radio-button.component.html +0 -18
  766. package/projects/tgo-canopy-ui/components/radio-button/radio-button.component.module.ts +0 -13
  767. package/projects/tgo-canopy-ui/components/radio-button/radio-button.component.scss +0 -189
  768. package/projects/tgo-canopy-ui/components/radio-button/radio-button.component.spec.ts +0 -139
  769. package/projects/tgo-canopy-ui/components/radio-button/radio-button.component.stories.ts +0 -126
  770. package/projects/tgo-canopy-ui/components/radio-button/radio-button.component.ts +0 -190
  771. package/projects/tgo-canopy-ui/components/radio-button/radio-button.model.ts +0 -4
  772. package/projects/tgo-canopy-ui/components/rating/__snapshots__/rating.component.spec.ts.snap +0 -47
  773. package/projects/tgo-canopy-ui/components/rating/half-star.pipe.spec.ts +0 -33
  774. package/projects/tgo-canopy-ui/components/rating/half-star.pipe.ts +0 -17
  775. package/projects/tgo-canopy-ui/components/rating/rating.component.html +0 -31
  776. package/projects/tgo-canopy-ui/components/rating/rating.component.module.ts +0 -12
  777. package/projects/tgo-canopy-ui/components/rating/rating.component.scss +0 -139
  778. package/projects/tgo-canopy-ui/components/rating/rating.component.spec.ts +0 -142
  779. package/projects/tgo-canopy-ui/components/rating/rating.component.stories.ts +0 -87
  780. package/projects/tgo-canopy-ui/components/rating/rating.component.ts +0 -97
  781. package/projects/tgo-canopy-ui/components/scale/__snapshots__/scale.component.spec.ts.snap +0 -42
  782. package/projects/tgo-canopy-ui/components/scale/scale.component.html +0 -7
  783. package/projects/tgo-canopy-ui/components/scale/scale.component.module.ts +0 -12
  784. package/projects/tgo-canopy-ui/components/scale/scale.component.scss +0 -71
  785. package/projects/tgo-canopy-ui/components/scale/scale.component.spec.ts +0 -125
  786. package/projects/tgo-canopy-ui/components/scale/scale.component.stories.ts +0 -60
  787. package/projects/tgo-canopy-ui/components/scale/scale.component.ts +0 -57
  788. package/projects/tgo-canopy-ui/components/segmented-bar/segmented-bar.component.html +0 -16
  789. package/projects/tgo-canopy-ui/components/segmented-bar/segmented-bar.component.module.ts +0 -12
  790. package/projects/tgo-canopy-ui/components/segmented-bar/segmented-bar.component.scss +0 -86
  791. package/projects/tgo-canopy-ui/components/segmented-bar/segmented-bar.component.spec.ts +0 -69
  792. package/projects/tgo-canopy-ui/components/segmented-bar/segmented-bar.component.stories.ts +0 -98
  793. package/projects/tgo-canopy-ui/components/segmented-bar/segmented-bar.component.ts +0 -69
  794. package/projects/tgo-canopy-ui/components/segmented-bar/segmented-bar.model.ts +0 -8
  795. package/projects/tgo-canopy-ui/components/segmented-button/segmented-button.component.html +0 -11
  796. package/projects/tgo-canopy-ui/components/segmented-button/segmented-button.component.module.ts +0 -22
  797. package/projects/tgo-canopy-ui/components/segmented-button/segmented-button.component.scss +0 -67
  798. package/projects/tgo-canopy-ui/components/segmented-button/segmented-button.component.spec.ts +0 -50
  799. package/projects/tgo-canopy-ui/components/segmented-button/segmented-button.component.stories.ts +0 -59
  800. package/projects/tgo-canopy-ui/components/segmented-button/segmented-button.component.ts +0 -67
  801. package/projects/tgo-canopy-ui/components/segmented-button/segmented-button.model.ts +0 -8
  802. package/projects/tgo-canopy-ui/components/side-sheet/side-sheet.component.html +0 -37
  803. package/projects/tgo-canopy-ui/components/side-sheet/side-sheet.component.module.ts +0 -24
  804. package/projects/tgo-canopy-ui/components/side-sheet/side-sheet.component.scss +0 -97
  805. package/projects/tgo-canopy-ui/components/side-sheet/side-sheet.component.spec.ts +0 -176
  806. package/projects/tgo-canopy-ui/components/side-sheet/side-sheet.component.ts +0 -110
  807. package/projects/tgo-canopy-ui/components/side-sheet/side-sheet.model.ts +0 -12
  808. package/projects/tgo-canopy-ui/components/side-sheet/side-sheet.service.spec.ts +0 -88
  809. package/projects/tgo-canopy-ui/components/side-sheet/side-sheet.service.ts +0 -28
  810. package/projects/tgo-canopy-ui/components/side-sheet-demo/side-sheet-demo.component.html +0 -5
  811. package/projects/tgo-canopy-ui/components/side-sheet-demo/side-sheet-demo.component.scss +0 -14
  812. package/projects/tgo-canopy-ui/components/side-sheet-demo/side-sheet-demo.component.spec.ts +0 -26
  813. package/projects/tgo-canopy-ui/components/side-sheet-demo/side-sheet-demo.component.stories.ts +0 -54
  814. package/projects/tgo-canopy-ui/components/side-sheet-demo/side-sheet-demo.component.ts +0 -98
  815. package/projects/tgo-canopy-ui/components/side-sheet-demo/side-sheet-demo.module.ts +0 -12
  816. package/projects/tgo-canopy-ui/components/skeleton/skeleton.component.html +0 -5
  817. package/projects/tgo-canopy-ui/components/skeleton/skeleton.component.scss +0 -0
  818. package/projects/tgo-canopy-ui/components/skeleton/skeleton.component.spec.ts +0 -75
  819. package/projects/tgo-canopy-ui/components/skeleton/skeleton.component.stories.ts +0 -47
  820. package/projects/tgo-canopy-ui/components/skeleton/skeleton.component.ts +0 -66
  821. package/projects/tgo-canopy-ui/components/skeleton/skeleton.model.ts +0 -3
  822. package/projects/tgo-canopy-ui/components/slider/slider.component.html +0 -75
  823. package/projects/tgo-canopy-ui/components/slider/slider.component.module.ts +0 -24
  824. package/projects/tgo-canopy-ui/components/slider/slider.component.scss +0 -223
  825. package/projects/tgo-canopy-ui/components/slider/slider.component.spec.ts +0 -103
  826. package/projects/tgo-canopy-ui/components/slider/slider.component.stories.ts +0 -87
  827. package/projects/tgo-canopy-ui/components/slider/slider.component.ts +0 -185
  828. package/projects/tgo-canopy-ui/components/slider/slider.model.ts +0 -4
  829. package/projects/tgo-canopy-ui/components/snackbar/__snapshots__/snackbar.component.spec.ts.snap +0 -44
  830. package/projects/tgo-canopy-ui/components/snackbar/snackbar.component.html +0 -33
  831. package/projects/tgo-canopy-ui/components/snackbar/snackbar.component.module.ts +0 -16
  832. package/projects/tgo-canopy-ui/components/snackbar/snackbar.component.scss +0 -45
  833. package/projects/tgo-canopy-ui/components/snackbar/snackbar.component.spec.ts +0 -214
  834. package/projects/tgo-canopy-ui/components/snackbar/snackbar.component.stories.ts +0 -159
  835. package/projects/tgo-canopy-ui/components/snackbar/snackbar.component.ts +0 -196
  836. package/projects/tgo-canopy-ui/components/snackbar/snackbar.service.spec.ts +0 -52
  837. package/projects/tgo-canopy-ui/components/snackbar/snackbar.service.ts +0 -37
  838. package/projects/tgo-canopy-ui/components/spinner/spinner.component.html +0 -6
  839. package/projects/tgo-canopy-ui/components/spinner/spinner.component.scss +0 -75
  840. package/projects/tgo-canopy-ui/components/spinner/spinner.component.spec.ts +0 -82
  841. package/projects/tgo-canopy-ui/components/spinner/spinner.component.stories.ts +0 -46
  842. package/projects/tgo-canopy-ui/components/spinner/spinner.component.ts +0 -59
  843. package/projects/tgo-canopy-ui/components/spinner/spinner.module.ts +0 -10
  844. package/projects/tgo-canopy-ui/components/step/step.component.html +0 -100
  845. package/projects/tgo-canopy-ui/components/step/step.component.module.ts +0 -11
  846. package/projects/tgo-canopy-ui/components/step/step.component.scss +0 -315
  847. package/projects/tgo-canopy-ui/components/step/step.component.spec.ts +0 -61
  848. package/projects/tgo-canopy-ui/components/step/step.component.ts +0 -134
  849. package/projects/tgo-canopy-ui/components/stepper/stepper.component.html +0 -79
  850. package/projects/tgo-canopy-ui/components/stepper/stepper.component.module.ts +0 -25
  851. package/projects/tgo-canopy-ui/components/stepper/stepper.component.scss +0 -144
  852. package/projects/tgo-canopy-ui/components/stepper/stepper.component.spec.ts +0 -64
  853. package/projects/tgo-canopy-ui/components/stepper/stepper.component.stories.ts +0 -84
  854. package/projects/tgo-canopy-ui/components/stepper/stepper.component.ts +0 -118
  855. package/projects/tgo-canopy-ui/components/stepper/stepper.model.ts +0 -10
  856. package/projects/tgo-canopy-ui/components/table/sentence-case.pipe.ts +0 -13
  857. package/projects/tgo-canopy-ui/components/table/sentence-case.spec.ts +0 -53
  858. package/projects/tgo-canopy-ui/components/table/table.component.html +0 -290
  859. package/projects/tgo-canopy-ui/components/table/table.component.module.ts +0 -35
  860. package/projects/tgo-canopy-ui/components/table/table.component.scss +0 -201
  861. package/projects/tgo-canopy-ui/components/table/table.component.spec.ts +0 -187
  862. package/projects/tgo-canopy-ui/components/table/table.component.stories.ts +0 -427
  863. package/projects/tgo-canopy-ui/components/table/table.component.ts +0 -242
  864. package/projects/tgo-canopy-ui/components/table/table.model.ts +0 -103
  865. package/projects/tgo-canopy-ui/components/tabs/tab.directive.ts +0 -33
  866. package/projects/tgo-canopy-ui/components/tabs/tabs.component.html +0 -19
  867. package/projects/tgo-canopy-ui/components/tabs/tabs.component.module.ts +0 -22
  868. package/projects/tgo-canopy-ui/components/tabs/tabs.component.scss +0 -234
  869. package/projects/tgo-canopy-ui/components/tabs/tabs.component.spec.ts +0 -85
  870. package/projects/tgo-canopy-ui/components/tabs/tabs.component.stories.ts +0 -73
  871. package/projects/tgo-canopy-ui/components/tabs/tabs.component.ts +0 -79
  872. package/projects/tgo-canopy-ui/components/tabs/tabs.directive.spec.ts +0 -90
  873. package/projects/tgo-canopy-ui/components/tabs/tabs.model.ts +0 -11
  874. package/projects/tgo-canopy-ui/components/tag/__snapshots__/tag.component.spec.ts.snap +0 -42
  875. package/projects/tgo-canopy-ui/components/tag/tag.component.html +0 -26
  876. package/projects/tgo-canopy-ui/components/tag/tag.component.module.ts +0 -15
  877. package/projects/tgo-canopy-ui/components/tag/tag.component.scss +0 -161
  878. package/projects/tgo-canopy-ui/components/tag/tag.component.spec.ts +0 -193
  879. package/projects/tgo-canopy-ui/components/tag/tag.component.stories.ts +0 -125
  880. package/projects/tgo-canopy-ui/components/tag/tag.component.ts +0 -213
  881. package/projects/tgo-canopy-ui/components/toggle/toggle.component.html +0 -24
  882. package/projects/tgo-canopy-ui/components/toggle/toggle.component.module.ts +0 -14
  883. package/projects/tgo-canopy-ui/components/toggle/toggle.component.scss +0 -202
  884. package/projects/tgo-canopy-ui/components/toggle/toggle.component.spec.ts +0 -197
  885. package/projects/tgo-canopy-ui/components/toggle/toggle.component.stories.ts +0 -97
  886. package/projects/tgo-canopy-ui/components/toggle/toggle.component.ts +0 -179
  887. package/projects/tgo-canopy-ui/components/tooltip/tooltip.component.html +0 -9
  888. package/projects/tgo-canopy-ui/components/tooltip/tooltip.component.module.ts +0 -10
  889. package/projects/tgo-canopy-ui/components/tooltip/tooltip.component.spec.ts +0 -53
  890. package/projects/tgo-canopy-ui/components/tooltip/tooltip.component.stories.ts +0 -235
  891. package/projects/tgo-canopy-ui/components/tooltip/tooltip.component.ts +0 -81
  892. package/projects/tgo-canopy-ui/components/tooltip/tooltip.model.ts +0 -6
  893. package/projects/tgo-canopy-ui/components/validation-error/validation-error.component.html +0 -29
  894. package/projects/tgo-canopy-ui/components/validation-error/validation-error.component.scss +0 -0
  895. package/projects/tgo-canopy-ui/components/validation-error/validation-error.component.spec.ts +0 -75
  896. package/projects/tgo-canopy-ui/components/validation-error/validation-error.component.ts +0 -53
  897. package/projects/tgo-canopy-ui/components/validation-error/validation-error.module.ts +0 -12
  898. package/projects/tgo-canopy-ui/directives/digits-only.directive.spec.ts +0 -121
  899. package/projects/tgo-canopy-ui/directives/digits-only.directive.ts +0 -42
  900. package/projects/tgo-canopy-ui/directives/drag-drop.directive.spec.ts +0 -84
  901. package/projects/tgo-canopy-ui/directives/drag-drop.directive.ts +0 -39
  902. package/projects/tgo-canopy-ui/directives/ellipse-text.directive.spec.ts +0 -57
  903. package/projects/tgo-canopy-ui/directives/ellipse-text.directive.ts +0 -27
  904. package/projects/tgo-canopy-ui/directives/select-text.directive.spec.ts +0 -54
  905. package/projects/tgo-canopy-ui/directives/select-text.directive.ts +0 -37
  906. package/projects/tgo-canopy-ui/directives/step-line-width.directive.spec.ts +0 -59
  907. package/projects/tgo-canopy-ui/directives/step-line-width.directive.ts +0 -31
  908. package/projects/tgo-canopy-ui/foundations/colors/colors.component.html +0 -4
  909. package/projects/tgo-canopy-ui/foundations/colors/colors.component.module.ts +0 -10
  910. package/projects/tgo-canopy-ui/foundations/colors/colors.component.scss +0 -318
  911. package/projects/tgo-canopy-ui/foundations/colors/colors.component.spec.ts +0 -47
  912. package/projects/tgo-canopy-ui/foundations/colors/colors.component.ts +0 -22
  913. package/projects/tgo-canopy-ui/foundations/colors/colors.stories.ts +0 -426
  914. package/projects/tgo-canopy-ui/foundations/typography/typography.stories.ts +0 -195
  915. package/projects/tgo-canopy-ui/mocked-assets/images/some_progress.svg +0 -4
  916. package/projects/tgo-canopy-ui/models/colors.model.ts +0 -88
  917. package/projects/tgo-canopy-ui/models/screen-breakpoints.model.ts +0 -4
  918. package/projects/tgo-canopy-ui/pipes/data-property-getter.spec.ts +0 -42
  919. package/projects/tgo-canopy-ui/pipes/data-property-getter.ts +0 -31
  920. package/projects/tgo-canopy-ui/pipes/has-validation-error.pipe.spec.ts +0 -32
  921. package/projects/tgo-canopy-ui/pipes/has-validation-error.pipe.ts +0 -20
  922. package/projects/tgo-canopy-ui/pipes/memoize-func.pipe.spec.ts +0 -19
  923. package/projects/tgo-canopy-ui/pipes/memoize-func.pipe.ts +0 -34
  924. package/projects/tgo-canopy-ui/pipes/name-initials.pipe.spec.ts +0 -44
  925. package/projects/tgo-canopy-ui/pipes/name-initials.pipe.ts +0 -18
  926. package/projects/tgo-canopy-ui/pipes/ui-translate.pipe.spec.ts +0 -45
  927. package/projects/tgo-canopy-ui/pipes/ui-translate.pipe.ts +0 -71
  928. package/projects/tgo-canopy-ui/polyfills.ts +0 -51
  929. package/projects/tgo-canopy-ui/providers/is-mobile.ts +0 -11
  930. package/projects/tgo-canopy-ui/public-api.ts +0 -184
  931. package/projects/tgo-canopy-ui/services/custom-event-manager.service.spec.ts +0 -57
  932. package/projects/tgo-canopy-ui/services/custom-event-manager.service.ts +0 -28
  933. package/projects/tgo-canopy-ui/test-utils/mock-file.spec.ts +0 -44
  934. package/projects/tgo-canopy-ui/test-utils/mock-file.ts +0 -24
  935. package/projects/tgo-canopy-ui/test.ts +0 -20
  936. package/projects/tgo-canopy-ui/utils/alert-bars.utils.spec.ts +0 -47
  937. package/projects/tgo-canopy-ui/utils/alert-bars.utils.ts +0 -36
  938. package/projects/tgo-canopy-ui/utils/autocomplete-utils.spec.ts +0 -68
  939. package/projects/tgo-canopy-ui/utils/autocomplete-utils.ts +0 -66
  940. package/projects/tgo-canopy-ui/utils/color-contrast.spec.ts +0 -46
  941. package/projects/tgo-canopy-ui/utils/color-contrast.ts +0 -135
  942. package/projects/tgo-canopy-ui/utils/localization/language.model.ts +0 -14
  943. package/projects/tgo-canopy-ui/utils/localization/language.service.mocks.ts +0 -6
  944. package/projects/tgo-canopy-ui/utils/localization/language.service.spec.ts +0 -25
  945. package/projects/tgo-canopy-ui/utils/localization/language.service.ts +0 -32
  946. package/projects/tgo-canopy-ui/utils/table.utils.spec.ts +0 -47
  947. package/projects/tgo-canopy-ui/utils/table.utils.ts +0 -22
  948. package/projects/tgo-canopy-ui/utils/transform-theme.ts +0 -9
  949. package/projects/tgo-canopy-ui/utils/transform.theme.spec.ts +0 -16
  950. package/projects/tgo-canopy-ui/utils/validators.utils.spec.ts +0 -16
  951. package/projects/tgo-canopy-ui/utils/validators.utils.ts +0 -9
  952. package/setupJest.ts +0 -1
  953. package/transloco.config.js +0 -5
  954. package/tsconfig.json +0 -46
  955. package/tsconfig.spec.json +0 -17
  956. package/tsconfig.ui.json +0 -24
  957. package/tsconfig.ui.prod.json +0 -10
  958. package/visual-tests/component-page-objects/avatar-component.ts +0 -30
  959. package/visual-tests/component-page-objects/badge-component.ts +0 -33
  960. package/visual-tests/component-page-objects/base-component.ts +0 -44
  961. package/visual-tests/component-page-objects/checkbox-component.ts +0 -38
  962. package/visual-tests/component-page-objects/icon-component.ts +0 -32
  963. package/visual-tests/component-tests/avatar.spec.ts +0 -91
  964. package/visual-tests/component-tests/avatar.spec.ts-snapshots/Avatar-Component-Visual-Tests-should-allow-edit-for-the-avatar-1-chromium-linux.png +0 -0
  965. package/visual-tests/component-tests/avatar.spec.ts-snapshots/Avatar-Component-Visual-Tests-should-display-large-avatar-1-chromium-linux.png +0 -0
  966. package/visual-tests/component-tests/avatar.spec.ts-snapshots/Avatar-Component-Visual-Tests-should-display-medium-avatar-1-chromium-linux.png +0 -0
  967. package/visual-tests/component-tests/avatar.spec.ts-snapshots/Avatar-Component-Visual-Tests-should-display-small-avatar-1-chromium-linux.png +0 -0
  968. package/visual-tests/component-tests/avatar.spec.ts-snapshots/Avatar-Component-Visual-Tests-should-display-the-avatar-correctly-1-chromium-linux.png +0 -0
  969. package/visual-tests/component-tests/avatar.spec.ts-snapshots/Avatar-Component-Visual-Tests-should-display-the-avatar-image-1-chromium-linux.png +0 -0
  970. package/visual-tests/component-tests/avatar.spec.ts-snapshots/Avatar-Component-Visual-Tests-should-emit-edit-click-event-1-chromium-linux.png +0 -0
  971. package/visual-tests/component-tests/badge.spec.ts +0 -56
  972. package/visual-tests/component-tests/badge.spec.ts-snapshots/Badge-Component-Visual-Tests-should-display-notification-badge-1-chromium-linux.png +0 -0
  973. package/visual-tests/component-tests/badge.spec.ts-snapshots/Badge-Component-Visual-Tests-should-display-secondary-badge-1-chromium-linux.png +0 -0
  974. package/visual-tests/component-tests/badge.spec.ts-snapshots/Badge-Component-Visual-Tests-should-display-the-badge-correctly-1-chromium-linux.png +0 -0
  975. package/visual-tests/component-tests/badge.spec.ts-snapshots/Badge-Component-Visual-Tests-should-display-the-badge-with-icon-1-chromium-linux.png +0 -0
  976. package/visual-tests/component-tests/checkbox.spec.ts +0 -151
  977. package/visual-tests/component-tests/checkbox.spec.ts-snapshots/Checkbox-Component-Visual-Tests-should-display-the-checkbox-checked-1-chromium-linux.png +0 -0
  978. package/visual-tests/component-tests/checkbox.spec.ts-snapshots/Checkbox-Component-Visual-Tests-should-display-the-checkbox-correctly-1-chromium-linux.png +0 -0
  979. package/visual-tests/component-tests/checkbox.spec.ts-snapshots/Checkbox-Component-Visual-Tests-should-display-the-checkbox-disabled-1-chromium-linux.png +0 -0
  980. package/visual-tests/component-tests/checkbox.spec.ts-snapshots/Checkbox-Component-Visual-Tests-should-display-the-checkbox-error-1-chromium-linux.png +0 -0
  981. package/visual-tests/component-tests/checkbox.spec.ts-snapshots/Checkbox-Component-Visual-Tests-should-display-the-checkbox-indeterminate-1-chromium-linux.png +0 -0
  982. package/visual-tests/component-tests/checkbox.spec.ts-snapshots/Checkbox-Component-Visual-Tests-should-display-the-checkbox-multiple-1-chromium-linux.png +0 -0
  983. package/visual-tests/component-tests/checkbox.spec.ts-snapshots/Checkbox-Component-Visual-Tests-should-display-the-checkbox-multiple-error-1-chromium-linux.png +0 -0
  984. package/visual-tests/component-tests/checkbox.spec.ts-snapshots/Checkbox-Component-Visual-Tests-should-display-the-checkbox-set-company-color-1-chromium-linux.png +0 -0
  985. package/visual-tests/component-tests/checkbox.spec.ts-snapshots/Checkbox-Component-Visual-Tests-should-display-the-checkbox-without-lable-1-chromium-linux.png +0 -0
  986. package/visual-tests/component-tests/icon.spec.ts +0 -41
  987. package/visual-tests/component-tests/icon.spec.ts-snapshots/Icon-Component-Visual-Tests-should-display-red-the-icon-color-1-chromium-linux.png +0 -0
  988. package/visual-tests/component-tests/icon.spec.ts-snapshots/Icon-Component-Visual-Tests-should-display-the-icon-correctly-1-chromium-linux.png +0 -0
  989. package/visual-tests/component-tests/icon.spec.ts-snapshots/Icon-Component-Visual-Tests-should-display-the-icon-small-size-1-chromium-linux.png +0 -0
  990. package/visual-tests/playwright.config.ts +0 -45
  991. package/visual-tests/runConfig.ts +0 -1
  992. /package/{projects/tgo-canopy-ui/components/accordion/accordion.model.ts → components/accordion/accordion.model.d.ts} +0 -0
  993. /package/{projects/tgo-canopy-ui/components/alert-banner/alert-banner.model.ts → components/alert-banner/alert-banner.model.d.ts} +0 -0
  994. /package/{projects/tgo-canopy-ui/components/card/card.model.ts → components/card/card.model.d.ts} +0 -0
  995. /package/{projects/tgo-canopy-ui/components/divider/divider.model.ts → components/divider/divider.model.d.ts} +0 -0
  996. /package/{projects/tgo-canopy-ui/components/empty-state/empty-state.model.ts → components/empty-state/empty-state.model.d.ts} +0 -0
  997. /package/{projects/tgo-canopy-ui/components/snackbar/snackbar.model.ts → components/snackbar/snackbar.model.d.ts} +0 -0
  998. /package/{projects/tgo-canopy-ui/components/spinner/spinner.model.ts → components/spinner/spinner.model.d.ts} +0 -0
  999. /package/{projects/tgo-canopy-ui/components/tag/tag.model.ts → components/tag/tag.model.d.ts} +0 -0
  1000. /package/{projects/tgo-canopy-ui/components/toggle/toggle.model.ts → components/toggle/toggle.model.d.ts} +0 -0
  1001. /package/{projects/tgo-canopy-ui/components/validation-error/validation-error.model.ts → components/validation-error/validation-error.model.d.ts} +0 -0
  1002. /package/{projects/tgo-canopy-ui/models/application-theme.model.ts → models/application-theme.model.d.ts} +0 -0
  1003. /package/{projects/tgo-canopy-ui/utils/alert-bar.model.ts → utils/alert-bar.model.d.ts} +0 -0
@@ -0,0 +1,537 @@
1
+ import { booleanAttribute, ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Inject, Input, Optional, Output, PLATFORM_ID, Self, ViewChild, } from '@angular/core';
2
+ import { map, ReplaySubject, startWith } from 'rxjs';
3
+ import { AutocompleteUtils } from '../../utils/autocomplete-utils';
4
+ import { Autocomplete, DropdownVariation, Padding, Timeout } from './autocomplete.model';
5
+ import { LanguageService } from '../../utils/localization/language.service';
6
+ import { isPlatformBrowser } from '@angular/common';
7
+ import { CdkVirtualScrollViewport } from "@angular/cdk/scrolling";
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/platform-browser";
10
+ import * as i2 from "@angular/forms";
11
+ import * as i3 from "@angular/common";
12
+ import * as i4 from "@angular/material/form-field";
13
+ import * as i5 from "@angular/material/autocomplete";
14
+ import * as i6 from "@angular/material/core";
15
+ import * as i7 from "@angular/material/input";
16
+ import * as i8 from "../tag/tag.component";
17
+ import * as i9 from "../icon/icon.component";
18
+ import * as i10 from "../validation-error/validation-error.component";
19
+ import * as i11 from "@angular/cdk/scrolling";
20
+ import * as i12 from "../../directives/select-text.directive";
21
+ import * as i13 from "../../pipes/ui-translate.pipe";
22
+ import * as i14 from "../../pipes/has-validation-error.pipe";
23
+ import * as i15 from "./transform-Item.pipe";
24
+ import * as i16 from "./includes.pipe";
25
+ // eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle
26
+ export class AutocompleteComponent {
27
+ /**
28
+ * @property value
29
+ * @description The selected value(s) in the autocomplete.
30
+ * @memberof AutocompleteComponent
31
+ */
32
+ set itemValue(v) {
33
+ this.value = AutocompleteUtils.isArray(v) ? v : v ? [v] : [];
34
+ }
35
+ /**
36
+ * Input field errors
37
+ *
38
+ * @type {string[]}
39
+ * @memberof AutocompleteComponent
40
+ */
41
+ set errors(errors) {
42
+ this.safeErrors = errors?.filter(Boolean).map(error => this.domSanitizer.bypassSecurityTrustHtml(error));
43
+ }
44
+ constructor(defaultAppTheme, cdr, domSanitizer, ngControl, renderer2, platformId) {
45
+ this.defaultAppTheme = defaultAppTheme;
46
+ this.cdr = cdr;
47
+ this.domSanitizer = domSanitizer;
48
+ this.ngControl = ngControl;
49
+ this.renderer2 = renderer2;
50
+ this.platformId = platformId;
51
+ /**
52
+ * @property itemsList
53
+ * @description The list of items to display in the autocomplete.
54
+ * @memberof AutocompleteComponent
55
+ */
56
+ this.itemsList = [];
57
+ /**
58
+ * @property suggestionsList
59
+ * @description The list of suggestions to display in the autocomplete.
60
+ * @memberof AutocompleteComponent
61
+ */
62
+ this.suggestionsList = [];
63
+ /**
64
+ * @property disabled
65
+ * @description If `true`, the autocomplete is disabled.
66
+ * @memberof AutocompleteComponent
67
+ */
68
+ this.disabled = false;
69
+ /**
70
+ * @property allowAdd
71
+ * @description If `true`, allows adding new values to the autocomplete.
72
+ * @memberof AutocompleteComponent
73
+ */
74
+ this.allowAdd = true;
75
+ /**
76
+ * @property textField
77
+ * @description The field to be used as the display text in the autocomplete.
78
+ * @memberof AutocompleteComponent
79
+ */
80
+ this.textField = '';
81
+ /**
82
+ * @property valueField
83
+ * @description The field to be used as the value in the autocomplete.
84
+ * @memberof AutocompleteComponent
85
+ */
86
+ this.valueField = '';
87
+ /**
88
+ * @property label
89
+ * @description The label for the autocomplete input.
90
+ * @memberof AutocompleteComponent
91
+ */
92
+ this.label = '';
93
+ /**
94
+ * @property type
95
+ * @description The type of the autocomplete ('single', 'multi', etc.).
96
+ * @memberof AutocompleteComponent
97
+ */
98
+ this.type = 'multi';
99
+ /**
100
+ * @property minCharactersSearch
101
+ * @description The minimum characters to trigger search.
102
+ * @memberof AutocompleteComponent
103
+ */
104
+ this.minCharactersSearch = 3;
105
+ /**
106
+ * @property variant
107
+ * @description The variant of Autocomplete
108
+ * @memberof AutocompleteComponent
109
+ */
110
+ this.variant = DropdownVariation.AUTOCOMPLETE;
111
+ /**
112
+ * The language to be used
113
+ * @property language
114
+ * @type {Language}
115
+ * @memberof AutocompleteComponent
116
+ */
117
+ this.language = LanguageService.defaultLanguage;
118
+ /**
119
+ * Show reserved content below form field
120
+ * @property showBottomContent
121
+ * @type {boolean}
122
+ * @memberof AutocompleteComponent
123
+ */
124
+ this.showBottomContent = true;
125
+ /**
126
+ * Return full object if true
127
+ * @property valuePrimitive
128
+ * @type {boolean}
129
+ * @memberof AutocompleteComponent
130
+ */
131
+ this.valuePrimitive = false;
132
+ /**
133
+ * Indicator of the autocomplete width
134
+ * @property fullWidth
135
+ * @type {boolean}
136
+ * @memberof AutocompleteComponent
137
+ */
138
+ this.fullWidth = false;
139
+ /**
140
+ *
141
+ * Defines the application theme
142
+ *
143
+ * @type {ApplicationTheme}
144
+ * @memberof AutocompleteComponent
145
+ */
146
+ this.applicationTheme = 'light';
147
+ /**
148
+ * Color of the option hover.
149
+ * Defaults to Test Gorilla primary color.
150
+ *
151
+ * @type {string}
152
+ * @memberof AutocompleteComponent
153
+ */
154
+ this.companyColor = '#FFF2FC';
155
+ /**
156
+ * Hide in-build errors for Reactive Forms
157
+ *
158
+ * @type {number}
159
+ * @memberof AutocompleteComponent
160
+ */
161
+ this.hideBuiltInErrors = false;
162
+ /**
163
+ * Hide label in errors
164
+ *
165
+ * @type {number}
166
+ * @memberof AutocompleteComponent
167
+ */
168
+ this.hideLabelInErrors = false;
169
+ /**
170
+ * Sets dropdown list to virtual scroll mode
171
+ *
172
+ * @type {boolean}
173
+ * @memberof AutocompleteComponent
174
+ */
175
+ this.virtualScroll = false;
176
+ this.selectionChange = new EventEmitter();
177
+ this.searchTextChange = new EventEmitter();
178
+ this.safeErrors = [];
179
+ this.inputValue = '';
180
+ this.isInputFocus = false;
181
+ this.autocompleteType = Autocomplete;
182
+ this.isOverLapping = false;
183
+ this.isOverlapChecking = true;
184
+ this.overlapIndex = 0;
185
+ this.inputOpacity = 1;
186
+ this.inputValueSearch$ = new ReplaySubject(1);
187
+ this.userInput$ = new ReplaySubject(1);
188
+ this.filteredItemsList$ = this.inputValueSearch$.pipe(startWith(''), map(inputValue => inputValue.length ? AutocompleteUtils.filterItems(this.itemsList, inputValue, this.textField) : null));
189
+ this.filteredSuggestionList$ = this.inputValueSearch$.pipe(map(inputValue => inputValue.length ? AutocompleteUtils.filterItems(this.suggestionsList, inputValue, this.textField) : null));
190
+ this.searchResult$ = this.inputValueSearch$.pipe(map(inputValue => !!inputValue.trim()));
191
+ this.translationContext = 'AUTOCOMPLETE.';
192
+ this.AutocompleteUtils = AutocompleteUtils;
193
+ this.isPlatform = isPlatformBrowser(this.platformId);
194
+ this.onChange = (_) => {
195
+ };
196
+ this.onTouch = () => {
197
+ };
198
+ this.trackByFn = (index, value) => value.changingThisBreaksApplicationSecurity;
199
+ if (this.ngControl != null) {
200
+ this.ngControl.valueAccessor = this;
201
+ }
202
+ if (defaultAppTheme) {
203
+ this.applicationTheme = defaultAppTheme;
204
+ }
205
+ }
206
+ /**
207
+ * Used to mark component view as dirty when touched programmatically with markAsTouched/markAllAsTouched or errors
208
+ * to display validation errors that might happen (e.g. required)
209
+ */
210
+ // eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle
211
+ ngDoCheck() {
212
+ if (this.ngControl?.touched || this.ngControl?.errors) {
213
+ this.cdr.markForCheck();
214
+ }
215
+ }
216
+ // eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle
217
+ ngOnChanges(changes) {
218
+ this.itemsList = AutocompleteUtils.excludeSuggestions(this.itemsList, this.suggestionsList, this.valueField);
219
+ this.initValue();
220
+ if (this.isPlatform && changes['companyColor']) {
221
+ this.setCompanyColorVariable();
222
+ }
223
+ }
224
+ // eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle
225
+ ngAfterViewInit() {
226
+ if (this.type !== Autocomplete.LARGE) {
227
+ this.checkOverlap(Timeout.VIEW_INITIALIZED_COMPONENT_LOAD, true);
228
+ }
229
+ this.isPlatform && this.setCompanyColorVariable();
230
+ }
231
+ registerOnChange(fn) {
232
+ this.onChange = fn;
233
+ }
234
+ registerOnTouched(fn) {
235
+ this.onTouch = fn;
236
+ }
237
+ setDisabledState(isDisabled) {
238
+ this.disabled = isDisabled;
239
+ this.cdr.markForCheck();
240
+ }
241
+ writeValue(value) {
242
+ if (this.valuePrimitive && this.textField && this.valueField) {
243
+ if (this.type === Autocomplete.SINGLE) {
244
+ this.value = this.itemsList.find(item => item[this.valueField] === value);
245
+ }
246
+ else {
247
+ this.value = [this.itemsList.find(item => item[this.valueField] === value)];
248
+ }
249
+ }
250
+ else {
251
+ this.value = value;
252
+ }
253
+ this.initValue();
254
+ }
255
+ onOptionSelected(event) {
256
+ const inputValue = event.option.value;
257
+ const itemValue = AutocompleteUtils.createValueItem(inputValue, this.textField, this.valueField);
258
+ this.addNewValue(itemValue);
259
+ if (this.type === this.autocompleteType.MULTI) {
260
+ this.checkOverlap();
261
+ }
262
+ queueMicrotask(() => {
263
+ if (this.type !== this.autocompleteType.SINGLE) {
264
+ this.inputValue = '';
265
+ }
266
+ else {
267
+ this.inputValue = AutocompleteUtils.transformDisplayValue(this.value, this.textField);
268
+ }
269
+ this.cdr.markForCheck();
270
+ });
271
+ this.onUpdate();
272
+ }
273
+ onOptionRemoved(option) {
274
+ setTimeout(() => this.autocomplete.closePanel(), 0);
275
+ const foundValue = this.value.find((v) => v === option);
276
+ if (foundValue) {
277
+ this.value = this.value.filter((v) => v !== option);
278
+ }
279
+ if (this.type === this.autocompleteType.MULTI) {
280
+ this.checkOverlap();
281
+ }
282
+ if (!this.value.length) {
283
+ this.inputValue = '';
284
+ }
285
+ this.onUpdate();
286
+ }
287
+ onInputChange(event) {
288
+ const inputValue = event.target.value;
289
+ this.userInput$.next(inputValue);
290
+ if (inputValue.length >= this.minCharactersSearch) {
291
+ this.inputValueSearch$.next(inputValue);
292
+ this.searchTextChange.emit(inputValue);
293
+ }
294
+ else {
295
+ this.inputValueSearch$.next('');
296
+ this.userInput$.next('');
297
+ }
298
+ }
299
+ onClear() {
300
+ this.inputValue = '';
301
+ this.value = AutocompleteUtils.isArray(this.value) ? [] : '';
302
+ this.isOverLapping = false;
303
+ this.overlapIndex = 0;
304
+ this.onUpdate();
305
+ this.matAutocomplete?.options.forEach(option => option.deselect());
306
+ }
307
+ refillInput() {
308
+ setTimeout(() => {
309
+ if (this.value && this.type === this.autocompleteType.SINGLE && !this.inputValue) {
310
+ this.inputValue = AutocompleteUtils.transformDisplayValue(this.value, this.textField);
311
+ }
312
+ else if (!this.inputValue && this.value?.length) {
313
+ this.inputValue = ' ';
314
+ }
315
+ else if (this.inputValue && this.type === Autocomplete.SINGLE && this.value && Object.keys(this.value).length) {
316
+ this.inputValue = AutocompleteUtils.transformDisplayValue(this.value, this.textField);
317
+ }
318
+ else if (this.inputValue) {
319
+ this.inputValue = ' ';
320
+ }
321
+ this.inputValueSearch$.next('');
322
+ this.userInput$.next('');
323
+ this.isInputFocus = false;
324
+ }, 0);
325
+ }
326
+ gotoUp() {
327
+ if (this.cdkVirtualScrollViewPort) {
328
+ this.cdkVirtualScrollViewPort.scrollToIndex(0);
329
+ this.cdkVirtualScrollViewPort.checkViewportSize();
330
+ }
331
+ }
332
+ onFocus() {
333
+ this.isInputFocus = true;
334
+ const inputValue = AutocompleteUtils.isArray(this.inputValue) ? this.inputValue[0] : this.inputValue;
335
+ if (AutocompleteUtils.isPrimitive(inputValue)) {
336
+ if (typeof inputValue !== 'number' && inputValue?.match(/^\s+/gm)) {
337
+ this.inputValue = inputValue.trimStart();
338
+ }
339
+ }
340
+ else {
341
+ if (inputValue[this.textField]?.match(/^\s+/gm)) {
342
+ this.inputValue = inputValue[this.textField].trimStart();
343
+ }
344
+ }
345
+ }
346
+ checkOverlap(delay = Timeout.VIEW_INITIALIZED_AFTER_ACTION, init = false) {
347
+ this.isOverLapping = false;
348
+ this.isOverlapChecking = true;
349
+ this.inputOpacity = 0;
350
+ setTimeout(() => {
351
+ const inputWidth = this.inputWidth;
352
+ const tags = this.tagContainer?.nativeElement.querySelectorAll('.value-tag');
353
+ if (tags) {
354
+ let width = 0;
355
+ let firstTagWidth = 0;
356
+ tags.forEach((tag, index) => {
357
+ width += tag.getBoundingClientRect().width;
358
+ if (!index) {
359
+ firstTagWidth = width;
360
+ }
361
+ if (!this.isOverLapping && width > inputWidth) {
362
+ this.isOverLapping = true;
363
+ this.overlapIndex = index;
364
+ }
365
+ if (firstTagWidth > inputWidth) {
366
+ this.overlapIndex = 0;
367
+ }
368
+ });
369
+ this.isOverlapChecking = false;
370
+ if (init) {
371
+ if (this.type === this.autocompleteType.SINGLE) {
372
+ this.inputValue = AutocompleteUtils.transformDisplayValue(this.value[0], this.textField);
373
+ }
374
+ else {
375
+ this.inputValue = ' ';
376
+ }
377
+ }
378
+ this.cdr.markForCheck();
379
+ }
380
+ this.inputOpacity = 1;
381
+ }, delay);
382
+ }
383
+ onUpdate() {
384
+ this.inputValueSearch$.next('');
385
+ this.userInput$.next('');
386
+ if (!this.valuePrimitive) {
387
+ this.onChange(this.value);
388
+ }
389
+ else {
390
+ if (this.type === Autocomplete.SINGLE) {
391
+ this.onChange(this.value[this.valueField]);
392
+ }
393
+ else {
394
+ this.onChange(this.value.map((v) => v[this.valueField]));
395
+ }
396
+ }
397
+ this.selectionChange.emit(this.value);
398
+ }
399
+ initValue() {
400
+ if (this.type === this.autocompleteType.SINGLE && this.variant !== DropdownVariation.DROPDOWN) {
401
+ if (AutocompleteUtils.isArray(this.value)) {
402
+ this.inputValue = AutocompleteUtils.transformDisplayValue(this.value[0], this.textField);
403
+ }
404
+ else {
405
+ this.inputValue = this.value ? AutocompleteUtils.transformDisplayValue(this.value, this.textField) : '';
406
+ }
407
+ }
408
+ else if (this.variant === DropdownVariation.DROPDOWN) {
409
+ this.inputValue = this.value ? AutocompleteUtils.transformDisplayValue(this.value, this.textField) : '';
410
+ }
411
+ else {
412
+ this.inputValue = this.value && this.value.length ? ' ' : '';
413
+ }
414
+ if (this.type === this.autocompleteType.MULTI) {
415
+ this.checkOverlap();
416
+ }
417
+ }
418
+ addNewValue(newValue) {
419
+ if (this.type !== this.autocompleteType.SINGLE && !this.value) {
420
+ this.value = [];
421
+ }
422
+ const foundDuplicate = AutocompleteUtils.findDuplicate(this.value, newValue, this.textField);
423
+ if (this.type !== this.autocompleteType.SINGLE) {
424
+ this.value = foundDuplicate ? this.value.filter((v) => v !== foundDuplicate) : [...this.value, newValue];
425
+ }
426
+ else {
427
+ this.value = newValue;
428
+ }
429
+ }
430
+ get isDropdown() {
431
+ return this.variant === DropdownVariation.DROPDOWN;
432
+ }
433
+ onChevronClick(autocomplete) {
434
+ if (autocomplete.isOpen) {
435
+ setTimeout(() => {
436
+ this.autocomplete.closePanel();
437
+ }, 0);
438
+ }
439
+ }
440
+ get inputWidth() {
441
+ return (this.formFieldElement?.nativeElement.getBoundingClientRect().width -
442
+ (this.isDropdown ? Padding.DROPDOWN_CONTAINER : Padding.AUTOCOMPLETE_CONTAINER));
443
+ }
444
+ /**
445
+ * Adding company color variable to the body to style overlay container that's out of the component scope.
446
+ */
447
+ setCompanyColorVariable() {
448
+ this.renderer2.setProperty(document.body, 'style', `--ui-autocomplete-option-color: ${this.companyColor};`);
449
+ }
450
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AutocompleteComponent, deps: [{ token: 'CANOPYUI_DEFAULT_APPLICATION_THEME', optional: true }, { token: i0.ChangeDetectorRef }, { token: i1.DomSanitizer }, { token: i2.NgControl, optional: true, self: true }, { token: i0.Renderer2 }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component }); }
451
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "16.2.12", type: AutocompleteComponent, selector: "ui-autocomplete", inputs: { itemsList: "itemsList", suggestionsList: "suggestionsList", disabled: "disabled", allowAdd: "allowAdd", textField: "textField", valueField: "valueField", label: "label", itemValue: "itemValue", type: "type", minCharactersSearch: "minCharactersSearch", variant: "variant", language: "language", showBottomContent: "showBottomContent", valuePrimitive: "valuePrimitive", fullWidth: "fullWidth", applicationTheme: "applicationTheme", required: "required", errors: "errors", companyColor: "companyColor", hideBuiltInErrors: "hideBuiltInErrors", hideLabelInErrors: "hideLabelInErrors", virtualScroll: ["virtualScroll", "virtualScroll", booleanAttribute] }, outputs: { selectionChange: "selectionChange", searchTextChange: "searchTextChange" }, host: { properties: { "attr.theme": "this.applicationTheme" } }, viewQueries: [{ propertyName: "formFieldElement", first: true, predicate: ["formField"], descendants: true }, { propertyName: "tagContainer", first: true, predicate: ["tagContainer"], descendants: true }, { propertyName: "autocomplete", first: true, predicate: ["trigger"], descendants: true }, { propertyName: "cdkVirtualScrollViewPort", first: true, predicate: CdkVirtualScrollViewport, descendants: true }, { propertyName: "matAutocomplete", first: true, predicate: ["autocomplete"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container>\n <div class=\"autocomplete-wrapper\" [ngClass]=\"{ 'full-width': fullWidth, disabled: disabled }\">\n <mat-form-field\n [color]=\"(safeErrors.length || (ngControl?.errors && ngControl?.touched )) ? 'warn' : 'accent'\"\n [appearance]=\"'outline'\"\n [ngClass]=\"{ 'large-size': type === autocompleteType.LARGE, 'hide-bottom-content': !showBottomContent }\"\n >\n <mat-label *ngIf=\"label\">{{ label }} <span *ngIf=\"required\">*</span></mat-label>\n <div #formField class=\"input-container\">\n <div\n class=\"selected-items\"\n #tagContainer\n *ngIf=\"\n (type === autocompleteType.LARGE && this.value) ||\n (!(inputValue && this.isInputFocus) && this.value && type !== autocompleteType.SINGLE)\n \"\n >\n <ui-tag\n class=\"value-tag\"\n [id]=\"'ui-tag-' + i\"\n *ngFor=\"let valueItem of value; let i = index\"\n [label]=\"valueItem | transformItem: textField\"\n [style.opacity]=\"type === autocompleteType.MULTI ? inputOpacity : 1\"\n [allowClose]=\"true\"\n [applicationTheme]=\"applicationTheme\"\n [style.display]=\"isOverLapping && i >= overlapIndex ? 'none' : 'block'\"\n [ngClass]=\"{\n 'overlap-tag': isOverlapChecking && overlapIndex && i >= overlapIndex && type === autocompleteType.MULTI\n }\"\n (close)=\"onOptionRemoved(valueItem)\"\n ></ui-tag>\n <ng-container *ngIf=\"isOverLapping\">\n <div *ngIf=\"!overlapIndex; else overlapTag\" class=\"overlap-count\">\n {{ (translationContext + 'SELECTED_AMOUNT') | uiTranslate : language : { numberSelected: (value | slice: overlapIndex).length } }}\n </div>\n <ng-template #overlapTag>\n <ui-tag [applicationTheme]=\"applicationTheme\" [readOnly]=\"true\" [label]=\"'+' + (value | slice: overlapIndex).length\"></ui-tag>\n </ng-template>\n </ng-container>\n </div>\n <input\n #trigger=\"matAutocompleteTrigger\"\n [disabled]=\"disabled\"\n [ngClass]=\"{ 'unset-margin': this.value && type === autocompleteType.LARGE }\"\n (blur)=\"refillInput()\"\n (focusin)=\"onFocus()\"\n [style.opacity]=\"type === autocompleteType.MULTI ? inputOpacity : 1\"\n matInput\n [type]=\"'text'\"\n [matAutocomplete]=\"autocomplete\"\n (input)=\"onInputChange($event)\"\n [(ngModel)]=\"inputValue\"\n />\n </div>\n\n <ui-icon\n *ngIf=\"value && ((AutocompleteUtils.isPrimitive(value) && value.length) || (!AutocompleteUtils.isPrimitive(value) && (AutocompleteUtils.isArray(value) && value.length || !AutocompleteUtils.isArray(value) && !value.length)))\"\n class=\"remove-selected\"\n [ngClass]=\"{ 'large-input-icon': type === autocompleteType.LARGE }\"\n (click)=\"onClear();$event.preventDefault();$event.stopPropagation()\"\n [size]=\"'24'\"\n [color]=\"applicationTheme === 'classic' ? 'inherit' : 'rebrand-black'\"\n [name]=\"applicationTheme === 'classic' ? 'Close' : 'Close-in-line'\"\n ></ui-icon>\n\n <ui-icon\n class=\"arrow-state\"\n [ngClass]=\"{ opened: autocomplete.isOpen, 'large-input-icon': type === autocompleteType.LARGE }\"\n *ngIf=\"isDropdown\"\n [size]=\"'24'\"\n [name]=\"applicationTheme !== 'classic' ? 'Arrow-chevron-down-in-line' : 'Arrow_down'\"\n (click)=\"onChevronClick(autocomplete)\"\n ></ui-icon>\n\n <mat-autocomplete\n #autocomplete\n [class]=\"applicationTheme\"\n (optionSelected)=\"onOptionSelected($event)\"\n [disableRipple]=\"applicationTheme !== 'classic'\"\n [hideSingleSelectionIndicator]=\"false\"\n (opened)=\"gotoUp()\"\n >\n <ng-container *ngIf=\"!(searchResult$ | async)\">\n <ng-container *ngIf=\"!isDropdown; else dropdownList\">\n <mat-optgroup [label]=\"(translationContext + 'SUGGESTED') | uiTranslate : language | uppercase\" *ngIf=\"suggestionsList.length\">\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': suggested | includes: value }\"\n *ngFor=\"let suggested of suggestionsList\"\n [value]=\"suggested\"\n >\n <span [selectText]=\"userInput$ | async\">{{ suggested | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n <mat-optgroup [label]=\"(translationContext + 'SELECTED') | uiTranslate : language | uppercase\" *ngIf=\"value?.length && type !== autocompleteType.SINGLE\">\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value }\"\n *ngFor=\"let item of value\"\n [value]=\"item\"\n >\n <span>{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n <mat-optgroup [label]=\"(translationContext + 'SELECTED') | uiTranslate : language | uppercase\" *ngIf=\"value?.length && type === autocompleteType.SINGLE\">\n <mat-option\n (mousedown)=$event.preventDefault()\n [class]=\"'selected-option'\"\n [value]=\"value\"\n >\n <span [selectText]=\"userInput$ | async\">{{ value | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n </ng-container>\n\n <ng-template #dropdownList>\n <cdk-virtual-scroll-viewport *ngIf=\"virtualScroll; else defaultViewPort\" [itemSize]=\"48\" [style.height]=\"'200px'\" class=\"virtual-scroll\">\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value }\"\n *cdkVirtualFor=\"let item of itemsList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </cdk-virtual-scroll-viewport>\n\n <ng-template #defaultViewPort>\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value }\"\n *ngFor=\"let item of itemsList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </ng-template>\n\n </ng-template>\n\n </ng-container>\n\n <ng-container *ngIf=\"filteredSuggestionList$ | async as filteredSuggestionList\">\n <ng-container *ngIf=\"filteredItemsList$ | async as filteredItemsList\">\n <mat-optgroup [label]=\"(translationContext + 'SUGGESTED') | uiTranslate : language | uppercase\" *ngIf=\"filteredSuggestionList.length\">\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value }\"\n *ngFor=\"let item of filteredSuggestionList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n <ng-container *ngIf=\"!filteredSuggestionList.length; else showItemListWithGroup\">\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value }\"\n *ngFor=\"let item of filteredItemsList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </ng-container>\n\n <ng-template #showItemListWithGroup>\n <mat-optgroup [label]=\"(translationContext + 'ALL_ITEMS') | uiTranslate : language | uppercase\" *ngIf=\"filteredItemsList.length\">\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value }\"\n *ngFor=\"let item of filteredItemsList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n </ng-template>\n\n <ng-container *ngIf=\"!filteredItemsList.length && !filteredSuggestionList.length && inputValue\">\n <ng-container *ngIf=\"allowAdd && !isDropdown; else notFound\">\n <mat-option (mousedown)=$event.preventDefault() [value]=\"inputValue\">\n <span>{{ ('COMMON.ADD') | uiTranslate : language }}</span>\n <span class=\"add-suggestion\">\"{{ inputValue }}\"</span>\n </mat-option>\n </ng-container>\n\n <ng-template #notFound>\n <mat-option [style.pointer-events]=\"'none'\">\n <span>{{ (translationContext + 'NO_RESULTS_FOUND') | uiTranslate : language }}</span>\n </mat-option>\n </ng-template>\n </ng-container>\n </ng-container>\n </ng-container>\n </mat-autocomplete>\n <mat-hint class=\"error\" *ngIf=\"safeErrors.length || (ngControl?.errors | hasValidationError)\">\n <ng-container *ngIf=\"safeErrors.length\">\n <div class=\"errors\" *ngFor=\"let error of safeErrors; trackBy: trackByFn\">\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"'Error'\"></ui-icon>\n <span [innerHTML]=\"error\"></span>\n </div>\n </ng-container>\n <ui-validation-error *ngIf=\"ngControl && !hideBuiltInErrors\" [ngControl]=\"ngControl\" [label]=\"hideLabelInErrors ? null : label\" [language]=\"language\"></ui-validation-error>\n\n </mat-hint>\n </mat-form-field>\n </div>\n</ng-container>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.large-size input{margin:10px 0}.large-size .selected-items{margin:5px 0;flex-wrap:wrap}.large-size .input-container{display:block}.large-size ::ng-deep .mat-mdc-form-field-infix,.large-size .mat-mdc-form-field-flex{align-items:unset!important}.disabled{opacity:.5}.disabled *{pointer-events:none}.input-container{width:100%;margin:auto;display:flex}.input-container .selected-items{display:flex}.input-container .selected-items .overlap-count{font-size:14px;line-height:20px;width:80px}.input-container .selected-items .overlap-tag{position:absolute;opacity:0}.input-container input{margin-left:4px}.input-container input.unset-margin{margin-top:unset}.add-suggestion{margin:0 5px;color:#000;font-weight:700}.remove-selected{cursor:pointer}.remove-selected.large-input-icon{margin-top:10px}.arrow-state{margin-left:8px;height:24px;cursor:pointer}.arrow-state.large-input-icon{margin-top:10px}.arrow-state.opened{transform:rotateX(180deg)}::ng-deep .autocomplete-wrapper .mat-mdc-form-field{max-width:330px;min-width:330px!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error,::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error svg{color:#cb7b7a}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error{display:flex}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error{display:flex;flex-flow:column;row-gap:4px}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error .errors{display:flex}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error .errors ui-icon{margin-right:8px}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error{color:#e02800!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error svg{color:#e02800!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-bottom-align:before{height:0}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint-wrapper{padding:0 0 12px;font-size:12px;line-height:16px;position:relative}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint-wrapper .mat-form-field-hint-spacer{display:none}::ng-deep .autocomplete-wrapper .mat-mdc-form-field.hide-bottom-content .mat-mdc-form-field-subscript-wrapper{display:none}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{top:28px!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:22px!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-text-field-wrapper{padding-left:12px!important;height:unset!important;max-height:unset!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-focused .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{color:#276678!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch{border-bottom:2px solid #276678!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading{border-left:2px solid #276678!important;border-bottom:2px solid #276678!important;border-top:2px solid #276678!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border:2px solid #276678!important;border-left:unset!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-infix,::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-flex{min-height:48px!important;max-height:184px!important;overflow-y:auto;overflow-x:hidden;padding:0!important;display:flex;justify-content:center;text-align:center;align-items:center;flex-direction:row;width:100%}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mdc-line-ripple{display:none!important}::ng-deep .autocomplete-wrapper.full-width .mat-mdc-form-field{width:100%;max-width:100%}::ng-deep .mat-mdc-autocomplete-panel{box-shadow:0 8px 24px 4px #00000014;max-height:312px!important}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option:hover:not(.mdc-list-item--disabled),::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option:focus:not(.mdc-list-item--disabled),::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option.mat-mdc-option-active,::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple):not(.mdc-list-item--disabled){background:#e9f0f1!important}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option{padding-right:32px;padding-left:12px!important}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option ui-icon{display:none;position:absolute;right:0;bottom:calc(50% - 8px);margin:0 10px}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option.selected-option{background:#e9f0f1}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option.selected-option ui-icon{display:block}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option.mdc-list-item--selected .mdc-list-item__primary-text,::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option .mdc-list-item--activated .mdc-list-item__primary-text{color:#000!important}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option .mat-pseudo-checkbox{display:none}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-optgroup .mat-mdc-optgroup-label{font-weight:700!important}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-optgroup .mdc-list-item__primary-text{color:#000;font-size:12px;line-height:16px;font-weight:700}.active-field .mdc-notched-outline__leading{border-left-width:2px;border-top-width:2px;border-bottom-width:2px}.active-field .mdc-notched-outline__notch{border-top-width:2px;border-bottom-width:2px}.active-field .mdc-notched-outline__trailing{border-top-width:2px;border-bottom-width:2px;border-right-width:2px}\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: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i6.MatOptgroup, selector: "mat-optgroup", inputs: ["disabled"], exportAs: ["matOptgroup"] }, { kind: "directive", type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { 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: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8.TagComponent, selector: "ui-tag", inputs: ["label", "icon", "allowClose", "readOnly", "isSelected", "showIconWhenSelected", "isDisabled", "applicationTheme", "ariaLabel", "ariaRequired"], outputs: ["close", "press"] }, { kind: "component", type: i9.IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color", "filled", "applicationTheme"] }, { kind: "component", type: i10.ValidationErrorComponent, selector: "ui-validation-error", inputs: ["ngControl", "label", "applicationTheme", "language"] }, { kind: "directive", type: i11.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i11.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: i11.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i12.SelectTextDirective, selector: "[selectText]", inputs: ["selectText"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i3.SlicePipe, name: "slice" }, { kind: "pipe", type: i13.UiTranslatePipe, name: "uiTranslate" }, { kind: "pipe", type: i14.HasValidationErrorPipe, name: "hasValidationError" }, { kind: "pipe", type: i15.TransformItemPipe, name: "transformItem" }, { kind: "pipe", type: i16.IncludesPipe, name: "includes" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
452
+ }
453
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AutocompleteComponent, decorators: [{
454
+ type: Component,
455
+ args: [{ selector: 'ui-autocomplete', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container>\n <div class=\"autocomplete-wrapper\" [ngClass]=\"{ 'full-width': fullWidth, disabled: disabled }\">\n <mat-form-field\n [color]=\"(safeErrors.length || (ngControl?.errors && ngControl?.touched )) ? 'warn' : 'accent'\"\n [appearance]=\"'outline'\"\n [ngClass]=\"{ 'large-size': type === autocompleteType.LARGE, 'hide-bottom-content': !showBottomContent }\"\n >\n <mat-label *ngIf=\"label\">{{ label }} <span *ngIf=\"required\">*</span></mat-label>\n <div #formField class=\"input-container\">\n <div\n class=\"selected-items\"\n #tagContainer\n *ngIf=\"\n (type === autocompleteType.LARGE && this.value) ||\n (!(inputValue && this.isInputFocus) && this.value && type !== autocompleteType.SINGLE)\n \"\n >\n <ui-tag\n class=\"value-tag\"\n [id]=\"'ui-tag-' + i\"\n *ngFor=\"let valueItem of value; let i = index\"\n [label]=\"valueItem | transformItem: textField\"\n [style.opacity]=\"type === autocompleteType.MULTI ? inputOpacity : 1\"\n [allowClose]=\"true\"\n [applicationTheme]=\"applicationTheme\"\n [style.display]=\"isOverLapping && i >= overlapIndex ? 'none' : 'block'\"\n [ngClass]=\"{\n 'overlap-tag': isOverlapChecking && overlapIndex && i >= overlapIndex && type === autocompleteType.MULTI\n }\"\n (close)=\"onOptionRemoved(valueItem)\"\n ></ui-tag>\n <ng-container *ngIf=\"isOverLapping\">\n <div *ngIf=\"!overlapIndex; else overlapTag\" class=\"overlap-count\">\n {{ (translationContext + 'SELECTED_AMOUNT') | uiTranslate : language : { numberSelected: (value | slice: overlapIndex).length } }}\n </div>\n <ng-template #overlapTag>\n <ui-tag [applicationTheme]=\"applicationTheme\" [readOnly]=\"true\" [label]=\"'+' + (value | slice: overlapIndex).length\"></ui-tag>\n </ng-template>\n </ng-container>\n </div>\n <input\n #trigger=\"matAutocompleteTrigger\"\n [disabled]=\"disabled\"\n [ngClass]=\"{ 'unset-margin': this.value && type === autocompleteType.LARGE }\"\n (blur)=\"refillInput()\"\n (focusin)=\"onFocus()\"\n [style.opacity]=\"type === autocompleteType.MULTI ? inputOpacity : 1\"\n matInput\n [type]=\"'text'\"\n [matAutocomplete]=\"autocomplete\"\n (input)=\"onInputChange($event)\"\n [(ngModel)]=\"inputValue\"\n />\n </div>\n\n <ui-icon\n *ngIf=\"value && ((AutocompleteUtils.isPrimitive(value) && value.length) || (!AutocompleteUtils.isPrimitive(value) && (AutocompleteUtils.isArray(value) && value.length || !AutocompleteUtils.isArray(value) && !value.length)))\"\n class=\"remove-selected\"\n [ngClass]=\"{ 'large-input-icon': type === autocompleteType.LARGE }\"\n (click)=\"onClear();$event.preventDefault();$event.stopPropagation()\"\n [size]=\"'24'\"\n [color]=\"applicationTheme === 'classic' ? 'inherit' : 'rebrand-black'\"\n [name]=\"applicationTheme === 'classic' ? 'Close' : 'Close-in-line'\"\n ></ui-icon>\n\n <ui-icon\n class=\"arrow-state\"\n [ngClass]=\"{ opened: autocomplete.isOpen, 'large-input-icon': type === autocompleteType.LARGE }\"\n *ngIf=\"isDropdown\"\n [size]=\"'24'\"\n [name]=\"applicationTheme !== 'classic' ? 'Arrow-chevron-down-in-line' : 'Arrow_down'\"\n (click)=\"onChevronClick(autocomplete)\"\n ></ui-icon>\n\n <mat-autocomplete\n #autocomplete\n [class]=\"applicationTheme\"\n (optionSelected)=\"onOptionSelected($event)\"\n [disableRipple]=\"applicationTheme !== 'classic'\"\n [hideSingleSelectionIndicator]=\"false\"\n (opened)=\"gotoUp()\"\n >\n <ng-container *ngIf=\"!(searchResult$ | async)\">\n <ng-container *ngIf=\"!isDropdown; else dropdownList\">\n <mat-optgroup [label]=\"(translationContext + 'SUGGESTED') | uiTranslate : language | uppercase\" *ngIf=\"suggestionsList.length\">\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': suggested | includes: value }\"\n *ngFor=\"let suggested of suggestionsList\"\n [value]=\"suggested\"\n >\n <span [selectText]=\"userInput$ | async\">{{ suggested | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n <mat-optgroup [label]=\"(translationContext + 'SELECTED') | uiTranslate : language | uppercase\" *ngIf=\"value?.length && type !== autocompleteType.SINGLE\">\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value }\"\n *ngFor=\"let item of value\"\n [value]=\"item\"\n >\n <span>{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n <mat-optgroup [label]=\"(translationContext + 'SELECTED') | uiTranslate : language | uppercase\" *ngIf=\"value?.length && type === autocompleteType.SINGLE\">\n <mat-option\n (mousedown)=$event.preventDefault()\n [class]=\"'selected-option'\"\n [value]=\"value\"\n >\n <span [selectText]=\"userInput$ | async\">{{ value | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n </ng-container>\n\n <ng-template #dropdownList>\n <cdk-virtual-scroll-viewport *ngIf=\"virtualScroll; else defaultViewPort\" [itemSize]=\"48\" [style.height]=\"'200px'\" class=\"virtual-scroll\">\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value }\"\n *cdkVirtualFor=\"let item of itemsList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </cdk-virtual-scroll-viewport>\n\n <ng-template #defaultViewPort>\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value }\"\n *ngFor=\"let item of itemsList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </ng-template>\n\n </ng-template>\n\n </ng-container>\n\n <ng-container *ngIf=\"filteredSuggestionList$ | async as filteredSuggestionList\">\n <ng-container *ngIf=\"filteredItemsList$ | async as filteredItemsList\">\n <mat-optgroup [label]=\"(translationContext + 'SUGGESTED') | uiTranslate : language | uppercase\" *ngIf=\"filteredSuggestionList.length\">\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value }\"\n *ngFor=\"let item of filteredSuggestionList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n <ng-container *ngIf=\"!filteredSuggestionList.length; else showItemListWithGroup\">\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value }\"\n *ngFor=\"let item of filteredItemsList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </ng-container>\n\n <ng-template #showItemListWithGroup>\n <mat-optgroup [label]=\"(translationContext + 'ALL_ITEMS') | uiTranslate : language | uppercase\" *ngIf=\"filteredItemsList.length\">\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value }\"\n *ngFor=\"let item of filteredItemsList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n </ng-template>\n\n <ng-container *ngIf=\"!filteredItemsList.length && !filteredSuggestionList.length && inputValue\">\n <ng-container *ngIf=\"allowAdd && !isDropdown; else notFound\">\n <mat-option (mousedown)=$event.preventDefault() [value]=\"inputValue\">\n <span>{{ ('COMMON.ADD') | uiTranslate : language }}</span>\n <span class=\"add-suggestion\">\"{{ inputValue }}\"</span>\n </mat-option>\n </ng-container>\n\n <ng-template #notFound>\n <mat-option [style.pointer-events]=\"'none'\">\n <span>{{ (translationContext + 'NO_RESULTS_FOUND') | uiTranslate : language }}</span>\n </mat-option>\n </ng-template>\n </ng-container>\n </ng-container>\n </ng-container>\n </mat-autocomplete>\n <mat-hint class=\"error\" *ngIf=\"safeErrors.length || (ngControl?.errors | hasValidationError)\">\n <ng-container *ngIf=\"safeErrors.length\">\n <div class=\"errors\" *ngFor=\"let error of safeErrors; trackBy: trackByFn\">\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"'Error'\"></ui-icon>\n <span [innerHTML]=\"error\"></span>\n </div>\n </ng-container>\n <ui-validation-error *ngIf=\"ngControl && !hideBuiltInErrors\" [ngControl]=\"ngControl\" [label]=\"hideLabelInErrors ? null : label\" [language]=\"language\"></ui-validation-error>\n\n </mat-hint>\n </mat-form-field>\n </div>\n</ng-container>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.large-size input{margin:10px 0}.large-size .selected-items{margin:5px 0;flex-wrap:wrap}.large-size .input-container{display:block}.large-size ::ng-deep .mat-mdc-form-field-infix,.large-size .mat-mdc-form-field-flex{align-items:unset!important}.disabled{opacity:.5}.disabled *{pointer-events:none}.input-container{width:100%;margin:auto;display:flex}.input-container .selected-items{display:flex}.input-container .selected-items .overlap-count{font-size:14px;line-height:20px;width:80px}.input-container .selected-items .overlap-tag{position:absolute;opacity:0}.input-container input{margin-left:4px}.input-container input.unset-margin{margin-top:unset}.add-suggestion{margin:0 5px;color:#000;font-weight:700}.remove-selected{cursor:pointer}.remove-selected.large-input-icon{margin-top:10px}.arrow-state{margin-left:8px;height:24px;cursor:pointer}.arrow-state.large-input-icon{margin-top:10px}.arrow-state.opened{transform:rotateX(180deg)}::ng-deep .autocomplete-wrapper .mat-mdc-form-field{max-width:330px;min-width:330px!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error,::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error svg{color:#cb7b7a}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error{display:flex}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error{display:flex;flex-flow:column;row-gap:4px}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error .errors{display:flex}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error .errors ui-icon{margin-right:8px}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error{color:#e02800!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error svg{color:#e02800!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-bottom-align:before{height:0}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint-wrapper{padding:0 0 12px;font-size:12px;line-height:16px;position:relative}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint-wrapper .mat-form-field-hint-spacer{display:none}::ng-deep .autocomplete-wrapper .mat-mdc-form-field.hide-bottom-content .mat-mdc-form-field-subscript-wrapper{display:none}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{top:28px!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:22px!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-text-field-wrapper{padding-left:12px!important;height:unset!important;max-height:unset!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-focused .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{color:#276678!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch{border-bottom:2px solid #276678!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading{border-left:2px solid #276678!important;border-bottom:2px solid #276678!important;border-top:2px solid #276678!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border:2px solid #276678!important;border-left:unset!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-infix,::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-flex{min-height:48px!important;max-height:184px!important;overflow-y:auto;overflow-x:hidden;padding:0!important;display:flex;justify-content:center;text-align:center;align-items:center;flex-direction:row;width:100%}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mdc-line-ripple{display:none!important}::ng-deep .autocomplete-wrapper.full-width .mat-mdc-form-field{width:100%;max-width:100%}::ng-deep .mat-mdc-autocomplete-panel{box-shadow:0 8px 24px 4px #00000014;max-height:312px!important}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option:hover:not(.mdc-list-item--disabled),::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option:focus:not(.mdc-list-item--disabled),::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option.mat-mdc-option-active,::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple):not(.mdc-list-item--disabled){background:#e9f0f1!important}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option{padding-right:32px;padding-left:12px!important}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option ui-icon{display:none;position:absolute;right:0;bottom:calc(50% - 8px);margin:0 10px}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option.selected-option{background:#e9f0f1}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option.selected-option ui-icon{display:block}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option.mdc-list-item--selected .mdc-list-item__primary-text,::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option .mdc-list-item--activated .mdc-list-item__primary-text{color:#000!important}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option .mat-pseudo-checkbox{display:none}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-optgroup .mat-mdc-optgroup-label{font-weight:700!important}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-optgroup .mdc-list-item__primary-text{color:#000;font-size:12px;line-height:16px;font-weight:700}.active-field .mdc-notched-outline__leading{border-left-width:2px;border-top-width:2px;border-bottom-width:2px}.active-field .mdc-notched-outline__notch{border-top-width:2px;border-bottom-width:2px}.active-field .mdc-notched-outline__trailing{border-top-width:2px;border-bottom-width:2px;border-right-width:2px}\n"] }]
456
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
457
+ type: Optional
458
+ }, {
459
+ type: Inject,
460
+ args: ['CANOPYUI_DEFAULT_APPLICATION_THEME']
461
+ }] }, { type: i0.ChangeDetectorRef }, { type: i1.DomSanitizer }, { type: i2.NgControl, decorators: [{
462
+ type: Optional
463
+ }, {
464
+ type: Self
465
+ }] }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
466
+ type: Inject,
467
+ args: [PLATFORM_ID]
468
+ }] }]; }, propDecorators: { itemsList: [{
469
+ type: Input
470
+ }], suggestionsList: [{
471
+ type: Input
472
+ }], disabled: [{
473
+ type: Input
474
+ }], allowAdd: [{
475
+ type: Input
476
+ }], textField: [{
477
+ type: Input
478
+ }], valueField: [{
479
+ type: Input
480
+ }], label: [{
481
+ type: Input
482
+ }], itemValue: [{
483
+ type: Input
484
+ }], type: [{
485
+ type: Input
486
+ }], minCharactersSearch: [{
487
+ type: Input
488
+ }], variant: [{
489
+ type: Input,
490
+ args: [{ required: true }]
491
+ }], language: [{
492
+ type: Input
493
+ }], showBottomContent: [{
494
+ type: Input
495
+ }], valuePrimitive: [{
496
+ type: Input
497
+ }], fullWidth: [{
498
+ type: Input
499
+ }], applicationTheme: [{
500
+ type: HostBinding,
501
+ args: ['attr.theme']
502
+ }, {
503
+ type: Input
504
+ }], required: [{
505
+ type: Input
506
+ }], errors: [{
507
+ type: Input
508
+ }], companyColor: [{
509
+ type: Input
510
+ }], hideBuiltInErrors: [{
511
+ type: Input
512
+ }], hideLabelInErrors: [{
513
+ type: Input
514
+ }], virtualScroll: [{
515
+ type: Input,
516
+ args: [{ transform: booleanAttribute }]
517
+ }], selectionChange: [{
518
+ type: Output
519
+ }], searchTextChange: [{
520
+ type: Output
521
+ }], formFieldElement: [{
522
+ type: ViewChild,
523
+ args: ['formField']
524
+ }], tagContainer: [{
525
+ type: ViewChild,
526
+ args: ['tagContainer']
527
+ }], autocomplete: [{
528
+ type: ViewChild,
529
+ args: ['trigger']
530
+ }], cdkVirtualScrollViewPort: [{
531
+ type: ViewChild,
532
+ args: [CdkVirtualScrollViewport, { static: false }]
533
+ }], matAutocomplete: [{
534
+ type: ViewChild,
535
+ args: ['autocomplete']
536
+ }] } });
537
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDVSxnQkFBZ0IsRUFDL0IsdUJBQXVCLEVBRXZCLFNBQVMsRUFHVCxZQUFZLEVBQ1osV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFDTixXQUFXLEVBRVgsSUFBSSxFQUVKLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBb0IsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUc1RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUWxFLG9FQUFvRTtBQUNwRSxNQUFNLE9BQU8scUJBQXFCO0lBa0RoQzs7OztPQUlHO0lBQ0gsSUFBYSxTQUFTLENBQUMsQ0FBTTtRQUMzQixJQUFJLENBQUMsS0FBSyxHQUFHLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENB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QzNCLGVBQWU7c0JBQXpDLFNBQVM7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBEb0NoZWNrLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFBMQVRGT1JNX0lELFxuICBSZW5kZXJlcjIsXG4gIFNlbGYsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlLCBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50LCBNYXRBdXRvY29tcGxldGVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7IG1hcCwgUmVwbGF5U3ViamVjdCwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBdXRvY29tcGxldGVVdGlscyB9IGZyb20gJy4uLy4uL3V0aWxzL2F1dG9jb21wbGV0ZS11dGlscyc7XG5pbXBvcnQgeyBBdXRvY29tcGxldGUsIEF1dG9jb21wbGV0ZVR5cGUsIERyb3Bkb3duVmFyaWF0aW9uLCBQYWRkaW5nLCBUaW1lb3V0IH0gZnJvbSAnLi9hdXRvY29tcGxldGUubW9kZWwnO1xuaW1wb3J0IHsgTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9jYWxpemF0aW9uL2xhbmd1YWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25UaGVtZSB9IGZyb20gJy4uLy4uL21vZGVscy9hcHBsaWNhdGlvbi10aGVtZS5tb2RlbCc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL3Njcm9sbGluZ1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd1aS1hdXRvY29tcGxldGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tY29uZmxpY3RpbmctbGlmZWN5Y2xlXG5leHBvcnQgY2xhc3MgQXV0b2NvbXBsZXRlQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgRG9DaGVjayB7XG4gIC8qKlxuICAgKiBAcHJvcGVydHkgaXRlbXNMaXN0XG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgbGlzdCBvZiBpdGVtcyB0byBkaXNwbGF5IGluIHRoZSBhdXRvY29tcGxldGUuXG4gICAqIEBtZW1iZXJvZiBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGl0ZW1zTGlzdDogYW55W10gPSBbXTtcblxuICAvKipcbiAgICogQHByb3BlcnR5IHN1Z2dlc3Rpb25zTGlzdFxuICAgKiBAZGVzY3JpcHRpb24gVGhlIGxpc3Qgb2Ygc3VnZ2VzdGlvbnMgdG8gZGlzcGxheSBpbiB0aGUgYXV0b2NvbXBsZXRlLlxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBzdWdnZXN0aW9uc0xpc3Q6IGFueVtdID0gW107XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBkaXNhYmxlZFxuICAgKiBAZGVzY3JpcHRpb24gSWYgYHRydWVgLCB0aGUgYXV0b2NvbXBsZXRlIGlzIGRpc2FibGVkLlxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgYWxsb3dBZGRcbiAgICogQGRlc2NyaXB0aW9uIElmIGB0cnVlYCwgYWxsb3dzIGFkZGluZyBuZXcgdmFsdWVzIHRvIHRoZSBhdXRvY29tcGxldGUuXG4gICAqIEBtZW1iZXJvZiBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGFsbG93QWRkID0gdHJ1ZTtcblxuICAvKipcbiAgICogQHByb3BlcnR5IHRleHRGaWVsZFxuICAgKiBAZGVzY3JpcHRpb24gVGhlIGZpZWxkIHRvIGJlIHVzZWQgYXMgdGhlIGRpc3BsYXkgdGV4dCBpbiB0aGUgYXV0b2NvbXBsZXRlLlxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSB0ZXh0RmllbGQgPSAnJztcblxuICAvKipcbiAgICogQHByb3BlcnR5IHZhbHVlRmllbGRcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBmaWVsZCB0byBiZSB1c2VkIGFzIHRoZSB2YWx1ZSBpbiB0aGUgYXV0b2NvbXBsZXRlLlxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSB2YWx1ZUZpZWxkID0gJyc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBsYWJlbFxuICAgKiBAZGVzY3JpcHRpb24gVGhlIGxhYmVsIGZvciB0aGUgYXV0b2NvbXBsZXRlIGlucHV0LlxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBsYWJlbCA9ICcnO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgdmFsdWVcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBzZWxlY3RlZCB2YWx1ZShzKSBpbiB0aGUgYXV0b2NvbXBsZXRlLlxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBzZXQgaXRlbVZhbHVlKHY6IGFueSkge1xuICAgIHRoaXMudmFsdWUgPSBBdXRvY29tcGxldGVVdGlscy5pc0FycmF5KHYpID8gdiA6IHYgPyBbdl0gOiBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgdHlwZVxuICAgKiBAZGVzY3JpcHRpb24gVGhlIHR5cGUgb2YgdGhlIGF1dG9jb21wbGV0ZSAoJ3NpbmdsZScsICdtdWx0aScsIGV0Yy4pLlxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSB0eXBlOiBBdXRvY29tcGxldGVUeXBlID0gJ211bHRpJztcblxuICAvKipcbiAgICogQHByb3BlcnR5IG1pbkNoYXJhY3RlcnNTZWFyY2hcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBtaW5pbXVtIGNoYXJhY3RlcnMgdG8gdHJpZ2dlciBzZWFyY2guXG4gICAqIEBtZW1iZXJvZiBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIG1pbkNoYXJhY3RlcnNTZWFyY2ggPSAzO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgdmFyaWFudFxuICAgKiBAZGVzY3JpcHRpb24gVGhlIHZhcmlhbnQgb2YgQXV0b2NvbXBsZXRlXG4gICAqIEBtZW1iZXJvZiBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHZhcmlhbnQgPSBEcm9wZG93blZhcmlhdGlvbi5BVVRPQ09NUExFVEU7XG5cbiAgLyoqXG4gICAqIFRoZSBsYW5ndWFnZSB0byBiZSB1c2VkXG4gICAqIEBwcm9wZXJ0eSBsYW5ndWFnZVxuICAgKiBAdHlwZSB7TGFuZ3VhZ2V9XG4gICAqIEBtZW1iZXJvZiBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGxhbmd1YWdlID0gTGFuZ3VhZ2VTZXJ2aWNlLmRlZmF1bHRMYW5ndWFnZTtcblxuICAvKipcbiAgICogU2hvdyByZXNlcnZlZCBjb250ZW50IGJlbG93IGZvcm0gZmllbGRcbiAgICogQHByb3BlcnR5IHNob3dCb3R0b21Db250ZW50XG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBzaG93Qm90dG9tQ29udGVudCA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFJldHVybiBmdWxsIG9iamVjdCBpZiB0cnVlXG4gICAqIEBwcm9wZXJ0eSB2YWx1ZVByaW1pdGl2ZVxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgdmFsdWVQcmltaXRpdmUgPSBmYWxzZTtcblxuICAvKipcbiAgICogSW5kaWNhdG9yIG9mIHRoZSBhdXRvY29tcGxldGUgd2lkdGhcbiAgICogQHByb3BlcnR5IGZ1bGxXaWR0aFxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgZnVsbFdpZHRoID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqXG4gICAqIERlZmluZXMgdGhlIGFwcGxpY2F0aW9uIHRoZW1lXG4gICAqXG4gICAqIEB0eXBlIHtBcHBsaWNhdGlvblRoZW1lfVxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2F0dHIudGhlbWUnKVxuICBASW5wdXQoKSBhcHBsaWNhdGlvblRoZW1lOiBBcHBsaWNhdGlvblRoZW1lID0gJ2xpZ2h0JztcblxuICAvKipcbiAgICogQXV0b2NvbXBsZXRlIGlzIHJlcXVpcmVkIG9yIG5vdFxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElucHV0IGZpZWxkIGVycm9yc1xuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nW119XG4gICAqIEBtZW1iZXJvZiBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHNldCBlcnJvcnMoZXJyb3JzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuc2FmZUVycm9ycyA9IGVycm9ycz8uZmlsdGVyKEJvb2xlYW4pLm1hcChlcnJvciA9PiB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChlcnJvcikpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbG9yIG9mIHRoZSBvcHRpb24gaG92ZXIuXG4gICAqIERlZmF1bHRzIHRvIFRlc3QgR29yaWxsYSBwcmltYXJ5IGNvbG9yLlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBjb21wYW55Q29sb3IgPSAnI0ZGRjJGQyc7XG5cbiAgLyoqXG4gICAqIEhpZGUgaW4tYnVpbGQgZXJyb3JzIGZvciBSZWFjdGl2ZSBGb3Jtc1xuICAgKlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBoaWRlQnVpbHRJbkVycm9ycyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBIaWRlIGxhYmVsIGluIGVycm9yc1xuICAgKlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBoaWRlTGFiZWxJbkVycm9ycyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTZXRzIGRyb3Bkb3duIGxpc3QgdG8gdmlydHVhbCBzY3JvbGwgbW9kZVxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHZpcnR1YWxTY3JvbGwgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBzZWFyY2hUZXh0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQFZpZXdDaGlsZCgnZm9ybUZpZWxkJykgZm9ybUZpZWxkRWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ3RhZ0NvbnRhaW5lcicpIHRhZ0NvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ3RyaWdnZXInKSBhdXRvY29tcGxldGU6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXI7XG4gIEBWaWV3Q2hpbGQoQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LCB7IHN0YXRpYzogZmFsc2UgfSkgY2RrVmlydHVhbFNjcm9sbFZpZXdQb3J0OiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ7XG4gIEBWaWV3Q2hpbGQoJ2F1dG9jb21wbGV0ZScpIG1hdEF1dG9jb21wbGV0ZTogTWF0QXV0b2NvbXBsZXRlO1xuICBwcm90ZWN0ZWQgc2FmZUVycm9yczogU2FmZUh0bWxbXSA9IFtdO1xuICBwcm90ZWN0ZWQgdmFsdWU6IGFueTtcbiAgcHJvdGVjdGVkIGlucHV0VmFsdWU6IGFueSA9ICcnO1xuICBwcm90ZWN0ZWQgaXNJbnB1dEZvY3VzID0gZmFsc2U7XG4gIHByb3RlY3RlZCBhdXRvY29tcGxldGVUeXBlID0gQXV0b2NvbXBsZXRlO1xuICBwcm90ZWN0ZWQgaXNPdmVyTGFwcGluZyA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgaXNPdmVybGFwQ2hlY2tpbmcgPSB0cnVlO1xuICBwcm90ZWN0ZWQgb3ZlcmxhcEluZGV4ID0gMDtcbiAgcHJvdGVjdGVkIGlucHV0T3BhY2l0eSA9IDE7XG4gIHByb3RlY3RlZCBpbnB1dFZhbHVlU2VhcmNoJCA9IG5ldyBSZXBsYXlTdWJqZWN0PHN0cmluZz4oMSk7XG4gIHByb3RlY3RlZCB1c2VySW5wdXQkID0gbmV3IFJlcGxheVN1YmplY3Q8c3RyaW5nPigxKTtcbiAgcHJvdGVjdGVkIGZpbHRlcmVkSXRlbXNMaXN0JCA9IHRoaXMuaW5wdXRWYWx1ZVNlYXJjaCQucGlwZShcbiAgICBzdGFydFdpdGgoJycpLFxuICAgIG1hcChpbnB1dFZhbHVlID0+XG4gICAgICBpbnB1dFZhbHVlLmxlbmd0aCA/IEF1dG9jb21wbGV0ZVV0aWxzLmZpbHRlckl0ZW1zKHRoaXMuaXRlbXNMaXN0LCBpbnB1dFZhbHVlLCB0aGlzLnRleHRGaWVsZCkgOiBudWxsXG4gICAgKVxuICApO1xuICBwcm90ZWN0ZWQgZmlsdGVyZWRTdWdnZXN0aW9uTGlzdCQgPSB0aGlzLmlucHV0VmFsdWVTZWFyY2gkLnBpcGUoXG4gICAgbWFwKGlucHV0VmFsdWUgPT5cbiAgICAgIGlucHV0VmFsdWUubGVuZ3RoID8gQXV0b2NvbXBsZXRlVXRpbHMuZmlsdGVySXRlbXModGhpcy5zdWdnZXN0aW9uc0xpc3QsIGlucHV0VmFsdWUsIHRoaXMudGV4dEZpZWxkKSA6IG51bGxcbiAgICApXG4gICk7XG4gIHByb3RlY3RlZCBzZWFyY2hSZXN1bHQkID0gdGhpcy5pbnB1dFZhbHVlU2VhcmNoJC5waXBlKG1hcChpbnB1dFZhbHVlID0+ICEhaW5wdXRWYWx1ZS50cmltKCkpKTtcbiAgcHJvdGVjdGVkIHRyYW5zbGF0aW9uQ29udGV4dCA9ICdBVVRPQ09NUExFVEUuJztcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IEF1dG9jb21wbGV0ZVV0aWxzID0gQXV0b2NvbXBsZXRlVXRpbHM7XG4gIHByaXZhdGUgcmVhZG9ubHkgaXNQbGF0Zm9ybSA9IGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdCgnQ0FOT1BZVUlfREVGQVVMVF9BUFBMSUNBVElPTl9USEVNRScpIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdEFwcFRoZW1lOiBBcHBsaWNhdGlvblRoZW1lLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgIHByaXZhdGUgcmVuZGVyZXIyOiBSZW5kZXJlcjIsXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBhbnlcbiAgKSB7XG4gICAgaWYgKHRoaXMubmdDb250cm9sICE9IG51bGwpIHtcbiAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgIH1cblxuICAgIGlmIChkZWZhdWx0QXBwVGhlbWUpIHtcbiAgICAgIHRoaXMuYXBwbGljYXRpb25UaGVtZSA9IGRlZmF1bHRBcHBUaGVtZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXNlZCB0byBtYXJrIGNvbXBvbmVudCB2aWV3IGFzIGRpcnR5IHdoZW4gdG91Y2hlZCBwcm9ncmFtbWF0aWNhbGx5IHdpdGggbWFya0FzVG91Y2hlZC9tYXJrQWxsQXNUb3VjaGVkIG9yIGVycm9yc1xuICAgKiB0byBkaXNwbGF5IHZhbGlkYXRpb24gZXJyb3JzIHRoYXQgbWlnaHQgaGFwcGVuIChlLmcuIHJlcXVpcmVkKVxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1jb25mbGljdGluZy1saWZlY3ljbGVcbiAgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm5nQ29udHJvbD8udG91Y2hlZCB8fCB0aGlzLm5nQ29udHJvbD8uZXJyb3JzKSB7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWNvbmZsaWN0aW5nLWxpZmVjeWNsZVxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy5pdGVtc0xpc3QgPSBBdXRvY29tcGxldGVVdGlscy5leGNsdWRlU3VnZ2VzdGlvbnModGhpcy5pdGVtc0xpc3QsIHRoaXMuc3VnZ2VzdGlvbnNMaXN0LCB0aGlzLnZhbHVlRmllbGQpO1xuICAgIHRoaXMuaW5pdFZhbHVlKCk7XG5cbiAgICBpZiAodGhpcy5pc1BsYXRmb3JtICYmIGNoYW5nZXNbJ2NvbXBhbnlDb2xvciddKSB7XG4gICAgICB0aGlzLnNldENvbXBhbnlDb2xvclZhcmlhYmxlKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1jb25mbGljdGluZy1saWZlY3ljbGVcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnR5cGUgIT09IEF1dG9jb21wbGV0ZS5MQVJHRSkge1xuICAgICAgdGhpcy5jaGVja092ZXJsYXAoVGltZW91dC5WSUVXX0lOSVRJQUxJWkVEX0NPTVBPTkVOVF9MT0FELCB0cnVlKTtcbiAgICB9XG4gICAgdGhpcy5pc1BsYXRmb3JtICYmIHRoaXMuc2V0Q29tcGFueUNvbG9yVmFyaWFibGUoKTtcbiAgfVxuXG4gIG9uQ2hhbmdlID0gKF86IGFueSkgPT4ge1xuICB9O1xuICBvblRvdWNoID0gKCkgPT4ge1xuICB9O1xuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMudmFsdWVQcmltaXRpdmUgJiYgdGhpcy50ZXh0RmllbGQgJiYgdGhpcy52YWx1ZUZpZWxkKSB7XG4gICAgICBpZiAodGhpcy50eXBlID09PSBBdXRvY29tcGxldGUuU0lOR0xFKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLml0ZW1zTGlzdC5maW5kKGl0ZW0gPT4gaXRlbVt0aGlzLnZhbHVlRmllbGRdID09PSB2YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnZhbHVlID0gW3RoaXMuaXRlbXNMaXN0LmZpbmQoaXRlbSA9PiBpdGVtW3RoaXMudmFsdWVGaWVsZF0gPT09IHZhbHVlKV07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG4gICAgdGhpcy5pbml0VmFsdWUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbk9wdGlvblNlbGVjdGVkKGV2ZW50OiBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXRWYWx1ZSA9IGV2ZW50Lm9wdGlvbi52YWx1ZTtcbiAgICBjb25zdCBpdGVtVmFsdWUgPSBBdXRvY29tcGxldGVVdGlscy5jcmVhdGVWYWx1ZUl0ZW0oaW5wdXRWYWx1ZSwgdGhpcy50ZXh0RmllbGQsIHRoaXMudmFsdWVGaWVsZCk7XG4gICAgdGhpcy5hZGROZXdWYWx1ZShpdGVtVmFsdWUpO1xuXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gdGhpcy5hdXRvY29tcGxldGVUeXBlLk1VTFRJKSB7XG4gICAgICB0aGlzLmNoZWNrT3ZlcmxhcCgpO1xuICAgIH1cblxuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnR5cGUgIT09IHRoaXMuYXV0b2NvbXBsZXRlVHlwZS5TSU5HTEUpIHtcbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gJyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmlucHV0VmFsdWUgPSBBdXRvY29tcGxldGVVdGlscy50cmFuc2Zvcm1EaXNwbGF5VmFsdWUodGhpcy52YWx1ZSwgdGhpcy50ZXh0RmllbGQpO1xuICAgICAgfVxuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLm9uVXBkYXRlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25PcHRpb25SZW1vdmVkKG9wdGlvbjogYW55KTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmF1dG9jb21wbGV0ZS5jbG9zZVBhbmVsKCksIDApO1xuICAgIGNvbnN0IGZvdW5kVmFsdWUgPSB0aGlzLnZhbHVlLmZpbmQoKHY6IGFueSkgPT4gdiA9PT0gb3B0aW9uKTtcblxuICAgIGlmIChmb3VuZFZhbHVlKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS5maWx0ZXIoKHY6IGFueSkgPT4gdiAhPT0gb3B0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50eXBlID09PSB0aGlzLmF1dG9jb21wbGV0ZVR5cGUuTVVMVEkpIHtcbiAgICAgIHRoaXMuY2hlY2tPdmVybGFwKCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnZhbHVlLmxlbmd0aCkge1xuICAgICAgdGhpcy5pbnB1dFZhbHVlID0gJyc7XG4gICAgfVxuXG4gICAgdGhpcy5vblVwZGF0ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uSW5wdXRDaGFuZ2UoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXRWYWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG4gICAgdGhpcy51c2VySW5wdXQkLm5leHQoaW5wdXRWYWx1ZSk7XG4gICAgaWYgKGlucHV0VmFsdWUubGVuZ3RoID49IHRoaXMubWluQ2hhcmFjdGVyc1NlYXJjaCkge1xuICAgICAgdGhpcy5pbnB1dFZhbHVlU2VhcmNoJC5uZXh0KGlucHV0VmFsdWUpO1xuICAgICAgdGhpcy5zZWFyY2hUZXh0Q2hhbmdlLmVtaXQoaW5wdXRWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZVNlYXJjaCQubmV4dCgnJyk7XG4gICAgICB0aGlzLnVzZXJJbnB1dCQubmV4dCgnJyk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG9uQ2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dFZhbHVlID0gJyc7XG4gICAgdGhpcy52YWx1ZSA9IEF1dG9jb21wbGV0ZVV0aWxzLmlzQXJyYXkodGhpcy52YWx1ZSkgPyBbXSA6ICcnO1xuICAgIHRoaXMuaXNPdmVyTGFwcGluZyA9IGZhbHNlO1xuICAgIHRoaXMub3ZlcmxhcEluZGV4ID0gMDtcbiAgICB0aGlzLm9uVXBkYXRlKCk7XG4gICAgdGhpcy5tYXRBdXRvY29tcGxldGU/Lm9wdGlvbnMuZm9yRWFjaChvcHRpb24gPT4gb3B0aW9uLmRlc2VsZWN0KCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlZmlsbElucHV0KCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy50eXBlID09PSB0aGlzLmF1dG9jb21wbGV0ZVR5cGUuU0lOR0xFICYmICF0aGlzLmlucHV0VmFsdWUpIHtcbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gQXV0b2NvbXBsZXRlVXRpbHMudHJhbnNmb3JtRGlzcGxheVZhbHVlKHRoaXMudmFsdWUsIHRoaXMudGV4dEZpZWxkKTtcbiAgICAgIH0gZWxzZSBpZiAoIXRoaXMuaW5wdXRWYWx1ZSAmJiB0aGlzLnZhbHVlPy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gJyAnO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmlucHV0VmFsdWUgJiYgdGhpcy50eXBlID09PSBBdXRvY29tcGxldGUuU0lOR0xFICYmIHRoaXMudmFsdWUgJiYgT2JqZWN0LmtleXModGhpcy52YWx1ZSkubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IEF1dG9jb21wbGV0ZVV0aWxzLnRyYW5zZm9ybURpc3BsYXlWYWx1ZSh0aGlzLnZhbHVlLCB0aGlzLnRleHRGaWVsZCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaW5wdXRWYWx1ZSkge1xuICAgICAgICB0aGlzLmlucHV0VmFsdWUgPSAnICc7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaW5wdXRWYWx1ZVNlYXJjaCQubmV4dCgnJyk7XG4gICAgICB0aGlzLnVzZXJJbnB1dCQubmV4dCgnJyk7XG4gICAgICB0aGlzLmlzSW5wdXRGb2N1cyA9IGZhbHNlO1xuICAgIH0sIDApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdvdG9VcCgpIHtcbiAgICBpZiAodGhpcy5jZGtWaXJ0dWFsU2Nyb2xsVmlld1BvcnQpIHtcbiAgICAgIHRoaXMuY2RrVmlydHVhbFNjcm9sbFZpZXdQb3J0LnNjcm9sbFRvSW5kZXgoMCk7XG4gICAgICB0aGlzLmNka1ZpcnR1YWxTY3JvbGxWaWV3UG9ydC5jaGVja1ZpZXdwb3J0U2l6ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvbkZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuaXNJbnB1dEZvY3VzID0gdHJ1ZTtcblxuICAgIGNvbnN0IGlucHV0VmFsdWUgPSBBdXRvY29tcGxldGVVdGlscy5pc0FycmF5KHRoaXMuaW5wdXRWYWx1ZSkgPyB0aGlzLmlucHV0VmFsdWVbMF0gOiB0aGlzLmlucHV0VmFsdWU7XG5cbiAgICBpZiAoQXV0b2NvbXBsZXRlVXRpbHMuaXNQcmltaXRpdmUoaW5wdXRWYWx1ZSkpIHtcbiAgICAgIGlmICh0eXBlb2YgaW5wdXRWYWx1ZSAhPT0gJ251bWJlcicgJiYgaW5wdXRWYWx1ZT8ubWF0Y2goL15cXHMrL2dtKSkge1xuICAgICAgICB0aGlzLmlucHV0VmFsdWUgPSBpbnB1dFZhbHVlLnRyaW1TdGFydCgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaW5wdXRWYWx1ZVt0aGlzLnRleHRGaWVsZF0/Lm1hdGNoKC9eXFxzKy9nbSkpIHtcbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gaW5wdXRWYWx1ZVt0aGlzLnRleHRGaWVsZF0udHJpbVN0YXJ0KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja092ZXJsYXAoZGVsYXkgPSBUaW1lb3V0LlZJRVdfSU5JVElBTElaRURfQUZURVJfQUNUSU9OLCBpbml0ID0gZmFsc2UpOiB2b2lkIHtcbiAgICB0aGlzLmlzT3ZlckxhcHBpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmlzT3ZlcmxhcENoZWNraW5nID0gdHJ1ZTtcbiAgICB0aGlzLmlucHV0T3BhY2l0eSA9IDA7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0V2lkdGggPSB0aGlzLmlucHV0V2lkdGg7XG4gICAgICBjb25zdCB0YWdzID0gdGhpcy50YWdDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnZhbHVlLXRhZycpO1xuICAgICAgaWYgKHRhZ3MpIHtcbiAgICAgICAgbGV0IHdpZHRoID0gMDtcbiAgICAgICAgbGV0IGZpcnN0VGFnV2lkdGggPSAwO1xuXG4gICAgICAgIHRhZ3MuZm9yRWFjaCgodGFnOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICB3aWR0aCArPSB0YWcuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG5cbiAgICAgICAgICBpZiAoIWluZGV4KSB7XG4gICAgICAgICAgICBmaXJzdFRhZ1dpZHRoID0gd2lkdGg7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCF0aGlzLmlzT3ZlckxhcHBpbmcgJiYgd2lkdGggPiBpbnB1dFdpZHRoKSB7XG4gICAgICAgICAgICB0aGlzLmlzT3ZlckxhcHBpbmcgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5vdmVybGFwSW5kZXggPSBpbmRleDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZmlyc3RUYWdXaWR0aCA+IGlucHV0V2lkdGgpIHtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxhcEluZGV4ID0gMDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmlzT3ZlcmxhcENoZWNraW5nID0gZmFsc2U7XG4gICAgICAgIGlmIChpbml0KSB7XG4gICAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gdGhpcy5hdXRvY29tcGxldGVUeXBlLlNJTkdMRSkge1xuICAgICAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gQXV0b2NvbXBsZXRlVXRpbHMudHJhbnNmb3JtRGlzcGxheVZhbHVlKHRoaXMudmFsdWVbMF0sIHRoaXMudGV4dEZpZWxkKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gJyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaW5wdXRPcGFjaXR5ID0gMTtcbiAgICB9LCBkZWxheSk7XG4gIH1cblxuICBwcml2YXRlIG9uVXBkYXRlKCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRWYWx1ZVNlYXJjaCQubmV4dCgnJyk7XG4gICAgdGhpcy51c2VySW5wdXQkLm5leHQoJycpO1xuICAgIGlmICghdGhpcy52YWx1ZVByaW1pdGl2ZSkge1xuICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gQXV0b2NvbXBsZXRlLlNJTkdMRSkge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWVbdGhpcy52YWx1ZUZpZWxkXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUubWFwKCh2OiBhbnkpID0+IHZbdGhpcy52YWx1ZUZpZWxkXSkpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0VmFsdWUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gdGhpcy5hdXRvY29tcGxldGVUeXBlLlNJTkdMRSAmJiB0aGlzLnZhcmlhbnQgIT09IERyb3Bkb3duVmFyaWF0aW9uLkRST1BET1dOKSB7XG4gICAgICBpZiAoQXV0b2NvbXBsZXRlVXRpbHMuaXNBcnJheSh0aGlzLnZhbHVlKSkge1xuICAgICAgICB0aGlzLmlucHV0VmFsdWUgPSBBdXRvY29tcGxldGVVdGlscy50cmFuc2Zvcm1EaXNwbGF5VmFsdWUodGhpcy52YWx1ZVswXSwgdGhpcy50ZXh0RmllbGQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gdGhpcy52YWx1ZSA/IEF1dG9jb21wbGV0ZVV0aWxzLnRyYW5zZm9ybURpc3BsYXlWYWx1ZSh0aGlzLnZhbHVlLCB0aGlzLnRleHRGaWVsZCkgOiAnJztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMudmFyaWFudCA9PT0gRHJvcGRvd25WYXJpYXRpb24uRFJPUERPV04pIHtcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHRoaXMudmFsdWUgPyBBdXRvY29tcGxldGVVdGlscy50cmFuc2Zvcm1EaXNwbGF5VmFsdWUodGhpcy52YWx1ZSwgdGhpcy50ZXh0RmllbGQpIDogJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS5sZW5ndGggPyAnICcgOiAnJztcbiAgICB9XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gdGhpcy5hdXRvY29tcGxldGVUeXBlLk1VTFRJKSB7XG4gICAgICB0aGlzLmNoZWNrT3ZlcmxhcCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkTmV3VmFsdWUobmV3VmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnR5cGUgIT09IHRoaXMuYXV0b2NvbXBsZXRlVHlwZS5TSU5HTEUgJiYgIXRoaXMudmFsdWUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBmb3VuZER1cGxpY2F0ZSA9IEF1dG9jb21wbGV0ZVV0aWxzLmZpbmREdXBsaWNhdGUodGhpcy52YWx1ZSwgbmV3VmFsdWUsIHRoaXMudGV4dEZpZWxkKTtcblxuICAgIGlmICh0aGlzLnR5cGUgIT09IHRoaXMuYXV0b2NvbXBsZXRlVHlwZS5TSU5HTEUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBmb3VuZER1cGxpY2F0ZSA/IHRoaXMudmFsdWUuZmlsdGVyKCh2OiBhbnkpID0+IHYgIT09IGZvdW5kRHVwbGljYXRlKSA6IFsuLi50aGlzLnZhbHVlLCBuZXdWYWx1ZV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGlzRHJvcGRvd24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmFyaWFudCA9PT0gRHJvcGRvd25WYXJpYXRpb24uRFJPUERPV047XG4gIH1cblxuICBwcm90ZWN0ZWQgb25DaGV2cm9uQ2xpY2soYXV0b2NvbXBsZXRlOiBNYXRBdXRvY29tcGxldGUpOiB2b2lkIHtcbiAgICBpZiAoYXV0b2NvbXBsZXRlLmlzT3Blbikge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlLmNsb3NlUGFuZWwoKTtcbiAgICAgIH0sIDApO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgaW5wdXRXaWR0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmZvcm1GaWVsZEVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggLVxuICAgICAgKHRoaXMuaXNEcm9wZG93biA/IFBhZGRpbmcuRFJPUERPV05fQ09OVEFJTkVSIDogUGFkZGluZy5BVVRPQ09NUExFVEVfQ09OVEFJTkVSKVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdHJhY2tCeUZuID0gKGluZGV4OiBudW1iZXIsIHZhbHVlOiBhbnkpID0+IHZhbHVlLmNoYW5naW5nVGhpc0JyZWFrc0FwcGxpY2F0aW9uU2VjdXJpdHk7XG5cbiAgLyoqXG4gICAqIEFkZGluZyBjb21wYW55IGNvbG9yIHZhcmlhYmxlIHRvIHRoZSBib2R5IHRvIHN0eWxlIG92ZXJsYXkgY29udGFpbmVyIHRoYXQncyBvdXQgb2YgdGhlIGNvbXBvbmVudCBzY29wZS5cbiAgICovXG4gIHByaXZhdGUgc2V0Q29tcGFueUNvbG9yVmFyaWFibGUoKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJlcjIuc2V0UHJvcGVydHkoZG9jdW1lbnQuYm9keSwgJ3N0eWxlJywgYC0tdWktYXV0b2NvbXBsZXRlLW9wdGlvbi1jb2xvcjogJHt0aGlzLmNvbXBhbnlDb2xvcn07YCk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXI+XG4gIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlclwiIFtuZ0NsYXNzXT1cInsgJ2Z1bGwtd2lkdGgnOiBmdWxsV2lkdGgsIGRpc2FibGVkOiBkaXNhYmxlZCB9XCI+XG4gICAgPG1hdC1mb3JtLWZpZWxkXG4gICAgICBbY29sb3JdPVwiKHNhZmVFcnJvcnMubGVuZ3RoIHx8IChuZ0NvbnRyb2w/LmVycm9ycyAmJiBuZ0NvbnRyb2w/LnRvdWNoZWQgKSkgPyAnd2FybicgOiAnYWNjZW50J1wiXG4gICAgICBbYXBwZWFyYW5jZV09XCInb3V0bGluZSdcIlxuICAgICAgW25nQ2xhc3NdPVwieyAnbGFyZ2Utc2l6ZSc6IHR5cGUgPT09IGF1dG9jb21wbGV0ZVR5cGUuTEFSR0UsICdoaWRlLWJvdHRvbS1jb250ZW50JzogIXNob3dCb3R0b21Db250ZW50IH1cIlxuICAgID5cbiAgICAgIDxtYXQtbGFiZWwgKm5nSWY9XCJsYWJlbFwiPnt7IGxhYmVsIH19IDxzcGFuICpuZ0lmPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbWF0LWxhYmVsPlxuICAgICAgPGRpdiAjZm9ybUZpZWxkIGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkLWl0ZW1zXCJcbiAgICAgICAgICAjdGFnQ29udGFpbmVyXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICh0eXBlID09PSBhdXRvY29tcGxldGVUeXBlLkxBUkdFICYmIHRoaXMudmFsdWUpIHx8XG4gICAgICAgICAgICAoIShpbnB1dFZhbHVlICYmIHRoaXMuaXNJbnB1dEZvY3VzKSAmJiB0aGlzLnZhbHVlICYmIHR5cGUgIT09IGF1dG9jb21wbGV0ZVR5cGUuU0lOR0xFKVxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8dWktdGFnXG4gICAgICAgICAgICBjbGFzcz1cInZhbHVlLXRhZ1wiXG4gICAgICAgICAgICBbaWRdPVwiJ3VpLXRhZy0nICsgaVwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgdmFsdWVJdGVtIG9mIHZhbHVlOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgIFtsYWJlbF09XCJ2YWx1ZUl0ZW0gfCB0cmFuc2Zvcm1JdGVtOiB0ZXh0RmllbGRcIlxuICAgICAgICAgICAgW3N0eWxlLm9wYWNpdHldPVwidHlwZSA9PT0gYXV0b2NvbXBsZXRlVHlwZS5NVUxUSSA/IGlucHV0T3BhY2l0eSA6IDFcIlxuICAgICAgICAgICAgW2FsbG93Q2xvc2VdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCJcbiAgICAgICAgICAgIFtzdHlsZS5kaXNwbGF5XT1cImlzT3ZlckxhcHBpbmcgJiYgaSA+PSBvdmVybGFwSW5kZXggPyAnbm9uZScgOiAnYmxvY2snXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ292ZXJsYXAtdGFnJzogaXNPdmVybGFwQ2hlY2tpbmcgJiYgb3ZlcmxhcEluZGV4ICYmIGkgPj0gb3ZlcmxhcEluZGV4ICYmIHR5cGUgPT09IGF1dG9jb21wbGV0ZVR5cGUuTVVMVElcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgKGNsb3NlKT1cIm9uT3B0aW9uUmVtb3ZlZCh2YWx1ZUl0ZW0pXCJcbiAgICAgICAgICA+PC91aS10YWc+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzT3ZlckxhcHBpbmdcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhb3ZlcmxhcEluZGV4OyBlbHNlIG92ZXJsYXBUYWdcIiBjbGFzcz1cIm92ZXJsYXAtY291bnRcIj5cbiAgICAgICAgICAgICAge3sgKHRyYW5zbGF0aW9uQ29udGV4dCArICdTRUxFQ1RFRF9BTU9VTlQnKSB8IHVpVHJhbnNsYXRlIDogbGFuZ3VhZ2UgOiB7IG51bWJlclNlbGVjdGVkOiAodmFsdWUgfCBzbGljZTogb3ZlcmxhcEluZGV4KS5sZW5ndGggfSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI292ZXJsYXBUYWc+XG4gICAgICAgICAgICAgIDx1aS10YWcgW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiIFtyZWFkT25seV09XCJ0cnVlXCIgW2xhYmVsXT1cIicrJyArICh2YWx1ZSB8IHNsaWNlOiBvdmVybGFwSW5kZXgpLmxlbmd0aFwiPjwvdWktdGFnPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICN0cmlnZ2VyPVwibWF0QXV0b2NvbXBsZXRlVHJpZ2dlclwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICd1bnNldC1tYXJnaW4nOiB0aGlzLnZhbHVlICYmIHR5cGUgPT09IGF1dG9jb21wbGV0ZVR5cGUuTEFSR0UgfVwiXG4gICAgICAgICAgKGJsdXIpPVwicmVmaWxsSW5wdXQoKVwiXG4gICAgICAgICAgKGZvY3VzaW4pPVwib25Gb2N1cygpXCJcbiAgICAgICAgICBbc3R5bGUub3BhY2l0eV09XCJ0eXBlID09PSBhdXRvY29tcGxldGVUeXBlLk1VTFRJID8gaW5wdXRPcGFjaXR5IDogMVwiXG4gICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAoaW5wdXQpPVwib25JbnB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImlucHV0VmFsdWVcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDx1aS1pY29uXG4gICAgICAgICpuZ0lmPVwidmFsdWUgJiYgKChBdXRvY29tcGxldGVVdGlscy5pc1ByaW1pdGl2ZSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoKSB8fCAoIUF1dG9jb21wbGV0ZVV0aWxzLmlzUHJpbWl0aXZlKHZhbHVlKSAmJiAoQXV0b2NvbXBsZXRlVXRpbHMuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoIHx8ICFBdXRvY29tcGxldGVVdGlscy5pc0FycmF5KHZhbHVlKSAmJiAhdmFsdWUubGVuZ3RoKSkpXCJcbiAgICAgICAgY2xhc3M9XCJyZW1vdmUtc2VsZWN0ZWRcIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdsYXJnZS1pbnB1dC1pY29uJzogdHlwZSA9PT0gYXV0b2NvbXBsZXRlVHlwZS5MQVJHRSB9XCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ2xlYXIoKTskZXZlbnQucHJldmVudERlZmF1bHQoKTskZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICBbc2l6ZV09XCInMjQnXCJcbiAgICAgICAgW2NvbG9yXT1cImFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJyA/ICdpbmhlcml0JyA6ICdyZWJyYW5kLWJsYWNrJ1wiXG4gICAgICAgIFtuYW1lXT1cImFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJyA/ICdDbG9zZScgOiAnQ2xvc2UtaW4tbGluZSdcIlxuICAgICAgPjwvdWktaWNvbj5cblxuICAgICAgPHVpLWljb25cbiAgICAgICAgY2xhc3M9XCJhcnJvdy1zdGF0ZVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgb3BlbmVkOiBhdXRvY29tcGxldGUuaXNPcGVuLCAnbGFyZ2UtaW5wdXQtaWNvbic6IHR5cGUgPT09IGF1dG9jb21wbGV0ZVR5cGUuTEFSR0UgfVwiXG4gICAgICAgICpuZ0lmPVwiaXNEcm9wZG93blwiXG4gICAgICAgIFtzaXplXT1cIicyNCdcIlxuICAgICAgICBbbmFtZV09XCJhcHBsaWNhdGlvblRoZW1lICE9PSAnY2xhc3NpYycgPyAnQXJyb3ctY2hldnJvbi1kb3duLWluLWxpbmUnIDogJ0Fycm93X2Rvd24nXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ2hldnJvbkNsaWNrKGF1dG9jb21wbGV0ZSlcIlxuICAgICAgPjwvdWktaWNvbj5cblxuICAgICAgPG1hdC1hdXRvY29tcGxldGVcbiAgICAgICAgI2F1dG9jb21wbGV0ZVxuICAgICAgICBbY2xhc3NdPVwiYXBwbGljYXRpb25UaGVtZVwiXG4gICAgICAgIChvcHRpb25TZWxlY3RlZCk9XCJvbk9wdGlvblNlbGVjdGVkKCRldmVudClcIlxuICAgICAgICBbZGlzYWJsZVJpcHBsZV09XCJhcHBsaWNhdGlvblRoZW1lICE9PSAnY2xhc3NpYydcIlxuICAgICAgICBbaGlkZVNpbmdsZVNlbGVjdGlvbkluZGljYXRvcl09XCJmYWxzZVwiXG4gICAgICAgIChvcGVuZWQpPVwiZ290b1VwKClcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIShzZWFyY2hSZXN1bHQkIHwgYXN5bmMpXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0Ryb3Bkb3duOyBlbHNlIGRyb3Bkb3duTGlzdFwiPlxuICAgICAgICAgICAgPG1hdC1vcHRncm91cCBbbGFiZWxdPVwiKHRyYW5zbGF0aW9uQ29udGV4dCArICdTVUdHRVNURUQnKSB8IHVpVHJhbnNsYXRlIDogbGFuZ3VhZ2UgfCB1cHBlcmNhc2VcIiAqbmdJZj1cInN1Z2dlc3Rpb25zTGlzdC5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb25cbiAgICAgICAgICAgICAgICAobW91c2Vkb3duKT0kZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NlbGVjdGVkLW9wdGlvbic6IHN1Z2dlc3RlZCB8IGluY2x1ZGVzOiB2YWx1ZSB9XCJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgc3VnZ2VzdGVkIG9mIHN1Z2dlc3Rpb25zTGlzdFwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cInN1Z2dlc3RlZFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiBbc2VsZWN0VGV4dF09XCJ1c2VySW5wdXQkIHwgYXN5bmNcIj57eyBzdWdnZXN0ZWQgfCB0cmFuc2Zvcm1JdGVtOiB0ZXh0RmllbGQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHVpLWljb24gW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiIFtuYW1lXT1cImFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJyA/ICdDaGVjaycgOiAnQ2hlY2staW4tbGluZSdcIj48L3VpLWljb24+XG4gICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LW9wdGdyb3VwPlxuXG4gICAgICAgICAgICA8bWF0LW9wdGdyb3VwIFtsYWJlbF09XCIodHJhbnNsYXRpb25Db250ZXh0ICsgJ1NFTEVDVEVEJykgfCB1aVRyYW5zbGF0ZSA6IGxhbmd1YWdlIHwgdXBwZXJjYXNlXCIgKm5nSWY9XCJ2YWx1ZT8ubGVuZ3RoICYmIHR5cGUgIT09IGF1dG9jb21wbGV0ZVR5cGUuU0lOR0xFXCI+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgICAgICAgKG1vdXNlZG93bik9JGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzZWxlY3RlZC1vcHRpb24nOiBpdGVtIHwgaW5jbHVkZXM6IHZhbHVlIH1cIlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHZhbHVlXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiaXRlbVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBpdGVtIHwgdHJhbnNmb3JtSXRlbTogdGV4dEZpZWxkIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDx1aS1pY29uIFthcHBsaWNhdGlvblRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIiBbbmFtZV09XCJhcHBsaWNhdGlvblRoZW1lID09PSAnY2xhc3NpYycgPyAnQ2hlY2snIDogJ0NoZWNrLWluLWxpbmUnXCI+PC91aS1pY29uPlxuICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1vcHRncm91cD5cblxuICAgICAgICAgICAgPG1hdC1vcHRncm91cCBbbGFiZWxdPVwiKHRyYW5zbGF0aW9uQ29udGV4dCArICdTRUxFQ1RFRCcpIHwgdWlUcmFuc2xhdGUgOiBsYW5ndWFnZSB8IHVwcGVyY2FzZVwiICpuZ0lmPVwidmFsdWU/Lmxlbmd0aCAmJiB0eXBlID09PSBhdXRvY29tcGxldGVUeXBlLlNJTkdMRVwiPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPSRldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cIidzZWxlY3RlZC1vcHRpb24nXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gW3NlbGVjdFRleHRdPVwidXNlcklucHV0JCB8IGFzeW5jXCI+e3sgdmFsdWUgfCB0cmFuc2Zvcm1JdGVtOiB0ZXh0RmllbGQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHVpLWljb24gW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiIFtuYW1lXT1cImFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJyA/ICdDaGVjaycgOiAnQ2hlY2staW4tbGluZSdcIj48L3VpLWljb24+XG4gICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LW9wdGdyb3VwPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNkcm9wZG93bkxpc3Q+XG4gICAgICAgICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0ICpuZ0lmPVwidmlydHVhbFNjcm9sbDsgZWxzZSBkZWZhdWx0Vmlld1BvcnRcIiBbaXRlbVNpemVdPVwiNDhcIiBbc3R5bGUuaGVpZ2h0XT1cIicyMDBweCdcIiBjbGFzcz1cInZpcnR1YWwtc2Nyb2xsXCI+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgICAgICAgKG1vdXNlZG93bik9JGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzZWxlY3RlZC1vcHRpb24nOiBpdGVtIHwgaW5jbHVkZXM6IHZhbHVlIH1cIlxuICAgICAgICAgICAgICAgICpjZGtWaXJ0dWFsRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNMaXN0XCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiaXRlbVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiBbc2VsZWN0VGV4dF09XCJ1c2VySW5wdXQkIHwgYXN5bmNcIj57eyBpdGVtIHwgdHJhbnNmb3JtSXRlbTogdGV4dEZpZWxkIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDx1aS1pY29uIFthcHBsaWNhdGlvblRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIiBbbmFtZV09XCJhcHBsaWNhdGlvblRoZW1lID09PSAnY2xhc3NpYycgPyAnQ2hlY2snIDogJ0NoZWNrLWluLWxpbmUnXCI+PC91aS1pY29uPlxuICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cblxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Vmlld1BvcnQ+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgICAgICAgKG1vdXNlZG93bik9JGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzZWxlY3RlZC1vcHRpb24nOiBpdGVtIHwgaW5jbHVkZXM6IHZhbHVlIH1cIlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zTGlzdFwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gW3NlbGVjdFRleHRdPVwidXNlcklucHV0JCB8IGFzeW5jXCI+e3sgaXRlbSB8IHRyYW5zZm9ybUl0ZW06IHRleHRGaWVsZCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8dWktaWNvbiBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCIgW25hbWVdPVwiYXBwbGljYXRpb25UaGVtZSA9PT0gJ2NsYXNzaWMnID8gJ0NoZWNrJyA6ICdDaGVjay1pbi1saW5lJ1wiPjwvdWktaWNvbj5cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlcmVkU3VnZ2VzdGlvbkxpc3QkIHwgYXN5bmMgYXMgZmlsdGVyZWRTdWdnZXN0aW9uTGlzdFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXJlZEl0ZW1zTGlzdCQgfCBhc3luYyBhcyBmaWx0ZXJlZEl0ZW1zTGlzdFwiPlxuICAgICAgICAgICAgPG1hdC1vcHRncm91cCBbbGFiZWxdPVwiKHRyYW5zbGF0aW9uQ29udGV4dCArICdTVUdHRVNURUQnKSB8IHVpVHJhbnNsYXRlIDogbGFuZ3VhZ2UgfCB1cHBlcmNhc2VcIiAqbmdJZj1cImZpbHRlcmVkU3VnZ2VzdGlvbkxpc3QubGVuZ3RoXCI+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgICAgICAgKG1vdXNlZG93bik9JGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzZWxlY3RlZC1vcHRpb24nOiBpdGVtIHwgaW5jbHVkZXM6IHZhbHVlIH1cIlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpbHRlcmVkU3VnZ2VzdGlvbkxpc3RcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIFtzZWxlY3RUZXh0XT1cInVzZXJJbnB1dCQgfCBhc3luY1wiPnt7IGl0ZW0gfCB0cmFuc2Zvcm1JdGVtOiB0ZXh0RmllbGQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHVpLWljb24gW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiIFtuYW1lXT1cImFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJyA/ICdDaGVjaycgOiAnQ2hlY2staW4tbGluZSdcIj48L3VpLWljb24+XG4gICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LW9wdGdyb3VwPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZpbHRlcmVkU3VnZ2VzdGlvbkxpc3QubGVuZ3RoOyBlbHNlIHNob3dJdGVtTGlzdFdpdGhHcm91cFwiPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPSRldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2VsZWN0ZWQtb3B0aW9uJzogaXRlbSB8IGluY2x1ZGVzOiB2YWx1ZSB9XCJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJlZEl0ZW1zTGlzdFwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gW3NlbGVjdFRleHRdPVwidXNlcklucHV0JCB8IGFzeW5jXCI+e3sgaXRlbSB8IHRyYW5zZm9ybUl0ZW06IHRleHRGaWVsZCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8dWktaWNvbiBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCIgW25hbWVdPVwiYXBwbGljYXRpb25UaGVtZSA9PT0gJ2NsYXNzaWMnID8gJ0NoZWNrJyA6ICdDaGVjay1pbi1saW5lJ1wiPjwvdWktaWNvbj5cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc2hvd0l0ZW1MaXN0V2l0aEdyb3VwPlxuICAgICAgICAgICAgICA8bWF0LW9wdGdyb3VwIFtsYWJlbF09XCIodHJhbnNsYXRpb25Db250ZXh0ICsgJ0FMTF9JVEVNUycpIHwgdWlUcmFuc2xhdGUgOiBsYW5ndWFnZSB8IHVwcGVyY2FzZVwiICpuZ0lmPVwiZmlsdGVyZWRJdGVtc0xpc3QubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb25cbiAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPSRldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzZWxlY3RlZC1vcHRpb24nOiBpdGVtIHwgaW5jbHVkZXM6IHZhbHVlIH1cIlxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsdGVyZWRJdGVtc0xpc3RcIlxuICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW1cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIFtzZWxlY3RUZXh0XT1cInVzZXJJbnB1dCQgfCBhc3luY1wiPnt7IGl0ZW0gfCB0cmFuc2Zvcm1JdGVtOiB0ZXh0RmllbGQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8dWktaWNvbiBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCIgW25hbWVdPVwiYXBwbGljYXRpb25UaGVtZSA9PT0gJ2NsYXNzaWMnID8gJ0NoZWNrJyA6ICdDaGVjay1pbi1saW5lJ1wiPjwvdWktaWNvbj5cbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgIDwvbWF0LW9wdGdyb3VwPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmaWx0ZXJlZEl0ZW1zTGlzdC5sZW5ndGggJiYgIWZpbHRlcmVkU3VnZ2VzdGlvbkxpc3QubGVuZ3RoICYmIGlucHV0VmFsdWVcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFsbG93QWRkICYmICFpc0Ryb3Bkb3duOyBlbHNlIG5vdEZvdW5kXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKG1vdXNlZG93bik9JGV2ZW50LnByZXZlbnREZWZhdWx0KCkgW3ZhbHVlXT1cImlucHV0VmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ICgnQ09NTU9OLkFERCcpIHwgdWlUcmFuc2xhdGUgOiBsYW5ndWFnZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWRkLXN1Z2dlc3Rpb25cIj5cInt7IGlucHV0VmFsdWUgfX1cIjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm90Rm91bmQ+XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3N0eWxlLnBvaW50ZXItZXZlbnRzXT1cIidub25lJ1wiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgKHRyYW5zbGF0aW9uQ29udGV4dCArICdOT19SRVNVTFRTX0ZPVU5EJykgfCB1aVRyYW5zbGF0ZSA6IGxhbmd1YWdlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cbiAgICAgIDxtYXQtaGludCBjbGFzcz1cImVycm9yXCIgKm5nSWY9XCJzYWZlRXJyb3JzLmxlbmd0aCB8fCAobmdDb250cm9sPy5lcnJvcnMgfCBoYXNWYWxpZGF0aW9uRXJyb3IpXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzYWZlRXJyb3JzLmxlbmd0aFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJlcnJvcnNcIiAqbmdGb3I9XCJsZXQgZXJyb3Igb2Ygc2FmZUVycm9yczsgdHJhY2tCeTogdHJhY2tCeUZuXCI+XG4gICAgICAgICAgICA8dWktaWNvbiBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCIgW25hbWVdPVwiJ0Vycm9yJ1wiPjwvdWktaWNvbj5cbiAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiZXJyb3JcIj48L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8dWktdmFsaWRhdGlvbi1lcnJvciAqbmdJZj1cIm5nQ29udHJvbCAmJiAhaGlkZUJ1aWx0SW5FcnJvcnNcIiBbbmdDb250cm9sXT1cIm5nQ29udHJvbFwiIFtsYWJlbF09XCJoaWRlTGFiZWxJbkVycm9ycyA/IG51bGwgOiBsYWJlbFwiIFtsYW5ndWFnZV09XCJsYW5ndWFnZVwiPjwvdWktdmFsaWRhdGlvbi1lcnJvcj5cblxuICAgICAgPC9tYXQtaGludD5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19