primeng 16.0.0-rc.1 → 16.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (884) hide show
  1. package/accordion/accordion.d.ts +140 -31
  2. package/accordion/accordion.interface.d.ts +49 -0
  3. package/accordion/public_api.d.ts +1 -0
  4. package/animate/animate.d.ts +15 -3
  5. package/api/blockableui.d.ts +7 -0
  6. package/api/confirmaeventtype.d.ts +3 -0
  7. package/api/confirmation.d.ts +67 -0
  8. package/api/confirmationservice.d.ts +17 -0
  9. package/api/contextmenuservice.d.ts +3 -2
  10. package/api/filtermetadata.d.ts +13 -0
  11. package/api/filterservice.d.ts +1 -20
  12. package/api/lazyloadevent.d.ts +33 -1
  13. package/api/lazyloadmeta.d.ts +19 -0
  14. package/api/megamenuitem.d.ts +90 -0
  15. package/api/menuitem.d.ts +136 -19
  16. package/api/message.d.ts +4 -0
  17. package/api/messageservice.d.ts +19 -0
  18. package/api/overlayoptions.d.ts +138 -0
  19. package/api/public_api.d.ts +4 -0
  20. package/api/scrolleroptions.d.ts +116 -0
  21. package/api/selectitem.d.ts +4 -0
  22. package/api/selectitemgroup.d.ts +4 -0
  23. package/api/shared.d.ts +2 -2
  24. package/api/sortevent.d.ts +4 -0
  25. package/api/sortmeta.d.ts +4 -0
  26. package/api/tablestate.d.ts +41 -1
  27. package/api/tooltipoptions.d.ts +63 -0
  28. package/api/translation.d.ts +4 -0
  29. package/api/treenode.d.ts +65 -7
  30. package/api/treenodedragevent.d.ts +19 -0
  31. package/api/treetablenode.d.ts +36 -0
  32. package/autocomplete/autocomplete.d.ts +373 -96
  33. package/autocomplete/autocomplete.interface.d.ts +134 -0
  34. package/autocomplete/public_api.d.ts +1 -0
  35. package/autofocus/autofocus.d.ts +9 -1
  36. package/avatar/avatar.d.ts +48 -9
  37. package/avatargroup/avatargroup.d.ts +16 -2
  38. package/badge/badge.d.ts +65 -14
  39. package/blockui/blockui.d.ts +33 -9
  40. package/blockui/blockui.interface.d.ts +11 -0
  41. package/blockui/public_api.d.ts +1 -0
  42. package/breadcrumb/breadcrumb.d.ts +44 -12
  43. package/breadcrumb/breadcrumb.interface.d.ts +27 -0
  44. package/breadcrumb/public_api.d.ts +1 -0
  45. package/button/button.d.ts +117 -23
  46. package/button/button.interface.d.ts +19 -0
  47. package/button/public_api.d.ts +1 -0
  48. package/calendar/calendar.d.ts +458 -153
  49. package/calendar/calendar.interface.d.ts +192 -0
  50. package/calendar/public_api.d.ts +1 -0
  51. package/card/card.d.ts +36 -14
  52. package/card/card.interface.d.ts +27 -0
  53. package/card/public_api.d.ts +1 -0
  54. package/carousel/carousel.d.ts +126 -32
  55. package/carousel/carousel.interface.d.ts +63 -0
  56. package/carousel/public_api.d.ts +1 -0
  57. package/cascadeselect/cascadeselect.d.ts +213 -71
  58. package/cascadeselect/cascadeselect.interface.d.ts +92 -0
  59. package/cascadeselect/public_api.d.ts +1 -0
  60. package/chart/chart.d.ts +45 -9
  61. package/checkbox/checkbox.d.ts +108 -22
  62. package/checkbox/checkbox.interface.d.ts +26 -0
  63. package/checkbox/public_api.d.ts +1 -0
  64. package/chip/chip.d.ts +59 -14
  65. package/chip/chip.interface.d.ts +15 -0
  66. package/chip/public_api.d.ts +1 -0
  67. package/chips/chips.d.ts +128 -25
  68. package/chips/chips.interface.d.ts +58 -0
  69. package/chips/public_api.d.ts +1 -0
  70. package/colorpicker/colorpicker.d.ts +138 -44
  71. package/colorpicker/colorpicker.interface.d.ts +15 -0
  72. package/colorpicker/public_api.d.ts +1 -0
  73. package/confirmdialog/confirmdialog.d.ts +176 -43
  74. package/confirmdialog/confirmdialog.interface.d.ts +23 -0
  75. package/confirmdialog/public_api.d.ts +1 -0
  76. package/confirmpopup/confirmpopup.d.ts +60 -17
  77. package/confirmpopup/confirmpopup.interface.d.ts +15 -0
  78. package/confirmpopup/public_api.d.ts +1 -0
  79. package/contextmenu/contextmenu.d.ts +87 -36
  80. package/dataview/dataview.d.ts +198 -52
  81. package/dataview/dataview.interface.d.ts +183 -0
  82. package/dataview/public_api.d.ts +1 -0
  83. package/defer/defer.d.ts +15 -5
  84. package/dialog/dialog.d.ts +245 -56
  85. package/dialog/dialog.interface.d.ts +31 -0
  86. package/dialog/public_api.d.ts +1 -0
  87. package/divider/divider.d.ts +32 -6
  88. package/dock/dock.d.ts +38 -11
  89. package/dock/dock.interface.d.ts +19 -0
  90. package/dock/public_api.d.ts +1 -0
  91. package/dragdrop/dragdrop.d.ts +78 -26
  92. package/dropdown/dropdown.d.ts +435 -136
  93. package/dropdown/dropdown.interface.d.ts +154 -0
  94. package/dropdown/public_api.d.ts +1 -0
  95. package/dynamicdialog/dialogservice.d.ts +11 -0
  96. package/dynamicdialog/dynamicdialog-config.d.ts +91 -2
  97. package/dynamicdialog/dynamicdialog-ref.d.ts +70 -0
  98. package/dynamicdialog/dynamicdialog.d.ts +22 -21
  99. package/editor/editor.d.ts +77 -17
  100. package/editor/editor.interface.d.ts +64 -0
  101. package/editor/public_api.d.ts +1 -0
  102. package/esm2022/accordion/accordion.interface.mjs +2 -0
  103. package/esm2022/accordion/accordion.mjs +142 -42
  104. package/esm2022/accordion/public_api.mjs +2 -1
  105. package/esm2022/animate/animate.mjs +20 -8
  106. package/esm2022/api/blockableui.mjs +1 -1
  107. package/esm2022/api/confirmaeventtype.mjs +4 -1
  108. package/esm2022/api/confirmation.mjs +1 -1
  109. package/esm2022/api/confirmationservice.mjs +21 -4
  110. package/esm2022/api/contextmenuservice.mjs +4 -4
  111. package/esm2022/api/filtermetadata.mjs +1 -1
  112. package/esm2022/api/filterservice.mjs +4 -4
  113. package/esm2022/api/lazyloadevent.mjs +1 -1
  114. package/esm2022/api/lazyloadmeta.mjs +2 -0
  115. package/esm2022/api/megamenuitem.mjs +1 -1
  116. package/esm2022/api/menuitem.mjs +1 -1
  117. package/esm2022/api/message.mjs +1 -1
  118. package/esm2022/api/messageservice.mjs +23 -4
  119. package/esm2022/api/overlayoptions.mjs +1 -1
  120. package/esm2022/api/overlayservice.mjs +4 -4
  121. package/esm2022/api/primengconfig.mjs +4 -4
  122. package/esm2022/api/public_api.mjs +5 -1
  123. package/esm2022/api/scrolleroptions.mjs +2 -0
  124. package/esm2022/api/selectitem.mjs +1 -1
  125. package/esm2022/api/selectitemgroup.mjs +1 -1
  126. package/esm2022/api/shared.mjs +15 -16
  127. package/esm2022/api/sortevent.mjs +1 -1
  128. package/esm2022/api/sortmeta.mjs +1 -1
  129. package/esm2022/api/tablestate.mjs +1 -1
  130. package/esm2022/api/tooltipoptions.mjs +2 -0
  131. package/esm2022/api/translation.mjs +1 -1
  132. package/esm2022/api/treedragdropservice.mjs +3 -3
  133. package/esm2022/api/treenode.mjs +1 -1
  134. package/esm2022/api/treenodedragevent.mjs +1 -1
  135. package/esm2022/api/treetablenode.mjs +2 -0
  136. package/esm2022/autocomplete/autocomplete.interface.mjs +2 -0
  137. package/esm2022/autocomplete/autocomplete.mjs +345 -75
  138. package/esm2022/autocomplete/public_api.mjs +2 -1
  139. package/esm2022/autofocus/autofocus.mjs +16 -8
  140. package/esm2022/avatar/avatar.mjs +46 -9
  141. package/esm2022/avatargroup/avatargroup.mjs +20 -8
  142. package/esm2022/badge/badge.mjs +91 -39
  143. package/esm2022/baseicon/baseicon.mjs +3 -3
  144. package/esm2022/blockui/blockui.interface.mjs +2 -0
  145. package/esm2022/blockui/blockui.mjs +48 -24
  146. package/esm2022/blockui/public_api.mjs +2 -1
  147. package/esm2022/breadcrumb/breadcrumb.interface.mjs +2 -0
  148. package/esm2022/breadcrumb/breadcrumb.mjs +41 -12
  149. package/esm2022/breadcrumb/public_api.mjs +2 -1
  150. package/esm2022/button/button.interface.mjs +2 -0
  151. package/esm2022/button/button.mjs +127 -36
  152. package/esm2022/button/public_api.mjs +2 -1
  153. package/esm2022/calendar/calendar.interface.mjs +2 -0
  154. package/esm2022/calendar/calendar.mjs +476 -156
  155. package/esm2022/calendar/public_api.mjs +2 -1
  156. package/esm2022/card/card.interface.mjs +2 -0
  157. package/esm2022/card/card.mjs +30 -10
  158. package/esm2022/card/public_api.mjs +2 -1
  159. package/esm2022/carousel/carousel.interface.mjs +2 -0
  160. package/esm2022/carousel/carousel.mjs +101 -15
  161. package/esm2022/carousel/public_api.mjs +2 -1
  162. package/esm2022/cascadeselect/cascadeselect.interface.mjs +2 -0
  163. package/esm2022/cascadeselect/cascadeselect.mjs +174 -40
  164. package/esm2022/cascadeselect/public_api.mjs +2 -1
  165. package/esm2022/chart/chart.mjs +56 -20
  166. package/esm2022/checkbox/checkbox.interface.mjs +2 -0
  167. package/esm2022/checkbox/checkbox.mjs +93 -12
  168. package/esm2022/checkbox/public_api.mjs +2 -1
  169. package/esm2022/chip/chip.interface.mjs +2 -0
  170. package/esm2022/chip/chip.mjs +53 -11
  171. package/esm2022/chip/public_api.mjs +2 -1
  172. package/esm2022/chips/chips.interface.mjs +2 -0
  173. package/esm2022/chips/chips.mjs +106 -9
  174. package/esm2022/chips/public_api.mjs +2 -1
  175. package/esm2022/colorpicker/colorpicker.interface.mjs +2 -0
  176. package/esm2022/colorpicker/colorpicker.mjs +82 -17
  177. package/esm2022/colorpicker/public_api.mjs +2 -1
  178. package/esm2022/confirmdialog/confirmdialog.interface.mjs +2 -0
  179. package/esm2022/confirmdialog/confirmdialog.mjs +153 -20
  180. package/esm2022/confirmdialog/public_api.mjs +2 -1
  181. package/esm2022/confirmpopup/confirmpopup.interface.mjs +2 -0
  182. package/esm2022/confirmpopup/confirmpopup.mjs +89 -47
  183. package/esm2022/confirmpopup/public_api.mjs +2 -1
  184. package/esm2022/contextmenu/contextmenu.mjs +96 -42
  185. package/esm2022/dataview/dataview.interface.mjs +2 -0
  186. package/esm2022/dataview/dataview.mjs +168 -28
  187. package/esm2022/dataview/public_api.mjs +2 -1
  188. package/esm2022/defer/defer.mjs +19 -10
  189. package/esm2022/dialog/dialog.interface.mjs +2 -0
  190. package/esm2022/dialog/dialog.mjs +281 -93
  191. package/esm2022/dialog/public_api.mjs +2 -1
  192. package/esm2022/divider/divider.mjs +35 -11
  193. package/esm2022/dock/dock.interface.mjs +2 -0
  194. package/esm2022/dock/dock.mjs +35 -11
  195. package/esm2022/dock/public_api.mjs +2 -1
  196. package/esm2022/dom/domhandler.mjs +2 -2
  197. package/esm2022/dragdrop/dragdrop.mjs +69 -18
  198. package/esm2022/dropdown/dropdown.interface.mjs +2 -0
  199. package/esm2022/dropdown/dropdown.mjs +394 -102
  200. package/esm2022/dropdown/public_api.mjs +2 -1
  201. package/esm2022/dynamicdialog/dialogservice.mjs +15 -4
  202. package/esm2022/dynamicdialog/dynamicdialog-config.mjs +86 -1
  203. package/esm2022/dynamicdialog/dynamicdialog-ref.mjs +71 -1
  204. package/esm2022/dynamicdialog/dynamicdialog.mjs +11 -11
  205. package/esm2022/dynamicdialog/dynamicdialogcontent.mjs +3 -3
  206. package/esm2022/editor/editor.interface.mjs +2 -0
  207. package/esm2022/editor/editor.mjs +91 -35
  208. package/esm2022/editor/public_api.mjs +2 -1
  209. package/esm2022/fieldset/fieldset.interface.mjs +2 -0
  210. package/esm2022/fieldset/fieldset.mjs +65 -21
  211. package/esm2022/fieldset/public_api.mjs +2 -1
  212. package/esm2022/fileupload/fileupload.interface.mjs +2 -0
  213. package/esm2022/fileupload/fileupload.mjs +223 -25
  214. package/esm2022/fileupload/public_api.mjs +2 -1
  215. package/esm2022/focustrap/focustrap.mjs +17 -9
  216. package/esm2022/galleria/galleria.interface.mjs +2 -0
  217. package/esm2022/galleria/galleria.mjs +155 -37
  218. package/esm2022/galleria/public_api.mjs +2 -1
  219. package/esm2022/icons/angledoubledown/angledoubledown.mjs +3 -3
  220. package/esm2022/icons/angledoubleleft/angledoubleleft.mjs +3 -3
  221. package/esm2022/icons/angledoubleright/angledoubleright.mjs +3 -3
  222. package/esm2022/icons/angledoubleup/angledoubleup.mjs +3 -3
  223. package/esm2022/icons/angledown/angledown.mjs +3 -3
  224. package/esm2022/icons/angleleft/angleleft.mjs +3 -3
  225. package/esm2022/icons/angleright/angleright.mjs +3 -3
  226. package/esm2022/icons/angleup/angleup.mjs +3 -3
  227. package/esm2022/icons/arrowdown/arrowdown.mjs +13 -8
  228. package/esm2022/icons/arrowdownleft/arrowdownleft.mjs +3 -3
  229. package/esm2022/icons/arrowdownright/arrowdownright.mjs +3 -3
  230. package/esm2022/icons/arrowleft/arrowleft.mjs +13 -8
  231. package/esm2022/icons/arrowright/arrowright.mjs +3 -3
  232. package/esm2022/icons/arrowup/arrowup.mjs +13 -8
  233. package/esm2022/icons/ban/ban.mjs +13 -8
  234. package/esm2022/icons/bars/bars.mjs +3 -3
  235. package/esm2022/icons/calendar/calendar.mjs +3 -3
  236. package/esm2022/icons/caretleft/caretleft.mjs +3 -3
  237. package/esm2022/icons/caretright/caretright.mjs +3 -3
  238. package/esm2022/icons/check/check.mjs +3 -3
  239. package/esm2022/icons/chevrondown/chevrondown.mjs +3 -3
  240. package/esm2022/icons/chevronleft/chevronleft.mjs +3 -3
  241. package/esm2022/icons/chevronright/chevronright.mjs +3 -3
  242. package/esm2022/icons/chevronup/chevronup.mjs +3 -3
  243. package/esm2022/icons/exclamationtriangle/exclamationtriangle.mjs +13 -8
  244. package/esm2022/icons/eye/eye.mjs +3 -3
  245. package/esm2022/icons/eyeslash/eyeslash.mjs +13 -8
  246. package/esm2022/icons/filter/filter.mjs +13 -8
  247. package/esm2022/icons/filterslash/filterslash.mjs +13 -8
  248. package/esm2022/icons/home/home.mjs +13 -8
  249. package/esm2022/icons/infocircle/infocircle.mjs +13 -8
  250. package/esm2022/icons/minus/minus.mjs +3 -3
  251. package/esm2022/icons/pencil/pencil.mjs +13 -8
  252. package/esm2022/icons/plus/plus.mjs +13 -8
  253. package/esm2022/icons/refresh/refresh.mjs +13 -8
  254. package/esm2022/icons/search/search.mjs +13 -8
  255. package/esm2022/icons/searchminus/searchminus.mjs +13 -8
  256. package/esm2022/icons/searchplus/searchplus.mjs +13 -8
  257. package/esm2022/icons/sortalt/sortalt.mjs +13 -8
  258. package/esm2022/icons/sortamountdown/sortamountdown.mjs +13 -8
  259. package/esm2022/icons/sortamountupalt/sortamountupalt.mjs +13 -8
  260. package/esm2022/icons/spinner/spinner.mjs +13 -8
  261. package/esm2022/icons/star/star.mjs +13 -8
  262. package/esm2022/icons/starfill/starfill.mjs +13 -8
  263. package/esm2022/icons/thlarge/thlarge.mjs +13 -8
  264. package/esm2022/icons/times/times.mjs +3 -3
  265. package/esm2022/icons/timescircle/timescircle.mjs +13 -8
  266. package/esm2022/icons/trash/trash.mjs +13 -8
  267. package/esm2022/icons/undo/undo.mjs +13 -8
  268. package/esm2022/icons/upload/upload.mjs +13 -8
  269. package/esm2022/icons/windowmaximize/windowmaximize.mjs +13 -8
  270. package/esm2022/icons/windowminimize/windowminimize.mjs +13 -8
  271. package/esm2022/image/image.interface.mjs +2 -0
  272. package/esm2022/image/image.mjs +81 -16
  273. package/esm2022/image/public_api.mjs +2 -1
  274. package/esm2022/inplace/inplace.interface.mjs +2 -0
  275. package/esm2022/inplace/inplace.mjs +76 -24
  276. package/esm2022/inplace/public_api.mjs +2 -1
  277. package/esm2022/inputmask/inputmask.interface.mjs +2 -0
  278. package/esm2022/inputmask/inputmask.mjs +169 -41
  279. package/esm2022/inputmask/public_api.mjs +2 -1
  280. package/esm2022/inputnumber/inputnumber.interface.mjs +2 -0
  281. package/esm2022/inputnumber/inputnumber.mjs +243 -43
  282. package/esm2022/inputnumber/public_api.mjs +2 -1
  283. package/esm2022/inputswitch/inputswitch.interface.mjs +2 -0
  284. package/esm2022/inputswitch/inputswitch.mjs +61 -8
  285. package/esm2022/inputswitch/public_api.mjs +2 -1
  286. package/esm2022/inputtext/inputtext.mjs +9 -9
  287. package/esm2022/inputtextarea/inputtextarea.mjs +21 -8
  288. package/esm2022/keyfilter/keyfilter.mjs +34 -17
  289. package/esm2022/knob/knob.mjs +90 -18
  290. package/esm2022/listbox/listbox.interface.mjs +2 -0
  291. package/esm2022/listbox/listbox.mjs +154 -27
  292. package/esm2022/listbox/public_api.mjs +2 -1
  293. package/esm2022/megamenu/megamenu.interface.mjs +2 -0
  294. package/esm2022/megamenu/megamenu.mjs +33 -13
  295. package/esm2022/megamenu/public_api.mjs +2 -1
  296. package/esm2022/menu/menu.mjs +80 -22
  297. package/esm2022/menubar/menubar.interface.mjs +2 -0
  298. package/esm2022/menubar/menubar.mjs +71 -34
  299. package/esm2022/menubar/public_api.mjs +2 -1
  300. package/esm2022/message/message.mjs +34 -10
  301. package/esm2022/messages/messages.interface.mjs +2 -0
  302. package/esm2022/messages/messages.mjs +68 -19
  303. package/esm2022/messages/public_api.mjs +2 -1
  304. package/esm2022/multiselect/multiselect.interface.mjs +2 -0
  305. package/esm2022/multiselect/multiselect.mjs +351 -63
  306. package/esm2022/multiselect/public_api.mjs +2 -1
  307. package/esm2022/orderlist/orderlist.interface.mjs +2 -0
  308. package/esm2022/orderlist/orderlist.mjs +142 -38
  309. package/esm2022/orderlist/public_api.mjs +2 -1
  310. package/esm2022/organizationchart/organizationchart.interface.mjs +2 -0
  311. package/esm2022/organizationchart/organizationchart.mjs +71 -14
  312. package/esm2022/organizationchart/public_api.mjs +2 -1
  313. package/esm2022/overlay/overlay.mjs +123 -9
  314. package/esm2022/overlaypanel/overlaypanel.mjs +86 -14
  315. package/esm2022/paginator/paginator.interface.mjs +2 -0
  316. package/esm2022/paginator/paginator.mjs +117 -22
  317. package/esm2022/paginator/public_api.mjs +2 -1
  318. package/esm2022/panel/panel.interface.mjs +2 -0
  319. package/esm2022/panel/panel.mjs +86 -20
  320. package/esm2022/panel/public_api.mjs +2 -1
  321. package/esm2022/panelmenu/panelmenu.interface.mjs +2 -0
  322. package/esm2022/panelmenu/panelmenu.mjs +43 -19
  323. package/esm2022/panelmenu/public_api.mjs +2 -1
  324. package/esm2022/password/password.mjs +156 -24
  325. package/esm2022/picklist/picklist.interface.mjs +2 -0
  326. package/esm2022/picklist/picklist.mjs +218 -16
  327. package/esm2022/picklist/public_api.mjs +2 -1
  328. package/esm2022/progressbar/progressbar.mjs +43 -11
  329. package/esm2022/progressspinner/progressspinner.mjs +36 -12
  330. package/esm2022/radiobutton/public_api.mjs +2 -1
  331. package/esm2022/radiobutton/radiobutton.interface.mjs +2 -0
  332. package/esm2022/radiobutton/radiobutton.mjs +82 -11
  333. package/esm2022/rating/public_api.mjs +2 -1
  334. package/esm2022/rating/rating.interface.mjs +2 -0
  335. package/esm2022/rating/rating.mjs +70 -22
  336. package/esm2022/ripple/ripple.mjs +16 -12
  337. package/esm2022/scroller/public_api.mjs +2 -1
  338. package/esm2022/scroller/scroller.interface.mjs +2 -0
  339. package/esm2022/scroller/scroller.mjs +141 -20
  340. package/esm2022/scrollpanel/public_api.mjs +2 -1
  341. package/esm2022/scrollpanel/scrollpanel.interface.mjs +2 -0
  342. package/esm2022/scrollpanel/scrollpanel.mjs +34 -13
  343. package/esm2022/scrolltop/public_api.mjs +2 -1
  344. package/esm2022/scrolltop/scrolltop.interface.mjs +2 -0
  345. package/esm2022/scrolltop/scrolltop.mjs +48 -12
  346. package/esm2022/selectbutton/public_api.mjs +2 -1
  347. package/esm2022/selectbutton/selectbutton.interface.mjs +2 -0
  348. package/esm2022/selectbutton/selectbutton.mjs +68 -10
  349. package/esm2022/sidebar/public_api.mjs +2 -1
  350. package/esm2022/sidebar/sidebar.interface.mjs +2 -0
  351. package/esm2022/sidebar/sidebar.mjs +127 -50
  352. package/esm2022/skeleton/skeleton.mjs +47 -11
  353. package/esm2022/slidemenu/public_api.mjs +2 -1
  354. package/esm2022/slidemenu/slidemenu.interface.mjs +2 -0
  355. package/esm2022/slidemenu/slidemenu.mjs +113 -31
  356. package/esm2022/slider/public_api.mjs +2 -1
  357. package/esm2022/slider/slider.interface.mjs +2 -0
  358. package/esm2022/slider/slider.mjs +74 -15
  359. package/esm2022/speeddial/public_api.mjs +2 -1
  360. package/esm2022/speeddial/speeddial.interface.mjs +2 -0
  361. package/esm2022/speeddial/speeddial.mjs +124 -18
  362. package/esm2022/spinner/spinner.mjs +7 -7
  363. package/esm2022/splitbutton/public_api.mjs +2 -1
  364. package/esm2022/splitbutton/splitbutton.interface.mjs +2 -0
  365. package/esm2022/splitbutton/splitbutton.mjs +92 -18
  366. package/esm2022/splitter/public_api.mjs +2 -1
  367. package/esm2022/splitter/splitter.interface.mjs +2 -0
  368. package/esm2022/splitter/splitter.mjs +78 -24
  369. package/esm2022/steps/steps.mjs +38 -9
  370. package/esm2022/styleclass/styleclass.mjs +54 -10
  371. package/esm2022/table/public_api.mjs +2 -1
  372. package/esm2022/table/table.interface.mjs +2 -0
  373. package/esm2022/table/table.mjs +690 -220
  374. package/esm2022/tabmenu/public_api.mjs +2 -1
  375. package/esm2022/tabmenu/tabmenu.interface.mjs +2 -0
  376. package/esm2022/tabmenu/tabmenu.mjs +52 -20
  377. package/esm2022/tabview/public_api.mjs +2 -1
  378. package/esm2022/tabview/tabview.interface.mjs +2 -0
  379. package/esm2022/tabview/tabview.mjs +199 -101
  380. package/esm2022/tag/public_api.mjs +2 -1
  381. package/esm2022/tag/tag.interface.mjs +2 -0
  382. package/esm2022/tag/tag.mjs +43 -15
  383. package/esm2022/terminal/terminal.mjs +28 -8
  384. package/esm2022/terminal/terminalservice.mjs +3 -3
  385. package/esm2022/tieredmenu/public_api.mjs +2 -1
  386. package/esm2022/tieredmenu/tieredmenu.interface.mjs +2 -0
  387. package/esm2022/tieredmenu/tieredmenu.mjs +94 -23
  388. package/esm2022/timeline/public_api.mjs +2 -1
  389. package/esm2022/timeline/timeline.interface.mjs +2 -0
  390. package/esm2022/timeline/timeline.mjs +32 -8
  391. package/esm2022/toast/public_api.mjs +2 -1
  392. package/esm2022/toast/toast.interface.mjs +2 -0
  393. package/esm2022/toast/toast.mjs +96 -36
  394. package/esm2022/togglebutton/public_api.mjs +2 -1
  395. package/esm2022/togglebutton/togglebutton.interface.mjs +2 -0
  396. package/esm2022/togglebutton/togglebutton.mjs +65 -12
  397. package/esm2022/toolbar/public_api.mjs +2 -1
  398. package/esm2022/toolbar/toolbar.interface.mjs +2 -0
  399. package/esm2022/toolbar/toolbar.mjs +20 -8
  400. package/esm2022/tooltip/tooltip.mjs +99 -15
  401. package/esm2022/tree/public_api.mjs +2 -1
  402. package/esm2022/tree/tree.interface.mjs +2 -0
  403. package/esm2022/tree/tree.mjs +262 -43
  404. package/esm2022/treeselect/public_api.mjs +2 -1
  405. package/esm2022/treeselect/treeselect.interface.mjs +2 -0
  406. package/esm2022/treeselect/treeselect.mjs +221 -53
  407. package/esm2022/treetable/public_api.mjs +2 -1
  408. package/esm2022/treetable/treetable.interface.mjs +2 -0
  409. package/esm2022/treetable/treetable.mjs +506 -155
  410. package/esm2022/tristatecheckbox/public_api.mjs +2 -1
  411. package/esm2022/tristatecheckbox/tristatecheckbox.interface.mjs +2 -0
  412. package/esm2022/tristatecheckbox/tristatecheckbox.mjs +61 -8
  413. package/esm2022/ts-helpers/primeng-ts-helpers.mjs +5 -0
  414. package/esm2022/ts-helpers/public_api.mjs +2 -0
  415. package/esm2022/ts-helpers/ts-helpers.mjs +2 -0
  416. package/esm2022/virtualscroller/public_api.mjs +2 -1
  417. package/esm2022/virtualscroller/virtualscroller.interface.mjs +2 -0
  418. package/esm2022/virtualscroller/virtualscroller.mjs +52 -11
  419. package/fesm2022/primeng-accordion.mjs +140 -40
  420. package/fesm2022/primeng-accordion.mjs.map +1 -1
  421. package/fesm2022/primeng-animate.mjs +19 -7
  422. package/fesm2022/primeng-animate.mjs.map +1 -1
  423. package/fesm2022/primeng-api.mjs +73 -34
  424. package/fesm2022/primeng-api.mjs.map +1 -1
  425. package/fesm2022/primeng-autocomplete.mjs +345 -75
  426. package/fesm2022/primeng-autocomplete.mjs.map +1 -1
  427. package/fesm2022/primeng-autofocus.mjs +15 -7
  428. package/fesm2022/primeng-autofocus.mjs.map +1 -1
  429. package/fesm2022/primeng-avatar.mjs +46 -9
  430. package/fesm2022/primeng-avatar.mjs.map +1 -1
  431. package/fesm2022/primeng-avatargroup.mjs +19 -7
  432. package/fesm2022/primeng-avatargroup.mjs.map +1 -1
  433. package/fesm2022/primeng-badge.mjs +90 -38
  434. package/fesm2022/primeng-badge.mjs.map +1 -1
  435. package/fesm2022/primeng-baseicon.mjs +3 -3
  436. package/fesm2022/primeng-blockui.mjs +48 -24
  437. package/fesm2022/primeng-blockui.mjs.map +1 -1
  438. package/fesm2022/primeng-breadcrumb.mjs +42 -13
  439. package/fesm2022/primeng-breadcrumb.mjs.map +1 -1
  440. package/fesm2022/primeng-button.mjs +126 -35
  441. package/fesm2022/primeng-button.mjs.map +1 -1
  442. package/fesm2022/primeng-calendar.mjs +475 -155
  443. package/fesm2022/primeng-calendar.mjs.map +1 -1
  444. package/fesm2022/primeng-card.mjs +29 -9
  445. package/fesm2022/primeng-card.mjs.map +1 -1
  446. package/fesm2022/primeng-carousel.mjs +100 -14
  447. package/fesm2022/primeng-carousel.mjs.map +1 -1
  448. package/fesm2022/primeng-cascadeselect.mjs +173 -39
  449. package/fesm2022/primeng-cascadeselect.mjs.map +1 -1
  450. package/fesm2022/primeng-chart.mjs +55 -19
  451. package/fesm2022/primeng-chart.mjs.map +1 -1
  452. package/fesm2022/primeng-checkbox.mjs +93 -12
  453. package/fesm2022/primeng-checkbox.mjs.map +1 -1
  454. package/fesm2022/primeng-chip.mjs +53 -11
  455. package/fesm2022/primeng-chip.mjs.map +1 -1
  456. package/fesm2022/primeng-chips.mjs +105 -8
  457. package/fesm2022/primeng-chips.mjs.map +1 -1
  458. package/fesm2022/primeng-colorpicker.mjs +81 -16
  459. package/fesm2022/primeng-colorpicker.mjs.map +1 -1
  460. package/fesm2022/primeng-confirmdialog.mjs +151 -18
  461. package/fesm2022/primeng-confirmdialog.mjs.map +1 -1
  462. package/fesm2022/primeng-confirmpopup.mjs +89 -47
  463. package/fesm2022/primeng-confirmpopup.mjs.map +1 -1
  464. package/fesm2022/primeng-contextmenu.mjs +94 -40
  465. package/fesm2022/primeng-contextmenu.mjs.map +1 -1
  466. package/fesm2022/primeng-dataview.mjs +167 -27
  467. package/fesm2022/primeng-dataview.mjs.map +1 -1
  468. package/fesm2022/primeng-defer.mjs +18 -9
  469. package/fesm2022/primeng-defer.mjs.map +1 -1
  470. package/fesm2022/primeng-dialog.mjs +281 -93
  471. package/fesm2022/primeng-dialog.mjs.map +1 -1
  472. package/fesm2022/primeng-divider.mjs +34 -10
  473. package/fesm2022/primeng-divider.mjs.map +1 -1
  474. package/fesm2022/primeng-dock.mjs +35 -11
  475. package/fesm2022/primeng-dock.mjs.map +1 -1
  476. package/fesm2022/primeng-dom.mjs +1 -1
  477. package/fesm2022/primeng-dom.mjs.map +1 -1
  478. package/fesm2022/primeng-dragdrop.mjs +68 -17
  479. package/fesm2022/primeng-dragdrop.mjs.map +1 -1
  480. package/fesm2022/primeng-dropdown.mjs +394 -102
  481. package/fesm2022/primeng-dropdown.mjs.map +1 -1
  482. package/fesm2022/primeng-dynamicdialog.mjs +180 -14
  483. package/fesm2022/primeng-dynamicdialog.mjs.map +1 -1
  484. package/fesm2022/primeng-editor.mjs +90 -35
  485. package/fesm2022/primeng-editor.mjs.map +1 -1
  486. package/fesm2022/primeng-fieldset.mjs +64 -20
  487. package/fesm2022/primeng-fieldset.mjs.map +1 -1
  488. package/fesm2022/primeng-fileupload.mjs +222 -24
  489. package/fesm2022/primeng-fileupload.mjs.map +1 -1
  490. package/fesm2022/primeng-focustrap.mjs +16 -8
  491. package/fesm2022/primeng-focustrap.mjs.map +1 -1
  492. package/fesm2022/primeng-galleria.mjs +155 -37
  493. package/fesm2022/primeng-galleria.mjs.map +1 -1
  494. package/fesm2022/primeng-icons-angledoubledown.mjs +3 -3
  495. package/fesm2022/primeng-icons-angledoubleleft.mjs +3 -3
  496. package/fesm2022/primeng-icons-angledoubleright.mjs +3 -3
  497. package/fesm2022/primeng-icons-angledoubleup.mjs +3 -3
  498. package/fesm2022/primeng-icons-angledown.mjs +3 -3
  499. package/fesm2022/primeng-icons-angleleft.mjs +3 -3
  500. package/fesm2022/primeng-icons-angleright.mjs +3 -3
  501. package/fesm2022/primeng-icons-angleup.mjs +3 -3
  502. package/fesm2022/primeng-icons-arrowdown.mjs +12 -7
  503. package/fesm2022/primeng-icons-arrowdown.mjs.map +1 -1
  504. package/fesm2022/primeng-icons-arrowdownleft.mjs +3 -3
  505. package/fesm2022/primeng-icons-arrowdownright.mjs +3 -3
  506. package/fesm2022/primeng-icons-arrowleft.mjs +12 -7
  507. package/fesm2022/primeng-icons-arrowleft.mjs.map +1 -1
  508. package/fesm2022/primeng-icons-arrowright.mjs +3 -3
  509. package/fesm2022/primeng-icons-arrowup.mjs +12 -7
  510. package/fesm2022/primeng-icons-arrowup.mjs.map +1 -1
  511. package/fesm2022/primeng-icons-ban.mjs +12 -7
  512. package/fesm2022/primeng-icons-ban.mjs.map +1 -1
  513. package/fesm2022/primeng-icons-bars.mjs +3 -3
  514. package/fesm2022/primeng-icons-calendar.mjs +3 -3
  515. package/fesm2022/primeng-icons-caretleft.mjs +3 -3
  516. package/fesm2022/primeng-icons-caretright.mjs +3 -3
  517. package/fesm2022/primeng-icons-check.mjs +3 -3
  518. package/fesm2022/primeng-icons-chevrondown.mjs +3 -3
  519. package/fesm2022/primeng-icons-chevronleft.mjs +3 -3
  520. package/fesm2022/primeng-icons-chevronright.mjs +3 -3
  521. package/fesm2022/primeng-icons-chevronup.mjs +3 -3
  522. package/fesm2022/primeng-icons-exclamationtriangle.mjs +12 -7
  523. package/fesm2022/primeng-icons-exclamationtriangle.mjs.map +1 -1
  524. package/fesm2022/primeng-icons-eye.mjs +3 -3
  525. package/fesm2022/primeng-icons-eyeslash.mjs +12 -7
  526. package/fesm2022/primeng-icons-eyeslash.mjs.map +1 -1
  527. package/fesm2022/primeng-icons-filter.mjs +12 -7
  528. package/fesm2022/primeng-icons-filter.mjs.map +1 -1
  529. package/fesm2022/primeng-icons-filterslash.mjs +12 -7
  530. package/fesm2022/primeng-icons-filterslash.mjs.map +1 -1
  531. package/fesm2022/primeng-icons-home.mjs +12 -7
  532. package/fesm2022/primeng-icons-home.mjs.map +1 -1
  533. package/fesm2022/primeng-icons-infocircle.mjs +12 -7
  534. package/fesm2022/primeng-icons-infocircle.mjs.map +1 -1
  535. package/fesm2022/primeng-icons-minus.mjs +3 -3
  536. package/fesm2022/primeng-icons-pencil.mjs +12 -7
  537. package/fesm2022/primeng-icons-pencil.mjs.map +1 -1
  538. package/fesm2022/primeng-icons-plus.mjs +12 -7
  539. package/fesm2022/primeng-icons-plus.mjs.map +1 -1
  540. package/fesm2022/primeng-icons-refresh.mjs +12 -7
  541. package/fesm2022/primeng-icons-refresh.mjs.map +1 -1
  542. package/fesm2022/primeng-icons-search.mjs +12 -7
  543. package/fesm2022/primeng-icons-search.mjs.map +1 -1
  544. package/fesm2022/primeng-icons-searchminus.mjs +12 -7
  545. package/fesm2022/primeng-icons-searchminus.mjs.map +1 -1
  546. package/fesm2022/primeng-icons-searchplus.mjs +12 -7
  547. package/fesm2022/primeng-icons-searchplus.mjs.map +1 -1
  548. package/fesm2022/primeng-icons-sortalt.mjs +12 -7
  549. package/fesm2022/primeng-icons-sortalt.mjs.map +1 -1
  550. package/fesm2022/primeng-icons-sortamountdown.mjs +12 -7
  551. package/fesm2022/primeng-icons-sortamountdown.mjs.map +1 -1
  552. package/fesm2022/primeng-icons-sortamountupalt.mjs +12 -7
  553. package/fesm2022/primeng-icons-sortamountupalt.mjs.map +1 -1
  554. package/fesm2022/primeng-icons-spinner.mjs +12 -7
  555. package/fesm2022/primeng-icons-spinner.mjs.map +1 -1
  556. package/fesm2022/primeng-icons-star.mjs +12 -7
  557. package/fesm2022/primeng-icons-star.mjs.map +1 -1
  558. package/fesm2022/primeng-icons-starfill.mjs +12 -7
  559. package/fesm2022/primeng-icons-starfill.mjs.map +1 -1
  560. package/fesm2022/primeng-icons-thlarge.mjs +12 -7
  561. package/fesm2022/primeng-icons-thlarge.mjs.map +1 -1
  562. package/fesm2022/primeng-icons-times.mjs +3 -3
  563. package/fesm2022/primeng-icons-timescircle.mjs +12 -7
  564. package/fesm2022/primeng-icons-timescircle.mjs.map +1 -1
  565. package/fesm2022/primeng-icons-trash.mjs +12 -7
  566. package/fesm2022/primeng-icons-trash.mjs.map +1 -1
  567. package/fesm2022/primeng-icons-undo.mjs +12 -7
  568. package/fesm2022/primeng-icons-undo.mjs.map +1 -1
  569. package/fesm2022/primeng-icons-upload.mjs +12 -7
  570. package/fesm2022/primeng-icons-upload.mjs.map +1 -1
  571. package/fesm2022/primeng-icons-windowmaximize.mjs +12 -7
  572. package/fesm2022/primeng-icons-windowmaximize.mjs.map +1 -1
  573. package/fesm2022/primeng-icons-windowminimize.mjs +12 -7
  574. package/fesm2022/primeng-icons-windowminimize.mjs.map +1 -1
  575. package/fesm2022/primeng-image.mjs +80 -15
  576. package/fesm2022/primeng-image.mjs.map +1 -1
  577. package/fesm2022/primeng-inplace.mjs +76 -24
  578. package/fesm2022/primeng-inplace.mjs.map +1 -1
  579. package/fesm2022/primeng-inputmask.mjs +169 -41
  580. package/fesm2022/primeng-inputmask.mjs.map +1 -1
  581. package/fesm2022/primeng-inputnumber.mjs +243 -43
  582. package/fesm2022/primeng-inputnumber.mjs.map +1 -1
  583. package/fesm2022/primeng-inputswitch.mjs +60 -7
  584. package/fesm2022/primeng-inputswitch.mjs.map +1 -1
  585. package/fesm2022/primeng-inputtext.mjs +8 -8
  586. package/fesm2022/primeng-inputtext.mjs.map +1 -1
  587. package/fesm2022/primeng-inputtextarea.mjs +20 -7
  588. package/fesm2022/primeng-inputtextarea.mjs.map +1 -1
  589. package/fesm2022/primeng-keyfilter.mjs +33 -16
  590. package/fesm2022/primeng-keyfilter.mjs.map +1 -1
  591. package/fesm2022/primeng-knob.mjs +89 -17
  592. package/fesm2022/primeng-knob.mjs.map +1 -1
  593. package/fesm2022/primeng-listbox.mjs +153 -26
  594. package/fesm2022/primeng-listbox.mjs.map +1 -1
  595. package/fesm2022/primeng-megamenu.mjs +33 -13
  596. package/fesm2022/primeng-megamenu.mjs.map +1 -1
  597. package/fesm2022/primeng-menu.mjs +79 -21
  598. package/fesm2022/primeng-menu.mjs.map +1 -1
  599. package/fesm2022/primeng-menubar.mjs +72 -35
  600. package/fesm2022/primeng-menubar.mjs.map +1 -1
  601. package/fesm2022/primeng-message.mjs +34 -10
  602. package/fesm2022/primeng-message.mjs.map +1 -1
  603. package/fesm2022/primeng-messages.mjs +69 -20
  604. package/fesm2022/primeng-messages.mjs.map +1 -1
  605. package/fesm2022/primeng-multiselect.mjs +350 -62
  606. package/fesm2022/primeng-multiselect.mjs.map +1 -1
  607. package/fesm2022/primeng-orderlist.mjs +141 -37
  608. package/fesm2022/primeng-orderlist.mjs.map +1 -1
  609. package/fesm2022/primeng-organizationchart.mjs +70 -13
  610. package/fesm2022/primeng-organizationchart.mjs.map +1 -1
  611. package/fesm2022/primeng-overlay.mjs +122 -8
  612. package/fesm2022/primeng-overlay.mjs.map +1 -1
  613. package/fesm2022/primeng-overlaypanel.mjs +85 -13
  614. package/fesm2022/primeng-overlaypanel.mjs.map +1 -1
  615. package/fesm2022/primeng-paginator.mjs +116 -21
  616. package/fesm2022/primeng-paginator.mjs.map +1 -1
  617. package/fesm2022/primeng-panel.mjs +85 -19
  618. package/fesm2022/primeng-panel.mjs.map +1 -1
  619. package/fesm2022/primeng-panelmenu.mjs +43 -19
  620. package/fesm2022/primeng-panelmenu.mjs.map +1 -1
  621. package/fesm2022/primeng-password.mjs +156 -24
  622. package/fesm2022/primeng-password.mjs.map +1 -1
  623. package/fesm2022/primeng-picklist.mjs +217 -15
  624. package/fesm2022/primeng-picklist.mjs.map +1 -1
  625. package/fesm2022/primeng-progressbar.mjs +42 -10
  626. package/fesm2022/primeng-progressbar.mjs.map +1 -1
  627. package/fesm2022/primeng-progressspinner.mjs +36 -12
  628. package/fesm2022/primeng-progressspinner.mjs.map +1 -1
  629. package/fesm2022/primeng-radiobutton.mjs +81 -10
  630. package/fesm2022/primeng-radiobutton.mjs.map +1 -1
  631. package/fesm2022/primeng-rating.mjs +70 -22
  632. package/fesm2022/primeng-rating.mjs.map +1 -1
  633. package/fesm2022/primeng-ripple.mjs +15 -11
  634. package/fesm2022/primeng-ripple.mjs.map +1 -1
  635. package/fesm2022/primeng-scroller.mjs +141 -20
  636. package/fesm2022/primeng-scroller.mjs.map +1 -1
  637. package/fesm2022/primeng-scrollpanel.mjs +34 -13
  638. package/fesm2022/primeng-scrollpanel.mjs.map +1 -1
  639. package/fesm2022/primeng-scrolltop.mjs +48 -12
  640. package/fesm2022/primeng-scrolltop.mjs.map +1 -1
  641. package/fesm2022/primeng-selectbutton.mjs +67 -9
  642. package/fesm2022/primeng-selectbutton.mjs.map +1 -1
  643. package/fesm2022/primeng-sidebar.mjs +126 -49
  644. package/fesm2022/primeng-sidebar.mjs.map +1 -1
  645. package/fesm2022/primeng-skeleton.mjs +47 -11
  646. package/fesm2022/primeng-skeleton.mjs.map +1 -1
  647. package/fesm2022/primeng-slidemenu.mjs +113 -31
  648. package/fesm2022/primeng-slidemenu.mjs.map +1 -1
  649. package/fesm2022/primeng-slider.mjs +73 -14
  650. package/fesm2022/primeng-slider.mjs.map +1 -1
  651. package/fesm2022/primeng-speeddial.mjs +124 -18
  652. package/fesm2022/primeng-speeddial.mjs.map +1 -1
  653. package/fesm2022/primeng-spinner.mjs +7 -7
  654. package/fesm2022/primeng-splitbutton.mjs +92 -18
  655. package/fesm2022/primeng-splitbutton.mjs.map +1 -1
  656. package/fesm2022/primeng-splitter.mjs +77 -23
  657. package/fesm2022/primeng-splitter.mjs.map +1 -1
  658. package/fesm2022/primeng-steps.mjs +38 -9
  659. package/fesm2022/primeng-steps.mjs.map +1 -1
  660. package/fesm2022/primeng-styleclass.mjs +53 -9
  661. package/fesm2022/primeng-styleclass.mjs.map +1 -1
  662. package/fesm2022/primeng-table.mjs +689 -219
  663. package/fesm2022/primeng-table.mjs.map +1 -1
  664. package/fesm2022/primeng-tabmenu.mjs +51 -19
  665. package/fesm2022/primeng-tabmenu.mjs.map +1 -1
  666. package/fesm2022/primeng-tabview.mjs +200 -102
  667. package/fesm2022/primeng-tabview.mjs.map +1 -1
  668. package/fesm2022/primeng-tag.mjs +42 -13
  669. package/fesm2022/primeng-tag.mjs.map +1 -1
  670. package/fesm2022/primeng-terminal.mjs +30 -10
  671. package/fesm2022/primeng-terminal.mjs.map +1 -1
  672. package/fesm2022/primeng-tieredmenu.mjs +95 -24
  673. package/fesm2022/primeng-tieredmenu.mjs.map +1 -1
  674. package/fesm2022/primeng-timeline.mjs +31 -7
  675. package/fesm2022/primeng-timeline.mjs.map +1 -1
  676. package/fesm2022/primeng-toast.mjs +97 -36
  677. package/fesm2022/primeng-toast.mjs.map +1 -1
  678. package/fesm2022/primeng-togglebutton.mjs +64 -11
  679. package/fesm2022/primeng-togglebutton.mjs.map +1 -1
  680. package/fesm2022/primeng-toolbar.mjs +19 -7
  681. package/fesm2022/primeng-toolbar.mjs.map +1 -1
  682. package/fesm2022/primeng-tooltip.mjs +98 -14
  683. package/fesm2022/primeng-tooltip.mjs.map +1 -1
  684. package/fesm2022/primeng-tree.mjs +261 -42
  685. package/fesm2022/primeng-tree.mjs.map +1 -1
  686. package/fesm2022/primeng-treeselect.mjs +221 -53
  687. package/fesm2022/primeng-treeselect.mjs.map +1 -1
  688. package/fesm2022/primeng-treetable.mjs +505 -154
  689. package/fesm2022/primeng-treetable.mjs.map +1 -1
  690. package/fesm2022/primeng-tristatecheckbox.mjs +60 -7
  691. package/fesm2022/primeng-tristatecheckbox.mjs.map +1 -1
  692. package/fesm2022/primeng-ts-helpers.mjs +4 -0
  693. package/fesm2022/primeng-ts-helpers.mjs.map +1 -0
  694. package/fesm2022/primeng-virtualscroller.mjs +52 -11
  695. package/fesm2022/primeng-virtualscroller.mjs.map +1 -1
  696. package/fieldset/fieldset.d.ts +66 -17
  697. package/fieldset/fieldset.interface.d.ts +46 -0
  698. package/fieldset/public_api.d.ts +1 -0
  699. package/fileupload/fileupload.d.ts +260 -58
  700. package/fileupload/fileupload.interface.d.ts +156 -0
  701. package/fileupload/public_api.d.ts +1 -0
  702. package/focustrap/focustrap.d.ts +9 -1
  703. package/galleria/galleria.d.ts +189 -63
  704. package/galleria/galleria.interface.d.ts +97 -0
  705. package/galleria/public_api.d.ts +1 -0
  706. package/icons/arrowdown/arrowdown.d.ts +4 -1
  707. package/icons/arrowleft/arrowleft.d.ts +2 -0
  708. package/icons/arrowup/arrowup.d.ts +2 -0
  709. package/icons/ban/ban.d.ts +2 -0
  710. package/icons/exclamationtriangle/exclamationtriangle.d.ts +4 -1
  711. package/icons/eyeslash/eyeslash.d.ts +2 -0
  712. package/icons/filter/filter.d.ts +2 -0
  713. package/icons/filterslash/filterslash.d.ts +2 -0
  714. package/icons/home/home.d.ts +2 -0
  715. package/icons/infocircle/infocircle.d.ts +2 -0
  716. package/icons/pencil/pencil.d.ts +2 -0
  717. package/icons/plus/plus.d.ts +2 -0
  718. package/icons/refresh/refresh.d.ts +2 -0
  719. package/icons/search/search.d.ts +2 -0
  720. package/icons/searchminus/searchminus.d.ts +2 -0
  721. package/icons/searchplus/searchplus.d.ts +2 -0
  722. package/icons/sortalt/sortalt.d.ts +2 -0
  723. package/icons/sortamountdown/sortamountdown.d.ts +2 -0
  724. package/icons/sortamountupalt/sortamountupalt.d.ts +2 -0
  725. package/icons/spinner/spinner.d.ts +2 -0
  726. package/icons/star/star.d.ts +2 -0
  727. package/icons/starfill/starfill.d.ts +2 -0
  728. package/icons/thlarge/thlarge.d.ts +2 -0
  729. package/icons/timescircle/timescircle.d.ts +2 -0
  730. package/icons/trash/trash.d.ts +2 -0
  731. package/icons/undo/undo.d.ts +2 -0
  732. package/icons/upload/upload.d.ts +2 -0
  733. package/icons/windowmaximize/windowmaximize.d.ts +2 -0
  734. package/icons/windowminimize/windowminimize.d.ts +2 -0
  735. package/image/image.d.ts +93 -23
  736. package/image/image.interface.d.ts +31 -0
  737. package/image/public_api.d.ts +1 -0
  738. package/inplace/inplace.d.ts +71 -16
  739. package/inplace/inplace.interface.d.ts +19 -0
  740. package/inplace/public_api.d.ts +1 -0
  741. package/inputmask/inputmask.d.ts +190 -58
  742. package/inputmask/inputmask.interface.d.ts +19 -0
  743. package/inputmask/public_api.d.ts +1 -0
  744. package/inputnumber/inputnumber.d.ts +277 -84
  745. package/inputnumber/inputnumber.interface.d.ts +38 -0
  746. package/inputnumber/public_api.d.ts +1 -0
  747. package/inputswitch/inputswitch.d.ts +65 -13
  748. package/inputswitch/inputswitch.interface.d.ts +15 -0
  749. package/inputswitch/public_api.d.ts +1 -0
  750. package/inputtext/inputtext.d.ts +3 -2
  751. package/inputtextarea/inputtextarea.d.ts +22 -9
  752. package/keyfilter/keyfilter.d.ts +24 -7
  753. package/knob/knob.d.ts +94 -23
  754. package/listbox/listbox.d.ts +191 -62
  755. package/listbox/listbox.interface.d.ts +126 -0
  756. package/listbox/public_api.d.ts +1 -0
  757. package/megamenu/megamenu.d.ts +36 -13
  758. package/megamenu/megamenu.interface.d.ts +19 -0
  759. package/megamenu/public_api.d.ts +1 -0
  760. package/menu/menu.d.ts +82 -18
  761. package/menubar/menubar.d.ts +68 -29
  762. package/menubar/menubar.interface.d.ts +23 -0
  763. package/menubar/public_api.d.ts +1 -0
  764. package/message/message.d.ts +30 -4
  765. package/messages/messages.d.ts +63 -12
  766. package/messages/messages.interface.d.ts +11 -0
  767. package/messages/public_api.d.ts +1 -0
  768. package/multiselect/multiselect.d.ts +424 -128
  769. package/multiselect/multiselect.interface.d.ts +204 -0
  770. package/multiselect/public_api.d.ts +1 -0
  771. package/orderlist/orderlist.d.ts +156 -50
  772. package/orderlist/orderlist.interface.d.ts +110 -0
  773. package/orderlist/public_api.d.ts +1 -0
  774. package/organizationchart/organizationchart.d.ts +77 -19
  775. package/organizationchart/organizationchart.interface.d.ts +59 -0
  776. package/organizationchart/public_api.d.ts +1 -0
  777. package/overlay/overlay.d.ts +145 -19
  778. package/overlaypanel/overlaypanel.d.ts +95 -20
  779. package/package.json +183 -177
  780. package/paginator/paginator.d.ts +130 -30
  781. package/paginator/paginator.interface.d.ts +33 -0
  782. package/paginator/public_api.d.ts +1 -0
  783. package/panel/panel.d.ts +96 -27
  784. package/panel/panel.interface.d.ts +58 -0
  785. package/panel/public_api.d.ts +1 -0
  786. package/panelmenu/panelmenu.d.ts +45 -19
  787. package/panelmenu/panelmenu.interface.d.ts +11 -0
  788. package/panelmenu/public_api.d.ts +1 -0
  789. package/password/password.d.ts +202 -56
  790. package/picklist/picklist.d.ts +294 -92
  791. package/picklist/picklist.interface.d.ts +242 -0
  792. package/picklist/public_api.d.ts +1 -0
  793. package/progressbar/progressbar.d.ts +39 -5
  794. package/progressspinner/progressspinner.d.ts +29 -3
  795. package/radiobutton/public_api.d.ts +1 -0
  796. package/radiobutton/radiobutton.d.ts +97 -22
  797. package/radiobutton/radiobutton.interface.d.ts +15 -0
  798. package/rating/public_api.d.ts +1 -0
  799. package/rating/rating.d.ts +83 -22
  800. package/rating/rating.interface.d.ts +34 -0
  801. package/resources/components/button/button.css +1 -0
  802. package/resources/primeng.css +1 -0
  803. package/resources/primeng.min.css +1 -1
  804. package/ripple/ripple.d.ts +7 -2
  805. package/scroller/public_api.d.ts +1 -0
  806. package/scroller/scroller.d.ts +194 -92
  807. package/scroller/scroller.interface.d.ts +177 -0
  808. package/scrollpanel/public_api.d.ts +1 -0
  809. package/scrollpanel/scrollpanel.d.ts +45 -21
  810. package/scrollpanel/scrollpanel.interface.d.ts +11 -0
  811. package/scrolltop/public_api.d.ts +1 -0
  812. package/scrolltop/scrolltop.d.ts +50 -12
  813. package/scrolltop/scrolltop.interface.d.ts +18 -0
  814. package/selectbutton/public_api.d.ts +1 -0
  815. package/selectbutton/selectbutton.d.ts +73 -14
  816. package/selectbutton/selectbutton.interface.d.ts +45 -0
  817. package/sidebar/public_api.d.ts +1 -0
  818. package/sidebar/sidebar.d.ts +104 -24
  819. package/sidebar/sidebar.interface.d.ts +23 -0
  820. package/skeleton/skeleton.d.ts +47 -5
  821. package/slidemenu/public_api.d.ts +1 -0
  822. package/slidemenu/slidemenu.d.ts +118 -33
  823. package/slidemenu/slidemenu.interface.d.ts +15 -0
  824. package/slider/public_api.d.ts +1 -0
  825. package/slider/slider.d.ts +99 -37
  826. package/slider/slider.interface.d.ts +38 -0
  827. package/speeddial/public_api.d.ts +1 -0
  828. package/speeddial/speeddial.d.ts +145 -33
  829. package/speeddial/speeddial.interface.d.ts +11 -0
  830. package/splitbutton/public_api.d.ts +1 -0
  831. package/splitbutton/splitbutton.d.ts +102 -24
  832. package/splitbutton/splitbutton.interface.d.ts +15 -0
  833. package/splitter/public_api.d.ts +1 -0
  834. package/splitter/splitter.d.ts +91 -30
  835. package/splitter/splitter.interface.d.ts +34 -0
  836. package/steps/steps.d.ts +38 -7
  837. package/styleclass/styleclass.d.ts +62 -17
  838. package/table/public_api.d.ts +1 -0
  839. package/table/table.d.ts +804 -319
  840. package/table/table.interface.d.ts +606 -0
  841. package/tabmenu/public_api.d.ts +1 -0
  842. package/tabmenu/tabmenu.d.ts +53 -18
  843. package/tabmenu/tabmenu.interface.d.ts +32 -0
  844. package/tabview/public_api.d.ts +1 -0
  845. package/tabview/tabview.d.ts +159 -54
  846. package/tabview/tabview.interface.d.ts +49 -0
  847. package/tag/public_api.d.ts +1 -0
  848. package/tag/tag.d.ts +42 -10
  849. package/tag/tag.interface.d.ts +11 -0
  850. package/terminal/terminal.d.ts +26 -4
  851. package/tieredmenu/public_api.d.ts +1 -0
  852. package/tieredmenu/tieredmenu.d.ts +103 -34
  853. package/tieredmenu/tieredmenu.interface.d.ts +11 -0
  854. package/timeline/public_api.d.ts +1 -0
  855. package/timeline/timeline.d.ts +35 -8
  856. package/timeline/timeline.interface.d.ts +43 -0
  857. package/toast/public_api.d.ts +1 -0
  858. package/toast/toast.d.ts +93 -28
  859. package/toast/toast.interface.d.ts +40 -0
  860. package/togglebutton/public_api.d.ts +1 -0
  861. package/togglebutton/togglebutton.d.ts +65 -11
  862. package/togglebutton/togglebutton.interface.d.ts +15 -0
  863. package/toolbar/public_api.d.ts +1 -0
  864. package/toolbar/toolbar.d.ts +21 -7
  865. package/toolbar/toolbar.interface.d.ts +19 -0
  866. package/tooltip/tooltip.d.ts +123 -46
  867. package/tree/public_api.d.ts +1 -0
  868. package/tree/tree.d.ts +320 -100
  869. package/tree/tree.interface.d.ts +193 -0
  870. package/treeselect/public_api.d.ts +1 -0
  871. package/treeselect/treeselect.d.ts +262 -74
  872. package/treeselect/treeselect.interface.d.ts +108 -0
  873. package/treetable/public_api.d.ts +1 -0
  874. package/treetable/treetable.d.ts +591 -230
  875. package/treetable/treetable.interface.d.ts +465 -0
  876. package/tristatecheckbox/public_api.d.ts +1 -0
  877. package/tristatecheckbox/tristatecheckbox.d.ts +75 -17
  878. package/tristatecheckbox/tristatecheckbox.interface.d.ts +30 -0
  879. package/ts-helpers/index.d.ts +5 -0
  880. package/ts-helpers/public_api.d.ts +1 -0
  881. package/ts-helpers/ts-helpers.d.ts +4 -0
  882. package/virtualscroller/public_api.d.ts +1 -0
  883. package/virtualscroller/virtualscroller.d.ts +64 -18
  884. package/virtualscroller/virtualscroller.interface.d.ts +72 -0
