cax-design-system 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1812) hide show
  1. package/README.md +47 -0
  2. package/accordion/accordion.d.ts +220 -0
  3. package/accordion/accordion.interface.d.ts +49 -0
  4. package/accordion/accordion.module.d.ts +13 -0
  5. package/accordion/index.d.ts +5 -0
  6. package/accordion/public_api.d.ts +3 -0
  7. package/animate/animate.d.ts +40 -0
  8. package/animate/index.d.ts +5 -0
  9. package/animate/public_api.d.ts +1 -0
  10. package/animateonscroll/animateonscroll.d.ts +75 -0
  11. package/animateonscroll/index.d.ts +5 -0
  12. package/animateonscroll/public_api.d.ts +1 -0
  13. package/api/blockableui.d.ts +10 -0
  14. package/api/caxconfig.d.ts +24 -0
  15. package/api/confirmaeventtype.d.ts +8 -0
  16. package/api/confirmation.d.ts +91 -0
  17. package/api/confirmationservice.d.ts +30 -0
  18. package/api/contextmenuservice.d.ts +11 -0
  19. package/api/filtermatchmode.d.ts +22 -0
  20. package/api/filtermetadata.d.ts +18 -0
  21. package/api/filteroperator.d.ts +4 -0
  22. package/api/filterservice.d.ts +10 -0
  23. package/api/index.d.ts +5 -0
  24. package/api/lazyloadevent.d.ts +47 -0
  25. package/api/lazyloadmeta.d.ts +19 -0
  26. package/api/megamenuitem.d.ts +130 -0
  27. package/api/menuitem.d.ts +176 -0
  28. package/api/message.d.ts +30 -0
  29. package/api/messageservice.d.ts +32 -0
  30. package/api/overlayoptions.d.ts +188 -0
  31. package/api/overlayservice.d.ts +9 -0
  32. package/api/primeicons.d.ts +313 -0
  33. package/api/public_api.d.ts +33 -0
  34. package/api/scrolleroptions.d.ts +116 -0
  35. package/api/selectitem.d.ts +12 -0
  36. package/api/selectitemgroup.d.ts +10 -0
  37. package/api/shared.d.ts +24 -0
  38. package/api/sortevent.d.ts +12 -0
  39. package/api/sortmeta.d.ts +8 -0
  40. package/api/tablestate.d.ts +60 -0
  41. package/api/tooltipoptions.d.ts +69 -0
  42. package/api/translation.d.ts +135 -0
  43. package/api/translationkeys.d.ts +50 -0
  44. package/api/treedragdropservice.d.ts +12 -0
  45. package/api/treenode.d.ts +86 -0
  46. package/api/treenodedragevent.d.ts +27 -0
  47. package/api/treetablenode.d.ts +36 -0
  48. package/autocomplete/autocomplete.d.ts +629 -0
  49. package/autocomplete/autocomplete.interface.d.ts +164 -0
  50. package/autocomplete/index.d.ts +5 -0
  51. package/autocomplete/public_api.d.ts +2 -0
  52. package/autofocus/autofocus.d.ts +28 -0
  53. package/autofocus/index.d.ts +5 -0
  54. package/autofocus/public_api.d.ts +1 -0
  55. package/avatar/avatar.d.ts +73 -0
  56. package/avatar/avatar.module.d.ts +7 -0
  57. package/avatar/index.d.ts +5 -0
  58. package/avatar/public_api.d.ts +2 -0
  59. package/avatargroup/avatargroup.d.ts +27 -0
  60. package/avatargroup/index.d.ts +5 -0
  61. package/avatargroup/public_api.d.ts +1 -0
  62. package/badge/badge.d.ts +23 -0
  63. package/badge/badge.directive.d.ts +33 -0
  64. package/badge/badge.module.d.ts +10 -0
  65. package/badge/index.d.ts +5 -0
  66. package/badge/public_api.d.ts +3 -0
  67. package/baseicon/baseicon.d.ts +15 -0
  68. package/baseicon/index.d.ts +5 -0
  69. package/baseicon/public_api.d.ts +1 -0
  70. package/blockui/blockui.d.ts +64 -0
  71. package/blockui/blockui.interface.d.ts +11 -0
  72. package/blockui/index.d.ts +5 -0
  73. package/blockui/public_api.d.ts +2 -0
  74. package/breadcrumb/breadcrumb.d.ts +55 -0
  75. package/breadcrumb/breadcrumb.interface.d.ts +38 -0
  76. package/breadcrumb/breadcrumb.module.d.ts +13 -0
  77. package/breadcrumb/index.d.ts +5 -0
  78. package/breadcrumb/public_api.d.ts +3 -0
  79. package/button/button.d.ts +84 -0
  80. package/button/button.directive.d.ts +46 -0
  81. package/button/button.interface.d.ts +30 -0
  82. package/button/button.module.d.ts +9 -0
  83. package/button/index.d.ts +5 -0
  84. package/button/public_api.d.ts +4 -0
  85. package/buttongroup/buttongroup.d.ts +11 -0
  86. package/buttongroup/index.d.ts +5 -0
  87. package/buttongroup/public_api.d.ts +1 -0
  88. package/calendar/calendar.d.ts +712 -0
  89. package/calendar/calendar.interface.d.ts +204 -0
  90. package/calendar/calendar.module.d.ts +9 -0
  91. package/calendar/index.d.ts +5 -0
  92. package/calendar/public_api.d.ts +3 -0
  93. package/card/card.d.ts +53 -0
  94. package/card/card.interface.d.ts +27 -0
  95. package/card/card.module.d.ts +11 -0
  96. package/card/index.d.ts +5 -0
  97. package/card/public_api.d.ts +3 -0
  98. package/carousel/carousel.d.ts +227 -0
  99. package/carousel/carousel.interface.d.ts +63 -0
  100. package/carousel/index.d.ts +5 -0
  101. package/carousel/public_api.d.ts +2 -0
  102. package/cascadeselect/cascadeselect.d.ts +435 -0
  103. package/cascadeselect/cascadeselect.interface.d.ts +115 -0
  104. package/cascadeselect/cascadeselect.module.d.ts +15 -0
  105. package/cascadeselect/index.d.ts +5 -0
  106. package/cascadeselect/public_api.d.ts +3 -0
  107. package/chart/chart.d.ts +87 -0
  108. package/chart/index.d.ts +5 -0
  109. package/chart/public_api.d.ts +1 -0
  110. package/checkbox/checkbox.d.ts +164 -0
  111. package/checkbox/checkbox.interface.d.ts +26 -0
  112. package/checkbox/checkbox.module.d.ts +10 -0
  113. package/checkbox/index.d.ts +5 -0
  114. package/checkbox/public_api.d.ts +3 -0
  115. package/chip/chip.d.ts +37 -0
  116. package/chip/chip.interface.d.ts +15 -0
  117. package/chip/chip.module.d.ts +10 -0
  118. package/chip/index.d.ts +5 -0
  119. package/chip/public_api.d.ts +3 -0
  120. package/chips/chips.d.ts +221 -0
  121. package/chips/chips.interface.d.ts +58 -0
  122. package/chips/chips.module.d.ts +13 -0
  123. package/chips/index.d.ts +5 -0
  124. package/chips/public_api.d.ts +3 -0
  125. package/colorpicker/colorpicker.d.ts +247 -0
  126. package/colorpicker/colorpicker.interface.d.ts +15 -0
  127. package/colorpicker/index.d.ts +5 -0
  128. package/colorpicker/public_api.d.ts +2 -0
  129. package/confirmdialog/confirmdialog.d.ts +273 -0
  130. package/confirmdialog/confirmdialog.interface.d.ts +39 -0
  131. package/confirmdialog/index.d.ts +5 -0
  132. package/confirmdialog/public_api.d.ts +2 -0
  133. package/confirmpopup/confirmpopup.d.ts +119 -0
  134. package/confirmpopup/confirmpopup.interface.d.ts +27 -0
  135. package/confirmpopup/index.d.ts +5 -0
  136. package/confirmpopup/public_api.d.ts +2 -0
  137. package/contextmenu/contextmenu.d.ts +260 -0
  138. package/contextmenu/index.d.ts +5 -0
  139. package/contextmenu/public_api.d.ts +1 -0
  140. package/dataview/dataview.d.ts +274 -0
  141. package/dataview/dataview.interface.d.ts +183 -0
  142. package/dataview/index.d.ts +5 -0
  143. package/dataview/public_api.d.ts +2 -0
  144. package/defer/defer.d.ts +39 -0
  145. package/defer/index.d.ts +5 -0
  146. package/defer/public_api.d.ts +1 -0
  147. package/dialog/dialog.d.ts +373 -0
  148. package/dialog/dialog.interface.d.ts +31 -0
  149. package/dialog/index.d.ts +5 -0
  150. package/dialog/public_api.d.ts +2 -0
  151. package/divider/divider.d.ts +49 -0
  152. package/divider/divider.module.d.ts +7 -0
  153. package/divider/index.d.ts +5 -0
  154. package/divider/public_api.d.ts +2 -0
  155. package/dock/dock.d.ts +115 -0
  156. package/dock/dock.interface.d.ts +19 -0
  157. package/dock/index.d.ts +5 -0
  158. package/dock/public_api.d.ts +2 -0
  159. package/dom/connectedoverlayscrollhandler.d.ts +9 -0
  160. package/dom/domhandler.d.ts +95 -0
  161. package/dom/index.d.ts +5 -0
  162. package/dom/public_api.d.ts +2 -0
  163. package/dragdrop/dragdrop.d.ts +112 -0
  164. package/dragdrop/dragdrop.module.d.ts +8 -0
  165. package/dragdrop/index.d.ts +5 -0
  166. package/dragdrop/public_api.d.ts +2 -0
  167. package/dropdown/dropdown-item.d.ts +30 -0
  168. package/dropdown/dropdown.d.ts +627 -0
  169. package/dropdown/dropdown.interface.d.ts +154 -0
  170. package/dropdown/dropdown.module.d.ts +11 -0
  171. package/dropdown/index.d.ts +5 -0
  172. package/dropdown/public_api.d.ts +4 -0
  173. package/dynamicdialog/dialogservice.d.ts +35 -0
  174. package/dynamicdialog/dynamicdialog-config.d.ts +221 -0
  175. package/dynamicdialog/dynamicdialog-injector.d.ts +7 -0
  176. package/dynamicdialog/dynamicdialog-ref.d.ts +101 -0
  177. package/dynamicdialog/dynamicdialog.d.ts +124 -0
  178. package/dynamicdialog/dynamicdialogcontent.d.ts +8 -0
  179. package/dynamicdialog/index.d.ts +5 -0
  180. package/dynamicdialog/public_api.d.ts +6 -0
  181. package/editor/editor.d.ts +111 -0
  182. package/editor/editor.interface.d.ts +64 -0
  183. package/editor/index.d.ts +5 -0
  184. package/editor/public_api.d.ts +2 -0
  185. package/esm2022/accordion/accordion.interface.mjs +2 -0
  186. package/esm2022/accordion/accordion.mjs +591 -0
  187. package/esm2022/accordion/accordion.module.mjs +23 -0
  188. package/esm2022/accordion/cax-design-system-accordion.mjs +5 -0
  189. package/esm2022/accordion/public_api.mjs +4 -0
  190. package/esm2022/animate/animate.mjs +101 -0
  191. package/esm2022/animate/cax-design-system-animate.mjs +5 -0
  192. package/esm2022/animate/public_api.mjs +2 -0
  193. package/esm2022/animateonscroll/animateonscroll.mjs +185 -0
  194. package/esm2022/animateonscroll/cax-design-system-animateonscroll.mjs +5 -0
  195. package/esm2022/animateonscroll/public_api.mjs +2 -0
  196. package/esm2022/api/blockableui.mjs +2 -0
  197. package/esm2022/api/cax-design-system-api.mjs +5 -0
  198. package/esm2022/api/caxconfig.mjs +163 -0
  199. package/esm2022/api/confirmaeventtype.mjs +10 -0
  200. package/esm2022/api/confirmation.mjs +2 -0
  201. package/esm2022/api/confirmationservice.mjs +43 -0
  202. package/esm2022/api/contextmenuservice.mjs +22 -0
  203. package/esm2022/api/filtermatchmode.mjs +23 -0
  204. package/esm2022/api/filtermetadata.mjs +2 -0
  205. package/esm2022/api/filteroperator.mjs +5 -0
  206. package/esm2022/api/filterservice.mjs +225 -0
  207. package/esm2022/api/lazyloadevent.mjs +2 -0
  208. package/esm2022/api/lazyloadmeta.mjs +2 -0
  209. package/esm2022/api/megamenuitem.mjs +2 -0
  210. package/esm2022/api/menuitem.mjs +2 -0
  211. package/esm2022/api/message.mjs +2 -0
  212. package/esm2022/api/messageservice.mjs +47 -0
  213. package/esm2022/api/overlayoptions.mjs +2 -0
  214. package/esm2022/api/overlayservice.mjs +19 -0
  215. package/esm2022/api/primeicons.mjs +314 -0
  216. package/esm2022/api/public_api.mjs +34 -0
  217. package/esm2022/api/scrolleroptions.mjs +2 -0
  218. package/esm2022/api/selectitem.mjs +2 -0
  219. package/esm2022/api/selectitemgroup.mjs +2 -0
  220. package/esm2022/api/shared.mjs +65 -0
  221. package/esm2022/api/sortevent.mjs +2 -0
  222. package/esm2022/api/sortmeta.mjs +2 -0
  223. package/esm2022/api/tablestate.mjs +2 -0
  224. package/esm2022/api/tooltipoptions.mjs +2 -0
  225. package/esm2022/api/translation.mjs +2 -0
  226. package/esm2022/api/translationkeys.mjs +51 -0
  227. package/esm2022/api/treedragdropservice.mjs +21 -0
  228. package/esm2022/api/treenode.mjs +2 -0
  229. package/esm2022/api/treenodedragevent.mjs +2 -0
  230. package/esm2022/api/treetablenode.mjs +2 -0
  231. package/esm2022/autocomplete/autocomplete.interface.mjs +2 -0
  232. package/esm2022/autocomplete/autocomplete.mjs +1880 -0
  233. package/esm2022/autocomplete/cax-design-system-autocomplete.mjs +5 -0
  234. package/esm2022/autocomplete/public_api.mjs +3 -0
  235. package/esm2022/autofocus/autofocus.mjs +78 -0
  236. package/esm2022/autofocus/cax-design-system-autofocus.mjs +5 -0
  237. package/esm2022/autofocus/public_api.mjs +2 -0
  238. package/esm2022/avatar/avatar.mjs +104 -0
  239. package/esm2022/avatar/avatar.module.mjs +16 -0
  240. package/esm2022/avatar/cax-design-system-avatar.mjs +5 -0
  241. package/esm2022/avatar/public_api.mjs +3 -0
  242. package/esm2022/avatargroup/avatargroup.mjs +54 -0
  243. package/esm2022/avatargroup/cax-design-system-avatargroup.mjs +5 -0
  244. package/esm2022/avatargroup/public_api.mjs +2 -0
  245. package/esm2022/badge/badge.directive.mjs +199 -0
  246. package/esm2022/badge/badge.mjs +51 -0
  247. package/esm2022/badge/badge.module.mjs +20 -0
  248. package/esm2022/badge/cax-design-system-badge.mjs +5 -0
  249. package/esm2022/badge/public_api.mjs +4 -0
  250. package/esm2022/baseicon/baseicon.mjs +45 -0
  251. package/esm2022/baseicon/cax-design-system-baseicon.mjs +5 -0
  252. package/esm2022/baseicon/public_api.mjs +2 -0
  253. package/esm2022/blockui/blockui.interface.mjs +2 -0
  254. package/esm2022/blockui/blockui.mjs +206 -0
  255. package/esm2022/blockui/cax-design-system-blockui.mjs +5 -0
  256. package/esm2022/blockui/public_api.mjs +3 -0
  257. package/esm2022/breadcrumb/breadcrumb.interface.mjs +2 -0
  258. package/esm2022/breadcrumb/breadcrumb.mjs +120 -0
  259. package/esm2022/breadcrumb/breadcrumb.module.mjs +23 -0
  260. package/esm2022/breadcrumb/cax-design-system-breadcrumb.mjs +5 -0
  261. package/esm2022/breadcrumb/public_api.mjs +4 -0
  262. package/esm2022/button/button.directive.mjs +227 -0
  263. package/esm2022/button/button.interface.mjs +2 -0
  264. package/esm2022/button/button.mjs +189 -0
  265. package/esm2022/button/button.module.mjs +18 -0
  266. package/esm2022/button/cax-design-system-button.mjs +5 -0
  267. package/esm2022/button/public_api.mjs +5 -0
  268. package/esm2022/buttongroup/buttongroup.mjs +38 -0
  269. package/esm2022/buttongroup/cax-design-system-buttongroup.mjs +5 -0
  270. package/esm2022/buttongroup/public_api.mjs +2 -0
  271. package/esm2022/calendar/calendar.interface.mjs +2 -0
  272. package/esm2022/calendar/calendar.mjs +3192 -0
  273. package/esm2022/calendar/calendar.module.mjs +18 -0
  274. package/esm2022/calendar/cax-design-system-calendar.mjs +5 -0
  275. package/esm2022/calendar/public_api.mjs +4 -0
  276. package/esm2022/card/card.interface.mjs +2 -0
  277. package/esm2022/card/card.mjs +117 -0
  278. package/esm2022/card/card.module.mjs +21 -0
  279. package/esm2022/card/cax-design-system-card.mjs +5 -0
  280. package/esm2022/card/public_api.mjs +4 -0
  281. package/esm2022/carousel/carousel.interface.mjs +2 -0
  282. package/esm2022/carousel/carousel.mjs +968 -0
  283. package/esm2022/carousel/cax-design-system-carousel.mjs +5 -0
  284. package/esm2022/carousel/public_api.mjs +3 -0
  285. package/esm2022/cascadeselect/cascadeselect.interface.mjs +2 -0
  286. package/esm2022/cascadeselect/cascadeselect.mjs +1135 -0
  287. package/esm2022/cascadeselect/cascadeselect.module.mjs +25 -0
  288. package/esm2022/cascadeselect/cax-design-system-cascadeselect.mjs +5 -0
  289. package/esm2022/cascadeselect/public_api.mjs +4 -0
  290. package/esm2022/cax-design-system.mjs +5 -0
  291. package/esm2022/chart/cax-design-system-chart.mjs +5 -0
  292. package/esm2022/chart/chart.mjs +236 -0
  293. package/esm2022/chart/public_api.mjs +2 -0
  294. package/esm2022/checkbox/cax-design-system-checkbox.mjs +5 -0
  295. package/esm2022/checkbox/checkbox.interface.mjs +2 -0
  296. package/esm2022/checkbox/checkbox.mjs +303 -0
  297. package/esm2022/checkbox/checkbox.module.mjs +20 -0
  298. package/esm2022/checkbox/public_api.mjs +4 -0
  299. package/esm2022/chip/cax-design-system-chip.mjs +5 -0
  300. package/esm2022/chip/chip.interface.mjs +2 -0
  301. package/esm2022/chip/chip.mjs +86 -0
  302. package/esm2022/chip/chip.module.mjs +20 -0
  303. package/esm2022/chip/public_api.mjs +4 -0
  304. package/esm2022/chips/cax-design-system-chips.mjs +5 -0
  305. package/esm2022/chips/chips.interface.mjs +2 -0
  306. package/esm2022/chips/chips.mjs +568 -0
  307. package/esm2022/chips/chips.module.mjs +22 -0
  308. package/esm2022/chips/public_api.mjs +4 -0
  309. package/esm2022/colorpicker/cax-design-system-colorpicker.mjs +5 -0
  310. package/esm2022/colorpicker/colorpicker.interface.mjs +2 -0
  311. package/esm2022/colorpicker/colorpicker.mjs +829 -0
  312. package/esm2022/colorpicker/public_api.mjs +3 -0
  313. package/esm2022/confirmdialog/cax-design-system-confirmdialog.mjs +5 -0
  314. package/esm2022/confirmdialog/confirmdialog.interface.mjs +2 -0
  315. package/esm2022/confirmdialog/confirmdialog.mjs +689 -0
  316. package/esm2022/confirmdialog/public_api.mjs +3 -0
  317. package/esm2022/confirmpopup/cax-design-system-confirmpopup.mjs +5 -0
  318. package/esm2022/confirmpopup/confirmpopup.interface.mjs +2 -0
  319. package/esm2022/confirmpopup/confirmpopup.mjs +499 -0
  320. package/esm2022/confirmpopup/public_api.mjs +3 -0
  321. package/esm2022/contextmenu/cax-design-system-contextmenu.mjs +5 -0
  322. package/esm2022/contextmenu/contextmenu.mjs +1304 -0
  323. package/esm2022/contextmenu/public_api.mjs +2 -0
  324. package/esm2022/dataview/cax-design-system-dataview.mjs +5 -0
  325. package/esm2022/dataview/dataview.interface.mjs +2 -0
  326. package/esm2022/dataview/dataview.mjs +723 -0
  327. package/esm2022/dataview/public_api.mjs +3 -0
  328. package/esm2022/defer/cax-design-system-defer.mjs +5 -0
  329. package/esm2022/defer/defer.mjs +111 -0
  330. package/esm2022/defer/public_api.mjs +2 -0
  331. package/esm2022/dialog/cax-design-system-dialog.mjs +5 -0
  332. package/esm2022/dialog/dialog.interface.mjs +2 -0
  333. package/esm2022/dialog/dialog.mjs +1168 -0
  334. package/esm2022/dialog/public_api.mjs +3 -0
  335. package/esm2022/divider/cax-design-system-divider.mjs +5 -0
  336. package/esm2022/divider/divider.mjs +69 -0
  337. package/esm2022/divider/divider.module.mjs +16 -0
  338. package/esm2022/divider/public_api.mjs +3 -0
  339. package/esm2022/dock/cax-design-system-dock.mjs +5 -0
  340. package/esm2022/dock/dock.interface.mjs +2 -0
  341. package/esm2022/dock/dock.mjs +431 -0
  342. package/esm2022/dock/public_api.mjs +3 -0
  343. package/esm2022/dom/cax-design-system-dom.mjs +5 -0
  344. package/esm2022/dom/connectedoverlayscrollhandler.mjs +30 -0
  345. package/esm2022/dom/domhandler.mjs +722 -0
  346. package/esm2022/dom/public_api.mjs +3 -0
  347. package/esm2022/dragdrop/cax-design-system-dragdrop.mjs +5 -0
  348. package/esm2022/dragdrop/dragdrop.mjs +309 -0
  349. package/esm2022/dragdrop/dragdrop.module.mjs +18 -0
  350. package/esm2022/dragdrop/public_api.mjs +3 -0
  351. package/esm2022/dropdown/cax-design-system-dropdown.mjs +5 -0
  352. package/esm2022/dropdown/dropdown-item.mjs +72 -0
  353. package/esm2022/dropdown/dropdown.interface.mjs +2 -0
  354. package/esm2022/dropdown/dropdown.mjs +1597 -0
  355. package/esm2022/dropdown/dropdown.module.mjs +20 -0
  356. package/esm2022/dropdown/public_api.mjs +5 -0
  357. package/esm2022/dynamicdialog/cax-design-system-dynamicdialog.mjs +5 -0
  358. package/esm2022/dynamicdialog/dialogservice.mjs +102 -0
  359. package/esm2022/dynamicdialog/dynamicdialog-config.mjs +187 -0
  360. package/esm2022/dynamicdialog/dynamicdialog-injector.mjs +15 -0
  361. package/esm2022/dynamicdialog/dynamicdialog-ref.mjs +119 -0
  362. package/esm2022/dynamicdialog/dynamicdialog.mjs +696 -0
  363. package/esm2022/dynamicdialog/dynamicdialogcontent.mjs +20 -0
  364. package/esm2022/dynamicdialog/public_api.mjs +7 -0
  365. package/esm2022/editor/cax-design-system-editor.mjs +5 -0
  366. package/esm2022/editor/editor.interface.mjs +2 -0
  367. package/esm2022/editor/editor.mjs +392 -0
  368. package/esm2022/editor/public_api.mjs +3 -0
  369. package/esm2022/fieldset/cax-design-system-fieldset.mjs +5 -0
  370. package/esm2022/fieldset/fieldset.interface.mjs +2 -0
  371. package/esm2022/fieldset/fieldset.mjs +297 -0
  372. package/esm2022/fieldset/public_api.mjs +3 -0
  373. package/esm2022/fileupload/cax-design-system-fileupload.mjs +5 -0
  374. package/esm2022/fileupload/fileupload.interface.mjs +2 -0
  375. package/esm2022/fileupload/fileupload.mjs +1188 -0
  376. package/esm2022/fileupload/public_api.mjs +3 -0
  377. package/esm2022/floatlabel/cax-design-system-floatlabel.mjs +5 -0
  378. package/esm2022/floatlabel/floatlabel.mjs +44 -0
  379. package/esm2022/floatlabel/public_api.mjs +2 -0
  380. package/esm2022/focustrap/cax-design-system-focustrap.mjs +5 -0
  381. package/esm2022/focustrap/focustrap.mjs +103 -0
  382. package/esm2022/focustrap/public_api.mjs +2 -0
  383. package/esm2022/galleria/cax-design-system-galleria.mjs +5 -0
  384. package/esm2022/galleria/galleria.interface.mjs +2 -0
  385. package/esm2022/galleria/galleria.mjs +1668 -0
  386. package/esm2022/galleria/public_api.mjs +3 -0
  387. package/esm2022/iconfield/cax-design-system-iconfield.mjs +5 -0
  388. package/esm2022/iconfield/iconfield.mjs +44 -0
  389. package/esm2022/iconfield/public_api.mjs +2 -0
  390. package/esm2022/icons/angledoubledown/angledoubledown.mjs +35 -0
  391. package/esm2022/icons/angledoubledown/cax-design-system-icons-angledoubledown.mjs +5 -0
  392. package/esm2022/icons/angledoubledown/public_api.mjs +2 -0
  393. package/esm2022/icons/angledoubleleft/angledoubleleft.mjs +35 -0
  394. package/esm2022/icons/angledoubleleft/cax-design-system-icons-angledoubleleft.mjs +5 -0
  395. package/esm2022/icons/angledoubleleft/public_api.mjs +2 -0
  396. package/esm2022/icons/angledoubleright/angledoubleright.mjs +35 -0
  397. package/esm2022/icons/angledoubleright/cax-design-system-icons-angledoubleright.mjs +5 -0
  398. package/esm2022/icons/angledoubleright/public_api.mjs +2 -0
  399. package/esm2022/icons/angledoubleup/angledoubleup.mjs +35 -0
  400. package/esm2022/icons/angledoubleup/cax-design-system-icons-angledoubleup.mjs +5 -0
  401. package/esm2022/icons/angledoubleup/public_api.mjs +2 -0
  402. package/esm2022/icons/angledown/angledown.mjs +31 -0
  403. package/esm2022/icons/angledown/cax-design-system-icons-angledown.mjs +5 -0
  404. package/esm2022/icons/angledown/public_api.mjs +2 -0
  405. package/esm2022/icons/angleleft/angleleft.mjs +31 -0
  406. package/esm2022/icons/angleleft/cax-design-system-icons-angleleft.mjs +5 -0
  407. package/esm2022/icons/angleleft/public_api.mjs +2 -0
  408. package/esm2022/icons/angleright/angleright.mjs +31 -0
  409. package/esm2022/icons/angleright/cax-design-system-icons-angleright.mjs +5 -0
  410. package/esm2022/icons/angleright/public_api.mjs +2 -0
  411. package/esm2022/icons/angleup/angleup.mjs +31 -0
  412. package/esm2022/icons/angleup/cax-design-system-icons-angleup.mjs +5 -0
  413. package/esm2022/icons/angleup/public_api.mjs +2 -0
  414. package/esm2022/icons/arrowdown/arrowdown.mjs +54 -0
  415. package/esm2022/icons/arrowdown/cax-design-system-icons-arrowdown.mjs +5 -0
  416. package/esm2022/icons/arrowdown/public_api.mjs +2 -0
  417. package/esm2022/icons/arrowdownleft/arrowdownleft.mjs +31 -0
  418. package/esm2022/icons/arrowdownleft/cax-design-system-icons-arrowdownleft.mjs +5 -0
  419. package/esm2022/icons/arrowdownleft/public_api.mjs +2 -0
  420. package/esm2022/icons/arrowdownright/arrowdownright.mjs +31 -0
  421. package/esm2022/icons/arrowdownright/cax-design-system-icons-arrowdownright.mjs +5 -0
  422. package/esm2022/icons/arrowdownright/public_api.mjs +2 -0
  423. package/esm2022/icons/arrowleft/arrowleft.mjs +54 -0
  424. package/esm2022/icons/arrowleft/cax-design-system-icons-arrowleft.mjs +5 -0
  425. package/esm2022/icons/arrowleft/public_api.mjs +2 -0
  426. package/esm2022/icons/arrowright/arrowright.mjs +35 -0
  427. package/esm2022/icons/arrowright/cax-design-system-icons-arrowright.mjs +5 -0
  428. package/esm2022/icons/arrowright/public_api.mjs +2 -0
  429. package/esm2022/icons/arrowup/arrowup.mjs +54 -0
  430. package/esm2022/icons/arrowup/cax-design-system-icons-arrowup.mjs +5 -0
  431. package/esm2022/icons/arrowup/public_api.mjs +2 -0
  432. package/esm2022/icons/ban/ban.mjs +50 -0
  433. package/esm2022/icons/ban/cax-design-system-icons-ban.mjs +5 -0
  434. package/esm2022/icons/ban/public_api.mjs +2 -0
  435. package/esm2022/icons/bars/bars.mjs +35 -0
  436. package/esm2022/icons/bars/cax-design-system-icons-bars.mjs +5 -0
  437. package/esm2022/icons/bars/public_api.mjs +2 -0
  438. package/esm2022/icons/blank/blank.mjs +25 -0
  439. package/esm2022/icons/blank/cax-design-system-icons-blank.mjs +5 -0
  440. package/esm2022/icons/blank/public_api.mjs +2 -0
  441. package/esm2022/icons/calendar/calendar.mjs +31 -0
  442. package/esm2022/icons/calendar/cax-design-system-icons-calendar.mjs +5 -0
  443. package/esm2022/icons/calendar/public_api.mjs +2 -0
  444. package/esm2022/icons/caretleft/caretleft.mjs +31 -0
  445. package/esm2022/icons/caretleft/cax-design-system-icons-caretleft.mjs +5 -0
  446. package/esm2022/icons/caretleft/public_api.mjs +2 -0
  447. package/esm2022/icons/caretright/caretright.mjs +31 -0
  448. package/esm2022/icons/caretright/cax-design-system-icons-caretright.mjs +5 -0
  449. package/esm2022/icons/caretright/public_api.mjs +2 -0
  450. package/esm2022/icons/check/cax-design-system-icons-check.mjs +5 -0
  451. package/esm2022/icons/check/check.mjs +31 -0
  452. package/esm2022/icons/check/public_api.mjs +2 -0
  453. package/esm2022/icons/chevrondown/cax-design-system-icons-chevrondown.mjs +5 -0
  454. package/esm2022/icons/chevrondown/chevrondown.mjs +31 -0
  455. package/esm2022/icons/chevrondown/public_api.mjs +2 -0
  456. package/esm2022/icons/chevronleft/cax-design-system-icons-chevronleft.mjs +5 -0
  457. package/esm2022/icons/chevronleft/chevronleft.mjs +31 -0
  458. package/esm2022/icons/chevronleft/public_api.mjs +2 -0
  459. package/esm2022/icons/chevronright/cax-design-system-icons-chevronright.mjs +5 -0
  460. package/esm2022/icons/chevronright/chevronright.mjs +31 -0
  461. package/esm2022/icons/chevronright/public_api.mjs +2 -0
  462. package/esm2022/icons/chevronup/cax-design-system-icons-chevronup.mjs +5 -0
  463. package/esm2022/icons/chevronup/chevronup.mjs +31 -0
  464. package/esm2022/icons/chevronup/public_api.mjs +2 -0
  465. package/esm2022/icons/exclamationtriangle/cax-design-system-icons-exclamationtriangle.mjs +5 -0
  466. package/esm2022/icons/exclamationtriangle/exclamationtriangle.mjs +66 -0
  467. package/esm2022/icons/exclamationtriangle/public_api.mjs +2 -0
  468. package/esm2022/icons/eye/cax-design-system-icons-eye.mjs +5 -0
  469. package/esm2022/icons/eye/eye.mjs +35 -0
  470. package/esm2022/icons/eye/public_api.mjs +2 -0
  471. package/esm2022/icons/eyeslash/cax-design-system-icons-eyeslash.mjs +5 -0
  472. package/esm2022/icons/eyeslash/eyeslash.mjs +54 -0
  473. package/esm2022/icons/eyeslash/public_api.mjs +2 -0
  474. package/esm2022/icons/filter/cax-design-system-icons-filter.mjs +5 -0
  475. package/esm2022/icons/filter/filter.mjs +50 -0
  476. package/esm2022/icons/filter/public_api.mjs +2 -0
  477. package/esm2022/icons/filterslash/cax-design-system-icons-filterslash.mjs +5 -0
  478. package/esm2022/icons/filterslash/filterslash.mjs +54 -0
  479. package/esm2022/icons/filterslash/public_api.mjs +2 -0
  480. package/esm2022/icons/home/cax-design-system-icons-home.mjs +5 -0
  481. package/esm2022/icons/home/home.mjs +54 -0
  482. package/esm2022/icons/home/public_api.mjs +2 -0
  483. package/esm2022/icons/infocircle/cax-design-system-icons-infocircle.mjs +5 -0
  484. package/esm2022/icons/infocircle/infocircle.mjs +54 -0
  485. package/esm2022/icons/infocircle/public_api.mjs +2 -0
  486. package/esm2022/icons/minus/cax-design-system-icons-minus.mjs +5 -0
  487. package/esm2022/icons/minus/minus.mjs +32 -0
  488. package/esm2022/icons/minus/public_api.mjs +2 -0
  489. package/esm2022/icons/pencil/cax-design-system-icons-pencil.mjs +5 -0
  490. package/esm2022/icons/pencil/pencil.mjs +50 -0
  491. package/esm2022/icons/pencil/public_api.mjs +2 -0
  492. package/esm2022/icons/plus/cax-design-system-icons-plus.mjs +5 -0
  493. package/esm2022/icons/plus/plus.mjs +50 -0
  494. package/esm2022/icons/plus/public_api.mjs +2 -0
  495. package/esm2022/icons/refresh/cax-design-system-icons-refresh.mjs +5 -0
  496. package/esm2022/icons/refresh/public_api.mjs +2 -0
  497. package/esm2022/icons/refresh/refresh.mjs +54 -0
  498. package/esm2022/icons/search/cax-design-system-icons-search.mjs +5 -0
  499. package/esm2022/icons/search/public_api.mjs +2 -0
  500. package/esm2022/icons/search/search.mjs +54 -0
  501. package/esm2022/icons/searchminus/cax-design-system-icons-searchminus.mjs +5 -0
  502. package/esm2022/icons/searchminus/public_api.mjs +2 -0
  503. package/esm2022/icons/searchminus/searchminus.mjs +54 -0
  504. package/esm2022/icons/searchplus/cax-design-system-icons-searchplus.mjs +5 -0
  505. package/esm2022/icons/searchplus/public_api.mjs +2 -0
  506. package/esm2022/icons/searchplus/searchplus.mjs +54 -0
  507. package/esm2022/icons/sortalt/cax-design-system-icons-sortalt.mjs +5 -0
  508. package/esm2022/icons/sortalt/public_api.mjs +2 -0
  509. package/esm2022/icons/sortalt/sortalt.mjs +62 -0
  510. package/esm2022/icons/sortamountdown/cax-design-system-icons-sortamountdown.mjs +5 -0
  511. package/esm2022/icons/sortamountdown/public_api.mjs +2 -0
  512. package/esm2022/icons/sortamountdown/sortamountdown.mjs +50 -0
  513. package/esm2022/icons/sortamountupalt/cax-design-system-icons-sortamountupalt.mjs +5 -0
  514. package/esm2022/icons/sortamountupalt/public_api.mjs +2 -0
  515. package/esm2022/icons/sortamountupalt/sortamountupalt.mjs +50 -0
  516. package/esm2022/icons/spinner/cax-design-system-icons-spinner.mjs +5 -0
  517. package/esm2022/icons/spinner/public_api.mjs +2 -0
  518. package/esm2022/icons/spinner/spinner.mjs +50 -0
  519. package/esm2022/icons/star/cax-design-system-icons-star.mjs +5 -0
  520. package/esm2022/icons/star/public_api.mjs +2 -0
  521. package/esm2022/icons/star/star.mjs +50 -0
  522. package/esm2022/icons/starfill/cax-design-system-icons-starfill.mjs +5 -0
  523. package/esm2022/icons/starfill/public_api.mjs +2 -0
  524. package/esm2022/icons/starfill/starfill.mjs +50 -0
  525. package/esm2022/icons/thlarge/cax-design-system-icons-thlarge.mjs +5 -0
  526. package/esm2022/icons/thlarge/public_api.mjs +2 -0
  527. package/esm2022/icons/thlarge/thlarge.mjs +54 -0
  528. package/esm2022/icons/times/cax-design-system-icons-times.mjs +5 -0
  529. package/esm2022/icons/times/public_api.mjs +2 -0
  530. package/esm2022/icons/times/times.mjs +31 -0
  531. package/esm2022/icons/timescircle/cax-design-system-icons-timescircle.mjs +5 -0
  532. package/esm2022/icons/timescircle/public_api.mjs +2 -0
  533. package/esm2022/icons/timescircle/timescircle.mjs +54 -0
  534. package/esm2022/icons/trash/cax-design-system-icons-trash.mjs +5 -0
  535. package/esm2022/icons/trash/public_api.mjs +2 -0
  536. package/esm2022/icons/trash/trash.mjs +54 -0
  537. package/esm2022/icons/undo/cax-design-system-icons-undo.mjs +5 -0
  538. package/esm2022/icons/undo/public_api.mjs +2 -0
  539. package/esm2022/icons/undo/undo.mjs +54 -0
  540. package/esm2022/icons/upload/cax-design-system-icons-upload.mjs +5 -0
  541. package/esm2022/icons/upload/public_api.mjs +2 -0
  542. package/esm2022/icons/upload/upload.mjs +54 -0
  543. package/esm2022/icons/windowmaximize/cax-design-system-icons-windowmaximize.mjs +5 -0
  544. package/esm2022/icons/windowmaximize/public_api.mjs +2 -0
  545. package/esm2022/icons/windowmaximize/windowmaximize.mjs +54 -0
  546. package/esm2022/icons/windowminimize/cax-design-system-icons-windowminimize.mjs +5 -0
  547. package/esm2022/icons/windowminimize/public_api.mjs +2 -0
  548. package/esm2022/icons/windowminimize/windowminimize.mjs +54 -0
  549. package/esm2022/image/cax-design-system-image.mjs +5 -0
  550. package/esm2022/image/image.interface.mjs +2 -0
  551. package/esm2022/image/image.mjs +418 -0
  552. package/esm2022/image/image.module.mjs +17 -0
  553. package/esm2022/image/public_api.mjs +4 -0
  554. package/esm2022/inplace/cax-design-system-inplace.mjs +5 -0
  555. package/esm2022/inplace/inplace.interface.mjs +2 -0
  556. package/esm2022/inplace/inplace.mjs +243 -0
  557. package/esm2022/inplace/public_api.mjs +3 -0
  558. package/esm2022/inputgroup/cax-design-system-inputgroup.mjs +5 -0
  559. package/esm2022/inputgroup/inputgroup.mjs +48 -0
  560. package/esm2022/inputgroup/inputgroup.module.mjs +25 -0
  561. package/esm2022/inputgroup/public_api.mjs +3 -0
  562. package/esm2022/inputgroupaddon/cax-design-system-inputgroupaddon.mjs +5 -0
  563. package/esm2022/inputgroupaddon/inputgroupaddon.mjs +32 -0
  564. package/esm2022/inputgroupaddon/inputgroupaddon.module.mjs +24 -0
  565. package/esm2022/inputgroupaddon/public_api.mjs +3 -0
  566. package/esm2022/inputicon/cax-design-system-inputicon.mjs +5 -0
  567. package/esm2022/inputicon/inputicon.mjs +38 -0
  568. package/esm2022/inputicon/public_api.mjs +2 -0
  569. package/esm2022/inputmask/cax-design-system-inputmask.mjs +5 -0
  570. package/esm2022/inputmask/inputmask.interface.mjs +2 -0
  571. package/esm2022/inputmask/inputmask.mjs +914 -0
  572. package/esm2022/inputmask/public_api.mjs +3 -0
  573. package/esm2022/inputnumber/cax-design-system-inputnumber.mjs +5 -0
  574. package/esm2022/inputnumber/inputnumber.interface.mjs +2 -0
  575. package/esm2022/inputnumber/inputnumber.mjs +1290 -0
  576. package/esm2022/inputnumber/inputnumber.module.mjs +17 -0
  577. package/esm2022/inputnumber/public_api.mjs +4 -0
  578. package/esm2022/inputotp/cax-design-system-inputotp.mjs +5 -0
  579. package/esm2022/inputotp/inputotp.interface.mjs +2 -0
  580. package/esm2022/inputotp/inputotp.mjs +381 -0
  581. package/esm2022/inputotp/public_api.mjs +3 -0
  582. package/esm2022/inputswitch/cax-design-system-inputswitch.mjs +5 -0
  583. package/esm2022/inputswitch/inputswitch.interface.mjs +2 -0
  584. package/esm2022/inputswitch/inputswitch.mjs +244 -0
  585. package/esm2022/inputswitch/public_api.mjs +3 -0
  586. package/esm2022/inputtext/cax-design-system-inputtext.mjs +5 -0
  587. package/esm2022/inputtext/inputtext.component.mjs +74 -0
  588. package/esm2022/inputtext/inputtext.directive.mjs +52 -0
  589. package/esm2022/inputtext/inputtext.module.mjs +20 -0
  590. package/esm2022/inputtext/public_api.mjs +4 -0
  591. package/esm2022/inputtextarea/cax-design-system-inputtextarea.mjs +5 -0
  592. package/esm2022/inputtextarea/inputtextarea.mjs +135 -0
  593. package/esm2022/inputtextarea/public_api.mjs +2 -0
  594. package/esm2022/keyfilter/cax-design-system-keyfilter.mjs +5 -0
  595. package/esm2022/keyfilter/keyfilter.interface.mjs +2 -0
  596. package/esm2022/keyfilter/keyfilter.mjs +265 -0
  597. package/esm2022/keyfilter/public_api.mjs +3 -0
  598. package/esm2022/knob/cax-design-system-knob.mjs +5 -0
  599. package/esm2022/knob/knob.mjs +464 -0
  600. package/esm2022/knob/public_api.mjs +2 -0
  601. package/esm2022/listbox/cax-design-system-listbox.mjs +5 -0
  602. package/esm2022/listbox/listbox.interface.mjs +2 -0
  603. package/esm2022/listbox/listbox.mjs +1555 -0
  604. package/esm2022/listbox/public_api.mjs +3 -0
  605. package/esm2022/logo/cax-design-system-logo.mjs +5 -0
  606. package/esm2022/logo/logo.mjs +45 -0
  607. package/esm2022/logo/logo.module.mjs +16 -0
  608. package/esm2022/logo/public_api.mjs +3 -0
  609. package/esm2022/megamenu/cax-design-system-megamenu.mjs +5 -0
  610. package/esm2022/megamenu/megamenu.interface.mjs +2 -0
  611. package/esm2022/megamenu/megamenu.mjs +1190 -0
  612. package/esm2022/megamenu/public_api.mjs +3 -0
  613. package/esm2022/menu/cax-design-system-menu.mjs +5 -0
  614. package/esm2022/menu/menu.mjs +953 -0
  615. package/esm2022/menu/public_api.mjs +2 -0
  616. package/esm2022/menubar/cax-design-system-menubar.mjs +5 -0
  617. package/esm2022/menubar/menubar.interface.mjs +2 -0
  618. package/esm2022/menubar/menubar.mjs +1249 -0
  619. package/esm2022/menubar/public_api.mjs +3 -0
  620. package/esm2022/message/cax-design-system-message.mjs +5 -0
  621. package/esm2022/message/message.mjs +112 -0
  622. package/esm2022/message/public_api.mjs +2 -0
  623. package/esm2022/messages/cax-design-system-messages.mjs +5 -0
  624. package/esm2022/messages/messages.interface.mjs +2 -0
  625. package/esm2022/messages/messages.mjs +283 -0
  626. package/esm2022/messages/messages.module.mjs +17 -0
  627. package/esm2022/messages/public_api.mjs +4 -0
  628. package/esm2022/metergroup/cax-design-system-metergroup.mjs +5 -0
  629. package/esm2022/metergroup/metergroup.interface.mjs +2 -0
  630. package/esm2022/metergroup/metergroup.mjs +280 -0
  631. package/esm2022/metergroup/public_api.mjs +3 -0
  632. package/esm2022/multiselect/cax-design-system-multiselect.mjs +5 -0
  633. package/esm2022/multiselect/multiselect.interface.mjs +2 -0
  634. package/esm2022/multiselect/multiselect.mjs +2525 -0
  635. package/esm2022/multiselect/public_api.mjs +3 -0
  636. package/esm2022/navigation/cax-design-system-navigation.mjs +5 -0
  637. package/esm2022/navigation/navigation.interface.mjs +2 -0
  638. package/esm2022/navigation/navigation.mjs +261 -0
  639. package/esm2022/navigation/navigation.module.mjs +16 -0
  640. package/esm2022/navigation/public_api.mjs +3 -0
  641. package/esm2022/orderlist/cax-design-system-orderlist.mjs +5 -0
  642. package/esm2022/orderlist/orderlist.interface.mjs +2 -0
  643. package/esm2022/orderlist/orderlist.mjs +993 -0
  644. package/esm2022/orderlist/public_api.mjs +3 -0
  645. package/esm2022/organizationchart/cax-design-system-organizationchart.mjs +5 -0
  646. package/esm2022/organizationchart/organizationchart.interface.mjs +2 -0
  647. package/esm2022/organizationchart/organizationchart.mjs +416 -0
  648. package/esm2022/organizationchart/public_api.mjs +3 -0
  649. package/esm2022/overlay/cax-design-system-overlay.mjs +5 -0
  650. package/esm2022/overlay/overlay.mjs +579 -0
  651. package/esm2022/overlay/overlay.module.mjs +17 -0
  652. package/esm2022/overlay/public_api.mjs +3 -0
  653. package/esm2022/overlaypanel/cax-design-system-overlaypanel.mjs +5 -0
  654. package/esm2022/overlaypanel/overlaypanel.mjs +470 -0
  655. package/esm2022/overlaypanel/overlaypanel.module.mjs +17 -0
  656. package/esm2022/overlaypanel/public_api.mjs +3 -0
  657. package/esm2022/paginator/cax-design-system-paginator.mjs +5 -0
  658. package/esm2022/paginator/paginator.interface.mjs +2 -0
  659. package/esm2022/paginator/paginator.mjs +424 -0
  660. package/esm2022/paginator/paginator.module.mjs +27 -0
  661. package/esm2022/paginator/public_api.mjs +4 -0
  662. package/esm2022/panel/cax-design-system-panel.mjs +5 -0
  663. package/esm2022/panel/panel.interface.mjs +2 -0
  664. package/esm2022/panel/panel.mjs +393 -0
  665. package/esm2022/panel/public_api.mjs +3 -0
  666. package/esm2022/panelmenu/cax-design-system-panelmenu.mjs +5 -0
  667. package/esm2022/panelmenu/panelmenu.interface.mjs +2 -0
  668. package/esm2022/panelmenu/panelmenu.mjs +1276 -0
  669. package/esm2022/panelmenu/public_api.mjs +3 -0
  670. package/esm2022/password/cax-design-system-password.mjs +5 -0
  671. package/esm2022/password/password.mjs +1017 -0
  672. package/esm2022/password/public_api.mjs +2 -0
  673. package/esm2022/picklist/cax-design-system-picklist.mjs +5 -0
  674. package/esm2022/picklist/picklist.interface.mjs +2 -0
  675. package/esm2022/picklist/picklist.mjs +1909 -0
  676. package/esm2022/picklist/public_api.mjs +3 -0
  677. package/esm2022/progressbar/cax-design-system-progressbar.mjs +5 -0
  678. package/esm2022/progressbar/progressbar.mjs +86 -0
  679. package/esm2022/progressbar/progressbar.module.mjs +18 -0
  680. package/esm2022/progressbar/public_api.mjs +3 -0
  681. package/esm2022/progressspinner/cax-design-system-progressspinner.mjs +5 -0
  682. package/esm2022/progressspinner/progressspinner.mjs +112 -0
  683. package/esm2022/progressspinner/progressspinner.module.mjs +18 -0
  684. package/esm2022/progressspinner/public_api.mjs +3 -0
  685. package/esm2022/public_api.mjs +2 -0
  686. package/esm2022/radiobutton/cax-design-system-radiobutton.mjs +5 -0
  687. package/esm2022/radiobutton/public_api.mjs +4 -0
  688. package/esm2022/radiobutton/radiobutton.interface.mjs +2 -0
  689. package/esm2022/radiobutton/radiobutton.mjs +277 -0
  690. package/esm2022/radiobutton/radiobutton.module.mjs +16 -0
  691. package/esm2022/rating/cax-design-system-rating.mjs +5 -0
  692. package/esm2022/rating/public_api.mjs +3 -0
  693. package/esm2022/rating/rating.interface.mjs +2 -0
  694. package/esm2022/rating/rating.mjs +388 -0
  695. package/esm2022/ripple/cax-design-system-ripple.mjs +5 -0
  696. package/esm2022/ripple/public_api.mjs +3 -0
  697. package/esm2022/ripple/ripple.mjs +129 -0
  698. package/esm2022/ripple/ripple.module.mjs +16 -0
  699. package/esm2022/scroller/cax-design-system-scroller.mjs +5 -0
  700. package/esm2022/scroller/public_api.mjs +4 -0
  701. package/esm2022/scroller/scroller.interface.mjs +2 -0
  702. package/esm2022/scroller/scroller.mjs +981 -0
  703. package/esm2022/scroller/scroller.module.mjs +17 -0
  704. package/esm2022/scrollpanel/cax-design-system-scrollpanel.mjs +5 -0
  705. package/esm2022/scrollpanel/public_api.mjs +3 -0
  706. package/esm2022/scrollpanel/scrollpanel.interface.mjs +2 -0
  707. package/esm2022/scrollpanel/scrollpanel.mjs +501 -0
  708. package/esm2022/scrolltop/cax-design-system-scrolltop.mjs +5 -0
  709. package/esm2022/scrolltop/public_api.mjs +3 -0
  710. package/esm2022/scrolltop/scrolltop.interface.mjs +2 -0
  711. package/esm2022/scrolltop/scrolltop.mjs +282 -0
  712. package/esm2022/selectbutton/cax-design-system-selectbutton.mjs +5 -0
  713. package/esm2022/selectbutton/public_api.mjs +3 -0
  714. package/esm2022/selectbutton/selectbutton.interface.mjs +2 -0
  715. package/esm2022/selectbutton/selectbutton.mjs +378 -0
  716. package/esm2022/sidebar/cax-design-system-sidebar.mjs +5 -0
  717. package/esm2022/sidebar/public_api.mjs +4 -0
  718. package/esm2022/sidebar/sidebar.interface.mjs +2 -0
  719. package/esm2022/sidebar/sidebar.mjs +419 -0
  720. package/esm2022/sidebar/sidebar.module.mjs +21 -0
  721. package/esm2022/skeleton/cax-design-system-skeleton.mjs +5 -0
  722. package/esm2022/skeleton/public_api.mjs +3 -0
  723. package/esm2022/skeleton/skeleton.mjs +87 -0
  724. package/esm2022/skeleton/skeleton.module.mjs +18 -0
  725. package/esm2022/slidemenu/cax-design-system-slidemenu.mjs +5 -0
  726. package/esm2022/slidemenu/public_api.mjs +3 -0
  727. package/esm2022/slidemenu/slidemenu.interface.mjs +2 -0
  728. package/esm2022/slidemenu/slidemenu.mjs +1501 -0
  729. package/esm2022/slider/cax-design-system-slider.mjs +5 -0
  730. package/esm2022/slider/public_api.mjs +3 -0
  731. package/esm2022/slider/slider.interface.mjs +2 -0
  732. package/esm2022/slider/slider.mjs +796 -0
  733. package/esm2022/speeddial/cax-design-system-speeddial.mjs +5 -0
  734. package/esm2022/speeddial/public_api.mjs +4 -0
  735. package/esm2022/speeddial/speeddial.interface.mjs +2 -0
  736. package/esm2022/speeddial/speeddial.mjs +611 -0
  737. package/esm2022/speeddial/speeddial.module.mjs +24 -0
  738. package/esm2022/spinner/cax-design-system-spinner.mjs +5 -0
  739. package/esm2022/spinner/public_api.mjs +2 -0
  740. package/esm2022/spinner/spinner.mjs +447 -0
  741. package/esm2022/splitbutton/cax-design-system-splitbutton.mjs +5 -0
  742. package/esm2022/splitbutton/public_api.mjs +4 -0
  743. package/esm2022/splitbutton/splitbutton.interface.mjs +2 -0
  744. package/esm2022/splitbutton/splitbutton.mjs +364 -0
  745. package/esm2022/splitbutton/splitbutton.module.mjs +22 -0
  746. package/esm2022/splitter/cax-design-system-splitter.mjs +5 -0
  747. package/esm2022/splitter/public_api.mjs +3 -0
  748. package/esm2022/splitter/splitter.interface.mjs +2 -0
  749. package/esm2022/splitter/splitter.mjs +562 -0
  750. package/esm2022/stepper/cax-design-system-stepper.mjs +5 -0
  751. package/esm2022/stepper/public_api.mjs +3 -0
  752. package/esm2022/stepper/stepper.interface.mjs +2 -0
  753. package/esm2022/stepper/stepper.mjs +677 -0
  754. package/esm2022/steps/cax-design-system-steps.mjs +5 -0
  755. package/esm2022/steps/public_api.mjs +2 -0
  756. package/esm2022/steps/steps.mjs +345 -0
  757. package/esm2022/styleclass/cax-design-system-styleclass.mjs +5 -0
  758. package/esm2022/styleclass/public_api.mjs +2 -0
  759. package/esm2022/styleclass/styleclass.mjs +316 -0
  760. package/esm2022/table/cax-design-system-table.mjs +5 -0
  761. package/esm2022/table/columnfilter.interface.mjs +2 -0
  762. package/esm2022/table/components/cell-editor/cell-editor.mjs +52 -0
  763. package/esm2022/table/components/column-filter/column-filter.mjs +685 -0
  764. package/esm2022/table/components/column-filter-form-element/column-filter-form-element.mjs +106 -0
  765. package/esm2022/table/components/sort-icon/sort-icon.mjs +75 -0
  766. package/esm2022/table/components/table-body/table-body.mjs +152 -0
  767. package/esm2022/table/components/table-checkbox/table-checkbox.mjs +82 -0
  768. package/esm2022/table/components/table-header-checkbox/table-header-checkbox.mjs +92 -0
  769. package/esm2022/table/components/table-radio-button/table-radio-button.mjs +79 -0
  770. package/esm2022/table/directives/cancel-editable-row.directive.mjs +32 -0
  771. package/esm2022/table/directives/content-menu-row.directive.mjs +70 -0
  772. package/esm2022/table/directives/editable-column.directive.mjs +344 -0
  773. package/esm2022/table/directives/editable-row.directive.mjs +32 -0
  774. package/esm2022/table/directives/frozen-column.directive.mjs +77 -0
  775. package/esm2022/table/directives/init-editable-row.directive.mjs +32 -0
  776. package/esm2022/table/directives/reorderable-column.directive.mjs +115 -0
  777. package/esm2022/table/directives/reorderable-row-handle.directive.mjs +25 -0
  778. package/esm2022/table/directives/reorderable-row.directive.mjs +122 -0
  779. package/esm2022/table/directives/resizable-column.directive.mjs +123 -0
  780. package/esm2022/table/directives/row-group-header.directive.mjs +26 -0
  781. package/esm2022/table/directives/row-toggler.directive.mjs +42 -0
  782. package/esm2022/table/directives/save-editable-row.directive.mjs +32 -0
  783. package/esm2022/table/directives/selectable-row-double-click.directive.mjs +71 -0
  784. package/esm2022/table/directives/selectable-row.directive.mjs +243 -0
  785. package/esm2022/table/directives/sortable-column.directive.mjs +90 -0
  786. package/esm2022/table/public_api.mjs +29 -0
  787. package/esm2022/table/table.interface.mjs +2 -0
  788. package/esm2022/table/table.mjs +2721 -0
  789. package/esm2022/table/table.module.mjs +147 -0
  790. package/esm2022/table/table.service.mjs +42 -0
  791. package/esm2022/tabmenu/cax-design-system-tabmenu.mjs +5 -0
  792. package/esm2022/tabmenu/public_api.mjs +3 -0
  793. package/esm2022/tabmenu/tabmenu.interface.mjs +2 -0
  794. package/esm2022/tabmenu/tabmenu.mjs +576 -0
  795. package/esm2022/tabview/cax-design-system-tabview.mjs +5 -0
  796. package/esm2022/tabview/public_api.mjs +4 -0
  797. package/esm2022/tabview/tabview.interface.mjs +2 -0
  798. package/esm2022/tabview/tabview.mjs +824 -0
  799. package/esm2022/tabview/tabview.module.mjs +24 -0
  800. package/esm2022/tag/cax-design-system-tag.mjs +5 -0
  801. package/esm2022/tag/public_api.mjs +4 -0
  802. package/esm2022/tag/tag.interface.mjs +2 -0
  803. package/esm2022/tag/tag.mjs +95 -0
  804. package/esm2022/tag/tag.module.mjs +19 -0
  805. package/esm2022/terminal/cax-design-system-terminal.mjs +5 -0
  806. package/esm2022/terminal/public_api.mjs +3 -0
  807. package/esm2022/terminal/terminal.mjs +143 -0
  808. package/esm2022/terminal/terminalservice.mjs +25 -0
  809. package/esm2022/tieredmenu/cax-design-system-tieredmenu.mjs +5 -0
  810. package/esm2022/tieredmenu/public_api.mjs +4 -0
  811. package/esm2022/tieredmenu/tieredmenu.interface.mjs +2 -0
  812. package/esm2022/tieredmenu/tieredmenu.mjs +1289 -0
  813. package/esm2022/tieredmenu/tiredmenu.module.mjs +23 -0
  814. package/esm2022/timeline/cax-design-system-timeline.mjs +5 -0
  815. package/esm2022/timeline/public_api.mjs +3 -0
  816. package/esm2022/timeline/timeline.interface.mjs +2 -0
  817. package/esm2022/timeline/timeline.mjs +167 -0
  818. package/esm2022/toast/cax-design-system-toast.mjs +5 -0
  819. package/esm2022/toast/public_api.mjs +4 -0
  820. package/esm2022/toast/toast.interface.mjs +2 -0
  821. package/esm2022/toast/toast.mjs +324 -0
  822. package/esm2022/toast/toast.module.mjs +18 -0
  823. package/esm2022/toast/toastitem.mjs +170 -0
  824. package/esm2022/togglebutton/cax-design-system-togglebutton.mjs +5 -0
  825. package/esm2022/togglebutton/public_api.mjs +3 -0
  826. package/esm2022/togglebutton/togglebutton.interface.mjs +2 -0
  827. package/esm2022/togglebutton/togglebutton.mjs +274 -0
  828. package/esm2022/toggleswitch/cax-design-system-toggleswitch.mjs +5 -0
  829. package/esm2022/toggleswitch/public_api.mjs +3 -0
  830. package/esm2022/toggleswitch/toggleswitch.mjs +34 -0
  831. package/esm2022/toggleswitch/toggleswitch.module.mjs +19 -0
  832. package/esm2022/toolbar/cax-design-system-toolbar.mjs +5 -0
  833. package/esm2022/toolbar/public_api.mjs +3 -0
  834. package/esm2022/toolbar/toolbar.interface.mjs +2 -0
  835. package/esm2022/toolbar/toolbar.mjs +111 -0
  836. package/esm2022/tooltip/cax-design-system-tooltip.mjs +5 -0
  837. package/esm2022/tooltip/public_api.mjs +3 -0
  838. package/esm2022/tooltip/tooltip.mjs +889 -0
  839. package/esm2022/tooltip/tooltip.module.mjs +18 -0
  840. package/esm2022/tree/cax-design-system-tree.mjs +5 -0
  841. package/esm2022/tree/public_api.mjs +4 -0
  842. package/esm2022/tree/tree.interface.mjs +2 -0
  843. package/esm2022/tree/tree.mjs +1495 -0
  844. package/esm2022/tree/tree.module.mjs +29 -0
  845. package/esm2022/treeselect/cax-design-system-treeselect.mjs +5 -0
  846. package/esm2022/treeselect/public_api.mjs +3 -0
  847. package/esm2022/treeselect/treeselect.interface.mjs +2 -0
  848. package/esm2022/treeselect/treeselect.mjs +1193 -0
  849. package/esm2022/treetable/cax-design-system-treetable.mjs +5 -0
  850. package/esm2022/treetable/public_api.mjs +3 -0
  851. package/esm2022/treetable/treetable.interface.mjs +2 -0
  852. package/esm2022/treetable/treetable.mjs +4111 -0
  853. package/esm2022/tristatecheckbox/cax-design-system-tristatecheckbox.mjs +5 -0
  854. package/esm2022/tristatecheckbox/public_api.mjs +4 -0
  855. package/esm2022/tristatecheckbox/tristatecheckbox.interface.mjs +2 -0
  856. package/esm2022/tristatecheckbox/tristatecheckbox.mjs +215 -0
  857. package/esm2022/tristatecheckbox/tristatecheckbox.module.mjs +17 -0
  858. package/esm2022/ts-helpers/cax-design-system-ts-helpers.mjs +5 -0
  859. package/esm2022/ts-helpers/public_api.mjs +2 -0
  860. package/esm2022/ts-helpers/ts-helpers.mjs +2 -0
  861. package/esm2022/utils/cax-design-system-utils.mjs +5 -0
  862. package/esm2022/utils/objectutils.mjs +258 -0
  863. package/esm2022/utils/public_api.mjs +5 -0
  864. package/esm2022/utils/uniquecomponentid.mjs +6 -0
  865. package/esm2022/utils/zindexutils.mjs +35 -0
  866. package/esm2022/virtualscroller/cax-design-system-virtualscroller.mjs +5 -0
  867. package/esm2022/virtualscroller/public_api.mjs +3 -0
  868. package/esm2022/virtualscroller/virtualscroller.interface.mjs +2 -0
  869. package/esm2022/virtualscroller/virtualscroller.mjs +215 -0
  870. package/fesm2022/cax-design-system-accordion.mjs +617 -0
  871. package/fesm2022/cax-design-system-accordion.mjs.map +1 -0
  872. package/fesm2022/cax-design-system-animate.mjs +108 -0
  873. package/fesm2022/cax-design-system-animate.mjs.map +1 -0
  874. package/fesm2022/cax-design-system-animateonscroll.mjs +192 -0
  875. package/fesm2022/cax-design-system-animateonscroll.mjs.map +1 -0
  876. package/fesm2022/cax-design-system-api.mjs +995 -0
  877. package/fesm2022/cax-design-system-api.mjs.map +1 -0
  878. package/fesm2022/cax-design-system-autocomplete.mjs +1887 -0
  879. package/fesm2022/cax-design-system-autocomplete.mjs.map +1 -0
  880. package/fesm2022/cax-design-system-autofocus.mjs +85 -0
  881. package/fesm2022/cax-design-system-autofocus.mjs.map +1 -0
  882. package/fesm2022/cax-design-system-avatar.mjs +124 -0
  883. package/fesm2022/cax-design-system-avatar.mjs.map +1 -0
  884. package/fesm2022/cax-design-system-avatargroup.mjs +61 -0
  885. package/fesm2022/cax-design-system-avatargroup.mjs.map +1 -0
  886. package/fesm2022/cax-design-system-badge.mjs +270 -0
  887. package/fesm2022/cax-design-system-badge.mjs.map +1 -0
  888. package/fesm2022/cax-design-system-baseicon.mjs +52 -0
  889. package/fesm2022/cax-design-system-baseicon.mjs.map +1 -0
  890. package/fesm2022/cax-design-system-blockui.mjs +213 -0
  891. package/fesm2022/cax-design-system-blockui.mjs.map +1 -0
  892. package/fesm2022/cax-design-system-breadcrumb.mjs +146 -0
  893. package/fesm2022/cax-design-system-breadcrumb.mjs.map +1 -0
  894. package/fesm2022/cax-design-system-button.mjs +431 -0
  895. package/fesm2022/cax-design-system-button.mjs.map +1 -0
  896. package/fesm2022/cax-design-system-buttongroup.mjs +45 -0
  897. package/fesm2022/cax-design-system-buttongroup.mjs.map +1 -0
  898. package/fesm2022/cax-design-system-calendar.mjs +3212 -0
  899. package/fesm2022/cax-design-system-calendar.mjs.map +1 -0
  900. package/fesm2022/cax-design-system-card.mjs +141 -0
  901. package/fesm2022/cax-design-system-card.mjs.map +1 -0
  902. package/fesm2022/cax-design-system-carousel.mjs +975 -0
  903. package/fesm2022/cax-design-system-carousel.mjs.map +1 -0
  904. package/fesm2022/cax-design-system-cascadeselect.mjs +1163 -0
  905. package/fesm2022/cax-design-system-cascadeselect.mjs.map +1 -0
  906. package/fesm2022/cax-design-system-chart.mjs +243 -0
  907. package/fesm2022/cax-design-system-chart.mjs.map +1 -0
  908. package/fesm2022/cax-design-system-checkbox.mjs +326 -0
  909. package/fesm2022/cax-design-system-checkbox.mjs.map +1 -0
  910. package/fesm2022/cax-design-system-chip.mjs +109 -0
  911. package/fesm2022/cax-design-system-chip.mjs.map +1 -0
  912. package/fesm2022/cax-design-system-chips.mjs +588 -0
  913. package/fesm2022/cax-design-system-chips.mjs.map +1 -0
  914. package/fesm2022/cax-design-system-colorpicker.mjs +836 -0
  915. package/fesm2022/cax-design-system-colorpicker.mjs.map +1 -0
  916. package/fesm2022/cax-design-system-confirmdialog.mjs +696 -0
  917. package/fesm2022/cax-design-system-confirmdialog.mjs.map +1 -0
  918. package/fesm2022/cax-design-system-confirmpopup.mjs +506 -0
  919. package/fesm2022/cax-design-system-confirmpopup.mjs.map +1 -0
  920. package/fesm2022/cax-design-system-contextmenu.mjs +1311 -0
  921. package/fesm2022/cax-design-system-contextmenu.mjs.map +1 -0
  922. package/fesm2022/cax-design-system-dataview.mjs +730 -0
  923. package/fesm2022/cax-design-system-dataview.mjs.map +1 -0
  924. package/fesm2022/cax-design-system-defer.mjs +118 -0
  925. package/fesm2022/cax-design-system-defer.mjs.map +1 -0
  926. package/fesm2022/cax-design-system-dialog.mjs +1175 -0
  927. package/fesm2022/cax-design-system-dialog.mjs.map +1 -0
  928. package/fesm2022/cax-design-system-divider.mjs +89 -0
  929. package/fesm2022/cax-design-system-divider.mjs.map +1 -0
  930. package/fesm2022/cax-design-system-dock.mjs +438 -0
  931. package/fesm2022/cax-design-system-dock.mjs.map +1 -0
  932. package/fesm2022/cax-design-system-dom.mjs +757 -0
  933. package/fesm2022/cax-design-system-dom.mjs.map +1 -0
  934. package/fesm2022/cax-design-system-dragdrop.mjs +331 -0
  935. package/fesm2022/cax-design-system-dragdrop.mjs.map +1 -0
  936. package/fesm2022/cax-design-system-dropdown.mjs +1684 -0
  937. package/fesm2022/cax-design-system-dropdown.mjs.map +1 -0
  938. package/fesm2022/cax-design-system-dynamicdialog.mjs +1133 -0
  939. package/fesm2022/cax-design-system-dynamicdialog.mjs.map +1 -0
  940. package/fesm2022/cax-design-system-editor.mjs +399 -0
  941. package/fesm2022/cax-design-system-editor.mjs.map +1 -0
  942. package/fesm2022/cax-design-system-fieldset.mjs +304 -0
  943. package/fesm2022/cax-design-system-fieldset.mjs.map +1 -0
  944. package/fesm2022/cax-design-system-fileupload.mjs +1195 -0
  945. package/fesm2022/cax-design-system-fileupload.mjs.map +1 -0
  946. package/fesm2022/cax-design-system-floatlabel.mjs +51 -0
  947. package/fesm2022/cax-design-system-floatlabel.mjs.map +1 -0
  948. package/fesm2022/cax-design-system-focustrap.mjs +110 -0
  949. package/fesm2022/cax-design-system-focustrap.mjs.map +1 -0
  950. package/fesm2022/cax-design-system-galleria.mjs +1675 -0
  951. package/fesm2022/cax-design-system-galleria.mjs.map +1 -0
  952. package/fesm2022/cax-design-system-iconfield.mjs +51 -0
  953. package/fesm2022/cax-design-system-iconfield.mjs.map +1 -0
  954. package/fesm2022/cax-design-system-icons-angledoubledown.mjs +42 -0
  955. package/fesm2022/cax-design-system-icons-angledoubledown.mjs.map +1 -0
  956. package/fesm2022/cax-design-system-icons-angledoubleleft.mjs +42 -0
  957. package/fesm2022/cax-design-system-icons-angledoubleleft.mjs.map +1 -0
  958. package/fesm2022/cax-design-system-icons-angledoubleright.mjs +42 -0
  959. package/fesm2022/cax-design-system-icons-angledoubleright.mjs.map +1 -0
  960. package/fesm2022/cax-design-system-icons-angledoubleup.mjs +42 -0
  961. package/fesm2022/cax-design-system-icons-angledoubleup.mjs.map +1 -0
  962. package/fesm2022/cax-design-system-icons-angledown.mjs +38 -0
  963. package/fesm2022/cax-design-system-icons-angledown.mjs.map +1 -0
  964. package/fesm2022/cax-design-system-icons-angleleft.mjs +38 -0
  965. package/fesm2022/cax-design-system-icons-angleleft.mjs.map +1 -0
  966. package/fesm2022/cax-design-system-icons-angleright.mjs +38 -0
  967. package/fesm2022/cax-design-system-icons-angleright.mjs.map +1 -0
  968. package/fesm2022/cax-design-system-icons-angleup.mjs +38 -0
  969. package/fesm2022/cax-design-system-icons-angleup.mjs.map +1 -0
  970. package/fesm2022/cax-design-system-icons-arrowdown.mjs +61 -0
  971. package/fesm2022/cax-design-system-icons-arrowdown.mjs.map +1 -0
  972. package/fesm2022/cax-design-system-icons-arrowdownleft.mjs +38 -0
  973. package/fesm2022/cax-design-system-icons-arrowdownleft.mjs.map +1 -0
  974. package/fesm2022/cax-design-system-icons-arrowdownright.mjs +38 -0
  975. package/fesm2022/cax-design-system-icons-arrowdownright.mjs.map +1 -0
  976. package/fesm2022/cax-design-system-icons-arrowleft.mjs +61 -0
  977. package/fesm2022/cax-design-system-icons-arrowleft.mjs.map +1 -0
  978. package/fesm2022/cax-design-system-icons-arrowright.mjs +42 -0
  979. package/fesm2022/cax-design-system-icons-arrowright.mjs.map +1 -0
  980. package/fesm2022/cax-design-system-icons-arrowup.mjs +61 -0
  981. package/fesm2022/cax-design-system-icons-arrowup.mjs.map +1 -0
  982. package/fesm2022/cax-design-system-icons-ban.mjs +57 -0
  983. package/fesm2022/cax-design-system-icons-ban.mjs.map +1 -0
  984. package/fesm2022/cax-design-system-icons-bars.mjs +42 -0
  985. package/fesm2022/cax-design-system-icons-bars.mjs.map +1 -0
  986. package/fesm2022/cax-design-system-icons-blank.mjs +32 -0
  987. package/fesm2022/cax-design-system-icons-blank.mjs.map +1 -0
  988. package/fesm2022/cax-design-system-icons-calendar.mjs +38 -0
  989. package/fesm2022/cax-design-system-icons-calendar.mjs.map +1 -0
  990. package/fesm2022/cax-design-system-icons-caretleft.mjs +38 -0
  991. package/fesm2022/cax-design-system-icons-caretleft.mjs.map +1 -0
  992. package/fesm2022/cax-design-system-icons-caretright.mjs +38 -0
  993. package/fesm2022/cax-design-system-icons-caretright.mjs.map +1 -0
  994. package/fesm2022/cax-design-system-icons-check.mjs +38 -0
  995. package/fesm2022/cax-design-system-icons-check.mjs.map +1 -0
  996. package/fesm2022/cax-design-system-icons-chevrondown.mjs +38 -0
  997. package/fesm2022/cax-design-system-icons-chevrondown.mjs.map +1 -0
  998. package/fesm2022/cax-design-system-icons-chevronleft.mjs +38 -0
  999. package/fesm2022/cax-design-system-icons-chevronleft.mjs.map +1 -0
  1000. package/fesm2022/cax-design-system-icons-chevronright.mjs +38 -0
  1001. package/fesm2022/cax-design-system-icons-chevronright.mjs.map +1 -0
  1002. package/fesm2022/cax-design-system-icons-chevronup.mjs +38 -0
  1003. package/fesm2022/cax-design-system-icons-chevronup.mjs.map +1 -0
  1004. package/fesm2022/cax-design-system-icons-exclamationtriangle.mjs +73 -0
  1005. package/fesm2022/cax-design-system-icons-exclamationtriangle.mjs.map +1 -0
  1006. package/fesm2022/cax-design-system-icons-eye.mjs +42 -0
  1007. package/fesm2022/cax-design-system-icons-eye.mjs.map +1 -0
  1008. package/fesm2022/cax-design-system-icons-eyeslash.mjs +61 -0
  1009. package/fesm2022/cax-design-system-icons-eyeslash.mjs.map +1 -0
  1010. package/fesm2022/cax-design-system-icons-filter.mjs +57 -0
  1011. package/fesm2022/cax-design-system-icons-filter.mjs.map +1 -0
  1012. package/fesm2022/cax-design-system-icons-filterslash.mjs +61 -0
  1013. package/fesm2022/cax-design-system-icons-filterslash.mjs.map +1 -0
  1014. package/fesm2022/cax-design-system-icons-home.mjs +61 -0
  1015. package/fesm2022/cax-design-system-icons-home.mjs.map +1 -0
  1016. package/fesm2022/cax-design-system-icons-infocircle.mjs +61 -0
  1017. package/fesm2022/cax-design-system-icons-infocircle.mjs.map +1 -0
  1018. package/fesm2022/cax-design-system-icons-minus.mjs +39 -0
  1019. package/fesm2022/cax-design-system-icons-minus.mjs.map +1 -0
  1020. package/fesm2022/cax-design-system-icons-pencil.mjs +57 -0
  1021. package/fesm2022/cax-design-system-icons-pencil.mjs.map +1 -0
  1022. package/fesm2022/cax-design-system-icons-plus.mjs +57 -0
  1023. package/fesm2022/cax-design-system-icons-plus.mjs.map +1 -0
  1024. package/fesm2022/cax-design-system-icons-refresh.mjs +61 -0
  1025. package/fesm2022/cax-design-system-icons-refresh.mjs.map +1 -0
  1026. package/fesm2022/cax-design-system-icons-search.mjs +61 -0
  1027. package/fesm2022/cax-design-system-icons-search.mjs.map +1 -0
  1028. package/fesm2022/cax-design-system-icons-searchminus.mjs +61 -0
  1029. package/fesm2022/cax-design-system-icons-searchminus.mjs.map +1 -0
  1030. package/fesm2022/cax-design-system-icons-searchplus.mjs +61 -0
  1031. package/fesm2022/cax-design-system-icons-searchplus.mjs.map +1 -0
  1032. package/fesm2022/cax-design-system-icons-sortalt.mjs +69 -0
  1033. package/fesm2022/cax-design-system-icons-sortalt.mjs.map +1 -0
  1034. package/fesm2022/cax-design-system-icons-sortamountdown.mjs +57 -0
  1035. package/fesm2022/cax-design-system-icons-sortamountdown.mjs.map +1 -0
  1036. package/fesm2022/cax-design-system-icons-sortamountupalt.mjs +57 -0
  1037. package/fesm2022/cax-design-system-icons-sortamountupalt.mjs.map +1 -0
  1038. package/fesm2022/cax-design-system-icons-spinner.mjs +57 -0
  1039. package/fesm2022/cax-design-system-icons-spinner.mjs.map +1 -0
  1040. package/fesm2022/cax-design-system-icons-star.mjs +57 -0
  1041. package/fesm2022/cax-design-system-icons-star.mjs.map +1 -0
  1042. package/fesm2022/cax-design-system-icons-starfill.mjs +57 -0
  1043. package/fesm2022/cax-design-system-icons-starfill.mjs.map +1 -0
  1044. package/fesm2022/cax-design-system-icons-thlarge.mjs +61 -0
  1045. package/fesm2022/cax-design-system-icons-thlarge.mjs.map +1 -0
  1046. package/fesm2022/cax-design-system-icons-times.mjs +38 -0
  1047. package/fesm2022/cax-design-system-icons-times.mjs.map +1 -0
  1048. package/fesm2022/cax-design-system-icons-timescircle.mjs +61 -0
  1049. package/fesm2022/cax-design-system-icons-timescircle.mjs.map +1 -0
  1050. package/fesm2022/cax-design-system-icons-trash.mjs +61 -0
  1051. package/fesm2022/cax-design-system-icons-trash.mjs.map +1 -0
  1052. package/fesm2022/cax-design-system-icons-undo.mjs +61 -0
  1053. package/fesm2022/cax-design-system-icons-undo.mjs.map +1 -0
  1054. package/fesm2022/cax-design-system-icons-upload.mjs +61 -0
  1055. package/fesm2022/cax-design-system-icons-upload.mjs.map +1 -0
  1056. package/fesm2022/cax-design-system-icons-windowmaximize.mjs +61 -0
  1057. package/fesm2022/cax-design-system-icons-windowmaximize.mjs.map +1 -0
  1058. package/fesm2022/cax-design-system-icons-windowminimize.mjs +61 -0
  1059. package/fesm2022/cax-design-system-icons-windowminimize.mjs.map +1 -0
  1060. package/fesm2022/cax-design-system-image.mjs +438 -0
  1061. package/fesm2022/cax-design-system-image.mjs.map +1 -0
  1062. package/fesm2022/cax-design-system-inplace.mjs +250 -0
  1063. package/fesm2022/cax-design-system-inplace.mjs.map +1 -0
  1064. package/fesm2022/cax-design-system-inputgroup.mjs +77 -0
  1065. package/fesm2022/cax-design-system-inputgroup.mjs.map +1 -0
  1066. package/fesm2022/cax-design-system-inputgroupaddon.mjs +60 -0
  1067. package/fesm2022/cax-design-system-inputgroupaddon.mjs.map +1 -0
  1068. package/fesm2022/cax-design-system-inputicon.mjs +45 -0
  1069. package/fesm2022/cax-design-system-inputicon.mjs.map +1 -0
  1070. package/fesm2022/cax-design-system-inputmask.mjs +921 -0
  1071. package/fesm2022/cax-design-system-inputmask.mjs.map +1 -0
  1072. package/fesm2022/cax-design-system-inputnumber.mjs +1310 -0
  1073. package/fesm2022/cax-design-system-inputnumber.mjs.map +1 -0
  1074. package/fesm2022/cax-design-system-inputotp.mjs +388 -0
  1075. package/fesm2022/cax-design-system-inputotp.mjs.map +1 -0
  1076. package/fesm2022/cax-design-system-inputswitch.mjs +251 -0
  1077. package/fesm2022/cax-design-system-inputswitch.mjs.map +1 -0
  1078. package/fesm2022/cax-design-system-inputtext.mjs +145 -0
  1079. package/fesm2022/cax-design-system-inputtext.mjs.map +1 -0
  1080. package/fesm2022/cax-design-system-inputtextarea.mjs +142 -0
  1081. package/fesm2022/cax-design-system-inputtextarea.mjs.map +1 -0
  1082. package/fesm2022/cax-design-system-keyfilter.mjs +272 -0
  1083. package/fesm2022/cax-design-system-keyfilter.mjs.map +1 -0
  1084. package/fesm2022/cax-design-system-knob.mjs +471 -0
  1085. package/fesm2022/cax-design-system-knob.mjs.map +1 -0
  1086. package/fesm2022/cax-design-system-listbox.mjs +1562 -0
  1087. package/fesm2022/cax-design-system-listbox.mjs.map +1 -0
  1088. package/fesm2022/cax-design-system-logo.mjs +65 -0
  1089. package/fesm2022/cax-design-system-logo.mjs.map +1 -0
  1090. package/fesm2022/cax-design-system-megamenu.mjs +1197 -0
  1091. package/fesm2022/cax-design-system-megamenu.mjs.map +1 -0
  1092. package/fesm2022/cax-design-system-menu.mjs +960 -0
  1093. package/fesm2022/cax-design-system-menu.mjs.map +1 -0
  1094. package/fesm2022/cax-design-system-menubar.mjs +1256 -0
  1095. package/fesm2022/cax-design-system-menubar.mjs.map +1 -0
  1096. package/fesm2022/cax-design-system-message.mjs +119 -0
  1097. package/fesm2022/cax-design-system-message.mjs.map +1 -0
  1098. package/fesm2022/cax-design-system-messages.mjs +303 -0
  1099. package/fesm2022/cax-design-system-messages.mjs.map +1 -0
  1100. package/fesm2022/cax-design-system-metergroup.mjs +287 -0
  1101. package/fesm2022/cax-design-system-metergroup.mjs.map +1 -0
  1102. package/fesm2022/cax-design-system-multiselect.mjs +2532 -0
  1103. package/fesm2022/cax-design-system-multiselect.mjs.map +1 -0
  1104. package/fesm2022/cax-design-system-navigation.mjs +281 -0
  1105. package/fesm2022/cax-design-system-navigation.mjs.map +1 -0
  1106. package/fesm2022/cax-design-system-orderlist.mjs +1000 -0
  1107. package/fesm2022/cax-design-system-orderlist.mjs.map +1 -0
  1108. package/fesm2022/cax-design-system-organizationchart.mjs +423 -0
  1109. package/fesm2022/cax-design-system-organizationchart.mjs.map +1 -0
  1110. package/fesm2022/cax-design-system-overlay.mjs +599 -0
  1111. package/fesm2022/cax-design-system-overlay.mjs.map +1 -0
  1112. package/fesm2022/cax-design-system-overlaypanel.mjs +490 -0
  1113. package/fesm2022/cax-design-system-overlaypanel.mjs.map +1 -0
  1114. package/fesm2022/cax-design-system-paginator.mjs +454 -0
  1115. package/fesm2022/cax-design-system-paginator.mjs.map +1 -0
  1116. package/fesm2022/cax-design-system-panel.mjs +400 -0
  1117. package/fesm2022/cax-design-system-panel.mjs.map +1 -0
  1118. package/fesm2022/cax-design-system-panelmenu.mjs +1283 -0
  1119. package/fesm2022/cax-design-system-panelmenu.mjs.map +1 -0
  1120. package/fesm2022/cax-design-system-password.mjs +1024 -0
  1121. package/fesm2022/cax-design-system-password.mjs.map +1 -0
  1122. package/fesm2022/cax-design-system-picklist.mjs +1916 -0
  1123. package/fesm2022/cax-design-system-picklist.mjs.map +1 -0
  1124. package/fesm2022/cax-design-system-progressbar.mjs +108 -0
  1125. package/fesm2022/cax-design-system-progressbar.mjs.map +1 -0
  1126. package/fesm2022/cax-design-system-progressspinner.mjs +134 -0
  1127. package/fesm2022/cax-design-system-progressspinner.mjs.map +1 -0
  1128. package/fesm2022/cax-design-system-radiobutton.mjs +297 -0
  1129. package/fesm2022/cax-design-system-radiobutton.mjs.map +1 -0
  1130. package/fesm2022/cax-design-system-rating.mjs +395 -0
  1131. package/fesm2022/cax-design-system-rating.mjs.map +1 -0
  1132. package/fesm2022/cax-design-system-ripple.mjs +149 -0
  1133. package/fesm2022/cax-design-system-ripple.mjs.map +1 -0
  1134. package/fesm2022/cax-design-system-scroller.mjs +1001 -0
  1135. package/fesm2022/cax-design-system-scroller.mjs.map +1 -0
  1136. package/fesm2022/cax-design-system-scrollpanel.mjs +508 -0
  1137. package/fesm2022/cax-design-system-scrollpanel.mjs.map +1 -0
  1138. package/fesm2022/cax-design-system-scrolltop.mjs +289 -0
  1139. package/fesm2022/cax-design-system-scrolltop.mjs.map +1 -0
  1140. package/fesm2022/cax-design-system-selectbutton.mjs +385 -0
  1141. package/fesm2022/cax-design-system-selectbutton.mjs.map +1 -0
  1142. package/fesm2022/cax-design-system-sidebar.mjs +439 -0
  1143. package/fesm2022/cax-design-system-sidebar.mjs.map +1 -0
  1144. package/fesm2022/cax-design-system-skeleton.mjs +109 -0
  1145. package/fesm2022/cax-design-system-skeleton.mjs.map +1 -0
  1146. package/fesm2022/cax-design-system-slidemenu.mjs +1508 -0
  1147. package/fesm2022/cax-design-system-slidemenu.mjs.map +1 -0
  1148. package/fesm2022/cax-design-system-slider.mjs +803 -0
  1149. package/fesm2022/cax-design-system-slider.mjs.map +1 -0
  1150. package/fesm2022/cax-design-system-speeddial.mjs +637 -0
  1151. package/fesm2022/cax-design-system-speeddial.mjs.map +1 -0
  1152. package/fesm2022/cax-design-system-spinner.mjs +454 -0
  1153. package/fesm2022/cax-design-system-spinner.mjs.map +1 -0
  1154. package/fesm2022/cax-design-system-splitbutton.mjs +390 -0
  1155. package/fesm2022/cax-design-system-splitbutton.mjs.map +1 -0
  1156. package/fesm2022/cax-design-system-splitter.mjs +569 -0
  1157. package/fesm2022/cax-design-system-splitter.mjs.map +1 -0
  1158. package/fesm2022/cax-design-system-stepper.mjs +684 -0
  1159. package/fesm2022/cax-design-system-stepper.mjs.map +1 -0
  1160. package/fesm2022/cax-design-system-steps.mjs +352 -0
  1161. package/fesm2022/cax-design-system-steps.mjs.map +1 -0
  1162. package/fesm2022/cax-design-system-styleclass.mjs +323 -0
  1163. package/fesm2022/cax-design-system-styleclass.mjs.map +1 -0
  1164. package/fesm2022/cax-design-system-table.mjs +5562 -0
  1165. package/fesm2022/cax-design-system-table.mjs.map +1 -0
  1166. package/fesm2022/cax-design-system-tabmenu.mjs +583 -0
  1167. package/fesm2022/cax-design-system-tabmenu.mjs.map +1 -0
  1168. package/fesm2022/cax-design-system-tabview.mjs +850 -0
  1169. package/fesm2022/cax-design-system-tabview.mjs.map +1 -0
  1170. package/fesm2022/cax-design-system-tag.mjs +117 -0
  1171. package/fesm2022/cax-design-system-tag.mjs.map +1 -0
  1172. package/fesm2022/cax-design-system-terminal.mjs +172 -0
  1173. package/fesm2022/cax-design-system-terminal.mjs.map +1 -0
  1174. package/fesm2022/cax-design-system-tieredmenu.mjs +1314 -0
  1175. package/fesm2022/cax-design-system-tieredmenu.mjs.map +1 -0
  1176. package/fesm2022/cax-design-system-timeline.mjs +174 -0
  1177. package/fesm2022/cax-design-system-timeline.mjs.map +1 -0
  1178. package/fesm2022/cax-design-system-toast.mjs +507 -0
  1179. package/fesm2022/cax-design-system-toast.mjs.map +1 -0
  1180. package/fesm2022/cax-design-system-togglebutton.mjs +281 -0
  1181. package/fesm2022/cax-design-system-togglebutton.mjs.map +1 -0
  1182. package/fesm2022/cax-design-system-toggleswitch.mjs +57 -0
  1183. package/fesm2022/cax-design-system-toggleswitch.mjs.map +1 -0
  1184. package/fesm2022/cax-design-system-toolbar.mjs +118 -0
  1185. package/fesm2022/cax-design-system-toolbar.mjs.map +1 -0
  1186. package/fesm2022/cax-design-system-tooltip.mjs +910 -0
  1187. package/fesm2022/cax-design-system-tooltip.mjs.map +1 -0
  1188. package/fesm2022/cax-design-system-tree.mjs +1527 -0
  1189. package/fesm2022/cax-design-system-tree.mjs.map +1 -0
  1190. package/fesm2022/cax-design-system-treeselect.mjs +1200 -0
  1191. package/fesm2022/cax-design-system-treeselect.mjs.map +1 -0
  1192. package/fesm2022/cax-design-system-treetable.mjs +4118 -0
  1193. package/fesm2022/cax-design-system-treetable.mjs.map +1 -0
  1194. package/fesm2022/cax-design-system-tristatecheckbox.mjs +235 -0
  1195. package/fesm2022/cax-design-system-tristatecheckbox.mjs.map +1 -0
  1196. package/fesm2022/cax-design-system-ts-helpers.mjs +4 -0
  1197. package/fesm2022/cax-design-system-ts-helpers.mjs.map +1 -0
  1198. package/fesm2022/cax-design-system-utils.mjs +305 -0
  1199. package/fesm2022/cax-design-system-utils.mjs.map +1 -0
  1200. package/fesm2022/cax-design-system-virtualscroller.mjs +222 -0
  1201. package/fesm2022/cax-design-system-virtualscroller.mjs.map +1 -0
  1202. package/fesm2022/cax-design-system.mjs +6 -0
  1203. package/fesm2022/cax-design-system.mjs.map +1 -0
  1204. package/fieldset/fieldset.d.ts +93 -0
  1205. package/fieldset/fieldset.interface.d.ts +46 -0
  1206. package/fieldset/index.d.ts +5 -0
  1207. package/fieldset/public_api.d.ts +2 -0
  1208. package/fileupload/fileupload.d.ts +380 -0
  1209. package/fileupload/fileupload.interface.d.ts +226 -0
  1210. package/fileupload/index.d.ts +5 -0
  1211. package/fileupload/public_api.d.ts +2 -0
  1212. package/floatlabel/floatlabel.d.ts +17 -0
  1213. package/floatlabel/index.d.ts +5 -0
  1214. package/floatlabel/public_api.d.ts +1 -0
  1215. package/focustrap/focustrap.d.ts +34 -0
  1216. package/focustrap/index.d.ts +5 -0
  1217. package/focustrap/public_api.d.ts +1 -0
  1218. package/galleria/galleria.d.ts +404 -0
  1219. package/galleria/galleria.interface.d.ts +97 -0
  1220. package/galleria/index.d.ts +5 -0
  1221. package/galleria/public_api.d.ts +2 -0
  1222. package/iconfield/iconfield.d.ts +25 -0
  1223. package/iconfield/index.d.ts +5 -0
  1224. package/iconfield/public_api.d.ts +1 -0
  1225. package/icons/angledoubledown/angledoubledown.d.ts +6 -0
  1226. package/icons/angledoubledown/index.d.ts +5 -0
  1227. package/icons/angledoubledown/public_api.d.ts +1 -0
  1228. package/icons/angledoubleleft/angledoubleleft.d.ts +6 -0
  1229. package/icons/angledoubleleft/index.d.ts +5 -0
  1230. package/icons/angledoubleleft/public_api.d.ts +1 -0
  1231. package/icons/angledoubleright/angledoubleright.d.ts +6 -0
  1232. package/icons/angledoubleright/index.d.ts +5 -0
  1233. package/icons/angledoubleright/public_api.d.ts +1 -0
  1234. package/icons/angledoubleup/angledoubleup.d.ts +6 -0
  1235. package/icons/angledoubleup/index.d.ts +5 -0
  1236. package/icons/angledoubleup/public_api.d.ts +1 -0
  1237. package/icons/angledown/angledown.d.ts +6 -0
  1238. package/icons/angledown/index.d.ts +5 -0
  1239. package/icons/angledown/public_api.d.ts +1 -0
  1240. package/icons/angleleft/angleleft.d.ts +6 -0
  1241. package/icons/angleleft/index.d.ts +5 -0
  1242. package/icons/angleleft/public_api.d.ts +1 -0
  1243. package/icons/angleright/angleright.d.ts +6 -0
  1244. package/icons/angleright/index.d.ts +5 -0
  1245. package/icons/angleright/public_api.d.ts +1 -0
  1246. package/icons/angleup/angleup.d.ts +6 -0
  1247. package/icons/angleup/index.d.ts +5 -0
  1248. package/icons/angleup/public_api.d.ts +1 -0
  1249. package/icons/arrowdown/arrowdown.d.ts +9 -0
  1250. package/icons/arrowdown/index.d.ts +5 -0
  1251. package/icons/arrowdown/public_api.d.ts +1 -0
  1252. package/icons/arrowdownleft/arrowdownleft.d.ts +6 -0
  1253. package/icons/arrowdownleft/index.d.ts +5 -0
  1254. package/icons/arrowdownleft/public_api.d.ts +1 -0
  1255. package/icons/arrowdownright/arrowdownright.d.ts +6 -0
  1256. package/icons/arrowdownright/index.d.ts +5 -0
  1257. package/icons/arrowdownright/public_api.d.ts +1 -0
  1258. package/icons/arrowleft/arrowleft.d.ts +8 -0
  1259. package/icons/arrowleft/index.d.ts +5 -0
  1260. package/icons/arrowleft/public_api.d.ts +1 -0
  1261. package/icons/arrowright/arrowright.d.ts +6 -0
  1262. package/icons/arrowright/index.d.ts +5 -0
  1263. package/icons/arrowright/public_api.d.ts +1 -0
  1264. package/icons/arrowup/arrowup.d.ts +8 -0
  1265. package/icons/arrowup/index.d.ts +5 -0
  1266. package/icons/arrowup/public_api.d.ts +1 -0
  1267. package/icons/ban/ban.d.ts +8 -0
  1268. package/icons/ban/index.d.ts +5 -0
  1269. package/icons/ban/public_api.d.ts +1 -0
  1270. package/icons/bars/bars.d.ts +6 -0
  1271. package/icons/bars/index.d.ts +5 -0
  1272. package/icons/bars/public_api.d.ts +1 -0
  1273. package/icons/blank/blank.d.ts +6 -0
  1274. package/icons/blank/index.d.ts +5 -0
  1275. package/icons/blank/public_api.d.ts +1 -0
  1276. package/icons/calendar/calendar.d.ts +6 -0
  1277. package/icons/calendar/index.d.ts +5 -0
  1278. package/icons/calendar/public_api.d.ts +1 -0
  1279. package/icons/caretleft/caretleft.d.ts +6 -0
  1280. package/icons/caretleft/index.d.ts +5 -0
  1281. package/icons/caretleft/public_api.d.ts +1 -0
  1282. package/icons/caretright/caretright.d.ts +6 -0
  1283. package/icons/caretright/index.d.ts +5 -0
  1284. package/icons/caretright/public_api.d.ts +1 -0
  1285. package/icons/check/check.d.ts +6 -0
  1286. package/icons/check/index.d.ts +5 -0
  1287. package/icons/check/public_api.d.ts +1 -0
  1288. package/icons/chevrondown/chevrondown.d.ts +6 -0
  1289. package/icons/chevrondown/index.d.ts +5 -0
  1290. package/icons/chevrondown/public_api.d.ts +1 -0
  1291. package/icons/chevronleft/chevronleft.d.ts +6 -0
  1292. package/icons/chevronleft/index.d.ts +5 -0
  1293. package/icons/chevronleft/public_api.d.ts +1 -0
  1294. package/icons/chevronright/chevronright.d.ts +6 -0
  1295. package/icons/chevronright/index.d.ts +5 -0
  1296. package/icons/chevronright/public_api.d.ts +1 -0
  1297. package/icons/chevronup/chevronup.d.ts +6 -0
  1298. package/icons/chevronup/index.d.ts +5 -0
  1299. package/icons/chevronup/public_api.d.ts +1 -0
  1300. package/icons/exclamationtriangle/exclamationtriangle.d.ts +9 -0
  1301. package/icons/exclamationtriangle/index.d.ts +5 -0
  1302. package/icons/exclamationtriangle/public_api.d.ts +1 -0
  1303. package/icons/eye/eye.d.ts +6 -0
  1304. package/icons/eye/index.d.ts +5 -0
  1305. package/icons/eye/public_api.d.ts +1 -0
  1306. package/icons/eyeslash/eyeslash.d.ts +8 -0
  1307. package/icons/eyeslash/index.d.ts +5 -0
  1308. package/icons/eyeslash/public_api.d.ts +1 -0
  1309. package/icons/filter/filter.d.ts +8 -0
  1310. package/icons/filter/index.d.ts +5 -0
  1311. package/icons/filter/public_api.d.ts +1 -0
  1312. package/icons/filterslash/filterslash.d.ts +8 -0
  1313. package/icons/filterslash/index.d.ts +5 -0
  1314. package/icons/filterslash/public_api.d.ts +1 -0
  1315. package/icons/home/home.d.ts +8 -0
  1316. package/icons/home/index.d.ts +5 -0
  1317. package/icons/home/public_api.d.ts +1 -0
  1318. package/icons/infocircle/index.d.ts +5 -0
  1319. package/icons/infocircle/infocircle.d.ts +8 -0
  1320. package/icons/infocircle/public_api.d.ts +1 -0
  1321. package/icons/minus/index.d.ts +5 -0
  1322. package/icons/minus/minus.d.ts +6 -0
  1323. package/icons/minus/public_api.d.ts +1 -0
  1324. package/icons/pencil/index.d.ts +5 -0
  1325. package/icons/pencil/pencil.d.ts +8 -0
  1326. package/icons/pencil/public_api.d.ts +1 -0
  1327. package/icons/plus/index.d.ts +5 -0
  1328. package/icons/plus/plus.d.ts +8 -0
  1329. package/icons/plus/public_api.d.ts +1 -0
  1330. package/icons/refresh/index.d.ts +5 -0
  1331. package/icons/refresh/public_api.d.ts +1 -0
  1332. package/icons/refresh/refresh.d.ts +8 -0
  1333. package/icons/search/index.d.ts +5 -0
  1334. package/icons/search/public_api.d.ts +1 -0
  1335. package/icons/search/search.d.ts +8 -0
  1336. package/icons/searchminus/index.d.ts +5 -0
  1337. package/icons/searchminus/public_api.d.ts +1 -0
  1338. package/icons/searchminus/searchminus.d.ts +8 -0
  1339. package/icons/searchplus/index.d.ts +5 -0
  1340. package/icons/searchplus/public_api.d.ts +1 -0
  1341. package/icons/searchplus/searchplus.d.ts +8 -0
  1342. package/icons/sortalt/index.d.ts +5 -0
  1343. package/icons/sortalt/public_api.d.ts +1 -0
  1344. package/icons/sortalt/sortalt.d.ts +8 -0
  1345. package/icons/sortamountdown/index.d.ts +5 -0
  1346. package/icons/sortamountdown/public_api.d.ts +1 -0
  1347. package/icons/sortamountdown/sortamountdown.d.ts +8 -0
  1348. package/icons/sortamountupalt/index.d.ts +5 -0
  1349. package/icons/sortamountupalt/public_api.d.ts +1 -0
  1350. package/icons/sortamountupalt/sortamountupalt.d.ts +8 -0
  1351. package/icons/spinner/index.d.ts +5 -0
  1352. package/icons/spinner/public_api.d.ts +1 -0
  1353. package/icons/spinner/spinner.d.ts +8 -0
  1354. package/icons/star/index.d.ts +5 -0
  1355. package/icons/star/public_api.d.ts +1 -0
  1356. package/icons/star/star.d.ts +8 -0
  1357. package/icons/starfill/index.d.ts +5 -0
  1358. package/icons/starfill/public_api.d.ts +1 -0
  1359. package/icons/starfill/starfill.d.ts +8 -0
  1360. package/icons/thlarge/index.d.ts +5 -0
  1361. package/icons/thlarge/public_api.d.ts +1 -0
  1362. package/icons/thlarge/thlarge.d.ts +8 -0
  1363. package/icons/times/index.d.ts +5 -0
  1364. package/icons/times/public_api.d.ts +1 -0
  1365. package/icons/times/times.d.ts +6 -0
  1366. package/icons/timescircle/index.d.ts +5 -0
  1367. package/icons/timescircle/public_api.d.ts +1 -0
  1368. package/icons/timescircle/timescircle.d.ts +8 -0
  1369. package/icons/trash/index.d.ts +5 -0
  1370. package/icons/trash/public_api.d.ts +1 -0
  1371. package/icons/trash/trash.d.ts +8 -0
  1372. package/icons/undo/index.d.ts +5 -0
  1373. package/icons/undo/public_api.d.ts +1 -0
  1374. package/icons/undo/undo.d.ts +8 -0
  1375. package/icons/upload/index.d.ts +5 -0
  1376. package/icons/upload/public_api.d.ts +1 -0
  1377. package/icons/upload/upload.d.ts +8 -0
  1378. package/icons/windowmaximize/index.d.ts +5 -0
  1379. package/icons/windowmaximize/public_api.d.ts +1 -0
  1380. package/icons/windowmaximize/windowmaximize.d.ts +8 -0
  1381. package/icons/windowminimize/index.d.ts +5 -0
  1382. package/icons/windowminimize/public_api.d.ts +1 -0
  1383. package/icons/windowminimize/windowminimize.d.ts +8 -0
  1384. package/image/image.d.ts +188 -0
  1385. package/image/image.interface.d.ts +31 -0
  1386. package/image/image.module.d.ts +8 -0
  1387. package/image/index.d.ts +5 -0
  1388. package/image/public_api.d.ts +3 -0
  1389. package/index.d.ts +5 -0
  1390. package/inplace/index.d.ts +5 -0
  1391. package/inplace/inplace.d.ts +109 -0
  1392. package/inplace/inplace.interface.d.ts +19 -0
  1393. package/inplace/public_api.d.ts +2 -0
  1394. package/inputgroup/index.d.ts +5 -0
  1395. package/inputgroup/inputgroup.d.ts +28 -0
  1396. package/inputgroup/inputgroup.module.d.ts +15 -0
  1397. package/inputgroup/public_api.d.ts +2 -0
  1398. package/inputgroupaddon/index.d.ts +5 -0
  1399. package/inputgroupaddon/inputgroupaddon.d.ts +21 -0
  1400. package/inputgroupaddon/inputgroupaddon.module.d.ts +14 -0
  1401. package/inputgroupaddon/public_api.d.ts +2 -0
  1402. package/inputicon/index.d.ts +5 -0
  1403. package/inputicon/inputicon.d.ts +21 -0
  1404. package/inputicon/public_api.d.ts +1 -0
  1405. package/inputmask/index.d.ts +5 -0
  1406. package/inputmask/inputmask.d.ts +273 -0
  1407. package/inputmask/inputmask.interface.d.ts +19 -0
  1408. package/inputmask/public_api.d.ts +2 -0
  1409. package/inputnumber/index.d.ts +5 -0
  1410. package/inputnumber/inputnumber.d.ts +392 -0
  1411. package/inputnumber/inputnumber.interface.d.ts +38 -0
  1412. package/inputnumber/inputnumber.module.d.ts +8 -0
  1413. package/inputnumber/public_api.d.ts +3 -0
  1414. package/inputotp/index.d.ts +5 -0
  1415. package/inputotp/inputotp.d.ts +123 -0
  1416. package/inputotp/inputotp.interface.d.ts +65 -0
  1417. package/inputotp/public_api.d.ts +2 -0
  1418. package/inputswitch/index.d.ts +5 -0
  1419. package/inputswitch/inputswitch.d.ts +106 -0
  1420. package/inputswitch/inputswitch.interface.d.ts +15 -0
  1421. package/inputswitch/public_api.d.ts +2 -0
  1422. package/inputtext/index.d.ts +5 -0
  1423. package/inputtext/inputtext.component.d.ts +25 -0
  1424. package/inputtext/inputtext.directive.d.ts +20 -0
  1425. package/inputtext/inputtext.module.d.ts +10 -0
  1426. package/inputtext/public_api.d.ts +3 -0
  1427. package/inputtextarea/index.d.ts +5 -0
  1428. package/inputtextarea/inputtextarea.d.ts +53 -0
  1429. package/inputtextarea/public_api.d.ts +1 -0
  1430. package/keyfilter/index.d.ts +5 -0
  1431. package/keyfilter/keyfilter.d.ts +58 -0
  1432. package/keyfilter/keyfilter.interface.d.ts +5 -0
  1433. package/keyfilter/public_api.d.ts +2 -0
  1434. package/knob/index.d.ts +5 -0
  1435. package/knob/knob.d.ts +178 -0
  1436. package/knob/public_api.d.ts +1 -0
  1437. package/listbox/index.d.ts +5 -0
  1438. package/listbox/listbox.d.ts +463 -0
  1439. package/listbox/listbox.interface.d.ts +156 -0
  1440. package/listbox/public_api.d.ts +2 -0
  1441. package/logo/index.d.ts +5 -0
  1442. package/logo/logo.d.ts +11 -0
  1443. package/logo/logo.module.d.ts +7 -0
  1444. package/logo/public_api.d.ts +2 -0
  1445. package/megamenu/index.d.ts +5 -0
  1446. package/megamenu/megamenu.d.ts +198 -0
  1447. package/megamenu/megamenu.interface.d.ts +31 -0
  1448. package/megamenu/public_api.d.ts +2 -0
  1449. package/menu/index.d.ts +5 -0
  1450. package/menu/menu.d.ts +220 -0
  1451. package/menu/public_api.d.ts +1 -0
  1452. package/menubar/index.d.ts +5 -0
  1453. package/menubar/menubar.d.ts +248 -0
  1454. package/menubar/menubar.interface.d.ts +40 -0
  1455. package/menubar/public_api.d.ts +2 -0
  1456. package/message/index.d.ts +5 -0
  1457. package/message/message.d.ts +52 -0
  1458. package/message/public_api.d.ts +1 -0
  1459. package/messages/index.d.ts +5 -0
  1460. package/messages/messages.d.ts +115 -0
  1461. package/messages/messages.interface.d.ts +18 -0
  1462. package/messages/messages.module.d.ts +8 -0
  1463. package/messages/public_api.d.ts +3 -0
  1464. package/metergroup/index.d.ts +5 -0
  1465. package/metergroup/metergroup.d.ts +101 -0
  1466. package/metergroup/metergroup.interface.d.ts +122 -0
  1467. package/metergroup/public_api.d.ts +2 -0
  1468. package/multiselect/index.d.ts +5 -0
  1469. package/multiselect/multiselect.d.ts +724 -0
  1470. package/multiselect/multiselect.interface.d.ts +247 -0
  1471. package/multiselect/public_api.d.ts +2 -0
  1472. package/navigation/index.d.ts +5 -0
  1473. package/navigation/navigation.d.ts +54 -0
  1474. package/navigation/navigation.interface.d.ts +23 -0
  1475. package/navigation/navigation.module.d.ts +7 -0
  1476. package/navigation/public_api.d.ts +2 -0
  1477. package/orderlist/index.d.ts +5 -0
  1478. package/orderlist/orderlist.d.ts +270 -0
  1479. package/orderlist/orderlist.interface.d.ts +110 -0
  1480. package/orderlist/public_api.d.ts +2 -0
  1481. package/organizationchart/index.d.ts +5 -0
  1482. package/organizationchart/organizationchart.d.ts +132 -0
  1483. package/organizationchart/organizationchart.interface.d.ts +59 -0
  1484. package/organizationchart/public_api.d.ts +2 -0
  1485. package/overlay/index.d.ts +5 -0
  1486. package/overlay/overlay.d.ts +238 -0
  1487. package/overlay/overlay.module.d.ts +8 -0
  1488. package/overlay/public_api.d.ts +2 -0
  1489. package/overlaypanel/index.d.ts +5 -0
  1490. package/overlaypanel/overlaypanel.d.ts +162 -0
  1491. package/overlaypanel/overlaypanel.module.d.ts +8 -0
  1492. package/overlaypanel/public_api.d.ts +2 -0
  1493. package/package.json +1033 -0
  1494. package/paginator/index.d.ts +5 -0
  1495. package/paginator/paginator.d.ts +192 -0
  1496. package/paginator/paginator.interface.d.ts +37 -0
  1497. package/paginator/paginator.module.d.ts +17 -0
  1498. package/paginator/public_api.d.ts +3 -0
  1499. package/panel/index.d.ts +5 -0
  1500. package/panel/panel.d.ts +126 -0
  1501. package/panel/panel.interface.d.ts +58 -0
  1502. package/panel/public_api.d.ts +2 -0
  1503. package/panelmenu/index.d.ts +5 -0
  1504. package/panelmenu/panelmenu.d.ts +225 -0
  1505. package/panelmenu/panelmenu.interface.d.ts +23 -0
  1506. package/panelmenu/public_api.d.ts +2 -0
  1507. package/password/index.d.ts +5 -0
  1508. package/password/password.d.ts +342 -0
  1509. package/password/public_api.d.ts +1 -0
  1510. package/picklist/index.d.ts +5 -0
  1511. package/picklist/picklist.d.ts +453 -0
  1512. package/picklist/picklist.interface.d.ts +242 -0
  1513. package/picklist/public_api.d.ts +2 -0
  1514. package/progressbar/index.d.ts +5 -0
  1515. package/progressbar/progressbar.d.ts +54 -0
  1516. package/progressbar/progressbar.module.d.ts +8 -0
  1517. package/progressbar/public_api.d.ts +2 -0
  1518. package/progressspinner/index.d.ts +5 -0
  1519. package/progressspinner/progressspinner.d.ts +50 -0
  1520. package/progressspinner/progressspinner.module.d.ts +8 -0
  1521. package/progressspinner/public_api.d.ts +2 -0
  1522. package/public_api.d.ts +2 -0
  1523. package/radiobutton/index.d.ts +5 -0
  1524. package/radiobutton/public_api.d.ts +3 -0
  1525. package/radiobutton/radiobutton.d.ts +145 -0
  1526. package/radiobutton/radiobutton.interface.d.ts +15 -0
  1527. package/radiobutton/radiobutton.module.d.ts +7 -0
  1528. package/rating/index.d.ts +5 -0
  1529. package/rating/public_api.d.ts +2 -0
  1530. package/rating/rating.d.ts +146 -0
  1531. package/rating/rating.interface.d.ts +34 -0
  1532. package/resources/cax.min.scss +1 -0
  1533. package/resources/cax.scss +784 -0
  1534. package/resources/components/accordion/accordion.scss +44 -0
  1535. package/resources/components/autocomplete/autocomplete.css +104 -0
  1536. package/resources/components/avatar/avatar.scss +33 -0
  1537. package/resources/components/avatargroup/avatargroup.css +10 -0
  1538. package/resources/components/badge/badge.scss +34 -0
  1539. package/resources/components/blockui/blockui.css +26 -0
  1540. package/resources/components/breadcrumb/breadcrumb.scss +33 -0
  1541. package/resources/components/button/button.scss +117 -0
  1542. package/resources/components/calendar/calendar.scss +177 -0
  1543. package/resources/components/card/card.scss +50 -0
  1544. package/resources/components/carousel/carousel.css +71 -0
  1545. package/resources/components/cascadeselect/cascadeselect.scss +99 -0
  1546. package/resources/components/checkbox/checkbox.scss +30 -0
  1547. package/resources/components/chip/chip.scss +63 -0
  1548. package/resources/components/chips/chips.scss +156 -0
  1549. package/resources/components/colorpicker/colorpicker-images.css +7 -0
  1550. package/resources/components/colorpicker/colorpicker.css +83 -0
  1551. package/resources/components/colorpicker/images/color.png +0 -0
  1552. package/resources/components/colorpicker/images/hue.png +0 -0
  1553. package/resources/components/common/common.scss +182 -0
  1554. package/resources/components/confirmpopup/confirmpopup.css +53 -0
  1555. package/resources/components/contextmenu/contextmenu.css +42 -0
  1556. package/resources/components/dataview/dataview.css +13 -0
  1557. package/resources/components/dialog/dialog.scss +164 -0
  1558. package/resources/components/divider/divider.scss +86 -0
  1559. package/resources/components/dock/dock.css +107 -0
  1560. package/resources/components/dropdown/dropdown.scss +92 -0
  1561. package/resources/components/editor/editor.css +4 -0
  1562. package/resources/components/fieldset/fieldset.css +30 -0
  1563. package/resources/components/fileupload/fileupload.css +47 -0
  1564. package/resources/components/galleria/galleria.css +281 -0
  1565. package/resources/components/iconfield/iconfield.css +5 -0
  1566. package/resources/components/image/image.scss +97 -0
  1567. package/resources/components/inplace/inplace.css +19 -0
  1568. package/resources/components/inputicon/inputicon.css +6 -0
  1569. package/resources/components/inputmask/inputmask.css +12 -0
  1570. package/resources/components/inputnumber/inputnumber.scss +116 -0
  1571. package/resources/components/inputotp/inputotp.css +2 -0
  1572. package/resources/components/inputswitch/inputswitch.css +23 -0
  1573. package/resources/components/inputtext/inputtext.scss +150 -0
  1574. package/resources/components/inputtextarea/inputtextarea.css +10 -0
  1575. package/resources/components/knob/knob.css +20 -0
  1576. package/resources/components/listbox/listbox.css +40 -0
  1577. package/resources/components/logo/logo.scss +0 -0
  1578. package/resources/components/megamenu/megamenu.css +108 -0
  1579. package/resources/components/menu/menu.css +30 -0
  1580. package/resources/components/menubar/menubar.css +81 -0
  1581. package/resources/components/message/message.css +17 -0
  1582. package/resources/components/messages/messages.scss +55 -0
  1583. package/resources/components/multiselect/multiselect.css +116 -0
  1584. package/resources/components/navigation/navigation.scss +217 -0
  1585. package/resources/components/orderlist/orderlist.css +78 -0
  1586. package/resources/components/organizationchart/organizationchart.css +62 -0
  1587. package/resources/components/overlay/overlay.scss +80 -0
  1588. package/resources/components/overlaypanel/overlaypanel.scss +63 -0
  1589. package/resources/components/paginator/paginator.scss +37 -0
  1590. package/resources/components/panel/panel.css +29 -0
  1591. package/resources/components/panelmenu/panelmenu.css +45 -0
  1592. package/resources/components/password/images/password-meter.png +0 -0
  1593. package/resources/components/password/password.css +54 -0
  1594. package/resources/components/picklist/picklist.css +60 -0
  1595. package/resources/components/progressbar/progressbar.scss +122 -0
  1596. package/resources/components/progressspinner/progressspinner.scss +94 -0
  1597. package/resources/components/radiobutton/radiobutton.scss +38 -0
  1598. package/resources/components/rating/rating.css +15 -0
  1599. package/resources/components/ripple/ripple.scss +29 -0
  1600. package/resources/components/scroller/scroller.scss +58 -0
  1601. package/resources/components/scrollpanel/scrollpanel.css +50 -0
  1602. package/resources/components/scrolltop/scrolltop.css +18 -0
  1603. package/resources/components/sidebar/sidebar.scss +114 -0
  1604. package/resources/components/skeleton/skeleton.scss +25 -0
  1605. package/resources/components/slidemenu/slidemenu.css +100 -0
  1606. package/resources/components/slider/slider.css +41 -0
  1607. package/resources/components/speeddial/speeddial.scss +122 -0
  1608. package/resources/components/spinner/spinner.css +63 -0
  1609. package/resources/components/splitbutton/splitbutton.scss +48 -0
  1610. package/resources/components/splitter/splitter.css +70 -0
  1611. package/resources/components/stepper/stepper.css +9 -0
  1612. package/resources/components/steps/steps.css +49 -0
  1613. package/resources/components/table/table.scss +249 -0
  1614. package/resources/components/tabmenu/tabmenu.css +80 -0
  1615. package/resources/components/tabview/tabview.scss +163 -0
  1616. package/resources/components/tag/tag.scss +17 -0
  1617. package/resources/components/terminal/terminal.css +24 -0
  1618. package/resources/components/tieredmenu/tieredmenu.scss +55 -0
  1619. package/resources/components/timeline/timeline.css +114 -0
  1620. package/resources/components/toast/toast.scss +83 -0
  1621. package/resources/components/toggleswitch/toggleswitch.scss +30 -0
  1622. package/resources/components/toolbar/toolbar.css +19 -0
  1623. package/resources/components/tooltip/tooltip.scss +124 -0
  1624. package/resources/components/tree/images/line.gif +0 -0
  1625. package/resources/components/tree/tree.scss +158 -0
  1626. package/resources/components/treeselect/treeselect.css +98 -0
  1627. package/resources/components/treetable/treetable.css +205 -0
  1628. package/resources/images/color.png +0 -0
  1629. package/resources/images/hue.png +0 -0
  1630. package/resources/images/line.gif +0 -0
  1631. package/resources/images/password-meter.png +0 -0
  1632. package/resources/logo/dataX-dark.svg +12 -0
  1633. package/resources/logo/dataX-icon-dark.svg +6 -0
  1634. package/resources/logo/dataX-icon.svg +6 -0
  1635. package/resources/logo/dataX.svg +12 -0
  1636. package/resources/logo/usercard.png +0 -0
  1637. package/resources/themes/cax-theme.scss +9272 -0
  1638. package/ripple/index.d.ts +5 -0
  1639. package/ripple/public_api.d.ts +2 -0
  1640. package/ripple/ripple.d.ts +30 -0
  1641. package/ripple/ripple.module.d.ts +7 -0
  1642. package/scroller/index.d.ts +5 -0
  1643. package/scroller/public_api.d.ts +3 -0
  1644. package/scroller/scroller.d.ts +343 -0
  1645. package/scroller/scroller.interface.d.ts +177 -0
  1646. package/scroller/scroller.module.d.ts +8 -0
  1647. package/scrollpanel/index.d.ts +5 -0
  1648. package/scrollpanel/public_api.d.ts +2 -0
  1649. package/scrollpanel/scrollpanel.d.ts +103 -0
  1650. package/scrollpanel/scrollpanel.interface.d.ts +11 -0
  1651. package/scrolltop/index.d.ts +5 -0
  1652. package/scrolltop/public_api.d.ts +2 -0
  1653. package/scrolltop/scrolltop.d.ts +97 -0
  1654. package/scrolltop/scrolltop.interface.d.ts +18 -0
  1655. package/selectbutton/index.d.ts +5 -0
  1656. package/selectbutton/public_api.d.ts +2 -0
  1657. package/selectbutton/selectbutton.d.ts +136 -0
  1658. package/selectbutton/selectbutton.interface.d.ts +45 -0
  1659. package/sidebar/index.d.ts +5 -0
  1660. package/sidebar/public_api.d.ts +3 -0
  1661. package/sidebar/sidebar.d.ts +158 -0
  1662. package/sidebar/sidebar.interface.d.ts +27 -0
  1663. package/sidebar/sidebar.module.d.ts +12 -0
  1664. package/skeleton/index.d.ts +5 -0
  1665. package/skeleton/public_api.d.ts +2 -0
  1666. package/skeleton/skeleton.d.ts +61 -0
  1667. package/skeleton/skeleton.module.d.ts +8 -0
  1668. package/slidemenu/index.d.ts +5 -0
  1669. package/slidemenu/public_api.d.ts +2 -0
  1670. package/slidemenu/slidemenu.d.ts +322 -0
  1671. package/slidemenu/slidemenu.interface.d.ts +15 -0
  1672. package/slider/index.d.ts +5 -0
  1673. package/slider/public_api.d.ts +2 -0
  1674. package/slider/slider.d.ts +174 -0
  1675. package/slider/slider.interface.d.ts +38 -0
  1676. package/speeddial/index.d.ts +5 -0
  1677. package/speeddial/public_api.d.ts +3 -0
  1678. package/speeddial/speeddial.d.ts +277 -0
  1679. package/speeddial/speeddial.interface.d.ts +28 -0
  1680. package/speeddial/speeddial.module.d.ts +14 -0
  1681. package/spinner/index.d.ts +5 -0
  1682. package/spinner/public_api.d.ts +1 -0
  1683. package/spinner/spinner.d.ts +90 -0
  1684. package/splitbutton/index.d.ts +5 -0
  1685. package/splitbutton/public_api.d.ts +3 -0
  1686. package/splitbutton/splitbutton.d.ts +221 -0
  1687. package/splitbutton/splitbutton.interface.d.ts +30 -0
  1688. package/splitbutton/splitbutton.module.d.ts +12 -0
  1689. package/splitter/index.d.ts +5 -0
  1690. package/splitter/public_api.d.ts +2 -0
  1691. package/splitter/splitter.d.ts +164 -0
  1692. package/splitter/splitter.interface.d.ts +34 -0
  1693. package/stepper/index.d.ts +5 -0
  1694. package/stepper/public_api.d.ts +2 -0
  1695. package/stepper/stepper.d.ts +117 -0
  1696. package/stepper/stepper.interface.d.ts +26 -0
  1697. package/steps/index.d.ts +5 -0
  1698. package/steps/public_api.d.ts +1 -0
  1699. package/steps/steps.d.ts +85 -0
  1700. package/styleclass/index.d.ts +5 -0
  1701. package/styleclass/public_api.d.ts +1 -0
  1702. package/styleclass/styleclass.d.ts +108 -0
  1703. package/table/columnfilter.interface.d.ts +247 -0
  1704. package/table/components/cell-editor/cell-editor.d.ts +20 -0
  1705. package/table/components/column-filter/column-filter.d.ts +256 -0
  1706. package/table/components/column-filter-form-element/column-filter-form-element.d.ts +37 -0
  1707. package/table/components/sort-icon/sort-icon.d.ts +21 -0
  1708. package/table/components/table-body/table-body.d.ts +36 -0
  1709. package/table/components/table-checkbox/table-checkbox.d.ts +31 -0
  1710. package/table/components/table-header-checkbox/table-header-checkbox.d.ts +29 -0
  1711. package/table/components/table-radio-button/table-radio-button.d.ts +29 -0
  1712. package/table/directives/cancel-editable-row.directive.d.ts +11 -0
  1713. package/table/directives/content-menu-row.directive.d.ts +22 -0
  1714. package/table/directives/editable-column.directive.d.ts +40 -0
  1715. package/table/directives/editable-row.directive.d.ts +12 -0
  1716. package/table/directives/frozen-column.directive.d.ts +16 -0
  1717. package/table/directives/init-editable-row.directive.d.ts +11 -0
  1718. package/table/directives/reorderable-column.directive.d.ts +32 -0
  1719. package/table/directives/reorderable-row-handle.directive.d.ts +9 -0
  1720. package/table/directives/reorderable-row.directive.d.ts +34 -0
  1721. package/table/directives/resizable-column.directive.d.ts +35 -0
  1722. package/table/directives/row-group-header.directive.d.ts +9 -0
  1723. package/table/directives/row-toggler.directive.d.ts +13 -0
  1724. package/table/directives/save-editable-row.directive.d.ts +11 -0
  1725. package/table/directives/selectable-row-double-click.directive.d.ts +22 -0
  1726. package/table/directives/selectable-row.directive.d.ts +37 -0
  1727. package/table/directives/sortable-column.directive.d.ts +24 -0
  1728. package/table/index.d.ts +5 -0
  1729. package/table/public_api.d.ts +28 -0
  1730. package/table/table.d.ts +859 -0
  1731. package/table/table.interface.d.ts +623 -0
  1732. package/table/table.module.d.ts +32 -0
  1733. package/table/table.service.d.ts +24 -0
  1734. package/tabmenu/index.d.ts +5 -0
  1735. package/tabmenu/public_api.d.ts +2 -0
  1736. package/tabmenu/tabmenu.d.ts +126 -0
  1737. package/tabmenu/tabmenu.interface.d.ts +32 -0
  1738. package/tabview/index.d.ts +5 -0
  1739. package/tabview/public_api.d.ts +3 -0
  1740. package/tabview/tabview.d.ts +281 -0
  1741. package/tabview/tabview.interface.d.ts +49 -0
  1742. package/tabview/tabview.module.d.ts +14 -0
  1743. package/tag/index.d.ts +5 -0
  1744. package/tag/public_api.d.ts +3 -0
  1745. package/tag/tag.d.ts +61 -0
  1746. package/tag/tag.interface.d.ts +11 -0
  1747. package/tag/tag.module.d.ts +9 -0
  1748. package/terminal/index.d.ts +5 -0
  1749. package/terminal/public_api.d.ts +2 -0
  1750. package/terminal/terminal.d.ts +56 -0
  1751. package/terminal/terminalservice.d.ts +11 -0
  1752. package/tieredmenu/index.d.ts +5 -0
  1753. package/tieredmenu/public_api.d.ts +3 -0
  1754. package/tieredmenu/tieredmenu.d.ts +266 -0
  1755. package/tieredmenu/tieredmenu.interface.d.ts +27 -0
  1756. package/tieredmenu/tiredmenu.module.d.ts +13 -0
  1757. package/timeline/index.d.ts +5 -0
  1758. package/timeline/public_api.d.ts +2 -0
  1759. package/timeline/timeline.d.ts +54 -0
  1760. package/timeline/timeline.interface.d.ts +43 -0
  1761. package/toast/index.d.ts +5 -0
  1762. package/toast/public_api.d.ts +3 -0
  1763. package/toast/toast.d.ts +142 -0
  1764. package/toast/toast.interface.d.ts +52 -0
  1765. package/toast/toast.module.d.ts +9 -0
  1766. package/toast/toastitem.d.ts +37 -0
  1767. package/togglebutton/index.d.ts +5 -0
  1768. package/togglebutton/public_api.d.ts +2 -0
  1769. package/togglebutton/togglebutton.d.ts +115 -0
  1770. package/togglebutton/togglebutton.interface.d.ts +34 -0
  1771. package/toggleswitch/index.d.ts +5 -0
  1772. package/toggleswitch/public_api.d.ts +2 -0
  1773. package/toggleswitch/toggleswitch.d.ts +13 -0
  1774. package/toggleswitch/toggleswitch.module.d.ts +9 -0
  1775. package/toolbar/index.d.ts +5 -0
  1776. package/toolbar/public_api.d.ts +2 -0
  1777. package/toolbar/toolbar.d.ts +43 -0
  1778. package/toolbar/toolbar.interface.d.ts +19 -0
  1779. package/tooltip/index.d.ts +5 -0
  1780. package/tooltip/public_api.d.ts +2 -0
  1781. package/tooltip/tooltip.d.ts +208 -0
  1782. package/tooltip/tooltip.module.d.ts +8 -0
  1783. package/tree/index.d.ts +5 -0
  1784. package/tree/public_api.d.ts +3 -0
  1785. package/tree/tree.d.ts +449 -0
  1786. package/tree/tree.interface.d.ts +193 -0
  1787. package/tree/tree.module.d.ts +19 -0
  1788. package/treeselect/index.d.ts +5 -0
  1789. package/treeselect/public_api.d.ts +2 -0
  1790. package/treeselect/treeselect.d.ts +405 -0
  1791. package/treeselect/treeselect.interface.d.ts +108 -0
  1792. package/treetable/index.d.ts +5 -0
  1793. package/treetable/public_api.d.ts +2 -0
  1794. package/treetable/treetable.d.ts +988 -0
  1795. package/treetable/treetable.interface.d.ts +472 -0
  1796. package/tristatecheckbox/index.d.ts +5 -0
  1797. package/tristatecheckbox/public_api.d.ts +3 -0
  1798. package/tristatecheckbox/tristatecheckbox.d.ts +117 -0
  1799. package/tristatecheckbox/tristatecheckbox.interface.d.ts +30 -0
  1800. package/tristatecheckbox/tristatecheckbox.module.d.ts +8 -0
  1801. package/ts-helpers/index.d.ts +5 -0
  1802. package/ts-helpers/public_api.d.ts +1 -0
  1803. package/ts-helpers/ts-helpers.d.ts +4 -0
  1804. package/utils/index.d.ts +5 -0
  1805. package/utils/objectutils.d.ts +24 -0
  1806. package/utils/public_api.d.ts +4 -0
  1807. package/utils/uniquecomponentid.d.ts +2 -0
  1808. package/utils/zindexutils.d.ts +7 -0
  1809. package/virtualscroller/index.d.ts +5 -0
  1810. package/virtualscroller/public_api.d.ts +2 -0
  1811. package/virtualscroller/virtualscroller.d.ts +89 -0
  1812. package/virtualscroller/virtualscroller.interface.d.ts +72 -0
