primeng 18.0.1 → 19.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1078) hide show
  1. package/base/style/basestyle.d.ts +11 -11
  2. package/config/themeprovider.d.ts +6 -0
  3. package/confirmdialog/confirmdialog.d.ts +1 -0
  4. package/dynamicdialog/dynamicdialog.d.ts +2 -2
  5. package/fesm2022/primeng-accordion.mjs +10 -10
  6. package/fesm2022/primeng-accordion.mjs.map +1 -1
  7. package/fesm2022/primeng-animateonscroll.mjs +1 -1
  8. package/fesm2022/primeng-animateonscroll.mjs.map +1 -1
  9. package/fesm2022/primeng-api.mjs +5 -5
  10. package/fesm2022/primeng-api.mjs.map +1 -1
  11. package/fesm2022/primeng-autocomplete.mjs +2 -2
  12. package/fesm2022/primeng-autocomplete.mjs.map +1 -1
  13. package/fesm2022/primeng-autofocus.mjs +1 -1
  14. package/fesm2022/primeng-autofocus.mjs.map +1 -1
  15. package/fesm2022/primeng-avatar.mjs +2 -2
  16. package/fesm2022/primeng-avatar.mjs.map +1 -1
  17. package/fesm2022/primeng-avatargroup.mjs +2 -2
  18. package/fesm2022/primeng-avatargroup.mjs.map +1 -1
  19. package/fesm2022/primeng-badge.mjs +3 -3
  20. package/fesm2022/primeng-badge.mjs.map +1 -1
  21. package/fesm2022/primeng-basecomponent.mjs +1 -1
  22. package/fesm2022/primeng-basecomponent.mjs.map +1 -1
  23. package/fesm2022/primeng-blockui.mjs +2 -2
  24. package/fesm2022/primeng-blockui.mjs.map +1 -1
  25. package/fesm2022/primeng-breadcrumb.mjs +2 -2
  26. package/fesm2022/primeng-breadcrumb.mjs.map +1 -1
  27. package/fesm2022/primeng-button.mjs +5 -5
  28. package/fesm2022/primeng-button.mjs.map +1 -1
  29. package/fesm2022/primeng-buttongroup.mjs +2 -2
  30. package/fesm2022/primeng-buttongroup.mjs.map +1 -1
  31. package/fesm2022/primeng-calendar.mjs +4 -4
  32. package/fesm2022/primeng-calendar.mjs.map +1 -1
  33. package/fesm2022/primeng-card.mjs +2 -2
  34. package/fesm2022/primeng-card.mjs.map +1 -1
  35. package/fesm2022/primeng-carousel.mjs +2 -2
  36. package/fesm2022/primeng-carousel.mjs.map +1 -1
  37. package/fesm2022/primeng-cascadeselect.mjs +4 -4
  38. package/fesm2022/primeng-cascadeselect.mjs.map +1 -1
  39. package/fesm2022/primeng-chart.mjs +2 -2
  40. package/fesm2022/primeng-chart.mjs.map +1 -1
  41. package/fesm2022/primeng-checkbox.mjs +2 -2
  42. package/fesm2022/primeng-checkbox.mjs.map +1 -1
  43. package/fesm2022/primeng-chip.mjs +2 -2
  44. package/fesm2022/primeng-chip.mjs.map +1 -1
  45. package/fesm2022/primeng-colorpicker.mjs +2 -2
  46. package/fesm2022/primeng-colorpicker.mjs.map +1 -1
  47. package/fesm2022/primeng-config.mjs +14 -12
  48. package/fesm2022/primeng-config.mjs.map +1 -1
  49. package/fesm2022/primeng-confirmdialog.mjs +11 -8
  50. package/fesm2022/primeng-confirmdialog.mjs.map +1 -1
  51. package/fesm2022/primeng-confirmpopup.mjs +2 -2
  52. package/fesm2022/primeng-confirmpopup.mjs.map +1 -1
  53. package/fesm2022/primeng-contextmenu.mjs +5 -5
  54. package/fesm2022/primeng-contextmenu.mjs.map +1 -1
  55. package/fesm2022/primeng-dataview.mjs +2 -2
  56. package/fesm2022/primeng-dataview.mjs.map +1 -1
  57. package/fesm2022/primeng-datepicker.mjs +2 -2
  58. package/fesm2022/primeng-datepicker.mjs.map +1 -1
  59. package/fesm2022/primeng-defer.mjs +1 -1
  60. package/fesm2022/primeng-dialog.mjs +2 -2
  61. package/fesm2022/primeng-dialog.mjs.map +1 -1
  62. package/fesm2022/primeng-divider.mjs +2 -2
  63. package/fesm2022/primeng-divider.mjs.map +1 -1
  64. package/fesm2022/primeng-dock.mjs +2 -2
  65. package/fesm2022/primeng-dock.mjs.map +1 -1
  66. package/fesm2022/primeng-dragdrop.mjs +2 -2
  67. package/fesm2022/primeng-dragdrop.mjs.map +1 -1
  68. package/fesm2022/primeng-drawer.mjs +2 -2
  69. package/fesm2022/primeng-drawer.mjs.map +1 -1
  70. package/fesm2022/primeng-dropdown.mjs +4 -4
  71. package/fesm2022/primeng-dropdown.mjs.map +1 -1
  72. package/fesm2022/primeng-dynamicdialog.mjs +7 -7
  73. package/fesm2022/primeng-dynamicdialog.mjs.map +1 -1
  74. package/fesm2022/primeng-editor.mjs +2 -2
  75. package/fesm2022/primeng-editor.mjs.map +1 -1
  76. package/fesm2022/primeng-fieldset.mjs +2 -2
  77. package/fesm2022/primeng-fieldset.mjs.map +1 -1
  78. package/fesm2022/primeng-fileupload.mjs +2 -2
  79. package/fesm2022/primeng-fileupload.mjs.map +1 -1
  80. package/fesm2022/primeng-floatlabel.mjs +2 -2
  81. package/fesm2022/primeng-floatlabel.mjs.map +1 -1
  82. package/fesm2022/primeng-fluid.mjs +2 -2
  83. package/fesm2022/primeng-fluid.mjs.map +1 -1
  84. package/fesm2022/primeng-focustrap.mjs +1 -1
  85. package/fesm2022/primeng-focustrap.mjs.map +1 -1
  86. package/fesm2022/primeng-galleria.mjs +10 -10
  87. package/fesm2022/primeng-galleria.mjs.map +1 -1
  88. package/fesm2022/primeng-iconfield.mjs +2 -2
  89. package/fesm2022/primeng-iconfield.mjs.map +1 -1
  90. package/fesm2022/primeng-icons-angledoubledown.mjs +2 -2
  91. package/fesm2022/primeng-icons-angledoubledown.mjs.map +1 -1
  92. package/fesm2022/primeng-icons-angledoubleleft.mjs +2 -2
  93. package/fesm2022/primeng-icons-angledoubleleft.mjs.map +1 -1
  94. package/fesm2022/primeng-icons-angledoubleright.mjs +2 -2
  95. package/fesm2022/primeng-icons-angledoubleright.mjs.map +1 -1
  96. package/fesm2022/primeng-icons-angledoubleup.mjs +2 -2
  97. package/fesm2022/primeng-icons-angledoubleup.mjs.map +1 -1
  98. package/fesm2022/primeng-icons-angledown.mjs +2 -2
  99. package/fesm2022/primeng-icons-angledown.mjs.map +1 -1
  100. package/fesm2022/primeng-icons-angleleft.mjs +2 -2
  101. package/fesm2022/primeng-icons-angleleft.mjs.map +1 -1
  102. package/fesm2022/primeng-icons-angleright.mjs +2 -2
  103. package/fesm2022/primeng-icons-angleright.mjs.map +1 -1
  104. package/fesm2022/primeng-icons-angleup.mjs +2 -2
  105. package/fesm2022/primeng-icons-angleup.mjs.map +1 -1
  106. package/fesm2022/primeng-icons-arrowdown.mjs +2 -2
  107. package/fesm2022/primeng-icons-arrowdown.mjs.map +1 -1
  108. package/fesm2022/primeng-icons-arrowdownleft.mjs +2 -2
  109. package/fesm2022/primeng-icons-arrowdownleft.mjs.map +1 -1
  110. package/fesm2022/primeng-icons-arrowdownright.mjs +2 -2
  111. package/fesm2022/primeng-icons-arrowdownright.mjs.map +1 -1
  112. package/fesm2022/primeng-icons-arrowleft.mjs +2 -2
  113. package/fesm2022/primeng-icons-arrowleft.mjs.map +1 -1
  114. package/fesm2022/primeng-icons-arrowright.mjs +2 -2
  115. package/fesm2022/primeng-icons-arrowright.mjs.map +1 -1
  116. package/fesm2022/primeng-icons-arrowup.mjs +2 -2
  117. package/fesm2022/primeng-icons-arrowup.mjs.map +1 -1
  118. package/fesm2022/primeng-icons-ban.mjs +2 -2
  119. package/fesm2022/primeng-icons-ban.mjs.map +1 -1
  120. package/fesm2022/primeng-icons-bars.mjs +2 -2
  121. package/fesm2022/primeng-icons-bars.mjs.map +1 -1
  122. package/fesm2022/primeng-icons-baseicon.mjs +2 -2
  123. package/fesm2022/primeng-icons-baseicon.mjs.map +1 -1
  124. package/fesm2022/primeng-icons-blank.mjs +2 -2
  125. package/fesm2022/primeng-icons-blank.mjs.map +1 -1
  126. package/fesm2022/primeng-icons-calendar.mjs +2 -2
  127. package/fesm2022/primeng-icons-calendar.mjs.map +1 -1
  128. package/fesm2022/primeng-icons-caretleft.mjs +2 -2
  129. package/fesm2022/primeng-icons-caretleft.mjs.map +1 -1
  130. package/fesm2022/primeng-icons-caretright.mjs +2 -2
  131. package/fesm2022/primeng-icons-caretright.mjs.map +1 -1
  132. package/fesm2022/primeng-icons-check.mjs +2 -2
  133. package/fesm2022/primeng-icons-check.mjs.map +1 -1
  134. package/fesm2022/primeng-icons-chevrondown.mjs +2 -2
  135. package/fesm2022/primeng-icons-chevrondown.mjs.map +1 -1
  136. package/fesm2022/primeng-icons-chevronleft.mjs +2 -2
  137. package/fesm2022/primeng-icons-chevronleft.mjs.map +1 -1
  138. package/fesm2022/primeng-icons-chevronright.mjs +2 -2
  139. package/fesm2022/primeng-icons-chevronright.mjs.map +1 -1
  140. package/fesm2022/primeng-icons-chevronup.mjs +2 -2
  141. package/fesm2022/primeng-icons-chevronup.mjs.map +1 -1
  142. package/fesm2022/primeng-icons-exclamationtriangle.mjs +2 -2
  143. package/fesm2022/primeng-icons-exclamationtriangle.mjs.map +1 -1
  144. package/fesm2022/primeng-icons-eye.mjs +2 -2
  145. package/fesm2022/primeng-icons-eye.mjs.map +1 -1
  146. package/fesm2022/primeng-icons-eyeslash.mjs +2 -2
  147. package/fesm2022/primeng-icons-eyeslash.mjs.map +1 -1
  148. package/fesm2022/primeng-icons-filter.mjs +2 -2
  149. package/fesm2022/primeng-icons-filter.mjs.map +1 -1
  150. package/fesm2022/primeng-icons-filterslash.mjs +2 -2
  151. package/fesm2022/primeng-icons-filterslash.mjs.map +1 -1
  152. package/fesm2022/primeng-icons-home.mjs +2 -2
  153. package/fesm2022/primeng-icons-home.mjs.map +1 -1
  154. package/fesm2022/primeng-icons-infocircle.mjs +2 -2
  155. package/fesm2022/primeng-icons-infocircle.mjs.map +1 -1
  156. package/fesm2022/primeng-icons-minus.mjs +2 -2
  157. package/fesm2022/primeng-icons-minus.mjs.map +1 -1
  158. package/fesm2022/primeng-icons-pencil.mjs +2 -2
  159. package/fesm2022/primeng-icons-pencil.mjs.map +1 -1
  160. package/fesm2022/primeng-icons-plus.mjs +2 -2
  161. package/fesm2022/primeng-icons-plus.mjs.map +1 -1
  162. package/fesm2022/primeng-icons-refresh.mjs +2 -2
  163. package/fesm2022/primeng-icons-refresh.mjs.map +1 -1
  164. package/fesm2022/primeng-icons-search.mjs +2 -2
  165. package/fesm2022/primeng-icons-search.mjs.map +1 -1
  166. package/fesm2022/primeng-icons-searchminus.mjs +2 -2
  167. package/fesm2022/primeng-icons-searchminus.mjs.map +1 -1
  168. package/fesm2022/primeng-icons-searchplus.mjs +2 -2
  169. package/fesm2022/primeng-icons-searchplus.mjs.map +1 -1
  170. package/fesm2022/primeng-icons-sortalt.mjs +2 -2
  171. package/fesm2022/primeng-icons-sortalt.mjs.map +1 -1
  172. package/fesm2022/primeng-icons-sortamountdown.mjs +2 -2
  173. package/fesm2022/primeng-icons-sortamountdown.mjs.map +1 -1
  174. package/fesm2022/primeng-icons-sortamountupalt.mjs +2 -2
  175. package/fesm2022/primeng-icons-sortamountupalt.mjs.map +1 -1
  176. package/fesm2022/primeng-icons-spinner.mjs +2 -2
  177. package/fesm2022/primeng-icons-spinner.mjs.map +1 -1
  178. package/fesm2022/primeng-icons-star.mjs +2 -2
  179. package/fesm2022/primeng-icons-star.mjs.map +1 -1
  180. package/fesm2022/primeng-icons-starfill.mjs +2 -2
  181. package/fesm2022/primeng-icons-starfill.mjs.map +1 -1
  182. package/fesm2022/primeng-icons-thlarge.mjs +2 -2
  183. package/fesm2022/primeng-icons-thlarge.mjs.map +1 -1
  184. package/fesm2022/primeng-icons-times.mjs +2 -2
  185. package/fesm2022/primeng-icons-times.mjs.map +1 -1
  186. package/fesm2022/primeng-icons-timescircle.mjs +2 -2
  187. package/fesm2022/primeng-icons-timescircle.mjs.map +1 -1
  188. package/fesm2022/primeng-icons-trash.mjs +2 -2
  189. package/fesm2022/primeng-icons-trash.mjs.map +1 -1
  190. package/fesm2022/primeng-icons-undo.mjs +2 -2
  191. package/fesm2022/primeng-icons-undo.mjs.map +1 -1
  192. package/fesm2022/primeng-icons-upload.mjs +2 -2
  193. package/fesm2022/primeng-icons-upload.mjs.map +1 -1
  194. package/fesm2022/primeng-icons-windowmaximize.mjs +2 -2
  195. package/fesm2022/primeng-icons-windowmaximize.mjs.map +1 -1
  196. package/fesm2022/primeng-icons-windowminimize.mjs +2 -2
  197. package/fesm2022/primeng-icons-windowminimize.mjs.map +1 -1
  198. package/fesm2022/primeng-iftalabel.mjs +2 -2
  199. package/fesm2022/primeng-iftalabel.mjs.map +1 -1
  200. package/fesm2022/primeng-image.mjs +2 -2
  201. package/fesm2022/primeng-image.mjs.map +1 -1
  202. package/fesm2022/primeng-imagecompare.mjs +2 -2
  203. package/fesm2022/primeng-imagecompare.mjs.map +1 -1
  204. package/fesm2022/primeng-inplace.mjs +6 -6
  205. package/fesm2022/primeng-inplace.mjs.map +1 -1
  206. package/fesm2022/primeng-inputgroup.mjs +2 -2
  207. package/fesm2022/primeng-inputgroup.mjs.map +1 -1
  208. package/fesm2022/primeng-inputgroupaddon.mjs +2 -2
  209. package/fesm2022/primeng-inputgroupaddon.mjs.map +1 -1
  210. package/fesm2022/primeng-inputicon.mjs +2 -2
  211. package/fesm2022/primeng-inputicon.mjs.map +1 -1
  212. package/fesm2022/primeng-inputmask.mjs +2 -2
  213. package/fesm2022/primeng-inputmask.mjs.map +1 -1
  214. package/fesm2022/primeng-inputnumber.mjs +2 -2
  215. package/fesm2022/primeng-inputnumber.mjs.map +1 -1
  216. package/fesm2022/primeng-inputotp.mjs +2 -2
  217. package/fesm2022/primeng-inputotp.mjs.map +1 -1
  218. package/fesm2022/primeng-inputswitch.mjs +2 -2
  219. package/fesm2022/primeng-inputswitch.mjs.map +1 -1
  220. package/fesm2022/primeng-inputtext.mjs +1 -1
  221. package/fesm2022/primeng-inputtext.mjs.map +1 -1
  222. package/fesm2022/primeng-inputtextarea.mjs +1 -1
  223. package/fesm2022/primeng-inputtextarea.mjs.map +1 -1
  224. package/fesm2022/primeng-keyfilter.mjs +1 -1
  225. package/fesm2022/primeng-keyfilter.mjs.map +1 -1
  226. package/fesm2022/primeng-knob.mjs +2 -2
  227. package/fesm2022/primeng-knob.mjs.map +1 -1
  228. package/fesm2022/primeng-listbox.mjs +2 -2
  229. package/fesm2022/primeng-listbox.mjs.map +1 -1
  230. package/fesm2022/primeng-megamenu.mjs +4 -4
  231. package/fesm2022/primeng-megamenu.mjs.map +1 -1
  232. package/fesm2022/primeng-menu.mjs +5 -5
  233. package/fesm2022/primeng-menu.mjs.map +1 -1
  234. package/fesm2022/primeng-menubar.mjs +4 -4
  235. package/fesm2022/primeng-menubar.mjs.map +1 -1
  236. package/fesm2022/primeng-message.mjs +2 -2
  237. package/fesm2022/primeng-message.mjs.map +1 -1
  238. package/fesm2022/primeng-messages.mjs +2 -2
  239. package/fesm2022/primeng-messages.mjs.map +1 -1
  240. package/fesm2022/primeng-metergroup.mjs +4 -4
  241. package/fesm2022/primeng-metergroup.mjs.map +1 -1
  242. package/fesm2022/primeng-multiselect.mjs +4 -4
  243. package/fesm2022/primeng-multiselect.mjs.map +1 -1
  244. package/fesm2022/primeng-orderlist.mjs +2 -2
  245. package/fesm2022/primeng-orderlist.mjs.map +1 -1
  246. package/fesm2022/primeng-organizationchart.mjs +5 -5
  247. package/fesm2022/primeng-organizationchart.mjs.map +1 -1
  248. package/fesm2022/primeng-overlay.mjs +2 -2
  249. package/fesm2022/primeng-overlay.mjs.map +1 -1
  250. package/fesm2022/primeng-overlaybadge.mjs +2 -2
  251. package/fesm2022/primeng-overlaybadge.mjs.map +1 -1
  252. package/fesm2022/primeng-overlaypanel.mjs +2 -2
  253. package/fesm2022/primeng-overlaypanel.mjs.map +1 -1
  254. package/fesm2022/primeng-paginator.mjs +2 -2
  255. package/fesm2022/primeng-paginator.mjs.map +1 -1
  256. package/fesm2022/primeng-panel.mjs +2 -2
  257. package/fesm2022/primeng-panel.mjs.map +1 -1
  258. package/fesm2022/primeng-panelmenu.mjs +7 -7
  259. package/fesm2022/primeng-panelmenu.mjs.map +1 -1
  260. package/fesm2022/primeng-password.mjs +4 -4
  261. package/fesm2022/primeng-password.mjs.map +1 -1
  262. package/fesm2022/primeng-picklist.mjs +2 -2
  263. package/fesm2022/primeng-picklist.mjs.map +1 -1
  264. package/fesm2022/primeng-popover.mjs +2 -2
  265. package/fesm2022/primeng-popover.mjs.map +1 -1
  266. package/fesm2022/primeng-progressbar.mjs +2 -2
  267. package/fesm2022/primeng-progressbar.mjs.map +1 -1
  268. package/fesm2022/primeng-progressspinner.mjs +2 -2
  269. package/fesm2022/primeng-progressspinner.mjs.map +1 -1
  270. package/fesm2022/primeng-radiobutton.mjs +2 -2
  271. package/fesm2022/primeng-radiobutton.mjs.map +1 -1
  272. package/fesm2022/primeng-rating.mjs +2 -2
  273. package/fesm2022/primeng-rating.mjs.map +1 -1
  274. package/fesm2022/primeng-ripple.mjs +1 -1
  275. package/fesm2022/primeng-ripple.mjs.map +1 -1
  276. package/fesm2022/primeng-scroller.mjs +2 -2
  277. package/fesm2022/primeng-scroller.mjs.map +1 -1
  278. package/fesm2022/primeng-scrollpanel.mjs +2 -2
  279. package/fesm2022/primeng-scrollpanel.mjs.map +1 -1
  280. package/fesm2022/primeng-scrolltop.mjs +2 -2
  281. package/fesm2022/primeng-scrolltop.mjs.map +1 -1
  282. package/fesm2022/primeng-select.mjs +4 -4
  283. package/fesm2022/primeng-select.mjs.map +1 -1
  284. package/fesm2022/primeng-selectbutton.mjs +2 -2
  285. package/fesm2022/primeng-selectbutton.mjs.map +1 -1
  286. package/fesm2022/primeng-sidebar.mjs +2 -2
  287. package/fesm2022/primeng-sidebar.mjs.map +1 -1
  288. package/fesm2022/primeng-skeleton.mjs +2 -2
  289. package/fesm2022/primeng-skeleton.mjs.map +1 -1
  290. package/fesm2022/primeng-slider.mjs +2 -2
  291. package/fesm2022/primeng-slider.mjs.map +1 -1
  292. package/fesm2022/primeng-speeddial.mjs +2 -2
  293. package/fesm2022/primeng-speeddial.mjs.map +1 -1
  294. package/fesm2022/primeng-splitbutton.mjs +2 -2
  295. package/fesm2022/primeng-splitbutton.mjs.map +1 -1
  296. package/fesm2022/primeng-splitter.mjs +4 -4
  297. package/fesm2022/primeng-splitter.mjs.map +1 -1
  298. package/fesm2022/primeng-stepper.mjs +16 -16
  299. package/fesm2022/primeng-stepper.mjs.map +1 -1
  300. package/fesm2022/primeng-steps.mjs +2 -2
  301. package/fesm2022/primeng-steps.mjs.map +1 -1
  302. package/fesm2022/primeng-styleclass.mjs +1 -1
  303. package/fesm2022/primeng-styleclass.mjs.map +1 -1
  304. package/fesm2022/primeng-table.mjs +64 -38
  305. package/fesm2022/primeng-table.mjs.map +1 -1
  306. package/fesm2022/primeng-tabmenu.mjs +2 -2
  307. package/fesm2022/primeng-tabmenu.mjs.map +1 -1
  308. package/fesm2022/primeng-tabs.mjs +11 -11
  309. package/fesm2022/primeng-tabs.mjs.map +1 -1
  310. package/fesm2022/primeng-tabview.mjs +4 -4
  311. package/fesm2022/primeng-tabview.mjs.map +1 -1
  312. package/fesm2022/primeng-tag.mjs +2 -2
  313. package/fesm2022/primeng-tag.mjs.map +1 -1
  314. package/fesm2022/primeng-terminal.mjs +2 -2
  315. package/fesm2022/primeng-terminal.mjs.map +1 -1
  316. package/fesm2022/primeng-textarea.mjs +1 -1
  317. package/fesm2022/primeng-textarea.mjs.map +1 -1
  318. package/fesm2022/primeng-tieredmenu.mjs +4 -4
  319. package/fesm2022/primeng-tieredmenu.mjs.map +1 -1
  320. package/fesm2022/primeng-timeline.mjs +2 -2
  321. package/fesm2022/primeng-timeline.mjs.map +1 -1
  322. package/fesm2022/primeng-toast.mjs +4 -4
  323. package/fesm2022/primeng-toast.mjs.map +1 -1
  324. package/fesm2022/primeng-togglebutton.mjs +3 -3
  325. package/fesm2022/primeng-togglebutton.mjs.map +1 -1
  326. package/fesm2022/primeng-toggleswitch.mjs +2 -2
  327. package/fesm2022/primeng-toggleswitch.mjs.map +1 -1
  328. package/fesm2022/primeng-toolbar.mjs +2 -2
  329. package/fesm2022/primeng-toolbar.mjs.map +1 -1
  330. package/fesm2022/primeng-tooltip.mjs +1 -1
  331. package/fesm2022/primeng-tooltip.mjs.map +1 -1
  332. package/fesm2022/primeng-tree.mjs +4 -4
  333. package/fesm2022/primeng-tree.mjs.map +1 -1
  334. package/fesm2022/primeng-treeselect.mjs +2 -2
  335. package/fesm2022/primeng-treeselect.mjs.map +1 -1
  336. package/fesm2022/primeng-treetable.mjs +24 -24
  337. package/fesm2022/primeng-treetable.mjs.map +1 -1
  338. package/package.json +163 -511
  339. package/speeddial/speeddial.d.ts +2 -2
  340. package/esm2022/accordion/accordion.mjs +0 -1281
  341. package/esm2022/accordion/primeng-accordion.mjs +0 -5
  342. package/esm2022/accordion/public_api.mjs +0 -3
  343. package/esm2022/accordion/style/accordionstyle.mjs +0 -163
  344. package/esm2022/animateonscroll/animateonscroll.mjs +0 -174
  345. package/esm2022/animateonscroll/primeng-animateonscroll.mjs +0 -5
  346. package/esm2022/animateonscroll/public_api.mjs +0 -2
  347. package/esm2022/api/blockableui.mjs +0 -2
  348. package/esm2022/api/confirmaeventtype.mjs +0 -10
  349. package/esm2022/api/confirmation.mjs +0 -2
  350. package/esm2022/api/confirmationservice.mjs +0 -43
  351. package/esm2022/api/contextmenuservice.mjs +0 -22
  352. package/esm2022/api/filtermatchmode.mjs +0 -23
  353. package/esm2022/api/filtermetadata.mjs +0 -2
  354. package/esm2022/api/filteroperator.mjs +0 -5
  355. package/esm2022/api/filterservice.mjs +0 -224
  356. package/esm2022/api/lazyloadevent.mjs +0 -2
  357. package/esm2022/api/lazyloadmeta.mjs +0 -2
  358. package/esm2022/api/megamenuitem.mjs +0 -2
  359. package/esm2022/api/menuitem.mjs +0 -2
  360. package/esm2022/api/messageservice.mjs +0 -47
  361. package/esm2022/api/overlayoptions.mjs +0 -2
  362. package/esm2022/api/overlayservice.mjs +0 -19
  363. package/esm2022/api/primeicons.mjs +0 -314
  364. package/esm2022/api/primeng-api.mjs +0 -5
  365. package/esm2022/api/public_api.mjs +0 -33
  366. package/esm2022/api/scrolleroptions.mjs +0 -2
  367. package/esm2022/api/selectitem.mjs +0 -2
  368. package/esm2022/api/selectitemgroup.mjs +0 -2
  369. package/esm2022/api/shared.mjs +0 -76
  370. package/esm2022/api/sortevent.mjs +0 -2
  371. package/esm2022/api/sortmeta.mjs +0 -2
  372. package/esm2022/api/tablestate.mjs +0 -2
  373. package/esm2022/api/toastmessage.mjs +0 -2
  374. package/esm2022/api/tooltipoptions.mjs +0 -2
  375. package/esm2022/api/translation.mjs +0 -2
  376. package/esm2022/api/translationkeys.mjs +0 -51
  377. package/esm2022/api/treedragdropservice.mjs +0 -21
  378. package/esm2022/api/treenode.mjs +0 -2
  379. package/esm2022/api/treenodedragevent.mjs +0 -2
  380. package/esm2022/api/treetablenode.mjs +0 -2
  381. package/esm2022/autocomplete/autocomplete.interface.mjs +0 -2
  382. package/esm2022/autocomplete/autocomplete.mjs +0 -2284
  383. package/esm2022/autocomplete/primeng-autocomplete.mjs +0 -5
  384. package/esm2022/autocomplete/public_api.mjs +0 -4
  385. package/esm2022/autocomplete/style/autocompletestyle.mjs +0 -409
  386. package/esm2022/autofocus/autofocus.mjs +0 -86
  387. package/esm2022/autofocus/primeng-autofocus.mjs +0 -5
  388. package/esm2022/autofocus/public_api.mjs +0 -2
  389. package/esm2022/avatar/avatar.mjs +0 -193
  390. package/esm2022/avatar/primeng-avatar.mjs +0 -5
  391. package/esm2022/avatar/public_api.mjs +0 -3
  392. package/esm2022/avatar/style/avatarstyle.mjs +0 -130
  393. package/esm2022/avatargroup/avatargroup.mjs +0 -80
  394. package/esm2022/avatargroup/primeng-avatargroup.mjs +0 -5
  395. package/esm2022/avatargroup/public_api.mjs +0 -3
  396. package/esm2022/avatargroup/style/avatargroupstyle.mjs +0 -29
  397. package/esm2022/badge/badge.mjs +0 -339
  398. package/esm2022/badge/primeng-badge.mjs +0 -5
  399. package/esm2022/badge/public_api.mjs +0 -3
  400. package/esm2022/badge/style/badgestyle.mjs +0 -143
  401. package/esm2022/base/base.mjs +0 -19
  402. package/esm2022/base/primeng-base.mjs +0 -5
  403. package/esm2022/base/public_api.mjs +0 -3
  404. package/esm2022/base/style/basestyle.mjs +0 -256
  405. package/esm2022/basecomponent/basecomponent.mjs +0 -160
  406. package/esm2022/basecomponent/primeng-basecomponent.mjs +0 -5
  407. package/esm2022/basecomponent/public_api.mjs +0 -3
  408. package/esm2022/basecomponent/style/basecomponentstyle.mjs +0 -13
  409. package/esm2022/blockui/blockui.interface.mjs +0 -2
  410. package/esm2022/blockui/blockui.mjs +0 -230
  411. package/esm2022/blockui/primeng-blockui.mjs +0 -5
  412. package/esm2022/blockui/public_api.mjs +0 -4
  413. package/esm2022/blockui/style/blockuistyle.mjs +0 -50
  414. package/esm2022/breadcrumb/breadcrumb.interface.mjs +0 -2
  415. package/esm2022/breadcrumb/breadcrumb.mjs +0 -601
  416. package/esm2022/breadcrumb/primeng-breadcrumb.mjs +0 -5
  417. package/esm2022/breadcrumb/public_api.mjs +0 -4
  418. package/esm2022/breadcrumb/style/breadcrumbstyle.mjs +0 -133
  419. package/esm2022/button/button.interface.mjs +0 -2
  420. package/esm2022/button/button.mjs +0 -923
  421. package/esm2022/button/primeng-button.mjs +0 -5
  422. package/esm2022/button/public_api.mjs +0 -4
  423. package/esm2022/button/style/buttonstyle.mjs +0 -707
  424. package/esm2022/buttongroup/buttongroup.mjs +0 -47
  425. package/esm2022/buttongroup/primeng-buttongroup.mjs +0 -5
  426. package/esm2022/buttongroup/public_api.mjs +0 -3
  427. package/esm2022/buttongroup/style/buttongroupstyle.mjs +0 -120
  428. package/esm2022/calendar/calendar.interface.mjs +0 -2
  429. package/esm2022/calendar/calendar.mjs +0 -4567
  430. package/esm2022/calendar/primeng-calendar.mjs +0 -5
  431. package/esm2022/calendar/public_api.mjs +0 -4
  432. package/esm2022/calendar/style/calendarstyle.mjs +0 -472
  433. package/esm2022/card/card.interface.mjs +0 -2
  434. package/esm2022/card/card.mjs +0 -293
  435. package/esm2022/card/primeng-card.mjs +0 -5
  436. package/esm2022/card/public_api.mjs +0 -4
  437. package/esm2022/card/style/cardstyle.mjs +0 -100
  438. package/esm2022/carousel/carousel.interface.mjs +0 -2
  439. package/esm2022/carousel/carousel.mjs +0 -1213
  440. package/esm2022/carousel/primeng-carousel.mjs +0 -5
  441. package/esm2022/carousel/public_api.mjs +0 -4
  442. package/esm2022/carousel/style/carouselstyle.mjs +0 -234
  443. package/esm2022/cascadeselect/cascadeselect.interface.mjs +0 -2
  444. package/esm2022/cascadeselect/cascadeselect.mjs +0 -1878
  445. package/esm2022/cascadeselect/primeng-cascadeselect.mjs +0 -5
  446. package/esm2022/cascadeselect/public_api.mjs +0 -4
  447. package/esm2022/cascadeselect/style/cascadeselectstyle.mjs +0 -379
  448. package/esm2022/chart/chart.mjs +0 -210
  449. package/esm2022/chart/primeng-chart.mjs +0 -5
  450. package/esm2022/chart/public_api.mjs +0 -3
  451. package/esm2022/chart/style/chartstyle.mjs +0 -36
  452. package/esm2022/checkbox/checkbox.interface.mjs +0 -2
  453. package/esm2022/checkbox/checkbox.mjs +0 -468
  454. package/esm2022/checkbox/primeng-checkbox.mjs +0 -5
  455. package/esm2022/checkbox/public_api.mjs +0 -4
  456. package/esm2022/checkbox/style/checkboxstyle.mjs +0 -191
  457. package/esm2022/chip/chip.interface.mjs +0 -2
  458. package/esm2022/chip/chip.mjs +0 -358
  459. package/esm2022/chip/primeng-chip.mjs +0 -5
  460. package/esm2022/chip/public_api.mjs +0 -4
  461. package/esm2022/chip/style/chipstyle.mjs +0 -104
  462. package/esm2022/colorpicker/colorpicker.interface.mjs +0 -2
  463. package/esm2022/colorpicker/colorpicker.mjs +0 -856
  464. package/esm2022/colorpicker/primeng-colorpicker.mjs +0 -5
  465. package/esm2022/colorpicker/public_api.mjs +0 -4
  466. package/esm2022/colorpicker/style/colorpickerstyle.mjs +0 -213
  467. package/esm2022/config/primeng-config.mjs +0 -5
  468. package/esm2022/config/primeng.mjs +0 -185
  469. package/esm2022/config/provideprimeng.mjs +0 -19
  470. package/esm2022/config/public_api.mjs +0 -4
  471. package/esm2022/config/themeprovider.mjs +0 -68
  472. package/esm2022/confirmdialog/confirmdialog.interface.mjs +0 -2
  473. package/esm2022/confirmdialog/confirmdialog.mjs +0 -854
  474. package/esm2022/confirmdialog/primeng-confirmdialog.mjs +0 -5
  475. package/esm2022/confirmdialog/public_api.mjs +0 -4
  476. package/esm2022/confirmdialog/style/confirmdialogstyle.mjs +0 -67
  477. package/esm2022/confirmpopup/confirmpopup.interface.mjs +0 -2
  478. package/esm2022/confirmpopup/confirmpopup.mjs +0 -647
  479. package/esm2022/confirmpopup/primeng-confirmpopup.mjs +0 -5
  480. package/esm2022/confirmpopup/public_api.mjs +0 -4
  481. package/esm2022/confirmpopup/style/confirmpopupstyle.mjs +0 -170
  482. package/esm2022/contextmenu/contextmenu.mjs +0 -1467
  483. package/esm2022/contextmenu/primeng-contextmenu.mjs +0 -5
  484. package/esm2022/contextmenu/public_api.mjs +0 -3
  485. package/esm2022/contextmenu/style/contextmenustyle.mjs +0 -244
  486. package/esm2022/dataview/dataview.interface.mjs +0 -2
  487. package/esm2022/dataview/dataview.mjs +0 -819
  488. package/esm2022/dataview/primeng-dataview.mjs +0 -5
  489. package/esm2022/dataview/public_api.mjs +0 -4
  490. package/esm2022/dataview/style/dataviewstyle.mjs +0 -115
  491. package/esm2022/datepicker/datepicker.interface.mjs +0 -2
  492. package/esm2022/datepicker/datepicker.mjs +0 -4580
  493. package/esm2022/datepicker/primeng-datepicker.mjs +0 -5
  494. package/esm2022/datepicker/public_api.mjs +0 -4
  495. package/esm2022/datepicker/style/datepickerstyle.mjs +0 -663
  496. package/esm2022/defer/defer.mjs +0 -100
  497. package/esm2022/defer/primeng-defer.mjs +0 -5
  498. package/esm2022/defer/public_api.mjs +0 -2
  499. package/esm2022/dialog/dialog.interface.mjs +0 -2
  500. package/esm2022/dialog/dialog.mjs +0 -1430
  501. package/esm2022/dialog/primeng-dialog.mjs +0 -5
  502. package/esm2022/dialog/public_api.mjs +0 -4
  503. package/esm2022/dialog/style/dialogstyle.mjs +0 -283
  504. package/esm2022/divider/divider.mjs +0 -117
  505. package/esm2022/divider/primeng-divider.mjs +0 -5
  506. package/esm2022/divider/public_api.mjs +0 -3
  507. package/esm2022/divider/style/dividerstyle.mjs +0 -138
  508. package/esm2022/dock/dock.interface.mjs +0 -2
  509. package/esm2022/dock/dock.mjs +0 -465
  510. package/esm2022/dock/primeng-dock.mjs +0 -5
  511. package/esm2022/dock/public_api.mjs +0 -4
  512. package/esm2022/dock/style/dockstyle.mjs +0 -210
  513. package/esm2022/dom/connectedoverlayscrollhandler.mjs +0 -30
  514. package/esm2022/dom/domhandler.mjs +0 -725
  515. package/esm2022/dom/primeng-dom.mjs +0 -5
  516. package/esm2022/dom/public_api.mjs +0 -3
  517. package/esm2022/dragdrop/dragdrop.mjs +0 -323
  518. package/esm2022/dragdrop/primeng-dragdrop.mjs +0 -5
  519. package/esm2022/dragdrop/public_api.mjs +0 -2
  520. package/esm2022/drawer/drawer.interface.mjs +0 -2
  521. package/esm2022/drawer/drawer.mjs +0 -705
  522. package/esm2022/drawer/primeng-drawer.mjs +0 -5
  523. package/esm2022/drawer/public_api.mjs +0 -4
  524. package/esm2022/drawer/style/drawerstyle.mjs +0 -283
  525. package/esm2022/dropdown/dropdown.interface.mjs +0 -2
  526. package/esm2022/dropdown/dropdown.mjs +0 -2506
  527. package/esm2022/dropdown/primeng-dropdown.mjs +0 -5
  528. package/esm2022/dropdown/public_api.mjs +0 -4
  529. package/esm2022/dropdown/style/dropdownstyle.mjs +0 -264
  530. package/esm2022/dynamicdialog/dialogservice.mjs +0 -105
  531. package/esm2022/dynamicdialog/dynamicdialog-config.mjs +0 -182
  532. package/esm2022/dynamicdialog/dynamicdialog-injector.mjs +0 -15
  533. package/esm2022/dynamicdialog/dynamicdialog-ref.mjs +0 -119
  534. package/esm2022/dynamicdialog/dynamicdialog.mjs +0 -879
  535. package/esm2022/dynamicdialog/dynamicdialogcontent.mjs +0 -18
  536. package/esm2022/dynamicdialog/primeng-dynamicdialog.mjs +0 -5
  537. package/esm2022/dynamicdialog/public_api.mjs +0 -8
  538. package/esm2022/dynamicdialog/style/dynamicdialogstyle.mjs +0 -60
  539. package/esm2022/editor/editor.interface.mjs +0 -2
  540. package/esm2022/editor/editor.mjs +0 -443
  541. package/esm2022/editor/primeng-editor.mjs +0 -5
  542. package/esm2022/editor/public_api.mjs +0 -4
  543. package/esm2022/editor/style/editorstyle.mjs +0 -1008
  544. package/esm2022/fieldset/fieldset.interface.mjs +0 -2
  545. package/esm2022/fieldset/fieldset.mjs +0 -455
  546. package/esm2022/fieldset/primeng-fieldset.mjs +0 -5
  547. package/esm2022/fieldset/public_api.mjs +0 -4
  548. package/esm2022/fieldset/style/fieldsetstyle.mjs +0 -143
  549. package/esm2022/fileupload/fileupload.interface.mjs +0 -2
  550. package/esm2022/fileupload/fileupload.mjs +0 -1647
  551. package/esm2022/fileupload/primeng-fileupload.mjs +0 -5
  552. package/esm2022/fileupload/public_api.mjs +0 -4
  553. package/esm2022/fileupload/style/fileuploadstyle.mjs +0 -194
  554. package/esm2022/floatlabel/floatlabel.mjs +0 -61
  555. package/esm2022/floatlabel/primeng-floatlabel.mjs +0 -5
  556. package/esm2022/floatlabel/public_api.mjs +0 -3
  557. package/esm2022/floatlabel/style/floatlabelstyle.mjs +0 -133
  558. package/esm2022/fluid/fluid.mjs +0 -50
  559. package/esm2022/fluid/primeng-fluid.mjs +0 -5
  560. package/esm2022/fluid/public_api.mjs +0 -3
  561. package/esm2022/fluid/style/fluidstyle.mjs +0 -38
  562. package/esm2022/focustrap/focustrap.mjs +0 -104
  563. package/esm2022/focustrap/primeng-focustrap.mjs +0 -5
  564. package/esm2022/focustrap/public_api.mjs +0 -2
  565. package/esm2022/galleria/galleria.interface.mjs +0 -2
  566. package/esm2022/galleria/galleria.mjs +0 -1867
  567. package/esm2022/galleria/primeng-galleria.mjs +0 -5
  568. package/esm2022/galleria/public_api.mjs +0 -4
  569. package/esm2022/galleria/style/galleriastyle.mjs +0 -644
  570. package/esm2022/iconfield/iconfield.mjs +0 -73
  571. package/esm2022/iconfield/primeng-iconfield.mjs +0 -5
  572. package/esm2022/iconfield/public_api.mjs +0 -3
  573. package/esm2022/iconfield/style/iconfieldstyle.mjs +0 -77
  574. package/esm2022/icons/angledoubledown/angledoubledown.mjs +0 -34
  575. package/esm2022/icons/angledoubledown/primeng-icons-angledoubledown.mjs +0 -5
  576. package/esm2022/icons/angledoubledown/public_api.mjs +0 -2
  577. package/esm2022/icons/angledoubleleft/angledoubleleft.mjs +0 -34
  578. package/esm2022/icons/angledoubleleft/primeng-icons-angledoubleleft.mjs +0 -5
  579. package/esm2022/icons/angledoubleleft/public_api.mjs +0 -2
  580. package/esm2022/icons/angledoubleright/angledoubleright.mjs +0 -34
  581. package/esm2022/icons/angledoubleright/primeng-icons-angledoubleright.mjs +0 -5
  582. package/esm2022/icons/angledoubleright/public_api.mjs +0 -2
  583. package/esm2022/icons/angledoubleup/angledoubleup.mjs +0 -34
  584. package/esm2022/icons/angledoubleup/primeng-icons-angledoubleup.mjs +0 -5
  585. package/esm2022/icons/angledoubleup/public_api.mjs +0 -2
  586. package/esm2022/icons/angledown/angledown.mjs +0 -32
  587. package/esm2022/icons/angledown/primeng-icons-angledown.mjs +0 -5
  588. package/esm2022/icons/angledown/public_api.mjs +0 -2
  589. package/esm2022/icons/angleleft/angleleft.mjs +0 -32
  590. package/esm2022/icons/angleleft/primeng-icons-angleleft.mjs +0 -5
  591. package/esm2022/icons/angleleft/public_api.mjs +0 -2
  592. package/esm2022/icons/angleright/angleright.mjs +0 -32
  593. package/esm2022/icons/angleright/primeng-icons-angleright.mjs +0 -5
  594. package/esm2022/icons/angleright/public_api.mjs +0 -2
  595. package/esm2022/icons/angleup/angleup.mjs +0 -32
  596. package/esm2022/icons/angleup/primeng-icons-angleup.mjs +0 -5
  597. package/esm2022/icons/angleup/public_api.mjs +0 -2
  598. package/esm2022/icons/arrowdown/arrowdown.mjs +0 -53
  599. package/esm2022/icons/arrowdown/primeng-icons-arrowdown.mjs +0 -5
  600. package/esm2022/icons/arrowdown/public_api.mjs +0 -2
  601. package/esm2022/icons/arrowdownleft/arrowdownleft.mjs +0 -32
  602. package/esm2022/icons/arrowdownleft/primeng-icons-arrowdownleft.mjs +0 -5
  603. package/esm2022/icons/arrowdownleft/public_api.mjs +0 -2
  604. package/esm2022/icons/arrowdownright/arrowdownright.mjs +0 -32
  605. package/esm2022/icons/arrowdownright/primeng-icons-arrowdownright.mjs +0 -5
  606. package/esm2022/icons/arrowdownright/public_api.mjs +0 -2
  607. package/esm2022/icons/arrowleft/arrowleft.mjs +0 -53
  608. package/esm2022/icons/arrowleft/primeng-icons-arrowleft.mjs +0 -5
  609. package/esm2022/icons/arrowleft/public_api.mjs +0 -2
  610. package/esm2022/icons/arrowright/arrowright.mjs +0 -34
  611. package/esm2022/icons/arrowright/primeng-icons-arrowright.mjs +0 -5
  612. package/esm2022/icons/arrowright/public_api.mjs +0 -2
  613. package/esm2022/icons/arrowup/arrowup.mjs +0 -53
  614. package/esm2022/icons/arrowup/primeng-icons-arrowup.mjs +0 -5
  615. package/esm2022/icons/arrowup/public_api.mjs +0 -2
  616. package/esm2022/icons/ban/ban.mjs +0 -51
  617. package/esm2022/icons/ban/primeng-icons-ban.mjs +0 -5
  618. package/esm2022/icons/ban/public_api.mjs +0 -2
  619. package/esm2022/icons/bars/bars.mjs +0 -34
  620. package/esm2022/icons/bars/primeng-icons-bars.mjs +0 -5
  621. package/esm2022/icons/bars/public_api.mjs +0 -2
  622. package/esm2022/icons/baseicon/baseicon.mjs +0 -54
  623. package/esm2022/icons/baseicon/primeng-icons-baseicon.mjs +0 -5
  624. package/esm2022/icons/baseicon/public_api.mjs +0 -3
  625. package/esm2022/icons/baseicon/style/baseiconstyle.mjs +0 -57
  626. package/esm2022/icons/blank/blank.mjs +0 -26
  627. package/esm2022/icons/blank/primeng-icons-blank.mjs +0 -5
  628. package/esm2022/icons/blank/public_api.mjs +0 -2
  629. package/esm2022/icons/calendar/calendar.mjs +0 -32
  630. package/esm2022/icons/calendar/primeng-icons-calendar.mjs +0 -5
  631. package/esm2022/icons/calendar/public_api.mjs +0 -2
  632. package/esm2022/icons/caretleft/caretleft.mjs +0 -32
  633. package/esm2022/icons/caretleft/primeng-icons-caretleft.mjs +0 -5
  634. package/esm2022/icons/caretleft/public_api.mjs +0 -2
  635. package/esm2022/icons/caretright/caretright.mjs +0 -32
  636. package/esm2022/icons/caretright/primeng-icons-caretright.mjs +0 -5
  637. package/esm2022/icons/caretright/public_api.mjs +0 -2
  638. package/esm2022/icons/check/check.mjs +0 -32
  639. package/esm2022/icons/check/primeng-icons-check.mjs +0 -5
  640. package/esm2022/icons/check/public_api.mjs +0 -2
  641. package/esm2022/icons/chevrondown/chevrondown.mjs +0 -32
  642. package/esm2022/icons/chevrondown/primeng-icons-chevrondown.mjs +0 -5
  643. package/esm2022/icons/chevrondown/public_api.mjs +0 -2
  644. package/esm2022/icons/chevronleft/chevronleft.mjs +0 -32
  645. package/esm2022/icons/chevronleft/primeng-icons-chevronleft.mjs +0 -5
  646. package/esm2022/icons/chevronleft/public_api.mjs +0 -2
  647. package/esm2022/icons/chevronright/chevronright.mjs +0 -32
  648. package/esm2022/icons/chevronright/primeng-icons-chevronright.mjs +0 -5
  649. package/esm2022/icons/chevronright/public_api.mjs +0 -2
  650. package/esm2022/icons/chevronup/chevronup.mjs +0 -32
  651. package/esm2022/icons/chevronup/primeng-icons-chevronup.mjs +0 -5
  652. package/esm2022/icons/chevronup/public_api.mjs +0 -2
  653. package/esm2022/icons/exclamationtriangle/exclamationtriangle.mjs +0 -59
  654. package/esm2022/icons/exclamationtriangle/primeng-icons-exclamationtriangle.mjs +0 -5
  655. package/esm2022/icons/exclamationtriangle/public_api.mjs +0 -2
  656. package/esm2022/icons/eye/eye.mjs +0 -34
  657. package/esm2022/icons/eye/primeng-icons-eye.mjs +0 -5
  658. package/esm2022/icons/eye/public_api.mjs +0 -2
  659. package/esm2022/icons/eyeslash/eyeslash.mjs +0 -53
  660. package/esm2022/icons/eyeslash/primeng-icons-eyeslash.mjs +0 -5
  661. package/esm2022/icons/eyeslash/public_api.mjs +0 -2
  662. package/esm2022/icons/filter/filter.mjs +0 -51
  663. package/esm2022/icons/filter/primeng-icons-filter.mjs +0 -5
  664. package/esm2022/icons/filter/public_api.mjs +0 -2
  665. package/esm2022/icons/filterslash/filterslash.mjs +0 -53
  666. package/esm2022/icons/filterslash/primeng-icons-filterslash.mjs +0 -5
  667. package/esm2022/icons/filterslash/public_api.mjs +0 -2
  668. package/esm2022/icons/home/home.mjs +0 -53
  669. package/esm2022/icons/home/primeng-icons-home.mjs +0 -5
  670. package/esm2022/icons/home/public_api.mjs +0 -2
  671. package/esm2022/icons/infocircle/infocircle.mjs +0 -53
  672. package/esm2022/icons/infocircle/primeng-icons-infocircle.mjs +0 -5
  673. package/esm2022/icons/infocircle/public_api.mjs +0 -2
  674. package/esm2022/icons/minus/minus.mjs +0 -32
  675. package/esm2022/icons/minus/primeng-icons-minus.mjs +0 -5
  676. package/esm2022/icons/minus/public_api.mjs +0 -2
  677. package/esm2022/icons/pencil/pencil.mjs +0 -51
  678. package/esm2022/icons/pencil/primeng-icons-pencil.mjs +0 -5
  679. package/esm2022/icons/pencil/public_api.mjs +0 -2
  680. package/esm2022/icons/plus/plus.mjs +0 -51
  681. package/esm2022/icons/plus/primeng-icons-plus.mjs +0 -5
  682. package/esm2022/icons/plus/public_api.mjs +0 -2
  683. package/esm2022/icons/primeng-icons.mjs +0 -5
  684. package/esm2022/icons/public_api.mjs +0 -58
  685. package/esm2022/icons/refresh/primeng-icons-refresh.mjs +0 -5
  686. package/esm2022/icons/refresh/public_api.mjs +0 -2
  687. package/esm2022/icons/refresh/refresh.mjs +0 -53
  688. package/esm2022/icons/search/primeng-icons-search.mjs +0 -5
  689. package/esm2022/icons/search/public_api.mjs +0 -2
  690. package/esm2022/icons/search/search.mjs +0 -53
  691. package/esm2022/icons/searchminus/primeng-icons-searchminus.mjs +0 -5
  692. package/esm2022/icons/searchminus/public_api.mjs +0 -2
  693. package/esm2022/icons/searchminus/searchminus.mjs +0 -53
  694. package/esm2022/icons/searchplus/primeng-icons-searchplus.mjs +0 -5
  695. package/esm2022/icons/searchplus/public_api.mjs +0 -2
  696. package/esm2022/icons/searchplus/searchplus.mjs +0 -53
  697. package/esm2022/icons/sortalt/primeng-icons-sortalt.mjs +0 -5
  698. package/esm2022/icons/sortalt/public_api.mjs +0 -2
  699. package/esm2022/icons/sortalt/sortalt.mjs +0 -57
  700. package/esm2022/icons/sortamountdown/primeng-icons-sortamountdown.mjs +0 -5
  701. package/esm2022/icons/sortamountdown/public_api.mjs +0 -2
  702. package/esm2022/icons/sortamountdown/sortamountdown.mjs +0 -51
  703. package/esm2022/icons/sortamountupalt/primeng-icons-sortamountupalt.mjs +0 -5
  704. package/esm2022/icons/sortamountupalt/public_api.mjs +0 -2
  705. package/esm2022/icons/sortamountupalt/sortamountupalt.mjs +0 -51
  706. package/esm2022/icons/spinner/primeng-icons-spinner.mjs +0 -5
  707. package/esm2022/icons/spinner/public_api.mjs +0 -2
  708. package/esm2022/icons/spinner/spinner.mjs +0 -51
  709. package/esm2022/icons/star/primeng-icons-star.mjs +0 -5
  710. package/esm2022/icons/star/public_api.mjs +0 -2
  711. package/esm2022/icons/star/star.mjs +0 -51
  712. package/esm2022/icons/starfill/primeng-icons-starfill.mjs +0 -5
  713. package/esm2022/icons/starfill/public_api.mjs +0 -2
  714. package/esm2022/icons/starfill/starfill.mjs +0 -51
  715. package/esm2022/icons/thlarge/primeng-icons-thlarge.mjs +0 -5
  716. package/esm2022/icons/thlarge/public_api.mjs +0 -2
  717. package/esm2022/icons/thlarge/thlarge.mjs +0 -53
  718. package/esm2022/icons/times/primeng-icons-times.mjs +0 -5
  719. package/esm2022/icons/times/public_api.mjs +0 -2
  720. package/esm2022/icons/times/times.mjs +0 -32
  721. package/esm2022/icons/timescircle/primeng-icons-timescircle.mjs +0 -5
  722. package/esm2022/icons/timescircle/public_api.mjs +0 -2
  723. package/esm2022/icons/timescircle/timescircle.mjs +0 -53
  724. package/esm2022/icons/trash/primeng-icons-trash.mjs +0 -5
  725. package/esm2022/icons/trash/public_api.mjs +0 -2
  726. package/esm2022/icons/trash/trash.mjs +0 -53
  727. package/esm2022/icons/undo/primeng-icons-undo.mjs +0 -5
  728. package/esm2022/icons/undo/public_api.mjs +0 -2
  729. package/esm2022/icons/undo/undo.mjs +0 -53
  730. package/esm2022/icons/upload/primeng-icons-upload.mjs +0 -5
  731. package/esm2022/icons/upload/public_api.mjs +0 -2
  732. package/esm2022/icons/upload/upload.mjs +0 -53
  733. package/esm2022/icons/windowmaximize/primeng-icons-windowmaximize.mjs +0 -5
  734. package/esm2022/icons/windowmaximize/public_api.mjs +0 -2
  735. package/esm2022/icons/windowmaximize/windowmaximize.mjs +0 -53
  736. package/esm2022/icons/windowminimize/primeng-icons-windowminimize.mjs +0 -5
  737. package/esm2022/icons/windowminimize/public_api.mjs +0 -2
  738. package/esm2022/icons/windowminimize/windowminimize.mjs +0 -53
  739. package/esm2022/iftalabel/iftalabel.mjs +0 -49
  740. package/esm2022/iftalabel/primeng-iftalabel.mjs +0 -5
  741. package/esm2022/iftalabel/public_api.mjs +0 -3
  742. package/esm2022/iftalabel/style/iftalabelstyle.mjs +0 -96
  743. package/esm2022/image/image.interface.mjs +0 -2
  744. package/esm2022/image/image.mjs +0 -794
  745. package/esm2022/image/primeng-image.mjs +0 -5
  746. package/esm2022/image/public_api.mjs +0 -4
  747. package/esm2022/image/style/imagestyle.mjs +0 -219
  748. package/esm2022/imagecompare/imagecompare.mjs +0 -178
  749. package/esm2022/imagecompare/primeng-imagecompare.mjs +0 -5
  750. package/esm2022/imagecompare/public_api.mjs +0 -3
  751. package/esm2022/imagecompare/style/imagecomparestyle.mjs +0 -124
  752. package/esm2022/inplace/inplace.interface.mjs +0 -2
  753. package/esm2022/inplace/inplace.mjs +0 -369
  754. package/esm2022/inplace/primeng-inplace.mjs +0 -5
  755. package/esm2022/inplace/public_api.mjs +0 -4
  756. package/esm2022/inplace/style/inplacestyle.mjs +0 -69
  757. package/esm2022/inputgroup/inputgroup.mjs +0 -68
  758. package/esm2022/inputgroup/primeng-inputgroup.mjs +0 -5
  759. package/esm2022/inputgroup/public_api.mjs +0 -3
  760. package/esm2022/inputgroup/style/inputgroupstyle.mjs +0 -145
  761. package/esm2022/inputgroupaddon/inputgroupaddon.mjs +0 -74
  762. package/esm2022/inputgroupaddon/primeng-inputgroupaddon.mjs +0 -5
  763. package/esm2022/inputgroupaddon/public_api.mjs +0 -3
  764. package/esm2022/inputgroupaddon/style/inputgroupaddonstyle.mjs +0 -16
  765. package/esm2022/inputicon/inputicon.mjs +0 -66
  766. package/esm2022/inputicon/primeng-inputicon.mjs +0 -5
  767. package/esm2022/inputicon/public_api.mjs +0 -3
  768. package/esm2022/inputicon/style/inputiconstyle.mjs +0 -16
  769. package/esm2022/inputmask/inputmask.interface.mjs +0 -2
  770. package/esm2022/inputmask/inputmask.mjs +0 -927
  771. package/esm2022/inputmask/primeng-inputmask.mjs +0 -5
  772. package/esm2022/inputmask/public_api.mjs +0 -4
  773. package/esm2022/inputmask/style/inputmaskstyle.mjs +0 -62
  774. package/esm2022/inputnumber/inputnumber.interface.mjs +0 -2
  775. package/esm2022/inputnumber/inputnumber.mjs +0 -1753
  776. package/esm2022/inputnumber/primeng-inputnumber.mjs +0 -5
  777. package/esm2022/inputnumber/public_api.mjs +0 -4
  778. package/esm2022/inputnumber/style/inputnumberstyle.mjs +0 -240
  779. package/esm2022/inputotp/inputotp.mjs +0 -425
  780. package/esm2022/inputotp/primeng-inputotp.mjs +0 -5
  781. package/esm2022/inputotp/public_api.mjs +0 -3
  782. package/esm2022/inputotp/style/inputotpstyle.mjs +0 -60
  783. package/esm2022/inputswitch/inputswitch.interface.mjs +0 -2
  784. package/esm2022/inputswitch/inputswitch.mjs +0 -241
  785. package/esm2022/inputswitch/primeng-inputswitch.mjs +0 -5
  786. package/esm2022/inputswitch/public_api.mjs +0 -4
  787. package/esm2022/inputswitch/style/inputswitchstyle.mjs +0 -130
  788. package/esm2022/inputtext/inputtext.mjs +0 -104
  789. package/esm2022/inputtext/primeng-inputtext.mjs +0 -5
  790. package/esm2022/inputtext/public_api.mjs +0 -3
  791. package/esm2022/inputtext/style/inputtextstyle.mjs +0 -117
  792. package/esm2022/inputtextarea/inputtextarea.mjs +0 -156
  793. package/esm2022/inputtextarea/primeng-inputtextarea.mjs +0 -5
  794. package/esm2022/inputtextarea/public_api.mjs +0 -3
  795. package/esm2022/inputtextarea/style/textareastyle.mjs +0 -107
  796. package/esm2022/keyfilter/keyfilter.interface.mjs +0 -2
  797. package/esm2022/keyfilter/keyfilter.mjs +0 -263
  798. package/esm2022/keyfilter/primeng-keyfilter.mjs +0 -5
  799. package/esm2022/keyfilter/public_api.mjs +0 -3
  800. package/esm2022/knob/knob.mjs +0 -471
  801. package/esm2022/knob/primeng-knob.mjs +0 -5
  802. package/esm2022/knob/public_api.mjs +0 -3
  803. package/esm2022/knob/style/knobstyle.mjs +0 -83
  804. package/esm2022/listbox/listbox.interface.mjs +0 -2
  805. package/esm2022/listbox/listbox.mjs +0 -2103
  806. package/esm2022/listbox/primeng-listbox.mjs +0 -5
  807. package/esm2022/listbox/public_api.mjs +0 -4
  808. package/esm2022/listbox/style/listboxstyle.mjs +0 -206
  809. package/esm2022/megamenu/megamenu.interface.mjs +0 -2
  810. package/esm2022/megamenu/megamenu.mjs +0 -1653
  811. package/esm2022/megamenu/primeng-megamenu.mjs +0 -5
  812. package/esm2022/megamenu/public_api.mjs +0 -4
  813. package/esm2022/megamenu/style/megamenustyle.mjs +0 -487
  814. package/esm2022/menu/menu.mjs +0 -1193
  815. package/esm2022/menu/primeng-menu.mjs +0 -5
  816. package/esm2022/menu/public_api.mjs +0 -3
  817. package/esm2022/menu/style/menustyle.mjs +0 -179
  818. package/esm2022/menubar/menubar.interface.mjs +0 -2
  819. package/esm2022/menubar/menubar.mjs +0 -1519
  820. package/esm2022/menubar/primeng-menubar.mjs +0 -5
  821. package/esm2022/menubar/public_api.mjs +0 -4
  822. package/esm2022/menubar/style/menubarstyle.mjs +0 -375
  823. package/esm2022/message/message.mjs +0 -445
  824. package/esm2022/message/primeng-message.mjs +0 -5
  825. package/esm2022/message/public_api.mjs +0 -3
  826. package/esm2022/message/style/messagestyle.mjs +0 -357
  827. package/esm2022/messages/messages.interface.mjs +0 -2
  828. package/esm2022/messages/messages.mjs +0 -538
  829. package/esm2022/messages/primeng-messages.mjs +0 -5
  830. package/esm2022/messages/public_api.mjs +0 -4
  831. package/esm2022/messages/style/messagesstyle.mjs +0 -229
  832. package/esm2022/metergroup/metergroup.interface.mjs +0 -2
  833. package/esm2022/metergroup/metergroup.mjs +0 -455
  834. package/esm2022/metergroup/primeng-metergroup.mjs +0 -5
  835. package/esm2022/metergroup/public_api.mjs +0 -4
  836. package/esm2022/metergroup/style/metergroupstyle.mjs +0 -169
  837. package/esm2022/multiselect/multiselect.interface.mjs +0 -2
  838. package/esm2022/multiselect/multiselect.mjs +0 -3015
  839. package/esm2022/multiselect/primeng-multiselect.mjs +0 -5
  840. package/esm2022/multiselect/public_api.mjs +0 -4
  841. package/esm2022/multiselect/style/multiselectstyle.mjs +0 -373
  842. package/esm2022/orderlist/orderlist.interface.mjs +0 -2
  843. package/esm2022/orderlist/orderlist.mjs +0 -1176
  844. package/esm2022/orderlist/primeng-orderlist.mjs +0 -5
  845. package/esm2022/orderlist/public_api.mjs +0 -4
  846. package/esm2022/orderlist/style/orderliststyle.mjs +0 -51
  847. package/esm2022/organizationchart/organizationchart.interface.mjs +0 -2
  848. package/esm2022/organizationchart/organizationchart.mjs +0 -607
  849. package/esm2022/organizationchart/primeng-organizationchart.mjs +0 -5
  850. package/esm2022/organizationchart/public_api.mjs +0 -4
  851. package/esm2022/organizationchart/style/organizationchartstyle.mjs +0 -191
  852. package/esm2022/overlay/overlay.mjs +0 -688
  853. package/esm2022/overlay/primeng-overlay.mjs +0 -5
  854. package/esm2022/overlay/public_api.mjs +0 -3
  855. package/esm2022/overlay/style/overlaystyle.mjs +0 -93
  856. package/esm2022/overlaybadge/overlaybadge.mjs +0 -121
  857. package/esm2022/overlaybadge/primeng-overlaybadge.mjs +0 -5
  858. package/esm2022/overlaybadge/public_api.mjs +0 -3
  859. package/esm2022/overlaybadge/style/overlaybadgestyle.mjs +0 -34
  860. package/esm2022/overlaypanel/overlaypanel.mjs +0 -552
  861. package/esm2022/overlaypanel/primeng-overlaypanel.mjs +0 -5
  862. package/esm2022/overlaypanel/public_api.mjs +0 -3
  863. package/esm2022/overlaypanel/style/popoverstyle.mjs +0 -119
  864. package/esm2022/paginator/paginator.interface.mjs +0 -2
  865. package/esm2022/paginator/paginator.mjs +0 -925
  866. package/esm2022/paginator/primeng-paginator.mjs +0 -5
  867. package/esm2022/paginator/public_api.mjs +0 -4
  868. package/esm2022/paginator/style/paginatorstyle.mjs +0 -243
  869. package/esm2022/panel/panel.mjs +0 -645
  870. package/esm2022/panel/primeng-panel.mjs +0 -5
  871. package/esm2022/panel/public_api.mjs +0 -3
  872. package/esm2022/panel/style/panelstyle.mjs +0 -120
  873. package/esm2022/panelmenu/panelmenu.interface.mjs +0 -2
  874. package/esm2022/panelmenu/panelmenu.mjs +0 -1651
  875. package/esm2022/panelmenu/primeng-panelmenu.mjs +0 -5
  876. package/esm2022/panelmenu/public_api.mjs +0 -4
  877. package/esm2022/panelmenu/style/panelmenustyle.mjs +0 -291
  878. package/esm2022/password/password.mjs +0 -1240
  879. package/esm2022/password/primeng-password.mjs +0 -5
  880. package/esm2022/password/public_api.mjs +0 -3
  881. package/esm2022/password/style/passwordstyle.mjs +0 -182
  882. package/esm2022/picklist/picklist.interface.mjs +0 -2
  883. package/esm2022/picklist/picklist.mjs +0 -2426
  884. package/esm2022/picklist/primeng-picklist.mjs +0 -5
  885. package/esm2022/picklist/public_api.mjs +0 -4
  886. package/esm2022/picklist/style/pickliststyle.mjs +0 -79
  887. package/esm2022/popover/popover.mjs +0 -535
  888. package/esm2022/popover/primeng-popover.mjs +0 -5
  889. package/esm2022/popover/public_api.mjs +0 -3
  890. package/esm2022/popover/style/popoverstyle.mjs +0 -99
  891. package/esm2022/primeng.mjs +0 -5
  892. package/esm2022/progressbar/primeng-progressbar.mjs +0 -5
  893. package/esm2022/progressbar/progressbar.mjs +0 -215
  894. package/esm2022/progressbar/public_api.mjs +0 -3
  895. package/esm2022/progressbar/style/progressbarstyle.mjs +0 -165
  896. package/esm2022/progressspinner/primeng-progressspinner.mjs +0 -5
  897. package/esm2022/progressspinner/progressspinner.mjs +0 -105
  898. package/esm2022/progressspinner/public_api.mjs +0 -3
  899. package/esm2022/progressspinner/style/progressspinnerstyle.mjs +0 -115
  900. package/esm2022/public_api.mjs +0 -2
  901. package/esm2022/radiobutton/primeng-radiobutton.mjs +0 -5
  902. package/esm2022/radiobutton/public_api.mjs +0 -4
  903. package/esm2022/radiobutton/radiobutton.interface.mjs +0 -2
  904. package/esm2022/radiobutton/radiobutton.mjs +0 -356
  905. package/esm2022/radiobutton/style/radiobuttonstyle.mjs +0 -196
  906. package/esm2022/rating/primeng-rating.mjs +0 -5
  907. package/esm2022/rating/public_api.mjs +0 -4
  908. package/esm2022/rating/rating.interface.mjs +0 -2
  909. package/esm2022/rating/rating.mjs +0 -449
  910. package/esm2022/rating/style/ratingstyle.mjs +0 -103
  911. package/esm2022/ripple/primeng-ripple.mjs +0 -5
  912. package/esm2022/ripple/public_api.mjs +0 -3
  913. package/esm2022/ripple/ripple.mjs +0 -134
  914. package/esm2022/ripple/style/ripplestyle.mjs +0 -63
  915. package/esm2022/scroller/primeng-scroller.mjs +0 -5
  916. package/esm2022/scroller/public_api.mjs +0 -4
  917. package/esm2022/scroller/scroller.interface.mjs +0 -2
  918. package/esm2022/scroller/scroller.mjs +0 -1300
  919. package/esm2022/scroller/style/scrollerstyle.mjs +0 -104
  920. package/esm2022/scrollpanel/primeng-scrollpanel.mjs +0 -5
  921. package/esm2022/scrollpanel/public_api.mjs +0 -4
  922. package/esm2022/scrollpanel/scrollpanel.interface.mjs +0 -2
  923. package/esm2022/scrollpanel/scrollpanel.mjs +0 -525
  924. package/esm2022/scrollpanel/style/scrollpanelstyle.mjs +0 -120
  925. package/esm2022/scrolltop/primeng-scrolltop.mjs +0 -5
  926. package/esm2022/scrolltop/public_api.mjs +0 -4
  927. package/esm2022/scrolltop/scrolltop.interface.mjs +0 -2
  928. package/esm2022/scrolltop/scrolltop.mjs +0 -343
  929. package/esm2022/scrolltop/style/scrolltopstyle.mjs +0 -77
  930. package/esm2022/select/primeng-select.mjs +0 -5
  931. package/esm2022/select/public_api.mjs +0 -4
  932. package/esm2022/select/select.interface.mjs +0 -2
  933. package/esm2022/select/select.mjs +0 -2697
  934. package/esm2022/select/style/selectstyle.mjs +0 -365
  935. package/esm2022/selectbutton/primeng-selectbutton.mjs +0 -5
  936. package/esm2022/selectbutton/public_api.mjs +0 -4
  937. package/esm2022/selectbutton/selectbutton.interface.mjs +0 -2
  938. package/esm2022/selectbutton/selectbutton.mjs +0 -388
  939. package/esm2022/selectbutton/style/selectbuttonstyle.mjs +0 -73
  940. package/esm2022/sidebar/primeng-sidebar.mjs +0 -5
  941. package/esm2022/sidebar/public_api.mjs +0 -4
  942. package/esm2022/sidebar/sidebar.interface.mjs +0 -2
  943. package/esm2022/sidebar/sidebar.mjs +0 -600
  944. package/esm2022/sidebar/style/drawerstyle.mjs +0 -174
  945. package/esm2022/skeleton/primeng-skeleton.mjs +0 -5
  946. package/esm2022/skeleton/public_api.mjs +0 -3
  947. package/esm2022/skeleton/skeleton.mjs +0 -121
  948. package/esm2022/skeleton/style/skeletonstyle.mjs +0 -93
  949. package/esm2022/slider/primeng-slider.mjs +0 -5
  950. package/esm2022/slider/public_api.mjs +0 -4
  951. package/esm2022/slider/slider.interface.mjs +0 -2
  952. package/esm2022/slider/slider.mjs +0 -820
  953. package/esm2022/slider/style/sliderstyle.mjs +0 -141
  954. package/esm2022/speeddial/primeng-speeddial.mjs +0 -5
  955. package/esm2022/speeddial/public_api.mjs +0 -4
  956. package/esm2022/speeddial/speeddial.interface.mjs +0 -2
  957. package/esm2022/speeddial/speeddial.mjs +0 -891
  958. package/esm2022/speeddial/style/speeddialstyle.mjs +0 -167
  959. package/esm2022/splitbutton/primeng-splitbutton.mjs +0 -5
  960. package/esm2022/splitbutton/public_api.mjs +0 -4
  961. package/esm2022/splitbutton/splitbutton.interface.mjs +0 -2
  962. package/esm2022/splitbutton/splitbutton.mjs +0 -602
  963. package/esm2022/splitbutton/style/splitbuttonstyle.mjs +0 -100
  964. package/esm2022/splitter/primeng-splitter.mjs +0 -5
  965. package/esm2022/splitter/public_api.mjs +0 -4
  966. package/esm2022/splitter/splitter.interface.mjs +0 -2
  967. package/esm2022/splitter/splitter.mjs +0 -626
  968. package/esm2022/splitter/style/splitterstyle.mjs +0 -127
  969. package/esm2022/stepper/primeng-stepper.mjs +0 -5
  970. package/esm2022/stepper/public_api.mjs +0 -3
  971. package/esm2022/stepper/stepper.mjs +0 -535
  972. package/esm2022/stepper/style/stepperstyle.mjs +0 -228
  973. package/esm2022/steps/primeng-steps.mjs +0 -5
  974. package/esm2022/steps/public_api.mjs +0 -3
  975. package/esm2022/steps/steps.mjs +0 -405
  976. package/esm2022/steps/style/stepsstyle.mjs +0 -180
  977. package/esm2022/styleclass/primeng-styleclass.mjs +0 -5
  978. package/esm2022/styleclass/public_api.mjs +0 -2
  979. package/esm2022/styleclass/styleclass.mjs +0 -315
  980. package/esm2022/table/columnfilter.interface.mjs +0 -2
  981. package/esm2022/table/primeng-table.mjs +0 -5
  982. package/esm2022/table/public_api.mjs +0 -5
  983. package/esm2022/table/style/tablestyle.mjs +0 -906
  984. package/esm2022/table/table.interface.mjs +0 -2
  985. package/esm2022/table/table.mjs +0 -7840
  986. package/esm2022/tabmenu/primeng-tabmenu.mjs +0 -5
  987. package/esm2022/tabmenu/public_api.mjs +0 -4
  988. package/esm2022/tabmenu/style/tabmenustyle.mjs +0 -192
  989. package/esm2022/tabmenu/tabmenu.interface.mjs +0 -2
  990. package/esm2022/tabmenu/tabmenu.mjs +0 -757
  991. package/esm2022/tabs/primeng-tabs.mjs +0 -5
  992. package/esm2022/tabs/public_api.mjs +0 -7
  993. package/esm2022/tabs/style/tabsstyle.mjs +0 -211
  994. package/esm2022/tabs/tab.mjs +0 -175
  995. package/esm2022/tabs/tablist.mjs +0 -305
  996. package/esm2022/tabs/tabpanel.mjs +0 -60
  997. package/esm2022/tabs/tabpanels.mjs +0 -38
  998. package/esm2022/tabs/tabs.mjs +0 -105
  999. package/esm2022/tabview/primeng-tabview.mjs +0 -5
  1000. package/esm2022/tabview/public_api.mjs +0 -4
  1001. package/esm2022/tabview/style/tabsstyle.mjs +0 -211
  1002. package/esm2022/tabview/tabview.interface.mjs +0 -2
  1003. package/esm2022/tabview/tabview.mjs +0 -1141
  1004. package/esm2022/tag/primeng-tag.mjs +0 -5
  1005. package/esm2022/tag/public_api.mjs +0 -4
  1006. package/esm2022/tag/style/tagstyle.mjs +0 -108
  1007. package/esm2022/tag/tag.interface.mjs +0 -2
  1008. package/esm2022/tag/tag.mjs +0 -192
  1009. package/esm2022/terminal/primeng-terminal.mjs +0 -5
  1010. package/esm2022/terminal/public_api.mjs +0 -4
  1011. package/esm2022/terminal/style/terminalstyle.mjs +0 -113
  1012. package/esm2022/terminal/terminal.mjs +0 -195
  1013. package/esm2022/terminal/terminalservice.mjs +0 -25
  1014. package/esm2022/textarea/primeng-textarea.mjs +0 -5
  1015. package/esm2022/textarea/public_api.mjs +0 -3
  1016. package/esm2022/textarea/style/textareastyle.mjs +0 -120
  1017. package/esm2022/textarea/textarea.mjs +0 -165
  1018. package/esm2022/tieredmenu/primeng-tieredmenu.mjs +0 -5
  1019. package/esm2022/tieredmenu/public_api.mjs +0 -4
  1020. package/esm2022/tieredmenu/style/tieredmenustyle.mjs +0 -276
  1021. package/esm2022/tieredmenu/tieredmenu.interface.mjs +0 -2
  1022. package/esm2022/tieredmenu/tieredmenu.mjs +0 -1467
  1023. package/esm2022/timeline/primeng-timeline.mjs +0 -5
  1024. package/esm2022/timeline/public_api.mjs +0 -4
  1025. package/esm2022/timeline/style/timelinestyle.mjs +0 -217
  1026. package/esm2022/timeline/timeline.interface.mjs +0 -2
  1027. package/esm2022/timeline/timeline.mjs +0 -247
  1028. package/esm2022/toast/primeng-toast.mjs +0 -5
  1029. package/esm2022/toast/public_api.mjs +0 -4
  1030. package/esm2022/toast/style/toaststyle.mjs +0 -351
  1031. package/esm2022/toast/toast.interface.mjs +0 -2
  1032. package/esm2022/toast/toast.mjs +0 -760
  1033. package/esm2022/togglebutton/primeng-togglebutton.mjs +0 -5
  1034. package/esm2022/togglebutton/public_api.mjs +0 -3
  1035. package/esm2022/togglebutton/style/togglebuttonstyle.mjs +0 -170
  1036. package/esm2022/togglebutton/togglebutton.interface.mjs +0 -2
  1037. package/esm2022/togglebutton/togglebutton.mjs +0 -368
  1038. package/esm2022/toggleswitch/primeng-toggleswitch.mjs +0 -5
  1039. package/esm2022/toggleswitch/public_api.mjs +0 -4
  1040. package/esm2022/toggleswitch/style/toggleswitchstyle.mjs +0 -165
  1041. package/esm2022/toggleswitch/toggleswitch.interface.mjs +0 -2
  1042. package/esm2022/toggleswitch/toggleswitch.mjs +0 -297
  1043. package/esm2022/toolbar/primeng-toolbar.mjs +0 -5
  1044. package/esm2022/toolbar/public_api.mjs +0 -4
  1045. package/esm2022/toolbar/style/toolbarstyle.mjs +0 -69
  1046. package/esm2022/toolbar/toolbar.interface.mjs +0 -2
  1047. package/esm2022/toolbar/toolbar.mjs +0 -198
  1048. package/esm2022/tooltip/primeng-tooltip.mjs +0 -5
  1049. package/esm2022/tooltip/public_api.mjs +0 -3
  1050. package/esm2022/tooltip/style/tooltipstyle.mjs +0 -113
  1051. package/esm2022/tooltip/tooltip.mjs +0 -680
  1052. package/esm2022/tree/primeng-tree.mjs +0 -5
  1053. package/esm2022/tree/public_api.mjs +0 -4
  1054. package/esm2022/tree/style/treestyle.mjs +0 -333
  1055. package/esm2022/tree/tree.interface.mjs +0 -2
  1056. package/esm2022/tree/tree.mjs +0 -2304
  1057. package/esm2022/treeselect/primeng-treeselect.mjs +0 -5
  1058. package/esm2022/treeselect/public_api.mjs +0 -4
  1059. package/esm2022/treeselect/style/treeselectstyle.mjs +0 -271
  1060. package/esm2022/treeselect/treeselect.interface.mjs +0 -2
  1061. package/esm2022/treeselect/treeselect.mjs +0 -1439
  1062. package/esm2022/treetable/primeng-treetable.mjs +0 -5
  1063. package/esm2022/treetable/public_api.mjs +0 -4
  1064. package/esm2022/treetable/style/treetablestyle.mjs +0 -621
  1065. package/esm2022/treetable/treetable.interface.mjs +0 -2
  1066. package/esm2022/treetable/treetable.mjs +0 -4661
  1067. package/esm2022/ts-helpers/primeng-ts-helpers.mjs +0 -5
  1068. package/esm2022/ts-helpers/public_api.mjs +0 -2
  1069. package/esm2022/ts-helpers/ts-helpers.mjs +0 -2
  1070. package/esm2022/usestyle/primeng-usestyle.mjs +0 -5
  1071. package/esm2022/usestyle/public_api.mjs +0 -2
  1072. package/esm2022/usestyle/usestyle.mjs +0 -44
  1073. package/esm2022/utils/inpututils.mjs +0 -7
  1074. package/esm2022/utils/objectutils.mjs +0 -276
  1075. package/esm2022/utils/primeng-utils.mjs +0 -5
  1076. package/esm2022/utils/public_api.mjs +0 -6
  1077. package/esm2022/utils/uniquecomponentid.mjs +0 -6
  1078. package/esm2022/utils/zindexutils.mjs +0 -35
