primeng 15.4.1 → 15.4.2-lts

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 (750) hide show
  1. package/accordion/accordion.d.ts +6 -4
  2. package/animate/animate.d.ts +3 -1
  3. package/api/licensemanager.d.ts +13 -0
  4. package/api/public_api.d.ts +1 -0
  5. package/autocomplete/autocomplete.d.ts +6 -4
  6. package/autofocus/autofocus.d.ts +7 -4
  7. package/avatar/avatar.d.ts +6 -2
  8. package/badge/badge.d.ts +3 -1
  9. package/blockui/blockui.d.ts +4 -3
  10. package/breadcrumb/breadcrumb.d.ts +6 -3
  11. package/button/button.d.ts +3 -1
  12. package/calendar/calendar.d.ts +3 -2
  13. package/card/card.d.ts +6 -4
  14. package/carousel/carousel.d.ts +6 -3
  15. package/cascadeselect/cascadeselect.d.ts +6 -4
  16. package/chart/chart.d.ts +4 -2
  17. package/checkbox/checkbox.d.ts +4 -1
  18. package/chip/chip.d.ts +6 -2
  19. package/chips/chips.d.ts +6 -3
  20. package/colorpicker/colorpicker.d.ts +6 -4
  21. package/confirmdialog/confirmdialog.d.ts +6 -6
  22. package/confirmpopup/confirmpopup.d.ts +7 -5
  23. package/contextmenu/contextmenu.d.ts +3 -2
  24. package/dataview/dataview.d.ts +6 -5
  25. package/defer/defer.d.ts +4 -2
  26. package/dialog/dialog.d.ts +6 -4
  27. package/divider/divider.d.ts +6 -1
  28. package/dock/dock.d.ts +6 -3
  29. package/dragdrop/dragdrop.d.ts +6 -3
  30. package/dropdown/dropdown.d.ts +3 -2
  31. package/dynamicdialog/dynamicdialog.d.ts +5 -3
  32. package/editor/editor.d.ts +4 -2
  33. package/esm2020/accordion/accordion.mjs +24 -19
  34. package/esm2020/animate/animate.mjs +13 -10
  35. package/esm2020/api/confirmationservice.mjs +3 -3
  36. package/esm2020/api/contextmenuservice.mjs +3 -3
  37. package/esm2020/api/filterservice.mjs +3 -3
  38. package/esm2020/api/licensemanager.mjs +112 -0
  39. package/esm2020/api/messageservice.mjs +3 -3
  40. package/esm2020/api/overlayservice.mjs +3 -3
  41. package/esm2020/api/primengconfig.mjs +3 -3
  42. package/esm2020/api/public_api.mjs +2 -1
  43. package/esm2020/api/shared.mjs +13 -13
  44. package/esm2020/api/treedragdropservice.mjs +3 -3
  45. package/esm2020/autocomplete/autocomplete.mjs +26 -44
  46. package/esm2020/autofocus/autofocus.mjs +16 -11
  47. package/esm2020/avatar/avatar.mjs +18 -13
  48. package/esm2020/avatargroup/avatargroup.mjs +7 -7
  49. package/esm2020/badge/badge.mjs +17 -14
  50. package/esm2020/baseicon/baseicon.mjs +3 -3
  51. package/esm2020/blockui/blockui.mjs +14 -12
  52. package/esm2020/breadcrumb/breadcrumb.mjs +26 -21
  53. package/esm2020/button/button.mjs +23 -20
  54. package/esm2020/calendar/calendar.mjs +56 -54
  55. package/esm2020/card/card.mjs +19 -14
  56. package/esm2020/carousel/carousel.mjs +32 -27
  57. package/esm2020/cascadeselect/cascadeselect.mjs +26 -22
  58. package/esm2020/chart/chart.mjs +14 -11
  59. package/esm2020/checkbox/checkbox.mjs +34 -31
  60. package/esm2020/chip/chip.mjs +21 -16
  61. package/esm2020/chips/chips.mjs +22 -17
  62. package/esm2020/colorpicker/colorpicker.mjs +17 -13
  63. package/esm2020/confirmdialog/confirmdialog.mjs +25 -21
  64. package/esm2020/confirmpopup/confirmpopup.mjs +17 -13
  65. package/esm2020/contextmenu/contextmenu.mjs +21 -19
  66. package/esm2020/dataview/dataview.mjs +32 -30
  67. package/esm2020/defer/defer.mjs +14 -11
  68. package/esm2020/dialog/dialog.mjs +37 -33
  69. package/esm2020/divider/divider.mjs +18 -13
  70. package/esm2020/dock/dock.mjs +22 -17
  71. package/esm2020/dragdrop/dragdrop.mjs +21 -16
  72. package/esm2020/dropdown/dropdown.mjs +20 -20
  73. package/esm2020/dynamicdialog/dialogservice.mjs +3 -3
  74. package/esm2020/dynamicdialog/dynamicdialog.mjs +59 -46
  75. package/esm2020/dynamicdialog/dynamicdialogcontent.mjs +3 -3
  76. package/esm2020/editor/editor.mjs +18 -15
  77. package/esm2020/fieldset/fieldset.mjs +23 -18
  78. package/esm2020/fileupload/fileupload.mjs +67 -63
  79. package/esm2020/focustrap/focustrap.mjs +15 -10
  80. package/esm2020/galleria/galleria.mjs +50 -46
  81. package/esm2020/icons/angledoubledown/angledoubledown.mjs +3 -3
  82. package/esm2020/icons/angledoubleleft/angledoubleleft.mjs +3 -3
  83. package/esm2020/icons/angledoubleright/angledoubleright.mjs +3 -3
  84. package/esm2020/icons/angledoubleup/angledoubleup.mjs +3 -3
  85. package/esm2020/icons/angledown/angledown.mjs +3 -3
  86. package/esm2020/icons/angleleft/angleleft.mjs +3 -3
  87. package/esm2020/icons/angleright/angleright.mjs +3 -3
  88. package/esm2020/icons/angleup/angleup.mjs +3 -3
  89. package/esm2020/icons/arrowdown/arrowdown.mjs +3 -3
  90. package/esm2020/icons/arrowdownleft/arrowdownleft.mjs +3 -3
  91. package/esm2020/icons/arrowdownright/arrowdownright.mjs +3 -3
  92. package/esm2020/icons/arrowleft/arrowleft.mjs +3 -3
  93. package/esm2020/icons/arrowright/arrowright.mjs +3 -3
  94. package/esm2020/icons/arrowup/arrowup.mjs +3 -3
  95. package/esm2020/icons/ban/ban.mjs +3 -3
  96. package/esm2020/icons/bars/bars.mjs +3 -3
  97. package/esm2020/icons/calendar/calendar.mjs +3 -3
  98. package/esm2020/icons/caretleft/caretleft.mjs +3 -3
  99. package/esm2020/icons/caretright/caretright.mjs +3 -3
  100. package/esm2020/icons/check/check.mjs +3 -3
  101. package/esm2020/icons/chevrondown/chevrondown.mjs +3 -3
  102. package/esm2020/icons/chevronleft/chevronleft.mjs +3 -3
  103. package/esm2020/icons/chevronright/chevronright.mjs +3 -3
  104. package/esm2020/icons/chevronup/chevronup.mjs +3 -3
  105. package/esm2020/icons/exclamationtriangle/exclamationtriangle.mjs +3 -3
  106. package/esm2020/icons/eye/eye.mjs +3 -3
  107. package/esm2020/icons/eyeslash/eyeslash.mjs +3 -3
  108. package/esm2020/icons/filter/filter.mjs +3 -3
  109. package/esm2020/icons/filterslash/filterslash.mjs +3 -3
  110. package/esm2020/icons/home/home.mjs +3 -3
  111. package/esm2020/icons/infocircle/infocircle.mjs +3 -3
  112. package/esm2020/icons/minus/minus.mjs +3 -3
  113. package/esm2020/icons/pencil/pencil.mjs +3 -3
  114. package/esm2020/icons/plus/plus.mjs +3 -3
  115. package/esm2020/icons/refresh/refresh.mjs +3 -3
  116. package/esm2020/icons/search/search.mjs +3 -3
  117. package/esm2020/icons/searchminus/searchminus.mjs +3 -3
  118. package/esm2020/icons/searchplus/searchplus.mjs +3 -3
  119. package/esm2020/icons/sortalt/sortalt.mjs +3 -3
  120. package/esm2020/icons/sortamountdown/sortamountdown.mjs +3 -3
  121. package/esm2020/icons/sortamountupalt/sortamountupalt.mjs +3 -3
  122. package/esm2020/icons/spinner/spinner.mjs +3 -3
  123. package/esm2020/icons/star/star.mjs +3 -3
  124. package/esm2020/icons/starfill/starfill.mjs +3 -3
  125. package/esm2020/icons/thlarge/thlarge.mjs +3 -3
  126. package/esm2020/icons/times/times.mjs +3 -3
  127. package/esm2020/icons/timescircle/timescircle.mjs +3 -3
  128. package/esm2020/icons/trash/trash.mjs +3 -3
  129. package/esm2020/icons/undo/undo.mjs +3 -3
  130. package/esm2020/icons/upload/upload.mjs +3 -3
  131. package/esm2020/icons/windowmaximize/windowmaximize.mjs +3 -3
  132. package/esm2020/icons/windowminimize/windowminimize.mjs +3 -3
  133. package/esm2020/image/image.mjs +32 -28
  134. package/esm2020/inplace/inplace.mjs +28 -23
  135. package/esm2020/inputmask/inputmask.mjs +26 -25
  136. package/esm2020/inputnumber/inputnumber.mjs +74 -60
  137. package/esm2020/inputswitch/inputswitch.mjs +18 -13
  138. package/esm2020/inputtext/inputtext.mjs +13 -10
  139. package/esm2020/inputtextarea/inputtextarea.mjs +14 -11
  140. package/esm2020/keyfilter/keyfilter.mjs +17 -12
  141. package/esm2020/knob/knob.mjs +18 -13
  142. package/esm2020/listbox/listbox.mjs +30 -26
  143. package/esm2020/megamenu/megamenu.mjs +28 -23
  144. package/esm2020/menu/menu.mjs +21 -17
  145. package/esm2020/menubar/menubar.mjs +37 -33
  146. package/esm2020/message/message.mjs +16 -16
  147. package/esm2020/messages/messages.mjs +32 -36
  148. package/esm2020/multiselect/multiselect.mjs +72 -69
  149. package/esm2020/orderlist/orderlist.mjs +30 -26
  150. package/esm2020/organizationchart/organizationchart.mjs +31 -26
  151. package/esm2020/overlay/overlay.mjs +7 -7
  152. package/esm2020/overlaypanel/overlaypanel.mjs +17 -13
  153. package/esm2020/paginator/paginator.mjs +30 -27
  154. package/esm2020/panel/panel.mjs +30 -25
  155. package/esm2020/panelmenu/panelmenu.mjs +31 -28
  156. package/esm2020/password/password.mjs +44 -36
  157. package/esm2020/picklist/picklist.mjs +68 -160
  158. package/esm2020/progressbar/progressbar.mjs +17 -12
  159. package/esm2020/progressspinner/progressspinner.mjs +18 -13
  160. package/esm2020/radiobutton/radiobutton.mjs +21 -16
  161. package/esm2020/rating/rating.mjs +47 -30
  162. package/esm2020/ripple/ripple.mjs +13 -11
  163. package/esm2020/scroller/scroller.mjs +19 -16
  164. package/esm2020/scrollpanel/scrollpanel.mjs +17 -14
  165. package/esm2020/scrolltop/scrolltop.mjs +28 -24
  166. package/esm2020/selectbutton/selectbutton.mjs +21 -16
  167. package/esm2020/sidebar/sidebar.mjs +15 -13
  168. package/esm2020/skeleton/skeleton.mjs +17 -12
  169. package/esm2020/slidemenu/slidemenu.mjs +31 -27
  170. package/esm2020/slider/slider.mjs +18 -13
  171. package/esm2020/speeddial/speeddial.mjs +26 -23
  172. package/esm2020/spinner/spinner.mjs +7 -7
  173. package/esm2020/splitbutton/splitbutton.mjs +23 -18
  174. package/esm2020/splitter/splitter.mjs +17 -14
  175. package/esm2020/steps/steps.mjs +19 -14
  176. package/esm2020/styleclass/styleclass.mjs +15 -10
  177. package/esm2020/table/table.mjs +138 -151
  178. package/esm2020/tabmenu/tabmenu.mjs +24 -20
  179. package/esm2020/tabview/tabview.mjs +35 -30
  180. package/esm2020/tag/tag.mjs +20 -14
  181. package/esm2020/terminal/terminal.mjs +18 -15
  182. package/esm2020/terminal/terminalservice.mjs +3 -3
  183. package/esm2020/tieredmenu/tieredmenu.mjs +29 -25
  184. package/esm2020/timeline/timeline.mjs +18 -13
  185. package/esm2020/toast/toast.mjs +35 -46
  186. package/esm2020/togglebutton/togglebutton.mjs +18 -13
  187. package/esm2020/toolbar/toolbar.mjs +17 -12
  188. package/esm2020/tooltip/tooltip.mjs +12 -10
  189. package/esm2020/tree/tree.mjs +48 -44
  190. package/esm2020/treeselect/treeselect.mjs +24 -20
  191. package/esm2020/treetable/treetable.mjs +142 -140
  192. package/esm2020/tristatecheckbox/tristatecheckbox.mjs +23 -18
  193. package/esm2020/virtualscroller/virtualscroller.mjs +17 -13
  194. package/fesm2015/primeng-accordion.mjs +22 -18
  195. package/fesm2015/primeng-accordion.mjs.map +1 -1
  196. package/fesm2015/primeng-animate.mjs +12 -10
  197. package/fesm2015/primeng-animate.mjs.map +1 -1
  198. package/fesm2015/primeng-api.mjs +156 -38
  199. package/fesm2015/primeng-api.mjs.map +1 -1
  200. package/fesm2015/primeng-autocomplete.mjs +25 -44
  201. package/fesm2015/primeng-autocomplete.mjs.map +1 -1
  202. package/fesm2015/primeng-autofocus.mjs +15 -11
  203. package/fesm2015/primeng-autofocus.mjs.map +1 -1
  204. package/fesm2015/primeng-avatar.mjs +17 -13
  205. package/fesm2015/primeng-avatar.mjs.map +1 -1
  206. package/fesm2015/primeng-avatargroup.mjs +7 -8
  207. package/fesm2015/primeng-badge.mjs +16 -14
  208. package/fesm2015/primeng-badge.mjs.map +1 -1
  209. package/fesm2015/primeng-baseicon.mjs +3 -4
  210. package/fesm2015/primeng-blockui.mjs +14 -13
  211. package/fesm2015/primeng-blockui.mjs.map +1 -1
  212. package/fesm2015/primeng-breadcrumb.mjs +25 -21
  213. package/fesm2015/primeng-breadcrumb.mjs.map +1 -1
  214. package/fesm2015/primeng-button.mjs +21 -19
  215. package/fesm2015/primeng-button.mjs.map +1 -1
  216. package/fesm2015/primeng-calendar.mjs +56 -55
  217. package/fesm2015/primeng-calendar.mjs.map +1 -1
  218. package/fesm2015/primeng-card.mjs +17 -13
  219. package/fesm2015/primeng-card.mjs.map +1 -1
  220. package/fesm2015/primeng-carousel.mjs +30 -26
  221. package/fesm2015/primeng-carousel.mjs.map +1 -1
  222. package/fesm2015/primeng-cascadeselect.mjs +25 -22
  223. package/fesm2015/primeng-cascadeselect.mjs.map +1 -1
  224. package/fesm2015/primeng-chart.mjs +13 -11
  225. package/fesm2015/primeng-chart.mjs.map +1 -1
  226. package/fesm2015/primeng-checkbox.mjs +33 -31
  227. package/fesm2015/primeng-checkbox.mjs.map +1 -1
  228. package/fesm2015/primeng-chip.mjs +20 -16
  229. package/fesm2015/primeng-chip.mjs.map +1 -1
  230. package/fesm2015/primeng-chips.mjs +20 -16
  231. package/fesm2015/primeng-chips.mjs.map +1 -1
  232. package/fesm2015/primeng-colorpicker.mjs +16 -13
  233. package/fesm2015/primeng-colorpicker.mjs.map +1 -1
  234. package/fesm2015/primeng-confirmdialog.mjs +23 -20
  235. package/fesm2015/primeng-confirmdialog.mjs.map +1 -1
  236. package/fesm2015/primeng-confirmpopup.mjs +17 -14
  237. package/fesm2015/primeng-confirmpopup.mjs.map +1 -1
  238. package/fesm2015/primeng-contextmenu.mjs +19 -18
  239. package/fesm2015/primeng-contextmenu.mjs.map +1 -1
  240. package/fesm2015/primeng-dataview.mjs +32 -31
  241. package/fesm2015/primeng-dataview.mjs.map +1 -1
  242. package/fesm2015/primeng-defer.mjs +13 -11
  243. package/fesm2015/primeng-defer.mjs.map +1 -1
  244. package/fesm2015/primeng-dialog.mjs +37 -34
  245. package/fesm2015/primeng-dialog.mjs.map +1 -1
  246. package/fesm2015/primeng-divider.mjs +17 -13
  247. package/fesm2015/primeng-divider.mjs.map +1 -1
  248. package/fesm2015/primeng-dock.mjs +21 -17
  249. package/fesm2015/primeng-dock.mjs.map +1 -1
  250. package/fesm2015/primeng-dom.mjs +0 -1
  251. package/fesm2015/primeng-dragdrop.mjs +20 -16
  252. package/fesm2015/primeng-dragdrop.mjs.map +1 -1
  253. package/fesm2015/primeng-dropdown.mjs +19 -20
  254. package/fesm2015/primeng-dropdown.mjs.map +1 -1
  255. package/fesm2015/primeng-dynamicdialog.mjs +63 -51
  256. package/fesm2015/primeng-dynamicdialog.mjs.map +1 -1
  257. package/fesm2015/primeng-editor.mjs +16 -14
  258. package/fesm2015/primeng-editor.mjs.map +1 -1
  259. package/fesm2015/primeng-fieldset.mjs +21 -17
  260. package/fesm2015/primeng-fieldset.mjs.map +1 -1
  261. package/fesm2015/primeng-fileupload.mjs +66 -63
  262. package/fesm2015/primeng-fileupload.mjs.map +1 -1
  263. package/fesm2015/primeng-focustrap.mjs +14 -10
  264. package/fesm2015/primeng-focustrap.mjs.map +1 -1
  265. package/fesm2015/primeng-galleria.mjs +50 -47
  266. package/fesm2015/primeng-galleria.mjs.map +1 -1
  267. package/fesm2015/primeng-icons-angledoubledown.mjs +3 -4
  268. package/fesm2015/primeng-icons-angledoubleleft.mjs +3 -4
  269. package/fesm2015/primeng-icons-angledoubleright.mjs +3 -4
  270. package/fesm2015/primeng-icons-angledoubleup.mjs +3 -4
  271. package/fesm2015/primeng-icons-angledown.mjs +3 -4
  272. package/fesm2015/primeng-icons-angleleft.mjs +3 -4
  273. package/fesm2015/primeng-icons-angleright.mjs +3 -4
  274. package/fesm2015/primeng-icons-angleup.mjs +3 -4
  275. package/fesm2015/primeng-icons-arrowdown.mjs +3 -4
  276. package/fesm2015/primeng-icons-arrowdownleft.mjs +3 -4
  277. package/fesm2015/primeng-icons-arrowdownright.mjs +3 -4
  278. package/fesm2015/primeng-icons-arrowleft.mjs +3 -4
  279. package/fesm2015/primeng-icons-arrowright.mjs +3 -4
  280. package/fesm2015/primeng-icons-arrowup.mjs +3 -4
  281. package/fesm2015/primeng-icons-ban.mjs +3 -4
  282. package/fesm2015/primeng-icons-bars.mjs +3 -4
  283. package/fesm2015/primeng-icons-calendar.mjs +3 -4
  284. package/fesm2015/primeng-icons-caretleft.mjs +3 -4
  285. package/fesm2015/primeng-icons-caretright.mjs +3 -4
  286. package/fesm2015/primeng-icons-check.mjs +3 -4
  287. package/fesm2015/primeng-icons-chevrondown.mjs +3 -4
  288. package/fesm2015/primeng-icons-chevronleft.mjs +3 -4
  289. package/fesm2015/primeng-icons-chevronright.mjs +3 -4
  290. package/fesm2015/primeng-icons-chevronup.mjs +3 -4
  291. package/fesm2015/primeng-icons-exclamationtriangle.mjs +3 -4
  292. package/fesm2015/primeng-icons-eye.mjs +3 -4
  293. package/fesm2015/primeng-icons-eyeslash.mjs +3 -4
  294. package/fesm2015/primeng-icons-filter.mjs +3 -4
  295. package/fesm2015/primeng-icons-filterslash.mjs +3 -4
  296. package/fesm2015/primeng-icons-home.mjs +3 -4
  297. package/fesm2015/primeng-icons-infocircle.mjs +3 -4
  298. package/fesm2015/primeng-icons-minus.mjs +3 -4
  299. package/fesm2015/primeng-icons-pencil.mjs +3 -4
  300. package/fesm2015/primeng-icons-plus.mjs +3 -4
  301. package/fesm2015/primeng-icons-refresh.mjs +3 -4
  302. package/fesm2015/primeng-icons-search.mjs +3 -4
  303. package/fesm2015/primeng-icons-searchminus.mjs +3 -4
  304. package/fesm2015/primeng-icons-searchplus.mjs +3 -4
  305. package/fesm2015/primeng-icons-sortalt.mjs +3 -4
  306. package/fesm2015/primeng-icons-sortamountdown.mjs +3 -4
  307. package/fesm2015/primeng-icons-sortamountupalt.mjs +3 -4
  308. package/fesm2015/primeng-icons-spinner.mjs +3 -4
  309. package/fesm2015/primeng-icons-star.mjs +3 -4
  310. package/fesm2015/primeng-icons-starfill.mjs +3 -4
  311. package/fesm2015/primeng-icons-thlarge.mjs +3 -4
  312. package/fesm2015/primeng-icons-times.mjs +3 -4
  313. package/fesm2015/primeng-icons-timescircle.mjs +3 -4
  314. package/fesm2015/primeng-icons-trash.mjs +3 -4
  315. package/fesm2015/primeng-icons-undo.mjs +3 -4
  316. package/fesm2015/primeng-icons-upload.mjs +3 -4
  317. package/fesm2015/primeng-icons-windowmaximize.mjs +3 -4
  318. package/fesm2015/primeng-icons-windowminimize.mjs +3 -4
  319. package/fesm2015/primeng-image.mjs +31 -28
  320. package/fesm2015/primeng-image.mjs.map +1 -1
  321. package/fesm2015/primeng-inplace.mjs +27 -23
  322. package/fesm2015/primeng-inplace.mjs.map +1 -1
  323. package/fesm2015/primeng-inputmask.mjs +24 -24
  324. package/fesm2015/primeng-inputmask.mjs.map +1 -1
  325. package/fesm2015/primeng-inputnumber.mjs +73 -59
  326. package/fesm2015/primeng-inputnumber.mjs.map +1 -1
  327. package/fesm2015/primeng-inputswitch.mjs +17 -13
  328. package/fesm2015/primeng-inputswitch.mjs.map +1 -1
  329. package/fesm2015/primeng-inputtext.mjs +12 -10
  330. package/fesm2015/primeng-inputtext.mjs.map +1 -1
  331. package/fesm2015/primeng-inputtextarea.mjs +13 -11
  332. package/fesm2015/primeng-inputtextarea.mjs.map +1 -1
  333. package/fesm2015/primeng-keyfilter.mjs +16 -12
  334. package/fesm2015/primeng-keyfilter.mjs.map +1 -1
  335. package/fesm2015/primeng-knob.mjs +17 -13
  336. package/fesm2015/primeng-knob.mjs.map +1 -1
  337. package/fesm2015/primeng-listbox.mjs +29 -26
  338. package/fesm2015/primeng-listbox.mjs.map +1 -1
  339. package/fesm2015/primeng-megamenu.mjs +27 -23
  340. package/fesm2015/primeng-megamenu.mjs.map +1 -1
  341. package/fesm2015/primeng-menu.mjs +20 -17
  342. package/fesm2015/primeng-menu.mjs.map +1 -1
  343. package/fesm2015/primeng-menubar.mjs +37 -34
  344. package/fesm2015/primeng-menubar.mjs.map +1 -1
  345. package/fesm2015/primeng-message.mjs +15 -16
  346. package/fesm2015/primeng-message.mjs.map +1 -1
  347. package/fesm2015/primeng-messages.mjs +33 -38
  348. package/fesm2015/primeng-messages.mjs.map +1 -1
  349. package/fesm2015/primeng-multiselect.mjs +71 -69
  350. package/fesm2015/primeng-multiselect.mjs.map +1 -1
  351. package/fesm2015/primeng-orderlist.mjs +33 -30
  352. package/fesm2015/primeng-orderlist.mjs.map +1 -1
  353. package/fesm2015/primeng-organizationchart.mjs +29 -24
  354. package/fesm2015/primeng-organizationchart.mjs.map +1 -1
  355. package/fesm2015/primeng-overlay.mjs +7 -8
  356. package/fesm2015/primeng-overlaypanel.mjs +16 -13
  357. package/fesm2015/primeng-overlaypanel.mjs.map +1 -1
  358. package/fesm2015/primeng-paginator.mjs +31 -28
  359. package/fesm2015/primeng-paginator.mjs.map +1 -1
  360. package/fesm2015/primeng-panel.mjs +28 -24
  361. package/fesm2015/primeng-panel.mjs.map +1 -1
  362. package/fesm2015/primeng-panelmenu.mjs +31 -29
  363. package/fesm2015/primeng-panelmenu.mjs.map +1 -1
  364. package/fesm2015/primeng-password.mjs +42 -35
  365. package/fesm2015/primeng-password.mjs.map +1 -1
  366. package/fesm2015/primeng-picklist.mjs +71 -164
  367. package/fesm2015/primeng-picklist.mjs.map +1 -1
  368. package/fesm2015/primeng-progressbar.mjs +16 -12
  369. package/fesm2015/primeng-progressbar.mjs.map +1 -1
  370. package/fesm2015/primeng-progressspinner.mjs +17 -13
  371. package/fesm2015/primeng-progressspinner.mjs.map +1 -1
  372. package/fesm2015/primeng-radiobutton.mjs +20 -16
  373. package/fesm2015/primeng-radiobutton.mjs.map +1 -1
  374. package/fesm2015/primeng-rating.mjs +46 -30
  375. package/fesm2015/primeng-rating.mjs.map +1 -1
  376. package/fesm2015/primeng-ripple.mjs +12 -11
  377. package/fesm2015/primeng-ripple.mjs.map +1 -1
  378. package/fesm2015/primeng-scroller.mjs +18 -16
  379. package/fesm2015/primeng-scroller.mjs.map +1 -1
  380. package/fesm2015/primeng-scrollpanel.mjs +16 -14
  381. package/fesm2015/primeng-scrollpanel.mjs.map +1 -1
  382. package/fesm2015/primeng-scrolltop.mjs +28 -25
  383. package/fesm2015/primeng-scrolltop.mjs.map +1 -1
  384. package/fesm2015/primeng-selectbutton.mjs +20 -16
  385. package/fesm2015/primeng-selectbutton.mjs.map +1 -1
  386. package/fesm2015/primeng-sidebar.mjs +14 -13
  387. package/fesm2015/primeng-sidebar.mjs.map +1 -1
  388. package/fesm2015/primeng-skeleton.mjs +16 -12
  389. package/fesm2015/primeng-skeleton.mjs.map +1 -1
  390. package/fesm2015/primeng-slidemenu.mjs +31 -28
  391. package/fesm2015/primeng-slidemenu.mjs.map +1 -1
  392. package/fesm2015/primeng-slider.mjs +16 -12
  393. package/fesm2015/primeng-slider.mjs.map +1 -1
  394. package/fesm2015/primeng-speeddial.mjs +24 -22
  395. package/fesm2015/primeng-speeddial.mjs.map +1 -1
  396. package/fesm2015/primeng-spinner.mjs +7 -8
  397. package/fesm2015/primeng-splitbutton.mjs +22 -18
  398. package/fesm2015/primeng-splitbutton.mjs.map +1 -1
  399. package/fesm2015/primeng-splitter.mjs +16 -14
  400. package/fesm2015/primeng-splitter.mjs.map +1 -1
  401. package/fesm2015/primeng-steps.mjs +18 -14
  402. package/fesm2015/primeng-steps.mjs.map +1 -1
  403. package/fesm2015/primeng-styleclass.mjs +14 -10
  404. package/fesm2015/primeng-styleclass.mjs.map +1 -1
  405. package/fesm2015/primeng-table.mjs +138 -151
  406. package/fesm2015/primeng-table.mjs.map +1 -1
  407. package/fesm2015/primeng-tabmenu.mjs +23 -20
  408. package/fesm2015/primeng-tabmenu.mjs.map +1 -1
  409. package/fesm2015/primeng-tabview.mjs +34 -30
  410. package/fesm2015/primeng-tabview.mjs.map +1 -1
  411. package/fesm2015/primeng-tag.mjs +18 -12
  412. package/fesm2015/primeng-tag.mjs.map +1 -1
  413. package/fesm2015/primeng-terminal.mjs +19 -17
  414. package/fesm2015/primeng-terminal.mjs.map +1 -1
  415. package/fesm2015/primeng-tieredmenu.mjs +30 -27
  416. package/fesm2015/primeng-tieredmenu.mjs.map +1 -1
  417. package/fesm2015/primeng-timeline.mjs +17 -13
  418. package/fesm2015/primeng-timeline.mjs.map +1 -1
  419. package/fesm2015/primeng-toast.mjs +36 -47
  420. package/fesm2015/primeng-toast.mjs.map +1 -1
  421. package/fesm2015/primeng-togglebutton.mjs +17 -13
  422. package/fesm2015/primeng-togglebutton.mjs.map +1 -1
  423. package/fesm2015/primeng-toolbar.mjs +16 -12
  424. package/fesm2015/primeng-toolbar.mjs.map +1 -1
  425. package/fesm2015/primeng-tooltip.mjs +11 -10
  426. package/fesm2015/primeng-tooltip.mjs.map +1 -1
  427. package/fesm2015/primeng-tree.mjs +49 -46
  428. package/fesm2015/primeng-tree.mjs.map +1 -1
  429. package/fesm2015/primeng-treeselect.mjs +23 -20
  430. package/fesm2015/primeng-treeselect.mjs.map +1 -1
  431. package/fesm2015/primeng-treetable.mjs +144 -143
  432. package/fesm2015/primeng-treetable.mjs.map +1 -1
  433. package/fesm2015/primeng-tristatecheckbox.mjs +22 -18
  434. package/fesm2015/primeng-tristatecheckbox.mjs.map +1 -1
  435. package/fesm2015/primeng-utils.mjs +0 -1
  436. package/fesm2015/primeng-virtualscroller.mjs +16 -13
  437. package/fesm2015/primeng-virtualscroller.mjs.map +1 -1
  438. package/fesm2015/primeng.mjs +0 -1
  439. package/fesm2020/primeng-accordion.mjs +22 -18
  440. package/fesm2020/primeng-accordion.mjs.map +1 -1
  441. package/fesm2020/primeng-animate.mjs +12 -10
  442. package/fesm2020/primeng-animate.mjs.map +1 -1
  443. package/fesm2020/primeng-api.mjs +146 -38
  444. package/fesm2020/primeng-api.mjs.map +1 -1
  445. package/fesm2020/primeng-autocomplete.mjs +25 -44
  446. package/fesm2020/primeng-autocomplete.mjs.map +1 -1
  447. package/fesm2020/primeng-autofocus.mjs +15 -11
  448. package/fesm2020/primeng-autofocus.mjs.map +1 -1
  449. package/fesm2020/primeng-avatar.mjs +17 -13
  450. package/fesm2020/primeng-avatar.mjs.map +1 -1
  451. package/fesm2020/primeng-avatargroup.mjs +7 -8
  452. package/fesm2020/primeng-badge.mjs +16 -14
  453. package/fesm2020/primeng-badge.mjs.map +1 -1
  454. package/fesm2020/primeng-baseicon.mjs +3 -4
  455. package/fesm2020/primeng-blockui.mjs +14 -13
  456. package/fesm2020/primeng-blockui.mjs.map +1 -1
  457. package/fesm2020/primeng-breadcrumb.mjs +25 -21
  458. package/fesm2020/primeng-breadcrumb.mjs.map +1 -1
  459. package/fesm2020/primeng-button.mjs +21 -19
  460. package/fesm2020/primeng-button.mjs.map +1 -1
  461. package/fesm2020/primeng-calendar.mjs +56 -55
  462. package/fesm2020/primeng-calendar.mjs.map +1 -1
  463. package/fesm2020/primeng-card.mjs +17 -13
  464. package/fesm2020/primeng-card.mjs.map +1 -1
  465. package/fesm2020/primeng-carousel.mjs +30 -26
  466. package/fesm2020/primeng-carousel.mjs.map +1 -1
  467. package/fesm2020/primeng-cascadeselect.mjs +25 -22
  468. package/fesm2020/primeng-cascadeselect.mjs.map +1 -1
  469. package/fesm2020/primeng-chart.mjs +13 -11
  470. package/fesm2020/primeng-chart.mjs.map +1 -1
  471. package/fesm2020/primeng-checkbox.mjs +33 -31
  472. package/fesm2020/primeng-checkbox.mjs.map +1 -1
  473. package/fesm2020/primeng-chip.mjs +20 -16
  474. package/fesm2020/primeng-chip.mjs.map +1 -1
  475. package/fesm2020/primeng-chips.mjs +20 -16
  476. package/fesm2020/primeng-chips.mjs.map +1 -1
  477. package/fesm2020/primeng-colorpicker.mjs +16 -13
  478. package/fesm2020/primeng-colorpicker.mjs.map +1 -1
  479. package/fesm2020/primeng-confirmdialog.mjs +23 -20
  480. package/fesm2020/primeng-confirmdialog.mjs.map +1 -1
  481. package/fesm2020/primeng-confirmpopup.mjs +17 -14
  482. package/fesm2020/primeng-confirmpopup.mjs.map +1 -1
  483. package/fesm2020/primeng-contextmenu.mjs +19 -18
  484. package/fesm2020/primeng-contextmenu.mjs.map +1 -1
  485. package/fesm2020/primeng-dataview.mjs +32 -31
  486. package/fesm2020/primeng-dataview.mjs.map +1 -1
  487. package/fesm2020/primeng-defer.mjs +13 -11
  488. package/fesm2020/primeng-defer.mjs.map +1 -1
  489. package/fesm2020/primeng-dialog.mjs +37 -34
  490. package/fesm2020/primeng-dialog.mjs.map +1 -1
  491. package/fesm2020/primeng-divider.mjs +17 -13
  492. package/fesm2020/primeng-divider.mjs.map +1 -1
  493. package/fesm2020/primeng-dock.mjs +21 -17
  494. package/fesm2020/primeng-dock.mjs.map +1 -1
  495. package/fesm2020/primeng-dom.mjs +0 -1
  496. package/fesm2020/primeng-dragdrop.mjs +20 -16
  497. package/fesm2020/primeng-dragdrop.mjs.map +1 -1
  498. package/fesm2020/primeng-dropdown.mjs +19 -20
  499. package/fesm2020/primeng-dropdown.mjs.map +1 -1
  500. package/fesm2020/primeng-dynamicdialog.mjs +63 -51
  501. package/fesm2020/primeng-dynamicdialog.mjs.map +1 -1
  502. package/fesm2020/primeng-editor.mjs +16 -14
  503. package/fesm2020/primeng-editor.mjs.map +1 -1
  504. package/fesm2020/primeng-fieldset.mjs +21 -17
  505. package/fesm2020/primeng-fieldset.mjs.map +1 -1
  506. package/fesm2020/primeng-fileupload.mjs +66 -63
  507. package/fesm2020/primeng-fileupload.mjs.map +1 -1
  508. package/fesm2020/primeng-focustrap.mjs +14 -10
  509. package/fesm2020/primeng-focustrap.mjs.map +1 -1
  510. package/fesm2020/primeng-galleria.mjs +50 -47
  511. package/fesm2020/primeng-galleria.mjs.map +1 -1
  512. package/fesm2020/primeng-icons-angledoubledown.mjs +3 -4
  513. package/fesm2020/primeng-icons-angledoubleleft.mjs +3 -4
  514. package/fesm2020/primeng-icons-angledoubleright.mjs +3 -4
  515. package/fesm2020/primeng-icons-angledoubleup.mjs +3 -4
  516. package/fesm2020/primeng-icons-angledown.mjs +3 -4
  517. package/fesm2020/primeng-icons-angleleft.mjs +3 -4
  518. package/fesm2020/primeng-icons-angleright.mjs +3 -4
  519. package/fesm2020/primeng-icons-angleup.mjs +3 -4
  520. package/fesm2020/primeng-icons-arrowdown.mjs +3 -4
  521. package/fesm2020/primeng-icons-arrowdownleft.mjs +3 -4
  522. package/fesm2020/primeng-icons-arrowdownright.mjs +3 -4
  523. package/fesm2020/primeng-icons-arrowleft.mjs +3 -4
  524. package/fesm2020/primeng-icons-arrowright.mjs +3 -4
  525. package/fesm2020/primeng-icons-arrowup.mjs +3 -4
  526. package/fesm2020/primeng-icons-ban.mjs +3 -4
  527. package/fesm2020/primeng-icons-bars.mjs +3 -4
  528. package/fesm2020/primeng-icons-calendar.mjs +3 -4
  529. package/fesm2020/primeng-icons-caretleft.mjs +3 -4
  530. package/fesm2020/primeng-icons-caretright.mjs +3 -4
  531. package/fesm2020/primeng-icons-check.mjs +3 -4
  532. package/fesm2020/primeng-icons-chevrondown.mjs +3 -4
  533. package/fesm2020/primeng-icons-chevronleft.mjs +3 -4
  534. package/fesm2020/primeng-icons-chevronright.mjs +3 -4
  535. package/fesm2020/primeng-icons-chevronup.mjs +3 -4
  536. package/fesm2020/primeng-icons-exclamationtriangle.mjs +3 -4
  537. package/fesm2020/primeng-icons-eye.mjs +3 -4
  538. package/fesm2020/primeng-icons-eyeslash.mjs +3 -4
  539. package/fesm2020/primeng-icons-filter.mjs +3 -4
  540. package/fesm2020/primeng-icons-filterslash.mjs +3 -4
  541. package/fesm2020/primeng-icons-home.mjs +3 -4
  542. package/fesm2020/primeng-icons-infocircle.mjs +3 -4
  543. package/fesm2020/primeng-icons-minus.mjs +3 -4
  544. package/fesm2020/primeng-icons-pencil.mjs +3 -4
  545. package/fesm2020/primeng-icons-plus.mjs +3 -4
  546. package/fesm2020/primeng-icons-refresh.mjs +3 -4
  547. package/fesm2020/primeng-icons-search.mjs +3 -4
  548. package/fesm2020/primeng-icons-searchminus.mjs +3 -4
  549. package/fesm2020/primeng-icons-searchplus.mjs +3 -4
  550. package/fesm2020/primeng-icons-sortalt.mjs +3 -4
  551. package/fesm2020/primeng-icons-sortamountdown.mjs +3 -4
  552. package/fesm2020/primeng-icons-sortamountupalt.mjs +3 -4
  553. package/fesm2020/primeng-icons-spinner.mjs +3 -4
  554. package/fesm2020/primeng-icons-star.mjs +3 -4
  555. package/fesm2020/primeng-icons-starfill.mjs +3 -4
  556. package/fesm2020/primeng-icons-thlarge.mjs +3 -4
  557. package/fesm2020/primeng-icons-times.mjs +3 -4
  558. package/fesm2020/primeng-icons-timescircle.mjs +3 -4
  559. package/fesm2020/primeng-icons-trash.mjs +3 -4
  560. package/fesm2020/primeng-icons-undo.mjs +3 -4
  561. package/fesm2020/primeng-icons-upload.mjs +3 -4
  562. package/fesm2020/primeng-icons-windowmaximize.mjs +3 -4
  563. package/fesm2020/primeng-icons-windowminimize.mjs +3 -4
  564. package/fesm2020/primeng-image.mjs +31 -28
  565. package/fesm2020/primeng-image.mjs.map +1 -1
  566. package/fesm2020/primeng-inplace.mjs +27 -23
  567. package/fesm2020/primeng-inplace.mjs.map +1 -1
  568. package/fesm2020/primeng-inputmask.mjs +24 -24
  569. package/fesm2020/primeng-inputmask.mjs.map +1 -1
  570. package/fesm2020/primeng-inputnumber.mjs +72 -59
  571. package/fesm2020/primeng-inputnumber.mjs.map +1 -1
  572. package/fesm2020/primeng-inputswitch.mjs +17 -13
  573. package/fesm2020/primeng-inputswitch.mjs.map +1 -1
  574. package/fesm2020/primeng-inputtext.mjs +12 -10
  575. package/fesm2020/primeng-inputtext.mjs.map +1 -1
  576. package/fesm2020/primeng-inputtextarea.mjs +13 -11
  577. package/fesm2020/primeng-inputtextarea.mjs.map +1 -1
  578. package/fesm2020/primeng-keyfilter.mjs +16 -12
  579. package/fesm2020/primeng-keyfilter.mjs.map +1 -1
  580. package/fesm2020/primeng-knob.mjs +17 -13
  581. package/fesm2020/primeng-knob.mjs.map +1 -1
  582. package/fesm2020/primeng-listbox.mjs +29 -26
  583. package/fesm2020/primeng-listbox.mjs.map +1 -1
  584. package/fesm2020/primeng-megamenu.mjs +27 -23
  585. package/fesm2020/primeng-megamenu.mjs.map +1 -1
  586. package/fesm2020/primeng-menu.mjs +20 -17
  587. package/fesm2020/primeng-menu.mjs.map +1 -1
  588. package/fesm2020/primeng-menubar.mjs +37 -34
  589. package/fesm2020/primeng-menubar.mjs.map +1 -1
  590. package/fesm2020/primeng-message.mjs +15 -16
  591. package/fesm2020/primeng-message.mjs.map +1 -1
  592. package/fesm2020/primeng-messages.mjs +33 -38
  593. package/fesm2020/primeng-messages.mjs.map +1 -1
  594. package/fesm2020/primeng-multiselect.mjs +71 -69
  595. package/fesm2020/primeng-multiselect.mjs.map +1 -1
  596. package/fesm2020/primeng-orderlist.mjs +33 -30
  597. package/fesm2020/primeng-orderlist.mjs.map +1 -1
  598. package/fesm2020/primeng-organizationchart.mjs +29 -24
  599. package/fesm2020/primeng-organizationchart.mjs.map +1 -1
  600. package/fesm2020/primeng-overlay.mjs +7 -8
  601. package/fesm2020/primeng-overlaypanel.mjs +16 -13
  602. package/fesm2020/primeng-overlaypanel.mjs.map +1 -1
  603. package/fesm2020/primeng-paginator.mjs +31 -28
  604. package/fesm2020/primeng-paginator.mjs.map +1 -1
  605. package/fesm2020/primeng-panel.mjs +28 -24
  606. package/fesm2020/primeng-panel.mjs.map +1 -1
  607. package/fesm2020/primeng-panelmenu.mjs +31 -29
  608. package/fesm2020/primeng-panelmenu.mjs.map +1 -1
  609. package/fesm2020/primeng-password.mjs +42 -35
  610. package/fesm2020/primeng-password.mjs.map +1 -1
  611. package/fesm2020/primeng-picklist.mjs +71 -164
  612. package/fesm2020/primeng-picklist.mjs.map +1 -1
  613. package/fesm2020/primeng-progressbar.mjs +16 -12
  614. package/fesm2020/primeng-progressbar.mjs.map +1 -1
  615. package/fesm2020/primeng-progressspinner.mjs +17 -13
  616. package/fesm2020/primeng-progressspinner.mjs.map +1 -1
  617. package/fesm2020/primeng-radiobutton.mjs +20 -16
  618. package/fesm2020/primeng-radiobutton.mjs.map +1 -1
  619. package/fesm2020/primeng-rating.mjs +46 -30
  620. package/fesm2020/primeng-rating.mjs.map +1 -1
  621. package/fesm2020/primeng-ripple.mjs +12 -11
  622. package/fesm2020/primeng-ripple.mjs.map +1 -1
  623. package/fesm2020/primeng-scroller.mjs +18 -16
  624. package/fesm2020/primeng-scroller.mjs.map +1 -1
  625. package/fesm2020/primeng-scrollpanel.mjs +16 -14
  626. package/fesm2020/primeng-scrollpanel.mjs.map +1 -1
  627. package/fesm2020/primeng-scrolltop.mjs +28 -25
  628. package/fesm2020/primeng-scrolltop.mjs.map +1 -1
  629. package/fesm2020/primeng-selectbutton.mjs +20 -16
  630. package/fesm2020/primeng-selectbutton.mjs.map +1 -1
  631. package/fesm2020/primeng-sidebar.mjs +14 -13
  632. package/fesm2020/primeng-sidebar.mjs.map +1 -1
  633. package/fesm2020/primeng-skeleton.mjs +16 -12
  634. package/fesm2020/primeng-skeleton.mjs.map +1 -1
  635. package/fesm2020/primeng-slidemenu.mjs +31 -28
  636. package/fesm2020/primeng-slidemenu.mjs.map +1 -1
  637. package/fesm2020/primeng-slider.mjs +16 -12
  638. package/fesm2020/primeng-slider.mjs.map +1 -1
  639. package/fesm2020/primeng-speeddial.mjs +24 -22
  640. package/fesm2020/primeng-speeddial.mjs.map +1 -1
  641. package/fesm2020/primeng-spinner.mjs +7 -8
  642. package/fesm2020/primeng-splitbutton.mjs +22 -18
  643. package/fesm2020/primeng-splitbutton.mjs.map +1 -1
  644. package/fesm2020/primeng-splitter.mjs +16 -14
  645. package/fesm2020/primeng-splitter.mjs.map +1 -1
  646. package/fesm2020/primeng-steps.mjs +18 -14
  647. package/fesm2020/primeng-steps.mjs.map +1 -1
  648. package/fesm2020/primeng-styleclass.mjs +14 -10
  649. package/fesm2020/primeng-styleclass.mjs.map +1 -1
  650. package/fesm2020/primeng-table.mjs +137 -151
  651. package/fesm2020/primeng-table.mjs.map +1 -1
  652. package/fesm2020/primeng-tabmenu.mjs +23 -20
  653. package/fesm2020/primeng-tabmenu.mjs.map +1 -1
  654. package/fesm2020/primeng-tabview.mjs +34 -30
  655. package/fesm2020/primeng-tabview.mjs.map +1 -1
  656. package/fesm2020/primeng-tag.mjs +18 -12
  657. package/fesm2020/primeng-tag.mjs.map +1 -1
  658. package/fesm2020/primeng-terminal.mjs +19 -17
  659. package/fesm2020/primeng-terminal.mjs.map +1 -1
  660. package/fesm2020/primeng-tieredmenu.mjs +30 -27
  661. package/fesm2020/primeng-tieredmenu.mjs.map +1 -1
  662. package/fesm2020/primeng-timeline.mjs +17 -13
  663. package/fesm2020/primeng-timeline.mjs.map +1 -1
  664. package/fesm2020/primeng-toast.mjs +36 -47
  665. package/fesm2020/primeng-toast.mjs.map +1 -1
  666. package/fesm2020/primeng-togglebutton.mjs +17 -13
  667. package/fesm2020/primeng-togglebutton.mjs.map +1 -1
  668. package/fesm2020/primeng-toolbar.mjs +16 -12
  669. package/fesm2020/primeng-toolbar.mjs.map +1 -1
  670. package/fesm2020/primeng-tooltip.mjs +11 -10
  671. package/fesm2020/primeng-tooltip.mjs.map +1 -1
  672. package/fesm2020/primeng-tree.mjs +49 -46
  673. package/fesm2020/primeng-tree.mjs.map +1 -1
  674. package/fesm2020/primeng-treeselect.mjs +23 -20
  675. package/fesm2020/primeng-treeselect.mjs.map +1 -1
  676. package/fesm2020/primeng-treetable.mjs +144 -143
  677. package/fesm2020/primeng-treetable.mjs.map +1 -1
  678. package/fesm2020/primeng-tristatecheckbox.mjs +22 -18
  679. package/fesm2020/primeng-tristatecheckbox.mjs.map +1 -1
  680. package/fesm2020/primeng-utils.mjs +0 -1
  681. package/fesm2020/primeng-virtualscroller.mjs +16 -13
  682. package/fesm2020/primeng-virtualscroller.mjs.map +1 -1
  683. package/fesm2020/primeng.mjs +0 -1
  684. package/fieldset/fieldset.d.ts +6 -4
  685. package/fileupload/fileupload.d.ts +13 -11
  686. package/focustrap/focustrap.d.ts +6 -3
  687. package/galleria/galleria.d.ts +6 -4
  688. package/image/image.d.ts +6 -4
  689. package/inplace/inplace.d.ts +6 -3
  690. package/inputmask/inputmask.d.ts +6 -3
  691. package/inputnumber/inputnumber.d.ts +9 -4
  692. package/inputswitch/inputswitch.d.ts +6 -3
  693. package/inputtext/inputtext.d.ts +4 -2
  694. package/inputtextarea/inputtextarea.d.ts +6 -4
  695. package/keyfilter/keyfilter.d.ts +7 -4
  696. package/knob/knob.d.ts +6 -3
  697. package/listbox/listbox.d.ts +6 -4
  698. package/megamenu/megamenu.d.ts +6 -4
  699. package/menu/menu.d.ts +6 -4
  700. package/menubar/menubar.d.ts +6 -4
  701. package/messages/messages.d.ts +7 -5
  702. package/multiselect/multiselect.d.ts +3 -2
  703. package/orderlist/orderlist.d.ts +6 -4
  704. package/organizationchart/organizationchart.d.ts +6 -4
  705. package/overlaypanel/overlaypanel.d.ts +6 -4
  706. package/package.json +1 -1
  707. package/paginator/paginator.d.ts +6 -4
  708. package/panel/panel.d.ts +6 -4
  709. package/panelmenu/panelmenu.d.ts +6 -4
  710. package/password/password.d.ts +10 -6
  711. package/picklist/picklist.d.ts +6 -4
  712. package/progressbar/progressbar.d.ts +6 -1
  713. package/progressspinner/progressspinner.d.ts +6 -1
  714. package/radiobutton/radiobutton.d.ts +6 -3
  715. package/rating/rating.d.ts +6 -3
  716. package/resources/components/common/common.css +1 -1
  717. package/resources/components/table/table.css +4 -0
  718. package/resources/components/tieredmenu/tieredmenu.css +5 -1
  719. package/resources/primeng.css +1 -1
  720. package/resources/primeng.min.css +1 -1
  721. package/ripple/ripple.d.ts +4 -3
  722. package/scroller/scroller.d.ts +3 -1
  723. package/scrollpanel/scrollpanel.d.ts +4 -2
  724. package/scrolltop/scrolltop.d.ts +6 -4
  725. package/selectbutton/selectbutton.d.ts +6 -3
  726. package/sidebar/sidebar.d.ts +3 -2
  727. package/skeleton/skeleton.d.ts +6 -1
  728. package/slidemenu/slidemenu.d.ts +6 -4
  729. package/slider/slider.d.ts +6 -3
  730. package/speeddial/speeddial.d.ts +4 -3
  731. package/splitbutton/splitbutton.d.ts +6 -3
  732. package/splitter/splitter.d.ts +5 -3
  733. package/steps/steps.d.ts +7 -5
  734. package/styleclass/styleclass.d.ts +6 -3
  735. package/table/table.d.ts +4 -5
  736. package/tabmenu/tabmenu.d.ts +3 -2
  737. package/tabview/tabview.d.ts +6 -4
  738. package/tag/tag.d.ts +6 -2
  739. package/terminal/terminal.d.ts +5 -3
  740. package/tieredmenu/tieredmenu.d.ts +7 -5
  741. package/timeline/timeline.d.ts +6 -4
  742. package/toast/toast.d.ts +5 -5
  743. package/togglebutton/togglebutton.d.ts +6 -3
  744. package/toolbar/toolbar.d.ts +6 -4
  745. package/tooltip/tooltip.d.ts +3 -2
  746. package/tree/tree.d.ts +7 -5
  747. package/treeselect/treeselect.d.ts +6 -4
  748. package/treetable/treetable.d.ts +5 -3
  749. package/tristatecheckbox/tristatecheckbox.d.ts +6 -3
  750. package/virtualscroller/virtualscroller.d.ts +6 -4