@@ -0,0 +1,981 @@
1
+ import { CommonModule, DOCUMENT, isPlatformBrowser } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, Inject, Input, Output, PLATFORM_ID, ViewChild, ViewEncapsulation } from '@angular/core';
3
+ import { CaxTemplate, SharedModule } from 'cax-design-system/api';
4
+ import { DomHandler } from 'cax-design-system/dom';
5
+ import { SpinnerIcon } from 'cax-design-system/icons/spinner';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common";
8
+ /**
9
+ * Scroller is a performance-approach to handle huge data efficiently.
10
+ * @group Components
11
+ */
12
+ export class Scroller {
13
+ document;
14
+ platformId;
15
+ renderer;
16
+ cd;
17
+ zone;
18
+ /**
19
+ * Unique identifier of the element.
20
+ * @group Props
21
+ */
22
+ get id() {
23
+ return this._id;
24
+ }
25
+ set id(val) {
26
+ this._id = val;
27
+ }
28
+ /**
29
+ * Inline style of the component.
30
+ * @group Props
31
+ */
32
+ get style() {
33
+ return this._style;
34
+ }
35
+ set style(val) {
36
+ this._style = val;
37
+ }
38
+ /**
39
+ * Style class of the element.
40
+ * @group Props
41
+ */
42
+ get styleClass() {
43
+ return this._styleClass;
44
+ }
45
+ set styleClass(val) {
46
+ this._styleClass = val;
47
+ }
48
+ /**
49
+ * Index of the element in tabbing order.
50
+ * @group Props
51
+ */
52
+ get tabindex() {
53
+ return this._tabindex;
54
+ }
55
+ set tabindex(val) {
56
+ this._tabindex = val;
57
+ }
58
+ /**
59
+ * An array of objects to display.
60
+ * @group Props
61
+ */
62
+ get items() {
63
+ return this._items;
64
+ }
65
+ set items(val) {
66
+ this._items = val;
67
+ }
68
+ /**
69
+ * The height/width of item according to orientation.
70
+ * @group Props
71
+ */
72
+ get itemSize() {
73
+ return this._itemSize;
74
+ }
75
+ set itemSize(val) {
76
+ this._itemSize = val;
77
+ }
78
+ /**
79
+ * Height of the scroll viewport.
80
+ * @group Props
81
+ */
82
+ get scrollHeight() {
83
+ return this._scrollHeight;
84
+ }
85
+ set scrollHeight(val) {
86
+ this._scrollHeight = val;
87
+ }
88
+ /**
89
+ * Width of the scroll viewport.
90
+ * @group Props
91
+ */
92
+ get scrollWidth() {
93
+ return this._scrollWidth;
94
+ }
95
+ set scrollWidth(val) {
96
+ this._scrollWidth = val;
97
+ }
98
+ /**
99
+ * The orientation of scrollbar.
100
+ * @group Props
101
+ */
102
+ get orientation() {
103
+ return this._orientation;
104
+ }
105
+ set orientation(val) {
106
+ this._orientation = val;
107
+ }
108
+ /**
109
+ * Used to specify how many items to load in each load method in lazy mode.
110
+ * @group Props
111
+ */
112
+ get step() {
113
+ return this._step;
114
+ }
115
+ set step(val) {
116
+ this._step = val;
117
+ }
118
+ /**
119
+ * Delay in scroll before new data is loaded.
120
+ * @group Props
121
+ */
122
+ get delay() {
123
+ return this._delay;
124
+ }
125
+ set delay(val) {
126
+ this._delay = val;
127
+ }
128
+ /**
129
+ * Delay after window's resize finishes.
130
+ * @group Props
131
+ */
132
+ get resizeDelay() {
133
+ return this._resizeDelay;
134
+ }
135
+ set resizeDelay(val) {
136
+ this._resizeDelay = val;
137
+ }
138
+ /**
139
+ * Used to append each loaded item to top without removing any items from the DOM. Using very large data may cause the browser to crash.
140
+ * @group Props
141
+ */
142
+ get appendOnly() {
143
+ return this._appendOnly;
144
+ }
145
+ set appendOnly(val) {
146
+ this._appendOnly = val;
147
+ }
148
+ /**
149
+ * Specifies whether the scroller should be displayed inline or not.
150
+ * @group Props
151
+ */
152
+ get inline() {
153
+ return this._inline;
154
+ }
155
+ set inline(val) {
156
+ this._inline = val;
157
+ }
158
+ /**
159
+ * Defines if data is loaded and interacted with in lazy manner.
160
+ * @group Props
161
+ */
162
+ get lazy() {
163
+ return this._lazy;
164
+ }
165
+ set lazy(val) {
166
+ this._lazy = val;
167
+ }
168
+ /**
169
+ * If disabled, the scroller feature is eliminated and the content is displayed directly.
170
+ * @group Props
171
+ */
172
+ get disabled() {
173
+ return this._disabled;
174
+ }
175
+ set disabled(val) {
176
+ this._disabled = val;
177
+ }
178
+ /**
179
+ * Used to implement a custom loader instead of using the loader feature in the scroller.
180
+ * @group Props
181
+ */
182
+ get loaderDisabled() {
183
+ return this._loaderDisabled;
184
+ }
185
+ set loaderDisabled(val) {
186
+ this._loaderDisabled = val;
187
+ }
188
+ /**
189
+ * Columns to display.
190
+ * @group Props
191
+ */
192
+ get columns() {
193
+ return this._columns;
194
+ }
195
+ set columns(val) {
196
+ this._columns = val;
197
+ }
198
+ /**
199
+ * Used to implement a custom spacer instead of using the spacer feature in the scroller.
200
+ * @group Props
201
+ */
202
+ get showSpacer() {
203
+ return this._showSpacer;
204
+ }
205
+ set showSpacer(val) {
206
+ this._showSpacer = val;
207
+ }
208
+ /**
209
+ * Defines whether to show loader.
210
+ * @group Props
211
+ */
212
+ get showLoader() {
213
+ return this._showLoader;
214
+ }
215
+ set showLoader(val) {
216
+ this._showLoader = val;
217
+ }
218
+ /**
219
+ * Determines how many additional elements to add to the DOM outside of the view. According to the scrolls made up and down, extra items are added in a certain algorithm in the form of multiples of this number. Default value is half the number of items shown in the view.
220
+ * @group Props
221
+ */
222
+ get numToleratedItems() {
223
+ return this._numToleratedItems;
224
+ }
225
+ set numToleratedItems(val) {
226
+ this._numToleratedItems = val;
227
+ }
228
+ /**
229
+ * Defines whether the data is loaded.
230
+ * @group Props
231
+ */
232
+ get loading() {
233
+ return this._loading;
234
+ }
235
+ set loading(val) {
236
+ this._loading = val;
237
+ }
238
+ /**
239
+ * Defines whether to dynamically change the height or width of scrollable container.
240
+ * @group Props
241
+ */
242
+ get autoSize() {
243
+ return this._autoSize;
244
+ }
245
+ set autoSize(val) {
246
+ this._autoSize = val;
247
+ }
248
+ /**
249
+ * Function to optimize the dom operations by delegating to ngForTrackBy, default algoritm checks for object identity.
250
+ * @group Props
251
+ */
252
+ get trackBy() {
253
+ return this._trackBy;
254
+ }
255
+ set trackBy(val) {
256
+ this._trackBy = val;
257
+ }
258
+ /**
259
+ * Defines whether to use the scroller feature. The properties of scroller component can be used like an object in it.
260
+ * @group Props
261
+ */
262
+ get options() {
263
+ return this._options;
264
+ }
265
+ set options(val) {
266
+ this._options = val;
267
+ if (val && typeof val === 'object') {
268
+ //@ts-ignore
269
+ Object.entries(val).forEach(([k, v]) => this[`_${k}`] !== v && (this[`_${k}`] = v));
270
+ }
271
+ }
272
+ /**
273
+ * Callback to invoke in lazy mode to load new data.
274
+ * @param {ScrollerLazyLoadEvent} event - Custom lazy load event.
275
+ * @group Emits
276
+ */
277
+ onLazyLoad = new EventEmitter();
278
+ /**
279
+ * Callback to invoke when scroll position changes.
280
+ * @param {ScrollerScrollEvent} event - Custom scroll event.
281
+ * @group Emits
282
+ */
283
+ onScroll = new EventEmitter();
284
+ /**
285
+ * Callback to invoke when scroll position and item's range in view changes.
286
+ * @param {ScrollerScrollEvent} event - Custom scroll index change event.
287
+ * @group Emits
288
+ */
289
+ onScrollIndexChange = new EventEmitter();
290
+ elementViewChild;
291
+ contentViewChild;
292
+ templates;
293
+ _id;
294
+ _style;
295
+ _styleClass;
296
+ _tabindex = 0;
297
+ _items;
298
+ _itemSize = 0;
299
+ _scrollHeight;
300
+ _scrollWidth;
301
+ _orientation = 'vertical';
302
+ _step = 0;
303
+ _delay = 0;
304
+ _resizeDelay = 10;
305
+ _appendOnly = false;
306
+ _inline = false;
307
+ _lazy = false;
308
+ _disabled = false;
309
+ _loaderDisabled = false;
310
+ _columns;
311
+ _showSpacer = true;
312
+ _showLoader = false;
313
+ _numToleratedItems;
314
+ _loading;
315
+ _autoSize = false;
316
+ _trackBy;
317
+ _options;
318
+ d_loading = false;
319
+ d_numToleratedItems;
320
+ contentEl;
321
+ contentTemplate;
322
+ itemTemplate;
323
+ loaderTemplate;
324
+ loaderIconTemplate;
325
+ first = 0;
326
+ last = 0;
327
+ page = 0;
328
+ isRangeChanged = false;
329
+ numItemsInViewport = 0;
330
+ lastScrollPos = 0;
331
+ lazyLoadState = {};
332
+ loaderArr = [];
333
+ spacerStyle = {};
334
+ contentStyle = {};
335
+ scrollTimeout;
336
+ resizeTimeout;
337
+ initialized = false;
338
+ resizeObserver;
339
+ defaultWidth;
340
+ defaultHeight;
341
+ defaultContentWidth;
342
+ defaultContentHeight;
343
+ get vertical() {
344
+ return this._orientation === 'vertical';
345
+ }
346
+ get horizontal() {
347
+ return this._orientation === 'horizontal';
348
+ }
349
+ get both() {
350
+ return this._orientation === 'both';
351
+ }
352
+ get loadedItems() {
353
+ if (this._items && !this.d_loading) {
354
+ if (this.both)
355
+ return this._items.slice(this._appendOnly ? 0 : this.first.rows, this.last.rows).map((item) => (this._columns ? item : item.slice(this._appendOnly ? 0 : this.first.cols, this.last.cols)));
356
+ else if (this.horizontal && this._columns)
357
+ return this._items;
358
+ else
359
+ return this._items.slice(this._appendOnly ? 0 : this.first, this.last);
360
+ }
361
+ return [];
362
+ }
363
+ get loadedRows() {
364
+ return this.d_loading ? (this._loaderDisabled ? this.loaderArr : []) : this.loadedItems;
365
+ }
366
+ get loadedColumns() {
367
+ if (this._columns && (this.both || this.horizontal)) {
368
+ return this.d_loading && this._loaderDisabled ? (this.both ? this.loaderArr[0] : this.loaderArr) : this._columns.slice(this.both ? this.first.cols : this.first, this.both ? this.last.cols : this.last);
369
+ }
370
+ return this._columns;
371
+ }
372
+ constructor(document, platformId, renderer, cd, zone) {
373
+ this.document = document;
374
+ this.platformId = platformId;
375
+ this.renderer = renderer;
376
+ this.cd = cd;
377
+ this.zone = zone;
378
+ }
379
+ ngOnInit() {
380
+ this.setInitialState();
381
+ }
382
+ ngOnChanges(simpleChanges) {
383
+ let isLoadingChanged = false;
384
+ if (simpleChanges.loading) {
385
+ const { previousValue, currentValue } = simpleChanges.loading;
386
+ if (this.lazy && previousValue !== currentValue && currentValue !== this.d_loading) {
387
+ this.d_loading = currentValue;
388
+ isLoadingChanged = true;
389
+ }
390
+ }
391
+ if (simpleChanges.orientation) {
392
+ this.lastScrollPos = this.both ? { top: 0, left: 0 } : 0;
393
+ }
394
+ if (simpleChanges.numToleratedItems) {
395
+ const { previousValue, currentValue } = simpleChanges.numToleratedItems;
396
+ if (previousValue !== currentValue && currentValue !== this.d_numToleratedItems) {
397
+ this.d_numToleratedItems = currentValue;
398
+ }
399
+ }
400
+ if (simpleChanges.options) {
401
+ const { previousValue, currentValue } = simpleChanges.options;
402
+ if (this.lazy && previousValue?.loading !== currentValue?.loading && currentValue?.loading !== this.d_loading) {
403
+ this.d_loading = currentValue.loading;
404
+ isLoadingChanged = true;
405
+ }
406
+ if (previousValue?.numToleratedItems !== currentValue?.numToleratedItems && currentValue?.numToleratedItems !== this.d_numToleratedItems) {
407
+ this.d_numToleratedItems = currentValue.numToleratedItems;
408
+ }
409
+ }
410
+ if (this.initialized) {
411
+ const isChanged = !isLoadingChanged && (simpleChanges.items?.previousValue?.length !== simpleChanges.items?.currentValue?.length || simpleChanges.itemSize || simpleChanges.scrollHeight || simpleChanges.scrollWidth);
412
+ if (isChanged) {
413
+ this.init();
414
+ this.calculateAutoSize();
415
+ }
416
+ }
417
+ }
418
+ ngAfterContentInit() {
419
+ this.templates.forEach((item) => {
420
+ switch (item.getType()) {
421
+ case 'content':
422
+ this.contentTemplate = item.template;
423
+ break;
424
+ case 'item':
425
+ this.itemTemplate = item.template;
426
+ break;
427
+ case 'loader':
428
+ this.loaderTemplate = item.template;
429
+ break;
430
+ case 'loadericon':
431
+ this.loaderIconTemplate = item.template;
432
+ break;
433
+ default:
434
+ this.itemTemplate = item.template;
435
+ break;
436
+ }
437
+ });
438
+ }
439
+ ngAfterViewInit() {
440
+ Promise.resolve().then(() => {
441
+ this.viewInit();
442
+ });
443
+ }
444
+ ngAfterViewChecked() {
445
+ if (!this.initialized) {
446
+ this.viewInit();
447
+ }
448
+ }
449
+ ngOnDestroy() {
450
+ this.unbindResizeListener();
451
+ this.contentEl = null;
452
+ this.initialized = false;
453
+ }
454
+ viewInit() {
455
+ if (isPlatformBrowser(this.platformId) && !this.initialized) {
456
+ if (DomHandler.isVisible(this.elementViewChild?.nativeElement)) {
457
+ this.setInitialState();
458
+ this.setContentEl(this.contentEl);
459
+ this.init();
460
+ this.calculateAutoSize();
461
+ this.defaultWidth = DomHandler.getWidth(this.elementViewChild?.nativeElement);
462
+ this.defaultHeight = DomHandler.getHeight(this.elementViewChild?.nativeElement);
463
+ this.defaultContentWidth = DomHandler.getWidth(this.contentEl);
464
+ this.defaultContentHeight = DomHandler.getHeight(this.contentEl);
465
+ this.resizeObserver = new ResizeObserver(() => this.onResize());
466
+ this.resizeObserver.observe(this.elementViewChild?.nativeElement);
467
+ this.initialized = true;
468
+ }
469
+ }
470
+ }
471
+ init() {
472
+ if (!this._disabled) {
473
+ this.setSize();
474
+ this.calculateOptions();
475
+ this.setSpacerSize();
476
+ this.cd.detectChanges();
477
+ }
478
+ }
479
+ setContentEl(el) {
480
+ this.contentEl = el || this.contentViewChild?.nativeElement || DomHandler.findSingle(this.elementViewChild?.nativeElement, '.cax-scroller-content');
481
+ }
482
+ setInitialState() {
483
+ this.first = this.both ? { rows: 0, cols: 0 } : 0;
484
+ this.last = this.both ? { rows: 0, cols: 0 } : 0;
485
+ this.numItemsInViewport = this.both ? { rows: 0, cols: 0 } : 0;
486
+ this.lastScrollPos = this.both ? { top: 0, left: 0 } : 0;
487
+ this.d_loading = this._loading || false;
488
+ this.d_numToleratedItems = this._numToleratedItems;
489
+ this.loaderArr = [];
490
+ this.spacerStyle = {};
491
+ this.contentStyle = {};
492
+ }
493
+ getElementRef() {
494
+ return this.elementViewChild;
495
+ }
496
+ getPageByFirst(first) {
497
+ return Math.floor(((first ?? this.first) + this.d_numToleratedItems * 4) / (this._step || 1));
498
+ }
499
+ isPageChanged(first) {
500
+ return this._step ? this.page !== this.getPageByFirst(first ?? this.first) : true;
501
+ }
502
+ scrollTo(options) {
503
+ // this.lastScrollPos = this.both ? { top: 0, left: 0 } : 0;
504
+ this.elementViewChild?.nativeElement?.scrollTo(options);
505
+ }
506
+ scrollToIndex(index, behavior = 'auto') {
507
+ const valid = this.both ? index.every((i) => i > -1) : index > -1;
508
+ if (valid) {
509
+ const first = this.first;
510
+ const { scrollTop = 0, scrollLeft = 0 } = this.elementViewChild?.nativeElement;
511
+ const { numToleratedItems } = this.calculateNumItems();
512
+ const contentPos = this.getContentPosition();
513
+ const itemSize = this.itemSize;
514
+ const calculateFirst = (_index = 0, _numT) => (_index <= _numT ? 0 : _index);
515
+ const calculateCoord = (_first, _size, _cpos) => _first * _size + _cpos;
516
+ const scrollTo = (left = 0, top = 0) => this.scrollTo({ left, top, behavior });
517
+ let newFirst = this.both ? { rows: 0, cols: 0 } : 0;
518
+ let isRangeChanged = false, isScrollChanged = false;
519
+ if (this.both) {
520
+ newFirst = { rows: calculateFirst(index[0], numToleratedItems[0]), cols: calculateFirst(index[1], numToleratedItems[1]) };
521
+ scrollTo(calculateCoord(newFirst.cols, itemSize[1], contentPos.left), calculateCoord(newFirst.rows, itemSize[0], contentPos.top));
522
+ isScrollChanged = this.lastScrollPos.top !== scrollTop || this.lastScrollPos.left !== scrollLeft;
523
+ isRangeChanged = newFirst.rows !== first.rows || newFirst.cols !== first.cols;
524
+ }
525
+ else {
526
+ newFirst = calculateFirst(index, numToleratedItems);
527
+ this.horizontal ? scrollTo(calculateCoord(newFirst, itemSize, contentPos.left), scrollTop) : scrollTo(scrollLeft, calculateCoord(newFirst, itemSize, contentPos.top));
528
+ isScrollChanged = this.lastScrollPos !== (this.horizontal ? scrollLeft : scrollTop);
529
+ isRangeChanged = newFirst !== first;
530
+ }
531
+ this.isRangeChanged = isRangeChanged;
532
+ isScrollChanged && (this.first = newFirst);
533
+ }
534
+ }
535
+ scrollInView(index, to, behavior = 'auto') {
536
+ if (to) {
537
+ const { first, viewport } = this.getRenderedRange();
538
+ const scrollTo = (left = 0, top = 0) => this.scrollTo({ left, top, behavior });
539
+ const isToStart = to === 'to-start';
540
+ const isToEnd = to === 'to-end';
541
+ if (isToStart) {
542
+ if (this.both) {
543
+ if (viewport.first.rows - first.rows > index[0]) {
544
+ scrollTo(viewport.first.cols * this._itemSize[1], (viewport.first.rows - 1) * this._itemSize[0]);
545
+ }
546
+ else if (viewport.first.cols - first.cols > index[1]) {
547
+ scrollTo((viewport.first.cols - 1) * this._itemSize[1], viewport.first.rows * this._itemSize[0]);
548
+ }
549
+ }
550
+ else {
551
+ if (viewport.first - first > index) {
552
+ const pos = (viewport.first - 1) * this._itemSize;
553
+ this.horizontal ? scrollTo(pos, 0) : scrollTo(0, pos);
554
+ }
555
+ }
556
+ }
557
+ else if (isToEnd) {
558
+ if (this.both) {
559
+ if (viewport.last.rows - first.rows <= index[0] + 1) {
560
+ scrollTo(viewport.first.cols * this._itemSize[1], (viewport.first.rows + 1) * this._itemSize[0]);
561
+ }
562
+ else if (viewport.last.cols - first.cols <= index[1] + 1) {
563
+ scrollTo((viewport.first.cols + 1) * this._itemSize[1], viewport.first.rows * this._itemSize[0]);
564
+ }
565
+ }
566
+ else {
567
+ if (viewport.last - first <= index + 1) {
568
+ const pos = (viewport.first + 1) * this._itemSize;
569
+ this.horizontal ? scrollTo(pos, 0) : scrollTo(0, pos);
570
+ }
571
+ }
572
+ }
573
+ }
574
+ else {
575
+ this.scrollToIndex(index, behavior);
576
+ }
577
+ }
578
+ getRenderedRange() {
579
+ const calculateFirstInViewport = (_pos, _size) => (_size || _pos ? Math.floor(_pos / (_size || _pos)) : 0);
580
+ let firstInViewport = this.first;
581
+ let lastInViewport = 0;
582
+ if (this.elementViewChild?.nativeElement) {
583
+ const { scrollTop, scrollLeft } = this.elementViewChild.nativeElement;
584
+ if (this.both) {
585
+ firstInViewport = { rows: calculateFirstInViewport(scrollTop, this._itemSize[0]), cols: calculateFirstInViewport(scrollLeft, this._itemSize[1]) };
586
+ lastInViewport = { rows: firstInViewport.rows + this.numItemsInViewport.rows, cols: firstInViewport.cols + this.numItemsInViewport.cols };
587
+ }
588
+ else {
589
+ const scrollPos = this.horizontal ? scrollLeft : scrollTop;
590
+ firstInViewport = calculateFirstInViewport(scrollPos, this._itemSize);
591
+ lastInViewport = firstInViewport + this.numItemsInViewport;
592
+ }
593
+ }
594
+ return {
595
+ first: this.first,
596
+ last: this.last,
597
+ viewport: {
598
+ first: firstInViewport,
599
+ last: lastInViewport
600
+ }
601
+ };
602
+ }
603
+ calculateNumItems() {
604
+ const contentPos = this.getContentPosition();
605
+ const contentWidth = (this.elementViewChild?.nativeElement ? this.elementViewChild.nativeElement.offsetWidth - contentPos.left : 0) || 0;
606
+ const contentHeight = (this.elementViewChild?.nativeElement ? this.elementViewChild.nativeElement.offsetHeight - contentPos.top : 0) || 0;
607
+ const calculateNumItemsInViewport = (_contentSize, _itemSize) => (_itemSize || _contentSize ? Math.ceil(_contentSize / (_itemSize || _contentSize)) : 0);
608
+ const calculateNumToleratedItems = (_numItems) => Math.ceil(_numItems / 2);
609
+ const numItemsInViewport = this.both
610
+ ? { rows: calculateNumItemsInViewport(contentHeight, this._itemSize[0]), cols: calculateNumItemsInViewport(contentWidth, this._itemSize[1]) }
611
+ : calculateNumItemsInViewport(this.horizontal ? contentWidth : contentHeight, this._itemSize);
612
+ const numToleratedItems = this.d_numToleratedItems || (this.both ? [calculateNumToleratedItems(numItemsInViewport.rows), calculateNumToleratedItems(numItemsInViewport.cols)] : calculateNumToleratedItems(numItemsInViewport));
613
+ return { numItemsInViewport, numToleratedItems };
614
+ }
615
+ calculateOptions() {
616
+ const { numItemsInViewport, numToleratedItems } = this.calculateNumItems();
617
+ const calculateLast = (_first, _num, _numT, _isCols = false) => this.getLast(_first + _num + (_first < _numT ? 2 : 3) * _numT, _isCols);
618
+ const first = this.first;
619
+ const last = this.both
620
+ ? { rows: calculateLast(this.first.rows, numItemsInViewport.rows, numToleratedItems[0]), cols: calculateLast(this.first.cols, numItemsInViewport.cols, numToleratedItems[1], true) }
621
+ : calculateLast(this.first, numItemsInViewport, numToleratedItems);
622
+ this.last = last;
623
+ this.numItemsInViewport = numItemsInViewport;
624
+ this.d_numToleratedItems = numToleratedItems;
625
+ if (this.showLoader) {
626
+ this.loaderArr = this.both ? Array.from({ length: numItemsInViewport.rows }).map(() => Array.from({ length: numItemsInViewport.cols })) : Array.from({ length: numItemsInViewport });
627
+ }
628
+ if (this._lazy) {
629
+ Promise.resolve().then(() => {
630
+ this.lazyLoadState = {
631
+ first: this._step ? (this.both ? { rows: 0, cols: first.cols } : 0) : first,
632
+ last: Math.min(this._step ? this._step : this.last, this.items.length)
633
+ };
634
+ this.handleEvents('onLazyLoad', this.lazyLoadState);
635
+ });
636
+ }
637
+ }
638
+ calculateAutoSize() {
639
+ if (this._autoSize && !this.d_loading) {
640
+ Promise.resolve().then(() => {
641
+ if (this.contentEl) {
642
+ this.contentEl.style.minHeight = this.contentEl.style.minWidth = 'auto';
643
+ this.contentEl.style.position = 'relative';
644
+ this.elementViewChild.nativeElement.style.contain = 'none';
645
+ const [contentWidth, contentHeight] = [DomHandler.getWidth(this.contentEl), DomHandler.getHeight(this.contentEl)];
646
+ contentWidth !== this.defaultContentWidth && (this.elementViewChild.nativeElement.style.width = '');
647
+ contentHeight !== this.defaultContentHeight && (this.elementViewChild.nativeElement.style.height = '');
648
+ const [width, height] = [DomHandler.getWidth(this.elementViewChild.nativeElement), DomHandler.getHeight(this.elementViewChild.nativeElement)];
649
+ (this.both || this.horizontal) && (this.elementViewChild.nativeElement.style.width = width < this.defaultWidth ? width + 'px' : this._scrollWidth || this.defaultWidth + 'px');
650
+ (this.both || this.vertical) && (this.elementViewChild.nativeElement.style.height = height < this.defaultHeight ? height + 'px' : this._scrollHeight || this.defaultHeight + 'px');
651
+ this.contentEl.style.minHeight = this.contentEl.style.minWidth = '';
652
+ this.contentEl.style.position = '';
653
+ this.elementViewChild.nativeElement.style.contain = '';
654
+ }
655
+ });
656
+ }
657
+ }
658
+ getLast(last = 0, isCols = false) {
659
+ return this._items ? Math.min(isCols ? (this._columns || this._items[0]).length : this._items.length, last) : 0;
660
+ }
661
+ getContentPosition() {
662
+ if (this.contentEl) {
663
+ const style = getComputedStyle(this.contentEl);
664
+ const left = parseFloat(style.paddingLeft) + Math.max(parseFloat(style.left) || 0, 0);
665
+ const right = parseFloat(style.paddingRight) + Math.max(parseFloat(style.right) || 0, 0);
666
+ const top = parseFloat(style.paddingTop) + Math.max(parseFloat(style.top) || 0, 0);
667
+ const bottom = parseFloat(style.paddingBottom) + Math.max(parseFloat(style.bottom) || 0, 0);
668
+ return { left, right, top, bottom, x: left + right, y: top + bottom };
669
+ }
670
+ return { left: 0, right: 0, top: 0, bottom: 0, x: 0, y: 0 };
671
+ }
672
+ setSize() {
673
+ if (this.elementViewChild?.nativeElement) {
674
+ const parentElement = this.elementViewChild.nativeElement.parentElement.parentElement;
675
+ const width = this._scrollWidth || `${this.elementViewChild.nativeElement.offsetWidth || parentElement.offsetWidth}px`;
676
+ const height = this._scrollHeight || `${this.elementViewChild.nativeElement.offsetHeight || parentElement.offsetHeight}px`;
677
+ const setProp = (_name, _value) => (this.elementViewChild.nativeElement.style[_name] = _value);
678
+ if (this.both || this.horizontal) {
679
+ setProp('height', height);
680
+ setProp('width', width);
681
+ }
682
+ else {
683
+ setProp('height', height);
684
+ }
685
+ }
686
+ }
687
+ setSpacerSize() {
688
+ if (this._items) {
689
+ const setProp = (_name, _count, _size) => (this.spacerStyle = { ...this.spacerStyle, ...{ [`${_name}`]: _count * _size + 'px' } });
690
+ const numItems = this._items.length;
691
+ if (this.both) {
692
+ setProp('height', numItems, this._itemSize[0]);
693
+ setProp('width', this._columns?.length || this._items[1]?.length, this._itemSize[1]);
694
+ }
695
+ else {
696
+ this.horizontal ? setProp('width', this._columns.length || this._items.length, this._itemSize) : setProp('height', numItems, this._itemSize);
697
+ }
698
+ }
699
+ }
700
+ setContentPosition(pos) {
701
+ if (this.contentEl && !this._appendOnly) {
702
+ const first = pos ? pos.first : this.first;
703
+ const calculateTranslateVal = (_first, _size) => _first * _size;
704
+ const setTransform = (_x = 0, _y = 0) => (this.contentStyle = { ...this.contentStyle, ...{ transform: `translate3d(${_x}px, ${_y}px, 0)` } });
705
+ if (this.both) {
706
+ setTransform(calculateTranslateVal(first.cols, this._itemSize[1]), calculateTranslateVal(first.rows, this._itemSize[0]));
707
+ }
708
+ else {
709
+ const translateVal = calculateTranslateVal(first, this._itemSize);
710
+ this.horizontal ? setTransform(translateVal, 0) : setTransform(0, translateVal);
711
+ }
712
+ }
713
+ }
714
+ onScrollPositionChange(event) {
715
+ const target = event.target;
716
+ const contentPos = this.getContentPosition();
717
+ const calculateScrollPos = (_pos, _cpos) => (_pos ? (_pos > _cpos ? _pos - _cpos : _pos) : 0);
718
+ const calculateCurrentIndex = (_pos, _size) => (_size || _pos ? Math.floor(_pos / (_size || _pos)) : 0);
719
+ const calculateTriggerIndex = (_currentIndex, _first, _last, _num, _numT, _isScrollDownOrRight) => {
720
+ return _currentIndex <= _numT ? _numT : _isScrollDownOrRight ? _last - _num - _numT : _first + _numT - 1;
721
+ };
722
+ const calculateFirst = (_currentIndex, _triggerIndex, _first, _last, _num, _numT, _isScrollDownOrRight) => {
723
+ if (_currentIndex <= _numT)
724
+ return 0;
725
+ else
726
+ return Math.max(0, _isScrollDownOrRight ? (_currentIndex < _triggerIndex ? _first : _currentIndex - _numT) : _currentIndex > _triggerIndex ? _first : _currentIndex - 2 * _numT);
727
+ };
728
+ const calculateLast = (_currentIndex, _first, _last, _num, _numT, _isCols = false) => {
729
+ let lastValue = _first + _num + 2 * _numT;
730
+ if (_currentIndex >= _numT) {
731
+ lastValue += _numT + 1;
732
+ }
733
+ return this.getLast(lastValue, _isCols);
734
+ };
735
+ const scrollTop = calculateScrollPos(target.scrollTop, contentPos.top);
736
+ const scrollLeft = calculateScrollPos(target.scrollLeft, contentPos.left);
737
+ let newFirst = this.both ? { rows: 0, cols: 0 } : 0;
738
+ let newLast = this.last;
739
+ let isRangeChanged = false;
740
+ let newScrollPos = this.lastScrollPos;
741
+ if (this.both) {
742
+ const isScrollDown = this.lastScrollPos.top <= scrollTop;
743
+ const isScrollRight = this.lastScrollPos.left <= scrollLeft;
744
+ if (!this._appendOnly || (this._appendOnly && (isScrollDown || isScrollRight))) {
745
+ const currentIndex = { rows: calculateCurrentIndex(scrollTop, this._itemSize[0]), cols: calculateCurrentIndex(scrollLeft, this._itemSize[1]) };
746
+ const triggerIndex = {
747
+ rows: calculateTriggerIndex(currentIndex.rows, this.first.rows, this.last.rows, this.numItemsInViewport.rows, this.d_numToleratedItems[0], isScrollDown),
748
+ cols: calculateTriggerIndex(currentIndex.cols, this.first.cols, this.last.cols, this.numItemsInViewport.cols, this.d_numToleratedItems[1], isScrollRight)
749
+ };
750
+ newFirst = {
751
+ rows: calculateFirst(currentIndex.rows, triggerIndex.rows, this.first.rows, this.last.rows, this.numItemsInViewport.rows, this.d_numToleratedItems[0], isScrollDown),
752
+ cols: calculateFirst(currentIndex.cols, triggerIndex.cols, this.first.cols, this.last.cols, this.numItemsInViewport.cols, this.d_numToleratedItems[1], isScrollRight)
753
+ };
754
+ newLast = {
755
+ rows: calculateLast(currentIndex.rows, newFirst.rows, this.last.rows, this.numItemsInViewport.rows, this.d_numToleratedItems[0]),
756
+ cols: calculateLast(currentIndex.cols, newFirst.cols, this.last.cols, this.numItemsInViewport.cols, this.d_numToleratedItems[1], true)
757
+ };
758
+ isRangeChanged = newFirst.rows !== this.first.rows || newLast.rows !== this.last.rows || newFirst.cols !== this.first.cols || newLast.cols !== this.last.cols || this.isRangeChanged;
759
+ newScrollPos = { top: scrollTop, left: scrollLeft };
760
+ }
761
+ }
762
+ else {
763
+ const scrollPos = this.horizontal ? scrollLeft : scrollTop;
764
+ const isScrollDownOrRight = this.lastScrollPos <= scrollPos;
765
+ if (!this._appendOnly || (this._appendOnly && isScrollDownOrRight)) {
766
+ const currentIndex = calculateCurrentIndex(scrollPos, this._itemSize);
767
+ const triggerIndex = calculateTriggerIndex(currentIndex, this.first, this.last, this.numItemsInViewport, this.d_numToleratedItems, isScrollDownOrRight);
768
+ newFirst = calculateFirst(currentIndex, triggerIndex, this.first, this.last, this.numItemsInViewport, this.d_numToleratedItems, isScrollDownOrRight);
769
+ newLast = calculateLast(currentIndex, newFirst, this.last, this.numItemsInViewport, this.d_numToleratedItems);
770
+ isRangeChanged = newFirst !== this.first || newLast !== this.last || this.isRangeChanged;
771
+ newScrollPos = scrollPos;
772
+ }
773
+ }
774
+ return {
775
+ first: newFirst,
776
+ last: newLast,
777
+ isRangeChanged,
778
+ scrollPos: newScrollPos
779
+ };
780
+ }
781
+ onScrollChange(event) {
782
+ const { first, last, isRangeChanged, scrollPos } = this.onScrollPositionChange(event);
783
+ if (isRangeChanged) {
784
+ const newState = { first, last };
785
+ this.setContentPosition(newState);
786
+ this.first = first;
787
+ this.last = last;
788
+ this.lastScrollPos = scrollPos;
789
+ this.handleEvents('onScrollIndexChange', newState);
790
+ if (this._lazy && this.isPageChanged(first)) {
791
+ const lazyLoadState = {
792
+ first: this._step ? Math.min(this.getPageByFirst(first) * this._step, this.items.length - this._step) : first,
793
+ last: Math.min(this._step ? (this.getPageByFirst(first) + 1) * this._step : last, this.items.length)
794
+ };
795
+ const isLazyStateChanged = this.lazyLoadState.first !== lazyLoadState.first || this.lazyLoadState.last !== lazyLoadState.last;
796
+ isLazyStateChanged && this.handleEvents('onLazyLoad', lazyLoadState);
797
+ this.lazyLoadState = lazyLoadState;
798
+ }
799
+ }
800
+ }
801
+ onContainerScroll(event) {
802
+ this.handleEvents('onScroll', { originalEvent: event });
803
+ if (this._delay && this.isPageChanged()) {
804
+ if (this.scrollTimeout) {
805
+ clearTimeout(this.scrollTimeout);
806
+ }
807
+ if (!this.d_loading && this.showLoader) {
808
+ const { isRangeChanged } = this.onScrollPositionChange(event);
809
+ const changed = isRangeChanged || (this._step ? this.isPageChanged() : false);
810
+ if (changed) {
811
+ this.d_loading = true;
812
+ this.cd.detectChanges();
813
+ }
814
+ }
815
+ this.scrollTimeout = setTimeout(() => {
816
+ this.onScrollChange(event);
817
+ if (this.d_loading && this.showLoader && (!this._lazy || this._loading === undefined)) {
818
+ this.d_loading = false;
819
+ this.page = this.getPageByFirst();
820
+ this.cd.detectChanges();
821
+ }
822
+ }, this._delay);
823
+ }
824
+ else {
825
+ !this.d_loading && this.onScrollChange(event);
826
+ }
827
+ }
828
+ unbindResizeListener() {
829
+ if (this.resizeObserver) {
830
+ this.resizeObserver.unobserve(this.elementViewChild?.nativeElement);
831
+ this.resizeObserver = null;
832
+ }
833
+ }
834
+ onResize() {
835
+ if (this.resizeTimeout) {
836
+ clearTimeout(this.resizeTimeout);
837
+ }
838
+ this.resizeTimeout = setTimeout(() => {
839
+ if (DomHandler.isVisible(this.elementViewChild?.nativeElement)) {
840
+ const [width, height] = [DomHandler.getWidth(this.elementViewChild?.nativeElement), DomHandler.getHeight(this.elementViewChild?.nativeElement)];
841
+ const [isDiffWidth, isDiffHeight] = [width !== this.defaultWidth, height !== this.defaultHeight];
842
+ const reinit = this.both ? isDiffWidth || isDiffHeight : this.horizontal ? isDiffWidth : this.vertical ? isDiffHeight : false;
843
+ reinit &&
844
+ this.zone.run(() => {
845
+ this.d_numToleratedItems = this._numToleratedItems;
846
+ this.defaultWidth = width;
847
+ this.defaultHeight = height;
848
+ this.defaultContentWidth = DomHandler.getWidth(this.contentEl);
849
+ this.defaultContentHeight = DomHandler.getHeight(this.contentEl);
850
+ this.init();
851
+ this.calculateAutoSize();
852
+ });
853
+ }
854
+ }, this._resizeDelay);
855
+ }
856
+ handleEvents(name, params) {
857
+ //@ts-ignore
858
+ return this.options && this.options[name] ? this.options[name](params) : this[name].emit(params);
859
+ }
860
+ getContentOptions() {
861
+ return {
862
+ contentStyleClass: `cax-scroller-content ${this.d_loading ? 'cax-scroller-loading' : ''}`,
863
+ items: this.loadedItems,
864
+ getItemOptions: (index) => this.getOptions(index),
865
+ loading: this.d_loading,
866
+ getLoaderOptions: (index, options) => this.getLoaderOptions(index, options),
867
+ itemSize: this._itemSize,
868
+ rows: this.loadedRows,
869
+ columns: this.loadedColumns,
870
+ spacerStyle: this.spacerStyle,
871
+ contentStyle: this.contentStyle,
872
+ vertical: this.vertical,
873
+ horizontal: this.horizontal,
874
+ both: this.both
875
+ };
876
+ }
877
+ getOptions(renderedIndex) {
878
+ const count = (this._items || []).length;
879
+ const index = this.both ? this.first.rows + renderedIndex : this.first + renderedIndex;
880
+ return {
881
+ index,
882
+ count,
883
+ first: index === 0,
884
+ last: index === count - 1,
885
+ even: index % 2 === 0,
886
+ odd: index % 2 !== 0
887
+ };
888
+ }
889
+ getLoaderOptions(index, extOptions) {
890
+ const count = this.loaderArr.length;
891
+ return {
892
+ index,
893
+ count,
894
+ first: index === 0,
895
+ last: index === count - 1,
896
+ even: index % 2 === 0,
897
+ odd: index % 2 !== 0,
898
+ ...extOptions
899
+ };
900
+ }
901
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: Scroller, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
902
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: Scroller, isStandalone: true, selector: "cax-scroller", inputs: { id: "id", style: "style", styleClass: "styleClass", tabindex: "tabindex", items: "items", itemSize: "itemSize", scrollHeight: "scrollHeight", scrollWidth: "scrollWidth", orientation: "orientation", step: "step", delay: "delay", resizeDelay: "resizeDelay", appendOnly: "appendOnly", inline: "inline", lazy: "lazy", disabled: "disabled", loaderDisabled: "loaderDisabled", columns: "columns", showSpacer: "showSpacer", showLoader: "showLoader", numToleratedItems: "numToleratedItems", loading: "loading", autoSize: "autoSize", trackBy: "trackBy", options: "options" }, outputs: { onLazyLoad: "onLazyLoad", onScroll: "onScroll", onScrollIndexChange: "onScrollIndexChange" }, host: { classAttribute: "cax-scroller-viewport cax-element" }, queries: [{ propertyName: "templates", predicate: CaxTemplate }], viewQueries: [{ propertyName: "elementViewChild", first: true, predicate: ["element"], descendants: true }, { propertyName: "contentViewChild", first: true, predicate: ["content"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!_disabled; else disabledContainer\">\r\n <div\r\n #element\r\n [attr.id]=\"_id\"\r\n [attr.tabindex]=\"tabindex\"\r\n [ngStyle]=\"_style\"\r\n [class]=\"_styleClass\"\r\n [ngClass]=\"{ 'cax-scroller': true, 'cax-scroller-inline': inline, 'cax-both-scroll': both, 'cax-horizontal-scroll': horizontal }\"\r\n (scroll)=\"onContainerScroll($event)\"\r\n [attr.data-pc-name]=\"'scroller'\"\r\n [attr.data-pc-section]=\"'root'\"\r\n >\r\n <ng-container *ngIf=\"contentTemplate; else buildInContent\">\r\n <ng-container *ngTemplateOutlet=\"contentTemplate; context: { $implicit: loadedItems, options: getContentOptions() }\"></ng-container>\r\n </ng-container>\r\n <ng-template #buildInContent>\r\n <div #content class=\"cax-scroller-content\" [ngClass]=\"{ 'cax-scroller-loading': d_loading }\" [ngStyle]=\"contentStyle\" [attr.data-pc-section]=\"'content'\">\r\n <ng-container *ngFor=\"let item of loadedItems; let index = index; trackBy: _trackBy || index\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item, options: getOptions(index) }\"></ng-container>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n <div *ngIf=\"_showSpacer\" class=\"cax-scroller-spacer\" [ngStyle]=\"spacerStyle\" [attr.data-pc-section]=\"'spacer'\"></div>\r\n <div *ngIf=\"!loaderDisabled && _showLoader && d_loading\" class=\"cax-scroller-loader\" [ngClass]=\"{ 'cax-component-overlay': !loaderTemplate }\" [attr.data-pc-section]=\"'loader'\">\r\n <ng-container *ngIf=\"loaderTemplate; else buildInLoader\">\r\n <ng-container *ngFor=\"let item of loaderArr; let index = index\">\r\n <ng-container *ngTemplateOutlet=\"loaderTemplate; context: { options: getLoaderOptions(index, both && { numCols: _numItemsInViewport.cols }) }\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #buildInLoader>\r\n <ng-container *ngIf=\"loaderIconTemplate; else buildInLoaderIcon\">\r\n <ng-container *ngTemplateOutlet=\"loaderIconTemplate; context: { options: { styleClass: 'cax-scroller-loading-icon' } }\"></ng-container>\r\n </ng-container>\r\n <ng-template #buildInLoaderIcon>\r\n <SpinnerIcon [styleClass]=\"'cax-scroller-loading-icon pi-spin'\" [attr.data-pc-section]=\"'loadingIcon'\" />\r\n </ng-template>\r\n </ng-template>\r\n </div>\r\n </div>\r\n</ng-container>\r\n<ng-template #disabledContainer>\r\n <ng-content></ng-content>\r\n <ng-container *ngIf=\"contentTemplate\">\r\n <ng-container *ngTemplateOutlet=\"contentTemplate; context: { $implicit: items, options: { rows: _items, columns: loadedColumns } }\"></ng-container>\r\n </ng-container>\r\n</ng-template>\r\n", styles: ["@layer cax{cax-scroller{flex:1;outline:0 none}.cax-scroller{position:relative;overflow:auto;contain:strict;transform:translateZ(0);will-change:scroll-position;outline:0 none}.cax-scroller-content{position:absolute;top:0;left:0;min-height:100%;min-width:100%;will-change:transform}.cax-scroller-spacer{position:absolute;top:0;left:0;height:1px;width:1px;transform-origin:0 0;pointer-events:none}.cax-scroller-loader{position:sticky;top:0;left:0;width:100%;height:100%}.cax-scroller-loader.cax-component-overlay{display:flex;align-items:center;justify-content:center}.cax-scroller-loading-icon{scale:2}.cax-scroller-inline .cax-scroller-content{position:static}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: SharedModule }, { kind: "component", type: SpinnerIcon, selector: "SpinnerIcon" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
903
+ }
904
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: Scroller, decorators: [{
905
+ type: Component,
906
+ args: [{ selector: 'cax-scroller', changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, standalone: true, imports: [CommonModule, SharedModule, SpinnerIcon], host: {
907
+ class: 'cax-scroller-viewport cax-element'
908
+ }, template: "<ng-container *ngIf=\"!_disabled; else disabledContainer\">\r\n <div\r\n #element\r\n [attr.id]=\"_id\"\r\n [attr.tabindex]=\"tabindex\"\r\n [ngStyle]=\"_style\"\r\n [class]=\"_styleClass\"\r\n [ngClass]=\"{ 'cax-scroller': true, 'cax-scroller-inline': inline, 'cax-both-scroll': both, 'cax-horizontal-scroll': horizontal }\"\r\n (scroll)=\"onContainerScroll($event)\"\r\n [attr.data-pc-name]=\"'scroller'\"\r\n [attr.data-pc-section]=\"'root'\"\r\n >\r\n <ng-container *ngIf=\"contentTemplate; else buildInContent\">\r\n <ng-container *ngTemplateOutlet=\"contentTemplate; context: { $implicit: loadedItems, options: getContentOptions() }\"></ng-container>\r\n </ng-container>\r\n <ng-template #buildInContent>\r\n <div #content class=\"cax-scroller-content\" [ngClass]=\"{ 'cax-scroller-loading': d_loading }\" [ngStyle]=\"contentStyle\" [attr.data-pc-section]=\"'content'\">\r\n <ng-container *ngFor=\"let item of loadedItems; let index = index; trackBy: _trackBy || index\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item, options: getOptions(index) }\"></ng-container>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n <div *ngIf=\"_showSpacer\" class=\"cax-scroller-spacer\" [ngStyle]=\"spacerStyle\" [attr.data-pc-section]=\"'spacer'\"></div>\r\n <div *ngIf=\"!loaderDisabled && _showLoader && d_loading\" class=\"cax-scroller-loader\" [ngClass]=\"{ 'cax-component-overlay': !loaderTemplate }\" [attr.data-pc-section]=\"'loader'\">\r\n <ng-container *ngIf=\"loaderTemplate; else buildInLoader\">\r\n <ng-container *ngFor=\"let item of loaderArr; let index = index\">\r\n <ng-container *ngTemplateOutlet=\"loaderTemplate; context: { options: getLoaderOptions(index, both && { numCols: _numItemsInViewport.cols }) }\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #buildInLoader>\r\n <ng-container *ngIf=\"loaderIconTemplate; else buildInLoaderIcon\">\r\n <ng-container *ngTemplateOutlet=\"loaderIconTemplate; context: { options: { styleClass: 'cax-scroller-loading-icon' } }\"></ng-container>\r\n </ng-container>\r\n <ng-template #buildInLoaderIcon>\r\n <SpinnerIcon [styleClass]=\"'cax-scroller-loading-icon pi-spin'\" [attr.data-pc-section]=\"'loadingIcon'\" />\r\n </ng-template>\r\n </ng-template>\r\n </div>\r\n </div>\r\n</ng-container>\r\n<ng-template #disabledContainer>\r\n <ng-content></ng-content>\r\n <ng-container *ngIf=\"contentTemplate\">\r\n <ng-container *ngTemplateOutlet=\"contentTemplate; context: { $implicit: items, options: { rows: _items, columns: loadedColumns } }\"></ng-container>\r\n </ng-container>\r\n</ng-template>\r\n", styles: ["@layer cax{cax-scroller{flex:1;outline:0 none}.cax-scroller{position:relative;overflow:auto;contain:strict;transform:translateZ(0);will-change:scroll-position;outline:0 none}.cax-scroller-content{position:absolute;top:0;left:0;min-height:100%;min-width:100%;will-change:transform}.cax-scroller-spacer{position:absolute;top:0;left:0;height:1px;width:1px;transform-origin:0 0;pointer-events:none}.cax-scroller-loader{position:sticky;top:0;left:0;width:100%;height:100%}.cax-scroller-loader.cax-component-overlay{display:flex;align-items:center;justify-content:center}.cax-scroller-loading-icon{scale:2}.cax-scroller-inline .cax-scroller-content{position:static}}\n"] }]
909
+ }], ctorParameters: () => [{ type: Document, decorators: [{
910
+ type: Inject,
911
+ args: [DOCUMENT]
912
+ }] }, { type: undefined, decorators: [{
913
+ type: Inject,
914
+ args: [PLATFORM_ID]
915
+ }] }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }], propDecorators: { id: [{
916
+ type: Input
917
+ }], style: [{
918
+ type: Input
919
+ }], styleClass: [{
920
+ type: Input
921
+ }], tabindex: [{
922
+ type: Input
923
+ }], items: [{
924
+ type: Input
925
+ }], itemSize: [{
926
+ type: Input
927
+ }], scrollHeight: [{
928
+ type: Input
929
+ }], scrollWidth: [{
930
+ type: Input
931
+ }], orientation: [{
932
+ type: Input
933
+ }], step: [{
934
+ type: Input
935
+ }], delay: [{
936
+ type: Input
937
+ }], resizeDelay: [{
938
+ type: Input
939
+ }], appendOnly: [{
940
+ type: Input
941
+ }], inline: [{
942
+ type: Input
943
+ }], lazy: [{
944
+ type: Input
945
+ }], disabled: [{
946
+ type: Input
947
+ }], loaderDisabled: [{
948
+ type: Input
949
+ }], columns: [{
950
+ type: Input
951
+ }], showSpacer: [{
952
+ type: Input
953
+ }], showLoader: [{
954
+ type: Input
955
+ }], numToleratedItems: [{
956
+ type: Input
957
+ }], loading: [{
958
+ type: Input
959
+ }], autoSize: [{
960
+ type: Input
961
+ }], trackBy: [{
962
+ type: Input
963
+ }], options: [{
964
+ type: Input
965
+ }], onLazyLoad: [{
966
+ type: Output
967
+ }], onScroll: [{
968
+ type: Output
969
+ }], onScrollIndexChange: [{
970
+ type: Output
971
+ }], elementViewChild: [{
972
+ type: ViewChild,
973
+ args: ['element']
974
+ }], contentViewChild: [{
975
+ type: ViewChild,
976
+ args: ['content']
977
+ }], templates: [{
978
+ type: ContentChildren,
979
+ args: [CaxTemplate]
980
+ }] } });
981
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvc2Nyb2xsZXIvc2Nyb2xsZXIudHMiLCIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvc2Nyb2xsZXIvc2Nyb2xsZXIuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVFLE9BQU8sRUFHSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULGVBQWUsRUFFZixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFJTCxNQUFNLEVBQ04sV0FBVyxFQUtYLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBbUIsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7O0FBSTlEOzs7R0FHRztBQWFILE1BQU0sT0FBTyxRQUFRO0lBZ2FhO0lBQ0c7SUFDckI7SUFDQTtJQUNBO0lBbmFaOzs7T0FHRztJQUNILElBQWEsRUFBRTtRQUNYLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNwQixDQUFDO0lBQ0QsSUFBSSxFQUFFLENBQUMsR0FBdUI7UUFDMUIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFDbkIsQ0FBQztJQUNEOzs7T0FHRztJQUNILElBQWEsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsR0FBUTtRQUNkLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO0lBQ3RCLENBQUM7SUFDRDs7O09BR0c7SUFDSCxJQUFhLFVBQVU7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QUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDdE0sSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxRQUFRO2dCQUFFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQzs7Z0JBQ3pELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoRixDQUFDO1FBRUQsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVGLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDYixJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ2xELE9BQU8sSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElB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SztnQkFVTyxXQUFXO3NCQUF2QixLQUFLO2dCQVVPLElBQUk7c0JBQWhCLEtBQUs7Z0JBVU8sS0FBSztzQkFBakIsS0FBSztnQkFVTyxXQUFXO3NCQUF2QixLQUFLO2dCQVVPLFVBQVU7c0JBQXRCLEtBQUs7Z0JBVU8sTUFBTTtzQkFBbEIsS0FBSztnQkFVTyxJQUFJO3NCQUFoQixLQUFLO2dCQVVPLFFBQVE7c0JBQXBCLEtBQUs7Z0JBVU8sY0FBYztzQkFBMUIsS0FBSztnQkFVTyxPQUFPO3NCQUFuQixLQUFLO2dCQVVPLFVBQVU7c0JBQXRCLEtBQUs7Z0JBVU8sVUFBVTtzQkFBdEIsS0FBSztnQkFVTyxpQkFBaUI7c0JBQTdCLEtBQUs7Z0JBVU8sT0FBTztzQkFBbkIsS0FBSztnQkFVTyxRQUFRO3NCQUFwQixLQUFLO2dCQVVPLE9BQU87c0JBQW5CLEtBQUs7Z0JBVU8sT0FBTztzQkFBbkIsS0FBSztnQkFnQkksVUFBVTtzQkFBbkIsTUFBTTtnQkFNRyxRQUFRO3NCQUFqQixNQUFNO2dCQU1HLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFFZSxnQkFBZ0I7c0JBQXJDLFNBQVM7dUJBQUMsU0FBUztnQkFFRSxnQkFBZ0I7c0JBQXJDLFNBQVM7dUJBQUMsU0FBUztnQkFFVSxTQUFTO3NCQUF0QyxlQUFlO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUsIERPQ1VNRU5ULCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUExBVEZPUk1fSUQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFJlbmRlcmVyMixcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENheFRlbXBsYXRlLCBTY3JvbGxlck9wdGlvbnMsIFNoYXJlZE1vZHVsZSB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL2FwaSc7XG5pbXBvcnQgeyBEb21IYW5kbGVyIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vZG9tJztcbmltcG9ydCB7IFNwaW5uZXJJY29uIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vaWNvbnMvc3Bpbm5lcic7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL3RzLWhlbHBlcnMnO1xuaW1wb3J0IHsgU2Nyb2xsZXJMYXp5TG9hZEV2ZW50LCBTY3JvbGxlclNjcm9sbEV2ZW50LCBTY3JvbGxlclNjcm9sbEluZGV4Q2hhbmdlRXZlbnQsIFNjcm9sbGVyVG9UeXBlIH0gZnJvbSAnLi9zY3JvbGxlci5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIFNjcm9sbGVyIGlzIGEgcGVyZm9ybWFuY2UtYXBwcm9hY2ggdG8gaGFuZGxlIGh1Z2UgZGF0YSBlZmZpY2llbnRseS5cbiAqIEBncm91cCBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnY2F4LXNjcm9sbGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2Nyb2xsZXIuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3R5bGVVcmxzOiBbJy4vc2Nyb2xsZXIuc2NzcyddLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgU2hhcmVkTW9kdWxlLCBTcGlubmVySWNvbl0sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2NheC1zY3JvbGxlci12aWV3cG9ydCBjYXgtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFNjcm9sbGVyIGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdDaGVja2VkLCBPbkRlc3Ryb3kge1xuICAgIC8qKlxuICAgICAqIFVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBlbGVtZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGdldCBpZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5faWQ7XG4gICAgfVxuICAgIHNldCBpZCh2YWw6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9pZCA9IHZhbDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSW5saW5lIHN0eWxlIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZ2V0IHN0eWxlKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdHlsZTtcbiAgICB9XG4gICAgc2V0IHN0eWxlKHZhbDogYW55KSB7XG4gICAgICAgIHRoaXMuX3N0eWxlID0gdmFsO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTdHlsZSBjbGFzcyBvZiB0aGUgZWxlbWVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBnZXQgc3R5bGVDbGFzcygpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3R5bGVDbGFzcztcbiAgICB9XG4gICAgc2V0IHN0eWxlQ2xhc3ModmFsOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5fc3R5bGVDbGFzcyA9IHZhbDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSW5kZXggb2YgdGhlIGVsZW1lbnQgaW4gdGFiYmluZyBvcmRlci5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBnZXQgdGFiaW5kZXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJpbmRleDtcbiAgICB9XG4gICAgc2V0IHRhYmluZGV4KHZhbDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX3RhYmluZGV4ID0gdmFsO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBbiBhcnJheSBvZiBvYmplY3RzIHRvIGRpc3BsYXkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZ2V0IGl0ZW1zKCk6IGFueVtdIHwgdW5kZWZpbmVkIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pdGVtcztcbiAgICB9XG4gICAgc2V0IGl0ZW1zKHZhbDogYW55W10gfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgICAgIHRoaXMuX2l0ZW1zID0gdmFsO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGUgaGVpZ2h0L3dpZHRoIG9mIGl0ZW0gYWNjb3JkaW5nIHRvIG9yaWVudGF0aW9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGdldCBpdGVtU2l6ZSgpOiBudW1iZXJbXSB8IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pdGVtU2l6ZTtcbiAgICB9XG4gICAgc2V0IGl0ZW1TaXplKHZhbDogbnVtYmVyW10gfCBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5faXRlbVNpemUgPSB2YWw7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEhlaWdodCBvZiB0aGUgc2Nyb2xsIHZpZXdwb3J0LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGdldCBzY3JvbGxIZWlnaHQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Njcm9sbEhlaWdodDtcbiAgICB9XG4gICAgc2V0IHNjcm9sbEhlaWdodCh2YWw6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9zY3JvbGxIZWlnaHQgPSB2YWw7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFdpZHRoIG9mIHRoZSBzY3JvbGwgdmlld3BvcnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZ2V0IHNjcm9sbFdpZHRoKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zY3JvbGxXaWR0aDtcbiAgICB9XG4gICAgc2V0IHNjcm9sbFdpZHRoKHZhbDogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX3Njcm9sbFdpZHRoID0gdmFsO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGUgb3JpZW50YXRpb24gb2Ygc2Nyb2xsYmFyLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGdldCBvcmllbnRhdGlvbigpOiAndmVydGljYWwnIHwgJ2hvcml6b250YWwnIHwgJ2JvdGgnIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29yaWVudGF0aW9uO1xuICAgIH1cbiAgICBzZXQgb3JpZW50YXRpb24odmFsOiAndmVydGljYWwnIHwgJ2hvcml6b250YWwnIHwgJ2JvdGgnKSB7XG4gICAgICAgIHRoaXMuX29yaWVudGF0aW9uID0gdmFsO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBVc2VkIHRvIHNwZWNpZnkgaG93IG1hbnkgaXRlbXMgdG8gbG9hZCBpbiBlYWNoIGxvYWQgbWV0aG9kIGluIGxhenkgbW9kZS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBnZXQgc3RlcCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3RlcDtcbiAgICB9XG4gICAgc2V0IHN0ZXAodmFsOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fc3RlcCA9IHZhbDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRGVsYXkgaW4gc2Nyb2xsIGJlZm9yZSBuZXcgZGF0YSBpcyBsb2FkZWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZ2V0IGRlbGF5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVsYXk7XG4gICAgfVxuICAgIHNldCBkZWxheSh2YWw6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9kZWxheSA9IHZhbDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRGVsYXkgYWZ0ZXIgd2luZG93J3MgcmVzaXplIGZpbmlzaGVzLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGdldCByZXNpemVEZWxheSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc2l6ZURlbGF5O1xuICAgIH1cbiAgICBzZXQgcmVzaXplRGVsYXkodmFsOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fcmVzaXplRGVsYXkgPSB2YWw7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFVzZWQgdG8gYXBwZW5kIGVhY2ggbG9hZGVkIGl0ZW0gdG8gdG9wIHdpdGhvdXQgcmVtb3ZpbmcgYW55IGl0ZW1zIGZyb20gdGhlIERPTS4gVXNpbmcgdmVyeSBsYXJnZSBkYXRhIG1heSBjYXVzZSB0aGUgYnJvd3NlciB0byBjcmFzaC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBnZXQgYXBwZW5kT25seSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FwcGVuZE9ubHk7XG4gICAgfVxuICAgIHNldCBhcHBlbmRPbmx5KHZhbDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9hcHBlbmRPbmx5ID0gdmFsO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTcGVjaWZpZXMgd2hldGhlciB0aGUgc2Nyb2xsZXIgc2hvdWxkIGJlIGRpc3BsYXllZCBpbmxpbmUgb3Igbm90LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGdldCBpbmxpbmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbmxpbmU7XG4gICAgfVxuICAgIHNldCBpbmxpbmUodmFsOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2lubGluZSA9IHZhbDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyBpZiBkYXRhIGlzIGxvYWRlZCBhbmQgaW50ZXJhY3RlZCB3aXRoIGluIGxhenkgbWFubmVyLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGdldCBsYXp5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGF6eTtcbiAgICB9XG4gICAgc2V0IGxhenkodmFsOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2xhenkgPSB2YWw7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIElmIGRpc2FibGVkLCB0aGUgc2Nyb2xsZXIgZmVhdHVyZSBpcyBlbGltaW5hdGVkIGFuZCB0aGUgY29udGVudCBpcyBkaXNwbGF5ZWQgZGlyZWN0bHkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZ2V0IGRpc2FibGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gICAgfVxuICAgIHNldCBkaXNhYmxlZCh2YWw6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSB2YWw7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFVzZWQgdG8gaW1wbGVtZW50IGEgY3VzdG9tIGxvYWRlciBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBsb2FkZXIgZmVhdHVyZSBpbiB0aGUgc2Nyb2xsZXIuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZ2V0IGxvYWRlckRpc2FibGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9hZGVyRGlzYWJsZWQ7XG4gICAgfVxuICAgIHNldCBsb2FkZXJEaXNhYmxlZCh2YWw6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fbG9hZGVyRGlzYWJsZWQgPSB2YWw7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbHVtbnMgdG8gZGlzcGxheS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBnZXQgY29sdW1ucygpOiBhbnlbXSB8IHVuZGVmaW5lZCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29sdW1ucztcbiAgICB9XG4gICAgc2V0IGNvbHVtbnModmFsOiBhbnlbXSB8IHVuZGVmaW5lZCB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fY29sdW1ucyA9IHZhbDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVXNlZCB0byBpbXBsZW1lbnQgYSBjdXN0b20gc3BhY2VyIGluc3RlYWQgb2YgdXNpbmcgdGhlIHNwYWNlciBmZWF0dXJlIGluIHRoZSBzY3JvbGxlci5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBnZXQgc2hvd1NwYWNlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Nob3dTcGFjZXI7XG4gICAgfVxuICAgIHNldCBzaG93U3BhY2VyKHZhbDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9zaG93U3BhY2VyID0gdmFsO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHdoZXRoZXIgdG8gc2hvdyBsb2FkZXIuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZ2V0IHNob3dMb2FkZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaG93TG9hZGVyO1xuICAgIH1cbiAgICBzZXQgc2hvd0xvYWRlcih2YWw6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fc2hvd0xvYWRlciA9IHZhbDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyBob3cgbWFueSBhZGRpdGlvbmFsIGVsZW1lbnRzIHRvIGFkZCB0byB0aGUgRE9NIG91dHNpZGUgb2YgdGhlIHZpZXcuIEFjY29yZGluZyB0byB0aGUgc2Nyb2xscyBtYWRlIHVwIGFuZCBkb3duLCBleHRyYSBpdGVtcyBhcmUgYWRkZWQgaW4gYSBjZXJ0YWluIGFsZ29yaXRobSBpbiB0aGUgZm9ybSBvZiBtdWx0aXBsZXMgb2YgdGhpcyBudW1iZXIuIERlZmF1bHQgdmFsdWUgaXMgaGFsZiB0aGUgbnVtYmVyIG9mIGl0ZW1zIHNob3duIGluIHRoZSB2aWV3LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGdldCBudW1Ub2xlcmF0ZWRJdGVtcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX251bVRvbGVyYXRlZEl0ZW1zO1xuICAgIH1cbiAgICBzZXQgbnVtVG9sZXJhdGVkSXRlbXModmFsOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fbnVtVG9sZXJhdGVkSXRlbXMgPSB2YWw7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIERlZmluZXMgd2hldGhlciB0aGUgZGF0YSBpcyBsb2FkZWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZ2V0IGxvYWRpbmcoKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sb2FkaW5nO1xuICAgIH1cbiAgICBzZXQgbG9hZGluZyh2YWw6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5fbG9hZGluZyA9IHZhbDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB3aGV0aGVyIHRvIGR5bmFtaWNhbGx5IGNoYW5nZSB0aGUgaGVpZ2h0IG9yIHdpZHRoIG9mIHNjcm9sbGFibGUgY29udGFpbmVyLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGdldCBhdXRvU2l6ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG9TaXplO1xuICAgIH1cbiAgICBzZXQgYXV0b1NpemUodmFsOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2F1dG9TaXplID0gdmFsO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBGdW5jdGlvbiB0byBvcHRpbWl6ZSB0aGUgZG9tIG9wZXJhdGlvbnMgYnkgZGVsZWdhdGluZyB0byBuZ0ZvclRyYWNrQnksIGRlZmF1bHQgYWxnb3JpdG0gY2hlY2tzIGZvciBvYmplY3QgaWRlbnRpdHkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZ2V0IHRyYWNrQnkoKTogRnVuY3Rpb24ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHJhY2tCeTtcbiAgICB9XG4gICAgc2V0IHRyYWNrQnkodmFsOiBGdW5jdGlvbikge1xuICAgICAgICB0aGlzLl90cmFja0J5ID0gdmFsO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHdoZXRoZXIgdG8gdXNlIHRoZSBzY3JvbGxlciBmZWF0dXJlLiBUaGUgcHJvcGVydGllcyBvZiBzY3JvbGxlciBjb21wb25lbnQgY2FuIGJlIHVzZWQgbGlrZSBhbiBvYmplY3QgaW4gaXQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZ2V0IG9wdGlvbnMoKTogU2Nyb2xsZXJPcHRpb25zIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7XG4gICAgfVxuICAgIHNldCBvcHRpb25zKHZhbDogU2Nyb2xsZXJPcHRpb25zIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSB2YWw7XG5cbiAgICAgICAgaWYgKHZhbCAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyh2YWwpLmZvckVhY2goKFtrLCB2XSkgPT4gdGhpc1tgXyR7a31gXSAhPT0gdiAmJiAodGhpc1tgXyR7a31gXSA9IHYpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2UgaW4gbGF6eSBtb2RlIHRvIGxvYWQgbmV3IGRhdGEuXG4gICAgICogQHBhcmFtIHtTY3JvbGxlckxhenlMb2FkRXZlbnR9IGV2ZW50IC0gQ3VzdG9tIGxhenkgbG9hZCBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25MYXp5TG9hZDogRXZlbnRFbWl0dGVyPFNjcm9sbGVyTGF6eUxvYWRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFNjcm9sbGVyTGF6eUxvYWRFdmVudD4oKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBzY3JvbGwgcG9zaXRpb24gY2hhbmdlcy5cbiAgICAgKiBAcGFyYW0ge1Njcm9sbGVyU2Nyb2xsRXZlbnR9IGV2ZW50IC0gQ3VzdG9tIHNjcm9sbCBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25TY3JvbGw6IEV2ZW50RW1pdHRlcjxTY3JvbGxlclNjcm9sbEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8U2Nyb2xsZXJTY3JvbGxFdmVudD4oKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBzY3JvbGwgcG9zaXRpb24gYW5kIGl0ZW0ncyByYW5nZSBpbiB2aWV3IGNoYW5nZXMuXG4gICAgICogQHBhcmFtIHtTY3JvbGxlclNjcm9sbEV2ZW50fSBldmVudCAtIEN1c3RvbSBzY3JvbGwgaW5kZXggY2hhbmdlIGV2ZW50LlxuICAgICAqIEBncm91cCBFbWl0c1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvblNjcm9sbEluZGV4Q2hhbmdlOiBFdmVudEVtaXR0ZXI8U2Nyb2xsZXJTY3JvbGxJbmRleENoYW5nZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8U2Nyb2xsZXJTY3JvbGxJbmRleENoYW5nZUV2ZW50PigpO1xuXG4gICAgQFZpZXdDaGlsZCgnZWxlbWVudCcpIGVsZW1lbnRWaWV3Q2hpbGQ6IE51bGxhYmxlPEVsZW1lbnRSZWY+O1xuXG4gICAgQFZpZXdDaGlsZCgnY29udGVudCcpIGNvbnRlbnRWaWV3Q2hpbGQ6IE51bGxhYmxlPEVsZW1lbnRSZWY+O1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihDYXhUZW1wbGF0ZSkgdGVtcGxhdGVzOiBOdWxsYWJsZTxRdWVyeUxpc3Q8Q2F4VGVtcGxhdGU+PjtcblxuICAgIF9pZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgX3N0eWxlOiB7IFtrbGFzczogc3RyaW5nXTogYW55IH0gfCBudWxsIHwgdW5kZWZpbmVkO1xuXG4gICAgX3N0eWxlQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIF90YWJpbmRleDogbnVtYmVyID0gMDtcblxuICAgIF9pdGVtczogYW55W10gfCB1bmRlZmluZWQgfCBudWxsO1xuXG4gICAgX2l0ZW1TaXplOiBudW1iZXIgfCBudW1iZXJbXSA9IDA7XG5cbiAgICBfc2Nyb2xsSGVpZ2h0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBfc2Nyb2xsV2lkdGg6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIF9vcmllbnRhdGlvbjogJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJyB8ICdib3RoJyA9ICd2ZXJ0aWNhbCc7XG5cbiAgICBfc3RlcDogbnVtYmVyID0gMDtcblxuICAgIF9kZWxheTogbnVtYmVyID0gMDtcblxuICAgIF9yZXNpemVEZWxheTogbnVtYmVyID0gMTA7XG5cbiAgICBfYXBwZW5kT25seTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgX2lubGluZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgX2xhenk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIF9kaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgX2xvYWRlckRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBfY29sdW1uczogYW55W10gfCB1bmRlZmluZWQgfCBudWxsO1xuXG4gICAgX3Nob3dTcGFjZXI6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgX3Nob3dMb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIF9udW1Ub2xlcmF0ZWRJdGVtczogYW55O1xuXG4gICAgX2xvYWRpbmc6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgICBfYXV0b1NpemU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIF90cmFja0J5OiBhbnk7XG5cbiAgICBfb3B0aW9uczogU2Nyb2xsZXJPcHRpb25zIHwgdW5kZWZpbmVkO1xuXG4gICAgZF9sb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBkX251bVRvbGVyYXRlZEl0ZW1zOiBhbnk7XG5cbiAgICBjb250ZW50RWw6IGFueTtcblxuICAgIGNvbnRlbnRUZW1wbGF0ZTogTnVsbGFibGU8VGVtcGxhdGVSZWY8YW55Pj47XG5cbiAgICBpdGVtVGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgbG9hZGVyVGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgbG9hZGVySWNvblRlbXBsYXRlOiBOdWxsYWJsZTxUZW1wbGF0ZVJlZjxhbnk+PjtcblxuICAgIGZpcnN0OiBhbnkgPSAwO1xuXG4gICAgbGFzdDogYW55ID0gMDtcblxuICAgIHBhZ2U6IG51bWJlciA9IDA7XG5cbiAgICBpc1JhbmdlQ2hhbmdlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgbnVtSXRlbXNJblZpZXdwb3J0OiBhbnkgPSAwO1xuXG4gICAgbGFzdFNjcm9sbFBvczogYW55ID0gMDtcblxuICAgIGxhenlMb2FkU3RhdGU6IGFueSA9IHt9O1xuXG4gICAgbG9hZGVyQXJyOiBhbnlbXSA9IFtdO1xuXG4gICAgc3BhY2VyU3R5bGU6IHsgW2tsYXNzOiBzdHJpbmddOiBhbnkgfSB8IG51bGwgfCB1bmRlZmluZWQgPSB7fTtcblxuICAgIGNvbnRlbnRTdHlsZTogeyBba2xhc3M6IHN0cmluZ106IGFueSB9IHwgbnVsbCB8IHVuZGVmaW5lZCA9IHt9O1xuXG4gICAgc2Nyb2xsVGltZW91dDogYW55O1xuXG4gICAgcmVzaXplVGltZW91dDogYW55O1xuXG4gICAgaW5pdGlhbGl6ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHJlc2l6ZU9ic2VydmVyOiBhbnk7XG5cbiAgICBkZWZhdWx0V2lkdGg6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAgIGRlZmF1bHRIZWlnaHQ6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAgIGRlZmF1bHRDb250ZW50V2lkdGg6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAgIGRlZmF1bHRDb250ZW50SGVpZ2h0OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgICBnZXQgdmVydGljYWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJztcbiAgICB9XG5cbiAgICBnZXQgaG9yaXpvbnRhbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCc7XG4gICAgfVxuXG4gICAgZ2V0IGJvdGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcmllbnRhdGlvbiA9PT0gJ2JvdGgnO1xuICAgIH1cblxuICAgIGdldCBsb2FkZWRJdGVtcygpIHtcbiAgICAgICAgaWYgKHRoaXMuX2l0ZW1zICYmICF0aGlzLmRfbG9hZGluZykge1xuICAgICAgICAgICAgaWYgKHRoaXMuYm90aCkgcmV0dXJuIHRoaXMuX2l0ZW1zLnNsaWNlKHRoaXMuX2FwcGVuZE9ubHkgPyAwIDogdGhpcy5maXJzdC5yb3dzLCB0aGlzLmxhc3Qucm93cykubWFwKChpdGVtKSA9PiAodGhpcy5fY29sdW1ucyA/IGl0ZW0gOiBpdGVtLnNsaWNlKHRoaXMuX2FwcGVuZE9ubHkgPyAwIDogdGhpcy5maXJzdC5jb2xzLCB0aGlzLmxhc3QuY29scykpKTtcbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuaG9yaXpvbnRhbCAmJiB0aGlzLl9jb2x1bW5zKSByZXR1cm4gdGhpcy5faXRlbXM7XG4gICAgICAgICAgICBlbHNlIHJldHVybiB0aGlzLl9pdGVtcy5zbGljZSh0aGlzLl9hcHBlbmRPbmx5ID8gMCA6IHRoaXMuZmlyc3QsIHRoaXMubGFzdCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgZ2V0IGxvYWRlZFJvd3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRfbG9hZGluZyA/ICh0aGlzLl9sb2FkZXJEaXNhYmxlZCA/IHRoaXMubG9hZGVyQXJyIDogW10pIDogdGhpcy5sb2FkZWRJdGVtcztcbiAgICB9XG5cbiAgICBnZXQgbG9hZGVkQ29sdW1ucygpIHtcbiAgICAgICAgaWYgKHRoaXMuX2NvbHVtbnMgJiYgKHRoaXMuYm90aCB8fCB0aGlzLmhvcml6b250YWwpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kX2xvYWRpbmcgJiYgdGhpcy5fbG9hZGVyRGlzYWJsZWQgPyAodGhpcy5ib3RoID8gdGhpcy5sb2FkZXJBcnJbMF0gOiB0aGlzLmxvYWRlckFycikgOiB0aGlzLl9jb2x1bW5zLnNsaWNlKHRoaXMuYm90aCA/IHRoaXMuZmlyc3QuY29scyA6IHRoaXMuZmlyc3QsIHRoaXMuYm90aCA/IHRoaXMubGFzdC5jb2xzIDogdGhpcy5sYXN0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9jb2x1bW5zO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICAgICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBhbnksXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgem9uZTogTmdab25lXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuc2V0SW5pdGlhbFN0YXRlKCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoc2ltcGxlQ2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBsZXQgaXNMb2FkaW5nQ2hhbmdlZCA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChzaW1wbGVDaGFuZ2VzLmxvYWRpbmcpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgcHJldmlvdXNWYWx1ZSwgY3VycmVudFZhbHVlIH0gPSBzaW1wbGVDaGFuZ2VzLmxvYWRpbmc7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmxhenkgJiYgcHJldmlvdXNWYWx1ZSAhPT0gY3VycmVudFZhbHVlICYmIGN1cnJlbnRWYWx1ZSAhPT0gdGhpcy5kX2xvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRfbG9hZGluZyA9IGN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgICAgICBpc0xvYWRpbmdDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzaW1wbGVDaGFuZ2VzLm9yaWVudGF0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmxhc3RTY3JvbGxQb3MgPSB0aGlzLmJvdGggPyB7IHRvcDogMCwgbGVmdDogMCB9IDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzaW1wbGVDaGFuZ2VzLm51bVRvbGVyYXRlZEl0ZW1zKSB7XG4gICAgICAgICAgICBjb25zdCB7IHByZXZpb3VzVmFsdWUsIGN1cnJlbnRWYWx1ZSB9ID0gc2ltcGxlQ2hhbmdlcy5udW1Ub2xlcmF0ZWRJdGVtcztcblxuICAgICAgICAgICAgaWYgKHByZXZpb3VzVmFsdWUgIT09IGN1cnJlbnRWYWx1ZSAmJiBjdXJyZW50VmFsdWUgIT09IHRoaXMuZF9udW1Ub2xlcmF0ZWRJdGVtcykge1xuICAgICAgICAgICAgICAgIHRoaXMuZF9udW1Ub2xlcmF0ZWRJdGVtcyA9IGN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzaW1wbGVDaGFuZ2VzLm9wdGlvbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgcHJldmlvdXNWYWx1ZSwgY3VycmVudFZhbHVlIH0gPSBzaW1wbGVDaGFuZ2VzLm9wdGlvbnM7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmxhenkgJiYgcHJldmlvdXNWYWx1ZT8ubG9hZGluZyAhPT0gY3VycmVudFZhbHVlPy5sb2FkaW5nICYmIGN1cnJlbnRWYWx1ZT8ubG9hZGluZyAhPT0gdGhpcy5kX2xvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRfbG9hZGluZyA9IGN1cnJlbnRWYWx1ZS5sb2FkaW5nO1xuICAgICAgICAgICAgICAgIGlzTG9hZGluZ0NoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocHJldmlvdXNWYWx1ZT8ubnVtVG9sZXJhdGVkSXRlbXMgIT09IGN1cnJlbnRWYWx1ZT8ubnVtVG9sZXJhdGVkSXRlbXMgJiYgY3VycmVudFZhbHVlPy5udW1Ub2xlcmF0ZWRJdGVtcyAhPT0gdGhpcy5kX251bVRvbGVyYXRlZEl0ZW1zKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kX251bVRvbGVyYXRlZEl0ZW1zID0gY3VycmVudFZhbHVlLm51bVRvbGVyYXRlZEl0ZW1zO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzQ2hhbmdlZCA9ICFpc0xvYWRpbmdDaGFuZ2VkICYmIChzaW1wbGVDaGFuZ2VzLml0ZW1zPy5wcmV2aW91c1ZhbHVlPy5sZW5ndGggIT09IHNpbXBsZUNoYW5nZXMuaXRlbXM/LmN1cnJlbnRWYWx1ZT8ubGVuZ3RoIHx8IHNpbXBsZUNoYW5nZXMuaXRlbVNpemUgfHwgc2ltcGxlQ2hhbmdlcy5zY3JvbGxIZWlnaHQgfHwgc2ltcGxlQ2hhbmdlcy5zY3JvbGxXaWR0aCk7XG5cbiAgICAgICAgICAgIGlmIChpc0NoYW5nZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZUF1dG9TaXplKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgICh0aGlzLnRlbXBsYXRlcyBhcyBRdWVyeUxpc3Q8Q2F4VGVtcGxhdGU+KS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2ggKGl0ZW0uZ2V0VHlwZSgpKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnY29udGVudCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdpdGVtJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2xvYWRlcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2xvYWRlcmljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRlckljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudmlld0luaXQoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgICAgICBpZiAoIXRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHRoaXMudmlld0luaXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnVuYmluZFJlc2l6ZUxpc3RlbmVyKCk7XG5cbiAgICAgICAgdGhpcy5jb250ZW50RWwgPSBudWxsO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdmlld0luaXQoKSB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpICYmICF0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICBpZiAoRG9tSGFuZGxlci5pc1Zpc2libGUodGhpcy5lbGVtZW50Vmlld0NoaWxkPy5uYXRpdmVFbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0SW5pdGlhbFN0YXRlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRDb250ZW50RWwodGhpcy5jb250ZW50RWwpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlQXV0b1NpemUoKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdFdpZHRoID0gRG9tSGFuZGxlci5nZXRXaWR0aCh0aGlzLmVsZW1lbnRWaWV3Q2hpbGQ/Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdEhlaWdodCA9IERvbUhhbmRsZXIuZ2V0SGVpZ2h0KHRoaXMuZWxlbWVudFZpZXdDaGlsZD8ubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0Q29udGVudFdpZHRoID0gRG9tSGFuZGxlci5nZXRXaWR0aCh0aGlzLmNvbnRlbnRFbCk7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0Q29udGVudEhlaWdodCA9IERvbUhhbmRsZXIuZ2V0SGVpZ2h0KHRoaXMuY29udGVudEVsKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKCgpID0+IHRoaXMub25SZXNpemUoKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuZWxlbWVudFZpZXdDaGlsZD8ubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbml0KCkge1xuICAgICAgICBpZiAoIXRoaXMuX2Rpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLnNldFNpemUoKTtcbiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlT3B0aW9ucygpO1xuICAgICAgICAgICAgdGhpcy5zZXRTcGFjZXJTaXplKCk7XG5cbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0Q29udGVudEVsKGVsPzogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5jb250ZW50RWwgPSBlbCB8fCB0aGlzLmNvbnRlbnRWaWV3Q2hpbGQ/Lm5hdGl2ZUVsZW1lbnQgfHwgRG9tSGFuZGxlci5maW5kU2luZ2xlKHRoaXMuZWxlbWVudFZpZXdDaGlsZD8ubmF0aXZlRWxlbWVudCwgJy5jYXgtc2Nyb2xsZXItY29udGVudCcpO1xuICAgIH1cblxuICAgIHNldEluaXRpYWxTdGF0ZSgpIHtcbiAgICAgICAgdGhpcy5maXJzdCA9IHRoaXMuYm90aCA/IHsgcm93czogMCwgY29sczogMCB9IDogMDtcbiAgICAgICAgdGhpcy5sYXN0ID0gdGhpcy5ib3RoID8geyByb3dzOiAwLCBjb2xzOiAwIH0gOiAwO1xuICAgICAgICB0aGlzLm51bUl0ZW1zSW5WaWV3cG9ydCA9IHRoaXMuYm90aCA/IHsgcm93czogMCwgY29sczogMCB9IDogMDtcbiAgICAgICAgdGhpcy5sYXN0U2Nyb2xsUG9zID0gdGhpcy5ib3RoID8geyB0b3A6IDAsIGxlZnQ6IDAgfSA6IDA7XG4gICAgICAgIHRoaXMuZF9sb2FkaW5nID0gdGhpcy5fbG9hZGluZyB8fCBmYWxzZTtcbiAgICAgICAgdGhpcy5kX251bVRvbGVyYXRlZEl0ZW1zID0gdGhpcy5fbnVtVG9sZXJhdGVkSXRlbXM7XG4gICAgICAgIHRoaXMubG9hZGVyQXJyID0gW107XG4gICAgICAgIHRoaXMuc3BhY2VyU3R5bGUgPSB7fTtcbiAgICAgICAgdGhpcy5jb250ZW50U3R5bGUgPSB7fTtcbiAgICB9XG5cbiAgICBnZXRFbGVtZW50UmVmKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50Vmlld0NoaWxkO1xuICAgIH1cblxuICAgIGdldFBhZ2VCeUZpcnN0KGZpcnN0PzogYW55KSB7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKCgoZmlyc3QgPz8gdGhpcy5maXJzdCkgKyB0aGlzLmRfbnVtVG9sZXJhdGVkSXRlbXMgKiA0KSAvICh0aGlzLl9zdGVwIHx8IDEpKTtcbiAgICB9XG5cbiAgICBpc1BhZ2VDaGFuZ2VkKGZpcnN0PzogYW55KSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGVwID8gdGhpcy5wYWdlICE9PSB0aGlzLmdldFBhZ2VCeUZpcnN0KGZpcnN0ID8/IHRoaXMuZmlyc3QpIDogdHJ1ZTtcbiAgICB9XG5cbiAgICBzY3JvbGxUbyhvcHRpb25zOiBTY3JvbGxUb09wdGlvbnMpIHtcbiAgICAgICAgLy8gdGhpcy5sYXN0U2Nyb2xsUG9zID0gdGhpcy5ib3RoID8geyB0b3A6IDAsIGxlZnQ6IDAgfSA6IDA7XG4gICAgICAgIHRoaXMuZWxlbWVudFZpZXdDaGlsZD8ubmF0aXZlRWxlbWVudD8uc2Nyb2xsVG8ob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgc2Nyb2xsVG9JbmRleChpbmRleDogbnVtYmVyIHwgbnVtYmVyW10sIGJlaGF2aW9yOiBTY3JvbGxCZWhhdmlvciA9ICdhdXRvJykge1xuICAgICAgICBjb25zdCB2YWxpZCA9IHRoaXMuYm90aCA/IChpbmRleCBhcyBudW1iZXJbXSkuZXZlcnkoKGkpID0+IGkgPiAtMSkgOiAoaW5kZXggYXMgbnVtYmVyKSA+IC0xO1xuXG4gICAgICAgIGlmICh2YWxpZCkge1xuICAgICAgICAgICAgY29uc3QgZmlyc3QgPSB0aGlzLmZpcnN0O1xuICAgICAgICAgICAgY29uc3QgeyBzY3JvbGxUb3AgPSAwLCBzY3JvbGxMZWZ0ID0gMCB9ID0gdGhpcy5lbGVtZW50Vmlld0NoaWxkPy5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgY29uc3QgeyBudW1Ub2xlcmF0ZWRJdGVtcyB9ID0gdGhpcy5jYWxjdWxhdGVOdW1JdGVtcygpO1xuICAgICAgICAgICAgY29uc3QgY29udGVudFBvcyA9IHRoaXMuZ2V0Q29udGVudFBvc2l0aW9uKCk7XG4gICAgICAgICAgICBjb25zdCBpdGVtU2l6ZSA9IHRoaXMuaXRlbVNpemU7XG4gICAgICAgICAgICBjb25zdCBjYWxjdWxhdGVGaXJzdCA9IChfaW5kZXggPSAwLCBfbnVtVCkgPT4gKF9pbmRleCA8PSBfbnVtVCA/IDAgOiBfaW5kZXgpO1xuICAgICAgICAgICAgY29uc3QgY2FsY3VsYXRlQ29vcmQgPSAoX2ZpcnN0LCBfc2l6ZSwgX2Nwb3MpID0+IF9maXJzdCAqIF9zaXplICsgX2Nwb3M7XG4gICAgICAgICAgICBjb25zdCBzY3JvbGxUbyA9IChsZWZ0ID0gMCwgdG9wID0gMCkgPT4gdGhpcy5zY3JvbGxUbyh7IGxlZnQsIHRvcCwgYmVoYXZpb3IgfSk7XG4gICAgICAgICAgICBsZXQgbmV3Rmlyc3QgPSB0aGlzLmJvdGggPyB7IHJvd3M6IDAsIGNvbHM6IDAgfSA6IDA7XG4gICAgICAgICAgICBsZXQgaXNSYW5nZUNoYW5nZWQgPSBmYWxzZSxcbiAgICAgICAgICAgICAgICBpc1Njcm9sbENoYW5nZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuYm90aCkge1xuICAgICAgICAgICAgICAgIG5ld0ZpcnN0ID0geyByb3dzOiBjYWxjdWxhdGVGaXJzdChpbmRleFswXSwgbnVtVG9sZXJhdGVkSXRlbXNbMF0pLCBjb2xzOiBjYWxjdWxhdGVGaXJzdChpbmRleFsxXSwgbnVtVG9sZXJhdGVkSXRlbXNbMV0pIH07XG4gICAgICAgICAgICAgICAgc2Nyb2xsVG8oY2FsY3VsYXRlQ29vcmQobmV3Rmlyc3QuY29scywgaXRlbVNpemVbMV0sIGNvbnRlbnRQb3MubGVmdCksIGNhbGN1bGF0ZUNvb3JkKG5ld0ZpcnN0LnJvd3MsIGl0ZW1TaXplWzBdLCBjb250ZW50UG9zLnRvcCkpO1xuICAgICAgICAgICAgICAgIGlzU2Nyb2xsQ2hhbmdlZCA9IHRoaXMubGFzdFNjcm9sbFBvcy50b3AgIT09IHNjcm9sbFRvcCB8fCB0aGlzLmxhc3RTY3JvbGxQb3MubGVmdCAhPT0gc2Nyb2xsTGVmdDtcbiAgICAgICAgICAgICAgICBpc1JhbmdlQ2hhbmdlZCA9IG5ld0ZpcnN0LnJvd3MgIT09IGZpcnN0LnJvd3MgfHwgbmV3Rmlyc3QuY29scyAhPT0gZmlyc3QuY29scztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbmV3Rmlyc3QgPSBjYWxjdWxhdGVGaXJzdChpbmRleCBhcyBudW1iZXIsIG51bVRvbGVyYXRlZEl0ZW1zKTtcbiAgICAgICAgICAgICAgICB0aGlzLmhvcml6b250YWwgPyBzY3JvbGxUbyhjYWxjdWxhdGVDb29yZChuZXdGaXJzdCwgaXRlbVNpemUsIGNvbnRlbnRQb3MubGVmdCksIHNjcm9sbFRvcCkgOiBzY3JvbGxUbyhzY3JvbGxMZWZ0LCBjYWxjdWxhdGVDb29yZChuZXdGaXJzdCwgaXRlbVNpemUsIGNvbnRlbnRQb3MudG9wKSk7XG4gICAgICAgICAgICAgICAgaXNTY3JvbGxDaGFuZ2VkID0gdGhpcy5sYXN0U2Nyb2xsUG9zICE9PSAodGhpcy5ob3Jpem9udGFsID8gc2Nyb2xsTGVmdCA6IHNjcm9sbFRvcCk7XG4gICAgICAgICAgICAgICAgaXNSYW5nZUNoYW5nZWQgPSBuZXdGaXJzdCAhPT0gZmlyc3Q7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuaXNSYW5nZUNoYW5nZWQgPSBpc1JhbmdlQ2hhbmdlZDtcbiAgICAgICAgICAgIGlzU2Nyb2xsQ2hhbmdlZCAmJiAodGhpcy5maXJzdCA9IG5ld0ZpcnN0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNjcm9sbEluVmlldyhpbmRleDogbnVtYmVyLCB0bzogU2Nyb2xsZXJUb1R5cGUsIGJlaGF2aW9yOiBTY3JvbGxCZWhhdmlvciA9ICdhdXRvJykge1xuICAgICAgICBpZiAodG8pIHtcbiAgICAgICAgICAgIGNvbnN0IHsgZmlyc3QsIHZpZXdwb3J0IH0gPSB0aGlzLmdldFJlbmRlcmVkUmFuZ2UoKTtcbiAgICAgICAgICAgIGNvbnN0IHNjcm9sbFRvID0gKGxlZnQgPSAwLCB0b3AgPSAwKSA9PiB0aGlzLnNjcm9sbFRvKHsgbGVmdCwgdG9wLCBiZWhhdmlvciB9KTtcbiAgICAgICAgICAgIGNvbnN0IGlzVG9TdGFydCA9IHRvID09PSAndG8tc3RhcnQnO1xuICAgICAgICAgICAgY29uc3QgaXNUb0VuZCA9IHRvID09PSAndG8tZW5kJztcblxuICAgICAgICAgICAgaWYgKGlzVG9TdGFydCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmJvdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZpZXdwb3J0LmZpcnN0LnJvd3MgLSBmaXJzdC5yb3dzID4gKDxhbnk+aW5kZXgpWzBdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUbyh2aWV3cG9ydC5maXJzdC5jb2xzICogKDxudW1iZXJbXT50aGlzLl9pdGVtU2l6ZSlbMV0sICh2aWV3cG9ydC5maXJzdC5yb3dzIC0gMSkgKiAoPG51bWJlcltdPnRoaXMuX2l0ZW1TaXplKVswXSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmlld3BvcnQuZmlyc3QuY29scyAtIGZpcnN0LmNvbHMgPiAoPGFueT5pbmRleClbMV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbFRvKCh2aWV3cG9ydC5maXJzdC5jb2xzIC0gMSkgKiAoPG51bWJlcltdPnRoaXMuX2l0ZW1TaXplKVsxXSwgdmlld3BvcnQuZmlyc3Qucm93cyAqICg8bnVtYmVyW10+dGhpcy5faXRlbVNpemUpWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2aWV3cG9ydC5maXJzdCAtIGZpcnN0ID4gaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvcyA9ICh2aWV3cG9ydC5maXJzdCAtIDEpICogPG51bWJlcj50aGlzLl9pdGVtU2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaG9yaXpvbnRhbCA/IHNjcm9sbFRvKHBvcywgMCkgOiBzY3JvbGxUbygwLCBwb3MpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChpc1RvRW5kKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYm90aCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodmlld3BvcnQubGFzdC5yb3dzIC0gZmlyc3Qucm93cyA8PSAoPGFueT5pbmRleClbMF0gKyAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUbyh2aWV3cG9ydC5maXJzdC5jb2xzICogKDxudW1iZXJbXT50aGlzLl9pdGVtU2l6ZSlbMV0sICh2aWV3cG9ydC5maXJzdC5yb3dzICsgMSkgKiAoPG51bWJlcltdPnRoaXMuX2l0ZW1TaXplKVswXSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmlld3BvcnQubGFzdC5jb2xzIC0gZmlyc3QuY29scyA8PSAoPGFueT5pbmRleClbMV0gKyAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUbygodmlld3BvcnQuZmlyc3QuY29scyArIDEpICogKDxudW1iZXJbXT50aGlzLl9pdGVtU2l6ZSlbMV0sIHZpZXdwb3J0LmZpcnN0LnJvd3MgKiAoPG51bWJlcltdPnRoaXMuX2l0ZW1TaXplKVswXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodmlld3BvcnQubGFzdCAtIGZpcnN0IDw9IGluZGV4ICsgMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9zID0gKHZpZXdwb3J0LmZpcnN0ICsgMSkgKiA8bnVtYmVyPnRoaXMuX2l0ZW1TaXplO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ob3Jpem9udGFsID8gc2Nyb2xsVG8ocG9zLCAwKSA6IHNjcm9sbFRvKDAsIHBvcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbFRvSW5kZXgoaW5kZXgsIGJlaGF2aW9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFJlbmRlcmVkUmFuZ2UoKSB7XG4gICAgICAgIGNvbnN0IGNhbGN1bGF0ZUZpcnN0SW5WaWV3cG9ydCA9IChfcG9zOiBudW1iZXIsIF9zaXplOiBudW1iZXIpID0+IChfc2l6ZSB8fCBfcG9zID8gTWF0aC5mbG9vcihfcG9zIC8gKF9zaXplIHx8IF9wb3MpKSA6IDApO1xuXG4gICAgICAgIGxldCBmaXJzdEluVmlld3BvcnQgPSB0aGlzLmZpcnN0O1xuICAgICAgICBsZXQgbGFzdEluVmlld3BvcnQ6IGFueSA9IDA7XG5cbiAgICAgICAgaWYgKHRoaXMuZWxlbWVudFZpZXdDaGlsZD8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbExlZnQgfSA9IHRoaXMuZWxlbWVudFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgICAgICBpZiAodGhpcy5ib3RoKSB7XG4gICAgICAgICAgICAgICAgZmlyc3RJblZpZXdwb3J0ID0geyByb3dzOiBjYWxjdWxhdGVGaXJzdEluVmlld3BvcnQoc2Nyb2xsVG9wLCAoPG51bWJlcltdPnRoaXMuX2l0ZW1TaXplKVswXSksIGNvbHM6IGNhbGN1bGF0ZUZpcnN0SW5WaWV3cG9ydChzY3JvbGxMZWZ0LCAoPG51bWJlcltdPnRoaXMuX2l0ZW1TaXplKVsxXSkgfTtcbiAgICAgICAgICAgICAgICBsYXN0SW5WaWV3cG9ydCA9IHsgcm93czogZmlyc3RJblZpZXdwb3J0LnJvd3MgKyB0aGlzLm51bUl0ZW1zSW5WaWV3cG9ydC5yb3dzLCBjb2xzOiBmaXJzdEluVmlld3BvcnQuY29scyArIHRoaXMubnVtSXRlbXNJblZpZXdwb3J0LmNvbHMgfTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2Nyb2xsUG9zID0gdGhpcy5ob3Jpem9udGFsID8gc2Nyb2xsTGVmdCA6IHNjcm9sbFRvcDtcbiAgICAgICAgICAgICAgICBmaXJzdEluVmlld3BvcnQgPSBjYWxjdWxhdGVGaXJzdEluVmlld3BvcnQoc2Nyb2xsUG9zLCA8bnVtYmVyPnRoaXMuX2l0ZW1TaXplKTtcbiAgICAgICAgICAgICAgICBsYXN0SW5WaWV3cG9ydCA9IGZpcnN0SW5WaWV3cG9ydCArIHRoaXMubnVtSXRlbXNJblZpZXdwb3J0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZpcnN0OiB0aGlzLmZpcnN0LFxuICAgICAgICAgICAgbGFzdDogdGhpcy5sYXN0LFxuICAgICAgICAgICAgdmlld3BvcnQ6IHtcbiAgICAgICAgICAgICAgICBmaXJzdDogZmlyc3RJblZpZXdwb3J0LFxuICAgICAgICAgICAgICAgIGxhc3Q6IGxhc3RJblZpZXdwb3J0XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgY2FsY3VsYXRlTnVtSXRlbXMoKSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnRQb3MgPSB0aGlzLmdldENvbnRlbnRQb3NpdGlvbigpO1xuICAgICAgICBjb25zdCBjb250ZW50V2lkdGggPSAodGhpcy5lbGVtZW50Vmlld0NoaWxkPy5uYXRpdmVFbGVtZW50ID8gdGhpcy5lbGVtZW50Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggLSBjb250ZW50UG9zLmxlZnQgOiAwKSB8fCAwO1xuICAgICAgICBjb25zdCBjb250ZW50SGVpZ2h0ID0gKHRoaXMuZWxlbWVudFZpZXdDaGlsZD8ubmF0aXZlRWxlbWVudCA/IHRoaXMuZWxlbWVudFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCAtIGNvbnRlbnRQb3MudG9wIDogMCkgfHwgMDtcbiAgICAgICAgY29uc3QgY2FsY3VsYXRlTnVtSXRlbXNJblZpZXdwb3J0ID0gKF9jb250ZW50U2l6ZTogbnVtYmVyLCBfaXRlbVNpemU6IG51bWJlcikgPT4gKF9pdGVtU2l6ZSB8fCBfY29udGVudFNpemUgPyBNYXRoLmNlaWwoX2NvbnRlbnRTaXplIC8gKF9pdGVtU2l6ZSB8fCBfY29udGVudFNpemUpKSA6IDApO1xuICAgICAgICBjb25zdCBjYWxjdWxhdGVOdW1Ub2xlcmF0ZWRJdGVtcyA9IChfbnVtSXRlbXM6IG51bWJlcikgPT4gTWF0aC5jZWlsKF9udW1JdGVtcyAvIDIpO1xuICAgICAgICBjb25zdCBudW1JdGVtc0luVmlld3BvcnQ6IGFueSA9IHRoaXMuYm90aFxuICAgICAgICAgICAgPyB7IHJvd3M6IGNhbGN1bGF0ZU51bUl0ZW1zSW5WaWV3cG9ydChjb250ZW50SGVpZ2h0LCAoPG51bWJlcltdPnRoaXMuX2l0ZW1TaXplKVswXSksIGNvbHM6IGNhbGN1bGF0ZU51bUl0ZW1zSW5WaWV3cG9ydChjb250ZW50V2lkdGgsICg8bnVtYmVyW10+dGhpcy5faXRlbVNpemUpWzFdKSB9XG4gICAgICAgICAgICA6IGNhbGN1bGF0ZU51bUl0ZW1zSW5WaWV3cG9ydCh0aGlzLmhvcml6b250YWwgPyBjb250ZW50V2lkdGggOiBjb250ZW50SGVpZ2h0LCA8bnVtYmVyPnRoaXMuX2l0ZW1TaXplKTtcblxuICAgICAgICBjb25zdCBudW1Ub2xlcmF0ZWRJdGVtcyA9IHRoaXMuZF9udW1Ub2xlcmF0ZWRJdGVtcyB8fCAodGhpcy5ib3RoID8gW2NhbGN1bGF0ZU51bVRvbGVyYXRlZEl0ZW1zKG51bUl0ZW1zSW5WaWV3cG9ydC5yb3dzKSwgY2FsY3VsYXRlTnVtVG9sZXJhdGVkSXRlbXMobnVtSXRlbXNJblZpZXdwb3J0LmNvbHMpXSA6IGNhbGN1bGF0ZU51bVRvbGVyYXRlZEl0ZW1zKG51bUl0ZW1zSW5WaWV3cG9ydCkpO1xuXG4gICAgICAgIHJldHVybiB7IG51bUl0ZW1zSW5WaWV3cG9ydCwgbnVtVG9sZXJhdGVkSXRlbXMgfTtcbiAgICB9XG5cbiAgICBjYWxjdWxhdGVPcHRpb25zKCkge1xuICAgICAgICBjb25zdCB7IG51bUl0ZW1zSW5WaWV3cG9ydCwgbnVtVG9sZXJhdGVkSXRlbXMgfSA9IHRoaXMuY2FsY3VsYXRlTnVtSXRlbXMoKTtcbiAgICAgICAgY29uc3QgY2FsY3VsYXRlTGFzdCA9IChfZmlyc3Q6IG51bWJlciwgX251bTogbnVtYmVyLCBfbnVtVDogbnVtYmVyLCBfaXNDb2xzOiBib29sZWFuID0gZmFsc2UpID0+IHRoaXMuZ2V0TGFzdChfZmlyc3QgKyBfbnVtICsgKF9maXJzdCA8IF9udW1UID8gMiA6IDMpICogX251bVQsIF9pc0NvbHMpO1xuICAgICAgICBjb25zdCBmaXJzdCA9IHRoaXMuZmlyc3Q7XG4gICAgICAgIGNvbnN0IGxhc3QgPSB0aGlzLmJvdGhcbiAgICAgICAgICAgID8geyByb3dzOiBjYWxjdWxhdGVMYXN0KHRoaXMuZmlyc3Qucm93cywgbnVtSXRlbXNJblZpZXdwb3J0LnJvd3MsIG51bVRvbGVyYXRlZEl0ZW1zWzBdKSwgY29sczogY2FsY3VsYXRlTGFzdCh0aGlzLmZpcnN0LmNvbHMsIG51bUl0ZW1zSW5WaWV3cG9ydC5jb2xzLCBudW1Ub2xlcmF0ZWRJdGVtc1sxXSwgdHJ1ZSkgfVxuICAgICAgICAgICAgOiBjYWxjdWxhdGVMYXN0KHRoaXMuZmlyc3QsIG51bUl0ZW1zSW5WaWV3cG9ydCwgbnVtVG9sZXJhdGVkSXRlbXMpO1xuXG4gICAgICAgIHRoaXMubGFzdCA9IGxhc3Q7XG4gICAgICAgIHRoaXMubnVtSXRlbXNJblZpZXdwb3J0ID0gbnVtSXRlbXNJblZpZXdwb3J0O1xuICAgICAgICB0aGlzLmRfbnVtVG9sZXJhdGVkSXRlbXMgPSBudW1Ub2xlcmF0ZWRJdGVtcztcblxuICAgICAgICBpZiAodGhpcy5zaG93TG9hZGVyKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRlckFyciA9IHRoaXMuYm90aCA/IEFycmF5LmZyb20oeyBsZW5ndGg6IG51bUl0ZW1zSW5WaWV3cG9ydC5yb3dzIH0pLm1hcCgoKSA9PiBBcnJheS5mcm9tKHsgbGVuZ3RoOiBudW1JdGVtc0luVmlld3BvcnQuY29scyB9KSkgOiBBcnJheS5mcm9tKHsgbGVuZ3RoOiBudW1JdGVtc0luVmlld3BvcnQgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fbGF6eSkge1xuICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXp5TG9hZFN0YXRlID0ge1xuICAgICAgICAgICAgICAgICAgICBmaXJzdDogdGhpcy5fc3RlcCA/ICh0aGlzLmJvdGggPyB7IHJvd3M6IDAsIGNvbHM6IGZpcnN0LmNvbHMgfSA6IDApIDogZmlyc3QsXG4gICAgICAgICAgICAgICAgICAgIGxhc3Q6IE1hdGgubWluKHRoaXMuX3N0ZXAgPyB0aGlzLl9zdGVwIDogdGhpcy5sYXN0LCAoPGFueVtdPnRoaXMuaXRlbXMpLmxlbmd0aClcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVFdmVudHMoJ29uTGF6eUxvYWQnLCB0aGlzLmxhenlMb2FkU3RhdGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjYWxjdWxhdGVBdXRvU2l6ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuX2F1dG9TaXplICYmICF0aGlzLmRfbG9hZGluZykge1xuICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udGVudEVsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudEVsLnN0eWxlLm1pbkhlaWdodCA9IHRoaXMuY29udGVudEVsLnN0eWxlLm1pbldpZHRoID0gJ2F1dG8nO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRFbC5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7XG4gICAgICAgICAgICAgICAgICAgICg8RWxlbWVudFJlZj50aGlzLmVsZW1lbnRWaWV3Q2hpbGQpLm5hdGl2ZUVsZW1lbnQuc3R5bGUuY29udGFpbiA9ICdub25lJztcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBbY29udGVudFdpZHRoLCBjb250ZW50SGVpZ2h0XSA9IFtEb21IYW5kbGVyLmdldFdpZHRoKHRoaXMuY29udGVudEVsKSwgRG9tSGFuZGxlci5nZXRIZWlnaHQodGhpcy5jb250ZW50RWwpXTtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudFdpZHRoICE9PSB0aGlzLmRlZmF1bHRDb250ZW50V2lkdGggJiYgKCg8RWxlbWVudFJlZj50aGlzLmVsZW1lbnRWaWV3Q2hpbGQpLm5hdGl2ZUVsZW1lbnQuc3R5bGUud2lkdGggPSAnJyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRIZWlnaHQgIT09IHRoaXMuZGVmYXVsdENvbnRlbnRIZWlnaHQgJiYgKCg8RWxlbWVudFJlZj50aGlzLmVsZW1lbnRWaWV3Q2hpbGQpLm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gJycpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IFt3aWR0aCwgaGVpZ2h0XSA9IFtEb21IYW5kbGVyLmdldFdpZHRoKCg8RWxlbWVudFJlZj50aGlzLmVsZW1lbnRWaWV3Q2hpbGQpLm5hdGl2ZUVsZW1lbnQpLCBEb21IYW5kbGVyLmdldEhlaWdodCgoPEVsZW1lbnRSZWY+dGhpcy5lbGVtZW50Vmlld0NoaWxkKS5uYXRpdmVFbGVtZW50KV07XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmJvdGggfHwgdGhpcy5ob3Jpem9udGFsKSAmJiAoKDxFbGVtZW50UmVmPnRoaXMuZWxlbWVudFZpZXdDaGlsZCkubmF0aXZlRWxlbWVudC5zdHlsZS53aWR0aCA9IHdpZHRoIDwgPG51bWJlcj50aGlzLmRlZmF1bHRXaWR0aCA/IHdpZHRoICsgJ3B4JyA6IHRoaXMuX3Njcm9sbFdpZHRoIHx8IHRoaXMuZGVmYXVsdFdpZHRoICsgJ3B4Jyk7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmJvdGggfHwgdGhpcy52ZXJ0aWNhbCkgJiYgKCg8RWxlbWVudFJlZj50aGlzLmVsZW1lbnRWaWV3Q2hpbGQpLm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0IDwgPG51bWJlcj50aGlzLmRlZmF1bHRIZWlnaHQgPyBoZWlnaHQgKyAncHgnIDogdGhpcy5fc2Nyb2xsSGVpZ2h0IHx8IHRoaXMuZGVmYXVsdEhlaWdodCArICdweCcpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudEVsLnN0eWxlLm1pbkhlaWdodCA9IHRoaXMuY29udGVudEVsLnN0eWxlLm1pbldpZHRoID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudEVsLnN0eWxlLnBvc2l0aW9uID0gJyc7XG4gICAgICAgICAgICAgICAgICAgICg8RWxlbWVudFJlZj50aGlzLmVsZW1lbnRWaWV3Q2hpbGQpLm5hdGl2ZUVsZW1lbnQuc3R5bGUuY29udGFpbiA9ICcnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0TGFzdChsYXN0ID0gMCwgaXNDb2xzID0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zID8gTWF0aC5taW4oaXNDb2xzID8gKHRoaXMuX2NvbHVtbnMgfHwgdGhpcy5faXRlbXNbMF0pLmxlbmd0aCA6IHRoaXMuX2l0ZW1zLmxlbmd0aCwgbGFzdCkgOiAwO1xuICAgIH1cblxuICAgIGdldENvbnRlbnRQb3NpdGlvbigpIHtcbiAgICAgICAgaWYgKHRoaXMuY29udGVudEVsKSB7XG4gICAgICAgICAgICBjb25zdCBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUodGhpcy5jb250ZW50RWwpO1xuICAgICAgICAgICAgY29uc3QgbGVmdCA9IHBhcnNlRmxvYXQoc3R5bGUucGFkZGluZ0xlZnQpICsgTWF0aC5tYXgocGFyc2VGbG9hdChzdHlsZS5sZWZ0KSB8fCAwLCAwKTtcbiAgICAgICAgICAgIGNvbnN0IHJpZ2h0ID0gcGFyc2VGbG9hdChzdHlsZS5wYWRkaW5nUmlnaHQpICsgTWF0aC5tYXgocGFyc2VGbG9hdChzdHlsZS5yaWdodCkgfHwgMCwgMCk7XG4gICAgICAgICAgICBjb25zdCB0b3AgPSBwYXJzZUZsb2F0KHN0eWxlLnBhZGRpbmdUb3ApICsgTWF0aC5tYXgocGFyc2VGbG9hdChzdHlsZS50b3ApIHx8IDAsIDApO1xuICAgICAgICAgICAgY29uc3QgYm90dG9tID0gcGFyc2VGbG9hdChzdHlsZS5wYWRkaW5nQm90dG9tKSArIE1hdGgubWF4KHBhcnNlRmxvYXQoc3R5bGUuYm90dG9tKSB8fCAwLCAwKTtcblxuICAgICAgICAgICAgcmV0dXJuIHsgbGVmdCwgcmlnaHQsIHRvcCwgYm90dG9tLCB4OiBsZWZ0ICsgcmlnaHQsIHk6IHRvcCArIGJvdHRvbSB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsgbGVmdDogMCwgcmlnaHQ6IDAsIHRvcDogMCwgYm90dG9tOiAwLCB4OiAwLCB5OiAwIH07XG4gICAgfVxuXG4gICAgc2V0U2l6ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZWxlbWVudFZpZXdDaGlsZD8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50RWxlbWVudCA9IHRoaXMuZWxlbWVudFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gdGhpcy5fc2Nyb2xsV2lkdGggfHwgYCR7dGhpcy5lbGVtZW50Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggfHwgcGFyZW50RWxlbWVudC5vZmZzZXRXaWR0aH1weGA7XG4gICAgICAgICAgICBjb25zdCBoZWlnaHQgPSB0aGlzLl9zY3JvbGxIZWlnaHQgfHwgYCR7dGhpcy5lbGVtZW50Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0IHx8IHBhcmVudEVsZW1lbnQub2Zmc2V0SGVpZ2h0fXB4YDtcbiAgICAgICAgICAgIGNvbnN0IHNldFByb3AgPSAoX25hbWU6IHN0cmluZywgX3ZhbHVlOiBhbnkpID0+ICgoPEVsZW1lbnRSZWY+dGhpcy5lbGVtZW50Vmlld0NoaWxkKS5uYXRpdmVFbGVtZW50LnN0eWxlW19uYW1lXSA9IF92YWx1ZSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmJvdGggfHwgdGhpcy5ob3Jpem9udGFsKSB7XG4gICAgICAgICAgICAgICAgc2V0UHJvcCgnaGVpZ2h0JywgaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICBzZXRQcm9wKCd3aWR0aCcsIHdpZHRoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2V0UHJvcCgnaGVpZ2h0JywgaGVpZ2h0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldFNwYWNlclNpemUoKSB7XG4gICAgICAgIGlmICh0aGlzLl9pdGVtcykge1xuICAgICAgICAgICAgY29uc3Qgc2V0UHJvcCA9IChfbmFtZSwgX2NvdW50LCBfc2l6ZSkgPT4gKHRoaXMuc3BhY2VyU3R5bGUgPSB7IC4uLnRoaXMuc3BhY2VyU3R5bGUsIC4uLnsgW2Ake19uYW1lfWBdOiBfY291bnQgKiBfc2l6ZSArICdweCcgfSB9KTtcblxuICAgICAgICAgICAgY29uc3QgbnVtSXRlbXMgPSB0aGlzLl9pdGVtcy5sZW5ndGg7XG4gICAgICAgICAgICBpZiAodGhpcy5ib3RoKSB7XG4gICAgICAgICAgICAgICAgc2V0UHJvcCgnaGVpZ2h0JywgbnVtSXRlbXMsIHRoaXMuX2l0ZW1TaXplWzBdKTtcbiAgICAgICAgICAgICAgICBzZXRQcm9wKCd3aWR0aCcsIHRoaXMuX2NvbHVtbnM/Lmxlbmd0aCB8fCB0aGlzLl9pdGVtc1sxXT8ubGVuZ3RoLCB0aGlzLl9pdGVtU2l6ZVsxXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaG9yaXpvbnRhbCA/IHNldFByb3AoJ3dpZHRoJywgdGhpcy5fY29sdW1ucy5sZW5ndGggfHwgdGhpcy5faXRlbXMubGVuZ3RoLCB0aGlzLl9pdGVtU2l6ZSkgOiBzZXRQcm9wKCdoZWlnaHQnLCBudW1JdGVtcywgdGhpcy5faXRlbVNpemUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0Q29udGVudFBvc2l0aW9uKHBvczogYW55KSB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRlbnRFbCAmJiAhdGhpcy5fYXBwZW5kT25seSkge1xuICAgICAgICAgICAgY29uc3QgZmlyc3QgPSBwb3MgPyBwb3MuZmlyc3QgOiB0aGlzLmZpcnN0O1xuICAgICAgICAgICAgY29uc3QgY2FsY3VsYXRlVHJhbnNsYXRlVmFsID0gKF9maXJzdDogbnVtYmVyLCBfc2l6ZTogbnVtYmVyKSA9PiBfZmlyc3QgKiBfc2l6ZTtcbiAgICAgICAgICAgIGNvbnN0IHNldFRyYW5zZm9ybSA9IChfeCA9IDAsIF95ID0gMCkgPT4gKHRoaXMuY29udGVudFN0eWxlID0geyAuLi50aGlzLmNvbnRlbnRTdHlsZSwgLi4ueyB0cmFuc2Zvcm06IGB0cmFuc2xhdGUzZCgke194fXB4LCAke195fXB4LCAwKWAgfSB9KTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuYm90aCkge1xuICAgICAgICAgICAgICAgIHNldFRyYW5zZm9ybShjYWxjdWxhdGVUcmFuc2xhdGVWYWwoZmlyc3QuY29scywgKDxudW1iZXJbXT50aGlzLl9pdGVtU2l6ZSlbMV0pLCBjYWxjdWxhdGVUcmFuc2xhdGVWYWwoZmlyc3Qucm93cywgKDxudW1iZXJbXT50aGlzLl9pdGVtU2l6ZSlbMF0pKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdHJhbnNsYXRlVmFsID0gY2FsY3VsYXRlVHJhbnNsYXRlVmFsKGZpcnN0LCA8bnVtYmVyPnRoaXMuX2l0ZW1TaXplKTtcbiAgICAgICAgICAgICAgICB0aGlzLmhvcml6b250YWwgPyBzZXRUcmFuc2Zvcm0odHJhbnNsYXRlVmFsLCAwKSA6IHNldFRyYW5zZm9ybSgwLCB0cmFuc2xhdGVWYWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25TY3JvbGxQb3NpdGlvbkNoYW5nZShldmVudDogRXZlbnQpIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgICBjb25zdCBjb250ZW50UG9zID0gdGhpcy5nZXRDb250ZW50UG9zaXRpb24oKTtcbiAgICAgICAgY29uc3QgY2FsY3VsYXRlU2Nyb2xsUG9zID0gKF9wb3M6IG51bWJlciwgX2Nwb3M6IG51bWJlcikgPT4gKF9wb3MgPyAoX3BvcyA+IF9jcG9zID8gX3BvcyAtIF9jcG9zIDogX3BvcykgOiAwKTtcbiAgICAgICAgY29uc3QgY2FsY3VsYXRlQ3VycmVudEluZGV4ID0gKF9wb3M6IG51bWJlciwgX3NpemU6IG51bWJlcikgPT4gKF9zaXplIHx8IF9wb3MgPyBNYXRoLmZsb29yKF9wb3MgLyAoX3NpemUgfHwgX3BvcykpIDogMCk7XG4gICAgICAgIGNvbnN0IGNhbGN1bGF0ZVRyaWdnZXJJbmRleCA9IChfY3VycmVudEluZGV4OiBudW1iZXIsIF9maXJzdDogbnVtYmVyLCBfbGFzdDogbnVtYmVyLCBfbnVtOiBudW1iZXIsIF9udW1UOiBudW1iZXIsIF9pc1Njcm9sbERvd25PclJpZ2h0OiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBfY3VycmVudEluZGV4IDw9IF9udW1UID8gX251bVQgOiBfaXNTY3JvbGxEb3duT3JSaWdodCA/IF9sYXN0IC0gX251bSAtIF9udW1UIDogX2ZpcnN0ICsgX251bVQgLSAxO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBjYWxjdWxhdGVGaXJzdCA9IChfY3VycmVudEluZGV4OiBudW1iZXIsIF90cmlnZ2VySW5kZXg6IG51bWJlciwgX2ZpcnN0OiBudW1iZXIsIF9sYXN0OiBudW1iZXIsIF9udW06IG51bWJlciwgX251bVQ6IG51bWJlciwgX2lzU2Nyb2xsRG93bk9yUmlnaHQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKF9jdXJyZW50SW5kZXggPD0gX251bVQpIHJldHVybiAwO1xuICAgICAgICAgICAgZWxzZSByZXR1cm4gTWF0aC5tYXgoMCwgX2lzU2Nyb2xsRG93bk9yUmlnaHQgPyAoX2N1cnJlbnRJbmRleCA8IF90cmlnZ2VySW5kZXggPyBfZmlyc3QgOiBfY3VycmVudEluZGV4IC0gX251bVQpIDogX2N1cnJlbnRJbmRleCA+IF90cmlnZ2VySW5kZXggPyBfZmlyc3QgOiBfY3VycmVudEluZGV4IC0gMiAqIF9udW1UKTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgY2FsY3VsYXRlTGFzdCA9IChfY3VycmVudEluZGV4OiBudW1iZXIsIF9maXJzdDogbnVtYmVyLCBfbGFzdDogbnVtYmVyLCBfbnVtOiBudW1iZXIsIF9udW1UOiBudW1iZXIsIF9pc0NvbHMgPSBmYWxzZSkgPT4ge1xuICAgICAgICAgICAgbGV0IGxhc3RWYWx1ZSA9IF9maXJzdCArIF9udW0gKyAyICogX251bVQ7XG5cbiAgICAgICAgICAgIGlmIChfY3VycmVudEluZGV4ID49IF9udW1UKSB7XG4gICAgICAgICAgICAgICAgbGFzdFZhbHVlICs9IF9udW1UICsgMTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TGFzdChsYXN0VmFsdWUsIF9pc0NvbHMpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHNjcm9sbFRvcCA9IGNhbGN1bGF0ZVNjcm9sbFBvcygoPEhUTUxFbGVtZW50PnRhcmdldCkuc2Nyb2xsVG9wLCBjb250ZW50UG9zLnRvcCk7XG4gICAgICAgIGNvbnN0IHNjcm9sbExlZnQgPSBjYWxjdWxhdGVTY3JvbGxQb3MoKDxIVE1MRWxlbWVudD50YXJnZXQpLnNjcm9sbExlZnQsIGNvbnRlbnRQb3MubGVmdCk7XG5cbiAgICAgICAgbGV0IG5ld0ZpcnN0ID0gdGhpcy5ib3RoID8geyByb3dzOiAwLCBjb2xzOiAwIH0gOiAwO1xuICAgICAgICBsZXQgbmV3TGFzdCA9IHRoaXMubGFzdDtcbiAgICAgICAgbGV0IGlzUmFuZ2VDaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgIGxldCBuZXdTY3JvbGxQb3MgPSB0aGlzLmxhc3RTY3JvbGxQb3M7XG5cbiAgICAgICAgaWYgKHRoaXMuYm90aCkge1xuICAgICAgICAgICAgY29uc3QgaXNTY3JvbGxEb3duID0gdGhpcy5sYXN0U2Nyb2xsUG9zLnRvcCA8PSBzY3JvbGxUb3A7XG4gICAgICAgICAgICBjb25zdCBpc1Njcm9sbFJpZ2h0ID0gdGhpcy5sYXN0U2Nyb2xsUG9zLmxlZnQgPD0gc2Nyb2xsTGVmdDtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLl9hcHBlbmRPbmx5IHx8ICh0aGlzLl9hcHBlbmRPbmx5ICYmIChpc1Njcm9sbERvd24gfHwgaXNTY3JvbGxSaWdodCkpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0geyByb3dzOiBjYWxjdWxhdGVDdXJyZW50SW5kZXgoc2Nyb2xsVG9wLCAoPG51bWJlcltdPnRoaXMuX2l0ZW1TaXplKVswXSksIGNvbHM6IGNhbGN1bGF0ZUN1cnJlbnRJbmRleChzY3JvbGxMZWZ0LCAoPG51bWJlcltdPnRoaXMuX2l0ZW1TaXplKVsxXSkgfTtcbiAgICAgICAgICAgICAgICBjb25zdCB0cmlnZ2VySW5kZXggPSB7XG4gICAgICAgICAgICAgICAgICAgIHJvd3M6IGNhbGN1bGF0ZVRyaWdnZXJJbmRleChjdXJyZW50SW5kZXgucm93cywgdGhpcy5maXJzdC5yb3dzLCB0aGlzLmxhc3Qucm93cywgdGhpcy5udW1JdGVtc0luVmlld3BvcnQucm93cywgdGhpcy5kX251bVRvbGVyYXRlZEl0ZW1zWzBdLCBpc1Njcm9sbERvd24pLFxuICAgICAgICAgICAgICAgICAgICBjb2xzOiBjYWxjdWxhdGVUcmlnZ2VySW5kZXgoY3VycmVudEluZGV4LmNvbHMsIHRoaXMuZmlyc3QuY29scywgdGhpcy5sYXN0LmNvbHMsIHRoaXMubnVtSXRlbXNJblZpZXdwb3J0LmNvbHMsIHRoaXMuZF9udW1Ub2xlcmF0ZWRJdGVtc1sxXSwgaXNTY3JvbGxSaWdodClcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgbmV3Rmlyc3QgPSB7XG4gICAgICAgICAgICAgICAgICAgIHJvd3M6IGNhbGN1bGF0ZUZpcnN0KGN1cnJlbnRJbmRleC5yb3dzLCB0cmlnZ2VySW5kZXgucm93cywgdGhpcy5maXJzdC5yb3dzLCB0aGlzLmxhc3Qucm93cywgdGhpcy5udW1JdGVtc0luVmlld3BvcnQucm93cywgdGhpcy5kX251bVRvbGVyYXRlZEl0ZW1zWzBdLCBpc1Njcm9sbERvd24pLFxuICAgICAgICAgICAgICAgICAgICBjb2xzOiBjYWxjdWxhdGVGaXJzdChjdXJyZW50SW5kZXguY29scywgdHJpZ2dlckluZGV4LmNvbHMsIHRoaXMuZmlyc3QuY29scywgdGhpcy5sYXN0LmNvbHMsIHRoaXMubnVtSXRlbXNJblZpZXdwb3J0LmNvbHMsIHRoaXMuZF9udW1Ub2xlcmF0ZWRJdGVtc1sxXSwgaXNTY3JvbGxSaWdodClcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIG5ld0xhc3QgPSB7XG4gICAgICAgICAgICAgICAgICAgIHJvd3M6IGNhbGN1bGF0ZUxhc3QoY3VycmVudEluZGV4LnJvd3MsIG5ld0ZpcnN0LnJvd3MsIHRoaXMubGFzdC5yb3dzLCB0aGlzLm51bUl0ZW1zSW5WaWV3cG9ydC5yb3dzLCB0aGlzLmRfbnVtVG9sZXJhdGVkSXRlbXNbMF0pLFxuICAgICAgICAgICAgICAgICAgICBjb2xzOiBjYWxjdWxhdGVMYXN0KGN1cnJlbnRJbmRleC5jb2xzLCBuZXdGaXJzdC5jb2xzLCB0aGlzLmxhc3QuY29scywgdGhpcy5udW1JdGVtc0luVmlld3BvcnQuY29scywgdGhpcy5kX251bVRvbGVyYXRlZEl0ZW1zWzFdLCB0cnVlKVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBpc1JhbmdlQ2hhbmdlZCA9IG5ld0ZpcnN0LnJvd3MgIT09IHRoaXMuZmlyc3Qucm93cyB8fCBuZXdMYXN0LnJvd3MgIT09IHRoaXMubGFzdC5yb3dzIHx8IG5ld0ZpcnN0LmNvbHMgIT09IHRoaXMuZmlyc3QuY29scyB8fCBuZXdMYXN0LmNvbHMgIT09IHRoaXMubGFzdC5jb2xzIHx8IHRoaXMuaXNSYW5nZUNoYW5nZWQ7XG4gICAgICAgICAgICAgICAgbmV3U2Nyb2xsUG9zID0geyB0b3A6IHNjcm9sbFRvcCwgbGVmdDogc2Nyb2xsTGVmdCB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsUG9zID0gdGhpcy5ob3Jpem9udGFsID8gc2Nyb2xsTGVmdCA6IHNjcm9sbFRvcDtcbiAgICAgICAgICAgIGNvbnN0IGlzU2Nyb2xsRG93bk9yUmlnaHQgPSB0aGlzLmxhc3RTY3JvbGxQb3MgPD0gc2Nyb2xsUG9zO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuX2FwcGVuZE9ubHkgfHwgKHRoaXMuX2FwcGVuZE9ubHkgJiYgaXNTY3JvbGxEb3duT3JSaWdodCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50SW5kZXggPSBjYWxjdWxhdGVDdXJyZW50SW5kZXgoc2Nyb2xsUG9zLCA8bnVtYmVyPnRoaXMuX2l0ZW1TaXplKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0cmlnZ2VySW5kZXggPSBjYWxjdWxhdGVUcmlnZ2VySW5kZXgoY3VycmVudEluZGV4LCB0aGlzLmZpcnN0LCB0aGlzLmxhc3QsIHRoaXMubnVtSXRlbXNJblZpZXdwb3J0LCB0aGlzLmRfbnVtVG9sZXJhdGVkSXRlbXMsIGlzU2Nyb2xsRG93bk9yUmlnaHQpO1xuXG4gICAgICAgICAgICAgICAgbmV3Rmlyc3QgPSBjYWxjdWxhdGVGaXJzdChjdXJyZW50SW5kZXgsIHRyaWdnZXJJbmRleCwgdGhpcy5maXJzdCwgdGhpcy5sYXN0LCB0aGlzLm51bUl0ZW1zSW5WaWV3cG9ydCwgdGhpcy5kX251bVRvbGVyYXRlZEl0ZW1zLCBpc1Njcm9sbERvd25PclJpZ2h0KTtcbiAgICAgICAgICAgICAgICBuZXdMYXN0ID0gY2FsY3VsYXRlTGFzdChjdXJyZW50SW5kZXgsIG5ld0ZpcnN0LCB0aGlzLmxhc3QsIHRoaXMubnVtSXRlbXNJblZpZXdwb3J0LCB0aGlzLmRfbnVtVG9sZXJhdGVkSXRlbXMpO1xuICAgICAgICAgICAgICAgIGlzUmFuZ2VDaGFuZ2VkID0gbmV3Rmlyc3QgIT09IHRoaXMuZmlyc3QgfHwgbmV3TGFzdCAhPT0gdGhpcy5sYXN0IHx8IHRoaXMuaXNSYW5nZUNoYW5nZWQ7XG4gICAgICAgICAgICAgICAgbmV3U2Nyb2xsUG9zID0gc2Nyb2xsUG9zO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZpcnN0OiBuZXdGaXJzdCxcbiAgICAgICAgICAgIGxhc3Q6IG5ld0xhc3QsXG4gICAgICAgICAgICBpc1JhbmdlQ2hhbmdlZCxcbiAgICAgICAgICAgIHNjcm9sbFBvczogbmV3U2Nyb2xsUG9zXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgb25TY3JvbGxDaGFuZ2UoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IHsgZmlyc3QsIGxhc3QsIGlzUmFuZ2VDaGFuZ2VkLCBzY3JvbGxQb3MgfSA9IHRoaXMub25TY3JvbGxQb3NpdGlvbkNoYW5nZShldmVudCk7XG5cbiAgICAgICAgaWYgKGlzUmFuZ2VDaGFuZ2VkKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdTdGF0ZSA9IHsgZmlyc3QsIGxhc3QgfTtcblxuICAgICAgICAgICAgdGhpcy5zZXRDb250ZW50UG9zaXRpb24obmV3U3RhdGUpO1xuXG4gICAgICAgICAgICB0aGlzLmZpcnN0ID0gZmlyc3Q7XG4gICAgICAgICAgICB0aGlzLmxhc3QgPSBsYXN0O1xuICAgICAgICAgICAgdGhpcy5sYXN0U2Nyb2xsUG9zID0gc2Nyb2xsUG9zO1xuXG4gICAgICAgICAgICB0aGlzLmhhbmRsZUV2ZW50cygnb25TY3JvbGxJbmRleENoYW5nZScsIG5ld1N0YXRlKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuX2xhenkgJiYgdGhpcy5pc1BhZ2VDaGFuZ2VkKGZpcnN0KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxhenlMb2FkU3RhdGUgPSB7XG4gICAgICAgICAgICAgICAgICAgIGZpcnN0OiB0aGlzLl9zdGVwID8gTWF0aC5taW4odGhpcy5nZXRQYWdlQnlGaXJzdChmaXJzdCkgKiB0aGlzLl9zdGVwLCAoPGFueVtdPnRoaXMuaXRlbXMpLmxlbmd0aCAtIHRoaXMuX3N0ZXApIDogZmlyc3QsXG4gICAgICAgICAgICAgICAgICAgIGxhc3Q6IE1hdGgubWluKHRoaXMuX3N0ZXAgPyAodGhpcy5nZXRQYWdlQnlGaXJzdChmaXJzdCkgKyAxKSAqIHRoaXMuX3N0ZXAgOiBsYXN0LCAoPGFueVtdPnRoaXMuaXRlbXMpLmxlbmd0aClcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzTGF6eVN0YXRlQ2hhbmdlZCA9IHRoaXMubGF6eUxvYWRTdGF0ZS5maXJzdCAhPT0gbGF6eUxvYWRTdGF0ZS5maXJzdCB8fCB0aGlzLmxhenlMb2FkU3RhdGUubGFzdCAhPT0gbGF6eUxvYWRTdGF0ZS5sYXN0O1xuXG4gICAgICAgICAgICAgICAgaXNMYXp5U3RhdGVDaGFuZ2VkICYmIHRoaXMuaGFuZGxlRXZlbnRzKCdvbkxhenlMb2FkJywgbGF6eUxvYWRTdGF0ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXp5TG9hZFN0YXRlID0gbGF6eUxvYWRTdGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQ29udGFpbmVyU2Nyb2xsKGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLmhhbmRsZUV2ZW50cygnb25TY3JvbGwnLCB7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50IH0pO1xuXG4gICAgICAgIGlmICh0aGlzLl9kZWxheSAmJiB0aGlzLmlzUGFnZUNoYW5nZWQoKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2Nyb2xsVGltZW91dCkge1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNjcm9sbFRpbWVvdXQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXRoaXMuZF9sb2FkaW5nICYmIHRoaXMuc2hvd0xvYWRlcikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgaXNSYW5nZUNoYW5nZWQgfSA9IHRoaXMub25TY3JvbGxQb3NpdGlvbkNoYW5nZShldmVudCk7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hhbmdlZCA9IGlzUmFuZ2VDaGFuZ2VkIHx8ICh0aGlzLl9zdGVwID8gdGhpcy5pc1BhZ2VDaGFuZ2VkKCkgOiBmYWxzZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRfbG9hZGluZyA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnNjcm9sbFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uU2Nyb2xsQ2hhbmdlKGV2ZW50KTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRfbG9hZGluZyAmJiB0aGlzLnNob3dMb2FkZXIgJiYgKCF0aGlzLl9sYXp5IHx8IHRoaXMuX2xvYWRpbmcgPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kX2xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gdGhpcy5nZXRQYWdlQnlGaXJzdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCB0aGlzLl9kZWxheSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAhdGhpcy5kX2xvYWRpbmcgJiYgdGhpcy5vblNjcm9sbENoYW5nZShldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1bmJpbmRSZXNpemVMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMucmVzaXplT2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIudW5vYnNlcnZlKHRoaXMuZWxlbWVudFZpZXdDaGlsZD8ubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uUmVzaXplKCkge1xuICAgICAgICBpZiAodGhpcy5yZXNpemVUaW1lb3V0KSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5yZXNpemVUaW1lb3V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVzaXplVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKERvbUhhbmRsZXIuaXNWaXNpYmxlKHRoaXMuZWxlbWVudFZpZXdDaGlsZD8ubmF0aXZlRWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBbd2lkdGgsIGhlaWdodF0gPSBbRG9tSGFuZGxlci5nZXRXaWR0aCh0aGlzLmVsZW1lbnRWaWV3Q2hpbGQ/Lm5hdGl2ZUVsZW1lbnQpLCBEb21IYW5kbGVyLmdldEhlaWdodCh0aGlzLmVsZW1lbnRWaWV3Q2hpbGQ/Lm5hdGl2ZUVsZW1lbnQpXTtcbiAgICAgICAgICAgICAgICBjb25zdCBbaXNEaWZmV2lkdGgsIGlzRGlmZkhlaWdodF0gPSBbd2lkdGggIT09IHRoaXMuZGVmYXVsdFdpZHRoLCBoZWlnaHQgIT09IHRoaXMuZGVmYXVsdEhlaWdodF07XG4gICAgICAgICAgICAgICAgY29uc3QgcmVpbml0ID0gdGhpcy5ib3RoID8gaXNEaWZmV2lkdGggfHwgaXNEaWZmSGVpZ2h0IDogdGhpcy5ob3Jpem9udGFsID8gaXNEaWZmV2lkdGggOiB0aGlzLnZlcnRpY2FsID8gaXNEaWZmSGVpZ2h0IDogZmFsc2U7XG5cbiAgICAgICAgICAgICAgICByZWluaXQgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRfbnVtVG9sZXJhdGVkSXRlbXMgPSB0aGlzLl9udW1Ub2xlcmF0ZWRJdGVtcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdFdpZHRoID0gd2lkdGg7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRIZWlnaHQgPSBoZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRDb250ZW50V2lkdGggPSBEb21IYW5kbGVyLmdldFdpZHRoKHRoaXMuY29udGVudEVsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdENvbnRlbnRIZWlnaHQgPSBEb21IYW5kbGVyLmdldEhlaWdodCh0aGlzLmNvbnRlbnRFbCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVBdXRvU2l6ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgdGhpcy5fcmVzaXplRGVsYXkpO1xuICAgIH1cblxuICAgIGhhbmRsZUV2ZW50cyhuYW1lOiBzdHJpbmcsIHBhcmFtczogYW55KSB7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zICYmICg8YW55PnRoaXMub3B0aW9ucylbbmFtZV0gPyAoPGFueT50aGlzLm9wdGlvbnMpW25hbWVdKHBhcmFtcykgOiB0aGlzW25hbWVdLmVtaXQocGFyYW1zKTtcbiAgICB9XG5cbiAgICBnZXRDb250ZW50T3B0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbnRlbnRTdHlsZUNsYXNzOiBgY2F4LXNjcm9sbGVyLWNvbnRlbnQgJHt0aGlzLmRfbG9hZGluZyA/ICdjYXgtc2Nyb2xsZXItbG9hZGluZycgOiAnJ31gLFxuICAgICAgICAgICAgaXRlbXM6IHRoaXMubG9hZGVkSXRlbXMsXG4gICAgICAgICAgICBnZXRJdGVtT3B0aW9uczogKGluZGV4OiBudW1iZXIpID0+IHRoaXMuZ2V0T3B0aW9ucyhpbmRleCksXG4gICAgICAgICAgICBsb2FkaW5nOiB0aGlzLmRfbG9hZGluZyxcbiAgICAgICAgICAgIGdldExvYWRlck9wdGlvbnM6IChpbmRleDogbnVtYmVyLCBvcHRpb25zPzogYW55KSA9PiB0aGlzLmdldExvYWRlck9wdGlvbnMoaW5kZXgsIG9wdGlvbnMpLFxuICAgICAgICAgICAgaXRlbVNpemU6IHRoaXMuX2l0ZW1TaXplLFxuICAgICAgICAgICAgcm93czogdGhpcy5sb2FkZWRSb3dzLFxuICAgICAgICAgICAgY29sdW1uczogdGhpcy5sb2FkZWRDb2x1bW5zLFxuICAgICAgICAgICAgc3BhY2VyU3R5bGU6IHRoaXMuc3BhY2VyU3R5bGUsXG4gICAgICAgICAgICBjb250ZW50U3R5bGU6IHRoaXMuY29udGVudFN0eWxlLFxuICAgICAgICAgICAgdmVydGljYWw6IHRoaXMudmVydGljYWwsXG4gICAgICAgICAgICBob3Jpem9udGFsOiB0aGlzLmhvcml6b250YWwsXG4gICAgICAgICAgICBib3RoOiB0aGlzLmJvdGhcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBnZXRPcHRpb25zKHJlbmRlcmVkSW5kZXg6IG51bWJlcikge1xuICAgICAgICBjb25zdCBjb3VudCA9ICh0aGlzLl9pdGVtcyB8fCBbXSkubGVuZ3RoO1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuYm90aCA/IHRoaXMuZmlyc3Qucm93cyArIHJlbmRlcmVkSW5kZXggOiB0aGlzLmZpcnN0ICsgcmVuZGVyZWRJbmRleDtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICBjb3VudCxcbiAgICAgICAgICAgIGZpcnN0OiBpbmRleCA9PT0gMCxcbiAgICAgICAgICAgIGxhc3Q6IGluZGV4ID09PSBjb3VudCAtIDEsXG4gICAgICAgICAgICBldmVuOiBpbmRleCAlIDIgPT09IDAsXG4gICAgICAgICAgICBvZGQ6IGluZGV4ICUgMiAhPT0gMFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGdldExvYWRlck9wdGlvbnMoaW5kZXg6IG51bWJlciwgZXh0T3B0aW9uczogYW55KSB7XG4gICAgICAgIGNvbnN0IGNvdW50ID0gdGhpcy5sb2FkZXJBcnIubGVuZ3RoO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgIGNvdW50LFxuICAgICAgICAgICAgZmlyc3Q6IGluZGV4ID09PSAwLFxuICAgICAgICAgICAgbGFzdDogaW5kZXggPT09IGNvdW50IC0gMSxcbiAgICAgICAgICAgIGV2ZW46IGluZGV4ICUgMiA9PT0gMCxcbiAgICAgICAgICAgIG9kZDogaW5kZXggJSAyICE9PSAwLFxuICAgICAgICAgICAgLi4uZXh0T3B0aW9uc1xuICAgICAgICB9O1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIhX2Rpc2FibGVkOyBlbHNlIGRpc2FibGVkQ29udGFpbmVyXCI+XHJcbiAgICA8ZGl2XHJcbiAgICAgICAgI2VsZW1lbnRcclxuICAgICAgICBbYXR0ci5pZF09XCJfaWRcIlxyXG4gICAgICAgIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4XCJcclxuICAgICAgICBbbmdTdHlsZV09XCJfc3R5bGVcIlxyXG4gICAgICAgIFtjbGFzc109XCJfc3R5bGVDbGFzc1wiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnY2F4LXNjcm9sbGVyJzogdHJ1ZSwgJ2NheC1zY3JvbGxlci1pbmxpbmUnOiBpbmxpbmUsICdjYXgtYm90aC1zY3JvbGwnOiBib3RoLCAnY2F4LWhvcml6b250YWwtc2Nyb2xsJzogaG9yaXpvbnRhbCB9XCJcclxuICAgICAgICAoc2Nyb2xsKT1cIm9uQ29udGFpbmVyU2Nyb2xsKCRldmVudClcIlxyXG4gICAgICAgIFthdHRyLmRhdGEtcGMtbmFtZV09XCInc2Nyb2xsZXInXCJcclxuICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3Jvb3QnXCJcclxuICAgID5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFRlbXBsYXRlOyBlbHNlIGJ1aWxkSW5Db250ZW50XCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBsb2FkZWRJdGVtcywgb3B0aW9uczogZ2V0Q29udGVudE9wdGlvbnMoKSB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNidWlsZEluQ29udGVudD5cclxuICAgICAgICAgICAgPGRpdiAjY29udGVudCBjbGFzcz1cImNheC1zY3JvbGxlci1jb250ZW50XCIgW25nQ2xhc3NdPVwieyAnY2F4LXNjcm9sbGVyLWxvYWRpbmcnOiBkX2xvYWRpbmcgfVwiIFtuZ1N0eWxlXT1cImNvbnRlbnRTdHlsZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInY29udGVudCdcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbG9hZGVkSXRlbXM7IGxldCBpbmRleCA9IGluZGV4OyB0cmFja0J5OiBfdHJhY2tCeSB8fCBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBpdGVtLCBvcHRpb25zOiBnZXRPcHRpb25zKGluZGV4KSB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiX3Nob3dTcGFjZXJcIiBjbGFzcz1cImNheC1zY3JvbGxlci1zcGFjZXJcIiBbbmdTdHlsZV09XCJzcGFjZXJTdHlsZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInc3BhY2VyJ1wiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCIhbG9hZGVyRGlzYWJsZWQgJiYgX3Nob3dMb2FkZXIgJiYgZF9sb2FkaW5nXCIgY2xhc3M9XCJjYXgtc2Nyb2xsZXItbG9hZGVyXCIgW25nQ2xhc3NdPVwieyAnY2F4LWNvbXBvbmVudC1vdmVybGF5JzogIWxvYWRlclRlbXBsYXRlIH1cIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2xvYWRlcidcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRlclRlbXBsYXRlOyBlbHNlIGJ1aWxkSW5Mb2FkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbG9hZGVyQXJyOyBsZXQgaW5kZXggPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2FkZXJUZW1wbGF0ZTsgY29udGV4dDogeyBvcHRpb25zOiBnZXRMb2FkZXJPcHRpb25zKGluZGV4LCBib3RoICYmIHsgbnVtQ29sczogX251bUl0ZW1zSW5WaWV3cG9ydC5jb2xzIH0pIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNidWlsZEluTG9hZGVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRlckljb25UZW1wbGF0ZTsgZWxzZSBidWlsZEluTG9hZGVySWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2FkZXJJY29uVGVtcGxhdGU7IGNvbnRleHQ6IHsgb3B0aW9uczogeyBzdHlsZUNsYXNzOiAnY2F4LXNjcm9sbGVyLWxvYWRpbmctaWNvbicgfSB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYnVpbGRJbkxvYWRlckljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPFNwaW5uZXJJY29uIFtzdHlsZUNsYXNzXT1cIidjYXgtc2Nyb2xsZXItbG9hZGluZy1pY29uIHBpLXNwaW4nXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidsb2FkaW5nSWNvbidcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuPG5nLXRlbXBsYXRlICNkaXNhYmxlZENvbnRhaW5lcj5cclxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50VGVtcGxhdGVcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbXMsIG9wdGlvbnM6IHsgcm93czogX2l0ZW1zLCBjb2x1bW5zOiBsb2FkZWRDb2x1bW5zIH0gfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==