@@ -9,6 +9,10 @@ export const SLIDER_VALUE_ACCESSOR = {
9
9
  useExisting: forwardRef(() => Slider),
10
10
  multi: true
11
11
  };
12
+ /**
13
+ * Slider is a component to provide input with a drag handle.
14
+ * @group Components
15
+ */
12
16
  class Slider {
13
17
  document;
14
18
  platformId;
@@ -16,18 +20,72 @@ class Slider {
16
20
  renderer;
17
21
  ngZone;
18
22
  cd;
23
+ /**
24
+ * When enabled, displays an animation on click of the slider bar.
25
+ * @group Props
26
+ */
19
27
  animate;
28
+ /**
29
+ * When present, it specifies that the element should be disabled.
30
+ * @group Props
31
+ */
20
32
  disabled;
33
+ /**
34
+ * Mininum boundary value.
35
+ * @group Props
36
+ */
21
37
  min = 0;
38
+ /**
39
+ * Maximum boundary value.
40
+ * @group Props
41
+ */
22
42
  max = 100;
43
+ /**
44
+ * Orientation of the slider.
45
+ * @group Props
46
+ */
23
47
  orientation = 'horizontal';
48
+ /**
49
+ * Step factor to increment/decrement the value.
50
+ * @group Props
51
+ */
24
52
  step;
53
+ /**
54
+ * When specified, allows two boundary values to be picked.
55
+ * @group Props
56
+ */
25
57
  range;
58
+ /**
59
+ * Inline style of the component.
60
+ * @group Props
61
+ */
26
62
  style;
63
+ /**
64
+ * Style class of the component.
65
+ * @group Props
66
+ */
27
67
  styleClass;
68
+ /**
69
+ * Establishes relationships between the component and label(s) where its value should be one or more element IDs.
70
+ * @group Props
71
+ */
28
72
  ariaLabelledBy;
73
+ /**
74
+ * Index of the element in tabbing order.
75
+ * @group Props
76
+ */
29
77
  tabindex = 0;
78
+ /**
79
+ * Callback to invoke on value change.
80
+ * @param {SliderChangeEvent} event - Custom value change event.
81
+ * @group Emits
82
+ */
30
83
  onChange = new EventEmitter();
84
+ /**
85
+ * Callback to invoke when slide ended.
86
+ * @param {SliderSlideEndEvent} event - Custom slide end event.
87
+ * @group Emits
88
+ */
31
89
  onSlideEnd = new EventEmitter();
32
90
  sliderHandle;
33
91
  sliderHandleStart;
@@ -107,7 +165,7 @@ class Slider {
107
165
  }
108
166
  event.preventDefault();
109
167
  }
110
- onTouchMove(event, index) {
168
+ onTouchMove(event) {
111
169
  if (this.disabled) {
112
170
  return;
113
171
  }
@@ -121,7 +179,7 @@ class Slider {
121
179
  this.setValueFromHandle(event, handleValue);
122
180
  event.preventDefault();
123
181
  }
124
- onTouchEnd(event, index) {
182
+ onTouchEnd(event) {
125
183
  if (this.disabled) {
126
184
  return;
127
185
  }
@@ -241,11 +299,12 @@ class Slider {
241
299
  handleStepChange(newValue, oldValue) {
242
300
  let diff = newValue - oldValue;
243
301
  let val = oldValue;
302
+ let _step = this.step;
244
303
  if (diff < 0) {
245
- val = oldValue + Math.ceil(newValue / this.step - oldValue / this.step) * this.step;
304
+ val = oldValue + Math.ceil(newValue / _step - oldValue / _step) * _step;
246
305
  }
247
306
  else if (diff > 0) {
248
- val = oldValue + Math.floor(newValue / this.step - oldValue / this.step) * this.step;
307
+ val = oldValue + Math.floor(newValue / _step - oldValue / _step) * _step;
249
308
  }
250
309
  this.updateValue(val);
251
310
  this.updateHandleValue();
@@ -340,7 +399,7 @@ class Slider {
340
399
  this.handleValues[0] = 100;
341
400
  }
342
401
  }
343
- this.sliderHandleStart.nativeElement.focus();
402
+ this.sliderHandleStart?.nativeElement.focus();
344
403
  }
345
404
  else {
346
405
  if (value > this.max) {
@@ -355,7 +414,7 @@ class Slider {
355
414
  else if (value < this.values[0]) {
356
415
  this.offset = this.handleValues[1];
357
416
  }
358
- this.sliderHandleEnd.nativeElement.focus();
417
+ this.sliderHandleEnd?.nativeElement.focus();
359
418
  }
360
419
  if (this.step) {
361
420
  this.updateHandleValue();
@@ -380,7 +439,7 @@ class Slider {
380
439
  this.value = this.getNormalizedValue(val);
381
440
  this.onModelChange(this.value);
382
441
  this.onChange.emit({ event: event, value: this.value });
383
- this.sliderHandle.nativeElement.focus();
442
+ this.sliderHandle?.nativeElement.focus();
384
443
  }
385
444
  }
386
445
  getValueFromHandle(handleValue) {
@@ -409,8 +468,8 @@ class Slider {
409
468
  get maxVal() {
410
469
  return Math.max(this.values[1], this.values[0]);
411
470
  }
412
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: Slider, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
413
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: Slider, selector: "p-slider", inputs: { animate: "animate", disabled: "disabled", min: "min", max: "max", orientation: "orientation", step: "step", range: "range", style: "style", styleClass: "styleClass", ariaLabelledBy: "ariaLabelledBy", tabindex: "tabindex" }, outputs: { onChange: "onChange", onSlideEnd: "onSlideEnd" }, host: { classAttribute: "p-element" }, providers: [SLIDER_VALUE_ACCESSOR], viewQueries: [{ propertyName: "sliderHandle", first: true, predicate: ["sliderHandle"], descendants: true }, { propertyName: "sliderHandleStart", first: true, predicate: ["sliderHandleStart"], descendants: true }, { propertyName: "sliderHandleEnd", first: true, predicate: ["sliderHandleEnd"], descendants: true }], ngImport: i0, template: `
471
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: Slider, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
472
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: Slider, selector: "p-slider", inputs: { animate: "animate", disabled: "disabled", min: "min", max: "max", orientation: "orientation", step: "step", range: "range", style: "style", styleClass: "styleClass", ariaLabelledBy: "ariaLabelledBy", tabindex: "tabindex" }, outputs: { onChange: "onChange", onSlideEnd: "onSlideEnd" }, host: { classAttribute: "p-element" }, providers: [SLIDER_VALUE_ACCESSOR], viewQueries: [{ propertyName: "sliderHandle", first: true, predicate: ["sliderHandle"], descendants: true }, { propertyName: "sliderHandleStart", first: true, predicate: ["sliderHandleStart"], descendants: true }, { propertyName: "sliderHandleEnd", first: true, predicate: ["sliderHandleEnd"], descendants: true }], ngImport: i0, template: `
414
473
  <div
415
474
  [ngStyle]="style"
416
475
  [class]="styleClass"
@@ -486,7 +545,7 @@ class Slider {
486
545
  `, isInline: true, styles: [".p-slider{position:relative}.p-slider .p-slider-handle{position:absolute;cursor:grab;touch-action:none;display:block}.p-slider-range{position:absolute;display:block}.p-slider-horizontal .p-slider-range{top:0;left:0;height:100%}.p-slider-horizontal .p-slider-handle{top:50%}.p-slider-vertical{height:100px}.p-slider-vertical .p-slider-handle{left:50%}.p-slider-vertical .p-slider-range{bottom:0;left:0;width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
487
546
  }
488
547
  export { Slider };
489
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: Slider, decorators: [{
548
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: Slider, decorators: [{
490
549
  type: Component,
491
550
  args: [{ selector: 'p-slider', template: `
492
551
  <div
@@ -607,12 +666,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
607
666
  args: ['sliderHandleEnd']
608
667
  }] } });
609
668
  class SliderModule {
610
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: SliderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
611
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: SliderModule, declarations: [Slider], imports: [CommonModule], exports: [Slider] });
612
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: SliderModule, imports: [CommonModule] });
669
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: SliderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
670
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.2", ngImport: i0, type: SliderModule, declarations: [Slider], imports: [CommonModule], exports: [Slider] });
671
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: SliderModule, imports: [CommonModule] });
613
672
  }