@@ -1,1653 +0,0 @@
1
- import { CommonModule, isPlatformBrowser } from '@angular/common';
2
- import { booleanAttribute, ChangeDetectionStrategy, Component, ContentChild, ContentChildren, effect, EventEmitter, forwardRef, inject, Input, NgModule, numberAttribute, Output, signal, ViewChild, ViewEncapsulation } from '@angular/core';
3
- import { RouterModule } from '@angular/router';
4
- import { findLastIndex, findSingle, focus, isEmpty, isNotEmpty, isPrintableCharacter, isTouchDevice, resolve, uuid } from '@primeuix/utils';
5
- import { PrimeTemplate, SharedModule } from 'primeng/api';
6
- import { BadgeModule } from 'primeng/badge';
7
- import { BaseComponent } from 'primeng/basecomponent';
8
- import { AngleDownIcon, AngleRightIcon, BarsIcon } from 'primeng/icons';
9
- import { Ripple } from 'primeng/ripple';
10
- import { TooltipModule } from 'primeng/tooltip';
11
- import { ZIndexUtils } from 'primeng/utils';
12
- import { MegaMenuStyle } from './style/megamenustyle';
13
- import * as i0 from "@angular/core";
14
- import * as i1 from "@angular/common";
15
- import * as i2 from "@angular/router";
16
- import * as i3 from "primeng/tooltip";
17
- import * as i4 from "primeng/badge";
18
- const _c0 = ["menubar"];
19
- const _c1 = a0 => ({ "max-height": a0, overflow: "auto" });
20
- const _c2 = (a0, a1) => ({ "p-megamenu-root-list": a0, "p-megamenu-submenu": a1 });
21
- const _c3 = a0 => ({ "p-megamenu-item-link": true, "p-disabled": a0 });
22
- const _c4 = () => ({ exact: false });
23
- const _c5 = a0 => ({ $implicit: a0 });
24
- function MegaMenuSub_ul_0_li_2_Template(rf, ctx) { if (rf & 1) {
25
- i0.ɵɵelementStart(0, "li", 8);
26
- i0.ɵɵtext(1);
27
- i0.ɵɵelementEnd();
28
- } if (rf & 2) {
29
- const ctx_r1 = i0.ɵɵnextContext(2);
30
- i0.ɵɵstyleMap(ctx_r1.getItemProp(ctx_r1.submenu, "style"));
31
- i0.ɵɵproperty("ngClass", ctx_r1.getSubmenuHeaderClass(ctx_r1.submenu));
32
- i0.ɵɵadvance();
33
- i0.ɵɵtextInterpolate1(" ", ctx_r1.getItemLabel(ctx_r1.submenu), " ");
34
- } }
35
- function MegaMenuSub_ul_0_ng_template_3_li_0_Template(rf, ctx) { if (rf & 1) {
36
- i0.ɵɵelement(0, "li", 11);
37
- } if (rf & 2) {
38
- const processedItem_r3 = i0.ɵɵnextContext().$implicit;
39
- const ctx_r1 = i0.ɵɵnextContext(2);
40
- i0.ɵɵstyleMap(ctx_r1.getItemProp(processedItem_r3, "style"));
41
- i0.ɵɵproperty("ngClass", ctx_r1.getSeparatorItemClass(processedItem_r3));
42
- i0.ɵɵattribute("id", ctx_r1.getItemId(processedItem_r3))("data-pc-section", "separator");
43
- } }
44
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_span_1_Template(rf, ctx) { if (rf & 1) {
45
- i0.ɵɵelement(0, "span", 22);
46
- } if (rf & 2) {
47
- const processedItem_r3 = i0.ɵɵnextContext(4).$implicit;
48
- const ctx_r1 = i0.ɵɵnextContext(2);
49
- i0.ɵɵproperty("ngClass", ctx_r1.getItemProp(processedItem_r3, "icon"))("ngStyle", ctx_r1.getItemProp(processedItem_r3, "iconStyle"));
50
- i0.ɵɵattribute("data-pc-section", "icon")("tabindex", -1);
51
- } }
52
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_span_2_Template(rf, ctx) { if (rf & 1) {
53
- i0.ɵɵelementStart(0, "span", 23);
54
- i0.ɵɵtext(1);
55
- i0.ɵɵelementEnd();
56
- } if (rf & 2) {
57
- const processedItem_r3 = i0.ɵɵnextContext(4).$implicit;
58
- const ctx_r1 = i0.ɵɵnextContext(2);
59
- i0.ɵɵattribute("data-pc-section", "label");
60
- i0.ɵɵadvance();
61
- i0.ɵɵtextInterpolate1(" ", ctx_r1.getItemLabel(processedItem_r3), " ");
62
- } }
63
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_ng_template_3_Template(rf, ctx) { if (rf & 1) {
64
- i0.ɵɵelement(0, "span", 24);
65
- } if (rf & 2) {
66
- const processedItem_r3 = i0.ɵɵnextContext(4).$implicit;
67
- const ctx_r1 = i0.ɵɵnextContext(2);
68
- i0.ɵɵproperty("innerHTML", ctx_r1.getItemLabel(processedItem_r3), i0.ɵɵsanitizeHtml);
69
- i0.ɵɵattribute("data-pc-section", "label");
70
- } }
71
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_p_badge_5_Template(rf, ctx) { if (rf & 1) {
72
- i0.ɵɵelement(0, "p-badge", 25);
73
- } if (rf & 2) {
74
- const processedItem_r3 = i0.ɵɵnextContext(4).$implicit;
75
- const ctx_r1 = i0.ɵɵnextContext(2);
76
- i0.ɵɵproperty("styleClass", ctx_r1.getItemProp(processedItem_r3, "badgeStyleClass"))("value", ctx_r1.getItemProp(processedItem_r3, "badge"));
77
- } }
78
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_ng_container_6_ng_container_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
79
- i0.ɵɵelement(0, "AngleDownIcon", 27);
80
- } if (rf & 2) {
81
- i0.ɵɵproperty("ngClass", "p-megamenu-submenu-icon");
82
- i0.ɵɵattribute("data-pc-section", "submenuicon")("aria-hidden", true);
83
- } }
84
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_ng_container_6_ng_container_1_Conditional_2_AngleRightIcon_0_Template(rf, ctx) { if (rf & 1) {
85
- i0.ɵɵelement(0, "AngleRightIcon", 27);
86
- } if (rf & 2) {
87
- i0.ɵɵproperty("ngClass", "p-megamenu-submenu-icon");
88
- i0.ɵɵattribute("data-pc-section", "submenuicon")("aria-hidden", true);
89
- } }
90
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_ng_container_6_ng_container_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
91
- i0.ɵɵtemplate(0, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_ng_container_6_ng_container_1_Conditional_2_AngleRightIcon_0_Template, 1, 3, "AngleRightIcon", 28);
92
- } if (rf & 2) {
93
- const ctx_r1 = i0.ɵɵnextContext(8);
94
- i0.ɵɵproperty("ngIf", ctx_r1.orientation === "vertical");
95
- } }
96
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_ng_container_6_ng_container_1_Template(rf, ctx) { if (rf & 1) {
97
- i0.ɵɵelementContainerStart(0);
98
- i0.ɵɵtemplate(1, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_ng_container_6_ng_container_1_Conditional_1_Template, 1, 3, "AngleDownIcon", 27)(2, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_ng_container_6_ng_container_1_Conditional_2_Template, 1, 1, "AngleRightIcon", 27);
99
- i0.ɵɵelementContainerEnd();
100
- } if (rf & 2) {
101
- const ctx_r1 = i0.ɵɵnextContext(7);
102
- i0.ɵɵadvance();
103
- i0.ɵɵconditional(ctx_r1.orientation === "horizontal" || ctx_r1.mobileActive ? 1 : 2);
104
- } }
105
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_ng_container_6_2_ng_template_0_Template(rf, ctx) { }
106
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_ng_container_6_2_Template(rf, ctx) { if (rf & 1) {
107
- i0.ɵɵtemplate(0, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_ng_container_6_2_ng_template_0_Template, 0, 0, "ng-template", 29);
108
- } if (rf & 2) {
109
- i0.ɵɵproperty("data-pc-section", "submenuicon")("aria-hidden", true);
110
- } }
111
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_ng_container_6_Template(rf, ctx) { if (rf & 1) {
112
- i0.ɵɵelementContainerStart(0);
113
- i0.ɵɵtemplate(1, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_ng_container_6_ng_container_1_Template, 3, 1, "ng-container", 14)(2, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_ng_container_6_2_Template, 1, 2, null, 26);
114
- i0.ɵɵelementContainerEnd();
115
- } if (rf & 2) {
116
- const ctx_r1 = i0.ɵɵnextContext(6);
117
- i0.ɵɵadvance();
118
- i0.ɵɵproperty("ngIf", !ctx_r1.megaMenu.submenuIconTemplate && !ctx_r1.megaMenu._submenuIconTemplate);
119
- i0.ɵɵadvance();
120
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.megaMenu.submenuIconTemplate || ctx_r1.megaMenu._submenuIconTemplate);
121
- } }
122
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_Template(rf, ctx) { if (rf & 1) {
123
- i0.ɵɵelementStart(0, "a", 18);
124
- i0.ɵɵtemplate(1, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_span_1_Template, 1, 4, "span", 19)(2, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_span_2_Template, 2, 2, "span", 20)(3, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_ng_template_3_Template, 1, 2, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor)(5, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_p_badge_5_Template, 1, 2, "p-badge", 21)(6, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_ng_container_6_Template, 3, 2, "ng-container", 14);
125
- i0.ɵɵelementEnd();
126
- } if (rf & 2) {
127
- const htmlLabel_r5 = i0.ɵɵreference(4);
128
- const processedItem_r3 = i0.ɵɵnextContext(3).$implicit;
129
- const ctx_r1 = i0.ɵɵnextContext(2);
130
- i0.ɵɵproperty("target", ctx_r1.getItemProp(processedItem_r3, "target"))("ngClass", i0.ɵɵpureFunction1(11, _c3, ctx_r1.getItemProp(processedItem_r3, "disabled")));
131
- i0.ɵɵattribute("href", ctx_r1.getItemProp(processedItem_r3, "url"), i0.ɵɵsanitizeUrl)("data-automationid", ctx_r1.getItemProp(processedItem_r3, "automationId"))("data-pc-section", "action")("tabindex", -1);
132
- i0.ɵɵadvance();
133
- i0.ɵɵproperty("ngIf", ctx_r1.getItemProp(processedItem_r3, "icon"));
134
- i0.ɵɵadvance();
135
- i0.ɵɵproperty("ngIf", ctx_r1.getItemProp(processedItem_r3, "escape"))("ngIfElse", htmlLabel_r5);
136
- i0.ɵɵadvance(3);
137
- i0.ɵɵproperty("ngIf", ctx_r1.getItemProp(processedItem_r3, "badge"));
138
- i0.ɵɵadvance();
139
- i0.ɵɵproperty("ngIf", ctx_r1.isItemGroup(processedItem_r3));
140
- } }
141
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_span_1_Template(rf, ctx) { if (rf & 1) {
142
- i0.ɵɵelement(0, "span", 22);
143
- } if (rf & 2) {
144
- const processedItem_r3 = i0.ɵɵnextContext(4).$implicit;
145
- const ctx_r1 = i0.ɵɵnextContext(2);
146
- i0.ɵɵproperty("ngClass", ctx_r1.getItemProp(processedItem_r3, "icon"))("ngStyle", ctx_r1.getItemProp(processedItem_r3, "iconStyle"));
147
- i0.ɵɵattribute("data-pc-section", "icon")("aria-hidden", true)("tabindex", -1);
148
- } }
149
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_span_2_Template(rf, ctx) { if (rf & 1) {
150
- i0.ɵɵelementStart(0, "span", 23);
151
- i0.ɵɵtext(1);
152
- i0.ɵɵelementEnd();
153
- } if (rf & 2) {
154
- const processedItem_r3 = i0.ɵɵnextContext(4).$implicit;
155
- const ctx_r1 = i0.ɵɵnextContext(2);
156
- i0.ɵɵadvance();
157
- i0.ɵɵtextInterpolate(ctx_r1.getItemLabel(processedItem_r3));
158
- } }
159
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_ng_template_3_Template(rf, ctx) { if (rf & 1) {
160
- i0.ɵɵelement(0, "span", 24);
161
- } if (rf & 2) {
162
- const processedItem_r3 = i0.ɵɵnextContext(4).$implicit;
163
- const ctx_r1 = i0.ɵɵnextContext(2);
164
- i0.ɵɵproperty("innerHTML", ctx_r1.getItemLabel(processedItem_r3), i0.ɵɵsanitizeHtml);
165
- i0.ɵɵattribute("data-pc-section", "label");
166
- } }
167
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_p_badge_5_Template(rf, ctx) { if (rf & 1) {
168
- i0.ɵɵelement(0, "p-badge", 25);
169
- } if (rf & 2) {
170
- const processedItem_r3 = i0.ɵɵnextContext(4).$implicit;
171
- const ctx_r1 = i0.ɵɵnextContext(2);
172
- i0.ɵɵproperty("styleClass", ctx_r1.getItemProp(processedItem_r3, "badgeStyleClass"))("value", ctx_r1.getItemProp(processedItem_r3, "badge"));
173
- } }
174
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_ng_container_6_ng_container_1_AngleDownIcon_1_Template(rf, ctx) { if (rf & 1) {
175
- i0.ɵɵelement(0, "AngleDownIcon", 32);
176
- } if (rf & 2) {
177
- i0.ɵɵproperty("styleClass", "p-megamenu-submenu-icon");
178
- i0.ɵɵattribute("data-pc-section", "submenuicon")("aria-hidden", true);
179
- } }
180
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_ng_container_6_ng_container_1_AngleRightIcon_2_Template(rf, ctx) { if (rf & 1) {
181
- i0.ɵɵelement(0, "AngleRightIcon", 32);
182
- } if (rf & 2) {
183
- i0.ɵɵproperty("styleClass", "p-megamenu-submenu-icon");
184
- i0.ɵɵattribute("data-pc-section", "submenuicon")("aria-hidden", true);
185
- } }
186
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_ng_container_6_ng_container_1_Template(rf, ctx) { if (rf & 1) {
187
- i0.ɵɵelementContainerStart(0);
188
- i0.ɵɵtemplate(1, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_ng_container_6_ng_container_1_AngleDownIcon_1_Template, 1, 3, "AngleDownIcon", 31)(2, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_ng_container_6_ng_container_1_AngleRightIcon_2_Template, 1, 3, "AngleRightIcon", 31);
189
- i0.ɵɵelementContainerEnd();
190
- } if (rf & 2) {
191
- const ctx_r1 = i0.ɵɵnextContext(7);
192
- i0.ɵɵadvance();
193
- i0.ɵɵproperty("ngIf", ctx_r1.orientation === "horizontal");
194
- i0.ɵɵadvance();
195
- i0.ɵɵproperty("ngIf", ctx_r1.orientation === "vertical");
196
- } }
197
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_ng_container_6_2_ng_template_0_Template(rf, ctx) { }
198
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_ng_container_6_2_Template(rf, ctx) { if (rf & 1) {
199
- i0.ɵɵtemplate(0, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_ng_container_6_2_ng_template_0_Template, 0, 0, "ng-template", 29);
200
- } if (rf & 2) {
201
- i0.ɵɵproperty("data-pc-section", "submenuicon")("aria-hidden", true);
202
- } }
203
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_ng_container_6_Template(rf, ctx) { if (rf & 1) {
204
- i0.ɵɵelementContainerStart(0);
205
- i0.ɵɵtemplate(1, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_ng_container_6_ng_container_1_Template, 3, 2, "ng-container", 14)(2, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_ng_container_6_2_Template, 1, 2, null, 26);
206
- i0.ɵɵelementContainerEnd();
207
- } if (rf & 2) {
208
- const ctx_r1 = i0.ɵɵnextContext(6);
209
- i0.ɵɵadvance();
210
- i0.ɵɵproperty("ngIf", !ctx_r1.megaMenu.submenuIconTemplate && !ctx_r1.megaMenu._submenuIconTemplate);
211
- i0.ɵɵadvance();
212
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.megaMenu.submenuIconTemplate || ctx_r1.megaMenu._submenuIconTemplate);
213
- } }
214
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_Template(rf, ctx) { if (rf & 1) {
215
- i0.ɵɵelementStart(0, "a", 30);
216
- i0.ɵɵtemplate(1, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_span_1_Template, 1, 5, "span", 19)(2, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_span_2_Template, 2, 1, "span", 20)(3, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_ng_template_3_Template, 1, 2, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor)(5, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_p_badge_5_Template, 1, 2, "p-badge", 21)(6, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_ng_container_6_Template, 3, 2, "ng-container", 14);
217
- i0.ɵɵelementEnd();
218
- } if (rf & 2) {
219
- const htmlRouteLabel_r6 = i0.ɵɵreference(4);
220
- const processedItem_r3 = i0.ɵɵnextContext(3).$implicit;
221
- const ctx_r1 = i0.ɵɵnextContext(2);
222
- i0.ɵɵproperty("routerLink", ctx_r1.getItemProp(processedItem_r3, "routerLink"))("queryParams", ctx_r1.getItemProp(processedItem_r3, "queryParams"))("routerLinkActive", "p-megamenu-item-link-active")("routerLinkActiveOptions", ctx_r1.getItemProp(processedItem_r3, "routerLinkActiveOptions") || i0.ɵɵpureFunction0(21, _c4))("target", ctx_r1.getItemProp(processedItem_r3, "target"))("ngClass", i0.ɵɵpureFunction1(22, _c3, ctx_r1.getItemProp(processedItem_r3, "disabled")))("fragment", ctx_r1.getItemProp(processedItem_r3, "fragment"))("queryParamsHandling", ctx_r1.getItemProp(processedItem_r3, "queryParamsHandling"))("preserveFragment", ctx_r1.getItemProp(processedItem_r3, "preserveFragment"))("skipLocationChange", ctx_r1.getItemProp(processedItem_r3, "skipLocationChange"))("replaceUrl", ctx_r1.getItemProp(processedItem_r3, "replaceUrl"))("state", ctx_r1.getItemProp(processedItem_r3, "state"));
223
- i0.ɵɵattribute("data-automationid", ctx_r1.getItemProp(processedItem_r3, "automationId"))("tabindex", -1)("aria-hidden", true)("data-pc-section", "action");
224
- i0.ɵɵadvance();
225
- i0.ɵɵproperty("ngIf", ctx_r1.getItemProp(processedItem_r3, "icon"));
226
- i0.ɵɵadvance();
227
- i0.ɵɵproperty("ngIf", ctx_r1.getItemProp(processedItem_r3, "escape"))("ngIfElse", htmlRouteLabel_r6);
228
- i0.ɵɵadvance(3);
229
- i0.ɵɵproperty("ngIf", ctx_r1.getItemProp(processedItem_r3, "badge"));
230
- i0.ɵɵadvance();
231
- i0.ɵɵproperty("ngIf", ctx_r1.isItemGroup(processedItem_r3));
232
- } }
233
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_Template(rf, ctx) { if (rf & 1) {
234
- i0.ɵɵelementContainerStart(0);
235
- i0.ɵɵtemplate(1, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_1_Template, 7, 13, "a", 16)(2, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_a_2_Template, 7, 24, "a", 17);
236
- i0.ɵɵelementContainerEnd();
237
- } if (rf & 2) {
238
- const processedItem_r3 = i0.ɵɵnextContext(2).$implicit;
239
- const ctx_r1 = i0.ɵɵnextContext(2);
240
- i0.ɵɵadvance();
241
- i0.ɵɵproperty("ngIf", !ctx_r1.getItemProp(processedItem_r3, "routerLink"));
242
- i0.ɵɵadvance();
243
- i0.ɵɵproperty("ngIf", ctx_r1.getItemProp(processedItem_r3, "routerLink"));
244
- } }
245
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_4_1_ng_template_0_Template(rf, ctx) { }
246
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_4_1_Template(rf, ctx) { if (rf & 1) {
247
- i0.ɵɵtemplate(0, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_4_1_ng_template_0_Template, 0, 0, "ng-template");
248
- } }
249
- function MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_4_Template(rf, ctx) { if (rf & 1) {
250
- i0.ɵɵelementContainerStart(0);
251
- i0.ɵɵtemplate(1, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_4_1_Template, 1, 0, null, 33);
252
- i0.ɵɵelementContainerEnd();
253
- } if (rf & 2) {
254
- const processedItem_r3 = i0.ɵɵnextContext(2).$implicit;
255
- const ctx_r1 = i0.ɵɵnextContext(2);
256
- i0.ɵɵadvance();
257
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.itemTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c5, processedItem_r3.item));
258
- } }
259
- function MegaMenuSub_ul_0_ng_template_3_li_1_div_5_div_2_p_megamenu_sub_1_Template(rf, ctx) { if (rf & 1) {
260
- const _r7 = i0.ɵɵgetCurrentView();
261
- i0.ɵɵelementStart(0, "p-megamenu-sub", 38);
262
- i0.ɵɵlistener("itemClick", function MegaMenuSub_ul_0_ng_template_3_li_1_div_5_div_2_p_megamenu_sub_1_Template_p_megamenu_sub_itemClick_0_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r1.itemClick.emit($event)); })("itemMouseEnter", function MegaMenuSub_ul_0_ng_template_3_li_1_div_5_div_2_p_megamenu_sub_1_Template_p_megamenu_sub_itemMouseEnter_0_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r1.onItemMouseEnter($event)); });
263
- i0.ɵɵelementEnd();
264
- } if (rf & 2) {
265
- const submenu_r8 = ctx.$implicit;
266
- const ctx_r1 = i0.ɵɵnextContext(6);
267
- i0.ɵɵproperty("id", ctx_r1.getSubListId(submenu_r8))("submenu", submenu_r8)("items", submenu_r8.items)("itemTemplate", ctx_r1.itemTemplate)("mobileActive", ctx_r1.mobileActive)("menuId", ctx_r1.menuId)("focusedItemId", ctx_r1.focusedItemId)("level", ctx_r1.level + 1)("root", false);
268
- } }
269
- function MegaMenuSub_ul_0_ng_template_3_li_1_div_5_div_2_Template(rf, ctx) { if (rf & 1) {
270
- i0.ɵɵelementStart(0, "div", 27);
271
- i0.ɵɵtemplate(1, MegaMenuSub_ul_0_ng_template_3_li_1_div_5_div_2_p_megamenu_sub_1_Template, 1, 9, "p-megamenu-sub", 37);
272
- i0.ɵɵelementEnd();
273
- } if (rf & 2) {
274
- const col_r9 = ctx.$implicit;
275
- const processedItem_r3 = i0.ɵɵnextContext(3).$implicit;
276
- const ctx_r1 = i0.ɵɵnextContext(2);
277
- i0.ɵɵproperty("ngClass", ctx_r1.getColumnClass(processedItem_r3));
278
- i0.ɵɵadvance();
279
- i0.ɵɵproperty("ngForOf", col_r9);
280
- } }
281
- function MegaMenuSub_ul_0_ng_template_3_li_1_div_5_Template(rf, ctx) { if (rf & 1) {
282
- i0.ɵɵelementStart(0, "div", 34)(1, "div", 35);
283
- i0.ɵɵtemplate(2, MegaMenuSub_ul_0_ng_template_3_li_1_div_5_div_2_Template, 2, 2, "div", 36);
284
- i0.ɵɵelementEnd()();
285
- } if (rf & 2) {
286
- const processedItem_r3 = i0.ɵɵnextContext(2).$implicit;
287
- i0.ɵɵattribute("data-pc-section", "panel");
288
- i0.ɵɵadvance();
289
- i0.ɵɵattribute("data-pc-section", "grid");
290
- i0.ɵɵadvance();
291
- i0.ɵɵproperty("ngForOf", processedItem_r3.items);
292
- } }
293
- function MegaMenuSub_ul_0_ng_template_3_li_1_Template(rf, ctx) { if (rf & 1) {
294
- const _r4 = i0.ɵɵgetCurrentView();
295
- i0.ɵɵelementStart(0, "li", 12, 1)(2, "div", 13);
296
- i0.ɵɵlistener("click", function MegaMenuSub_ul_0_ng_template_3_li_1_Template_div_click_2_listener($event) { i0.ɵɵrestoreView(_r4); const processedItem_r3 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onItemClick($event, processedItem_r3)); })("mouseenter", function MegaMenuSub_ul_0_ng_template_3_li_1_Template_div_mouseenter_2_listener($event) { i0.ɵɵrestoreView(_r4); const processedItem_r3 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onItemMouseEnter({ $event: $event, processedItem: processedItem_r3 })); });
297
- i0.ɵɵtemplate(3, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_3_Template, 3, 2, "ng-container", 14)(4, MegaMenuSub_ul_0_ng_template_3_li_1_ng_container_4_Template, 2, 4, "ng-container", 14);
298
- i0.ɵɵelementEnd();
299
- i0.ɵɵtemplate(5, MegaMenuSub_ul_0_ng_template_3_li_1_div_5_Template, 3, 3, "div", 15);
300
- i0.ɵɵelementEnd();
301
- } if (rf & 2) {
302
- const ctx_r9 = i0.ɵɵnextContext();
303
- const processedItem_r3 = ctx_r9.$implicit;
304
- const index_r11 = ctx_r9.index;
305
- const ctx_r1 = i0.ɵɵnextContext(2);
306
- i0.ɵɵclassMap(ctx_r1.getItemProp(processedItem_r3, "styleClass"));
307
- i0.ɵɵproperty("ngStyle", ctx_r1.getItemProp(processedItem_r3, "style"))("ngClass", ctx_r1.getItemClass(processedItem_r3))("tooltipOptions", ctx_r1.getItemProp(processedItem_r3, "tooltipOptions"));
308
- i0.ɵɵattribute("id", ctx_r1.getItemId(processedItem_r3))("data-pc-section", "menuitem")("data-p-highlight", ctx_r1.isItemActive(processedItem_r3))("data-p-focused", ctx_r1.isItemFocused(processedItem_r3))("data-p-disabled", ctx_r1.isItemDisabled(processedItem_r3))("aria-label", ctx_r1.getItemLabel(processedItem_r3))("aria-disabled", ctx_r1.isItemDisabled(processedItem_r3) || undefined)("aria-haspopup", ctx_r1.isItemGroup(processedItem_r3) && !ctx_r1.getItemProp(processedItem_r3, "to") ? "menu" : undefined)("aria-expanded", ctx_r1.isItemGroup(processedItem_r3) ? ctx_r1.isItemActive(processedItem_r3) : undefined)("aria-level", ctx_r1.level + 1)("aria-setsize", ctx_r1.getAriaSetSize())("aria-posinset", ctx_r1.getAriaPosInset(index_r11));
309
- i0.ɵɵadvance(2);
310
- i0.ɵɵattribute("data-pc-section", "content");
311
- i0.ɵɵadvance();
312
- i0.ɵɵproperty("ngIf", !ctx_r1.itemTemplate);
313
- i0.ɵɵadvance();
314
- i0.ɵɵproperty("ngIf", ctx_r1.itemTemplate);
315
- i0.ɵɵadvance();
316
- i0.ɵɵproperty("ngIf", ctx_r1.isItemVisible(processedItem_r3) && ctx_r1.isItemGroup(processedItem_r3));
317
- } }
318
- function MegaMenuSub_ul_0_ng_template_3_Template(rf, ctx) { if (rf & 1) {
319
- i0.ɵɵtemplate(0, MegaMenuSub_ul_0_ng_template_3_li_0_Template, 1, 5, "li", 9)(1, MegaMenuSub_ul_0_ng_template_3_li_1_Template, 6, 21, "li", 10);
320
- } if (rf & 2) {
321
- const processedItem_r3 = ctx.$implicit;
322
- const ctx_r1 = i0.ɵɵnextContext(2);
323
- i0.ɵɵproperty("ngIf", ctx_r1.isItemVisible(processedItem_r3) && ctx_r1.getItemProp(processedItem_r3, "separator"));
324
- i0.ɵɵadvance();
325
- i0.ɵɵproperty("ngIf", ctx_r1.isItemVisible(processedItem_r3) && !ctx_r1.getItemProp(processedItem_r3, "separator"));
326
- } }
327
- function MegaMenuSub_ul_0_Template(rf, ctx) { if (rf & 1) {
328
- const _r1 = i0.ɵɵgetCurrentView();
329
- i0.ɵɵelementStart(0, "ul", 5, 0);
330
- i0.ɵɵlistener("keydown", function MegaMenuSub_ul_0_Template_ul_keydown_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.menuKeydown.emit($event)); })("focus", function MegaMenuSub_ul_0_Template_ul_focus_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.menuFocus.emit($event)); })("blur", function MegaMenuSub_ul_0_Template_ul_blur_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.menuBlur.emit($event)); });
331
- i0.ɵɵtemplate(2, MegaMenuSub_ul_0_li_2_Template, 2, 4, "li", 6)(3, MegaMenuSub_ul_0_ng_template_3_Template, 2, 2, "ng-template", 7);
332
- i0.ɵɵelementEnd();
333
- } if (rf & 2) {
334
- const ctx_r1 = i0.ɵɵnextContext();
335
- i0.ɵɵstyleMap(i0.ɵɵpureFunction1(11, _c1, ctx_r1.scrollHeight));
336
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(13, _c2, ctx_r1.root, !ctx_r1.root))("tabindex", ctx_r1.tabindex);
337
- i0.ɵɵattribute("role", ctx_r1.root ? "menubar" : "menu")("id", ctx_r1.id)("aria-orientation", ctx_r1.orientation)("aria-activedescendant", ctx_r1.focusedItemId)("data-pc-section", ctx_r1.root ? "root" : "submenu");
338
- i0.ɵɵadvance(2);
339
- i0.ɵɵproperty("ngIf", ctx_r1.submenu);
340
- i0.ɵɵadvance();
341
- i0.ɵɵproperty("ngForOf", ctx_r1.items);
342
- } }
343
- const _c6 = ["start"];
344
- const _c7 = ["end"];
345
- const _c8 = ["menuicon"];
346
- const _c9 = ["submenuicon"];
347
- const _c10 = ["item"];
348
- const _c11 = ["button"];
349
- const _c12 = ["buttonicon"];
350
- const _c13 = ["menubutton"];
351
- const _c14 = ["rootmenu"];
352
- const _c15 = ["container"];
353
- const _c16 = a0 => ({ flexDirection: a0 });
354
- const _c17 = (a0, a1, a2, a3) => ({ "p-megamenu p-component": true, "p-megamenu-mobile": a0, "p-megamenu-mobile-active": a1, "p-megamenu-horizontal": a2, "p-megamenu-vertical": a3 });
355
- function MegaMenu_div_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
356
- i0.ɵɵelementContainer(0);
357
- } }
358
- function MegaMenu_div_2_Template(rf, ctx) { if (rf & 1) {
359
- i0.ɵɵelementStart(0, "div", 9);
360
- i0.ɵɵtemplate(1, MegaMenu_div_2_ng_container_1_Template, 1, 0, "ng-container", 6);
361
- i0.ɵɵelementEnd();
362
- } if (rf & 2) {
363
- const ctx_r1 = i0.ɵɵnextContext();
364
- i0.ɵɵadvance();
365
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.startTemplate || ctx_r1._startTemplate);
366
- } }
367
- function MegaMenu_ng_container_3_a_1_BarsIcon_2_Template(rf, ctx) { if (rf & 1) {
368
- i0.ɵɵelement(0, "BarsIcon");
369
- } }
370
- function MegaMenu_ng_container_3_a_1_3_ng_template_0_Template(rf, ctx) { }
371
- function MegaMenu_ng_container_3_a_1_3_Template(rf, ctx) { if (rf & 1) {
372
- i0.ɵɵtemplate(0, MegaMenu_ng_container_3_a_1_3_ng_template_0_Template, 0, 0, "ng-template");
373
- } }
374
- function MegaMenu_ng_container_3_a_1_Template(rf, ctx) { if (rf & 1) {
375
- const _r3 = i0.ɵɵgetCurrentView();
376
- i0.ɵɵelementStart(0, "a", 11, 2);
377
- i0.ɵɵlistener("click", function MegaMenu_ng_container_3_a_1_Template_a_click_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.menuButtonClick($event)); })("keydown", function MegaMenu_ng_container_3_a_1_Template_a_keydown_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.menuButtonKeydown($event)); });
378
- i0.ɵɵtemplate(2, MegaMenu_ng_container_3_a_1_BarsIcon_2_Template, 1, 0, "BarsIcon", 5)(3, MegaMenu_ng_container_3_a_1_3_Template, 1, 0, null, 6);
379
- i0.ɵɵelementEnd();
380
- } if (rf & 2) {
381
- const ctx_r1 = i0.ɵɵnextContext(2);
382
- i0.ɵɵattribute("aria-haspopup", ctx_r1.model.length && ctx_r1.model.length > 0 ? true : false)("aria-expanded", ctx_r1.mobileActive)("aria-controls", ctx_r1.id)("aria-label", ctx_r1.config.translation.aria.navigation);
383
- i0.ɵɵadvance(2);
384
- i0.ɵɵproperty("ngIf", !ctx_r1.buttonIconTemplate && !ctx_r1._buttonIconTemplate);
385
- i0.ɵɵadvance();
386
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.buttonIconTemplate || ctx_r1._buttonIconTemplate);
387
- } }
388
- function MegaMenu_ng_container_3_Template(rf, ctx) { if (rf & 1) {
389
- i0.ɵɵelementContainerStart(0);
390
- i0.ɵɵtemplate(1, MegaMenu_ng_container_3_a_1_Template, 4, 6, "a", 10);
391
- i0.ɵɵelementContainerEnd();
392
- } if (rf & 2) {
393
- const ctx_r1 = i0.ɵɵnextContext();
394
- i0.ɵɵadvance();
395
- i0.ɵɵproperty("ngIf", ctx_r1.model && ctx_r1.model.length > 0);
396
- } }
397
- function MegaMenu_ng_container_4_Template(rf, ctx) { if (rf & 1) {
398
- i0.ɵɵelementContainer(0);
399
- } }
400
- function MegaMenu_div_7_ng_container_1_Template(rf, ctx) { if (rf & 1) {
401
- i0.ɵɵelementContainer(0);
402
- } }
403
- function MegaMenu_div_7_Template(rf, ctx) { if (rf & 1) {
404
- i0.ɵɵelementStart(0, "div", 12);
405
- i0.ɵɵtemplate(1, MegaMenu_div_7_ng_container_1_Template, 1, 0, "ng-container", 6);
406
- i0.ɵɵelementEnd();
407
- } if (rf & 2) {
408
- const ctx_r1 = i0.ɵɵnextContext();
409
- i0.ɵɵadvance();
410
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.endTemplate || ctx_r1._endTemplate);
411
- } }
412
- export class MegaMenuSub extends BaseComponent {
413
- id;
414
- items;
415
- itemTemplate;
416
- menuId;
417
- ariaLabel;
418
- ariaLabelledBy;
419
- level = 0;
420
- focusedItemId;
421
- disabled = false;
422
- orientation;
423
- activeItem;
424
- submenu;
425
- queryMatches = false;
426
- mobileActive = false;
427
- scrollHeight;
428
- tabindex = 0;
429
- root = false;
430
- itemClick = new EventEmitter();
431
- itemMouseEnter = new EventEmitter();
432
- menuFocus = new EventEmitter();
433
- menuBlur = new EventEmitter();
434
- menuKeydown = new EventEmitter();
435
- menubarViewChild;
436
- megaMenu = inject(forwardRef(() => MegaMenu));
437
- onItemClick(event, processedItem) {
438
- this.getItemProp(processedItem, 'command', { originalEvent: event, item: processedItem.item });
439
- this.itemClick.emit({ originalEvent: event, processedItem, isFocus: true });
440
- }
441
- getItemProp(processedItem, name, params = null) {
442
- return processedItem && processedItem.item ? resolve(processedItem.item[name], params) : undefined;
443
- }
444
- getItemId(processedItem) {
445
- return processedItem.item && processedItem.item?.id ? processedItem.item.id : `${this.menuId}_${processedItem.key}`;
446
- }
447
- getSubListId(processedItem) {
448
- return `${this.getItemId(processedItem)}_list`;
449
- }
450
- getItemClass(processedItem) {
451
- return {
452
- ...this.getItemProp(processedItem, 'class'),
453
- 'p-megamenu-item': true,
454
- 'p-megamenu-item-active': this.isItemActive(processedItem),
455
- 'p-focus': this.isItemFocused(processedItem),
456
- 'p-disabled': this.isItemDisabled(processedItem)
457
- };
458
- }
459
- getItemLabel(processedItem) {
460
- return this.getItemProp(processedItem, 'label');
461
- }
462
- getSeparatorItemClass(processedItem) {
463
- return {
464
- ...this.getItemProp(processedItem, 'class'),
465
- 'p-megamenu-separator': true
466
- };
467
- }
468
- getColumnClass(processedItem) {
469
- let length = this.isItemGroup(processedItem) ? processedItem.items.length : 0;
470
- let columnClass;
471
- if (this.queryMatches)
472
- columnClass = 'p-megamenu-col-12';
473
- else {
474
- switch (length) {
475
- case 2:
476
- columnClass = 'p-megamenu-col-6';
477
- break;
478
- case 3:
479
- columnClass = 'p-megamenu-col-4';
480
- break;
481
- case 4:
482
- columnClass = 'p-megamenu-col-3';
483
- break;
484
- case 6:
485
- columnClass = 'p-megamenu-col-2';
486
- break;
487
- default:
488
- columnClass = 'p-megamenu-col-12';
489
- break;
490
- }
491
- }
492
- return columnClass;
493
- }
494
- getSubmenuHeaderClass(processedItem) {
495
- return {
496
- 'p-megamenu-submenu-label': true,
497
- 'p-disabled': this.isItemDisabled(processedItem),
498
- ...this.getItemProp(processedItem, 'class')
499
- };
500
- }
501
- isSubmenuVisible(submenu) {
502
- if (this.submenu && !this.root) {
503
- return this.isItemVisible(submenu);
504
- }
505
- else {
506
- return true;
507
- }
508
- }
509
- isItemVisible(processedItem) {
510
- return this.getItemProp(processedItem, 'visible') !== false;
511
- }
512
- isItemActive(processedItem) {
513
- return isNotEmpty(this.activeItem) ? this.activeItem.key === processedItem.key : false;
514
- }
515
- isItemDisabled(processedItem) {
516
- return this.getItemProp(processedItem, 'disabled');
517
- }
518
- isItemFocused(processedItem) {
519
- return this.focusedItemId === this.getItemId(processedItem);
520
- }
521
- isItemGroup(processedItem) {
522
- return isNotEmpty(processedItem.items);
523
- }
524
- getAriaSetSize() {
525
- return this.items.filter((processedItem) => this.isItemVisible(processedItem) && !this.getItemProp(processedItem, 'separator')).length;
526
- }
527
- getAriaPosInset(index) {
528
- return index - this.items.slice(0, index).filter((processedItem) => this.isItemVisible(processedItem) && this.getItemProp(processedItem, 'separator')).length + 1;
529
- }
530
- onItemMouseEnter(param) {
531
- const { event, processedItem } = param;
532
- this.itemMouseEnter.emit({ originalEvent: event, processedItem });
533
- }
534
- static ɵfac = /*@__PURE__*/ (() => { let ɵMegaMenuSub_BaseFactory; return function MegaMenuSub_Factory(__ngFactoryType__) { return (ɵMegaMenuSub_BaseFactory || (ɵMegaMenuSub_BaseFactory = i0.ɵɵgetInheritedFactory(MegaMenuSub)))(__ngFactoryType__ || MegaMenuSub); }; })();
535
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MegaMenuSub, selectors: [["p-megaMenuSub"], ["p-megamenu-sub"]], viewQuery: function MegaMenuSub_Query(rf, ctx) { if (rf & 1) {
536
- i0.ɵɵviewQuery(_c0, 7);
537
- } if (rf & 2) {
538
- let _t;
539
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.menubarViewChild = _t.first);
540
- } }, inputs: { id: "id", items: "items", itemTemplate: "itemTemplate", menuId: "menuId", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", level: [2, "level", "level", numberAttribute], focusedItemId: "focusedItemId", disabled: [2, "disabled", "disabled", booleanAttribute], orientation: "orientation", activeItem: "activeItem", submenu: "submenu", queryMatches: [2, "queryMatches", "queryMatches", booleanAttribute], mobileActive: [2, "mobileActive", "mobileActive", booleanAttribute], scrollHeight: "scrollHeight", tabindex: [2, "tabindex", "tabindex", numberAttribute], root: [2, "root", "root", booleanAttribute] }, outputs: { itemClick: "itemClick", itemMouseEnter: "itemMouseEnter", menuFocus: "menuFocus", menuBlur: "menuBlur", menuKeydown: "menuKeydown" }, standalone: true, features: [i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], decls: 1, vars: 1, consts: [["menubar", ""], ["listItem", ""], ["htmlLabel", ""], ["htmlRouteLabel", ""], [3, "ngClass", "style", "tabindex", "keydown", "focus", "blur", 4, "ngIf"], [3, "keydown", "focus", "blur", "ngClass", "tabindex"], ["role", "presentation", 3, "ngClass", "style", 4, "ngIf"], ["ngFor", "", 3, "ngForOf"], ["role", "presentation", 3, "ngClass"], ["role", "separator", 3, "style", "ngClass", 4, "ngIf"], ["role", "menuitem", "pTooltip", "", 3, "ngStyle", "ngClass", "class", "tooltipOptions", 4, "ngIf"], ["role", "separator", 3, "ngClass"], ["role", "menuitem", "pTooltip", "", 3, "ngStyle", "ngClass", "tooltipOptions"], [1, "p-megamenu-item-content", 3, "click", "mouseenter"], [4, "ngIf"], ["class", "p-megamenu-overlay", 4, "ngIf"], ["pRipple", "", 3, "target", "ngClass", 4, "ngIf"], ["pRipple", "", 3, "routerLink", "queryParams", "routerLinkActive", "routerLinkActiveOptions", "target", "ngClass", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", 4, "ngIf"], ["pRipple", "", 3, "target", "ngClass"], ["class", "p-megamenu-item-icon", 3, "ngClass", "ngStyle", 4, "ngIf"], ["class", "p-megamenu-item-label", 4, "ngIf", "ngIfElse"], [3, "styleClass", "value", 4, "ngIf"], [1, "p-megamenu-item-icon", 3, "ngClass", "ngStyle"], [1, "p-megamenu-item-label"], [1, "p-megamenu-item-label", 3, "innerHTML"], [3, "styleClass", "value"], [4, "ngTemplateOutlet"], [3, "ngClass"], [3, "ngClass", 4, "ngIf"], [3, "data-pc-section", "aria-hidden"], ["pRipple", "", 3, "routerLink", "queryParams", "routerLinkActive", "routerLinkActiveOptions", "target", "ngClass", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state"], [3, "styleClass", 4, "ngIf"], [3, "styleClass"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "p-megamenu-overlay"], [1, "p-megamenu-grid"], [3, "ngClass", 4, "ngFor", "ngForOf"], [3, "id", "submenu", "items", "itemTemplate", "mobileActive", "menuId", "focusedItemId", "level", "root", "itemClick", "itemMouseEnter", 4, "ngFor", "ngForOf"], [3, "itemClick", "itemMouseEnter", "id", "submenu", "items", "itemTemplate", "mobileActive", "menuId", "focusedItemId", "level", "root"]], template: function MegaMenuSub_Template(rf, ctx) { if (rf & 1) {
541
- i0.ɵɵtemplate(0, MegaMenuSub_ul_0_Template, 4, 16, "ul", 4);
542
- } if (rf & 2) {
543
- i0.ɵɵproperty("ngIf", ctx.isSubmenuVisible(ctx.submenu));
544
- } }, dependencies: [MegaMenuSub, CommonModule, i1.NgClass, i1.NgForOf, i1.NgIf, i1.NgTemplateOutlet, i1.NgStyle, RouterModule, i2.RouterLink, i2.RouterLinkActive, Ripple, TooltipModule, i3.Tooltip, AngleDownIcon, AngleRightIcon, BadgeModule, i4.Badge, SharedModule], encapsulation: 2 });
545
- }
546
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MegaMenuSub, [{
547
- type: Component,
548
- args: [{
549
- selector: 'p-megaMenuSub, p-megamenu-sub',
550
- standalone: true,
551
- imports: [CommonModule, RouterModule, Ripple, TooltipModule, AngleDownIcon, AngleRightIcon, BadgeModule, SharedModule],
552
- template: `
553
- <ul
554
- *ngIf="isSubmenuVisible(submenu)"
555
- #menubar
556
- [ngClass]="{ 'p-megamenu-root-list': root, 'p-megamenu-submenu': !root }"
557
- [style]="{ 'max-height': scrollHeight, overflow: 'auto' }"
558
- [attr.role]="root ? 'menubar' : 'menu'"
559
- [attr.id]="id"
560
- [attr.aria-orientation]="orientation"
561
- [tabindex]="tabindex"
562
- [attr.aria-activedescendant]="focusedItemId"
563
- [attr.data-pc-section]="root ? 'root' : 'submenu'"
564
- (keydown)="menuKeydown.emit($event)"
565
- (focus)="menuFocus.emit($event)"
566
- (blur)="menuBlur.emit($event)"
567
- >
568
- <li *ngIf="submenu" [ngClass]="getSubmenuHeaderClass(submenu)" [style]="getItemProp(submenu, 'style')" role="presentation">
569
- {{ getItemLabel(submenu) }}
570
- </li>
571
- <ng-template ngFor let-processedItem [ngForOf]="items" let-index="index">
572
- <li
573
- *ngIf="isItemVisible(processedItem) && getItemProp(processedItem, 'separator')"
574
- [attr.id]="getItemId(processedItem)"
575
- [style]="getItemProp(processedItem, 'style')"
576
- [ngClass]="getSeparatorItemClass(processedItem)"
577
- role="separator"
578
- [attr.data-pc-section]="'separator'"
579
- ></li>
580
- <li
581
- #listItem
582
- *ngIf="isItemVisible(processedItem) && !getItemProp(processedItem, 'separator')"
583
- role="menuitem"
584
- [attr.id]="getItemId(processedItem)"
585
- [attr.data-pc-section]="'menuitem'"
586
- [attr.data-p-highlight]="isItemActive(processedItem)"
587
- [attr.data-p-focused]="isItemFocused(processedItem)"
588
- [attr.data-p-disabled]="isItemDisabled(processedItem)"
589
- [attr.aria-label]="getItemLabel(processedItem)"
590
- [attr.aria-disabled]="isItemDisabled(processedItem) || undefined"
591
- [attr.aria-haspopup]="isItemGroup(processedItem) && !getItemProp(processedItem, 'to') ? 'menu' : undefined"
592
- [attr.aria-expanded]="isItemGroup(processedItem) ? isItemActive(processedItem) : undefined"
593
- [attr.aria-level]="level + 1"
594
- [attr.aria-setsize]="getAriaSetSize()"
595
- [attr.aria-posinset]="getAriaPosInset(index)"
596
- [ngStyle]="getItemProp(processedItem, 'style')"
597
- [ngClass]="getItemClass(processedItem)"
598
- [class]="getItemProp(processedItem, 'styleClass')"
599
- pTooltip
600
- [tooltipOptions]="getItemProp(processedItem, 'tooltipOptions')"
601
- >
602
- <div class="p-megamenu-item-content" [attr.data-pc-section]="'content'" (click)="onItemClick($event, processedItem)" (mouseenter)="onItemMouseEnter({ $event, processedItem })">
603
- <ng-container *ngIf="!itemTemplate">
604
- <a
605
- *ngIf="!getItemProp(processedItem, 'routerLink')"
606
- [attr.href]="getItemProp(processedItem, 'url')"
607
- [attr.data-automationid]="getItemProp(processedItem, 'automationId')"
608
- [attr.data-pc-section]="'action'"
609
- [target]="getItemProp(processedItem, 'target')"
610
- [ngClass]="{ 'p-megamenu-item-link': true, 'p-disabled': getItemProp(processedItem, 'disabled') }"
611
- [attr.tabindex]="-1"
612
- pRipple
613
- >
614
- <span
615
- *ngIf="getItemProp(processedItem, 'icon')"
616
- class="p-megamenu-item-icon"
617
- [ngClass]="getItemProp(processedItem, 'icon')"
618
- [ngStyle]="getItemProp(processedItem, 'iconStyle')"
619
- [attr.data-pc-section]="'icon'"
620
- [attr.tabindex]="-1"
621
- >
622
- </span>
623
- <span *ngIf="getItemProp(processedItem, 'escape'); else htmlLabel" class="p-megamenu-item-label" [attr.data-pc-section]="'label'">
624
- {{ getItemLabel(processedItem) }}
625
- </span>
626
- <ng-template #htmlLabel>
627
- <span class="p-megamenu-item-label" [innerHTML]="getItemLabel(processedItem)" [attr.data-pc-section]="'label'"></span>
628
- </ng-template>
629
- <p-badge *ngIf="getItemProp(processedItem, 'badge')" [styleClass]="getItemProp(processedItem, 'badgeStyleClass')" [value]="getItemProp(processedItem, 'badge')" />
630
- <ng-container *ngIf="isItemGroup(processedItem)">
631
- <ng-container *ngIf="!megaMenu.submenuIconTemplate && !megaMenu._submenuIconTemplate">
632
- @if (orientation === 'horizontal' || mobileActive) {
633
- <AngleDownIcon [ngClass]="'p-megamenu-submenu-icon'" [attr.data-pc-section]="'submenuicon'" [attr.aria-hidden]="true" />
634
- } @else {
635
- <AngleRightIcon [ngClass]="'p-megamenu-submenu-icon'" [attr.data-pc-section]="'submenuicon'" *ngIf="orientation === 'vertical'" [attr.aria-hidden]="true" />
636
- }
637
- </ng-container>
638
- <ng-template *ngTemplateOutlet="megaMenu.submenuIconTemplate || megaMenu._submenuIconTemplate" [attr.data-pc-section]="'submenuicon'" [attr.aria-hidden]="true"></ng-template>
639
- </ng-container>
640
- </a>
641
- <a
642
- *ngIf="getItemProp(processedItem, 'routerLink')"
643
- [routerLink]="getItemProp(processedItem, 'routerLink')"
644
- [attr.data-automationid]="getItemProp(processedItem, 'automationId')"
645
- [attr.tabindex]="-1"
646
- [attr.aria-hidden]="true"
647
- [attr.data-pc-section]="'action'"
648
- [queryParams]="getItemProp(processedItem, 'queryParams')"
649
- [routerLinkActive]="'p-megamenu-item-link-active'"
650
- [routerLinkActiveOptions]="getItemProp(processedItem, 'routerLinkActiveOptions') || { exact: false }"
651
- [target]="getItemProp(processedItem, 'target')"
652
- [ngClass]="{ 'p-megamenu-item-link': true, 'p-disabled': getItemProp(processedItem, 'disabled') }"
653
- [fragment]="getItemProp(processedItem, 'fragment')"
654
- [queryParamsHandling]="getItemProp(processedItem, 'queryParamsHandling')"
655
- [preserveFragment]="getItemProp(processedItem, 'preserveFragment')"
656
- [skipLocationChange]="getItemProp(processedItem, 'skipLocationChange')"
657
- [replaceUrl]="getItemProp(processedItem, 'replaceUrl')"
658
- [state]="getItemProp(processedItem, 'state')"
659
- pRipple
660
- >
661
- <span
662
- class="p-megamenu-item-icon"
663
- *ngIf="getItemProp(processedItem, 'icon')"
664
- [ngClass]="getItemProp(processedItem, 'icon')"
665
- [ngStyle]="getItemProp(processedItem, 'iconStyle')"
666
- [attr.data-pc-section]="'icon'"
667
- [attr.aria-hidden]="true"
668
- [attr.tabindex]="-1"
669
- ></span>
670
- <span class="p-megamenu-item-label" *ngIf="getItemProp(processedItem, 'escape'); else htmlRouteLabel">{{ getItemLabel(processedItem) }}</span>
671
- <ng-template #htmlRouteLabel><span class="p-megamenu-item-label" [innerHTML]="getItemLabel(processedItem)" [attr.data-pc-section]="'label'"></span></ng-template>
672
- <p-badge *ngIf="getItemProp(processedItem, 'badge')" [styleClass]="getItemProp(processedItem, 'badgeStyleClass')" [value]="getItemProp(processedItem, 'badge')" />
673
- <ng-container *ngIf="isItemGroup(processedItem)">
674
- <ng-container *ngIf="!megaMenu.submenuIconTemplate && !megaMenu._submenuIconTemplate">
675
- <AngleDownIcon [styleClass]="'p-megamenu-submenu-icon'" [attr.data-pc-section]="'submenuicon'" *ngIf="orientation === 'horizontal'" [attr.aria-hidden]="true" />
676
- <AngleRightIcon [styleClass]="'p-megamenu-submenu-icon'" [attr.data-pc-section]="'submenuicon'" *ngIf="orientation === 'vertical'" [attr.aria-hidden]="true" />
677
- </ng-container>
678
- <ng-template *ngTemplateOutlet="megaMenu.submenuIconTemplate || megaMenu._submenuIconTemplate" [attr.data-pc-section]="'submenuicon'" [attr.aria-hidden]="true"></ng-template>
679
- </ng-container>
680
- </a>
681
- </ng-container>
682
- <ng-container *ngIf="itemTemplate">
683
- <ng-template *ngTemplateOutlet="itemTemplate; context: { $implicit: processedItem.item }"></ng-template>
684
- </ng-container>
685
- </div>
686
- <div *ngIf="isItemVisible(processedItem) && isItemGroup(processedItem)" class="p-megamenu-overlay" [attr.data-pc-section]="'panel'">
687
- <div class="p-megamenu-grid" [attr.data-pc-section]="'grid'">
688
- <div *ngFor="let col of processedItem.items" [ngClass]="getColumnClass(processedItem)">
689
- <p-megamenu-sub
690
- *ngFor="let submenu of col"
691
- [id]="getSubListId(submenu)"
692
- [submenu]="submenu"
693
- [items]="submenu.items"
694
- [itemTemplate]="itemTemplate"
695
- [mobileActive]="mobileActive"
696
- [menuId]="menuId"
697
- [focusedItemId]="focusedItemId"
698
- [level]="level + 1"
699
- [root]="false"
700
- (itemClick)="itemClick.emit($event)"
701
- (itemMouseEnter)="onItemMouseEnter($event)"
702
- >
703
- </p-megamenu-sub>
704
- </div>
705
- </div>
706
- </div>
707
- </li>
708
- </ng-template>
709
- </ul>
710
- `,
711
- encapsulation: ViewEncapsulation.None
712
- }]
713
- }], null, { id: [{
714
- type: Input
715
- }], items: [{
716
- type: Input
717
- }], itemTemplate: [{
718
- type: Input
719
- }], menuId: [{
720
- type: Input
721
- }], ariaLabel: [{
722
- type: Input
723
- }], ariaLabelledBy: [{
724
- type: Input
725
- }], level: [{
726
- type: Input,
727
- args: [{ transform: numberAttribute }]
728
- }], focusedItemId: [{
729
- type: Input
730
- }], disabled: [{
731
- type: Input,
732
- args: [{ transform: booleanAttribute }]
733
- }], orientation: [{
734
- type: Input
735
- }], activeItem: [{
736
- type: Input
737
- }], submenu: [{
738
- type: Input
739
- }], queryMatches: [{
740
- type: Input,
741
- args: [{ transform: booleanAttribute }]
742
- }], mobileActive: [{
743
- type: Input,
744
- args: [{ transform: booleanAttribute }]
745
- }], scrollHeight: [{
746
- type: Input
747
- }], tabindex: [{
748
- type: Input,
749
- args: [{ transform: numberAttribute }]
750
- }], root: [{
751
- type: Input,
752
- args: [{ transform: booleanAttribute }]
753
- }], itemClick: [{
754
- type: Output
755
- }], itemMouseEnter: [{
756
- type: Output
757
- }], menuFocus: [{
758
- type: Output
759
- }], menuBlur: [{
760
- type: Output
761
- }], menuKeydown: [{
762
- type: Output
763
- }], menubarViewChild: [{
764
- type: ViewChild,
765
- args: ['menubar', { static: true }]
766
- }] }); })();
767
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MegaMenuSub, { className: "MegaMenuSub" }); })();
768
- /**
769
- * MegaMenu is navigation component that displays submenus together.
770
- * @group Components
771
- */
772
- export class MegaMenu extends BaseComponent {
773
- /**
774
- * An array of menuitems.
775
- * @group Props
776
- */
777
- set model(value) {
778
- this._model = value;
779
- this._processedItems = this.createProcessedItems(this._model || []);
780
- }
781
- get model() {
782
- return this._model;
783
- }
784
- /**
785
- * Inline style of the element.
786
- * @group Props
787
- */
788
- style;
789
- /**
790
- * Class of the element.
791
- * @group Props
792
- */
793
- styleClass;
794
- /**
795
- * Defines the orientation.
796
- * @group Props
797
- */
798
- orientation = 'horizontal';
799
- /**
800
- * Current id state as a string.
801
- * @group Props
802
- */
803
- id;
804
- /**
805
- * Defines a string value that labels an interactive element.
806
- * @group Props
807
- */
808
- ariaLabel;
809
- /**
810
- * Identifier of the underlying input element.
811
- * @group Props
812
- */
813
- ariaLabelledBy;
814
- /**
815
- * The breakpoint to define the maximum width boundary.
816
- * @group Props
817
- */
818
- breakpoint = '960px';
819
- /**
820
- * Height of the viewport, a scrollbar is defined if height of list exceeds this value.
821
- * @group Props
822
- */
823
- scrollHeight = '20rem';
824
- /**
825
- * When present, it specifies that the component should be disabled.
826
- * @group Props
827
- */
828
- disabled = false;
829
- /**
830
- * Index of the element in tabbing order.
831
- * @group Props
832
- */
833
- tabindex = 0;
834
- /**
835
- * Defines template option for start.
836
- * @group Templates
837
- */
838
- startTemplate;
839
- /**
840
- * Defines template option for end.
841
- * @group Templates
842
- */
843
- endTemplate;
844
- /**
845
- * Defines template option for menu icon.
846
- * @group Templates
847
- */
848
- menuIconTemplate;
849
- /**
850
- * Defines template option for submenu icon.
851
- * @group Templates
852
- */
853
- submenuIconTemplate;
854
- /**
855
- * Defines template option for submenu icon.
856
- * @group Templates
857
- */
858
- itemTemplate;
859
- /**
860
- * Custom menu button template on responsive mode.
861
- * @group Templates
862
- */
863
- buttonTemplate;
864
- /**
865
- * Custom menu button icon template on responsive mode.
866
- * @group Templates
867
- */
868
- buttonIconTemplate;
869
- templates;
870
- menubuttonViewChild;
871
- rootmenu;
872
- container;
873
- _startTemplate;
874
- _endTemplate;
875
- _menuIconTemplate;
876
- _submenuIconTemplate;
877
- _itemTemplate;
878
- _buttonTemplate;
879
- _buttonIconTemplate;
880
- outsideClickListener;
881
- resizeListener;
882
- dirty = false;
883
- focused = false;
884
- activeItem = signal(null);
885
- focusedItemInfo = signal({ index: -1, level: 0, parentKey: '', item: null });
886
- searchValue = '';
887
- searchTimeout;
888
- _processedItems;
889
- _model;
890
- _componentStyle = inject(MegaMenuStyle);
891
- matchMediaListener;
892
- query;
893
- queryMatches = false;
894
- mobileActive = false;
895
- get visibleItems() {
896
- const processedItem = isNotEmpty(this.activeItem()) ? this.activeItem() : null;
897
- return processedItem
898
- ? processedItem.items.reduce((items, col) => {
899
- col.forEach((submenu) => {
900
- submenu.items.forEach((a) => {
901
- items.push(a);
902
- });
903
- });
904
- return items;
905
- }, [])
906
- : this.processedItems;
907
- }
908
- get processedItems() {
909
- if (!this._processedItems || !this._processedItems.length) {
910
- this._processedItems = this.createProcessedItems(this.model || []);
911
- }
912
- return this._processedItems;
913
- }
914
- get focusedItemId() {
915
- const focusedItem = this.focusedItemInfo();
916
- return focusedItem?.item && focusedItem.item?.id ? focusedItem.item.id : isNotEmpty(focusedItem.key) ? `${this.id}_${focusedItem.key}` : null;
917
- }
918
- constructor() {
919
- super();
920
- effect(() => {
921
- const activeItem = this.activeItem();
922
- if (isNotEmpty(activeItem)) {
923
- this.bindOutsideClickListener();
924
- this.bindResizeListener();
925
- }
926
- else {
927
- this.unbindOutsideClickListener();
928
- this.unbindResizeListener();
929
- }
930
- });
931
- }
932
- ngOnInit() {
933
- super.ngOnInit();
934
- this.bindMatchMediaListener();
935
- this.id = this.id || uuid('pn_id_');
936
- }
937
- ngAfterContentInit() {
938
- this.templates?.forEach((item) => {
939
- switch (item.getType()) {
940
- case 'start':
941
- this._startTemplate = item.template;
942
- break;
943
- case 'end':
944
- this._endTemplate = item.template;
945
- break;
946
- case 'menuicon':
947
- this._menuIconTemplate = item.template;
948
- break;
949
- case 'submenuicon':
950
- this._submenuIconTemplate = item.template;
951
- break;
952
- case 'item':
953
- this._itemTemplate = item.template;
954
- break;
955
- case 'button':
956
- this._buttonTemplate = item.template;
957
- break;
958
- case 'buttonicon':
959
- this._buttonIconTemplate = item.template;
960
- break;
961
- default:
962
- this._itemTemplate = item.template;
963
- break;
964
- }
965
- });
966
- }
967
- bindMatchMediaListener() {
968
- if (isPlatformBrowser(this.platformId)) {
969
- if (!this.matchMediaListener) {
970
- const query = window.matchMedia(`(max-width: ${this.breakpoint})`);
971
- this.query = query;
972
- this.queryMatches = query.matches;
973
- this.matchMediaListener = () => {
974
- this.queryMatches = query.matches;
975
- this.mobileActive = false;
976
- this.cd.markForCheck();
977
- };
978
- query.addEventListener('change', this.matchMediaListener);
979
- }
980
- }
981
- }
982
- unbindMatchMediaListener() {
983
- if (this.matchMediaListener) {
984
- this.query.removeEventListener('change', this.matchMediaListener);
985
- this.matchMediaListener = null;
986
- }
987
- }
988
- createProcessedItems(items, level = 0, parent = {}, parentKey = '', columnIndex) {
989
- const processedItems = [];
990
- items &&
991
- items.forEach((item, index) => {
992
- const key = (parentKey !== '' ? parentKey + '_' : '') + (columnIndex !== undefined ? columnIndex + '_' : '') + index;
993
- const newItem = {
994
- item,
995
- index,
996
- level,
997
- key,
998
- parent,
999
- parentKey,
1000
- columnIndex: columnIndex !== undefined ? columnIndex : parent.columnIndex !== undefined ? parent.columnIndex : index
1001
- };
1002
- newItem['items'] =
1003
- level === 0 && item.items && item.items.length > 0 ? item.items.map((_items, _index) => this.createProcessedItems(_items, level + 1, newItem, key, _index)) : this.createProcessedItems(item.items, level + 1, newItem, key);
1004
- processedItems.push(newItem);
1005
- });
1006
- return processedItems;
1007
- }
1008
- getItemProp(item, name) {
1009
- return item ? resolve(item[name]) : undefined;
1010
- }
1011
- onItemClick(event) {
1012
- const { originalEvent, processedItem } = event;
1013
- const grouped = this.isProcessedItemGroup(processedItem);
1014
- const root = isEmpty(processedItem.parent);
1015
- const selected = this.isSelected(processedItem);
1016
- if (selected) {
1017
- const { index, key, parentKey, item } = processedItem;
1018
- this.activeItem.set(null);
1019
- this.focusedItemInfo.set({ index, key, parentKey, item });
1020
- this.dirty = !root;
1021
- if (!this.mobileActive) {
1022
- focus(this.rootmenu?.menubarViewChild?.nativeElement, { preventScroll: true });
1023
- }
1024
- }
1025
- else {
1026
- if (grouped) {
1027
- this.onItemChange(event);
1028
- }
1029
- else {
1030
- this.hide(originalEvent);
1031
- }
1032
- }
1033
- }
1034
- onItemMouseEnter(event) {
1035
- if (!this.mobileActive && this.dirty) {
1036
- this.onItemChange(event);
1037
- }
1038
- }
1039
- menuButtonClick(event) {
1040
- this.toggle(event);
1041
- }
1042
- menuButtonKeydown(event) {
1043
- (event.code === 'Enter' || event.code === 'NumpadEnter' || event.code === 'Space') && this.menuButtonClick(event);
1044
- }
1045
- toggle(event) {
1046
- if (this.mobileActive) {
1047
- this.mobileActive = false;
1048
- ZIndexUtils.clear(this.rootmenu.el.nativeElement);
1049
- this.hide();
1050
- }
1051
- else {
1052
- this.mobileActive = true;
1053
- ZIndexUtils.set('menu', this.rootmenu.el.nativeElement, this.config.zIndex.menu);
1054
- setTimeout(() => {
1055
- this.show();
1056
- }, 0);
1057
- }
1058
- this.bindOutsideClickListener();
1059
- event.preventDefault();
1060
- }
1061
- show() {
1062
- this.focusedItemInfo.set({ index: this.findFirstFocusedItemIndex(), level: 0, parentKey: '' });
1063
- focus(this.rootmenu?.el.nativeElement);
1064
- }
1065
- scrollInView(index = -1) {
1066
- const id = index !== -1 ? `${this.id}_${index}` : this.focusedItemId;
1067
- let element;
1068
- if (id === null && this.queryMatches) {
1069
- element = this.menubuttonViewChild.nativeElement;
1070
- }
1071
- else {
1072
- element = findSingle(this.rootmenu?.menubarViewChild?.nativeElement, `li[id="${id}"]`);
1073
- }
1074
- if (element) {
1075
- element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'nearest', behavior: 'smooth' });
1076
- }
1077
- }
1078
- onItemChange(event) {
1079
- const { processedItem, isFocus } = event;
1080
- if (isEmpty(processedItem))
1081
- return;
1082
- const { index, key, parentKey, items, item } = processedItem;
1083
- const grouped = isNotEmpty(items);
1084
- if (grouped) {
1085
- this.activeItem.set(processedItem);
1086
- }
1087
- this.focusedItemInfo.set({ index, key, parentKey, item });
1088
- grouped && (this.dirty = true);
1089
- isFocus && focus(this.rootmenu?.menubarViewChild?.nativeElement);
1090
- }
1091
- hide(event, isFocus) {
1092
- if (this.mobileActive) {
1093
- this.mobileActive = false;
1094
- setTimeout(() => {
1095
- focus(this.menubuttonViewChild?.nativeElement);
1096
- this.scrollInView();
1097
- }, 100);
1098
- }
1099
- this.activeItem.set(null);
1100
- this.focusedItemInfo.set({ index: -1, key: '', parentKey: '', item: null });
1101
- isFocus && focus(this.rootmenu?.menubarViewChild?.nativeElement);
1102
- this.dirty = false;
1103
- }
1104
- onMenuFocus(event) {
1105
- this.focused = true;
1106
- if (this.focusedItemInfo().index === -1) {
1107
- const index = this.findFirstFocusedItemIndex();
1108
- const processedItem = this.findVisibleItem(index);
1109
- this.focusedItemInfo.set({ index, key: processedItem.key, parentKey: processedItem.parentKey, item: processedItem.item });
1110
- }
1111
- }
1112
- onMenuBlur(event) {
1113
- this.focused = false;
1114
- this.focusedItemInfo.set({ index: -1, level: 0, parentKey: '', item: null });
1115
- this.searchValue = '';
1116
- this.dirty = false;
1117
- }
1118
- onKeyDown(event) {
1119
- const metaKey = event.metaKey || event.ctrlKey;
1120
- switch (event.code) {
1121
- case 'ArrowDown':
1122
- this.onArrowDownKey(event);
1123
- break;
1124
- case 'ArrowUp':
1125
- this.onArrowUpKey(event);
1126
- break;
1127
- case 'ArrowLeft':
1128
- this.onArrowLeftKey(event);
1129
- break;
1130
- case 'ArrowRight':
1131
- this.onArrowRightKey(event);
1132
- break;
1133
- case 'Home':
1134
- this.onHomeKey(event);
1135
- break;
1136
- case 'End':
1137
- this.onEndKey(event);
1138
- break;
1139
- case 'Space':
1140
- this.onSpaceKey(event);
1141
- break;
1142
- case 'Enter':
1143
- this.onEnterKey(event);
1144
- break;
1145
- case 'Escape':
1146
- this.onEscapeKey(event);
1147
- break;
1148
- case 'Tab':
1149
- this.onTabKey(event);
1150
- break;
1151
- case 'PageDown':
1152
- case 'PageUp':
1153
- case 'Backspace':
1154
- case 'ShiftLeft':
1155
- case 'ShiftRight':
1156
- //NOOP
1157
- break;
1158
- default:
1159
- if (!metaKey && isPrintableCharacter(event.key)) {
1160
- this.searchItems(event, event.key);
1161
- }
1162
- break;
1163
- }
1164
- }
1165
- findFirstFocusedItemIndex() {
1166
- const selectedIndex = this.findSelectedItemIndex();
1167
- return selectedIndex < 0 ? this.findFirstItemIndex() : selectedIndex;
1168
- }
1169
- findFirstItemIndex() {
1170
- return this.visibleItems.findIndex((processedItem) => this.isValidItem(processedItem));
1171
- }
1172
- findSelectedItemIndex() {
1173
- return this.visibleItems.findIndex((processedItem) => this.isValidSelectedItem(processedItem));
1174
- }
1175
- isProcessedItemGroup(processedItem) {
1176
- return processedItem && isNotEmpty(processedItem.items);
1177
- }
1178
- isSelected(processedItem) {
1179
- return isNotEmpty(this.activeItem()) ? this.activeItem().key === processedItem.key : false;
1180
- }
1181
- isValidSelectedItem(processedItem) {
1182
- return this.isValidItem(processedItem) && this.isSelected(processedItem);
1183
- }
1184
- isValidItem(processedItem) {
1185
- return !!processedItem && !this.isItemDisabled(processedItem.item) && !this.isItemSeparator(processedItem.item);
1186
- }
1187
- isItemDisabled(item) {
1188
- return this.getItemProp(item, 'disabled');
1189
- }
1190
- isItemSeparator(item) {
1191
- return this.getItemProp(item, 'separator');
1192
- }
1193
- isItemMatched(processedItem) {
1194
- return this.isValidItem(processedItem) && this.getProccessedItemLabel(processedItem).toLocaleLowerCase().startsWith(this.searchValue.toLocaleLowerCase());
1195
- }
1196
- isProccessedItemGroup(processedItem) {
1197
- return processedItem && isNotEmpty(processedItem.items);
1198
- }
1199
- searchItems(event, char) {
1200
- this.searchValue = (this.searchValue || '') + char;
1201
- let itemIndex = -1;
1202
- let matched = false;
1203
- if (this.focusedItemInfo().index !== -1) {
1204
- itemIndex = this.visibleItems.slice(this.focusedItemInfo().index).findIndex((processedItem) => this.isItemMatched(processedItem));
1205
- itemIndex = itemIndex === -1 ? this.visibleItems.slice(0, this.focusedItemInfo().index).findIndex((processedItem) => this.isItemMatched(processedItem)) : itemIndex + this.focusedItemInfo().index;
1206
- }
1207
- else {
1208
- itemIndex = this.visibleItems.findIndex((processedItem) => this.isItemMatched(processedItem));
1209
- }
1210
- if (itemIndex !== -1) {
1211
- matched = true;
1212
- }
1213
- if (itemIndex === -1 && this.focusedItemInfo().index === -1) {
1214
- itemIndex = this.findFirstFocusedItemIndex();
1215
- }
1216
- if (itemIndex !== -1) {
1217
- this.changeFocusedItemInfo(event, itemIndex);
1218
- }
1219
- if (this.searchTimeout) {
1220
- clearTimeout(this.searchTimeout);
1221
- }
1222
- this.searchTimeout = setTimeout(() => {
1223
- this.searchValue = '';
1224
- this.searchTimeout = null;
1225
- }, 500);
1226
- return matched;
1227
- }
1228
- getProccessedItemLabel(processedItem) {
1229
- return processedItem ? this.getItemLabel(processedItem.item) : undefined;
1230
- }
1231
- getItemLabel(item) {
1232
- return this.getItemProp(item, 'label');
1233
- }
1234
- changeFocusedItemInfo(event, index) {
1235
- const processedItem = this.findVisibleItem(index);
1236
- if (isNotEmpty(processedItem)) {
1237
- const { key, parentKey, item } = processedItem;
1238
- this.focusedItemInfo.set({ index, key: key ? key : '', parentKey, item });
1239
- }
1240
- this.scrollInView();
1241
- }
1242
- onArrowDownKey(event) {
1243
- if (this.orientation === 'horizontal') {
1244
- if (isNotEmpty(this.activeItem()) && this.activeItem().key === this.focusedItemInfo().key) {
1245
- const { key, item } = this.activeItem();
1246
- this.focusedItemInfo.set({ index: -1, key: '', parentKey: key, item });
1247
- }
1248
- else {
1249
- const processedItem = this.findVisibleItem(this.focusedItemInfo().index);
1250
- const grouped = this.isProccessedItemGroup(processedItem);
1251
- if (grouped) {
1252
- const { parentKey, key, item } = processedItem;
1253
- this.onItemChange({ originalEvent: event, processedItem });
1254
- this.focusedItemInfo.set({ index: -1, key: key, parentKey: parentKey, item: item });
1255
- this.searchValue = '';
1256
- }
1257
- }
1258
- }
1259
- const itemIndex = this.focusedItemInfo().index !== -1 ? this.findNextItemIndex(this.focusedItemInfo().index) : this.findFirstFocusedItemIndex();
1260
- this.changeFocusedItemInfo(event, itemIndex);
1261
- event.preventDefault();
1262
- }
1263
- onArrowRightKey(event) {
1264
- const processedItem = this.findVisibleItem(this.focusedItemInfo().index);
1265
- const grouped = this.isProccessedItemGroup(processedItem);
1266
- if (grouped) {
1267
- if (this.orientation === 'vertical') {
1268
- if (isNotEmpty(this.activeItem()) && this.activeItem().key === processedItem.key) {
1269
- this.focusedItemInfo.set({ index: -1, key: '', parentKey: this.activeItem().key, item: processedItem.item });
1270
- }
1271
- else {
1272
- const processedItem = this.findVisibleItem(this.focusedItemInfo().index);
1273
- const grouped = this.isProccessedItemGroup(processedItem);
1274
- if (grouped) {
1275
- this.onItemChange({ originalEvent: event, processedItem });
1276
- this.focusedItemInfo.set({
1277
- index: -1,
1278
- key: processedItem.key,
1279
- parentKey: processedItem.parentKey,
1280
- item: processedItem.item
1281
- });
1282
- this.searchValue = '';
1283
- }
1284
- }
1285
- }
1286
- const itemIndex = this.focusedItemInfo().index !== -1 ? this.findNextItemIndex(this.focusedItemInfo().index) : this.findFirstFocusedItemIndex();
1287
- this.changeFocusedItemInfo(event, itemIndex);
1288
- }
1289
- else {
1290
- const columnIndex = processedItem.columnIndex + 1;
1291
- const itemIndex = this.visibleItems.findIndex((item) => item.columnIndex === columnIndex);
1292
- itemIndex !== -1 && this.changeFocusedItemInfo(event, itemIndex);
1293
- }
1294
- event.preventDefault();
1295
- }
1296
- onArrowUpKey(event) {
1297
- if (event.altKey && this.orientation === 'horizontal') {
1298
- if (this.focusedItemInfo().index !== -1) {
1299
- const processedItem = this.findVisibleItem(this.focusedItemInfo().index);
1300
- const grouped = this.isProccessedItemGroup(processedItem);
1301
- if (!grouped && isNotEmpty(this.activeItem)) {
1302
- if (this.focusedItemInfo().index === 0) {
1303
- this.focusedItemInfo.set({
1304
- index: this.activeItem().index,
1305
- key: this.activeItem().key,
1306
- parentKey: this.activeItem().parentKey,
1307
- item: processedItem.item
1308
- });
1309
- this.activeItem.set(null);
1310
- }
1311
- else {
1312
- this.changeFocusedItemInfo(event, this.findFirstItemIndex());
1313
- }
1314
- }
1315
- }
1316
- event.preventDefault();
1317
- }
1318
- else {
1319
- const itemIndex = this.focusedItemInfo().index !== -1 ? this.findPrevItemIndex(this.focusedItemInfo().index) : this.findLastFocusedItemIndex();
1320
- this.changeFocusedItemInfo(event, itemIndex);
1321
- event.preventDefault();
1322
- }
1323
- }
1324
- onArrowLeftKey(event) {
1325
- const processedItem = this.findVisibleItem(this.focusedItemInfo().index);
1326
- const grouped = this.isProccessedItemGroup(processedItem);
1327
- if (grouped) {
1328
- if (this.orientation === 'horizontal') {
1329
- const itemIndex = this.focusedItemInfo().index !== -1 ? this.findPrevItemIndex(this.focusedItemInfo().index) : this.findLastFocusedItemIndex();
1330
- this.changeFocusedItemInfo(event, itemIndex);
1331
- }
1332
- }
1333
- else {
1334
- if (this.orientation === 'vertical' && isNotEmpty(this.activeItem())) {
1335
- if (processedItem.columnIndex === 0) {
1336
- this.focusedItemInfo.set({
1337
- index: this.activeItem().index,
1338
- key: this.activeItem().key,
1339
- parentKey: this.activeItem().parentKey,
1340
- item: processedItem.item
1341
- });
1342
- this.activeItem.set(null);
1343
- }
1344
- }
1345
- const columnIndex = processedItem.columnIndex - 1;
1346
- const itemIndex = this.visibleItems.findIndex((item) => item.columnIndex === columnIndex);
1347
- itemIndex !== -1 && this.changeFocusedItemInfo(event, itemIndex);
1348
- }
1349
- event.preventDefault();
1350
- }
1351
- onHomeKey(event) {
1352
- this.changeFocusedItemInfo(event, this.findFirstItemIndex());
1353
- event.preventDefault();
1354
- }
1355
- onEndKey(event) {
1356
- this.changeFocusedItemInfo(event, this.findLastItemIndex());
1357
- event.preventDefault();
1358
- }
1359
- onSpaceKey(event) {
1360
- this.onEnterKey(event);
1361
- }
1362
- onEscapeKey(event) {
1363
- if (isNotEmpty(this.activeItem())) {
1364
- this.focusedItemInfo.set({ index: this.activeItem().index, key: this.activeItem().key, item: this.activeItem().item });
1365
- this.activeItem.set(null);
1366
- }
1367
- event.preventDefault();
1368
- }
1369
- onTabKey(event) {
1370
- if (this.focusedItemInfo().index !== -1) {
1371
- const processedItem = this.findVisibleItem(this.focusedItemInfo().index);
1372
- const grouped = this.isProccessedItemGroup(processedItem);
1373
- !grouped && this.onItemChange({ originalEvent: event, processedItem });
1374
- }
1375
- this.hide();
1376
- }
1377
- onEnterKey(event) {
1378
- if (this.focusedItemInfo().index !== -1) {
1379
- const element = findSingle(this.rootmenu?.el?.nativeElement, `li[id="${`${this.focusedItemId}`}"]`);
1380
- const anchorElement = element && findSingle(element, 'a[data-pc-section="action"]');
1381
- anchorElement ? anchorElement.click() : element && element.click();
1382
- const processedItem = this.visibleItems[this.focusedItemInfo().index];
1383
- const grouped = this.isProccessedItemGroup(processedItem);
1384
- !grouped && this.changeFocusedItemInfo(event, this.findFirstFocusedItemIndex());
1385
- }
1386
- event.preventDefault();
1387
- }
1388
- findVisibleItem(index) {
1389
- return isNotEmpty(this.visibleItems) ? this.visibleItems[index] : null;
1390
- }
1391
- findLastFocusedItemIndex() {
1392
- const selectedIndex = this.findSelectedItemIndex();
1393
- return selectedIndex < 0 ? this.findLastItemIndex() : selectedIndex;
1394
- }
1395
- findLastItemIndex() {
1396
- return findLastIndex(this.visibleItems, (processedItem) => this.isValidItem(processedItem));
1397
- }
1398
- findPrevItemIndex(index) {
1399
- const matchedItemIndex = index > 0 ? findLastIndex(this.visibleItems.slice(0, index), (processedItem) => this.isValidItem(processedItem)) : -1;
1400
- return matchedItemIndex > -1 ? matchedItemIndex : index;
1401
- }
1402
- findNextItemIndex(index) {
1403
- const matchedItemIndex = index < this.visibleItems.length - 1 ? this.visibleItems.slice(index + 1).findIndex((processedItem) => this.isValidItem(processedItem)) : -1;
1404
- return matchedItemIndex > -1 ? matchedItemIndex + index + 1 : index;
1405
- }
1406
- bindResizeListener() {
1407
- if (!this.resizeListener) {
1408
- this.resizeListener = (event) => {
1409
- if (!isTouchDevice()) {
1410
- this.hide(event, true);
1411
- }
1412
- this.mobileActive = false;
1413
- };
1414
- window.addEventListener('resize', this.resizeListener);
1415
- }
1416
- }
1417
- bindOutsideClickListener() {
1418
- if (isPlatformBrowser(this.platformId)) {
1419
- if (!this.outsideClickListener) {
1420
- this.outsideClickListener = this.renderer.listen(this.document, 'click', (event) => {
1421
- const isOutsideContainer = this.container?.nativeElement !== event.target && !this.container?.nativeElement.contains(event.target);
1422
- if (isOutsideContainer) {
1423
- this.hide();
1424
- }
1425
- });
1426
- }
1427
- }
1428
- }
1429
- unbindOutsideClickListener() {
1430
- if (this.outsideClickListener) {
1431
- this.outsideClickListener();
1432
- this.outsideClickListener = null;
1433
- }
1434
- }
1435
- unbindResizeListener() {
1436
- if (this.resizeListener) {
1437
- window.removeEventListener('resize', this.resizeListener);
1438
- this.resizeListener = null;
1439
- }
1440
- }
1441
- ngOnDestroy() {
1442
- this.unbindOutsideClickListener();
1443
- this.unbindResizeListener();
1444
- this.unbindMatchMediaListener();
1445
- super.ngOnDestroy();
1446
- }
1447
- static ɵfac = function MegaMenu_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MegaMenu)(); };
1448
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MegaMenu, selectors: [["p-megaMenu"], ["p-megamenu"], ["p-mega-menu"]], contentQueries: function MegaMenu_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
1449
- i0.ɵɵcontentQuery(dirIndex, _c6, 4);
1450
- i0.ɵɵcontentQuery(dirIndex, _c7, 4);
1451
- i0.ɵɵcontentQuery(dirIndex, _c8, 4);
1452
- i0.ɵɵcontentQuery(dirIndex, _c9, 4);
1453
- i0.ɵɵcontentQuery(dirIndex, _c10, 4);
1454
- i0.ɵɵcontentQuery(dirIndex, _c11, 4);
1455
- i0.ɵɵcontentQuery(dirIndex, _c12, 4);
1456
- i0.ɵɵcontentQuery(dirIndex, PrimeTemplate, 4);
1457
- } if (rf & 2) {
1458
- let _t;
1459
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.startTemplate = _t.first);
1460
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.endTemplate = _t.first);
1461
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.menuIconTemplate = _t.first);
1462
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.submenuIconTemplate = _t.first);
1463
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.itemTemplate = _t.first);
1464
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.buttonTemplate = _t.first);
1465
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.buttonIconTemplate = _t.first);
1466
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templates = _t);
1467
- } }, viewQuery: function MegaMenu_Query(rf, ctx) { if (rf & 1) {
1468
- i0.ɵɵviewQuery(_c13, 5);
1469
- i0.ɵɵviewQuery(_c14, 5);
1470
- i0.ɵɵviewQuery(_c15, 5);
1471
- } if (rf & 2) {
1472
- let _t;
1473
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.menubuttonViewChild = _t.first);
1474
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.rootmenu = _t.first);
1475
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.container = _t.first);
1476
- } }, inputs: { model: "model", style: "style", styleClass: "styleClass", orientation: "orientation", id: "id", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", breakpoint: "breakpoint", scrollHeight: "scrollHeight", disabled: [2, "disabled", "disabled", booleanAttribute], tabindex: [2, "tabindex", "tabindex", numberAttribute] }, standalone: true, features: [i0.ɵɵProvidersFeature([MegaMenuStyle]), i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], decls: 8, vars: 36, consts: [["container", ""], ["rootmenu", ""], ["menubutton", ""], [3, "ngClass", "ngStyle"], ["class", "p-megamenu-start", 4, "ngIf"], [4, "ngIf"], [4, "ngTemplateOutlet"], [3, "itemClick", "menuFocus", "menuBlur", "menuKeydown", "itemMouseEnter", "itemTemplate", "items", "menuId", "root", "orientation", "ariaLabel", "disabled", "tabindex", "activeItem", "level", "ariaLabelledBy", "focusedItemId", "mobileActive", "queryMatches", "scrollHeight"], ["class", "p-megamenu-end", 4, "ngIf"], [1, "p-megamenu-start"], ["role", "button", "tabindex", "0", "class", "p-megamenu-button", 3, "click", "keydown", 4, "ngIf"], ["role", "button", "tabindex", "0", 1, "p-megamenu-button", 3, "click", "keydown"], [1, "p-megamenu-end"]], template: function MegaMenu_Template(rf, ctx) { if (rf & 1) {
1477
- const _r1 = i0.ɵɵgetCurrentView();
1478
- i0.ɵɵelementStart(0, "div", 3, 0);
1479
- i0.ɵɵtemplate(2, MegaMenu_div_2_Template, 2, 1, "div", 4)(3, MegaMenu_ng_container_3_Template, 2, 1, "ng-container", 5)(4, MegaMenu_ng_container_4_Template, 1, 0, "ng-container", 6);
1480
- i0.ɵɵelementStart(5, "p-megamenu-sub", 7, 1);
1481
- i0.ɵɵlistener("itemClick", function MegaMenu_Template_p_megamenu_sub_itemClick_5_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onItemClick($event)); })("menuFocus", function MegaMenu_Template_p_megamenu_sub_menuFocus_5_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onMenuFocus($event)); })("menuBlur", function MegaMenu_Template_p_megamenu_sub_menuBlur_5_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onMenuBlur($event)); })("menuKeydown", function MegaMenu_Template_p_megamenu_sub_menuKeydown_5_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onKeyDown($event)); })("itemMouseEnter", function MegaMenu_Template_p_megamenu_sub_itemMouseEnter_5_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onItemMouseEnter($event)); });
1482
- i0.ɵɵelementEnd();
1483
- i0.ɵɵtemplate(7, MegaMenu_div_7_Template, 2, 1, "div", 8);
1484
- i0.ɵɵelementEnd();
1485
- } if (rf & 2) {
1486
- i0.ɵɵstyleMap(i0.ɵɵpureFunction1(29, _c16, ctx.orientation == "vertical" && ctx.queryMatches ? "row" : ""));
1487
- i0.ɵɵclassMap(ctx.styleClass);
1488
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction4(31, _c17, ctx.queryMatches, ctx.mobileActive, ctx.orientation == "horizontal", ctx.orientation == "vertical"))("ngStyle", ctx.style);
1489
- i0.ɵɵattribute("data-pc-section", "root")("data-pc-name", "megamenu")("id", ctx.id);
1490
- i0.ɵɵadvance(2);
1491
- i0.ɵɵproperty("ngIf", ctx.startTemplate || ctx._startTemplate);
1492
- i0.ɵɵadvance();
1493
- i0.ɵɵproperty("ngIf", !ctx.buttonTemplate && !ctx._buttonTemplate);
1494
- i0.ɵɵadvance();
1495
- i0.ɵɵproperty("ngTemplateOutlet", ctx.buttonTemplate || ctx._buttonTemplate);
1496
- i0.ɵɵadvance();
1497
- i0.ɵɵproperty("itemTemplate", ctx.itemTemplate || ctx._itemTemplate)("items", ctx.processedItems)("menuId", ctx.id)("root", true)("orientation", ctx.orientation)("ariaLabel", ctx.ariaLabel)("disabled", ctx.disabled)("tabindex", !ctx.disabled ? ctx.tabindex : -1)("activeItem", ctx.activeItem())("level", 0)("ariaLabelledBy", ctx.ariaLabelledBy)("focusedItemId", ctx.focused ? ctx.focusedItemId : undefined)("mobileActive", ctx.mobileActive)("queryMatches", ctx.queryMatches)("scrollHeight", ctx.scrollHeight);
1498
- i0.ɵɵattribute("id", ctx.id + "_list");
1499
- i0.ɵɵadvance(2);
1500
- i0.ɵɵproperty("ngIf", ctx.endTemplate || ctx._endTemplate);
1501
- } }, dependencies: [CommonModule, i1.NgClass, i1.NgIf, i1.NgTemplateOutlet, i1.NgStyle, RouterModule, MegaMenuSub, TooltipModule, BarsIcon, BadgeModule, SharedModule], encapsulation: 2, changeDetection: 0 });
1502
- }
1503
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MegaMenu, [{
1504
- type: Component,
1505
- args: [{
1506
- selector: 'p-megaMenu, p-megamenu, p-mega-menu',
1507
- standalone: true,
1508
- imports: [CommonModule, RouterModule, MegaMenuSub, TooltipModule, BarsIcon, BadgeModule, SharedModule],
1509
- template: `
1510
- <div
1511
- [ngClass]="{
1512
- 'p-megamenu p-component': true,
1513
- 'p-megamenu-mobile': queryMatches,
1514
- 'p-megamenu-mobile-active': mobileActive,
1515
- 'p-megamenu-horizontal': orientation == 'horizontal',
1516
- 'p-megamenu-vertical': orientation == 'vertical'
1517
- }"
1518
- [class]="styleClass"
1519
- [style]="{ flexDirection: orientation == 'vertical' && queryMatches ? 'row' : '' }"
1520
- [ngStyle]="style"
1521
- [attr.data-pc-section]="'root'"
1522
- [attr.data-pc-name]="'megamenu'"
1523
- [attr.id]="id"
1524
- #container
1525
- >
1526
- <div class="p-megamenu-start" *ngIf="startTemplate || _startTemplate">
1527
- <ng-container *ngTemplateOutlet="startTemplate || _startTemplate"></ng-container>
1528
- </div>
1529
- <ng-container *ngIf="!buttonTemplate && !_buttonTemplate">
1530
- <a
1531
- *ngIf="model && model.length > 0"
1532
- #menubutton
1533
- role="button"
1534
- tabindex="0"
1535
- class="p-megamenu-button"
1536
- [attr.aria-haspopup]="model.length && model.length > 0 ? true : false"
1537
- [attr.aria-expanded]="mobileActive"
1538
- [attr.aria-controls]="id"
1539
- [attr.aria-label]="config.translation.aria.navigation"
1540
- (click)="menuButtonClick($event)"
1541
- (keydown)="menuButtonKeydown($event)"
1542
- >
1543
- <BarsIcon *ngIf="!buttonIconTemplate && !_buttonIconTemplate" />
1544
- <ng-template *ngTemplateOutlet="buttonIconTemplate || _buttonIconTemplate"></ng-template>
1545
- </a>
1546
- </ng-container>
1547
- <ng-container *ngTemplateOutlet="buttonTemplate || _buttonTemplate"></ng-container>
1548
- <p-megamenu-sub
1549
- #rootmenu
1550
- [itemTemplate]="itemTemplate || _itemTemplate"
1551
- [items]="processedItems"
1552
- [attr.id]="id + '_list'"
1553
- [menuId]="id"
1554
- [root]="true"
1555
- [orientation]="orientation"
1556
- [ariaLabel]="ariaLabel"
1557
- [disabled]="disabled"
1558
- [tabindex]="!disabled ? tabindex : -1"
1559
- [activeItem]="activeItem()"
1560
- [level]="0"
1561
- [ariaLabelledBy]="ariaLabelledBy"
1562
- [focusedItemId]="focused ? focusedItemId : undefined"
1563
- [mobileActive]="mobileActive"
1564
- (itemClick)="onItemClick($event)"
1565
- (menuFocus)="onMenuFocus($event)"
1566
- (menuBlur)="onMenuBlur($event)"
1567
- (menuKeydown)="onKeyDown($event)"
1568
- (itemMouseEnter)="onItemMouseEnter($event)"
1569
- [queryMatches]="queryMatches"
1570
- [scrollHeight]="scrollHeight"
1571
- ></p-megamenu-sub>
1572
- <div class="p-megamenu-end" *ngIf="endTemplate || _endTemplate">
1573
- <ng-container *ngTemplateOutlet="endTemplate || _endTemplate"></ng-container>
1574
- </div>
1575
- </div>
1576
- `,
1577
- changeDetection: ChangeDetectionStrategy.OnPush,
1578
- encapsulation: ViewEncapsulation.None,
1579
- providers: [MegaMenuStyle]
1580
- }]
1581
- }], () => [], { model: [{
1582
- type: Input
1583
- }], style: [{
1584
- type: Input
1585
- }], styleClass: [{
1586
- type: Input
1587
- }], orientation: [{
1588
- type: Input
1589
- }], id: [{
1590
- type: Input
1591
- }], ariaLabel: [{
1592
- type: Input
1593
- }], ariaLabelledBy: [{
1594
- type: Input
1595
- }], breakpoint: [{
1596
- type: Input
1597
- }], scrollHeight: [{
1598
- type: Input
1599
- }], disabled: [{
1600
- type: Input,
1601
- args: [{ transform: booleanAttribute }]
1602
- }], tabindex: [{
1603
- type: Input,
1604
- args: [{ transform: numberAttribute }]
1605
- }], startTemplate: [{
1606
- type: ContentChild,
1607
- args: ['start', { descendants: false }]
1608
- }], endTemplate: [{
1609
- type: ContentChild,
1610
- args: ['end', { descendants: false }]
1611
- }], menuIconTemplate: [{
1612
- type: ContentChild,
1613
- args: ['menuicon', { descendants: false }]
1614
- }], submenuIconTemplate: [{
1615
- type: ContentChild,
1616
- args: ['submenuicon', { descendants: false }]
1617
- }], itemTemplate: [{
1618
- type: ContentChild,
1619
- args: ['item', { descendants: false }]
1620
- }], buttonTemplate: [{
1621
- type: ContentChild,
1622
- args: ['button', { descendants: false }]
1623
- }], buttonIconTemplate: [{
1624
- type: ContentChild,
1625
- args: ['buttonicon', { descendants: false }]
1626
- }], templates: [{
1627
- type: ContentChildren,
1628
- args: [PrimeTemplate]
1629
- }], menubuttonViewChild: [{
1630
- type: ViewChild,
1631
- args: ['menubutton']
1632
- }], rootmenu: [{
1633
- type: ViewChild,
1634
- args: ['rootmenu']
1635
- }], container: [{
1636
- type: ViewChild,
1637
- args: ['container']
1638
- }] }); })();
1639
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MegaMenu, { className: "MegaMenu" }); })();
1640
- export class MegaMenuModule {
1641
- static ɵfac = function MegaMenuModule_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MegaMenuModule)(); };
1642
- static ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: MegaMenuModule });
1643
- static ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [MegaMenu, SharedModule, SharedModule] });
1644
- }
1645
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MegaMenuModule, [{
1646
- type: NgModule,
1647
- args: [{
1648
- imports: [MegaMenu, SharedModule],
1649
- exports: [MegaMenu, SharedModule]
1650
- }]
1651
- }], null, null); })();
1652
- (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MegaMenuModule, { imports: [MegaMenu, SharedModule], exports: [MegaMenu, SharedModule] }); })();
1653
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVnYW1lbnUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWVnYW1lbnUvbWVnYW1lbnUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFFSCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLE1BQU0sRUFFTixZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLGVBQWUsRUFHZixNQUFNLEVBRU4sTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLG9CQUFvQixFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUksT0FBTyxFQUFnQixhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWhELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVC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QyxZQUFZO1lBRUEsUUFBUTtrQkFBOUIsU0FBUzttQkFBQyxVQUFVO1lBRUcsU0FBUztrQkFBaEMsU0FBUzttQkFBQyxXQUFXOztrRkF4R2IsUUFBUTtBQSt6QnJCLE1BQU0sT0FBTyxjQUFjO3dHQUFkLGNBQWM7NERBQWQsY0FBYztnRUFIYixRQUFRLEVBQUUsWUFBWSxFQUNaLFlBQVk7O2lGQUV2QixjQUFjO2NBSjFCLFFBQVE7ZUFBQztnQkFDTixPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDO2dCQUNqQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDO2FBQ3BDOzt3RkFDWSxjQUFjLGNBL3pCZCxRQUFRLEVBNHpCRyxZQUFZLGFBNXpCdkIsUUFBUSxFQTZ6QkcsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgZWZmZWN0LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE5nTW9kdWxlLFxuICAgIG51bWJlckF0dHJpYnV0ZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgc2lnbmFsLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBmaW5kTGFzdEluZGV4LCBmaW5kU2luZ2xlLCBmb2N1cywgaXNFbXB0eSwgaXNOb3RFbXB0eSwgaXNQcmludGFibGVDaGFyYWN0ZXIsIGlzVG91Y2hEZXZpY2UsIHJlc29sdmUsIHV1aWQgfSBmcm9tICdAcHJpbWV1aXgvdXRpbHMnO1xuaW1wb3J0IHsgTWVnYU1lbnVJdGVtLCBQcmltZVRlbXBsYXRlLCBTaGFyZWRNb2R1bGUgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBCYWRnZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYmFkZ2UnO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJ3ByaW1lbmcvYmFzZWNvbXBvbmVudCc7XG5pbXBvcnQgeyBBbmdsZURvd25JY29uLCBBbmdsZVJpZ2h0SWNvbiwgQmFyc0ljb24gfSBmcm9tICdwcmltZW5nL2ljb25zJztcbmltcG9ydCB7IFJpcHBsZSB9IGZyb20gJ3ByaW1lbmcvcmlwcGxlJztcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xuaW1wb3J0IHsgVm9pZExpc3RlbmVyIH0gZnJvbSAncHJpbWVuZy90cy1oZWxwZXJzJztcbmltcG9ydCB7IFpJbmRleFV0aWxzIH0gZnJvbSAncHJpbWVuZy91dGlscyc7XG5pbXBvcnQgeyBNZWdhTWVudVN0eWxlIH0gZnJvbSAnLi9zdHlsZS9tZWdhbWVudXN0eWxlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLW1lZ2FNZW51U3ViLCBwLW1lZ2FtZW51LXN1YicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSb3V0ZXJNb2R1bGUsIFJpcHBsZSwgVG9vbHRpcE1vZHVsZSwgQW5nbGVEb3duSWNvbiwgQW5nbGVSaWdodEljb24sIEJhZGdlTW9kdWxlLCBTaGFyZWRNb2R1bGVdLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDx1bFxuICAgICAgICAgICAgKm5nSWY9XCJpc1N1Ym1lbnVWaXNpYmxlKHN1Ym1lbnUpXCJcbiAgICAgICAgICAgICNtZW51YmFyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdwLW1lZ2FtZW51LXJvb3QtbGlzdCc6IHJvb3QsICdwLW1lZ2FtZW51LXN1Ym1lbnUnOiAhcm9vdCB9XCJcbiAgICAgICAgICAgIFtzdHlsZV09XCJ7ICdtYXgtaGVpZ2h0Jzogc2Nyb2xsSGVpZ2h0LCBvdmVyZmxvdzogJ2F1dG8nIH1cIlxuICAgICAgICAgICAgW2F0dHIucm9sZV09XCJyb290ID8gJ21lbnViYXInIDogJ21lbnUnXCJcbiAgICAgICAgICAgIFthdHRyLmlkXT1cImlkXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtb3JpZW50YXRpb25dPVwib3JpZW50YXRpb25cIlxuICAgICAgICAgICAgW3RhYmluZGV4XT1cInRhYmluZGV4XCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtYWN0aXZlZGVzY2VuZGFudF09XCJmb2N1c2VkSXRlbUlkXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCJyb290ID8gJ3Jvb3QnIDogJ3N1Ym1lbnUnXCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cIm1lbnVLZXlkb3duLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoZm9jdXMpPVwibWVudUZvY3VzLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoYmx1cik9XCJtZW51Qmx1ci5lbWl0KCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bGkgKm5nSWY9XCJzdWJtZW51XCIgW25nQ2xhc3NdPVwiZ2V0U3VibWVudUhlYWRlckNsYXNzKHN1Ym1lbnUpXCIgW3N0eWxlXT1cImdldEl0ZW1Qcm9wKHN1Ym1lbnUsICdzdHlsZScpXCIgcm9sZT1cInByZXNlbnRhdGlvblwiPlxuICAgICAgICAgICAgICAgIHt7IGdldEl0ZW1MYWJlbChzdWJtZW51KSB9fVxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtcHJvY2Vzc2VkSXRlbSBbbmdGb3JPZl09XCJpdGVtc1wiIGxldC1pbmRleD1cImluZGV4XCI+XG4gICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNJdGVtVmlzaWJsZShwcm9jZXNzZWRJdGVtKSAmJiBnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnc2VwYXJhdG9yJylcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJnZXRJdGVtSWQocHJvY2Vzc2VkSXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ3N0eWxlJylcIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJnZXRTZXBhcmF0b3JJdGVtQ2xhc3MocHJvY2Vzc2VkSXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICByb2xlPVwic2VwYXJhdG9yXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidzZXBhcmF0b3InXCJcbiAgICAgICAgICAgICAgICA+PC9saT5cbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgI2xpc3RJdGVtXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNJdGVtVmlzaWJsZShwcm9jZXNzZWRJdGVtKSAmJiAhZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ3NlcGFyYXRvcicpXCJcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm1lbnVpdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiZ2V0SXRlbUlkKHByb2Nlc3NlZEl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidtZW51aXRlbSdcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXAtaGlnaGxpZ2h0XT1cImlzSXRlbUFjdGl2ZShwcm9jZXNzZWRJdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcC1mb2N1c2VkXT1cImlzSXRlbUZvY3VzZWQocHJvY2Vzc2VkSXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXAtZGlzYWJsZWRdPVwiaXNJdGVtRGlzYWJsZWQocHJvY2Vzc2VkSXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImdldEl0ZW1MYWJlbChwcm9jZXNzZWRJdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiaXNJdGVtRGlzYWJsZWQocHJvY2Vzc2VkSXRlbSkgfHwgdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCJpc0l0ZW1Hcm91cChwcm9jZXNzZWRJdGVtKSAmJiAhZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ3RvJykgPyAnbWVudScgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImlzSXRlbUdyb3VwKHByb2Nlc3NlZEl0ZW0pID8gaXNJdGVtQWN0aXZlKHByb2Nlc3NlZEl0ZW0pIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sZXZlbF09XCJsZXZlbCArIDFcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNldHNpemVdPVwiZ2V0QXJpYVNldFNpemUoKVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcG9zaW5zZXRdPVwiZ2V0QXJpYVBvc0luc2V0KGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdzdHlsZScpXCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0SXRlbUNsYXNzKHByb2Nlc3NlZEl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdzdHlsZUNsYXNzJylcIlxuICAgICAgICAgICAgICAgICAgICBwVG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE9wdGlvbnNdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ3Rvb2x0aXBPcHRpb25zJylcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtbWVnYW1lbnUtaXRlbS1jb250ZW50XCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidjb250ZW50J1wiIChjbGljayk9XCJvbkl0ZW1DbGljaygkZXZlbnQsIHByb2Nlc3NlZEl0ZW0pXCIgKG1vdXNlZW50ZXIpPVwib25JdGVtTW91c2VFbnRlcih7ICRldmVudCwgcHJvY2Vzc2VkSXRlbSB9KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpdGVtVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAncm91dGVyTGluaycpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuaHJlZl09XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAndXJsJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb25pZF09XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnYXV0b21hdGlvbklkJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2FjdGlvbidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGFyZ2V0XT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICd0YXJnZXQnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3AtbWVnYW1lbnUtaXRlbS1saW5rJzogdHJ1ZSwgJ3AtZGlzYWJsZWQnOiBnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnZGlzYWJsZWQnKSB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwUmlwcGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnaWNvbicpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1tZWdhbWVudS1pdGVtLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2ljb24nKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnaWNvblN0eWxlJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidpY29uJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCItMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdlc2NhcGUnKTsgZWxzZSBodG1sTGFiZWxcIiBjbGFzcz1cInAtbWVnYW1lbnUtaXRlbS1sYWJlbFwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbGFiZWwnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRJdGVtTGFiZWwocHJvY2Vzc2VkSXRlbSkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2h0bWxMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1tZWdhbWVudS1pdGVtLWxhYmVsXCIgW2lubmVySFRNTF09XCJnZXRJdGVtTGFiZWwocHJvY2Vzc2VkSXRlbSlcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2xhYmVsJ1wiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtYmFkZ2UgKm5nSWY9XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnYmFkZ2UnKVwiIFtzdHlsZUNsYXNzXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdiYWRnZVN0eWxlQ2xhc3MnKVwiIFt2YWx1ZV09XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnYmFkZ2UnKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0l0ZW1Hcm91cChwcm9jZXNzZWRJdGVtKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtZWdhTWVudS5zdWJtZW51SWNvblRlbXBsYXRlICYmICFtZWdhTWVudS5fc3VibWVudUljb25UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAob3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJyB8fCBtb2JpbGVBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFuZ2xlRG93bkljb24gW25nQ2xhc3NdPVwiJ3AtbWVnYW1lbnUtc3VibWVudS1pY29uJ1wiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInc3VibWVudWljb24nXCIgW2F0dHIuYXJpYS1oaWRkZW5dPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBbmdsZVJpZ2h0SWNvbiBbbmdDbGFzc109XCIncC1tZWdhbWVudS1zdWJtZW51LWljb24nXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidzdWJtZW51aWNvbidcIiAqbmdJZj1cIm9yaWVudGF0aW9uID09PSAndmVydGljYWwnXCIgW2F0dHIuYXJpYS1oaWRkZW5dPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtZWdhTWVudS5zdWJtZW51SWNvblRlbXBsYXRlIHx8IG1lZ2FNZW51Ll9zdWJtZW51SWNvblRlbXBsYXRlXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidzdWJtZW51aWNvbidcIiBbYXR0ci5hcmlhLWhpZGRlbl09XCJ0cnVlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ3JvdXRlckxpbmsnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdyb3V0ZXJMaW5rJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb25pZF09XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnYXV0b21hdGlvbklkJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCItMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2FjdGlvbidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcXVlcnlQYXJhbXNdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ3F1ZXJ5UGFyYW1zJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua0FjdGl2ZV09XCIncC1tZWdhbWVudS1pdGVtLWxpbmstYWN0aXZlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAncm91dGVyTGlua0FjdGl2ZU9wdGlvbnMnKSB8fCB7IGV4YWN0OiBmYWxzZSB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RhcmdldF09XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAndGFyZ2V0JylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdwLW1lZ2FtZW51LWl0ZW0tbGluayc6IHRydWUsICdwLWRpc2FibGVkJzogZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2Rpc2FibGVkJykgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmcmFnbWVudF09XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnZnJhZ21lbnQnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtxdWVyeVBhcmFtc0hhbmRsaW5nXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdxdWVyeVBhcmFtc0hhbmRsaW5nJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJlc2VydmVGcmFnbWVudF09XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAncHJlc2VydmVGcmFnbWVudCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NraXBMb2NhdGlvbkNoYW5nZV09XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnc2tpcExvY2F0aW9uQ2hhbmdlJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVwbGFjZVVybF09XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAncmVwbGFjZVVybCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0YXRlXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdzdGF0ZScpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFJpcHBsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1tZWdhbWVudS1pdGVtLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnaWNvbicpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdpY29uJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2ljb25TdHlsZScpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInaWNvbidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCItMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1tZWdhbWVudS1pdGVtLWxhYmVsXCIgKm5nSWY9XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnZXNjYXBlJyk7IGVsc2UgaHRtbFJvdXRlTGFiZWxcIj57eyBnZXRJdGVtTGFiZWwocHJvY2Vzc2VkSXRlbSkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaHRtbFJvdXRlTGFiZWw+PHNwYW4gY2xhc3M9XCJwLW1lZ2FtZW51LWl0ZW0tbGFiZWxcIiBbaW5uZXJIVE1MXT1cImdldEl0ZW1MYWJlbChwcm9jZXNzZWRJdGVtKVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbGFiZWwnXCI+PC9zcGFuPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWJhZGdlICpuZ0lmPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2JhZGdlJylcIiBbc3R5bGVDbGFzc109XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnYmFkZ2VTdHlsZUNsYXNzJylcIiBbdmFsdWVdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2JhZGdlJylcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNJdGVtR3JvdXAocHJvY2Vzc2VkSXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbWVnYU1lbnUuc3VibWVudUljb25UZW1wbGF0ZSAmJiAhbWVnYU1lbnUuX3N1Ym1lbnVJY29uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QW5nbGVEb3duSWNvbiBbc3R5bGVDbGFzc109XCIncC1tZWdhbWVudS1zdWJtZW51LWljb24nXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidzdWJtZW51aWNvbidcIiAqbmdJZj1cIm9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCdcIiBbYXR0ci5hcmlhLWhpZGRlbl09XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QW5nbGVSaWdodEljb24gW3N0eWxlQ2xhc3NdPVwiJ3AtbWVnYW1lbnUtc3VibWVudS1pY29uJ1wiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInc3VibWVudWljb24nXCIgKm5nSWY9XCJvcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJ1wiIFthdHRyLmFyaWEtaGlkZGVuXT1cInRydWVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtZWdhTWVudS5zdWJtZW51SWNvblRlbXBsYXRlIHx8IG1lZ2FNZW51Ll9zdWJtZW51SWNvblRlbXBsYXRlXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidzdWJtZW51aWNvbidcIiBbYXR0ci5hcmlhLWhpZGRlbl09XCJ0cnVlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbVRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogcHJvY2Vzc2VkSXRlbS5pdGVtIH1cIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNJdGVtVmlzaWJsZShwcm9jZXNzZWRJdGVtKSAmJiBpc0l0ZW1Hcm91cChwcm9jZXNzZWRJdGVtKVwiIGNsYXNzPVwicC1tZWdhbWVudS1vdmVybGF5XCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidwYW5lbCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLW1lZ2FtZW51LWdyaWRcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2dyaWQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29sIG9mIHByb2Nlc3NlZEl0ZW0uaXRlbXNcIiBbbmdDbGFzc109XCJnZXRDb2x1bW5DbGFzcyhwcm9jZXNzZWRJdGVtKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1tZWdhbWVudS1zdWJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzdWJtZW51IG9mIGNvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiZ2V0U3ViTGlzdElkKHN1Ym1lbnUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdWJtZW51XT1cInN1Ym1lbnVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cInN1Ym1lbnUuaXRlbXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1UZW1wbGF0ZV09XCJpdGVtVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vYmlsZUFjdGl2ZV09XCJtb2JpbGVBY3RpdmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21lbnVJZF09XCJtZW51SWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZvY3VzZWRJdGVtSWRdPVwiZm9jdXNlZEl0ZW1JZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGV2ZWxdPVwibGV2ZWwgKyAxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb290XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtQ2xpY2spPVwiaXRlbUNsaWNrLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXRlbU1vdXNlRW50ZXIpPVwib25JdGVtTW91c2VFbnRlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3AtbWVnYW1lbnUtc3ViPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3VsPlxuICAgIGAsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBNZWdhTWVudVN1YiBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICAgIEBJbnB1dCgpIGlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBASW5wdXQoKSBpdGVtczogYW55W10gfCB1bmRlZmluZWQ7XG5cbiAgICBASW5wdXQoKSBpdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBASW5wdXQoKSBtZW51SWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCgpIGFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KCkgYXJpYUxhYmVsbGVkQnk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIGxldmVsOiBudW1iZXIgPSAwO1xuXG4gICAgQElucHV0KCkgZm9jdXNlZEl0ZW1JZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBvcmllbnRhdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KCkgYWN0aXZlSXRlbTogYW55O1xuXG4gICAgQElucHV0KCkgc3VibWVudTogYW55O1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHF1ZXJ5TWF0Y2hlczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIG1vYmlsZUFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgc2Nyb2xsSGVpZ2h0OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSB0YWJpbmRleDogbnVtYmVyID0gMDtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSByb290OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBAT3V0cHV0KCkgaXRlbUNsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBpdGVtTW91c2VFbnRlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgbWVudUZvY3VzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBtZW51Qmx1cjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgbWVudUtleWRvd246IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQFZpZXdDaGlsZCgnbWVudWJhcicsIHsgc3RhdGljOiB0cnVlIH0pIG1lbnViYXJWaWV3Q2hpbGQ6IEVsZW1lbnRSZWY7XG5cbiAgICBtZWdhTWVudTogTWVnYU1lbnUgPSBpbmplY3QoZm9yd2FyZFJlZigoKSA9PiBNZWdhTWVudSkpO1xuXG4gICAgb25JdGVtQ2xpY2soZXZlbnQ6IGFueSwgcHJvY2Vzc2VkSXRlbTogYW55KSB7XG4gICAgICAgIHRoaXMuZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2NvbW1hbmQnLCB7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCBpdGVtOiBwcm9jZXNzZWRJdGVtLml0ZW0gfSk7XG4gICAgICAgIHRoaXMuaXRlbUNsaWNrLmVtaXQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgcHJvY2Vzc2VkSXRlbSwgaXNGb2N1czogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICBnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtOiBhbnksIG5hbWU6IHN0cmluZywgcGFyYW1zOiBhbnkgfCBudWxsID0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcHJvY2Vzc2VkSXRlbSAmJiBwcm9jZXNzZWRJdGVtLml0ZW0gPyByZXNvbHZlKHByb2Nlc3NlZEl0ZW0uaXRlbVtuYW1lXSwgcGFyYW1zKSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBnZXRJdGVtSWQocHJvY2Vzc2VkSXRlbTogYW55KTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHByb2Nlc3NlZEl0ZW0uaXRlbSAmJiBwcm9jZXNzZWRJdGVtLml0ZW0/LmlkID8gcHJvY2Vzc2VkSXRlbS5pdGVtLmlkIDogYCR7dGhpcy5tZW51SWR9XyR7cHJvY2Vzc2VkSXRlbS5rZXl9YDtcbiAgICB9XG5cbiAgICBnZXRTdWJMaXN0SWQocHJvY2Vzc2VkSXRlbSkge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5nZXRJdGVtSWQocHJvY2Vzc2VkSXRlbSl9X2xpc3RgO1xuICAgIH1cblxuICAgIGdldEl0ZW1DbGFzcyhwcm9jZXNzZWRJdGVtOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnRoaXMuZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2NsYXNzJyksXG4gICAgICAgICAgICAncC1tZWdhbWVudS1pdGVtJzogdHJ1ZSxcbiAgICAgICAgICAgICdwLW1lZ2FtZW51LWl0ZW0tYWN0aXZlJzogdGhpcy5pc0l0ZW1BY3RpdmUocHJvY2Vzc2VkSXRlbSksXG4gICAgICAgICAgICAncC1mb2N1cyc6IHRoaXMuaXNJdGVtRm9jdXNlZChwcm9jZXNzZWRJdGVtKSxcbiAgICAgICAgICAgICdwLWRpc2FibGVkJzogdGhpcy5pc0l0ZW1EaXNhYmxlZChwcm9jZXNzZWRJdGVtKVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGdldEl0ZW1MYWJlbChwcm9jZXNzZWRJdGVtOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnbGFiZWwnKTtcbiAgICB9XG5cbiAgICBnZXRTZXBhcmF0b3JJdGVtQ2xhc3MocHJvY2Vzc2VkSXRlbTogYW55KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi50aGlzLmdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdjbGFzcycpLFxuICAgICAgICAgICAgJ3AtbWVnYW1lbnUtc2VwYXJhdG9yJzogdHJ1ZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGdldENvbHVtbkNsYXNzKHByb2Nlc3NlZEl0ZW0pIHtcbiAgICAgICAgbGV0IGxlbmd0aCA9IHRoaXMuaXNJdGVtR3JvdXAocHJvY2Vzc2VkSXRlbSkgPyBwcm9jZXNzZWRJdGVtLml0ZW1zLmxlbmd0aCA6IDA7XG4gICAgICAgIGxldCBjb2x1bW5DbGFzcztcbiAgICAgICAgaWYgKHRoaXMucXVlcnlNYXRjaGVzKSBjb2x1bW5DbGFzcyA9ICdwLW1lZ2FtZW51LWNvbC0xMic7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc3dpdGNoIChsZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbkNsYXNzID0gJ3AtbWVnYW1lbnUtY29sLTYnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uQ2xhc3MgPSAncC1tZWdhbWVudS1jb2wtNCc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjb2x1bW5DbGFzcyA9ICdwLW1lZ2FtZW51LWNvbC0zJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbkNsYXNzID0gJ3AtbWVnYW1lbnUtY29sLTInO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbkNsYXNzID0gJ3AtbWVnYW1lbnUtY29sLTEyJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29sdW1uQ2xhc3M7XG4gICAgfVxuXG4gICAgZ2V0U3VibWVudUhlYWRlckNsYXNzKHByb2Nlc3NlZEl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICdwLW1lZ2FtZW51LXN1Ym1lbnUtbGFiZWwnOiB0cnVlLFxuXG4gICAgICAgICAgICAncC1kaXNhYmxlZCc6IHRoaXMuaXNJdGVtRGlzYWJsZWQocHJvY2Vzc2VkSXRlbSksXG5cbiAgICAgICAgICAgIC4uLnRoaXMuZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2NsYXNzJylcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBpc1N1Ym1lbnVWaXNpYmxlKHN1Ym1lbnU6IGFueSkge1xuICAgICAgICBpZiAodGhpcy5zdWJtZW51ICYmICF0aGlzLnJvb3QpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlzSXRlbVZpc2libGUoc3VibWVudSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzSXRlbVZpc2libGUocHJvY2Vzc2VkSXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICd2aXNpYmxlJykgIT09IGZhbHNlO1xuICAgIH1cblxuICAgIGlzSXRlbUFjdGl2ZShwcm9jZXNzZWRJdGVtKSB7XG4gICAgICAgIHJldHVybiBpc05vdEVtcHR5KHRoaXMuYWN0aXZlSXRlbSkgPyB0aGlzLmFjdGl2ZUl0ZW0ua2V5ID09PSBwcm9jZXNzZWRJdGVtLmtleSA6IGZhbHNlO1xuICAgIH1cblxuICAgIGlzSXRlbURpc2FibGVkKHByb2Nlc3NlZEl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnZGlzYWJsZWQnKTtcbiAgICB9XG5cbiAgICBpc0l0ZW1Gb2N1c2VkKHByb2Nlc3NlZEl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mb2N1c2VkSXRlbUlkID09PSB0aGlzLmdldEl0ZW1JZChwcm9jZXNzZWRJdGVtKTtcbiAgICB9XG5cbiAgICBpc0l0ZW1Hcm91cChwcm9jZXNzZWRJdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGlzTm90RW1wdHkocHJvY2Vzc2VkSXRlbS5pdGVtcyk7XG4gICAgfVxuXG4gICAgZ2V0QXJpYVNldFNpemUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1zLmZpbHRlcigocHJvY2Vzc2VkSXRlbSkgPT4gdGhpcy5pc0l0ZW1WaXNpYmxlKHByb2Nlc3NlZEl0ZW0pICYmICF0aGlzLmdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdzZXBhcmF0b3InKSkubGVuZ3RoO1xuICAgIH1cblxuICAgIGdldEFyaWFQb3NJbnNldChpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiBpbmRleCAtIHRoaXMuaXRlbXMuc2xpY2UoMCwgaW5kZXgpLmZpbHRlcigocHJvY2Vzc2VkSXRlbSkgPT4gdGhpcy5pc0l0ZW1WaXNpYmxlKHByb2Nlc3NlZEl0ZW0pICYmIHRoaXMuZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ3NlcGFyYXRvcicpKS5sZW5ndGggKyAxO1xuICAgIH1cblxuICAgIG9uSXRlbU1vdXNlRW50ZXIocGFyYW06IGFueSkge1xuICAgICAgICBjb25zdCB7IGV2ZW50LCBwcm9jZXNzZWRJdGVtIH0gPSBwYXJhbTtcbiAgICAgICAgdGhpcy5pdGVtTW91c2VFbnRlci5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIHByb2Nlc3NlZEl0ZW0gfSk7XG4gICAgfVxufVxuLyoqXG4gKiBNZWdhTWVudSBpcyBuYXZpZ2F0aW9uIGNvbXBvbmVudCB0aGF0IGRpc3BsYXlzIHN1Ym1lbnVzIHRvZ2V0aGVyLlxuICogQGdyb3VwIENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLW1lZ2FNZW51LCBwLW1lZ2FtZW51LCBwLW1lZ2EtbWVudScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSb3V0ZXJNb2R1bGUsIE1lZ2FNZW51U3ViLCBUb29sdGlwTW9kdWxlLCBCYXJzSWNvbiwgQmFkZ2VNb2R1bGUsIFNoYXJlZE1vZHVsZV0sXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICdwLW1lZ2FtZW51IHAtY29tcG9uZW50JzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAncC1tZWdhbWVudS1tb2JpbGUnOiBxdWVyeU1hdGNoZXMsXG4gICAgICAgICAgICAgICAgJ3AtbWVnYW1lbnUtbW9iaWxlLWFjdGl2ZSc6IG1vYmlsZUFjdGl2ZSxcbiAgICAgICAgICAgICAgICAncC1tZWdhbWVudS1ob3Jpem9udGFsJzogb3JpZW50YXRpb24gPT0gJ2hvcml6b250YWwnLFxuICAgICAgICAgICAgICAgICdwLW1lZ2FtZW51LXZlcnRpY2FsJzogb3JpZW50YXRpb24gPT0gJ3ZlcnRpY2FsJ1xuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICBbY2xhc3NdPVwic3R5bGVDbGFzc1wiXG4gICAgICAgICAgICBbc3R5bGVdPVwieyBmbGV4RGlyZWN0aW9uOiBvcmllbnRhdGlvbiA9PSAndmVydGljYWwnICYmIHF1ZXJ5TWF0Y2hlcyA/ICdyb3cnIDogJycgfVwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJzdHlsZVwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3Jvb3QnXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtbmFtZV09XCInbWVnYW1lbnUnXCJcbiAgICAgICAgICAgIFthdHRyLmlkXT1cImlkXCJcbiAgICAgICAgICAgICNjb250YWluZXJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtbWVnYW1lbnUtc3RhcnRcIiAqbmdJZj1cInN0YXJ0VGVtcGxhdGUgfHwgX3N0YXJ0VGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3RhcnRUZW1wbGF0ZSB8fCBfc3RhcnRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWJ1dHRvblRlbXBsYXRlICYmICFfYnV0dG9uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm1vZGVsICYmIG1vZGVsLmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgICAgICAgICAjbWVudWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLW1lZ2FtZW51LWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwibW9kZWwubGVuZ3RoICYmIG1vZGVsLmxlbmd0aCA+IDAgPyB0cnVlIDogZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIm1vYmlsZUFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiaWRcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbmZpZy50cmFuc2xhdGlvbi5hcmlhLm5hdmlnYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibWVudUJ1dHRvbkNsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJtZW51QnV0dG9uS2V5ZG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxCYXJzSWNvbiAqbmdJZj1cIiFidXR0b25JY29uVGVtcGxhdGUgJiYgIV9idXR0b25JY29uVGVtcGxhdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidXR0b25JY29uVGVtcGxhdGUgfHwgX2J1dHRvbkljb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnV0dG9uVGVtcGxhdGUgfHwgX2J1dHRvblRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8cC1tZWdhbWVudS1zdWJcbiAgICAgICAgICAgICAgICAjcm9vdG1lbnVcbiAgICAgICAgICAgICAgICBbaXRlbVRlbXBsYXRlXT1cIml0ZW1UZW1wbGF0ZSB8fCBfaXRlbVRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICBbaXRlbXNdPVwicHJvY2Vzc2VkSXRlbXNcIlxuICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cImlkICsgJ19saXN0J1wiXG4gICAgICAgICAgICAgICAgW21lbnVJZF09XCJpZFwiXG4gICAgICAgICAgICAgICAgW3Jvb3RdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW29yaWVudGF0aW9uXT1cIm9yaWVudGF0aW9uXCJcbiAgICAgICAgICAgICAgICBbYXJpYUxhYmVsXT1cImFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiIWRpc2FibGVkID8gdGFiaW5kZXggOiAtMVwiXG4gICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbSgpXCJcbiAgICAgICAgICAgICAgICBbbGV2ZWxdPVwiMFwiXG4gICAgICAgICAgICAgICAgW2FyaWFMYWJlbGxlZEJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgICAgICAgICBbZm9jdXNlZEl0ZW1JZF09XCJmb2N1c2VkID8gZm9jdXNlZEl0ZW1JZCA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgW21vYmlsZUFjdGl2ZV09XCJtb2JpbGVBY3RpdmVcIlxuICAgICAgICAgICAgICAgIChpdGVtQ2xpY2spPVwib25JdGVtQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKG1lbnVGb2N1cyk9XCJvbk1lbnVGb2N1cygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAobWVudUJsdXIpPVwib25NZW51Qmx1cigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAobWVudUtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChpdGVtTW91c2VFbnRlcik9XCJvbkl0ZW1Nb3VzZUVudGVyKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtxdWVyeU1hdGNoZXNdPVwicXVlcnlNYXRjaGVzXCJcbiAgICAgICAgICAgICAgICBbc2Nyb2xsSGVpZ2h0XT1cInNjcm9sbEhlaWdodFwiXG4gICAgICAgICAgICA+PC9wLW1lZ2FtZW51LXN1Yj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLW1lZ2FtZW51LWVuZFwiICpuZ0lmPVwiZW5kVGVtcGxhdGUgfHwgX2VuZFRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVuZFRlbXBsYXRlIHx8IF9lbmRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFtNZWdhTWVudVN0eWxlXVxufSlcbmV4cG9ydCBjbGFzcyBNZWdhTWVudSBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3ksIE9uSW5pdCB7XG4gICAgLyoqXG4gICAgICogQW4gYXJyYXkgb2YgbWVudWl0ZW1zLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHNldCBtb2RlbCh2YWx1ZTogTWVnYU1lbnVJdGVtW10gfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5fbW9kZWwgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fcHJvY2Vzc2VkSXRlbXMgPSB0aGlzLmNyZWF0ZVByb2Nlc3NlZEl0ZW1zKHRoaXMuX21vZGVsIHx8IFtdKTtcbiAgICB9XG4gICAgZ2V0IG1vZGVsKCk6IE1lZ2FNZW51SXRlbVtdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21vZGVsO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJbmxpbmUgc3R5bGUgb2YgdGhlIGVsZW1lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc3R5bGU6IHsgW2tsYXNzOiBzdHJpbmddOiBhbnkgfSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogQ2xhc3Mgb2YgdGhlIGVsZW1lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgdGhlIG9yaWVudGF0aW9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIG9yaWVudGF0aW9uOiAnaG9yaXpvbnRhbCcgfCAndmVydGljYWwnIHwgc3RyaW5nID0gJ2hvcml6b250YWwnO1xuICAgIC8qKlxuICAgICAqIEN1cnJlbnQgaWQgc3RhdGUgYXMgYSBzdHJpbmcuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgaWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGEgc3RyaW5nIHZhbHVlIHRoYXQgbGFiZWxzIGFuIGludGVyYWN0aXZlIGVsZW1lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgYXJpYUxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogSWRlbnRpZmllciBvZiB0aGUgdW5kZXJseWluZyBpbnB1dCBlbGVtZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGFyaWFMYWJlbGxlZEJ5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogVGhlIGJyZWFrcG9pbnQgdG8gZGVmaW5lIHRoZSBtYXhpbXVtIHdpZHRoIGJvdW5kYXJ5LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGJyZWFrcG9pbnQ6IHN0cmluZyA9ICc5NjBweCc7XG4gICAgLyoqXG4gICAgICogSGVpZ2h0IG9mIHRoZSB2aWV3cG9ydCwgYSBzY3JvbGxiYXIgaXMgZGVmaW5lZCBpZiBoZWlnaHQgb2YgbGlzdCBleGNlZWRzIHRoaXMgdmFsdWUuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc2Nyb2xsSGVpZ2h0OiBzdHJpbmcgPSAnMjByZW0nO1xuICAgIC8qKlxuICAgICAqIFdoZW4gcHJlc2VudCwgaXQgc3BlY2lmaWVzIHRoYXQgdGhlIGNvbXBvbmVudCBzaG91bGQgYmUgZGlzYWJsZWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogSW5kZXggb2YgdGhlIGVsZW1lbnQgaW4gdGFiYmluZyBvcmRlci5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSB0YWJpbmRleDogbnVtYmVyID0gMDtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHRlbXBsYXRlIG9wdGlvbiBmb3Igc3RhcnQuXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ3N0YXJ0JywgeyBkZXNjZW5kYW50czogZmFsc2UgfSkgc3RhcnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHRlbXBsYXRlIG9wdGlvbiBmb3IgZW5kLlxuICAgICAqIEBncm91cCBUZW1wbGF0ZXNcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdlbmQnLCB7IGRlc2NlbmRhbnRzOiBmYWxzZSB9KSBlbmRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHRlbXBsYXRlIG9wdGlvbiBmb3IgbWVudSBpY29uLlxuICAgICAqIEBncm91cCBUZW1wbGF0ZXNcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdtZW51aWNvbicsIHsgZGVzY2VuZGFudHM6IGZhbHNlIH0pIG1lbnVJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB0ZW1wbGF0ZSBvcHRpb24gZm9yIHN1Ym1lbnUgaWNvbi5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnc3VibWVudWljb24nLCB7IGRlc2NlbmRhbnRzOiBmYWxzZSB9KSBzdWJtZW51SWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgdGVtcGxhdGUgb3B0aW9uIGZvciBzdWJtZW51IGljb24uXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2l0ZW0nLCB7IGRlc2NlbmRhbnRzOiBmYWxzZSB9KSBpdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogQ3VzdG9tIG1lbnUgYnV0dG9uIHRlbXBsYXRlIG9uIHJlc3BvbnNpdmUgbW9kZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnYnV0dG9uJywgeyBkZXNjZW5kYW50czogZmFsc2UgfSkgYnV0dG9uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogQ3VzdG9tIG1lbnUgYnV0dG9uIGljb24gdGVtcGxhdGUgb24gcmVzcG9uc2l2ZSBtb2RlLlxuICAgICAqIEBncm91cCBUZW1wbGF0ZXNcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdidXR0b25pY29uJywgeyBkZXNjZW5kYW50czogZmFsc2UgfSkgYnV0dG9uSWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihQcmltZVRlbXBsYXRlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxQcmltZVRlbXBsYXRlPiB8IHVuZGVmaW5lZDtcblxuICAgIEBWaWV3Q2hpbGQoJ21lbnVidXR0b24nKSBtZW51YnV0dG9uVmlld0NoaWxkOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gICAgQFZpZXdDaGlsZCgncm9vdG1lbnUnKSByb290bWVudTogTWVnYU1lbnVTdWIgfCB1bmRlZmluZWQ7XG5cbiAgICBAVmlld0NoaWxkKCdjb250YWluZXInKSBjb250YWluZXI6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgICBfc3RhcnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIF9lbmRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIF9tZW51SWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgX3N1Ym1lbnVJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBfaXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgX2J1dHRvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgX2J1dHRvbkljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIG91dHNpZGVDbGlja0xpc3RlbmVyOiBWb2lkTGlzdGVuZXI7XG5cbiAgICByZXNpemVMaXN0ZW5lcjogKGV2ZW50OiBhbnkpID0+IHZvaWQ7XG5cbiAgICBkaXJ0eTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgZm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgYWN0aXZlSXRlbSA9IHNpZ25hbDxhbnk+KG51bGwpO1xuXG4gICAgZm9jdXNlZEl0ZW1JbmZvID0gc2lnbmFsPGFueT4oeyBpbmRleDogLTEsIGxldmVsOiAwLCBwYXJlbnRLZXk6ICcnLCBpdGVtOiBudWxsIH0pO1xuXG4gICAgc2VhcmNoVmFsdWU6IHN0cmluZyA9ICcnO1xuXG4gICAgc2VhcmNoVGltZW91dDogYW55O1xuXG4gICAgX3Byb2Nlc3NlZEl0ZW1zOiBhbnlbXTtcblxuICAgIF9tb2RlbDogTWVnYU1lbnVJdGVtW10gfCB1bmRlZmluZWQ7XG5cbiAgICBfY29tcG9uZW50U3R5bGUgPSBpbmplY3QoTWVnYU1lbnVTdHlsZSk7XG5cbiAgICBwcml2YXRlIG1hdGNoTWVkaWFMaXN0ZW5lcjogKCkgPT4gdm9pZDtcblxuICAgIHByaXZhdGUgcXVlcnk6IE1lZGlhUXVlcnlMaXN0O1xuXG4gICAgcHVibGljIHF1ZXJ5TWF0Y2hlczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcHVibGljIG1vYmlsZUFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgZ2V0IHZpc2libGVJdGVtcygpIHtcbiAgICAgICAgY29uc3QgcHJvY2Vzc2VkSXRlbSA9IGlzTm90RW1wdHkodGhpcy5hY3RpdmVJdGVtKCkpID8gdGhpcy5hY3RpdmVJdGVtKCkgOiBudWxsO1xuXG4gICAgICAgIHJldHVybiBwcm9jZXNzZWRJdGVtXG4gICAgICAgICAgICA/IHByb2Nlc3NlZEl0ZW0uaXRlbXMucmVkdWNlKChpdGVtcywgY29sKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb2wuZm9yRWFjaCgoc3VibWVudSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHN1Ym1lbnUuaXRlbXMuZm9yRWFjaCgoYSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKGEpO1xuICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtcztcbiAgICAgICAgICAgICAgfSwgW10pXG4gICAgICAgICAgICA6IHRoaXMucHJvY2Vzc2VkSXRlbXM7XG4gICAgfVxuXG4gICAgZ2V0IHByb2Nlc3NlZEl0ZW1zKCkge1xuICAgICAgICBpZiAoIXRoaXMuX3Byb2Nlc3NlZEl0ZW1zIHx8ICF0aGlzLl9wcm9jZXNzZWRJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3NlZEl0ZW1zID0gdGhpcy5jcmVhdGVQcm9jZXNzZWRJdGVtcyh0aGlzLm1vZGVsIHx8IFtdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fcHJvY2Vzc2VkSXRlbXM7XG4gICAgfVxuXG4gICAgZ2V0IGZvY3VzZWRJdGVtSWQoKSB7XG4gICAgICAgIGNvbnN0IGZvY3VzZWRJdGVtID0gdGhpcy5mb2N1c2VkSXRlbUluZm8oKTtcbiAgICAgICAgcmV0dXJuIGZvY3VzZWRJdGVtPy5pdGVtICYmIGZvY3VzZWRJdGVtLml0ZW0/LmlkID8gZm9jdXNlZEl0ZW0uaXRlbS5pZCA6IGlzTm90RW1wdHkoZm9jdXNlZEl0ZW0ua2V5KSA/IGAke3RoaXMuaWR9XyR7Zm9jdXNlZEl0ZW0ua2V5fWAgOiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWN0aXZlSXRlbSA9IHRoaXMuYWN0aXZlSXRlbSgpO1xuICAgICAgICAgICAgaWYgKGlzTm90RW1wdHkoYWN0aXZlSXRlbSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJpbmRPdXRzaWRlQ2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICAgICAgICAgIHRoaXMuYmluZFJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMudW5iaW5kT3V0c2lkZUNsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVuYmluZFJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLmJpbmRNYXRjaE1lZGlhTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy5pZCA9IHRoaXMuaWQgfHwgdXVpZCgncG5faWRfJyk7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnRlbXBsYXRlcz8uZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChpdGVtLmdldFR5cGUoKSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3N0YXJ0JzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3RhcnRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZW5kVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ21lbnVpY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWVudUljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnc3VibWVudWljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdWJtZW51SWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdpdGVtJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faXRlbVRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdidXR0b24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9idXR0b25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnYnV0dG9uaWNvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2J1dHRvbkljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faXRlbVRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGJpbmRNYXRjaE1lZGlhTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMubWF0Y2hNZWRpYUxpc3RlbmVyKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcXVlcnkgPSB3aW5kb3cubWF0Y2hNZWRpYShgKG1heC13aWR0aDogJHt0aGlzLmJyZWFrcG9pbnR9KWApO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5xdWVyeSA9IHF1ZXJ5O1xuICAgICAgICAgICAgICAgIHRoaXMucXVlcnlNYXRjaGVzID0gcXVlcnkubWF0Y2hlcztcblxuICAgICAgICAgICAgICAgIHRoaXMubWF0Y2hNZWRpYUxpc3RlbmVyID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnF1ZXJ5TWF0Y2hlcyA9IHF1ZXJ5Lm1hdGNoZXM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9iaWxlQWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHF1ZXJ5LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIHRoaXMubWF0Y2hNZWRpYUxpc3RlbmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuYmluZE1hdGNoTWVkaWFMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMubWF0Y2hNZWRpYUxpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLnF1ZXJ5LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIHRoaXMubWF0Y2hNZWRpYUxpc3RlbmVyKTtcbiAgICAgICAgICAgIHRoaXMubWF0Y2hNZWRpYUxpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNyZWF0ZVByb2Nlc3NlZEl0ZW1zKGl0ZW1zLCBsZXZlbCA9IDAsIHBhcmVudCA9IHt9LCBwYXJlbnRLZXkgPSAnJywgY29sdW1uSW5kZXg/KSB7XG4gICAgICAgIGNvbnN0IHByb2Nlc3NlZEl0ZW1zID0gW107XG5cbiAgICAgICAgaXRlbXMgJiZcbiAgICAgICAgICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gKHBhcmVudEtleSAhPT0gJycgPyBwYXJlbnRLZXkgKyAnXycgOiAnJykgKyAoY29sdW1uSW5kZXggIT09IHVuZGVmaW5lZCA/IGNvbHVtbkluZGV4ICsgJ18nIDogJycpICsgaW5kZXg7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3SXRlbSA9IHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsLFxuICAgICAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudCxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50S2V5LFxuICAgICAgICAgICAgICAgICAgICBjb2x1bW5JbmRleDogY29sdW1uSW5kZXggIT09IHVuZGVmaW5lZCA/IGNvbHVtbkluZGV4IDogKDxhbnk+cGFyZW50KS5jb2x1bW5JbmRleCAhPT0gdW5kZWZpbmVkID8gKDxhbnk+cGFyZW50KS5jb2x1bW5JbmRleCA6IGluZGV4XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIG5ld0l0ZW1bJ2l0ZW1zJ10gPVxuICAgICAgICAgICAgICAgICAgICBsZXZlbCA9PT0gMCAmJiBpdGVtLml0ZW1zICYmIGl0ZW0uaXRlbXMubGVuZ3RoID4gMCA/IGl0ZW0uaXRlbXMubWFwKChfaXRlbXMsIF9pbmRleCkgPT4gdGhpcy5jcmVhdGVQcm9jZXNzZWRJdGVtcyhfaXRlbXMsIGxldmVsICsgMSwgbmV3SXRlbSwga2V5LCBfaW5kZXgpKSA6IHRoaXMuY3JlYXRlUHJvY2Vzc2VkSXRlbXMoaXRlbS5pdGVtcywgbGV2ZWwgKyAxLCBuZXdJdGVtLCBrZXkpO1xuICAgICAgICAgICAgICAgIHByb2Nlc3NlZEl0ZW1zLnB1c2gobmV3SXRlbSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHByb2Nlc3NlZEl0ZW1zO1xuICAgIH1cblxuICAgIGdldEl0ZW1Qcm9wKGl0ZW06IGFueSwgbmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBpdGVtID8gcmVzb2x2ZShpdGVtW25hbWVdKSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBvbkl0ZW1DbGljayhldmVudDogYW55KSB7XG4gICAgICAgIGNvbnN0IHsgb3JpZ2luYWxFdmVudCwgcHJvY2Vzc2VkSXRlbSB9ID0gZXZlbnQ7XG4gICAgICAgIGNvbnN0IGdyb3VwZWQgPSB0aGlzLmlzUHJvY2Vzc2VkSXRlbUdyb3VwKHByb2Nlc3NlZEl0ZW0pO1xuICAgICAgICBjb25zdCByb290ID0gaXNFbXB0eShwcm9jZXNzZWRJdGVtLnBhcmVudCk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5pc1NlbGVjdGVkKHByb2Nlc3NlZEl0ZW0pO1xuXG4gICAgICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgICAgICAgY29uc3QgeyBpbmRleCwga2V5LCBwYXJlbnRLZXksIGl0ZW0gfSA9IHByb2Nlc3NlZEl0ZW07XG5cbiAgICAgICAgICAgIHRoaXMuYWN0aXZlSXRlbS5zZXQobnVsbCk7XG4gICAgICAgICAgICB0aGlzLmZvY3VzZWRJdGVtSW5mby5zZXQoeyBpbmRleCwga2V5LCBwYXJlbnRLZXksIGl0ZW0gfSk7XG5cbiAgICAgICAgICAgIHRoaXMuZGlydHkgPSAhcm9vdDtcbiAgICAgICAgICAgIGlmICghdGhpcy5tb2JpbGVBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICBmb2N1cyh0aGlzLnJvb3RtZW51Py5tZW51YmFyVmlld0NoaWxkPy5uYXRpdmVFbGVtZW50LCB7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoZ3JvdXBlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMub25JdGVtQ2hhbmdlKGV2ZW50KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlKG9yaWdpbmFsRXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25JdGVtTW91c2VFbnRlcihldmVudCkge1xuICAgICAgICBpZiAoIXRoaXMubW9iaWxlQWN0aXZlICYmIHRoaXMuZGlydHkpIHtcbiAgICAgICAgICAgIHRoaXMub25JdGVtQ2hhbmdlKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1lbnVCdXR0b25DbGljayhldmVudCkge1xuICAgICAgICB0aGlzLnRvZ2dsZShldmVudCk7XG4gICAgfVxuXG4gICAgbWVudUJ1dHRvbktleWRvd24oZXZlbnQpIHtcbiAgICAgICAgKGV2ZW50LmNvZGUgPT09ICdFbnRlcicgfHwgZXZlbnQuY29kZSA9PT0gJ051bXBhZEVudGVyJyB8fCBldmVudC5jb2RlID09PSAnU3BhY2UnKSAmJiB0aGlzLm1lbnVCdXR0b25DbGljayhldmVudCk7XG4gICAgfVxuXG4gICAgdG9nZ2xlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLm1vYmlsZUFjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5tb2JpbGVBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIFpJbmRleFV0aWxzLmNsZWFyKHRoaXMucm9vdG1lbnUuZWwubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubW9iaWxlQWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgIFpJbmRleFV0aWxzLnNldCgnbWVudScsIHRoaXMucm9vdG1lbnUuZWwubmF0aXZlRWxlbWVudCwgdGhpcy5jb25maWcuekluZGV4Lm1lbnUpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93KCk7XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYmluZE91dHNpZGVDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgc2hvdygpIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkSXRlbUluZm8uc2V0KHsgaW5kZXg6IHRoaXMuZmluZEZpcnN0Rm9jdXNlZEl0ZW1JbmRleCgpLCBsZXZlbDogMCwgcGFyZW50S2V5OiAnJyB9KTtcblxuICAgICAgICBmb2N1cyh0aGlzLnJvb3RtZW51Py5lbC5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBzY3JvbGxJblZpZXcoaW5kZXg6IG51bWJlciA9IC0xKSB7XG4gICAgICAgIGNvbnN0IGlkID0gaW5kZXggIT09IC0xID8gYCR7dGhpcy5pZH1fJHtpbmRleH1gIDogdGhpcy5mb2N1c2VkSXRlbUlkO1xuXG4gICAgICAgIGxldCBlbGVtZW50O1xuXG4gICAgICAgIGlmIChpZCA9PT0gbnVsbCAmJiB0aGlzLnF1ZXJ5TWF0Y2hlcykge1xuICAgICAgICAgICAgZWxlbWVudCA9IHRoaXMubWVudWJ1dHRvblZpZXdDaGlsZC5uYXRpdmVFbGVtZW50O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZWxlbWVudCA9IGZpbmRTaW5nbGUodGhpcy5yb290bWVudT8ubWVudWJhclZpZXdDaGlsZD8ubmF0aXZlRWxlbWVudCwgYGxpW2lkPVwiJHtpZH1cIl1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgICBlbGVtZW50LnNjcm9sbEludG9WaWV3ICYmIGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ25lYXJlc3QnLCBpbmxpbmU6ICduZWFyZXN0JywgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25JdGVtQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgY29uc3QgeyBwcm9jZXNzZWRJdGVtLCBpc0ZvY3VzIH0gPSBldmVudDtcblxuICAgICAgICBpZiAoaXNFbXB0eShwcm9jZXNzZWRJdGVtKSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHsgaW5kZXgsIGtleSwgcGFyZW50S2V5LCBpdGVtcywgaXRlbSB9ID0gcHJvY2Vzc2VkSXRlbTtcbiAgICAgICAgY29uc3QgZ3JvdXBlZCA9IGlzTm90RW1wdHkoaXRlbXMpO1xuXG4gICAgICAgIGlmIChncm91cGVkKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUl0ZW0uc2V0KHByb2Nlc3NlZEl0ZW0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9jdXNlZEl0ZW1JbmZvLnNldCh7IGluZGV4LCBrZXksIHBhcmVudEtleSwgaXRlbSB9KTtcblxuICAgICAgICBncm91cGVkICYmICh0aGlzLmRpcnR5ID0gdHJ1ZSk7XG4gICAgICAgIGlzRm9jdXMgJiYgZm9jdXModGhpcy5yb290bWVudT8ubWVudWJhclZpZXdDaGlsZD8ubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgaGlkZShldmVudD8sIGlzRm9jdXM/OiBib29sZWFuKSB7XG4gICAgICAgIGlmICh0aGlzLm1vYmlsZUFjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5tb2JpbGVBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGZvY3VzKHRoaXMubWVudWJ1dHRvblZpZXdDaGlsZD8ubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxJblZpZXcoKTtcbiAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFjdGl2ZUl0ZW0uc2V0KG51bGwpO1xuICAgICAgICB0aGlzLmZvY3VzZWRJdGVtSW5mby5zZXQoeyBpbmRleDogLTEsIGtleTogJycsIHBhcmVudEtleTogJycsIGl0ZW06IG51bGwgfSk7XG5cbiAgICAgICAgaXNGb2N1cyAmJiBmb2N1cyh0aGlzLnJvb3RtZW51Py5tZW51YmFyVmlld0NoaWxkPy5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgdGhpcy5kaXJ0eSA9IGZhbHNlO1xuICAgIH1cblxuICAgIG9uTWVudUZvY3VzKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCkuaW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZmluZEZpcnN0Rm9jdXNlZEl0ZW1JbmRleCgpO1xuICAgICAgICAgICAgY29uc3QgcHJvY2Vzc2VkSXRlbSA9IHRoaXMuZmluZFZpc2libGVJdGVtKGluZGV4KTtcblxuICAgICAgICAgICAgdGhpcy5mb2N1c2VkSXRlbUluZm8uc2V0KHsgaW5kZXgsIGtleTogcHJvY2Vzc2VkSXRlbS5rZXksIHBhcmVudEtleTogcHJvY2Vzc2VkSXRlbS5wYXJlbnRLZXksIGl0ZW06IHByb2Nlc3NlZEl0ZW0uaXRlbSB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTWVudUJsdXIoZXZlbnQ6IGFueSkge1xuICAgICAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5mb2N1c2VkSXRlbUluZm8uc2V0KHsgaW5kZXg6IC0xLCBsZXZlbDogMCwgcGFyZW50S2V5OiAnJywgaXRlbTogbnVsbCB9KTtcbiAgICAgICAgdGhpcy5zZWFyY2hWYWx1ZSA9ICcnO1xuICAgICAgICB0aGlzLmRpcnR5ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IG1ldGFLZXkgPSBldmVudC5tZXRhS2V5IHx8IGV2ZW50LmN0cmxLZXk7XG5cbiAgICAgICAgc3dpdGNoIChldmVudC5jb2RlKSB7XG4gICAgICAgICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICAgICAgICAgIHRoaXMub25BcnJvd0Rvd25LZXkoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uQXJyb3dVcEtleShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkFycm93TGVmdEtleShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICAgICAgICAgIHRoaXMub25BcnJvd1JpZ2h0S2V5KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnSG9tZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkhvbWVLZXkoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdFbmQnOlxuICAgICAgICAgICAgICAgIHRoaXMub25FbmRLZXkoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdTcGFjZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5vblNwYWNlS2V5KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICAgICAgICAgIHRoaXMub25FbnRlcktleShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0VzY2FwZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkVzY2FwZUtleShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ1RhYic6XG4gICAgICAgICAgICAgICAgdGhpcy5vblRhYktleShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ1BhZ2VEb3duJzpcbiAgICAgICAgICAgIGNhc2UgJ1BhZ2VVcCc6XG4gICAgICAgICAgICBjYXNlICdCYWNrc3BhY2UnOlxuICAgICAgICAgICAgY2FzZSAnU2hpZnRMZWZ0JzpcbiAgICAgICAgICAgIGNhc2UgJ1NoaWZ0UmlnaHQnOlxuICAgICAgICAgICAgICAgIC8vTk9PUFxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGlmICghbWV0YUtleSAmJiBpc1ByaW50YWJsZUNoYXJhY3RlcihldmVudC5rZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoSXRlbXMoZXZlbnQsIGV2ZW50LmtleSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmaW5kRmlyc3RGb2N1c2VkSXRlbUluZGV4KCkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gdGhpcy5maW5kU2VsZWN0ZWRJdGVtSW5kZXgoKTtcblxuICAgICAgICByZXR1cm4gc2VsZWN0ZWRJbmRleCA8IDAgPyB0aGlzLmZpbmRGaXJzdEl0ZW1JbmRleCgpIDogc2VsZWN0ZWRJbmRleDtcbiAgICB9XG5cbiAgICBmaW5kRmlyc3RJdGVtSW5kZXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpc2libGVJdGVtcy5maW5kSW5kZXgoKHByb2Nlc3NlZEl0ZW0pID0+IHRoaXMuaXNWYWxpZEl0ZW0ocHJvY2Vzc2VkSXRlbSkpO1xuICAgIH1cblxuICAgIGZpbmRTZWxlY3RlZEl0ZW1JbmRleCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlzaWJsZUl0ZW1zLmZpbmRJbmRleCgocHJvY2Vzc2VkSXRlbSkgPT4gdGhpcy5pc1ZhbGlkU2VsZWN0ZWRJdGVtKHByb2Nlc3NlZEl0ZW0pKTtcbiAgICB9XG5cbiAgICBpc1Byb2Nlc3NlZEl0ZW1Hcm91cChwcm9jZXNzZWRJdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHByb2Nlc3NlZEl0ZW0gJiYgaXNOb3RFbXB0eShwcm9jZXNzZWRJdGVtLml0ZW1zKTtcbiAgICB9XG5cbiAgICBpc1NlbGVjdGVkKHByb2Nlc3NlZEl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gaXNOb3RFbXB0eSh0aGlzLmFjdGl2ZUl0ZW0oKSkgPyB0aGlzLmFjdGl2ZUl0ZW0oKS5rZXkgPT09IHByb2Nlc3NlZEl0ZW0ua2V5IDogZmFsc2U7XG4gICAgfVxuXG4gICAgaXNWYWxpZFNlbGVjdGVkSXRlbShwcm9jZXNzZWRJdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZEl0ZW0ocHJvY2Vzc2VkSXRlbSkgJiYgdGhpcy5pc1NlbGVjdGVkKHByb2Nlc3NlZEl0ZW0pO1xuICAgIH1cblxuICAgIGlzVmFsaWRJdGVtKHByb2Nlc3NlZEl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISFwcm9jZXNzZWRJdGVtICYmICF0aGlzLmlzSXRlbURpc2FibGVkKHByb2Nlc3NlZEl0ZW0uaXRlbSkgJiYgIXRoaXMuaXNJdGVtU2VwYXJhdG9yKHByb2Nlc3NlZEl0ZW0uaXRlbSk7XG4gICAgfVxuXG4gICAgaXNJdGVtRGlzYWJsZWQoaXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEl0ZW1Qcm9wKGl0ZW0sICdkaXNhYmxlZCcpO1xuICAgIH1cblxuICAgIGlzSXRlbVNlcGFyYXRvcihpdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SXRlbVByb3AoaXRlbSwgJ3NlcGFyYXRvcicpO1xuICAgIH1cblxuICAgIGlzSXRlbU1hdGNoZWQocHJvY2Vzc2VkSXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWRJdGVtKHByb2Nlc3NlZEl0ZW0pICYmIHRoaXMuZ2V0UHJvY2Nlc3NlZEl0ZW1MYWJlbChwcm9jZXNzZWRJdGVtKS50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgodGhpcy5zZWFyY2hWYWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpKTtcbiAgICB9XG5cbiAgICBpc1Byb2NjZXNzZWRJdGVtR3JvdXAocHJvY2Vzc2VkSXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBwcm9jZXNzZWRJdGVtICYmIGlzTm90RW1wdHkocHJvY2Vzc2VkSXRlbS5pdGVtcyk7XG4gICAgfVxuXG4gICAgc2VhcmNoSXRlbXMoZXZlbnQ6IGFueSwgY2hhcjogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoVmFsdWUgPSAodGhpcy5zZWFyY2hWYWx1ZSB8fCAnJykgKyBjaGFyO1xuXG4gICAgICAgIGxldCBpdGVtSW5kZXggPSAtMTtcbiAgICAgICAgbGV0IG1hdGNoZWQgPSBmYWxzZTtcblxuICAgICAgICBpZiAodGhpcy5mb2N1c2VkSXRlbUluZm8oKS5pbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIGl0ZW1JbmRleCA9IHRoaXMudmlzaWJsZUl0ZW1zLnNsaWNlKHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCkuaW5kZXgpLmZpbmRJbmRleCgocHJvY2Vzc2VkSXRlbSkgPT4gdGhpcy5pc0l0ZW1NYXRjaGVkKHByb2Nlc3NlZEl0ZW0pKTtcbiAgICAgICAgICAgIGl0ZW1JbmRleCA9IGl0ZW1JbmRleCA9PT0gLTEgPyB0aGlzLnZpc2libGVJdGVtcy5zbGljZSgwLCB0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4KS5maW5kSW5kZXgoKHByb2Nlc3NlZEl0ZW0pID0+IHRoaXMuaXNJdGVtTWF0Y2hlZChwcm9jZXNzZWRJdGVtKSkgOiBpdGVtSW5kZXggKyB0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaXRlbUluZGV4ID0gdGhpcy52aXNpYmxlSXRlbXMuZmluZEluZGV4KChwcm9jZXNzZWRJdGVtKSA9PiB0aGlzLmlzSXRlbU1hdGNoZWQocHJvY2Vzc2VkSXRlbSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGl0ZW1JbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIG1hdGNoZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGl0ZW1JbmRleCA9PT0gLTEgJiYgdGhpcy5mb2N1c2VkSXRlbUluZm8oKS5pbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgIGl0ZW1JbmRleCA9IHRoaXMuZmluZEZpcnN0Rm9jdXNlZEl0ZW1JbmRleCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGl0ZW1JbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRm9jdXNlZEl0ZW1JbmZvKGV2ZW50LCBpdGVtSW5kZXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoVGltZW91dCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2VhcmNoVGltZW91dCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlYXJjaFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoVmFsdWUgPSAnJztcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoVGltZW91dCA9IG51bGw7XG4gICAgICAgIH0sIDUwMCk7XG5cbiAgICAgICAgcmV0dXJuIG1hdGNoZWQ7XG4gICAgfVxuXG4gICAgZ2V0UHJvY2Nlc3NlZEl0ZW1MYWJlbChwcm9jZXNzZWRJdGVtOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHByb2Nlc3NlZEl0ZW0gPyB0aGlzLmdldEl0ZW1MYWJlbChwcm9jZXNzZWRJdGVtLml0ZW0pIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGdldEl0ZW1MYWJlbChpdGVtOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SXRlbVByb3AoaXRlbSwgJ2xhYmVsJyk7XG4gICAgfVxuXG4gICAgY2hhbmdlRm9jdXNlZEl0ZW1JbmZvKGV2ZW50LCBpbmRleCkge1xuICAgICAgICBjb25zdCBwcm9jZXNzZWRJdGVtID0gdGhpcy5maW5kVmlzaWJsZUl0ZW0oaW5kZXgpO1xuICAgICAgICBpZiAoaXNOb3RFbXB0eShwcm9jZXNzZWRJdGVtKSkge1xuICAgICAgICAgICAgY29uc3QgeyBrZXksIHBhcmVudEtleSwgaXRlbSB9ID0gcHJvY2Vzc2VkSXRlbTtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNlZEl0ZW1JbmZvLnNldCh7IGluZGV4LCBrZXk6IGtleSA/IGtleSA6ICcnLCBwYXJlbnRLZXksIGl0ZW0gfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNjcm9sbEluVmlldygpO1xuICAgIH1cblxuICAgIG9uQXJyb3dEb3duS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLm9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCcpIHtcbiAgICAgICAgICAgIGlmIChpc05vdEVtcHR5KHRoaXMuYWN0aXZlSXRlbSgpKSAmJiB0aGlzLmFjdGl2ZUl0ZW0oKS5rZXkgPT09IHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCkua2V5KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBrZXksIGl0ZW0gfSA9IHRoaXMuYWN0aXZlSXRlbSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNlZEl0ZW1JbmZvLnNldCh7IGluZGV4OiAtMSwga2V5OiAnJywgcGFyZW50S2V5OiBrZXksIGl0ZW0gfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHByb2Nlc3NlZEl0ZW0gPSB0aGlzLmZpbmRWaXNpYmxlSXRlbSh0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4KTtcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cGVkID0gdGhpcy5pc1Byb2NjZXNzZWRJdGVtR3JvdXAocHJvY2Vzc2VkSXRlbSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoZ3JvdXBlZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHBhcmVudEtleSwga2V5LCBpdGVtIH0gPSBwcm9jZXNzZWRJdGVtO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uSXRlbUNoYW5nZSh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCBwcm9jZXNzZWRJdGVtIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvY3VzZWRJdGVtSW5mby5zZXQoeyBpbmRleDogLTEsIGtleToga2V5LCBwYXJlbnRLZXk6IHBhcmVudEtleSwgaXRlbTogaXRlbSB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hWYWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCkuaW5kZXggIT09IC0xID8gdGhpcy5maW5kTmV4dEl0ZW1JbmRleCh0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4KSA6IHRoaXMuZmluZEZpcnN0Rm9jdXNlZEl0ZW1JbmRleCgpO1xuICAgICAgICB0aGlzLmNoYW5nZUZvY3VzZWRJdGVtSW5mbyhldmVudCwgaXRlbUluZGV4KTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvbkFycm93UmlnaHRLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgY29uc3QgcHJvY2Vzc2VkSXRlbSA9IHRoaXMuZmluZFZpc2libGVJdGVtKHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCkuaW5kZXgpO1xuICAgICAgICBjb25zdCBncm91cGVkID0gdGhpcy5pc1Byb2NjZXNzZWRJdGVtR3JvdXAocHJvY2Vzc2VkSXRlbSk7XG5cbiAgICAgICAgaWYgKGdyb3VwZWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm9yaWVudGF0aW9uID09PSAndmVydGljYWwnKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzTm90RW1wdHkodGhpcy5hY3RpdmVJdGVtKCkpICYmIHRoaXMuYWN0aXZlSXRlbSgpLmtleSA9PT0gcHJvY2Vzc2VkSXRlbS5rZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c2VkSXRlbUluZm8uc2V0KHsgaW5kZXg6IC0xLCBrZXk6ICcnLCBwYXJlbnRLZXk6IHRoaXMuYWN0aXZlSXRlbSgpLmtleSwgaXRlbTogcHJvY2Vzc2VkSXRlbS5pdGVtIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb2Nlc3NlZEl0ZW0gPSB0aGlzLmZpbmRWaXNpYmxlSXRlbSh0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBlZCA9IHRoaXMuaXNQcm9jY2Vzc2VkSXRlbUdyb3VwKHByb2Nlc3NlZEl0ZW0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChncm91cGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uSXRlbUNoYW5nZSh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCBwcm9jZXNzZWRJdGVtIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c2VkSXRlbUluZm8uc2V0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogLTEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBwcm9jZXNzZWRJdGVtLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRLZXk6IHByb2Nlc3NlZEl0ZW0ucGFyZW50S2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW06IHByb2Nlc3NlZEl0ZW0uaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCkuaW5kZXggIT09IC0xID8gdGhpcy5maW5kTmV4dEl0ZW1JbmRleCh0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4KSA6IHRoaXMuZmluZEZpcnN0Rm9jdXNlZEl0ZW1JbmRleCgpO1xuXG4gICAgICAgICAgICB0aGlzLmNoYW5nZUZvY3VzZWRJdGVtSW5mbyhldmVudCwgaXRlbUluZGV4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbkluZGV4ID0gcHJvY2Vzc2VkSXRlbS5jb2x1bW5JbmRleCArIDE7XG4gICAgICAgICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLnZpc2libGVJdGVtcy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uY29sdW1uSW5kZXggPT09IGNvbHVtbkluZGV4KTtcblxuICAgICAgICAgICAgaXRlbUluZGV4ICE9PSAtMSAmJiB0aGlzLmNoYW5nZUZvY3VzZWRJdGVtSW5mbyhldmVudCwgaXRlbUluZGV4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25BcnJvd1VwS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC5hbHRLZXkgJiYgdGhpcy5vcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5mb2N1c2VkSXRlbUluZm8oKS5pbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9jZXNzZWRJdGVtID0gdGhpcy5maW5kVmlzaWJsZUl0ZW0odGhpcy5mb2N1c2VkSXRlbUluZm8oKS5pbmRleCk7XG4gICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBlZCA9IHRoaXMuaXNQcm9jY2Vzc2VkSXRlbUdyb3VwKHByb2Nlc3NlZEl0ZW0pO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFncm91cGVkICYmIGlzTm90RW1wdHkodGhpcy5hY3RpdmVJdGVtKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5mb2N1c2VkSXRlbUluZm8oKS5pbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c2VkSXRlbUluZm8uc2V0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogdGhpcy5hY3RpdmVJdGVtKCkuaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiB0aGlzLmFjdGl2ZUl0ZW0oKS5rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50S2V5OiB0aGlzLmFjdGl2ZUl0ZW0oKS5wYXJlbnRLZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbTogcHJvY2Vzc2VkSXRlbS5pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlSXRlbS5zZXQobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZUZvY3VzZWRJdGVtSW5mbyhldmVudCwgdGhpcy5maW5kRmlyc3RJdGVtSW5kZXgoKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4ICE9PSAtMSA/IHRoaXMuZmluZFByZXZJdGVtSW5kZXgodGhpcy5mb2N1c2VkSXRlbUluZm8oKS5pbmRleCkgOiB0aGlzLmZpbmRMYXN0Rm9jdXNlZEl0ZW1JbmRleCgpO1xuXG4gICAgICAgICAgICB0aGlzLmNoYW5nZUZvY3VzZWRJdGVtSW5mbyhldmVudCwgaXRlbUluZGV4KTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkFycm93TGVmdEtleShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBjb25zdCBwcm9jZXNzZWRJdGVtID0gdGhpcy5maW5kVmlzaWJsZUl0ZW0odGhpcy5mb2N1c2VkSXRlbUluZm8oKS5pbmRleCk7XG4gICAgICAgIGNvbnN0IGdyb3VwZWQgPSB0aGlzLmlzUHJvY2Nlc3NlZEl0ZW1Hcm91cChwcm9jZXNzZWRJdGVtKTtcblxuICAgICAgICBpZiAoZ3JvdXBlZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMub3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCkuaW5kZXggIT09IC0xID8gdGhpcy5maW5kUHJldkl0ZW1JbmRleCh0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4KSA6IHRoaXMuZmluZExhc3RGb2N1c2VkSXRlbUluZGV4KCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZUZvY3VzZWRJdGVtSW5mbyhldmVudCwgaXRlbUluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm9yaWVudGF0aW9uID09PSAndmVydGljYWwnICYmIGlzTm90RW1wdHkodGhpcy5hY3RpdmVJdGVtKCkpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHByb2Nlc3NlZEl0ZW0uY29sdW1uSW5kZXggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c2VkSXRlbUluZm8uc2V0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiB0aGlzLmFjdGl2ZUl0ZW0oKS5pbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogdGhpcy5hY3RpdmVJdGVtKCkua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50S2V5OiB0aGlzLmFjdGl2ZUl0ZW0oKS5wYXJlbnRLZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtOiBwcm9jZXNzZWRJdGVtLml0ZW1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlSXRlbS5zZXQobnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBjb2x1bW5JbmRleCA9IHByb2Nlc3NlZEl0ZW0uY29sdW1uSW5kZXggLSAxO1xuICAgICAgICAgICAgY29uc3QgaXRlbUluZGV4ID0gdGhpcy52aXNpYmxlSXRlbXMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLmNvbHVtbkluZGV4ID09PSBjb2x1bW5JbmRleCk7XG5cbiAgICAgICAgICAgIGl0ZW1JbmRleCAhPT0gLTEgJiYgdGhpcy5jaGFuZ2VGb2N1c2VkSXRlbUluZm8oZXZlbnQsIGl0ZW1JbmRleCk7XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uSG9tZUtleShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICB0aGlzLmNoYW5nZUZvY3VzZWRJdGVtSW5mbyhldmVudCwgdGhpcy5maW5kRmlyc3RJdGVtSW5kZXgoKSk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25FbmRLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VGb2N1c2VkSXRlbUluZm8oZXZlbnQsIHRoaXMuZmluZExhc3RJdGVtSW5kZXgoKSk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25TcGFjZUtleShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICB0aGlzLm9uRW50ZXJLZXkoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uRXNjYXBlS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmIChpc05vdEVtcHR5KHRoaXMuYWN0aXZlSXRlbSgpKSkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c2VkSXRlbUluZm8uc2V0KHsgaW5kZXg6IHRoaXMuYWN0aXZlSXRlbSgpLmluZGV4LCBrZXk6IHRoaXMuYWN0aXZlSXRlbSgpLmtleSwgaXRlbTogdGhpcy5hY3RpdmVJdGVtKCkuaXRlbSB9KTtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlSXRlbS5zZXQobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uVGFiS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgY29uc3QgcHJvY2Vzc2VkSXRlbSA9IHRoaXMuZmluZFZpc2libGVJdGVtKHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCkuaW5kZXgpO1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBlZCA9IHRoaXMuaXNQcm9jY2Vzc2VkSXRlbUdyb3VwKHByb2Nlc3NlZEl0ZW0pO1xuXG4gICAgICAgICAgICAhZ3JvdXBlZCAmJiB0aGlzLm9uSXRlbUNoYW5nZSh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCBwcm9jZXNzZWRJdGVtIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfVxuXG4gICAgb25FbnRlcktleShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5mb2N1c2VkSXRlbUluZm8oKS5pbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSA8YW55PmZpbmRTaW5nbGUodGhpcy5yb290bWVudT8uZWw/Lm5hdGl2ZUVsZW1lbnQsIGBsaVtpZD1cIiR7YCR7dGhpcy5mb2N1c2VkSXRlbUlkfWB9XCJdYCk7XG4gICAgICAgICAgICBjb25zdCBhbmNob3JFbGVtZW50ID0gZWxlbWVudCAmJiA8YW55PmZpbmRTaW5nbGUoZWxlbWVudCwgJ2FbZGF0YS1wYy1zZWN0aW9uPVwiYWN0aW9uXCJdJyk7XG5cbiAgICAgICAgICAgIGFuY2hvckVsZW1lbnQgPyBhbmNob3JFbGVtZW50LmNsaWNrKCkgOiBlbGVtZW50ICYmIGVsZW1lbnQuY2xpY2soKTtcblxuICAgICAgICAgICAgY29uc3QgcHJvY2Vzc2VkSXRlbSA9IHRoaXMudmlzaWJsZUl0ZW1zW3RoaXMuZm9jdXNlZEl0ZW1JbmZvKCkuaW5kZXhdO1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBlZCA9IHRoaXMuaXNQcm9jY2Vzc2VkSXRlbUdyb3VwKHByb2Nlc3NlZEl0ZW0pO1xuXG4gICAgICAgICAgICAhZ3JvdXBlZCAmJiB0aGlzLmNoYW5nZUZvY3VzZWRJdGVtSW5mbyhldmVudCwgdGhpcy5maW5kRmlyc3RGb2N1c2VkSXRlbUluZGV4KCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBmaW5kVmlzaWJsZUl0ZW0oaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGlzTm90RW1wdHkodGhpcy52aXNpYmxlSXRlbXMpID8gdGhpcy52aXNpYmxlSXRlbXNbaW5kZXhdIDogbnVsbDtcbiAgICB9XG5cbiAgICBmaW5kTGFzdEZvY3VzZWRJdGVtSW5kZXgoKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSB0aGlzLmZpbmRTZWxlY3RlZEl0ZW1JbmRleCgpO1xuICAgICAgICByZXR1cm4gc2VsZWN0ZWRJbmRleCA8IDAgPyB0aGlzLmZpbmRMYXN0SXRlbUluZGV4KCkgOiBzZWxlY3RlZEluZGV4O1xuICAgIH1cblxuICAgIGZpbmRMYXN0SXRlbUluZGV4KCkge1xuICAgICAgICByZXR1cm4gZmluZExhc3RJbmRleCh0aGlzLnZpc2libGVJdGVtcywgKHByb2Nlc3NlZEl0ZW0pID0+IHRoaXMuaXNWYWxpZEl0ZW0ocHJvY2Vzc2VkSXRlbSkpO1xuICAgIH1cblxuICAgIGZpbmRQcmV2SXRlbUluZGV4KGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgbWF0Y2hlZEl0ZW1JbmRleCA9IGluZGV4ID4gMCA/IGZpbmRMYXN0SW5kZXgodGhpcy52aXNpYmxlSXRlbXMuc2xpY2UoMCwgaW5kZXgpLCAocHJvY2Vzc2VkSXRlbSkgPT4gdGhpcy5pc1ZhbGlkSXRlbShwcm9jZXNzZWRJdGVtKSkgOiAtMTtcblxuICAgICAgICByZXR1cm4gbWF0Y2hlZEl0ZW1JbmRleCA+IC0xID8gbWF0Y2hlZEl0ZW1JbmRleCA6IGluZGV4O1xuICAgIH1cblxuICAgIGZpbmROZXh0SXRlbUluZGV4KGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgbWF0Y2hlZEl0ZW1JbmRleCA9IGluZGV4IDwgdGhpcy52aXNpYmxlSXRlbXMubGVuZ3RoIC0gMSA/IHRoaXMudmlzaWJsZUl0ZW1zLnNsaWNlKGluZGV4ICsgMSkuZmluZEluZGV4KChwcm9jZXNzZWRJdGVtKSA9PiB0aGlzLmlzVmFsaWRJdGVtKHByb2Nlc3NlZEl0ZW0pKSA6IC0xO1xuXG4gICAgICAgIHJldHVybiBtYXRjaGVkSXRlbUluZGV4ID4gLTEgPyBtYXRjaGVkSXRlbUluZGV4ICsgaW5kZXggKyAxIDogaW5kZXg7XG4gICAgfVxuXG4gICAgYmluZFJlc2l6ZUxpc3RlbmVyKCkge1xuICAgICAgICBpZiAoIXRoaXMucmVzaXplTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMucmVzaXplTGlzdGVuZXIgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzVG91Y2hEZXZpY2UoKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoZXZlbnQsIHRydWUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMubW9iaWxlQWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5yZXNpemVMaXN0ZW5lcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBiaW5kT3V0c2lkZUNsaWNrTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMub3V0c2lkZUNsaWNrTGlzdGVuZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm91dHNpZGVDbGlja0xpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5kb2N1bWVudCwgJ2NsaWNrJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzT3V0c2lkZUNvbnRhaW5lciA9IHRoaXMuY29udGFpbmVyPy5uYXRpdmVFbGVtZW50ICE9PSBldmVudC50YXJnZXQgJiYgIXRoaXMuY29udGFpbmVyPy5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzT3V0c2lkZUNvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuYmluZE91dHNpZGVDbGlja0xpc3RlbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5vdXRzaWRlQ2xpY2tMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5vdXRzaWRlQ2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICAgICAgdGhpcy5vdXRzaWRlQ2xpY2tMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1bmJpbmRSZXNpemVMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMucmVzaXplTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnJlc2l6ZUxpc3RlbmVyKTtcbiAgICAgICAgICAgIHRoaXMucmVzaXplTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMudW5iaW5kT3V0c2lkZUNsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy51bmJpbmRSZXNpemVMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLnVuYmluZE1hdGNoTWVkaWFMaXN0ZW5lcigpO1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbTWVnYU1lbnUsIFNoYXJlZE1vZHVsZV0sXG4gICAgZXhwb3J0czogW01lZ2FNZW51LCBTaGFyZWRNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIE1lZ2FNZW51TW9kdWxlIHt9XG4iXX0=