@@ -1,18 +1,19 @@
1
- import { NgModule, Component, Input, ChangeDetectionStrategy, ViewEncapsulation, ContentChildren } from '@angular/core';
2
- import { trigger, state, style, transition, animate } from '@angular/animations';
1
+ import { animate, state, style, transition, trigger } from '@angular/animations';
3
2
  import { CommonModule } from '@angular/common';
4
- import { PrimeTemplate, SharedModule } from 'primeng/api';
3
+ import { ChangeDetectionStrategy, Component, ContentChildren, Input, NgModule, ViewEncapsulation } from '@angular/core';
5
4
  import { RouterModule } from '@angular/router';
6
- import { TooltipModule } from 'primeng/tooltip';
5
+ import { PrimeTemplate, SharedModule } from 'primeng/api';
7
6
  import { DomHandler } from 'primeng/dom';
8
7
  import { AngleDownIcon } from 'primeng/icons/angledown';
9
- import { ChevronDownIcon } from 'primeng/icons/chevrondown';
10
8
  import { AngleRightIcon } from 'primeng/icons/angleright';
9
+ import { ChevronDownIcon } from 'primeng/icons/chevrondown';
11
10
  import { ChevronRightIcon } from 'primeng/icons/chevronright';
11
+ import { TooltipModule } from 'primeng/tooltip';
12
12
  import * as i0 from "@angular/core";