614
673
  export { SliderModule };
615
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: SliderModule, decorators: [{
674
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: SliderModule, decorators: [{
616
675
  type: NgModule,
617
676
  args: [{
618
677
  imports: [CommonModule],
@@ -620,4 +679,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
620
679
  declarations: [Slider]
621
680
  }]
622
681
  }] });
623
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3NsaWRlci9zbGlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBYyxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFxQixNQUFNLEVBQUUsV0FBVyxFQUFhLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0TyxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7O0FBRXpDLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFRO0lBQ3RDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7SUFDckMsS0FBSyxFQUFFLElBQUk7Q0FDZCxDQUFDO0FBRUYsTUFvRmEsTUFBTTtJQTJFdUI7SUFBaUQ7SUFBd0I7SUFBdUI7SUFBNkI7SUFBdUI7SUExRWpMLE9BQU8sQ0FBVTtJQUVqQixRQUFRLENBQVU7SUFFbEIsR0FBRyxHQUFXLENBQUMsQ0FBQztJQUVoQixHQUFHLEdBQVcsR0FBRyxDQUFDO0lBRWxCLFdBQVcsR0FBVyxZQUFZLENBQUM7SUFFbkMsSUFBSSxDQUFTO0lBRWIsS0FBSyxDQUFVO0lBRWYsS0FBSyxDQUFNO0lBRVgsVUFBVSxDQUFTO0lBRW5CLGNBQWMsQ0FBUztJQUV2QixRQUFRLEdBQVcsQ0FBQyxDQUFDO0lBRXBCLFFBQVEsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUVqRCxVQUFVLEdBQXNCLElBQUksWUFBWSxF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aUI7c0JBQWhELFNBQVM7dUJBQUMsbUJBQW1CO2dCQUVBLGVBQWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCOztBQSthaEMsTUFLYSxZQUFZO3VHQUFaLFlBQVk7d0dBQVosWUFBWSxpQkFuZFosTUFBTSxhQStjTCxZQUFZLGFBL2NiLE1BQU07d0dBbWROLFlBQVksWUFKWCxZQUFZOztTQUliLFlBQVk7MkZBQVosWUFBWTtrQkFMeEIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQztvQkFDakIsWUFBWSxFQUFFLENBQUMsTUFBTSxDQUFDO2lCQUN6QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSwgRE9DVU1FTlQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIEluamVjdCwgSW5wdXQsIE5nTW9kdWxlLCBOZ1pvbmUsIE9uRGVzdHJveSwgT3V0cHV0LCBQTEFURk9STV9JRCwgUmVuZGVyZXIyLCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBEb21IYW5kbGVyIH0gZnJvbSAncHJpbWVuZy9kb20nO1xuXG5leHBvcnQgY29uc3QgU0xJREVSX1ZBTFVFX0FDQ0VTU09SOiBhbnkgPSB7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2xpZGVyKSxcbiAgICBtdWx0aTogdHJ1ZVxufTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLXNsaWRlcicsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgW25nU3R5bGVdPVwic3R5bGVcIlxuICAgICAgICAgICAgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAncC1zbGlkZXIgcC1jb21wb25lbnQnOiB0cnVlLCAncC1kaXNhYmxlZCc6IGRpc2FibGVkLCAncC1zbGlkZXItaG9yaXpvbnRhbCc6IG9yaWVudGF0aW9uID09ICdob3Jpem9udGFsJywgJ3Atc2xpZGVyLXZlcnRpY2FsJzogb3JpZW50YXRpb24gPT0gJ3ZlcnRpY2FsJywgJ3Atc2xpZGVyLWFuaW1hdGUnOiBhbmltYXRlIH1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQmFyQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJyYW5nZSAmJiBvcmllbnRhdGlvbiA9PSAnaG9yaXpvbnRhbCdcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicC1zbGlkZXItcmFuZ2VcIlxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgbGVmdDogb2Zmc2V0ICE9PSBudWxsICYmIG9mZnNldCAhPT0gdW5kZWZpbmVkID8gb2Zmc2V0ICsgJyUnIDogaGFuZGxlVmFsdWVzWzBdICsgJyUnLCB3aWR0aDogZGlmZiA/IGRpZmYgKyAnJScgOiBoYW5kbGVWYWx1ZXNbMV0gLSBoYW5kbGVWYWx1ZXNbMF0gKyAnJScgfVwiXG4gICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cInJhbmdlICYmIG9yaWVudGF0aW9uID09ICd2ZXJ0aWNhbCdcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicC1zbGlkZXItcmFuZ2VcIlxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgYm90dG9tOiBvZmZzZXQgIT09IG51bGwgJiYgb2Zmc2V0ICE9PSB1bmRlZmluZWQgPyBvZmZzZXQgKyAnJScgOiBoYW5kbGVWYWx1ZXNbMF0gKyAnJScsIGhlaWdodDogZGlmZiA/IGRpZmYgKyAnJScgOiBoYW5kbGVWYWx1ZXNbMV0gLSBoYW5kbGVWYWx1ZXNbMF0gKyAnJScgfVwiXG4gICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhcmFuZ2UgJiYgb3JpZW50YXRpb24gPT0gJ3ZlcnRpY2FsJ1wiIGNsYXNzPVwicC1zbGlkZXItcmFuZ2VcIiBbbmdTdHlsZV09XCJ7IGhlaWdodDogaGFuZGxlVmFsdWUgKyAnJScgfVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXJhbmdlICYmIG9yaWVudGF0aW9uID09ICdob3Jpem9udGFsJ1wiIGNsYXNzPVwicC1zbGlkZXItcmFuZ2VcIiBbbmdTdHlsZV09XCJ7IHdpZHRoOiBoYW5kbGVWYWx1ZSArICclJyB9XCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAjc2xpZGVySGFuZGxlXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhcmFuZ2VcIlxuICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImRpc2FibGVkID8gbnVsbCA6IHRhYmluZGV4XCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbkhhbmRsZUtleWRvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwLXNsaWRlci1oYW5kbGVcIlxuICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25Nb3VzZURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKHRvdWNoc3RhcnQpPVwib25Ub3VjaFN0YXJ0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICh0b3VjaG1vdmUpPVwib25Ub3VjaE1vdmUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKHRvdWNoZW5kKT1cIm9uVG91Y2hFbmQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLnRyYW5zaXRpb25dPVwiZHJhZ2dpbmcgPyAnbm9uZScgOiBudWxsXCJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7IGxlZnQ6IG9yaWVudGF0aW9uID09ICdob3Jpem9udGFsJyA/IGhhbmRsZVZhbHVlICsgJyUnIDogbnVsbCwgYm90dG9tOiBvcmllbnRhdGlvbiA9PSAndmVydGljYWwnID8gaGFuZGxlVmFsdWUgKyAnJScgOiBudWxsIH1cIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtdmFsdWVtaW5dPVwibWluXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbm93XT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbWF4XT1cIm1heFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICNzbGlkZXJIYW5kbGVTdGFydFxuICAgICAgICAgICAgICAgICpuZ0lmPVwicmFuZ2VcIlxuICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImRpc2FibGVkID8gbnVsbCA6IHRhYmluZGV4XCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbkhhbmRsZUtleWRvd24oJGV2ZW50LCAwKVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvbk1vdXNlRG93bigkZXZlbnQsIDApXCJcbiAgICAgICAgICAgICAgICAodG91Y2hzdGFydCk9XCJvblRvdWNoU3RhcnQoJGV2ZW50LCAwKVwiXG4gICAgICAgICAgICAgICAgKHRvdWNobW92ZSk9XCJvblRvdWNoTW92ZSgkZXZlbnQsIDApXCJcbiAgICAgICAgICAgICAgICAodG91Y2hlbmQpPVwib25Ub3VjaEVuZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUudHJhbnNpdGlvbl09XCJkcmFnZ2luZyA/ICdub25lJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicC1zbGlkZXItaGFuZGxlXCJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7IGxlZnQ6IHJhbmdlU3RhcnRMZWZ0LCBib3R0b206IHJhbmdlU3RhcnRCb3R0b20gfVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAncC1zbGlkZXItaGFuZGxlLWFjdGl2ZSc6IGhhbmRsZUluZGV4ID09IDAgfVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1pbl09XCJtaW5cIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtdmFsdWVub3ddPVwidmFsdWUgPyB2YWx1ZVswXSA6IG51bGxcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtdmFsdWVtYXhdPVwibWF4XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgI3NsaWRlckhhbmRsZUVuZFxuICAgICAgICAgICAgICAgICpuZ0lmPVwicmFuZ2VcIlxuICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImRpc2FibGVkID8gbnVsbCA6IHRhYmluZGV4XCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbkhhbmRsZUtleWRvd24oJGV2ZW50LCAxKVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvbk1vdXNlRG93bigkZXZlbnQsIDEpXCJcbiAgICAgICAgICAgICAgICAodG91Y2hzdGFydCk9XCJvblRvdWNoU3RhcnQoJGV2ZW50LCAxKVwiXG4gICAgICAgICAgICAgICAgKHRvdWNobW92ZSk9XCJvblRvdWNoTW92ZSgkZXZlbnQsIDEpXCJcbiAgICAgICAgICAgICAgICAodG91Y2hlbmQpPVwib25Ub3VjaEVuZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUudHJhbnNpdGlvbl09XCJkcmFnZ2luZyA/ICdub25lJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicC1zbGlkZXItaGFuZGxlXCJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7IGxlZnQ6IHJhbmdlRW5kTGVmdCwgYm90dG9tOiByYW5nZUVuZEJvdHRvbSB9XCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdwLXNsaWRlci1oYW5kbGUtYWN0aXZlJzogaGFuZGxlSW5kZXggPT0gMSB9XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbWluXT1cIm1pblwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW5vd109XCJ2YWx1ZSA/IHZhbHVlWzFdIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1heF09XCJtYXhcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIHByb3ZpZGVyczogW1NMSURFUl9WQUxVRV9BQ0NFU1NPUl0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFsnLi9zbGlkZXIuY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFNsaWRlciBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAgIEBJbnB1dCgpIGFuaW1hdGU6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIG1pbjogbnVtYmVyID0gMDtcblxuICAgIEBJbnB1dCgpIG1heDogbnVtYmVyID0gMTAwO1xuXG4gICAgQElucHV0KCkgb3JpZW50YXRpb246IHN0cmluZyA9ICdob3Jpem9udGFsJztcblxuICAgIEBJbnB1dCgpIHN0ZXA6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIHJhbmdlOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgc3R5bGU6IGFueTtcblxuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGFyaWFMYWJlbGxlZEJ5OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSB0YWJpbmRleDogbnVtYmVyID0gMDtcblxuICAgIEBPdXRwdXQoKSBvbkNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25TbGlkZUVuZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAVmlld0NoaWxkKCdzbGlkZXJIYW5kbGUnKSBzbGlkZXJIYW5kbGU6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKCdzbGlkZXJIYW5kbGVTdGFydCcpIHNsaWRlckhhbmRsZVN0YXJ0OiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgnc2xpZGVySGFuZGxlRW5kJykgc2xpZGVySGFuZGxlRW5kOiBFbGVtZW50UmVmO1xuXG4gICAgcHVibGljIHZhbHVlOiBudW1iZXI7XG5cbiAgICBwdWJsaWMgdmFsdWVzOiBudW1iZXJbXTtcblxuICAgIHB1YmxpYyBoYW5kbGVWYWx1ZTogbnVtYmVyO1xuXG4gICAgcHVibGljIGhhbmRsZVZhbHVlczogbnVtYmVyW10gPSBbXTtcblxuICAgIGRpZmY6IG51bWJlcjtcblxuICAgIG9mZnNldDogbnVtYmVyO1xuXG4gICAgYm90dG9tOiBudW1iZXI7XG5cbiAgICBwdWJsaWMgb25Nb2RlbENoYW5nZTogRnVuY3Rpb24gPSAoKSA9PiB7fTtcblxuICAgIHB1YmxpYyBvbk1vZGVsVG91Y2hlZDogRnVuY3Rpb24gPSAoKSA9PiB7fTtcblxuICAgIHB1YmxpYyBkcmFnZ2luZzogYm9vbGVhbjtcblxuICAgIHB1YmxpYyBkcmFnTGlzdGVuZXI6IFZvaWRGdW5jdGlvbiB8IG51bGw7XG5cbiAgICBwdWJsaWMgbW91c2V1cExpc3RlbmVyOiBWb2lkRnVuY3Rpb24gfCBudWxsO1xuXG4gICAgcHVibGljIGluaXRYOiBudW1iZXI7XG5cbiAgICBwdWJsaWMgaW5pdFk6IG51bWJlcjtcblxuICAgIHB1YmxpYyBiYXJXaWR0aDogbnVtYmVyO1xuXG4gICAgcHVibGljIGJhckhlaWdodDogbnVtYmVyO1xuXG4gICAgcHVibGljIHNsaWRlckhhbmRsZUNsaWNrOiBib29sZWFuO1xuXG4gICAgcHVibGljIGhhbmRsZUluZGV4OiBudW1iZXIgPSAwO1xuXG4gICAgcHVibGljIHN0YXJ0SGFuZGxlVmFsdWU6IGFueTtcblxuICAgIHB1YmxpYyBzdGFydHg6IG51bWJlcjtcblxuICAgIHB1YmxpYyBzdGFydHk6IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LCBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IGFueSwgcHVibGljIGVsOiBFbGVtZW50UmVmLCBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSwgcHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICAgIG9uTW91c2VEb3duKGV2ZW50LCBpbmRleD86IG51bWJlcikge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kcmFnZ2luZyA9IHRydWU7XG4gICAgICAgIHRoaXMudXBkYXRlRG9tRGF0YSgpO1xuICAgICAgICB0aGlzLnNsaWRlckhhbmRsZUNsaWNrID0gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMucmFuZ2UgJiYgdGhpcy5oYW5kbGVWYWx1ZXMgJiYgdGhpcy5oYW5kbGVWYWx1ZXNbMF0gPT09IHRoaXMubWF4KSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUluZGV4ID0gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlSW5kZXggPSBpbmRleDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYmluZERyYWdMaXN0ZW5lcnMoKTtcbiAgICAgICAgZXZlbnQudGFyZ2V0LmZvY3VzKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgaWYgKHRoaXMuYW5pbWF0ZSkge1xuICAgICAgICAgICAgRG9tSGFuZGxlci5yZW1vdmVDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0sICdwLXNsaWRlci1hbmltYXRlJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblRvdWNoU3RhcnQoZXZlbnQsIGluZGV4PzogbnVtYmVyKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgdG91Y2hvYmogPSBldmVudC5jaGFuZ2VkVG91Y2hlc1swXTtcbiAgICAgICAgdGhpcy5zdGFydEhhbmRsZVZhbHVlID0gdGhpcy5yYW5nZSA/IHRoaXMuaGFuZGxlVmFsdWVzW2luZGV4XSA6IHRoaXMuaGFuZGxlVmFsdWU7XG4gICAgICAgIHRoaXMuZHJhZ2dpbmcgPSB0cnVlO1xuICAgICAgICBpZiAodGhpcy5yYW5nZSAmJiB0aGlzLmhhbmRsZVZhbHVlcyAmJiB0aGlzLmhhbmRsZVZhbHVlc1swXSA9PT0gdGhpcy5tYXgpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlSW5kZXggPSAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVJbmRleCA9IGluZGV4O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMub3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJykge1xuICAgICAgICAgICAgdGhpcy5zdGFydHggPSBwYXJzZUludCh0b3VjaG9iai5jbGllbnRYLCAxMCk7XG4gICAgICAgICAgICB0aGlzLmJhcldpZHRoID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdLm9mZnNldFdpZHRoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdGFydHkgPSBwYXJzZUludCh0b3VjaG9iai5jbGllbnRZLCAxMCk7XG4gICAgICAgICAgICB0aGlzLmJhckhlaWdodCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXS5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hbmltYXRlKSB7XG4gICAgICAgICAgICBEb21IYW5kbGVyLnJlbW92ZUNsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXSwgJ3Atc2xpZGVyLWFuaW1hdGUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25Ub3VjaE1vdmUoZXZlbnQsIGluZGV4PzogbnVtYmVyKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgdG91Y2hvYmogPSBldmVudC5jaGFuZ2VkVG91Y2hlc1swXSxcbiAgICAgICAgICAgIGhhbmRsZVZhbHVlID0gMDtcblxuICAgICAgICBpZiAodGhpcy5vcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnKSB7XG4gICAgICAgICAgICBoYW5kbGVWYWx1ZSA9IE1hdGguZmxvb3IoKChwYXJzZUludCh0b3VjaG9iai5jbGllbnRYLCAxMCkgLSB0aGlzLnN0YXJ0eCkgKiAxMDApIC8gdGhpcy5iYXJXaWR0aCkgKyB0aGlzLnN0YXJ0SGFuZGxlVmFsdWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBoYW5kbGVWYWx1ZSA9IE1hdGguZmxvb3IoKCh0aGlzLnN0YXJ0eSAtIHBhcnNlSW50KHRvdWNob2JqLmNsaWVudFksIDEwKSkgKiAxMDApIC8gdGhpcy5iYXJIZWlnaHQpICsgdGhpcy5zdGFydEhhbmRsZVZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRWYWx1ZUZyb21IYW5kbGUoZXZlbnQsIGhhbmRsZVZhbHVlKTtcblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uVG91Y2hFbmQoZXZlbnQsIGluZGV4PzogbnVtYmVyKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRyYWdnaW5nID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHRoaXMucmFuZ2UpIHRoaXMub25TbGlkZUVuZC5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIHZhbHVlczogdGhpcy52YWx1ZXMgfSk7XG4gICAgICAgIGVsc2UgdGhpcy5vblNsaWRlRW5kLmVtaXQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgdmFsdWU6IHRoaXMudmFsdWUgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuYW5pbWF0ZSkge1xuICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0sICdwLXNsaWRlci1hbmltYXRlJyk7XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uQmFyQ2xpY2soZXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5zbGlkZXJIYW5kbGVDbGljaykge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVEb21EYXRhKCk7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUNoYW5nZShldmVudCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNsaWRlckhhbmRsZUNsaWNrID0gZmFsc2U7XG4gICAgfVxuXG4gICAgb25IYW5kbGVLZXlkb3duKGV2ZW50LCBoYW5kbGVJbmRleD86IG51bWJlcikge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC53aGljaCA9PSAzOCB8fCBldmVudC53aGljaCA9PSAzOSkge1xuICAgICAgICAgICAgdGhpcy5zcGluKGV2ZW50LCAxLCBoYW5kbGVJbmRleCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQud2hpY2ggPT0gMzcgfHwgZXZlbnQud2hpY2ggPT0gNDApIHtcbiAgICAgICAgICAgIHRoaXMuc3BpbihldmVudCwgLTEsIGhhbmRsZUluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNwaW4oZXZlbnQsIGRpcjogbnVtYmVyLCBoYW5kbGVJbmRleD86IG51bWJlcikge1xuICAgICAgICBsZXQgc3RlcCA9ICh0aGlzLnN0ZXAgfHwgMSkgKiBkaXI7XG5cbiAgICAgICAgaWYgKHRoaXMucmFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlSW5kZXggPSBoYW5kbGVJbmRleDtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUodGhpcy52YWx1ZXNbdGhpcy5oYW5kbGVJbmRleF0gKyBzdGVwKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlSGFuZGxlVmFsdWUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUodGhpcy52YWx1ZSArIHN0ZXApO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVIYW5kbGVWYWx1ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBoYW5kbGVDaGFuZ2UoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGxldCBoYW5kbGVWYWx1ZSA9IHRoaXMuY2FsY3VsYXRlSGFuZGxlVmFsdWUoZXZlbnQpO1xuICAgICAgICB0aGlzLnNldFZhbHVlRnJvbUhhbmRsZShldmVudCwgaGFuZGxlVmFsdWUpO1xuICAgIH1cblxuICAgIGJpbmREcmFnTGlzdGVuZXJzKCkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50VGFyZ2V0OiBhbnkgPSB0aGlzLmVsID8gdGhpcy5lbC5uYXRpdmVFbGVtZW50Lm93bmVyRG9jdW1lbnQgOiB0aGlzLmRvY3VtZW50O1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRyYWdMaXN0ZW5lcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYWdMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKGRvY3VtZW50VGFyZ2V0LCAnbW91c2Vtb3ZlJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kcmFnZ2luZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlKGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLm1vdXNldXBMaXN0ZW5lcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdXNldXBMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKGRvY3VtZW50VGFyZ2V0LCAnbW91c2V1cCcsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZHJhZ2dpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYWdnaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmFuZ2UpIHRoaXMub25TbGlkZUVuZC5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIHZhbHVlczogdGhpcy52YWx1ZXMgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgdGhpcy5vblNsaWRlRW5kLmVtaXQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgdmFsdWU6IHRoaXMudmFsdWUgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYW5pbWF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0sICdwLXNsaWRlci1hbmltYXRlJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1bmJpbmREcmFnTGlzdGVuZXJzKCkge1xuICAgICAgICBpZiAodGhpcy5kcmFnTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZHJhZ0xpc3RlbmVyKCk7XG4gICAgICAgICAgICB0aGlzLmRyYWdMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tb3VzZXVwTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMubW91c2V1cExpc3RlbmVyKCk7XG4gICAgICAgICAgICB0aGlzLm1vdXNldXBMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRWYWx1ZUZyb21IYW5kbGUoZXZlbnQ6IEV2ZW50LCBoYW5kbGVWYWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMuc2xpZGVySGFuZGxlQ2xpY2sgPSBmYWxzZTtcbiAgICAgICAgbGV0IG5ld1ZhbHVlID0gdGhpcy5nZXRWYWx1ZUZyb21IYW5kbGUoaGFuZGxlVmFsdWUpO1xuXG4gICAgICAgIGlmICh0aGlzLnJhbmdlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zdGVwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVTdGVwQ2hhbmdlKG5ld1ZhbHVlLCB0aGlzLnZhbHVlc1t0aGlzLmhhbmRsZUluZGV4XSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlVmFsdWVzW3RoaXMuaGFuZGxlSW5kZXhdID0gaGFuZGxlVmFsdWU7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShuZXdWYWx1ZSwgZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMuc3RlcCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlU3RlcENoYW5nZShuZXdWYWx1ZSwgdGhpcy52YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlVmFsdWUgPSBoYW5kbGVWYWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKG5ld1ZhbHVlLCBldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIGhhbmRsZVN0ZXBDaGFuZ2UobmV3VmFsdWU6IG51bWJlciwgb2xkVmFsdWU6IG51bWJlcikge1xuICAgICAgICBsZXQgZGlmZiA9IG5ld1ZhbHVlIC0gb2xkVmFsdWU7XG4gICAgICAgIGxldCB2YWwgPSBvbGRWYWx1ZTtcblxuICAgICAgICBpZiAoZGlmZiA8IDApIHtcbiAgICAgICAgICAgIHZhbCA9IG9sZFZhbHVlICsgTWF0aC5jZWlsKG5ld1ZhbHVlIC8gdGhpcy5zdGVwIC0gb2xkVmFsdWUgLyB0aGlzLnN0ZXApICogdGhpcy5zdGVwO1xuICAgICAgICB9IGVsc2UgaWYgKGRpZmYgPiAwKSB7XG4gICAgICAgICAgICB2YWwgPSBvbGRWYWx1ZSArIE1hdGguZmxvb3IobmV3VmFsdWUgLyB0aGlzLnN0ZXAgLSBvbGRWYWx1ZSAvIHRoaXMuc3RlcCkgKiB0aGlzLnN0ZXA7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHZhbCk7XG4gICAgICAgIHRoaXMudXBkYXRlSGFuZGxlVmFsdWUoKTtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmFuZ2UpIHRoaXMudmFsdWVzID0gdmFsdWUgfHwgWzAsIDBdO1xuICAgICAgICBlbHNlIHRoaXMudmFsdWUgPSB2YWx1ZSB8fCAwO1xuXG4gICAgICAgIHRoaXMudXBkYXRlSGFuZGxlVmFsdWUoKTtcbiAgICAgICAgdGhpcy51cGRhdGVEaWZmQW5kT2Zmc2V0KCk7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Nb2RlbFRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlKHZhbDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gdmFsO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIGdldCByYW5nZVN0YXJ0TGVmdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmVydGljYWwoKSkgcmV0dXJuIHRoaXMuaGFuZGxlVmFsdWVzWzBdID4gMTAwID8gMTAwICsgJyUnIDogdGhpcy5oYW5kbGVWYWx1ZXNbMF0gKyAnJSc7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGdldCByYW5nZVN0YXJ0Qm90dG9tKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1ZlcnRpY2FsKCkgPyB0aGlzLmhhbmRsZVZhbHVlc1swXSArICclJyA6ICdhdXRvJztcbiAgICB9XG5cbiAgICBnZXQgcmFuZ2VFbmRMZWZ0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1ZlcnRpY2FsKCkgPyBudWxsIDogdGhpcy5oYW5kbGVWYWx1ZXNbMV0gKyAnJSc7XG4gICAgfVxuXG4gICAgZ2V0IHJhbmdlRW5kQm90dG9tKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1ZlcnRpY2FsKCkgPyB0aGlzLmhhbmRsZVZhbHVlc1sxXSArICclJyA6ICdhdXRvJztcbiAgICB9XG5cbiAgICBpc1ZlcnRpY2FsKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJztcbiAgICB9XG5cbiAgICB1cGRhdGVEb21EYXRhKCk6IHZvaWQge1xuICAgICAgICBsZXQgcmVjdCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgdGhpcy5pbml0WCA9IHJlY3QubGVmdCArIERvbUhhbmRsZXIuZ2V0V2luZG93U2Nyb2xsTGVmdCgpO1xuICAgICAgICB0aGlzLmluaXRZID0gcmVjdC50b3AgKyBEb21IYW5kbGVyLmdldFdpbmRvd1Njcm9sbFRvcCgpO1xuICAgICAgICB0aGlzLmJhcldpZHRoID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdLm9mZnNldFdpZHRoO1xuICAgICAgICB0aGlzLmJhckhlaWdodCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXS5vZmZzZXRIZWlnaHQ7XG4gICAgfVxuXG4gICAgY2FsY3VsYXRlSGFuZGxlVmFsdWUoZXZlbnQpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy5vcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnKSByZXR1cm4gKChldmVudC5wYWdlWCAtIHRoaXMuaW5pdFgpICogMTAwKSAvIHRoaXMuYmFyV2lkdGg7XG4gICAgICAgIGVsc2UgcmV0dXJuICgodGhpcy5pbml0WSArIHRoaXMuYmFySGVpZ2h0IC0gZXZlbnQucGFnZVkpICogMTAwKSAvIHRoaXMuYmFySGVpZ2h0O1xuICAgIH1cblxuICAgIHVwZGF0ZUhhbmRsZVZhbHVlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5yYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVWYWx1ZXNbMF0gPSAoKHRoaXMudmFsdWVzWzBdIDwgdGhpcy5taW4gPyAwIDogdGhpcy52YWx1ZXNbMF0gLSB0aGlzLm1pbikgKiAxMDApIC8gKHRoaXMubWF4IC0gdGhpcy5taW4pO1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVWYWx1ZXNbMV0gPSAoKHRoaXMudmFsdWVzWzFdID4gdGhpcy5tYXggPyAxMDAgOiB0aGlzLnZhbHVlc1sxXSAtIHRoaXMubWluKSAqIDEwMCkgLyAodGhpcy5tYXggLSB0aGlzLm1pbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy52YWx1ZSA8IHRoaXMubWluKSB0aGlzLmhhbmRsZVZhbHVlID0gMDtcbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMudmFsdWUgPiB0aGlzLm1heCkgdGhpcy5oYW5kbGVWYWx1ZSA9IDEwMDtcbiAgICAgICAgICAgIGVsc2UgdGhpcy5oYW5kbGVWYWx1ZSA9ICgodGhpcy52YWx1ZSAtIHRoaXMubWluKSAqIDEwMCkgLyAodGhpcy5tYXggLSB0aGlzLm1pbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zdGVwKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZURpZmZBbmRPZmZzZXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZURpZmZBbmRPZmZzZXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlmZiA9IHRoaXMuZ2V0RGlmZigpO1xuICAgICAgICB0aGlzLm9mZnNldCA9IHRoaXMuZ2V0T2Zmc2V0KCk7XG4gICAgfVxuXG4gICAgZ2V0RGlmZigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gTWF0aC5hYnModGhpcy5oYW5kbGVWYWx1ZXNbMF0gLSB0aGlzLmhhbmRsZVZhbHVlc1sxXSk7XG4gICAgfVxuXG4gICAgZ2V0T2Zmc2V0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBNYXRoLm1pbih0aGlzLmhhbmRsZVZhbHVlc1swXSwgdGhpcy5oYW5kbGVWYWx1ZXNbMV0pO1xuICAgIH1cblxuICAgIHVwZGF0ZVZhbHVlKHZhbDogbnVtYmVyLCBldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnJhbmdlKSB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSB2YWw7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmhhbmRsZUluZGV4ID09IDApIHtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPCB0aGlzLm1pbikge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMubWluO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVZhbHVlc1swXSA9IDA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA+IHRoaXMudmFsdWVzWzFdKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA+IHRoaXMubWF4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMubWF4O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVWYWx1ZXNbMF0gPSAxMDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5zbGlkZXJIYW5kbGVTdGFydC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA+IHRoaXMubWF4KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy5tYXg7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlVmFsdWVzWzFdID0gMTAwO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9mZnNldCA9IHRoaXMuaGFuZGxlVmFsdWVzWzFdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUgPCB0aGlzLm1pbikge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMubWluO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVZhbHVlc1sxXSA9IDA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA8IHRoaXMudmFsdWVzWzBdKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub2Zmc2V0ID0gdGhpcy5oYW5kbGVWYWx1ZXNbMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc2xpZGVySGFuZGxlRW5kLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuc3RlcCkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlSGFuZGxlVmFsdWUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVEaWZmQW5kT2Zmc2V0KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMudmFsdWVzW3RoaXMuaGFuZGxlSW5kZXhdID0gdGhpcy5nZXROb3JtYWxpemVkVmFsdWUodmFsdWUpO1xuICAgICAgICAgICAgbGV0IG5ld1ZhbHVlcyA9IFt0aGlzLm1pblZhbCwgdGhpcy5tYXhWYWxdO1xuICAgICAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKG5ld1ZhbHVlcyk7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoeyBldmVudDogZXZlbnQsIHZhbHVlczogdGhpcy52YWx1ZXMgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodmFsIDwgdGhpcy5taW4pIHtcbiAgICAgICAgICAgICAgICB2YWwgPSB0aGlzLm1pbjtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVZhbHVlID0gMDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsID4gdGhpcy5tYXgpIHtcbiAgICAgICAgICAgICAgICB2YWwgPSB0aGlzLm1heDtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVZhbHVlID0gMTAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5nZXROb3JtYWxpemVkVmFsdWUodmFsKTtcblxuICAgICAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHsgZXZlbnQ6IGV2ZW50LCB2YWx1ZTogdGhpcy52YWx1ZSB9KTtcbiAgICAgICAgICAgIHRoaXMuc2xpZGVySGFuZGxlLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFZhbHVlRnJvbUhhbmRsZShoYW5kbGVWYWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLm1heCAtIHRoaXMubWluKSAqIChoYW5kbGVWYWx1ZSAvIDEwMCkgKyB0aGlzLm1pbjtcbiAgICB9XG5cbiAgICBnZXREZWNpbWFsc0NvdW50KHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBpZiAodmFsdWUgJiYgTWF0aC5mbG9vcih2YWx1ZSkgIT09IHZhbHVlKSByZXR1cm4gdmFsdWUudG9TdHJpbmcoKS5zcGxpdCgnLicpWzFdLmxlbmd0aCB8fCAwO1xuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBnZXROb3JtYWxpemVkVmFsdWUodmFsOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBsZXQgZGVjaW1hbHNDb3VudCA9IHRoaXMuZ2V0RGVjaW1hbHNDb3VudCh0aGlzLnN0ZXApO1xuICAgICAgICBpZiAoZGVjaW1hbHNDb3VudCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiArcGFyc2VGbG9hdCh2YWwudG9TdHJpbmcoKSkudG9GaXhlZChkZWNpbWFsc0NvdW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmZsb29yKHZhbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy51bmJpbmREcmFnTGlzdGVuZXJzKCk7XG4gICAgfVxuXG4gICAgZ2V0IG1pblZhbCgpIHtcbiAgICAgICAgcmV0dXJuIE1hdGgubWluKHRoaXMudmFsdWVzWzFdLCB0aGlzLnZhbHVlc1swXSk7XG4gICAgfVxuICAgIGdldCBtYXhWYWwoKSB7XG4gICAgICAgIHJldHVybiBNYXRoLm1heCh0aGlzLnZhbHVlc1sxXSwgdGhpcy52YWx1ZXNbMF0pO1xuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbU2xpZGVyXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtTbGlkZXJdXG59KVxuZXhwb3J0IGNsYXNzIFNsaWRlck1vZHVsZSB7fVxuIl19
682
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3NsaWRlci9zbGlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBYyxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFxQixNQUFNLEVBQUUsV0FBVyxFQUFhLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0TyxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7O0FBSXpDLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFRO0lBQ3RDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7SUFDckMsS0FBSyxFQUFFLElBQUk7Q0FDZCxDQUFDO0FBQ0Y7OztHQUdHO0FBQ0gsTUFvRmEsTUFBTTtJQXFIdUI7SUFBaUQ7SUFBd0I7SUFBdUI7SUFBNkI7SUFBdUI7SUFwSDFMOzs7T0FHRztJQUNNLE9BQU8sQ0FBc0I7SUFDdEM7OztPQUdHO0lBQ00sUUFBUSxDQUFzQjtJQUN2Qzs7O09BR0c7SUFDTSxHQUFHLEdBQVcsQ0FBQyxDQUFDO0lBQ3pCOzs7T0FHRztJQUNNLEdBQUcsR0FBVyxHQUFHLENBQUM7SUFDM0I7OztPQUdHO0lBQ00sV0FBVyxHQUE4QixZQUFZLENBQUM7SUFDL0Q7OztPQUdHO0lBQ00sSUFBSSxDQUFxQjtJQUNsQzs7O09BR0c7SUFDTSxLQUFLLENBQXNCO0lBQ3BDOzs7T0FHRztJQUNNLEtBQUssQ0FBOEM7SUFDNUQ7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QUFLO2dCQUtHLEtBQUs7c0JBQWIsS0FBSztnQkFLRyxLQUFLO3NCQUFiLEtBQUs7Z0JBS0csVUFBVTtzQkFBbEIsS0FBSztnQkFLRyxjQUFjO3NCQUF0QixLQUFLO2dCQUtHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBTUksUUFBUTtzQkFBakIsTUFBTTtnQkFNRyxVQUFVO3NCQUFuQixNQUFNO2dCQUVvQixZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBRU8saUJBQWlCO3NCQUFoRCxTQUFTO3VCQUFDLG1CQUFtQjtnQkFFQSxlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQjs7QUFnYmhDLE1BS2EsWUFBWTt1R0FBWixZQUFZO3dHQUFaLFlBQVksaUJBOWZaLE1BQU0sYUEwZkwsWUFBWSxhQTFmYixNQUFNO3dHQThmTixZQUFZLFlBSlgsWUFBWTs7U0FJYixZQUFZOzJGQUFaLFlBQVk7a0JBTHhCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUM7b0JBQ2pCLFlBQVksRUFBRSxDQUFDLE1BQU0sQ0FBQztpQkFDekIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUsIERPQ1VNRU5ULCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmLCBJbmplY3QsIElucHV0LCBOZ01vZHVsZSwgTmdab25lLCBPbkRlc3Ryb3ksIE91dHB1dCwgUExBVEZPUk1fSUQsIFJlbmRlcmVyMiwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRG9tSGFuZGxlciB9IGZyb20gJ3ByaW1lbmcvZG9tJztcbmltcG9ydCB7IE51bGxhYmxlLCBWb2lkTGlzdGVuZXIgfSBmcm9tICdwcmltZW5nL3RzLWhlbHBlcnMnO1xuaW1wb3J0IHsgU2xpZGVyQ2hhbmdlRXZlbnQsIFNsaWRlclNsaWRlRW5kRXZlbnQgfSBmcm9tICcuL3NsaWRlci5pbnRlcmZhY2UnO1xuXG5leHBvcnQgY29uc3QgU0xJREVSX1ZBTFVFX0FDQ0VTU09SOiBhbnkgPSB7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2xpZGVyKSxcbiAgICBtdWx0aTogdHJ1ZVxufTtcbi8qKlxuICogU2xpZGVyIGlzIGEgY29tcG9uZW50IHRvIHByb3ZpZGUgaW5wdXQgd2l0aCBhIGRyYWcgaGFuZGxlLlxuICogQGdyb3VwIENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLXNsaWRlcicsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgW25nU3R5bGVdPVwic3R5bGVcIlxuICAgICAgICAgICAgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAncC1zbGlkZXIgcC1jb21wb25lbnQnOiB0cnVlLCAncC1kaXNhYmxlZCc6IGRpc2FibGVkLCAncC1zbGlkZXItaG9yaXpvbnRhbCc6IG9yaWVudGF0aW9uID09ICdob3Jpem9udGFsJywgJ3Atc2xpZGVyLXZlcnRpY2FsJzogb3JpZW50YXRpb24gPT0gJ3ZlcnRpY2FsJywgJ3Atc2xpZGVyLWFuaW1hdGUnOiBhbmltYXRlIH1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQmFyQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJyYW5nZSAmJiBvcmllbnRhdGlvbiA9PSAnaG9yaXpvbnRhbCdcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicC1zbGlkZXItcmFuZ2VcIlxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgbGVmdDogb2Zmc2V0ICE9PSBudWxsICYmIG9mZnNldCAhPT0gdW5kZWZpbmVkID8gb2Zmc2V0ICsgJyUnIDogaGFuZGxlVmFsdWVzWzBdICsgJyUnLCB3aWR0aDogZGlmZiA/IGRpZmYgKyAnJScgOiBoYW5kbGVWYWx1ZXNbMV0gLSBoYW5kbGVWYWx1ZXNbMF0gKyAnJScgfVwiXG4gICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cInJhbmdlICYmIG9yaWVudGF0aW9uID09ICd2ZXJ0aWNhbCdcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicC1zbGlkZXItcmFuZ2VcIlxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgYm90dG9tOiBvZmZzZXQgIT09IG51bGwgJiYgb2Zmc2V0ICE9PSB1bmRlZmluZWQgPyBvZmZzZXQgKyAnJScgOiBoYW5kbGVWYWx1ZXNbMF0gKyAnJScsIGhlaWdodDogZGlmZiA/IGRpZmYgKyAnJScgOiBoYW5kbGVWYWx1ZXNbMV0gLSBoYW5kbGVWYWx1ZXNbMF0gKyAnJScgfVwiXG4gICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhcmFuZ2UgJiYgb3JpZW50YXRpb24gPT0gJ3ZlcnRpY2FsJ1wiIGNsYXNzPVwicC1zbGlkZXItcmFuZ2VcIiBbbmdTdHlsZV09XCJ7IGhlaWdodDogaGFuZGxlVmFsdWUgKyAnJScgfVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXJhbmdlICYmIG9yaWVudGF0aW9uID09ICdob3Jpem9udGFsJ1wiIGNsYXNzPVwicC1zbGlkZXItcmFuZ2VcIiBbbmdTdHlsZV09XCJ7IHdpZHRoOiBoYW5kbGVWYWx1ZSArICclJyB9XCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAjc2xpZGVySGFuZGxlXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhcmFuZ2VcIlxuICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImRpc2FibGVkID8gbnVsbCA6IHRhYmluZGV4XCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbkhhbmRsZUtleWRvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwLXNsaWRlci1oYW5kbGVcIlxuICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25Nb3VzZURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKHRvdWNoc3RhcnQpPVwib25Ub3VjaFN0YXJ0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICh0b3VjaG1vdmUpPVwib25Ub3VjaE1vdmUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKHRvdWNoZW5kKT1cIm9uVG91Y2hFbmQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLnRyYW5zaXRpb25dPVwiZHJhZ2dpbmcgPyAnbm9uZScgOiBudWxsXCJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7IGxlZnQ6IG9yaWVudGF0aW9uID09ICdob3Jpem9udGFsJyA/IGhhbmRsZVZhbHVlICsgJyUnIDogbnVsbCwgYm90dG9tOiBvcmllbnRhdGlvbiA9PSAndmVydGljYWwnID8gaGFuZGxlVmFsdWUgKyAnJScgOiBudWxsIH1cIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtdmFsdWVtaW5dPVwibWluXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbm93XT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbWF4XT1cIm1heFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICNzbGlkZXJIYW5kbGVTdGFydFxuICAgICAgICAgICAgICAgICpuZ0lmPVwicmFuZ2VcIlxuICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImRpc2FibGVkID8gbnVsbCA6IHRhYmluZGV4XCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbkhhbmRsZUtleWRvd24oJGV2ZW50LCAwKVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvbk1vdXNlRG93bigkZXZlbnQsIDApXCJcbiAgICAgICAgICAgICAgICAodG91Y2hzdGFydCk9XCJvblRvdWNoU3RhcnQoJGV2ZW50LCAwKVwiXG4gICAgICAgICAgICAgICAgKHRvdWNobW92ZSk9XCJvblRvdWNoTW92ZSgkZXZlbnQsIDApXCJcbiAgICAgICAgICAgICAgICAodG91Y2hlbmQpPVwib25Ub3VjaEVuZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUudHJhbnNpdGlvbl09XCJkcmFnZ2luZyA/ICdub25lJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicC1zbGlkZXItaGFuZGxlXCJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7IGxlZnQ6IHJhbmdlU3RhcnRMZWZ0LCBib3R0b206IHJhbmdlU3RhcnRCb3R0b20gfVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAncC1zbGlkZXItaGFuZGxlLWFjdGl2ZSc6IGhhbmRsZUluZGV4ID09IDAgfVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1pbl09XCJtaW5cIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtdmFsdWVub3ddPVwidmFsdWUgPyB2YWx1ZVswXSA6IG51bGxcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtdmFsdWVtYXhdPVwibWF4XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgI3NsaWRlckhhbmRsZUVuZFxuICAgICAgICAgICAgICAgICpuZ0lmPVwicmFuZ2VcIlxuICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImRpc2FibGVkID8gbnVsbCA6IHRhYmluZGV4XCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbkhhbmRsZUtleWRvd24oJGV2ZW50LCAxKVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvbk1vdXNlRG93bigkZXZlbnQsIDEpXCJcbiAgICAgICAgICAgICAgICAodG91Y2hzdGFydCk9XCJvblRvdWNoU3RhcnQoJGV2ZW50LCAxKVwiXG4gICAgICAgICAgICAgICAgKHRvdWNobW92ZSk9XCJvblRvdWNoTW92ZSgkZXZlbnQsIDEpXCJcbiAgICAgICAgICAgICAgICAodG91Y2hlbmQpPVwib25Ub3VjaEVuZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUudHJhbnNpdGlvbl09XCJkcmFnZ2luZyA/ICdub25lJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicC1zbGlkZXItaGFuZGxlXCJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7IGxlZnQ6IHJhbmdlRW5kTGVmdCwgYm90dG9tOiByYW5nZUVuZEJvdHRvbSB9XCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdwLXNsaWRlci1oYW5kbGUtYWN0aXZlJzogaGFuZGxlSW5kZXggPT0gMSB9XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbWluXT1cIm1pblwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW5vd109XCJ2YWx1ZSA/IHZhbHVlWzFdIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1heF09XCJtYXhcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIHByb3ZpZGVyczogW1NMSURFUl9WQUxVRV9BQ0NFU1NPUl0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFsnLi9zbGlkZXIuY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFNsaWRlciBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAgIC8qKlxuICAgICAqIFdoZW4gZW5hYmxlZCwgZGlzcGxheXMgYW4gYW5pbWF0aW9uIG9uIGNsaWNrIG9mIHRoZSBzbGlkZXIgYmFyLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGFuaW1hdGU6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hlbiBwcmVzZW50LCBpdCBzcGVjaWZpZXMgdGhhdCB0aGUgZWxlbWVudCBzaG91bGQgYmUgZGlzYWJsZWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogTWluaW51bSBib3VuZGFyeSB2YWx1ZS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBtaW46IG51bWJlciA9IDA7XG4gICAgLyoqXG4gICAgICogTWF4aW11bSBib3VuZGFyeSB2YWx1ZS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBtYXg6IG51bWJlciA9IDEwMDtcbiAgICAvKipcbiAgICAgKiBPcmllbnRhdGlvbiBvZiB0aGUgc2xpZGVyLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIG9yaWVudGF0aW9uOiAnaG9yaXpvbnRhbCcgfCAndmVydGljYWwnID0gJ2hvcml6b250YWwnO1xuICAgIC8qKlxuICAgICAqIFN0ZXAgZmFjdG9yIHRvIGluY3JlbWVudC9kZWNyZW1lbnQgdGhlIHZhbHVlLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHN0ZXA6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBXaGVuIHNwZWNpZmllZCwgYWxsb3dzIHR3byBib3VuZGFyeSB2YWx1ZXMgdG8gYmUgcGlja2VkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHJhbmdlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIElubGluZSBzdHlsZSBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHN0eWxlOiB7IFtrbGFzczogc3RyaW5nXTogYW55IH0gfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFN0eWxlIGNsYXNzIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEVzdGFibGlzaGVzIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGUgY29tcG9uZW50IGFuZCBsYWJlbChzKSB3aGVyZSBpdHMgdmFsdWUgc2hvdWxkIGJlIG9uZSBvciBtb3JlIGVsZW1lbnQgSURzLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGFyaWFMYWJlbGxlZEJ5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogSW5kZXggb2YgdGhlIGVsZW1lbnQgaW4gdGFiYmluZyBvcmRlci5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0YWJpbmRleDogbnVtYmVyID0gMDtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugb24gdmFsdWUgY2hhbmdlLlxuICAgICAqIEBwYXJhbSB7U2xpZGVyQ2hhbmdlRXZlbnR9IGV2ZW50IC0gQ3VzdG9tIHZhbHVlIGNoYW5nZSBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxTbGlkZXJDaGFuZ2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFNsaWRlckNoYW5nZUV2ZW50PigpO1xuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIHNsaWRlIGVuZGVkLlxuICAgICAqIEBwYXJhbSB7U2xpZGVyU2xpZGVFbmRFdmVudH0gZXZlbnQgLSBDdXN0b20gc2xpZGUgZW5kIGV2ZW50LlxuICAgICAqIEBncm91cCBFbWl0c1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvblNsaWRlRW5kOiBFdmVudEVtaXR0ZXI8U2xpZGVyU2xpZGVFbmRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFNsaWRlclNsaWRlRW5kRXZlbnQ+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdzbGlkZXJIYW5kbGUnKSBzbGlkZXJIYW5kbGU6IE51bGxhYmxlPEVsZW1lbnRSZWY+O1xuXG4gICAgQFZpZXdDaGlsZCgnc2xpZGVySGFuZGxlU3RhcnQnKSBzbGlkZXJIYW5kbGVTdGFydDogTnVsbGFibGU8RWxlbWVudFJlZj47XG5cbiAgICBAVmlld0NoaWxkKCdzbGlkZXJIYW5kbGVFbmQnKSBzbGlkZXJIYW5kbGVFbmQ6IE51bGxhYmxlPEVsZW1lbnRSZWY+O1xuXG4gICAgcHVibGljIHZhbHVlOiBOdWxsYWJsZTxudW1iZXI+O1xuXG4gICAgcHVibGljIHZhbHVlczogTnVsbGFibGU8bnVtYmVyW10+O1xuXG4gICAgcHVibGljIGhhbmRsZVZhbHVlOiBOdWxsYWJsZTxudW1iZXI+O1xuXG4gICAgcHVibGljIGhhbmRsZVZhbHVlczogbnVtYmVyW10gPSBbXTtcblxuICAgIGRpZmY6IE51bGxhYmxlPG51bWJlcj47XG5cbiAgICBvZmZzZXQ6IE51bGxhYmxlPG51bWJlcj47XG5cbiAgICBib3R0b206IE51bGxhYmxlPG51bWJlcj47XG5cbiAgICBwdWJsaWMgb25Nb2RlbENoYW5nZTogRnVuY3Rpb24gPSAoKSA9PiB7fTtcblxuICAgIHB1YmxpYyBvbk1vZGVsVG91Y2hlZDogRnVuY3Rpb24gPSAoKSA9PiB7fTtcblxuICAgIHB1YmxpYyBkcmFnZ2luZzogTnVsbGFibGU8Ym9vbGVhbj47XG5cbiAgICBwdWJsaWMgZHJhZ0xpc3RlbmVyOiBWb2lkTGlzdGVuZXI7XG5cbiAgICBwdWJsaWMgbW91c2V1cExpc3RlbmVyOiBWb2lkTGlzdGVuZXI7XG5cbiAgICBwdWJsaWMgaW5pdFg6IE51bGxhYmxlPG51bWJlcj47XG5cbiAgICBwdWJsaWMgaW5pdFk6IE51bGxhYmxlPG51bWJlcj47XG5cbiAgICBwdWJsaWMgYmFyV2lkdGg6IE51bGxhYmxlPG51bWJlcj47XG5cbiAgICBwdWJsaWMgYmFySGVpZ2h0OiBOdWxsYWJsZTxudW1iZXI+O1xuXG4gICAgcHVibGljIHNsaWRlckhhbmRsZUNsaWNrOiBOdWxsYWJsZTxib29sZWFuPjtcblxuICAgIHB1YmxpYyBoYW5kbGVJbmRleDogbnVtYmVyID0gMDtcblxuICAgIHB1YmxpYyBzdGFydEhhbmRsZVZhbHVlOiBhbnk7XG5cbiAgICBwdWJsaWMgc3RhcnR4OiBOdWxsYWJsZTxudW1iZXI+O1xuXG4gICAgcHVibGljIHN0YXJ0eTogTnVsbGFibGU8bnVtYmVyPjtcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LCBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IGFueSwgcHVibGljIGVsOiBFbGVtZW50UmVmLCBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSwgcHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICAgIG9uTW91c2VEb3duKGV2ZW50OiBFdmVudCwgaW5kZXg/OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZHJhZ2dpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLnVwZGF0ZURvbURhdGEoKTtcbiAgICAgICAgdGhpcy5zbGlkZXJIYW5kbGVDbGljayA9IHRydWU7XG4gICAgICAgIGlmICh0aGlzLnJhbmdlICYmIHRoaXMuaGFuZGxlVmFsdWVzICYmIHRoaXMuaGFuZGxlVmFsdWVzWzBdID09PSB0aGlzLm1heCkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVJbmRleCA9IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAodGhpcy5oYW5kbGVJbmRleCBhcyBhbnkpID0gaW5kZXg7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmJpbmREcmFnTGlzdGVuZXJzKCk7XG4gICAgICAgIChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuZm9jdXMoKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICBpZiAodGhpcy5hbmltYXRlKSB7XG4gICAgICAgICAgICBEb21IYW5kbGVyLnJlbW92ZUNsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXSwgJ3Atc2xpZGVyLWFuaW1hdGUnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVG91Y2hTdGFydChldmVudDogVG91Y2hFdmVudCwgaW5kZXg/OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB0b3VjaG9iaiA9IGV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdO1xuICAgICAgICB0aGlzLnN0YXJ0SGFuZGxlVmFsdWUgPSB0aGlzLnJhbmdlID8gdGhpcy5oYW5kbGVWYWx1ZXNbaW5kZXggYXMgbnVtYmVyXSA6IHRoaXMuaGFuZGxlVmFsdWU7XG4gICAgICAgIHRoaXMuZHJhZ2dpbmcgPSB0cnVlO1xuICAgICAgICBpZiAodGhpcy5yYW5nZSAmJiB0aGlzLmhhbmRsZVZhbHVlcyAmJiB0aGlzLmhhbmRsZVZhbHVlc1swXSA9PT0gdGhpcy5tYXgpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlSW5kZXggPSAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVJbmRleCA9IGluZGV4IGFzIG51bWJlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCcpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnR4ID0gcGFyc2VJbnQoKHRvdWNob2JqIGFzIGFueSkuY2xpZW50WCwgMTApO1xuICAgICAgICAgICAgdGhpcy5iYXJXaWR0aCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXS5vZmZzZXRXaWR0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnR5ID0gcGFyc2VJbnQoKHRvdWNob2JqIGFzIGFueSkuY2xpZW50WSwgMTApO1xuICAgICAgICAgICAgdGhpcy5iYXJIZWlnaHQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0ub2Zmc2V0SGVpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYW5pbWF0ZSkge1xuICAgICAgICAgICAgRG9tSGFuZGxlci5yZW1vdmVDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0sICdwLXNsaWRlci1hbmltYXRlJyk7XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uVG91Y2hNb3ZlKGV2ZW50OiBUb3VjaEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgdG91Y2hvYmogPSBldmVudC5jaGFuZ2VkVG91Y2hlc1swXSxcbiAgICAgICAgICAgIGhhbmRsZVZhbHVlID0gMDtcblxuICAgICAgICBpZiAodGhpcy5vcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnKSB7XG4gICAgICAgICAgICBoYW5kbGVWYWx1ZSA9IE1hdGguZmxvb3IoKChwYXJzZUludCgodG91Y2hvYmogYXMgYW55KS5jbGllbnRYLCAxMCkgLSAodGhpcy5zdGFydHggYXMgbnVtYmVyKSkgKiAxMDApIC8gKHRoaXMuYmFyV2lkdGggYXMgbnVtYmVyKSkgKyB0aGlzLnN0YXJ0SGFuZGxlVmFsdWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBoYW5kbGVWYWx1ZSA9IE1hdGguZmxvb3IoKCgodGhpcy5zdGFydHkgYXMgbnVtYmVyKSAtIHBhcnNlSW50KCh0b3VjaG9iaiBhcyBhbnkpLmNsaWVudFksIDEwKSkgKiAxMDApIC8gKHRoaXMuYmFySGVpZ2h0IGFzIG51bWJlcikpICsgdGhpcy5zdGFydEhhbmRsZVZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRWYWx1ZUZyb21IYW5kbGUoZXZlbnQsIGhhbmRsZVZhbHVlKTtcblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uVG91Y2hFbmQoZXZlbnQ6IFRvdWNoRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZHJhZ2dpbmcgPSBmYWxzZTtcblxuICAgICAgICBpZiAodGhpcy5yYW5nZSkgdGhpcy5vblNsaWRlRW5kLmVtaXQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgdmFsdWVzOiB0aGlzLnZhbHVlcyBhcyBudW1iZXJbXSB9KTtcbiAgICAgICAgZWxzZSB0aGlzLm9uU2xpZGVFbmQuZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCB2YWx1ZTogdGhpcy52YWx1ZSBhcyBudW1iZXIgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuYW5pbWF0ZSkge1xuICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0sICdwLXNsaWRlci1hbmltYXRlJyk7XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uQmFyQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuc2xpZGVySGFuZGxlQ2xpY2spIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRG9tRGF0YSgpO1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVDaGFuZ2UoZXZlbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zbGlkZXJIYW5kbGVDbGljayA9IGZhbHNlO1xuICAgIH1cblxuICAgIG9uSGFuZGxlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCwgaGFuZGxlSW5kZXg/OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQud2hpY2ggPT0gMzggfHwgZXZlbnQud2hpY2ggPT0gMzkpIHtcbiAgICAgICAgICAgIHRoaXMuc3BpbihldmVudCwgMSwgaGFuZGxlSW5kZXgpO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LndoaWNoID09IDM3IHx8IGV2ZW50LndoaWNoID09IDQwKSB7XG4gICAgICAgICAgICB0aGlzLnNwaW4oZXZlbnQsIC0xLCBoYW5kbGVJbmRleCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzcGluKGV2ZW50OiBFdmVudCwgZGlyOiBudW1iZXIsIGhhbmRsZUluZGV4PzogbnVtYmVyKSB7XG4gICAgICAgIGxldCBzdGVwID0gKHRoaXMuc3RlcCB8fCAxKSAqIGRpcjtcblxuICAgICAgICBpZiAodGhpcy5yYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVJbmRleCA9IGhhbmRsZUluZGV4IGFzIG51bWJlcjtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUoKHRoaXMudmFsdWVzIGFzIG51bWJlcltdKVt0aGlzLmhhbmRsZUluZGV4XSArIHN0ZXApO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVIYW5kbGVWYWx1ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSgodGhpcy52YWx1ZSBhcyBudW1iZXIpICsgc3RlcCk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUhhbmRsZVZhbHVlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIGhhbmRsZUNoYW5nZShldmVudDogRXZlbnQpIHtcbiAgICAgICAgbGV0IGhhbmRsZVZhbHVlID0gdGhpcy5jYWxjdWxhdGVIYW5kbGVWYWx1ZShldmVudCk7XG4gICAgICAgIHRoaXMuc2V0VmFsdWVGcm9tSGFuZGxlKGV2ZW50LCBoYW5kbGVWYWx1ZSk7XG4gICAgfVxuXG4gICAgYmluZERyYWdMaXN0ZW5lcnMoKSB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRUYXJnZXQ6IGFueSA9IHRoaXMuZWwgPyB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQub3duZXJEb2N1bWVudCA6IHRoaXMuZG9jdW1lbnQ7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZHJhZ0xpc3RlbmVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhZ0xpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oZG9jdW1lbnRUYXJnZXQsICdtb3VzZW1vdmUnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRyYWdnaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVDaGFuZ2UoZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMubW91c2V1cExpc3RlbmVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW91c2V1cExpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oZG9jdW1lbnRUYXJnZXQsICdtb3VzZXVwJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kcmFnZ2luZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhZ2dpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yYW5nZSkgdGhpcy5vblNsaWRlRW5kLmVtaXQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgdmFsdWVzOiB0aGlzLnZhbHVlcyBhcyBudW1iZXJbXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB0aGlzLm9uU2xpZGVFbmQuZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCB2YWx1ZTogdGhpcy52YWx1ZSBhcyBudW1iZXIgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYW5pbWF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0sICdwLXNsaWRlci1hbmltYXRlJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1bmJpbmREcmFnTGlzdGVuZXJzKCkge1xuICAgICAgICBpZiAodGhpcy5kcmFnTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZHJhZ0xpc3RlbmVyKCk7XG4gICAgICAgICAgICB0aGlzLmRyYWdMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tb3VzZXVwTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMubW91c2V1cExpc3RlbmVyKCk7XG4gICAgICAgICAgICB0aGlzLm1vdXNldXBMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRWYWx1ZUZyb21IYW5kbGUoZXZlbnQ6IEV2ZW50LCBoYW5kbGVWYWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMuc2xpZGVySGFuZGxlQ2xpY2sgPSBmYWxzZTtcbiAgICAgICAgbGV0IG5ld1ZhbHVlID0gdGhpcy5nZXRWYWx1ZUZyb21IYW5kbGUoaGFuZGxlVmFsdWUpO1xuXG4gICAgICAgIGlmICh0aGlzLnJhbmdlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zdGVwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVTdGVwQ2hhbmdlKG5ld1ZhbHVlLCAodGhpcy52YWx1ZXMgYXMgYW55KVt0aGlzLmhhbmRsZUluZGV4XSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlVmFsdWVzW3RoaXMuaGFuZGxlSW5kZXhdID0gaGFuZGxlVmFsdWU7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShuZXdWYWx1ZSwgZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMuc3RlcCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlU3RlcENoYW5nZShuZXdWYWx1ZSwgdGhpcy52YWx1ZSBhcyBhbnkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVZhbHVlID0gaGFuZGxlVmFsdWU7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShuZXdWYWx1ZSwgZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBoYW5kbGVTdGVwQ2hhbmdlKG5ld1ZhbHVlOiBudW1iZXIsIG9sZFZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgbGV0IGRpZmYgPSBuZXdWYWx1ZSAtIG9sZFZhbHVlO1xuICAgICAgICBsZXQgdmFsID0gb2xkVmFsdWU7XG4gICAgICAgIGxldCBfc3RlcCA9IHRoaXMuc3RlcCBhcyBudW1iZXI7XG5cbiAgICAgICAgaWYgKGRpZmYgPCAwKSB7XG4gICAgICAgICAgICB2YWwgPSBvbGRWYWx1ZSArIE1hdGguY2VpbChuZXdWYWx1ZSAvIF9zdGVwIC0gb2xkVmFsdWUgLyBfc3RlcCkgKiBfc3RlcDtcbiAgICAgICAgfSBlbHNlIGlmIChkaWZmID4gMCkge1xuICAgICAgICAgICAgdmFsID0gb2xkVmFsdWUgKyBNYXRoLmZsb29yKG5ld1ZhbHVlIC8gX3N0ZXAgLSBvbGRWYWx1ZSAvIF9zdGVwKSAqIF9zdGVwO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSh2YWwpO1xuICAgICAgICB0aGlzLnVwZGF0ZUhhbmRsZVZhbHVlKCk7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnJhbmdlKSB0aGlzLnZhbHVlcyA9IHZhbHVlIHx8IFswLCAwXTtcbiAgICAgICAgZWxzZSB0aGlzLnZhbHVlID0gdmFsdWUgfHwgMDtcblxuICAgICAgICB0aGlzLnVwZGF0ZUhhbmRsZVZhbHVlKCk7XG4gICAgICAgIHRoaXMudXBkYXRlRGlmZkFuZE9mZnNldCgpO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTW9kZWxUb3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZSh2YWw6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHZhbDtcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBnZXQgcmFuZ2VTdGFydExlZnQoKSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZlcnRpY2FsKCkpIHJldHVybiB0aGlzLmhhbmRsZVZhbHVlc1swXSA+IDEwMCA/IDEwMCArICclJyA6IHRoaXMuaGFuZGxlVmFsdWVzWzBdICsgJyUnO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBnZXQgcmFuZ2VTdGFydEJvdHRvbSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWZXJ0aWNhbCgpID8gdGhpcy5oYW5kbGVWYWx1ZXNbMF0gKyAnJScgOiAnYXV0byc7XG4gICAgfVxuXG4gICAgZ2V0IHJhbmdlRW5kTGVmdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWZXJ0aWNhbCgpID8gbnVsbCA6IHRoaXMuaGFuZGxlVmFsdWVzWzFdICsgJyUnO1xuICAgIH1cblxuICAgIGdldCByYW5nZUVuZEJvdHRvbSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWZXJ0aWNhbCgpID8gdGhpcy5oYW5kbGVWYWx1ZXNbMV0gKyAnJScgOiAnYXV0byc7XG4gICAgfVxuXG4gICAgaXNWZXJ0aWNhbCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCc7XG4gICAgfVxuXG4gICAgdXBkYXRlRG9tRGF0YSgpOiB2b2lkIHtcbiAgICAgICAgbGV0IHJlY3QgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHRoaXMuaW5pdFggPSByZWN0LmxlZnQgKyBEb21IYW5kbGVyLmdldFdpbmRvd1Njcm9sbExlZnQoKTtcbiAgICAgICAgdGhpcy5pbml0WSA9IHJlY3QudG9wICsgRG9tSGFuZGxlci5nZXRXaW5kb3dTY3JvbGxUb3AoKTtcbiAgICAgICAgdGhpcy5iYXJXaWR0aCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXS5vZmZzZXRXaWR0aDtcbiAgICAgICAgdGhpcy5iYXJIZWlnaHQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0ub2Zmc2V0SGVpZ2h0O1xuICAgIH1cblxuICAgIGNhbGN1bGF0ZUhhbmRsZVZhbHVlKGV2ZW50OiBFdmVudCk6IG51bWJlciB7XG4gICAgICAgIGlmICh0aGlzLm9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCcpIHJldHVybiAoKChldmVudCBhcyBNb3VzZUV2ZW50KS5wYWdlWCAtICh0aGlzLmluaXRYIGFzIG51bWJlcikpICogMTAwKSAvICh0aGlzLmJhcldpZHRoIGFzIG51bWJlcik7XG4gICAgICAgIGVsc2UgcmV0dXJuICgoKHRoaXMuaW5pdFkgYXMgbnVtYmVyKSArICh0aGlzLmJhckhlaWdodCBhcyBudW1iZXIpIC0gKGV2ZW50IGFzIE1vdXNlRXZlbnQpLnBhZ2VZKSAqIDEwMCkgLyAodGhpcy5iYXJIZWlnaHQgYXMgbnVtYmVyKTtcbiAgICB9XG5cbiAgICB1cGRhdGVIYW5kbGVWYWx1ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlVmFsdWVzWzBdID0gKCgodGhpcy52YWx1ZXMgYXMgbnVtYmVyW10pWzBdIDwgdGhpcy5taW4gPyAwIDogKHRoaXMudmFsdWVzIGFzIG51bWJlcltdKVswXSAtIHRoaXMubWluKSAqIDEwMCkgLyAodGhpcy5tYXggLSB0aGlzLm1pbik7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVZhbHVlc1sxXSA9ICgoKHRoaXMudmFsdWVzIGFzIG51bWJlcltdKVsxXSA+IHRoaXMubWF4ID8gMTAwIDogKHRoaXMudmFsdWVzIGFzIG51bWJlcltdKVsxXSAtIHRoaXMubWluKSAqIDEwMCkgLyAodGhpcy5tYXggLSB0aGlzLm1pbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoKHRoaXMudmFsdWUgYXMgbnVtYmVyKSA8IHRoaXMubWluKSB0aGlzLmhhbmRsZVZhbHVlID0gMDtcbiAgICAgICAgICAgIGVsc2UgaWYgKCh0aGlzLnZhbHVlIGFzIG51bWJlcikgPiB0aGlzLm1heCkgdGhpcy5oYW5kbGVWYWx1ZSA9IDEwMDtcbiAgICAgICAgICAgIGVsc2UgdGhpcy5oYW5kbGVWYWx1ZSA9ICgoKHRoaXMudmFsdWUgYXMgbnVtYmVyKSAtIHRoaXMubWluKSAqIDEwMCkgLyAodGhpcy5tYXggLSB0aGlzLm1pbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zdGVwKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZURpZmZBbmRPZmZzZXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZURpZmZBbmRPZmZzZXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlmZiA9IHRoaXMuZ2V0RGlmZigpO1xuICAgICAgICB0aGlzLm9mZnNldCA9IHRoaXMuZ2V0T2Zmc2V0KCk7XG4gICAgfVxuXG4gICAgZ2V0RGlmZigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gTWF0aC5hYnModGhpcy5oYW5kbGVWYWx1ZXNbMF0gLSB0aGlzLmhhbmRsZVZhbHVlc1sxXSk7XG4gICAgfVxuXG4gICAgZ2V0T2Zmc2V0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBNYXRoLm1pbih0aGlzLmhhbmRsZVZhbHVlc1swXSwgdGhpcy5oYW5kbGVWYWx1ZXNbMV0pO1xuICAgIH1cblxuICAgIHVwZGF0ZVZhbHVlKHZhbDogbnVtYmVyLCBldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnJhbmdlKSB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSB2YWw7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmhhbmRsZUluZGV4ID09IDApIHtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPCB0aGlzLm1pbikge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMubWluO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVZhbHVlc1swXSA9IDA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA+ICh0aGlzLnZhbHVlcyBhcyBudW1iZXJbXSlbMV0pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlID4gdGhpcy5tYXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy5tYXg7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVZhbHVlc1swXSA9IDEwMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnNsaWRlckhhbmRsZVN0YXJ0Py5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA+IHRoaXMubWF4KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy5tYXg7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlVmFsdWVzWzFdID0gMTAwO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9mZnNldCA9IHRoaXMuaGFuZGxlVmFsdWVzWzFdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUgPCB0aGlzLm1pbikge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMubWluO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVZhbHVlc1sxXSA9IDA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA8ICh0aGlzLnZhbHVlcyBhcyBudW1iZXJbXSlbMF0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vZmZzZXQgPSB0aGlzLmhhbmRsZVZhbHVlc1sxXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5zbGlkZXJIYW5kbGVFbmQ/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuc3RlcCkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlSGFuZGxlVmFsdWUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVEaWZmQW5kT2Zmc2V0KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICh0aGlzLnZhbHVlcyBhcyBudW1iZXJbXSlbdGhpcy5oYW5kbGVJbmRleF0gPSB0aGlzLmdldE5vcm1hbGl6ZWRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgICBsZXQgbmV3VmFsdWVzID0gW3RoaXMubWluVmFsLCB0aGlzLm1heFZhbF07XG4gICAgICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UobmV3VmFsdWVzKTtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IGV2ZW50OiBldmVudCBhcyBFdmVudCwgdmFsdWVzOiB0aGlzLnZhbHVlcyBhcyBudW1iZXJbXSB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh2YWwgPCB0aGlzLm1pbikge1xuICAgICAgICAgICAgICAgIHZhbCA9IHRoaXMubWluO1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlVmFsdWUgPSAwO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWwgPiB0aGlzLm1heCkge1xuICAgICAgICAgICAgICAgIHZhbCA9IHRoaXMubWF4O1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlVmFsdWUgPSAxMDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmdldE5vcm1hbGl6ZWRWYWx1ZSh2YWwpO1xuXG4gICAgICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoeyBldmVudDogZXZlbnQgYXMgRXZlbnQsIHZhbHVlOiB0aGlzLnZhbHVlIH0pO1xuICAgICAgICAgICAgdGhpcy5zbGlkZXJIYW5kbGU/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFZhbHVlRnJvbUhhbmRsZShoYW5kbGVWYWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLm1heCAtIHRoaXMubWluKSAqIChoYW5kbGVWYWx1ZSAvIDEwMCkgKyB0aGlzLm1pbjtcbiAgICB9XG5cbiAgICBnZXREZWNpbWFsc0NvdW50KHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBpZiAodmFsdWUgJiYgTWF0aC5mbG9vcih2YWx1ZSkgIT09IHZhbHVlKSByZXR1cm4gdmFsdWUudG9TdHJpbmcoKS5zcGxpdCgnLicpWzFdLmxlbmd0aCB8fCAwO1xuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBnZXROb3JtYWxpemVkVmFsdWUodmFsOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBsZXQgZGVjaW1hbHNDb3VudCA9IHRoaXMuZ2V0RGVjaW1hbHNDb3VudCh0aGlzLnN0ZXAgYXMgbnVtYmVyKTtcbiAgICAgICAgaWYgKGRlY2ltYWxzQ291bnQgPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gK3BhcnNlRmxvYXQodmFsLnRvU3RyaW5nKCkpLnRvRml4ZWQoZGVjaW1hbHNDb3VudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5mbG9vcih2YWwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMudW5iaW5kRHJhZ0xpc3RlbmVycygpO1xuICAgIH1cblxuICAgIGdldCBtaW5WYWwoKSB7XG4gICAgICAgIHJldHVybiBNYXRoLm1pbigodGhpcy52YWx1ZXMgYXMgbnVtYmVyW10pWzFdLCAodGhpcy52YWx1ZXMgYXMgbnVtYmVyW10pWzBdKTtcbiAgICB9XG4gICAgZ2V0IG1heFZhbCgpIHtcbiAgICAgICAgcmV0dXJuIE1hdGgubWF4KCh0aGlzLnZhbHVlcyBhcyBudW1iZXJbXSlbMV0sICh0aGlzLnZhbHVlcyBhcyBudW1iZXJbXSlbMF0pO1xuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbU2xpZGVyXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtTbGlkZXJdXG59KVxuZXhwb3J0IGNsYXNzIFNsaWRlck1vZHVsZSB7fVxuIl19
@@ -1,2 +1,3 @@
1
1
  export * from './speeddial';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9zcGVlZGRpYWwvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc3BlZWRkaWFsJztcbiJdfQ==
2
+ export * from './speeddial.interface';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9zcGVlZGRpYWwvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zcGVlZGRpYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zcGVlZGRpYWwuaW50ZXJmYWNlJztcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlZWRkaWFsLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9zcGVlZGRpYWwvc3BlZWRkaWFsLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBEZWZpbmVzIHZhbGlkIHRlbXBsYXRlcyBpbiBTcGVlZERpYWwuXG4gKiBAZ3JvdXAgVGVtcGxhdGVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3BlZWREaWFsVGVtcGxhdGVzIHtcbiAgICAvKipcbiAgICAgKiBDdXN0b20gdGVtcGxhdGUgb2YgYnV0dG9uLlxuICAgICAqL1xuICAgIGJ1dHRvbigpOiBUZW1wbGF0ZVJlZjxhbnk+O1xufVxuIl19