@qius.solutions/parallel-ui-angular 1.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 (1830) hide show
  1. package/LICENSE +88 -0
  2. package/README.md +254 -0
  3. package/accordion/accordion.d.ts +77 -0
  4. package/accordion/index.d.ts +5 -0
  5. package/accordion/public_api.d.ts +1 -0
  6. package/animate/animate.d.ts +27 -0
  7. package/animate/index.d.ts +5 -0
  8. package/animate/public_api.d.ts +1 -0
  9. package/api/blockableui.d.ts +3 -0
  10. package/api/confirmaeventtype.d.ts +5 -0
  11. package/api/confirmation.d.ts +24 -0
  12. package/api/confirmationservice.d.ts +13 -0
  13. package/api/contextmenuservice.d.ts +10 -0
  14. package/api/filtermatchmode.d.ts +22 -0
  15. package/api/filtermetadata.d.ts +5 -0
  16. package/api/filteroperator.d.ts +4 -0
  17. package/api/filterservice.d.ts +29 -0
  18. package/api/index.d.ts +5 -0
  19. package/api/lazyloadevent.d.ts +15 -0
  20. package/api/megamenuitem.d.ts +36 -0
  21. package/api/menuitem.d.ts +55 -0
  22. package/api/message.d.ts +15 -0
  23. package/api/messageservice.d.ts +13 -0
  24. package/api/overlayoptions.d.ts +50 -0
  25. package/api/overlayservice.d.ts +9 -0
  26. package/api/parallel-ui-angular-config.d.ts +20 -0
  27. package/api/parallel-ui-icons.d.ts +260 -0
  28. package/api/public_api.d.ts +29 -0
  29. package/api/selectitem.d.ts +8 -0
  30. package/api/selectitemgroup.d.ts +6 -0
  31. package/api/shared.d.ts +25 -0
  32. package/api/sortevent.d.ts +8 -0
  33. package/api/sortmeta.d.ts +4 -0
  34. package/api/tablestate.d.ts +20 -0
  35. package/api/translation.d.ts +47 -0
  36. package/api/translationkeys.d.ts +42 -0
  37. package/api/treedragdropservice.d.ts +12 -0
  38. package/api/treenode.d.ts +19 -0
  39. package/api/treenodedragevent.d.ts +8 -0
  40. package/autocomplete/autocomplete.d.ts +183 -0
  41. package/autocomplete/index.d.ts +5 -0
  42. package/autocomplete/public_api.d.ts +1 -0
  43. package/autofocus/autofocus.d.ts +17 -0
  44. package/autofocus/index.d.ts +5 -0
  45. package/autofocus/public_api.d.ts +1 -0
  46. package/avatar/avatar.d.ts +28 -0
  47. package/avatar/index.d.ts +5 -0
  48. package/avatar/public_api.d.ts +1 -0
  49. package/avatargroup/avatargroup.d.ts +13 -0
  50. package/avatargroup/index.d.ts +5 -0
  51. package/avatargroup/public_api.d.ts +1 -0
  52. package/badge/badge.d.ts +56 -0
  53. package/badge/index.d.ts +5 -0
  54. package/badge/public_api.d.ts +1 -0
  55. package/baseicon/baseicon.d.ts +14 -0
  56. package/baseicon/index.d.ts +5 -0
  57. package/baseicon/public_api.d.ts +1 -0
  58. package/blockui/blockui.d.ts +37 -0
  59. package/blockui/index.d.ts +5 -0
  60. package/blockui/public_api.d.ts +1 -0
  61. package/breadcrumb/breadcrumb.d.ts +29 -0
  62. package/breadcrumb/index.d.ts +5 -0
  63. package/breadcrumb/public_api.d.ts +1 -0
  64. package/button/button.d.ts +87 -0
  65. package/button/index.d.ts +5 -0
  66. package/button/public_api.d.ts +1 -0
  67. package/calendar/calendar.d.ts +353 -0
  68. package/calendar/index.d.ts +5 -0
  69. package/calendar/public_api.d.ts +1 -0
  70. package/card/card.d.ts +30 -0
  71. package/card/index.d.ts +5 -0
  72. package/card/public_api.d.ts +1 -0
  73. package/carousel/carousel.d.ts +112 -0
  74. package/carousel/index.d.ts +5 -0
  75. package/carousel/public_api.d.ts +1 -0
  76. package/cascadeselect/cascadeselect.d.ts +156 -0
  77. package/cascadeselect/index.d.ts +5 -0
  78. package/cascadeselect/public_api.d.ts +1 -0
  79. package/chart/chart.d.ts +39 -0
  80. package/chart/index.d.ts +5 -0
  81. package/chart/public_api.d.ts +1 -0
  82. package/checkbox/checkbox.d.ts +56 -0
  83. package/checkbox/index.d.ts +5 -0
  84. package/checkbox/public_api.d.ts +1 -0
  85. package/chip/chip.d.ts +33 -0
  86. package/chip/index.d.ts +5 -0
  87. package/chip/public_api.d.ts +1 -0
  88. package/chips/chips.d.ts +73 -0
  89. package/chips/index.d.ts +5 -0
  90. package/chips/public_api.d.ts +1 -0
  91. package/colorpicker/colorpicker.d.ts +141 -0
  92. package/colorpicker/index.d.ts +5 -0
  93. package/colorpicker/public_api.d.ts +1 -0
  94. package/confirmdialog/confirmdialog.d.ts +116 -0
  95. package/confirmdialog/index.d.ts +5 -0
  96. package/confirmdialog/public_api.d.ts +1 -0
  97. package/confirmpopup/confirmpopup.d.ts +71 -0
  98. package/confirmpopup/index.d.ts +5 -0
  99. package/confirmpopup/public_api.d.ts +1 -0
  100. package/contextmenu/contextmenu.d.ts +92 -0
  101. package/contextmenu/index.d.ts +5 -0
  102. package/contextmenu/public_api.d.ts +1 -0
  103. package/dataview/dataview.d.ts +104 -0
  104. package/dataview/index.d.ts +5 -0
  105. package/dataview/public_api.d.ts +1 -0
  106. package/defer/defer.d.ts +29 -0
  107. package/defer/index.d.ts +5 -0
  108. package/defer/public_api.d.ts +1 -0
  109. package/dialog/dialog.d.ts +155 -0
  110. package/dialog/index.d.ts +5 -0
  111. package/dialog/public_api.d.ts +1 -0
  112. package/divider/divider.d.ts +29 -0
  113. package/divider/index.d.ts +5 -0
  114. package/divider/public_api.d.ts +1 -0
  115. package/dock/dock.d.ts +43 -0
  116. package/dock/index.d.ts +5 -0
  117. package/dock/public_api.d.ts +1 -0
  118. package/dom/connectedoverlayscrollhandler.d.ts +9 -0
  119. package/dom/domhandler.d.ts +82 -0
  120. package/dom/index.d.ts +5 -0
  121. package/dom/public_api.d.ts +2 -0
  122. package/dragdrop/dragdrop.d.ts +65 -0
  123. package/dragdrop/index.d.ts +5 -0
  124. package/dragdrop/public_api.d.ts +1 -0
  125. package/dropdown/dropdown.d.ts +225 -0
  126. package/dropdown/index.d.ts +5 -0
  127. package/dropdown/public_api.d.ts +1 -0
  128. package/dynamicdialog/dialogservice.d.ts +18 -0
  129. package/dynamicdialog/dynamicdialog-config.d.ts +29 -0
  130. package/dynamicdialog/dynamicdialog-injector.d.ts +8 -0
  131. package/dynamicdialog/dynamicdialog-ref.d.ts +25 -0
  132. package/dynamicdialog/dynamicdialog.d.ts +101 -0
  133. package/dynamicdialog/dynamicdialogcontent.d.ts +8 -0
  134. package/dynamicdialog/index.d.ts +5 -0
  135. package/dynamicdialog/public_api.d.ts +6 -0
  136. package/editor/editor.d.ts +50 -0
  137. package/editor/index.d.ts +5 -0
  138. package/editor/public_api.d.ts +1 -0
  139. package/esm2020/accordion/accordion.mjs +396 -0
  140. package/esm2020/accordion/public_api.mjs +2 -0
  141. package/esm2020/accordion/qius.solutions-parallel-ui-angular-accordion.mjs +5 -0
  142. package/esm2020/animate/animate.mjs +79 -0
  143. package/esm2020/animate/public_api.mjs +2 -0
  144. package/esm2020/animate/qius.solutions-parallel-ui-angular-animate.mjs +5 -0
  145. package/esm2020/api/blockableui.mjs +2 -0
  146. package/esm2020/api/confirmaeventtype.mjs +7 -0
  147. package/esm2020/api/confirmation.mjs +2 -0
  148. package/esm2020/api/confirmationservice.mjs +28 -0
  149. package/esm2020/api/contextmenuservice.mjs +23 -0
  150. package/esm2020/api/filtermatchmode.mjs +23 -0
  151. package/esm2020/api/filtermetadata.mjs +2 -0
  152. package/esm2020/api/filteroperator.mjs +5 -0
  153. package/esm2020/api/filterservice.mjs +221 -0
  154. package/esm2020/api/lazyloadevent.mjs +2 -0
  155. package/esm2020/api/megamenuitem.mjs +2 -0
  156. package/esm2020/api/menuitem.mjs +2 -0
  157. package/esm2020/api/message.mjs +2 -0
  158. package/esm2020/api/messageservice.mjs +30 -0
  159. package/esm2020/api/overlayoptions.mjs +2 -0
  160. package/esm2020/api/overlayservice.mjs +21 -0
  161. package/esm2020/api/parallel-ui-angular-config.mjs +84 -0
  162. package/esm2020/api/parallel-ui-icons.mjs +261 -0
  163. package/esm2020/api/public_api.mjs +30 -0
  164. package/esm2020/api/qius.solutions-parallel-ui-angular-api.mjs +5 -0
  165. package/esm2020/api/selectitem.mjs +2 -0
  166. package/esm2020/api/selectitemgroup.mjs +2 -0
  167. package/esm2020/api/shared.mjs +62 -0
  168. package/esm2020/api/sortevent.mjs +2 -0
  169. package/esm2020/api/sortmeta.mjs +2 -0
  170. package/esm2020/api/tablestate.mjs +2 -0
  171. package/esm2020/api/translation.mjs +2 -0
  172. package/esm2020/api/translationkeys.mjs +43 -0
  173. package/esm2020/api/treedragdropservice.mjs +23 -0
  174. package/esm2020/api/treenode.mjs +2 -0
  175. package/esm2020/api/treenodedragevent.mjs +2 -0
  176. package/esm2020/autocomplete/autocomplete.mjs +1144 -0
  177. package/esm2020/autocomplete/public_api.mjs +2 -0
  178. package/esm2020/autocomplete/qius.solutions-parallel-ui-angular-autocomplete.mjs +5 -0
  179. package/esm2020/autofocus/autofocus.mjs +51 -0
  180. package/esm2020/autofocus/public_api.mjs +2 -0
  181. package/esm2020/autofocus/qius.solutions-parallel-ui-angular-autofocus.mjs +5 -0
  182. package/esm2020/avatar/avatar.mjs +75 -0
  183. package/esm2020/avatar/public_api.mjs +2 -0
  184. package/esm2020/avatar/qius.solutions-parallel-ui-angular-avatar.mjs +5 -0
  185. package/esm2020/avatargroup/avatargroup.mjs +40 -0
  186. package/esm2020/avatargroup/public_api.mjs +2 -0
  187. package/esm2020/avatargroup/qius.solutions-parallel-ui-angular-avatargroup.mjs +5 -0
  188. package/esm2020/badge/badge.mjs +182 -0
  189. package/esm2020/badge/public_api.mjs +2 -0
  190. package/esm2020/badge/qius.solutions-parallel-ui-angular-badge.mjs +5 -0
  191. package/esm2020/baseicon/baseicon.mjs +41 -0
  192. package/esm2020/baseicon/public_api.mjs +2 -0
  193. package/esm2020/baseicon/qius.solutions-parallel-ui-angular-baseicon.mjs +5 -0
  194. package/esm2020/blockui/blockui.mjs +140 -0
  195. package/esm2020/blockui/public_api.mjs +2 -0
  196. package/esm2020/blockui/qius.solutions-parallel-ui-angular-blockui.mjs +5 -0
  197. package/esm2020/breadcrumb/breadcrumb.mjs +296 -0
  198. package/esm2020/breadcrumb/public_api.mjs +2 -0
  199. package/esm2020/breadcrumb/qius.solutions-parallel-ui-angular-breadcrumb.mjs +5 -0
  200. package/esm2020/button/button.mjs +362 -0
  201. package/esm2020/button/public_api.mjs +2 -0
  202. package/esm2020/button/qius.solutions-parallel-ui-angular-button.mjs +5 -0
  203. package/esm2020/calendar/calendar.mjs +3123 -0
  204. package/esm2020/calendar/public_api.mjs +2 -0
  205. package/esm2020/calendar/qius.solutions-parallel-ui-angular-calendar.mjs +5 -0
  206. package/esm2020/card/card.mjs +126 -0
  207. package/esm2020/card/public_api.mjs +2 -0
  208. package/esm2020/card/qius.solutions-parallel-ui-angular-card.mjs +5 -0
  209. package/esm2020/carousel/carousel.mjs +696 -0
  210. package/esm2020/carousel/public_api.mjs +2 -0
  211. package/esm2020/carousel/qius.solutions-parallel-ui-angular-carousel.mjs +5 -0
  212. package/esm2020/cascadeselect/cascadeselect.mjs +766 -0
  213. package/esm2020/cascadeselect/public_api.mjs +2 -0
  214. package/esm2020/cascadeselect/qius.solutions-parallel-ui-angular-cascadeselect.mjs +5 -0
  215. package/esm2020/chart/chart.mjs +142 -0
  216. package/esm2020/chart/public_api.mjs +2 -0
  217. package/esm2020/chart/qius.solutions-parallel-ui-angular-chart.mjs +5 -0
  218. package/esm2020/checkbox/checkbox.mjs +247 -0
  219. package/esm2020/checkbox/public_api.mjs +2 -0
  220. package/esm2020/checkbox/qius.solutions-parallel-ui-angular-checkbox.mjs +5 -0
  221. package/esm2020/chip/chip.mjs +113 -0
  222. package/esm2020/chip/public_api.mjs +2 -0
  223. package/esm2020/chip/qius.solutions-parallel-ui-angular-chip.mjs +5 -0
  224. package/esm2020/chips/chips.mjs +375 -0
  225. package/esm2020/chips/public_api.mjs +2 -0
  226. package/esm2020/chips/qius.solutions-parallel-ui-angular-chips.mjs +5 -0
  227. package/esm2020/colorpicker/colorpicker.mjs +685 -0
  228. package/esm2020/colorpicker/public_api.mjs +2 -0
  229. package/esm2020/colorpicker/qius.solutions-parallel-ui-angular-colorpicker.mjs +5 -0
  230. package/esm2020/confirmdialog/confirmdialog.mjs +606 -0
  231. package/esm2020/confirmdialog/public_api.mjs +2 -0
  232. package/esm2020/confirmdialog/qius.solutions-parallel-ui-angular-confirmdialog.mjs +5 -0
  233. package/esm2020/confirmpopup/confirmpopup.mjs +394 -0
  234. package/esm2020/confirmpopup/public_api.mjs +2 -0
  235. package/esm2020/confirmpopup/qius.solutions-parallel-ui-angular-confirmpopup.mjs +5 -0
  236. package/esm2020/contextmenu/contextmenu.mjs +691 -0
  237. package/esm2020/contextmenu/public_api.mjs +2 -0
  238. package/esm2020/contextmenu/qius.solutions-parallel-ui-angular-contextmenu.mjs +5 -0
  239. package/esm2020/dataview/dataview.mjs +512 -0
  240. package/esm2020/dataview/public_api.mjs +2 -0
  241. package/esm2020/dataview/qius.solutions-parallel-ui-angular-dataview.mjs +5 -0
  242. package/esm2020/defer/defer.mjs +92 -0
  243. package/esm2020/defer/public_api.mjs +2 -0
  244. package/esm2020/defer/qius.solutions-parallel-ui-angular-defer.mjs +5 -0
  245. package/esm2020/dialog/dialog.mjs +833 -0
  246. package/esm2020/dialog/public_api.mjs +2 -0
  247. package/esm2020/dialog/qius.solutions-parallel-ui-angular-dialog.mjs +5 -0
  248. package/esm2020/divider/divider.mjs +69 -0
  249. package/esm2020/divider/public_api.mjs +2 -0
  250. package/esm2020/divider/qius.solutions-parallel-ui-angular-divider.mjs +5 -0
  251. package/esm2020/dock/dock.mjs +210 -0
  252. package/esm2020/dock/public_api.mjs +2 -0
  253. package/esm2020/dock/qius.solutions-parallel-ui-angular-dock.mjs +5 -0
  254. package/esm2020/dom/connectedoverlayscrollhandler.mjs +27 -0
  255. package/esm2020/dom/domhandler.mjs +600 -0
  256. package/esm2020/dom/public_api.mjs +3 -0
  257. package/esm2020/dom/qius.solutions-parallel-ui-angular-dom.mjs +5 -0
  258. package/esm2020/dragdrop/dragdrop.mjs +251 -0
  259. package/esm2020/dragdrop/public_api.mjs +2 -0
  260. package/esm2020/dragdrop/qius.solutions-parallel-ui-angular-dragdrop.mjs +5 -0
  261. package/esm2020/dropdown/dropdown.mjs +1372 -0
  262. package/esm2020/dropdown/public_api.mjs +2 -0
  263. package/esm2020/dropdown/qius.solutions-parallel-ui-angular-dropdown.mjs +5 -0
  264. package/esm2020/dynamicdialog/dialogservice.mjs +60 -0
  265. package/esm2020/dynamicdialog/dynamicdialog-config.mjs +3 -0
  266. package/esm2020/dynamicdialog/dynamicdialog-injector.mjs +13 -0
  267. package/esm2020/dynamicdialog/dynamicdialog-ref.mjs +41 -0
  268. package/esm2020/dynamicdialog/dynamicdialog.mjs +562 -0
  269. package/esm2020/dynamicdialog/dynamicdialogcontent.mjs +19 -0
  270. package/esm2020/dynamicdialog/public_api.mjs +7 -0
  271. package/esm2020/dynamicdialog/qius.solutions-parallel-ui-angular-dynamicdialog.mjs +5 -0
  272. package/esm2020/editor/editor.mjs +309 -0
  273. package/esm2020/editor/public_api.mjs +2 -0
  274. package/esm2020/editor/qius.solutions-parallel-ui-angular-editor.mjs +5 -0
  275. package/esm2020/fieldset/fieldset.mjs +214 -0
  276. package/esm2020/fieldset/public_api.mjs +2 -0
  277. package/esm2020/fieldset/qius.solutions-parallel-ui-angular-fieldset.mjs +5 -0
  278. package/esm2020/fileupload/fileupload.mjs +754 -0
  279. package/esm2020/fileupload/public_api.mjs +2 -0
  280. package/esm2020/fileupload/qius.solutions-parallel-ui-angular-fileupload.mjs +5 -0
  281. package/esm2020/focustrap/focustrap.mjs +52 -0
  282. package/esm2020/focustrap/public_api.mjs +2 -0
  283. package/esm2020/focustrap/qius.solutions-parallel-ui-angular-focustrap.mjs +5 -0
  284. package/esm2020/galleria/galleria.mjs +1187 -0
  285. package/esm2020/galleria/public_api.mjs +2 -0
  286. package/esm2020/galleria/qius.solutions-parallel-ui-angular-galleria.mjs +5 -0
  287. package/esm2020/icons/angledoubledown/angledoubledown.mjs +35 -0
  288. package/esm2020/icons/angledoubledown/public_api.mjs +2 -0
  289. package/esm2020/icons/angledoubledown/qius.solutions-parallel-ui-angular-icons-angledoubledown.mjs +5 -0
  290. package/esm2020/icons/angledoubleleft/angledoubleleft.mjs +35 -0
  291. package/esm2020/icons/angledoubleleft/public_api.mjs +2 -0
  292. package/esm2020/icons/angledoubleleft/qius.solutions-parallel-ui-angular-icons-angledoubleleft.mjs +5 -0
  293. package/esm2020/icons/angledoubleright/angledoubleright.mjs +35 -0
  294. package/esm2020/icons/angledoubleright/public_api.mjs +2 -0
  295. package/esm2020/icons/angledoubleright/qius.solutions-parallel-ui-angular-icons-angledoubleright.mjs +5 -0
  296. package/esm2020/icons/angledoubleup/angledoubleup.mjs +35 -0
  297. package/esm2020/icons/angledoubleup/public_api.mjs +2 -0
  298. package/esm2020/icons/angledoubleup/qius.solutions-parallel-ui-angular-icons-angledoubleup.mjs +5 -0
  299. package/esm2020/icons/angledown/angledown.mjs +31 -0
  300. package/esm2020/icons/angledown/public_api.mjs +2 -0
  301. package/esm2020/icons/angledown/qius.solutions-parallel-ui-angular-icons-angledown.mjs +5 -0
  302. package/esm2020/icons/angleleft/angleleft.mjs +31 -0
  303. package/esm2020/icons/angleleft/public_api.mjs +2 -0
  304. package/esm2020/icons/angleleft/qius.solutions-parallel-ui-angular-icons-angleleft.mjs +5 -0
  305. package/esm2020/icons/angleright/angleright.mjs +31 -0
  306. package/esm2020/icons/angleright/public_api.mjs +2 -0
  307. package/esm2020/icons/angleright/qius.solutions-parallel-ui-angular-icons-angleright.mjs +5 -0
  308. package/esm2020/icons/angleup/angleup.mjs +31 -0
  309. package/esm2020/icons/angleup/public_api.mjs +2 -0
  310. package/esm2020/icons/angleup/qius.solutions-parallel-ui-angular-icons-angleup.mjs +5 -0
  311. package/esm2020/icons/arrowdown/arrowdown.mjs +49 -0
  312. package/esm2020/icons/arrowdown/public_api.mjs +2 -0
  313. package/esm2020/icons/arrowdown/qius.solutions-parallel-ui-angular-icons-arrowdown.mjs +5 -0
  314. package/esm2020/icons/arrowdownleft/arrowdownleft.mjs +31 -0
  315. package/esm2020/icons/arrowdownleft/public_api.mjs +2 -0
  316. package/esm2020/icons/arrowdownleft/qius.solutions-parallel-ui-angular-icons-arrowdownleft.mjs +5 -0
  317. package/esm2020/icons/arrowdownright/arrowdownright.mjs +31 -0
  318. package/esm2020/icons/arrowdownright/public_api.mjs +2 -0
  319. package/esm2020/icons/arrowdownright/qius.solutions-parallel-ui-angular-icons-arrowdownright.mjs +5 -0
  320. package/esm2020/icons/arrowleft/arrowleft.mjs +49 -0
  321. package/esm2020/icons/arrowleft/public_api.mjs +2 -0
  322. package/esm2020/icons/arrowleft/qius.solutions-parallel-ui-angular-icons-arrowleft.mjs +5 -0
  323. package/esm2020/icons/arrowright/arrowright.mjs +35 -0
  324. package/esm2020/icons/arrowright/public_api.mjs +2 -0
  325. package/esm2020/icons/arrowright/qius.solutions-parallel-ui-angular-icons-arrowright.mjs +5 -0
  326. package/esm2020/icons/arrowup/arrowup.mjs +49 -0
  327. package/esm2020/icons/arrowup/public_api.mjs +2 -0
  328. package/esm2020/icons/arrowup/qius.solutions-parallel-ui-angular-icons-arrowup.mjs +5 -0
  329. package/esm2020/icons/ban/ban.mjs +45 -0
  330. package/esm2020/icons/ban/public_api.mjs +2 -0
  331. package/esm2020/icons/ban/qius.solutions-parallel-ui-angular-icons-ban.mjs +5 -0
  332. package/esm2020/icons/bars/bars.mjs +35 -0
  333. package/esm2020/icons/bars/public_api.mjs +2 -0
  334. package/esm2020/icons/bars/qius.solutions-parallel-ui-angular-icons-bars.mjs +5 -0
  335. package/esm2020/icons/calendar/calendar.mjs +31 -0
  336. package/esm2020/icons/calendar/public_api.mjs +2 -0
  337. package/esm2020/icons/calendar/qius.solutions-parallel-ui-angular-icons-calendar.mjs +5 -0
  338. package/esm2020/icons/caretleft/caretleft.mjs +31 -0
  339. package/esm2020/icons/caretleft/public_api.mjs +2 -0
  340. package/esm2020/icons/caretleft/qius.solutions-parallel-ui-angular-icons-caretleft.mjs +5 -0
  341. package/esm2020/icons/caretright/caretright.mjs +31 -0
  342. package/esm2020/icons/caretright/public_api.mjs +2 -0
  343. package/esm2020/icons/caretright/qius.solutions-parallel-ui-angular-icons-caretright.mjs +5 -0
  344. package/esm2020/icons/check/check.mjs +31 -0
  345. package/esm2020/icons/check/public_api.mjs +2 -0
  346. package/esm2020/icons/check/qius.solutions-parallel-ui-angular-icons-check.mjs +5 -0
  347. package/esm2020/icons/chevrondown/chevrondown.mjs +31 -0
  348. package/esm2020/icons/chevrondown/public_api.mjs +2 -0
  349. package/esm2020/icons/chevrondown/qius.solutions-parallel-ui-angular-icons-chevrondown.mjs +5 -0
  350. package/esm2020/icons/chevronleft/chevronleft.mjs +31 -0
  351. package/esm2020/icons/chevronleft/public_api.mjs +2 -0
  352. package/esm2020/icons/chevronleft/qius.solutions-parallel-ui-angular-icons-chevronleft.mjs +5 -0
  353. package/esm2020/icons/chevronright/chevronright.mjs +31 -0
  354. package/esm2020/icons/chevronright/public_api.mjs +2 -0
  355. package/esm2020/icons/chevronright/qius.solutions-parallel-ui-angular-icons-chevronright.mjs +5 -0
  356. package/esm2020/icons/chevronup/chevronup.mjs +31 -0
  357. package/esm2020/icons/chevronup/public_api.mjs +2 -0
  358. package/esm2020/icons/chevronup/qius.solutions-parallel-ui-angular-icons-chevronup.mjs +5 -0
  359. package/esm2020/icons/exclamationtriangle/exclamationtriangle.mjs +61 -0
  360. package/esm2020/icons/exclamationtriangle/public_api.mjs +2 -0
  361. package/esm2020/icons/exclamationtriangle/qius.solutions-parallel-ui-angular-icons-exclamationtriangle.mjs +5 -0
  362. package/esm2020/icons/eye/eye.mjs +35 -0
  363. package/esm2020/icons/eye/public_api.mjs +2 -0
  364. package/esm2020/icons/eye/qius.solutions-parallel-ui-angular-icons-eye.mjs +5 -0
  365. package/esm2020/icons/eyeslash/eyeslash.mjs +49 -0
  366. package/esm2020/icons/eyeslash/public_api.mjs +2 -0
  367. package/esm2020/icons/eyeslash/qius.solutions-parallel-ui-angular-icons-eyeslash.mjs +5 -0
  368. package/esm2020/icons/filter/filter.mjs +45 -0
  369. package/esm2020/icons/filter/public_api.mjs +2 -0
  370. package/esm2020/icons/filter/qius.solutions-parallel-ui-angular-icons-filter.mjs +5 -0
  371. package/esm2020/icons/filterslash/filterslash.mjs +49 -0
  372. package/esm2020/icons/filterslash/public_api.mjs +2 -0
  373. package/esm2020/icons/filterslash/qius.solutions-parallel-ui-angular-icons-filterslash.mjs +5 -0
  374. package/esm2020/icons/home/home.mjs +49 -0
  375. package/esm2020/icons/home/public_api.mjs +2 -0
  376. package/esm2020/icons/home/qius.solutions-parallel-ui-angular-icons-home.mjs +5 -0
  377. package/esm2020/icons/infocircle/infocircle.mjs +49 -0
  378. package/esm2020/icons/infocircle/public_api.mjs +2 -0
  379. package/esm2020/icons/infocircle/qius.solutions-parallel-ui-angular-icons-infocircle.mjs +5 -0
  380. package/esm2020/icons/minus/minus.mjs +32 -0
  381. package/esm2020/icons/minus/public_api.mjs +2 -0
  382. package/esm2020/icons/minus/qius.solutions-parallel-ui-angular-icons-minus.mjs +5 -0
  383. package/esm2020/icons/pencil/pencil.mjs +45 -0
  384. package/esm2020/icons/pencil/public_api.mjs +2 -0
  385. package/esm2020/icons/pencil/qius.solutions-parallel-ui-angular-icons-pencil.mjs +5 -0
  386. package/esm2020/icons/plus/plus.mjs +45 -0
  387. package/esm2020/icons/plus/public_api.mjs +2 -0
  388. package/esm2020/icons/plus/qius.solutions-parallel-ui-angular-icons-plus.mjs +5 -0
  389. package/esm2020/icons/refresh/public_api.mjs +2 -0
  390. package/esm2020/icons/refresh/qius.solutions-parallel-ui-angular-icons-refresh.mjs +5 -0
  391. package/esm2020/icons/refresh/refresh.mjs +49 -0
  392. package/esm2020/icons/search/public_api.mjs +2 -0
  393. package/esm2020/icons/search/qius.solutions-parallel-ui-angular-icons-search.mjs +5 -0
  394. package/esm2020/icons/search/search.mjs +49 -0
  395. package/esm2020/icons/searchminus/public_api.mjs +2 -0
  396. package/esm2020/icons/searchminus/qius.solutions-parallel-ui-angular-icons-searchminus.mjs +5 -0
  397. package/esm2020/icons/searchminus/searchminus.mjs +49 -0
  398. package/esm2020/icons/searchplus/public_api.mjs +2 -0
  399. package/esm2020/icons/searchplus/qius.solutions-parallel-ui-angular-icons-searchplus.mjs +5 -0
  400. package/esm2020/icons/searchplus/searchplus.mjs +49 -0
  401. package/esm2020/icons/sortalt/public_api.mjs +2 -0
  402. package/esm2020/icons/sortalt/qius.solutions-parallel-ui-angular-icons-sortalt.mjs +5 -0
  403. package/esm2020/icons/sortalt/sortalt.mjs +57 -0
  404. package/esm2020/icons/sortamountdown/public_api.mjs +2 -0
  405. package/esm2020/icons/sortamountdown/qius.solutions-parallel-ui-angular-icons-sortamountdown.mjs +5 -0
  406. package/esm2020/icons/sortamountdown/sortamountdown.mjs +85 -0
  407. package/esm2020/icons/sortamountupalt/public_api.mjs +2 -0
  408. package/esm2020/icons/sortamountupalt/qius.solutions-parallel-ui-angular-icons-sortamountupalt.mjs +5 -0
  409. package/esm2020/icons/sortamountupalt/sortamountupalt.mjs +85 -0
  410. package/esm2020/icons/spinner/public_api.mjs +2 -0
  411. package/esm2020/icons/spinner/qius.solutions-parallel-ui-angular-icons-spinner.mjs +5 -0
  412. package/esm2020/icons/spinner/spinner.mjs +45 -0
  413. package/esm2020/icons/star/public_api.mjs +2 -0
  414. package/esm2020/icons/star/qius.solutions-parallel-ui-angular-icons-star.mjs +5 -0
  415. package/esm2020/icons/star/star.mjs +45 -0
  416. package/esm2020/icons/starfill/public_api.mjs +2 -0
  417. package/esm2020/icons/starfill/qius.solutions-parallel-ui-angular-icons-starfill.mjs +5 -0
  418. package/esm2020/icons/starfill/starfill.mjs +45 -0
  419. package/esm2020/icons/thlarge/public_api.mjs +2 -0
  420. package/esm2020/icons/thlarge/qius.solutions-parallel-ui-angular-icons-thlarge.mjs +5 -0
  421. package/esm2020/icons/thlarge/thlarge.mjs +49 -0
  422. package/esm2020/icons/times/public_api.mjs +2 -0
  423. package/esm2020/icons/times/qius.solutions-parallel-ui-angular-icons-times.mjs +5 -0
  424. package/esm2020/icons/times/times.mjs +31 -0
  425. package/esm2020/icons/timescircle/public_api.mjs +2 -0
  426. package/esm2020/icons/timescircle/qius.solutions-parallel-ui-angular-icons-timescircle.mjs +5 -0
  427. package/esm2020/icons/timescircle/timescircle.mjs +49 -0
  428. package/esm2020/icons/trash/public_api.mjs +2 -0
  429. package/esm2020/icons/trash/qius.solutions-parallel-ui-angular-icons-trash.mjs +5 -0
  430. package/esm2020/icons/trash/trash.mjs +49 -0
  431. package/esm2020/icons/undo/public_api.mjs +2 -0
  432. package/esm2020/icons/undo/qius.solutions-parallel-ui-angular-icons-undo.mjs +5 -0
  433. package/esm2020/icons/undo/undo.mjs +49 -0
  434. package/esm2020/icons/upload/public_api.mjs +2 -0
  435. package/esm2020/icons/upload/qius.solutions-parallel-ui-angular-icons-upload.mjs +5 -0
  436. package/esm2020/icons/upload/upload.mjs +49 -0
  437. package/esm2020/icons/windowmaximize/public_api.mjs +2 -0
  438. package/esm2020/icons/windowmaximize/qius.solutions-parallel-ui-angular-icons-windowmaximize.mjs +5 -0
  439. package/esm2020/icons/windowmaximize/windowmaximize.mjs +49 -0
  440. package/esm2020/icons/windowminimize/public_api.mjs +2 -0
  441. package/esm2020/icons/windowminimize/qius.solutions-parallel-ui-angular-icons-windowminimize.mjs +5 -0
  442. package/esm2020/icons/windowminimize/windowminimize.mjs +49 -0
  443. package/esm2020/image/image.mjs +321 -0
  444. package/esm2020/image/public_api.mjs +2 -0
  445. package/esm2020/image/qius.solutions-parallel-ui-angular-image.mjs +5 -0
  446. package/esm2020/inplace/inplace.mjs +168 -0
  447. package/esm2020/inplace/public_api.mjs +2 -0
  448. package/esm2020/inplace/qius.solutions-parallel-ui-angular-inplace.mjs +5 -0
  449. package/esm2020/inputmask/inputmask.mjs +697 -0
  450. package/esm2020/inputmask/public_api.mjs +2 -0
  451. package/esm2020/inputmask/qius.solutions-parallel-ui-angular-inputmask.mjs +5 -0
  452. package/esm2020/inputnumber/inputnumber.mjs +1189 -0
  453. package/esm2020/inputnumber/public_api.mjs +2 -0
  454. package/esm2020/inputnumber/qius.solutions-parallel-ui-angular-inputnumber.mjs +5 -0
  455. package/esm2020/inputswitch/inputswitch.mjs +160 -0
  456. package/esm2020/inputswitch/public_api.mjs +2 -0
  457. package/esm2020/inputswitch/qius.solutions-parallel-ui-angular-inputswitch.mjs +5 -0
  458. package/esm2020/inputtext/inputtext.mjs +55 -0
  459. package/esm2020/inputtext/public_api.mjs +2 -0
  460. package/esm2020/inputtext/qius.solutions-parallel-ui-angular-inputtext.mjs +5 -0
  461. package/esm2020/inputtextarea/inputtextarea.mjs +117 -0
  462. package/esm2020/inputtextarea/public_api.mjs +2 -0
  463. package/esm2020/inputtextarea/qius.solutions-parallel-ui-angular-inputtextarea.mjs +5 -0
  464. package/esm2020/keyfilter/keyfilter.mjs +214 -0
  465. package/esm2020/keyfilter/public_api.mjs +2 -0
  466. package/esm2020/keyfilter/qius.solutions-parallel-ui-angular-keyfilter.mjs +5 -0
  467. package/esm2020/knob/knob.mjs +283 -0
  468. package/esm2020/knob/public_api.mjs +2 -0
  469. package/esm2020/knob/qius.solutions-parallel-ui-angular-knob.mjs +5 -0
  470. package/esm2020/listbox/listbox.mjs +800 -0
  471. package/esm2020/listbox/public_api.mjs +2 -0
  472. package/esm2020/listbox/qius.solutions-parallel-ui-angular-listbox.mjs +5 -0
  473. package/esm2020/megamenu/megamenu.mjs +464 -0
  474. package/esm2020/megamenu/public_api.mjs +2 -0
  475. package/esm2020/megamenu/qius.solutions-parallel-ui-angular-megamenu.mjs +5 -0
  476. package/esm2020/menu/menu.mjs +548 -0
  477. package/esm2020/menu/public_api.mjs +2 -0
  478. package/esm2020/menu/qius.solutions-parallel-ui-angular-menu.mjs +5 -0
  479. package/esm2020/menubar/menubar.mjs +515 -0
  480. package/esm2020/menubar/public_api.mjs +2 -0
  481. package/esm2020/menubar/qius.solutions-parallel-ui-angular-menubar.mjs +5 -0
  482. package/esm2020/message/message.mjs +103 -0
  483. package/esm2020/message/public_api.mjs +2 -0
  484. package/esm2020/message/qius.solutions-parallel-ui-angular-message.mjs +5 -0
  485. package/esm2020/messages/messages.mjs +272 -0
  486. package/esm2020/messages/public_api.mjs +2 -0
  487. package/esm2020/messages/qius.solutions-parallel-ui-angular-messages.mjs +5 -0
  488. package/esm2020/multiselect/multiselect.mjs +1411 -0
  489. package/esm2020/multiselect/public_api.mjs +2 -0
  490. package/esm2020/multiselect/qius.solutions-parallel-ui-angular-multiselect.mjs +5 -0
  491. package/esm2020/orderlist/orderlist.mjs +621 -0
  492. package/esm2020/orderlist/public_api.mjs +2 -0
  493. package/esm2020/orderlist/qius.solutions-parallel-ui-angular-orderlist.mjs +5 -0
  494. package/esm2020/organizationchart/organizationchart.mjs +319 -0
  495. package/esm2020/organizationchart/public_api.mjs +2 -0
  496. package/esm2020/organizationchart/qius.solutions-parallel-ui-angular-organizationchart.mjs +5 -0
  497. package/esm2020/overlay/overlay.mjs +520 -0
  498. package/esm2020/overlay/public_api.mjs +2 -0
  499. package/esm2020/overlay/qius.solutions-parallel-ui-angular-overlay.mjs +5 -0
  500. package/esm2020/overlaypanel/overlaypanel.mjs +410 -0
  501. package/esm2020/overlaypanel/public_api.mjs +2 -0
  502. package/esm2020/overlaypanel/qius.solutions-parallel-ui-angular-overlaypanel.mjs +5 -0
  503. package/esm2020/paginator/paginator.mjs +405 -0
  504. package/esm2020/paginator/public_api.mjs +2 -0
  505. package/esm2020/paginator/qius.solutions-parallel-ui-angular-paginator.mjs +5 -0
  506. package/esm2020/panel/panel.mjs +296 -0
  507. package/esm2020/panel/public_api.mjs +2 -0
  508. package/esm2020/panel/qius.solutions-parallel-ui-angular-panel.mjs +5 -0
  509. package/esm2020/panelmenu/panelmenu.mjs +518 -0
  510. package/esm2020/panelmenu/public_api.mjs +2 -0
  511. package/esm2020/panelmenu/qius.solutions-parallel-ui-angular-panelmenu.mjs +5 -0
  512. package/esm2020/password/password.mjs +782 -0
  513. package/esm2020/password/public_api.mjs +2 -0
  514. package/esm2020/password/qius.solutions-parallel-ui-angular-password.mjs +5 -0
  515. package/esm2020/picklist/picklist.mjs +1268 -0
  516. package/esm2020/picklist/public_api.mjs +2 -0
  517. package/esm2020/picklist/qius.solutions-parallel-ui-angular-picklist.mjs +5 -0
  518. package/esm2020/progressbar/progressbar.mjs +81 -0
  519. package/esm2020/progressbar/public_api.mjs +2 -0
  520. package/esm2020/progressbar/qius.solutions-parallel-ui-angular-progressbar.mjs +5 -0
  521. package/esm2020/progressspinner/progressspinner.mjs +55 -0
  522. package/esm2020/progressspinner/public_api.mjs +2 -0
  523. package/esm2020/progressspinner/qius.solutions-parallel-ui-angular-progressspinner.mjs +5 -0
  524. package/esm2020/public_api.mjs +2 -0
  525. package/esm2020/qius.solutions-parallel-ui-angular.mjs +5 -0
  526. package/esm2020/radiobutton/public_api.mjs +2 -0
  527. package/esm2020/radiobutton/qius.solutions-parallel-ui-angular-radiobutton.mjs +5 -0
  528. package/esm2020/radiobutton/radiobutton.mjs +254 -0
  529. package/esm2020/rating/public_api.mjs +2 -0
  530. package/esm2020/rating/qius.solutions-parallel-ui-angular-rating.mjs +5 -0
  531. package/esm2020/rating/rating.mjs +199 -0
  532. package/esm2020/ripple/public_api.mjs +2 -0
  533. package/esm2020/ripple/qius.solutions-parallel-ui-angular-ripple.mjs +5 -0
  534. package/esm2020/ripple/ripple.mjs +126 -0
  535. package/esm2020/scroller/public_api.mjs +2 -0
  536. package/esm2020/scroller/qius.solutions-parallel-ui-angular-scroller.mjs +5 -0
  537. package/esm2020/scroller/scroller.mjs +928 -0
  538. package/esm2020/scrollpanel/public_api.mjs +2 -0
  539. package/esm2020/scrollpanel/qius.solutions-parallel-ui-angular-scrollpanel.mjs +5 -0
  540. package/esm2020/scrollpanel/scrollpanel.mjs +272 -0
  541. package/esm2020/scrolltop/public_api.mjs +2 -0
  542. package/esm2020/scrolltop/qius.solutions-parallel-ui-angular-scrolltop.mjs +5 -0
  543. package/esm2020/scrolltop/scrolltop.mjs +221 -0
  544. package/esm2020/selectbutton/public_api.mjs +2 -0
  545. package/esm2020/selectbutton/qius.solutions-parallel-ui-angular-selectbutton.mjs +5 -0
  546. package/esm2020/selectbutton/selectbutton.mjs +209 -0
  547. package/esm2020/sidebar/public_api.mjs +2 -0
  548. package/esm2020/sidebar/qius.solutions-parallel-ui-angular-sidebar.mjs +5 -0
  549. package/esm2020/sidebar/sidebar.mjs +369 -0
  550. package/esm2020/skeleton/public_api.mjs +2 -0
  551. package/esm2020/skeleton/qius.solutions-parallel-ui-angular-skeleton.mjs +5 -0
  552. package/esm2020/skeleton/skeleton.mjs +65 -0
  553. package/esm2020/slidemenu/public_api.mjs +2 -0
  554. package/esm2020/slidemenu/qius.solutions-parallel-ui-angular-slidemenu.mjs +5 -0
  555. package/esm2020/slidemenu/slidemenu.mjs +616 -0
  556. package/esm2020/slider/public_api.mjs +2 -0
  557. package/esm2020/slider/qius.solutions-parallel-ui-angular-slider.mjs +5 -0
  558. package/esm2020/slider/slider.mjs +588 -0
  559. package/esm2020/speeddial/public_api.mjs +2 -0
  560. package/esm2020/speeddial/qius.solutions-parallel-ui-angular-speeddial.mjs +5 -0
  561. package/esm2020/speeddial/speeddial.mjs +402 -0
  562. package/esm2020/spinner/public_api.mjs +2 -0
  563. package/esm2020/spinner/qius.solutions-parallel-ui-angular-spinner.mjs +5 -0
  564. package/esm2020/spinner/spinner.mjs +407 -0
  565. package/esm2020/splitbutton/public_api.mjs +2 -0
  566. package/esm2020/splitbutton/qius.solutions-parallel-ui-angular-splitbutton.mjs +5 -0
  567. package/esm2020/splitbutton/splitbutton.mjs +141 -0
  568. package/esm2020/splitter/public_api.mjs +2 -0
  569. package/esm2020/splitter/qius.solutions-parallel-ui-angular-splitter.mjs +5 -0
  570. package/esm2020/splitter/splitter.mjs +355 -0
  571. package/esm2020/steps/public_api.mjs +2 -0
  572. package/esm2020/steps/qius.solutions-parallel-ui-angular-steps.mjs +5 -0
  573. package/esm2020/steps/steps.mjs +205 -0
  574. package/esm2020/styleclass/public_api.mjs +2 -0
  575. package/esm2020/styleclass/qius.solutions-parallel-ui-angular-styleclass.mjs +5 -0
  576. package/esm2020/styleclass/styleclass.mjs +220 -0
  577. package/esm2020/table/public_api.mjs +2 -0
  578. package/esm2020/table/qius.solutions-parallel-ui-angular-table.mjs +5 -0
  579. package/esm2020/table/table.mjs +5314 -0
  580. package/esm2020/tabmenu/public_api.mjs +2 -0
  581. package/esm2020/tabmenu/qius.solutions-parallel-ui-angular-tabmenu.mjs +5 -0
  582. package/esm2020/tabmenu/tabmenu.mjs +374 -0
  583. package/esm2020/tabview/public_api.mjs +2 -0
  584. package/esm2020/tabview/qius.solutions-parallel-ui-angular-tabview.mjs +5 -0
  585. package/esm2020/tabview/tabview.mjs +527 -0
  586. package/esm2020/tag/public_api.mjs +2 -0
  587. package/esm2020/tag/qius.solutions-parallel-ui-angular-tag.mjs +5 -0
  588. package/esm2020/tag/tag.mjs +86 -0
  589. package/esm2020/terminal/public_api.mjs +3 -0
  590. package/esm2020/terminal/qius.solutions-parallel-ui-angular-terminal.mjs +5 -0
  591. package/esm2020/terminal/terminal.mjs +112 -0
  592. package/esm2020/terminal/terminalservice.mjs +27 -0
  593. package/esm2020/tieredmenu/public_api.mjs +2 -0
  594. package/esm2020/tieredmenu/qius.solutions-parallel-ui-angular-tieredmenu.mjs +5 -0
  595. package/esm2020/tieredmenu/tieredmenu.mjs +663 -0
  596. package/esm2020/timeline/public_api.mjs +2 -0
  597. package/esm2020/timeline/qius.solutions-parallel-ui-angular-timeline.mjs +5 -0
  598. package/esm2020/timeline/timeline.mjs +131 -0
  599. package/esm2020/toast/public_api.mjs +2 -0
  600. package/esm2020/toast/qius.solutions-parallel-ui-angular-toast.mjs +5 -0
  601. package/esm2020/toast/toast.mjs +443 -0
  602. package/esm2020/togglebutton/public_api.mjs +2 -0
  603. package/esm2020/togglebutton/qius.solutions-parallel-ui-angular-togglebutton.mjs +5 -0
  604. package/esm2020/togglebutton/togglebutton.mjs +133 -0
  605. package/esm2020/toolbar/public_api.mjs +2 -0
  606. package/esm2020/toolbar/qius.solutions-parallel-ui-angular-toolbar.mjs +5 -0
  607. package/esm2020/toolbar/toolbar.mjs +83 -0
  608. package/esm2020/tooltip/public_api.mjs +2 -0
  609. package/esm2020/tooltip/qius.solutions-parallel-ui-angular-tooltip.mjs +5 -0
  610. package/esm2020/tooltip/tooltip.mjs +546 -0
  611. package/esm2020/tree/public_api.mjs +2 -0
  612. package/esm2020/tree/qius.solutions-parallel-ui-angular-tree.mjs +5 -0
  613. package/esm2020/tree/tree.mjs +1584 -0
  614. package/esm2020/treeselect/public_api.mjs +2 -0
  615. package/esm2020/treeselect/qius.solutions-parallel-ui-angular-treeselect.mjs +5 -0
  616. package/esm2020/treeselect/treeselect.mjs +778 -0
  617. package/esm2020/treetable/public_api.mjs +2 -0
  618. package/esm2020/treetable/qius.solutions-parallel-ui-angular-treetable.mjs +5 -0
  619. package/esm2020/treetable/treetable.mjs +3217 -0
  620. package/esm2020/tristatecheckbox/public_api.mjs +2 -0
  621. package/esm2020/tristatecheckbox/qius.solutions-parallel-ui-angular-tristatecheckbox.mjs +5 -0
  622. package/esm2020/tristatecheckbox/tristatecheckbox.mjs +223 -0
  623. package/esm2020/utils/objectutils.mjs +198 -0
  624. package/esm2020/utils/public_api.mjs +5 -0
  625. package/esm2020/utils/qius.solutions-parallel-ui-angular-utils.mjs +5 -0
  626. package/esm2020/utils/uniquecomponentid.mjs +7 -0
  627. package/esm2020/utils/zindexutils.mjs +35 -0
  628. package/esm2020/virtualscroller/public_api.mjs +2 -0
  629. package/esm2020/virtualscroller/qius.solutions-parallel-ui-angular-virtualscroller.mjs +5 -0
  630. package/esm2020/virtualscroller/virtualscroller.mjs +153 -0
  631. package/fesm2015/qius.solutions-parallel-ui-angular-accordion.mjs +405 -0
  632. package/fesm2015/qius.solutions-parallel-ui-angular-accordion.mjs.map +1 -0
  633. package/fesm2015/qius.solutions-parallel-ui-angular-animate.mjs +86 -0
  634. package/fesm2015/qius.solutions-parallel-ui-angular-animate.mjs.map +1 -0
  635. package/fesm2015/qius.solutions-parallel-ui-angular-api.mjs +817 -0
  636. package/fesm2015/qius.solutions-parallel-ui-angular-api.mjs.map +1 -0
  637. package/fesm2015/qius.solutions-parallel-ui-angular-autocomplete.mjs +1154 -0
  638. package/fesm2015/qius.solutions-parallel-ui-angular-autocomplete.mjs.map +1 -0
  639. package/fesm2015/qius.solutions-parallel-ui-angular-autofocus.mjs +58 -0
  640. package/fesm2015/qius.solutions-parallel-ui-angular-autofocus.mjs.map +1 -0
  641. package/fesm2015/qius.solutions-parallel-ui-angular-avatar.mjs +82 -0
  642. package/fesm2015/qius.solutions-parallel-ui-angular-avatar.mjs.map +1 -0
  643. package/fesm2015/qius.solutions-parallel-ui-angular-avatargroup.mjs +47 -0
  644. package/fesm2015/qius.solutions-parallel-ui-angular-avatargroup.mjs.map +1 -0
  645. package/fesm2015/qius.solutions-parallel-ui-angular-badge.mjs +191 -0
  646. package/fesm2015/qius.solutions-parallel-ui-angular-badge.mjs.map +1 -0
  647. package/fesm2015/qius.solutions-parallel-ui-angular-baseicon.mjs +48 -0
  648. package/fesm2015/qius.solutions-parallel-ui-angular-baseicon.mjs.map +1 -0
  649. package/fesm2015/qius.solutions-parallel-ui-angular-blockui.mjs +149 -0
  650. package/fesm2015/qius.solutions-parallel-ui-angular-blockui.mjs.map +1 -0
  651. package/fesm2015/qius.solutions-parallel-ui-angular-breadcrumb.mjs +303 -0
  652. package/fesm2015/qius.solutions-parallel-ui-angular-breadcrumb.mjs.map +1 -0
  653. package/fesm2015/qius.solutions-parallel-ui-angular-button.mjs +371 -0
  654. package/fesm2015/qius.solutions-parallel-ui-angular-button.mjs.map +1 -0
  655. package/fesm2015/qius.solutions-parallel-ui-angular-calendar.mjs +3133 -0
  656. package/fesm2015/qius.solutions-parallel-ui-angular-calendar.mjs.map +1 -0
  657. package/fesm2015/qius.solutions-parallel-ui-angular-card.mjs +133 -0
  658. package/fesm2015/qius.solutions-parallel-ui-angular-card.mjs.map +1 -0
  659. package/fesm2015/qius.solutions-parallel-ui-angular-carousel.mjs +706 -0
  660. package/fesm2015/qius.solutions-parallel-ui-angular-carousel.mjs.map +1 -0
  661. package/fesm2015/qius.solutions-parallel-ui-angular-cascadeselect.mjs +776 -0
  662. package/fesm2015/qius.solutions-parallel-ui-angular-cascadeselect.mjs.map +1 -0
  663. package/fesm2015/qius.solutions-parallel-ui-angular-chart.mjs +151 -0
  664. package/fesm2015/qius.solutions-parallel-ui-angular-chart.mjs.map +1 -0
  665. package/fesm2015/qius.solutions-parallel-ui-angular-checkbox.mjs +254 -0
  666. package/fesm2015/qius.solutions-parallel-ui-angular-checkbox.mjs.map +1 -0
  667. package/fesm2015/qius.solutions-parallel-ui-angular-chip.mjs +120 -0
  668. package/fesm2015/qius.solutions-parallel-ui-angular-chip.mjs.map +1 -0
  669. package/fesm2015/qius.solutions-parallel-ui-angular-chips.mjs +384 -0
  670. package/fesm2015/qius.solutions-parallel-ui-angular-chips.mjs.map +1 -0
  671. package/fesm2015/qius.solutions-parallel-ui-angular-colorpicker.mjs +694 -0
  672. package/fesm2015/qius.solutions-parallel-ui-angular-colorpicker.mjs.map +1 -0
  673. package/fesm2015/qius.solutions-parallel-ui-angular-confirmdialog.mjs +615 -0
  674. package/fesm2015/qius.solutions-parallel-ui-angular-confirmdialog.mjs.map +1 -0
  675. package/fesm2015/qius.solutions-parallel-ui-angular-confirmpopup.mjs +403 -0
  676. package/fesm2015/qius.solutions-parallel-ui-angular-confirmpopup.mjs.map +1 -0
  677. package/fesm2015/qius.solutions-parallel-ui-angular-contextmenu.mjs +702 -0
  678. package/fesm2015/qius.solutions-parallel-ui-angular-contextmenu.mjs.map +1 -0
  679. package/fesm2015/qius.solutions-parallel-ui-angular-dataview.mjs +519 -0
  680. package/fesm2015/qius.solutions-parallel-ui-angular-dataview.mjs.map +1 -0
  681. package/fesm2015/qius.solutions-parallel-ui-angular-defer.mjs +101 -0
  682. package/fesm2015/qius.solutions-parallel-ui-angular-defer.mjs.map +1 -0
  683. package/fesm2015/qius.solutions-parallel-ui-angular-dialog.mjs +842 -0
  684. package/fesm2015/qius.solutions-parallel-ui-angular-dialog.mjs.map +1 -0
  685. package/fesm2015/qius.solutions-parallel-ui-angular-divider.mjs +76 -0
  686. package/fesm2015/qius.solutions-parallel-ui-angular-divider.mjs.map +1 -0
  687. package/fesm2015/qius.solutions-parallel-ui-angular-dock.mjs +217 -0
  688. package/fesm2015/qius.solutions-parallel-ui-angular-dock.mjs.map +1 -0
  689. package/fesm2015/qius.solutions-parallel-ui-angular-dom.mjs +632 -0
  690. package/fesm2015/qius.solutions-parallel-ui-angular-dom.mjs.map +1 -0
  691. package/fesm2015/qius.solutions-parallel-ui-angular-dragdrop.mjs +258 -0
  692. package/fesm2015/qius.solutions-parallel-ui-angular-dragdrop.mjs.map +1 -0
  693. package/fesm2015/qius.solutions-parallel-ui-angular-dropdown.mjs +1379 -0
  694. package/fesm2015/qius.solutions-parallel-ui-angular-dropdown.mjs.map +1 -0
  695. package/fesm2015/qius.solutions-parallel-ui-angular-dynamicdialog.mjs +698 -0
  696. package/fesm2015/qius.solutions-parallel-ui-angular-dynamicdialog.mjs.map +1 -0
  697. package/fesm2015/qius.solutions-parallel-ui-angular-editor.mjs +317 -0
  698. package/fesm2015/qius.solutions-parallel-ui-angular-editor.mjs.map +1 -0
  699. package/fesm2015/qius.solutions-parallel-ui-angular-fieldset.mjs +221 -0
  700. package/fesm2015/qius.solutions-parallel-ui-angular-fieldset.mjs.map +1 -0
  701. package/fesm2015/qius.solutions-parallel-ui-angular-fileupload.mjs +764 -0
  702. package/fesm2015/qius.solutions-parallel-ui-angular-fileupload.mjs.map +1 -0
  703. package/fesm2015/qius.solutions-parallel-ui-angular-focustrap.mjs +60 -0
  704. package/fesm2015/qius.solutions-parallel-ui-angular-focustrap.mjs.map +1 -0
  705. package/fesm2015/qius.solutions-parallel-ui-angular-galleria.mjs +1199 -0
  706. package/fesm2015/qius.solutions-parallel-ui-angular-galleria.mjs.map +1 -0
  707. package/fesm2015/qius.solutions-parallel-ui-angular-icons-angledoubledown.mjs +42 -0
  708. package/fesm2015/qius.solutions-parallel-ui-angular-icons-angledoubledown.mjs.map +1 -0
  709. package/fesm2015/qius.solutions-parallel-ui-angular-icons-angledoubleleft.mjs +42 -0
  710. package/fesm2015/qius.solutions-parallel-ui-angular-icons-angledoubleleft.mjs.map +1 -0
  711. package/fesm2015/qius.solutions-parallel-ui-angular-icons-angledoubleright.mjs +42 -0
  712. package/fesm2015/qius.solutions-parallel-ui-angular-icons-angledoubleright.mjs.map +1 -0
  713. package/fesm2015/qius.solutions-parallel-ui-angular-icons-angledoubleup.mjs +42 -0
  714. package/fesm2015/qius.solutions-parallel-ui-angular-icons-angledoubleup.mjs.map +1 -0
  715. package/fesm2015/qius.solutions-parallel-ui-angular-icons-angledown.mjs +38 -0
  716. package/fesm2015/qius.solutions-parallel-ui-angular-icons-angledown.mjs.map +1 -0
  717. package/fesm2015/qius.solutions-parallel-ui-angular-icons-angleleft.mjs +38 -0
  718. package/fesm2015/qius.solutions-parallel-ui-angular-icons-angleleft.mjs.map +1 -0
  719. package/fesm2015/qius.solutions-parallel-ui-angular-icons-angleright.mjs +38 -0
  720. package/fesm2015/qius.solutions-parallel-ui-angular-icons-angleright.mjs.map +1 -0
  721. package/fesm2015/qius.solutions-parallel-ui-angular-icons-angleup.mjs +38 -0
  722. package/fesm2015/qius.solutions-parallel-ui-angular-icons-angleup.mjs.map +1 -0
  723. package/fesm2015/qius.solutions-parallel-ui-angular-icons-arrowdown.mjs +56 -0
  724. package/fesm2015/qius.solutions-parallel-ui-angular-icons-arrowdown.mjs.map +1 -0
  725. package/fesm2015/qius.solutions-parallel-ui-angular-icons-arrowdownleft.mjs +38 -0
  726. package/fesm2015/qius.solutions-parallel-ui-angular-icons-arrowdownleft.mjs.map +1 -0
  727. package/fesm2015/qius.solutions-parallel-ui-angular-icons-arrowdownright.mjs +38 -0
  728. package/fesm2015/qius.solutions-parallel-ui-angular-icons-arrowdownright.mjs.map +1 -0
  729. package/fesm2015/qius.solutions-parallel-ui-angular-icons-arrowleft.mjs +56 -0
  730. package/fesm2015/qius.solutions-parallel-ui-angular-icons-arrowleft.mjs.map +1 -0
  731. package/fesm2015/qius.solutions-parallel-ui-angular-icons-arrowright.mjs +42 -0
  732. package/fesm2015/qius.solutions-parallel-ui-angular-icons-arrowright.mjs.map +1 -0
  733. package/fesm2015/qius.solutions-parallel-ui-angular-icons-arrowup.mjs +56 -0
  734. package/fesm2015/qius.solutions-parallel-ui-angular-icons-arrowup.mjs.map +1 -0
  735. package/fesm2015/qius.solutions-parallel-ui-angular-icons-ban.mjs +52 -0
  736. package/fesm2015/qius.solutions-parallel-ui-angular-icons-ban.mjs.map +1 -0
  737. package/fesm2015/qius.solutions-parallel-ui-angular-icons-bars.mjs +42 -0
  738. package/fesm2015/qius.solutions-parallel-ui-angular-icons-bars.mjs.map +1 -0
  739. package/fesm2015/qius.solutions-parallel-ui-angular-icons-calendar.mjs +38 -0
  740. package/fesm2015/qius.solutions-parallel-ui-angular-icons-calendar.mjs.map +1 -0
  741. package/fesm2015/qius.solutions-parallel-ui-angular-icons-caretleft.mjs +38 -0
  742. package/fesm2015/qius.solutions-parallel-ui-angular-icons-caretleft.mjs.map +1 -0
  743. package/fesm2015/qius.solutions-parallel-ui-angular-icons-caretright.mjs +38 -0
  744. package/fesm2015/qius.solutions-parallel-ui-angular-icons-caretright.mjs.map +1 -0
  745. package/fesm2015/qius.solutions-parallel-ui-angular-icons-check.mjs +38 -0
  746. package/fesm2015/qius.solutions-parallel-ui-angular-icons-check.mjs.map +1 -0
  747. package/fesm2015/qius.solutions-parallel-ui-angular-icons-chevrondown.mjs +38 -0
  748. package/fesm2015/qius.solutions-parallel-ui-angular-icons-chevrondown.mjs.map +1 -0
  749. package/fesm2015/qius.solutions-parallel-ui-angular-icons-chevronleft.mjs +38 -0
  750. package/fesm2015/qius.solutions-parallel-ui-angular-icons-chevronleft.mjs.map +1 -0
  751. package/fesm2015/qius.solutions-parallel-ui-angular-icons-chevronright.mjs +38 -0
  752. package/fesm2015/qius.solutions-parallel-ui-angular-icons-chevronright.mjs.map +1 -0
  753. package/fesm2015/qius.solutions-parallel-ui-angular-icons-chevronup.mjs +38 -0
  754. package/fesm2015/qius.solutions-parallel-ui-angular-icons-chevronup.mjs.map +1 -0
  755. package/fesm2015/qius.solutions-parallel-ui-angular-icons-exclamationtriangle.mjs +68 -0
  756. package/fesm2015/qius.solutions-parallel-ui-angular-icons-exclamationtriangle.mjs.map +1 -0
  757. package/fesm2015/qius.solutions-parallel-ui-angular-icons-eye.mjs +42 -0
  758. package/fesm2015/qius.solutions-parallel-ui-angular-icons-eye.mjs.map +1 -0
  759. package/fesm2015/qius.solutions-parallel-ui-angular-icons-eyeslash.mjs +56 -0
  760. package/fesm2015/qius.solutions-parallel-ui-angular-icons-eyeslash.mjs.map +1 -0
  761. package/fesm2015/qius.solutions-parallel-ui-angular-icons-filter.mjs +52 -0
  762. package/fesm2015/qius.solutions-parallel-ui-angular-icons-filter.mjs.map +1 -0
  763. package/fesm2015/qius.solutions-parallel-ui-angular-icons-filterslash.mjs +56 -0
  764. package/fesm2015/qius.solutions-parallel-ui-angular-icons-filterslash.mjs.map +1 -0
  765. package/fesm2015/qius.solutions-parallel-ui-angular-icons-home.mjs +56 -0
  766. package/fesm2015/qius.solutions-parallel-ui-angular-icons-home.mjs.map +1 -0
  767. package/fesm2015/qius.solutions-parallel-ui-angular-icons-infocircle.mjs +56 -0
  768. package/fesm2015/qius.solutions-parallel-ui-angular-icons-infocircle.mjs.map +1 -0
  769. package/fesm2015/qius.solutions-parallel-ui-angular-icons-minus.mjs +39 -0
  770. package/fesm2015/qius.solutions-parallel-ui-angular-icons-minus.mjs.map +1 -0
  771. package/fesm2015/qius.solutions-parallel-ui-angular-icons-pencil.mjs +52 -0
  772. package/fesm2015/qius.solutions-parallel-ui-angular-icons-pencil.mjs.map +1 -0
  773. package/fesm2015/qius.solutions-parallel-ui-angular-icons-plus.mjs +52 -0
  774. package/fesm2015/qius.solutions-parallel-ui-angular-icons-plus.mjs.map +1 -0
  775. package/fesm2015/qius.solutions-parallel-ui-angular-icons-refresh.mjs +56 -0
  776. package/fesm2015/qius.solutions-parallel-ui-angular-icons-refresh.mjs.map +1 -0
  777. package/fesm2015/qius.solutions-parallel-ui-angular-icons-search.mjs +56 -0
  778. package/fesm2015/qius.solutions-parallel-ui-angular-icons-search.mjs.map +1 -0
  779. package/fesm2015/qius.solutions-parallel-ui-angular-icons-searchminus.mjs +56 -0
  780. package/fesm2015/qius.solutions-parallel-ui-angular-icons-searchminus.mjs.map +1 -0
  781. package/fesm2015/qius.solutions-parallel-ui-angular-icons-searchplus.mjs +56 -0
  782. package/fesm2015/qius.solutions-parallel-ui-angular-icons-searchplus.mjs.map +1 -0
  783. package/fesm2015/qius.solutions-parallel-ui-angular-icons-sortalt.mjs +64 -0
  784. package/fesm2015/qius.solutions-parallel-ui-angular-icons-sortalt.mjs.map +1 -0
  785. package/fesm2015/qius.solutions-parallel-ui-angular-icons-sortamountdown.mjs +92 -0
  786. package/fesm2015/qius.solutions-parallel-ui-angular-icons-sortamountdown.mjs.map +1 -0
  787. package/fesm2015/qius.solutions-parallel-ui-angular-icons-sortamountupalt.mjs +92 -0
  788. package/fesm2015/qius.solutions-parallel-ui-angular-icons-sortamountupalt.mjs.map +1 -0
  789. package/fesm2015/qius.solutions-parallel-ui-angular-icons-spinner.mjs +52 -0
  790. package/fesm2015/qius.solutions-parallel-ui-angular-icons-spinner.mjs.map +1 -0
  791. package/fesm2015/qius.solutions-parallel-ui-angular-icons-star.mjs +52 -0
  792. package/fesm2015/qius.solutions-parallel-ui-angular-icons-star.mjs.map +1 -0
  793. package/fesm2015/qius.solutions-parallel-ui-angular-icons-starfill.mjs +52 -0
  794. package/fesm2015/qius.solutions-parallel-ui-angular-icons-starfill.mjs.map +1 -0
  795. package/fesm2015/qius.solutions-parallel-ui-angular-icons-thlarge.mjs +56 -0
  796. package/fesm2015/qius.solutions-parallel-ui-angular-icons-thlarge.mjs.map +1 -0
  797. package/fesm2015/qius.solutions-parallel-ui-angular-icons-times.mjs +38 -0
  798. package/fesm2015/qius.solutions-parallel-ui-angular-icons-times.mjs.map +1 -0
  799. package/fesm2015/qius.solutions-parallel-ui-angular-icons-timescircle.mjs +56 -0
  800. package/fesm2015/qius.solutions-parallel-ui-angular-icons-timescircle.mjs.map +1 -0
  801. package/fesm2015/qius.solutions-parallel-ui-angular-icons-trash.mjs +56 -0
  802. package/fesm2015/qius.solutions-parallel-ui-angular-icons-trash.mjs.map +1 -0
  803. package/fesm2015/qius.solutions-parallel-ui-angular-icons-undo.mjs +56 -0
  804. package/fesm2015/qius.solutions-parallel-ui-angular-icons-undo.mjs.map +1 -0
  805. package/fesm2015/qius.solutions-parallel-ui-angular-icons-upload.mjs +56 -0
  806. package/fesm2015/qius.solutions-parallel-ui-angular-icons-upload.mjs.map +1 -0
  807. package/fesm2015/qius.solutions-parallel-ui-angular-icons-windowmaximize.mjs +56 -0
  808. package/fesm2015/qius.solutions-parallel-ui-angular-icons-windowmaximize.mjs.map +1 -0
  809. package/fesm2015/qius.solutions-parallel-ui-angular-icons-windowminimize.mjs +56 -0
  810. package/fesm2015/qius.solutions-parallel-ui-angular-icons-windowminimize.mjs.map +1 -0
  811. package/fesm2015/qius.solutions-parallel-ui-angular-image.mjs +330 -0
  812. package/fesm2015/qius.solutions-parallel-ui-angular-image.mjs.map +1 -0
  813. package/fesm2015/qius.solutions-parallel-ui-angular-inplace.mjs +175 -0
  814. package/fesm2015/qius.solutions-parallel-ui-angular-inplace.mjs.map +1 -0
  815. package/fesm2015/qius.solutions-parallel-ui-angular-inputmask.mjs +706 -0
  816. package/fesm2015/qius.solutions-parallel-ui-angular-inputmask.mjs.map +1 -0
  817. package/fesm2015/qius.solutions-parallel-ui-angular-inputnumber.mjs +1198 -0
  818. package/fesm2015/qius.solutions-parallel-ui-angular-inputnumber.mjs.map +1 -0
  819. package/fesm2015/qius.solutions-parallel-ui-angular-inputswitch.mjs +167 -0
  820. package/fesm2015/qius.solutions-parallel-ui-angular-inputswitch.mjs.map +1 -0
  821. package/fesm2015/qius.solutions-parallel-ui-angular-inputtext.mjs +64 -0
  822. package/fesm2015/qius.solutions-parallel-ui-angular-inputtext.mjs.map +1 -0
  823. package/fesm2015/qius.solutions-parallel-ui-angular-inputtextarea.mjs +126 -0
  824. package/fesm2015/qius.solutions-parallel-ui-angular-inputtextarea.mjs.map +1 -0
  825. package/fesm2015/qius.solutions-parallel-ui-angular-keyfilter.mjs +223 -0
  826. package/fesm2015/qius.solutions-parallel-ui-angular-keyfilter.mjs.map +1 -0
  827. package/fesm2015/qius.solutions-parallel-ui-angular-knob.mjs +292 -0
  828. package/fesm2015/qius.solutions-parallel-ui-angular-knob.mjs.map +1 -0
  829. package/fesm2015/qius.solutions-parallel-ui-angular-listbox.mjs +807 -0
  830. package/fesm2015/qius.solutions-parallel-ui-angular-listbox.mjs.map +1 -0
  831. package/fesm2015/qius.solutions-parallel-ui-angular-megamenu.mjs +473 -0
  832. package/fesm2015/qius.solutions-parallel-ui-angular-megamenu.mjs.map +1 -0
  833. package/fesm2015/qius.solutions-parallel-ui-angular-menu.mjs +559 -0
  834. package/fesm2015/qius.solutions-parallel-ui-angular-menu.mjs.map +1 -0
  835. package/fesm2015/qius.solutions-parallel-ui-angular-menubar.mjs +526 -0
  836. package/fesm2015/qius.solutions-parallel-ui-angular-menubar.mjs.map +1 -0
  837. package/fesm2015/qius.solutions-parallel-ui-angular-message.mjs +110 -0
  838. package/fesm2015/qius.solutions-parallel-ui-angular-message.mjs.map +1 -0
  839. package/fesm2015/qius.solutions-parallel-ui-angular-messages.mjs +283 -0
  840. package/fesm2015/qius.solutions-parallel-ui-angular-messages.mjs.map +1 -0
  841. package/fesm2015/qius.solutions-parallel-ui-angular-multiselect.mjs +1421 -0
  842. package/fesm2015/qius.solutions-parallel-ui-angular-multiselect.mjs.map +1 -0
  843. package/fesm2015/qius.solutions-parallel-ui-angular-orderlist.mjs +630 -0
  844. package/fesm2015/qius.solutions-parallel-ui-angular-orderlist.mjs.map +1 -0
  845. package/fesm2015/qius.solutions-parallel-ui-angular-organizationchart.mjs +327 -0
  846. package/fesm2015/qius.solutions-parallel-ui-angular-organizationchart.mjs.map +1 -0
  847. package/fesm2015/qius.solutions-parallel-ui-angular-overlay.mjs +554 -0
  848. package/fesm2015/qius.solutions-parallel-ui-angular-overlay.mjs.map +1 -0
  849. package/fesm2015/qius.solutions-parallel-ui-angular-overlaypanel.mjs +419 -0
  850. package/fesm2015/qius.solutions-parallel-ui-angular-overlaypanel.mjs.map +1 -0
  851. package/fesm2015/qius.solutions-parallel-ui-angular-paginator.mjs +411 -0
  852. package/fesm2015/qius.solutions-parallel-ui-angular-paginator.mjs.map +1 -0
  853. package/fesm2015/qius.solutions-parallel-ui-angular-panel.mjs +303 -0
  854. package/fesm2015/qius.solutions-parallel-ui-angular-panel.mjs.map +1 -0
  855. package/fesm2015/qius.solutions-parallel-ui-angular-panelmenu.mjs +525 -0
  856. package/fesm2015/qius.solutions-parallel-ui-angular-panelmenu.mjs.map +1 -0
  857. package/fesm2015/qius.solutions-parallel-ui-angular-password.mjs +793 -0
  858. package/fesm2015/qius.solutions-parallel-ui-angular-password.mjs.map +1 -0
  859. package/fesm2015/qius.solutions-parallel-ui-angular-picklist.mjs +1277 -0
  860. package/fesm2015/qius.solutions-parallel-ui-angular-picklist.mjs.map +1 -0
  861. package/fesm2015/qius.solutions-parallel-ui-angular-progressbar.mjs +88 -0
  862. package/fesm2015/qius.solutions-parallel-ui-angular-progressbar.mjs.map +1 -0
  863. package/fesm2015/qius.solutions-parallel-ui-angular-progressspinner.mjs +62 -0
  864. package/fesm2015/qius.solutions-parallel-ui-angular-progressspinner.mjs.map +1 -0
  865. package/fesm2015/qius.solutions-parallel-ui-angular-radiobutton.mjs +261 -0
  866. package/fesm2015/qius.solutions-parallel-ui-angular-radiobutton.mjs.map +1 -0
  867. package/fesm2015/qius.solutions-parallel-ui-angular-rating.mjs +206 -0
  868. package/fesm2015/qius.solutions-parallel-ui-angular-rating.mjs.map +1 -0
  869. package/fesm2015/qius.solutions-parallel-ui-angular-ripple.mjs +135 -0
  870. package/fesm2015/qius.solutions-parallel-ui-angular-ripple.mjs.map +1 -0
  871. package/fesm2015/qius.solutions-parallel-ui-angular-scroller.mjs +938 -0
  872. package/fesm2015/qius.solutions-parallel-ui-angular-scroller.mjs.map +1 -0
  873. package/fesm2015/qius.solutions-parallel-ui-angular-scrollpanel.mjs +281 -0
  874. package/fesm2015/qius.solutions-parallel-ui-angular-scrollpanel.mjs.map +1 -0
  875. package/fesm2015/qius.solutions-parallel-ui-angular-scrolltop.mjs +230 -0
  876. package/fesm2015/qius.solutions-parallel-ui-angular-scrolltop.mjs.map +1 -0
  877. package/fesm2015/qius.solutions-parallel-ui-angular-selectbutton.mjs +216 -0
  878. package/fesm2015/qius.solutions-parallel-ui-angular-selectbutton.mjs.map +1 -0
  879. package/fesm2015/qius.solutions-parallel-ui-angular-sidebar.mjs +378 -0
  880. package/fesm2015/qius.solutions-parallel-ui-angular-sidebar.mjs.map +1 -0
  881. package/fesm2015/qius.solutions-parallel-ui-angular-skeleton.mjs +72 -0
  882. package/fesm2015/qius.solutions-parallel-ui-angular-skeleton.mjs.map +1 -0
  883. package/fesm2015/qius.solutions-parallel-ui-angular-slidemenu.mjs +627 -0
  884. package/fesm2015/qius.solutions-parallel-ui-angular-slidemenu.mjs.map +1 -0
  885. package/fesm2015/qius.solutions-parallel-ui-angular-slider.mjs +597 -0
  886. package/fesm2015/qius.solutions-parallel-ui-angular-slider.mjs.map +1 -0
  887. package/fesm2015/qius.solutions-parallel-ui-angular-speeddial.mjs +408 -0
  888. package/fesm2015/qius.solutions-parallel-ui-angular-speeddial.mjs.map +1 -0
  889. package/fesm2015/qius.solutions-parallel-ui-angular-spinner.mjs +414 -0
  890. package/fesm2015/qius.solutions-parallel-ui-angular-spinner.mjs.map +1 -0
  891. package/fesm2015/qius.solutions-parallel-ui-angular-splitbutton.mjs +148 -0
  892. package/fesm2015/qius.solutions-parallel-ui-angular-splitbutton.mjs.map +1 -0
  893. package/fesm2015/qius.solutions-parallel-ui-angular-splitter.mjs +364 -0
  894. package/fesm2015/qius.solutions-parallel-ui-angular-splitter.mjs.map +1 -0
  895. package/fesm2015/qius.solutions-parallel-ui-angular-steps.mjs +212 -0
  896. package/fesm2015/qius.solutions-parallel-ui-angular-steps.mjs.map +1 -0
  897. package/fesm2015/qius.solutions-parallel-ui-angular-styleclass.mjs +227 -0
  898. package/fesm2015/qius.solutions-parallel-ui-angular-styleclass.mjs.map +1 -0
  899. package/fesm2015/qius.solutions-parallel-ui-angular-table.mjs +5329 -0
  900. package/fesm2015/qius.solutions-parallel-ui-angular-table.mjs.map +1 -0
  901. package/fesm2015/qius.solutions-parallel-ui-angular-tabmenu.mjs +385 -0
  902. package/fesm2015/qius.solutions-parallel-ui-angular-tabmenu.mjs.map +1 -0
  903. package/fesm2015/qius.solutions-parallel-ui-angular-tabview.mjs +539 -0
  904. package/fesm2015/qius.solutions-parallel-ui-angular-tabview.mjs.map +1 -0
  905. package/fesm2015/qius.solutions-parallel-ui-angular-tag.mjs +92 -0
  906. package/fesm2015/qius.solutions-parallel-ui-angular-tag.mjs.map +1 -0
  907. package/fesm2015/qius.solutions-parallel-ui-angular-terminal.mjs +143 -0
  908. package/fesm2015/qius.solutions-parallel-ui-angular-terminal.mjs.map +1 -0
  909. package/fesm2015/qius.solutions-parallel-ui-angular-tieredmenu.mjs +674 -0
  910. package/fesm2015/qius.solutions-parallel-ui-angular-tieredmenu.mjs.map +1 -0
  911. package/fesm2015/qius.solutions-parallel-ui-angular-timeline.mjs +138 -0
  912. package/fesm2015/qius.solutions-parallel-ui-angular-timeline.mjs.map +1 -0
  913. package/fesm2015/qius.solutions-parallel-ui-angular-toast.mjs +451 -0
  914. package/fesm2015/qius.solutions-parallel-ui-angular-toast.mjs.map +1 -0
  915. package/fesm2015/qius.solutions-parallel-ui-angular-togglebutton.mjs +140 -0
  916. package/fesm2015/qius.solutions-parallel-ui-angular-togglebutton.mjs.map +1 -0
  917. package/fesm2015/qius.solutions-parallel-ui-angular-toolbar.mjs +90 -0
  918. package/fesm2015/qius.solutions-parallel-ui-angular-toolbar.mjs.map +1 -0
  919. package/fesm2015/qius.solutions-parallel-ui-angular-tooltip.mjs +556 -0
  920. package/fesm2015/qius.solutions-parallel-ui-angular-tooltip.mjs.map +1 -0
  921. package/fesm2015/qius.solutions-parallel-ui-angular-tree.mjs +1596 -0
  922. package/fesm2015/qius.solutions-parallel-ui-angular-tree.mjs.map +1 -0
  923. package/fesm2015/qius.solutions-parallel-ui-angular-treeselect.mjs +791 -0
  924. package/fesm2015/qius.solutions-parallel-ui-angular-treeselect.mjs.map +1 -0
  925. package/fesm2015/qius.solutions-parallel-ui-angular-treetable.mjs +3228 -0
  926. package/fesm2015/qius.solutions-parallel-ui-angular-treetable.mjs.map +1 -0
  927. package/fesm2015/qius.solutions-parallel-ui-angular-tristatecheckbox.mjs +230 -0
  928. package/fesm2015/qius.solutions-parallel-ui-angular-tristatecheckbox.mjs.map +1 -0
  929. package/fesm2015/qius.solutions-parallel-ui-angular-utils.mjs +246 -0
  930. package/fesm2015/qius.solutions-parallel-ui-angular-utils.mjs.map +1 -0
  931. package/fesm2015/qius.solutions-parallel-ui-angular-virtualscroller.mjs +157 -0
  932. package/fesm2015/qius.solutions-parallel-ui-angular-virtualscroller.mjs.map +1 -0
  933. package/fesm2015/qius.solutions-parallel-ui-angular.mjs +6 -0
  934. package/fesm2015/qius.solutions-parallel-ui-angular.mjs.map +1 -0
  935. package/fesm2020/qius.solutions-parallel-ui-angular-accordion.mjs +403 -0
  936. package/fesm2020/qius.solutions-parallel-ui-angular-accordion.mjs.map +1 -0
  937. package/fesm2020/qius.solutions-parallel-ui-angular-animate.mjs +86 -0
  938. package/fesm2020/qius.solutions-parallel-ui-angular-animate.mjs.map +1 -0
  939. package/fesm2020/qius.solutions-parallel-ui-angular-api.mjs +817 -0
  940. package/fesm2020/qius.solutions-parallel-ui-angular-api.mjs.map +1 -0
  941. package/fesm2020/qius.solutions-parallel-ui-angular-autocomplete.mjs +1151 -0
  942. package/fesm2020/qius.solutions-parallel-ui-angular-autocomplete.mjs.map +1 -0
  943. package/fesm2020/qius.solutions-parallel-ui-angular-autofocus.mjs +58 -0
  944. package/fesm2020/qius.solutions-parallel-ui-angular-autofocus.mjs.map +1 -0
  945. package/fesm2020/qius.solutions-parallel-ui-angular-avatar.mjs +82 -0
  946. package/fesm2020/qius.solutions-parallel-ui-angular-avatar.mjs.map +1 -0
  947. package/fesm2020/qius.solutions-parallel-ui-angular-avatargroup.mjs +47 -0
  948. package/fesm2020/qius.solutions-parallel-ui-angular-avatargroup.mjs.map +1 -0
  949. package/fesm2020/qius.solutions-parallel-ui-angular-badge.mjs +189 -0
  950. package/fesm2020/qius.solutions-parallel-ui-angular-badge.mjs.map +1 -0
  951. package/fesm2020/qius.solutions-parallel-ui-angular-baseicon.mjs +48 -0
  952. package/fesm2020/qius.solutions-parallel-ui-angular-baseicon.mjs.map +1 -0
  953. package/fesm2020/qius.solutions-parallel-ui-angular-blockui.mjs +147 -0
  954. package/fesm2020/qius.solutions-parallel-ui-angular-blockui.mjs.map +1 -0
  955. package/fesm2020/qius.solutions-parallel-ui-angular-breadcrumb.mjs +303 -0
  956. package/fesm2020/qius.solutions-parallel-ui-angular-breadcrumb.mjs.map +1 -0
  957. package/fesm2020/qius.solutions-parallel-ui-angular-button.mjs +369 -0
  958. package/fesm2020/qius.solutions-parallel-ui-angular-button.mjs.map +1 -0
  959. package/fesm2020/qius.solutions-parallel-ui-angular-calendar.mjs +3130 -0
  960. package/fesm2020/qius.solutions-parallel-ui-angular-calendar.mjs.map +1 -0
  961. package/fesm2020/qius.solutions-parallel-ui-angular-card.mjs +133 -0
  962. package/fesm2020/qius.solutions-parallel-ui-angular-card.mjs.map +1 -0
  963. package/fesm2020/qius.solutions-parallel-ui-angular-carousel.mjs +703 -0
  964. package/fesm2020/qius.solutions-parallel-ui-angular-carousel.mjs.map +1 -0
  965. package/fesm2020/qius.solutions-parallel-ui-angular-cascadeselect.mjs +773 -0
  966. package/fesm2020/qius.solutions-parallel-ui-angular-cascadeselect.mjs.map +1 -0
  967. package/fesm2020/qius.solutions-parallel-ui-angular-chart.mjs +149 -0
  968. package/fesm2020/qius.solutions-parallel-ui-angular-chart.mjs.map +1 -0
  969. package/fesm2020/qius.solutions-parallel-ui-angular-checkbox.mjs +254 -0
  970. package/fesm2020/qius.solutions-parallel-ui-angular-checkbox.mjs.map +1 -0
  971. package/fesm2020/qius.solutions-parallel-ui-angular-chip.mjs +120 -0
  972. package/fesm2020/qius.solutions-parallel-ui-angular-chip.mjs.map +1 -0
  973. package/fesm2020/qius.solutions-parallel-ui-angular-chips.mjs +382 -0
  974. package/fesm2020/qius.solutions-parallel-ui-angular-chips.mjs.map +1 -0
  975. package/fesm2020/qius.solutions-parallel-ui-angular-colorpicker.mjs +692 -0
  976. package/fesm2020/qius.solutions-parallel-ui-angular-colorpicker.mjs.map +1 -0
  977. package/fesm2020/qius.solutions-parallel-ui-angular-confirmdialog.mjs +613 -0
  978. package/fesm2020/qius.solutions-parallel-ui-angular-confirmdialog.mjs.map +1 -0
  979. package/fesm2020/qius.solutions-parallel-ui-angular-confirmpopup.mjs +401 -0
  980. package/fesm2020/qius.solutions-parallel-ui-angular-confirmpopup.mjs.map +1 -0
  981. package/fesm2020/qius.solutions-parallel-ui-angular-contextmenu.mjs +698 -0
  982. package/fesm2020/qius.solutions-parallel-ui-angular-contextmenu.mjs.map +1 -0
  983. package/fesm2020/qius.solutions-parallel-ui-angular-dataview.mjs +519 -0
  984. package/fesm2020/qius.solutions-parallel-ui-angular-dataview.mjs.map +1 -0
  985. package/fesm2020/qius.solutions-parallel-ui-angular-defer.mjs +99 -0
  986. package/fesm2020/qius.solutions-parallel-ui-angular-defer.mjs.map +1 -0
  987. package/fesm2020/qius.solutions-parallel-ui-angular-dialog.mjs +840 -0
  988. package/fesm2020/qius.solutions-parallel-ui-angular-dialog.mjs.map +1 -0
  989. package/fesm2020/qius.solutions-parallel-ui-angular-divider.mjs +76 -0
  990. package/fesm2020/qius.solutions-parallel-ui-angular-divider.mjs.map +1 -0
  991. package/fesm2020/qius.solutions-parallel-ui-angular-dock.mjs +217 -0
  992. package/fesm2020/qius.solutions-parallel-ui-angular-dock.mjs.map +1 -0
  993. package/fesm2020/qius.solutions-parallel-ui-angular-dom.mjs +632 -0
  994. package/fesm2020/qius.solutions-parallel-ui-angular-dom.mjs.map +1 -0
  995. package/fesm2020/qius.solutions-parallel-ui-angular-dragdrop.mjs +258 -0
  996. package/fesm2020/qius.solutions-parallel-ui-angular-dragdrop.mjs.map +1 -0
  997. package/fesm2020/qius.solutions-parallel-ui-angular-dropdown.mjs +1379 -0
  998. package/fesm2020/qius.solutions-parallel-ui-angular-dropdown.mjs.map +1 -0
  999. package/fesm2020/qius.solutions-parallel-ui-angular-dynamicdialog.mjs +693 -0
  1000. package/fesm2020/qius.solutions-parallel-ui-angular-dynamicdialog.mjs.map +1 -0
  1001. package/fesm2020/qius.solutions-parallel-ui-angular-editor.mjs +316 -0
  1002. package/fesm2020/qius.solutions-parallel-ui-angular-editor.mjs.map +1 -0
  1003. package/fesm2020/qius.solutions-parallel-ui-angular-fieldset.mjs +221 -0
  1004. package/fesm2020/qius.solutions-parallel-ui-angular-fieldset.mjs.map +1 -0
  1005. package/fesm2020/qius.solutions-parallel-ui-angular-fileupload.mjs +761 -0
  1006. package/fesm2020/qius.solutions-parallel-ui-angular-fileupload.mjs.map +1 -0
  1007. package/fesm2020/qius.solutions-parallel-ui-angular-focustrap.mjs +59 -0
  1008. package/fesm2020/qius.solutions-parallel-ui-angular-focustrap.mjs.map +1 -0
  1009. package/fesm2020/qius.solutions-parallel-ui-angular-galleria.mjs +1194 -0
  1010. package/fesm2020/qius.solutions-parallel-ui-angular-galleria.mjs.map +1 -0
  1011. package/fesm2020/qius.solutions-parallel-ui-angular-icons-angledoubledown.mjs +42 -0
  1012. package/fesm2020/qius.solutions-parallel-ui-angular-icons-angledoubledown.mjs.map +1 -0
  1013. package/fesm2020/qius.solutions-parallel-ui-angular-icons-angledoubleleft.mjs +42 -0
  1014. package/fesm2020/qius.solutions-parallel-ui-angular-icons-angledoubleleft.mjs.map +1 -0
  1015. package/fesm2020/qius.solutions-parallel-ui-angular-icons-angledoubleright.mjs +42 -0
  1016. package/fesm2020/qius.solutions-parallel-ui-angular-icons-angledoubleright.mjs.map +1 -0
  1017. package/fesm2020/qius.solutions-parallel-ui-angular-icons-angledoubleup.mjs +42 -0
  1018. package/fesm2020/qius.solutions-parallel-ui-angular-icons-angledoubleup.mjs.map +1 -0
  1019. package/fesm2020/qius.solutions-parallel-ui-angular-icons-angledown.mjs +38 -0
  1020. package/fesm2020/qius.solutions-parallel-ui-angular-icons-angledown.mjs.map +1 -0
  1021. package/fesm2020/qius.solutions-parallel-ui-angular-icons-angleleft.mjs +38 -0
  1022. package/fesm2020/qius.solutions-parallel-ui-angular-icons-angleleft.mjs.map +1 -0
  1023. package/fesm2020/qius.solutions-parallel-ui-angular-icons-angleright.mjs +38 -0
  1024. package/fesm2020/qius.solutions-parallel-ui-angular-icons-angleright.mjs.map +1 -0
  1025. package/fesm2020/qius.solutions-parallel-ui-angular-icons-angleup.mjs +38 -0
  1026. package/fesm2020/qius.solutions-parallel-ui-angular-icons-angleup.mjs.map +1 -0
  1027. package/fesm2020/qius.solutions-parallel-ui-angular-icons-arrowdown.mjs +56 -0
  1028. package/fesm2020/qius.solutions-parallel-ui-angular-icons-arrowdown.mjs.map +1 -0
  1029. package/fesm2020/qius.solutions-parallel-ui-angular-icons-arrowdownleft.mjs +38 -0
  1030. package/fesm2020/qius.solutions-parallel-ui-angular-icons-arrowdownleft.mjs.map +1 -0
  1031. package/fesm2020/qius.solutions-parallel-ui-angular-icons-arrowdownright.mjs +38 -0
  1032. package/fesm2020/qius.solutions-parallel-ui-angular-icons-arrowdownright.mjs.map +1 -0
  1033. package/fesm2020/qius.solutions-parallel-ui-angular-icons-arrowleft.mjs +56 -0
  1034. package/fesm2020/qius.solutions-parallel-ui-angular-icons-arrowleft.mjs.map +1 -0
  1035. package/fesm2020/qius.solutions-parallel-ui-angular-icons-arrowright.mjs +42 -0
  1036. package/fesm2020/qius.solutions-parallel-ui-angular-icons-arrowright.mjs.map +1 -0
  1037. package/fesm2020/qius.solutions-parallel-ui-angular-icons-arrowup.mjs +56 -0
  1038. package/fesm2020/qius.solutions-parallel-ui-angular-icons-arrowup.mjs.map +1 -0
  1039. package/fesm2020/qius.solutions-parallel-ui-angular-icons-ban.mjs +52 -0
  1040. package/fesm2020/qius.solutions-parallel-ui-angular-icons-ban.mjs.map +1 -0
  1041. package/fesm2020/qius.solutions-parallel-ui-angular-icons-bars.mjs +42 -0
  1042. package/fesm2020/qius.solutions-parallel-ui-angular-icons-bars.mjs.map +1 -0
  1043. package/fesm2020/qius.solutions-parallel-ui-angular-icons-calendar.mjs +38 -0
  1044. package/fesm2020/qius.solutions-parallel-ui-angular-icons-calendar.mjs.map +1 -0
  1045. package/fesm2020/qius.solutions-parallel-ui-angular-icons-caretleft.mjs +38 -0
  1046. package/fesm2020/qius.solutions-parallel-ui-angular-icons-caretleft.mjs.map +1 -0
  1047. package/fesm2020/qius.solutions-parallel-ui-angular-icons-caretright.mjs +38 -0
  1048. package/fesm2020/qius.solutions-parallel-ui-angular-icons-caretright.mjs.map +1 -0
  1049. package/fesm2020/qius.solutions-parallel-ui-angular-icons-check.mjs +38 -0
  1050. package/fesm2020/qius.solutions-parallel-ui-angular-icons-check.mjs.map +1 -0
  1051. package/fesm2020/qius.solutions-parallel-ui-angular-icons-chevrondown.mjs +38 -0
  1052. package/fesm2020/qius.solutions-parallel-ui-angular-icons-chevrondown.mjs.map +1 -0
  1053. package/fesm2020/qius.solutions-parallel-ui-angular-icons-chevronleft.mjs +38 -0
  1054. package/fesm2020/qius.solutions-parallel-ui-angular-icons-chevronleft.mjs.map +1 -0
  1055. package/fesm2020/qius.solutions-parallel-ui-angular-icons-chevronright.mjs +38 -0
  1056. package/fesm2020/qius.solutions-parallel-ui-angular-icons-chevronright.mjs.map +1 -0
  1057. package/fesm2020/qius.solutions-parallel-ui-angular-icons-chevronup.mjs +38 -0
  1058. package/fesm2020/qius.solutions-parallel-ui-angular-icons-chevronup.mjs.map +1 -0
  1059. package/fesm2020/qius.solutions-parallel-ui-angular-icons-exclamationtriangle.mjs +68 -0
  1060. package/fesm2020/qius.solutions-parallel-ui-angular-icons-exclamationtriangle.mjs.map +1 -0
  1061. package/fesm2020/qius.solutions-parallel-ui-angular-icons-eye.mjs +42 -0
  1062. package/fesm2020/qius.solutions-parallel-ui-angular-icons-eye.mjs.map +1 -0
  1063. package/fesm2020/qius.solutions-parallel-ui-angular-icons-eyeslash.mjs +56 -0
  1064. package/fesm2020/qius.solutions-parallel-ui-angular-icons-eyeslash.mjs.map +1 -0
  1065. package/fesm2020/qius.solutions-parallel-ui-angular-icons-filter.mjs +52 -0
  1066. package/fesm2020/qius.solutions-parallel-ui-angular-icons-filter.mjs.map +1 -0
  1067. package/fesm2020/qius.solutions-parallel-ui-angular-icons-filterslash.mjs +56 -0
  1068. package/fesm2020/qius.solutions-parallel-ui-angular-icons-filterslash.mjs.map +1 -0
  1069. package/fesm2020/qius.solutions-parallel-ui-angular-icons-home.mjs +56 -0
  1070. package/fesm2020/qius.solutions-parallel-ui-angular-icons-home.mjs.map +1 -0
  1071. package/fesm2020/qius.solutions-parallel-ui-angular-icons-infocircle.mjs +56 -0
  1072. package/fesm2020/qius.solutions-parallel-ui-angular-icons-infocircle.mjs.map +1 -0
  1073. package/fesm2020/qius.solutions-parallel-ui-angular-icons-minus.mjs +39 -0
  1074. package/fesm2020/qius.solutions-parallel-ui-angular-icons-minus.mjs.map +1 -0
  1075. package/fesm2020/qius.solutions-parallel-ui-angular-icons-pencil.mjs +52 -0
  1076. package/fesm2020/qius.solutions-parallel-ui-angular-icons-pencil.mjs.map +1 -0
  1077. package/fesm2020/qius.solutions-parallel-ui-angular-icons-plus.mjs +52 -0
  1078. package/fesm2020/qius.solutions-parallel-ui-angular-icons-plus.mjs.map +1 -0
  1079. package/fesm2020/qius.solutions-parallel-ui-angular-icons-refresh.mjs +56 -0
  1080. package/fesm2020/qius.solutions-parallel-ui-angular-icons-refresh.mjs.map +1 -0
  1081. package/fesm2020/qius.solutions-parallel-ui-angular-icons-search.mjs +56 -0
  1082. package/fesm2020/qius.solutions-parallel-ui-angular-icons-search.mjs.map +1 -0
  1083. package/fesm2020/qius.solutions-parallel-ui-angular-icons-searchminus.mjs +56 -0
  1084. package/fesm2020/qius.solutions-parallel-ui-angular-icons-searchminus.mjs.map +1 -0
  1085. package/fesm2020/qius.solutions-parallel-ui-angular-icons-searchplus.mjs +56 -0
  1086. package/fesm2020/qius.solutions-parallel-ui-angular-icons-searchplus.mjs.map +1 -0
  1087. package/fesm2020/qius.solutions-parallel-ui-angular-icons-sortalt.mjs +64 -0
  1088. package/fesm2020/qius.solutions-parallel-ui-angular-icons-sortalt.mjs.map +1 -0
  1089. package/fesm2020/qius.solutions-parallel-ui-angular-icons-sortamountdown.mjs +92 -0
  1090. package/fesm2020/qius.solutions-parallel-ui-angular-icons-sortamountdown.mjs.map +1 -0
  1091. package/fesm2020/qius.solutions-parallel-ui-angular-icons-sortamountupalt.mjs +92 -0
  1092. package/fesm2020/qius.solutions-parallel-ui-angular-icons-sortamountupalt.mjs.map +1 -0
  1093. package/fesm2020/qius.solutions-parallel-ui-angular-icons-spinner.mjs +52 -0
  1094. package/fesm2020/qius.solutions-parallel-ui-angular-icons-spinner.mjs.map +1 -0
  1095. package/fesm2020/qius.solutions-parallel-ui-angular-icons-star.mjs +52 -0
  1096. package/fesm2020/qius.solutions-parallel-ui-angular-icons-star.mjs.map +1 -0
  1097. package/fesm2020/qius.solutions-parallel-ui-angular-icons-starfill.mjs +52 -0
  1098. package/fesm2020/qius.solutions-parallel-ui-angular-icons-starfill.mjs.map +1 -0
  1099. package/fesm2020/qius.solutions-parallel-ui-angular-icons-thlarge.mjs +56 -0
  1100. package/fesm2020/qius.solutions-parallel-ui-angular-icons-thlarge.mjs.map +1 -0
  1101. package/fesm2020/qius.solutions-parallel-ui-angular-icons-times.mjs +38 -0
  1102. package/fesm2020/qius.solutions-parallel-ui-angular-icons-times.mjs.map +1 -0
  1103. package/fesm2020/qius.solutions-parallel-ui-angular-icons-timescircle.mjs +56 -0
  1104. package/fesm2020/qius.solutions-parallel-ui-angular-icons-timescircle.mjs.map +1 -0
  1105. package/fesm2020/qius.solutions-parallel-ui-angular-icons-trash.mjs +56 -0
  1106. package/fesm2020/qius.solutions-parallel-ui-angular-icons-trash.mjs.map +1 -0
  1107. package/fesm2020/qius.solutions-parallel-ui-angular-icons-undo.mjs +56 -0
  1108. package/fesm2020/qius.solutions-parallel-ui-angular-icons-undo.mjs.map +1 -0
  1109. package/fesm2020/qius.solutions-parallel-ui-angular-icons-upload.mjs +56 -0
  1110. package/fesm2020/qius.solutions-parallel-ui-angular-icons-upload.mjs.map +1 -0
  1111. package/fesm2020/qius.solutions-parallel-ui-angular-icons-windowmaximize.mjs +56 -0
  1112. package/fesm2020/qius.solutions-parallel-ui-angular-icons-windowmaximize.mjs.map +1 -0
  1113. package/fesm2020/qius.solutions-parallel-ui-angular-icons-windowminimize.mjs +56 -0
  1114. package/fesm2020/qius.solutions-parallel-ui-angular-icons-windowminimize.mjs.map +1 -0
  1115. package/fesm2020/qius.solutions-parallel-ui-angular-image.mjs +328 -0
  1116. package/fesm2020/qius.solutions-parallel-ui-angular-image.mjs.map +1 -0
  1117. package/fesm2020/qius.solutions-parallel-ui-angular-inplace.mjs +175 -0
  1118. package/fesm2020/qius.solutions-parallel-ui-angular-inplace.mjs.map +1 -0
  1119. package/fesm2020/qius.solutions-parallel-ui-angular-inputmask.mjs +704 -0
  1120. package/fesm2020/qius.solutions-parallel-ui-angular-inputmask.mjs.map +1 -0
  1121. package/fesm2020/qius.solutions-parallel-ui-angular-inputnumber.mjs +1196 -0
  1122. package/fesm2020/qius.solutions-parallel-ui-angular-inputnumber.mjs.map +1 -0
  1123. package/fesm2020/qius.solutions-parallel-ui-angular-inputswitch.mjs +167 -0
  1124. package/fesm2020/qius.solutions-parallel-ui-angular-inputswitch.mjs.map +1 -0
  1125. package/fesm2020/qius.solutions-parallel-ui-angular-inputtext.mjs +62 -0
  1126. package/fesm2020/qius.solutions-parallel-ui-angular-inputtext.mjs.map +1 -0
  1127. package/fesm2020/qius.solutions-parallel-ui-angular-inputtextarea.mjs +124 -0
  1128. package/fesm2020/qius.solutions-parallel-ui-angular-inputtextarea.mjs.map +1 -0
  1129. package/fesm2020/qius.solutions-parallel-ui-angular-keyfilter.mjs +221 -0
  1130. package/fesm2020/qius.solutions-parallel-ui-angular-keyfilter.mjs.map +1 -0
  1131. package/fesm2020/qius.solutions-parallel-ui-angular-knob.mjs +290 -0
  1132. package/fesm2020/qius.solutions-parallel-ui-angular-knob.mjs.map +1 -0
  1133. package/fesm2020/qius.solutions-parallel-ui-angular-listbox.mjs +807 -0
  1134. package/fesm2020/qius.solutions-parallel-ui-angular-listbox.mjs.map +1 -0
  1135. package/fesm2020/qius.solutions-parallel-ui-angular-megamenu.mjs +471 -0
  1136. package/fesm2020/qius.solutions-parallel-ui-angular-megamenu.mjs.map +1 -0
  1137. package/fesm2020/qius.solutions-parallel-ui-angular-menu.mjs +555 -0
  1138. package/fesm2020/qius.solutions-parallel-ui-angular-menu.mjs.map +1 -0
  1139. package/fesm2020/qius.solutions-parallel-ui-angular-menubar.mjs +522 -0
  1140. package/fesm2020/qius.solutions-parallel-ui-angular-menubar.mjs.map +1 -0
  1141. package/fesm2020/qius.solutions-parallel-ui-angular-message.mjs +110 -0
  1142. package/fesm2020/qius.solutions-parallel-ui-angular-message.mjs.map +1 -0
  1143. package/fesm2020/qius.solutions-parallel-ui-angular-messages.mjs +279 -0
  1144. package/fesm2020/qius.solutions-parallel-ui-angular-messages.mjs.map +1 -0
  1145. package/fesm2020/qius.solutions-parallel-ui-angular-multiselect.mjs +1418 -0
  1146. package/fesm2020/qius.solutions-parallel-ui-angular-multiselect.mjs.map +1 -0
  1147. package/fesm2020/qius.solutions-parallel-ui-angular-orderlist.mjs +628 -0
  1148. package/fesm2020/qius.solutions-parallel-ui-angular-orderlist.mjs.map +1 -0
  1149. package/fesm2020/qius.solutions-parallel-ui-angular-organizationchart.mjs +325 -0
  1150. package/fesm2020/qius.solutions-parallel-ui-angular-organizationchart.mjs.map +1 -0
  1151. package/fesm2020/qius.solutions-parallel-ui-angular-overlay.mjs +527 -0
  1152. package/fesm2020/qius.solutions-parallel-ui-angular-overlay.mjs.map +1 -0
  1153. package/fesm2020/qius.solutions-parallel-ui-angular-overlaypanel.mjs +417 -0
  1154. package/fesm2020/qius.solutions-parallel-ui-angular-overlaypanel.mjs.map +1 -0
  1155. package/fesm2020/qius.solutions-parallel-ui-angular-paginator.mjs +411 -0
  1156. package/fesm2020/qius.solutions-parallel-ui-angular-paginator.mjs.map +1 -0
  1157. package/fesm2020/qius.solutions-parallel-ui-angular-panel.mjs +303 -0
  1158. package/fesm2020/qius.solutions-parallel-ui-angular-panel.mjs.map +1 -0
  1159. package/fesm2020/qius.solutions-parallel-ui-angular-panelmenu.mjs +525 -0
  1160. package/fesm2020/qius.solutions-parallel-ui-angular-panelmenu.mjs.map +1 -0
  1161. package/fesm2020/qius.solutions-parallel-ui-angular-password.mjs +789 -0
  1162. package/fesm2020/qius.solutions-parallel-ui-angular-password.mjs.map +1 -0
  1163. package/fesm2020/qius.solutions-parallel-ui-angular-picklist.mjs +1275 -0
  1164. package/fesm2020/qius.solutions-parallel-ui-angular-picklist.mjs.map +1 -0
  1165. package/fesm2020/qius.solutions-parallel-ui-angular-progressbar.mjs +88 -0
  1166. package/fesm2020/qius.solutions-parallel-ui-angular-progressbar.mjs.map +1 -0
  1167. package/fesm2020/qius.solutions-parallel-ui-angular-progressspinner.mjs +62 -0
  1168. package/fesm2020/qius.solutions-parallel-ui-angular-progressspinner.mjs.map +1 -0
  1169. package/fesm2020/qius.solutions-parallel-ui-angular-radiobutton.mjs +261 -0
  1170. package/fesm2020/qius.solutions-parallel-ui-angular-radiobutton.mjs.map +1 -0
  1171. package/fesm2020/qius.solutions-parallel-ui-angular-rating.mjs +206 -0
  1172. package/fesm2020/qius.solutions-parallel-ui-angular-rating.mjs.map +1 -0
  1173. package/fesm2020/qius.solutions-parallel-ui-angular-ripple.mjs +133 -0
  1174. package/fesm2020/qius.solutions-parallel-ui-angular-ripple.mjs.map +1 -0
  1175. package/fesm2020/qius.solutions-parallel-ui-angular-scroller.mjs +935 -0
  1176. package/fesm2020/qius.solutions-parallel-ui-angular-scroller.mjs.map +1 -0
  1177. package/fesm2020/qius.solutions-parallel-ui-angular-scrollpanel.mjs +279 -0
  1178. package/fesm2020/qius.solutions-parallel-ui-angular-scrollpanel.mjs.map +1 -0
  1179. package/fesm2020/qius.solutions-parallel-ui-angular-scrolltop.mjs +228 -0
  1180. package/fesm2020/qius.solutions-parallel-ui-angular-scrolltop.mjs.map +1 -0
  1181. package/fesm2020/qius.solutions-parallel-ui-angular-selectbutton.mjs +216 -0
  1182. package/fesm2020/qius.solutions-parallel-ui-angular-selectbutton.mjs.map +1 -0
  1183. package/fesm2020/qius.solutions-parallel-ui-angular-sidebar.mjs +376 -0
  1184. package/fesm2020/qius.solutions-parallel-ui-angular-sidebar.mjs.map +1 -0
  1185. package/fesm2020/qius.solutions-parallel-ui-angular-skeleton.mjs +72 -0
  1186. package/fesm2020/qius.solutions-parallel-ui-angular-skeleton.mjs.map +1 -0
  1187. package/fesm2020/qius.solutions-parallel-ui-angular-slidemenu.mjs +623 -0
  1188. package/fesm2020/qius.solutions-parallel-ui-angular-slidemenu.mjs.map +1 -0
  1189. package/fesm2020/qius.solutions-parallel-ui-angular-slider.mjs +595 -0
  1190. package/fesm2020/qius.solutions-parallel-ui-angular-slider.mjs.map +1 -0
  1191. package/fesm2020/qius.solutions-parallel-ui-angular-speeddial.mjs +409 -0
  1192. package/fesm2020/qius.solutions-parallel-ui-angular-speeddial.mjs.map +1 -0
  1193. package/fesm2020/qius.solutions-parallel-ui-angular-spinner.mjs +414 -0
  1194. package/fesm2020/qius.solutions-parallel-ui-angular-spinner.mjs.map +1 -0
  1195. package/fesm2020/qius.solutions-parallel-ui-angular-splitbutton.mjs +148 -0
  1196. package/fesm2020/qius.solutions-parallel-ui-angular-splitbutton.mjs.map +1 -0
  1197. package/fesm2020/qius.solutions-parallel-ui-angular-splitter.mjs +362 -0
  1198. package/fesm2020/qius.solutions-parallel-ui-angular-splitter.mjs.map +1 -0
  1199. package/fesm2020/qius.solutions-parallel-ui-angular-steps.mjs +212 -0
  1200. package/fesm2020/qius.solutions-parallel-ui-angular-steps.mjs.map +1 -0
  1201. package/fesm2020/qius.solutions-parallel-ui-angular-styleclass.mjs +227 -0
  1202. package/fesm2020/qius.solutions-parallel-ui-angular-styleclass.mjs.map +1 -0
  1203. package/fesm2020/qius.solutions-parallel-ui-angular-table.mjs +5321 -0
  1204. package/fesm2020/qius.solutions-parallel-ui-angular-table.mjs.map +1 -0
  1205. package/fesm2020/qius.solutions-parallel-ui-angular-tabmenu.mjs +381 -0
  1206. package/fesm2020/qius.solutions-parallel-ui-angular-tabmenu.mjs.map +1 -0
  1207. package/fesm2020/qius.solutions-parallel-ui-angular-tabview.mjs +534 -0
  1208. package/fesm2020/qius.solutions-parallel-ui-angular-tabview.mjs.map +1 -0
  1209. package/fesm2020/qius.solutions-parallel-ui-angular-tag.mjs +92 -0
  1210. package/fesm2020/qius.solutions-parallel-ui-angular-tag.mjs.map +1 -0
  1211. package/fesm2020/qius.solutions-parallel-ui-angular-terminal.mjs +143 -0
  1212. package/fesm2020/qius.solutions-parallel-ui-angular-terminal.mjs.map +1 -0
  1213. package/fesm2020/qius.solutions-parallel-ui-angular-tieredmenu.mjs +670 -0
  1214. package/fesm2020/qius.solutions-parallel-ui-angular-tieredmenu.mjs.map +1 -0
  1215. package/fesm2020/qius.solutions-parallel-ui-angular-timeline.mjs +138 -0
  1216. package/fesm2020/qius.solutions-parallel-ui-angular-timeline.mjs.map +1 -0
  1217. package/fesm2020/qius.solutions-parallel-ui-angular-toast.mjs +449 -0
  1218. package/fesm2020/qius.solutions-parallel-ui-angular-toast.mjs.map +1 -0
  1219. package/fesm2020/qius.solutions-parallel-ui-angular-togglebutton.mjs +140 -0
  1220. package/fesm2020/qius.solutions-parallel-ui-angular-togglebutton.mjs.map +1 -0
  1221. package/fesm2020/qius.solutions-parallel-ui-angular-toolbar.mjs +90 -0
  1222. package/fesm2020/qius.solutions-parallel-ui-angular-toolbar.mjs.map +1 -0
  1223. package/fesm2020/qius.solutions-parallel-ui-angular-tooltip.mjs +553 -0
  1224. package/fesm2020/qius.solutions-parallel-ui-angular-tooltip.mjs.map +1 -0
  1225. package/fesm2020/qius.solutions-parallel-ui-angular-tree.mjs +1591 -0
  1226. package/fesm2020/qius.solutions-parallel-ui-angular-tree.mjs.map +1 -0
  1227. package/fesm2020/qius.solutions-parallel-ui-angular-treeselect.mjs +785 -0
  1228. package/fesm2020/qius.solutions-parallel-ui-angular-treeselect.mjs.map +1 -0
  1229. package/fesm2020/qius.solutions-parallel-ui-angular-treetable.mjs +3224 -0
  1230. package/fesm2020/qius.solutions-parallel-ui-angular-treetable.mjs.map +1 -0
  1231. package/fesm2020/qius.solutions-parallel-ui-angular-tristatecheckbox.mjs +230 -0
  1232. package/fesm2020/qius.solutions-parallel-ui-angular-tristatecheckbox.mjs.map +1 -0
  1233. package/fesm2020/qius.solutions-parallel-ui-angular-utils.mjs +246 -0
  1234. package/fesm2020/qius.solutions-parallel-ui-angular-utils.mjs.map +1 -0
  1235. package/fesm2020/qius.solutions-parallel-ui-angular-virtualscroller.mjs +160 -0
  1236. package/fesm2020/qius.solutions-parallel-ui-angular-virtualscroller.mjs.map +1 -0
  1237. package/fesm2020/qius.solutions-parallel-ui-angular.mjs +6 -0
  1238. package/fesm2020/qius.solutions-parallel-ui-angular.mjs.map +1 -0
  1239. package/fieldset/fieldset.d.ts +41 -0
  1240. package/fieldset/index.d.ts +5 -0
  1241. package/fieldset/public_api.d.ts +1 -0
  1242. package/fileupload/fileupload.d.ts +139 -0
  1243. package/fileupload/index.d.ts +5 -0
  1244. package/fileupload/public_api.d.ts +1 -0
  1245. package/focustrap/focustrap.d.ts +16 -0
  1246. package/focustrap/index.d.ts +5 -0
  1247. package/focustrap/public_api.d.ts +1 -0
  1248. package/galleria/galleria.d.ts +218 -0
  1249. package/galleria/index.d.ts +5 -0
  1250. package/galleria/public_api.d.ts +1 -0
  1251. package/icons/angledoubledown/angledoubledown.d.ts +6 -0
  1252. package/icons/angledoubledown/index.d.ts +5 -0
  1253. package/icons/angledoubledown/public_api.d.ts +1 -0
  1254. package/icons/angledoubleleft/angledoubleleft.d.ts +6 -0
  1255. package/icons/angledoubleleft/index.d.ts +5 -0
  1256. package/icons/angledoubleleft/public_api.d.ts +1 -0
  1257. package/icons/angledoubleright/angledoubleright.d.ts +6 -0
  1258. package/icons/angledoubleright/index.d.ts +5 -0
  1259. package/icons/angledoubleright/public_api.d.ts +1 -0
  1260. package/icons/angledoubleup/angledoubleup.d.ts +6 -0
  1261. package/icons/angledoubleup/index.d.ts +5 -0
  1262. package/icons/angledoubleup/public_api.d.ts +1 -0
  1263. package/icons/angledown/angledown.d.ts +6 -0
  1264. package/icons/angledown/index.d.ts +5 -0
  1265. package/icons/angledown/public_api.d.ts +1 -0
  1266. package/icons/angleleft/angleleft.d.ts +6 -0
  1267. package/icons/angleleft/index.d.ts +5 -0
  1268. package/icons/angleleft/public_api.d.ts +1 -0
  1269. package/icons/angleright/angleright.d.ts +6 -0
  1270. package/icons/angleright/index.d.ts +5 -0
  1271. package/icons/angleright/public_api.d.ts +1 -0
  1272. package/icons/angleup/angleup.d.ts +6 -0
  1273. package/icons/angleup/index.d.ts +5 -0
  1274. package/icons/angleup/public_api.d.ts +1 -0
  1275. package/icons/arrowdown/arrowdown.d.ts +6 -0
  1276. package/icons/arrowdown/index.d.ts +5 -0
  1277. package/icons/arrowdown/public_api.d.ts +1 -0
  1278. package/icons/arrowdownleft/arrowdownleft.d.ts +6 -0
  1279. package/icons/arrowdownleft/index.d.ts +5 -0
  1280. package/icons/arrowdownleft/public_api.d.ts +1 -0
  1281. package/icons/arrowdownright/arrowdownright.d.ts +6 -0
  1282. package/icons/arrowdownright/index.d.ts +5 -0
  1283. package/icons/arrowdownright/public_api.d.ts +1 -0
  1284. package/icons/arrowleft/arrowleft.d.ts +6 -0
  1285. package/icons/arrowleft/index.d.ts +5 -0
  1286. package/icons/arrowleft/public_api.d.ts +1 -0
  1287. package/icons/arrowright/arrowright.d.ts +6 -0
  1288. package/icons/arrowright/index.d.ts +5 -0
  1289. package/icons/arrowright/public_api.d.ts +1 -0
  1290. package/icons/arrowup/arrowup.d.ts +6 -0
  1291. package/icons/arrowup/index.d.ts +5 -0
  1292. package/icons/arrowup/public_api.d.ts +1 -0
  1293. package/icons/ban/ban.d.ts +6 -0
  1294. package/icons/ban/index.d.ts +5 -0
  1295. package/icons/ban/public_api.d.ts +1 -0
  1296. package/icons/bars/bars.d.ts +6 -0
  1297. package/icons/bars/index.d.ts +5 -0
  1298. package/icons/bars/public_api.d.ts +1 -0
  1299. package/icons/calendar/calendar.d.ts +6 -0
  1300. package/icons/calendar/index.d.ts +5 -0
  1301. package/icons/calendar/public_api.d.ts +1 -0
  1302. package/icons/caretleft/caretleft.d.ts +6 -0
  1303. package/icons/caretleft/index.d.ts +5 -0
  1304. package/icons/caretleft/public_api.d.ts +1 -0
  1305. package/icons/caretright/caretright.d.ts +6 -0
  1306. package/icons/caretright/index.d.ts +5 -0
  1307. package/icons/caretright/public_api.d.ts +1 -0
  1308. package/icons/check/check.d.ts +6 -0
  1309. package/icons/check/index.d.ts +5 -0
  1310. package/icons/check/public_api.d.ts +1 -0
  1311. package/icons/chevrondown/chevrondown.d.ts +6 -0
  1312. package/icons/chevrondown/index.d.ts +5 -0
  1313. package/icons/chevrondown/public_api.d.ts +1 -0
  1314. package/icons/chevronleft/chevronleft.d.ts +6 -0
  1315. package/icons/chevronleft/index.d.ts +5 -0
  1316. package/icons/chevronleft/public_api.d.ts +1 -0
  1317. package/icons/chevronright/chevronright.d.ts +6 -0
  1318. package/icons/chevronright/index.d.ts +5 -0
  1319. package/icons/chevronright/public_api.d.ts +1 -0
  1320. package/icons/chevronup/chevronup.d.ts +6 -0
  1321. package/icons/chevronup/index.d.ts +5 -0
  1322. package/icons/chevronup/public_api.d.ts +1 -0
  1323. package/icons/exclamationtriangle/exclamationtriangle.d.ts +6 -0
  1324. package/icons/exclamationtriangle/index.d.ts +5 -0
  1325. package/icons/exclamationtriangle/public_api.d.ts +1 -0
  1326. package/icons/eye/eye.d.ts +6 -0
  1327. package/icons/eye/index.d.ts +5 -0
  1328. package/icons/eye/public_api.d.ts +1 -0
  1329. package/icons/eyeslash/eyeslash.d.ts +6 -0
  1330. package/icons/eyeslash/index.d.ts +5 -0
  1331. package/icons/eyeslash/public_api.d.ts +1 -0
  1332. package/icons/filter/filter.d.ts +6 -0
  1333. package/icons/filter/index.d.ts +5 -0
  1334. package/icons/filter/public_api.d.ts +1 -0
  1335. package/icons/filterslash/filterslash.d.ts +6 -0
  1336. package/icons/filterslash/index.d.ts +5 -0
  1337. package/icons/filterslash/public_api.d.ts +1 -0
  1338. package/icons/home/home.d.ts +6 -0
  1339. package/icons/home/index.d.ts +5 -0
  1340. package/icons/home/public_api.d.ts +1 -0
  1341. package/icons/infocircle/index.d.ts +5 -0
  1342. package/icons/infocircle/infocircle.d.ts +6 -0
  1343. package/icons/infocircle/public_api.d.ts +1 -0
  1344. package/icons/minus/index.d.ts +5 -0
  1345. package/icons/minus/minus.d.ts +6 -0
  1346. package/icons/minus/public_api.d.ts +1 -0
  1347. package/icons/pencil/index.d.ts +5 -0
  1348. package/icons/pencil/pencil.d.ts +6 -0
  1349. package/icons/pencil/public_api.d.ts +1 -0
  1350. package/icons/plus/index.d.ts +5 -0
  1351. package/icons/plus/plus.d.ts +6 -0
  1352. package/icons/plus/public_api.d.ts +1 -0
  1353. package/icons/refresh/index.d.ts +5 -0
  1354. package/icons/refresh/public_api.d.ts +1 -0
  1355. package/icons/refresh/refresh.d.ts +6 -0
  1356. package/icons/search/index.d.ts +5 -0
  1357. package/icons/search/public_api.d.ts +1 -0
  1358. package/icons/search/search.d.ts +6 -0
  1359. package/icons/searchminus/index.d.ts +5 -0
  1360. package/icons/searchminus/public_api.d.ts +1 -0
  1361. package/icons/searchminus/searchminus.d.ts +6 -0
  1362. package/icons/searchplus/index.d.ts +5 -0
  1363. package/icons/searchplus/public_api.d.ts +1 -0
  1364. package/icons/searchplus/searchplus.d.ts +6 -0
  1365. package/icons/sortalt/index.d.ts +5 -0
  1366. package/icons/sortalt/public_api.d.ts +1 -0
  1367. package/icons/sortalt/sortalt.d.ts +6 -0
  1368. package/icons/sortamountdown/index.d.ts +5 -0
  1369. package/icons/sortamountdown/public_api.d.ts +1 -0
  1370. package/icons/sortamountdown/sortamountdown.d.ts +6 -0
  1371. package/icons/sortamountupalt/index.d.ts +5 -0
  1372. package/icons/sortamountupalt/public_api.d.ts +1 -0
  1373. package/icons/sortamountupalt/sortamountupalt.d.ts +6 -0
  1374. package/icons/spinner/index.d.ts +5 -0
  1375. package/icons/spinner/public_api.d.ts +1 -0
  1376. package/icons/spinner/spinner.d.ts +6 -0
  1377. package/icons/star/index.d.ts +5 -0
  1378. package/icons/star/public_api.d.ts +1 -0
  1379. package/icons/star/star.d.ts +6 -0
  1380. package/icons/starfill/index.d.ts +5 -0
  1381. package/icons/starfill/public_api.d.ts +1 -0
  1382. package/icons/starfill/starfill.d.ts +6 -0
  1383. package/icons/thlarge/index.d.ts +5 -0
  1384. package/icons/thlarge/public_api.d.ts +1 -0
  1385. package/icons/thlarge/thlarge.d.ts +6 -0
  1386. package/icons/times/index.d.ts +5 -0
  1387. package/icons/times/public_api.d.ts +1 -0
  1388. package/icons/times/times.d.ts +6 -0
  1389. package/icons/timescircle/index.d.ts +5 -0
  1390. package/icons/timescircle/public_api.d.ts +1 -0
  1391. package/icons/timescircle/timescircle.d.ts +6 -0
  1392. package/icons/trash/index.d.ts +5 -0
  1393. package/icons/trash/public_api.d.ts +1 -0
  1394. package/icons/trash/trash.d.ts +6 -0
  1395. package/icons/undo/index.d.ts +5 -0
  1396. package/icons/undo/public_api.d.ts +1 -0
  1397. package/icons/undo/undo.d.ts +6 -0
  1398. package/icons/upload/index.d.ts +5 -0
  1399. package/icons/upload/public_api.d.ts +1 -0
  1400. package/icons/upload/upload.d.ts +6 -0
  1401. package/icons/windowmaximize/index.d.ts +5 -0
  1402. package/icons/windowmaximize/public_api.d.ts +1 -0
  1403. package/icons/windowmaximize/windowmaximize.d.ts +6 -0
  1404. package/icons/windowminimize/index.d.ts +5 -0
  1405. package/icons/windowminimize/public_api.d.ts +1 -0
  1406. package/icons/windowminimize/windowminimize.d.ts +6 -0
  1407. package/image/image.d.ts +81 -0
  1408. package/image/index.d.ts +5 -0
  1409. package/image/public_api.d.ts +1 -0
  1410. package/index.d.ts +5 -0
  1411. package/inplace/index.d.ts +5 -0
  1412. package/inplace/inplace.d.ts +45 -0
  1413. package/inplace/public_api.d.ts +1 -0
  1414. package/inputmask/index.d.ts +5 -0
  1415. package/inputmask/inputmask.d.ts +108 -0
  1416. package/inputmask/public_api.d.ts +1 -0
  1417. package/inputnumber/index.d.ts +5 -0
  1418. package/inputnumber/inputnumber.d.ts +177 -0
  1419. package/inputnumber/public_api.d.ts +1 -0
  1420. package/inputswitch/index.d.ts +5 -0
  1421. package/inputswitch/inputswitch.d.ts +47 -0
  1422. package/inputswitch/public_api.d.ts +1 -0
  1423. package/inputtext/index.d.ts +5 -0
  1424. package/inputtext/inputtext.d.ts +22 -0
  1425. package/inputtext/public_api.d.ts +1 -0
  1426. package/inputtextarea/index.d.ts +5 -0
  1427. package/inputtextarea/inputtextarea.d.ts +34 -0
  1428. package/inputtextarea/public_api.d.ts +1 -0
  1429. package/keyfilter/index.d.ts +5 -0
  1430. package/keyfilter/keyfilter.d.ts +39 -0
  1431. package/keyfilter/public_api.d.ts +1 -0
  1432. package/knob/index.d.ts +5 -0
  1433. package/knob/knob.d.ts +81 -0
  1434. package/knob/public_api.d.ts +1 -0
  1435. package/listbox/index.d.ts +5 -0
  1436. package/listbox/listbox.d.ts +125 -0
  1437. package/listbox/public_api.d.ts +1 -0
  1438. package/megamenu/index.d.ts +5 -0
  1439. package/megamenu/megamenu.d.ts +42 -0
  1440. package/megamenu/public_api.d.ts +1 -0
  1441. package/menu/index.d.ts +5 -0
  1442. package/menu/menu.d.ts +77 -0
  1443. package/menu/public_api.d.ts +1 -0
  1444. package/menubar/index.d.ts +5 -0
  1445. package/menubar/menubar.d.ts +97 -0
  1446. package/menubar/public_api.d.ts +1 -0
  1447. package/message/index.d.ts +5 -0
  1448. package/message/message.d.ts +21 -0
  1449. package/message/public_api.d.ts +1 -0
  1450. package/messages/index.d.ts +5 -0
  1451. package/messages/messages.d.ts +49 -0
  1452. package/messages/public_api.d.ts +1 -0
  1453. package/multiselect/index.d.ts +5 -0
  1454. package/multiselect/multiselect.d.ts +232 -0
  1455. package/multiselect/public_api.d.ts +1 -0
  1456. package/orderlist/index.d.ts +5 -0
  1457. package/orderlist/orderlist.d.ts +105 -0
  1458. package/orderlist/public_api.d.ts +1 -0
  1459. package/organizationchart/index.d.ts +5 -0
  1460. package/organizationchart/organizationchart.d.ts +63 -0
  1461. package/organizationchart/public_api.d.ts +1 -0
  1462. package/overlay/index.d.ts +5 -0
  1463. package/overlay/overlay.d.ts +118 -0
  1464. package/overlay/public_api.d.ts +1 -0
  1465. package/overlaypanel/index.d.ts +5 -0
  1466. package/overlaypanel/overlaypanel.d.ts +80 -0
  1467. package/overlaypanel/public_api.d.ts +1 -0
  1468. package/package.json +1267 -0
  1469. package/paginator/index.d.ts +5 -0
  1470. package/paginator/paginator.d.ts +79 -0
  1471. package/paginator/public_api.d.ts +1 -0
  1472. package/panel/index.d.ts +5 -0
  1473. package/panel/panel.d.ts +52 -0
  1474. package/panel/public_api.d.ts +1 -0
  1475. package/panelmenu/index.d.ts +5 -0
  1476. package/panelmenu/panelmenu.d.ts +66 -0
  1477. package/panelmenu/public_api.d.ts +1 -0
  1478. package/password/index.d.ts +5 -0
  1479. package/password/password.d.ts +168 -0
  1480. package/password/public_api.d.ts +1 -0
  1481. package/picklist/index.d.ts +5 -0
  1482. package/picklist/picklist.d.ts +183 -0
  1483. package/picklist/public_api.d.ts +1 -0
  1484. package/progressbar/index.d.ts +5 -0
  1485. package/progressbar/progressbar.d.ts +18 -0
  1486. package/progressbar/public_api.d.ts +1 -0
  1487. package/progressspinner/index.d.ts +5 -0
  1488. package/progressspinner/progressspinner.d.ts +16 -0
  1489. package/progressspinner/public_api.d.ts +1 -0
  1490. package/public_api.d.ts +2 -0
  1491. package/radiobutton/index.d.ts +5 -0
  1492. package/radiobutton/public_api.d.ts +1 -0
  1493. package/radiobutton/radiobutton.d.ts +62 -0
  1494. package/rating/index.d.ts +5 -0
  1495. package/rating/public_api.d.ts +1 -0
  1496. package/rating/rating.d.ts +52 -0
  1497. package/resources/components/accordion/accordion.css +33 -0
  1498. package/resources/components/autocomplete/autocomplete.css +100 -0
  1499. package/resources/components/avatar/avatar.css +26 -0
  1500. package/resources/components/avatargroup/avatargroup.css +8 -0
  1501. package/resources/components/badge/badge.css +32 -0
  1502. package/resources/components/blockui/blockui.css +24 -0
  1503. package/resources/components/breadcrumb/breadcrumb.css +25 -0
  1504. package/resources/components/button/button.css +69 -0
  1505. package/resources/components/calendar/calendar.css +171 -0
  1506. package/resources/components/card/card.css +3 -0
  1507. package/resources/components/carousel/carousel.css +69 -0
  1508. package/resources/components/cascadeselect/cascadeselect.css +96 -0
  1509. package/resources/components/checkbox/checkbox.css +28 -0
  1510. package/resources/components/chip/chip.css +24 -0
  1511. package/resources/components/chips/chips.css +66 -0
  1512. package/resources/components/colorpicker/colorpicker-images.css +7 -0
  1513. package/resources/components/colorpicker/colorpicker.css +81 -0
  1514. package/resources/components/colorpicker/images/color.png +0 -0
  1515. package/resources/components/colorpicker/images/hue.png +0 -0
  1516. package/resources/components/common/common.css +167 -0
  1517. package/resources/components/confirmpopup/confirmpopup.css +49 -0
  1518. package/resources/components/contextmenu/contextmenu.css +46 -0
  1519. package/resources/components/dataview/dataview.css +11 -0
  1520. package/resources/components/dialog/dialog.css +138 -0
  1521. package/resources/components/divider/divider.css +84 -0
  1522. package/resources/components/dock/dock.css +105 -0
  1523. package/resources/components/dropdown/dropdown.css +78 -0
  1524. package/resources/components/editor/editor.css +4 -0
  1525. package/resources/components/fieldset/fieldset.css +25 -0
  1526. package/resources/components/fileupload/fileupload.css +45 -0
  1527. package/resources/components/galleria/galleria.css +274 -0
  1528. package/resources/components/image/image.css +64 -0
  1529. package/resources/components/inplace/inplace.css +17 -0
  1530. package/resources/components/inputmask/inputmask.css +10 -0
  1531. package/resources/components/inputnumber/inputnumber.css +113 -0
  1532. package/resources/components/inputswitch/inputswitch.css +20 -0
  1533. package/resources/components/inputtext/inputtext.css +105 -0
  1534. package/resources/components/inputtextarea/inputtextarea.css +8 -0
  1535. package/resources/components/knob/knob.css +18 -0
  1536. package/resources/components/listbox/listbox.css +38 -0
  1537. package/resources/components/megamenu/megamenu.css +107 -0
  1538. package/resources/components/menu/menu.css +28 -0
  1539. package/resources/components/menubar/menubar.css +75 -0
  1540. package/resources/components/message/message.css +15 -0
  1541. package/resources/components/messages/messages.css +20 -0
  1542. package/resources/components/multiselect/multiselect.css +108 -0
  1543. package/resources/components/orderlist/orderlist.css +76 -0
  1544. package/resources/components/organizationchart/organizationchart.css +60 -0
  1545. package/resources/components/overlay/overlay.css +78 -0
  1546. package/resources/components/overlaypanel/overlaypanel.css +58 -0
  1547. package/resources/components/paginator/paginator.css +35 -0
  1548. package/resources/components/panel/panel.css +27 -0
  1549. package/resources/components/panelmenu/panelmenu.css +40 -0
  1550. package/resources/components/password/images/password-meter.png +0 -0
  1551. package/resources/components/password/password.css +44 -0
  1552. package/resources/components/picklist/picklist.css +58 -0
  1553. package/resources/components/progressbar/progressbar.css +96 -0
  1554. package/resources/components/progressspinner/progressspinner.css +72 -0
  1555. package/resources/components/radiobutton/radiobutton.css +36 -0
  1556. package/resources/components/rating/rating.css +11 -0
  1557. package/resources/components/ripple/ripple.css +27 -0
  1558. package/resources/components/scroller/scroller.css +56 -0
  1559. package/resources/components/scrollpanel/scrollpanel.css +48 -0
  1560. package/resources/components/scrolltop/scrolltop.css +16 -0
  1561. package/resources/components/sidebar/sidebar.css +104 -0
  1562. package/resources/components/skeleton/skeleton.css +33 -0
  1563. package/resources/components/slidemenu/slidemenu.css +99 -0
  1564. package/resources/components/slider/slider.css +39 -0
  1565. package/resources/components/speeddial/speeddial.css +110 -0
  1566. package/resources/components/spinner/spinner.css +61 -0
  1567. package/resources/components/splitbutton/splitbutton.css +31 -0
  1568. package/resources/components/splitter/splitter.css +62 -0
  1569. package/resources/components/steps/steps.css +47 -0
  1570. package/resources/components/table/table.css +242 -0
  1571. package/resources/components/tabmenu/tabmenu.css +78 -0
  1572. package/resources/components/tabview/tabview.css +73 -0
  1573. package/resources/components/tag/tag.css +15 -0
  1574. package/resources/components/terminal/terminal.css +22 -0
  1575. package/resources/components/tieredmenu/tieredmenu.css +49 -0
  1576. package/resources/components/timeline/timeline.css +110 -0
  1577. package/resources/components/toast/toast.css +68 -0
  1578. package/resources/components/toolbar/toolbar.css +17 -0
  1579. package/resources/components/tooltip/tooltip.css +61 -0
  1580. package/resources/components/tree/images/line.gif +0 -0
  1581. package/resources/components/tree/tree.css +156 -0
  1582. package/resources/components/treeselect/treeselect.css +95 -0
  1583. package/resources/components/treetable/treetable.css +203 -0
  1584. package/resources/images/color.png +0 -0
  1585. package/resources/images/hue.png +0 -0
  1586. package/resources/images/line.gif +0 -0
  1587. package/resources/images/password-meter.png +0 -0
  1588. package/resources/parallel-ui-angular.css +588 -0
  1589. package/resources/parallel-ui-angular.min.css +1 -0
  1590. package/resources/themes/arya-blue/theme.css +7757 -0
  1591. package/resources/themes/arya-green/theme.css +7757 -0
  1592. package/resources/themes/arya-orange/theme.css +7757 -0
  1593. package/resources/themes/arya-purple/theme.css +7757 -0
  1594. package/resources/themes/bootstrap4-dark-blue/theme.css +7763 -0
  1595. package/resources/themes/bootstrap4-dark-purple/theme.css +7763 -0
  1596. package/resources/themes/bootstrap4-light-blue/theme.css +7763 -0
  1597. package/resources/themes/bootstrap4-light-purple/theme.css +7763 -0
  1598. package/resources/themes/fluent-light/theme.css +7905 -0
  1599. package/resources/themes/lara-dark-blue/theme.css +7737 -0
  1600. package/resources/themes/lara-dark-indigo/theme.css +7737 -0
  1601. package/resources/themes/lara-dark-purple/theme.css +7737 -0
  1602. package/resources/themes/lara-dark-teal/theme.css +7737 -0
  1603. package/resources/themes/lara-light-blue/theme.css +7737 -0
  1604. package/resources/themes/lara-light-indigo/theme.css +7737 -0
  1605. package/resources/themes/lara-light-purple/theme.css +7737 -0
  1606. package/resources/themes/lara-light-teal/theme.css +7737 -0
  1607. package/resources/themes/luna-amber/theme.css +7686 -0
  1608. package/resources/themes/luna-blue/theme.css +7686 -0
  1609. package/resources/themes/luna-green/theme.css +7686 -0
  1610. package/resources/themes/luna-pink/theme.css +7686 -0
  1611. package/resources/themes/md-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff +0 -0
  1612. package/resources/themes/md-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff2 +0 -0
  1613. package/resources/themes/md-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff +0 -0
  1614. package/resources/themes/md-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff2 +0 -0
  1615. package/resources/themes/md-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff +0 -0
  1616. package/resources/themes/md-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff2 +0 -0
  1617. package/resources/themes/md-dark-deeppurple/theme.css +9765 -0
  1618. package/resources/themes/md-dark-indigo/fonts/roboto-v20-latin-ext_latin-500.woff +0 -0
  1619. package/resources/themes/md-dark-indigo/fonts/roboto-v20-latin-ext_latin-500.woff2 +0 -0
  1620. package/resources/themes/md-dark-indigo/fonts/roboto-v20-latin-ext_latin-700.woff +0 -0
  1621. package/resources/themes/md-dark-indigo/fonts/roboto-v20-latin-ext_latin-700.woff2 +0 -0
  1622. package/resources/themes/md-dark-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff +0 -0
  1623. package/resources/themes/md-dark-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff2 +0 -0
  1624. package/resources/themes/md-dark-indigo/theme.css +9765 -0
  1625. package/resources/themes/md-light-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff +0 -0
  1626. package/resources/themes/md-light-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff2 +0 -0
  1627. package/resources/themes/md-light-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff +0 -0
  1628. package/resources/themes/md-light-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff2 +0 -0
  1629. package/resources/themes/md-light-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff +0 -0
  1630. package/resources/themes/md-light-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff2 +0 -0
  1631. package/resources/themes/md-light-deeppurple/theme.css +9765 -0
  1632. package/resources/themes/md-light-indigo/fonts/roboto-v20-latin-ext_latin-500.woff +0 -0
  1633. package/resources/themes/md-light-indigo/fonts/roboto-v20-latin-ext_latin-500.woff2 +0 -0
  1634. package/resources/themes/md-light-indigo/fonts/roboto-v20-latin-ext_latin-700.woff +0 -0
  1635. package/resources/themes/md-light-indigo/fonts/roboto-v20-latin-ext_latin-700.woff2 +0 -0
  1636. package/resources/themes/md-light-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff +0 -0
  1637. package/resources/themes/md-light-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff2 +0 -0
  1638. package/resources/themes/md-light-indigo/theme.css +9765 -0
  1639. package/resources/themes/mdc-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff +0 -0
  1640. package/resources/themes/mdc-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff2 +0 -0
  1641. package/resources/themes/mdc-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff +0 -0
  1642. package/resources/themes/mdc-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff2 +0 -0
  1643. package/resources/themes/mdc-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff +0 -0
  1644. package/resources/themes/mdc-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff2 +0 -0
  1645. package/resources/themes/mdc-dark-deeppurple/theme.css +9765 -0
  1646. package/resources/themes/mdc-dark-indigo/fonts/roboto-v20-latin-ext_latin-500.woff +0 -0
  1647. package/resources/themes/mdc-dark-indigo/fonts/roboto-v20-latin-ext_latin-500.woff2 +0 -0
  1648. package/resources/themes/mdc-dark-indigo/fonts/roboto-v20-latin-ext_latin-700.woff +0 -0
  1649. package/resources/themes/mdc-dark-indigo/fonts/roboto-v20-latin-ext_latin-700.woff2 +0 -0
  1650. package/resources/themes/mdc-dark-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff +0 -0
  1651. package/resources/themes/mdc-dark-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff2 +0 -0
  1652. package/resources/themes/mdc-dark-indigo/theme.css +9765 -0
  1653. package/resources/themes/mdc-light-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff +0 -0
  1654. package/resources/themes/mdc-light-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff2 +0 -0
  1655. package/resources/themes/mdc-light-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff +0 -0
  1656. package/resources/themes/mdc-light-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff2 +0 -0
  1657. package/resources/themes/mdc-light-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff +0 -0
  1658. package/resources/themes/mdc-light-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff2 +0 -0
  1659. package/resources/themes/mdc-light-deeppurple/theme.css +9765 -0
  1660. package/resources/themes/mdc-light-indigo/fonts/roboto-v20-latin-ext_latin-500.woff +0 -0
  1661. package/resources/themes/mdc-light-indigo/fonts/roboto-v20-latin-ext_latin-500.woff2 +0 -0
  1662. package/resources/themes/mdc-light-indigo/fonts/roboto-v20-latin-ext_latin-700.woff +0 -0
  1663. package/resources/themes/mdc-light-indigo/fonts/roboto-v20-latin-ext_latin-700.woff2 +0 -0
  1664. package/resources/themes/mdc-light-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff +0 -0
  1665. package/resources/themes/mdc-light-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff2 +0 -0
  1666. package/resources/themes/mdc-light-indigo/theme.css +9765 -0
  1667. package/resources/themes/mira/fonts/Inter-Bold.woff +0 -0
  1668. package/resources/themes/mira/fonts/Inter-Bold.woff2 +0 -0
  1669. package/resources/themes/mira/fonts/Inter-Medium.woff +0 -0
  1670. package/resources/themes/mira/fonts/Inter-Medium.woff2 +0 -0
  1671. package/resources/themes/mira/fonts/Inter-Regular.woff +0 -0
  1672. package/resources/themes/mira/fonts/Inter-Regular.woff2 +0 -0
  1673. package/resources/themes/mira/fonts/Inter-SemiBold.woff +0 -0
  1674. package/resources/themes/mira/fonts/Inter-SemiBold.woff2 +0 -0
  1675. package/resources/themes/mira/theme.css +7990 -0
  1676. package/resources/themes/nano/theme.css +7736 -0
  1677. package/resources/themes/nova/theme.css +7702 -0
  1678. package/resources/themes/nova-accent/theme.css +7714 -0
  1679. package/resources/themes/nova-alt/theme.css +7714 -0
  1680. package/resources/themes/rhea/theme.css +7690 -0
  1681. package/resources/themes/saga-blue/theme.css +7753 -0
  1682. package/resources/themes/saga-green/theme.css +7753 -0
  1683. package/resources/themes/saga-orange/theme.css +7753 -0
  1684. package/resources/themes/saga-purple/theme.css +7753 -0
  1685. package/resources/themes/soho-dark/fonts/lato-v17-latin-ext_latin-300.woff +0 -0
  1686. package/resources/themes/soho-dark/fonts/lato-v17-latin-ext_latin-300.woff2 +0 -0
  1687. package/resources/themes/soho-dark/fonts/lato-v17-latin-ext_latin-700.woff +0 -0
  1688. package/resources/themes/soho-dark/fonts/lato-v17-latin-ext_latin-700.woff2 +0 -0
  1689. package/resources/themes/soho-dark/fonts/lato-v17-latin-ext_latin-regular.woff +0 -0
  1690. package/resources/themes/soho-dark/fonts/lato-v17-latin-ext_latin-regular.woff2 +0 -0
  1691. package/resources/themes/soho-dark/theme.css +7719 -0
  1692. package/resources/themes/soho-light/fonts/lato-v17-latin-ext_latin-300.woff +0 -0
  1693. package/resources/themes/soho-light/fonts/lato-v17-latin-ext_latin-300.woff2 +0 -0
  1694. package/resources/themes/soho-light/fonts/lato-v17-latin-ext_latin-700.woff +0 -0
  1695. package/resources/themes/soho-light/fonts/lato-v17-latin-ext_latin-700.woff2 +0 -0
  1696. package/resources/themes/soho-light/fonts/lato-v17-latin-ext_latin-regular.woff +0 -0
  1697. package/resources/themes/soho-light/fonts/lato-v17-latin-ext_latin-regular.woff2 +0 -0
  1698. package/resources/themes/soho-light/theme.css +7785 -0
  1699. package/resources/themes/tailwind-light/fonts/Inter-Bold.woff +0 -0
  1700. package/resources/themes/tailwind-light/fonts/Inter-Bold.woff2 +0 -0
  1701. package/resources/themes/tailwind-light/fonts/Inter-Light.woff +0 -0
  1702. package/resources/themes/tailwind-light/fonts/Inter-Light.woff2 +0 -0
  1703. package/resources/themes/tailwind-light/fonts/Inter-Medium.woff +0 -0
  1704. package/resources/themes/tailwind-light/fonts/Inter-Medium.woff2 +0 -0
  1705. package/resources/themes/tailwind-light/fonts/Inter-Regular.woff +0 -0
  1706. package/resources/themes/tailwind-light/fonts/Inter-Regular.woff2 +0 -0
  1707. package/resources/themes/tailwind-light/fonts/Inter-SemiBold.woff +0 -0
  1708. package/resources/themes/tailwind-light/fonts/Inter-SemiBold.woff2 +0 -0
  1709. package/resources/themes/tailwind-light/theme.css +7867 -0
  1710. package/resources/themes/vela-blue/theme.css +7757 -0
  1711. package/resources/themes/vela-green/theme.css +7757 -0
  1712. package/resources/themes/vela-orange/theme.css +7757 -0
  1713. package/resources/themes/vela-purple/theme.css +7757 -0
  1714. package/resources/themes/viva-dark/fonts/poppins-v15-latin-ext_latin-300.woff +0 -0
  1715. package/resources/themes/viva-dark/fonts/poppins-v15-latin-ext_latin-300.woff2 +0 -0
  1716. package/resources/themes/viva-dark/fonts/poppins-v15-latin-ext_latin-600.woff +0 -0
  1717. package/resources/themes/viva-dark/fonts/poppins-v15-latin-ext_latin-600.woff2 +0 -0
  1718. package/resources/themes/viva-dark/fonts/poppins-v15-latin-ext_latin-700.woff +0 -0
  1719. package/resources/themes/viva-dark/fonts/poppins-v15-latin-ext_latin-700.woff2 +0 -0
  1720. package/resources/themes/viva-dark/fonts/poppins-v15-latin-ext_latin-regular.woff +0 -0
  1721. package/resources/themes/viva-dark/fonts/poppins-v15-latin-ext_latin-regular.woff2 +0 -0
  1722. package/resources/themes/viva-dark/theme.css +7910 -0
  1723. package/resources/themes/viva-light/fonts/poppins-v15-latin-ext_latin-300.woff +0 -0
  1724. package/resources/themes/viva-light/fonts/poppins-v15-latin-ext_latin-300.woff2 +0 -0
  1725. package/resources/themes/viva-light/fonts/poppins-v15-latin-ext_latin-600.woff +0 -0
  1726. package/resources/themes/viva-light/fonts/poppins-v15-latin-ext_latin-600.woff2 +0 -0
  1727. package/resources/themes/viva-light/fonts/poppins-v15-latin-ext_latin-700.woff +0 -0
  1728. package/resources/themes/viva-light/fonts/poppins-v15-latin-ext_latin-700.woff2 +0 -0
  1729. package/resources/themes/viva-light/fonts/poppins-v15-latin-ext_latin-regular.woff +0 -0
  1730. package/resources/themes/viva-light/fonts/poppins-v15-latin-ext_latin-regular.woff2 +0 -0
  1731. package/resources/themes/viva-light/theme.css +7910 -0
  1732. package/ripple/index.d.ts +5 -0
  1733. package/ripple/public_api.d.ts +1 -0
  1734. package/ripple/ripple.d.ts +31 -0
  1735. package/scroller/index.d.ts +5 -0
  1736. package/scroller/public_api.d.ts +1 -0
  1737. package/scroller/scroller.d.ts +251 -0
  1738. package/scrollpanel/index.d.ts +5 -0
  1739. package/scrollpanel/public_api.d.ts +1 -0
  1740. package/scrollpanel/scrollpanel.d.ts +59 -0
  1741. package/scrolltop/index.d.ts +5 -0
  1742. package/scrolltop/public_api.d.ts +1 -0
  1743. package/scrolltop/scrolltop.d.ts +53 -0
  1744. package/selectbutton/index.d.ts +5 -0
  1745. package/selectbutton/public_api.d.ts +1 -0
  1746. package/selectbutton/selectbutton.d.ts +45 -0
  1747. package/sidebar/index.d.ts +5 -0
  1748. package/sidebar/public_api.d.ts +1 -0
  1749. package/sidebar/sidebar.d.ts +75 -0
  1750. package/skeleton/index.d.ts +5 -0
  1751. package/skeleton/public_api.d.ts +1 -0
  1752. package/skeleton/skeleton.d.ts +25 -0
  1753. package/slidemenu/index.d.ts +5 -0
  1754. package/slidemenu/public_api.d.ts +1 -0
  1755. package/slidemenu/slidemenu.d.ts +112 -0
  1756. package/slider/index.d.ts +5 -0
  1757. package/slider/public_api.d.ts +1 -0
  1758. package/slider/slider.d.ts +92 -0
  1759. package/speeddial/index.d.ts +5 -0
  1760. package/speeddial/public_api.d.ts +1 -0
  1761. package/speeddial/speeddial.d.ts +137 -0
  1762. package/spinner/index.d.ts +5 -0
  1763. package/spinner/public_api.d.ts +1 -0
  1764. package/spinner/spinner.d.ts +80 -0
  1765. package/splitbutton/index.d.ts +5 -0
  1766. package/splitbutton/public_api.d.ts +1 -0
  1767. package/splitbutton/splitbutton.d.ts +45 -0
  1768. package/splitter/index.d.ts +5 -0
  1769. package/splitter/public_api.d.ts +1 -0
  1770. package/splitter/splitter.d.ts +88 -0
  1771. package/steps/index.d.ts +5 -0
  1772. package/steps/public_api.d.ts +1 -0
  1773. package/steps/steps.d.ts +33 -0
  1774. package/styleclass/index.d.ts +5 -0
  1775. package/styleclass/public_api.d.ts +1 -0
  1776. package/styleclass/styleclass.d.ts +45 -0
  1777. package/table/index.d.ts +5 -0
  1778. package/table/public_api.d.ts +1 -0
  1779. package/table/table.d.ts +890 -0
  1780. package/tabmenu/index.d.ts +5 -0
  1781. package/tabmenu/public_api.d.ts +1 -0
  1782. package/tabmenu/tabmenu.d.ts +61 -0
  1783. package/tabview/index.d.ts +5 -0
  1784. package/tabview/public_api.d.ts +1 -0
  1785. package/tabview/tabview.d.ts +110 -0
  1786. package/tag/index.d.ts +5 -0
  1787. package/tag/public_api.d.ts +1 -0
  1788. package/tag/tag.d.ts +30 -0
  1789. package/terminal/index.d.ts +5 -0
  1790. package/terminal/public_api.d.ts +2 -0
  1791. package/terminal/terminal.d.ts +34 -0
  1792. package/terminal/terminalservice.d.ts +11 -0
  1793. package/tieredmenu/index.d.ts +5 -0
  1794. package/tieredmenu/public_api.d.ts +1 -0
  1795. package/tieredmenu/tieredmenu.d.ts +109 -0
  1796. package/timeline/index.d.ts +5 -0
  1797. package/timeline/public_api.d.ts +1 -0
  1798. package/timeline/timeline.d.ts +27 -0
  1799. package/toast/index.d.ts +5 -0
  1800. package/toast/public_api.d.ts +1 -0
  1801. package/toast/toast.d.ts +87 -0
  1802. package/togglebutton/index.d.ts +5 -0
  1803. package/togglebutton/public_api.d.ts +1 -0
  1804. package/togglebutton/togglebutton.d.ts +40 -0
  1805. package/toolbar/index.d.ts +5 -0
  1806. package/toolbar/public_api.d.ts +1 -0
  1807. package/toolbar/toolbar.d.ts +23 -0
  1808. package/tooltip/index.d.ts +5 -0
  1809. package/tooltip/public_api.d.ts +1 -0
  1810. package/tooltip/tooltip.d.ts +115 -0
  1811. package/tree/index.d.ts +5 -0
  1812. package/tree/public_api.d.ts +1 -0
  1813. package/tree/tree.d.ts +207 -0
  1814. package/treeselect/index.d.ts +5 -0
  1815. package/treeselect/public_api.d.ts +1 -0
  1816. package/treeselect/treeselect.d.ts +149 -0
  1817. package/treetable/index.d.ts +5 -0
  1818. package/treetable/public_api.d.ts +1 -0
  1819. package/treetable/treetable.d.ts +542 -0
  1820. package/tristatecheckbox/index.d.ts +5 -0
  1821. package/tristatecheckbox/public_api.d.ts +1 -0
  1822. package/tristatecheckbox/tristatecheckbox.d.ts +49 -0
  1823. package/utils/index.d.ts +5 -0
  1824. package/utils/objectutils.d.ts +17 -0
  1825. package/utils/public_api.d.ts +4 -0
  1826. package/utils/uniquecomponentid.d.ts +2 -0
  1827. package/utils/zindexutils.d.ts +7 -0
  1828. package/virtualscroller/index.d.ts +5 -0
  1829. package/virtualscroller/public_api.d.ts +1 -0
  1830. package/virtualscroller/virtualscroller.d.ts +41 -0