13
13
  import * as i1 from "@angular/common";
14
14
  import * as i2 from "@angular/router";
15
15
  import * as i3 from "primeng/tooltip";
16
+ import * as i4 from "primeng/api";
16
17
  export class BasePanelMenuItem {
17
18
  constructor(ref) {
18
19
  this.ref = ref;
@@ -58,8 +59,8 @@ export class PanelMenuSub extends BasePanelMenuItem {
58
59
  return this.expanded ? { value: 'visible', params: { transitionParams: this.transitionOptions, height: '*' } } : { value: 'hidden', params: { transitionParams: this.transitionOptions, height: '0' } };
59
60
  }
60
61
  }
61
- PanelMenuSub.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: PanelMenuSub, deps: [{ token: i0.ChangeDetectorRef }, { token: PanelMenu }], target: i0.ɵɵFactoryTarget.Component });
62
- PanelMenuSub.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.4", type: PanelMenuSub, selector: "p-panelMenuSub", inputs: { item: "item", expanded: "expanded", parentExpanded: "parentExpanded", transitionOptions: "transitionOptions", root: "root" }, host: { classAttribute: "p-element" }, usesInheritance: true, ngImport: i0, template: `
62
+ PanelMenuSub.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: PanelMenuSub, deps: [{ token: i0.ChangeDetectorRef }, { token: PanelMenu }], target: i0.ɵɵFactoryTarget.Component });
63
+ PanelMenuSub.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: PanelMenuSub, selector: "p-panelMenuSub", inputs: { item: "item", expanded: "expanded", parentExpanded: "parentExpanded", transitionOptions: "transitionOptions", root: "root" }, host: { classAttribute: "p-element" }, usesInheritance: true, ngImport: i0, template: `
63
64
  <ul [ngClass]="{ 'p-submenu-list': true, 'p-panelmenu-root-submenu': root, 'p-submenu-expanded': expanded }" [@submenu]="getAnimation()" role="tree">
64
65
  <ng-template ngFor let-child [ngForOf]="item.items">
65
66
  <li *ngIf="child.separator" class="p-menu-separator" role="separator"></li>
@@ -80,8 +81,8 @@ PanelMenuSub.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version:
80
81
  >
81
82
  <ng-container *ngIf="child.items">
82
83
  <ng-container *ngIf="!panelMenu.submenuIconTemplate">
83
- <AngleDownIcon [styleClass]="'p-panelmenu-icon'" *ngIf="child.expanded" [ngStyle]="child.iconStyle"/>
84
- <AngleRightIcon [styleClass]="'p-panelmenu-icon'" *ngIf="!child.expanded" [ngStyle]="child.iconStyle"/>
84
+ <AngleDownIcon [styleClass]="'p-panelmenu-icon'" *ngIf="child.expanded" [ngStyle]="child.iconStyle" />
85
+ <AngleRightIcon [styleClass]="'p-panelmenu-icon'" *ngIf="!child.expanded" [ngStyle]="child.iconStyle" />
85
86
  </ng-container>
86
87
  <ng-template *ngTemplateOutlet="panelMenu.submenuIconTemplate"></ng-template>
87
88
  </ng-container>
@@ -115,8 +116,8 @@ PanelMenuSub.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version:
115
116
  >
116
117
  <ng-container *ngIf="child.items">
117
118
  <ng-container *ngIf="!panelMenu.submenuIconTemplate">
118
- <AngleDownIcon *ngIf="child.expanded" [styleClass]="'p-panelmenu-icon'" [ngStyle]="child.iconStyle"/>
119
- <AngleRightIcon *ngIf="!child.expanded" [styleClass]="'p-panelmenu-icon'" [ngStyle]="child.iconStyle"/>
119
+ <AngleDownIcon *ngIf="child.expanded" [styleClass]="'p-panelmenu-icon'" [ngStyle]="child.iconStyle" />
120
+ <AngleRightIcon *ngIf="!child.expanded" [styleClass]="'p-panelmenu-icon'" [ngStyle]="child.iconStyle" />
120
121
  </ng-container>
121
122
  <ng-template *ngTemplateOutlet="panelMenu.submenuIconTemplate"></ng-template>
122
123
  </ng-container>
@@ -141,7 +142,7 @@ PanelMenuSub.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version:
141
142
  transition('void => *', animate(0))
142
143
  ])
143
144
  ], encapsulation: i0.ViewEncapsulation.None });
144
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: PanelMenuSub, decorators: [{
145
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: PanelMenuSub, decorators: [{
145
146
  type: Component,
146
147
  args: [{
147
148
  selector: 'p-panelMenuSub',
@@ -166,8 +167,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImpor
166
167
  >
167
168
  <ng-container *ngIf="child.items">
168
169
  <ng-container *ngIf="!panelMenu.submenuIconTemplate">
169
- <AngleDownIcon [styleClass]="'p-panelmenu-icon'" *ngIf="child.expanded" [ngStyle]="child.iconStyle"/>
170
- <AngleRightIcon [styleClass]="'p-panelmenu-icon'" *ngIf="!child.expanded" [ngStyle]="child.iconStyle"/>
170
+ <AngleDownIcon [styleClass]="'p-panelmenu-icon'" *ngIf="child.expanded" [ngStyle]="child.iconStyle" />
171
+ <AngleRightIcon [styleClass]="'p-panelmenu-icon'" *ngIf="!child.expanded" [ngStyle]="child.iconStyle" />
171
172
  </ng-container>
172
173
  <ng-template *ngTemplateOutlet="panelMenu.submenuIconTemplate"></ng-template>
173
174
  </ng-container>
@@ -201,8 +202,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImpor
201
202
  >
202
203
  <ng-container *ngIf="child.items">
203
204
  <ng-container *ngIf="!panelMenu.submenuIconTemplate">
204
- <AngleDownIcon *ngIf="child.expanded" [styleClass]="'p-panelmenu-icon'" [ngStyle]="child.iconStyle"/>
205
- <AngleRightIcon *ngIf="!child.expanded" [styleClass]="'p-panelmenu-icon'" [ngStyle]="child.iconStyle"/>
205
+ <AngleDownIcon *ngIf="child.expanded" [styleClass]="'p-panelmenu-icon'" [ngStyle]="child.iconStyle" />
206
+ <AngleRightIcon *ngIf="!child.expanded" [styleClass]="'p-panelmenu-icon'" [ngStyle]="child.iconStyle" />
206
207
  </ng-container>
207
208
  <ng-template *ngTemplateOutlet="panelMenu.submenuIconTemplate"></ng-template>
208
209
  </ng-container>
@@ -245,8 +246,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImpor
245
246
  type: Input
246
247
  }] } });
247
248
  export class PanelMenu extends BasePanelMenuItem {
248
- constructor(ref) {
249
+ constructor(ref, licenseManager) {
249
250
  super(ref);
251
+ this.licenseManager = licenseManager;
250
252
  this.multiple = true;
251
253
  this.transitionOptions = '400ms cubic-bezier(0.86, 0, 0.07, 1)';
252
254
  }
@@ -259,6 +261,9 @@ export class PanelMenu extends BasePanelMenuItem {
259
261
  }
260
262
  });
261
263
  }
264
+ ngAfterViewInit() {
265
+ this.licenseManager['check']();
266
+ }
262
267
  collapseAll() {
263
268
  for (let item of this.model) {
264
269
  if (item.expanded) {
@@ -301,8 +306,8 @@ export class PanelMenu extends BasePanelMenuItem {
301
306
  return item.expanded ? { value: 'visible', params: { transitionParams: this.animating ? this.transitionOptions : '0ms', height: '*' } } : { value: 'hidden', params: { transitionParams: this.transitionOptions, height: '0' } };
302
307
  }
303
308
  }
304
- PanelMenu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: PanelMenu, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
305
- PanelMenu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.4", type: PanelMenu, selector: "p-panelMenu", inputs: { model: "model", style: "style", styleClass: "styleClass", multiple: "multiple", transitionOptions: "transitionOptions" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], usesInheritance: true, ngImport: i0, template: `
309
+ PanelMenu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: PanelMenu, deps: [{ token: i0.ChangeDetectorRef }, { token: i4.LicenseManager }], target: i0.ɵɵFactoryTarget.Component });
310
+ PanelMenu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: PanelMenu, selector: "p-panelMenu", inputs: { model: "model", style: "style", styleClass: "styleClass", multiple: "multiple", transitionOptions: "transitionOptions" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], usesInheritance: true, ngImport: i0, template: `
306
311
  <div [class]="styleClass" [ngStyle]="style" [ngClass]="'p-panelmenu p-component'">
307
312
  <ng-container *ngFor="let item of model; let f = first; let l = last">
308
313
  <div class="p-panelmenu-panel" *ngIf="visible(item)">
@@ -356,7 +361,6 @@ PanelMenu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15
356
361
  [replaceUrl]="item.replaceUrl"
357
362
  [state]="item.state"
358
363
  >
359
-
360
364
  <!--
361
365
  <span *ngIf="item.items" class="p-panelmenu-icon pi" [ngClass]="{ 'pi-chevron-right': !item.expanded, 'pi-chevron-down': item.expanded }"></span>
362
366
  -->
@@ -393,7 +397,7 @@ PanelMenu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15
393
397
  transition('void => *', animate(0))
394
398
  ])
395
399
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
396
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: PanelMenu, decorators: [{
400
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: PanelMenu, decorators: [{
397
401
  type: Component,
398
402
  args: [{ selector: 'p-panelMenu', template: `
