primeng 18.0.0 → 18.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (318) hide show
  1. package/accordion/accordion.d.ts +7 -7
  2. package/autocomplete/autocomplete.d.ts +21 -8
  3. package/badge/badge.d.ts +1 -3
  4. package/basecomponent/basecomponent.d.ts +2 -5
  5. package/blockui/blockui.d.ts +10 -5
  6. package/breadcrumb/breadcrumb.d.ts +9 -6
  7. package/button/button.d.ts +10 -4
  8. package/calendar/calendar.d.ts +29 -15
  9. package/card/card.d.ts +12 -5
  10. package/carousel/carousel.d.ts +10 -4
  11. package/cascadeselect/cascadeselect.d.ts +18 -8
  12. package/checkbox/checkbox.d.ts +8 -4
  13. package/chip/chip.d.ts +9 -7
  14. package/confirmdialog/confirmdialog.d.ts +14 -5
  15. package/confirmpopup/confirmpopup.d.ts +11 -5
  16. package/contextmenu/contextmenu.d.ts +10 -6
  17. package/datepicker/datepicker.d.ts +113 -33
  18. package/dialog/dialog.d.ts +15 -4
  19. package/divider/divider.d.ts +1 -1
  20. package/dock/dock.d.ts +7 -4
  21. package/drawer/drawer.d.ts +18 -10
  22. package/dropdown/dropdown.d.ts +4 -3
  23. package/dynamicdialog/dynamicdialog.d.ts +1 -0
  24. package/editor/editor.d.ts +7 -3
  25. package/esm2022/accordion/accordion.mjs +58 -43
  26. package/esm2022/autocomplete/autocomplete.mjs +153 -92
  27. package/esm2022/badge/badge.mjs +39 -32
  28. package/esm2022/basecomponent/basecomponent.mjs +3 -26
  29. package/esm2022/blockui/blockui.mjs +38 -18
  30. package/esm2022/breadcrumb/breadcrumb.mjs +50 -32
  31. package/esm2022/button/button.mjs +55 -28
  32. package/esm2022/calendar/calendar.mjs +207 -143
  33. package/esm2022/card/card.mjs +96 -46
  34. package/esm2022/carousel/carousel.mjs +74 -42
  35. package/esm2022/cascadeselect/cascadeselect.mjs +100 -62
  36. package/esm2022/checkbox/checkbox.mjs +32 -14
  37. package/esm2022/chip/chip.mjs +117 -96
  38. package/esm2022/confirmdialog/confirmdialog.mjs +96 -57
  39. package/esm2022/confirmpopup/confirmpopup.mjs +57 -29
  40. package/esm2022/contextmenu/contextmenu.mjs +51 -20
  41. package/esm2022/datepicker/datepicker.mjs +198 -156
  42. package/esm2022/dialog/dialog.mjs +98 -52
  43. package/esm2022/divider/divider.mjs +2 -4
  44. package/esm2022/dock/dock.mjs +31 -13
  45. package/esm2022/drawer/drawer.mjs +112 -70
  46. package/esm2022/dropdown/dropdown.mjs +13 -5
  47. package/esm2022/dynamicdialog/dynamicdialog-config.mjs +13 -13
  48. package/esm2022/dynamicdialog/dynamicdialog.mjs +9 -5
  49. package/esm2022/editor/editor.mjs +27 -11
  50. package/esm2022/fieldset/fieldset.mjs +61 -33
  51. package/esm2022/fileupload/fileupload.mjs +139 -89
  52. package/esm2022/galleria/galleria.mjs +18 -9
  53. package/esm2022/image/image.mjs +113 -66
  54. package/esm2022/imagecompare/imagecompare.mjs +31 -11
  55. package/esm2022/inplace/inplace.mjs +49 -24
  56. package/esm2022/inputmask/inputmask.mjs +30 -14
  57. package/esm2022/inputmask/style/inputmaskstyle.mjs +2 -2
  58. package/esm2022/inputnumber/inputnumber.mjs +55 -47
  59. package/esm2022/inputotp/inputotp.mjs +30 -11
  60. package/esm2022/listbox/listbox.mjs +137 -78
  61. package/esm2022/megamenu/megamenu.mjs +105 -59
  62. package/esm2022/menu/menu.mjs +26 -26
  63. package/esm2022/menubar/menubar.mjs +70 -35
  64. package/esm2022/message/message.mjs +50 -26
  65. package/esm2022/messages/messages.mjs +13 -4
  66. package/esm2022/metergroup/metergroup.mjs +63 -31
  67. package/esm2022/multiselect/multiselect.mjs +247 -156
  68. package/esm2022/orderlist/orderlist.mjs +125 -70
  69. package/esm2022/organizationchart/organizationchart.mjs +30 -14
  70. package/esm2022/overlay/overlay.mjs +27 -7
  71. package/esm2022/overlaypanel/overlaypanel.mjs +33 -10
  72. package/esm2022/paginator/paginator.mjs +92 -60
  73. package/esm2022/panel/panel.mjs +160 -100
  74. package/esm2022/panelmenu/panelmenu.mjs +55 -32
  75. package/esm2022/password/password.mjs +88 -49
  76. package/esm2022/picklist/picklist.mjs +363 -259
  77. package/esm2022/popover/popover.mjs +29 -12
  78. package/esm2022/progressbar/progressbar.mjs +27 -9
  79. package/esm2022/rating/rating.mjs +46 -22
  80. package/esm2022/scroller/scroller.mjs +47 -37
  81. package/esm2022/scrollpanel/scrollpanel.mjs +28 -9
  82. package/esm2022/scrolltop/scrolltop.mjs +17 -10
  83. package/esm2022/select/select.mjs +198 -119
  84. package/esm2022/selectbutton/selectbutton.mjs +26 -11
  85. package/esm2022/sidebar/sidebar.mjs +82 -60
  86. package/esm2022/speeddial/speeddial.mjs +54 -29
  87. package/esm2022/splitbutton/splitbutton.mjs +41 -18
  88. package/esm2022/splitter/splitter.mjs +5 -5
  89. package/esm2022/stepper/stepper.mjs +27 -13
  90. package/esm2022/table/table.mjs +107 -96
  91. package/esm2022/tabmenu/tabmenu.mjs +54 -27
  92. package/esm2022/tabs/tablist.mjs +28 -20
  93. package/esm2022/tabview/tabview.mjs +106 -54
  94. package/esm2022/tag/tag.mjs +68 -44
  95. package/esm2022/tieredmenu/tieredmenu.mjs +44 -21
  96. package/esm2022/timeline/timeline.mjs +41 -17
  97. package/esm2022/toast/toast.mjs +31 -9
  98. package/esm2022/togglebutton/togglebutton.mjs +45 -30
  99. package/esm2022/toggleswitch/toggleswitch.mjs +28 -9
  100. package/esm2022/toolbar/toolbar.mjs +47 -21
  101. package/esm2022/tooltip/tooltip.mjs +35 -70
  102. package/esm2022/tree/tree.mjs +114 -97
  103. package/esm2022/treeselect/treeselect.mjs +156 -89
  104. package/esm2022/treetable/treetable.mjs +31 -12
  105. package/esm2022/usestyle/usestyle.mjs +2 -2
  106. package/fesm2022/primeng-accordion.mjs +57 -42
  107. package/fesm2022/primeng-accordion.mjs.map +1 -1
  108. package/fesm2022/primeng-autocomplete.mjs +152 -91
  109. package/fesm2022/primeng-autocomplete.mjs.map +1 -1
  110. package/fesm2022/primeng-badge.mjs +38 -31
  111. package/fesm2022/primeng-badge.mjs.map +1 -1
  112. package/fesm2022/primeng-basecomponent.mjs +2 -25
  113. package/fesm2022/primeng-basecomponent.mjs.map +1 -1
  114. package/fesm2022/primeng-blockui.mjs +37 -17
  115. package/fesm2022/primeng-blockui.mjs.map +1 -1
  116. package/fesm2022/primeng-breadcrumb.mjs +49 -31
  117. package/fesm2022/primeng-breadcrumb.mjs.map +1 -1
  118. package/fesm2022/primeng-button.mjs +54 -27
  119. package/fesm2022/primeng-button.mjs.map +1 -1
  120. package/fesm2022/primeng-calendar.mjs +206 -142
  121. package/fesm2022/primeng-calendar.mjs.map +1 -1
  122. package/fesm2022/primeng-card.mjs +95 -45
  123. package/fesm2022/primeng-card.mjs.map +1 -1
  124. package/fesm2022/primeng-carousel.mjs +73 -41
  125. package/fesm2022/primeng-carousel.mjs.map +1 -1
  126. package/fesm2022/primeng-cascadeselect.mjs +99 -61
  127. package/fesm2022/primeng-cascadeselect.mjs.map +1 -1
  128. package/fesm2022/primeng-checkbox.mjs +31 -13
  129. package/fesm2022/primeng-checkbox.mjs.map +1 -1
  130. package/fesm2022/primeng-chip.mjs +116 -95
  131. package/fesm2022/primeng-chip.mjs.map +1 -1
  132. package/fesm2022/primeng-confirmdialog.mjs +95 -56
  133. package/fesm2022/primeng-confirmdialog.mjs.map +1 -1
  134. package/fesm2022/primeng-confirmpopup.mjs +56 -28
  135. package/fesm2022/primeng-confirmpopup.mjs.map +1 -1
  136. package/fesm2022/primeng-contextmenu.mjs +50 -19
  137. package/fesm2022/primeng-contextmenu.mjs.map +1 -1
  138. package/fesm2022/primeng-datepicker.mjs +197 -155
  139. package/fesm2022/primeng-datepicker.mjs.map +1 -1
  140. package/fesm2022/primeng-dialog.mjs +97 -51
  141. package/fesm2022/primeng-dialog.mjs.map +1 -1
  142. package/fesm2022/primeng-divider.mjs +1 -3
  143. package/fesm2022/primeng-divider.mjs.map +1 -1
  144. package/fesm2022/primeng-dock.mjs +30 -12
  145. package/fesm2022/primeng-dock.mjs.map +1 -1
  146. package/fesm2022/primeng-drawer.mjs +111 -69
  147. package/fesm2022/primeng-drawer.mjs.map +1 -1
  148. package/fesm2022/primeng-dropdown.mjs +12 -4
  149. package/fesm2022/primeng-dropdown.mjs.map +1 -1
  150. package/fesm2022/primeng-dynamicdialog.mjs +20 -16
  151. package/fesm2022/primeng-dynamicdialog.mjs.map +1 -1
  152. package/fesm2022/primeng-editor.mjs +26 -10
  153. package/fesm2022/primeng-editor.mjs.map +1 -1
  154. package/fesm2022/primeng-fieldset.mjs +60 -32
  155. package/fesm2022/primeng-fieldset.mjs.map +1 -1
  156. package/fesm2022/primeng-fileupload.mjs +138 -88
  157. package/fesm2022/primeng-fileupload.mjs.map +1 -1
  158. package/fesm2022/primeng-galleria.mjs +17 -8
  159. package/fesm2022/primeng-galleria.mjs.map +1 -1
  160. package/fesm2022/primeng-image.mjs +112 -65
  161. package/fesm2022/primeng-image.mjs.map +1 -1
  162. package/fesm2022/primeng-imagecompare.mjs +30 -10
  163. package/fesm2022/primeng-imagecompare.mjs.map +1 -1
  164. package/fesm2022/primeng-inplace.mjs +48 -23
  165. package/fesm2022/primeng-inplace.mjs.map +1 -1
  166. package/fesm2022/primeng-inputmask.mjs +30 -14
  167. package/fesm2022/primeng-inputmask.mjs.map +1 -1
  168. package/fesm2022/primeng-inputnumber.mjs +54 -46
  169. package/fesm2022/primeng-inputnumber.mjs.map +1 -1
  170. package/fesm2022/primeng-inputotp.mjs +29 -10
  171. package/fesm2022/primeng-inputotp.mjs.map +1 -1
  172. package/fesm2022/primeng-listbox.mjs +136 -77
  173. package/fesm2022/primeng-listbox.mjs.map +1 -1
  174. package/fesm2022/primeng-megamenu.mjs +104 -58
  175. package/fesm2022/primeng-megamenu.mjs.map +1 -1
  176. package/fesm2022/primeng-menu.mjs +25 -25
  177. package/fesm2022/primeng-menu.mjs.map +1 -1
  178. package/fesm2022/primeng-menubar.mjs +69 -34
  179. package/fesm2022/primeng-menubar.mjs.map +1 -1
  180. package/fesm2022/primeng-message.mjs +49 -25
  181. package/fesm2022/primeng-message.mjs.map +1 -1
  182. package/fesm2022/primeng-messages.mjs +12 -3
  183. package/fesm2022/primeng-messages.mjs.map +1 -1
  184. package/fesm2022/primeng-metergroup.mjs +62 -30
  185. package/fesm2022/primeng-metergroup.mjs.map +1 -1
  186. package/fesm2022/primeng-multiselect.mjs +246 -155
  187. package/fesm2022/primeng-multiselect.mjs.map +1 -1
  188. package/fesm2022/primeng-orderlist.mjs +124 -69
  189. package/fesm2022/primeng-orderlist.mjs.map +1 -1
  190. package/fesm2022/primeng-organizationchart.mjs +29 -13
  191. package/fesm2022/primeng-organizationchart.mjs.map +1 -1
  192. package/fesm2022/primeng-overlay.mjs +26 -6
  193. package/fesm2022/primeng-overlay.mjs.map +1 -1
  194. package/fesm2022/primeng-overlaypanel.mjs +32 -9
  195. package/fesm2022/primeng-overlaypanel.mjs.map +1 -1
  196. package/fesm2022/primeng-paginator.mjs +91 -59
  197. package/fesm2022/primeng-paginator.mjs.map +1 -1
  198. package/fesm2022/primeng-panel.mjs +159 -99
  199. package/fesm2022/primeng-panel.mjs.map +1 -1
  200. package/fesm2022/primeng-panelmenu.mjs +54 -31
  201. package/fesm2022/primeng-panelmenu.mjs.map +1 -1
  202. package/fesm2022/primeng-password.mjs +87 -48
  203. package/fesm2022/primeng-password.mjs.map +1 -1
  204. package/fesm2022/primeng-picklist.mjs +362 -258
  205. package/fesm2022/primeng-picklist.mjs.map +1 -1
  206. package/fesm2022/primeng-popover.mjs +28 -11
  207. package/fesm2022/primeng-popover.mjs.map +1 -1
  208. package/fesm2022/primeng-progressbar.mjs +26 -8
  209. package/fesm2022/primeng-progressbar.mjs.map +1 -1
  210. package/fesm2022/primeng-rating.mjs +45 -21
  211. package/fesm2022/primeng-rating.mjs.map +1 -1
  212. package/fesm2022/primeng-scroller.mjs +46 -36
  213. package/fesm2022/primeng-scroller.mjs.map +1 -1
  214. package/fesm2022/primeng-scrollpanel.mjs +27 -8
  215. package/fesm2022/primeng-scrollpanel.mjs.map +1 -1
  216. package/fesm2022/primeng-scrolltop.mjs +16 -9
  217. package/fesm2022/primeng-scrolltop.mjs.map +1 -1
  218. package/fesm2022/primeng-select.mjs +197 -118
  219. package/fesm2022/primeng-select.mjs.map +1 -1
  220. package/fesm2022/primeng-selectbutton.mjs +25 -10
  221. package/fesm2022/primeng-selectbutton.mjs.map +1 -1
  222. package/fesm2022/primeng-sidebar.mjs +81 -59
  223. package/fesm2022/primeng-sidebar.mjs.map +1 -1
  224. package/fesm2022/primeng-speeddial.mjs +53 -28
  225. package/fesm2022/primeng-speeddial.mjs.map +1 -1
  226. package/fesm2022/primeng-splitbutton.mjs +40 -17
  227. package/fesm2022/primeng-splitbutton.mjs.map +1 -1
  228. package/fesm2022/primeng-splitter.mjs +4 -4
  229. package/fesm2022/primeng-splitter.mjs.map +1 -1
  230. package/fesm2022/primeng-stepper.mjs +26 -12
  231. package/fesm2022/primeng-stepper.mjs.map +1 -1
  232. package/fesm2022/primeng-table.mjs +106 -95
  233. package/fesm2022/primeng-table.mjs.map +1 -1
  234. package/fesm2022/primeng-tabmenu.mjs +53 -26
  235. package/fesm2022/primeng-tabmenu.mjs.map +1 -1
  236. package/fesm2022/primeng-tabs.mjs +27 -19
  237. package/fesm2022/primeng-tabs.mjs.map +1 -1
  238. package/fesm2022/primeng-tabview.mjs +106 -54
  239. package/fesm2022/primeng-tabview.mjs.map +1 -1
  240. package/fesm2022/primeng-tag.mjs +67 -43
  241. package/fesm2022/primeng-tag.mjs.map +1 -1
  242. package/fesm2022/primeng-tieredmenu.mjs +43 -20
  243. package/fesm2022/primeng-tieredmenu.mjs.map +1 -1
  244. package/fesm2022/primeng-timeline.mjs +40 -16
  245. package/fesm2022/primeng-timeline.mjs.map +1 -1
  246. package/fesm2022/primeng-toast.mjs +30 -8
  247. package/fesm2022/primeng-toast.mjs.map +1 -1
  248. package/fesm2022/primeng-togglebutton.mjs +44 -29
  249. package/fesm2022/primeng-togglebutton.mjs.map +1 -1
  250. package/fesm2022/primeng-toggleswitch.mjs +27 -8
  251. package/fesm2022/primeng-toggleswitch.mjs.map +1 -1
  252. package/fesm2022/primeng-toolbar.mjs +46 -20
  253. package/fesm2022/primeng-toolbar.mjs.map +1 -1
  254. package/fesm2022/primeng-tooltip.mjs +35 -70
  255. package/fesm2022/primeng-tooltip.mjs.map +1 -1
  256. package/fesm2022/primeng-tree.mjs +114 -97
  257. package/fesm2022/primeng-tree.mjs.map +1 -1
  258. package/fesm2022/primeng-treeselect.mjs +155 -88
  259. package/fesm2022/primeng-treeselect.mjs.map +1 -1
  260. package/fesm2022/primeng-treetable.mjs +30 -11
  261. package/fesm2022/primeng-treetable.mjs.map +1 -1
  262. package/fesm2022/primeng-usestyle.mjs +1 -1
  263. package/fesm2022/primeng-usestyle.mjs.map +1 -1
  264. package/fieldset/fieldset.d.ts +12 -6
  265. package/fileupload/fileupload.d.ts +19 -8
  266. package/galleria/galleria.d.ts +3 -2
  267. package/image/image.d.ts +18 -7
  268. package/imagecompare/imagecompare.d.ts +7 -2
  269. package/inplace/inplace.d.ts +12 -6
  270. package/inputmask/inputmask.d.ts +8 -4
  271. package/inputnumber/inputnumber.d.ts +11 -6
  272. package/inputotp/inputotp.d.ts +7 -2
  273. package/listbox/listbox.d.ts +17 -4
  274. package/megamenu/megamenu.d.ts +16 -7
  275. package/menu/menu.d.ts +6 -6
  276. package/menubar/menubar.d.ts +13 -6
  277. package/message/message.d.ts +10 -4
  278. package/messages/messages.d.ts +4 -3
  279. package/metergroup/metergroup.d.ts +11 -3
  280. package/multiselect/multiselect.d.ts +36 -17
  281. package/orderlist/orderlist.d.ts +23 -11
  282. package/organizationchart/organizationchart.d.ts +6 -4
  283. package/overlay/overlay.d.ts +6 -3
  284. package/overlaypanel/overlaypanel.d.ts +6 -3
  285. package/package.json +165 -165
  286. package/paginator/paginator.d.ts +15 -8
  287. package/panel/panel.d.ts +14 -5
  288. package/panelmenu/panelmenu.d.ts +8 -4
  289. package/password/password.d.ts +15 -7
  290. package/picklist/picklist.d.ts +23 -3
  291. package/popover/popover.d.ts +8 -5
  292. package/progressbar/progressbar.d.ts +7 -3
  293. package/rating/rating.d.ts +11 -5
  294. package/scroller/scroller.d.ts +9 -4
  295. package/scrollpanel/scrollpanel.d.ts +7 -3
  296. package/scrolltop/scrolltop.d.ts +7 -4
  297. package/select/select.d.ts +31 -13
  298. package/selectbutton/selectbutton.d.ts +7 -3
  299. package/sidebar/sidebar.d.ts +9 -2
  300. package/speeddial/speeddial.d.ts +9 -4
  301. package/splitbutton/splitbutton.d.ts +9 -5
  302. package/splitter/splitter.d.ts +4 -4
  303. package/stepper/stepper.d.ts +8 -3
  304. package/table/table.d.ts +2 -2
  305. package/tabmenu/tabmenu.d.ts +12 -7
  306. package/tabs/tablist.d.ts +6 -2
  307. package/tabview/tabview.d.ts +16 -7
  308. package/tag/tag.d.ts +8 -9
  309. package/tieredmenu/tieredmenu.d.ts +10 -6
  310. package/timeline/timeline.d.ts +7 -2
  311. package/toast/toast.d.ts +7 -3
  312. package/togglebutton/togglebutton.d.ts +8 -3
  313. package/toggleswitch/toggleswitch.d.ts +6 -2
  314. package/toolbar/toolbar.d.ts +9 -4
  315. package/tooltip/tooltip.d.ts +2 -1
  316. package/tree/tree.d.ts +23 -10
  317. package/treeselect/treeselect.d.ts +26 -12
  318. package/treetable/treetable.d.ts +7 -5