@@ -0,0 +1,1189 @@
1
+ import { CommonModule, DOCUMENT } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, forwardRef, Inject, Input, NgModule, Output, ViewChild, ViewEncapsulation } from '@angular/core';
3
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
+ import { ButtonModule } from '@qius.solutions/parallel-ui-angular/button';
5
+ import { DomHandler } from '@qius.solutions/parallel-ui-angular/dom';
6
+ import { InputTextModule } from '@qius.solutions/parallel-ui-angular/inputtext';
7
+ import { QiusTemplate, SharedModule } from '@qius.solutions/parallel-ui-angular/api';
8
+ import { TimesIcon } from '@qius.solutions/parallel-ui-angular/icons/times';
9
+ import { AngleUpIcon } from '@qius.solutions/parallel-ui-angular/icons/angleup';
10
+ import { AngleDownIcon } from '@qius.solutions/parallel-ui-angular/icons/angledown';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "@angular/common";
13
+ import * as i2 from "@qius.solutions/parallel-ui-angular/inputtext";
14
+ import * as i3 from "@qius.solutions/parallel-ui-angular/button";
15
+ export const INPUTNUMBER_VALUE_ACCESSOR = {
16
+ provide: NG_VALUE_ACCESSOR,
17
+ useExisting: forwardRef(() => InputNumber),
18
+ multi: true
19
+ };
20
+ export class InputNumber {
21
+ constructor(document, el, cd) {
22
+ this.document = document;
23
+ this.el = el;
24
+ this.cd = cd;
25
+ this.showButtons = false;
26
+ this.format = true;
27
+ this.buttonLayout = 'stacked';
28
+ this.readonly = false;
29
+ this.step = 1;
30
+ this.allowEmpty = true;
31
+ this.mode = 'decimal';
32
+ this.useGrouping = true;
33
+ this.showClear = false;
34
+ this.onInput = new EventEmitter();
35
+ this.onFocus = new EventEmitter();
36
+ this.onBlur = new EventEmitter();
37
+ this.onKeyDown = new EventEmitter();
38
+ this.onClear = new EventEmitter();
39
+ this.onModelChange = () => { };
40
+ this.onModelTouched = () => { };
41
+ this.groupChar = '';
42
+ this.prefixChar = '';
43
+ this.suffixChar = '';
44
+ }
45
+ get disabled() {
46
+ return this._disabled;
47
+ }
48
+ set disabled(disabled) {
49
+ if (disabled)
50
+ this.focused = false;
51
+ this._disabled = disabled;
52
+ if (this.timer)
53
+ this.clearTimer();
54
+ }
55
+ ngOnChanges(simpleChange) {
56
+ const props = ['locale', 'localeMatcher', 'mode', 'currency', 'currencyDisplay', 'useGrouping', 'minFractionDigits', 'maxFractionDigits', 'prefix', 'suffix'];
57
+ if (props.some((p) => !!simpleChange[p])) {
58
+ this.updateConstructParser();
59
+ }
60
+ }
61
+ ngAfterContentInit() {
62
+ this.templates.forEach((item) => {
63
+ switch (item.getType()) {
64
+ case 'clearicon':
65
+ this.clearIconTemplate = item.template;
66
+ break;
67
+ case 'incrementbuttonicon':
68
+ this.incrementButtonIconTemplate = item.template;
69
+ break;
70
+ case 'decrementbuttonicon':
71
+ this.decrementButtonIconTemplate = item.template;
72
+ break;
73
+ }
74
+ });
75
+ }
76
+ ngOnInit() {
77
+ this.constructParser();
78
+ this.initialized = true;
79
+ }
80
+ getOptions() {
81
+ return {
82
+ localeMatcher: this.localeMatcher,
83
+ style: this.mode,
84
+ currency: this.currency,
85
+ currencyDisplay: this.currencyDisplay,
86
+ useGrouping: this.useGrouping,
87
+ minimumFractionDigits: this.minFractionDigits,
88
+ maximumFractionDigits: this.maxFractionDigits
89
+ };
90
+ }
91
+ constructParser() {
92
+ this.numberFormat = new Intl.NumberFormat(this.locale, this.getOptions());
93
+ const numerals = [...new Intl.NumberFormat(this.locale, { useGrouping: false }).format(9876543210)].reverse();
94
+ const index = new Map(numerals.map((d, i) => [d, i]));
95
+ this._numeral = new RegExp(`[${numerals.join('')}]`, 'g');
96
+ this._group = this.getGroupingExpression();
97
+ this._minusSign = this.getMinusSignExpression();
98
+ this._currency = this.getCurrencyExpression();
99
+ this._decimal = this.getDecimalExpression();
100
+ this._suffix = this.getSuffixExpression();
101
+ this._prefix = this.getPrefixExpression();
102
+ this._index = (d) => index.get(d);
103
+ }
104
+ updateConstructParser() {
105
+ if (this.initialized) {
106
+ this.constructParser();
107
+ }
108
+ }
109
+ escapeRegExp(text) {
110
+ return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
111
+ }
112
+ getDecimalExpression() {
113
+ const formatter = new Intl.NumberFormat(this.locale, { ...this.getOptions(), useGrouping: false });
114
+ return new RegExp(`[${formatter.format(1.1).replace(this._currency, '').trim().replace(this._numeral, '')}]`, 'g');
115
+ }
116
+ getGroupingExpression() {
117
+ const formatter = new Intl.NumberFormat(this.locale, { useGrouping: true });
118
+ this.groupChar = formatter.format(1000000).trim().replace(this._numeral, '').charAt(0);
119
+ return new RegExp(`[${this.groupChar}]`, 'g');
120
+ }
121
+ getMinusSignExpression() {
122
+ const formatter = new Intl.NumberFormat(this.locale, { useGrouping: false });
123
+ return new RegExp(`[${formatter.format(-1).trim().replace(this._numeral, '')}]`, 'g');
124
+ }
125
+ getCurrencyExpression() {
126
+ if (this.currency) {
127
+ const formatter = new Intl.NumberFormat(this.locale, { style: 'currency', currency: this.currency, currencyDisplay: this.currencyDisplay, minimumFractionDigits: 0, maximumFractionDigits: 0 });
128
+ return new RegExp(`[${formatter.format(1).replace(/\s/g, '').replace(this._numeral, '').replace(this._group, '')}]`, 'g');
129
+ }
130
+ return new RegExp(`[]`, 'g');
131
+ }
132
+ getPrefixExpression() {
133
+ if (this.prefix) {
134
+ this.prefixChar = this.prefix;
135
+ }
136
+ else {
137
+ const formatter = new Intl.NumberFormat(this.locale, { style: this.mode, currency: this.currency, currencyDisplay: this.currencyDisplay });
138
+ this.prefixChar = formatter.format(1).split('1')[0];
139
+ }
140
+ return new RegExp(`${this.escapeRegExp(this.prefixChar || '')}`, 'g');
141
+ }
142
+ getSuffixExpression() {
143
+ if (this.suffix) {
144
+ this.suffixChar = this.suffix;
145
+ }
146
+ else {
147
+ const formatter = new Intl.NumberFormat(this.locale, { style: this.mode, currency: this.currency, currencyDisplay: this.currencyDisplay, minimumFractionDigits: 0, maximumFractionDigits: 0 });
148
+ this.suffixChar = formatter.format(1).split('1')[1];
149
+ }
150
+ return new RegExp(`${this.escapeRegExp(this.suffixChar || '')}`, 'g');
151
+ }
152
+ formatValue(value) {
153
+ if (value != null) {
154
+ if (value === '-') {
155
+ // Minus sign
156
+ return value;
157
+ }
158
+ if (this.format) {
159
+ let formatter = new Intl.NumberFormat(this.locale, this.getOptions());
160
+ let formattedValue = formatter.format(value);
161
+ if (this.prefix) {
162
+ formattedValue = this.prefix + formattedValue;
163
+ }
164
+ if (this.suffix) {
165
+ formattedValue = formattedValue + this.suffix;
166
+ }
167
+ return formattedValue;
168
+ }
169
+ return value.toString();
170
+ }
171
+ return '';
172
+ }
173
+ parseValue(text) {
174
+ let filteredText = text
175
+ .replace(this._suffix, '')
176
+ .replace(this._prefix, '')
177
+ .trim()
178
+ .replace(/\s/g, '')
179
+ .replace(this._currency, '')
180
+ .replace(this._group, '')
181
+ .replace(this._minusSign, '-')
182
+ .replace(this._decimal, '.')
183
+ .replace(this._numeral, this._index);
184
+ if (filteredText) {
185
+ if (filteredText === '-')
186
+ // Minus sign
187
+ return filteredText;
188
+ let parsedValue = +filteredText;
189
+ return isNaN(parsedValue) ? null : parsedValue;
190
+ }
191
+ return null;
192
+ }
193
+ repeat(event, interval, dir) {
194
+ if (this.readonly) {
195
+ return;
196
+ }
197
+ let i = interval || 500;
198
+ this.clearTimer();
199
+ this.timer = setTimeout(() => {
200
+ this.repeat(event, 40, dir);
201
+ }, i);
202
+ this.spin(event, dir);
203
+ }
204
+ spin(event, dir) {
205
+ let step = this.step * dir;
206
+ let currentValue = this.parseValue(this.input.nativeElement.value) || 0;
207
+ let newValue = this.validateValue(currentValue + step);
208
+ if (this.maxlength && this.maxlength < this.formatValue(newValue).length) {
209
+ return;
210
+ }
211
+ this.updateInput(newValue, null, 'spin', null);
212
+ this.updateModel(event, newValue);
213
+ this.handleOnInput(event, currentValue, newValue);
214
+ }
215
+ clear() {
216
+ this.value = null;
217
+ this.onModelChange(this.value);
218
+ this.onClear.emit();
219
+ }
220
+ onUpButtonMouseDown(event) {
221
+ if (event.button === 2) {
222
+ this.clearTimer();
223
+ return;
224
+ }
225
+ this.input.nativeElement.focus();
226
+ this.repeat(event, null, 1);
227
+ event.preventDefault();
228
+ }
229
+ onUpButtonMouseUp() {
230
+ this.clearTimer();
231
+ }
232
+ onUpButtonMouseLeave() {
233
+ this.clearTimer();
234
+ }
235
+ onUpButtonKeyDown(event) {
236
+ if (event.keyCode === 32 || event.keyCode === 13) {
237
+ this.repeat(event, null, 1);
238
+ }
239
+ }
240
+ onUpButtonKeyUp() {
241
+ this.clearTimer();
242
+ }
243
+ onDownButtonMouseDown(event) {
244
+ if (event.button === 2) {
245
+ this.clearTimer();
246
+ return;
247
+ }
248
+ this.input.nativeElement.focus();
249
+ this.repeat(event, null, -1);
250
+ event.preventDefault();
251
+ }
252
+ onDownButtonMouseUp() {
253
+ this.clearTimer();
254
+ }
255
+ onDownButtonMouseLeave() {
256
+ this.clearTimer();
257
+ }
258
+ onDownButtonKeyUp() {
259
+ this.clearTimer();
260
+ }
261
+ onDownButtonKeyDown(event) {
262
+ if (event.keyCode === 32 || event.keyCode === 13) {
263
+ this.repeat(event, null, -1);
264
+ }
265
+ }
266
+ onUserInput(event) {
267
+ if (this.readonly) {
268
+ return;
269
+ }
270
+ if (this.isSpecialChar) {
271
+ event.target.value = this.lastValue;
272
+ }
273
+ this.isSpecialChar = false;
274
+ }
275
+ onInputKeyDown(event) {
276
+ if (this.readonly) {
277
+ return;
278
+ }
279
+ this.lastValue = event.target.value;
280
+ if (event.shiftKey || event.altKey) {
281
+ this.isSpecialChar = true;
282
+ return;
283
+ }
284
+ let selectionStart = event.target.selectionStart;
285
+ let selectionEnd = event.target.selectionEnd;
286
+ let inputValue = event.target.value;
287
+ let newValueStr = null;
288
+ if (event.altKey) {
289
+ event.preventDefault();
290
+ }
291
+ switch (event.which) {
292
+ //up
293
+ case 38:
294
+ this.spin(event, 1);
295
+ event.preventDefault();
296
+ break;
297
+ //down
298
+ case 40:
299
+ this.spin(event, -1);
300
+ event.preventDefault();
301
+ break;
302
+ //left
303
+ case 37:
304
+ if (!this.isNumeralChar(inputValue.charAt(selectionStart - 1))) {
305
+ event.preventDefault();
306
+ }
307
+ break;
308
+ //right
309
+ case 39:
310
+ if (!this.isNumeralChar(inputValue.charAt(selectionStart))) {
311
+ event.preventDefault();
312
+ }
313
+ break;
314
+ //enter
315
+ case 13:
316
+ newValueStr = this.validateValue(this.parseValue(this.input.nativeElement.value));
317
+ this.input.nativeElement.value = this.formatValue(newValueStr);
318
+ this.input.nativeElement.setAttribute('aria-valuenow', newValueStr);
319
+ this.updateModel(event, newValueStr);
320
+ break;
321
+ //backspace
322
+ case 8: {
323
+ event.preventDefault();
324
+ if (selectionStart === selectionEnd) {
325
+ const deleteChar = inputValue.charAt(selectionStart - 1);
326
+ const { decimalCharIndex, decimalCharIndexWithoutPrefix } = this.getDecimalCharIndexes(inputValue);
327
+ if (this.isNumeralChar(deleteChar)) {
328
+ const decimalLength = this.getDecimalLength(inputValue);
329
+ if (this._group.test(deleteChar)) {
330
+ this._group.lastIndex = 0;
331
+ newValueStr = inputValue.slice(0, selectionStart - 2) + inputValue.slice(selectionStart - 1);
332
+ }
333
+ else if (this._decimal.test(deleteChar)) {
334
+ this._decimal.lastIndex = 0;
335
+ if (decimalLength) {
336
+ this.input.nativeElement.setSelectionRange(selectionStart - 1, selectionStart - 1);
337
+ }
338
+ else {
339
+ newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);
340
+ }
341
+ }
342
+ else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {
343
+ const insertedText = this.isDecimalMode() && (this.minFractionDigits || 0) < decimalLength ? '' : '0';
344
+ newValueStr = inputValue.slice(0, selectionStart - 1) + insertedText + inputValue.slice(selectionStart);
345
+ }
346
+ else if (decimalCharIndexWithoutPrefix === 1) {
347
+ newValueStr = inputValue.slice(0, selectionStart - 1) + '0' + inputValue.slice(selectionStart);
348
+ newValueStr = this.parseValue(newValueStr) > 0 ? newValueStr : '';
349
+ }
350
+ else {
351
+ newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);
352
+ }
353
+ }
354
+ this.updateValue(event, newValueStr, null, 'delete-single');
355
+ }
356
+ else {
357
+ newValueStr = this.deleteRange(inputValue, selectionStart, selectionEnd);
358
+ this.updateValue(event, newValueStr, null, 'delete-range');
359
+ }
360
+ break;
361
+ }
362
+ // del
363
+ case 46:
364
+ event.preventDefault();
365
+ if (selectionStart === selectionEnd) {
366
+ const deleteChar = inputValue.charAt(selectionStart);
367
+ const { decimalCharIndex, decimalCharIndexWithoutPrefix } = this.getDecimalCharIndexes(inputValue);
368
+ if (this.isNumeralChar(deleteChar)) {
369
+ const decimalLength = this.getDecimalLength(inputValue);
370
+ if (this._group.test(deleteChar)) {
371
+ this._group.lastIndex = 0;
372
+ newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 2);
373
+ }
374
+ else if (this._decimal.test(deleteChar)) {
375
+ this._decimal.lastIndex = 0;
376
+ if (decimalLength) {
377
+ this.input.nativeElement.setSelectionRange(selectionStart + 1, selectionStart + 1);
378
+ }
379
+ else {
380
+ newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);
381
+ }
382
+ }
383
+ else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {
384
+ const insertedText = this.isDecimalMode() && (this.minFractionDigits || 0) < decimalLength ? '' : '0';
385
+ newValueStr = inputValue.slice(0, selectionStart) + insertedText + inputValue.slice(selectionStart + 1);
386
+ }
387
+ else if (decimalCharIndexWithoutPrefix === 1) {
388
+ newValueStr = inputValue.slice(0, selectionStart) + '0' + inputValue.slice(selectionStart + 1);
389
+ newValueStr = this.parseValue(newValueStr) > 0 ? newValueStr : '';
390
+ }
391
+ else {
392
+ newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);
393
+ }
394
+ }
395
+ this.updateValue(event, newValueStr, null, 'delete-back-single');
396
+ }
397
+ else {
398
+ newValueStr = this.deleteRange(inputValue, selectionStart, selectionEnd);
399
+ this.updateValue(event, newValueStr, null, 'delete-range');
400
+ }
401
+ break;
402
+ default:
403
+ break;
404
+ }
405
+ this.onKeyDown.emit(event);
406
+ }
407
+ onInputKeyPress(event) {
408
+ if (this.readonly) {
409
+ return;
410
+ }
411
+ let code = event.which || event.keyCode;
412
+ let char = String.fromCharCode(code);
413
+ const isDecimalSign = this.isDecimalSign(char);
414
+ const isMinusSign = this.isMinusSign(char);
415
+ if (code != 13) {
416
+ event.preventDefault();
417
+ }
418
+ if ((48 <= code && code <= 57) || isMinusSign || isDecimalSign) {
419
+ this.insert(event, char, { isDecimalSign, isMinusSign });
420
+ }
421
+ }
422
+ onPaste(event) {
423
+ if (!this.disabled && !this.readonly) {
424
+ event.preventDefault();
425
+ let data = (event.clipboardData || this.document.defaultView['clipboardData']).getData('Text');
426
+ if (data) {
427
+ let filteredData = this.parseValue(data);
428
+ if (filteredData != null) {
429
+ this.insert(event, filteredData.toString());
430
+ }
431
+ }
432
+ }
433
+ }
434
+ allowMinusSign() {
435
+ return this.min == null || this.min < 0;
436
+ }
437
+ isMinusSign(char) {
438
+ if (this._minusSign.test(char) || char === '-') {
439
+ this._minusSign.lastIndex = 0;
440
+ return true;
441
+ }
442
+ return false;
443
+ }
444
+ isDecimalSign(char) {
445
+ if (this._decimal.test(char)) {
446
+ this._decimal.lastIndex = 0;
447
+ return true;
448
+ }
449
+ return false;
450
+ }
451
+ isDecimalMode() {
452
+ return this.mode === 'decimal';
453
+ }
454
+ getDecimalCharIndexes(val) {
455
+ let decimalCharIndex = val.search(this._decimal);
456
+ this._decimal.lastIndex = 0;
457
+ const filteredVal = val.replace(this._prefix, '').trim().replace(/\s/g, '').replace(this._currency, '');
458
+ const decimalCharIndexWithoutPrefix = filteredVal.search(this._decimal);
459
+ this._decimal.lastIndex = 0;
460
+ return { decimalCharIndex, decimalCharIndexWithoutPrefix };
461
+ }
462
+ getCharIndexes(val) {
463
+ const decimalCharIndex = val.search(this._decimal);
464
+ this._decimal.lastIndex = 0;
465
+ const minusCharIndex = val.search(this._minusSign);
466
+ this._minusSign.lastIndex = 0;
467
+ const suffixCharIndex = val.search(this._suffix);
468
+ this._suffix.lastIndex = 0;
469
+ const currencyCharIndex = val.search(this._currency);
470
+ this._currency.lastIndex = 0;
471
+ return { decimalCharIndex, minusCharIndex, suffixCharIndex, currencyCharIndex };
472
+ }
473
+ insert(event, text, sign = { isDecimalSign: false, isMinusSign: false }) {
474
+ const minusCharIndexOnText = text.search(this._minusSign);
475
+ this._minusSign.lastIndex = 0;
476
+ if (!this.allowMinusSign() && minusCharIndexOnText !== -1) {
477
+ return;
478
+ }
479
+ let selectionStart = this.input.nativeElement.selectionStart;
480
+ let selectionEnd = this.input.nativeElement.selectionEnd;
481
+ let inputValue = this.input.nativeElement.value.trim();
482
+ const { decimalCharIndex, minusCharIndex, suffixCharIndex, currencyCharIndex } = this.getCharIndexes(inputValue);
483
+ let newValueStr;
484
+ if (sign.isMinusSign) {
485
+ if (selectionStart === 0) {
486
+ newValueStr = inputValue;
487
+ if (minusCharIndex === -1 || selectionEnd !== 0) {
488
+ newValueStr = this.insertText(inputValue, text, 0, selectionEnd);
489
+ }
490
+ this.updateValue(event, newValueStr, text, 'insert');
491
+ }
492
+ }
493
+ else if (sign.isDecimalSign) {
494
+ if (decimalCharIndex > 0 && selectionStart === decimalCharIndex) {
495
+ this.updateValue(event, inputValue, text, 'insert');
496
+ }
497
+ else if (decimalCharIndex > selectionStart && decimalCharIndex < selectionEnd) {
498
+ newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);
499
+ this.updateValue(event, newValueStr, text, 'insert');
500
+ }
501
+ else if (decimalCharIndex === -1 && this.maxFractionDigits) {
502
+ newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);
503
+ this.updateValue(event, newValueStr, text, 'insert');
504
+ }
505
+ }
506
+ else {
507
+ const maxFractionDigits = this.numberFormat.resolvedOptions().maximumFractionDigits;
508
+ const operation = selectionStart !== selectionEnd ? 'range-insert' : 'insert';
509
+ if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {
510
+ if (selectionStart + text.length - (decimalCharIndex + 1) <= maxFractionDigits) {
511
+ const charIndex = currencyCharIndex >= selectionStart ? currencyCharIndex - 1 : suffixCharIndex >= selectionStart ? suffixCharIndex : inputValue.length;
512
+ newValueStr = inputValue.slice(0, selectionStart) + text + inputValue.slice(selectionStart + text.length, charIndex) + inputValue.slice(charIndex);
513
+ this.updateValue(event, newValueStr, text, operation);
514
+ }
515
+ }
516
+ else {
517
+ newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);
518
+ this.updateValue(event, newValueStr, text, operation);
519
+ }
520
+ }
521
+ }
522
+ insertText(value, text, start, end) {
523
+ let textSplit = text === '.' ? text : text.split('.');
524
+ if (textSplit.length === 2) {
525
+ const decimalCharIndex = value.slice(start, end).search(this._decimal);
526
+ this._decimal.lastIndex = 0;
527
+ return decimalCharIndex > 0 ? value.slice(0, start) + this.formatValue(text) + value.slice(end) : value || this.formatValue(text);
528
+ }
529
+ else if (end - start === value.length) {
530
+ return this.formatValue(text);
531
+ }
532
+ else if (start === 0) {
533
+ return text + value.slice(end);
534
+ }
535
+ else if (end === value.length) {
536
+ return value.slice(0, start) + text;
537
+ }
538
+ else {
539
+ return value.slice(0, start) + text + value.slice(end);
540
+ }
541
+ }
542
+ deleteRange(value, start, end) {
543
+ let newValueStr;
544
+ if (end - start === value.length)
545
+ newValueStr = '';
546
+ else if (start === 0)
547
+ newValueStr = value.slice(end);
548
+ else if (end === value.length)
549
+ newValueStr = value.slice(0, start);
550
+ else
551
+ newValueStr = value.slice(0, start) + value.slice(end);
552
+ return newValueStr;
553
+ }
554
+ initCursor() {
555
+ let selectionStart = this.input.nativeElement.selectionStart;
556
+ let inputValue = this.input.nativeElement.value;
557
+ let valueLength = inputValue.length;
558
+ let index = null;
559
+ // remove prefix
560
+ let prefixLength = (this.prefixChar || '').length;
561
+ inputValue = inputValue.replace(this._prefix, '');
562
+ selectionStart = selectionStart - prefixLength;
563
+ let char = inputValue.charAt(selectionStart);
564
+ if (this.isNumeralChar(char)) {
565
+ return selectionStart + prefixLength;
566
+ }
567
+ //left
568
+ let i = selectionStart - 1;
569
+ while (i >= 0) {
570
+ char = inputValue.charAt(i);
571
+ if (this.isNumeralChar(char)) {
572
+ index = i + prefixLength;
573
+ break;
574
+ }
575
+ else {
576
+ i--;
577
+ }
578
+ }
579
+ if (index !== null) {
580
+ this.input.nativeElement.setSelectionRange(index + 1, index + 1);
581
+ }
582
+ else {
583
+ i = selectionStart;
584
+ while (i < valueLength) {
585
+ char = inputValue.charAt(i);
586
+ if (this.isNumeralChar(char)) {
587
+ index = i + prefixLength;
588
+ break;
589
+ }
590
+ else {
591
+ i++;
592
+ }
593
+ }
594
+ if (index !== null) {
595
+ this.input.nativeElement.setSelectionRange(index, index);
596
+ }
597
+ }
598
+ return index || 0;
599
+ }
600
+ onInputClick() {
601
+ const currentValue = this.input.nativeElement.value;
602
+ if (!this.readonly && currentValue !== DomHandler.getSelection()) {
603
+ this.initCursor();
604
+ }
605
+ }
606
+ isNumeralChar(char) {
607
+ if (char.length === 1 && (this._numeral.test(char) || this._decimal.test(char) || this._group.test(char) || this._minusSign.test(char))) {
608
+ this.resetRegex();
609
+ return true;
610
+ }
611
+ return false;
612
+ }
613
+ resetRegex() {
614
+ this._numeral.lastIndex = 0;
615
+ this._decimal.lastIndex = 0;
616
+ this._group.lastIndex = 0;
617
+ this._minusSign.lastIndex = 0;
618
+ }
619
+ updateValue(event, valueStr, insertedValueStr, operation) {
620
+ let currentValue = this.input.nativeElement.value;
621
+ let newValue = null;
622
+ if (valueStr != null) {
623
+ newValue = this.parseValue(valueStr);
624
+ newValue = !newValue && !this.allowEmpty ? 0 : newValue;
625
+ this.updateInput(newValue, insertedValueStr, operation, valueStr);
626
+ this.handleOnInput(event, currentValue, newValue);
627
+ }
628
+ }
629
+ handleOnInput(event, currentValue, newValue) {
630
+ if (this.isValueChanged(currentValue, newValue)) {
631
+ this.input.nativeElement.value = this.formatValue(newValue);
632
+ this.input.nativeElement.setAttribute('aria-valuenow', newValue);
633
+ this.updateModel(event, newValue);
634
+ this.onInput.emit({ originalEvent: event, value: newValue, formattedValue: currentValue });
635
+ }
636
+ }
637
+ isValueChanged(currentValue, newValue) {
638
+ if (newValue === null && currentValue !== null) {
639
+ return true;
640
+ }
641
+ if (newValue != null) {
642
+ let parsedCurrentValue = typeof currentValue === 'string' ? this.parseValue(currentValue) : currentValue;
643
+ return newValue !== parsedCurrentValue;
644
+ }
645
+ return false;
646
+ }
647
+ validateValue(value) {
648
+ if (value === '-' || value == null) {
649
+ return null;
650
+ }
651
+ if (this.min != null && value < this.min) {
652
+ return this.min;
653
+ }
654
+ if (this.max != null && value > this.max) {
655
+ return this.max;
656
+ }
657
+ return value;
658
+ }
659
+ updateInput(value, insertedValueStr, operation, valueStr) {
660
+ insertedValueStr = insertedValueStr || '';
661
+ let inputValue = this.input.nativeElement.value;
662
+ let newValue = this.formatValue(value);
663
+ let currentLength = inputValue.length;
664
+ if (newValue !== valueStr) {
665
+ newValue = this.concatValues(newValue, valueStr);
666
+ }
667
+ if (currentLength === 0) {
668
+ this.input.nativeElement.value = newValue;
669
+ this.input.nativeElement.setSelectionRange(0, 0);
670
+ const index = this.initCursor();
671
+ const selectionEnd = index + insertedValueStr.length;
672
+ this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);
673
+ }
674
+ else {
675
+ let selectionStart = this.input.nativeElement.selectionStart;
676
+ let selectionEnd = this.input.nativeElement.selectionEnd;
677
+ if (this.maxlength && this.maxlength < newValue.length) {
678
+ return;
679
+ }
680
+ this.input.nativeElement.value = newValue;
681
+ let newLength = newValue.length;
682
+ if (operation === 'range-insert') {
683
+ const startValue = this.parseValue((inputValue || '').slice(0, selectionStart));
684
+ const startValueStr = startValue !== null ? startValue.toString() : '';
685
+ const startExpr = startValueStr.split('').join(`(${this.groupChar})?`);
686
+ const sRegex = new RegExp(startExpr, 'g');
687
+ sRegex.test(newValue);
688
+ const tExpr = insertedValueStr.split('').join(`(${this.groupChar})?`);
689
+ const tRegex = new RegExp(tExpr, 'g');
690
+ tRegex.test(newValue.slice(sRegex.lastIndex));
691
+ selectionEnd = sRegex.lastIndex + tRegex.lastIndex;
692
+ this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);
693
+ }
694
+ else if (newLength === currentLength) {
695
+ if (operation === 'insert' || operation === 'delete-back-single')
696
+ this.input.nativeElement.setSelectionRange(selectionEnd + 1, selectionEnd + 1);
697
+ else if (operation === 'delete-single')
698
+ this.input.nativeElement.setSelectionRange(selectionEnd - 1, selectionEnd - 1);
699
+ else if (operation === 'delete-range' || operation === 'spin')
700
+ this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);
701
+ }
702
+ else if (operation === 'delete-back-single') {
703
+ let prevChar = inputValue.charAt(selectionEnd - 1);
704
+ let nextChar = inputValue.charAt(selectionEnd);
705
+ let diff = currentLength - newLength;
706
+ let isGroupChar = this._group.test(nextChar);
707
+ if (isGroupChar && diff === 1) {
708
+ selectionEnd += 1;
709
+ }
710
+ else if (!isGroupChar && this.isNumeralChar(prevChar)) {
711
+ selectionEnd += -1 * diff + 1;
712
+ }
713
+ this._group.lastIndex = 0;
714
+ this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);
715
+ }
716
+ else if (inputValue === '-' && operation === 'insert') {
717
+ this.input.nativeElement.setSelectionRange(0, 0);
718
+ const index = this.initCursor();
719
+ const selectionEnd = index + insertedValueStr.length + 1;
720
+ this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);
721
+ }
722
+ else {
723
+ selectionEnd = selectionEnd + (newLength - currentLength);
724
+ this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);
725
+ }
726
+ }
727
+ this.input.nativeElement.setAttribute('aria-valuenow', value);
728
+ }
729
+ concatValues(val1, val2) {
730
+ if (val1 && val2) {
731
+ let decimalCharIndex = val2.search(this._decimal);
732
+ this._decimal.lastIndex = 0;
733
+ if (this.suffixChar) {
734
+ return val1.replace(this.suffixChar, '').split(this._decimal)[0] + val2.replace(this.suffixChar, '').slice(decimalCharIndex) + this.suffixChar;
735
+ }
736
+ else {
737
+ return decimalCharIndex !== -1 ? val1.split(this._decimal)[0] + val2.slice(decimalCharIndex) : val1;
738
+ }
739
+ }
740
+ return val1;
741
+ }
742
+ getDecimalLength(value) {
743
+ if (value) {
744
+ const valueSplit = value.split(this._decimal);
745
+ if (valueSplit.length === 2) {
746
+ return valueSplit[1].replace(this._suffix, '').trim().replace(/\s/g, '').replace(this._currency, '').length;
747
+ }
748
+ }
749
+ return 0;
750
+ }
751
+ onInputFocus(event) {
752
+ this.focused = true;
753
+ this.onFocus.emit(event);
754
+ }
755
+ onInputBlur(event) {
756
+ this.focused = false;
757
+ let newValue = this.validateValue(this.parseValue(this.input.nativeElement.value));
758
+ this.input.nativeElement.value = this.formatValue(newValue);
759
+ this.input.nativeElement.setAttribute('aria-valuenow', newValue);
760
+ this.updateModel(event, newValue);
761
+ this.onBlur.emit(event);
762
+ }
763
+ formattedValue() {
764
+ const val = !this.value && !this.allowEmpty ? 0 : this.value;
765
+ return this.formatValue(val);
766
+ }
767
+ updateModel(event, value) {
768
+ if (this.value !== value) {
769
+ this.value = value;
770
+ this.onModelChange(value);
771
+ }
772
+ this.onModelTouched();
773
+ }
774
+ writeValue(value) {
775
+ this.value = value;
776
+ this.cd.markForCheck();
777
+ }
778
+ registerOnChange(fn) {
779
+ this.onModelChange = fn;
780
+ }
781
+ registerOnTouched(fn) {
782
+ this.onModelTouched = fn;
783
+ }
784
+ setDisabledState(val) {
785
+ this.disabled = val;
786
+ this.cd.markForCheck();
787
+ }
788
+ get filled() {
789
+ return this.value != null && this.value.toString().length > 0;
790
+ }
791
+ clearTimer() {
792
+ if (this.timer) {
793
+ clearInterval(this.timer);
794
+ }
795
+ }
796
+ getFormatter() {
797
+ return this.numberFormat;
798
+ }
799
+ }
800
+ InputNumber.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: InputNumber, deps: [{ token: DOCUMENT }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
801
+ InputNumber.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: InputNumber, selector: "p-inputNumber", inputs: { showButtons: "showButtons", format: "format", buttonLayout: "buttonLayout", inputId: "inputId", styleClass: "styleClass", style: "style", placeholder: "placeholder", size: "size", maxlength: "maxlength", tabindex: "tabindex", title: "title", ariaLabel: "ariaLabel", ariaRequired: "ariaRequired", name: "name", required: "required", autocomplete: "autocomplete", min: "min", max: "max", incrementButtonClass: "incrementButtonClass", decrementButtonClass: "decrementButtonClass", incrementButtonIcon: "incrementButtonIcon", decrementButtonIcon: "decrementButtonIcon", readonly: "readonly", step: "step", allowEmpty: "allowEmpty", locale: "locale", localeMatcher: "localeMatcher", mode: "mode", currency: "currency", currencyDisplay: "currencyDisplay", useGrouping: "useGrouping", minFractionDigits: "minFractionDigits", maxFractionDigits: "maxFractionDigits", prefix: "prefix", suffix: "suffix", inputStyle: "inputStyle", inputStyleClass: "inputStyleClass", showClear: "showClear", disabled: "disabled" }, outputs: { onInput: "onInput", onFocus: "onFocus", onBlur: "onBlur", onKeyDown: "onKeyDown", onClear: "onClear" }, host: { properties: { "class.p-inputwrapper-filled": "filled", "class.p-inputwrapper-focus": "focused", "class.p-inputnumber-clearable": "showClear && buttonLayout != \"vertical\"" }, classAttribute: "p-element p-inputwrapper" }, providers: [INPUTNUMBER_VALUE_ACCESSOR], queries: [{ propertyName: "templates", predicate: QiusTemplate }], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
802
+ <span
803
+ [ngClass]="{
804
+ 'p-inputnumber p-component': true,
805
+ 'p-inputnumber-buttons-stacked': this.showButtons && this.buttonLayout === 'stacked',
806
+ 'p-inputnumber-buttons-horizontal': this.showButtons && this.buttonLayout === 'horizontal',
807
+ 'p-inputnumber-buttons-vertical': this.showButtons && this.buttonLayout === 'vertical'
808
+ }"
809
+ [ngStyle]="style"
810
+ [class]="styleClass"
811
+ >
812
+ <input
813
+ #input
814
+ [ngClass]="'p-inputnumber-input'"
815
+ [ngStyle]="inputStyle"
816
+ [class]="inputStyleClass"
817
+ pInputText
818
+ [value]="formattedValue()"
819
+ [attr.placeholder]="placeholder"
820
+ [attr.title]="title"
821
+ [attr.id]="inputId"
822
+ [attr.size]="size"
823
+ [attr.name]="name"
824
+ [attr.autocomplete]="autocomplete"
825
+ [attr.maxlength]="maxlength"
826
+ [attr.tabindex]="tabindex"
827
+ [attr.aria-label]="ariaLabel"
828
+ [attr.aria-required]="ariaRequired"
829
+ [disabled]="disabled"
830
+ [attr.required]="required"
831
+ [attr.min]="min"
832
+ [attr.max]="max"
833
+ [readonly]="readonly"
834
+ inputmode="decimal"
835
+ (input)="onUserInput($event)"
836
+ (keydown)="onInputKeyDown($event)"
837
+ (keypress)="onInputKeyPress($event)"
838
+ (paste)="onPaste($event)"
839
+ (click)="onInputClick()"
840
+ (focus)="onInputFocus($event)"
841
+ (blur)="onInputBlur($event)"
842
+ />
843
+ <ng-container *ngIf="buttonLayout != 'vertical' && showClear && value">
844
+ <TimesIcon *ngIf="!clearIconTemplate" [ngClass]="'p-inputnumber-clear-icon'" (click)="clear()"/>
845
+ <span *ngIf="clearIconTemplate" (click)="clear()" class="p-inputnumber-clear-icon">
846
+ <ng-template *ngTemplateOutlet="clearIconTemplate"></ng-template>
847
+ </span>
848
+ </ng-container>
849
+
850
+ <span class="p-inputnumber-button-group" *ngIf="showButtons && buttonLayout === 'stacked'">
851
+ <button
852
+ type="button"
853
+ pButton
854
+ [ngClass]="{ 'p-inputnumber-button p-inputnumber-button-up': true }"
855
+ class="p-button-icon-only"
856
+ [class]="incrementButtonClass"
857
+ [disabled]="disabled"
858
+ (mousedown)="onUpButtonMouseDown($event)"
859
+ (mouseup)="onUpButtonMouseUp()"
860
+ (mouseleave)="onUpButtonMouseLeave()"
861
+ (keydown)="onUpButtonKeyDown($event)"
862
+ (keyup)="onUpButtonKeyUp()"
863
+ tabindex="-1"
864
+ >
865
+ <span *ngIf="incrementButtonIcon" [ngClass]="incrementButtonIcon"></span>
866
+ <ng-container *ngIf="!incrementButtonIcon">
867
+ <AngleUpIcon *ngIf="!incrementButtonIconTemplate"/>
868
+ <ng-template *ngTemplateOutlet="incrementButtonIconTemplate"></ng-template>
869
+ </ng-container>
870
+ </button>
871
+ <button
872
+ type="button"
873
+ pButton
874
+ [ngClass]="{ 'p-inputnumber-button p-inputnumber-button-down': true }"
875
+ class="p-button-icon-only"
876
+ [class]="decrementButtonClass"
877
+ [disabled]="disabled"
878
+ (mousedown)="onDownButtonMouseDown($event)"
879
+ (mouseup)="onDownButtonMouseUp()"
880
+ (mouseleave)="onDownButtonMouseLeave()"
881
+ (keydown)="onDownButtonKeyDown($event)"
882
+ (keyup)="onDownButtonKeyUp()"
883
+ tabindex="-1"
884
+ >
885
+ <span *ngIf="decrementButtonIcon" [ngClass]="decrementButtonIcon"></span>
886
+ <ng-container *ngIf="!decrementButtonIcon">
887
+ <AngleDownIcon *ngIf="!decrementButtonIconTemplate"/>
888
+ <ng-template *ngTemplateOutlet="decrementButtonIconTemplate"></ng-template>
889
+ </ng-container>
890
+ </button>
891
+ </span>
892
+ <button
893
+ type="button"
894
+ pButton
895
+ [ngClass]="{ 'p-inputnumber-button p-inputnumber-button-up': true }"
896
+ [class]="incrementButtonClass"
897
+ class="p-button-icon-only"
898
+ *ngIf="showButtons && buttonLayout !== 'stacked'"
899
+ [disabled]="disabled"
900
+ (mousedown)="onUpButtonMouseDown($event)"
901
+ (mouseup)="onUpButtonMouseUp()"
902
+ (mouseleave)="onUpButtonMouseLeave()"
903
+ (keydown)="onUpButtonKeyDown($event)"
904
+ (keyup)="onUpButtonKeyUp()"
905
+ tabindex="-1"
906
+ >
907
+ <span *ngIf="incrementButtonIcon" [ngClass]="incrementButtonIcon"></span>
908
+ <ng-container *ngIf="!incrementButtonIcon">
909
+ <AngleUpIcon *ngIf="!incrementButtonIconTemplate"/>
910
+ <ng-template *ngTemplateOutlet="incrementButtonIconTemplate"></ng-template>
911
+ </ng-container>
912
+ </button>
913
+ <button
914
+ type="button"
915
+ pButton
916
+ [ngClass]="{ 'p-inputnumber-button p-inputnumber-button-down': true }"
917
+ class="p-button-icon-only"
918
+ [class]="decrementButtonClass"
919
+ *ngIf="showButtons && buttonLayout !== 'stacked'"
920
+ [disabled]="disabled"
921
+ (mousedown)="onDownButtonMouseDown($event)"
922
+ (mouseup)="onDownButtonMouseUp()"
923
+ (mouseleave)="onDownButtonMouseLeave()"
924
+ (keydown)="onDownButtonKeyDown($event)"
925
+ (keyup)="onDownButtonKeyUp()"
926
+ tabindex="-1"
927
+ >
928
+ <span *ngIf="decrementButtonIcon" [ngClass]="decrementButtonIcon"></span>
929
+ <ng-container *ngIf="!decrementButtonIcon">
930
+ <AngleDownIcon *ngIf="!decrementButtonIconTemplate"/>
931
+ <ng-template *ngTemplateOutlet="decrementButtonIconTemplate"></ng-template>
932
+ </ng-container>
933
+ </button>
934
+ </span>
935
+ `, isInline: true, styles: ["p-inputnumber,.p-inputnumber{display:inline-flex}.p-inputnumber-button{display:flex;align-items:center;justify-content:center;flex:0 0 auto}.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button .p-button-label,.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button .p-button-label{display:none}.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button-up{border-top-left-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0;padding:0}.p-inputnumber-buttons-stacked .p-inputnumber-input{border-top-right-radius:0;border-bottom-right-radius:0}.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button-down{border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:0;padding:0}.p-inputnumber-buttons-stacked .p-inputnumber-button-group{display:flex;flex-direction:column}.p-inputnumber-buttons-stacked .p-inputnumber-button-group .p-button.p-inputnumber-button{flex:1 1 auto}.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-up{order:3;border-top-left-radius:0;border-bottom-left-radius:0}.p-inputnumber-buttons-horizontal .p-inputnumber-input{order:2;border-radius:0}.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-down{order:1;border-top-right-radius:0;border-bottom-right-radius:0}.p-inputnumber-buttons-vertical{flex-direction:column}.p-inputnumber-buttons-vertical .p-button.p-inputnumber-button-up{order:1;border-bottom-left-radius:0;border-bottom-right-radius:0;width:100%}.p-inputnumber-buttons-vertical .p-inputnumber-input{order:2;border-radius:0;text-align:center}.p-inputnumber-buttons-vertical .p-button.p-inputnumber-button-down{order:3;border-top-left-radius:0;border-top-right-radius:0;width:100%}.p-inputnumber-input{flex:1 1 auto}.p-fluid p-inputnumber,.p-fluid .p-inputnumber{width:100%}.p-fluid .p-inputnumber .p-inputnumber-input{width:1%}.p-fluid .p-inputnumber-buttons-vertical .p-inputnumber-input{width:100%}.p-inputnumber-clear-icon{position:absolute;top:50%;margin-top:-.5rem;cursor:pointer}.p-inputnumber-clearable{position:relative}\n"], dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return i1.NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgTemplateOutlet; }), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgStyle; }), selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.InputText; }), selector: "[pInputText]" }, { kind: "directive", type: i0.forwardRef(function () { return i3.ButtonDirective; }), selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i0.forwardRef(function () { return TimesIcon; }), selector: "TimesIcon" }, { kind: "component", type: i0.forwardRef(function () { return AngleUpIcon; }), selector: "AngleUpIcon" }, { kind: "component", type: i0.forwardRef(function () { return AngleDownIcon; }), selector: "AngleDownIcon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
936
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: InputNumber, decorators: [{
937
+ type: Component,
938
+ args: [{ selector: 'p-inputNumber', template: `
939
+ <span
940
+ [ngClass]="{
941
+ 'p-inputnumber p-component': true,
942
+ 'p-inputnumber-buttons-stacked': this.showButtons && this.buttonLayout === 'stacked',
943
+ 'p-inputnumber-buttons-horizontal': this.showButtons && this.buttonLayout === 'horizontal',
944
+ 'p-inputnumber-buttons-vertical': this.showButtons && this.buttonLayout === 'vertical'
945
+ }"
946
+ [ngStyle]="style"
947
+ [class]="styleClass"
948
+ >
949
+ <input
950
+ #input
951
+ [ngClass]="'p-inputnumber-input'"
952
+ [ngStyle]="inputStyle"
953
+ [class]="inputStyleClass"
954
+ pInputText
955
+ [value]="formattedValue()"
956
+ [attr.placeholder]="placeholder"
957
+ [attr.title]="title"
958
+ [attr.id]="inputId"
959
+ [attr.size]="size"
960
+ [attr.name]="name"
961
+ [attr.autocomplete]="autocomplete"
962
+ [attr.maxlength]="maxlength"
963
+ [attr.tabindex]="tabindex"
964
+ [attr.aria-label]="ariaLabel"
965
+ [attr.aria-required]="ariaRequired"
966
+ [disabled]="disabled"
967
+ [attr.required]="required"
968
+ [attr.min]="min"
969
+ [attr.max]="max"
970
+ [readonly]="readonly"
971
+ inputmode="decimal"
972
+ (input)="onUserInput($event)"
973
+ (keydown)="onInputKeyDown($event)"
974
+ (keypress)="onInputKeyPress($event)"
975
+ (paste)="onPaste($event)"
976
+ (click)="onInputClick()"
977
+ (focus)="onInputFocus($event)"
978
+ (blur)="onInputBlur($event)"
979
+ />
980
+ <ng-container *ngIf="buttonLayout != 'vertical' && showClear && value">
981
+ <TimesIcon *ngIf="!clearIconTemplate" [ngClass]="'p-inputnumber-clear-icon'" (click)="clear()"/>
982
+ <span *ngIf="clearIconTemplate" (click)="clear()" class="p-inputnumber-clear-icon">
983
+ <ng-template *ngTemplateOutlet="clearIconTemplate"></ng-template>
984
+ </span>
985
+ </ng-container>
986
+
987
+ <span class="p-inputnumber-button-group" *ngIf="showButtons && buttonLayout === 'stacked'">
988
+ <button
989
+ type="button"
990
+ pButton
991
+ [ngClass]="{ 'p-inputnumber-button p-inputnumber-button-up': true }"
992
+ class="p-button-icon-only"
993
+ [class]="incrementButtonClass"
994
+ [disabled]="disabled"
995
+ (mousedown)="onUpButtonMouseDown($event)"
996
+ (mouseup)="onUpButtonMouseUp()"
997
+ (mouseleave)="onUpButtonMouseLeave()"
998
+ (keydown)="onUpButtonKeyDown($event)"
999
+ (keyup)="onUpButtonKeyUp()"
1000
+ tabindex="-1"
1001
+ >
1002
+ <span *ngIf="incrementButtonIcon" [ngClass]="incrementButtonIcon"></span>
1003
+ <ng-container *ngIf="!incrementButtonIcon">
1004
+ <AngleUpIcon *ngIf="!incrementButtonIconTemplate"/>
1005
+ <ng-template *ngTemplateOutlet="incrementButtonIconTemplate"></ng-template>
1006
+ </ng-container>
1007
+ </button>
1008
+ <button
1009
+ type="button"
1010
+ pButton
1011
+ [ngClass]="{ 'p-inputnumber-button p-inputnumber-button-down': true }"
1012
+ class="p-button-icon-only"
1013
+ [class]="decrementButtonClass"
1014
+ [disabled]="disabled"
1015
+ (mousedown)="onDownButtonMouseDown($event)"
1016
+ (mouseup)="onDownButtonMouseUp()"
1017
+ (mouseleave)="onDownButtonMouseLeave()"
1018
+ (keydown)="onDownButtonKeyDown($event)"
1019
+ (keyup)="onDownButtonKeyUp()"
1020
+ tabindex="-1"
1021
+ >
1022
+ <span *ngIf="decrementButtonIcon" [ngClass]="decrementButtonIcon"></span>
1023
+ <ng-container *ngIf="!decrementButtonIcon">
1024
+ <AngleDownIcon *ngIf="!decrementButtonIconTemplate"/>
1025
+ <ng-template *ngTemplateOutlet="decrementButtonIconTemplate"></ng-template>
1026
+ </ng-container>
1027
+ </button>
1028
+ </span>
1029
+ <button
1030
+ type="button"
1031
+ pButton
1032
+ [ngClass]="{ 'p-inputnumber-button p-inputnumber-button-up': true }"
1033
+ [class]="incrementButtonClass"
1034
+ class="p-button-icon-only"
1035
+ *ngIf="showButtons && buttonLayout !== 'stacked'"
1036
+ [disabled]="disabled"
1037
+ (mousedown)="onUpButtonMouseDown($event)"
1038
+ (mouseup)="onUpButtonMouseUp()"
1039
+ (mouseleave)="onUpButtonMouseLeave()"
1040
+ (keydown)="onUpButtonKeyDown($event)"
1041
+ (keyup)="onUpButtonKeyUp()"
1042
+ tabindex="-1"
1043
+ >
1044
+ <span *ngIf="incrementButtonIcon" [ngClass]="incrementButtonIcon"></span>
1045
+ <ng-container *ngIf="!incrementButtonIcon">
1046
+ <AngleUpIcon *ngIf="!incrementButtonIconTemplate"/>
1047
+ <ng-template *ngTemplateOutlet="incrementButtonIconTemplate"></ng-template>
1048
+ </ng-container>
1049
+ </button>
1050
+ <button
1051
+ type="button"
1052
+ pButton
1053
+ [ngClass]="{ 'p-inputnumber-button p-inputnumber-button-down': true }"
1054
+ class="p-button-icon-only"
1055
+ [class]="decrementButtonClass"
1056
+ *ngIf="showButtons && buttonLayout !== 'stacked'"
1057
+ [disabled]="disabled"
1058
+ (mousedown)="onDownButtonMouseDown($event)"
1059
+ (mouseup)="onDownButtonMouseUp()"
1060
+ (mouseleave)="onDownButtonMouseLeave()"
1061
+ (keydown)="onDownButtonKeyDown($event)"
1062
+ (keyup)="onDownButtonKeyUp()"
1063
+ tabindex="-1"
1064
+ >
1065
+ <span *ngIf="decrementButtonIcon" [ngClass]="decrementButtonIcon"></span>
1066
+ <ng-container *ngIf="!decrementButtonIcon">
1067
+ <AngleDownIcon *ngIf="!decrementButtonIconTemplate"/>
1068
+ <ng-template *ngTemplateOutlet="decrementButtonIconTemplate"></ng-template>
1069
+ </ng-container>
1070
+ </button>
1071
+ </span>
1072
+ `, changeDetection: ChangeDetectionStrategy.OnPush, providers: [INPUTNUMBER_VALUE_ACCESSOR], encapsulation: ViewEncapsulation.None, host: {
1073
+ class: 'p-element p-inputwrapper',
1074
+ '[class.p-inputwrapper-filled]': 'filled',
1075
+ '[class.p-inputwrapper-focus]': 'focused',
1076
+ '[class.p-inputnumber-clearable]': 'showClear && buttonLayout != "vertical"'
1077
+ }, styles: ["p-inputnumber,.p-inputnumber{display:inline-flex}.p-inputnumber-button{display:flex;align-items:center;justify-content:center;flex:0 0 auto}.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button .p-button-label,.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button .p-button-label{display:none}.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button-up{border-top-left-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0;padding:0}.p-inputnumber-buttons-stacked .p-inputnumber-input{border-top-right-radius:0;border-bottom-right-radius:0}.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button-down{border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:0;padding:0}.p-inputnumber-buttons-stacked .p-inputnumber-button-group{display:flex;flex-direction:column}.p-inputnumber-buttons-stacked .p-inputnumber-button-group .p-button.p-inputnumber-button{flex:1 1 auto}.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-up{order:3;border-top-left-radius:0;border-bottom-left-radius:0}.p-inputnumber-buttons-horizontal .p-inputnumber-input{order:2;border-radius:0}.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-down{order:1;border-top-right-radius:0;border-bottom-right-radius:0}.p-inputnumber-buttons-vertical{flex-direction:column}.p-inputnumber-buttons-vertical .p-button.p-inputnumber-button-up{order:1;border-bottom-left-radius:0;border-bottom-right-radius:0;width:100%}.p-inputnumber-buttons-vertical .p-inputnumber-input{order:2;border-radius:0;text-align:center}.p-inputnumber-buttons-vertical .p-button.p-inputnumber-button-down{order:3;border-top-left-radius:0;border-top-right-radius:0;width:100%}.p-inputnumber-input{flex:1 1 auto}.p-fluid p-inputnumber,.p-fluid .p-inputnumber{width:100%}.p-fluid .p-inputnumber .p-inputnumber-input{width:1%}.p-fluid .p-inputnumber-buttons-vertical .p-inputnumber-input{width:100%}.p-inputnumber-clear-icon{position:absolute;top:50%;margin-top:-.5rem;cursor:pointer}.p-inputnumber-clearable{position:relative}\n"] }]
1078
+ }], ctorParameters: function () { return [{ type: Document, decorators: [{
1079
+ type: Inject,
1080
+ args: [DOCUMENT]
1081
+ }] }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { showButtons: [{
1082
+ type: Input
1083
+ }], format: [{
1084
+ type: Input
1085
+ }], buttonLayout: [{
1086
+ type: Input
1087
+ }], inputId: [{
1088
+ type: Input
1089
+ }], styleClass: [{
1090
+ type: Input
1091
+ }], style: [{
1092
+ type: Input
1093
+ }], placeholder: [{
1094
+ type: Input
1095
+ }], size: [{
1096
+ type: Input
1097
+ }], maxlength: [{
1098
+ type: Input
1099
+ }], tabindex: [{
1100
+ type: Input
1101
+ }], title: [{
1102
+ type: Input
1103
+ }], ariaLabel: [{
1104
+ type: Input
1105
+ }], ariaRequired: [{
1106
+ type: Input
1107
+ }], name: [{
1108
+ type: Input
1109
+ }], required: [{
1110
+ type: Input
1111
+ }], autocomplete: [{
1112
+ type: Input
1113
+ }], min: [{
1114
+ type: Input
1115
+ }], max: [{
1116
+ type: Input
1117
+ }], incrementButtonClass: [{
1118
+ type: Input
1119
+ }], decrementButtonClass: [{
1120
+ type: Input
1121
+ }], incrementButtonIcon: [{
1122
+ type: Input
1123
+ }], decrementButtonIcon: [{
1124
+ type: Input
1125
+ }], readonly: [{
1126
+ type: Input
1127
+ }], step: [{
1128
+ type: Input
1129
+ }], allowEmpty: [{
1130
+ type: Input
1131
+ }], locale: [{
1132
+ type: Input
1133
+ }], localeMatcher: [{
1134
+ type: Input
1135
+ }], mode: [{
1136
+ type: Input
1137
+ }], currency: [{
1138
+ type: Input
1139
+ }], currencyDisplay: [{
1140
+ type: Input
1141
+ }], useGrouping: [{
1142
+ type: Input
1143
+ }], minFractionDigits: [{
1144
+ type: Input
1145
+ }], maxFractionDigits: [{
1146
+ type: Input
1147
+ }], prefix: [{
1148
+ type: Input
1149
+ }], suffix: [{
1150
+ type: Input
1151
+ }], inputStyle: [{
1152
+ type: Input
1153
+ }], inputStyleClass: [{
1154
+ type: Input
1155
+ }], showClear: [{
1156
+ type: Input
1157
+ }], input: [{
1158
+ type: ViewChild,
1159
+ args: ['input']
1160
+ }], onInput: [{
1161
+ type: Output
1162
+ }], onFocus: [{
1163
+ type: Output
1164
+ }], onBlur: [{
1165
+ type: Output
1166
+ }], onKeyDown: [{
1167
+ type: Output
1168
+ }], onClear: [{
1169
+ type: Output
1170
+ }], templates: [{
1171
+ type: ContentChildren,
1172
+ args: [QiusTemplate]
1173
+ }], disabled: [{
1174
+ type: Input
1175
+ }] } });
1176
+ export class InputNumberModule {
1177
+ }
1178
+ InputNumberModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: InputNumberModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1179
+ InputNumberModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: InputNumberModule, declarations: [InputNumber], imports: [CommonModule, InputTextModule, ButtonModule, TimesIcon, AngleUpIcon, AngleDownIcon], exports: [InputNumber, SharedModule] });
1180
+ InputNumberModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: InputNumberModule, imports: [CommonModule, InputTextModule, ButtonModule, TimesIcon, AngleUpIcon, AngleDownIcon, SharedModule] });
1181
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: InputNumberModule, decorators: [{
1182
+ type: NgModule,
1183
+ args: [{
1184
+ imports: [CommonModule, InputTextModule, ButtonModule, TimesIcon, AngleUpIcon, AngleDownIcon],
1185
+ exports: [InputNumber, SharedModule],
1186
+ declarations: [InputNumber]
1187
+ }]
1188
+ }] });
1189
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXRudW1iZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvaW5wdXRudW1iZXIvaW5wdXRudW1iZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQ0gsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFFUixNQUFNLEVBSU4sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDaEYsT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNyRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saURBQWlELENBQUM7QUFDNUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxREFBcUQsQ0FBQzs7Ozs7QUFFcEYsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQVE7SUFDM0MsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQztJQUMxQyxLQUFLLEVBQUUsSUFBSTtDQUNkLENBQUM7QUFxSkYsTUFBTSxPQUFPLFdBQVc7SUF1SnBCLFlBQXNDLFFBQWtCLEVBQVMsRUFBYyxFQUFVLEVB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T0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxhQUFhLENBQUM7b0JBQzdGLE9BQU8sRUFBRSxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUM7b0JBQ3BDLFlBQVksRUFBRSxDQUFDLFdBQVcsQ0FBQztpQkFDOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUsIERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBOZ01vZHVsZSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BxaXVzLnNvbHV0aW9ucy9wYXJhbGxlbC11aS1hbmd1bGFyL2J1dHRvbic7XG5pbXBvcnQgeyBEb21IYW5kbGVyIH0gZnJvbSAnQHFpdXMuc29sdXRpb25zL3BhcmFsbGVsLXVpLWFuZ3VsYXIvZG9tJztcbmltcG9ydCB7IElucHV0VGV4dE1vZHVsZSB9IGZyb20gJ0BxaXVzLnNvbHV0aW9ucy9wYXJhbGxlbC11aS1hbmd1bGFyL2lucHV0dGV4dCc7XG5pbXBvcnQgeyBRaXVzVGVtcGxhdGUsIFNoYXJlZE1vZHVsZSB9IGZyb20gJ0BxaXVzLnNvbHV0aW9ucy9wYXJhbGxlbC11aS1hbmd1bGFyL2FwaSc7XG5pbXBvcnQgeyBUaW1lc0ljb24gfSBmcm9tICdAcWl1cy5zb2x1dGlvbnMvcGFyYWxsZWwtdWktYW5ndWxhci9pY29ucy90aW1lcyc7XG5pbXBvcnQgeyBBbmdsZVVwSWNvbiB9IGZyb20gJ0BxaXVzLnNvbHV0aW9ucy9wYXJhbGxlbC11aS1hbmd1bGFyL2ljb25zL2FuZ2xldXAnO1xuaW1wb3J0IHsgQW5nbGVEb3duSWNvbiB9IGZyb20gJ0BxaXVzLnNvbHV0aW9ucy9wYXJhbGxlbC11aS1hbmd1bGFyL2ljb25zL2FuZ2xlZG93bic7XG5cbmV4cG9ydCBjb25zdCBJTlBVVE5VTUJFUl9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElucHV0TnVtYmVyKSxcbiAgICBtdWx0aTogdHJ1ZVxufTtcbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1pbnB1dE51bWJlcicsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAncC1pbnB1dG51bWJlciBwLWNvbXBvbmVudCc6IHRydWUsXG4gICAgICAgICAgICAgICAgJ3AtaW5wdXRudW1iZXItYnV0dG9ucy1zdGFja2VkJzogdGhpcy5zaG93QnV0dG9ucyAmJiB0aGlzLmJ1dHRvbkxheW91dCA9PT0gJ3N0YWNrZWQnLFxuICAgICAgICAgICAgICAgICdwLWlucHV0bnVtYmVyLWJ1dHRvbnMtaG9yaXpvbnRhbCc6IHRoaXMuc2hvd0J1dHRvbnMgJiYgdGhpcy5idXR0b25MYXlvdXQgPT09ICdob3Jpem9udGFsJyxcbiAgICAgICAgICAgICAgICAncC1pbnB1dG51bWJlci1idXR0b25zLXZlcnRpY2FsJzogdGhpcy5zaG93QnV0dG9ucyAmJiB0aGlzLmJ1dHRvbkxheW91dCA9PT0gJ3ZlcnRpY2FsJ1xuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJzdHlsZVwiXG4gICAgICAgICAgICBbY2xhc3NdPVwic3R5bGVDbGFzc1wiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICNpbnB1dFxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIidwLWlucHV0bnVtYmVyLWlucHV0J1wiXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwiaW5wdXRTdHlsZVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cImlucHV0U3R5bGVDbGFzc1wiXG4gICAgICAgICAgICAgICAgcElucHV0VGV4dFxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJmb3JtYXR0ZWRWYWx1ZSgpXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwidGl0bGVcIlxuICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cImlucHV0SWRcIlxuICAgICAgICAgICAgICAgIFthdHRyLnNpemVdPVwic2l6ZVwiXG4gICAgICAgICAgICAgICAgW2F0dHIubmFtZV09XCJuYW1lXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hdXRvY29tcGxldGVdPVwiYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5tYXhsZW5ndGhdPVwibWF4bGVuZ3RoXCJcbiAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJ0YWJpbmRleFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwiYXJpYVJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFthdHRyLnJlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5taW5dPVwibWluXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5tYXhdPVwibWF4XCJcbiAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgIGlucHV0bW9kZT1cImRlY2ltYWxcIlxuICAgICAgICAgICAgICAgIChpbnB1dCk9XCJvblVzZXJJbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbklucHV0S2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib25JbnB1dEtleVByZXNzKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChwYXN0ZSk9XCJvblBhc3RlKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbklucHV0Q2xpY2soKVwiXG4gICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uSW5wdXRGb2N1cygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoYmx1cik9XCJvbklucHV0Qmx1cigkZXZlbnQpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYnV0dG9uTGF5b3V0ICE9ICd2ZXJ0aWNhbCcgJiYgc2hvd0NsZWFyICYmIHZhbHVlXCI+XG4gICAgICAgICAgICAgICAgPFRpbWVzSWNvbiAqbmdJZj1cIiFjbGVhckljb25UZW1wbGF0ZVwiIFtuZ0NsYXNzXT1cIidwLWlucHV0bnVtYmVyLWNsZWFyLWljb24nXCIgKGNsaWNrKT1cImNsZWFyKClcIi8+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjbGVhckljb25UZW1wbGF0ZVwiIChjbGljayk9XCJjbGVhcigpXCIgY2xhc3M9XCJwLWlucHV0bnVtYmVyLWNsZWFyLWljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2xlYXJJY29uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj4gICAgICAgICAgICBcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtaW5wdXRudW1iZXItYnV0dG9uLWdyb3VwXCIgKm5nSWY9XCJzaG93QnV0dG9ucyAmJiBidXR0b25MYXlvdXQgPT09ICdzdGFja2VkJ1wiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAncC1pbnB1dG51bWJlci1idXR0b24gcC1pbnB1dG51bWJlci1idXR0b24tdXAnOiB0cnVlIH1cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLWljb24tb25seVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJpbmNyZW1lbnRCdXR0b25DbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25VcEJ1dHRvbk1vdXNlRG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKG1vdXNldXApPVwib25VcEJ1dHRvbk1vdXNlVXAoKVwiXG4gICAgICAgICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cIm9uVXBCdXR0b25Nb3VzZUxlYXZlKClcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvblVwQnV0dG9uS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleXVwKT1cIm9uVXBCdXR0b25LZXlVcCgpXCJcbiAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaW5jcmVtZW50QnV0dG9uSWNvblwiIFtuZ0NsYXNzXT1cImluY3JlbWVudEJ1dHRvbkljb25cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpbmNyZW1lbnRCdXR0b25JY29uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxBbmdsZVVwSWNvbiAqbmdJZj1cIiFpbmNyZW1lbnRCdXR0b25JY29uVGVtcGxhdGVcIi8+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cImluY3JlbWVudEJ1dHRvbkljb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdwLWlucHV0bnVtYmVyLWJ1dHRvbiBwLWlucHV0bnVtYmVyLWJ1dHRvbi1kb3duJzogdHJ1ZSB9XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1pY29uLW9ubHlcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZGVjcmVtZW50QnV0dG9uQ2xhc3NcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uRG93bkJ1dHRvbk1vdXNlRG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKG1vdXNldXApPVwib25Eb3duQnV0dG9uTW91c2VVcCgpXCJcbiAgICAgICAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwib25Eb3duQnV0dG9uTW91c2VMZWF2ZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25Eb3duQnV0dG9uS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleXVwKT1cIm9uRG93bkJ1dHRvbktleVVwKClcIlxuICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkZWNyZW1lbnRCdXR0b25JY29uXCIgW25nQ2xhc3NdPVwiZGVjcmVtZW50QnV0dG9uSWNvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWRlY3JlbWVudEJ1dHRvbkljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPEFuZ2xlRG93bkljb24gKm5nSWY9XCIhZGVjcmVtZW50QnV0dG9uSWNvblRlbXBsYXRlXCIvPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkZWNyZW1lbnRCdXR0b25JY29uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3AtaW5wdXRudW1iZXItYnV0dG9uIHAtaW5wdXRudW1iZXItYnV0dG9uLXVwJzogdHJ1ZSB9XCJcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwiaW5jcmVtZW50QnV0dG9uQ2xhc3NcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24taWNvbi1vbmx5XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dCdXR0b25zICYmIGJ1dHRvbkxheW91dCAhPT0gJ3N0YWNrZWQnXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25VcEJ1dHRvbk1vdXNlRG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAobW91c2V1cCk9XCJvblVwQnV0dG9uTW91c2VVcCgpXCJcbiAgICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJvblVwQnV0dG9uTW91c2VMZWF2ZSgpXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvblVwQnV0dG9uS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoa2V5dXApPVwib25VcEJ1dHRvbktleVVwKClcIlxuICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaW5jcmVtZW50QnV0dG9uSWNvblwiIFtuZ0NsYXNzXT1cImluY3JlbWVudEJ1dHRvbkljb25cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpbmNyZW1lbnRCdXR0b25JY29uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxBbmdsZVVwSWNvbiAqbmdJZj1cIiFpbmNyZW1lbnRCdXR0b25JY29uVGVtcGxhdGVcIi8+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cImluY3JlbWVudEJ1dHRvbkljb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAncC1pbnB1dG51bWJlci1idXR0b24gcC1pbnB1dG51bWJlci1idXR0b24tZG93bic6IHRydWUgfVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1pY29uLW9ubHlcIlxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJkZWNyZW1lbnRCdXR0b25DbGFzc1wiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93QnV0dG9ucyAmJiBidXR0b25MYXlvdXQgIT09ICdzdGFja2VkJ1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uRG93bkJ1dHRvbk1vdXNlRG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAobW91c2V1cCk9XCJvbkRvd25CdXR0b25Nb3VzZVVwKClcIlxuICAgICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cIm9uRG93bkJ1dHRvbk1vdXNlTGVhdmUoKVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25Eb3duQnV0dG9uS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoa2V5dXApPVwib25Eb3duQnV0dG9uS2V5VXAoKVwiXG4gICAgICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRlY3JlbWVudEJ1dHRvbkljb25cIiBbbmdDbGFzc109XCJkZWNyZW1lbnRCdXR0b25JY29uXCI+PC9zcGFuPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkZWNyZW1lbnRCdXR0b25JY29uXCI+XG4gICAgICAgICAgICAgICAgPEFuZ2xlRG93bkljb24gKm5nSWY9XCIhZGVjcmVtZW50QnV0dG9uSWNvblRlbXBsYXRlXCIvPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cImRlY3JlbWVudEJ1dHRvbkljb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvc3Bhbj5cbiAgICBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW0lOUFVUTlVNQkVSX1ZBTFVFX0FDQ0VTU09SXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0eWxlVXJsczogWycuL2lucHV0bnVtYmVyLmNzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdwLWVsZW1lbnQgcC1pbnB1dHdyYXBwZXInLFxuICAgICAgICAnW2NsYXNzLnAtaW5wdXR3cmFwcGVyLWZpbGxlZF0nOiAnZmlsbGVkJyxcbiAgICAgICAgJ1tjbGFzcy5wLWlucHV0d3JhcHBlci1mb2N1c10nOiAnZm9jdXNlZCcsXG4gICAgICAgICdbY2xhc3MucC1pbnB1dG51bWJlci1jbGVhcmFibGVdJzogJ3Nob3dDbGVhciAmJiBidXR0b25MYXlvdXQgIT0gXCJ2ZXJ0aWNhbFwiJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgSW5wdXROdW1iZXIgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgQElucHV0KCkgc2hvd0J1dHRvbnM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIGZvcm1hdDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBidXR0b25MYXlvdXQ6IHN0cmluZyA9ICdzdGFja2VkJztcblxuICAgIEBJbnB1dCgpIGlucHV0SWQ6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHN0eWxlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgc2l6ZTogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgbWF4bGVuZ3RoOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSB0YWJpbmRleDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGFyaWFMYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgYXJpYVJlcXVpcmVkOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgbmFtZTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBhdXRvY29tcGxldGU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIG1pbjogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgbWF4OiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBpbmNyZW1lbnRCdXR0b25DbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgZGVjcmVtZW50QnV0dG9uQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGluY3JlbWVudEJ1dHRvbkljb246IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGRlY3JlbWVudEJ1dHRvbkljb246IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBzdGVwOiBudW1iZXIgPSAxO1xuXG4gICAgQElucHV0KCkgYWxsb3dFbXB0eTogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBsb2NhbGU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGxvY2FsZU1hdGNoZXI6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIG1vZGU6IHN0cmluZyA9ICdkZWNpbWFsJztcblxuICAgIEBJbnB1dCgpIGN1cnJlbmN5OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBjdXJyZW5jeURpc3BsYXk6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHVzZUdyb3VwaW5nOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIG1pbkZyYWN0aW9uRGlnaXRzOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBtYXhGcmFjdGlvbkRpZ2l0czogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgcHJlZml4OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBzdWZmaXg6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGlucHV0U3R5bGU6IGFueTtcblxuICAgIEBJbnB1dCgpIGlucHV0U3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgc2hvd0NsZWFyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBAVmlld0NoaWxkKCdpbnB1dCcpIGlucHV0OiBFbGVtZW50UmVmO1xuXG4gICAgQE91dHB1dCgpIG9uSW5wdXQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uRm9jdXM6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uQmx1cjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25LZXlEb3duOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbkNsZWFyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oUWl1c1RlbXBsYXRlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxhbnk+O1xuXG4gICAgY2xlYXJJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBpbmNyZW1lbnRCdXR0b25JY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBkZWNyZW1lbnRCdXR0b25JY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICB2YWx1ZTogbnVtYmVyO1xuXG4gICAgb25Nb2RlbENoYW5nZTogRnVuY3Rpb24gPSAoKSA9PiB7fTtcblxuICAgIG9uTW9kZWxUb3VjaGVkOiBGdW5jdGlvbiA9ICgpID0+IHt9O1xuXG4gICAgZm9jdXNlZDogYm9vbGVhbjtcblxuICAgIGluaXRpYWxpemVkOiBib29sZWFuO1xuXG4gICAgZ3JvdXBDaGFyOiBzdHJpbmcgPSAnJztcblxuICAgIHByZWZpeENoYXI6IHN0cmluZyA9ICcnO1xuXG4gICAgc3VmZml4Q2hhcjogc3RyaW5nID0gJyc7XG5cbiAgICBpc1NwZWNpYWxDaGFyOiBib29sZWFuO1xuXG4gICAgdGltZXI6IGFueTtcblxuICAgIGxhc3RWYWx1ZTogc3RyaW5nO1xuXG4gICAgX251bWVyYWw6IGFueTtcblxuICAgIG51bWJlckZvcm1hdDogYW55O1xuXG4gICAgX2RlY2ltYWw6IGFueTtcblxuICAgIF9ncm91cDogYW55O1xuXG4gICAgX21pbnVzU2lnbjogYW55O1xuXG4gICAgX2N1cnJlbmN5OiBhbnk7XG5cbiAgICBfcHJlZml4OiBhbnk7XG5cbiAgICBfc3VmZml4OiBhbnk7XG5cbiAgICBfaW5kZXg6IGFueTtcblxuICAgIF9kaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cblxuICAgIHNldCBkaXNhYmxlZChkaXNhYmxlZDogYm9vbGVhbikge1xuICAgICAgICBpZiAoZGlzYWJsZWQpIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gZGlzYWJsZWQ7XG5cbiAgICAgICAgaWYgKHRoaXMudGltZXIpIHRoaXMuY2xlYXJUaW1lcigpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LCBwdWJsaWMgZWw6IEVsZW1lbnRSZWYsIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gICAgbmdPbkNoYW5nZXMoc2ltcGxlQ2hhbmdlOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGNvbnN0IHByb3BzID0gWydsb2NhbGUnLCAnbG9jYWxlTWF0Y2hlcicsICdtb2RlJywgJ2N1cnJlbmN5JywgJ2N1cnJlbmN5RGlzcGxheScsICd1c2VHcm91cGluZycsICdtaW5GcmFjdGlvbkRpZ2l0cycsICdtYXhGcmFjdGlvbkRpZ2l0cycsICdwcmVmaXgnLCAnc3VmZml4J107XG4gICAgICAgIGlmIChwcm9wcy5zb21lKChwKSA9PiAhIXNpbXBsZUNoYW5nZVtwXSkpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ29uc3RydWN0UGFyc2VyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAoaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdjbGVhcmljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFySWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdpbmNyZW1lbnRidXR0b25pY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmNyZW1lbnRCdXR0b25JY29uVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2RlY3JlbWVudGJ1dHRvbmljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlY3JlbWVudEJ1dHRvbkljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5jb25zdHJ1Y3RQYXJzZXIoKTtcblxuICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBnZXRPcHRpb25zKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbG9jYWxlTWF0Y2hlcjogdGhpcy5sb2NhbGVNYXRjaGVyLFxuICAgICAgICAgICAgc3R5bGU6IHRoaXMubW9kZSxcbiAgICAgICAgICAgIGN1cnJlbmN5OiB0aGlzLmN1cnJlbmN5LFxuICAgICAgICAgICAgY3VycmVuY3lEaXNwbGF5OiB0aGlzLmN1cnJlbmN5RGlzcGxheSxcbiAgICAgICAgICAgIHVzZUdyb3VwaW5nOiB0aGlzLnVzZUdyb3VwaW5nLFxuICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiB0aGlzLm1pbkZyYWN0aW9uRGlnaXRzLFxuICAgICAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiB0aGlzLm1heEZyYWN0aW9uRGlnaXRzXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3RydWN0UGFyc2VyKCkge1xuICAgICAgICB0aGlzLm51bWJlckZvcm1hdCA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCh0aGlzLmxvY2FsZSwgdGhpcy5nZXRPcHRpb25zKCkpO1xuICAgICAgICBjb25zdCBudW1lcmFscyA9IFsuLi5uZXcgSW50bC5OdW1iZXJGb3JtYXQodGhpcy5sb2NhbGUsIHsgdXNlR3JvdXBpbmc6IGZhbHNlIH0pLmZvcm1hdCg5ODc2NTQzMjEwKV0ucmV2ZXJzZSgpO1xuICAgICAgICBjb25zdCBpbmRleCA9IG5ldyBNYXAobnVtZXJhbHMubWFwKChkLCBpKSA9PiBbZCwgaV0pKTtcbiAgICAgICAgdGhpcy5fbnVtZXJhbCA9IG5ldyBSZWdFeHAoYFske251bWVyYWxzLmpvaW4oJycpfV1gLCAnZycpO1xuICAgICAgICB0aGlzLl9ncm91cCA9IHRoaXMuZ2V0R3JvdXBpbmdFeHByZXNzaW9uKCk7XG4gICAgICAgIHRoaXMuX21pbnVzU2lnbiA9IHRoaXMuZ2V0TWludXNTaWduRXhwcmVzc2lvbigpO1xuICAgICAgICB0aGlzLl9jdXJyZW5jeSA9IHRoaXMuZ2V0Q3VycmVuY3lFeHByZXNzaW9uKCk7XG4gICAgICAgIHRoaXMuX2RlY2ltYWwgPSB0aGlzLmdldERlY2ltYWxFeHByZXNzaW9uKCk7XG4gICAgICAgIHRoaXMuX3N1ZmZpeCA9IHRoaXMuZ2V0U3VmZml4RXhwcmVzc2lvbigpO1xuICAgICAgICB0aGlzLl9wcmVmaXggPSB0aGlzLmdldFByZWZpeEV4cHJlc3Npb24oKTtcbiAgICAgICAgdGhpcy5faW5kZXggPSAoZCkgPT4gaW5kZXguZ2V0KGQpO1xuICAgIH1cblxuICAgIHVwZGF0ZUNvbnN0cnVjdFBhcnNlcigpIHtcbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY29uc3RydWN0UGFyc2VyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBlc2NhcGVSZWdFeHAodGV4dCkge1xuICAgICAgICByZXR1cm4gdGV4dC5yZXBsYWNlKC9bLVtcXF17fSgpKis/LixcXFxcXiR8I1xcc10vZywgJ1xcXFwkJicpO1xuICAgIH1cblxuICAgIGdldERlY2ltYWxFeHByZXNzaW9uKCkge1xuICAgICAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQodGhpcy5sb2NhbGUsIHsgLi4udGhpcy5nZXRPcHRpb25zKCksIHVzZUdyb3VwaW5nOiBmYWxzZSB9KTtcbiAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAoYFske2Zvcm1hdHRlci5mb3JtYXQoMS4xKS5yZXBsYWNlKHRoaXMuX2N1cnJlbmN5LCAnJykudHJpbSgpLnJlcGxhY2UodGhpcy5fbnVtZXJhbCwgJycpfV1gLCAnZycpO1xuICAgIH1cblxuICAgIGdldEdyb3VwaW5nRXhwcmVzc2lvbigpIHtcbiAgICAgICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KHRoaXMubG9jYWxlLCB7IHVzZUdyb3VwaW5nOiB0cnVlIH0pO1xuICAgICAgICB0aGlzLmdyb3VwQ2hhciA9IGZvcm1hdHRlci5mb3JtYXQoMTAwMDAwMCkudHJpbSgpLnJlcGxhY2UodGhpcy5fbnVtZXJhbCwgJycpLmNoYXJBdCgwKTtcbiAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAoYFske3RoaXMuZ3JvdXBDaGFyfV1gLCAnZycpO1xuICAgIH1cblxuICAgIGdldE1pbnVzU2lnbkV4cHJlc3Npb24oKSB7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCh0aGlzLmxvY2FsZSwgeyB1c2VHcm91cGluZzogZmFsc2UgfSk7XG4gICAgICAgIHJldHVybiBuZXcgUmVnRXhwKGBbJHtmb3JtYXR0ZXIuZm9ybWF0KC0xKS50cmltKCkucmVwbGFjZSh0aGlzLl9udW1lcmFsLCAnJyl9XWAsICdnJyk7XG4gICAgfVxuXG4gICAgZ2V0Q3VycmVuY3lFeHByZXNzaW9uKCkge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW5jeSkge1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KHRoaXMubG9jYWxlLCB7IHN0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogdGhpcy5jdXJyZW5jeSwgY3VycmVuY3lEaXNwbGF5OiB0aGlzLmN1cnJlbmN5RGlzcGxheSwgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAwLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDAgfSk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChgWyR7Zm9ybWF0dGVyLmZvcm1hdCgxKS5yZXBsYWNlKC9cXHMvZywgJycpLnJlcGxhY2UodGhpcy5fbnVtZXJhbCwgJycpLnJlcGxhY2UodGhpcy5fZ3JvdXAsICcnKX1dYCwgJ2cnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXcgUmVnRXhwKGBbXWAsICdnJyk7XG4gICAgfVxuXG4gICAgZ2V0UHJlZml4RXhwcmVzc2lvbigpIHtcbiAgICAgICAgaWYgKHRoaXMucHJlZml4KSB7XG4gICAgICAgICAgICB0aGlzLnByZWZpeENoYXIgPSB0aGlzLnByZWZpeDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCh0aGlzLmxvY2FsZSwgeyBzdHlsZTogdGhpcy5tb2RlLCBjdXJyZW5jeTogdGhpcy5jdXJyZW5jeSwgY3VycmVuY3lEaXNwbGF5OiB0aGlzLmN1cnJlbmN5RGlzcGxheSB9KTtcbiAgICAgICAgICAgIHRoaXMucHJlZml4Q2hhciA9IGZvcm1hdHRlci5mb3JtYXQoMSkuc3BsaXQoJzEnKVswXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXcgUmVnRXhwKGAke3RoaXMuZXNjYXBlUmVnRXhwKHRoaXMucHJlZml4Q2hhciB8fCAnJyl9YCwgJ2cnKTtcbiAgICB9XG5cbiAgICBnZXRTdWZmaXhFeHByZXNzaW9uKCkge1xuICAgICAgICBpZiAodGhpcy5zdWZmaXgpIHtcbiAgICAgICAgICAgIHRoaXMuc3VmZml4Q2hhciA9IHRoaXMuc3VmZml4O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KHRoaXMubG9jYWxlLCB7IHN0eWxlOiB0aGlzLm1vZGUsIGN1cnJlbmN5OiB0aGlzLmN1cnJlbmN5LCBjdXJyZW5jeURpc3BsYXk6IHRoaXMuY3VycmVuY3lEaXNwbGF5LCBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDAsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMCB9KTtcbiAgICAgICAgICAgIHRoaXMuc3VmZml4Q2hhciA9IGZvcm1hdHRlci5mb3JtYXQoMSkuc3BsaXQoJzEnKVsxXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXcgUmVnRXhwKGAke3RoaXMuZXNjYXBlUmVnRXhwKHRoaXMuc3VmZml4Q2hhciB8fCAnJyl9YCwgJ2cnKTtcbiAgICB9XG5cbiAgICBmb3JtYXRWYWx1ZSh2YWx1ZSkge1xuICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHZhbHVlID09PSAnLScpIHtcbiAgICAgICAgICAgICAgICAvLyBNaW51cyBzaWduXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtYXQpIHtcbiAgICAgICAgICAgICAgICBsZXQgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KHRoaXMubG9jYWxlLCB0aGlzLmdldE9wdGlvbnMoKSk7XG4gICAgICAgICAgICAgICAgbGV0IGZvcm1hdHRlZFZhbHVlID0gZm9ybWF0dGVyLmZvcm1hdCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucHJlZml4KSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZFZhbHVlID0gdGhpcy5wcmVmaXggKyBmb3JtYXR0ZWRWYWx1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdWZmaXgpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkVmFsdWUgPSBmb3JtYXR0ZWRWYWx1ZSArIHRoaXMuc3VmZml4O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBmb3JtYXR0ZWRWYWx1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgcGFyc2VWYWx1ZSh0ZXh0KSB7XG4gICAgICAgIGxldCBmaWx0ZXJlZFRleHQgPSB0ZXh0XG4gICAgICAgICAgICAucmVwbGFjZSh0aGlzLl9zdWZmaXgsICcnKVxuICAgICAgICAgICAgLnJlcGxhY2UodGhpcy5fcHJlZml4LCAnJylcbiAgICAgICAgICAgIC50cmltKClcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXHMvZywgJycpXG4gICAgICAgICAgICAucmVwbGFjZSh0aGlzLl9jdXJyZW5jeSwgJycpXG4gICAgICAgICAgICAucmVwbGFjZSh0aGlzLl9ncm91cCwgJycpXG4gICAgICAgICAgICAucmVwbGFjZSh0aGlzLl9taW51c1NpZ24sICctJylcbiAgICAgICAgICAgIC5yZXBsYWNlKHRoaXMuX2RlY2ltYWwsICcuJylcbiAgICAgICAgICAgIC5yZXBsYWNlKHRoaXMuX251bWVyYWwsIHRoaXMuX2luZGV4KTtcblxuICAgICAgICBpZiAoZmlsdGVyZWRUZXh0KSB7XG4gICAgICAgICAgICBpZiAoZmlsdGVyZWRUZXh0ID09PSAnLScpXG4gICAgICAgICAgICAgICAgLy8gTWludXMgc2lnblxuICAgICAgICAgICAgICAgIHJldHVybiBmaWx0ZXJlZFRleHQ7XG5cbiAgICAgICAgICAgIGxldCBwYXJzZWRWYWx1ZSA9ICtmaWx0ZXJlZFRleHQ7XG4gICAgICAgICAgICByZXR1cm4gaXNOYU4ocGFyc2VkVmFsdWUpID8gbnVsbCA6IHBhcnNlZFZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmVwZWF0KGV2ZW50LCBpbnRlcnZhbCwgZGlyKSB7XG4gICAgICAgIGlmICh0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgaSA9IGludGVydmFsIHx8IDUwMDtcblxuICAgICAgICB0aGlzLmNsZWFyVGltZXIoKTtcbiAgICAgICAgdGhpcy50aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZXBlYXQoZXZlbnQsIDQwLCBkaXIpO1xuICAgICAgICB9LCBpKTtcblxuICAgICAgICB0aGlzLnNwaW4oZXZlbnQsIGRpcik7XG4gICAgfVxuXG4gICAgc3BpbihldmVudCwgZGlyKSB7XG4gICAgICAgIGxldCBzdGVwID0gdGhpcy5zdGVwICogZGlyO1xuICAgICAgICBsZXQgY3VycmVudFZhbHVlID0gdGhpcy5wYXJzZVZhbHVlKHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSkgfHwgMDtcbiAgICAgICAgbGV0IG5ld1ZhbHVlID0gdGhpcy52YWxpZGF0ZVZhbHVlKGN1cnJlbnRWYWx1ZSArIHN0ZXApO1xuICAgICAgICBpZiAodGhpcy5tYXhsZW5ndGggJiYgdGhpcy5tYXhsZW5ndGggPCB0aGlzLmZvcm1hdFZhbHVlKG5ld1ZhbHVlKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlSW5wdXQobmV3VmFsdWUsIG51bGwsICdzcGluJywgbnVsbCk7XG4gICAgICAgIHRoaXMudXBkYXRlTW9kZWwoZXZlbnQsIG5ld1ZhbHVlKTtcblxuICAgICAgICB0aGlzLmhhbmRsZU9uSW5wdXQoZXZlbnQsIGN1cnJlbnRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgIH1cblxuICAgIGNsZWFyKCkge1xuICAgICAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLm9uQ2xlYXIuZW1pdCgpO1xuICAgIH1cblxuICAgIG9uVXBCdXR0b25Nb3VzZURvd24oZXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmJ1dHRvbiA9PT0gMikge1xuICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVyKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgdGhpcy5yZXBlYXQoZXZlbnQsIG51bGwsIDEpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uVXBCdXR0b25Nb3VzZVVwKCkge1xuICAgICAgICB0aGlzLmNsZWFyVGltZXIoKTtcbiAgICB9XG5cbiAgICBvblVwQnV0dG9uTW91c2VMZWF2ZSgpIHtcbiAgICAgICAgdGhpcy5jbGVhclRpbWVyKCk7XG4gICAgfVxuXG4gICAgb25VcEJ1dHRvbktleURvd24oZXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDMyIHx8IGV2ZW50LmtleUNvZGUgPT09IDEzKSB7XG4gICAgICAgICAgICB0aGlzLnJlcGVhdChldmVudCwgbnVsbCwgMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblVwQnV0dG9uS2V5VXAoKSB7XG4gICAgICAgIHRoaXMuY2xlYXJUaW1lcigpO1xuICAgIH1cblxuICAgIG9uRG93bkJ1dHRvbk1vdXNlRG93bihldmVudCkge1xuICAgICAgICBpZiAoZXZlbnQuYnV0dG9uID09PSAyKSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyVGltZXIoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB0aGlzLnJlcGVhdChldmVudCwgbnVsbCwgLTEpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uRG93bkJ1dHRvbk1vdXNlVXAoKSB7XG4gICAgICAgIHRoaXMuY2xlYXJUaW1lcigpO1xuICAgIH1cblxuICAgIG9uRG93bkJ1dHRvbk1vdXNlTGVhdmUoKSB7XG4gICAgICAgIHRoaXMuY2xlYXJUaW1lcigpO1xuICAgIH1cblxuICAgIG9uRG93bkJ1dHRvbktleVVwKCkge1xuICAgICAgICB0aGlzLmNsZWFyVGltZXIoKTtcbiAgICB9XG5cbiAgICBvbkRvd25CdXR0b25LZXlEb3duKGV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSAzMiB8fCBldmVudC5rZXlDb2RlID09PSAxMykge1xuICAgICAgICAgICAgdGhpcy5yZXBlYXQoZXZlbnQsIG51bGwsIC0xKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVXNlcklucHV0KGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc1NwZWNpYWxDaGFyKSB7XG4gICAgICAgICAgICBldmVudC50YXJnZXQudmFsdWUgPSB0aGlzLmxhc3RWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzU3BlY2lhbENoYXIgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvbklucHV0S2V5RG93bihldmVudCkge1xuICAgICAgICBpZiAodGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sYXN0VmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgICAgIGlmIChldmVudC5zaGlmdEtleSB8fCBldmVudC5hbHRLZXkpIHtcbiAgICAgICAgICAgIHRoaXMuaXNTcGVjaWFsQ2hhciA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgc2VsZWN0aW9uU3RhcnQgPSBldmVudC50YXJnZXQuc2VsZWN0aW9uU3RhcnQ7XG4gICAgICAgIGxldCBzZWxlY3Rpb25FbmQgPSBldmVudC50YXJnZXQuc2VsZWN0aW9uRW5kO1xuICAgICAgICBsZXQgaW5wdXRWYWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICAgICAgbGV0IG5ld1ZhbHVlU3RyID0gbnVsbDtcblxuICAgICAgICBpZiAoZXZlbnQuYWx0S2V5KSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoIChldmVudC53aGljaCkge1xuICAgICAgICAgICAgLy91cFxuICAgICAgICAgICAgY2FzZSAzODpcbiAgICAgICAgICAgICAgICB0aGlzLnNwaW4oZXZlbnQsIDEpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vZG93blxuICAgICAgICAgICAgY2FzZSA0MDpcbiAgICAgICAgICAgICAgICB0aGlzLnNwaW4oZXZlbnQsIC0xKTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvL2xlZnRcbiAgICAgICAgICAgIGNhc2UgMzc6XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzTnVtZXJhbENoYXIoaW5wdXRWYWx1ZS5jaGFyQXQoc2VsZWN0aW9uU3RhcnQgLSAxKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vcmlnaHRcbiAgICAgICAgICAgIGNhc2UgMzk6XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzTnVtZXJhbENoYXIoaW5wdXRWYWx1ZS5jaGFyQXQoc2VsZWN0aW9uU3RhcnQpKSkge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgLy9lbnRlclxuICAgICAgICAgICAgY2FzZSAxMzpcbiAgICAgICAgICAgICAgICBuZXdWYWx1ZVN0ciA9IHRoaXMudmFsaWRhdGVWYWx1ZSh0aGlzLnBhcnNlVmFsdWUodGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdGhpcy5mb3JtYXRWYWx1ZShuZXdWYWx1ZVN0cik7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS12YWx1ZW5vdycsIG5ld1ZhbHVlU3RyKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU1vZGVsKGV2ZW50LCBuZXdWYWx1ZVN0cik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vYmFja3NwYWNlXG4gICAgICAgICAgICBjYXNlIDg6IHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGlvblN0YXJ0ID09PSBzZWxlY3Rpb25FbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVsZXRlQ2hhciA9IGlucHV0VmFsdWUuY2hhckF0KHNlbGVjdGlvblN0YXJ0IC0gMSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZGVjaW1hbENoYXJJbmRleCwgZGVjaW1hbENoYXJJbmRleFdpdGhvdXRQcmVmaXggfSA9IHRoaXMuZ2V0RGVjaW1hbENoYXJJbmRleGVzKGlucHV0VmFsdWUpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzTnVtZXJhbENoYXIoZGVsZXRlQ2hhcikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlY2ltYWxMZW5ndGggPSB0aGlzLmdldERlY2ltYWxMZW5ndGgoaW5wdXRWYWx1ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9ncm91cC50ZXN0KGRlbGV0ZUNoYXIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZ3JvdXAubGFzdEluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZVN0ciA9IGlucHV0VmFsdWUuc2xpY2UoMCwgc2VsZWN0aW9uU3RhcnQgLSAyKSArIGlucHV0VmFsdWUuc2xpY2Uoc2VsZWN0aW9uU3RhcnQgLSAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fZGVjaW1hbC50ZXN0KGRlbGV0ZUNoYXIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGVjaW1hbC5sYXN0SW5kZXggPSAwO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlY2ltYWxMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHNlbGVjdGlvblN0YXJ0IC0gMSwgc2VsZWN0aW9uU3RhcnQgLSAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZVN0ciA9IGlucHV0VmFsdWUuc2xpY2UoMCwgc2VsZWN0aW9uU3RhcnQgLSAxKSArIGlucHV0VmFsdWUuc2xpY2Uoc2VsZWN0aW9uU3RhcnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGVjaW1hbENoYXJJbmRleCA+IDAgJiYgc2VsZWN0aW9uU3RhcnQgPiBkZWNpbWFsQ2hhckluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5zZXJ0ZWRUZXh0ID0gdGhpcy5pc0RlY2ltYWxNb2RlKCkgJiYgKHRoaXMubWluRnJhY3Rpb25EaWdpdHMgfHwgMCkgPCBkZWNpbWFsTGVuZ3RoID8gJycgOiAnMCc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWVTdHIgPSBpbnB1dFZhbHVlLnNsaWNlKDAsIHNlbGVjdGlvblN0YXJ0IC0gMSkgKyBpbnNlcnRlZFRleHQgKyBpbnB1dFZhbHVlLnNsaWNlKHNlbGVjdGlvblN0YXJ0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGVjaW1hbENoYXJJbmRleFdpdGhvdXRQcmVmaXggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZVN0ciA9IGlucHV0VmFsdWUuc2xpY2UoMCwgc2VsZWN0aW9uU3RhcnQgLSAxKSArICcwJyArIGlucHV0VmFsdWUuc2xpY2Uoc2VsZWN0aW9uU3RhcnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlU3RyID0gdGhpcy5wYXJzZVZhbHVlKG5ld1ZhbHVlU3RyKSA+IDAgPyBuZXdWYWx1ZVN0ciA6ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZVN0ciA9IGlucHV0VmFsdWUuc2xpY2UoMCwgc2VsZWN0aW9uU3RhcnQgLSAxKSArIGlucHV0VmFsdWUuc2xpY2Uoc2VsZWN0aW9uU3RhcnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShldmVudCwgbmV3VmFsdWVTdHIsIG51bGwsICdkZWxldGUtc2luZ2xlJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWVTdHIgPSB0aGlzLmRlbGV0ZVJhbmdlKGlucHV0VmFsdWUsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKGV2ZW50LCBuZXdWYWx1ZVN0ciwgbnVsbCwgJ2RlbGV0ZS1yYW5nZScpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBkZWxcbiAgICAgICAgICAgIGNhc2UgNDY6XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rpb25TdGFydCA9PT0gc2VsZWN0aW9uRW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlbGV0ZUNoYXIgPSBpbnB1dFZhbHVlLmNoYXJBdChzZWxlY3Rpb25TdGFydCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZGVjaW1hbENoYXJJbmRleCwgZGVjaW1hbENoYXJJbmRleFdpdGhvdXRQcmVmaXggfSA9IHRoaXMuZ2V0RGVjaW1hbENoYXJJbmRleGVzKGlucHV0VmFsdWUpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzTnVtZXJhbENoYXIoZGVsZXRlQ2hhcikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlY2ltYWxMZW5ndGggPSB0aGlzLmdldERlY2ltYWxMZW5ndGgoaW5wdXRWYWx1ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9ncm91cC50ZXN0KGRlbGV0ZUNoYXIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZ3JvdXAubGFzdEluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZVN0ciA9IGlucHV0VmFsdWUuc2xpY2UoMCwgc2VsZWN0aW9uU3RhcnQpICsgaW5wdXRWYWx1ZS5zbGljZShzZWxlY3Rpb25TdGFydCArIDIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9kZWNpbWFsLnRlc3QoZGVsZXRlQ2hhcikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9kZWNpbWFsLmxhc3RJbmRleCA9IDA7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVjaW1hbExlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uU3RhcnQgKyAxLCBzZWxlY3Rpb25TdGFydCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlU3RyID0gaW5wdXRWYWx1ZS5zbGljZSgwLCBzZWxlY3Rpb25TdGFydCkgKyBpbnB1dFZhbHVlLnNsaWNlKHNlbGVjdGlvblN0YXJ0ICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkZWNpbWFsQ2hhckluZGV4ID4gMCAmJiBzZWxlY3Rpb25TdGFydCA+IGRlY2ltYWxDaGFySW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnNlcnRlZFRleHQgPSB0aGlzLmlzRGVjaW1hbE1vZGUoKSAmJiAodGhpcy5taW5GcmFjdGlvbkRpZ2l0cyB8fCAwKSA8IGRlY2ltYWxMZW5ndGggPyAnJyA6ICcwJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZVN0ciA9IGlucHV0VmFsdWUuc2xpY2UoMCwgc2VsZWN0aW9uU3RhcnQpICsgaW5zZXJ0ZWRUZXh0ICsgaW5wdXRWYWx1ZS5zbGljZShzZWxlY3Rpb25TdGFydCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkZWNpbWFsQ2hhckluZGV4V2l0aG91dFByZWZpeCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlU3RyID0gaW5wdXRWYWx1ZS5zbGljZSgwLCBzZWxlY3Rpb25TdGFydCkgKyAnMCcgKyBpbnB1dFZhbHVlLnNsaWNlKHNlbGVjdGlvblN0YXJ0ICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWVTdHIgPSB0aGlzLnBhcnNlVmFsdWUobmV3VmFsdWVTdHIpID4gMCA/IG5ld1ZhbHVlU3RyIDogJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlU3RyID0gaW5wdXRWYWx1ZS5zbGljZSgwLCBzZWxlY3Rpb25TdGFydCkgKyBpbnB1dFZhbHVlLnNsaWNlKHNlbGVjdGlvblN0YXJ0ICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKGV2ZW50LCBuZXdWYWx1ZVN0ciwgbnVsbCwgJ2RlbGV0ZS1iYWNrLXNpbmdsZScpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlU3RyID0gdGhpcy5kZWxldGVSYW5nZShpbnB1dFZhbHVlLCBzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShldmVudCwgbmV3VmFsdWVTdHIsIG51bGwsICdkZWxldGUtcmFuZ2UnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9uS2V5RG93bi5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbklucHV0S2V5UHJlc3MoZXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjb2RlID0gZXZlbnQud2hpY2ggfHwgZXZlbnQua2V5Q29kZTtcbiAgICAgICAgbGV0IGNoYXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpO1xuICAgICAgICBjb25zdCBpc0RlY2ltYWxTaWduID0gdGhpcy5pc0RlY2ltYWxTaWduKGNoYXIpO1xuICAgICAgICBjb25zdCBpc01pbnVzU2lnbiA9IHRoaXMuaXNNaW51c1NpZ24oY2hhcik7XG5cbiAgICAgICAgaWYgKGNvZGUgIT0gMTMpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoKDQ4IDw9IGNvZGUgJiYgY29kZSA8PSA1NykgfHwgaXNNaW51c1NpZ24gfHwgaXNEZWNpbWFsU2lnbikge1xuICAgICAgICAgICAgdGhpcy5pbnNlcnQoZXZlbnQsIGNoYXIsIHsgaXNEZWNpbWFsU2lnbiwgaXNNaW51c1NpZ24gfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblBhc3RlKGV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGxldCBkYXRhID0gKGV2ZW50LmNsaXBib2FyZERhdGEgfHwgdGhpcy5kb2N1bWVudC5kZWZhdWx0Vmlld1snY2xpcGJvYXJkRGF0YSddKS5nZXREYXRhKCdUZXh0Jyk7XG4gICAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgICAgIGxldCBmaWx0ZXJlZERhdGEgPSB0aGlzLnBhcnNlVmFsdWUoZGF0YSk7XG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlcmVkRGF0YSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0KGV2ZW50LCBmaWx0ZXJlZERhdGEudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWxsb3dNaW51c1NpZ24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbiA9PSBudWxsIHx8IHRoaXMubWluIDwgMDtcbiAgICB9XG5cbiAgICBpc01pbnVzU2lnbihjaGFyKSB7XG4gICAgICAgIGlmICh0aGlzLl9taW51c1NpZ24udGVzdChjaGFyKSB8fCBjaGFyID09PSAnLScpIHtcbiAgICAgICAgICAgIHRoaXMuX21pbnVzU2lnbi5sYXN0SW5kZXggPSAwO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaXNEZWNpbWFsU2lnbihjaGFyKSB7XG4gICAgICAgIGlmICh0aGlzLl9kZWNpbWFsLnRlc3QoY2hhcikpIHtcbiAgICAgICAgICAgIHRoaXMuX2RlY2ltYWwubGFzdEluZGV4ID0gMDtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlzRGVjaW1hbE1vZGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZGUgPT09ICdkZWNpbWFsJztcbiAgICB9XG5cbiAgICBnZXREZWNpbWFsQ2hhckluZGV4ZXModmFsKSB7XG4gICAgICAgIGxldCBkZWNpbWFsQ2hhckluZGV4ID0gdmFsLnNlYXJjaCh0aGlzLl9kZWNpbWFsKTtcbiAgICAgICAgdGhpcy5fZGVjaW1hbC5sYXN0SW5kZXggPSAwO1xuXG4gICAgICAgIGNvbnN0IGZpbHRlcmVkVmFsID0gdmFsLnJlcGxhY2UodGhpcy5fcHJlZml4LCAnJykudHJpbSgpLnJlcGxhY2UoL1xccy9nLCAnJykucmVwbGFjZSh0aGlzLl9jdXJyZW5jeSwgJycpO1xuICAgICAgICBjb25zdCBkZWNpbWFsQ2hhckluZGV4V2l0aG91dFByZWZpeCA9IGZpbHRlcmVkVmFsLnNlYXJjaCh0aGlzLl9kZWNpbWFsKTtcbiAgICAgICAgdGhpcy5fZGVjaW1hbC5sYXN0SW5kZXggPSAwO1xuXG4gICAgICAgIHJldHVybiB7IGRlY2ltYWxDaGFySW5kZXgsIGRlY2ltYWxDaGFySW5kZXhXaXRob3V0UHJlZml4IH07XG4gICAgfVxuXG4gICAgZ2V0Q2hhckluZGV4ZXModmFsKSB7XG4gICAgICAgIGNvbnN0IGRlY2ltYWxDaGFySW5kZXggPSB2YWwuc2VhcmNoKHRoaXMuX2RlY2ltYWwpO1xuICAgICAgICB0aGlzLl9kZWNpbWFsLmxhc3RJbmRleCA9IDA7XG4gICAgICAgIGNvbnN0IG1pbnVzQ2hhckluZGV4ID0gdmFsLnNlYXJjaCh0aGlzLl9taW51c1NpZ24pO1xuICAgICAgICB0aGlzLl9taW51c1NpZ24ubGFzdEluZGV4ID0gMDtcbiAgICAgICAgY29uc3Qgc3VmZml4Q2hhckluZGV4ID0gdmFsLnNlYXJjaCh0aGlzLl9zdWZmaXgpO1xuICAgICAgICB0aGlzLl9zdWZmaXgubGFzdEluZGV4ID0gMDtcbiAgICAgICAgY29uc3QgY3VycmVuY3lDaGFySW5kZXggPSB2YWwuc2VhcmNoKHRoaXMuX2N1cnJlbmN5KTtcbiAgICAgICAgdGhpcy5fY3VycmVuY3kubGFzdEluZGV4ID0gMDtcblxuICAgICAgICByZXR1cm4geyBkZWNpbWFsQ2hhckluZGV4LCBtaW51c0NoYXJJbmRleCwgc3VmZml4Q2hhckluZGV4LCBjdXJyZW5jeUNoYXJJbmRleCB9O1xuICAgIH1cblxuICAgIGluc2VydChldmVudCwgdGV4dCwgc2lnbiA9IHsgaXNEZWNpbWFsU2lnbjogZmFsc2UsIGlzTWludXNTaWduOiBmYWxzZSB9KSB7XG4gICAgICAgIGNvbnN0IG1pbnVzQ2hhckluZGV4T25UZXh0ID0gdGV4dC5zZWFyY2godGhpcy5fbWludXNTaWduKTtcbiAgICAgICAgdGhpcy5fbWludXNTaWduLmxhc3RJbmRleCA9IDA7XG4gICAgICAgIGlmICghdGhpcy5hbGxvd01pbnVzU2lnbigpICYmIG1pbnVzQ2hhckluZGV4T25UZXh0ICE9PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHNlbGVjdGlvblN0YXJ0ID0gdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0O1xuICAgICAgICBsZXQgc2VsZWN0aW9uRW5kID0gdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNlbGVjdGlvbkVuZDtcbiAgICAgICAgbGV0IGlucHV0VmFsdWUgPSB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUudHJpbSgpO1xuICAgICAgICBjb25zdCB7IGRlY2ltYWxDaGFySW5kZXgsIG1pbnVzQ2hhckluZGV4LCBzdWZmaXhDaGFySW5kZXgsIGN1cnJlbmN5Q2hhckluZGV4IH0gPSB0aGlzLmdldENoYXJJbmRleGVzKGlucHV0VmFsdWUpO1xuICAgICAgICBsZXQgbmV3VmFsdWVTdHI7XG5cbiAgICAgICAgaWYgKHNpZ24uaXNNaW51c1NpZ24pIHtcbiAgICAgICAgICAgIGlmIChzZWxlY3Rpb25TdGFydCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIG5ld1ZhbHVlU3RyID0gaW5wdXRWYWx1ZTtcbiAgICAgICAgICAgICAgICBpZiAobWludXNDaGFySW5kZXggPT09IC0xIHx8IHNlbGVjdGlvbkVuZCAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZVN0ciA9IHRoaXMuaW5zZXJ0VGV4dChpbnB1dFZhbHVlLCB0ZXh0LCAwLCBzZWxlY3Rpb25FbmQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUoZXZlbnQsIG5ld1ZhbHVlU3RyLCB0ZXh0LCAnaW5zZXJ0Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoc2lnbi5pc0RlY2ltYWxTaWduKSB7XG4gICAgICAgICAgICBpZiAoZGVjaW1hbENoYXJJbmRleCA+IDAgJiYgc2VsZWN0aW9uU3RhcnQgPT09IGRlY2ltYWxDaGFySW5kZXgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKGV2ZW50LCBpbnB1dFZhbHVlLCB0ZXh0LCAnaW5zZXJ0Jyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRlY2ltYWxDaGFySW5kZXggPiBzZWxlY3Rpb25TdGFydCAmJiBkZWNpbWFsQ2hhckluZGV4IDwgc2VsZWN0aW9uRW5kKSB7XG4gICAgICAgICAgICAgICAgbmV3VmFsdWVTdHIgPSB0aGlzLmluc2VydFRleHQoaW5wdXRWYWx1ZSwgdGV4dCwgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCk7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShldmVudCwgbmV3VmFsdWVTdHIsIHRleHQsICdpbnNlcnQnKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZGVjaW1hbENoYXJJbmRleCA9PT0gLTEgJiYgdGhpcy5tYXhGcmFjdGlvbkRpZ2l0cykge1xuICAgICAgICAgICAgICAgIG5ld1ZhbHVlU3RyID0gdGhpcy5pbnNlcnRUZXh0KGlucHV0VmFsdWUsIHRleHQsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUoZXZlbnQsIG5ld1ZhbHVlU3RyLCB0ZXh0LCAnaW5zZXJ0Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBtYXhGcmFjdGlvbkRpZ2l0cyA9IHRoaXMubnVtYmVyRm9ybWF0LnJlc29sdmVkT3B0aW9ucygpLm1heGltdW1GcmFjdGlvbkRpZ2l0cztcbiAgICAgICAgICAgIGNvbnN0IG9wZXJhdGlvbiA9IHNlbGVjdGlvblN0YXJ0ICE9PSBzZWxlY3Rpb25FbmQgPyAncmFuZ2UtaW5zZXJ0JyA6ICdpbnNlcnQnO1xuXG4gICAgICAgICAgICBpZiAoZGVjaW1hbENoYXJJbmRleCA+IDAgJiYgc2VsZWN0aW9uU3RhcnQgPiBkZWNpbWFsQ2hhckluZGV4KSB7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGlvblN0YXJ0ICsgdGV4dC5sZW5ndGggLSAoZGVjaW1hbENoYXJJbmRleCArIDEpIDw9IG1heEZyYWN0aW9uRGlnaXRzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJJbmRleCA9IGN1cnJlbmN5Q2hhckluZGV4ID49IHNlbGVjdGlvblN0YXJ0ID8gY3VycmVuY3lDaGFySW5kZXggLSAxIDogc3VmZml4Q2hhckluZGV4ID49IHNlbGVjdGlvblN0YXJ0ID8gc3VmZml4Q2hhckluZGV4IDogaW5wdXRWYWx1ZS5sZW5ndGg7XG5cbiAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWVTdHIgPSBpbnB1dFZhbHVlLnNsaWNlKDAsIHNlbGVjdGlvblN0YXJ0KSArIHRleHQgKyBpbnB1dFZhbHVlLnNsaWNlKHNlbGVjdGlvblN0YXJ0ICsgdGV4dC5sZW5ndGgsIGNoYXJJbmRleCkgKyBpbnB1dFZhbHVlLnNsaWNlKGNoYXJJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUoZXZlbnQsIG5ld1ZhbHVlU3RyLCB0ZXh0LCBvcGVyYXRpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbmV3VmFsdWVTdHIgPSB0aGlzLmluc2VydFRleHQoaW5wdXRWYWx1ZSwgdGV4dCwgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCk7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShldmVudCwgbmV3VmFsdWVTdHIsIHRleHQsIG9wZXJhdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbnNlcnRUZXh0KHZhbHVlLCB0ZXh0LCBzdGFydCwgZW5kKSB7XG4gICAgICAgIGxldCB0ZXh0U3BsaXQgPSB0ZXh0ID09PSAnLicgPyB0ZXh0IDogdGV4dC5zcGxpdCgnLicpO1xuXG4gICAgICAgIGlmICh0ZXh0U3BsaXQubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICBjb25zdCBkZWNpbWFsQ2hhckluZGV4ID0gdmFsdWUuc2xpY2Uoc3RhcnQsIGVuZCkuc2VhcmNoKHRoaXMuX2RlY2ltYWwpO1xuICAgICAgICAgICAgdGhpcy5fZGVjaW1hbC5sYXN0SW5kZXggPSAwO1xuICAgICAgICAgICAgcmV0dXJuIGRlY2ltYWxDaGFySW5kZXggPiAwID8gdmFsdWUuc2xpY2UoMCwgc3RhcnQpICsgdGhpcy5mb3JtYXRWYWx1ZSh0ZXh0KSArIHZhbHVlLnNsaWNlKGVuZCkgOiB2YWx1ZSB8fCB0aGlzLmZvcm1hdFZhbHVlKHRleHQpO1xuICAgICAgICB9IGVsc2UgaWYgKGVuZCAtIHN0YXJ0ID09PSB2YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1hdFZhbHVlKHRleHQpO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0ID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGV4dCArIHZhbHVlLnNsaWNlKGVuZCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZW5kID09PSB2YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5zbGljZSgwLCBzdGFydCkgKyB0ZXh0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnNsaWNlKDAsIHN0YXJ0KSArIHRleHQgKyB2YWx1ZS5zbGljZShlbmQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGVsZXRlUmFuZ2UodmFsdWUsIHN0YXJ0LCBlbmQpIHtcbiAgICAgICAgbGV0IG5ld1ZhbHVlU3RyO1xuXG4gICAgICAgIGlmIChlbmQgLSBzdGFydCA9PT0gdmFsdWUubGVuZ3RoKSBuZXdWYWx1ZVN0ciA9ICcnO1xuICAgICAgICBlbHNlIGlmIChzdGFydCA9PT0gMCkgbmV3VmFsdWVTdHIgPSB2YWx1ZS5zbGljZShlbmQpO1xuICAgICAgICBlbHNlIGlmIChlbmQgPT09IHZhbHVlLmxlbmd0aCkgbmV3VmFsdWVTdHIgPSB2YWx1ZS5zbGljZSgwLCBzdGFydCk7XG4gICAgICAgIGVsc2UgbmV3VmFsdWVTdHIgPSB2YWx1ZS5zbGljZSgwLCBzdGFydCkgKyB2YWx1ZS5zbGljZShlbmQpO1xuXG4gICAgICAgIHJldHVybiBuZXdWYWx1ZVN0cjtcbiAgICB9XG5cbiAgICBpbml0Q3Vyc29yKCkge1xuICAgICAgICBsZXQgc2VsZWN0aW9uU3RhcnQgPSB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQ7XG4gICAgICAgIGxldCBpbnB1dFZhbHVlID0gdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgICAgICBsZXQgdmFsdWVMZW5ndGggPSBpbnB1dFZhbHVlLmxlbmd0aDtcbiAgICAgICAgbGV0IGluZGV4ID0gbnVsbDtcblxuICAgICAgICAvLyByZW1vdmUgcHJlZml4XG4gICAgICAgIGxldCBwcmVmaXhMZW5ndGggPSAodGhpcy5wcmVmaXhDaGFyIHx8ICcnKS5sZW5ndGg7XG4gICAgICAgIGlucHV0VmFsdWUgPSBpbnB1dFZhbHVlLnJlcGxhY2UodGhpcy5fcHJlZml4LCAnJyk7XG4gICAgICAgIHNlbGVjdGlvblN0YXJ0ID0gc2VsZWN0aW9uU3RhcnQgLSBwcmVmaXhMZW5ndGg7XG5cbiAgICAgICAgbGV0IGNoYXIgPSBpbnB1dFZhbHVlLmNoYXJBdChzZWxlY3Rpb25TdGFydCk7XG4gICAgICAgIGlmICh0aGlzLmlzTnVtZXJhbENoYXIoY2hhcikpIHtcbiAgICAgICAgICAgIHJldHVybiBzZWxlY3Rpb25TdGFydCArIHByZWZpeExlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vbGVmdFxuICAgICAgICBsZXQgaSA9IHNlbGVjdGlvblN0YXJ0IC0gMTtcbiAgICAgICAgd2hpbGUgKGkgPj0gMCkge1xuICAgICAgICAgICAgY2hhciA9IGlucHV0VmFsdWUuY2hhckF0KGkpO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNOdW1lcmFsQ2hhcihjaGFyKSkge1xuICAgICAgICAgICAgICAgIGluZGV4ID0gaSArIHByZWZpeExlbmd0aDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaS0tO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGluZGV4ICE9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoaW5kZXggKyAxLCBpbmRleCArIDEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaSA9IHNlbGVjdGlvblN0YXJ0O1xuICAgICAgICAgICAgd2hpbGUgKGkgPCB2YWx1ZUxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNoYXIgPSBpbnB1dFZhbHVlLmNoYXJBdChpKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc051bWVyYWxDaGFyKGNoYXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4ID0gaSArIHByZWZpeExlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGluZGV4ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKGluZGV4LCBpbmRleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW5kZXggfHwgMDtcbiAgICB9XG5cbiAgICBvbklucHV0Q2xpY2soKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZTtcbiAgICAgICAgaWYgKCF0aGlzLnJlYWRvbmx5ICYmIGN1cnJlbnRWYWx1ZSAhPT0gRG9tSGFuZGxlci5nZXRTZWxlY3Rpb24oKSkge1xuICAgICAgICAgICAgdGhpcy5pbml0Q3Vyc29yKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc051bWVyYWxDaGFyKGNoYXIpIHtcbiAgICAgICAgaWYgKGNoYXIubGVuZ3RoID09PSAxICYmICh0aGlzLl9udW1lcmFsLnRlc3QoY2hhcikgfHwgdGhpcy5fZGVjaW1hbC50ZXN0KGNoYXIpIHx8IHRoaXMuX2dyb3VwLnRlc3QoY2hhcikgfHwgdGhpcy5fbWludXNTaWduLnRlc3QoY2hhcikpKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0UmVnZXgoKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJlc2V0UmVnZXgoKSB7XG4gICAgICAgIHRoaXMuX251bWVyYWwubGFzdEluZGV4ID0gMDtcbiAgICAgICAgdGhpcy5fZGVjaW1hbC5sYXN0SW5kZXggPSAwO1xuICAgICAgICB0aGlzLl9ncm91cC5sYXN0SW5kZXggPSAwO1xuICAgICAgICB0aGlzLl9taW51c1NpZ24ubGFzdEluZGV4ID0gMDtcbiAgICB9XG5cbiAgICB1cGRhdGVWYWx1ZShldmVudCwgdmFsdWVTdHIsIGluc2VydGVkVmFsdWVTdHIsIG9wZXJhdGlvbikge1xuICAgICAgICBsZXQgY3VycmVudFZhbHVlID0gdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgICAgICBsZXQgbmV3VmFsdWUgPSBudWxsO1xuXG4gICAgICAgIGlmICh2YWx1ZVN0ciAhPSBudWxsKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHRoaXMucGFyc2VWYWx1ZSh2YWx1ZVN0cik7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9ICFuZXdWYWx1ZSAmJiAhdGhpcy5hbGxvd0VtcHR5ID8gMCA6IG5ld1ZhbHVlO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVJbnB1dChuZXdWYWx1ZSwgaW5zZXJ0ZWRWYWx1ZVN0ciwgb3BlcmF0aW9uLCB2YWx1ZVN0cik7XG5cbiAgICAgICAgICAgIHRoaXMuaGFuZGxlT25JbnB1dChldmVudCwgY3VycmVudFZhbHVlLCBuZXdWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYW5kbGVPbklucHV0KGV2ZW50LCBjdXJyZW50VmFsdWUsIG5ld1ZhbHVlKSB7XG4gICAgICAgIGlmICh0aGlzLmlzVmFsdWVDaGFuZ2VkKGN1cnJlbnRWYWx1ZSwgbmV3VmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB0aGlzLmZvcm1hdFZhbHVlKG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtdmFsdWVub3cnLCBuZXdWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZU1vZGVsKGV2ZW50LCBuZXdWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLm9uSW5wdXQuZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCB2YWx1ZTogbmV3VmFsdWUsIGZvcm1hdHRlZFZhbHVlOiBjdXJyZW50VmFsdWUgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc1ZhbHVlQ2hhbmdlZChjdXJyZW50VmFsdWUsIG5ld1ZhbHVlKSB7XG4gICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gbnVsbCAmJiBjdXJyZW50VmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5ld1ZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgIGxldCBwYXJzZWRDdXJyZW50VmFsdWUgPSB0eXBlb2YgY3VycmVudFZhbHVlID09PSAnc3RyaW5nJyA/IHRoaXMucGFyc2VWYWx1ZShjdXJyZW50VmFsdWUpIDogY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIG5ld1ZhbHVlICE9PSBwYXJzZWRDdXJyZW50VmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdmFsaWRhdGVWYWx1ZSh2YWx1ZSkge1xuICAgICAgICBpZiAodmFsdWUgPT09ICctJyB8fCB2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm1pbiAhPSBudWxsICYmIHZhbHVlIDwgdGhpcy5taW4pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1pbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm1heCAhPSBudWxsICYmIHZhbHVlID4gdGhpcy5tYXgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1heDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICB1cGRhdGVJbnB1dCh2YWx1ZSwgaW5zZXJ0ZWRWYWx1ZVN0ciwgb3BlcmF0aW9uLCB2YWx1ZVN0cikge1xuICAgICAgICBpbnNlcnRlZFZhbHVlU3RyID0gaW5zZXJ0ZWRWYWx1ZVN0ciB8fCAnJztcblxuICAgICAgICBsZXQgaW5wdXRWYWx1ZSA9IHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZTtcbiAgICAgICAgbGV0IG5ld1ZhbHVlID0gdGhpcy5mb3JtYXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIGxldCBjdXJyZW50TGVuZ3RoID0gaW5wdXRWYWx1ZS5sZW5ndGg7XG5cbiAgICAgICAgaWYgKG5ld1ZhbHVlICE9PSB2YWx1ZVN0cikge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSB0aGlzLmNvbmNhdFZhbHVlcyhuZXdWYWx1ZSwgdmFsdWVTdHIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGN1cnJlbnRMZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKDAsIDApO1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmluaXRDdXJzb3IoKTtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGlvbkVuZCA9IGluZGV4ICsgaW5zZXJ0ZWRWYWx1ZVN0ci5sZW5ndGg7XG4gICAgICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uRW5kLCBzZWxlY3Rpb25FbmQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IHNlbGVjdGlvblN0YXJ0ID0gdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0O1xuICAgICAgICAgICAgbGV0IHNlbGVjdGlvbkVuZCA9IHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQ7XG4gICAgICAgICAgICBpZiAodGhpcy5tYXhsZW5ndGggJiYgdGhpcy5tYXhsZW5ndGggPCBuZXdWYWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgICAgICAgbGV0IG5ld0xlbmd0aCA9IG5ld1ZhbHVlLmxlbmd0aDtcblxuICAgICAgICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJ3JhbmdlLWluc2VydCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGFydFZhbHVlID0gdGhpcy5wYXJzZVZhbHVlKChpbnB1dFZhbHVlIHx8ICcnKS5zbGljZSgwLCBzZWxlY3Rpb25TdGFydCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0VmFsdWVTdHIgPSBzdGFydFZhbHVlICE9PSBudWxsID8gc3RhcnRWYWx1ZS50b1N0cmluZygpIDogJyc7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnRFeHByID0gc3RhcnRWYWx1ZVN0ci5zcGxpdCgnJykuam9pbihgKCR7dGhpcy5ncm91cENoYXJ9KT9gKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzUmVnZXggPSBuZXcgUmVnRXhwKHN0YXJ0RXhwciwgJ2cnKTtcbiAgICAgICAgICAgICAgICBzUmVnZXgudGVzdChuZXdWYWx1ZSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB0RXhwciA9IGluc2VydGVkVmFsdWVTdHIuc3BsaXQoJycpLmpvaW4oYCgke3RoaXMuZ3JvdXBDaGFyfSk/YCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdFJlZ2V4ID0gbmV3IFJlZ0V4cCh0RXhwciwgJ2cnKTtcbiAgICAgICAgICAgICAgICB0UmVnZXgudGVzdChuZXdWYWx1ZS5zbGljZShzUmVnZXgubGFzdEluZGV4KSk7XG5cbiAgICAgICAgICAgICAgICBzZWxlY3Rpb25FbmQgPSBzUmVnZXgubGFzdEluZGV4ICsgdFJlZ2V4Lmxhc3RJbmRleDtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uRW5kLCBzZWxlY3Rpb25FbmQpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChuZXdMZW5ndGggPT09IGN1cnJlbnRMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBpZiAob3BlcmF0aW9uID09PSAnaW5zZXJ0JyB8fCBvcGVyYXRpb24gPT09ICdkZWxldGUtYmFjay1zaW5nbGUnKSB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uRW5kICsgMSwgc2VsZWN0aW9uRW5kICsgMSk7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAob3BlcmF0aW9uID09PSAnZGVsZXRlLXNpbmdsZScpIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShzZWxlY3Rpb25FbmQgLSAxLCBzZWxlY3Rpb25FbmQgLSAxKTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChvcGVyYXRpb24gPT09ICdkZWxldGUtcmFuZ2UnIHx8IG9wZXJhdGlvbiA9PT0gJ3NwaW4nKSB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uRW5kLCBzZWxlY3Rpb25FbmQpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChvcGVyYXRpb24gPT09ICdkZWxldGUtYmFjay1zaW5nbGUnKSB7XG4gICAgICAgICAgICAgICAgbGV0IHByZXZDaGFyID0gaW5wdXRWYWx1ZS5jaGFyQXQoc2VsZWN0aW9uRW5kIC0gMSk7XG4gICAgICAgICAgICAgICAgbGV0IG5leHRDaGFyID0gaW5wdXRWYWx1ZS5jaGFyQXQoc2VsZWN0aW9uRW5kKTtcbiAgICAgICAgICAgICAgICBsZXQgZGlmZiA9IGN1cnJlbnRMZW5ndGggLSBuZXdMZW5ndGg7XG4gICAgICAgICAgICAgICAgbGV0IGlzR3JvdXBDaGFyID0gdGhpcy5fZ3JvdXAudGVzdChuZXh0Q2hhcik7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNHcm91cENoYXIgJiYgZGlmZiA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25FbmQgKz0gMTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFpc0dyb3VwQ2hhciAmJiB0aGlzLmlzTnVtZXJhbENoYXIocHJldkNoYXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbkVuZCArPSAtMSAqIGRpZmYgKyAxO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuX2dyb3VwLmxhc3RJbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHNlbGVjdGlvbkVuZCwgc2VsZWN0aW9uRW5kKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXRWYWx1ZSA9PT0gJy0nICYmIG9wZXJhdGlvbiA9PT0gJ2luc2VydCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmluaXRDdXJzb3IoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3Rpb25FbmQgPSBpbmRleCArIGluc2VydGVkVmFsdWVTdHIubGVuZ3RoICsgMTtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uRW5kLCBzZWxlY3Rpb25FbmQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb25FbmQgPSBzZWxlY3Rpb25FbmQgKyAobmV3TGVuZ3RoIC0gY3VycmVudExlbmd0aCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHNlbGVjdGlvbkVuZCwgc2VsZWN0aW9uRW5kKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtdmFsdWVub3cnLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgY29uY2F0VmFsdWVzKHZhbDEsIHZhbDIpIHtcbiAgICAgICAgaWYgKHZhbDEgJiYgdmFsMikge1xuICAgICAgICAgICAgbGV0IGRlY2ltYWxDaGFySW5kZXggPSB2YWwyLnNlYXJjaCh0aGlzLl9kZWNpbWFsKTtcbiAgICAgICAgICAgIHRoaXMuX2RlY2ltYWwubGFzdEluZGV4ID0gMDtcblxuICAgICAgICAgICAgaWYgKHRoaXMuc3VmZml4Q2hhcikge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWwxLnJlcGxhY2UodGhpcy5zdWZmaXhDaGFyLCAnJykuc3BsaXQodGhpcy5fZGVjaW1hbClbMF0gKyB2YWwyLnJlcGxhY2UodGhpcy5zdWZmaXhDaGFyLCAnJykuc2xpY2UoZGVjaW1hbENoYXJJbmRleCkgKyB0aGlzLnN1ZmZpeENoYXI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBkZWNpbWFsQ2hhckluZGV4ICE9PSAtMSA/IHZhbDEuc3BsaXQodGhpcy5fZGVjaW1hbClbMF0gKyB2YWwyLnNsaWNlKGRlY2ltYWxDaGFySW5kZXgpIDogdmFsMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsMTtcbiAgICB9XG5cbiAgICBnZXREZWNpbWFsTGVuZ3RoKHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVTcGxpdCA9IHZhbHVlLnNwbGl0KHRoaXMuX2RlY2ltYWwpO1xuXG4gICAgICAgICAgICBpZiAodmFsdWVTcGxpdC5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVTcGxpdFsxXS5yZXBsYWNlKHRoaXMuX3N1ZmZpeCwgJycpLnRyaW0oKS5yZXBsYWNlKC9cXHMvZywgJycpLnJlcGxhY2UodGhpcy5fY3VycmVuY3ksICcnKS5sZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBvbklucHV0Rm9jdXMoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5vbkZvY3VzLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uSW5wdXRCbHVyKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuXG4gICAgICAgIGxldCBuZXdWYWx1ZSA9IHRoaXMudmFsaWRhdGVWYWx1ZSh0aGlzLnBhcnNlVmFsdWUodGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlKSk7XG4gICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMuZm9ybWF0VmFsdWUobmV3VmFsdWUpO1xuICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLXZhbHVlbm93JywgbmV3VmFsdWUpO1xuICAgICAgICB0aGlzLnVwZGF0ZU1vZGVsKGV2ZW50LCBuZXdWYWx1ZSk7XG5cbiAgICAgICAgdGhpcy5vbkJsdXIuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgZm9ybWF0dGVkVmFsdWUoKSB7XG4gICAgICAgIGNvbnN0IHZhbCA9ICF0aGlzLnZhbHVlICYmICF0aGlzLmFsbG93RW1wdHkgPyAwIDogdGhpcy52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0VmFsdWUodmFsKTtcbiAgICB9XG5cbiAgICB1cGRhdGVNb2RlbChldmVudCwgdmFsdWUpIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vbk1vZGVsVG91Y2hlZCgpO1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Nb2RlbFRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlKHZhbDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gdmFsO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIGdldCBmaWxsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlICE9IG51bGwgJiYgdGhpcy52YWx1ZS50b1N0cmluZygpLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgY2xlYXJUaW1lcigpIHtcbiAgICAgICAgaWYgKHRoaXMudGltZXIpIHtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRGb3JtYXR0ZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm51bWJlckZvcm1hdDtcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSW5wdXRUZXh0TW9kdWxlLCBCdXR0b25Nb2R1bGUsIFRpbWVzSWNvbiwgQW5nbGVVcEljb24sIEFuZ2xlRG93bkljb25dLFxuICAgIGV4cG9ydHM6IFtJbnB1dE51bWJlciwgU2hhcmVkTW9kdWxlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtJbnB1dE51bWJlcl1cbn0pXG5leHBvcnQgY2xhc3MgSW5wdXROdW1iZXJNb2R1bGUge31cbiJdfQ==