399
403
  <div [class]="styleClass" [ngStyle]="style" [ngClass]="'p-panelmenu p-component'">
@@ -449,7 +453,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImpor
449
453
  [replaceUrl]="item.replaceUrl"
450
454
  [state]="item.state"
451
455
  >
452
-
453
456
  <!--
454
457
  <span *ngIf="item.items" class="p-panelmenu-icon pi" [ngClass]="{ 'pi-chevron-right': !item.expanded, 'pi-chevron-down': item.expanded }"></span>
455
458
  -->
@@ -488,7 +491,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImpor
488
491
  ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
489
492
  class: 'p-element'
490
493
  }, styles: [".p-panelmenu .p-panelmenu-header-link{display:flex;align-items:center;-webkit-user-select:none;user-select:none;cursor:pointer;position:relative;text-decoration:none}.p-panelmenu .p-panelmenu-header-link:focus{z-index:1}.p-panelmenu .p-submenu-list{margin:0;padding:0;list-style:none}.p-panelmenu .p-menuitem-link{display:flex;align-items:center;-webkit-user-select:none;user-select:none;cursor:pointer;text-decoration:none}.p-panelmenu .p-menuitem-text{line-height:1}.p-panelmenu-expanded.p-toggleable-content:not(.ng-animating),.p-panelmenu .p-submenu-expanded:not(.ng-animating){overflow:visible}.p-panelmenu .p-toggleable-content,.p-panelmenu .p-submenu-list{overflow:hidden}\n"] }]
