cax-design-system 2.8.0 → 2.8.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 (1820) hide show
  1. package/README.md +46 -46
  2. package/accordion/index.d.ts +286 -3
  3. package/animate/index.d.ts +41 -3
  4. package/animateonscroll/index.d.ts +75 -3
  5. package/api/index.d.ts +1856 -3
  6. package/autocomplete/index.d.ts +799 -3
  7. package/autofocus/index.d.ts +29 -3
  8. package/avatar/index.d.ts +80 -3
  9. package/avatargroup/index.d.ts +30 -3
  10. package/badge/index.d.ts +67 -5
  11. package/baseicon/index.d.ts +18 -5
  12. package/blockui/index.d.ts +77 -3
  13. package/breadcrumb/index.d.ts +105 -3
  14. package/button/index.d.ts +170 -3
  15. package/buttongroup/index.d.ts +14 -5
  16. package/calendar/index.d.ts +935 -3
  17. package/card/index.d.ts +92 -3
  18. package/carousel/index.d.ts +290 -3
  19. package/cascadeselect/index.d.ts +564 -3
  20. package/cax-design-system-2.8.2.tgz +0 -0
  21. package/chart/index.d.ts +88 -3
  22. package/checkbox/index.d.ts +204 -3
  23. package/chip/index.d.ts +63 -3
  24. package/chips/index.d.ts +305 -3
  25. package/colorpicker/index.d.ts +265 -3
  26. package/commentbox/index.d.ts +138 -5
  27. package/confirmdialog/index.d.ts +336 -3
  28. package/confirmpopup/index.d.ts +148 -3
  29. package/contextmenu/index.d.ts +261 -3
  30. package/dataview/index.d.ts +457 -3
  31. package/defer/index.d.ts +40 -3
  32. package/dialog/index.d.ts +411 -3
  33. package/divider/index.d.ts +56 -3
  34. package/dock/index.d.ts +136 -3
  35. package/dom/index.d.ts +105 -3
  36. package/dragdrop/index.d.ts +120 -3
  37. package/dropdown/index.d.ts +818 -3
  38. package/dynamicdialog/index.d.ts +490 -3
  39. package/editor/index.d.ts +177 -3
  40. package/fesm2022/cax-design-system-accordion.mjs +4 -4
  41. package/fesm2022/cax-design-system-accordion.mjs.map +1 -1
  42. package/fesm2022/cax-design-system-animate.mjs +1 -1
  43. package/fesm2022/cax-design-system-animate.mjs.map +1 -1
  44. package/fesm2022/cax-design-system-animateonscroll.mjs +1 -1
  45. package/fesm2022/cax-design-system-animateonscroll.mjs.map +1 -1
  46. package/fesm2022/cax-design-system-api.mjs +1 -1
  47. package/fesm2022/cax-design-system-api.mjs.map +1 -1
  48. package/fesm2022/cax-design-system-autocomplete.mjs +3 -3
  49. package/fesm2022/cax-design-system-autocomplete.mjs.map +1 -1
  50. package/fesm2022/cax-design-system-autofocus.mjs +1 -1
  51. package/fesm2022/cax-design-system-autofocus.mjs.map +1 -1
  52. package/fesm2022/cax-design-system-avatar.mjs +3 -3
  53. package/fesm2022/cax-design-system-avatar.mjs.map +1 -1
  54. package/fesm2022/cax-design-system-avatargroup.mjs +3 -3
  55. package/fesm2022/cax-design-system-avatargroup.mjs.map +1 -1
  56. package/fesm2022/cax-design-system-badge.mjs +3 -3
  57. package/fesm2022/cax-design-system-badge.mjs.map +1 -1
  58. package/fesm2022/cax-design-system-baseicon.mjs +1 -1
  59. package/fesm2022/cax-design-system-baseicon.mjs.map +1 -1
  60. package/fesm2022/cax-design-system-blockui.mjs +1 -1
  61. package/fesm2022/cax-design-system-blockui.mjs.map +1 -1
  62. package/fesm2022/cax-design-system-breadcrumb.mjs +3 -3
  63. package/fesm2022/cax-design-system-breadcrumb.mjs.map +1 -1
  64. package/fesm2022/cax-design-system-button.mjs +3 -3
  65. package/fesm2022/cax-design-system-button.mjs.map +1 -1
  66. package/fesm2022/cax-design-system-buttongroup.mjs +1 -1
  67. package/fesm2022/cax-design-system-buttongroup.mjs.map +1 -1
  68. package/fesm2022/cax-design-system-calendar.mjs +5 -5
  69. package/fesm2022/cax-design-system-calendar.mjs.map +1 -1
  70. package/fesm2022/cax-design-system-card.mjs +3 -3
  71. package/fesm2022/cax-design-system-card.mjs.map +1 -1
  72. package/fesm2022/cax-design-system-carousel.mjs +1 -1
  73. package/fesm2022/cax-design-system-carousel.mjs.map +1 -1
  74. package/fesm2022/cax-design-system-cascadeselect.mjs +5 -5
  75. package/fesm2022/cax-design-system-cascadeselect.mjs.map +1 -1
  76. package/fesm2022/cax-design-system-chart.mjs +1 -1
  77. package/fesm2022/cax-design-system-chart.mjs.map +1 -1
  78. package/fesm2022/cax-design-system-checkbox.mjs +3 -3
  79. package/fesm2022/cax-design-system-checkbox.mjs.map +1 -1
  80. package/fesm2022/cax-design-system-chip.mjs +3 -3
  81. package/fesm2022/cax-design-system-chip.mjs.map +1 -1
  82. package/fesm2022/cax-design-system-chips.mjs +4 -4
  83. package/fesm2022/cax-design-system-chips.mjs.map +1 -1
  84. package/fesm2022/cax-design-system-colorpicker.mjs +3 -3
  85. package/fesm2022/cax-design-system-colorpicker.mjs.map +1 -1
  86. package/fesm2022/cax-design-system-commentbox.mjs +3 -3
  87. package/fesm2022/cax-design-system-commentbox.mjs.map +1 -1
  88. package/fesm2022/cax-design-system-confirmdialog.mjs +3 -3
  89. package/fesm2022/cax-design-system-confirmdialog.mjs.map +1 -1
  90. package/fesm2022/cax-design-system-confirmpopup.mjs +2 -2
  91. package/fesm2022/cax-design-system-confirmpopup.mjs.map +1 -1
  92. package/fesm2022/cax-design-system-contextmenu.mjs +1 -1
  93. package/fesm2022/cax-design-system-contextmenu.mjs.map +1 -1
  94. package/fesm2022/cax-design-system-dataview.mjs +1 -1
  95. package/fesm2022/cax-design-system-dataview.mjs.map +1 -1
  96. package/fesm2022/cax-design-system-defer.mjs +1 -1
  97. package/fesm2022/cax-design-system-defer.mjs.map +1 -1
  98. package/fesm2022/cax-design-system-dialog.mjs +3 -3
  99. package/fesm2022/cax-design-system-dialog.mjs.map +1 -1
  100. package/fesm2022/cax-design-system-divider.mjs +3 -3
  101. package/fesm2022/cax-design-system-divider.mjs.map +1 -1
  102. package/fesm2022/cax-design-system-dock.mjs +1 -1
  103. package/fesm2022/cax-design-system-dock.mjs.map +1 -1
  104. package/fesm2022/cax-design-system-dom.mjs.map +1 -1
  105. package/fesm2022/cax-design-system-dragdrop.mjs +1 -1
  106. package/fesm2022/cax-design-system-dragdrop.mjs.map +1 -1
  107. package/fesm2022/cax-design-system-dropdown.mjs +6 -6
  108. package/fesm2022/cax-design-system-dropdown.mjs.map +1 -1
  109. package/fesm2022/cax-design-system-dynamicdialog.mjs +1 -1
  110. package/fesm2022/cax-design-system-dynamicdialog.mjs.map +1 -1
  111. package/fesm2022/cax-design-system-editor.mjs +3 -3
  112. package/fesm2022/cax-design-system-editor.mjs.map +1 -1
  113. package/fesm2022/cax-design-system-fieldset.mjs +2 -2
  114. package/fesm2022/cax-design-system-fieldset.mjs.map +1 -1
  115. package/fesm2022/cax-design-system-fileupload.mjs +1 -1
  116. package/fesm2022/cax-design-system-fileupload.mjs.map +1 -1
  117. package/fesm2022/cax-design-system-floatlabel.mjs +1 -1
  118. package/fesm2022/cax-design-system-floatlabel.mjs.map +1 -1
  119. package/fesm2022/cax-design-system-focustrap.mjs +1 -1
  120. package/fesm2022/cax-design-system-focustrap.mjs.map +1 -1
  121. package/fesm2022/cax-design-system-galleria.mjs +1 -1
  122. package/fesm2022/cax-design-system-galleria.mjs.map +1 -1
  123. package/fesm2022/cax-design-system-iconfield.mjs +1 -1
  124. package/fesm2022/cax-design-system-iconfield.mjs.map +1 -1
  125. package/fesm2022/cax-design-system-icons-angledoubledown.mjs.map +1 -1
  126. package/fesm2022/cax-design-system-icons-angledoubleleft.mjs.map +1 -1
  127. package/fesm2022/cax-design-system-icons-angledoubleright.mjs.map +1 -1
  128. package/fesm2022/cax-design-system-icons-angledoubleup.mjs.map +1 -1
  129. package/fesm2022/cax-design-system-icons-angledown.mjs.map +1 -1
  130. package/fesm2022/cax-design-system-icons-angleleft.mjs.map +1 -1
  131. package/fesm2022/cax-design-system-icons-angleright.mjs.map +1 -1
  132. package/fesm2022/cax-design-system-icons-angleup.mjs.map +1 -1
  133. package/fesm2022/cax-design-system-icons-arrowdown.mjs.map +1 -1
  134. package/fesm2022/cax-design-system-icons-arrowdownleft.mjs.map +1 -1
  135. package/fesm2022/cax-design-system-icons-arrowdownright.mjs.map +1 -1
  136. package/fesm2022/cax-design-system-icons-arrowleft.mjs.map +1 -1
  137. package/fesm2022/cax-design-system-icons-arrowright.mjs.map +1 -1
  138. package/fesm2022/cax-design-system-icons-arrowup.mjs.map +1 -1
  139. package/fesm2022/cax-design-system-icons-ban.mjs.map +1 -1
  140. package/fesm2022/cax-design-system-icons-bars.mjs.map +1 -1
  141. package/fesm2022/cax-design-system-icons-blank.mjs.map +1 -1
  142. package/fesm2022/cax-design-system-icons-calendar.mjs.map +1 -1
  143. package/fesm2022/cax-design-system-icons-caretleft.mjs.map +1 -1
  144. package/fesm2022/cax-design-system-icons-caretright.mjs.map +1 -1
  145. package/fesm2022/cax-design-system-icons-check.mjs.map +1 -1
  146. package/fesm2022/cax-design-system-icons-chevrondown.mjs.map +1 -1
  147. package/fesm2022/cax-design-system-icons-chevronleft.mjs.map +1 -1
  148. package/fesm2022/cax-design-system-icons-chevronright.mjs.map +1 -1
  149. package/fesm2022/cax-design-system-icons-chevronup.mjs.map +1 -1
  150. package/fesm2022/cax-design-system-icons-exclamationtriangle.mjs.map +1 -1
  151. package/fesm2022/cax-design-system-icons-eye.mjs.map +1 -1
  152. package/fesm2022/cax-design-system-icons-eyeslash.mjs.map +1 -1
  153. package/fesm2022/cax-design-system-icons-filter.mjs.map +1 -1
  154. package/fesm2022/cax-design-system-icons-filterslash.mjs.map +1 -1
  155. package/fesm2022/cax-design-system-icons-home.mjs.map +1 -1
  156. package/fesm2022/cax-design-system-icons-infocircle.mjs.map +1 -1
  157. package/fesm2022/cax-design-system-icons-minus.mjs.map +1 -1
  158. package/fesm2022/cax-design-system-icons-pencil.mjs.map +1 -1
  159. package/fesm2022/cax-design-system-icons-plus.mjs.map +1 -1
  160. package/fesm2022/cax-design-system-icons-refresh.mjs.map +1 -1
  161. package/fesm2022/cax-design-system-icons-search.mjs.map +1 -1
  162. package/fesm2022/cax-design-system-icons-searchminus.mjs.map +1 -1
  163. package/fesm2022/cax-design-system-icons-searchplus.mjs.map +1 -1
  164. package/fesm2022/cax-design-system-icons-sortalt.mjs.map +1 -1
  165. package/fesm2022/cax-design-system-icons-sortamountdown.mjs.map +1 -1
  166. package/fesm2022/cax-design-system-icons-sortamountupalt.mjs.map +1 -1
  167. package/fesm2022/cax-design-system-icons-spinner.mjs.map +1 -1
  168. package/fesm2022/cax-design-system-icons-star.mjs.map +1 -1
  169. package/fesm2022/cax-design-system-icons-starfill.mjs.map +1 -1
  170. package/fesm2022/cax-design-system-icons-thlarge.mjs.map +1 -1
  171. package/fesm2022/cax-design-system-icons-times.mjs.map +1 -1
  172. package/fesm2022/cax-design-system-icons-timescircle.mjs.map +1 -1
  173. package/fesm2022/cax-design-system-icons-trash.mjs.map +1 -1
  174. package/fesm2022/cax-design-system-icons-undo.mjs.map +1 -1
  175. package/fesm2022/cax-design-system-icons-upload.mjs.map +1 -1
  176. package/fesm2022/cax-design-system-icons-windowmaximize.mjs.map +1 -1
  177. package/fesm2022/cax-design-system-icons-windowminimize.mjs.map +1 -1
  178. package/fesm2022/cax-design-system-image.mjs +4 -4
  179. package/fesm2022/cax-design-system-image.mjs.map +1 -1
  180. package/fesm2022/cax-design-system-inplace.mjs +1 -1
  181. package/fesm2022/cax-design-system-inplace.mjs.map +1 -1
  182. package/fesm2022/cax-design-system-inputgroup.mjs +3 -3
  183. package/fesm2022/cax-design-system-inputgroup.mjs.map +1 -1
  184. package/fesm2022/cax-design-system-inputgroupaddon.mjs +3 -3
  185. package/fesm2022/cax-design-system-inputgroupaddon.mjs.map +1 -1
  186. package/fesm2022/cax-design-system-inputicon.mjs +1 -1
  187. package/fesm2022/cax-design-system-inputicon.mjs.map +1 -1
  188. package/fesm2022/cax-design-system-inputmask.mjs +3 -3
  189. package/fesm2022/cax-design-system-inputmask.mjs.map +1 -1
  190. package/fesm2022/cax-design-system-inputnumber.mjs +3 -3
  191. package/fesm2022/cax-design-system-inputnumber.mjs.map +1 -1
  192. package/fesm2022/cax-design-system-inputotp.mjs +1 -1
  193. package/fesm2022/cax-design-system-inputotp.mjs.map +1 -1
  194. package/fesm2022/cax-design-system-inputswitch.mjs +1 -1
  195. package/fesm2022/cax-design-system-inputswitch.mjs.map +1 -1
  196. package/fesm2022/cax-design-system-inputtext.mjs +3 -3
  197. package/fesm2022/cax-design-system-inputtext.mjs.map +1 -1
  198. package/fesm2022/cax-design-system-inputtextarea.mjs +3 -3
  199. package/fesm2022/cax-design-system-inputtextarea.mjs.map +1 -1
  200. package/fesm2022/cax-design-system-keyfilter.mjs +1 -1
  201. package/fesm2022/cax-design-system-keyfilter.mjs.map +1 -1
  202. package/fesm2022/cax-design-system-knob.mjs +1 -1
  203. package/fesm2022/cax-design-system-knob.mjs.map +1 -1
  204. package/fesm2022/cax-design-system-listbox.mjs +1 -1
  205. package/fesm2022/cax-design-system-listbox.mjs.map +1 -1
  206. package/fesm2022/cax-design-system-logo.mjs +3 -3
  207. package/fesm2022/cax-design-system-logo.mjs.map +1 -1
  208. package/fesm2022/cax-design-system-megamenu.mjs +1 -1
  209. package/fesm2022/cax-design-system-megamenu.mjs.map +1 -1
  210. package/fesm2022/cax-design-system-menu.mjs +5 -5
  211. package/fesm2022/cax-design-system-menu.mjs.map +1 -1
  212. package/fesm2022/cax-design-system-menubar.mjs +1 -1
  213. package/fesm2022/cax-design-system-menubar.mjs.map +1 -1
  214. package/fesm2022/cax-design-system-message.mjs +1 -1
  215. package/fesm2022/cax-design-system-message.mjs.map +1 -1
  216. package/fesm2022/cax-design-system-messages.mjs +4 -4
  217. package/fesm2022/cax-design-system-messages.mjs.map +1 -1
  218. package/fesm2022/cax-design-system-metergroup.mjs +1 -1
  219. package/fesm2022/cax-design-system-metergroup.mjs.map +1 -1
  220. package/fesm2022/cax-design-system-multiselect.mjs +5 -5
  221. package/fesm2022/cax-design-system-multiselect.mjs.map +1 -1
  222. package/fesm2022/cax-design-system-navigation.mjs +3 -3
  223. package/fesm2022/cax-design-system-navigation.mjs.map +1 -1
  224. package/fesm2022/cax-design-system-orderlist.mjs +1 -1
  225. package/fesm2022/cax-design-system-orderlist.mjs.map +1 -1
  226. package/fesm2022/cax-design-system-organizationchart.mjs +2 -2
  227. package/fesm2022/cax-design-system-organizationchart.mjs.map +1 -1
  228. package/fesm2022/cax-design-system-overlay.mjs +4 -4
  229. package/fesm2022/cax-design-system-overlay.mjs.map +1 -1
  230. package/fesm2022/cax-design-system-overlaypanel.mjs +5 -5
  231. package/fesm2022/cax-design-system-overlaypanel.mjs.map +1 -1
  232. package/fesm2022/cax-design-system-paginator.mjs +3 -3
  233. package/fesm2022/cax-design-system-paginator.mjs.map +1 -1
  234. package/fesm2022/cax-design-system-panel.mjs +2 -2
  235. package/fesm2022/cax-design-system-panel.mjs.map +1 -1
  236. package/fesm2022/cax-design-system-panelmenu.mjs +2 -2
  237. package/fesm2022/cax-design-system-panelmenu.mjs.map +1 -1
  238. package/fesm2022/cax-design-system-password.mjs +1 -1
  239. package/fesm2022/cax-design-system-password.mjs.map +1 -1
  240. package/fesm2022/cax-design-system-picklist.mjs +1 -1
  241. package/fesm2022/cax-design-system-picklist.mjs.map +1 -1
  242. package/fesm2022/cax-design-system-progressbar.mjs +3 -3
  243. package/fesm2022/cax-design-system-progressbar.mjs.map +1 -1
  244. package/fesm2022/cax-design-system-progressspinner.mjs +3 -3
  245. package/fesm2022/cax-design-system-progressspinner.mjs.map +1 -1
  246. package/fesm2022/cax-design-system-radiobutton.mjs +3 -3
  247. package/fesm2022/cax-design-system-radiobutton.mjs.map +1 -1
  248. package/fesm2022/cax-design-system-rating.mjs +1 -1
  249. package/fesm2022/cax-design-system-rating.mjs.map +1 -1
  250. package/fesm2022/cax-design-system-ripple.mjs +1 -1
  251. package/fesm2022/cax-design-system-ripple.mjs.map +1 -1
  252. package/fesm2022/cax-design-system-scroller.mjs +4 -4
  253. package/fesm2022/cax-design-system-scroller.mjs.map +1 -1
  254. package/fesm2022/cax-design-system-scrollpanel.mjs +1 -1
  255. package/fesm2022/cax-design-system-scrollpanel.mjs.map +1 -1
  256. package/fesm2022/cax-design-system-scrolltop.mjs +2 -2
  257. package/fesm2022/cax-design-system-scrolltop.mjs.map +1 -1
  258. package/fesm2022/cax-design-system-selectbutton.mjs +3 -3
  259. package/fesm2022/cax-design-system-selectbutton.mjs.map +1 -1
  260. package/fesm2022/cax-design-system-sidebar.mjs +4 -4
  261. package/fesm2022/cax-design-system-sidebar.mjs.map +1 -1
  262. package/fesm2022/cax-design-system-skeleton.mjs +3 -3
  263. package/fesm2022/cax-design-system-skeleton.mjs.map +1 -1
  264. package/fesm2022/cax-design-system-slidemenu.mjs +1 -1
  265. package/fesm2022/cax-design-system-slidemenu.mjs.map +1 -1
  266. package/fesm2022/cax-design-system-slider.mjs +1 -1
  267. package/fesm2022/cax-design-system-slider.mjs.map +1 -1
  268. package/fesm2022/cax-design-system-speeddial.mjs +3 -3
  269. package/fesm2022/cax-design-system-speeddial.mjs.map +1 -1
  270. package/fesm2022/cax-design-system-spinner.mjs +1 -1
  271. package/fesm2022/cax-design-system-spinner.mjs.map +1 -1
  272. package/fesm2022/cax-design-system-splitbutton.mjs +3 -3
  273. package/fesm2022/cax-design-system-splitbutton.mjs.map +1 -1
  274. package/fesm2022/cax-design-system-splitter.mjs +3 -3
  275. package/fesm2022/cax-design-system-splitter.mjs.map +1 -1
  276. package/fesm2022/cax-design-system-stepper.mjs +2 -2
  277. package/fesm2022/cax-design-system-stepper.mjs.map +1 -1
  278. package/fesm2022/cax-design-system-steps.mjs +3 -3
  279. package/fesm2022/cax-design-system-steps.mjs.map +1 -1
  280. package/fesm2022/cax-design-system-styleclass.mjs +1 -1
  281. package/fesm2022/cax-design-system-styleclass.mjs.map +1 -1
  282. package/fesm2022/cax-design-system-table.mjs +19 -19
  283. package/fesm2022/cax-design-system-table.mjs.map +1 -1
  284. package/fesm2022/cax-design-system-tableconfiguration.mjs +19 -11
  285. package/fesm2022/cax-design-system-tableconfiguration.mjs.map +1 -1
  286. package/fesm2022/cax-design-system-tabmenu.mjs +1 -1
  287. package/fesm2022/cax-design-system-tabmenu.mjs.map +1 -1
  288. package/fesm2022/cax-design-system-tabview.mjs +5 -5
  289. package/fesm2022/cax-design-system-tabview.mjs.map +1 -1
  290. package/fesm2022/cax-design-system-tag.mjs +3 -3
  291. package/fesm2022/cax-design-system-tag.mjs.map +1 -1
  292. package/fesm2022/cax-design-system-terminal.mjs +1 -1
  293. package/fesm2022/cax-design-system-terminal.mjs.map +1 -1
  294. package/fesm2022/cax-design-system-tieredmenu.mjs +1 -1
  295. package/fesm2022/cax-design-system-tieredmenu.mjs.map +1 -1
  296. package/fesm2022/cax-design-system-timeline.mjs +3 -3
  297. package/fesm2022/cax-design-system-timeline.mjs.map +1 -1
  298. package/fesm2022/cax-design-system-toast.mjs +6 -6
  299. package/fesm2022/cax-design-system-toast.mjs.map +1 -1
  300. package/fesm2022/cax-design-system-togglebutton.mjs +1 -1
  301. package/fesm2022/cax-design-system-togglebutton.mjs.map +1 -1
  302. package/fesm2022/cax-design-system-toggleswitch.mjs +3 -3
  303. package/fesm2022/cax-design-system-toggleswitch.mjs.map +1 -1
  304. package/fesm2022/cax-design-system-toolbar.mjs +1 -1
  305. package/fesm2022/cax-design-system-toolbar.mjs.map +1 -1
  306. package/fesm2022/cax-design-system-tooltip.mjs +1 -1
  307. package/fesm2022/cax-design-system-tooltip.mjs.map +1 -1
  308. package/fesm2022/cax-design-system-tree.mjs +5 -5
  309. package/fesm2022/cax-design-system-tree.mjs.map +1 -1
  310. package/fesm2022/cax-design-system-treeselect.mjs +3 -3
  311. package/fesm2022/cax-design-system-treeselect.mjs.map +1 -1
  312. package/fesm2022/cax-design-system-treetable.mjs +1 -1
  313. package/fesm2022/cax-design-system-treetable.mjs.map +1 -1
  314. package/fesm2022/cax-design-system-tristatecheckbox.mjs +4 -4
  315. package/fesm2022/cax-design-system-tristatecheckbox.mjs.map +1 -1
  316. package/fesm2022/cax-design-system-upload.mjs +3 -3
  317. package/fesm2022/cax-design-system-upload.mjs.map +1 -1
  318. package/fesm2022/cax-design-system-utils.mjs.map +1 -1
  319. package/fesm2022/cax-design-system-virtualscroller.mjs +1 -1
  320. package/fesm2022/cax-design-system-virtualscroller.mjs.map +1 -1
  321. package/fieldset/index.d.ts +140 -3
  322. package/fileupload/index.d.ts +606 -3
  323. package/floatlabel/index.d.ts +19 -3
  324. package/focustrap/index.d.ts +35 -3
  325. package/galleria/index.d.ts +502 -3
  326. package/iconfield/index.d.ts +26 -3
  327. package/icons/angledoubledown/index.d.ts +9 -5
  328. package/icons/angledoubleleft/index.d.ts +9 -5
  329. package/icons/angledoubleright/index.d.ts +9 -5
  330. package/icons/angledoubleup/index.d.ts +9 -5
  331. package/icons/angledown/index.d.ts +9 -5
  332. package/icons/angleleft/index.d.ts +9 -5
  333. package/icons/angleright/index.d.ts +9 -5
  334. package/icons/angleup/index.d.ts +9 -5
  335. package/icons/arrowdown/index.d.ts +12 -5
  336. package/icons/arrowdownleft/index.d.ts +9 -5
  337. package/icons/arrowdownright/index.d.ts +9 -5
  338. package/icons/arrowleft/index.d.ts +11 -5
  339. package/icons/arrowright/index.d.ts +9 -5
  340. package/icons/arrowup/index.d.ts +11 -5
  341. package/icons/ban/index.d.ts +11 -5
  342. package/icons/bars/index.d.ts +9 -5
  343. package/icons/blank/index.d.ts +9 -5
  344. package/icons/calendar/index.d.ts +9 -5
  345. package/icons/caretleft/index.d.ts +9 -5
  346. package/icons/caretright/index.d.ts +9 -5
  347. package/icons/check/index.d.ts +9 -5
  348. package/icons/chevrondown/index.d.ts +9 -5
  349. package/icons/chevronleft/index.d.ts +9 -5
  350. package/icons/chevronright/index.d.ts +9 -5
  351. package/icons/chevronup/index.d.ts +9 -5
  352. package/icons/exclamationtriangle/index.d.ts +12 -5
  353. package/icons/eye/index.d.ts +9 -5
  354. package/icons/eyeslash/index.d.ts +11 -5
  355. package/icons/filter/index.d.ts +11 -5
  356. package/icons/filterslash/index.d.ts +11 -5
  357. package/icons/home/index.d.ts +11 -5
  358. package/icons/infocircle/index.d.ts +11 -5
  359. package/icons/minus/index.d.ts +9 -5
  360. package/icons/pencil/index.d.ts +11 -5
  361. package/icons/plus/index.d.ts +11 -5
  362. package/icons/refresh/index.d.ts +11 -5
  363. package/icons/search/index.d.ts +11 -5
  364. package/icons/searchminus/index.d.ts +11 -5
  365. package/icons/searchplus/index.d.ts +11 -5
  366. package/icons/sortalt/index.d.ts +11 -5
  367. package/icons/sortamountdown/index.d.ts +11 -5
  368. package/icons/sortamountupalt/index.d.ts +11 -5
  369. package/icons/spinner/index.d.ts +11 -5
  370. package/icons/star/index.d.ts +11 -5
  371. package/icons/starfill/index.d.ts +11 -5
  372. package/icons/thlarge/index.d.ts +11 -5
  373. package/icons/times/index.d.ts +9 -5
  374. package/icons/timescircle/index.d.ts +11 -5
  375. package/icons/trash/index.d.ts +11 -5
  376. package/icons/undo/index.d.ts +11 -5
  377. package/icons/upload/index.d.ts +11 -5
  378. package/icons/windowmaximize/index.d.ts +11 -5
  379. package/icons/windowminimize/index.d.ts +11 -5
  380. package/image/index.d.ts +228 -3
  381. package/index.d.ts +2 -5
  382. package/inplace/index.d.ts +130 -3
  383. package/inputgroup/index.d.ts +48 -3
  384. package/inputgroupaddon/index.d.ts +35 -3
  385. package/inputicon/index.d.ts +22 -3
  386. package/inputmask/index.d.ts +304 -3
  387. package/inputnumber/index.d.ts +443 -3
  388. package/inputotp/index.d.ts +189 -3
  389. package/inputswitch/index.d.ts +123 -3
  390. package/inputtext/index.d.ts +76 -5
  391. package/inputtextarea/index.d.ts +112 -3
  392. package/keyfilter/index.d.ts +65 -3
  393. package/knob/index.d.ts +179 -3
  394. package/listbox/index.d.ts +620 -3
  395. package/logo/index.d.ts +20 -5
  396. package/megamenu/index.d.ts +230 -3
  397. package/menu/index.d.ts +222 -3
  398. package/menubar/index.d.ts +290 -3
  399. package/message/index.d.ts +53 -3
  400. package/messages/index.d.ts +140 -3
  401. package/metergroup/index.d.ts +224 -3
  402. package/multiselect/index.d.ts +974 -3
  403. package/navigation/index.d.ts +105 -5
  404. package/orderlist/index.d.ts +381 -3
  405. package/organizationchart/index.d.ts +192 -3
  406. package/overlay/index.d.ts +246 -3
  407. package/overlaypanel/index.d.ts +170 -3
  408. package/package.json +270 -610
  409. package/paginator/index.d.ts +249 -3
  410. package/panel/index.d.ts +185 -3
  411. package/panelmenu/index.d.ts +249 -3
  412. package/password/index.d.ts +342 -3
  413. package/picklist/index.d.ts +696 -3
  414. package/progressbar/index.d.ts +61 -3
  415. package/progressspinner/index.d.ts +58 -3
  416. package/radiobutton/index.d.ts +173 -3
  417. package/rating/index.d.ts +181 -3
  418. package/resources/cax.min.scss +1 -1
  419. package/resources/cax.scss +12518 -12518
  420. package/resources/components/accordion/accordion.scss +46 -46
  421. package/resources/components/autocomplete/autocomplete.scss +183 -183
  422. package/resources/components/avatar/avatar.scss +34 -34
  423. package/resources/components/avatargroup/avatargroup.scss +10 -10
  424. package/resources/components/badge/badge.scss +67 -67
  425. package/resources/components/blockui/blockui.css +26 -26
  426. package/resources/components/breadcrumb/breadcrumb.scss +33 -33
  427. package/resources/components/button/button.scss +163 -163
  428. package/resources/components/calendar/calendar.scss +235 -235
  429. package/resources/components/card/card.scss +50 -50
  430. package/resources/components/carousel/carousel.css +71 -71
  431. package/resources/components/cascadeselect/cascadeselect.scss +105 -105
  432. package/resources/components/checkbox/checkbox.scss +30 -30
  433. package/resources/components/chip/chip.scss +6 -6
  434. package/resources/components/chips/chips.scss +205 -205
  435. package/resources/components/colorpicker/colorpicker-images.scss +6 -6
  436. package/resources/components/colorpicker/colorpicker.scss +82 -82
  437. package/resources/components/commentbox/commentbox.scss +611 -611
  438. package/resources/components/common/common.scss +183 -183
  439. package/resources/components/confirmpopup/confirmpopup.css +53 -53
  440. package/resources/components/contextmenu/contextmenu.css +42 -42
  441. package/resources/components/dataview/dataview.css +13 -13
  442. package/resources/components/dialog/dialog.scss +171 -171
  443. package/resources/components/divider/divider.scss +86 -86
  444. package/resources/components/dock/dock.css +107 -107
  445. package/resources/components/dropdown/dropdown.scss +94 -94
  446. package/resources/components/editor/editor.scss +3 -3
  447. package/resources/components/fieldset/fieldset.css +30 -30
  448. package/resources/components/fileupload/fileupload.css +47 -47
  449. package/resources/components/galleria/galleria.css +281 -281
  450. package/resources/components/iconfield/iconfield.css +5 -5
  451. package/resources/components/image/image.scss +92 -92
  452. package/resources/components/inplace/inplace.css +19 -19
  453. package/resources/components/inputicon/inputicon.css +6 -6
  454. package/resources/components/inputmask/inputmask.scss +12 -12
  455. package/resources/components/inputnumber/inputnumber.scss +109 -109
  456. package/resources/components/inputotp/inputotp.css +2 -2
  457. package/resources/components/inputswitch/inputswitch.css +23 -23
  458. package/resources/components/inputtext/inputtext.scss +145 -145
  459. package/resources/components/inputtextarea/inputtextarea.scss +10 -10
  460. package/resources/components/knob/knob.css +20 -20
  461. package/resources/components/listbox/listbox.css +40 -40
  462. package/resources/components/megamenu/megamenu.css +108 -108
  463. package/resources/components/menu/menu.scss +31 -30
  464. package/resources/components/menubar/menubar.css +81 -81
  465. package/resources/components/message/message.css +17 -17
  466. package/resources/components/messages/messages.scss +55 -55
  467. package/resources/components/multiselect/multiselect.scss +132 -132
  468. package/resources/components/navigation/navigation.scss +197 -196
  469. package/resources/components/orderlist/orderlist.css +78 -78
  470. package/resources/components/organizationchart/organizationchart.css +62 -62
  471. package/resources/components/overlay/overlay.scss +80 -80
  472. package/resources/components/overlaypanel/overlaypanel.scss +66 -66
  473. package/resources/components/paginator/paginator.scss +41 -41
  474. package/resources/components/panel/panel.css +29 -29
  475. package/resources/components/panelmenu/panelmenu.css +45 -45
  476. package/resources/components/password/password.css +54 -54
  477. package/resources/components/picklist/picklist.css +60 -60
  478. package/resources/components/progressbar/progressbar.scss +107 -107
  479. package/resources/components/progressspinner/progressspinner.scss +94 -94
  480. package/resources/components/radiobutton/radiobutton.scss +34 -34
  481. package/resources/components/rating/rating.css +15 -15
  482. package/resources/components/ripple/ripple.scss +29 -29
  483. package/resources/components/scroller/scroller.scss +58 -58
  484. package/resources/components/scrollpanel/scrollpanel.css +50 -50
  485. package/resources/components/scrolltop/scrolltop.css +18 -18
  486. package/resources/components/sidebar/sidebar.scss +117 -117
  487. package/resources/components/skeleton/skeleton.scss +24 -24
  488. package/resources/components/slidemenu/slidemenu.css +100 -100
  489. package/resources/components/slider/slider.css +41 -41
  490. package/resources/components/speeddial/speeddial.scss +122 -122
  491. package/resources/components/spinner/spinner.css +63 -63
  492. package/resources/components/splitbutton/splitbutton.scss +53 -53
  493. package/resources/components/splitter/splitter.scss +73 -73
  494. package/resources/components/stepper/stepper.css +9 -9
  495. package/resources/components/steps/steps.scss +50 -50
  496. package/resources/components/table/table.scss +451 -451
  497. package/resources/components/tableconfiguration/tableconfiguration.scss +125 -115
  498. package/resources/components/tabmenu/tabmenu.css +80 -80
  499. package/resources/components/tabview/tabview.scss +198 -198
  500. package/resources/components/tag/tag.scss +23 -23
  501. package/resources/components/terminal/terminal.css +24 -24
  502. package/resources/components/tieredmenu/tieredmenu.scss +55 -55
  503. package/resources/components/timeline/timeline.scss +128 -128
  504. package/resources/components/toast/toast.scss +87 -87
  505. package/resources/components/toggleswitch/toggleswitch.scss +36 -36
  506. package/resources/components/toolbar/toolbar.css +19 -19
  507. package/resources/components/tooltip/tooltip.scss +124 -124
  508. package/resources/components/tree/tree.scss +154 -154
  509. package/resources/components/treeselect/treeselect.scss +114 -114
  510. package/resources/components/treetable/treetable.css +205 -205
  511. package/resources/components/upload/upload.component.scss +145 -145
  512. package/resources/logo/dataX-dark.svg +12 -12
  513. package/resources/logo/dataX-icon-dark.svg +5 -5
  514. package/resources/logo/dataX-icon.svg +5 -5
  515. package/resources/logo/dataX.svg +12 -12
  516. package/resources/styles/colors.scss +397 -397
  517. package/resources/styles/shadow-blur.scss +21 -21
  518. package/resources/styles/space-radius-border.scss +49 -49
  519. package/resources/styles/typography.scss +116 -116
  520. package/ripple/index.d.ts +37 -3
  521. package/scroller/index.d.ts +528 -3
  522. package/scrollpanel/index.d.ts +116 -3
  523. package/scrolltop/index.d.ts +117 -3
  524. package/selectbutton/index.d.ts +184 -3
  525. package/sidebar/index.d.ts +213 -3
  526. package/skeleton/index.d.ts +69 -3
  527. package/slidemenu/index.d.ts +339 -3
  528. package/slider/index.d.ts +214 -3
  529. package/speeddial/index.d.ts +319 -3
  530. package/spinner/index.d.ts +93 -5
  531. package/splitbutton/index.d.ts +264 -3
  532. package/splitter/index.d.ts +201 -3
  533. package/stepper/index.d.ts +145 -3
  534. package/steps/index.d.ts +87 -3
  535. package/styleclass/index.d.ts +109 -3
  536. package/table/index.d.ts +2556 -3
  537. package/tableconfiguration/index.d.ts +25 -5
  538. package/tabmenu/index.d.ts +160 -3
  539. package/tabview/index.d.ts +357 -3
  540. package/tag/index.d.ts +82 -3
  541. package/terminal/index.d.ts +68 -3
  542. package/tieredmenu/index.d.ts +307 -3
  543. package/timeline/index.d.ts +100 -3
  544. package/toast/index.d.ts +202 -3
  545. package/togglebutton/index.d.ts +150 -3
  546. package/toggleswitch/index.d.ts +25 -5
  547. package/toolbar/index.d.ts +64 -3
  548. package/tooltip/index.d.ts +218 -3
  549. package/tree/index.d.ts +673 -3
  550. package/treeselect/index.d.ts +517 -3
  551. package/treetable/index.d.ts +1461 -3
  552. package/tristatecheckbox/index.d.ts +155 -3
  553. package/ts-helpers/index.d.ts +6 -5
  554. package/upload/index.d.ts +81 -5
  555. package/utils/index.d.ts +35 -5
  556. package/virtualscroller/index.d.ts +161 -3
  557. package/accordion/accordion.d.ts +0 -224
  558. package/accordion/accordion.interface.d.ts +0 -49
  559. package/accordion/accordion.module.d.ts +0 -13
  560. package/accordion/public_api.d.ts +0 -3
  561. package/animate/animate.d.ts +0 -40
  562. package/animate/public_api.d.ts +0 -1
  563. package/animateonscroll/animateonscroll.d.ts +0 -75
  564. package/animateonscroll/public_api.d.ts +0 -1
  565. package/api/blockableui.d.ts +0 -10
  566. package/api/caxconfig.d.ts +0 -24
  567. package/api/confirmaeventtype.d.ts +0 -8
  568. package/api/confirmation.d.ts +0 -96
  569. package/api/confirmationservice.d.ts +0 -30
  570. package/api/contextmenuservice.d.ts +0 -11
  571. package/api/filtermatchmode.d.ts +0 -22
  572. package/api/filtermetadata.d.ts +0 -18
  573. package/api/filteroperator.d.ts +0 -4
  574. package/api/filterservice.d.ts +0 -10
  575. package/api/lazyloadevent.d.ts +0 -47
  576. package/api/lazyloadmeta.d.ts +0 -19
  577. package/api/megamenuitem.d.ts +0 -130
  578. package/api/menuitem.d.ts +0 -176
  579. package/api/message.d.ts +0 -30
  580. package/api/messageservice.d.ts +0 -32
  581. package/api/overlayoptions.d.ts +0 -188
  582. package/api/overlayservice.d.ts +0 -9
  583. package/api/primeicons.d.ts +0 -313
  584. package/api/public_api.d.ts +0 -34
  585. package/api/scrolleroptions.d.ts +0 -116
  586. package/api/selectitem.d.ts +0 -12
  587. package/api/selectitemgroup.d.ts +0 -10
  588. package/api/shared.d.ts +0 -24
  589. package/api/sortevent.d.ts +0 -12
  590. package/api/sortmeta.d.ts +0 -8
  591. package/api/tablestate.d.ts +0 -60
  592. package/api/themegeneratorservice.d.ts +0 -12
  593. package/api/tooltipoptions.d.ts +0 -69
  594. package/api/translation.d.ts +0 -135
  595. package/api/translationkeys.d.ts +0 -50
  596. package/api/treedragdropservice.d.ts +0 -12
  597. package/api/treenode.d.ts +0 -91
  598. package/api/treenodedragevent.d.ts +0 -27
  599. package/api/treetablenode.d.ts +0 -36
  600. package/autocomplete/autocomplete.d.ts +0 -616
  601. package/autocomplete/autocomplete.interface.d.ts +0 -164
  602. package/autocomplete/autocomplete.module.d.ts +0 -20
  603. package/autocomplete/public_api.d.ts +0 -3
  604. package/autofocus/autofocus.d.ts +0 -28
  605. package/autofocus/public_api.d.ts +0 -1
  606. package/avatar/avatar.d.ts +0 -73
  607. package/avatar/avatar.module.d.ts +0 -7
  608. package/avatar/public_api.d.ts +0 -2
  609. package/avatargroup/avatargroup.d.ts +0 -21
  610. package/avatargroup/avatargroup.module.d.ts +0 -9
  611. package/avatargroup/public_api.d.ts +0 -2
  612. package/badge/badge.d.ts +0 -21
  613. package/badge/badge.directive.d.ts +0 -35
  614. package/badge/badge.module.d.ts +0 -10
  615. package/badge/public_api.d.ts +0 -3
  616. package/baseicon/baseicon.d.ts +0 -15
  617. package/baseicon/public_api.d.ts +0 -1
  618. package/blockui/blockui.d.ts +0 -64
  619. package/blockui/blockui.interface.d.ts +0 -11
  620. package/blockui/public_api.d.ts +0 -2
  621. package/breadcrumb/breadcrumb.d.ts +0 -55
  622. package/breadcrumb/breadcrumb.interface.d.ts +0 -38
  623. package/breadcrumb/breadcrumb.module.d.ts +0 -13
  624. package/breadcrumb/public_api.d.ts +0 -3
  625. package/button/button.d.ts +0 -85
  626. package/button/button.directive.d.ts +0 -49
  627. package/button/button.interface.d.ts +0 -30
  628. package/button/button.module.d.ts +0 -9
  629. package/button/public_api.d.ts +0 -4
  630. package/buttongroup/buttongroup.d.ts +0 -11
  631. package/buttongroup/public_api.d.ts +0 -1
  632. package/calendar/calendar.d.ts +0 -722
  633. package/calendar/calendar.interface.d.ts +0 -204
  634. package/calendar/calendar.module.d.ts +0 -9
  635. package/calendar/public_api.d.ts +0 -3
  636. package/card/card.d.ts +0 -53
  637. package/card/card.interface.d.ts +0 -27
  638. package/card/card.module.d.ts +0 -11
  639. package/card/public_api.d.ts +0 -3
  640. package/carousel/carousel.d.ts +0 -227
  641. package/carousel/carousel.interface.d.ts +0 -63
  642. package/carousel/public_api.d.ts +0 -2
  643. package/cascadeselect/cascadeselect.d.ts +0 -435
  644. package/cascadeselect/cascadeselect.interface.d.ts +0 -115
  645. package/cascadeselect/cascadeselect.module.d.ts +0 -15
  646. package/cascadeselect/public_api.d.ts +0 -3
  647. package/chart/chart.d.ts +0 -87
  648. package/chart/public_api.d.ts +0 -1
  649. package/checkbox/checkbox.d.ts +0 -168
  650. package/checkbox/checkbox.interface.d.ts +0 -26
  651. package/checkbox/checkbox.module.d.ts +0 -10
  652. package/checkbox/public_api.d.ts +0 -3
  653. package/chip/chip.d.ts +0 -38
  654. package/chip/chip.interface.d.ts +0 -15
  655. package/chip/chip.module.d.ts +0 -10
  656. package/chip/public_api.d.ts +0 -3
  657. package/chips/chips.d.ts +0 -233
  658. package/chips/chips.interface.d.ts +0 -58
  659. package/chips/chips.module.d.ts +0 -14
  660. package/chips/public_api.d.ts +0 -3
  661. package/colorpicker/colorpicker.d.ts +0 -240
  662. package/colorpicker/colorpicker.interface.d.ts +0 -15
  663. package/colorpicker/colorpicker.module.d.ts +0 -9
  664. package/colorpicker/public_api.d.ts +0 -3
  665. package/commentbox/commentbox.d.ts +0 -120
  666. package/commentbox/commentbox.module.d.ts +0 -17
  667. package/commentbox/public_api.d.ts +0 -2
  668. package/confirmdialog/confirmdialog.d.ts +0 -281
  669. package/confirmdialog/confirmdialog.interface.d.ts +0 -39
  670. package/confirmdialog/confirmdialog.module.d.ts +0 -15
  671. package/confirmdialog/public_api.d.ts +0 -3
  672. package/confirmpopup/confirmpopup.d.ts +0 -119
  673. package/confirmpopup/confirmpopup.interface.d.ts +0 -27
  674. package/confirmpopup/public_api.d.ts +0 -2
  675. package/contextmenu/contextmenu.d.ts +0 -260
  676. package/contextmenu/public_api.d.ts +0 -1
  677. package/dataview/dataview.d.ts +0 -274
  678. package/dataview/dataview.interface.d.ts +0 -183
  679. package/dataview/public_api.d.ts +0 -2
  680. package/defer/defer.d.ts +0 -39
  681. package/defer/public_api.d.ts +0 -1
  682. package/dialog/dialog.d.ts +0 -364
  683. package/dialog/dialog.interface.d.ts +0 -31
  684. package/dialog/dialog.module.d.ts +0 -15
  685. package/dialog/public_api.d.ts +0 -3
  686. package/divider/divider.d.ts +0 -49
  687. package/divider/divider.module.d.ts +0 -7
  688. package/divider/public_api.d.ts +0 -2
  689. package/dock/dock.d.ts +0 -115
  690. package/dock/dock.interface.d.ts +0 -19
  691. package/dock/public_api.d.ts +0 -2
  692. package/dom/connectedoverlayscrollhandler.d.ts +0 -9
  693. package/dom/domhandler.d.ts +0 -95
  694. package/dom/public_api.d.ts +0 -2
  695. package/dragdrop/dragdrop.d.ts +0 -112
  696. package/dragdrop/dragdrop.module.d.ts +0 -8
  697. package/dragdrop/public_api.d.ts +0 -2
  698. package/dropdown/dropdown-item.d.ts +0 -30
  699. package/dropdown/dropdown.d.ts +0 -628
  700. package/dropdown/dropdown.interface.d.ts +0 -154
  701. package/dropdown/dropdown.module.d.ts +0 -11
  702. package/dropdown/public_api.d.ts +0 -4
  703. package/dynamicdialog/dialogservice.d.ts +0 -35
  704. package/dynamicdialog/dynamicdialog-config.d.ts +0 -221
  705. package/dynamicdialog/dynamicdialog-injector.d.ts +0 -7
  706. package/dynamicdialog/dynamicdialog-ref.d.ts +0 -101
  707. package/dynamicdialog/dynamicdialog.d.ts +0 -124
  708. package/dynamicdialog/dynamicdialogcontent.d.ts +0 -8
  709. package/dynamicdialog/public_api.d.ts +0 -6
  710. package/editor/editor.d.ts +0 -104
  711. package/editor/editor.interface.d.ts +0 -64
  712. package/editor/editor.module.d.ts +0 -9
  713. package/editor/public_api.d.ts +0 -3
  714. package/esm2022/accordion/accordion.interface.mjs +0 -2
  715. package/esm2022/accordion/accordion.mjs +0 -598
  716. package/esm2022/accordion/accordion.module.mjs +0 -23
  717. package/esm2022/accordion/cax-design-system-accordion.mjs +0 -5
  718. package/esm2022/accordion/public_api.mjs +0 -4
  719. package/esm2022/animate/animate.mjs +0 -101
  720. package/esm2022/animate/cax-design-system-animate.mjs +0 -5
  721. package/esm2022/animate/public_api.mjs +0 -2
  722. package/esm2022/animateonscroll/animateonscroll.mjs +0 -185
  723. package/esm2022/animateonscroll/cax-design-system-animateonscroll.mjs +0 -5
  724. package/esm2022/animateonscroll/public_api.mjs +0 -2
  725. package/esm2022/api/blockableui.mjs +0 -2
  726. package/esm2022/api/cax-design-system-api.mjs +0 -5
  727. package/esm2022/api/caxconfig.mjs +0 -163
  728. package/esm2022/api/confirmaeventtype.mjs +0 -10
  729. package/esm2022/api/confirmation.mjs +0 -2
  730. package/esm2022/api/confirmationservice.mjs +0 -43
  731. package/esm2022/api/contextmenuservice.mjs +0 -22
  732. package/esm2022/api/filtermatchmode.mjs +0 -23
  733. package/esm2022/api/filtermetadata.mjs +0 -2
  734. package/esm2022/api/filteroperator.mjs +0 -5
  735. package/esm2022/api/filterservice.mjs +0 -225
  736. package/esm2022/api/lazyloadevent.mjs +0 -2
  737. package/esm2022/api/lazyloadmeta.mjs +0 -2
  738. package/esm2022/api/megamenuitem.mjs +0 -2
  739. package/esm2022/api/menuitem.mjs +0 -2
  740. package/esm2022/api/message.mjs +0 -2
  741. package/esm2022/api/messageservice.mjs +0 -47
  742. package/esm2022/api/overlayoptions.mjs +0 -2
  743. package/esm2022/api/overlayservice.mjs +0 -19
  744. package/esm2022/api/primeicons.mjs +0 -314
  745. package/esm2022/api/public_api.mjs +0 -35
  746. package/esm2022/api/scrolleroptions.mjs +0 -2
  747. package/esm2022/api/selectitem.mjs +0 -2
  748. package/esm2022/api/selectitemgroup.mjs +0 -2
  749. package/esm2022/api/shared.mjs +0 -65
  750. package/esm2022/api/sortevent.mjs +0 -2
  751. package/esm2022/api/sortmeta.mjs +0 -2
  752. package/esm2022/api/tablestate.mjs +0 -2
  753. package/esm2022/api/themegeneratorservice.mjs +0 -109
  754. package/esm2022/api/tooltipoptions.mjs +0 -2
  755. package/esm2022/api/translation.mjs +0 -2
  756. package/esm2022/api/translationkeys.mjs +0 -51
  757. package/esm2022/api/treedragdropservice.mjs +0 -21
  758. package/esm2022/api/treenode.mjs +0 -2
  759. package/esm2022/api/treenodedragevent.mjs +0 -2
  760. package/esm2022/api/treetablenode.mjs +0 -2
  761. package/esm2022/autocomplete/autocomplete.interface.mjs +0 -2
  762. package/esm2022/autocomplete/autocomplete.mjs +0 -1462
  763. package/esm2022/autocomplete/autocomplete.module.mjs +0 -30
  764. package/esm2022/autocomplete/cax-design-system-autocomplete.mjs +0 -5
  765. package/esm2022/autocomplete/public_api.mjs +0 -4
  766. package/esm2022/autofocus/autofocus.mjs +0 -78
  767. package/esm2022/autofocus/cax-design-system-autofocus.mjs +0 -5
  768. package/esm2022/autofocus/public_api.mjs +0 -2
  769. package/esm2022/avatar/avatar.mjs +0 -104
  770. package/esm2022/avatar/avatar.module.mjs +0 -16
  771. package/esm2022/avatar/cax-design-system-avatar.mjs +0 -5
  772. package/esm2022/avatar/public_api.mjs +0 -3
  773. package/esm2022/avatargroup/avatargroup.mjs +0 -32
  774. package/esm2022/avatargroup/avatargroup.module.mjs +0 -19
  775. package/esm2022/avatargroup/cax-design-system-avatargroup.mjs +0 -5
  776. package/esm2022/avatargroup/public_api.mjs +0 -3
  777. package/esm2022/badge/badge.directive.mjs +0 -193
  778. package/esm2022/badge/badge.mjs +0 -50
  779. package/esm2022/badge/badge.module.mjs +0 -20
  780. package/esm2022/badge/cax-design-system-badge.mjs +0 -5
  781. package/esm2022/badge/public_api.mjs +0 -4
  782. package/esm2022/baseicon/baseicon.mjs +0 -45
  783. package/esm2022/baseicon/cax-design-system-baseicon.mjs +0 -5
  784. package/esm2022/baseicon/public_api.mjs +0 -2
  785. package/esm2022/blockui/blockui.interface.mjs +0 -2
  786. package/esm2022/blockui/blockui.mjs +0 -206
  787. package/esm2022/blockui/cax-design-system-blockui.mjs +0 -5
  788. package/esm2022/blockui/public_api.mjs +0 -3
  789. package/esm2022/breadcrumb/breadcrumb.interface.mjs +0 -2
  790. package/esm2022/breadcrumb/breadcrumb.mjs +0 -120
  791. package/esm2022/breadcrumb/breadcrumb.module.mjs +0 -23
  792. package/esm2022/breadcrumb/cax-design-system-breadcrumb.mjs +0 -5
  793. package/esm2022/breadcrumb/public_api.mjs +0 -4
  794. package/esm2022/button/button.directive.mjs +0 -259
  795. package/esm2022/button/button.interface.mjs +0 -2
  796. package/esm2022/button/button.mjs +0 -190
  797. package/esm2022/button/button.module.mjs +0 -18
  798. package/esm2022/button/cax-design-system-button.mjs +0 -5
  799. package/esm2022/button/public_api.mjs +0 -5
  800. package/esm2022/buttongroup/buttongroup.mjs +0 -38
  801. package/esm2022/buttongroup/cax-design-system-buttongroup.mjs +0 -5
  802. package/esm2022/buttongroup/public_api.mjs +0 -2
  803. package/esm2022/calendar/calendar.interface.mjs +0 -2
  804. package/esm2022/calendar/calendar.mjs +0 -3242
  805. package/esm2022/calendar/calendar.module.mjs +0 -18
  806. package/esm2022/calendar/cax-design-system-calendar.mjs +0 -5
  807. package/esm2022/calendar/public_api.mjs +0 -4
  808. package/esm2022/card/card.interface.mjs +0 -2
  809. package/esm2022/card/card.mjs +0 -117
  810. package/esm2022/card/card.module.mjs +0 -21
  811. package/esm2022/card/cax-design-system-card.mjs +0 -5
  812. package/esm2022/card/public_api.mjs +0 -4
  813. package/esm2022/carousel/carousel.interface.mjs +0 -2
  814. package/esm2022/carousel/carousel.mjs +0 -968
  815. package/esm2022/carousel/cax-design-system-carousel.mjs +0 -5
  816. package/esm2022/carousel/public_api.mjs +0 -3
  817. package/esm2022/cascadeselect/cascadeselect.interface.mjs +0 -2
  818. package/esm2022/cascadeselect/cascadeselect.mjs +0 -1135
  819. package/esm2022/cascadeselect/cascadeselect.module.mjs +0 -25
  820. package/esm2022/cascadeselect/cax-design-system-cascadeselect.mjs +0 -5
  821. package/esm2022/cascadeselect/public_api.mjs +0 -4
  822. package/esm2022/cax-design-system.mjs +0 -5
  823. package/esm2022/chart/cax-design-system-chart.mjs +0 -5
  824. package/esm2022/chart/chart.mjs +0 -236
  825. package/esm2022/chart/public_api.mjs +0 -2
  826. package/esm2022/checkbox/cax-design-system-checkbox.mjs +0 -5
  827. package/esm2022/checkbox/checkbox.interface.mjs +0 -2
  828. package/esm2022/checkbox/checkbox.mjs +0 -318
  829. package/esm2022/checkbox/checkbox.module.mjs +0 -20
  830. package/esm2022/checkbox/public_api.mjs +0 -4
  831. package/esm2022/chip/cax-design-system-chip.mjs +0 -5
  832. package/esm2022/chip/chip.interface.mjs +0 -2
  833. package/esm2022/chip/chip.mjs +0 -90
  834. package/esm2022/chip/chip.module.mjs +0 -20
  835. package/esm2022/chip/public_api.mjs +0 -4
  836. package/esm2022/chips/cax-design-system-chips.mjs +0 -5
  837. package/esm2022/chips/chips.interface.mjs +0 -2
  838. package/esm2022/chips/chips.mjs +0 -610
  839. package/esm2022/chips/chips.module.mjs +0 -23
  840. package/esm2022/chips/public_api.mjs +0 -4
  841. package/esm2022/colorpicker/cax-design-system-colorpicker.mjs +0 -5
  842. package/esm2022/colorpicker/colorpicker.interface.mjs +0 -2
  843. package/esm2022/colorpicker/colorpicker.mjs +0 -715
  844. package/esm2022/colorpicker/colorpicker.module.mjs +0 -19
  845. package/esm2022/colorpicker/public_api.mjs +0 -4
  846. package/esm2022/commentbox/cax-design-system-commentbox.mjs +0 -5
  847. package/esm2022/commentbox/commentbox.mjs +0 -575
  848. package/esm2022/commentbox/commentbox.module.mjs +0 -27
  849. package/esm2022/commentbox/public_api.mjs +0 -3
  850. package/esm2022/confirmdialog/cax-design-system-confirmdialog.mjs +0 -5
  851. package/esm2022/confirmdialog/confirmdialog.interface.mjs +0 -2
  852. package/esm2022/confirmdialog/confirmdialog.mjs +0 -720
  853. package/esm2022/confirmdialog/confirmdialog.module.mjs +0 -25
  854. package/esm2022/confirmdialog/public_api.mjs +0 -4
  855. package/esm2022/confirmpopup/cax-design-system-confirmpopup.mjs +0 -5
  856. package/esm2022/confirmpopup/confirmpopup.interface.mjs +0 -2
  857. package/esm2022/confirmpopup/confirmpopup.mjs +0 -499
  858. package/esm2022/confirmpopup/public_api.mjs +0 -3
  859. package/esm2022/contextmenu/cax-design-system-contextmenu.mjs +0 -5
  860. package/esm2022/contextmenu/contextmenu.mjs +0 -1304
  861. package/esm2022/contextmenu/public_api.mjs +0 -2
  862. package/esm2022/dataview/cax-design-system-dataview.mjs +0 -5
  863. package/esm2022/dataview/dataview.interface.mjs +0 -2
  864. package/esm2022/dataview/dataview.mjs +0 -723
  865. package/esm2022/dataview/public_api.mjs +0 -3
  866. package/esm2022/defer/cax-design-system-defer.mjs +0 -5
  867. package/esm2022/defer/defer.mjs +0 -111
  868. package/esm2022/defer/public_api.mjs +0 -2
  869. package/esm2022/dialog/cax-design-system-dialog.mjs +0 -5
  870. package/esm2022/dialog/dialog.interface.mjs +0 -2
  871. package/esm2022/dialog/dialog.mjs +0 -959
  872. package/esm2022/dialog/dialog.module.mjs +0 -25
  873. package/esm2022/dialog/public_api.mjs +0 -4
  874. package/esm2022/divider/cax-design-system-divider.mjs +0 -5
  875. package/esm2022/divider/divider.mjs +0 -69
  876. package/esm2022/divider/divider.module.mjs +0 -16
  877. package/esm2022/divider/public_api.mjs +0 -3
  878. package/esm2022/dock/cax-design-system-dock.mjs +0 -5
  879. package/esm2022/dock/dock.interface.mjs +0 -2
  880. package/esm2022/dock/dock.mjs +0 -431
  881. package/esm2022/dock/public_api.mjs +0 -3
  882. package/esm2022/dom/cax-design-system-dom.mjs +0 -5
  883. package/esm2022/dom/connectedoverlayscrollhandler.mjs +0 -30
  884. package/esm2022/dom/domhandler.mjs +0 -722
  885. package/esm2022/dom/public_api.mjs +0 -3
  886. package/esm2022/dragdrop/cax-design-system-dragdrop.mjs +0 -5
  887. package/esm2022/dragdrop/dragdrop.mjs +0 -309
  888. package/esm2022/dragdrop/dragdrop.module.mjs +0 -18
  889. package/esm2022/dragdrop/public_api.mjs +0 -3
  890. package/esm2022/dropdown/cax-design-system-dropdown.mjs +0 -5
  891. package/esm2022/dropdown/dropdown-item.mjs +0 -72
  892. package/esm2022/dropdown/dropdown.interface.mjs +0 -2
  893. package/esm2022/dropdown/dropdown.mjs +0 -1599
  894. package/esm2022/dropdown/dropdown.module.mjs +0 -20
  895. package/esm2022/dropdown/public_api.mjs +0 -5
  896. package/esm2022/dynamicdialog/cax-design-system-dynamicdialog.mjs +0 -5
  897. package/esm2022/dynamicdialog/dialogservice.mjs +0 -102
  898. package/esm2022/dynamicdialog/dynamicdialog-config.mjs +0 -187
  899. package/esm2022/dynamicdialog/dynamicdialog-injector.mjs +0 -15
  900. package/esm2022/dynamicdialog/dynamicdialog-ref.mjs +0 -119
  901. package/esm2022/dynamicdialog/dynamicdialog.mjs +0 -696
  902. package/esm2022/dynamicdialog/dynamicdialogcontent.mjs +0 -20
  903. package/esm2022/dynamicdialog/public_api.mjs +0 -7
  904. package/esm2022/editor/cax-design-system-editor.mjs +0 -5
  905. package/esm2022/editor/editor.interface.mjs +0 -2
  906. package/esm2022/editor/editor.mjs +0 -281
  907. package/esm2022/editor/editor.module.mjs +0 -19
  908. package/esm2022/editor/public_api.mjs +0 -4
  909. package/esm2022/fieldset/cax-design-system-fieldset.mjs +0 -5
  910. package/esm2022/fieldset/fieldset.interface.mjs +0 -2
  911. package/esm2022/fieldset/fieldset.mjs +0 -297
  912. package/esm2022/fieldset/public_api.mjs +0 -3
  913. package/esm2022/fileupload/cax-design-system-fileupload.mjs +0 -5
  914. package/esm2022/fileupload/fileupload.interface.mjs +0 -2
  915. package/esm2022/fileupload/fileupload.mjs +0 -1188
  916. package/esm2022/fileupload/public_api.mjs +0 -3
  917. package/esm2022/floatlabel/cax-design-system-floatlabel.mjs +0 -5
  918. package/esm2022/floatlabel/floatlabel.mjs +0 -28
  919. package/esm2022/floatlabel/floatlabel.module.mjs +0 -20
  920. package/esm2022/floatlabel/public_api.mjs +0 -3
  921. package/esm2022/focustrap/cax-design-system-focustrap.mjs +0 -5
  922. package/esm2022/focustrap/focustrap.mjs +0 -103
  923. package/esm2022/focustrap/public_api.mjs +0 -2
  924. package/esm2022/galleria/cax-design-system-galleria.mjs +0 -5
  925. package/esm2022/galleria/galleria.interface.mjs +0 -2
  926. package/esm2022/galleria/galleria.mjs +0 -1668
  927. package/esm2022/galleria/public_api.mjs +0 -3
  928. package/esm2022/iconfield/cax-design-system-iconfield.mjs +0 -5
  929. package/esm2022/iconfield/iconfield.mjs +0 -44
  930. package/esm2022/iconfield/public_api.mjs +0 -2
  931. package/esm2022/icons/angledoubledown/angledoubledown.mjs +0 -35
  932. package/esm2022/icons/angledoubledown/cax-design-system-icons-angledoubledown.mjs +0 -5
  933. package/esm2022/icons/angledoubledown/public_api.mjs +0 -2
  934. package/esm2022/icons/angledoubleleft/angledoubleleft.mjs +0 -35
  935. package/esm2022/icons/angledoubleleft/cax-design-system-icons-angledoubleleft.mjs +0 -5
  936. package/esm2022/icons/angledoubleleft/public_api.mjs +0 -2
  937. package/esm2022/icons/angledoubleright/angledoubleright.mjs +0 -35
  938. package/esm2022/icons/angledoubleright/cax-design-system-icons-angledoubleright.mjs +0 -5
  939. package/esm2022/icons/angledoubleright/public_api.mjs +0 -2
  940. package/esm2022/icons/angledoubleup/angledoubleup.mjs +0 -35
  941. package/esm2022/icons/angledoubleup/cax-design-system-icons-angledoubleup.mjs +0 -5
  942. package/esm2022/icons/angledoubleup/public_api.mjs +0 -2
  943. package/esm2022/icons/angledown/angledown.mjs +0 -31
  944. package/esm2022/icons/angledown/cax-design-system-icons-angledown.mjs +0 -5
  945. package/esm2022/icons/angledown/public_api.mjs +0 -2
  946. package/esm2022/icons/angleleft/angleleft.mjs +0 -31
  947. package/esm2022/icons/angleleft/cax-design-system-icons-angleleft.mjs +0 -5
  948. package/esm2022/icons/angleleft/public_api.mjs +0 -2
  949. package/esm2022/icons/angleright/angleright.mjs +0 -31
  950. package/esm2022/icons/angleright/cax-design-system-icons-angleright.mjs +0 -5
  951. package/esm2022/icons/angleright/public_api.mjs +0 -2
  952. package/esm2022/icons/angleup/angleup.mjs +0 -31
  953. package/esm2022/icons/angleup/cax-design-system-icons-angleup.mjs +0 -5
  954. package/esm2022/icons/angleup/public_api.mjs +0 -2
  955. package/esm2022/icons/arrowdown/arrowdown.mjs +0 -54
  956. package/esm2022/icons/arrowdown/cax-design-system-icons-arrowdown.mjs +0 -5
  957. package/esm2022/icons/arrowdown/public_api.mjs +0 -2
  958. package/esm2022/icons/arrowdownleft/arrowdownleft.mjs +0 -31
  959. package/esm2022/icons/arrowdownleft/cax-design-system-icons-arrowdownleft.mjs +0 -5
  960. package/esm2022/icons/arrowdownleft/public_api.mjs +0 -2
  961. package/esm2022/icons/arrowdownright/arrowdownright.mjs +0 -31
  962. package/esm2022/icons/arrowdownright/cax-design-system-icons-arrowdownright.mjs +0 -5
  963. package/esm2022/icons/arrowdownright/public_api.mjs +0 -2
  964. package/esm2022/icons/arrowleft/arrowleft.mjs +0 -54
  965. package/esm2022/icons/arrowleft/cax-design-system-icons-arrowleft.mjs +0 -5
  966. package/esm2022/icons/arrowleft/public_api.mjs +0 -2
  967. package/esm2022/icons/arrowright/arrowright.mjs +0 -35
  968. package/esm2022/icons/arrowright/cax-design-system-icons-arrowright.mjs +0 -5
  969. package/esm2022/icons/arrowright/public_api.mjs +0 -2
  970. package/esm2022/icons/arrowup/arrowup.mjs +0 -54
  971. package/esm2022/icons/arrowup/cax-design-system-icons-arrowup.mjs +0 -5
  972. package/esm2022/icons/arrowup/public_api.mjs +0 -2
  973. package/esm2022/icons/ban/ban.mjs +0 -50
  974. package/esm2022/icons/ban/cax-design-system-icons-ban.mjs +0 -5
  975. package/esm2022/icons/ban/public_api.mjs +0 -2
  976. package/esm2022/icons/bars/bars.mjs +0 -35
  977. package/esm2022/icons/bars/cax-design-system-icons-bars.mjs +0 -5
  978. package/esm2022/icons/bars/public_api.mjs +0 -2
  979. package/esm2022/icons/blank/blank.mjs +0 -25
  980. package/esm2022/icons/blank/cax-design-system-icons-blank.mjs +0 -5
  981. package/esm2022/icons/blank/public_api.mjs +0 -2
  982. package/esm2022/icons/calendar/calendar.mjs +0 -31
  983. package/esm2022/icons/calendar/cax-design-system-icons-calendar.mjs +0 -5
  984. package/esm2022/icons/calendar/public_api.mjs +0 -2
  985. package/esm2022/icons/caretleft/caretleft.mjs +0 -31
  986. package/esm2022/icons/caretleft/cax-design-system-icons-caretleft.mjs +0 -5
  987. package/esm2022/icons/caretleft/public_api.mjs +0 -2
  988. package/esm2022/icons/caretright/caretright.mjs +0 -31
  989. package/esm2022/icons/caretright/cax-design-system-icons-caretright.mjs +0 -5
  990. package/esm2022/icons/caretright/public_api.mjs +0 -2
  991. package/esm2022/icons/check/cax-design-system-icons-check.mjs +0 -5
  992. package/esm2022/icons/check/check.mjs +0 -31
  993. package/esm2022/icons/check/public_api.mjs +0 -2
  994. package/esm2022/icons/chevrondown/cax-design-system-icons-chevrondown.mjs +0 -5
  995. package/esm2022/icons/chevrondown/chevrondown.mjs +0 -31
  996. package/esm2022/icons/chevrondown/public_api.mjs +0 -2
  997. package/esm2022/icons/chevronleft/cax-design-system-icons-chevronleft.mjs +0 -5
  998. package/esm2022/icons/chevronleft/chevronleft.mjs +0 -31
  999. package/esm2022/icons/chevronleft/public_api.mjs +0 -2
  1000. package/esm2022/icons/chevronright/cax-design-system-icons-chevronright.mjs +0 -5
  1001. package/esm2022/icons/chevronright/chevronright.mjs +0 -31
  1002. package/esm2022/icons/chevronright/public_api.mjs +0 -2
  1003. package/esm2022/icons/chevronup/cax-design-system-icons-chevronup.mjs +0 -5
  1004. package/esm2022/icons/chevronup/chevronup.mjs +0 -31
  1005. package/esm2022/icons/chevronup/public_api.mjs +0 -2
  1006. package/esm2022/icons/exclamationtriangle/cax-design-system-icons-exclamationtriangle.mjs +0 -5
  1007. package/esm2022/icons/exclamationtriangle/exclamationtriangle.mjs +0 -66
  1008. package/esm2022/icons/exclamationtriangle/public_api.mjs +0 -2
  1009. package/esm2022/icons/eye/cax-design-system-icons-eye.mjs +0 -5
  1010. package/esm2022/icons/eye/eye.mjs +0 -35
  1011. package/esm2022/icons/eye/public_api.mjs +0 -2
  1012. package/esm2022/icons/eyeslash/cax-design-system-icons-eyeslash.mjs +0 -5
  1013. package/esm2022/icons/eyeslash/eyeslash.mjs +0 -54
  1014. package/esm2022/icons/eyeslash/public_api.mjs +0 -2
  1015. package/esm2022/icons/filter/cax-design-system-icons-filter.mjs +0 -5
  1016. package/esm2022/icons/filter/filter.mjs +0 -50
  1017. package/esm2022/icons/filter/public_api.mjs +0 -2
  1018. package/esm2022/icons/filterslash/cax-design-system-icons-filterslash.mjs +0 -5
  1019. package/esm2022/icons/filterslash/filterslash.mjs +0 -54
  1020. package/esm2022/icons/filterslash/public_api.mjs +0 -2
  1021. package/esm2022/icons/home/cax-design-system-icons-home.mjs +0 -5
  1022. package/esm2022/icons/home/home.mjs +0 -54
  1023. package/esm2022/icons/home/public_api.mjs +0 -2
  1024. package/esm2022/icons/infocircle/cax-design-system-icons-infocircle.mjs +0 -5
  1025. package/esm2022/icons/infocircle/infocircle.mjs +0 -54
  1026. package/esm2022/icons/infocircle/public_api.mjs +0 -2
  1027. package/esm2022/icons/minus/cax-design-system-icons-minus.mjs +0 -5
  1028. package/esm2022/icons/minus/minus.mjs +0 -32
  1029. package/esm2022/icons/minus/public_api.mjs +0 -2
  1030. package/esm2022/icons/pencil/cax-design-system-icons-pencil.mjs +0 -5
  1031. package/esm2022/icons/pencil/pencil.mjs +0 -50
  1032. package/esm2022/icons/pencil/public_api.mjs +0 -2
  1033. package/esm2022/icons/plus/cax-design-system-icons-plus.mjs +0 -5
  1034. package/esm2022/icons/plus/plus.mjs +0 -50
  1035. package/esm2022/icons/plus/public_api.mjs +0 -2
  1036. package/esm2022/icons/refresh/cax-design-system-icons-refresh.mjs +0 -5
  1037. package/esm2022/icons/refresh/public_api.mjs +0 -2
  1038. package/esm2022/icons/refresh/refresh.mjs +0 -54
  1039. package/esm2022/icons/search/cax-design-system-icons-search.mjs +0 -5
  1040. package/esm2022/icons/search/public_api.mjs +0 -2
  1041. package/esm2022/icons/search/search.mjs +0 -54
  1042. package/esm2022/icons/searchminus/cax-design-system-icons-searchminus.mjs +0 -5
  1043. package/esm2022/icons/searchminus/public_api.mjs +0 -2
  1044. package/esm2022/icons/searchminus/searchminus.mjs +0 -54
  1045. package/esm2022/icons/searchplus/cax-design-system-icons-searchplus.mjs +0 -5
  1046. package/esm2022/icons/searchplus/public_api.mjs +0 -2
  1047. package/esm2022/icons/searchplus/searchplus.mjs +0 -54
  1048. package/esm2022/icons/sortalt/cax-design-system-icons-sortalt.mjs +0 -5
  1049. package/esm2022/icons/sortalt/public_api.mjs +0 -2
  1050. package/esm2022/icons/sortalt/sortalt.mjs +0 -62
  1051. package/esm2022/icons/sortamountdown/cax-design-system-icons-sortamountdown.mjs +0 -5
  1052. package/esm2022/icons/sortamountdown/public_api.mjs +0 -2
  1053. package/esm2022/icons/sortamountdown/sortamountdown.mjs +0 -50
  1054. package/esm2022/icons/sortamountupalt/cax-design-system-icons-sortamountupalt.mjs +0 -5
  1055. package/esm2022/icons/sortamountupalt/public_api.mjs +0 -2
  1056. package/esm2022/icons/sortamountupalt/sortamountupalt.mjs +0 -50
  1057. package/esm2022/icons/spinner/cax-design-system-icons-spinner.mjs +0 -5
  1058. package/esm2022/icons/spinner/public_api.mjs +0 -2
  1059. package/esm2022/icons/spinner/spinner.mjs +0 -50
  1060. package/esm2022/icons/star/cax-design-system-icons-star.mjs +0 -5
  1061. package/esm2022/icons/star/public_api.mjs +0 -2
  1062. package/esm2022/icons/star/star.mjs +0 -50
  1063. package/esm2022/icons/starfill/cax-design-system-icons-starfill.mjs +0 -5
  1064. package/esm2022/icons/starfill/public_api.mjs +0 -2
  1065. package/esm2022/icons/starfill/starfill.mjs +0 -50
  1066. package/esm2022/icons/thlarge/cax-design-system-icons-thlarge.mjs +0 -5
  1067. package/esm2022/icons/thlarge/public_api.mjs +0 -2
  1068. package/esm2022/icons/thlarge/thlarge.mjs +0 -54
  1069. package/esm2022/icons/times/cax-design-system-icons-times.mjs +0 -5
  1070. package/esm2022/icons/times/public_api.mjs +0 -2
  1071. package/esm2022/icons/times/times.mjs +0 -31
  1072. package/esm2022/icons/timescircle/cax-design-system-icons-timescircle.mjs +0 -5
  1073. package/esm2022/icons/timescircle/public_api.mjs +0 -2
  1074. package/esm2022/icons/timescircle/timescircle.mjs +0 -54
  1075. package/esm2022/icons/trash/cax-design-system-icons-trash.mjs +0 -5
  1076. package/esm2022/icons/trash/public_api.mjs +0 -2
  1077. package/esm2022/icons/trash/trash.mjs +0 -54
  1078. package/esm2022/icons/undo/cax-design-system-icons-undo.mjs +0 -5
  1079. package/esm2022/icons/undo/public_api.mjs +0 -2
  1080. package/esm2022/icons/undo/undo.mjs +0 -54
  1081. package/esm2022/icons/upload/cax-design-system-icons-upload.mjs +0 -5
  1082. package/esm2022/icons/upload/public_api.mjs +0 -2
  1083. package/esm2022/icons/upload/upload.mjs +0 -54
  1084. package/esm2022/icons/windowmaximize/cax-design-system-icons-windowmaximize.mjs +0 -5
  1085. package/esm2022/icons/windowmaximize/public_api.mjs +0 -2
  1086. package/esm2022/icons/windowmaximize/windowmaximize.mjs +0 -54
  1087. package/esm2022/icons/windowminimize/cax-design-system-icons-windowminimize.mjs +0 -5
  1088. package/esm2022/icons/windowminimize/public_api.mjs +0 -2
  1089. package/esm2022/icons/windowminimize/windowminimize.mjs +0 -54
  1090. package/esm2022/image/cax-design-system-image.mjs +0 -5
  1091. package/esm2022/image/image.interface.mjs +0 -2
  1092. package/esm2022/image/image.mjs +0 -418
  1093. package/esm2022/image/image.module.mjs +0 -17
  1094. package/esm2022/image/public_api.mjs +0 -4
  1095. package/esm2022/inplace/cax-design-system-inplace.mjs +0 -5
  1096. package/esm2022/inplace/inplace.interface.mjs +0 -2
  1097. package/esm2022/inplace/inplace.mjs +0 -243
  1098. package/esm2022/inplace/public_api.mjs +0 -3
  1099. package/esm2022/inputgroup/cax-design-system-inputgroup.mjs +0 -5
  1100. package/esm2022/inputgroup/inputgroup.mjs +0 -55
  1101. package/esm2022/inputgroup/inputgroup.module.mjs +0 -25
  1102. package/esm2022/inputgroup/public_api.mjs +0 -3
  1103. package/esm2022/inputgroupaddon/cax-design-system-inputgroupaddon.mjs +0 -5
  1104. package/esm2022/inputgroupaddon/inputgroupaddon.mjs +0 -32
  1105. package/esm2022/inputgroupaddon/inputgroupaddon.module.mjs +0 -24
  1106. package/esm2022/inputgroupaddon/public_api.mjs +0 -3
  1107. package/esm2022/inputicon/cax-design-system-inputicon.mjs +0 -5
  1108. package/esm2022/inputicon/inputicon.mjs +0 -38
  1109. package/esm2022/inputicon/public_api.mjs +0 -2
  1110. package/esm2022/inputmask/cax-design-system-inputmask.mjs +0 -5
  1111. package/esm2022/inputmask/inputmask.interface.mjs +0 -2
  1112. package/esm2022/inputmask/inputmask.mjs +0 -848
  1113. package/esm2022/inputmask/inputmask.module.mjs +0 -22
  1114. package/esm2022/inputmask/public_api.mjs +0 -4
  1115. package/esm2022/inputnumber/cax-design-system-inputnumber.mjs +0 -5
  1116. package/esm2022/inputnumber/inputnumber.interface.mjs +0 -2
  1117. package/esm2022/inputnumber/inputnumber.mjs +0 -1296
  1118. package/esm2022/inputnumber/inputnumber.module.mjs +0 -17
  1119. package/esm2022/inputnumber/public_api.mjs +0 -4
  1120. package/esm2022/inputotp/cax-design-system-inputotp.mjs +0 -5
  1121. package/esm2022/inputotp/inputotp.interface.mjs +0 -2
  1122. package/esm2022/inputotp/inputotp.mjs +0 -381
  1123. package/esm2022/inputotp/public_api.mjs +0 -3
  1124. package/esm2022/inputswitch/cax-design-system-inputswitch.mjs +0 -5
  1125. package/esm2022/inputswitch/inputswitch.interface.mjs +0 -2
  1126. package/esm2022/inputswitch/inputswitch.mjs +0 -244
  1127. package/esm2022/inputswitch/public_api.mjs +0 -3
  1128. package/esm2022/inputtext/cax-design-system-inputtext.mjs +0 -5
  1129. package/esm2022/inputtext/inputtext.component.mjs +0 -132
  1130. package/esm2022/inputtext/inputtext.directive.mjs +0 -76
  1131. package/esm2022/inputtext/inputtext.module.mjs +0 -20
  1132. package/esm2022/inputtext/public_api.mjs +0 -4
  1133. package/esm2022/inputtextarea/cax-design-system-inputtextarea.mjs +0 -5
  1134. package/esm2022/inputtextarea/inputtextarea.component.mjs +0 -155
  1135. package/esm2022/inputtextarea/inputtextarea.directive.mjs +0 -121
  1136. package/esm2022/inputtextarea/inputtextarea.module.mjs +0 -20
  1137. package/esm2022/inputtextarea/public_api.mjs +0 -4
  1138. package/esm2022/keyfilter/cax-design-system-keyfilter.mjs +0 -5
  1139. package/esm2022/keyfilter/keyfilter.interface.mjs +0 -2
  1140. package/esm2022/keyfilter/keyfilter.mjs +0 -265
  1141. package/esm2022/keyfilter/public_api.mjs +0 -3
  1142. package/esm2022/knob/cax-design-system-knob.mjs +0 -5
  1143. package/esm2022/knob/knob.mjs +0 -464
  1144. package/esm2022/knob/public_api.mjs +0 -2
  1145. package/esm2022/listbox/cax-design-system-listbox.mjs +0 -5
  1146. package/esm2022/listbox/listbox.interface.mjs +0 -2
  1147. package/esm2022/listbox/listbox.mjs +0 -1555
  1148. package/esm2022/listbox/public_api.mjs +0 -3
  1149. package/esm2022/logo/cax-design-system-logo.mjs +0 -5
  1150. package/esm2022/logo/logo.mjs +0 -45
  1151. package/esm2022/logo/logo.module.mjs +0 -16
  1152. package/esm2022/logo/public_api.mjs +0 -3
  1153. package/esm2022/megamenu/cax-design-system-megamenu.mjs +0 -5
  1154. package/esm2022/megamenu/megamenu.interface.mjs +0 -2
  1155. package/esm2022/megamenu/megamenu.mjs +0 -1190
  1156. package/esm2022/megamenu/public_api.mjs +0 -3
  1157. package/esm2022/menu/cax-design-system-menu.mjs +0 -5
  1158. package/esm2022/menu/menu.mjs +0 -626
  1159. package/esm2022/menu/menu.module.mjs +0 -22
  1160. package/esm2022/menu/public_api.mjs +0 -3
  1161. package/esm2022/menubar/cax-design-system-menubar.mjs +0 -5
  1162. package/esm2022/menubar/menubar.interface.mjs +0 -2
  1163. package/esm2022/menubar/menubar.mjs +0 -1249
  1164. package/esm2022/menubar/public_api.mjs +0 -3
  1165. package/esm2022/message/cax-design-system-message.mjs +0 -5
  1166. package/esm2022/message/message.mjs +0 -112
  1167. package/esm2022/message/public_api.mjs +0 -2
  1168. package/esm2022/messages/cax-design-system-messages.mjs +0 -5
  1169. package/esm2022/messages/messages.interface.mjs +0 -2
  1170. package/esm2022/messages/messages.mjs +0 -283
  1171. package/esm2022/messages/messages.module.mjs +0 -17
  1172. package/esm2022/messages/public_api.mjs +0 -4
  1173. package/esm2022/metergroup/cax-design-system-metergroup.mjs +0 -5
  1174. package/esm2022/metergroup/metergroup.interface.mjs +0 -2
  1175. package/esm2022/metergroup/metergroup.mjs +0 -280
  1176. package/esm2022/metergroup/public_api.mjs +0 -3
  1177. package/esm2022/multiselect/cax-design-system-multiselect.mjs +0 -5
  1178. package/esm2022/multiselect/multiselect.interface.mjs +0 -2
  1179. package/esm2022/multiselect/multiselect.mjs +0 -1875
  1180. package/esm2022/multiselect/multiselect.module.mjs +0 -30
  1181. package/esm2022/multiselect/public_api.mjs +0 -4
  1182. package/esm2022/navigation/cax-design-system-navigation.mjs +0 -5
  1183. package/esm2022/navigation/navigation.interface.mjs +0 -2
  1184. package/esm2022/navigation/navigation.mjs +0 -399
  1185. package/esm2022/navigation/navigation.module.mjs +0 -16
  1186. package/esm2022/navigation/public_api.mjs +0 -3
  1187. package/esm2022/orderlist/cax-design-system-orderlist.mjs +0 -5
  1188. package/esm2022/orderlist/orderlist.interface.mjs +0 -2
  1189. package/esm2022/orderlist/orderlist.mjs +0 -993
  1190. package/esm2022/orderlist/public_api.mjs +0 -3
  1191. package/esm2022/organizationchart/cax-design-system-organizationchart.mjs +0 -5
  1192. package/esm2022/organizationchart/organizationchart.interface.mjs +0 -2
  1193. package/esm2022/organizationchart/organizationchart.mjs +0 -416
  1194. package/esm2022/organizationchart/public_api.mjs +0 -3
  1195. package/esm2022/overlay/cax-design-system-overlay.mjs +0 -5
  1196. package/esm2022/overlay/overlay.mjs +0 -579
  1197. package/esm2022/overlay/overlay.module.mjs +0 -17
  1198. package/esm2022/overlay/public_api.mjs +0 -3
  1199. package/esm2022/overlaypanel/cax-design-system-overlaypanel.mjs +0 -5
  1200. package/esm2022/overlaypanel/overlaypanel.mjs +0 -470
  1201. package/esm2022/overlaypanel/overlaypanel.module.mjs +0 -17
  1202. package/esm2022/overlaypanel/public_api.mjs +0 -3
  1203. package/esm2022/paginator/cax-design-system-paginator.mjs +0 -5
  1204. package/esm2022/paginator/paginator.interface.mjs +0 -2
  1205. package/esm2022/paginator/paginator.mjs +0 -437
  1206. package/esm2022/paginator/paginator.module.mjs +0 -27
  1207. package/esm2022/paginator/public_api.mjs +0 -4
  1208. package/esm2022/panel/cax-design-system-panel.mjs +0 -5
  1209. package/esm2022/panel/panel.interface.mjs +0 -2
  1210. package/esm2022/panel/panel.mjs +0 -393
  1211. package/esm2022/panel/public_api.mjs +0 -3
  1212. package/esm2022/panelmenu/cax-design-system-panelmenu.mjs +0 -5
  1213. package/esm2022/panelmenu/panelmenu.interface.mjs +0 -2
  1214. package/esm2022/panelmenu/panelmenu.mjs +0 -1276
  1215. package/esm2022/panelmenu/public_api.mjs +0 -3
  1216. package/esm2022/password/cax-design-system-password.mjs +0 -5
  1217. package/esm2022/password/password.mjs +0 -1017
  1218. package/esm2022/password/public_api.mjs +0 -2
  1219. package/esm2022/picklist/cax-design-system-picklist.mjs +0 -5
  1220. package/esm2022/picklist/picklist.interface.mjs +0 -2
  1221. package/esm2022/picklist/picklist.mjs +0 -1909
  1222. package/esm2022/picklist/public_api.mjs +0 -3
  1223. package/esm2022/progressbar/cax-design-system-progressbar.mjs +0 -5
  1224. package/esm2022/progressbar/progressbar.mjs +0 -86
  1225. package/esm2022/progressbar/progressbar.module.mjs +0 -18
  1226. package/esm2022/progressbar/public_api.mjs +0 -3
  1227. package/esm2022/progressspinner/cax-design-system-progressspinner.mjs +0 -5
  1228. package/esm2022/progressspinner/progressspinner.mjs +0 -112
  1229. package/esm2022/progressspinner/progressspinner.module.mjs +0 -18
  1230. package/esm2022/progressspinner/public_api.mjs +0 -3
  1231. package/esm2022/public_api.mjs +0 -2
  1232. package/esm2022/radiobutton/cax-design-system-radiobutton.mjs +0 -5
  1233. package/esm2022/radiobutton/public_api.mjs +0 -4
  1234. package/esm2022/radiobutton/radiobutton.interface.mjs +0 -2
  1235. package/esm2022/radiobutton/radiobutton.mjs +0 -284
  1236. package/esm2022/radiobutton/radiobutton.module.mjs +0 -16
  1237. package/esm2022/rating/cax-design-system-rating.mjs +0 -5
  1238. package/esm2022/rating/public_api.mjs +0 -3
  1239. package/esm2022/rating/rating.interface.mjs +0 -2
  1240. package/esm2022/rating/rating.mjs +0 -388
  1241. package/esm2022/ripple/cax-design-system-ripple.mjs +0 -5
  1242. package/esm2022/ripple/public_api.mjs +0 -3
  1243. package/esm2022/ripple/ripple.mjs +0 -129
  1244. package/esm2022/ripple/ripple.module.mjs +0 -16
  1245. package/esm2022/scroller/cax-design-system-scroller.mjs +0 -5
  1246. package/esm2022/scroller/public_api.mjs +0 -4
  1247. package/esm2022/scroller/scroller.interface.mjs +0 -2
  1248. package/esm2022/scroller/scroller.mjs +0 -981
  1249. package/esm2022/scroller/scroller.module.mjs +0 -17
  1250. package/esm2022/scrollpanel/cax-design-system-scrollpanel.mjs +0 -5
  1251. package/esm2022/scrollpanel/public_api.mjs +0 -3
  1252. package/esm2022/scrollpanel/scrollpanel.interface.mjs +0 -2
  1253. package/esm2022/scrollpanel/scrollpanel.mjs +0 -501
  1254. package/esm2022/scrolltop/cax-design-system-scrolltop.mjs +0 -5
  1255. package/esm2022/scrolltop/public_api.mjs +0 -3
  1256. package/esm2022/scrolltop/scrolltop.interface.mjs +0 -2
  1257. package/esm2022/scrolltop/scrolltop.mjs +0 -282
  1258. package/esm2022/selectbutton/cax-design-system-selectbutton.mjs +0 -5
  1259. package/esm2022/selectbutton/public_api.mjs +0 -4
  1260. package/esm2022/selectbutton/selectbutton.interface.mjs +0 -2
  1261. package/esm2022/selectbutton/selectbutton.mjs +0 -303
  1262. package/esm2022/selectbutton/selectbutton.module.mjs +0 -21
  1263. package/esm2022/sidebar/cax-design-system-sidebar.mjs +0 -5
  1264. package/esm2022/sidebar/public_api.mjs +0 -4
  1265. package/esm2022/sidebar/sidebar.interface.mjs +0 -2
  1266. package/esm2022/sidebar/sidebar.mjs +0 -488
  1267. package/esm2022/sidebar/sidebar.module.mjs +0 -21
  1268. package/esm2022/skeleton/cax-design-system-skeleton.mjs +0 -5
  1269. package/esm2022/skeleton/public_api.mjs +0 -3
  1270. package/esm2022/skeleton/skeleton.mjs +0 -87
  1271. package/esm2022/skeleton/skeleton.module.mjs +0 -18
  1272. package/esm2022/slidemenu/cax-design-system-slidemenu.mjs +0 -5
  1273. package/esm2022/slidemenu/public_api.mjs +0 -3
  1274. package/esm2022/slidemenu/slidemenu.interface.mjs +0 -2
  1275. package/esm2022/slidemenu/slidemenu.mjs +0 -1501
  1276. package/esm2022/slider/cax-design-system-slider.mjs +0 -5
  1277. package/esm2022/slider/public_api.mjs +0 -3
  1278. package/esm2022/slider/slider.interface.mjs +0 -2
  1279. package/esm2022/slider/slider.mjs +0 -796
  1280. package/esm2022/speeddial/cax-design-system-speeddial.mjs +0 -5
  1281. package/esm2022/speeddial/public_api.mjs +0 -4
  1282. package/esm2022/speeddial/speeddial.interface.mjs +0 -2
  1283. package/esm2022/speeddial/speeddial.mjs +0 -611
  1284. package/esm2022/speeddial/speeddial.module.mjs +0 -24
  1285. package/esm2022/spinner/cax-design-system-spinner.mjs +0 -5
  1286. package/esm2022/spinner/public_api.mjs +0 -2
  1287. package/esm2022/spinner/spinner.mjs +0 -447
  1288. package/esm2022/splitbutton/cax-design-system-splitbutton.mjs +0 -5
  1289. package/esm2022/splitbutton/public_api.mjs +0 -4
  1290. package/esm2022/splitbutton/splitbutton.interface.mjs +0 -2
  1291. package/esm2022/splitbutton/splitbutton.mjs +0 -369
  1292. package/esm2022/splitbutton/splitbutton.module.mjs +0 -23
  1293. package/esm2022/splitter/cax-design-system-splitter.mjs +0 -5
  1294. package/esm2022/splitter/public_api.mjs +0 -4
  1295. package/esm2022/splitter/splitter.interface.mjs +0 -2
  1296. package/esm2022/splitter/splitter.mjs +0 -490
  1297. package/esm2022/splitter/splitter.module.mjs +0 -19
  1298. package/esm2022/stepper/cax-design-system-stepper.mjs +0 -5
  1299. package/esm2022/stepper/public_api.mjs +0 -3
  1300. package/esm2022/stepper/stepper.interface.mjs +0 -2
  1301. package/esm2022/stepper/stepper.mjs +0 -677
  1302. package/esm2022/steps/cax-design-system-steps.mjs +0 -5
  1303. package/esm2022/steps/public_api.mjs +0 -3
  1304. package/esm2022/steps/steps.mjs +0 -207
  1305. package/esm2022/steps/steps.module.mjs +0 -20
  1306. package/esm2022/styleclass/cax-design-system-styleclass.mjs +0 -5
  1307. package/esm2022/styleclass/public_api.mjs +0 -2
  1308. package/esm2022/styleclass/styleclass.mjs +0 -316
  1309. package/esm2022/table/cax-design-system-table.mjs +0 -5
  1310. package/esm2022/table/columnfilter.interface.mjs +0 -2
  1311. package/esm2022/table/components/cell-editor/cell-editor.mjs +0 -52
  1312. package/esm2022/table/components/column-filter/column-filter.mjs +0 -865
  1313. package/esm2022/table/components/column-filter-form-element/column-filter-form-element.mjs +0 -107
  1314. package/esm2022/table/components/sort-icon/sort-icon.mjs +0 -78
  1315. package/esm2022/table/components/table-body/table-body.mjs +0 -152
  1316. package/esm2022/table/components/table-checkbox/table-checkbox.mjs +0 -83
  1317. package/esm2022/table/components/table-header-checkbox/table-header-checkbox.mjs +0 -92
  1318. package/esm2022/table/components/table-radio-button/table-radio-button.mjs +0 -79
  1319. package/esm2022/table/directives/cancel-editable-row.directive.mjs +0 -32
  1320. package/esm2022/table/directives/cell-highlight.directive.mjs +0 -42
  1321. package/esm2022/table/directives/content-menu-row.directive.mjs +0 -70
  1322. package/esm2022/table/directives/dynamic-column-width.directive.mjs +0 -34
  1323. package/esm2022/table/directives/editable-column.directive.mjs +0 -344
  1324. package/esm2022/table/directives/editable-row.directive.mjs +0 -32
  1325. package/esm2022/table/directives/frozen-column.directive.mjs +0 -77
  1326. package/esm2022/table/directives/init-editable-row.directive.mjs +0 -32
  1327. package/esm2022/table/directives/reorderable-column.directive.mjs +0 -115
  1328. package/esm2022/table/directives/reorderable-row-handle.directive.mjs +0 -25
  1329. package/esm2022/table/directives/reorderable-row.directive.mjs +0 -122
  1330. package/esm2022/table/directives/resizable-column.directive.mjs +0 -123
  1331. package/esm2022/table/directives/row-group-header.directive.mjs +0 -26
  1332. package/esm2022/table/directives/row-toggler.directive.mjs +0 -42
  1333. package/esm2022/table/directives/save-editable-row.directive.mjs +0 -32
  1334. package/esm2022/table/directives/selectable-row-double-click.directive.mjs +0 -71
  1335. package/esm2022/table/directives/selectable-row.directive.mjs +0 -243
  1336. package/esm2022/table/directives/sortable-column.directive.mjs +0 -90
  1337. package/esm2022/table/public_api.mjs +0 -31
  1338. package/esm2022/table/table.interface.mjs +0 -2
  1339. package/esm2022/table/table.mjs +0 -2799
  1340. package/esm2022/table/table.module.mjs +0 -157
  1341. package/esm2022/table/table.service.mjs +0 -42
  1342. package/esm2022/tableconfiguration/cax-design-system-tableconfiguration.mjs +0 -5
  1343. package/esm2022/tableconfiguration/public_api.mjs +0 -3
  1344. package/esm2022/tableconfiguration/tableconfiguration.mjs +0 -60
  1345. package/esm2022/tableconfiguration/tableconfiguration.module.mjs +0 -16
  1346. package/esm2022/tabmenu/cax-design-system-tabmenu.mjs +0 -5
  1347. package/esm2022/tabmenu/public_api.mjs +0 -3
  1348. package/esm2022/tabmenu/tabmenu.interface.mjs +0 -2
  1349. package/esm2022/tabmenu/tabmenu.mjs +0 -576
  1350. package/esm2022/tabview/cax-design-system-tabview.mjs +0 -5
  1351. package/esm2022/tabview/public_api.mjs +0 -4
  1352. package/esm2022/tabview/tabview.interface.mjs +0 -2
  1353. package/esm2022/tabview/tabview.mjs +0 -913
  1354. package/esm2022/tabview/tabview.module.mjs +0 -25
  1355. package/esm2022/tag/cax-design-system-tag.mjs +0 -5
  1356. package/esm2022/tag/public_api.mjs +0 -4
  1357. package/esm2022/tag/tag.interface.mjs +0 -2
  1358. package/esm2022/tag/tag.mjs +0 -95
  1359. package/esm2022/tag/tag.module.mjs +0 -19
  1360. package/esm2022/terminal/cax-design-system-terminal.mjs +0 -5
  1361. package/esm2022/terminal/public_api.mjs +0 -3
  1362. package/esm2022/terminal/terminal.mjs +0 -143
  1363. package/esm2022/terminal/terminalservice.mjs +0 -25
  1364. package/esm2022/tieredmenu/cax-design-system-tieredmenu.mjs +0 -5
  1365. package/esm2022/tieredmenu/public_api.mjs +0 -4
  1366. package/esm2022/tieredmenu/tieredmenu.interface.mjs +0 -2
  1367. package/esm2022/tieredmenu/tieredmenu.mjs +0 -1289
  1368. package/esm2022/tieredmenu/tiredmenu.module.mjs +0 -23
  1369. package/esm2022/timeline/cax-design-system-timeline.mjs +0 -5
  1370. package/esm2022/timeline/public_api.mjs +0 -4
  1371. package/esm2022/timeline/timeline.interface.mjs +0 -2
  1372. package/esm2022/timeline/timeline.mjs +0 -83
  1373. package/esm2022/timeline/timeline.module.mjs +0 -19
  1374. package/esm2022/toast/cax-design-system-toast.mjs +0 -5
  1375. package/esm2022/toast/public_api.mjs +0 -4
  1376. package/esm2022/toast/toast.interface.mjs +0 -2
  1377. package/esm2022/toast/toast.mjs +0 -324
  1378. package/esm2022/toast/toast.module.mjs +0 -18
  1379. package/esm2022/toast/toastitem.mjs +0 -170
  1380. package/esm2022/togglebutton/cax-design-system-togglebutton.mjs +0 -5
  1381. package/esm2022/togglebutton/public_api.mjs +0 -3
  1382. package/esm2022/togglebutton/togglebutton.interface.mjs +0 -2
  1383. package/esm2022/togglebutton/togglebutton.mjs +0 -274
  1384. package/esm2022/toggleswitch/cax-design-system-toggleswitch.mjs +0 -5
  1385. package/esm2022/toggleswitch/public_api.mjs +0 -3
  1386. package/esm2022/toggleswitch/toggleswitch.mjs +0 -37
  1387. package/esm2022/toggleswitch/toggleswitch.module.mjs +0 -19
  1388. package/esm2022/toolbar/cax-design-system-toolbar.mjs +0 -5
  1389. package/esm2022/toolbar/public_api.mjs +0 -3
  1390. package/esm2022/toolbar/toolbar.interface.mjs +0 -2
  1391. package/esm2022/toolbar/toolbar.mjs +0 -111
  1392. package/esm2022/tooltip/cax-design-system-tooltip.mjs +0 -5
  1393. package/esm2022/tooltip/public_api.mjs +0 -3
  1394. package/esm2022/tooltip/tooltip.mjs +0 -889
  1395. package/esm2022/tooltip/tooltip.module.mjs +0 -20
  1396. package/esm2022/tree/cax-design-system-tree.mjs +0 -5
  1397. package/esm2022/tree/public_api.mjs +0 -4
  1398. package/esm2022/tree/tree.interface.mjs +0 -2
  1399. package/esm2022/tree/tree.mjs +0 -1544
  1400. package/esm2022/tree/tree.module.mjs +0 -31
  1401. package/esm2022/treeselect/cax-design-system-treeselect.mjs +0 -5
  1402. package/esm2022/treeselect/public_api.mjs +0 -4
  1403. package/esm2022/treeselect/treeselect.interface.mjs +0 -2
  1404. package/esm2022/treeselect/treeselect.mjs +0 -865
  1405. package/esm2022/treeselect/treeselect.module.mjs +0 -26
  1406. package/esm2022/treetable/cax-design-system-treetable.mjs +0 -5
  1407. package/esm2022/treetable/public_api.mjs +0 -3
  1408. package/esm2022/treetable/treetable.interface.mjs +0 -2
  1409. package/esm2022/treetable/treetable.mjs +0 -4111
  1410. package/esm2022/tristatecheckbox/cax-design-system-tristatecheckbox.mjs +0 -5
  1411. package/esm2022/tristatecheckbox/public_api.mjs +0 -4
  1412. package/esm2022/tristatecheckbox/tristatecheckbox.interface.mjs +0 -2
  1413. package/esm2022/tristatecheckbox/tristatecheckbox.mjs +0 -215
  1414. package/esm2022/tristatecheckbox/tristatecheckbox.module.mjs +0 -17
  1415. package/esm2022/ts-helpers/cax-design-system-ts-helpers.mjs +0 -5
  1416. package/esm2022/ts-helpers/public_api.mjs +0 -2
  1417. package/esm2022/ts-helpers/ts-helpers.mjs +0 -2
  1418. package/esm2022/upload/cax-design-system-upload.mjs +0 -5
  1419. package/esm2022/upload/public_api.mjs +0 -3
  1420. package/esm2022/upload/upload.component.mjs +0 -367
  1421. package/esm2022/upload/upload.component.module.mjs +0 -21
  1422. package/esm2022/utils/cax-design-system-utils.mjs +0 -5
  1423. package/esm2022/utils/objectutils.mjs +0 -258
  1424. package/esm2022/utils/public_api.mjs +0 -5
  1425. package/esm2022/utils/uniquecomponentid.mjs +0 -6
  1426. package/esm2022/utils/zindexutils.mjs +0 -35
  1427. package/esm2022/virtualscroller/cax-design-system-virtualscroller.mjs +0 -5
  1428. package/esm2022/virtualscroller/public_api.mjs +0 -3
  1429. package/esm2022/virtualscroller/virtualscroller.interface.mjs +0 -2
  1430. package/esm2022/virtualscroller/virtualscroller.mjs +0 -215
  1431. package/fieldset/fieldset.d.ts +0 -93
  1432. package/fieldset/fieldset.interface.d.ts +0 -46
  1433. package/fieldset/public_api.d.ts +0 -2
  1434. package/fileupload/fileupload.d.ts +0 -380
  1435. package/fileupload/fileupload.interface.d.ts +0 -226
  1436. package/fileupload/public_api.d.ts +0 -2
  1437. package/floatlabel/floatlabel.d.ts +0 -9
  1438. package/floatlabel/floatlabel.module.d.ts +0 -10
  1439. package/floatlabel/public_api.d.ts +0 -2
  1440. package/focustrap/focustrap.d.ts +0 -34
  1441. package/focustrap/public_api.d.ts +0 -1
  1442. package/galleria/galleria.d.ts +0 -404
  1443. package/galleria/galleria.interface.d.ts +0 -97
  1444. package/galleria/public_api.d.ts +0 -2
  1445. package/iconfield/iconfield.d.ts +0 -25
  1446. package/iconfield/public_api.d.ts +0 -1
  1447. package/icons/angledoubledown/angledoubledown.d.ts +0 -6
  1448. package/icons/angledoubledown/public_api.d.ts +0 -1
  1449. package/icons/angledoubleleft/angledoubleleft.d.ts +0 -6
  1450. package/icons/angledoubleleft/public_api.d.ts +0 -1
  1451. package/icons/angledoubleright/angledoubleright.d.ts +0 -6
  1452. package/icons/angledoubleright/public_api.d.ts +0 -1
  1453. package/icons/angledoubleup/angledoubleup.d.ts +0 -6
  1454. package/icons/angledoubleup/public_api.d.ts +0 -1
  1455. package/icons/angledown/angledown.d.ts +0 -6
  1456. package/icons/angledown/public_api.d.ts +0 -1
  1457. package/icons/angleleft/angleleft.d.ts +0 -6
  1458. package/icons/angleleft/public_api.d.ts +0 -1
  1459. package/icons/angleright/angleright.d.ts +0 -6
  1460. package/icons/angleright/public_api.d.ts +0 -1
  1461. package/icons/angleup/angleup.d.ts +0 -6
  1462. package/icons/angleup/public_api.d.ts +0 -1
  1463. package/icons/arrowdown/arrowdown.d.ts +0 -9
  1464. package/icons/arrowdown/public_api.d.ts +0 -1
  1465. package/icons/arrowdownleft/arrowdownleft.d.ts +0 -6
  1466. package/icons/arrowdownleft/public_api.d.ts +0 -1
  1467. package/icons/arrowdownright/arrowdownright.d.ts +0 -6
  1468. package/icons/arrowdownright/public_api.d.ts +0 -1
  1469. package/icons/arrowleft/arrowleft.d.ts +0 -8
  1470. package/icons/arrowleft/public_api.d.ts +0 -1
  1471. package/icons/arrowright/arrowright.d.ts +0 -6
  1472. package/icons/arrowright/public_api.d.ts +0 -1
  1473. package/icons/arrowup/arrowup.d.ts +0 -8
  1474. package/icons/arrowup/public_api.d.ts +0 -1
  1475. package/icons/ban/ban.d.ts +0 -8
  1476. package/icons/ban/public_api.d.ts +0 -1
  1477. package/icons/bars/bars.d.ts +0 -6
  1478. package/icons/bars/public_api.d.ts +0 -1
  1479. package/icons/blank/blank.d.ts +0 -6
  1480. package/icons/blank/public_api.d.ts +0 -1
  1481. package/icons/calendar/calendar.d.ts +0 -6
  1482. package/icons/calendar/public_api.d.ts +0 -1
  1483. package/icons/caretleft/caretleft.d.ts +0 -6
  1484. package/icons/caretleft/public_api.d.ts +0 -1
  1485. package/icons/caretright/caretright.d.ts +0 -6
  1486. package/icons/caretright/public_api.d.ts +0 -1
  1487. package/icons/check/check.d.ts +0 -6
  1488. package/icons/check/public_api.d.ts +0 -1
  1489. package/icons/chevrondown/chevrondown.d.ts +0 -6
  1490. package/icons/chevrondown/public_api.d.ts +0 -1
  1491. package/icons/chevronleft/chevronleft.d.ts +0 -6
  1492. package/icons/chevronleft/public_api.d.ts +0 -1
  1493. package/icons/chevronright/chevronright.d.ts +0 -6
  1494. package/icons/chevronright/public_api.d.ts +0 -1
  1495. package/icons/chevronup/chevronup.d.ts +0 -6
  1496. package/icons/chevronup/public_api.d.ts +0 -1
  1497. package/icons/exclamationtriangle/exclamationtriangle.d.ts +0 -9
  1498. package/icons/exclamationtriangle/public_api.d.ts +0 -1
  1499. package/icons/eye/eye.d.ts +0 -6
  1500. package/icons/eye/public_api.d.ts +0 -1
  1501. package/icons/eyeslash/eyeslash.d.ts +0 -8
  1502. package/icons/eyeslash/public_api.d.ts +0 -1
  1503. package/icons/filter/filter.d.ts +0 -8
  1504. package/icons/filter/public_api.d.ts +0 -1
  1505. package/icons/filterslash/filterslash.d.ts +0 -8
  1506. package/icons/filterslash/public_api.d.ts +0 -1
  1507. package/icons/home/home.d.ts +0 -8
  1508. package/icons/home/public_api.d.ts +0 -1
  1509. package/icons/infocircle/infocircle.d.ts +0 -8
  1510. package/icons/infocircle/public_api.d.ts +0 -1
  1511. package/icons/minus/minus.d.ts +0 -6
  1512. package/icons/minus/public_api.d.ts +0 -1
  1513. package/icons/pencil/pencil.d.ts +0 -8
  1514. package/icons/pencil/public_api.d.ts +0 -1
  1515. package/icons/plus/plus.d.ts +0 -8
  1516. package/icons/plus/public_api.d.ts +0 -1
  1517. package/icons/refresh/public_api.d.ts +0 -1
  1518. package/icons/refresh/refresh.d.ts +0 -8
  1519. package/icons/search/public_api.d.ts +0 -1
  1520. package/icons/search/search.d.ts +0 -8
  1521. package/icons/searchminus/public_api.d.ts +0 -1
  1522. package/icons/searchminus/searchminus.d.ts +0 -8
  1523. package/icons/searchplus/public_api.d.ts +0 -1
  1524. package/icons/searchplus/searchplus.d.ts +0 -8
  1525. package/icons/sortalt/public_api.d.ts +0 -1
  1526. package/icons/sortalt/sortalt.d.ts +0 -8
  1527. package/icons/sortamountdown/public_api.d.ts +0 -1
  1528. package/icons/sortamountdown/sortamountdown.d.ts +0 -8
  1529. package/icons/sortamountupalt/public_api.d.ts +0 -1
  1530. package/icons/sortamountupalt/sortamountupalt.d.ts +0 -8
  1531. package/icons/spinner/public_api.d.ts +0 -1
  1532. package/icons/spinner/spinner.d.ts +0 -8
  1533. package/icons/star/public_api.d.ts +0 -1
  1534. package/icons/star/star.d.ts +0 -8
  1535. package/icons/starfill/public_api.d.ts +0 -1
  1536. package/icons/starfill/starfill.d.ts +0 -8
  1537. package/icons/thlarge/public_api.d.ts +0 -1
  1538. package/icons/thlarge/thlarge.d.ts +0 -8
  1539. package/icons/times/public_api.d.ts +0 -1
  1540. package/icons/times/times.d.ts +0 -6
  1541. package/icons/timescircle/public_api.d.ts +0 -1
  1542. package/icons/timescircle/timescircle.d.ts +0 -8
  1543. package/icons/trash/public_api.d.ts +0 -1
  1544. package/icons/trash/trash.d.ts +0 -8
  1545. package/icons/undo/public_api.d.ts +0 -1
  1546. package/icons/undo/undo.d.ts +0 -8
  1547. package/icons/upload/public_api.d.ts +0 -1
  1548. package/icons/upload/upload.d.ts +0 -8
  1549. package/icons/windowmaximize/public_api.d.ts +0 -1
  1550. package/icons/windowmaximize/windowmaximize.d.ts +0 -8
  1551. package/icons/windowminimize/public_api.d.ts +0 -1
  1552. package/icons/windowminimize/windowminimize.d.ts +0 -8
  1553. package/image/image.d.ts +0 -188
  1554. package/image/image.interface.d.ts +0 -31
  1555. package/image/image.module.d.ts +0 -8
  1556. package/image/public_api.d.ts +0 -3
  1557. package/inplace/inplace.d.ts +0 -109
  1558. package/inplace/inplace.interface.d.ts +0 -19
  1559. package/inplace/public_api.d.ts +0 -2
  1560. package/inputgroup/inputgroup.d.ts +0 -33
  1561. package/inputgroup/inputgroup.module.d.ts +0 -15
  1562. package/inputgroup/public_api.d.ts +0 -2
  1563. package/inputgroupaddon/inputgroupaddon.d.ts +0 -21
  1564. package/inputgroupaddon/inputgroupaddon.module.d.ts +0 -14
  1565. package/inputgroupaddon/public_api.d.ts +0 -2
  1566. package/inputicon/inputicon.d.ts +0 -21
  1567. package/inputicon/public_api.d.ts +0 -1
  1568. package/inputmask/inputmask.d.ts +0 -273
  1569. package/inputmask/inputmask.interface.d.ts +0 -19
  1570. package/inputmask/inputmask.module.d.ts +0 -12
  1571. package/inputmask/public_api.d.ts +0 -3
  1572. package/inputnumber/inputnumber.d.ts +0 -397
  1573. package/inputnumber/inputnumber.interface.d.ts +0 -38
  1574. package/inputnumber/inputnumber.module.d.ts +0 -8
  1575. package/inputnumber/public_api.d.ts +0 -3
  1576. package/inputotp/inputotp.d.ts +0 -123
  1577. package/inputotp/inputotp.interface.d.ts +0 -65
  1578. package/inputotp/public_api.d.ts +0 -2
  1579. package/inputswitch/inputswitch.d.ts +0 -106
  1580. package/inputswitch/inputswitch.interface.d.ts +0 -15
  1581. package/inputswitch/public_api.d.ts +0 -2
  1582. package/inputtext/inputtext.component.d.ts +0 -43
  1583. package/inputtext/inputtext.directive.d.ts +0 -25
  1584. package/inputtext/inputtext.module.d.ts +0 -10
  1585. package/inputtext/public_api.d.ts +0 -3
  1586. package/inputtextarea/inputtextarea.component.d.ts +0 -57
  1587. package/inputtextarea/inputtextarea.directive.d.ts +0 -47
  1588. package/inputtextarea/inputtextarea.module.d.ts +0 -10
  1589. package/inputtextarea/public_api.d.ts +0 -3
  1590. package/keyfilter/keyfilter.d.ts +0 -58
  1591. package/keyfilter/keyfilter.interface.d.ts +0 -5
  1592. package/keyfilter/public_api.d.ts +0 -2
  1593. package/knob/knob.d.ts +0 -178
  1594. package/knob/public_api.d.ts +0 -1
  1595. package/listbox/listbox.d.ts +0 -463
  1596. package/listbox/listbox.interface.d.ts +0 -156
  1597. package/listbox/public_api.d.ts +0 -2
  1598. package/logo/logo.d.ts +0 -11
  1599. package/logo/logo.module.d.ts +0 -7
  1600. package/logo/public_api.d.ts +0 -2
  1601. package/megamenu/megamenu.d.ts +0 -198
  1602. package/megamenu/megamenu.interface.d.ts +0 -31
  1603. package/megamenu/public_api.d.ts +0 -2
  1604. package/menu/menu.d.ts +0 -210
  1605. package/menu/menu.module.d.ts +0 -12
  1606. package/menu/public_api.d.ts +0 -2
  1607. package/menubar/menubar.d.ts +0 -248
  1608. package/menubar/menubar.interface.d.ts +0 -40
  1609. package/menubar/public_api.d.ts +0 -2
  1610. package/message/message.d.ts +0 -52
  1611. package/message/public_api.d.ts +0 -1
  1612. package/messages/messages.d.ts +0 -115
  1613. package/messages/messages.interface.d.ts +0 -18
  1614. package/messages/messages.module.d.ts +0 -8
  1615. package/messages/public_api.d.ts +0 -3
  1616. package/metergroup/metergroup.d.ts +0 -101
  1617. package/metergroup/metergroup.interface.d.ts +0 -122
  1618. package/metergroup/public_api.d.ts +0 -2
  1619. package/multiselect/multiselect.d.ts +0 -710
  1620. package/multiselect/multiselect.interface.d.ts +0 -247
  1621. package/multiselect/multiselect.module.d.ts +0 -20
  1622. package/multiselect/public_api.d.ts +0 -3
  1623. package/navigation/navigation.d.ts +0 -70
  1624. package/navigation/navigation.interface.d.ts +0 -26
  1625. package/navigation/navigation.module.d.ts +0 -7
  1626. package/navigation/public_api.d.ts +0 -2
  1627. package/orderlist/orderlist.d.ts +0 -270
  1628. package/orderlist/orderlist.interface.d.ts +0 -110
  1629. package/orderlist/public_api.d.ts +0 -2
  1630. package/organizationchart/organizationchart.d.ts +0 -132
  1631. package/organizationchart/organizationchart.interface.d.ts +0 -59
  1632. package/organizationchart/public_api.d.ts +0 -2
  1633. package/overlay/overlay.d.ts +0 -238
  1634. package/overlay/overlay.module.d.ts +0 -8
  1635. package/overlay/public_api.d.ts +0 -2
  1636. package/overlaypanel/overlaypanel.d.ts +0 -162
  1637. package/overlaypanel/overlaypanel.module.d.ts +0 -8
  1638. package/overlaypanel/public_api.d.ts +0 -2
  1639. package/paginator/paginator.d.ts +0 -195
  1640. package/paginator/paginator.interface.d.ts +0 -37
  1641. package/paginator/paginator.module.d.ts +0 -17
  1642. package/paginator/public_api.d.ts +0 -3
  1643. package/panel/panel.d.ts +0 -126
  1644. package/panel/panel.interface.d.ts +0 -58
  1645. package/panel/public_api.d.ts +0 -2
  1646. package/panelmenu/panelmenu.d.ts +0 -225
  1647. package/panelmenu/panelmenu.interface.d.ts +0 -23
  1648. package/panelmenu/public_api.d.ts +0 -2
  1649. package/password/password.d.ts +0 -342
  1650. package/password/public_api.d.ts +0 -1
  1651. package/picklist/picklist.d.ts +0 -453
  1652. package/picklist/picklist.interface.d.ts +0 -242
  1653. package/picklist/public_api.d.ts +0 -2
  1654. package/progressbar/progressbar.d.ts +0 -54
  1655. package/progressbar/progressbar.module.d.ts +0 -8
  1656. package/progressbar/public_api.d.ts +0 -2
  1657. package/progressspinner/progressspinner.d.ts +0 -50
  1658. package/progressspinner/progressspinner.module.d.ts +0 -8
  1659. package/progressspinner/public_api.d.ts +0 -2
  1660. package/public_api.d.ts +0 -2
  1661. package/radiobutton/public_api.d.ts +0 -3
  1662. package/radiobutton/radiobutton.d.ts +0 -150
  1663. package/radiobutton/radiobutton.interface.d.ts +0 -15
  1664. package/radiobutton/radiobutton.module.d.ts +0 -7
  1665. package/rating/public_api.d.ts +0 -2
  1666. package/rating/rating.d.ts +0 -146
  1667. package/rating/rating.interface.d.ts +0 -34
  1668. package/ripple/public_api.d.ts +0 -2
  1669. package/ripple/ripple.d.ts +0 -30
  1670. package/ripple/ripple.module.d.ts +0 -7
  1671. package/scroller/public_api.d.ts +0 -3
  1672. package/scroller/scroller.d.ts +0 -343
  1673. package/scroller/scroller.interface.d.ts +0 -177
  1674. package/scroller/scroller.module.d.ts +0 -8
  1675. package/scrollpanel/public_api.d.ts +0 -2
  1676. package/scrollpanel/scrollpanel.d.ts +0 -103
  1677. package/scrollpanel/scrollpanel.interface.d.ts +0 -11
  1678. package/scrolltop/public_api.d.ts +0 -2
  1679. package/scrolltop/scrolltop.d.ts +0 -97
  1680. package/scrolltop/scrolltop.interface.d.ts +0 -18
  1681. package/selectbutton/public_api.d.ts +0 -3
  1682. package/selectbutton/selectbutton.d.ts +0 -128
  1683. package/selectbutton/selectbutton.interface.d.ts +0 -45
  1684. package/selectbutton/selectbutton.module.d.ts +0 -11
  1685. package/sidebar/public_api.d.ts +0 -3
  1686. package/sidebar/sidebar.d.ts +0 -173
  1687. package/sidebar/sidebar.interface.d.ts +0 -27
  1688. package/sidebar/sidebar.module.d.ts +0 -12
  1689. package/skeleton/public_api.d.ts +0 -2
  1690. package/skeleton/skeleton.d.ts +0 -61
  1691. package/skeleton/skeleton.module.d.ts +0 -8
  1692. package/slidemenu/public_api.d.ts +0 -2
  1693. package/slidemenu/slidemenu.d.ts +0 -322
  1694. package/slidemenu/slidemenu.interface.d.ts +0 -15
  1695. package/slider/public_api.d.ts +0 -2
  1696. package/slider/slider.d.ts +0 -174
  1697. package/slider/slider.interface.d.ts +0 -38
  1698. package/speeddial/public_api.d.ts +0 -3
  1699. package/speeddial/speeddial.d.ts +0 -277
  1700. package/speeddial/speeddial.interface.d.ts +0 -28
  1701. package/speeddial/speeddial.module.d.ts +0 -14
  1702. package/spinner/public_api.d.ts +0 -1
  1703. package/spinner/spinner.d.ts +0 -90
  1704. package/splitbutton/public_api.d.ts +0 -3
  1705. package/splitbutton/splitbutton.d.ts +0 -222
  1706. package/splitbutton/splitbutton.interface.d.ts +0 -30
  1707. package/splitbutton/splitbutton.module.d.ts +0 -13
  1708. package/splitter/public_api.d.ts +0 -3
  1709. package/splitter/splitter.d.ts +0 -158
  1710. package/splitter/splitter.interface.d.ts +0 -34
  1711. package/splitter/splitter.module.d.ts +0 -9
  1712. package/stepper/public_api.d.ts +0 -2
  1713. package/stepper/stepper.d.ts +0 -117
  1714. package/stepper/stepper.interface.d.ts +0 -26
  1715. package/steps/public_api.d.ts +0 -2
  1716. package/steps/steps.d.ts +0 -77
  1717. package/steps/steps.module.d.ts +0 -10
  1718. package/styleclass/public_api.d.ts +0 -1
  1719. package/styleclass/styleclass.d.ts +0 -108
  1720. package/table/columnfilter.interface.d.ts +0 -247
  1721. package/table/components/cell-editor/cell-editor.d.ts +0 -20
  1722. package/table/components/column-filter/column-filter.d.ts +0 -291
  1723. package/table/components/column-filter-form-element/column-filter-form-element.d.ts +0 -37
  1724. package/table/components/sort-icon/sort-icon.d.ts +0 -22
  1725. package/table/components/table-body/table-body.d.ts +0 -36
  1726. package/table/components/table-checkbox/table-checkbox.d.ts +0 -32
  1727. package/table/components/table-header-checkbox/table-header-checkbox.d.ts +0 -29
  1728. package/table/components/table-radio-button/table-radio-button.d.ts +0 -29
  1729. package/table/directives/cancel-editable-row.directive.d.ts +0 -11
  1730. package/table/directives/cell-highlight.directive.d.ts +0 -14
  1731. package/table/directives/content-menu-row.directive.d.ts +0 -22
  1732. package/table/directives/dynamic-column-width.directive.d.ts +0 -12
  1733. package/table/directives/editable-column.directive.d.ts +0 -40
  1734. package/table/directives/editable-row.directive.d.ts +0 -12
  1735. package/table/directives/frozen-column.directive.d.ts +0 -16
  1736. package/table/directives/init-editable-row.directive.d.ts +0 -11
  1737. package/table/directives/reorderable-column.directive.d.ts +0 -32
  1738. package/table/directives/reorderable-row-handle.directive.d.ts +0 -9
  1739. package/table/directives/reorderable-row.directive.d.ts +0 -34
  1740. package/table/directives/resizable-column.directive.d.ts +0 -35
  1741. package/table/directives/row-group-header.directive.d.ts +0 -9
  1742. package/table/directives/row-toggler.directive.d.ts +0 -13
  1743. package/table/directives/save-editable-row.directive.d.ts +0 -11
  1744. package/table/directives/selectable-row-double-click.directive.d.ts +0 -22
  1745. package/table/directives/selectable-row.directive.d.ts +0 -37
  1746. package/table/directives/sortable-column.directive.d.ts +0 -24
  1747. package/table/public_api.d.ts +0 -30
  1748. package/table/table.d.ts +0 -871
  1749. package/table/table.interface.d.ts +0 -623
  1750. package/table/table.module.d.ts +0 -34
  1751. package/table/table.service.d.ts +0 -24
  1752. package/tableconfiguration/public_api.d.ts +0 -2
  1753. package/tableconfiguration/tableconfiguration.d.ts +0 -15
  1754. package/tableconfiguration/tableconfiguration.module.d.ts +0 -7
  1755. package/tabmenu/public_api.d.ts +0 -2
  1756. package/tabmenu/tabmenu.d.ts +0 -126
  1757. package/tabmenu/tabmenu.interface.d.ts +0 -32
  1758. package/tabview/public_api.d.ts +0 -3
  1759. package/tabview/tabview.d.ts +0 -293
  1760. package/tabview/tabview.interface.d.ts +0 -49
  1761. package/tabview/tabview.module.d.ts +0 -15
  1762. package/tag/public_api.d.ts +0 -3
  1763. package/tag/tag.d.ts +0 -61
  1764. package/tag/tag.interface.d.ts +0 -11
  1765. package/tag/tag.module.d.ts +0 -9
  1766. package/terminal/public_api.d.ts +0 -2
  1767. package/terminal/terminal.d.ts +0 -56
  1768. package/terminal/terminalservice.d.ts +0 -11
  1769. package/tieredmenu/public_api.d.ts +0 -3
  1770. package/tieredmenu/tieredmenu.d.ts +0 -266
  1771. package/tieredmenu/tieredmenu.interface.d.ts +0 -27
  1772. package/tieredmenu/tiredmenu.module.d.ts +0 -13
  1773. package/timeline/public_api.d.ts +0 -3
  1774. package/timeline/timeline.d.ts +0 -47
  1775. package/timeline/timeline.interface.d.ts +0 -43
  1776. package/timeline/timeline.module.d.ts +0 -9
  1777. package/toast/public_api.d.ts +0 -3
  1778. package/toast/toast.d.ts +0 -142
  1779. package/toast/toast.interface.d.ts +0 -52
  1780. package/toast/toast.module.d.ts +0 -9
  1781. package/toast/toastitem.d.ts +0 -37
  1782. package/togglebutton/public_api.d.ts +0 -2
  1783. package/togglebutton/togglebutton.d.ts +0 -115
  1784. package/togglebutton/togglebutton.interface.d.ts +0 -34
  1785. package/toggleswitch/public_api.d.ts +0 -2
  1786. package/toggleswitch/toggleswitch.d.ts +0 -14
  1787. package/toggleswitch/toggleswitch.module.d.ts +0 -9
  1788. package/toolbar/public_api.d.ts +0 -2
  1789. package/toolbar/toolbar.d.ts +0 -43
  1790. package/toolbar/toolbar.interface.d.ts +0 -19
  1791. package/tooltip/public_api.d.ts +0 -2
  1792. package/tooltip/tooltip.d.ts +0 -208
  1793. package/tooltip/tooltip.module.d.ts +0 -10
  1794. package/tree/public_api.d.ts +0 -3
  1795. package/tree/tree.d.ts +0 -461
  1796. package/tree/tree.interface.d.ts +0 -193
  1797. package/tree/tree.module.d.ts +0 -21
  1798. package/treeselect/public_api.d.ts +0 -3
  1799. package/treeselect/treeselect.d.ts +0 -394
  1800. package/treeselect/treeselect.interface.d.ts +0 -108
  1801. package/treeselect/treeselect.module.d.ts +0 -16
  1802. package/treetable/public_api.d.ts +0 -2
  1803. package/treetable/treetable.d.ts +0 -988
  1804. package/treetable/treetable.interface.d.ts +0 -472
  1805. package/tristatecheckbox/public_api.d.ts +0 -3
  1806. package/tristatecheckbox/tristatecheckbox.d.ts +0 -117
  1807. package/tristatecheckbox/tristatecheckbox.interface.d.ts +0 -30
  1808. package/tristatecheckbox/tristatecheckbox.module.d.ts +0 -8
  1809. package/ts-helpers/public_api.d.ts +0 -1
  1810. package/ts-helpers/ts-helpers.d.ts +0 -4
  1811. package/upload/public_api.d.ts +0 -2
  1812. package/upload/upload.component.d.ts +0 -67
  1813. package/upload/upload.component.module.d.ts +0 -11
  1814. package/utils/objectutils.d.ts +0 -24
  1815. package/utils/public_api.d.ts +0 -4
  1816. package/utils/uniquecomponentid.d.ts +0 -2
  1817. package/utils/zindexutils.d.ts +0 -7
  1818. package/virtualscroller/public_api.d.ts +0 -2
  1819. package/virtualscroller/virtualscroller.d.ts +0 -89
  1820. package/virtualscroller/virtualscroller.interface.d.ts +0 -72
@@ -1,1599 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { booleanAttribute, ChangeDetectionStrategy, Component, computed, ContentChildren, effect, EventEmitter, forwardRef, Input, numberAttribute, Output, signal, ViewChild, ViewEncapsulation } from '@angular/core';
3
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
- import { CaxTemplate, SharedModule, TranslationKeys } from 'cax-design-system/api';
5
- import { AutoFocusModule } from 'cax-design-system/autofocus';
6
- import { DomHandler } from 'cax-design-system/dom';
7
- import { OverlayModule } from 'cax-design-system/overlay';
8
- import { RippleModule } from 'cax-design-system/ripple';
9
- import { ScrollerModule } from 'cax-design-system/scroller';
10
- import { TooltipModule } from 'cax-design-system/tooltip';
11
- import { ObjectUtils, UniqueComponentId } from 'cax-design-system/utils';
12
- import { TimesIcon } from 'cax-design-system/icons/times';
13
- import { ChevronDownIcon } from 'cax-design-system/icons/chevrondown';
14
- import { SearchIcon } from 'cax-design-system/icons/search';
15
- import { DropdownItem } from './dropdown-item';
16
- import * as i0 from "@angular/core";
17
- import * as i1 from "cax-design-system/api";
18
- import * as i2 from "@angular/common";
19
- import * as i3 from "cax-design-system/overlay";
20
- import * as i4 from "cax-design-system/tooltip";
21
- import * as i5 from "cax-design-system/scroller";
22
- import * as i6 from "cax-design-system/autofocus";
23
- export const DROPDOWN_VALUE_ACCESSOR = {
24
- provide: NG_VALUE_ACCESSOR,
25
- useExisting: forwardRef(() => Dropdown),
26
- multi: true
27
- };
28
- /**
29
- * Dropdown also known as Select, is used to choose an item from a collection of options.
30
- * @group Components
31
- */
32
- export class Dropdown {
33
- el;
34
- renderer;
35
- cd;
36
- zone;
37
- filterService;
38
- config;
39
- /**
40
- * Unique identifier of the component
41
- * @group Props
42
- */
43
- id;
44
- /**
45
- * Height of the viewport in pixels, a scrollbar is defined if height of list exceeds this value.
46
- * @group Props
47
- */
48
- scrollHeight = '200px';
49
- /**
50
- * When specified, displays an input field to filter the items on keyup.
51
- * @group Props
52
- */
53
- filter;
54
- /**
55
- * Name of the input element.
56
- * @group Props
57
- */
58
- name;
59
- /**
60
- * Inline style of the element.
61
- * @group Props
62
- */
63
- style;
64
- /**
65
- * Inline style of the overlay panel element.
66
- * @group Props
67
- */
68
- panelStyle;
69
- /**
70
- * Style class of the element.
71
- * @group Props
72
- */
73
- styleClass;
74
- /**
75
- * Style class of the overlay panel element.
76
- * @group Props
77
- */
78
- panelStyleClass;
79
- /**
80
- * When present, it specifies that the component cannot be edited.
81
- * @group Props
82
- */
83
- readonly;
84
- /**
85
- * When present, it specifies that an input field must be filled out before submitting the form.
86
- * @group Props
87
- */
88
- required;
89
- /**
90
- * When present, custom value instead of predefined options can be entered using the editable input field.
91
- * @group Props
92
- */
93
- editable;
94
- /**
95
- * Target element to attach the overlay, valid values are "body" or a local ng-template variable of another element (note: use binding with brackets for template variables, e.g. [appendTo]="mydiv" for a div element having #mydiv as variable name).
96
- * @group Props
97
- */
98
- appendTo;
99
- /**
100
- * Index of the element in tabbing order.
101
- * @group Props
102
- */
103
- tabindex = 0;
104
- /**
105
- * Default text to display when no option is selected.
106
- * @group Props
107
- */
108
- set placeholder(val) {
109
- this._placeholder.set(val);
110
- }
111
- get placeholder() {
112
- return this._placeholder.asReadonly();
113
- }
114
- /**
115
- * Icon to display in loading state.
116
- * @group Props
117
- */
118
- loadingIcon;
119
- /**
120
- * Placeholder text to show when filter input is empty.
121
- * @group Props
122
- */
123
- filterPlaceholder;
124
- /**
125
- * Locale to use in filtering. The default locale is the host environment's current locale.
126
- * @group Props
127
- */
128
- filterLocale;
129
- /**
130
- * Specifies the input variant of the component.
131
- * @group Props
132
- */
133
- variant = 'outlined';
134
- /**
135
- * Identifier of the accessible input element.
136
- * @group Props
137
- */
138
- inputId;
139
- /**
140
- * A property to uniquely identify a value in options.
141
- * @group Props
142
- */
143
- dataKey;
144
- /**
145
- * When filtering is enabled, filterBy decides which field or fields (comma separated) to search against.
146
- * @group Props
147
- */
148
- filterBy;
149
- /**
150
- * Fields used when filtering the options, defaults to optionLabel.
151
- * @group Props
152
- */
153
- filterFields;
154
- /**
155
- * When present, it specifies that the component should automatically get focus on load.
156
- * @group Props
157
- */
158
- autofocus;
159
- /**
160
- * Clears the filter value when hiding the dropdown.
161
- * @group Props
162
- */
163
- resetFilterOnHide = false;
164
- /**
165
- * Whether the selected option will be shown with a check mark.
166
- * @group Props
167
- */
168
- checkmark = false;
169
- /**
170
- * Icon class of the dropdown icon.
171
- * @group Props
172
- */
173
- dropdownIcon;
174
- /**
175
- * Whether the dropdown is in loading state.
176
- * @group Props
177
- */
178
- loading = false;
179
- /**
180
- * Name of the label field of an option.
181
- * @group Props
182
- */
183
- optionLabel;
184
- /**
185
- * Name of the value field of an option.
186
- * @group Props
187
- */
188
- optionValue;
189
- /**
190
- * Name of the disabled field of an option.
191
- * @group Props
192
- */
193
- optionDisabled;
194
- /**
195
- * Name of the label field of an option group.
196
- * @group Props
197
- */
198
- optionGroupLabel = 'label';
199
- /**
200
- * Name of the options field of an option group.
201
- * @group Props
202
- */
203
- optionGroupChildren = 'items';
204
- /**
205
- * Whether to display the first item as the label if no placeholder is defined and value is null.
206
- * @deprecated since v17.3.0, set initial value by model instead.
207
- * @group Props
208
- */
209
- autoDisplayFirst = true;
210
- /**
211
- * Whether to display options as grouped when nested options are provided.
212
- * @group Props
213
- */
214
- group;
215
- /**
216
- * When enabled, a clear icon is displayed to clear the value.
217
- * @group Props
218
- */
219
- showClear;
220
- /**
221
- * Text to display when filtering does not return any results. Defaults to global value in i18n translation configuration.
222
- * @group Props
223
- */
224
- emptyFilterMessage = '';
225
- /**
226
- * Text to display when there is no data. Defaults to global value in i18n translation configuration.
227
- * @group Props
228
- */
229
- emptyMessage = '';
230
- /**
231
- * Defines if data is loaded and interacted with in lazy manner.
232
- * @group Props
233
- */
234
- lazy = false;
235
- /**
236
- * Whether the data should be loaded on demand during scroll.
237
- * @group Props
238
- */
239
- virtualScroll;
240
- /**
241
- * Height of an item in the list for VirtualScrolling.
242
- * @group Props
243
- */
244
- virtualScrollItemSize;
245
- /**
246
- * Whether to use the scroller feature. The properties of scroller component can be used like an object in it.
247
- * @group Props
248
- */
249
- virtualScrollOptions;
250
- /**
251
- * Whether to use overlay API feature. The properties of overlay API can be used like an object in it.
252
- * @group Props
253
- */
254
- overlayOptions;
255
- /**
256
- * Defines a string that labels the filter input.
257
- * @group Props
258
- */
259
- ariaFilterLabel;
260
- /**
261
- * Used to define a aria label attribute the current element.
262
- * @group Props
263
- */
264
- ariaLabel;
265
- /**
266
- * Establishes relationships between the component and label(s) where its value should be one or more element IDs.
267
- * @group Props
268
- */
269
- ariaLabelledBy;
270
- /**
271
- * Defines how the items are filtered.
272
- * @group Props
273
- */
274
- filterMatchMode = 'contains';
275
- /**
276
- * Maximum number of character allows in the editable input field.
277
- * @group Props
278
- */
279
- maxlength;
280
- /**
281
- * Advisory information to display in a tooltip on hover.
282
- * @group Props
283
- */
284
- tooltip = '';
285
- /**
286
- * Position of the tooltip.
287
- * @group Props
288
- */
289
- tooltipPosition = 'right';
290
- /**
291
- * Type of CSS position.
292
- * @group Props
293
- */
294
- tooltipPositionStyle = 'absolute';
295
- /**
296
- * Style class of the tooltip.
297
- * @group Props
298
- */
299
- tooltipStyleClass;
300
- /**
301
- * Fields used when filtering the options, defaults to optionLabel.
302
- * @group Props
303
- */
304
- focusOnHover = false;
305
- /**
306
- * Determines if the option will be selected on focus.
307
- * @group Props
308
- */
309
- selectOnFocus = false;
310
- /**
311
- * Whether to focus on the first visible or selected element when the overlay panel is shown.
312
- * @group Props
313
- */
314
- autoOptionFocus = true;
315
- /**
316
- * Applies focus to the filter element when the overlay is shown.
317
- * @group Props
318
- */
319
- autofocusFilter = true;
320
- /**
321
- * Determines if the panel will be shown when the input is focused and receives a character key down event.
322
- * @group Props
323
- */
324
- autoShowPanelOnPrintableCharacterKeyDown = true;
325
- /**
326
- * When present, it specifies that the component should be disabled.
327
- * @group Props
328
- */
329
- labelText;
330
- get disabled() {
331
- return this._disabled;
332
- }
333
- set disabled(_disabled) {
334
- if (_disabled) {
335
- this.focused = false;
336
- if (this.overlayVisible)
337
- this.hide();
338
- }
339
- this._disabled = _disabled;
340
- if (!this.cd.destroyed) {
341
- this.cd.detectChanges();
342
- }
343
- }
344
- /**
345
- * Item size of item to be virtual scrolled.
346
- * @group Props
347
- * @deprecated use virtualScrollItemSize property instead.
348
- */
349
- get itemSize() {
350
- return this._itemSize;
351
- }
352
- set itemSize(val) {
353
- this._itemSize = val;
354
- console.warn('The itemSize property is deprecated, use virtualScrollItemSize property instead.');
355
- }
356
- _itemSize;
357
- /**
358
- * Whether to automatically manage layering.
359
- * @group Props
360
- * @deprecated since v14.2.0, use overlayOptions property instead.
361
- */
362
- get autoZIndex() {
363
- return this._autoZIndex;
364
- }
365
- set autoZIndex(val) {
366
- this._autoZIndex = val;
367
- console.warn('The autoZIndex property is deprecated since v14.2.0, use overlayOptions property instead.');
368
- }
369
- _autoZIndex;
370
- /**
371
- * Base zIndex value to use in layering.
372
- * @group Props
373
- * @deprecated since v14.2.0, use overlayOptions property instead.
374
- */
375
- get baseZIndex() {
376
- return this._baseZIndex;
377
- }
378
- set baseZIndex(val) {
379
- this._baseZIndex = val;
380
- console.warn('The baseZIndex property is deprecated since v14.2.0, use overlayOptions property instead.');
381
- }
382
- _baseZIndex;
383
- /**
384
- * Transition options of the show animation.
385
- * @group Props
386
- * @deprecated since v14.2.0, use overlayOptions property instead.
387
- */
388
- get showTransitionOptions() {
389
- return this._showTransitionOptions;
390
- }
391
- set showTransitionOptions(val) {
392
- this._showTransitionOptions = val;
393
- console.warn('The showTransitionOptions property is deprecated since v14.2.0, use overlayOptions property instead.');
394
- }
395
- _showTransitionOptions;
396
- /**
397
- * Transition options of the hide animation.
398
- * @group Props
399
- * @deprecated since v14.2.0, use overlayOptions property instead.
400
- */
401
- get hideTransitionOptions() {
402
- return this._hideTransitionOptions;
403
- }
404
- set hideTransitionOptions(val) {
405
- this._hideTransitionOptions = val;
406
- console.warn('The hideTransitionOptions property is deprecated since v14.2.0, use overlayOptions property instead.');
407
- }
408
- _hideTransitionOptions;
409
- /**
410
- * When specified, filter displays with this value.
411
- * @group Props
412
- */
413
- get filterValue() {
414
- return this._filterValue();
415
- }
416
- set filterValue(val) {
417
- setTimeout(() => {
418
- this._filterValue.set(val);
419
- });
420
- }
421
- /**
422
- * An array of objects to display as the available options.
423
- * @group Props
424
- */
425
- get options() {
426
- const options = this._options();
427
- return options;
428
- }
429
- set options(val) {
430
- if (!ObjectUtils.deepEquals(val, this._options())) {
431
- this._options.set(val);
432
- }
433
- }
434
- /**
435
- * Callback to invoke when value of dropdown changes.
436
- * @param {DropdownChangeEvent} event - custom change event.
437
- * @group Emits
438
- */
439
- onChange = new EventEmitter();
440
- /**
441
- * Callback to invoke when data is filtered.
442
- * @param {DropdownFilterEvent} event - custom filter event.
443
- * @group Emits
444
- */
445
- onFilter = new EventEmitter();
446
- /**
447
- * Callback to invoke when dropdown gets focus.
448
- * @param {Event} event - Browser event.
449
- * @group Emits
450
- */
451
- onFocus = new EventEmitter();
452
- /**
453
- * Callback to invoke when dropdown loses focus.
454
- * @param {Event} event - Browser event.
455
- * @group Emits
456
- */
457
- onBlur = new EventEmitter();
458
- /**
459
- * Callback to invoke when component is clicked.
460
- * @param {MouseEvent} event - Mouse event.
461
- * @group Emits
462
- */
463
- onClick = new EventEmitter();
464
- /**
465
- * Callback to invoke when dropdown overlay gets visible.
466
- * @param {AnimationEvent} event - Animation event.
467
- * @group Emits
468
- */
469
- onShow = new EventEmitter();
470
- /**
471
- * Callback to invoke when dropdown overlay gets hidden.
472
- * @param {AnimationEvent} event - Animation event.
473
- * @group Emits
474
- */
475
- onHide = new EventEmitter();
476
- /**
477
- * Callback to invoke when dropdown clears the value.
478
- * @param {Event} event - Browser event.
479
- * @group Emits
480
- */
481
- onClear = new EventEmitter();
482
- /**
483
- * Callback to invoke in lazy mode to load new data.
484
- * @param {DropdownLazyLoadEvent} event - Lazy load event.
485
- * @group Emits
486
- */
487
- onLazyLoad = new EventEmitter();
488
- containerViewChild;
489
- filterViewChild;
490
- focusInputViewChild;
491
- editableInputViewChild;
492
- itemsViewChild;
493
- scroller;
494
- overlayViewChild;
495
- firstHiddenFocusableElementOnOverlay;
496
- lastHiddenFocusableElementOnOverlay;
497
- templates;
498
- _disabled;
499
- itemsWrapper;
500
- itemTemplate;
501
- groupTemplate;
502
- loaderTemplate;
503
- selectedItemTemplate;
504
- headerTemplate;
505
- filterTemplate;
506
- footerTemplate;
507
- emptyFilterTemplate;
508
- emptyTemplate;
509
- dropdownIconTemplate;
510
- loadingIconTemplate;
511
- clearIconTemplate;
512
- filterIconTemplate;
513
- filterOptions;
514
- _options = signal(null);
515
- _placeholder = signal(undefined);
516
- modelValue = signal(null);
517
- value;
518
- onModelChange = () => { };
519
- onModelTouched = () => { };
520
- hover;
521
- focused;
522
- overlayVisible;
523
- optionsChanged;
524
- panel;
525
- dimensionsUpdated;
526
- hoveredItem;
527
- selectedOptionUpdated;
528
- _filterValue = signal(null);
529
- searchValue;
530
- searchIndex;
531
- searchTimeout;
532
- previousSearchChar;
533
- currentSearchChar;
534
- preventModelTouched;
535
- focusedOptionIndex = signal(-1);
536
- labelId;
537
- listId;
538
- clicked = signal(false);
539
- get emptyMessageLabel() {
540
- return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);
541
- }
542
- get emptyFilterMessageLabel() {
543
- return this.emptyFilterMessage || this.config.getTranslation(TranslationKeys.EMPTY_FILTER_MESSAGE);
544
- }
545
- get isVisibleClearIcon() {
546
- return this.modelValue() != null && this.hasSelectedOption() && this.showClear && !this.disabled;
547
- }
548
- get listLabel() {
549
- return this.config.getTranslation(TranslationKeys.ARIA)['listLabel'];
550
- }
551
- get containerClass() {
552
- return {
553
- 'cax-dropdown cax-component cax-inputwrapper': true,
554
- 'cax-disabled': this.disabled,
555
- 'cax-dropdown-clearable': this.showClear && !this.disabled,
556
- 'cax-focus': this.focused,
557
- 'cax-inputwrapper-filled': this.modelValue() !== undefined && this.modelValue() !== null && !this.modelValue().length,
558
- 'cax-inputwrapper-focus': this.focused || this.overlayVisible,
559
- 'cax-variant-filled': this.variant === 'filled' || this.config.inputStyle() === 'filled',
560
- 'cax-dropdown-open': this.overlayVisible
561
- };
562
- }
563
- get inputClass() {
564
- const label = this.label();
565
- return {
566
- 'cax-dropdown-label cax-inputtext': true,
567
- 'cax-placeholder': this.placeholder() && label === this.placeholder(),
568
- 'cax-dropdown-label-empty': !this.editable && !this.selectedItemTemplate && (label === undefined || label === null || label === 'cax-emptylabel' || label.length === 0)
569
- };
570
- }
571
- get panelClass() {
572
- return {
573
- 'cax-dropdown-panel cax-component': true,
574
- 'cax-input-filled': this.config.inputStyle() === 'filled',
575
- 'cax-ripple-disabled': this.config.ripple === false
576
- };
577
- }
578
- get focusedOptionId() {
579
- return this.focusedOptionIndex() !== -1 ? `${this.id}_${this.focusedOptionIndex()}` : null;
580
- }
581
- visibleOptions = computed(() => {
582
- const options = this.getAllVisibleAndNonVisibleOptions();
583
- if (this._filterValue()) {
584
- const _filterBy = this.filterBy || this.optionLabel;
585
- const filteredOptions = !_filterBy && !this.filterFields && !this.optionValue
586
- ? this.options.filter((option) => {
587
- if (option.label) {
588
- return option.label.toString().toLowerCase().indexOf(this._filterValue().toLowerCase().trim()) !== -1;
589
- }
590
- return option.toString().toLowerCase().indexOf(this._filterValue().toLowerCase().trim()) !== -1;
591
- })
592
- : this.filterService.filter(options, this.searchFields(), this._filterValue().trim(), this.filterMatchMode, this.filterLocale);
593
- if (this.group) {
594
- const optionGroups = this.options || [];
595
- const filtered = [];
596
- optionGroups.forEach((group) => {
597
- const groupChildren = this.getOptionGroupChildren(group);
598
- const filteredItems = groupChildren.filter((item) => filteredOptions.includes(item));
599
- if (filteredItems.length > 0)
600
- filtered.push({ ...group, [typeof this.optionGroupChildren === 'string' ? this.optionGroupChildren : 'items']: [...filteredItems] });
601
- });
602
- return this.flatOptions(filtered);
603
- }
604
- return filteredOptions;
605
- }
606
- return options;
607
- });
608
- label = computed(() => {
609
- // use getAllVisibleAndNonVisibleOptions verses just visible options
610
- // this will find the selected option whether or not the user is currently filtering because the filtered (i.e. visible) options, are a subset of all the options
611
- const options = this.getAllVisibleAndNonVisibleOptions();
612
- // use isOptionEqualsModelValue for the use case where the dropdown is initalized with a disabled option
613
- const selectedOptionIndex = options.findIndex((option) => this.isOptionValueEqualsModelValue(option));
614
- return selectedOptionIndex !== -1 ? this.getOptionLabel(options[selectedOptionIndex]) : this.placeholder() || 'cax-emptylabel';
615
- });
616
- filled = computed(() => {
617
- if (typeof this.modelValue() === 'string')
618
- return !!this.modelValue();
619
- return this.label() !== 'cax-emptylabel' && this.modelValue() !== undefined && this.modelValue() !== null;
620
- });
621
- selectedOption;
622
- editableInputValue = computed(() => this.getOptionLabel(this.selectedOption) || this.modelValue() || '');
623
- constructor(el, renderer, cd, zone, filterService, config) {
624
- this.el = el;
625
- this.renderer = renderer;
626
- this.cd = cd;
627
- this.zone = zone;
628
- this.filterService = filterService;
629
- this.config = config;
630
- effect(() => {
631
- const modelValue = this.modelValue();
632
- const visibleOptions = this.visibleOptions();
633
- if (visibleOptions && ObjectUtils.isNotEmpty(visibleOptions)) {
634
- const selectedOptionIndex = this.findSelectedOptionIndex();
635
- if (selectedOptionIndex !== -1 || modelValue === undefined || (typeof modelValue === 'string' && modelValue.length === 0) || this.isModelValueNotSet() || this.editable) {
636
- this.selectedOption = visibleOptions[selectedOptionIndex];
637
- }
638
- }
639
- if (ObjectUtils.isEmpty(visibleOptions) && (modelValue === undefined || this.isModelValueNotSet()) && ObjectUtils.isNotEmpty(this.selectedOption)) {
640
- this.selectedOption = null;
641
- }
642
- if (modelValue !== undefined && this.editable) {
643
- this.updateEditableLabel();
644
- }
645
- this.cd.markForCheck();
646
- });
647
- }
648
- isModelValueNotSet() {
649
- return this.modelValue() === null && !this.isOptionValueEqualsModelValue(this.selectedOption);
650
- }
651
- getAllVisibleAndNonVisibleOptions() {
652
- return this.group ? this.flatOptions(this.options) : this.options || [];
653
- }
654
- ngOnInit() {
655
- this.id = this.id || UniqueComponentId();
656
- this.autoUpdateModel();
657
- if (this.filterBy) {
658
- this.filterOptions = {
659
- filter: (value) => this.onFilterInputChange(value),
660
- reset: () => this.resetFilter()
661
- };
662
- }
663
- }
664
- ngAfterViewChecked() {
665
- if (this.optionsChanged && this.overlayVisible) {
666
- this.optionsChanged = false;
667
- this.zone.runOutsideAngular(() => {
668
- setTimeout(() => {
669
- if (this.overlayViewChild) {
670
- this.overlayViewChild.alignOverlay();
671
- }
672
- }, 1);
673
- });
674
- }
675
- if (this.selectedOptionUpdated && this.itemsWrapper) {
676
- let selectedItem = DomHandler.findSingle(this.overlayViewChild?.overlayViewChild?.nativeElement, 'li.cax-highlight');
677
- if (selectedItem) {
678
- DomHandler.scrollInView(this.itemsWrapper, selectedItem);
679
- }
680
- this.selectedOptionUpdated = false;
681
- }
682
- }
683
- ngAfterContentInit() {
684
- this.templates.forEach((item) => {
685
- switch (item.getType()) {
686
- case 'item':
687
- this.itemTemplate = item.template;
688
- break;
689
- case 'selectedItem':
690
- this.selectedItemTemplate = item.template;
691
- break;
692
- case 'header':
693
- this.headerTemplate = item.template;
694
- break;
695
- case 'filter':
696
- this.filterTemplate = item.template;
697
- break;
698
- case 'footer':
699
- this.footerTemplate = item.template;
700
- break;
701
- case 'emptyfilter':
702
- this.emptyFilterTemplate = item.template;
703
- break;
704
- case 'empty':
705
- this.emptyTemplate = item.template;
706
- break;
707
- case 'group':
708
- this.groupTemplate = item.template;
709
- break;
710
- case 'loader':
711
- this.loaderTemplate = item.template;
712
- break;
713
- case 'dropdownicon':
714
- this.dropdownIconTemplate = item.template;
715
- break;
716
- case 'loadingicon':
717
- this.loadingIconTemplate = item.template;
718
- break;
719
- case 'clearicon':
720
- this.clearIconTemplate = item.template;
721
- break;
722
- case 'filtericon':
723
- this.filterIconTemplate = item.template;
724
- break;
725
- default:
726
- this.itemTemplate = item.template;
727
- break;
728
- }
729
- });
730
- }
731
- flatOptions(options) {
732
- return (options || []).reduce((result, option, index) => {
733
- result.push({ optionGroup: option, group: true, index });
734
- const optionGroupChildren = this.getOptionGroupChildren(option);
735
- optionGroupChildren && optionGroupChildren.forEach((o) => result.push(o));
736
- return result;
737
- }, []);
738
- }
739
- autoUpdateModel() {
740
- if (this.selectOnFocus && this.autoOptionFocus && !this.hasSelectedOption()) {
741
- this.focusedOptionIndex.set(this.findFirstFocusedOptionIndex());
742
- this.onOptionSelect(null, this.visibleOptions()[this.focusedOptionIndex()], false);
743
- }
744
- if (this.autoDisplayFirst && (this.modelValue() === null || this.modelValue() === undefined)) {
745
- if (!this.placeholder()) {
746
- const ind = this.findFirstOptionIndex();
747
- this.onOptionSelect(null, this.visibleOptions()[ind], false, true);
748
- }
749
- }
750
- }
751
- onOptionSelect(event, option, isHide = true, preventChange = false) {
752
- if (!this.isSelected(option)) {
753
- const value = this.getOptionValue(option);
754
- this.updateModel(value, event);
755
- this.focusedOptionIndex.set(this.findSelectedOptionIndex());
756
- preventChange === false && this.onChange.emit({ originalEvent: event, value: value });
757
- }
758
- if (isHide) {
759
- this.hide(true);
760
- }
761
- }
762
- onOptionMouseEnter(event, index) {
763
- if (this.focusOnHover) {
764
- this.changeFocusedOptionIndex(event, index);
765
- }
766
- }
767
- updateModel(value, event) {
768
- this.value = value;
769
- this.onModelChange(value);
770
- this.modelValue.set(value);
771
- this.selectedOptionUpdated = true;
772
- }
773
- writeValue(value) {
774
- if (this.filter) {
775
- this.resetFilter();
776
- }
777
- this.value = value;
778
- this.allowModelChange() && this.onModelChange(value);
779
- this.modelValue.set(this.value);
780
- this.updateEditableLabel();
781
- this.cd.markForCheck();
782
- }
783
- allowModelChange() {
784
- return this.autoDisplayFirst && !this.placeholder() && (this.modelValue() === undefined || this.modelValue() === null) && !this.editable && this.options && this.options.length;
785
- }
786
- isSelectedOptionEmpty() {
787
- return ObjectUtils.isEmpty(this.selectedOption);
788
- }
789
- isSelected(option) {
790
- return this.isValidOption(option) && this.isOptionValueEqualsModelValue(option);
791
- }
792
- isOptionValueEqualsModelValue(option) {
793
- return ObjectUtils.equals(this.modelValue(), this.getOptionValue(option), this.equalityKey());
794
- }
795
- ngAfterViewInit() {
796
- if (this.editable) {
797
- this.updateEditableLabel();
798
- }
799
- this.updatePlaceHolderForFloatingLabel();
800
- }
801
- updatePlaceHolderForFloatingLabel() {
802
- if (this._placeholder() !== null && this._placeholder() !== undefined) {
803
- // We don't want to overwrite the placeholder if it's already set
804
- return;
805
- }
806
- const parentElement = this.el.nativeElement.parentElement;
807
- const isInFloatingLabel = parentElement?.classList.contains('cax-float-label');
808
- if (parentElement && isInFloatingLabel && !this.selectedOption) {
809
- const label = parentElement.querySelector('label');
810
- if (label) {
811
- this._placeholder.set(label.textContent);
812
- }
813
- }
814
- }
815
- updateEditableLabel() {
816
- if (this.editableInputViewChild) {
817
- this.editableInputViewChild.nativeElement.value = this.getOptionLabel(this.selectedOption) || this.modelValue() || '';
818
- }
819
- }
820
- clearEditableLabel() {
821
- if (this.editableInputViewChild) {
822
- this.editableInputViewChild.nativeElement.value = '';
823
- }
824
- }
825
- getOptionIndex(index, scrollerOptions) {
826
- return this.virtualScrollerDisabled ? index : scrollerOptions && scrollerOptions.getItemOptions(index)['index'];
827
- }
828
- getOptionLabel(option) {
829
- return this.optionLabel !== undefined && this.optionLabel !== null ? ObjectUtils.resolveFieldData(option, this.optionLabel) : option && option.label !== undefined ? option.label : option;
830
- }
831
- getOptionValue(option) {
832
- return this.optionValue && this.optionValue !== null ? ObjectUtils.resolveFieldData(option, this.optionValue) : !this.optionLabel && option && option.value !== undefined ? option.value : option;
833
- }
834
- isOptionDisabled(option) {
835
- if (this.getOptionValue(this.modelValue()) === this.getOptionValue(option) || (this.getOptionLabel(this.modelValue() === this.getOptionLabel(option)) && option.disabled === false)) {
836
- return false;
837
- }
838
- else {
839
- return this.optionDisabled ? ObjectUtils.resolveFieldData(option, this.optionDisabled) : option && option.disabled !== undefined ? option.disabled : false;
840
- }
841
- }
842
- getOptionGroupLabel(optionGroup) {
843
- return this.optionGroupLabel !== undefined && this.optionGroupLabel !== null ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : optionGroup && optionGroup.label !== undefined ? optionGroup.label : optionGroup;
844
- }
845
- getOptionGroupChildren(optionGroup) {
846
- return this.optionGroupChildren !== undefined && this.optionGroupChildren !== null ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;
847
- }
848
- getAriaPosInset(index) {
849
- return ((this.optionGroupLabel
850
- ? index -
851
- this.visibleOptions()
852
- .slice(0, index)
853
- .filter((option) => this.isOptionGroup(option)).length
854
- : index) + 1);
855
- }
856
- get ariaSetSize() {
857
- return this.visibleOptions().filter((option) => !this.isOptionGroup(option)).length;
858
- }
859
- /**
860
- * Callback to invoke on filter reset.
861
- * @group Method
862
- */
863
- resetFilter() {
864
- this._filterValue.set(null);
865
- if (this.filterViewChild && this.filterViewChild.nativeElement) {
866
- this.filterViewChild.nativeElement.value = '';
867
- }
868
- }
869
- registerOnChange(fn) {
870
- this.onModelChange = fn;
871
- }
872
- registerOnTouched(fn) {
873
- this.onModelTouched = fn;
874
- }
875
- setDisabledState(val) {
876
- this.disabled = val;
877
- this.cd.markForCheck();
878
- }
879
- onContainerClick(event) {
880
- if (this.disabled || this.readonly || this.loading) {
881
- return;
882
- }
883
- this.focusInputViewChild?.nativeElement.focus({ preventScroll: true });
884
- if (event.target.tagName === 'INPUT' || event.target.getAttribute('data-pc-section') === 'clearicon' || event.target.closest('[data-pc-section="clearicon"]')) {
885
- return;
886
- }
887
- else if (!this.overlayViewChild || !this.overlayViewChild.el.nativeElement.contains(event.target)) {
888
- this.overlayVisible ? this.hide(true) : this.show(true);
889
- }
890
- this.onClick.emit(event);
891
- this.clicked.set(true);
892
- this.cd.detectChanges();
893
- }
894
- isEmpty() {
895
- return !this._options() || (this.visibleOptions() && this.visibleOptions().length === 0);
896
- }
897
- onEditableInput(event) {
898
- const value = event.target.value;
899
- this.searchValue = '';
900
- const matched = this.searchOptions(event, value);
901
- !matched && this.focusedOptionIndex.set(-1);
902
- this.onModelChange(value);
903
- this.updateModel(value, event);
904
- setTimeout(() => {
905
- this.onChange.emit({ originalEvent: event, value: value });
906
- }, 1);
907
- !this.overlayVisible && ObjectUtils.isNotEmpty(value) && this.show();
908
- }
909
- /**
910
- * Displays the panel.
911
- * @group Method
912
- */
913
- show(isFocus) {
914
- this.overlayVisible = true;
915
- const focusedOptionIndex = this.focusedOptionIndex() !== -1 ? this.focusedOptionIndex() : this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : this.editable ? -1 : this.findSelectedOptionIndex();
916
- this.focusedOptionIndex.set(focusedOptionIndex);
917
- if (isFocus) {
918
- DomHandler.focus(this.focusInputViewChild?.nativeElement);
919
- }
920
- this.cd.markForCheck();
921
- }
922
- onOverlayAnimationStart(event) {
923
- if (event.toState === 'visible') {
924
- this.itemsWrapper = DomHandler.findSingle(this.overlayViewChild?.overlayViewChild?.nativeElement, this.virtualScroll ? '.cax-scroller' : '.cax-dropdown-items-wrapper');
925
- this.virtualScroll && this.scroller?.setContentEl(this.itemsViewChild?.nativeElement);
926
- if (this.options && this.options.length) {
927
- if (this.virtualScroll) {
928
- const selectedIndex = this.modelValue() ? this.focusedOptionIndex() : -1;
929
- if (selectedIndex !== -1) {
930
- this.scroller?.scrollToIndex(selectedIndex);
931
- }
932
- }
933
- else {
934
- let selectedListItem = DomHandler.findSingle(this.itemsWrapper, '.cax-dropdown-item.cax-highlight');
935
- if (selectedListItem) {
936
- selectedListItem.scrollIntoView({ block: 'nearest', inline: 'nearest' });
937
- }
938
- }
939
- }
940
- // Remove auto-focus on filter
941
- if (this.filterViewChild && this.filterViewChild.nativeElement) {
942
- this.preventModelTouched = true;
943
- }
944
- this.onShow.emit(event);
945
- }
946
- if (event.toState === 'void') {
947
- this.itemsWrapper = null;
948
- this.onModelTouched();
949
- this.onHide.emit(event);
950
- }
951
- }
952
- /**
953
- * Hides the panel.
954
- * @group Method
955
- */
956
- hide(isFocus) {
957
- this.overlayVisible = false;
958
- this.focusedOptionIndex.set(-1);
959
- this.clicked.set(false);
960
- this.searchValue = '';
961
- if (this.overlayOptions?.mode === 'modal') {
962
- DomHandler.unblockBodyScroll();
963
- }
964
- if (this.filter && this.resetFilterOnHide) {
965
- this.resetFilter();
966
- }
967
- if (isFocus) {
968
- if (this.focusInputViewChild) {
969
- setTimeout(() => {
970
- DomHandler.focus(this.focusInputViewChild?.nativeElement);
971
- });
972
- }
973
- if (this.editable && this.editableInputViewChild) {
974
- setTimeout(() => {
975
- DomHandler.focus(this.editableInputViewChild?.nativeElement);
976
- });
977
- }
978
- }
979
- this.cd.markForCheck();
980
- }
981
- onInputFocus(event) {
982
- if (this.disabled) {
983
- // For ScreenReaders
984
- return;
985
- }
986
- this.focused = true;
987
- const focusedOptionIndex = this.focusedOptionIndex() !== -1 ? this.focusedOptionIndex() : this.overlayVisible && this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : -1;
988
- this.focusedOptionIndex.set(focusedOptionIndex);
989
- this.overlayVisible && this.scrollInView(this.focusedOptionIndex());
990
- this.onFocus.emit(event);
991
- }
992
- onInputBlur(event) {
993
- this.focused = false;
994
- this.onBlur.emit(event);
995
- if (!this.preventModelTouched) {
996
- this.onModelTouched();
997
- }
998
- this.preventModelTouched = false;
999
- }
1000
- onMouseDown(event) {
1001
- event.preventDefault();
1002
- }
1003
- onKeyDown(event, search) {
1004
- if (this.disabled || this.readonly || this.loading) {
1005
- return;
1006
- }
1007
- switch (event.code) {
1008
- //down
1009
- case 'ArrowDown':
1010
- this.onArrowDownKey(event);
1011
- break;
1012
- //up
1013
- case 'ArrowUp':
1014
- this.onArrowUpKey(event, this.editable);
1015
- break;
1016
- case 'ArrowLeft':
1017
- case 'ArrowRight':
1018
- this.onArrowLeftKey(event, this.editable);
1019
- break;
1020
- case 'Delete':
1021
- this.onDeleteKey(event);
1022
- break;
1023
- case 'Home':
1024
- this.onHomeKey(event, this.editable);
1025
- break;
1026
- case 'End':
1027
- this.onEndKey(event, this.editable);
1028
- break;
1029
- case 'PageDown':
1030
- this.onPageDownKey(event);
1031
- break;
1032
- case 'PageUp':
1033
- this.onPageUpKey(event);
1034
- break;
1035
- //space
1036
- case 'Space':
1037
- this.onSpaceKey(event, search);
1038
- break;
1039
- //enter
1040
- case 'Enter':
1041
- case 'NumpadEnter':
1042
- this.onEnterKey(event);
1043
- break;
1044
- //escape and tab
1045
- case 'Escape':
1046
- this.onEscapeKey(event);
1047
- break;
1048
- case 'Tab':
1049
- this.onTabKey(event);
1050
- break;
1051
- case 'Backspace':
1052
- this.onBackspaceKey(event, this.editable);
1053
- break;
1054
- case 'ShiftLeft':
1055
- case 'ShiftRight':
1056
- //NOOP
1057
- break;
1058
- default:
1059
- if (!event.metaKey && ObjectUtils.isPrintableCharacter(event.key)) {
1060
- !this.overlayVisible && this.autoShowPanelOnPrintableCharacterKeyDown && this.show();
1061
- !this.editable && this.searchOptions(event, event.key);
1062
- }
1063
- break;
1064
- }
1065
- this.clicked.set(false);
1066
- }
1067
- onFilterKeyDown(event) {
1068
- switch (event.code) {
1069
- case 'ArrowDown':
1070
- this.onArrowDownKey(event);
1071
- break;
1072
- case 'ArrowUp':
1073
- this.onArrowUpKey(event, true);
1074
- break;
1075
- case 'ArrowLeft':
1076
- case 'ArrowRight':
1077
- this.onArrowLeftKey(event, true);
1078
- break;
1079
- case 'Home':
1080
- this.onHomeKey(event, true);
1081
- break;
1082
- case 'End':
1083
- this.onEndKey(event, true);
1084
- break;
1085
- case 'Enter':
1086
- case 'NumpadEnter':
1087
- this.onEnterKey(event, true);
1088
- break;
1089
- case 'Escape':
1090
- this.onEscapeKey(event);
1091
- break;
1092
- case 'Tab':
1093
- this.onTabKey(event, true);
1094
- break;
1095
- default:
1096
- break;
1097
- }
1098
- }
1099
- onFilterBlur(event) {
1100
- this.focusedOptionIndex.set(-1);
1101
- }
1102
- onArrowDownKey(event) {
1103
- if (!this.overlayVisible) {
1104
- this.show();
1105
- this.editable && this.changeFocusedOptionIndex(event, this.findSelectedOptionIndex());
1106
- }
1107
- else {
1108
- const optionIndex = this.focusedOptionIndex() !== -1 ? this.findNextOptionIndex(this.focusedOptionIndex()) : this.clicked() ? this.findFirstOptionIndex() : this.findFirstFocusedOptionIndex();
1109
- this.changeFocusedOptionIndex(event, optionIndex);
1110
- }
1111
- // const optionIndex = this.focusedOptionIndex() !== -1 ? this.findNextOptionIndex(this.focusedOptionIndex()) : this.findFirstFocusedOptionIndex();
1112
- // this.changeFocusedOptionIndex(event, optionIndex);
1113
- // !this.overlayVisible && this.show();
1114
- event.preventDefault();
1115
- event.stopPropagation();
1116
- }
1117
- changeFocusedOptionIndex(event, index) {
1118
- if (this.focusedOptionIndex() !== index) {
1119
- this.focusedOptionIndex.set(index);
1120
- this.scrollInView();
1121
- if (this.selectOnFocus) {
1122
- const option = this.visibleOptions()[index];
1123
- this.onOptionSelect(event, option, false);
1124
- }
1125
- }
1126
- }
1127
- get virtualScrollerDisabled() {
1128
- return !this.virtualScroll;
1129
- }
1130
- scrollInView(index = -1) {
1131
- const id = index !== -1 ? `${this.id}_${index}` : this.focusedOptionId;
1132
- if (this.itemsViewChild && this.itemsViewChild.nativeElement) {
1133
- const element = DomHandler.findSingle(this.itemsViewChild.nativeElement, `li[id="${id}"]`);
1134
- if (element) {
1135
- element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'nearest' });
1136
- }
1137
- else if (!this.virtualScrollerDisabled) {
1138
- setTimeout(() => {
1139
- this.virtualScroll && this.scroller?.scrollToIndex(index !== -1 ? index : this.focusedOptionIndex());
1140
- }, 0);
1141
- }
1142
- }
1143
- }
1144
- hasSelectedOption() {
1145
- return this.modelValue() !== undefined;
1146
- }
1147
- isValidSelectedOption(option) {
1148
- return this.isValidOption(option) && this.isSelected(option);
1149
- }
1150
- equalityKey() {
1151
- return this.optionValue ? null : this.dataKey;
1152
- }
1153
- findFirstFocusedOptionIndex() {
1154
- const selectedIndex = this.findSelectedOptionIndex();
1155
- return selectedIndex < 0 ? this.findFirstOptionIndex() : selectedIndex;
1156
- }
1157
- findFirstOptionIndex() {
1158
- return this.visibleOptions().findIndex((option) => this.isValidOption(option));
1159
- }
1160
- findSelectedOptionIndex() {
1161
- return this.hasSelectedOption() ? this.visibleOptions().findIndex((option) => this.isValidSelectedOption(option)) : -1;
1162
- }
1163
- findNextOptionIndex(index) {
1164
- const matchedOptionIndex = index < this.visibleOptions().length - 1
1165
- ? this.visibleOptions()
1166
- .slice(index + 1)
1167
- .findIndex((option) => this.isValidOption(option))
1168
- : -1;
1169
- return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : index;
1170
- }
1171
- findPrevOptionIndex(index) {
1172
- const matchedOptionIndex = index > 0 ? ObjectUtils.findLastIndex(this.visibleOptions().slice(0, index), (option) => this.isValidOption(option)) : -1;
1173
- return matchedOptionIndex > -1 ? matchedOptionIndex : index;
1174
- }
1175
- findLastOptionIndex() {
1176
- return ObjectUtils.findLastIndex(this.visibleOptions(), (option) => this.isValidOption(option));
1177
- }
1178
- findLastFocusedOptionIndex() {
1179
- const selectedIndex = this.findSelectedOptionIndex();
1180
- return selectedIndex < 0 ? this.findLastOptionIndex() : selectedIndex;
1181
- }
1182
- isValidOption(option) {
1183
- return option !== undefined && option !== null && !(this.isOptionDisabled(option) || this.isOptionGroup(option));
1184
- }
1185
- isOptionGroup(option) {
1186
- return this.optionGroupLabel !== undefined && this.optionGroupLabel !== null && option.optionGroup !== undefined && option.optionGroup !== null && option.group;
1187
- }
1188
- onArrowUpKey(event, pressedInInputText = false) {
1189
- if (event.altKey && !pressedInInputText) {
1190
- if (this.focusedOptionIndex() !== -1) {
1191
- const option = this.visibleOptions()[this.focusedOptionIndex()];
1192
- this.onOptionSelect(event, option);
1193
- }
1194
- this.overlayVisible && this.hide();
1195
- }
1196
- else {
1197
- const optionIndex = this.focusedOptionIndex() !== -1 ? this.findPrevOptionIndex(this.focusedOptionIndex()) : this.clicked() ? this.findLastOptionIndex() : this.findLastFocusedOptionIndex();
1198
- this.changeFocusedOptionIndex(event, optionIndex);
1199
- !this.overlayVisible && this.show();
1200
- }
1201
- event.preventDefault();
1202
- event.stopPropagation();
1203
- }
1204
- onArrowLeftKey(event, pressedInInputText = false) {
1205
- pressedInInputText && this.focusedOptionIndex.set(-1);
1206
- }
1207
- onDeleteKey(event) {
1208
- if (this.showClear) {
1209
- this.clear(event);
1210
- event.preventDefault();
1211
- }
1212
- }
1213
- onHomeKey(event, pressedInInputText = false) {
1214
- if (pressedInInputText) {
1215
- const target = event.currentTarget;
1216
- if (event.shiftKey) {
1217
- target.setSelectionRange(0, target.value.length);
1218
- }
1219
- else {
1220
- target.setSelectionRange(0, 0);
1221
- this.focusedOptionIndex.set(-1);
1222
- }
1223
- }
1224
- else {
1225
- this.changeFocusedOptionIndex(event, this.findFirstOptionIndex());
1226
- !this.overlayVisible && this.show();
1227
- }
1228
- event.preventDefault();
1229
- }
1230
- onEndKey(event, pressedInInputText = false) {
1231
- if (pressedInInputText) {
1232
- const target = event.currentTarget;
1233
- if (event.shiftKey) {
1234
- target.setSelectionRange(0, target.value.length);
1235
- }
1236
- else {
1237
- const len = target.value.length;
1238
- target.setSelectionRange(len, len);
1239
- this.focusedOptionIndex.set(-1);
1240
- }
1241
- }
1242
- else {
1243
- this.changeFocusedOptionIndex(event, this.findLastOptionIndex());
1244
- !this.overlayVisible && this.show();
1245
- }
1246
- event.preventDefault();
1247
- }
1248
- onPageDownKey(event) {
1249
- this.scrollInView(this.visibleOptions().length - 1);
1250
- event.preventDefault();
1251
- }
1252
- onPageUpKey(event) {
1253
- this.scrollInView(0);
1254
- event.preventDefault();
1255
- }
1256
- onSpaceKey(event, pressedInInputText = false) {
1257
- !this.editable && !pressedInInputText && this.onEnterKey(event);
1258
- }
1259
- onEnterKey(event, pressedInInput = false) {
1260
- if (!this.overlayVisible) {
1261
- this.focusedOptionIndex.set(-1);
1262
- this.onArrowDownKey(event);
1263
- }
1264
- else {
1265
- if (this.focusedOptionIndex() !== -1) {
1266
- const option = this.visibleOptions()[this.focusedOptionIndex()];
1267
- this.onOptionSelect(event, option);
1268
- }
1269
- !pressedInInput && this.hide();
1270
- }
1271
- event.preventDefault();
1272
- }
1273
- onEscapeKey(event) {
1274
- this.overlayVisible && this.hide(true);
1275
- event.preventDefault();
1276
- }
1277
- onTabKey(event, pressedInInputText = false) {
1278
- if (!pressedInInputText) {
1279
- if (this.overlayVisible && this.hasFocusableElements()) {
1280
- DomHandler.focus(event.shiftKey ? this.lastHiddenFocusableElementOnOverlay.nativeElement : this.firstHiddenFocusableElementOnOverlay.nativeElement);
1281
- event.preventDefault();
1282
- }
1283
- else {
1284
- if (this.focusedOptionIndex() !== -1 && this.overlayVisible) {
1285
- const option = this.visibleOptions()[this.focusedOptionIndex()];
1286
- this.onOptionSelect(event, option);
1287
- }
1288
- this.overlayVisible && this.hide(this.filter);
1289
- }
1290
- }
1291
- event.stopPropagation();
1292
- }
1293
- onFirstHiddenFocus(event) {
1294
- const focusableEl = event.relatedTarget === this.focusInputViewChild?.nativeElement ? DomHandler.getFirstFocusableElement(this.overlayViewChild.el?.nativeElement, ':not(.cax-hidden-focusable)') : this.focusInputViewChild?.nativeElement;
1295
- DomHandler.focus(focusableEl);
1296
- }
1297
- onLastHiddenFocus(event) {
1298
- const focusableEl = event.relatedTarget === this.focusInputViewChild?.nativeElement
1299
- ? DomHandler.getLastFocusableElement(this.overlayViewChild?.overlayViewChild?.nativeElement, ':not([data-cax-hidden-focusable="true"])')
1300
- : this.focusInputViewChild?.nativeElement;
1301
- DomHandler.focus(focusableEl);
1302
- }
1303
- hasFocusableElements() {
1304
- return DomHandler.getFocusableElements(this.overlayViewChild.overlayViewChild.nativeElement, ':not([data-cax-hidden-focusable="true"]):not([class="cax-dropdown-items-wrapper"])').length > 0;
1305
- }
1306
- onBackspaceKey(event, pressedInInputText = false) {
1307
- if (pressedInInputText) {
1308
- !this.overlayVisible && this.show();
1309
- }
1310
- }
1311
- searchFields() {
1312
- return this.filterBy?.split(',') || this.filterFields || [this.optionLabel];
1313
- }
1314
- searchOptions(event, char) {
1315
- this.searchValue = (this.searchValue || '') + char;
1316
- let optionIndex = -1;
1317
- let matched = false;
1318
- if (this.focusedOptionIndex() !== -1) {
1319
- optionIndex = this.visibleOptions()
1320
- .slice(this.focusedOptionIndex())
1321
- .findIndex((option) => this.isOptionMatched(option));
1322
- optionIndex =
1323
- optionIndex === -1
1324
- ? this.visibleOptions()
1325
- .slice(0, this.focusedOptionIndex())
1326
- .findIndex((option) => this.isOptionMatched(option))
1327
- : optionIndex + this.focusedOptionIndex();
1328
- }
1329
- else {
1330
- optionIndex = this.visibleOptions().findIndex((option) => this.isOptionMatched(option));
1331
- }
1332
- if (optionIndex !== -1) {
1333
- matched = true;
1334
- }
1335
- if (optionIndex === -1 && this.focusedOptionIndex() === -1) {
1336
- optionIndex = this.findFirstFocusedOptionIndex();
1337
- }
1338
- if (optionIndex !== -1) {
1339
- this.changeFocusedOptionIndex(event, optionIndex);
1340
- }
1341
- if (this.searchTimeout) {
1342
- clearTimeout(this.searchTimeout);
1343
- }
1344
- this.searchTimeout = setTimeout(() => {
1345
- this.searchValue = '';
1346
- this.searchTimeout = null;
1347
- }, 500);
1348
- return matched;
1349
- }
1350
- isOptionMatched(option) {
1351
- return this.isValidOption(option) && this.getOptionLabel(option).toString().toLocaleLowerCase(this.filterLocale).startsWith(this.searchValue.toLocaleLowerCase(this.filterLocale));
1352
- }
1353
- onFilterInputChange(event) {
1354
- let value = event.target.value;
1355
- this._filterValue.set(value);
1356
- this.focusedOptionIndex.set(-1);
1357
- this.onFilter.emit({ originalEvent: event, filter: this._filterValue() });
1358
- !this.virtualScrollerDisabled && this.scroller.scrollToIndex(0);
1359
- setTimeout(() => {
1360
- this.overlayViewChild.alignOverlay();
1361
- });
1362
- this.cd.markForCheck();
1363
- }
1364
- applyFocus() {
1365
- if (this.editable)
1366
- DomHandler.findSingle(this.el.nativeElement, '.cax-dropdown-label.cax-inputtext').focus();
1367
- else
1368
- DomHandler.focus(this.focusInputViewChild?.nativeElement);
1369
- }
1370
- /**
1371
- * Applies focus.
1372
- * @group Method
1373
- */
1374
- focus() {
1375
- this.applyFocus();
1376
- }
1377
- /**
1378
- * Clears the model.
1379
- * @group Method
1380
- */
1381
- clear(event) {
1382
- this.updateModel(null, event);
1383
- this.clearEditableLabel();
1384
- this.onModelTouched();
1385
- this.onChange.emit({ originalEvent: event, value: this.value });
1386
- this.onClear.emit(event);
1387
- this.resetFilter();
1388
- }
1389
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: Dropdown, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i1.FilterService }, { token: i1.caxConfig }], target: i0.ɵɵFactoryTarget.Component });
1390
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.9", type: Dropdown, isStandalone: true, selector: "cax-dropdown", inputs: { id: "id", scrollHeight: "scrollHeight", filter: ["filter", "filter", booleanAttribute], name: "name", style: "style", panelStyle: "panelStyle", styleClass: "styleClass", panelStyleClass: "panelStyleClass", readonly: ["readonly", "readonly", booleanAttribute], required: ["required", "required", booleanAttribute], editable: ["editable", "editable", booleanAttribute], appendTo: "appendTo", tabindex: ["tabindex", "tabindex", numberAttribute], placeholder: "placeholder", loadingIcon: "loadingIcon", filterPlaceholder: "filterPlaceholder", filterLocale: "filterLocale", variant: "variant", inputId: "inputId", dataKey: "dataKey", filterBy: "filterBy", filterFields: "filterFields", autofocus: ["autofocus", "autofocus", booleanAttribute], resetFilterOnHide: ["resetFilterOnHide", "resetFilterOnHide", booleanAttribute], checkmark: ["checkmark", "checkmark", booleanAttribute], dropdownIcon: "dropdownIcon", loading: ["loading", "loading", booleanAttribute], optionLabel: "optionLabel", optionValue: "optionValue", optionDisabled: "optionDisabled", optionGroupLabel: "optionGroupLabel", optionGroupChildren: "optionGroupChildren", autoDisplayFirst: ["autoDisplayFirst", "autoDisplayFirst", booleanAttribute], group: ["group", "group", booleanAttribute], showClear: ["showClear", "showClear", booleanAttribute], emptyFilterMessage: "emptyFilterMessage", emptyMessage: "emptyMessage", lazy: ["lazy", "lazy", booleanAttribute], virtualScroll: ["virtualScroll", "virtualScroll", booleanAttribute], virtualScrollItemSize: ["virtualScrollItemSize", "virtualScrollItemSize", numberAttribute], virtualScrollOptions: "virtualScrollOptions", overlayOptions: "overlayOptions", ariaFilterLabel: "ariaFilterLabel", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", filterMatchMode: "filterMatchMode", maxlength: ["maxlength", "maxlength", numberAttribute], tooltip: "tooltip", tooltipPosition: "tooltipPosition", tooltipPositionStyle: "tooltipPositionStyle", tooltipStyleClass: "tooltipStyleClass", focusOnHover: ["focusOnHover", "focusOnHover", booleanAttribute], selectOnFocus: ["selectOnFocus", "selectOnFocus", booleanAttribute], autoOptionFocus: ["autoOptionFocus", "autoOptionFocus", booleanAttribute], autofocusFilter: ["autofocusFilter", "autofocusFilter", booleanAttribute], autoShowPanelOnPrintableCharacterKeyDown: ["autoShowPanelOnPrintableCharacterKeyDown", "autoShowPanelOnPrintableCharacterKeyDown", booleanAttribute], labelText: "labelText", disabled: "disabled", itemSize: "itemSize", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions", filterValue: "filterValue", options: "options" }, outputs: { onChange: "onChange", onFilter: "onFilter", onFocus: "onFocus", onBlur: "onBlur", onClick: "onClick", onShow: "onShow", onHide: "onHide", onClear: "onClear", onLazyLoad: "onLazyLoad" }, host: { properties: { "class.cax-inputwrapper-filled": "filled()", "class.cax-inputwrapper-focus": "focused || overlayVisible" }, classAttribute: "cax-element cax-inputwrapper" }, providers: [DROPDOWN_VALUE_ACCESSOR], queries: [{ propertyName: "templates", predicate: CaxTemplate }], viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }, { propertyName: "filterViewChild", first: true, predicate: ["filter"], descendants: true }, { propertyName: "focusInputViewChild", first: true, predicate: ["focusInput"], descendants: true }, { propertyName: "editableInputViewChild", first: true, predicate: ["editableInput"], descendants: true }, { propertyName: "itemsViewChild", first: true, predicate: ["items"], descendants: true }, { propertyName: "scroller", first: true, predicate: ["scroller"], descendants: true }, { propertyName: "overlayViewChild", first: true, predicate: ["overlay"], descendants: true }, { propertyName: "firstHiddenFocusableElementOnOverlay", first: true, predicate: ["firstHiddenFocusableEl"], descendants: true }, { propertyName: "lastHiddenFocusableElementOnOverlay", first: true, predicate: ["lastHiddenFocusableEl"], descendants: true }], ngImport: i0, template: "<div [ngClass]=\"{'cax-dropdown-main-label': labelText}\">\n <label *ngIf=\"labelText\" [ngClass]=\"labelTextClass\">{{ labelText }}</label>\n</div>\n<div #container [attr.id]=\"id\" [ngClass]=\"containerClass\" (click)=\"onContainerClick($event)\" [ngStyle]=\"style\" [class]=\"styleClass\">\n <span\n #focusInput\n [ngClass]=\"inputClass\"\n *ngIf=\"!editable\"\n [caxTooltip]=\"tooltip\"\n [tooltipPosition]=\"tooltipPosition\"\n [positionStyle]=\"tooltipPositionStyle\"\n [tooltipStyleClass]=\"tooltipStyleClass\"\n [attr.aria-disabled]=\"disabled\"\n [attr.id]=\"inputId\"\n role=\"combobox\"\n [attr.aria-label]=\"ariaLabel || (label() === 'cax-emptylabel' ? undefined : label())\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-expanded]=\"overlayVisible ?? false\"\n [attr.aria-controls]=\"overlayVisible ? id + '_list' : null\"\n [attr.tabindex]=\"!disabled ? tabindex : -1\"\n caxAutoFocus\n [autofocus]=\"autofocus\"\n [attr.aria-activedescendant]=\"focused ? focusedOptionId : undefined\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputBlur($event)\"\n (keydown)=\"onKeyDown($event)\"\n [attr.aria-required]=\"required\"\n [attr.required]=\"required\"\n >\n <ng-container *ngIf=\"!selectedItemTemplate; else defaultPlaceholder\">{{ label() === 'cax-emptylabel' ? '&nbsp;' : label() }}</ng-container>\n <ng-container *ngIf=\"selectedItemTemplate && !isSelectedOptionEmpty()\" [ngTemplateOutlet]=\"selectedItemTemplate\" [ngTemplateOutletContext]=\"{ $implicit: selectedOption }\"></ng-container>\n <ng-template #defaultPlaceholder>\n <span *ngIf=\"isSelectedOptionEmpty()\">{{ label() === 'cax-emptylabel' ? '&nbsp;' : label() }}</span>\n </ng-template>\n </span>\n <input\n *ngIf=\"editable\"\n #editableInput\n type=\"text\"\n [attr.id]=\"inputId\"\n [attr.maxlength]=\"maxlength\"\n [ngClass]=\"inputClass\"\n [disabled]=\"disabled\"\n aria-haspopup=\"listbox\"\n [attr.placeholder]=\"modelValue() === undefined || modelValue() === null ? placeholder() : undefined\"\n [attr.aria-label]=\"ariaLabel || (label() === 'cax-emptylabel' ? undefined : label())\"\n (input)=\"onEditableInput($event)\"\n (keydown)=\"onKeyDown($event)\"\n caxAutoFocus\n [autofocus]=\"autofocus\"\n [attr.aria-activedescendant]=\"focused ? focusedOptionId : undefined\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputBlur($event)\"\n />\n <ng-container *ngIf=\"isVisibleClearIcon\">\n <TimesIcon [styleClass]=\"'cax-dropdown-clear-icon'\" (click)=\"clear($event)\" *ngIf=\"!clearIconTemplate\" [attr.data-pc-section]=\"'clearicon'\" />\n <span class=\"cax-dropdown-clear-icon\" (click)=\"clear($event)\" *ngIf=\"clearIconTemplate\" [attr.data-pc-section]=\"'clearicon'\">\n <ng-template *ngTemplateOutlet=\"clearIconTemplate\"></ng-template>\n </span>\n </ng-container>\n\n <div class=\"cax-dropdown-trigger\" role=\"button\" aria-label=\"dropdown trigger\" (mousedown)=\"onMouseDown($event)\" aria-haspopup=\"listbox\" [attr.aria-expanded]=\"overlayVisible ?? false\" [attr.data-pc-section]=\"'trigger'\">\n <ng-container *ngIf=\"loading; else elseBlock\">\n <ng-container *ngIf=\"loadingIconTemplate\">\n <ng-container *ngTemplateOutlet=\"loadingIconTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!loadingIconTemplate\">\n <span *ngIf=\"loadingIcon\" [ngClass]=\"'cax-dropdown-trigger-icon pi-spin ' + loadingIcon\" aria-hidden=\"true\"></span>\n <span *ngIf=\"!loadingIcon\" [class]=\"'cax-dropdown-trigger-icon pi pi-spinner pi-spin'\" aria-hidden=\"true\"></span>\n </ng-container>\n </ng-container>\n\n <ng-template #elseBlock>\n <ng-container *ngIf=\"!dropdownIconTemplate\">\n <span class=\"cax-dropdown-trigger-icon\" *ngIf=\"dropdownIcon\" [ngClass]=\"dropdownIcon\"></span>\n <!-- <ChevronDownIcon *ngIf=\"!dropdownIcon\" [styleClass]=\"'cax-dropdown-trigger-icon'\" /> -->\n <i *ngIf=\"!dropdownIcon\" class=\"cax cax-alt-arrow-down\"></i>\n </ng-container>\n <span *ngIf=\"dropdownIconTemplate\" class=\"cax-dropdown-trigger-icon\">\n <ng-template *ngTemplateOutlet=\"dropdownIconTemplate\"></ng-template>\n </span>\n </ng-template>\n </div>\n\n <cax-overlay\n #overlay\n [(visible)]=\"overlayVisible\"\n [options]=\"overlayOptions\"\n [target]=\"'@parent'\"\n [appendTo]=\"appendTo\"\n [autoZIndex]=\"autoZIndex\"\n [baseZIndex]=\"baseZIndex\"\n [showTransitionOptions]=\"showTransitionOptions\"\n [hideTransitionOptions]=\"hideTransitionOptions\"\n (onAnimationStart)=\"onOverlayAnimationStart($event)\"\n (onHide)=\"hide()\"\n >\n <ng-template caxTemplate=\"content\">\n <div [ngClass]=\"'cax-dropdown-panel cax-component'\" [ngStyle]=\"panelStyle\" [class]=\"panelStyleClass\">\n <span\n #firstHiddenFocusableEl\n role=\"presentation\"\n class=\"cax-hidden-accessible cax-hidden-focusable\"\n [attr.tabindex]=\"0\"\n (focus)=\"onFirstHiddenFocus($event)\"\n [attr.data-cax-hidden-accessible]=\"true\"\n [attr.data-cax-hidden-focusable]=\"true\"\n >\n </span>\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n <div class=\"cax-dropdown-header\" *ngIf=\"filter\" (click)=\"$event.stopPropagation()\">\n <ng-container *ngIf=\"filterTemplate; else builtInFilterElement\">\n <ng-container *ngTemplateOutlet=\"filterTemplate; context: { options: filterOptions }\"></ng-container>\n </ng-container>\n <ng-template #builtInFilterElement>\n <div class=\"cax-dropdown-filter-container\">\n <input\n #filter\n type=\"text\"\n role=\"searchbox\"\n autocomplete=\"off\"\n [attr.placeholder]=\"filterPlaceholder || 'Search...'\"\n [value]=\"_filterValue() || ''\"\n class=\"cax-dropdown-filter cax-inputtext cax-component\"\n [ngClass]=\"{ 'cax-variant-filled': variant === 'filled' || config.inputStyle() === 'filled' }\"\n [attr.placeholder]=\"filterPlaceholder\"\n [attr.aria-owns]=\"id + '_list'\"\n (input)=\"onFilterInputChange($event)\"\n [attr.aria-label]=\"ariaFilterLabel\"\n [attr.aria-activedescendant]=\"focusedOptionId\"\n (keydown)=\"onFilterKeyDown($event)\"\n (blur)=\"onFilterBlur($event)\"\n />\n <SearchIcon *ngIf=\"!filterIconTemplate\" [styleClass]=\"'cax-dropdown-filter-icon'\" />\n <span *ngIf=\"filterIconTemplate\" class=\"cax-dropdown-filter-icon\">\n <ng-template *ngTemplateOutlet=\"filterIconTemplate\"></ng-template>\n </span>\n <i *ngIf=\"_filterValue()\" class=\"cax cax-close-circle cax-dropdown-filter-clear-icon\" (click)=\"resetFilter()\"></i>\n </div>\n </ng-template>\n </div>\n <div\n class=\"cax-dropdown-items-wrapper\"\n [ngStyle]=\"{\n 'max-height': virtualScroll ? 'auto' : scrollHeight || 'auto'\n }\"\n tabindex=\"0\"\n >\n <cax-scroller\n *ngIf=\"virtualScroll\"\n #scroller\n [items]=\"visibleOptions()\"\n [style]=\"{ height: scrollHeight }\"\n [itemSize]=\"virtualScrollItemSize || _itemSize\"\n [autoSize]=\"true\"\n [lazy]=\"lazy\"\n (onLazyLoad)=\"onLazyLoad.emit($event)\"\n [options]=\"virtualScrollOptions\"\n >\n <ng-template caxTemplate=\"content\" let-items let-scrollerOptions=\"options\">\n <ng-container *ngTemplateOutlet=\"buildInItems; context: { $implicit: items, options: scrollerOptions }\"></ng-container>\n </ng-template>\n <ng-container *ngIf=\"loaderTemplate\">\n <ng-template caxTemplate=\"loader\" let-scrollerOptions=\"options\">\n <ng-container *ngTemplateOutlet=\"loaderTemplate; context: { options: scrollerOptions }\"></ng-container>\n </ng-template>\n </ng-container>\n </cax-scroller>\n <ng-container *ngIf=\"!virtualScroll\">\n <ng-container *ngTemplateOutlet=\"buildInItems; context: { $implicit: visibleOptions(), options: {} }\"></ng-container>\n </ng-container>\n\n <ng-template #buildInItems let-items let-scrollerOptions=\"options\">\n <ul #items [attr.id]=\"id + '_list'\" [attr.aria-label]=\"listLabel\" class=\"cax-dropdown-items\" [ngClass]=\"scrollerOptions.contentStyleClass\" [ngStyle]=\"scrollerOptions.contentStyle\" role=\"listbox\">\n <ng-template ngFor let-option [ngForOf]=\"items\" let-i=\"index\">\n <ng-container *ngIf=\"isOptionGroup(option)\">\n <li class=\"cax-dropdown-item-group\" [attr.id]=\"id + '_' + getOptionIndex(i, scrollerOptions)\" [ngStyle]=\"{ height: scrollerOptions.itemSize + 'px' }\" role=\"option\">\n <span *ngIf=\"!groupTemplate\">{{ getOptionGroupLabel(option.optionGroup) }}</span>\n <ng-container *ngTemplateOutlet=\"groupTemplate; context: { $implicit: option.optionGroup }\"></ng-container>\n </li>\n </ng-container>\n <ng-container *ngIf=\"!isOptionGroup(option)\">\n <cax-dropdownItem\n [id]=\"id + '_' + getOptionIndex(i, scrollerOptions)\"\n [option]=\"option\"\n [checkmark]=\"checkmark\"\n [selected]=\"isSelected(option)\"\n [label]=\"getOptionLabel(option)\"\n [disabled]=\"isOptionDisabled(option)\"\n [template]=\"itemTemplate\"\n [focused]=\"focusedOptionIndex() === getOptionIndex(i, scrollerOptions)\"\n [ariaPosInset]=\"getAriaPosInset(getOptionIndex(i, scrollerOptions))\"\n [ariaSetSize]=\"ariaSetSize\"\n (onClick)=\"onOptionSelect($event, option)\"\n (onMouseEnter)=\"onOptionMouseEnter($event, getOptionIndex(i, scrollerOptions))\"\n ></cax-dropdownItem>\n </ng-container>\n </ng-template>\n <li *ngIf=\"filterValue && isEmpty()\" class=\"cax-dropdown-empty-message\" [ngStyle]=\"{ height: scrollerOptions.itemSize + 'px' }\" role=\"option\">\n <ng-container *ngIf=\"!emptyFilterTemplate && !emptyTemplate; else emptyFilter\"> {{ emptyFilterMessageLabel }} </ng-container>\n <ng-container #emptyFilter *ngTemplateOutlet=\"emptyFilterTemplate || emptyTemplate\"></ng-container>\n </li>\n <li *ngIf=\"!filterValue && isEmpty()\" class=\"cax-dropdown-empty-message\" [ngStyle]=\"{ height: scrollerOptions.itemSize + 'px' }\" role=\"option\">\n <ng-container *ngIf=\"!emptyTemplate; else empty\"> {{ emptyMessageLabel }} </ng-container>\n <ng-container #empty *ngTemplateOutlet=\"emptyTemplate\"></ng-container>\n </li>\n </ul>\n </ng-template>\n </div>\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n <span\n #lastHiddenFocusableEl\n role=\"presentation\"\n class=\"cax-hidden-accessible cax-hidden-focusable\"\n [attr.tabindex]=\"0\"\n (focus)=\"onLastHiddenFocus($event)\"\n [attr.data-cax-hidden-accessible]=\"true\"\n [attr.data-cax-hidden-focusable]=\"true\"\n ></span>\n </div>\n </ng-template>\n </cax-overlay>\n</div>\n", styles: ["@layer cax{.cax-dropdown{display:inline-flex;cursor:pointer;position:relative;-webkit-user-select:none;user-select:none;width:100%;height:40px}.cax-dropdown-clear-icon{position:absolute;top:50%;margin-top:-.5rem}.cax-dropdown-main-label{font-weight:500;font-size:14px;line-height:20px;margin-bottom:8px}.cax-dropdown-trigger{display:flex;align-items:center;justify-content:center;flex-shrink:0}.cax-dropdown-trigger-icon{transition:transform .3s ease}.cax-dropdown-open .cax-dropdown-trigger-icon{transform:rotate(180deg)}.cax-dropdown-label{display:block;white-space:nowrap;overflow:hidden;flex:1 1 auto;width:1%;text-overflow:ellipsis;cursor:pointer}.cax-dropdown-label-empty{overflow:hidden;opacity:0}input.cax-dropdown-label{cursor:default}.cax-dropdown-items-wrapper{overflow:auto}.cax-dropdown-item{cursor:pointer;font-weight:400;white-space:nowrap;position:relative;overflow:hidden;font-weight:500}.cax-dropdown-item-group{cursor:auto}.cax-dropdown-items{margin:0;padding:0;list-style-type:none}.cax-fluid .cax-dropdown{display:flex}.cax-fluid .cax-dropdown .cax-dropdown-label{width:1%}.cax-float-label .cax-dropdown .cax-placeholder{opacity:0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "component", type: i3.Overlay, selector: "cax-overlay", inputs: ["visible", "mode", "style", "styleClass", "contentStyle", "contentStyleClass", "target", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "listener", "responsive", "options"], outputs: ["visibleChange", "onBeforeShow", "onShow", "onBeforeHide", "onHide", "onAnimationStart", "onAnimationDone"] }, { kind: "directive", type: i1.CaxTemplate, selector: "[caxTemplate]", inputs: ["type", "caxTemplate"] }, { kind: "ngmodule", type: SharedModule }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i4.Tooltip, selector: "[caxTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "caxTooltip", "tooltipDisabled", "tooltipOptions", "linkUrl", "linkText"] }, { kind: "ngmodule", type: RippleModule }, { kind: "ngmodule", type: ScrollerModule }, { kind: "component", type: i5.Scroller, selector: "cax-scroller", inputs: ["id", "style", "styleClass", "tabindex", "items", "itemSize", "scrollHeight", "scrollWidth", "orientation", "step", "delay", "resizeDelay", "appendOnly", "inline", "lazy", "disabled", "loaderDisabled", "columns", "showSpacer", "showLoader", "numToleratedItems", "loading", "autoSize", "trackBy", "options"], outputs: ["onLazyLoad", "onScroll", "onScrollIndexChange"] }, { kind: "ngmodule", type: AutoFocusModule }, { kind: "directive", type: i6.AutoFocus, selector: "[caxAutoFocus]", inputs: ["autofocus"] }, { kind: "component", type: TimesIcon, selector: "TimesIcon" }, { kind: "component", type: SearchIcon, selector: "SearchIcon" }, { kind: "component", type: DropdownItem, selector: "cax-dropdownItem", inputs: ["id", "option", "selected", "focused", "label", "disabled", "visible", "itemSize", "ariaPosInset", "ariaSetSize", "template", "checkmark"], outputs: ["onClick", "onMouseEnter"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1391
- }
1392
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: Dropdown, decorators: [{
1393
- type: Component,
1394
- args: [{ selector: 'cax-dropdown', standalone: true, imports: [CommonModule, OverlayModule, SharedModule, TooltipModule, RippleModule, ScrollerModule, AutoFocusModule, TimesIcon, ChevronDownIcon, SearchIcon, DropdownItem], host: {
1395
- class: 'cax-element cax-inputwrapper',
1396
- '[class.cax-inputwrapper-filled]': 'filled()',
1397
- '[class.cax-inputwrapper-focus]': 'focused || overlayVisible'
1398
- }, providers: [DROPDOWN_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div [ngClass]=\"{'cax-dropdown-main-label': labelText}\">\n <label *ngIf=\"labelText\" [ngClass]=\"labelTextClass\">{{ labelText }}</label>\n</div>\n<div #container [attr.id]=\"id\" [ngClass]=\"containerClass\" (click)=\"onContainerClick($event)\" [ngStyle]=\"style\" [class]=\"styleClass\">\n <span\n #focusInput\n [ngClass]=\"inputClass\"\n *ngIf=\"!editable\"\n [caxTooltip]=\"tooltip\"\n [tooltipPosition]=\"tooltipPosition\"\n [positionStyle]=\"tooltipPositionStyle\"\n [tooltipStyleClass]=\"tooltipStyleClass\"\n [attr.aria-disabled]=\"disabled\"\n [attr.id]=\"inputId\"\n role=\"combobox\"\n [attr.aria-label]=\"ariaLabel || (label() === 'cax-emptylabel' ? undefined : label())\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-expanded]=\"overlayVisible ?? false\"\n [attr.aria-controls]=\"overlayVisible ? id + '_list' : null\"\n [attr.tabindex]=\"!disabled ? tabindex : -1\"\n caxAutoFocus\n [autofocus]=\"autofocus\"\n [attr.aria-activedescendant]=\"focused ? focusedOptionId : undefined\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputBlur($event)\"\n (keydown)=\"onKeyDown($event)\"\n [attr.aria-required]=\"required\"\n [attr.required]=\"required\"\n >\n <ng-container *ngIf=\"!selectedItemTemplate; else defaultPlaceholder\">{{ label() === 'cax-emptylabel' ? '&nbsp;' : label() }}</ng-container>\n <ng-container *ngIf=\"selectedItemTemplate && !isSelectedOptionEmpty()\" [ngTemplateOutlet]=\"selectedItemTemplate\" [ngTemplateOutletContext]=\"{ $implicit: selectedOption }\"></ng-container>\n <ng-template #defaultPlaceholder>\n <span *ngIf=\"isSelectedOptionEmpty()\">{{ label() === 'cax-emptylabel' ? '&nbsp;' : label() }}</span>\n </ng-template>\n </span>\n <input\n *ngIf=\"editable\"\n #editableInput\n type=\"text\"\n [attr.id]=\"inputId\"\n [attr.maxlength]=\"maxlength\"\n [ngClass]=\"inputClass\"\n [disabled]=\"disabled\"\n aria-haspopup=\"listbox\"\n [attr.placeholder]=\"modelValue() === undefined || modelValue() === null ? placeholder() : undefined\"\n [attr.aria-label]=\"ariaLabel || (label() === 'cax-emptylabel' ? undefined : label())\"\n (input)=\"onEditableInput($event)\"\n (keydown)=\"onKeyDown($event)\"\n caxAutoFocus\n [autofocus]=\"autofocus\"\n [attr.aria-activedescendant]=\"focused ? focusedOptionId : undefined\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputBlur($event)\"\n />\n <ng-container *ngIf=\"isVisibleClearIcon\">\n <TimesIcon [styleClass]=\"'cax-dropdown-clear-icon'\" (click)=\"clear($event)\" *ngIf=\"!clearIconTemplate\" [attr.data-pc-section]=\"'clearicon'\" />\n <span class=\"cax-dropdown-clear-icon\" (click)=\"clear($event)\" *ngIf=\"clearIconTemplate\" [attr.data-pc-section]=\"'clearicon'\">\n <ng-template *ngTemplateOutlet=\"clearIconTemplate\"></ng-template>\n </span>\n </ng-container>\n\n <div class=\"cax-dropdown-trigger\" role=\"button\" aria-label=\"dropdown trigger\" (mousedown)=\"onMouseDown($event)\" aria-haspopup=\"listbox\" [attr.aria-expanded]=\"overlayVisible ?? false\" [attr.data-pc-section]=\"'trigger'\">\n <ng-container *ngIf=\"loading; else elseBlock\">\n <ng-container *ngIf=\"loadingIconTemplate\">\n <ng-container *ngTemplateOutlet=\"loadingIconTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!loadingIconTemplate\">\n <span *ngIf=\"loadingIcon\" [ngClass]=\"'cax-dropdown-trigger-icon pi-spin ' + loadingIcon\" aria-hidden=\"true\"></span>\n <span *ngIf=\"!loadingIcon\" [class]=\"'cax-dropdown-trigger-icon pi pi-spinner pi-spin'\" aria-hidden=\"true\"></span>\n </ng-container>\n </ng-container>\n\n <ng-template #elseBlock>\n <ng-container *ngIf=\"!dropdownIconTemplate\">\n <span class=\"cax-dropdown-trigger-icon\" *ngIf=\"dropdownIcon\" [ngClass]=\"dropdownIcon\"></span>\n <!-- <ChevronDownIcon *ngIf=\"!dropdownIcon\" [styleClass]=\"'cax-dropdown-trigger-icon'\" /> -->\n <i *ngIf=\"!dropdownIcon\" class=\"cax cax-alt-arrow-down\"></i>\n </ng-container>\n <span *ngIf=\"dropdownIconTemplate\" class=\"cax-dropdown-trigger-icon\">\n <ng-template *ngTemplateOutlet=\"dropdownIconTemplate\"></ng-template>\n </span>\n </ng-template>\n </div>\n\n <cax-overlay\n #overlay\n [(visible)]=\"overlayVisible\"\n [options]=\"overlayOptions\"\n [target]=\"'@parent'\"\n [appendTo]=\"appendTo\"\n [autoZIndex]=\"autoZIndex\"\n [baseZIndex]=\"baseZIndex\"\n [showTransitionOptions]=\"showTransitionOptions\"\n [hideTransitionOptions]=\"hideTransitionOptions\"\n (onAnimationStart)=\"onOverlayAnimationStart($event)\"\n (onHide)=\"hide()\"\n >\n <ng-template caxTemplate=\"content\">\n <div [ngClass]=\"'cax-dropdown-panel cax-component'\" [ngStyle]=\"panelStyle\" [class]=\"panelStyleClass\">\n <span\n #firstHiddenFocusableEl\n role=\"presentation\"\n class=\"cax-hidden-accessible cax-hidden-focusable\"\n [attr.tabindex]=\"0\"\n (focus)=\"onFirstHiddenFocus($event)\"\n [attr.data-cax-hidden-accessible]=\"true\"\n [attr.data-cax-hidden-focusable]=\"true\"\n >\n </span>\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n <div class=\"cax-dropdown-header\" *ngIf=\"filter\" (click)=\"$event.stopPropagation()\">\n <ng-container *ngIf=\"filterTemplate; else builtInFilterElement\">\n <ng-container *ngTemplateOutlet=\"filterTemplate; context: { options: filterOptions }\"></ng-container>\n </ng-container>\n <ng-template #builtInFilterElement>\n <div class=\"cax-dropdown-filter-container\">\n <input\n #filter\n type=\"text\"\n role=\"searchbox\"\n autocomplete=\"off\"\n [attr.placeholder]=\"filterPlaceholder || 'Search...'\"\n [value]=\"_filterValue() || ''\"\n class=\"cax-dropdown-filter cax-inputtext cax-component\"\n [ngClass]=\"{ 'cax-variant-filled': variant === 'filled' || config.inputStyle() === 'filled' }\"\n [attr.placeholder]=\"filterPlaceholder\"\n [attr.aria-owns]=\"id + '_list'\"\n (input)=\"onFilterInputChange($event)\"\n [attr.aria-label]=\"ariaFilterLabel\"\n [attr.aria-activedescendant]=\"focusedOptionId\"\n (keydown)=\"onFilterKeyDown($event)\"\n (blur)=\"onFilterBlur($event)\"\n />\n <SearchIcon *ngIf=\"!filterIconTemplate\" [styleClass]=\"'cax-dropdown-filter-icon'\" />\n <span *ngIf=\"filterIconTemplate\" class=\"cax-dropdown-filter-icon\">\n <ng-template *ngTemplateOutlet=\"filterIconTemplate\"></ng-template>\n </span>\n <i *ngIf=\"_filterValue()\" class=\"cax cax-close-circle cax-dropdown-filter-clear-icon\" (click)=\"resetFilter()\"></i>\n </div>\n </ng-template>\n </div>\n <div\n class=\"cax-dropdown-items-wrapper\"\n [ngStyle]=\"{\n 'max-height': virtualScroll ? 'auto' : scrollHeight || 'auto'\n }\"\n tabindex=\"0\"\n >\n <cax-scroller\n *ngIf=\"virtualScroll\"\n #scroller\n [items]=\"visibleOptions()\"\n [style]=\"{ height: scrollHeight }\"\n [itemSize]=\"virtualScrollItemSize || _itemSize\"\n [autoSize]=\"true\"\n [lazy]=\"lazy\"\n (onLazyLoad)=\"onLazyLoad.emit($event)\"\n [options]=\"virtualScrollOptions\"\n >\n <ng-template caxTemplate=\"content\" let-items let-scrollerOptions=\"options\">\n <ng-container *ngTemplateOutlet=\"buildInItems; context: { $implicit: items, options: scrollerOptions }\"></ng-container>\n </ng-template>\n <ng-container *ngIf=\"loaderTemplate\">\n <ng-template caxTemplate=\"loader\" let-scrollerOptions=\"options\">\n <ng-container *ngTemplateOutlet=\"loaderTemplate; context: { options: scrollerOptions }\"></ng-container>\n </ng-template>\n </ng-container>\n </cax-scroller>\n <ng-container *ngIf=\"!virtualScroll\">\n <ng-container *ngTemplateOutlet=\"buildInItems; context: { $implicit: visibleOptions(), options: {} }\"></ng-container>\n </ng-container>\n\n <ng-template #buildInItems let-items let-scrollerOptions=\"options\">\n <ul #items [attr.id]=\"id + '_list'\" [attr.aria-label]=\"listLabel\" class=\"cax-dropdown-items\" [ngClass]=\"scrollerOptions.contentStyleClass\" [ngStyle]=\"scrollerOptions.contentStyle\" role=\"listbox\">\n <ng-template ngFor let-option [ngForOf]=\"items\" let-i=\"index\">\n <ng-container *ngIf=\"isOptionGroup(option)\">\n <li class=\"cax-dropdown-item-group\" [attr.id]=\"id + '_' + getOptionIndex(i, scrollerOptions)\" [ngStyle]=\"{ height: scrollerOptions.itemSize + 'px' }\" role=\"option\">\n <span *ngIf=\"!groupTemplate\">{{ getOptionGroupLabel(option.optionGroup) }}</span>\n <ng-container *ngTemplateOutlet=\"groupTemplate; context: { $implicit: option.optionGroup }\"></ng-container>\n </li>\n </ng-container>\n <ng-container *ngIf=\"!isOptionGroup(option)\">\n <cax-dropdownItem\n [id]=\"id + '_' + getOptionIndex(i, scrollerOptions)\"\n [option]=\"option\"\n [checkmark]=\"checkmark\"\n [selected]=\"isSelected(option)\"\n [label]=\"getOptionLabel(option)\"\n [disabled]=\"isOptionDisabled(option)\"\n [template]=\"itemTemplate\"\n [focused]=\"focusedOptionIndex() === getOptionIndex(i, scrollerOptions)\"\n [ariaPosInset]=\"getAriaPosInset(getOptionIndex(i, scrollerOptions))\"\n [ariaSetSize]=\"ariaSetSize\"\n (onClick)=\"onOptionSelect($event, option)\"\n (onMouseEnter)=\"onOptionMouseEnter($event, getOptionIndex(i, scrollerOptions))\"\n ></cax-dropdownItem>\n </ng-container>\n </ng-template>\n <li *ngIf=\"filterValue && isEmpty()\" class=\"cax-dropdown-empty-message\" [ngStyle]=\"{ height: scrollerOptions.itemSize + 'px' }\" role=\"option\">\n <ng-container *ngIf=\"!emptyFilterTemplate && !emptyTemplate; else emptyFilter\"> {{ emptyFilterMessageLabel }} </ng-container>\n <ng-container #emptyFilter *ngTemplateOutlet=\"emptyFilterTemplate || emptyTemplate\"></ng-container>\n </li>\n <li *ngIf=\"!filterValue && isEmpty()\" class=\"cax-dropdown-empty-message\" [ngStyle]=\"{ height: scrollerOptions.itemSize + 'px' }\" role=\"option\">\n <ng-container *ngIf=\"!emptyTemplate; else empty\"> {{ emptyMessageLabel }} </ng-container>\n <ng-container #empty *ngTemplateOutlet=\"emptyTemplate\"></ng-container>\n </li>\n </ul>\n </ng-template>\n </div>\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n <span\n #lastHiddenFocusableEl\n role=\"presentation\"\n class=\"cax-hidden-accessible cax-hidden-focusable\"\n [attr.tabindex]=\"0\"\n (focus)=\"onLastHiddenFocus($event)\"\n [attr.data-cax-hidden-accessible]=\"true\"\n [attr.data-cax-hidden-focusable]=\"true\"\n ></span>\n </div>\n </ng-template>\n </cax-overlay>\n</div>\n", styles: ["@layer cax{.cax-dropdown{display:inline-flex;cursor:pointer;position:relative;-webkit-user-select:none;user-select:none;width:100%;height:40px}.cax-dropdown-clear-icon{position:absolute;top:50%;margin-top:-.5rem}.cax-dropdown-main-label{font-weight:500;font-size:14px;line-height:20px;margin-bottom:8px}.cax-dropdown-trigger{display:flex;align-items:center;justify-content:center;flex-shrink:0}.cax-dropdown-trigger-icon{transition:transform .3s ease}.cax-dropdown-open .cax-dropdown-trigger-icon{transform:rotate(180deg)}.cax-dropdown-label{display:block;white-space:nowrap;overflow:hidden;flex:1 1 auto;width:1%;text-overflow:ellipsis;cursor:pointer}.cax-dropdown-label-empty{overflow:hidden;opacity:0}input.cax-dropdown-label{cursor:default}.cax-dropdown-items-wrapper{overflow:auto}.cax-dropdown-item{cursor:pointer;font-weight:400;white-space:nowrap;position:relative;overflow:hidden;font-weight:500}.cax-dropdown-item-group{cursor:auto}.cax-dropdown-items{margin:0;padding:0;list-style-type:none}.cax-fluid .cax-dropdown{display:flex}.cax-fluid .cax-dropdown .cax-dropdown-label{width:1%}.cax-float-label .cax-dropdown .cax-placeholder{opacity:0}}\n"] }]
1399
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i1.FilterService }, { type: i1.caxConfig }], propDecorators: { id: [{
1400
- type: Input
1401
- }], scrollHeight: [{
1402
- type: Input
1403
- }], filter: [{
1404
- type: Input,
1405
- args: [{ transform: booleanAttribute }]
1406
- }], name: [{
1407
- type: Input
1408
- }], style: [{
1409
- type: Input
1410
- }], panelStyle: [{
1411
- type: Input
1412
- }], styleClass: [{
1413
- type: Input
1414
- }], panelStyleClass: [{
1415
- type: Input
1416
- }], readonly: [{
1417
- type: Input,
1418
- args: [{ transform: booleanAttribute }]
1419
- }], required: [{
1420
- type: Input,
1421
- args: [{ transform: booleanAttribute }]
1422
- }], editable: [{
1423
- type: Input,
1424
- args: [{ transform: booleanAttribute }]
1425
- }], appendTo: [{
1426
- type: Input
1427
- }], tabindex: [{
1428
- type: Input,
1429
- args: [{ transform: numberAttribute }]
1430
- }], placeholder: [{
1431
- type: Input
1432
- }], loadingIcon: [{
1433
- type: Input
1434
- }], filterPlaceholder: [{
1435
- type: Input
1436
- }], filterLocale: [{
1437
- type: Input
1438
- }], variant: [{
1439
- type: Input
1440
- }], inputId: [{
1441
- type: Input
1442
- }], dataKey: [{
1443
- type: Input
1444
- }], filterBy: [{
1445
- type: Input
1446
- }], filterFields: [{
1447
- type: Input
1448
- }], autofocus: [{
1449
- type: Input,
1450
- args: [{ transform: booleanAttribute }]
1451
- }], resetFilterOnHide: [{
1452
- type: Input,
1453
- args: [{ transform: booleanAttribute }]
1454
- }], checkmark: [{
1455
- type: Input,
1456
- args: [{ transform: booleanAttribute }]
1457
- }], dropdownIcon: [{
1458
- type: Input
1459
- }], loading: [{
1460
- type: Input,
1461
- args: [{ transform: booleanAttribute }]
1462
- }], optionLabel: [{
1463
- type: Input
1464
- }], optionValue: [{
1465
- type: Input
1466
- }], optionDisabled: [{
1467
- type: Input
1468
- }], optionGroupLabel: [{
1469
- type: Input
1470
- }], optionGroupChildren: [{
1471
- type: Input
1472
- }], autoDisplayFirst: [{
1473
- type: Input,
1474
- args: [{ transform: booleanAttribute }]
1475
- }], group: [{
1476
- type: Input,
1477
- args: [{ transform: booleanAttribute }]
1478
- }], showClear: [{
1479
- type: Input,
1480
- args: [{ transform: booleanAttribute }]
1481
- }], emptyFilterMessage: [{
1482
- type: Input
1483
- }], emptyMessage: [{
1484
- type: Input
1485
- }], lazy: [{
1486
- type: Input,
1487
- args: [{ transform: booleanAttribute }]
1488
- }], virtualScroll: [{
1489
- type: Input,
1490
- args: [{ transform: booleanAttribute }]
1491
- }], virtualScrollItemSize: [{
1492
- type: Input,
1493
- args: [{ transform: numberAttribute }]
1494
- }], virtualScrollOptions: [{
1495
- type: Input
1496
- }], overlayOptions: [{
1497
- type: Input
1498
- }], ariaFilterLabel: [{
1499
- type: Input
1500
- }], ariaLabel: [{
1501
- type: Input
1502
- }], ariaLabelledBy: [{
1503
- type: Input
1504
- }], filterMatchMode: [{
1505
- type: Input
1506
- }], maxlength: [{
1507
- type: Input,
1508
- args: [{ transform: numberAttribute }]
1509
- }], tooltip: [{
1510
- type: Input
1511
- }], tooltipPosition: [{
1512
- type: Input
1513
- }], tooltipPositionStyle: [{
1514
- type: Input
1515
- }], tooltipStyleClass: [{
1516
- type: Input
1517
- }], focusOnHover: [{
1518
- type: Input,
1519
- args: [{ transform: booleanAttribute }]
1520
- }], selectOnFocus: [{
1521
- type: Input,
1522
- args: [{ transform: booleanAttribute }]
1523
- }], autoOptionFocus: [{
1524
- type: Input,
1525
- args: [{ transform: booleanAttribute }]
1526
- }], autofocusFilter: [{
1527
- type: Input,
1528
- args: [{ transform: booleanAttribute }]
1529
- }], autoShowPanelOnPrintableCharacterKeyDown: [{
1530
- type: Input,
1531
- args: [{ transform: booleanAttribute }]
1532
- }], labelText: [{
1533
- type: Input
1534
- }], disabled: [{
1535
- type: Input
1536
- }], itemSize: [{
1537
- type: Input
1538
- }], autoZIndex: [{
1539
- type: Input
1540
- }], baseZIndex: [{
1541
- type: Input
1542
- }], showTransitionOptions: [{
1543
- type: Input
1544
- }], hideTransitionOptions: [{
1545
- type: Input
1546
- }], filterValue: [{
1547
- type: Input
1548
- }], options: [{
1549
- type: Input
1550
- }], onChange: [{
1551
- type: Output
1552
- }], onFilter: [{
1553
- type: Output
1554
- }], onFocus: [{
1555
- type: Output
1556
- }], onBlur: [{
1557
- type: Output
1558
- }], onClick: [{
1559
- type: Output
1560
- }], onShow: [{
1561
- type: Output
1562
- }], onHide: [{
1563
- type: Output
1564
- }], onClear: [{
1565
- type: Output
1566
- }], onLazyLoad: [{
1567
- type: Output
1568
- }], containerViewChild: [{
1569
- type: ViewChild,
1570
- args: ['container']
1571
- }], filterViewChild: [{
1572
- type: ViewChild,
1573
- args: ['filter']
1574
- }], focusInputViewChild: [{
1575
- type: ViewChild,
1576
- args: ['focusInput']
1577
- }], editableInputViewChild: [{
1578
- type: ViewChild,
1579
- args: ['editableInput']
1580
- }], itemsViewChild: [{
1581
- type: ViewChild,
1582
- args: ['items']
1583
- }], scroller: [{
1584
- type: ViewChild,
1585
- args: ['scroller']
1586
- }], overlayViewChild: [{
1587
- type: ViewChild,
1588
- args: ['overlay']
1589
- }], firstHiddenFocusableElementOnOverlay: [{
1590
- type: ViewChild,
1591
- args: ['firstHiddenFocusableEl']
1592
- }], lastHiddenFocusableElementOnOverlay: [{
1593
- type: ViewChild,
1594
- args: ['lastHiddenFocusableEl']
1595
- }], templates: [{
1596
- type: ContentChildren,
1597
- args: [CaxTemplate]
1598
- }] } });
1599
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZHJvcGRvd24vZHJvcGRvd24udHMiLCIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZHJvcGRvd24vZHJvcGRvd24uaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUlILGdCQUFnQixFQUNoQix1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFFBQVEsRUFDUixlQUFlLEVBQ2YsTUFBTSxFQUVOLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUdMLGVBQWUsRUFFZixNQUFNLEVBSU4sTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsRUFFcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBNEMsV0FBVyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3SCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBVyxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFZLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXRFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVB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O2dCQUVKLFNBQVM7c0JBQXRDLGVBQWU7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFuaW1hdGlvbkV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIEFmdGVyVmlld0NoZWNrZWQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBjb21wdXRlZCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgZWZmZWN0LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSW5wdXQsXG4gICAgTmdNb2R1bGUsXG4gICAgTmdab25lLFxuICAgIG51bWJlckF0dHJpYnV0ZSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBSZW5kZXJlcjIsXG4gICAgU2lnbmFsLFxuICAgIHNpZ25hbCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgVmlld1JlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZpbHRlclNlcnZpY2UsIE92ZXJsYXlPcHRpb25zLCBjYXhDb25maWcsIENheFRlbXBsYXRlLCBTaGFyZWRNb2R1bGUsIFRyYW5zbGF0aW9uS2V5cyB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL2FwaSc7XG5pbXBvcnQgeyBBdXRvRm9jdXNNb2R1bGUgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9hdXRvZm9jdXMnO1xuaW1wb3J0IHsgRG9tSGFuZGxlciB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL2RvbSc7XG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5TW9kdWxlIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vb3ZlcmxheSc7XG5pbXBvcnQgeyBSaXBwbGVNb2R1bGUgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9yaXBwbGUnO1xuaW1wb3J0IHsgU2Nyb2xsZXIsIFNjcm9sbGVyTW9kdWxlIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vc2Nyb2xsZXInO1xuaW1wb3J0IHsgU2Nyb2xsZXJPcHRpb25zIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vYXBpJztcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS90b29sdGlwJztcbmltcG9ydCB7IE9iamVjdFV0aWxzLCBVbmlxdWVDb21wb25lbnRJZCB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL3V0aWxzJztcbmltcG9ydCB7IFRpbWVzSWNvbiB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL2ljb25zL3RpbWVzJztcbmltcG9ydCB7IENoZXZyb25Eb3duSWNvbiB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL2ljb25zL2NoZXZyb25kb3duJztcbmltcG9ydCB7IFNlYXJjaEljb24gfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9pY29ucy9zZWFyY2gnO1xuaW1wb3J0IHsgRHJvcGRvd25DaGFuZ2VFdmVudCwgRHJvcGRvd25GaWx0ZXJFdmVudCwgRHJvcGRvd25GaWx0ZXJPcHRpb25zLCBEcm9wZG93bkxhenlMb2FkRXZlbnQgfSBmcm9tICcuL2Ryb3Bkb3duLmludGVyZmFjZSc7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL3RzLWhlbHBlcnMnO1xuaW1wb3J0IHsgRHJvcGRvd25JdGVtIH0gZnJvbSAnLi9kcm9wZG93bi1pdGVtJztcblxuZXhwb3J0IGNvbnN0IERST1BET1dOX1ZBTFVFX0FDQ0VTU09SOiBhbnkgPSB7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRHJvcGRvd24pLFxuICAgIG11bHRpOiB0cnVlXG59O1xuXG4vKipcbiAqIERyb3Bkb3duIGFsc28ga25vd24gYXMgU2VsZWN0LCBpcyB1c2VkIHRvIGNob29zZSBhbiBpdGVtIGZyb20gYSBjb2xsZWN0aW9uIG9mIG9wdGlvbnMuXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2NheC1kcm9wZG93bicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgT3ZlcmxheU1vZHVsZSwgU2hhcmVkTW9kdWxlLCBUb29sdGlwTW9kdWxlLCBSaXBwbGVNb2R1bGUsIFNjcm9sbGVyTW9kdWxlLCBBdXRvRm9jdXNNb2R1bGUsIFRpbWVzSWNvbiwgQ2hldnJvbkRvd25JY29uLCBTZWFyY2hJY29uLCBEcm9wZG93bkl0ZW1dLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdjYXgtZWxlbWVudCBjYXgtaW5wdXR3cmFwcGVyJyxcbiAgICAgICAgJ1tjbGFzcy5jYXgtaW5wdXR3cmFwcGVyLWZpbGxlZF0nOiAnZmlsbGVkKCknLFxuICAgICAgICAnW2NsYXNzLmNheC1pbnB1dHdyYXBwZXItZm9jdXNdJzogJ2ZvY3VzZWQgfHwgb3ZlcmxheVZpc2libGUnXG4gICAgfSxcbiAgICBwcm92aWRlcnM6IFtEUk9QRE9XTl9WQUxVRV9BQ0NFU1NPUl0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFsnLi9kcm9wZG93bi5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRHJvcGRvd24gaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0NoZWNrZWQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgICAvKipcbiAgICAgKiBVbmlxdWUgaWRlbnRpZmllciBvZiB0aGUgY29tcG9uZW50XG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgaWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBIZWlnaHQgb2YgdGhlIHZpZXdwb3J0IGluIHBpeGVscywgYSBzY3JvbGxiYXIgaXMgZGVmaW5lZCBpZiBoZWlnaHQgb2YgbGlzdCBleGNlZWRzIHRoaXMgdmFsdWUuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc2Nyb2xsSGVpZ2h0OiBzdHJpbmcgPSAnMjAwcHgnO1xuICAgIC8qKlxuICAgICAqIFdoZW4gc3BlY2lmaWVkLCBkaXNwbGF5cyBhbiBpbnB1dCBmaWVsZCB0byBmaWx0ZXIgdGhlIGl0ZW1zIG9uIGtleXVwLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBmaWx0ZXI6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgaW5wdXQgZWxlbWVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBuYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogSW5saW5lIHN0eWxlIG9mIHRoZSBlbGVtZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHN0eWxlOiB7IFtrbGFzczogc3RyaW5nXTogYW55IH0gfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIElubGluZSBzdHlsZSBvZiB0aGUgb3ZlcmxheSBwYW5lbCBlbGVtZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHBhbmVsU3R5bGU6IHsgW2tsYXNzOiBzdHJpbmddOiBhbnkgfSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogU3R5bGUgY2xhc3Mgb2YgdGhlIGVsZW1lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFN0eWxlIGNsYXNzIG9mIHRoZSBvdmVybGF5IHBhbmVsIGVsZW1lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgcGFuZWxTdHlsZUNsYXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hlbiBwcmVzZW50LCBpdCBzcGVjaWZpZXMgdGhhdCB0aGUgY29tcG9uZW50IGNhbm5vdCBiZSBlZGl0ZWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHJlYWRvbmx5OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFdoZW4gcHJlc2VudCwgaXQgc3BlY2lmaWVzIHRoYXQgYW4gaW5wdXQgZmllbGQgbXVzdCBiZSBmaWxsZWQgb3V0IGJlZm9yZSBzdWJtaXR0aW5nIHRoZSBmb3JtLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSByZXF1aXJlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBXaGVuIHByZXNlbnQsIGN1c3RvbSB2YWx1ZSBpbnN0ZWFkIG9mIHByZWRlZmluZWQgb3B0aW9ucyBjYW4gYmUgZW50ZXJlZCB1c2luZyB0aGUgZWRpdGFibGUgaW5wdXQgZmllbGQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGVkaXRhYmxlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFRhcmdldCBlbGVtZW50IHRvIGF0dGFjaCB0aGUgb3ZlcmxheSwgdmFsaWQgdmFsdWVzIGFyZSBcImJvZHlcIiBvciBhIGxvY2FsIG5nLXRlbXBsYXRlIHZhcmlhYmxlIG9mIGFub3RoZXIgZWxlbWVudCAobm90ZTogdXNlIGJpbmRpbmcgd2l0aCBicmFja2V0cyBmb3IgdGVtcGxhdGUgdmFyaWFibGVzLCBlLmcuIFthcHBlbmRUb109XCJteWRpdlwiIGZvciBhIGRpdiBlbGVtZW50IGhhdmluZyAjbXlkaXYgYXMgdmFyaWFibGUgbmFtZSkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgYXBwZW5kVG86IEhUTUxFbGVtZW50IHwgRWxlbWVudFJlZiB8IFRlbXBsYXRlUmVmPGFueT4gfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkIHwgYW55O1xuICAgIC8qKlxuICAgICAqIEluZGV4IG9mIHRoZSBlbGVtZW50IGluIHRhYmJpbmcgb3JkZXIuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgdGFiaW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCA9IDA7XG4gICAgLyoqXG4gICAgICogRGVmYXVsdCB0ZXh0IHRvIGRpc3BsYXkgd2hlbiBubyBvcHRpb24gaXMgc2VsZWN0ZWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc2V0IHBsYWNlaG9sZGVyKHZhbDogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX3BsYWNlaG9sZGVyLnNldCh2YWwpO1xuICAgIH1cbiAgICBnZXQgcGxhY2Vob2xkZXIoKTogU2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXIuYXNSZWFkb25seSgpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJY29uIHRvIGRpc3BsYXkgaW4gbG9hZGluZyBzdGF0ZS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBsb2FkaW5nSWNvbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFBsYWNlaG9sZGVyIHRleHQgdG8gc2hvdyB3aGVuIGZpbHRlciBpbnB1dCBpcyBlbXB0eS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBmaWx0ZXJQbGFjZWhvbGRlcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIExvY2FsZSB0byB1c2UgaW4gZmlsdGVyaW5nLiBUaGUgZGVmYXVsdCBsb2NhbGUgaXMgdGhlIGhvc3QgZW52aXJvbm1lbnQncyBjdXJyZW50IGxvY2FsZS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBmaWx0ZXJMb2NhbGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBTcGVjaWZpZXMgdGhlIGlucHV0IHZhcmlhbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB2YXJpYW50OiAnZmlsbGVkJyB8ICdvdXRsaW5lZCcgPSAnb3V0bGluZWQnO1xuICAgIC8qKlxuICAgICAqIElkZW50aWZpZXIgb2YgdGhlIGFjY2Vzc2libGUgaW5wdXQgZWxlbWVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBpbnB1dElkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogQSBwcm9wZXJ0eSB0byB1bmlxdWVseSBpZGVudGlmeSBhIHZhbHVlIGluIG9wdGlvbnMuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZGF0YUtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFdoZW4gZmlsdGVyaW5nIGlzIGVuYWJsZWQsIGZpbHRlckJ5IGRlY2lkZXMgd2hpY2ggZmllbGQgb3IgZmllbGRzIChjb21tYSBzZXBhcmF0ZWQpIHRvIHNlYXJjaCBhZ2FpbnN0LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGZpbHRlckJ5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogRmllbGRzIHVzZWQgd2hlbiBmaWx0ZXJpbmcgdGhlIG9wdGlvbnMsIGRlZmF1bHRzIHRvIG9wdGlvbkxhYmVsLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGZpbHRlckZpZWxkczogYW55W10gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hlbiBwcmVzZW50LCBpdCBzcGVjaWZpZXMgdGhhdCB0aGUgY29tcG9uZW50IHNob3VsZCBhdXRvbWF0aWNhbGx5IGdldCBmb2N1cyBvbiBsb2FkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhdXRvZm9jdXM6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogQ2xlYXJzIHRoZSBmaWx0ZXIgdmFsdWUgd2hlbiBoaWRpbmcgdGhlIGRyb3Bkb3duLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSByZXNldEZpbHRlck9uSGlkZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIHNlbGVjdGVkIG9wdGlvbiB3aWxsIGJlIHNob3duIHdpdGggYSBjaGVjayBtYXJrLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBjaGVja21hcms6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBJY29uIGNsYXNzIG9mIHRoZSBkcm9wZG93biBpY29uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGRyb3Bkb3duSWNvbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIGRyb3Bkb3duIGlzIGluIGxvYWRpbmcgc3RhdGUuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGxvYWRpbmc6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBOYW1lIG9mIHRoZSBsYWJlbCBmaWVsZCBvZiBhbiBvcHRpb24uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgb3B0aW9uTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBOYW1lIG9mIHRoZSB2YWx1ZSBmaWVsZCBvZiBhbiBvcHRpb24uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgb3B0aW9uVmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBOYW1lIG9mIHRoZSBkaXNhYmxlZCBmaWVsZCBvZiBhbiBvcHRpb24uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgb3B0aW9uRGlzYWJsZWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBOYW1lIG9mIHRoZSBsYWJlbCBmaWVsZCBvZiBhbiBvcHRpb24gZ3JvdXAuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgb3B0aW9uR3JvdXBMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkID0gJ2xhYmVsJztcbiAgICAvKipcbiAgICAgKiBOYW1lIG9mIHRoZSBvcHRpb25zIGZpZWxkIG9mIGFuIG9wdGlvbiBncm91cC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBvcHRpb25Hcm91cENoaWxkcmVuOiBzdHJpbmcgPSAnaXRlbXMnO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gZGlzcGxheSB0aGUgZmlyc3QgaXRlbSBhcyB0aGUgbGFiZWwgaWYgbm8gcGxhY2Vob2xkZXIgaXMgZGVmaW5lZCBhbmQgdmFsdWUgaXMgbnVsbC5cbiAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSB2MTcuMy4wLCBzZXQgaW5pdGlhbCB2YWx1ZSBieSBtb2RlbCBpbnN0ZWFkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhdXRvRGlzcGxheUZpcnN0OiBib29sZWFuID0gdHJ1ZTtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIGRpc3BsYXkgb3B0aW9ucyBhcyBncm91cGVkIHdoZW4gbmVzdGVkIG9wdGlvbnMgYXJlIHByb3ZpZGVkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBncm91cDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBXaGVuIGVuYWJsZWQsIGEgY2xlYXIgaWNvbiBpcyBkaXNwbGF5ZWQgdG8gY2xlYXIgdGhlIHZhbHVlLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzaG93Q2xlYXI6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogVGV4dCB0byBkaXNwbGF5IHdoZW4gZmlsdGVyaW5nIGRvZXMgbm90IHJldHVybiBhbnkgcmVzdWx0cy4gRGVmYXVsdHMgdG8gZ2xvYmFsIHZhbHVlIGluIGkxOG4gdHJhbnNsYXRpb24gY29uZmlndXJhdGlvbi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBlbXB0eUZpbHRlck1lc3NhZ2U6IHN0cmluZyA9ICcnO1xuICAgIC8qKlxuICAgICAqIFRleHQgdG8gZGlzcGxheSB3aGVuIHRoZXJlIGlzIG5vIGRhdGEuIERlZmF1bHRzIHRvIGdsb2JhbCB2YWx1ZSBpbiBpMThuIHRyYW5zbGF0aW9uIGNvbmZpZ3VyYXRpb24uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZW1wdHlNZXNzYWdlOiBzdHJpbmcgPSAnJztcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGlmIGRhdGEgaXMgbG9hZGVkIGFuZCBpbnRlcmFjdGVkIHdpdGggaW4gbGF6eSBtYW5uZXIuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGxhenk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBkYXRhIHNob3VsZCBiZSBsb2FkZWQgb24gZGVtYW5kIGR1cmluZyBzY3JvbGwuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHZpcnR1YWxTY3JvbGw6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogSGVpZ2h0IG9mIGFuIGl0ZW0gaW4gdGhlIGxpc3QgZm9yIFZpcnR1YWxTY3JvbGxpbmcuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgdmlydHVhbFNjcm9sbEl0ZW1TaXplOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byB1c2UgdGhlIHNjcm9sbGVyIGZlYXR1cmUuIFRoZSBwcm9wZXJ0aWVzIG9mIHNjcm9sbGVyIGNvbXBvbmVudCBjYW4gYmUgdXNlZCBsaWtlIGFuIG9iamVjdCBpbiBpdC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB2aXJ0dWFsU2Nyb2xsT3B0aW9uczogU2Nyb2xsZXJPcHRpb25zIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gdXNlIG92ZXJsYXkgQVBJIGZlYXR1cmUuIFRoZSBwcm9wZXJ0aWVzIG9mIG92ZXJsYXkgQVBJIGNhbiBiZSB1c2VkIGxpa2UgYW4gb2JqZWN0IGluIGl0LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIG92ZXJsYXlPcHRpb25zOiBPdmVybGF5T3B0aW9ucyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGEgc3RyaW5nIHRoYXQgbGFiZWxzIHRoZSBmaWx0ZXIgaW5wdXQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgYXJpYUZpbHRlckxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogVXNlZCB0byBkZWZpbmUgYSBhcmlhIGxhYmVsIGF0dHJpYnV0ZSB0aGUgY3VycmVudCBlbGVtZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEVzdGFibGlzaGVzIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGUgY29tcG9uZW50IGFuZCBsYWJlbChzKSB3aGVyZSBpdHMgdmFsdWUgc2hvdWxkIGJlIG9uZSBvciBtb3JlIGVsZW1lbnQgSURzLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGFyaWFMYWJlbGxlZEJ5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyBob3cgdGhlIGl0ZW1zIGFyZSBmaWx0ZXJlZC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBmaWx0ZXJNYXRjaE1vZGU6ICdjb250YWlucycgfCAnc3RhcnRzV2l0aCcgfCAnZW5kc1dpdGgnIHwgJ2VxdWFscycgfCAnbm90RXF1YWxzJyB8ICdpbicgfCAnbHQnIHwgJ2x0ZScgfCAnZ3QnIHwgJ2d0ZScgPSAnY29udGFpbnMnO1xuICAgIC8qKlxuICAgICAqIE1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlciBhbGxvd3MgaW4gdGhlIGVkaXRhYmxlIGlucHV0IGZpZWxkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIG1heGxlbmd0aDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEFkdmlzb3J5IGluZm9ybWF0aW9uIHRvIGRpc3BsYXkgaW4gYSB0b29sdGlwIG9uIGhvdmVyLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRvb2x0aXA6IHN0cmluZyA9ICcnO1xuICAgIC8qKlxuICAgICAqIFBvc2l0aW9uIG9mIHRoZSB0b29sdGlwLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRvb2x0aXBQb3NpdGlvbjogJ3RvcCcgfCAnbGVmdCcgfCAncmlnaHQnIHwgJ2JvdHRvbScgPSAncmlnaHQnO1xuICAgIC8qKlxuICAgICAqIFR5cGUgb2YgQ1NTIHBvc2l0aW9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRvb2x0aXBQb3NpdGlvblN0eWxlOiBzdHJpbmcgPSAnYWJzb2x1dGUnO1xuICAgIC8qKlxuICAgICAqIFN0eWxlIGNsYXNzIG9mIHRoZSB0b29sdGlwLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRvb2x0aXBTdHlsZUNsYXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogRmllbGRzIHVzZWQgd2hlbiBmaWx0ZXJpbmcgdGhlIG9wdGlvbnMsIGRlZmF1bHRzIHRvIG9wdGlvbkxhYmVsLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBmb2N1c09uSG92ZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBvcHRpb24gd2lsbCBiZSBzZWxlY3RlZCBvbiBmb2N1cy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2VsZWN0T25Gb2N1czogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gZm9jdXMgb24gdGhlIGZpcnN0IHZpc2libGUgb3Igc2VsZWN0ZWQgZWxlbWVudCB3aGVuIHRoZSBvdmVybGF5IHBhbmVsIGlzIHNob3duLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhdXRvT3B0aW9uRm9jdXM6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIEFwcGxpZXMgZm9jdXMgdG8gdGhlIGZpbHRlciBlbGVtZW50IHdoZW4gdGhlIG92ZXJsYXkgaXMgc2hvd24uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGF1dG9mb2N1c0ZpbHRlcjogYm9vbGVhbiA9IHRydWU7XG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyBpZiB0aGUgcGFuZWwgd2lsbCBiZSBzaG93biB3aGVuIHRoZSBpbnB1dCBpcyBmb2N1c2VkIGFuZCByZWNlaXZlcyBhIGNoYXJhY3RlciBrZXkgZG93biBldmVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgYXV0b1Nob3dQYW5lbE9uUHJpbnRhYmxlQ2hhcmFjdGVyS2V5RG93bjogYm9vbGVhbiA9IHRydWU7XG4gICAgLyoqXG4gICAgICogV2hlbiBwcmVzZW50LCBpdCBzcGVjaWZpZXMgdGhhdCB0aGUgY29tcG9uZW50IHNob3VsZCBiZSBkaXNhYmxlZC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cblxuICAgIEBJbnB1dCgpIGxhYmVsVGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KCkgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gICAgfVxuICAgIHNldCBkaXNhYmxlZChfZGlzYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKF9kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLm92ZXJsYXlWaXNpYmxlKSB0aGlzLmhpZGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gX2Rpc2FibGVkO1xuICAgICAgICBpZiAoISh0aGlzLmNkIGFzIFZpZXdSZWYpLmRlc3Ryb3llZCkge1xuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogSXRlbSBzaXplIG9mIGl0ZW0gdG8gYmUgdmlydHVhbCBzY3JvbGxlZC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgdmlydHVhbFNjcm9sbEl0ZW1TaXplIHByb3BlcnR5IGluc3RlYWQuXG4gICAgICovXG4gICAgQElucHV0KCkgZ2V0IGl0ZW1TaXplKCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pdGVtU2l6ZTtcbiAgICB9XG4gICAgc2V0IGl0ZW1TaXplKHZhbDogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX2l0ZW1TaXplID0gdmFsO1xuICAgICAgICBjb25zb2xlLndhcm4oJ1RoZSBpdGVtU2l6ZSBwcm9wZXJ0eSBpcyBkZXByZWNhdGVkLCB1c2UgdmlydHVhbFNjcm9sbEl0ZW1TaXplIHByb3BlcnR5IGluc3RlYWQuJyk7XG4gICAgfVxuICAgIF9pdGVtU2l6ZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gYXV0b21hdGljYWxseSBtYW5hZ2UgbGF5ZXJpbmcuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICogQGRlcHJlY2F0ZWQgc2luY2UgdjE0LjIuMCwgdXNlIG92ZXJsYXlPcHRpb25zIHByb3BlcnR5IGluc3RlYWQuXG4gICAgICovXG4gICAgQElucHV0KCkgZ2V0IGF1dG9aSW5kZXgoKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hdXRvWkluZGV4O1xuICAgIH1cbiAgICBzZXQgYXV0b1pJbmRleCh2YWw6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5fYXV0b1pJbmRleCA9IHZhbDtcbiAgICAgICAgY29uc29sZS53YXJuKCdUaGUgYXV0b1pJbmRleCBwcm9wZXJ0eSBpcyBkZXByZWNhdGVkIHNpbmNlIHYxNC4yLjAsIHVzZSBvdmVybGF5T3B0aW9ucyBwcm9wZXJ0eSBpbnN0ZWFkLicpO1xuICAgIH1cbiAgICBfYXV0b1pJbmRleDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBCYXNlIHpJbmRleCB2YWx1ZSB0byB1c2UgaW4gbGF5ZXJpbmcuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICogQGRlcHJlY2F0ZWQgc2luY2UgdjE0LjIuMCwgdXNlIG92ZXJsYXlPcHRpb25zIHByb3BlcnR5IGluc3RlYWQuXG4gICAgICovXG4gICAgQElucHV0KCkgZ2V0IGJhc2VaSW5kZXgoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Jhc2VaSW5kZXg7XG4gICAgfVxuICAgIHNldCBiYXNlWkluZGV4KHZhbDogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX2Jhc2VaSW5kZXggPSB2YWw7XG4gICAgICAgIGNvbnNvbGUud2FybignVGhlIGJhc2VaSW5kZXggcHJvcGVydHkgaXMgZGVwcmVjYXRlZCBzaW5jZSB2MTQuMi4wLCB1c2Ugb3ZlcmxheU9wdGlvbnMgcHJvcGVydHkgaW5zdGVhZC4nKTtcbiAgICB9XG4gICAgX2Jhc2VaSW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBUcmFuc2l0aW9uIG9wdGlvbnMgb2YgdGhlIHNob3cgYW5pbWF0aW9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIHYxNC4yLjAsIHVzZSBvdmVybGF5T3B0aW9ucyBwcm9wZXJ0eSBpbnN0ZWFkLlxuICAgICAqL1xuICAgIEBJbnB1dCgpIGdldCBzaG93VHJhbnNpdGlvbk9wdGlvbnMoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Nob3dUcmFuc2l0aW9uT3B0aW9ucztcbiAgICB9XG4gICAgc2V0IHNob3dUcmFuc2l0aW9uT3B0aW9ucyh2YWw6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9zaG93VHJhbnNpdGlvbk9wdGlvbnMgPSB2YWw7XG4gICAgICAgIGNvbnNvbGUud2FybignVGhlIHNob3dUcmFuc2l0aW9uT3B0aW9ucyBwcm9wZXJ0eSBpcyBkZXByZWNhdGVkIHNpbmNlIHYxNC4yLjAsIHVzZSBvdmVybGF5T3B0aW9ucyBwcm9wZXJ0eSBpbnN0ZWFkLicpO1xuICAgIH1cbiAgICBfc2hvd1RyYW5zaXRpb25PcHRpb25zOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogVHJhbnNpdGlvbiBvcHRpb25zIG9mIHRoZSBoaWRlIGFuaW1hdGlvbi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSB2MTQuMi4wLCB1c2Ugb3ZlcmxheU9wdGlvbnMgcHJvcGVydHkgaW5zdGVhZC5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBnZXQgaGlkZVRyYW5zaXRpb25PcHRpb25zKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oaWRlVHJhbnNpdGlvbk9wdGlvbnM7XG4gICAgfVxuICAgIHNldCBoaWRlVHJhbnNpdGlvbk9wdGlvbnModmFsOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5faGlkZVRyYW5zaXRpb25PcHRpb25zID0gdmFsO1xuICAgICAgICBjb25zb2xlLndhcm4oJ1RoZSBoaWRlVHJhbnNpdGlvbk9wdGlvbnMgcHJvcGVydHkgaXMgZGVwcmVjYXRlZCBzaW5jZSB2MTQuMi4wLCB1c2Ugb3ZlcmxheU9wdGlvbnMgcHJvcGVydHkgaW5zdGVhZC4nKTtcbiAgICB9XG4gICAgX2hpZGVUcmFuc2l0aW9uT3B0aW9uczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFdoZW4gc3BlY2lmaWVkLCBmaWx0ZXIgZGlzcGxheXMgd2l0aCB0aGlzIHZhbHVlLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGdldCBmaWx0ZXJWYWx1ZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbHRlclZhbHVlKCk7XG4gICAgfVxuICAgIHNldCBmaWx0ZXJWYWx1ZSh2YWw6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9maWx0ZXJWYWx1ZS5zZXQodmFsKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEFuIGFycmF5IG9mIG9iamVjdHMgdG8gZGlzcGxheSBhcyB0aGUgYXZhaWxhYmxlIG9wdGlvbnMuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZ2V0IG9wdGlvbnMoKTogYW55W10gfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5fb3B0aW9ucygpO1xuICAgICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9XG4gICAgc2V0IG9wdGlvbnModmFsOiBhbnlbXSB8IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAoIU9iamVjdFV0aWxzLmRlZXBFcXVhbHModmFsLCB0aGlzLl9vcHRpb25zKCkpKSB7XG4gICAgICAgICAgICB0aGlzLl9vcHRpb25zLnNldCh2YWwpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIHZhbHVlIG9mIGRyb3Bkb3duIGNoYW5nZXMuXG4gICAgICogQHBhcmFtIHtEcm9wZG93bkNoYW5nZUV2ZW50fSBldmVudCAtIGN1c3RvbSBjaGFuZ2UgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RHJvcGRvd25DaGFuZ2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPERyb3Bkb3duQ2hhbmdlRXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gZGF0YSBpcyBmaWx0ZXJlZC5cbiAgICAgKiBAcGFyYW0ge0Ryb3Bkb3duRmlsdGVyRXZlbnR9IGV2ZW50IC0gY3VzdG9tIGZpbHRlciBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25GaWx0ZXI6IEV2ZW50RW1pdHRlcjxEcm9wZG93bkZpbHRlckV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RHJvcGRvd25GaWx0ZXJFdmVudD4oKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBkcm9wZG93biBnZXRzIGZvY3VzLlxuICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50IC0gQnJvd3NlciBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25Gb2N1czogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gZHJvcGRvd24gbG9zZXMgZm9jdXMuXG4gICAgICogQHBhcmFtIHtFdmVudH0gZXZlbnQgLSBCcm93c2VyIGV2ZW50LlxuICAgICAqIEBncm91cCBFbWl0c1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvbkJsdXI6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIGNvbXBvbmVudCBpcyBjbGlja2VkLlxuICAgICAqIEBwYXJhbSB7TW91c2VFdmVudH0gZXZlbnQgLSBNb3VzZSBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25DbGljazogRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PigpO1xuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIGRyb3Bkb3duIG92ZXJsYXkgZ2V0cyB2aXNpYmxlLlxuICAgICAqIEBwYXJhbSB7QW5pbWF0aW9uRXZlbnR9IGV2ZW50IC0gQW5pbWF0aW9uIGV2ZW50LlxuICAgICAqIEBncm91cCBFbWl0c1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvblNob3c6IEV2ZW50RW1pdHRlcjxBbmltYXRpb25FdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFuaW1hdGlvbkV2ZW50PigpO1xuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIGRyb3Bkb3duIG92ZXJsYXkgZ2V0cyBoaWRkZW4uXG4gICAgICogQHBhcmFtIHtBbmltYXRpb25FdmVudH0gZXZlbnQgLSBBbmltYXRpb24gZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uSGlkZTogRXZlbnRFbWl0dGVyPEFuaW1hdGlvbkV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QW5pbWF0aW9uRXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gZHJvcGRvd24gY2xlYXJzIHRoZSB2YWx1ZS5cbiAgICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudCAtIEJyb3dzZXIgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uQ2xlYXI6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSBpbiBsYXp5IG1vZGUgdG8gbG9hZCBuZXcgZGF0YS5cbiAgICAgKiBAcGFyYW0ge0Ryb3Bkb3duTGF6eUxvYWRFdmVudH0gZXZlbnQgLSBMYXp5IGxvYWQgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uTGF6eUxvYWQ6IEV2ZW50RW1pdHRlcjxEcm9wZG93bkxhenlMb2FkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxEcm9wZG93bkxhenlMb2FkRXZlbnQ+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdjb250YWluZXInKSBjb250YWluZXJWaWV3Q2hpbGQ6IE51bGxhYmxlPEVsZW1lbnRSZWY+O1xuXG4gICAgQFZpZXdDaGlsZCgnZmlsdGVyJykgZmlsdGVyVmlld0NoaWxkOiBOdWxsYWJsZTxFbGVtZW50UmVmPjtcblxuICAgIEBWaWV3Q2hpbGQoJ2ZvY3VzSW5wdXQnKSBmb2N1c0lucHV0Vmlld0NoaWxkOiBOdWxsYWJsZTxFbGVtZW50UmVmPjtcblxuICAgIEBWaWV3Q2hpbGQoJ2VkaXRhYmxlSW5wdXQnKSBlZGl0YWJsZUlucHV0Vmlld0NoaWxkOiBOdWxsYWJsZTxFbGVtZW50UmVmPjtcblxuICAgIEBWaWV3Q2hpbGQoJ2l0ZW1zJykgaXRlbXNWaWV3Q2hpbGQ6IE51bGxhYmxlPEVsZW1lbnRSZWY+O1xuXG4gICAgQFZpZXdDaGlsZCgnc2Nyb2xsZXInKSBzY3JvbGxlcjogTnVsbGFibGU8U2Nyb2xsZXI+O1xuXG4gICAgQFZpZXdDaGlsZCgnb3ZlcmxheScpIG92ZXJsYXlWaWV3Q2hpbGQ6IE51bGxhYmxlPE92ZXJsYXk+O1xuXG4gICAgQFZpZXdDaGlsZCgnZmlyc3RIaWRkZW5Gb2N1c2FibGVFbCcpIGZpcnN0SGlkZGVuRm9jdXNhYmxlRWxlbWVudE9uT3ZlcmxheTogTnVsbGFibGU8RWxlbWVudFJlZj47XG5cbiAgICBAVmlld0NoaWxkKCdsYXN0SGlkZGVuRm9jdXNhYmxlRWwnKSBsYXN0SGlkZGVuRm9jdXNhYmxlRWxlbWVudE9uT3ZlcmxheTogTnVsbGFibGU8RWxlbWVudFJlZj47XG5cbiAgICBAQ29udGVudENoaWxkcmVuKENheFRlbXBsYXRlKSB0ZW1wbGF0ZXM6IE51bGxhYmxlPFF1ZXJ5TGlzdDxDYXhUZW1wbGF0ZT4+O1xuXG4gICAgX2Rpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gICAgaXRlbXNXcmFwcGVyOiBOdWxsYWJsZTxIVE1MRGl2RWxlbWVudD47XG5cbiAgICBpdGVtVGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgZ3JvdXBUZW1wbGF0ZTogTnVsbGFibGU8VGVtcGxhdGVSZWY8YW55Pj47XG5cbiAgICBsb2FkZXJUZW1wbGF0ZTogTnVsbGFibGU8VGVtcGxhdGVSZWY8YW55Pj47XG5cbiAgICBzZWxlY3RlZEl0ZW1UZW1wbGF0ZTogTnVsbGFibGU8VGVtcGxhdGVSZWY8YW55Pj47XG5cbiAgICBoZWFkZXJUZW1wbGF0ZTogTnVsbGFibGU8VGVtcGxhdGVSZWY8YW55Pj47XG5cbiAgICBmaWx0ZXJUZW1wbGF0ZTogTnVsbGFibGU8VGVtcGxhdGVSZWY8YW55Pj47XG5cbiAgICBmb290ZXJUZW1wbGF0ZTogTnVsbGFibGU8VGVtcGxhdGVSZWY8YW55Pj47XG5cbiAgICBlbXB0eUZpbHRlclRlbXBsYXRlOiBOdWxsYWJsZTxUZW1wbGF0ZVJlZjxhbnk+PjtcblxuICAgIGVtcHR5VGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgZHJvcGRvd25JY29uVGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgbG9hZGluZ0ljb25UZW1wbGF0ZTogTnVsbGFibGU8VGVtcGxhdGVSZWY8YW55Pj47XG5cbiAgICBjbGVhckljb25UZW1wbGF0ZTogTnVsbGFibGU8VGVtcGxhdGVSZWY8YW55Pj47XG5cbiAgICBmaWx0ZXJJY29uVGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgZmlsdGVyT3B0aW9uczogRHJvcGRvd25GaWx0ZXJPcHRpb25zIHwgdW5kZWZpbmVkO1xuXG4gICAgX29wdGlvbnMgPSBzaWduYWw8YW55W10gfCB1bmRlZmluZWQ+KG51bGwpO1xuXG4gICAgX3BsYWNlaG9sZGVyID0gc2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAgIG1vZGVsVmFsdWUgPSBzaWduYWw8YW55PihudWxsKTtcblxuICAgIHZhbHVlOiBhbnk7XG5cbiAgICBvbk1vZGVsQ2hhbmdlOiBGdW5jdGlvbiA9ICgpID0+IHt9O1xuXG4gICAgb25Nb2RlbFRvdWNoZWQ6IEZ1bmN0aW9uID0gKCkgPT4ge307XG5cbiAgICBob3ZlcjogTnVsbGFibGU8Ym9vbGVhbj47XG5cbiAgICBmb2N1c2VkOiBOdWxsYWJsZTxib29sZWFuPjtcblxuICAgIG92ZXJsYXlWaXNpYmxlOiBOdWxsYWJsZTxib29sZWFuPjtcblxuICAgIG9wdGlvbnNDaGFuZ2VkOiBOdWxsYWJsZTxib29sZWFuPjtcblxuICAgIHBhbmVsOiBOdWxsYWJsZTxIVE1MRGl2RWxlbWVudD47XG5cbiAgICBkaW1lbnNpb25zVXBkYXRlZDogTnVsbGFibGU8Ym9vbGVhbj47XG5cbiAgICBob3ZlcmVkSXRlbTogYW55O1xuXG4gICAgc2VsZWN0ZWRPcHRpb25VcGRhdGVkOiBOdWxsYWJsZTxib29sZWFuPjtcblxuICAgIF9maWx0ZXJWYWx1ZSA9IHNpZ25hbDxhbnk+KG51bGwpO1xuXG4gICAgc2VhcmNoVmFsdWU6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICBzZWFyY2hJbmRleDogTnVsbGFibGU8bnVtYmVyPjtcblxuICAgIHNlYXJjaFRpbWVvdXQ6IGFueTtcblxuICAgIHByZXZpb3VzU2VhcmNoQ2hhcjogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIGN1cnJlbnRTZWFyY2hDaGFyOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgcHJldmVudE1vZGVsVG91Y2hlZDogTnVsbGFibGU8Ym9vbGVhbj47XG5cbiAgICBmb2N1c2VkT3B0aW9uSW5kZXggPSBzaWduYWw8bnVtYmVyPigtMSk7XG5cbiAgICBsYWJlbElkOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgbGlzdElkOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgY2xpY2tlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgICBnZXQgZW1wdHlNZXNzYWdlTGFiZWwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW1wdHlNZXNzYWdlIHx8IHRoaXMuY29uZmlnLmdldFRyYW5zbGF0aW9uKFRyYW5zbGF0aW9uS2V5cy5FTVBUWV9NRVNTQUdFKTtcbiAgICB9XG5cbiAgICBnZXQgZW1wdHlGaWx0ZXJNZXNzYWdlTGFiZWwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW1wdHlGaWx0ZXJNZXNzYWdlIHx8IHRoaXMuY29uZmlnLmdldFRyYW5zbGF0aW9uKFRyYW5zbGF0aW9uS2V5cy5FTVBUWV9GSUxURVJfTUVTU0FHRSk7XG4gICAgfVxuXG4gICAgZ2V0IGlzVmlzaWJsZUNsZWFySWNvbigpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZWxWYWx1ZSgpICE9IG51bGwgJiYgdGhpcy5oYXNTZWxlY3RlZE9wdGlvbigpICYmIHRoaXMuc2hvd0NsZWFyICYmICF0aGlzLmRpc2FibGVkO1xuICAgIH1cblxuICAgIGdldCBsaXN0TGFiZWwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLmdldFRyYW5zbGF0aW9uKFRyYW5zbGF0aW9uS2V5cy5BUklBKVsnbGlzdExhYmVsJ107XG4gICAgfVxuXG4gICAgZ2V0IGNvbnRhaW5lckNsYXNzKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJ2NheC1kcm9wZG93biBjYXgtY29tcG9uZW50IGNheC1pbnB1dHdyYXBwZXInOiB0cnVlLFxuICAgICAgICAgICAgJ2NheC1kaXNhYmxlZCc6IHRoaXMuZGlzYWJsZWQsXG4gICAgICAgICAgICAnY2F4LWRyb3Bkb3duLWNsZWFyYWJsZSc6IHRoaXMuc2hvd0NsZWFyICYmICF0aGlzLmRpc2FibGVkLFxuICAgICAgICAgICAgJ2NheC1mb2N1cyc6IHRoaXMuZm9jdXNlZCxcbiAgICAgICAgICAgICdjYXgtaW5wdXR3cmFwcGVyLWZpbGxlZCc6IHRoaXMubW9kZWxWYWx1ZSgpICE9PSB1bmRlZmluZWQgJiYgdGhpcy5tb2RlbFZhbHVlKCkgIT09IG51bGwgJiYgIXRoaXMubW9kZWxWYWx1ZSgpLmxlbmd0aCxcbiAgICAgICAgICAgICdjYXgtaW5wdXR3cmFwcGVyLWZvY3VzJzogdGhpcy5mb2N1c2VkIHx8IHRoaXMub3ZlcmxheVZpc2libGUsXG4gICAgICAgICAgICAnY2F4LXZhcmlhbnQtZmlsbGVkJzogdGhpcy52YXJpYW50ID09PSAnZmlsbGVkJyB8fCB0aGlzLmNvbmZpZy5pbnB1dFN0eWxlKCkgPT09ICdmaWxsZWQnLFxuICAgICAgICAgICAgJ2NheC1kcm9wZG93bi1vcGVuJzogdGhpcy5vdmVybGF5VmlzaWJsZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGdldCBpbnB1dENsYXNzKCkge1xuICAgICAgICBjb25zdCBsYWJlbCA9IHRoaXMubGFiZWwoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICdjYXgtZHJvcGRvd24tbGFiZWwgY2F4LWlucHV0dGV4dCc6IHRydWUsXG4gICAgICAgICAgICAnY2F4LXBsYWNlaG9sZGVyJzogdGhpcy5wbGFjZWhvbGRlcigpICYmIGxhYmVsID09PSB0aGlzLnBsYWNlaG9sZGVyKCksXG4gICAgICAgICAgICAnY2F4LWRyb3Bkb3duLWxhYmVsLWVtcHR5JzogIXRoaXMuZWRpdGFibGUgJiYgIXRoaXMuc2VsZWN0ZWRJdGVtVGVtcGxhdGUgJiYgKGxhYmVsID09PSB1bmRlZmluZWQgfHwgbGFiZWwgPT09IG51bGwgfHwgbGFiZWwgPT09ICdjYXgtZW1wdHlsYWJlbCcgfHwgbGFiZWwubGVuZ3RoID09PSAwKVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGdldCBwYW5lbENsYXNzKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJ2NheC1kcm9wZG93bi1wYW5lbCBjYXgtY29tcG9uZW50JzogdHJ1ZSxcbiAgICAgICAgICAgICdjYXgtaW5wdXQtZmlsbGVkJzogdGhpcy5jb25maWcuaW5wdXRTdHlsZSgpID09PSAnZmlsbGVkJyxcbiAgICAgICAgICAgICdjYXgtcmlwcGxlLWRpc2FibGVkJzogdGhpcy5jb25maWcucmlwcGxlID09PSBmYWxzZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGdldCBmb2N1c2VkT3B0aW9uSWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpICE9PSAtMSA/IGAke3RoaXMuaWR9XyR7dGhpcy5mb2N1c2VkT3B0aW9uSW5kZXgoKX1gIDogbnVsbDtcbiAgICB9XG5cbiAgICB2aXNpYmxlT3B0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuZ2V0QWxsVmlzaWJsZUFuZE5vblZpc2libGVPcHRpb25zKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuX2ZpbHRlclZhbHVlKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IF9maWx0ZXJCeSA9IHRoaXMuZmlsdGVyQnkgfHwgdGhpcy5vcHRpb25MYWJlbDtcblxuICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRPcHRpb25zID1cbiAgICAgICAgICAgICAgICAhX2ZpbHRlckJ5ICYmICF0aGlzLmZpbHRlckZpZWxkcyAmJiAhdGhpcy5vcHRpb25WYWx1ZVxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMub3B0aW9ucy5maWx0ZXIoKG9wdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9uLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uLmxhYmVsLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmRleE9mKHRoaXMuX2ZpbHRlclZhbHVlKCkudG9Mb3dlckNhc2UoKS50cmltKCkpICE9PSAtMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmRleE9mKHRoaXMuX2ZpbHRlclZhbHVlKCkudG9Mb3dlckNhc2UoKS50cmltKCkpICE9PSAtMTtcbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXIob3B0aW9ucywgdGhpcy5zZWFyY2hGaWVsZHMoKSwgdGhpcy5fZmlsdGVyVmFsdWUoKS50cmltKCksIHRoaXMuZmlsdGVyTWF0Y2hNb2RlLCB0aGlzLmZpbHRlckxvY2FsZSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmdyb3VwKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uR3JvdXBzID0gdGhpcy5vcHRpb25zIHx8IFtdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkID0gW107XG5cbiAgICAgICAgICAgICAgICBvcHRpb25Hcm91cHMuZm9yRWFjaCgoZ3JvdXApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBDaGlsZHJlbiA9IHRoaXMuZ2V0T3B0aW9uR3JvdXBDaGlsZHJlbihncm91cCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkSXRlbXMgPSBncm91cENoaWxkcmVuLmZpbHRlcigoaXRlbSkgPT4gZmlsdGVyZWRPcHRpb25zLmluY2x1ZGVzKGl0ZW0pKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyZWRJdGVtcy5sZW5ndGggPiAwKSBmaWx0ZXJlZC5wdXNoKHsgLi4uZ3JvdXAsIFt0eXBlb2YgdGhpcy5vcHRpb25Hcm91cENoaWxkcmVuID09PSAnc3RyaW5nJyA/IHRoaXMub3B0aW9uR3JvdXBDaGlsZHJlbiA6ICdpdGVtcyddOiBbLi4uZmlsdGVyZWRJdGVtc10gfSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mbGF0T3B0aW9ucyhmaWx0ZXJlZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmlsdGVyZWRPcHRpb25zO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgfSk7XG5cbiAgICBsYWJlbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgLy8gdXNlICBnZXRBbGxWaXNpYmxlQW5kTm9uVmlzaWJsZU9wdGlvbnMgdmVyc2VzIGp1c3QgdmlzaWJsZSBvcHRpb25zXG4gICAgICAgIC8vIHRoaXMgd2lsbCBmaW5kIHRoZSBzZWxlY3RlZCBvcHRpb24gd2hldGhlciBvciBub3QgdGhlIHVzZXIgaXMgY3VycmVudGx5IGZpbHRlcmluZyAgYmVjYXVzZSB0aGUgZmlsdGVyZWQgKGkuZS4gdmlzaWJsZSkgb3B0aW9ucywgYXJlIGEgc3Vic2V0IG9mIGFsbCB0aGUgb3B0aW9uc1xuICAgICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5nZXRBbGxWaXNpYmxlQW5kTm9uVmlzaWJsZU9wdGlvbnMoKTtcbiAgICAgICAgLy8gdXNlIGlzT3B0aW9uRXF1YWxzTW9kZWxWYWx1ZSBmb3IgdGhlIHVzZSBjYXNlIHdoZXJlIHRoZSBkcm9wZG93biBpcyBpbml0YWxpemVkIHdpdGggYSBkaXNhYmxlZCBvcHRpb25cbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRPcHRpb25JbmRleCA9IG9wdGlvbnMuZmluZEluZGV4KChvcHRpb24pID0+IHRoaXMuaXNPcHRpb25WYWx1ZUVxdWFsc01vZGVsVmFsdWUob3B0aW9uKSk7XG5cbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkT3B0aW9uSW5kZXggIT09IC0xID8gdGhpcy5nZXRPcHRpb25MYWJlbChvcHRpb25zW3NlbGVjdGVkT3B0aW9uSW5kZXhdKSA6IHRoaXMucGxhY2Vob2xkZXIoKSB8fCAnY2F4LWVtcHR5bGFiZWwnO1xuICAgIH0pO1xuXG4gICAgZmlsbGVkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMubW9kZWxWYWx1ZSgpID09PSAnc3RyaW5nJykgcmV0dXJuICEhdGhpcy5tb2RlbFZhbHVlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmxhYmVsKCkgIT09ICdjYXgtZW1wdHlsYWJlbCcgJiYgdGhpcy5tb2RlbFZhbHVlKCkgIT09IHVuZGVmaW5lZCAmJiB0aGlzLm1vZGVsVmFsdWUoKSAhPT0gbnVsbDtcbiAgICB9KTtcblxuICAgIHNlbGVjdGVkT3B0aW9uOiBhbnk7XG5cbiAgICBlZGl0YWJsZUlucHV0VmFsdWUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmdldE9wdGlvbkxhYmVsKHRoaXMuc2VsZWN0ZWRPcHRpb24pIHx8IHRoaXMubW9kZWxWYWx1ZSgpIHx8ICcnKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZWw6IEVsZW1lbnRSZWYsXG4gICAgICAgIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBwdWJsaWMgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwdWJsaWMgem9uZTogTmdab25lLFxuICAgICAgICBwdWJsaWMgZmlsdGVyU2VydmljZTogRmlsdGVyU2VydmljZSxcbiAgICAgICAgcHVibGljIGNvbmZpZzogY2F4Q29uZmlnXG4gICAgKSB7XG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtb2RlbFZhbHVlID0gdGhpcy5tb2RlbFZhbHVlKCk7XG4gICAgICAgICAgICBjb25zdCB2aXNpYmxlT3B0aW9ucyA9IHRoaXMudmlzaWJsZU9wdGlvbnMoKTtcblxuICAgICAgICAgICAgaWYgKHZpc2libGVPcHRpb25zICYmIE9iamVjdFV0aWxzLmlzTm90RW1wdHkodmlzaWJsZU9wdGlvbnMpKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRPcHRpb25JbmRleCA9IHRoaXMuZmluZFNlbGVjdGVkT3B0aW9uSW5kZXgoKTtcblxuICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZE9wdGlvbkluZGV4ICE9PSAtMSB8fCBtb2RlbFZhbHVlID09PSB1bmRlZmluZWQgfHwgKHR5cGVvZiBtb2RlbFZhbHVlID09PSAnc3RyaW5nJyAmJiBtb2RlbFZhbHVlLmxlbmd0aCA9PT0gMCkgfHwgdGhpcy5pc01vZGVsVmFsdWVOb3RTZXQoKSB8fCB0aGlzLmVkaXRhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSB2aXNpYmxlT3B0aW9uc1tzZWxlY3RlZE9wdGlvbkluZGV4XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlscy5pc0VtcHR5KHZpc2libGVPcHRpb25zKSAmJiAobW9kZWxWYWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuaXNNb2RlbFZhbHVlTm90U2V0KCkpICYmIE9iamVjdFV0aWxzLmlzTm90RW1wdHkodGhpcy5zZWxlY3RlZE9wdGlvbikpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uID0gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG1vZGVsVmFsdWUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmVkaXRhYmxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVFZGl0YWJsZUxhYmVsKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTW9kZWxWYWx1ZU5vdFNldCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZWxWYWx1ZSgpID09PSBudWxsICYmICF0aGlzLmlzT3B0aW9uVmFsdWVFcXVhbHNNb2RlbFZhbHVlKHRoaXMuc2VsZWN0ZWRPcHRpb24pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QWxsVmlzaWJsZUFuZE5vblZpc2libGVPcHRpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ncm91cCA/IHRoaXMuZmxhdE9wdGlvbnModGhpcy5vcHRpb25zKSA6IHRoaXMub3B0aW9ucyB8fCBbXTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5pZCA9IHRoaXMuaWQgfHwgVW5pcXVlQ29tcG9uZW50SWQoKTtcbiAgICAgICAgdGhpcy5hdXRvVXBkYXRlTW9kZWwoKTtcblxuICAgICAgICBpZiAodGhpcy5maWx0ZXJCeSkge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIGZpbHRlcjogKHZhbHVlKSA9PiB0aGlzLm9uRmlsdGVySW5wdXRDaGFuZ2UodmFsdWUpLFxuICAgICAgICAgICAgICAgIHJlc2V0OiAoKSA9PiB0aGlzLnJlc2V0RmlsdGVyKClcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnNDaGFuZ2VkICYmIHRoaXMub3ZlcmxheVZpc2libGUpIHtcbiAgICAgICAgICAgIHRoaXMub3B0aW9uc0NoYW5nZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub3ZlcmxheVZpZXdDaGlsZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5Vmlld0NoaWxkLmFsaWduT3ZlcmxheSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgMSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkT3B0aW9uVXBkYXRlZCAmJiB0aGlzLml0ZW1zV3JhcHBlcikge1xuICAgICAgICAgICAgbGV0IHNlbGVjdGVkSXRlbSA9IERvbUhhbmRsZXIuZmluZFNpbmdsZSh0aGlzLm92ZXJsYXlWaWV3Q2hpbGQ/Lm92ZXJsYXlWaWV3Q2hpbGQ/Lm5hdGl2ZUVsZW1lbnQsICdsaS5jYXgtaGlnaGxpZ2h0Jyk7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgICAgICAgICAgRG9tSGFuZGxlci5zY3JvbGxJblZpZXcodGhpcy5pdGVtc1dyYXBwZXIsIHNlbGVjdGVkSXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uVXBkYXRlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICAodGhpcy50ZW1wbGF0ZXMgYXMgUXVlcnlMaXN0PENheFRlbXBsYXRlPikuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChpdGVtLmdldFR5cGUoKSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2l0ZW0nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnc2VsZWN0ZWRJdGVtJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnaGVhZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oZWFkZXJUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZmlsdGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb290ZXJUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZW1wdHlmaWx0ZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVtcHR5RmlsdGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2VtcHR5JzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbXB0eVRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdncm91cCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnbG9hZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkZXJUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZHJvcGRvd25pY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcm9wZG93bkljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnbG9hZGluZ2ljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmdJY29uVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2NsZWFyaWNvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJJY29uVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2ZpbHRlcmljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlckljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZmxhdE9wdGlvbnMob3B0aW9ucykge1xuICAgICAgICByZXR1cm4gKG9wdGlvbnMgfHwgW10pLnJlZHVjZSgocmVzdWx0LCBvcHRpb24sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh7IG9wdGlvbkdyb3VwOiBvcHRpb24sIGdyb3VwOiB0cnVlLCBpbmRleCB9KTtcblxuICAgICAgICAgICAgY29uc3Qgb3B0aW9uR3JvdXBDaGlsZHJlbiA9IHRoaXMuZ2V0T3B0aW9uR3JvdXBDaGlsZHJlbihvcHRpb24pO1xuXG4gICAgICAgICAgICBvcHRpb25Hcm91cENoaWxkcmVuICYmIG9wdGlvbkdyb3VwQ2hpbGRyZW4uZm9yRWFjaCgobykgPT4gcmVzdWx0LnB1c2gobykpO1xuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LCBbXSk7XG4gICAgfVxuXG4gICAgYXV0b1VwZGF0ZU1vZGVsKCkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RPbkZvY3VzICYmIHRoaXMuYXV0b09wdGlvbkZvY3VzICYmICF0aGlzLmhhc1NlbGVjdGVkT3B0aW9uKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4LnNldCh0aGlzLmZpbmRGaXJzdEZvY3VzZWRPcHRpb25JbmRleCgpKTtcbiAgICAgICAgICAgIHRoaXMub25PcHRpb25TZWxlY3QobnVsbCwgdGhpcy52aXNpYmxlT3B0aW9ucygpW3RoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCldLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuYXV0b0Rpc3BsYXlGaXJzdCAmJiAodGhpcy5tb2RlbFZhbHVlKCkgPT09IG51bGwgfHwgdGhpcy5tb2RlbFZhbHVlKCkgPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5wbGFjZWhvbGRlcigpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kID0gdGhpcy5maW5kRmlyc3RPcHRpb25JbmRleCgpO1xuICAgICAgICAgICAgICAgIHRoaXMub25PcHRpb25TZWxlY3QobnVsbCwgdGhpcy52aXNpYmxlT3B0aW9ucygpW2luZF0sIGZhbHNlLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uT3B0aW9uU2VsZWN0KGV2ZW50LCBvcHRpb24sIGlzSGlkZSA9IHRydWUsIHByZXZlbnRDaGFuZ2UgPSBmYWxzZSkge1xuICAgICAgICBpZiAoIXRoaXMuaXNTZWxlY3RlZChvcHRpb24pKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0T3B0aW9uVmFsdWUob3B0aW9uKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTW9kZWwodmFsdWUsIGV2ZW50KTtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4LnNldCh0aGlzLmZpbmRTZWxlY3RlZE9wdGlvbkluZGV4KCkpO1xuICAgICAgICAgICAgcHJldmVudENoYW5nZSA9PT0gZmFsc2UgJiYgdGhpcy5vbkNoYW5nZS5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIHZhbHVlOiB2YWx1ZSB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNIaWRlKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGUodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk9wdGlvbk1vdXNlRW50ZXIoZXZlbnQsIGluZGV4KSB7XG4gICAgICAgIGlmICh0aGlzLmZvY3VzT25Ib3Zlcikge1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VGb2N1c2VkT3B0aW9uSW5kZXgoZXZlbnQsIGluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZU1vZGVsKHZhbHVlLCBldmVudD8pIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodmFsdWUpO1xuICAgICAgICB0aGlzLm1vZGVsVmFsdWUuc2V0KHZhbHVlKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvblVwZGF0ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXRGaWx0ZXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5hbGxvd01vZGVsQ2hhbmdlKCkgJiYgdGhpcy5vbk1vZGVsQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5tb2RlbFZhbHVlLnNldCh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy51cGRhdGVFZGl0YWJsZUxhYmVsKCk7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgYWxsb3dNb2RlbENoYW5nZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXV0b0Rpc3BsYXlGaXJzdCAmJiAhdGhpcy5wbGFjZWhvbGRlcigpICYmICh0aGlzLm1vZGVsVmFsdWUoKSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMubW9kZWxWYWx1ZSgpID09PSBudWxsKSAmJiAhdGhpcy5lZGl0YWJsZSAmJiB0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLmxlbmd0aDtcbiAgICB9XG5cbiAgICBpc1NlbGVjdGVkT3B0aW9uRW1wdHkoKSB7XG4gICAgICAgIHJldHVybiBPYmplY3RVdGlscy5pc0VtcHR5KHRoaXMuc2VsZWN0ZWRPcHRpb24pO1xuICAgIH1cblxuICAgIGlzU2VsZWN0ZWQob3B0aW9uKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWRPcHRpb24ob3B0aW9uKSAmJiB0aGlzLmlzT3B0aW9uVmFsdWVFcXVhbHNNb2RlbFZhbHVlKG9wdGlvbik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc09wdGlvblZhbHVlRXF1YWxzTW9kZWxWYWx1ZShvcHRpb246IGFueSkge1xuICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMuZXF1YWxzKHRoaXMubW9kZWxWYWx1ZSgpLCB0aGlzLmdldE9wdGlvblZhbHVlKG9wdGlvbiksIHRoaXMuZXF1YWxpdHlLZXkoKSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAodGhpcy5lZGl0YWJsZSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVFZGl0YWJsZUxhYmVsKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVQbGFjZUhvbGRlckZvckZsb2F0aW5nTGFiZWwoKTtcbiAgICB9XG5cbiAgICB1cGRhdGVQbGFjZUhvbGRlckZvckZsb2F0aW5nTGFiZWwoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9wbGFjZWhvbGRlcigpICE9PSBudWxsICYmIHRoaXMuX3BsYWNlaG9sZGVyKCkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBvdmVyd3JpdGUgdGhlIHBsYWNlaG9sZGVyIGlmIGl0J3MgYWxyZWFkeSBzZXRcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXJlbnRFbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGlzSW5GbG9hdGluZ0xhYmVsID0gcGFyZW50RWxlbWVudD8uY2xhc3NMaXN0LmNvbnRhaW5zKCdjYXgtZmxvYXQtbGFiZWwnKTtcbiAgICAgICAgaWYgKHBhcmVudEVsZW1lbnQgJiYgaXNJbkZsb2F0aW5nTGFiZWwgJiYgIXRoaXMuc2VsZWN0ZWRPcHRpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gcGFyZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yKCdsYWJlbCcpO1xuICAgICAgICAgICAgaWYgKGxhYmVsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcGxhY2Vob2xkZXIuc2V0KGxhYmVsLnRleHRDb250ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZUVkaXRhYmxlTGFiZWwoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmVkaXRhYmxlSW5wdXRWaWV3Q2hpbGQpIHtcbiAgICAgICAgICAgIHRoaXMuZWRpdGFibGVJbnB1dFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdGhpcy5nZXRPcHRpb25MYWJlbCh0aGlzLnNlbGVjdGVkT3B0aW9uKSB8fCB0aGlzLm1vZGVsVmFsdWUoKSB8fCAnJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsZWFyRWRpdGFibGVMYWJlbCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZWRpdGFibGVJbnB1dFZpZXdDaGlsZCkge1xuICAgICAgICAgICAgdGhpcy5lZGl0YWJsZUlucHV0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldE9wdGlvbkluZGV4KGluZGV4LCBzY3JvbGxlck9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlydHVhbFNjcm9sbGVyRGlzYWJsZWQgPyBpbmRleCA6IHNjcm9sbGVyT3B0aW9ucyAmJiBzY3JvbGxlck9wdGlvbnMuZ2V0SXRlbU9wdGlvbnMoaW5kZXgpWydpbmRleCddO1xuICAgIH1cblxuICAgIGdldE9wdGlvbkxhYmVsKG9wdGlvbjogYW55KSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbkxhYmVsICE9PSB1bmRlZmluZWQgJiYgdGhpcy5vcHRpb25MYWJlbCAhPT0gbnVsbCA/IE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEob3B0aW9uLCB0aGlzLm9wdGlvbkxhYmVsKSA6IG9wdGlvbiAmJiBvcHRpb24ubGFiZWwgIT09IHVuZGVmaW5lZCA/IG9wdGlvbi5sYWJlbCA6IG9wdGlvbjtcbiAgICB9XG5cbiAgICBnZXRPcHRpb25WYWx1ZShvcHRpb246IGFueSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25WYWx1ZSAmJiB0aGlzLm9wdGlvblZhbHVlICE9PSBudWxsID8gT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShvcHRpb24sIHRoaXMub3B0aW9uVmFsdWUpIDogIXRoaXMub3B0aW9uTGFiZWwgJiYgb3B0aW9uICYmIG9wdGlvbi52YWx1ZSAhPT0gdW5kZWZpbmVkID8gb3B0aW9uLnZhbHVlIDogb3B0aW9uO1xuICAgIH1cblxuICAgIGlzT3B0aW9uRGlzYWJsZWQob3B0aW9uOiBhbnkpIHtcbiAgICAgICAgaWYgKHRoaXMuZ2V0T3B0aW9uVmFsdWUodGhpcy5tb2RlbFZhbHVlKCkpID09PSB0aGlzLmdldE9wdGlvblZhbHVlKG9wdGlvbikgfHwgKHRoaXMuZ2V0T3B0aW9uTGFiZWwodGhpcy5tb2RlbFZhbHVlKCkgPT09IHRoaXMuZ2V0T3B0aW9uTGFiZWwob3B0aW9uKSkgJiYgb3B0aW9uLmRpc2FibGVkID09PSBmYWxzZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbkRpc2FibGVkID8gT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShvcHRpb24sIHRoaXMub3B0aW9uRGlzYWJsZWQpIDogb3B0aW9uICYmIG9wdGlvbi5kaXNhYmxlZCAhPT0gdW5kZWZpbmVkID8gb3B0aW9uLmRpc2FibGVkIDogZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRPcHRpb25Hcm91cExhYmVsKG9wdGlvbkdyb3VwOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uR3JvdXBMYWJlbCAhPT0gdW5kZWZpbmVkICYmIHRoaXMub3B0aW9uR3JvdXBMYWJlbCAhPT0gbnVsbCA/IE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEob3B0aW9uR3JvdXAsIHRoaXMub3B0aW9uR3JvdXBMYWJlbCkgOiBvcHRpb25Hcm91cCAmJiBvcHRpb25Hcm91cC5sYWJlbCAhPT0gdW5kZWZpbmVkID8gb3B0aW9uR3JvdXAubGFiZWwgOiBvcHRpb25Hcm91cDtcbiAgICB9XG5cbiAgICBnZXRPcHRpb25Hcm91cENoaWxkcmVuKG9wdGlvbkdyb3VwOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uR3JvdXBDaGlsZHJlbiAhPT0gdW5kZWZpbmVkICYmIHRoaXMub3B0aW9uR3JvdXBDaGlsZHJlbiAhPT0gbnVsbCA/IE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEob3B0aW9uR3JvdXAsIHRoaXMub3B0aW9uR3JvdXBDaGlsZHJlbikgOiBvcHRpb25Hcm91cC5pdGVtcztcbiAgICB9XG5cbiAgICBnZXRBcmlhUG9zSW5zZXQoaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICh0aGlzLm9wdGlvbkdyb3VwTGFiZWxcbiAgICAgICAgICAgICAgICA/IGluZGV4IC1cbiAgICAgICAgICAgICAgICAgIHRoaXMudmlzaWJsZU9wdGlvbnMoKVxuICAgICAgICAgICAgICAgICAgICAgIC5zbGljZSgwLCBpbmRleClcbiAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChvcHRpb24pID0+IHRoaXMuaXNPcHRpb25Hcm91cChvcHRpb24pKS5sZW5ndGhcbiAgICAgICAgICAgICAgICA6IGluZGV4KSArIDFcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXQgYXJpYVNldFNpemUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpc2libGVPcHRpb25zKCkuZmlsdGVyKChvcHRpb24pID0+ICF0aGlzLmlzT3B0aW9uR3JvdXAob3B0aW9uKSkubGVuZ3RoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSBvbiBmaWx0ZXIgcmVzZXQuXG4gICAgICogQGdyb3VwIE1ldGhvZFxuICAgICAqL1xuICAgIHB1YmxpYyByZXNldEZpbHRlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZmlsdGVyVmFsdWUuc2V0KG51bGwpO1xuXG4gICAgICAgIGlmICh0aGlzLmZpbHRlclZpZXdDaGlsZCAmJiB0aGlzLmZpbHRlclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbk1vZGVsVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIHNldERpc2FibGVkU3RhdGUodmFsOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSB2YWw7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgb25Db250YWluZXJDbGljayhldmVudDogYW55KSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkgfHwgdGhpcy5sb2FkaW5nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZvY3VzSW5wdXRWaWV3Q2hpbGQ/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuXG4gICAgICAgIGlmIChldmVudC50YXJnZXQudGFnTmFtZSA9PT0gJ0lOUFVUJyB8fCBldmVudC50YXJnZXQuZ2V0QXR0cmlidXRlKCdkYXRhLXBjLXNlY3Rpb24nKSA9PT0gJ2NsZWFyaWNvbicgfHwgZXZlbnQudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLXBjLXNlY3Rpb249XCJjbGVhcmljb25cIl0nKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLm92ZXJsYXlWaWV3Q2hpbGQgfHwgIXRoaXMub3ZlcmxheVZpZXdDaGlsZC5lbC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVZpc2libGUgPyB0aGlzLmhpZGUodHJ1ZSkgOiB0aGlzLnNob3codHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vbkNsaWNrLmVtaXQoZXZlbnQpO1xuICAgICAgICB0aGlzLmNsaWNrZWQuc2V0KHRydWUpO1xuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBpc0VtcHR5KCkge1xuICAgICAgICByZXR1cm4gIXRoaXMuX29wdGlvbnMoKSB8fCAodGhpcy52aXNpYmxlT3B0aW9ucygpICYmIHRoaXMudmlzaWJsZU9wdGlvbnMoKS5sZW5ndGggPT09IDApO1xuICAgIH1cblxuICAgIG9uRWRpdGFibGVJbnB1dChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG4gICAgICAgIHRoaXMuc2VhcmNoVmFsdWUgPSAnJztcbiAgICAgICAgY29uc3QgbWF0Y2hlZCA9IHRoaXMuc2VhcmNoT3B0aW9ucyhldmVudCwgdmFsdWUpO1xuICAgICAgICAhbWF0Y2hlZCAmJiB0aGlzLmZvY3VzZWRPcHRpb25JbmRleC5zZXQoLTEpO1xuXG4gICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMudXBkYXRlTW9kZWwodmFsdWUsIGV2ZW50KTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgdmFsdWU6IHZhbHVlIH0pO1xuICAgICAgICB9LCAxKTtcblxuICAgICAgICAhdGhpcy5vdmVybGF5VmlzaWJsZSAmJiBPYmplY3RVdGlscy5pc05vdEVtcHR5KHZhbHVlKSAmJiB0aGlzLnNob3coKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRGlzcGxheXMgdGhlIHBhbmVsLlxuICAgICAqIEBncm91cCBNZXRob2RcbiAgICAgKi9cbiAgICBwdWJsaWMgc2hvdyhpc0ZvY3VzPykge1xuICAgICAgICB0aGlzLm92ZXJsYXlWaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgZm9jdXNlZE9wdGlvbkluZGV4ID0gdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXgoKSAhPT0gLTEgPyB0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpIDogdGhpcy5hdXRvT3B0aW9uRm9jdXMgPyB0aGlzLmZpbmRGaXJzdEZvY3VzZWRPcHRpb25JbmRleCgpIDogdGhpcy5lZGl0YWJsZSA/IC0xIDogdGhpcy5maW5kU2VsZWN0ZWRPcHRpb25JbmRleCgpO1xuICAgICAgICB0aGlzLmZvY3VzZWRPcHRpb25JbmRleC5zZXQoZm9jdXNlZE9wdGlvbkluZGV4KTtcblxuICAgICAgICBpZiAoaXNGb2N1cykge1xuICAgICAgICAgICAgRG9tSGFuZGxlci5mb2N1cyh0aGlzLmZvY3VzSW5wdXRWaWV3Q2hpbGQ/Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBvbk92ZXJsYXlBbmltYXRpb25TdGFydChldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LnRvU3RhdGUgPT09ICd2aXNpYmxlJykge1xuICAgICAgICAgICAgdGhpcy5pdGVtc1dyYXBwZXIgPSBEb21IYW5kbGVyLmZpbmRTaW5nbGUodGhpcy5vdmVybGF5Vmlld0NoaWxkPy5vdmVybGF5Vmlld0NoaWxkPy5uYXRpdmVFbGVtZW50LCB0aGlzLnZpcnR1YWxTY3JvbGwgPyAnLmNheC1zY3JvbGxlcicgOiAnLmNheC1kcm9wZG93bi1pdGVtcy13cmFwcGVyJyk7XG4gICAgICAgICAgICB0aGlzLnZpcnR1YWxTY3JvbGwgJiYgdGhpcy5zY3JvbGxlcj8uc2V0Q29udGVudEVsKHRoaXMuaXRlbXNWaWV3Q2hpbGQ/Lm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy52aXJ0dWFsU2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSB0aGlzLm1vZGVsVmFsdWUoKSA/IHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCkgOiAtMTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbGVyPy5zY3JvbGxUb0luZGV4KHNlbGVjdGVkSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkTGlzdEl0ZW0gPSBEb21IYW5kbGVyLmZpbmRTaW5nbGUodGhpcy5pdGVtc1dyYXBwZXIsICcuY2F4LWRyb3Bkb3duLWl0ZW0uY2F4LWhpZ2hsaWdodCcpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZExpc3RJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZExpc3RJdGVtLnNjcm9sbEludG9WaWV3KHsgYmxvY2s6ICduZWFyZXN0JywgaW5saW5lOiAnbmVhcmVzdCcgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFJlbW92ZSBhdXRvLWZvY3VzIG9uIGZpbHRlclxuICAgICAgICAgICAgaWYgKHRoaXMuZmlsdGVyVmlld0NoaWxkICYmIHRoaXMuZmlsdGVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByZXZlbnRNb2RlbFRvdWNoZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm9uU2hvdy5lbWl0KGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQudG9TdGF0ZSA9PT0gJ3ZvaWQnKSB7XG4gICAgICAgICAgICB0aGlzLml0ZW1zV3JhcHBlciA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLm9uTW9kZWxUb3VjaGVkKCk7XG4gICAgICAgICAgICB0aGlzLm9uSGlkZS5lbWl0KGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBIaWRlcyB0aGUgcGFuZWwuXG4gICAgICogQGdyb3VwIE1ldGhvZFxuICAgICAqL1xuICAgIHB1YmxpYyBoaWRlKGlzRm9jdXM/KSB7XG4gICAgICAgIHRoaXMub3ZlcmxheVZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXguc2V0KC0xKTtcbiAgICAgICAgdGhpcy5jbGlja2VkLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMuc2VhcmNoVmFsdWUgPSAnJztcblxuICAgICAgICBpZiAodGhpcy5vdmVybGF5T3B0aW9ucz8ubW9kZSA9PT0gJ21vZGFsJykge1xuICAgICAgICAgICAgRG9tSGFuZGxlci51bmJsb2NrQm9keVNjcm9sbCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmZpbHRlciAmJiB0aGlzLnJlc2V0RmlsdGVyT25IaWRlKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0RmlsdGVyKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzRm9jdXMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmZvY3VzSW5wdXRWaWV3Q2hpbGQpIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgRG9tSGFuZGxlci5mb2N1cyh0aGlzLmZvY3VzSW5wdXRWaWV3Q2hpbGQ/Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuZWRpdGFibGUgJiYgdGhpcy5lZGl0YWJsZUlucHV0Vmlld0NoaWxkKSB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIERvbUhhbmRsZXIuZm9jdXModGhpcy5lZGl0YWJsZUlucHV0Vmlld0NoaWxkPy5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIG9uSW5wdXRGb2N1cyhldmVudDogRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIC8vIEZvciBTY3JlZW5SZWFkZXJzXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZvY3VzZWQgPSB0cnVlO1xuICAgICAgICBjb25zdCBmb2N1c2VkT3B0aW9uSW5kZXggPSB0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpICE9PSAtMSA/IHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCkgOiB0aGlzLm92ZXJsYXlWaXNpYmxlICYmIHRoaXMuYXV0b09wdGlvbkZvY3VzID8gdGhpcy5maW5kRmlyc3RGb2N1c2VkT3B0aW9uSW5kZXgoKSA6IC0xO1xuICAgICAgICB0aGlzLmZvY3VzZWRPcHRpb25JbmRleC5zZXQoZm9jdXNlZE9wdGlvbkluZGV4KTtcbiAgICAgICAgdGhpcy5vdmVybGF5VmlzaWJsZSAmJiB0aGlzLnNjcm9sbEluVmlldyh0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpKTtcblxuICAgICAgICB0aGlzLm9uRm9jdXMuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgb25JbnB1dEJsdXIoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLm9uQmx1ci5lbWl0KGV2ZW50KTtcblxuICAgICAgICBpZiAoIXRoaXMucHJldmVudE1vZGVsVG91Y2hlZCkge1xuICAgICAgICAgICAgdGhpcy5vbk1vZGVsVG91Y2hlZCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucHJldmVudE1vZGVsVG91Y2hlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIG9uTW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBzZWFyY2g6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSB8fCB0aGlzLmxvYWRpbmcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAoZXZlbnQuY29kZSkge1xuICAgICAgICAgICAgLy9kb3duXG4gICAgICAgICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICAgICAgICAgIHRoaXMub25BcnJvd0Rvd25LZXkoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvL3VwXG4gICAgICAgICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uQXJyb3dVcEtleShldmVudCwgdGhpcy5lZGl0YWJsZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uQXJyb3dMZWZ0S2V5KGV2ZW50LCB0aGlzLmVkaXRhYmxlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnRGVsZXRlJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uRGVsZXRlS2V5KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnSG9tZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkhvbWVLZXkoZXZlbnQsIHRoaXMuZWRpdGFibGUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdFbmQnOlxuICAgICAgICAgICAgICAgIHRoaXMub25FbmRLZXkoZXZlbnQsIHRoaXMuZWRpdGFibGUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdQYWdlRG93bic6XG4gICAgICAgICAgICAgICAgdGhpcy5vblBhZ2VEb3duS2V5KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnUGFnZVVwJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uUGFnZVVwS2V5KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgLy9zcGFjZVxuICAgICAgICAgICAgY2FzZSAnU3BhY2UnOlxuICAgICAgICAgICAgICAgIHRoaXMub25TcGFjZUtleShldmVudCwgc2VhcmNoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgLy9lbnRlclxuICAgICAgICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICAgICAgY2FzZSAnTnVtcGFkRW50ZXInOlxuICAgICAgICAgICAgICAgIHRoaXMub25FbnRlcktleShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vZXNjYXBlIGFuZCB0YWJcbiAgICAgICAgICAgIGNhc2UgJ0VzY2FwZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkVzY2FwZUtleShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ1RhYic6XG4gICAgICAgICAgICAgICAgdGhpcy5vblRhYktleShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkJhY2tzcGFjZUtleShldmVudCwgdGhpcy5lZGl0YWJsZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ1NoaWZ0TGVmdCc6XG4gICAgICAgICAgICBjYXNlICdTaGlmdFJpZ2h0JzpcbiAgICAgICAgICAgICAgICAvL05PT1BcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBpZiAoIWV2ZW50Lm1ldGFLZXkgJiYgT2JqZWN0VXRpbHMuaXNQcmludGFibGVDaGFyYWN0ZXIoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAhdGhpcy5vdmVybGF5VmlzaWJsZSAmJiB0aGlzLmF1dG9TaG93UGFuZWxPblByaW50YWJsZUNoYXJhY3RlcktleURvd24gJiYgdGhpcy5zaG93KCk7XG4gICAgICAgICAgICAgICAgICAgICF0aGlzLmVkaXRhYmxlICYmIHRoaXMuc2VhcmNoT3B0aW9ucyhldmVudCwgZXZlbnQua2V5KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2xpY2tlZC5zZXQoZmFsc2UpO1xuICAgIH1cblxuICAgIG9uRmlsdGVyS2V5RG93bihldmVudCkge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkFycm93RG93bktleShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgICAgIHRoaXMub25BcnJvd1VwS2V5KGV2ZW50LCB0cnVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICAgICAgICAgIHRoaXMub25BcnJvd0xlZnRLZXkoZXZlbnQsIHRydWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdIb21lJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uSG9tZUtleShldmVudCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0VuZCc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkVuZEtleShldmVudCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgICAgIGNhc2UgJ051bXBhZEVudGVyJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uRW50ZXJLZXkoZXZlbnQsIHRydWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdFc2NhcGUnOlxuICAgICAgICAgICAgICAgIHRoaXMub25Fc2NhcGVLZXkoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdUYWInOlxuICAgICAgICAgICAgICAgIHRoaXMub25UYWJLZXkoZXZlbnQsIHRydWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25GaWx0ZXJCbHVyKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4LnNldCgtMSk7XG4gICAgfVxuXG4gICAgb25BcnJvd0Rvd25LZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLm92ZXJsYXlWaXNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnNob3coKTtcbiAgICAgICAgICAgIHRoaXMuZWRpdGFibGUgJiYgdGhpcy5jaGFuZ2VGb2N1c2VkT3B0aW9uSW5kZXgoZXZlbnQsIHRoaXMuZmluZFNlbGVjdGVkT3B0aW9uSW5kZXgoKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBvcHRpb25JbmRleCA9IHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCkgIT09IC0xID8gdGhpcy5maW5kTmV4dE9wdGlvbkluZGV4KHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCkpIDogdGhpcy5jbGlja2VkKCkgPyB0aGlzLmZpbmRGaXJzdE9wdGlvbkluZGV4KCkgOiB0aGlzLmZpbmRGaXJzdEZvY3VzZWRPcHRpb25JbmRleCgpO1xuXG4gICAgICAgICAgICB0aGlzLmNoYW5nZUZvY3VzZWRPcHRpb25JbmRleChldmVudCwgb3B0aW9uSW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGNvbnN0IG9wdGlvbkluZGV4ID0gdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXgoKSAhPT0gLTEgPyB0aGlzLmZpbmROZXh0T3B0aW9uSW5kZXgodGhpcy5mb2N1c2VkT3B0aW9uSW5kZXgoKSkgOiB0aGlzLmZpbmRGaXJzdEZvY3VzZWRPcHRpb25JbmRleCgpO1xuICAgICAgICAvLyB0aGlzLmNoYW5nZUZvY3VzZWRPcHRpb25JbmRleChldmVudCwgb3B0aW9uSW5kZXgpO1xuXG4gICAgICAgIC8vICF0aGlzLm92ZXJsYXlWaXNpYmxlICYmIHRoaXMuc2hvdygpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICBjaGFuZ2VGb2N1c2VkT3B0aW9uSW5kZXgoZXZlbnQsIGluZGV4KSB7XG4gICAgICAgIGlmICh0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpICE9PSBpbmRleCkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXguc2V0KGluZGV4KTtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsSW5WaWV3KCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdE9uRm9jdXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBvcHRpb24gPSB0aGlzLnZpc2libGVPcHRpb25zKClbaW5kZXhdO1xuICAgICAgICAgICAgICAgIHRoaXMub25PcHRpb25TZWxlY3QoZXZlbnQsIG9wdGlvbiwgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IHZpcnR1YWxTY3JvbGxlckRpc2FibGVkKCkge1xuICAgICAgICByZXR1cm4gIXRoaXMudmlydHVhbFNjcm9sbDtcbiAgICB9XG5cbiAgICBzY3JvbGxJblZpZXcoaW5kZXggPSAtMSkge1xuICAgICAgICBjb25zdCBpZCA9IGluZGV4ICE9PSAtMSA/IGAke3RoaXMuaWR9XyR7aW5kZXh9YCA6IHRoaXMuZm9jdXNlZE9wdGlvbklkO1xuXG4gICAgICAgIGlmICh0aGlzLml0ZW1zVmlld0NoaWxkICYmIHRoaXMuaXRlbXNWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IERvbUhhbmRsZXIuZmluZFNpbmdsZSh0aGlzLml0ZW1zVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQsIGBsaVtpZD1cIiR7aWR9XCJdYCk7XG4gICAgICAgICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcgJiYgZWxlbWVudC5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiAnbmVhcmVzdCcsIGlubGluZTogJ25lYXJlc3QnIH0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy52aXJ0dWFsU2Nyb2xsZXJEaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpcnR1YWxTY3JvbGwgJiYgdGhpcy5zY3JvbGxlcj8uc2Nyb2xsVG9JbmRleChpbmRleCAhPT0gLTEgPyBpbmRleCA6IHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCkpO1xuICAgICAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFzU2VsZWN0ZWRPcHRpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZGVsVmFsdWUoKSAhPT0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlzVmFsaWRTZWxlY3RlZE9wdGlvbihvcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZE9wdGlvbihvcHRpb24pICYmIHRoaXMuaXNTZWxlY3RlZChvcHRpb24pO1xuICAgIH1cblxuICAgIGVxdWFsaXR5S2V5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25WYWx1ZSA/IG51bGwgOiB0aGlzLmRhdGFLZXk7XG4gICAgfVxuXG4gICAgZmluZEZpcnN0Rm9jdXNlZE9wdGlvbkluZGV4KCkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gdGhpcy5maW5kU2VsZWN0ZWRPcHRpb25JbmRleCgpO1xuICAgICAgICByZXR1cm4gc2VsZWN0ZWRJbmRleCA8IDAgPyB0aGlzLmZpbmRGaXJzdE9wdGlvbkluZGV4KCkgOiBzZWxlY3RlZEluZGV4O1xuICAgIH1cblxuICAgIGZpbmRGaXJzdE9wdGlvbkluZGV4KCkge1xuICAgICAgICByZXR1cm4gdGhpcy52aXNpYmxlT3B0aW9ucygpLmZpbmRJbmRleCgob3B0aW9uKSA9PiB0aGlzLmlzVmFsaWRPcHRpb24ob3B0aW9uKSk7XG4gICAgfVxuXG4gICAgZmluZFNlbGVjdGVkT3B0aW9uSW5kZXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhc1NlbGVjdGVkT3B0aW9uKCkgPyB0aGlzLnZpc2libGVPcHRpb25zKCkuZmluZEluZGV4KChvcHRpb24pID0+IHRoaXMuaXNWYWxpZFNlbGVjdGVkT3B0aW9uKG9wdGlvbikpIDogLTE7XG4gICAgfVxuXG4gICAgZmluZE5leHRPcHRpb25JbmRleChpbmRleCkge1xuICAgICAgICBjb25zdCBtYXRjaGVkT3B0aW9uSW5kZXggPVxuICAgICAgICAgICAgaW5kZXggPCB0aGlzLnZpc2libGVPcHRpb25zKCkubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgID8gdGhpcy52aXNpYmxlT3B0aW9ucygpXG4gICAgICAgICAgICAgICAgICAgICAgLnNsaWNlKGluZGV4ICsgMSlcbiAgICAgICAgICAgICAgICAgICAgICAuZmluZEluZGV4KChvcHRpb24pID0+IHRoaXMuaXNWYWxpZE9wdGlvbihvcHRpb24pKVxuICAgICAgICAgICAgICAgIDogLTE7XG4gICAgICAgIHJldHVybiBtYXRjaGVkT3B0aW9uSW5kZXggPiAtMSA/IG1hdGNoZWRPcHRpb25JbmRleCArIGluZGV4ICsgMSA6IGluZGV4O1xuICAgIH1cblxuICAgIGZpbmRQcmV2T3B0aW9uSW5kZXgoaW5kZXgpIHtcbiAgICAgICAgY29uc3QgbWF0Y2hlZE9wdGlvbkluZGV4ID0gaW5kZXggPiAwID8gT2JqZWN0VXRpbHMuZmluZExhc3RJbmRleCh0aGlzLnZpc2libGVPcHRpb25zKCkuc2xpY2UoMCwgaW5kZXgpLCAob3B0aW9uKSA9PiB0aGlzLmlzVmFsaWRPcHRpb24ob3B0aW9uKSkgOiAtMTtcblxuICAgICAgICByZXR1cm4gbWF0Y2hlZE9wdGlvbkluZGV4ID4gLTEgPyBtYXRjaGVkT3B0aW9uSW5kZXggOiBpbmRleDtcbiAgICB9XG5cbiAgICBmaW5kTGFzdE9wdGlvbkluZGV4KCkge1xuICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMuZmluZExhc3RJbmRleCh0aGlzLnZpc2libGVPcHRpb25zKCksIChvcHRpb24pID0+IHRoaXMuaXNWYWxpZE9wdGlvbihvcHRpb24pKTtcbiAgICB9XG5cbiAgICBmaW5kTGFzdEZvY3VzZWRPcHRpb25JbmRleCgpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9IHRoaXMuZmluZFNlbGVjdGVkT3B0aW9uSW5kZXgoKTtcblxuICAgICAgICByZXR1cm4gc2VsZWN0ZWRJbmRleCA8IDAgPyB0aGlzLmZpbmRMYXN0T3B0aW9uSW5kZXgoKSA6IHNlbGVjdGVkSW5kZXg7XG4gICAgfVxuXG4gICAgaXNWYWxpZE9wdGlvbihvcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbiAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbiAhPT0gbnVsbCAmJiAhKHRoaXMuaXNPcHRpb25EaXNhYmxlZChvcHRpb24pIHx8IHRoaXMuaXNPcHRpb25Hcm91cChvcHRpb24pKTtcbiAgICB9XG5cbiAgICBpc09wdGlvbkdyb3VwKG9wdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25Hcm91cExhYmVsICE9PSB1bmRlZmluZWQgJiYgdGhpcy5vcHRpb25Hcm91cExhYmVsICE9PSBudWxsICYmIG9wdGlvbi5vcHRpb25Hcm91cCAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbi5vcHRpb25Hcm91cCAhPT0gbnVsbCAmJiBvcHRpb24uZ3JvdXA7XG4gICAgfVxuXG4gICAgb25BcnJvd1VwS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50LCBwcmVzc2VkSW5JbnB1dFRleHQ6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgICAgICBpZiAoZXZlbnQuYWx0S2V5ICYmICFwcmVzc2VkSW5JbnB1dFRleHQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbiA9IHRoaXMudmlzaWJsZU9wdGlvbnMoKVt0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpXTtcbiAgICAgICAgICAgICAgICB0aGlzLm9uT3B0aW9uU2VsZWN0KGV2ZW50LCBvcHRpb24pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlWaXNpYmxlICYmIHRoaXMuaGlkZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgb3B0aW9uSW5kZXggPSB0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpICE9PSAtMSA/IHRoaXMuZmluZFByZXZPcHRpb25JbmRleCh0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpKSA6IHRoaXMuY2xpY2tlZCgpID8gdGhpcy5maW5kTGFzdE9wdGlvbkluZGV4KCkgOiB0aGlzLmZpbmRMYXN0Rm9jdXNlZE9wdGlvbkluZGV4KCk7XG5cbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRm9jdXNlZE9wdGlvbkluZGV4KGV2ZW50LCBvcHRpb25JbmRleCk7XG5cbiAgICAgICAgICAgICF0aGlzLm92ZXJsYXlWaXNpYmxlICYmIHRoaXMuc2hvdygpO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIG9uQXJyb3dMZWZ0S2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50LCBwcmVzc2VkSW5JbnB1dFRleHQ6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgICAgICBwcmVzc2VkSW5JbnB1dFRleHQgJiYgdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXguc2V0KC0xKTtcbiAgICB9XG5cbiAgICBvbkRlbGV0ZUtleShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5zaG93Q2xlYXIpIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXIoZXZlbnQpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uSG9tZUtleShldmVudDogYW55LCBwcmVzc2VkSW5JbnB1dFRleHQ6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgICAgICBpZiAocHJlc3NlZEluSW5wdXRUZXh0KSB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC5jdXJyZW50VGFyZ2V0O1xuICAgICAgICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0LnNldFNlbGVjdGlvblJhbmdlKDAsIHRhcmdldC52YWx1ZS5sZW5ndGgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0YXJnZXQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMCk7XG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXguc2V0KC0xKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRm9jdXNlZE9wdGlvbkluZGV4KGV2ZW50LCB0aGlzLmZpbmRGaXJzdE9wdGlvbkluZGV4KCkpO1xuXG4gICAgICAgICAgICAhdGhpcy5vdmVybGF5VmlzaWJsZSAmJiB0aGlzLnNob3coKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25FbmRLZXkoZXZlbnQ6IGFueSwgcHJlc3NlZEluSW5wdXRUZXh0ID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKHByZXNzZWRJbklucHV0VGV4dCkge1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQuY3VycmVudFRhcmdldDtcblxuICAgICAgICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0LnNldFNlbGVjdGlvblJhbmdlKDAsIHRhcmdldC52YWx1ZS5sZW5ndGgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsZW4gPSB0YXJnZXQudmFsdWUubGVuZ3RoO1xuXG4gICAgICAgICAgICAgICAgdGFyZ2V0LnNldFNlbGVjdGlvblJhbmdlKGxlbiwgbGVuKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvY3VzZWRPcHRpb25JbmRleC5zZXQoLTEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VGb2N1c2VkT3B0aW9uSW5kZXgoZXZlbnQsIHRoaXMuZmluZExhc3RPcHRpb25JbmRleCgpKTtcblxuICAgICAgICAgICAgIXRoaXMub3ZlcmxheVZpc2libGUgJiYgdGhpcy5zaG93KCk7XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uUGFnZURvd25LZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5zY3JvbGxJblZpZXcodGhpcy52aXNpYmxlT3B0aW9ucygpLmxlbmd0aCAtIDEpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uUGFnZVVwS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIHRoaXMuc2Nyb2xsSW5WaWV3KDApO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uU3BhY2VLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHByZXNzZWRJbklucHV0VGV4dDogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgICAgICF0aGlzLmVkaXRhYmxlICYmICFwcmVzc2VkSW5JbnB1dFRleHQgJiYgdGhpcy5vbkVudGVyS2V5KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbkVudGVyS2V5KGV2ZW50LCBwcmVzc2VkSW5JbnB1dCA9IGZhbHNlKSB7XG4gICAgICAgIGlmICghdGhpcy5vdmVybGF5VmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXguc2V0KC0xKTtcbiAgICAgICAgICAgIHRoaXMub25BcnJvd0Rvd25LZXkoZXZlbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uID0gdGhpcy52aXNpYmxlT3B0aW9ucygpW3RoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCldO1xuICAgICAgICAgICAgICAgIHRoaXMub25PcHRpb25TZWxlY3QoZXZlbnQsIG9wdGlvbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICFwcmVzc2VkSW5JbnB1dCAmJiB0aGlzLmhpZGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25Fc2NhcGVLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5vdmVybGF5VmlzaWJsZSAmJiB0aGlzLmhpZGUodHJ1ZSk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25UYWJLZXkoZXZlbnQsIHByZXNzZWRJbklucHV0VGV4dCA9IGZhbHNlKSB7XG4gICAgICAgIGlmICghcHJlc3NlZEluSW5wdXRUZXh0KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5vdmVybGF5VmlzaWJsZSAmJiB0aGlzLmhhc0ZvY3VzYWJsZUVsZW1lbnRzKCkpIHtcbiAgICAgICAgICAgICAgICBEb21IYW5kbGVyLmZvY3VzKGV2ZW50LnNoaWZ0S2V5ID8gdGhpcy5sYXN0SGlkZGVuRm9jdXNhYmxlRWxlbWVudE9uT3ZlcmxheS5uYXRpdmVFbGVtZW50IDogdGhpcy5maXJzdEhpZGRlbkZvY3VzYWJsZUVsZW1lbnRPbk92ZXJsYXkubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCkgIT09IC0xICYmIHRoaXMub3ZlcmxheVZpc2libGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uID0gdGhpcy52aXNpYmxlT3B0aW9ucygpW3RoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCldO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uT3B0aW9uU2VsZWN0KGV2ZW50LCBvcHRpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJsYXlWaXNpYmxlICYmIHRoaXMuaGlkZSh0aGlzLmZpbHRlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgb25GaXJzdEhpZGRlbkZvY3VzKGV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGZvY3VzYWJsZUVsID0gZXZlbnQucmVsYXRlZFRhcmdldCA9PT0gdGhpcy5mb2N1c0lucHV0Vmlld0NoaWxkPy5uYXRpdmVFbGVtZW50ID8gRG9tSGFuZGxlci5nZXRGaXJzdEZvY3VzYWJsZUVsZW1lbnQodGhpcy5vdmVybGF5Vmlld0NoaWxkLmVsPy5uYXRpdmVFbGVtZW50LCAnOm5vdCguY2F4LWhpZGRlbi1mb2N1c2FibGUpJykgOiB0aGlzLmZvY3VzSW5wdXRWaWV3Q2hpbGQ/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIERvbUhhbmRsZXIuZm9jdXMoZm9jdXNhYmxlRWwpO1xuICAgIH1cblxuICAgIG9uTGFzdEhpZGRlbkZvY3VzKGV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGZvY3VzYWJsZUVsID1cbiAgICAgICAgICAgIGV2ZW50LnJlbGF0ZWRUYXJnZXQgPT09IHRoaXMuZm9jdXNJbnB1dFZpZXdDaGlsZD8ubmF0aXZlRWxlbWVudFxuICAgICAgICAgICAgICAgID8gRG9tSGFuZGxlci5nZXRMYXN0Rm9jdXNhYmxlRWxlbWVudCh0aGlzLm92ZXJsYXlWaWV3Q2hpbGQ/Lm92ZXJsYXlWaWV3Q2hpbGQ/Lm5hdGl2ZUVsZW1lbnQsICc6bm90KFtkYXRhLWNheC1oaWRkZW4tZm9jdXNhYmxlPVwidHJ1ZVwiXSknKVxuICAgICAgICAgICAgICAgIDogdGhpcy5mb2N1c0lucHV0Vmlld0NoaWxkPy5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIERvbUhhbmRsZXIuZm9jdXMoZm9jdXNhYmxlRWwpO1xuICAgIH1cblxuICAgIGhhc0ZvY3VzYWJsZUVsZW1lbnRzKCkge1xuICAgICAgICByZXR1cm4gRG9tSGFuZGxlci5nZXRGb2N1c2FibGVFbGVtZW50cyh0aGlzLm92ZXJsYXlWaWV3Q2hpbGQub3ZlcmxheVZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LCAnOm5vdChbZGF0YS1jYXgtaGlkZGVuLWZvY3VzYWJsZT1cInRydWVcIl0pOm5vdChbY2xhc3M9XCJjYXgtZHJvcGRvd24taXRlbXMtd3JhcHBlclwiXSknKS5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIG9uQmFja3NwYWNlS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50LCBwcmVzc2VkSW5JbnB1dFRleHQgPSBmYWxzZSkge1xuICAgICAgICBpZiAocHJlc3NlZEluSW5wdXRUZXh0KSB7XG4gICAgICAgICAgICAhdGhpcy5vdmVybGF5VmlzaWJsZSAmJiB0aGlzLnNob3coKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNlYXJjaEZpZWxkcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyQnk/LnNwbGl0KCcsJykgfHwgdGhpcy5maWx0ZXJGaWVsZHMgfHwgW3RoaXMub3B0aW9uTGFiZWxdO1xuICAgIH1cblxuICAgIHNlYXJjaE9wdGlvbnMoZXZlbnQsIGNoYXIpIHtcbiAgICAgICAgdGhpcy5zZWFyY2hWYWx1ZSA9ICh0aGlzLnNlYXJjaFZhbHVlIHx8ICcnKSArIGNoYXI7XG5cbiAgICAgICAgbGV0IG9wdGlvbkluZGV4ID0gLTE7XG4gICAgICAgIGxldCBtYXRjaGVkID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCkgIT09IC0xKSB7XG4gICAgICAgICAgICBvcHRpb25JbmRleCA9IHRoaXMudmlzaWJsZU9wdGlvbnMoKVxuICAgICAgICAgICAgICAgIC5zbGljZSh0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpKVxuICAgICAgICAgICAgICAgIC5maW5kSW5kZXgoKG9wdGlvbikgPT4gdGhpcy5pc09wdGlvbk1hdGNoZWQob3B0aW9uKSk7XG4gICAgICAgICAgICBvcHRpb25JbmRleCA9XG4gICAgICAgICAgICAgICAgb3B0aW9uSW5kZXggPT09IC0xXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy52aXNpYmxlT3B0aW9ucygpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5zbGljZSgwLCB0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAuZmluZEluZGV4KChvcHRpb24pID0+IHRoaXMuaXNPcHRpb25NYXRjaGVkKG9wdGlvbikpXG4gICAgICAgICAgICAgICAgICAgIDogb3B0aW9uSW5kZXggKyB0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3B0aW9uSW5kZXggPSB0aGlzLnZpc2libGVPcHRpb25zKCkuZmluZEluZGV4KChvcHRpb24pID0+IHRoaXMuaXNPcHRpb25NYXRjaGVkKG9wdGlvbikpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbkluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgbWF0Y2hlZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9uSW5kZXggPT09IC0xICYmIHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCkgPT09IC0xKSB7XG4gICAgICAgICAgICBvcHRpb25JbmRleCA9IHRoaXMuZmluZEZpcnN0Rm9jdXNlZE9wdGlvbkluZGV4KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9uSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZUZvY3VzZWRPcHRpb25JbmRleChldmVudCwgb3B0aW9uSW5kZXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoVGltZW91dCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2VhcmNoVGltZW91dCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlYXJjaFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoVmFsdWUgPSAnJztcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoVGltZW91dCA9IG51bGw7XG4gICAgICAgIH0sIDUwMCk7XG5cbiAgICAgICAgcmV0dXJuIG1hdGNoZWQ7XG4gICAgfVxuXG4gICAgaXNPcHRpb25NYXRjaGVkKG9wdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkT3B0aW9uKG9wdGlvbikgJiYgdGhpcy5nZXRPcHRpb25MYWJlbChvcHRpb24pLnRvU3RyaW5nKCkudG9Mb2NhbGVMb3dlckNhc2UodGhpcy5maWx0ZXJMb2NhbGUpLnN0YXJ0c1dpdGgodGhpcy5zZWFyY2hWYWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSh0aGlzLmZpbHRlckxvY2FsZSkpO1xuICAgIH1cblxuICAgIG9uRmlsdGVySW5wdXRDaGFuZ2UoZXZlbnQ6IEV2ZW50IHwgYW55KTogdm9pZCB7XG4gICAgICAgIGxldCB2YWx1ZTogc3RyaW5nID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcbiAgICAgICAgdGhpcy5fZmlsdGVyVmFsdWUuc2V0KHZhbHVlKTtcbiAgICAgICAgdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXguc2V0KC0xKTtcbiAgICAgICAgdGhpcy5vbkZpbHRlci5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIGZpbHRlcjogdGhpcy5fZmlsdGVyVmFsdWUoKSB9KTtcbiAgICAgICAgIXRoaXMudmlydHVhbFNjcm9sbGVyRGlzYWJsZWQgJiYgdGhpcy5zY3JvbGxlci5zY3JvbGxUb0luZGV4KDApO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVZpZXdDaGlsZC5hbGlnbk92ZXJsYXkoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgYXBwbHlGb2N1cygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZWRpdGFibGUpIERvbUhhbmRsZXIuZmluZFNpbmdsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICcuY2F4LWRyb3Bkb3duLWxhYmVsLmNheC1pbnB1dHRleHQnKS5mb2N1cygpO1xuICAgICAgICBlbHNlIERvbUhhbmRsZXIuZm9jdXModGhpcy5mb2N1c0lucHV0Vmlld0NoaWxkPy5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQXBwbGllcyBmb2N1cy5cbiAgICAgKiBAZ3JvdXAgTWV0aG9kXG4gICAgICovXG4gICAgcHVibGljIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFwcGx5Rm9jdXMoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2xlYXJzIHRoZSBtb2RlbC5cbiAgICAgKiBAZ3JvdXAgTWV0aG9kXG4gICAgICovXG4gICAgcHVibGljIGNsZWFyKGV2ZW50PzogRXZlbnQpIHtcbiAgICAgICAgdGhpcy51cGRhdGVNb2RlbChudWxsLCBldmVudCk7XG4gICAgICAgIHRoaXMuY2xlYXJFZGl0YWJsZUxhYmVsKCk7XG4gICAgICAgIHRoaXMub25Nb2RlbFRvdWNoZWQoKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIHZhbHVlOiB0aGlzLnZhbHVlIH0pO1xuICAgICAgICB0aGlzLm9uQ2xlYXIuZW1pdChldmVudCk7XG4gICAgICAgIHRoaXMucmVzZXRGaWx0ZXIoKTtcbiAgICB9XG59XG4iLCI8ZGl2IFtuZ0NsYXNzXT1cInsnY2F4LWRyb3Bkb3duLW1haW4tbGFiZWwnOiBsYWJlbFRleHR9XCI+XG4gICAgPGxhYmVsICpuZ0lmPVwibGFiZWxUZXh0XCIgW25nQ2xhc3NdPVwibGFiZWxUZXh0Q2xhc3NcIj57eyBsYWJlbFRleHQgfX08L2xhYmVsPlxuPC9kaXY+XG48ZGl2ICNjb250YWluZXIgW2F0dHIuaWRdPVwiaWRcIiBbbmdDbGFzc109XCJjb250YWluZXJDbGFzc1wiIChjbGljayk9XCJvbkNvbnRhaW5lckNsaWNrKCRldmVudClcIiBbbmdTdHlsZV09XCJzdHlsZVwiIFtjbGFzc109XCJzdHlsZUNsYXNzXCI+XG4gICAgPHNwYW5cbiAgICAgICAgI2ZvY3VzSW5wdXRcbiAgICAgICAgW25nQ2xhc3NdPVwiaW5wdXRDbGFzc1wiXG4gICAgICAgICpuZ0lmPVwiIWVkaXRhYmxlXCJcbiAgICAgICAgW2NheFRvb2x0aXBdPVwidG9vbHRpcFwiXG4gICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uXCJcbiAgICAgICAgW3Bvc2l0aW9uU3R5bGVdPVwidG9vbHRpcFBvc2l0aW9uU3R5bGVcIlxuICAgICAgICBbdG9vbHRpcFN0eWxlQ2xhc3NdPVwidG9vbHRpcFN0eWxlQ2xhc3NcIlxuICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW2F0dHIuaWRdPVwiaW5wdXRJZFwiXG4gICAgICAgIHJvbGU9XCJjb21ib2JveFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsIHx8IChsYWJlbCgpID09PSAnY2F4LWVtcHR5bGFiZWwnID8gdW5kZWZpbmVkIDogbGFiZWwoKSlcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cIidsaXN0Ym94J1wiXG4gICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwib3ZlcmxheVZpc2libGUgPz8gZmFsc2VcIlxuICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cIm92ZXJsYXlWaXNpYmxlID8gaWQgKyAnX2xpc3QnIDogbnVsbFwiXG4gICAgICAgIFthdHRyLnRhYmluZGV4XT1cIiFkaXNhYmxlZCA/IHRhYmluZGV4IDogLTFcIlxuICAgICAgICBjYXhBdXRvRm9jdXNcbiAgICAgICAgW2F1dG9mb2N1c109XCJhdXRvZm9jdXNcIlxuICAgICAgICBbYXR0ci5hcmlhLWFjdGl2ZWRlc2NlbmRhbnRdPVwiZm9jdXNlZCA/IGZvY3VzZWRPcHRpb25JZCA6IHVuZGVmaW5lZFwiXG4gICAgICAgIChmb2N1cyk9XCJvbklucHV0Rm9jdXMoJGV2ZW50KVwiXG4gICAgICAgIChibHVyKT1cIm9uSW5wdXRCbHVyKCRldmVudClcIlxuICAgICAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXG4gICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICBbYXR0ci5yZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNlbGVjdGVkSXRlbVRlbXBsYXRlOyBlbHNlIGRlZmF1bHRQbGFjZWhvbGRlclwiPnt7IGxhYmVsKCkgPT09ICdjYXgtZW1wdHlsYWJlbCcgPyAnJm5ic3A7JyA6IGxhYmVsKCkgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkSXRlbVRlbXBsYXRlICYmICFpc1NlbGVjdGVkT3B0aW9uRW1wdHkoKVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNlbGVjdGVkSXRlbVRlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBzZWxlY3RlZE9wdGlvbiB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFBsYWNlaG9sZGVyPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpc1NlbGVjdGVkT3B0aW9uRW1wdHkoKVwiPnt7IGxhYmVsKCkgPT09ICdjYXgtZW1wdHlsYWJlbCcgPyAnJm5ic3A7JyA6IGxhYmVsKCkgfX08L3NwYW4+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9zcGFuPlxuICAgIDxpbnB1dFxuICAgICAgICAqbmdJZj1cImVkaXRhYmxlXCJcbiAgICAgICAgI2VkaXRhYmxlSW5wdXRcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBbYXR0ci5pZF09XCJpbnB1dElkXCJcbiAgICAgICAgW2F0dHIubWF4bGVuZ3RoXT1cIm1heGxlbmd0aFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cImlucHV0Q2xhc3NcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBhcmlhLWhhc3BvcHVwPVwibGlzdGJveFwiXG4gICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cIm1vZGVsVmFsdWUoKSA9PT0gdW5kZWZpbmVkIHx8IG1vZGVsVmFsdWUoKSA9PT0gbnVsbCA/IHBsYWNlaG9sZGVyKCkgOiB1bmRlZmluZWRcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbCB8fCAobGFiZWwoKSA9PT0gJ2NheC1lbXB0eWxhYmVsJyA/IHVuZGVmaW5lZCA6IGxhYmVsKCkpXCJcbiAgICAgICAgKGlucHV0KT1cIm9uRWRpdGFibGVJbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuICAgICAgICBjYXhBdXRvRm9jdXNcbiAgICAgICAgW2F1dG9mb2N1c109XCJhdXRvZm9jdXNcIlxuICAgICAgICBbYXR0ci5hcmlhLWFjdGl2ZWRlc2NlbmRhbnRdPVwiZm9jdXNlZCA/IGZvY3VzZWRPcHRpb25JZCA6IHVuZGVmaW5lZFwiXG4gICAgICAgIChmb2N1cyk9XCJvbklucHV0Rm9jdXMoJGV2ZW50KVwiXG4gICAgICAgIChibHVyKT1cIm9uSW5wdXRCbHVyKCRldmVudClcIlxuICAgIC8+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzVmlzaWJsZUNsZWFySWNvblwiPlxuICAgICAgICA8VGltZXNJY29uIFtzdHlsZUNsYXNzXT1cIidjYXgtZHJvcGRvd24tY2xlYXItaWNvbidcIiAoY2xpY2spPVwiY2xlYXIoJGV2ZW50KVwiICpuZ0lmPVwiIWNsZWFySWNvblRlbXBsYXRlXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidjbGVhcmljb24nXCIgLz5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXgtZHJvcGRvd24tY2xlYXItaWNvblwiIChjbGljayk9XCJjbGVhcigkZXZlbnQpXCIgKm5nSWY9XCJjbGVhckljb25UZW1wbGF0ZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInY2xlYXJpY29uJ1wiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2xlYXJJY29uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3NwYW4+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY2F4LWRyb3Bkb3duLXRyaWdnZXJcIiByb2xlPVwiYnV0dG9uXCIgYXJpYS1sYWJlbD1cImRyb3Bkb3duIHRyaWdnZXJcIiAobW91c2Vkb3duKT1cIm9uTW91c2VEb3duKCRldmVudClcIiBhcmlhLWhhc3BvcHVwPVwibGlzdGJveFwiIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwib3ZlcmxheVZpc2libGUgPz8gZmFsc2VcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3RyaWdnZXInXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2FkaW5nOyBlbHNlIGVsc2VCbG9ja1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmdJY29uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibG9hZGluZ0ljb25UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWxvYWRpbmdJY29uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvYWRpbmdJY29uXCIgW25nQ2xhc3NdPVwiJ2NheC1kcm9wZG93bi10cmlnZ2VyLWljb24gcGktc3BpbiAnICsgbG9hZGluZ0ljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhbG9hZGluZ0ljb25cIiBbY2xhc3NdPVwiJ2NheC1kcm9wZG93bi10cmlnZ2VyLWljb24gcGkgcGktc3Bpbm5lciBwaS1zcGluJ1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI2Vsc2VCbG9jaz5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZHJvcGRvd25JY29uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNheC1kcm9wZG93bi10cmlnZ2VyLWljb25cIiAqbmdJZj1cImRyb3Bkb3duSWNvblwiIFtuZ0NsYXNzXT1cImRyb3Bkb3duSWNvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8IS0tIDxDaGV2cm9uRG93bkljb24gKm5nSWY9XCIhZHJvcGRvd25JY29uXCIgW3N0eWxlQ2xhc3NdPVwiJ2NheC1kcm9wZG93bi10cmlnZ2VyLWljb24nXCIgLz4gLS0+XG4gICAgICAgICAgICAgICAgPGkgKm5nSWY9XCIhZHJvcGRvd25JY29uXCIgY2xhc3M9XCJjYXggY2F4LWFsdC1hcnJvdy1kb3duXCI+PC9pPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRyb3Bkb3duSWNvblRlbXBsYXRlXCIgY2xhc3M9XCJjYXgtZHJvcGRvd24tdHJpZ2dlci1pY29uXCI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwiZHJvcGRvd25JY29uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuXG4gICAgPGNheC1vdmVybGF5XG4gICAgICAgICNvdmVybGF5XG4gICAgICAgIFsodmlzaWJsZSldPVwib3ZlcmxheVZpc2libGVcIlxuICAgICAgICBbb3B0aW9uc109XCJvdmVybGF5T3B0aW9uc1wiXG4gICAgICAgIFt0YXJnZXRdPVwiJ0BwYXJlbnQnXCJcbiAgICAgICAgW2FwcGVuZFRvXT1cImFwcGVuZFRvXCJcbiAgICAgICAgW2F1dG9aSW5kZXhdPVwiYXV0b1pJbmRleFwiXG4gICAgICAgIFtiYXNlWkluZGV4XT1cImJhc2VaSW5kZXhcIlxuICAgICAgICBbc2hvd1RyYW5zaXRpb25PcHRpb25zXT1cInNob3dUcmFuc2l0aW9uT3B0aW9uc1wiXG4gICAgICAgIFtoaWRlVHJhbnNpdGlvbk9wdGlvbnNdPVwiaGlkZVRyYW5zaXRpb25PcHRpb25zXCJcbiAgICAgICAgKG9uQW5pbWF0aW9uU3RhcnQpPVwib25PdmVybGF5QW5pbWF0aW9uU3RhcnQoJGV2ZW50KVwiXG4gICAgICAgIChvbkhpZGUpPVwiaGlkZSgpXCJcbiAgICA+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBjYXhUZW1wbGF0ZT1cImNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiJ2NheC1kcm9wZG93bi1wYW5lbCBjYXgtY29tcG9uZW50J1wiIFtuZ1N0eWxlXT1cInBhbmVsU3R5bGVcIiBbY2xhc3NdPVwicGFuZWxTdHlsZUNsYXNzXCI+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgI2ZpcnN0SGlkZGVuRm9jdXNhYmxlRWxcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2F4LWhpZGRlbi1hY2Nlc3NpYmxlIGNheC1oaWRkZW4tZm9jdXNhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgIChmb2N1cyk9XCJvbkZpcnN0SGlkZGVuRm9jdXMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtY2F4LWhpZGRlbi1hY2Nlc3NpYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWNheC1oaWRkZW4tZm9jdXNhYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNheC1kcm9wZG93bi1oZWFkZXJcIiAqbmdJZj1cImZpbHRlclwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlclRlbXBsYXRlOyBlbHNlIGJ1aWx0SW5GaWx0ZXJFbGVtZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsdGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgb3B0aW9uczogZmlsdGVyT3B0aW9ucyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2J1aWx0SW5GaWx0ZXJFbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNheC1kcm9wZG93bi1maWx0ZXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNmaWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwic2VhcmNoYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwiZmlsdGVyUGxhY2Vob2xkZXIgfHwgJ1NlYXJjaC4uLidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiX2ZpbHRlclZhbHVlKCkgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNheC1kcm9wZG93bi1maWx0ZXIgY2F4LWlucHV0dGV4dCBjYXgtY29tcG9uZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnY2F4LXZhcmlhbnQtZmlsbGVkJzogdmFyaWFudCA9PT0gJ2ZpbGxlZCcgfHwgY29uZmlnLmlucHV0U3R5bGUoKSA9PT0gJ2ZpbGxlZCcgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cImZpbHRlclBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1vd25zXT1cImlkICsgJ19saXN0J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJvbkZpbHRlcklucHV0Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFGaWx0ZXJMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtYWN0aXZlZGVzY2VuZGFudF09XCJmb2N1c2VkT3B0aW9uSWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbkZpbHRlcktleURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibHVyKT1cIm9uRmlsdGVyQmx1cigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTZWFyY2hJY29uICpuZ0lmPVwiIWZpbHRlckljb25UZW1wbGF0ZVwiIFtzdHlsZUNsYXNzXT1cIidjYXgtZHJvcGRvd24tZmlsdGVyLWljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpbHRlckljb25UZW1wbGF0ZVwiIGNsYXNzPVwiY2F4LWRyb3Bkb3duLWZpbHRlci1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cImZpbHRlckljb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiX2ZpbHRlclZhbHVlKClcIiBjbGFzcz1cImNheCBjYXgtY2xvc2UtY2lyY2xlIGNheC1kcm9wZG93bi1maWx0ZXItY2xlYXItaWNvblwiIChjbGljayk9XCJyZXNldEZpbHRlcigpXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNheC1kcm9wZG93bi1pdGVtcy13cmFwcGVyXCJcbiAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgJ21heC1oZWlnaHQnOiB2aXJ0dWFsU2Nyb2xsID8gJ2F1dG8nIDogc2Nyb2xsSGVpZ2h0IHx8ICdhdXRvJ1xuICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxjYXgtc2Nyb2xsZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidmlydHVhbFNjcm9sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAjc2Nyb2xsZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJ2aXNpYmxlT3B0aW9ucygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJ7IGhlaWdodDogc2Nyb2xsSGVpZ2h0IH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1TaXplXT1cInZpcnR1YWxTY3JvbGxJdGVtU2l6ZSB8fCBfaXRlbVNpemVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9TaXplXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhenldPVwibGF6eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25MYXp5TG9hZCk9XCJvbkxhenlMb2FkLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJ2aXJ0dWFsU2Nyb2xsT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjYXhUZW1wbGF0ZT1cImNvbnRlbnRcIiBsZXQtaXRlbXMgbGV0LXNjcm9sbGVyT3B0aW9ucz1cIm9wdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnVpbGRJbkl0ZW1zOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbXMsIG9wdGlvbnM6IHNjcm9sbGVyT3B0aW9ucyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRlclRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNheFRlbXBsYXRlPVwibG9hZGVyXCIgbGV0LXNjcm9sbGVyT3B0aW9ucz1cIm9wdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxvYWRlclRlbXBsYXRlOyBjb250ZXh0OiB7IG9wdGlvbnM6IHNjcm9sbGVyT3B0aW9ucyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2NheC1zY3JvbGxlcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF2aXJ0dWFsU2Nyb2xsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnVpbGRJbkl0ZW1zOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogdmlzaWJsZU9wdGlvbnMoKSwgb3B0aW9uczoge30gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2J1aWxkSW5JdGVtcyBsZXQtaXRlbXMgbGV0LXNjcm9sbGVyT3B0aW9ucz1cIm9wdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCAjaXRlbXMgW2F0dHIuaWRdPVwiaWQgKyAnX2xpc3QnXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJsaXN0TGFiZWxcIiBjbGFzcz1cImNheC1kcm9wZG93bi1pdGVtc1wiIFtuZ0NsYXNzXT1cInNjcm9sbGVyT3B0aW9ucy5jb250ZW50U3R5bGVDbGFzc1wiIFtuZ1N0eWxlXT1cInNjcm9sbGVyT3B0aW9ucy5jb250ZW50U3R5bGVcIiByb2xlPVwibGlzdGJveFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtb3B0aW9uIFtuZ0Zvck9mXT1cIml0ZW1zXCIgbGV0LWk9XCJpbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNPcHRpb25Hcm91cChvcHRpb24pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJjYXgtZHJvcGRvd24taXRlbS1ncm91cFwiIFthdHRyLmlkXT1cImlkICsgJ18nICsgZ2V0T3B0aW9uSW5kZXgoaSwgc2Nyb2xsZXJPcHRpb25zKVwiIFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiBzY3JvbGxlck9wdGlvbnMuaXRlbVNpemUgKyAncHgnIH1cIiByb2xlPVwib3B0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZ3JvdXBUZW1wbGF0ZVwiPnt7IGdldE9wdGlvbkdyb3VwTGFiZWwob3B0aW9uLm9wdGlvbkdyb3VwKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZ3JvdXBUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IG9wdGlvbi5vcHRpb25Hcm91cCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc09wdGlvbkdyb3VwKG9wdGlvbilcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjYXgtZHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImlkICsgJ18nICsgZ2V0T3B0aW9uSW5kZXgoaSwgc2Nyb2xsZXJPcHRpb25zKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbl09XCJvcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja21hcmtdPVwiY2hlY2ttYXJrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRdPVwiaXNTZWxlY3RlZChvcHRpb24pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiZ2V0T3B0aW9uTGFiZWwob3B0aW9uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzT3B0aW9uRGlzYWJsZWQob3B0aW9uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RlbXBsYXRlXT1cIml0ZW1UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZvY3VzZWRdPVwiZm9jdXNlZE9wdGlvbkluZGV4KCkgPT09IGdldE9wdGlvbkluZGV4KGksIHNjcm9sbGVyT3B0aW9ucylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcmlhUG9zSW5zZXRdPVwiZ2V0QXJpYVBvc0luc2V0KGdldE9wdGlvbkluZGV4KGksIHNjcm9sbGVyT3B0aW9ucykpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJpYVNldFNpemVdPVwiYXJpYVNldFNpemVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cIm9uT3B0aW9uU2VsZWN0KCRldmVudCwgb3B0aW9uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uTW91c2VFbnRlcik9XCJvbk9wdGlvbk1vdXNlRW50ZXIoJGV2ZW50LCBnZXRPcHRpb25JbmRleChpLCBzY3JvbGxlck9wdGlvbnMpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9jYXgtZHJvcGRvd25JdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImZpbHRlclZhbHVlICYmIGlzRW1wdHkoKVwiIGNsYXNzPVwiY2F4LWRyb3Bkb3duLWVtcHR5LW1lc3NhZ2VcIiBbbmdTdHlsZV09XCJ7IGhlaWdodDogc2Nyb2xsZXJPcHRpb25zLml0ZW1TaXplICsgJ3B4JyB9XCIgcm9sZT1cIm9wdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWVtcHR5RmlsdGVyVGVtcGxhdGUgJiYgIWVtcHR5VGVtcGxhdGU7IGVsc2UgZW1wdHlGaWx0ZXJcIj4ge3sgZW1wdHlGaWx0ZXJNZXNzYWdlTGFiZWwgfX0gPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgI2VtcHR5RmlsdGVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZW1wdHlGaWx0ZXJUZW1wbGF0ZSB8fCBlbXB0eVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCIhZmlsdGVyVmFsdWUgJiYgaXNFbXB0eSgpXCIgY2xhc3M9XCJjYXgtZHJvcGRvd24tZW1wdHktbWVzc2FnZVwiIFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiBzY3JvbGxlck9wdGlvbnMuaXRlbVNpemUgKyAncHgnIH1cIiByb2xlPVwib3B0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZW1wdHlUZW1wbGF0ZTsgZWxzZSBlbXB0eVwiPiB7eyBlbXB0eU1lc3NhZ2VMYWJlbCB9fSA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAjZW1wdHkgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbXB0eVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvb3RlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgI2xhc3RIaWRkZW5Gb2N1c2FibGVFbFxuICAgICAgICAgICAgICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXgtaGlkZGVuLWFjY2Vzc2libGUgY2F4LWhpZGRlbi1mb2N1c2FibGVcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uTGFzdEhpZGRlbkZvY3VzKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWNheC1oaWRkZW4tYWNjZXNzaWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1jYXgtaGlkZGVuLWZvY3VzYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9jYXgtb3ZlcmxheT5cbjwvZGl2PlxuIl19