@@ -1,6 +1,6 @@
1
1
  import { CommonModule } from '@angular/common';
2
- import { ChangeDetectionStrategy, Component, ContentChild, HostBinding, inject, Input, NgModule, ViewEncapsulation } from '@angular/core';
3
- import { SharedModule } from 'primeng/api';
2
+ import { ChangeDetectionStrategy, Component, ContentChild, ContentChildren, HostBinding, inject, Input, NgModule, ViewEncapsulation } from '@angular/core';
3
+ import { PrimeTemplate, SharedModule } from 'primeng/api';
4
4
  import { BaseComponent } from 'primeng/basecomponent';
5
5
  import { TimelineStyle } from './style/timelinestyle';
6
6
  import * as i0 from "@angular/core";
@@ -23,7 +23,7 @@ function Timeline_div_0_ng_container_4_Template(rf, ctx) { if (rf & 1) {
23
23
  const event_r1 = i0.ɵɵnextContext().$implicit;
24
24
  const ctx_r1 = i0.ɵɵnextContext();
25
25
  i0.ɵɵadvance();
26
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.markerTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c3, event_r1));
26
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.markerTemplate || ctx_r1._markerTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c3, event_r1));
27
27
  } }
28
28
  function Timeline_div_0_ng_template_5_Template(rf, ctx) { if (rf & 1) {
29
29
  i0.ɵɵelement(0, "div", 9);
@@ -55,17 +55,17 @@ function Timeline_div_0_Template(rf, ctx) { if (rf & 1) {
55
55
  i0.ɵɵadvance();
56
56
  i0.ɵɵattribute("data-pc-section", "opposite");
57
57
  i0.ɵɵadvance();
58
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.oppositeTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction1(11, _c3, event_r1));
58
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.oppositeTemplate || ctx_r1._oppositeTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction1(11, _c3, event_r1));
59
59
  i0.ɵɵadvance();
60
60
  i0.ɵɵattribute("data-pc-section", "separator");
61
61
  i0.ɵɵadvance();
62
- i0.ɵɵproperty("ngIf", ctx_r1.markerTemplate)("ngIfElse", marker_r4);
62
+ i0.ɵɵproperty("ngIf", ctx_r1.markerTemplate || ctx_r1._markerTemplate)("ngIfElse", marker_r4);
63
63
  i0.ɵɵadvance(3);
64
64
  i0.ɵɵproperty("ngIf", !last_r3);
65
65
  i0.ɵɵadvance();
66
66
  i0.ɵɵattribute("data-pc-section", "content");
67
67
  i0.ɵɵadvance();
68
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.contentTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction1(13, _c3, event_r1));
68
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.contentTemplate || ctx_r1._contentTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction1(13, _c3, event_r1));
69
69
  } }
70
70
  /**
71
71
  * Timeline visualizes a series of chained events.
@@ -112,6 +112,10 @@ export class Timeline extends BaseComponent {
112
112
  * @group Templates
113
113
  */
114
114
  markerTemplate;
115
+ templates;
116
+ _contentTemplate;
117
+ _oppositeTemplate;
118
+ _markerTemplate;
115
119
  _componentStyle = inject(TimelineStyle);
116
120
  get hostClass() {
117
121
  return this.styleClass;
@@ -119,16 +123,33 @@ export class Timeline extends BaseComponent {
119
123
  getBlockableElement() {
120
124
  return this.el.nativeElement.children[0];
121
125
  }
126
+ ngAfterContentInit() {
127
+ this.templates.forEach((item) => {
128
+ switch (item.getType()) {
129
+ case 'content':
130
+ this._contentTemplate = item.template;
131
+ break;
132
+ case 'opposite':
133
+ this._oppositeTemplate = item.template;
134
+ break;
135
+ case 'marker':
136
+ this._markerTemplate = item.template;
137
+ break;
138
+ }
139
+ });
140
+ }
122
141
  static ɵfac = /*@__PURE__*/ (() => { let ɵTimeline_BaseFactory; return function Timeline_Factory(__ngFactoryType__) { return (ɵTimeline_BaseFactory || (ɵTimeline_BaseFactory = i0.ɵɵgetInheritedFactory(Timeline)))(__ngFactoryType__ || Timeline); }; })();
123
142
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Timeline, selectors: [["p-timeline"]], contentQueries: function Timeline_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
124
- i0.ɵɵcontentQuery(dirIndex, _c0, 5);
125
- i0.ɵɵcontentQuery(dirIndex, _c1, 5);
126
- i0.ɵɵcontentQuery(dirIndex, _c2, 5);
143
+ i0.ɵɵcontentQuery(dirIndex, _c0, 4);
144
+ i0.ɵɵcontentQuery(dirIndex, _c1, 4);
145
+ i0.ɵɵcontentQuery(dirIndex, _c2, 4);
146
+ i0.ɵɵcontentQuery(dirIndex, PrimeTemplate, 4);
127
147
  } if (rf & 2) {
128
148
  let _t;
129
149
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.contentTemplate = _t.first);
130
150
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.oppositeTemplate = _t.first);
131
151
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.markerTemplate = _t.first);
152
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templates = _t);
132
153
  } }, hostVars: 24, hostBindings: function Timeline_HostBindings(rf, ctx) { if (rf & 2) {
133
154
  i0.ɵɵattribute("data-pc-section", "root")("data-pc-name", "timeline");
134
155
  i0.ɵɵstyleMap(ctx.style);
@@ -149,11 +170,11 @@ export class Timeline extends BaseComponent {
149
170
  template: `
150
171
  <div *ngFor="let event of value; let last = last" class="p-timeline-event" [attr.data-pc-section]="'event'">
151
172
  <div class="p-timeline-event-opposite" [attr.data-pc-section]="'opposite'">
152
- <ng-container *ngTemplateOutlet="oppositeTemplate; context: { $implicit: event }"></ng-container>
173
+ <ng-container *ngTemplateOutlet="oppositeTemplate || _oppositeTemplate; context: { $implicit: event }"></ng-container>
153
174
  </div>
154
175
  <div class="p-timeline-event-separator" [attr.data-pc-section]="'separator'">
155
- <ng-container *ngIf="markerTemplate; else marker">
156
- <ng-container *ngTemplateOutlet="markerTemplate; context: { $implicit: event }"></ng-container>
176
+ <ng-container *ngIf="markerTemplate || _markerTemplate; else marker">
177
+ <ng-container *ngTemplateOutlet="markerTemplate || _markerTemplate; context: { $implicit: event }"></ng-container>
157
178
  </ng-container>
158
179
  <ng-template #marker>
159
180
  <div class="p-timeline-event-marker" [attr.data-pc-section]="'marker'"></div>
@@ -161,7 +182,7 @@ export class Timeline extends BaseComponent {
161
182
  <div *ngIf="!last" class="p-timeline-event-connector"></div>
162
183
  </div>
163
184
  <div class="p-timeline-event-content" [attr.data-pc-section]="'content'">
164
- <ng-container *ngTemplateOutlet="contentTemplate; context: { $implicit: event }"></ng-container>
185
+ <ng-container *ngTemplateOutlet="contentTemplate || _contentTemplate; context: { $implicit: event }"></ng-container>
165
186
  </div>
166
187
  </div>
167
188
  `,
@@ -195,13 +216,16 @@ export class Timeline extends BaseComponent {
195
216
  type: Input
196
217
  }], contentTemplate: [{
197
218
  type: ContentChild,
198
- args: ['content']
219
+ args: ['content', { descendants: false }]
199
220
  }], oppositeTemplate: [{
200
221
  type: ContentChild,
201
- args: ['opposite']
222
+ args: ['opposite', { descendants: false }]
202
223
  }], markerTemplate: [{
203
224
  type: ContentChild,
204
- args: ['marker']
225
+ args: ['marker', { descendants: false }]
226
+ }], templates: [{
227
+ type: ContentChildren,
228
+ args: [PrimeTemplate]
205
229
  }], hostClass: [{
206
230
  type: HostBinding,
207
231
  args: ['class']
@@ -220,4 +244,4 @@ export class TimelineModule {
220
244
  }]
221
245
  }], null, null); })();