491
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { model: [{
494
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i4.LicenseManager }]; }, propDecorators: { model: [{
492
495
  type: Input
493
496
  }], style: [{
494
497
  type: Input
@@ -504,10 +507,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImpor
504
507
  }] } });
505
508
  export class PanelMenuModule {
506
509
  }
507
- PanelMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: PanelMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
508
- PanelMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.4", ngImport: i0, type: PanelMenuModule, declarations: [PanelMenu, PanelMenuSub], imports: [CommonModule, RouterModule, TooltipModule, SharedModule, AngleDownIcon, AngleRightIcon, ChevronDownIcon, ChevronRightIcon], exports: [PanelMenu, RouterModule, TooltipModule, SharedModule] });
509
- PanelMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: PanelMenuModule, imports: [CommonModule, RouterModule, TooltipModule, SharedModule, AngleDownIcon, AngleRightIcon, ChevronDownIcon, ChevronRightIcon, RouterModule, TooltipModule, SharedModule] });
510
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: PanelMenuModule, decorators: [{
510
+ PanelMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: PanelMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
511
+ PanelMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.8", ngImport: i0, type: PanelMenuModule, declarations: [PanelMenu, PanelMenuSub], imports: [CommonModule, RouterModule, TooltipModule, SharedModule, AngleDownIcon, AngleRightIcon, ChevronDownIcon, ChevronRightIcon], exports: [PanelMenu, RouterModule, TooltipModule, SharedModule] });
512
+ PanelMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: PanelMenuModule, imports: [CommonModule, RouterModule, TooltipModule, SharedModule, AngleDownIcon, AngleRightIcon, ChevronDownIcon, ChevronRightIcon, RouterModule, TooltipModule, SharedModule] });
513
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: PanelMenuModule, decorators: [{
511
514
  type: NgModule,
512
515
  args: [{
513
516
  imports: [CommonModule, RouterModule, TooltipModule, SharedModule, AngleDownIcon, AngleRightIcon, ChevronDownIcon, ChevronRightIcon],
@@ -515,4 +518,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImpor
515
518
  declarations: [PanelMenu, PanelMenuSub]
516
519
  }]
517
520
  }] });
