primeng 17.10.0 → 17.12.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 (436) hide show
  1. package/api/translation.d.ts +1 -0
  2. package/calendar/calendar.d.ts +2 -2
  3. package/chip/chip.d.ts +9 -2
  4. package/chips/chips.d.ts +4 -0
  5. package/confirmdialog/confirmdialog.d.ts +1 -0
  6. package/dialog/dialog.d.ts +1 -1
  7. package/dynamicdialog/dynamicdialog-ref.d.ts +1 -1
  8. package/esm2022/accordion/accordion.mjs +10 -10
  9. package/esm2022/animate/animate.mjs +7 -7
  10. package/esm2022/animateonscroll/animateonscroll.mjs +7 -7
  11. package/esm2022/api/confirmationservice.mjs +3 -3
  12. package/esm2022/api/contextmenuservice.mjs +3 -3
  13. package/esm2022/api/filterservice.mjs +3 -3
  14. package/esm2022/api/messageservice.mjs +3 -3
  15. package/esm2022/api/overlayservice.mjs +3 -3
  16. package/esm2022/api/primengconfig.mjs +6 -5
  17. package/esm2022/api/shared.mjs +13 -13
  18. package/esm2022/api/translation.mjs +1 -1
  19. package/esm2022/api/treedragdropservice.mjs +3 -3
  20. package/esm2022/autocomplete/autocomplete.mjs +11 -8
  21. package/esm2022/autofocus/autofocus.mjs +7 -7
  22. package/esm2022/avatar/avatar.mjs +7 -7
  23. package/esm2022/avatargroup/avatargroup.mjs +7 -7
  24. package/esm2022/badge/badge.mjs +10 -10
  25. package/esm2022/baseicon/baseicon.mjs +3 -3
  26. package/esm2022/blockui/blockui.mjs +7 -7
  27. package/esm2022/breadcrumb/breadcrumb.mjs +7 -7
  28. package/esm2022/button/button.mjs +10 -10
  29. package/esm2022/buttongroup/buttongroup.mjs +7 -7
  30. package/esm2022/calendar/calendar.mjs +29 -18
  31. package/esm2022/card/card.mjs +7 -7
  32. package/esm2022/carousel/carousel.mjs +7 -7
  33. package/esm2022/cascadeselect/cascadeselect.mjs +12 -11
  34. package/esm2022/chart/chart.mjs +7 -7
  35. package/esm2022/checkbox/checkbox.mjs +7 -7
  36. package/esm2022/chip/chip.mjs +49 -18
  37. package/esm2022/chips/chips.mjs +12 -8
  38. package/esm2022/colorpicker/colorpicker.mjs +7 -7
  39. package/esm2022/confirmdialog/confirmdialog.mjs +13 -12
  40. package/esm2022/confirmpopup/confirmpopup.mjs +7 -7
  41. package/esm2022/contextmenu/contextmenu.mjs +13 -13
  42. package/esm2022/dataview/dataview.mjs +10 -10
  43. package/esm2022/defer/defer.mjs +7 -7
  44. package/esm2022/dialog/dialog.mjs +13 -13
  45. package/esm2022/divider/divider.mjs +7 -7
  46. package/esm2022/dock/dock.mjs +7 -7
  47. package/esm2022/dragdrop/dragdrop.mjs +10 -10
  48. package/esm2022/dropdown/dropdown.mjs +12 -14
  49. package/esm2022/dynamicdialog/dialogservice.mjs +3 -3
  50. package/esm2022/dynamicdialog/dynamicdialog-ref.mjs +2 -2
  51. package/esm2022/dynamicdialog/dynamicdialog.mjs +10 -10
  52. package/esm2022/dynamicdialog/dynamicdialogcontent.mjs +3 -3
  53. package/esm2022/editor/editor.mjs +7 -7
  54. package/esm2022/fieldset/fieldset.mjs +7 -7
  55. package/esm2022/fileupload/fileupload.mjs +9 -9
  56. package/esm2022/floatlabel/floatlabel.mjs +7 -7
  57. package/esm2022/focustrap/focustrap.mjs +7 -7
  58. package/esm2022/galleria/galleria.mjs +19 -19
  59. package/esm2022/iconfield/iconfield.mjs +7 -7
  60. package/esm2022/icons/angledoubledown/angledoubledown.mjs +3 -3
  61. package/esm2022/icons/angledoubleleft/angledoubleleft.mjs +3 -3
  62. package/esm2022/icons/angledoubleright/angledoubleright.mjs +3 -3
  63. package/esm2022/icons/angledoubleup/angledoubleup.mjs +3 -3
  64. package/esm2022/icons/angledown/angledown.mjs +3 -3
  65. package/esm2022/icons/angleleft/angleleft.mjs +3 -3
  66. package/esm2022/icons/angleright/angleright.mjs +3 -3
  67. package/esm2022/icons/angleup/angleup.mjs +3 -3
  68. package/esm2022/icons/arrowdown/arrowdown.mjs +3 -3
  69. package/esm2022/icons/arrowdownleft/arrowdownleft.mjs +3 -3
  70. package/esm2022/icons/arrowdownright/arrowdownright.mjs +3 -3
  71. package/esm2022/icons/arrowleft/arrowleft.mjs +3 -3
  72. package/esm2022/icons/arrowright/arrowright.mjs +3 -3
  73. package/esm2022/icons/arrowup/arrowup.mjs +3 -3
  74. package/esm2022/icons/ban/ban.mjs +3 -3
  75. package/esm2022/icons/bars/bars.mjs +3 -3
  76. package/esm2022/icons/calendar/calendar.mjs +3 -3
  77. package/esm2022/icons/caretleft/caretleft.mjs +3 -3
  78. package/esm2022/icons/caretright/caretright.mjs +3 -3
  79. package/esm2022/icons/check/check.mjs +3 -3
  80. package/esm2022/icons/chevrondown/chevrondown.mjs +3 -3
  81. package/esm2022/icons/chevronleft/chevronleft.mjs +3 -3
  82. package/esm2022/icons/chevronright/chevronright.mjs +3 -3
  83. package/esm2022/icons/chevronup/chevronup.mjs +3 -3
  84. package/esm2022/icons/exclamationtriangle/exclamationtriangle.mjs +3 -3
  85. package/esm2022/icons/eye/eye.mjs +3 -3
  86. package/esm2022/icons/eyeslash/eyeslash.mjs +3 -3
  87. package/esm2022/icons/filter/filter.mjs +3 -3
  88. package/esm2022/icons/filterslash/filterslash.mjs +3 -3
  89. package/esm2022/icons/home/home.mjs +3 -3
  90. package/esm2022/icons/infocircle/infocircle.mjs +3 -3
  91. package/esm2022/icons/minus/minus.mjs +3 -3
  92. package/esm2022/icons/pencil/pencil.mjs +3 -3
  93. package/esm2022/icons/plus/plus.mjs +3 -3
  94. package/esm2022/icons/refresh/refresh.mjs +3 -3
  95. package/esm2022/icons/search/search.mjs +3 -3
  96. package/esm2022/icons/searchminus/searchminus.mjs +3 -3
  97. package/esm2022/icons/searchplus/searchplus.mjs +3 -3
  98. package/esm2022/icons/sortalt/sortalt.mjs +3 -3
  99. package/esm2022/icons/sortamountdown/sortamountdown.mjs +3 -3
  100. package/esm2022/icons/sortamountupalt/sortamountupalt.mjs +3 -3
  101. package/esm2022/icons/spinner/spinner.mjs +3 -3
  102. package/esm2022/icons/star/star.mjs +3 -3
  103. package/esm2022/icons/starfill/starfill.mjs +3 -3
  104. package/esm2022/icons/thlarge/thlarge.mjs +3 -3
  105. package/esm2022/icons/times/times.mjs +3 -3
  106. package/esm2022/icons/timescircle/timescircle.mjs +3 -3
  107. package/esm2022/icons/trash/trash.mjs +3 -3
  108. package/esm2022/icons/undo/undo.mjs +3 -3
  109. package/esm2022/icons/upload/upload.mjs +3 -3
  110. package/esm2022/icons/windowmaximize/windowmaximize.mjs +3 -3
  111. package/esm2022/icons/windowminimize/windowminimize.mjs +3 -3
  112. package/esm2022/image/image.mjs +7 -7
  113. package/esm2022/inplace/inplace.mjs +13 -13
  114. package/esm2022/inputgroup/inputgroup.mjs +7 -7
  115. package/esm2022/inputgroupaddon/inputgroupaddon.mjs +7 -7
  116. package/esm2022/inputicon/inputicon.mjs +7 -7
  117. package/esm2022/inputmask/inputmask.mjs +7 -7
  118. package/esm2022/inputnumber/inputnumber.interface.mjs +1 -1
  119. package/esm2022/inputnumber/inputnumber.mjs +13 -12
  120. package/esm2022/inputotp/inputotp.interface.mjs +2 -0
  121. package/esm2022/inputotp/inputotp.mjs +359 -0
  122. package/esm2022/inputotp/primeng-inputotp.mjs +5 -0
  123. package/esm2022/inputotp/public_api.mjs +3 -0
  124. package/esm2022/inputswitch/inputswitch.mjs +7 -7
  125. package/esm2022/inputtext/inputtext.mjs +7 -7
  126. package/esm2022/inputtextarea/inputtextarea.mjs +7 -7
  127. package/esm2022/keyfilter/keyfilter.mjs +7 -7
  128. package/esm2022/knob/knob.mjs +7 -7
  129. package/esm2022/listbox/listbox.mjs +10 -9
  130. package/esm2022/megamenu/megamenu.mjs +10 -10
  131. package/esm2022/menu/menu.mjs +13 -13
  132. package/esm2022/menubar/menubar.mjs +25 -20
  133. package/esm2022/message/message.mjs +7 -7
  134. package/esm2022/messages/messages.mjs +17 -8
  135. package/esm2022/metergroup/metergroup.mjs +11 -11
  136. package/esm2022/multiselect/multiselect.mjs +18 -15
  137. package/esm2022/orderlist/orderlist.mjs +7 -7
  138. package/esm2022/organizationchart/organizationchart.mjs +10 -10
  139. package/esm2022/overlay/overlay.mjs +7 -7
  140. package/esm2022/overlaypanel/overlaypanel.mjs +7 -7
  141. package/esm2022/paginator/paginator.mjs +7 -7
  142. package/esm2022/panel/panel.mjs +7 -7
  143. package/esm2022/panelmenu/panelmenu.mjs +20 -21
  144. package/esm2022/password/password.mjs +13 -13
  145. package/esm2022/picklist/picklist.mjs +27 -50
  146. package/esm2022/progressbar/progressbar.mjs +7 -7
  147. package/esm2022/progressspinner/progressspinner.mjs +7 -7
  148. package/esm2022/radiobutton/radiobutton.mjs +10 -10
  149. package/esm2022/rating/rating.mjs +7 -7
  150. package/esm2022/ripple/ripple.mjs +7 -7
  151. package/esm2022/scroller/scroller.mjs +7 -7
  152. package/esm2022/scrollpanel/scrollpanel.mjs +7 -7
  153. package/esm2022/scrolltop/scrolltop.mjs +7 -7
  154. package/esm2022/selectbutton/selectbutton.mjs +7 -7
  155. package/esm2022/sidebar/sidebar.mjs +7 -7
  156. package/esm2022/skeleton/skeleton.mjs +7 -7
  157. package/esm2022/slidemenu/slidemenu.mjs +10 -10
  158. package/esm2022/slider/slider.mjs +7 -7
  159. package/esm2022/speeddial/speeddial.mjs +7 -7
  160. package/esm2022/spinner/spinner.mjs +7 -7
  161. package/esm2022/splitbutton/splitbutton.mjs +7 -7
  162. package/esm2022/splitter/splitter.mjs +7 -7
  163. package/esm2022/stepper/primeng-stepper.mjs +5 -0
  164. package/esm2022/stepper/public_api.mjs +3 -0
  165. package/esm2022/stepper/stepper.interface.mjs +2 -0
  166. package/esm2022/stepper/stepper.mjs +685 -0
  167. package/esm2022/steps/steps.mjs +10 -16
  168. package/esm2022/styleclass/styleclass.mjs +7 -7
  169. package/esm2022/table/table.mjs +143 -101
  170. package/esm2022/tabmenu/tabmenu.mjs +7 -7
  171. package/esm2022/tabview/tabview.mjs +10 -10
  172. package/esm2022/tag/tag.mjs +7 -7
  173. package/esm2022/terminal/terminal.mjs +7 -7
  174. package/esm2022/terminal/terminalservice.mjs +3 -3
  175. package/esm2022/tieredmenu/tieredmenu.mjs +22 -13
  176. package/esm2022/timeline/timeline.mjs +7 -7
  177. package/esm2022/toast/toast.mjs +10 -10
  178. package/esm2022/togglebutton/togglebutton.mjs +7 -7
  179. package/esm2022/toolbar/toolbar.mjs +7 -7
  180. package/esm2022/tooltip/tooltip.mjs +7 -7
  181. package/esm2022/tree/tree.mjs +16 -11
  182. package/esm2022/treeselect/treeselect.mjs +19 -16
  183. package/esm2022/treetable/treetable.mjs +55 -55
  184. package/esm2022/tristatecheckbox/tristatecheckbox.mjs +7 -7
  185. package/esm2022/virtualscroller/virtualscroller.mjs +7 -7
  186. package/fesm2022/primeng-accordion.mjs +10 -10
  187. package/fesm2022/primeng-animate.mjs +7 -7
  188. package/fesm2022/primeng-animateonscroll.mjs +7 -7
  189. package/fesm2022/primeng-api.mjs +36 -35
  190. package/fesm2022/primeng-api.mjs.map +1 -1
  191. package/fesm2022/primeng-autocomplete.mjs +10 -7
  192. package/fesm2022/primeng-autocomplete.mjs.map +1 -1
  193. package/fesm2022/primeng-autofocus.mjs +7 -7
  194. package/fesm2022/primeng-avatar.mjs +7 -7
  195. package/fesm2022/primeng-avatargroup.mjs +7 -7
  196. package/fesm2022/primeng-badge.mjs +10 -10
  197. package/fesm2022/primeng-baseicon.mjs +3 -3
  198. package/fesm2022/primeng-blockui.mjs +7 -7
  199. package/fesm2022/primeng-breadcrumb.mjs +7 -7
  200. package/fesm2022/primeng-button.mjs +10 -10
  201. package/fesm2022/primeng-buttongroup.mjs +7 -7
  202. package/fesm2022/primeng-calendar.mjs +28 -17
  203. package/fesm2022/primeng-calendar.mjs.map +1 -1
  204. package/fesm2022/primeng-card.mjs +7 -7
  205. package/fesm2022/primeng-carousel.mjs +7 -7
  206. package/fesm2022/primeng-cascadeselect.mjs +11 -10
  207. package/fesm2022/primeng-cascadeselect.mjs.map +1 -1
  208. package/fesm2022/primeng-chart.mjs +7 -7
  209. package/fesm2022/primeng-checkbox.mjs +7 -7
  210. package/fesm2022/primeng-chip.mjs +48 -17
  211. package/fesm2022/primeng-chip.mjs.map +1 -1
  212. package/fesm2022/primeng-chips.mjs +11 -7
  213. package/fesm2022/primeng-chips.mjs.map +1 -1
  214. package/fesm2022/primeng-colorpicker.mjs +7 -7
  215. package/fesm2022/primeng-confirmdialog.mjs +12 -11
  216. package/fesm2022/primeng-confirmdialog.mjs.map +1 -1
  217. package/fesm2022/primeng-confirmpopup.mjs +7 -7
  218. package/fesm2022/primeng-contextmenu.mjs +12 -12
  219. package/fesm2022/primeng-contextmenu.mjs.map +1 -1
  220. package/fesm2022/primeng-dataview.mjs +10 -10
  221. package/fesm2022/primeng-defer.mjs +7 -7
  222. package/fesm2022/primeng-dialog.mjs +12 -12
  223. package/fesm2022/primeng-dialog.mjs.map +1 -1
  224. package/fesm2022/primeng-divider.mjs +7 -7
  225. package/fesm2022/primeng-dock.mjs +7 -7
  226. package/fesm2022/primeng-dragdrop.mjs +10 -10
  227. package/fesm2022/primeng-dropdown.mjs +11 -13
  228. package/fesm2022/primeng-dropdown.mjs.map +1 -1
  229. package/fesm2022/primeng-dynamicdialog.mjs +16 -16
  230. package/fesm2022/primeng-dynamicdialog.mjs.map +1 -1
  231. package/fesm2022/primeng-editor.mjs +7 -7
  232. package/fesm2022/primeng-fieldset.mjs +7 -7
  233. package/fesm2022/primeng-fileupload.mjs +8 -8
  234. package/fesm2022/primeng-fileupload.mjs.map +1 -1
  235. package/fesm2022/primeng-floatlabel.mjs +7 -7
  236. package/fesm2022/primeng-focustrap.mjs +7 -7
  237. package/fesm2022/primeng-galleria.mjs +19 -19
  238. package/fesm2022/primeng-iconfield.mjs +7 -7
  239. package/fesm2022/primeng-icons-angledoubledown.mjs +3 -3
  240. package/fesm2022/primeng-icons-angledoubleleft.mjs +3 -3
  241. package/fesm2022/primeng-icons-angledoubleright.mjs +3 -3
  242. package/fesm2022/primeng-icons-angledoubleup.mjs +3 -3
  243. package/fesm2022/primeng-icons-angledown.mjs +3 -3
  244. package/fesm2022/primeng-icons-angleleft.mjs +3 -3
  245. package/fesm2022/primeng-icons-angleright.mjs +3 -3
  246. package/fesm2022/primeng-icons-angleup.mjs +3 -3
  247. package/fesm2022/primeng-icons-arrowdown.mjs +3 -3
  248. package/fesm2022/primeng-icons-arrowdownleft.mjs +3 -3
  249. package/fesm2022/primeng-icons-arrowdownright.mjs +3 -3
  250. package/fesm2022/primeng-icons-arrowleft.mjs +3 -3
  251. package/fesm2022/primeng-icons-arrowright.mjs +3 -3
  252. package/fesm2022/primeng-icons-arrowup.mjs +3 -3
  253. package/fesm2022/primeng-icons-ban.mjs +3 -3
  254. package/fesm2022/primeng-icons-bars.mjs +3 -3
  255. package/fesm2022/primeng-icons-calendar.mjs +3 -3
  256. package/fesm2022/primeng-icons-caretleft.mjs +3 -3
  257. package/fesm2022/primeng-icons-caretright.mjs +3 -3
  258. package/fesm2022/primeng-icons-check.mjs +3 -3
  259. package/fesm2022/primeng-icons-chevrondown.mjs +3 -3
  260. package/fesm2022/primeng-icons-chevronleft.mjs +3 -3
  261. package/fesm2022/primeng-icons-chevronright.mjs +3 -3
  262. package/fesm2022/primeng-icons-chevronup.mjs +3 -3
  263. package/fesm2022/primeng-icons-exclamationtriangle.mjs +3 -3
  264. package/fesm2022/primeng-icons-eye.mjs +3 -3
  265. package/fesm2022/primeng-icons-eyeslash.mjs +3 -3
  266. package/fesm2022/primeng-icons-filter.mjs +3 -3
  267. package/fesm2022/primeng-icons-filterslash.mjs +3 -3
  268. package/fesm2022/primeng-icons-home.mjs +3 -3
  269. package/fesm2022/primeng-icons-infocircle.mjs +3 -3
  270. package/fesm2022/primeng-icons-minus.mjs +3 -3
  271. package/fesm2022/primeng-icons-pencil.mjs +3 -3
  272. package/fesm2022/primeng-icons-plus.mjs +3 -3
  273. package/fesm2022/primeng-icons-refresh.mjs +3 -3
  274. package/fesm2022/primeng-icons-search.mjs +3 -3
  275. package/fesm2022/primeng-icons-searchminus.mjs +3 -3
  276. package/fesm2022/primeng-icons-searchplus.mjs +3 -3
  277. package/fesm2022/primeng-icons-sortalt.mjs +3 -3
  278. package/fesm2022/primeng-icons-sortamountdown.mjs +3 -3
  279. package/fesm2022/primeng-icons-sortamountupalt.mjs +3 -3
  280. package/fesm2022/primeng-icons-spinner.mjs +3 -3
  281. package/fesm2022/primeng-icons-star.mjs +3 -3
  282. package/fesm2022/primeng-icons-starfill.mjs +3 -3
  283. package/fesm2022/primeng-icons-thlarge.mjs +3 -3
  284. package/fesm2022/primeng-icons-times.mjs +3 -3
  285. package/fesm2022/primeng-icons-timescircle.mjs +3 -3
  286. package/fesm2022/primeng-icons-trash.mjs +3 -3
  287. package/fesm2022/primeng-icons-undo.mjs +3 -3
  288. package/fesm2022/primeng-icons-upload.mjs +3 -3
  289. package/fesm2022/primeng-icons-windowmaximize.mjs +3 -3
  290. package/fesm2022/primeng-icons-windowminimize.mjs +3 -3
  291. package/fesm2022/primeng-image.mjs +7 -7
  292. package/fesm2022/primeng-inplace.mjs +13 -13
  293. package/fesm2022/primeng-inputgroup.mjs +7 -7
  294. package/fesm2022/primeng-inputgroupaddon.mjs +7 -7
  295. package/fesm2022/primeng-inputicon.mjs +7 -7
  296. package/fesm2022/primeng-inputmask.mjs +7 -7
  297. package/fesm2022/primeng-inputnumber.mjs +12 -11
  298. package/fesm2022/primeng-inputnumber.mjs.map +1 -1
  299. package/fesm2022/primeng-inputotp.mjs +366 -0
  300. package/fesm2022/primeng-inputotp.mjs.map +1 -0
  301. package/fesm2022/primeng-inputswitch.mjs +7 -7
  302. package/fesm2022/primeng-inputtext.mjs +7 -7
  303. package/fesm2022/primeng-inputtextarea.mjs +7 -7
  304. package/fesm2022/primeng-keyfilter.mjs +7 -7
  305. package/fesm2022/primeng-knob.mjs +7 -7
  306. package/fesm2022/primeng-listbox.mjs +9 -8
  307. package/fesm2022/primeng-listbox.mjs.map +1 -1
  308. package/fesm2022/primeng-megamenu.mjs +10 -10
  309. package/fesm2022/primeng-menu.mjs +13 -13
  310. package/fesm2022/primeng-menubar.mjs +24 -19
  311. package/fesm2022/primeng-menubar.mjs.map +1 -1
  312. package/fesm2022/primeng-message.mjs +7 -7
  313. package/fesm2022/primeng-messages.mjs +16 -7
  314. package/fesm2022/primeng-messages.mjs.map +1 -1
  315. package/fesm2022/primeng-metergroup.mjs +10 -10
  316. package/fesm2022/primeng-metergroup.mjs.map +1 -1
  317. package/fesm2022/primeng-multiselect.mjs +17 -14
  318. package/fesm2022/primeng-multiselect.mjs.map +1 -1
  319. package/fesm2022/primeng-orderlist.mjs +7 -7
  320. package/fesm2022/primeng-organizationchart.mjs +10 -10
  321. package/fesm2022/primeng-overlay.mjs +7 -7
  322. package/fesm2022/primeng-overlaypanel.mjs +7 -7
  323. package/fesm2022/primeng-paginator.mjs +7 -7
  324. package/fesm2022/primeng-panel.mjs +7 -7
  325. package/fesm2022/primeng-panelmenu.mjs +19 -20
  326. package/fesm2022/primeng-panelmenu.mjs.map +1 -1
  327. package/fesm2022/primeng-password.mjs +13 -13
  328. package/fesm2022/primeng-picklist.mjs +26 -49
  329. package/fesm2022/primeng-picklist.mjs.map +1 -1
  330. package/fesm2022/primeng-progressbar.mjs +7 -7
  331. package/fesm2022/primeng-progressspinner.mjs +7 -7
  332. package/fesm2022/primeng-radiobutton.mjs +10 -10
  333. package/fesm2022/primeng-rating.mjs +7 -7
  334. package/fesm2022/primeng-ripple.mjs +7 -7
  335. package/fesm2022/primeng-scroller.mjs +7 -7
  336. package/fesm2022/primeng-scrollpanel.mjs +7 -7
  337. package/fesm2022/primeng-scrolltop.mjs +7 -7
  338. package/fesm2022/primeng-selectbutton.mjs +7 -7
  339. package/fesm2022/primeng-sidebar.mjs +7 -7
  340. package/fesm2022/primeng-skeleton.mjs +7 -7
  341. package/fesm2022/primeng-slidemenu.mjs +10 -10
  342. package/fesm2022/primeng-slider.mjs +7 -7
  343. package/fesm2022/primeng-speeddial.mjs +7 -7
  344. package/fesm2022/primeng-spinner.mjs +7 -7
  345. package/fesm2022/primeng-splitbutton.mjs +7 -7
  346. package/fesm2022/primeng-splitter.mjs +7 -7
  347. package/fesm2022/primeng-stepper.mjs +692 -0
  348. package/fesm2022/primeng-stepper.mjs.map +1 -0
  349. package/fesm2022/primeng-steps.mjs +9 -15
  350. package/fesm2022/primeng-steps.mjs.map +1 -1
  351. package/fesm2022/primeng-styleclass.mjs +7 -7
  352. package/fesm2022/primeng-table.mjs +142 -100
  353. package/fesm2022/primeng-table.mjs.map +1 -1
  354. package/fesm2022/primeng-tabmenu.mjs +7 -7
  355. package/fesm2022/primeng-tabview.mjs +10 -10
  356. package/fesm2022/primeng-tag.mjs +7 -7
  357. package/fesm2022/primeng-terminal.mjs +10 -10
  358. package/fesm2022/primeng-tieredmenu.mjs +21 -12
  359. package/fesm2022/primeng-tieredmenu.mjs.map +1 -1
  360. package/fesm2022/primeng-timeline.mjs +7 -7
  361. package/fesm2022/primeng-toast.mjs +10 -10
  362. package/fesm2022/primeng-togglebutton.mjs +7 -7
  363. package/fesm2022/primeng-toolbar.mjs +7 -7
  364. package/fesm2022/primeng-tooltip.mjs +7 -7
  365. package/fesm2022/primeng-tree.mjs +15 -10
  366. package/fesm2022/primeng-tree.mjs.map +1 -1
  367. package/fesm2022/primeng-treeselect.mjs +18 -15
  368. package/fesm2022/primeng-treeselect.mjs.map +1 -1
  369. package/fesm2022/primeng-treetable.mjs +55 -55
  370. package/fesm2022/primeng-tristatecheckbox.mjs +7 -7
  371. package/fesm2022/primeng-virtualscroller.mjs +7 -7
  372. package/inputnumber/inputnumber.interface.d.ts +1 -1
  373. package/inputotp/index.d.ts +5 -0
  374. package/inputotp/inputotp.d.ts +115 -0
  375. package/inputotp/inputotp.interface.d.ts +65 -0
  376. package/inputotp/public_api.d.ts +2 -0
  377. package/menubar/menubar.d.ts +1 -0
  378. package/messages/messages.d.ts +7 -1
  379. package/package.json +77 -65
  380. package/picklist/picklist.d.ts +2 -3
  381. package/resources/components/inputotp/inputotp.css +3 -0
  382. package/resources/components/stepper/stepper.css +9 -0
  383. package/resources/themes/arya-blue/theme.css +395 -439
  384. package/resources/themes/arya-green/theme.css +395 -439
  385. package/resources/themes/arya-orange/theme.css +395 -439
  386. package/resources/themes/arya-purple/theme.css +395 -439
  387. package/resources/themes/bootstrap4-dark-blue/theme.css +395 -440
  388. package/resources/themes/bootstrap4-dark-purple/theme.css +395 -440
  389. package/resources/themes/bootstrap4-light-blue/theme.css +395 -440
  390. package/resources/themes/bootstrap4-light-purple/theme.css +395 -440
  391. package/resources/themes/fluent-light/theme.css +400 -466
  392. package/resources/themes/lara-dark-blue/theme.css +397 -455
  393. package/resources/themes/lara-dark-indigo/theme.css +397 -455
  394. package/resources/themes/lara-dark-purple/theme.css +397 -455
  395. package/resources/themes/lara-dark-teal/theme.css +397 -455
  396. package/resources/themes/lara-light-blue/theme.css +405 -460
  397. package/resources/themes/lara-light-indigo/theme.css +405 -460
  398. package/resources/themes/lara-light-purple/theme.css +405 -460
  399. package/resources/themes/lara-light-teal/theme.css +405 -460
  400. package/resources/themes/luna-amber/theme.css +408 -453
  401. package/resources/themes/luna-blue/theme.css +408 -453
  402. package/resources/themes/luna-green/theme.css +408 -453
  403. package/resources/themes/luna-pink/theme.css +408 -453
  404. package/resources/themes/md-dark-deeppurple/theme.css +555 -698
  405. package/resources/themes/md-dark-indigo/theme.css +555 -698
  406. package/resources/themes/md-light-deeppurple/theme.css +416 -559
  407. package/resources/themes/md-light-indigo/theme.css +416 -559
  408. package/resources/themes/mdc-dark-deeppurple/theme.css +555 -698
  409. package/resources/themes/mdc-dark-indigo/theme.css +555 -698
  410. package/resources/themes/mdc-light-deeppurple/theme.css +416 -559
  411. package/resources/themes/mdc-light-indigo/theme.css +416 -559
  412. package/resources/themes/mira/theme.css +402 -477
  413. package/resources/themes/nano/theme.css +395 -437
  414. package/resources/themes/nova/theme.css +395 -441
  415. package/resources/themes/nova-accent/theme.css +395 -438
  416. package/resources/themes/nova-alt/theme.css +395 -441
  417. package/resources/themes/rhea/theme.css +395 -438
  418. package/resources/themes/saga-blue/theme.css +395 -439
  419. package/resources/themes/saga-green/theme.css +395 -439
  420. package/resources/themes/saga-orange/theme.css +395 -439
  421. package/resources/themes/saga-purple/theme.css +395 -439
  422. package/resources/themes/soho-dark/theme.css +426 -473
  423. package/resources/themes/soho-light/theme.css +400 -449
  424. package/resources/themes/tailwind-light/theme.css +425 -482
  425. package/resources/themes/vela-blue/theme.css +395 -439
  426. package/resources/themes/vela-green/theme.css +395 -439
  427. package/resources/themes/vela-orange/theme.css +395 -439
  428. package/resources/themes/vela-purple/theme.css +395 -439
  429. package/resources/themes/viva-dark/theme.css +400 -463
  430. package/resources/themes/viva-light/theme.css +400 -463
  431. package/stepper/index.d.ts +5 -0
  432. package/stepper/public_api.d.ts +2 -0
  433. package/stepper/stepper.d.ts +125 -0
  434. package/stepper/stepper.interface.d.ts +26 -0
  435. package/table/table.d.ts +8 -2
  436. package/tieredmenu/tieredmenu.d.ts +1 -0