222
246
  (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(TimelineModule, { imports: [Timeline, SharedModule], exports: [Timeline, SharedModule] }); })();
223
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGltZWxpbmUvdGltZWxpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBb0IsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQTBCLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BMLE9BQU8sRUFBOEIsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7O0lBYXRDLHdCQUFpRzs7O0lBSTdGLHdCQUErRjs7O0lBRG5HLDZCQUFrRDtJQUM5QyxnR0FBZ0Y7Ozs7O0lBQWpFLGNBQWtDO0lBQUEsQUFBbEMsd0RBQWtDLGlFQUE2Qjs7O0lBRzlFLHlCQUE2RTs7Ozs7SUFFakYsMEJBQTREOzs7SUFHNUQsd0JBQWdHOzs7SUFicEcsQUFESiw4QkFBNEcsYUFDN0I7SUFDdkUsaUZBQWtGO0lBQ3RGLGlCQUFNO0lBQ04sOEJBQTZFO0lBT3pFLEFBSEEsQUFIQSxpRkFBa0QsbUdBRzdCLGtEQUdpQztJQUMxRCxpQkFBTTtJQUNOLDhCQUF5RTtJQUNyRSxpRkFBaUY7SUFFekYsQUFESSxpQkFBTSxFQUNKOzs7Ozs7O0lBZnFDLGNBQW1DOztJQUN2RCxjQUFvQztJQUFBLEFBQXBDLDBEQUFvQyxrRUFBNkI7SUFFNUMsY0FBb0M7O0lBQ3pELGNBQXNCO0lBQUEsQUFBdEIsNENBQXNCLHVCQUFXO0lBTTFDLGVBQVc7SUFBWCwrQkFBVztJQUVpQixjQUFrQzs7SUFDckQsY0FBbUM7SUFBQSxBQUFuQyx5REFBbUMsa0VBQTZCOztBQXZC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QVEsRUFBRSxZQUFZLENBQUM7YUFDcEM7O3dGQUNZLGNBQWMsY0EzRGQsUUFBUSxFQXdERyxZQUFZLGFBeER2QixRQUFRLEVBeURHLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBIb3N0QmluZGluZywgaW5qZWN0LCBJbnB1dCwgTmdNb2R1bGUsIFF1ZXJ5TGlzdCwgVGVtcGxhdGVSZWYsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCbG9ja2FibGVVSSwgUHJpbWVUZW1wbGF0ZSwgU2hhcmVkTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJ3ByaW1lbmcvYmFzZWNvbXBvbmVudCc7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ3ByaW1lbmcvdHMtaGVscGVycyc7XG5pbXBvcnQgeyBUaW1lbGluZVN0eWxlIH0gZnJvbSAnLi9zdHlsZS90aW1lbGluZXN0eWxlJztcblxuLyoqXG4gKiBUaW1lbGluZSB2aXN1YWxpemVzIGEgc2VyaWVzIG9mIGNoYWluZWQgZXZlbnRzLlxuICogQGdyb3VwIENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLXRpbWVsaW5lJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFNoYXJlZE1vZHVsZV0sXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZXZlbnQgb2YgdmFsdWU7IGxldCBsYXN0ID0gbGFzdFwiIGNsYXNzPVwicC10aW1lbGluZS1ldmVudFwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInZXZlbnQnXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC10aW1lbGluZS1ldmVudC1vcHBvc2l0ZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInb3Bwb3NpdGUnXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm9wcG9zaXRlVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBldmVudCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXRpbWVsaW5lLWV2ZW50LXNlcGFyYXRvclwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInc2VwYXJhdG9yJ1wiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtYXJrZXJUZW1wbGF0ZTsgZWxzZSBtYXJrZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1hcmtlclRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogZXZlbnQgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbWFya2VyPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC10aW1lbGluZS1ldmVudC1tYXJrZXJcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ21hcmtlcidcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhbGFzdFwiIGNsYXNzPVwicC10aW1lbGluZS1ldmVudC1jb25uZWN0b3JcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtdGltZWxpbmUtZXZlbnQtY29udGVudFwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInY29udGVudCdcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogZXZlbnQgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFtUaW1lbGluZVN0eWxlXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbY2xhc3MucC10aW1lbGluZV0nOiAndHJ1ZScsXG4gICAgICAgICdbY2xhc3MucC1jb21wb25lbnRdJzogJ3RydWUnLFxuICAgICAgICAnW2NsYXNzLnAtdGltZWxpbmUtbGVmdF0nOiBcImFsaWduID09PSAnbGVmdCdcIixcbiAgICAgICAgJ1tjbGFzcy5wLXRpbWVsaW5lLXJpZ2h0XSc6IFwiYWxpZ24gPT09ICdyaWdodCdcIixcbiAgICAgICAgJ1tjbGFzcy5wLXRpbWVsaW5lLXRvcF0nOiBcImFsaWduID09PSAndG9wJ1wiLFxuICAgICAgICAnW2NsYXNzLnAtdGltZWxpbmUtYm90dG9tXSc6IFwiYWxpZ24gPT09ICdib3R0b20nXCIsXG4gICAgICAgICdbY2xhc3MucC10aW1lbGluZS1hbHRlcm5hdGVdJzogXCJhbGlnbiA9PT0gJ2FsdGVybmF0ZSdcIixcbiAgICAgICAgJ1tjbGFzcy5wLXRpbWVsaW5lLXZlcnRpY2FsXSc6IFwibGF5b3V0ID09PSAndmVydGljYWwnXCIsXG4gICAgICAgICdbY2xhc3MucC10aW1lbGluZS1ob3Jpem9udGFsXSc6IFwibGF5b3V0ID09PSAnaG9yaXpvbnRhbCdcIixcbiAgICAgICAgJ1tzdHlsZV0nOiAnc3R5bGUnLFxuICAgICAgICAnW2F0dHIuZGF0YS1wYy1zZWN0aW9uXSc6IFwiJ3Jvb3QnXCIsXG4gICAgICAgICdbYXR0ci5kYXRhLXBjLW5hbWVdJzogXCIndGltZWxpbmUnXCJcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFRpbWVsaW5lIGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIEJsb2NrYWJsZVVJIHtcbiAgICAvKipcbiAgICAgKiBBbiBhcnJheSBvZiBldmVudHMgdG8gZGlzcGxheS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB2YWx1ZTogYW55W10gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogSW5saW5lIHN0eWxlIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc3R5bGU6IHsgW2tsYXNzOiBzdHJpbmddOiBhbnkgfSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogU3R5bGUgY2xhc3Mgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogUG9zaXRpb24gb2YgdGhlIHRpbWVsaW5lIGJhciByZWxhdGl2ZSB0byB0aGUgY29udGVudC4gVmFsaWQgdmFsdWVzIGFyZSBcImxlZnRcIiwgXCJyaWdodFwiIGZvciB2ZXJ0aWNhbCBsYXlvdXQgYW5kIFwidG9wXCIsIFwiYm90dG9tXCIgZm9yIGhvcml6b250YWwgbGF5b3V0LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGFsaWduOiBzdHJpbmcgPSAnbGVmdCc7XG4gICAgLyoqXG4gICAgICogT3JpZW50YXRpb24gb2YgdGhlIHRpbWVsaW5lLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGxheW91dDogJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJyA9ICd2ZXJ0aWNhbCc7XG4gICAgLyoqXG4gICAgICogQ3VzdG9tIGNvbnRlbnQgdGVtcGxhdGUuXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2NvbnRlbnQnKSBjb250ZW50VGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIG9wcG9zaXRlIGl0ZW0gdGVtcGxhdGUuXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ29wcG9zaXRlJykgb3Bwb3NpdGVUZW1wbGF0ZTogTnVsbGFibGU8VGVtcGxhdGVSZWY8YW55Pj47XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gbWFya2VyIHRlbXBsYXRlLlxuICAgICAqIEBncm91cCBUZW1wbGF0ZXNcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdtYXJrZXInKSBtYXJrZXJUZW1wbGF0ZTogTnVsbGFibGU8VGVtcGxhdGVSZWY8YW55Pj47XG5cbiAgICBfY29tcG9uZW50U3R5bGUgPSBpbmplY3QoVGltZWxpbmVTdHlsZSk7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgZ2V0IGhvc3RDbGFzcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3R5bGVDbGFzcztcbiAgICB9XG5cbiAgICBnZXRCbG9ja2FibGVFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXTtcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1RpbWVsaW5lLCBTaGFyZWRNb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtUaW1lbGluZSwgU2hhcmVkTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBUaW1lbGluZU1vZHVsZSB7fVxuIl19
247
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGltZWxpbmUvdGltZWxpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBb0IsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUEwQixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyTSxPQUFPLEVBQWUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7OztJQWF0Qyx3QkFBc0g7OztJQUlsSCx3QkFBa0g7OztJQUR0SCw2QkFBcUU7SUFDakUsZ0dBQW1HOzs7OztJQUFwRixjQUFxRDtJQUFBLEFBQXJELGtGQUFxRCxpRUFBNkI7OztJQUdqRyx5QkFBNkU7Ozs7O0lBRWpGLDBCQUE0RDs7O0lBRzVELHdCQUFvSDs7O0lBYnhILEFBREosOEJBQTRHLGFBQzdCO0lBQ3ZFLGlGQUF1RztJQUMzRyxpQkFBTTtJQUNOLDhCQUE2RTtJQU96RSxBQUhBLEFBSEEsaUZBQXFFLG1HQUdoRCxrREFHaUM7SUFDMUQsaUJBQU07SUFDTiw4QkFBeUU7SUFDckUsaUZBQXFHO0lBRTdHLEFBREksaUJBQU0sRUFDSjs7Ozs7OztJQWZxQyxjQUFtQzs7SUFDdkQsY0FBeUQ7SUFBQSxBQUF6RCxzRkFBeUQsa0VBQTZCO0lBRWpFLGNBQW9DOztJQUN6RCxjQUF5QztJQUFBLEFBQXpDLHNFQUF5Qyx1QkFBVztJQU03RCxlQUFXO0lBQVgsK0JBQVc7SUFFaUIsY0FBa0M7O0lBQ3JELGNBQXVEO0lBQUEsQUFBdkQs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QUNsQix3QkFBd0IsRUFBRSxRQUFRO29CQUNsQyxxQkFBcUIsRUFBRSxZQUFZO2lCQUN0QzthQUNKO2dCQU1ZLEtBQUs7a0JBQWIsS0FBSztZQUtHLEtBQUs7a0JBQWIsS0FBSztZQUtHLFVBQVU7a0JBQWxCLEtBQUs7WUFLRyxLQUFLO2tCQUFiLEtBQUs7WUFLRyxNQUFNO2tCQUFkLEtBQUs7WUFLMkMsZUFBZTtrQkFBL0QsWUFBWTttQkFBQyxTQUFTLEVBQUUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFO1lBTUcsZ0JBQWdCO2tCQUFqRSxZQUFZO21CQUFDLFVBQVUsRUFBRSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUU7WUFNQSxjQUFjO2tCQUE3RCxZQUFZO21CQUFDLFFBQVEsRUFBRSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUU7WUFFZCxTQUFTO2tCQUF4QyxlQUFlO21CQUFDLGFBQWE7WUFVSixTQUFTO2tCQUFsQyxXQUFXO21CQUFDLE9BQU87O2tGQXREWCxRQUFRO0FBcUZyQixNQUFNLE9BQU8sY0FBYzt3R0FBZCxjQUFjOzREQUFkLGNBQWM7Z0VBSGIsUUFBUSxFQUFFLFlBQVksRUFDWixZQUFZOztpRkFFdkIsY0FBYztjQUoxQixRQUFRO2VBQUM7Z0JBQ04sT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQztnQkFDakMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQzthQUNwQzs7d0ZBQ1ksY0FBYyxjQXJGZCxRQUFRLEVBa0ZHLFlBQVksYUFsRnZCLFFBQVEsRUFtRkcsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIENvbnRlbnRDaGlsZHJlbiwgSG9zdEJpbmRpbmcsIGluamVjdCwgSW5wdXQsIE5nTW9kdWxlLCBRdWVyeUxpc3QsIFRlbXBsYXRlUmVmLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmxvY2thYmxlVUksIFByaW1lVGVtcGxhdGUsIFNoYXJlZE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICdwcmltZW5nL2Jhc2Vjb21wb25lbnQnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdwcmltZW5nL3RzLWhlbHBlcnMnO1xuaW1wb3J0IHsgVGltZWxpbmVTdHlsZSB9IGZyb20gJy4vc3R5bGUvdGltZWxpbmVzdHlsZSc7XG5cbi8qKlxuICogVGltZWxpbmUgdmlzdWFsaXplcyBhIHNlcmllcyBvZiBjaGFpbmVkIGV2ZW50cy5cbiAqIEBncm91cCBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC10aW1lbGluZScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBTaGFyZWRNb2R1bGVdLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGV2ZW50IG9mIHZhbHVlOyBsZXQgbGFzdCA9IGxhc3RcIiBjbGFzcz1cInAtdGltZWxpbmUtZXZlbnRcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2V2ZW50J1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtdGltZWxpbmUtZXZlbnQtb3Bwb3NpdGVcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ29wcG9zaXRlJ1wiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJvcHBvc2l0ZVRlbXBsYXRlIHx8IF9vcHBvc2l0ZVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogZXZlbnQgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC10aW1lbGluZS1ldmVudC1zZXBhcmF0b3JcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3NlcGFyYXRvcidcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibWFya2VyVGVtcGxhdGUgfHwgX21hcmtlclRlbXBsYXRlOyBlbHNlIG1hcmtlclwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWFya2VyVGVtcGxhdGUgfHwgX21hcmtlclRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogZXZlbnQgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbWFya2VyPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC10aW1lbGluZS1ldmVudC1tYXJrZXJcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ21hcmtlcidcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhbGFzdFwiIGNsYXNzPVwicC10aW1lbGluZS1ldmVudC1jb25uZWN0b3JcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtdGltZWxpbmUtZXZlbnQtY29udGVudFwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInY29udGVudCdcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFRlbXBsYXRlIHx8IF9jb250ZW50VGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBldmVudCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW1RpbWVsaW5lU3R5bGVdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tjbGFzcy5wLXRpbWVsaW5lXSc6ICd0cnVlJyxcbiAgICAgICAgJ1tjbGFzcy5wLWNvbXBvbmVudF0nOiAndHJ1ZScsXG4gICAgICAgICdbY2xhc3MucC10aW1lbGluZS1sZWZ0XSc6IFwiYWxpZ24gPT09ICdsZWZ0J1wiLFxuICAgICAgICAnW2NsYXNzLnAtdGltZWxpbmUtcmlnaHRdJzogXCJhbGlnbiA9PT0gJ3JpZ2h0J1wiLFxuICAgICAgICAnW2NsYXNzLnAtdGltZWxpbmUtdG9wXSc6IFwiYWxpZ24gPT09ICd0b3AnXCIsXG4gICAgICAgICdbY2xhc3MucC10aW1lbGluZS1ib3R0b21dJzogXCJhbGlnbiA9PT0gJ2JvdHRvbSdcIixcbiAgICAgICAgJ1tjbGFzcy5wLXRpbWVsaW5lLWFsdGVybmF0ZV0nOiBcImFsaWduID09PSAnYWx0ZXJuYXRlJ1wiLFxuICAgICAgICAnW2NsYXNzLnAtdGltZWxpbmUtdmVydGljYWxdJzogXCJsYXlvdXQgPT09ICd2ZXJ0aWNhbCdcIixcbiAgICAgICAgJ1tjbGFzcy5wLXRpbWVsaW5lLWhvcml6b250YWxdJzogXCJsYXlvdXQgPT09ICdob3Jpem9udGFsJ1wiLFxuICAgICAgICAnW3N0eWxlXSc6ICdzdHlsZScsXG4gICAgICAgICdbYXR0ci5kYXRhLXBjLXNlY3Rpb25dJzogXCIncm9vdCdcIixcbiAgICAgICAgJ1thdHRyLmRhdGEtcGMtbmFtZV0nOiBcIid0aW1lbGluZSdcIlxuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgVGltZWxpbmUgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgQmxvY2thYmxlVUkge1xuICAgIC8qKlxuICAgICAqIEFuIGFycmF5IG9mIGV2ZW50cyB0byBkaXNwbGF5LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHZhbHVlOiBhbnlbXSB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBJbmxpbmUgc3R5bGUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzdHlsZTogeyBba2xhc3M6IHN0cmluZ106IGFueSB9IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBTdHlsZSBjbGFzcyBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBQb3NpdGlvbiBvZiB0aGUgdGltZWxpbmUgYmFyIHJlbGF0aXZlIHRvIHRoZSBjb250ZW50LiBWYWxpZCB2YWx1ZXMgYXJlIFwibGVmdFwiLCBcInJpZ2h0XCIgZm9yIHZlcnRpY2FsIGxheW91dCBhbmQgXCJ0b3BcIiwgXCJib3R0b21cIiBmb3IgaG9yaXpvbnRhbCBsYXlvdXQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgYWxpZ246IHN0cmluZyA9ICdsZWZ0JztcbiAgICAvKipcbiAgICAgKiBPcmllbnRhdGlvbiBvZiB0aGUgdGltZWxpbmUuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbGF5b3V0OiAndmVydGljYWwnIHwgJ2hvcml6b250YWwnID0gJ3ZlcnRpY2FsJztcbiAgICAvKipcbiAgICAgKiBDdXN0b20gY29udGVudCB0ZW1wbGF0ZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnY29udGVudCcsIHsgZGVzY2VuZGFudHM6IGZhbHNlIH0pIGNvbnRlbnRUZW1wbGF0ZTogTnVsbGFibGU8VGVtcGxhdGVSZWY8YW55Pj47XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gb3Bwb3NpdGUgaXRlbSB0ZW1wbGF0ZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnb3Bwb3NpdGUnLCB7IGRlc2NlbmRhbnRzOiBmYWxzZSB9KSBvcHBvc2l0ZVRlbXBsYXRlOiBOdWxsYWJsZTxUZW1wbGF0ZVJlZjxhbnk+PjtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBtYXJrZXIgdGVtcGxhdGUuXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ21hcmtlcicsIHsgZGVzY2VuZGFudHM6IGZhbHNlIH0pIG1hcmtlclRlbXBsYXRlOiBOdWxsYWJsZTxUZW1wbGF0ZVJlZjxhbnk+PjtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oUHJpbWVUZW1wbGF0ZSkgdGVtcGxhdGVzOiBOdWxsYWJsZTxRdWVyeUxpc3Q8YW55Pj47XG5cbiAgICBfY29udGVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgX29wcG9zaXRlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBfbWFya2VyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBfY29tcG9uZW50U3R5bGUgPSBpbmplY3QoVGltZWxpbmVTdHlsZSk7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgZ2V0IGhvc3RDbGFzcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3R5bGVDbGFzcztcbiAgICB9XG5cbiAgICBnZXRCbG9ja2FibGVFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgICh0aGlzLnRlbXBsYXRlcyBhcyBRdWVyeUxpc3Q8UHJpbWVUZW1wbGF0ZT4pLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAoaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdjb250ZW50JzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY29udGVudFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdvcHBvc2l0ZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wcG9zaXRlVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ21hcmtlcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX21hcmtlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbVGltZWxpbmUsIFNoYXJlZE1vZHVsZV0sXG4gICAgZXhwb3J0czogW1RpbWVsaW5lLCBTaGFyZWRNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIFRpbWVsaW5lTW9kdWxlIHt9XG4iXX0=
@@ -1,12 +1,11 @@
1
1
  import { animate, animateChild, query, state, style, transition, trigger } from '@angular/animations';
