primeng 22.1.0 → 22.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (850) hide show
  1. package/fesm2022/primeng-accordion.mjs +998 -578
  2. package/fesm2022/primeng-accordion.mjs.map +1 -1
  3. package/fesm2022/primeng-animateonscroll.mjs +266 -165
  4. package/fesm2022/primeng-animateonscroll.mjs.map +1 -1
  5. package/fesm2022/primeng-api.mjs +888 -847
  6. package/fesm2022/primeng-api.mjs.map +1 -1
  7. package/fesm2022/primeng-autocomplete.mjs +2534 -1592
  8. package/fesm2022/primeng-autocomplete.mjs.map +1 -1
  9. package/fesm2022/primeng-autofocus.mjs +114 -77
  10. package/fesm2022/primeng-autofocus.mjs.map +1 -1
  11. package/fesm2022/primeng-avatar.mjs +330 -189
  12. package/fesm2022/primeng-avatar.mjs.map +1 -1
  13. package/fesm2022/primeng-avatargroup.mjs +178 -95
  14. package/fesm2022/primeng-avatargroup.mjs.map +1 -1
  15. package/fesm2022/primeng-badge.mjs +290 -156
  16. package/fesm2022/primeng-badge.mjs.map +1 -1
  17. package/fesm2022/primeng-base.mjs +95 -101
  18. package/fesm2022/primeng-base.mjs.map +1 -1
  19. package/fesm2022/primeng-basecomponent.mjs +528 -489
  20. package/fesm2022/primeng-basecomponent.mjs.map +1 -1
  21. package/fesm2022/primeng-baseeditableholder.mjs +131 -69
  22. package/fesm2022/primeng-baseeditableholder.mjs.map +1 -1
  23. package/fesm2022/primeng-baseinput.mjs +214 -99
  24. package/fesm2022/primeng-baseinput.mjs.map +1 -1
  25. package/fesm2022/primeng-basemodelholder.mjs +39 -26
  26. package/fesm2022/primeng-basemodelholder.mjs.map +1 -1
  27. package/fesm2022/primeng-bind.mjs +156 -96
  28. package/fesm2022/primeng-bind.mjs.map +1 -1
  29. package/fesm2022/primeng-blockui.mjs +360 -228
  30. package/fesm2022/primeng-blockui.mjs.map +1 -1
  31. package/fesm2022/primeng-breadcrumb.mjs +458 -220
  32. package/fesm2022/primeng-breadcrumb.mjs.map +1 -1
  33. package/fesm2022/primeng-button.mjs +1568 -703
  34. package/fesm2022/primeng-button.mjs.map +1 -1
  35. package/fesm2022/primeng-buttongroup.mjs +125 -73
  36. package/fesm2022/primeng-buttongroup.mjs.map +1 -1
  37. package/fesm2022/primeng-card.mjs +389 -178
  38. package/fesm2022/primeng-card.mjs.map +1 -1
  39. package/fesm2022/primeng-carousel.mjs +2393 -1773
  40. package/fesm2022/primeng-carousel.mjs.map +1 -1
  41. package/fesm2022/primeng-cascadeselect.mjs +2373 -1364
  42. package/fesm2022/primeng-cascadeselect.mjs.map +1 -1
  43. package/fesm2022/primeng-chart.mjs +402 -231
  44. package/fesm2022/primeng-chart.mjs.map +1 -1
  45. package/fesm2022/primeng-checkbox.mjs +650 -353
  46. package/fesm2022/primeng-checkbox.mjs.map +1 -1
  47. package/fesm2022/primeng-chip.mjs +411 -224
  48. package/fesm2022/primeng-chip.mjs.map +1 -1
  49. package/fesm2022/primeng-classnames.mjs +95 -48
  50. package/fesm2022/primeng-classnames.mjs.map +1 -1
  51. package/fesm2022/primeng-colorpicker.mjs +890 -635
  52. package/fesm2022/primeng-colorpicker.mjs.map +1 -1
  53. package/fesm2022/primeng-commandmenu.mjs +568 -315
  54. package/fesm2022/primeng-commandmenu.mjs.map +1 -1
  55. package/fesm2022/primeng-compare.mjs +843 -480
  56. package/fesm2022/primeng-compare.mjs.map +1 -1
  57. package/fesm2022/primeng-config.mjs +415 -321
  58. package/fesm2022/primeng-config.mjs.map +1 -1
  59. package/fesm2022/primeng-confirmdialog.mjs +1188 -540
  60. package/fesm2022/primeng-confirmdialog.mjs.map +1 -1
  61. package/fesm2022/primeng-confirmpopup.mjs +810 -531
  62. package/fesm2022/primeng-confirmpopup.mjs.map +1 -1
  63. package/fesm2022/primeng-contextmenu.mjs +1862 -1051
  64. package/fesm2022/primeng-contextmenu.mjs.map +1 -1
  65. package/fesm2022/primeng-dataview.mjs +1130 -549
  66. package/fesm2022/primeng-dataview.mjs.map +1 -1
  67. package/fesm2022/primeng-datepicker.mjs +3750 -3354
  68. package/fesm2022/primeng-datepicker.mjs.map +1 -1
  69. package/fesm2022/primeng-dialog.mjs +1635 -968
  70. package/fesm2022/primeng-dialog.mjs.map +1 -1
  71. package/fesm2022/primeng-divider.mjs +272 -148
  72. package/fesm2022/primeng-divider.mjs.map +1 -1
  73. package/fesm2022/primeng-dock.mjs +609 -385
  74. package/fesm2022/primeng-dock.mjs.map +1 -1
  75. package/fesm2022/primeng-dom.mjs +599 -761
  76. package/fesm2022/primeng-dom.mjs.map +1 -1
  77. package/fesm2022/primeng-dragdrop.mjs +323 -311
  78. package/fesm2022/primeng-dragdrop.mjs.map +1 -1
  79. package/fesm2022/primeng-drawer.mjs +913 -482
  80. package/fesm2022/primeng-drawer.mjs.map +1 -1
  81. package/fesm2022/primeng-dynamicdialog.mjs +828 -928
  82. package/fesm2022/primeng-dynamicdialog.mjs.map +1 -1
  83. package/fesm2022/primeng-editor.mjs +547 -390
  84. package/fesm2022/primeng-editor.mjs.map +1 -1
  85. package/fesm2022/primeng-fieldset.mjs +559 -274
  86. package/fesm2022/primeng-fieldset.mjs.map +1 -1
  87. package/fesm2022/primeng-fileupload.mjs +1836 -1047
  88. package/fesm2022/primeng-fileupload.mjs.map +1 -1
  89. package/fesm2022/primeng-floatlabel.mjs +187 -102
  90. package/fesm2022/primeng-floatlabel.mjs.map +1 -1
  91. package/fesm2022/primeng-fluid.mjs +156 -85
  92. package/fesm2022/primeng-fluid.mjs.map +1 -1
  93. package/fesm2022/primeng-focustrap.mjs +150 -112
  94. package/fesm2022/primeng-focustrap.mjs.map +1 -1
  95. package/fesm2022/primeng-galleria.mjs +2589 -1406
  96. package/fesm2022/primeng-galleria.mjs.map +1 -1
  97. package/fesm2022/primeng-gallery.mjs +2768 -1798
  98. package/fesm2022/primeng-gallery.mjs.map +1 -1
  99. package/fesm2022/primeng-iconfield.mjs +192 -93
  100. package/fesm2022/primeng-iconfield.mjs.map +1 -1
  101. package/fesm2022/primeng-icons-angledoubledown.mjs +41 -23
  102. package/fesm2022/primeng-icons-angledoubledown.mjs.map +1 -1
  103. package/fesm2022/primeng-icons-angledoubleleft.mjs +41 -23
  104. package/fesm2022/primeng-icons-angledoubleleft.mjs.map +1 -1
  105. package/fesm2022/primeng-icons-angledoubleright.mjs +41 -23
  106. package/fesm2022/primeng-icons-angledoubleright.mjs.map +1 -1
  107. package/fesm2022/primeng-icons-angledoubleup.mjs +41 -23
  108. package/fesm2022/primeng-icons-angledoubleup.mjs.map +1 -1
  109. package/fesm2022/primeng-icons-angledown.mjs +41 -23
  110. package/fesm2022/primeng-icons-angledown.mjs.map +1 -1
  111. package/fesm2022/primeng-icons-angleleft.mjs +41 -23
  112. package/fesm2022/primeng-icons-angleleft.mjs.map +1 -1
  113. package/fesm2022/primeng-icons-angleright.mjs +41 -23
  114. package/fesm2022/primeng-icons-angleright.mjs.map +1 -1
  115. package/fesm2022/primeng-icons-angleup.mjs +41 -23
  116. package/fesm2022/primeng-icons-angleup.mjs.map +1 -1
  117. package/fesm2022/primeng-icons-arrowdown.mjs +46 -28
  118. package/fesm2022/primeng-icons-arrowdown.mjs.map +1 -1
  119. package/fesm2022/primeng-icons-arrowdownleft.mjs +41 -23
  120. package/fesm2022/primeng-icons-arrowdownleft.mjs.map +1 -1
  121. package/fesm2022/primeng-icons-arrowdownright.mjs +41 -23
  122. package/fesm2022/primeng-icons-arrowdownright.mjs.map +1 -1
  123. package/fesm2022/primeng-icons-arrowleft.mjs +46 -28
  124. package/fesm2022/primeng-icons-arrowleft.mjs.map +1 -1
  125. package/fesm2022/primeng-icons-arrowright.mjs +41 -23
  126. package/fesm2022/primeng-icons-arrowright.mjs.map +1 -1
  127. package/fesm2022/primeng-icons-arrowup.mjs +46 -28
  128. package/fesm2022/primeng-icons-arrowup.mjs.map +1 -1
  129. package/fesm2022/primeng-icons-ban.mjs +46 -28
  130. package/fesm2022/primeng-icons-ban.mjs.map +1 -1
  131. package/fesm2022/primeng-icons-bars.mjs +41 -23
  132. package/fesm2022/primeng-icons-bars.mjs.map +1 -1
  133. package/fesm2022/primeng-icons-baseicon.mjs +111 -67
  134. package/fesm2022/primeng-icons-baseicon.mjs.map +1 -1
  135. package/fesm2022/primeng-icons-blank.mjs +40 -22
  136. package/fesm2022/primeng-icons-blank.mjs.map +1 -1
  137. package/fesm2022/primeng-icons-calendar.mjs +41 -23
  138. package/fesm2022/primeng-icons-calendar.mjs.map +1 -1
  139. package/fesm2022/primeng-icons-caretleft.mjs +41 -23
  140. package/fesm2022/primeng-icons-caretleft.mjs.map +1 -1
  141. package/fesm2022/primeng-icons-caretright.mjs +41 -23
  142. package/fesm2022/primeng-icons-caretright.mjs.map +1 -1
  143. package/fesm2022/primeng-icons-check.mjs +41 -23
  144. package/fesm2022/primeng-icons-check.mjs.map +1 -1
  145. package/fesm2022/primeng-icons-chevrondown.mjs +41 -23
  146. package/fesm2022/primeng-icons-chevrondown.mjs.map +1 -1
  147. package/fesm2022/primeng-icons-chevronleft.mjs +41 -23
  148. package/fesm2022/primeng-icons-chevronleft.mjs.map +1 -1
  149. package/fesm2022/primeng-icons-chevronright.mjs +41 -23
  150. package/fesm2022/primeng-icons-chevronright.mjs.map +1 -1
  151. package/fesm2022/primeng-icons-chevronup.mjs +41 -23
  152. package/fesm2022/primeng-icons-chevronup.mjs.map +1 -1
  153. package/fesm2022/primeng-icons-exclamationtriangle.mjs +46 -28
  154. package/fesm2022/primeng-icons-exclamationtriangle.mjs.map +1 -1
  155. package/fesm2022/primeng-icons-eye.mjs +41 -23
  156. package/fesm2022/primeng-icons-eye.mjs.map +1 -1
  157. package/fesm2022/primeng-icons-eyeslash.mjs +46 -28
  158. package/fesm2022/primeng-icons-eyeslash.mjs.map +1 -1
  159. package/fesm2022/primeng-icons-filter.mjs +46 -28
  160. package/fesm2022/primeng-icons-filter.mjs.map +1 -1
  161. package/fesm2022/primeng-icons-filterfill.mjs +41 -23
  162. package/fesm2022/primeng-icons-filterfill.mjs.map +1 -1
  163. package/fesm2022/primeng-icons-filterslash.mjs +46 -28
  164. package/fesm2022/primeng-icons-filterslash.mjs.map +1 -1
  165. package/fesm2022/primeng-icons-home.mjs +46 -28
  166. package/fesm2022/primeng-icons-home.mjs.map +1 -1
  167. package/fesm2022/primeng-icons-infocircle.mjs +46 -28
  168. package/fesm2022/primeng-icons-infocircle.mjs.map +1 -1
  169. package/fesm2022/primeng-icons-minus.mjs +41 -23
  170. package/fesm2022/primeng-icons-minus.mjs.map +1 -1
  171. package/fesm2022/primeng-icons-pencil.mjs +46 -28
  172. package/fesm2022/primeng-icons-pencil.mjs.map +1 -1
  173. package/fesm2022/primeng-icons-plus.mjs +46 -28
  174. package/fesm2022/primeng-icons-plus.mjs.map +1 -1
  175. package/fesm2022/primeng-icons-refresh.mjs +46 -28
  176. package/fesm2022/primeng-icons-refresh.mjs.map +1 -1
  177. package/fesm2022/primeng-icons-search.mjs +46 -28
  178. package/fesm2022/primeng-icons-search.mjs.map +1 -1
  179. package/fesm2022/primeng-icons-searchminus.mjs +46 -28
  180. package/fesm2022/primeng-icons-searchminus.mjs.map +1 -1
  181. package/fesm2022/primeng-icons-searchplus.mjs +46 -28
  182. package/fesm2022/primeng-icons-searchplus.mjs.map +1 -1
  183. package/fesm2022/primeng-icons-sortalt.mjs +46 -28
  184. package/fesm2022/primeng-icons-sortalt.mjs.map +1 -1
  185. package/fesm2022/primeng-icons-sortamountdown.mjs +46 -28
  186. package/fesm2022/primeng-icons-sortamountdown.mjs.map +1 -1
  187. package/fesm2022/primeng-icons-sortamountupalt.mjs +46 -28
  188. package/fesm2022/primeng-icons-sortamountupalt.mjs.map +1 -1
  189. package/fesm2022/primeng-icons-spinner.mjs +46 -28
  190. package/fesm2022/primeng-icons-spinner.mjs.map +1 -1
  191. package/fesm2022/primeng-icons-star.mjs +46 -28
  192. package/fesm2022/primeng-icons-star.mjs.map +1 -1
  193. package/fesm2022/primeng-icons-starfill.mjs +46 -28
  194. package/fesm2022/primeng-icons-starfill.mjs.map +1 -1
  195. package/fesm2022/primeng-icons-thlarge.mjs +46 -28
  196. package/fesm2022/primeng-icons-thlarge.mjs.map +1 -1
  197. package/fesm2022/primeng-icons-times.mjs +41 -23
  198. package/fesm2022/primeng-icons-times.mjs.map +1 -1
  199. package/fesm2022/primeng-icons-timescircle.mjs +46 -28
  200. package/fesm2022/primeng-icons-timescircle.mjs.map +1 -1
  201. package/fesm2022/primeng-icons-trash.mjs +46 -28
  202. package/fesm2022/primeng-icons-trash.mjs.map +1 -1
  203. package/fesm2022/primeng-icons-undo.mjs +46 -28
  204. package/fesm2022/primeng-icons-undo.mjs.map +1 -1
  205. package/fesm2022/primeng-icons-upload.mjs +46 -28
  206. package/fesm2022/primeng-icons-upload.mjs.map +1 -1
  207. package/fesm2022/primeng-icons-windowmaximize.mjs +46 -28
  208. package/fesm2022/primeng-icons-windowmaximize.mjs.map +1 -1
  209. package/fesm2022/primeng-icons-windowminimize.mjs +46 -28
  210. package/fesm2022/primeng-icons-windowminimize.mjs.map +1 -1
  211. package/fesm2022/primeng-icons.mjs +53 -63
  212. package/fesm2022/primeng-iftalabel.mjs +153 -86
  213. package/fesm2022/primeng-iftalabel.mjs.map +1 -1
  214. package/fesm2022/primeng-image.mjs +1006 -534
  215. package/fesm2022/primeng-image.mjs.map +1 -1
  216. package/fesm2022/primeng-imagecompare.mjs +325 -165
  217. package/fesm2022/primeng-imagecompare.mjs.map +1 -1
  218. package/fesm2022/primeng-inplace.mjs +401 -199
  219. package/fesm2022/primeng-inplace.mjs.map +1 -1
  220. package/fesm2022/primeng-inputcolor.mjs +2631 -2180
  221. package/fesm2022/primeng-inputcolor.mjs.map +1 -1
  222. package/fesm2022/primeng-inputgroup.mjs +159 -91
  223. package/fesm2022/primeng-inputgroup.mjs.map +1 -1
  224. package/fesm2022/primeng-inputgroupaddon.mjs +153 -68
  225. package/fesm2022/primeng-inputgroupaddon.mjs.map +1 -1
  226. package/fesm2022/primeng-inputicon.mjs +173 -72
  227. package/fesm2022/primeng-inputicon.mjs.map +1 -1
  228. package/fesm2022/primeng-inputmask.mjs +1607 -1379
  229. package/fesm2022/primeng-inputmask.mjs.map +1 -1
  230. package/fesm2022/primeng-inputnumber.mjs +1646 -1305
  231. package/fesm2022/primeng-inputnumber.mjs.map +1 -1
  232. package/fesm2022/primeng-inputotp.mjs +571 -375
  233. package/fesm2022/primeng-inputotp.mjs.map +1 -1
  234. package/fesm2022/primeng-inputpassword.mjs +179 -98
  235. package/fesm2022/primeng-inputpassword.mjs.map +1 -1
  236. package/fesm2022/primeng-inputtags.mjs +1212 -588
  237. package/fesm2022/primeng-inputtags.mjs.map +1 -1
  238. package/fesm2022/primeng-inputtext.mjs +325 -170
  239. package/fesm2022/primeng-inputtext.mjs.map +1 -1
  240. package/fesm2022/primeng-keyfilter.mjs +268 -243
  241. package/fesm2022/primeng-keyfilter.mjs.map +1 -1
  242. package/fesm2022/primeng-knob.mjs +627 -403
  243. package/fesm2022/primeng-knob.mjs.map +1 -1
  244. package/fesm2022/primeng-label.mjs +143 -81
  245. package/fesm2022/primeng-label.mjs.map +1 -1
  246. package/fesm2022/primeng-license.mjs +10 -36
  247. package/fesm2022/primeng-license.mjs.map +1 -1
  248. package/fesm2022/primeng-listbox.mjs +2409 -1593
  249. package/fesm2022/primeng-listbox.mjs.map +1 -1
  250. package/fesm2022/primeng-megamenu.mjs +2006 -1117
  251. package/fesm2022/primeng-megamenu.mjs.map +1 -1
  252. package/fesm2022/primeng-menu.mjs +1437 -845
  253. package/fesm2022/primeng-menu.mjs.map +1 -1
  254. package/fesm2022/primeng-menubar.mjs +1832 -972
  255. package/fesm2022/primeng-menubar.mjs.map +1 -1
  256. package/fesm2022/primeng-message.mjs +474 -243
  257. package/fesm2022/primeng-message.mjs.map +1 -1
  258. package/fesm2022/primeng-metergroup.mjs +663 -331
  259. package/fesm2022/primeng-metergroup.mjs.map +1 -1
  260. package/fesm2022/primeng-motion.mjs +1179 -690
  261. package/fesm2022/primeng-motion.mjs.map +1 -1
  262. package/fesm2022/primeng-multiselect.mjs +3406 -1898
  263. package/fesm2022/primeng-multiselect.mjs.map +1 -1
  264. package/fesm2022/primeng-orderlist.mjs +1308 -678
  265. package/fesm2022/primeng-orderlist.mjs.map +1 -1
  266. package/fesm2022/primeng-organizationchart.mjs +912 -597
  267. package/fesm2022/primeng-organizationchart.mjs.map +1 -1
  268. package/fesm2022/primeng-overlay.mjs +929 -610
  269. package/fesm2022/primeng-overlay.mjs.map +1 -1
  270. package/fesm2022/primeng-overlaybadge.mjs +291 -107
  271. package/fesm2022/primeng-overlaybadge.mjs.map +1 -1
  272. package/fesm2022/primeng-paginator.mjs +961 -505
  273. package/fesm2022/primeng-paginator.mjs.map +1 -1
  274. package/fesm2022/primeng-panel.mjs +668 -347
  275. package/fesm2022/primeng-panel.mjs.map +1 -1
  276. package/fesm2022/primeng-panelmenu.mjs +1842 -966
  277. package/fesm2022/primeng-panelmenu.mjs.map +1 -1
  278. package/fesm2022/primeng-passthrough.mjs +10 -20
  279. package/fesm2022/primeng-passthrough.mjs.map +1 -1
  280. package/fesm2022/primeng-password.mjs +1518 -858
  281. package/fesm2022/primeng-password.mjs.map +1 -1
  282. package/fesm2022/primeng-picklist.mjs +2270 -1253
  283. package/fesm2022/primeng-picklist.mjs.map +1 -1
  284. package/fesm2022/primeng-popover.mjs +656 -434
  285. package/fesm2022/primeng-popover.mjs.map +1 -1
  286. package/fesm2022/primeng-progressbar.mjs +346 -168
  287. package/fesm2022/primeng-progressbar.mjs.map +1 -1
  288. package/fesm2022/primeng-progressspinner.mjs +338 -188
  289. package/fesm2022/primeng-progressspinner.mjs.map +1 -1
  290. package/fesm2022/primeng-radiobutton.mjs +499 -294
  291. package/fesm2022/primeng-radiobutton.mjs.map +1 -1
  292. package/fesm2022/primeng-rating.mjs +583 -352
  293. package/fesm2022/primeng-rating.mjs.map +1 -1
  294. package/fesm2022/primeng-ripple.mjs +194 -170
  295. package/fesm2022/primeng-ripple.mjs.map +1 -1
  296. package/fesm2022/primeng-scrollarea.mjs +1018 -721
  297. package/fesm2022/primeng-scrollarea.mjs.map +1 -1
  298. package/fesm2022/primeng-scroller.mjs +1386 -1047
  299. package/fesm2022/primeng-scroller.mjs.map +1 -1
  300. package/fesm2022/primeng-scrollpanel.mjs +568 -454
  301. package/fesm2022/primeng-scrollpanel.mjs.map +1 -1
  302. package/fesm2022/primeng-scrolltop.mjs +509 -261
  303. package/fesm2022/primeng-scrolltop.mjs.map +1 -1
  304. package/fesm2022/primeng-select.mjs +2948 -1714
  305. package/fesm2022/primeng-select.mjs.map +1 -1
  306. package/fesm2022/primeng-selectbutton.mjs +629 -339
  307. package/fesm2022/primeng-selectbutton.mjs.map +1 -1
  308. package/fesm2022/primeng-sidebar.mjs +2561 -1413
  309. package/fesm2022/primeng-sidebar.mjs.map +1 -1
  310. package/fesm2022/primeng-skeleton.mjs +300 -157
  311. package/fesm2022/primeng-skeleton.mjs.map +1 -1
  312. package/fesm2022/primeng-slider.mjs +841 -604
  313. package/fesm2022/primeng-slider.mjs.map +1 -1
  314. package/fesm2022/primeng-speeddial.mjs +1115 -704
  315. package/fesm2022/primeng-speeddial.mjs.map +1 -1
  316. package/fesm2022/primeng-splitbutton.mjs +889 -340
  317. package/fesm2022/primeng-splitbutton.mjs.map +1 -1
  318. package/fesm2022/primeng-splitter.mjs +997 -762
  319. package/fesm2022/primeng-splitter.mjs.map +1 -1
  320. package/fesm2022/primeng-stepper.mjs +1355 -645
  321. package/fesm2022/primeng-stepper.mjs.map +1 -1
  322. package/fesm2022/primeng-steps.mjs +523 -407
  323. package/fesm2022/primeng-steps.mjs.map +1 -1
  324. package/fesm2022/primeng-styleclass.mjs +446 -330
  325. package/fesm2022/primeng-styleclass.mjs.map +1 -1
  326. package/fesm2022/primeng-table.mjs +9765 -5849
  327. package/fesm2022/primeng-table.mjs.map +1 -1
  328. package/fesm2022/primeng-tabs.mjs +1357 -815
  329. package/fesm2022/primeng-tabs.mjs.map +1 -1
  330. package/fesm2022/primeng-tag.mjs +305 -151
  331. package/fesm2022/primeng-tag.mjs.map +1 -1
  332. package/fesm2022/primeng-terminal.mjs +368 -216
  333. package/fesm2022/primeng-terminal.mjs.map +1 -1
  334. package/fesm2022/primeng-textarea.mjs +345 -204
  335. package/fesm2022/primeng-textarea.mjs.map +1 -1
  336. package/fesm2022/primeng-tieredmenu.mjs +1917 -1094
  337. package/fesm2022/primeng-tieredmenu.mjs.map +1 -1
  338. package/fesm2022/primeng-timeline.mjs +304 -165
  339. package/fesm2022/primeng-timeline.mjs.map +1 -1
  340. package/fesm2022/primeng-toast.mjs +1369 -928
  341. package/fesm2022/primeng-toast.mjs.map +1 -1
  342. package/fesm2022/primeng-togglebutton.mjs +563 -309
  343. package/fesm2022/primeng-togglebutton.mjs.map +1 -1
  344. package/fesm2022/primeng-toggleswitch.mjs +464 -237
  345. package/fesm2022/primeng-toggleswitch.mjs.map +1 -1
  346. package/fesm2022/primeng-toolbar.mjs +299 -129
  347. package/fesm2022/primeng-toolbar.mjs.map +1 -1
  348. package/fesm2022/primeng-tooltip.mjs +1018 -765
  349. package/fesm2022/primeng-tooltip.mjs.map +1 -1
  350. package/fesm2022/primeng-tree.mjs +2681 -1888
  351. package/fesm2022/primeng-tree.mjs.map +1 -1
  352. package/fesm2022/primeng-treeselect.mjs +1678 -927
  353. package/fesm2022/primeng-treeselect.mjs.map +1 -1
  354. package/fesm2022/primeng-treetable.mjs +5849 -3742
  355. package/fesm2022/primeng-treetable.mjs.map +1 -1
  356. package/fesm2022/primeng-ts-helpers.mjs +0 -4
  357. package/fesm2022/primeng-types-accordion.mjs +0 -4
  358. package/fesm2022/primeng-types-autocomplete.mjs +0 -4
  359. package/fesm2022/primeng-types-avatar.mjs +0 -4
  360. package/fesm2022/primeng-types-avatargroup.mjs +0 -4
  361. package/fesm2022/primeng-types-badge.mjs +0 -4
  362. package/fesm2022/primeng-types-blockui.mjs +0 -4
  363. package/fesm2022/primeng-types-breadcrumb.mjs +0 -4
  364. package/fesm2022/primeng-types-button.mjs +0 -4
  365. package/fesm2022/primeng-types-card.mjs +0 -4
  366. package/fesm2022/primeng-types-carousel.mjs +0 -4
  367. package/fesm2022/primeng-types-cascadeselect.mjs +0 -4
  368. package/fesm2022/primeng-types-chart.mjs +0 -4
  369. package/fesm2022/primeng-types-checkbox.mjs +0 -4
  370. package/fesm2022/primeng-types-chip.mjs +0 -4
  371. package/fesm2022/primeng-types-colorpicker.mjs +0 -4
  372. package/fesm2022/primeng-types-commandmenu.mjs +0 -4
  373. package/fesm2022/primeng-types-compare.mjs +0 -4
  374. package/fesm2022/primeng-types-confirmdialog.mjs +0 -4
  375. package/fesm2022/primeng-types-confirmpopup.mjs +0 -4
  376. package/fesm2022/primeng-types-contextmenu.mjs +0 -4
  377. package/fesm2022/primeng-types-dataview.mjs +0 -4
  378. package/fesm2022/primeng-types-datepicker.mjs +0 -4
  379. package/fesm2022/primeng-types-dialog.mjs +0 -4
  380. package/fesm2022/primeng-types-divider.mjs +0 -4
  381. package/fesm2022/primeng-types-dock.mjs +0 -4
  382. package/fesm2022/primeng-types-drawer.mjs +0 -4
  383. package/fesm2022/primeng-types-editor.mjs +0 -4
  384. package/fesm2022/primeng-types-fieldset.mjs +0 -4
  385. package/fesm2022/primeng-types-fileupload.mjs +0 -4
  386. package/fesm2022/primeng-types-floatlabel.mjs +0 -4
  387. package/fesm2022/primeng-types-fluid.mjs +0 -4
  388. package/fesm2022/primeng-types-galleria.mjs +0 -4
  389. package/fesm2022/primeng-types-gallery.mjs +0 -4
  390. package/fesm2022/primeng-types-iconfield.mjs +0 -4
  391. package/fesm2022/primeng-types-iftalabel.mjs +0 -4
  392. package/fesm2022/primeng-types-image.mjs +0 -4
  393. package/fesm2022/primeng-types-imagecompare.mjs +0 -4
  394. package/fesm2022/primeng-types-inplace.mjs +0 -4
  395. package/fesm2022/primeng-types-inputcolor.mjs +0 -4
  396. package/fesm2022/primeng-types-inputgroup.mjs +0 -4
  397. package/fesm2022/primeng-types-inputgroupaddon.mjs +0 -4
  398. package/fesm2022/primeng-types-inputicon.mjs +0 -4
  399. package/fesm2022/primeng-types-inputmask.mjs +0 -4
  400. package/fesm2022/primeng-types-inputnumber.mjs +0 -4
  401. package/fesm2022/primeng-types-inputotp.mjs +0 -4
  402. package/fesm2022/primeng-types-inputpassword.mjs +0 -4
  403. package/fesm2022/primeng-types-inputtags.mjs +0 -4
  404. package/fesm2022/primeng-types-inputtext.mjs +0 -4
  405. package/fesm2022/primeng-types-knob.mjs +0 -4
  406. package/fesm2022/primeng-types-label.mjs +0 -4
  407. package/fesm2022/primeng-types-listbox.mjs +0 -4
  408. package/fesm2022/primeng-types-megamenu.mjs +0 -4
  409. package/fesm2022/primeng-types-menu.mjs +0 -4
  410. package/fesm2022/primeng-types-menubar.mjs +0 -4
  411. package/fesm2022/primeng-types-message.mjs +0 -4
  412. package/fesm2022/primeng-types-metergroup.mjs +0 -4
  413. package/fesm2022/primeng-types-motion.mjs +0 -4
  414. package/fesm2022/primeng-types-multiselect.mjs +0 -4
  415. package/fesm2022/primeng-types-orderlist.mjs +0 -4
  416. package/fesm2022/primeng-types-organizationchart.mjs +0 -4
  417. package/fesm2022/primeng-types-overlay.mjs +0 -4
  418. package/fesm2022/primeng-types-overlaybadge.mjs +0 -4
  419. package/fesm2022/primeng-types-paginator.mjs +0 -4
  420. package/fesm2022/primeng-types-panel.mjs +0 -4
  421. package/fesm2022/primeng-types-panelmenu.mjs +0 -4
  422. package/fesm2022/primeng-types-password.mjs +0 -4
  423. package/fesm2022/primeng-types-picklist.mjs +0 -4
  424. package/fesm2022/primeng-types-popover.mjs +0 -4
  425. package/fesm2022/primeng-types-progressbar.mjs +0 -4
  426. package/fesm2022/primeng-types-progressspinner.mjs +0 -4
  427. package/fesm2022/primeng-types-radiobutton.mjs +0 -4
  428. package/fesm2022/primeng-types-rating.mjs +0 -4
  429. package/fesm2022/primeng-types-scrollarea.mjs +0 -4
  430. package/fesm2022/primeng-types-scroller.mjs +0 -4
  431. package/fesm2022/primeng-types-scrollpanel.mjs +0 -4
  432. package/fesm2022/primeng-types-scrolltop.mjs +0 -4
  433. package/fesm2022/primeng-types-select.mjs +0 -4
  434. package/fesm2022/primeng-types-selectbutton.mjs +0 -4
  435. package/fesm2022/primeng-types-shared.mjs +0 -4
  436. package/fesm2022/primeng-types-sidebar.mjs +0 -4
  437. package/fesm2022/primeng-types-skeleton.mjs +0 -4
  438. package/fesm2022/primeng-types-slider.mjs +0 -4
  439. package/fesm2022/primeng-types-speeddial.mjs +0 -4
  440. package/fesm2022/primeng-types-splitbutton.mjs +0 -4
  441. package/fesm2022/primeng-types-splitter.mjs +0 -4
  442. package/fesm2022/primeng-types-stepper.mjs +0 -4
  443. package/fesm2022/primeng-types-table.mjs +0 -4
  444. package/fesm2022/primeng-types-tabs.mjs +0 -4
  445. package/fesm2022/primeng-types-tag.mjs +0 -4
  446. package/fesm2022/primeng-types-terminal.mjs +0 -4
  447. package/fesm2022/primeng-types-textarea.mjs +0 -4
  448. package/fesm2022/primeng-types-tieredmenu.mjs +0 -4
  449. package/fesm2022/primeng-types-timeline.mjs +0 -4
  450. package/fesm2022/primeng-types-toast.mjs +0 -4
  451. package/fesm2022/primeng-types-togglebutton.mjs +0 -4
  452. package/fesm2022/primeng-types-toggleswitch.mjs +0 -4
  453. package/fesm2022/primeng-types-toolbar.mjs +0 -4
  454. package/fesm2022/primeng-types-tooltip.mjs +0 -4
  455. package/fesm2022/primeng-types-tree.mjs +0 -4
  456. package/fesm2022/primeng-types-treeselect.mjs +0 -4
  457. package/fesm2022/primeng-types-treetable.mjs +0 -4
  458. package/fesm2022/primeng-usestyle.mjs +105 -109
  459. package/fesm2022/primeng-usestyle.mjs.map +1 -1
  460. package/fesm2022/primeng-utils.mjs +238 -328
  461. package/fesm2022/primeng-utils.mjs.map +1 -1
  462. package/fesm2022/primeng.mjs +1 -5
  463. package/fesm2022/primeng.mjs.map +1 -1
  464. package/package.json +7 -2
  465. package/types/primeng-accordion.d.ts +289 -221
  466. package/types/primeng-animateonscroll.d.ts +89 -61
  467. package/types/primeng-api.d.ts +1760 -1790
  468. package/types/primeng-autocomplete.d.ts +1054 -757
  469. package/types/primeng-autofocus.d.ts +27 -24
  470. package/types/primeng-avatar.d.ts +153 -117
  471. package/types/primeng-avatargroup.d.ts +46 -43
  472. package/types/primeng-badge.d.ts +105 -81
  473. package/types/primeng-base.d.ts +49 -52
  474. package/types/primeng-basecomponent.d.ts +191 -174
  475. package/types/primeng-baseeditableholder.d.ts +63 -45
  476. package/types/primeng-baseinput.d.ts +122 -74
  477. package/types/primeng-basemodelholder.d.ts +9 -12
  478. package/types/primeng-bind.d.ts +36 -32
  479. package/types/primeng-blockui.d.ts +99 -80
  480. package/types/primeng-breadcrumb.d.ts +159 -133
  481. package/types/primeng-button.d.ts +690 -427
  482. package/types/primeng-buttongroup.d.ts +27 -33
  483. package/types/primeng-card.d.ts +131 -122
  484. package/types/primeng-carousel.d.ts +800 -632
  485. package/types/primeng-cascadeselect.d.ts +754 -565
  486. package/types/primeng-chart.d.ts +160 -116
  487. package/types/primeng-checkbox.d.ts +299 -211
  488. package/types/primeng-chip.d.ts +189 -147
  489. package/types/primeng-classnames.d.ts +23 -21
  490. package/types/primeng-colorpicker.d.ts +325 -272
  491. package/types/primeng-commandmenu.d.ts +213 -165
  492. package/types/primeng-compare.d.ts +267 -191
  493. package/types/primeng-config.d.ts +294 -304
  494. package/types/primeng-confirmdialog.d.ts +505 -328
  495. package/types/primeng-confirmpopup.d.ts +254 -214
  496. package/types/primeng-contextmenu.d.ts +522 -368
  497. package/types/primeng-dataview.d.ts +498 -345
  498. package/types/primeng-datepicker.d.ts +1269 -972
  499. package/types/primeng-dialog.d.ts +668 -465
  500. package/types/primeng-divider.d.ts +114 -100
  501. package/types/primeng-dock.d.ts +207 -175
  502. package/types/primeng-dom.d.ts +97 -100
  503. package/types/primeng-dragdrop.d.ts +142 -107
  504. package/types/primeng-drawer.d.ts +355 -257
  505. package/types/primeng-dynamicdialog.d.ts +528 -540
  506. package/types/primeng-editor.d.ts +211 -165
  507. package/types/primeng-fieldset.d.ts +199 -166
  508. package/types/primeng-fileupload.d.ts +727 -526
  509. package/types/primeng-floatlabel.d.ts +55 -51
  510. package/types/primeng-fluid.d.ts +37 -39
  511. package/types/primeng-focustrap.d.ts +30 -27
  512. package/types/primeng-galleria.d.ts +570 -433
  513. package/types/primeng-gallery.d.ts +754 -552
  514. package/types/primeng-iconfield.d.ts +54 -45
  515. package/types/primeng-icons-angledoubledown.d.ts +6 -9
  516. package/types/primeng-icons-angledoubleleft.d.ts +6 -9
  517. package/types/primeng-icons-angledoubleright.d.ts +6 -9
  518. package/types/primeng-icons-angledoubleup.d.ts +6 -9
  519. package/types/primeng-icons-angledown.d.ts +6 -9
  520. package/types/primeng-icons-angleleft.d.ts +6 -9
  521. package/types/primeng-icons-angleright.d.ts +6 -9
  522. package/types/primeng-icons-angleup.d.ts +6 -9
  523. package/types/primeng-icons-arrowdown.d.ts +8 -11
  524. package/types/primeng-icons-arrowdownleft.d.ts +6 -9
  525. package/types/primeng-icons-arrowdownright.d.ts +6 -9
  526. package/types/primeng-icons-arrowleft.d.ts +8 -11
  527. package/types/primeng-icons-arrowright.d.ts +6 -9
  528. package/types/primeng-icons-arrowup.d.ts +8 -11
  529. package/types/primeng-icons-ban.d.ts +8 -11
  530. package/types/primeng-icons-bars.d.ts +6 -9
  531. package/types/primeng-icons-baseicon.d.ts +24 -25
  532. package/types/primeng-icons-blank.d.ts +6 -9
  533. package/types/primeng-icons-calendar.d.ts +6 -9
  534. package/types/primeng-icons-caretleft.d.ts +6 -9
  535. package/types/primeng-icons-caretright.d.ts +6 -9
  536. package/types/primeng-icons-check.d.ts +6 -9
  537. package/types/primeng-icons-chevrondown.d.ts +6 -9
  538. package/types/primeng-icons-chevronleft.d.ts +6 -9
  539. package/types/primeng-icons-chevronright.d.ts +6 -9
  540. package/types/primeng-icons-chevronup.d.ts +6 -9
  541. package/types/primeng-icons-exclamationtriangle.d.ts +8 -11
  542. package/types/primeng-icons-eye.d.ts +6 -9
  543. package/types/primeng-icons-eyeslash.d.ts +8 -11
  544. package/types/primeng-icons-filter.d.ts +8 -11
  545. package/types/primeng-icons-filterfill.d.ts +6 -9
  546. package/types/primeng-icons-filterslash.d.ts +8 -11
  547. package/types/primeng-icons-home.d.ts +8 -11
  548. package/types/primeng-icons-infocircle.d.ts +8 -11
  549. package/types/primeng-icons-minus.d.ts +6 -9
  550. package/types/primeng-icons-pencil.d.ts +8 -11
  551. package/types/primeng-icons-plus.d.ts +8 -11
  552. package/types/primeng-icons-refresh.d.ts +8 -11
  553. package/types/primeng-icons-search.d.ts +8 -11
  554. package/types/primeng-icons-searchminus.d.ts +8 -11
  555. package/types/primeng-icons-searchplus.d.ts +8 -11
  556. package/types/primeng-icons-sortalt.d.ts +8 -11
  557. package/types/primeng-icons-sortamountdown.d.ts +8 -11
  558. package/types/primeng-icons-sortamountupalt.d.ts +8 -11
  559. package/types/primeng-icons-spinner.d.ts +8 -11
  560. package/types/primeng-icons-star.d.ts +8 -11
  561. package/types/primeng-icons-starfill.d.ts +8 -11
  562. package/types/primeng-icons-thlarge.d.ts +8 -11
  563. package/types/primeng-icons-times.d.ts +6 -9
  564. package/types/primeng-icons-timescircle.d.ts +8 -11
  565. package/types/primeng-icons-trash.d.ts +8 -11
  566. package/types/primeng-icons-undo.d.ts +8 -11
  567. package/types/primeng-icons-upload.d.ts +8 -11
  568. package/types/primeng-icons-windowmaximize.d.ts +8 -11
  569. package/types/primeng-icons-windowminimize.d.ts +8 -11
  570. package/types/primeng-icons.d.ts +53 -53
  571. package/types/primeng-iftalabel.d.ts +38 -40
  572. package/types/primeng-image.d.ts +404 -311
  573. package/types/primeng-imagecompare.d.ts +94 -80
  574. package/types/primeng-inplace.d.ts +126 -114
  575. package/types/primeng-inputcolor.d.ts +645 -508
  576. package/types/primeng-inputgroup.d.ts +42 -44
  577. package/types/primeng-inputgroupaddon.d.ts +31 -31
  578. package/types/primeng-inputicon.d.ts +38 -32
  579. package/types/primeng-inputmask.d.ts +520 -365
  580. package/types/primeng-inputnumber.d.ts +573 -408
  581. package/types/primeng-inputotp.d.ts +206 -159
  582. package/types/primeng-inputpassword.d.ts +60 -47
  583. package/types/primeng-inputtags.d.ts +453 -301
  584. package/types/primeng-inputtext.d.ts +130 -96
  585. package/types/primeng-keyfilter.d.ts +62 -53
  586. package/types/primeng-knob.d.ts +257 -186
  587. package/types/primeng-label.d.ts +37 -39
  588. package/types/primeng-license.d.ts +1 -3
  589. package/types/primeng-listbox.d.ts +1040 -786
  590. package/types/primeng-megamenu.d.ts +536 -386
  591. package/types/primeng-menu.d.ts +478 -363
  592. package/types/primeng-menubar.d.ts +495 -354
  593. package/types/primeng-message.d.ts +192 -151
  594. package/types/primeng-metergroup.d.ts +249 -189
  595. package/types/primeng-motion.d.ts +601 -385
  596. package/types/primeng-multiselect.d.ts +1193 -861
  597. package/types/primeng-orderlist.d.ts +539 -393
  598. package/types/primeng-organizationchart.d.ts +236 -195
  599. package/types/primeng-overlay.d.ts +394 -294
  600. package/types/primeng-overlaybadge.d.ts +95 -64
  601. package/types/primeng-paginator.d.ts +410 -314
  602. package/types/primeng-panel.d.ts +267 -217
  603. package/types/primeng-panelmenu.d.ts +255 -231
  604. package/types/primeng-passthrough.d.ts +5 -7
  605. package/types/primeng-password.d.ts +606 -433
  606. package/types/primeng-picklist.d.ts +1042 -759
  607. package/types/primeng-popover.d.ts +235 -176
  608. package/types/primeng-progressbar.d.ts +131 -102
  609. package/types/primeng-progressspinner.d.ts +145 -111
  610. package/types/primeng-radiobutton.d.ts +219 -171
  611. package/types/primeng-rating.d.ts +240 -192
  612. package/types/primeng-ripple.d.ts +39 -45
  613. package/types/primeng-scrollarea.d.ts +292 -243
  614. package/types/primeng-scroller.d.ts +523 -390
  615. package/types/primeng-scrollpanel.d.ts +135 -131
  616. package/types/primeng-scrolltop.d.ts +170 -126
  617. package/types/primeng-select.d.ts +1014 -741
  618. package/types/primeng-selectbutton.d.ts +239 -167
  619. package/types/primeng-sidebar.d.ts +793 -562
  620. package/types/primeng-skeleton.d.ts +116 -87
  621. package/types/primeng-slider.d.ts +378 -311
  622. package/types/primeng-speeddial.d.ts +495 -375
  623. package/types/primeng-splitbutton.d.ts +382 -243
  624. package/types/primeng-splitter.d.ts +392 -301
  625. package/types/primeng-stepper.d.ts +417 -257
  626. package/types/primeng-steps.d.ts +158 -137
  627. package/types/primeng-styleclass.d.ts +163 -105
  628. package/types/primeng-table.d.ts +2898 -1912
  629. package/types/primeng-tabs.d.ts +463 -307
  630. package/types/primeng-tag.d.ts +107 -88
  631. package/types/primeng-terminal.d.ts +132 -120
  632. package/types/primeng-textarea.d.ts +146 -110
  633. package/types/primeng-tieredmenu.d.ts +573 -401
  634. package/types/primeng-timeline.d.ts +126 -112
  635. package/types/primeng-toast.d.ts +313 -252
  636. package/types/primeng-togglebutton.d.ts +255 -185
  637. package/types/primeng-toggleswitch.d.ts +190 -144
  638. package/types/primeng-toolbar.d.ts +83 -79
  639. package/types/primeng-tooltip.d.ts +335 -235
  640. package/types/primeng-tree.d.ts +763 -562
  641. package/types/primeng-treeselect.d.ts +750 -544
  642. package/types/primeng-treetable.d.ts +1839 -1315
  643. package/types/primeng-ts-helpers.d.ts +4 -6
  644. package/types/primeng-types-accordion.d.ts +58 -62
  645. package/types/primeng-types-autocomplete.d.ts +230 -233
  646. package/types/primeng-types-avatar.d.ts +25 -28
  647. package/types/primeng-types-avatargroup.d.ts +11 -14
  648. package/types/primeng-types-badge.d.ts +13 -16
  649. package/types/primeng-types-blockui.d.ts +18 -21
  650. package/types/primeng-types-breadcrumb.d.ts +65 -68
  651. package/types/primeng-types-button.d.ts +106 -109
  652. package/types/primeng-types-card.d.ts +54 -57
  653. package/types/primeng-types-carousel.d.ts +143 -146
  654. package/types/primeng-types-cascadeselect.d.ts +186 -192
  655. package/types/primeng-types-chart.d.ts +34 -39
  656. package/types/primeng-types-checkbox.d.ts +52 -55
  657. package/types/primeng-types-chip.d.ts +48 -51
  658. package/types/primeng-types-colorpicker.d.ts +59 -62
  659. package/types/primeng-types-commandmenu.d.ts +98 -101
  660. package/types/primeng-types-compare.d.ts +33 -36
  661. package/types/primeng-types-confirmdialog.d.ts +124 -127
  662. package/types/primeng-types-confirmpopup.d.ts +75 -78
  663. package/types/primeng-types-contextmenu.d.ts +100 -103
  664. package/types/primeng-types-dataview.d.ts +180 -183
  665. package/types/primeng-types-datepicker.d.ts +442 -445
  666. package/types/primeng-types-dialog.d.ts +93 -96
  667. package/types/primeng-types-divider.d.ts +14 -17
  668. package/types/primeng-types-dock.d.ts +45 -48
  669. package/types/primeng-types-drawer.d.ts +62 -65
  670. package/types/primeng-types-editor.d.ts +143 -146
  671. package/types/primeng-types-fieldset.d.ts +83 -87
  672. package/types/primeng-types-fileupload.d.ts +296 -301
  673. package/types/primeng-types-floatlabel.d.ts +12 -15
  674. package/types/primeng-types-fluid.d.ts +11 -14
  675. package/types/primeng-types-galleria.d.ts +209 -212
  676. package/types/primeng-types-gallery.d.ts +195 -198
  677. package/types/primeng-types-iconfield.d.ts +12 -15
  678. package/types/primeng-types-iftalabel.d.ts +11 -14
  679. package/types/primeng-types-image.d.ts +118 -121
  680. package/types/primeng-types-imagecompare.d.ts +22 -25
  681. package/types/primeng-types-inplace.d.ts +46 -49
  682. package/types/primeng-types-inputcolor.d.ts +86 -89
  683. package/types/primeng-types-inputgroup.d.ts +11 -14
  684. package/types/primeng-types-inputgroupaddon.d.ts +11 -14
  685. package/types/primeng-types-inputicon.d.ts +11 -14
  686. package/types/primeng-types-inputmask.d.ts +30 -33
  687. package/types/primeng-types-inputnumber.d.ts +72 -75
  688. package/types/primeng-types-inputotp.d.ts +67 -70
  689. package/types/primeng-types-inputpassword.d.ts +7 -10
  690. package/types/primeng-types-inputtags.d.ts +122 -125
  691. package/types/primeng-types-inputtext.d.ts +7 -10
  692. package/types/primeng-types-knob.d.ts +23 -26
  693. package/types/primeng-types-label.d.ts +7 -10
  694. package/types/primeng-types-listbox.d.ts +262 -266
  695. package/types/primeng-types-megamenu.d.ts +135 -138
  696. package/types/primeng-types-menu.d.ts +98 -101
  697. package/types/primeng-types-menubar.d.ts +122 -125
  698. package/types/primeng-types-message.d.ts +69 -72
  699. package/types/primeng-types-metergroup.d.ts +137 -140
  700. package/types/primeng-types-motion.d.ts +11 -14
  701. package/types/primeng-types-multiselect.d.ts +329 -333
  702. package/types/primeng-types-orderlist.d.ts +126 -129
  703. package/types/primeng-types-organizationchart.d.ts +147 -153
  704. package/types/primeng-types-overlay.d.ts +31 -34
  705. package/types/primeng-types-overlaybadge.d.ts +17 -20
  706. package/types/primeng-types-paginator.d.ts +131 -134
  707. package/types/primeng-types-panel.d.ts +91 -95
  708. package/types/primeng-types-panelmenu.d.ts +150 -153
  709. package/types/primeng-types-password.d.ts +94 -97
  710. package/types/primeng-types-picklist.d.ts +250 -260
  711. package/types/primeng-types-popover.d.ts +33 -36
  712. package/types/primeng-types-progressbar.d.ts +33 -36
  713. package/types/primeng-types-progressspinner.d.ts +27 -30
  714. package/types/primeng-types-radiobutton.d.ts +29 -32
  715. package/types/primeng-types-rating.d.ts +62 -65
  716. package/types/primeng-types-scrollarea.d.ts +35 -38
  717. package/types/primeng-types-scroller.d.ts +142 -146
  718. package/types/primeng-types-scrollpanel.d.ts +31 -34
  719. package/types/primeng-types-scrolltop.d.ts +37 -40
  720. package/types/primeng-types-select.d.ts +251 -254
  721. package/types/primeng-types-selectbutton.d.ts +56 -59
  722. package/types/primeng-types-shared.d.ts +6 -9
  723. package/types/primeng-types-sidebar.d.ts +105 -108
  724. package/types/primeng-types-skeleton.d.ts +11 -14
  725. package/types/primeng-types-slider.d.ts +59 -62
  726. package/types/primeng-types-speeddial.d.ts +71 -74
  727. package/types/primeng-types-splitbutton.d.ts +35 -38
  728. package/types/primeng-types-splitter.d.ts +58 -63
  729. package/types/primeng-types-stepper.d.ts +77 -80
  730. package/types/primeng-types-table.d.ts +743 -749
  731. package/types/primeng-types-tabs.d.ts +48 -51
  732. package/types/primeng-types-tag.d.ts +27 -30
  733. package/types/primeng-types-terminal.d.ts +43 -46
  734. package/types/primeng-types-textarea.d.ts +11 -14
  735. package/types/primeng-types-tieredmenu.d.ts +154 -157
  736. package/types/primeng-types-timeline.d.ts +60 -63
  737. package/types/primeng-types-toast.d.ts +92 -95
  738. package/types/primeng-types-togglebutton.d.ts +52 -55
  739. package/types/primeng-types-toggleswitch.d.ts +41 -44
  740. package/types/primeng-types-toolbar.d.ts +34 -37
  741. package/types/primeng-types-tooltip.d.ts +17 -20
  742. package/types/primeng-types-tree.d.ts +237 -246
  743. package/types/primeng-types-treeselect.d.ts +198 -202
  744. package/types/primeng-types-treetable.d.ts +492 -497
  745. package/types/primeng-usestyle.d.ts +28 -31
  746. package/types/primeng-utils.d.ts +37 -40
  747. package/types/primeng.d.ts +2 -2
  748. package/fesm2022/primeng-icons.mjs.map +0 -1
  749. package/fesm2022/primeng-ts-helpers.mjs.map +0 -1
  750. package/fesm2022/primeng-types-accordion.mjs.map +0 -1
  751. package/fesm2022/primeng-types-autocomplete.mjs.map +0 -1
  752. package/fesm2022/primeng-types-avatar.mjs.map +0 -1
  753. package/fesm2022/primeng-types-avatargroup.mjs.map +0 -1
  754. package/fesm2022/primeng-types-badge.mjs.map +0 -1
  755. package/fesm2022/primeng-types-blockui.mjs.map +0 -1
  756. package/fesm2022/primeng-types-breadcrumb.mjs.map +0 -1
  757. package/fesm2022/primeng-types-button.mjs.map +0 -1
  758. package/fesm2022/primeng-types-card.mjs.map +0 -1
  759. package/fesm2022/primeng-types-carousel.mjs.map +0 -1
  760. package/fesm2022/primeng-types-cascadeselect.mjs.map +0 -1
  761. package/fesm2022/primeng-types-chart.mjs.map +0 -1
  762. package/fesm2022/primeng-types-checkbox.mjs.map +0 -1
  763. package/fesm2022/primeng-types-chip.mjs.map +0 -1
  764. package/fesm2022/primeng-types-colorpicker.mjs.map +0 -1
  765. package/fesm2022/primeng-types-commandmenu.mjs.map +0 -1
  766. package/fesm2022/primeng-types-compare.mjs.map +0 -1
  767. package/fesm2022/primeng-types-confirmdialog.mjs.map +0 -1
  768. package/fesm2022/primeng-types-confirmpopup.mjs.map +0 -1
  769. package/fesm2022/primeng-types-contextmenu.mjs.map +0 -1
  770. package/fesm2022/primeng-types-dataview.mjs.map +0 -1
  771. package/fesm2022/primeng-types-datepicker.mjs.map +0 -1
  772. package/fesm2022/primeng-types-dialog.mjs.map +0 -1
  773. package/fesm2022/primeng-types-divider.mjs.map +0 -1
  774. package/fesm2022/primeng-types-dock.mjs.map +0 -1
  775. package/fesm2022/primeng-types-drawer.mjs.map +0 -1
  776. package/fesm2022/primeng-types-editor.mjs.map +0 -1
  777. package/fesm2022/primeng-types-fieldset.mjs.map +0 -1
  778. package/fesm2022/primeng-types-fileupload.mjs.map +0 -1
  779. package/fesm2022/primeng-types-floatlabel.mjs.map +0 -1
  780. package/fesm2022/primeng-types-fluid.mjs.map +0 -1
  781. package/fesm2022/primeng-types-galleria.mjs.map +0 -1
  782. package/fesm2022/primeng-types-gallery.mjs.map +0 -1
  783. package/fesm2022/primeng-types-iconfield.mjs.map +0 -1
  784. package/fesm2022/primeng-types-iftalabel.mjs.map +0 -1
  785. package/fesm2022/primeng-types-image.mjs.map +0 -1
  786. package/fesm2022/primeng-types-imagecompare.mjs.map +0 -1
  787. package/fesm2022/primeng-types-inplace.mjs.map +0 -1
  788. package/fesm2022/primeng-types-inputcolor.mjs.map +0 -1
  789. package/fesm2022/primeng-types-inputgroup.mjs.map +0 -1
  790. package/fesm2022/primeng-types-inputgroupaddon.mjs.map +0 -1
  791. package/fesm2022/primeng-types-inputicon.mjs.map +0 -1
  792. package/fesm2022/primeng-types-inputmask.mjs.map +0 -1
  793. package/fesm2022/primeng-types-inputnumber.mjs.map +0 -1
  794. package/fesm2022/primeng-types-inputotp.mjs.map +0 -1
  795. package/fesm2022/primeng-types-inputpassword.mjs.map +0 -1
  796. package/fesm2022/primeng-types-inputtags.mjs.map +0 -1
  797. package/fesm2022/primeng-types-inputtext.mjs.map +0 -1
  798. package/fesm2022/primeng-types-knob.mjs.map +0 -1
  799. package/fesm2022/primeng-types-label.mjs.map +0 -1
  800. package/fesm2022/primeng-types-listbox.mjs.map +0 -1
  801. package/fesm2022/primeng-types-megamenu.mjs.map +0 -1
  802. package/fesm2022/primeng-types-menu.mjs.map +0 -1
  803. package/fesm2022/primeng-types-menubar.mjs.map +0 -1
  804. package/fesm2022/primeng-types-message.mjs.map +0 -1
  805. package/fesm2022/primeng-types-metergroup.mjs.map +0 -1
  806. package/fesm2022/primeng-types-motion.mjs.map +0 -1
  807. package/fesm2022/primeng-types-multiselect.mjs.map +0 -1
  808. package/fesm2022/primeng-types-orderlist.mjs.map +0 -1
  809. package/fesm2022/primeng-types-organizationchart.mjs.map +0 -1
  810. package/fesm2022/primeng-types-overlay.mjs.map +0 -1
  811. package/fesm2022/primeng-types-overlaybadge.mjs.map +0 -1
  812. package/fesm2022/primeng-types-paginator.mjs.map +0 -1
  813. package/fesm2022/primeng-types-panel.mjs.map +0 -1
  814. package/fesm2022/primeng-types-panelmenu.mjs.map +0 -1
  815. package/fesm2022/primeng-types-password.mjs.map +0 -1
  816. package/fesm2022/primeng-types-picklist.mjs.map +0 -1
  817. package/fesm2022/primeng-types-popover.mjs.map +0 -1
  818. package/fesm2022/primeng-types-progressbar.mjs.map +0 -1
  819. package/fesm2022/primeng-types-progressspinner.mjs.map +0 -1
  820. package/fesm2022/primeng-types-radiobutton.mjs.map +0 -1
  821. package/fesm2022/primeng-types-rating.mjs.map +0 -1
  822. package/fesm2022/primeng-types-scrollarea.mjs.map +0 -1
  823. package/fesm2022/primeng-types-scroller.mjs.map +0 -1
  824. package/fesm2022/primeng-types-scrollpanel.mjs.map +0 -1
  825. package/fesm2022/primeng-types-scrolltop.mjs.map +0 -1
  826. package/fesm2022/primeng-types-select.mjs.map +0 -1
  827. package/fesm2022/primeng-types-selectbutton.mjs.map +0 -1
  828. package/fesm2022/primeng-types-shared.mjs.map +0 -1
  829. package/fesm2022/primeng-types-sidebar.mjs.map +0 -1
  830. package/fesm2022/primeng-types-skeleton.mjs.map +0 -1
  831. package/fesm2022/primeng-types-slider.mjs.map +0 -1
  832. package/fesm2022/primeng-types-speeddial.mjs.map +0 -1
  833. package/fesm2022/primeng-types-splitbutton.mjs.map +0 -1
  834. package/fesm2022/primeng-types-splitter.mjs.map +0 -1
  835. package/fesm2022/primeng-types-stepper.mjs.map +0 -1
  836. package/fesm2022/primeng-types-table.mjs.map +0 -1
  837. package/fesm2022/primeng-types-tabs.mjs.map +0 -1
  838. package/fesm2022/primeng-types-tag.mjs.map +0 -1
  839. package/fesm2022/primeng-types-terminal.mjs.map +0 -1
  840. package/fesm2022/primeng-types-textarea.mjs.map +0 -1
  841. package/fesm2022/primeng-types-tieredmenu.mjs.map +0 -1
  842. package/fesm2022/primeng-types-timeline.mjs.map +0 -1
  843. package/fesm2022/primeng-types-toast.mjs.map +0 -1
  844. package/fesm2022/primeng-types-togglebutton.mjs.map +0 -1
  845. package/fesm2022/primeng-types-toggleswitch.mjs.map +0 -1
  846. package/fesm2022/primeng-types-toolbar.mjs.map +0 -1
  847. package/fesm2022/primeng-types-tooltip.mjs.map +0 -1
  848. package/fesm2022/primeng-types-tree.mjs.map +0 -1
  849. package/fesm2022/primeng-types-treeselect.mjs.map +0 -1
  850. package/fesm2022/primeng-types-treetable.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"primeng-treetable.mjs","sources":["../../src/treetable/style/treetablestyle.ts","../../src/treetable/treetable-service.ts","../../src/treetable/treetable-body.ts","../../src/treetable/treetable-scrollable-view.ts","../../src/treetable/treetable.ts","../../src/treetable/sortable-column.ts","../../src/treetable/sort-icon.ts","../../src/treetable/resizable-column.ts","../../src/treetable/reorderable-column.ts","../../src/treetable/selectable-row.ts","../../src/treetable/selectable-row-dbl-click.ts","../../src/treetable/context-menu-row.ts","../../src/treetable/treetable-checkbox.ts","../../src/treetable/treetable-header-checkbox.ts","../../src/treetable/editable-column.ts","../../src/treetable/cell-editor.ts","../../src/treetable/treetable-row.ts","../../src/treetable/treetable-toggler.ts","../../src/treetable/treetable.module.ts","../../src/treetable/primeng-treetable.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { BaseStyle } from 'primeng/base';\n\nconst style = /*css*/ `\n/* For PrimeNG */\n.p-treetable {\n position: relative;\n}\n\n.p-treetable table {\n border-collapse: collapse;\n width: 100%;\n table-layout: fixed;\n}\n\n.p-treetable .p-sortable-column {\n cursor: pointer;\n user-select: none;\n}\n\n.p-treetable .p-sortable-column .p-column-title,\n.p-treetable .p-sortable-column .p-sortable-column-icon,\n.p-treetable .p-sortable-column .p-sortable-column-badge {\n vertical-align: middle;\n}\n\n.p-treetable-sort-icon {\n color: dt('treetable.sort.icon.color');\n font-size: dt('treetable.sort.icon.size');\n width: dt('treetable.sort.icon.size');\n height: dt('treetable.sort.icon.size');\n transition: color dt('treetable.transition.duration');\n}\n\n.p-treetable .p-sortable-column .p-sortable-column-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.p-treetable-auto-layout>.p-treetable-wrapper {\n overflow-x: auto;\n}\n\n.p-treetable-auto-layout>.p-treetable-wrapper>table {\n table-layout: auto;\n}\n\n.p-treetable-hoverable-rows .p-treetable-tbody>tr {\n cursor: pointer;\n}\n\n.p-treetable-toggler {\n cursor: pointer;\n user-select: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n vertical-align: middle;\n overflow: hidden;\n position: relative;\n}\n\n\n/* Scrollable */\n.p-treetable-scrollable-wrapper {\n position: relative;\n}\n\n.p-treetable-scrollable-header,\n.p-treetable-scrollable-footer {\n overflow: hidden;\n flex-shrink: 0;\n}\n\n.p-treetable-scrollable-body {\n overflow: auto;\n position: relative;\n}\n\n.p-treetable-virtual-table {\n position: absolute;\n}\n\n/* Frozen Columns */\n.p-treetable-frozen-view .p-treetable-scrollable-body {\n overflow: hidden;\n}\n\n.p-treetable-frozen-view>.p-treetable-scrollable-body>table>.p-treetable-tbody>tr>td:last-child {\n border-right: 0 none;\n}\n\n.p-treetable-unfrozen-view {\n position: absolute;\n top: 0;\n}\n\n/* Flex Scrollable */\n.p-treetable-flex-scrollable {\n display: flex;\n flex-direction: column;\n flex: 1;\n height: 100%;\n}\n\n.p-treetable-flex-scrollable .p-treetable-scrollable-wrapper,\n.p-treetable-flex-scrollable .p-treetable-scrollable-view {\n display: flex;\n flex-direction: column;\n flex: 1;\n height: 100%;\n}\n\n.p-treetable-flex-scrollable .p-treetable-virtual-scrollable-body {\n flex: 1;\n}\n\n/* Resizable */\n.p-treetable-resizable>.p-treetable-wrapper {\n overflow-x: auto;\n}\n\n.p-treetable-resizable .p-treetable-thead>tr>th,\n.p-treetable-resizable .p-treetable-tfoot>tr>td,\n.p-treetable-resizable .p-treetable-tbody>tr>td {\n overflow: hidden;\n}\n\n.p-treetable-resizable .p-resizable-column {\n background-clip: padding-box;\n position: relative;\n}\n\n.p-treetable-resizable-fit .p-resizable-column:last-child .p-column-resizer {\n display: none;\n}\n\n.p-treetable .p-column-resizer {\n display: block;\n position: absolute;\n top: 0;\n right: 0;\n margin: 0;\n width: dt('treetable.column.resizer.width');\n height: 100%;\n padding: 0px;\n cursor: col-resize;\n border: 1px solid transparent;\n}\n\n.p-treetable .p-column-resizer-helper {\n width: dt('treetable.resize.indicator.width');\n position: absolute;\n z-index: 10;\n display: none;\n background: dt('treetable.resize.indicator.color');\n}\n\n.p-treetable .p-row-editor-init,\n.p-treetable .p-row-editor-save,\n.p-treetable .p-row-editor-cancel {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n position: relative;\n}\n\n\n/* Reorder */\n.p-treetable-reorder-indicator-up,\n.p-treetable-reorder-indicator-down {\n position: absolute;\n display: none;\n}\n\n[ttReorderableColumn] {\n cursor: move;\n}\n\n/* Loader */\n.p-treetable-mask {\n position: absolute !important;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 2;\n}\n\n.p-treetable-loading-icon {\n font-size: dt('treetable.loading.icon.size');\n width: dt('treetable.loading.icon.size');\n height: dt('treetable.loading.icon.size');\n}\n\n/* Virtual Scroll */\n.p-treetable .p-scroller-loading {\n transform: none !important;\n min-height: 0;\n position: sticky;\n top: 0;\n left: 0;\n}\n\n.p-treetable .p-paginator-top {\n border-color: dt('treetable.paginator.top.border.color');\n border-style: solid;\n border-width: dt('treetable.paginator.top.border.width');\n}\n\n.p-treetable .p-paginator-bottom {\n border-color: dt('treetable.paginator.bottom.border.color');\n border-style: solid;\n border-width: dt('treetable.paginator.bottom.border.width');\n}\n\n.p-treetable .p-treetable-header {\n background: dt('treetable.header.background');\n color: dt('treetable.header.color');\n border-color: dt('treetable.header.border.color');\n border-style: solid;\n border-width: dt('treetable.header.border.width');\n padding: dt('treetable.header.padding');\n font-weight: dt('treetable.column.title.font.weight');\n}\n\n.p-treetable .p-treetable-footer {\n background: dt('treetable.footer.background');\n color: dt('treetable.footer.color');\n border-color: dt('treetable.footer.border.color');\n border-style: solid;\n border-width: dt('treetable.footer.border.width');\n padding: dt('treetable.footer.padding');\n font-weight: dt('treetable.column.footer.font.weight');\n}\n\n.p-treetable .p-treetable-thead>tr>th {\n padding: dt('treetable.header.cell.padding');\n background: dt('treetable.header.cell.background');\n border-color: dt('treetable.header.cell.border.color');\n border-style: solid;\n border-width: 0 0 1px 0;\n color: dt('treetable.header.cell.color');\n font-weight: dt('treetable.column.title.font.weight');\n text-align: start;\n transition: background dt('treetable.transition.duration'), color dt('treetable.transition.duration'), border-color dt('treetable.transition.duration'),\n outline-color dt('treetable.transition.duration'), box-shadow dt('treetable.transition.duration');\n}\n\n.p-treetable .p-treetable-tfoot>tr>td {\n text-align: start;\n padding: dt('treetable.footer.cell.padding');\n border-color: dt('treetable.footer.cell.border.color');\n border-style: solid;\n border-width: 0 0 1px 0;\n color: dt('treetable.footer.cell.color');\n background: dt('treetable.footer.cell.background');\n font-weight: dt('treetable.column.footer.font.weight');\n}\n\n.p-treetable .p-sortable-column {\n cursor: pointer;\n user-select: none;\n outline-color: transparent;\n vertical-align: middle;\n}\n\n.p-treetable .p-sortable-column .p-sortable-column-icon {\n color: dt('treetable.sort.icon.color');\n transition: color dt('treetable.transition.duration');\n}\n\n\n.p-treetable .p-sortable-column:not(.p-treetable-column-sorted):hover {\n background: dt('treetable.header.cell.hover.background');\n color: dt('treetable.header.cell.hover.color');\n}\n\n.p-treetable .p-sortable-column:not(.p-treetable-column-sorted):hover .p-treetable-sort-icon {\n color: dt('treetable.sort.icon.hover.color');\n}\n\n.p-treetable .p-sortable-column.p-treetable-column-sorted {\n background: dt('treetable.header.cell.selected.background');\n color: dt('treetable.header.cell.selected.color');\n}\n\n.p-treetable .p-sortable-column.p-treetable-column-sorted .p-treetable-sort-icon {\n color: dt('treetable.header.cell.selected.color');\n}\n\n.p-treetable .p-sortable-column:focus-visible {\n box-shadow: dt('treetable.header.cell.focus.ring.shadow');\n outline: dt('treetable.header.cell.focus.ring.width') dt('treetable.header.cell.focus.ring.style') dt('treetable.header.cell.focus.ring.color');\n outline-offset: dt('treetable.header.cell.focus.ring.offset');\n}\n\n.p-treetable-hoverable .p-treetable-selectable-row {\n cursor: pointer;\n}\n\n.p-treetable .p-treetable-tbody > tr {\n outline-color: transparent;\n background: dt('treetable.row.background');\n color: dt('treetable.row.color');\n}\n\n.p-treetable .p-treetable-tbody>tr>td {\n text-align: start;\n border-color: dt('treetable.body.cell.border.color');\n border-style: solid;\n border-width: 0 0 1px 0;\n padding: dt('treetable.body.cell.padding');\n font-weight: dt('treetable.body.cell.font.weight');\n font-size: dt('treetable.body.cell.font.size');\n}\n\n.p-treetable .p-treetable-tbody>tr>td .p-treetable-toggler {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n position: relative;\n width: dt('treetable.node.toggle.button.size');\n height: dt('treetable.node.toggle.button.size');\n color: dt('treetable.node.toggle.button.color');\n border: 0 none;\n background: transparent;\n cursor: pointer;\n border-radius: dt('treetable.node.toggle.button.border.radius');\n transition: background dt('treetable.transition.duration'), color dt('treetable.transition.duration'), border-color dt('treetable.transition.duration'),\n outline-color dt('treetable.transition.duration'), box-shadow dt('treetable.transition.duration');\n outline-color: transparent;\n user-select: none;\n}\n\n.p-treetable .p-treetable-tbody>tr>td .p-treetable-toggler:enabled:hover {\n color: dt('treetable.node.toggle.button.hover.color');\n background: dt('treetable.node.toggle.button.hover.background');\n}\n\n.p-treetable .p-treetable-tbody>tr>tr.treetable-row-selected .p-treetable-toggler:hover {\n background: dt('treetable.node.toggle.button.selected.hover.background');\n color: dt('treetable.node.toggle.button.selected.hover.color');\n}\n\n.p-treetable .p-treetable-tbody>tr>td .p-treetable-toggler:focus-visible {\n box-shadow: dt('treetable.node.toggle.button.focus.ring.shadow');\n outline: dt('treetable.node.toggle.button.focus.ring.width') dt('treetable.node.toggle.button.focus.ring.style') dt('treetable.node.toggle.button.focus.ring.color');\n outline-offset: dt('treetable.node.toggle.button.focus.ring.offset');\n}\n\n\n.p-treetable .p-treetable-tbody>tr.p-treetable-row-selected {\n background: dt('treetable.row.selected.background');\n color: dt('treetable.row.selected.color');\n}\n\n.p-treetable-tbody > tr:focus-visible,\n.p-treetable-tbody > tr.p-treetable-contextmenu-row-selected {\n box-shadow: dt('treetable.row.focus.ring.shadow');\n outline: dt('treetable.row.focus.ring.width') dt('treetable.row.focus.ring.style') dt('treetable.row.focus.ring.color');\n outline-offset: dt('treetable.row.focus.ring.offset');\n}\n\n.p-treetable .p-treetable-tbody>tr.p-treetable-row-selected .p-treetable-toggler {\n color: inherit;\n}\n\n.p-treetable .p-treetable-tbody>tr.p-treetable-row-selected .p-treetable-toggler:hover {\n background: dt('treetable.node.toggle.button.selected.hover.background');\n color: dt('treetable.node.toggle.button.selected.hover.color');\n}\n\n.p-treetable.p-treetable-hoverable-rows .p-treetable-tbody>tr:not(.p-treetable-row-selected):hover {\n background: dt('treetable.row.hover.background');\n color: dt('treetable.row.hover.color');\n}\n\n.p-treetable-gridlines .p-treetable-header {\n border-width: 1px 1px 0 1px;\n}\n\n.p-treetable-gridlines .p-treetable-footer {\n border-width: 0 1px 1px 1px;\n}\n\n.p-treetable-gridlines .p-treetable-paginator-top {\n border-width: 1px 1px 0 1px;\n}\n\n.p-treetable-gridlines .p-treetable-paginator-bottom {\n border-width: 0 1px 1px 1px;\n}\n\n.p-treetable-gridlines .p-treetable-thead > tr > th {\n border-width: 1px 0 1px 1px;\n}\n\n.p-treetable-gridlines .p-treetable-thead > tr > th:last-child {\n border-width: 1px;\n}\n\n.p-treetable-gridlines .p-treetable-tbody > tr > td {\n border-width: 1px 0 0 1px;\n}\n\n.p-treetable-gridlines .p-treetable-tbody > tr > td:last-child {\n border-width: 1px 1px 0 1px;\n}\n\n.p-treetable-gridlines .p-treetable-tbody > tr:last-child > td {\n border-width: 1px 0 1px 1px;\n}\n\n.p-treetable-gridlines .p-treetable-tbody > tr:last-child > td:last-child {\n border-width: 1px;\n}\n\n.p-treetable-gridlines .p-treetable-tfoot > tr > td {\n border-width: 1px 0 1px 1px;\n}\n\n.p-treetable-gridlines .p-treetable-tfoot > tr > td:last-child {\n border-width: 1px 1px 1px 1px;\n}\n\n.p-treetable.p-treetable-gridlines .p-treetable-thead + .p-treetable-tfoot > tr > td {\n border-width: 0 0 1px 1px;\n}\n\n.p-treetable.p-treetable-gridlines .p-treetable-thead + .p-treetable-tfoot > tr > td:last-child {\n border-width: 0 1px 1px 1px;\n}\n\n.p-treetable.p-treetable-gridlines:has(.p-treetable-thead):has(.p-treetable-tbody) .p-treetable-tbody > tr > td {\n border-width: 0 0 1px 1px;\n}\n\n.p-treetable.p-treetable-gridlines:has(.p-treetable-thead):has(.p-treetable-tbody) .p-treetable-tbody > tr > td:last-child {\n border-width: 0 1px 1px 1px;\n}\n\n.p-treetable.p-treetable-gridlines:has(.p-treetable-tbody):has(.p-treetable-tfoot > tr) .p-treetable-tbody > tr:last-child > td {\n border-width: 0 0 0 1px;\n}\n\n.p-treetable.p-treetable-gridlines:has(.p-treetable-tbody):has(.p-treetable-tfoot > tr) .p-treetable-tbody > tr:last-child > td:last-child {\n border-width: 0 1px 0 1px;\n}\n\n.p-treetable.p-treetable-sm .p-treetable-header {\n padding: 0.65625rem 0.875rem;\n}\n\n.p-treetable.p-treetable-sm .p-treetable-thead>tr>th {\n padding: 0.375rem 0.5rem;\n}\n\n.p-treetable.p-treetable-sm .p-treetable-tbody>tr>td {\n padding: 0.375rem 0.5rem;\n}\n\n.p-treetable.p-treetable-sm .p-treetable-tfoot>tr>td {\n padding: 0.375rem 0.5rem;\n}\n\n.p-treetable.p-treetable-sm .p-treetable-footer {\n padding: 0.375rem 0.5rem;\n}\n\n.p-treetable.p-treetable-lg .p-treetable-header {\n padding: 0.9375rem 1.25rem;\n}\n\n.p-treetable.p-treetable-lg .p-treetable-thead>tr>th {\n padding: 0.9375rem 1.25rem;\n}\n\n.p-treetable.p-treetable-lg .p-treetable-tbody>tr>td {\n padding: 0.9375rem 1.25rem;\n}\n\n.p-treetable.p-treetable-lg .p-treetable-tfoot>tr>td {\n padding: 0.9375rem 1.25rem;\n}\n\n.p-treetable.p-treetable-lg .p-treetable-footer {\n padding: 0.9375rem 1.25rem;\n}\n\np-treetable-checkbox {\n display: inline-flex;\n}\n\np-treetabletoggler + p-treetable-checkbox .p-checkbox,\np-treetable-toggler + p-treetable-checkbox .p-checkbox,\np-treetable-toggler + p-tree-table-checkbox .p-checkbox,\np-treetabletoggler + p-tree-table-checkbox .p-checkbox {\n vertical-align: middle;\n}\n\np-treetabletoggler + p-treetable-checkbox + span,\np-treetable-toggler + p-treetable-checkbox + span,\np-treetable-toggler + p-tree-table-checkbox + span,\np-treetabletoggler + p-tree-table-checkbox + span {\n vertical-align: middle;\n}\n\np-treetable-sort-icon {\n display: inline-flex;\n align-items: center;\n gap: dt('treetable.header.cell.gap');\n}\n`;\n\nconst classes = {\n root: ({ instance }) => {\n const showGridlines = instance.showGridlines();\n const rowHover = instance.rowHover();\n const selectionMode = instance.selectionMode();\n const autoLayout = instance.autoLayout();\n const resizableColumns = instance.resizableColumns();\n const columnResizeMode = instance.columnResizeMode();\n const scrollable = instance.scrollable();\n const scrollHeight = instance.scrollHeight();\n return [\n 'p-treetable p-component',\n {\n 'p-treetable-gridlines': showGridlines,\n 'p-treetable-hoverable-rows': rowHover || selectionMode === 'single' || selectionMode === 'multiple',\n 'p-treetable-auto-layout': autoLayout,\n 'p-treetable-resizable': resizableColumns,\n 'p-treetable-resizable-fit': resizableColumns && columnResizeMode === 'fit',\n 'p-treetable-flex-scrollable': scrollable && scrollHeight === 'flex'\n }\n ];\n },\n loading: 'p-treetable-loading',\n mask: 'p-treetable-mask p-overlay-mask',\n loadingIcon: 'p-treetable-loading-icon',\n header: 'p-treetable-header',\n pcPaginator: ({ instance }) => ['p-treetable-paginator-' + instance.paginatorPosition(), instance.paginatorStyleClass()],\n tableContainer: 'p-treetable-table-container',\n table: ({ instance }) => {\n const scrollable = instance.scrollable();\n const resizableColumns = instance.resizableColumns();\n const columnResizeMode = instance.columnResizeMode();\n return {\n 'p-treetable-table': true,\n 'p-treetable-scrollable-table': scrollable,\n 'p-treetable-resizable-table': resizableColumns,\n 'p-treetable-resizable-table-fit': resizableColumns && columnResizeMode === 'fit'\n };\n },\n thead: 'p-treetable-thead',\n sortableColumn: ({ instance }) => ({\n 'p-sortable-column': instance.isEnabled(),\n 'p-treetable-column-sorted': instance.sorted()\n }),\n sortableColumnIcon: 'p-treetable-sort-icon',\n sortableColumnBadge: 'p-sortable-column-badge',\n columnResizer: 'p-treetable-column-resizer',\n columnHeaderContent: 'p-treetable-column-header-content',\n columnTitle: 'p-treetable-column-title',\n sortIcon: 'p-treetable-sort-icon',\n pcSortBadge: 'p-treetable-sort-badge',\n tbody: 'p-treetable-tbody',\n row: ({ instance }) => ({\n 'p-treetable-row-selected': instance.selected()\n }),\n contextMenuRow: ({ instance }) => ({\n 'p-treetable-contextmenu-row-selected': instance.selected()\n }),\n toggler: 'p-treetable-toggler',\n nodeToggleButton: 'p-treetable-node-toggle-button',\n nodeToggleIcon: 'p-treetable-node-toggle-icon',\n pcNodeCheckbox: 'p-treetable-node-checkbox',\n tfoot: 'p-treetable-tfoot',\n footerCell: ({ instance }) => ({\n 'p-treetable-frozen-column': instance.columnProp('frozen')\n }),\n footer: 'p-treetable-footer',\n columnResizeIndicator: 'p-treetable-column-resize-indicator',\n wrapper: 'p-treetable-wrapper',\n scrollableWrapper: 'p-treetable-scrollable-wrapper',\n scrollableView: 'p-treetable-scrollable-view',\n frozenView: 'p-treetable-frozen-view',\n columnResizerHelper: 'p-column-resizer-helper',\n reorderIndicatorUp: 'p-treetable-reorder-indicator-up',\n reorderIndicatorDown: 'p-treetable-reorder-indicator-down',\n scrollableHeader: 'p-treetable-scrollable-header',\n scrollableHeaderBox: 'p-treetable-scrollable-header-box',\n scrollableHeaderTable: 'p-treetable-scrollable-header-table',\n scrollableBody: 'p-treetable-scrollable-body',\n scrollableFooter: 'p-treetable-scrollable-footer',\n scrollableFooterBox: 'p-treetable-scrollable-footer-box',\n scrollableFooterTable: 'p-treetable-scrollable-footer-table'\n};\n\nconst inlineStyles = {\n wrapper: { overflow: 'auto' }\n};\n\n@Injectable()\nexport class TreeTableStyle extends BaseStyle {\n name = 'treetable';\n\n style = style;\n\n classes = classes;\n\n inlineStyles = inlineStyles;\n}\n\n/**\n *\n * TreeTable is used to display hierarchical data in tabular format.\n *\n * [Live Demo](https://www.primeng.org/treetable/)\n *\n * @module treetablestyle\n *\n */\nexport enum TreeTableClasses {\n /**\n * Class name of the root element\n */\n root = 'p-treetable',\n /**\n * Class name of the loading element\n */\n loading = 'p-treetable-loading',\n /**\n * Class name of the mask element\n */\n mask = 'p-treetable-mask',\n /**\n * Class name of the loading icon element\n */\n loadingIcon = 'p-treetable-loading-icon',\n /**\n * Class name of the header element\n */\n header = 'p-treetable-header',\n /**\n * Class name of the paginator element\n */\n pcPaginator = 'p-treetable-paginator-[position]',\n /**\n * Class name of the table container element\n */\n tableContainer = 'p-treetable-table-container',\n /**\n * Class name of the table element\n */\n table = 'p-treetable-table',\n /**\n * Class name of the thead element\n */\n thead = 'p-treetable-thead',\n /**\n * Class name of the column resizer element\n */\n columnResizer = 'p-treetable-column-resizer',\n /**\n * Class name of the column title element\n */\n columnTitle = 'p-treetable-column-title',\n /**\n * Class name of the sort icon element\n */\n sortIcon = 'p-treetable-sort-icon',\n /**\n * Class name of the sort badge element\n */\n pcSortBadge = 'p-treetable-sort-badge',\n /**\n * Class name of the tbody element\n */\n tbody = 'p-treetable-tbody',\n /**\n * Class name of the node toggle button element\n */\n nodeToggleButton = 'p-treetable-node-toggle-button',\n /**\n * Class name of the node toggle icon element\n */\n nodeToggleIcon = 'p-treetable-node-toggle-icon',\n /**\n * Class name of the node checkbox element\n */\n pcNodeCheckbox = 'p-treetable-node-checkbox',\n /**\n * Class name of the empty message element\n */\n emptyMessage = 'p-treetable-empty-message',\n /**\n * Class name of the tfoot element\n */\n tfoot = 'p-treetable-tfoot',\n /**\n * Class name of the footer element\n */\n footer = 'p-treetable-footer',\n /**\n * Class name of the column resize indicator element\n */\n columnResizeIndicator = 'p-treetable-column-resize-indicator',\n /**\n * Class name of the wrapper element\n */\n wrapper = 'p-treetable-wrapper',\n /**\n * Class name of the scrollable wrapper element\n */\n scrollableWrapper = 'p-treetable-scrollable-wrapper',\n /**\n * Class name of the scrollable view element\n */\n scrollableView = 'p-treetable-scrollable-view',\n /**\n * Class name of the frozen view element\n */\n frozenView = 'p-treetable-frozen-view',\n /**\n * Class name of the column resizer helper element\n */\n columnResizerHelper = 'p-treetable-column-resizer-helper',\n /**\n * Class name of the reorder indicator up element\n */\n reorderIndicatorUp = 'p-treetable-reorder-indicator-up',\n /**\n * Class name of the reorder indicator down element\n */\n reorderIndicatorDown = 'p-treetable-reorder-indicator-down',\n /**\n * Class name of the scrollable header element\n */\n scrollableHeader = 'p-treetable-scrollable-header',\n /**\n * Class name of the scrollable header box element\n */\n scrollableHeaderBox = 'p-treetable-scrollable-header-box',\n /**\n * Class name of the scrollable header table element\n */\n scrollableHeaderTable = 'p-treetable-scrollable-header-table',\n /**\n * Class name of the scrollable body element\n */\n scrollableBody = 'p-treetable-scrollable-body',\n /**\n * Class name of the scrollable footer element\n */\n scrollableFooter = 'p-treetable-scrollable-footer',\n /**\n * Class name of the scrollable footer box element\n */\n scrollableFooterBox = 'p-treetable-scrollable-footer-box',\n /**\n * Class name of the scrollable footer table element\n */\n scrollableFooterTable = 'p-treetable-scrollable-footer-table',\n /**\n * Class name of the sortable column icon element\n */\n sortableColumnIcon = 'p-sortable-column-icon'\n}\n\nexport interface TreeTableStyle extends BaseStyle {}\n","import { Injectable, InjectionToken } from '@angular/core';\nimport { SortMeta } from 'primeng/api';\nimport { Subject } from 'rxjs';\n\nexport const TREETABLE_INSTANCE = new InjectionToken<any>('TREETABLE_INSTANCE');\n\n@Injectable()\nexport class TreeTableService {\n private sortSource = new Subject<SortMeta | SortMeta[] | null>();\n private selectionSource = new Subject();\n private contextMenuSource = new Subject<any>();\n private uiUpdateSource = new Subject<any>();\n private totalRecordsSource = new Subject<any>();\n\n sortSource$ = this.sortSource.asObservable();\n selectionSource$ = this.selectionSource.asObservable();\n contextMenuSource$ = this.contextMenuSource.asObservable();\n uiUpdateSource$ = this.uiUpdateSource.asObservable();\n totalRecordsSource$ = this.totalRecordsSource.asObservable();\n\n onSort(sortMeta: SortMeta | SortMeta[] | null) {\n this.sortSource.next(sortMeta);\n }\n\n onSelectionChange() {\n this.selectionSource.next(null);\n }\n\n onContextMenu(node: any) {\n this.contextMenuSource.next(node);\n }\n\n onUIUpdate(value: any) {\n this.uiUpdateSource.next(value);\n }\n\n onTotalRecordsChange(value: number) {\n this.totalRecordsSource.next(value);\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { booleanAttribute, Component, computed, inject, input, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { Nullable } from 'primeng/ts-helpers';\nimport { TREETABLE_INSTANCE } from './treetable-service';\nimport type { TreeTable } from './treetable';\n\n@Component({\n selector: '[pTreeTableBody]',\n standalone: true,\n imports: [NgTemplateOutlet],\n template: `\n @for (serializedNode of serializedNodes() || tt.serializedValue; track tt.rowTrackBy()($index, serializedNode)) {\n @if (serializedNode.visible) {\n <ng-container *ngTemplateOutlet=\"template(); context: getBodyTemplateContext(serializedNode)\"></ng-container>\n }\n }\n @if (tt.isEmpty()) {\n <ng-container *ngTemplateOutlet=\"tt.emptyMessageTemplate(); context: emptyMessageContext()\"></ng-container>\n }\n `,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.data-p]': 'dataP'\n }\n})\nexport class TTBody extends BaseComponent {\n columns = input<any[]>(undefined, { alias: 'pTreeTableBody' });\n\n template = input<Nullable<TemplateRef<any>>>(undefined, { alias: 'pTreeTableBodyTemplate' });\n\n frozen = input(undefined, { transform: booleanAttribute });\n\n serializedNodes = input<any>();\n\n scrollerOptions = input<any>();\n\n tt = inject<TreeTable>(TREETABLE_INSTANCE);\n\n emptyMessageContext = computed(() => ({ $implicit: this.columns(), frozen: this.frozen() }));\n\n constructor() {\n super();\n this.tt.tableService.uiUpdateSource$.pipe(takeUntilDestroyed()).subscribe(() => {\n if (this.tt.virtualScroll()) {\n this.cd.detectChanges();\n }\n });\n }\n\n getBodyTemplateContext(serializedNode: any) {\n return {\n $implicit: serializedNode,\n node: serializedNode.node,\n rowData: serializedNode.node.data,\n columns: this.columns()\n };\n }\n\n getScrollerOption(option: any, options?: any) {\n if (this.tt.virtualScroll()) {\n options = options || this.scrollerOptions();\n return options ? options[option] : null;\n }\n\n return null;\n }\n\n getRowIndex(rowIndex: number) {\n const getItemOptions = this.getScrollerOption('getItemOptions');\n return getItemOptions ? getItemOptions(rowIndex).index : rowIndex;\n }\n\n get dataP() {\n return this.cn({\n hoverable: this.tt.rowHover() || this.tt.selectionMode(),\n frozen: this.frozen()\n });\n }\n}\n","import { isPlatformBrowser, NgTemplateOutlet } from '@angular/common';\nimport { booleanAttribute, Component, computed, effect, ElementRef, inject, input, viewChild, ViewEncapsulation } from '@angular/core';\nimport { addClass, calculateScrollbarHeight, calculateScrollbarWidth, findSingle } from '@primeuix/utils';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { Bind } from 'primeng/bind';\nimport { Scroller } from 'primeng/scroller';\nimport { Nullable, VoidListener } from 'primeng/ts-helpers';\nimport { TreeTableStyle } from './style/treetablestyle';\nimport { TTBody } from './treetable-body';\nimport { TREETABLE_INSTANCE } from './treetable-service';\nimport type { TreeTable } from './treetable';\n\n@Component({\n selector: '[ttScrollableView]',\n standalone: true,\n imports: [NgTemplateOutlet, Bind, Scroller, TTBody],\n template: `\n <div #scrollHeader [class]=\"cx('scrollableHeader')\" [pBind]=\"ptm('scrollableHeader')\">\n <div #scrollHeaderBox [class]=\"cx('scrollableHeaderBox')\" [pBind]=\"ptm('scrollableHeaderBox')\">\n <table [class]=\"cn(cx('scrollableHeaderTable'), tt.tableStyleClass())\" [pBind]=\"ptm('scrollableHeaderTable')\" [style]=\"tt.tableStyle()\">\n <ng-container *ngTemplateOutlet=\"colGroupTemplate(); context: { $implicit: columns() }\"></ng-container>\n <thead role=\"rowgroup\" [class]=\"cx('thead')\" [pBind]=\"ptm('thead')\">\n <ng-container *ngTemplateOutlet=\"$headerTemplate(); context: { $implicit: columns() }\"></ng-container>\n </thead>\n </table>\n </div>\n </div>\n\n @if (tt.virtualScroll()) {\n <p-scroller\n #scroller\n [items]=\"tt.serializedValue\"\n [styleClass]=\"cx('scrollableBody')\"\n [style]=\"scrollerStyle()\"\n [scrollHeight]=\"$scrollerScrollHeight()\"\n [itemSize]=\"tt.virtualScrollItemSize()\"\n [lazy]=\"tt.lazy()\"\n (onLazyLoad)=\"tt.onLazyItemLoad($event)\"\n [options]=\"tt.virtualScrollOptions()\"\n [pt]=\"ptm('virtualScroller')\"\n >\n <ng-template #content let-items let-scrollerOptions=\"options\">\n <ng-container *ngTemplateOutlet=\"buildInItems; context: { $implicit: items, options: scrollerOptions }\"></ng-container>\n </ng-template>\n @if (tt.loaderTemplate()) {\n <ng-template #loader let-scrollerOptions=\"options\">\n <ng-container *ngTemplateOutlet=\"tt.loaderTemplate(); context: { options: scrollerOptions }\"></ng-container>\n </ng-template>\n }\n </p-scroller>\n }\n @if (!tt.virtualScroll()) {\n <div #scrollBody [class]=\"cx('scrollableBody')\" [pBind]=\"ptm('scrollableBody')\" [style]=\"scrollBodyStyle()\">\n <ng-container *ngTemplateOutlet=\"buildInItems; context: { $implicit: serializedValue, options: {} }\"></ng-container>\n </div>\n }\n\n <ng-template #buildInItems let-items let-scrollerOptions=\"options\">\n <table role=\"treegrid\" #scrollTable [pBind]=\"ptm('table')\" [class]=\"cn(tt.tableStyleClass(), scrollerOptions.contentStyleClass)\" [style]=\"getScrollableTableStyle(scrollerOptions.contentStyle)\">\n <ng-container *ngTemplateOutlet=\"colGroupTemplate(); context: { $implicit: columns() }\"></ng-container>\n <tbody [pBind]=\"ptm('tbody')\" role=\"rowgroup\" [class]=\"cx('tbody')\" [pTreeTableBody]=\"columns()\" [unstyled]=\"unstyled()\" [pTreeTableBodyTemplate]=\"$bodyTemplate()\" [serializedNodes]=\"items\" [frozen]=\"frozen()\"></tbody>\n </table>\n @if (frozen()) {\n <div #scrollableAligner [style.background-color]=\"'transparent'\"></div>\n }\n </ng-template>\n\n @if (tt.footerTemplate()) {\n <div #scrollFooter [class]=\"cx('scrollableFooter')\" [pBind]=\"ptm('scrollableFooter')\">\n <div #scrollFooterBox [class]=\"cx('scrollableFooterBox')\" [pBind]=\"ptm('scrollableFooterBox')\">\n <table [class]=\"cn(cx('scrollableFooterTable'), tt.tableStyleClass())\" [style]=\"tt.tableStyle()\" [pBind]=\"ptm('scrollableFooterTable')\">\n <ng-container *ngTemplateOutlet=\"colGroupTemplate(); context: { $implicit: columns() }\"></ng-container>\n <tfoot role=\"rowgroup\" [class]=\"cx('tfoot')\" [pBind]=\"ptm('tfoot')\">\n <ng-container *ngTemplateOutlet=\"$footerTemplate(); context: { $implicit: columns() }\"></ng-container>\n </tfoot>\n </table>\n </div>\n </div>\n }\n `,\n encapsulation: ViewEncapsulation.None,\n providers: [TreeTableStyle]\n})\nexport class TTScrollableView extends BaseComponent {\n hostName = 'TreeTable';\n\n columns = input<any[]>(undefined, { alias: 'ttScrollableView' });\n\n frozen = input(undefined, { transform: booleanAttribute });\n\n scrollHeight = input<string | null>();\n\n scrollHeaderViewChild = viewChild<ElementRef>('scrollHeader');\n\n scrollHeaderBoxViewChild = viewChild<ElementRef>('scrollHeaderBox');\n\n scrollBodyViewChild = viewChild<ElementRef>('scrollBody');\n\n scrollTableViewChild = viewChild<ElementRef>('scrollTable');\n\n scrollLoadingTableViewChild = viewChild<ElementRef>('loadingTable');\n\n scrollFooterViewChild = viewChild<ElementRef>('scrollFooter');\n\n scrollFooterBoxViewChild = viewChild<ElementRef>('scrollFooterBox');\n\n scrollableAlignerViewChild = viewChild<ElementRef>('scrollableAligner');\n\n scroller = viewChild<Scroller>('scroller');\n\n headerScrollListener: VoidListener;\n\n bodyScrollListener: VoidListener;\n\n footerScrollListener: VoidListener;\n\n frozenSiblingBody: Nullable<Element>;\n\n preventBodyScrollPropagation: boolean | undefined;\n\n _componentStyle = inject(TreeTableStyle);\n\n tt = inject<TreeTable>(TREETABLE_INSTANCE);\n\n colGroupTemplate = computed(() => (this.frozen() ? this.tt.frozenColGroupTemplate() || this.tt.colGroupTemplate() : this.tt.colGroupTemplate()));\n\n $headerTemplate = computed(() => (this.frozen() ? this.tt.frozenHeaderTemplate() || this.tt.headerTemplate() : this.tt.headerTemplate()));\n\n $footerTemplate = computed(() => (this.frozen() ? this.tt.frozenFooterTemplate() || this.tt.footerTemplate() : this.tt.footerTemplate()));\n\n $bodyTemplate = computed(() => (this.frozen() ? this.tt.frozenBodyTemplate() || this.tt.bodyTemplate() : this.tt.bodyTemplate()));\n\n scrollerStyle = computed(() => ({ height: this.tt.scrollHeight() !== 'flex' ? this.tt.scrollHeight() : undefined }));\n\n $scrollerScrollHeight = computed(() => (this.scrollHeight() !== 'flex' ? undefined : '100%'));\n\n scrollBodyStyle = computed(() => ({\n 'max-height': this.tt.scrollHeight() !== 'flex' ? this.scrollHeight() : undefined,\n 'overflow-y': !this.frozen() && this.tt.scrollHeight() ? 'scroll' : undefined\n }));\n\n constructor() {\n super();\n effect(() => {\n const val = this.scrollHeight();\n if (val != null && (val.includes('%') || val.includes('calc'))) {\n console.log('Percentage scroll height calculation is removed in favor of the more performant CSS based flex mode, use scrollHeight=\"flex\" instead.');\n }\n });\n }\n\n get serializedValue() {\n return this.tt.serializedValue;\n }\n\n onAfterViewInit() {\n if (isPlatformBrowser(this.platformId)) {\n if (!this.frozen()) {\n if (this.tt.frozenColumns() || this.tt.frozenBodyTemplate()) {\n addClass(this.el.nativeElement, 'p-treetable-unfrozen-view');\n }\n\n let frozenView = this.el.nativeElement.previousElementSibling;\n if (frozenView) {\n if (this.tt.virtualScroll()) this.frozenSiblingBody = findSingle(frozenView, '[data-pc-name=\"virtualscroller\"]');\n else this.frozenSiblingBody = findSingle(frozenView, '[data-pc-section=\"scrollablebody\"]');\n }\n\n if (this.scrollHeight()) {\n let scrollBarWidth = calculateScrollbarWidth();\n if (this.scrollHeaderBoxViewChild()?.nativeElement) {\n this.scrollHeaderBoxViewChild()!.nativeElement.style.paddingRight = scrollBarWidth + 'px';\n }\n\n if (this.scrollFooterBoxViewChild()?.nativeElement) {\n this.scrollFooterBoxViewChild()!.nativeElement.style.paddingRight = scrollBarWidth + 'px';\n }\n }\n } else {\n if (this.scrollableAlignerViewChild()?.nativeElement) {\n this.scrollableAlignerViewChild()!.nativeElement.style.height = calculateScrollbarHeight() + 'px';\n }\n }\n\n this.bindEvents();\n }\n }\n\n bindEvents() {\n if (isPlatformBrowser(this.platformId)) {\n if (this.scrollHeaderViewChild()?.nativeElement) {\n this.headerScrollListener = this.renderer.listen(this.scrollHeaderBoxViewChild()?.nativeElement, 'scroll', this.onHeaderScroll.bind(this));\n }\n\n if (this.scrollFooterViewChild()?.nativeElement) {\n this.footerScrollListener = this.renderer.listen(this.scrollFooterViewChild()!.nativeElement, 'scroll', this.onFooterScroll.bind(this));\n }\n\n if (!this.frozen()) {\n if (this.tt.virtualScroll()) {\n this.bodyScrollListener = this.renderer.listen((this.scroller()?.getElementRef() as ElementRef).nativeElement, 'scroll', this.onBodyScroll.bind(this));\n } else {\n this.bodyScrollListener = this.renderer.listen(this.scrollBodyViewChild()?.nativeElement, 'scroll', this.onBodyScroll.bind(this));\n }\n }\n }\n }\n\n unbindEvents() {\n if (isPlatformBrowser(this.platformId)) {\n if (this.scrollHeaderViewChild()?.nativeElement) {\n if (this.headerScrollListener) {\n this.headerScrollListener();\n this.headerScrollListener = null;\n }\n }\n\n if (this.scrollFooterViewChild()?.nativeElement) {\n if (this.footerScrollListener) {\n this.footerScrollListener();\n this.footerScrollListener = null;\n }\n }\n\n if (this.scrollBodyViewChild()?.nativeElement) {\n if (this.bodyScrollListener) {\n this.bodyScrollListener();\n this.bodyScrollListener = null;\n }\n }\n\n if (this.scroller()?.getElementRef()) {\n if (this.bodyScrollListener) {\n this.bodyScrollListener();\n this.bodyScrollListener = null;\n }\n }\n }\n }\n\n onHeaderScroll() {\n const scrollLeft = this.scrollHeaderViewChild()?.nativeElement.scrollLeft;\n\n this.scrollBodyViewChild()!.nativeElement.scrollLeft = scrollLeft;\n\n if (this.scrollFooterViewChild()?.nativeElement) {\n this.scrollFooterViewChild()!.nativeElement.scrollLeft = scrollLeft;\n }\n\n this.preventBodyScrollPropagation = true;\n }\n\n onFooterScroll() {\n const scrollLeft = this.scrollFooterViewChild()?.nativeElement.scrollLeft;\n this.scrollBodyViewChild()!.nativeElement.scrollLeft = scrollLeft;\n\n if (this.scrollHeaderViewChild()?.nativeElement) {\n this.scrollHeaderViewChild()!.nativeElement.scrollLeft = scrollLeft;\n }\n\n this.preventBodyScrollPropagation = true;\n }\n\n onBodyScroll(event: any) {\n if (this.preventBodyScrollPropagation) {\n this.preventBodyScrollPropagation = false;\n return;\n }\n\n if (this.scrollHeaderViewChild()?.nativeElement) {\n this.scrollHeaderBoxViewChild()!.nativeElement.style.marginLeft = -1 * event.target.scrollLeft + 'px';\n }\n\n if (this.scrollFooterViewChild()?.nativeElement) {\n this.scrollFooterBoxViewChild()!.nativeElement.style.marginLeft = -1 * event.target.scrollLeft + 'px';\n }\n\n if (this.frozenSiblingBody) {\n this.frozenSiblingBody.scrollTop = event.target.scrollTop;\n }\n }\n\n scrollToVirtualIndex(index: number) {\n this.scroller()?.scrollToIndex(index);\n }\n\n scrollTo(options: ScrollToOptions) {\n if (this.scroller()) {\n this.scroller()!.scrollTo(options);\n } else {\n if (this.scrollBodyViewChild()?.nativeElement.scrollTo) {\n this.scrollBodyViewChild()!.nativeElement.scrollTo(options);\n } else {\n this.scrollBodyViewChild()!.nativeElement.scrollLeft = options.left;\n this.scrollBodyViewChild()!.nativeElement.scrollTop = options.top;\n }\n }\n }\n\n getScrollableTableStyle(contentStyle: any) {\n return { ...this.tt.tableStyle(), ...contentStyle };\n }\n\n onDestroy() {\n this.unbindEvents();\n\n this.frozenSiblingBody = null;\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { booleanAttribute, Component, computed, contentChild, effect, ElementRef, inject, input, model, numberAttribute, output, TemplateRef, untracked, viewChild, ViewEncapsulation, signal } from '@angular/core';\nimport { addStyle, calculateScrollbarWidth, equals, find, findSingle, getHiddenElementOuterHeight, getHiddenElementOuterWidth, getIndex, getOffset, isClickable, isEmpty, removeClass, reorderArray, resolveFieldData } from '@primeuix/utils';\nimport { BlockableUI, FilterMetadata, FilterService, ScrollerOptions, SortMeta, TreeNode, TreeTableNode } from 'primeng/api';\nimport { BaseComponent, PARENT_INSTANCE } from 'primeng/basecomponent';\nimport { Bind } from 'primeng/bind';\nimport { DomHandler } from 'primeng/dom';\nimport { ArrowDown as ArrowDownIcon } from '@primeicons/angular/arrow-down';\nimport { ArrowUp as ArrowUpIcon } from '@primeicons/angular/arrow-up';\nimport { Spinner as SpinnerIcon } from '@primeicons/angular/spinner';\nimport { PaginatorModule } from 'primeng/paginator';\nimport { Nullable, VoidListener } from 'primeng/ts-helpers';\nimport type { CSSProperties } from 'primeng/types/shared';\nimport type { CheckboxChangeEvent } from 'primeng/types/checkbox';\nimport type { PaginatorDropdownItemTemplateContext, PaginatorTemplateContext } from 'primeng/types/paginator';\nimport type { ScrollerLoaderTemplateContext } from 'primeng/types/scroller';\nimport {\n TreeTableBodyTemplateContext,\n TreeTableCheckboxIconTemplateContext,\n TreeTableColResizeEvent,\n TreeTableColumnReorderEvent,\n TreeTableColumnsTemplateContext,\n TreeTableContextMenuSelectEvent,\n TreeTableEditEvent,\n TreeTableEmptyMessageTemplateContext,\n TreeTableFilterEvent,\n TreeTableFilterOptions,\n TreeTableHeaderCheckboxIconTemplateContext,\n TreeTableHeaderCheckboxToggleEvent,\n TreeTableLazyLoadEvent,\n TreeTableNodeCollapseEvent,\n TreeTableNodeExpandEvent,\n TreeTableColumnResizeMode,\n TreeTableCompareSelectionBy,\n TreeTableFilterMode,\n TreeTableNodeUnSelectEvent,\n TreeTablePaginatorPosition,\n TreeTablePaginatorState,\n TreeTablePassThrough,\n TreeTableSelectionMode,\n TreeTableSortEvent,\n TreeTableSortMode,\n TreeTableSortIconTemplateContext,\n TreeTableTogglerIconTemplateContext\n} from 'primeng/types/treetable';\nimport { TreeTableStyle } from './style/treetablestyle';\nimport { TTBody } from './treetable-body';\nimport { TTScrollableView } from './treetable-scrollable-view';\nimport { TREETABLE_INSTANCE, TreeTableService } from './treetable-service';\n\n/**\n * TreeTable is used to display hierarchical data in tabular format.\n * @group Components\n */\n@Component({\n selector: 'p-treetable, p-tree-table',\n standalone: true,\n imports: [NgTemplateOutlet, Bind, PaginatorModule, SpinnerIcon, ArrowDownIcon, ArrowUpIcon, TTScrollableView, TTBody],\n template: `\n @if (showLoadingMask()) {\n <div [pBind]=\"ptm('mask')\" [class]=\"cx('mask')\" animate.enter=\"p-overlay-mask-enter-active\" animate.leave=\"p-overlay-mask-leave-active\">\n @if (loadingIcon()) {\n <i [class]=\"cn(cx('loadingIcon'), 'pi-spin' + loadingIcon())\"></i>\n }\n @if (!loadingIcon()) {\n @if (!loadingIconTemplate()) {\n <svg data-p-icon=\"spinner\" [class]=\"cx('loadingIcon')\" [spin]=\"true\" />\n }\n @if (loadingIconTemplate()) {\n <span [class]=\"cx('loadingIcon')\">\n <ng-template *ngTemplateOutlet=\"loadingIconTemplate()\"></ng-template>\n </span>\n }\n }\n </div>\n }\n @if (captionTemplate()) {\n <div [pBind]=\"ptm('header')\" [class]=\"cx('header')\">\n <ng-container *ngTemplateOutlet=\"captionTemplate()\"></ng-container>\n </div>\n }\n @if (showTopPaginator()) {\n <p-paginator\n [pt]=\"ptm('pcPaginator')\"\n [rows]=\"rows() ?? 0\"\n [first]=\"first\"\n [totalRecords]=\"totalRecords\"\n [pageLinkSize]=\"pageLinks()\"\n [class]=\"cx('pcPaginator')\"\n [alwaysShow]=\"alwaysShowPaginator()\"\n (onPageChange)=\"onPageChange($event)\"\n [rowsPerPageOptions]=\"rowsPerPageOptions()\"\n [templateLeft]=\"paginatorLeftTemplate()\"\n [templateRight]=\"paginatorRightTemplate()\"\n [appendTo]=\"paginatorDropdownAppendTo()\"\n [currentPageReportTemplate]=\"currentPageReportTemplate()\"\n [showFirstLastIcon]=\"showFirstLastIcon()\"\n [dropdownItemTemplate]=\"paginatorDropdownItemTemplate()\"\n [showCurrentPageReport]=\"showCurrentPageReport()\"\n [showJumpToPageDropdown]=\"showJumpToPageDropdown()\"\n [showPageLinks]=\"showPageLinks()\"\n [locale]=\"paginatorLocale()\"\n [unstyled]=\"unstyled()\"\n >\n @if (paginatorFirstPageLinkIconTemplate()) {\n <ng-template #firstpagelinkicon>\n <ng-container *ngTemplateOutlet=\"paginatorFirstPageLinkIconTemplate()\"></ng-container>\n </ng-template>\n }\n\n @if (paginatorPreviousPageLinkIconTemplate()) {\n <ng-template #previouspagelinkicon>\n <ng-container *ngTemplateOutlet=\"paginatorPreviousPageLinkIconTemplate()\"></ng-container>\n </ng-template>\n }\n\n @if (paginatorLastPageLinkIconTemplate()) {\n <ng-template #lastpagelinkicon>\n <ng-container *ngTemplateOutlet=\"paginatorLastPageLinkIconTemplate()\"></ng-container>\n </ng-template>\n }\n\n @if (paginatorNextPageLinkIconTemplate()) {\n <ng-template #nextpagelinkicon>\n <ng-container *ngTemplateOutlet=\"paginatorNextPageLinkIconTemplate()\"></ng-container>\n </ng-template>\n }\n </p-paginator>\n }\n\n @if (!scrollable()) {\n <div [pBind]=\"ptm('wrapper')\" [class]=\"cx('wrapper')\" [style]=\"sx('wrapper')\">\n <table role=\"treegrid\" [pBind]=\"ptm('table')\" #table [class]=\"tableStyleClass()\" [style]=\"tableStyle()\">\n <ng-container *ngTemplateOutlet=\"colGroupTemplate(); context: { $implicit: columns() }\"></ng-container>\n <thead role=\"rowgroup\" [class]=\"cx('thead')\" [pBind]=\"ptm('thead')\">\n <ng-container *ngTemplateOutlet=\"headerTemplate(); context: { $implicit: columns() }\"></ng-container>\n </thead>\n <tbody [class]=\"cx('tbody')\" [pBind]=\"ptm('tbody')\" role=\"rowgroup\" [unstyled]=\"unstyled()\" [pTreeTableBody]=\"columns()\" [pTreeTableBodyTemplate]=\"bodyTemplate()\"></tbody>\n <tfoot [class]=\"cx('tfoot')\" [pBind]=\"ptm('tfoot')\" role=\"rowgroup\">\n <ng-container *ngTemplateOutlet=\"footerTemplate(); context: { $implicit: columns() }\"></ng-container>\n </tfoot>\n </table>\n </div>\n }\n\n @if (scrollable()) {\n <div [pBind]=\"ptm('scrollableWrapper')\" [class]=\"cx('scrollableWrapper')\">\n @if (frozenColumns() || frozenBodyTemplate()) {\n <div\n [class]=\"cn(cx('scrollableView'), cx('frozenView'))\"\n #scrollableFrozenView\n [ttScrollableView]=\"frozenColumns()\"\n [unstyled]=\"unstyled()\"\n [frozen]=\"true\"\n [style]=\"{ width: frozenWidth() }\"\n [scrollHeight]=\"scrollHeight()\"\n [pBind]=\"ptm('scrollableView')\"\n ></div>\n }\n <div\n [class]=\"cx('scrollableView')\"\n [pBind]=\"ptm('scrollableView')\"\n #scrollableView\n [ttScrollableView]=\"columns()\"\n [unstyled]=\"unstyled()\"\n [frozen]=\"false\"\n [scrollHeight]=\"scrollHeight()\"\n [style]=\"{ left: frozenWidth(), width: 'calc(100% - ' + frozenWidth() + ')' }\"\n ></div>\n </div>\n }\n\n @if (showBottomPaginator()) {\n <p-paginator\n [pt]=\"ptm('pcPaginator')\"\n [rows]=\"rows() ?? 0\"\n [first]=\"first\"\n [totalRecords]=\"totalRecords\"\n [pageLinkSize]=\"pageLinks()\"\n [class]=\"cx('pcPaginator')\"\n [alwaysShow]=\"alwaysShowPaginator()\"\n (onPageChange)=\"onPageChange($event)\"\n [rowsPerPageOptions]=\"rowsPerPageOptions()\"\n [templateLeft]=\"paginatorLeftTemplate()\"\n [templateRight]=\"paginatorRightTemplate()\"\n [appendTo]=\"paginatorDropdownAppendTo()\"\n [currentPageReportTemplate]=\"currentPageReportTemplate()\"\n [showFirstLastIcon]=\"showFirstLastIcon()\"\n [dropdownItemTemplate]=\"paginatorDropdownItemTemplate()\"\n [showCurrentPageReport]=\"showCurrentPageReport()\"\n [showJumpToPageDropdown]=\"showJumpToPageDropdown()\"\n [showPageLinks]=\"showPageLinks()\"\n [locale]=\"paginatorLocale()\"\n [unstyled]=\"unstyled()\"\n >\n @if (paginatorFirstPageLinkIconTemplate()) {\n <ng-template #firstpagelinkicon>\n <ng-container *ngTemplateOutlet=\"paginatorFirstPageLinkIconTemplate()\"></ng-container>\n </ng-template>\n }\n\n @if (paginatorPreviousPageLinkIconTemplate()) {\n <ng-template #previouspagelinkicon>\n <ng-container *ngTemplateOutlet=\"paginatorPreviousPageLinkIconTemplate()\"></ng-container>\n </ng-template>\n }\n\n @if (paginatorLastPageLinkIconTemplate()) {\n <ng-template #lastpagelinkicon>\n <ng-container *ngTemplateOutlet=\"paginatorLastPageLinkIconTemplate()\"></ng-container>\n </ng-template>\n }\n\n @if (paginatorNextPageLinkIconTemplate()) {\n <ng-template #nextpagelinkicon>\n <ng-container *ngTemplateOutlet=\"paginatorNextPageLinkIconTemplate()\"></ng-container>\n </ng-template>\n }\n </p-paginator>\n }\n @if (summaryTemplate()) {\n <div [pBind]=\"ptm('footer')\" [class]=\"cx('footer')\">\n <ng-container *ngTemplateOutlet=\"summaryTemplate()\"></ng-container>\n </div>\n }\n\n @if (resizableColumns()) {\n <div [pBind]=\"ptm('columnResizerHelper')\" #resizeHelper [class]=\"cx('columnResizerHelper')\" [style.display]=\"'none'\"></div>\n }\n @if (reorderableColumns()) {\n <span [pBind]=\"ptm('reorderIndicatorUp')\" #reorderIndicatorUp [class]=\"cx('reorderIndicatorUp')\" [style.display]=\"'none'\">\n @if (!reorderIndicatorUpIconTemplate()) {\n <svg data-p-icon=\"arrow-down\" />\n }\n <ng-template *ngTemplateOutlet=\"reorderIndicatorUpIconTemplate()\"></ng-template>\n </span>\n <span [pBind]=\"ptm('reorderIndicatorDown')\" #reorderIndicatorDown [class]=\"cx('reorderIndicatorDown')\" [style.display]=\"'none'\">\n @if (!reorderIndicatorDownIconTemplate()) {\n <svg data-p-icon=\"arrow-up\" />\n }\n <ng-template *ngTemplateOutlet=\"reorderIndicatorDownIconTemplate()\"></ng-template>\n </span>\n }\n `,\n providers: [TreeTableService, TreeTableStyle, { provide: TREETABLE_INSTANCE, useExisting: TreeTable }, { provide: PARENT_INSTANCE, useExisting: TreeTable }],\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': \"cx('root')\",\n '[attr.data-p]': 'dataP()',\n '[attr.data-scrollselectors]': \"'.p-treetable-scrollable-body'\"\n },\n hostDirectives: [Bind]\n})\nexport class TreeTable extends BaseComponent<TreeTablePassThrough> implements BlockableUI {\n componentName = 'TreeTable';\n\n _componentStyle = inject(TreeTableStyle);\n\n bindDirectiveInstance = inject(Bind, { self: true });\n\n onAfterViewChecked() {\n this.bindDirectiveInstance.setAttrs(this.ptms(['host', 'root']));\n }\n /**\n * An array of objects to represent dynamic columns.\n * @group Props\n */\n columns = input<any[]>();\n /**\n * Inline style of the table.\n * @group Props\n */\n tableStyle = input<CSSProperties>();\n /**\n * Style class of the table.\n * @group Props\n */\n tableStyleClass = input<string>();\n /**\n * Whether the cell widths scale according to their content or not.\n * @group Props\n */\n autoLayout = input(undefined, { transform: booleanAttribute });\n /**\n * Defines if data is loaded and interacted with in lazy manner.\n * @group Props\n */\n lazy = input(false, { transform: booleanAttribute });\n /**\n * Whether to call lazy loading on initialization.\n * @group Props\n */\n lazyLoadOnInit = input(true, { transform: booleanAttribute });\n /**\n * When specified as true, enables the pagination.\n * @group Props\n */\n paginator = input(undefined, { transform: booleanAttribute });\n /**\n * Number of rows to display per page.\n * @group Props\n */\n rows = model<number | undefined>(undefined);\n /**\n * Index of the first row to be displayed.\n * @group Props\n */\n firstInput = input(0, { alias: 'first', transform: numberAttribute });\n /**\n * Number of page links to display in paginator.\n * @group Props\n */\n pageLinks = input(5, { transform: numberAttribute });\n /**\n * Array of integer/object values to display inside rows per page dropdown of paginator\n * @group Props\n */\n rowsPerPageOptions = input<any[]>();\n /**\n * Whether to show it even there is only one page.\n * @group Props\n */\n alwaysShowPaginator = input(true, { transform: booleanAttribute });\n /**\n * Position of the paginator.\n * @group Props\n */\n paginatorPosition = input<TreeTablePaginatorPosition>('bottom');\n /**\n * Custom style class for paginator\n * @group Props\n */\n paginatorStyleClass = input<string>();\n /**\n * Target element to attach the paginator dropdown overlay, valid values are \"body\" or a local ng-template variable of another element (note: use binding with brackets for template variables, e.g. [appendTo]=\"mydiv\" for a div element having #mydiv as variable name).\n * @group Props\n */\n paginatorDropdownAppendTo = input<any>();\n /**\n * Template of the current page report element. Available placeholders are {currentPage},{totalPages},{rows},{first},{last} and {totalRecords}\n * @group Props\n */\n currentPageReportTemplate = input('{currentPage} of {totalPages}');\n /**\n * Whether to display current page report.\n * @group Props\n */\n showCurrentPageReport = input(undefined, { transform: booleanAttribute });\n /**\n * Whether to display a dropdown to navigate to any page.\n * @group Props\n */\n showJumpToPageDropdown = input(undefined, { transform: booleanAttribute });\n /**\n * When enabled, icons are displayed on paginator to go first and last page.\n * @group Props\n */\n showFirstLastIcon = input(true, { transform: booleanAttribute });\n /**\n * Whether to show page links.\n * @group Props\n */\n showPageLinks = input(true, { transform: booleanAttribute });\n /**\n * Sort order to use when an unsorted column gets sorted by user interaction.\n * @group Props\n */\n defaultSortOrder = input(1, { transform: numberAttribute });\n /**\n * Defines whether sorting works on single column or on multiple columns.\n * @group Props\n */\n sortMode = input<TreeTableSortMode>('single');\n /**\n * When true, resets paginator to first page after sorting.\n * @group Props\n */\n resetPageOnSort = input(true, { transform: booleanAttribute });\n /**\n * Whether to use the default sorting or a custom one using sortFunction.\n * @group Props\n */\n customSort = input(undefined, { transform: booleanAttribute });\n /**\n * Specifies the selection mode, valid values are \"single\" and \"multiple\".\n * @group Props\n */\n selectionMode = input<TreeTableSelectionMode>();\n /**\n * Selected row with a context menu.\n * @group Props\n */\n contextMenuSelection = input<any>();\n /**\n * A property to uniquely identify a record in data.\n * @group Props\n */\n dataKey = input<string>();\n /**\n * Defines whether metaKey is should be considered for the selection. On touch enabled devices, metaKeySelection is turned off automatically.\n * @group Props\n */\n metaKeySelection = input(false, { transform: booleanAttribute });\n /**\n * Algorithm to define if a row is selected, valid values are \"equals\" that compares by reference and \"deepEquals\" that compares all fields.\n * @group Props\n */\n compareSelectionBy = input<TreeTableCompareSelectionBy>('deepEquals');\n /**\n * Adds hover effect to rows without the need for selectionMode.\n * @group Props\n */\n rowHover = input(undefined, { transform: booleanAttribute });\n /**\n * Displays a loader to indicate data load is in progress.\n * @group Props\n */\n loading = input(undefined, { transform: booleanAttribute });\n /**\n * The icon to show while indicating data load is in progress.\n * @group Props\n */\n loadingIcon = input<string>();\n /**\n * Whether to show the loading mask when loading property is true.\n * @group Props\n */\n showLoader = input(true, { transform: booleanAttribute });\n /**\n * When specified, enables horizontal and/or vertical scrolling.\n * @group Props\n */\n scrollable = input(undefined, { transform: booleanAttribute });\n /**\n * Height of the scroll viewport in fixed pixels or the \"flex\" keyword for a dynamic size.\n * @group Props\n */\n scrollHeight = input<string>();\n /**\n * Whether the data should be loaded on demand during scroll.\n * @group Props\n */\n virtualScroll = input(undefined, { transform: booleanAttribute });\n /**\n * Height of a row to use in calculations of virtual scrolling.\n * @group Props\n */\n virtualScrollItemSize = input(undefined, { transform: numberAttribute });\n /**\n * Whether to use the scroller feature. The properties of scroller component can be used like an object in it.\n * @group Props\n */\n virtualScrollOptions = input<ScrollerOptions>();\n /**\n * The delay (in milliseconds) before triggering the virtual scroll. This determines the time gap between the user's scroll action and the actual rendering of the next set of items in the virtual scroll.\n * @group Props\n */\n virtualScrollDelay = input(150, { transform: numberAttribute });\n /**\n * Width of the frozen columns container.\n * @group Props\n */\n frozenWidth = input<string>();\n /**\n * An array of objects to represent dynamic columns that are frozen.\n * @group Props\n */\n frozenColumns = input<any>();\n /**\n * When enabled, columns can be resized using drag and drop.\n * @group Props\n */\n resizableColumns = input(undefined, { transform: booleanAttribute });\n /**\n * Defines whether the overall table width should change on column resize, valid values are \"fit\" and \"expand\".\n * @group Props\n */\n columnResizeMode = input<TreeTableColumnResizeMode>('fit');\n /**\n * When enabled, columns can be reordered using drag and drop.\n * @group Props\n */\n reorderableColumns = input(undefined, { transform: booleanAttribute });\n /**\n * Local ng-template varilable of a ContextMenu.\n * @group Props\n */\n contextMenu = input<any>();\n /**\n * Function to optimize the dom operations by delegating to ngForTrackBy, default algorithm checks for object identity.\n * @group Props\n */\n rowTrackBy = input<Function>((index: number, item: any) => item);\n /**\n * An array of FilterMetadata objects to provide external filters.\n * @group Props\n */\n filtersInput = input<{ [s: string]: FilterMetadata | undefined }>({}, { alias: 'filters' });\n /**\n * An array of fields as string to use in global filtering.\n * @group Props\n */\n globalFilterFields = input<string[]>();\n /**\n * Delay in milliseconds before filtering the data.\n * @group Props\n */\n filterDelay = input(300, { transform: numberAttribute });\n /**\n * Mode for filtering valid values are \"lenient\" and \"strict\". Default is lenient.\n * @group Props\n */\n filterMode = input<TreeTableFilterMode>('lenient');\n /**\n * Locale to use in filtering. The default locale is the host environment's current locale.\n * @group Props\n */\n filterLocale = input<string>();\n /**\n * Locale to be used in paginator formatting.\n * @group Props\n */\n paginatorLocale = input<string>();\n /**\n * Number of total records, defaults to length of value when not defined.\n * @group Props\n */\n totalRecordsInput = input(0, { alias: 'totalRecords' });\n /**\n * Name of the field to sort data by default.\n * @group Props\n */\n sortFieldInput = input<string | null>(undefined, { alias: 'sortField' });\n /**\n * Order to sort when default sorting is enabled.\n * @defaultValue 1\n * @group Props\n */\n sortOrderInput = input(1, { alias: 'sortOrder' });\n /**\n * An array of SortMeta objects to sort the data by default in multiple sort mode.\n * @defaultValue null\n * @group Props\n */\n multiSortMetaInput = input<SortMeta[] | null>(undefined, { alias: 'multiSortMeta' });\n /**\n * Selected row in single mode or an array of values in multiple mode.\n * @defaultValue null\n * @deprecated since v22, use `selectionKeys` instead for key-based selection state.\n * @group Props\n */\n selectionInput = input<any>(undefined, { alias: 'selection' });\n /**\n * An array of objects to display.\n * @defaultValue null\n * @group Props\n */\n valueInput = input<TreeNode<any>[]>(undefined, { alias: 'value' });\n /**\n * A map of keys to control the selection state.\n * @group Props\n */\n selectionKeys = input<any>(undefined);\n /**\n * A map of keys (by `dataKey` value) whose value is `true` for collapsed rows. Two-way bindable.\n * When provided it controls row expansion (a row is expanded unless its key maps to `true`); leave it\n * unset to keep driving expansion from each node's `expanded` flag (default, non-breaking).\n * @group Props\n */\n collapsedKeys = input<any>(undefined);\n /**\n * Whether to show grid lines between cells.\n * @defaultValue false\n * @group Props\n */\n showGridlines = input(false, { transform: booleanAttribute });\n /**\n * Callback to invoke on selected node change.\n * @param {TreeTableNode} object - Node instance.\n * @group Emits\n */\n selectionChange = output<TreeTableNode<any> | TreeTableNode<any>[] | null>();\n /**\n * Callback to invoke on context menu selection change.\n * @param {TreeTableNode} object - Node instance.\n * @group Emits\n */\n contextMenuSelectionChange = output<TreeTableNode>();\n /**\n * Callback to invoke when data is filtered.\n * @param {TreeTableFilterEvent} event - Custom filter event.\n * @group Emits\n */\n onFilter = output<TreeTableFilterEvent>();\n /**\n * Callback to invoke when a node is expanded.\n * @param {TreeTableNodeExpandEvent} event - Node expand event.\n * @group Emits\n */\n onNodeExpand = output<TreeTableNodeExpandEvent>();\n /**\n * Callback to invoke when a node is collapsed.\n * @param {TreeTableNodeCollapseEvent} event - Node collapse event.\n * @group Emits\n */\n onNodeCollapse = output<TreeTableNodeCollapseEvent>();\n /**\n * Callback to invoke when pagination occurs.\n * @param {TreeTablePaginatorState} object - Paginator state.\n * @group Emits\n */\n onPage = output<TreeTablePaginatorState>();\n /**\n * Callback to invoke when a column gets sorted.\n * @param {Object} Object - Sort data.\n * @group Emits\n */\n onSort = output<any>();\n /**\n * Callback to invoke when paging, sorting or filtering happens in lazy mode.\n * @param {TreeTableLazyLoadEvent} event - Custom lazy load event.\n * @group Emits\n */\n onLazyLoad = output<TreeTableLazyLoadEvent>();\n /**\n * An event emitter to invoke on custom sorting, refer to sorting section for details.\n * @param {TreeTableSortEvent} event - Custom sort event.\n * @group Emits\n */\n sortFunction = output<TreeTableSortEvent>();\n /**\n * Callback to invoke when a column is resized.\n * @param {TreeTableColResizeEvent} event - Custom column resize event.\n * @group Emits\n */\n onColResize = output<TreeTableColResizeEvent>();\n /**\n * Callback to invoke when a column is reordered.\n * @param {TreeTableColumnReorderEvent} event - Custom column reorder.\n * @group Emits\n */\n onColReorder = output<TreeTableColumnReorderEvent>();\n /**\n * Callback to invoke when a node is selected.\n * @param {TreeTableNode} object - Node instance.\n * @group Emits\n */\n onNodeSelect = output<TreeTableNode>();\n /**\n * Callback to invoke when a node is unselected.\n * @param {TreeTableNodeUnSelectEvent} event - Custom node unselect event.\n * @group Emits\n */\n onNodeUnselect = output<TreeTableNodeUnSelectEvent>();\n /**\n * Callback to invoke when a node is selected with right click.\n * @param {TreeTableContextMenuSelectEvent} event - Custom context menu select event.\n * @group Emits\n */\n onContextMenuSelect = output<TreeTableContextMenuSelectEvent>();\n /**\n * Callback to invoke when state of header checkbox changes.\n * @param {TreeTableHeaderCheckboxToggleEvent} event - Custom checkbox toggle event.\n * @group Emits\n */\n onHeaderCheckboxToggle = output<TreeTableHeaderCheckboxToggleEvent>();\n /**\n * Callback to invoke when a cell switches to edit mode.\n * @param {TreeTableEditEvent} event - Custom edit event.\n * @group Emits\n */\n onEditInit = output<TreeTableEditEvent>();\n /**\n * Callback to invoke when cell edit is completed.\n * @param {TreeTableEditEvent} event - Custom edit event.\n * @group Emits\n */\n onEditComplete = output<TreeTableEditEvent>();\n /**\n * Callback to invoke when cell edit is cancelled with escape key.\n * @param {TreeTableEditEvent} event - Custom edit event.\n * @group Emits\n */\n onEditCancel = output<TreeTableEditEvent>();\n /**\n * Callback to invoke when selectionKeys are changed.\n * @param {Object} object - updated value of the selectionKeys.\n * @group Emits\n */\n selectionKeysChange = output<any>();\n /**\n * Callback to invoke when collapsedKeys are changed.\n * @param {Object} object - updated value of the collapsedKeys.\n * @group Emits\n */\n collapsedKeysChange = output<any>();\n\n resizeHelperViewChild = viewChild<ElementRef>('resizeHelper');\n\n reorderIndicatorUpViewChild = viewChild<ElementRef>('reorderIndicatorUp');\n\n reorderIndicatorDownViewChild = viewChild<ElementRef>('reorderIndicatorDown');\n\n tableViewChild = viewChild<ElementRef>('table');\n\n scrollableViewChild = viewChild<ElementRef>('scrollableView');\n\n scrollableFrozenViewChild = viewChild<ElementRef>('scrollableFrozenView');\n\n /**\n * @group Templates\n */\n colGroupTemplate = contentChild<TemplateRef<TreeTableColumnsTemplateContext>>('colgroup', { descendants: false });\n /**\n * @group Templates\n */\n captionTemplate = contentChild<TemplateRef<void>>('caption', { descendants: false });\n /**\n * @group Templates\n */\n headerTemplate = contentChild<TemplateRef<TreeTableColumnsTemplateContext>>('header', { descendants: false });\n /**\n * @group Templates\n */\n bodyTemplate = contentChild<TemplateRef<TreeTableBodyTemplateContext>>('body', { descendants: false });\n /**\n * @group Templates\n */\n footerTemplate = contentChild<TemplateRef<TreeTableColumnsTemplateContext>>('footer', { descendants: false });\n /**\n * @group Templates\n */\n summaryTemplate = contentChild<TemplateRef<void>>('summary', { descendants: false });\n /**\n * @group Templates\n */\n emptyMessageTemplate = contentChild<TemplateRef<TreeTableEmptyMessageTemplateContext>>('emptymessage', { descendants: false });\n /**\n * @group Templates\n */\n paginatorLeftTemplate = contentChild<TemplateRef<PaginatorTemplateContext>>('paginatorleft', { descendants: false });\n /**\n * @group Templates\n */\n paginatorRightTemplate = contentChild<TemplateRef<PaginatorTemplateContext>>('paginatorright', { descendants: false });\n /**\n * @group Templates\n */\n paginatorDropdownItemTemplate = contentChild<TemplateRef<PaginatorDropdownItemTemplateContext>>('paginatordropdownitem', { descendants: false });\n /**\n * @group Templates\n */\n frozenHeaderTemplate = contentChild<TemplateRef<TreeTableColumnsTemplateContext>>('frozenheader', { descendants: false });\n /**\n * @group Templates\n */\n frozenBodyTemplate = contentChild<TemplateRef<void>>('frozenbody', { descendants: false });\n /**\n * @group Templates\n */\n frozenFooterTemplate = contentChild<TemplateRef<TreeTableColumnsTemplateContext>>('frozenfooter', { descendants: false });\n /**\n * @group Templates\n */\n frozenColGroupTemplate = contentChild<TemplateRef<TreeTableColumnsTemplateContext>>('frozencolgroup', { descendants: false });\n /**\n * @group Templates\n */\n loadingIconTemplate = contentChild<TemplateRef<void>>('loadingicon', { descendants: false });\n /**\n * @group Templates\n */\n reorderIndicatorUpIconTemplate = contentChild<TemplateRef<void>>('reorderindicatorupicon', { descendants: false });\n /**\n * @group Templates\n */\n reorderIndicatorDownIconTemplate = contentChild<TemplateRef<void>>('reorderindicatordownicon', { descendants: false });\n /**\n * @group Templates\n */\n sortIconTemplate = contentChild<TemplateRef<TreeTableSortIconTemplateContext>>('sorticon', { descendants: false });\n /**\n * @group Templates\n */\n checkboxIconTemplate = contentChild<TemplateRef<TreeTableCheckboxIconTemplateContext>>('checkboxicon', { descendants: false });\n /**\n * @group Templates\n */\n headerCheckboxIconTemplate = contentChild<TemplateRef<TreeTableHeaderCheckboxIconTemplateContext>>('headercheckboxicon', { descendants: false });\n /**\n * @group Templates\n */\n togglerIconTemplate = contentChild<TemplateRef<TreeTableTogglerIconTemplateContext>>('togglericon', { descendants: false });\n /**\n * @group Templates\n */\n paginatorFirstPageLinkIconTemplate = contentChild<TemplateRef<void>>('paginatorfirstpagelinkicon', { descendants: false });\n /**\n * @group Templates\n */\n paginatorLastPageLinkIconTemplate = contentChild<TemplateRef<void>>('paginatorlastpagelinkicon', { descendants: false });\n /**\n * @group Templates\n */\n paginatorPreviousPageLinkIconTemplate = contentChild<TemplateRef<void>>('paginatorpreviouspagelinkicon', { descendants: false });\n /**\n * @group Templates\n */\n paginatorNextPageLinkIconTemplate = contentChild<TemplateRef<void>>('paginatornextpagelinkicon', { descendants: false });\n /**\n * @group Templates\n */\n loaderTemplate = contentChild<TemplateRef<ScrollerLoaderTemplateContext>>('loader', { descendants: false });\n\n showLoadingMask = computed(() => this.loading() && this.showLoader());\n\n showTopPaginator = computed(() => this.paginator() && (this.paginatorPosition() === 'top' || this.paginatorPosition() === 'both'));\n\n showBottomPaginator = computed(() => this.paginator() && (this.paginatorPosition() === 'bottom' || this.paginatorPosition() === 'both'));\n\n dataP = computed(() =>\n this.cn({\n scrollable: this.scrollable(),\n 'flex-scrollable': this.scrollable() && this.scrollHeight() === 'flex',\n loading: this.loading(),\n empty: this.isEmpty()\n })\n );\n\n lastResizerHelperX: Nullable<number>;\n\n reorderIconWidth: Nullable<number>;\n\n reorderIconHeight: Nullable<number>;\n\n draggedColumn: Nullable<any[]>;\n\n dropPosition: Nullable<number>;\n\n preventSelectionSetterPropagation: Nullable<boolean>;\n\n _selection: any;\n\n value: TreeNode<any>[] | undefined = [];\n\n totalRecords: number = 0;\n\n _sortField: string | undefined | null;\n\n _sortOrder: number = 1;\n\n _multiSortMeta: SortMeta[] | undefined | null;\n\n _selectionKeys: any;\n\n _collapsedKeys: any;\n\n first: number = 0;\n\n filters: { [s: string]: FilterMetadata | undefined } = {};\n\n selectedKeys: any = {};\n\n rowTouched: Nullable<boolean>;\n\n private _editingCell = signal<Nullable<Element>>(null);\n\n get editingCell(): Nullable<Element> {\n return this._editingCell();\n }\n\n set editingCell(value: Nullable<Element>) {\n this._editingCell.set(value);\n }\n\n editingCellData: any | undefined | null;\n\n editingCellField: any | undefined | null;\n\n editingCellClick: Nullable<boolean>;\n\n documentEditListener: VoidListener;\n\n initialized: Nullable<boolean>;\n\n toggleRowIndex: Nullable<number>;\n\n serializedValue: any[] | undefined | null;\n\n filteredNodes: Nullable<any[]>;\n\n filterTimeout: any;\n\n filterService = inject(FilterService);\n\n tableService = inject(TreeTableService);\n\n constructor() {\n super();\n\n // value effect\n effect(() => {\n const val = this.valueInput();\n untracked(() => {\n if (val !== undefined) {\n this.value = val;\n if (!this.lazy()) {\n this.totalRecords = this.value ? this.value.length : 0;\n if (this.sortMode() == 'single' && this._sortField) this.sortSingle();\n else if (this.sortMode() == 'multiple' && this._multiSortMeta) this.sortMultiple();\n else if (this.hasFilter()) this._filter();\n }\n this.updateSerializedValue();\n this.tableService.onUIUpdate(this.value);\n }\n });\n });\n\n // sortField effect\n effect(() => {\n const val = this.sortFieldInput();\n untracked(() => {\n if (val !== undefined) {\n this._sortField = val;\n if (!this.lazy() || this.initialized) {\n if (this.sortMode() === 'single') {\n this.sortSingle();\n }\n }\n }\n });\n });\n\n // sortOrder effect\n effect(() => {\n const val = this.sortOrderInput();\n untracked(() => {\n this._sortOrder = val;\n if (!this.lazy() || this.initialized) {\n if (this.sortMode() === 'single') {\n this.sortSingle();\n }\n }\n });\n });\n\n // multiSortMeta effect\n effect(() => {\n const val = this.multiSortMetaInput();\n untracked(() => {\n if (val !== undefined) {\n this._multiSortMeta = val;\n if (this.sortMode() === 'multiple') {\n this.sortMultiple();\n }\n }\n });\n });\n\n // selection effect\n effect(() => {\n const val = this.selectionInput();\n untracked(() => {\n if (val !== undefined) {\n this._selection = val;\n if (!this.preventSelectionSetterPropagation) {\n this.updateselectedKeys();\n this.tableService.onSelectionChange();\n }\n this.preventSelectionSetterPropagation = false;\n }\n });\n });\n\n // totalRecords effect\n effect(() => {\n const val = this.totalRecordsInput();\n untracked(() => {\n this.totalRecords = val;\n this.tableService.onTotalRecordsChange(this.totalRecords);\n });\n });\n\n // selectionKeys effect\n effect(() => {\n const val = this.selectionKeys();\n untracked(() => {\n if (val !== undefined) {\n this._selectionKeys = val;\n this.selectionKeysChange.emit(this._selectionKeys);\n }\n });\n });\n\n // collapsedKeys effect: project the map onto each node's `expanded` flag so the existing\n // expansion engine keeps working unchanged (non-breaking when collapsedKeys is not provided).\n effect(() => {\n const val = this.collapsedKeys();\n untracked(() => {\n if (val !== undefined) {\n this._collapsedKeys = val;\n this.applyCollapsedKeys();\n this.updateSerializedValue();\n this.tableService.onUIUpdate(this.value);\n this.collapsedKeysChange.emit(this._collapsedKeys);\n }\n });\n });\n\n // first effect\n effect(() => {\n const val = this.firstInput();\n untracked(() => {\n this.first = val;\n });\n });\n\n // filters effect\n effect(() => {\n const val = this.filtersInput();\n untracked(() => {\n this.filters = val;\n });\n });\n }\n\n onInit() {\n if (this.lazy() && this.lazyLoadOnInit() && !this.virtualScroll()) {\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\n }\n this.initialized = true;\n }\n\n updateSerializedValue() {\n this.serializedValue = [];\n\n if (this.paginator()) this.serializePageNodes();\n else this.serializeNodes(null, this.filteredNodes || this.value, 0, true);\n }\n\n serializeNodes(parent: Nullable<TreeTableNode>, nodes: Nullable<TreeNode[]>, level: Nullable<number>, visible: Nullable<boolean>) {\n if (nodes && nodes.length) {\n for (let node of nodes) {\n node.parent = <TreeTableNode>parent;\n const rowNode = {\n node: node,\n parent: parent,\n level: level,\n visible: visible && (parent ? parent.expanded : true)\n };\n (<TreeNode[]>this.serializedValue).push(<TreeTableNode>rowNode);\n\n if (rowNode.visible && node.expanded) {\n this.serializeNodes(node, node.children, <number>level + 1, rowNode.visible);\n }\n }\n }\n }\n\n serializePageNodes() {\n let data = this.filteredNodes || this.value;\n this.serializedValue = [];\n if (data && data.length) {\n const first = this.lazy() ? 0 : this.first;\n\n for (let i = first; i < first + <number>this.rows(); i++) {\n let node = data[i];\n if (node) {\n this.serializedValue.push({\n node: node,\n parent: <any>null,\n level: 0,\n visible: true\n });\n\n this.serializeNodes(node, node.children, 1, true);\n }\n }\n }\n }\n\n updateselectedKeys() {\n if (this.dataKey() && this._selection) {\n this.selectedKeys = {};\n if (Array.isArray(this._selection)) {\n for (let node of this._selection) {\n this.selectedKeys[String(resolveFieldData(node.data, this.dataKey()))] = 1;\n }\n } else {\n this.selectedKeys[String(resolveFieldData((<any>this._selection).data, this.dataKey()))] = 1;\n }\n }\n }\n\n onPageChange(event: TreeTablePaginatorState) {\n this.first = <number>event.first;\n this.rows.set(<number>event.rows);\n\n if (this.lazy()) this.onLazyLoad.emit(this.createLazyLoadMetadata());\n else this.serializePageNodes();\n\n this.onPage.emit({\n first: this.first,\n rows: <number>event.rows\n });\n\n this.tableService.onUIUpdate(this.value);\n\n if (this.scrollable()) {\n this.resetScrollTop();\n }\n }\n\n sort(event: TreeTableSortEvent) {\n let originalEvent = event.originalEvent;\n\n if (this.sortMode() === 'single') {\n this._sortOrder = this._sortField === event.field ? this._sortOrder * -1 : this.defaultSortOrder();\n this._sortField = event.field;\n this.sortSingle();\n\n if (this.resetPageOnSort() && this.scrollable()) {\n this.resetScrollTop();\n }\n }\n if (this.sortMode() === 'multiple') {\n let metaKey = (<KeyboardEvent>originalEvent).metaKey || (<KeyboardEvent>originalEvent).ctrlKey;\n let sortMeta = this.getSortMeta(<string>event.field);\n\n if (sortMeta) {\n if (!metaKey) {\n this._multiSortMeta = [{ field: <string>event.field, order: sortMeta.order * -1 }];\n\n if (this.resetPageOnSort() && this.scrollable()) {\n this.resetScrollTop();\n }\n } else {\n sortMeta.order = sortMeta.order * -1;\n }\n } else {\n if (!metaKey || !this._multiSortMeta) {\n this._multiSortMeta = [];\n\n if (this.resetPageOnSort() && this.scrollable()) {\n this.resetScrollTop();\n }\n }\n (<SortMeta[]>this._multiSortMeta).push({ field: <string>event.field, order: this.defaultSortOrder() });\n }\n\n this.sortMultiple();\n }\n }\n\n sortSingle() {\n if (this._sortField && this._sortOrder) {\n if (this.lazy()) {\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\n } else if (this.value) {\n this.sortNodes(this.value);\n\n if (this.hasFilter()) {\n this._filter();\n }\n }\n\n let sortMeta: SortMeta = {\n field: this._sortField,\n order: this._sortOrder\n };\n\n this.onSort.emit(sortMeta);\n this.tableService.onSort(sortMeta);\n this.updateSerializedValue();\n }\n }\n\n sortNodes(nodes: TreeNode[]) {\n if (!nodes || nodes.length === 0) {\n return;\n }\n\n if (this.customSort()) {\n this.sortFunction.emit({\n data: nodes,\n mode: this.sortMode(),\n field: <string>this._sortField,\n order: this._sortOrder\n });\n } else {\n nodes.sort((node1, node2) => {\n let value1 = resolveFieldData(node1.data, this._sortField);\n let value2 = resolveFieldData(node2.data, this._sortField);\n let result: number = 0;\n\n if (value1 == null && value2 != null) result = -1;\n else if (value1 != null && value2 == null) result = 1;\n else if (value1 == null && value2 == null) result = 0;\n else if (typeof value1 === 'string' && typeof value2 === 'string') result = value1.localeCompare(value2, undefined, { numeric: true });\n else result = value1 < value2 ? -1 : value1 > value2 ? 1 : 0;\n\n return this._sortOrder * result;\n });\n }\n\n for (let node of nodes) {\n this.sortNodes(node.children as TreeNode[]);\n }\n }\n\n sortMultiple() {\n if (this._multiSortMeta) {\n if (this.lazy()) {\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\n } else if (this.value) {\n this.sortMultipleNodes(this.value);\n\n if (this.hasFilter()) {\n this._filter();\n }\n }\n\n this.onSort.emit({\n multisortmeta: this._multiSortMeta\n });\n this.updateSerializedValue();\n this.tableService.onSort(this._multiSortMeta);\n }\n }\n\n sortMultipleNodes(nodes: TreeNode[]) {\n if (!nodes || nodes.length === 0) {\n return;\n }\n\n if (this.customSort()) {\n this.sortFunction.emit({\n data: this.value,\n mode: this.sortMode(),\n multiSortMeta: this._multiSortMeta\n });\n } else {\n nodes.sort((node1, node2) => {\n return this.multisortField(node1, node2, <SortMeta[]>this._multiSortMeta, 0);\n });\n }\n\n for (let node of nodes) {\n this.sortMultipleNodes(node.children as TreeNode[]);\n }\n }\n\n multisortField(node1: TreeTableNode, node2: TreeTableNode, multiSortMeta: SortMeta[], index: number): number {\n if (isEmpty(this._multiSortMeta) || isEmpty(multiSortMeta[index])) {\n return 0;\n }\n\n let value1 = resolveFieldData(node1.data, multiSortMeta[index].field);\n let value2 = resolveFieldData(node2.data, multiSortMeta[index].field);\n let result: number = 0;\n\n if (value1 == null && value2 != null) result = -1;\n else if (value1 != null && value2 == null) result = 1;\n else if (value1 == null && value2 == null) result = 0;\n if (typeof value1 == 'string' || value1 instanceof String) {\n if (value1.localeCompare && value1 != value2) {\n return multiSortMeta[index].order * value1.localeCompare(value2, undefined, { numeric: true });\n }\n } else {\n result = value1 < value2 ? -1 : 1;\n }\n\n if (value1 == value2) {\n return multiSortMeta.length - 1 > index ? this.multisortField(node1, node2, multiSortMeta, index + 1) : 0;\n }\n\n return multiSortMeta[index].order * result;\n }\n\n getSortMeta(field: string) {\n if (this._multiSortMeta && this._multiSortMeta.length) {\n for (let i = 0; i < this._multiSortMeta.length; i++) {\n if (this._multiSortMeta[i].field === field) {\n return this._multiSortMeta[i];\n }\n }\n }\n\n return null;\n }\n\n isSorted(field: string) {\n if (this.sortMode() === 'single') {\n return this._sortField && this._sortField === field;\n } else if (this.sortMode() === 'multiple') {\n let sorted = false;\n if (this._multiSortMeta) {\n for (let i = 0; i < this._multiSortMeta.length; i++) {\n if (this._multiSortMeta[i].field == field) {\n sorted = true;\n break;\n }\n }\n }\n return sorted;\n }\n }\n\n createLazyLoadMetadata(): any {\n return {\n first: this.first,\n rows: this.rows(),\n sortField: this._sortField,\n sortOrder: this._sortOrder,\n filters: this.filters,\n globalFilter: this.filters && this.filters['global'] ? this.filters['global'].value : null,\n multiSortMeta: this._multiSortMeta,\n forceUpdate: () => this.cd.detectChanges()\n };\n }\n\n onLazyItemLoad(event: TreeTableLazyLoadEvent) {\n this.onLazyLoad.emit({\n ...this.createLazyLoadMetadata(),\n ...event,\n rows: event.last - event.first\n });\n }\n /**\n * Resets scroll to top.\n * @group Method\n */\n public resetScrollTop() {\n if (this.virtualScroll()) this.scrollToVirtualIndex(0);\n else this.scrollTo({ top: 0 });\n }\n /**\n * Scrolls to given index when using virtual scroll.\n * @param {number} index - index of the element.\n * @group Method\n */\n public scrollToVirtualIndex(index: number) {\n if (this.scrollableViewChild()) {\n (<any>this.scrollableViewChild()).scrollToVirtualIndex(<number>index);\n }\n\n if (this.scrollableFrozenViewChild()) {\n (<any>this.scrollableViewChild()).scrollToVirtualIndex(index);\n }\n }\n /**\n * Scrolls to given index.\n * @param {ScrollToOptions} options - Scroll options.\n * @group Method\n */\n public scrollTo(options: ScrollToOptions) {\n if (this.scrollableViewChild()) {\n (<any>this.scrollableViewChild()).scrollTo(options);\n }\n\n if (this.scrollableFrozenViewChild()) {\n (<any>this.scrollableViewChild()).scrollTo(options);\n }\n }\n\n isEmpty() {\n let data = this.filteredNodes || this.value;\n return data == null || data.length == 0;\n }\n\n getBlockableElement(): HTMLElement {\n return this.el.nativeElement.children[0];\n }\n\n onColumnResizeBegin(event: MouseEvent) {\n let containerLeft = <any>getOffset(this.el?.nativeElement).left;\n this.lastResizerHelperX = event.pageX - containerLeft + this.el?.nativeElement.scrollLeft;\n event.preventDefault();\n }\n\n onColumnResize(event: MouseEvent) {\n let containerLeft = <any>getOffset(this.el?.nativeElement).left;\n this.el?.nativeElement.setAttribute('data-p-unselectable-text', 'true');\n !this.$unstyled() && addStyle(this.el.nativeElement, { 'user-select': 'none' });\n this.resizeHelperViewChild()!.nativeElement.style.height = this.el?.nativeElement.offsetHeight + 'px';\n this.resizeHelperViewChild()!.nativeElement.style.top = 0 + 'px';\n this.resizeHelperViewChild()!.nativeElement.style.left = event.pageX - containerLeft + this.el?.nativeElement.scrollLeft + 'px';\n\n this.resizeHelperViewChild()!.nativeElement.style.display = 'block';\n }\n\n onColumnResizeEnd(event: MouseEvent, column: any) {\n let delta = this.resizeHelperViewChild()!.nativeElement.offsetLeft - <number>this.lastResizerHelperX;\n let columnWidth = column.offsetWidth;\n let newColumnWidth = columnWidth + delta;\n let minWidth = column.style.minWidth || 15;\n\n if (columnWidth + delta > parseInt(minWidth)) {\n if (this.columnResizeMode() === 'fit') {\n let nextColumn = column.nextElementSibling;\n while (!nextColumn.offsetParent) {\n nextColumn = nextColumn.nextElementSibling;\n }\n\n if (nextColumn) {\n let nextColumnWidth = nextColumn.offsetWidth - delta;\n let nextColumnMinWidth = nextColumn.style.minWidth || 15;\n\n if (newColumnWidth > 15 && nextColumnWidth > parseInt(nextColumnMinWidth)) {\n if (this.scrollable()) {\n let scrollableView = this.findParentScrollableView(column);\n let scrollableBodyTable = <any>findSingle(scrollableView, '[data-pc-section=\"scrollablebody\"] table') || findSingle(scrollableView, '[data-pc-name=\"virtualscroller\"] table');\n let scrollableHeaderTable = <any>findSingle(scrollableView, '[data-pc-section=\"scrollableheadertable\"]');\n let scrollableFooterTable = <any>findSingle(scrollableView, '[data-pc-section=\"scrollablefootertable\"]');\n let resizeColumnIndex = getIndex(column);\n\n this.resizeColGroup(scrollableHeaderTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);\n this.resizeColGroup(scrollableBodyTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);\n this.resizeColGroup(scrollableFooterTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);\n } else {\n column.style.width = newColumnWidth + 'px';\n if (nextColumn) {\n nextColumn.style.width = nextColumnWidth + 'px';\n }\n }\n }\n }\n } else if (this.columnResizeMode() === 'expand') {\n if (this.scrollable()) {\n let scrollableView = this.findParentScrollableView(column);\n let scrollableBody = <any>findSingle(scrollableView, '[data-pc-section=\"scrollablebody\"]') || findSingle(scrollableView, '[data-pc-name=\"virtualscroller\"]');\n let scrollableHeader = <any>findSingle(scrollableView, '[data-pc-section=\"scrollableheader\"]');\n let scrollableFooter = <any>findSingle(scrollableView, '[data-pc-section=\"scrollablefooter\"]');\n let scrollableBodyTable = <any>findSingle(scrollableView, '[data-pc-section=\"scrollablebody\"] table') || findSingle(scrollableView, '[data-pc-name=\"virtualscroller\"] table');\n let scrollableHeaderTable = <any>findSingle(scrollableView, '[data-pc-section=\"scrollableheadertable\"]');\n let scrollableFooterTable = <any>findSingle(scrollableView, '[data-pc-section=\"scrollablefootertable\"]');\n scrollableBodyTable.style.width = scrollableBodyTable.offsetWidth + delta + 'px';\n scrollableHeaderTable.style.width = scrollableHeaderTable.offsetWidth + delta + 'px';\n if (scrollableFooterTable) {\n scrollableFooterTable.style.width = scrollableFooterTable.offsetWidth + delta + 'px';\n }\n let resizeColumnIndex = getIndex(column);\n\n const scrollableBodyTableWidth = column ? scrollableBodyTable.offsetWidth + delta : newColumnWidth;\n const scrollableHeaderTableWidth = column ? scrollableHeaderTable.offsetWidth + delta : newColumnWidth;\n const isContainerInViewport = this.el?.nativeElement.offsetWidth >= scrollableBodyTableWidth;\n\n let setWidth = (container: HTMLElement, table: HTMLElement, width: number, isContainerInViewport: boolean) => {\n if (container && table) {\n container.style.width = isContainerInViewport ? width + calculateScrollbarWidth(scrollableBody) + 'px' : 'auto';\n table.style.width = width + 'px';\n }\n };\n\n setWidth(scrollableBody, scrollableBodyTable, scrollableBodyTableWidth, isContainerInViewport);\n setWidth(scrollableHeader, scrollableHeaderTable, scrollableHeaderTableWidth, isContainerInViewport);\n setWidth(scrollableFooter, scrollableFooterTable, scrollableHeaderTableWidth, isContainerInViewport);\n\n this.resizeColGroup(scrollableHeaderTable, resizeColumnIndex, newColumnWidth, null);\n this.resizeColGroup(scrollableBodyTable, resizeColumnIndex, newColumnWidth, null);\n this.resizeColGroup(scrollableFooterTable, resizeColumnIndex, newColumnWidth, null);\n } else {\n this.tableViewChild()!.nativeElement.style.width = this.tableViewChild()?.nativeElement.offsetWidth + delta + 'px';\n column.style.width = newColumnWidth + 'px';\n let containerWidth = this.tableViewChild()?.nativeElement.style.width;\n (<ElementRef>this.el).nativeElement.style.width = containerWidth + 'px';\n }\n }\n\n this.onColResize.emit({\n element: column,\n delta: delta\n });\n }\n\n this.resizeHelperViewChild()!.nativeElement.style.display = 'none';\n\n this.el.nativeElement.removeAttribute('data-p-unselectable-text');\n !this.$unstyled() && (this.el.nativeElement.style['user-select'] = '');\n }\n\n findParentScrollableView(column: any) {\n if (column) {\n let parent = column.parentElement;\n while (parent && !findSingle(parent, '[data-pc-section=\"scrollableview\"]')) {\n parent = parent.parentElement;\n }\n\n return parent;\n } else {\n return null;\n }\n }\n\n resizeColGroup(table: Nullable<HTMLElement>, resizeColumnIndex: Nullable<number>, newColumnWidth: Nullable<number>, nextColumnWidth: Nullable<number>) {\n if (table) {\n let colGroup = table.children[0].nodeName === 'COLGROUP' ? table.children[0] : null;\n\n if (colGroup) {\n let col = colGroup.children[<number>resizeColumnIndex];\n let nextCol = col.nextElementSibling;\n (<HTMLElement>col).style.width = newColumnWidth + 'px';\n\n if (nextCol && nextColumnWidth) {\n (<HTMLElement>nextCol).style.width = nextColumnWidth + 'px';\n }\n } else {\n throw 'Scrollable tables require a colgroup to support resizable columns';\n }\n }\n }\n\n onColumnDragStart(event: DragEvent, columnElement: any) {\n this.reorderIconWidth = getHiddenElementOuterWidth(this.reorderIndicatorUpViewChild()?.nativeElement);\n this.reorderIconHeight = getHiddenElementOuterHeight(this.reorderIndicatorDownViewChild()?.nativeElement);\n this.draggedColumn = columnElement;\n (<any>event).dataTransfer.setData('text', 'b'); // For firefox\n }\n\n onColumnDragEnter(event: DragEvent, dropHeader: any) {\n if (this.reorderableColumns() && this.draggedColumn && dropHeader) {\n event.preventDefault();\n let containerOffset = <any>getOffset(this.el?.nativeElement);\n let dropHeaderOffset = <any>getOffset(dropHeader);\n\n if (this.draggedColumn != dropHeader) {\n let targetLeft = dropHeaderOffset.left - containerOffset.left;\n let targetTop = containerOffset.top - dropHeaderOffset.top;\n let columnCenter = dropHeaderOffset.left + dropHeader.offsetWidth / 2;\n\n this.reorderIndicatorUpViewChild()!.nativeElement.style.top = dropHeaderOffset.top - containerOffset.top - (<number>this.reorderIconHeight - 1) + 'px';\n this.reorderIndicatorDownViewChild()!.nativeElement.style.top = dropHeaderOffset.top - containerOffset.top + dropHeader.offsetHeight + 'px';\n\n if (event.pageX > columnCenter) {\n this.reorderIndicatorUpViewChild()!.nativeElement.style.left = targetLeft + dropHeader.offsetWidth - Math.ceil(<number>this.reorderIconWidth / 2) + 'px';\n this.reorderIndicatorDownViewChild()!.nativeElement.style.left = targetLeft + dropHeader.offsetWidth - Math.ceil(<number>this.reorderIconWidth / 2) + 'px';\n this.dropPosition = 1;\n } else {\n this.reorderIndicatorUpViewChild()!.nativeElement.style.left = targetLeft - Math.ceil(<number>this.reorderIconWidth / 2) + 'px';\n this.reorderIndicatorDownViewChild()!.nativeElement.style.left = targetLeft - Math.ceil(<number>this.reorderIconWidth / 2) + 'px';\n this.dropPosition = -1;\n }\n\n this.reorderIndicatorUpViewChild()!.nativeElement.style.display = 'block';\n this.reorderIndicatorDownViewChild()!.nativeElement.style.display = 'block';\n } else {\n (<any>event).dataTransfer.dropEffect = 'none';\n }\n }\n }\n\n onColumnDragLeave(event: DragEvent) {\n if (this.reorderableColumns() && this.draggedColumn) {\n event.preventDefault();\n this.reorderIndicatorUpViewChild()!.nativeElement.style.display = 'none';\n this.reorderIndicatorDownViewChild()!.nativeElement.style.display = 'none';\n }\n }\n\n onColumnDrop(event: DragEvent, dropColumn: any) {\n event.preventDefault();\n if (this.draggedColumn) {\n let dragIndex = DomHandler.indexWithinGroup(this.draggedColumn, 'ttreorderablecolumn');\n let dropIndex = DomHandler.indexWithinGroup(dropColumn, 'ttreorderablecolumn');\n let allowDrop = dragIndex != dropIndex;\n if (allowDrop && ((dropIndex - dragIndex == 1 && this.dropPosition === -1) || (dragIndex - dropIndex == 1 && this.dropPosition === 1))) {\n allowDrop = false;\n }\n\n if (allowDrop && dropIndex < dragIndex && this.dropPosition === 1) {\n dropIndex = dropIndex + 1;\n }\n\n if (allowDrop && dropIndex > dragIndex && this.dropPosition === -1) {\n dropIndex = dropIndex - 1;\n }\n\n if (allowDrop) {\n reorderArray(<any[]>this.columns(), dragIndex, dropIndex);\n\n this.onColReorder.emit({\n dragIndex: dragIndex,\n dropIndex: dropIndex,\n columns: this.columns()\n });\n }\n\n this.reorderIndicatorUpViewChild()!.nativeElement.style.display = 'none';\n this.reorderIndicatorDownViewChild()!.nativeElement.style.display = 'none';\n (this.draggedColumn as any).draggable = false;\n this.draggedColumn = null;\n this.dropPosition = null;\n }\n }\n\n handleRowClick(event: any) {\n let targetNode = (<HTMLElement>event.originalEvent.target).nodeName;\n if (targetNode == 'INPUT' || targetNode == 'BUTTON' || targetNode == 'A' || isClickable(event.originalEvent.target)) {\n return;\n }\n\n if (this.selectionMode()) {\n this.preventSelectionSetterPropagation = true;\n let rowNode = event.rowNode;\n let selected = this.isSelected((<any>rowNode).node);\n let metaSelection = this.rowTouched ? false : this.metaKeySelection();\n let dataKeyValue = this.dataKey() ? String(resolveFieldData((<TreeTableNode>rowNode.node).data, this.dataKey())) : null;\n\n if (metaSelection) {\n let keyboardEvent = <KeyboardEvent>event.originalEvent;\n let metaKey = keyboardEvent.metaKey || keyboardEvent.ctrlKey;\n\n if (selected && metaKey) {\n if (this.isSingleSelectionMode()) {\n this._selection = null;\n this.selectedKeys = {};\n this.selectionChange.emit(null);\n } else {\n let selectionIndex = this.findIndexInSelection(rowNode.node);\n this._selection = this._selection.filter((val: TreeTableNode, i: number) => i != selectionIndex);\n this.selectionChange.emit(this._selection);\n if (dataKeyValue) {\n delete this.selectedKeys[dataKeyValue];\n }\n }\n\n this.onNodeUnselect.emit({\n originalEvent: event.originalEvent,\n node: <TreeTableNode>rowNode.node,\n type: 'row'\n });\n } else {\n if (this.isSingleSelectionMode()) {\n this._selection = rowNode.node;\n this.selectionChange.emit(rowNode.node);\n if (dataKeyValue) {\n this.selectedKeys = {};\n this.selectedKeys[dataKeyValue] = 1;\n }\n } else if (this.isMultipleSelectionMode()) {\n if (metaKey) {\n this._selection = this._selection || [];\n } else {\n this._selection = [];\n this.selectedKeys = {};\n }\n\n this._selection = [...this._selection, rowNode.node];\n this.selectionChange.emit(this._selection);\n if (dataKeyValue) {\n this.selectedKeys[dataKeyValue] = 1;\n }\n }\n\n this.onNodeSelect.emit({\n originalEvent: event.originalEvent,\n node: rowNode.node,\n type: 'row',\n index: (<any>event).rowIndex\n });\n }\n } else {\n if (this.selectionMode() === 'single') {\n if (selected) {\n this._selection = null;\n this.selectedKeys = {};\n this.selectionChange.emit(this._selection);\n this.onNodeUnselect.emit({\n originalEvent: event.originalEvent,\n node: <TreeTableNode>rowNode.node,\n type: 'row'\n });\n } else {\n this._selection = rowNode.node;\n this.selectionChange.emit(this._selection);\n this.onNodeSelect.emit({\n originalEvent: event.originalEvent,\n node: rowNode.node,\n type: 'row',\n index: event.rowIndex\n });\n if (dataKeyValue) {\n this.selectedKeys = {};\n this.selectedKeys[dataKeyValue] = 1;\n }\n }\n } else if (this.selectionMode() === 'multiple') {\n if (selected) {\n let selectionIndex = this.findIndexInSelection(rowNode.node);\n this._selection = this._selection.filter((val: TreeTableNode, i: number) => i != selectionIndex);\n this.selectionChange.emit(this._selection);\n this.onNodeUnselect.emit({\n originalEvent: event.originalEvent,\n node: rowNode.node,\n type: 'row'\n });\n if (dataKeyValue) {\n delete this.selectedKeys[dataKeyValue];\n }\n } else {\n this._selection = this._selection ? [...this._selection, rowNode.node] : [rowNode.node];\n this.selectionChange.emit(this._selection);\n this.onNodeSelect.emit({\n originalEvent: event.originalEvent,\n node: rowNode.node,\n type: 'row',\n index: event.rowIndex\n });\n if (dataKeyValue) {\n this.selectedKeys[dataKeyValue] = 1;\n }\n }\n }\n }\n\n this.tableService.onSelectionChange();\n }\n\n this.rowTouched = false;\n }\n\n handleRowTouchEnd(event: Event) {\n this.rowTouched = true;\n }\n\n handleRowRightClick(event: any) {\n const ctxMenu = this.contextMenu();\n if (ctxMenu) {\n const node = event.rowNode.node;\n\n const showContextMenu = () => {\n ctxMenu.show(event.originalEvent);\n ctxMenu.hideCallback = () => {\n this.contextMenuSelectionChange.emit(null as any);\n this.tableService.onContextMenu(null);\n };\n };\n\n this.contextMenuSelectionChange.emit(node);\n this.tableService.onContextMenu(node);\n showContextMenu();\n this.onContextMenuSelect.emit({ originalEvent: event.originalEvent, node: node });\n }\n }\n\n toggleNodeWithCheckbox(event: any) {\n // legacy selection support, will be removed in v18\n this._selection = this._selection || [];\n this.preventSelectionSetterPropagation = true;\n let node = event.rowNode.node;\n let selected = this.isSelected(node);\n\n if (selected) {\n this.propagateSelectionDown(node, false);\n if (event.rowNode.parent) {\n this.propagateSelectionUp(node.parent, false);\n }\n this.selectionChange.emit(this._selection);\n this.onNodeUnselect.emit({ originalEvent: event, node: node });\n } else {\n this.propagateSelectionDown(node, true);\n if (event.rowNode.parent) {\n this.propagateSelectionUp(node.parent, true);\n }\n this.selectionChange.emit(this._selection);\n this.onNodeSelect.emit({ originalEvent: event, node: node });\n }\n\n this.tableService.onSelectionChange();\n }\n\n toggleNodesWithCheckbox(event: Event | CheckboxChangeEvent, check: boolean) {\n // legacy selection support, will be removed in v18\n let data = this.filteredNodes || this.value;\n this._selection = check && data ? data.slice() : [];\n\n this.toggleAll(check);\n\n if (!check) {\n this._selection = [];\n this.selectedKeys = {};\n }\n\n this.preventSelectionSetterPropagation = true;\n this.selectionChange.emit(this._selection);\n this.tableService.onSelectionChange();\n\n this.onHeaderCheckboxToggle.emit({ originalEvent: event as Event, checked: check });\n }\n\n toggleAll(checked: boolean) {\n let data = this.filteredNodes || this.value;\n\n if (!this._selectionKeys) {\n if (data && data.length) {\n for (let node of data) {\n this.propagateSelectionDown(node, checked);\n }\n }\n } else {\n // legacy selection support, will be removed in v18\n if (data && data.length) {\n for (let node of data) {\n this.propagateDown(node, checked);\n }\n this.selectionKeysChange.emit(this._selectionKeys);\n }\n }\n }\n\n propagateSelectionUp(node: TreeTableNode, select: boolean) {\n // legacy selection support, will be removed in v18\n if (node.children && node.children.length) {\n let selectedChildCount: number = 0;\n let childPartialSelected: boolean = false;\n let dataKeyValue = this.dataKey() ? String(resolveFieldData(node.data, this.dataKey())) : null;\n\n for (let child of node.children) {\n if (this.isSelected(child)) selectedChildCount++;\n else if (child.partialSelected) childPartialSelected = true;\n }\n\n if (select && selectedChildCount == node.children.length) {\n this._selection = [...(this._selection || []), node];\n node.partialSelected = false;\n if (dataKeyValue) {\n this.selectedKeys[dataKeyValue] = 1;\n }\n } else {\n if (!select) {\n let index = this.findIndexInSelection(node);\n if (index >= 0) {\n this._selection = this._selection.filter((val: any, i: number) => i != index);\n\n if (dataKeyValue) {\n delete this.selectedKeys[dataKeyValue];\n }\n }\n }\n\n if (childPartialSelected || (selectedChildCount > 0 && selectedChildCount != node.children.length)) node.partialSelected = true;\n else node.partialSelected = false;\n }\n }\n\n let parent = node.parent;\n node.checked = select;\n if (parent) {\n this.propagateSelectionUp(parent, select);\n }\n }\n\n propagateSelectionDown(node: TreeTableNode, select: boolean) {\n // legacy selection support, will be removed in v18\n let index = this.findIndexInSelection(node);\n let dataKeyValue = this.dataKey() ? String(resolveFieldData(node.data, this.dataKey())) : null;\n\n if (select && index == -1) {\n this._selection = [...(this._selection || []), node];\n if (dataKeyValue) {\n this.selectedKeys[dataKeyValue] = 1;\n }\n } else if (!select && index > -1) {\n this._selection = this._selection.filter((val: any, i: number) => i != index);\n if (dataKeyValue) {\n delete this.selectedKeys[dataKeyValue];\n }\n }\n\n node.partialSelected = false;\n node.checked = select;\n\n if (node.children && node.children.length) {\n for (let child of node.children) {\n this.propagateSelectionDown(child, select);\n }\n }\n }\n\n isSelected(node: TreeTableNode) {\n // legacy selection support, will be removed in v18\n if (node && this._selection) {\n if (this.dataKey()) {\n if (node.hasOwnProperty('checked')) {\n return node['checked'];\n } else {\n return this.selectedKeys[resolveFieldData(node.data, this.dataKey())] !== undefined;\n }\n } else {\n if (Array.isArray(this._selection)) return this.findIndexInSelection(node) > -1;\n else return this.equals(node, this._selection);\n }\n }\n\n return false;\n }\n\n isNodeSelected(node) {\n return this.selectionMode() && this._selectionKeys ? this._selectionKeys[this.nodeKey(node)]?.checked === true : false;\n }\n\n isNodePartialSelected(node) {\n return this.selectionMode() && this._selectionKeys ? this._selectionKeys[this.nodeKey(node)]?.partialChecked === true : false;\n }\n\n nodeKey(node) {\n return resolveFieldData(node, this.dataKey()) || resolveFieldData(node?.data, this.dataKey());\n }\n\n /**\n * Projects the current `collapsedKeys` map onto each node's `expanded` flag (a row is expanded\n * unless its key maps to `true`).\n */\n applyCollapsedKeys() {\n if (this._collapsedKeys == null) {\n return;\n }\n const walk = (nodes?: TreeTableNode[] | null) => {\n if (!nodes) return;\n for (const node of nodes) {\n const key = this.nodeKey(node);\n if (key != null) {\n node.expanded = !this._collapsedKeys[key];\n }\n if (node.children) {\n walk(node.children as TreeTableNode[]);\n }\n }\n };\n walk(this.value as TreeTableNode[]);\n }\n\n /**\n * Reflects a row's expansion change back into the two-way `collapsedKeys` map when it is in use.\n */\n setNodeCollapsed(node: TreeTableNode, collapsed: boolean) {\n if (this._collapsedKeys == null) {\n return;\n }\n const key = this.nodeKey(node);\n if (key == null) {\n return;\n }\n const next = { ...this._collapsedKeys };\n if (collapsed) {\n next[key] = true;\n } else {\n delete next[key];\n }\n this._collapsedKeys = next;\n this.collapsedKeysChange.emit(this._collapsedKeys);\n }\n\n toggleCheckbox(event) {\n let { rowNode, check, originalEvent } = event;\n let node = rowNode.node;\n if (this._selectionKeys) {\n this.propagateDown(node, check);\n if (node.parent) {\n this.propagateUp(node.parent, check);\n }\n\n this.selectionKeysChange.emit(this._selectionKeys);\n } else {\n this.toggleNodeWithCheckbox({ originalEvent, rowNode });\n }\n\n this.tableService.onSelectionChange();\n }\n\n propagateDown(node, check) {\n if (check) {\n this._selectionKeys[this.nodeKey(node)] = { checked: true, partialChecked: false };\n } else {\n delete this._selectionKeys[this.nodeKey(node)];\n }\n\n if (node.children && node.children.length) {\n for (let child of node.children) {\n this.propagateDown(child, check);\n }\n }\n }\n\n propagateUp(node, check) {\n let checkedChildCount = 0;\n let childPartialSelected = false;\n\n for (let child of node.children) {\n if (this._selectionKeys[this.nodeKey(child)] && this._selectionKeys[this.nodeKey(child)].checked) checkedChildCount++;\n else if (this._selectionKeys[this.nodeKey(child)] && this._selectionKeys[this.nodeKey(child)].partialChecked) childPartialSelected = true;\n }\n\n if (check && checkedChildCount === node.children.length) {\n this._selectionKeys[this.nodeKey(node)] = { checked: true, partialChecked: false };\n } else {\n if (!check) {\n delete this._selectionKeys[this.nodeKey(node)];\n }\n\n if (childPartialSelected || (checkedChildCount > 0 && checkedChildCount !== node.children.length)) this._selectionKeys[this.nodeKey(node)] = { checked: false, partialChecked: true };\n else this._selectionKeys[this.nodeKey(node)] = { checked: false, partialChecked: false };\n }\n\n let parent = node.parent;\n if (parent) {\n this.propagateUp(parent, check);\n }\n }\n\n findIndexInSelection(node: any) {\n let index: number = -1;\n if (this._selection && this._selection.length) {\n for (let i = 0; i < this._selection.length; i++) {\n if (this.equals(node, this._selection[i])) {\n index = i;\n break;\n }\n }\n }\n\n return index;\n }\n\n isSingleSelectionMode() {\n return this.selectionMode() === 'single';\n }\n\n isMultipleSelectionMode() {\n return this.selectionMode() === 'multiple';\n }\n\n equals(node1: TreeTableNode, node2: TreeTableNode) {\n return this.compareSelectionBy() === 'equals' ? equals(node1, node2) : equals(node1.data, node2.data, this.dataKey());\n }\n\n filter(value: string | string[], field: string, matchMode: string) {\n if (this.filterTimeout) {\n clearTimeout(this.filterTimeout);\n }\n\n if (!this.isFilterBlank(value)) {\n this.filters[field] = { value: value, matchMode: matchMode };\n } else if (this.filters[field]) {\n delete this.filters[field];\n }\n\n this.filterTimeout = setTimeout(() => {\n this._filter();\n this.filterTimeout = null;\n }, this.filterDelay());\n }\n\n filterGlobal(value: string, matchMode: string) {\n this.filter(value, 'global', matchMode);\n }\n\n isFilterBlank(filter: any): boolean {\n if (filter !== null && filter !== undefined) {\n if ((typeof filter === 'string' && filter.trim().length == 0) || (Array.isArray(filter) && filter.length == 0)) return true;\n else return false;\n }\n return true;\n }\n\n _filter() {\n if (this.lazy()) {\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\n } else {\n if (!this.value) {\n return;\n }\n\n if (!this.hasFilter()) {\n this.filteredNodes = null;\n if (this.paginator()) {\n this.totalRecords = this.value ? this.value.length : 0;\n }\n } else {\n let globalFilterFieldsArray;\n if (this.filters['global']) {\n if (!this.columns() && !this.globalFilterFields()) throw new Error('Global filtering requires dynamic columns or globalFilterFields to be defined.');\n else globalFilterFieldsArray = this.globalFilterFields() || this.columns();\n }\n\n this.filteredNodes = [];\n const isStrictMode = this.filterMode() === 'strict';\n let isValueChanged = false;\n\n for (let node of this.value) {\n let copyNode = { ...node };\n let localMatch = true;\n let globalMatch = false;\n let paramsWithoutNode;\n\n for (let prop in this.filters) {\n if (this.filters.hasOwnProperty(prop) && prop !== 'global') {\n let filterMeta = <FilterMetadata>this.filters[prop];\n let filterField = prop;\n let filterValue = filterMeta.value;\n let filterMatchMode = filterMeta.matchMode || 'startsWith';\n let filterConstraint = (<any>this.filterService).filters[filterMatchMode];\n paramsWithoutNode = { filterField, filterValue, filterConstraint, isStrictMode };\n if (\n (isStrictMode && !(this.findFilteredNodes(copyNode, paramsWithoutNode) || this.isFilterMatched(copyNode, paramsWithoutNode))) ||\n (!isStrictMode && !(this.isFilterMatched(copyNode, paramsWithoutNode) || this.findFilteredNodes(copyNode, paramsWithoutNode)))\n ) {\n localMatch = false;\n }\n\n if (!localMatch) {\n break;\n }\n }\n }\n\n if (this.filters['global'] && !globalMatch && globalFilterFieldsArray) {\n let copyNodeForGlobal = { ...copyNode };\n let filterField = undefined;\n let filterValue = this.filters['global'].value;\n let filterConstraint = (<any>this.filterService).filters[(<any>this.filters)['global'].matchMode];\n paramsWithoutNode = {\n filterField,\n filterValue,\n filterConstraint,\n isStrictMode,\n globalFilterFieldsArray\n };\n\n if (\n (isStrictMode && (this.findFilteredNodes(copyNodeForGlobal, paramsWithoutNode) || this.isFilterMatched(copyNodeForGlobal, paramsWithoutNode))) ||\n (!isStrictMode && (this.isFilterMatched(copyNodeForGlobal, paramsWithoutNode) || this.findFilteredNodes(copyNodeForGlobal, paramsWithoutNode)))\n ) {\n globalMatch = true;\n copyNode = copyNodeForGlobal;\n }\n }\n\n let matches = localMatch;\n if (this.filters['global']) {\n matches = localMatch && globalMatch;\n }\n\n if (matches) {\n this.filteredNodes.push(copyNode);\n }\n\n isValueChanged = isValueChanged || !localMatch || globalMatch || (localMatch && this.filteredNodes.length > 0) || (!globalMatch && this.filteredNodes.length === 0);\n }\n\n if (!isValueChanged) {\n this.filteredNodes = null;\n }\n\n if (this.paginator()) {\n this.totalRecords = this.filteredNodes ? this.filteredNodes.length : this.value ? this.value.length : 0;\n }\n }\n this.cd.markForCheck();\n }\n\n this.first = 0;\n\n const filteredValue = this.filteredNodes || this.value;\n\n this.onFilter.emit({\n filters: this.filters,\n filteredValue: filteredValue\n });\n\n this.tableService.onUIUpdate(filteredValue);\n this.updateSerializedValue();\n\n if (this.scrollable()) {\n this.resetScrollTop();\n }\n }\n\n findFilteredNodes(node: TreeTableNode, paramsWithoutNode: any) {\n if (node) {\n let matched = false;\n if (node.children) {\n let childNodes = [...node.children];\n node.children = [];\n for (let childNode of childNodes) {\n let copyChildNode = { ...childNode };\n if (this.isFilterMatched(copyChildNode, paramsWithoutNode)) {\n matched = true;\n node.children.push(copyChildNode);\n }\n }\n }\n\n if (matched) {\n return true;\n }\n }\n }\n\n isFilterMatched(node: TreeTableNode, filterOptions: TreeTableFilterOptions) {\n let { filterField, filterValue, filterConstraint, isStrictMode, globalFilterFieldsArray } = <any>filterOptions;\n let matched = false;\n const isMatched = (field: string) => filterConstraint(resolveFieldData(node.data, field), filterValue, <string>this.filterLocale());\n\n matched = globalFilterFieldsArray?.length ? globalFilterFieldsArray.some((globalFilterField) => isMatched(globalFilterField.field || globalFilterField)) : isMatched(filterField);\n\n if (!matched || (isStrictMode && !this.isNodeLeaf(node))) {\n matched =\n this.findFilteredNodes(node, {\n filterField,\n filterValue,\n filterConstraint,\n isStrictMode,\n globalFilterFieldsArray\n }) || matched;\n }\n\n return matched;\n }\n\n isNodeLeaf(node: TreeTableNode) {\n return node.leaf === false ? false : !(node.children && node.children.length);\n }\n\n hasFilter() {\n let empty = true;\n for (let prop in this.filters) {\n if (this.filters.hasOwnProperty(prop)) {\n empty = false;\n break;\n }\n }\n\n return !empty;\n }\n /**\n * Clears the sort and paginator state.\n * @group Method\n */\n public reset() {\n this._sortField = null;\n this._sortOrder = 1;\n this._multiSortMeta = null;\n this.tableService.onSort(null);\n\n this.filteredNodes = null;\n this.filters = {};\n\n this.first = 0;\n\n if (this.lazy()) {\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\n } else {\n this.totalRecords = this.value ? this.value.length : 0;\n }\n }\n\n updateEditingCell(cell: any, data: any, field: string) {\n this.editingCell = cell;\n this.editingCellData = data;\n this.editingCellField = field;\n this.bindDocumentEditListener();\n }\n\n isEditingCellValid() {\n return this.editingCell && find(this.editingCell, '.ng-invalid.ng-dirty').length === 0;\n }\n\n bindDocumentEditListener() {\n if (!this.documentEditListener) {\n this.documentEditListener = this.renderer.listen(this.document, 'click', (event) => {\n if (this.editingCell && !this.editingCellClick && this.isEditingCellValid()) {\n !this.$unstyled() && removeClass(this.editingCell, 'p-cell-editing');\n this.editingCell = null;\n this.onEditComplete.emit({ field: this.editingCellField, data: this.editingCellData });\n this.editingCellField = null;\n this.editingCellData = null;\n this.unbindDocumentEditListener();\n }\n\n this.editingCellClick = false;\n });\n }\n }\n\n unbindDocumentEditListener() {\n if (this.documentEditListener) {\n this.documentEditListener();\n this.documentEditListener = null;\n }\n }\n\n onDestroy() {\n this.unbindDocumentEditListener();\n this.editingCell = null;\n this.editingCellField = null;\n this.editingCellData = null;\n this.initialized = null;\n }\n}\n","import { booleanAttribute, Directive, HostListener, inject, input, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { clearSelection } from '@primeuix/utils';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { Bind } from 'primeng/bind';\nimport { TreeTableStyle } from './style/treetablestyle';\nimport { TREETABLE_INSTANCE } from './treetable-service';\nimport type { TreeTable } from './treetable';\n\n@Directive({\n selector: '[ttSortableColumn]',\n standalone: true,\n host: {\n '[class]': 'cx(\"sortableColumn\")',\n '[tabindex]': 'hostTabindex',\n role: 'columnheader',\n '[attr.aria-sort]': 'ariaSorted'\n },\n providers: [TreeTableStyle],\n hostDirectives: [Bind]\n})\nexport class TTSortableColumn extends BaseComponent {\n hostName = 'TreeTable ';\n\n bindDirectiveInstance = inject(Bind, { self: true });\n\n onAfterViewChecked(): void {\n this.bindDirectiveInstance.setAttrs(this.ptm('sortableColumn', { context: { sorted: this.sorted() } }));\n }\n\n field = input<string>(undefined, { alias: 'ttSortableColumn' });\n\n ttSortableColumnDisabled = input(undefined, { transform: booleanAttribute });\n\n sorted = signal<boolean | undefined>(undefined);\n\n _componentStyle = inject(TreeTableStyle);\n\n tt = inject<TreeTable>(TREETABLE_INSTANCE);\n\n get hostTabindex() {\n return this.isEnabled() ? '0' : null;\n }\n\n get ariaSorted() {\n if (this.sorted() && this.tt._sortOrder < 0) return 'descending';\n else if (this.sorted() && this.tt._sortOrder > 0) return 'ascending';\n else return 'none';\n }\n\n constructor() {\n super();\n this.tt.tableService.sortSource$.pipe(takeUntilDestroyed()).subscribe(() => {\n this.updateSortState();\n });\n }\n\n onInit() {\n if (this.isEnabled()) {\n this.updateSortState();\n }\n }\n\n updateSortState() {\n this.sorted.set(this.tt.isSorted(<string>this.field()) as boolean);\n }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent) {\n if (this.isEnabled()) {\n this.updateSortState();\n this.tt.sort({\n originalEvent: event,\n field: this.field()\n });\n\n clearSelection();\n }\n }\n\n @HostListener('keydown.enter', ['$event'])\n onEnterKey(event: Event) {\n this.onClick(event as MouseEvent);\n }\n\n isEnabled() {\n return this.ttSortableColumnDisabled() !== true;\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, input, signal, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BadgeModule } from 'primeng/badge';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { Bind } from 'primeng/bind';\nimport { SortAlt as SortAltIcon } from '@primeicons/angular/sort-alt';\nimport { SortAmountDown as SortAmountDownIcon } from '@primeicons/angular/sort-amount-down';\nimport { SortAmountUpAlt as SortAmountUpAltIcon } from '@primeicons/angular/sort-amount-up-alt';\nimport { TreeTableStyle } from './style/treetablestyle';\nimport { TREETABLE_INSTANCE } from './treetable-service';\nimport type { TreeTable } from './treetable';\n\n@Component({\n selector: 'p-treetable-sort-icon, p-tree-table-sort-icon',\n standalone: true,\n imports: [NgTemplateOutlet, Bind, BadgeModule, SortAltIcon, SortAmountUpAltIcon, SortAmountDownIcon],\n template: `\n @if (!tt.sortIconTemplate()) {\n @if (sortOrder() === 0) {\n <svg data-p-icon=\"sort-alt\" [class]=\"cx('sortableColumnIcon')\" [pBind]=\"ptm('sortableColumnIcon')\" />\n }\n @if (sortOrder() === 1) {\n <svg data-p-icon=\"sort-amount-up-alt\" [class]=\"cx('sortableColumnIcon')\" [pBind]=\"ptm('sortableColumnIcon')\" />\n }\n @if (sortOrder() === -1) {\n <svg data-p-icon=\"sort-amount-down\" [class]=\"cx('sortableColumnIcon')\" [pBind]=\"ptm('sortableColumnIcon')\" />\n }\n }\n @if (tt.sortIconTemplate()) {\n <span [class]=\"cx('sortableColumnIcon')\" [pBind]=\"ptm('sortableColumnIcon')\">\n <ng-template *ngTemplateOutlet=\"tt.sortIconTemplate(); context: { $implicit: sortOrder() }\"></ng-template>\n </span>\n }\n @if (isMultiSorted()) {\n <p-badge [class]=\"cx('sortableColumnBadge')\" [value]=\"getBadgeValue()\" size=\"small\" [pt]=\"ptm('pcSortableColumnBadge')\" [unstyled]=\"unstyled()\" />\n }\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TreeTableStyle]\n})\nexport class TTSortIcon extends BaseComponent {\n hostName = 'TreeTable';\n\n field = input<string>();\n\n ariaLabelDesc = input<string>();\n\n ariaLabelAsc = input<string>();\n\n sortOrder = signal<number | undefined>(undefined);\n\n _componentStyle = inject(TreeTableStyle);\n\n tt = inject<TreeTable>(TREETABLE_INSTANCE);\n\n constructor() {\n super();\n this.tt.tableService.sortSource$.pipe(takeUntilDestroyed()).subscribe(() => {\n this.updateSortState();\n });\n }\n\n onInit() {\n this.updateSortState();\n }\n\n onClick(event: Event) {\n event.preventDefault();\n }\n\n getMultiSortMetaIndex() {\n let multiSortMeta = this.tt._multiSortMeta;\n let index = -1;\n\n if (multiSortMeta && this.tt.sortMode() === 'multiple' && multiSortMeta.length > 1) {\n for (let i = 0; i < multiSortMeta.length; i++) {\n let meta = multiSortMeta[i];\n if (meta.field === this.field()) {\n index = i;\n break;\n }\n }\n }\n\n return index;\n }\n\n updateSortState() {\n if (this.tt.sortMode() === 'single') {\n this.sortOrder.set(this.tt.isSorted(<string>this.field()) ? this.tt._sortOrder : 0);\n } else if (this.tt.sortMode() === 'multiple') {\n let sortMeta = this.tt.getSortMeta(<string>this.field());\n this.sortOrder.set(sortMeta ? sortMeta.order : 0);\n }\n }\n\n getBadgeValue() {\n return this.getMultiSortMetaIndex() + 1;\n }\n\n isMultiSorted() {\n return this.tt.sortMode() === 'multiple' && this.getMultiSortMetaIndex() > -1;\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { booleanAttribute, Directive, inject, input } from '@angular/core';\nimport { addClass } from '@primeuix/utils';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { VoidListener } from 'primeng/ts-helpers';\nimport { TREETABLE_INSTANCE } from './treetable-service';\nimport type { TreeTable } from './treetable';\n\n@Directive({\n selector: '[ttResizableColumn]',\n standalone: true\n})\nexport class TTResizableColumn extends BaseComponent {\n hostName = 'TreeTable';\n\n ttResizableColumnDisabled = input(undefined, { transform: booleanAttribute });\n\n resizer: HTMLSpanElement | undefined;\n\n resizerMouseDownListener: VoidListener;\n\n documentMouseMoveListener: VoidListener;\n\n documentMouseUpListener: VoidListener;\n\n tt = inject<TreeTable>(TREETABLE_INSTANCE);\n\n onAfterViewInit() {\n if (isPlatformBrowser(this.platformId)) {\n if (this.isEnabled()) {\n addClass(this.el.nativeElement, 'p-resizable-column');\n this.resizer = this.renderer.createElement('span');\n !this.$unstyled() && this.renderer.addClass(this.resizer, 'p-column-resizer');\n (this.resizer as HTMLElement).setAttribute('data-pc-section', 'columnresizer');\n this.renderer.appendChild(this.el.nativeElement, this.resizer);\n\n this.resizerMouseDownListener = this.renderer.listen(this.resizer, 'mousedown', this.onMouseDown.bind(this));\n }\n }\n }\n\n bindDocumentEvents() {\n this.documentMouseMoveListener = this.renderer.listen(this.document, 'mousemove', this.onDocumentMouseMove.bind(this));\n this.documentMouseUpListener = this.renderer.listen(this.document, 'mouseup', this.onDocumentMouseUp.bind(this));\n }\n\n unbindDocumentEvents() {\n if (this.documentMouseMoveListener) {\n this.documentMouseMoveListener();\n this.documentMouseMoveListener = null;\n }\n\n if (this.documentMouseUpListener) {\n this.documentMouseUpListener();\n this.documentMouseUpListener = null;\n }\n }\n\n onMouseDown(event: MouseEvent) {\n this.tt.onColumnResizeBegin(event);\n this.bindDocumentEvents();\n }\n\n onDocumentMouseMove(event: MouseEvent) {\n this.tt.onColumnResize(event);\n }\n\n onDocumentMouseUp(event: MouseEvent) {\n this.tt.onColumnResizeEnd(event, this.el.nativeElement);\n this.unbindDocumentEvents();\n }\n\n isEnabled() {\n return this.ttResizableColumnDisabled() !== true;\n }\n\n onDestroy() {\n if (this.resizerMouseDownListener) {\n this.resizerMouseDownListener();\n this.resizerMouseDownListener = null;\n }\n\n this.unbindDocumentEvents();\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { booleanAttribute, Directive, HostListener, inject, input } from '@angular/core';\nimport { findSingle } from '@primeuix/utils';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { VoidListener } from 'primeng/ts-helpers';\nimport { TREETABLE_INSTANCE } from './treetable-service';\nimport type { TreeTable } from './treetable';\n\n@Directive({\n selector: '[ttReorderableColumn]',\n standalone: true\n})\nexport class TTReorderableColumn extends BaseComponent {\n hostName = 'TreeTable';\n\n ttReorderableColumnDisabled = input(undefined, { transform: booleanAttribute });\n\n dragStartListener: VoidListener;\n\n dragOverListener: VoidListener;\n\n dragEnterListener: VoidListener;\n\n dragLeaveListener: VoidListener;\n\n mouseDownListener: VoidListener;\n\n tt = inject<TreeTable>(TREETABLE_INSTANCE);\n\n onAfterViewInit() {\n if (this.isEnabled()) {\n this.bindEvents();\n }\n }\n\n bindEvents() {\n if (isPlatformBrowser(this.platformId)) {\n this.mouseDownListener = this.renderer.listen(this.el.nativeElement, 'mousedown', this.onMouseDown.bind(this));\n this.dragStartListener = this.renderer.listen(this.el.nativeElement, 'dragstart', this.onDragStart.bind(this));\n this.dragOverListener = this.renderer.listen(this.el.nativeElement, 'dragover', this.onDragEnter.bind(this));\n this.dragEnterListener = this.renderer.listen(this.el.nativeElement, 'dragenter', this.onDragEnter.bind(this));\n this.dragLeaveListener = this.renderer.listen(this.el.nativeElement, 'dragleave', this.onDragLeave.bind(this));\n }\n }\n\n unbindEvents() {\n if (isPlatformBrowser(this.platformId)) {\n if (this.mouseDownListener) {\n this.mouseDownListener();\n this.mouseDownListener = null;\n }\n\n if (this.dragOverListener) {\n this.dragOverListener();\n this.dragOverListener = null;\n }\n\n if (this.dragEnterListener) {\n this.dragEnterListener();\n this.dragEnterListener = null;\n }\n\n if (this.dragLeaveListener) {\n this.dragLeaveListener();\n this.dragLeaveListener = null;\n }\n }\n }\n\n onMouseDown(event: any) {\n if (event.target.nodeName === 'INPUT' || event.target.nodeName === 'TEXTAREA' || findSingle(event.target, '[data-pc-section=\"columnresizer\"]')) this.el.nativeElement.draggable = false;\n else this.el.nativeElement.draggable = true;\n }\n\n onDragStart(event: DragEvent) {\n this.tt.onColumnDragStart(event, this.el.nativeElement);\n }\n\n onDragOver(event: DragEvent) {\n event.preventDefault();\n }\n\n onDragEnter(event: DragEvent) {\n this.tt.onColumnDragEnter(event, this.el.nativeElement);\n }\n\n onDragLeave(event: DragEvent) {\n this.tt.onColumnDragLeave(event);\n }\n\n @HostListener('drop', ['$event'])\n onDrop(event: DragEvent) {\n if (this.isEnabled()) {\n this.tt.onColumnDrop(event, this.el.nativeElement);\n }\n }\n\n isEnabled() {\n return this.ttReorderableColumnDisabled() !== true;\n }\n\n onDestroy() {\n this.unbindEvents();\n }\n}\n","import { booleanAttribute, Directive, HostListener, inject, input, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { TreeTableStyle } from './style/treetablestyle';\nimport { TREETABLE_INSTANCE } from './treetable-service';\nimport type { TreeTable } from './treetable';\n\n@Directive({\n selector: '[ttSelectableRow]',\n standalone: true,\n host: {\n '[class]': 'cx(\"row\")',\n '[attr.aria-selected]': 'selected()',\n '[attr.tabindex]': 'hostTabindex'\n },\n providers: [TreeTableStyle]\n})\nexport class TTSelectableRow extends BaseComponent {\n rowNode = input<any>(undefined, { alias: 'ttSelectableRow' });\n\n ttSelectableRowDisabled = input(undefined, { transform: booleanAttribute });\n\n selected = signal<boolean | undefined>(undefined);\n\n _componentStyle = inject(TreeTableStyle);\n\n tt = inject<TreeTable>(TREETABLE_INSTANCE);\n\n constructor() {\n super();\n this.tt.tableService.selectionSource$.pipe(takeUntilDestroyed()).subscribe(() => {\n this.selected.set(this.tt.isSelected(this.rowNode()?.node));\n });\n }\n\n onInit() {\n if (this.isEnabled()) {\n this.selected.set(this.tt.isSelected(this.rowNode()?.node));\n }\n }\n\n @HostListener('click', ['$event'])\n onClick(event: Event) {\n if (this.isEnabled()) {\n this.tt.handleRowClick({\n originalEvent: event,\n rowNode: this.rowNode()\n });\n }\n }\n\n /**\n * Selectable rows are tab stops: Tab reaches the row (Enter/Space selects),\n * then continues to the focusables inside it — toggler, checkbox, editors.\n */\n get hostTabindex() {\n return this.isEnabled() ? 0 : null;\n }\n\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent) {\n // Selection keys apply only while the row itself is focused. Keys from\n // focusables inside the row bubble through here — Enter/Space on the\n // toggler must stay a plain toggle, not become a selection.\n if (event.target !== this.el?.nativeElement) {\n return;\n }\n\n switch (event.code) {\n case 'Enter':\n case 'Space':\n this.onEnterKey(event);\n break;\n\n case 'Tab':\n if (event.shiftKey) {\n this.onShiftTabKey(event);\n }\n break;\n\n default:\n break;\n }\n }\n\n /**\n * Backwards navigation treats rows as the stops: Shift+Tab from a row lands\n * on the previous row, not on the last focusable inside it (the browser's\n * reverse order would visit checkbox/toggler first). Forward Tab stays\n * native — row, then into the row's focusables, then the next row. On the\n * first row nothing is intercepted, so focus exits the table backwards.\n */\n private onShiftTabKey(event: KeyboardEvent) {\n let sibling = this.el?.nativeElement.previousElementSibling as HTMLElement | null;\n while (sibling && sibling.getAttribute('tabindex') === null) {\n sibling = sibling.previousElementSibling as HTMLElement | null;\n }\n\n if (sibling) {\n sibling.focus();\n event.preventDefault();\n }\n }\n\n @HostListener('touchend', ['$event'])\n onTouchEnd(event: Event) {\n if (this.isEnabled()) {\n this.tt.handleRowTouchEnd(event);\n }\n }\n\n onEnterKey(event) {\n if (this.tt.selectionMode() === 'checkbox') {\n this.tt.toggleNodeWithCheckbox({\n originalEvent: event,\n rowNode: this.rowNode()\n });\n } else {\n this.onClick(event);\n }\n event.preventDefault();\n }\n\n isEnabled() {\n return this.ttSelectableRowDisabled() !== true;\n }\n}\n","import { booleanAttribute, Directive, HostListener, inject, input, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { TreeTableStyle } from './style/treetablestyle';\nimport { TREETABLE_INSTANCE } from './treetable-service';\nimport type { TreeTable } from './treetable';\n\n@Directive({\n selector: '[ttSelectableRowDblClick]',\n standalone: true,\n host: {\n '[class]': 'cx(\"row\")'\n },\n providers: [TreeTableStyle]\n})\nexport class TTSelectableRowDblClick extends BaseComponent {\n rowNode = input<any>(undefined, { alias: 'ttSelectableRowDblClick' });\n\n ttSelectableRowDisabled = input(undefined, { transform: booleanAttribute });\n\n selected = signal<boolean | undefined>(undefined);\n\n _componentStyle = inject(TreeTableStyle);\n\n tt = inject<TreeTable>(TREETABLE_INSTANCE);\n\n constructor() {\n super();\n this.tt.tableService.selectionSource$.pipe(takeUntilDestroyed()).subscribe(() => {\n this.selected.set(this.tt.isSelected(this.rowNode()?.node));\n });\n }\n\n onInit() {\n if (this.isEnabled()) {\n this.selected.set(this.tt.isSelected(this.rowNode()?.node));\n }\n }\n\n @HostListener('dblclick', ['$event'])\n onClick(event: Event) {\n if (this.isEnabled()) {\n this.tt.handleRowClick({\n originalEvent: event,\n rowNode: this.rowNode()\n });\n }\n }\n\n isEnabled() {\n return this.ttSelectableRowDisabled() !== true;\n }\n}\n","import { booleanAttribute, Directive, HostListener, inject, input, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { TreeTableStyle } from './style/treetablestyle';\nimport { TREETABLE_INSTANCE } from './treetable-service';\nimport type { TreeTable } from './treetable';\n\n@Directive({\n selector: '[ttContextMenuRow]',\n standalone: true,\n host: {\n '[class]': 'cx(\"contextMenuRow\")',\n '[tabindex]': 'hostTabindex'\n },\n providers: [TreeTableStyle]\n})\nexport class TTContextMenuRow extends BaseComponent {\n rowNode = input<any>(undefined, { alias: 'ttContextMenuRow' });\n\n ttContextMenuRowDisabled = input(undefined, { transform: booleanAttribute });\n\n selected = signal<boolean | undefined>(undefined);\n\n _componentStyle = inject(TreeTableStyle);\n\n tt = inject<TreeTable>(TREETABLE_INSTANCE);\n\n constructor() {\n super();\n this.tt.tableService.contextMenuSource$.pipe(takeUntilDestroyed()).subscribe((node) => {\n this.selected.set(node ? this.tt.equals(this.rowNode()?.node, node) : false);\n });\n }\n\n @HostListener('contextmenu', ['$event'])\n onContextMenu(event: Event) {\n if (this.isEnabled()) {\n this.tt.handleRowRightClick({\n originalEvent: event,\n rowNode: this.rowNode()\n });\n\n this.el.nativeElement.focus();\n\n event.preventDefault();\n }\n }\n\n get hostTabindex() {\n return this.isEnabled() ? 0 : undefined;\n }\n\n isEnabled() {\n return this.ttContextMenuRowDisabled() !== true;\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, inject, input, signal, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { clearSelection } from '@primeuix/utils';\nimport { SharedModule } from 'primeng/api';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { Checkbox } from 'primeng/checkbox';\nimport type { CheckboxChangeEvent } from 'primeng/types/checkbox';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { TreeTableStyle } from './style/treetablestyle';\nimport { TREETABLE_INSTANCE } from './treetable-service';\nimport type { TreeTable } from './treetable';\n\n@Component({\n selector: 'p-treetable-checkbox, p-tree-table-checkbox',\n standalone: true,\n imports: [NgTemplateOutlet, FormsModule, Checkbox, SharedModule],\n template: `\n <p-checkbox [ngModel]=\"checked()\" [pt]=\"ptm('pcRowCheckbox')\" (onChange)=\"onClick($event)\" [binary]=\"true\" [disabled]=\"disabled()\" [indeterminate]=\"partialChecked()\" [class]=\"cx('pcNodeCheckbox')\" [tabIndex]=\"-1\" [unstyled]=\"unstyled()\">\n @if (tt.checkboxIconTemplate()) {\n <ng-template #icon>\n <ng-template *ngTemplateOutlet=\"tt.checkboxIconTemplate(); context: { $implicit: checked(), partialSelected: partialChecked() }\"></ng-template>\n </ng-template>\n }\n </p-checkbox>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TreeTableStyle]\n})\nexport class TTCheckbox extends BaseComponent {\n hostName = 'TreeTable';\n\n disabled = input(false, { transform: booleanAttribute });\n\n rowNode = input<any>(undefined, { alias: 'value' });\n\n checked = signal<boolean | undefined>(undefined);\n\n partialChecked = signal<boolean | undefined>(undefined);\n\n _componentStyle = inject(TreeTableStyle);\n\n tt = inject<TreeTable>(TREETABLE_INSTANCE);\n\n constructor() {\n super();\n this.tt.tableService.selectionSource$.pipe(takeUntilDestroyed()).subscribe(() => {\n if (this.tt._selectionKeys) {\n this.checked.set(this.tt.isNodeSelected(this.rowNode()?.node));\n this.partialChecked.set(this.tt.isNodePartialSelected(this.rowNode()?.node));\n } else {\n this.checked.set(this.tt.isSelected(this.rowNode()?.node));\n this.partialChecked.set(this.rowNode()?.node?.partialSelected);\n }\n });\n }\n\n onInit() {\n if (this.tt._selectionKeys) {\n this.checked.set(this.tt.isNodeSelected(this.rowNode()?.node));\n this.partialChecked.set(this.tt.isNodePartialSelected(this.rowNode()?.node));\n } else {\n this.checked.set(this.tt.isSelected(this.rowNode()?.node));\n this.partialChecked.set(this.rowNode()?.node?.partialSelected);\n }\n }\n\n onClick(event: CheckboxChangeEvent) {\n if (!this.disabled()) {\n if (this.tt._selectionKeys) {\n const _check = !this.checked();\n this.tt.toggleCheckbox({\n originalEvent: event,\n check: _check,\n rowNode: this.rowNode()\n });\n } else {\n this.tt.toggleNodeWithCheckbox({\n originalEvent: event,\n rowNode: this.rowNode()\n });\n }\n }\n clearSelection();\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, signal, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { clearSelection } from '@primeuix/utils';\nimport { SharedModule } from 'primeng/api';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { Checkbox } from 'primeng/checkbox';\nimport type { CheckboxChangeEvent } from 'primeng/types/checkbox';\nimport { TREETABLE_INSTANCE } from './treetable-service';\nimport type { TreeTable } from './treetable';\n\n@Component({\n selector: 'p-treetableheadercheckbox, p-treetable-header-checkbox',\n standalone: true,\n imports: [NgTemplateOutlet, FormsModule, Checkbox, SharedModule],\n template: `\n <p-checkbox [ngModel]=\"checked()\" [pt]=\"ptm('pcHeaderCheckbox')\" (onChange)=\"onClick($event)\" [binary]=\"true\" [disabled]=\"isDisabled\" [unstyled]=\"unstyled()\">\n @if (tt.headerCheckboxIconTemplate()) {\n <ng-template #icon>\n <ng-template *ngTemplateOutlet=\"tt.headerCheckboxIconTemplate(); context: { $implicit: checked() }\"></ng-template>\n </ng-template>\n }\n </p-checkbox>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TTHeaderCheckbox extends BaseComponent {\n checked = signal<boolean | undefined>(undefined);\n\n tt = inject<TreeTable>(TREETABLE_INSTANCE);\n\n get isDisabled() {\n return !this.tt.value || this.tt.value.length === 0;\n }\n\n constructor() {\n super();\n this.tt.tableService.uiUpdateSource$.pipe(takeUntilDestroyed()).subscribe(() => {\n this.checked.set(this.updateCheckedState());\n });\n\n this.tt.tableService.selectionSource$.pipe(takeUntilDestroyed()).subscribe(() => {\n this.checked.set(this.updateCheckedState());\n });\n }\n\n onInit() {\n this.checked.set(this.updateCheckedState());\n }\n\n onClick(event: CheckboxChangeEvent) {\n if ((this.tt?.value || this.tt?.filteredNodes) && ((this.tt?.value && this.tt.value.length > 0) || (this.tt?.filteredNodes && this.tt.filteredNodes.length > 0))) {\n this.tt?.toggleNodesWithCheckbox(event, !this.checked());\n }\n\n clearSelection();\n }\n\n updateCheckedState() {\n let checked!: boolean;\n const data = this.tt.filteredNodes || this.tt.value;\n\n if (data) {\n if (this.tt._selectionKeys) {\n for (let node of data) {\n if (this.tt.isNodeSelected(node)) {\n checked = true;\n } else {\n checked = false;\n break;\n }\n }\n }\n if (!this.tt._selectionKeys) {\n // legacy selection support, will be removed in v18\n for (let node of data) {\n if (this.tt.isSelected(node)) {\n checked = true;\n } else {\n checked = false;\n break;\n }\n }\n }\n } else {\n checked = false;\n }\n\n return checked;\n }\n}\n","import { booleanAttribute, Directive, HostListener, inject, input } from '@angular/core';\nimport { addClass, findSingle, removeClass } from '@primeuix/utils';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { TREETABLE_INSTANCE } from './treetable-service';\nimport type { TreeTable } from './treetable';\n\n@Directive({\n selector: '[ttEditableColumn]',\n standalone: true\n})\nexport class TTEditableColumn extends BaseComponent {\n data = input<any>(undefined, { alias: 'ttEditableColumn' });\n\n field = input<any>(undefined, { alias: 'ttEditableColumnField' });\n\n ttEditableColumnDisabled = input(undefined, { transform: booleanAttribute });\n\n tt = inject<TreeTable>(TREETABLE_INSTANCE);\n\n onAfterViewInit() {\n if (this.isEnabled()) {\n !this.$unstyled() && addClass(this.el.nativeElement, 'p-editable-column');\n this.el?.nativeElement.setAttribute('data-p-editable-column', 'true');\n }\n }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent) {\n if (this.isEnabled()) {\n this.requestEdit();\n }\n }\n\n /**\n * Keyboard entry point: the cell editor host is in the tab order and opens\n * its editor on focus, so Tab lands on the cell and starts editing without\n * a mouse. `editingCellClick` is normally consumed by the document click\n * that follows a mouse open — a keyboard open has no such click, so it is\n * reset on the next tick to keep the first outside click closing the cell.\n */\n openCellFromFocus() {\n if (!this.isEnabled()) {\n return;\n }\n\n this.requestEdit();\n setTimeout(() => (this.tt.editingCellClick = false));\n }\n\n private requestEdit() {\n this.tt.editingCellClick = true;\n\n if (this.tt.editingCell) {\n if (this.tt.editingCell !== this.el.nativeElement) {\n if (!this.tt.isEditingCellValid()) {\n return;\n }\n\n if (this.tt.editingCell) {\n !this.$unstyled() && removeClass(this.tt.editingCell, 'p-cell-editing');\n // The cell being left keeps its editing marker otherwise — only\n // Enter/Escape closes reset it, not switching to another cell.\n this.tt.editingCell.setAttribute('data-p-cell-editing', 'false');\n }\n this.openCell();\n }\n } else {\n this.openCell();\n }\n }\n\n openCell() {\n this.tt.updateEditingCell(this.el.nativeElement, this.data(), this.field());\n !this.$unstyled() && addClass(this.el.nativeElement, 'p-cell-editing');\n this.el?.nativeElement.setAttribute('data-p-cell-editing', 'true');\n this.tt.onEditInit.emit({ field: this.field(), data: this.data() });\n this.tt.editingCellClick = true;\n setTimeout(() => {\n let focusable = <any>findSingle(this.el.nativeElement, 'input, textarea');\n if (focusable) {\n focusable.focus();\n }\n }, 50);\n }\n\n closeEditingCell() {\n if (this.tt.editingCell) !this.$unstyled() && removeClass(this.tt.editingCell, 'p-cell-editing');\n this.tt.editingCell = null;\n this.tt.unbindDocumentEditListener();\n }\n\n /**\n * Keyboard closes (Enter/Escape) must hand focus back somewhere — the editor\n * input unmounts, and without this the focus falls to <body>. The cell\n * editor host is a tab stop, so focus returns to it (Tab then continues to\n * the next focusable from the same position). The suppress flag keeps that\n * programmatic focus from immediately reopening the editor it just closed.\n */\n private suppressFocusOpen = false;\n\n consumeSuppressedFocusOpen(): boolean {\n const suppressed = this.suppressFocusOpen;\n this.suppressFocusOpen = false;\n return suppressed;\n }\n\n private focusEditorHost() {\n const host = findSingle(this.el?.nativeElement, 'p-treetable-cell-editor, p-treetablecelleditor') as HTMLElement | null;\n if (host) {\n this.suppressFocusOpen = true;\n host.focus();\n }\n }\n\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent) {\n // Only intercept keys while THIS cell's editor is open. Otherwise Enter/\n // Space must reach the cell's interactive children natively (e.g. the\n // row toggler button) and Tab must follow the normal tab order.\n const editing = !!this.tt.editingCell && event.target instanceof Node && this.tt.editingCell.contains(event.target);\n if (!editing) {\n return;\n }\n\n if (this.isEnabled()) {\n //enter\n if (event.keyCode == 13 && !event.shiftKey) {\n if (this.tt.isEditingCellValid()) {\n if (this.tt.editingCell) {\n !this.$unstyled() && removeClass(this.tt.editingCell, 'p-cell-editing');\n this.el?.nativeElement.setAttribute('data-p-cell-editing', 'false');\n }\n this.closeEditingCell();\n this.tt.onEditComplete.emit({ field: this.field(), data: this.data() });\n this.focusEditorHost();\n }\n\n event.preventDefault();\n }\n\n //escape\n else if (event.keyCode == 27) {\n if (this.tt.isEditingCellValid()) {\n if (this.tt.editingCell) {\n !this.$unstyled() && removeClass(this.tt.editingCell, 'p-cell-editing');\n this.el?.nativeElement.setAttribute('data-p-cell-editing', 'false');\n }\n this.closeEditingCell();\n this.tt.onEditCancel.emit({ field: this.field(), data: this.data() });\n this.focusEditorHost();\n }\n\n event.preventDefault();\n }\n\n // Tab is intentionally left to the browser: editable cells are real\n // tab stops (see TreeTableCellEditor.hostTabindex), so sequential\n // focus naturally reaches whatever comes next in DOM order — the\n // next cell, a row toggler between rows, or an element outside the\n // table. The focusout handler below commits the edit on the way out.\n }\n }\n\n /**\n * Closes the editor when focus leaves the cell (native Tab/Shift+Tab or a\n * programmatic focus move). The edit is committed — with template-driven\n * bindings the value is already applied, closing only swaps the input back\n * to output. Focus changes within the cell (input ↔ toggler ↔ host) and\n * non-focus targets (relatedTarget null, e.g. window blur) are ignored.\n */\n @HostListener('focusout', ['$event'])\n onFocusOut(event: FocusEvent) {\n const cell = this.el?.nativeElement;\n const editingThisCell = this.tt.editingCell === cell;\n const target = event.relatedTarget;\n\n if (!editingThisCell || !(target instanceof Node) || cell.contains(target)) {\n return;\n }\n\n if (this.tt.isEditingCellValid()) {\n !this.$unstyled() && removeClass(cell, 'p-cell-editing');\n cell.setAttribute('data-p-cell-editing', 'false');\n this.closeEditingCell();\n this.tt.onEditComplete.emit({ field: this.field(), data: this.data() });\n }\n }\n\n isEnabled() {\n return this.ttEditableColumnDisabled() !== true;\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { Component, contentChild, inject, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { Bind } from 'primeng/bind';\nimport { TREETABLE_INSTANCE } from './treetable-service';\nimport { TTEditableColumn } from './editable-column';\nimport type { TreeTable } from './treetable';\n\n@Component({\n selector: 'p-treetablecelleditor, p-treetable-cell-editor',\n standalone: true,\n imports: [NgTemplateOutlet],\n template: `\n @if (editing) {\n <ng-container *ngTemplateOutlet=\"inputTemplate()\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"outputTemplate()\"></ng-container>\n }\n `,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.tabindex]': 'hostTabindex',\n '(focus)': 'onHostFocus()'\n },\n hostDirectives: [Bind]\n})\nexport class TreeTableCellEditor extends BaseComponent {\n hostName = 'TreeTable';\n\n bindDirectiveInstance = inject(Bind, { self: true });\n\n onAfterViewChecked(): void {\n this.bindDirectiveInstance.setAttrs(this.ptm('cellEditor'));\n }\n\n /**\n * Closed editors render plain output text, which is not focusable — without\n * a tabindex the browser's sequential focus (Tab) would skip editable cells\n * entirely. The host joins the tab order so Tab reaches the cell, and focus\n * opens the editor (which then moves focus into the input).\n */\n get hostTabindex() {\n return this.editableColumn.isEnabled() ? 0 : null;\n }\n\n onHostFocus() {\n if (this.editableColumn.consumeSuppressedFocusOpen() || this.editing || !this.editableColumn.isEnabled()) {\n return;\n }\n\n this.editableColumn.openCellFromFocus();\n }\n\n inputTemplate = contentChild<TemplateRef<any>>('input', { descendants: false });\n\n outputTemplate = contentChild<TemplateRef<any>>('output', { descendants: false });\n\n tt = inject<TreeTable>(TREETABLE_INSTANCE);\n\n editableColumn = inject(TTEditableColumn);\n\n get editing() {\n return this.tt.editingCell === this.editableColumn.el.nativeElement;\n }\n}\n","import { Directive, HostListener, inject, input } from '@angular/core';\nimport { find, findSingle, getIndex } from '@primeuix/utils';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { Bind } from 'primeng/bind';\nimport { TreeTableStyle } from './style/treetablestyle';\nimport { TREETABLE_INSTANCE } from './treetable-service';\nimport type { TreeTable } from './treetable';\n\n@Directive({\n selector: '[ttRow]',\n standalone: true,\n host: {\n '[class]': 'hostClass',\n '[attr.aria-expanded]': 'expanded',\n '[attr.aria-level]': 'level',\n role: 'row'\n },\n providers: [TreeTableStyle],\n hostDirectives: [Bind]\n})\nexport class TTRow extends BaseComponent {\n hostName = 'TreeTable';\n\n bindDirectiveInstance = inject(Bind, { self: true });\n\n tt = inject<TreeTable>(TREETABLE_INSTANCE);\n\n onAfterViewChecked(): void {\n this.bindDirectiveInstance.setAttrs(this.ptm('row', this.ptmOptions()));\n }\n\n get level() {\n return this.rowNode()?.['level'] + 1;\n }\n\n get hostClass() {\n return this.cn('p-element', this.rowNode()?.node['styleClass']);\n }\n\n get expanded() {\n return this.rowNode()?.node['expanded'];\n }\n\n rowNode = input<any>(undefined, { alias: 'ttRow' });\n\n _componentStyle = inject(TreeTableStyle);\n\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent) {\n // Skip row/cell keyboard navigation while a cell editor is open so that keys such as\n // ArrowLeft/ArrowRight move the caret inside the editor input instead of moving focus\n // out of the open editor and discarding the in-progress edit.\n if (this.isEditingCellTarget(event.target)) {\n return;\n }\n\n switch (event.code) {\n case 'ArrowDown':\n this.onArrowDownKey(event);\n break;\n\n case 'ArrowUp':\n this.onArrowUpKey(event);\n break;\n\n case 'ArrowRight':\n this.onArrowRightKey(event);\n break;\n\n case 'ArrowLeft':\n this.onArrowLeftKey(event);\n break;\n\n case 'Home':\n this.onHomeKey(event);\n break;\n\n case 'End':\n this.onEndKey(event);\n break;\n\n default:\n break;\n }\n }\n\n private isEditingCellTarget(target: EventTarget | null): boolean {\n const editingCell = this.tt?.editingCell;\n return !!(editingCell && target instanceof Node && editingCell.contains(target));\n }\n\n onArrowDownKey(event: KeyboardEvent) {\n this.focusSiblingToggler('next');\n event.preventDefault();\n }\n\n onArrowUpKey(event: KeyboardEvent) {\n this.focusSiblingToggler('previous');\n event.preventDefault();\n }\n\n onArrowRightKey(event: KeyboardEvent) {\n if (this.togglerButton(this.el?.nativeElement) && !this.expanded && this.rowNode()?.node['children']) {\n this.expand(event);\n }\n event.preventDefault();\n }\n\n onArrowLeftKey(event: KeyboardEvent) {\n if (this.expanded) {\n this.tt.toggleRowIndex = getIndex(this.el.nativeElement);\n this.collapse(event);\n this.restoreFocus();\n }\n event.preventDefault();\n }\n\n onHomeKey(event: KeyboardEvent) {\n const rows = <any>find(this.tt.el?.nativeElement, `tr[aria-level=\"${this.level}\"]`);\n for (const row of rows) {\n const toggler = this.togglerButton(row);\n if (toggler) {\n toggler.focus();\n break;\n }\n }\n event.preventDefault();\n }\n\n onEndKey(event: KeyboardEvent) {\n const rows = <any>find(this.tt.el?.nativeElement, `tr[aria-level=\"${this.level}\"]`);\n for (let i = rows.length - 1; i >= 0; i--) {\n const toggler = this.togglerButton(rows[i]);\n if (toggler) {\n toggler.focus();\n break;\n }\n }\n event.preventDefault();\n }\n\n expand(event: Event) {\n this.tt.toggleRowIndex = getIndex(this.el.nativeElement);\n this.rowNode().node['expanded'] = true;\n\n this.tt.updateSerializedValue();\n this.tt.tableService.onUIUpdate(this.tt.value);\n this.restoreFocus();\n\n this.tt.onNodeExpand.emit({\n originalEvent: event,\n node: this.rowNode().node\n });\n }\n\n collapse(event: Event) {\n this.rowNode().node['expanded'] = false;\n\n this.tt.updateSerializedValue();\n this.tt.tableService.onUIUpdate(this.tt.value);\n\n this.tt.onNodeCollapse.emit({ originalEvent: event, node: this.rowNode().node });\n }\n\n /**\n * Focus model: rows are not focusable — the row's toggler button carries\n * keyboard focus (Tab reaches it, Enter/Space toggles, arrows move between\n * visible togglers). Rows never show a focus outline.\n */\n private togglerButton(row: Element | null | undefined): HTMLElement | null {\n if (!row) return null;\n const button = findSingle(row, '[data-pc-section=\"rowtogglebutton\"]') as HTMLElement | null;\n return button && button.style.visibility !== 'hidden' ? button : null;\n }\n\n private focusSiblingToggler(direction: 'next' | 'previous') {\n let sibling = direction === 'next' ? this.el?.nativeElement?.nextElementSibling : this.el?.nativeElement?.previousElementSibling;\n while (sibling) {\n const toggler = this.togglerButton(sibling);\n if (toggler) {\n toggler.focus();\n return;\n }\n sibling = direction === 'next' ? sibling.nextElementSibling : sibling.previousElementSibling;\n }\n }\n\n /** Re-focus the toggled row's toggler after the tbody re-renders. */\n restoreFocus() {\n setTimeout(() => {\n const tbody = findSingle(this.tt.el?.nativeElement, '[data-pc-section=\"tbody\"]');\n const row = tbody?.children?.[this.tt.toggleRowIndex || 0] as Element | undefined;\n const toggler = this.togglerButton(row);\n toggler?.focus();\n }, 25);\n }\n\n ptmOptions() {\n return {\n context: {\n selectable: this.tt?.rowHover() || !!this.tt.selectionMode(),\n selected: this.tt.isSelected((<any>this.rowNode())?.node),\n scrollable: this.tt?.scrollable(),\n rowNode: this.rowNode()\n }\n };\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { Component, inject, input, ViewEncapsulation } from '@angular/core';\nimport { ChevronDown as ChevronDownIcon } from '@primeicons/angular/chevron-down';\nimport { ChevronRight as ChevronRightIcon } from '@primeicons/angular/chevron-right';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { Bind } from 'primeng/bind';\nimport { Ripple } from 'primeng/ripple';\nimport { TreeTableStyle } from './style/treetablestyle';\nimport type { TreeTable } from './treetable';\nimport { TREETABLE_INSTANCE } from './treetable-service';\n\n@Component({\n selector: 'p-treetabletoggler, p-treetable-toggler',\n standalone: true,\n imports: [NgTemplateOutlet, Bind, Ripple, ChevronDownIcon, ChevronRightIcon],\n template: `\n <button\n type=\"button\"\n [class]=\"cx('toggler')\"\n [pBind]=\"ptm('rowToggleButton')\"\n (click)=\"onClick($event)\"\n pRipple\n [style.visibility]=\"togglerVisibility\"\n [style.marginInlineStart]=\"togglerMarginStart\"\n [attr.data-pc-group-section]=\"'rowactionbutton'\"\n [attr.aria-label]=\"toggleButtonAriaLabel\"\n >\n @if (!tt.togglerIconTemplate()) {\n @if (rowNode().node.expanded) {\n <svg data-p-icon=\"chevron-down\" [pBind]=\"ptm('nodetoggleicon')\" [attr.aria-hidden]=\"true\" />\n }\n @if (!rowNode().node.expanded) {\n <svg data-p-icon=\"chevron-right\" [pBind]=\"ptm('nodetoggleicon')\" [attr.aria-hidden]=\"true\" />\n }\n }\n <ng-template *ngTemplateOutlet=\"tt.togglerIconTemplate(); context: togglerIconContext\"></ng-template>\n </button>\n `,\n encapsulation: ViewEncapsulation.None,\n providers: [TreeTableStyle],\n hostDirectives: [Bind]\n})\nexport class TreeTableToggler extends BaseComponent {\n hostName = 'TreeTable';\n\n bindDirectiveInstance = inject(Bind, { self: true });\n\n onAfterViewChecked(): void {\n this.bindDirectiveInstance.setAttrs(this.ptm('toggler'));\n }\n\n rowNode = input<any>();\n\n _componentStyle = inject(TreeTableStyle);\n\n tt = inject<TreeTable>(TREETABLE_INSTANCE);\n\n get togglerIconContext() {\n return { $implicit: this.rowNode()?.node?.expanded };\n }\n\n get togglerVisibility() {\n const node = this.rowNode()?.node;\n return node?.leaf === false || (node?.children && node.children.length) ? 'visible' : 'hidden';\n }\n\n get togglerMarginStart() {\n return this.rowNode()?.level * 16 + 'px';\n }\n\n get toggleButtonAriaLabel() {\n return this.config.translation ? (this.rowNode()?.expanded ? this.config.translation?.aria?.collapseRow : this.config.translation?.aria?.expandRow) : undefined;\n }\n\n onClick(event: Event) {\n // The toggle re-renders the tbody and destroys this button — remember the\n // row position so focus can be handed back to the recreated toggler\n // (keyboard flow: Tab → toggler, Enter/Space toggles, focus stays put).\n const row = this.el?.nativeElement.closest('tr');\n const tbody = row?.parentElement;\n const rowIndex = row && tbody ? Array.prototype.indexOf.call(tbody.children, row) : -1;\n\n this.rowNode().node.expanded = !this.rowNode().node.expanded;\n this.tt.setNodeCollapsed(this.rowNode().node, !this.rowNode().node.expanded);\n\n if (this.rowNode().node.expanded) {\n this.tt.onNodeExpand.emit({\n originalEvent: event,\n node: this.rowNode().node\n });\n } else {\n this.tt.onNodeCollapse.emit({\n originalEvent: event,\n node: this.rowNode().node\n });\n }\n\n this.tt.updateSerializedValue();\n this.tt.tableService.onUIUpdate(this.tt.value);\n\n if (rowIndex >= 0) {\n setTimeout(() => {\n const newRow = tbody?.children?.[rowIndex];\n const toggler = newRow?.querySelector('[data-pc-section=\"rowtogglebutton\"]') as HTMLElement | null;\n if (toggler && toggler.style.visibility !== 'hidden') {\n toggler.focus();\n }\n }, 25);\n }\n\n event.preventDefault();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { SharedModule } from 'primeng/api';\nimport { Scroller } from 'primeng/scroller';\nimport { TreeTable } from './treetable';\nimport { TTBody } from './treetable-body';\nimport { TTScrollableView } from './treetable-scrollable-view';\nimport { TTSortableColumn } from './sortable-column';\nimport { TTSortIcon } from './sort-icon';\nimport { TTResizableColumn } from './resizable-column';\nimport { TTReorderableColumn } from './reorderable-column';\nimport { TTSelectableRow } from './selectable-row';\nimport { TTSelectableRowDblClick } from './selectable-row-dbl-click';\nimport { TTContextMenuRow } from './context-menu-row';\nimport { TTCheckbox } from './treetable-checkbox';\nimport { TTHeaderCheckbox } from './treetable-header-checkbox';\nimport { TTEditableColumn } from './editable-column';\nimport { TreeTableCellEditor } from './cell-editor';\nimport { TTRow } from './treetable-row';\nimport { TreeTableToggler } from './treetable-toggler';\n\n@NgModule({\n imports: [\n TreeTable,\n TTBody,\n TTScrollableView,\n TTSortableColumn,\n TTSortIcon,\n TTResizableColumn,\n TTRow,\n TTReorderableColumn,\n TTSelectableRow,\n TTSelectableRowDblClick,\n TTContextMenuRow,\n TTCheckbox,\n TTHeaderCheckbox,\n TTEditableColumn,\n TreeTableCellEditor,\n TreeTableToggler,\n Scroller\n ],\n exports: [\n TreeTable,\n SharedModule,\n TreeTableToggler,\n TTSortableColumn,\n TTSortIcon,\n TTResizableColumn,\n TTRow,\n TTReorderableColumn,\n TTSelectableRow,\n TTSelectableRowDblClick,\n TTContextMenuRow,\n TTCheckbox,\n TTHeaderCheckbox,\n TTEditableColumn,\n TreeTableCellEditor,\n Scroller\n ]\n})\nexport class TreeTableModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["SpinnerIcon","ArrowDownIcon","ArrowUpIcon","SortAltIcon","SortAmountUpAltIcon","SortAmountDownIcon","i1","ChevronDownIcon","ChevronRightIcon"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,MAAM,KAAK,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAggBrB;AAED,MAAM,OAAO,GAAG;AACZ,IAAA,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAI;AACnB,QAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,EAAE;AAC9C,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,EAAE;AACpC,QAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,EAAE;AAC9C,QAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,EAAE;AACxC,QAAA,MAAM,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,EAAE;AACpD,QAAA,MAAM,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,EAAE;AACpD,QAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,EAAE;AACxC,QAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,EAAE;QAC5C,OAAO;YACH,yBAAyB;AACzB,YAAA;AACI,gBAAA,uBAAuB,EAAE,aAAa;gBACtC,4BAA4B,EAAE,QAAQ,IAAI,aAAa,KAAK,QAAQ,IAAI,aAAa,KAAK,UAAU;AACpG,gBAAA,yBAAyB,EAAE,UAAU;AACrC,gBAAA,uBAAuB,EAAE,gBAAgB;AACzC,gBAAA,2BAA2B,EAAE,gBAAgB,IAAI,gBAAgB,KAAK,KAAK;AAC3E,gBAAA,6BAA6B,EAAE,UAAU,IAAI,YAAY,KAAK;AACjE;SACJ;IACL,CAAC;AACD,IAAA,OAAO,EAAE,qBAAqB;AAC9B,IAAA,IAAI,EAAE,iCAAiC;AACvC,IAAA,WAAW,EAAE,0BAA0B;AACvC,IAAA,MAAM,EAAE,oBAAoB;IAC5B,WAAW,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,wBAAwB,GAAG,QAAQ,CAAC,iBAAiB,EAAE,EAAE,QAAQ,CAAC,mBAAmB,EAAE,CAAC;AACxH,IAAA,cAAc,EAAE,6BAA6B;AAC7C,IAAA,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAI;AACpB,QAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,EAAE;AACxC,QAAA,MAAM,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,EAAE;AACpD,QAAA,MAAM,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,EAAE;QACpD,OAAO;AACH,YAAA,mBAAmB,EAAE,IAAI;AACzB,YAAA,8BAA8B,EAAE,UAAU;AAC1C,YAAA,6BAA6B,EAAE,gBAAgB;AAC/C,YAAA,iCAAiC,EAAE,gBAAgB,IAAI,gBAAgB,KAAK;SAC/E;IACL,CAAC;AACD,IAAA,KAAK,EAAE,mBAAmB;IAC1B,cAAc,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM;AAC/B,QAAA,mBAAmB,EAAE,QAAQ,CAAC,SAAS,EAAE;AACzC,QAAA,2BAA2B,EAAE,QAAQ,CAAC,MAAM;KAC/C,CAAC;AACF,IAAA,kBAAkB,EAAE,uBAAuB;AAC3C,IAAA,mBAAmB,EAAE,yBAAyB;AAC9C,IAAA,aAAa,EAAE,4BAA4B;AAC3C,IAAA,mBAAmB,EAAE,mCAAmC;AACxD,IAAA,WAAW,EAAE,0BAA0B;AACvC,IAAA,QAAQ,EAAE,uBAAuB;AACjC,IAAA,WAAW,EAAE,wBAAwB;AACrC,IAAA,KAAK,EAAE,mBAAmB;IAC1B,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM;AACpB,QAAA,0BAA0B,EAAE,QAAQ,CAAC,QAAQ;KAChD,CAAC;IACF,cAAc,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM;AAC/B,QAAA,sCAAsC,EAAE,QAAQ,CAAC,QAAQ;KAC5D,CAAC;AACF,IAAA,OAAO,EAAE,qBAAqB;AAC9B,IAAA,gBAAgB,EAAE,gCAAgC;AAClD,IAAA,cAAc,EAAE,8BAA8B;AAC9C,IAAA,cAAc,EAAE,2BAA2B;AAC3C,IAAA,KAAK,EAAE,mBAAmB;IAC1B,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM;AAC3B,QAAA,2BAA2B,EAAE,QAAQ,CAAC,UAAU,CAAC,QAAQ;KAC5D,CAAC;AACF,IAAA,MAAM,EAAE,oBAAoB;AAC5B,IAAA,qBAAqB,EAAE,qCAAqC;AAC5D,IAAA,OAAO,EAAE,qBAAqB;AAC9B,IAAA,iBAAiB,EAAE,gCAAgC;AACnD,IAAA,cAAc,EAAE,6BAA6B;AAC7C,IAAA,UAAU,EAAE,yBAAyB;AACrC,IAAA,mBAAmB,EAAE,yBAAyB;AAC9C,IAAA,kBAAkB,EAAE,kCAAkC;AACtD,IAAA,oBAAoB,EAAE,oCAAoC;AAC1D,IAAA,gBAAgB,EAAE,+BAA+B;AACjD,IAAA,mBAAmB,EAAE,mCAAmC;AACxD,IAAA,qBAAqB,EAAE,qCAAqC;AAC5D,IAAA,cAAc,EAAE,6BAA6B;AAC7C,IAAA,gBAAgB,EAAE,+BAA+B;AACjD,IAAA,mBAAmB,EAAE,mCAAmC;AACxD,IAAA,qBAAqB,EAAE;CAC1B;AAED,MAAM,YAAY,GAAG;AACjB,IAAA,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM;CAC9B;AAGK,MAAO,cAAe,SAAQ,SAAS,CAAA;IACzC,IAAI,GAAG,WAAW;IAElB,KAAK,GAAG,KAAK;IAEb,OAAO,GAAG,OAAO;IAEjB,YAAY,GAAG,YAAY;uGAPlB,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAd,cAAc,EAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B;;AAWD;;;;;;;;AAQG;IACS;AAAZ,CAAA,UAAY,gBAAgB,EAAA;AACxB;;AAEG;AACH,IAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,aAAoB;AACpB;;AAEG;AACH,IAAA,gBAAA,CAAA,SAAA,CAAA,GAAA,qBAA+B;AAC/B;;AAEG;AACH,IAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,kBAAyB;AACzB;;AAEG;AACH,IAAA,gBAAA,CAAA,aAAA,CAAA,GAAA,0BAAwC;AACxC;;AAEG;AACH,IAAA,gBAAA,CAAA,QAAA,CAAA,GAAA,oBAA6B;AAC7B;;AAEG;AACH,IAAA,gBAAA,CAAA,aAAA,CAAA,GAAA,kCAAgD;AAChD;;AAEG;AACH,IAAA,gBAAA,CAAA,gBAAA,CAAA,GAAA,6BAA8C;AAC9C;;AAEG;AACH,IAAA,gBAAA,CAAA,OAAA,CAAA,GAAA,mBAA2B;AAC3B;;AAEG;AACH,IAAA,gBAAA,CAAA,OAAA,CAAA,GAAA,mBAA2B;AAC3B;;AAEG;AACH,IAAA,gBAAA,CAAA,eAAA,CAAA,GAAA,4BAA4C;AAC5C;;AAEG;AACH,IAAA,gBAAA,CAAA,aAAA,CAAA,GAAA,0BAAwC;AACxC;;AAEG;AACH,IAAA,gBAAA,CAAA,UAAA,CAAA,GAAA,uBAAkC;AAClC;;AAEG;AACH,IAAA,gBAAA,CAAA,aAAA,CAAA,GAAA,wBAAsC;AACtC;;AAEG;AACH,IAAA,gBAAA,CAAA,OAAA,CAAA,GAAA,mBAA2B;AAC3B;;AAEG;AACH,IAAA,gBAAA,CAAA,kBAAA,CAAA,GAAA,gCAAmD;AACnD;;AAEG;AACH,IAAA,gBAAA,CAAA,gBAAA,CAAA,GAAA,8BAA+C;AAC/C;;AAEG;AACH,IAAA,gBAAA,CAAA,gBAAA,CAAA,GAAA,2BAA4C;AAC5C;;AAEG;AACH,IAAA,gBAAA,CAAA,cAAA,CAAA,GAAA,2BAA0C;AAC1C;;AAEG;AACH,IAAA,gBAAA,CAAA,OAAA,CAAA,GAAA,mBAA2B;AAC3B;;AAEG;AACH,IAAA,gBAAA,CAAA,QAAA,CAAA,GAAA,oBAA6B;AAC7B;;AAEG;AACH,IAAA,gBAAA,CAAA,uBAAA,CAAA,GAAA,qCAA6D;AAC7D;;AAEG;AACH,IAAA,gBAAA,CAAA,SAAA,CAAA,GAAA,qBAA+B;AAC/B;;AAEG;AACH,IAAA,gBAAA,CAAA,mBAAA,CAAA,GAAA,gCAAoD;AACpD;;AAEG;AACH,IAAA,gBAAA,CAAA,gBAAA,CAAA,GAAA,6BAA8C;AAC9C;;AAEG;AACH,IAAA,gBAAA,CAAA,YAAA,CAAA,GAAA,yBAAsC;AACtC;;AAEG;AACH,IAAA,gBAAA,CAAA,qBAAA,CAAA,GAAA,mCAAyD;AACzD;;AAEG;AACH,IAAA,gBAAA,CAAA,oBAAA,CAAA,GAAA,kCAAuD;AACvD;;AAEG;AACH,IAAA,gBAAA,CAAA,sBAAA,CAAA,GAAA,oCAA2D;AAC3D;;AAEG;AACH,IAAA,gBAAA,CAAA,kBAAA,CAAA,GAAA,+BAAkD;AAClD;;AAEG;AACH,IAAA,gBAAA,CAAA,qBAAA,CAAA,GAAA,mCAAyD;AACzD;;AAEG;AACH,IAAA,gBAAA,CAAA,uBAAA,CAAA,GAAA,qCAA6D;AAC7D;;AAEG;AACH,IAAA,gBAAA,CAAA,gBAAA,CAAA,GAAA,6BAA8C;AAC9C;;AAEG;AACH,IAAA,gBAAA,CAAA,kBAAA,CAAA,GAAA,+BAAkD;AAClD;;AAEG;AACH,IAAA,gBAAA,CAAA,qBAAA,CAAA,GAAA,mCAAyD;AACzD;;AAEG;AACH,IAAA,gBAAA,CAAA,uBAAA,CAAA,GAAA,qCAA6D;AAC7D;;AAEG;AACH,IAAA,gBAAA,CAAA,oBAAA,CAAA,GAAA,wBAA6C;AACjD,CAAC,EAjJW,gBAAgB,KAAhB,gBAAgB,GAAA,EAAA,CAAA,CAAA;;MC7mBf,kBAAkB,GAAG,IAAI,cAAc,CAAM,oBAAoB;MAGjE,gBAAgB,CAAA;AACjB,IAAA,UAAU,GAAG,IAAI,OAAO,EAAgC;AACxD,IAAA,eAAe,GAAG,IAAI,OAAO,EAAE;AAC/B,IAAA,iBAAiB,GAAG,IAAI,OAAO,EAAO;AACtC,IAAA,cAAc,GAAG,IAAI,OAAO,EAAO;AACnC,IAAA,kBAAkB,GAAG,IAAI,OAAO,EAAO;AAE/C,IAAA,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;AAC5C,IAAA,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;AACtD,IAAA,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;AAC1D,IAAA,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;AACpD,IAAA,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;AAE5D,IAAA,MAAM,CAAC,QAAsC,EAAA;AACzC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;IAClC;IAEA,iBAAiB,GAAA;AACb,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;IACnC;AAEA,IAAA,aAAa,CAAC,IAAS,EAAA;AACnB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;IACrC;AAEA,IAAA,UAAU,CAAC,KAAU,EAAA;AACjB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;IACnC;AAEA,IAAA,oBAAoB,CAAC,KAAa,EAAA;AAC9B,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;IACvC;uGA/BS,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAhB,gBAAgB,EAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B;;;ACqBK,MAAO,MAAO,SAAQ,aAAa,CAAA;IACrC,OAAO,GAAG,KAAK,CAAQ,SAAS,+EAAI,KAAK,EAAE,gBAAgB,EAAA,CAAG;IAE9D,QAAQ,GAAG,KAAK,CAA6B,SAAS,gFAAI,KAAK,EAAE,wBAAwB,EAAA,CAAG;IAE5F,MAAM,GAAG,KAAK,CAAC,SAAS,8EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE1D,IAAA,eAAe,GAAG,KAAK;mGAAO;AAE9B,IAAA,eAAe,GAAG,KAAK;mGAAO;AAE9B,IAAA,EAAE,GAAG,MAAM,CAAY,kBAAkB,CAAC;IAE1C,mBAAmB,GAAG,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;4FAAC;AAE5F,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,MAAK;AAC3E,YAAA,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE;AACzB,gBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;YAC3B;AACJ,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,sBAAsB,CAAC,cAAmB,EAAA;QACtC,OAAO;AACH,YAAA,SAAS,EAAE,cAAc;YACzB,IAAI,EAAE,cAAc,CAAC,IAAI;AACzB,YAAA,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI;AACjC,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO;SACxB;IACL;IAEA,iBAAiB,CAAC,MAAW,EAAE,OAAa,EAAA;AACxC,QAAA,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE;AACzB,YAAA,OAAO,GAAG,OAAO,IAAI,IAAI,CAAC,eAAe,EAAE;AAC3C,YAAA,OAAO,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI;QAC3C;AAEA,QAAA,OAAO,IAAI;IACf;AAEA,IAAA,WAAW,CAAC,QAAgB,EAAA;QACxB,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC;AAC/D,QAAA,OAAO,cAAc,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC,KAAK,GAAG,QAAQ;IACrE;AAEA,IAAA,IAAI,KAAK,GAAA;QACL,OAAO,IAAI,CAAC,EAAE,CAAC;AACX,YAAA,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACxD,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM;AACtB,SAAA,CAAC;IACN;uGApDS,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAN,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAM,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,OAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAfL;;;;;;;;;AAST,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAVS,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAgBjB,MAAM,EAAA,UAAA,EAAA,CAAA;kBAnBlB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,gBAAgB,CAAC;AAC3B,oBAAA,QAAQ,EAAE;;;;;;;;;AAST,IAAA,CAAA;oBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,IAAI,EAAE;AACF,wBAAA,eAAe,EAAE;AACpB;AACJ,iBAAA;;;ACyDK,MAAO,gBAAiB,SAAQ,aAAa,CAAA;IAC/C,QAAQ,GAAG,WAAW;IAEtB,OAAO,GAAG,KAAK,CAAQ,SAAS,+EAAI,KAAK,EAAE,kBAAkB,EAAA,CAAG;IAEhE,MAAM,GAAG,KAAK,CAAC,SAAS,8EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE1D,IAAA,YAAY,GAAG,KAAK;gGAAiB;IAErC,qBAAqB,GAAG,SAAS,CAAa,cAAc;8FAAC;IAE7D,wBAAwB,GAAG,SAAS,CAAa,iBAAiB;iGAAC;IAEnE,mBAAmB,GAAG,SAAS,CAAa,YAAY;4FAAC;IAEzD,oBAAoB,GAAG,SAAS,CAAa,aAAa;6FAAC;IAE3D,2BAA2B,GAAG,SAAS,CAAa,cAAc;oGAAC;IAEnE,qBAAqB,GAAG,SAAS,CAAa,cAAc;8FAAC;IAE7D,wBAAwB,GAAG,SAAS,CAAa,iBAAiB;iGAAC;IAEnE,0BAA0B,GAAG,SAAS,CAAa,mBAAmB;mGAAC;IAEvE,QAAQ,GAAG,SAAS,CAAW,UAAU;iFAAC;AAE1C,IAAA,oBAAoB;AAEpB,IAAA,kBAAkB;AAElB,IAAA,oBAAoB;AAEpB,IAAA,iBAAiB;AAEjB,IAAA,4BAA4B;AAE5B,IAAA,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC;AAExC,IAAA,EAAE,GAAG,MAAM,CAAY,kBAAkB,CAAC;AAE1C,IAAA,gBAAgB,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,sBAAsB,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC;yFAAC;AAEhJ,IAAA,eAAe,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,oBAAoB,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC;wFAAC;AAEzI,IAAA,eAAe,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,oBAAoB,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC;wFAAC;AAEzI,IAAA,aAAa,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;sFAAC;AAEjI,IAAA,aAAa,GAAG,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,KAAK,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,SAAS,EAAE,CAAC;sFAAC;IAEpH,qBAAqB,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,YAAY,EAAE,KAAK,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;8FAAC;AAE7F,IAAA,eAAe,GAAG,QAAQ,CAAC,OAAO;AAC9B,QAAA,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,KAAK,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,SAAS;QACjF,YAAY,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,QAAQ,GAAG;KACvE,CAAC;wFAAC;AAEH,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE;YAC/B,IAAI,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE;AAC5D,gBAAA,OAAO,CAAC,GAAG,CAAC,uIAAuI,CAAC;YACxJ;AACJ,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,IAAI,eAAe,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,EAAE,CAAC,eAAe;IAClC;IAEA,eAAe,GAAA;AACX,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACpC,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;AAChB,gBAAA,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,kBAAkB,EAAE,EAAE;oBACzD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,2BAA2B,CAAC;gBAChE;gBAEA,IAAI,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,sBAAsB;gBAC7D,IAAI,UAAU,EAAE;AACZ,oBAAA,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;wBAAE,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,UAAU,EAAE,kCAAkC,CAAC;;wBAC3G,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,UAAU,EAAE,oCAAoC,CAAC;gBAC9F;AAEA,gBAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AACrB,oBAAA,IAAI,cAAc,GAAG,uBAAuB,EAAE;AAC9C,oBAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE,EAAE,aAAa,EAAE;AAChD,wBAAA,IAAI,CAAC,wBAAwB,EAAG,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,GAAG,cAAc,GAAG,IAAI;oBAC7F;AAEA,oBAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE,EAAE,aAAa,EAAE;AAChD,wBAAA,IAAI,CAAC,wBAAwB,EAAG,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,GAAG,cAAc,GAAG,IAAI;oBAC7F;gBACJ;YACJ;iBAAO;AACH,gBAAA,IAAI,IAAI,CAAC,0BAA0B,EAAE,EAAE,aAAa,EAAE;AAClD,oBAAA,IAAI,CAAC,0BAA0B,EAAG,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,wBAAwB,EAAE,GAAG,IAAI;gBACrG;YACJ;YAEA,IAAI,CAAC,UAAU,EAAE;QACrB;IACJ;IAEA,UAAU,GAAA;AACN,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACpC,YAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE,aAAa,EAAE;gBAC7C,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9I;AAEA,YAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE,aAAa,EAAE;gBAC7C,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAG,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3I;AAEA,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;AAChB,gBAAA,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE;AACzB,oBAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAiB,EAAC,aAAa,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC1J;qBAAO;oBACH,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrI;YACJ;QACJ;IACJ;IAEA,YAAY,GAAA;AACR,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACpC,YAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE,aAAa,EAAE;AAC7C,gBAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;oBAC3B,IAAI,CAAC,oBAAoB,EAAE;AAC3B,oBAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;gBACpC;YACJ;AAEA,YAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE,aAAa,EAAE;AAC7C,gBAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;oBAC3B,IAAI,CAAC,oBAAoB,EAAE;AAC3B,oBAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;gBACpC;YACJ;AAEA,YAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE,aAAa,EAAE;AAC3C,gBAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;oBACzB,IAAI,CAAC,kBAAkB,EAAE;AACzB,oBAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;gBAClC;YACJ;YAEA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,EAAE;AAClC,gBAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;oBACzB,IAAI,CAAC,kBAAkB,EAAE;AACzB,oBAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;gBAClC;YACJ;QACJ;IACJ;IAEA,cAAc,GAAA;QACV,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,EAAE,EAAE,aAAa,CAAC,UAAU;QAEzE,IAAI,CAAC,mBAAmB,EAAG,CAAC,aAAa,CAAC,UAAU,GAAG,UAAU;AAEjE,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE,aAAa,EAAE;YAC7C,IAAI,CAAC,qBAAqB,EAAG,CAAC,aAAa,CAAC,UAAU,GAAG,UAAU;QACvE;AAEA,QAAA,IAAI,CAAC,4BAA4B,GAAG,IAAI;IAC5C;IAEA,cAAc,GAAA;QACV,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,EAAE,EAAE,aAAa,CAAC,UAAU;QACzE,IAAI,CAAC,mBAAmB,EAAG,CAAC,aAAa,CAAC,UAAU,GAAG,UAAU;AAEjE,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE,aAAa,EAAE;YAC7C,IAAI,CAAC,qBAAqB,EAAG,CAAC,aAAa,CAAC,UAAU,GAAG,UAAU;QACvE;AAEA,QAAA,IAAI,CAAC,4BAA4B,GAAG,IAAI;IAC5C;AAEA,IAAA,YAAY,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,IAAI,CAAC,4BAA4B,EAAE;AACnC,YAAA,IAAI,CAAC,4BAA4B,GAAG,KAAK;YACzC;QACJ;AAEA,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE,aAAa,EAAE;YAC7C,IAAI,CAAC,wBAAwB,EAAG,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI;QACzG;AAEA,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE,aAAa,EAAE;YAC7C,IAAI,CAAC,wBAAwB,EAAG,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI;QACzG;AAEA,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS;QAC7D;IACJ;AAEA,IAAA,oBAAoB,CAAC,KAAa,EAAA;QAC9B,IAAI,CAAC,QAAQ,EAAE,EAAE,aAAa,CAAC,KAAK,CAAC;IACzC;AAEA,IAAA,QAAQ,CAAC,OAAwB,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACjB,IAAI,CAAC,QAAQ,EAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;QACtC;aAAO;YACH,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE,aAAa,CAAC,QAAQ,EAAE;gBACpD,IAAI,CAAC,mBAAmB,EAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC/D;iBAAO;gBACH,IAAI,CAAC,mBAAmB,EAAG,CAAC,aAAa,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI;gBACnE,IAAI,CAAC,mBAAmB,EAAG,CAAC,aAAa,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG;YACrE;QACJ;IACJ;AAEA,IAAA,uBAAuB,CAAC,YAAiB,EAAA;AACrC,QAAA,OAAO,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,GAAG,YAAY,EAAE;IACvD;IAEA,SAAS,GAAA;QACL,IAAI,CAAC,YAAY,EAAE;AAEnB,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;IACjC;uGAhOS,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAFd,CAAC,cAAc,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,0BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,6BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,0BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,4BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAjEjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+DT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAhES,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,IAAI,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,QAAQ,meAAE,MAAM,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAoEzC,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAvE5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC;AACnD,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+DT,IAAA,CAAA;oBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,SAAS,EAAE,CAAC,cAAc;AAC7B,iBAAA;AAUiD,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,cAAc,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAEX,iBAAiB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAEtB,YAAY,8EAEX,aAAa,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,2BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAEN,cAAc,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAEpB,cAAc,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAEX,iBAAiB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAEf,mBAAmB,kEAEvC,UAAU,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AC1D7C;;;AAGG;AAwMG,MAAO,SAAU,SAAQ,aAAmC,CAAA;IAC9D,aAAa,GAAG,WAAW;AAE3B,IAAA,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC;IAExC,qBAAqB,GAAG,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAEpD,kBAAkB,GAAA;AACd,QAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpE;AACA;;;AAGG;AACH,IAAA,OAAO,GAAG,KAAK;2FAAS;AACxB;;;AAGG;AACH,IAAA,UAAU,GAAG,KAAK;8FAAiB;AACnC;;;AAGG;AACH,IAAA,eAAe,GAAG,KAAK;mGAAU;AACjC;;;AAGG;IACH,UAAU,GAAG,KAAK,CAAC,SAAS,kFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAC9D;;;AAGG;IACH,IAAI,GAAG,KAAK,CAAC,KAAK,4EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACpD;;;AAGG;IACH,cAAc,GAAG,KAAK,CAAC,IAAI,sFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAC7D;;;AAGG;IACH,SAAS,GAAG,KAAK,CAAC,SAAS,iFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAC7D;;;AAGG;IACH,IAAI,GAAG,KAAK,CAAqB,SAAS;6EAAC;AAC3C;;;AAGG;AACH,IAAA,UAAU,GAAG,KAAK,CAAC,CAAC,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,YAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,GAAG;AACrE;;;AAGG;IACH,SAAS,GAAG,KAAK,CAAC,CAAC,iFAAI,SAAS,EAAE,eAAe,EAAA,CAAG;AACpD;;;AAGG;AACH,IAAA,kBAAkB,GAAG,KAAK;sGAAS;AACnC;;;AAGG;IACH,mBAAmB,GAAG,KAAK,CAAC,IAAI,2FAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAClE;;;AAGG;IACH,iBAAiB,GAAG,KAAK,CAA6B,QAAQ;0FAAC;AAC/D;;;AAGG;AACH,IAAA,mBAAmB,GAAG,KAAK;uGAAU;AACrC;;;AAGG;AACH,IAAA,yBAAyB,GAAG,KAAK;6GAAO;AACxC;;;AAGG;IACH,yBAAyB,GAAG,KAAK,CAAC,+BAA+B;kGAAC;AAClE;;;AAGG;IACH,qBAAqB,GAAG,KAAK,CAAC,SAAS,6FAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACzE;;;AAGG;IACH,sBAAsB,GAAG,KAAK,CAAC,SAAS,8FAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAC1E;;;AAGG;IACH,iBAAiB,GAAG,KAAK,CAAC,IAAI,yFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAChE;;;AAGG;IACH,aAAa,GAAG,KAAK,CAAC,IAAI,qFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAC5D;;;AAGG;IACH,gBAAgB,GAAG,KAAK,CAAC,CAAC,wFAAI,SAAS,EAAE,eAAe,EAAA,CAAG;AAC3D;;;AAGG;IACH,QAAQ,GAAG,KAAK,CAAoB,QAAQ;iFAAC;AAC7C;;;AAGG;IACH,eAAe,GAAG,KAAK,CAAC,IAAI,uFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAC9D;;;AAGG;IACH,UAAU,GAAG,KAAK,CAAC,SAAS,kFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAC9D;;;AAGG;AACH,IAAA,aAAa,GAAG,KAAK;iGAA0B;AAC/C;;;AAGG;AACH,IAAA,oBAAoB,GAAG,KAAK;wGAAO;AACnC;;;AAGG;AACH,IAAA,OAAO,GAAG,KAAK;2FAAU;AACzB;;;AAGG;IACH,gBAAgB,GAAG,KAAK,CAAC,KAAK,wFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAChE;;;AAGG;IACH,kBAAkB,GAAG,KAAK,CAA8B,YAAY;2FAAC;AACrE;;;AAGG;IACH,QAAQ,GAAG,KAAK,CAAC,SAAS,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAC5D;;;AAGG;IACH,OAAO,GAAG,KAAK,CAAC,SAAS,+EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAC3D;;;AAGG;AACH,IAAA,WAAW,GAAG,KAAK;+FAAU;AAC7B;;;AAGG;IACH,UAAU,GAAG,KAAK,CAAC,IAAI,kFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACzD;;;AAGG;IACH,UAAU,GAAG,KAAK,CAAC,SAAS,kFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAC9D;;;AAGG;AACH,IAAA,YAAY,GAAG,KAAK;gGAAU;AAC9B;;;AAGG;IACH,aAAa,GAAG,KAAK,CAAC,SAAS,qFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACjE;;;AAGG;IACH,qBAAqB,GAAG,KAAK,CAAC,SAAS,6FAAI,SAAS,EAAE,eAAe,EAAA,CAAG;AACxE;;;AAGG;AACH,IAAA,oBAAoB,GAAG,KAAK;wGAAmB;AAC/C;;;AAGG;IACH,kBAAkB,GAAG,KAAK,CAAC,GAAG,0FAAI,SAAS,EAAE,eAAe,EAAA,CAAG;AAC/D;;;AAGG;AACH,IAAA,WAAW,GAAG,KAAK;+FAAU;AAC7B;;;AAGG;AACH,IAAA,aAAa,GAAG,KAAK;iGAAO;AAC5B;;;AAGG;IACH,gBAAgB,GAAG,KAAK,CAAC,SAAS,wFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACpE;;;AAGG;IACH,gBAAgB,GAAG,KAAK,CAA4B,KAAK;yFAAC;AAC1D;;;AAGG;IACH,kBAAkB,GAAG,KAAK,CAAC,SAAS,0FAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACtE;;;AAGG;AACH,IAAA,WAAW,GAAG,KAAK;+FAAO;AAC1B;;;AAGG;IACH,UAAU,GAAG,KAAK,CAAW,CAAC,KAAa,EAAE,IAAS,KAAK,IAAI;mFAAC;AAChE;;;AAGG;IACH,YAAY,GAAG,KAAK,CAA8C,EAAE,oFAAI,KAAK,EAAE,SAAS,EAAA,CAAG;AAC3F;;;AAGG;AACH,IAAA,kBAAkB,GAAG,KAAK;sGAAY;AACtC;;;AAGG;IACH,WAAW,GAAG,KAAK,CAAC,GAAG,mFAAI,SAAS,EAAE,eAAe,EAAA,CAAG;AACxD;;;AAGG;IACH,UAAU,GAAG,KAAK,CAAsB,SAAS;mFAAC;AAClD;;;AAGG;AACH,IAAA,YAAY,GAAG,KAAK;gGAAU;AAC9B;;;AAGG;AACH,IAAA,eAAe,GAAG,KAAK;mGAAU;AACjC;;;AAGG;IACH,iBAAiB,GAAG,KAAK,CAAC,CAAC,yFAAI,KAAK,EAAE,cAAc,EAAA,CAAG;AACvD;;;AAGG;IACH,cAAc,GAAG,KAAK,CAAgB,SAAS,sFAAI,KAAK,EAAE,WAAW,EAAA,CAAG;AACxE;;;;AAIG;IACH,cAAc,GAAG,KAAK,CAAC,CAAC,sFAAI,KAAK,EAAE,WAAW,EAAA,CAAG;AACjD;;;;AAIG;IACH,kBAAkB,GAAG,KAAK,CAAoB,SAAS,0FAAI,KAAK,EAAE,eAAe,EAAA,CAAG;AACpF;;;;;AAKG;IACH,cAAc,GAAG,KAAK,CAAM,SAAS,sFAAI,KAAK,EAAE,WAAW,EAAA,CAAG;AAC9D;;;;AAIG;IACH,UAAU,GAAG,KAAK,CAAkB,SAAS,kFAAI,KAAK,EAAE,OAAO,EAAA,CAAG;AAClE;;;AAGG;IACH,aAAa,GAAG,KAAK,CAAM,SAAS;sFAAC;AACrC;;;;;AAKG;IACH,aAAa,GAAG,KAAK,CAAM,SAAS;sFAAC;AACrC;;;;AAIG;IACH,aAAa,GAAG,KAAK,CAAC,KAAK,qFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAC7D;;;;AAIG;IACH,eAAe,GAAG,MAAM,EAAoD;AAC5E;;;;AAIG;IACH,0BAA0B,GAAG,MAAM,EAAiB;AACpD;;;;AAIG;IACH,QAAQ,GAAG,MAAM,EAAwB;AACzC;;;;AAIG;IACH,YAAY,GAAG,MAAM,EAA4B;AACjD;;;;AAIG;IACH,cAAc,GAAG,MAAM,EAA8B;AACrD;;;;AAIG;IACH,MAAM,GAAG,MAAM,EAA2B;AAC1C;;;;AAIG;IACH,MAAM,GAAG,MAAM,EAAO;AACtB;;;;AAIG;IACH,UAAU,GAAG,MAAM,EAA0B;AAC7C;;;;AAIG;IACH,YAAY,GAAG,MAAM,EAAsB;AAC3C;;;;AAIG;IACH,WAAW,GAAG,MAAM,EAA2B;AAC/C;;;;AAIG;IACH,YAAY,GAAG,MAAM,EAA+B;AACpD;;;;AAIG;IACH,YAAY,GAAG,MAAM,EAAiB;AACtC;;;;AAIG;IACH,cAAc,GAAG,MAAM,EAA8B;AACrD;;;;AAIG;IACH,mBAAmB,GAAG,MAAM,EAAmC;AAC/D;;;;AAIG;IACH,sBAAsB,GAAG,MAAM,EAAsC;AACrE;;;;AAIG;IACH,UAAU,GAAG,MAAM,EAAsB;AACzC;;;;AAIG;IACH,cAAc,GAAG,MAAM,EAAsB;AAC7C;;;;AAIG;IACH,YAAY,GAAG,MAAM,EAAsB;AAC3C;;;;AAIG;IACH,mBAAmB,GAAG,MAAM,EAAO;AACnC;;;;AAIG;IACH,mBAAmB,GAAG,MAAM,EAAO;IAEnC,qBAAqB,GAAG,SAAS,CAAa,cAAc;8FAAC;IAE7D,2BAA2B,GAAG,SAAS,CAAa,oBAAoB;oGAAC;IAEzE,6BAA6B,GAAG,SAAS,CAAa,sBAAsB;sGAAC;IAE7E,cAAc,GAAG,SAAS,CAAa,OAAO;uFAAC;IAE/C,mBAAmB,GAAG,SAAS,CAAa,gBAAgB;4FAAC;IAE7D,yBAAyB,GAAG,SAAS,CAAa,sBAAsB;kGAAC;AAEzE;;AAEG;IACH,gBAAgB,GAAG,YAAY,CAA+C,UAAU,wFAAI,WAAW,EAAE,KAAK,EAAA,CAAG;AACjH;;AAEG;IACH,eAAe,GAAG,YAAY,CAAoB,SAAS,uFAAI,WAAW,EAAE,KAAK,EAAA,CAAG;AACpF;;AAEG;IACH,cAAc,GAAG,YAAY,CAA+C,QAAQ,sFAAI,WAAW,EAAE,KAAK,EAAA,CAAG;AAC7G;;AAEG;IACH,YAAY,GAAG,YAAY,CAA4C,MAAM,oFAAI,WAAW,EAAE,KAAK,EAAA,CAAG;AACtG;;AAEG;IACH,cAAc,GAAG,YAAY,CAA+C,QAAQ,sFAAI,WAAW,EAAE,KAAK,EAAA,CAAG;AAC7G;;AAEG;IACH,eAAe,GAAG,YAAY,CAAoB,SAAS,uFAAI,WAAW,EAAE,KAAK,EAAA,CAAG;AACpF;;AAEG;IACH,oBAAoB,GAAG,YAAY,CAAoD,cAAc,4FAAI,WAAW,EAAE,KAAK,EAAA,CAAG;AAC9H;;AAEG;IACH,qBAAqB,GAAG,YAAY,CAAwC,eAAe,6FAAI,WAAW,EAAE,KAAK,EAAA,CAAG;AACpH;;AAEG;IACH,sBAAsB,GAAG,YAAY,CAAwC,gBAAgB,8FAAI,WAAW,EAAE,KAAK,EAAA,CAAG;AACtH;;AAEG;IACH,6BAA6B,GAAG,YAAY,CAAoD,uBAAuB,qGAAI,WAAW,EAAE,KAAK,EAAA,CAAG;AAChJ;;AAEG;IACH,oBAAoB,GAAG,YAAY,CAA+C,cAAc,4FAAI,WAAW,EAAE,KAAK,EAAA,CAAG;AACzH;;AAEG;IACH,kBAAkB,GAAG,YAAY,CAAoB,YAAY,0FAAI,WAAW,EAAE,KAAK,EAAA,CAAG;AAC1F;;AAEG;IACH,oBAAoB,GAAG,YAAY,CAA+C,cAAc,4FAAI,WAAW,EAAE,KAAK,EAAA,CAAG;AACzH;;AAEG;IACH,sBAAsB,GAAG,YAAY,CAA+C,gBAAgB,8FAAI,WAAW,EAAE,KAAK,EAAA,CAAG;AAC7H;;AAEG;IACH,mBAAmB,GAAG,YAAY,CAAoB,aAAa,2FAAI,WAAW,EAAE,KAAK,EAAA,CAAG;AAC5F;;AAEG;IACH,8BAA8B,GAAG,YAAY,CAAoB,wBAAwB,sGAAI,WAAW,EAAE,KAAK,EAAA,CAAG;AAClH;;AAEG;IACH,gCAAgC,GAAG,YAAY,CAAoB,0BAA0B,wGAAI,WAAW,EAAE,KAAK,EAAA,CAAG;AACtH;;AAEG;IACH,gBAAgB,GAAG,YAAY,CAAgD,UAAU,wFAAI,WAAW,EAAE,KAAK,EAAA,CAAG;AAClH;;AAEG;IACH,oBAAoB,GAAG,YAAY,CAAoD,cAAc,4FAAI,WAAW,EAAE,KAAK,EAAA,CAAG;AAC9H;;AAEG;IACH,0BAA0B,GAAG,YAAY,CAA0D,oBAAoB,kGAAI,WAAW,EAAE,KAAK,EAAA,CAAG;AAChJ;;AAEG;IACH,mBAAmB,GAAG,YAAY,CAAmD,aAAa,2FAAI,WAAW,EAAE,KAAK,EAAA,CAAG;AAC3H;;AAEG;IACH,kCAAkC,GAAG,YAAY,CAAoB,4BAA4B,0GAAI,WAAW,EAAE,KAAK,EAAA,CAAG;AAC1H;;AAEG;IACH,iCAAiC,GAAG,YAAY,CAAoB,2BAA2B,yGAAI,WAAW,EAAE,KAAK,EAAA,CAAG;AACxH;;AAEG;IACH,qCAAqC,GAAG,YAAY,CAAoB,+BAA+B,6GAAI,WAAW,EAAE,KAAK,EAAA,CAAG;AAChI;;AAEG;IACH,iCAAiC,GAAG,YAAY,CAAoB,2BAA2B,yGAAI,WAAW,EAAE,KAAK,EAAA,CAAG;AACxH;;AAEG;IACH,cAAc,GAAG,YAAY,CAA6C,QAAQ,sFAAI,WAAW,EAAE,KAAK,EAAA,CAAG;AAE3G,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;wFAAC;IAErE,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,CAAC,iBAAiB,EAAE,KAAK,KAAK,IAAI,IAAI,CAAC,iBAAiB,EAAE,KAAK,MAAM,CAAC;yFAAC;IAElI,mBAAmB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,CAAC,iBAAiB,EAAE,KAAK,QAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE,KAAK,MAAM,CAAC;4FAAC;IAExI,KAAK,GAAG,QAAQ,CAAC,MACb,IAAI,CAAC,EAAE,CAAC;AACJ,QAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;QAC7B,iBAAiB,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,MAAM;AACtE,QAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACvB,QAAA,KAAK,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC;8EACL;AAED,IAAA,kBAAkB;AAElB,IAAA,gBAAgB;AAEhB,IAAA,iBAAiB;AAEjB,IAAA,aAAa;AAEb,IAAA,YAAY;AAEZ,IAAA,iCAAiC;AAEjC,IAAA,UAAU;IAEV,KAAK,GAAgC,EAAE;IAEvC,YAAY,GAAW,CAAC;AAExB,IAAA,UAAU;IAEV,UAAU,GAAW,CAAC;AAEtB,IAAA,cAAc;AAEd,IAAA,cAAc;AAEd,IAAA,cAAc;IAEd,KAAK,GAAW,CAAC;IAEjB,OAAO,GAAgD,EAAE;IAEzD,YAAY,GAAQ,EAAE;AAEtB,IAAA,UAAU;IAEF,YAAY,GAAG,MAAM,CAAoB,IAAI;qFAAC;AAEtD,IAAA,IAAI,WAAW,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE;IAC9B;IAEA,IAAI,WAAW,CAAC,KAAwB,EAAA;AACpC,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;IAChC;AAEA,IAAA,eAAe;AAEf,IAAA,gBAAgB;AAEhB,IAAA,gBAAgB;AAEhB,IAAA,oBAAoB;AAEpB,IAAA,WAAW;AAEX,IAAA,cAAc;AAEd,IAAA,eAAe;AAEf,IAAA,aAAa;AAEb,IAAA,aAAa;AAEb,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AAErC,IAAA,YAAY,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAEvC,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;;QAGP,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE;YAC7B,SAAS,CAAC,MAAK;AACX,gBAAA,IAAI,GAAG,KAAK,SAAS,EAAE;AACnB,oBAAA,IAAI,CAAC,KAAK,GAAG,GAAG;AAChB,oBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;AACd,wBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;wBACtD,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,QAAQ,IAAI,IAAI,CAAC,UAAU;4BAAE,IAAI,CAAC,UAAU,EAAE;6BAChE,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,UAAU,IAAI,IAAI,CAAC,cAAc;4BAAE,IAAI,CAAC,YAAY,EAAE;6BAC7E,IAAI,IAAI,CAAC,SAAS,EAAE;4BAAE,IAAI,CAAC,OAAO,EAAE;oBAC7C;oBACA,IAAI,CAAC,qBAAqB,EAAE;oBAC5B,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC5C;AACJ,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE;YACjC,SAAS,CAAC,MAAK;AACX,gBAAA,IAAI,GAAG,KAAK,SAAS,EAAE;AACnB,oBAAA,IAAI,CAAC,UAAU,GAAG,GAAG;oBACrB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE;AAClC,wBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,QAAQ,EAAE;4BAC9B,IAAI,CAAC,UAAU,EAAE;wBACrB;oBACJ;gBACJ;AACJ,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE;YACjC,SAAS,CAAC,MAAK;AACX,gBAAA,IAAI,CAAC,UAAU,GAAG,GAAG;gBACrB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE;AAClC,oBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,QAAQ,EAAE;wBAC9B,IAAI,CAAC,UAAU,EAAE;oBACrB;gBACJ;AACJ,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE;YACrC,SAAS,CAAC,MAAK;AACX,gBAAA,IAAI,GAAG,KAAK,SAAS,EAAE;AACnB,oBAAA,IAAI,CAAC,cAAc,GAAG,GAAG;AACzB,oBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,UAAU,EAAE;wBAChC,IAAI,CAAC,YAAY,EAAE;oBACvB;gBACJ;AACJ,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE;YACjC,SAAS,CAAC,MAAK;AACX,gBAAA,IAAI,GAAG,KAAK,SAAS,EAAE;AACnB,oBAAA,IAAI,CAAC,UAAU,GAAG,GAAG;AACrB,oBAAA,IAAI,CAAC,IAAI,CAAC,iCAAiC,EAAE;wBACzC,IAAI,CAAC,kBAAkB,EAAE;AACzB,wBAAA,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE;oBACzC;AACA,oBAAA,IAAI,CAAC,iCAAiC,GAAG,KAAK;gBAClD;AACJ,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,EAAE;YACpC,SAAS,CAAC,MAAK;AACX,gBAAA,IAAI,CAAC,YAAY,GAAG,GAAG;gBACvB,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC;AAC7D,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE;YAChC,SAAS,CAAC,MAAK;AACX,gBAAA,IAAI,GAAG,KAAK,SAAS,EAAE;AACnB,oBAAA,IAAI,CAAC,cAAc,GAAG,GAAG;oBACzB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;gBACtD;AACJ,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;;;QAIF,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE;YAChC,SAAS,CAAC,MAAK;AACX,gBAAA,IAAI,GAAG,KAAK,SAAS,EAAE;AACnB,oBAAA,IAAI,CAAC,cAAc,GAAG,GAAG;oBACzB,IAAI,CAAC,kBAAkB,EAAE;oBACzB,IAAI,CAAC,qBAAqB,EAAE;oBAC5B,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;oBACxC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;gBACtD;AACJ,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE;YAC7B,SAAS,CAAC,MAAK;AACX,gBAAA,IAAI,CAAC,KAAK,GAAG,GAAG;AACpB,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE;YAC/B,SAAS,CAAC,MAAK;AACX,gBAAA,IAAI,CAAC,OAAO,GAAG,GAAG;AACtB,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;IACN;IAEA,MAAM,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;YAC/D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACvD;AACA,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;IAC3B;IAEA,qBAAqB,GAAA;AACjB,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;QAEzB,IAAI,IAAI,CAAC,SAAS,EAAE;YAAE,IAAI,CAAC,kBAAkB,EAAE;;AAC1C,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC;IAC7E;AAEA,IAAA,cAAc,CAAC,MAA+B,EAAE,KAA2B,EAAE,KAAuB,EAAE,OAA0B,EAAA;AAC5H,QAAA,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;AACvB,YAAA,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE;AACpB,gBAAA,IAAI,CAAC,MAAM,GAAkB,MAAM;AACnC,gBAAA,MAAM,OAAO,GAAG;AACZ,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,MAAM,EAAE,MAAM;AACd,oBAAA,KAAK,EAAE,KAAK;AACZ,oBAAA,OAAO,EAAE,OAAO,KAAK,MAAM,GAAG,MAAM,CAAC,QAAQ,GAAG,IAAI;iBACvD;AACY,gBAAA,IAAI,CAAC,eAAgB,CAAC,IAAI,CAAgB,OAAO,CAAC;gBAE/D,IAAI,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;AAClC,oBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAU,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC;gBAChF;YACJ;QACJ;IACJ;IAEA,kBAAkB,GAAA;QACd,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK;AAC3C,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;AACzB,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK;AAE1C,YAAA,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,GAAW,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;AACtD,gBAAA,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;gBAClB,IAAI,IAAI,EAAE;AACN,oBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACtB,wBAAA,IAAI,EAAE,IAAI;AACV,wBAAA,MAAM,EAAO,IAAI;AACjB,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,OAAO,EAAE;AACZ,qBAAA,CAAC;AAEF,oBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC;gBACrD;YACJ;QACJ;IACJ;IAEA,kBAAkB,GAAA;QACd,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;AACnC,YAAA,IAAI,CAAC,YAAY,GAAG,EAAE;YACtB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AAChC,gBAAA,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;oBAC9B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC9E;YACJ;iBAAO;gBACH,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,gBAAgB,CAAO,IAAI,CAAC,UAAW,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;YAChG;QACJ;IACJ;AAEA,IAAA,YAAY,CAAC,KAA8B,EAAA;AACvC,QAAA,IAAI,CAAC,KAAK,GAAW,KAAK,CAAC,KAAK;QAChC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAS,KAAK,CAAC,IAAI,CAAC;QAEjC,IAAI,IAAI,CAAC,IAAI,EAAE;YAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;;YAC/D,IAAI,CAAC,kBAAkB,EAAE;AAE9B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACb,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAU,KAAK,CAAC;AACvB,SAAA,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AAExC,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACnB,IAAI,CAAC,cAAc,EAAE;QACzB;IACJ;AAEA,IAAA,IAAI,CAAC,KAAyB,EAAA;AAC1B,QAAA,IAAI,aAAa,GAAG,KAAK,CAAC,aAAa;AAEvC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,QAAQ,EAAE;YAC9B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAClG,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,KAAK;YAC7B,IAAI,CAAC,UAAU,EAAE;YAEjB,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;gBAC7C,IAAI,CAAC,cAAc,EAAE;YACzB;QACJ;AACA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,UAAU,EAAE;YAChC,IAAI,OAAO,GAAmB,aAAc,CAAC,OAAO,IAAoB,aAAc,CAAC,OAAO;YAC9F,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAS,KAAK,CAAC,KAAK,CAAC;YAEpD,IAAI,QAAQ,EAAE;gBACV,IAAI,CAAC,OAAO,EAAE;oBACV,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE,KAAK,EAAU,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;oBAElF,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;wBAC7C,IAAI,CAAC,cAAc,EAAE;oBACzB;gBACJ;qBAAO;oBACH,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;gBACxC;YACJ;iBAAO;gBACH,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAClC,oBAAA,IAAI,CAAC,cAAc,GAAG,EAAE;oBAExB,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;wBAC7C,IAAI,CAAC,cAAc,EAAE;oBACzB;gBACJ;gBACa,IAAI,CAAC,cAAe,CAAC,IAAI,CAAC,EAAE,KAAK,EAAU,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;YAC1G;YAEA,IAAI,CAAC,YAAY,EAAE;QACvB;IACJ;IAEA,UAAU,GAAA;QACN,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,EAAE;AACpC,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;gBACb,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACvD;AAAO,iBAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACnB,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;AAE1B,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;oBAClB,IAAI,CAAC,OAAO,EAAE;gBAClB;YACJ;AAEA,YAAA,IAAI,QAAQ,GAAa;gBACrB,KAAK,EAAE,IAAI,CAAC,UAAU;gBACtB,KAAK,EAAE,IAAI,CAAC;aACf;AAED,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC1B,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC;YAClC,IAAI,CAAC,qBAAqB,EAAE;QAChC;IACJ;AAEA,IAAA,SAAS,CAAC,KAAiB,EAAA;QACvB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YAC9B;QACJ;AAEA,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACnB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACnB,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;gBACrB,KAAK,EAAU,IAAI,CAAC,UAAU;gBAC9B,KAAK,EAAE,IAAI,CAAC;AACf,aAAA,CAAC;QACN;aAAO;YACH,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;AACxB,gBAAA,IAAI,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC;AAC1D,gBAAA,IAAI,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC;gBAC1D,IAAI,MAAM,GAAW,CAAC;AAEtB,gBAAA,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI;oBAAE,MAAM,GAAG,CAAC,CAAC;AAC5C,qBAAA,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI;oBAAE,MAAM,GAAG,CAAC;AAChD,qBAAA,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI;oBAAE,MAAM,GAAG,CAAC;qBAChD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ;AAAE,oBAAA,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;oBACjI,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC;AAE5D,gBAAA,OAAO,IAAI,CAAC,UAAU,GAAG,MAAM;AACnC,YAAA,CAAC,CAAC;QACN;AAEA,QAAA,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE;AACpB,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAsB,CAAC;QAC/C;IACJ;IAEA,YAAY,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;gBACb,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACvD;AAAO,iBAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACnB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;AAElC,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;oBAClB,IAAI,CAAC,OAAO,EAAE;gBAClB;YACJ;AAEA,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBACb,aAAa,EAAE,IAAI,CAAC;AACvB,aAAA,CAAC;YACF,IAAI,CAAC,qBAAqB,EAAE;YAC5B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;QACjD;IACJ;AAEA,IAAA,iBAAiB,CAAC,KAAiB,EAAA;QAC/B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YAC9B;QACJ;AAEA,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACnB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;gBACnB,IAAI,EAAE,IAAI,CAAC,KAAK;AAChB,gBAAA,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;gBACrB,aAAa,EAAE,IAAI,CAAC;AACvB,aAAA,CAAC;QACN;aAAO;YACH,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;AACxB,gBAAA,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAc,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;AAChF,YAAA,CAAC,CAAC;QACN;AAEA,QAAA,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE;AACpB,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAsB,CAAC;QACvD;IACJ;AAEA,IAAA,cAAc,CAAC,KAAoB,EAAE,KAAoB,EAAE,aAAyB,EAAE,KAAa,EAAA;AAC/F,QAAA,IAAI,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE;AAC/D,YAAA,OAAO,CAAC;QACZ;AAEA,QAAA,IAAI,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;AACrE,QAAA,IAAI,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;QACrE,IAAI,MAAM,GAAW,CAAC;AAEtB,QAAA,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI;YAAE,MAAM,GAAG,CAAC,CAAC;AAC5C,aAAA,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI;YAAE,MAAM,GAAG,CAAC;AAChD,aAAA,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI;YAAE,MAAM,GAAG,CAAC;QACrD,IAAI,OAAO,MAAM,IAAI,QAAQ,IAAI,MAAM,YAAY,MAAM,EAAE;YACvD,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,IAAI,MAAM,EAAE;gBAC1C,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAClG;QACJ;aAAO;AACH,YAAA,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC;QACrC;AAEA,QAAA,IAAI,MAAM,IAAI,MAAM,EAAE;AAClB,YAAA,OAAO,aAAa,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;QAC7G;QAEA,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,MAAM;IAC9C;AAEA,IAAA,WAAW,CAAC,KAAa,EAAA;QACrB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AACnD,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACjD,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,EAAE;AACxC,oBAAA,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;gBACjC;YACJ;QACJ;AAEA,QAAA,OAAO,IAAI;IACf;AAEA,IAAA,QAAQ,CAAC,KAAa,EAAA;AAClB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,QAAQ,EAAE;YAC9B,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK;QACvD;AAAO,aAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,UAAU,EAAE;YACvC,IAAI,MAAM,GAAG,KAAK;AAClB,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACrB,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACjD,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,KAAK,EAAE;wBACvC,MAAM,GAAG,IAAI;wBACb;oBACJ;gBACJ;YACJ;AACA,YAAA,OAAO,MAAM;QACjB;IACJ;IAEA,sBAAsB,GAAA;QAClB,OAAO;YACH,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;YACjB,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,YAAY,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,GAAG,IAAI;YAC1F,aAAa,EAAE,IAAI,CAAC,cAAc;YAClC,WAAW,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC,aAAa;SAC3C;IACL;AAEA,IAAA,cAAc,CAAC,KAA6B,EAAA;AACxC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACjB,GAAG,IAAI,CAAC,sBAAsB,EAAE;AAChC,YAAA,GAAG,KAAK;AACR,YAAA,IAAI,EAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;AAC5B,SAAA,CAAC;IACN;AACA;;;AAGG;IACI,cAAc,GAAA;QACjB,IAAI,IAAI,CAAC,aAAa,EAAE;AAAE,YAAA,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;;YACjD,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;IAClC;AACA;;;;AAIG;AACI,IAAA,oBAAoB,CAAC,KAAa,EAAA;AACrC,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE;YACtB,IAAI,CAAC,mBAAmB,EAAG,CAAC,oBAAoB,CAAS,KAAK,CAAC;QACzE;AAEA,QAAA,IAAI,IAAI,CAAC,yBAAyB,EAAE,EAAE;YAC5B,IAAI,CAAC,mBAAmB,EAAG,CAAC,oBAAoB,CAAC,KAAK,CAAC;QACjE;IACJ;AACA;;;;AAIG;AACI,IAAA,QAAQ,CAAC,OAAwB,EAAA;AACpC,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE;YACtB,IAAI,CAAC,mBAAmB,EAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;QACvD;AAEA,QAAA,IAAI,IAAI,CAAC,yBAAyB,EAAE,EAAE;YAC5B,IAAI,CAAC,mBAAmB,EAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;QACvD;IACJ;IAEA,OAAO,GAAA;QACH,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK;QAC3C,OAAO,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;IAC3C;IAEA,mBAAmB,GAAA;QACf,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5C;AAEA,IAAA,mBAAmB,CAAC,KAAiB,EAAA;AACjC,QAAA,IAAI,aAAa,GAAQ,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC,IAAI;AAC/D,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,KAAK,GAAG,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,UAAU;QACzF,KAAK,CAAC,cAAc,EAAE;IAC1B;AAEA,IAAA,cAAc,CAAC,KAAiB,EAAA;AAC5B,QAAA,IAAI,aAAa,GAAQ,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC,IAAI;QAC/D,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,YAAY,CAAC,0BAA0B,EAAE,MAAM,CAAC;AACvE,QAAA,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC;AAC/E,QAAA,IAAI,CAAC,qBAAqB,EAAG,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,YAAY,GAAG,IAAI;AACrG,QAAA,IAAI,CAAC,qBAAqB,EAAG,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI;QAChE,IAAI,CAAC,qBAAqB,EAAG,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,UAAU,GAAG,IAAI;QAE/H,IAAI,CAAC,qBAAqB,EAAG,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO;IACvE;IAEA,iBAAiB,CAAC,KAAiB,EAAE,MAAW,EAAA;AAC5C,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,qBAAqB,EAAG,CAAC,aAAa,CAAC,UAAU,GAAW,IAAI,CAAC,kBAAkB;AACpG,QAAA,IAAI,WAAW,GAAG,MAAM,CAAC,WAAW;AACpC,QAAA,IAAI,cAAc,GAAG,WAAW,GAAG,KAAK;QACxC,IAAI,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE;QAE1C,IAAI,WAAW,GAAG,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAC1C,YAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,KAAK,KAAK,EAAE;AACnC,gBAAA,IAAI,UAAU,GAAG,MAAM,CAAC,kBAAkB;AAC1C,gBAAA,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE;AAC7B,oBAAA,UAAU,GAAG,UAAU,CAAC,kBAAkB;gBAC9C;gBAEA,IAAI,UAAU,EAAE;AACZ,oBAAA,IAAI,eAAe,GAAG,UAAU,CAAC,WAAW,GAAG,KAAK;oBACpD,IAAI,kBAAkB,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE;oBAExD,IAAI,cAAc,GAAG,EAAE,IAAI,eAAe,GAAG,QAAQ,CAAC,kBAAkB,CAAC,EAAE;AACvE,wBAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;4BACnB,IAAI,cAAc,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC;AAC1D,4BAAA,IAAI,mBAAmB,GAAQ,UAAU,CAAC,cAAc,EAAE,0CAA0C,CAAC,IAAI,UAAU,CAAC,cAAc,EAAE,wCAAwC,CAAC;4BAC7K,IAAI,qBAAqB,GAAQ,UAAU,CAAC,cAAc,EAAE,2CAA2C,CAAC;4BACxG,IAAI,qBAAqB,GAAQ,UAAU,CAAC,cAAc,EAAE,2CAA2C,CAAC;AACxG,4BAAA,IAAI,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC;4BAExC,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE,iBAAiB,EAAE,cAAc,EAAE,eAAe,CAAC;4BAC9F,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,cAAc,EAAE,eAAe,CAAC;4BAC5F,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE,iBAAiB,EAAE,cAAc,EAAE,eAAe,CAAC;wBAClG;6BAAO;4BACH,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,cAAc,GAAG,IAAI;4BAC1C,IAAI,UAAU,EAAE;gCACZ,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,eAAe,GAAG,IAAI;4BACnD;wBACJ;oBACJ;gBACJ;YACJ;AAAO,iBAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,KAAK,QAAQ,EAAE;AAC7C,gBAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;oBACnB,IAAI,cAAc,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC;AAC1D,oBAAA,IAAI,cAAc,GAAQ,UAAU,CAAC,cAAc,EAAE,oCAAoC,CAAC,IAAI,UAAU,CAAC,cAAc,EAAE,kCAAkC,CAAC;oBAC5J,IAAI,gBAAgB,GAAQ,UAAU,CAAC,cAAc,EAAE,sCAAsC,CAAC;oBAC9F,IAAI,gBAAgB,GAAQ,UAAU,CAAC,cAAc,EAAE,sCAAsC,CAAC;AAC9F,oBAAA,IAAI,mBAAmB,GAAQ,UAAU,CAAC,cAAc,EAAE,0CAA0C,CAAC,IAAI,UAAU,CAAC,cAAc,EAAE,wCAAwC,CAAC;oBAC7K,IAAI,qBAAqB,GAAQ,UAAU,CAAC,cAAc,EAAE,2CAA2C,CAAC;oBACxG,IAAI,qBAAqB,GAAQ,UAAU,CAAC,cAAc,EAAE,2CAA2C,CAAC;AACxG,oBAAA,mBAAmB,CAAC,KAAK,CAAC,KAAK,GAAG,mBAAmB,CAAC,WAAW,GAAG,KAAK,GAAG,IAAI;AAChF,oBAAA,qBAAqB,CAAC,KAAK,CAAC,KAAK,GAAG,qBAAqB,CAAC,WAAW,GAAG,KAAK,GAAG,IAAI;oBACpF,IAAI,qBAAqB,EAAE;AACvB,wBAAA,qBAAqB,CAAC,KAAK,CAAC,KAAK,GAAG,qBAAqB,CAAC,WAAW,GAAG,KAAK,GAAG,IAAI;oBACxF;AACA,oBAAA,IAAI,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC;AAExC,oBAAA,MAAM,wBAAwB,GAAG,MAAM,GAAG,mBAAmB,CAAC,WAAW,GAAG,KAAK,GAAG,cAAc;AAClG,oBAAA,MAAM,0BAA0B,GAAG,MAAM,GAAG,qBAAqB,CAAC,WAAW,GAAG,KAAK,GAAG,cAAc;oBACtG,MAAM,qBAAqB,GAAG,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,WAAW,IAAI,wBAAwB;oBAE5F,IAAI,QAAQ,GAAG,CAAC,SAAsB,EAAE,KAAkB,EAAE,KAAa,EAAE,qBAA8B,KAAI;AACzG,wBAAA,IAAI,SAAS,IAAI,KAAK,EAAE;4BACpB,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,qBAAqB,GAAG,KAAK,GAAG,uBAAuB,CAAC,cAAc,CAAC,GAAG,IAAI,GAAG,MAAM;4BAC/G,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,GAAG,IAAI;wBACpC;AACJ,oBAAA,CAAC;oBAED,QAAQ,CAAC,cAAc,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,qBAAqB,CAAC;oBAC9F,QAAQ,CAAC,gBAAgB,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,qBAAqB,CAAC;oBACpG,QAAQ,CAAC,gBAAgB,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,qBAAqB,CAAC;oBAEpG,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE,iBAAiB,EAAE,cAAc,EAAE,IAAI,CAAC;oBACnF,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,cAAc,EAAE,IAAI,CAAC;oBACjF,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE,iBAAiB,EAAE,cAAc,EAAE,IAAI,CAAC;gBACvF;qBAAO;oBACH,IAAI,CAAC,cAAc,EAAG,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE,aAAa,CAAC,WAAW,GAAG,KAAK,GAAG,IAAI;oBAClH,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,cAAc,GAAG,IAAI;AAC1C,oBAAA,IAAI,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE,aAAa,CAAC,KAAK,CAAC,KAAK;AACxD,oBAAA,IAAI,CAAC,EAAG,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,cAAc,GAAG,IAAI;gBAC3E;YACJ;AAEA,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AAClB,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,KAAK,EAAE;AACV,aAAA,CAAC;QACN;QAEA,IAAI,CAAC,qBAAqB,EAAG,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;QAElE,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,eAAe,CAAC,0BAA0B,CAAC;AACjE,QAAA,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;IAC1E;AAEA,IAAA,wBAAwB,CAAC,MAAW,EAAA;QAChC,IAAI,MAAM,EAAE;AACR,YAAA,IAAI,MAAM,GAAG,MAAM,CAAC,aAAa;YACjC,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,oCAAoC,CAAC,EAAE;AACxE,gBAAA,MAAM,GAAG,MAAM,CAAC,aAAa;YACjC;AAEA,YAAA,OAAO,MAAM;QACjB;aAAO;AACH,YAAA,OAAO,IAAI;QACf;IACJ;AAEA,IAAA,cAAc,CAAC,KAA4B,EAAE,iBAAmC,EAAE,cAAgC,EAAE,eAAiC,EAAA;QACjJ,IAAI,KAAK,EAAE;YACP,IAAI,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;YAEnF,IAAI,QAAQ,EAAE;gBACV,IAAI,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAS,iBAAiB,CAAC;AACtD,gBAAA,IAAI,OAAO,GAAG,GAAG,CAAC,kBAAkB;gBACtB,GAAI,CAAC,KAAK,CAAC,KAAK,GAAG,cAAc,GAAG,IAAI;AAEtD,gBAAA,IAAI,OAAO,IAAI,eAAe,EAAE;oBACd,OAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,eAAe,GAAG,IAAI;gBAC/D;YACJ;iBAAO;AACH,gBAAA,MAAM,mEAAmE;YAC7E;QACJ;IACJ;IAEA,iBAAiB,CAAC,KAAgB,EAAE,aAAkB,EAAA;AAClD,QAAA,IAAI,CAAC,gBAAgB,GAAG,0BAA0B,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,aAAa,CAAC;AACrG,QAAA,IAAI,CAAC,iBAAiB,GAAG,2BAA2B,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAAE,aAAa,CAAC;AACzG,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;QAC5B,KAAM,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnD;IAEA,iBAAiB,CAAC,KAAgB,EAAE,UAAe,EAAA;QAC/C,IAAI,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,aAAa,IAAI,UAAU,EAAE;YAC/D,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,eAAe,GAAQ,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC;AAC5D,YAAA,IAAI,gBAAgB,GAAQ,SAAS,CAAC,UAAU,CAAC;AAEjD,YAAA,IAAI,IAAI,CAAC,aAAa,IAAI,UAAU,EAAE;gBAClC,IAAI,UAAU,GAAG,gBAAgB,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI;gBAC7D,IAAI,SAAS,GAAG,eAAe,CAAC,GAAG,GAAG,gBAAgB,CAAC,GAAG;gBAC1D,IAAI,YAAY,GAAG,gBAAgB,CAAC,IAAI,GAAG,UAAU,CAAC,WAAW,GAAG,CAAC;gBAErE,IAAI,CAAC,2BAA2B,EAAG,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,gBAAgB,CAAC,GAAG,GAAG,eAAe,CAAC,GAAG,IAAY,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,GAAG,IAAI;gBACtJ,IAAI,CAAC,6BAA6B,EAAG,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,gBAAgB,CAAC,GAAG,GAAG,eAAe,CAAC,GAAG,GAAG,UAAU,CAAC,YAAY,GAAG,IAAI;AAE3I,gBAAA,IAAI,KAAK,CAAC,KAAK,GAAG,YAAY,EAAE;AAC5B,oBAAA,IAAI,CAAC,2BAA2B,EAAG,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,GAAG,UAAU,GAAG,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAS,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,GAAG,IAAI;AACxJ,oBAAA,IAAI,CAAC,6BAA6B,EAAG,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,GAAG,UAAU,GAAG,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAS,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,GAAG,IAAI;AAC1J,oBAAA,IAAI,CAAC,YAAY,GAAG,CAAC;gBACzB;qBAAO;oBACH,IAAI,CAAC,2BAA2B,EAAG,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,GAAG,UAAU,GAAG,IAAI,CAAC,IAAI,CAAS,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,GAAG,IAAI;oBAC/H,IAAI,CAAC,6BAA6B,EAAG,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,GAAG,UAAU,GAAG,IAAI,CAAC,IAAI,CAAS,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,GAAG,IAAI;AACjI,oBAAA,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;gBAC1B;gBAEA,IAAI,CAAC,2BAA2B,EAAG,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO;gBACzE,IAAI,CAAC,6BAA6B,EAAG,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO;YAC/E;iBAAO;AACG,gBAAA,KAAM,CAAC,YAAY,CAAC,UAAU,GAAG,MAAM;YACjD;QACJ;IACJ;AAEA,IAAA,iBAAiB,CAAC,KAAgB,EAAA;QAC9B,IAAI,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE;YACjD,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,2BAA2B,EAAG,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;YACxE,IAAI,CAAC,6BAA6B,EAAG,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;QAC9E;IACJ;IAEA,YAAY,CAAC,KAAgB,EAAE,UAAe,EAAA;QAC1C,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,SAAS,GAAG,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,EAAE,qBAAqB,CAAC;YACtF,IAAI,SAAS,GAAG,UAAU,CAAC,gBAAgB,CAAC,UAAU,EAAE,qBAAqB,CAAC;AAC9E,YAAA,IAAI,SAAS,GAAG,SAAS,IAAI,SAAS;AACtC,YAAA,IAAI,SAAS,KAAK,CAAC,SAAS,GAAG,SAAS,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC,CAAC,MAAM,SAAS,GAAG,SAAS,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,EAAE;gBACpI,SAAS,GAAG,KAAK;YACrB;AAEA,YAAA,IAAI,SAAS,IAAI,SAAS,GAAG,SAAS,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC,EAAE;AAC/D,gBAAA,SAAS,GAAG,SAAS,GAAG,CAAC;YAC7B;AAEA,YAAA,IAAI,SAAS,IAAI,SAAS,GAAG,SAAS,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC,CAAC,EAAE;AAChE,gBAAA,SAAS,GAAG,SAAS,GAAG,CAAC;YAC7B;YAEA,IAAI,SAAS,EAAE;gBACX,YAAY,CAAQ,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC;AAEzD,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACnB,oBAAA,SAAS,EAAE,SAAS;AACpB,oBAAA,SAAS,EAAE,SAAS;AACpB,oBAAA,OAAO,EAAE,IAAI,CAAC,OAAO;AACxB,iBAAA,CAAC;YACN;YAEA,IAAI,CAAC,2BAA2B,EAAG,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;YACxE,IAAI,CAAC,6BAA6B,EAAG,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;AACzE,YAAA,IAAI,CAAC,aAAqB,CAAC,SAAS,GAAG,KAAK;AAC7C,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;QAC5B;IACJ;AAEA,IAAA,cAAc,CAAC,KAAU,EAAA;QACrB,IAAI,UAAU,GAAiB,KAAK,CAAC,aAAa,CAAC,MAAO,CAAC,QAAQ;QACnE,IAAI,UAAU,IAAI,OAAO,IAAI,UAAU,IAAI,QAAQ,IAAI,UAAU,IAAI,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;YACjH;QACJ;AAEA,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACtB,YAAA,IAAI,CAAC,iCAAiC,GAAG,IAAI;AAC7C,YAAA,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO;YAC3B,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAO,OAAQ,CAAC,IAAI,CAAC;AACnD,YAAA,IAAI,aAAa,GAAG,IAAI,CAAC,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACrE,YAAA,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,gBAAgB,CAAiB,OAAO,CAAC,IAAK,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,IAAI;YAEvH,IAAI,aAAa,EAAE;AACf,gBAAA,IAAI,aAAa,GAAkB,KAAK,CAAC,aAAa;gBACtD,IAAI,OAAO,GAAG,aAAa,CAAC,OAAO,IAAI,aAAa,CAAC,OAAO;AAE5D,gBAAA,IAAI,QAAQ,IAAI,OAAO,EAAE;AACrB,oBAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;AAC9B,wBAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,wBAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,wBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;oBACnC;yBAAO;wBACH,IAAI,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC;wBAC5D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAkB,EAAE,CAAS,KAAK,CAAC,IAAI,cAAc,CAAC;wBAChG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;wBAC1C,IAAI,YAAY,EAAE;AACd,4BAAA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;wBAC1C;oBACJ;AAEA,oBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;wBACrB,aAAa,EAAE,KAAK,CAAC,aAAa;wBAClC,IAAI,EAAiB,OAAO,CAAC,IAAI;AACjC,wBAAA,IAAI,EAAE;AACT,qBAAA,CAAC;gBACN;qBAAO;AACH,oBAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;AAC9B,wBAAA,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI;wBAC9B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;wBACvC,IAAI,YAAY,EAAE;AACd,4BAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,4BAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC;wBACvC;oBACJ;AAAO,yBAAA,IAAI,IAAI,CAAC,uBAAuB,EAAE,EAAE;wBACvC,IAAI,OAAO,EAAE;4BACT,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE;wBAC3C;6BAAO;AACH,4BAAA,IAAI,CAAC,UAAU,GAAG,EAAE;AACpB,4BAAA,IAAI,CAAC,YAAY,GAAG,EAAE;wBAC1B;AAEA,wBAAA,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC;wBACpD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;wBAC1C,IAAI,YAAY,EAAE;AACd,4BAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC;wBACvC;oBACJ;AAEA,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;wBACnB,aAAa,EAAE,KAAK,CAAC,aAAa;wBAClC,IAAI,EAAE,OAAO,CAAC,IAAI;AAClB,wBAAA,IAAI,EAAE,KAAK;wBACX,KAAK,EAAQ,KAAM,CAAC;AACvB,qBAAA,CAAC;gBACN;YACJ;iBAAO;AACH,gBAAA,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,QAAQ,EAAE;oBACnC,IAAI,QAAQ,EAAE;AACV,wBAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,wBAAA,IAAI,CAAC,YAAY,GAAG,EAAE;wBACtB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AAC1C,wBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;4BACrB,aAAa,EAAE,KAAK,CAAC,aAAa;4BAClC,IAAI,EAAiB,OAAO,CAAC,IAAI;AACjC,4BAAA,IAAI,EAAE;AACT,yBAAA,CAAC;oBACN;yBAAO;AACH,wBAAA,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI;wBAC9B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AAC1C,wBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;4BACnB,aAAa,EAAE,KAAK,CAAC,aAAa;4BAClC,IAAI,EAAE,OAAO,CAAC,IAAI;AAClB,4BAAA,IAAI,EAAE,KAAK;4BACX,KAAK,EAAE,KAAK,CAAC;AAChB,yBAAA,CAAC;wBACF,IAAI,YAAY,EAAE;AACd,4BAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,4BAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC;wBACvC;oBACJ;gBACJ;AAAO,qBAAA,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,UAAU,EAAE;oBAC5C,IAAI,QAAQ,EAAE;wBACV,IAAI,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC;wBAC5D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAkB,EAAE,CAAS,KAAK,CAAC,IAAI,cAAc,CAAC;wBAChG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AAC1C,wBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;4BACrB,aAAa,EAAE,KAAK,CAAC,aAAa;4BAClC,IAAI,EAAE,OAAO,CAAC,IAAI;AAClB,4BAAA,IAAI,EAAE;AACT,yBAAA,CAAC;wBACF,IAAI,YAAY,EAAE;AACd,4BAAA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;wBAC1C;oBACJ;yBAAO;wBACH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;wBACvF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AAC1C,wBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;4BACnB,aAAa,EAAE,KAAK,CAAC,aAAa;4BAClC,IAAI,EAAE,OAAO,CAAC,IAAI;AAClB,4BAAA,IAAI,EAAE,KAAK;4BACX,KAAK,EAAE,KAAK,CAAC;AAChB,yBAAA,CAAC;wBACF,IAAI,YAAY,EAAE;AACd,4BAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC;wBACvC;oBACJ;gBACJ;YACJ;AAEA,YAAA,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE;QACzC;AAEA,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;IAC3B;AAEA,IAAA,iBAAiB,CAAC,KAAY,EAAA;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;IAC1B;AAEA,IAAA,mBAAmB,CAAC,KAAU,EAAA;AAC1B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;QAClC,IAAI,OAAO,EAAE;AACT,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI;YAE/B,MAAM,eAAe,GAAG,MAAK;AACzB,gBAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;AACjC,gBAAA,OAAO,CAAC,YAAY,GAAG,MAAK;AACxB,oBAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAW,CAAC;AACjD,oBAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC;AACzC,gBAAA,CAAC;AACL,YAAA,CAAC;AAED,YAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1C,YAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC;AACrC,YAAA,eAAe,EAAE;AACjB,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACrF;IACJ;AAEA,IAAA,sBAAsB,CAAC,KAAU,EAAA;;QAE7B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE;AACvC,QAAA,IAAI,CAAC,iCAAiC,GAAG,IAAI;AAC7C,QAAA,IAAI,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI;QAC7B,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAEpC,IAAI,QAAQ,EAAE;AACV,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,KAAK,CAAC;AACxC,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE;gBACtB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;YACjD;YACA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AAC1C,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAClE;aAAO;AACH,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,IAAI,CAAC;AACvC,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE;gBACtB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;YAChD;YACA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AAC1C,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAChE;AAEA,QAAA,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE;IACzC;IAEA,uBAAuB,CAAC,KAAkC,EAAE,KAAc,EAAA;;QAEtE,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK;AAC3C,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE;AAEnD,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QAErB,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE;AACpB,YAAA,IAAI,CAAC,YAAY,GAAG,EAAE;QAC1B;AAEA,QAAA,IAAI,CAAC,iCAAiC,GAAG,IAAI;QAC7C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AAC1C,QAAA,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE;AAErC,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,KAAc,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACvF;AAEA,IAAA,SAAS,CAAC,OAAgB,EAAA;QACtB,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK;AAE3C,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB,gBAAA,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE;AACnB,oBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC;gBAC9C;YACJ;QACJ;aAAO;;AAEH,YAAA,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB,gBAAA,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE;AACnB,oBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC;gBACrC;gBACA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;YACtD;QACJ;IACJ;IAEA,oBAAoB,CAAC,IAAmB,EAAE,MAAe,EAAA;;QAErD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YACvC,IAAI,kBAAkB,GAAW,CAAC;YAClC,IAAI,oBAAoB,GAAY,KAAK;YACzC,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,IAAI;AAE9F,YAAA,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC7B,gBAAA,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AAAE,oBAAA,kBAAkB,EAAE;qBAC3C,IAAI,KAAK,CAAC,eAAe;oBAAE,oBAAoB,GAAG,IAAI;YAC/D;YAEA,IAAI,MAAM,IAAI,kBAAkB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACtD,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC;AACpD,gBAAA,IAAI,CAAC,eAAe,GAAG,KAAK;gBAC5B,IAAI,YAAY,EAAE;AACd,oBAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC;gBACvC;YACJ;iBAAO;gBACH,IAAI,CAAC,MAAM,EAAE;oBACT,IAAI,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;AAC3C,oBAAA,IAAI,KAAK,IAAI,CAAC,EAAE;wBACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,CAAS,KAAK,CAAC,IAAI,KAAK,CAAC;wBAE7E,IAAI,YAAY,EAAE;AACd,4BAAA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;wBAC1C;oBACJ;gBACJ;AAEA,gBAAA,IAAI,oBAAoB,KAAK,kBAAkB,GAAG,CAAC,IAAI,kBAAkB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAAE,oBAAA,IAAI,CAAC,eAAe,GAAG,IAAI;;AAC1H,oBAAA,IAAI,CAAC,eAAe,GAAG,KAAK;YACrC;QACJ;AAEA,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM;AACxB,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;QACrB,IAAI,MAAM,EAAE;AACR,YAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC;QAC7C;IACJ;IAEA,sBAAsB,CAAC,IAAmB,EAAE,MAAe,EAAA;;QAEvD,IAAI,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;QAC3C,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,IAAI;AAE9F,QAAA,IAAI,MAAM,IAAI,KAAK,IAAI,CAAC,CAAC,EAAE;AACvB,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC;YACpD,IAAI,YAAY,EAAE;AACd,gBAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC;YACvC;QACJ;aAAO,IAAI,CAAC,MAAM,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;YAC9B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,CAAS,KAAK,CAAC,IAAI,KAAK,CAAC;YAC7E,IAAI,YAAY,EAAE;AACd,gBAAA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;YAC1C;QACJ;AAEA,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK;AAC5B,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;QAErB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACvC,YAAA,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC7B,gBAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC;YAC9C;QACJ;IACJ;AAEA,IAAA,UAAU,CAAC,IAAmB,EAAA;;AAE1B,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAChB,gBAAA,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;AAChC,oBAAA,OAAO,IAAI,CAAC,SAAS,CAAC;gBAC1B;qBAAO;AACH,oBAAA,OAAO,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,SAAS;gBACvF;YACJ;iBAAO;AACH,gBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;oBAAE,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;oBAC1E,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC;YAClD;QACJ;AAEA,QAAA,OAAO,KAAK;IAChB;AAEA,IAAA,cAAc,CAAC,IAAI,EAAA;AACf,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,GAAG,KAAK;IAC1H;AAEA,IAAA,qBAAqB,CAAC,IAAI,EAAA;AACtB,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,cAAc,KAAK,IAAI,GAAG,KAAK;IACjI;AAEA,IAAA,OAAO,CAAC,IAAI,EAAA;QACR,OAAO,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;IACjG;AAEA;;;AAGG;IACH,kBAAkB,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE;YAC7B;QACJ;AACA,QAAA,MAAM,IAAI,GAAG,CAAC,KAA8B,KAAI;AAC5C,YAAA,IAAI,CAAC,KAAK;gBAAE;AACZ,YAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACtB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAC9B,gBAAA,IAAI,GAAG,IAAI,IAAI,EAAE;oBACb,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;gBAC7C;AACA,gBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,oBAAA,IAAI,CAAC,IAAI,CAAC,QAA2B,CAAC;gBAC1C;YACJ;AACJ,QAAA,CAAC;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,KAAwB,CAAC;IACvC;AAEA;;AAEG;IACH,gBAAgB,CAAC,IAAmB,EAAE,SAAkB,EAAA;AACpD,QAAA,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE;YAC7B;QACJ;QACA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAC9B,QAAA,IAAI,GAAG,IAAI,IAAI,EAAE;YACb;QACJ;QACA,MAAM,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE;QACvC,IAAI,SAAS,EAAE;AACX,YAAA,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI;QACpB;aAAO;AACH,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC;QACpB;AACA,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;QAC1B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;IACtD;AAEA,IAAA,cAAc,CAAC,KAAK,EAAA;QAChB,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,KAAK;AAC7C,QAAA,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI;AACvB,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC;AAC/B,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE;gBACb,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;YACxC;YAEA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;QACtD;aAAO;YACH,IAAI,CAAC,sBAAsB,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;QAC3D;AAEA,QAAA,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE;IACzC;IAEA,aAAa,CAAC,IAAI,EAAE,KAAK,EAAA;QACrB,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE;QACtF;aAAO;YACH,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAClD;QAEA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACvC,YAAA,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC7B,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC;YACpC;QACJ;IACJ;IAEA,WAAW,CAAC,IAAI,EAAE,KAAK,EAAA;QACnB,IAAI,iBAAiB,GAAG,CAAC;QACzB,IAAI,oBAAoB,GAAG,KAAK;AAEhC,QAAA,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;YAC7B,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO;AAAE,gBAAA,iBAAiB,EAAE;iBAChH,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc;gBAAE,oBAAoB,GAAG,IAAI;QAC7I;QAEA,IAAI,KAAK,IAAI,iBAAiB,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YACrD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE;QACtF;aAAO;YACH,IAAI,CAAC,KAAK,EAAE;gBACR,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAClD;AAEA,YAAA,IAAI,oBAAoB,KAAK,iBAAiB,GAAG,CAAC,IAAI,iBAAiB,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE;;gBAChL,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE;QAC5F;AAEA,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM;QACxB,IAAI,MAAM,EAAE;AACR,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC;QACnC;IACJ;AAEA,IAAA,oBAAoB,CAAC,IAAS,EAAA;AAC1B,QAAA,IAAI,KAAK,GAAW,CAAC,CAAC;QACtB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;AAC3C,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7C,gBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE;oBACvC,KAAK,GAAG,CAAC;oBACT;gBACJ;YACJ;QACJ;AAEA,QAAA,OAAO,KAAK;IAChB;IAEA,qBAAqB,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE,KAAK,QAAQ;IAC5C;IAEA,uBAAuB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE,KAAK,UAAU;IAC9C;IAEA,MAAM,CAAC,KAAoB,EAAE,KAAoB,EAAA;AAC7C,QAAA,OAAO,IAAI,CAAC,kBAAkB,EAAE,KAAK,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;IACzH;AAEA,IAAA,MAAM,CAAC,KAAwB,EAAE,KAAa,EAAE,SAAiB,EAAA;AAC7D,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;QACpC;QAEA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE;QAChE;AAAO,aAAA,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC5B,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAC9B;AAEA,QAAA,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,MAAK;YACjC,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AAC7B,QAAA,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;IAC1B;IAEA,YAAY,CAAC,KAAa,EAAE,SAAiB,EAAA;QACzC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC;IAC3C;AAEA,IAAA,aAAa,CAAC,MAAW,EAAA;QACrB,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,EAAE;AACzC,YAAA,IAAI,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;AAAE,gBAAA,OAAO,IAAI;;AACtH,gBAAA,OAAO,KAAK;QACrB;AACA,QAAA,OAAO,IAAI;IACf;IAEA,OAAO,GAAA;AACH,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;YACb,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACvD;aAAO;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACb;YACJ;AAEA,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;AACnB,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AAClB,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;gBAC1D;YACJ;iBAAO;AACH,gBAAA,IAAI,uBAAuB;AAC3B,gBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;oBACxB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAAE,wBAAA,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC;;wBAC/I,uBAAuB,GAAG,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE;gBAC9E;AAEA,gBAAA,IAAI,CAAC,aAAa,GAAG,EAAE;gBACvB,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,QAAQ;gBACnD,IAAI,cAAc,GAAG,KAAK;AAE1B,gBAAA,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACzB,oBAAA,IAAI,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE;oBAC1B,IAAI,UAAU,GAAG,IAAI;oBACrB,IAAI,WAAW,GAAG,KAAK;AACvB,oBAAA,IAAI,iBAAiB;AAErB,oBAAA,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;AAC3B,wBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,QAAQ,EAAE;4BACxD,IAAI,UAAU,GAAmB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;4BACnD,IAAI,WAAW,GAAG,IAAI;AACtB,4BAAA,IAAI,WAAW,GAAG,UAAU,CAAC,KAAK;AAClC,4BAAA,IAAI,eAAe,GAAG,UAAU,CAAC,SAAS,IAAI,YAAY;4BAC1D,IAAI,gBAAgB,GAAS,IAAI,CAAC,aAAc,CAAC,OAAO,CAAC,eAAe,CAAC;4BACzE,iBAAiB,GAAG,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAE;4BAChF,IACI,CAAC,YAAY,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;iCAC3H,CAAC,YAAY,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,iBAAiB,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAChI;gCACE,UAAU,GAAG,KAAK;4BACtB;4BAEA,IAAI,CAAC,UAAU,EAAE;gCACb;4BACJ;wBACJ;oBACJ;AAEA,oBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,IAAI,uBAAuB,EAAE;AACnE,wBAAA,IAAI,iBAAiB,GAAG,EAAE,GAAG,QAAQ,EAAE;wBACvC,IAAI,WAAW,GAAG,SAAS;wBAC3B,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK;AAC9C,wBAAA,IAAI,gBAAgB,GAAS,IAAI,CAAC,aAAc,CAAC,OAAO,CAAO,IAAI,CAAC,OAAQ,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;AACjG,wBAAA,iBAAiB,GAAG;4BAChB,WAAW;4BACX,WAAW;4BACX,gBAAgB;4BAChB,YAAY;4BACZ;yBACH;wBAED,IACI,CAAC,YAAY,KAAK,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;6BAC5I,CAAC,YAAY,KAAK,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAC,EACjJ;4BACE,WAAW,GAAG,IAAI;4BAClB,QAAQ,GAAG,iBAAiB;wBAChC;oBACJ;oBAEA,IAAI,OAAO,GAAG,UAAU;AACxB,oBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AACxB,wBAAA,OAAO,GAAG,UAAU,IAAI,WAAW;oBACvC;oBAEA,IAAI,OAAO,EAAE;AACT,wBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;oBACrC;AAEA,oBAAA,cAAc,GAAG,cAAc,IAAI,CAAC,UAAU,IAAI,WAAW,KAAK,UAAU,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC;gBACvK;gBAEA,IAAI,CAAC,cAAc,EAAE;AACjB,oBAAA,IAAI,CAAC,aAAa,GAAG,IAAI;gBAC7B;AAEA,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AAClB,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;gBAC3G;YACJ;AACA,YAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;QAC1B;AAEA,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC;QAEd,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK;AAEtD,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;AACrB,YAAA,aAAa,EAAE;AAClB,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,qBAAqB,EAAE;AAE5B,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACnB,IAAI,CAAC,cAAc,EAAE;QACzB;IACJ;IAEA,iBAAiB,CAAC,IAAmB,EAAE,iBAAsB,EAAA;QACzD,IAAI,IAAI,EAAE;YACN,IAAI,OAAO,GAAG,KAAK;AACnB,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACf,IAAI,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;AACnC,gBAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;AAClB,gBAAA,KAAK,IAAI,SAAS,IAAI,UAAU,EAAE;AAC9B,oBAAA,IAAI,aAAa,GAAG,EAAE,GAAG,SAAS,EAAE;oBACpC,IAAI,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,iBAAiB,CAAC,EAAE;wBACxD,OAAO,GAAG,IAAI;AACd,wBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC;oBACrC;gBACJ;YACJ;YAEA,IAAI,OAAO,EAAE;AACT,gBAAA,OAAO,IAAI;YACf;QACJ;IACJ;IAEA,eAAe,CAAC,IAAmB,EAAE,aAAqC,EAAA;AACtE,QAAA,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAE,uBAAuB,EAAE,GAAQ,aAAa;QAC9G,IAAI,OAAO,GAAG,KAAK;QACnB,MAAM,SAAS,GAAG,CAAC,KAAa,KAAK,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,WAAW,EAAU,IAAI,CAAC,YAAY,EAAE,CAAC;AAEnI,QAAA,OAAO,GAAG,uBAAuB,EAAE,MAAM,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC,iBAAiB,KAAK,SAAS,CAAC,iBAAiB,CAAC,KAAK,IAAI,iBAAiB,CAAC,CAAC,GAAG,SAAS,CAAC,WAAW,CAAC;AAEjL,QAAA,IAAI,CAAC,OAAO,KAAK,YAAY,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE;YACtD,OAAO;AACH,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE;oBACzB,WAAW;oBACX,WAAW;oBACX,gBAAgB;oBAChB,YAAY;oBACZ;iBACH,CAAC,IAAI,OAAO;QACrB;AAEA,QAAA,OAAO,OAAO;IAClB;AAEA,IAAA,UAAU,CAAC,IAAmB,EAAA;QAC1B,OAAO,IAAI,CAAC,IAAI,KAAK,KAAK,GAAG,KAAK,GAAG,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IACjF;IAEA,SAAS,GAAA;QACL,IAAI,KAAK,GAAG,IAAI;AAChB,QAAA,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;YAC3B,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;gBACnC,KAAK,GAAG,KAAK;gBACb;YACJ;QACJ;QAEA,OAAO,CAAC,KAAK;IACjB;AACA;;;AAGG;IACI,KAAK,GAAA;AACR,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC;AACnB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC;AAE9B,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;AAEjB,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC;AAEd,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;YACb,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACvD;aAAO;AACH,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;QAC1D;IACJ;AAEA,IAAA,iBAAiB,CAAC,IAAS,EAAE,IAAS,EAAE,KAAa,EAAA;AACjD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;QAC7B,IAAI,CAAC,wBAAwB,EAAE;IACnC;IAEA,kBAAkB,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC,MAAM,KAAK,CAAC;IAC1F;IAEA,wBAAwB,GAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;AAC5B,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,KAAK,KAAI;AAC/E,gBAAA,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;AACzE,oBAAA,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC;AACpE,oBAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,oBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;AACtF,oBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,oBAAA,IAAI,CAAC,eAAe,GAAG,IAAI;oBAC3B,IAAI,CAAC,0BAA0B,EAAE;gBACrC;AAEA,gBAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;AACjC,YAAA,CAAC,CAAC;QACN;IACJ;IAEA,0BAA0B,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC3B,IAAI,CAAC,oBAAoB,EAAE;AAC3B,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;QACpC;IACJ;IAEA,SAAS,GAAA;QACL,IAAI,CAAC,0BAA0B,EAAE;AACjC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;IAC3B;uGA7/DS,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAT,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,yBAAA,EAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,yBAAA,EAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,2BAAA,EAAA,gCAAA,EAAA,EAAA,EAAA,SAAA,EATP,CAAC,gBAAgB,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,MAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,+BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gCAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kCAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,4BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oCAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,4BAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mCAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,uCAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,+BAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mCAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,6BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,+BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,2BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA1LlJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyLT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA1LS,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,IAAI,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,2BAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,MAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,qBAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAEA,OAAW,EAAA,QAAA,EAAA,8BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAEC,SAAa,EAAA,QAAA,EAAA,iCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAEC,OAAW,EAAA,QAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,uHAAE,MAAM,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAoM3G,SAAS,EAAA,UAAA,EAAA,CAAA;kBAvMrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,CAAC,gBAAgB,EAAE,IAAI,EAAE,eAAe,EAAEF,OAAW,EAAEC,SAAa,EAAEC,OAAW,EAAE,gBAAgB,EAAE,MAAM,CAAC;AACrH,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyLT,IAAA,CAAA;oBACD,SAAS,EAAE,CAAC,gBAAgB,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAA,SAAW,EAAE,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAA,SAAW,EAAE,CAAC;oBAC5J,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,IAAI,EAAE;AACF,wBAAA,SAAS,EAAE,YAAY;AACvB,wBAAA,eAAe,EAAE,SAAS;AAC1B,wBAAA,6BAA6B,EAAE;AAClC,qBAAA;oBACD,cAAc,EAAE,CAAC,IAAI;AACxB,iBAAA;sxPA6biD,cAAc,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,2BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAER,oBAAoB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,6BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAElB,sBAAsB,wEAErC,OAAO,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAEF,gBAAgB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAEV,sBAAsB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAKM,UAAU,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,KAAK,EAAE,0EAI9D,SAAS,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAIP,QAAQ,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAIrC,MAAM,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAIzB,QAAQ,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAI1D,SAAS,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAII,cAAc,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,KAAK,EAAE,gFAIjD,eAAe,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAItC,gBAAgB,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,6BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAIrB,uBAAuB,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAI7D,cAAc,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAInE,YAAY,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAIP,cAAc,OAAE,EAAE,WAAW,EAAE,KAAK,EAAE,iFAIpC,gBAAgB,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAItE,aAAa,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,8BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAI1B,wBAAwB,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gCAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAI9C,0BAA0B,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAItC,UAAU,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAI1B,cAAc,OAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAI1B,oBAAoB,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,KAAK,EAAE,8EAI1D,aAAa,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAIrD,4BAA4B,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iCAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAIrD,2BAA2B,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,qCAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAI/C,+BAA+B,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iCAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAI3D,2BAA2B,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAI7C,QAAQ,OAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACvxBxG,MAAO,gBAAiB,SAAQ,aAAa,CAAA;IAC/C,QAAQ,GAAG,YAAY;IAEvB,qBAAqB,GAAG,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAEpD,kBAAkB,GAAA;QACd,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3G;IAEA,KAAK,GAAG,KAAK,CAAS,SAAS,6EAAI,KAAK,EAAE,kBAAkB,EAAA,CAAG;IAE/D,wBAAwB,GAAG,KAAK,CAAC,SAAS,gGAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAE5E,MAAM,GAAG,MAAM,CAAsB,SAAS;+EAAC;AAE/C,IAAA,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC;AAExC,IAAA,EAAE,GAAG,MAAM,CAAY,kBAAkB,CAAC;AAE1C,IAAA,IAAI,YAAY,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,GAAG,GAAG,GAAG,IAAI;IACxC;AAEA,IAAA,IAAI,UAAU,GAAA;QACV,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,GAAG,CAAC;AAAE,YAAA,OAAO,YAAY;aAC3D,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,GAAG,CAAC;AAAE,YAAA,OAAO,WAAW;;AAC/D,YAAA,OAAO,MAAM;IACtB;AAEA,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,MAAK;YACvE,IAAI,CAAC,eAAe,EAAE;AAC1B,QAAA,CAAC,CAAC;IACN;IAEA,MAAM,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YAClB,IAAI,CAAC,eAAe,EAAE;QAC1B;IACJ;IAEA,eAAe,GAAA;AACX,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAS,IAAI,CAAC,KAAK,EAAE,CAAY,CAAC;IACtE;AAGA,IAAA,OAAO,CAAC,KAAiB,EAAA;AACrB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YAClB,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;AACT,gBAAA,aAAa,EAAE,KAAK;AACpB,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK;AACpB,aAAA,CAAC;AAEF,YAAA,cAAc,EAAE;QACpB;IACJ;AAGA,IAAA,UAAU,CAAC,KAAY,EAAA;AACnB,QAAA,IAAI,CAAC,OAAO,CAAC,KAAmB,CAAC;IACrC;IAEA,SAAS,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,wBAAwB,EAAE,KAAK,IAAI;IACnD;uGAlES,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,EAAA,EAAA,SAAA,EAHd,CAAC,cAAc,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAGlB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAZ5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACF,wBAAA,SAAS,EAAE,sBAAsB;AACjC,wBAAA,YAAY,EAAE,cAAc;AAC5B,wBAAA,IAAI,EAAE,cAAc;AACpB,wBAAA,kBAAkB,EAAE;AACvB,qBAAA;oBACD,SAAS,EAAE,CAAC,cAAc,CAAC;oBAC3B,cAAc,EAAE,CAAC,IAAI;AACxB,iBAAA;;sBA+CI,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;sBAahC,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;;;ACtCvC,MAAO,UAAW,SAAQ,aAAa,CAAA;IACzC,QAAQ,GAAG,WAAW;AAEtB,IAAA,KAAK,GAAG,KAAK;yFAAU;AAEvB,IAAA,aAAa,GAAG,KAAK;iGAAU;AAE/B,IAAA,YAAY,GAAG,KAAK;gGAAU;IAE9B,SAAS,GAAG,MAAM,CAAqB,SAAS;kFAAC;AAEjD,IAAA,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC;AAExC,IAAA,EAAE,GAAG,MAAM,CAAY,kBAAkB,CAAC;AAE1C,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,MAAK;YACvE,IAAI,CAAC,eAAe,EAAE;AAC1B,QAAA,CAAC,CAAC;IACN;IAEA,MAAM,GAAA;QACF,IAAI,CAAC,eAAe,EAAE;IAC1B;AAEA,IAAA,OAAO,CAAC,KAAY,EAAA;QAChB,KAAK,CAAC,cAAc,EAAE;IAC1B;IAEA,qBAAqB,GAAA;AACjB,QAAA,IAAI,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,cAAc;AAC1C,QAAA,IAAI,KAAK,GAAG,CAAC,CAAC;AAEd,QAAA,IAAI,aAAa,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,UAAU,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AAChF,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3C,gBAAA,IAAI,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC;gBAC3B,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE,EAAE;oBAC7B,KAAK,GAAG,CAAC;oBACT;gBACJ;YACJ;QACJ;AAEA,QAAA,OAAO,KAAK;IAChB;IAEA,eAAe,GAAA;QACX,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,QAAQ,EAAE;AACjC,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAS,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,GAAG,CAAC,CAAC;QACvF;aAAO,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,UAAU,EAAE;AAC1C,YAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAS,IAAI,CAAC,KAAK,EAAE,CAAC;AACxD,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;QACrD;IACJ;IAEA,aAAa,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,qBAAqB,EAAE,GAAG,CAAC;IAC3C;IAEA,aAAa,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,UAAU,IAAI,IAAI,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;IACjF;uGA9DS,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAFR,CAAC,cAAc,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAvBjB;;;;;;;;;;;;;;;;;;;;KAoBT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EArBS,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,IAAI,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,kKAAEC,OAAW,EAAA,QAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAEC,eAAmB,EAAA,QAAA,EAAA,yCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAEC,cAAkB,EAAA,QAAA,EAAA,uCAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FA0B1F,UAAU,EAAA,UAAA,EAAA,CAAA;kBA7BtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,+CAA+C;AACzD,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,CAAC,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAEF,OAAW,EAAEC,eAAmB,EAAEC,cAAkB,CAAC;AACpG,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;AAoBT,IAAA,CAAA;oBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,SAAS,EAAE,CAAC,cAAc;AAC7B,iBAAA;;;AC7BK,MAAO,iBAAkB,SAAQ,aAAa,CAAA;IAChD,QAAQ,GAAG,WAAW;IAEtB,yBAAyB,GAAG,KAAK,CAAC,SAAS,iGAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE7E,IAAA,OAAO;AAEP,IAAA,wBAAwB;AAExB,IAAA,yBAAyB;AAEzB,IAAA,uBAAuB;AAEvB,IAAA,EAAE,GAAG,MAAM,CAAY,kBAAkB,CAAC;IAE1C,eAAe,GAAA;AACX,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACpC,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;gBAClB,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,oBAAoB,CAAC;gBACrD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AAClD,gBAAA,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC;gBAC5E,IAAI,CAAC,OAAuB,CAAC,YAAY,CAAC,iBAAiB,EAAE,eAAe,CAAC;AAC9E,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC;gBAE9D,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChH;QACJ;IACJ;IAEA,kBAAkB,GAAA;QACd,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtH,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpH;IAEA,oBAAoB,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,yBAAyB,EAAE;YAChC,IAAI,CAAC,yBAAyB,EAAE;AAChC,YAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI;QACzC;AAEA,QAAA,IAAI,IAAI,CAAC,uBAAuB,EAAE;YAC9B,IAAI,CAAC,uBAAuB,EAAE;AAC9B,YAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI;QACvC;IACJ;AAEA,IAAA,WAAW,CAAC,KAAiB,EAAA;AACzB,QAAA,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC;QAClC,IAAI,CAAC,kBAAkB,EAAE;IAC7B;AAEA,IAAA,mBAAmB,CAAC,KAAiB,EAAA;AACjC,QAAA,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC;IACjC;AAEA,IAAA,iBAAiB,CAAC,KAAiB,EAAA;AAC/B,QAAA,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;QACvD,IAAI,CAAC,oBAAoB,EAAE;IAC/B;IAEA,SAAS,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,yBAAyB,EAAE,KAAK,IAAI;IACpD;IAEA,SAAS,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE;YAC/B,IAAI,CAAC,wBAAwB,EAAE;AAC/B,YAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI;QACxC;QAEA,IAAI,CAAC,oBAAoB,EAAE;IAC/B;uGAvES,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,yBAAA,EAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACCK,MAAO,mBAAoB,SAAQ,aAAa,CAAA;IAClD,QAAQ,GAAG,WAAW;IAEtB,2BAA2B,GAAG,KAAK,CAAC,SAAS,mGAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE/E,IAAA,iBAAiB;AAEjB,IAAA,gBAAgB;AAEhB,IAAA,iBAAiB;AAEjB,IAAA,iBAAiB;AAEjB,IAAA,iBAAiB;AAEjB,IAAA,EAAE,GAAG,MAAM,CAAY,kBAAkB,CAAC;IAE1C,eAAe,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YAClB,IAAI,CAAC,UAAU,EAAE;QACrB;IACJ;IAEA,UAAU,GAAA;AACN,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACpC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9G,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9G,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5G,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9G,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClH;IACJ;IAEA,YAAY,GAAA;AACR,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACpC,YAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBACxB,IAAI,CAAC,iBAAiB,EAAE;AACxB,gBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;YACjC;AAEA,YAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBACvB,IAAI,CAAC,gBAAgB,EAAE;AACvB,gBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;YAChC;AAEA,YAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBACxB,IAAI,CAAC,iBAAiB,EAAE;AACxB,gBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;YACjC;AAEA,YAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBACxB,IAAI,CAAC,iBAAiB,EAAE;AACxB,gBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;YACjC;QACJ;IACJ;AAEA,IAAA,WAAW,CAAC,KAAU,EAAA;QAClB,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,KAAK,UAAU,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,mCAAmC,CAAC;YAAE,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,GAAG,KAAK;;YAClL,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI;IAC/C;AAEA,IAAA,WAAW,CAAC,KAAgB,EAAA;AACxB,QAAA,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;IAC3D;AAEA,IAAA,UAAU,CAAC,KAAgB,EAAA;QACvB,KAAK,CAAC,cAAc,EAAE;IAC1B;AAEA,IAAA,WAAW,CAAC,KAAgB,EAAA;AACxB,QAAA,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;IAC3D;AAEA,IAAA,WAAW,CAAC,KAAgB,EAAA;AACxB,QAAA,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC;IACpC;AAGA,IAAA,MAAM,CAAC,KAAgB,EAAA;AACnB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AAClB,YAAA,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;QACtD;IACJ;IAEA,SAAS,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,2BAA2B,EAAE,KAAK,IAAI;IACtD;IAEA,SAAS,GAAA;QACL,IAAI,CAAC,YAAY,EAAE;IACvB;uGA3FS,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,2BAAA,EAAA,EAAA,iBAAA,EAAA,6BAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBA+EI,YAAY;uBAAC,MAAM,EAAE,CAAC,QAAQ,CAAC;;;ACzE9B,MAAO,eAAgB,SAAQ,aAAa,CAAA;IAC9C,OAAO,GAAG,KAAK,CAAM,SAAS,+EAAI,KAAK,EAAE,iBAAiB,EAAA,CAAG;IAE7D,uBAAuB,GAAG,KAAK,CAAC,SAAS,+FAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAE3E,QAAQ,GAAG,MAAM,CAAsB,SAAS;iFAAC;AAEjD,IAAA,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC;AAExC,IAAA,EAAE,GAAG,MAAM,CAAY,kBAAkB,CAAC;AAE1C,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,MAAK;AAC5E,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;AAC/D,QAAA,CAAC,CAAC;IACN;IAEA,MAAM,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AAClB,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;QAC/D;IACJ;AAGA,IAAA,OAAO,CAAC,KAAY,EAAA;AAChB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AAClB,YAAA,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC;AACnB,gBAAA,aAAa,EAAE,KAAK;AACpB,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO;AACxB,aAAA,CAAC;QACN;IACJ;AAEA;;;AAGG;AACH,IAAA,IAAI,YAAY,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,IAAI;IACtC;AAGA,IAAA,SAAS,CAAC,KAAoB,EAAA;;;;QAI1B,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,EAAE,EAAE,aAAa,EAAE;YACzC;QACJ;AAEA,QAAA,QAAQ,KAAK,CAAC,IAAI;AACd,YAAA,KAAK,OAAO;AACZ,YAAA,KAAK,OAAO;AACR,gBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;gBACtB;AAEJ,YAAA,KAAK,KAAK;AACN,gBAAA,IAAI,KAAK,CAAC,QAAQ,EAAE;AAChB,oBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;gBAC7B;gBACA;AAEJ,YAAA;gBACI;;IAEZ;AAEA;;;;;;AAMG;AACK,IAAA,aAAa,CAAC,KAAoB,EAAA;QACtC,IAAI,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,sBAA4C;QACjF,OAAO,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE;AACzD,YAAA,OAAO,GAAG,OAAO,CAAC,sBAA4C;QAClE;QAEA,IAAI,OAAO,EAAE;YACT,OAAO,CAAC,KAAK,EAAE;YACf,KAAK,CAAC,cAAc,EAAE;QAC1B;IACJ;AAGA,IAAA,UAAU,CAAC,KAAY,EAAA;AACnB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AAClB,YAAA,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC;QACpC;IACJ;AAEA,IAAA,UAAU,CAAC,KAAK,EAAA;QACZ,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,KAAK,UAAU,EAAE;AACxC,YAAA,IAAI,CAAC,EAAE,CAAC,sBAAsB,CAAC;AAC3B,gBAAA,aAAa,EAAE,KAAK;AACpB,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO;AACxB,aAAA,CAAC;QACN;aAAO;AACH,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QACvB;QACA,KAAK,CAAC,cAAc,EAAE;IAC1B;IAEA,SAAS,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,uBAAuB,EAAE,KAAK,IAAI;IAClD;uGA5GS,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,iBAAA,EAAA,yBAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,cAAA,EAAA,EAAA,EAAA,SAAA,EAFb,CAAC,cAAc,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAElB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAV3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACF,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,sBAAsB,EAAE,YAAY;AACpC,wBAAA,iBAAiB,EAAE;AACtB,qBAAA;oBACD,SAAS,EAAE,CAAC,cAAc;AAC7B,iBAAA;;sBAyBI,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;sBAkBhC,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;sBA6ClC,YAAY;uBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC;;;ACzFlC,MAAO,uBAAwB,SAAQ,aAAa,CAAA;IACtD,OAAO,GAAG,KAAK,CAAM,SAAS,+EAAI,KAAK,EAAE,yBAAyB,EAAA,CAAG;IAErE,uBAAuB,GAAG,KAAK,CAAC,SAAS,+FAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAE3E,QAAQ,GAAG,MAAM,CAAsB,SAAS;iFAAC;AAEjD,IAAA,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC;AAExC,IAAA,EAAE,GAAG,MAAM,CAAY,kBAAkB,CAAC;AAE1C,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,MAAK;AAC5E,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;AAC/D,QAAA,CAAC,CAAC;IACN;IAEA,MAAM,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AAClB,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;QAC/D;IACJ;AAGA,IAAA,OAAO,CAAC,KAAY,EAAA;AAChB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AAClB,YAAA,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC;AACnB,gBAAA,aAAa,EAAE,KAAK;AACpB,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO;AACxB,aAAA,CAAC;QACN;IACJ;IAEA,SAAS,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,uBAAuB,EAAE,KAAK,IAAI;IAClD;uGApCS,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,iBAAA,EAAA,yBAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EAFrB,CAAC,cAAc,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAElB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBARnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACF,wBAAA,SAAS,EAAE;AACd,qBAAA;oBACD,SAAS,EAAE,CAAC,cAAc;AAC7B,iBAAA;;sBAyBI,YAAY;uBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC;;;ACvBlC,MAAO,gBAAiB,SAAQ,aAAa,CAAA;IAC/C,OAAO,GAAG,KAAK,CAAM,SAAS,+EAAI,KAAK,EAAE,kBAAkB,EAAA,CAAG;IAE9D,wBAAwB,GAAG,KAAK,CAAC,SAAS,gGAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAE5E,QAAQ,GAAG,MAAM,CAAsB,SAAS;iFAAC;AAEjD,IAAA,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC;AAExC,IAAA,EAAE,GAAG,MAAM,CAAY,kBAAkB,CAAC;AAE1C,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAClF,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;AAChF,QAAA,CAAC,CAAC;IACN;AAGA,IAAA,aAAa,CAAC,KAAY,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AAClB,YAAA,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC;AACxB,gBAAA,aAAa,EAAE,KAAK;AACpB,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO;AACxB,aAAA,CAAC;AAEF,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE;YAE7B,KAAK,CAAC,cAAc,EAAE;QAC1B;IACJ;AAEA,IAAA,IAAI,YAAY,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,SAAS;IAC3C;IAEA,SAAS,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,wBAAwB,EAAE,KAAK,IAAI;IACnD;uGAtCS,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,EAAA,EAAA,SAAA,EAFd,CAAC,cAAc,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAElB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAT5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACF,wBAAA,SAAS,EAAE,sBAAsB;AACjC,wBAAA,YAAY,EAAE;AACjB,qBAAA;oBACD,SAAS,EAAE,CAAC,cAAc;AAC7B,iBAAA;;sBAmBI,YAAY;uBAAC,aAAa,EAAE,CAAC,QAAQ,CAAC;;;ACJrC,MAAO,UAAW,SAAQ,aAAa,CAAA;IACzC,QAAQ,GAAG,WAAW;IAEtB,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAExD,OAAO,GAAG,KAAK,CAAM,SAAS,+EAAI,KAAK,EAAE,OAAO,EAAA,CAAG;IAEnD,OAAO,GAAG,MAAM,CAAsB,SAAS;gFAAC;IAEhD,cAAc,GAAG,MAAM,CAAsB,SAAS;uFAAC;AAEvD,IAAA,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC;AAExC,IAAA,EAAE,GAAG,MAAM,CAAY,kBAAkB,CAAC;AAE1C,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,MAAK;AAC5E,YAAA,IAAI,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE;AACxB,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;AAC9D,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;YAChF;iBAAO;AACH,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;AAC1D,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,eAAe,CAAC;YAClE;AACJ,QAAA,CAAC,CAAC;IACN;IAEA,MAAM,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE;AACxB,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;AAC9D,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;QAChF;aAAO;AACH,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;AAC1D,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,eAAe,CAAC;QAClE;IACJ;AAEA,IAAA,OAAO,CAAC,KAA0B,EAAA;AAC9B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AAClB,YAAA,IAAI,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE;AACxB,gBAAA,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE;AAC9B,gBAAA,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC;AACnB,oBAAA,aAAa,EAAE,KAAK;AACpB,oBAAA,KAAK,EAAE,MAAM;AACb,oBAAA,OAAO,EAAE,IAAI,CAAC,OAAO;AACxB,iBAAA,CAAC;YACN;iBAAO;AACH,gBAAA,IAAI,CAAC,EAAE,CAAC,sBAAsB,CAAC;AAC3B,oBAAA,aAAa,EAAE,KAAK;AACpB,oBAAA,OAAO,EAAE,IAAI,CAAC,OAAO;AACxB,iBAAA,CAAC;YACN;QACJ;AACA,QAAA,cAAc,EAAE;IACpB;uGAvDS,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAFR,CAAC,cAAc,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXjB;;;;;;;;AAQT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EATS,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,QAAQ,qVAAE,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FActD,UAAU,EAAA,UAAA,EAAA,CAAA;kBAjBtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,6CAA6C;AACvD,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,gBAAgB,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC;AAChE,oBAAA,QAAQ,EAAE;;;;;;;;AAQT,IAAA,CAAA;oBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,SAAS,EAAE,CAAC,cAAc;AAC7B,iBAAA;;;ACDK,MAAO,gBAAiB,SAAQ,aAAa,CAAA;IAC/C,OAAO,GAAG,MAAM,CAAsB,SAAS;gFAAC;AAEhD,IAAA,EAAE,GAAG,MAAM,CAAY,kBAAkB,CAAC;AAE1C,IAAA,IAAI,UAAU,GAAA;AACV,QAAA,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;IACvD;AAEA,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,MAAK;YAC3E,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC/C,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,MAAK;YAC5E,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC/C,QAAA,CAAC,CAAC;IACN;IAEA,MAAM,GAAA;QACF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC/C;AAEA,IAAA,OAAO,CAAC,KAA0B,EAAA;QAC9B,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,IAAI,IAAI,CAAC,EAAE,EAAE,aAAa,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,EAAE,aAAa,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE;AAC9J,YAAA,IAAI,CAAC,EAAE,EAAE,uBAAuB,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5D;AAEA,QAAA,cAAc,EAAE;IACpB;IAEA,kBAAkB,GAAA;AACd,QAAA,IAAI,OAAiB;AACrB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK;QAEnD,IAAI,IAAI,EAAE;AACN,YAAA,IAAI,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE;AACxB,gBAAA,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE;oBACnB,IAAI,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;wBAC9B,OAAO,GAAG,IAAI;oBAClB;yBAAO;wBACH,OAAO,GAAG,KAAK;wBACf;oBACJ;gBACJ;YACJ;AACA,YAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE;;AAEzB,gBAAA,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE;oBACnB,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;wBAC1B,OAAO,GAAG,IAAI;oBAClB;yBAAO;wBACH,OAAO,GAAG,KAAK;wBACf;oBACJ;gBACJ;YACJ;QACJ;aAAO;YACH,OAAO,GAAG,KAAK;QACnB;AAEA,QAAA,OAAO,OAAO;IAClB;uGA/DS,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAZf;;;;;;;;AAQT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EATS,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,QAAQ,qVAAE,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAatD,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAhB5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,wDAAwD;AAClE,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,gBAAgB,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC;AAChE,oBAAA,QAAQ,EAAE;;;;;;;;AAQT,IAAA,CAAA;oBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC;AAC5C,iBAAA;;;ACjBK,MAAO,gBAAiB,SAAQ,aAAa,CAAA;IAC/C,IAAI,GAAG,KAAK,CAAM,SAAS,4EAAI,KAAK,EAAE,kBAAkB,EAAA,CAAG;IAE3D,KAAK,GAAG,KAAK,CAAM,SAAS,6EAAI,KAAK,EAAE,uBAAuB,EAAA,CAAG;IAEjE,wBAAwB,GAAG,KAAK,CAAC,SAAS,gGAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE5E,IAAA,EAAE,GAAG,MAAM,CAAY,kBAAkB,CAAC;IAE1C,eAAe,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AAClB,YAAA,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,mBAAmB,CAAC;YACzE,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,YAAY,CAAC,wBAAwB,EAAE,MAAM,CAAC;QACzE;IACJ;AAGA,IAAA,OAAO,CAAC,KAAiB,EAAA;AACrB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YAClB,IAAI,CAAC,WAAW,EAAE;QACtB;IACJ;AAEA;;;;;;AAMG;IACH,iBAAiB,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;YACnB;QACJ;QAEA,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,UAAU,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,gBAAgB,GAAG,KAAK,CAAC,CAAC;IACxD;IAEQ,WAAW,GAAA;AACf,QAAA,IAAI,CAAC,EAAE,CAAC,gBAAgB,GAAG,IAAI;AAE/B,QAAA,IAAI,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,IAAI,CAAC,EAAE,CAAC,WAAW,KAAK,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;gBAC/C,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAkB,EAAE,EAAE;oBAC/B;gBACJ;AAEA,gBAAA,IAAI,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE;AACrB,oBAAA,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,gBAAgB,CAAC;;;oBAGvE,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,YAAY,CAAC,qBAAqB,EAAE,OAAO,CAAC;gBACpE;gBACA,IAAI,CAAC,QAAQ,EAAE;YACnB;QACJ;aAAO;YACH,IAAI,CAAC,QAAQ,EAAE;QACnB;IACJ;IAEA,QAAQ,GAAA;QACJ,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;AAC3E,QAAA,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,gBAAgB,CAAC;QACtE,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,YAAY,CAAC,qBAAqB,EAAE,MAAM,CAAC;QAClE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;AACnE,QAAA,IAAI,CAAC,EAAE,CAAC,gBAAgB,GAAG,IAAI;QAC/B,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,SAAS,GAAQ,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,iBAAiB,CAAC;YACzE,IAAI,SAAS,EAAE;gBACX,SAAS,CAAC,KAAK,EAAE;YACrB;QACJ,CAAC,EAAE,EAAE,CAAC;IACV;IAEA,gBAAgB,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,EAAE,CAAC,WAAW;AAAE,YAAA,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,gBAAgB,CAAC;AAChG,QAAA,IAAI,CAAC,EAAE,CAAC,WAAW,GAAG,IAAI;AAC1B,QAAA,IAAI,CAAC,EAAE,CAAC,0BAA0B,EAAE;IACxC;AAEA;;;;;;AAMG;IACK,iBAAiB,GAAG,KAAK;IAEjC,0BAA0B,GAAA;AACtB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB;AACzC,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;AAC9B,QAAA,OAAO,UAAU;IACrB;IAEQ,eAAe,GAAA;AACnB,QAAA,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,EAAE,gDAAgD,CAAuB;QACvH,IAAI,IAAI,EAAE;AACN,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;YAC7B,IAAI,CAAC,KAAK,EAAE;QAChB;IACJ;AAGA,IAAA,SAAS,CAAC,KAAoB,EAAA;;;;AAI1B,QAAA,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,MAAM,YAAY,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;QACnH,IAAI,CAAC,OAAO,EAAE;YACV;QACJ;AAEA,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;;YAElB,IAAI,KAAK,CAAC,OAAO,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AACxC,gBAAA,IAAI,IAAI,CAAC,EAAE,CAAC,kBAAkB,EAAE,EAAE;AAC9B,oBAAA,IAAI,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE;AACrB,wBAAA,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,gBAAgB,CAAC;wBACvE,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,YAAY,CAAC,qBAAqB,EAAE,OAAO,CAAC;oBACvE;oBACA,IAAI,CAAC,gBAAgB,EAAE;oBACvB,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;oBACvE,IAAI,CAAC,eAAe,EAAE;gBAC1B;gBAEA,KAAK,CAAC,cAAc,EAAE;YAC1B;;AAGK,iBAAA,IAAI,KAAK,CAAC,OAAO,IAAI,EAAE,EAAE;AAC1B,gBAAA,IAAI,IAAI,CAAC,EAAE,CAAC,kBAAkB,EAAE,EAAE;AAC9B,oBAAA,IAAI,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE;AACrB,wBAAA,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,gBAAgB,CAAC;wBACvE,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,YAAY,CAAC,qBAAqB,EAAE,OAAO,CAAC;oBACvE;oBACA,IAAI,CAAC,gBAAgB,EAAE;oBACvB,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;oBACrE,IAAI,CAAC,eAAe,EAAE;gBAC1B;gBAEA,KAAK,CAAC,cAAc,EAAE;YAC1B;;;;;;QAOJ;IACJ;AAEA;;;;;;AAMG;AAEH,IAAA,UAAU,CAAC,KAAiB,EAAA;AACxB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,aAAa;QACnC,MAAM,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,KAAK,IAAI;AACpD,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa;AAElC,QAAA,IAAI,CAAC,eAAe,IAAI,EAAE,MAAM,YAAY,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YACxE;QACJ;AAEA,QAAA,IAAI,IAAI,CAAC,EAAE,CAAC,kBAAkB,EAAE,EAAE;YAC9B,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,gBAAgB,CAAC;AACxD,YAAA,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE,OAAO,CAAC;YACjD,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QAC3E;IACJ;IAEA,SAAS,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,wBAAwB,EAAE,KAAK,IAAI;IACnD;uGApLS,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAiBI,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;sBAwFhC,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;sBAwDlC,YAAY;uBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC;;;AChJlC,MAAO,mBAAoB,SAAQ,aAAa,CAAA;IAClD,QAAQ,GAAG,WAAW;IAEtB,qBAAqB,GAAG,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAEpD,kBAAkB,GAAA;AACd,QAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC/D;AAEA;;;;;AAKG;AACH,IAAA,IAAI,YAAY,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,IAAI;IACrD;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,0BAA0B,EAAE,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE;YACtG;QACJ;AAEA,QAAA,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE;IAC3C;IAEA,aAAa,GAAG,YAAY,CAAmB,OAAO,qFAAI,WAAW,EAAE,KAAK,EAAA,CAAG;IAE/E,cAAc,GAAG,YAAY,CAAmB,QAAQ,sFAAI,WAAW,EAAE,KAAK,EAAA,CAAG;AAEjF,IAAA,EAAE,GAAG,MAAM,CAAY,kBAAkB,CAAC;AAE1C,IAAA,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAEzC,IAAA,IAAI,OAAO,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,EAAE,CAAC,WAAW,KAAK,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,aAAa;IACvE;uGArCS,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gDAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,cAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAdlB;;;;;;AAMT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAPS,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAejB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAlB/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gDAAgD;AAC1D,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,gBAAgB,CAAC;AAC3B,oBAAA,QAAQ,EAAE;;;;;;AAMT,IAAA,CAAA;oBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,IAAI,EAAE;AACF,wBAAA,iBAAiB,EAAE,cAAc;AACjC,wBAAA,SAAS,EAAE;AACd,qBAAA;oBACD,cAAc,EAAE,CAAC,IAAI;AACxB,iBAAA;AA4BkD,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,OAAO,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAE9B,QAAQ,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACnC9E,MAAO,KAAM,SAAQ,aAAa,CAAA;IACpC,QAAQ,GAAG,WAAW;IAEtB,qBAAqB,GAAG,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAEpD,IAAA,EAAE,GAAG,MAAM,CAAY,kBAAkB,CAAC;IAE1C,kBAAkB,GAAA;AACd,QAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IAC3E;AAEA,IAAA,IAAI,KAAK,GAAA;QACL,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IACxC;AAEA,IAAA,IAAI,SAAS,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACnE;AAEA,IAAA,IAAI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC;IAC3C;IAEA,OAAO,GAAG,KAAK,CAAM,SAAS,+EAAI,KAAK,EAAE,OAAO,EAAA,CAAG;AAEnD,IAAA,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC;AAGxC,IAAA,SAAS,CAAC,KAAoB,EAAA;;;;QAI1B,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;YACxC;QACJ;AAEA,QAAA,QAAQ,KAAK,CAAC,IAAI;AACd,YAAA,KAAK,WAAW;AACZ,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;gBAC1B;AAEJ,YAAA,KAAK,SAAS;AACV,gBAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;gBACxB;AAEJ,YAAA,KAAK,YAAY;AACb,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;gBAC3B;AAEJ,YAAA,KAAK,WAAW;AACZ,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;gBAC1B;AAEJ,YAAA,KAAK,MAAM;AACP,gBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;gBACrB;AAEJ,YAAA,KAAK,KAAK;AACN,gBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACpB;AAEJ,YAAA;gBACI;;IAEZ;AAEQ,IAAA,mBAAmB,CAAC,MAA0B,EAAA;AAClD,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,EAAE,WAAW;AACxC,QAAA,OAAO,CAAC,EAAE,WAAW,IAAI,MAAM,YAAY,IAAI,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACpF;AAEA,IAAA,cAAc,CAAC,KAAoB,EAAA;AAC/B,QAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;QAChC,KAAK,CAAC,cAAc,EAAE;IAC1B;AAEA,IAAA,YAAY,CAAC,KAAoB,EAAA;AAC7B,QAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC;QACpC,KAAK,CAAC,cAAc,EAAE;IAC1B;AAEA,IAAA,eAAe,CAAC,KAAoB,EAAA;QAChC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE;AAClG,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QACtB;QACA,KAAK,CAAC,cAAc,EAAE;IAC1B;AAEA,IAAA,cAAc,CAAC,KAAoB,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,EAAE,CAAC,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;AACxD,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YACpB,IAAI,CAAC,YAAY,EAAE;QACvB;QACA,KAAK,CAAC,cAAc,EAAE;IAC1B;AAEA,IAAA,SAAS,CAAC,KAAoB,EAAA;AAC1B,QAAA,MAAM,IAAI,GAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,EAAE,CAAA,eAAA,EAAkB,IAAI,CAAC,KAAK,CAAA,EAAA,CAAI,CAAC;AACnF,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACpB,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;YACvC,IAAI,OAAO,EAAE;gBACT,OAAO,CAAC,KAAK,EAAE;gBACf;YACJ;QACJ;QACA,KAAK,CAAC,cAAc,EAAE;IAC1B;AAEA,IAAA,QAAQ,CAAC,KAAoB,EAAA;AACzB,QAAA,MAAM,IAAI,GAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,EAAE,CAAA,eAAA,EAAkB,IAAI,CAAC,KAAK,CAAA,EAAA,CAAI,CAAC;AACnF,QAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YACvC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3C,IAAI,OAAO,EAAE;gBACT,OAAO,CAAC,KAAK,EAAE;gBACf;YACJ;QACJ;QACA,KAAK,CAAC,cAAc,EAAE;IAC1B;AAEA,IAAA,MAAM,CAAC,KAAY,EAAA;AACf,QAAA,IAAI,CAAC,EAAE,CAAC,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;QACxD,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI;AAEtC,QAAA,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE;AAC/B,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;QAC9C,IAAI,CAAC,YAAY,EAAE;AAEnB,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC;AACtB,YAAA,aAAa,EAAE,KAAK;AACpB,YAAA,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACxB,SAAA,CAAC;IACN;AAEA,IAAA,QAAQ,CAAC,KAAY,EAAA;QACjB,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK;AAEvC,QAAA,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE;AAC/B,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;QAE9C,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC;IACpF;AAEA;;;;AAIG;AACK,IAAA,aAAa,CAAC,GAA+B,EAAA;AACjD,QAAA,IAAI,CAAC,GAAG;AAAE,YAAA,OAAO,IAAI;QACrB,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,EAAE,qCAAqC,CAAuB;AAC3F,QAAA,OAAO,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,KAAK,QAAQ,GAAG,MAAM,GAAG,IAAI;IACzE;AAEQ,IAAA,mBAAmB,CAAC,SAA8B,EAAA;QACtD,IAAI,OAAO,GAAG,SAAS,KAAK,MAAM,GAAG,IAAI,CAAC,EAAE,EAAE,aAAa,EAAE,kBAAkB,GAAG,IAAI,CAAC,EAAE,EAAE,aAAa,EAAE,sBAAsB;QAChI,OAAO,OAAO,EAAE;YACZ,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;YAC3C,IAAI,OAAO,EAAE;gBACT,OAAO,CAAC,KAAK,EAAE;gBACf;YACJ;AACA,YAAA,OAAO,GAAG,SAAS,KAAK,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,OAAO,CAAC,sBAAsB;QAChG;IACJ;;IAGA,YAAY,GAAA;QACR,UAAU,CAAC,MAAK;AACZ,YAAA,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,EAAE,2BAA2B,CAAC;AAChF,YAAA,MAAM,GAAG,GAAG,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,cAAc,IAAI,CAAC,CAAwB;YACjF,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;YACvC,OAAO,EAAE,KAAK,EAAE;QACpB,CAAC,EAAE,EAAE,CAAC;IACV;IAEA,UAAU,GAAA;QACN,OAAO;AACH,YAAA,OAAO,EAAE;AACL,gBAAA,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AAC5D,gBAAA,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAO,IAAI,CAAC,OAAO,EAAG,EAAE,IAAI,CAAC;AACzD,gBAAA,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE;AACjC,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO;AACxB;SACJ;IACL;uGA1LS,KAAK,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAL,KAAK,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,KAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,EAAA,EAAA,SAAA,EAHH,CAAC,cAAc,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAGlB,KAAK,EAAA,UAAA,EAAA,CAAA;kBAZjB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,SAAS;AACnB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACF,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,sBAAsB,EAAE,UAAU;AAClC,wBAAA,mBAAmB,EAAE,OAAO;AAC5B,wBAAA,IAAI,EAAE;AACT,qBAAA;oBACD,SAAS,EAAE,CAAC,cAAc,CAAC;oBAC3B,cAAc,EAAE,CAAC,IAAI;AACxB,iBAAA;;sBA4BI,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;ACLjC,MAAO,gBAAiB,SAAQ,aAAa,CAAA;IAC/C,QAAQ,GAAG,WAAW;IAEtB,qBAAqB,GAAG,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAEpD,kBAAkB,GAAA;AACd,QAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC5D;AAEA,IAAA,OAAO,GAAG,KAAK;2FAAO;AAEtB,IAAA,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC;AAExC,IAAA,EAAE,GAAG,MAAM,CAAY,kBAAkB,CAAC;AAE1C,IAAA,IAAI,kBAAkB,GAAA;AAClB,QAAA,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACxD;AAEA,IAAA,IAAI,iBAAiB,GAAA;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI;QACjC,OAAO,IAAI,EAAE,IAAI,KAAK,KAAK,KAAK,IAAI,EAAE,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,QAAQ;IAClG;AAEA,IAAA,IAAI,kBAAkB,GAAA;QAClB,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,GAAG,EAAE,GAAG,IAAI;IAC5C;AAEA,IAAA,IAAI,qBAAqB,GAAA;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,SAAS,IAAI,SAAS;IACnK;AAEA,IAAA,OAAO,CAAC,KAAY,EAAA;;;;AAIhB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC;AAChD,QAAA,MAAM,KAAK,GAAG,GAAG,EAAE,aAAa;QAChC,MAAM,QAAQ,GAAG,GAAG,IAAI,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAEtF,QAAA,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,QAAQ;QAC5D,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;QAE5E,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC9B,YAAA,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC;AACtB,gBAAA,aAAa,EAAE,KAAK;AACpB,gBAAA,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACxB,aAAA,CAAC;QACN;aAAO;AACH,YAAA,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC;AACxB,gBAAA,aAAa,EAAE,KAAK;AACpB,gBAAA,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACxB,aAAA,CAAC;QACN;AAEA,QAAA,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE;AAC/B,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AAE9C,QAAA,IAAI,QAAQ,IAAI,CAAC,EAAE;YACf,UAAU,CAAC,MAAK;gBACZ,MAAM,MAAM,GAAG,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAC;gBAC1C,MAAM,OAAO,GAAG,MAAM,EAAE,aAAa,CAAC,qCAAqC,CAAuB;gBAClG,IAAI,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,QAAQ,EAAE;oBAClD,OAAO,CAAC,KAAK,EAAE;gBACnB;YACJ,CAAC,EAAE,EAAE,CAAC;QACV;QAEA,KAAK,CAAC,cAAc,EAAE;IAC1B;uGArES,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAHd,CAAC,cAAc,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAxBjB;;;;;;;;;;;;;;;;;;;;;;KAsBT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAvBS,gBAAgB,oJAAE,IAAI,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,MAAM,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAEC,WAAe,8EAAEC,YAAgB,EAAA,QAAA,EAAA,oCAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FA4BlE,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBA/B5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,yCAAyC;AACnD,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAED,WAAe,EAAEC,YAAgB,CAAC;AAC5E,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;AAsBT,IAAA,CAAA;oBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,SAAS,EAAE,CAAC,cAAc,CAAC;oBAC3B,cAAc,EAAE,CAAC,IAAI;AACxB,iBAAA;;;MCkBY,eAAe,CAAA;uGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YArCpB,SAAS;YACT,MAAM;YACN,gBAAgB;YAChB,gBAAgB;YAChB,UAAU;YACV,iBAAiB;YACjB,KAAK;YACL,mBAAmB;YACnB,eAAe;YACf,uBAAuB;YACvB,gBAAgB;YAChB,UAAU;YACV,gBAAgB;YAChB,gBAAgB;YAChB,mBAAmB;YACnB,gBAAgB;AAChB,YAAA,QAAQ,aAGR,SAAS;YACT,YAAY;YACZ,gBAAgB;YAChB,gBAAgB;YAChB,UAAU;YACV,iBAAiB;YACjB,KAAK;YACL,mBAAmB;YACnB,eAAe;YACf,uBAAuB;YACvB,gBAAgB;YAChB,UAAU;YACV,gBAAgB;YAChB,gBAAgB;YAChB,mBAAmB;YACnB,QAAQ,CAAA,EAAA,CAAA;AAGH,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YArCpB,SAAS;YAET,gBAAgB;YAEhB,UAAU;YAOV,UAAU;YACV,gBAAgB;YAGhB,gBAAgB;AAChB,YAAA,QAAQ,EAIR,YAAY,CAAA,EAAA,CAAA;;2FAiBP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAvC3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,SAAS;wBACT,MAAM;wBACN,gBAAgB;wBAChB,gBAAgB;wBAChB,UAAU;wBACV,iBAAiB;wBACjB,KAAK;wBACL,mBAAmB;wBACnB,eAAe;wBACf,uBAAuB;wBACvB,gBAAgB;wBAChB,UAAU;wBACV,gBAAgB;wBAChB,gBAAgB;wBAChB,mBAAmB;wBACnB,gBAAgB;wBAChB;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,SAAS;wBACT,YAAY;wBACZ,gBAAgB;wBAChB,gBAAgB;wBAChB,UAAU;wBACV,iBAAiB;wBACjB,KAAK;wBACL,mBAAmB;wBACnB,eAAe;wBACf,uBAAuB;wBACvB,gBAAgB;wBAChB,UAAU;wBACV,gBAAgB;wBAChB,gBAAgB;wBAChB,mBAAmB;wBACnB;AACH;AACJ,iBAAA;;;AC1DD;;AAEG;;;;"}
1
+ {"version":3,"file":"primeng-treetable.mjs","names":["i1","SpinnerIcon","ArrowDownIcon","ArrowUpIcon","i1","i1","SortAltIcon","SortAmountUpAltIcon","SortAmountDownIcon","i1","i1","i1","ChevronDownIcon","ChevronRightIcon"],"sources":["../../src/treetable/style/treetablestyle.ts","../../src/treetable/treetable-service.ts","../../src/treetable/treetable-body.ts","../../src/treetable/treetable-scrollable-view.ts","../../src/treetable/treetable.ts","../../src/treetable/sortable-column.ts","../../src/treetable/sort-icon.ts","../../src/treetable/resizable-column.ts","../../src/treetable/reorderable-column.ts","../../src/treetable/selectable-row.ts","../../src/treetable/selectable-row-dbl-click.ts","../../src/treetable/context-menu-row.ts","../../src/treetable/treetable-checkbox.ts","../../src/treetable/treetable-header-checkbox.ts","../../src/treetable/editable-column.ts","../../src/treetable/cell-editor.ts","../../src/treetable/treetable-row.ts","../../src/treetable/treetable-toggler.ts","../../src/treetable/treetable.module.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { BaseStyle } from 'primeng/base';\n\nconst style = /*css*/ `\n/* For PrimeNG */\n.p-treetable {\n position: relative;\n}\n\n.p-treetable table {\n border-collapse: collapse;\n width: 100%;\n table-layout: fixed;\n}\n\n.p-treetable .p-sortable-column {\n cursor: pointer;\n user-select: none;\n}\n\n.p-treetable .p-sortable-column .p-column-title,\n.p-treetable .p-sortable-column .p-sortable-column-icon,\n.p-treetable .p-sortable-column .p-sortable-column-badge {\n vertical-align: middle;\n}\n\n.p-treetable-sort-icon {\n color: dt('treetable.sort.icon.color');\n font-size: dt('treetable.sort.icon.size');\n width: dt('treetable.sort.icon.size');\n height: dt('treetable.sort.icon.size');\n transition: color dt('treetable.transition.duration');\n}\n\n.p-treetable .p-sortable-column .p-sortable-column-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.p-treetable-auto-layout>.p-treetable-wrapper {\n overflow-x: auto;\n}\n\n.p-treetable-auto-layout>.p-treetable-wrapper>table {\n table-layout: auto;\n}\n\n.p-treetable-hoverable-rows .p-treetable-tbody>tr {\n cursor: pointer;\n}\n\n.p-treetable-toggler {\n cursor: pointer;\n user-select: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n vertical-align: middle;\n overflow: hidden;\n position: relative;\n}\n\n\n/* Scrollable */\n.p-treetable-scrollable-wrapper {\n position: relative;\n}\n\n.p-treetable-scrollable-header,\n.p-treetable-scrollable-footer {\n overflow: hidden;\n flex-shrink: 0;\n}\n\n.p-treetable-scrollable-body {\n overflow: auto;\n position: relative;\n}\n\n.p-treetable-virtual-table {\n position: absolute;\n}\n\n/* Frozen Columns */\n.p-treetable-frozen-view .p-treetable-scrollable-body {\n overflow: hidden;\n}\n\n.p-treetable-frozen-view>.p-treetable-scrollable-body>table>.p-treetable-tbody>tr>td:last-child {\n border-right: 0 none;\n}\n\n.p-treetable-unfrozen-view {\n position: absolute;\n top: 0;\n}\n\n/* Flex Scrollable */\n.p-treetable-flex-scrollable {\n display: flex;\n flex-direction: column;\n flex: 1;\n height: 100%;\n}\n\n.p-treetable-flex-scrollable .p-treetable-scrollable-wrapper,\n.p-treetable-flex-scrollable .p-treetable-scrollable-view {\n display: flex;\n flex-direction: column;\n flex: 1;\n height: 100%;\n}\n\n.p-treetable-flex-scrollable .p-treetable-virtual-scrollable-body {\n flex: 1;\n}\n\n/* Resizable */\n.p-treetable-resizable>.p-treetable-wrapper {\n overflow-x: auto;\n}\n\n.p-treetable-resizable .p-treetable-thead>tr>th,\n.p-treetable-resizable .p-treetable-tfoot>tr>td,\n.p-treetable-resizable .p-treetable-tbody>tr>td {\n overflow: hidden;\n}\n\n.p-treetable-resizable .p-resizable-column {\n background-clip: padding-box;\n position: relative;\n}\n\n.p-treetable-resizable-fit .p-resizable-column:last-child .p-column-resizer {\n display: none;\n}\n\n.p-treetable .p-column-resizer {\n display: block;\n position: absolute;\n top: 0;\n right: 0;\n margin: 0;\n width: dt('treetable.column.resizer.width');\n height: 100%;\n padding: 0px;\n cursor: col-resize;\n border: 1px solid transparent;\n}\n\n.p-treetable .p-column-resizer-helper {\n width: dt('treetable.resize.indicator.width');\n position: absolute;\n z-index: 10;\n display: none;\n background: dt('treetable.resize.indicator.color');\n}\n\n.p-treetable .p-row-editor-init,\n.p-treetable .p-row-editor-save,\n.p-treetable .p-row-editor-cancel {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n position: relative;\n}\n\n\n/* Reorder */\n.p-treetable-reorder-indicator-up,\n.p-treetable-reorder-indicator-down {\n position: absolute;\n display: none;\n}\n\n[ttReorderableColumn] {\n cursor: move;\n}\n\n/* Loader */\n.p-treetable-mask {\n position: absolute !important;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 2;\n}\n\n.p-treetable-loading-icon {\n font-size: dt('treetable.loading.icon.size');\n width: dt('treetable.loading.icon.size');\n height: dt('treetable.loading.icon.size');\n}\n\n/* Virtual Scroll */\n.p-treetable .p-scroller-loading {\n transform: none !important;\n min-height: 0;\n position: sticky;\n top: 0;\n left: 0;\n}\n\n.p-treetable .p-paginator-top {\n border-color: dt('treetable.paginator.top.border.color');\n border-style: solid;\n border-width: dt('treetable.paginator.top.border.width');\n}\n\n.p-treetable .p-paginator-bottom {\n border-color: dt('treetable.paginator.bottom.border.color');\n border-style: solid;\n border-width: dt('treetable.paginator.bottom.border.width');\n}\n\n.p-treetable .p-treetable-header {\n background: dt('treetable.header.background');\n color: dt('treetable.header.color');\n border-color: dt('treetable.header.border.color');\n border-style: solid;\n border-width: dt('treetable.header.border.width');\n padding: dt('treetable.header.padding');\n font-weight: dt('treetable.column.title.font.weight');\n}\n\n.p-treetable .p-treetable-footer {\n background: dt('treetable.footer.background');\n color: dt('treetable.footer.color');\n border-color: dt('treetable.footer.border.color');\n border-style: solid;\n border-width: dt('treetable.footer.border.width');\n padding: dt('treetable.footer.padding');\n font-weight: dt('treetable.column.footer.font.weight');\n}\n\n.p-treetable .p-treetable-thead>tr>th {\n padding: dt('treetable.header.cell.padding');\n background: dt('treetable.header.cell.background');\n border-color: dt('treetable.header.cell.border.color');\n border-style: solid;\n border-width: 0 0 1px 0;\n color: dt('treetable.header.cell.color');\n font-weight: dt('treetable.column.title.font.weight');\n text-align: start;\n transition: background dt('treetable.transition.duration'), color dt('treetable.transition.duration'), border-color dt('treetable.transition.duration'),\n outline-color dt('treetable.transition.duration'), box-shadow dt('treetable.transition.duration');\n}\n\n.p-treetable .p-treetable-tfoot>tr>td {\n text-align: start;\n padding: dt('treetable.footer.cell.padding');\n border-color: dt('treetable.footer.cell.border.color');\n border-style: solid;\n border-width: 0 0 1px 0;\n color: dt('treetable.footer.cell.color');\n background: dt('treetable.footer.cell.background');\n font-weight: dt('treetable.column.footer.font.weight');\n}\n\n.p-treetable .p-sortable-column {\n cursor: pointer;\n user-select: none;\n outline-color: transparent;\n vertical-align: middle;\n}\n\n.p-treetable .p-sortable-column .p-sortable-column-icon {\n color: dt('treetable.sort.icon.color');\n transition: color dt('treetable.transition.duration');\n}\n\n\n.p-treetable .p-sortable-column:not(.p-treetable-column-sorted):hover {\n background: dt('treetable.header.cell.hover.background');\n color: dt('treetable.header.cell.hover.color');\n}\n\n.p-treetable .p-sortable-column:not(.p-treetable-column-sorted):hover .p-treetable-sort-icon {\n color: dt('treetable.sort.icon.hover.color');\n}\n\n.p-treetable .p-sortable-column.p-treetable-column-sorted {\n background: dt('treetable.header.cell.selected.background');\n color: dt('treetable.header.cell.selected.color');\n}\n\n.p-treetable .p-sortable-column.p-treetable-column-sorted .p-treetable-sort-icon {\n color: dt('treetable.header.cell.selected.color');\n}\n\n.p-treetable .p-sortable-column:focus-visible {\n box-shadow: dt('treetable.header.cell.focus.ring.shadow');\n outline: dt('treetable.header.cell.focus.ring.width') dt('treetable.header.cell.focus.ring.style') dt('treetable.header.cell.focus.ring.color');\n outline-offset: dt('treetable.header.cell.focus.ring.offset');\n}\n\n.p-treetable-hoverable .p-treetable-selectable-row {\n cursor: pointer;\n}\n\n.p-treetable .p-treetable-tbody > tr {\n outline-color: transparent;\n background: dt('treetable.row.background');\n color: dt('treetable.row.color');\n}\n\n.p-treetable .p-treetable-tbody>tr>td {\n text-align: start;\n border-color: dt('treetable.body.cell.border.color');\n border-style: solid;\n border-width: 0 0 1px 0;\n padding: dt('treetable.body.cell.padding');\n font-weight: dt('treetable.body.cell.font.weight');\n font-size: dt('treetable.body.cell.font.size');\n}\n\n.p-treetable .p-treetable-tbody>tr>td .p-treetable-toggler {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n position: relative;\n width: dt('treetable.node.toggle.button.size');\n height: dt('treetable.node.toggle.button.size');\n color: dt('treetable.node.toggle.button.color');\n border: 0 none;\n background: transparent;\n cursor: pointer;\n border-radius: dt('treetable.node.toggle.button.border.radius');\n transition: background dt('treetable.transition.duration'), color dt('treetable.transition.duration'), border-color dt('treetable.transition.duration'),\n outline-color dt('treetable.transition.duration'), box-shadow dt('treetable.transition.duration');\n outline-color: transparent;\n user-select: none;\n}\n\n.p-treetable .p-treetable-tbody>tr>td .p-treetable-toggler:enabled:hover {\n color: dt('treetable.node.toggle.button.hover.color');\n background: dt('treetable.node.toggle.button.hover.background');\n}\n\n.p-treetable .p-treetable-tbody>tr>tr.treetable-row-selected .p-treetable-toggler:hover {\n background: dt('treetable.node.toggle.button.selected.hover.background');\n color: dt('treetable.node.toggle.button.selected.hover.color');\n}\n\n.p-treetable .p-treetable-tbody>tr>td .p-treetable-toggler:focus-visible {\n box-shadow: dt('treetable.node.toggle.button.focus.ring.shadow');\n outline: dt('treetable.node.toggle.button.focus.ring.width') dt('treetable.node.toggle.button.focus.ring.style') dt('treetable.node.toggle.button.focus.ring.color');\n outline-offset: dt('treetable.node.toggle.button.focus.ring.offset');\n}\n\n\n.p-treetable .p-treetable-tbody>tr.p-treetable-row-selected {\n background: dt('treetable.row.selected.background');\n color: dt('treetable.row.selected.color');\n}\n\n.p-treetable-tbody > tr:focus-visible,\n.p-treetable-tbody > tr.p-treetable-contextmenu-row-selected {\n box-shadow: dt('treetable.row.focus.ring.shadow');\n outline: dt('treetable.row.focus.ring.width') dt('treetable.row.focus.ring.style') dt('treetable.row.focus.ring.color');\n outline-offset: dt('treetable.row.focus.ring.offset');\n}\n\n.p-treetable .p-treetable-tbody>tr.p-treetable-row-selected .p-treetable-toggler {\n color: inherit;\n}\n\n.p-treetable .p-treetable-tbody>tr.p-treetable-row-selected .p-treetable-toggler:hover {\n background: dt('treetable.node.toggle.button.selected.hover.background');\n color: dt('treetable.node.toggle.button.selected.hover.color');\n}\n\n.p-treetable.p-treetable-hoverable-rows .p-treetable-tbody>tr:not(.p-treetable-row-selected):hover {\n background: dt('treetable.row.hover.background');\n color: dt('treetable.row.hover.color');\n}\n\n.p-treetable-gridlines .p-treetable-header {\n border-width: 1px 1px 0 1px;\n}\n\n.p-treetable-gridlines .p-treetable-footer {\n border-width: 0 1px 1px 1px;\n}\n\n.p-treetable-gridlines .p-treetable-paginator-top {\n border-width: 1px 1px 0 1px;\n}\n\n.p-treetable-gridlines .p-treetable-paginator-bottom {\n border-width: 0 1px 1px 1px;\n}\n\n.p-treetable-gridlines .p-treetable-thead > tr > th {\n border-width: 1px 0 1px 1px;\n}\n\n.p-treetable-gridlines .p-treetable-thead > tr > th:last-child {\n border-width: 1px;\n}\n\n.p-treetable-gridlines .p-treetable-tbody > tr > td {\n border-width: 1px 0 0 1px;\n}\n\n.p-treetable-gridlines .p-treetable-tbody > tr > td:last-child {\n border-width: 1px 1px 0 1px;\n}\n\n.p-treetable-gridlines .p-treetable-tbody > tr:last-child > td {\n border-width: 1px 0 1px 1px;\n}\n\n.p-treetable-gridlines .p-treetable-tbody > tr:last-child > td:last-child {\n border-width: 1px;\n}\n\n.p-treetable-gridlines .p-treetable-tfoot > tr > td {\n border-width: 1px 0 1px 1px;\n}\n\n.p-treetable-gridlines .p-treetable-tfoot > tr > td:last-child {\n border-width: 1px 1px 1px 1px;\n}\n\n.p-treetable.p-treetable-gridlines .p-treetable-thead + .p-treetable-tfoot > tr > td {\n border-width: 0 0 1px 1px;\n}\n\n.p-treetable.p-treetable-gridlines .p-treetable-thead + .p-treetable-tfoot > tr > td:last-child {\n border-width: 0 1px 1px 1px;\n}\n\n.p-treetable.p-treetable-gridlines:has(.p-treetable-thead):has(.p-treetable-tbody) .p-treetable-tbody > tr > td {\n border-width: 0 0 1px 1px;\n}\n\n.p-treetable.p-treetable-gridlines:has(.p-treetable-thead):has(.p-treetable-tbody) .p-treetable-tbody > tr > td:last-child {\n border-width: 0 1px 1px 1px;\n}\n\n.p-treetable.p-treetable-gridlines:has(.p-treetable-tbody):has(.p-treetable-tfoot > tr) .p-treetable-tbody > tr:last-child > td {\n border-width: 0 0 0 1px;\n}\n\n.p-treetable.p-treetable-gridlines:has(.p-treetable-tbody):has(.p-treetable-tfoot > tr) .p-treetable-tbody > tr:last-child > td:last-child {\n border-width: 0 1px 0 1px;\n}\n\n.p-treetable.p-treetable-sm .p-treetable-header {\n padding: 0.65625rem 0.875rem;\n}\n\n.p-treetable.p-treetable-sm .p-treetable-thead>tr>th {\n padding: 0.375rem 0.5rem;\n}\n\n.p-treetable.p-treetable-sm .p-treetable-tbody>tr>td {\n padding: 0.375rem 0.5rem;\n}\n\n.p-treetable.p-treetable-sm .p-treetable-tfoot>tr>td {\n padding: 0.375rem 0.5rem;\n}\n\n.p-treetable.p-treetable-sm .p-treetable-footer {\n padding: 0.375rem 0.5rem;\n}\n\n.p-treetable.p-treetable-lg .p-treetable-header {\n padding: 0.9375rem 1.25rem;\n}\n\n.p-treetable.p-treetable-lg .p-treetable-thead>tr>th {\n padding: 0.9375rem 1.25rem;\n}\n\n.p-treetable.p-treetable-lg .p-treetable-tbody>tr>td {\n padding: 0.9375rem 1.25rem;\n}\n\n.p-treetable.p-treetable-lg .p-treetable-tfoot>tr>td {\n padding: 0.9375rem 1.25rem;\n}\n\n.p-treetable.p-treetable-lg .p-treetable-footer {\n padding: 0.9375rem 1.25rem;\n}\n\np-treetable-checkbox {\n display: inline-flex;\n}\n\np-treetabletoggler + p-treetable-checkbox .p-checkbox,\np-treetable-toggler + p-treetable-checkbox .p-checkbox,\np-treetable-toggler + p-tree-table-checkbox .p-checkbox,\np-treetabletoggler + p-tree-table-checkbox .p-checkbox {\n vertical-align: middle;\n}\n\np-treetabletoggler + p-treetable-checkbox + span,\np-treetable-toggler + p-treetable-checkbox + span,\np-treetable-toggler + p-tree-table-checkbox + span,\np-treetabletoggler + p-tree-table-checkbox + span {\n vertical-align: middle;\n}\n\np-treetable-sort-icon {\n display: inline-flex;\n align-items: center;\n gap: dt('treetable.header.cell.gap');\n}\n`;\n\nconst classes = {\n root: ({ instance }) => {\n const showGridlines = instance.showGridlines();\n const rowHover = instance.rowHover();\n const selectionMode = instance.selectionMode();\n const autoLayout = instance.autoLayout();\n const resizableColumns = instance.resizableColumns();\n const columnResizeMode = instance.columnResizeMode();\n const scrollable = instance.scrollable();\n const scrollHeight = instance.scrollHeight();\n\n return [\n 'p-treetable p-component',\n {\n 'p-treetable-gridlines': showGridlines,\n 'p-treetable-hoverable-rows': rowHover || selectionMode === 'single' || selectionMode === 'multiple',\n 'p-treetable-auto-layout': autoLayout,\n 'p-treetable-resizable': resizableColumns,\n 'p-treetable-resizable-fit': resizableColumns && columnResizeMode === 'fit',\n 'p-treetable-flex-scrollable': scrollable && scrollHeight === 'flex'\n }\n ];\n },\n loading: 'p-treetable-loading',\n mask: 'p-treetable-mask p-overlay-mask',\n loadingIcon: 'p-treetable-loading-icon',\n header: 'p-treetable-header',\n pcPaginator: ({ instance }) => ['p-treetable-paginator-' + instance.paginatorPosition(), instance.paginatorStyleClass()],\n tableContainer: 'p-treetable-table-container',\n table: ({ instance }) => {\n const scrollable = instance.scrollable();\n const resizableColumns = instance.resizableColumns();\n const columnResizeMode = instance.columnResizeMode();\n\n return {\n 'p-treetable-table': true,\n 'p-treetable-scrollable-table': scrollable,\n 'p-treetable-resizable-table': resizableColumns,\n 'p-treetable-resizable-table-fit': resizableColumns && columnResizeMode === 'fit'\n };\n },\n thead: 'p-treetable-thead',\n sortableColumn: ({ instance }) => ({\n 'p-sortable-column': instance.isEnabled(),\n 'p-treetable-column-sorted': instance.sorted()\n }),\n sortableColumnIcon: 'p-treetable-sort-icon',\n sortableColumnBadge: 'p-sortable-column-badge',\n columnResizer: 'p-treetable-column-resizer',\n columnHeaderContent: 'p-treetable-column-header-content',\n columnTitle: 'p-treetable-column-title',\n sortIcon: 'p-treetable-sort-icon',\n pcSortBadge: 'p-treetable-sort-badge',\n tbody: 'p-treetable-tbody',\n row: ({ instance }) => ({\n 'p-treetable-row-selected': instance.selected()\n }),\n contextMenuRow: ({ instance }) => ({\n 'p-treetable-contextmenu-row-selected': instance.selected()\n }),\n toggler: 'p-treetable-toggler',\n nodeToggleButton: 'p-treetable-node-toggle-button',\n nodeToggleIcon: 'p-treetable-node-toggle-icon',\n pcNodeCheckbox: 'p-treetable-node-checkbox',\n tfoot: 'p-treetable-tfoot',\n footerCell: ({ instance }) => ({\n 'p-treetable-frozen-column': instance.columnProp('frozen')\n }),\n footer: 'p-treetable-footer',\n columnResizeIndicator: 'p-treetable-column-resize-indicator',\n wrapper: 'p-treetable-wrapper',\n scrollableWrapper: 'p-treetable-scrollable-wrapper',\n scrollableView: 'p-treetable-scrollable-view',\n frozenView: 'p-treetable-frozen-view',\n columnResizerHelper: 'p-column-resizer-helper',\n reorderIndicatorUp: 'p-treetable-reorder-indicator-up',\n reorderIndicatorDown: 'p-treetable-reorder-indicator-down',\n scrollableHeader: 'p-treetable-scrollable-header',\n scrollableHeaderBox: 'p-treetable-scrollable-header-box',\n scrollableHeaderTable: 'p-treetable-scrollable-header-table',\n scrollableBody: 'p-treetable-scrollable-body',\n scrollableFooter: 'p-treetable-scrollable-footer',\n scrollableFooterBox: 'p-treetable-scrollable-footer-box',\n scrollableFooterTable: 'p-treetable-scrollable-footer-table'\n};\n\nconst inlineStyles = {\n wrapper: { overflow: 'auto' }\n};\n\n@Injectable()\nexport class TreeTableStyle extends BaseStyle {\n name = 'treetable';\n\n style = style;\n\n classes = classes;\n\n inlineStyles = inlineStyles;\n}\n\n/**\n *\n * TreeTable is used to display hierarchical data in tabular format.\n *\n * [Live Demo](https://www.primeng.org/treetable/)\n *\n * @module treetablestyle\n *\n */\nexport enum TreeTableClasses {\n /**\n * Class name of the root element\n */\n root = 'p-treetable',\n /**\n * Class name of the loading element\n */\n loading = 'p-treetable-loading',\n /**\n * Class name of the mask element\n */\n mask = 'p-treetable-mask',\n /**\n * Class name of the loading icon element\n */\n loadingIcon = 'p-treetable-loading-icon',\n /**\n * Class name of the header element\n */\n header = 'p-treetable-header',\n /**\n * Class name of the paginator element\n */\n pcPaginator = 'p-treetable-paginator-[position]',\n /**\n * Class name of the table container element\n */\n tableContainer = 'p-treetable-table-container',\n /**\n * Class name of the table element\n */\n table = 'p-treetable-table',\n /**\n * Class name of the thead element\n */\n thead = 'p-treetable-thead',\n /**\n * Class name of the column resizer element\n */\n columnResizer = 'p-treetable-column-resizer',\n /**\n * Class name of the column title element\n */\n columnTitle = 'p-treetable-column-title',\n /**\n * Class name of the sort icon element\n */\n sortIcon = 'p-treetable-sort-icon',\n /**\n * Class name of the sort badge element\n */\n pcSortBadge = 'p-treetable-sort-badge',\n /**\n * Class name of the tbody element\n */\n tbody = 'p-treetable-tbody',\n /**\n * Class name of the node toggle button element\n */\n nodeToggleButton = 'p-treetable-node-toggle-button',\n /**\n * Class name of the node toggle icon element\n */\n nodeToggleIcon = 'p-treetable-node-toggle-icon',\n /**\n * Class name of the node checkbox element\n */\n pcNodeCheckbox = 'p-treetable-node-checkbox',\n /**\n * Class name of the empty message element\n */\n emptyMessage = 'p-treetable-empty-message',\n /**\n * Class name of the tfoot element\n */\n tfoot = 'p-treetable-tfoot',\n /**\n * Class name of the footer element\n */\n footer = 'p-treetable-footer',\n /**\n * Class name of the column resize indicator element\n */\n columnResizeIndicator = 'p-treetable-column-resize-indicator',\n /**\n * Class name of the wrapper element\n */\n wrapper = 'p-treetable-wrapper',\n /**\n * Class name of the scrollable wrapper element\n */\n scrollableWrapper = 'p-treetable-scrollable-wrapper',\n /**\n * Class name of the scrollable view element\n */\n scrollableView = 'p-treetable-scrollable-view',\n /**\n * Class name of the frozen view element\n */\n frozenView = 'p-treetable-frozen-view',\n /**\n * Class name of the column resizer helper element\n */\n columnResizerHelper = 'p-treetable-column-resizer-helper',\n /**\n * Class name of the reorder indicator up element\n */\n reorderIndicatorUp = 'p-treetable-reorder-indicator-up',\n /**\n * Class name of the reorder indicator down element\n */\n reorderIndicatorDown = 'p-treetable-reorder-indicator-down',\n /**\n * Class name of the scrollable header element\n */\n scrollableHeader = 'p-treetable-scrollable-header',\n /**\n * Class name of the scrollable header box element\n */\n scrollableHeaderBox = 'p-treetable-scrollable-header-box',\n /**\n * Class name of the scrollable header table element\n */\n scrollableHeaderTable = 'p-treetable-scrollable-header-table',\n /**\n * Class name of the scrollable body element\n */\n scrollableBody = 'p-treetable-scrollable-body',\n /**\n * Class name of the scrollable footer element\n */\n scrollableFooter = 'p-treetable-scrollable-footer',\n /**\n * Class name of the scrollable footer box element\n */\n scrollableFooterBox = 'p-treetable-scrollable-footer-box',\n /**\n * Class name of the scrollable footer table element\n */\n scrollableFooterTable = 'p-treetable-scrollable-footer-table',\n /**\n * Class name of the sortable column icon element\n */\n sortableColumnIcon = 'p-sortable-column-icon'\n}\n","import { Injectable, InjectionToken } from '@angular/core';\nimport { SortMeta } from 'primeng/api';\nimport { Subject } from 'rxjs';\n\nexport const TREETABLE_INSTANCE = new InjectionToken<any>('TREETABLE_INSTANCE');\n\n@Injectable()\nexport class TreeTableService {\n private sortSource = new Subject<SortMeta | SortMeta[] | null>();\n private selectionSource = new Subject();\n private contextMenuSource = new Subject<any>();\n private uiUpdateSource = new Subject<any>();\n private totalRecordsSource = new Subject<any>();\n\n sortSource$ = this.sortSource.asObservable();\n selectionSource$ = this.selectionSource.asObservable();\n contextMenuSource$ = this.contextMenuSource.asObservable();\n uiUpdateSource$ = this.uiUpdateSource.asObservable();\n totalRecordsSource$ = this.totalRecordsSource.asObservable();\n\n onSort(sortMeta: SortMeta | SortMeta[] | null) {\n this.sortSource.next(sortMeta);\n }\n\n onSelectionChange() {\n this.selectionSource.next(null);\n }\n\n onContextMenu(node: any) {\n this.contextMenuSource.next(node);\n }\n\n onUIUpdate(value: any) {\n this.uiUpdateSource.next(value);\n }\n\n onTotalRecordsChange(value: number) {\n this.totalRecordsSource.next(value);\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { booleanAttribute, Component, computed, inject, input, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { Nullable } from 'primeng/ts-helpers';\nimport { TREETABLE_INSTANCE } from './treetable-service';\nimport type { TreeTable } from './treetable';\n\n@Component({\n selector: '[pTreeTableBody]',\n standalone: true,\n imports: [NgTemplateOutlet],\n template: `\n @for (serializedNode of serializedNodes() || tt.serializedValue; track tt.rowTrackBy()($index, serializedNode)) {\n @if (serializedNode.visible) {\n <ng-container *ngTemplateOutlet=\"template(); context: getBodyTemplateContext(serializedNode)\"></ng-container>\n }\n }\n @if (tt.isEmpty()) {\n <ng-container *ngTemplateOutlet=\"tt.emptyMessageTemplate(); context: emptyMessageContext()\"></ng-container>\n }\n `,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.data-p]': 'dataP'\n }\n})\nexport class TTBody extends BaseComponent {\n columns = input<any[]>(undefined, { alias: 'pTreeTableBody' });\n\n template = input<Nullable<TemplateRef<any>>>(undefined, { alias: 'pTreeTableBodyTemplate' });\n\n frozen = input(undefined, { transform: booleanAttribute });\n\n serializedNodes = input<any>();\n\n scrollerOptions = input<any>();\n\n tt = inject<TreeTable>(TREETABLE_INSTANCE);\n\n emptyMessageContext = computed(() => ({ $implicit: this.columns(), frozen: this.frozen() }));\n\n constructor() {\n super();\n this.tt.tableService.uiUpdateSource$.pipe(takeUntilDestroyed()).subscribe(() => {\n if (this.tt.virtualScroll()) {\n this.cd.detectChanges();\n }\n });\n }\n\n getBodyTemplateContext(serializedNode: any) {\n return {\n $implicit: serializedNode,\n node: serializedNode.node,\n rowData: serializedNode.node.data,\n columns: this.columns()\n };\n }\n\n getScrollerOption(option: any, options?: any) {\n if (this.tt.virtualScroll()) {\n options = options || this.scrollerOptions();\n\n return options ? options[option] : null;\n }\n\n return null;\n }\n\n getRowIndex(rowIndex: number) {\n const getItemOptions = this.getScrollerOption('getItemOptions');\n\n return getItemOptions ? getItemOptions(rowIndex).index : rowIndex;\n }\n\n get dataP() {\n return this.cn({\n hoverable: this.tt.rowHover() || this.tt.selectionMode(),\n frozen: this.frozen()\n });\n }\n}\n","import { isPlatformBrowser, NgTemplateOutlet } from '@angular/common';\nimport { booleanAttribute, Component, computed, effect, ElementRef, inject, input, viewChild, ViewEncapsulation } from '@angular/core';\nimport { addClass, calculateScrollbarHeight, calculateScrollbarWidth, findSingle } from '@primeuix/utils';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { Bind } from 'primeng/bind';\nimport { Scroller } from 'primeng/scroller';\nimport { Nullable, VoidListener } from 'primeng/ts-helpers';\nimport { TreeTableStyle } from './style/treetablestyle';\nimport type { TreeTable } from './treetable';\nimport { TTBody } from './treetable-body';\nimport { TREETABLE_INSTANCE } from './treetable-service';\n\n@Component({\n selector: '[ttScrollableView]',\n standalone: true,\n imports: [NgTemplateOutlet, Bind, Scroller, TTBody],\n template: `\n <div #scrollHeader [class]=\"cx('scrollableHeader')\" [pBind]=\"ptm('scrollableHeader')\">\n <div #scrollHeaderBox [class]=\"cx('scrollableHeaderBox')\" [pBind]=\"ptm('scrollableHeaderBox')\">\n <table [class]=\"cn(cx('scrollableHeaderTable'), tt.tableStyleClass())\" [pBind]=\"ptm('scrollableHeaderTable')\" [style]=\"tt.tableStyle()\">\n <ng-container *ngTemplateOutlet=\"colGroupTemplate(); context: { $implicit: columns() }\"></ng-container>\n <thead role=\"rowgroup\" [class]=\"cx('thead')\" [pBind]=\"ptm('thead')\">\n <ng-container *ngTemplateOutlet=\"$headerTemplate(); context: { $implicit: columns() }\"></ng-container>\n </thead>\n </table>\n </div>\n </div>\n\n @if (tt.virtualScroll()) {\n <p-scroller\n #scroller\n [items]=\"tt.serializedValue\"\n [styleClass]=\"cx('scrollableBody')\"\n [style]=\"scrollerStyle()\"\n [scrollHeight]=\"$scrollerScrollHeight()\"\n [itemSize]=\"tt.virtualScrollItemSize()\"\n [lazy]=\"tt.lazy()\"\n (onLazyLoad)=\"tt.onLazyItemLoad($event)\"\n [options]=\"tt.virtualScrollOptions()\"\n [pt]=\"ptm('virtualScroller')\"\n >\n <ng-template #content let-items let-scrollerOptions=\"options\">\n <ng-container *ngTemplateOutlet=\"buildInItems; context: { $implicit: items, options: scrollerOptions }\"></ng-container>\n </ng-template>\n @if (tt.loaderTemplate()) {\n <ng-template #loader let-scrollerOptions=\"options\">\n <ng-container *ngTemplateOutlet=\"tt.loaderTemplate(); context: { options: scrollerOptions }\"></ng-container>\n </ng-template>\n }\n </p-scroller>\n }\n @if (!tt.virtualScroll()) {\n <div #scrollBody [class]=\"cx('scrollableBody')\" [pBind]=\"ptm('scrollableBody')\" [style]=\"scrollBodyStyle()\">\n <ng-container *ngTemplateOutlet=\"buildInItems; context: { $implicit: serializedValue, options: {} }\"></ng-container>\n </div>\n }\n\n <ng-template #buildInItems let-items let-scrollerOptions=\"options\">\n <table role=\"treegrid\" #scrollTable [pBind]=\"ptm('table')\" [class]=\"cn(tt.tableStyleClass(), scrollerOptions.contentStyleClass)\" [style]=\"getScrollableTableStyle(scrollerOptions.contentStyle)\">\n <ng-container *ngTemplateOutlet=\"colGroupTemplate(); context: { $implicit: columns() }\"></ng-container>\n <tbody [pBind]=\"ptm('tbody')\" role=\"rowgroup\" [class]=\"cx('tbody')\" [pTreeTableBody]=\"columns()\" [unstyled]=\"unstyled()\" [pTreeTableBodyTemplate]=\"$bodyTemplate()\" [serializedNodes]=\"items\" [frozen]=\"frozen()\"></tbody>\n </table>\n @if (frozen()) {\n <div #scrollableAligner [style.background-color]=\"'transparent'\"></div>\n }\n </ng-template>\n\n @if (tt.footerTemplate()) {\n <div #scrollFooter [class]=\"cx('scrollableFooter')\" [pBind]=\"ptm('scrollableFooter')\">\n <div #scrollFooterBox [class]=\"cx('scrollableFooterBox')\" [pBind]=\"ptm('scrollableFooterBox')\">\n <table [class]=\"cn(cx('scrollableFooterTable'), tt.tableStyleClass())\" [style]=\"tt.tableStyle()\" [pBind]=\"ptm('scrollableFooterTable')\">\n <ng-container *ngTemplateOutlet=\"colGroupTemplate(); context: { $implicit: columns() }\"></ng-container>\n <tfoot role=\"rowgroup\" [class]=\"cx('tfoot')\" [pBind]=\"ptm('tfoot')\">\n <ng-container *ngTemplateOutlet=\"$footerTemplate(); context: { $implicit: columns() }\"></ng-container>\n </tfoot>\n </table>\n </div>\n </div>\n }\n `,\n encapsulation: ViewEncapsulation.None,\n providers: [TreeTableStyle]\n})\nexport class TTScrollableView extends BaseComponent {\n hostName = 'TreeTable';\n\n columns = input<any[]>(undefined, { alias: 'ttScrollableView' });\n\n frozen = input(undefined, { transform: booleanAttribute });\n\n scrollHeight = input<string | null>();\n\n scrollHeaderViewChild = viewChild<ElementRef>('scrollHeader');\n\n scrollHeaderBoxViewChild = viewChild<ElementRef>('scrollHeaderBox');\n\n scrollBodyViewChild = viewChild<ElementRef>('scrollBody');\n\n scrollTableViewChild = viewChild<ElementRef>('scrollTable');\n\n scrollLoadingTableViewChild = viewChild<ElementRef>('loadingTable');\n\n scrollFooterViewChild = viewChild<ElementRef>('scrollFooter');\n\n scrollFooterBoxViewChild = viewChild<ElementRef>('scrollFooterBox');\n\n scrollableAlignerViewChild = viewChild<ElementRef>('scrollableAligner');\n\n scroller = viewChild<Scroller>('scroller');\n\n headerScrollListener: VoidListener;\n\n bodyScrollListener: VoidListener;\n\n footerScrollListener: VoidListener;\n\n frozenSiblingBody: Nullable<Element>;\n\n preventBodyScrollPropagation: boolean | undefined;\n\n _componentStyle = inject(TreeTableStyle);\n\n tt = inject<TreeTable>(TREETABLE_INSTANCE);\n\n colGroupTemplate = computed(() => (this.frozen() ? this.tt.frozenColGroupTemplate() || this.tt.colGroupTemplate() : this.tt.colGroupTemplate()));\n\n $headerTemplate = computed(() => (this.frozen() ? this.tt.frozenHeaderTemplate() || this.tt.headerTemplate() : this.tt.headerTemplate()));\n\n $footerTemplate = computed(() => (this.frozen() ? this.tt.frozenFooterTemplate() || this.tt.footerTemplate() : this.tt.footerTemplate()));\n\n $bodyTemplate = computed(() => (this.frozen() ? this.tt.frozenBodyTemplate() || this.tt.bodyTemplate() : this.tt.bodyTemplate()));\n\n scrollerStyle = computed(() => ({ height: this.tt.scrollHeight() !== 'flex' ? this.tt.scrollHeight() : undefined }));\n\n $scrollerScrollHeight = computed(() => (this.scrollHeight() !== 'flex' ? undefined : '100%'));\n\n scrollBodyStyle = computed(() => ({\n 'max-height': this.tt.scrollHeight() !== 'flex' ? this.scrollHeight() : undefined,\n 'overflow-y': !this.frozen() && this.tt.scrollHeight() ? 'scroll' : undefined\n }));\n\n constructor() {\n super();\n effect(() => {\n const val = this.scrollHeight();\n\n if (val != null && (val.includes('%') || val.includes('calc'))) {\n // eslint-disable-next-line no-console\n console.warn('Percentage scroll height calculation is removed in favor of the more performant CSS based flex mode, use scrollHeight=\"flex\" instead.');\n }\n });\n }\n\n get serializedValue() {\n return this.tt.serializedValue;\n }\n\n onAfterViewInit() {\n if (isPlatformBrowser(this.platformId)) {\n if (!this.frozen()) {\n if (this.tt.frozenColumns() || this.tt.frozenBodyTemplate()) {\n addClass(this.el.nativeElement, 'p-treetable-unfrozen-view');\n }\n\n let frozenView = this.el.nativeElement.previousElementSibling;\n\n if (frozenView) {\n if (this.tt.virtualScroll()) this.frozenSiblingBody = findSingle(frozenView, '[data-pc-name=\"virtualscroller\"]');\n else this.frozenSiblingBody = findSingle(frozenView, '[data-pc-section=\"scrollablebody\"]');\n }\n\n if (this.scrollHeight()) {\n let scrollBarWidth = calculateScrollbarWidth();\n\n if (this.scrollHeaderBoxViewChild()?.nativeElement) {\n this.scrollHeaderBoxViewChild()!.nativeElement.style.paddingRight = scrollBarWidth + 'px';\n }\n\n if (this.scrollFooterBoxViewChild()?.nativeElement) {\n this.scrollFooterBoxViewChild()!.nativeElement.style.paddingRight = scrollBarWidth + 'px';\n }\n }\n } else {\n if (this.scrollableAlignerViewChild()?.nativeElement) {\n this.scrollableAlignerViewChild()!.nativeElement.style.height = calculateScrollbarHeight() + 'px';\n }\n }\n\n this.bindEvents();\n }\n }\n\n bindEvents() {\n if (isPlatformBrowser(this.platformId)) {\n if (this.scrollHeaderViewChild()?.nativeElement) {\n this.headerScrollListener = this.renderer.listen(this.scrollHeaderBoxViewChild()?.nativeElement, 'scroll', this.onHeaderScroll.bind(this));\n }\n\n if (this.scrollFooterViewChild()?.nativeElement) {\n this.footerScrollListener = this.renderer.listen(this.scrollFooterViewChild()!.nativeElement, 'scroll', this.onFooterScroll.bind(this));\n }\n\n if (!this.frozen()) {\n if (this.tt.virtualScroll()) {\n this.bodyScrollListener = this.renderer.listen((this.scroller()?.getElementRef() as ElementRef).nativeElement, 'scroll', this.onBodyScroll.bind(this));\n } else {\n this.bodyScrollListener = this.renderer.listen(this.scrollBodyViewChild()?.nativeElement, 'scroll', this.onBodyScroll.bind(this));\n }\n }\n }\n }\n\n unbindEvents() {\n if (isPlatformBrowser(this.platformId)) {\n if (this.scrollHeaderViewChild()?.nativeElement) {\n if (this.headerScrollListener) {\n this.headerScrollListener();\n this.headerScrollListener = null;\n }\n }\n\n if (this.scrollFooterViewChild()?.nativeElement) {\n if (this.footerScrollListener) {\n this.footerScrollListener();\n this.footerScrollListener = null;\n }\n }\n\n if (this.scrollBodyViewChild()?.nativeElement) {\n if (this.bodyScrollListener) {\n this.bodyScrollListener();\n this.bodyScrollListener = null;\n }\n }\n\n if (this.scroller()?.getElementRef()) {\n if (this.bodyScrollListener) {\n this.bodyScrollListener();\n this.bodyScrollListener = null;\n }\n }\n }\n }\n\n onHeaderScroll() {\n const scrollLeft = this.scrollHeaderViewChild()?.nativeElement.scrollLeft;\n\n this.scrollBodyViewChild()!.nativeElement.scrollLeft = scrollLeft;\n\n if (this.scrollFooterViewChild()?.nativeElement) {\n this.scrollFooterViewChild()!.nativeElement.scrollLeft = scrollLeft;\n }\n\n this.preventBodyScrollPropagation = true;\n }\n\n onFooterScroll() {\n const scrollLeft = this.scrollFooterViewChild()?.nativeElement.scrollLeft;\n\n this.scrollBodyViewChild()!.nativeElement.scrollLeft = scrollLeft;\n\n if (this.scrollHeaderViewChild()?.nativeElement) {\n this.scrollHeaderViewChild()!.nativeElement.scrollLeft = scrollLeft;\n }\n\n this.preventBodyScrollPropagation = true;\n }\n\n onBodyScroll(event: any) {\n if (this.preventBodyScrollPropagation) {\n this.preventBodyScrollPropagation = false;\n\n return;\n }\n\n if (this.scrollHeaderViewChild()?.nativeElement) {\n this.scrollHeaderBoxViewChild()!.nativeElement.style.marginLeft = -1 * event.target.scrollLeft + 'px';\n }\n\n if (this.scrollFooterViewChild()?.nativeElement) {\n this.scrollFooterBoxViewChild()!.nativeElement.style.marginLeft = -1 * event.target.scrollLeft + 'px';\n }\n\n if (this.frozenSiblingBody) {\n this.frozenSiblingBody.scrollTop = event.target.scrollTop;\n }\n }\n\n scrollToVirtualIndex(index: number) {\n this.scroller()?.scrollToIndex(index);\n }\n\n scrollTo(options: ScrollToOptions) {\n if (this.scroller()) {\n this.scroller()!.scrollTo(options);\n } else {\n if (this.scrollBodyViewChild()?.nativeElement.scrollTo) {\n this.scrollBodyViewChild()!.nativeElement.scrollTo(options);\n } else {\n this.scrollBodyViewChild()!.nativeElement.scrollLeft = options.left;\n this.scrollBodyViewChild()!.nativeElement.scrollTop = options.top;\n }\n }\n }\n\n getScrollableTableStyle(contentStyle: any) {\n return { ...this.tt.tableStyle(), ...contentStyle };\n }\n\n onDestroy() {\n this.unbindEvents();\n\n this.frozenSiblingBody = null;\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { booleanAttribute, Component, computed, contentChild, effect, ElementRef, inject, input, model, numberAttribute, output, signal, TemplateRef, untracked, viewChild, ViewEncapsulation } from '@angular/core';\nimport { ArrowDown as ArrowDownIcon } from '@primeicons/angular/arrow-down';\nimport { ArrowUp as ArrowUpIcon } from '@primeicons/angular/arrow-up';\nimport { Spinner as SpinnerIcon } from '@primeicons/angular/spinner';\nimport { addStyle, calculateScrollbarWidth, equals, find, findSingle, getHiddenElementOuterHeight, getHiddenElementOuterWidth, getIndex, getOffset, isClickable, isEmpty, removeClass, reorderArray, resolveFieldData } from '@primeuix/utils';\nimport { BlockableUI, FilterMetadata, FilterService, ScrollerOptions, SortMeta, TreeNode, TreeTableNode } from 'primeng/api';\nimport { BaseComponent, PARENT_INSTANCE } from 'primeng/basecomponent';\nimport { Bind } from 'primeng/bind';\nimport { DomHandler } from 'primeng/dom';\nimport { PaginatorModule } from 'primeng/paginator';\nimport { Nullable, VoidListener } from 'primeng/ts-helpers';\nimport type { CheckboxChangeEvent } from 'primeng/types/checkbox';\nimport type { PaginatorDropdownItemTemplateContext, PaginatorTemplateContext } from 'primeng/types/paginator';\nimport type { ScrollerLoaderTemplateContext } from 'primeng/types/scroller';\nimport type { CSSProperties } from 'primeng/types/shared';\nimport {\n TreeTableBodyTemplateContext,\n TreeTableCheckboxIconTemplateContext,\n TreeTableColResizeEvent,\n TreeTableColumnReorderEvent,\n TreeTableColumnResizeMode,\n TreeTableColumnsTemplateContext,\n TreeTableCompareSelectionBy,\n TreeTableContextMenuSelectEvent,\n TreeTableEditEvent,\n TreeTableEmptyMessageTemplateContext,\n TreeTableFilterEvent,\n TreeTableFilterMode,\n TreeTableFilterOptions,\n TreeTableHeaderCheckboxIconTemplateContext,\n TreeTableHeaderCheckboxToggleEvent,\n TreeTableLazyLoadEvent,\n TreeTableNodeCollapseEvent,\n TreeTableNodeExpandEvent,\n TreeTableNodeUnSelectEvent,\n TreeTablePaginatorPosition,\n TreeTablePaginatorState,\n TreeTablePassThrough,\n TreeTableSelectionMode,\n TreeTableSortEvent,\n TreeTableSortIconTemplateContext,\n TreeTableSortMode,\n TreeTableTogglerIconTemplateContext\n} from 'primeng/types/treetable';\nimport { TreeTableStyle } from './style/treetablestyle';\nimport { TTBody } from './treetable-body';\nimport { TTScrollableView } from './treetable-scrollable-view';\nimport { TREETABLE_INSTANCE, TreeTableService } from './treetable-service';\n\n/**\n * TreeTable is used to display hierarchical data in tabular format.\n * @group Components\n */\n@Component({\n selector: 'p-treetable, p-tree-table',\n standalone: true,\n imports: [NgTemplateOutlet, Bind, PaginatorModule, SpinnerIcon, ArrowDownIcon, ArrowUpIcon, TTScrollableView, TTBody],\n template: `\n @if (showLoadingMask()) {\n <div [pBind]=\"ptm('mask')\" [class]=\"cx('mask')\" animate.enter=\"p-overlay-mask-enter-active\" animate.leave=\"p-overlay-mask-leave-active\">\n @if (loadingIcon()) {\n <i [class]=\"cn(cx('loadingIcon'), 'pi-spin' + loadingIcon())\"></i>\n }\n @if (!loadingIcon()) {\n @if (!loadingIconTemplate()) {\n <svg data-p-icon=\"spinner\" [class]=\"cx('loadingIcon')\" [spin]=\"true\" />\n }\n @if (loadingIconTemplate()) {\n <span [class]=\"cx('loadingIcon')\">\n <ng-template *ngTemplateOutlet=\"loadingIconTemplate()\"></ng-template>\n </span>\n }\n }\n </div>\n }\n @if (captionTemplate()) {\n <div [pBind]=\"ptm('header')\" [class]=\"cx('header')\">\n <ng-container *ngTemplateOutlet=\"captionTemplate()\"></ng-container>\n </div>\n }\n @if (showTopPaginator()) {\n <p-paginator\n [pt]=\"ptm('pcPaginator')\"\n [rows]=\"rows() ?? 0\"\n [first]=\"first\"\n [totalRecords]=\"totalRecords\"\n [pageLinkSize]=\"pageLinks()\"\n [class]=\"cx('pcPaginator')\"\n [alwaysShow]=\"alwaysShowPaginator()\"\n (onPageChange)=\"onPageChange($event)\"\n [rowsPerPageOptions]=\"rowsPerPageOptions()\"\n [templateLeft]=\"paginatorLeftTemplate()\"\n [templateRight]=\"paginatorRightTemplate()\"\n [appendTo]=\"paginatorDropdownAppendTo()\"\n [currentPageReportTemplate]=\"currentPageReportTemplate()\"\n [showFirstLastIcon]=\"showFirstLastIcon()\"\n [dropdownItemTemplate]=\"paginatorDropdownItemTemplate()\"\n [showCurrentPageReport]=\"showCurrentPageReport()\"\n [showJumpToPageDropdown]=\"showJumpToPageDropdown()\"\n [showPageLinks]=\"showPageLinks()\"\n [locale]=\"paginatorLocale()\"\n [unstyled]=\"unstyled()\"\n >\n @if (paginatorFirstPageLinkIconTemplate()) {\n <ng-template #firstpagelinkicon>\n <ng-container *ngTemplateOutlet=\"paginatorFirstPageLinkIconTemplate()\"></ng-container>\n </ng-template>\n }\n\n @if (paginatorPreviousPageLinkIconTemplate()) {\n <ng-template #previouspagelinkicon>\n <ng-container *ngTemplateOutlet=\"paginatorPreviousPageLinkIconTemplate()\"></ng-container>\n </ng-template>\n }\n\n @if (paginatorLastPageLinkIconTemplate()) {\n <ng-template #lastpagelinkicon>\n <ng-container *ngTemplateOutlet=\"paginatorLastPageLinkIconTemplate()\"></ng-container>\n </ng-template>\n }\n\n @if (paginatorNextPageLinkIconTemplate()) {\n <ng-template #nextpagelinkicon>\n <ng-container *ngTemplateOutlet=\"paginatorNextPageLinkIconTemplate()\"></ng-container>\n </ng-template>\n }\n </p-paginator>\n }\n\n @if (!scrollable()) {\n <div [pBind]=\"ptm('wrapper')\" [class]=\"cx('wrapper')\" [style]=\"sx('wrapper')\">\n <table role=\"treegrid\" [pBind]=\"ptm('table')\" #table [class]=\"tableStyleClass()\" [style]=\"tableStyle()\">\n <ng-container *ngTemplateOutlet=\"colGroupTemplate(); context: { $implicit: columns() }\"></ng-container>\n <thead role=\"rowgroup\" [class]=\"cx('thead')\" [pBind]=\"ptm('thead')\">\n <ng-container *ngTemplateOutlet=\"headerTemplate(); context: { $implicit: columns() }\"></ng-container>\n </thead>\n <tbody [class]=\"cx('tbody')\" [pBind]=\"ptm('tbody')\" role=\"rowgroup\" [unstyled]=\"unstyled()\" [pTreeTableBody]=\"columns()\" [pTreeTableBodyTemplate]=\"bodyTemplate()\"></tbody>\n <tfoot [class]=\"cx('tfoot')\" [pBind]=\"ptm('tfoot')\" role=\"rowgroup\">\n <ng-container *ngTemplateOutlet=\"footerTemplate(); context: { $implicit: columns() }\"></ng-container>\n </tfoot>\n </table>\n </div>\n }\n\n @if (scrollable()) {\n <div [pBind]=\"ptm('scrollableWrapper')\" [class]=\"cx('scrollableWrapper')\">\n @if (frozenColumns() || frozenBodyTemplate()) {\n <div\n [class]=\"cn(cx('scrollableView'), cx('frozenView'))\"\n #scrollableFrozenView\n [ttScrollableView]=\"frozenColumns()\"\n [unstyled]=\"unstyled()\"\n [frozen]=\"true\"\n [style]=\"{ width: frozenWidth() }\"\n [scrollHeight]=\"scrollHeight()\"\n [pBind]=\"ptm('scrollableView')\"\n ></div>\n }\n <div\n [class]=\"cx('scrollableView')\"\n [pBind]=\"ptm('scrollableView')\"\n #scrollableView\n [ttScrollableView]=\"columns()\"\n [unstyled]=\"unstyled()\"\n [frozen]=\"false\"\n [scrollHeight]=\"scrollHeight()\"\n [style]=\"{ left: frozenWidth(), width: 'calc(100% - ' + frozenWidth() + ')' }\"\n ></div>\n </div>\n }\n\n @if (showBottomPaginator()) {\n <p-paginator\n [pt]=\"ptm('pcPaginator')\"\n [rows]=\"rows() ?? 0\"\n [first]=\"first\"\n [totalRecords]=\"totalRecords\"\n [pageLinkSize]=\"pageLinks()\"\n [class]=\"cx('pcPaginator')\"\n [alwaysShow]=\"alwaysShowPaginator()\"\n (onPageChange)=\"onPageChange($event)\"\n [rowsPerPageOptions]=\"rowsPerPageOptions()\"\n [templateLeft]=\"paginatorLeftTemplate()\"\n [templateRight]=\"paginatorRightTemplate()\"\n [appendTo]=\"paginatorDropdownAppendTo()\"\n [currentPageReportTemplate]=\"currentPageReportTemplate()\"\n [showFirstLastIcon]=\"showFirstLastIcon()\"\n [dropdownItemTemplate]=\"paginatorDropdownItemTemplate()\"\n [showCurrentPageReport]=\"showCurrentPageReport()\"\n [showJumpToPageDropdown]=\"showJumpToPageDropdown()\"\n [showPageLinks]=\"showPageLinks()\"\n [locale]=\"paginatorLocale()\"\n [unstyled]=\"unstyled()\"\n >\n @if (paginatorFirstPageLinkIconTemplate()) {\n <ng-template #firstpagelinkicon>\n <ng-container *ngTemplateOutlet=\"paginatorFirstPageLinkIconTemplate()\"></ng-container>\n </ng-template>\n }\n\n @if (paginatorPreviousPageLinkIconTemplate()) {\n <ng-template #previouspagelinkicon>\n <ng-container *ngTemplateOutlet=\"paginatorPreviousPageLinkIconTemplate()\"></ng-container>\n </ng-template>\n }\n\n @if (paginatorLastPageLinkIconTemplate()) {\n <ng-template #lastpagelinkicon>\n <ng-container *ngTemplateOutlet=\"paginatorLastPageLinkIconTemplate()\"></ng-container>\n </ng-template>\n }\n\n @if (paginatorNextPageLinkIconTemplate()) {\n <ng-template #nextpagelinkicon>\n <ng-container *ngTemplateOutlet=\"paginatorNextPageLinkIconTemplate()\"></ng-container>\n </ng-template>\n }\n </p-paginator>\n }\n @if (summaryTemplate()) {\n <div [pBind]=\"ptm('footer')\" [class]=\"cx('footer')\">\n <ng-container *ngTemplateOutlet=\"summaryTemplate()\"></ng-container>\n </div>\n }\n\n @if (resizableColumns()) {\n <div [pBind]=\"ptm('columnResizerHelper')\" #resizeHelper [class]=\"cx('columnResizerHelper')\" [style.display]=\"'none'\"></div>\n }\n @if (reorderableColumns()) {\n <span [pBind]=\"ptm('reorderIndicatorUp')\" #reorderIndicatorUp [class]=\"cx('reorderIndicatorUp')\" [style.display]=\"'none'\">\n @if (!reorderIndicatorUpIconTemplate()) {\n <svg data-p-icon=\"arrow-down\" />\n }\n <ng-template *ngTemplateOutlet=\"reorderIndicatorUpIconTemplate()\"></ng-template>\n </span>\n <span [pBind]=\"ptm('reorderIndicatorDown')\" #reorderIndicatorDown [class]=\"cx('reorderIndicatorDown')\" [style.display]=\"'none'\">\n @if (!reorderIndicatorDownIconTemplate()) {\n <svg data-p-icon=\"arrow-up\" />\n }\n <ng-template *ngTemplateOutlet=\"reorderIndicatorDownIconTemplate()\"></ng-template>\n </span>\n }\n `,\n providers: [TreeTableService, TreeTableStyle, { provide: TREETABLE_INSTANCE, useExisting: TreeTable }, { provide: PARENT_INSTANCE, useExisting: TreeTable }],\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': \"cx('root')\",\n '[attr.data-p]': 'dataP()',\n '[attr.data-scrollselectors]': \"'.p-treetable-scrollable-body'\"\n },\n hostDirectives: [Bind]\n})\nexport class TreeTable extends BaseComponent<TreeTablePassThrough> implements BlockableUI {\n componentName = 'TreeTable';\n\n _componentStyle = inject(TreeTableStyle);\n\n bindDirectiveInstance = inject(Bind, { self: true });\n\n /**\n * An array of objects to represent dynamic columns.\n * @group Props\n */\n columns = input<any[]>();\n /**\n * Inline style of the table.\n * @group Props\n */\n tableStyle = input<CSSProperties>();\n /**\n * Style class of the table.\n * @group Props\n */\n tableStyleClass = input<string>();\n /**\n * Whether the cell widths scale according to their content or not.\n * @group Props\n */\n autoLayout = input(undefined, { transform: booleanAttribute });\n /**\n * Defines if data is loaded and interacted with in lazy manner.\n * @group Props\n */\n lazy = input(false, { transform: booleanAttribute });\n /**\n * Whether to call lazy loading on initialization.\n * @group Props\n */\n lazyLoadOnInit = input(true, { transform: booleanAttribute });\n /**\n * When specified as true, enables the pagination.\n * @group Props\n */\n paginator = input(undefined, { transform: booleanAttribute });\n /**\n * Number of rows to display per page.\n * @group Props\n */\n rows = model<number | undefined>(undefined);\n /**\n * Index of the first row to be displayed.\n * @group Props\n */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n firstInput = input(0, { alias: 'first', transform: numberAttribute });\n /**\n * Number of page links to display in paginator.\n * @group Props\n */\n pageLinks = input(5, { transform: numberAttribute });\n /**\n * Array of integer/object values to display inside rows per page dropdown of paginator\n * @group Props\n */\n rowsPerPageOptions = input<any[]>();\n /**\n * Whether to show it even there is only one page.\n * @group Props\n */\n alwaysShowPaginator = input(true, { transform: booleanAttribute });\n /**\n * Position of the paginator.\n * @group Props\n */\n paginatorPosition = input<TreeTablePaginatorPosition>('bottom');\n /**\n * Custom style class for paginator\n * @group Props\n */\n paginatorStyleClass = input<string>();\n /**\n * Target element to attach the paginator dropdown overlay, valid values are \"body\" or a local ng-template variable of another element (note: use binding with brackets for template variables, e.g. [appendTo]=\"mydiv\" for a div element having #mydiv as variable name).\n * @group Props\n */\n paginatorDropdownAppendTo = input<any>();\n /**\n * Template of the current page report element. Available placeholders are {currentPage},{totalPages},{rows},{first},{last} and {totalRecords}\n * @group Props\n */\n currentPageReportTemplate = input('{currentPage} of {totalPages}');\n /**\n * Whether to display current page report.\n * @group Props\n */\n showCurrentPageReport = input(undefined, { transform: booleanAttribute });\n /**\n * Whether to display a dropdown to navigate to any page.\n * @group Props\n */\n showJumpToPageDropdown = input(undefined, { transform: booleanAttribute });\n /**\n * When enabled, icons are displayed on paginator to go first and last page.\n * @group Props\n */\n showFirstLastIcon = input(true, { transform: booleanAttribute });\n /**\n * Whether to show page links.\n * @group Props\n */\n showPageLinks = input(true, { transform: booleanAttribute });\n /**\n * Sort order to use when an unsorted column gets sorted by user interaction.\n * @group Props\n */\n defaultSortOrder = input(1, { transform: numberAttribute });\n /**\n * Defines whether sorting works on single column or on multiple columns.\n * @group Props\n */\n sortMode = input<TreeTableSortMode>('single');\n /**\n * When true, resets paginator to first page after sorting.\n * @group Props\n */\n resetPageOnSort = input(true, { transform: booleanAttribute });\n /**\n * Whether to use the default sorting or a custom one using sortFunction.\n * @group Props\n */\n customSort = input(undefined, { transform: booleanAttribute });\n /**\n * Specifies the selection mode, valid values are \"single\" and \"multiple\".\n * @group Props\n */\n selectionMode = input<TreeTableSelectionMode>();\n /**\n * Selected row with a context menu.\n * @group Props\n */\n contextMenuSelection = input<any>();\n /**\n * A property to uniquely identify a record in data.\n * @group Props\n */\n dataKey = input<string>();\n /**\n * Defines whether metaKey is should be considered for the selection. On touch enabled devices, metaKeySelection is turned off automatically.\n * @group Props\n */\n metaKeySelection = input(false, { transform: booleanAttribute });\n /**\n * Algorithm to define if a row is selected, valid values are \"equals\" that compares by reference and \"deepEquals\" that compares all fields.\n * @group Props\n */\n compareSelectionBy = input<TreeTableCompareSelectionBy>('deepEquals');\n /**\n * Adds hover effect to rows without the need for selectionMode.\n * @group Props\n */\n rowHover = input(undefined, { transform: booleanAttribute });\n /**\n * Displays a loader to indicate data load is in progress.\n * @group Props\n */\n loading = input(undefined, { transform: booleanAttribute });\n /**\n * The icon to show while indicating data load is in progress.\n * @group Props\n */\n loadingIcon = input<string>();\n /**\n * Whether to show the loading mask when loading property is true.\n * @group Props\n */\n showLoader = input(true, { transform: booleanAttribute });\n /**\n * When specified, enables horizontal and/or vertical scrolling.\n * @group Props\n */\n scrollable = input(undefined, { transform: booleanAttribute });\n /**\n * Height of the scroll viewport in fixed pixels or the \"flex\" keyword for a dynamic size.\n * @group Props\n */\n scrollHeight = input<string>();\n /**\n * Whether the data should be loaded on demand during scroll.\n * @group Props\n */\n virtualScroll = input(undefined, { transform: booleanAttribute });\n /**\n * Height of a row to use in calculations of virtual scrolling.\n * @group Props\n */\n virtualScrollItemSize = input(undefined, { transform: numberAttribute });\n /**\n * Whether to use the scroller feature. The properties of scroller component can be used like an object in it.\n * @group Props\n */\n virtualScrollOptions = input<ScrollerOptions>();\n /**\n * The delay (in milliseconds) before triggering the virtual scroll. This determines the time gap between the user's scroll action and the actual rendering of the next set of items in the virtual scroll.\n * @group Props\n */\n virtualScrollDelay = input(150, { transform: numberAttribute });\n /**\n * Width of the frozen columns container.\n * @group Props\n */\n frozenWidth = input<string>();\n /**\n * An array of objects to represent dynamic columns that are frozen.\n * @group Props\n */\n frozenColumns = input<any>();\n /**\n * When enabled, columns can be resized using drag and drop.\n * @group Props\n */\n resizableColumns = input(undefined, { transform: booleanAttribute });\n /**\n * Defines whether the overall table width should change on column resize, valid values are \"fit\" and \"expand\".\n * @group Props\n */\n columnResizeMode = input<TreeTableColumnResizeMode>('fit');\n /**\n * When enabled, columns can be reordered using drag and drop.\n * @group Props\n */\n reorderableColumns = input(undefined, { transform: booleanAttribute });\n /**\n * Local ng-template varilable of a ContextMenu.\n * @group Props\n */\n contextMenu = input<any>();\n /**\n * Function to optimize the dom operations by delegating to ngForTrackBy, default algorithm checks for object identity.\n * @group Props\n */\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n rowTrackBy = input<Function>((index: number, item: any) => item);\n /**\n * An array of FilterMetadata objects to provide external filters.\n * @group Props\n */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n filtersInput = input<{ [s: string]: FilterMetadata | undefined }>({}, { alias: 'filters' });\n /**\n * An array of fields as string to use in global filtering.\n * @group Props\n */\n globalFilterFields = input<string[]>();\n /**\n * Delay in milliseconds before filtering the data.\n * @group Props\n */\n filterDelay = input(300, { transform: numberAttribute });\n /**\n * Mode for filtering valid values are \"lenient\" and \"strict\". Default is lenient.\n * @group Props\n */\n filterMode = input<TreeTableFilterMode>('lenient');\n /**\n * Locale to use in filtering. The default locale is the host environment's current locale.\n * @group Props\n */\n filterLocale = input<string>();\n /**\n * Locale to be used in paginator formatting.\n * @group Props\n */\n paginatorLocale = input<string>();\n /**\n * Number of total records, defaults to length of value when not defined.\n * @group Props\n */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n totalRecordsInput = input(0, { alias: 'totalRecords' });\n /**\n * Name of the field to sort data by default.\n * @group Props\n */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n sortFieldInput = input<string | null>(undefined, { alias: 'sortField' });\n /**\n * Order to sort when default sorting is enabled.\n * @defaultValue 1\n * @group Props\n */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n sortOrderInput = input(1, { alias: 'sortOrder' });\n /**\n * An array of SortMeta objects to sort the data by default in multiple sort mode.\n * @defaultValue null\n * @group Props\n */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n multiSortMetaInput = input<SortMeta[] | null>(undefined, { alias: 'multiSortMeta' });\n /**\n * Selected row in single mode or an array of values in multiple mode.\n * @defaultValue null\n * @deprecated since v22, use `selectionKeys` instead for key-based selection state.\n * @group Props\n */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n selectionInput = input<any>(undefined, { alias: 'selection' });\n /**\n * An array of objects to display.\n * @defaultValue null\n * @group Props\n */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n valueInput = input<TreeNode<any>[]>(undefined, { alias: 'value' });\n /**\n * A map of keys to control the selection state.\n * @group Props\n */\n selectionKeys = input<any>(undefined);\n /**\n * A map of keys (by `dataKey` value) whose value is `true` for collapsed rows. Two-way bindable.\n * When provided it controls row expansion (a row is expanded unless its key maps to `true`); leave it\n * unset to keep driving expansion from each node's `expanded` flag (default, non-breaking).\n * @group Props\n */\n collapsedKeys = input<any>(undefined);\n /**\n * Whether to show grid lines between cells.\n * @defaultValue false\n * @group Props\n */\n showGridlines = input(false, { transform: booleanAttribute });\n /**\n * Callback to invoke on selected node change.\n * @param {TreeTableNode} object - Node instance.\n * @group Emits\n */\n selectionChange = output<TreeTableNode<any> | TreeTableNode<any>[] | null>();\n /**\n * Callback to invoke on context menu selection change.\n * @param {TreeTableNode} object - Node instance.\n * @group Emits\n */\n contextMenuSelectionChange = output<TreeTableNode>();\n /**\n * Callback to invoke when data is filtered.\n * @param {TreeTableFilterEvent} event - Custom filter event.\n * @group Emits\n */\n onFilter = output<TreeTableFilterEvent>();\n /**\n * Callback to invoke when a node is expanded.\n * @param {TreeTableNodeExpandEvent} event - Node expand event.\n * @group Emits\n */\n onNodeExpand = output<TreeTableNodeExpandEvent>();\n /**\n * Callback to invoke when a node is collapsed.\n * @param {TreeTableNodeCollapseEvent} event - Node collapse event.\n * @group Emits\n */\n onNodeCollapse = output<TreeTableNodeCollapseEvent>();\n /**\n * Callback to invoke when pagination occurs.\n * @param {TreeTablePaginatorState} object - Paginator state.\n * @group Emits\n */\n onPage = output<TreeTablePaginatorState>();\n /**\n * Callback to invoke when a column gets sorted.\n * @param {Object} Object - Sort data.\n * @group Emits\n */\n onSort = output<any>();\n /**\n * Callback to invoke when paging, sorting or filtering happens in lazy mode.\n * @param {TreeTableLazyLoadEvent} event - Custom lazy load event.\n * @group Emits\n */\n onLazyLoad = output<TreeTableLazyLoadEvent>();\n /**\n * An event emitter to invoke on custom sorting, refer to sorting section for details.\n * @param {TreeTableSortEvent} event - Custom sort event.\n * @group Emits\n */\n sortFunction = output<TreeTableSortEvent>();\n /**\n * Callback to invoke when a column is resized.\n * @param {TreeTableColResizeEvent} event - Custom column resize event.\n * @group Emits\n */\n onColResize = output<TreeTableColResizeEvent>();\n /**\n * Callback to invoke when a column is reordered.\n * @param {TreeTableColumnReorderEvent} event - Custom column reorder.\n * @group Emits\n */\n onColReorder = output<TreeTableColumnReorderEvent>();\n /**\n * Callback to invoke when a node is selected.\n * @param {TreeTableNode} object - Node instance.\n * @group Emits\n */\n onNodeSelect = output<TreeTableNode>();\n /**\n * Callback to invoke when a node is unselected.\n * @param {TreeTableNodeUnSelectEvent} event - Custom node unselect event.\n * @group Emits\n */\n onNodeUnselect = output<TreeTableNodeUnSelectEvent>();\n /**\n * Callback to invoke when a node is selected with right click.\n * @param {TreeTableContextMenuSelectEvent} event - Custom context menu select event.\n * @group Emits\n */\n onContextMenuSelect = output<TreeTableContextMenuSelectEvent>();\n /**\n * Callback to invoke when state of header checkbox changes.\n * @param {TreeTableHeaderCheckboxToggleEvent} event - Custom checkbox toggle event.\n * @group Emits\n */\n onHeaderCheckboxToggle = output<TreeTableHeaderCheckboxToggleEvent>();\n /**\n * Callback to invoke when a cell switches to edit mode.\n * @param {TreeTableEditEvent} event - Custom edit event.\n * @group Emits\n */\n onEditInit = output<TreeTableEditEvent>();\n /**\n * Callback to invoke when cell edit is completed.\n * @param {TreeTableEditEvent} event - Custom edit event.\n * @group Emits\n */\n onEditComplete = output<TreeTableEditEvent>();\n /**\n * Callback to invoke when cell edit is cancelled with escape key.\n * @param {TreeTableEditEvent} event - Custom edit event.\n * @group Emits\n */\n onEditCancel = output<TreeTableEditEvent>();\n /**\n * Callback to invoke when selectionKeys are changed.\n * @param {Object} object - updated value of the selectionKeys.\n * @group Emits\n */\n selectionKeysChange = output<any>();\n /**\n * Callback to invoke when collapsedKeys are changed.\n * @param {Object} object - updated value of the collapsedKeys.\n * @group Emits\n */\n collapsedKeysChange = output<any>();\n\n resizeHelperViewChild = viewChild<ElementRef>('resizeHelper');\n\n reorderIndicatorUpViewChild = viewChild<ElementRef>('reorderIndicatorUp');\n\n reorderIndicatorDownViewChild = viewChild<ElementRef>('reorderIndicatorDown');\n\n tableViewChild = viewChild<ElementRef>('table');\n\n scrollableViewChild = viewChild<ElementRef>('scrollableView');\n\n scrollableFrozenViewChild = viewChild<ElementRef>('scrollableFrozenView');\n\n /**\n * @group Templates\n */\n colGroupTemplate = contentChild<TemplateRef<TreeTableColumnsTemplateContext>>('colgroup', { descendants: false });\n /**\n * @group Templates\n */\n captionTemplate = contentChild<TemplateRef<void>>('caption', { descendants: false });\n /**\n * @group Templates\n */\n headerTemplate = contentChild<TemplateRef<TreeTableColumnsTemplateContext>>('header', { descendants: false });\n /**\n * @group Templates\n */\n bodyTemplate = contentChild<TemplateRef<TreeTableBodyTemplateContext>>('body', { descendants: false });\n /**\n * @group Templates\n */\n footerTemplate = contentChild<TemplateRef<TreeTableColumnsTemplateContext>>('footer', { descendants: false });\n /**\n * @group Templates\n */\n summaryTemplate = contentChild<TemplateRef<void>>('summary', { descendants: false });\n /**\n * @group Templates\n */\n emptyMessageTemplate = contentChild<TemplateRef<TreeTableEmptyMessageTemplateContext>>('emptymessage', { descendants: false });\n /**\n * @group Templates\n */\n paginatorLeftTemplate = contentChild<TemplateRef<PaginatorTemplateContext>>('paginatorleft', { descendants: false });\n /**\n * @group Templates\n */\n paginatorRightTemplate = contentChild<TemplateRef<PaginatorTemplateContext>>('paginatorright', { descendants: false });\n /**\n * @group Templates\n */\n paginatorDropdownItemTemplate = contentChild<TemplateRef<PaginatorDropdownItemTemplateContext>>('paginatordropdownitem', { descendants: false });\n /**\n * @group Templates\n */\n frozenHeaderTemplate = contentChild<TemplateRef<TreeTableColumnsTemplateContext>>('frozenheader', { descendants: false });\n /**\n * @group Templates\n */\n frozenBodyTemplate = contentChild<TemplateRef<void>>('frozenbody', { descendants: false });\n /**\n * @group Templates\n */\n frozenFooterTemplate = contentChild<TemplateRef<TreeTableColumnsTemplateContext>>('frozenfooter', { descendants: false });\n /**\n * @group Templates\n */\n frozenColGroupTemplate = contentChild<TemplateRef<TreeTableColumnsTemplateContext>>('frozencolgroup', { descendants: false });\n /**\n * @group Templates\n */\n loadingIconTemplate = contentChild<TemplateRef<void>>('loadingicon', { descendants: false });\n /**\n * @group Templates\n */\n reorderIndicatorUpIconTemplate = contentChild<TemplateRef<void>>('reorderindicatorupicon', { descendants: false });\n /**\n * @group Templates\n */\n reorderIndicatorDownIconTemplate = contentChild<TemplateRef<void>>('reorderindicatordownicon', { descendants: false });\n /**\n * @group Templates\n */\n sortIconTemplate = contentChild<TemplateRef<TreeTableSortIconTemplateContext>>('sorticon', { descendants: false });\n /**\n * @group Templates\n */\n checkboxIconTemplate = contentChild<TemplateRef<TreeTableCheckboxIconTemplateContext>>('checkboxicon', { descendants: false });\n /**\n * @group Templates\n */\n headerCheckboxIconTemplate = contentChild<TemplateRef<TreeTableHeaderCheckboxIconTemplateContext>>('headercheckboxicon', { descendants: false });\n /**\n * @group Templates\n */\n togglerIconTemplate = contentChild<TemplateRef<TreeTableTogglerIconTemplateContext>>('togglericon', { descendants: false });\n /**\n * @group Templates\n */\n paginatorFirstPageLinkIconTemplate = contentChild<TemplateRef<void>>('paginatorfirstpagelinkicon', { descendants: false });\n /**\n * @group Templates\n */\n paginatorLastPageLinkIconTemplate = contentChild<TemplateRef<void>>('paginatorlastpagelinkicon', { descendants: false });\n /**\n * @group Templates\n */\n paginatorPreviousPageLinkIconTemplate = contentChild<TemplateRef<void>>('paginatorpreviouspagelinkicon', { descendants: false });\n /**\n * @group Templates\n */\n paginatorNextPageLinkIconTemplate = contentChild<TemplateRef<void>>('paginatornextpagelinkicon', { descendants: false });\n /**\n * @group Templates\n */\n loaderTemplate = contentChild<TemplateRef<ScrollerLoaderTemplateContext>>('loader', { descendants: false });\n\n showLoadingMask = computed(() => this.loading() && this.showLoader());\n\n showTopPaginator = computed(() => this.paginator() && (this.paginatorPosition() === 'top' || this.paginatorPosition() === 'both'));\n\n showBottomPaginator = computed(() => this.paginator() && (this.paginatorPosition() === 'bottom' || this.paginatorPosition() === 'both'));\n\n dataP = computed(() =>\n this.cn({\n scrollable: this.scrollable(),\n 'flex-scrollable': this.scrollable() && this.scrollHeight() === 'flex',\n loading: this.loading(),\n empty: this.isEmpty()\n })\n );\n\n lastResizerHelperX: Nullable<number>;\n\n reorderIconWidth: Nullable<number>;\n\n reorderIconHeight: Nullable<number>;\n\n draggedColumn: Nullable<any[]>;\n\n dropPosition: Nullable<number>;\n\n preventSelectionSetterPropagation: Nullable<boolean>;\n\n _selection: any;\n\n value: TreeNode<any>[] | undefined = [];\n\n totalRecords: number = 0;\n\n _sortField: string | undefined | null;\n\n _sortOrder: number = 1;\n\n _multiSortMeta: SortMeta[] | undefined | null;\n\n _selectionKeys: any;\n\n _collapsedKeys: any;\n\n first: number = 0;\n\n filters: { [s: string]: FilterMetadata | undefined } = {};\n\n selectedKeys: any = {};\n\n rowTouched: Nullable<boolean>;\n\n private _editingCell = signal<Nullable<Element>>(null);\n\n get editingCell(): Nullable<Element> {\n return this._editingCell();\n }\n\n set editingCell(value: Nullable<Element>) {\n this._editingCell.set(value);\n }\n\n editingCellData: any | undefined | null;\n\n editingCellField: any | undefined | null;\n\n editingCellClick: Nullable<boolean>;\n\n documentEditListener: VoidListener;\n\n initialized: Nullable<boolean>;\n\n toggleRowIndex: Nullable<number>;\n\n serializedValue: any[] | undefined | null;\n\n filteredNodes: Nullable<any[]>;\n\n filterTimeout: any;\n\n filterService = inject(FilterService);\n\n tableService = inject(TreeTableService);\n\n constructor() {\n super();\n\n // value effect\n effect(() => {\n const val = this.valueInput();\n\n untracked(() => {\n if (val !== undefined) {\n this.value = val;\n\n if (!this.lazy()) {\n this.totalRecords = this.value ? this.value.length : 0;\n if (this.sortMode() == 'single' && this._sortField) this.sortSingle();\n else if (this.sortMode() == 'multiple' && this._multiSortMeta) this.sortMultiple();\n else if (this.hasFilter()) this._filter();\n }\n\n this.updateSerializedValue();\n this.tableService.onUIUpdate(this.value);\n }\n });\n });\n\n // sortField effect\n effect(() => {\n const val = this.sortFieldInput();\n\n untracked(() => {\n if (val !== undefined) {\n this._sortField = val;\n\n if (!this.lazy() || this.initialized) {\n if (this.sortMode() === 'single') {\n this.sortSingle();\n }\n }\n }\n });\n });\n\n // sortOrder effect\n effect(() => {\n const val = this.sortOrderInput();\n\n untracked(() => {\n this._sortOrder = val;\n\n if (!this.lazy() || this.initialized) {\n if (this.sortMode() === 'single') {\n this.sortSingle();\n }\n }\n });\n });\n\n // multiSortMeta effect\n effect(() => {\n const val = this.multiSortMetaInput();\n\n untracked(() => {\n if (val !== undefined) {\n this._multiSortMeta = val;\n\n if (this.sortMode() === 'multiple') {\n this.sortMultiple();\n }\n }\n });\n });\n\n // selection effect\n effect(() => {\n const val = this.selectionInput();\n\n untracked(() => {\n if (val !== undefined) {\n this._selection = val;\n\n if (!this.preventSelectionSetterPropagation) {\n this.updateselectedKeys();\n this.tableService.onSelectionChange();\n }\n\n this.preventSelectionSetterPropagation = false;\n }\n });\n });\n\n // totalRecords effect\n effect(() => {\n const val = this.totalRecordsInput();\n\n untracked(() => {\n this.totalRecords = val;\n this.tableService.onTotalRecordsChange(this.totalRecords);\n });\n });\n\n // selectionKeys effect\n effect(() => {\n const val = this.selectionKeys();\n\n untracked(() => {\n if (val !== undefined) {\n this._selectionKeys = val;\n this.selectionKeysChange.emit(this._selectionKeys);\n }\n });\n });\n\n effect(() => {\n const val = this.collapsedKeys();\n\n untracked(() => {\n if (val !== undefined) {\n this._collapsedKeys = val;\n this.applyCollapsedKeys();\n this.updateSerializedValue();\n this.tableService.onUIUpdate(this.value);\n this.collapsedKeysChange.emit(this._collapsedKeys);\n }\n });\n });\n\n // first effect\n effect(() => {\n const val = this.firstInput();\n\n untracked(() => {\n this.first = val;\n });\n });\n\n // filters effect\n effect(() => {\n const val = this.filtersInput();\n\n untracked(() => {\n this.filters = val;\n });\n });\n }\n\n onAfterViewChecked() {\n this.bindDirectiveInstance.setAttrs(this.ptms(['host', 'root']));\n }\n\n onInit() {\n if (this.lazy() && this.lazyLoadOnInit() && !this.virtualScroll()) {\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\n }\n\n this.initialized = true;\n }\n\n updateSerializedValue() {\n this.serializedValue = [];\n\n if (this.paginator()) this.serializePageNodes();\n else this.serializeNodes(null, this.filteredNodes || this.value, 0, true);\n }\n\n serializeNodes(parent: Nullable<TreeTableNode>, nodes: Nullable<TreeNode[]>, level: Nullable<number>, visible: Nullable<boolean>) {\n if (nodes && nodes.length) {\n for (let node of nodes) {\n node.parent = <TreeTableNode>parent;\n const rowNode = {\n node: node,\n parent: parent,\n level: level,\n visible: visible && (parent ? parent.expanded : true)\n };\n\n (<TreeNode[]>this.serializedValue).push(<TreeTableNode>rowNode);\n\n if (rowNode.visible && node.expanded) {\n this.serializeNodes(node, node.children, <number>level + 1, rowNode.visible);\n }\n }\n }\n }\n\n serializePageNodes() {\n let data = this.filteredNodes || this.value;\n\n this.serializedValue = [];\n\n if (data && data.length) {\n const first = this.lazy() ? 0 : this.first;\n\n for (let i = first; i < first + <number>this.rows(); i++) {\n let node = data[i];\n\n if (node) {\n this.serializedValue.push({\n node: node,\n parent: <any>null,\n level: 0,\n visible: true\n });\n\n this.serializeNodes(node, node.children, 1, true);\n }\n }\n }\n }\n\n updateselectedKeys() {\n if (this.dataKey() && this._selection) {\n this.selectedKeys = {};\n\n if (Array.isArray(this._selection)) {\n for (let node of this._selection) {\n this.selectedKeys[String(resolveFieldData(node.data, this.dataKey()))] = 1;\n }\n } else {\n this.selectedKeys[String(resolveFieldData((<any>this._selection).data, this.dataKey()))] = 1;\n }\n }\n }\n\n onPageChange(event: TreeTablePaginatorState) {\n this.first = <number>event.first;\n this.rows.set(<number>event.rows);\n\n if (this.lazy()) this.onLazyLoad.emit(this.createLazyLoadMetadata());\n else this.serializePageNodes();\n\n this.onPage.emit({\n first: this.first,\n rows: <number>event.rows\n });\n\n this.tableService.onUIUpdate(this.value);\n\n if (this.scrollable()) {\n this.resetScrollTop();\n }\n }\n\n sort(event: TreeTableSortEvent) {\n let originalEvent = event.originalEvent;\n\n if (this.sortMode() === 'single') {\n this._sortOrder = this._sortField === event.field ? this._sortOrder * -1 : this.defaultSortOrder();\n this._sortField = event.field;\n this.sortSingle();\n\n if (this.resetPageOnSort() && this.scrollable()) {\n this.resetScrollTop();\n }\n }\n\n if (this.sortMode() === 'multiple') {\n let metaKey = (<KeyboardEvent>originalEvent).metaKey || (<KeyboardEvent>originalEvent).ctrlKey;\n let sortMeta = this.getSortMeta(<string>event.field);\n\n if (sortMeta) {\n if (!metaKey) {\n this._multiSortMeta = [{ field: <string>event.field, order: sortMeta.order * -1 }];\n\n if (this.resetPageOnSort() && this.scrollable()) {\n this.resetScrollTop();\n }\n } else {\n sortMeta.order = sortMeta.order * -1;\n }\n } else {\n if (!metaKey || !this._multiSortMeta) {\n this._multiSortMeta = [];\n\n if (this.resetPageOnSort() && this.scrollable()) {\n this.resetScrollTop();\n }\n }\n\n (<SortMeta[]>this._multiSortMeta).push({ field: <string>event.field, order: this.defaultSortOrder() });\n }\n\n this.sortMultiple();\n }\n }\n\n sortSingle() {\n if (this._sortField && this._sortOrder) {\n if (this.lazy()) {\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\n } else if (this.value) {\n this.sortNodes(this.value);\n\n if (this.hasFilter()) {\n this._filter();\n }\n }\n\n let sortMeta: SortMeta = {\n field: this._sortField,\n order: this._sortOrder\n };\n\n this.onSort.emit(sortMeta);\n this.tableService.onSort(sortMeta);\n this.updateSerializedValue();\n }\n }\n\n sortNodes(nodes: TreeNode[]) {\n if (!nodes || nodes.length === 0) {\n return;\n }\n\n if (this.customSort()) {\n this.sortFunction.emit({\n data: nodes,\n mode: this.sortMode(),\n field: <string>this._sortField,\n order: this._sortOrder\n });\n } else {\n nodes.sort((node1, node2) => {\n let value1 = resolveFieldData(node1.data, this._sortField);\n let value2 = resolveFieldData(node2.data, this._sortField);\n let result: number = 0;\n\n if (value1 == null && value2 != null) result = -1;\n else if (value1 != null && value2 == null) result = 1;\n else if (value1 == null && value2 == null) result = 0;\n else if (typeof value1 === 'string' && typeof value2 === 'string') result = value1.localeCompare(value2, undefined, { numeric: true });\n else result = value1 < value2 ? -1 : value1 > value2 ? 1 : 0;\n\n return this._sortOrder * result;\n });\n }\n\n for (let node of nodes) {\n this.sortNodes(node.children as TreeNode[]);\n }\n }\n\n sortMultiple() {\n if (this._multiSortMeta) {\n if (this.lazy()) {\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\n } else if (this.value) {\n this.sortMultipleNodes(this.value);\n\n if (this.hasFilter()) {\n this._filter();\n }\n }\n\n this.onSort.emit({\n multisortmeta: this._multiSortMeta\n });\n this.updateSerializedValue();\n this.tableService.onSort(this._multiSortMeta);\n }\n }\n\n sortMultipleNodes(nodes: TreeNode[]) {\n if (!nodes || nodes.length === 0) {\n return;\n }\n\n if (this.customSort()) {\n this.sortFunction.emit({\n data: this.value,\n mode: this.sortMode(),\n multiSortMeta: this._multiSortMeta\n });\n } else {\n nodes.sort((node1, node2) => this.multisortField(node1, node2, <SortMeta[]>this._multiSortMeta, 0));\n }\n\n for (let node of nodes) {\n this.sortMultipleNodes(node.children as TreeNode[]);\n }\n }\n\n multisortField(node1: TreeTableNode, node2: TreeTableNode, multiSortMeta: SortMeta[], index: number): number {\n if (isEmpty(this._multiSortMeta) || isEmpty(multiSortMeta[index])) {\n return 0;\n }\n\n let value1 = resolveFieldData(node1.data, multiSortMeta[index].field);\n let value2 = resolveFieldData(node2.data, multiSortMeta[index].field);\n let result: number = 0;\n\n if (value1 == null && value2 != null) result = -1;\n else if (value1 != null && value2 == null) result = 1;\n else if (value1 == null && value2 == null) result = 0;\n\n if (typeof value1 == 'string' || value1 instanceof String) {\n if (value1.localeCompare && value1 != value2) {\n return multiSortMeta[index].order * value1.localeCompare(value2, undefined, { numeric: true });\n }\n } else {\n result = value1 < value2 ? -1 : 1;\n }\n\n if (value1 == value2) {\n return multiSortMeta.length - 1 > index ? this.multisortField(node1, node2, multiSortMeta, index + 1) : 0;\n }\n\n return multiSortMeta[index].order * result;\n }\n\n getSortMeta(field: string) {\n if (this._multiSortMeta && this._multiSortMeta.length) {\n for (let i = 0; i < this._multiSortMeta.length; i++) {\n if (this._multiSortMeta[i].field === field) {\n return this._multiSortMeta[i];\n }\n }\n }\n\n return null;\n }\n\n isSorted(field: string) {\n if (this.sortMode() === 'single') {\n return this._sortField && this._sortField === field;\n } else if (this.sortMode() === 'multiple') {\n let sorted = false;\n\n if (this._multiSortMeta) {\n for (let i = 0; i < this._multiSortMeta.length; i++) {\n if (this._multiSortMeta[i].field == field) {\n sorted = true;\n break;\n }\n }\n }\n\n return sorted;\n }\n }\n\n createLazyLoadMetadata(): any {\n return {\n first: this.first,\n rows: this.rows(),\n sortField: this._sortField,\n sortOrder: this._sortOrder,\n filters: this.filters,\n globalFilter: this.filters && this.filters['global'] ? this.filters['global'].value : null,\n multiSortMeta: this._multiSortMeta,\n forceUpdate: () => this.cd.detectChanges()\n };\n }\n\n onLazyItemLoad(event: TreeTableLazyLoadEvent) {\n this.onLazyLoad.emit({\n ...this.createLazyLoadMetadata(),\n ...event,\n rows: event.last - event.first\n });\n }\n /**\n * Resets scroll to top.\n * @group Method\n */\n public resetScrollTop() {\n if (this.virtualScroll()) this.scrollToVirtualIndex(0);\n else this.scrollTo({ top: 0 });\n }\n /**\n * Scrolls to given index when using virtual scroll.\n * @param {number} index - index of the element.\n * @group Method\n */\n public scrollToVirtualIndex(index: number) {\n if (this.scrollableViewChild()) {\n (<any>this.scrollableViewChild()).scrollToVirtualIndex(<number>index);\n }\n\n if (this.scrollableFrozenViewChild()) {\n (<any>this.scrollableViewChild()).scrollToVirtualIndex(index);\n }\n }\n /**\n * Scrolls to given index.\n * @param {ScrollToOptions} options - Scroll options.\n * @group Method\n */\n public scrollTo(options: ScrollToOptions) {\n if (this.scrollableViewChild()) {\n (<any>this.scrollableViewChild()).scrollTo(options);\n }\n\n if (this.scrollableFrozenViewChild()) {\n (<any>this.scrollableViewChild()).scrollTo(options);\n }\n }\n\n isEmpty() {\n let data = this.filteredNodes || this.value;\n\n return data == null || data.length == 0;\n }\n\n getBlockableElement(): HTMLElement {\n return this.el.nativeElement.children[0];\n }\n\n onColumnResizeBegin(event: MouseEvent) {\n let containerLeft = <any>getOffset(this.el?.nativeElement).left;\n\n this.lastResizerHelperX = event.pageX - containerLeft + this.el?.nativeElement.scrollLeft;\n event.preventDefault();\n }\n\n onColumnResize(event: MouseEvent) {\n let containerLeft = <any>getOffset(this.el?.nativeElement).left;\n\n this.el?.nativeElement.setAttribute('data-p-unselectable-text', 'true');\n\n if (!this.$unstyled()) {\n addStyle(this.el.nativeElement, { 'user-select': 'none' });\n }\n\n this.resizeHelperViewChild()!.nativeElement.style.height = this.el?.nativeElement.offsetHeight + 'px';\n this.resizeHelperViewChild()!.nativeElement.style.top = 0 + 'px';\n this.resizeHelperViewChild()!.nativeElement.style.left = event.pageX - containerLeft + this.el?.nativeElement.scrollLeft + 'px';\n\n this.resizeHelperViewChild()!.nativeElement.style.display = 'block';\n }\n\n onColumnResizeEnd(event: MouseEvent, column: any) {\n let delta = this.resizeHelperViewChild()!.nativeElement.offsetLeft - <number>this.lastResizerHelperX;\n let columnWidth = column.offsetWidth;\n let newColumnWidth = columnWidth + delta;\n let minWidth = column.style.minWidth || 15;\n\n if (columnWidth + delta > parseInt(minWidth)) {\n if (this.columnResizeMode() === 'fit') {\n let nextColumn = column.nextElementSibling;\n\n while (!nextColumn.offsetParent) {\n nextColumn = nextColumn.nextElementSibling;\n }\n\n if (nextColumn) {\n let nextColumnWidth = nextColumn.offsetWidth - delta;\n let nextColumnMinWidth = nextColumn.style.minWidth || 15;\n\n if (newColumnWidth > 15 && nextColumnWidth > parseInt(nextColumnMinWidth)) {\n if (this.scrollable()) {\n let scrollableView = this.findParentScrollableView(column);\n let scrollableBodyTable = <any>findSingle(scrollableView, '[data-pc-section=\"scrollablebody\"] table') || findSingle(scrollableView, '[data-pc-name=\"virtualscroller\"] table');\n let scrollableHeaderTable = <any>findSingle(scrollableView, '[data-pc-section=\"scrollableheadertable\"]');\n let scrollableFooterTable = <any>findSingle(scrollableView, '[data-pc-section=\"scrollablefootertable\"]');\n let resizeColumnIndex = getIndex(column);\n\n this.resizeColGroup(scrollableHeaderTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);\n this.resizeColGroup(scrollableBodyTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);\n this.resizeColGroup(scrollableFooterTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);\n } else {\n column.style.width = newColumnWidth + 'px';\n\n if (nextColumn) {\n nextColumn.style.width = nextColumnWidth + 'px';\n }\n }\n }\n }\n } else if (this.columnResizeMode() === 'expand') {\n if (this.scrollable()) {\n let scrollableView = this.findParentScrollableView(column);\n let scrollableBody = <any>findSingle(scrollableView, '[data-pc-section=\"scrollablebody\"]') || findSingle(scrollableView, '[data-pc-name=\"virtualscroller\"]');\n let scrollableHeader = <any>findSingle(scrollableView, '[data-pc-section=\"scrollableheader\"]');\n let scrollableFooter = <any>findSingle(scrollableView, '[data-pc-section=\"scrollablefooter\"]');\n let scrollableBodyTable = <any>findSingle(scrollableView, '[data-pc-section=\"scrollablebody\"] table') || findSingle(scrollableView, '[data-pc-name=\"virtualscroller\"] table');\n let scrollableHeaderTable = <any>findSingle(scrollableView, '[data-pc-section=\"scrollableheadertable\"]');\n let scrollableFooterTable = <any>findSingle(scrollableView, '[data-pc-section=\"scrollablefootertable\"]');\n\n scrollableBodyTable.style.width = scrollableBodyTable.offsetWidth + delta + 'px';\n scrollableHeaderTable.style.width = scrollableHeaderTable.offsetWidth + delta + 'px';\n\n if (scrollableFooterTable) {\n scrollableFooterTable.style.width = scrollableFooterTable.offsetWidth + delta + 'px';\n }\n\n let resizeColumnIndex = getIndex(column);\n\n const scrollableBodyTableWidth = column ? scrollableBodyTable.offsetWidth + delta : newColumnWidth;\n const scrollableHeaderTableWidth = column ? scrollableHeaderTable.offsetWidth + delta : newColumnWidth;\n const isContainerInViewport = this.el?.nativeElement.offsetWidth >= scrollableBodyTableWidth;\n\n let setWidth = (container: HTMLElement, table: HTMLElement, width: number, isContainerInViewport: boolean) => {\n if (container && table) {\n container.style.width = isContainerInViewport ? width + calculateScrollbarWidth(scrollableBody) + 'px' : 'auto';\n table.style.width = width + 'px';\n }\n };\n\n setWidth(scrollableBody, scrollableBodyTable, scrollableBodyTableWidth, isContainerInViewport);\n setWidth(scrollableHeader, scrollableHeaderTable, scrollableHeaderTableWidth, isContainerInViewport);\n setWidth(scrollableFooter, scrollableFooterTable, scrollableHeaderTableWidth, isContainerInViewport);\n\n this.resizeColGroup(scrollableHeaderTable, resizeColumnIndex, newColumnWidth, null);\n this.resizeColGroup(scrollableBodyTable, resizeColumnIndex, newColumnWidth, null);\n this.resizeColGroup(scrollableFooterTable, resizeColumnIndex, newColumnWidth, null);\n } else {\n this.tableViewChild()!.nativeElement.style.width = this.tableViewChild()?.nativeElement.offsetWidth + delta + 'px';\n column.style.width = newColumnWidth + 'px';\n let containerWidth = this.tableViewChild()?.nativeElement.style.width;\n\n (<ElementRef>this.el).nativeElement.style.width = containerWidth + 'px';\n }\n }\n\n this.onColResize.emit({\n element: column,\n delta: delta\n });\n }\n\n this.resizeHelperViewChild()!.nativeElement.style.display = 'none';\n\n this.el.nativeElement.removeAttribute('data-p-unselectable-text');\n\n if (!this.$unstyled()) {\n this.el.nativeElement.style['user-select'] = '';\n }\n }\n\n findParentScrollableView(column: any) {\n if (column) {\n let parent = column.parentElement;\n\n while (parent && !findSingle(parent, '[data-pc-section=\"scrollableview\"]')) {\n parent = parent.parentElement;\n }\n\n return parent;\n } else {\n return null;\n }\n }\n\n resizeColGroup(table: Nullable<HTMLElement>, resizeColumnIndex: Nullable<number>, newColumnWidth: Nullable<number>, nextColumnWidth: Nullable<number>) {\n if (table) {\n let colGroup = table.children[0].nodeName === 'COLGROUP' ? table.children[0] : null;\n\n if (colGroup) {\n let col = colGroup.children[<number>resizeColumnIndex];\n let nextCol = col.nextElementSibling;\n\n (<HTMLElement>col).style.width = newColumnWidth + 'px';\n\n if (nextCol && nextColumnWidth) {\n (<HTMLElement>nextCol).style.width = nextColumnWidth + 'px';\n }\n } else {\n throw 'Scrollable tables require a colgroup to support resizable columns';\n }\n }\n }\n\n onColumnDragStart(event: DragEvent, columnElement: any) {\n this.reorderIconWidth = getHiddenElementOuterWidth(this.reorderIndicatorUpViewChild()?.nativeElement);\n this.reorderIconHeight = getHiddenElementOuterHeight(this.reorderIndicatorDownViewChild()?.nativeElement);\n this.draggedColumn = columnElement;\n (<any>event).dataTransfer.setData('text', 'b'); // For firefox\n }\n\n onColumnDragEnter(event: DragEvent, dropHeader: any) {\n if (this.reorderableColumns() && this.draggedColumn && dropHeader) {\n event.preventDefault();\n let containerOffset = <any>getOffset(this.el?.nativeElement);\n let dropHeaderOffset = <any>getOffset(dropHeader);\n\n if (this.draggedColumn != dropHeader) {\n let targetLeft = dropHeaderOffset.left - containerOffset.left;\n let columnCenter = dropHeaderOffset.left + dropHeader.offsetWidth / 2;\n\n this.reorderIndicatorUpViewChild()!.nativeElement.style.top = dropHeaderOffset.top - containerOffset.top - (<number>this.reorderIconHeight - 1) + 'px';\n this.reorderIndicatorDownViewChild()!.nativeElement.style.top = dropHeaderOffset.top - containerOffset.top + dropHeader.offsetHeight + 'px';\n\n if (event.pageX > columnCenter) {\n this.reorderIndicatorUpViewChild()!.nativeElement.style.left = targetLeft + dropHeader.offsetWidth - Math.ceil(<number>this.reorderIconWidth / 2) + 'px';\n this.reorderIndicatorDownViewChild()!.nativeElement.style.left = targetLeft + dropHeader.offsetWidth - Math.ceil(<number>this.reorderIconWidth / 2) + 'px';\n this.dropPosition = 1;\n } else {\n this.reorderIndicatorUpViewChild()!.nativeElement.style.left = targetLeft - Math.ceil(<number>this.reorderIconWidth / 2) + 'px';\n this.reorderIndicatorDownViewChild()!.nativeElement.style.left = targetLeft - Math.ceil(<number>this.reorderIconWidth / 2) + 'px';\n this.dropPosition = -1;\n }\n\n this.reorderIndicatorUpViewChild()!.nativeElement.style.display = 'block';\n this.reorderIndicatorDownViewChild()!.nativeElement.style.display = 'block';\n } else {\n (<any>event).dataTransfer.dropEffect = 'none';\n }\n }\n }\n\n onColumnDragLeave(event: DragEvent) {\n if (this.reorderableColumns() && this.draggedColumn) {\n event.preventDefault();\n this.reorderIndicatorUpViewChild()!.nativeElement.style.display = 'none';\n this.reorderIndicatorDownViewChild()!.nativeElement.style.display = 'none';\n }\n }\n\n onColumnDrop(event: DragEvent, dropColumn: any) {\n event.preventDefault();\n\n if (this.draggedColumn) {\n let dragIndex = DomHandler.indexWithinGroup(this.draggedColumn, 'ttreorderablecolumn');\n let dropIndex = DomHandler.indexWithinGroup(dropColumn, 'ttreorderablecolumn');\n let allowDrop = dragIndex != dropIndex;\n\n if (allowDrop && ((dropIndex - dragIndex == 1 && this.dropPosition === -1) || (dragIndex - dropIndex == 1 && this.dropPosition === 1))) {\n allowDrop = false;\n }\n\n if (allowDrop && dropIndex < dragIndex && this.dropPosition === 1) {\n dropIndex = dropIndex + 1;\n }\n\n if (allowDrop && dropIndex > dragIndex && this.dropPosition === -1) {\n dropIndex = dropIndex - 1;\n }\n\n if (allowDrop) {\n reorderArray(<any[]>this.columns(), dragIndex, dropIndex);\n\n this.onColReorder.emit({\n dragIndex: dragIndex,\n dropIndex: dropIndex,\n columns: this.columns()\n });\n }\n\n this.reorderIndicatorUpViewChild()!.nativeElement.style.display = 'none';\n this.reorderIndicatorDownViewChild()!.nativeElement.style.display = 'none';\n (this.draggedColumn as any).draggable = false;\n this.draggedColumn = null;\n this.dropPosition = null;\n }\n }\n\n handleRowClick(event: any) {\n let targetNode = (<HTMLElement>event.originalEvent.target).nodeName;\n\n if (targetNode == 'INPUT' || targetNode == 'BUTTON' || targetNode == 'A' || isClickable(event.originalEvent.target)) {\n return;\n }\n\n if (this.selectionMode()) {\n this.preventSelectionSetterPropagation = true;\n let rowNode = event.rowNode;\n let selected = this.isSelected((<any>rowNode).node);\n let metaSelection = this.rowTouched ? false : this.metaKeySelection();\n let dataKeyValue = this.dataKey() ? String(resolveFieldData((<TreeTableNode>rowNode.node).data, this.dataKey())) : null;\n\n if (metaSelection) {\n let keyboardEvent = <KeyboardEvent>event.originalEvent;\n let metaKey = keyboardEvent.metaKey || keyboardEvent.ctrlKey;\n\n if (selected && metaKey) {\n if (this.isSingleSelectionMode()) {\n this._selection = null;\n this.selectedKeys = {};\n this.selectionChange.emit(null);\n } else {\n let selectionIndex = this.findIndexInSelection(rowNode.node);\n\n this._selection = this._selection.filter((val: TreeTableNode, i: number) => i != selectionIndex);\n this.selectionChange.emit(this._selection);\n\n if (dataKeyValue) {\n delete this.selectedKeys[dataKeyValue];\n }\n }\n\n this.onNodeUnselect.emit({\n originalEvent: event.originalEvent,\n node: <TreeTableNode>rowNode.node,\n type: 'row'\n });\n } else {\n if (this.isSingleSelectionMode()) {\n this._selection = rowNode.node;\n this.selectionChange.emit(rowNode.node);\n\n if (dataKeyValue) {\n this.selectedKeys = {};\n this.selectedKeys[dataKeyValue] = 1;\n }\n } else if (this.isMultipleSelectionMode()) {\n if (metaKey) {\n this._selection = this._selection || [];\n } else {\n this._selection = [];\n this.selectedKeys = {};\n }\n\n this._selection = [...this._selection, rowNode.node];\n this.selectionChange.emit(this._selection);\n\n if (dataKeyValue) {\n this.selectedKeys[dataKeyValue] = 1;\n }\n }\n\n this.onNodeSelect.emit({\n originalEvent: event.originalEvent,\n node: rowNode.node,\n type: 'row',\n index: (<any>event).rowIndex\n });\n }\n } else {\n if (this.selectionMode() === 'single') {\n if (selected) {\n this._selection = null;\n this.selectedKeys = {};\n this.selectionChange.emit(this._selection);\n this.onNodeUnselect.emit({\n originalEvent: event.originalEvent,\n node: <TreeTableNode>rowNode.node,\n type: 'row'\n });\n } else {\n this._selection = rowNode.node;\n this.selectionChange.emit(this._selection);\n this.onNodeSelect.emit({\n originalEvent: event.originalEvent,\n node: rowNode.node,\n type: 'row',\n index: event.rowIndex\n });\n\n if (dataKeyValue) {\n this.selectedKeys = {};\n this.selectedKeys[dataKeyValue] = 1;\n }\n }\n } else if (this.selectionMode() === 'multiple') {\n if (selected) {\n let selectionIndex = this.findIndexInSelection(rowNode.node);\n\n this._selection = this._selection.filter((val: TreeTableNode, i: number) => i != selectionIndex);\n this.selectionChange.emit(this._selection);\n this.onNodeUnselect.emit({\n originalEvent: event.originalEvent,\n node: rowNode.node,\n type: 'row'\n });\n\n if (dataKeyValue) {\n delete this.selectedKeys[dataKeyValue];\n }\n } else {\n this._selection = this._selection ? [...this._selection, rowNode.node] : [rowNode.node];\n this.selectionChange.emit(this._selection);\n this.onNodeSelect.emit({\n originalEvent: event.originalEvent,\n node: rowNode.node,\n type: 'row',\n index: event.rowIndex\n });\n\n if (dataKeyValue) {\n this.selectedKeys[dataKeyValue] = 1;\n }\n }\n }\n }\n\n this.tableService.onSelectionChange();\n }\n\n this.rowTouched = false;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n handleRowTouchEnd(event: Event) {\n this.rowTouched = true;\n }\n\n handleRowRightClick(event: any) {\n const ctxMenu = this.contextMenu();\n\n if (ctxMenu) {\n const node = event.rowNode.node;\n\n const showContextMenu = () => {\n ctxMenu.show(event.originalEvent);\n\n ctxMenu.hideCallback = () => {\n this.contextMenuSelectionChange.emit(null as any);\n this.tableService.onContextMenu(null);\n };\n };\n\n this.contextMenuSelectionChange.emit(node);\n this.tableService.onContextMenu(node);\n showContextMenu();\n this.onContextMenuSelect.emit({ originalEvent: event.originalEvent, node: node });\n }\n }\n\n toggleNodeWithCheckbox(event: any) {\n // legacy selection support, will be removed in v18\n this._selection = this._selection || [];\n this.preventSelectionSetterPropagation = true;\n let node = event.rowNode.node;\n let selected = this.isSelected(node);\n\n if (selected) {\n this.propagateSelectionDown(node, false);\n\n if (event.rowNode.parent) {\n this.propagateSelectionUp(node.parent, false);\n }\n\n this.selectionChange.emit(this._selection);\n this.onNodeUnselect.emit({ originalEvent: event, node: node });\n } else {\n this.propagateSelectionDown(node, true);\n\n if (event.rowNode.parent) {\n this.propagateSelectionUp(node.parent, true);\n }\n\n this.selectionChange.emit(this._selection);\n this.onNodeSelect.emit({ originalEvent: event, node: node });\n }\n\n this.tableService.onSelectionChange();\n }\n\n toggleNodesWithCheckbox(event: Event | CheckboxChangeEvent, check: boolean) {\n // legacy selection support, will be removed in v18\n let data = this.filteredNodes || this.value;\n\n this._selection = check && data ? data.slice() : [];\n\n this.toggleAll(check);\n\n if (!check) {\n this._selection = [];\n this.selectedKeys = {};\n }\n\n this.preventSelectionSetterPropagation = true;\n this.selectionChange.emit(this._selection);\n this.tableService.onSelectionChange();\n\n this.onHeaderCheckboxToggle.emit({ originalEvent: event as Event, checked: check });\n }\n\n toggleAll(checked: boolean) {\n let data = this.filteredNodes || this.value;\n\n if (!this._selectionKeys) {\n if (data && data.length) {\n for (let node of data) {\n this.propagateSelectionDown(node, checked);\n }\n }\n } else {\n // legacy selection support, will be removed in v18\n if (data && data.length) {\n for (let node of data) {\n this.propagateDown(node, checked);\n }\n\n this.selectionKeysChange.emit(this._selectionKeys);\n }\n }\n }\n\n propagateSelectionUp(node: TreeTableNode, select: boolean) {\n // legacy selection support, will be removed in v18\n if (node.children && node.children.length) {\n let selectedChildCount: number = 0;\n let childPartialSelected: boolean = false;\n let dataKeyValue = this.dataKey() ? String(resolveFieldData(node.data, this.dataKey())) : null;\n\n for (let child of node.children) {\n if (this.isSelected(child)) selectedChildCount++;\n else if (child.partialSelected) childPartialSelected = true;\n }\n\n if (select && selectedChildCount == node.children.length) {\n this._selection = [...(this._selection || []), node];\n node.partialSelected = false;\n\n if (dataKeyValue) {\n this.selectedKeys[dataKeyValue] = 1;\n }\n } else {\n if (!select) {\n let index = this.findIndexInSelection(node);\n\n if (index >= 0) {\n this._selection = this._selection.filter((val: any, i: number) => i != index);\n\n if (dataKeyValue) {\n delete this.selectedKeys[dataKeyValue];\n }\n }\n }\n\n if (childPartialSelected || (selectedChildCount > 0 && selectedChildCount != node.children.length)) node.partialSelected = true;\n else node.partialSelected = false;\n }\n }\n\n let parent = node.parent;\n\n node.checked = select;\n\n if (parent) {\n this.propagateSelectionUp(parent, select);\n }\n }\n\n propagateSelectionDown(node: TreeTableNode, select: boolean) {\n // legacy selection support, will be removed in v18\n let index = this.findIndexInSelection(node);\n let dataKeyValue = this.dataKey() ? String(resolveFieldData(node.data, this.dataKey())) : null;\n\n if (select && index == -1) {\n this._selection = [...(this._selection || []), node];\n\n if (dataKeyValue) {\n this.selectedKeys[dataKeyValue] = 1;\n }\n } else if (!select && index > -1) {\n this._selection = this._selection.filter((val: any, i: number) => i != index);\n\n if (dataKeyValue) {\n delete this.selectedKeys[dataKeyValue];\n }\n }\n\n node.partialSelected = false;\n node.checked = select;\n\n if (node.children && node.children.length) {\n for (let child of node.children) {\n this.propagateSelectionDown(child, select);\n }\n }\n }\n\n isSelected(node: TreeTableNode) {\n // legacy selection support, will be removed in v18\n if (node && this._selection) {\n if (this.dataKey()) {\n if (Object.prototype.hasOwnProperty.call(node, 'checked')) {\n return node['checked'];\n } else {\n return this.selectedKeys[resolveFieldData(node.data, this.dataKey())] !== undefined;\n }\n } else {\n if (Array.isArray(this._selection)) return this.findIndexInSelection(node) > -1;\n else return this.equals(node, this._selection);\n }\n }\n\n return false;\n }\n\n isNodeSelected(node) {\n return this.selectionMode() && this._selectionKeys ? this._selectionKeys[this.nodeKey(node)]?.checked === true : false;\n }\n\n isNodePartialSelected(node) {\n return this.selectionMode() && this._selectionKeys ? this._selectionKeys[this.nodeKey(node)]?.partialChecked === true : false;\n }\n\n nodeKey(node) {\n return resolveFieldData(node, this.dataKey()) || resolveFieldData(node?.data, this.dataKey());\n }\n\n /**\n * Projects the current `collapsedKeys` map onto each node's `expanded` flag (a row is expanded\n * unless its key maps to `true`).\n */\n applyCollapsedKeys() {\n if (this._collapsedKeys == null) {\n return;\n }\n\n const walk = (nodes?: TreeTableNode[] | null) => {\n if (!nodes) return;\n\n for (const node of nodes) {\n const key = this.nodeKey(node);\n\n if (key != null) {\n node.expanded = !this._collapsedKeys[key];\n }\n\n if (node.children) {\n walk(node.children as TreeTableNode[]);\n }\n }\n };\n\n walk(this.value as TreeTableNode[]);\n }\n\n /**\n * Reflects a row's expansion change back into the two-way `collapsedKeys` map when it is in use.\n */\n setNodeCollapsed(node: TreeTableNode, collapsed: boolean) {\n if (this._collapsedKeys == null) {\n return;\n }\n\n const key = this.nodeKey(node);\n\n if (key == null) {\n return;\n }\n\n const next = { ...this._collapsedKeys };\n\n if (collapsed) {\n next[key] = true;\n } else {\n delete next[key];\n }\n\n this._collapsedKeys = next;\n this.collapsedKeysChange.emit(this._collapsedKeys);\n }\n\n toggleCheckbox(event) {\n let { rowNode, check, originalEvent } = event;\n let node = rowNode.node;\n\n if (this._selectionKeys) {\n this.propagateDown(node, check);\n\n if (node.parent) {\n this.propagateUp(node.parent, check);\n }\n\n this.selectionKeysChange.emit(this._selectionKeys);\n } else {\n this.toggleNodeWithCheckbox({ originalEvent, rowNode });\n }\n\n this.tableService.onSelectionChange();\n }\n\n propagateDown(node, check) {\n if (check) {\n this._selectionKeys[this.nodeKey(node)] = { checked: true, partialChecked: false };\n } else {\n delete this._selectionKeys[this.nodeKey(node)];\n }\n\n if (node.children && node.children.length) {\n for (let child of node.children) {\n this.propagateDown(child, check);\n }\n }\n }\n\n propagateUp(node, check) {\n let checkedChildCount = 0;\n let childPartialSelected = false;\n\n for (let child of node.children) {\n if (this._selectionKeys[this.nodeKey(child)] && this._selectionKeys[this.nodeKey(child)].checked) checkedChildCount++;\n else if (this._selectionKeys[this.nodeKey(child)] && this._selectionKeys[this.nodeKey(child)].partialChecked) childPartialSelected = true;\n }\n\n if (check && checkedChildCount === node.children.length) {\n this._selectionKeys[this.nodeKey(node)] = { checked: true, partialChecked: false };\n } else {\n if (!check) {\n delete this._selectionKeys[this.nodeKey(node)];\n }\n\n if (childPartialSelected || (checkedChildCount > 0 && checkedChildCount !== node.children.length)) this._selectionKeys[this.nodeKey(node)] = { checked: false, partialChecked: true };\n else this._selectionKeys[this.nodeKey(node)] = { checked: false, partialChecked: false };\n }\n\n let parent = node.parent;\n\n if (parent) {\n this.propagateUp(parent, check);\n }\n }\n\n findIndexInSelection(node: any) {\n let index: number = -1;\n\n if (this._selection && this._selection.length) {\n for (let i = 0; i < this._selection.length; i++) {\n if (this.equals(node, this._selection[i])) {\n index = i;\n break;\n }\n }\n }\n\n return index;\n }\n\n isSingleSelectionMode() {\n return this.selectionMode() === 'single';\n }\n\n isMultipleSelectionMode() {\n return this.selectionMode() === 'multiple';\n }\n\n equals(node1: TreeTableNode, node2: TreeTableNode) {\n return this.compareSelectionBy() === 'equals' ? equals(node1, node2) : equals(node1.data, node2.data, this.dataKey());\n }\n\n filter(value: string | string[], field: string, matchMode: string) {\n if (this.filterTimeout) {\n clearTimeout(this.filterTimeout);\n }\n\n if (!this.isFilterBlank(value)) {\n this.filters[field] = { value: value, matchMode: matchMode };\n } else if (this.filters[field]) {\n delete this.filters[field];\n }\n\n this.filterTimeout = setTimeout(() => {\n this._filter();\n this.filterTimeout = null;\n }, this.filterDelay());\n }\n\n filterGlobal(value: string, matchMode: string) {\n this.filter(value, 'global', matchMode);\n }\n\n isFilterBlank(filter: any): boolean {\n if (filter !== null && filter !== undefined) {\n if ((typeof filter === 'string' && filter.trim().length == 0) || (Array.isArray(filter) && filter.length == 0)) return true;\n else return false;\n }\n\n return true;\n }\n\n _filter() {\n if (this.lazy()) {\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\n } else {\n if (!this.value) {\n return;\n }\n\n if (!this.hasFilter()) {\n this.filteredNodes = null;\n\n if (this.paginator()) {\n this.totalRecords = this.value ? this.value.length : 0;\n }\n } else {\n let globalFilterFieldsArray;\n\n if (this.filters['global']) {\n if (!this.columns() && !this.globalFilterFields()) throw new Error('Global filtering requires dynamic columns or globalFilterFields to be defined.');\n else globalFilterFieldsArray = this.globalFilterFields() || this.columns();\n }\n\n this.filteredNodes = [];\n const isStrictMode = this.filterMode() === 'strict';\n let isValueChanged = false;\n\n for (let node of this.value) {\n let copyNode = { ...node };\n let localMatch = true;\n let globalMatch = false;\n let paramsWithoutNode;\n\n for (let prop in this.filters) {\n if (Object.prototype.hasOwnProperty.call(this.filters, prop) && prop !== 'global') {\n let filterMeta = <FilterMetadata>this.filters[prop];\n let filterField = prop;\n let filterValue = filterMeta.value;\n let filterMatchMode = filterMeta.matchMode || 'startsWith';\n let filterConstraint = (<any>this.filterService).filters[filterMatchMode];\n\n paramsWithoutNode = { filterField, filterValue, filterConstraint, isStrictMode };\n\n if (\n (isStrictMode && !(this.findFilteredNodes(copyNode, paramsWithoutNode) || this.isFilterMatched(copyNode, paramsWithoutNode))) ||\n (!isStrictMode && !(this.isFilterMatched(copyNode, paramsWithoutNode) || this.findFilteredNodes(copyNode, paramsWithoutNode)))\n ) {\n localMatch = false;\n }\n\n if (!localMatch) {\n break;\n }\n }\n }\n\n if (this.filters['global'] && !globalMatch && globalFilterFieldsArray) {\n let copyNodeForGlobal = { ...copyNode };\n let filterField = undefined;\n let filterValue = this.filters['global'].value;\n let filterConstraint = (<any>this.filterService).filters[(<any>this.filters)['global'].matchMode];\n\n paramsWithoutNode = {\n filterField,\n filterValue,\n filterConstraint,\n isStrictMode,\n globalFilterFieldsArray\n };\n\n if (\n (isStrictMode && (this.findFilteredNodes(copyNodeForGlobal, paramsWithoutNode) || this.isFilterMatched(copyNodeForGlobal, paramsWithoutNode))) ||\n (!isStrictMode && (this.isFilterMatched(copyNodeForGlobal, paramsWithoutNode) || this.findFilteredNodes(copyNodeForGlobal, paramsWithoutNode)))\n ) {\n globalMatch = true;\n copyNode = copyNodeForGlobal;\n }\n }\n\n let matches = localMatch;\n\n if (this.filters['global']) {\n matches = localMatch && globalMatch;\n }\n\n if (matches) {\n this.filteredNodes.push(copyNode);\n }\n\n isValueChanged = isValueChanged || !localMatch || globalMatch || (localMatch && this.filteredNodes.length > 0) || (!globalMatch && this.filteredNodes.length === 0);\n }\n\n if (!isValueChanged) {\n this.filteredNodes = null;\n }\n\n if (this.paginator()) {\n this.totalRecords = this.filteredNodes ? this.filteredNodes.length : this.value ? this.value.length : 0;\n }\n }\n\n this.cd.markForCheck();\n }\n\n this.first = 0;\n\n const filteredValue = this.filteredNodes || this.value;\n\n this.onFilter.emit({\n filters: this.filters,\n filteredValue: filteredValue\n });\n\n this.tableService.onUIUpdate(filteredValue);\n this.updateSerializedValue();\n\n if (this.scrollable()) {\n this.resetScrollTop();\n }\n }\n\n findFilteredNodes(node: TreeTableNode, paramsWithoutNode: any) {\n if (node) {\n let matched = false;\n\n if (node.children) {\n let childNodes = [...node.children];\n\n node.children = [];\n\n for (let childNode of childNodes) {\n let copyChildNode = { ...childNode };\n\n if (this.isFilterMatched(copyChildNode, paramsWithoutNode)) {\n matched = true;\n node.children.push(copyChildNode);\n }\n }\n }\n\n if (matched) {\n return true;\n }\n }\n }\n\n isFilterMatched(node: TreeTableNode, filterOptions: TreeTableFilterOptions) {\n let { filterField, filterValue, filterConstraint, isStrictMode, globalFilterFieldsArray } = <any>filterOptions;\n let matched = false;\n const isMatched = (field: string) => filterConstraint(resolveFieldData(node.data, field), filterValue, <string>this.filterLocale());\n\n matched = globalFilterFieldsArray?.length ? globalFilterFieldsArray.some((globalFilterField) => isMatched(globalFilterField.field || globalFilterField)) : isMatched(filterField);\n\n if (!matched || (isStrictMode && !this.isNodeLeaf(node))) {\n matched =\n this.findFilteredNodes(node, {\n filterField,\n filterValue,\n filterConstraint,\n isStrictMode,\n globalFilterFieldsArray\n }) || matched;\n }\n\n return matched;\n }\n\n isNodeLeaf(node: TreeTableNode) {\n return node.leaf === false ? false : !(node.children && node.children.length);\n }\n\n hasFilter() {\n let empty = true;\n\n for (let prop in this.filters) {\n if (Object.prototype.hasOwnProperty.call(this.filters, prop)) {\n empty = false;\n break;\n }\n }\n\n return !empty;\n }\n /**\n * Clears the sort and paginator state.\n * @group Method\n */\n public reset() {\n this._sortField = null;\n this._sortOrder = 1;\n this._multiSortMeta = null;\n this.tableService.onSort(null);\n\n this.filteredNodes = null;\n this.filters = {};\n\n this.first = 0;\n\n if (this.lazy()) {\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\n } else {\n this.totalRecords = this.value ? this.value.length : 0;\n }\n }\n\n updateEditingCell(cell: any, data: any, field: string) {\n this.editingCell = cell;\n this.editingCellData = data;\n this.editingCellField = field;\n this.bindDocumentEditListener();\n }\n\n isEditingCellValid() {\n return this.editingCell && find(this.editingCell, '.ng-invalid.ng-dirty').length === 0;\n }\n\n bindDocumentEditListener() {\n if (!this.documentEditListener) {\n this.documentEditListener = this.renderer.listen(this.document, 'click', () => {\n if (this.editingCell && !this.editingCellClick && this.isEditingCellValid()) {\n if (!this.$unstyled()) {\n removeClass(this.editingCell, 'p-cell-editing');\n }\n\n this.editingCell = null;\n this.onEditComplete.emit({ field: this.editingCellField, data: this.editingCellData });\n this.editingCellField = null;\n this.editingCellData = null;\n this.unbindDocumentEditListener();\n }\n\n this.editingCellClick = false;\n });\n }\n }\n\n unbindDocumentEditListener() {\n if (this.documentEditListener) {\n this.documentEditListener();\n this.documentEditListener = null;\n }\n }\n\n onDestroy() {\n this.unbindDocumentEditListener();\n this.editingCell = null;\n this.editingCellField = null;\n this.editingCellData = null;\n this.initialized = null;\n }\n}\n","import { booleanAttribute, Directive, HostListener, inject, input, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { clearSelection } from '@primeuix/utils';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { Bind } from 'primeng/bind';\nimport { TreeTableStyle } from './style/treetablestyle';\nimport { TREETABLE_INSTANCE } from './treetable-service';\nimport type { TreeTable } from './treetable';\n\n@Directive({\n selector: '[ttSortableColumn]',\n standalone: true,\n host: {\n '[class]': 'cx(\"sortableColumn\")',\n '[tabindex]': 'hostTabindex',\n role: 'columnheader',\n '[attr.aria-sort]': 'ariaSorted'\n },\n providers: [TreeTableStyle],\n hostDirectives: [Bind]\n})\nexport class TTSortableColumn extends BaseComponent {\n hostName = 'TreeTable ';\n\n bindDirectiveInstance = inject(Bind, { self: true });\n\n field = input<string>(undefined, { alias: 'ttSortableColumn' });\n\n ttSortableColumnDisabled = input(undefined, { transform: booleanAttribute });\n\n sorted = signal<boolean | undefined>(undefined);\n\n _componentStyle = inject(TreeTableStyle);\n\n tt = inject<TreeTable>(TREETABLE_INSTANCE);\n\n get hostTabindex() {\n return this.isEnabled() ? '0' : null;\n }\n\n get ariaSorted() {\n if (this.sorted() && this.tt._sortOrder < 0) return 'descending';\n else if (this.sorted() && this.tt._sortOrder > 0) return 'ascending';\n else return 'none';\n }\n\n constructor() {\n super();\n this.tt.tableService.sortSource$.pipe(takeUntilDestroyed()).subscribe(() => {\n this.updateSortState();\n });\n }\n\n onAfterViewChecked(): void {\n this.bindDirectiveInstance.setAttrs(this.ptm('sortableColumn', { context: { sorted: this.sorted() } }));\n }\n\n onInit() {\n if (this.isEnabled()) {\n this.updateSortState();\n }\n }\n\n updateSortState() {\n this.sorted.set(this.tt.isSorted(<string>this.field()) as boolean);\n }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent) {\n if (this.isEnabled()) {\n this.updateSortState();\n this.tt.sort({\n originalEvent: event,\n field: this.field()\n });\n\n clearSelection();\n }\n }\n\n @HostListener('keydown.enter', ['$event'])\n onEnterKey(event: Event) {\n this.onClick(event as MouseEvent);\n }\n\n isEnabled() {\n return this.ttSortableColumnDisabled() !== true;\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, input, signal, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BadgeModule } from 'primeng/badge';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { Bind } from 'primeng/bind';\nimport { SortAlt as SortAltIcon } from '@primeicons/angular/sort-alt';\nimport { SortAmountDown as SortAmountDownIcon } from '@primeicons/angular/sort-amount-down';\nimport { SortAmountUpAlt as SortAmountUpAltIcon } from '@primeicons/angular/sort-amount-up-alt';\nimport { TreeTableStyle } from './style/treetablestyle';\nimport { TREETABLE_INSTANCE } from './treetable-service';\nimport type { TreeTable } from './treetable';\n\n@Component({\n selector: 'p-treetable-sort-icon, p-tree-table-sort-icon',\n standalone: true,\n imports: [NgTemplateOutlet, Bind, BadgeModule, SortAltIcon, SortAmountUpAltIcon, SortAmountDownIcon],\n template: `\n @if (!tt.sortIconTemplate()) {\n @if (sortOrder() === 0) {\n <svg data-p-icon=\"sort-alt\" [class]=\"cx('sortableColumnIcon')\" [pBind]=\"ptm('sortableColumnIcon')\" />\n }\n @if (sortOrder() === 1) {\n <svg data-p-icon=\"sort-amount-up-alt\" [class]=\"cx('sortableColumnIcon')\" [pBind]=\"ptm('sortableColumnIcon')\" />\n }\n @if (sortOrder() === -1) {\n <svg data-p-icon=\"sort-amount-down\" [class]=\"cx('sortableColumnIcon')\" [pBind]=\"ptm('sortableColumnIcon')\" />\n }\n }\n @if (tt.sortIconTemplate()) {\n <span [class]=\"cx('sortableColumnIcon')\" [pBind]=\"ptm('sortableColumnIcon')\">\n <ng-template *ngTemplateOutlet=\"tt.sortIconTemplate(); context: { $implicit: sortOrder() }\"></ng-template>\n </span>\n }\n @if (isMultiSorted()) {\n <p-badge [class]=\"cx('sortableColumnBadge')\" [value]=\"getBadgeValue()\" size=\"small\" [pt]=\"ptm('pcSortableColumnBadge')\" [unstyled]=\"unstyled()\" />\n }\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TreeTableStyle]\n})\nexport class TTSortIcon extends BaseComponent {\n hostName = 'TreeTable';\n\n field = input<string>();\n\n ariaLabelDesc = input<string>();\n\n ariaLabelAsc = input<string>();\n\n sortOrder = signal<number | undefined>(undefined);\n\n _componentStyle = inject(TreeTableStyle);\n\n tt = inject<TreeTable>(TREETABLE_INSTANCE);\n\n constructor() {\n super();\n this.tt.tableService.sortSource$.pipe(takeUntilDestroyed()).subscribe(() => {\n this.updateSortState();\n });\n }\n\n onInit() {\n this.updateSortState();\n }\n\n onClick(event: Event) {\n event.preventDefault();\n }\n\n getMultiSortMetaIndex() {\n let multiSortMeta = this.tt._multiSortMeta;\n let index = -1;\n\n if (multiSortMeta && this.tt.sortMode() === 'multiple' && multiSortMeta.length > 1) {\n for (let i = 0; i < multiSortMeta.length; i++) {\n let meta = multiSortMeta[i];\n\n if (meta.field === this.field()) {\n index = i;\n break;\n }\n }\n }\n\n return index;\n }\n\n updateSortState() {\n if (this.tt.sortMode() === 'single') {\n this.sortOrder.set(this.tt.isSorted(<string>this.field()) ? this.tt._sortOrder : 0);\n } else if (this.tt.sortMode() === 'multiple') {\n let sortMeta = this.tt.getSortMeta(<string>this.field());\n\n this.sortOrder.set(sortMeta ? sortMeta.order : 0);\n }\n }\n\n getBadgeValue() {\n return this.getMultiSortMetaIndex() + 1;\n }\n\n isMultiSorted() {\n return this.tt.sortMode() === 'multiple' && this.getMultiSortMetaIndex() > -1;\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { booleanAttribute, Directive, inject, input } from '@angular/core';\nimport { addClass } from '@primeuix/utils';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { VoidListener } from 'primeng/ts-helpers';\nimport { TREETABLE_INSTANCE } from './treetable-service';\nimport type { TreeTable } from './treetable';\n\n@Directive({\n selector: '[ttResizableColumn]',\n standalone: true\n})\nexport class TTResizableColumn extends BaseComponent {\n hostName = 'TreeTable';\n\n ttResizableColumnDisabled = input(undefined, { transform: booleanAttribute });\n\n resizer: HTMLSpanElement | undefined;\n\n resizerMouseDownListener: VoidListener;\n\n documentMouseMoveListener: VoidListener;\n\n documentMouseUpListener: VoidListener;\n\n tt = inject<TreeTable>(TREETABLE_INSTANCE);\n\n onAfterViewInit() {\n if (isPlatformBrowser(this.platformId)) {\n if (this.isEnabled()) {\n addClass(this.el.nativeElement, 'p-resizable-column');\n this.resizer = this.renderer.createElement('span');\n\n if (!this.$unstyled()) {\n this.renderer.addClass(this.resizer, 'p-column-resizer');\n }\n\n (this.resizer as HTMLElement).setAttribute('data-pc-section', 'columnresizer');\n this.renderer.appendChild(this.el.nativeElement, this.resizer);\n\n this.resizerMouseDownListener = this.renderer.listen(this.resizer, 'mousedown', this.onMouseDown.bind(this));\n }\n }\n }\n\n bindDocumentEvents() {\n this.documentMouseMoveListener = this.renderer.listen(this.document, 'mousemove', this.onDocumentMouseMove.bind(this));\n this.documentMouseUpListener = this.renderer.listen(this.document, 'mouseup', this.onDocumentMouseUp.bind(this));\n }\n\n unbindDocumentEvents() {\n if (this.documentMouseMoveListener) {\n this.documentMouseMoveListener();\n this.documentMouseMoveListener = null;\n }\n\n if (this.documentMouseUpListener) {\n this.documentMouseUpListener();\n this.documentMouseUpListener = null;\n }\n }\n\n onMouseDown(event: MouseEvent) {\n this.tt.onColumnResizeBegin(event);\n this.bindDocumentEvents();\n }\n\n onDocumentMouseMove(event: MouseEvent) {\n this.tt.onColumnResize(event);\n }\n\n onDocumentMouseUp(event: MouseEvent) {\n this.tt.onColumnResizeEnd(event, this.el.nativeElement);\n this.unbindDocumentEvents();\n }\n\n isEnabled() {\n return this.ttResizableColumnDisabled() !== true;\n }\n\n onDestroy() {\n if (this.resizerMouseDownListener) {\n this.resizerMouseDownListener();\n this.resizerMouseDownListener = null;\n }\n\n this.unbindDocumentEvents();\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { booleanAttribute, Directive, HostListener, inject, input } from '@angular/core';\nimport { findSingle } from '@primeuix/utils';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { VoidListener } from 'primeng/ts-helpers';\nimport { TREETABLE_INSTANCE } from './treetable-service';\nimport type { TreeTable } from './treetable';\n\n@Directive({\n selector: '[ttReorderableColumn]',\n standalone: true\n})\nexport class TTReorderableColumn extends BaseComponent {\n hostName = 'TreeTable';\n\n ttReorderableColumnDisabled = input(undefined, { transform: booleanAttribute });\n\n dragStartListener: VoidListener;\n\n dragOverListener: VoidListener;\n\n dragEnterListener: VoidListener;\n\n dragLeaveListener: VoidListener;\n\n mouseDownListener: VoidListener;\n\n tt = inject<TreeTable>(TREETABLE_INSTANCE);\n\n onAfterViewInit() {\n if (this.isEnabled()) {\n this.bindEvents();\n }\n }\n\n bindEvents() {\n if (isPlatformBrowser(this.platformId)) {\n this.mouseDownListener = this.renderer.listen(this.el.nativeElement, 'mousedown', this.onMouseDown.bind(this));\n this.dragStartListener = this.renderer.listen(this.el.nativeElement, 'dragstart', this.onDragStart.bind(this));\n this.dragOverListener = this.renderer.listen(this.el.nativeElement, 'dragover', this.onDragEnter.bind(this));\n this.dragEnterListener = this.renderer.listen(this.el.nativeElement, 'dragenter', this.onDragEnter.bind(this));\n this.dragLeaveListener = this.renderer.listen(this.el.nativeElement, 'dragleave', this.onDragLeave.bind(this));\n }\n }\n\n unbindEvents() {\n if (isPlatformBrowser(this.platformId)) {\n if (this.mouseDownListener) {\n this.mouseDownListener();\n this.mouseDownListener = null;\n }\n\n if (this.dragOverListener) {\n this.dragOverListener();\n this.dragOverListener = null;\n }\n\n if (this.dragEnterListener) {\n this.dragEnterListener();\n this.dragEnterListener = null;\n }\n\n if (this.dragLeaveListener) {\n this.dragLeaveListener();\n this.dragLeaveListener = null;\n }\n }\n }\n\n onMouseDown(event: any) {\n if (event.target.nodeName === 'INPUT' || event.target.nodeName === 'TEXTAREA' || findSingle(event.target, '[data-pc-section=\"columnresizer\"]')) this.el.nativeElement.draggable = false;\n else this.el.nativeElement.draggable = true;\n }\n\n onDragStart(event: DragEvent) {\n this.tt.onColumnDragStart(event, this.el.nativeElement);\n }\n\n onDragOver(event: DragEvent) {\n event.preventDefault();\n }\n\n onDragEnter(event: DragEvent) {\n this.tt.onColumnDragEnter(event, this.el.nativeElement);\n }\n\n onDragLeave(event: DragEvent) {\n this.tt.onColumnDragLeave(event);\n }\n\n @HostListener('drop', ['$event'])\n onDrop(event: DragEvent) {\n if (this.isEnabled()) {\n this.tt.onColumnDrop(event, this.el.nativeElement);\n }\n }\n\n isEnabled() {\n return this.ttReorderableColumnDisabled() !== true;\n }\n\n onDestroy() {\n this.unbindEvents();\n }\n}\n","import { booleanAttribute, Directive, HostListener, inject, input, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { TreeTableStyle } from './style/treetablestyle';\nimport type { TreeTable } from './treetable';\nimport { TREETABLE_INSTANCE } from './treetable-service';\n\n@Directive({\n selector: '[ttSelectableRow]',\n standalone: true,\n host: {\n '[class]': 'cx(\"row\")',\n '[attr.aria-selected]': 'selected()',\n '[attr.tabindex]': 'hostTabindex'\n },\n providers: [TreeTableStyle]\n})\nexport class TTSelectableRow extends BaseComponent {\n rowNode = input<any>(undefined, { alias: 'ttSelectableRow' });\n\n ttSelectableRowDisabled = input(undefined, { transform: booleanAttribute });\n\n selected = signal<boolean | undefined>(undefined);\n\n _componentStyle = inject(TreeTableStyle);\n\n tt = inject<TreeTable>(TREETABLE_INSTANCE);\n\n constructor() {\n super();\n this.tt.tableService.selectionSource$.pipe(takeUntilDestroyed()).subscribe(() => {\n this.selected.set(this.tt.isSelected(this.rowNode()?.node));\n });\n }\n\n onInit() {\n if (this.isEnabled()) {\n this.selected.set(this.tt.isSelected(this.rowNode()?.node));\n }\n }\n\n @HostListener('click', ['$event'])\n onClick(event: Event) {\n if (this.isEnabled()) {\n this.tt.handleRowClick({\n originalEvent: event,\n rowNode: this.rowNode()\n });\n }\n }\n\n /**\n * Selectable rows are tab stops: Tab reaches the row (Enter/Space selects),\n * then continues to the focusables inside it — toggler, checkbox, editors.\n */\n get hostTabindex() {\n return this.isEnabled() ? 0 : null;\n }\n\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent) {\n if (event.target !== this.el?.nativeElement) {\n return;\n }\n\n switch (event.code) {\n case 'Enter':\n case 'Space':\n this.onEnterKey(event);\n break;\n\n case 'Tab':\n if (event.shiftKey) {\n this.onShiftTabKey(event);\n }\n\n break;\n\n default:\n break;\n }\n }\n\n /**\n * Backwards navigation treats rows as the stops: Shift+Tab from a row lands\n * on the previous row, not on the last focusable inside it (the browser's\n * reverse order would visit checkbox/toggler first). Forward Tab stays\n * native — row, then into the row's focusables, then the next row. On the\n * first row nothing is intercepted, so focus exits the table backwards.\n */\n private onShiftTabKey(event: KeyboardEvent) {\n let sibling = this.el?.nativeElement.previousElementSibling as HTMLElement | null;\n\n while (sibling && sibling.getAttribute('tabindex') === null) {\n sibling = sibling.previousElementSibling as HTMLElement | null;\n }\n\n if (sibling) {\n sibling.focus();\n event.preventDefault();\n }\n }\n\n @HostListener('touchend', ['$event'])\n onTouchEnd(event: Event) {\n if (this.isEnabled()) {\n this.tt.handleRowTouchEnd(event);\n }\n }\n\n onEnterKey(event) {\n if (this.tt.selectionMode() === 'checkbox') {\n this.tt.toggleNodeWithCheckbox({\n originalEvent: event,\n rowNode: this.rowNode()\n });\n } else {\n this.onClick(event);\n }\n\n event.preventDefault();\n }\n\n isEnabled() {\n return this.ttSelectableRowDisabled() !== true;\n }\n}\n","import { booleanAttribute, Directive, HostListener, inject, input, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { TreeTableStyle } from './style/treetablestyle';\nimport { TREETABLE_INSTANCE } from './treetable-service';\nimport type { TreeTable } from './treetable';\n\n@Directive({\n selector: '[ttSelectableRowDblClick]',\n standalone: true,\n host: {\n '[class]': 'cx(\"row\")'\n },\n providers: [TreeTableStyle]\n})\nexport class TTSelectableRowDblClick extends BaseComponent {\n rowNode = input<any>(undefined, { alias: 'ttSelectableRowDblClick' });\n\n ttSelectableRowDisabled = input(undefined, { transform: booleanAttribute });\n\n selected = signal<boolean | undefined>(undefined);\n\n _componentStyle = inject(TreeTableStyle);\n\n tt = inject<TreeTable>(TREETABLE_INSTANCE);\n\n constructor() {\n super();\n this.tt.tableService.selectionSource$.pipe(takeUntilDestroyed()).subscribe(() => {\n this.selected.set(this.tt.isSelected(this.rowNode()?.node));\n });\n }\n\n onInit() {\n if (this.isEnabled()) {\n this.selected.set(this.tt.isSelected(this.rowNode()?.node));\n }\n }\n\n @HostListener('dblclick', ['$event'])\n onClick(event: Event) {\n if (this.isEnabled()) {\n this.tt.handleRowClick({\n originalEvent: event,\n rowNode: this.rowNode()\n });\n }\n }\n\n isEnabled() {\n return this.ttSelectableRowDisabled() !== true;\n }\n}\n","import { booleanAttribute, Directive, HostListener, inject, input, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { TreeTableStyle } from './style/treetablestyle';\nimport { TREETABLE_INSTANCE } from './treetable-service';\nimport type { TreeTable } from './treetable';\n\n@Directive({\n selector: '[ttContextMenuRow]',\n standalone: true,\n host: {\n '[class]': 'cx(\"contextMenuRow\")',\n '[tabindex]': 'hostTabindex'\n },\n providers: [TreeTableStyle]\n})\nexport class TTContextMenuRow extends BaseComponent {\n rowNode = input<any>(undefined, { alias: 'ttContextMenuRow' });\n\n ttContextMenuRowDisabled = input(undefined, { transform: booleanAttribute });\n\n selected = signal<boolean | undefined>(undefined);\n\n _componentStyle = inject(TreeTableStyle);\n\n tt = inject<TreeTable>(TREETABLE_INSTANCE);\n\n constructor() {\n super();\n this.tt.tableService.contextMenuSource$.pipe(takeUntilDestroyed()).subscribe((node) => {\n this.selected.set(node ? this.tt.equals(this.rowNode()?.node, node) : false);\n });\n }\n\n @HostListener('contextmenu', ['$event'])\n onContextMenu(event: Event) {\n if (this.isEnabled()) {\n this.tt.handleRowRightClick({\n originalEvent: event,\n rowNode: this.rowNode()\n });\n\n this.el.nativeElement.focus();\n\n event.preventDefault();\n }\n }\n\n get hostTabindex() {\n return this.isEnabled() ? 0 : undefined;\n }\n\n isEnabled() {\n return this.ttContextMenuRowDisabled() !== true;\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, inject, input, signal, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { clearSelection } from '@primeuix/utils';\nimport { SharedModule } from 'primeng/api';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { Checkbox } from 'primeng/checkbox';\nimport type { CheckboxChangeEvent } from 'primeng/types/checkbox';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { TreeTableStyle } from './style/treetablestyle';\nimport { TREETABLE_INSTANCE } from './treetable-service';\nimport type { TreeTable } from './treetable';\n\n@Component({\n selector: 'p-treetable-checkbox, p-tree-table-checkbox',\n standalone: true,\n imports: [NgTemplateOutlet, FormsModule, Checkbox, SharedModule],\n template: `\n <p-checkbox [ngModel]=\"checked()\" [pt]=\"ptm('pcRowCheckbox')\" (onChange)=\"onClick($event)\" [binary]=\"true\" [disabled]=\"disabled()\" [indeterminate]=\"partialChecked()\" [class]=\"cx('pcNodeCheckbox')\" [tabIndex]=\"-1\" [unstyled]=\"unstyled()\">\n @if (tt.checkboxIconTemplate()) {\n <ng-template #icon>\n <ng-template *ngTemplateOutlet=\"tt.checkboxIconTemplate(); context: { $implicit: checked(), partialSelected: partialChecked() }\"></ng-template>\n </ng-template>\n }\n </p-checkbox>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TreeTableStyle]\n})\nexport class TTCheckbox extends BaseComponent {\n hostName = 'TreeTable';\n\n disabled = input(false, { transform: booleanAttribute });\n\n // eslint-disable-next-line @angular-eslint/no-input-rename\n rowNode = input<any>(undefined, { alias: 'value' });\n\n checked = signal<boolean | undefined>(undefined);\n\n partialChecked = signal<boolean | undefined>(undefined);\n\n _componentStyle = inject(TreeTableStyle);\n\n tt = inject<TreeTable>(TREETABLE_INSTANCE);\n\n constructor() {\n super();\n this.tt.tableService.selectionSource$.pipe(takeUntilDestroyed()).subscribe(() => {\n if (this.tt._selectionKeys) {\n this.checked.set(this.tt.isNodeSelected(this.rowNode()?.node));\n this.partialChecked.set(this.tt.isNodePartialSelected(this.rowNode()?.node));\n } else {\n this.checked.set(this.tt.isSelected(this.rowNode()?.node));\n this.partialChecked.set(this.rowNode()?.node?.partialSelected);\n }\n });\n }\n\n onInit() {\n if (this.tt._selectionKeys) {\n this.checked.set(this.tt.isNodeSelected(this.rowNode()?.node));\n this.partialChecked.set(this.tt.isNodePartialSelected(this.rowNode()?.node));\n } else {\n this.checked.set(this.tt.isSelected(this.rowNode()?.node));\n this.partialChecked.set(this.rowNode()?.node?.partialSelected);\n }\n }\n\n onClick(event: CheckboxChangeEvent) {\n if (!this.disabled()) {\n if (this.tt._selectionKeys) {\n const _check = !this.checked();\n\n this.tt.toggleCheckbox({\n originalEvent: event,\n check: _check,\n rowNode: this.rowNode()\n });\n } else {\n this.tt.toggleNodeWithCheckbox({\n originalEvent: event,\n rowNode: this.rowNode()\n });\n }\n }\n\n clearSelection();\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, signal, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { clearSelection } from '@primeuix/utils';\nimport { SharedModule } from 'primeng/api';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { Checkbox } from 'primeng/checkbox';\nimport type { CheckboxChangeEvent } from 'primeng/types/checkbox';\nimport { TREETABLE_INSTANCE } from './treetable-service';\nimport type { TreeTable } from './treetable';\n\n@Component({\n selector: 'p-treetableheadercheckbox, p-treetable-header-checkbox',\n standalone: true,\n imports: [NgTemplateOutlet, FormsModule, Checkbox, SharedModule],\n template: `\n <p-checkbox [ngModel]=\"checked()\" [pt]=\"ptm('pcHeaderCheckbox')\" (onChange)=\"onClick($event)\" [binary]=\"true\" [disabled]=\"isDisabled\" [unstyled]=\"unstyled()\">\n @if (tt.headerCheckboxIconTemplate()) {\n <ng-template #icon>\n <ng-template *ngTemplateOutlet=\"tt.headerCheckboxIconTemplate(); context: { $implicit: checked() }\"></ng-template>\n </ng-template>\n }\n </p-checkbox>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TTHeaderCheckbox extends BaseComponent {\n checked = signal<boolean | undefined>(undefined);\n\n tt = inject<TreeTable>(TREETABLE_INSTANCE);\n\n get isDisabled() {\n return !this.tt.value || this.tt.value.length === 0;\n }\n\n constructor() {\n super();\n this.tt.tableService.uiUpdateSource$.pipe(takeUntilDestroyed()).subscribe(() => {\n this.checked.set(this.updateCheckedState());\n });\n\n this.tt.tableService.selectionSource$.pipe(takeUntilDestroyed()).subscribe(() => {\n this.checked.set(this.updateCheckedState());\n });\n }\n\n onInit() {\n this.checked.set(this.updateCheckedState());\n }\n\n onClick(event: CheckboxChangeEvent) {\n if ((this.tt?.value || this.tt?.filteredNodes) && ((this.tt?.value && this.tt.value.length > 0) || (this.tt?.filteredNodes && this.tt.filteredNodes.length > 0))) {\n this.tt?.toggleNodesWithCheckbox(event, !this.checked());\n }\n\n clearSelection();\n }\n\n updateCheckedState() {\n let checked!: boolean;\n const data = this.tt.filteredNodes || this.tt.value;\n\n if (data) {\n if (this.tt._selectionKeys) {\n for (let node of data) {\n if (this.tt.isNodeSelected(node)) {\n checked = true;\n } else {\n checked = false;\n break;\n }\n }\n }\n\n if (!this.tt._selectionKeys) {\n // legacy selection support, will be removed in v18\n for (let node of data) {\n if (this.tt.isSelected(node)) {\n checked = true;\n } else {\n checked = false;\n break;\n }\n }\n }\n } else {\n checked = false;\n }\n\n return checked;\n }\n}\n","import { booleanAttribute, Directive, HostListener, inject, input } from '@angular/core';\nimport { addClass, findSingle, removeClass } from '@primeuix/utils';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport type { TreeTable } from './treetable';\nimport { TREETABLE_INSTANCE } from './treetable-service';\n\n@Directive({\n selector: '[ttEditableColumn]',\n standalone: true\n})\nexport class TTEditableColumn extends BaseComponent {\n data = input<any>(undefined, { alias: 'ttEditableColumn' });\n\n field = input<any>(undefined, { alias: 'ttEditableColumnField' });\n\n ttEditableColumnDisabled = input(undefined, { transform: booleanAttribute });\n\n tt = inject<TreeTable>(TREETABLE_INSTANCE);\n\n /**\n * Keyboard closes (Enter/Escape) must hand focus back somewhere — the editor\n * input unmounts, and without this the focus falls to <body>. The cell\n * editor host is a tab stop, so focus returns to it (Tab then continues to\n * the next focusable from the same position). The suppress flag keeps that\n * programmatic focus from immediately reopening the editor it just closed.\n */\n private suppressFocusOpen = false;\n\n onAfterViewInit() {\n if (this.isEnabled()) {\n if (!this.$unstyled()) {\n addClass(this.el.nativeElement, 'p-editable-column');\n }\n\n this.el?.nativeElement.setAttribute('data-p-editable-column', 'true');\n }\n }\n\n @HostListener('click', ['$event'])\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onClick(event: MouseEvent) {\n if (this.isEnabled()) {\n this.requestEdit();\n }\n }\n\n /**\n * Keyboard entry point: the cell editor host is in the tab order and opens\n * its editor on focus, so Tab lands on the cell and starts editing without\n * a mouse. `editingCellClick` is normally consumed by the document click\n * that follows a mouse open — a keyboard open has no such click, so it is\n * reset on the next tick to keep the first outside click closing the cell.\n */\n openCellFromFocus() {\n if (!this.isEnabled()) {\n return;\n }\n\n this.requestEdit();\n setTimeout(() => (this.tt.editingCellClick = false));\n }\n\n private requestEdit() {\n this.tt.editingCellClick = true;\n\n if (this.tt.editingCell) {\n if (this.tt.editingCell !== this.el.nativeElement) {\n if (!this.tt.isEditingCellValid()) {\n return;\n }\n\n if (this.tt.editingCell) {\n if (!this.$unstyled()) {\n removeClass(this.tt.editingCell, 'p-cell-editing');\n }\n\n this.tt.editingCell.setAttribute('data-p-cell-editing', 'false');\n }\n\n this.openCell();\n }\n } else {\n this.openCell();\n }\n }\n\n openCell() {\n this.tt.updateEditingCell(this.el.nativeElement, this.data(), this.field());\n\n if (!this.$unstyled()) {\n addClass(this.el.nativeElement, 'p-cell-editing');\n }\n\n this.el?.nativeElement.setAttribute('data-p-cell-editing', 'true');\n this.tt.onEditInit.emit({ field: this.field(), data: this.data() });\n this.tt.editingCellClick = true;\n setTimeout(() => {\n let focusable = <any>findSingle(this.el.nativeElement, 'input, textarea');\n\n if (focusable) {\n focusable.focus();\n }\n }, 50);\n }\n\n closeEditingCell() {\n if (this.tt.editingCell && !this.$unstyled()) {\n removeClass(this.tt.editingCell, 'p-cell-editing');\n }\n\n this.tt.editingCell = null;\n this.tt.unbindDocumentEditListener();\n }\n\n consumeSuppressedFocusOpen(): boolean {\n const suppressed = this.suppressFocusOpen;\n\n this.suppressFocusOpen = false;\n\n return suppressed;\n }\n\n private focusEditorHost() {\n const host = findSingle(this.el?.nativeElement, 'p-treetable-cell-editor, p-treetablecelleditor') as HTMLElement | null;\n\n if (host) {\n this.suppressFocusOpen = true;\n host.focus();\n }\n }\n\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent) {\n const editing = !!this.tt.editingCell && event.target instanceof Node && this.tt.editingCell.contains(event.target);\n\n if (!editing) {\n return;\n }\n\n if (this.isEnabled()) {\n //enter\n if (event.keyCode == 13 && !event.shiftKey) {\n if (this.tt.isEditingCellValid()) {\n if (this.tt.editingCell) {\n if (!this.$unstyled()) {\n removeClass(this.tt.editingCell, 'p-cell-editing');\n }\n\n this.el?.nativeElement.setAttribute('data-p-cell-editing', 'false');\n }\n\n this.closeEditingCell();\n this.tt.onEditComplete.emit({ field: this.field(), data: this.data() });\n this.focusEditorHost();\n }\n\n event.preventDefault();\n }\n\n //escape\n else if (event.keyCode == 27) {\n if (this.tt.isEditingCellValid()) {\n if (this.tt.editingCell) {\n if (!this.$unstyled()) {\n removeClass(this.tt.editingCell, 'p-cell-editing');\n }\n\n this.el?.nativeElement.setAttribute('data-p-cell-editing', 'false');\n }\n\n this.closeEditingCell();\n this.tt.onEditCancel.emit({ field: this.field(), data: this.data() });\n this.focusEditorHost();\n }\n\n event.preventDefault();\n }\n }\n }\n\n /**\n * Closes the editor when focus leaves the cell (native Tab/Shift+Tab or a\n * programmatic focus move). The edit is committed — with template-driven\n * bindings the value is already applied, closing only swaps the input back\n * to output. Focus changes within the cell (input ↔ toggler ↔ host) and\n * non-focus targets (relatedTarget null, e.g. window blur) are ignored.\n */\n @HostListener('focusout', ['$event'])\n onFocusOut(event: FocusEvent) {\n const cell = this.el?.nativeElement;\n const editingThisCell = this.tt.editingCell === cell;\n const target = event.relatedTarget;\n\n if (!editingThisCell || !(target instanceof Node) || cell.contains(target)) {\n return;\n }\n\n if (this.tt.isEditingCellValid()) {\n if (!this.$unstyled()) {\n removeClass(cell, 'p-cell-editing');\n }\n\n cell.setAttribute('data-p-cell-editing', 'false');\n this.closeEditingCell();\n this.tt.onEditComplete.emit({ field: this.field(), data: this.data() });\n }\n }\n\n isEnabled() {\n return this.ttEditableColumnDisabled() !== true;\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { Component, contentChild, inject, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { Bind } from 'primeng/bind';\nimport { TREETABLE_INSTANCE } from './treetable-service';\nimport { TTEditableColumn } from './editable-column';\nimport type { TreeTable } from './treetable';\n\n@Component({\n selector: 'p-treetablecelleditor, p-treetable-cell-editor',\n standalone: true,\n imports: [NgTemplateOutlet],\n template: `\n @if (editing) {\n <ng-container *ngTemplateOutlet=\"inputTemplate()\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"outputTemplate()\"></ng-container>\n }\n `,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.tabindex]': 'hostTabindex',\n '(focus)': 'onHostFocus()'\n },\n hostDirectives: [Bind]\n})\nexport class TreeTableCellEditor extends BaseComponent {\n hostName = 'TreeTable';\n\n bindDirectiveInstance = inject(Bind, { self: true });\n\n inputTemplate = contentChild<TemplateRef<any>>('input', { descendants: false });\n\n outputTemplate = contentChild<TemplateRef<any>>('output', { descendants: false });\n\n tt = inject<TreeTable>(TREETABLE_INSTANCE);\n\n editableColumn = inject(TTEditableColumn);\n\n get editing() {\n return this.tt.editingCell === this.editableColumn.el.nativeElement;\n }\n\n onAfterViewChecked(): void {\n this.bindDirectiveInstance.setAttrs(this.ptm('cellEditor'));\n }\n\n /**\n * Closed editors render plain output text, which is not focusable — without\n * a tabindex the browser's sequential focus (Tab) would skip editable cells\n * entirely. The host joins the tab order so Tab reaches the cell, and focus\n * opens the editor (which then moves focus into the input).\n */\n get hostTabindex() {\n return this.editableColumn.isEnabled() ? 0 : null;\n }\n\n onHostFocus() {\n if (this.editableColumn.consumeSuppressedFocusOpen() || this.editing || !this.editableColumn.isEnabled()) {\n return;\n }\n\n this.editableColumn.openCellFromFocus();\n }\n}\n","import { Directive, HostListener, inject, input } from '@angular/core';\nimport { find, findSingle, getIndex } from '@primeuix/utils';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { Bind } from 'primeng/bind';\nimport { TreeTableStyle } from './style/treetablestyle';\nimport { TREETABLE_INSTANCE } from './treetable-service';\nimport type { TreeTable } from './treetable';\n\n@Directive({\n selector: '[ttRow]',\n standalone: true,\n host: {\n '[class]': 'hostClass',\n '[attr.aria-expanded]': 'expanded',\n '[attr.aria-level]': 'level',\n role: 'row'\n },\n providers: [TreeTableStyle],\n hostDirectives: [Bind]\n})\nexport class TTRow extends BaseComponent {\n hostName = 'TreeTable';\n\n bindDirectiveInstance = inject(Bind, { self: true });\n\n tt = inject<TreeTable>(TREETABLE_INSTANCE);\n\n rowNode = input<any>(undefined, { alias: 'ttRow' });\n\n _componentStyle = inject(TreeTableStyle);\n\n onAfterViewChecked(): void {\n this.bindDirectiveInstance.setAttrs(this.ptm('row', this.ptmOptions()));\n }\n\n get level() {\n return this.rowNode()?.['level'] + 1;\n }\n\n get hostClass() {\n return this.cn('p-element', this.rowNode()?.node['styleClass']);\n }\n\n get expanded() {\n return this.rowNode()?.node['expanded'];\n }\n\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent) {\n if (this.isEditingCellTarget(event.target)) {\n return;\n }\n\n switch (event.code) {\n case 'ArrowDown':\n this.onArrowDownKey(event);\n break;\n\n case 'ArrowUp':\n this.onArrowUpKey(event);\n break;\n\n case 'ArrowRight':\n this.onArrowRightKey(event);\n break;\n\n case 'ArrowLeft':\n this.onArrowLeftKey(event);\n break;\n\n case 'Home':\n this.onHomeKey(event);\n break;\n\n case 'End':\n this.onEndKey(event);\n break;\n\n default:\n break;\n }\n }\n\n private isEditingCellTarget(target: EventTarget | null): boolean {\n const editingCell = this.tt?.editingCell;\n\n return !!(editingCell && target instanceof Node && editingCell.contains(target));\n }\n\n onArrowDownKey(event: KeyboardEvent) {\n this.focusSiblingToggler('next');\n event.preventDefault();\n }\n\n onArrowUpKey(event: KeyboardEvent) {\n this.focusSiblingToggler('previous');\n event.preventDefault();\n }\n\n onArrowRightKey(event: KeyboardEvent) {\n if (this.togglerButton(this.el?.nativeElement) && !this.expanded && this.rowNode()?.node['children']) {\n this.expand(event);\n }\n\n event.preventDefault();\n }\n\n onArrowLeftKey(event: KeyboardEvent) {\n if (this.expanded) {\n this.tt.toggleRowIndex = getIndex(this.el.nativeElement);\n this.collapse(event);\n this.restoreFocus();\n }\n\n event.preventDefault();\n }\n\n onHomeKey(event: KeyboardEvent) {\n const rows = <any>find(this.tt.el?.nativeElement, `tr[aria-level=\"${this.level}\"]`);\n\n for (const row of rows) {\n const toggler = this.togglerButton(row);\n\n if (toggler) {\n toggler.focus();\n break;\n }\n }\n\n event.preventDefault();\n }\n\n onEndKey(event: KeyboardEvent) {\n const rows = <any>find(this.tt.el?.nativeElement, `tr[aria-level=\"${this.level}\"]`);\n\n for (let i = rows.length - 1; i >= 0; i--) {\n const toggler = this.togglerButton(rows[i]);\n\n if (toggler) {\n toggler.focus();\n break;\n }\n }\n\n event.preventDefault();\n }\n\n expand(event: Event) {\n this.tt.toggleRowIndex = getIndex(this.el.nativeElement);\n this.rowNode().node['expanded'] = true;\n\n this.tt.updateSerializedValue();\n this.tt.tableService.onUIUpdate(this.tt.value);\n this.restoreFocus();\n\n this.tt.onNodeExpand.emit({\n originalEvent: event,\n node: this.rowNode().node\n });\n }\n\n collapse(event: Event) {\n this.rowNode().node['expanded'] = false;\n\n this.tt.updateSerializedValue();\n this.tt.tableService.onUIUpdate(this.tt.value);\n\n this.tt.onNodeCollapse.emit({ originalEvent: event, node: this.rowNode().node });\n }\n\n /**\n * Focus model: rows are not focusable — the row's toggler button carries\n * keyboard focus (Tab reaches it, Enter/Space toggles, arrows move between\n * visible togglers). Rows never show a focus outline.\n */\n private togglerButton(row: Element | null | undefined): HTMLElement | null {\n if (!row) return null;\n\n const button = findSingle(row, '[data-pc-section=\"rowtogglebutton\"]') as HTMLElement | null;\n\n return button && button.style.visibility !== 'hidden' ? button : null;\n }\n\n private focusSiblingToggler(direction: 'next' | 'previous') {\n let sibling = direction === 'next' ? this.el?.nativeElement?.nextElementSibling : this.el?.nativeElement?.previousElementSibling;\n\n while (sibling) {\n const toggler = this.togglerButton(sibling);\n\n if (toggler) {\n toggler.focus();\n\n return;\n }\n\n sibling = direction === 'next' ? sibling.nextElementSibling : sibling.previousElementSibling;\n }\n }\n\n /** Re-focus the toggled row's toggler after the tbody re-renders. */\n restoreFocus() {\n setTimeout(() => {\n const tbody = findSingle(this.tt.el?.nativeElement, '[data-pc-section=\"tbody\"]');\n const row = tbody?.children?.[this.tt.toggleRowIndex || 0] as Element | undefined;\n const toggler = this.togglerButton(row);\n\n toggler?.focus();\n }, 25);\n }\n\n ptmOptions() {\n return {\n context: {\n selectable: this.tt?.rowHover() || !!this.tt.selectionMode(),\n selected: this.tt.isSelected((<any>this.rowNode())?.node),\n scrollable: this.tt?.scrollable(),\n rowNode: this.rowNode()\n }\n };\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { Component, inject, input, ViewEncapsulation } from '@angular/core';\nimport { ChevronDown as ChevronDownIcon } from '@primeicons/angular/chevron-down';\nimport { ChevronRight as ChevronRightIcon } from '@primeicons/angular/chevron-right';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { Bind } from 'primeng/bind';\nimport { Ripple } from 'primeng/ripple';\nimport { TreeTableStyle } from './style/treetablestyle';\nimport type { TreeTable } from './treetable';\nimport { TREETABLE_INSTANCE } from './treetable-service';\n\n@Component({\n selector: 'p-treetabletoggler, p-treetable-toggler',\n standalone: true,\n imports: [NgTemplateOutlet, Bind, Ripple, ChevronDownIcon, ChevronRightIcon],\n template: `\n <button\n type=\"button\"\n [class]=\"cx('toggler')\"\n [pBind]=\"ptm('rowToggleButton')\"\n (click)=\"onClick($event)\"\n pRipple\n [style.visibility]=\"togglerVisibility\"\n [style.marginInlineStart]=\"togglerMarginStart\"\n [attr.data-pc-group-section]=\"'rowactionbutton'\"\n [attr.aria-label]=\"toggleButtonAriaLabel\"\n >\n @if (!tt.togglerIconTemplate()) {\n @if (rowNode().node.expanded) {\n <svg data-p-icon=\"chevron-down\" [pBind]=\"ptm('nodetoggleicon')\" [attr.aria-hidden]=\"true\" />\n }\n @if (!rowNode().node.expanded) {\n <svg data-p-icon=\"chevron-right\" [pBind]=\"ptm('nodetoggleicon')\" [attr.aria-hidden]=\"true\" />\n }\n }\n <ng-template *ngTemplateOutlet=\"tt.togglerIconTemplate(); context: togglerIconContext\"></ng-template>\n </button>\n `,\n encapsulation: ViewEncapsulation.None,\n providers: [TreeTableStyle],\n hostDirectives: [Bind]\n})\nexport class TreeTableToggler extends BaseComponent {\n hostName = 'TreeTable';\n\n bindDirectiveInstance = inject(Bind, { self: true });\n\n rowNode = input<any>();\n\n _componentStyle = inject(TreeTableStyle);\n\n tt = inject<TreeTable>(TREETABLE_INSTANCE);\n\n get togglerIconContext() {\n return { $implicit: this.rowNode()?.node?.expanded };\n }\n\n get togglerVisibility() {\n const node = this.rowNode()?.node;\n\n return node?.leaf === false || (node?.children && node.children.length) ? 'visible' : 'hidden';\n }\n\n get togglerMarginStart() {\n return this.rowNode()?.level * 16 + 'px';\n }\n\n get toggleButtonAriaLabel() {\n return this.config.translation ? (this.rowNode()?.expanded ? this.config.translation?.aria?.collapseRow : this.config.translation?.aria?.expandRow) : undefined;\n }\n\n onAfterViewChecked(): void {\n this.bindDirectiveInstance.setAttrs(this.ptm('toggler'));\n }\n\n onClick(event: Event) {\n const row = this.el?.nativeElement.closest('tr');\n const tbody = row?.parentElement;\n const rowIndex = row && tbody ? Array.prototype.indexOf.call(tbody.children, row) : -1;\n\n this.rowNode().node.expanded = !this.rowNode().node.expanded;\n this.tt.setNodeCollapsed(this.rowNode().node, !this.rowNode().node.expanded);\n\n if (this.rowNode().node.expanded) {\n this.tt.onNodeExpand.emit({\n originalEvent: event,\n node: this.rowNode().node\n });\n } else {\n this.tt.onNodeCollapse.emit({\n originalEvent: event,\n node: this.rowNode().node\n });\n }\n\n this.tt.updateSerializedValue();\n this.tt.tableService.onUIUpdate(this.tt.value);\n\n if (rowIndex >= 0) {\n setTimeout(() => {\n const newRow = tbody?.children?.[rowIndex];\n const toggler = newRow?.querySelector('[data-pc-section=\"rowtogglebutton\"]') as HTMLElement | null;\n\n if (toggler && toggler.style.visibility !== 'hidden') {\n toggler.focus();\n }\n }, 25);\n }\n\n event.preventDefault();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { SharedModule } from 'primeng/api';\nimport { Scroller } from 'primeng/scroller';\nimport { TreeTable } from './treetable';\nimport { TTBody } from './treetable-body';\nimport { TTScrollableView } from './treetable-scrollable-view';\nimport { TTSortableColumn } from './sortable-column';\nimport { TTSortIcon } from './sort-icon';\nimport { TTResizableColumn } from './resizable-column';\nimport { TTReorderableColumn } from './reorderable-column';\nimport { TTSelectableRow } from './selectable-row';\nimport { TTSelectableRowDblClick } from './selectable-row-dbl-click';\nimport { TTContextMenuRow } from './context-menu-row';\nimport { TTCheckbox } from './treetable-checkbox';\nimport { TTHeaderCheckbox } from './treetable-header-checkbox';\nimport { TTEditableColumn } from './editable-column';\nimport { TreeTableCellEditor } from './cell-editor';\nimport { TTRow } from './treetable-row';\nimport { TreeTableToggler } from './treetable-toggler';\n\n@NgModule({\n imports: [\n TreeTable,\n TTBody,\n TTScrollableView,\n TTSortableColumn,\n TTSortIcon,\n TTResizableColumn,\n TTRow,\n TTReorderableColumn,\n TTSelectableRow,\n TTSelectableRowDblClick,\n TTContextMenuRow,\n TTCheckbox,\n TTHeaderCheckbox,\n TTEditableColumn,\n TreeTableCellEditor,\n TreeTableToggler,\n Scroller\n ],\n exports: [\n TreeTable,\n SharedModule,\n TreeTableToggler,\n TTSortableColumn,\n TTSortIcon,\n TTResizableColumn,\n TTRow,\n TTReorderableColumn,\n TTSelectableRow,\n TTSelectableRowDblClick,\n TTContextMenuRow,\n TTCheckbox,\n TTHeaderCheckbox,\n TTEditableColumn,\n TreeTableCellEditor,\n Scroller\n ]\n})\nexport class TreeTableModule {}\n"],"mappings":"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"}