@ng-nest/ui 16.0.9 → 16.0.11

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 (510) hide show
  1. package/drag/drag.directive.d.ts +14 -0
  2. package/drag/drag.module.d.ts +8 -0
  3. package/drag/drag.property.d.ts +26 -0
  4. package/drag/index.d.ts +5 -0
  5. package/drag/public-api.d.ts +3 -0
  6. package/esm2022/affix/affix.component.mjs +4 -4
  7. package/esm2022/affix/affix.module.mjs +5 -5
  8. package/esm2022/affix/affix.property.mjs +4 -4
  9. package/esm2022/alert/alert.component.mjs +4 -4
  10. package/esm2022/alert/alert.module.mjs +5 -5
  11. package/esm2022/alert/alert.property.mjs +4 -4
  12. package/esm2022/anchor/anchor-inner.component.mjs +4 -4
  13. package/esm2022/anchor/anchor.component.mjs +4 -4
  14. package/esm2022/anchor/anchor.module.mjs +5 -5
  15. package/esm2022/anchor/anchor.property.mjs +7 -7
  16. package/esm2022/api/api.component.mjs +4 -4
  17. package/esm2022/api/api.module.mjs +5 -5
  18. package/esm2022/auto-complete/auto-complete-portal.component.mjs +5 -5
  19. package/esm2022/auto-complete/auto-complete.component.mjs +5 -5
  20. package/esm2022/auto-complete/auto-complete.module.mjs +5 -5
  21. package/esm2022/auto-complete/auto-complete.property.mjs +4 -4
  22. package/esm2022/avatar/avatar-group.component.mjs +4 -4
  23. package/esm2022/avatar/avatar.component.mjs +4 -4
  24. package/esm2022/avatar/avatar.module.mjs +5 -5
  25. package/esm2022/avatar/avatar.property.mjs +7 -7
  26. package/esm2022/back-top/back-top.component.mjs +4 -4
  27. package/esm2022/back-top/back-top.module.mjs +5 -5
  28. package/esm2022/back-top/back-top.property.mjs +4 -4
  29. package/esm2022/badge/badge.component.mjs +4 -4
  30. package/esm2022/badge/badge.module.mjs +5 -5
  31. package/esm2022/badge/badge.property.mjs +4 -4
  32. package/esm2022/base-form/base-form.component.mjs +4 -4
  33. package/esm2022/base-form/base-form.module.mjs +5 -5
  34. package/esm2022/base-form/base-form.property.mjs +4 -4
  35. package/esm2022/border/border.component.mjs +4 -4
  36. package/esm2022/border/border.module.mjs +5 -5
  37. package/esm2022/button/button.component.mjs +4 -4
  38. package/esm2022/button/button.module.mjs +5 -5
  39. package/esm2022/button/button.property.mjs +7 -7
  40. package/esm2022/button/buttons.component.mjs +4 -4
  41. package/esm2022/calendar/calendar.component.mjs +4 -4
  42. package/esm2022/calendar/calendar.module.mjs +5 -5
  43. package/esm2022/calendar/calendar.property.mjs +4 -4
  44. package/esm2022/card/card.component.mjs +4 -4
  45. package/esm2022/card/card.module.mjs +5 -5
  46. package/esm2022/card/card.property.mjs +4 -4
  47. package/esm2022/carousel/carousel-panel.component.mjs +4 -4
  48. package/esm2022/carousel/carousel.component.mjs +4 -4
  49. package/esm2022/carousel/carousel.module.mjs +5 -5
  50. package/esm2022/carousel/carousel.property.mjs +7 -7
  51. package/esm2022/cascade/cascade-portal.component.mjs +4 -4
  52. package/esm2022/cascade/cascade.component.mjs +4 -4
  53. package/esm2022/cascade/cascade.module.mjs +5 -5
  54. package/esm2022/cascade/cascade.property.mjs +4 -4
  55. package/esm2022/checkbox/checkbox.component.mjs +4 -4
  56. package/esm2022/checkbox/checkbox.module.mjs +5 -5
  57. package/esm2022/checkbox/checkbox.property.mjs +4 -4
  58. package/esm2022/collapse/collapse-panel.component.mjs +4 -4
  59. package/esm2022/collapse/collapse.component.mjs +4 -4
  60. package/esm2022/collapse/collapse.module.mjs +5 -5
  61. package/esm2022/collapse/collapse.property.mjs +7 -7
  62. package/esm2022/color/color.component.mjs +4 -4
  63. package/esm2022/color/color.module.mjs +5 -5
  64. package/esm2022/color/color.property.mjs +4 -4
  65. package/esm2022/color-picker/color-picker-portal.component.mjs +4 -4
  66. package/esm2022/color-picker/color-picker.component.mjs +4 -4
  67. package/esm2022/color-picker/color-picker.module.mjs +5 -5
  68. package/esm2022/color-picker/color-picker.property.mjs +4 -4
  69. package/esm2022/comment/comment-reply.component.mjs +4 -4
  70. package/esm2022/comment/comment.component.mjs +4 -4
  71. package/esm2022/comment/comment.module.mjs +5 -5
  72. package/esm2022/comment/comment.property.mjs +7 -7
  73. package/esm2022/container/aside.component.mjs +4 -4
  74. package/esm2022/container/container.component.mjs +4 -4
  75. package/esm2022/container/container.module.mjs +5 -5
  76. package/esm2022/container/container.property.mjs +13 -13
  77. package/esm2022/container/footer.component.mjs +4 -4
  78. package/esm2022/container/header.component.mjs +4 -4
  79. package/esm2022/container/main.component.mjs +4 -4
  80. package/esm2022/core/config/config.service.mjs +4 -4
  81. package/esm2022/core/services/http.service.mjs +4 -4
  82. package/esm2022/core/services/preloading-strategy.service.mjs +4 -4
  83. package/esm2022/core/services/storage.service.mjs +4 -4
  84. package/esm2022/core/theme/theme.service.mjs +4 -4
  85. package/esm2022/crumb/crumb.component.mjs +4 -4
  86. package/esm2022/crumb/crumb.module.mjs +5 -5
  87. package/esm2022/crumb/crumb.property.mjs +4 -4
  88. package/esm2022/date-picker/date-picker-portal.component.mjs +4 -4
  89. package/esm2022/date-picker/date-picker.component.mjs +4 -4
  90. package/esm2022/date-picker/date-picker.module.mjs +5 -5
  91. package/esm2022/date-picker/date-picker.property.mjs +19 -19
  92. package/esm2022/date-picker/date-quarter.pipe.mjs +4 -4
  93. package/esm2022/date-picker/date-range-portal.component.mjs +4 -4
  94. package/esm2022/date-picker/date-range.component.mjs +4 -4
  95. package/esm2022/date-picker/picker-date.component.mjs +4 -4
  96. package/esm2022/date-picker/picker-month.component.mjs +4 -4
  97. package/esm2022/date-picker/picker-quarter.component.mjs +4 -4
  98. package/esm2022/date-picker/picker-year.component.mjs +4 -4
  99. package/esm2022/description/description-item.component.mjs +4 -4
  100. package/esm2022/description/description.component.mjs +4 -4
  101. package/esm2022/description/description.module.mjs +5 -5
  102. package/esm2022/description/description.property.mjs +7 -7
  103. package/esm2022/dialog/dialog-container.component.mjs +4 -4
  104. package/esm2022/dialog/dialog-portal.component.mjs +4 -4
  105. package/esm2022/dialog/dialog-portal.directives.mjs +19 -19
  106. package/esm2022/dialog/dialog.component.mjs +4 -4
  107. package/esm2022/dialog/dialog.module.mjs +5 -5
  108. package/esm2022/dialog/dialog.property.mjs +7 -7
  109. package/esm2022/dialog/dialog.service.mjs +4 -4
  110. package/esm2022/doc/doc.component.mjs +5 -5
  111. package/esm2022/doc/doc.module.mjs +5 -5
  112. package/esm2022/drag/drag.directive.mjs +71 -0
  113. package/esm2022/drag/drag.module.mjs +19 -0
  114. package/esm2022/drag/drag.property.mjs +32 -0
  115. package/esm2022/drag/ng-nest-ui-drag.mjs +5 -0
  116. package/esm2022/drag/public-api.mjs +4 -0
  117. package/esm2022/drawer/drawer-container.component.mjs +4 -4
  118. package/esm2022/drawer/drawer-portal.component.mjs +4 -4
  119. package/esm2022/drawer/drawer-portal.directives.mjs +10 -10
  120. package/esm2022/drawer/drawer.component.mjs +4 -4
  121. package/esm2022/drawer/drawer.module.mjs +5 -5
  122. package/esm2022/drawer/drawer.property.mjs +7 -7
  123. package/esm2022/drawer/drawer.service.mjs +4 -4
  124. package/esm2022/dropdown/dropdown-portal.component.mjs +4 -4
  125. package/esm2022/dropdown/dropdown.component.mjs +4 -4
  126. package/esm2022/dropdown/dropdown.module.mjs +5 -5
  127. package/esm2022/dropdown/dropdown.property.mjs +4 -4
  128. package/esm2022/empty/empty.component.mjs +4 -4
  129. package/esm2022/empty/empty.module.mjs +5 -5
  130. package/esm2022/empty/empty.property.mjs +4 -4
  131. package/esm2022/examples/examples.component.mjs +4 -4
  132. package/esm2022/examples/examples.module.mjs +5 -5
  133. package/esm2022/find/find.component.mjs +4 -4
  134. package/esm2022/find/find.module.mjs +5 -5
  135. package/esm2022/find/find.property.mjs +4 -4
  136. package/esm2022/form/control.component.mjs +4 -4
  137. package/esm2022/form/form.component.mjs +4 -4
  138. package/esm2022/form/form.module.mjs +5 -5
  139. package/esm2022/form/form.property.mjs +7 -7
  140. package/esm2022/highlight/highlight.component.mjs +4 -4
  141. package/esm2022/highlight/highlight.module.mjs +5 -5
  142. package/esm2022/highlight/highlight.property.mjs +4 -4
  143. package/esm2022/i18n/i18n.directive.mjs +4 -4
  144. package/esm2022/i18n/i18n.module.mjs +5 -5
  145. package/esm2022/i18n/i18n.pipe.mjs +4 -4
  146. package/esm2022/i18n/i18n.service.mjs +4 -4
  147. package/esm2022/icon/icon.component.mjs +4 -4
  148. package/esm2022/icon/icon.module.mjs +5 -5
  149. package/esm2022/icon/icon.property.mjs +4 -4
  150. package/esm2022/icon/icon.service.mjs +4 -4
  151. package/esm2022/image/image-group.component.mjs +4 -4
  152. package/esm2022/image/image-preview.component.mjs +4 -4
  153. package/esm2022/image/image.component.mjs +4 -4
  154. package/esm2022/image/image.module.mjs +5 -5
  155. package/esm2022/image/image.property.mjs +7 -7
  156. package/esm2022/index.mjs +2 -1
  157. package/esm2022/inner/inner.component.mjs +4 -4
  158. package/esm2022/inner/inner.module.mjs +5 -5
  159. package/esm2022/inner/inner.property.mjs +4 -4
  160. package/esm2022/input/input-group.component.mjs +4 -4
  161. package/esm2022/input/input.component.mjs +5 -5
  162. package/esm2022/input/input.module.mjs +5 -5
  163. package/esm2022/input/input.property.mjs +17 -7
  164. package/esm2022/input-number/input-number.component.mjs +42 -17
  165. package/esm2022/input-number/input-number.module.mjs +5 -5
  166. package/esm2022/input-number/input-number.property.mjs +4 -4
  167. package/esm2022/keyword/keyword.directive.mjs +4 -4
  168. package/esm2022/keyword/keyword.module.mjs +5 -5
  169. package/esm2022/keyword/keyword.property.mjs +4 -4
  170. package/esm2022/layout/col.component.mjs +4 -4
  171. package/esm2022/layout/layout.module.mjs +5 -5
  172. package/esm2022/layout/layout.property.mjs +7 -7
  173. package/esm2022/layout/row.component.mjs +4 -4
  174. package/esm2022/link/link.component.mjs +4 -4
  175. package/esm2022/link/link.module.mjs +5 -5
  176. package/esm2022/link/link.property.mjs +4 -4
  177. package/esm2022/list/list-drop-group.directive.mjs +4 -4
  178. package/esm2022/list/list-option.component.mjs +4 -4
  179. package/esm2022/list/list.component.mjs +4 -4
  180. package/esm2022/list/list.module.mjs +5 -5
  181. package/esm2022/list/list.property.mjs +7 -7
  182. package/esm2022/loading/loading.component.mjs +4 -4
  183. package/esm2022/loading/loading.module.mjs +5 -5
  184. package/esm2022/loading/loading.property.mjs +4 -4
  185. package/esm2022/menu/menu-node.component.mjs +4 -4
  186. package/esm2022/menu/menu.component.mjs +4 -4
  187. package/esm2022/menu/menu.module.mjs +5 -5
  188. package/esm2022/menu/menu.property.mjs +7 -7
  189. package/esm2022/message/message.component.mjs +4 -4
  190. package/esm2022/message/message.module.mjs +5 -5
  191. package/esm2022/message/message.service.mjs +4 -4
  192. package/esm2022/message-box/message-box.component.mjs +4 -4
  193. package/esm2022/message-box/message-box.module.mjs +5 -5
  194. package/esm2022/message-box/message-box.service.mjs +4 -4
  195. package/esm2022/notification/notification.component.mjs +4 -4
  196. package/esm2022/notification/notification.module.mjs +5 -5
  197. package/esm2022/notification/notification.service.mjs +4 -4
  198. package/esm2022/outlet/outlet.directive.mjs +4 -4
  199. package/esm2022/outlet/outlet.module.mjs +5 -5
  200. package/esm2022/page-header/page-header.component.mjs +4 -4
  201. package/esm2022/page-header/page-header.module.mjs +5 -5
  202. package/esm2022/page-header/page-header.property.mjs +4 -4
  203. package/esm2022/pagination/pagination.component.mjs +4 -4
  204. package/esm2022/pagination/pagination.module.mjs +5 -5
  205. package/esm2022/pagination/pagination.property.mjs +4 -4
  206. package/esm2022/pattern/pattern.component.mjs +4 -4
  207. package/esm2022/pattern/pattern.module.mjs +5 -5
  208. package/esm2022/popconfirm/popconfirm.component.mjs +4 -4
  209. package/esm2022/popconfirm/popconfirm.module.mjs +5 -5
  210. package/esm2022/popconfirm/popconfirm.property.mjs +4 -4
  211. package/esm2022/popover/popover-portal.component.mjs +4 -4
  212. package/esm2022/popover/popover.directive.mjs +4 -4
  213. package/esm2022/popover/popover.module.mjs +5 -5
  214. package/esm2022/popover/popover.property.mjs +4 -4
  215. package/esm2022/portal/portal.module.mjs +5 -5
  216. package/esm2022/portal/portal.service.mjs +4 -4
  217. package/esm2022/progress/progress.component.mjs +4 -4
  218. package/esm2022/progress/progress.module.mjs +5 -5
  219. package/esm2022/progress/progress.property.mjs +4 -4
  220. package/esm2022/radio/radio.component.mjs +4 -4
  221. package/esm2022/radio/radio.module.mjs +5 -5
  222. package/esm2022/radio/radio.property.mjs +4 -4
  223. package/esm2022/rate/rate.component.mjs +4 -4
  224. package/esm2022/rate/rate.module.mjs +5 -5
  225. package/esm2022/rate/rate.property.mjs +4 -4
  226. package/esm2022/resizable/resizable.directive.mjs +4 -4
  227. package/esm2022/resizable/resizable.module.mjs +5 -5
  228. package/esm2022/resizable/resizable.property.mjs +4 -4
  229. package/esm2022/result/result.component.mjs +4 -4
  230. package/esm2022/result/result.module.mjs +5 -5
  231. package/esm2022/result/result.property.mjs +4 -4
  232. package/esm2022/ripple/ripple.directive.mjs +4 -4
  233. package/esm2022/ripple/ripple.module.mjs +5 -5
  234. package/esm2022/ripple/ripple.property.mjs +4 -4
  235. package/esm2022/select/select-portal.component.mjs +5 -5
  236. package/esm2022/select/select.component.mjs +5 -6
  237. package/esm2022/select/select.module.mjs +5 -5
  238. package/esm2022/select/select.property.mjs +4 -4
  239. package/esm2022/skeleton/skeleton.component.mjs +4 -4
  240. package/esm2022/skeleton/skeleton.module.mjs +5 -5
  241. package/esm2022/skeleton/skeleton.property.mjs +4 -4
  242. package/esm2022/slider/slider.component.mjs +4 -4
  243. package/esm2022/slider/slider.module.mjs +5 -5
  244. package/esm2022/slider/slider.property.mjs +4 -4
  245. package/esm2022/slider-select/slider-select.component.mjs +249 -50
  246. package/esm2022/slider-select/slider-select.module.mjs +31 -6
  247. package/esm2022/slider-select/slider-select.property.mjs +25 -4
  248. package/esm2022/statistic/countdown.component.mjs +4 -4
  249. package/esm2022/statistic/statistic.component.mjs +4 -4
  250. package/esm2022/statistic/statistic.module.mjs +5 -5
  251. package/esm2022/statistic/statistic.property.mjs +7 -7
  252. package/esm2022/steps/steps.component.mjs +4 -4
  253. package/esm2022/steps/steps.module.mjs +5 -5
  254. package/esm2022/steps/steps.property.mjs +4 -4
  255. package/esm2022/switch/switch.component.mjs +4 -4
  256. package/esm2022/switch/switch.module.mjs +5 -5
  257. package/esm2022/switch/switch.property.mjs +4 -4
  258. package/esm2022/table/public-api.mjs +1 -2
  259. package/esm2022/table/table-body.component.mjs +4 -4
  260. package/esm2022/table/table-foot.component.mjs +4 -4
  261. package/esm2022/table/table-head.component.mjs +6 -6
  262. package/esm2022/table/table.component.mjs +4 -4
  263. package/esm2022/table/table.module.mjs +12 -11
  264. package/esm2022/table/table.property.mjs +13 -13
  265. package/esm2022/tabs/tab-content.component.mjs +4 -4
  266. package/esm2022/tabs/tab-link.directive.mjs +7 -7
  267. package/esm2022/tabs/tab.component.mjs +4 -4
  268. package/esm2022/tabs/tabs.component.mjs +4 -4
  269. package/esm2022/tabs/tabs.module.mjs +5 -5
  270. package/esm2022/tabs/tabs.property.mjs +7 -7
  271. package/esm2022/tag/tag.component.mjs +4 -4
  272. package/esm2022/tag/tag.module.mjs +5 -5
  273. package/esm2022/tag/tag.property.mjs +4 -4
  274. package/esm2022/text-retract/text-retract.component.mjs +4 -4
  275. package/esm2022/text-retract/text-retract.module.mjs +5 -5
  276. package/esm2022/text-retract/text-retract.property.mjs +4 -4
  277. package/esm2022/textarea/textarea.component.mjs +4 -4
  278. package/esm2022/textarea/textarea.module.mjs +5 -5
  279. package/esm2022/textarea/textarea.property.mjs +4 -4
  280. package/esm2022/theme/theme.component.mjs +4 -4
  281. package/esm2022/theme/theme.module.mjs +5 -5
  282. package/esm2022/theme/theme.property.mjs +4 -4
  283. package/esm2022/time-ago/time-ago.module.mjs +5 -5
  284. package/esm2022/time-ago/time-ago.pipe.mjs +4 -4
  285. package/esm2022/time-picker/time-picker-frame.component.mjs +4 -4
  286. package/esm2022/time-picker/time-picker-portal.component.mjs +4 -4
  287. package/esm2022/time-picker/time-picker.component.mjs +4 -4
  288. package/esm2022/time-picker/time-picker.module.mjs +5 -5
  289. package/esm2022/time-picker/time-picker.property.mjs +4 -4
  290. package/esm2022/time-range/time-range.module.mjs +5 -5
  291. package/esm2022/time-range/time-range.pipe.mjs +4 -4
  292. package/esm2022/timeline/timeline.component.mjs +5 -5
  293. package/esm2022/timeline/timeline.module.mjs +5 -5
  294. package/esm2022/timeline/timeline.property.mjs +4 -4
  295. package/esm2022/tooltip/tooltip-portal.component.mjs +6 -5
  296. package/esm2022/tooltip/tooltip.directive.mjs +8 -6
  297. package/esm2022/tooltip/tooltip.module.mjs +7 -6
  298. package/esm2022/tooltip/tooltip.property.mjs +4 -4
  299. package/esm2022/transfer/transfer.component.mjs +4 -4
  300. package/esm2022/transfer/transfer.module.mjs +5 -5
  301. package/esm2022/transfer/transfer.property.mjs +4 -4
  302. package/esm2022/tree/tree-node.component.mjs +4 -4
  303. package/esm2022/tree/tree.component.mjs +6 -4
  304. package/esm2022/tree/tree.module.mjs +5 -5
  305. package/esm2022/tree/tree.property.mjs +7 -7
  306. package/esm2022/tree/tree.service.mjs +4 -4
  307. package/esm2022/tree-file/tree-file.component.mjs +4 -4
  308. package/esm2022/tree-file/tree-file.module.mjs +5 -5
  309. package/esm2022/tree-file/tree-file.property.mjs +4 -4
  310. package/esm2022/tree-select/tree-select-portal.component.mjs +5 -5
  311. package/esm2022/tree-select/tree-select.component.mjs +5 -5
  312. package/esm2022/tree-select/tree-select.module.mjs +5 -5
  313. package/esm2022/tree-select/tree-select.property.mjs +4 -4
  314. package/esm2022/typography/typography.component.mjs +4 -4
  315. package/esm2022/typography/typography.module.mjs +5 -5
  316. package/esm2022/typography/typography.property.mjs +4 -4
  317. package/esm2022/upload/upload-portal.component.mjs +4 -4
  318. package/esm2022/upload/upload.component.mjs +4 -4
  319. package/esm2022/upload/upload.module.mjs +5 -5
  320. package/esm2022/upload/upload.property.mjs +4 -4
  321. package/fesm2022/ng-nest-ui-affix.mjs +10 -10
  322. package/fesm2022/ng-nest-ui-affix.mjs.map +1 -1
  323. package/fesm2022/ng-nest-ui-alert.mjs +10 -10
  324. package/fesm2022/ng-nest-ui-alert.mjs.map +1 -1
  325. package/fesm2022/ng-nest-ui-anchor.mjs +16 -16
  326. package/fesm2022/ng-nest-ui-anchor.mjs.map +1 -1
  327. package/fesm2022/ng-nest-ui-api.mjs +7 -7
  328. package/fesm2022/ng-nest-ui-api.mjs.map +1 -1
  329. package/fesm2022/ng-nest-ui-auto-complete.mjs +15 -15
  330. package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
  331. package/fesm2022/ng-nest-ui-avatar.mjs +16 -16
  332. package/fesm2022/ng-nest-ui-avatar.mjs.map +1 -1
  333. package/fesm2022/ng-nest-ui-back-top.mjs +10 -10
  334. package/fesm2022/ng-nest-ui-back-top.mjs.map +1 -1
  335. package/fesm2022/ng-nest-ui-badge.mjs +10 -10
  336. package/fesm2022/ng-nest-ui-badge.mjs.map +1 -1
  337. package/fesm2022/ng-nest-ui-base-form.mjs +10 -10
  338. package/fesm2022/ng-nest-ui-base-form.mjs.map +1 -1
  339. package/fesm2022/ng-nest-ui-border.mjs +7 -7
  340. package/fesm2022/ng-nest-ui-border.mjs.map +1 -1
  341. package/fesm2022/ng-nest-ui-button.mjs +16 -16
  342. package/fesm2022/ng-nest-ui-button.mjs.map +1 -1
  343. package/fesm2022/ng-nest-ui-calendar.mjs +10 -10
  344. package/fesm2022/ng-nest-ui-calendar.mjs.map +1 -1
  345. package/fesm2022/ng-nest-ui-card.mjs +10 -10
  346. package/fesm2022/ng-nest-ui-card.mjs.map +1 -1
  347. package/fesm2022/ng-nest-ui-carousel.mjs +16 -16
  348. package/fesm2022/ng-nest-ui-carousel.mjs.map +1 -1
  349. package/fesm2022/ng-nest-ui-cascade.mjs +13 -13
  350. package/fesm2022/ng-nest-ui-cascade.mjs.map +1 -1
  351. package/fesm2022/ng-nest-ui-checkbox.mjs +10 -10
  352. package/fesm2022/ng-nest-ui-checkbox.mjs.map +1 -1
  353. package/fesm2022/ng-nest-ui-collapse.mjs +16 -16
  354. package/fesm2022/ng-nest-ui-collapse.mjs.map +1 -1
  355. package/fesm2022/ng-nest-ui-color-picker.mjs +13 -13
  356. package/fesm2022/ng-nest-ui-color-picker.mjs.map +1 -1
  357. package/fesm2022/ng-nest-ui-color.mjs +10 -10
  358. package/fesm2022/ng-nest-ui-color.mjs.map +1 -1
  359. package/fesm2022/ng-nest-ui-comment.mjs +16 -16
  360. package/fesm2022/ng-nest-ui-comment.mjs.map +1 -1
  361. package/fesm2022/ng-nest-ui-container.mjs +31 -31
  362. package/fesm2022/ng-nest-ui-container.mjs.map +1 -1
  363. package/fesm2022/ng-nest-ui-core.mjs +15 -15
  364. package/fesm2022/ng-nest-ui-core.mjs.map +1 -1
  365. package/fesm2022/ng-nest-ui-crumb.mjs +10 -10
  366. package/fesm2022/ng-nest-ui-crumb.mjs.map +1 -1
  367. package/fesm2022/ng-nest-ui-date-picker.mjs +49 -49
  368. package/fesm2022/ng-nest-ui-date-picker.mjs.map +1 -1
  369. package/fesm2022/ng-nest-ui-description.mjs +16 -16
  370. package/fesm2022/ng-nest-ui-description.mjs.map +1 -1
  371. package/fesm2022/ng-nest-ui-dialog.mjs +40 -40
  372. package/fesm2022/ng-nest-ui-dialog.mjs.map +1 -1
  373. package/fesm2022/ng-nest-ui-doc.mjs +8 -8
  374. package/fesm2022/ng-nest-ui-doc.mjs.map +1 -1
  375. package/fesm2022/ng-nest-ui-drag.mjs +119 -0
  376. package/fesm2022/ng-nest-ui-drag.mjs.map +1 -0
  377. package/fesm2022/ng-nest-ui-drawer.mjs +31 -31
  378. package/fesm2022/ng-nest-ui-drawer.mjs.map +1 -1
  379. package/fesm2022/ng-nest-ui-dropdown.mjs +13 -13
  380. package/fesm2022/ng-nest-ui-dropdown.mjs.map +1 -1
  381. package/fesm2022/ng-nest-ui-empty.mjs +10 -10
  382. package/fesm2022/ng-nest-ui-empty.mjs.map +1 -1
  383. package/fesm2022/ng-nest-ui-examples.mjs +7 -7
  384. package/fesm2022/ng-nest-ui-examples.mjs.map +1 -1
  385. package/fesm2022/ng-nest-ui-find.mjs +10 -10
  386. package/fesm2022/ng-nest-ui-find.mjs.map +1 -1
  387. package/fesm2022/ng-nest-ui-form.mjs +16 -16
  388. package/fesm2022/ng-nest-ui-form.mjs.map +1 -1
  389. package/fesm2022/ng-nest-ui-highlight.mjs +10 -10
  390. package/fesm2022/ng-nest-ui-highlight.mjs.map +1 -1
  391. package/fesm2022/ng-nest-ui-i18n.mjs +13 -13
  392. package/fesm2022/ng-nest-ui-i18n.mjs.map +1 -1
  393. package/fesm2022/ng-nest-ui-icon.mjs +13 -13
  394. package/fesm2022/ng-nest-ui-icon.mjs.map +1 -1
  395. package/fesm2022/ng-nest-ui-image.mjs +19 -19
  396. package/fesm2022/ng-nest-ui-image.mjs.map +1 -1
  397. package/fesm2022/ng-nest-ui-inner.mjs +10 -10
  398. package/fesm2022/ng-nest-ui-inner.mjs.map +1 -1
  399. package/fesm2022/ng-nest-ui-input-number.mjs +49 -25
  400. package/fesm2022/ng-nest-ui-input-number.mjs.map +1 -1
  401. package/fesm2022/ng-nest-ui-input.mjs +27 -17
  402. package/fesm2022/ng-nest-ui-input.mjs.map +1 -1
  403. package/fesm2022/ng-nest-ui-keyword.mjs +10 -10
  404. package/fesm2022/ng-nest-ui-keyword.mjs.map +1 -1
  405. package/fesm2022/ng-nest-ui-layout.mjs +16 -16
  406. package/fesm2022/ng-nest-ui-layout.mjs.map +1 -1
  407. package/fesm2022/ng-nest-ui-link.mjs +10 -10
  408. package/fesm2022/ng-nest-ui-link.mjs.map +1 -1
  409. package/fesm2022/ng-nest-ui-list.mjs +19 -19
  410. package/fesm2022/ng-nest-ui-list.mjs.map +1 -1
  411. package/fesm2022/ng-nest-ui-loading.mjs +10 -10
  412. package/fesm2022/ng-nest-ui-loading.mjs.map +1 -1
  413. package/fesm2022/ng-nest-ui-menu.mjs +16 -16
  414. package/fesm2022/ng-nest-ui-menu.mjs.map +1 -1
  415. package/fesm2022/ng-nest-ui-message-box.mjs +10 -10
  416. package/fesm2022/ng-nest-ui-message-box.mjs.map +1 -1
  417. package/fesm2022/ng-nest-ui-message.mjs +10 -10
  418. package/fesm2022/ng-nest-ui-message.mjs.map +1 -1
  419. package/fesm2022/ng-nest-ui-notification.mjs +10 -10
  420. package/fesm2022/ng-nest-ui-notification.mjs.map +1 -1
  421. package/fesm2022/ng-nest-ui-outlet.mjs +7 -7
  422. package/fesm2022/ng-nest-ui-outlet.mjs.map +1 -1
  423. package/fesm2022/ng-nest-ui-page-header.mjs +10 -10
  424. package/fesm2022/ng-nest-ui-page-header.mjs.map +1 -1
  425. package/fesm2022/ng-nest-ui-pagination.mjs +10 -10
  426. package/fesm2022/ng-nest-ui-pagination.mjs.map +1 -1
  427. package/fesm2022/ng-nest-ui-pattern.mjs +7 -7
  428. package/fesm2022/ng-nest-ui-pattern.mjs.map +1 -1
  429. package/fesm2022/ng-nest-ui-popconfirm.mjs +10 -10
  430. package/fesm2022/ng-nest-ui-popconfirm.mjs.map +1 -1
  431. package/fesm2022/ng-nest-ui-popover.mjs +13 -13
  432. package/fesm2022/ng-nest-ui-popover.mjs.map +1 -1
  433. package/fesm2022/ng-nest-ui-portal.mjs +7 -7
  434. package/fesm2022/ng-nest-ui-portal.mjs.map +1 -1
  435. package/fesm2022/ng-nest-ui-progress.mjs +10 -10
  436. package/fesm2022/ng-nest-ui-progress.mjs.map +1 -1
  437. package/fesm2022/ng-nest-ui-radio.mjs +10 -10
  438. package/fesm2022/ng-nest-ui-radio.mjs.map +1 -1
  439. package/fesm2022/ng-nest-ui-rate.mjs +10 -10
  440. package/fesm2022/ng-nest-ui-rate.mjs.map +1 -1
  441. package/fesm2022/ng-nest-ui-resizable.mjs +10 -10
  442. package/fesm2022/ng-nest-ui-resizable.mjs.map +1 -1
  443. package/fesm2022/ng-nest-ui-result.mjs +10 -10
  444. package/fesm2022/ng-nest-ui-result.mjs.map +1 -1
  445. package/fesm2022/ng-nest-ui-ripple.mjs +10 -10
  446. package/fesm2022/ng-nest-ui-ripple.mjs.map +1 -1
  447. package/fesm2022/ng-nest-ui-select.mjs +15 -16
  448. package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
  449. package/fesm2022/ng-nest-ui-skeleton.mjs +10 -10
  450. package/fesm2022/ng-nest-ui-skeleton.mjs.map +1 -1
  451. package/fesm2022/ng-nest-ui-slider-select.mjs +303 -59
  452. package/fesm2022/ng-nest-ui-slider-select.mjs.map +1 -1
  453. package/fesm2022/ng-nest-ui-slider.mjs +10 -10
  454. package/fesm2022/ng-nest-ui-slider.mjs.map +1 -1
  455. package/fesm2022/ng-nest-ui-statistic.mjs +16 -16
  456. package/fesm2022/ng-nest-ui-statistic.mjs.map +1 -1
  457. package/fesm2022/ng-nest-ui-steps.mjs +10 -10
  458. package/fesm2022/ng-nest-ui-steps.mjs.map +1 -1
  459. package/fesm2022/ng-nest-ui-switch.mjs +10 -10
  460. package/fesm2022/ng-nest-ui-switch.mjs.map +1 -1
  461. package/fesm2022/ng-nest-ui-table.mjs +40 -109
  462. package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
  463. package/fesm2022/ng-nest-ui-tabs.mjs +25 -25
  464. package/fesm2022/ng-nest-ui-tabs.mjs.map +1 -1
  465. package/fesm2022/ng-nest-ui-tag.mjs +10 -10
  466. package/fesm2022/ng-nest-ui-tag.mjs.map +1 -1
  467. package/fesm2022/ng-nest-ui-text-retract.mjs +10 -10
  468. package/fesm2022/ng-nest-ui-text-retract.mjs.map +1 -1
  469. package/fesm2022/ng-nest-ui-textarea.mjs +10 -10
  470. package/fesm2022/ng-nest-ui-textarea.mjs.map +1 -1
  471. package/fesm2022/ng-nest-ui-theme.mjs +10 -10
  472. package/fesm2022/ng-nest-ui-theme.mjs.map +1 -1
  473. package/fesm2022/ng-nest-ui-time-ago.mjs +7 -7
  474. package/fesm2022/ng-nest-ui-time-ago.mjs.map +1 -1
  475. package/fesm2022/ng-nest-ui-time-picker.mjs +16 -16
  476. package/fesm2022/ng-nest-ui-time-picker.mjs.map +1 -1
  477. package/fesm2022/ng-nest-ui-time-range.mjs +7 -7
  478. package/fesm2022/ng-nest-ui-time-range.mjs.map +1 -1
  479. package/fesm2022/ng-nest-ui-timeline.mjs +11 -11
  480. package/fesm2022/ng-nest-ui-timeline.mjs.map +1 -1
  481. package/fesm2022/ng-nest-ui-tooltip.mjs +23 -19
  482. package/fesm2022/ng-nest-ui-tooltip.mjs.map +1 -1
  483. package/fesm2022/ng-nest-ui-transfer.mjs +10 -10
  484. package/fesm2022/ng-nest-ui-transfer.mjs.map +1 -1
  485. package/fesm2022/ng-nest-ui-tree-file.mjs +10 -10
  486. package/fesm2022/ng-nest-ui-tree-file.mjs.map +1 -1
  487. package/fesm2022/ng-nest-ui-tree-select.mjs +15 -15
  488. package/fesm2022/ng-nest-ui-tree-select.mjs.map +1 -1
  489. package/fesm2022/ng-nest-ui-tree.mjs +21 -19
  490. package/fesm2022/ng-nest-ui-tree.mjs.map +1 -1
  491. package/fesm2022/ng-nest-ui-typography.mjs +10 -10
  492. package/fesm2022/ng-nest-ui-typography.mjs.map +1 -1
  493. package/fesm2022/ng-nest-ui-upload.mjs +13 -13
  494. package/fesm2022/ng-nest-ui-upload.mjs.map +1 -1
  495. package/fesm2022/ng-nest-ui.mjs +1 -0
  496. package/fesm2022/ng-nest-ui.mjs.map +1 -1
  497. package/index.d.ts +1 -0
  498. package/input/input.property.d.ts +11 -1
  499. package/input-number/input-number.component.d.ts +6 -1
  500. package/package.json +81 -75
  501. package/slider-select/slider-select.component.d.ts +33 -16
  502. package/slider-select/slider-select.module.d.ts +3 -1
  503. package/slider-select/slider-select.property.d.ts +56 -3
  504. package/table/public-api.d.ts +0 -1
  505. package/table/table.module.d.ts +18 -18
  506. package/tooltip/tooltip-portal.component.d.ts +2 -2
  507. package/tooltip/tooltip.module.d.ts +2 -1
  508. package/tooltip/tooltip.property.d.ts +2 -2
  509. package/esm2022/table/drag.directive.mjs +0 -78
  510. package/table/drag.directive.d.ts +0 -27