518
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFuZWxtZW51LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3BhbmVsbWVudS9wYW5lbG1lbnUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQix1QkFBdUIsRUFBRSxpQkFBaUIsRUFBaUMsZUFBZSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3JMLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBWSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7QUFFOUQsTUFBTSxPQUFPLGlCQUFpQjtJQUMxQixZQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtJQUFHLENBQUM7SUFFOUMsV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJO1FBQ25CLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixPQUFPO1NB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LEVBQUUsWUFBWSxDQUFDO29CQUMvRCxZQUFZLEVBQUUsQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDO2lCQUMxQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBDb21wb25lbnQsIElucHV0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFZpZXdFbmNhcHN1bGF0aW9uLCBUZW1wbGF0ZVJlZiwgQWZ0ZXJDb250ZW50SW5pdCwgQ29udGVudENoaWxkcmVuLCBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRyaWdnZXIsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgYW5pbWF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1lbnVJdGVtLCBQcmltZVRlbXBsYXRlLCBTaGFyZWRNb2R1bGUgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9vbHRpcCc7XG5pbXBvcnQgeyBEb21IYW5kbGVyIH0gZnJvbSAncHJpbWVuZy9kb20nO1xuaW1wb3J0IHsgQW5nbGVEb3duSWNvbiB9IGZyb20gJ3ByaW1lbmcvaWNvbnMvYW5nbGVkb3duJztcbmltcG9ydCB7IENoZXZyb25Eb3duSWNvbiB9IGZyb20gJ3ByaW1lbmcvaWNvbnMvY2hldnJvbmRvd24nO1xuaW1wb3J0IHsgQW5nbGVSaWdodEljb24gfSBmcm9tICdwcmltZW5nL2ljb25zL2FuZ2xlcmlnaHQnO1xuaW1wb3J0IHsgQ2hldnJvblJpZ2h0SWNvbiB9IGZyb20gJ3ByaW1lbmcvaWNvbnMvY2hldnJvbnJpZ2h0JztcblxuZXhwb3J0IGNsYXNzIEJhc2VQYW5lbE1lbnVJdGVtIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgICBoYW5kbGVDbGljayhldmVudCwgaXRlbSkge1xuICAgICAgICBpZiAoaXRlbS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGl0ZW0uZXhwYW5kZWQgPSAhaXRlbS5leHBhbmRlZDtcbiAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgIGlmICghaXRlbS51cmwgJiYgIWl0ZW0ucm91dGVyTGluaykge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpdGVtLmNvbW1hbmQpIHtcbiAgICAgICAgICAgIGl0ZW0uY29tbWFuZCh7XG4gICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgICAgICAgaXRlbTogaXRlbVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1wYW5lbE1lbnVTdWInLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDx1bCBbbmdDbGFzc109XCJ7ICdwLXN1Ym1lbnUtbGlzdCc6IHRydWUsICdwLXBhbmVsbWVudS1yb290LXN1Ym1lbnUnOiByb290LCAncC1zdWJtZW51LWV4cGFuZGVkJzogZXhwYW5kZWQgfVwiIFtAc3VibWVudV09XCJnZXRBbmltYXRpb24oKVwiIHJvbGU9XCJ0cmVlXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LWNoaWxkIFtuZ0Zvck9mXT1cIml0ZW0uaXRlbXNcIj5cbiAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJjaGlsZC5zZXBhcmF0b3JcIiBjbGFzcz1cInAtbWVudS1zZXBhcmF0b3JcIiByb2xlPVwic2VwYXJhdG9yXCI+PC9saT5cbiAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCIhY2hpbGQuc2VwYXJhdG9yXCIgY2xhc3M9XCJwLW1lbnVpdGVtXCIgW25nQ2xhc3NdPVwiY2hpbGQuc3R5bGVDbGFzc1wiIFtjbGFzcy5wLWhpZGRlbl09XCJjaGlsZC52aXNpYmxlID09PSBmYWxzZVwiIFtuZ1N0eWxlXT1cImNoaWxkLnN0eWxlXCIgcFRvb2x0aXAgW3Rvb2x0aXBPcHRpb25zXT1cImNoaWxkLnRvb2x0aXBPcHRpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFjaGlsZC5yb3V0ZXJMaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uSXRlbUtleURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5ocmVmXT1cImNoaWxkLnVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtbWVudWl0ZW0tbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCIhaXRlbS5leHBhbmRlZCB8fCAhcGFyZW50RXhwYW5kZWQgPyBudWxsIDogY2hpbGQuZGlzYWJsZWQgPyBudWxsIDogJzAnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cImNoaWxkLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3AtZGlzYWJsZWQnOiBjaGlsZC5kaXNhYmxlZCB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJ0cmVlaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImNoaWxkLmV4cGFuZGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVDbGljaygkZXZlbnQsIGNoaWxkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGFyZ2V0XT1cImNoaWxkLnRhcmdldFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJjaGlsZC50aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjaGlsZC5pdGVtc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhcGFuZWxNZW51LnN1Ym1lbnVJY29uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFuZ2xlRG93bkljb24gW3N0eWxlQ2xhc3NdPVwiJ3AtcGFuZWxtZW51LWljb24nXCIgKm5nSWY9XCJjaGlsZC5leHBhbmRlZFwiIFtuZ1N0eWxlXT1cImNoaWxkLmljb25TdHlsZVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFuZ2xlUmlnaHRJY29uIFtzdHlsZUNsYXNzXT1cIidwLXBhbmVsbWVudS1pY29uJ1wiICpuZ0lmPVwiIWNoaWxkLmV4cGFuZGVkXCIgW25nU3R5bGVdPVwiY2hpbGQuaWNvblN0eWxlXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cInBhbmVsTWVudS5zdWJtZW51SWNvblRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLWljb25cIiBbbmdDbGFzc109XCJjaGlsZC5pY29uXCIgKm5nSWY9XCJjaGlsZC5pY29uXCIgW25nU3R5bGVdPVwiY2hpbGQuaWNvblN0eWxlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLXRleHRcIiAqbmdJZj1cImNoaWxkLmVzY2FwZSAhPT0gZmFsc2U7IGVsc2UgaHRtbExhYmVsXCI+e3sgY2hpbGQubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2h0bWxMYWJlbD48c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0tdGV4dFwiIFtpbm5lckhUTUxdPVwiY2hpbGQubGFiZWxcIj48L3NwYW4+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1tZW51aXRlbS1iYWRnZVwiICpuZ0lmPVwiY2hpbGQuYmFkZ2VcIiBbbmdDbGFzc109XCJjaGlsZC5iYWRnZVN0eWxlQ2xhc3NcIj57eyBjaGlsZC5iYWRnZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjaGlsZC5yb3V0ZXJMaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uSXRlbUtleURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJjaGlsZC5yb3V0ZXJMaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtxdWVyeVBhcmFtc109XCJjaGlsZC5xdWVyeVBhcmFtc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua0FjdGl2ZV09XCIncC1tZW51aXRlbS1saW5rLWFjdGl2ZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cImNoaWxkLnJvdXRlckxpbmtBY3RpdmVPcHRpb25zIHx8IHsgZXhhY3Q6IGZhbHNlIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLW1lbnVpdGVtLWxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAncC1kaXNhYmxlZCc6IGNoaWxkLmRpc2FibGVkIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiIWl0ZW0uZXhwYW5kZWQgfHwgIXBhcmVudEV4cGFuZGVkID8gbnVsbCA6IGNoaWxkLmRpc2FibGVkID8gbnVsbCA6ICcwJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJjaGlsZC5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwidHJlZWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJjaGlsZC5leHBhbmRlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlQ2xpY2soJGV2ZW50LCBjaGlsZClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RhcmdldF09XCJjaGlsZC50YXJnZXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiY2hpbGQudGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2ZyYWdtZW50XT1cImNoaWxkLmZyYWdtZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtxdWVyeVBhcmFtc0hhbmRsaW5nXT1cImNoaWxkLnF1ZXJ5UGFyYW1zSGFuZGxpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3ByZXNlcnZlRnJhZ21lbnRdPVwiY2hpbGQucHJlc2VydmVGcmFnbWVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2tpcExvY2F0aW9uQ2hhbmdlXT1cImNoaWxkLnNraXBMb2NhdGlvbkNoYW5nZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcmVwbGFjZVVybF09XCJjaGlsZC5yZXBsYWNlVXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdGF0ZV09XCJjaGlsZC5zdGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjaGlsZC5pdGVtc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhcGFuZWxNZW51LnN1Ym1lbnVJY29uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFuZ2xlRG93bkljb24gKm5nSWY9XCJjaGlsZC5leHBhbmRlZFwiIFtzdHlsZUNsYXNzXT1cIidwLXBhbmVsbWVudS1pY29uJ1wiIFtuZ1N0eWxlXT1cImNoaWxkLmljb25TdHlsZVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFuZ2xlUmlnaHRJY29uICpuZ0lmPVwiIWNoaWxkLmV4cGFuZGVkXCIgW3N0eWxlQ2xhc3NdPVwiJ3AtcGFuZWxtZW51LWljb24nXCIgW25nU3R5bGVdPVwiY2hpbGQuaWNvblN0eWxlXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cInBhbmVsTWVudS5zdWJtZW51SWNvblRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLWljb25cIiBbbmdDbGFzc109XCJjaGlsZC5pY29uXCIgKm5nSWY9XCJjaGlsZC5pY29uXCIgW25nU3R5bGVdPVwiY2hpbGQuaWNvblN0eWxlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLXRleHRcIiAqbmdJZj1cImNoaWxkLmVzY2FwZSAhPT0gZmFsc2U7IGVsc2UgaHRtbFJvdXRlTGFiZWxcIj57eyBjaGlsZC5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaHRtbFJvdXRlTGFiZWw+PHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLXRleHRcIiBbaW5uZXJIVE1MXT1cImNoaWxkLmxhYmVsXCI+PC9zcGFuPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0tYmFkZ2VcIiAqbmdJZj1cImNoaWxkLmJhZGdlXCIgW25nQ2xhc3NdPVwiY2hpbGQuYmFkZ2VTdHlsZUNsYXNzXCI+e3sgY2hpbGQuYmFkZ2UgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPHAtcGFuZWxNZW51U3ViIFtpdGVtXT1cImNoaWxkXCIgW3BhcmVudEV4cGFuZGVkXT1cImV4cGFuZGVkICYmIHBhcmVudEV4cGFuZGVkXCIgW2V4cGFuZGVkXT1cImNoaWxkLmV4cGFuZGVkXCIgW3RyYW5zaXRpb25PcHRpb25zXT1cInRyYW5zaXRpb25PcHRpb25zXCIgKm5nSWY9XCJjaGlsZC5pdGVtc1wiPjwvcC1wYW5lbE1lbnVTdWI+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvdWw+XG4gICAgYCxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ3N1Ym1lbnUnLCBbXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICAnaGlkZGVuJyxcbiAgICAgICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzAnXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICAndmlzaWJsZScsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcqJ1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdHJhbnNpdGlvbigndmlzaWJsZSA8PT4gaGlkZGVuJywgW2FuaW1hdGUoJ3t7dHJhbnNpdGlvblBhcmFtc319JyldKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ3ZvaWQgPT4gKicsIGFuaW1hdGUoMCkpXG4gICAgICAgIF0pXG4gICAgXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBQYW5lbE1lbnVTdWIgZXh0ZW5kcyBCYXNlUGFuZWxNZW51SXRlbSB7XG4gICAgQElucHV0KCkgaXRlbTogTWVudUl0ZW07XG5cbiAgICBASW5wdXQoKSBleHBhbmRlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHBhcmVudEV4cGFuZGVkOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgdHJhbnNpdGlvbk9wdGlvbnM6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHJvb3Q6IGJvb2xlYW47XG5cbiAgICBjb25zdHJ1Y3RvcihyZWY6IENoYW5nZURldGVjdG9yUmVmLCBwdWJsaWMgcGFuZWxNZW51OiBQYW5lbE1lbnUpIHtcbiAgICAgICAgc3VwZXIocmVmKTtcbiAgICB9XG5cbiAgICBvbkl0ZW1LZXlEb3duKGV2ZW50KSB7XG4gICAgICAgIGxldCBsaXN0SXRlbSA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7XG5cbiAgICAgICAgc3dpdGNoIChldmVudC5jb2RlKSB7XG4gICAgICAgICAgICBjYXNlICdTcGFjZSc6XG4gICAgICAgICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgICAgICAgICAgaWYgKGxpc3RJdGVtICYmICFEb21IYW5kbGVyLmhhc0NsYXNzKGxpc3RJdGVtLCAncC1kaXNhYmxlZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIGxpc3RJdGVtLmNsaWNrKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldEFuaW1hdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXhwYW5kZWQgPyB7IHZhbHVlOiAndmlzaWJsZScsIHBhcmFtczogeyB0cmFuc2l0aW9uUGFyYW1zOiB0aGlzLnRyYW5zaXRpb25PcHRpb25zLCBoZWlnaHQ6ICcqJyB9IH0gOiB7IHZhbHVlOiAnaGlkZGVuJywgcGFyYW1zOiB7IHRyYW5zaXRpb25QYXJhbXM6IHRoaXMudHJhbnNpdGlvbk9wdGlvbnMsIGhlaWdodDogJzAnIH0gfTtcbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1wYW5lbE1lbnUnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIiBbbmdTdHlsZV09XCJzdHlsZVwiIFtuZ0NsYXNzXT1cIidwLXBhbmVsbWVudSBwLWNvbXBvbmVudCdcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbW9kZWw7IGxldCBmID0gZmlyc3Q7IGxldCBsID0gbGFzdFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXBhbmVsbWVudS1wYW5lbFwiICpuZ0lmPVwidmlzaWJsZShpdGVtKVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsgJ3AtY29tcG9uZW50IHAtcGFuZWxtZW51LWhlYWRlcic6IHRydWUsICdwLWhpZ2hsaWdodCc6IGl0ZW0uZXhwYW5kZWQsICdwLWRpc2FibGVkJzogaXRlbS5kaXNhYmxlZCB9XCIgW2NsYXNzXT1cIml0ZW0uc3R5bGVDbGFzc1wiIFtuZ1N0eWxlXT1cIml0ZW0uc3R5bGVcIiBwVG9vbHRpcCBbdG9vbHRpcE9wdGlvbnNdPVwiaXRlbS50b29sdGlwT3B0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFpdGVtLnJvdXRlckxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmhyZWZdPVwiaXRlbS51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVDbGljaygkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbkl0ZW1LZXlEb3duKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cIml0ZW0uZGlzYWJsZWQgPyBudWxsIDogJzAnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJpdGVtLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGFyZ2V0XT1cIml0ZW0udGFyZ2V0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJpdGVtLnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtcGFuZWxtZW51LWhlYWRlci1saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIml0ZW0uZXhwYW5kZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cIml0ZW0uaWQgKyAnX2hlYWRlcidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiaXRlbS5pZCArICdfY29udGVudCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpdGVtLml0ZW1zXCIgY2xhc3M9XCJwLXBhbmVsbWVudS1pY29uIHBpXCIgW25nQ2xhc3NdPVwieyAncGktY2hldnJvbi1yaWdodCc6ICFpdGVtLmV4cGFuZGVkLCAncGktY2hldnJvbi1kb3duJzogaXRlbS5leHBhbmRlZCB9XCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5pdGVtc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXN1Ym1lbnVJY29uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDaGV2cm9uRG93bkljb24gW3N0eWxlQ2xhc3NdPVwiJ3AtcGFuZWxtZW51LWljb24nXCIgKm5nSWY9XCJpdGVtLmV4cGFuZGVkXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDaGV2cm9uUmlnaHRJY29uIFtzdHlsZUNsYXNzXT1cIidwLXBhbmVsbWVudS1pY29uJ1wiICpuZ0lmPVwiIWl0ZW0uZXhwYW5kZWRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwic3VibWVudUljb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLWljb25cIiBbbmdDbGFzc109XCJpdGVtLmljb25cIiAqbmdJZj1cIml0ZW0uaWNvblwiIFtuZ1N0eWxlXT1cIml0ZW0uaWNvblN0eWxlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1tZW51aXRlbS10ZXh0XCIgKm5nSWY9XCJpdGVtLmVzY2FwZSAhPT0gZmFsc2U7IGVsc2UgaHRtbExhYmVsXCI+e3sgaXRlbS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2h0bWxMYWJlbD48c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0tdGV4dFwiIFtpbm5lckhUTUxdPVwiaXRlbS5sYWJlbFwiPjwvc3Bhbj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1tZW51aXRlbS1iYWRnZVwiICpuZ0lmPVwiaXRlbS5iYWRnZVwiIFtuZ0NsYXNzXT1cIml0ZW0uYmFkZ2VTdHlsZUNsYXNzXCI+e3sgaXRlbS5iYWRnZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLnJvdXRlckxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIml0ZW0ucm91dGVyTGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3F1ZXJ5UGFyYW1zXT1cIml0ZW0ucXVlcnlQYXJhbXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlXT1cIidwLW1lbnVpdGVtLWxpbmstYWN0aXZlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cIml0ZW0ucm91dGVyTGlua0FjdGl2ZU9wdGlvbnMgfHwgeyBleGFjdDogZmFsc2UgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUNsaWNrKCRldmVudCwgaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uSXRlbUtleURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RhcmdldF09XCJpdGVtLnRhcmdldFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiaXRlbS50aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLXBhbmVsbWVudS1oZWFkZXItbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiaXRlbS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiaXRlbS5kaXNhYmxlZCA/IG51bGwgOiAnMCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmcmFnbWVudF09XCJpdGVtLmZyYWdtZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcXVlcnlQYXJhbXNIYW5kbGluZ109XCJpdGVtLnF1ZXJ5UGFyYW1zSGFuZGxpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwcmVzZXJ2ZUZyYWdtZW50XT1cIml0ZW0ucHJlc2VydmVGcmFnbWVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NraXBMb2NhdGlvbkNoYW5nZV09XCJpdGVtLnNraXBMb2NhdGlvbkNoYW5nZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcGxhY2VVcmxdPVwiaXRlbS5yZXBsYWNlVXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RhdGVdPVwiaXRlbS5zdGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0uaXRlbXNcIiBjbGFzcz1cInAtcGFuZWxtZW51LWljb24gcGlcIiBbbmdDbGFzc109XCJ7ICdwaS1jaGV2cm9uLXJpZ2h0JzogIWl0ZW0uZXhwYW5kZWQsICdwaS1jaGV2cm9uLWRvd24nOiBpdGVtLmV4cGFuZGVkIH1cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0uaXRlbXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzdWJtZW51SWNvblRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hldnJvbkRvd25JY29uIFtzdHlsZUNsYXNzXT1cIidwLXBhbmVsbWVudS1pY29uJ1wiICpuZ0lmPVwiaXRlbS5leHBhbmRlZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0SWNvbiBbc3R5bGVDbGFzc109XCIncC1wYW5lbG1lbnUtaWNvbidcIiAqbmdJZj1cIiFpdGVtLmV4cGFuZGVkXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cInN1Ym1lbnVJY29uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1tZW51aXRlbS1pY29uXCIgW25nQ2xhc3NdPVwiaXRlbS5pY29uXCIgKm5nSWY9XCJpdGVtLmljb25cIiBbbmdTdHlsZV09XCJpdGVtLmljb25TdHlsZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0tdGV4dFwiICpuZ0lmPVwiaXRlbS5lc2NhcGUgIT09IGZhbHNlOyBlbHNlIGh0bWxSb3V0ZUxhYmVsXCI+e3sgaXRlbS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2h0bWxSb3V0ZUxhYmVsPjxzcGFuIGNsYXNzPVwicC1tZW51aXRlbS10ZXh0XCIgW2lubmVySFRNTF09XCJpdGVtLmxhYmVsXCI+PC9zcGFuPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLWJhZGdlXCIgKm5nSWY9XCJpdGVtLmJhZGdlXCIgW25nQ2xhc3NdPVwiaXRlbS5iYWRnZVN0eWxlQ2xhc3NcIj57eyBpdGVtLmJhZGdlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0uaXRlbXNcIiBjbGFzcz1cInAtdG9nZ2xlYWJsZS1jb250ZW50XCIgW25nQ2xhc3NdPVwieyAncC1wYW5lbG1lbnUtZXhwYW5kZWQnOiBpdGVtLmV4cGFuZGVkIH1cIiBbQHJvb3RJdGVtXT1cImdldEFuaW1hdGlvbihpdGVtKVwiIChAcm9vdEl0ZW0uZG9uZSk9XCJvblRvZ2dsZURvbmUoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtcGFuZWxtZW51LWNvbnRlbnRcIiByb2xlPVwicmVnaW9uXCIgW2F0dHIuaWRdPVwiaXRlbS5pZCArICdfY29udGVudCdcIiBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiaXRlbS5pZCArICdfaGVhZGVyJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXBhbmVsTWVudVN1YiBbaXRlbV09XCJpdGVtXCIgW3BhcmVudEV4cGFuZGVkXT1cIml0ZW0uZXhwYW5kZWRcIiBbZXhwYW5kZWRdPVwidHJ1ZVwiIFt0cmFuc2l0aW9uT3B0aW9uc109XCJ0cmFuc2l0aW9uT3B0aW9uc1wiIFtyb290XT1cInRydWVcIj48L3AtcGFuZWxNZW51U3ViPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKCdyb290SXRlbScsIFtcbiAgICAgICAgICAgIHN0YXRlKFxuICAgICAgICAgICAgICAgICdoaWRkZW4nLFxuICAgICAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMCdcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YXRlKFxuICAgICAgICAgICAgICAgICd2aXNpYmxlJyxcbiAgICAgICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogJyonXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCd2aXNpYmxlIDw9PiBoaWRkZW4nLCBbYW5pbWF0ZSgne3t0cmFuc2l0aW9uUGFyYW1zfX0nKV0pLFxuICAgICAgICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiAqJywgYW5pbWF0ZSgwKSlcbiAgICAgICAgXSlcbiAgICBdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3R5bGVVcmxzOiBbJy4vcGFuZWxtZW51LmNzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBQYW5lbE1lbnUgZXh0ZW5kcyBCYXNlUGFuZWxNZW51SXRlbSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICAgIEBJbnB1dCgpIG1vZGVsOiBNZW51SXRlbVtdO1xuXG4gICAgQElucHV0KCkgc3R5bGU6IGFueTtcblxuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIG11bHRpcGxlOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIHRyYW5zaXRpb25PcHRpb25zOiBzdHJpbmcgPSAnNDAwbXMgY3ViaWMtYmV6aWVyKDAuODYsIDAsIDAuMDcsIDEpJztcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oUHJpbWVUZW1wbGF0ZSkgdGVtcGxhdGVzOiBRdWVyeUxpc3Q8YW55PjtcblxuICAgIHN1Ym1lbnVJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBwdWJsaWMgYW5pbWF0aW5nOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IocmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgICAgICBzdXBlcihyZWYpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChpdGVtLmdldFR5cGUoKSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3N1Ym1lbnVpY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJtZW51SWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbGxhcHNlQWxsKCkge1xuICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHRoaXMubW9kZWwpIHtcbiAgICAgICAgICAgIGlmIChpdGVtLmV4cGFuZGVkKSB7XG4gICAgICAgICAgICAgICAgaXRlbS5leHBhbmRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFuZGxlQ2xpY2soZXZlbnQsIGl0ZW0pIHtcbiAgICAgICAgaWYgKCF0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBtb2RlbEl0ZW0gb2YgdGhpcy5tb2RlbCkge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtICE9PSBtb2RlbEl0ZW0gJiYgbW9kZWxJdGVtLmV4cGFuZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIG1vZGVsSXRlbS5leHBhbmRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYW5pbWF0aW5nID0gdHJ1ZTtcbiAgICAgICAgc3VwZXIuaGFuZGxlQ2xpY2soZXZlbnQsIGl0ZW0pO1xuICAgIH1cblxuICAgIG9uVG9nZ2xlRG9uZSgpIHtcbiAgICAgICAgdGhpcy5hbmltYXRpbmcgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvbkl0ZW1LZXlEb3duKGV2ZW50KSB7XG4gICAgICAgIGxldCBsaXN0SXRlbSA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7XG5cbiAgICAgICAgc3dpdGNoIChldmVudC5jb2RlKSB7XG4gICAgICAgICAgICBjYXNlICdTcGFjZSc6XG4gICAgICAgICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgICAgICAgICAgaWYgKGxpc3RJdGVtICYmICFEb21IYW5kbGVyLmhhc0NsYXNzKGxpc3RJdGVtLCAncC1kaXNhYmxlZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIGxpc3RJdGVtLmNsaWNrKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZpc2libGUoaXRlbSkge1xuICAgICAgICByZXR1cm4gaXRlbS52aXNpYmxlICE9PSBmYWxzZTtcbiAgICB9XG5cbiAgICBnZXRBbmltYXRpb24oaXRlbSkge1xuICAgICAgICByZXR1cm4gaXRlbS5leHBhbmRlZCA/IHsgdmFsdWU6ICd2aXNpYmxlJywgcGFyYW1zOiB7IHRyYW5zaXRpb25QYXJhbXM6IHRoaXMuYW5pbWF0aW5nID8gdGhpcy50cmFuc2l0aW9uT3B0aW9ucyA6ICcwbXMnLCBoZWlnaHQ6ICcqJyB9IH0gOiB7IHZhbHVlOiAnaGlkZGVuJywgcGFyYW1zOiB7IHRyYW5zaXRpb25QYXJhbXM6IHRoaXMudHJhbnNpdGlvbk9wdGlvbnMsIGhlaWdodDogJzAnIH0gfTtcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUm91dGVyTW9kdWxlLCBUb29sdGlwTW9kdWxlLCBTaGFyZWRNb2R1bGUsIEFuZ2xlRG93bkljb24sIEFuZ2xlUmlnaHRJY29uLCBDaGV2cm9uRG93bkljb24sIENoZXZyb25SaWdodEljb25dLFxuICAgIGV4cG9ydHM6IFtQYW5lbE1lbnUsIFJvdXRlck1vZHVsZSwgVG9vbHRpcE1vZHVsZSwgU2hhcmVkTW9kdWxlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtQYW5lbE1lbnUsIFBhbmVsTWVudVN1Yl1cbn0pXG5leHBvcnQgY2xhc3MgUGFuZWxNZW51TW9kdWxlIHt9XG4iXX0=
521
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFuZWxtZW51LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3BhbmVsbWVudS9wYW5lbG1lbnUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFtQyx1QkFBdUIsRUFBcUIsU0FBUyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUEwQixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwTSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUE0QixhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDekMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7QUFFaEQsTUFBTSxPQUFPLGlCQUFpQjtJQUMxQixZQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtJQUFHLENBQUM7SUFFOUMsV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJO1FBQ25CLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixPQUFP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QUFhLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixDQUFDO29CQUNwSSxPQUFPLEVBQUUsQ0FBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxZQUFZLENBQUM7b0JBQy9ELFlBQVksRUFBRSxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUM7aUJBQzFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgSW5wdXQsIE5nTW9kdWxlLCBRdWVyeUxpc3QsIFRlbXBsYXRlUmVmLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IExpY2Vuc2VNYW5hZ2VyLCBNZW51SXRlbSwgUHJpbWVUZW1wbGF0ZSwgU2hhcmVkTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgRG9tSGFuZGxlciB9IGZyb20gJ3ByaW1lbmcvZG9tJztcbmltcG9ydCB7IEFuZ2xlRG93bkljb24gfSBmcm9tICdwcmltZW5nL2ljb25zL2FuZ2xlZG93bic7XG5pbXBvcnQgeyBBbmdsZVJpZ2h0SWNvbiB9IGZyb20gJ3ByaW1lbmcvaWNvbnMvYW5nbGVyaWdodCc7XG5pbXBvcnQgeyBDaGV2cm9uRG93bkljb24gfSBmcm9tICdwcmltZW5nL2ljb25zL2NoZXZyb25kb3duJztcbmltcG9ydCB7IENoZXZyb25SaWdodEljb24gfSBmcm9tICdwcmltZW5nL2ljb25zL2NoZXZyb25yaWdodCc7XG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b29sdGlwJztcblxuZXhwb3J0IGNsYXNzIEJhc2VQYW5lbE1lbnVJdGVtIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgICBoYW5kbGVDbGljayhldmVudCwgaXRlbSkge1xuICAgICAgICBpZiAoaXRlbS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGl0ZW0uZXhwYW5kZWQgPSAhaXRlbS5leHBhbmRlZDtcbiAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgIGlmICghaXRlbS51cmwgJiYgIWl0ZW0ucm91dGVyTGluaykge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpdGVtLmNvbW1hbmQpIHtcbiAgICAgICAgICAgIGl0ZW0uY29tbWFuZCh7XG4gICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgICAgICAgaXRlbTogaXRlbVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1wYW5lbE1lbnVTdWInLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDx1bCBbbmdDbGFzc109XCJ7ICdwLXN1Ym1lbnUtbGlzdCc6IHRydWUsICdwLXBhbmVsbWVudS1yb290LXN1Ym1lbnUnOiByb290LCAncC1zdWJtZW51LWV4cGFuZGVkJzogZXhwYW5kZWQgfVwiIFtAc3VibWVudV09XCJnZXRBbmltYXRpb24oKVwiIHJvbGU9XCJ0cmVlXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LWNoaWxkIFtuZ0Zvck9mXT1cIml0ZW0uaXRlbXNcIj5cbiAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJjaGlsZC5zZXBhcmF0b3JcIiBjbGFzcz1cInAtbWVudS1zZXBhcmF0b3JcIiByb2xlPVwic2VwYXJhdG9yXCI+PC9saT5cbiAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCIhY2hpbGQuc2VwYXJhdG9yXCIgY2xhc3M9XCJwLW1lbnVpdGVtXCIgW25nQ2xhc3NdPVwiY2hpbGQuc3R5bGVDbGFzc1wiIFtjbGFzcy5wLWhpZGRlbl09XCJjaGlsZC52aXNpYmxlID09PSBmYWxzZVwiIFtuZ1N0eWxlXT1cImNoaWxkLnN0eWxlXCIgcFRvb2x0aXAgW3Rvb2x0aXBPcHRpb25zXT1cImNoaWxkLnRvb2x0aXBPcHRpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFjaGlsZC5yb3V0ZXJMaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uSXRlbUtleURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5ocmVmXT1cImNoaWxkLnVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtbWVudWl0ZW0tbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCIhaXRlbS5leHBhbmRlZCB8fCAhcGFyZW50RXhwYW5kZWQgPyBudWxsIDogY2hpbGQuZGlzYWJsZWQgPyBudWxsIDogJzAnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cImNoaWxkLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3AtZGlzYWJsZWQnOiBjaGlsZC5kaXNhYmxlZCB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJ0cmVlaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImNoaWxkLmV4cGFuZGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVDbGljaygkZXZlbnQsIGNoaWxkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGFyZ2V0XT1cImNoaWxkLnRhcmdldFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJjaGlsZC50aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjaGlsZC5pdGVtc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhcGFuZWxNZW51LnN1Ym1lbnVJY29uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFuZ2xlRG93bkljb24gW3N0eWxlQ2xhc3NdPVwiJ3AtcGFuZWxtZW51LWljb24nXCIgKm5nSWY9XCJjaGlsZC5leHBhbmRlZFwiIFtuZ1N0eWxlXT1cImNoaWxkLmljb25TdHlsZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBbmdsZVJpZ2h0SWNvbiBbc3R5bGVDbGFzc109XCIncC1wYW5lbG1lbnUtaWNvbidcIiAqbmdJZj1cIiFjaGlsZC5leHBhbmRlZFwiIFtuZ1N0eWxlXT1cImNoaWxkLmljb25TdHlsZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwicGFuZWxNZW51LnN1Ym1lbnVJY29uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0taWNvblwiIFtuZ0NsYXNzXT1cImNoaWxkLmljb25cIiAqbmdJZj1cImNoaWxkLmljb25cIiBbbmdTdHlsZV09XCJjaGlsZC5pY29uU3R5bGVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0tdGV4dFwiICpuZ0lmPVwiY2hpbGQuZXNjYXBlICE9PSBmYWxzZTsgZWxzZSBodG1sTGFiZWxcIj57eyBjaGlsZC5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaHRtbExhYmVsPjxzcGFuIGNsYXNzPVwicC1tZW51aXRlbS10ZXh0XCIgW2lubmVySFRNTF09XCJjaGlsZC5sYWJlbFwiPjwvc3Bhbj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLWJhZGdlXCIgKm5nSWY9XCJjaGlsZC5iYWRnZVwiIFtuZ0NsYXNzXT1cImNoaWxkLmJhZGdlU3R5bGVDbGFzc1wiPnt7IGNoaWxkLmJhZGdlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNoaWxkLnJvdXRlckxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25JdGVtS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cImNoaWxkLnJvdXRlckxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3F1ZXJ5UGFyYW1zXT1cImNoaWxkLnF1ZXJ5UGFyYW1zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlXT1cIidwLW1lbnVpdGVtLWxpbmstYWN0aXZlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNdPVwiY2hpbGQucm91dGVyTGlua0FjdGl2ZU9wdGlvbnMgfHwgeyBleGFjdDogZmFsc2UgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtbWVudWl0ZW0tbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdwLWRpc2FibGVkJzogY2hpbGQuZGlzYWJsZWQgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCIhaXRlbS5leHBhbmRlZCB8fCAhcGFyZW50RXhwYW5kZWQgPyBudWxsIDogY2hpbGQuZGlzYWJsZWQgPyBudWxsIDogJzAnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cImNoaWxkLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJ0cmVlaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImNoaWxkLmV4cGFuZGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVDbGljaygkZXZlbnQsIGNoaWxkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGFyZ2V0XT1cImNoaWxkLnRhcmdldFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJjaGlsZC50aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZnJhZ21lbnRdPVwiY2hpbGQuZnJhZ21lbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3F1ZXJ5UGFyYW1zSGFuZGxpbmddPVwiY2hpbGQucXVlcnlQYXJhbXNIYW5kbGluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcHJlc2VydmVGcmFnbWVudF09XCJjaGlsZC5wcmVzZXJ2ZUZyYWdtZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtza2lwTG9jYXRpb25DaGFuZ2VdPVwiY2hpbGQuc2tpcExvY2F0aW9uQ2hhbmdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyZXBsYWNlVXJsXT1cImNoaWxkLnJlcGxhY2VVcmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0YXRlXT1cImNoaWxkLnN0YXRlXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNoaWxkLml0ZW1zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFwYW5lbE1lbnUuc3VibWVudUljb25UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QW5nbGVEb3duSWNvbiAqbmdJZj1cImNoaWxkLmV4cGFuZGVkXCIgW3N0eWxlQ2xhc3NdPVwiJ3AtcGFuZWxtZW51LWljb24nXCIgW25nU3R5bGVdPVwiY2hpbGQuaWNvblN0eWxlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFuZ2xlUmlnaHRJY29uICpuZ0lmPVwiIWNoaWxkLmV4cGFuZGVkXCIgW3N0eWxlQ2xhc3NdPVwiJ3AtcGFuZWxtZW51LWljb24nXCIgW25nU3R5bGVdPVwiY2hpbGQuaWNvblN0eWxlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwYW5lbE1lbnUuc3VibWVudUljb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1tZW51aXRlbS1pY29uXCIgW25nQ2xhc3NdPVwiY2hpbGQuaWNvblwiICpuZ0lmPVwiY2hpbGQuaWNvblwiIFtuZ1N0eWxlXT1cImNoaWxkLmljb25TdHlsZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1tZW51aXRlbS10ZXh0XCIgKm5nSWY9XCJjaGlsZC5lc2NhcGUgIT09IGZhbHNlOyBlbHNlIGh0bWxSb3V0ZUxhYmVsXCI+e3sgY2hpbGQubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2h0bWxSb3V0ZUxhYmVsPjxzcGFuIGNsYXNzPVwicC1tZW51aXRlbS10ZXh0XCIgW2lubmVySFRNTF09XCJjaGlsZC5sYWJlbFwiPjwvc3Bhbj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLWJhZGdlXCIgKm5nSWY9XCJjaGlsZC5iYWRnZVwiIFtuZ0NsYXNzXT1cImNoaWxkLmJhZGdlU3R5bGVDbGFzc1wiPnt7IGNoaWxkLmJhZGdlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDxwLXBhbmVsTWVudVN1YiBbaXRlbV09XCJjaGlsZFwiIFtwYXJlbnRFeHBhbmRlZF09XCJleHBhbmRlZCAmJiBwYXJlbnRFeHBhbmRlZFwiIFtleHBhbmRlZF09XCJjaGlsZC5leHBhbmRlZFwiIFt0cmFuc2l0aW9uT3B0aW9uc109XCJ0cmFuc2l0aW9uT3B0aW9uc1wiICpuZ0lmPVwiY2hpbGQuaXRlbXNcIj48L3AtcGFuZWxNZW51U3ViPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3VsPlxuICAgIGAsXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKCdzdWJtZW51JywgW1xuICAgICAgICAgICAgc3RhdGUoXG4gICAgICAgICAgICAgICAgJ2hpZGRlbicsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcwJ1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhdGUoXG4gICAgICAgICAgICAgICAgJ3Zpc2libGUnLFxuICAgICAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnKidcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ3Zpc2libGUgPD0+IGhpZGRlbicsIFthbmltYXRlKCd7e3RyYW5zaXRpb25QYXJhbXN9fScpXSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCd2b2lkID0+IConLCBhbmltYXRlKDApKVxuICAgICAgICBdKVxuICAgIF0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgUGFuZWxNZW51U3ViIGV4dGVuZHMgQmFzZVBhbmVsTWVudUl0ZW0ge1xuICAgIEBJbnB1dCgpIGl0ZW06IE1lbnVJdGVtO1xuXG4gICAgQElucHV0KCkgZXhwYW5kZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBwYXJlbnRFeHBhbmRlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHRyYW5zaXRpb25PcHRpb25zOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSByb290OiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IocmVmOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHVibGljIHBhbmVsTWVudTogUGFuZWxNZW51KSB7XG4gICAgICAgIHN1cGVyKHJlZik7XG4gICAgfVxuXG4gICAgb25JdGVtS2V5RG93bihldmVudCkge1xuICAgICAgICBsZXQgbGlzdEl0ZW0gPSBldmVudC5jdXJyZW50VGFyZ2V0O1xuXG4gICAgICAgIHN3aXRjaCAoZXZlbnQuY29kZSkge1xuICAgICAgICAgICAgY2FzZSAnU3BhY2UnOlxuICAgICAgICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICAgICAgICAgIGlmIChsaXN0SXRlbSAmJiAhRG9tSGFuZGxlci5oYXNDbGFzcyhsaXN0SXRlbSwgJ3AtZGlzYWJsZWQnKSkge1xuICAgICAgICAgICAgICAgICAgICBsaXN0SXRlbS5jbGljaygpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRBbmltYXRpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmV4cGFuZGVkID8geyB2YWx1ZTogJ3Zpc2libGUnLCBwYXJhbXM6IHsgdHJhbnNpdGlvblBhcmFtczogdGhpcy50cmFuc2l0aW9uT3B0aW9ucywgaGVpZ2h0OiAnKicgfSB9IDogeyB2YWx1ZTogJ2hpZGRlbicsIHBhcmFtczogeyB0cmFuc2l0aW9uUGFyYW1zOiB0aGlzLnRyYW5zaXRpb25PcHRpb25zLCBoZWlnaHQ6ICcwJyB9IH07XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtcGFuZWxNZW51JyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IFtjbGFzc109XCJzdHlsZUNsYXNzXCIgW25nU3R5bGVdPVwic3R5bGVcIiBbbmdDbGFzc109XCIncC1wYW5lbG1lbnUgcC1jb21wb25lbnQnXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIG1vZGVsOyBsZXQgZiA9IGZpcnN0OyBsZXQgbCA9IGxhc3RcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1wYW5lbG1lbnUtcGFuZWxcIiAqbmdJZj1cInZpc2libGUoaXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7ICdwLWNvbXBvbmVudCBwLXBhbmVsbWVudS1oZWFkZXInOiB0cnVlLCAncC1oaWdobGlnaHQnOiBpdGVtLmV4cGFuZGVkLCAncC1kaXNhYmxlZCc6IGl0ZW0uZGlzYWJsZWQgfVwiIFtjbGFzc109XCJpdGVtLnN0eWxlQ2xhc3NcIiBbbmdTdHlsZV09XCJpdGVtLnN0eWxlXCIgcFRvb2x0aXAgW3Rvb2x0aXBPcHRpb25zXT1cIml0ZW0udG9vbHRpcE9wdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhaXRlbS5yb3V0ZXJMaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5ocmVmXT1cIml0ZW0udXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlQ2xpY2soJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25JdGVtS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJpdGVtLmRpc2FibGVkID8gbnVsbCA6ICcwJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiaXRlbS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RhcmdldF09XCJpdGVtLnRhcmdldFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiaXRlbS50aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLXBhbmVsbWVudS1oZWFkZXItbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJpdGVtLmV4cGFuZGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJpdGVtLmlkICsgJ19oZWFkZXInXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cIml0ZW0uaWQgKyAnX2NvbnRlbnQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS5pdGVtc1wiIGNsYXNzPVwicC1wYW5lbG1lbnUtaWNvbiBwaVwiIFtuZ0NsYXNzXT1cInsgJ3BpLWNoZXZyb24tcmlnaHQnOiAhaXRlbS5leHBhbmRlZCwgJ3BpLWNoZXZyb24tZG93bic6IGl0ZW0uZXhwYW5kZWQgfVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0uaXRlbXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzdWJtZW51SWNvblRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hldnJvbkRvd25JY29uIFtzdHlsZUNsYXNzXT1cIidwLXBhbmVsbWVudS1pY29uJ1wiICpuZ0lmPVwiaXRlbS5leHBhbmRlZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0SWNvbiBbc3R5bGVDbGFzc109XCIncC1wYW5lbG1lbnUtaWNvbidcIiAqbmdJZj1cIiFpdGVtLmV4cGFuZGVkXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cInN1Ym1lbnVJY29uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1tZW51aXRlbS1pY29uXCIgW25nQ2xhc3NdPVwiaXRlbS5pY29uXCIgKm5nSWY9XCJpdGVtLmljb25cIiBbbmdTdHlsZV09XCJpdGVtLmljb25TdHlsZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0tdGV4dFwiICpuZ0lmPVwiaXRlbS5lc2NhcGUgIT09IGZhbHNlOyBlbHNlIGh0bWxMYWJlbFwiPnt7IGl0ZW0ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNodG1sTGFiZWw+PHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLXRleHRcIiBbaW5uZXJIVE1MXT1cIml0ZW0ubGFiZWxcIj48L3NwYW4+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0tYmFkZ2VcIiAqbmdJZj1cIml0ZW0uYmFkZ2VcIiBbbmdDbGFzc109XCJpdGVtLmJhZGdlU3R5bGVDbGFzc1wiPnt7IGl0ZW0uYmFkZ2UgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5yb3V0ZXJMaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJpdGVtLnJvdXRlckxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtxdWVyeVBhcmFtc109XCJpdGVtLnF1ZXJ5UGFyYW1zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua0FjdGl2ZV09XCIncC1tZW51aXRlbS1saW5rLWFjdGl2ZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJpdGVtLnJvdXRlckxpbmtBY3RpdmVPcHRpb25zIHx8IHsgZXhhY3Q6IGZhbHNlIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVDbGljaygkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbkl0ZW1LZXlEb3duKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0YXJnZXRdPVwiaXRlbS50YXJnZXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cIml0ZW0udGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1wYW5lbG1lbnUtaGVhZGVyLWxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cIml0ZW0uaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cIml0ZW0uZGlzYWJsZWQgPyBudWxsIDogJzAnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZnJhZ21lbnRdPVwiaXRlbS5mcmFnbWVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3F1ZXJ5UGFyYW1zSGFuZGxpbmddPVwiaXRlbS5xdWVyeVBhcmFtc0hhbmRsaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJlc2VydmVGcmFnbWVudF09XCJpdGVtLnByZXNlcnZlRnJhZ21lbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtza2lwTG9jYXRpb25DaGFuZ2VdPVwiaXRlbS5za2lwTG9jYXRpb25DaGFuZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXBsYWNlVXJsXT1cIml0ZW0ucmVwbGFjZVVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0YXRlXT1cIml0ZW0uc3RhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS5pdGVtc1wiIGNsYXNzPVwicC1wYW5lbG1lbnUtaWNvbiBwaVwiIFtuZ0NsYXNzXT1cInsgJ3BpLWNoZXZyb24tcmlnaHQnOiAhaXRlbS5leHBhbmRlZCwgJ3BpLWNoZXZyb24tZG93bic6IGl0ZW0uZXhwYW5kZWQgfVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5pdGVtc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXN1Ym1lbnVJY29uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDaGV2cm9uRG93bkljb24gW3N0eWxlQ2xhc3NdPVwiJ3AtcGFuZWxtZW51LWljb24nXCIgKm5nSWY9XCJpdGVtLmV4cGFuZGVkXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDaGV2cm9uUmlnaHRJY29uIFtzdHlsZUNsYXNzXT1cIidwLXBhbmVsbWVudS1pY29uJ1wiICpuZ0lmPVwiIWl0ZW0uZXhwYW5kZWRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwic3VibWVudUljb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLWljb25cIiBbbmdDbGFzc109XCJpdGVtLmljb25cIiAqbmdJZj1cIml0ZW0uaWNvblwiIFtuZ1N0eWxlXT1cIml0ZW0uaWNvblN0eWxlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1tZW51aXRlbS10ZXh0XCIgKm5nSWY9XCJpdGVtLmVzY2FwZSAhPT0gZmFsc2U7IGVsc2UgaHRtbFJvdXRlTGFiZWxcIj57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaHRtbFJvdXRlTGFiZWw+PHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLXRleHRcIiBbaW5uZXJIVE1MXT1cIml0ZW0ubGFiZWxcIj48L3NwYW4+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0tYmFkZ2VcIiAqbmdJZj1cIml0ZW0uYmFkZ2VcIiBbbmdDbGFzc109XCJpdGVtLmJhZGdlU3R5bGVDbGFzc1wiPnt7IGl0ZW0uYmFkZ2UgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5pdGVtc1wiIGNsYXNzPVwicC10b2dnbGVhYmxlLWNvbnRlbnRcIiBbbmdDbGFzc109XCJ7ICdwLXBhbmVsbWVudS1leHBhbmRlZCc6IGl0ZW0uZXhwYW5kZWQgfVwiIFtAcm9vdEl0ZW1dPVwiZ2V0QW5pbWF0aW9uKGl0ZW0pXCIgKEByb290SXRlbS5kb25lKT1cIm9uVG9nZ2xlRG9uZSgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1wYW5lbG1lbnUtY29udGVudFwiIHJvbGU9XCJyZWdpb25cIiBbYXR0ci5pZF09XCJpdGVtLmlkICsgJ19jb250ZW50J1wiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJpdGVtLmlkICsgJ19oZWFkZXInXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtcGFuZWxNZW51U3ViIFtpdGVtXT1cIml0ZW1cIiBbcGFyZW50RXhwYW5kZWRdPVwiaXRlbS5leHBhbmRlZFwiIFtleHBhbmRlZF09XCJ0cnVlXCIgW3RyYW5zaXRpb25PcHRpb25zXT1cInRyYW5zaXRpb25PcHRpb25zXCIgW3Jvb3RdPVwidHJ1ZVwiPjwvcC1wYW5lbE1lbnVTdWI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ3Jvb3RJdGVtJywgW1xuICAgICAgICAgICAgc3RhdGUoXG4gICAgICAgICAgICAgICAgJ2hpZGRlbicsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcwJ1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhdGUoXG4gICAgICAgICAgICAgICAgJ3Zpc2libGUnLFxuICAgICAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnKidcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ3Zpc2libGUgPD0+IGhpZGRlbicsIFthbmltYXRlKCd7e3RyYW5zaXRpb25QYXJhbXN9fScpXSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCd2b2lkID0+IConLCBhbmltYXRlKDApKVxuICAgICAgICBdKVxuICAgIF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFsnLi9wYW5lbG1lbnUuY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFBhbmVsTWVudSBleHRlbmRzIEJhc2VQYW5lbE1lbnVJdGVtIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgQElucHV0KCkgbW9kZWw6IE1lbnVJdGVtW107XG5cbiAgICBASW5wdXQoKSBzdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgbXVsdGlwbGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgdHJhbnNpdGlvbk9wdGlvbnM6IHN0cmluZyA9ICc0MDBtcyBjdWJpYy1iZXppZXIoMC44NiwgMCwgMC4wNywgMSknO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihQcmltZVRlbXBsYXRlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxhbnk+O1xuXG4gICAgc3VibWVudUljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIHB1YmxpYyBhbmltYXRpbmc6IGJvb2xlYW47XG5cbiAgICBjb25zdHJ1Y3RvcihyZWY6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIGxpY2Vuc2VNYW5hZ2VyOiBMaWNlbnNlTWFuYWdlcikge1xuICAgICAgICBzdXBlcihyZWYpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChpdGVtLmdldFR5cGUoKSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3N1Ym1lbnVpY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJtZW51SWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy5saWNlbnNlTWFuYWdlclsnY2hlY2snXSgpO1xuICAgIH1cblxuICAgIGNvbGxhcHNlQWxsKCkge1xuICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHRoaXMubW9kZWwpIHtcbiAgICAgICAgICAgIGlmIChpdGVtLmV4cGFuZGVkKSB7XG4gICAgICAgICAgICAgICAgaXRlbS5leHBhbmRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFuZGxlQ2xpY2soZXZlbnQsIGl0ZW0pIHtcbiAgICAgICAgaWYgKCF0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBtb2RlbEl0ZW0gb2YgdGhpcy5tb2RlbCkge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtICE9PSBtb2RlbEl0ZW0gJiYgbW9kZWxJdGVtLmV4cGFuZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIG1vZGVsSXRlbS5leHBhbmRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYW5pbWF0aW5nID0gdHJ1ZTtcbiAgICAgICAgc3VwZXIuaGFuZGxlQ2xpY2soZXZlbnQsIGl0ZW0pO1xuICAgIH1cblxuICAgIG9uVG9nZ2xlRG9uZSgpIHtcbiAgICAgICAgdGhpcy5hbmltYXRpbmcgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvbkl0ZW1LZXlEb3duKGV2ZW50KSB7XG4gICAgICAgIGxldCBsaXN0SXRlbSA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7XG5cbiAgICAgICAgc3dpdGNoIChldmVudC5jb2RlKSB7XG4gICAgICAgICAgICBjYXNlICdTcGFjZSc6XG4gICAgICAgICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgICAgICAgICAgaWYgKGxpc3RJdGVtICYmICFEb21IYW5kbGVyLmhhc0NsYXNzKGxpc3RJdGVtLCAncC1kaXNhYmxlZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIGxpc3RJdGVtLmNsaWNrKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZpc2libGUoaXRlbSkge1xuICAgICAgICByZXR1cm4gaXRlbS52aXNpYmxlICE9PSBmYWxzZTtcbiAgICB9XG5cbiAgICBnZXRBbmltYXRpb24oaXRlbSkge1xuICAgICAgICByZXR1cm4gaXRlbS5leHBhbmRlZCA/IHsgdmFsdWU6ICd2aXNpYmxlJywgcGFyYW1zOiB7IHRyYW5zaXRpb25QYXJhbXM6IHRoaXMuYW5pbWF0aW5nID8gdGhpcy50cmFuc2l0aW9uT3B0aW9ucyA6ICcwbXMnLCBoZWlnaHQ6ICcqJyB9IH0gOiB7IHZhbHVlOiAnaGlkZGVuJywgcGFyYW1zOiB7IHRyYW5zaXRpb25QYXJhbXM6IHRoaXMudHJhbnNpdGlvbk9wdGlvbnMsIGhlaWdodDogJzAnIH0gfTtcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUm91dGVyTW9kdWxlLCBUb29sdGlwTW9kdWxlLCBTaGFyZWRNb2R1bGUsIEFuZ2xlRG93bkljb24sIEFuZ2xlUmlnaHRJY29uLCBDaGV2cm9uRG93bkljb24sIENoZXZyb25SaWdodEljb25dLFxuICAgIGV4cG9ydHM6IFtQYW5lbE1lbnUsIFJvdXRlck1vZHVsZSwgVG9vbHRpcE1vZHVsZSwgU2hhcmVkTW9kdWxlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtQYW5lbE1lbnUsIFBhbmVsTWVudVN1Yl1cbn0pXG5leHBvcnQgY2xhc3MgUGFuZWxNZW51TW9kdWxlIHt9XG4iXX0=