2
2
  import { CommonModule } from '@angular/common';
3
- import { ChangeDetectionStrategy, Component, ContentChild, EventEmitter, Input, NgModule, Output, ViewChild, ViewEncapsulation, booleanAttribute, inject, numberAttribute } from '@angular/core';
3
+ import { ChangeDetectionStrategy, Component, ContentChild, EventEmitter, Input, NgModule, Output, ViewChild, ViewEncapsulation, booleanAttribute, inject, numberAttribute, ContentChildren } from '@angular/core';
4
4
  import { isEmpty, setAttribute, uuid } from '@primeuix/utils';
5
- import { MessageService, SharedModule } from 'primeng/api';
5
+ import { MessageService, PrimeTemplate, SharedModule } from 'primeng/api';
6
6
  import { BaseComponent } from 'primeng/basecomponent';
7
7
  import { Button } from 'primeng/button';
8
8
  import { CheckIcon, ExclamationTriangleIcon, InfoCircleIcon, TimesCircleIcon, TimesIcon } from 'primeng/icons';
9
- import { Ripple } from 'primeng/ripple';
10
9
  import { ZIndexUtils } from 'primeng/utils';
11
10
  import { ToastStyle } from './style/toaststyle';
12
11
  import * as i0 from "@angular/core";
@@ -160,7 +159,7 @@ function Toast_p_toastItem_2_Template(rf, ctx) { if (rf & 1) {
160
159
  const msg_r3 = ctx.$implicit;
161
160
  const i_r4 = ctx.index;
162
161
  const ctx_r1 = i0.ɵɵnextContext();
163
- i0.ɵɵproperty("message", msg_r3)("index", i_r4)("life", ctx_r1.life)("template", ctx_r1.template)("headlessTemplate", ctx_r1.headlessTemplate)("@toastAnimation", undefined)("showTransformOptions", ctx_r1.showTransformOptions)("hideTransformOptions", ctx_r1.hideTransformOptions)("showTransitionOptions", ctx_r1.showTransitionOptions)("hideTransitionOptions", ctx_r1.hideTransitionOptions);
162
+ i0.ɵɵproperty("message", msg_r3)("index", i_r4)("life", ctx_r1.life)("template", ctx_r1.template || ctx_r1._template)("headlessTemplate", ctx_r1.headlessTemplate || ctx_r1._headlessTemplate)("@toastAnimation", undefined)("showTransformOptions", ctx_r1.showTransformOptions)("hideTransformOptions", ctx_r1.hideTransformOptions)("showTransitionOptions", ctx_r1.showTransitionOptions)("hideTransitionOptions", ctx_r1.hideTransitionOptions);
164
163
  } }
165
164
  export class ToastItem extends BaseComponent {
166
165
  zone;
@@ -270,7 +269,7 @@ export class ToastItem extends BaseComponent {
270
269
  args: [{
271
270
  selector: 'p-toastItem',
272
271
  standalone: true,
273
- imports: [CommonModule, CheckIcon, ExclamationTriangleIcon, InfoCircleIcon, TimesIcon, TimesCircleIcon, Ripple, Button, SharedModule],
272
+ imports: [CommonModule, CheckIcon, ExclamationTriangleIcon, InfoCircleIcon, TimesIcon, TimesCircleIcon, Button, SharedModule],
274
273
  template: `
275
274
  <div
276
275
  #container
@@ -500,6 +499,7 @@ export class Toast extends BaseComponent {
500
499
  _componentStyle = inject(ToastStyle);
501
500
  styleElement;
502
501
  id = uuid('pn_id_');
502
+ templates;
503
503
  ngOnInit() {
504
504
  super.ngOnInit();
505
505
  this.messageSubscription = this.messageService.messageObserver.subscribe((messages) => {
@@ -525,6 +525,23 @@ export class Toast extends BaseComponent {
525
525
  this.cd.markForCheck();
526
526
  });
527
527
  }
528
+ _template;
529
+ _headlessTemplate;
530
+ ngAfterContentInit() {
531
+ this.templates?.forEach((item) => {
532
+ switch (item.getType()) {
533
+ case 'message':
534
+ this._template = item.template;
535
+ break;
536
+ case 'headless':
537
+ this._headlessTemplate = item.template;
538
+ break;
539
+ default:
540
+ this._template = item.template;
541
+ break;
542
+ }
543
+ });
544
+ }
528
545
  ngAfterViewInit() {
529
546
  super.ngAfterViewInit();
530
547
  if (this.breakpoints) {
@@ -624,10 +641,12 @@ export class Toast extends BaseComponent {
624
641
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Toast, selectors: [["p-toast"]], contentQueries: function Toast_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
625
642
  i0.ɵɵcontentQuery(dirIndex, _c5, 5);
626
643
  i0.ɵɵcontentQuery(dirIndex, _c6, 5);
644
+ i0.ɵɵcontentQuery(dirIndex, PrimeTemplate, 4);
627
645
  } if (rf & 2) {
628
646
  let _t;
629
647
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.template = _t.first);
630
648
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.headlessTemplate = _t.first);
649
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templates = _t);
631
650
  } }, viewQuery: function Toast_Query(rf, ctx) { if (rf & 1) {
632
651
  i0.ɵɵviewQuery(_c0, 5);
633
652
  } if (rf & 2) {
@@ -650,7 +669,7 @@ export class Toast extends BaseComponent {
650
669
  args: [{
651
670
  selector: 'p-toast',
652
671
  standalone: true,
653
- imports: [CommonModule, ToastItem, CheckIcon, InfoCircleIcon, TimesCircleIcon, ExclamationTriangleIcon, TimesIcon, Button, SharedModule],
672
+ imports: [CommonModule, ToastItem, SharedModule],
654
673
  template: `
655
674
  <div #container [ngClass]="cx('root')" [ngStyle]="sx('root')" [style]="style" [class]="styleClass">
656
675
  <p-toastItem
@@ -659,8 +678,8 @@ export class Toast extends BaseComponent {
659
678
  [index]="i"
660
679
  [life]="life"
661
680
  (onClose)="onMessageClose($event)"
662
- [template]="template"
663
- [headlessTemplate]="headlessTemplate"
681
+ [template]="template || _template"
682
+ [headlessTemplate]="headlessTemplate || _headlessTemplate"
664
683
  @toastAnimation
665
684
  (@toastAnimation.start)="onAnimationStart($event)"
666
685
  (@toastAnimation.done)="onAnimationEnd($event)"
@@ -720,6 +739,9 @@ export class Toast extends BaseComponent {
720
739
  }], containerViewChild: [{
721
740
  type: ViewChild,
722
741
  args: ['container']
742
+ }], templates: [{
743
+ type: ContentChildren,
744
+ args: [PrimeTemplate]
723
745
  }] }); })();
724
746
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(Toast, { className: "Toast" }); })();
725
747
  export class ToastModule {
@@ -735,4 +757,4 @@ export class ToastModule {
735
757
  }]
736
758
  }], null, null); })();
737
759
  (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(ToastModule, { imports: [Toast, SharedModule], exports: [Toast, SharedModule] }); })();