@@ -453,11 +453,11 @@ class XDateRangeComponent extends XDateRangeProperty {
453
453
  this.ngOnInit();
454
454
  this.cdr.detectChanges();
455
455
  }
456
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.5", ngImport: i0, type: XDateRangeComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.XConfigService }, { token: i0.ChangeDetectorRef }, { token: i2.XPortalService }, { token: i0.ViewContainerRef }, { token: i3.DatePipe }, { token: i4.Overlay }, { token: i5.XI18nService }], target: i0.ɵɵFactoryTarget.Component }); }
457
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.5", type: XDateRangeComponent, selector: "x-date-range", providers: [XValueAccessor(XDateRangeComponent), DatePipe], viewQueries: [{ propertyName: "dateRange", first: true, predicate: ["dateRange"], descendants: true, static: true }, { propertyName: "inputGroup", first: true, predicate: ["inputGroup"], descendants: true, static: true }, { propertyName: "inputStartCom", first: true, predicate: ["inputStartCom"], descendants: true, static: true }, { propertyName: "inputEndCom", first: true, predicate: ["inputEndCom"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\r\n #dateRange\r\n class=\"x-date-range\"\r\n [ngClass]=\"classMap\"\r\n [class.x-flex]=\"justify || align || direction\"\r\n [class.x-checked]=\"value\"\r\n [class.x-disabled]=\"disabled\"\r\n [class.x-required]=\"requiredIsEmpty\"\r\n [class.x-invalid]=\"invalid\"\r\n [class.x-date-range-bordered]=\"bordered\"\r\n [class.x-date-range-active]=\"active\"\r\n [class.x-date-range-active-start]=\"activeType === 'start'\"\r\n [class.x-date-range-active-end]=\"activeType === 'end'\"\r\n>\r\n <label *ngIf=\"label\" [class.x-date-range-label-required]=\"required\" [style.width]=\"labelWidth\" [ngClass]=\"labelMap\">{{ label }}</label>\r\n <div class=\"x-date-range-row\">\r\n <x-input-group #inputGroup class=\"x-date-range-group\" (mouseenter)=\"menter()\" (mouseleave)=\"mleave()\" (click)=\"showPortal($event)\">\r\n <x-input\r\n #inputStartCom\r\n class=\"x-data-range-input x-data-range-input-start\"\r\n type=\"text\"\r\n bordered=\"false\"\r\n [size]=\"size\"\r\n [disabled]=\"disabled\"\r\n [placeholder]=\"getStartPlaceholder\"\r\n (xFocus)=\"onFocus('start')\"\r\n (xClick)=\"showPortal($event, 'start')\"\r\n [(ngModel)]=\"startDisplay\"\r\n icon=\"fto-arrow-right\"\r\n ></x-input>\r\n <x-input\r\n #inputEndCom\r\n class=\"x-data-range-input x-data-range-input-end\"\r\n type=\"text\"\r\n bordered=\"false\"\r\n [size]=\"size\"\r\n [disabled]=\"disabled\"\r\n [placeholder]=\"getEndPlaceholder\"\r\n (xFocus)=\"onFocus('end')\"\r\n (xClick)=\"showPortal($event, 'end')\"\r\n [(ngModel)]=\"endDisplay\"\r\n [icon]=\"icon\"\r\n (clearEmit)=\"clearEmit()\"\r\n [clearable]=\"showClearable\"\r\n ></x-input>\r\n <div *ngIf=\"active\" class=\"x-date-range-active-bar\"></div>\r\n </x-input-group>\r\n <span class=\"x-date-range-error-message\" *ngIf=\"invalid\">{{ invalidMessage }}</span>\r\n <ng-container *ngIf=\"requiredIsEmpty || invalid\">\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-date-range{display:inline-block;width:15.6rem}x-date-range.x-date-range-date-time{width:23rem}x-date-range.x-date-range-date-minute{width:21rem}x-date-range.x-date-range-date-hour{width:19rem}.x-date-range{margin:0;padding:0;width:100%}.x-date-range.x-flex{display:flex}.x-date-range.x-justify-start{justify-content:flex-start}.x-date-range.x-justify-center{justify-content:center}.x-date-range.x-justify-end{justify-content:flex-end}.x-date-range.x-justify-space-between{justify-content:space-between}.x-date-range.x-justify-space-around{justify-content:space-around}.x-date-range.x-align-start{align-items:flex-start}.x-date-range.x-align-center{align-items:center}.x-date-range.x-align-end{align-items:flex-end}.x-date-range.x-direction-column{flex-direction:column}.x-date-range.x-direction-column-reverse{flex-direction:column-reverse}.x-date-range.x-direction-row{flex-direction:row}.x-date-range.x-direction-row-reverse{flex-direction:row-reverse}.x-date-range>label{display:inline-block;white-space:nowrap;position:relative;color:var(--x-text-300);font-weight:600}.x-date-range>label.x-text-align-start{text-align:start}.x-date-range>label.x-text-align-center{text-align:center}.x-date-range>label.x-text-align-end{text-align:end}.x-date-range.x-direction-row>label{padding:0 .5rem 0 0}.x-date-range.x-direction-row-reverse>label{padding:0 0 0 .5rem}.x-date-range.x-direction-column,.x-date-range.x-direction-column-reverse{align-items:inherit}.x-date-range-label-required:before{display:inline-block;margin-right:.25rem;color:var(--x-danger);line-height:1;font-size:var(--x-font-size-small);content:\"*\"}.x-date-range-error-message{position:absolute;bottom:0;left:0;font-size:var(--x-font-size)-.125rem;color:var(--x-danger);margin-bottom:calc((var(--x-font-size) + .45rem) * -1);width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.x-date-range.x-invalid>label,.x-date-range.x-required>label{color:var(--x-danger)}.x-date-range.x-invalid .x-date-range-input x-icon,.x-date-range.x-required .x-date-range-input x-icon{color:var(--x-danger)}.x-date-range.x-invalid .x-date-range-row .x-border-error,.x-date-range.x-required .x-date-range-row .x-border-error{position:absolute;height:.5rem;width:.5rem;z-index:10}.x-date-range.x-invalid .x-date-range-row .x-border-error.x-top-left,.x-date-range.x-required .x-date-range-row .x-border-error.x-top-left{border-top-left-radius:var(--x-border-radius);top:0;left:0;border-top:var(--x-border-width) solid var(--x-danger);border-left:var(--x-border-width) solid var(--x-danger)}.x-date-range.x-invalid .x-date-range-row .x-border-error.x-top-right,.x-date-range.x-required .x-date-range-row .x-border-error.x-top-right{border-top-right-radius:var(--x-border-radius);top:0;right:0;border-top:var(--x-border-width) solid var(--x-danger);border-right:var(--x-border-width) solid var(--x-danger)}.x-date-range.x-invalid .x-date-range-row .x-border-error.x-bottom-left,.x-date-range.x-required .x-date-range-row .x-border-error.x-bottom-left{border-bottom-left-radius:var(--x-border-radius);bottom:0;left:0;border-bottom:var(--x-border-width) solid var(--x-danger);border-left:var(--x-border-width) solid var(--x-danger)}.x-date-range.x-invalid .x-date-range-row .x-border-error.x-bottom-right,.x-date-range.x-required .x-date-range-row .x-border-error.x-bottom-right{border-bottom-right-radius:var(--x-border-radius);bottom:0;right:0;border-bottom:var(--x-border-width) solid var(--x-danger);border-right:var(--x-border-width) solid var(--x-danger)}.x-date-range-row{flex:1;display:flex;align-items:center;position:relative}.x-date-range-group{width:100%;font-size:var(--x-font-size);background-image:none;box-shadow:var(--x-box-shadow) transparent;transition:all var(--x-animation-duration-slow)}.x-date-range-group .x-input-group{display:flex;align-items:center;position:relative}.x-date-range-group .x-input-group>x-input{flex:1;width:50%}.x-date-range-group .x-input-group>x-input input{padding-left:.4rem!important;padding-right:.4rem!important}.x-date-range-bordered .x-date-range-group{border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius)}.x-date-range-bordered .x-date-range-group .x-input-group>x-input input{background-color:transparent;border-radius:0}.x-date-range-bordered:not(.x-disabled) .x-date-range-group:hover{border-color:var(--x-primary-300)}.x-date-range-active-bar{position:absolute;height:.125rem;margin-left:.4rem;bottom:-.0625rem;width:calc(50% - 2.2rem);background-color:var(--x-primary);transition:var(--x-animation-duration-base)}.x-date-range-active .x-date-range-group{border-color:var(--x-primary)}.x-date-range-active-start .x-date-range-active-bar{left:0}.x-date-range-active-end .x-date-range-active-bar{left:50%}.x-date-range-big>.x-date-range-row .x-date-range-input input{height:var(--x-height-big);line-height:var(--x-height-big)}.x-date-range-big>.x-date-range-row{height:var(--x-height-big);line-height:var(--x-height-big)}.x-date-range-big>label{height:var(--x-height-big);line-height:var(--x-height-big)}.x-date-range-large>.x-date-range-row .x-date-range-input input{height:var(--x-height-large);line-height:var(--x-height-large)}.x-date-range-large>.x-date-range-row{height:var(--x-height-large);line-height:var(--x-height-large)}.x-date-range-large>label{height:var(--x-height-large);line-height:var(--x-height-large)}.x-date-range-medium>.x-date-range-row .x-date-range-input input{height:var(--x-height-medium);line-height:var(--x-height-medium)}.x-date-range-medium>.x-date-range-row{height:var(--x-height-medium);line-height:var(--x-height-medium)}.x-date-range-medium>label{height:var(--x-height-medium);line-height:var(--x-height-medium)}.x-date-range-small>.x-date-range-row .x-date-range-input input{height:var(--x-height-small);line-height:var(--x-height-small)}.x-date-range-small>.x-date-range-row{height:var(--x-height-small);line-height:var(--x-height-small)}.x-date-range-small>label{height:var(--x-height-small);line-height:var(--x-height-small)}.x-date-range-mini>.x-date-range-row .x-date-range-input input{height:var(--x-height-mini);line-height:var(--x-height-mini)}.x-date-range-mini>.x-date-range-row{height:var(--x-height-mini);line-height:var(--x-height-mini)}.x-date-range-mini>label{height:var(--x-height-mini);line-height:var(--x-height-mini)}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.XInputComponent, selector: "x-input" }, { kind: "component", type: i7.XInputGroupComponent, selector: "x-input-group" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
456
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: XDateRangeComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.XConfigService }, { token: i0.ChangeDetectorRef }, { token: i2.XPortalService }, { token: i0.ViewContainerRef }, { token: i3.DatePipe }, { token: i4.Overlay }, { token: i5.XI18nService }], target: i0.ɵɵFactoryTarget.Component }); }
457
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: XDateRangeComponent, selector: "x-date-range", providers: [XValueAccessor(XDateRangeComponent), DatePipe], viewQueries: [{ propertyName: "dateRange", first: true, predicate: ["dateRange"], descendants: true, static: true }, { propertyName: "inputGroup", first: true, predicate: ["inputGroup"], descendants: true, static: true }, { propertyName: "inputStartCom", first: true, predicate: ["inputStartCom"], descendants: true, static: true }, { propertyName: "inputEndCom", first: true, predicate: ["inputEndCom"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\r\n #dateRange\r\n class=\"x-date-range\"\r\n [ngClass]=\"classMap\"\r\n [class.x-flex]=\"justify || align || direction\"\r\n [class.x-checked]=\"value\"\r\n [class.x-disabled]=\"disabled\"\r\n [class.x-required]=\"requiredIsEmpty\"\r\n [class.x-invalid]=\"invalid\"\r\n [class.x-date-range-bordered]=\"bordered\"\r\n [class.x-date-range-active]=\"active\"\r\n [class.x-date-range-active-start]=\"activeType === 'start'\"\r\n [class.x-date-range-active-end]=\"activeType === 'end'\"\r\n>\r\n <label *ngIf=\"label\" [class.x-date-range-label-required]=\"required\" [style.width]=\"labelWidth\" [ngClass]=\"labelMap\">{{ label }}</label>\r\n <div class=\"x-date-range-row\">\r\n <x-input-group #inputGroup class=\"x-date-range-group\" (mouseenter)=\"menter()\" (mouseleave)=\"mleave()\" (click)=\"showPortal($event)\">\r\n <x-input\r\n #inputStartCom\r\n class=\"x-data-range-input x-data-range-input-start\"\r\n type=\"text\"\r\n bordered=\"false\"\r\n [size]=\"size\"\r\n [disabled]=\"disabled\"\r\n [placeholder]=\"getStartPlaceholder\"\r\n (xFocus)=\"onFocus('start')\"\r\n (xClick)=\"showPortal($event, 'start')\"\r\n [(ngModel)]=\"startDisplay\"\r\n icon=\"fto-arrow-right\"\r\n ></x-input>\r\n <x-input\r\n #inputEndCom\r\n class=\"x-data-range-input x-data-range-input-end\"\r\n type=\"text\"\r\n bordered=\"false\"\r\n [size]=\"size\"\r\n [disabled]=\"disabled\"\r\n [placeholder]=\"getEndPlaceholder\"\r\n (xFocus)=\"onFocus('end')\"\r\n (xClick)=\"showPortal($event, 'end')\"\r\n [(ngModel)]=\"endDisplay\"\r\n [icon]=\"icon\"\r\n (clearEmit)=\"clearEmit()\"\r\n [clearable]=\"showClearable\"\r\n ></x-input>\r\n <div *ngIf=\"active\" class=\"x-date-range-active-bar\"></div>\r\n </x-input-group>\r\n <span class=\"x-date-range-error-message\" *ngIf=\"invalid\">{{ invalidMessage }}</span>\r\n <ng-container *ngIf=\"requiredIsEmpty || invalid\">\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-date-range{display:inline-block;width:15.6rem}x-date-range.x-date-range-date-time{width:23rem}x-date-range.x-date-range-date-minute{width:21rem}x-date-range.x-date-range-date-hour{width:19rem}.x-date-range{margin:0;padding:0;width:100%}.x-date-range.x-flex{display:flex}.x-date-range.x-justify-start{justify-content:flex-start}.x-date-range.x-justify-center{justify-content:center}.x-date-range.x-justify-end{justify-content:flex-end}.x-date-range.x-justify-space-between{justify-content:space-between}.x-date-range.x-justify-space-around{justify-content:space-around}.x-date-range.x-align-start{align-items:flex-start}.x-date-range.x-align-center{align-items:center}.x-date-range.x-align-end{align-items:flex-end}.x-date-range.x-direction-column{flex-direction:column}.x-date-range.x-direction-column-reverse{flex-direction:column-reverse}.x-date-range.x-direction-row{flex-direction:row}.x-date-range.x-direction-row-reverse{flex-direction:row-reverse}.x-date-range>label{display:inline-block;white-space:nowrap;position:relative;color:var(--x-text-300);font-weight:600}.x-date-range>label.x-text-align-start{text-align:start}.x-date-range>label.x-text-align-center{text-align:center}.x-date-range>label.x-text-align-end{text-align:end}.x-date-range.x-direction-row>label{padding:0 .5rem 0 0}.x-date-range.x-direction-row-reverse>label{padding:0 0 0 .5rem}.x-date-range.x-direction-column,.x-date-range.x-direction-column-reverse{align-items:inherit}.x-date-range-label-required:before{display:inline-block;margin-right:.25rem;color:var(--x-danger);line-height:1;font-size:var(--x-font-size-small);content:\"*\"}.x-date-range-error-message{position:absolute;bottom:0;left:0;font-size:var(--x-font-size)-.125rem;color:var(--x-danger);margin-bottom:calc((var(--x-font-size) + .45rem) * -1);width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.x-date-range.x-invalid>label,.x-date-range.x-required>label{color:var(--x-danger)}.x-date-range.x-invalid .x-date-range-input x-icon,.x-date-range.x-required .x-date-range-input x-icon{color:var(--x-danger)}.x-date-range.x-invalid .x-date-range-row .x-border-error,.x-date-range.x-required .x-date-range-row .x-border-error{position:absolute;height:.5rem;width:.5rem;z-index:10}.x-date-range.x-invalid .x-date-range-row .x-border-error.x-top-left,.x-date-range.x-required .x-date-range-row .x-border-error.x-top-left{border-top-left-radius:var(--x-border-radius);top:0;left:0;border-top:var(--x-border-width) solid var(--x-danger);border-left:var(--x-border-width) solid var(--x-danger)}.x-date-range.x-invalid .x-date-range-row .x-border-error.x-top-right,.x-date-range.x-required .x-date-range-row .x-border-error.x-top-right{border-top-right-radius:var(--x-border-radius);top:0;right:0;border-top:var(--x-border-width) solid var(--x-danger);border-right:var(--x-border-width) solid var(--x-danger)}.x-date-range.x-invalid .x-date-range-row .x-border-error.x-bottom-left,.x-date-range.x-required .x-date-range-row .x-border-error.x-bottom-left{border-bottom-left-radius:var(--x-border-radius);bottom:0;left:0;border-bottom:var(--x-border-width) solid var(--x-danger);border-left:var(--x-border-width) solid var(--x-danger)}.x-date-range.x-invalid .x-date-range-row .x-border-error.x-bottom-right,.x-date-range.x-required .x-date-range-row .x-border-error.x-bottom-right{border-bottom-right-radius:var(--x-border-radius);bottom:0;right:0;border-bottom:var(--x-border-width) solid var(--x-danger);border-right:var(--x-border-width) solid var(--x-danger)}.x-date-range-row{flex:1;display:flex;align-items:center;position:relative}.x-date-range-group{width:100%;font-size:var(--x-font-size);background-image:none;box-shadow:var(--x-box-shadow) transparent;transition:all var(--x-animation-duration-slow)}.x-date-range-group .x-input-group{display:flex;align-items:center;position:relative}.x-date-range-group .x-input-group>x-input{flex:1;width:50%}.x-date-range-group .x-input-group>x-input input{padding-left:.4rem!important;padding-right:.4rem!important}.x-date-range-bordered .x-date-range-group{border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius)}.x-date-range-bordered .x-date-range-group .x-input-group>x-input input{background-color:transparent;border-radius:0}.x-date-range-bordered:not(.x-disabled) .x-date-range-group:hover{border-color:var(--x-primary-300)}.x-date-range-active-bar{position:absolute;height:.125rem;margin-left:.4rem;bottom:-.0625rem;width:calc(50% - 2.2rem);background-color:var(--x-primary);transition:var(--x-animation-duration-base)}.x-date-range-active .x-date-range-group{border-color:var(--x-primary)}.x-date-range-active-start .x-date-range-active-bar{left:0}.x-date-range-active-end .x-date-range-active-bar{left:50%}.x-date-range-big>.x-date-range-row .x-date-range-input input{height:var(--x-height-big);line-height:var(--x-height-big)}.x-date-range-big>.x-date-range-row{height:var(--x-height-big);line-height:var(--x-height-big)}.x-date-range-big>label{height:var(--x-height-big);line-height:var(--x-height-big)}.x-date-range-large>.x-date-range-row .x-date-range-input input{height:var(--x-height-large);line-height:var(--x-height-large)}.x-date-range-large>.x-date-range-row{height:var(--x-height-large);line-height:var(--x-height-large)}.x-date-range-large>label{height:var(--x-height-large);line-height:var(--x-height-large)}.x-date-range-medium>.x-date-range-row .x-date-range-input input{height:var(--x-height-medium);line-height:var(--x-height-medium)}.x-date-range-medium>.x-date-range-row{height:var(--x-height-medium);line-height:var(--x-height-medium)}.x-date-range-medium>label{height:var(--x-height-medium);line-height:var(--x-height-medium)}.x-date-range-small>.x-date-range-row .x-date-range-input input{height:var(--x-height-small);line-height:var(--x-height-small)}.x-date-range-small>.x-date-range-row{height:var(--x-height-small);line-height:var(--x-height-small)}.x-date-range-small>label{height:var(--x-height-small);line-height:var(--x-height-small)}.x-date-range-mini>.x-date-range-row .x-date-range-input input{height:var(--x-height-mini);line-height:var(--x-height-mini)}.x-date-range-mini>.x-date-range-row{height:var(--x-height-mini);line-height:var(--x-height-mini)}.x-date-range-mini>label{height:var(--x-height-mini);line-height:var(--x-height-mini)}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.XInputComponent, selector: "x-input" }, { kind: "component", type: i7.XInputGroupComponent, selector: "x-input-group" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
458
458
  }
459
459
  export { XDateRangeComponent };
460
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.5", ngImport: i0, type: XDateRangeComponent, decorators: [{
460
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: XDateRangeComponent, decorators: [{
461
461
  type: Component,
462
462
  args: [{ selector: `${XDateRangePrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [XValueAccessor(XDateRangeComponent), DatePipe], template: "<div\r\n #dateRange\r\n class=\"x-date-range\"\r\n [ngClass]=\"classMap\"\r\n [class.x-flex]=\"justify || align || direction\"\r\n [class.x-checked]=\"value\"\r\n [class.x-disabled]=\"disabled\"\r\n [class.x-required]=\"requiredIsEmpty\"\r\n [class.x-invalid]=\"invalid\"\r\n [class.x-date-range-bordered]=\"bordered\"\r\n [class.x-date-range-active]=\"active\"\r\n [class.x-date-range-active-start]=\"activeType === 'start'\"\r\n [class.x-date-range-active-end]=\"activeType === 'end'\"\r\n>\r\n <label *ngIf=\"label\" [class.x-date-range-label-required]=\"required\" [style.width]=\"labelWidth\" [ngClass]=\"labelMap\">{{ label }}</label>\r\n <div class=\"x-date-range-row\">\r\n <x-input-group #inputGroup class=\"x-date-range-group\" (mouseenter)=\"menter()\" (mouseleave)=\"mleave()\" (click)=\"showPortal($event)\">\r\n <x-input\r\n #inputStartCom\r\n class=\"x-data-range-input x-data-range-input-start\"\r\n type=\"text\"\r\n bordered=\"false\"\r\n [size]=\"size\"\r\n [disabled]=\"disabled\"\r\n [placeholder]=\"getStartPlaceholder\"\r\n (xFocus)=\"onFocus('start')\"\r\n (xClick)=\"showPortal($event, 'start')\"\r\n [(ngModel)]=\"startDisplay\"\r\n icon=\"fto-arrow-right\"\r\n ></x-input>\r\n <x-input\r\n #inputEndCom\r\n class=\"x-data-range-input x-data-range-input-end\"\r\n type=\"text\"\r\n bordered=\"false\"\r\n [size]=\"size\"\r\n [disabled]=\"disabled\"\r\n [placeholder]=\"getEndPlaceholder\"\r\n (xFocus)=\"onFocus('end')\"\r\n (xClick)=\"showPortal($event, 'end')\"\r\n [(ngModel)]=\"endDisplay\"\r\n [icon]=\"icon\"\r\n (clearEmit)=\"clearEmit()\"\r\n [clearable]=\"showClearable\"\r\n ></x-input>\r\n <div *ngIf=\"active\" class=\"x-date-range-active-bar\"></div>\r\n </x-input-group>\r\n <span class=\"x-date-range-error-message\" *ngIf=\"invalid\">{{ invalidMessage }}</span>\r\n <ng-container *ngIf=\"requiredIsEmpty || invalid\">\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-date-range{display:inline-block;width:15.6rem}x-date-range.x-date-range-date-time{width:23rem}x-date-range.x-date-range-date-minute{width:21rem}x-date-range.x-date-range-date-hour{width:19rem}.x-date-range{margin:0;padding:0;width:100%}.x-date-range.x-flex{display:flex}.x-date-range.x-justify-start{justify-content:flex-start}.x-date-range.x-justify-center{justify-content:center}.x-date-range.x-justify-end{justify-content:flex-end}.x-date-range.x-justify-space-between{justify-content:space-between}.x-date-range.x-justify-space-around{justify-content:space-around}.x-date-range.x-align-start{align-items:flex-start}.x-date-range.x-align-center{align-items:center}.x-date-range.x-align-end{align-items:flex-end}.x-date-range.x-direction-column{flex-direction:column}.x-date-range.x-direction-column-reverse{flex-direction:column-reverse}.x-date-range.x-direction-row{flex-direction:row}.x-date-range.x-direction-row-reverse{flex-direction:row-reverse}.x-date-range>label{display:inline-block;white-space:nowrap;position:relative;color:var(--x-text-300);font-weight:600}.x-date-range>label.x-text-align-start{text-align:start}.x-date-range>label.x-text-align-center{text-align:center}.x-date-range>label.x-text-align-end{text-align:end}.x-date-range.x-direction-row>label{padding:0 .5rem 0 0}.x-date-range.x-direction-row-reverse>label{padding:0 0 0 .5rem}.x-date-range.x-direction-column,.x-date-range.x-direction-column-reverse{align-items:inherit}.x-date-range-label-required:before{display:inline-block;margin-right:.25rem;color:var(--x-danger);line-height:1;font-size:var(--x-font-size-small);content:\"*\"}.x-date-range-error-message{position:absolute;bottom:0;left:0;font-size:var(--x-font-size)-.125rem;color:var(--x-danger);margin-bottom:calc((var(--x-font-size) + .45rem) * -1);width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.x-date-range.x-invalid>label,.x-date-range.x-required>label{color:var(--x-danger)}.x-date-range.x-invalid .x-date-range-input x-icon,.x-date-range.x-required .x-date-range-input x-icon{color:var(--x-danger)}.x-date-range.x-invalid .x-date-range-row .x-border-error,.x-date-range.x-required .x-date-range-row .x-border-error{position:absolute;height:.5rem;width:.5rem;z-index:10}.x-date-range.x-invalid .x-date-range-row .x-border-error.x-top-left,.x-date-range.x-required .x-date-range-row .x-border-error.x-top-left{border-top-left-radius:var(--x-border-radius);top:0;left:0;border-top:var(--x-border-width) solid var(--x-danger);border-left:var(--x-border-width) solid var(--x-danger)}.x-date-range.x-invalid .x-date-range-row .x-border-error.x-top-right,.x-date-range.x-required .x-date-range-row .x-border-error.x-top-right{border-top-right-radius:var(--x-border-radius);top:0;right:0;border-top:var(--x-border-width) solid var(--x-danger);border-right:var(--x-border-width) solid var(--x-danger)}.x-date-range.x-invalid .x-date-range-row .x-border-error.x-bottom-left,.x-date-range.x-required .x-date-range-row .x-border-error.x-bottom-left{border-bottom-left-radius:var(--x-border-radius);bottom:0;left:0;border-bottom:var(--x-border-width) solid var(--x-danger);border-left:var(--x-border-width) solid var(--x-danger)}.x-date-range.x-invalid .x-date-range-row .x-border-error.x-bottom-right,.x-date-range.x-required .x-date-range-row .x-border-error.x-bottom-right{border-bottom-right-radius:var(--x-border-radius);bottom:0;right:0;border-bottom:var(--x-border-width) solid var(--x-danger);border-right:var(--x-border-width) solid var(--x-danger)}.x-date-range-row{flex:1;display:flex;align-items:center;position:relative}.x-date-range-group{width:100%;font-size:var(--x-font-size);background-image:none;box-shadow:var(--x-box-shadow) transparent;transition:all var(--x-animation-duration-slow)}.x-date-range-group .x-input-group{display:flex;align-items:center;position:relative}.x-date-range-group .x-input-group>x-input{flex:1;width:50%}.x-date-range-group .x-input-group>x-input input{padding-left:.4rem!important;padding-right:.4rem!important}.x-date-range-bordered .x-date-range-group{border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius)}.x-date-range-bordered .x-date-range-group .x-input-group>x-input input{background-color:transparent;border-radius:0}.x-date-range-bordered:not(.x-disabled) .x-date-range-group:hover{border-color:var(--x-primary-300)}.x-date-range-active-bar{position:absolute;height:.125rem;margin-left:.4rem;bottom:-.0625rem;width:calc(50% - 2.2rem);background-color:var(--x-primary);transition:var(--x-animation-duration-base)}.x-date-range-active .x-date-range-group{border-color:var(--x-primary)}.x-date-range-active-start .x-date-range-active-bar{left:0}.x-date-range-active-end .x-date-range-active-bar{left:50%}.x-date-range-big>.x-date-range-row .x-date-range-input input{height:var(--x-height-big);line-height:var(--x-height-big)}.x-date-range-big>.x-date-range-row{height:var(--x-height-big);line-height:var(--x-height-big)}.x-date-range-big>label{height:var(--x-height-big);line-height:var(--x-height-big)}.x-date-range-large>.x-date-range-row .x-date-range-input input{height:var(--x-height-large);line-height:var(--x-height-large)}.x-date-range-large>.x-date-range-row{height:var(--x-height-large);line-height:var(--x-height-large)}.x-date-range-large>label{height:var(--x-height-large);line-height:var(--x-height-large)}.x-date-range-medium>.x-date-range-row .x-date-range-input input{height:var(--x-height-medium);line-height:var(--x-height-medium)}.x-date-range-medium>.x-date-range-row{height:var(--x-height-medium);line-height:var(--x-height-medium)}.x-date-range-medium>label{height:var(--x-height-medium);line-height:var(--x-height-medium)}.x-date-range-small>.x-date-range-row .x-date-range-input input{height:var(--x-height-small);line-height:var(--x-height-small)}.x-date-range-small>.x-date-range-row{height:var(--x-height-small);line-height:var(--x-height-small)}.x-date-range-small>label{height:var(--x-height-small);line-height:var(--x-height-small)}.x-date-range-mini>.x-date-range-row .x-date-range-input input{height:var(--x-height-mini);line-height:var(--x-height-mini)}.x-date-range-mini>.x-date-range-row{height:var(--x-height-mini);line-height:var(--x-height-mini)}.x-date-range-mini>label{height:var(--x-height-mini);line-height:var(--x-height-mini)}\n"] }]
463
463
  }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.XConfigService }, { type: i0.ChangeDetectorRef }, { type: i2.XPortalService }, { type: i0.ViewContainerRef }, { type: i3.DatePipe }, { type: i4.Overlay }, { type: i5.XI18nService }]; }, propDecorators: { dateRange: [{
@@ -473,4 +473,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.5", ngImpor
473
473
  type: ViewChild,
474
474
  args: ['inputEndCom', { static: true }]
475
475
  }] } });
476
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS9kYXRlLXBpY2tlci9kYXRlLXJhbmdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL2RhdGUtcGlja2VyL2RhdGUtcmFuZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQyx3QkFBd0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pHLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFDTCxTQUFTLEVBRVQsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQU12QixTQUFTLEVBRVQsTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRyxPQUFPLEVBQ0wsUUFBUSxFQUNSLE9BQU8sRUFDUCxTQUFTLEVBQ1QsU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEVBRVQsT0FBTyxFQUNQLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsUUFBUSxFQUNULE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7OztBQUcxRSxNQVFhLG1CQUFvQixTQUFRLGtCQUFrQjtJQVd6RCxJQUFJLG1CQUFtQjtRQUNyQixJQUFJLElBQUksQ0FBQyxXQUFXLElB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QUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3BGLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztpSUEvY1UsbUJBQW1CO3FIQUFuQixtQkFBbUIsdUNBRm5CLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsUUFBUSxDQUFDLCtmQzdDNUQsNnpFQXdEQTs7U0RUYSxtQkFBbUI7MkZBQW5CLG1CQUFtQjtrQkFSL0IsU0FBUzsrQkFDRSxHQUFHLGdCQUFnQixFQUFFLGlCQUdoQixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsY0FBYyxxQkFBcUIsRUFBRSxRQUFRLENBQUM7MFRBR2hCLFNBQVM7c0JBQWxELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDRyxVQUFVO3NCQUFwRCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ0ssYUFBYTtzQkFBMUQsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNBLFdBQVc7c0JBQXRELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFhQb3J0YWxTZXJ2aWNlLCBYUG9ydGFsT3ZlcmxheVJlZiwgWFBvcnRhbENvbm5lY3RlZFBvc2l0aW9uIH0gZnJvbSAnQG5nLW5lc3QvdWkvcG9ydGFsJztcclxuaW1wb3J0IHsgU3ViamVjdCwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBSZW5kZXJlcjIsXHJcbiAgRWxlbWVudFJlZixcclxuICBPbkNoYW5nZXMsXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxuICBWaWV3Q2hpbGQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBpbmplY3RcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWERhdGVQaWNrZXJNb2RlbFR5cGUsIFhEYXRlUmFuZ2VQcmVmaXgsIFhEYXRlUmFuZ2VQcm9wZXJ0eSB9IGZyb20gJy4vZGF0ZS1waWNrZXIucHJvcGVydHknO1xyXG5pbXBvcnQge1xyXG4gIFhJc0VtcHR5LFxyXG4gIFhJc0RhdGUsXHJcbiAgWElzTnVtYmVyLFxyXG4gIFhJc0NoYW5nZSxcclxuICBYQ29ybmVyLFxyXG4gIFhDbGVhckNsYXNzLFxyXG4gIFhJc1N0cmluZyxcclxuICBYQ29uZmlnU2VydmljZSxcclxuICBYSXNOdWxsLFxyXG4gIFhEYXRlWWVhcldlZWssXHJcbiAgWERhdGVZZWFyUXVhcnRlcixcclxuICBYUGFyZW50c1xyXG59IGZyb20gJ0BuZy1uZXN0L3VpL2NvcmUnO1xyXG5pbXBvcnQgeyBYSW5wdXRDb21wb25lbnQsIFhJbnB1dEdyb3VwQ29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvaW5wdXQnO1xyXG5pbXBvcnQgeyBET0NVTUVOVCwgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3ksIENvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbkNoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcclxuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgWFZhbHVlQWNjZXNzb3IgfSBmcm9tICdAbmctbmVzdC91aS9iYXNlLWZvcm0nO1xyXG5pbXBvcnQgeyBYRGF0ZVJhbmdlUG9ydGFsQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRlLXJhbmdlLXBvcnRhbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBYSTE4bkRhdGVQaWNrZXIsIFhJMThuU2VydmljZSB9IGZyb20gJ0BuZy1uZXN0L3VpL2kxOG4nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IGAke1hEYXRlUmFuZ2VQcmVmaXh9YCxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1yYW5nZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1yYW5nZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbWFZhbHVlQWNjZXNzb3IoWERhdGVSYW5nZUNvbXBvbmVudCksIERhdGVQaXBlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgWERhdGVSYW5nZUNvbXBvbmVudCBleHRlbmRzIFhEYXRlUmFuZ2VQcm9wZXJ0eSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBAVmlld0NoaWxkKCdkYXRlUmFuZ2UnLCB7IHN0YXRpYzogdHJ1ZSB9KSBkYXRlUmFuZ2UhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdpbnB1dEdyb3VwJywgeyBzdGF0aWM6IHRydWUgfSkgaW5wdXRHcm91cCE6IFhJbnB1dEdyb3VwQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0U3RhcnRDb20nLCB7IHN0YXRpYzogdHJ1ZSB9KSBpbnB1dFN0YXJ0Q29tITogWElucHV0Q29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0RW5kQ29tJywgeyBzdGF0aWM6IHRydWUgfSkgaW5wdXRFbmRDb20hOiBYSW5wdXRDb21wb25lbnQ7XHJcblxyXG4gIG1vZGVsVHlwZTogWERhdGVQaWNrZXJNb2RlbFR5cGUgPSAnZGF0ZSc7XHJcbiAgbnVtYmVyVmFsdWUhOiAobnVtYmVyIHwgbnVsbClbXTtcclxuICBpc0lucHV0ID0gZmFsc2U7XHJcbiAgc2hvd0NsZWFyYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBnZXQgZ2V0U3RhcnRQbGFjZWhvbGRlcigpIHtcclxuICAgIGlmICh0aGlzLnBsYWNlaG9sZGVyICYmIHRoaXMucGxhY2Vob2xkZXIubGVuZ3RoID4gMCkgcmV0dXJuIHRoaXMucGxhY2Vob2xkZXJbMF07XHJcbiAgICBpZiAodGhpcy50eXBlID09PSAnbW9udGgnKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsZS5zdGFydE1vbnRoO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdxdWFydGVyJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5sb2NhbGUuc3RhcnRRdWFydGVyO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICd5ZWFyJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5sb2NhbGUuc3RhcnRZZWFyO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICd3ZWVrJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5sb2NhbGUuc3RhcnRXZWVrO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9jYWxlLnN0YXJ0RGF0ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBnZXRFbmRQbGFjZWhvbGRlcigpIHtcclxuICAgIGlmICh0aGlzLnBsYWNlaG9sZGVyICYmIHRoaXMucGxhY2Vob2xkZXIubGVuZ3RoID4gMSkgcmV0dXJuIHRoaXMucGxhY2Vob2xkZXJbMV07XHJcbiAgICBpZiAodGhpcy50eXBlID09PSAnbW9udGgnKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsZS5lbmRNb250aDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSAncXVhcnRlcicpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9jYWxlLmVuZFF1YXJ0ZXI7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ3llYXInKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsZS5lbmRZZWFyO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICd3ZWVrJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5sb2NhbGUuZW5kV2VlaztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsZS5lbmREYXRlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgZ2V0IHJlcXVpcmVkSXNFbXB0eSgpIHtcclxuICAgIHJldHVybiB0aGlzLnZhbGlkYXRvciAmJiB0aGlzLnJlcXVpcmVkICYmIFhJc0VtcHR5KHRoaXMudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XHJcbiAgICBpZiAoWElzRW1wdHkodmFsdWUpKSB7XHJcbiAgICAgIHZhbHVlID0gW107XHJcbiAgICAgIHRoaXMubnVtYmVyVmFsdWUgPSBbXTtcclxuICAgIH1cclxuICAgIGlmICh2YWx1ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGlmIChYSXNEYXRlKHZhbHVlWzBdKSkge1xyXG4gICAgICAgIHRoaXMubW9kZWxUeXBlID0gJ2RhdGUnO1xyXG4gICAgICAgIHRoaXMubnVtYmVyVmFsdWUgPSB2YWx1ZS5tYXAoKHg6IERhdGUpID0+IHguZ2V0VGltZSgpKTtcclxuICAgICAgfSBlbHNlIGlmIChYSXNOdW1iZXIodmFsdWVbMF0pKSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbFR5cGUgPSAnbnVtYmVyJztcclxuICAgICAgICB0aGlzLm51bWJlclZhbHVlID0gdmFsdWU7XHJcbiAgICAgIH0gZWxzZSBpZiAoWElzU3RyaW5nKHZhbHVlWzBdKSkge1xyXG4gICAgICAgIHRoaXMubW9kZWxUeXBlID0gJ3N0cmluZyc7XHJcbiAgICAgICAgY29uc3QgdmFsdWVUaW1lID0gdmFsdWUubWFwKCh4OiBzdHJpbmcpID0+IG5ldyBEYXRlKHgpLmdldFRpbWUoKSk7XHJcbiAgICAgICAgdGhpcy5udW1iZXJWYWx1ZSA9ICFpc05hTih2YWx1ZVRpbWVbMF0pID8gdmFsdWVUaW1lIDogW107XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuc2V0RGlzcGxheVZhbHVlKHRoaXMubnVtYmVyVmFsdWUpO1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5uZXh0KHRoaXMubnVtYmVyVmFsdWUpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgZW50ZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpbnB1dENsZWFyYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGFuaW1hdGluZyA9IGZhbHNlO1xyXG4gIGRpc3BsYXlWYWx1ZTogc3RyaW5nW10gPSBbXTtcclxuICBwb3J0YWwhOiBYUG9ydGFsT3ZlcmxheVJlZjxYRGF0ZVJhbmdlUG9ydGFsQ29tcG9uZW50PjtcclxuICBpY29uOiBzdHJpbmcgPSAnZnRvLWNhbGVuZGFyJztcclxuICBib3ghOiBET01SZWN0O1xyXG4gIHByb3RhbEhlaWdodCE6IG51bWJlcjtcclxuICBtYXhOb2RlczogbnVtYmVyID0gNjtcclxuICBwcm90YWxUb2JvdHRvbTogYm9vbGVhbiA9IHRydWU7XHJcbiAgdmFsdWVDaGFuZ2U6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgZGF0YUNoYW5nZTogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3QoKTtcclxuICBwb3NpdGlvbkNoYW5nZTogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3QoKTtcclxuICBjbG9zZVN1YmplY3Q6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xyXG4gIGFjdGl2ZVR5cGVDaGFuZ2UgPSBuZXcgU3ViamVjdDwnc3RhcnQnIHwgJ2VuZCc+KCk7XHJcbiAgc3RhcnREaXNwbGF5OiBzdHJpbmcgfCBudW1iZXIgPSAnJztcclxuICBlbmREaXNwbGF5OiBzdHJpbmcgfCBudW1iZXIgPSAnJztcclxuICBhY3RpdmVUeXBlPzogJ3N0YXJ0JyB8ICdlbmQnO1xyXG4gIGZsZXhDbGFzczogc3RyaW5nW10gPSBbXTtcclxuICBsb2NhbGU6IFhJMThuRGF0ZVBpY2tlciA9IHt9O1xyXG4gIHByaXZhdGUgX3VuU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBwdWJsaWMgY29uZmlnU2VydmljZTogWENvbmZpZ1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgcG9ydGFsU2VydmljZTogWFBvcnRhbFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICBwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSxcclxuICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcclxuICAgIHByaXZhdGUgaTE4bjogWEkxOG5TZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnNldEZsZXgodGhpcy5kYXRlUmFuZ2UubmF0aXZlRWxlbWVudCwgdGhpcy5yZW5kZXJlciwgdGhpcy5qdXN0aWZ5LCB0aGlzLmFsaWduLCB0aGlzLmRpcmVjdGlvbik7XHJcbiAgICB0aGlzLnNldEhvc3RUeXBlQ2xhc3MoKTtcclxuICAgIHRoaXMuc2V0Rm9ybWF0KCk7XHJcbiAgICB0aGlzLnNldENsYXNzTWFwKCk7XHJcbiAgICB0aGlzLnNldFN1YmplY3QoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuc2V0UG9ydGFsKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IHR5cGUsIGp1c3RpZnksIGFsaWduLCBkaXJlY3Rpb24sIHNpemUsIGxhYmVsQWxpZ24gfSA9IGNoYW5nZXM7XHJcbiAgICBYSXNDaGFuZ2Uoc2l6ZSwgbGFiZWxBbGlnbikgJiYgdGhpcy5zZXRDbGFzc01hcCgpO1xyXG4gICAgWElzQ2hhbmdlKGp1c3RpZnksIGFsaWduLCBkaXJlY3Rpb24pICYmIHRoaXMuc2V0RmxleENsYXNzKCk7XHJcbiAgICBpZiAoWElzQ2hhbmdlKHR5cGUpKSB7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybWF0KCk7XHJcbiAgICAgIHRoaXMuc2V0RGlzcGxheVZhbHVlKHRoaXMubnVtYmVyVmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl91blN1YmplY3QubmV4dCgpO1xyXG4gICAgdGhpcy5fdW5TdWJqZWN0LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBzZXRTdWJqZWN0KCkge1xyXG4gICAgdGhpcy5jbG9zZVN1YmplY3QucGlwZSh0YWtlVW50aWwodGhpcy5fdW5TdWJqZWN0KSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5jbG9zZVBvcnRhbCgpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmkxOG4ubG9jYWxlQ2hhbmdlXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgoeCkgPT4geC5kYXRlUGlja2VyIGFzIFhJMThuRGF0ZVBpY2tlciksXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX3VuU3ViamVjdClcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2NhbGUgPSB4O1xyXG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldEZsZXhDbGFzcygpIHtcclxuICAgIGlmICh0aGlzLmZsZXhDbGFzcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvciAobGV0IGNscyBvZiB0aGlzLmZsZXhDbGFzcykge1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5kYXRlUmFuZ2UubmF0aXZlRWxlbWVudCwgY2xzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5mbGV4Q2xhc3MgPSB0aGlzLnNldEZsZXgodGhpcy5kYXRlUmFuZ2UubmF0aXZlRWxlbWVudCwgdGhpcy5yZW5kZXJlciwgdGhpcy5qdXN0aWZ5LCB0aGlzLmFsaWduLCB0aGlzLmRpcmVjdGlvbik7XHJcbiAgfVxyXG5cclxuICBzZXRIb3N0VHlwZUNsYXNzKCkge1xyXG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgYHgtZGF0ZS1yYW5nZS0ke3RoaXMudHlwZX1gKTtcclxuICB9XHJcblxyXG4gIHNldFBhcmFudFNjcm9sbCgpIHtcclxuICAgIGlmICghdGhpcy5kb2N1bWVudCkgcmV0dXJuO1xyXG4gICAgY29uc3QgcGFyZW50cyA9IFhQYXJlbnRzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcclxuICAgIGxldCBmaXJzdFNjcm9sbDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcclxuICAgIGZvciAobGV0IGl0ZW0gb2YgcGFyZW50cykge1xyXG4gICAgICBpZiAoaXRlbS5jbGllbnRIZWlnaHQgPCBpdGVtLnNjcm9sbEhlaWdodCkge1xyXG4gICAgICAgIGZpcnN0U2Nyb2xsID0gaXRlbTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGZpcnN0U2Nyb2xsICYmIGZpcnN0U2Nyb2xsLnRhZ05hbWUgIT09ICdCT0RZJykge1xyXG4gICAgICBmcm9tRXZlbnQoZmlyc3RTY3JvbGwsICdzY3JvbGwnKVxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMucG9ydGFsQXR0YWNoZWQoKSEpLFxyXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX3VuU3ViamVjdClcclxuICAgICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBvcnRhbD8ub3ZlcmxheVJlZj8udXBkYXRlUG9zaXRpb24oKTtcclxuICAgICAgICAgIGNvbnN0IGVyYWN0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgICAgICBjb25zdCBmcmVjdCA9IGZpcnN0U2Nyb2xsIS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgICAgIGlmIChlcmFjdC50b3AgKyBlcmFjdC5oZWlnaHQgLSBmcmVjdC50b3AgPCAwIHx8IGVyYWN0LmJvdHRvbSA+IGZyZWN0LmJvdHRvbSkge1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlU3ViamVjdC5uZXh0KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRGb3JtYXQoKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtYXQgIT09ICd5eXl5LU1NLWRkJykgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgIHRoaXMuZm9ybWF0ID0gJ3l5eXktTU0tZGQnO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICd5ZWFyJykge1xyXG4gICAgICB0aGlzLmZvcm1hdCA9ICd5eXl5JztcclxuICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSAnbW9udGgnKSB7XHJcbiAgICAgIHRoaXMuZm9ybWF0ID0gJ3l5eXktTU0nO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdkYXRlLXRpbWUnKSB7XHJcbiAgICAgIHRoaXMuZm9ybWF0ID0gJ3l5eXktTU0tZGQgSEg6bW06c3MnO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdkYXRlLWhvdXInKSB7XHJcbiAgICAgIHRoaXMuZm9ybWF0ID0gJ3l5eXktTU0tZGQgSEgnO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdkYXRlLW1pbnV0ZScpIHtcclxuICAgICAgdGhpcy5mb3JtYXQgPSAneXl5eS1NTS1kZCBISDptbSc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtZW50ZXIoKSB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCAhdGhpcy5jbGVhcmFibGUpIHJldHVybjtcclxuICAgIHRoaXMuZW50ZXIgPSB0cnVlO1xyXG4gICAgaWYgKCFYSXNFbXB0eSh0aGlzLm51bWJlclZhbHVlKSkge1xyXG4gICAgICB0aGlzLmljb24gPSAnJztcclxuICAgICAgdGhpcy5zaG93Q2xlYXJhYmxlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbWxlYXZlKCkge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgIXRoaXMuY2xlYXJhYmxlKSByZXR1cm47XHJcbiAgICB0aGlzLmVudGVyID0gZmFsc2U7XHJcbiAgICBpZiAodGhpcy5jbGVhcmFibGUpIHtcclxuICAgICAgdGhpcy5pY29uID0gJ2Z0by1jYWxlbmRhcic7XHJcbiAgICAgIHRoaXMuc2hvd0NsZWFyYWJsZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbGVhckVtaXQoKSB7XHJcbiAgICB0aGlzLnZhbHVlID0gW107XHJcbiAgICB0aGlzLm51bWJlclZhbHVlID0gW107XHJcbiAgICB0aGlzLnN0YXJ0RGlzcGxheSA9ICcnO1xyXG4gICAgdGhpcy5lbmREaXNwbGF5ID0gJyc7XHJcbiAgICB0aGlzLm1sZWF2ZSgpO1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5uZXh0KHRoaXMubnVtYmVyVmFsdWUpO1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbFZhbGlkYXRvcigpO1xyXG4gICAgdGhpcy5tb2RlbENoYW5nZSgpO1xyXG4gICAgdGhpcy5pbnB1dFN0YXJ0Q29tLmlucHV0Rm9jdXMoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG9uSWNvbkNsaWNrKGV2ZW50OiBFdmVudCkge1xyXG4gICAgaWYgKHRoaXMuaWNvbiA9PT0gJ2Z0by14Jykge1xyXG4gICAgICB0aGlzLmNsZWFyRW1pdCgpO1xyXG4gICAgfVxyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBtb2RlbENoYW5nZSgpIHtcclxuICAgIGlmICh0aGlzLm9uQ2hhbmdlKSB7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5nZXRWYWx1ZSgpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFZhbHVlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMubW9kZWxUeXBlID09PSAnZGF0ZSdcclxuICAgICAgPyB0aGlzLm51bWJlclZhbHVlLm1hcCgoeCkgPT4gbmV3IERhdGUoeCEpKVxyXG4gICAgICA6IHRoaXMubW9kZWxUeXBlID09PSAnc3RyaW5nJ1xyXG4gICAgICA/IHRoaXMubnVtYmVyVmFsdWUubWFwKCh4KSA9PiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh4LCB0aGlzLmZvcm1hdCkpXHJcbiAgICAgIDogdGhpcy5udW1iZXJWYWx1ZTtcclxuICB9XHJcblxyXG4gIGdldE51bWJlclZhbHVlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMubW9kZWxUeXBlID09PSAnZGF0ZSdcclxuICAgICAgPyB0aGlzLnZhbHVlLm1hcCgoeDogRGF0ZSkgPT4geC5nZXRUaW1lKCkpXHJcbiAgICAgIDogdGhpcy5tb2RlbFR5cGUgPT09ICdzdHJpbmcnXHJcbiAgICAgID8gdGhpcy52YWx1ZS5tYXAoKHg6IHN0cmluZykgPT4gbmV3IERhdGUoeCkuZ2V0VGltZSgpKVxyXG4gICAgICA6IHRoaXMudmFsdWU7XHJcbiAgfVxyXG5cclxuICBwb3J0YWxBdHRhY2hlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLnBvcnRhbD8ub3ZlcmxheVJlZj8uaGFzQXR0YWNoZWQoKTtcclxuICB9XHJcblxyXG4gIGNsb3NlUG9ydGFsKCkge1xyXG4gICAgaWYgKHRoaXMucG9ydGFsQXR0YWNoZWQoKSkge1xyXG4gICAgICB0aGlzLnBvcnRhbD8ub3ZlcmxheVJlZj8uZGV0YWNoKCk7XHJcbiAgICAgIHRoaXMuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2xvc2VSZWR1Y3Rpb24oKTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGNsb3NlUmVkdWN0aW9uKCkge1xyXG4gICAgaWYgKCF0aGlzLm51bWJlclZhbHVlIHx8IHRoaXMubnVtYmVyVmFsdWUubGVuZ3RoID09PSAwIHx8IHRoaXMubnVtYmVyVmFsdWUuaW5jbHVkZXMobnVsbCkpIHtcclxuICAgICAgaWYgKCF0aGlzLnZhbHVlIHx8IHRoaXMudmFsdWUubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy5zdGFydERpc3BsYXkgPSAnJztcclxuICAgICAgICB0aGlzLmVuZERpc3BsYXkgPSAnJztcclxuICAgICAgICB0aGlzLm51bWJlclZhbHVlID0gW107XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5udW1iZXJWYWx1ZSA9IHRoaXMuZ2V0TnVtYmVyVmFsdWUoKTtcclxuICAgICAgICB0aGlzLnNldERpc3BsYXlWYWx1ZSh0aGlzLm51bWJlclZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLm51bWJlclZhbHVlLmluY2x1ZGVzKG51bGwpICYmIHRoaXMudmFsdWUgJiYgIXRoaXMudmFsdWUuaW5jbHVkZXMobnVsbCkpIHtcclxuICAgICAgbGV0IG51bWJlclZhbHVlID0gdGhpcy5nZXROdW1iZXJWYWx1ZSgpO1xyXG4gICAgICBpZiAodGhpcy5udW1iZXJWYWx1ZVswXSAhPT0gbnVtYmVyVmFsdWVbMF0gfHwgdGhpcy5udW1iZXJWYWx1ZVsxXSAhPT0gbnVtYmVyVmFsdWVbMV0pIHtcclxuICAgICAgICB0aGlzLm51bWJlclZhbHVlID0gbnVtYmVyVmFsdWU7XHJcbiAgICAgICAgdGhpcy5zZXREaXNwbGF5VmFsdWUodGhpcy5udW1iZXJWYWx1ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRlc3Ryb3lQb3J0YWwoKSB7XHJcbiAgICB0aGlzLnBvcnRhbD8ub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgc2hvd1BvcnRhbCgkZXZlbnQ6IEV2ZW50LCB0eXBlPzogJ3N0YXJ0JyB8ICdlbmQnKSB7XHJcbiAgICB0eXBlICYmICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMuYW5pbWF0aW5nKSByZXR1cm47XHJcbiAgICB0aGlzLmFjdGl2ZVR5cGUgPSB0eXBlIHx8ICdzdGFydCc7XHJcbiAgICB0aGlzLmFjdGl2ZVR5cGVDaGFuZ2UubmV4dCh0aGlzLmFjdGl2ZVR5cGUpO1xyXG4gICAgaWYgKHRoaXMuYWN0aXZlKSByZXR1cm47XHJcbiAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XHJcbiAgICBjb25zdCBjb25maWc6IE92ZXJsYXlDb25maWcgPSB7XHJcbiAgICAgIGJhY2tkcm9wQ2xhc3M6ICcnLFxyXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLnNldFBsYWNlbWVudCgpLFxyXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpXHJcbiAgICB9O1xyXG4gICAgdGhpcy5zZXRQb3NpdGlvbihjb25maWcpO1xyXG4gICAgdGhpcy5wb3J0YWwgPSB0aGlzLnBvcnRhbFNlcnZpY2UuYXR0YWNoKHtcclxuICAgICAgY29udGVudDogWERhdGVSYW5nZVBvcnRhbENvbXBvbmVudCxcclxuICAgICAgdmlld0NvbnRhaW5lclJlZjogdGhpcy52aWV3Q29udGFpbmVyUmVmLFxyXG4gICAgICBvdmVybGF5Q29uZmlnOiBjb25maWdcclxuICAgIH0pO1xyXG4gICAgdGhpcy5wb3J0YWwub3ZlcmxheVJlZlxyXG4gICAgICA/Lm91dHNpZGVQb2ludGVyRXZlbnRzKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX3VuU3ViamVjdCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XHJcbiAgICAgICAgY29uc3QgY2xpY2tUYXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgaWYgKGNsaWNrVGFyZ2V0ICE9PSB0aGlzLmlucHV0U3RhcnRDb20uaW5wdXRSZWYubmF0aXZlRWxlbWVudCAmJiBjbGlja1RhcmdldCAhPT0gdGhpcy5pbnB1dEVuZENvbS5pbnB1dFJlZi5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgICAgICB0aGlzLmNsb3NlU3ViamVjdC5uZXh0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuc2V0SW5zdGFuY2UoKTtcclxuICB9XHJcblxyXG4gIHNldFBvc2l0aW9uKGNvbmZpZzogT3ZlcmxheUNvbmZpZykge1xyXG4gICAgbGV0IHBvc2l0aW9uID0gY29uZmlnLnBvc2l0aW9uU3RyYXRlZ3kgYXMgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5O1xyXG4gICAgcG9zaXRpb24ucG9zaXRpb25DaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX3VuU3ViamVjdCkpLnN1YnNjcmliZSgocG9zOiBDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25DaGFuZ2UpID0+IHtcclxuICAgICAgY29uc3QgcGxhY2UgPSBYUG9ydGFsQ29ubmVjdGVkUG9zaXRpb24uZ2V0KHBvcy5jb25uZWN0aW9uUGFpcikgYXMgWENvcm5lcjtcclxuICAgICAgcGxhY2UgIT09IHRoaXMucGxhY2VtZW50ICYmIHRoaXMucG9zaXRpb25DaGFuZ2UubmV4dChwbGFjZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldEluc3RhbmNlKCkge1xyXG4gICAgbGV0IGNvbXBvbmVudFJlZiA9IHRoaXMucG9ydGFsPy5jb21wb25lbnRSZWY7XHJcbiAgICBpZiAoIWNvbXBvbmVudFJlZikgcmV0dXJuO1xyXG4gICAgT2JqZWN0LmFzc2lnbihjb21wb25lbnRSZWYuaW5zdGFuY2UsIHtcclxuICAgICAgdHlwZTogdGhpcy50eXBlLFxyXG4gICAgICB2YWx1ZTogdGhpcy5udW1iZXJWYWx1ZSxcclxuICAgICAgcGxhY2VtZW50OiB0aGlzLnBsYWNlbWVudCxcclxuICAgICAgdmFsdWVDaGFuZ2U6IHRoaXMudmFsdWVDaGFuZ2UsXHJcbiAgICAgIHBvc2l0aW9uQ2hhbmdlOiB0aGlzLnBvc2l0aW9uQ2hhbmdlLFxyXG4gICAgICBhY3RpdmVUeXBlOiB0aGlzLmFjdGl2ZVR5cGUsXHJcbiAgICAgIGV4dHJhRm9vdGVyOiB0aGlzLmV4dHJhRm9vdGVyLFxyXG4gICAgICBwcmVzZXQ6IHRoaXMucHJlc2V0LFxyXG4gICAgICBhY3RpdmVUeXBlQ2hhbmdlOiB0aGlzLmFjdGl2ZVR5cGVDaGFuZ2UsXHJcbiAgICAgIGRpc2FibGVkRGF0ZTogdGhpcy5kaXNhYmxlZERhdGUsXHJcbiAgICAgIGRpc2FibGVkVGltZTogdGhpcy5kaXNhYmxlZFRpbWUsXHJcbiAgICAgIGNsb3NlUG9ydGFsOiAoKSA9PiB0aGlzLmNsb3NlU3ViamVjdC5uZXh0KCksXHJcbiAgICAgIGRlc3Ryb3lQb3J0YWw6ICgpID0+IHRoaXMuZGVzdHJveVBvcnRhbCgpLFxyXG4gICAgICBub2RlRW1pdDogKGRhdGVzOiBEYXRlW10sIGNsb3NlID0gdHJ1ZSkgPT4gdGhpcy5vbk5vZGVDbGljayhkYXRlcywgY2xvc2UpLFxyXG4gICAgICBzdGFydE5vZGVFbWl0OiAobm9kZTogRGF0ZSwgY2xvc2UgPSBmYWxzZSwgaXNEYXRlUGlja2VyOiBib29sZWFuID0gdHJ1ZSkgPT4gdGhpcy5zdGFydE5vZGVDbGljayhub2RlLCBjbG9zZSwgaXNEYXRlUGlja2VyKSxcclxuICAgICAgZW5kTm9kZUVtaXQ6IChub2RlOiBEYXRlLCBjbG9zZSA9IGZhbHNlLCBpc0RhdGVQaWNrZXI6IGJvb2xlYW4gPSB0cnVlKSA9PiB0aGlzLmVuZE5vZGVDbGljayhub2RlLCBjbG9zZSwgaXNEYXRlUGlja2VyKSxcclxuICAgICAgYW5pbWF0aW5nOiAoaW5nOiBib29sZWFuKSA9PiAodGhpcy5hbmltYXRpbmcgPSBpbmcpXHJcbiAgICB9KTtcclxuICAgIGNvbXBvbmVudFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzdGFydE5vZGVDbGljayhub2RlPzogRGF0ZSwgY2xvc2UgPSBmYWxzZSwgaXNEYXRlUGlja2VyOiBib29sZWFuID0gdHJ1ZSkge1xyXG4gICAgdGhpcy5zdGFydERpc3BsYXkgPSAhbm9kZVxyXG4gICAgICA/ICcnXHJcbiAgICAgIDogdGhpcy50eXBlID09PSAnd2VlaydcclxuICAgICAgPyBYRGF0ZVllYXJXZWVrKG5vZGUpIVxyXG4gICAgICA6IHRoaXMudHlwZSA9PT0gJ3F1YXJ0ZXInXHJcbiAgICAgID8gWERhdGVZZWFyUXVhcnRlcihub2RlKSFcclxuICAgICAgOiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShub2RlLCB0aGlzLmZvcm1hdCkhO1xyXG4gICAgaWYgKCFjbG9zZSAmJiBpc0RhdGVQaWNrZXIpIHtcclxuICAgICAgdGhpcy5pbnB1dEVuZENvbS5pbnB1dEZvY3VzKCdhZnRlcicpO1xyXG4gICAgICB0aGlzLmFjdGl2ZVR5cGVDaGFuZ2UubmV4dCgnZW5kJyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBlbmROb2RlQ2xpY2sobm9kZT86IERhdGUsIGNsb3NlID0gZmFsc2UsIGlzRGF0ZVBpY2tlcjogYm9vbGVhbiA9IHRydWUpIHtcclxuICAgIHRoaXMuZW5kRGlzcGxheSA9ICFub2RlXHJcbiAgICAgID8gJydcclxuICAgICAgOiB0aGlzLnR5cGUgPT09ICd3ZWVrJ1xyXG4gICAgICA/IFhEYXRlWWVhcldlZWsobm9kZSkhXHJcbiAgICAgIDogdGhpcy50eXBlID09PSAncXVhcnRlcidcclxuICAgICAgPyBYRGF0ZVllYXJRdWFydGVyKG5vZGUpIVxyXG4gICAgICA6IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKG5vZGUsIHRoaXMuZm9ybWF0KSE7XHJcbiAgICBpZiAoIWNsb3NlICYmIGlzRGF0ZVBpY2tlcikge1xyXG4gICAgICB0aGlzLmlucHV0U3RhcnRDb20uaW5wdXRGb2N1cygnYWZ0ZXInKTtcclxuICAgICAgdGhpcy5hY3RpdmVUeXBlQ2hhbmdlLm5leHQoJ3N0YXJ0Jyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBvbk5vZGVDbGljayhkYXRlczogRGF0ZVtdLCBjbG9zZSA9IHRydWUpIHtcclxuICAgIHRoaXMuaXNJbnB1dCA9IGZhbHNlO1xyXG4gICAgdGhpcy5udW1iZXJWYWx1ZSA9IGRhdGVzLm1hcCgoeCkgPT4geC5nZXRUaW1lKCkpO1xyXG4gICAgdGhpcy52YWx1ZSA9IHRoaXMuZ2V0VmFsdWUoKTtcclxuICAgIHRoaXMuc2V0RGlzcGxheVZhbHVlKHRoaXMubnVtYmVyVmFsdWUpO1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbFZhbGlkYXRvcigpO1xyXG4gICAgaWYgKGNsb3NlKSB7XHJcbiAgICAgIHRoaXMuY2xvc2VTdWJqZWN0Lm5leHQoKTtcclxuICAgIH1cclxuICAgIHRoaXMubW9kZWxDaGFuZ2UoKTtcclxuICB9XHJcblxyXG4gIG9uSW5wdXQoKSB7XHJcbiAgICB0aGlzLmlzSW5wdXQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgb25Gb2N1cyh0eXBlOiAnc3RhcnQnIHwgJ2VuZCcpIHtcclxuICAgIHRoaXMuYWN0aXZlVHlwZSA9IHR5cGU7XHJcbiAgICB0aGlzLmFjdGl2ZUNoYW5nZS5uZXh0KHRoaXMuYWN0aXZlVHlwZSk7XHJcbiAgfVxyXG5cclxuICBzZXREaXNwbGF5VmFsdWUoZGF0ZU51bWJlcjogKG51bWJlciB8IG51bGwpW10pIHtcclxuICAgIGlmICghZGF0ZU51bWJlcikgcmV0dXJuO1xyXG4gICAgaWYgKCFYSXNOdWxsKGRhdGVOdW1iZXJbMF0pKSB7XHJcbiAgICAgIGlmICh0aGlzLnR5cGUgPT09ICd3ZWVrJykge1xyXG4gICAgICAgIHRoaXMuc3RhcnREaXNwbGF5ID0gWERhdGVZZWFyV2VlayhkYXRlTnVtYmVyWzBdISkhO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ3F1YXJ0ZXInKSB7XHJcbiAgICAgICAgdGhpcy5zdGFydERpc3BsYXkgPSBYRGF0ZVllYXJRdWFydGVyKGRhdGVOdW1iZXJbMF0hKSE7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zdGFydERpc3BsYXkgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShkYXRlTnVtYmVyWzBdLCB0aGlzLmZvcm1hdCkgYXMgc3RyaW5nO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoIVhJc051bGwoZGF0ZU51bWJlclsxXSkpIHtcclxuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ3dlZWsnKSB7XHJcbiAgICAgICAgdGhpcy5lbmREaXNwbGF5ID0gWERhdGVZZWFyV2VlayhkYXRlTnVtYmVyWzFdISkhO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ3F1YXJ0ZXInKSB7XHJcbiAgICAgICAgdGhpcy5lbmREaXNwbGF5ID0gWERhdGVZZWFyUXVhcnRlcihkYXRlTnVtYmVyWzFdISkhO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZW5kRGlzcGxheSA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGVOdW1iZXJbMV0sIHRoaXMuZm9ybWF0KSBhcyBzdHJpbmc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFBsYWNlbWVudCgpIHtcclxuICAgIHJldHVybiB0aGlzLnBvcnRhbFNlcnZpY2Uuc2V0UGxhY2VtZW50KHtcclxuICAgICAgZWxlbWVudFJlZjogdGhpcy5pbnB1dEdyb3VwLmVsZW1lbnRSZWYsXHJcbiAgICAgIHBsYWNlbWVudDogW3RoaXMucGxhY2VtZW50IGFzIFhDb3JuZXIsICdib3R0b20tc3RhcnQnLCAnYm90dG9tLWVuZCcsICd0b3Atc3RhcnQnLCAndG9wLWVuZCddLFxyXG4gICAgICB0cmFuc2Zvcm1PcmlnaW5PbjogJ3gtZGF0ZS1yYW5nZS1wb3J0YWwnXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldFBvcnRhbCgpIHtcclxuICAgIHRoaXMucG9ydGFsQXR0YWNoZWQoKSAmJiB0aGlzLnBvcnRhbD8ub3ZlcmxheVJlZj8udXBkYXRlUG9zaXRpb25TdHJhdGVneSh0aGlzLnNldFBsYWNlbWVudCgpKTtcclxuICB9XHJcblxyXG4gIHNldENsYXNzTWFwKCkge1xyXG4gICAgWENsZWFyQ2xhc3ModGhpcy5jbGFzc01hcCwgdGhpcy5sYWJlbE1hcCk7XHJcbiAgICB0aGlzLmNsYXNzTWFwW2Ake1hEYXRlUmFuZ2VQcmVmaXh9LSR7dGhpcy5zaXplfWBdID0gdGhpcy5zaXplID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgdGhpcy5sYWJlbE1hcFtgeC10ZXh0LWFsaWduLSR7dGhpcy5sYWJlbEFsaWdufWBdID0gdGhpcy5sYWJlbEFsaWduID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZm9ybUNvbnRyb2xDaGFuZ2VzKCkge1xyXG4gICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgI2RhdGVSYW5nZVxyXG4gIGNsYXNzPVwieC1kYXRlLXJhbmdlXCJcclxuICBbbmdDbGFzc109XCJjbGFzc01hcFwiXHJcbiAgW2NsYXNzLngtZmxleF09XCJqdXN0aWZ5IHx8IGFsaWduIHx8IGRpcmVjdGlvblwiXHJcbiAgW2NsYXNzLngtY2hlY2tlZF09XCJ2YWx1ZVwiXHJcbiAgW2NsYXNzLngtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gIFtjbGFzcy54LXJlcXVpcmVkXT1cInJlcXVpcmVkSXNFbXB0eVwiXHJcbiAgW2NsYXNzLngtaW52YWxpZF09XCJpbnZhbGlkXCJcclxuICBbY2xhc3MueC1kYXRlLXJhbmdlLWJvcmRlcmVkXT1cImJvcmRlcmVkXCJcclxuICBbY2xhc3MueC1kYXRlLXJhbmdlLWFjdGl2ZV09XCJhY3RpdmVcIlxyXG4gIFtjbGFzcy54LWRhdGUtcmFuZ2UtYWN0aXZlLXN0YXJ0XT1cImFjdGl2ZVR5cGUgPT09ICdzdGFydCdcIlxyXG4gIFtjbGFzcy54LWRhdGUtcmFuZ2UtYWN0aXZlLWVuZF09XCJhY3RpdmVUeXBlID09PSAnZW5kJ1wiXHJcbj5cclxuICA8bGFiZWwgKm5nSWY9XCJsYWJlbFwiIFtjbGFzcy54LWRhdGUtcmFuZ2UtbGFiZWwtcmVxdWlyZWRdPVwicmVxdWlyZWRcIiBbc3R5bGUud2lkdGhdPVwibGFiZWxXaWR0aFwiIFtuZ0NsYXNzXT1cImxhYmVsTWFwXCI+e3sgbGFiZWwgfX08L2xhYmVsPlxyXG4gIDxkaXYgY2xhc3M9XCJ4LWRhdGUtcmFuZ2Utcm93XCI+XHJcbiAgICA8eC1pbnB1dC1ncm91cCAjaW5wdXRHcm91cCBjbGFzcz1cIngtZGF0ZS1yYW5nZS1ncm91cFwiIChtb3VzZWVudGVyKT1cIm1lbnRlcigpXCIgKG1vdXNlbGVhdmUpPVwibWxlYXZlKClcIiAoY2xpY2spPVwic2hvd1BvcnRhbCgkZXZlbnQpXCI+XHJcbiAgICAgIDx4LWlucHV0XHJcbiAgICAgICAgI2lucHV0U3RhcnRDb21cclxuICAgICAgICBjbGFzcz1cIngtZGF0YS1yYW5nZS1pbnB1dCB4LWRhdGEtcmFuZ2UtaW5wdXQtc3RhcnRcIlxyXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICBib3JkZXJlZD1cImZhbHNlXCJcclxuICAgICAgICBbc2l6ZV09XCJzaXplXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJnZXRTdGFydFBsYWNlaG9sZGVyXCJcclxuICAgICAgICAoeEZvY3VzKT1cIm9uRm9jdXMoJ3N0YXJ0JylcIlxyXG4gICAgICAgICh4Q2xpY2spPVwic2hvd1BvcnRhbCgkZXZlbnQsICdzdGFydCcpXCJcclxuICAgICAgICBbKG5nTW9kZWwpXT1cInN0YXJ0RGlzcGxheVwiXHJcbiAgICAgICAgaWNvbj1cImZ0by1hcnJvdy1yaWdodFwiXHJcbiAgICAgID48L3gtaW5wdXQ+XHJcbiAgICAgIDx4LWlucHV0XHJcbiAgICAgICAgI2lucHV0RW5kQ29tXHJcbiAgICAgICAgY2xhc3M9XCJ4LWRhdGEtcmFuZ2UtaW5wdXQgeC1kYXRhLXJhbmdlLWlucHV0LWVuZFwiXHJcbiAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgIGJvcmRlcmVkPVwiZmFsc2VcIlxyXG4gICAgICAgIFtzaXplXT1cInNpemVcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cImdldEVuZFBsYWNlaG9sZGVyXCJcclxuICAgICAgICAoeEZvY3VzKT1cIm9uRm9jdXMoJ2VuZCcpXCJcclxuICAgICAgICAoeENsaWNrKT1cInNob3dQb3J0YWwoJGV2ZW50LCAnZW5kJylcIlxyXG4gICAgICAgIFsobmdNb2RlbCldPVwiZW5kRGlzcGxheVwiXHJcbiAgICAgICAgW2ljb25dPVwiaWNvblwiXHJcbiAgICAgICAgKGNsZWFyRW1pdCk9XCJjbGVhckVtaXQoKVwiXHJcbiAgICAgICAgW2NsZWFyYWJsZV09XCJzaG93Q2xlYXJhYmxlXCJcclxuICAgICAgPjwveC1pbnB1dD5cclxuICAgICAgPGRpdiAqbmdJZj1cImFjdGl2ZVwiIGNsYXNzPVwieC1kYXRlLXJhbmdlLWFjdGl2ZS1iYXJcIj48L2Rpdj5cclxuICAgIDwveC1pbnB1dC1ncm91cD5cclxuICAgIDxzcGFuIGNsYXNzPVwieC1kYXRlLXJhbmdlLWVycm9yLW1lc3NhZ2VcIiAqbmdJZj1cImludmFsaWRcIj57eyBpbnZhbGlkTWVzc2FnZSB9fTwvc3Bhbj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXF1aXJlZElzRW1wdHkgfHwgaW52YWxpZFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwieC1ib3JkZXItZXJyb3IgeC10b3AtbGVmdFwiPjwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwieC1ib3JkZXItZXJyb3IgeC10b3AtcmlnaHRcIj48L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIngtYm9yZGVyLWVycm9yIHgtYm90dG9tLWxlZnRcIj48L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIngtYm9yZGVyLWVycm9yIHgtYm90dG9tLXJpZ2h0XCI+PC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
476
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS9kYXRlLXBpY2tlci9kYXRlLXJhbmdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL2RhdGUtcGlja2VyL2RhdGUtcmFuZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQyx3QkFBd0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pHLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFDTCxTQUFTLEVBRVQsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQU12QixTQUFTLEVBRVQsTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRyxPQUFPLEVBQ0wsUUFBUSxFQUNSLE9BQU8sRUFDUCxTQUFTLEVBQ1QsU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEVBRVQsT0FBTyxFQUNQLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsUUFBUSxFQUNULE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7OztBQUcxRSxNQVFhLG1CQUFvQixTQUFRLGtCQUFrQjtJQVd6RCxJQUFJLG1CQUFtQjtRQUNyQixJQUFJLElBQUksQ0FBQyxXQUFXLElB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QUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3BGLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztrSUEvY1UsbUJBQW1CO3NIQUFuQixtQkFBbUIsdUNBRm5CLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsUUFBUSxDQUFDLCtmQzdDNUQsNnpFQXdEQTs7U0RUYSxtQkFBbUI7NEZBQW5CLG1CQUFtQjtrQkFSL0IsU0FBUzsrQkFDRSxHQUFHLGdCQUFnQixFQUFFLGlCQUdoQixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsY0FBYyxxQkFBcUIsRUFBRSxRQUFRLENBQUM7MFRBR2hCLFNBQVM7c0JBQWxELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDRyxVQUFVO3NCQUFwRCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ0ssYUFBYTtzQkFBMUQsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNBLFdBQVc7c0JBQXRELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFhQb3J0YWxTZXJ2aWNlLCBYUG9ydGFsT3ZlcmxheVJlZiwgWFBvcnRhbENvbm5lY3RlZFBvc2l0aW9uIH0gZnJvbSAnQG5nLW5lc3QvdWkvcG9ydGFsJztcclxuaW1wb3J0IHsgU3ViamVjdCwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBSZW5kZXJlcjIsXHJcbiAgRWxlbWVudFJlZixcclxuICBPbkNoYW5nZXMsXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxuICBWaWV3Q2hpbGQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBpbmplY3RcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWERhdGVQaWNrZXJNb2RlbFR5cGUsIFhEYXRlUmFuZ2VQcmVmaXgsIFhEYXRlUmFuZ2VQcm9wZXJ0eSB9IGZyb20gJy4vZGF0ZS1waWNrZXIucHJvcGVydHknO1xyXG5pbXBvcnQge1xyXG4gIFhJc0VtcHR5LFxyXG4gIFhJc0RhdGUsXHJcbiAgWElzTnVtYmVyLFxyXG4gIFhJc0NoYW5nZSxcclxuICBYQ29ybmVyLFxyXG4gIFhDbGVhckNsYXNzLFxyXG4gIFhJc1N0cmluZyxcclxuICBYQ29uZmlnU2VydmljZSxcclxuICBYSXNOdWxsLFxyXG4gIFhEYXRlWWVhcldlZWssXHJcbiAgWERhdGVZZWFyUXVhcnRlcixcclxuICBYUGFyZW50c1xyXG59IGZyb20gJ0BuZy1uZXN0L3VpL2NvcmUnO1xyXG5pbXBvcnQgeyBYSW5wdXRDb21wb25lbnQsIFhJbnB1dEdyb3VwQ29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvaW5wdXQnO1xyXG5pbXBvcnQgeyBET0NVTUVOVCwgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3ksIENvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbkNoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcclxuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgWFZhbHVlQWNjZXNzb3IgfSBmcm9tICdAbmctbmVzdC91aS9iYXNlLWZvcm0nO1xyXG5pbXBvcnQgeyBYRGF0ZVJhbmdlUG9ydGFsQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRlLXJhbmdlLXBvcnRhbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBYSTE4bkRhdGVQaWNrZXIsIFhJMThuU2VydmljZSB9IGZyb20gJ0BuZy1uZXN0L3VpL2kxOG4nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IGAke1hEYXRlUmFuZ2VQcmVmaXh9YCxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1yYW5nZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1yYW5nZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbWFZhbHVlQWNjZXNzb3IoWERhdGVSYW5nZUNvbXBvbmVudCksIERhdGVQaXBlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgWERhdGVSYW5nZUNvbXBvbmVudCBleHRlbmRzIFhEYXRlUmFuZ2VQcm9wZXJ0eSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBAVmlld0NoaWxkKCdkYXRlUmFuZ2UnLCB7IHN0YXRpYzogdHJ1ZSB9KSBkYXRlUmFuZ2UhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdpbnB1dEdyb3VwJywgeyBzdGF0aWM6IHRydWUgfSkgaW5wdXRHcm91cCE6IFhJbnB1dEdyb3VwQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0U3RhcnRDb20nLCB7IHN0YXRpYzogdHJ1ZSB9KSBpbnB1dFN0YXJ0Q29tITogWElucHV0Q29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0RW5kQ29tJywgeyBzdGF0aWM6IHRydWUgfSkgaW5wdXRFbmRDb20hOiBYSW5wdXRDb21wb25lbnQ7XHJcblxyXG4gIG1vZGVsVHlwZTogWERhdGVQaWNrZXJNb2RlbFR5cGUgPSAnZGF0ZSc7XHJcbiAgbnVtYmVyVmFsdWUhOiAobnVtYmVyIHwgbnVsbClbXTtcclxuICBpc0lucHV0ID0gZmFsc2U7XHJcbiAgc2hvd0NsZWFyYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBnZXQgZ2V0U3RhcnRQbGFjZWhvbGRlcigpIHtcclxuICAgIGlmICh0aGlzLnBsYWNlaG9sZGVyICYmIHRoaXMucGxhY2Vob2xkZXIubGVuZ3RoID4gMCkgcmV0dXJuIHRoaXMucGxhY2Vob2xkZXJbMF07XHJcbiAgICBpZiAodGhpcy50eXBlID09PSAnbW9udGgnKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsZS5zdGFydE1vbnRoO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdxdWFydGVyJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5sb2NhbGUuc3RhcnRRdWFydGVyO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICd5ZWFyJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5sb2NhbGUuc3RhcnRZZWFyO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICd3ZWVrJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5sb2NhbGUuc3RhcnRXZWVrO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9jYWxlLnN0YXJ0RGF0ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBnZXRFbmRQbGFjZWhvbGRlcigpIHtcclxuICAgIGlmICh0aGlzLnBsYWNlaG9sZGVyICYmIHRoaXMucGxhY2Vob2xkZXIubGVuZ3RoID4gMSkgcmV0dXJuIHRoaXMucGxhY2Vob2xkZXJbMV07XHJcbiAgICBpZiAodGhpcy50eXBlID09PSAnbW9udGgnKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsZS5lbmRNb250aDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSAncXVhcnRlcicpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9jYWxlLmVuZFF1YXJ0ZXI7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ3llYXInKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsZS5lbmRZZWFyO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICd3ZWVrJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5sb2NhbGUuZW5kV2VlaztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsZS5lbmREYXRlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgZ2V0IHJlcXVpcmVkSXNFbXB0eSgpIHtcclxuICAgIHJldHVybiB0aGlzLnZhbGlkYXRvciAmJiB0aGlzLnJlcXVpcmVkICYmIFhJc0VtcHR5KHRoaXMudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XHJcbiAgICBpZiAoWElzRW1wdHkodmFsdWUpKSB7XHJcbiAgICAgIHZhbHVlID0gW107XHJcbiAgICAgIHRoaXMubnVtYmVyVmFsdWUgPSBbXTtcclxuICAgIH1cclxuICAgIGlmICh2YWx1ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGlmIChYSXNEYXRlKHZhbHVlWzBdKSkge1xyXG4gICAgICAgIHRoaXMubW9kZWxUeXBlID0gJ2RhdGUnO1xyXG4gICAgICAgIHRoaXMubnVtYmVyVmFsdWUgPSB2YWx1ZS5tYXAoKHg6IERhdGUpID0+IHguZ2V0VGltZSgpKTtcclxuICAgICAgfSBlbHNlIGlmIChYSXNOdW1iZXIodmFsdWVbMF0pKSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbFR5cGUgPSAnbnVtYmVyJztcclxuICAgICAgICB0aGlzLm51bWJlclZhbHVlID0gdmFsdWU7XHJcbiAgICAgIH0gZWxzZSBpZiAoWElzU3RyaW5nKHZhbHVlWzBdKSkge1xyXG4gICAgICAgIHRoaXMubW9kZWxUeXBlID0gJ3N0cmluZyc7XHJcbiAgICAgICAgY29uc3QgdmFsdWVUaW1lID0gdmFsdWUubWFwKCh4OiBzdHJpbmcpID0+IG5ldyBEYXRlKHgpLmdldFRpbWUoKSk7XHJcbiAgICAgICAgdGhpcy5udW1iZXJWYWx1ZSA9ICFpc05hTih2YWx1ZVRpbWVbMF0pID8gdmFsdWVUaW1lIDogW107XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuc2V0RGlzcGxheVZhbHVlKHRoaXMubnVtYmVyVmFsdWUpO1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5uZXh0KHRoaXMubnVtYmVyVmFsdWUpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgZW50ZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpbnB1dENsZWFyYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGFuaW1hdGluZyA9IGZhbHNlO1xyXG4gIGRpc3BsYXlWYWx1ZTogc3RyaW5nW10gPSBbXTtcclxuICBwb3J0YWwhOiBYUG9ydGFsT3ZlcmxheVJlZjxYRGF0ZVJhbmdlUG9ydGFsQ29tcG9uZW50PjtcclxuICBpY29uOiBzdHJpbmcgPSAnZnRvLWNhbGVuZGFyJztcclxuICBib3ghOiBET01SZWN0O1xyXG4gIHByb3RhbEhlaWdodCE6IG51bWJlcjtcclxuICBtYXhOb2RlczogbnVtYmVyID0gNjtcclxuICBwcm90YWxUb2JvdHRvbTogYm9vbGVhbiA9IHRydWU7XHJcbiAgdmFsdWVDaGFuZ2U6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgZGF0YUNoYW5nZTogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3QoKTtcclxuICBwb3NpdGlvbkNoYW5nZTogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3QoKTtcclxuICBjbG9zZVN1YmplY3Q6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xyXG4gIGFjdGl2ZVR5cGVDaGFuZ2UgPSBuZXcgU3ViamVjdDwnc3RhcnQnIHwgJ2VuZCc+KCk7XHJcbiAgc3RhcnREaXNwbGF5OiBzdHJpbmcgfCBudW1iZXIgPSAnJztcclxuICBlbmREaXNwbGF5OiBzdHJpbmcgfCBudW1iZXIgPSAnJztcclxuICBhY3RpdmVUeXBlPzogJ3N0YXJ0JyB8ICdlbmQnO1xyXG4gIGZsZXhDbGFzczogc3RyaW5nW10gPSBbXTtcclxuICBsb2NhbGU6IFhJMThuRGF0ZVBpY2tlciA9IHt9O1xyXG4gIHByaXZhdGUgX3VuU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBwdWJsaWMgY29uZmlnU2VydmljZTogWENvbmZpZ1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgcG9ydGFsU2VydmljZTogWFBvcnRhbFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICBwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSxcclxuICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcclxuICAgIHByaXZhdGUgaTE4bjogWEkxOG5TZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnNldEZsZXgodGhpcy5kYXRlUmFuZ2UubmF0aXZlRWxlbWVudCwgdGhpcy5yZW5kZXJlciwgdGhpcy5qdXN0aWZ5LCB0aGlzLmFsaWduLCB0aGlzLmRpcmVjdGlvbik7XHJcbiAgICB0aGlzLnNldEhvc3RUeXBlQ2xhc3MoKTtcclxuICAgIHRoaXMuc2V0Rm9ybWF0KCk7XHJcbiAgICB0aGlzLnNldENsYXNzTWFwKCk7XHJcbiAgICB0aGlzLnNldFN1YmplY3QoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuc2V0UG9ydGFsKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IHR5cGUsIGp1c3RpZnksIGFsaWduLCBkaXJlY3Rpb24sIHNpemUsIGxhYmVsQWxpZ24gfSA9IGNoYW5nZXM7XHJcbiAgICBYSXNDaGFuZ2Uoc2l6ZSwgbGFiZWxBbGlnbikgJiYgdGhpcy5zZXRDbGFzc01hcCgpO1xyXG4gICAgWElzQ2hhbmdlKGp1c3RpZnksIGFsaWduLCBkaXJlY3Rpb24pICYmIHRoaXMuc2V0RmxleENsYXNzKCk7XHJcbiAgICBpZiAoWElzQ2hhbmdlKHR5cGUpKSB7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybWF0KCk7XHJcbiAgICAgIHRoaXMuc2V0RGlzcGxheVZhbHVlKHRoaXMubnVtYmVyVmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl91blN1YmplY3QubmV4dCgpO1xyXG4gICAgdGhpcy5fdW5TdWJqZWN0LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBzZXRTdWJqZWN0KCkge1xyXG4gICAgdGhpcy5jbG9zZVN1YmplY3QucGlwZSh0YWtlVW50aWwodGhpcy5fdW5TdWJqZWN0KSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5jbG9zZVBvcnRhbCgpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmkxOG4ubG9jYWxlQ2hhbmdlXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgoeCkgPT4geC5kYXRlUGlja2VyIGFzIFhJMThuRGF0ZVBpY2tlciksXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX3VuU3ViamVjdClcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2NhbGUgPSB4O1xyXG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldEZsZXhDbGFzcygpIHtcclxuICAgIGlmICh0aGlzLmZsZXhDbGFzcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvciAobGV0IGNscyBvZiB0aGlzLmZsZXhDbGFzcykge1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5kYXRlUmFuZ2UubmF0aXZlRWxlbWVudCwgY2xzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5mbGV4Q2xhc3MgPSB0aGlzLnNldEZsZXgodGhpcy5kYXRlUmFuZ2UubmF0aXZlRWxlbWVudCwgdGhpcy5yZW5kZXJlciwgdGhpcy5qdXN0aWZ5LCB0aGlzLmFsaWduLCB0aGlzLmRpcmVjdGlvbik7XHJcbiAgfVxyXG5cclxuICBzZXRIb3N0VHlwZUNsYXNzKCkge1xyXG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgYHgtZGF0ZS1yYW5nZS0ke3RoaXMudHlwZX1gKTtcclxuICB9XHJcblxyXG4gIHNldFBhcmFudFNjcm9sbCgpIHtcclxuICAgIGlmICghdGhpcy5kb2N1bWVudCkgcmV0dXJuO1xyXG4gICAgY29uc3QgcGFyZW50cyA9IFhQYXJlbnRzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcclxuICAgIGxldCBmaXJzdFNjcm9sbDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcclxuICAgIGZvciAobGV0IGl0ZW0gb2YgcGFyZW50cykge1xyXG4gICAgICBpZiAoaXRlbS5jbGllbnRIZWlnaHQgPCBpdGVtLnNjcm9sbEhlaWdodCkge1xyXG4gICAgICAgIGZpcnN0U2Nyb2xsID0gaXRlbTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGZpcnN0U2Nyb2xsICYmIGZpcnN0U2Nyb2xsLnRhZ05hbWUgIT09ICdCT0RZJykge1xyXG4gICAgICBmcm9tRXZlbnQoZmlyc3RTY3JvbGwsICdzY3JvbGwnKVxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMucG9ydGFsQXR0YWNoZWQoKSEpLFxyXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX3VuU3ViamVjdClcclxuICAgICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBvcnRhbD8ub3ZlcmxheVJlZj8udXBkYXRlUG9zaXRpb24oKTtcclxuICAgICAgICAgIGNvbnN0IGVyYWN0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgICAgICBjb25zdCBmcmVjdCA9IGZpcnN0U2Nyb2xsIS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgICAgIGlmIChlcmFjdC50b3AgKyBlcmFjdC5oZWlnaHQgLSBmcmVjdC50b3AgPCAwIHx8IGVyYWN0LmJvdHRvbSA+IGZyZWN0LmJvdHRvbSkge1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlU3ViamVjdC5uZXh0KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRGb3JtYXQoKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtYXQgIT09ICd5eXl5LU1NLWRkJykgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgIHRoaXMuZm9ybWF0ID0gJ3l5eXktTU0tZGQnO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICd5ZWFyJykge1xyXG4gICAgICB0aGlzLmZvcm1hdCA9ICd5eXl5JztcclxuICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSAnbW9udGgnKSB7XHJcbiAgICAgIHRoaXMuZm9ybWF0ID0gJ3l5eXktTU0nO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdkYXRlLXRpbWUnKSB7XHJcbiAgICAgIHRoaXMuZm9ybWF0ID0gJ3l5eXktTU0tZGQgSEg6bW06c3MnO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdkYXRlLWhvdXInKSB7XHJcbiAgICAgIHRoaXMuZm9ybWF0ID0gJ3l5eXktTU0tZGQgSEgnO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdkYXRlLW1pbnV0ZScpIHtcclxuICAgICAgdGhpcy5mb3JtYXQgPSAneXl5eS1NTS1kZCBISDptbSc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtZW50ZXIoKSB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCAhdGhpcy5jbGVhcmFibGUpIHJldHVybjtcclxuICAgIHRoaXMuZW50ZXIgPSB0cnVlO1xyXG4gICAgaWYgKCFYSXNFbXB0eSh0aGlzLm51bWJlclZhbHVlKSkge1xyXG4gICAgICB0aGlzLmljb24gPSAnJztcclxuICAgICAgdGhpcy5zaG93Q2xlYXJhYmxlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbWxlYXZlKCkge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgIXRoaXMuY2xlYXJhYmxlKSByZXR1cm47XHJcbiAgICB0aGlzLmVudGVyID0gZmFsc2U7XHJcbiAgICBpZiAodGhpcy5jbGVhcmFibGUpIHtcclxuICAgICAgdGhpcy5pY29uID0gJ2Z0by1jYWxlbmRhcic7XHJcbiAgICAgIHRoaXMuc2hvd0NsZWFyYWJsZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbGVhckVtaXQoKSB7XHJcbiAgICB0aGlzLnZhbHVlID0gW107XHJcbiAgICB0aGlzLm51bWJlclZhbHVlID0gW107XHJcbiAgICB0aGlzLnN0YXJ0RGlzcGxheSA9ICcnO1xyXG4gICAgdGhpcy5lbmREaXNwbGF5ID0gJyc7XHJcbiAgICB0aGlzLm1sZWF2ZSgpO1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5uZXh0KHRoaXMubnVtYmVyVmFsdWUpO1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbFZhbGlkYXRvcigpO1xyXG4gICAgdGhpcy5tb2RlbENoYW5nZSgpO1xyXG4gICAgdGhpcy5pbnB1dFN0YXJ0Q29tLmlucHV0Rm9jdXMoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG9uSWNvbkNsaWNrKGV2ZW50OiBFdmVudCkge1xyXG4gICAgaWYgKHRoaXMuaWNvbiA9PT0gJ2Z0by14Jykge1xyXG4gICAgICB0aGlzLmNsZWFyRW1pdCgpO1xyXG4gICAgfVxyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBtb2RlbENoYW5nZSgpIHtcclxuICAgIGlmICh0aGlzLm9uQ2hhbmdlKSB7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5nZXRWYWx1ZSgpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFZhbHVlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMubW9kZWxUeXBlID09PSAnZGF0ZSdcclxuICAgICAgPyB0aGlzLm51bWJlclZhbHVlLm1hcCgoeCkgPT4gbmV3IERhdGUoeCEpKVxyXG4gICAgICA6IHRoaXMubW9kZWxUeXBlID09PSAnc3RyaW5nJ1xyXG4gICAgICA/IHRoaXMubnVtYmVyVmFsdWUubWFwKCh4KSA9PiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh4LCB0aGlzLmZvcm1hdCkpXHJcbiAgICAgIDogdGhpcy5udW1iZXJWYWx1ZTtcclxuICB9XHJcblxyXG4gIGdldE51bWJlclZhbHVlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMubW9kZWxUeXBlID09PSAnZGF0ZSdcclxuICAgICAgPyB0aGlzLnZhbHVlLm1hcCgoeDogRGF0ZSkgPT4geC5nZXRUaW1lKCkpXHJcbiAgICAgIDogdGhpcy5tb2RlbFR5cGUgPT09ICdzdHJpbmcnXHJcbiAgICAgID8gdGhpcy52YWx1ZS5tYXAoKHg6IHN0cmluZykgPT4gbmV3IERhdGUoeCkuZ2V0VGltZSgpKVxyXG4gICAgICA6IHRoaXMudmFsdWU7XHJcbiAgfVxyXG5cclxuICBwb3J0YWxBdHRhY2hlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLnBvcnRhbD8ub3ZlcmxheVJlZj8uaGFzQXR0YWNoZWQoKTtcclxuICB9XHJcblxyXG4gIGNsb3NlUG9ydGFsKCkge1xyXG4gICAgaWYgKHRoaXMucG9ydGFsQXR0YWNoZWQoKSkge1xyXG4gICAgICB0aGlzLnBvcnRhbD8ub3ZlcmxheVJlZj8uZGV0YWNoKCk7XHJcbiAgICAgIHRoaXMuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2xvc2VSZWR1Y3Rpb24oKTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGNsb3NlUmVkdWN0aW9uKCkge1xyXG4gICAgaWYgKCF0aGlzLm51bWJlclZhbHVlIHx8IHRoaXMubnVtYmVyVmFsdWUubGVuZ3RoID09PSAwIHx8IHRoaXMubnVtYmVyVmFsdWUuaW5jbHVkZXMobnVsbCkpIHtcclxuICAgICAgaWYgKCF0aGlzLnZhbHVlIHx8IHRoaXMudmFsdWUubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy5zdGFydERpc3BsYXkgPSAnJztcclxuICAgICAgICB0aGlzLmVuZERpc3BsYXkgPSAnJztcclxuICAgICAgICB0aGlzLm51bWJlclZhbHVlID0gW107XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5udW1iZXJWYWx1ZSA9IHRoaXMuZ2V0TnVtYmVyVmFsdWUoKTtcclxuICAgICAgICB0aGlzLnNldERpc3BsYXlWYWx1ZSh0aGlzLm51bWJlclZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLm51bWJlclZhbHVlLmluY2x1ZGVzKG51bGwpICYmIHRoaXMudmFsdWUgJiYgIXRoaXMudmFsdWUuaW5jbHVkZXMobnVsbCkpIHtcclxuICAgICAgbGV0IG51bWJlclZhbHVlID0gdGhpcy5nZXROdW1iZXJWYWx1ZSgpO1xyXG4gICAgICBpZiAodGhpcy5udW1iZXJWYWx1ZVswXSAhPT0gbnVtYmVyVmFsdWVbMF0gfHwgdGhpcy5udW1iZXJWYWx1ZVsxXSAhPT0gbnVtYmVyVmFsdWVbMV0pIHtcclxuICAgICAgICB0aGlzLm51bWJlclZhbHVlID0gbnVtYmVyVmFsdWU7XHJcbiAgICAgICAgdGhpcy5zZXREaXNwbGF5VmFsdWUodGhpcy5udW1iZXJWYWx1ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRlc3Ryb3lQb3J0YWwoKSB7XHJcbiAgICB0aGlzLnBvcnRhbD8ub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgc2hvd1BvcnRhbCgkZXZlbnQ6IEV2ZW50LCB0eXBlPzogJ3N0YXJ0JyB8ICdlbmQnKSB7XHJcbiAgICB0eXBlICYmICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMuYW5pbWF0aW5nKSByZXR1cm47XHJcbiAgICB0aGlzLmFjdGl2ZVR5cGUgPSB0eXBlIHx8ICdzdGFydCc7XHJcbiAgICB0aGlzLmFjdGl2ZVR5cGVDaGFuZ2UubmV4dCh0aGlzLmFjdGl2ZVR5cGUpO1xyXG4gICAgaWYgKHRoaXMuYWN0aXZlKSByZXR1cm47XHJcbiAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XHJcbiAgICBjb25zdCBjb25maWc6IE92ZXJsYXlDb25maWcgPSB7XHJcbiAgICAgIGJhY2tkcm9wQ2xhc3M6ICcnLFxyXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLnNldFBsYWNlbWVudCgpLFxyXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpXHJcbiAgICB9O1xyXG4gICAgdGhpcy5zZXRQb3NpdGlvbihjb25maWcpO1xyXG4gICAgdGhpcy5wb3J0YWwgPSB0aGlzLnBvcnRhbFNlcnZpY2UuYXR0YWNoKHtcclxuICAgICAgY29udGVudDogWERhdGVSYW5nZVBvcnRhbENvbXBvbmVudCxcclxuICAgICAgdmlld0NvbnRhaW5lclJlZjogdGhpcy52aWV3Q29udGFpbmVyUmVmLFxyXG4gICAgICBvdmVybGF5Q29uZmlnOiBjb25maWdcclxuICAgIH0pO1xyXG4gICAgdGhpcy5wb3J0YWwub3ZlcmxheVJlZlxyXG4gICAgICA/Lm91dHNpZGVQb2ludGVyRXZlbnRzKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX3VuU3ViamVjdCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XHJcbiAgICAgICAgY29uc3QgY2xpY2tUYXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgaWYgKGNsaWNrVGFyZ2V0ICE9PSB0aGlzLmlucHV0U3RhcnRDb20uaW5wdXRSZWYubmF0aXZlRWxlbWVudCAmJiBjbGlja1RhcmdldCAhPT0gdGhpcy5pbnB1dEVuZENvbS5pbnB1dFJlZi5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgICAgICB0aGlzLmNsb3NlU3ViamVjdC5uZXh0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuc2V0SW5zdGFuY2UoKTtcclxuICB9XHJcblxyXG4gIHNldFBvc2l0aW9uKGNvbmZpZzogT3ZlcmxheUNvbmZpZykge1xyXG4gICAgbGV0IHBvc2l0aW9uID0gY29uZmlnLnBvc2l0aW9uU3RyYXRlZ3kgYXMgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5O1xyXG4gICAgcG9zaXRpb24ucG9zaXRpb25DaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX3VuU3ViamVjdCkpLnN1YnNjcmliZSgocG9zOiBDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25DaGFuZ2UpID0+IHtcclxuICAgICAgY29uc3QgcGxhY2UgPSBYUG9ydGFsQ29ubmVjdGVkUG9zaXRpb24uZ2V0KHBvcy5jb25uZWN0aW9uUGFpcikgYXMgWENvcm5lcjtcclxuICAgICAgcGxhY2UgIT09IHRoaXMucGxhY2VtZW50ICYmIHRoaXMucG9zaXRpb25DaGFuZ2UubmV4dChwbGFjZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldEluc3RhbmNlKCkge1xyXG4gICAgbGV0IGNvbXBvbmVudFJlZiA9IHRoaXMucG9ydGFsPy5jb21wb25lbnRSZWY7XHJcbiAgICBpZiAoIWNvbXBvbmVudFJlZikgcmV0dXJuO1xyXG4gICAgT2JqZWN0LmFzc2lnbihjb21wb25lbnRSZWYuaW5zdGFuY2UsIHtcclxuICAgICAgdHlwZTogdGhpcy50eXBlLFxyXG4gICAgICB2YWx1ZTogdGhpcy5udW1iZXJWYWx1ZSxcclxuICAgICAgcGxhY2VtZW50OiB0aGlzLnBsYWNlbWVudCxcclxuICAgICAgdmFsdWVDaGFuZ2U6IHRoaXMudmFsdWVDaGFuZ2UsXHJcbiAgICAgIHBvc2l0aW9uQ2hhbmdlOiB0aGlzLnBvc2l0aW9uQ2hhbmdlLFxyXG4gICAgICBhY3RpdmVUeXBlOiB0aGlzLmFjdGl2ZVR5cGUsXHJcbiAgICAgIGV4dHJhRm9vdGVyOiB0aGlzLmV4dHJhRm9vdGVyLFxyXG4gICAgICBwcmVzZXQ6IHRoaXMucHJlc2V0LFxyXG4gICAgICBhY3RpdmVUeXBlQ2hhbmdlOiB0aGlzLmFjdGl2ZVR5cGVDaGFuZ2UsXHJcbiAgICAgIGRpc2FibGVkRGF0ZTogdGhpcy5kaXNhYmxlZERhdGUsXHJcbiAgICAgIGRpc2FibGVkVGltZTogdGhpcy5kaXNhYmxlZFRpbWUsXHJcbiAgICAgIGNsb3NlUG9ydGFsOiAoKSA9PiB0aGlzLmNsb3NlU3ViamVjdC5uZXh0KCksXHJcbiAgICAgIGRlc3Ryb3lQb3J0YWw6ICgpID0+IHRoaXMuZGVzdHJveVBvcnRhbCgpLFxyXG4gICAgICBub2RlRW1pdDogKGRhdGVzOiBEYXRlW10sIGNsb3NlID0gdHJ1ZSkgPT4gdGhpcy5vbk5vZGVDbGljayhkYXRlcywgY2xvc2UpLFxyXG4gICAgICBzdGFydE5vZGVFbWl0OiAobm9kZTogRGF0ZSwgY2xvc2UgPSBmYWxzZSwgaXNEYXRlUGlja2VyOiBib29sZWFuID0gdHJ1ZSkgPT4gdGhpcy5zdGFydE5vZGVDbGljayhub2RlLCBjbG9zZSwgaXNEYXRlUGlja2VyKSxcclxuICAgICAgZW5kTm9kZUVtaXQ6IChub2RlOiBEYXRlLCBjbG9zZSA9IGZhbHNlLCBpc0RhdGVQaWNrZXI6IGJvb2xlYW4gPSB0cnVlKSA9PiB0aGlzLmVuZE5vZGVDbGljayhub2RlLCBjbG9zZSwgaXNEYXRlUGlja2VyKSxcclxuICAgICAgYW5pbWF0aW5nOiAoaW5nOiBib29sZWFuKSA9PiAodGhpcy5hbmltYXRpbmcgPSBpbmcpXHJcbiAgICB9KTtcclxuICAgIGNvbXBvbmVudFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzdGFydE5vZGVDbGljayhub2RlPzogRGF0ZSwgY2xvc2UgPSBmYWxzZSwgaXNEYXRlUGlja2VyOiBib29sZWFuID0gdHJ1ZSkge1xyXG4gICAgdGhpcy5zdGFydERpc3BsYXkgPSAhbm9kZVxyXG4gICAgICA/ICcnXHJcbiAgICAgIDogdGhpcy50eXBlID09PSAnd2VlaydcclxuICAgICAgPyBYRGF0ZVllYXJXZWVrKG5vZGUpIVxyXG4gICAgICA6IHRoaXMudHlwZSA9PT0gJ3F1YXJ0ZXInXHJcbiAgICAgID8gWERhdGVZZWFyUXVhcnRlcihub2RlKSFcclxuICAgICAgOiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShub2RlLCB0aGlzLmZvcm1hdCkhO1xyXG4gICAgaWYgKCFjbG9zZSAmJiBpc0RhdGVQaWNrZXIpIHtcclxuICAgICAgdGhpcy5pbnB1dEVuZENvbS5pbnB1dEZvY3VzKCdhZnRlcicpO1xyXG4gICAgICB0aGlzLmFjdGl2ZVR5cGVDaGFuZ2UubmV4dCgnZW5kJyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBlbmROb2RlQ2xpY2sobm9kZT86IERhdGUsIGNsb3NlID0gZmFsc2UsIGlzRGF0ZVBpY2tlcjogYm9vbGVhbiA9IHRydWUpIHtcclxuICAgIHRoaXMuZW5kRGlzcGxheSA9ICFub2RlXHJcbiAgICAgID8gJydcclxuICAgICAgOiB0aGlzLnR5cGUgPT09ICd3ZWVrJ1xyXG4gICAgICA/IFhEYXRlWWVhcldlZWsobm9kZSkhXHJcbiAgICAgIDogdGhpcy50eXBlID09PSAncXVhcnRlcidcclxuICAgICAgPyBYRGF0ZVllYXJRdWFydGVyKG5vZGUpIVxyXG4gICAgICA6IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKG5vZGUsIHRoaXMuZm9ybWF0KSE7XHJcbiAgICBpZiAoIWNsb3NlICYmIGlzRGF0ZVBpY2tlcikge1xyXG4gICAgICB0aGlzLmlucHV0U3RhcnRDb20uaW5wdXRGb2N1cygnYWZ0ZXInKTtcclxuICAgICAgdGhpcy5hY3RpdmVUeXBlQ2hhbmdlLm5leHQoJ3N0YXJ0Jyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBvbk5vZGVDbGljayhkYXRlczogRGF0ZVtdLCBjbG9zZSA9IHRydWUpIHtcclxuICAgIHRoaXMuaXNJbnB1dCA9IGZhbHNlO1xyXG4gICAgdGhpcy5udW1iZXJWYWx1ZSA9IGRhdGVzLm1hcCgoeCkgPT4geC5nZXRUaW1lKCkpO1xyXG4gICAgdGhpcy52YWx1ZSA9IHRoaXMuZ2V0VmFsdWUoKTtcclxuICAgIHRoaXMuc2V0RGlzcGxheVZhbHVlKHRoaXMubnVtYmVyVmFsdWUpO1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbFZhbGlkYXRvcigpO1xyXG4gICAgaWYgKGNsb3NlKSB7XHJcbiAgICAgIHRoaXMuY2xvc2VTdWJqZWN0Lm5leHQoKTtcclxuICAgIH1cclxuICAgIHRoaXMubW9kZWxDaGFuZ2UoKTtcclxuICB9XHJcblxyXG4gIG9uSW5wdXQoKSB7XHJcbiAgICB0aGlzLmlzSW5wdXQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgb25Gb2N1cyh0eXBlOiAnc3RhcnQnIHwgJ2VuZCcpIHtcclxuICAgIHRoaXMuYWN0aXZlVHlwZSA9IHR5cGU7XHJcbiAgICB0aGlzLmFjdGl2ZUNoYW5nZS5uZXh0KHRoaXMuYWN0aXZlVHlwZSk7XHJcbiAgfVxyXG5cclxuICBzZXREaXNwbGF5VmFsdWUoZGF0ZU51bWJlcjogKG51bWJlciB8IG51bGwpW10pIHtcclxuICAgIGlmICghZGF0ZU51bWJlcikgcmV0dXJuO1xyXG4gICAgaWYgKCFYSXNOdWxsKGRhdGVOdW1iZXJbMF0pKSB7XHJcbiAgICAgIGlmICh0aGlzLnR5cGUgPT09ICd3ZWVrJykge1xyXG4gICAgICAgIHRoaXMuc3RhcnREaXNwbGF5ID0gWERhdGVZZWFyV2VlayhkYXRlTnVtYmVyWzBdISkhO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ3F1YXJ0ZXInKSB7XHJcbiAgICAgICAgdGhpcy5zdGFydERpc3BsYXkgPSBYRGF0ZVllYXJRdWFydGVyKGRhdGVOdW1iZXJbMF0hKSE7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zdGFydERpc3BsYXkgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShkYXRlTnVtYmVyWzBdLCB0aGlzLmZvcm1hdCkgYXMgc3RyaW5nO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoIVhJc051bGwoZGF0ZU51bWJlclsxXSkpIHtcclxuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ3dlZWsnKSB7XHJcbiAgICAgICAgdGhpcy5lbmREaXNwbGF5ID0gWERhdGVZZWFyV2VlayhkYXRlTnVtYmVyWzFdISkhO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ3F1YXJ0ZXInKSB7XHJcbiAgICAgICAgdGhpcy5lbmREaXNwbGF5ID0gWERhdGVZZWFyUXVhcnRlcihkYXRlTnVtYmVyWzFdISkhO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZW5kRGlzcGxheSA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGVOdW1iZXJbMV0sIHRoaXMuZm9ybWF0KSBhcyBzdHJpbmc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFBsYWNlbWVudCgpIHtcclxuICAgIHJldHVybiB0aGlzLnBvcnRhbFNlcnZpY2Uuc2V0UGxhY2VtZW50KHtcclxuICAgICAgZWxlbWVudFJlZjogdGhpcy5pbnB1dEdyb3VwLmVsZW1lbnRSZWYsXHJcbiAgICAgIHBsYWNlbWVudDogW3RoaXMucGxhY2VtZW50IGFzIFhDb3JuZXIsICdib3R0b20tc3RhcnQnLCAnYm90dG9tLWVuZCcsICd0b3Atc3RhcnQnLCAndG9wLWVuZCddLFxyXG4gICAgICB0cmFuc2Zvcm1PcmlnaW5PbjogJ3gtZGF0ZS1yYW5nZS1wb3J0YWwnXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldFBvcnRhbCgpIHtcclxuICAgIHRoaXMucG9ydGFsQXR0YWNoZWQoKSAmJiB0aGlzLnBvcnRhbD8ub3ZlcmxheVJlZj8udXBkYXRlUG9zaXRpb25TdHJhdGVneSh0aGlzLnNldFBsYWNlbWVudCgpKTtcclxuICB9XHJcblxyXG4gIHNldENsYXNzTWFwKCkge1xyXG4gICAgWENsZWFyQ2xhc3ModGhpcy5jbGFzc01hcCwgdGhpcy5sYWJlbE1hcCk7XHJcbiAgICB0aGlzLmNsYXNzTWFwW2Ake1hEYXRlUmFuZ2VQcmVmaXh9LSR7dGhpcy5zaXplfWBdID0gdGhpcy5zaXplID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgdGhpcy5sYWJlbE1hcFtgeC10ZXh0LWFsaWduLSR7dGhpcy5sYWJlbEFsaWdufWBdID0gdGhpcy5sYWJlbEFsaWduID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZm9ybUNvbnRyb2xDaGFuZ2VzKCkge1xyXG4gICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgI2RhdGVSYW5nZVxyXG4gIGNsYXNzPVwieC1kYXRlLXJhbmdlXCJcclxuICBbbmdDbGFzc109XCJjbGFzc01hcFwiXHJcbiAgW2NsYXNzLngtZmxleF09XCJqdXN0aWZ5IHx8IGFsaWduIHx8IGRpcmVjdGlvblwiXHJcbiAgW2NsYXNzLngtY2hlY2tlZF09XCJ2YWx1ZVwiXHJcbiAgW2NsYXNzLngtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gIFtjbGFzcy54LXJlcXVpcmVkXT1cInJlcXVpcmVkSXNFbXB0eVwiXHJcbiAgW2NsYXNzLngtaW52YWxpZF09XCJpbnZhbGlkXCJcclxuICBbY2xhc3MueC1kYXRlLXJhbmdlLWJvcmRlcmVkXT1cImJvcmRlcmVkXCJcclxuICBbY2xhc3MueC1kYXRlLXJhbmdlLWFjdGl2ZV09XCJhY3RpdmVcIlxyXG4gIFtjbGFzcy54LWRhdGUtcmFuZ2UtYWN0aXZlLXN0YXJ0XT1cImFjdGl2ZVR5cGUgPT09ICdzdGFydCdcIlxyXG4gIFtjbGFzcy54LWRhdGUtcmFuZ2UtYWN0aXZlLWVuZF09XCJhY3RpdmVUeXBlID09PSAnZW5kJ1wiXHJcbj5cclxuICA8bGFiZWwgKm5nSWY9XCJsYWJlbFwiIFtjbGFzcy54LWRhdGUtcmFuZ2UtbGFiZWwtcmVxdWlyZWRdPVwicmVxdWlyZWRcIiBbc3R5bGUud2lkdGhdPVwibGFiZWxXaWR0aFwiIFtuZ0NsYXNzXT1cImxhYmVsTWFwXCI+e3sgbGFiZWwgfX08L2xhYmVsPlxyXG4gIDxkaXYgY2xhc3M9XCJ4LWRhdGUtcmFuZ2Utcm93XCI+XHJcbiAgICA8eC1pbnB1dC1ncm91cCAjaW5wdXRHcm91cCBjbGFzcz1cIngtZGF0ZS1yYW5nZS1ncm91cFwiIChtb3VzZWVudGVyKT1cIm1lbnRlcigpXCIgKG1vdXNlbGVhdmUpPVwibWxlYXZlKClcIiAoY2xpY2spPVwic2hvd1BvcnRhbCgkZXZlbnQpXCI+XHJcbiAgICAgIDx4LWlucHV0XHJcbiAgICAgICAgI2lucHV0U3RhcnRDb21cclxuICAgICAgICBjbGFzcz1cIngtZGF0YS1yYW5nZS1pbnB1dCB4LWRhdGEtcmFuZ2UtaW5wdXQtc3RhcnRcIlxyXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICBib3JkZXJlZD1cImZhbHNlXCJcclxuICAgICAgICBbc2l6ZV09XCJzaXplXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJnZXRTdGFydFBsYWNlaG9sZGVyXCJcclxuICAgICAgICAoeEZvY3VzKT1cIm9uRm9jdXMoJ3N0YXJ0JylcIlxyXG4gICAgICAgICh4Q2xpY2spPVwic2hvd1BvcnRhbCgkZXZlbnQsICdzdGFydCcpXCJcclxuICAgICAgICBbKG5nTW9kZWwpXT1cInN0YXJ0RGlzcGxheVwiXHJcbiAgICAgICAgaWNvbj1cImZ0by1hcnJvdy1yaWdodFwiXHJcbiAgICAgID48L3gtaW5wdXQ+XHJcbiAgICAgIDx4LWlucHV0XHJcbiAgICAgICAgI2lucHV0RW5kQ29tXHJcbiAgICAgICAgY2xhc3M9XCJ4LWRhdGEtcmFuZ2UtaW5wdXQgeC1kYXRhLXJhbmdlLWlucHV0LWVuZFwiXHJcbiAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgIGJvcmRlcmVkPVwiZmFsc2VcIlxyXG4gICAgICAgIFtzaXplXT1cInNpemVcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cImdldEVuZFBsYWNlaG9sZGVyXCJcclxuICAgICAgICAoeEZvY3VzKT1cIm9uRm9jdXMoJ2VuZCcpXCJcclxuICAgICAgICAoeENsaWNrKT1cInNob3dQb3J0YWwoJGV2ZW50LCAnZW5kJylcIlxyXG4gICAgICAgIFsobmdNb2RlbCldPVwiZW5kRGlzcGxheVwiXHJcbiAgICAgICAgW2ljb25dPVwiaWNvblwiXHJcbiAgICAgICAgKGNsZWFyRW1pdCk9XCJjbGVhckVtaXQoKVwiXHJcbiAgICAgICAgW2NsZWFyYWJsZV09XCJzaG93Q2xlYXJhYmxlXCJcclxuICAgICAgPjwveC1pbnB1dD5cclxuICAgICAgPGRpdiAqbmdJZj1cImFjdGl2ZVwiIGNsYXNzPVwieC1kYXRlLXJhbmdlLWFjdGl2ZS1iYXJcIj48L2Rpdj5cclxuICAgIDwveC1pbnB1dC1ncm91cD5cclxuICAgIDxzcGFuIGNsYXNzPVwieC1kYXRlLXJhbmdlLWVycm9yLW1lc3NhZ2VcIiAqbmdJZj1cImludmFsaWRcIj57eyBpbnZhbGlkTWVzc2FnZSB9fTwvc3Bhbj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXF1aXJlZElzRW1wdHkgfHwgaW52YWxpZFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwieC1ib3JkZXItZXJyb3IgeC10b3AtbGVmdFwiPjwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwieC1ib3JkZXItZXJyb3IgeC10b3AtcmlnaHRcIj48L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIngtYm9yZGVyLWVycm9yIHgtYm90dG9tLWxlZnRcIj48L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIngtYm9yZGVyLWVycm9yIHgtYm90dG9tLXJpZ2h0XCI+PC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==