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,1296 +0,0 @@
1
- import { CommonModule, DOCUMENT } from '@angular/common';
2
- import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, Inject, Input, Output, ViewChild, ViewEncapsulation, booleanAttribute, forwardRef, numberAttribute } from '@angular/core';
3
- import { NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';
4
- import { CaxTemplate } from 'cax-design-system/api';
5
- import { AutoFocusModule } from 'cax-design-system/autofocus';
6
- import { ButtonModule } from 'cax-design-system/button';
7
- import { DomHandler } from 'cax-design-system/dom';
8
- import { AngleDownIcon } from 'cax-design-system/icons/angledown';
9
- import { AngleUpIcon } from 'cax-design-system/icons/angleup';
10
- import { TimesIcon } from 'cax-design-system/icons/times';
11
- import { InputTextModule } from 'cax-design-system/inputtext';
12
- import * as i0 from "@angular/core";
13
- import * as i1 from "cax-design-system/api";
14
- import * as i2 from "@angular/common";
15
- import * as i3 from "cax-design-system/inputtext";
16
- import * as i4 from "cax-design-system/button";
17
- import * as i5 from "cax-design-system/autofocus";
18
- export const INPUTNUMBER_VALUE_ACCESSOR = {
19
- provide: NG_VALUE_ACCESSOR,
20
- useExisting: forwardRef(() => InputNumber),
21
- multi: true
22
- };
23
- /**
24
- * InputNumber is an input component to provide numerical input.
25
- * @group Components
26
- */
27
- export class InputNumber {
28
- document;
29
- el;
30
- cd;
31
- injector;
32
- config;
33
- /**
34
- * Displays spinner buttons.
35
- * @group Props
36
- */
37
- showButtons = false;
38
- /**
39
- * Whether to format the value.
40
- * @group Props
41
- */
42
- format = true;
43
- /**
44
- * Layout of the buttons, valid values are "stacked" (default), "horizontal" and "vertical".
45
- * @group Props
46
- */
47
- buttonLayout = 'stacked';
48
- /**
49
- * Identifier of the focus input to match a label defined for the component.
50
- * @group Props
51
- */
52
- inputId;
53
- /**
54
- * Style class of the component.
55
- * @group Props
56
- */
57
- styleClass;
58
- /**
59
- * Inline style of the component.
60
- * @group Props
61
- */
62
- style;
63
- /**
64
- * Advisory information to display on input.
65
- * @group Props
66
- */
67
- placeholder;
68
- /**
69
- * Size of the input field.
70
- * @group Props
71
- */
72
- size;
73
- /**
74
- * Maximum number of character allows in the input field.
75
- * @group Props
76
- */
77
- maxlength;
78
- /**
79
- * Specifies tab order of the element.
80
- * @group Props
81
- */
82
- tabindex;
83
- /**
84
- * Title text of the input text.
85
- * @group Props
86
- */
87
- title;
88
- /**
89
- * Specifies one or more IDs in the DOM that labels the input field.
90
- * @group Props
91
- */
92
- ariaLabelledBy;
93
- /**
94
- * Used to define a string that labels the input element.
95
- * @group Props
96
- */
97
- ariaLabel;
98
- /**
99
- * Used to indicate that user input is required on an element before a form can be submitted.
100
- * @group Props
101
- */
102
- ariaRequired;
103
- /**
104
- * Name of the input field.
105
- * @group Props
106
- */
107
- name;
108
- /**
109
- * Indicates that whether the input field is required.
110
- * @group Props
111
- */
112
- required;
113
- /**
114
- * Used to define a string that autocomplete attribute the current element.
115
- * @group Props
116
- */
117
- autocomplete;
118
- /**
119
- * Mininum boundary value.
120
- * @group Props
121
- */
122
- min;
123
- /**
124
- * Maximum boundary value.
125
- * @group Props
126
- */
127
- max;
128
- /**
129
- * Style class of the increment button.
130
- * @group Props
131
- */
132
- incrementButtonClass;
133
- /**
134
- * Style class of the decrement button.
135
- * @group Props
136
- */
137
- decrementButtonClass;
138
- /**
139
- * Style class of the increment button.
140
- * @group Props
141
- */
142
- incrementButtonIcon;
143
- /**
144
- * Style class of the decrement button.
145
- * @group Props
146
- */
147
- decrementButtonIcon;
148
- /**
149
- * When present, it specifies that an input field is read-only.
150
- * @group Props
151
- */
152
- readonly = false;
153
- /**
154
- * Step factor to increment/decrement the value.
155
- * @group Props
156
- */
157
- step = 1;
158
- /**
159
- * Determines whether the input field is empty.
160
- * @group Props
161
- */
162
- allowEmpty = true;
163
- /**
164
- * Locale to be used in formatting.
165
- * @group Props
166
- */
167
- locale;
168
- /**
169
- * The locale matching algorithm to use. Possible values are "lookup" and "best fit"; the default is "best fit". See Locale Negotiation for details.
170
- * @group Props
171
- */
172
- localeMatcher;
173
- /**
174
- * Defines the behavior of the component, valid values are "decimal" and "currency".
175
- * @group Props
176
- */
177
- mode = 'decimal';
178
- /**
179
- * The currency to use in currency formatting. Possible values are the ISO 4217 currency codes, such as "USD" for the US dollar, "EUR" for the euro, or "CNY" for the Chinese RMB. There is no default value; if the style is "currency", the currency property must be provided.
180
- * @group Props
181
- */
182
- currency;
183
- /**
184
- * How to display the currency in currency formatting. Possible values are "symbol" to use a localized currency symbol such as €, ü"code" to use the ISO currency code, "name" to use a localized currency name such as "dollar"; the default is "symbol".
185
- * @group Props
186
- */
187
- currencyDisplay;
188
- /**
189
- * Whether to use grouping separators, such as thousands separators or thousand/lakh/crore separators.
190
- * @group Props
191
- */
192
- useGrouping = true;
193
- /**
194
- * Specifies the input variant of the component.
195
- * @group Props
196
- */
197
- variant = 'outlined';
198
- /**
199
- * The minimum number of fraction digits to use. Possible values are from 0 to 20; the default for plain number and percent formatting is 0; the default for currency formatting is the number of minor unit digits provided by the ISO 4217 currency code list (2 if the list doesn't provide that information).
200
- * @group Props
201
- */
202
- minFractionDigits;
203
- /**
204
- * The maximum number of fraction digits to use. Possible values are from 0 to 20; the default for plain number formatting is the larger of minimumFractionDigits and 3; the default for currency formatting is the larger of minimumFractionDigits and the number of minor unit digits provided by the ISO 4217 currency code list (2 if the list doesn't provide that information).
205
- * @group Props
206
- */
207
- maxFractionDigits;
208
- /**
209
- * Icon class to show before the input value
210
- * @group Props
211
- */
212
- prefixIcon;
213
- /**
214
- * Text to display before the value.
215
- * @group Props
216
- */
217
- prefix;
218
- /**
219
- * Text to display after the value.
220
- * @group Props
221
- */
222
- suffix;
223
- /**
224
- * Inline style of the input field.
225
- * @group Props
226
- */
227
- inputStyle;
228
- /**
229
- * Style class of the input field.
230
- * @group Props
231
- */
232
- inputStyleClass;
233
- /**
234
- * When enabled, a clear icon is displayed to clear the value.
235
- * @group Props
236
- */
237
- showClear = false;
238
- /**
239
- * When present, it specifies that the component should automatically get focus on load.
240
- * @group Props
241
- */
242
- autofocus;
243
- /**
244
- * When present, it specifies that the element should be disabled.
245
- * @group Props
246
- */
247
- get disabled() {
248
- return this._disabled;
249
- }
250
- set disabled(disabled) {
251
- if (disabled)
252
- this.focused = false;
253
- this._disabled = disabled;
254
- if (this.timer)
255
- this.clearTimer();
256
- }
257
- /**
258
- * Callback to invoke on input.
259
- * @param {InputNumberInputEvent} event - Custom input event.
260
- * @group Emits
261
- */
262
- onInput = new EventEmitter();
263
- /**
264
- * Callback to invoke when the component receives focus.
265
- * @param {Event} event - Browser event.
266
- * @group Emits
267
- */
268
- onFocus = new EventEmitter();
269
- /**
270
- * Callback to invoke when the component loses focus.
271
- * @param {Event} event - Browser event.
272
- * @group Emits
273
- */
274
- onBlur = new EventEmitter();
275
- /**
276
- * Callback to invoke on input key press.
277
- * @param {KeyboardEvent} event - Keyboard event.
278
- * @group Emits
279
- */
280
- onKeyDown = new EventEmitter();
281
- /**
282
- * Callback to invoke when clear token is clicked.
283
- * @group Emits
284
- */
285
- onClear = new EventEmitter();
286
- input;
287
- templates;
288
- clearIconTemplate;
289
- incrementButtonIconTemplate;
290
- decrementButtonIconTemplate;
291
- value;
292
- onModelChange = () => { };
293
- onModelTouched = () => { };
294
- focused;
295
- initialized;
296
- groupChar = '';
297
- prefixChar = '';
298
- suffixChar = '';
299
- isSpecialChar;
300
- timer;
301
- lastValue;
302
- _numeral;
303
- numberFormat;
304
- _decimal;
305
- _decimalChar;
306
- _group;
307
- _minusSign;
308
- _currency;
309
- _prefix;
310
- _suffix;
311
- _index;
312
- _disabled;
313
- ngControl = null;
314
- constructor(document, el, cd, injector, config) {
315
- this.document = document;
316
- this.el = el;
317
- this.cd = cd;
318
- this.injector = injector;
319
- this.config = config;
320
- }
321
- ngOnChanges(simpleChange) {
322
- const props = ['locale', 'localeMatcher', 'mode', 'currency', 'currencyDisplay', 'useGrouping', 'minFractionDigits', 'maxFractionDigits', 'prefix', 'suffix'];
323
- if (props.some((p) => !!simpleChange[p])) {
324
- this.updateConstructParser();
325
- }
326
- }
327
- ngAfterContentInit() {
328
- this.templates.forEach((item) => {
329
- switch (item.getType()) {
330
- case 'clearicon':
331
- this.clearIconTemplate = item.template;
332
- break;
333
- case 'incrementbuttonicon':
334
- this.incrementButtonIconTemplate = item.template;
335
- break;
336
- case 'decrementbuttonicon':
337
- this.decrementButtonIconTemplate = item.template;
338
- break;
339
- }
340
- });
341
- }
342
- ngOnInit() {
343
- this.ngControl = this.injector.get(NgControl, null, { optional: true });
344
- this.constructParser();
345
- this.initialized = true;
346
- }
347
- getOptions() {
348
- return {
349
- localeMatcher: this.localeMatcher,
350
- style: this.mode,
351
- currency: this.currency,
352
- currencyDisplay: this.currencyDisplay,
353
- useGrouping: this.useGrouping,
354
- minimumFractionDigits: this.minFractionDigits ?? undefined,
355
- maximumFractionDigits: this.maxFractionDigits ?? undefined
356
- };
357
- }
358
- constructParser() {
359
- this.numberFormat = new Intl.NumberFormat(this.locale, this.getOptions());
360
- const numerals = [...new Intl.NumberFormat(this.locale, { useGrouping: false }).format(9876543210)].reverse();
361
- const index = new Map(numerals.map((d, i) => [d, i]));
362
- this._numeral = new RegExp(`[${numerals.join('')}]`, 'g');
363
- this._group = this.getGroupingExpression();
364
- this._minusSign = this.getMinusSignExpression();
365
- this._currency = this.getCurrencyExpression();
366
- this._decimal = this.getDecimalExpression();
367
- this._decimalChar = this.getDecimalChar();
368
- this._suffix = this.getSuffixExpression();
369
- this._prefix = this.getPrefixExpression();
370
- this._index = (d) => index.get(d);
371
- }
372
- updateConstructParser() {
373
- if (this.initialized) {
374
- this.constructParser();
375
- }
376
- }
377
- escapeRegExp(text) {
378
- return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
379
- }
380
- getDecimalExpression() {
381
- const decimalChar = this.getDecimalChar();
382
- return new RegExp(`[${decimalChar}]`, 'g');
383
- }
384
- getDecimalChar() {
385
- const formatter = new Intl.NumberFormat(this.locale, { ...this.getOptions(), useGrouping: false });
386
- return formatter
387
- .format(1.1)
388
- .replace(this._currency, '')
389
- .trim()
390
- .replace(this._numeral, '');
391
- }
392
- getGroupingExpression() {
393
- const formatter = new Intl.NumberFormat(this.locale, { useGrouping: true });
394
- this.groupChar = formatter.format(1000000).trim().replace(this._numeral, '').charAt(0);
395
- return new RegExp(`[${this.groupChar}]`, 'g');
396
- }
397
- getMinusSignExpression() {
398
- const formatter = new Intl.NumberFormat(this.locale, { useGrouping: false });
399
- return new RegExp(`[${formatter.format(-1).trim().replace(this._numeral, '')}]`, 'g');
400
- }
401
- getCurrencyExpression() {
402
- if (this.currency) {
403
- const formatter = new Intl.NumberFormat(this.locale, { style: 'currency', currency: this.currency, currencyDisplay: this.currencyDisplay, minimumFractionDigits: 0, maximumFractionDigits: 0 });
404
- return new RegExp(`[${formatter.format(1).replace(/\s/g, '').replace(this._numeral, '').replace(this._group, '')}]`, 'g');
405
- }
406
- return new RegExp(`[]`, 'g');
407
- }
408
- getPrefixExpression() {
409
- if (this.prefix) {
410
- this.prefixChar = this.prefix;
411
- }
412
- else {
413
- const formatter = new Intl.NumberFormat(this.locale, { style: this.mode, currency: this.currency, currencyDisplay: this.currencyDisplay });
414
- this.prefixChar = formatter.format(1).split('1')[0];
415
- }
416
- return new RegExp(`${this.escapeRegExp(this.prefixChar || '')}`, 'g');
417
- }
418
- getSuffixExpression() {
419
- if (this.suffix) {
420
- this.suffixChar = this.suffix;
421
- }
422
- else {
423
- const formatter = new Intl.NumberFormat(this.locale, { style: this.mode, currency: this.currency, currencyDisplay: this.currencyDisplay, minimumFractionDigits: 0, maximumFractionDigits: 0 });
424
- this.suffixChar = formatter.format(1).split('1')[1];
425
- }
426
- return new RegExp(`${this.escapeRegExp(this.suffixChar || '')}`, 'g');
427
- }
428
- get isBlurUpdateOnMode() {
429
- return this.ngControl?.control?.updateOn === 'blur';
430
- }
431
- formatValue(value) {
432
- if (value != null) {
433
- if (value === '-') {
434
- return value;
435
- }
436
- if (this.format) {
437
- let formatter = new Intl.NumberFormat(this.locale, this.getOptions());
438
- let formattedValue = formatter.format(value);
439
- if (this.prefix && value != this.prefix) {
440
- formattedValue = this.prefix + ' ' + formattedValue;
441
- }
442
- if (this.suffix && value != this.suffix) {
443
- formattedValue = formattedValue + this.suffix;
444
- }
445
- return formattedValue;
446
- }
447
- return value.toString();
448
- }
449
- return '';
450
- }
451
- parseValue(text) {
452
- const suffixRegex = new RegExp(this._suffix, '');
453
- const prefixRegex = new RegExp(this._prefix, '');
454
- const currencyRegex = new RegExp(this._currency, '');
455
- let filteredText = text
456
- .replace(suffixRegex, '')
457
- .replace(prefixRegex, '')
458
- .trim()
459
- .replace(/\s/g, '')
460
- .replace(currencyRegex, '')
461
- .replace(this._group, '')
462
- .replace(this._minusSign, '-')
463
- .replace(this._decimal, '.')
464
- .replace(this._numeral, this._index);
465
- if (filteredText) {
466
- if (filteredText === '-')
467
- // Minus sign
468
- return filteredText;
469
- let parsedValue = +filteredText;
470
- return isNaN(parsedValue) ? null : parsedValue;
471
- }
472
- return null;
473
- }
474
- repeat(event, interval, dir) {
475
- if (this.readonly) {
476
- return;
477
- }
478
- let i = interval || 500;
479
- this.clearTimer();
480
- this.timer = setTimeout(() => {
481
- this.repeat(event, 40, dir);
482
- }, i);
483
- this.spin(event, dir);
484
- }
485
- spin(event, dir) {
486
- let step = this.step * dir;
487
- let currentValue = this.parseValue(this.input?.nativeElement.value) || 0;
488
- let newValue = this.validateValue(currentValue + step);
489
- if (this.maxlength && this.maxlength < this.formatValue(newValue).length) {
490
- return;
491
- }
492
- this.updateInput(newValue, null, 'spin', null);
493
- this.updateModel(event, newValue);
494
- this.handleOnInput(event, currentValue, newValue);
495
- }
496
- clear() {
497
- this.value = null;
498
- this.onModelChange(this.value);
499
- this.onClear.emit();
500
- }
501
- onUpButtonMouseDown(event) {
502
- if (event.button === 2) {
503
- this.clearTimer();
504
- return;
505
- }
506
- if (!this.disabled) {
507
- this.input?.nativeElement.focus();
508
- this.repeat(event, null, 1);
509
- event.preventDefault();
510
- }
511
- }
512
- onUpButtonMouseUp() {
513
- if (!this.disabled) {
514
- this.clearTimer();
515
- }
516
- }
517
- onUpButtonMouseLeave() {
518
- if (!this.disabled) {
519
- this.clearTimer();
520
- }
521
- }
522
- onUpButtonKeyDown(event) {
523
- if (event.keyCode === 32 || event.keyCode === 13) {
524
- this.repeat(event, null, 1);
525
- }
526
- }
527
- onUpButtonKeyUp() {
528
- if (!this.disabled) {
529
- this.clearTimer();
530
- }
531
- }
532
- onDownButtonMouseDown(event) {
533
- if (event.button === 2) {
534
- this.clearTimer();
535
- return;
536
- }
537
- if (!this.disabled) {
538
- this.input?.nativeElement.focus();
539
- this.repeat(event, null, -1);
540
- event.preventDefault();
541
- }
542
- }
543
- onDownButtonMouseUp() {
544
- if (!this.disabled) {
545
- this.clearTimer();
546
- }
547
- }
548
- onDownButtonMouseLeave() {
549
- if (!this.disabled) {
550
- this.clearTimer();
551
- }
552
- }
553
- onDownButtonKeyUp() {
554
- if (!this.disabled) {
555
- this.clearTimer();
556
- }
557
- }
558
- onDownButtonKeyDown(event) {
559
- if (event.keyCode === 32 || event.keyCode === 13) {
560
- this.repeat(event, null, -1);
561
- }
562
- }
563
- onUserInput(event) {
564
- if (this.readonly) {
565
- return;
566
- }
567
- if (this.isSpecialChar) {
568
- event.target.value = this.lastValue;
569
- }
570
- this.isSpecialChar = false;
571
- }
572
- onInputKeyDown(event) {
573
- if (this.readonly) {
574
- return;
575
- }
576
- this.lastValue = event.target.value;
577
- if (event.shiftKey || event.altKey) {
578
- this.isSpecialChar = true;
579
- return;
580
- }
581
- let selectionStart = event.target.selectionStart;
582
- let selectionEnd = event.target.selectionEnd;
583
- let inputValue = event.target.value;
584
- let newValueStr = null;
585
- if (event.altKey) {
586
- event.preventDefault();
587
- }
588
- switch (event.key) {
589
- case 'ArrowUp':
590
- this.spin(event, 1);
591
- event.preventDefault();
592
- break;
593
- case 'ArrowDown':
594
- this.spin(event, -1);
595
- event.preventDefault();
596
- break;
597
- case 'ArrowLeft':
598
- for (let index = selectionStart; index <= inputValue.length; index++) {
599
- const previousCharIndex = index === 0 ? 0 : index - 1;
600
- if (this.isNumeralChar(inputValue.charAt(previousCharIndex))) {
601
- this.input.nativeElement.setSelectionRange(index, index);
602
- break;
603
- }
604
- }
605
- break;
606
- case 'ArrowRight':
607
- for (let index = selectionEnd; index >= 0; index--) {
608
- if (this.isNumeralChar(inputValue.charAt(index))) {
609
- this.input.nativeElement.setSelectionRange(index, index);
610
- break;
611
- }
612
- }
613
- break;
614
- case 'Tab':
615
- case 'Enter':
616
- newValueStr = this.validateValue(this.parseValue(this.input.nativeElement.value));
617
- this.input.nativeElement.value = this.formatValue(newValueStr);
618
- this.input.nativeElement.setAttribute('aria-valuenow', newValueStr);
619
- this.updateModel(event, newValueStr);
620
- break;
621
- case 'Backspace': {
622
- event.preventDefault();
623
- if (selectionStart === selectionEnd) {
624
- if ((selectionStart == 1 && this.prefix) || (selectionStart == inputValue.length && this.suffix)) {
625
- break;
626
- }
627
- const deleteChar = inputValue.charAt(selectionStart - 1);
628
- const { decimalCharIndex, decimalCharIndexWithoutPrefix } = this.getDecimalCharIndexes(inputValue);
629
- if (this.isNumeralChar(deleteChar)) {
630
- const decimalLength = this.getDecimalLength(inputValue);
631
- if (this._group.test(deleteChar)) {
632
- this._group.lastIndex = 0;
633
- newValueStr = inputValue.slice(0, selectionStart - 2) + inputValue.slice(selectionStart - 1);
634
- }
635
- else if (this._decimal.test(deleteChar)) {
636
- this._decimal.lastIndex = 0;
637
- if (decimalLength) {
638
- this.input?.nativeElement.setSelectionRange(selectionStart - 1, selectionStart - 1);
639
- }
640
- else {
641
- newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);
642
- }
643
- }
644
- else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {
645
- const insertedText = this.isDecimalMode() && (this.minFractionDigits || 0) < decimalLength ? '' : '0';
646
- newValueStr = inputValue.slice(0, selectionStart - 1) + insertedText + inputValue.slice(selectionStart);
647
- }
648
- else if (decimalCharIndexWithoutPrefix === 1) {
649
- newValueStr = inputValue.slice(0, selectionStart - 1) + '0' + inputValue.slice(selectionStart);
650
- newValueStr = this.parseValue(newValueStr) > 0 ? newValueStr : '';
651
- }
652
- else {
653
- newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);
654
- }
655
- }
656
- else if (this.mode === 'currency' && deleteChar.search(this._currency) != -1) {
657
- newValueStr = inputValue.slice(1);
658
- }
659
- this.updateValue(event, newValueStr, null, 'delete-single');
660
- }
661
- else {
662
- newValueStr = this.deleteRange(inputValue, selectionStart, selectionEnd);
663
- this.updateValue(event, newValueStr, null, 'delete-range');
664
- }
665
- break;
666
- }
667
- case 'Delete':
668
- event.preventDefault();
669
- if (selectionStart === selectionEnd) {
670
- if ((selectionStart == 0 && this.prefix) || (selectionStart == inputValue.length - 1 && this.suffix)) {
671
- break;
672
- }
673
- const deleteChar = inputValue.charAt(selectionStart);
674
- const { decimalCharIndex, decimalCharIndexWithoutPrefix } = this.getDecimalCharIndexes(inputValue);
675
- if (this.isNumeralChar(deleteChar)) {
676
- const decimalLength = this.getDecimalLength(inputValue);
677
- if (this._group.test(deleteChar)) {
678
- this._group.lastIndex = 0;
679
- newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 2);
680
- }
681
- else if (this._decimal.test(deleteChar)) {
682
- this._decimal.lastIndex = 0;
683
- if (decimalLength) {
684
- this.input?.nativeElement.setSelectionRange(selectionStart + 1, selectionStart + 1);
685
- }
686
- else {
687
- newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);
688
- }
689
- }
690
- else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {
691
- const insertedText = this.isDecimalMode() && (this.minFractionDigits || 0) < decimalLength ? '' : '0';
692
- newValueStr = inputValue.slice(0, selectionStart) + insertedText + inputValue.slice(selectionStart + 1);
693
- }
694
- else if (decimalCharIndexWithoutPrefix === 1) {
695
- newValueStr = inputValue.slice(0, selectionStart) + '0' + inputValue.slice(selectionStart + 1);
696
- newValueStr = this.parseValue(newValueStr) > 0 ? newValueStr : '';
697
- }
698
- else {
699
- newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);
700
- }
701
- }
702
- this.updateValue(event, newValueStr, null, 'delete-back-single');
703
- }
704
- else {
705
- newValueStr = this.deleteRange(inputValue, selectionStart, selectionEnd);
706
- this.updateValue(event, newValueStr, null, 'delete-range');
707
- }
708
- break;
709
- case 'Home':
710
- if (this.min) {
711
- this.updateModel(event, this.min);
712
- event.preventDefault();
713
- }
714
- break;
715
- case 'End':
716
- if (this.max) {
717
- this.updateModel(event, this.max);
718
- event.preventDefault();
719
- }
720
- break;
721
- default:
722
- break;
723
- }
724
- this.onKeyDown.emit(event);
725
- }
726
- onInputKeyPress(event) {
727
- if (this.readonly) {
728
- return;
729
- }
730
- let code = event.which || event.keyCode;
731
- let char = String.fromCharCode(code);
732
- let isDecimalSign = this.isDecimalSign(char);
733
- const isMinusSign = this.isMinusSign(char);
734
- if (code != 13) {
735
- event.preventDefault();
736
- }
737
- if (!isDecimalSign && event.code === 'NumpadDecimal') {
738
- isDecimalSign = true;
739
- char = this._decimalChar;
740
- code = char.charCodeAt(0);
741
- }
742
- const newValue = this.parseValue(this.input.nativeElement.value + char);
743
- const newValueStr = newValue != null ? newValue.toString() : '';
744
- if (this.maxlength && this.getSelectedText()?.length == this.maxlength) {
745
- this.insert(event, char, { isDecimalSign, isMinusSign });
746
- return;
747
- }
748
- if (this.maxlength && newValueStr.length > this.maxlength) {
749
- return;
750
- }
751
- if ((48 <= code && code <= 57) || isMinusSign || isDecimalSign) {
752
- this.insert(event, char, { isDecimalSign, isMinusSign });
753
- }
754
- }
755
- getSelectedText() {
756
- return (window
757
- ?.getSelection()
758
- ?.toString()
759
- .replaceAll(/[^0-9']/g, '') || '');
760
- }
761
- onPaste(event) {
762
- if (!this.disabled && !this.readonly) {
763
- event.preventDefault();
764
- let data = (event.clipboardData || this.document.defaultView['clipboardData']).getData('Text');
765
- if (data) {
766
- if (this.maxlength) {
767
- data = data.toString().substring(0, this.maxlength);
768
- }
769
- let filteredData = this.parseValue(data);
770
- if (filteredData != null) {
771
- this.insert(event, filteredData.toString());
772
- }
773
- }
774
- }
775
- }
776
- allowMinusSign() {
777
- return this.min == null || this.min < 0;
778
- }
779
- isMinusSign(char) {
780
- if (this._minusSign.test(char) || char === '-') {
781
- this._minusSign.lastIndex = 0;
782
- return true;
783
- }
784
- return false;
785
- }
786
- isDecimalSign(char) {
787
- if (this._decimal.test(char)) {
788
- this._decimal.lastIndex = 0;
789
- return true;
790
- }
791
- return false;
792
- }
793
- isDecimalMode() {
794
- return this.mode === 'decimal';
795
- }
796
- getDecimalCharIndexes(val) {
797
- let decimalCharIndex = val.search(this._decimal);
798
- this._decimal.lastIndex = 0;
799
- const filteredVal = val
800
- .replace(this._prefix, '')
801
- .trim()
802
- .replace(/\s/g, '')
803
- .replace(this._currency, '');
804
- const decimalCharIndexWithoutPrefix = filteredVal.search(this._decimal);
805
- this._decimal.lastIndex = 0;
806
- return { decimalCharIndex, decimalCharIndexWithoutPrefix };
807
- }
808
- getCharIndexes(val) {
809
- const decimalCharIndex = val.search(this._decimal);
810
- this._decimal.lastIndex = 0;
811
- const minusCharIndex = val.search(this._minusSign);
812
- this._minusSign.lastIndex = 0;
813
- const suffixCharIndex = val.search(this._suffix);
814
- this._suffix.lastIndex = 0;
815
- const currencyCharIndex = val.search(this._currency);
816
- this._currency.lastIndex = 0;
817
- return { decimalCharIndex, minusCharIndex, suffixCharIndex, currencyCharIndex };
818
- }
819
- insert(event, text, sign = { isDecimalSign: false, isMinusSign: false }) {
820
- const minusCharIndexOnText = text.search(this._minusSign);
821
- this._minusSign.lastIndex = 0;
822
- if (!this.allowMinusSign() && minusCharIndexOnText !== -1) {
823
- return;
824
- }
825
- let selectionStart = this.input?.nativeElement.selectionStart;
826
- let selectionEnd = this.input?.nativeElement.selectionEnd;
827
- let inputValue = this.input?.nativeElement.value.trim();
828
- const { decimalCharIndex, minusCharIndex, suffixCharIndex, currencyCharIndex } = this.getCharIndexes(inputValue);
829
- let newValueStr;
830
- if (sign.isMinusSign) {
831
- if (selectionStart === 0) {
832
- newValueStr = inputValue;
833
- if (minusCharIndex === -1 || selectionEnd !== 0) {
834
- newValueStr = this.insertText(inputValue, text, 0, selectionEnd);
835
- }
836
- this.updateValue(event, newValueStr, text, 'insert');
837
- }
838
- }
839
- else if (sign.isDecimalSign) {
840
- if (decimalCharIndex > 0 && selectionStart === decimalCharIndex) {
841
- this.updateValue(event, inputValue, text, 'insert');
842
- }
843
- else if (decimalCharIndex > selectionStart && decimalCharIndex < selectionEnd) {
844
- newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);
845
- this.updateValue(event, newValueStr, text, 'insert');
846
- }
847
- else if (decimalCharIndex === -1 && this.maxFractionDigits) {
848
- newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);
849
- this.updateValue(event, newValueStr, text, 'insert');
850
- }
851
- }
852
- else {
853
- const maxFractionDigits = this.numberFormat.resolvedOptions().maximumFractionDigits;
854
- const operation = selectionStart !== selectionEnd ? 'range-insert' : 'insert';
855
- if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {
856
- if (selectionStart + text.length - (decimalCharIndex + 1) <= maxFractionDigits) {
857
- const charIndex = currencyCharIndex >= selectionStart ? currencyCharIndex - 1 : suffixCharIndex >= selectionStart ? suffixCharIndex : inputValue.length;
858
- newValueStr = inputValue.slice(0, selectionStart) + text + inputValue.slice(selectionStart + text.length, charIndex) + inputValue.slice(charIndex);
859
- this.updateValue(event, newValueStr, text, operation);
860
- }
861
- }
862
- else {
863
- newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);
864
- this.updateValue(event, newValueStr, text, operation);
865
- }
866
- }
867
- }
868
- insertText(value, text, start, end) {
869
- let textSplit = text === '.' ? text : text.split('.');
870
- if (textSplit.length === 2) {
871
- const decimalCharIndex = value.slice(start, end).search(this._decimal);
872
- this._decimal.lastIndex = 0;
873
- return decimalCharIndex > 0 ? value.slice(0, start) + this.formatValue(text) + value.slice(end) : value || this.formatValue(text);
874
- }
875
- else if (end - start === value.length) {
876
- return this.formatValue(text);
877
- }
878
- else if (start === 0) {
879
- return text + value.slice(end);
880
- }
881
- else if (end === value.length) {
882
- return value.slice(0, start) + text;
883
- }
884
- else {
885
- return value.slice(0, start) + text + value.slice(end);
886
- }
887
- }
888
- deleteRange(value, start, end) {
889
- let newValueStr;
890
- if (end - start === value.length)
891
- newValueStr = '';
892
- else if (start === 0)
893
- newValueStr = value.slice(end);
894
- else if (end === value.length)
895
- newValueStr = value.slice(0, start);
896
- else
897
- newValueStr = value.slice(0, start) + value.slice(end);
898
- return newValueStr;
899
- }
900
- initCursor() {
901
- let selectionStart = this.input?.nativeElement.selectionStart;
902
- let selectionEnd = this.input?.nativeElement.selectionEnd;
903
- let inputValue = this.input?.nativeElement.value;
904
- let valueLength = inputValue.length;
905
- let index = null;
906
- // remove prefix
907
- let prefixLength = (this.prefixChar || '').length;
908
- inputValue = inputValue.replace(this._prefix, '');
909
- // Will allow selecting whole prefix. But not a part of it.
910
- // Negative values will trigger clauses after this to fix the cursor position.
911
- if (selectionStart === selectionEnd || selectionStart !== 0 || selectionEnd < prefixLength) {
912
- selectionStart -= prefixLength;
913
- }
914
- let char = inputValue.charAt(selectionStart);
915
- if (this.isNumeralChar(char)) {
916
- return selectionStart + prefixLength;
917
- }
918
- //left
919
- let i = selectionStart - 1;
920
- while (i >= 0) {
921
- char = inputValue.charAt(i);
922
- if (this.isNumeralChar(char)) {
923
- index = i + prefixLength;
924
- break;
925
- }
926
- else {
927
- i--;
928
- }
929
- }
930
- if (index !== null) {
931
- this.input?.nativeElement.setSelectionRange(index + 1, index + 1);
932
- }
933
- else {
934
- i = selectionStart;
935
- while (i < valueLength) {
936
- char = inputValue.charAt(i);
937
- if (this.isNumeralChar(char)) {
938
- index = i + prefixLength;
939
- break;
940
- }
941
- else {
942
- i++;
943
- }
944
- }
945
- if (index !== null) {
946
- this.input?.nativeElement.setSelectionRange(index, index);
947
- }
948
- }
949
- return index || 0;
950
- }
951
- onInputClick() {
952
- const currentValue = this.input?.nativeElement.value;
953
- if (!this.readonly && currentValue !== DomHandler.getSelection()) {
954
- this.initCursor();
955
- }
956
- }
957
- isNumeralChar(char) {
958
- if (char.length === 1 && (this._numeral.test(char) || this._decimal.test(char) || this._group.test(char) || this._minusSign.test(char))) {
959
- this.resetRegex();
960
- return true;
961
- }
962
- return false;
963
- }
964
- resetRegex() {
965
- this._numeral.lastIndex = 0;
966
- this._decimal.lastIndex = 0;
967
- this._group.lastIndex = 0;
968
- this._minusSign.lastIndex = 0;
969
- }
970
- updateValue(event, valueStr, insertedValueStr, operation) {
971
- let currentValue = this.input?.nativeElement.value;
972
- let newValue = null;
973
- if (valueStr != null) {
974
- newValue = this.parseValue(valueStr);
975
- newValue = !newValue && !this.allowEmpty ? 0 : newValue;
976
- this.updateInput(newValue, insertedValueStr, operation, valueStr);
977
- this.handleOnInput(event, currentValue, newValue);
978
- }
979
- }
980
- handleOnInput(event, currentValue, newValue) {
981
- if (this.isValueChanged(currentValue, newValue)) {
982
- this.input.nativeElement.value = this.formatValue(newValue);
983
- this.input?.nativeElement.setAttribute('aria-valuenow', newValue);
984
- !this.isBlurUpdateOnMode && this.updateModel(event, newValue);
985
- this.onInput.emit({ originalEvent: event, value: newValue, formattedValue: currentValue });
986
- }
987
- }
988
- isValueChanged(currentValue, newValue) {
989
- if (newValue === null && currentValue !== null) {
990
- return true;
991
- }
992
- if (newValue != null) {
993
- let parsedCurrentValue = typeof currentValue === 'string' ? this.parseValue(currentValue) : currentValue;
994
- return newValue !== parsedCurrentValue;
995
- }
996
- return false;
997
- }
998
- validateValue(value) {
999
- if (value === '-' || value == null) {
1000
- return null;
1001
- }
1002
- if (this.min != null && value < this.min) {
1003
- return this.min;
1004
- }
1005
- if (this.max != null && value > this.max) {
1006
- return this.max;
1007
- }
1008
- return value;
1009
- }
1010
- updateInput(value, insertedValueStr, operation, valueStr) {
1011
- insertedValueStr = insertedValueStr || '';
1012
- let inputValue = this.input?.nativeElement.value;
1013
- let newValue = this.formatValue(value);
1014
- let currentLength = inputValue.length;
1015
- if (newValue !== valueStr) {
1016
- newValue = this.concatValues(newValue, valueStr);
1017
- }
1018
- if (currentLength === 0) {
1019
- this.input.nativeElement.value = newValue;
1020
- this.input.nativeElement.setSelectionRange(0, 0);
1021
- const index = this.initCursor();
1022
- const selectionEnd = index + insertedValueStr.length;
1023
- this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);
1024
- }
1025
- else {
1026
- let selectionStart = this.input.nativeElement.selectionStart;
1027
- let selectionEnd = this.input.nativeElement.selectionEnd;
1028
- if (this.maxlength && newValue.length > this.maxlength) {
1029
- newValue = newValue.slice(0, this.maxlength);
1030
- selectionStart = Math.min(selectionStart, this.maxlength);
1031
- selectionEnd = Math.min(selectionEnd, this.maxlength);
1032
- }
1033
- if (this.maxlength && this.maxlength < newValue.length) {
1034
- return;
1035
- }
1036
- this.input.nativeElement.value = newValue;
1037
- let newLength = newValue.length;
1038
- if (operation === 'range-insert') {
1039
- const startValue = this.parseValue((inputValue || '').slice(0, selectionStart));
1040
- const startValueStr = startValue !== null ? startValue.toString() : '';
1041
- const startExpr = startValueStr.split('').join(`(${this.groupChar})?`);
1042
- const sRegex = new RegExp(startExpr, 'g');
1043
- sRegex.test(newValue);
1044
- const tExpr = insertedValueStr.split('').join(`(${this.groupChar})?`);
1045
- const tRegex = new RegExp(tExpr, 'g');
1046
- tRegex.test(newValue.slice(sRegex.lastIndex));
1047
- selectionEnd = sRegex.lastIndex + tRegex.lastIndex;
1048
- this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);
1049
- }
1050
- else if (newLength === currentLength) {
1051
- if (operation === 'insert' || operation === 'delete-back-single')
1052
- this.input.nativeElement.setSelectionRange(selectionEnd + 1, selectionEnd + 1);
1053
- else if (operation === 'delete-single')
1054
- this.input.nativeElement.setSelectionRange(selectionEnd - 1, selectionEnd - 1);
1055
- else if (operation === 'delete-range' || operation === 'spin')
1056
- this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);
1057
- }
1058
- else if (operation === 'delete-back-single') {
1059
- let prevChar = inputValue.charAt(selectionEnd - 1);
1060
- let nextChar = inputValue.charAt(selectionEnd);
1061
- let diff = currentLength - newLength;
1062
- let isGroupChar = this._group.test(nextChar);
1063
- if (isGroupChar && diff === 1) {
1064
- selectionEnd += 1;
1065
- }
1066
- else if (!isGroupChar && this.isNumeralChar(prevChar)) {
1067
- selectionEnd += -1 * diff + 1;
1068
- }
1069
- this._group.lastIndex = 0;
1070
- this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);
1071
- }
1072
- else if (inputValue === '-' && operation === 'insert') {
1073
- this.input.nativeElement.setSelectionRange(0, 0);
1074
- const index = this.initCursor();
1075
- const selectionEnd = index + insertedValueStr.length + 1;
1076
- this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);
1077
- }
1078
- else {
1079
- selectionEnd = selectionEnd + (newLength - currentLength);
1080
- this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);
1081
- }
1082
- }
1083
- this.input.nativeElement.setAttribute('aria-valuenow', value);
1084
- }
1085
- concatValues(val1, val2) {
1086
- if (val1 && val2) {
1087
- let decimalCharIndex = val2.search(this._decimal);
1088
- this._decimal.lastIndex = 0;
1089
- if (this.suffixChar) {
1090
- return decimalCharIndex !== -1 ? val1 : val1.replace(this.suffixChar, '').split(this._decimal)[0] + val2.replace(this.suffixChar, '').slice(decimalCharIndex) + this.suffixChar;
1091
- }
1092
- else {
1093
- return decimalCharIndex !== -1 ? val1.split(this._decimal)[0] + val2.slice(decimalCharIndex) : val1;
1094
- }
1095
- }
1096
- return val1;
1097
- }
1098
- getDecimalLength(value) {
1099
- if (value) {
1100
- const valueSplit = value.split(this._decimal);
1101
- if (valueSplit.length === 2) {
1102
- return valueSplit[1]
1103
- .replace(this._suffix, '')
1104
- .trim()
1105
- .replace(/\s/g, '')
1106
- .replace(this._currency, '').length;
1107
- }
1108
- }
1109
- return 0;
1110
- }
1111
- onInputFocus(event) {
1112
- this.focused = true;
1113
- this.onFocus.emit(event);
1114
- }
1115
- onInputBlur(event) {
1116
- this.focused = false;
1117
- const newValueNumber = this.validateValue(this.parseValue(this.input.nativeElement.value));
1118
- const newValueString = newValueNumber?.toString();
1119
- this.input.nativeElement.value = this.formatValue(newValueString);
1120
- this.input.nativeElement.setAttribute('aria-valuenow', newValueString);
1121
- this.updateModel(event, newValueNumber);
1122
- this.onBlur.emit(event);
1123
- }
1124
- formattedValue() {
1125
- const val = !this.value && !this.allowEmpty ? 0 : this.value;
1126
- return this.formatValue(val);
1127
- }
1128
- updateModel(event, value) {
1129
- if (this.value !== value) {
1130
- this.value = value;
1131
- if (!(this.isBlurUpdateOnMode && this.focused)) {
1132
- this.onModelChange(value);
1133
- }
1134
- else if (this.isBlurUpdateOnMode) {
1135
- this.onModelChange(value);
1136
- }
1137
- }
1138
- this.onModelTouched();
1139
- }
1140
- writeValue(value) {
1141
- this.value = value;
1142
- this.cd.markForCheck();
1143
- }
1144
- registerOnChange(fn) {
1145
- this.onModelChange = fn;
1146
- }
1147
- registerOnTouched(fn) {
1148
- this.onModelTouched = fn;
1149
- }
1150
- setDisabledState(val) {
1151
- this.disabled = val;
1152
- this.cd.markForCheck();
1153
- }
1154
- get filled() {
1155
- return this.value != null && this.value.toString().length > 0;
1156
- }
1157
- clearTimer() {
1158
- if (this.timer) {
1159
- clearInterval(this.timer);
1160
- }
1161
- }
1162
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: InputNumber, deps: [{ token: DOCUMENT }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: i1.caxConfig }], target: i0.ɵɵFactoryTarget.Component });
1163
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.9", type: InputNumber, isStandalone: true, selector: "cax-inputNumber", inputs: { showButtons: ["showButtons", "showButtons", booleanAttribute], format: ["format", "format", booleanAttribute], buttonLayout: "buttonLayout", inputId: "inputId", styleClass: "styleClass", style: "style", placeholder: "placeholder", size: ["size", "size", numberAttribute], maxlength: ["maxlength", "maxlength", numberAttribute], tabindex: ["tabindex", "tabindex", numberAttribute], title: "title", ariaLabelledBy: "ariaLabelledBy", ariaLabel: "ariaLabel", ariaRequired: ["ariaRequired", "ariaRequired", booleanAttribute], name: "name", required: ["required", "required", booleanAttribute], autocomplete: "autocomplete", min: ["min", "min", numberAttribute], max: ["max", "max", numberAttribute], incrementButtonClass: "incrementButtonClass", decrementButtonClass: "decrementButtonClass", incrementButtonIcon: "incrementButtonIcon", decrementButtonIcon: "decrementButtonIcon", readonly: ["readonly", "readonly", booleanAttribute], step: ["step", "step", numberAttribute], allowEmpty: ["allowEmpty", "allowEmpty", booleanAttribute], locale: "locale", localeMatcher: "localeMatcher", mode: "mode", currency: "currency", currencyDisplay: "currencyDisplay", useGrouping: ["useGrouping", "useGrouping", booleanAttribute], variant: "variant", minFractionDigits: ["minFractionDigits", "minFractionDigits", (value) => numberAttribute(value, null)], maxFractionDigits: ["maxFractionDigits", "maxFractionDigits", (value) => numberAttribute(value, null)], prefixIcon: "prefixIcon", prefix: "prefix", suffix: "suffix", inputStyle: "inputStyle", inputStyleClass: "inputStyleClass", showClear: ["showClear", "showClear", booleanAttribute], autofocus: ["autofocus", "autofocus", booleanAttribute], disabled: "disabled" }, outputs: { onInput: "onInput", onFocus: "onFocus", onBlur: "onBlur", onKeyDown: "onKeyDown", onClear: "onClear" }, host: { properties: { "class.cax-inputwrapper-filled": "filled", "class.cax-inputwrapper-focus": "focused", "class.cax-inputnumber-clearable": "showClear && buttonLayout != \"vertical\"" }, classAttribute: "cax-element cax-inputwrapper" }, providers: [INPUTNUMBER_VALUE_ACCESSOR], queries: [{ propertyName: "templates", predicate: CaxTemplate }], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<span\n [ngClass]=\"{\n 'cax-inputnumber cax-component': true,\n 'cax-inputnumber-buttons-stacked': this.showButtons && this.buttonLayout === 'stacked',\n 'cax-inputnumber-buttons-horizontal': this.showButtons && this.buttonLayout === 'horizontal',\n 'cax-inputnumber-buttons-vertical': this.showButtons && this.buttonLayout === 'vertical',\n 'cax-input-icon-left': (prefix || prefixIcon) && buttonLayout === 'stacked',\n 'cax-input-icon-right': suffix,\n 'cax-disabled': disabled\n }\"\n [ngStyle]=\"style\"\n [class]=\"styleClass\"\n [attr.data-pc-name]=\"'inputnumber'\"\n [attr.data-pc-section]=\"'root'\"\n>\n <!-- Only show prefix/icon in stacked layout -->\n <ng-container *ngIf=\"(prefix || prefixIcon) && buttonLayout === 'stacked'\">\n <i *ngIf=\"prefixIcon\" class=\"cax-input-prefix-icon\" [ngClass]=\"prefixIcon\"></i>\n </ng-container>\n <!-- Down button for horizontal layout -->\n <button *ngIf=\"showButtons && buttonLayout === 'horizontal'\"\n type=\"button\" caxButton\n [severity]=\"'secondary'\"\n [size]=\"'small'\"\n class=\"cax-inputnumber-button cax-inputnumber-button-down\"\n [disabled]=\"disabled\"\n (mousedown)=\"onDownButtonMouseDown($event)\"\n (mouseup)=\"onDownButtonMouseUp()\"\n (mouseleave)=\"onDownButtonMouseLeave()\"\n (keydown)=\"onDownButtonKeyDown($event)\"\n (keyup)=\"onDownButtonKeyUp()\"\n [attr.aria-hidden]=\"true\"\n [attr.data-pc-section]=\"'decrementbutton'\">\n <ng-container *ngIf=\"!decrementButtonIcon\">\n <AngleDownIcon *ngIf=\"!decrementButtonIconTemplate\" [attr.data-pc-section]=\"'decrementbuttonicon'\" />\n <ng-template *ngTemplateOutlet=\"decrementButtonIconTemplate\"></ng-template>\n </ng-container>\n <span *ngIf=\"decrementButtonIcon\" [ngClass]=\"decrementButtonIcon\"></span>\n </button>\n <input\n caxInputText\n #input\n [attr.id]=\"inputId\"\n role=\"spinbutton\"\n [ngClass]=\"'cax-inputnumber-input'\"\n [ngStyle]=\"inputStyle\"\n [class]=\"inputStyleClass\"\n [value]=\"formattedValue()\"\n [attr.variant]=\"variant\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-valuenow]=\"value\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.title]=\"title\"\n [attr.size]=\"size\"\n [attr.name]=\"name\"\n [attr.autocomplete]=\"autocomplete\"\n [attr.maxlength]=\"maxlength\"\n [attr.tabindex]=\"tabindex\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.required]=\"required\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n inputmode=\"decimal\"\n (input)=\"onUserInput($event)\"\n (keydown)=\"onInputKeyDown($event)\"\n (keypress)=\"onInputKeyPress($event)\"\n (paste)=\"onPaste($event)\"\n (click)=\"onInputClick()\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputBlur($event)\"\n [attr.data-pc-section]=\"'input'\"\n caxAutoFocus\n [autofocus]=\"autofocus\"\n [class.cax-variant-filled]=\"variant === 'filled' || config.inputStyle() === 'filled'\"\n />\n <!-- Up button for horizontal layout -->\n <button *ngIf=\"showButtons && buttonLayout === 'horizontal'\"\n type=\"button\" caxButton\n [severity]=\"'secondary'\"\n [size]=\"'small'\"\n class=\"cax-inputnumber-button cax-inputnumber-button-up\"\n [disabled]=\"disabled\"\n (mousedown)=\"onUpButtonMouseDown($event)\"\n (mouseup)=\"onUpButtonMouseUp()\"\n (mouseleave)=\"onUpButtonMouseLeave()\"\n (keydown)=\"onUpButtonKeyDown($event)\"\n (keyup)=\"onUpButtonKeyUp()\"\n [attr.aria-hidden]=\"true\"\n [attr.data-pc-section]=\"'incrementbutton'\">\n <ng-container *ngIf=\"!incrementButtonIcon\">\n <AngleUpIcon *ngIf=\"!incrementButtonIconTemplate\" [attr.data-pc-section]=\"'incrementbuttonicon'\" />\n <ng-template *ngTemplateOutlet=\"incrementButtonIconTemplate\"></ng-template>\n </ng-container>\n <span *ngIf=\"incrementButtonIcon\" [ngClass]=\"incrementButtonIcon\"></span>\n </button>\n <i *ngIf=\"suffix\" class=\"cax-input-suffix\" [innerHTML]=\"suffix\"></i>\n <ng-container *ngIf=\"buttonLayout != 'vertical' && showClear && value\">\n <TimesIcon *ngIf=\"!clearIconTemplate\" [ngClass]=\"'cax-inputnumber-clear-icon'\" (click)=\"clear()\" [attr.data-pc-section]=\"'clearIcon'\" />\n <span *ngIf=\"clearIconTemplate\" (click)=\"clear()\" class=\"cax-inputnumber-clear-icon\" [attr.data-pc-section]=\"'clearIcon'\">\n <ng-template *ngTemplateOutlet=\"clearIconTemplate\"></ng-template>\n </span>\n </ng-container>\n <span class=\"cax-inputnumber-button-group\" *ngIf=\"showButtons && buttonLayout === 'stacked'\" [attr.data-pc-section]=\"'buttonGroup'\">\n <button\n type=\"button\"\n caxButton\n [severity]=\"'secondary'\"\n [size]=\"'small'\"\n [ngClass]=\"{ 'cax-inputnumber-button cax-inputnumber-button-up': true }\"\n class=\"cax-button-icon-only\"\n [class]=\"incrementButtonClass\"\n [disabled]=\"disabled\"\n tabindex=\"-1\"\n (mousedown)=\"onUpButtonMouseDown($event)\"\n (mouseup)=\"onUpButtonMouseUp()\"\n (mouseleave)=\"onUpButtonMouseLeave()\"\n (keydown)=\"onUpButtonKeyDown($event)\"\n (keyup)=\"onUpButtonKeyUp()\"\n [attr.aria-hidden]=\"true\"\n [attr.data-pc-section]=\"'incrementbutton'\"\n >\n <span *ngIf=\"incrementButtonIcon\" [ngClass]=\"incrementButtonIcon\" [attr.data-pc-section]=\"'incrementbuttonicon'\"></span>\n <ng-container *ngIf=\"!incrementButtonIcon\">\n <AngleUpIcon *ngIf=\"!incrementButtonIconTemplate\" [attr.data-pc-section]=\"'incrementbuttonicon'\" />\n <ng-template *ngTemplateOutlet=\"incrementButtonIconTemplate\"></ng-template>\n </ng-container>\n </button>\n <button\n type=\"button\"\n caxButton\n [severity]=\"'secondary'\"\n [size]=\"'small'\"\n [ngClass]=\"{ 'cax-inputnumber-button cax-inputnumber-button-down': true }\"\n class=\"cax-button-icon-only\"\n [class]=\"decrementButtonClass\"\n [disabled]=\"disabled\"\n tabindex=\"-1\"\n [attr.aria-hidden]=\"true\"\n (mousedown)=\"onDownButtonMouseDown($event)\"\n (mouseup)=\"onDownButtonMouseUp()\"\n (mouseleave)=\"onDownButtonMouseLeave()\"\n (keydown)=\"onDownButtonKeyDown($event)\"\n (keyup)=\"onDownButtonKeyUp()\"\n [attr.data-pc-section]=\"'decrementbutton'\"\n >\n <span *ngIf=\"decrementButtonIcon\" [ngClass]=\"decrementButtonIcon\" [attr.data-pc-section]=\"'decrementbuttonicon'\"></span>\n <ng-container *ngIf=\"!decrementButtonIcon\">\n <AngleDownIcon *ngIf=\"!decrementButtonIconTemplate\" [attr.data-pc-section]=\"'decrementbuttonicon'\" />\n <ng-template *ngTemplateOutlet=\"decrementButtonIconTemplate\"></ng-template>\n </ng-container>\n </button>\n </span>\n <button\n *ngIf=\"showButtons && buttonLayout !== 'stacked' && buttonLayout !== 'horizontal'\"\n type=\"button\"\n caxButton\n [severity]=\"'secondary'\"\n [size]=\"'small'\"\n [ngClass]=\"{ 'cax-inputnumber-button cax-inputnumber-button-up': true }\"\n [class]=\"incrementButtonClass\"\n class=\"cax-button-icon-only\"\n [disabled]=\"disabled\"\n tabindex=\"-1\"\n [attr.aria-hidden]=\"true\"\n (mousedown)=\"onUpButtonMouseDown($event)\"\n (mouseup)=\"onUpButtonMouseUp()\"\n (mouseleave)=\"onUpButtonMouseLeave()\"\n (keydown)=\"onUpButtonKeyDown($event)\"\n (keyup)=\"onUpButtonKeyUp()\"\n [attr.data-pc-section]=\"'incrementbutton'\"\n >\n <span *ngIf=\"incrementButtonIcon\" [ngClass]=\"incrementButtonIcon\" [attr.data-pc-section]=\"'incrementbuttonicon'\"></span>\n <ng-container *ngIf=\"!incrementButtonIcon\">\n <AngleUpIcon *ngIf=\"!incrementButtonIconTemplate\" [attr.data-pc-section]=\"'incrementbuttonicon'\" />\n <ng-template *ngTemplateOutlet=\"incrementButtonIconTemplate\"></ng-template>\n </ng-container>\n </button>\n <button\n *ngIf=\"showButtons && buttonLayout !== 'stacked' && buttonLayout !== 'horizontal'\"\n type=\"button\"\n caxButton\n [severity]=\"'secondary'\"\n [size]=\"'small'\"\n [ngClass]=\"{ 'cax-inputnumber-button cax-inputnumber-button-down': true }\"\n class=\"cax-button-icon-only\"\n [class]=\"decrementButtonClass\"\n [disabled]=\"disabled\"\n tabindex=\"-1\"\n [attr.aria-hidden]=\"true\"\n (mousedown)=\"onDownButtonMouseDown($event)\"\n (mouseup)=\"onDownButtonMouseUp()\"\n (mouseleave)=\"onDownButtonMouseLeave()\"\n (keydown)=\"onDownButtonKeyDown($event)\"\n (keyup)=\"onDownButtonKeyUp()\"\n [attr.data-pc-section]=\"'decrementbutton'\"\n >\n <span *ngIf=\"decrementButtonIcon\" [ngClass]=\"decrementButtonIcon\" [attr.data-pc-section]=\"'decrementbuttonicon'\"></span>\n <ng-container *ngIf=\"!decrementButtonIcon\">\n <AngleDownIcon *ngIf=\"!decrementButtonIconTemplate\" [attr.data-pc-section]=\"'decrementbuttonicon'\" />\n <ng-template *ngTemplateOutlet=\"decrementButtonIconTemplate\"></ng-template>\n </ng-container>\n </button>\n</span>\n", styles: ["@layer cax{cax-inputnumber,.cax-inputnumber{display:inline-flex}.cax-inputnumber-button{display:flex;align-items:center;justify-content:center;flex:0 0 auto}.cax-inputnumber-buttons-stacked .cax-button.cax-inputnumber-button .cax-button-label,.cax-inputnumber-buttons-horizontal .cax-button.cax-inputnumber-button .cax-button-label{display:none}.cax-inputnumber-buttons-stacked .cax-button.cax-inputnumber-button-up{border-radius:0 8px 0 0;padding:0}.cax-inputnumber-buttons-stacked .cax-inputnumber-input{border-top-right-radius:0;border-bottom-right-radius:0}.cax-inputnumber-buttons-stacked .cax-button.cax-inputnumber-button-down{border-radius:0 0 8px;padding:0}.cax-inputnumber-buttons-stacked .cax-inputnumber-button-group{display:flex;flex-direction:column}.cax-inputnumber-buttons-stacked .cax-inputnumber-button-group .cax-button.cax-inputnumber-button{flex:1 1 auto}.cax-inputnumber-buttons-horizontal .cax-button.cax-inputnumber-button-up{order:3;border-top-left-radius:0;border-bottom-left-radius:0}.cax-inputnumber-buttons-horizontal .cax-inputnumber-input{order:2;border-radius:0}.cax-inputnumber-buttons-horizontal .cax-button.cax-inputnumber-button-down{order:1;border-top-right-radius:0;border-bottom-right-radius:0}.cax-inputnumber-buttons-vertical{flex-direction:column}.cax-inputnumber-buttons-vertical .cax-button.cax-inputnumber-button-up{order:1;border-bottom-left-radius:0;border-bottom-right-radius:0;width:100%}.cax-inputnumber-buttons-vertical .cax-inputnumber-input{order:2;border-radius:0;text-align:center}.cax-inputnumber-buttons-vertical .cax-button.cax-inputnumber-button-down{order:3;border-top-left-radius:0;border-top-right-radius:0;width:100%}.cax-inputnumber-input{flex:1 1 auto}.cax-fluid cax-inputnumber,.cax-fluid .cax-inputnumber{width:100%}.cax-fluid .cax-inputnumber .cax-inputnumber-input{width:1%}.cax-fluid .cax-inputnumber-buttons-vertical .cax-inputnumber-input{width:100%}.cax-inputnumber-clear-icon{position:absolute;cursor:pointer}.cax-inputnumber-clearable{position:relative}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: InputTextModule }, { kind: "directive", type: i3.InputtextDirective, selector: "[caxInputText]", inputs: ["placeholder", "disabled", "variant"], outputs: ["valueChange"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4.ButtonDirective, selector: "[caxButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain", "link"] }, { kind: "ngmodule", type: AutoFocusModule }, { kind: "directive", type: i5.AutoFocus, selector: "[caxAutoFocus]", inputs: ["autofocus"] }, { kind: "component", type: TimesIcon, selector: "TimesIcon" }, { kind: "component", type: AngleUpIcon, selector: "AngleUpIcon" }, { kind: "component", type: AngleDownIcon, selector: "AngleDownIcon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1164
- }
1165
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: InputNumber, decorators: [{
1166
- type: Component,
1167
- args: [{ selector: 'cax-inputNumber', changeDetection: ChangeDetectionStrategy.OnPush, providers: [INPUTNUMBER_VALUE_ACCESSOR], encapsulation: ViewEncapsulation.None, standalone: true, imports: [CommonModule, InputTextModule, ButtonModule, AutoFocusModule, TimesIcon, AngleUpIcon, AngleDownIcon], host: {
1168
- class: 'cax-element cax-inputwrapper',
1169
- '[class.cax-inputwrapper-filled]': 'filled',
1170
- '[class.cax-inputwrapper-focus]': 'focused',
1171
- '[class.cax-inputnumber-clearable]': 'showClear && buttonLayout != "vertical"'
1172
- }, template: "<span\n [ngClass]=\"{\n 'cax-inputnumber cax-component': true,\n 'cax-inputnumber-buttons-stacked': this.showButtons && this.buttonLayout === 'stacked',\n 'cax-inputnumber-buttons-horizontal': this.showButtons && this.buttonLayout === 'horizontal',\n 'cax-inputnumber-buttons-vertical': this.showButtons && this.buttonLayout === 'vertical',\n 'cax-input-icon-left': (prefix || prefixIcon) && buttonLayout === 'stacked',\n 'cax-input-icon-right': suffix,\n 'cax-disabled': disabled\n }\"\n [ngStyle]=\"style\"\n [class]=\"styleClass\"\n [attr.data-pc-name]=\"'inputnumber'\"\n [attr.data-pc-section]=\"'root'\"\n>\n <!-- Only show prefix/icon in stacked layout -->\n <ng-container *ngIf=\"(prefix || prefixIcon) && buttonLayout === 'stacked'\">\n <i *ngIf=\"prefixIcon\" class=\"cax-input-prefix-icon\" [ngClass]=\"prefixIcon\"></i>\n </ng-container>\n <!-- Down button for horizontal layout -->\n <button *ngIf=\"showButtons && buttonLayout === 'horizontal'\"\n type=\"button\" caxButton\n [severity]=\"'secondary'\"\n [size]=\"'small'\"\n class=\"cax-inputnumber-button cax-inputnumber-button-down\"\n [disabled]=\"disabled\"\n (mousedown)=\"onDownButtonMouseDown($event)\"\n (mouseup)=\"onDownButtonMouseUp()\"\n (mouseleave)=\"onDownButtonMouseLeave()\"\n (keydown)=\"onDownButtonKeyDown($event)\"\n (keyup)=\"onDownButtonKeyUp()\"\n [attr.aria-hidden]=\"true\"\n [attr.data-pc-section]=\"'decrementbutton'\">\n <ng-container *ngIf=\"!decrementButtonIcon\">\n <AngleDownIcon *ngIf=\"!decrementButtonIconTemplate\" [attr.data-pc-section]=\"'decrementbuttonicon'\" />\n <ng-template *ngTemplateOutlet=\"decrementButtonIconTemplate\"></ng-template>\n </ng-container>\n <span *ngIf=\"decrementButtonIcon\" [ngClass]=\"decrementButtonIcon\"></span>\n </button>\n <input\n caxInputText\n #input\n [attr.id]=\"inputId\"\n role=\"spinbutton\"\n [ngClass]=\"'cax-inputnumber-input'\"\n [ngStyle]=\"inputStyle\"\n [class]=\"inputStyleClass\"\n [value]=\"formattedValue()\"\n [attr.variant]=\"variant\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-valuenow]=\"value\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.title]=\"title\"\n [attr.size]=\"size\"\n [attr.name]=\"name\"\n [attr.autocomplete]=\"autocomplete\"\n [attr.maxlength]=\"maxlength\"\n [attr.tabindex]=\"tabindex\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.required]=\"required\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n inputmode=\"decimal\"\n (input)=\"onUserInput($event)\"\n (keydown)=\"onInputKeyDown($event)\"\n (keypress)=\"onInputKeyPress($event)\"\n (paste)=\"onPaste($event)\"\n (click)=\"onInputClick()\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputBlur($event)\"\n [attr.data-pc-section]=\"'input'\"\n caxAutoFocus\n [autofocus]=\"autofocus\"\n [class.cax-variant-filled]=\"variant === 'filled' || config.inputStyle() === 'filled'\"\n />\n <!-- Up button for horizontal layout -->\n <button *ngIf=\"showButtons && buttonLayout === 'horizontal'\"\n type=\"button\" caxButton\n [severity]=\"'secondary'\"\n [size]=\"'small'\"\n class=\"cax-inputnumber-button cax-inputnumber-button-up\"\n [disabled]=\"disabled\"\n (mousedown)=\"onUpButtonMouseDown($event)\"\n (mouseup)=\"onUpButtonMouseUp()\"\n (mouseleave)=\"onUpButtonMouseLeave()\"\n (keydown)=\"onUpButtonKeyDown($event)\"\n (keyup)=\"onUpButtonKeyUp()\"\n [attr.aria-hidden]=\"true\"\n [attr.data-pc-section]=\"'incrementbutton'\">\n <ng-container *ngIf=\"!incrementButtonIcon\">\n <AngleUpIcon *ngIf=\"!incrementButtonIconTemplate\" [attr.data-pc-section]=\"'incrementbuttonicon'\" />\n <ng-template *ngTemplateOutlet=\"incrementButtonIconTemplate\"></ng-template>\n </ng-container>\n <span *ngIf=\"incrementButtonIcon\" [ngClass]=\"incrementButtonIcon\"></span>\n </button>\n <i *ngIf=\"suffix\" class=\"cax-input-suffix\" [innerHTML]=\"suffix\"></i>\n <ng-container *ngIf=\"buttonLayout != 'vertical' && showClear && value\">\n <TimesIcon *ngIf=\"!clearIconTemplate\" [ngClass]=\"'cax-inputnumber-clear-icon'\" (click)=\"clear()\" [attr.data-pc-section]=\"'clearIcon'\" />\n <span *ngIf=\"clearIconTemplate\" (click)=\"clear()\" class=\"cax-inputnumber-clear-icon\" [attr.data-pc-section]=\"'clearIcon'\">\n <ng-template *ngTemplateOutlet=\"clearIconTemplate\"></ng-template>\n </span>\n </ng-container>\n <span class=\"cax-inputnumber-button-group\" *ngIf=\"showButtons && buttonLayout === 'stacked'\" [attr.data-pc-section]=\"'buttonGroup'\">\n <button\n type=\"button\"\n caxButton\n [severity]=\"'secondary'\"\n [size]=\"'small'\"\n [ngClass]=\"{ 'cax-inputnumber-button cax-inputnumber-button-up': true }\"\n class=\"cax-button-icon-only\"\n [class]=\"incrementButtonClass\"\n [disabled]=\"disabled\"\n tabindex=\"-1\"\n (mousedown)=\"onUpButtonMouseDown($event)\"\n (mouseup)=\"onUpButtonMouseUp()\"\n (mouseleave)=\"onUpButtonMouseLeave()\"\n (keydown)=\"onUpButtonKeyDown($event)\"\n (keyup)=\"onUpButtonKeyUp()\"\n [attr.aria-hidden]=\"true\"\n [attr.data-pc-section]=\"'incrementbutton'\"\n >\n <span *ngIf=\"incrementButtonIcon\" [ngClass]=\"incrementButtonIcon\" [attr.data-pc-section]=\"'incrementbuttonicon'\"></span>\n <ng-container *ngIf=\"!incrementButtonIcon\">\n <AngleUpIcon *ngIf=\"!incrementButtonIconTemplate\" [attr.data-pc-section]=\"'incrementbuttonicon'\" />\n <ng-template *ngTemplateOutlet=\"incrementButtonIconTemplate\"></ng-template>\n </ng-container>\n </button>\n <button\n type=\"button\"\n caxButton\n [severity]=\"'secondary'\"\n [size]=\"'small'\"\n [ngClass]=\"{ 'cax-inputnumber-button cax-inputnumber-button-down': true }\"\n class=\"cax-button-icon-only\"\n [class]=\"decrementButtonClass\"\n [disabled]=\"disabled\"\n tabindex=\"-1\"\n [attr.aria-hidden]=\"true\"\n (mousedown)=\"onDownButtonMouseDown($event)\"\n (mouseup)=\"onDownButtonMouseUp()\"\n (mouseleave)=\"onDownButtonMouseLeave()\"\n (keydown)=\"onDownButtonKeyDown($event)\"\n (keyup)=\"onDownButtonKeyUp()\"\n [attr.data-pc-section]=\"'decrementbutton'\"\n >\n <span *ngIf=\"decrementButtonIcon\" [ngClass]=\"decrementButtonIcon\" [attr.data-pc-section]=\"'decrementbuttonicon'\"></span>\n <ng-container *ngIf=\"!decrementButtonIcon\">\n <AngleDownIcon *ngIf=\"!decrementButtonIconTemplate\" [attr.data-pc-section]=\"'decrementbuttonicon'\" />\n <ng-template *ngTemplateOutlet=\"decrementButtonIconTemplate\"></ng-template>\n </ng-container>\n </button>\n </span>\n <button\n *ngIf=\"showButtons && buttonLayout !== 'stacked' && buttonLayout !== 'horizontal'\"\n type=\"button\"\n caxButton\n [severity]=\"'secondary'\"\n [size]=\"'small'\"\n [ngClass]=\"{ 'cax-inputnumber-button cax-inputnumber-button-up': true }\"\n [class]=\"incrementButtonClass\"\n class=\"cax-button-icon-only\"\n [disabled]=\"disabled\"\n tabindex=\"-1\"\n [attr.aria-hidden]=\"true\"\n (mousedown)=\"onUpButtonMouseDown($event)\"\n (mouseup)=\"onUpButtonMouseUp()\"\n (mouseleave)=\"onUpButtonMouseLeave()\"\n (keydown)=\"onUpButtonKeyDown($event)\"\n (keyup)=\"onUpButtonKeyUp()\"\n [attr.data-pc-section]=\"'incrementbutton'\"\n >\n <span *ngIf=\"incrementButtonIcon\" [ngClass]=\"incrementButtonIcon\" [attr.data-pc-section]=\"'incrementbuttonicon'\"></span>\n <ng-container *ngIf=\"!incrementButtonIcon\">\n <AngleUpIcon *ngIf=\"!incrementButtonIconTemplate\" [attr.data-pc-section]=\"'incrementbuttonicon'\" />\n <ng-template *ngTemplateOutlet=\"incrementButtonIconTemplate\"></ng-template>\n </ng-container>\n </button>\n <button\n *ngIf=\"showButtons && buttonLayout !== 'stacked' && buttonLayout !== 'horizontal'\"\n type=\"button\"\n caxButton\n [severity]=\"'secondary'\"\n [size]=\"'small'\"\n [ngClass]=\"{ 'cax-inputnumber-button cax-inputnumber-button-down': true }\"\n class=\"cax-button-icon-only\"\n [class]=\"decrementButtonClass\"\n [disabled]=\"disabled\"\n tabindex=\"-1\"\n [attr.aria-hidden]=\"true\"\n (mousedown)=\"onDownButtonMouseDown($event)\"\n (mouseup)=\"onDownButtonMouseUp()\"\n (mouseleave)=\"onDownButtonMouseLeave()\"\n (keydown)=\"onDownButtonKeyDown($event)\"\n (keyup)=\"onDownButtonKeyUp()\"\n [attr.data-pc-section]=\"'decrementbutton'\"\n >\n <span *ngIf=\"decrementButtonIcon\" [ngClass]=\"decrementButtonIcon\" [attr.data-pc-section]=\"'decrementbuttonicon'\"></span>\n <ng-container *ngIf=\"!decrementButtonIcon\">\n <AngleDownIcon *ngIf=\"!decrementButtonIconTemplate\" [attr.data-pc-section]=\"'decrementbuttonicon'\" />\n <ng-template *ngTemplateOutlet=\"decrementButtonIconTemplate\"></ng-template>\n </ng-container>\n </button>\n</span>\n", styles: ["@layer cax{cax-inputnumber,.cax-inputnumber{display:inline-flex}.cax-inputnumber-button{display:flex;align-items:center;justify-content:center;flex:0 0 auto}.cax-inputnumber-buttons-stacked .cax-button.cax-inputnumber-button .cax-button-label,.cax-inputnumber-buttons-horizontal .cax-button.cax-inputnumber-button .cax-button-label{display:none}.cax-inputnumber-buttons-stacked .cax-button.cax-inputnumber-button-up{border-radius:0 8px 0 0;padding:0}.cax-inputnumber-buttons-stacked .cax-inputnumber-input{border-top-right-radius:0;border-bottom-right-radius:0}.cax-inputnumber-buttons-stacked .cax-button.cax-inputnumber-button-down{border-radius:0 0 8px;padding:0}.cax-inputnumber-buttons-stacked .cax-inputnumber-button-group{display:flex;flex-direction:column}.cax-inputnumber-buttons-stacked .cax-inputnumber-button-group .cax-button.cax-inputnumber-button{flex:1 1 auto}.cax-inputnumber-buttons-horizontal .cax-button.cax-inputnumber-button-up{order:3;border-top-left-radius:0;border-bottom-left-radius:0}.cax-inputnumber-buttons-horizontal .cax-inputnumber-input{order:2;border-radius:0}.cax-inputnumber-buttons-horizontal .cax-button.cax-inputnumber-button-down{order:1;border-top-right-radius:0;border-bottom-right-radius:0}.cax-inputnumber-buttons-vertical{flex-direction:column}.cax-inputnumber-buttons-vertical .cax-button.cax-inputnumber-button-up{order:1;border-bottom-left-radius:0;border-bottom-right-radius:0;width:100%}.cax-inputnumber-buttons-vertical .cax-inputnumber-input{order:2;border-radius:0;text-align:center}.cax-inputnumber-buttons-vertical .cax-button.cax-inputnumber-button-down{order:3;border-top-left-radius:0;border-top-right-radius:0;width:100%}.cax-inputnumber-input{flex:1 1 auto}.cax-fluid cax-inputnumber,.cax-fluid .cax-inputnumber{width:100%}.cax-fluid .cax-inputnumber .cax-inputnumber-input{width:1%}.cax-fluid .cax-inputnumber-buttons-vertical .cax-inputnumber-input{width:100%}.cax-inputnumber-clear-icon{position:absolute;cursor:pointer}.cax-inputnumber-clearable{position:relative}}\n"] }]
1173
- }], ctorParameters: () => [{ type: Document, decorators: [{
1174
- type: Inject,
1175
- args: [DOCUMENT]
1176
- }] }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.Injector }, { type: i1.caxConfig }], propDecorators: { showButtons: [{
1177
- type: Input,
1178
- args: [{ transform: booleanAttribute }]
1179
- }], format: [{
1180
- type: Input,
1181
- args: [{ transform: booleanAttribute }]
1182
- }], buttonLayout: [{
1183
- type: Input
1184
- }], inputId: [{
1185
- type: Input
1186
- }], styleClass: [{
1187
- type: Input
1188
- }], style: [{
1189
- type: Input
1190
- }], placeholder: [{
1191
- type: Input
1192
- }], size: [{
1193
- type: Input,
1194
- args: [{ transform: numberAttribute }]
1195
- }], maxlength: [{
1196
- type: Input,
1197
- args: [{ transform: numberAttribute }]
1198
- }], tabindex: [{
1199
- type: Input,
1200
- args: [{ transform: numberAttribute }]
1201
- }], title: [{
1202
- type: Input
1203
- }], ariaLabelledBy: [{
1204
- type: Input
1205
- }], ariaLabel: [{
1206
- type: Input
1207
- }], ariaRequired: [{
1208
- type: Input,
1209
- args: [{ transform: booleanAttribute }]
1210
- }], name: [{
1211
- type: Input
1212
- }], required: [{
1213
- type: Input,
1214
- args: [{ transform: booleanAttribute }]
1215
- }], autocomplete: [{
1216
- type: Input
1217
- }], min: [{
1218
- type: Input,
1219
- args: [{ transform: numberAttribute }]
1220
- }], max: [{
1221
- type: Input,
1222
- args: [{ transform: numberAttribute }]
1223
- }], incrementButtonClass: [{
1224
- type: Input
1225
- }], decrementButtonClass: [{
1226
- type: Input
1227
- }], incrementButtonIcon: [{
1228
- type: Input
1229
- }], decrementButtonIcon: [{
1230
- type: Input
1231
- }], readonly: [{
1232
- type: Input,
1233
- args: [{ transform: booleanAttribute }]
1234
- }], step: [{
1235
- type: Input,
1236
- args: [{ transform: numberAttribute }]
1237
- }], allowEmpty: [{
1238
- type: Input,
1239
- args: [{ transform: booleanAttribute }]
1240
- }], locale: [{
1241
- type: Input
1242
- }], localeMatcher: [{
1243
- type: Input
1244
- }], mode: [{
1245
- type: Input
1246
- }], currency: [{
1247
- type: Input
1248
- }], currencyDisplay: [{
1249
- type: Input
1250
- }], useGrouping: [{
1251
- type: Input,
1252
- args: [{ transform: booleanAttribute }]
1253
- }], variant: [{
1254
- type: Input
1255
- }], minFractionDigits: [{
1256
- type: Input,
1257
- args: [{ transform: (value) => numberAttribute(value, null) }]
1258
- }], maxFractionDigits: [{
1259
- type: Input,
1260
- args: [{ transform: (value) => numberAttribute(value, null) }]
1261
- }], prefixIcon: [{
1262
- type: Input
1263
- }], prefix: [{
1264
- type: Input
1265
- }], suffix: [{
1266
- type: Input
1267
- }], inputStyle: [{
1268
- type: Input
1269
- }], inputStyleClass: [{
1270
- type: Input
1271
- }], showClear: [{
1272
- type: Input,
1273
- args: [{ transform: booleanAttribute }]
1274
- }], autofocus: [{
1275
- type: Input,
1276
- args: [{ transform: booleanAttribute }]
1277
- }], disabled: [{
1278
- type: Input
1279
- }], onInput: [{
1280
- type: Output
1281
- }], onFocus: [{
1282
- type: Output
1283
- }], onBlur: [{
1284
- type: Output
1285
- }], onKeyDown: [{
1286
- type: Output
1287
- }], onClear: [{
1288
- type: Output
1289
- }], input: [{
1290
- type: ViewChild,
1291
- args: ['input']
1292
- }], templates: [{
1293
- type: ContentChildren,
1294
- args: [CaxTemplate]
1295
- }] } });
1296
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXRudW1iZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvaW5wdXRudW1iZXIvaW5wdXRudW1iZXIudHMiLCIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvaW5wdXRudW1iZXIvaW5wdXRudW1iZXIuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFFSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULGVBQWUsRUFFZixZQUFZLEVBQ1osTUFBTSxFQUVOLEtBQUssRUFHTCxNQUFNLEVBSU4sU0FBUyxFQUNULGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsVUFBVSxFQUNWLGVBQWUsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRixPQUFPLEVBQWEsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7O0FBSTlELE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFRO0lBQzNDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUs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QUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBS3pCLFFBQVE7c0JBQXBCLEtBQUs7Z0JBZUksT0FBTztzQkFBaEIsTUFBTTtnQkFNRyxPQUFPO3NCQUFoQixNQUFNO2dCQU1HLE1BQU07c0JBQWYsTUFBTTtnQkFNRyxTQUFTO3NCQUFsQixNQUFNO2dCQUtHLE9BQU87c0JBQWhCLE1BQU07Z0JBRWEsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPO2dCQUVZLFNBQVM7c0JBQXRDLGVBQWU7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSwgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0LFxuICAgIEluamVjdG9yLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIGZvcndhcmRSZWYsXG4gICAgbnVtYmVyQXR0cmlidXRlXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjYXhDb25maWcsIENheFRlbXBsYXRlIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vYXBpJztcbmltcG9ydCB7IEF1dG9Gb2N1c01vZHVsZSB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL2F1dG9mb2N1cyc7XG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9idXR0b24nO1xuaW1wb3J0IHsgRG9tSGFuZGxlciB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL2RvbSc7XG5pbXBvcnQgeyBBbmdsZURvd25JY29uIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vaWNvbnMvYW5nbGVkb3duJztcbmltcG9ydCB7IEFuZ2xlVXBJY29uIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vaWNvbnMvYW5nbGV1cCc7XG5pbXBvcnQgeyBUaW1lc0ljb24gfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9pY29ucy90aW1lcyc7XG5pbXBvcnQgeyBJbnB1dFRleHRNb2R1bGUgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9pbnB1dHRleHQnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS90cy1oZWxwZXJzJztcbmltcG9ydCB7IElucHV0TnVtYmVySW5wdXRFdmVudCB9IGZyb20gJy4vaW5wdXRudW1iZXIuaW50ZXJmYWNlJztcblxuZXhwb3J0IGNvbnN0IElOUFVUTlVNQkVSX1ZBTFVFX0FDQ0VTU09SOiBhbnkgPSB7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW5wdXROdW1iZXIpLFxuICAgIG11bHRpOiB0cnVlXG59O1xuLyoqXG4gKiBJbnB1dE51bWJlciBpcyBhbiBpbnB1dCBjb21wb25lbnQgdG8gcHJvdmlkZSBudW1lcmljYWwgaW5wdXQuXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2NheC1pbnB1dE51bWJlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lucHV0bnVtYmVyLmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW0lOUFVUTlVNQkVSX1ZBTFVFX0FDQ0VTU09SXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0eWxlVXJsczogWycuL2lucHV0bnVtYmVyLnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElucHV0VGV4dE1vZHVsZSwgQnV0dG9uTW9kdWxlLCBBdXRvRm9jdXNNb2R1bGUsIFRpbWVzSWNvbiwgQW5nbGVVcEljb24sIEFuZ2xlRG93bkljb25dLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdjYXgtZWxlbWVudCBjYXgtaW5wdXR3cmFwcGVyJyxcbiAgICAgICAgJ1tjbGFzcy5jYXgtaW5wdXR3cmFwcGVyLWZpbGxlZF0nOiAnZmlsbGVkJyxcbiAgICAgICAgJ1tjbGFzcy5jYXgtaW5wdXR3cmFwcGVyLWZvY3VzXSc6ICdmb2N1c2VkJyxcbiAgICAgICAgJ1tjbGFzcy5jYXgtaW5wdXRudW1iZXItY2xlYXJhYmxlXSc6ICdzaG93Q2xlYXIgJiYgYnV0dG9uTGF5b3V0ICE9IFwidmVydGljYWxcIidcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIElucHV0TnVtYmVyIGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkNoYW5nZXMsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgICAvKipcbiAgICAgKiBEaXNwbGF5cyBzcGlubmVyIGJ1dHRvbnMuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNob3dCdXR0b25zOiBib29sZWFuID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBmb3JtYXQgdGhlIHZhbHVlLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBmb3JtYXQ6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIExheW91dCBvZiB0aGUgYnV0dG9ucywgdmFsaWQgdmFsdWVzIGFyZSBcInN0YWNrZWRcIiAoZGVmYXVsdCksIFwiaG9yaXpvbnRhbFwiIGFuZCBcInZlcnRpY2FsXCIuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgYnV0dG9uTGF5b3V0OiBzdHJpbmcgPSAnc3RhY2tlZCc7XG4gICAgLyoqXG4gICAgICogSWRlbnRpZmllciBvZiB0aGUgZm9jdXMgaW5wdXQgdG8gbWF0Y2ggYSBsYWJlbCBkZWZpbmVkIGZvciB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGlucHV0SWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBTdHlsZSBjbGFzcyBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBJbmxpbmUgc3R5bGUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzdHlsZTogeyBba2xhc3M6IHN0cmluZ106IGFueSB9IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBBZHZpc29yeSBpbmZvcm1hdGlvbiB0byBkaXNwbGF5IG9uIGlucHV0LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogU2l6ZSBvZiB0aGUgaW5wdXQgZmllbGQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgc2l6ZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIE1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlciBhbGxvd3MgaW4gdGhlIGlucHV0IGZpZWxkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIG1heGxlbmd0aDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFNwZWNpZmllcyB0YWIgb3JkZXIgb2YgdGhlIGVsZW1lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgdGFiaW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBUaXRsZSB0ZXh0IG9mIHRoZSBpbnB1dCB0ZXh0LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogU3BlY2lmaWVzIG9uZSBvciBtb3JlIElEcyBpbiB0aGUgRE9NIHRoYXQgbGFiZWxzIHRoZSBpbnB1dCBmaWVsZC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBhcmlhTGFiZWxsZWRCeTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFVzZWQgdG8gZGVmaW5lIGEgc3RyaW5nIHRoYXQgbGFiZWxzIHRoZSBpbnB1dCBlbGVtZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFVzZWQgdG8gaW5kaWNhdGUgdGhhdCB1c2VyIGlucHV0IGlzIHJlcXVpcmVkIG9uIGFuIGVsZW1lbnQgYmVmb3JlIGEgZm9ybSBjYW4gYmUgc3VibWl0dGVkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhcmlhUmVxdWlyZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgaW5wdXQgZmllbGQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEluZGljYXRlcyB0aGF0IHdoZXRoZXIgdGhlIGlucHV0IGZpZWxkIGlzIHJlcXVpcmVkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSByZXF1aXJlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBVc2VkIHRvIGRlZmluZSBhIHN0cmluZyB0aGF0IGF1dG9jb21wbGV0ZSBhdHRyaWJ1dGUgdGhlIGN1cnJlbnQgZWxlbWVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBhdXRvY29tcGxldGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBNaW5pbnVtIGJvdW5kYXJ5IHZhbHVlLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIG1pbjogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIE1heGltdW0gYm91bmRhcnkgdmFsdWUuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgbWF4OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogU3R5bGUgY2xhc3Mgb2YgdGhlIGluY3JlbWVudCBidXR0b24uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgaW5jcmVtZW50QnV0dG9uQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBTdHlsZSBjbGFzcyBvZiB0aGUgZGVjcmVtZW50IGJ1dHRvbi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBkZWNyZW1lbnRCdXR0b25DbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFN0eWxlIGNsYXNzIG9mIHRoZSBpbmNyZW1lbnQgYnV0dG9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGluY3JlbWVudEJ1dHRvbkljb246IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBTdHlsZSBjbGFzcyBvZiB0aGUgZGVjcmVtZW50IGJ1dHRvbi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBkZWNyZW1lbnRCdXR0b25JY29uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hlbiBwcmVzZW50LCBpdCBzcGVjaWZpZXMgdGhhdCBhbiBpbnB1dCBmaWVsZCBpcyByZWFkLW9ubHkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogU3RlcCBmYWN0b3IgdG8gaW5jcmVtZW50L2RlY3JlbWVudCB0aGUgdmFsdWUuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgc3RlcDogbnVtYmVyID0gMTtcbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGlucHV0IGZpZWxkIGlzIGVtcHR5LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhbGxvd0VtcHR5OiBib29sZWFuID0gdHJ1ZTtcbiAgICAvKipcbiAgICAgKiBMb2NhbGUgdG8gYmUgdXNlZCBpbiBmb3JtYXR0aW5nLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGxvY2FsZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFRoZSBsb2NhbGUgbWF0Y2hpbmcgYWxnb3JpdGhtIHRvIHVzZS4gUG9zc2libGUgdmFsdWVzIGFyZSBcImxvb2t1cFwiIGFuZCBcImJlc3QgZml0XCI7IHRoZSBkZWZhdWx0IGlzIFwiYmVzdCBmaXRcIi4gU2VlIExvY2FsZSBOZWdvdGlhdGlvbiBmb3IgZGV0YWlscy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBsb2NhbGVNYXRjaGVyOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB0aGUgYmVoYXZpb3Igb2YgdGhlIGNvbXBvbmVudCwgdmFsaWQgdmFsdWVzIGFyZSBcImRlY2ltYWxcIiBhbmQgXCJjdXJyZW5jeVwiLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIG1vZGU6IHN0cmluZyA9ICdkZWNpbWFsJztcbiAgICAvKipcbiAgICAgKiBUaGUgY3VycmVuY3kgdG8gdXNlIGluIGN1cnJlbmN5IGZvcm1hdHRpbmcuIFBvc3NpYmxlIHZhbHVlcyBhcmUgdGhlIElTTyA0MjE3IGN1cnJlbmN5IGNvZGVzLCBzdWNoIGFzIFwiVVNEXCIgZm9yIHRoZSBVUyBkb2xsYXIsIFwiRVVSXCIgZm9yIHRoZSBldXJvLCBvciBcIkNOWVwiIGZvciB0aGUgQ2hpbmVzZSBSTUIuIFRoZXJlIGlzIG5vIGRlZmF1bHQgdmFsdWU7IGlmIHRoZSBzdHlsZSBpcyBcImN1cnJlbmN5XCIsIHRoZSBjdXJyZW5jeSBwcm9wZXJ0eSBtdXN0IGJlIHByb3ZpZGVkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGN1cnJlbmN5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogSG93IHRvIGRpc3BsYXkgdGhlIGN1cnJlbmN5IGluIGN1cnJlbmN5IGZvcm1hdHRpbmcuIFBvc3NpYmxlIHZhbHVlcyBhcmUgXCJzeW1ib2xcIiB0byB1c2UgYSBsb2NhbGl6ZWQgY3VycmVuY3kgc3ltYm9sIHN1Y2ggYXMg4oKsLCDDvFwiY29kZVwiIHRvIHVzZSB0aGUgSVNPIGN1cnJlbmN5IGNvZGUsIFwibmFtZVwiIHRvIHVzZSBhIGxvY2FsaXplZCBjdXJyZW5jeSBuYW1lIHN1Y2ggYXMgXCJkb2xsYXJcIjsgdGhlIGRlZmF1bHQgaXMgXCJzeW1ib2xcIi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBjdXJyZW5jeURpc3BsYXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIHVzZSBncm91cGluZyBzZXBhcmF0b3JzLCBzdWNoIGFzIHRob3VzYW5kcyBzZXBhcmF0b3JzIG9yIHRob3VzYW5kL2xha2gvY3JvcmUgc2VwYXJhdG9ycy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgdXNlR3JvdXBpbmc6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIFNwZWNpZmllcyB0aGUgaW5wdXQgdmFyaWFudCBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHZhcmlhbnQ6ICdmaWxsZWQnIHwgJ291dGxpbmVkJyA9ICdvdXRsaW5lZCc7XG4gICAgLyoqXG4gICAgICogVGhlIG1pbmltdW0gbnVtYmVyIG9mIGZyYWN0aW9uIGRpZ2l0cyB0byB1c2UuIFBvc3NpYmxlIHZhbHVlcyBhcmUgZnJvbSAwIHRvIDIwOyB0aGUgZGVmYXVsdCBmb3IgcGxhaW4gbnVtYmVyIGFuZCBwZXJjZW50IGZvcm1hdHRpbmcgaXMgMDsgdGhlIGRlZmF1bHQgZm9yIGN1cnJlbmN5IGZvcm1hdHRpbmcgaXMgdGhlIG51bWJlciBvZiBtaW5vciB1bml0IGRpZ2l0cyBwcm92aWRlZCBieSB0aGUgSVNPIDQyMTcgY3VycmVuY3kgY29kZSBsaXN0ICgyIGlmIHRoZSBsaXN0IGRvZXNuJ3QgcHJvdmlkZSB0aGF0IGluZm9ybWF0aW9uKS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06ICh2YWx1ZTogdW5rbm93bikgPT4gbnVtYmVyQXR0cmlidXRlKHZhbHVlLCBudWxsKSB9KSBtaW5GcmFjdGlvbkRpZ2l0czogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBmcmFjdGlvbiBkaWdpdHMgdG8gdXNlLiBQb3NzaWJsZSB2YWx1ZXMgYXJlIGZyb20gMCB0byAyMDsgdGhlIGRlZmF1bHQgZm9yIHBsYWluIG51bWJlciBmb3JtYXR0aW5nIGlzIHRoZSBsYXJnZXIgb2YgbWluaW11bUZyYWN0aW9uRGlnaXRzIGFuZCAzOyB0aGUgZGVmYXVsdCBmb3IgY3VycmVuY3kgZm9ybWF0dGluZyBpcyB0aGUgbGFyZ2VyIG9mIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyBhbmQgdGhlIG51bWJlciBvZiBtaW5vciB1bml0IGRpZ2l0cyBwcm92aWRlZCBieSB0aGUgSVNPIDQyMTcgY3VycmVuY3kgY29kZSBsaXN0ICgyIGlmIHRoZSBsaXN0IGRvZXNuJ3QgcHJvdmlkZSB0aGF0IGluZm9ybWF0aW9uKS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06ICh2YWx1ZTogdW5rbm93bikgPT4gbnVtYmVyQXR0cmlidXRlKHZhbHVlLCBudWxsKSB9KSBtYXhGcmFjdGlvbkRpZ2l0czogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogSWNvbiBjbGFzcyB0byBzaG93IGJlZm9yZSB0aGUgaW5wdXQgdmFsdWVcbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwcmVmaXhJY29uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogVGV4dCB0byBkaXNwbGF5IGJlZm9yZSB0aGUgdmFsdWUuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgcHJlZml4OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogVGV4dCB0byBkaXNwbGF5IGFmdGVyIHRoZSB2YWx1ZS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzdWZmaXg6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBJbmxpbmUgc3R5bGUgb2YgdGhlIGlucHV0IGZpZWxkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGlucHV0U3R5bGU6IGFueTtcbiAgICAvKipcbiAgICAgKiBTdHlsZSBjbGFzcyBvZiB0aGUgaW5wdXQgZmllbGQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgaW5wdXRTdHlsZUNsYXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hlbiBlbmFibGVkLCBhIGNsZWFyIGljb24gaXMgZGlzcGxheWVkIHRvIGNsZWFyIHRoZSB2YWx1ZS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2hvd0NsZWFyOiBib29sZWFuID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogV2hlbiBwcmVzZW50LCBpdCBzcGVjaWZpZXMgdGhhdCB0aGUgY29tcG9uZW50IHNob3VsZCBhdXRvbWF0aWNhbGx5IGdldCBmb2N1cyBvbiBsb2FkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhdXRvZm9jdXM6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hlbiBwcmVzZW50LCBpdCBzcGVjaWZpZXMgdGhhdCB0aGUgZWxlbWVudCBzaG91bGQgYmUgZGlzYWJsZWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gICAgfVxuICAgIHNldCBkaXNhYmxlZChkaXNhYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAoZGlzYWJsZWQpIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gZGlzYWJsZWQ7XG5cbiAgICAgICAgaWYgKHRoaXMudGltZXIpIHRoaXMuY2xlYXJUaW1lcigpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugb24gaW5wdXQuXG4gICAgICogQHBhcmFtIHtJbnB1dE51bWJlcklucHV0RXZlbnR9IGV2ZW50IC0gQ3VzdG9tIGlucHV0IGV2ZW50LlxuICAgICAqIEBncm91cCBFbWl0c1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvbklucHV0OiBFdmVudEVtaXR0ZXI8SW5wdXROdW1iZXJJbnB1dEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8SW5wdXROdW1iZXJJbnB1dEV2ZW50PigpO1xuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIHRoZSBjb21wb25lbnQgcmVjZWl2ZXMgZm9jdXMuXG4gICAgICogQHBhcmFtIHtFdmVudH0gZXZlbnQgLSBCcm93c2VyIGV2ZW50LlxuICAgICAqIEBncm91cCBFbWl0c1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvbkZvY3VzOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiB0aGUgY29tcG9uZW50IGxvc2VzIGZvY3VzLlxuICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50IC0gQnJvd3NlciBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25CbHVyOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugb24gaW5wdXQga2V5IHByZXNzLlxuICAgICAqIEBwYXJhbSB7S2V5Ym9hcmRFdmVudH0gZXZlbnQgLSBLZXlib2FyZCBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25LZXlEb3duOiBFdmVudEVtaXR0ZXI8S2V5Ym9hcmRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEtleWJvYXJkRXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gY2xlYXIgdG9rZW4gaXMgY2xpY2tlZC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25DbGVhcjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICBAQ29udGVudENoaWxkcmVuKENheFRlbXBsYXRlKSB0ZW1wbGF0ZXMhOiBRdWVyeUxpc3Q8Q2F4VGVtcGxhdGU+O1xuXG4gICAgY2xlYXJJY29uVGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgaW5jcmVtZW50QnV0dG9uSWNvblRlbXBsYXRlOiBOdWxsYWJsZTxUZW1wbGF0ZVJlZjxhbnk+PjtcblxuICAgIGRlY3JlbWVudEJ1dHRvbkljb25UZW1wbGF0ZTogTnVsbGFibGU8VGVtcGxhdGVSZWY8YW55Pj47XG5cbiAgICB2YWx1ZTogTnVsbGFibGU8bnVtYmVyPjtcblxuICAgIG9uTW9kZWxDaGFuZ2U6IEZ1bmN0aW9uID0gKCkgPT4ge307XG5cbiAgICBvbk1vZGVsVG91Y2hlZDogRnVuY3Rpb24gPSAoKSA9PiB7fTtcblxuICAgIGZvY3VzZWQ6IE51bGxhYmxlPGJvb2xlYW4+O1xuXG4gICAgaW5pdGlhbGl6ZWQ6IE51bGxhYmxlPGJvb2xlYW4+O1xuXG4gICAgZ3JvdXBDaGFyOiBzdHJpbmcgPSAnJztcblxuICAgIHByZWZpeENoYXI6IHN0cmluZyA9ICcnO1xuXG4gICAgc3VmZml4Q2hhcjogc3RyaW5nID0gJyc7XG5cbiAgICBpc1NwZWNpYWxDaGFyOiBOdWxsYWJsZTxib29sZWFuPjtcblxuICAgIHRpbWVyOiBhbnk7XG5cbiAgICBsYXN0VmFsdWU6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICBfbnVtZXJhbDogYW55O1xuXG4gICAgbnVtYmVyRm9ybWF0OiBhbnk7XG5cbiAgICBfZGVjaW1hbDogYW55O1xuXG4gICAgX2RlY2ltYWxDaGFyOiBzdHJpbmc7XG5cbiAgICBfZ3JvdXA6IGFueTtcblxuICAgIF9taW51c1NpZ246IGFueTtcblxuICAgIF9jdXJyZW5jeTogTnVsbGFibGU8UmVnRXhwIHwgc3RyaW5nPjtcblxuICAgIF9wcmVmaXg6IE51bGxhYmxlPFJlZ0V4cD47XG5cbiAgICBfc3VmZml4OiBOdWxsYWJsZTxSZWdFeHA+O1xuXG4gICAgX2luZGV4OiBudW1iZXIgfCBhbnk7XG5cbiAgICBfZGlzYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgICBwcml2YXRlIG5nQ29udHJvbDogTmdDb250cm9sIHwgbnVsbCA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQsXG4gICAgICAgIHB1YmxpYyBlbDogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwdWJsaWMgY29uZmlnOiBjYXhDb25maWdcbiAgICApIHt9XG5cbiAgICBuZ09uQ2hhbmdlcyhzaW1wbGVDaGFuZ2U6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgY29uc3QgcHJvcHMgPSBbJ2xvY2FsZScsICdsb2NhbGVNYXRjaGVyJywgJ21vZGUnLCAnY3VycmVuY3knLCAnY3VycmVuY3lEaXNwbGF5JywgJ3VzZUdyb3VwaW5nJywgJ21pbkZyYWN0aW9uRGlnaXRzJywgJ21heEZyYWN0aW9uRGlnaXRzJywgJ3ByZWZpeCcsICdzdWZmaXgnXTtcbiAgICAgICAgaWYgKHByb3BzLnNvbWUoKHApID0+ICEhc2ltcGxlQ2hhbmdlW3BdKSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVDb25zdHJ1Y3RQYXJzZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChpdGVtLmdldFR5cGUoKSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2NsZWFyaWNvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJJY29uVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2luY3JlbWVudGJ1dHRvbmljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluY3JlbWVudEJ1dHRvbkljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZGVjcmVtZW50YnV0dG9uaWNvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGVjcmVtZW50QnV0dG9uSWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLm5nQ29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0KE5nQ29udHJvbCwgbnVsbCwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAgICAgICB0aGlzLmNvbnN0cnVjdFBhcnNlcigpO1xuXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGdldE9wdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsb2NhbGVNYXRjaGVyOiB0aGlzLmxvY2FsZU1hdGNoZXIsXG4gICAgICAgICAgICBzdHlsZTogdGhpcy5tb2RlLFxuICAgICAgICAgICAgY3VycmVuY3k6IHRoaXMuY3VycmVuY3ksXG4gICAgICAgICAgICBjdXJyZW5jeURpc3BsYXk6IHRoaXMuY3VycmVuY3lEaXNwbGF5LFxuICAgICAgICAgICAgdXNlR3JvdXBpbmc6IHRoaXMudXNlR3JvdXBpbmcsXG4gICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IHRoaXMubWluRnJhY3Rpb25EaWdpdHMgPz8gdW5kZWZpbmVkLFxuICAgICAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiB0aGlzLm1heEZyYWN0aW9uRGlnaXRzID8/IHVuZGVmaW5lZFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0cnVjdFBhcnNlcigpIHtcbiAgICAgICAgdGhpcy5udW1iZXJGb3JtYXQgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQodGhpcy5sb2NhbGUsIHRoaXMuZ2V0T3B0aW9ucygpKTtcbiAgICAgICAgY29uc3QgbnVtZXJhbHMgPSBbLi4ubmV3IEludGwuTnVtYmVyRm9ybWF0KHRoaXMubG9jYWxlLCB7IHVzZUdyb3VwaW5nOiBmYWxzZSB9KS5mb3JtYXQoOTg3NjU0MzIxMCldLnJldmVyc2UoKTtcbiAgICAgICAgY29uc3QgaW5kZXggPSBuZXcgTWFwKG51bWVyYWxzLm1hcCgoZCwgaSkgPT4gW2QsIGldKSk7XG4gICAgICAgIHRoaXMuX251bWVyYWwgPSBuZXcgUmVnRXhwKGBbJHtudW1lcmFscy5qb2luKCcnKX1dYCwgJ2cnKTtcbiAgICAgICAgdGhpcy5fZ3JvdXAgPSB0aGlzLmdldEdyb3VwaW5nRXhwcmVzc2lvbigpO1xuICAgICAgICB0aGlzLl9taW51c1NpZ24gPSB0aGlzLmdldE1pbnVzU2lnbkV4cHJlc3Npb24oKTtcbiAgICAgICAgdGhpcy5fY3VycmVuY3kgPSB0aGlzLmdldEN1cnJlbmN5RXhwcmVzc2lvbigpO1xuICAgICAgICB0aGlzLl9kZWNpbWFsID0gdGhpcy5nZXREZWNpbWFsRXhwcmVzc2lvbigpO1xuICAgICAgICB0aGlzLl9kZWNpbWFsQ2hhciA9IHRoaXMuZ2V0RGVjaW1hbENoYXIoKTtcbiAgICAgICAgdGhpcy5fc3VmZml4ID0gdGhpcy5nZXRTdWZmaXhFeHByZXNzaW9uKCk7XG4gICAgICAgIHRoaXMuX3ByZWZpeCA9IHRoaXMuZ2V0UHJlZml4RXhwcmVzc2lvbigpO1xuICAgICAgICB0aGlzLl9pbmRleCA9IChkOiBhbnkpID0+IGluZGV4LmdldChkKTtcbiAgICB9XG5cbiAgICB1cGRhdGVDb25zdHJ1Y3RQYXJzZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnN0cnVjdFBhcnNlcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZXNjYXBlUmVnRXhwKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0ZXh0LnJlcGxhY2UoL1stW1xcXXt9KCkqKz8uLFxcXFxeJHwjXFxzXS9nLCAnXFxcXCQmJyk7XG4gICAgfVxuXG4gICAgZ2V0RGVjaW1hbEV4cHJlc3Npb24oKTogUmVnRXhwIHtcbiAgICAgICAgY29uc3QgZGVjaW1hbENoYXIgPSB0aGlzLmdldERlY2ltYWxDaGFyKCk7XG4gICAgICAgIHJldHVybiBuZXcgUmVnRXhwKGBbJHtkZWNpbWFsQ2hhcn1dYCwgJ2cnKTtcbiAgICB9XG5cbiAgICBnZXREZWNpbWFsQ2hhcigpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQodGhpcy5sb2NhbGUsIHsgLi4udGhpcy5nZXRPcHRpb25zKCksIHVzZUdyb3VwaW5nOiBmYWxzZSB9KTtcbiAgICAgICAgcmV0dXJuIGZvcm1hdHRlclxuICAgICAgICAgICAgLmZvcm1hdCgxLjEpXG4gICAgICAgICAgICAucmVwbGFjZSh0aGlzLl9jdXJyZW5jeSBhcyBSZWdFeHAgfCBzdHJpbmcsICcnKVxuICAgICAgICAgICAgLnRyaW0oKVxuICAgICAgICAgICAgLnJlcGxhY2UodGhpcy5fbnVtZXJhbCwgJycpO1xuICAgIH1cblxuICAgIGdldEdyb3VwaW5nRXhwcmVzc2lvbigpOiBSZWdFeHAge1xuICAgICAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQodGhpcy5sb2NhbGUsIHsgdXNlR3JvdXBpbmc6IHRydWUgfSk7XG4gICAgICAgIHRoaXMuZ3JvdXBDaGFyID0gZm9ybWF0dGVyLmZvcm1hdCgxMDAwMDAwKS50cmltKCkucmVwbGFjZSh0aGlzLl9udW1lcmFsLCAnJykuY2hhckF0KDApO1xuICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChgWyR7dGhpcy5ncm91cENoYXJ9XWAsICdnJyk7XG4gICAgfVxuXG4gICAgZ2V0TWludXNTaWduRXhwcmVzc2lvbigpOiBSZWdFeHAge1xuICAgICAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQodGhpcy5sb2NhbGUsIHsgdXNlR3JvdXBpbmc6IGZhbHNlIH0pO1xuICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChgWyR7Zm9ybWF0dGVyLmZvcm1hdCgtMSkudHJpbSgpLnJlcGxhY2UodGhpcy5fbnVtZXJhbCwgJycpfV1gLCAnZycpO1xuICAgIH1cblxuICAgIGdldEN1cnJlbmN5RXhwcmVzc2lvbigpOiBSZWdFeHAge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW5jeSkge1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KHRoaXMubG9jYWxlLCB7IHN0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogdGhpcy5jdXJyZW5jeSwgY3VycmVuY3lEaXNwbGF5OiB0aGlzLmN1cnJlbmN5RGlzcGxheSwgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAwLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDAgfSk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChgWyR7Zm9ybWF0dGVyLmZvcm1hdCgxKS5yZXBsYWNlKC9cXHMvZywgJycpLnJlcGxhY2UodGhpcy5fbnVtZXJhbCwgJycpLnJlcGxhY2UodGhpcy5fZ3JvdXAsICcnKX1dYCwgJ2cnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXcgUmVnRXhwKGBbXWAsICdnJyk7XG4gICAgfVxuXG4gICAgZ2V0UHJlZml4RXhwcmVzc2lvbigpOiBSZWdFeHAge1xuICAgICAgICBpZiAodGhpcy5wcmVmaXgpIHtcbiAgICAgICAgICAgIHRoaXMucHJlZml4Q2hhciA9IHRoaXMucHJlZml4O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KHRoaXMubG9jYWxlLCB7IHN0eWxlOiB0aGlzLm1vZGUsIGN1cnJlbmN5OiB0aGlzLmN1cnJlbmN5LCBjdXJyZW5jeURpc3BsYXk6IHRoaXMuY3VycmVuY3lEaXNwbGF5IH0pO1xuICAgICAgICAgICAgdGhpcy5wcmVmaXhDaGFyID0gZm9ybWF0dGVyLmZvcm1hdCgxKS5zcGxpdCgnMScpWzBdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAoYCR7dGhpcy5lc2NhcGVSZWdFeHAodGhpcy5wcmVmaXhDaGFyIHx8ICcnKX1gLCAnZycpO1xuICAgIH1cblxuICAgIGdldFN1ZmZpeEV4cHJlc3Npb24oKTogUmVnRXhwIHtcbiAgICAgICAgaWYgKHRoaXMuc3VmZml4KSB7XG4gICAgICAgICAgICB0aGlzLnN1ZmZpeENoYXIgPSB0aGlzLnN1ZmZpeDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCh0aGlzLmxvY2FsZSwgeyBzdHlsZTogdGhpcy5tb2RlLCBjdXJyZW5jeTogdGhpcy5jdXJyZW5jeSwgY3VycmVuY3lEaXNwbGF5OiB0aGlzLmN1cnJlbmN5RGlzcGxheSwgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAwLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDAgfSk7XG4gICAgICAgICAgICB0aGlzLnN1ZmZpeENoYXIgPSBmb3JtYXR0ZXIuZm9ybWF0KDEpLnNwbGl0KCcxJylbMV07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChgJHt0aGlzLmVzY2FwZVJlZ0V4cCh0aGlzLnN1ZmZpeENoYXIgfHwgJycpfWAsICdnJyk7XG4gICAgfVxuXG4gICAgZ2V0IGlzQmx1clVwZGF0ZU9uTW9kZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmdDb250cm9sPy5jb250cm9sPy51cGRhdGVPbiA9PT0gJ2JsdXInO1xuICAgIH1cblxuICAgIGZvcm1hdFZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gJy0nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtYXQpIHtcbiAgICAgICAgICAgICAgICBsZXQgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KHRoaXMubG9jYWxlLCB0aGlzLmdldE9wdGlvbnMoKSk7XG4gICAgICAgICAgICAgICAgbGV0IGZvcm1hdHRlZFZhbHVlID0gZm9ybWF0dGVyLmZvcm1hdCh2YWx1ZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wcmVmaXggJiYgdmFsdWUgIT0gdGhpcy5wcmVmaXgpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkVmFsdWUgPSB0aGlzLnByZWZpeCArICcgJyArIGZvcm1hdHRlZFZhbHVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnN1ZmZpeCAmJiB2YWx1ZSAhPSB0aGlzLnN1ZmZpeCkge1xuICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWRWYWx1ZSA9IGZvcm1hdHRlZFZhbHVlICsgdGhpcy5zdWZmaXg7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlZFZhbHVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBwYXJzZVZhbHVlKHRleHQ6IGFueSkge1xuICAgICAgICBjb25zdCBzdWZmaXhSZWdleCA9IG5ldyBSZWdFeHAodGhpcy5fc3VmZml4LCAnJyk7XG4gICAgICAgIGNvbnN0IHByZWZpeFJlZ2V4ID0gbmV3IFJlZ0V4cCh0aGlzLl9wcmVmaXgsICcnKTtcbiAgICAgICAgY29uc3QgY3VycmVuY3lSZWdleCA9IG5ldyBSZWdFeHAodGhpcy5fY3VycmVuY3ksICcnKTtcblxuICAgICAgICBsZXQgZmlsdGVyZWRUZXh0ID0gdGV4dFxuICAgICAgICAgICAgLnJlcGxhY2Uoc3VmZml4UmVnZXgsICcnKVxuICAgICAgICAgICAgLnJlcGxhY2UocHJlZml4UmVnZXgsICcnKVxuICAgICAgICAgICAgLnRyaW0oKVxuICAgICAgICAgICAgLnJlcGxhY2UoL1xccy9nLCAnJylcbiAgICAgICAgICAgIC5yZXBsYWNlKGN1cnJlbmN5UmVnZXgsICcnKVxuICAgICAgICAgICAgLnJlcGxhY2UodGhpcy5fZ3JvdXAsICcnKVxuICAgICAgICAgICAgLnJlcGxhY2UodGhpcy5fbWludXNTaWduLCAnLScpXG4gICAgICAgICAgICAucmVwbGFjZSh0aGlzLl9kZWNpbWFsLCAnLicpXG4gICAgICAgICAgICAucmVwbGFjZSh0aGlzLl9udW1lcmFsLCB0aGlzLl9pbmRleCk7XG5cbiAgICAgICAgaWYgKGZpbHRlcmVkVGV4dCkge1xuICAgICAgICAgICAgaWYgKGZpbHRlcmVkVGV4dCA9PT0gJy0nKVxuICAgICAgICAgICAgICAgIC8vIE1pbnVzIHNpZ25cbiAgICAgICAgICAgICAgICByZXR1cm4gZmlsdGVyZWRUZXh0O1xuXG4gICAgICAgICAgICBsZXQgcGFyc2VkVmFsdWUgPSArZmlsdGVyZWRUZXh0O1xuICAgICAgICAgICAgcmV0dXJuIGlzTmFOKHBhcnNlZFZhbHVlKSA/IG51bGwgOiBwYXJzZWRWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJlcGVhdChldmVudDogRXZlbnQsIGludGVydmFsOiBudW1iZXIgfCBudWxsLCBkaXI6IG51bWJlcikge1xuICAgICAgICBpZiAodGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGkgPSBpbnRlcnZhbCB8fCA1MDA7XG5cbiAgICAgICAgdGhpcy5jbGVhclRpbWVyKCk7XG4gICAgICAgIHRoaXMudGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVwZWF0KGV2ZW50LCA0MCwgZGlyKTtcbiAgICAgICAgfSwgaSk7XG5cbiAgICAgICAgdGhpcy5zcGluKGV2ZW50LCBkaXIpO1xuICAgIH1cblxuICAgIHNwaW4oZXZlbnQ6IEV2ZW50LCBkaXI6IG51bWJlcikge1xuICAgICAgICBsZXQgc3RlcCA9IHRoaXMuc3RlcCAqIGRpcjtcbiAgICAgICAgbGV0IGN1cnJlbnRWYWx1ZSA9IHRoaXMucGFyc2VWYWx1ZSh0aGlzLmlucHV0Py5uYXRpdmVFbGVtZW50LnZhbHVlKSB8fCAwO1xuICAgICAgICBsZXQgbmV3VmFsdWUgPSB0aGlzLnZhbGlkYXRlVmFsdWUoKGN1cnJlbnRWYWx1ZSBhcyBudW1iZXIpICsgc3RlcCk7XG4gICAgICAgIGlmICh0aGlzLm1heGxlbmd0aCAmJiB0aGlzLm1heGxlbmd0aCA8IHRoaXMuZm9ybWF0VmFsdWUobmV3VmFsdWUpLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlSW5wdXQobmV3VmFsdWUsIG51bGwsICdzcGluJywgbnVsbCk7XG4gICAgICAgIHRoaXMudXBkYXRlTW9kZWwoZXZlbnQsIG5ld1ZhbHVlKTtcblxuICAgICAgICB0aGlzLmhhbmRsZU9uSW5wdXQoZXZlbnQsIGN1cnJlbnRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgIH1cblxuICAgIGNsZWFyKCkge1xuICAgICAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLm9uQ2xlYXIuZW1pdCgpO1xuICAgIH1cblxuICAgIG9uVXBCdXR0b25Nb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmJ1dHRvbiA9PT0gMikge1xuICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVyKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXQ/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgIHRoaXMucmVwZWF0KGV2ZW50LCBudWxsLCAxKTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblVwQnV0dG9uTW91c2VVcCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyVGltZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVXBCdXR0b25Nb3VzZUxlYXZlKCkge1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJUaW1lcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25VcEJ1dHRvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDMyIHx8IGV2ZW50LmtleUNvZGUgPT09IDEzKSB7XG4gICAgICAgICAgICB0aGlzLnJlcGVhdChldmVudCwgbnVsbCwgMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblVwQnV0dG9uS2V5VXAoKSB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkRvd25CdXR0b25Nb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmJ1dHRvbiA9PT0gMikge1xuICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVyKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0Py5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICB0aGlzLnJlcGVhdChldmVudCwgbnVsbCwgLTEpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRG93bkJ1dHRvbk1vdXNlVXAoKSB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkRvd25CdXR0b25Nb3VzZUxlYXZlKCkge1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJUaW1lcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Eb3duQnV0dG9uS2V5VXAoKSB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkRvd25CdXR0b25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSAzMiB8fCBldmVudC5rZXlDb2RlID09PSAxMykge1xuICAgICAgICAgICAgdGhpcy5yZXBlYXQoZXZlbnQsIG51bGwsIC0xKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVXNlcklucHV0KGV2ZW50OiBFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNTcGVjaWFsQ2hhcikge1xuICAgICAgICAgICAgKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSA9IHRoaXMubGFzdFZhbHVlIGFzIHN0cmluZztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzU3BlY2lhbENoYXIgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvbklucHV0S2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sYXN0VmFsdWUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xuICAgICAgICBpZiAoKGV2ZW50IGFzIEtleWJvYXJkRXZlbnQpLnNoaWZ0S2V5IHx8IChldmVudCBhcyBLZXlib2FyZEV2ZW50KS5hbHRLZXkpIHtcbiAgICAgICAgICAgIHRoaXMuaXNTcGVjaWFsQ2hhciA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgc2VsZWN0aW9uU3RhcnQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnNlbGVjdGlvblN0YXJ0IGFzIG51bWJlcjtcbiAgICAgICAgbGV0IHNlbGVjdGlvbkVuZCA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuc2VsZWN0aW9uRW5kIGFzIG51bWJlcjtcbiAgICAgICAgbGV0IGlucHV0VmFsdWUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlIGFzIHN0cmluZztcbiAgICAgICAgbGV0IG5ld1ZhbHVlU3RyID0gbnVsbDtcblxuICAgICAgICBpZiAoZXZlbnQuYWx0S2V5KSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgICAgIHRoaXMuc3BpbihldmVudCwgMSk7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICAgICAgICB0aGlzLnNwaW4oZXZlbnQsIC0xKTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gc2VsZWN0aW9uU3RhcnQ7IGluZGV4IDw9IGlucHV0VmFsdWUubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzQ2hhckluZGV4ID0gaW5kZXggPT09IDAgPyAwIDogaW5kZXggLSAxO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc051bWVyYWxDaGFyKGlucHV0VmFsdWUuY2hhckF0KHByZXZpb3VzQ2hhckluZGV4KSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShpbmRleCwgaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gc2VsZWN0aW9uRW5kOyBpbmRleCA+PSAwOyBpbmRleC0tKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzTnVtZXJhbENoYXIoaW5wdXRWYWx1ZS5jaGFyQXQoaW5kZXgpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKGluZGV4LCBpbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnVGFiJzpcbiAgICAgICAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgICAgICAgICBuZXdWYWx1ZVN0ciA9IHRoaXMudmFsaWRhdGVWYWx1ZSh0aGlzLnBhcnNlVmFsdWUodGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdGhpcy5mb3JtYXRWYWx1ZShuZXdWYWx1ZVN0cik7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS12YWx1ZW5vdycsIG5ld1ZhbHVlU3RyKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU1vZGVsKGV2ZW50LCBuZXdWYWx1ZVN0cik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6IHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGlvblN0YXJ0ID09PSBzZWxlY3Rpb25FbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKChzZWxlY3Rpb25TdGFydCA9PSAxICYmIHRoaXMucHJlZml4KSB8fCAoc2VsZWN0aW9uU3RhcnQgPT0gaW5wdXRWYWx1ZS5sZW5ndGggJiYgdGhpcy5zdWZmaXgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlbGV0ZUNoYXIgPSBpbnB1dFZhbHVlLmNoYXJBdChzZWxlY3Rpb25TdGFydCAtIDEpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGRlY2ltYWxDaGFySW5kZXgsIGRlY2ltYWxDaGFySW5kZXhXaXRob3V0UHJlZml4IH0gPSB0aGlzLmdldERlY2ltYWxDaGFySW5kZXhlcyhpbnB1dFZhbHVlKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc051bWVyYWxDaGFyKGRlbGV0ZUNoYXIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkZWNpbWFsTGVuZ3RoID0gdGhpcy5nZXREZWNpbWFsTGVuZ3RoKGlucHV0VmFsdWUpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fZ3JvdXAudGVzdChkZWxldGVDaGFyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2dyb3VwLmxhc3RJbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWVTdHIgPSBpbnB1dFZhbHVlLnNsaWNlKDAsIHNlbGVjdGlvblN0YXJ0IC0gMikgKyBpbnB1dFZhbHVlLnNsaWNlKHNlbGVjdGlvblN0YXJ0IC0gMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2RlY2ltYWwudGVzdChkZWxldGVDaGFyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2RlY2ltYWwubGFzdEluZGV4ID0gMDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWNpbWFsTGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXQ/Lm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uU3RhcnQgLSAxLCBzZWxlY3Rpb25TdGFydCAtIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlU3RyID0gaW5wdXRWYWx1ZS5zbGljZSgwLCBzZWxlY3Rpb25TdGFydCAtIDEpICsgaW5wdXRWYWx1ZS5zbGljZShzZWxlY3Rpb25TdGFydCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkZWNpbWFsQ2hhckluZGV4ID4gMCAmJiBzZWxlY3Rpb25TdGFydCA+IGRlY2ltYWxDaGFySW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnNlcnRlZFRleHQgPSB0aGlzLmlzRGVjaW1hbE1vZGUoKSAmJiAodGhpcy5taW5GcmFjdGlvbkRpZ2l0cyB8fCAwKSA8IGRlY2ltYWxMZW5ndGggPyAnJyA6ICcwJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZVN0ciA9IGlucHV0VmFsdWUuc2xpY2UoMCwgc2VsZWN0aW9uU3RhcnQgLSAxKSArIGluc2VydGVkVGV4dCArIGlucHV0VmFsdWUuc2xpY2Uoc2VsZWN0aW9uU3RhcnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkZWNpbWFsQ2hhckluZGV4V2l0aG91dFByZWZpeCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlU3RyID0gaW5wdXRWYWx1ZS5zbGljZSgwLCBzZWxlY3Rpb25TdGFydCAtIDEpICsgJzAnICsgaW5wdXRWYWx1ZS5zbGljZShzZWxlY3Rpb25TdGFydCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWVTdHIgPSAodGhpcy5wYXJzZVZhbHVlKG5ld1ZhbHVlU3RyKSBhcyBudW1iZXIpID4gMCA/IG5ld1ZhbHVlU3RyIDogJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlU3RyID0gaW5wdXRWYWx1ZS5zbGljZSgwLCBzZWxlY3Rpb25TdGFydCAtIDEpICsgaW5wdXRWYWx1ZS5zbGljZShzZWxlY3Rpb25TdGFydCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSAnY3VycmVuY3knICYmIGRlbGV0ZUNoYXIuc2VhcmNoKHRoaXMuX2N1cnJlbmN5KSAhPSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWVTdHIgPSBpbnB1dFZhbHVlLnNsaWNlKDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShldmVudCwgbmV3VmFsdWVTdHIsIG51bGwsICdkZWxldGUtc2luZ2xlJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWVTdHIgPSB0aGlzLmRlbGV0ZVJhbmdlKGlucHV0VmFsdWUsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKGV2ZW50LCBuZXdWYWx1ZVN0ciwgbnVsbCwgJ2RlbGV0ZS1yYW5nZScpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlICdEZWxldGUnOlxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0aW9uU3RhcnQgPT09IHNlbGVjdGlvbkVuZCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoKHNlbGVjdGlvblN0YXJ0ID09IDAgJiYgdGhpcy5wcmVmaXgpIHx8IChzZWxlY3Rpb25TdGFydCA9PSBpbnB1dFZhbHVlLmxlbmd0aCAtIDEgJiYgdGhpcy5zdWZmaXgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkZWxldGVDaGFyID0gaW5wdXRWYWx1ZS5jaGFyQXQoc2VsZWN0aW9uU3RhcnQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGRlY2ltYWxDaGFySW5kZXgsIGRlY2ltYWxDaGFySW5kZXhXaXRob3V0UHJlZml4IH0gPSB0aGlzLmdldERlY2ltYWxDaGFySW5kZXhlcyhpbnB1dFZhbHVlKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc051bWVyYWxDaGFyKGRlbGV0ZUNoYXIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkZWNpbWFsTGVuZ3RoID0gdGhpcy5nZXREZWNpbWFsTGVuZ3RoKGlucHV0VmFsdWUpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fZ3JvdXAudGVzdChkZWxldGVDaGFyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2dyb3VwLmxhc3RJbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWVTdHIgPSBpbnB1dFZhbHVlLnNsaWNlKDAsIHNlbGVjdGlvblN0YXJ0KSArIGlucHV0VmFsdWUuc2xpY2Uoc2VsZWN0aW9uU3RhcnQgKyAyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fZGVjaW1hbC50ZXN0KGRlbGV0ZUNoYXIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGVjaW1hbC5sYXN0SW5kZXggPSAwO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlY2ltYWxMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dD8ubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShzZWxlY3Rpb25TdGFydCArIDEsIHNlbGVjdGlvblN0YXJ0ICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWVTdHIgPSBpbnB1dFZhbHVlLnNsaWNlKDAsIHNlbGVjdGlvblN0YXJ0KSArIGlucHV0VmFsdWUuc2xpY2Uoc2VsZWN0aW9uU3RhcnQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRlY2ltYWxDaGFySW5kZXggPiAwICYmIHNlbGVjdGlvblN0YXJ0ID4gZGVjaW1hbENoYXJJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluc2VydGVkVGV4dCA9IHRoaXMuaXNEZWNpbWFsTW9kZSgpICYmICh0aGlzLm1pbkZyYWN0aW9uRGlnaXRzIHx8IDApIDwgZGVjaW1hbExlbmd0aCA/ICcnIDogJzAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlU3RyID0gaW5wdXRWYWx1ZS5zbGljZSgwLCBzZWxlY3Rpb25TdGFydCkgKyBpbnNlcnRlZFRleHQgKyBpbnB1dFZhbHVlLnNsaWNlKHNlbGVjdGlvblN0YXJ0ICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRlY2ltYWxDaGFySW5kZXhXaXRob3V0UHJlZml4ID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWVTdHIgPSBpbnB1dFZhbHVlLnNsaWNlKDAsIHNlbGVjdGlvblN0YXJ0KSArICcwJyArIGlucHV0VmFsdWUuc2xpY2Uoc2VsZWN0aW9uU3RhcnQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZVN0ciA9ICh0aGlzLnBhcnNlVmFsdWUobmV3VmFsdWVTdHIpIGFzIG51bWJlcikgPiAwID8gbmV3VmFsdWVTdHIgOiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWVTdHIgPSBpbnB1dFZhbHVlLnNsaWNlKDAsIHNlbGVjdGlvblN0YXJ0KSArIGlucHV0VmFsdWUuc2xpY2Uoc2VsZWN0aW9uU3RhcnQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUoZXZlbnQsIG5ld1ZhbHVlU3RyIGFzIHN0cmluZywgbnVsbCwgJ2RlbGV0ZS1iYWNrLXNpbmdsZScpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlU3RyID0gdGhpcy5kZWxldGVSYW5nZShpbnB1dFZhbHVlLCBzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShldmVudCwgbmV3VmFsdWVTdHIsIG51bGwsICdkZWxldGUtcmFuZ2UnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0hvbWUnOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1pbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU1vZGVsKGV2ZW50LCB0aGlzLm1pbik7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdFbmQnOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1heCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU1vZGVsKGV2ZW50LCB0aGlzLm1heCk7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vbktleURvd24uZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgb25JbnB1dEtleVByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgY29kZSA9IGV2ZW50LndoaWNoIHx8IGV2ZW50LmtleUNvZGU7XG4gICAgICAgIGxldCBjaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlKTtcbiAgICAgICAgbGV0IGlzRGVjaW1hbFNpZ24gPSB0aGlzLmlzRGVjaW1hbFNpZ24oY2hhcik7XG4gICAgICAgIGNvbnN0IGlzTWludXNTaWduID0gdGhpcy5pc01pbnVzU2lnbihjaGFyKTtcblxuICAgICAgICBpZiAoY29kZSAhPSAxMykge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzRGVjaW1hbFNpZ24gJiYgZXZlbnQuY29kZSA9PT0gJ051bXBhZERlY2ltYWwnKSB7XG4gICAgICAgICAgICBpc0RlY2ltYWxTaWduID0gdHJ1ZTtcbiAgICAgICAgICAgIGNoYXIgPSB0aGlzLl9kZWNpbWFsQ2hhcjtcbiAgICAgICAgICAgIGNvZGUgPSBjaGFyLmNoYXJDb2RlQXQoMCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLnBhcnNlVmFsdWUodGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlICsgY2hhcik7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlU3RyID0gbmV3VmFsdWUgIT0gbnVsbCA/IG5ld1ZhbHVlLnRvU3RyaW5nKCkgOiAnJztcblxuICAgICAgICBpZiAodGhpcy5tYXhsZW5ndGggJiYgdGhpcy5nZXRTZWxlY3RlZFRleHQoKT8ubGVuZ3RoID09IHRoaXMubWF4bGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmluc2VydChldmVudCwgY2hhciwgeyBpc0RlY2ltYWxTaWduLCBpc01pbnVzU2lnbiB9KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm1heGxlbmd0aCAmJiBuZXdWYWx1ZVN0ci5sZW5ndGggPiB0aGlzLm1heGxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCg0OCA8PSBjb2RlICYmIGNvZGUgPD0gNTcpIHx8IGlzTWludXNTaWduIHx8IGlzRGVjaW1hbFNpZ24pIHtcbiAgICAgICAgICAgIHRoaXMuaW5zZXJ0KGV2ZW50LCBjaGFyLCB7IGlzRGVjaW1hbFNpZ24sIGlzTWludXNTaWduIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTZWxlY3RlZFRleHQoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB3aW5kb3dcbiAgICAgICAgICAgICAgICA/LmdldFNlbGVjdGlvbigpXG4gICAgICAgICAgICAgICAgPy50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2VBbGwoL1teMC05J10vZywgJycpIHx8ICcnXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgb25QYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkICYmICF0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgbGV0IGRhdGEgPSAoZXZlbnQuY2xpcGJvYXJkRGF0YSB8fCAodGhpcy5kb2N1bWVudCBhcyBhbnkpLmRlZmF1bHRWaWV3WydjbGlwYm9hcmREYXRhJ10pLmdldERhdGEoJ1RleHQnKTtcbiAgICAgICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWF4bGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDAsIHRoaXMubWF4bGVuZ3RoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgZmlsdGVyZWREYXRhID0gdGhpcy5wYXJzZVZhbHVlKGRhdGEpO1xuICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJlZERhdGEgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc2VydChldmVudCwgZmlsdGVyZWREYXRhLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFsbG93TWludXNTaWduKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5taW4gPT0gbnVsbCB8fCB0aGlzLm1pbiA8IDA7XG4gICAgfVxuXG4gICAgaXNNaW51c1NpZ24oY2hhcjogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLl9taW51c1NpZ24udGVzdChjaGFyKSB8fCBjaGFyID09PSAnLScpIHtcbiAgICAgICAgICAgIHRoaXMuX21pbnVzU2lnbi5sYXN0SW5kZXggPSAwO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaXNEZWNpbWFsU2lnbihjaGFyOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuX2RlY2ltYWwudGVzdChjaGFyKSkge1xuICAgICAgICAgICAgdGhpcy5fZGVjaW1hbC5sYXN0SW5kZXggPSAwO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaXNEZWNpbWFsTW9kZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gJ2RlY2ltYWwnO1xuICAgIH1cblxuICAgIGdldERlY2ltYWxDaGFySW5kZXhlcyh2YWw6IHN0cmluZykge1xuICAgICAgICBsZXQgZGVjaW1hbENoYXJJbmRleCA9IHZhbC5zZWFyY2godGhpcy5fZGVjaW1hbCk7XG4gICAgICAgIHRoaXMuX2RlY2ltYWwubGFzdEluZGV4ID0gMDtcblxuICAgICAgICBjb25zdCBmaWx0ZXJlZFZhbCA9IHZhbFxuICAgICAgICAgICAgLnJlcGxhY2UodGhpcy5fcHJlZml4IGFzIFJlZ0V4cCwgJycpXG4gICAgICAgICAgICAudHJpbSgpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxzL2csICcnKVxuICAgICAgICAgICAgLnJlcGxhY2UodGhpcy5fY3VycmVuY3kgYXMgUmVnRXhwLCAnJyk7XG4gICAgICAgIGNvbnN0IGRlY2ltYWxDaGFySW5kZXhXaXRob3V0UHJlZml4ID0gZmlsdGVyZWRWYWwuc2VhcmNoKHRoaXMuX2RlY2ltYWwpO1xuICAgICAgICB0aGlzLl9kZWNpbWFsLmxhc3RJbmRleCA9IDA7XG5cbiAgICAgICAgcmV0dXJuIHsgZGVjaW1hbENoYXJJbmRleCwgZGVjaW1hbENoYXJJbmRleFdpdGhvdXRQcmVmaXggfTtcbiAgICB9XG5cbiAgICBnZXRDaGFySW5kZXhlcyh2YWw6IHN0cmluZykge1xuICAgICAgICBjb25zdCBkZWNpbWFsQ2hhckluZGV4ID0gdmFsLnNlYXJjaCh0aGlzLl9kZWNpbWFsKTtcbiAgICAgICAgdGhpcy5fZGVjaW1hbC5sYXN0SW5kZXggPSAwO1xuICAgICAgICBjb25zdCBtaW51c0NoYXJJbmRleCA9IHZhbC5zZWFyY2godGhpcy5fbWludXNTaWduKTtcbiAgICAgICAgdGhpcy5fbWludXNTaWduLmxhc3RJbmRleCA9IDA7XG4gICAgICAgIGNvbnN0IHN1ZmZpeENoYXJJbmRleCA9IHZhbC5zZWFyY2godGhpcy5fc3VmZml4IGFzIFJlZ0V4cCk7XG4gICAgICAgICh0aGlzLl9zdWZmaXggYXMgUmVnRXhwKS5sYXN0SW5kZXggPSAwO1xuICAgICAgICBjb25zdCBjdXJyZW5jeUNoYXJJbmRleCA9IHZhbC5zZWFyY2godGhpcy5fY3VycmVuY3kgYXMgUmVnRXhwKTtcbiAgICAgICAgKHRoaXMuX2N1cnJlbmN5IGFzIFJlZ0V4cCkubGFzdEluZGV4ID0gMDtcblxuICAgICAgICByZXR1cm4geyBkZWNpbWFsQ2hhckluZGV4LCBtaW51c0NoYXJJbmRleCwgc3VmZml4Q2hhckluZGV4LCBjdXJyZW5jeUNoYXJJbmRleCB9O1xuICAgIH1cblxuICAgIGluc2VydChldmVudDogRXZlbnQsIHRleHQ6IHN0cmluZywgc2lnbiA9IHsgaXNEZWNpbWFsU2lnbjogZmFsc2UsIGlzTWludXNTaWduOiBmYWxzZSB9KSB7XG4gICAgICAgIGNvbnN0IG1pbnVzQ2hhckluZGV4T25UZXh0ID0gdGV4dC5zZWFyY2godGhpcy5fbWludXNTaWduKTtcbiAgICAgICAgdGhpcy5fbWludXNTaWduLmxhc3RJbmRleCA9IDA7XG4gICAgICAgIGlmICghdGhpcy5hbGxvd01pbnVzU2lnbigpICYmIG1pbnVzQ2hhckluZGV4T25UZXh0ICE9PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHNlbGVjdGlvblN0YXJ0ID0gdGhpcy5pbnB1dD8ubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydDtcbiAgICAgICAgbGV0IHNlbGVjdGlvbkVuZCA9IHRoaXMuaW5wdXQ/Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uRW5kO1xuICAgICAgICBsZXQgaW5wdXRWYWx1ZSA9IHRoaXMuaW5wdXQ/Lm5hdGl2ZUVsZW1lbnQudmFsdWUudHJpbSgpO1xuICAgICAgICBjb25zdCB7IGRlY2ltYWxDaGFySW5kZXgsIG1pbnVzQ2hhckluZGV4LCBzdWZmaXhDaGFySW5kZXgsIGN1cnJlbmN5Q2hhckluZGV4IH0gPSB0aGlzLmdldENoYXJJbmRleGVzKGlucHV0VmFsdWUpO1xuICAgICAgICBsZXQgbmV3VmFsdWVTdHI7XG5cbiAgICAgICAgaWYgKHNpZ24uaXNNaW51c1NpZ24pIHtcbiAgICAgICAgICAgIGlmIChzZWxlY3Rpb25TdGFydCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIG5ld1ZhbHVlU3RyID0gaW5wdXRWYWx1ZTtcbiAgICAgICAgICAgICAgICBpZiAobWludXNDaGFySW5kZXggPT09IC0xIHx8IHNlbGVjdGlvbkVuZCAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZVN0ciA9IHRoaXMuaW5zZXJ0VGV4dChpbnB1dFZhbHVlLCB0ZXh0LCAwLCBzZWxlY3Rpb25FbmQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUoZXZlbnQsIG5ld1ZhbHVlU3RyLCB0ZXh0LCAnaW5zZXJ0Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoc2lnbi5pc0RlY2ltYWxTaWduKSB7XG4gICAgICAgICAgICBpZiAoZGVjaW1hbENoYXJJbmRleCA+IDAgJiYgc2VsZWN0aW9uU3RhcnQgPT09IGRlY2ltYWxDaGFySW5kZXgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKGV2ZW50LCBpbnB1dFZhbHVlLCB0ZXh0LCAnaW5zZXJ0Jyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRlY2ltYWxDaGFySW5kZXggPiBzZWxlY3Rpb25TdGFydCAmJiBkZWNpbWFsQ2hhckluZGV4IDwgc2VsZWN0aW9uRW5kKSB7XG4gICAgICAgICAgICAgICAgbmV3VmFsdWVTdHIgPSB0aGlzLmluc2VydFRleHQoaW5wdXRWYWx1ZSwgdGV4dCwgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCk7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShldmVudCwgbmV3VmFsdWVTdHIsIHRleHQsICdpbnNlcnQnKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZGVjaW1hbENoYXJJbmRleCA9PT0gLTEgJiYgdGhpcy5tYXhGcmFjdGlvbkRpZ2l0cykge1xuICAgICAgICAgICAgICAgIG5ld1ZhbHVlU3RyID0gdGhpcy5pbnNlcnRUZXh0KGlucHV0VmFsdWUsIHRleHQsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUoZXZlbnQsIG5ld1ZhbHVlU3RyLCB0ZXh0LCAnaW5zZXJ0Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBtYXhGcmFjdGlvbkRpZ2l0cyA9IHRoaXMubnVtYmVyRm9ybWF0LnJlc29sdmVkT3B0aW9ucygpLm1heGltdW1GcmFjdGlvbkRpZ2l0cztcbiAgICAgICAgICAgIGNvbnN0IG9wZXJhdGlvbiA9IHNlbGVjdGlvblN0YXJ0ICE9PSBzZWxlY3Rpb25FbmQgPyAncmFuZ2UtaW5zZXJ0JyA6ICdpbnNlcnQnO1xuXG4gICAgICAgICAgICBpZiAoZGVjaW1hbENoYXJJbmRleCA+IDAgJiYgc2VsZWN0aW9uU3RhcnQgPiBkZWNpbWFsQ2hhckluZGV4KSB7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGlvblN0YXJ0ICsgdGV4dC5sZW5ndGggLSAoZGVjaW1hbENoYXJJbmRleCArIDEpIDw9IG1heEZyYWN0aW9uRGlnaXRzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJJbmRleCA9IGN1cnJlbmN5Q2hhckluZGV4ID49IHNlbGVjdGlvblN0YXJ0ID8gY3VycmVuY3lDaGFySW5kZXggLSAxIDogc3VmZml4Q2hhckluZGV4ID49IHNlbGVjdGlvblN0YXJ0ID8gc3VmZml4Q2hhckluZGV4IDogaW5wdXRWYWx1ZS5sZW5ndGg7XG5cbiAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWVTdHIgPSBpbnB1dFZhbHVlLnNsaWNlKDAsIHNlbGVjdGlvblN0YXJ0KSArIHRleHQgKyBpbnB1dFZhbHVlLnNsaWNlKHNlbGVjdGlvblN0YXJ0ICsgdGV4dC5sZW5ndGgsIGNoYXJJbmRleCkgKyBpbnB1dFZhbHVlLnNsaWNlKGNoYXJJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUoZXZlbnQsIG5ld1ZhbHVlU3RyLCB0ZXh0LCBvcGVyYXRpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbmV3VmFsdWVTdHIgPSB0aGlzLmluc2VydFRleHQoaW5wdXRWYWx1ZSwgdGV4dCwgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCk7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShldmVudCwgbmV3VmFsdWVTdHIsIHRleHQsIG9wZXJhdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbnNlcnRUZXh0KHZhbHVlOiBzdHJpbmcsIHRleHQ6IHN0cmluZywgc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIpIHtcbiAgICAgICAgbGV0IHRleHRTcGxpdCA9IHRleHQgPT09ICcuJyA/IHRleHQgOiB0ZXh0LnNwbGl0KCcuJyk7XG5cbiAgICAgICAgaWYgKHRleHRTcGxpdC5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlY2ltYWxDaGFySW5kZXggPSB2YWx1ZS5zbGljZShzdGFydCwgZW5kKS5zZWFyY2godGhpcy5fZGVjaW1hbCk7XG4gICAgICAgICAgICB0aGlzLl9kZWNpbWFsLmxhc3RJbmRleCA9IDA7XG4gICAgICAgICAgICByZXR1cm4gZGVjaW1hbENoYXJJbmRleCA+IDAgPyB2YWx1ZS5zbGljZSgwLCBzdGFydCkgKyB0aGlzLmZvcm1hdFZhbHVlKHRleHQpICsgdmFsdWUuc2xpY2UoZW5kKSA6IHZhbHVlIHx8IHRoaXMuZm9ybWF0VmFsdWUodGV4dCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZW5kIC0gc3RhcnQgPT09IHZhbHVlLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0VmFsdWUodGV4dCk7XG4gICAgICAgIH0gZWxzZSBpZiAoc3RhcnQgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0ZXh0ICsgdmFsdWUuc2xpY2UoZW5kKTtcbiAgICAgICAgfSBlbHNlIGlmIChlbmQgPT09IHZhbHVlLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnNsaWNlKDAsIHN0YXJ0KSArIHRleHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUuc2xpY2UoMCwgc3RhcnQpICsgdGV4dCArIHZhbHVlLnNsaWNlKGVuZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZWxldGVSYW5nZSh2YWx1ZTogc3RyaW5nLCBzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcikge1xuICAgICAgICBsZXQgbmV3VmFsdWVTdHI7XG5cbiAgICAgICAgaWYgKGVuZCAtIHN0YXJ0ID09PSB2YWx1ZS5sZW5ndGgpIG5ld1ZhbHVlU3RyID0gJyc7XG4gICAgICAgIGVsc2UgaWYgKHN0YXJ0ID09PSAwKSBuZXdWYWx1ZVN0ciA9IHZhbHVlLnNsaWNlKGVuZCk7XG4gICAgICAgIGVsc2UgaWYgKGVuZCA9PT0gdmFsdWUubGVuZ3RoKSBuZXdWYWx1ZVN0ciA9IHZhbHVlLnNsaWNlKDAsIHN0YXJ0KTtcbiAgICAgICAgZWxzZSBuZXdWYWx1ZVN0ciA9IHZhbHVlLnNsaWNlKDAsIHN0YXJ0KSArIHZhbHVlLnNsaWNlKGVuZCk7XG5cbiAgICAgICAgcmV0dXJuIG5ld1ZhbHVlU3RyO1xuICAgIH1cblxuICAgIGluaXRDdXJzb3IoKSB7XG4gICAgICAgIGxldCBzZWxlY3Rpb25TdGFydCA9IHRoaXMuaW5wdXQ/Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQ7XG4gICAgICAgIGxldCBzZWxlY3Rpb25FbmQgPSB0aGlzLmlucHV0Py5uYXRpdmVFbGVtZW50LnNlbGVjdGlvbkVuZDtcbiAgICAgICAgbGV0IGlucHV0VmFsdWUgPSB0aGlzLmlucHV0Py5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgICAgICBsZXQgdmFsdWVMZW5ndGggPSBpbnB1dFZhbHVlLmxlbmd0aDtcbiAgICAgICAgbGV0IGluZGV4ID0gbnVsbDtcblxuICAgICAgICAvLyByZW1vdmUgcHJlZml4XG4gICAgICAgIGxldCBwcmVmaXhMZW5ndGggPSAodGhpcy5wcmVmaXhDaGFyIHx8ICcnKS5sZW5ndGg7XG4gICAgICAgIGlucHV0VmFsdWUgPSBpbnB1dFZhbHVlLnJlcGxhY2UodGhpcy5fcHJlZml4LCAnJyk7XG5cbiAgICAgICAgLy8gV2lsbCBhbGxvdyBzZWxlY3Rpbmcgd2hvbGUgcHJlZml4LiBCdXQgbm90IGEgcGFydCBvZiBpdC5cbiAgICAgICAgLy8gTmVnYXRpdmUgdmFsdWVzIHdpbGwgdHJpZ2dlciBjbGF1c2VzIGFmdGVyIHRoaXMgdG8gZml4IHRoZSBjdXJzb3IgcG9zaXRpb24uXG4gICAgICAgIGlmIChzZWxlY3Rpb25TdGFydCA9PT0gc2VsZWN0aW9uRW5kIHx8IHNlbGVjdGlvblN0YXJ0ICE9PSAwIHx8IHNlbGVjdGlvbkVuZCA8IHByZWZpeExlbmd0aCkge1xuICAgICAgICAgICAgc2VsZWN0aW9uU3RhcnQgLT0gcHJlZml4TGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGNoYXIgPSBpbnB1dFZhbHVlLmNoYXJBdChzZWxlY3Rpb25TdGFydCk7XG4gICAgICAgIGlmICh0aGlzLmlzTnVtZXJhbENoYXIoY2hhcikpIHtcbiAgICAgICAgICAgIHJldHVybiBzZWxlY3Rpb25TdGFydCArIHByZWZpeExlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vbGVmdFxuICAgICAgICBsZXQgaSA9IHNlbGVjdGlvblN0YXJ0IC0gMTtcbiAgICAgICAgd2hpbGUgKGkgPj0gMCkge1xuICAgICAgICAgICAgY2hhciA9IGlucHV0VmFsdWUuY2hhckF0KGkpO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNOdW1lcmFsQ2hhcihjaGFyKSkge1xuICAgICAgICAgICAgICAgIGluZGV4ID0gaSArIHByZWZpeExlbmd0aDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaS0tO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGluZGV4ICE9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0Py5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKGluZGV4ICsgMSwgaW5kZXggKyAxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGkgPSBzZWxlY3Rpb25TdGFydDtcbiAgICAgICAgICAgIHdoaWxlIChpIDwgdmFsdWVMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjaGFyID0gaW5wdXRWYWx1ZS5jaGFyQXQoaSk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNOdW1lcmFsQ2hhcihjaGFyKSkge1xuICAgICAgICAgICAgICAgICAgICBpbmRleCA9IGkgKyBwcmVmaXhMZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpbmRleCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXQ/Lm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoaW5kZXgsIGluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpbmRleCB8fCAwO1xuICAgIH1cblxuICAgIG9uSW5wdXRDbGljaygpIHtcbiAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy5pbnB1dD8ubmF0aXZlRWxlbWVudC52YWx1ZTtcblxuICAgICAgICBpZiAoIXRoaXMucmVhZG9ubHkgJiYgY3VycmVudFZhbHVlICE9PSBEb21IYW5kbGVyLmdldFNlbGVjdGlvbigpKSB7XG4gICAgICAgICAgICB0aGlzLmluaXRDdXJzb3IoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzTnVtZXJhbENoYXIoY2hhcjogc3RyaW5nKSB7XG4gICAgICAgIGlmIChjaGFyLmxlbmd0aCA9PT0gMSAmJiAodGhpcy5fbnVtZXJhbC50ZXN0KGNoYXIpIHx8IHRoaXMuX2RlY2ltYWwudGVzdChjaGFyKSB8fCB0aGlzLl9ncm91cC50ZXN0KGNoYXIpIHx8IHRoaXMuX21pbnVzU2lnbi50ZXN0KGNoYXIpKSkge1xuICAgICAgICAgICAgdGhpcy5yZXNldFJlZ2V4KCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXNldFJlZ2V4KCkge1xuICAgICAgICB0aGlzLl9udW1lcmFsLmxhc3RJbmRleCA9IDA7XG4gICAgICAgIHRoaXMuX2RlY2ltYWwubGFzdEluZGV4ID0gMDtcbiAgICAgICAgdGhpcy5fZ3JvdXAubGFzdEluZGV4ID0gMDtcbiAgICAgICAgdGhpcy5fbWludXNTaWduLmxhc3RJbmRleCA9IDA7XG4gICAgfVxuXG4gICAgdXBkYXRlVmFsdWUoZXZlbnQ6IEV2ZW50LCB2YWx1ZVN0cjogTnVsbGFibGU8c3RyaW5nPiwgaW5zZXJ0ZWRWYWx1ZVN0cjogTnVsbGFibGU8c3RyaW5nPiwgb3BlcmF0aW9uOiBOdWxsYWJsZTxzdHJpbmc+KSB7XG4gICAgICAgIGxldCBjdXJyZW50VmFsdWUgPSB0aGlzLmlucHV0Py5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgICAgICBsZXQgbmV3VmFsdWUgPSBudWxsO1xuXG4gICAgICAgIGlmICh2YWx1ZVN0ciAhPSBudWxsKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHRoaXMucGFyc2VWYWx1ZSh2YWx1ZVN0cik7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9ICFuZXdWYWx1ZSAmJiAhdGhpcy5hbGxvd0VtcHR5ID8gMCA6IG5ld1ZhbHVlO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVJbnB1dChuZXdWYWx1ZSwgaW5zZXJ0ZWRWYWx1ZVN0ciwgb3BlcmF0aW9uLCB2YWx1ZVN0cik7XG5cbiAgICAgICAgICAgIHRoaXMuaGFuZGxlT25JbnB1dChldmVudCwgY3VycmVudFZhbHVlLCBuZXdWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYW5kbGVPbklucHV0KGV2ZW50OiBFdmVudCwgY3VycmVudFZhbHVlOiBzdHJpbmcsIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNWYWx1ZUNoYW5nZWQoY3VycmVudFZhbHVlLCBuZXdWYWx1ZSkpIHtcbiAgICAgICAgICAgICh0aGlzLmlucHV0IGFzIEVsZW1lbnRSZWYpLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB0aGlzLmZvcm1hdFZhbHVlKG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuaW5wdXQ/Lm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLXZhbHVlbm93JywgbmV3VmFsdWUpO1xuICAgICAgICAgICAgIXRoaXMuaXNCbHVyVXBkYXRlT25Nb2RlICYmIHRoaXMudXBkYXRlTW9kZWwoZXZlbnQsIG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMub25JbnB1dC5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIHZhbHVlOiBuZXdWYWx1ZSwgZm9ybWF0dGVkVmFsdWU6IGN1cnJlbnRWYWx1ZSB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzVmFsdWVDaGFuZ2VkKGN1cnJlbnRWYWx1ZTogc3RyaW5nLCBuZXdWYWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gbnVsbCAmJiBjdXJyZW50VmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5ld1ZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgIGxldCBwYXJzZWRDdXJyZW50VmFsdWUgPSB0eXBlb2YgY3VycmVudFZhbHVlID09PSAnc3RyaW5nJyA/IHRoaXMucGFyc2VWYWx1ZShjdXJyZW50VmFsdWUpIDogY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIG5ld1ZhbHVlICE9PSBwYXJzZWRDdXJyZW50VmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdmFsaWRhdGVWYWx1ZSh2YWx1ZTogbnVtYmVyIHwgc3RyaW5nKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gJy0nIHx8IHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubWluICE9IG51bGwgJiYgKHZhbHVlIGFzIG51bWJlcikgPCB0aGlzLm1pbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWluO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubWF4ICE9IG51bGwgJiYgKHZhbHVlIGFzIG51bWJlcikgPiB0aGlzLm1heCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWF4O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHVwZGF0ZUlucHV0KHZhbHVlOiBhbnksIGluc2VydGVkVmFsdWVTdHI6IE51bGxhYmxlPHN0cmluZz4sIG9wZXJhdGlvbjogTnVsbGFibGU8c3RyaW5nPiwgdmFsdWVTdHI6IE51bGxhYmxlPHN0cmluZz4pIHtcbiAgICAgICAgaW5zZXJ0ZWRWYWx1ZVN0ciA9IGluc2VydGVkVmFsdWVTdHIgfHwgJyc7XG5cbiAgICAgICAgbGV0IGlucHV0VmFsdWUgPSB0aGlzLmlucHV0Py5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgICAgICBsZXQgbmV3VmFsdWUgPSB0aGlzLmZvcm1hdFZhbHVlKHZhbHVlKTtcbiAgICAgICAgbGV0IGN1cnJlbnRMZW5ndGggPSBpbnB1dFZhbHVlLmxlbmd0aDtcblxuICAgICAgICBpZiAobmV3VmFsdWUgIT09IHZhbHVlU3RyKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHRoaXMuY29uY2F0VmFsdWVzKG5ld1ZhbHVlLCB2YWx1ZVN0ciBhcyBzdHJpbmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGN1cnJlbnRMZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKDAsIDApO1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmluaXRDdXJzb3IoKTtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGlvbkVuZCA9IGluZGV4ICsgaW5zZXJ0ZWRWYWx1ZVN0ci5sZW5ndGg7XG4gICAgICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uRW5kLCBzZWxlY3Rpb25FbmQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IHNlbGVjdGlvblN0YXJ0ID0gdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0O1xuICAgICAgICAgICAgbGV0IHNlbGVjdGlvbkVuZCA9IHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQ7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLm1heGxlbmd0aCAmJiBuZXdWYWx1ZS5sZW5ndGggPiB0aGlzLm1heGxlbmd0aCkge1xuICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUuc2xpY2UoMCwgdGhpcy5tYXhsZW5ndGgpO1xuICAgICAgICAgICAgICAgIHNlbGVjdGlvblN0YXJ0ID0gTWF0aC5taW4oc2VsZWN0aW9uU3RhcnQsIHRoaXMubWF4bGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb25FbmQgPSBNYXRoLm1pbihzZWxlY3Rpb25FbmQsIHRoaXMubWF4bGVuZ3RoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMubWF4bGVuZ3RoICYmIHRoaXMubWF4bGVuZ3RoIDwgbmV3VmFsdWUubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgICAgICAgIGxldCBuZXdMZW5ndGggPSBuZXdWYWx1ZS5sZW5ndGg7XG5cbiAgICAgICAgICAgIGlmIChvcGVyYXRpb24gPT09ICdyYW5nZS1pbnNlcnQnKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnRWYWx1ZSA9IHRoaXMucGFyc2VWYWx1ZSgoaW5wdXRWYWx1ZSB8fCAnJykuc2xpY2UoMCwgc2VsZWN0aW9uU3RhcnQpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGFydFZhbHVlU3RyID0gc3RhcnRWYWx1ZSAhPT0gbnVsbCA/IHN0YXJ0VmFsdWUudG9TdHJpbmcoKSA6ICcnO1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0RXhwciA9IHN0YXJ0VmFsdWVTdHIuc3BsaXQoJycpLmpvaW4oYCgke3RoaXMuZ3JvdXBDaGFyfSk/YCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc1JlZ2V4ID0gbmV3IFJlZ0V4cChzdGFydEV4cHIsICdnJyk7XG4gICAgICAgICAgICAgICAgc1JlZ2V4LnRlc3QobmV3VmFsdWUpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdEV4cHIgPSBpbnNlcnRlZFZhbHVlU3RyLnNwbGl0KCcnKS5qb2luKGAoJHt0aGlzLmdyb3VwQ2hhcn0pP2ApO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRSZWdleCA9IG5ldyBSZWdFeHAodEV4cHIsICdnJyk7XG4gICAgICAgICAgICAgICAgdFJlZ2V4LnRlc3QobmV3VmFsdWUuc2xpY2Uoc1JlZ2V4Lmxhc3RJbmRleCkpO1xuXG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uRW5kID0gc1JlZ2V4Lmxhc3RJbmRleCArIHRSZWdleC5sYXN0SW5kZXg7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHNlbGVjdGlvbkVuZCwgc2VsZWN0aW9uRW5kKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobmV3TGVuZ3RoID09PSBjdXJyZW50TGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJ2luc2VydCcgfHwgb3BlcmF0aW9uID09PSAnZGVsZXRlLWJhY2stc2luZ2xlJykgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHNlbGVjdGlvbkVuZCArIDEsIHNlbGVjdGlvbkVuZCArIDEpO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJ2RlbGV0ZS1zaW5nbGUnKSB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uRW5kIC0gMSwgc2VsZWN0aW9uRW5kIC0gMSk7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAob3BlcmF0aW9uID09PSAnZGVsZXRlLXJhbmdlJyB8fCBvcGVyYXRpb24gPT09ICdzcGluJykgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHNlbGVjdGlvbkVuZCwgc2VsZWN0aW9uRW5kKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAob3BlcmF0aW9uID09PSAnZGVsZXRlLWJhY2stc2luZ2xlJykge1xuICAgICAgICAgICAgICAgIGxldCBwcmV2Q2hhciA9IGlucHV0VmFsdWUuY2hhckF0KHNlbGVjdGlvbkVuZCAtIDEpO1xuICAgICAgICAgICAgICAgIGxldCBuZXh0Q2hhciA9IGlucHV0VmFsdWUuY2hhckF0KHNlbGVjdGlvbkVuZCk7XG4gICAgICAgICAgICAgICAgbGV0IGRpZmYgPSBjdXJyZW50TGVuZ3RoIC0gbmV3TGVuZ3RoO1xuICAgICAgICAgICAgICAgIGxldCBpc0dyb3VwQ2hhciA9IHRoaXMuX2dyb3VwLnRlc3QobmV4dENoYXIpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzR3JvdXBDaGFyICYmIGRpZmYgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uRW5kICs9IDE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghaXNHcm91cENoYXIgJiYgdGhpcy5pc051bWVyYWxDaGFyKHByZXZDaGFyKSkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25FbmQgKz0gLTEgKiBkaWZmICsgMTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9ncm91cC5sYXN0SW5kZXggPSAwO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShzZWxlY3Rpb25FbmQsIHNlbGVjdGlvbkVuZCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0VmFsdWUgPT09ICctJyAmJiBvcGVyYXRpb24gPT09ICdpbnNlcnQnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKDAsIDApO1xuICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5pbml0Q3Vyc29yKCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0aW9uRW5kID0gaW5kZXggKyBpbnNlcnRlZFZhbHVlU3RyLmxlbmd0aCArIDE7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHNlbGVjdGlvbkVuZCwgc2VsZWN0aW9uRW5kKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uRW5kID0gc2VsZWN0aW9uRW5kICsgKG5ld0xlbmd0aCAtIGN1cnJlbnRMZW5ndGgpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShzZWxlY3Rpb25FbmQsIHNlbGVjdGlvbkVuZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLXZhbHVlbm93JywgdmFsdWUpO1xuICAgIH1cblxuICAgIGNvbmNhdFZhbHVlcyh2YWwxOiBzdHJpbmcsIHZhbDI6IHN0cmluZykge1xuICAgICAgICBpZiAodmFsMSAmJiB2YWwyKSB7XG4gICAgICAgICAgICBsZXQgZGVjaW1hbENoYXJJbmRleCA9IHZhbDIuc2VhcmNoKHRoaXMuX2RlY2ltYWwpO1xuICAgICAgICAgICAgdGhpcy5fZGVjaW1hbC5sYXN0SW5kZXggPSAwO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5zdWZmaXhDaGFyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlY2ltYWxDaGFySW5kZXggIT09IC0xID8gdmFsMSA6IHZhbDEucmVwbGFjZSh0aGlzLnN1ZmZpeENoYXIsICcnKS5zcGxpdCh0aGlzLl9kZWNpbWFsKVswXSArIHZhbDIucmVwbGFjZSh0aGlzLnN1ZmZpeENoYXIsICcnKS5zbGljZShkZWNpbWFsQ2hhckluZGV4KSArIHRoaXMuc3VmZml4Q2hhcjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlY2ltYWxDaGFySW5kZXggIT09IC0xID8gdmFsMS5zcGxpdCh0aGlzLl9kZWNpbWFsKVswXSArIHZhbDIuc2xpY2UoZGVjaW1hbENoYXJJbmRleCkgOiB2YWwxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWwxO1xuICAgIH1cblxuICAgIGdldERlY2ltYWxMZW5ndGgodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlU3BsaXQgPSB2YWx1ZS5zcGxpdCh0aGlzLl9kZWNpbWFsKTtcblxuICAgICAgICAgICAgaWYgKHZhbHVlU3BsaXQubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlU3BsaXRbMV1cbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UodGhpcy5fc3VmZml4IGFzIFJlZ0V4cCwgJycpXG4gICAgICAgICAgICAgICAgICAgIC50cmltKClcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xccy9nLCAnJylcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UodGhpcy5fY3VycmVuY3kgYXMgUmVnRXhwLCAnJykubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgb25JbnB1dEZvY3VzKGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLmZvY3VzZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLm9uRm9jdXMuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgb25JbnB1dEJsdXIoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlTnVtYmVyID0gdGhpcy52YWxpZGF0ZVZhbHVlKHRoaXMucGFyc2VWYWx1ZSh0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUpKTtcbiAgICAgICAgY29uc3QgbmV3VmFsdWVTdHJpbmcgPSBuZXdWYWx1ZU51bWJlcj8udG9TdHJpbmcoKTtcbiAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdGhpcy5mb3JtYXRWYWx1ZShuZXdWYWx1ZVN0cmluZyk7XG4gICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtdmFsdWVub3cnLCBuZXdWYWx1ZVN0cmluZyk7XG4gICAgICAgIHRoaXMudXBkYXRlTW9kZWwoZXZlbnQsIG5ld1ZhbHVlTnVtYmVyKTtcbiAgICAgICAgdGhpcy5vbkJsdXIuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgZm9ybWF0dGVkVmFsdWUoKSB7XG4gICAgICAgIGNvbnN0IHZhbCA9ICF0aGlzLnZhbHVlICYmICF0aGlzLmFsbG93RW1wdHkgPyAwIDogdGhpcy52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0VmFsdWUodmFsKTtcbiAgICB9XG5cbiAgICB1cGRhdGVNb2RlbChldmVudDogRXZlbnQsIHZhbHVlOiBhbnkpIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgICAgIGlmICghKHRoaXMuaXNCbHVyVXBkYXRlT25Nb2RlICYmIHRoaXMuZm9jdXNlZCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzQmx1clVwZGF0ZU9uTW9kZSkge1xuICAgICAgICAgICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vbk1vZGVsVG91Y2hlZCgpO1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Nb2RlbFRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlKHZhbDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gdmFsO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIGdldCBmaWxsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlICE9IG51bGwgJiYgdGhpcy52YWx1ZS50b1N0cmluZygpLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgY2xlYXJUaW1lcigpIHtcbiAgICAgICAgaWYgKHRoaXMudGltZXIpIHtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lcik7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8c3BhblxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ2NheC1pbnB1dG51bWJlciBjYXgtY29tcG9uZW50JzogdHJ1ZSxcbiAgICAgICAgJ2NheC1pbnB1dG51bWJlci1idXR0b25zLXN0YWNrZWQnOiB0aGlzLnNob3dCdXR0b25zICYmIHRoaXMuYnV0dG9uTGF5b3V0ID09PSAnc3RhY2tlZCcsXG4gICAgICAgICdjYXgtaW5wdXRudW1iZXItYnV0dG9ucy1ob3Jpem9udGFsJzogdGhpcy5zaG93QnV0dG9ucyAmJiB0aGlzLmJ1dHRvbkxheW91dCA9PT0gJ2hvcml6b250YWwnLFxuICAgICAgICAnY2F4LWlucHV0bnVtYmVyLWJ1dHRvbnMtdmVydGljYWwnOiB0aGlzLnNob3dCdXR0b25zICYmIHRoaXMuYnV0dG9uTGF5b3V0ID09PSAndmVydGljYWwnLFxuICAgICAgICAnY2F4LWlucHV0LWljb24tbGVmdCc6IChwcmVmaXggfHwgcHJlZml4SWNvbikgJiYgYnV0dG9uTGF5b3V0ID09PSAnc3RhY2tlZCcsXG4gICAgICAgICdjYXgtaW5wdXQtaWNvbi1yaWdodCc6IHN1ZmZpeCxcbiAgICAgICAgJ2NheC1kaXNhYmxlZCc6IGRpc2FibGVkXG4gICAgfVwiXG4gICAgW25nU3R5bGVdPVwic3R5bGVcIlxuICAgIFtjbGFzc109XCJzdHlsZUNsYXNzXCJcbiAgICBbYXR0ci5kYXRhLXBjLW5hbWVdPVwiJ2lucHV0bnVtYmVyJ1wiXG4gICAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidyb290J1wiXG4+XG4gICAgPCEtLSBPbmx5IHNob3cgcHJlZml4L2ljb24gaW4gc3RhY2tlZCBsYXlvdXQgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihwcmVmaXggfHwgcHJlZml4SWNvbikgJiYgYnV0dG9uTGF5b3V0ID09PSAnc3RhY2tlZCdcIj5cbiAgICAgICAgPGkgKm5nSWY9XCJwcmVmaXhJY29uXCIgY2xhc3M9XCJjYXgtaW5wdXQtcHJlZml4LWljb25cIiBbbmdDbGFzc109XCJwcmVmaXhJY29uXCI+PC9pPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwhLS0gRG93biBidXR0b24gZm9yIGhvcml6b250YWwgbGF5b3V0IC0tPlxuICAgIDxidXR0b24gKm5nSWY9XCJzaG93QnV0dG9ucyAmJiBidXR0b25MYXlvdXQgPT09ICdob3Jpem9udGFsJ1wiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIiBjYXhCdXR0b25cbiAgICAgICAgW3NldmVyaXR5XT1cIidzZWNvbmRhcnknXCJcbiAgICAgICAgW3NpemVdPVwiJ3NtYWxsJ1wiXG4gICAgICAgIGNsYXNzPVwiY2F4LWlucHV0bnVtYmVyLWJ1dHRvbiBjYXgtaW5wdXRudW1iZXItYnV0dG9uLWRvd25cIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAobW91c2Vkb3duKT1cIm9uRG93bkJ1dHRvbk1vdXNlRG93bigkZXZlbnQpXCJcbiAgICAgICAgKG1vdXNldXApPVwib25Eb3duQnV0dG9uTW91c2VVcCgpXCJcbiAgICAgICAgKG1vdXNlbGVhdmUpPVwib25Eb3duQnV0dG9uTW91c2VMZWF2ZSgpXCJcbiAgICAgICAgKGtleWRvd24pPVwib25Eb3duQnV0dG9uS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgKGtleXVwKT1cIm9uRG93bkJ1dHRvbktleVVwKClcIlxuICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCJ0cnVlXCJcbiAgICAgICAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidkZWNyZW1lbnRidXR0b24nXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZGVjcmVtZW50QnV0dG9uSWNvblwiPlxuICAgICAgICAgICAgPEFuZ2xlRG93bkljb24gKm5nSWY9XCIhZGVjcmVtZW50QnV0dG9uSWNvblRlbXBsYXRlXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidkZWNyZW1lbnRidXR0b25pY29uJ1wiIC8+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkZWNyZW1lbnRCdXR0b25JY29uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJkZWNyZW1lbnRCdXR0b25JY29uXCIgW25nQ2xhc3NdPVwiZGVjcmVtZW50QnV0dG9uSWNvblwiPjwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8aW5wdXRcbiAgICAgICAgY2F4SW5wdXRUZXh0XG4gICAgICAgICNpbnB1dFxuICAgICAgICBbYXR0ci5pZF09XCJpbnB1dElkXCJcbiAgICAgICAgcm9sZT1cInNwaW5idXR0b25cIlxuICAgICAgICBbbmdDbGFzc109XCInY2F4LWlucHV0bnVtYmVyLWlucHV0J1wiXG4gICAgICAgIFtuZ1N0eWxlXT1cImlucHV0U3R5bGVcIlxuICAgICAgICBbY2xhc3NdPVwiaW5wdXRTdHlsZUNsYXNzXCJcbiAgICAgICAgW3ZhbHVlXT1cImZvcm1hdHRlZFZhbHVlKClcIlxuICAgICAgICBbYXR0ci52YXJpYW50XT1cInZhcmlhbnRcIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbWluXT1cIm1pblwiXG4gICAgICAgIFthdHRyLmFyaWEtdmFsdWVtYXhdPVwibWF4XCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW5vd109XCJ2YWx1ZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICBbYXR0ci50aXRsZV09XCJ0aXRsZVwiXG4gICAgICAgIFthdHRyLnNpemVdPVwic2l6ZVwiXG4gICAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgICAgIFthdHRyLmF1dG9jb21wbGV0ZV09XCJhdXRvY29tcGxldGVcIlxuICAgICAgICBbYXR0ci5tYXhsZW5ndGhdPVwibWF4bGVuZ3RoXCJcbiAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cImFyaWFSZXF1aXJlZFwiXG4gICAgICAgIFthdHRyLnJlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgW2F0dHIubWluXT1cIm1pblwiXG4gICAgICAgIFthdHRyLm1heF09XCJtYXhcIlxuICAgICAgICBpbnB1dG1vZGU9XCJkZWNpbWFsXCJcbiAgICAgICAgKGlucHV0KT1cIm9uVXNlcklucHV0KCRldmVudClcIlxuICAgICAgICAoa2V5ZG93bik9XCJvbklucHV0S2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgKGtleXByZXNzKT1cIm9uSW5wdXRLZXlQcmVzcygkZXZlbnQpXCJcbiAgICAgICAgKHBhc3RlKT1cIm9uUGFzdGUoJGV2ZW50KVwiXG4gICAgICAgIChjbGljayk9XCJvbklucHV0Q2xpY2soKVwiXG4gICAgICAgIChmb2N1cyk9XCJvbklucHV0Rm9jdXMoJGV2ZW50KVwiXG4gICAgICAgIChibHVyKT1cIm9uSW5wdXRCbHVyKCRldmVudClcIlxuICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2lucHV0J1wiXG4gICAgICAgIGNheEF1dG9Gb2N1c1xuICAgICAgICBbYXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiXG4gICAgICAgIFtjbGFzcy5jYXgtdmFyaWFudC1maWxsZWRdPVwidmFyaWFudCA9PT0gJ2ZpbGxlZCcgfHwgY29uZmlnLmlucHV0U3R5bGUoKSA9PT0gJ2ZpbGxlZCdcIlxuICAgIC8+XG4gICAgPCEtLSBVcCBidXR0b24gZm9yIGhvcml6b250YWwgbGF5b3V0IC0tPlxuICAgIDxidXR0b24gKm5nSWY9XCJzaG93QnV0dG9ucyAmJiBidXR0b25MYXlvdXQgPT09ICdob3Jpem9udGFsJ1wiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIiBjYXhCdXR0b25cbiAgICAgICAgW3NldmVyaXR5XT1cIidzZWNvbmRhcnknXCJcbiAgICAgICAgW3NpemVdPVwiJ3NtYWxsJ1wiXG4gICAgICAgIGNsYXNzPVwiY2F4LWlucHV0bnVtYmVyLWJ1dHRvbiBjYXgtaW5wdXRudW1iZXItYnV0dG9uLXVwXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJvblVwQnV0dG9uTW91c2VEb3duKCRldmVudClcIlxuICAgICAgICAobW91c2V1cCk9XCJvblVwQnV0dG9uTW91c2VVcCgpXCJcbiAgICAgICAgKG1vdXNlbGVhdmUpPVwib25VcEJ1dHRvbk1vdXNlTGVhdmUoKVwiXG4gICAgICAgIChrZXlkb3duKT1cIm9uVXBCdXR0b25LZXlEb3duKCRldmVudClcIlxuICAgICAgICAoa2V5dXApPVwib25VcEJ1dHRvbktleVVwKClcIlxuICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCJ0cnVlXCJcbiAgICAgICAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidpbmNyZW1lbnRidXR0b24nXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaW5jcmVtZW50QnV0dG9uSWNvblwiPlxuICAgICAgICAgICAgPEFuZ2xlVXBJY29uICpuZ0lmPVwiIWluY3JlbWVudEJ1dHRvbkljb25UZW1wbGF0ZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInaW5jcmVtZW50YnV0dG9uaWNvbidcIiAvPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5jcmVtZW50QnV0dG9uSWNvblRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiaW5jcmVtZW50QnV0dG9uSWNvblwiIFtuZ0NsYXNzXT1cImluY3JlbWVudEJ1dHRvbkljb25cIj48L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgPGkgKm5nSWY9XCJzdWZmaXhcIiBjbGFzcz1cImNheC1pbnB1dC1zdWZmaXhcIiBbaW5uZXJIVE1MXT1cInN1ZmZpeFwiPjwvaT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYnV0dG9uTGF5b3V0ICE9ICd2ZXJ0aWNhbCcgJiYgc2hvd0NsZWFyICYmIHZhbHVlXCI+XG4gICAgICAgIDxUaW1lc0ljb24gKm5nSWY9XCIhY2xlYXJJY29uVGVtcGxhdGVcIiBbbmdDbGFzc109XCInY2F4LWlucHV0bnVtYmVyLWNsZWFyLWljb24nXCIgKGNsaWNrKT1cImNsZWFyKClcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2NsZWFySWNvbidcIiAvPlxuICAgICAgICA8c3BhbiAqbmdJZj1cImNsZWFySWNvblRlbXBsYXRlXCIgKGNsaWNrKT1cImNsZWFyKClcIiBjbGFzcz1cImNheC1pbnB1dG51bWJlci1jbGVhci1pY29uXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidjbGVhckljb24nXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjbGVhckljb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvc3Bhbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8c3BhbiBjbGFzcz1cImNheC1pbnB1dG51bWJlci1idXR0b24tZ3JvdXBcIiAqbmdJZj1cInNob3dCdXR0b25zICYmIGJ1dHRvbkxheW91dCA9PT0gJ3N0YWNrZWQnXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIididXR0b25Hcm91cCdcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjYXhCdXR0b25cbiAgICAgICAgICAgIFtzZXZlcml0eV09XCInc2Vjb25kYXJ5J1wiXG4gICAgICAgICAgICBbc2l6ZV09XCInc21hbGwnXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2NheC1pbnB1dG51bWJlci1idXR0b24gY2F4LWlucHV0bnVtYmVyLWJ1dHRvbi11cCc6IHRydWUgfVwiXG4gICAgICAgICAgICBjbGFzcz1cImNheC1idXR0b24taWNvbi1vbmx5XCJcbiAgICAgICAgICAgIFtjbGFzc109XCJpbmNyZW1lbnRCdXR0b25DbGFzc1wiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uVXBCdXR0b25Nb3VzZURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAobW91c2V1cCk9XCJvblVwQnV0dG9uTW91c2VVcCgpXCJcbiAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cIm9uVXBCdXR0b25Nb3VzZUxlYXZlKClcIlxuICAgICAgICAgICAgKGtleWRvd24pPVwib25VcEJ1dHRvbktleURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAoa2V5dXApPVwib25VcEJ1dHRvbktleVVwKClcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwidHJ1ZVwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2luY3JlbWVudGJ1dHRvbidcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImluY3JlbWVudEJ1dHRvbkljb25cIiBbbmdDbGFzc109XCJpbmNyZW1lbnRCdXR0b25JY29uXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidpbmNyZW1lbnRidXR0b25pY29uJ1wiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaW5jcmVtZW50QnV0dG9uSWNvblwiPlxuICAgICAgICAgICAgICAgIDxBbmdsZVVwSWNvbiAqbmdJZj1cIiFpbmNyZW1lbnRCdXR0b25JY29uVGVtcGxhdGVcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2luY3JlbWVudGJ1dHRvbmljb24nXCIgLz5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbmNyZW1lbnRCdXR0b25JY29uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNheEJ1dHRvblxuICAgICAgICAgICAgW3NldmVyaXR5XT1cIidzZWNvbmRhcnknXCJcbiAgICAgICAgICAgIFtzaXplXT1cIidzbWFsbCdcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnY2F4LWlucHV0bnVtYmVyLWJ1dHRvbiBjYXgtaW5wdXRudW1iZXItYnV0dG9uLWRvd24nOiB0cnVlIH1cIlxuICAgICAgICAgICAgY2xhc3M9XCJjYXgtYnV0dG9uLWljb24tb25seVwiXG4gICAgICAgICAgICBbY2xhc3NdPVwiZGVjcmVtZW50QnV0dG9uQ2xhc3NcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwidHJ1ZVwiXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uRG93bkJ1dHRvbk1vdXNlRG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgIChtb3VzZXVwKT1cIm9uRG93bkJ1dHRvbk1vdXNlVXAoKVwiXG4gICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJvbkRvd25CdXR0b25Nb3VzZUxlYXZlKClcIlxuICAgICAgICAgICAgKGtleWRvd24pPVwib25Eb3duQnV0dG9uS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgIChrZXl1cCk9XCJvbkRvd25CdXR0b25LZXlVcCgpXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInZGVjcmVtZW50YnV0dG9uJ1wiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZGVjcmVtZW50QnV0dG9uSWNvblwiIFtuZ0NsYXNzXT1cImRlY3JlbWVudEJ1dHRvbkljb25cIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2RlY3JlbWVudGJ1dHRvbmljb24nXCI+PC9zcGFuPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkZWNyZW1lbnRCdXR0b25JY29uXCI+XG4gICAgICAgICAgICAgICAgPEFuZ2xlRG93bkljb24gKm5nSWY9XCIhZGVjcmVtZW50QnV0dG9uSWNvblRlbXBsYXRlXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidkZWNyZW1lbnRidXR0b25pY29uJ1wiIC8+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGVjcmVtZW50QnV0dG9uSWNvblRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L3NwYW4+XG4gICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cInNob3dCdXR0b25zICYmIGJ1dHRvbkxheW91dCAhPT0gJ3N0YWNrZWQnICYmIGJ1dHRvbkxheW91dCAhPT0gJ2hvcml6b250YWwnXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNheEJ1dHRvblxuICAgICAgICBbc2V2ZXJpdHldPVwiJ3NlY29uZGFyeSdcIlxuICAgICAgICBbc2l6ZV09XCInc21hbGwnXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnY2F4LWlucHV0bnVtYmVyLWJ1dHRvbiBjYXgtaW5wdXRudW1iZXItYnV0dG9uLXVwJzogdHJ1ZSB9XCJcbiAgICAgICAgW2NsYXNzXT1cImluY3JlbWVudEJ1dHRvbkNsYXNzXCJcbiAgICAgICAgY2xhc3M9XCJjYXgtYnV0dG9uLWljb24tb25seVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCJ0cnVlXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJvblVwQnV0dG9uTW91c2VEb3duKCRldmVudClcIlxuICAgICAgICAobW91c2V1cCk9XCJvblVwQnV0dG9uTW91c2VVcCgpXCJcbiAgICAgICAgKG1vdXNlbGVhdmUpPVwib25VcEJ1dHRvbk1vdXNlTGVhdmUoKVwiXG4gICAgICAgIChrZXlkb3duKT1cIm9uVXBCdXR0b25LZXlEb3duKCRldmVudClcIlxuICAgICAgICAoa2V5dXApPVwib25VcEJ1dHRvbktleVVwKClcIlxuICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2luY3JlbWVudGJ1dHRvbidcIlxuICAgID5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJpbmNyZW1lbnRCdXR0b25JY29uXCIgW25nQ2xhc3NdPVwiaW5jcmVtZW50QnV0dG9uSWNvblwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInaW5jcmVtZW50YnV0dG9uaWNvbidcIj48L3NwYW4+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaW5jcmVtZW50QnV0dG9uSWNvblwiPlxuICAgICAgICAgICAgPEFuZ2xlVXBJY29uICpuZ0lmPVwiIWluY3JlbWVudEJ1dHRvbkljb25UZW1wbGF0ZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInaW5jcmVtZW50YnV0dG9uaWNvbidcIiAvPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5jcmVtZW50QnV0dG9uSWNvblRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cInNob3dCdXR0b25zICYmIGJ1dHRvbkxheW91dCAhPT0gJ3N0YWNrZWQnICYmIGJ1dHRvbkxheW91dCAhPT0gJ2hvcml6b250YWwnXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNheEJ1dHRvblxuICAgICAgICBbc2V2ZXJpdHldPVwiJ3NlY29uZGFyeSdcIlxuICAgICAgICBbc2l6ZV09XCInc21hbGwnXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnY2F4LWlucHV0bnVtYmVyLWJ1dHRvbiBjYXgtaW5wdXRudW1iZXItYnV0dG9uLWRvd24nOiB0cnVlIH1cIlxuICAgICAgICBjbGFzcz1cImNheC1idXR0b24taWNvbi1vbmx5XCJcbiAgICAgICAgW2NsYXNzXT1cImRlY3JlbWVudEJ1dHRvbkNsYXNzXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cInRydWVcIlxuICAgICAgICAobW91c2Vkb3duKT1cIm9uRG93bkJ1dHRvbk1vdXNlRG93bigkZXZlbnQpXCJcbiAgICAgICAgKG1vdXNldXApPVwib25Eb3duQnV0dG9uTW91c2VVcCgpXCJcbiAgICAgICAgKG1vdXNlbGVhdmUpPVwib25Eb3duQnV0dG9uTW91c2VMZWF2ZSgpXCJcbiAgICAgICAgKGtleWRvd24pPVwib25Eb3duQnV0dG9uS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgKGtleXVwKT1cIm9uRG93bkJ1dHRvbktleVVwKClcIlxuICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2RlY3JlbWVudGJ1dHRvbidcIlxuICAgID5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJkZWNyZW1lbnRCdXR0b25JY29uXCIgW25nQ2xhc3NdPVwiZGVjcmVtZW50QnV0dG9uSWNvblwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInZGVjcmVtZW50YnV0dG9uaWNvbidcIj48L3NwYW4+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZGVjcmVtZW50QnV0dG9uSWNvblwiPlxuICAgICAgICAgICAgPEFuZ2xlRG93bkljb24gKm5nSWY9XCIhZGVjcmVtZW50QnV0dG9uSWNvblRlbXBsYXRlXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidkZWNyZW1lbnRidXR0b25pY29uJ1wiIC8+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkZWNyZW1lbnRCdXR0b25JY29uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2J1dHRvbj5cbjwvc3Bhbj5cbiJdfQ==