@@ -0,0 +1,685 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, Input, NgModule, Output, ViewEncapsulation } from '@angular/core';
3
+ import { PrimeTemplate, SharedModule } from 'primeng/api';
4
+ import { UniqueComponentId } from 'primeng/utils';
5
+ import { animate, state, style, transition, trigger } from '@angular/animations';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common";
8
+ export class StepperHeader {
9
+ id;
10
+ template;
11
+ stepperPanel;
12
+ index;
13
+ disabled;
14
+ active;
15
+ highlighted;
16
+ getStepProp;
17
+ ariaControls;
18
+ onClick = new EventEmitter();
19
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: StepperHeader, deps: [], target: i0.ɵɵFactoryTarget.Component });
20
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: StepperHeader, selector: "p-stepperHeader", inputs: { id: "id", template: "template", stepperPanel: "stepperPanel", index: "index", disabled: "disabled", active: "active", highlighted: "highlighted", getStepProp: "getStepProp", ariaControls: "ariaControls" }, outputs: { onClick: "onClick" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
21
+ <ng-container *ngIf="template; else buttonRef">
22
+ <ng-container
23
+ *ngTemplateOutlet="
24
+ template;
25
+ context: {
26
+ index: index,
27
+ active: active,
28
+ highlighted: highlighted,
29
+ class: 'p-stepper-action',
30
+ headerClass: 'p-stepper-action',
31
+ numberClass: 'p-stepper-number',
32
+ titleClass: 'p-stepper-title',
33
+ onClick: onClick
34
+ }
35
+ "
36
+ ></ng-container>
37
+ </ng-container>
38
+ <ng-template #buttonRef>
39
+ <p-button [id]="id" class="p-stepper-action" role="tab" [tabindex]="disabled ? -1 : undefined" [aria-controls]="ariaControls" (click)="onClick.emit($event, index)">
40
+ <span class="p-stepper-number">{{ index + 1 }}</span>
41
+ <span class="p-stepper-title">{{ getStepProp }}</span>
42
+ </p-button>
43
+ </ng-template>
44
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
45
+ }
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: StepperHeader, decorators: [{
47
+ type: Component,
48
+ args: [{
49
+ selector: 'p-stepperHeader',
50
+ template: `
51
+ <ng-container *ngIf="template; else buttonRef">
52
+ <ng-container
53
+ *ngTemplateOutlet="
54
+ template;
55
+ context: {
56
+ index: index,
57
+ active: active,
58
+ highlighted: highlighted,
59
+ class: 'p-stepper-action',
60
+ headerClass: 'p-stepper-action',
61
+ numberClass: 'p-stepper-number',
62
+ titleClass: 'p-stepper-title',
63
+ onClick: onClick
64
+ }
65
+ "
66
+ ></ng-container>
67
+ </ng-container>
68
+ <ng-template #buttonRef>
69
+ <p-button [id]="id" class="p-stepper-action" role="tab" [tabindex]="disabled ? -1 : undefined" [aria-controls]="ariaControls" (click)="onClick.emit($event, index)">
70
+ <span class="p-stepper-number">{{ index + 1 }}</span>
71
+ <span class="p-stepper-title">{{ getStepProp }}</span>
72
+ </p-button>
73
+ </ng-template>
74
+ `,
75
+ host: {
76
+ class: 'p-element'
77
+ }
78
+ }]
79
+ }], propDecorators: { id: [{
80
+ type: Input
81
+ }], template: [{
82
+ type: Input
83
+ }], stepperPanel: [{
84
+ type: Input
85
+ }], index: [{
86
+ type: Input
87
+ }], disabled: [{
88
+ type: Input
89
+ }], active: [{
90
+ type: Input
91
+ }], highlighted: [{
92
+ type: Input
93
+ }], getStepProp: [{
94
+ type: Input
95
+ }], ariaControls: [{
96
+ type: Input
97
+ }], onClick: [{
98
+ type: Output
99
+ }] } });
100
+ export class StepperSeparator {
101
+ template;
102
+ separatorClass;
103
+ stepperPanel;
104
+ index;
105
+ active;
106
+ highlighted;
107
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: StepperSeparator, deps: [], target: i0.ɵɵFactoryTarget.Component });
108
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: StepperSeparator, selector: "p-stepperSeparator", inputs: { template: "template", separatorClass: "separatorClass", stepperPanel: "stepperPanel", index: "index", active: "active", highlighted: "highlighted" }, host: { classAttribute: "p-stepper-separator" }, ngImport: i0, template: `
109
+ <ng-container *ngIf="template; else span">
110
+ <ng-container *ngTemplateOutlet="template; context: { index: index, active: active, highlighted: highlighted, class: separatorClass }"></ng-container>
111
+ </ng-container>
112
+ <ng-template #span>
113
+ <span [class]="separatorClass" aria-hidden="true"></span>
114
+ </ng-template>
115
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
116
+ }
117
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: StepperSeparator, decorators: [{
118
+ type: Component,
119
+ args: [{
120
+ selector: 'p-stepperSeparator',
121
+ template: `
122
+ <ng-container *ngIf="template; else span">
123
+ <ng-container *ngTemplateOutlet="template; context: { index: index, active: active, highlighted: highlighted, class: separatorClass }"></ng-container>
124
+ </ng-container>
125
+ <ng-template #span>
126
+ <span [class]="separatorClass" aria-hidden="true"></span>
127
+ </ng-template>
128
+ `,
129
+ host: {
130
+ class: 'p-stepper-separator'
131
+ }
132
+ }]
133
+ }], propDecorators: { template: [{
134
+ type: Input
135
+ }], separatorClass: [{
136
+ type: Input
137
+ }], stepperPanel: [{
138
+ type: Input
139
+ }], index: [{
140
+ type: Input
141
+ }], active: [{
142
+ type: Input
143
+ }], highlighted: [{
144
+ type: Input
145
+ }] } });
146
+ export class StepperContent {
147
+ id;
148
+ orientation;
149
+ template;
150
+ ariaLabelledby;
151
+ stepperPanel;
152
+ index;
153
+ active;
154
+ highlighted;
155
+ onClick = new EventEmitter();
156
+ prevCallback = new EventEmitter();
157
+ nextCallback = new EventEmitter();
158
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: StepperContent, deps: [], target: i0.ɵɵFactoryTarget.Component });
159
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: StepperContent, selector: "p-stepperContent", inputs: { id: "id", orientation: "orientation", template: "template", ariaLabelledby: "ariaLabelledby", stepperPanel: "stepperPanel", index: "index", active: "active", highlighted: "highlighted" }, outputs: { onClick: "onClick", prevCallback: "prevCallback", nextCallback: "nextCallback" }, host: { properties: { "class.p-stepper-content": "true", "class.p-element": "true", "class.p-toggleable-content": "orientation === 'vertical'" } }, ngImport: i0, template: ` <div [id]="id" role="tabpanel" data-pc-name="stepperpanel" [attr.data-pc-index]="index" [attr.data-p-active]="active" [attr.aria-labelledby]="ariaLabelledby">
160
+ <ng-container *ngIf="template">
161
+ <ng-container *ngTemplateOutlet="template; context: { index: index, active: active, highlighted: highlighted, onClick: onClick, prevCallback: prevCallback, nextCallback: nextCallback }"></ng-container>
162
+ </ng-container>
163
+ <ng-template *ngIf="!template">
164
+ <ng-container *ngIf="stepperPanel">
165
+ <ng-container *ngTemplateOutlet="stepperPanel"></ng-container>
166
+ </ng-container>
167
+ </ng-template>
168
+ </div>`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
169
+ }
170
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: StepperContent, decorators: [{
171
+ type: Component,
172
+ args: [{
173
+ selector: 'p-stepperContent',
174
+ template: ` <div [id]="id" role="tabpanel" data-pc-name="stepperpanel" [attr.data-pc-index]="index" [attr.data-p-active]="active" [attr.aria-labelledby]="ariaLabelledby">
175
+ <ng-container *ngIf="template">
176
+ <ng-container *ngTemplateOutlet="template; context: { index: index, active: active, highlighted: highlighted, onClick: onClick, prevCallback: prevCallback, nextCallback: nextCallback }"></ng-container>
177
+ </ng-container>
178
+ <ng-template *ngIf="!template">
179
+ <ng-container *ngIf="stepperPanel">
180
+ <ng-container *ngTemplateOutlet="stepperPanel"></ng-container>
181
+ </ng-container>
182
+ </ng-template>
183
+ </div>`,
184
+ host: {
185
+ '[class.p-stepper-content]': 'true',
186
+ '[class.p-element]': 'true',
187
+ '[class.p-toggleable-content]': "orientation === 'vertical'"
188
+ }
189
+ }]
190
+ }], propDecorators: { id: [{
191
+ type: Input
192
+ }], orientation: [{
193
+ type: Input
194
+ }], template: [{
195
+ type: Input
196
+ }], ariaLabelledby: [{
197
+ type: Input
198
+ }], stepperPanel: [{
199
+ type: Input
200
+ }], index: [{
201
+ type: Input
202
+ }], active: [{
203
+ type: Input
204
+ }], highlighted: [{
205
+ type: Input
206
+ }], onClick: [{
207
+ type: Output
208
+ }], prevCallback: [{
209
+ type: Output
210
+ }], nextCallback: [{
211
+ type: Output
212
+ }] } });
213
+ /**
214
+ * StepperPanel is a helper component for Stepper component.
215
+ * @group Components
216
+ */
217
+ export class StepperPanel {
218
+ /**
219
+ * Orientation of tab headers.
220
+ * @group Props
221
+ */
222
+ header;
223
+ templates;
224
+ headerTemplate;
225
+ startTemplate;
226
+ contentTemplate;
227
+ separatorTemplate;
228
+ endTemplate;
229
+ ngAfterContentInit() {
230
+ this.templates.forEach((item) => {
231
+ switch (item.getType()) {
232
+ case 'header':
233
+ this.headerTemplate = item.template;
234
+ break;
235
+ case 'content':
236
+ this.contentTemplate = item.template;
237
+ break;
238
+ case 'separator':
239
+ this.separatorTemplate = item.template;
240
+ break;
241
+ }
242
+ });
243
+ }
244
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: StepperPanel, deps: [], target: i0.ɵɵFactoryTarget.Component });
245
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: StepperPanel, selector: "p-stepperPanel", inputs: { header: "header" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: ` <ng-content></ng-content> `, isInline: true });
246
+ }
247
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: StepperPanel, decorators: [{
248
+ type: Component,
249
+ args: [{
250
+ selector: 'p-stepperPanel',
251
+ template: ` <ng-content></ng-content> `,
252
+ host: {
253
+ class: 'p-element'
254
+ }
255
+ }]
256
+ }], propDecorators: { header: [{
257
+ type: Input
258
+ }], templates: [{
259
+ type: ContentChildren,
260
+ args: [PrimeTemplate]
261
+ }] } });
262
+ /**
263
+ * The Stepper component displays a wizard-like workflow by guiding users through the multi-step progression.
264
+ * @group Components
265
+ */
266
+ export class Stepper {
267
+ /**
268
+ * Active step index of stepper.
269
+ * @group Props
270
+ */
271
+ activeStep = 0;
272
+ /**
273
+ * Orientation of the stepper.
274
+ * @group Props
275
+ */
276
+ orientation = 'horizontal';
277
+ /**
278
+ * Whether the steps are clickable or not.
279
+ * @group Props
280
+ */
281
+ linear = false;
282
+ /**
283
+ * Transition options of the animation.
284
+ * @group Props
285
+ */
286
+ transitionOptions = '400ms cubic-bezier(0.86, 0, 0.07, 1)';
287
+ stepperPanels;
288
+ templates;
289
+ onClick = new EventEmitter();
290
+ /**
291
+ * Emitted when the value changes.
292
+ * @param {ActiveStepChangeEvent} event - custom change event.
293
+ * @group Emits
294
+ */
295
+ activeStepChange = new EventEmitter();
296
+ headerTemplate;
297
+ startTemplate;
298
+ separatorTemplate;
299
+ endTemplate;
300
+ id = UniqueComponentId();
301
+ panels;
302
+ isStepActive(index) {
303
+ return this.activeStep === index;
304
+ }
305
+ getStepProp(step) {
306
+ if (step?.header) {
307
+ return step.header;
308
+ }
309
+ if (step?.content) {
310
+ return step.content;
311
+ }
312
+ return undefined;
313
+ }
314
+ getStepKey(step, index) {
315
+ return this.getStepProp(step) || index;
316
+ }
317
+ getStepHeaderActionId(index) {
318
+ return `${this.id}_${index}_header_action`;
319
+ }
320
+ getStepContentId(index) {
321
+ return `${this.id}_${index}_content`;
322
+ }
323
+ updateActiveStep(event, index) {
324
+ this.activeStep = index;
325
+ this.activeStepChange.emit(this.activeStep);
326
+ }
327
+ onItemClick(event, index) {
328
+ if (this.linear) {
329
+ event.preventDefault();
330
+ return;
331
+ }
332
+ if (index !== this.activeStep) {
333
+ this.updateActiveStep(event, index);
334
+ }
335
+ }
336
+ isItemDisabled(index) {
337
+ return this.linear && !this.isStepActive(index);
338
+ }
339
+ prevCallback(event, index) {
340
+ if (index !== 0) {
341
+ this.updateActiveStep(event, index - 1);
342
+ }
343
+ }
344
+ nextCallback(event, index) {
345
+ if (index !== this.stepperPanels.length - 1) {
346
+ this.updateActiveStep(event, index + 1);
347
+ }
348
+ }
349
+ trackByFn(index) {
350
+ return index;
351
+ }
352
+ ngAfterContentInit() {
353
+ this.panels = this.stepperPanels.toArray();
354
+ this.templates.forEach((item) => {
355
+ switch (item.getType()) {
356
+ case 'start':
357
+ this.startTemplate = item.template;
358
+ break;
359
+ case 'end':
360
+ this.endTemplate = item.template;
361
+ break;
362
+ default:
363
+ break;
364
+ }
365
+ });
366
+ }
367
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: Stepper, deps: [], target: i0.ɵɵFactoryTarget.Component });
368
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: Stepper, selector: "p-stepper", inputs: { activeStep: "activeStep", orientation: "orientation", linear: "linear", transitionOptions: "transitionOptions" }, outputs: { onClick: "onClick", activeStepChange: "activeStepChange" }, host: { properties: { "class.p-stepper": "true", "class.p-component": "true", "class.p-stepper-vertical": "orientation === 'vertical'" } }, queries: [{ propertyName: "stepperPanels", predicate: StepperPanel }, { propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
369
+ <div role="tablist">
370
+ <ng-container *ngIf="startTemplate">
371
+ <ng-container *ngTemplateOutlet="startTemplate"></ng-container>
372
+ </ng-container>
373
+ <ng-container *ngIf="orientation === 'horizontal'; else vertical">
374
+ <ul class="p-stepper-nav">
375
+ <ng-template ngFor let-step [ngForOf]="panels" let-index="index" [ngForTrackBy]="trackByFn">
376
+ <li
377
+ [key]="getStepKey(step, index)"
378
+ class="p-stepper-header"
379
+ [ngClass]="{
380
+ 'p-highlight': isStepActive(index),
381
+ 'p-disabled': isItemDisabled(index)
382
+ }"
383
+ [attr.aria-current]="isStepActive(index) ? 'step' : undefined"
384
+ role="presentation"
385
+ [data-pc-name]="stepperPanel"
386
+ [data-p-highlight]="isStepActive(index)"
387
+ [data-p-disabled]="isItemDisabled(index)"
388
+ [data-pc-index]="index"
389
+ [data-p-active]="isStepActive(index)"
390
+ >
391
+ <p-stepperHeader
392
+ [id]="getStepHeaderActionId(index)"
393
+ [template]="step.headerTemplate"
394
+ [stepperPanel]="step"
395
+ [getStepProp]="getStepProp(step, 'header')"
396
+ [index]="index"
397
+ [disabled]="isItemDisabled(index)"
398
+ [active]="isStepActive(index)"
399
+ [highlighted]="index < activeStep"
400
+ [class]="'p-stepper-action'"
401
+ [aria-controls]="getStepContentId(index)"
402
+ (onClick)="onItemClick($event, index)"
403
+ ></p-stepperHeader>
404
+
405
+ <ng-container *ngIf="index !== stepperPanels.length - 1">
406
+ <p-stepperSeparator [template]="step.separatorTemplate" [separatorClass]="'p-stepper-separator'" [stepperPanel]="step" [index]="index" [active]="isStepActive(index)" [highlighted]="index < activeStep" />
407
+ </ng-container>
408
+ </li>
409
+ </ng-template>
410
+ </ul>
411
+ <div class="p-stepper-panels">
412
+ <ng-template ngFor let-step [ngForOf]="panels" let-index="index" [ngForTrackBy]="trackByFn">
413
+ <ng-container *ngIf="isStepActive(index)">
414
+ <p-stepperContent
415
+ [id]="getStepContentId(index)"
416
+ [template]="step.contentTemplate"
417
+ [orientation]="orientation"
418
+ [stepperPanel]="step"
419
+ [index]="index"
420
+ [active]="isStepActive(index)"
421
+ [highlighted]="index < activeStep"
422
+ [ariaLabelledby]="getStepHeaderActionId(index)"
423
+ (onClick)="onItemClick($event, index)"
424
+ (nextCallback)="nextCallback($event, index)"
425
+ (prevCallback)="prevCallback($event, index)"
426
+ />
427
+ </ng-container>
428
+ </ng-template>
429
+ </div>
430
+ </ng-container>
431
+ <ng-template #vertical>
432
+ <ng-template ngFor let-step [ngForOf]="panels" let-index="index" [ngForTrackBy]="trackByFn">
433
+ <div
434
+ [key]="getStepKey(step, index)"
435
+ class="p-stepper-panel"
436
+ [ngClass]="{
437
+ 'p-stepper-panel-active': orientation === 'vertical' && isStepActive(index)
438
+ }"
439
+ [attr.aria-current]="isStepActive(index) ? 'step' : undefined"
440
+ [data-pc-name]="'stepperpanel'"
441
+ [data-p-highlight]="isStepActive(index)"
442
+ [data-p-disabled]="isItemDisabled(index)"
443
+ [data-pc-index]="index"
444
+ [data-p-active]="isStepActive(index)"
445
+ >
446
+ <div
447
+ class="p-stepper-header "
448
+ [ngClass]="{
449
+ 'p-highlight': isStepActive(index),
450
+ 'p-disabled': isItemDisabled(index)
451
+ }"
452
+ >
453
+ <p-stepperHeader
454
+ [id]="getStepHeaderActionId(index)"
455
+ [template]="step.headerTemplate"
456
+ [stepperPanel]="step"
457
+ [getStepProp]="getStepProp(step, 'header')"
458
+ [index]="index"
459
+ [disabled]="isItemDisabled(index)"
460
+ [active]="isStepActive(index)"
461
+ [highlighted]="index < activeStep"
462
+ [class]="'p-stepper-action'"
463
+ [aria-controls]="getStepContentId(index)"
464
+ (onClick)="onItemClick($event, index)"
465
+ ></p-stepperHeader>
466
+ </div>
467
+
468
+ <div class="p-stepper-toggleable-content" [@tabContent]="isStepActive(index) ? { value: 'visible', params: { transitionParams: transitionOptions } } : { value: 'hidden', params: { transitionParams: transitionOptions } }">
469
+ <ng-container *ngIf="index !== stepperPanels.length - 1">
470
+ <p-stepperSeparator [template]="step.separatorTemplate" [separatorClass]="'p-stepper-separator'" [stepperPanel]="step" [index]="index" [active]="isStepActive(index)" [highlighted]="index < activeStep" />
471
+ </ng-container>
472
+ <p-stepperContent
473
+ [id]="getStepContentId(index)"
474
+ [template]="step.contentTemplate"
475
+ [orientation]="orientation"
476
+ [stepperPanel]="step"
477
+ [index]="index"
478
+ [active]="isStepActive(index)"
479
+ [highlighted]="index < activeStep"
480
+ [ariaLabelledby]="getStepHeaderActionId(index)"
481
+ (onClick)="onItemClick($event, index)"
482
+ (nextCallback)="nextCallback($event, index)"
483
+ (prevCallback)="prevCallback($event, index)"
484
+ />
485
+ </div>
486
+ </div>
487
+ </ng-template>
488
+ </ng-template>
489
+ <ng-container *ngIf="endTemplate">
490
+ <ng-container *ngTemplateOutlet="endTemplate"></ng-container>
491
+ </ng-container>
492
+ </div>
493
+ `, isInline: true, styles: ["@layer primeng{.p-stepper-vertical .p-stepper-panel>.p-stepper-toggleable-content{overflow:hidden}.p-stepper-vertical .p-stepper-panel-active>.p-stepper-toggleable-content:not(.ng-animating){overflow:inherit}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: StepperContent, selector: "p-stepperContent", inputs: ["id", "orientation", "template", "ariaLabelledby", "stepperPanel", "index", "active", "highlighted"], outputs: ["onClick", "prevCallback", "nextCallback"] }, { kind: "component", type: StepperHeader, selector: "p-stepperHeader", inputs: ["id", "template", "stepperPanel", "index", "disabled", "active", "highlighted", "getStepProp", "ariaControls"], outputs: ["onClick"] }, { kind: "component", type: StepperSeparator, selector: "p-stepperSeparator", inputs: ["template", "separatorClass", "stepperPanel", "index", "active", "highlighted"] }], animations: [
494
+ trigger('tabContent', [
495
+ state('hidden', style({
496
+ height: '0',
497
+ visibility: 'hidden'
498
+ })),
499
+ state('visible', style({
500
+ height: '*',
501
+ visibility: 'visible'
502
+ })),
503
+ transition('visible <=> hidden', [animate('250ms cubic-bezier(0.86, 0, 0.07, 1)')]),
504
+ transition('void => *', animate(0))
505
+ ])
506
+ ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
507
+ }
508
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: Stepper, decorators: [{
509
+ type: Component,
510
+ args: [{ selector: 'p-stepper', template: `
511
+ <div role="tablist">
512
+ <ng-container *ngIf="startTemplate">
513
+ <ng-container *ngTemplateOutlet="startTemplate"></ng-container>
514
+ </ng-container>
515
+ <ng-container *ngIf="orientation === 'horizontal'; else vertical">
516
+ <ul class="p-stepper-nav">
517
+ <ng-template ngFor let-step [ngForOf]="panels" let-index="index" [ngForTrackBy]="trackByFn">
518
+ <li
519
+ [key]="getStepKey(step, index)"
520
+ class="p-stepper-header"
521
+ [ngClass]="{
522
+ 'p-highlight': isStepActive(index),
523
+ 'p-disabled': isItemDisabled(index)
524
+ }"
525
+ [attr.aria-current]="isStepActive(index) ? 'step' : undefined"
526
+ role="presentation"
527
+ [data-pc-name]="stepperPanel"
528
+ [data-p-highlight]="isStepActive(index)"
529
+ [data-p-disabled]="isItemDisabled(index)"
530
+ [data-pc-index]="index"
531
+ [data-p-active]="isStepActive(index)"
532
+ >
533
+ <p-stepperHeader
534
+ [id]="getStepHeaderActionId(index)"
535
+ [template]="step.headerTemplate"
536
+ [stepperPanel]="step"
537
+ [getStepProp]="getStepProp(step, 'header')"
538
+ [index]="index"
539
+ [disabled]="isItemDisabled(index)"
540
+ [active]="isStepActive(index)"
541
+ [highlighted]="index < activeStep"
542
+ [class]="'p-stepper-action'"
543
+ [aria-controls]="getStepContentId(index)"
544
+ (onClick)="onItemClick($event, index)"
545
+ ></p-stepperHeader>
546
+
547
+ <ng-container *ngIf="index !== stepperPanels.length - 1">
548
+ <p-stepperSeparator [template]="step.separatorTemplate" [separatorClass]="'p-stepper-separator'" [stepperPanel]="step" [index]="index" [active]="isStepActive(index)" [highlighted]="index < activeStep" />
549
+ </ng-container>
550
+ </li>
551
+ </ng-template>
552
+ </ul>
553
+ <div class="p-stepper-panels">
554
+ <ng-template ngFor let-step [ngForOf]="panels" let-index="index" [ngForTrackBy]="trackByFn">
555
+ <ng-container *ngIf="isStepActive(index)">
556
+ <p-stepperContent
557
+ [id]="getStepContentId(index)"
558
+ [template]="step.contentTemplate"
559
+ [orientation]="orientation"
560
+ [stepperPanel]="step"
561
+ [index]="index"
562
+ [active]="isStepActive(index)"
563
+ [highlighted]="index < activeStep"
564
+ [ariaLabelledby]="getStepHeaderActionId(index)"
565
+ (onClick)="onItemClick($event, index)"
566
+ (nextCallback)="nextCallback($event, index)"
567
+ (prevCallback)="prevCallback($event, index)"
568
+ />
569
+ </ng-container>
570
+ </ng-template>
571
+ </div>
572
+ </ng-container>
573
+ <ng-template #vertical>
574
+ <ng-template ngFor let-step [ngForOf]="panels" let-index="index" [ngForTrackBy]="trackByFn">
575
+ <div
576
+ [key]="getStepKey(step, index)"
577
+ class="p-stepper-panel"
578
+ [ngClass]="{
579
+ 'p-stepper-panel-active': orientation === 'vertical' && isStepActive(index)
580
+ }"
581
+ [attr.aria-current]="isStepActive(index) ? 'step' : undefined"
582
+ [data-pc-name]="'stepperpanel'"
583
+ [data-p-highlight]="isStepActive(index)"
584
+ [data-p-disabled]="isItemDisabled(index)"
585
+ [data-pc-index]="index"
586
+ [data-p-active]="isStepActive(index)"
587
+ >
588
+ <div
589
+ class="p-stepper-header "
590
+ [ngClass]="{
591
+ 'p-highlight': isStepActive(index),
592
+ 'p-disabled': isItemDisabled(index)
593
+ }"
594
+ >
595
+ <p-stepperHeader
596
+ [id]="getStepHeaderActionId(index)"
597
+ [template]="step.headerTemplate"
598
+ [stepperPanel]="step"
599
+ [getStepProp]="getStepProp(step, 'header')"
600
+ [index]="index"
601
+ [disabled]="isItemDisabled(index)"
602
+ [active]="isStepActive(index)"
603
+ [highlighted]="index < activeStep"
604
+ [class]="'p-stepper-action'"
605
+ [aria-controls]="getStepContentId(index)"
606
+ (onClick)="onItemClick($event, index)"
607
+ ></p-stepperHeader>
608
+ </div>
609
+
610
+ <div class="p-stepper-toggleable-content" [@tabContent]="isStepActive(index) ? { value: 'visible', params: { transitionParams: transitionOptions } } : { value: 'hidden', params: { transitionParams: transitionOptions } }">
611
+ <ng-container *ngIf="index !== stepperPanels.length - 1">
612
+ <p-stepperSeparator [template]="step.separatorTemplate" [separatorClass]="'p-stepper-separator'" [stepperPanel]="step" [index]="index" [active]="isStepActive(index)" [highlighted]="index < activeStep" />
613
+ </ng-container>
614
+ <p-stepperContent
615
+ [id]="getStepContentId(index)"
616
+ [template]="step.contentTemplate"
617
+ [orientation]="orientation"
618
+ [stepperPanel]="step"
619
+ [index]="index"
620
+ [active]="isStepActive(index)"
621
+ [highlighted]="index < activeStep"
622
+ [ariaLabelledby]="getStepHeaderActionId(index)"
623
+ (onClick)="onItemClick($event, index)"
624
+ (nextCallback)="nextCallback($event, index)"
625
+ (prevCallback)="prevCallback($event, index)"
626
+ />
627
+ </div>
628
+ </div>
629
+ </ng-template>
630
+ </ng-template>
631
+ <ng-container *ngIf="endTemplate">
632
+ <ng-container *ngTemplateOutlet="endTemplate"></ng-container>
633
+ </ng-container>
634
+ </div>
635
+ `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
636
+ '[class.p-stepper]': 'true',
637
+ '[class.p-component]': 'true',
638
+ '[class.p-stepper-vertical]': "orientation === 'vertical'"
639
+ }, animations: [
640
+ trigger('tabContent', [
641
+ state('hidden', style({
642
+ height: '0',
643
+ visibility: 'hidden'
644
+ })),
645
+ state('visible', style({
646
+ height: '*',
647
+ visibility: 'visible'
648
+ })),
649
+ transition('visible <=> hidden', [animate('250ms cubic-bezier(0.86, 0, 0.07, 1)')]),
650
+ transition('void => *', animate(0))
651
+ ])
652
+ ], styles: ["@layer primeng{.p-stepper-vertical .p-stepper-panel>.p-stepper-toggleable-content{overflow:hidden}.p-stepper-vertical .p-stepper-panel-active>.p-stepper-toggleable-content:not(.ng-animating){overflow:inherit}}\n"] }]
653
+ }], propDecorators: { activeStep: [{
654
+ type: Input
655
+ }], orientation: [{
656
+ type: Input
657
+ }], linear: [{
658
+ type: Input
659
+ }], transitionOptions: [{
660
+ type: Input
661
+ }], stepperPanels: [{
662
+ type: ContentChildren,
663
+ args: [StepperPanel]
664
+ }], templates: [{
665
+ type: ContentChildren,
666
+ args: [PrimeTemplate]
667
+ }], onClick: [{
668
+ type: Output
669
+ }], activeStepChange: [{
670
+ type: Output
671
+ }] } });
672
+ export class StepperModule {
673
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: StepperModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
674
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.1", ngImport: i0, type: StepperModule, declarations: [Stepper, StepperPanel, StepperPanel, StepperContent, StepperHeader, StepperSeparator], imports: [CommonModule, SharedModule], exports: [Stepper, StepperPanel, StepperContent, StepperHeader, StepperSeparator, SharedModule] });
675
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: StepperModule, imports: [CommonModule, SharedModule, SharedModule] });
676
+ }
677
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: StepperModule, decorators: [{
678
+ type: NgModule,
679
+ args: [{
680
+ imports: [CommonModule, SharedModule],
681
+ exports: [Stepper, StepperPanel, StepperContent, StepperHeader, StepperSeparator, SharedModule],
682
+ declarations: [Stepper, StepperPanel, StepperPanel, StepperContent, StepperHeader, StepperSeparator]
683
+ }]
684
+ }] });
685
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9zdGVwcGVyL3N0ZXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBb0IsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQTBCLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hMLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFpQ2pGLE1BQU0sT0FBTyxhQUFhO0lBQ2IsRUFBRSxDQUFxQjtJQUV2QixRQUFRLENBQStCO0lBRXZDLFlBQVksQ0FBZTtJQUUzQixLQUFLLENBQXFCO0lBRTFCLFFBQVEsQ0FBc0I7SUFFOUIsTUFBTSxDQUFzQjtJQUU1QixXQUFXLENBQXNCO0lBRWpDLFdBQVcsQ0FBcUI7SUFFaEMsWUFBWSxDQUFxQjtJQUVoQyxPQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQzt1R0FuQnBDLGFBQWE7MkZBQWIsYUFBYSx1VkE3Qlo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXdCVDs7MkZBS1EsYUFBYTtrQkEvQnpCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0F3QlQ7b0JBQ0QsSUFBSSxFQUFFO3dCQUNGLEtBQUssRUFBRSxXQUFXO3FCQUNyQjtpQkFDSjs4QkFFWSxFQUFF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IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgTmdNb2R1bGUsIE91dHB1dCwgUXVlcnlMaXN0LCBUZW1wbGF0ZVJlZiwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByaW1lVGVtcGxhdGUsIFNoYXJlZE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAncHJpbWVuZy90cy1oZWxwZXJzJztcbmltcG9ydCB7IFVuaXF1ZUNvbXBvbmVudElkIH0gZnJvbSAncHJpbWVuZy91dGlscyc7XG5pbXBvcnQgeyBhbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLXN0ZXBwZXJIZWFkZXInLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0ZW1wbGF0ZTsgZWxzZSBidXR0b25SZWZcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiBhY3RpdmUsXG4gICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHRlZDogaGlnaGxpZ2h0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ3Atc3RlcHBlci1hY3Rpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyQ2xhc3M6ICdwLXN0ZXBwZXItYWN0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckNsYXNzOiAncC1zdGVwcGVyLW51bWJlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZUNsYXNzOiAncC1zdGVwcGVyLXRpdGxlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IG9uQ2xpY2tcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2J1dHRvblJlZj5cbiAgICAgICAgICAgIDxwLWJ1dHRvbiBbaWRdPVwiaWRcIiBjbGFzcz1cInAtc3RlcHBlci1hY3Rpb25cIiByb2xlPVwidGFiXCIgW3RhYmluZGV4XT1cImRpc2FibGVkID8gLTEgOiB1bmRlZmluZWRcIiBbYXJpYS1jb250cm9sc109XCJhcmlhQ29udHJvbHNcIiAoY2xpY2spPVwib25DbGljay5lbWl0KCRldmVudCwgaW5kZXgpXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLXN0ZXBwZXItbnVtYmVyXCI+e3sgaW5kZXggKyAxIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1zdGVwcGVyLXRpdGxlXCI+e3sgZ2V0U3RlcFByb3AgfX08L3NwYW4+XG4gICAgICAgICAgICA8L3AtYnV0dG9uPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIGAsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFN0ZXBwZXJIZWFkZXIge1xuICAgIEBJbnB1dCgpIGlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBASW5wdXQoKSB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCgpIHN0ZXBwZXJQYW5lbDogU3RlcHBlclBhbmVsO1xuXG4gICAgQElucHV0KCkgaW5kZXg6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KCkgYWN0aXZlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KCkgaGlnaGxpZ2h0ZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgICBASW5wdXQoKSBnZXRTdGVwUHJvcDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KCkgYXJpYUNvbnRyb2xzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBAT3V0cHV0KCkgb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLXN0ZXBwZXJTZXBhcmF0b3InLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0ZW1wbGF0ZTsgZWxzZSBzcGFuXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGU7IGNvbnRleHQ6IHsgaW5kZXg6IGluZGV4LCBhY3RpdmU6IGFjdGl2ZSwgaGlnaGxpZ2h0ZWQ6IGhpZ2hsaWdodGVkLCBjbGFzczogc2VwYXJhdG9yQ2xhc3MgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNzcGFuPlxuICAgICAgICAgICAgPHNwYW4gW2NsYXNzXT1cInNlcGFyYXRvckNsYXNzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIGAsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ3Atc3RlcHBlci1zZXBhcmF0b3InXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBTdGVwcGVyU2VwYXJhdG9yIHtcbiAgICBASW5wdXQoKSB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCgpIHNlcGFyYXRvckNsYXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBASW5wdXQoKSBzdGVwcGVyUGFuZWw6IFN0ZXBwZXJQYW5lbDtcblxuICAgIEBJbnB1dCgpIGluZGV4OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBASW5wdXQoKSBhY3RpdmU6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgICBASW5wdXQoKSBoaWdobGlnaHRlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLXN0ZXBwZXJDb250ZW50JyxcbiAgICB0ZW1wbGF0ZTogYCA8ZGl2IFtpZF09XCJpZFwiIHJvbGU9XCJ0YWJwYW5lbFwiIGRhdGEtcGMtbmFtZT1cInN0ZXBwZXJwYW5lbFwiIFthdHRyLmRhdGEtcGMtaW5kZXhdPVwiaW5kZXhcIiBbYXR0ci5kYXRhLXAtYWN0aXZlXT1cImFjdGl2ZVwiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRieVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGVtcGxhdGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZTsgY29udGV4dDogeyBpbmRleDogaW5kZXgsIGFjdGl2ZTogYWN0aXZlLCBoaWdobGlnaHRlZDogaGlnaGxpZ2h0ZWQsIG9uQ2xpY2s6IG9uQ2xpY2ssIHByZXZDYWxsYmFjazogcHJldkNhbGxiYWNrLCBuZXh0Q2FsbGJhY2s6IG5leHRDYWxsYmFjayB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCIhdGVtcGxhdGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdGVwcGVyUGFuZWxcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3RlcHBlclBhbmVsXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5gLFxuXG4gICAgaG9zdDoge1xuICAgICAgICAnW2NsYXNzLnAtc3RlcHBlci1jb250ZW50XSc6ICd0cnVlJyxcbiAgICAgICAgJ1tjbGFzcy5wLWVsZW1lbnRdJzogJ3RydWUnLFxuICAgICAgICAnW2NsYXNzLnAtdG9nZ2xlYWJsZS1jb250ZW50XSc6IFwib3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCdcIlxuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgU3RlcHBlckNvbnRlbnQge1xuICAgIEBJbnB1dCgpIGlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBASW5wdXQoKSBvcmllbnRhdGlvbjogJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJztcblxuICAgIEBJbnB1dCgpIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KCkgYXJpYUxhYmVsbGVkYnk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCgpIHN0ZXBwZXJQYW5lbDogU3RlcHBlclBhbmVsO1xuXG4gICAgQElucHV0KCkgaW5kZXg6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCgpIGFjdGl2ZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCgpIGhpZ2hsaWdodGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gICAgQE91dHB1dCgpIG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBAT3V0cHV0KCkgcHJldkNhbGxiYWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgQE91dHB1dCgpIG5leHRDYWxsYmFjayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbn1cblxuLyoqXG4gKiBTdGVwcGVyUGFuZWwgaXMgYSBoZWxwZXIgY29tcG9uZW50IGZvciBTdGVwcGVyIGNvbXBvbmVudC5cbiAqIEBncm91cCBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1zdGVwcGVyUGFuZWwnLFxuICAgIHRlbXBsYXRlOiBgIDxuZy1jb250ZW50PjwvbmctY29udGVudD4gYCxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgU3RlcHBlclBhbmVsIHtcbiAgICAvKipcbiAgICAgKiBPcmllbnRhdGlvbiBvZiB0YWIgaGVhZGVycy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBoZWFkZXI6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oUHJpbWVUZW1wbGF0ZSkgdGVtcGxhdGVzOiBOdWxsYWJsZTxRdWVyeUxpc3Q8UHJpbWVUZW1wbGF0ZT4+O1xuXG4gICAgaGVhZGVyVGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgc3RhcnRUZW1wbGF0ZTogTnVsbGFibGU8VGVtcGxhdGVSZWY8YW55Pj47XG5cbiAgICBjb250ZW50VGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgc2VwYXJhdG9yVGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgZW5kVGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICAodGhpcy50ZW1wbGF0ZXMgYXMgUXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+KS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2ggKGl0ZW0uZ2V0VHlwZSgpKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnaGVhZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oZWFkZXJUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRlbnQnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3NlcGFyYXRvcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VwYXJhdG9yVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG4vKipcbiAqIFRoZSBTdGVwcGVyIGNvbXBvbmVudCBkaXNwbGF5cyBhIHdpemFyZC1saWtlIHdvcmtmbG93IGJ5IGd1aWRpbmcgdXNlcnMgdGhyb3VnaCB0aGUgbXVsdGktc3RlcCBwcm9ncmVzc2lvbi5cbiAqIEBncm91cCBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1zdGVwcGVyJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IHJvbGU9XCJ0YWJsaXN0XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RhcnRUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdGFydFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnOyBlbHNlIHZlcnRpY2FsXCI+XG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwicC1zdGVwcGVyLW5hdlwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LXN0ZXAgW25nRm9yT2ZdPVwicGFuZWxzXCIgbGV0LWluZGV4PVwiaW5kZXhcIiBbbmdGb3JUcmFja0J5XT1cInRyYWNrQnlGblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2tleV09XCJnZXRTdGVwS2V5KHN0ZXAsIGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLXN0ZXBwZXItaGVhZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwLWhpZ2hsaWdodCc6IGlzU3RlcEFjdGl2ZShpbmRleCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwLWRpc2FibGVkJzogaXNJdGVtRGlzYWJsZWQoaW5kZXgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XT1cImlzU3RlcEFjdGl2ZShpbmRleCkgPyAnc3RlcCcgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhLXBjLW5hbWVdPVwic3RlcHBlclBhbmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGF0YS1wLWhpZ2hsaWdodF09XCJpc1N0ZXBBY3RpdmUoaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGF0YS1wLWRpc2FibGVkXT1cImlzSXRlbURpc2FibGVkKGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGEtcGMtaW5kZXhdPVwiaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhLXAtYWN0aXZlXT1cImlzU3RlcEFjdGl2ZShpbmRleClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXN0ZXBwZXJIZWFkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImdldFN0ZXBIZWFkZXJBY3Rpb25JZChpbmRleClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGVtcGxhdGVdPVwic3RlcC5oZWFkZXJUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGVwcGVyUGFuZWxdPVwic3RlcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtnZXRTdGVwUHJvcF09XCJnZXRTdGVwUHJvcChzdGVwLCAnaGVhZGVyJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5kZXhdPVwiaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNJdGVtRGlzYWJsZWQoaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZV09XCJpc1N0ZXBBY3RpdmUoaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZ2hsaWdodGVkXT1cImluZGV4IDwgYWN0aXZlU3RlcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCIncC1zdGVwcGVyLWFjdGlvbidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJpYS1jb250cm9sc109XCJnZXRTdGVwQ29udGVudElkKGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cIm9uSXRlbUNsaWNrKCRldmVudCwgaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9wLXN0ZXBwZXJIZWFkZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW5kZXggIT09IHN0ZXBwZXJQYW5lbHMubGVuZ3RoIC0gMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1zdGVwcGVyU2VwYXJhdG9yIFt0ZW1wbGF0ZV09XCJzdGVwLnNlcGFyYXRvclRlbXBsYXRlXCIgW3NlcGFyYXRvckNsYXNzXT1cIidwLXN0ZXBwZXItc2VwYXJhdG9yJ1wiIFtzdGVwcGVyUGFuZWxdPVwic3RlcFwiIFtpbmRleF09XCJpbmRleFwiIFthY3RpdmVdPVwiaXNTdGVwQWN0aXZlKGluZGV4KVwiIFtoaWdobGlnaHRlZF09XCJpbmRleCA8IGFjdGl2ZVN0ZXBcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXN0ZXBwZXItcGFuZWxzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtc3RlcCBbbmdGb3JPZl09XCJwYW5lbHNcIiBsZXQtaW5kZXg9XCJpbmRleFwiIFtuZ0ZvclRyYWNrQnldPVwidHJhY2tCeUZuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNTdGVwQWN0aXZlKGluZGV4KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXN0ZXBwZXJDb250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJnZXRTdGVwQ29udGVudElkKGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZW1wbGF0ZV09XCJzdGVwLmNvbnRlbnRUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcmllbnRhdGlvbl09XCJvcmllbnRhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGVwcGVyUGFuZWxdPVwic3RlcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmRleF09XCJpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVdPVwiaXNTdGVwQWN0aXZlKGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWdobGlnaHRlZF09XCJpbmRleCA8IGFjdGl2ZVN0ZXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJpYUxhYmVsbGVkYnldPVwiZ2V0U3RlcEhlYWRlckFjdGlvbklkKGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cIm9uSXRlbUNsaWNrKCRldmVudCwgaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5leHRDYWxsYmFjayk9XCJuZXh0Q2FsbGJhY2soJGV2ZW50LCBpbmRleClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJldkNhbGxiYWNrKT1cInByZXZDYWxsYmFjaygkZXZlbnQsIGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3ZlcnRpY2FsPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtc3RlcCBbbmdGb3JPZl09XCJwYW5lbHNcIiBsZXQtaW5kZXg9XCJpbmRleFwiIFtuZ0ZvclRyYWNrQnldPVwidHJhY2tCeUZuXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtrZXldPVwiZ2V0U3RlcEtleShzdGVwLCBpbmRleClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLXN0ZXBwZXItcGFuZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwLXN0ZXBwZXItcGFuZWwtYWN0aXZlJzogb3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCcgJiYgaXNTdGVwQWN0aXZlKGluZGV4KVxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdPVwiaXNTdGVwQWN0aXZlKGluZGV4KSA/ICdzdGVwJyA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGF0YS1wYy1uYW1lXT1cIidzdGVwcGVycGFuZWwnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhLXAtaGlnaGxpZ2h0XT1cImlzU3RlcEFjdGl2ZShpbmRleClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGEtcC1kaXNhYmxlZF09XCJpc0l0ZW1EaXNhYmxlZChpbmRleClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGEtcGMtaW5kZXhdPVwiaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGEtcC1hY3RpdmVdPVwiaXNTdGVwQWN0aXZlKGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtc3RlcHBlci1oZWFkZXIgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwLWhpZ2hsaWdodCc6IGlzU3RlcEFjdGl2ZShpbmRleCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwLWRpc2FibGVkJzogaXNJdGVtRGlzYWJsZWQoaW5kZXgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtc3RlcHBlckhlYWRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiZ2V0U3RlcEhlYWRlckFjdGlvbklkKGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZW1wbGF0ZV09XCJzdGVwLmhlYWRlclRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0ZXBwZXJQYW5lbF09XCJzdGVwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dldFN0ZXBQcm9wXT1cImdldFN0ZXBQcm9wKHN0ZXAsICdoZWFkZXInKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmRleF09XCJpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0l0ZW1EaXNhYmxlZChpbmRleClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlXT1cImlzU3RlcEFjdGl2ZShpbmRleClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlnaGxpZ2h0ZWRdPVwiaW5kZXggPCBhY3RpdmVTdGVwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIidwLXN0ZXBwZXItYWN0aW9uJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcmlhLWNvbnRyb2xzXT1cImdldFN0ZXBDb250ZW50SWQoaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwib25JdGVtQ2xpY2soJGV2ZW50LCBpbmRleClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3Atc3RlcHBlckhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1zdGVwcGVyLXRvZ2dsZWFibGUtY29udGVudFwiIFtAdGFiQ29udGVudF09XCJpc1N0ZXBBY3RpdmUoaW5kZXgpID8geyB2YWx1ZTogJ3Zpc2libGUnLCBwYXJhbXM6IHsgdHJhbnNpdGlvblBhcmFtczogdHJhbnNpdGlvbk9wdGlvbnMgfSB9IDogeyB2YWx1ZTogJ2hpZGRlbicsIHBhcmFtczogeyB0cmFuc2l0aW9uUGFyYW1zOiB0cmFuc2l0aW9uT3B0aW9ucyB9IH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW5kZXggIT09IHN0ZXBwZXJQYW5lbHMubGVuZ3RoIC0gMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1zdGVwcGVyU2VwYXJhdG9yIFt0ZW1wbGF0ZV09XCJzdGVwLnNlcGFyYXRvclRlbXBsYXRlXCIgW3NlcGFyYXRvckNsYXNzXT1cIidwLXN0ZXBwZXItc2VwYXJhdG9yJ1wiIFtzdGVwcGVyUGFuZWxdPVwic3RlcFwiIFtpbmRleF09XCJpbmRleFwiIFthY3RpdmVdPVwiaXNTdGVwQWN0aXZlKGluZGV4KVwiIFtoaWdobGlnaHRlZF09XCJpbmRleCA8IGFjdGl2ZVN0ZXBcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXN0ZXBwZXJDb250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJnZXRTdGVwQ29udGVudElkKGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZW1wbGF0ZV09XCJzdGVwLmNvbnRlbnRUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcmllbnRhdGlvbl09XCJvcmllbnRhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGVwcGVyUGFuZWxdPVwic3RlcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmRleF09XCJpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVdPVwiaXNTdGVwQWN0aXZlKGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWdobGlnaHRlZF09XCJpbmRleCA8IGFjdGl2ZVN0ZXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJpYUxhYmVsbGVkYnldPVwiZ2V0U3RlcEhlYWRlckFjdGlvbklkKGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cIm9uSXRlbUNsaWNrKCRldmVudCwgaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5leHRDYWxsYmFjayk9XCJuZXh0Q2FsbGJhY2soJGV2ZW50LCBpbmRleClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJldkNhbGxiYWNrKT1cInByZXZDYWxsYmFjaygkZXZlbnQsIGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbmRUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbmRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFsnLi9zdGVwcGVyLmNzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tjbGFzcy5wLXN0ZXBwZXJdJzogJ3RydWUnLFxuICAgICAgICAnW2NsYXNzLnAtY29tcG9uZW50XSc6ICd0cnVlJyxcbiAgICAgICAgJ1tjbGFzcy5wLXN0ZXBwZXItdmVydGljYWxdJzogXCJvcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJ1wiXG4gICAgfSxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ3RhYkNvbnRlbnQnLCBbXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICAnaGlkZGVuJyxcbiAgICAgICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzAnLFxuICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiAnaGlkZGVuJ1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhdGUoXG4gICAgICAgICAgICAgICAgJ3Zpc2libGUnLFxuICAgICAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnKicsXG4gICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6ICd2aXNpYmxlJ1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdHJhbnNpdGlvbigndmlzaWJsZSA8PT4gaGlkZGVuJywgW2FuaW1hdGUoJzI1MG1zIGN1YmljLWJlemllcigwLjg2LCAwLCAwLjA3LCAxKScpXSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCd2b2lkID0+IConLCBhbmltYXRlKDApKVxuICAgICAgICBdKVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgU3RlcHBlciBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICAgIC8qKlxuICAgICAqIEFjdGl2ZSBzdGVwIGluZGV4IG9mIHN0ZXBwZXIuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgYWN0aXZlU3RlcDogbnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbCA9IDA7XG4gICAgLyoqXG4gICAgICogT3JpZW50YXRpb24gb2YgdGhlIHN0ZXBwZXIuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgb3JpZW50YXRpb246ICd2ZXJ0aWNhbCcgfCAnaG9yaXpvbnRhbCcgPSAnaG9yaXpvbnRhbCc7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgc3RlcHMgYXJlIGNsaWNrYWJsZSBvciBub3QuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbGluZWFyOiBib29sZWFuID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogVHJhbnNpdGlvbiBvcHRpb25zIG9mIHRoZSBhbmltYXRpb24uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgdHJhbnNpdGlvbk9wdGlvbnM6IHN0cmluZyA9ICc0MDBtcyBjdWJpYy1iZXppZXIoMC44NiwgMCwgMC4wNywgMSknO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihTdGVwcGVyUGFuZWwpIHN0ZXBwZXJQYW5lbHM6IFF1ZXJ5TGlzdDxTdGVwcGVyUGFuZWw+IHwgdW5kZWZpbmVkO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihQcmltZVRlbXBsYXRlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxQcmltZVRlbXBsYXRlPiB8IHVuZGVmaW5lZDtcblxuICAgIEBPdXRwdXQoKSBvbkNsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzLlxuICAgICAqIEBwYXJhbSB7QWN0aXZlU3RlcENoYW5nZUV2ZW50fSBldmVudCAtIGN1c3RvbSBjaGFuZ2UgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIGFjdGl2ZVN0ZXBDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICBoZWFkZXJUZW1wbGF0ZTogTnVsbGFibGU8VGVtcGxhdGVSZWY8YW55Pj47XG5cbiAgICBzdGFydFRlbXBsYXRlOiBOdWxsYWJsZTxUZW1wbGF0ZVJlZjxhbnk+PjtcblxuICAgIHNlcGFyYXRvclRlbXBsYXRlOiBOdWxsYWJsZTxUZW1wbGF0ZVJlZjxhbnk+PjtcblxuICAgIGVuZFRlbXBsYXRlOiBOdWxsYWJsZTxUZW1wbGF0ZVJlZjxhbnk+PjtcblxuICAgIGlkOiBzdHJpbmcgPSBVbmlxdWVDb21wb25lbnRJZCgpO1xuXG4gICAgcGFuZWxzITogU3RlcHBlclBhbmVsW107XG5cbiAgICBpc1N0ZXBBY3RpdmUoaW5kZXg6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVTdGVwID09PSBpbmRleDtcbiAgICB9XG5cbiAgICBnZXRTdGVwUHJvcChzdGVwKSB7XG4gICAgICAgIGlmIChzdGVwPy5oZWFkZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBzdGVwLmhlYWRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGVwPy5jb250ZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gc3RlcC5jb250ZW50O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZ2V0U3RlcEtleShzdGVwLCBpbmRleCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRTdGVwUHJvcChzdGVwKSB8fCBpbmRleDtcbiAgICB9XG5cbiAgICBnZXRTdGVwSGVhZGVyQWN0aW9uSWQoaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuaWR9XyR7aW5kZXh9X2hlYWRlcl9hY3Rpb25gO1xuICAgIH1cblxuICAgIGdldFN0ZXBDb250ZW50SWQoaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuaWR9XyR7aW5kZXh9X2NvbnRlbnRgO1xuICAgIH1cblxuICAgIHVwZGF0ZUFjdGl2ZVN0ZXAoZXZlbnQsIGluZGV4KSB7XG4gICAgICAgIHRoaXMuYWN0aXZlU3RlcCA9IGluZGV4O1xuXG4gICAgICAgIHRoaXMuYWN0aXZlU3RlcENoYW5nZS5lbWl0KHRoaXMuYWN0aXZlU3RlcCk7XG4gICAgfVxuXG4gICAgb25JdGVtQ2xpY2soZXZlbnQsIGluZGV4KSB7XG4gICAgICAgIGlmICh0aGlzLmxpbmVhcikge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbmRleCAhPT0gdGhpcy5hY3RpdmVTdGVwKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUFjdGl2ZVN0ZXAoZXZlbnQsIGluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzSXRlbURpc2FibGVkKGluZGV4KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxpbmVhciAmJiAhdGhpcy5pc1N0ZXBBY3RpdmUoaW5kZXgpO1xuICAgIH1cblxuICAgIHByZXZDYWxsYmFjayhldmVudCwgaW5kZXgpIHtcbiAgICAgICAgaWYgKGluZGV4ICE9PSAwKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUFjdGl2ZVN0ZXAoZXZlbnQsIGluZGV4IC0gMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZXh0Q2FsbGJhY2soZXZlbnQsIGluZGV4KSB7XG4gICAgICAgIGlmIChpbmRleCAhPT0gdGhpcy5zdGVwcGVyUGFuZWxzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQWN0aXZlU3RlcChldmVudCwgaW5kZXggKyAxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRyYWNrQnlGbihpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy5wYW5lbHMgPSAodGhpcy5zdGVwcGVyUGFuZWxzIGFzIFF1ZXJ5TGlzdDxTdGVwcGVyUGFuZWw+KS50b0FycmF5KCk7XG4gICAgICAgICh0aGlzLnRlbXBsYXRlcyBhcyBRdWVyeUxpc3Q8UHJpbWVUZW1wbGF0ZT4pLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAoaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdzdGFydCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbmRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBTaGFyZWRNb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtTdGVwcGVyLCBTdGVwcGVyUGFuZWwsIFN0ZXBwZXJDb250ZW50LCBTdGVwcGVySGVhZGVyLCBTdGVwcGVyU2VwYXJhdG9yLCBTaGFyZWRNb2R1bGVdLFxuICAgIGRlY2xhcmF0aW9uczogW1N0ZXBwZXIsIFN0ZXBwZXJQYW5lbCwgU3RlcHBlclBhbmVsLCBTdGVwcGVyQ29udGVudCwgU3RlcHBlckhlYWRlciwgU3RlcHBlclNlcGFyYXRvcl1cbn0pXG5leHBvcnQgY2xhc3MgU3RlcHBlck1vZHVsZSB7fVxuIl19