738
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9hc3QvdG9hc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQixPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0SCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUVILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUVaLFlBQVksRUFDWixLQUFLLEVBQ0wsUUFBUSxFQUlSLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixNQUFNLEVBQ04sZUFBZSxFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBdUIsTUFBTSxhQUFhLENBQUM7QUFDaEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9HLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7Ozs7O0lBK0JoQyx3QkFBOEg7OztJQUE5SCwwRkFBK0c7OztJQUE1RCxBQUFwQywwREFBb0MsZ0dBQTBEOzs7SUFJ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QjtrQkFBekMsU0FBUzttQkFBQyxXQUFXOztrRkFqR2IsS0FBSztBQTRRbEIsTUFBTSxPQUFPLFdBQVc7cUdBQVgsV0FBVzs0REFBWCxXQUFXO2dFQUhWLEtBQUssRUFBRSxZQUFZLEVBQ1osWUFBWTs7aUZBRXBCLFdBQVc7Y0FKdkIsUUFBUTtlQUFDO2dCQUNOLE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUM7Z0JBQzlCLE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUM7YUFDakM7O3dGQUNZLFdBQVcsY0E1UVgsS0FBSyxFQXlRRyxZQUFZLGFBelFwQixLQUFLLEVBMFFHLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBbmltYXRpb25FdmVudCwgYW5pbWF0ZSwgYW5pbWF0ZUNoaWxkLCBxdWVyeSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgTmdNb2R1bGUsXG4gICAgTmdab25lLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIGluamVjdCxcbiAgICBudW1iZXJBdHRyaWJ1dGVcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc0VtcHR5LCBzZXRBdHRyaWJ1dGUsIHV1aWQgfSBmcm9tICdAcHJpbWV1aXgvdXRpbHMnO1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UsIFNoYXJlZE1vZHVsZSwgVG9hc3RNZXNzYWdlT3B0aW9ucyB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICdwcmltZW5nL2Jhc2Vjb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHsgQ2hlY2tJY29uLCBFeGNsYW1hdGlvblRyaWFuZ2xlSWNvbiwgSW5mb0NpcmNsZUljb24sIFRpbWVzQ2lyY2xlSWNvbiwgVGltZXNJY29uIH0gZnJvbSAncHJpbWVuZy9pY29ucyc7XG5pbXBvcnQgeyBSaXBwbGUgfSBmcm9tICdwcmltZW5nL3JpcHBsZSc7XG5pbXBvcnQgeyBaSW5kZXhVdGlscyB9IGZyb20gJ3ByaW1lbmcvdXRpbHMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUb2FzdFN0eWxlIH0gZnJvbSAnLi9zdHlsZS90b2FzdHN0eWxlJztcbmltcG9ydCB7IFRvYXN0Q2xvc2VFdmVudCwgVG9hc3RJdGVtQ2xvc2VFdmVudCwgVG9hc3RQb3NpdGlvblR5cGUgfSBmcm9tICcuL3RvYXN0LmludGVyZmFjZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC10b2FzdEl0ZW0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQ2hlY2tJY29uLCBFeGNsYW1hdGlvblRyaWFuZ2xlSWNvbiwgSW5mb0NpcmNsZUljb24sIFRpbWVzSWNvbiwgVGltZXNDaXJjbGVJY29uLCBSaXBwbGUsIEJ1dHRvbiwgU2hhcmVkTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAjY29udGFpbmVyXG4gICAgICAgICAgICBbYXR0ci5pZF09XCJtZXNzYWdlPy5pZFwiXG4gICAgICAgICAgICBbY2xhc3NdPVwibWVzc2FnZT8uc3R5bGVDbGFzc1wiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJjeCgnbWVzc2FnZScpXCJcbiAgICAgICAgICAgIFtAbWVzc2FnZVN0YXRlXT1cIntcbiAgICAgICAgICAgICAgICB2YWx1ZTogJ3Zpc2libGUnLFxuICAgICAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICBzaG93VHJhbnNmb3JtUGFyYW1zOiBzaG93VHJhbnNmb3JtT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgaGlkZVRyYW5zZm9ybVBhcmFtczogaGlkZVRyYW5zZm9ybU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgIHNob3dUcmFuc2l0aW9uUGFyYW1zOiBzaG93VHJhbnNpdGlvbk9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgIGhpZGVUcmFuc2l0aW9uUGFyYW1zOiBoaWRlVHJhbnNpdGlvbk9wdGlvbnNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIChtb3VzZWVudGVyKT1cIm9uTW91c2VFbnRlcigpXCJcbiAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cIm9uTW91c2VMZWF2ZSgpXCJcbiAgICAgICAgICAgIHJvbGU9XCJhbGVydFwiXG4gICAgICAgICAgICBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIlxuICAgICAgICAgICAgYXJpYS1hdG9taWM9XCJ0cnVlXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtbmFtZV09XCIndG9hc3QnXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCIncm9vdCdcIlxuICAgICAgICA+XG4gICAgICAgICAgICBAaWYgKGhlYWRsZXNzVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGxlc3NUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IG1lc3NhZ2UsIGNsb3NlRm46IG9uQ2xvc2VJY29uQ2xpY2sgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJjeCgnbWVzc2FnZUNvbnRlbnQnKVwiIFtjbGFzc109XCJtZXNzYWdlPy5jb250ZW50U3R5bGVDbGFzc1wiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInY29udGVudCdcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0ZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJtZXNzYWdlLmljb25cIiBbbmdDbGFzc109XCJjeCgnbWVzc2FnZUljb24nKVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cImN4KCdtZXNzYWdlSWNvbicpXCIgKm5nSWY9XCIhbWVzc2FnZS5pY29uXCIgW2F0dHIuYXJpYS1oaWRkZW5dPVwidHJ1ZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInaWNvbidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAc3dpdGNoIChtZXNzYWdlLnNldmVyaXR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlICgnc3VjY2VzcycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDaGVja0ljb24gW2F0dHIuYXJpYS1oaWRkZW5dPVwidHJ1ZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInaWNvbidcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlICgnaW5mbycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmZvQ2lyY2xlSWNvbiBbYXR0ci5hcmlhLWhpZGRlbl09XCJ0cnVlXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidpY29uJ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdlcnJvcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUaW1lc0NpcmNsZUljb24gW2F0dHIuYXJpYS1oaWRkZW5dPVwidHJ1ZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInaWNvbidcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlICgnd2FybicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxFeGNsYW1hdGlvblRyaWFuZ2xlSWNvbiBbYXR0ci5hcmlhLWhpZGRlbl09XCJ0cnVlXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidpY29uJ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEluZm9DaXJjbGVJY29uIFthdHRyLmFyaWEtaGlkZGVuXT1cInRydWVcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2ljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiY3goJ21lc3NhZ2VUZXh0JylcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3RleHQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJjeCgnc3VtbWFyeScpXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidzdW1tYXJ5J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBtZXNzYWdlLnN1bW1hcnkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImN4KCdkZXRhaWwnKVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInZGV0YWlsJ1wiPnt7IG1lc3NhZ2UuZGV0YWlsIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IG1lc3NhZ2UgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKG1lc3NhZ2U/LmNsb3NhYmxlICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHAtYnV0dG9uIFtzdHlsZUNsYXNzXT1cImN4KCdjbG9zZUJ1dHRvbicpXCIgKG9uQ2xpY2spPVwib25DbG9zZUljb25DbGljaygkZXZlbnQpXCIgKGtleWRvd24uZW50ZXIpPVwib25DbG9zZUljb25DbGljaygkZXZlbnQpXCIgW2F0dHIuYXJpYUxhYmVsXT1cImNsb3NlQXJpYUxhYmVsXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidjbG9zZWJ1dHRvbidcIiByb3VuZGVkIHRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChtZXNzYWdlLmNsb3NlSWNvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1lc3NhZ2UuY2xvc2VJY29uXCIgW25nQ2xhc3NdPVwiY3goJ2Nsb3NlSWNvbicpXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGltZXNJY29uIFtuZ0NsYXNzXT1cImN4KCdjbG9zZUljb24nKVwiIFthdHRyLmFyaWEtaGlkZGVuXT1cInRydWVcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2Nsb3NlaWNvbidcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ21lc3NhZ2VTdGF0ZScsIFtcbiAgICAgICAgICAgIHN0YXRlKFxuICAgICAgICAgICAgICAgICd2aXNpYmxlJyxcbiAgICAgICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCknLFxuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCd2b2lkID0+IConLCBbXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICd7e3Nob3dUcmFuc2Zvcm1QYXJhbXN9fScsXG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDBcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBhbmltYXRlKCd7e3Nob3dUcmFuc2l0aW9uUGFyYW1zfX0nKVxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCcqID0+IHZvaWQnLCBbXG4gICAgICAgICAgICAgICAgYW5pbWF0ZShcbiAgICAgICAgICAgICAgICAgICAgJ3t7aGlkZVRyYW5zaXRpb25QYXJhbXN9fScsXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICd7e2hpZGVUcmFuc2Zvcm1QYXJhbXN9fSdcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdKVxuICAgICAgICBdKVxuICAgIF0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtUb2FzdFN0eWxlXVxufSlcbmV4cG9ydCBjbGFzcyBUb2FzdEl0ZW0gZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBtZXNzYWdlOiBUb2FzdE1lc3NhZ2VPcHRpb25zIHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIGluZGV4OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgbGlmZTogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBASW5wdXQoKSBoZWFkbGVzc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KCkgc2hvd1RyYW5zZm9ybU9wdGlvbnM6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCgpIGhpZGVUcmFuc2Zvcm1PcHRpb25zOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBASW5wdXQoKSBzaG93VHJhbnNpdGlvbk9wdGlvbnM6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCgpIGhpZGVUcmFuc2l0aW9uT3B0aW9uczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgQE91dHB1dCgpIG9uQ2xvc2U6IEV2ZW50RW1pdHRlcjxUb2FzdEl0ZW1DbG9zZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicpIGNvbnRhaW5lclZpZXdDaGlsZDogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICAgIF9jb21wb25lbnRTdHlsZSA9IGluamVjdChUb2FzdFN0eWxlKTtcblxuICAgIHRpbWVvdXQ6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgem9uZTogTmdab25lKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgICAgICAgdGhpcy5pbml0VGltZW91dCgpO1xuICAgIH1cblxuICAgIGluaXRUaW1lb3V0KCkge1xuICAgICAgICBpZiAoIXRoaXMubWVzc2FnZT8uc3RpY2t5KSB7XG4gICAgICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudGltZW91dCA9IHNldFRpbWVvdXQoXG4gICAgICAgICAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25DbG9zZS5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogPG51bWJlcj50aGlzLmluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IDxUb2FzdE1lc3NhZ2VPcHRpb25zPnRoaXMubWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZT8ubGlmZSB8fCB0aGlzLmxpZmUgfHwgMzAwMFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsZWFyVGltZW91dCgpIHtcbiAgICAgICAgaWYgKHRoaXMudGltZW91dCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7XG4gICAgICAgICAgICB0aGlzLnRpbWVvdXQgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Nb3VzZUVudGVyKCkge1xuICAgICAgICB0aGlzLmNsZWFyVGltZW91dCgpO1xuICAgIH1cblxuICAgIG9uTW91c2VMZWF2ZSgpIHtcbiAgICAgICAgdGhpcy5pbml0VGltZW91dCgpO1xuICAgIH1cblxuICAgIG9uQ2xvc2VJY29uQ2xpY2sgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMuY2xlYXJUaW1lb3V0KCk7XG5cbiAgICAgICAgdGhpcy5vbkNsb3NlLmVtaXQoe1xuICAgICAgICAgICAgaW5kZXg6IDxudW1iZXI+dGhpcy5pbmRleCxcbiAgICAgICAgICAgIG1lc3NhZ2U6IDxUb2FzdE1lc3NhZ2VPcHRpb25zPnRoaXMubWVzc2FnZVxuICAgICAgICB9KTtcblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH07XG5cbiAgICBnZXQgY2xvc2VBcmlhTGFiZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbi5hcmlhID8gdGhpcy5jb25maWcudHJhbnNsYXRpb24uYXJpYS5jbG9zZSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5jbGVhclRpbWVvdXQoKTtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG59XG5cbi8qKlxuICogVG9hc3QgaXMgdXNlZCB0byBkaXNwbGF5IG1lc3NhZ2VzIGluIGFuIG92ZXJsYXkuXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtdG9hc3QnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgVG9hc3RJdGVtLCBDaGVja0ljb24sIEluZm9DaXJjbGVJY29uLCBUaW1lc0NpcmNsZUljb24sIEV4Y2xhbWF0aW9uVHJpYW5nbGVJY29uLCBUaW1lc0ljb24sIEJ1dHRvbiwgU2hhcmVkTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2ICNjb250YWluZXIgW25nQ2xhc3NdPVwiY3goJ3Jvb3QnKVwiIFtuZ1N0eWxlXT1cInN4KCdyb290JylcIiBbc3R5bGVdPVwic3R5bGVcIiBbY2xhc3NdPVwic3R5bGVDbGFzc1wiPlxuICAgICAgICAgICAgPHAtdG9hc3RJdGVtXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG1zZyBvZiBtZXNzYWdlczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgW21lc3NhZ2VdPVwibXNnXCJcbiAgICAgICAgICAgICAgICBbaW5kZXhdPVwiaVwiXG4gICAgICAgICAgICAgICAgW2xpZmVdPVwibGlmZVwiXG4gICAgICAgICAgICAgICAgKG9uQ2xvc2UpPVwib25NZXNzYWdlQ2xvc2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW3RlbXBsYXRlXT1cInRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICBbaGVhZGxlc3NUZW1wbGF0ZV09XCJoZWFkbGVzc1RlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICBAdG9hc3RBbmltYXRpb25cbiAgICAgICAgICAgICAgICAoQHRvYXN0QW5pbWF0aW9uLnN0YXJ0KT1cIm9uQW5pbWF0aW9uU3RhcnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKEB0b2FzdEFuaW1hdGlvbi5kb25lKT1cIm9uQW5pbWF0aW9uRW5kKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtzaG93VHJhbnNmb3JtT3B0aW9uc109XCJzaG93VHJhbnNmb3JtT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgW2hpZGVUcmFuc2Zvcm1PcHRpb25zXT1cImhpZGVUcmFuc2Zvcm1PcHRpb25zXCJcbiAgICAgICAgICAgICAgICBbc2hvd1RyYW5zaXRpb25PcHRpb25zXT1cInNob3dUcmFuc2l0aW9uT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgW2hpZGVUcmFuc2l0aW9uT3B0aW9uc109XCJoaWRlVHJhbnNpdGlvbk9wdGlvbnNcIlxuICAgICAgICAgICAgPjwvcC10b2FzdEl0ZW0+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgYW5pbWF0aW9uczogW3RyaWdnZXIoJ3RvYXN0QW5pbWF0aW9uJywgW3RyYW5zaXRpb24oJzplbnRlciwgOmxlYXZlJywgW3F1ZXJ5KCdAKicsIGFuaW1hdGVDaGlsZCgpKV0pXSldLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgcHJvdmlkZXJzOiBbVG9hc3RTdHlsZV1cbn0pXG5leHBvcnQgY2xhc3MgVG9hc3QgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKlxuICAgICAqIEtleSBvZiB0aGUgbWVzc2FnZSBpbiBjYXNlIG1lc3NhZ2UgaXMgdGFyZ2V0ZWQgdG8gYSBzcGVjaWZpYyB0b2FzdCBjb21wb25lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkga2V5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBhdXRvbWF0aWNhbGx5IG1hbmFnZSBsYXllcmluZy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgYXV0b1pJbmRleDogYm9vbGVhbiA9IHRydWU7XG4gICAgLyoqXG4gICAgICogQmFzZSB6SW5kZXggdmFsdWUgdG8gdXNlIGluIGxheWVyaW5nLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIGJhc2VaSW5kZXg6IG51bWJlciA9IDA7XG4gICAgLyoqXG4gICAgICogVGhlIGRlZmF1bHQgdGltZSB0byBkaXNwbGF5IG1lc3NhZ2VzIGZvciBpbiBtaWxsaXNlY29uZHMuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgbGlmZTogbnVtYmVyID0gMzAwMDtcbiAgICAvKipcbiAgICAgKiBJbmxpbmUgc3R5bGUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzdHlsZTogeyBba2xhc3M6IHN0cmluZ106IGFueSB9IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBJbmxpbmUgY2xhc3Mgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBQb3NpdGlvbiBvZiB0aGUgdG9hc3QgaW4gdmlld3BvcnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZ2V0IHBvc2l0aW9uKCk6IFRvYXN0UG9zaXRpb25UeXBlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Bvc2l0aW9uO1xuICAgIH1cblxuICAgIHNldCBwb3NpdGlvbih2YWx1ZTogVG9hc3RQb3NpdGlvblR5cGUpIHtcbiAgICAgICAgdGhpcy5fcG9zaXRpb24gPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJdCBkb2VzIG5vdCBhZGQgdGhlIG5ldyBtZXNzYWdlIGlmIHRoZXJlIGlzIGFscmVhZHkgYSB0b2FzdCBkaXNwbGF5ZWQgd2l0aCB0aGUgc2FtZSBjb250ZW50XG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHByZXZlbnRPcGVuRHVwbGljYXRlczogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIERpc3BsYXlzIG9ubHkgb25jZSBhIG1lc3NhZ2Ugd2l0aCB0aGUgc2FtZSBjb250ZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBwcmV2ZW50RHVwbGljYXRlczogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIFRyYW5zZm9ybSBvcHRpb25zIG9mIHRoZSBzaG93IGFuaW1hdGlvbi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzaG93VHJhbnNmb3JtT3B0aW9uczogc3RyaW5nID0gJ3RyYW5zbGF0ZVkoMTAwJSknO1xuICAgIC8qKlxuICAgICAqIFRyYW5zZm9ybSBvcHRpb25zIG9mIHRoZSBoaWRlIGFuaW1hdGlvbi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBoaWRlVHJhbnNmb3JtT3B0aW9uczogc3RyaW5nID0gJ3RyYW5zbGF0ZVkoLTEwMCUpJztcbiAgICAvKipcbiAgICAgKiBUcmFuc2l0aW9uIG9wdGlvbnMgb2YgdGhlIHNob3cgYW5pbWF0aW9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHNob3dUcmFuc2l0aW9uT3B0aW9uczogc3RyaW5nID0gJzMwMG1zIGVhc2Utb3V0JztcbiAgICAvKipcbiAgICAgKiBUcmFuc2l0aW9uIG9wdGlvbnMgb2YgdGhlIGhpZGUgYW5pbWF0aW9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGhpZGVUcmFuc2l0aW9uT3B0aW9uczogc3RyaW5nID0gJzI1MG1zIGVhc2UtaW4nO1xuICAgIC8qKlxuICAgICAqIE9iamVjdCBsaXRlcmFsIHRvIGRlZmluZSBzdHlsZXMgcGVyIHNjcmVlbiBzaXplLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGJyZWFrcG9pbnRzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIGEgbWVzc2FnZSBpcyBjbG9zZWQuXG4gICAgICogQHBhcmFtIHtUb2FzdENsb3NlRXZlbnR9IGV2ZW50IC0gY3VzdG9tIGNsb3NlIGV2ZW50LlxuICAgICAqIEBncm91cCBFbWl0c1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvbkNsb3NlOiBFdmVudEVtaXR0ZXI8VG9hc3RDbG9zZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8VG9hc3RDbG9zZUV2ZW50PigpO1xuICAgIC8qKlxuICAgICAqIEN1c3RvbSB0ZW1wbGF0ZSBvZiBtZXNzYWdlLlxuICAgICAqIEBncm91cCBUZW1wbGF0ZXNcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdtZXNzYWdlJykgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogQ3VzdG9tIGhlYWRsZXNzIHRlbXBsYXRlLlxuICAgICAqIEBncm91cCBUZW1wbGF0ZXNcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdoZWFkbGVzcycpIGhlYWRsZXNzVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBAVmlld0NoaWxkKCdjb250YWluZXInKSBjb250YWluZXJWaWV3Q2hpbGQ6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgICBtZXNzYWdlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG5cbiAgICBjbGVhclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuXG4gICAgbWVzc2FnZXM6IFRvYXN0TWVzc2FnZU9wdGlvbnNbXSB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbiAgICBtZXNzYWdlc0FyY2hpZXZlOiBUb2FzdE1lc3NhZ2VPcHRpb25zW10gfCB1bmRlZmluZWQ7XG5cbiAgICBfcG9zaXRpb246IFRvYXN0UG9zaXRpb25UeXBlID0gJ3RvcC1yaWdodCc7XG5cbiAgICBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UgPSBpbmplY3QoTWVzc2FnZVNlcnZpY2UpO1xuXG4gICAgX2NvbXBvbmVudFN0eWxlID0gaW5qZWN0KFRvYXN0U3R5bGUpO1xuXG4gICAgc3R5bGVFbGVtZW50OiBhbnk7XG5cbiAgICBpZDogc3RyaW5nID0gdXVpZCgncG5faWRfJyk7XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgICAgICB0aGlzLm1lc3NhZ2VTdWJzY3JpcHRpb24gPSB0aGlzLm1lc3NhZ2VTZXJ2aWNlLm1lc3NhZ2VPYnNlcnZlci5zdWJzY3JpYmUoKG1lc3NhZ2VzKSA9PiB7XG4gICAgICAgICAgICBpZiAobWVzc2FnZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShtZXNzYWdlcykpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRNZXNzYWdlcyA9IG1lc3NhZ2VzLmZpbHRlcigobSkgPT4gdGhpcy5jYW5BZGQobSkpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZChmaWx0ZXJlZE1lc3NhZ2VzKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY2FuQWRkKG1lc3NhZ2VzKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZChbbWVzc2FnZXNdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY2xlYXJTdWJzY3JpcHRpb24gPSB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmNsZWFyT2JzZXJ2ZXIuc3Vic2NyaWJlKChrZXkpID0+IHtcbiAgICAgICAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5rZXkgPT09IGtleSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZXMgPSBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgICBpZiAodGhpcy5icmVha3BvaW50cykge1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVTdHlsZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWRkKG1lc3NhZ2VzOiBUb2FzdE1lc3NhZ2VPcHRpb25zW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tZXNzYWdlcyA9IHRoaXMubWVzc2FnZXMgPyBbLi4udGhpcy5tZXNzYWdlcywgLi4ubWVzc2FnZXNdIDogWy4uLm1lc3NhZ2VzXTtcblxuICAgICAgICBpZiAodGhpcy5wcmV2ZW50RHVwbGljYXRlcykge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlc0FyY2hpZXZlID0gdGhpcy5tZXNzYWdlc0FyY2hpZXZlID8gWy4uLnRoaXMubWVzc2FnZXNBcmNoaWV2ZSwgLi4ubWVzc2FnZXNdIDogWy4uLm1lc3NhZ2VzXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgY2FuQWRkKG1lc3NhZ2U6IFRvYXN0TWVzc2FnZU9wdGlvbnMpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IGFsbG93ID0gdGhpcy5rZXkgPT09IG1lc3NhZ2Uua2V5O1xuXG4gICAgICAgIGlmIChhbGxvdyAmJiB0aGlzLnByZXZlbnRPcGVuRHVwbGljYXRlcykge1xuICAgICAgICAgICAgYWxsb3cgPSAhdGhpcy5jb250YWluc01lc3NhZ2UodGhpcy5tZXNzYWdlcyEsIG1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFsbG93ICYmIHRoaXMucHJldmVudER1cGxpY2F0ZXMpIHtcbiAgICAgICAgICAgIGFsbG93ID0gIXRoaXMuY29udGFpbnNNZXNzYWdlKHRoaXMubWVzc2FnZXNBcmNoaWV2ZSEsIG1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFsbG93O1xuICAgIH1cblxuICAgIGNvbnRhaW5zTWVzc2FnZShjb2xsZWN0aW9uOiBUb2FzdE1lc3NhZ2VPcHRpb25zW10sIG1lc3NhZ2U6IFRvYXN0TWVzc2FnZU9wdGlvbnMpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCFjb2xsZWN0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgY29sbGVjdGlvbi5maW5kKChtKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG0uc3VtbWFyeSA9PT0gbWVzc2FnZS5zdW1tYXJ5ICYmIG0uZGV0YWlsID09IG1lc3NhZ2UuZGV0YWlsICYmIG0uc2V2ZXJpdHkgPT09IG1lc3NhZ2Uuc2V2ZXJpdHk7XG4gICAgICAgICAgICB9KSAhPSBudWxsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgb25NZXNzYWdlQ2xvc2UoZXZlbnQ6IFRvYXN0SXRlbUNsb3NlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5tZXNzYWdlcz8uc3BsaWNlKGV2ZW50LmluZGV4LCAxKTtcblxuICAgICAgICB0aGlzLm9uQ2xvc2UuZW1pdCh7XG4gICAgICAgICAgICBtZXNzYWdlOiBldmVudC5tZXNzYWdlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIG9uQW5pbWF0aW9uU3RhcnQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC5mcm9tU3RhdGUgPT09ICd2b2lkJykge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5jb250YWluZXJWaWV3Q2hpbGQ/Lm5hdGl2ZUVsZW1lbnQsIHRoaXMuaWQsICcnKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmF1dG9aSW5kZXggJiYgdGhpcy5jb250YWluZXJWaWV3Q2hpbGQ/Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuekluZGV4ID09PSAnJykge1xuICAgICAgICAgICAgICAgIFpJbmRleFV0aWxzLnNldCgnbW9kYWwnLCB0aGlzLmNvbnRhaW5lclZpZXdDaGlsZD8ubmF0aXZlRWxlbWVudCwgdGhpcy5iYXNlWkluZGV4IHx8IHRoaXMuY29uZmlnLnpJbmRleC5tb2RhbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkFuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LnRvU3RhdGUgPT09ICd2b2lkJykge1xuICAgICAgICAgICAgaWYgKHRoaXMuYXV0b1pJbmRleCAmJiBpc0VtcHR5KHRoaXMubWVzc2FnZXMpKSB7XG4gICAgICAgICAgICAgICAgWkluZGV4VXRpbHMuY2xlYXIodGhpcy5jb250YWluZXJWaWV3Q2hpbGQ/Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY3JlYXRlU3R5bGUoKSB7XG4gICAgICAgIGlmICghdGhpcy5zdHlsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuc3R5bGVFbGVtZW50ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgICAgICAgICAgdGhpcy5zdHlsZUVsZW1lbnQudHlwZSA9ICd0ZXh0L2Nzcyc7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZG9jdW1lbnQuaGVhZCwgdGhpcy5zdHlsZUVsZW1lbnQpO1xuICAgICAgICAgICAgbGV0IGlubmVySFRNTCA9ICcnO1xuICAgICAgICAgICAgZm9yIChsZXQgYnJlYWtwb2ludCBpbiB0aGlzLmJyZWFrcG9pbnRzKSB7XG4gICAgICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnRTdHlsZSA9ICcnO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IHN0eWxlUHJvcCBpbiB0aGlzLmJyZWFrcG9pbnRzW2JyZWFrcG9pbnRdKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnRTdHlsZSArPSBzdHlsZVByb3AgKyAnOicgKyB0aGlzLmJyZWFrcG9pbnRzW2JyZWFrcG9pbnRdW3N0eWxlUHJvcF0gKyAnICFpbXBvcnRhbnQ7JztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaW5uZXJIVE1MICs9IGBcbiAgICAgICAgICAgICAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJHticmVha3BvaW50fSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLnAtdG9hc3RbJHt0aGlzLmlkfV0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgJHticmVha3BvaW50U3R5bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBgO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuc3R5bGVFbGVtZW50LCAnaW5uZXJIVE1MJywgaW5uZXJIVE1MKTtcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZSh0aGlzLnN0eWxlRWxlbWVudCwgJ25vbmNlJywgdGhpcy5jb25maWc/LmNzcCgpPy5ub25jZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZXN0cm95U3R5bGUoKSB7XG4gICAgICAgIGlmICh0aGlzLnN0eWxlRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZCh0aGlzLmRvY3VtZW50LmhlYWQsIHRoaXMuc3R5bGVFbGVtZW50KTtcbiAgICAgICAgICAgIHRoaXMuc3R5bGVFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5tZXNzYWdlU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmNvbnRhaW5lclZpZXdDaGlsZCAmJiB0aGlzLmF1dG9aSW5kZXgpIHtcbiAgICAgICAgICAgIFpJbmRleFV0aWxzLmNsZWFyKHRoaXMuY29udGFpbmVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY2xlYXJTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZGVzdHJveVN0eWxlKCk7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtUb2FzdCwgU2hhcmVkTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbVG9hc3QsIFNoYXJlZE1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgVG9hc3RNb2R1bGUge31cbiJdfQ==
760
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9hc3QvdG9hc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQixPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0SCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUVILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUVaLFlBQVksRUFDWixLQUFLLEVBQ0wsUUFBUSxFQUlSLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixNQUFNLEVBQ04sZUFBZSxFQUNmLGVBQWUsRUFFbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUF1QixNQUFNLGFBQWEsQ0FBQztBQUMvRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0csT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU1QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7OztJQStCaEMsd0JBQThIOzs7SUFBOUgsMEZBQStHOzs7SUFBNUQsQUFBcEMsMERBQW9DLGdHQUEwRDs7O0lBSXJHLDBCQUFnRTs7O0lBQXJDLGtEQUE2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WUFha0MscUJBQXFCO2tCQUE1RCxLQUFLO21CQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO1lBS0UsaUJBQWlCO2tCQUF4RCxLQUFLO21CQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO1lBSzdCLG9CQUFvQjtrQkFBNUIsS0FBSztZQUtHLG9CQUFvQjtrQkFBNUIsS0FBSztZQUtHLHFCQUFxQjtrQkFBN0IsS0FBSztZQUtHLHFCQUFxQjtrQkFBN0IsS0FBSztZQUtHLFdBQVc7a0JBQW5CLEtBQUs7WUFNSSxPQUFPO2tCQUFoQixNQUFNO1lBS2tCLFFBQVE7a0JBQWhDLFlBQVk7bUJBQUMsU0FBUztZQUtHLGdCQUFnQjtrQkFBekMsWUFBWTttQkFBQyxVQUFVO1lBRUEsa0JBQWtCO2tCQUF6QyxTQUFTO21CQUFDLFdBQVc7WUFvQlUsU0FBUztrQkFBeEMsZUFBZTttQkFBQyxhQUFhOztrRkFySHJCLEtBQUs7QUFtU2xCLE1BQU0sT0FBTyxXQUFXO3FHQUFYLFdBQVc7NERBQVgsV0FBVztnRUFIVixLQUFLLEVBQUUsWUFBWSxFQUNaLFlBQVk7O2lGQUVwQixXQUFXO2NBSnZCLFFBQVE7ZUFBQztnQkFDTixPQUFPLEVBQUUsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDO2dCQUM5QixPQUFPLEVBQUUsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDO2FBQ2pDOzt3RkFDWSxXQUFXLGNBblNYLEtBQUssRUFnU0csWUFBWSxhQWhTcEIsS0FBSyxFQWlTRyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQW5pbWF0aW9uRXZlbnQsIGFuaW1hdGUsIGFuaW1hdGVDaGlsZCwgcXVlcnksIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE5nTW9kdWxlLFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBpbmplY3QsXG4gICAgbnVtYmVyQXR0cmlidXRlLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBRdWVyeUxpc3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc0VtcHR5LCBzZXRBdHRyaWJ1dGUsIHV1aWQgfSBmcm9tICdAcHJpbWV1aXgvdXRpbHMnO1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UsIFByaW1lVGVtcGxhdGUsIFNoYXJlZE1vZHVsZSwgVG9hc3RNZXNzYWdlT3B0aW9ucyB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICdwcmltZW5nL2Jhc2Vjb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHsgQ2hlY2tJY29uLCBFeGNsYW1hdGlvblRyaWFuZ2xlSWNvbiwgSW5mb0NpcmNsZUljb24sIFRpbWVzQ2lyY2xlSWNvbiwgVGltZXNJY29uIH0gZnJvbSAncHJpbWVuZy9pY29ucyc7XG5pbXBvcnQgeyBaSW5kZXhVdGlscyB9IGZyb20gJ3ByaW1lbmcvdXRpbHMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUb2FzdFN0eWxlIH0gZnJvbSAnLi9zdHlsZS90b2FzdHN0eWxlJztcbmltcG9ydCB7IFRvYXN0Q2xvc2VFdmVudCwgVG9hc3RJdGVtQ2xvc2VFdmVudCwgVG9hc3RQb3NpdGlvblR5cGUgfSBmcm9tICcuL3RvYXN0LmludGVyZmFjZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC10b2FzdEl0ZW0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQ2hlY2tJY29uLCBFeGNsYW1hdGlvblRyaWFuZ2xlSWNvbiwgSW5mb0NpcmNsZUljb24sIFRpbWVzSWNvbiwgVGltZXNDaXJjbGVJY29uLCBCdXR0b24sIFNoYXJlZE1vZHVsZV0sXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgI2NvbnRhaW5lclxuICAgICAgICAgICAgW2F0dHIuaWRdPVwibWVzc2FnZT8uaWRcIlxuICAgICAgICAgICAgW2NsYXNzXT1cIm1lc3NhZ2U/LnN0eWxlQ2xhc3NcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiY3goJ21lc3NhZ2UnKVwiXG4gICAgICAgICAgICBbQG1lc3NhZ2VTdGF0ZV09XCJ7XG4gICAgICAgICAgICAgICAgdmFsdWU6ICd2aXNpYmxlJyxcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgc2hvd1RyYW5zZm9ybVBhcmFtczogc2hvd1RyYW5zZm9ybU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgIGhpZGVUcmFuc2Zvcm1QYXJhbXM6IGhpZGVUcmFuc2Zvcm1PcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICBzaG93VHJhbnNpdGlvblBhcmFtczogc2hvd1RyYW5zaXRpb25PcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICBoaWRlVHJhbnNpdGlvblBhcmFtczogaGlkZVRyYW5zaXRpb25PcHRpb25zXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAobW91c2VlbnRlcik9XCJvbk1vdXNlRW50ZXIoKVwiXG4gICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJvbk1vdXNlTGVhdmUoKVwiXG4gICAgICAgICAgICByb2xlPVwiYWxlcnRcIlxuICAgICAgICAgICAgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCJcbiAgICAgICAgICAgIGFyaWEtYXRvbWljPVwidHJ1ZVwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXBjLW5hbWVdPVwiJ3RvYXN0J1wiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3Jvb3QnXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgQGlmIChoZWFkbGVzc1RlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRsZXNzVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBtZXNzYWdlLCBjbG9zZUZuOiBvbkNsb3NlSWNvbkNsaWNrIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiY3goJ21lc3NhZ2VDb250ZW50JylcIiBbY2xhc3NdPVwibWVzc2FnZT8uY29udGVudFN0eWxlQ2xhc3NcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2NvbnRlbnQnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibWVzc2FnZS5pY29uXCIgW25nQ2xhc3NdPVwiY3goJ21lc3NhZ2VJY29uJylcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJjeCgnbWVzc2FnZUljb24nKVwiICpuZ0lmPVwiIW1lc3NhZ2UuaWNvblwiIFthdHRyLmFyaWEtaGlkZGVuXT1cInRydWVcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2ljb24nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQHN3aXRjaCAobWVzc2FnZS5zZXZlcml0eSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ3N1Y2Nlc3MnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hlY2tJY29uIFthdHRyLmFyaWEtaGlkZGVuXT1cInRydWVcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2ljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ2luZm8nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5mb0NpcmNsZUljb24gW2F0dHIuYXJpYS1oaWRkZW5dPVwidHJ1ZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInaWNvbidcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlICgnZXJyb3InKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGltZXNDaXJjbGVJY29uIFthdHRyLmFyaWEtaGlkZGVuXT1cInRydWVcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2ljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ3dhcm4nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RXhjbGFtYXRpb25UcmlhbmdsZUljb24gW2F0dHIuYXJpYS1oaWRkZW5dPVwidHJ1ZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInaWNvbidcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBkZWZhdWx0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmZvQ2lyY2xlSWNvbiBbYXR0ci5hcmlhLWhpZGRlbl09XCJ0cnVlXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidpY29uJ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImN4KCdtZXNzYWdlVGV4dCcpXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIid0ZXh0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiY3goJ3N1bW1hcnknKVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInc3VtbWFyeSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbWVzc2FnZS5zdW1tYXJ5IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJjeCgnZGV0YWlsJylcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2RldGFpbCdcIj57eyBtZXNzYWdlLmRldGFpbCB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBtZXNzYWdlIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChtZXNzYWdlPy5jbG9zYWJsZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwLWJ1dHRvbiBbc3R5bGVDbGFzc109XCJjeCgnY2xvc2VCdXR0b24nKVwiIChvbkNsaWNrKT1cIm9uQ2xvc2VJY29uQ2xpY2soJGV2ZW50KVwiIChrZXlkb3duLmVudGVyKT1cIm9uQ2xvc2VJY29uQ2xpY2soJGV2ZW50KVwiIFthdHRyLmFyaWFMYWJlbF09XCJjbG9zZUFyaWFMYWJlbFwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInY2xvc2VidXR0b24nXCIgcm91bmRlZCB0ZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAobWVzc2FnZS5jbG9zZUljb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJtZXNzYWdlLmNsb3NlSWNvblwiIFtuZ0NsYXNzXT1cImN4KCdjbG9zZUljb24nKVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRpbWVzSWNvbiBbbmdDbGFzc109XCJjeCgnY2xvc2VJY29uJylcIiBbYXR0ci5hcmlhLWhpZGRlbl09XCJ0cnVlXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidjbG9zZWljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3AtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKCdtZXNzYWdlU3RhdGUnLCBbXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICAndmlzaWJsZScsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJyxcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiAqJywgW1xuICAgICAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAne3tzaG93VHJhbnNmb3JtUGFyYW1zfX0nLFxuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgne3tzaG93VHJhbnNpdGlvblBhcmFtc319JylcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignKiA9PiB2b2lkJywgW1xuICAgICAgICAgICAgICAgIGFuaW1hdGUoXG4gICAgICAgICAgICAgICAgICAgICd7e2hpZGVUcmFuc2l0aW9uUGFyYW1zfX0nLFxuICAgICAgICAgICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAne3toaWRlVHJhbnNmb3JtUGFyYW1zfX0nXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgXSlcbiAgICAgICAgXSlcbiAgICBdLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbVG9hc3RTdHlsZV1cbn0pXG5leHBvcnQgY2xhc3MgVG9hc3RJdGVtIGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgbWVzc2FnZTogVG9hc3RNZXNzYWdlT3B0aW9ucyB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBpbmRleDogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIGxpZmU6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KCkgaGVhZGxlc3NUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCgpIHNob3dUcmFuc2Zvcm1PcHRpb25zOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBASW5wdXQoKSBoaWRlVHJhbnNmb3JtT3B0aW9uczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KCkgc2hvd1RyYW5zaXRpb25PcHRpb25zOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBASW5wdXQoKSBoaWRlVHJhbnNpdGlvbk9wdGlvbnM6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIEBPdXRwdXQoKSBvbkNsb3NlOiBFdmVudEVtaXR0ZXI8VG9hc3RJdGVtQ2xvc2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAVmlld0NoaWxkKCdjb250YWluZXInKSBjb250YWluZXJWaWV3Q2hpbGQ6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgICBfY29tcG9uZW50U3R5bGUgPSBpbmplY3QoVG9hc3RTdHlsZSk7XG5cbiAgICB0aW1lb3V0OiBhbnk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHpvbmU6IE5nWm9uZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgICAgIHRoaXMuaW5pdFRpbWVvdXQoKTtcbiAgICB9XG5cbiAgICBpbml0VGltZW91dCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLm1lc3NhZ2U/LnN0aWNreSkge1xuICAgICAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRpbWVvdXQgPSBzZXRUaW1lb3V0KFxuICAgICAgICAgICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQ2xvc2UuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IDxudW1iZXI+dGhpcy5pbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiA8VG9hc3RNZXNzYWdlT3B0aW9ucz50aGlzLm1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2U/LmxpZmUgfHwgdGhpcy5saWZlIHx8IDMwMDBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbGVhclRpbWVvdXQoKSB7XG4gICAgICAgIGlmICh0aGlzLnRpbWVvdXQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpO1xuICAgICAgICAgICAgdGhpcy50aW1lb3V0ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTW91c2VFbnRlcigpIHtcbiAgICAgICAgdGhpcy5jbGVhclRpbWVvdXQoKTtcbiAgICB9XG5cbiAgICBvbk1vdXNlTGVhdmUoKSB7XG4gICAgICAgIHRoaXMuaW5pdFRpbWVvdXQoKTtcbiAgICB9XG5cbiAgICBvbkNsb3NlSWNvbkNsaWNrID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLmNsZWFyVGltZW91dCgpO1xuXG4gICAgICAgIHRoaXMub25DbG9zZS5lbWl0KHtcbiAgICAgICAgICAgIGluZGV4OiA8bnVtYmVyPnRoaXMuaW5kZXgsXG4gICAgICAgICAgICBtZXNzYWdlOiA8VG9hc3RNZXNzYWdlT3B0aW9ucz50aGlzLm1lc3NhZ2VcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9O1xuXG4gICAgZ2V0IGNsb3NlQXJpYUxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWcudHJhbnNsYXRpb24uYXJpYSA/IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEuY2xvc2UgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuY2xlYXJUaW1lb3V0KCk7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxufVxuXG4vKipcbiAqIFRvYXN0IGlzIHVzZWQgdG8gZGlzcGxheSBtZXNzYWdlcyBpbiBhbiBvdmVybGF5LlxuICogQGdyb3VwIENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLXRvYXN0JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFRvYXN0SXRlbSwgU2hhcmVkTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2ICNjb250YWluZXIgW25nQ2xhc3NdPVwiY3goJ3Jvb3QnKVwiIFtuZ1N0eWxlXT1cInN4KCdyb290JylcIiBbc3R5bGVdPVwic3R5bGVcIiBbY2xhc3NdPVwic3R5bGVDbGFzc1wiPlxuICAgICAgICAgICAgPHAtdG9hc3RJdGVtXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG1zZyBvZiBtZXNzYWdlczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgW21lc3NhZ2VdPVwibXNnXCJcbiAgICAgICAgICAgICAgICBbaW5kZXhdPVwiaVwiXG4gICAgICAgICAgICAgICAgW2xpZmVdPVwibGlmZVwiXG4gICAgICAgICAgICAgICAgKG9uQ2xvc2UpPVwib25NZXNzYWdlQ2xvc2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW3RlbXBsYXRlXT1cInRlbXBsYXRlIHx8IF90ZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgW2hlYWRsZXNzVGVtcGxhdGVdPVwiaGVhZGxlc3NUZW1wbGF0ZSB8fCBfaGVhZGxlc3NUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgQHRvYXN0QW5pbWF0aW9uXG4gICAgICAgICAgICAgICAgKEB0b2FzdEFuaW1hdGlvbi5zdGFydCk9XCJvbkFuaW1hdGlvblN0YXJ0KCRldmVudClcIlxuICAgICAgICAgICAgICAgIChAdG9hc3RBbmltYXRpb24uZG9uZSk9XCJvbkFuaW1hdGlvbkVuZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbc2hvd1RyYW5zZm9ybU9wdGlvbnNdPVwic2hvd1RyYW5zZm9ybU9wdGlvbnNcIlxuICAgICAgICAgICAgICAgIFtoaWRlVHJhbnNmb3JtT3B0aW9uc109XCJoaWRlVHJhbnNmb3JtT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgW3Nob3dUcmFuc2l0aW9uT3B0aW9uc109XCJzaG93VHJhbnNpdGlvbk9wdGlvbnNcIlxuICAgICAgICAgICAgICAgIFtoaWRlVHJhbnNpdGlvbk9wdGlvbnNdPVwiaGlkZVRyYW5zaXRpb25PcHRpb25zXCJcbiAgICAgICAgICAgID48L3AtdG9hc3RJdGVtPlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGFuaW1hdGlvbnM6IFt0cmlnZ2VyKCd0b2FzdEFuaW1hdGlvbicsIFt0cmFuc2l0aW9uKCc6ZW50ZXIsIDpsZWF2ZScsIFtxdWVyeSgnQConLCBhbmltYXRlQ2hpbGQoKSldKV0pXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW1RvYXN0U3R5bGVdXG59KVxuZXhwb3J0IGNsYXNzIFRvYXN0IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBLZXkgb2YgdGhlIG1lc3NhZ2UgaW4gY2FzZSBtZXNzYWdlIGlzIHRhcmdldGVkIHRvIGEgc3BlY2lmaWMgdG9hc3QgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gYXV0b21hdGljYWxseSBtYW5hZ2UgbGF5ZXJpbmcuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGF1dG9aSW5kZXg6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIEJhc2UgekluZGV4IHZhbHVlIHRvIHVzZSBpbiBsYXllcmluZy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBiYXNlWkluZGV4OiBudW1iZXIgPSAwO1xuICAgIC8qKlxuICAgICAqIFRoZSBkZWZhdWx0IHRpbWUgdG8gZGlzcGxheSBtZXNzYWdlcyBmb3IgaW4gbWlsbGlzZWNvbmRzLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIGxpZmU6IG51bWJlciA9IDMwMDA7XG4gICAgLyoqXG4gICAgICogSW5saW5lIHN0eWxlIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc3R5bGU6IHsgW2tsYXNzOiBzdHJpbmddOiBhbnkgfSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogSW5saW5lIGNsYXNzIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogUG9zaXRpb24gb2YgdGhlIHRvYXN0IGluIHZpZXdwb3J0LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGdldCBwb3NpdGlvbigpOiBUb2FzdFBvc2l0aW9uVHlwZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wb3NpdGlvbjtcbiAgICB9XG5cbiAgICBzZXQgcG9zaXRpb24odmFsdWU6IFRvYXN0UG9zaXRpb25UeXBlKSB7XG4gICAgICAgIHRoaXMuX3Bvc2l0aW9uID0gdmFsdWU7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXQgZG9lcyBub3QgYWRkIHRoZSBuZXcgbWVzc2FnZSBpZiB0aGVyZSBpcyBhbHJlYWR5IGEgdG9hc3QgZGlzcGxheWVkIHdpdGggdGhlIHNhbWUgY29udGVudFxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBwcmV2ZW50T3BlbkR1cGxpY2F0ZXM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBEaXNwbGF5cyBvbmx5IG9uY2UgYSBtZXNzYWdlIHdpdGggdGhlIHNhbWUgY29udGVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcHJldmVudER1cGxpY2F0ZXM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBUcmFuc2Zvcm0gb3B0aW9ucyBvZiB0aGUgc2hvdyBhbmltYXRpb24uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc2hvd1RyYW5zZm9ybU9wdGlvbnM6IHN0cmluZyA9ICd0cmFuc2xhdGVZKDEwMCUpJztcbiAgICAvKipcbiAgICAgKiBUcmFuc2Zvcm0gb3B0aW9ucyBvZiB0aGUgaGlkZSBhbmltYXRpb24uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgaGlkZVRyYW5zZm9ybU9wdGlvbnM6IHN0cmluZyA9ICd0cmFuc2xhdGVZKC0xMDAlKSc7XG4gICAgLyoqXG4gICAgICogVHJhbnNpdGlvbiBvcHRpb25zIG9mIHRoZSBzaG93IGFuaW1hdGlvbi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzaG93VHJhbnNpdGlvbk9wdGlvbnM6IHN0cmluZyA9ICczMDBtcyBlYXNlLW91dCc7XG4gICAgLyoqXG4gICAgICogVHJhbnNpdGlvbiBvcHRpb25zIG9mIHRoZSBoaWRlIGFuaW1hdGlvbi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBoaWRlVHJhbnNpdGlvbk9wdGlvbnM6IHN0cmluZyA9ICcyNTBtcyBlYXNlLWluJztcbiAgICAvKipcbiAgICAgKiBPYmplY3QgbGl0ZXJhbCB0byBkZWZpbmUgc3R5bGVzIHBlciBzY3JlZW4gc2l6ZS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBicmVha3BvaW50czogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBhIG1lc3NhZ2UgaXMgY2xvc2VkLlxuICAgICAqIEBwYXJhbSB7VG9hc3RDbG9zZUV2ZW50fSBldmVudCAtIGN1c3RvbSBjbG9zZSBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25DbG9zZTogRXZlbnRFbWl0dGVyPFRvYXN0Q2xvc2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFRvYXN0Q2xvc2VFdmVudD4oKTtcbiAgICAvKipcbiAgICAgKiBDdXN0b20gdGVtcGxhdGUgb2YgbWVzc2FnZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnbWVzc2FnZScpIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEN1c3RvbSBoZWFkbGVzcyB0ZW1wbGF0ZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnaGVhZGxlc3MnKSBoZWFkbGVzc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgQFZpZXdDaGlsZCgnY29udGFpbmVyJykgY29udGFpbmVyVmlld0NoaWxkOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gICAgbWVzc2FnZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuXG4gICAgY2xlYXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcblxuICAgIG1lc3NhZ2VzOiBUb2FzdE1lc3NhZ2VPcHRpb25zW10gfCBudWxsIHwgdW5kZWZpbmVkO1xuXG4gICAgbWVzc2FnZXNBcmNoaWV2ZTogVG9hc3RNZXNzYWdlT3B0aW9uc1tdIHwgdW5kZWZpbmVkO1xuXG4gICAgX3Bvc2l0aW9uOiBUb2FzdFBvc2l0aW9uVHlwZSA9ICd0b3AtcmlnaHQnO1xuXG4gICAgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlID0gaW5qZWN0KE1lc3NhZ2VTZXJ2aWNlKTtcblxuICAgIF9jb21wb25lbnRTdHlsZSA9IGluamVjdChUb2FzdFN0eWxlKTtcblxuICAgIHN0eWxlRWxlbWVudDogYW55O1xuXG4gICAgaWQ6IHN0cmluZyA9IHV1aWQoJ3BuX2lkXycpO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihQcmltZVRlbXBsYXRlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxQcmltZVRlbXBsYXRlPiB8IHVuZGVmaW5lZDtcblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgICAgIHRoaXMubWVzc2FnZVN1YnNjcmlwdGlvbiA9IHRoaXMubWVzc2FnZVNlcnZpY2UubWVzc2FnZU9ic2VydmVyLnN1YnNjcmliZSgobWVzc2FnZXMpID0+IHtcbiAgICAgICAgICAgIGlmIChtZXNzYWdlcykge1xuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG1lc3NhZ2VzKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZE1lc3NhZ2VzID0gbWVzc2FnZXMuZmlsdGVyKChtKSA9PiB0aGlzLmNhbkFkZChtKSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkKGZpbHRlcmVkTWVzc2FnZXMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jYW5BZGQobWVzc2FnZXMpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkKFttZXNzYWdlc10pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5jbGVhclN1YnNjcmlwdGlvbiA9IHRoaXMubWVzc2FnZVNlcnZpY2UuY2xlYXJPYnNlcnZlci5zdWJzY3JpYmUoKGtleSkgPT4ge1xuICAgICAgICAgICAgaWYgKGtleSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmtleSA9PT0ga2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZXMgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlcyA9IG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIF90ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIF9oZWFkbGVzc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnRlbXBsYXRlcz8uZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChpdGVtLmdldFR5cGUoKSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ21lc3NhZ2UnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl90ZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2hlYWRsZXNzJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faGVhZGxlc3NUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgICAgICAgaWYgKHRoaXMuYnJlYWtwb2ludHMpIHtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlU3R5bGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFkZChtZXNzYWdlczogVG9hc3RNZXNzYWdlT3B0aW9uc1tdKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWVzc2FnZXMgPSB0aGlzLm1lc3NhZ2VzID8gWy4uLnRoaXMubWVzc2FnZXMsIC4uLm1lc3NhZ2VzXSA6IFsuLi5tZXNzYWdlc107XG5cbiAgICAgICAgaWYgKHRoaXMucHJldmVudER1cGxpY2F0ZXMpIHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZXNBcmNoaWV2ZSA9IHRoaXMubWVzc2FnZXNBcmNoaWV2ZSA/IFsuLi50aGlzLm1lc3NhZ2VzQXJjaGlldmUsIC4uLm1lc3NhZ2VzXSA6IFsuLi5tZXNzYWdlc107XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIGNhbkFkZChtZXNzYWdlOiBUb2FzdE1lc3NhZ2VPcHRpb25zKTogYm9vbGVhbiB7XG4gICAgICAgIGxldCBhbGxvdyA9IHRoaXMua2V5ID09PSBtZXNzYWdlLmtleTtcblxuICAgICAgICBpZiAoYWxsb3cgJiYgdGhpcy5wcmV2ZW50T3BlbkR1cGxpY2F0ZXMpIHtcbiAgICAgICAgICAgIGFsbG93ID0gIXRoaXMuY29udGFpbnNNZXNzYWdlKHRoaXMubWVzc2FnZXMhLCBtZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhbGxvdyAmJiB0aGlzLnByZXZlbnREdXBsaWNhdGVzKSB7XG4gICAgICAgICAgICBhbGxvdyA9ICF0aGlzLmNvbnRhaW5zTWVzc2FnZSh0aGlzLm1lc3NhZ2VzQXJjaGlldmUhLCBtZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhbGxvdztcbiAgICB9XG5cbiAgICBjb250YWluc01lc3NhZ2UoY29sbGVjdGlvbjogVG9hc3RNZXNzYWdlT3B0aW9uc1tdLCBtZXNzYWdlOiBUb2FzdE1lc3NhZ2VPcHRpb25zKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghY29sbGVjdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGNvbGxlY3Rpb24uZmluZCgobSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBtLnN1bW1hcnkgPT09IG1lc3NhZ2Uuc3VtbWFyeSAmJiBtLmRldGFpbCA9PSBtZXNzYWdlLmRldGFpbCAmJiBtLnNldmVyaXR5ID09PSBtZXNzYWdlLnNldmVyaXR5O1xuICAgICAgICAgICAgfSkgIT0gbnVsbFxuICAgICAgICApO1xuICAgIH1cblxuICAgIG9uTWVzc2FnZUNsb3NlKGV2ZW50OiBUb2FzdEl0ZW1DbG9zZUV2ZW50KSB7XG4gICAgICAgIHRoaXMubWVzc2FnZXM/LnNwbGljZShldmVudC5pbmRleCwgMSk7XG5cbiAgICAgICAgdGhpcy5vbkNsb3NlLmVtaXQoe1xuICAgICAgICAgICAgbWVzc2FnZTogZXZlbnQubWVzc2FnZVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBvbkFuaW1hdGlvblN0YXJ0KGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xuICAgICAgICBpZiAoZXZlbnQuZnJvbVN0YXRlID09PSAndm9pZCcpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuY29udGFpbmVyVmlld0NoaWxkPy5uYXRpdmVFbGVtZW50LCB0aGlzLmlkLCAnJyk7XG4gICAgICAgICAgICBpZiAodGhpcy5hdXRvWkluZGV4ICYmIHRoaXMuY29udGFpbmVyVmlld0NoaWxkPy5uYXRpdmVFbGVtZW50LnN0eWxlLnpJbmRleCA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICBaSW5kZXhVdGlscy5zZXQoJ21vZGFsJywgdGhpcy5jb250YWluZXJWaWV3Q2hpbGQ/Lm5hdGl2ZUVsZW1lbnQsIHRoaXMuYmFzZVpJbmRleCB8fCB0aGlzLmNvbmZpZy56SW5kZXgubW9kYWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25BbmltYXRpb25FbmQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC50b1N0YXRlID09PSAndm9pZCcpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmF1dG9aSW5kZXggJiYgaXNFbXB0eSh0aGlzLm1lc3NhZ2VzKSkge1xuICAgICAgICAgICAgICAgIFpJbmRleFV0aWxzLmNsZWFyKHRoaXMuY29udGFpbmVyVmlld0NoaWxkPy5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNyZWF0ZVN0eWxlKCkge1xuICAgICAgICBpZiAoIXRoaXMuc3R5bGVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLnN0eWxlRWxlbWVudCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICAgICAgICAgIHRoaXMuc3R5bGVFbGVtZW50LnR5cGUgPSAndGV4dC9jc3MnO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmRvY3VtZW50LmhlYWQsIHRoaXMuc3R5bGVFbGVtZW50KTtcbiAgICAgICAgICAgIGxldCBpbm5lckhUTUwgPSAnJztcbiAgICAgICAgICAgIGZvciAobGV0IGJyZWFrcG9pbnQgaW4gdGhpcy5icmVha3BvaW50cykge1xuICAgICAgICAgICAgICAgIGxldCBicmVha3BvaW50U3R5bGUgPSAnJztcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBzdHlsZVByb3AgaW4gdGhpcy5icmVha3BvaW50c1ticmVha3BvaW50XSkge1xuICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50U3R5bGUgKz0gc3R5bGVQcm9wICsgJzonICsgdGhpcy5icmVha3BvaW50c1ticmVha3BvaW50XVtzdHlsZVByb3BdICsgJyAhaW1wb3J0YW50Oyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlubmVySFRNTCArPSBgXG4gICAgICAgICAgICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICR7YnJlYWtwb2ludH0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC5wLXRvYXN0WyR7dGhpcy5pZH1dIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICR7YnJlYWtwb2ludFN0eWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLnN0eWxlRWxlbWVudCwgJ2lubmVySFRNTCcsIGlubmVySFRNTCk7XG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGUodGhpcy5zdHlsZUVsZW1lbnQsICdub25jZScsIHRoaXMuY29uZmlnPy5jc3AoKT8ubm9uY2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGVzdHJveVN0eWxlKCkge1xuICAgICAgICBpZiAodGhpcy5zdHlsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5kb2N1bWVudC5oZWFkLCB0aGlzLnN0eWxlRWxlbWVudCk7XG4gICAgICAgICAgICB0aGlzLnN0eWxlRWxlbWVudCA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMubWVzc2FnZVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jb250YWluZXJWaWV3Q2hpbGQgJiYgdGhpcy5hdXRvWkluZGV4KSB7XG4gICAgICAgICAgICBaSW5kZXhVdGlscy5jbGVhcih0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmNsZWFyU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRlc3Ryb3lTdHlsZSgpO1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbVG9hc3QsIFNoYXJlZE1vZHVsZV0sXG4gICAgZXhwb3J0czogW1RvYXN0LCBTaGFyZWRNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIFRvYXN0TW9kdWxlIHt9XG4iXX0=